//ESPMAC  JOB (TSO),
//             'Install ESP MACLIB',
//             CLASS=A,
//             MSGCLASS=A,
//             MSGLEVEL=(1,1),
//             USER=IBMUSER,
//             PASSWORD=SYS1
//*
//*  Installs SYS2.PVTMACS
//*
//STEP1   EXEC PGM=PDSLOAD
//STEPLIB  DD  DSN=SYSC.LINKLIB,DISP=SHR
//SYSPRINT DD  SYSOUT=*
//SYSUT2   DD  DSN=SYS2.PVTMACS,DISP=(NEW,CATLG),
//             VOL=SER=PUB000,
//             UNIT=SYSDA,SPACE=(CYL,(12,3,100)),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=19040)
//SYSUT1   DD  DATA,DLM=@@
./ ADD NAME=$$$BCP
*  THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM. 5740-XYN,5740-XYS
*  (C) COPYRIGHT IBM CORPORATION 1977, 1982.
./ ADD NAME=$$$IPCS
*  THIS PRODUCT CONTAINS RESTRICTED MATERIALS OF IBM. 5740-XYS,5740-XYN
*  (C) COPYRIGHT IBM CORPORATION 1981, 1982.
./ ADD NAME=$GLOBAL
*
*
*        DUMMY MODULE (EXISTED IN HASP, NOT IN JES2)             82157
*          UNCOMMENT THE NEXT INSTRUCTION FOR NON-JES2 SYSTEMS
*        GBLC  &VERSION      JES2 VERSION
*
*
./ ADD NAME=AMCBS
*%GO TO CBSBSL1;                                       /*    @Z40BHUC*/
* /*                                                         @Z40BHUC
         MACRO
         AMCBS
         AGO   .CBSBAL                                       @Z40BHUC
*                                                                    */
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = AMCBS                                             */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = ACCESS METHOD CONTROL BLOCK STRUCTURE BLOCK */
 /*                                                                  */
 /*   FUNCTION = THE ACCESS METHOD CONTROL BLOCK STRUCTURE (AMCBS)   */
 /*              CONTAINS INFORMATION THAT IS USED BY OS/VS TO       */
 /*              LOCATE THE MASTER CATALOG AND USER CATALOGS.  THE   */
 /*              AMCBS IS COMPLETED WHEN THE MASTER CATALOG IS       */
 /*              OPENED.                                             */
 /*                                                                  */
 /*              THE AMCBS CONTAINS:                                 */
 /*                 * ENTRY POINTS TO VSAM CATALOG ROUTINES          */
 /*                 * ENTRY POINTS TO GENCB, MODCB, SHOWCB ROUTINES  */
 /*                 * POINTER TO THE MASTER CATALOG ACB              */
 /*                 * POINTER TO THE CAXWA CHAIN                     */
 /*                 * 8 DOUBLEWORDS FOR EACH OF THE VSAM SHARED      */
 /*                     RESOURCE POOLS (GSR OPTION). THE FIRST WORD  */
 /*                     OF EACH DOUBLWORD CONTAINS THE CELL USE      */
 /*                     COUNT                                        */
 /*                     THE SECOND WORD OF EACH DOUBLEWORD CONTAINS  */
 /*                     THE ADDRESS OF THE CELL. A COMPARE AND SWAP  */
 /*                     DOUBLE (CDS) INSTRUCTION IS USED TO SET THE  */
 /*                     CELL USE COUNT AND THE CELL ADDRESS. @G38KSCM*/
 /*                 * POINTER TO THE IDAVSI (VSAM SHARED INFO) CHAIN.*/
 /*                   A VSI BIT INDICATING THAT UNUSED VSI'S LEFT    */
 /*                   FROM ABEND MAY EXIST ON THE VSI CHAIN WHICH    */
 /*                   REQUIRE CLEAN UP.                              */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE AMCBS IS POINTED TO BY THE       */
 /*                             CVT (CVTCBSP).                       */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: VSAM CATALOG MODULE IEAVNP11 DURING                */
 /*               NIP MASTER CATALOG OPEN                            */
 /*                                                                  */
 /*   STATUS = MVS VERSION 1/RELEASE 1.                      @G38KSRL*/
 /*                                                                  */
 /*   COPYRIGHT = REFER TO MODULE ACB                        @G38KSRL*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 22 JAN 76                        @Z40BHUC*/
 /*                         08/16/76 CBUF SUPPORT            @G38KSRL*/
 /*                                                                  */
 /********************************************************************/
*%CBSBSL1:  ;                                            /*  @Z40BHUC*/
    DECLARE
      1 AMCBS BASED(CBSPTR) BDY(DWORD), /* AMCBS LEVEL ONE   @Y30SSSB*/
        2 CBSID CHAR(2),            /* AMCBS ID CHARACTER            */
        2 CBSSIZ PTR(15),           /* LENGTH OF AMCBS               */
        2 CBSMCSTA CHAR(4),         /* CCHH OF MASTER CATALOG  Y02020*/
        2 CBSACB PTR(31),           /* PTR TO MASTER CATALOG'S ACB   */
        2 CBSCBP PTR(31),           /* POINTER TO CONTROL BLOCK
                                       MANIPULATION ROUTINE          */
        2 CBSCMP PTR(31),           /* POINTER TO CATALOG ROUTINE    */
          3 CBSMCUCB PTR(31),       /* MASTER CATALOG UCB ADDRESS
                                       (NIP THROUGH MASTER CATALOG
                                       OPEN)                   Y02020*/
        2 CBSCAXCN PTR(31),         /* POINTER TO CAXWA CHAIN        */
        2 CBSCRACA PTR(31),         /* PTR TO CRA CAXWA CHN  @Y30SSSB*/
        2 CBSCRTCB PTR(31),         /* CRA TASK TCB POINTER  @Y30SSSB*/
        2 CBSVSRT(8)  CHAR(8) BDY(DWORD), /* CDS WORDS FOR CELLS FOR
                                                KEY 0 TO 7   @G38KSCM*/
          3 CBSVUSE FIXED(31),      /* CELL USE COUNT        @G38KSCM*/
          3 CBSVPTR PTR(31),        /* POINTER TO CELL       @G38KSCM*/
        2 CBSVSICN PTR(31),         /* PTR TO IDAVSI CHAIN   @G38KSRS*/
        2 CBSFLG1 BIT(8),           /* AMCBS FLAGS           @G38KSRS*/
          3 CBSCUVSI BIT(1),        /* CLEAN UP OF VSI CHAIN IS
                                       REQUIRED              @G38KSRS*/
          3 *      BIT(7),          /* RESERVED              @G38KSRS*/
        2 *     CHAR(3);            /* RESERVED              @G38KSRS*/
*%GOTO CBSBSL2 ;                                         /*  @Z40BHUC*/
*/*
*/*
.CBSBAL   ANOP                                           /*  @Z40BHUC*/
*      DUMMY AMCBS FOR CALL IN IDA019C1 FOR VS2 SYSTEM               *
         MEND                                            /*  @Z40BHUC*/
*%CBSBSL2:;                                              /*  @Z40BHUC*/
./ ADD NAME=AMDDATA
*
*        %GOTO PRIN1;              /*
         MACRO
&LABEL   AMDDATA   &DSECT=YES                                        */
*%PRIN1 : ;
*
*/*      AMDPRDMP INPUT MAPPING MACRO                                */
*/*      OS/VS2 RELEASE 2  -- 8/31/72 -- LEVEL 001                   */
*/*                                                                  */
*/*      THIS MACRO DEFINES THE VARIOUS FORMATS OF AMDPRDMP INPUTS.  */
*/*                                                                  */
*/*      TO USE THIS MACRO TO OBTAIN A DSECT OF AMDPRDMP INPUT       */
*/*      IN A BAL MODULE, CODE:                                      */
*/*         LABEL  AMDDATA                                           */
*/*      ISSUE A USING ON EITHER LABEL OR PRDINPUT (IF LABEL IS      */
*/*      OMITTED)  IN ORDER TO REFERENCE THE AREAS DEFINED IN THE    */
*/*      DSECT.                                                      */
*/*      TO USE THIS MACRO TO DEFINE AMDPRDMP INPUT IN A BAL         */
*/*      MODULE WITHOUT GETTING A DSECT, CODE:                       */
*/*         LABEL  AMDDATA  &DSECT=NO                                */
*/*                                                                  */
*/*      TO USE THIS MACRO IN PLS, DEFINE A POINTER, PRDINPTR,       */
*/*      TO POINT TO EITHER:                                         */
*/*         1. THE AREA OF STORAGE INTO WHICH AMDPRDMP INPUT WILL BE */
*/*            READ. (SAME AS BAL DSECT FACILITY)                    */
*/*         2. A 4104-BYTE AREA INTO WHICH DATA WILL BE MOVED TO     */
*/*            CREATE AN AMDPRDMP INPUT RECORD.                      */
*/*                                                                  */
*/*A000000-999999                                              Y02006*/
*
*%GOTO PRIN2;                      /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').PRIN010
&LABEL   DSECT
         AGO   .PRIN020
.PRIN010 ANOP
&LABEL   DS    0F
.PRIN020 ANOP
***********************************************************************
*        AMDPRDMP HEADER RECORD FORMATS  --  COMMON FIELDS AND        *
*        FIELDS UNIQUE FOR DSS OR SVCDUMP INPUT                       *
***********************************************************************
         SPACE 1
PRDINPUT EQU   *
PRDHDRID DS    CL1                 HEADER RECORD ID
PRDHDR   EQU   X'FF'               HEADER ID
PRDRECID DS    CL1                 RECORD ID
PRDHDREC EQU   X'FF'               HEADER ID
PRDSAWRK EQU   X'00'               AMDSADMP WORK RECORD ID
PRDASID  DS    CL2                 ASID OF MEMORY BEING DUMPED
PRDMODNM DS    CL8                 NAME OF PROGRAM THAT CREATED INPUT
PRDTODVL DS    CL8                 TOD CLOCK VALUE AT TIME OF DUMP
PRDTITLE DS    CL100               TITLE FOR DUMP
PRDREGS  EQU   *
PRDFPR   DS    CL32                FLOATING POINT REGISTERS
PRDGPR   DS    CL64                GENERAL PURPOSE REGISTERS
PRDCR    DS    CL64                CONTROL REGISTERS
PRDPSW   DS    CL8                 CURRENT PSW AT TIME OF DUMP
PRDCVT   DS    CL4                 REAL ADDRESS OF CVT
         DS   8F                 RESERVED FOR SVC DUMP USE     @Z81700
PRDERRID DS   CL10               ERROR ID                      @Z81700
         DS   CL48               RESERVED FOR SVC DUMP USE     UZ83300
         DS   CL3722             REMAINING BYTES IN RECORD     UZ83300
         SPACE 1
***********************************************************************
*        THE FOLLOWING FIELDS OVERLAY THE PRDFPR AND SUCCEEDING       *
*        FIELDS FOR AMDSADMP INPUT                                    *
***********************************************************************
         SPACE 1
         ORG   PRDFPR
PRDFLC   EQU   *
PRDCSW   DS    CL8                 CSW AT ABSOLUTE LOCATION 64
PRDCAW   DS    CL4                 CAW AT ABSOLUTE LOCATION 72
         DS    CL3972              RESERVED AREA
         SPACE 1
***********************************************************************
*        AMDPRDMP DATA RECORD FORMAT                                  *
***********************************************************************
         SPACE 1
         ORG   PRDHDRID
PRDKEY1  DS    CL1                 STORAGE KEY FOR 1ST 2K OF BLOCK
PRDKEY2  DS    CL1                 STORAGE KEY FOR 2ND 2K OF BLOCK
         DS    CL2                 NAME OF THIS FIELD IS SAME AS
*                                  CORRESPONDING FIELD IN HEADER  --
*                                  I.E.,PRDASID  -- CONTAINS ASID OF
*                                  MEMORY DUMPED
PRDADDR  DS    CL4                 ADDRESS OF STORAGE DUMPED (ON 4K
*                                  BOUNDARY)
PRDDATA  DS    CL4096              DATA FIELD  -- CONTAINS DATA THAT
*                                  WAS AT THE ADDRESS LISTED IN THE
*                                  PRDADDR FIELD
         SPACE 1
***********************************************************************
*        AMDPRDMP CPU STATUS RECORD FORMAT                            *
***********************************************************************
         SPACE 1
         ORG   PRDHDRID
         DS    CL1                 NAME OF THIS FIELD IS SAME AS
*                                  CORRESPONDING FIELD IN HEADER --
*                                  I.E., PRDHDRID  -- CONTAINS  ID OF
*                                  RECORD
         DS    CL1                 NAME OF THIS FIELD IS SAME AS
*                                  CORRESPONDING FIELD IN HEADER --
*                                  I.E., PRDRECID  -- CONTAINS ID OF
*                                  RECORD
PRDCPUID EQU   X'0F'               CPU STATUS RECORD ID
PRDFLAGS DS    CL1                 FLAGS IN CPU STATUS RECORD
PRDUNIPR EQU   X'80'               UNIPROCESSOR FLAG
PRDSSINV EQU   X'40'               STORE STATUS MAY BE INVALID FLAG
PRDGPRVL EQU   X'20'               GPRS VALID IF PRDSSINV ALSO =1
         DS    CL1                 RESERVED
         DC    X'0000'             THIS FIELD MUST BE '0000'X
PRDCPUAD DS    CL2                 ADDR OF CPU WHOSE STATUS WAS STORED
         DS    CL4096              NAME OF THIS FIELD IS SAME AS
*                                  CORRESPONDING FIELD IN DATA RECORD
*                                  -- I.E., PRDDATA  -- CONTAINS CPU
*                                  STATUS DATA
         SPACE 1
         ORG
*        RESTORE POINTER TO HIGHEST VALUE
         MEND                                                        */
*%PRIN2 : ;
*
*/********************************************************************/
*/*      AMDPRDMP HEADER RECORD FORMATS  --  COMMON FIELDS AND       */
*/*      FIELDS UNIQUE FOR DSS OR SVCDUMP INPUT                      */
*/********************************************************************/
*
*DECLARE
*  1 PRDINPUT BASED(PRDINPTR) BDY(WORD),
*   2 PRDHDRID CHAR(1) BDY(WORD),      /* HEADER RECORD ID           */
*   2 PRDRECID CHAR(1),                /* RECORD ID                  */
*   2 PRDASID CHAR(2) BDY(HWORD),      /* ASID OF MEMORY DUMPED      */
*   2 PRDMODNM CHAR(8) BDY(WORD),      /* PROGRAM THAT CREATED INPUT */
*   2 PRDTODVL CHAR(8) BDY(WORD),      /* TOD CLOCK VALUE AT TIME OF
*                                         DUMP                       */
*   2 PRDTITLE CHAR(100) BDY(WORD),    /* TITLE FROM DUMP            */
*   2 PRDREGS CHAR(168) BDY(WORD),
*    3 PRDFPR CHAR(32) BDY(WORD),       /* FLOATING POINT REGISTERS  */
*    3 PRDGPR CHAR(64) BDY(WORD),       /* GENERAL PURPOSE REGISTERS */
*    3 PRDCR CHAR(64) BDY(WORD),        /* CONTROL REGISTERS         */
*    3 PRDPSW CHAR(8) BDY(WORD),        /* CURRENT PSW AT TIME OF
*                                         DUMP                       */
*   2 PRDCVT CHAR(4) BDY(WORD),        /* REAL ADDR OF CVT           */
     2 *        CHAR(32),     /* RESERVED FOR SVC DUMP USE           */
     2 PRDERRID CHAR(10),     /* ERROR ID                            */
     2 *        CHAR(48),     /* RESERVED FOR SVC DUMP USE  UZ83300  */
     2 *        CHAR(3722);   /* REMAINING BYTES IN RECORD  UZ83300  */
*
*DECLARE
*  PRDHDR BIT(8) CONSTANT('FF'X),      /* HEADER ID IN PRDHDRID FIELD*/
*  PRDHDREC BIT(8) CONSTANT('FF'X),    /* HEADER ID IN PRDRECID
*                                         FIELD                      */
*  PRDSAWRK BIT(8) CONSTANT('00'X);    /* AMDSADMP WORK RECORD ID IN
*                                         PRDRECID FIELD             */
*
*/********************************************************************/
*/*      THE FOLLOWING FIELDS OVERLAY THE PRDFPR AND SUCCEEDING      */
*/*      FIELDS FOR AMDSADMP INPUT                                   */
*/********************************************************************/
*
*DECLARE
*  1 PRDFLC DEF(PRDFPR) BDY(WORD),
*   2 PRDCSW CHAR(8) BDY(WORD),        /* CSW AT ABSOLUTE LOCATION 64
*                                                                    */
*   2 PRDCAW CHAR(4) BDY(WORD),        /* CAW AT ABSOLUTE LOCATION 72
*                                                                    */
*   2 * CHAR(3972) BDY(WORD);          /* RESERVED AREA              */
*
*/********************************************************************/
*/*      AMDPRDMP DATA RECORD FORMAT                                 */
*/********************************************************************/
*
*DECLARE
*  1 * DEF(PRDHDRID) BDY(WORD),
*   2 PRDKEY1 CHAR(1) BDY(WORD),       /* STORAGE KEY FOR 1ST 2K OF
*                                         BLOCK                      */
*   2 PRDKEY2 CHAR(1),                 /* STORAGE KEY FOR 2ND 2K OF
*                                         BLOCK                      */
*   2 * CHAR(2) BDY(HWORD),            /* NAME OF THIS FIELD SAME AS
*                                         CORRESPONDING FIELD IN HEADER
*                                         I.E., PRDASID -- CONTAINS
*                                         ASID OF MEMORY DUMPED      */
*   2 PRDADDR CHAR(4) BDY(WORD),       /* ADDRESS OF STORAGE DUMPED
*                                         (ON 4K BOUNDARY)           */
*   2 PRDDATA CHAR(4096) BDY(WORD);    /* DATA FIELD  -- CONTAINS DATA
*                                         THAT WAS AT THE ADDRESS
*                                         LISTED IN THE PRDADDR FIELD*/
*
*/********************************************************************/
*/*      AMDPRDMP CPU STATUS RECORD FORMAT                           */
*/********************************************************************/
*
*DECLARE
*  1 * DEF(PRDHDRID) BDY(WORD),
*   2 * CHAR(1) BDY(WORD),             /* NAME OF THIS FIELD SAME AS
*                                         CORRESPONDING FIELD IN HEADER
*                                         I.E., PRDHDRID -- CONTAINS
*                                         ID OF RECORD               */
*   2 * CHAR(1),                       /* NAME OF THIS FIELD SAME AS
*                                         CORRESPONDING FIELD IN HEADER
*                                         I.E., PRDRECID -- CONTAINS
*                                         ID OF RECORD               */
*   2 PRDFLAGS CHAR(1) BDY(HWORD),     /* FLAGS                      */
*    3 PRDUNIPR BIT(1),                /* UNIPROCCESSOR FLAG         */
*    3 PRDSSINV BIT(1),                /* STORE STATUS MAY BE INVALID
*                                         FLAG                       */
*    3 PRDGPRVL BIT(1),                /* GPRS VALID IF PRDSSINV
*                                         ALSO =1                    */
*    3 * BIT(5),                       /* UNUSED FLAGS               */
*   2 * CHAR(1),                       /* RESERVED FIELD             */
*   2 * CHAR(2),                       /* FIELD OF ZEROES            */
*   2 PRDCPUAD CHAR(2) BDY(HWORD),     /* ADDR OF CPU WHOSE STATUS
*                                         WAS STORED                 */
*   2 * CHAR(4096) BDY(WORD);          /* NAME OF THIS FIELD SAME AS
*                                         CORRESPONDING FIELD IN DATA
*                                         RECORD -- I.E., PRDDATA --
*                                         CONTAINS CPU STATUS DATA   */
*
*DECLARE
*  PRDCPUID BIT(8) CONSTANT('0F'X);    /* CPU STATUS RECORD ID IN
*                                         PRDRECID FIELD             */
*
./ ADD NAME=AMDPCBPL
*/********************************************************************/
*/*      AMDPRPCB INPUT MAPPING MACRO                                */
*/*      OS/VS2 RELEASE 2  --  12/5/72 -- LEVEL 001                  */
*/*                                                                  */
*/*      THIS MACRO MAPS THE PRINT CONTROL BLOCK PARAMETER LIST.     */
*/*                                                                  */
*/*      EITHER A BASED OR A NON-BASED STRUCTURE MAY BE              */
*/*      OBTAINED. TO GET A NON-BASED STRUCTURE CODE:                */
*/*         %INCLUDE SYSLIB(AMDPCBPL)                                */
*/*                                                                  */
*/*      TO GET A BASED STRUCTURE CODE THE FOLLOWING BEFORE          */
*/*      THE INCLUDE                                                 */
*/*      %PCBPLBAS = 'YES'                                           */
*/*                                                                  */
*/*A 0-999999                                                 @Y02006*/
*/********************************************************************/
*  DECLARE                         /*                                */
*%IF PCBPLBAS = ''
*%  THEN
*%    GOTO PCBLABL1;
*     1 PCBPL BASED,               /* PCB PARAMETER LIST             */
*%GOTO PCBLABL2;
*%PCBLABL1: ;
*     1 PCBPL,                     /* PCB PARAMETER LIST             */
*%PCBLABL2: ;
*       2 PCBPBGN POINTER(31),     /* LOW ADDR OF BLOCK              */
*       2 PCBPEND POINTER(31),     /* HIGH ADDR OF BLOCK             */
*       2 PCBPASID BIT(16),        /* ID OF ADDRESS SPACE            */
*       2 PCBPFLG1 CHARACTER(1),   /* OPTION FLAGS                   */
*         3 PCBPVIRT BIT(1),       /* VIRTUAL ADDRESSES REQUES       */
*         3 PCBPREAL BIT(1),       /* REAL ADDRESSES REQUESTED       */
*         3 PCBPLOWC BIT(1),       /* PRINT ADDRESSES 0-4K           */
*         3 PCBPTOPC BIT(1),       /* PROVIDE TOPIC HEADER           */
*         3 * BIT(4),              /* RESERVED                       */
*       2 PCBPFLG2 CHARACTER(1),   /* FLAGS                          */
*         3 PCBPFUNC BIT(1),       /* FUNCTION FLAG                  */
*         3 * BIT(7),              /* RESERVED                       */
*
*     PCBPENQ BIT(1) CONSTANT('0'B), /* PCBPFUNC -- ENQUEUE REQUEST  */
*     PCBPDEQ BIT(1) CONSTANT('1'B); /* PCBPFUNC -- DEQUEUE REQUEST  */
./ ADD NAME=AMDSARMK
 /********************************************************************/
 /*  START OF SPECIFICATIONS ****                                    */
 /*   MODULE NAME = AMDSARMK                                         */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = MACROS AND MAPPINGS                 @G64APHE*/
 /*                                                                  */
 /********************************************************************/
 /*                                                                  */
 /*   STATUS = OS/VS2 JBB1328                                        */
 /*                                                                  */
 /*    VIRTUAL DUMP COMMON CONTROL BLOCKS -                          */
 /*      EXPANDS INTO BASED CONTROL BLOCKS UNLESS %RMKINIT IS        */
 /*      DECLARED AS CHAR AND INITIALIZED TO A NON-NULL CHARACTER    */
 /*      STRING.                                                     */
 /*                                                                  */
 /*CHANGE ACTIVITY =                                                 */
 /* CONSTANT DT3380 ADDED FOR JBB1126                        @G81BP1W*/
 /* CONSTANT DT3375 ADDED FOR JBB1127                        @G87UP1W*/
 /*$H1= BPF,JBB1327,810814,PD2T:         BPF SUPPORT             @H1A*/
 /* OZ58051: DECLARE FOR BIT INDICATING 4K KEYS PRESENT      @ZA58051*/
 /*                                                                  */
 /** END OF SPECIFICATIONS ***/
*/*******************************************************************/
 % DEACTIVATE OFF,PUSH,POP,ON;
 @EJECT NOC;
 %VCHK:MACRO KEYS(ITEM,TOBE,ERRET);                    /*@G64APHE*/
 /*                                                                  */
 /*  ITEM -- THING (CONTROL BLOCK, DATA AREA, ETC.) TO BE VALIDITY   */
 /*          CHECKED.                                                */
 /*  TOBE -- CONSTANT VALUE REPRESENTING WHAT THE ITEM IS SUPPOSED   */
 /*          TO BE.                                                  */
 /*  ERRET -- OPTIONAL. LABLE TO BE BRANCHED TO IF ITEM DOES NOT PASS*/
 /*           THE TEST.                                              */
 /*                                                      @G64APHE*/
 ANS('/*??????????????????????????????????????????????????????????*/')
 COLUMN(MACLMAR) SKIP;                                 /*@G64APHE*/
 ANS('DO; /*'MACNAME' 'MACKEYS' */') SKIP; /*@G64APHE*/
 IF ERRET^='' THEN ANS('RFY RETCODE RSTD;') SKIP;      /*@G64APHE*/
 ANS('VCTCBADR=ADDR('ITEM(1)'); /* FILL IN THE VCHK PARM LIST */')
 SKIP;                                                 /*@G64APHE*/
 ANS('VCTCBIDN='TOBE(1)';') SKIP;                  /*@G64APHE*/
 ANS('SVC(VCKSVC); /* CALL AMDSAVCK TO CHECK THE VALIDITY OF 'ITEM(1)
 '.*/') SKIP;                                        /*@G64APHE*/
 IF ERRET^='' THEN                                     /*@G64APHE*/
 ANS('IF RETCODE^=0 THEN GO TO 'ERRET(1)'; /* IF 'ITEM(1)
 ' DOES NOT PASS THE VALIDITY CHECK */ RFY RETCODE UNRSTD;')
 SKIP;                                                 /*@G64APHE*/
 ANS('END; /*'MACNAME' 'MACKEYS' */')SKIP; /*@G64APHE*/
 ANS('/*???????????????????????????????????????????????????????????*/')
 COLUMN(MACLMAR) SKIP;                                 /*@G64APHE*/
 %END;                                                 /*@G64APHE*/
 @EJECT NOC;
    DCL
          1 ARB BASED,              /* ADDRESS RANGE BLOCK           */
              3 ARBADDRB PTR(31),   /* BEGINNING ADDRESS OF RANGE    */
              3 ARBADDRE PTR(31);   /* ENDING ADDRESS OF RANGE       */
    %IF RMKINIT ^= '' %THEN         /* INITIALIZATION REQUIRED       */
      %GOTO BCTINIT;                /* YES - SKIP BASED CODE         */
    DCL
          1 BCTH BDY(WORD) BASED(VCTBCTH), /* BUFFER CONTROL TABLE
                                       HEAD                          */
              3 BCTHBCTH CHAR(4),   /* BCTH ACRONYM                  */
              3 BCTHFRST PTR(31),   /* ADDRESS OF FIRST BCT          */
              3 BCTHLAST PTR(31);   /* ADDRESS OF LAST BCT           */

 %BCTINIT:;
    DCL
          1 BCT BDY(WORD) BASED,    /* BUFFER CONTROL TABLE ENTRY    */
              3 BCTBCT CHAR(4),     /* EBCDIC ACRONYM                */
              3 BCTNEXT PTR(31),    /* NEXT BCT ON I/O QUEUE         */
              3 BCTKEY1 PTR(8),     /* STORAGE KEY OF FIRST 2K       */
              3 BCTKEY2 PTR(8),     /* STORAGE KEY OF LAST 2K        */
              3 BCTASID FIXED(16),  /* ASID OF DATA IN BUFFER        */
              3 BCTVADDR PTR(31),   /* VIRTUAL ADDRESS OF DATA IN
                                       BUFFER                        */
              3 BCTRADDR PTR(31),   /* REAL ADDRESS OF BUFFER        */
              3 BCTPGTE PTR(31),    /* ADDRESS OF PAGE TABLE ENTRY   */
              3 BCTMDCB PTR(31),    /* ADDRESS OF MDCB FOR BUFFER    */
              3 * CHAR(8) BDY(WORD), /* UNUSED               @Z40WI3F*/
              3 * PTR(31),          /* UNUSED                @Z40WI3F*/
              3 BCTLSID FIXED(31),  /* LOGICAL SLOT IDENTIFIER - PAGE'S
                                       AUX STORAGE ID        @Z40WI3F*/
                  5 * FIXED(8),     /* UNUSED                @Z40WI3F*/
                  5 BCTINDEX FIXED(8), /* PART/SART ENTRY NUMBER
                                                             @Z40WI3F*/
                  5 BCTRBA FIXED(16), /* RELATIVE BLOCK ADDR @Z40WI3F*/
              3 BCTFLGT BIT(8),     /* BUFFER TYPE FLAGS             */
                  5 * BIT(1),       /* RESERVED                      */
                  5 BCTWKFLE BIT(1), /* WORKFILE                     */
                  5 BCTPGT BIT(1),  /* PAGE TABLE                    */
                  5 BCTASM BIT(1),  /* ASM                           */
                  5 BCTLSQA BIT(1), /* LSQA                          */
                  5 BCTDUMP BIT(1), /* DUMP                          */
                  5 BCTPGTF BIT(1), /* FIXED PAGE TABLE              */
                  5 * BIT(1),       /* RESERVED                      */
              3 BCTFLGI BIT(8),     /* BUFFER STATUS FLAGS           */
                  5 BCTCOMP BIT(1), /* I/O COMPLETE FOR BUFFER       */
                  5 BCTALLOC BIT(1), /* BUFFER SCHEDULED FOR I/O     */
                  5 BCTIOERR BIT(1), /* I/O ERROR PROCESSING BUFFER  */
                  5 BCTRECLM BIT(1), /* VIRTUAL ADDRESS RECLAIMED FROM
                                       REAL STORAGE                  */
                  5 BCTSWPDS BIT(1), /* PAGE FROM SWAP DATA SET
                                                             @Z40WI3F*/
              3 * PTR(16);          /* RESERVED                      */
    %IF RMKINIT = '' %THEN          /* INITIALIZATION REQUIRED       */
      %GOTO CCTINIT;                /* NO - SKIP INITIALIZATION CODE */
    DCL
          1 BCTH BDY(WORD),         /* BUFFER CONTROL TABLE HEAD     */
              3 BCTHBCTH CHAR(4) INIT('BCTH'), /* BCTH ACRONYM       */
              3 BCTHFRST PTR(31) INIT(ADDR(BCTI)), /* ADDRESS OF
                                       FIRST BCT                     */
              3 BCTHLAST PTR(31) INIT(ADDR(BCTI) + 3 * LENGTH(BCT)); /*
                                       ADDRESS OF LAST BCT           */
    DCL
          1 BCTI(20) BDY(WORD),     /* BUFFER CONTROL TABLE ENTRY    */
              3 * CHAR(4) INIT((DIM(BCTI))'BCT '), /* EBCDIC ACRONYM */
              3 * PTR(31) INIT((DIM(BCTI))0), /*NEXT BCT ON I/O QUEUE*/
              3 * PTR(8) INIT((DIM(BCTI))0), /* STORAGE KEY OF 1ST 2K*/
              3 * PTR(8) INIT((DIM(BCTI))0), /*STORAGE KEY OF LAST 2K*/
              3 * FIXED(16) INIT((DIM(BCTI))0), /* ASID OF DATA      */
              3 * PTR(31)
                      INIT(0,0,0,0,
 '010000'X,'011000'X,'012000'X,'013000'X,'014000'X,'015000'X,'016000'X,
 '017000'X,'018000'X,'019000'X,'01A000'X,'01B000'X,'01C000'X,'01D000'X,
                '01E000'X,'01F000'X), /* VIRTUAL ADDRESS OF DATA IN
                                       BUFFER                        */
              3 * PTR(31)
                      INIT('3000'X,'4000'X,'5000'X,'6000'X,
 '010000'X,'011000'X,'012000'X,'013000'X,'014000'X,'015000'X,'016000'X,
 '017000'X,'018000'X,'019000'X,'01A000'X,'01B000'X,'01C000'X,'01D000'X,
                '01E000'X,'01F000'X), /* REAL ADDRESS OF BUFFER      */
              3 * PTR(31) INIT((DIM(BCTI))0), /*ADDR OF PGE TBL ENTRY*/
              3 * PTR(31) INIT((DIM(BCTI))0), /* ADDRESS OF MDCB     */
              3 * CHAR(8) BDY(WORD) INIT((DIM(BCTI))'00'X), /* LPID OF
                                       DATA IN BUFFER                */
              3 * PTR(31) INIT((DIM(BCTI))0), /* ADDRESS OF AMB      */
              3 * PTR(31) INIT((DIM(BCTI))0), /*RBA OF PAGE IN BUFFER*/
              3 * BIT(8) INIT((DIM(BCTI))0), /* BUFFER TYPE FLAGS    */
              3 * BIT(8) INIT((DIM(BCTI))0), /* BUFFER STATUS FLAGS  */
              3 * PTR(16) INIT((DIM(BCTI))0); /* RESERVED            */

 %CCTINIT:;
 @EJECT;
    DCL
          1 CCT BDY(WORD) BASED(CCTADDR), /* COMMON COMMUNICATION
                                       TABLE                         */
              3 CTWAIT PTR(8),      /* HIGHEST WAIT CODE             */
              3 CTFLG1 BIT(8),      /* FLAGS                         */
                  5 CTERROR BIT(1), /* CALLER PROCESSES ERROR
                                       RECOVERY                      */
                  5 CTDEVICE BIT(1), /* DIRECT ACCESS I/O IN PROGRESS*/
                  5 CTMORTPE BIT(1), /* END OF REEL                  */
                  5 CTWORK BIT(1),  /* WORK RECORD IN PROCESS        */
                  5 CTDEFO BIT(1),  /* DEFAULT ADDRESS USED FOR
                                       OUTPUT                        */
                  5 * BIT(1),       /* RESERVED                      */
                  5 CTMP BIT(1),    /* PROCESSING ON MP SYSTEM       */
                  5 CTERREC BIT(1), /* IGNORE CATASTROPHIC ERROR     */
              3 CTFLG2 BIT(8),      /* FLAGS                         */
                  5 CTDUPSW BIT(1), /* DUPLICATE LINE                */
                  5 CTSTOR BIT(1),  /* PROTECTION KEY IN PROCESS     */
                  5 CTPGEFLT BIT(1), /* PAGE FAULT IN PROCESS        */
                  5 CTNOSTAT BIT(1), /* STORE STATUS NOT PERFORMED   */
                  5 CTVIRTR BIT(1), /* VIRTUAL DUMP REQUESTED        */
                  5 CTWKDONE BIT(1), /* END OF WORK FILE PROCESSING  */
                  5 CTALTCON BIT(1), /* ALTERNATE CONSOLE IN USE     */
                  5 * BIT(1),       /* RESERVED                      */
              3 CTDEVTYP PTR(8),    /* IPL DEVICE TYPE               */
              3 CTSENSE FIXED(15),  /* SENSE INFORMATION AREA        */
              3 CTINADDR FIXED(15), /* IPL DEVICE ADDRESS            */
              3 CTCCHHR CHAR(7),    /* CCHHR FOR USE DURING IPL AND
                                       WORK RECORD PROCESSING        */
              3 CTPGECNT CHAR(1),   /* NUMBER OF RECORDS IN AMDSAPGE
                                       (D.A. IPL)                    */
              3 CTCCHHS FIXED(31),  /* STARTING CCHH OF SYS1.PAGEDUMP*/
              3 CTCCHHE FIXED(31),  /* ENDING CCHH OF SYS1.PAGEDUMP  */
              3 CTCCHHW FIXED(31),  /* BEGINNING CCHH FOR WORKFILE   */
              3 CTERBDA FIXED(31),  /* DIRECT ACCESS ERROR RECOVERY
                                       BLOCK                         */
 /* THE FOLLOWING IS THE CCT COMMON SECTION                          */
              3 CTERBTPE FIXED(31), /* TAPE ERROR RECOVERY BLOCK     */
              3 CTERBCON FIXED(31), /* CONSOLE ERROR RECOVERY BLOCK  */
              3 CTCPUI FIXED(15),   /* IPL CPU ADDRESS               */
              3 CTOUTAD FIXED(15),  /* OUTPUT DEVICE ADDRESS         */
              3 CTCONTYP PTR(8),    /* CONSOLE TYPE                  */
              3 CTEBCOPD CHAR(3),   /* DEFAULT OUTPUT DEVICE ADDRESS */
              3 CTLOWFLG BIT(8),    /* FLAGS                         */
                  5 CTVIRTD BIT(1), /* DEFAULT TO VIRTUAL DUMP       */
                  5 CTFP BIT(1),    /* FILE PROTECT                  */
                  5 CTINIT BIT(1),  /* RE-INITIALIZATION PERMITTED
                                       AFTER CHANNEL ERROR           */
                  5 CTWKSTUS BIT(1), /* STATUS OF INCOMPLETE WORKFILE -
                                       ON MEANS INSUFFICIENT SPACE,
                                       OFF MEANS I/O ERROR OCCURRED  */
                  5 * BIT(4),       /* RESERVED                      */
              3 CTEBCOPR CHAR(3),   /* REPLIED OUTPUT DEVICE ADDRESS */
 /* THE FOLLOWING IS THE DUMP TYPE SECTION OF THE CCT                */
            2 CTDMPTYP,
 /* HIGH SPEED DUMP -                                                */
              3 CTIOTYPE BIT(8),    /* I/O REQUEST FLAGS             */
                  5 CTIOTERM BIT(1), /* TERMINATE                    */
                  5 CTIOOUT BIT(1), /* OUTPUT TAPE                   */
                  5 CTIODA BIT(1),  /* DIRECT ACCESS                 */
                  5 CTIOWK BIT(1),  /* WORKFILE                      */
                  5 CTIOCON BIT(1), /* CONSOLE                       */
                  5 CTIOINT BIT(1), /* RETURN ON ANY INTERRUPT       */
                  5 CTIORSET BIT(1), /* RESET CPU ON CPU SWITCH      */
                  5 * BIT(1),       /* RESERVED                      */
              3 * BIT(8),           /* RESERVED                      */
              3 CTCONFLG BIT(8),    /* CONSOLE FLAGS                 */
                  5 CTMSGOUT BIT(1), /* MSG MUST COME OUT            */
                  5 CTREAD BIT(1),  /* CONSOLE READ IN PROGRESS      */
                  5 * BIT(6),       /* RESERVED                      */
              3 CTBUFTYP BIT(8),    /* BUFFER TYPE FLAGS             */
                  5 * BIT(1),       /* RESERVED                      */
                  5 CTWKFLE BIT(1), /* WORKFILE                      */
                  5 CTPGT BIT(1),   /* PAGE TABLE                    */
                  5 CTASM BIT(1),   /* ASM                           */
                  5 CTLSQA BIT(1),  /* LSQA                          */
                  5 CTDUMP BIT(1),  /* DUMP BUFFER                   */
                  5 * BIT(2),       /* RESERVED                      */
              3 CTCONSOL PTR(31),   /* ADDRESS OF CONSOLE I/O ROUTINE*/
              3 CTLWKAD PTR(31),    /* LAST ADDRESS ON WORKFILE      */
              3 CTCOMMIO PTR(31),   /* ADDRESS OF DUMPSIO ROUTINE    */
              3 CTEOR PTR(31),      /* ADDRESS OF END OF REEL ROUTINE*/
              3 CTVCCT PTR(31),     /* ADDRESS OF VCCT               */
              3 CTPRMT1 FIXED(15),  /* WRITE PROMPT POS. (3066 ONLY) */
                  5 CTPRMT1Y FIXED(8), /* Y COORDINATE               */
                  5 CTPRMT1X FIXED(8), /* X COORDINATE               */
              3 CTPRMT2 FIXED(15),  /* READ PROMPT POS. (3066 ONLY)  */
                  5 CTPRMT2Y FIXED(8), /* Y COORDINATE               */
                  5 CTPRMT2X FIXED(8), /* X COORDINATE               */
              3 CTHWM FIXED(8),     /* LOGICAL 3066 SCREEN LIMIT     */
              3 CTHWMAX FIXED(8);   /* PHYSICAL 3066 SCREEN LIMIT    */
    DCL
          1 CTLOWDMP DEFINED(CTDMPTYP), /* THIS IS THE LOW SPEED DUMP
                                       TYPE SECTION OF THE CCT       */
              3 CTADDRS PTR(31),    /* STARTING ADDRESS OF RANGE TO
                                       BE DUMPED                     */
              3 CTADDRE PTR(31);    /* ENDING ADDRESS OF RANGE TO BE
                                       DUMPED                        */
 @EJECT;
    DCL
          1 CCW BDY(DWORD) BASED,   /* FORMAT OF CCW                 */
              3 CCWCMD PTR(8),      /* COMMAND                       */
              3 CCWDADDR PTR(24),   /* DATA ADDRESS                  */
              3 CCWFLAGS BIT(8),    /* CCW FLAGS                     */
                  5 CCWDC BIT(1),   /* DATA CHAINING                 */
                  5 CCWCC BIT(1),   /* COMMAND CHAINING              */
                  5 CCWSLI BIT(1),  /* SUPPRESS INCORRECT LENGTH
                                       INDICATOR                     */
                  5 CCWSKIP BIT(1), /* SUPPRESS DATA TRANSFER        */
                  5 CCWPCI BIT(1),  /* PROGRAM-CONTROLLED INTERRUPT  */
                  5 CCWIDA BIT(1),  /* INDIRECT DATA ADDRESS         */
                  5 * BIT(2),       /* RESERVED                      */
              3 * PTR(8),           /* RESERVED                      */
              3 CCWCNT FIXED(16);   /* BYTE COUNT                    */
    DCL
          1 CSW BDY(WORD) BASED,    /* FORMAT OF CSW                 */
              3 CSWKEY00 BIT(8),
                  5 CSWKEY BIT(4),  /* PROTECT KEY                   */
                  5 * BIT(4),       /* RESERVED                      */
              3 CSWCADDR PTR(24),   /* COMMAND ADDRESS               */
              3 CSWUSTAT BIT(8),    /* CSW UNIT STATUS               */
                  5 CSWATTN BIT(1), /* ATTENTION                     */
                  5 CSWSTMOD BIT(1), /* STATUS MODIFIER              */
                  5 CSWCUE BIT(1),  /* CONTROL UNIT END              */
                  5 CSWBUSY BIT(1), /* BUSY                          */
                  5 CSWCE BIT(1),   /* CHANNEL END                   */
                  5 CSWDE BIT(1),   /* DEVICE END                    */
                  5 CSWUC BIT(1),   /* UNIT CHECK                    */
                  5 CSWUE BIT(1),   /* UNIT EXCEPTION                */
              3 CSWCSTAT BIT(8),    /* CSW CHANNEL STATUS            */
                  5 CSWPCI BIT(1),  /* PROGRAM-CONTROLLED INTERRUPT  */
                  5 CSWIL BIT(1),   /* INCORRECT LENGTH              */
                  5 CSWPGC BIT(1),  /* PROGRAM CHECK                 */
                  5 CSWPTC BIT(1),  /* PROTECTION CHECK              */
                  5 CSWCDC BIT(1),  /* CHANNEL DATA CHECK            */
                  5 CSWCCC BIT(1),  /* CHANNEL CONTROL CHECK         */
                  5 CSWICC BIT(1),  /* INTERFACE CONTROL CHECK       */
                  5 CSWCHC BIT(1),  /* CHAINING CHECK                */
              3 CSWCNT FIXED(16);   /* RESIDUAL BYTE COUNT           */
 @EJECT;
    %IF RMKINIT ^= '' %THEN         /* INITIALIZATION REQUIRED       */
      %GOTO IODINIT;                /* YES - SKIP BASED CODE         */
    DCL
          1 DSCE BDY(WORD) BASED(VCTDSCE), /* DYNAMIC STORAGE CONTROL
                                       ELEMENT                       */
              3 DSCEDSCE CHAR(4),   /* DSCE ACRONYM                  */
              3 DSCEBEGN PTR(31),   /* BEGINNING ADDRESS OF DYNAMIC
                                       STORAGE AREA                  */
              3 DSCENEXT PTR(31),   /* ADDRESS OF NEXT AVAILABLE
                                       STORAGE                       */
              3 DSCETBEG PTR(31),   /* ADDRESS OF FIRST TRACE ENTRY  */
              3 DSCETCUR PTR(31),   /* CURRENT TRACE ENTRY ADDRESS   */
              3 DSCETEND PTR(31);   /* END OF TRACE AND DYNAMIC AREA */
 @EJECT;
 %IODINIT:;
    DCL
          1 IODB BDY(WORD) BASED,   /* INPUT/OUTPUT DEVICE BLOCK     */
              3 IODBIODB CHAR(4),   /* IODB ACRONYM                  */
              3 IODBIDEN CHAR(4),   /* IODB TYPE                     */
              3 IODBFLAG BIT(16),   /* FLAGS                         */
                  5 IODBTERM BIT(1), /* CATASTROPHIC ERROR           */
                  5 IODBPTRM BIT(1), /* TERMINATE VIRTUAL DUMP       */
                  5 IODBINT BIT(1), /* INTERRUPT PROCESSED           */
                  5 IODBIOC BIT(1), /* I/O ERROR                     */
                  5 IODBHALT BIT(1), /* DEVICE QUIESCED              */
                  5 IODBACTV BIT(1), /* I/O ACTIVE ON DEVICE         */
                  5 IODBCONW BIT(1), /* WAIT ON NEXT FULL SCREEN (3066
                                       CONSOLE ONLY)                 */
                  5 IODBSTRT BIT(1), /* I/O STARTED BY ERROR RECOVERY
                                       ROUTINE                       */
                  5 IODBPGST BIT(1),/* DEVICE IS PAGING STORAGE  @H1A*/
              3 IODBDEV FIXED(15),  /* DEVICE ADDRESS                */
              3 IODBCLAS PTR(8),    /* DEVICE CLASS                  */
              3 IODBTYPE PTR(8),    /* UNIT TYPE                     */
              3 IODBCPU FIXED(15),  /* CPU ADDRESS                   */
              3 IODBBCT PTR(31),    /* ADDRESS OF FIRST BCT ON I/O
                                       REQUEST QUEUE                 */
              3 IODBCAW PTR(31),    /* CAW USED FOR CURRENT I/O
                                       OPERATION                     */
              3 IODBCSW CHAR(8),    /* CSW FOR CURRENT OPERATION     */
              3 IODBCCHH CHAR(8),   /* SEEK ADDRESS                  */
                  5 IODBM CHAR(1),  /* 'M' VALUE                     */
                  5 IODBSEEK CHAR(2), /* BEGINNING OF SEEK ADDRESS   */
                  5 IODBSRCH CHAR(4), /* SEARCH ADDRESS              */
                      7 IODBCC CHAR(2), /* CYLINDER NUMBER           */
                      7 IODBHH CHAR(2), /* TRACK NUMBER              */
                  5 IODBR CHAR(1),  /* RECORD NUMBER                 */
              3 IODBSENS CHAR(24);  /* SENSE INFORMATION             */
 @EJECT;
    %IF RMKINIT ^= '' %THEN         /* INITIALIZATION REQUIRED       */
      %GOTO DSCINIT;                /* YES - SKIP BASED CODE         */
    DCL
          1 MDCE BDY(WORD) BASED(VCTMDCE), /* MEMORY DISPATCHING
                                       CONTROL ELEMENT               */
              3 MDCEMDCE CHAR(4),   /* MDCE ACRONYM                  */
              3 MDCEACTV PTR(31),   /* ACTIVE MDCB QUEUE             */
              3 MDCEAVIL PTR(31);   /* AVAILABLE MDCB QUEUE          */
    DCL
          1 MDCB BDY(WORD) BASED,   /* MEMORY DISPATCHING CONTROL
                                       BLOCK                         */
              3 MDCBMDCB CHAR(4),   /* MDCB ACRONYM                  */
              3 MDCBNEXT PTR(31),   /* NEXT MDCB                     */
              3 MDCBPSW CHAR(8),    /* PSW AT TIME OF INTERRUPT      */
              3 MDCBGRS BDY(WORD) CHAR(64), /* GENERAL REGISTERS     */
                  5 MDCBGR0 PTR(31),
                  5 MDCBGR1 PTR(31),
                  5 MDCBGR2 PTR(31),
                  5 MDCBGR3 PTR(31),
                  5 MDCBGR4 PTR(31),
                  5 MDCBGR5 PTR(31),
                  5 MDCBGR6 PTR(31),
                  5 MDCBGR7 PTR(31),
                  5 MDCBGR8 PTR(31),
                  5 MDCBGR9 PTR(31),
                  5 MDCBGR10 PTR(31),
                  5 MDCBGR11 PTR(31),
                  5 MDCBGR12 PTR(31),
                  5 MDCBGR13 PTR(31),
                  5 MDCBGR14 PTR(31),
                  5 MDCBGR15 PTR(31),
              3 MDCBSTOR PTR(31),   /* CONTENTS OF CONTROL REGISTER 1*/
              3 MDCBPI FIXED(15),   /* PROGRAM INTERRUPT CODE        */
              3 MDCBFLGS BIT(8),    /* MDCB FLAGS                    */
                  5 MDCBASMI BIT(1), /* ASM FUNCTION STATUS          */
                  5 MDCBDUMP BIT(1), /* DUMP REQUEST STATUS          */
                  5 * BIT(6),       /* RESERVED                      */
              3 * BIT(8);           /* RESERVED                      */
    %GOTO PSWCOM;                   /* SKIP INITIALIZATION CODE      */
 %DSCINIT:;
 @EJECT;
    DCL
          1 DSCE BDY(WORD),         /* DYNAMIC STORAGE CONTROL
                                       ELEMENT                       */
              3 DSCEDSCE CHAR(4) INIT('DSCE'), /* DSCE ACRONYM       */
              3 DSCEBEGN PTR(31) INIT('1000'X), /* BEGINNING ADDRESS
                                       OF DYNAMIC STORAGE AREA       */
              3 DSCENEXT PTR(31) INIT('1000'X), /* ADDRESS OF NEXT
                                       AVAILABLE STORAGE             */
              3 DSCETBEG PTR(31) INIT('2F00'X), /* ADDRESS OF FIRST
                                       TRACE ENTRY                   */
              3 DSCETCUR PTR(31) INIT('2F00'X), /* CURRENT TRACE ENTRY
                                       ADDRESS                       */
              3 DSCETEND PTR(31) INIT('3000'X); /* END OF TRACE AND
                                       DYNAMIC AREA                  */
    DCL
          1 IODBI BDY(WORD),        /* INPUT/OUTPUT DEVICE BLOCK     */
              3 IODBDA,             /* DIRECT ACCESS IODB            */
                  5 * CHAR(4) INIT('IODB'), /* IODB ACRONYM          */
                  5 * CHAR(4) INIT('-DA '), /* IODB TYPE             */
                  5 * (14) FIXED(31) INIT((14)0),
              3 IODBOUT,            /* OUTPUT IODB                   */
                  5 * CHAR(4) INIT('IODB'), /* IODB ACRONYM          */
                  5 * CHAR(4) INIT('-OUT'), /* IODB TYPE             */
                  5 * (14) FIXED(31) INIT((14)0),
              3 IODBWORK,           /* WORKFILE IODB                 */
                  5 * CHAR(4) INIT('IODB'), /* IODB ACRONYM          */
                  5 * CHAR(4) INIT('-WK '), /* IODB TYPE             */
                  5 * (14) FIXED(31) INIT((14)0),
              3 IODBCON,            /* CONSOLE IODB                  */
                  5 * CHAR(4) INIT('IODB'), /* IODB ACRONYM          */
                  5 * CHAR(4) INIT('-CON'), /* IODB TYPE             */
                  5 * (14) FIXED(31) INIT((14)0);
    GENERATE DATA REFS(IODBDA,IODBOUT,IODBWORK,IODBCON);
          ENTRY IODBDA
          ENTRY IODBOUT
          ENTRY IODBWORK
          ENTRY IODBCON
 @ENDGEN
    DCL
          1 MDCE BDY(WORD),         /* MEMORY DISPATCHING CONTROL
                                       ELEMENT                       */
              3 MDCEMDCE CHAR(4) INIT('MDCE'), /* MDCE ACRONYM       */
              3 MDCEACTV PTR(31) INIT(0), /* ACTIVE MDCB QUEUE       */
              3 MDCEAVIL PTR(31) INIT(ADDR(MDCB)); /* AVAILABLE
                                       MDCB QUEUE                    */
    DCL
          1 MDCB(10) BDY(WORD),      /* MEMORY DISPATCHING CONTROL
                                       BLOCK                         */
              3 MDCBMDCB CHAR(4) INIT((DIM(MDCB))'MDCB'), /* MDCB
                                       ACRONYM                       */
              3 MDCBNEXT PTR(31) INIT(ADDR(MDCB) + LENGTH(MDCB),
               ADDR(MDCB) + 2*LENGTH(MDCB),ADDR(MDCB) + 3*LENGTH(MDCB),
               ADDR(MDCB) + 4*LENGTH(MDCB),ADDR(MDCB) + 5*LENGTH(MDCB),
               ADDR(MDCB) + 6*LENGTH(MDCB),ADDR(MDCB) + 7*LENGTH(MDCB),
               ADDR(MDCB) + 8*LENGTH(MDCB),ADDR(MDCB) + 9*LENGTH(MDCB),
               0),                   /* ADDRESS OF NEXT MDCB         */
              3 MDCBPSW CHAR(8) INIT((DIM(MDCB))'00'X), /* PSW AT TIME
                                       OF INTERRUPT                  */
              3 MDCBGRS BDY(WORD) CHAR(64) INIT((DIM(MDCB))'00'X), /*
                                       GENERAL REGISTERS             */
              3 MDCBSTOR PTR(31) INIT((DIM(MDCB))0), /* CONTENTS OF
                                       CONTROL REGISTER 1            */
              3 MDCBPI FIXED(15) INIT((DIM(MDCB))0), /* PROGRAM
                                       INTERRUPT CODE                */
              3 MDCBFLGS BIT(8) INIT((DIM(MDCB))0), /* MDCB FLAGS    */
                  5 MDCBASMI BIT(1), /* ASM FUNCTION STATUS          */
                  5 MDCBDUMP BIT(1), /* DUMP REQUEST STATUS          */
                  5 * BIT(6),       /* RESERVED                      */
              3 * BIT(8) INIT((DIM(MDCB))0); /* RESERVED             */

 %PSWCOM:;
 @EJECT;
    DCL
          1 PSW BASED,              /* OS/VS PSW (S/370 EC MODE)     */
            2 PSWSM CHAR(1),        /* SYSTEM MASK                   */
              3 * BIT(1),
              3 PSWPER BIT(1),      /* PROGRAM EVENT RECORDING       */
              3 * BIT(1),
              3 * BIT(1),
              3 * BIT(1),
              3 PSWDAT BIT(1),      /* DYNAMIC ADDRESS TRANSLATION   */
              3 PSWIO BIT(1),       /* INPUT / OUTPUT                */
              3 PSWXTRNL BIT(1),    /* EXTERNAL                      */
            2 * CHAR(1),
              3 PSWKEY BIT(4),      /* PROTECTION KEY                */
              3 PSWMODE BIT(1),     /* EXTENDED CONTROL MODE         */
              3 PSWMCH BIT(1),      /* MACHINE CHECK MASK            */
              3 PSWAIT BIT(1),      /* WAIT STATE                    */
              3 PSWPRBLM BIT(1),    /* PROBLEM STATE                 */
            2 PSWCCPM CHAR(1),
              3 * BIT(2),           /* UNDEFINED                     */
              3 * BIT(2),           /* CONDITION CODE                */
              3 PSWFPO BIT(1),      /* FIXED POINT OVERFLOW          */
              3 PSWDO BIT(1),       /* DIVIDE OVERFLOW               */
              3 PSWEU BIT(1),       /* EXPONENT UNDERFLOW            */
              3 PSWSIG BIT(1),      /* SIGNIFICANCE                  */
            2 * CHAR(1),
              3 PSWSP BIT(1),       /* SEGMENT PROTECTION            */
            2 PSWIA PTR(31),        /* INSTRUCTION ADDRESS           */
            2 PSWEND CHAR(0);       /* END OF PSW                    */
    DCL
          PTRTREAL PTR(31) CONSTANT(30712); /* PTRT LOCATION X'77F8' */
    DCL
          1 PTRT BASED(PTRTREAL),   /* PTRT DEFINITION               */
              3 PTRTPTRT CHAR(4),   /* EBCDIC ACRONYM                */
              3 PTRTLGID CHAR(4),   /* LOGICAL GROUP FOR MEMORY      */
              3 PTRTRS (NUMSEG) PTR(31), /* SEGMENT TABLE SECTION    */
              3 PTRTVS (NUMSEG) PTR(31); /* VIRTUAL ADDR SECTION     */
    DCL
          PTRTRSA PTR(31) BASED;    /* REAL STORAGE ADDRESS OF PAGE
                                       TABLE                         */
    DCL
          PTRTVSA PTR(31) BASED(ADDR(PTRTRSA)+NUMSEG*LENGTH(PTRTRSA));
                                    /* VIRTUAL ADDR OF PAGE TABLE    */
    DCL
          1 RCB BDY(WORD) BASED,    /* RECOVERY CONTROL BLOCK        */
              3 RCBNEXT PTR(31),    /* NEXT HIGHER RCB               */
              3 RCBSTOR PTR(31),    /* CONTROL REGISTER 1 FOR EXIT   */
              3 RCBSAVE PTR(31),    /* ADDRESS OF RECOVERY ROUTINE
                                       REGISTER SAVE AREA            */
              3 RCBEXIT PTR(31),    /* ADDRESS OF RECOVERY ROUTINE   */
              3 RCBBASE PTR(31);    /* BASE ADDRESS OF RECOVERY
                                       ROUTINE                       */
    %IF DEBUG ^= 'YES' %THEN        /* DEBUG AREAS TO BE INCLUDED    */
      %GOTO NODEBUG;                /* NO - SKIP DEBUG AREAS         */
 @EJECT;
    DCL
          1 DEBUGLSD LOCATION(3286), /* LOW CORE DEBUG COUNTERS      */
              3 PFTRCLM  FIXED(15), /* NUMBER OF PAGES RECLAIMED
                                       FROM REAL STORAGE             */
              3 PFBUFWAT FIXED(15), /* NUMBER OF TIMES WAT ENTERED FROM
                                       BUF TO WAIT FOR OUTPUT BUFFERS*/
              3 PFTAPCPU FIXED(15), /* NUMBER OF TIMES SWITCHED CPUS */
              3 PFSIODA  FIXED(15), /* NUMBER OF TIMES SIO ENTERED FOR
                                       I/O TO D.A.                   */
              3 PFSIOWK  FIXED(15), /* NUMBER OF TIMES SIO ENTERED FOR
                                       I/O TO WORKFILE               */
              3 PFSIOOUT FIXED(15), /* NUMBER OF TIMES SIO ENTERED FOR
                                       I/O TO OUTPUT                 */
              3 PFSIOPCI FIXED(15), /* NUMBER OF TIMES SIO QUEUED PCI
                                       CHANNEL PROGRAM TO OUTPUT     */
              3 PFSIOWAT FIXED(15), /* NUMBER OF TIMES WAT ENTERED FROM
                                       SIO TO WAIT (CHANNEL PROGRAMS)*/
              3 PFWATENW FIXED(15), /* NUMBER OF TIMES WAT ENTERED
                                       ENABLED WAIT STATE            */
              3 PFWATEN  FIXED(15), /* NUMBER OF TIMES WAT ENABLED   */
              3 PFWATDE  FIXED(15), /* NUMBER OF TIMES WAT RECEIVED
                                       DEVICE END FOR CHAIN          */
              3 PFWATOIP FIXED(15), /* NUMBER OF TIMES WAT PROCESSED
                                       INTERRUPTS OTHER THAN REQUEST */
              3 PFIOIRST FIXED(15); /* NUMBER OF TIMES IOI RESTARTED
                                       OUTPUT I/O FOLLOWING DEV END  */
 %NODEBUG:;
 @EJECT;
    DCL
          1 SADMPLSD LOCATION(3312), /* SADMP LOW CORE STORAGE
                                       DEFINITIONS                   */
              3 PSWSADMP CHAR(8),   /* EBCDIC IDENTIFIER             */
              3 SVIRPSW CHAR(8) BDY(DWORD), /* RETURN PSW TO AMDSASVI
                                       FOLLOWING MEMORY SWITCH       */
              3 AUDPSW CHAR(8) BDY(DWORD), /* AMDSAAUD PSW TO GIVE
                                    CONTROL TO RCB EXIT              */
              3 SAVEDUMP CHAR(8),   /* EBCDIC IDENTIFIER OF SAVE
                                       AREAS                         */
              3 LOWGRS CHAR(64),    /* SAVE AREA FOR GENERAL
                                       REGISTERS ACROSS CPU-CPU
                                       COMMUNICATIONS                */
              3 LOWCRS CHAR(64),    /* SAVE AREA FOR CONTROL
                                       REGISTERS ACROSS CPU-CPU
                                       COMMUNICATIONS                */
              3 SVINAME CHAR(4),    /* SAVE AREA ID                  */
              3 SVISAVE CHAR(100),  /* REGISTER SAVE AREA            */
              3 PGINAME CHAR(4),    /* SAVE AREA ID                  */
              3 PGISAVE CHAR(100),  /* REGISTER SAVE AREA            */
              3 IOINAME CHAR(4),    /* SAVE AREA ID                  */
              3 IOISAVE CHAR(100),  /* REGISTER SAVE AREA            */
              3 AUDNAME CHAR(4),    /* SAVE AREA ID                  */
              3 AUDSAVE CHAR(100),  /* REGISTER SAVE AREA            */
              3 FRMNAME CHAR(4),    /* SAVE AREA ID                  */
              3 FRMSAVE CHAR(100),  /* REGISTER SAVE AREA            */
              3 GTMNAME CHAR(4),    /* SAVE AREA ID                  */
              3 GTMSAVE CHAR(100);  /* REGISTER SAVE AREA            */
 @EJECT;
    %IF RMKINIT ^= '' %THEN         /* INITIALIZATION REQUIRED       */
      %GOTO VCTINIT;                /* YES - SKIP BASED CODE         */
    DCL
          1 VCCT BDY(WORD) BASED(VCCTREG), /* VIRTUAL COMMON
                                       COMMUNICATION TABLE           */
              3 VCTVCT CHAR(4),     /* VCCT ACRONYM                  */
              3 VCTRCB PTR(31),     /* RCB QUEUE POINTER             */
              3 VCTRECSN BIT(8),    /* RECURSION FLAGS               */
                  5 VCTPGIR BIT(1), /* PROGRAM INTERRUPT RECURSION
                                       INVALID                       */
                  5 VCTUPDR BIT(1), /* PROGRAM INTERRUPT RECURSION IN
                                       AMDSAUPD INVALID              */
                  5 VCTEXIR BIT(1), /* RECURSION THROUGH TERMINATION
                                       ROUTINE INVALID               */
                  5 VCTRSMR BIT(1), /* RECURSION THROUGH AMDSARSM
                                       INVALID                       */
                  5 * BIT(4),       /* RESERVED                      */
              3 VCTFLGS BIT(8),     /* FLAGS                         */
                  5 VCTSADMP BIT(1), /* RECOVERY DUMP REQUESTED      */
                  5 VCTMEMIN BIT(1), /* MEMORY IS IN STORAGE         */
                  5 VCTASMIC BIT(1), /* ASM IN CONTROL               */
                  5 VCTSARTB BIT(1), /* BAD SART             @Z40WI3F*/
                  5 VCTLRCLM BIT(1), /* NO RECLAIM FOR LOCAL MEMORY  */
                  5 VCTNOI22 BIT(1), /* INHIBIT I22 MSG      @YM5001 */
                  5 VCT4KK BIT(1),  /* INDICATES THAT 4K RATHER THAN
                                       2K KEYS ARE PRESENT   @ZA58051*/
                  5 * BIT(1),        /* RESERVED             @ZA58051*/
              3 VCTRECVA FIXED(16), /* SADMP RECOVERY DUMP ASID      */
              3 VCTMDCE PTR(31),    /* MDCE PTR                      */
              3 VCTSTOR PTR(31),    /* SEGMENT TABLE ORIGIN FOR
                                       MEMORY SWITCH                 */
              3 VCTDSCE PTR(31),    /* DSCE PTR                      */
              3 VCTBCTH PTR(31),    /* BCTH PTR                      */
              3 VCTBCTC PTR(31),    /* CURRENT BCT PTR               */
              3 VCTIODB PTR(31),    /* IODB PTR                      */
              3 VCTARB PTR(31),     /* ARB PTR                       */
              3 VCTSUBPL PTR(31),   /* SUBPOOL DUMP LIST POINTER     */
              3 VCTWKHI PTR(8),     /* NUMBER OF RECORDS ON WORKFILE */
              3 VCTWKC PTR(8),      /* CURRENT POSITION OF WORKFILE  */
              3 VCTCPUC FIXED(15),  /* CURRENT CPU ADDRESS           */
              3 VCTASCB PTR(31),    /* CURRENT ASCB ADDRESS IN
                                       PROCESS                       */
              3 * PTR(31),          /* UNUSED                @Z40WI3F*/
              3 VCTPTRT PTR(31),    /* ADDR OF PTRT                  */
              3 VCTASID FIXED(16),  /* CURRENT ASID                  */
              3 VCTAUDIT FIXED(15), /* ERROR CODE FOR INVOKING
                                       AMDSAAUD FOR A DUMP           */
              3 VCTCBID CHAR(8),    /* SYSTEM CONTROL BLOCK IN USE   */
                  5 * CHAR(7),
                  5 VCTCBIDN PTR(8), /* CONTROL BLOCK ID             */
              3 VCTJBNME CHAR(8),   /* JOBNAME CURRENTLY BEING
                                       PROCESSED                     */
              3 VCTCBADR PTR(31),   /* ADDRESS OF SYSTEM CONTROL
                                       BLOCK IN USE                  */
              3 VCTLPA PTR(31),     /* ADDRESS OF LPA FOR RELOCATION */
              3 VCTPGT PTR(31),     /* ADDRESS OF SADMP PAGE TABLE   */
              3 VCTSVCTB PTR(31),   /* ADDRESS OF SVCSADMP TABLE     */
              3 VCTCPOUT PTR(31),   /* ADDRESS OF CURRENT OUTPUT
                                       CHANNEL PROGRAM               */
              3 VCTEXTRA FIXED(15), /* NUMBER OF PAGES USED ABOVE 1
                                       SEGMENT                       */
              3 * FIXED(15),        /* RESERVED                      */
              3 VCTCCTV PTR(31),    /* VIRTUAL ADDRESS OF CCT        */
              3 VCTVCCTV PTR(31);   /* VIRTUAL ADDRESS OF VCCT       */
    %GOTO COMMON;                   /* SKIP INITIALIZATION CODE      */

 %VCTINIT:;
    DCL
          1 VCCT BDY(WORD) EXTERNAL LOCAL, /* VIRTUAL COMMON
                                       COMMUNICATION TABLE           */
              3 VCTVCT CHAR(4) INIT('VCCT'), /* VCCT ACRONYM         */
              3 VCTRCB PTR(31) INIT(0), /* RCB QUEUE POINTER         */
              3 VCTRECSN BIT(8) INIT('00'X), /* RECURSION FLAGS      */
                  5 VCTPGIR BIT(1), /* PROGRAM INTERRUPT RECURSION
                                       INVALID                       */
                  5 VCTUPDR BIT(1), /* PROGRAM INTERRUPT RECURSION IN
                                       AMDSAUPD INVALID              */
                  5 VCTEXIR BIT(1), /* RECURSION THROUGH TERMINATION
                                       ROUTINE INVALID               */
                  5 VCTRSMR BIT(1), /* RECURSION THROUGH AMDSARSM
                                       INVALID                       */
                  5 * BIT(4),       /* RESERVED                      */
              3 VCTFLGS BIT(8) INIT('00'X), /* FLAGS                 */
                  5 VCTSADMP BIT(1), /* RECOVERY DUMP REQUESTED      */
                  5 VCTMEMIN BIT(1), /* MEMORY IS IN STORAGE         */
                  5 VCTASMIC BIT(1), /* ASM IN CONTROL               */
                  5 VCTSARTB BIT(1), /* BAD SART             @Z40WI3F*/
                  5 VCTLRCLM BIT(1), /* NO RECLAIM FOR LOCAL MEMORY  */
                  5 VCTNTERM BIT(1), /* NORMAL TERMINATION           */
                  5 * BIT(2) ,      /* RESERVED                      */
              3 VCTRECVA FIXED(16) INIT('FFFD'X), /* SADMP RECOVERY
                                       DUMP ASID                     */
              3 VCTMDCE PTR(31) INIT(ADDR(MDCE)), /* MDCE PTR        */
              3 VCTSTOR PTR(31) INIT(0), /* SEGMENT TABLE ORIGIN FOR
                                       MEMORY SWITCH                 */
              3 VCTDSCE PTR(31) INIT(ADDR(DSCE)), /* DSCE PTR        */
              3 VCTBCTH PTR(31) INIT(ADDR(BCTH)), /* BCTH PTR        */
              3 VCTBCTC PTR(31) INIT(ADDR(BCTI)), /* CURRENT BCT PTR */
              3 VCTIODB PTR(31) INIT(ADDR(IODBI)), /* IODB PTR       */
              3 VCTARB PTR(31) INIT(ADDR(ARBH)), /* ARB PTR          */
              3 VCTSUBPL PTR(31) INIT(ADDR(SDLH)), /* SUBPOOL DUMP
                                       LIST POINTER                  */
              3 VCTWKHI PTR(8) INIT(0), /* NUMBER OF RECORDS ON
                                       WORKFILE                      */
              3 VCTWKC PTR(8) INIT(0), /* CURRENT POSITION OF
                                       WORKFILE                      */
              3 VCTCPUC FIXED(15) INIT(0), /* CURRENT CPU ADDRESS    */
              3 VCTASCB PTR(31) INIT(0), /* CURRENT ASCB ADDRESS IN
                                       PROCESS                       */
              3 * PTR(31),          /* UNUSED                @Z40WI3F*/
              3 VCTPTRT PTR(31) INIT(PTRTREAL), /* ADDR OF PTRT      */
              3 VCTASID FIXED(16) INIT(0), /* CURRENT ASID           */
              3 VCTAUDIT FIXED(15) INIT(0), /* ERROR CODE FOR INVOKING
                                       AMDSAAUD FOR A DUMP           */
              3 VCTCBID CHAR(8) INIT(' '), /* SYSTEM CONTROL BLOCK IN
                                       USE                           */
                  5 * CHAR(7),
                  5 VCTCBIDN PTR(8), /* CONTROL BLOCK ID             */
              3 VCTJBNME CHAR(8) INIT(' '), /* JOBNAME CURRENTLY
                                       BEING PROCESSED               */
              3 VCTCBADR PTR(31) INIT(0), /* ADDRESS OF SYSTEM
                                       CONTROL BLOCK IN USE          */
              3 VCTLPA PTR(31) INIT(0), /* ADDRESS OF LPA FOR
                                       RELOCATION                    */
              3 VCTPGT PTR(31) INIT(ADDR(SADMPPGT)), /* ADDRESS OF
                                       SADMP PAGE TABLE              */
              3 VCTSVCTB PTR(31) INIT(ADDR(SVCSADMP)), /* ADDRESS OF
                                       SVCSADMP TABLE                */
              3 VCTCPOUT PTR(31) INIT(ADDR(OUTCCW)), /* ADDRESS OF
                                       CURRENT OUTPUT CHANNEL PROGRAM*/
              3 VCTEXTRA FIXED(15) INIT(0), /* NUMBER OF PAGES USED
                                       ABOVE 1 SEGMENT               */
              3 * FIXED(15) INIT(0), /* RESERVED                     */
              3 VCTCCTV PTR(31) INIT(0), /* VIRTUAL ADDRESS OF CCT   */
              3 VCTVCCTV PTR(31) INIT(0); /* VIRTUAL ADDRESS OF VCCT */
 %COMMON:;
 @EJECT;
    DCL
          1 SDL BASED,              /* SUBPOOL DUMP LIST             */
              3 SDLNUM PTR(8),      /* NUMBER OF ENTRIES             */
              3 SDLSPN PTR(8);      /* SUBPOOL NUMBER TO BE DUMPED   */
    /* REGISTER DECLARES                                             */
    DCL   RETREG REG(14) PTR(31),   /* RETURN REGISTER               */
          RETCODE REG(15) FIXED(31), /* RETURN CODE REGISTER         */
          BASEREG REG(11) PTR(31) RESTRICTED, /* BASE REGISTER       */
          VCCTREG REG(12) PTR(31) RESTRICTED, /* VCCT ADDRESS        */
          R0 REG(0) PTR(31),
          R1 REG(1) PTR(31),
          R2 REG(2) PTR(31),
          R3 REG(3) PTR(31),
          R4 REG(4) PTR(31),
          R5 REG(5) PTR(31),
          R6 REG(6) PTR(31),
          R7 REG(7) PTR(31),
          R8 REG(8) PTR(31),
          R9 REG(9) PTR(31),
          R10 REG(10) PTR(31),
          R11 REG(11) PTR(31),
          R12 REG(12) PTR(31),
          R13 REG(13) PTR(31),
          R14 REG(14) PTR(31),
          R15 REG(15) PTR(31);
    /* SAVE AREA FORMATS                                             */
    DCL   1 REGLOCAL BDY(WORD) BASED, /* FORMAT OF LOW CORE SAVE
                                       AREAS                         */
              3 REGL0 PTR(31),
              3 REGL1 PTR(31),
              3 REGL2 PTR(31),
              3 REGL3 PTR(31),
              3 REGL4 PTR(31),
              3 REGL5 PTR(31),
              3 REGL6 PTR(31),
              3 REGL7 PTR(31),
              3 REGL8 PTR(31),
              3 REGL9 PTR(31),
              3 REGL10 PTR(31),
              3 REGL11 PTR(31),
              3 REGL12 PTR(31),
              3 REGL13 PTR(31),
              3 REGL14 PTR(31),
              3 REGL15 PTR(31);
    DCL   1 SAVEFORM BDY(WORD) BASED(R13), /* FORMAT OF STANDARD SAVE
                                       AREA                          */
              3 SAVEID CHAR(1),
              3 SAVENAME CHAR(3),   /* MODULE NAME - LAST 3 CHARS    */
              3 SAVEBACK PTR(31),   /* PREVIOUS SAVE AREA            */
              3 SAVENEXT PTR(31),   /* NEXT SAVE AREA                */
              3 SAVER14 PTR(31),
              3 SAVER15 PTR(31),
              3 SAVER0 PTR(31),
              3 SAVER1 PTR(31),
              3 SAVER2 PTR(31),
              3 SAVER3 PTR(31),
              3 SAVER4 PTR(31),
              3 SAVER5 PTR(31),
              3 SAVER6 PTR(31),
              3 SAVER7 PTR(31),
              3 SAVER8 PTR(31),
              3 SAVER9 PTR(31),
              3 SAVER10 PTR(31),
              3 SAVER11 PTR(31),
              3 SAVER12 PTR(31);
    /* MISCELLANEOUS CONSTANTS                                       */
    DCL   CCTADDR PTR(31) CONSTANT(28672); /* ADDR OF CCT ('7000'X)  */
    DCL   PGEMASK BIT(8) CONSTANT('01'X); /* SYSTEM MASK-ENABLED FOR
                                       EXTERNAL INTERRUPTS ONLY, DAT
                                       OFF                           */
    DCL   DATMASK BIT(8) CONSTANT('05'X); /* SYSTEM MASK-ENABLED FOR
                                       EXTERNAL INTERRUPTS ONLY, DAT
                                       ON                            */
    DCL   NUMSEG FIXED(31) CONSTANT(256); /* NUMBER OF SEGMENTS IN
                                       SYSTEM                        */
    DCL   ON BIT(1) CONSTANT('1'B), /* SWITCH ON                     */
          OFF BIT(1) CONSTANT('0'B); /* SWITCH OFF                   */
    /* SVC NUMBERS                                                   */
    DCL   SIOSVC FIXED(15) CONSTANT(0), /* SVC NUMBER FOR AMDSASIO   */
          WATSVC FIXED(15) CONSTANT(1), /* SVC NUMBER FOR AMDSAWAT   */
          TAPSVC FIXED(15) CONSTANT(2), /* SVC NUMBER FOR AMDSATAP   */
          CONSVC FIXED(15) CONSTANT(3), /* SVC NUMBER FOR AMDSACON   */
          GTMSVC FIXED(15) CONSTANT(4), /* SVC NUMBER FOR AMDSAGTM   */
          FRMSVC FIXED(15) CONSTANT(5), /* SVC NUMBER FOR AMDSAFRM   */
          ASMSVC FIXED(15) CONSTANT(6), /* SVC NUMBER FOR AMDSAASM   */
          ERMSVC FIXED(15) CONSTANT(7), /* SVC NUMBER FOR AMDSAERM   */
          SINSVC FIXED(15) CONSTANT(8), /* SVC NUMBER FOR AMDSASIN   */
          UPDSVC FIXED(15) CONSTANT(9), /* SVC NUMBER FOR AMDSAUPD   */
          TERSVC FIXED(15) CONSTANT(10), /* SVC NUMBER FOR AMDSATER  */
          CSASVC FIXED(15) CONSTANT(11), /* SVC NUMBER FOR AMDSACSA  */
          AIDSVC FIXED(15) CONSTANT(12), /* SVC NUMBER FOR AMDSAAID  */
          AUDSVC FIXED(15) CONSTANT(13), /* SVC NUMBER FOR AMDSAAUD  */
          BUFSVC FIXED(15) CONSTANT(14), /* SVC NUMBER FOR AMDSABUF  */
          DERSVC FIXED(15) CONSTANT(15), /* SVC NUMBER FOR AMDSADER  */
          ARDSVC FIXED(15) CONSTANT(16), /* SVC NUMBER FOR AMDSAARD  */
          MDMSVC FIXED(15) CONSTANT(17), /* SVC NUMBER FOR AMDSAMDM  */
          RSMSVC FIXED(15) CONSTANT(18), /* SVC NUMBER FOR AMDSARSM  */
          AMRSVC FIXED(15) CONSTANT(19), /* SVC NUMBER FOR AMDSAAMR  */
          ERBSVC FIXED(15) CONSTANT(20), /* SVC NUMBER FOR AMDSAERB  */
          ERPSVC FIXED(15) CONSTANT(21), /* SVC NUMBER FOR AMDSAERP  */
          GTFSVC FIXED(15) CONSTANT(22), /* SVC NUMBER FOR AMDSAGTF  */
          ERISVC FIXED(15) CONSTANT(23), /* SVC NUMBER FOR AMDSAERI  */
          UCBSVC FIXED(15) CONSTANT(24), /* SVC NUMBER FOR AMDSAUCB  */
          VCKSVC FIXED(15) CONSTANT(25), /* SVC NUMBER FOR AMDSAVCK  */
          SPQSVC FIXED(15) CONSTANT(26), /* SVC NUMBER FOR AMDSASPQ  */
          IOBSVC FIXED(15) CONSTANT(27), /* SVC NUMBER FOR AMDSAIOB  */
          BINSVC FIXED(15) CONSTANT(28), /* SVC NUMBER FOR AMDSABIN  */
          INRSVC FIXED(15) CONSTANT(29), /* SVC NUMBER FOR AMDSAINR  */
          VRTSVC FIXED(15) CONSTANT(30); /* SVC NUMBER FOR AMDSAVRT  */
    /* MESSAGE IDS                                                   */
    DCL   AMD002I BIT(8) CONSTANT('02'X), /* REFERENCE FOR MESSAGE   */
          AMD004A BIT(8) CONSTANT('04'X), /* REFERENCE FOR MESSAGE   */
          AMD010I BIT(8) CONSTANT('0A'X), /* REFERENCE FOR MESSAGE   */
          AMD012D BIT(8) CONSTANT('0C'X), /* REFERENCE FOR MESSAGE   */
          AMD014A BIT(8) CONSTANT('0E'X), /* REFERENCE FOR MESSAGE   */
          AMD015I BIT(8) CONSTANT('0F'X), /* REFERENCE FOR MESSAGE   */
          AMD016I BIT(8) CONSTANT('10'X), /* REFERENCE FOR MESSAGE   */
          AMD017I BIT(8) CONSTANT('11'X), /* REFERENCE FOR MESSAGE   */
          AMD018I BIT(8) CONSTANT('12'X), /* REFERENCE FOR MESSAGE   */
          AMD019A BIT(8) CONSTANT('13'X), /* REFERENCE FOR MESSAGE   */
          AMD020A BIT(8) CONSTANT('14'X), /* REFERENCE FOR MESSAGE   */
          AMD022I BIT(8) CONSTANT('16'X), /* REFERENCE FOR MESSAGE   */
          AMD023I BIT(8) CONSTANT('17'X), /* REFERENCE FOR MESSAGE   */
          AMD025I BIT(8) CONSTANT('19'X), /* REFERENCE FOR MESSAGE   */
          AMD029D BIT(8) CONSTANT('1D'X), /* REFERENCE FOR MESSAGE   */
          AMD030I BIT(8) CONSTANT('1E'X), /* REFERENCE FOR MESSAGE   */
          AMD031I BIT(8) CONSTANT('1F'X), /* REFERENCE FOR MESSAGE   */
          AMD032I BIT(8) CONSTANT('20'X), /* REFERENCE FOR MESSAGE   */
          AMD033I BIT(8) CONSTANT('21'X), /* REFERENCE FOR MESSAGE   */
          AMD034I BIT(8) CONSTANT('22'X), /* REFERENCE FOR MESSAGE   */
          MSGCR FIXED(8) CONSTANT(0), /* COMMAND REJECT ID           */
          MSGIR FIXED(8) CONSTANT(1), /* INTV REQUIRED ID            */
          MSGBOC FIXED(8) CONSTANT(2), /* BUS OUT CK ID              */
          MSGEC FIXED(8) CONSTANT(3), /* EQUIPMENT CK ID             */
          MSGDC FIXED(8) CONSTANT(4), /* DATA CK ID                  */
          MSGOR FIXED(8) CONSTANT(5), /* OVERRUN ID                  */
          MSGTCC FIXED(8) CONSTANT(6), /* TCC ID                     */
          MSGSCK FIXED(8) CONSTANT(7), /* SEEK CK ID                 */
          MSGPE FIXED(8) CONSTANT(8), /* PERMANENT ERR ID            */
          MSGEOC FIXED(8) CONSTANT(10), /* END OF CYL ID             */
          MSGEDP FIXED(8) CONSTANT(11), /* ENV DATA ID               */
          MSGNRF FIXED(8) CONSTANT(12), /* NO RCD FOUND ID           */
          MSGFP FIXED(8) CONSTANT(13), /* FILE PROT ID               */
          MSGOI FIXED(8) CONSTANT(14), /* OPER INCOMP ID             */
          MSGMAM FIXED(8) CONSTANT(15), /* MISS ADDR ID              */
          MSGATTN FIXED(8) CONSTANT(16), /* ATTENTION ID             */
          MSGSTM FIXED(8) CONSTANT(17), /* STATUS MOD ID             */
          MSGCUE FIXED(8) CONSTANT(18), /* CONTROL UNIT END ID       */
          MSGBUSY FIXED(8) CONSTANT(19), /* BUSY ID                  */
          MSGUE FIXED(8) CONSTANT(20), /* UNIT EXCEPTION ID          */
          MSGPCI FIXED(8) CONSTANT(21), /* PCI ID                    */
          MSGIL FIXED(8) CONSTANT(22), /* INCORRECT LNG ID           */
          MSGPCK FIXED(8) CONSTANT(23), /* PROG CK ID                */
          MSGPTK FIXED(8) CONSTANT(24), /* PROT CK ID                */
          MSGCDC FIXED(8) CONSTANT(25), /* CHAN DATA CK ID           */
          MSGCCC FIXED(8) CONSTANT(26), /* CHAN CTL CK ID            */
          MSGICC FIXED(8) CONSTANT(27), /* ICC ID                    */
          MSGCC FIXED(8) CONSTANT(28), /* CHAINING CK ID             */
          MSGUNK FIXED(8) CONSTANT(29), /* UNKNOWN ERR ID            */
          MSGERS FIXED(8) CONSTANT(30), /* ERR ON SENSE ID           */
          MSGERR FIXED(8) CONSTANT(31), /* ERR IN ERR REC ID         */
          MSGBLF FIXED(8) CONSTANT(32), /* BUFFERED LOG FULL ID      */
          MSGITF FIXED(8) CONSTANT(33), /* INVALID TRACK FORMAT ID   */
          MSGLP FIXED(8) CONSTANT(34), /* LOAD POINT ID              */
          MSGDCC FIXED(8) CONSTANT(35), /* DATA CONV CK ID           */
          MSGNC FIXED(8) CONSTANT(36), /* NOT CAPABLE ID             */
          MSGPEID FIXED(8) CONSTANT(37), /* PEID BURST CK ID         */
          MSGDI    FIXED(8) CONSTANT(38), /* DISABLED INTERFACE @H1A*/
          MSGWI    FIXED(8) CONSTANT(39), /* WRITE INHIBITED    @H1A*/
          MSGBUN   FIXED(8) CONSTANT(40), /* BASE DEVICE UNAVAILABLE
                             @H1A*/
          MSGMLE   FIXED(8) CONSTANT(41), /* MICROCODE LOGIC ERROR
                             @H1A*/
          MSGSSEC  FIXED(8) CONSTANT(42), /* SUBSYSTEM STORAGE
                      EQUIPMENT CHECK @H1A*/
          MSGSSATC FIXED(8) CONSTANT(43), /* SUBSYSTEM STORAGE
                     AVAILABILITY THRESHOLD CROSSED @H1A*/
          MSGSSUN  FIXED(8) CONSTANT(44), /* SUBSYSTEM STORAGE
                     UNUSABLE @H1A*/
          MSGSSMI  FIXED(8) CONSTANT(45), /* SUBSYSTEM STORAGE
                     MUST BE INITIALIZED @H1A*/
          MSGTIDO  FIXED(8) CONSTANT(46), /* TIMEOUT ON INTERNAL
                     DASD OPERATION @H1A*/
          MSGTFP   FIXED(8) CONSTANT(47); /* TRACK FORMAT NOT SUPPORTED
                     FOR PAGING OR NO RECORD FOUND @H1A*/
    /* CONTROL BLOCK IDS FOR VALIDITY CHECKING                       */
    DCL   VSPCTID PTR(8) CONSTANT(1), /* SPCT ID             @Z40WI3F*/
          VASCBID PTR(8) CONSTANT(2), /* ASCB ID                     */
          VASXBID PTR(8) CONSTANT(3), /* ASXB ID                     */
          VASVTID PTR(8) CONSTANT(4), /* ASVT ID                     */
          VCVTID PTR(8) CONSTANT(5), /* CVT ID                       */
          VEDBID PTR(8) CONSTANT(6), /* EDB ID                       */
          VDQEID PTR(8) CONSTANT(7), /* DQE ID                       */
          VBCBID PTR(8) CONSTANT(8), /* GTFBCB ID                    */
          VMCCEID PTR(8) CONSTANT(9), /* MCCE ID                     */
          VMCQEID PTR(8) CONSTANT(10), /* MCQE ID                    */
          VSPQEID PTR(8) CONSTANT(11), /* SPQE ID                    */
          VPARTID PTR(8) CONSTANT(12), /* PART ID            @Z40WI3F*/
          VSGTID PTR(8) CONSTANT(13), /* SEGMENT TABLE ID            */
          VRSMHID PTR(8) CONSTANT(14), /* RSM HEADER ID              */
          VLPMBID PTR(8) CONSTANT(15), /* LPMB ID                    */
          VUCBID PTR(8) CONSTANT(16), /* UCB ID                      */
          VASMVTID PTR(8) CONSTANT(17), /* ASMVT ID                  */
          VTCBID PTR(8) CONSTANT(18), /* TCB ID                      */
          VSARTID PTR(8) CONSTANT(19), /* SART ID            @Z40WI3F*/
          VPVTID PTR(8) CONSTANT(20); /* PVT ID                      */
    /* SUPPORTED DEVICE TYPE IDENTIFIERS.  THESE CONSTANTS ARE THE
       SAME AS THE DEVICE CODE VALUES FOR UCB FIELD UCBTBYT4         */
    DCL   DT2314 BIT(8) CONSTANT('08'X), /* 2314                     */
          DT3330 BIT(8) CONSTANT('09'X), /* 3330                     */
          DT33301 BIT(8) CONSTANT('0D'X), /* 3330-1                  */
          DT23051 BIT(8) CONSTANT('06'X), /* 2305-1                  */
          DT23052 BIT(8) CONSTANT('07'X), /* 2305-2                  */
          DT3340 BIT(8) CONSTANT('0A'X), /* 3340                     */
          DT3350 BIT(8) CONSTANT('0B'X), /* 3350             @Z30RSTA*/
          DT3380 BIT(8) CONSTANT('0E'X), /* 3380             @G81BP1W*/
          DT3375 BIT(8) CONSTANT('0C'X); /* 3375             @G87UP1W*/
./ ADD NAME=ANYMOD
         MACRO
&NAME    ANYMOD &LOAD=,&CALL=,&DELETE=,&LIST=,&C=8
*/***********************************************************@ZM00952*/
*/*           ANYMOD                                         @ZM00952*/
*/*OLTEP VS2                                                 @ZM00952*/
*/*                                                          @ZM00952*/
&NAME    BRING LOAD=&LOAD,CALL=&CALL,DELETE=&DELETE,LIST=&LIST,C=&C
         MEND
./ ADD NAME=AQCTL
         MACRO
         AQCTL
         SVC   102 .                    TCAM CROSS-PARTITION
*                                       COMMUNICATIONS ROUTINE
         MEND
./ ADD NAME=ASCBCHAP
* /* MACCOMP VS2 MVS/SYSTEM EXTENSIONS SC1CL/D16/POK         @G50IPXQ*/
* /* MACSTAT VS2 MVS/SYSTEM EXTENSIONS VS02296,G50DPXQ       @G50IPXQ*/
         MACRO
&NAME    ASCBCHAP  &POSIT,&POSIT2
* /* MACDATE = 03/07/80                                      @G81LPXU*/
.*   COPYRIGHT =                                               @G50IPXQ
.*       5740-XYN COPYRIGHT IBM CORP 1977,1980;                @G81LPXU
.*       LICENSED MATERIAL-PROGRAM; PROPERTY OF IBM;           @G50IPXQ
.*       REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER           @G50IPXQ
.*       G120-2083.                                            @G50IPXQ
.*
.*    STATUS = OS/VS2 JBB1126                                  @G81LPXU
         AIF   ('&POSIT' EQ '').ERR1
         AIF   ('&POSIT2' NE '').ERR2
         AIF   ( ('&POSIT' NE 'MOVE') AND ('&POSIT' NE 'ADD')          *
               AND ('&POSIT' NE 'DELETE')                              *
               AND ('&POSIT' NE 'EXMOVE') ).ERR                @G50IPXQ
         AIF   ('&POSIT' NE 'EXMOVE').X0                       @G50IPXQ
&NAME    LA    0,3(0,0)                EXMOVE OPTION ENT CODE  @G50IPXQ
         AGO   .X3                                             @G50IPXQ
.X0      ANOP                                                  @G50IPXQ
         AIF   ('&POSIT' NE 'MOVE').X1
&NAME    SR    0,0                     ENTRY CODE FOR MOVE OPTION
         AGO   .X3
.X1      ANOP
         AIF   ('&POSIT' NE 'ADD').X2
&NAME    LA    0,1(0,0)                ENTRY CODE FOR ADD OPTIO@YM02296
         AGO   .X3
.X2      ANOP
&NAME    LA    0,2(0,0)                CODE FOR DELETE OPTION  @YM02296
.X3      ANOP
         L     15,CVTPTR(0,0)          ADDRESS OF CVT          @YM02296
         L     15,CVTVEAC0-CVTMAP(,15) ADDRESS OF ASCBCHAP ROUTINE
         BALR  14,15                   INVOKE ASCBCHAP
         MEXIT
.ERR     IHBERMAC 1001,,&POSIT         ISSUE MNOTE, INVALID OPERAND
         MEXIT
.ERR1    IHBERMAC 1006,POSITIONAL      ISSUE MNOTE, MISSING OPERAND
         MEXIT
.ERR2    IHBERMAC 1001,,&POSIT2        ISSUE MNOTE, MORE THAN ONE OPRND
         MEND
./ ADD NAME=ASMADATA
         MACRO
         ASMADATA &PRINT=NOGEN,&JID=NO,&OPT=NO,&ESD=NO,&SOURCE=NO,     X
               &SRCERR=NO,&DCDS=NO,&MACH=NO,&SYM=NO,&XREF=NO,          X
               &USING=NO,&RLD=NO,&MXREF=NO,&STATS=NO,&MXREFX=NO,       X
               &OUTPUT=NO,&USER=NO,&AID=NO,&COMPUNIT=NO,&DCDSX=NO,     X
               &RXREF=NO
.**************************************************************
.*   Licensed Materials - Property of IBM                     *
.*                                                            *
.*   5696-234                                                 *
.*                                                            *
.*   (c) Copyright IBM Corp. 1975, 1998. All Rights Reserved. *
.*                                                            *
.*   US Government Users Restricted Rights - Use,             *
.*   duplication or disclosure restricted by GSA ADP          *
.*   Schedule Contract with IBM Corp.                         *
.*                                                            *
.**************************************************************
.***START OF SPECIFICATIONS  ******************************************
.*                                                                    *
.*MACRO NAME: ASMADATA                                                *
.*                                                                    *
.*DESCRIPTIVE NAME: Associated Data file mapping DSECT                *
.*                                                                    *
.*                                                                    *
.*FUNCTION: This macro produces a DSECT to map the associated data    *
.*          file records depending on the parameters passed to this   *
.*          macro.                                                    *
.*          Associated data file records are written to SYSADATA      *
.*          in MVS and CMS, and to SYSADAT in VSE.                    *
.*                                                                    *
.*NOTES:                                                              *
.*                                                                    *
.*  DEPENDENCIES: None                                                *
.*                                                                    *
.*  RESTRICTIONS: NONE                                                *
.*                                                                    *
.*  REGISTER CONVENTIONS: N/A                                         *
.*                                                                    *
.*  PATCH LABEL: NONE                                                 *
.*                                                                    *
.*MODULE TYPE: MACRO                                                  *
.*                                                                    *
.*  PROCESSOR: ASSEMBLER                                              *
.*                                                                    *
.*  MODULE SIZE: N/A                                                  *
.*                                                                    *
.*  ATTRIBUTES: N/A                                                   *
.*                                                                    *
.*ENTRY POINT: N/A                                                    *
.*                                                                    *
.*  PURPOSE: SEE FUNCTION                                             *
.*                                                                    *
.*  LINKAGE: N/A                                                      *
.*                                                                    *
.*  INPUT:                                                            *
.*                                                                    *
.*    REGISTERS: NONE                                                 *
.*                                                                    *
.*    OTHER:                                                          *
.*       PARAMETERS RECEIVED = PRINT, JID, OPT, ESD, SOURCE, SRCERR,  *
.*                             DCDS, MACH, SYM, XREF, USING, RLD,     *
.*                             MXREF, STATS, MXREFX, OUTPUT, USER,    *
.*                             AID, COMPUNIT, DCDSX                   *
.*       HOW PASSED: OPTIONAL POSITIONAL KEYWORD                      *
.*       PRINT = NOGEN will suppress the listing                      *
.*                 GEN will not suppress the listing                  *
.*       JID   = YES   will produce the Job Identificatio DSECT       *
.*               NO    will not produce the JID DSECT                 *
.*       OPT   = YES   will produce the Options DSECT                 *
.*               NO    will not produce Options DSECT                 *
.*       ESD   = YES   will produce the ESD DSECT                     *
.*               NO    will not produce Options DSECT                 *
.*       SOURCE= YES   will produce the SOURCE DSECT                  *
.*               NO    will not produce the SOURCE DSECT              *
.*       SRCERR= YES   will produce the SOURCE error DSECT            *
.*               NO    will not produce the SOURCE error DSECT        *
.*       DCDS  = YES   will produce the DC/DS DSECT                   *
.*               NO    will not produce the DC/DS DSECT               *
.*       MACH  = YES   will produce the Machine Instruction DSECT     *
.*               NO    will not produce the Mach Inst DSECT           *
.*       SYM   = YES   will produce the SYMBOL DSECT                  *
.*               NO    will not produce the SYMBOL DSECT              *
.*       XREF  = YES   will produce the CROSS REFERENCE DSECT         *
.*               NO    will not produce the CROSS REFERENCE DSECT     *
.*       USING = YES   will produce the USING DSECT                   *
.*               NO    will not produce the USING DSECT               *
.*       RLD   = YES   will produce the RLD DSECT                     *
.*               NO    will not produce the RLD DSECT                 *
.*       MXREF = YES   will produce the MACRO SOURCE SUMMARY  DSECT   *
.*               NO    will not produce the MACRO SOURCE SUM DSECT    *
.*       STATS = YES   will produce the STATISTICS DSECT              *
.*               NO    will not produce STATISTICS DSECT              *
.*       MXREFX= YES   will produce the MACRO CROSS REFERENCE DSECT   *
.*               NO    will not produce the MACRO CROSS REF  DSECT    *
.*       OUTPUT= YES   will produce the OUTPUT FILE DSECT             *
.*               NO    will not produce the OUTPUT FILE DSECT         *
.*       USER  = YES   will produce the USER DATA RECORD DSECT        *
.*                     (the ADATA instruction produces these records) *
.*               NO    will not produce the USER DATA RECORD DSECT    *
.*       AID   = YES   will produce the ADATA ID DSECT                *
.*               NO    will not produce the ADATA ID DSECT            *
.*     COMPUNIT= YES   will produce the ADATA COMPILATION UNIT DSECT  *
.*               NO    will not produce the ADATA COMPILATION UNIT DS *
.*       DCDSX = YES   will produce the DC Extension DSECT            *
.*               NO    will not produce the DC Extension DSECT        *
.*       RXREF = YES   will produce the Register Cross Reference DSECT*
.*               NO    will not produce the Register cross ref DSECT  *
.*                                                                    *
.*  OUTPUT:                                                           *
.*                                                                    *
.*    REGISTERS: NONE                                                 *
.*                                                                    *
.*    OTHER: DSECT                                                    *
.*                                                                    *
.*EXTERNAL REFERENCES:                                                *
.*                                                                    *
.*  PROCEDURES INVOKED: NONE                                          *
.*                                                                    *
.*  CONTROL BLOCKS:                                                   *
.*                                                                    *
.*    SYSTEM CONTROL BLOCKS: NONE                                     *
.*                                                                    *
.*INTERNAL TABLES: NONE                                               *
.*                                                                    *
.*MACROS ISSUED:                                                      *
.*                                                                    *
.*  SYSTEM MACROS: NONE                                               *
.*                                                                    *
.*  PRODUCT MACROS: NONE                                              *
.*                                                                    *
.*MESSAGES ISSUED: NONE                                               *
.*                                                                    *
.*                                                                    *
.*CHANGE ACTIVITY:                                                    *
.*  Flag Reason  RLSE   Date     Origin    Comments                   *
.*  $L1= 3.12    1.3.0  11FEB98  ASTLSC  : Release 3 BFP DC extension *
.*  $L1= 3.6     1.3.0  25FEB98  ASTLMNA : Release 3 External Func.   *
.*  $L1= 3.4     1.3.0  16MAR98  ASTLSC  : Option changes             *
.*  $L1= 3.20    1.3.0  02JUN98  ASTLMNA : AINSERT changes            *
.*  $L1= 3.8     1.3.0  05JUN98  ASTLSC  : ADATA changes              *
.*  $L1= 3.4     1.3.0  08JUN98  ASTLSC  : Register Cross Reference   *
.*  $M1= 3.19    1.3.0  22JUN98  ASTLJRD : New USINGs                 *
.*  $P1= KH37005 1.3.0  21JUL98  ASTLMNA : Add COMPLEX flag to x'0042'*
.*  $P1= KH30063 1.3.0  28JUL98  ASTLJRD : Typo corrections to x'000a'*
.*                                                             @PQ22004
.*                                                             @PQ22004
.* Reason  Rlse    Date    Origin   Comments                   @PQ22004
.* ------- ------- ------- -------- ---------------------------@PQ22004
.* PQ22004 HMQ4130 21Dec98 ASTLSC   New option FLAG(PUSH)      @PQ22004
.*                                                                    *
.***END OF SPECIFICATIONS *********************************************
         PUSH  PRINT                    Push the PRINT status
         PRINT &PRINT                   and set it
ASMADATA DSECT
ADATA_LEN           DS    HL2     Variable length indicator
                    DS    HL2     Reserved
ADATA_VERSION       DS    FL1     Product version number
ADATA_VERASM        EQU   16  '   High Level Assembler R1&2
ADATA_RECTYPE       DS    XL2     The record type                      x
                                  (See labels ADATA_RECnnn following)
ADATA_LEVEL         DS    FL1     The ASMADATA level
ADATA_L1            EQU   1        - Associated DATA Level 1
ADATA_L2            EQU   2        - Associated DATA Level 2
ADATA_L3            EQU   3        - Associated DATA Level 3       @l1a
ADATA_LVL           EQU   3        - Current level                 @l1a
ADATA_CONT          DS    XL1     Continuation flag
ADATA_NOTCONT       EQU   X'00'    - This record not continued
ADATA_ISCONT        EQU   X'01'    - Continued on Next record
ADATA_EDITION       DS    FL1     Edition Number
ADATA_ED0           EQU   0        - Edition 0
ADATA_ED            EQU   0        - Current Edition               @l1a
                    DS    CL4     Reserved                         @l1c
ADATA_DATA_LEN      DS    HL2     Associated data field length     @l1a
ADATA_ORG           DS    0H      The length of the  record
ADATA_EQU_LEN       EQU   *-ASMADATA
*
         AIF ('&JID' EQ 'NO').OPT
         AIF ('&JID' EQ 'YES').JID
         MNOTE 4,'Invalid JID parameter. ''YES'' assumed'
.JID     ANOP
ADATA_RECJID        EQU   X'0000'  - Job Identification
ADJID_DATE            DS    CL8     Date ASMADATA record written
ADJID_TIME            DS    CL4     Time the ASMADATA record written
ADJID_PROD_NUMBER     DS    CL8     Product number
ADJID_PROD_VERSION    DS    CL8     Version Number of the product
ADJID_PTF             DS    CL8     PTF level number of the product
ADJID_SYSTEM_ID       DS    CL24    System Identification
ADJID_JOBNAME         DS    CL8     Jobname producing ASMADATA file
ADJID_STEPNAME        DS    CL8     MVS stepname
ADJID_PROCSTEP        DS    CL8     MVS procedure stepname
ADJID_NUM_INPUT_FILES DS    HL2     The number of input files
* The following 7 fields are repeated - for the count contained above
ADJID_INP_FILENUM     DS    HL2     The Input file number
ADJID_INP_FILE_LEN    DS    HL2     The Length of the input file
ADJID_INP_VOL_LEN     DS    HL2     The Length of the volume name
ADJID_INP_MEM_LEN     DS    HL2     The Length of the member name
ADJID_INPUT_FILENAME  DS    0CL256  Input file for the assembly
ADJID_INPUT_VOLNAME   DS    0CL256  Input volume name
ADJID_INPUT_MEMNAME   DS    0CL256  Input member name
ADJID_EQU_LEN         EQU   ADJID_INP_FILE_LEN-ASMADATA
*
.OPT     ANOP
         AIF ('&OPT' EQ 'NO').ESD
         AIF ('&OPT' EQ 'YES').OPT1
         MNOTE 4,'Invalid OPT parameter. ''YES'' assumed'
.OPT1    ANOP
*
         ORG   ADATA_ORG
ADATA_RECOPT        EQU   X'0010'  - Options
ADOPT_BYTE1        DS  XL1           Option byte 1
*                             (see values below)
ADOPT_ALIGN        EQU   X'80'       Align option set
ADOPT_ASA          EQU   X'40'       ASA option set
ADOPT_BATCH        EQU   X'20'       Batch option set
ADOPT_COMPAT       EQU   X'10'       Compat set
ADOPT_COMPATC      EQU   X'08'       Compat(CASE) set
ADOPT_COMPATS      EQU   X'04'       Compat(SYSLST) set
ADOPT_DBCS         EQU   X'02'       DBCS set
ADOPT_DECK         EQU   X'01'       DECK set
*
ADOPT_BYTE2        DS  XL1           Option byte 2
*                             (see values below)
ADOPT_DXREF        EQU   X'80'       Dxref option set
ADOPT_ESD          EQU   X'40'       ESD option set
ADOPT_FOLD         EQU   X'20'       FOLD option set
ADOPT_LIBMAC       EQU   X'10'       LIBMAC option set
ADOPT_LIST         EQU   X'08'       LIST option set
ADOPT_ADATA        EQU   X'04'       ADATA option set
ADOPT_MXREF        EQU   X'02'       MXREF option set
ADOPT_OBJECT       EQU   X'01'       OBJECT option set
*
ADOPT_BYTE3        DS  XL1           Option byte 3
*                             (see values below)
ADOPT_PCONT        EQU   X'80'       Pcontrol option set
ADOPT_PCONTON      EQU   X'40'       Pcontrol(on) option set
ADOPT_PCONTDATA    EQU   X'20'       Pcontrol(data) option set
ADOPT_PCONTGEN     EQU   X'10'       Pcontrol(gen) option set
ADOPT_PCONTUH      EQU   X'08'       Pcontrol(uhead) option set
ADOPT_PCONTMS      EQU   X'04'       Pcontrol(msource) option set
ADOPT_PCONTMC      EQU   X'02'       Pcontrol(mcall) option set
ADOPT_COMPATM      EQU   X'01'       COMPAT(MACROCASE)
*
ADOPT_BYTE4        DS  XL1           Option byte 4
*                             (see values below)
ADOPT_RENT         EQU   X'80'       RENT option set
ADOPT_RLD          EQU   X'40'       RLD option set
ADOPT_TERM         EQU   X'20'       TERM option set
ADOPT_TEST         EQU   X'10'       TEST option set
ADOPT_XREF         EQU   X'08'       XREF option set
ADOPT_XREFF        EQU   X'04'       XREF(FULL) option set
ADOPT_SUBLIB       EQU   X'02'       SUBLIB(DF) option set
ADOPT_XREFS        EQU   X'01'       XREF(SHORT) option set
*
ADOPT_BYTE5        DS  XL1           Option byte 5
*                             (see values below)
ADOPT_EXIT         EQU   X'80'       EXIT option set
ADOPT_INEXIT       EQU   X'40'       INEXIT option set
ADOPT_LIBEXIT      EQU   X'20'       LIBEXIT option set
ADOPT_OBJEXIT      EQU   X'10'       OBJEXIT option set
ADOPT_PRTEXIT      EQU   X'08'       PRTEXIT option set
ADOPT_ADEXIT       EQU   X'04'       ADEXIT option set
ADOPT_TRMEXIT      EQU   X'02'       TRMEXIT option set
*
ADOPT_BYTE6        DS  XL1           Option byte 6
*                             (see values below)
ADOPT_USINGW       EQU   X'80'       USING(WARN) option set
ADOPT_USINGL       EQU   X'40'       USING(LIMIT) option set
ADOPT_USINGM       EQU   X'20'       USING(MAP) option set
ADOPT_FLAG_ALIGN   EQU   X'10'       FLAG(ALIGN) option set
ADOPT_FLAG_CONT    EQU   X'08'       FLAG(CONT) option set
ADOPT_FLAG_RECORD  EQU   X'04'       FLAG(RECORD) option set
ADOPT_XOBJECT      EQU   X'02'       XOBJECT option set
ADOPT_XOBJECT_ADAT EQU   X'01'       XOBJECT(ADATA) option set
*
ADOPT_BYTE7        DS  XL1           Option byte 7
*                             (see values below)
ADOPT_PESTOP       EQU   X'80'       PESTOP option set
ADOPT_RA2          EQU   X'40'       RA2 option set
ADOPT_FLAG_SUBSTR  EQU   X'20'       FLAG(SUBSTR) Option Set
ADOPT_TRANSLATE    EQU   X'10'       TRANSLATE option set
ADOPT_LIST_121     EQU   X'04'       LIST(121) option set
ADOPT_LIST_133     EQU   X'08'       LIST(133) option set
ADOPT_LIST_MAX     EQU   X'0C'       LIST(MAX) option set
ADOPT_MXREF_FULL   EQU   X'01'       MXREF(FULL) option set
ADOPT_MXREF_SOURCE EQU   X'02'       MXREF(SOURCE) option set
ADOPT_MXREF_XREF   EQU   X'03'       MXREF(XREF) option set
*
ADOPT_BYTE8        DS  XL1           Option byte 8
*                             (see values below)
ADOPT_PROFILE      EQU   X'80'       PROFILE option set
ADOPT_PCONT_OFF    EQU   X'40'       PCONTROL(OFF) option set
ADOPT_PCONT_NODATA EQU   X'20'       PCONTROL(NOADATA) option set
ADOPT_PCONT_NOGEN  EQU   X'10'       PCONTROL(NOGEN) option set
ADOPT_PCONT_NOUH   EQU   X'08'       PCONTROL(NOUHEAD) option set
ADOPT_PCONT_NOMS   EQU   X'04'       PCONTROL(NOMSOURCE) option set
ADOPT_PCONT_NOMC   EQU   X'02'       PCONTROL(NOMCALL) option set
ADOPT_XREF_UNREFS  EQU   X'01'       XREF(UNREFS) option set
*
ADWARN_VALUE       DS  FL1           Value from USING(WARN(n))
ADOPT_FLAG_VALUE   DS  FL1           Value from FLAG(n)
*
ADOPT_BYTE9        DS  XL1           Option byte 9                 @l1a
*                             (see values below)
ADOPT_RXREF        EQU   X'80'       RXREF option set              @l1a
ADOPT_FLAG_IMPLEN  EQU   X'40'       FLAG(IMPLEN) option set       @l1a
ADOPT_FLAG_PAGE0   EQU   X'20'       FLAG(PAGE0) option set        @l1a
ADOPT_INFO         EQU   X'10'       INFO option set               @l1a
ADOPT_COMPATL      EQU   X'08'       COMPAT(LITTYPE) option set    @l1a
ADOPT_FLAG_PUSH    EQU   X'04'       FLAG(PUSH) option set     @PQ22004
*                  EQU   X'02'       Unused                        @l1a
*                  EQU   X'01'       Unused                        @l1a
*
                   DS  CL1           Reserved                      @l1c
ADOPT_TRANS_SUFFIX DS  CL2           Value from TRANSLATE(xx)
ADOPT_PROFMEM      DS  CL8           Value from PROFILE(member)
ADLIMIT_VALUE      DS  HL2           Value from USING(LIMIT(nnnn))
ADOPT_LAN          DS  CL3           Language option in effect
ADOPT_OPTTAB       DS  CL3           OPT table specified
ADOPT_LINCOUNT     DS  HL2           Linecount option
ADINEXIT_PROG_LEN  DS  HL2           Length of Inexit program name
ADLIBEXIT_PROG_LEN DS  HL2           Length of Libexit program name
ADOBJEXIT_PROG_LEN DS  HL2           Length of Objexit program name
ADPRTEXIT_PROG_LEN DS  HL2           Length of Prtexit program name
ADADEXIT_PROG_LEN  DS  HL2           Length of Adexit program name
ADTRMEXIT_PROG_LEN DS  HL2           Length of Trmexit program nam
ADINEXIT_STR_LEN   DS  HL2           Length of string supplied to exit
ADLIBEXIT_STR_LEN  DS  HL2           Length of string supplied to exit
ADOBJEXIT_STR_LEN  DS  HL2           Length of string supplied to exit
ADPRTEXIT_STR_LEN  DS  HL2           Length of string supplied to exit
ADADEXIT_STR_LEN   DS  HL2           Length of string supplied to exit
ADTRMEXIT_STR_LEN  DS  HL2           Length of string supplied to exit
ADOPT_SYSPARM_LEN  DS  HL2           SYSPARM length
ADOPT_PARM_LEN     DS  HL2           PARM Length
                   DS  CL8           Reserved
ADINEXIT_PROG      DS  0CL8          Inexit program name
ADLIBEXIT_PROG     DS  0CL8          Library exit program name
ADOBJEXIT_PROG     DS  0CL8          Object exit program name
ADPRTEXIT_PROG     DS  0CL8          Print exit program name
ADADEXIT_PROG      DS  0CL8          ADATA exit program name
ADTRMEXIT_PROG     DS  0CL8          TERM exit program name
ADINEXIT_STR       DS  0CL64         Field containing string
ADLIBEXIT_STR      DS  0CL64         Field containing string
ADOBJEXIT_STR      DS  0CL64         Field containing string
ADPRTEXIT_STR      DS  0CL64         Field containing string
ADADEXIT_STR       DS  0CL64         Field containing string
ADTRMEXIT_STR      DS  0CL64         Field containing string
ADOPT_SYSPARM      DS  0CL255        Field containing SYSPARM string
ADOPT_PARMS        DS  0CL255        Field containing PARM string
ADOPT_EQU_LEN      EQU ADINEXIT_PROG-ASMADATA  Length of part of record
ADOPT_EQU_LEN_1    EQU ADOPT_SYSPARM-ADOBJEXIT_STR_LEN
*
.*
.ESD     ANOP
         AIF ('&ESD' EQ 'NO').SOURCE
         AIF ('&ESD' EQ 'YES').ESD1
         MNOTE 4,'Invalid ESD parameter. ''YES'' assumed'
.ESD1    ANOP
*
         ORG   ADATA_ORG
ADATA_RECESD        EQU   X'0020'  - External Symbol Dictionary
ADESD_TYPE        DS  XL1           The section type of the ESD record
ADESD_FLAGS       DS  XL1           The ESD flag byte
                  DS  HL2           Reserved
ADESD_ESDID       DS  FL4           The ESDID
ADESD_ADDR        DS  AL4           The section address
ADESD_LEN         DS  FL4           The length of the section
ADESD_LDID        DS  FL4           The ESDID of the CSECT in which the
*                                   entry point was defined
                  DS  CL8           Reserved
ADESD_NAME_LEN    DS  HL2           The section name length
ADESD_ALIAS_LEN   DS  HL2           The ALIAS name length
ADESD_NAME        DS  0CL63         The section name
ADESD_ALIAS       DS  0CL63         The Alias name
ADESD_EQU_LEN     EQU *-ASMADATA    The length of the ESD record
*
.*
.SOURCE  ANOP
         AIF ('&SOURCE' EQ 'NO').SRCERR
         AIF ('&SOURCE' EQ 'YES').SOURCE1
         MNOTE 4,'Invalid SOURCE Parameter. ''YES'' assumed'
.SOURCE1 ANOP
         ORG   ADATA_ORG
ADATA_RECSOURCE     EQU   X'0030'  - Source
ADSRC_STMT        DS  FL4           The statement number
ADSRC_ESDID       DS  FL4           The ESD ID for the source record
ADSRC_INPUT_REC   DS  FL4           Input source record number
ADSRC_PARENT_REC  DS  FL4           Input source parent record numb
ADSRC_INPUT_NUM   DS  HL2           Input relative file number
ADSRC_PARENT_NUM  DS  HL2           Parent relative file number
ADSRC_LOCTR       DS  FL4           Source record location counter
ADSRC_REC_ORIGIN  DS  XL1           Where the source line comes from
ADSRC_REC_PINP    EQU X'01'         Source line from Primary Input
ADSRC_REC_MACGEN  EQU X'02'         Source line from Macro generation
ADSRC_REC_MAC     EQU X'03'         Source line from macro / copy code
*                 EQU X'04'         Reserved                      1@L1D
ADSRC_REC_AINSERT EQU X'05'         Source line from AINSERT buffr @L1A
ADSRC_PARENT_ORIGIN DS XL1          Where the parent line comes from   x
                                    (Values as above)
ADSRC_PRINT_GEN   EQU *,X'80'        Print Gen                     @l1a
ADSRC_PRINT_DATA  EQU *,X'40'        Print Data                    @l1a
ADSRC_PRINT_ON    EQU *,X'20'        Print On                      @l1a
ADSRC_PRINT_NOMSOURCE EQU *,X'10'    Print Nomsource (0=Print Msource)
ADSRC_PRINT_UHEAD EQU *,X'08'        Print Uhead                   @l1a
ADSRC_PRINT_MCALL EQU *,X'04'        Print Mcall                   @l1a
ADSRC_PRINT_FLAGS DS  XL1           Current print status flags     @l1a
                  DS  XL2           Reserved                       @l1c
ADSRC_REC_TYPE    DS  XL1           Source record type
ADSRC_REC_COMM    EQU X'01'         Comment
ADSRC_REC_MACH    EQU X'02'         Machine instruction
ADSRC_REC_ASM     EQU X'03'         Assembler instruction
ADSRC_REC_MACR    EQU X'04'         Macro instruction
ADSRC_REC_MACD    EQU X'05'         Macro definition
ADSRC_ASM_OPCODE  DS  XL1           The assembler opcode
ADSRC_FLAGS       DS  XL1           Flag bytes for address fields
ADSRC_FLAGA1      EQU X'80'         Address 1 present
ADSRC_FLAGA2      EQU X'40'         Address 2 present
ADSRC_ADDRESS1    DS  FL4           Address 1 field from assembly
ADSRC_ADDRESS2    DS  FL4           Address 2 field from assembly
ADSRC_NAME_OFFSET DS  HL2           Offset of name entry in statement
*                                   field
ADSRC_NAME_LEN    DS  HL2           Where the source line comes from
ADSRC_OP_ENTRY    DS  HL2           Offset of operation
ADSRC_OP_LEN      DS  HL2           Length of operation
ADSRC_OPND_ENTRY  DS  HL2           Offset of operand entry
ADSRC_OPND_LEN    DS  HL2           Length of operand entry
ADSRC_REM_ENTRY   DS  HL2           Offset of remarks entry
ADSRC_REM_LEN     DS  HL2           Length of Remarks entry
ADSRC_CONT_ENTRY  DS  HL2           Offset of Continuation indicator
                  DS  FL4           Reserved
ADSRC_COPY_LEN    DS  HL2           Length of macro/copy member name
ADSRC_PARENT_LEN  DS  HL2           Length of parent macro/copy mem
ADSRC_REC_LEN     DS  HL2           Length of source record
                  DS  CL8           Reserved
ADSRC_COPY_NAME   DS  0CL256        The macro/copy name
ADSRC_PARENT_NAME DS  0CL256        The parent macro/copy name
ADSRC_RECORD      DS  0CL80         The actual source record
ADSRC_EQU_LEN     EQU *-ASMADATA    Length of the rec - macro and srce
*
.*
.SRCERR  ANOP
         AIF ('&SRCERR' EQ 'NO').DCDS
         AIF ('&SRCERR' EQ 'YES').SRCERR1
         MNOTE 4,'Invalid SRCERR Parameter. ''YES'' assumed'
.SRCERR1 ANOP
*
         ORG   ADATA_ORG
ADATA_RECSRCERR     EQU   X'0032'  - Source Error
ADSRCERR_NUM      DS  FL4           Statement number in error
ADSRCERR_ID       DS  CL16          Error message identifier
ADSRCERR_SEV      DS  HL2           Error severity
ADSRCERR_MSG_LEN  DS  HL2           The error message length
                  DS  CL8           Reserved
ADSRCERR_MSG      DS  0CL80         The error message (variable length)
ADSRCERR_EQU_LEN  EQU ADSRCERR_MSG-ASMADATA    length of error record
.*
.DCDS    ANOP
         AIF ('&DCDS' EQ 'NO').DCDSX
         AIF ('&DCDS' EQ 'YES').DCDS1
         MNOTE 4,'Invalid DCDS Parameter. ''YES'' assumed'
.DCDS1   ANOP
         ORG   ADATA_ORG
ADATA_RECDCDS       EQU   X'0034'  - DC/DS
ADDCDS_ESDID      DS  FL4           ESDID for the source record
ADDCDS_NUMOPS     DS  HL2           Number of operands
ADDCDS_TYPE_FLAG  DS  XL1           Type flag
ADDCDS_TYPE_DC    EQU X'80'         Flag for DC
ADDCDS_TYPE_CXD   EQU X'40'         Flag for DXD within DC
ADDCDS_TYPE_CCW   EQU X'20'         Flag for CCW
ADDCDS_TEXT_REC   EQU X'10'         X'0035' Text record exits
                  DS  CL5           Reserved
ADDCDS_STMT       DS  FL4           Statement Number of source
ADDCDS_LOC_CTR    DS  FL4           Location counter
ADDCDS_DUP        DS  FL4           The duplication factor
ADDCDS_BIT_OFFSET DS  XL1           Offset within byte for B constant
ADDCDS_TYP_ATTR   DS  XL1           The type attribute
ADDCDS_NUM_NOM    DS  HL2           Number of nominal values
ADDCDS_TYPE_EXT   DS  CL1           Type extension                 @l1a
                  DS  CL7           Reserved                       @l1c
ADDCDS_BYTE_LEN   DS  HL2           Number of bytes in the nominal valu
ADDCDS_BIT_LEN    DS  HL2           Number of Bits if B type constant
ADDCDS_VALUE      DS  0X            The nominal value
ADDCDS_EQU_LEN    EQU *-ASMADATA    Length of record
.*
.*                                                               10
.DCDSX   ANOP
         AIF ('&DCDSX' EQ 'NO').MACH
         AIF ('&DCDSX' EQ 'YES').DCDSX1
         MNOTE 4,'Invalid DCDSX Parameter. ''YES'' assumed'
.DCDSX1  ANOP
         ORG   ADATA_ORG
ADATA_RECDCDSX      EQU   X'0035'  - DC/DS Extension
ADDCDSX_ESDID     DS  FL4           ESDID for the source record
ADDCDSX_LOCTR     DS  FL4           Location Count for instruction
ADDCDSX_STMT      DS  FL4           Statement Number of source
                  DS  FL8           Reserved
ADDCDSX_BYTE_LEN  DS  HL2           No of bytes of object text
ADDCDSX_VALUE     DS  0X            Object text
ADDCDSX_EQU_LEN   EQU *-ASMADATA    Length of record
.*
.MACH    ANOP
         AIF ('&MACH' EQ 'NO').SYM
         AIF ('&MACH' EQ 'YES').MACH1
         MNOTE 4,'Invalid MACH Parameter. ''YES'' assumed'
.MACH1   ANOP
         ORG   ADATA_ORG
ADATA_RECMACH       EQU   X'0036'  - Machine Instruction
ADMACH_ESDID      DS  FL4           ESDID for the source record
ADMACH_LOCTR      DS  FL4           Location counter for the instructio
                  DS  CL8           Reserved
ADMACH_INST_LEN   DS  HL2           Length of the machine instructions
ADMACH_INST_VAL   DS  0X            The actual machine instruction
ADMACH_EQU_LEN    EQU *-ASMADATA    The length of the record
.*
.SYM     ANOP
         AIF ('&SYM' EQ 'NO').XREF
         AIF ('&SYM' EQ 'YES').SYM1
         MNOTE 4,'Invalid SYM Parameter. ''YES'' assumed'
.SYM1    ANOP
         ORG   ADATA_ORG
ADATA_RECSYM        EQU   X'0042'  - Symbol
ADSYM_ESDID       DS  FL4           Rec number of the ESD record in
*                                   which it is defined
ADSYM_STMT        DS  FL4           Statement number
ADSYM_TYPE        DS  XL1           Symbol section typr
ADSYM_ATTR        DS  XL1           Symbol attribyte type
ADSYM_DUP         DS  FL4           Duplication factor
ADSYM_BYTE_LEN    DS  HL2           Length in bytes
ADSYM_INT         DS  HL2           Number of positions occupied by
*                                   integer portion of fixed-point
ADSYM_SCALE       DS  HL2           Number of positions occupied by
*                                   fractional portion of fixed-point
ADSYM_LOCTR       DS  FL4           Location counter
ADSYM_RELOC_FLAG  DS  XL1           Relocatable flag
ADSYM_RELOC       EQU X'80'         Operand points to a relocatable
*                                   expression
ADSYM_COMPLEX     EQU X'C0'         Operand points to a complex    @P1A
*                                   relocatable symbol             @P1A
ADSYM_RES         DS  CL7           Reserved
ADSYM_NAME_LEN    DS  HL2           Length of the symbol name
ADSYM_NAME        DS  0CL63         The symbol name (variable name)
ADSYM_EQU_LEN     EQU *-ASMADATA    Length of the record
*
.*
.XREF    ANOP
         AIF ('&XREF' EQ 'NO').RXREF
         AIF ('&XREF' EQ 'YES').XREF1
         MNOTE 4,'Invalid XREF Parameter. ''YES'' assumed'
.XREF1   ANOP
         ORG   ADATA_ORG
ADATA_RECXREF       EQU   X'0044'  - Symbol & Literal Cross-Referen
ADXREF_SYM_LEN     DS  HL2           Length of the symbol / literal
ADXREF_STMT        DS  FL4           Statement number sym / lit is on
ADXREF_NUMREF      DS  HL2           Number of references
ADXREF_REL_TYPE    DS  CL1           Relocatability type
                   DS  CL7           Reserved
ADXREF_SYM_NAME    DS  0CL63         Symbol / literal name (variable)
ADXREF_REF_FLAG    DS  XL1           Reference flag for the reference
ADXREF_STAT_NO     DS  FL4           Statment number that the symbol /
*                                    literal is referenced on
ADXREF_EQU_LEN     EQU *-ASMADATA    Length of the record
*
.*
.RXREF   ANOP                                                      @l1a
         AIF ('&RXREF' EQ 'NO').USING                              @l1a
         AIF ('&RXREF' EQ 'YES').RXREF1                            @l1a
         MNOTE 4,'Invalid RXREF Parameter. ''YES'' assumed'        @l1a
.RXREF1   ANOP                                                     @l1a
         ORG   ADATA_ORG                                           @l1a
ADATA_RECRXREF     EQU   X'0045'  -  Register Cross-Reference      @l1a
ADRXREF_REG_NO     DS  XL1           Register Number               @l1a
ADRXREF_REG_TYPE   DS  CL1           Register Type - G - general   @l1a
                   DS  XL2           Reserved                      @l1a
ADRXREF_TOT_NUMREF DS  FL4           Total number of references    @l1a
ADRXREF_NUMREF     DS  FL4           Number of references in this  @l1a
*                                     record
ADRXREF_OFFSET     DS  AL2           Offset to first entry in this @l1a
*                                     record
ADRXREF_STAT_NO    DS  FL4           Statement number containing re@l1a
ADRXREF_REF_FLAG   DS  CL1           Reference flag                @l1a
*                             (see values below)
*                                    ' ' No branch or modification
*                                    'M' Modified
*                                    'B' Branched to
*                                    'U' USING statement
*                                    'D' DROP statement
*                                    'N' Index register reference
ADRXREF_EQU_LEN    EQU *-ASMADATA    Length of the record
*
.*
.USING   ANOP
         AIF ('&USING' EQ 'NO').RLD
         AIF ('&USING' EQ 'YES').USING1
         MNOTE 4,'Invalid USING Parameter. ''YES'' assumed'
.USING1  ANOP
         ORG   ADATA_ORG
ADATA_RECUSING      EQU   X'0080'  - USING Map
ADUSING_RECTYPE    DS  XL1           ie. Using, push, pop, drop.
ADUSING_FLAG       DS  XL1           Using type
ADUSING_LOCID      DS  XL2           USING location ID
ADUSING_STMT       DS  FL4           The statement number of the using
ADUSING_LOCTR      DS  FL4           The location count of the using
ADUSING_VALUE      DS  FL4           The type value
ADUSING_LAST_STMT  DS  FL4           The last statement for the using
ADUSING_ID         DS  FL4           The ID of the using
ADUSING_REG        DS  XL1           The register used in the using
ADUSING_DISP       DS  XL2           The max displacement for the using
                   DS  XL1           Reserved                      @m1a
ADUSING_RANGE      DS  FL4           The range value               @m1a
                   DS  HL2           Reserved                      @m1c
ADUSING_LABEL_LEN  DS  HL2           Length of LABEL and using
*                                    text field
ADUSING_LABEL      DS  0CL63         The text for the label and text
*                                    from the source record
ADUSING_EQU_LEN    EQU *-ASMADATA    Length of the record
.*
.RLD     ANOP
         AIF ('&RLD' EQ 'NO').MXREF
         AIF ('&RLD' EQ 'YES').RLD1
         MNOTE 4,'Invalid RLD Parameter. ''YES'' assumed'
.RLD1    ANOP
         ORG   ADATA_ORG
ADATA_RECRLD        EQU   X'0040'  - Relocation Dictionary
ADRLD_POSID        DS  FL4           ESDID number
ADRLD_RELID        DS  FL4           ESDID number
ADRLD_ADDRESS      DS  FL4           Address of the field where tha
*                                    ADCON is stored
ADRLD_FLAGS        DS  XL1           Flags for the type of RLD
ADRLD_EQU_LEN      EQU *-ASMADATA    Length of the RLD record
.*
.MXREF   ANOP
         AIF ('&MXREF' EQ 'NO').MXREFX
         AIF ('&MXREF' EQ 'YES').MXREF1
         MNOTE 4,'Invalid MXREF Parameter. ''YES'' assumed'
.MXREF1  ANOP
         ORG   ADATA_ORG
ADATA_RECMXREF      EQU   X'0060'  - Library Record
ADMXREF_NUM        DS  HL2           The number of macros / copy code
ADMXREF_DAT_LEN    DS  HL2           The length of the dataset name
ADMXREF_VOL_LEN    DS  HL2           The length of the volume name
ADMXREF_CONCAT     DS  HL2           The dataset concat number
ADMXREF_DD_LEN     DS  HL2           The length of the ddname
                   DS  CL4           Reserved
ADMXREF_DATASET    DS  0CL256        Dataset name where the macro /
*                                    copy code was retrieved from
ADMXREF_VOL        DS  0CL256        Volume name where dataset resides
ADMXREF_DDNAME     DS  0CL256        DDNAME where dataset resides
ADMXREF_MAC_LEN    DS  HL2           The length of the macro name
ADMXREF_MAC_NAME   DS  0CL256        The macro / copy code name
ADMXREF_EQU_LEN    EQU *-ASMADATA    Length of the record
.*
.MXREFX  ANOP
         AIF ('&MXREFX' EQ 'NO').USER
         AIF ('&MXREFX' EQ 'YES').MXREFX1
         MNOTE 4,'Invalid MXREFX Parameter. ''YES'' assumed'
.MXREFX1  ANOP
         ORG   ADATA_ORG
ADATA_RECMXREFX     EQU   X'0062'  - Macro & Copy Code Cross Refere
ADMXRFX_CNUM       DS  FL4           Library Concatenation Number
ADMXRFX_DEFN       DS  FL4           Stmnt Number; 0=LIB; -1=Undef
ADMXRFX_CTYPE      DS  CL1           Concatenation Type
ADMXRFX_CTYPE_L    EQU C'L'          Library
ADMXRFX_CTYPE_P    EQU C'P'          Primary Input
ADMXRFX_DEFN_FLAG  DS  CL1           Definition Flag
ADMXRFX_DEFN_IMBED EQU C'X'          Macro imbedded due to LIBMAC
ADMXRFX_RES1       DS  CL8           Reserved
ADMXRFX_MAC_NAME   DS  CL64          The macro / copy code name
ADMXRFX_CALLED_BY  DS  CL64          The name of the macro CALL
ADMXRFX_NUMREF     DS  FL4           Reserved
ADMXRFX_REFS       DS  FL4           Number of References in this      +
                                     ADATA record
ADMXRFX_REF_STMT   DS  FL4           The Reference statement nums
ADMXRFX_REF_FLAG   DS  XL1           The Reference statement flags
ADMXRFX_REF_COPY   EQU C'C'          Caused by COPY statement
ADMXRFX_RES2       DS  XL1           Reserved
ADMXRFX_EQU_LEN    EQU *-ASMADATA    Length of the record
ADMXRFX_REF_LEN    EQU *-ADMXRFX_REF_STMT Len of ref statement
.*
.USER    ANOP
         AIF ('&USER' EQ 'NO').OUTPUT
         AIF ('&USER' EQ 'YES').USER1
         MNOTE 4,'Invalid USER Parameter. ''YES'' assumed'
.USER1   ANOP
         ORG   ADATA_ORG
ADATA_RECUSER       EQU   X'0070'  - User Data
ADUSER_FIELD1      DS  XL4           User Specified Binary Data
ADUSER_FIELD2      DS  XL4           User Specified Binary Data
ADUSER_FIELD3      DS  XL4           User Specified Binary Data
ADUSER_FIELD4      DS  XL4           User Specified Binary Data
ADUSER_DATA_LEN    DS  HL2           Length of ADUSER_DATA
ADUSER_DATA        DS  0C            User Specified Binary Data
ADUSER_EQU_LEN     EQU *-ASMADATA    Length of the record
.*
.OUTPUT  ANOP
         AIF ('&OUTPUT' EQ 'NO').AID
         AIF ('&OUTPUT' EQ 'YES').OUTPUT1
         MNOTE 4,'Invalid OUTPUT Parameter. ''YES'' assumed'
.OUTPUT1 ANOP
         ORG   ADATA_ORG
.* DEL   MNOTE 8,'OUTPUT Parameter Not Supported'
ADATA_RECOUTPUT     EQU   X'000A'  - Output File Information
ADOUT_NUM_OBJECT   DS  HL2           Number of object files written@p1c
ADOUT_NUM_PUNCH    DS  HL2           Number of punch files written @p1c
ADOUT_NUM_PRINT    DS  HL2           Number of listing files writte@p1c
ADOUT_NUM_TERM     DS  HL2           Number of term files written  @p1c
ADOUT_NUM_ADATA    DS  HL2           Number of adata files written @p1c
                   DS  XL10          Reserved
* The following 7 fields are repeat for the count in ADOUT_NUM_OBJECT
ADOUT_OBJ_FILENUM  DS  HL2           Assigned sequence number
ADOUT_OBJ_NAMELEN  DS  HL2           Length of output file name
ADOUT_OBJ_VOLLEN   DS  HL2           Length of output volser name
ADOUT_OBJ_MEMLEN   DS  HL2           Length of output member name
ADOUT_OBJ_FILENAME DS  0CL256        Output file name
ADOUT_OBJ_VOLNAME  DS  0CL256        Output volume serial number
ADOUT_OBJ_MEMNAME  DS  0CL256        Output member name
* The following 7 fields are repeat for the count in ADOUT_NUM_PUNCH
ADOUT_PUN_FILENUM  DS  HL2           Assigned sequence number
ADOUT_PUN_NAMELEN  DS  HL2           Length of output file name
ADOUT_PUN_VOLLEN   DS  HL2           Length of output volser name
ADOUT_PUN_MEMLEN   DS  HL2           Length of output member name
ADOUT_PUN_FILENAME DS  0CL256        Output file name
ADOUT_PUN_VOLNAME  DS  0CL256        Output volume serial number
ADOUT_PUN_MEMNAME  DS  0CL256        Output member name
* The following 7 fields are repeat for the count in ADOUT_NUM_PRINT
ADOUT_PRT_FILENUM  DS  HL2           Assigned sequence number
ADOUT_PRT_NAMELEN  DS  HL2           Length of output file name
ADOUT_PRT_VOLLEN   DS  HL2           Length of output volser name
ADOUT_PRT_MEMLEN   DS  HL2           Length of output member name
ADOUT_PRT_FILENAME DS  0CL256        Output file name
ADOUT_PRT_VOLNAME  DS  0CL256        Output volume serial number
ADOUT_PRT_MEMNAME  DS  0CL256        Output member name
* The following 7 fields are repeat for the count in ADOUT_NUM_TERM
ADOUT_TRM_FILENUM  DS  HL2           Assigned sequence number
ADOUT_TRM_NAMELEN  DS  HL2           Length of output file name
ADOUT_TRM_VOLLEN   DS  HL2           Length of output volser name
ADOUT_TRM_MEMLEN   DS  HL2           Length of output member name
ADOUT_TRM_FILENAME DS  0CL256        Output file name
ADOUT_TRM_VOLNAME  DS  0CL256        Output volume serial number
ADOUT_TRM_MEMNAME  DS  0CL256        Output member name
* The following 7 fields are repeat for the count in ADOUT_NUM_ADATA
ADOUT_ADT_FILENUM  DS  HL2           Assigned sequence number
ADOUT_ADT_NAMELEN  DS  HL2           Length of output file name
ADOUT_ADT_VOLLEN   DS  HL2           Length of output volser name
ADOUT_ADT_MEMLEN   DS  HL2           Length of output member name
ADOUT_ADT_FILENAME DS  0CL256        Output file name
ADOUT_ADT_VOLNAME  DS  0CL256        Output volume serial number
ADOUT_ADT_MEMNAME  DS  0CL256        Output member name
ADOUT_EQU_LEN      EQU *-ASMADATA    Length of the record
.*
.AID     ANOP
         AIF ('&AID' EQ 'NO').COMPUNIT
         AIF ('&AID' EQ 'YES').AID1
         MNOTE 4,'Invalid AID Parameter. ''YES'' assumed'
.AID1 ANOP
         ORG   ADATA_ORG
ADATA_RECAID        EQU   X'0001'  - ADATA Identification
ADAID_TIME         DS  XL8           Universal Time bit 63 = 1ms
ADAID_CCSID        DS  XL2           Coded Character Set ID
ADAID_EQU_LEN      EQU *-ASMADATA    Length of the record
.*
.COMPUNIT ANOP
         AIF ('&COMPUNIT' EQ 'NO').STATS
         AIF ('&COMPUNIT' EQ 'YES').COMPUNIT1
         MNOTE 4,'Invalid COMPUNIT Parameter. ''YES'' assumed'
.COMPUNIT1 ANOP
         ORG   ADATA_ORG
ADATA_RECCOMPUNIT   EQU   X'0002'  - Compilation Unit Start/End
ADCOMP_IND         DS  XL2           START/END Indicator
ADCOMP_IND_START   EQU X'0000'       START of Compilation Unit
ADCOMP_IND_END     EQU X'0001'       END of Compilation Unit
ADCOMP_RES         DS  CL2           Reserved
ADCOMP_RCOUNT      DS  FL4           Record Count for END record
ADCOMP_EQU_LEN     EQU *-ASMADATA    Length of the record
.*
.STATS   ANOP
         AIF ('&STATS' EQ 'NO').ENDIT
         AIF ('&STATS' EQ 'YES').STATS1
         MNOTE 4,'Invalid STATS Parameter. ''YES'' assumed'
.STATS1  ANOP
         ORG   ADATA_ORG
ADATA_RECSTATS      EQU   X'0090'  - Assembly Statistics
ADSTATS_BUFFP        DS  FL4         Size in KB of buffer pool
ADSTATS_REQ_INSTOR   DS  FL4         Size in KB to be incore assembly
ADSTATS_P_INPUT      DS  FL4         Number of primary input records
ADSTATS_LIB_INPUT    DS  FL4         Number of library records read
ADSTATS_WORK_FILE    DS  FL4         Number of work file reads
ADSTATS_P_PRINT      DS  FL4         Number of print records written
ADSTATS_P_PUNCH      DS  FL4         Number of punch records written
ADSTATS_WRK_WRITE    DS  FL4         Number of work file writes
ADSTATS_ADATA        DS  FL4         Number of adata ile writes
ADSTATS_ADATA_CALLS  DS  FL4         Number of adata exit calls
ADSTATS_ADATA_ADDED  DS  FL4         Number adata exit recs added
ADSTATS_ADATA_DELETE DS  FL4         Number adata exit recs deleted
ADSTATS_ADATA_DIAG   DS  FL4         Number adata exit diagnostics
ADSTATS_LIB_CALLS    DS  FL4         Number of library exit calls
ADSTATS_LIB_ADDED    DS  FL4         Number library exit recs added
ADSTATS_LIB_DELETE   DS  FL4         Number library exit recs delet
ADSTATS_LIB_DIAG     DS  FL4         Number library exit diagnostic
ADSTATS_LIST_CALLS   DS  FL4         Number of listing exit calls
ADSTATS_LIST_ADDED   DS  FL4         Number listing exit recs added
ADSTATS_LIST_DELETE  DS  FL4         Number listing exit recs delet
ADSTATS_LIST_DIAG    DS  FL4         Number listing exit diagnostic
ADSTATS_OBJ_CALLS    DS  FL4         Number of object exit calls
ADSTATS_OBJ_ADDED    DS  FL4         Number object exit recs added
ADSTATS_OBJ_DELETE   DS  FL4         Number object exit recs delete
ADSTATS_OBJ_DIAG     DS  FL4         Number object exit diagnostics
ADSTATS_INPUT_CALLS  DS  FL4         Number of input exit calls
ADSTATS_INPUT_ADDED  DS  FL4         Number input exit recs added
ADSTATS_INPUT_DELETE DS  FL4         Number input exit recs deleted
ADSTATS_INPUT_DIAG   DS  FL4         Number input exit diagnostics
ADSTATS_PUNCH_CALLS  DS  FL4         Number of punch exit calls
ADSTATS_PUNCH_ADDED  DS  FL4         Number punch exit recs added
ADSTATS_PUNCH_DELETE DS  FL4         Number punch exit recs deleted
ADSTATS_PUNCH_DIAG   DS  FL4         Number punch exit diagnostics
ADSTATS_TERM_CALLS   DS  FL4         Number of term exit calls
ADSTATS_TERM_ADDED   DS  FL4         Number term exit recs added
ADSTATS_TERM_DELETE  DS  FL4         Number term exit recs deleted
ADSTATS_TERM_DIAG    DS  FL4         Number term exit diagnostics
ADSTATS_START_TIME   DS  FL4         Local time assembly commenced
ADSTATS_STOP_TIME    DS  FL4         Local time assembly completed
ADSTATS_PROC_TIME    DS  FL4         Processor seconds used
                     DS  XL8         Reserved                      @L1A
ADSTATS_XFUNC_NUM    DS  FL4         Number of ext. func. loaded   @L1A
ADSTATS_FIXED_LEN  EQU *-ASMADATA    Length of the fixed part      @L1A
ADSTATS_XFUNC_VAR    EQU *           Symbol for USING              @L1A
                     DS  XL4         Reserved                      @L1A
ADSTATS_XFUNC_SETAF  DS  FL4         Number of SETAF calls         @L1A
ADSTATS_XFUNC_SETCF  DS  FL4         Number of SETCF calls         @L1A
ADSTATS_XFUNC_MSG    DS  FL4         Number of messages issued     @L1A
ADSTATS_XFUNC_MSEV   DS  HL2         Highest messages severity     @L1A
ADSTATS_XFUNC_NLEN   DS  HL2         Len of following name field   @L1A
ADSTATS_XFUNC_NAME   DS  0C          Name of the external function @L1A
ADSTATS_EQU_LEN    EQU *-ASMADATA    Length of the stats record
*
.ENDIT   ANOP
         POP   PRINT                   Restore PRINT status
         MEND
./ ADD NAME=ATTNLEVL
ATTNLEVL DSECT
ATTNFWPT DS    1F       FORWARD PTR
ATTNBKPT DS    1F       BACKWARD PTR
ATTNLVID DS    1F       CONSTANT X'F2040000'
ATTNDERB DS    1F       ADDRESS OF FIRST DIRECT ENTRY ROUTINE BLOCK
ATTNAVAL DS    1F       ADDRESS OF FIRST AVAILABLE    QUEUE ENTRY
ATTNDATA DS    1F       ADDRESS OF LAST DE ATTENTION OCCURRENCE
ATTNMLEN DS    1F       MAIN LINE DATA ENTRIES
ATTNFLGA DS    BL1      ATTENTION LEVEL FLAGS A
*                       BIT 0-EOS XY OPTION
*                       BIT 1-EOS REGENERATE OPTION
*                       BIT 2-LP XY OPTION
*                       BIT 3-LP CHARACTER CODE OPTION
*                       BIT 4-LP REGENERATE OPTION
*                       BIT 5-DE DEQUEUE DATA OPTION
*                       BIT 6-DE ACTIVE/NOT ACTIVE
*                       BIT 7-DELAYED DIRECT ENTRY IN PROGRESS
ATTNFLGB DS    BL1      ATTENTION LEVEL FLAGS B
*                       BIT 0-REQATN SEARCH   0=NO   1=YES
ATTNBPID DS    BL1      BACK PTR INDICATOR
ATTNLITE DS    BL1      PF INDICATOR LIGHTS OPTION
ATTNPFLM DS    1F       PF INDICATOR LIGHTS MASK
ATTNPFEN DS    1F       ENABLED PF KEYS FOR LEVEL
ATTNANEN DS    1F       ENABLED A/N SOURCES FOR LEVEL
ATTNPFDE DS    1F       ENABLED PF KEYS FOR DIRECT ENTRY
ATTNANDE DS    1F       ENABLED A/N SOURCES FOR DIRECT ENTRY
ATTNAECB DS    1F       ECB FOR ATTN SOURCE 99
ATTNSETA DS    3F       SETATN DATA AREA
ATTNDECB DS    1F       DELAYED DIRECT ENTRY ECB
./ ADD NAME=BLSABDPL
*   %GOTO ABDPLS;                   /* Display prolog                */
          MACRO
          BLSABDPL &AMDEXIT=YES,&DSECT=YES,&AMDJOB=NO,&AMDCPST=NO
*%ABDPLS: ;                         /* Display prolog                */
*/***  Start of Specifications for BLSABDPL  *************************/
*/*                                                                  */
*/* $MAC(BLSABDPL) COMP(SC132) PROD(JIP1329): Exit parameter list    */
*/*                                                                  */
*/* COPYRIGHT =                                                      */
*/*   5740-XYN, 5740-XYS COPYRIGHT IBM CORP. 1981,1982       @G860P2Z*/
*/*   LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,            @G860P2Z*/
*/*   REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083. @G860P2Z*/
*/*                                                                  */
*/* FUNCTION= BLSABDPL contains mappings of parameter blocks used for*/
*/*  communication between AMDPRDMP, IPCS, and SNAP dump formatting  */
*/*  hosts and the dump formatting exits invoked by them. It is also */
*/*  used by AMDPRDMP and SNAP when calling exits to format GTF      */
*/*  records.                                                        */
*/*                                                                  */
*/* CHANGE ACTIVITY:                                                 */
*/*  $L0= EBB1102,EBB1102,75001,DSDPXX: MVS/370 base                 */
*/*  $L1= HBB2102,HBB2102,82082,DSDPRW: MVS/XA support               */
*/*  PRODUCTS:                                                       */
*/*    SU 33                                                 @G33SPHW*/
*/*    HBB2102 -  EXIT ENHANCEMENTS                          @G860P2Z*/
*/*            -   OPERANDS BUFFER AND 4K READ OF DUMP DATA  @G860PC8*/
*/*            -   PRINT DUMP INDEX SUPPORT                  @G860PC9*/
*/*  PTM'S:                                                          */
*/*    PCC1842 - ADDED ADPLIPCS AND ADPLEJEC FLAGS           @ZMC1842*/
*/* End Specifications Logged in Compiler Listings *******************/
*        %GOTO ABDPLPLS;            /*
.*** Begin Usage instructions *****************************************
.* METHOD OF ACCESS =
.*    ASSEMBLER MODULES:
.*          BLSABDPL optional-keyword-parameter-list
.*       The optional keywords are:
.*          AMDEXIT=<YES>   Include the exit parameter list,
.*                  <NO >    ABDPL.  The default is YES.
.*          DSECT=<YES>     Define ABDPL as a DSECT.
.*                <NO >     The DEFAULT IS YES.
.*          AMDCPST=<NO >   Include CPU STATUS mapping,
.*                  <YES>    AMDCPMAP.  The default is NO.
.*       AMDJAMAP and AMDCPMAP are always DSECTs.
.*    PLS MODULES:
.*          %INCLUDE SYSLIB(BLSABDPL)
.*       The following macro variables may be set prior to this
.*       INCLUDE to tailor the mappings:
.*          AMDEXIT=<YES>   Include the exit parameter list,
.*                  <NO >    ABDPL.  The default is YES.
.*          AMDCPST=<NO >   Include CPU STATUS mapping,
.*                  <YES>    AMDCPMAP.  The default is NO.
.*       AMDJAMAP and AMDCPMAP are normally declared as based
.*       structures.  Their scope and storage class may be
.*       overridden by setting AMDJAMAPSTORAGE and AMDCPMAPSTORAGE
.*       to the desired PLS attributes.  ABDPL is normally defined
.*       as BASED(ABDPLPTR).  Its scope and storage class may be
.*       overridden by setting ABDPLSTORAGE to the desired PLS
.*       attributes.
.*
.*    Assembler example:                                      @G860P2Z
.*       BLSABDPL                                             @G860P2Z
.*    PL/S example:                                           @G860P2Z
.*       %INCLUDE SYSLIB(BLSABDPL)         "                  @G860P2Z
.*                                                            @G860P2Z
.*       ABDPL will be INCLUDED as a DSECT or a based         @G860P2Z
.*       structure.                                           @G860P2Z
.*** End of Specifications for BLSABDPL  ******************************
         IEZBITS ,                Define symbolic bits             @L1A
         AIF ('&AMDEXIT' NE 'YES').ABDPL02
         AIF ('&DSECT' EQ 'YES').ABDPL00
ABDPL    EQU    *
         AGO    .ABDPL01
.ABDPL00 ANOP
ABDPL    DSECT
.ABDPL01 SPACE 1
ADPLTCB  DS    A                  TCB of task being displayed
ADPLASID DS    H                  Address space identifier
ADPLSBPL DS    B                  Subpool used to get save area
*                                 by component routine
ADPLFLAG DS    B                  Flag field
ADPLSNPR EQU   BIT0               0=Module loaded by SNAP          @L1C
*                                 1=Module loaded by PRDMP/IPCS
ADPLSYTM EQU   BIT1               0=System is OS/VS2               @L1C
*                                 1=System is OS/VS1
ADPLDMGT EQU   BIT2               0=Format DEB only (SNAP caller)  @L1C
*                                 1=Format DEB,DCB,IOB (SNAP caller)
ADPLIPCS EQU   BIT3               Called by IPCS                   @L1C
ADPLPRT  EQU   BIT4               On, SYSPRINT data set request    @L1C
*                                 Off, PRINTER data set request
ADPLSYNO EQU   BIT5               Exit given control for syntax    @L1C
*                                 checking only                @G860P2Z
ADPLEJEC EQU   BIT6               For a write to PRINTER data set  @L1C
*                                 eject page first             @ZMC1842
ADPLBUF  DS    A                  Pointer to output buffer
ADPLPRNT DS    A                  Address of print routine
ADPLCVT  DS    A                  Address of CVT
ADPLMEMA DS    A                  Address of memory access routine
ADPLFRMT DS    A                  Address of format routine
ADPLCOM1 DS    A                  Reserved for component use
ADPLCOM2 DS    A                  Reserved for component use
ADPLCOM3 DS    A                  Reserved for component use
ADPLCOM4 DS    A                  Reserved for component use
ADPLFMT1 DS    A                  Reserved for format routine
ADPLFMT2 DS    A                  Reserved for format routine
ADPLEXT  DS    A                  Address of extension, whose first
*                                 word contains the address of the
*                                 operands list or zero if none.
ADPLABDA DS    A                  Address of host internal         @L1C
*                                 parameter list               @G33SPHW
ADPLTRFM DS    A                  Address of trace control block
*                                 (SNAP only)                  @G860P2Z
         DS    A                  reserved                         @L1C
ADPLLEV  DS    AL1                Index indentation level          @L1C
ADPLIDX  DS    AL1                Entry code number corresponding  @L1A
*                                 to AMDMNDXT macro entries
ADPLLNCT DS    H                  Line count per output page   @G860P2Z
ADPLLNRM DS    H                  Current number of lines remaining
*                                 on the output page           @G860P2Z
ADPLDLEN DS    H                  Storage access request length
*                                                              @G860PC8
ADPLOPLN DS    H                  Length of verb operand list  @G860PC8
ADPLPRDP DS    B                  Dump read/format flags       @G860P2Z
ADPLVIRT EQU   BIT0               Virtual address read             @L1C
ADPLREAL EQU   BIT1               Real address read                @L1C
ADPLCPU  EQU   BIT2               CPU data read                    @L1C
ADPLHDR  EQU   BIT3               Dump header read                 @L1C
*        The following bit governs the masking of register zero prior
*        to its use by the storage access service as a virtual
*        storage address.  If it is off, X'7FFFFFFF' will be
*        logically ANDed with register zero to obtain the requested
*        address.  If it is on, X'00FFFFFF' will be logically ANDed
*        with register zero to obtain the requested address.
ADPLSAMK EQU   BIT7               MVS/370 virtual address          @L1A
         DS    CL1                For word alignment           @G860PC9
ADPLNDX  DS    A                  Address of the AMDPRNDX routine,
*                                 Build the index work entries @G860PC9
ADPLPGNO DS    F                  Current output page number       @L1A
         DS    CL8                reserved                         @L1A
.ABDPL02 AIF ('&AMDCPST' NE 'YES').ABDPL04                     @G860P2Z
         EJECT                                                 @G860P2Z
**********************************************************************
*
*   AMDCPMAP is a mapping of the CPU STATUS data obtained from a dump
*   upon request.  An exit requests this data by setting ADPLCPU in
*   the exit parameter list prior to invoking the storage access
*   service routine, whose address is in ADPLMEMA.
*
**********************************************************************
AMDCPMAP DSECT                    CPU status record data       @G860P2Z
*                                 mapping                      @G860P2Z
AMDCFLAG DS    CL1                CPU status flags             @G860P2Z
AMDCUNIP EQU   BIT0               CPU is a uniprocessor:           @L1C
*                                 Processor address is invalid.
AMDCSINV EQU   BIT1               Stand-alone dump unable to store @L1C
*                                 status.  Only  processor address
*                                 is valid.                    @G860P2Z
AMDCGPRV EQU   BIT2               Operator did not perform store   @L1C
*                                 status.  Only general registers
*                                 and, if MP, processor address
*                                 are valid.                   @G860P2Z
AMDCSADP EQU   BIT3               Not from a stand alone dump      @L1C
AMDCPAD1 DS    CL1                Padding                      @G860P2Z
AMDCPADR DS    H                  Processor address            @G860P2Z
AMDCREGS DS    0CL168             Registers and current PSW    @G860P2Z
AMDCFREG DS    CL32               Floating point REG's 0,2,4,6 @G860P2Z
AMDCGREG DS    CL64               General registers            @G860P2Z
AMDCCREG DS    CL64               Control registers            @G860P2Z
AMDCCPSW DS    CL8                Current PSW                  @G860P2Z
AMDCPREG DS    F                  Prefix register              @G860P2Z
AMDCTIME DS    CL8                CPU timer value              @G860P2Z
AMDCLOCK DS    CL8                Clock comparator value       @G860P2Z
.ABDPL04 ANOP                                                  @G860P2Z
         MEND  ,                  End of assembler macro             */
*%ABDPLPLS:                         /* Begin PL/S macro              */
*   IF AMDEXIT='NO' %THEN           /* Do not define ABDPL           */
*     %GOTO ABDPL05;                /*                               */
*   %IF ABDPLSTORAGE='' %THEN       /* No scope/storage class    @L1A*/
*     %ABDPLSTORAGE='BASED(ABDPLPTR)';/* Default scope/storage   @L1A*/
*   DECLARE
*     1 ABDPL ABDPLSTORAGE BOUNDARY(DWORD),/*                    @L1C*/
*      2 ADPLTCB PTR(31),           /* TCB of task being displayed   */
*      2 ADPLASID FIXED(15),        /* Address space identifier      */
*      2 ADPLSBPL CHAR(1),          /* Subpool used to get save area
*                                      by component routine          */
*      2 ADPLFLAG,                  /* Flag field                    */
*       3 ADPLSNPR BIT(1),          /* 0-Module loaded by SNAP
*                                      1-Module loaded by PRDMP/IPCS */
*       3 ADPLSYTM BIT(1),          /* 0-System is OS/VS2
*                                      1-System is OS/VS1            */
*       3 ADPLDMGT BIT(1),          /* For data management formatter
*                                      under SNAP: 0-Format DEB only,
*                                      1-Format DEB,DCB,IOB          */
*       3 ADPLIPCS BIT(1),          /* Called by IPCS                */
*       3 ADPLPRT BIT(1),           /* SYSPRINT data set             */
*       3 ADPLSYNO BIT(1),          /* Exit given control for syntax
*                                      checking only                 */
*       3 ADPLEJEC BIT(1),          /* Page eject                    */
*      2 ADPLBUF PTR(31),           /* Pointer to output buffer      */
*      2 ADPLPRNT PTR(31),          /* Address of print routine      */
*      2 ADPLCVT PTR(31),           /* Address of CVT                */
*      2 ADPLMEMA PTR(31),          /* Address of memory access
*                                      routine                       */
*      2 ADPLFRMT PTR(31),          /* Address of format routine     */
*      2 ADPLCOM1 FIXED(31),        /* Reserved for component use    */
*      2 ADPLCOM2 FIXED(31),        /* Reserved for component use    */
*      2 ADPLCOM3 FIXED(31),        /* Reserved for component use    */
*      2 ADPLCOM4 FIXED(31),        /* Reserved for component use    */
*      2 ADPLFMT1 PTR(31),          /* Reserved for format routine   */
*      2 ADPLFMT2 PTR(31),          /* Reserved for format routine   */
*      2 ADPLEXT PTR(31),           /* Address of extension whose
*                                      first word contains the
*                                      address of the operands list
*                                      or zero if none               */
*      2 ADPLABDA PTR(31),          /* Address of host internal
*                                      parameter list            @L1C*/
*      2 ADPLTRFM PTR(31),          /* Address of trace control block
*                                      (SNAP only)               @L1C*/
*      2 * PTR(32),                 /* reserved                  @L1C*/
*      2 ADPLLEV UNSIGNED BINARY(8),/* Index indentation level   @L1C*/
*      2 ADPLIDX UNSIGNED BINARY(8),/* Entry code number corresponding
*                                      to AMDMNDXT macro entries @L1A*/
*      2 ADPLLNCT FIXED(16),        /* Lines per page            @L1C*/
*      2 ADPLLNRM FIXED(16),        /* Lines remaining on the
*                                      current page              @L1C*/
*      2 ADPLDLEN FIXED(16),        /* Storage access length     @L1C*/
*      2 ADPLOPLN FIXED(16),        /* Length of operands        @L1C*/
*      2 ADPLPRDP,                  /* Address qualification     @L1C*/
*       3 ADPLVIRT BIT(1),          /* Virtual address           @L1C*/
*       3 ADPLREAL BIT(1),          /* Real address              @L1C*/
*       3 ADPLCPU BIT(1),           /* CPU data request          @L1C*/
*       3 ADPLHDR BIT(1),           /* Dump header request       @L1C*/
*       3 * BIT(3),                 /* reserved                  @L1A*/
*/*     The following bit governs the masking of register zero prior */
*/*     to its use by the storage access service as a virtual        */
*/*     storage address.  If it is off, X'7FFFFFFF' will be          */
*/*     logically ANDed with register zero to obtain the requested   */
*/*     address.  If it is on, X'00FFFFFF' will be logically ANDed   */
*/*     with register zero to obtain the requested address.          */
*
*       3 ADPLSAMK BIT(1),          /* MVS/370 virtual address   @L1A*/
*      2 * CHAR(1),                 /* reserved                  @L1C*/
*      2 ADPLNDX PTR(31),           /* Address of the AMDPRNDX
*                                      routine.  Build index work
*                                      entries                   @L1A*/
*      2 ADPLPGNO FIXED(32),        /* Current page number       @L1A*/
*      2 * CHARACTER(8),            /* reserved                  @L1A*/
*/*==================================================================*/
*/*Output buffer is provided by the host and is filled in prior to   */
*/*calling the print and index services.                             */
*     ADPLBUFR CHARACTER(132) BASED(ADPLBUF),/* Output buffer    @L1A*/
*     ADPLBUFO CHARACTER(1) BASED(ADPLBUF) POSITION(133),/* One
*                                      overflow byte is provided to
*                                      the exit                  @L1A*/
*/*==================================================================*/
*/*Subroutines accessible via the exit parameter list                */
*/*------------------------------------------------------------------*/
*/*   Print service routine--SNAP supports a subset of the services  */
*/*   offered in AMDPRDMP and IPCS.  The SNAP print service routine: */
*/*    - Ignores bit ADPLPRT,                                        */
*/*    - Does not maintain fields ADPLLNCT, ADPLPGNO, and ADPLLNRM,  */
*/*      and                                                         */
*/*    - Neither honors nor zeroes the ADPLEJEC bit.                 */
*/*   All such fields are zeroed by SNAP prior to passing control to */
*/*   an exit and should not be used by exits designed to function   */
*/*   in the SNAP formatting environment.                            */
*/*------------------------------------------------------------------*/
*     ADPLEPRT ENTRY BASED(ADPLPRNT) VALUERANGE(*) OPTIONS(
*         REFS(ADPLBUFR,            /* Each host uses this field     */
*             ADPLPRT,ADPLEJEC,     /* AMDPRDMP and IPCS use these
*                                      fields                        */
*             ADPLBUF,ADPLABDA,ADPLLNCT,ADPLLNRM,ADPLPGNO,ADPLSYNO),/*
*                                      Each host may, but need not,
*                                      use these fields              */
*         SETS(ADPLBUFR,            /* Each host sets this field     */
*             ADPLLNRM,ADPLPGNO,ADPLEJEC,/* AMDPRDMP and IPCS set
*                                      these fields                  */
*             ADPLBUF,ADPLABDA,ADPLLNCT,ADPLSYNO)),/* Each host may,
*                                      but need not, set these fields
*                                                                @L1A*/
*/*------------------------------------------------------------------*/
*/*   Storage access service routine--Supported by SNAP only for     */
*/*   access to live virtual storage.  Its support by AMDPRDMP and   */
*/*   IPCS is described below.                                       */
*/*------------------------------------------------------------------*/
*     ADPLESTG ENTRY BASED(ADPLMEMA) VALUERANGE(*) OPTIONS(
*         REFS(ADPLASID,ADPLDLEN,ADPLVIRT,ADPLREAL,ADPLCPU,
*             ADPLHDR,ADPLSAMK,     /* AMDPRDMP and IPCS use these
*                                      fields                        */
*             ADPLCVT,ADPLABDA,ADPLTRFM,ADPLSYNO)),/* Each host may,
*                                      but need not, use these fields
*                                                                @L1A*/
*/*------------------------------------------------------------------*/
*/*   Format service routine                                         */
*/*------------------------------------------------------------------*/
*     ADPLEFMT ENTRY BASED(ADPLFRMT) VALUERANGE(*) OPTIONS(
*         REFS(ADPLBUF,ADPLABDA),   /* Each host may, but need not,
*                                      use these fields              */
*         SETS(ADPLBUFR,            /* Each host sets this field     */
*             ADPLBUF,ADPLABDA,ADPLSYNO)),/* Each host may, but need
*                                      not, set these fields     @L1A*/
*/*------------------------------------------------------------------*/
*/*   Index service routine--Supported as minimum-function entries by*/
*/*   IPCS and SNAP.  These entries only blank ADPLBUFR and return.  */
*/*   Its support by AMDPRDMP is described below.                    */
*/*------------------------------------------------------------------*/
*     ADPLENDX ENTRY BASED(ADPLNDX) VALUERANGE(*) OPTIONS(
*         REFS(ADPLBUFR,ADPLLEV,ADPLIDX,/* AMDPRDMP uses these fields*/
*             ADPLBUF,ADPLABDA,ADPLLNRM,ADPLPGNO,ADPLSYNO),/*
*                                      AMDPRDMP may, but need not,
*                                      use these fields              */
*         SETS(ADPLBUFR,            /* Each host blanks this field   */
*             ADPLBUF,ADPLABDA,ADPLSYNO));/* AMDPRDMP may, but need
*                                      not, set these fields     @L1A*/
*%ABDPL05:                          /* Process AMDCPMAP              */
*   IF AMDCPST^='YES' %THEN         /* Do not define AMDCPMAP        */
*     %GOTO ABDPL09;                /* End BLSABDPL processing       */
*   %IF AMDCPMAPSTORAGE='' %THEN    /* No scope/storage class    @L1A*/
*     %AMDCPMAPSTORAGE='BASED';     /* Default scope/storage     @L1A*/
*/********************************************************************/
*/* AMDCPMAP is a mapping of the CPU STATUS data obtained from a dump*/
*/* upon request.  An exit requests this data by setting ADPLCPU in  */
*/* the exit parameter list prior to invoking the storage access     */
*/* service routine, whose address is in ADPLMEMA.                   */
*/********************************************************************/
*
*   DECLARE                         /* Status record data            */
*     1 AMDCPMAP AMDCPMAPSTORAGE,   /* mapping                   @L1C*/
*      2 AMDCFLAG BIT(8),           /* CPU status flags          @L1C*/
*       3 AMDCUNIP BIT(1),          /* CPU is a uniprocessor.
*                                      Processor address is invalid. */
*       3 AMDCSINV BIT(1),          /* Stand alone dump unable to
*                                      perform store status.  Only
*                                      processor address is valid.   */
*       3 AMDCGPRV BIT(1),          /* Operator did not perform store
*                                      status.  Only general registers
*                                      and, if MP, processor address
*                                      are valid.                @L1C*/
*       3 AMDCSADP BIT(1),          /* Not from a stand alone dump   */
*      2 AMDCPAD1 CHAR(1),          /* Padding                   @L1C*/
*      2 AMDCPADR FIXED(16),        /* Processor address         @L1C*/
*      2 AMDCREGS,                  /* REGs and current PSW      @L1C*/
*       3 AMDCFREG(4) CHAR(8),      /* Floating point REGs       @L1C*/
*       3 AMDCGREG(16) CHAR(4),     /* General registers         @L1C*/
*       3 AMDCCREG(16) CHAR(4),     /* Control registers         @L1C*/
*       3 AMDCCPSW CHAR(8),         /* Current PSW               @L1C*/
*      2 AMDCPREG PTR(31),          /* Prefix register           @L1C*/
*      2 AMDCTIME CHAR(8),          /* CPU timer value           @L1C*/
*      2 AMDCLOCK CHAR(8);          /* Clock comparator          @L1C*/
*%ABDPL09:                          /* End BLSABDPL processing       */
*   DEACTIVATE AMDJOB,AMDEXIT,AMDCPST;
./ ADD NAME=BLSCAMM1
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCAMM1) COMP(SC132) PROD(JIP1329): COUNT SUBLIST ENTRIES
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
         BLSCAMM1 &LIST            COUNT SUBLIST ENTRIES           @D1C
         GBLA  &BLSCAGA            PARAMETER SUBLIST COUNT
         LCLA  &CTR                CURRENT LIST BYTE COUNTER
         LCLA  &LEN                LIST LENGTH
         LCLC  &STR                LIST CHARACTER STRING
&CTR     SETA  1                   CURRENT BYTE COUNTER
&STR     SETC  '&LIST'             LIST CHAR STRING
&LEN     SETA  K'&STR              LIST LENGTH
         AIF   (&LEN GT 0).SK1     NON NULL LIST
&BLSCAGA SETA  0                   NULL LIST
         AGO   .END
.SK1     AIF   ('&STR' NE '()').SK2 NOT NULL LIST
&BLSCAGA SETA  0                   NULL LIST
         AGO   .END
.SK2     AIF   ('&STR'(1,1) EQ '(').SK3  MULTI ELEMENT LIST CANDIDATE
&BLSCAGA SETA  1                   ONE ELEMENT LIST
         AGO   .END
.SK3     ANOP
&BLSCAGA SETA  1                   SET UP ELEMENT COUNT LOOP
         AGO   .LPTST              ENTER LOOP
.LOOP    AIF   ('&STR'(&CTR,1) NE '(').SK4
         MNOTE 8,'LIST CONTAINS AN INNER SUBLIST'
         AGO   .ERR                ERROR EXIT
.SK4     AIF   ('&STR'(&CTR,1) NE ',').SK5  NOT ELEMENT END
&BLSCAGA SETA  &BLSCAGA+1           BUMP ELEMENT COUNT
         AGO   .LPTST
.SK5     AIF   ('&STR'(&CTR,1) NE ')').LPTST  NOT END OF PLIST
         AIF   (&CTR EQ &LEN).END   LIST END MATCHES LOGICAL END
         MNOTE 8,'INVALID LIST FORMAT'
         AGO   .ERR
.LPTST   ANOP
&CTR     SETA  &CTR+1               BUMP CURRENT BYTE COUNTER
         AIF   (&CTR LE &LEN).LOOP  NOT END OF LIST
         AGO   .END
.ERR     ANOP
&BLSCAGA SETA  -1                   INDICATE ERROR TO CALLER
.END     MEND
./ ADD NAME=BLSCAMM2
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCAMM2) COMP(SC132) PROD(JIP1329): EXTRACT CHARACTER STRING
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
         BLSCAMM2 &LIST,&NUM       EXTRACT CHARACTER STRING        @D1C
         GBLA  &BLSCAGA            PARAMETER SUBLIST COUNT
         GBLC  &BLSCAGC            PARAMETER SUBLIST CHARACTER STRING
         LCLA  &CTR                CURRENT LIST BYTE COUNTER
         LCLA  &ELM                CURRENT ELEMENT NUMBER
         LCLA  &START              CURRENT ELEMENT START BYTE
         LCLA  &LEN                LIST LENGTH
         LCLC  &STR                LIST CHARACTER STRING
&BLSCAGA SETA  0                   RETURN CODE
&BLSCAGC SETC  ''                  RETURNED STRING
&CTR     SETA  1                   CURRENT BYTE COUNTER
&STR     SETC  '&LIST'             LIST CHAR STRING
&LEN     SETA  K'&STR              LIST LENGTH
         AIF   (&LEN EQ 0).END     NULL LIST
.SK1     AIF   ('&STR' EQ '()').END   NULL LIST
.SK2     AIF   ('&STR'(1,1) EQ '(').SK3  MULTI ELEMENT LIST CANDIDATE
&BLSCAGC SETC  '&LIST'             ONE ELEMENT LIST
         AGO   .END
.SK3     ANOP
&ELM     SETA  1                   SET UP ELEMENT COUNT LOOP
&START   SETA  2                   SET ELEMENT START BYTE
         AGO   .LPTST              ENTER LOOP
.LOOP    AIF   ('&STR'(&CTR,1) NE '(').SK4
         MNOTE 8,'LIST CONTAINS AN INNER SUBLIST'
         AGO   .ERR                ERROR EXIT
.SK4     AIF   ('&STR'(&CTR,1) NE ',').SK5  NOT ELEMENT END
         AIF   (&ELM EQ &NUM).MOVE  FOUND REQUESTED ELEMENT
&START   SETA &CTR+1               SET NEW ELEMENT START
&ELM     SETA  &ELM+1              BUMP ELEMENT COUNT
         AGO   .LPTST
.SK5     AIF   ('&STR'(&CTR,1) NE ')').LPTST  NOT END OF PLIST
         AIF   (&CTR EQ &LEN).SK6   LIST END MATCHES LOGICAL END
         MNOTE 8,'INVALID LIST FORMAT'
         AGO   .ERR
.SK6     ANOP
         AIF   (&ELM EQ &NUM).MOVE  REQUESTED SUBLIST ENTRY
         AGO   .END                 REQUESTED ENTRY NOT FOUND
.LPTST   ANOP
&CTR     SETA  &CTR+1               BUMP CURRENT BYTE COUNTER
         AIF   (&CTR LE &LEN).LOOP  NOT END OF LIST
         MNOTE 8,'INVALID LIST FORMAT'
         AGO   .ERR
.MOVE    ANOP
&LEN     SETA  &CTR-&START          MOVE LENGTH
&BLSCAGC SETC  '&STR'(&START,&LEN)  PARM SUBLIST ENTRY
         AGO   .END
.ERR     ANOP
&BLSCAGA SETA  -1                   INDICATE ERROR TO CALLER
.END     MEND
./ ADD NAME=BLSCAMMM
** START OF SPECIFICATIONS *******************************************
*
*  $MAC(BLSCAMMM) COMP(SC132) PROD(JIP1329): IPCS DATA ACCESS
*     SERVICES ALLOCATION MODEL GENERATOR MACRO
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*  FUNCTION= GENERATE ALLOCATION AND ACCESS CONTROL BLOCK MODELS FOR
*    IPCS DAS DATA SETS. EACH MODEL CONSISTS OF THE FOLLOWING:
*              MODEL COMPONENT ADDRESS LIST
*              DATA SET ACCESS CONTROL BLOCK MODELS
*                OPEN/CLOSE PARAMETER LIST MODEL
*                VSAM ACB AND RPL MODELS
*                OR
*                QSAM DCB MODEL
*              DYNAMIC ALLOCATION PARAMETER LIST MODELS
*                DYNAMIC ALLOCATION REQUEST BLOCK MODEL
*                TEXT UNIT POINTER LIST MODEL
*                TEXT UNIT MODELS
*              FOR NEW VSAM DATA SETS, THE ACCESS METHOD SERVICES
*              COMMAND TEXT (SYSIN) STREAM MODEL
*
*  NOTES= NONE
*
*  MODULE TYPE= DATA AREA GENERATION MACRO
*     PROCESSOR= ASSEMBLER F
*     ATTRIBUTES= REENTRABLE (READ ONLY DATA)
*
*  INVOCATION SYNTAX=
*
*   LOCSYMB BLSCAMMM NEXTLOC,MODEL,TYPE,AMS
*
*                     ,ALLOCATION MODEL KEYWORDS
*
*
*           LOCSYMB
*             1 TO 3 BYTE LOCATION SYMBOL NAME TO PERMIT THE
*             CONSTRUCTION OF A SINGLE THREADED LIST OF MODELS WITHIN
*             THE BLSCAMOD MODULE.
*
*           NEXTLOC
*             1 TO 3 BYTE LOCATION SYMBOL OF THE MODEL THAT IS CHAINED
*             AS THE SUCCESSOR OF THIS MODEL. FOR THE LAST MODEL IN
*             THE CHAIN, THIS PARAMETER IS 0.
*
*           MODEL
*             1 TO 8 BYTE ALLOCATION MODEL NAME. THIS PARAMETER IS
*             PLACED INTO AN 8 BYTE FIELD LEFT JUSTIFIED AND PADDED
*             WITH BLANKS. THIS NAME IS SEARCHED UPON BY THE
*             ALLOCATION FUNCTION AND THE CONTENTS OF THE MODEL ARE
*             MOVED INTO GETMAINED SPACE TO INITIALIZE THE DATA SET
*             CONTROL BLOCKS.
*
*           TYPE
*             THE TYPE PARAMETER CONTROLS THE RESERVATION OF SPACE FOR
*             THE VSAM ACB AND RPL OR THE QSAM DCB. VALID VALUES ARE:
*               V (DEFAULT) CAUSES THE GENERATION OF
*                           A 76 BYTE FIELD LABELED ACBNN AND
*                           A 76 BYTE FIELD LABELED RPLNN. NN IS THE
*                           1 TO 3 BYTE LOCSYMB FOR THIS MODEL.
*                           IT IS ASSUMED THAT THE USER WILL CODE AN
*                           AN ACB MACRO ORIGINED AT ACBNN AND AN RPL
*                           MACRO ORIGINED AT RPLNN FOR A VSAM
*                           DATA SET.
*
*               (V,LRECL)   CAUSES THE GENERATION OF THE ACB AND RPL
*                           AS STATED FOR THE 'V' ENTRY. IN ADDITION,
*                           IT INITIALIZES A FIELD IN THE MODEL
*                           COMPONENT LIST WITH THE VALUE OF THE
*                           LRECL SUB PARAMETER. LRECL MUST BE
*                           A SELF DEFINING NUMERIC VALUE.
*
*               Q           CAUSES THE GENERATION A 96 BYTE FIELD
*                           LABELED DCBNN. NN IS THE 1 TO 3 BYTE
*                           LOCSYMB FOR THIS MODEL. IT IS ASSUMED THAT
*                           THE USER WILL CODE A DCB MACRO ORIGINED
*                           AT DCBNN FOR A QSAM DATA SET.
*
*           AMS
*             VALID PARAMETER VALUE IS 'AMS'.
*             THE AMS PARAMETER CAUSES THE GENERATION OF AN ENTRY
*             IN THE MODEL COMPONENT LIST THAT CONTAINS THE NAME
*             AMSNN. NN IS THE 1 TO 3 BYTE LOCSYMB FOR THIS MODEL.
*             IT IS ASSUMED THAT THE USER WILL CODE AN AMS SYSIN TEXT
*             LIST NAMED AMSNN. THE FORMAT OF THE AMS SYSIN TEXT LIST
*             IS SPECIFIED IN THE BLSCAMIN MODULE PROLOG.
*
*           ALLOCATION MODEL KEYWORD PARAMETERS:
*             FOR FURTHER INFORMATION REGARDING THE USE OF THE
*             KEYWORDS THAT FOLLOW (EXECEPT OPEN) SEE OS/VS2 SYSTEM
*             PROGRAMMING LIBRARY: JOB MANAGEMENT GC28-0627, DYNAMIC
*             ALLOCATION.
*
*             OPEN=(OPEN MACRO LIST POSITIONAL PARAMETER LIST)
*                  DEFAULT: OPEN=(,(INPUT,DISP))
*                  SEE OS/VS2 MVS DATA MANAGEMENT MACRO INSTRUCTIONS
*                  GC26-3878 FOR INFORMATION ABOUT OPEN SUB-
*                  PARAMETERS.
*
*             DYRB=( VERB ,FLAGS1 ,FLAGS2 )
*                         ,      
*
*                  VERB (REQUIRED PARAMETER)
*                   ONE OF THE FOLLOWING VALUES:
*                    AL  REQUEST FOR DYNAMIC ALLOCATION
*                    IN  REQUEST FOR INFORMATION RETRIEVAL
*
*                  FLAGS1 (OPTIONAL PARAMETER)
*                   ONE OR MORE OF THE FOLLOWING VALUES:
*                    (ONCVN,NOCVN,NOMNT,JBSYS)
*
*                  FLAGS2 (OPTIONAL PARAMETER)
*                   ONE OR MORE OF THE FOLLOWING VALUES:
*                    (WTVOL,WTDSN,NORES,WTUNT,OFFLN,TIONQ,CATLG,
*                     MOUNT,UDEVT,PCINT)
*
*                  DEFAULT: DYRB=AL
*
*            VALID KEYWORDS FOR DYRB=AL:
*
*             RTDATA=(DATA RETURN VALUES)
*                    ONE OR MORE OF THE FOLLOWING VALUES:
*                      (RTDDN,RTDSN,RTVOL,RTORG)
*                    DEFAULT: RTDATA=(RTDDN,RTDSN,RTVOL,RTORG)
*
*             DDNAME=FILE NAME
*
*             DSN='DATA SET NAME'
*
*             VOL=VOLUME SERIAL
*
*             UNIT=UNIT NAME
*
*                      TRK          
*             SPACE=(  CYL           ,
*                      BLOCK LENGTH 
*
*                     (PRIMARY QUANTITY ,SECONDARY QUANTITY)
*
*                     ,RLSE  ,CONTIG  ,ROUND )
*                     ,      ,       
*
*             DISP=(NEW  ,DELETE  ,DELETE )
*                   OLD  ,KEEP    ,KEEP   
*                   SHR  ,CATLG   ,CATLG  
*                   MOD  ,UNCATLG ,UNCATLG
*                   ,    ,       
*
*                  DEFAULT: DISP=(SHR,KEEP,KEEP)
*
*             LABEL=( DATA SET SEQUENCE NUMBER ,SL 
*                                                ,NL 
*                                                ,BLP
*                                                ,LTM
*                                                ,   
*
*                     ,PASSWORD ,RETPD)
*                     ,NOPWREAD
*
*             PASSW=PASSWORD
*
*             SSREQ= SUB-SYSTEM NAME
*
*             PERMA=PERMA
*
*             CNVRT=CNVRT
*
*             SYSOUT=( SYSOUT CLASS ,PROGRAM NAME )
*
*            VALID KEYWORDS FOR DYRB=IN:
*
*             RTDATA=(DATA RETURN VALUES)
*                 ONE OR MORE OF THE FOLLOWING VALUES:
*                   (RTDDN,RTDSN,RTMEM,RTSTA,RTNDP,RTCDP,RTORG)
*                 DEFAULT: THE DEFAULT FOR INFORMATION RETRIEVAL
*                          IS INVALID. IT MUST BE OVERRIDDEN.
*
*             DDNAME=FILE NAME
*
*             DSN='DATA SET NAME'
*
*  OUTPUT= SPACE IS ALLOCATED AND INITIALIZED FOR A DATA SET MODEL.
*
*  EXIT=  N/A
*
*  EXTERNAL REFERENCES= SEE BELOW
*     ROUTINES= NONE
*     DATA AREAS=  NONE
*     CONTROL BLOCKS=  ACB
*                      DCB
*                      RPL
*                      AMS SYSIN TEXT LIST
*  TABLES=  NONE
*  MACROS=  OPEN  MVS SYSTEM MACRO (LIST FORM)
*           BLSCAMM1  COUNT PARAMETER SUBLIST ENTRIES
*           BLSCAMM2  OBTAIN PARAMETER SUBLIST ENTRY CHARACTER STRING
*
*  CHANGE ACTIVITY=
*    $L0=MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS REL 1
*    $L1=COPYDUMP,EIP1102,79073,DMGPSR: DDNAME CONNECT
*    $L2=COPYDUMP,EIP1102,79073,DMGPSR: MAX SIZE NAME FIELDS
*    $D1=QUALITY,EIP1102,81257,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*  MESSAGES ISSUED=
*     MACRO COMPILE TIME MESSAGES (MNOTE MESSAGES)
*     8,VALUE '&TT' INVALID FOR DATA SET TYPE CODE. MUST BE 'V'
*       OR 'Q'. THE ACB/DCB AND RPL ADDRESSES ARE SET TO ZERO.
*     8,VALUE '&AMS' INVALID FOR AMS REQUEST PARAMETER. ADDRESS OF
*       AMS SYSIN TEXT IS SET TO ZERO.
*     8,'&VERB' IS AN INVALID DYRB VERB. DYRB VERB CODE IS SET TO
*        ZERO.
*     8,INVALID FLAGSX LIST. NO FLAGSX BITS ARE SET.
*     8,'VALUE' IS AN INVALID VALUE FOR 'DYRB(Y,Z)'. NO FLAGSX BIT IS
*       SET.
*     8,'VALUE' IS AN INVALID VALUE FOR 'PARMNAME(FIELD)'. NO TEXT
*       UNIT IS BUILT.
*     8,'DSN' KEY OPERAND MUST BE ENCLOSED IN QUOTES. NO 'DSN' TEXT
*       UNIT IS BUILT.
*     8,'KEYNAME1' KEY IS REQUIRED WITH 'KEYNAME2' KEY. NO 'KEYNAME2'
*       TEXT UNIT IS BUILT.
*     8,'PARMNAME' IS A REQUIRED PARAMETER. NO TEXT UNIT IS BUILT.
*     8,INVALID PRIMARY SPACE QUANTITY. NO TEXT UNIT IS BUILT.
*     8,INVALID SECONDARY SPACE QUANTITY. NO TEXT UNIT IS BUILT.
*
*  DATA SETS ACCESSED= NONE
*
** END OF SPECIFICATIONS *********************************************
         MACRO
&N       BLSCAMMM &NXT,&ID,&T,&AMS,&OPEN=(,(INPUT,DISP)),              *
               &DDNAME=,                                               *
               &DSN=,&VOL=,&UNIT=,                                     *
               &SPACE=,&LABEL=,&SSREQ=,&PASSW=,&PERMA=,&CNVRT=,        *
               &DISP=(SHR,KEEP,KEEP),                                  *
               &DYRB=AL,                                               *
               &RTDATA=(RTDDN,RTDSN,RTVOL,RTORG),                      *
               &SYSOUT=
         GBLA  &BLSCAGA            SUBLIST PARAMETER COUNT OR NUMBER
         GBLC  &BLSCAGC            SUBLIST CHARACTER STRING
         LCLA  &CTR                LOOP COUNTER
         LCLA  &A                  ARITHMETIC TEMPORARY
         LCLC  &C                  CHARACTER TEMPORARY
.*   SET UP DEFAULTS FOR DATA SET TYPE
         LCLC  &TT
&TT      SETC  '&T(1)'             PICK UP DATA SET TYPE CODE
         AIF   ('&TT' NE '').TSET  TEST FOR NULL
&TT      SETC  'V'                 SET DEFAULT TO VSAM
.TSET    ANOP
&C       SETC  '0'                 DEFLT VSAM ESDS PSEUDO REL REC LRECL
         AIF   (N'&T LT 2 OR '&TT' NE 'V').TSET1   TEST FOR NULL
&C       SETC  '&T(2)'             SET VSAM ESDS PSEUDO REL REC LRECL
.TSET1   ANOP
.* BEGIN MODEL CODE GENERATION
         DS    0D
&N       DC    A(&NXT)             ADDRESS OF NEXT MODEL
         DC    A(0)                RESERVED
         DC    CL8'&ID'            MODEL NAME
         AIF   ('&TT' EQ 'V').ACB     TEST FOR VSAM DATA SET
         AIF   ('&TT' EQ 'Q').DCB     TEST FOR QSAM (NON-VSAM) DATA SET
         MNOTE 8,'VALUE ''&TT'' INVALID FOR DATA SET TYPE CODE. MUST BE*
               ''V'' OR ''Q''. THE ACB/DCB AND RPL ADDRESSES ARE SET TO*
                ZERO.'
         DC    2A(0)               DUMMY ACB/DCB AND RPL ADDRESSES
         AGO   .JOIN1
.ACB     ANOP
         DC    A(ACB&N)            ADDRESS OF ACB CONTROL BLOCK
         DC    A(RPL&N)            ADDRESS OF RPL CONTROL BLOCK
         AGO   .JOIN1
.DCB     ANOP
         DC    A(DCB&N)            ADDRESS OF DCB CONTROL BLOCK
         DC    A(0)                UNUSED FOR QSAM
.JOIN1   ANOP
         DC    A(OPCL&N)           ADDRESS OF OPEN/CLOSE LIST
         DC    A(DYRB&N)           ADDRESS OF DYNALLOC REQUEST BLOCK
         AIF   ('&AMS' EQ 'AMS').AMS TEST FOR AMS REQUESTED
         AIF   ('&AMS' EQ '').AMSNUL TEST FOR AMS NOT REQUESTED
         MNOTE 8,'VALUE ''&AMS'' INVALID FOR AMS REQUEST PARAMETER. ADD*
               RESS OF AMS SYSIN TEXT IS SET TO ZERO.'
.AMSNUL  ANOP
         DC    A(0)                NO AMS SYSIN TEXT SUPPLIED
         AGO   .JOIN2
.AMS     DC    A(AMS&N)            ADDRESS OF AMS SYSIN TEXT
.JOIN2   ANOP
         DC    F'&C'               VSAM ESDS PSEUDO RELATIVE REC LRECL
         AIF   ('&TT' EQ 'V').ACB1    TEST FOR VSAM DATA SET
         AIF   ('&TT' EQ 'Q').DCB1    TEST FOR QSAM DATA SET
         AGO   .JOIN3
.ACB1    ANOP
         DS    0F
ACB&N    DC    XL76'0'             RESERVE SPACE FOR ACB
RPL&N    DC    XL76'0'             RESERVE SPACE FOR RPL
         AGO   .JOIN3
.DCB1    ANOP
         DS    0F
DCB&N    DC    XL96'0'             RESERVE SPACE FOR DCB
.JOIN3   ANOP
*   OPEN/CLOSE LIST
         DS    4A(0)               RESERVE SPACE FOR OPEN/CLOSE LIST
         ORG   *-16                RESET TO LIST ORIGIN
OPCL&N   OPEN  &OPEN,MF=L          OPEN/CLOSE LIST MODEL
         ORG   ,                   RESTORE LOC COUNTER
.*   DYNAMIC ALLOCATION REQUEST BLOCK
.*   BUILD THE DYRB VERB FIELD
         LCLC  &VERB               TEMP FOR VERB CODE
.AL      AIF   ('&DYRB(1)' NE 'AL').IN TEST FOR DSN ALLOCATE VERB  @L1C
&VERB    SETC  '1'
         AGO   .VBT                BRANCH AROUND REST OF VERBS
.* THESE VERBS DISABLED BECAUSE TEXT UNITS FOR THEM NOT BUILT
.UN      AIF   ('&DYRB(1)' NE 'UN').CC TEST FOR UNALLOCATE VERB
&VERB    SETC  '2'
.CC      AIF   ('&DYRB(1)' NE 'CC').DC TEST FOR CONCATENATE VERB
&VERB    SETC  '3'
.DC      AIF   ('&DYRB(1)' NE 'DC').RI TEST FOR DECONCATENATE VERB
&VERB    SETC  '4'
.RI      AIF   ('&DYRB(1)' NE 'RI').DN TEST FOR REMOVE IN-USE ATTR VERB
&VERB    SETC  '5'
.DN      AIF   ('&DYRB(1)' NE 'DN').IN TEST FOR DDANME ALLOCATE VERB
&VERB    SETC  '6'
.IN      AIF   ('&DYRB(1)' NE 'IN').VBT TEST FOR RETRIEVE INFORMATION
&VERB    SETC  '7'
.VBT     AIF   ('&VERB' NE '').VBOK TEST FOR VALID VERB
&VERB    SETC  '0'                 INVALID VERB CODE
         MNOTE 8,'''&VERB'' IS AN INVALID DYRB VERB. DYRB VERB CODE IS *
               SET TO ZERO.'
.VBOK    ANOP
.*   BUILD THE DYRB FLAGS1 FIELD
         LCLB  &F(16)              FLAGS1 BIT MAP
         LCLC  &FLAGS1             FLAGS1 TEMP
         BLSCAMM1 &DYRB(2)         COUNT FLAGS1 ENTRIES INTO &BLSCAGA
         AIF   (&BLSCAGA GE 0).FL1A TEST FOR VALID FIELD
         MNOTE 8,'INVALID FLAGS1 LIST, NO FLAGS1 BITS ARE SET'
.FL1A    ANOP
&CTR     SETA  &BLSCAGA            COUNT OF FLAGS TO BE SET
         AGO   .TEST1
.* LOOP TO EXAMINE ALL FLAGS1 PARAMETERS SUPPLIED
.LOOP1   ANOP
         BLSCAMM2 &DYRB(2),&CTR   EXTRACT PARM SUBLIST CHAR STRING
.*                                INTO &BLSCAGA
&C       SETC  '&BLSCAGC'         MAKE LOCAL COPY OF SUB-PARAMETER
         AIF   ('&C' EQ 'ONCVN' OR '&C' EQ 'NOCVN' OR '&C' EQ 'NOMNT'  *
               OR '&C' EQ 'JBSYS').OK1  TEST FOR VALID SUB-FIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''DYRB(2,&CTR)''.  NO *
               FLAGS1 BIT IS SET.'
         AGO   .CNT1
.OK1     ANOP
         AIF   ('&C' NE 'ONCVN').F1 TEST NOT CONVERIBLE ALLOC
&F(1)    SETB  1                   EXISTING ALLOC MUST HAVE CONVERTIBLE
.*                                 ATTRIBUTE TO BE USED FOR THIS REQUST
.F1     AIF   ('&C' NE 'NOCVN').F2 TEST NOT NO EXISTING ALLOC
&F(2)    SETB  1                   DON'T USE EXISTING ALLOC FOR REQUEST
.F2     AIF   ('&C' NE 'NOMNT').F3 TEST NOT NO MOUNT OR OFFLINE DEVS
&F(3)    SETB  1                   DO NOT MOUNT VOLS OR OFFLINE DEVICES
.F3     AIF   ('&C' NE 'JBSYS').CNT1 TEST NOT DATA LIKE SYSOUT
&F(4)    SETB  1                   TREAT THIS DATA SET LIKE SYSOUT
.CNT1    ANOP
&CTR     SETA  &CTR-1              DECREMENT SUB-FIELD COUNTER
.TEST1   AIF   (&CTR GT 0).LOOP1
.* LOOP END, NOW GENERATE FLAGS1 FIELD
&FLAGS1  SETC  '&F(1)&F(2)&F(3)&F(4)&F(5)&F(6)&F(7)&F(8).00000000'
.*   BUILD THE DYRB FLAGS2 FIELD
         LCLB  &G(32)              FLAGS2 BIT MAP
         LCLC  &FLAGS2             FLAGS2 TEMP
         BLSCAMM1 &DYRB(3)         COUNT FLAGS2 ENTRIES INTO &BLSCAGA
         AIF   (&BLSCAGA GE 0).FL2A TEST FOR VALID FIELD
         MNOTE 8,'INVALID FLAGS2 LIST, NO FLAGS2 BITS ARE SET'
.FL2A    ANOP
&CTR     SETA  &BLSCAGA            COUNT OF FLAGS TO BE SET
         AGO   .TEST2
.* LOOP TO EXAMINE ALL FLAGS2 PARAMETERS SUPPLIED
.LOOP2   ANOP
         BLSCAMM2 &DYRB(3),&CTR    EXTRACT PARM SUBLIST CHAR STRING
.*                                 INTO &BLSCAGA
&C       SETC  '&BLSCAGC'          MAKE LOCAL COPY OF SUB-PARAMETER
         AIF   ('&C' EQ 'WTVOL' OR '&C' EQ 'WTDSN' OR '&C' EQ 'NORES'  *
               OR '&C' EQ 'WTUNT' OR '&C' EQ 'OFFLN' OR '&C' EQ        *
               'TIONQ').OK2 TEST FOR VALID SUB-FIELD
         AIF   ('&C' EQ 'CATLG' OR '&C' EQ 'MOUNT' OR '&C' EQ 'UDEVT'  *
               OR '&C' EQ 'PCINT').OK2  TEST FOR VALID SUB-FIELD
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''DYRB(3,&CTR)''.  NO *
               FLAGS2 BIT IS SET.'
         AGO   .CNT2
.OK2     ANOP
         AIF   ('&C' NE 'WTVOL').G2 TEST NOT WAIT FOR VOLUMES
&G(1)    SETB  1                   WAIT FOR VOLUMES
.G2      AIF   ('&C' NE 'WTDSN').G3 TEST NOT WAIT FOR DSNAME
&G(2)    SETB  1                   WAIT FOR DSNAME
.G3      AIF   ('&C' NE 'NORES').G4 TEST NOT DON'T RESERVE DATA SETS
&G(3)    SETB  1                   DO NOT RESERVE DATA SETS
.G4      AIF   ('&C' NE 'WTUNT').G5 TEST NOT WAIT FOR UNITS
&G(4)    SETB  1                   WAIT FOR UNITS
.G5      AIF   ('&C' NE 'OFFLN').G6 TEST NOT CONSIDER OFFLINE DEVICES
&G(5)    SETB  1                   CONSIDER OFFLINE DEVICES
.G6      AIF   ('&C' NE 'TIONQ').G7 TEST NOT TIOT ENQUED
&G(6)    SETB  1                   TIOT ENQ ALREADY PERFORMED
.G7      AIF   ('&C' NE 'CATLG').G8 TEST NOT SET CATALOG INDS
&G(7)    SETB  1                   SET SPECIAL CATALOG DATA SET INDS
.G8      AIF   ('&C' NE 'MOUNT').G9 TEST NOT VOLUMES MAY BE MOUNTED
&G(8)    SETB  1                   VOLUMES MAY BE MOUNTED
.G9      AIF   ('&C' NE 'UDEVT').G10 TEST NOT UNITPARM IS DEVTYPE
&G(9)    SETB  1                   UNITNAME PARAMETER IS A DEVICE TYPE
.G10     AIF   ('&C' NE 'PCINT').CNT2 TEST NOT ALLOC PRIVATE CATALOG
&G(10)   SETB  1                   ALLOCATE A PRIVATE CATALOG FOR INIT
.CNT2    ANOP
&CTR     SETA  &CTR-1              DECREMENT SUB-FIELD COUNTER
.TEST2   AIF   (&CTR GT 0).LOOP2
.* LOOP END, NOW GENERATE FLAGS2 FIELD
&FLAGS2  SETC  '&G(1)&G(2)&G(3)&G(4)&G(5)&G(6)&G(7)&G(8)&G(9)&G(10)&G(1*
               1)&G(12)&G(13)&G(14)&G(15)&G(16).0000000000000000'
.*   BUILD TEXT UNIT POINTERS
         LCLA  &NTUDEF             NUMBER OF TEXT UNITS DEFINED
&NTUDEF  SETA  29                  INITIALIZE
         LCLB  &P(29)              TEXT UNIT PARAMETER BIT MAP
         LCLC  &TPA(29)            TEXT UNIT ADDRESS MODELS
         AIF ('&VERB' EQ '7').INEXA  INFORMATION RETRIEVAL RQST    @L1A
.* INITIALIZE TEXT UNIT POINTER ADDRESS MODELS FOR DSN ALLOCATION  @L1A
&TPA(1)  SETC  'RTDDN'
&TPA(2)  SETC  'RTDSN'
&TPA(3)  SETC  'RTVOL'
&TPA(4)  SETC  'RTORG'
&TPA(5)  SETC  'DDNAM'
&TPA(6)  SETC  'DSNAM'
&TPA(7)  SETC  'VLSER'
&TPA(8)  SETC  'UNIT'
&TPA(9)  SETC  'SSREQ'
&TPA(10) SETC  'PASSW'
&TPA(11) SETC  'PERMA'
&TPA(12) SETC  'CNVRT'
&TPA(13) SETC  'STATS'
&TPA(14) SETC  'NDISP'
&TPA(15) SETC  'CDISP'
&TPA(16) SETC  'TRK'
&TPA(17) SETC  'CYL'
&TPA(18) SETC  'BLKLN'
&TPA(19) SETC  'PRIME'
&TPA(20) SETC  'SECND'
&TPA(21) SETC  'RLSE'
&TPA(22) SETC  'SPFRM'
&TPA(23) SETC  'ROUND'
&TPA(24) SETC  'DSSEQ'
&TPA(25) SETC  'LABEL'
&TPA(26) SETC  'PASPR'
&TPA(27) SETC  'RETPD'
&TPA(28) SETC  'SYSOC'
&TPA(29) SETC  'SYSOP'
.*   BUILD THE TEXT UNIT PARAMETER BIT MAP FOR THE RTDATA KEYWORD
&CTR     SETA  N'&RTDATA           COUNT OF SUBFIELDS
         AGO   .TEST3
.* LOOP TO EXAMINE ALL RTDATA PARAMETERS SUPPLIED
.LOOP3   ANOP
&C       SETC  '&RTDATA(&CTR)'     MAKE LOCAL COPY OF SUB-PARAMETER
         AIF   ('&C' EQ 'RTDDN' OR '&C' EQ 'RTDSN' OR '&C' EQ 'RTVOL'  *
               OR '&C' EQ 'RTORG').OK3  TEST FOR VALID SUB-FIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''RTDATA(&CTR)''.  NO *
               TEXT UNIT IS BUILT'
         AGO   .CNT3
.OK3     ANOP
         AIF   ('&C' NE 'RTDDN').P2 TEST NOT RETURN DDNAME
&P(1)    SETB  1                   RETURN ASSOCIATED DDNAME
.P2      AIF   ('&C' NE 'RTDSN').P3 TEST NOT RETURN DSNAME
&P(2)    SETB  1                   RETURN ALLOCATED DATA SET NAME
.P3      AIF   ('&C' NE 'RTVOL').P4 TEST NOT RETURN VOLSER
&P(3)    SETB  1                   RETURN VOLUME SERIAL
.P4      AIF   ('&C' NE 'RTORG').CNT3 TEST NOT RETURN DSORG
&P(4)    SETB  1                   RETURN THE DATA SET ORGANIZATION
.CNT3    ANOP
&CTR     SETA  &CTR-1              DECREMENT SUB-FIELD COUNTER
.TEST3   AIF   (&CTR GT 0).LOOP3
.*    LOOP END
.*   DO SET UP FOR THE DDNAME KEYWORD
&P(5)    SETB  ('&DDNAME' NE '')   DDNAME KEYWORD PRESENT
.*   DO SET UP FOR THE DSN KEYWORD
         AIF   ('&DSN' EQ '').END6 DSN KEY NOT PRESENT
&C       SETC  '&DSN'(1,1)         FIRST BYTE OF DS NAME
         AIF   ('&C' EQ '''').OK6  SHOULD BE SINGLE QUOTE
         MNOTE 8,'''DSN'' KEY OPERAND MUST BE ENCLOSED IN SINGLE QUOTES*
               . NO ''DSN'' TEXT UNIT IS BUILT'
         AGO   .END6
.OK6     ANOP
&P(6)    SETB  1                   DSN KEYWORD PRESENT
.END6    ANOP
.*   DO SET UP FOR THE VOL KEYWORD
&P(7)    SETB  ('&VOL' NE '')      VOL KEYWORD PRESENT
.*   DO SET UP FOR THE UNIT KEYWORD
&P(8)    SETB  ('&UNIT' NE '')     UNIT KEYWORD PRESENT
.*   DO SET UP FOR THE SSREQ KEYWORD
&P(9)    SETB  ('&SSREQ' NE '')    SSREQ KEYWORD PRESENT
.*   DO SET UP FOR THE PASSWORD KEYWORD
         AIF   ('&PASSW' EQ '').END10 PASSW KEY NOT PRESENT
         AIF   ('&DSN' NE '').OK10 DSN KEY MUST BE ALSO PRESENT
         MNOTE 8,'''DSN'' KEY IS REQUIRED WITH ''PASSW'' KEY. NO ''PASS*
               WORD'' TEXT UNIT IS BUILT'
         AGO   .END10
.OK10    ANOP
&P(10)   SETB  1                   PASSW KEYWORD PRESENT
.END10   ANOP
.*   DO SET UP FOR THE PERMA KEYWORD
         AIF   ('&PERMA' EQ '').END11 PERMA KEY NOT PRESENT
         AIF   ('&CNVRT' EQ '').OK11 CNVRT KEY MUST NOT BE PRESENT
         MNOTE 8,'''CNVRT'' KEY IS INVALID WITH ''PERMA'' KEY. NO ''PER*
               MA'' TEXT UNIT IS BUILT'
         AGO   .END11
.OK11    ANOP
&P(11)   SETB  1                   PERMA KEYWORD PRESENT
.END11   ANOP
&P(12)   SETB  ('&CNVRT' NE '')    CNVRT KEYWORD PRESENT
.*   BUILD THE TEXT UNIT PARAMETER BIT MAP FOR THE DISP KEYWORD
         LCLA  &STATS,&NDISP,&CDISP
&CTR     SETA  N'&DISP             COUNT OF SUBFIELDS
         AIF   (&CTR EQ 0).END15   TEST IF DISP KEYWORD NOT SPECIFIED
.*   DISP KEY IS MUTUALLY EXCLUSIVE WITH SYSOUT KEY
         AIF   ('&SYSOUT' EQ '').P13AA SYSOUT KEY MUST NOT BE PRESENT
         MNOTE 8,'''SYSOUT'' KEY IS INVALID WITH ''DISP'' KEY. NO ''DIS*
               P'' TEXT UNITS ARE BUILT'
         AGO   .END15
.P13AA   ANOP
.*    EXAMINE THE STATUS SUB-FIELD
&C       SETC  '&DISP(1)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END13  TEST STATUS=NULL
.P13A    AIF   ('&C' NE 'OLD').P13B TEST NOT STATUS=OLD
&STATS   SETA  1                   STATUS=OLD
.P13B    AIF   ('&C' NE 'MOD').P13C TEST NOT STATUS=MOD
&STATS   SETA  2                   STATUS=MOD
.P13C    AIF   ('&C' NE 'NEW').P13D TEST NOT STATUS=NEW
&STATS   SETA  4                   STATUS=NEW
.P13D    AIF   ('&C' NE 'SHR').P13E TEST NOT STATUS=SHR
&STATS   SETA  8                   STATUS=SHR
.P13E    AIF   (&STATS NE 0).OK13  TEST FOR VALID SUBFIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''DISP(1)''.  NO TEXT *
               UNIT IS BUILT'
         AGO   .END13
.OK13    ANOP
&P(13)   SETB  1                   STATUS SUB-FIELD PRESENT
.END13   ANOP
.*   EXAMINE THE NORMAL DISPOSITION SUB-FIELD
         AIF   (&CTR LT 2).END15   TEST IF NORMAL DISP NOT SPECIFIED
&C       SETC  '&DISP(2)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END14  TEST NORMAL DISP=NULL
.P14A    AIF   ('&C' NE 'UNCATLG').P14B TEST NOT NORMAL DISP=UNCATLG
&NDISP   SETA  1                   NORMAL DISP=UNCATLG
.P14B    AIF   ('&C' NE 'CATLG').P14C TEST NOT NORMAL DISP=CATLG
&NDISP   SETA  2                   NORMAL DISP=CATLG
.P14C    AIF   ('&C' NE 'DELETE').P14D TEST NOT NORMAL DISP=DELETE
&NDISP   SETA  4                   NORMAL DISP=DELETE
.P14D    AIF   ('&C' NE 'KEEP').P14E TEST NOT NORMAL DISP=KEEP
&NDISP   SETA  8                   NORMAL DISP=KEEP
.P14E    AIF   (&NDISP NE 0).OK14  TEST FOR VALID SUBFIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''DISP(2)''.  NO TEXT *
               UNIT IS BUILT'
         AGO   .END14
.OK14    ANOP
&P(14)   SETB  1                   NORMAL DISP SUB-FIELD PRESENT
.END14   ANOP
.*   EXAMINE THE CONDITIONAL DISPOSITION SUB-FIELD
         AIF   (&CTR LT 3).END15   TEST IF CONDITION DISP NOT SPECIFIED
&C       SETC  '&DISP(3)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END15  TEST CONDITIONAL DISP=NULL
.P15A    AIF   ('&C' NE 'UNCATLG').P15B TEST NOT CONDITION DISP=UNCATLG
&CDISP   SETA  1                   CONDITIONAL DISP=UNCATLG
.P15B    AIF   ('&C' NE 'CATLG').P15C TEST NOT CONDITIONAL DISP=CATLG
&CDISP   SETA  2                   CONDITIONAL DISP=CATLG
.P15C    AIF   ('&C' NE 'DELETE').P15D TEST NOT CONDITIONAL DISP=DELETE
&CDISP   SETA  4                   CONDITIONAL DISP=DELETE
.P15D    AIF   ('&C' NE 'KEEP').P15E TEST NOT CONDITIONAL DISP=KEEP
&CDISP   SETA  8                   CONDITIONAL DISP=KEEP
.P15E    AIF   (&CDISP NE 0).OK15  TEST FOR VALID SUBFIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''DISP(3)''.  NO TEXT *
               UNIT IS BUILT'
         AGO   .END15
.OK15    ANOP
&P(15)   SETB  1                   CONDITIONAL DISP SUB-FIELD PRESENT
.END15   ANOP
.*   BUILD THE TEXT UNIT PARAMETER BIT MAP FOR THE SPACE KEYWORD
&CTR     SETA  N'&SPACE             COUNT OF SUBFIELDS
         AIF   (&CTR EQ 0).END23   TEST IF SPACE KEYWORD NOT SPECIFIED
.*    EXAMINE THE TYPE SUB-FIELD
&C       SETC  '&SPACE(1)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' NE '').P16    TEST NOT TYPE=NULL
         MNOTE 8,'SPACE(1) IS A REQUIRED PARAMETER. NO TEXT UNIT IS BUI*
               LT'
         AGO   .END18
.P16     AIF   ('&C' NE 'TRK').P17 TEST NOT TYPE=TRK
&P(16)   SETB  1                   TYPE=TRK
         AGO   .END18
.P17     AIF   ('&C' NE 'CYL').P18 TEST NOT TYPE=CYL
&P(17)   SETB  1                   TYPE=CYL
         AGO   .END18
.P18     ANOP
&P(18)   SETB  1                   TYPE=BLKLEN
.END18   ANOP
.*    EXAMINE THE PRIMARY SPACE QUANTITY SUB-FIELD
         BLSCAMM2 &SPACE(2),1      EXTRACT THE PRIMARY SPACE QUANTITY
.*                                 RETCODE IS IN &BLSCAGA, FIELD IS IN
.*                                 &BLSCAGC
         AIF   (&BLSCAGA GE 0).P19A TEST FOR VALID FIELD EXTRACT
         MNOTE 8,'INVALID PRIMARY SPACE QUANTITY. NO TEXT UNIT IS BUILT*
               '
         AGO   .END19
.P19A    ANOP
         AIF   ('&BLSCAGC' NE '').P19 PRIMARY SPACE QUANTITY NOT NULL
         MNOTE 8,'SPACE(2,1) IS A REQUIRED PARAMETER. NO TEXT UNIT IS B*
               UILT'
         AGO   .END19
.P19     ANOP
&P(19)   SETB  1                   PRIMARY SPACE QUANTITY PRESENT
.END19   ANOP
.*    EXAMINE THE SECONDARY SPACE QUANTITY SUB-FIELD
         BLSCAMM2 &SPACE(2),2      EXTRACT THE SECONDARY SPACE QUANTITY
.*                                 RETCODE IS IN &BLSCAGA, FIELD IS IN
.*                                 &BLSCAGC
         AIF   (&BLSCAGA GE 0).P20A TEST FOR VALID FIELD EXTRACT
         MNOTE 8,'INVALID SECONDARY SPACE QUANTITY. NO TEXT UNIT IS BUI*
               LT'
         AGO   .END20
.P20A    ANOP
         AIF   ('&BLSCAGC' EQ '').END20 NULL SECONDARY SPACE QUANTITY
&P(20)   SETB  1                   SECONDARY SPACE QUANTITY PRESENT
.END20   ANOP
.*    EXAMINE THE UNUSED SPACE RELEASE SUB-FIELD
&C       SETC  '&SPACE(3)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END21  TEST FIELD=NULL
         AIF   ('&C' EQ 'RLSE').P21 TEST FOR UNUSED SPACE RELEASE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''SPACE(3)''. NO TEXT *
               UNIT IS BUILT'
         AGO   .END21
.P21     ANOP
&P(21)   SETB  1                   UNUSED SPACE RELEASE FIELD PRESENT
.END21   ANOP
.*    EXAMINE THE FORMAT OF ALLOCATED SPACE SUB-FIELD
&C       SETC  '&SPACE(4)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END22  TEST FIELD=NULL
         AIF   ('&C' EQ 'CONTIG').P22 TEST FOR FORMAT OF ALLOC SPACE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''SPACE(4)''. NO TEXT *
               UNIT IS BUILT'
         AGO   .END22
.P22     ANOP
&P(22)   SETB  1                   FORMAT OF ALLOC SPACE FIELD PRESENT
.END22   ANOP
.*    EXAMINE THE WHOLE CYLINDER ALLOCATION SUB-FIELD
&C       SETC  '&SPACE(5)'          MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END23  TEST FIELD=NULL
         AIF   ('&C' EQ 'ROUND').P23 TEST FOR WHOLE CYLINDER ALLOC
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''SPACE(5)''. NO TEXT *
               UNIT IS BUILT'
         AGO   .END23
.P23     ANOP
&P(23)   SETB  1                   WHOLE CYLINDER ALLOC FIELD PRESENT
.END23   ANOP
.*   BUILD THE TEXT UNIT PARAMETER BIT MAP FOR THE LABEL KEYWORD
         LCLA  &LABELTY,&PASPR
&CTR     SETA  N'&LABEL            COUNT OF SUBFIELDS
         AIF   (&CTR EQ 0).END27   TEST IF LABEL KEYWORD NOT SPECIFIED
.*   LABEL KEY IS MUTUALLY EXCLUSIVE WITH SYSOUT KEY
         AIF   ('&SYSOUT' EQ '').P24AA SYSOUT KEY MUST NOT BE PRESENT
         MNOTE 8,'''SYSOUT'' KEY IS INVALID WITH ''LABEL'' KEY. NO ''LA*
               BEL'' TEXT UNITS ARE BUILT'
         AGO   .END27
.P24AA   ANOP
.*    EXAMINE THE DATA SET SEQUENCE NUMBER SUB-FIELD
         AIF   ('&LABEL(1)' EQ '').END24  NULL DATA SET SEQUENCE NUMBER
&P(24)   SETB  1                   DATA SET SEQUENCE NUMBER PRESENT
.END24   ANOP
.*   EXAMINE THE LABEL TYPE SUB-FIELD
         AIF   (&CTR LT 2).END27   IF NO MORE SUB-FIELDS
&C       SETC  '&LABEL(2)'         MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END25  TEST LABEL TYPE=NULL
.P25A    AIF   ('&C' NE 'NL').P25B TEST NOT LABEL TYPE=NL
&LABELTY SETA  1                   LABEL TYPE=NL
.P25B    AIF   ('&C' NE 'SL').P25C TEST NOT LABEL TYPE=SL
&LABELTY SETA  2                   LABEL TYPE=SL
.P25C    AIF   ('&C' NE 'BLP').P25D TEST NOT LABEL TYPE=BLP
&LABELTY SETA  10                  LABEL TYPE=BLP
.P25D    AIF   ('&C' NE 'LTM').P25E TEST NOT LABEL TYPE=LTM
&LABELTY SETA  21                  LABEL TYPE=LTM
.P25E    AIF   (&LABELTY NE 0).OK25  TEST FOR VALID SUBFIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''LABEL(2)''.  NO TEXT*
                UNIT IS BUILT'
         AGO   .END25
.OK25    ANOP
&P(25)   SETB  1                   LABEL TYPE SUB-FIELD PRESENT
.END25   ANOP
.*   EXAMINE THE PASSWORD PROTECTION SUB-FIELD
         AIF   (&CTR LT 3).END27   IF NO MORE SUB-FIELDS
&C       SETC  '&LABEL(3)'         MAKE LOCAL COPY OF SUB-FIELD
         AIF   ('&C' EQ '').END26  TEST PASSWORD PROTECTION=NULL
         AIF   ('&C' NE 'PASSWORD').P26B  NOT PASSWORD PROT=PASSWORD
&PASPR   SETA  10                  PASSWORD PROTECTION=PASSWORD
.P26B    AIF   ('&C' NE 'NOPWREAD').P26C  NOT PASSWORD PROT=NOPWREAD
&PASPR   SETA  30                  PASSWORD PROTECTION=NOPWREAD
.P26C    AIF   (&PASPR NE 0).OK26  TEST FOR VALID SUBFIELD VALUE
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''LABEL(3)''.  NO TEXT*
                UNIT IS BUILT'
         AGO   .END26
.OK26    ANOP
&P(26)   SETB  1                   PASSWORD PROTECT SUB-FIELD PRESENT
.END26   ANOP
.*   DATA SET RETENTION PERIOD SUB-FIELD
&P(27)   SETB  (&CTR EQ 4)         RETENTION PERIOD SUB-FIELD PRESENT
.END27   ANOP
.*   HANDLE SYSOUT KEYWORD
&CTR     SETA  N'&SYSOUT           COUNT OF SUBFIELDS
         AIF   (&CTR EQ 0).END29   SYSOUT KEYWORD NOT PRESENT
.*  EXAMINE THE SYSOUT CLASS SUB-FIELD
&A       SETA  K'&SYSOUT(1)        LENGTH OF THE SYSOUT CLASS PARM
         AIF   (&A EQ 1).OK28      SYSOUT CLASS MUST BE ONE BYTE
&C       SETC  '&SYSOUT(1)'
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''SYSOUT(1)''. NO TEXT*
                UNIT IS BUILT'
         AGO   .END28
.OK28    ANOP
&P(28)   SETB  1                   SYSOUT CLASS PRESENT
.END28   ANOP
.*  EXAMINE THE SYSOUT PROGRAM NAME SUB-FIELD
         AIF   (&CTR LT 2).END29   NO PROGRAM NAME SUB-FIELD
&A       SETA  K'&SYSOUT(2)        LENGTH OF THE SYSOUT PROGRAM NAME
         AIF   (&A GT 0 AND &A LE 8).OK29  NAME MUST BE 1 TO 8 BYTES
&C       SETC  '&SYSOUT(2)'
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''SYSOUT(2)''. NO TEXT*
                UNIT IS BUILT'
         AGO   .END29
.OK29    ANOP
&P(29)   SETB  1                   SYSOUT PROGRAM NAME PRESENT
.END29   ANOP
         AGO   .CNT4A              END OF DSNAME ALLOCATION KEYS   @L1A
.* INITIALIZE TEXT UNIT PNTR ADDRESS MODELS FOR INFORMATION RETR   @L1A
.INEXA   ANOP                                                      @L1A
&TPA(1)  SETC  'RTDDN'                                             @L1A
&TPA(2)  SETC  'RTDSN'                                             @L1A
&TPA(3)  SETC  'RTMEM'                                             @L1A
&TPA(4)  SETC  'RTSTA'                                             @L1A
&TPA(5)  SETC  'RTNDP'                                             @L1A
&TPA(6)  SETC  'RTCDP'                                             @L1A
&TPA(7)  SETC  'RTORG'                                             @L1A
&TPA(8)  SETC  'DDNAM'                                             @L1A
&TPA(9)  SETC  'DSNAM'                                             @L1A
.*   BUILD THE TEXT UNIT PARAMETER BIT MAP FOR THE RTDATA KEYWORD  @L1A
&CTR     SETA  N'&RTDATA           COUNT OF SUBFIELDS              @L1A
         AGO   .TEST3A                                             @L1A
.* LOOP TO EXAMINE ALL RTDATA PARAMETERS SUPPLIED                  @L1A
.LOOP3A  ANOP                                                      @L1A
&C       SETC  '&RTDATA(&CTR)'     MAKE LOCAL COPY OF SUB-PARAM    @L1A
         AIF   ('&C' EQ 'RTDDN' OR '&C' EQ 'RTDSN' OR '&C' EQ 'RTMEM'  *
               OR '&C' EQ 'RTSTA' OR '&C' EQ 'RTNDP' OR '&C' EQ 'RTCDP'*
                OR '&C' EQ 'RTORG').OK3A TEST FOR SUB-FIELD VALUE  @L1A
         MNOTE 8,'''&C'' IS AN INVALID VALUE FOR ''RTDATA(&CTR)''.  NO *
               TEXT UNIT IS BUILT'                                 @L1A
         AGO   .CNT3A                                              @L1A
.OK3A    ANOP                                                      @L1A
         AIF   ('&C' NE 'RTDDN').P2A TEST NOT RETURN DDNAME        @L1A
&P(1)    SETB  1                   RETURN ASSOCIATED DDNAME        @L1A
.P2A     AIF   ('&C' NE 'RTDSN').P3A TEST NOT RETURN DSNAME        @L1A
&P(2)    SETB  1                   RETURN ALLOCATED DATA SET NAME  @L1A
.P3A     AIF   ('&C' NE 'RTMEM').P4A TEST NOT RETURN MEMBER        @L1A
&P(3)    SETB  1                   RETURN MEMBER                   @L1A
.P4A     AIF   ('&C' NE 'RTSTA').P5A TEST NOT RETURN STATUS        @L1A
&P(4)    SETB  1                   RETURN STATUS                   @L1A
.P5A     AIF   ('&C' NE 'RTNDP').P6A TEST NOT RETURN NORMAL DISP   @L1A
&P(5)    SETB  1                   RETURN NORMAL DISP              @L1A
.P6A     AIF   ('&C' NE 'RTCDP').P7A TEST NOT RET CONDITIONL DISP  @L1A
&P(6)    SETB  1                   RETURN CONDITIONAL DISP         @L1A
.P7A     AIF   ('&C' NE 'RTORG').CNT3A TEST NOT RETURN DSORG       @L1A
&P(7)    SETB  1                   RETURN THE DATA SET ORG         @L1A
.CNT3A   ANOP                                                      @L1A
&CTR     SETA  &CTR-1              DECREMENT SUB-FIELD COUNTER     @L1A
.TEST3A  AIF   (&CTR GT 0).LOOP3A                                  @L1A
.*    LOOP END                                                     @L1A
.*   DO SET UP FOR THE DDNAME KEYWORD                              @L1A
&P(8)    SETB  ('&DDNAME' NE '')   DDNAME KEYWORD PRESENT          @L1A
.*   DO SET UP FOR THE DSN KEYWORD                                 @L1A
         AIF   ('&DSN' EQ '').END9A DSN KEY NOT PRESENT            @L1A
&C       SETC  '&DSN'(1,1)         FIRST BYTE OF DS NAME           @L1A
         AIF   ('&C' EQ '''').OK9A SHOULD BE SINGLE QUOTE          @L1A
         MNOTE 8,'''DSN'' KEY OPERAND MUST BE ENCLOSED IN SINGLE QUOTES*
               . NO ''DSN'' TEXT UNIT IS BUILT'                    @L1A
         AGO   .END9A                                              @L1A
.OK9A    ANOP                                                      @L1A
&P(9)    SETB  1                   DSN KEYWORD PRESENT             @L1A
.END9A   ANOP                                                      @L1A
.* COUNT TEXT UNIT PARAMETERS PRESENT
.CNT4A   ANOP                                                      @L1A
         LCLA  &TUCT               TEXT UNIT PARAMETERS PRESENT
&CTR     SETA  0                   INIT LOOP COUNTER
         AGO   .CNT4
.LOOP4   ANOP
         AIF   (NOT &P(&CTR)).CNT4 TEST FOR TEXT UNIT PRESENT
&TUCT    SETA  &TUCT+1             TEXT UNIT IS PRESENT
.CNT4    ANOP
&CTR     SETA  &CTR+1              BUMP LOOP COUNTER
         AIF   (&CTR LE &NTUDEF).LOOP4  TEST LOOP END
*   DYNAMIC ALLOCATION REQUEST BLOCK
         DS    0F
DYRB&N   DC    HL1'20'             DYRB LENGTH FIELD
         DC    HL1'&VERB'          DYRB VERB CODE
         DC    BL2'&FLAGS1'        FLAGS1 FIELD
         DC    2XL2'0'             ERROR AND INFORMATIONAL REASON CODES
         AIF   (&TUCT EQ 0).TPP1   TEST FOR TEXT UNITS PRESENT
         DC    A(DYTP&N)           ADDRESS OF TEXT UNIT POINTERS
         AGO   .TPP2
.TPP1    DC    A(0)                NO TEXT UNITS PRESENT
.TPP2    ANOP
         DC    A(0)                RESERVED
         DC    BL4'&FLAGS2'        FLAGS2 FIELD
*   TEXT UNIT POINTERS
         AIF   (&TUCT EQ 0).DONE   TEST FOR NO TEXT UNITS PRESENT
DYTP&N   DC    0F'0'               ALIGN LIST TO FULL WORD
.*   BUILD TEXT UNIT POINTER ENTRIES
         LCLA  &TUCTA              TEXT UNIT COUNTER
&CTR     SETA  0                   INIT LOOP COUNTER
&TUCTA   SETA  1                   INIT TEXT UNIT COUNTER
         AGO   .CNT5
.LOOP5   ANOP
         AIF   (NOT &P(&CTR)).CNT5 TEST FOR TEXT UNIT PRESENT
         AIF   (&TUCTA EQ &TUCT).LAST5  TEST FOR LAST TEXT UNIT
         DC    A(&TPA(&CTR)&N)     TEXT UNIT ADDRESS
&TUCTA   SETA  &TUCTA+1            TEXT UNIT COUNTER
         AGO   .CNT5
.LAST5   ANOP
         DC    X'80',AL3(&TPA(&CTR)&N)  LAST TEXT UNIT ADDRESS
         AGO   .END5
.CNT5    ANOP
&CTR     SETA  &CTR+1              BUMP LOOP COUNTER
         AIF   (&CTR LE &NTUDEF).LOOP5  TEST LOOP END
.END5    ANOP
*   TEXT UNITS
         AIF   ('&VERB' EQ '7').INTUS  INFORMATION RETRIEVAL VERB  @L1A
.*   BUILD TEXT UNITS FOR DSNAME ALLOCATION VERB                   @L1A
.* RETURN DDNAME TEXT UNIT
         AIF   (NOT &P(1)).NOT1    TEST NOT RETURN DDNAME
         DS    0H                  ALIGN TEXT UNIT
&TPA(1)&N DC   XL2'55',H'1',H'8',CL8' ' RETURN DDNAME TEXT UNIT
.NOT1    ANOP
.* RETURN DSNAME TEXT UNIT
         AIF   (NOT &P(2)).NOT2    TEST NOT RETURN DSNAME
         DS    0H                  ALIGN TEXT UNIT
&TPA(2)&N DC   XL2'56',H'1',H'44',CL44' ' RETURN DSNAME TEXT UNIT
.NOT2    ANOP
.* RETURN VOLUME SERIAL TEXT UNIT
         AIF   (NOT &P(3)).NOT3    TEST NOT RETURN VOLUME SERIAL
         DS    0H                  ALIGN TEXT UNIT
&TPA(3)&N DC   XL2'5D',H'1',H'6',CL6' ' RETURN VOLUME SERIAL TEXT UNIT
.NOT3    ANOP
.* RETURN DSORG TEXT UNIT
         AIF   (NOT &P(4)).NOT4    TEST NOT RETURN DSORG
         DS    0H                  ALIGN TEXT UNIT
&TPA(4)&N DC   XL2'57',H'1',H'2',CL2' ' RETURN DSORG TEXT UNIT
.NOT4    ANOP
.* DDNAME TEXT UNIT
         AIF   (NOT &P(5)).NOT5    TEST NOT DDNAME
&A       SETA  K'&DDNAME
         DS    0H                  ALIGN TEXT UNIT
&TPA(5)&N DC   XL2'01',H'1',H'&A',CL8'&DDNAME' DDNAME TEXT UNIT    @L2C
.NOT5    ANOP
.* DSNAME TEXT UNIT
         AIF   (NOT &P(6)).NOT6    TEST NOT DSNAME
&A       SETA  K'&DSN-2
         DS    0H                  ALIGN TEXT UNIT
&TPA(6)&N DC   XL2'02',H'1',H'&A',CL44&DSN DSNAME TEXT UNIT        @L2C
.NOT6    ANOP
.* VOLUME SERIAL TEXT UNIT
         AIF   (NOT &P(7)).NOT7    TEST NOT VOLUME SERIAL
&A       SETA  K'&VOL
         DS    0H                  ALIGN TEXT UNIT
&TPA(7)&N DC   XL2'10',H'1',H'&A',CL6'&VOL' VOLUME SER TEXT UNIT   @L2C
.NOT7    ANOP
.* UNIT TEXT UNIT
         AIF   (NOT &P(8)).NOT8    TEST NOT UNIT
&A       SETA  K'&UNIT
         DS    0H                  ALIGN TEXT UNIT
&TPA(8)&N DC   XL2'15',H'1',H'&A',CL8'&UNIT' UNIT TEXT UNIT        @L2C
.NOT8    ANOP
.* SSREQ TEXT UNIT
         AIF   (NOT &P(9)).NOT9    TEST NOT SSREQ
&A       SETA  K'&SSREQ
         DS    0H                  ALIGN TEXT UNIT
&TPA(9)&N DC   XL2'5C',H'1',H'&A',CL8'&SSREQ' SUB-SYSTEM RQST TU   @L2C
.NOT9    ANOP
.* PASSWORD TEXT UNIT
         AIF   (NOT &P(10)).NOT10  TEST NOT PASSWORD
&A       SETA  K'&PASSW
         DS    0H                  ALIGN TEXT UNIT
&TPA(10)&N DC  XL2'50',H'1',H'&A',CL8'&PASSW' PASSWORD TEXT UNIT   @L2C
.NOT10   ANOP
.* PERMANENTLY ALLOCATED ATTRIBUTE TEXT UNIT
         AIF   (NOT &P(11)).NOT11  TEST NOT PERMANENTLY ALLOCATED ATTRI
         DS    0H                  ALIGN TEXT UNIT
&TPA(11)&N DC  XL2'52',H'0'        PERM ALLOCATED ATTRIBUTE TEXT UNIT
.NOT11   ANOP
.* CONVERTIBLE ATTRIBUTE TEXT UNIT
         AIF   (NOT &P(12)).NOT12  TEST NOT CONVERTIBLE ATTRIBUTE
         DS    0H                  ALIGN TEXT UNIT
&TPA(12)&N DC  XL2'53',H'0'        CONVERTIBLE ATTRIBUTE TEXT UNIT
.NOT12   ANOP
.* DATA SET STATUS TEXT UNIT
         AIF   (NOT &P(13)).NOT13  TEST NOT DATA SET STATUS
         DS    0H                  ALIGN TEXT UNIT
&TPA(13)&N DC  XL2'04',H'1',H'1',XL1'&STATS' DATA SET STATUS TEXT UNIT
.NOT13   ANOP
.* DATA SET NORMAL DISP TEXT UNIT
         AIF   (NOT &P(14)).NOT14  TEST NOT DATA SET NORMAL DISP
         DS    0H                  ALIGN TEXT UNIT
&TPA(14)&N DC  XL2'05',H'1',H'1',XL1'&NDISP' DSET NORM DISP TEXT UNIT
.NOT14   ANOP
.* DATA SET CONDITIONAL DISP TEXT UNIT
         AIF   (NOT &P(15)).NOT15  TEST NOT DATA SET CONDITIONAL DISP
         DS    0H                  ALIGN TEXT UNIT
&TPA(15)&N DC  XL2'06',H'1',H'1',XL1'&CDISP' DSET COND DISP TEXT UNIT
.NOT15   ANOP
.* SPACE ALLOCATED BY TRACKS ATTRIBUTE TEXT UNIT
         AIF   (NOT &P(16)).NOT16  TEST NOT SPACE ALLOCATED BY TRACKS
         DS    0H                  ALIGN TEXT UNIT
&TPA(16)&N DC  XL2'07',H'0'        SPACE ALLOCATED BY TRACKS TEXT UNIT
.NOT16   ANOP
.* SPACE ALLOC BY CYLS TEXT UNIT
         AIF   (NOT &P(17)).NOT17  TEST NOT SPACE ALLOC BY CYLS
         DS    0H                  ALIGN TEXT UNIT
&TPA(17)&N DC  XL2'08',H'0'        SPACE ALLOC BY CYLS TEXT UNIT
.NOT17   ANOP
.* BLOCK SPACE TEXT UNIT
         AIF   (NOT &P(18)).NOT18  TEST NOT BLOCK SPACE
         DS    0H                  ALIGN TEXT UNIT
&TPA(18)&N DC  XL2'09',H'1',H'3',FL3'&SPACE(1)' BLOCK SPACE TEXT UNIT
.NOT18   ANOP
.* PRIME SPACE TEXT UNIT
         AIF   (NOT &P(19)).NOT19  TEST NOT PRIME SPACE
         DS    0H                  ALIGN TEXT UNIT
         BLSCAMM2 &SPACE(2),1      EXTRACT PRIMARY SPACE QUANTITY
&TPA(19)&N DC  XL2'0A',H'1',H'3',FL3'&BLSCAGC' PRIME SPACE TEXT UNIT
.NOT19   ANOP
.* SECONDARY SPACE TEXT UNIT
         AIF   (NOT &P(20)).NOT20  TEST NOT SECONDARY SPACE
         DS    0H                  ALIGN TEXT UNIT
         BLSCAMM2 &SPACE(2),2      EXTRACT SECONDARY SPACE QUANTITY
&TPA(20)&N DC  XL2'0B',H'1',H'3',FL3'&BLSCAGC' SECDY SPACE TEXT UNIT
.NOT20   ANOP
.* SPACE RELEASE TEXT UNIT
         AIF   (NOT &P(21)).NOT21  TEST NOT SPACE RELEASE
         DS    0H                  ALIGN TEXT UNIT
&TPA(21)&N DC  XL2'0D',H'0'        SPACE RELEASE TEXT UNIT
.NOT21   ANOP
.* ALLOC CONTIG SPACE TEXT UNIT
         AIF   (NOT &P(22)).NOT22  TEST NOT ALLOC CONTIG SPACE
         DS    0H                  ALIGN TEXT UNIT
&TPA(22)&N DC  XL2'0E',H'1',H'1',XL1'08' ALLOC CONTIG SPACE TEXT UNIT
.NOT22   ANOP
.* SPACE ROUND TO CYLS TEXT UNIT
         AIF   (NOT &P(23)).NOT23  TEST NOT SPACE ROUND TO CYLS
         DS    0H                  ALIGN TEXT UNIT
&TPA(23)&N DC  XL2'0F',H'0'        SPACE ROUND TO CYLS TEXT UNIT
.NOT23   ANOP
.* DATA SET SEQNO TEXT UNIT
         AIF   (NOT &P(24)).NOT24  TEST NOT DATA SET SEQNO
         DS    0H                  ALIGN TEXT UNIT
&TPA(24)&N DC  XL2'1F',H'1',H'2',H'&LABEL(1)' DATA SET SEQNO TEXT UNIT
.NOT24   ANOP
.* LABEL TYPE TEXT UNIT
         AIF   (NOT &P(25)).NOT25  TEST NOT LABEL TYPE
         DS    0H                  ALIGN TEXT UNIT
&TPA(25)&N DC  XL2'1E',H'1',H'1',XL1'&LABELTY' LABEL TYPE TEXT UNIT
.NOT25   ANOP
.* PASSWORD PROTECT TEXT UNIT
         AIF   (NOT &P(26)).NOT26  TEST NOT PASSWORD PROTECT
         DS    0H                  ALIGN TEXT UNIT
&TPA(26)&N DC  XL2'20',H'1',H'1',XL1'&PASPR' PASSWORD PROT TEXT UNIT
.NOT26   ANOP
.* DATA SET RETENTION PERIOD TEXT UNIT
         AIF   (NOT &P(27)).NOT27  TEST NOT DATA SET RETENTION PERIOD
         DS    0H                  ALIGN TEXT UNIT
&TPA(27)&N DC  XL2'23',H'1',H'2',H'&LABEL(4)' DATA SET RETPD TEXT UNIT
.NOT27   ANOP
.* SYSOUT CLASS TEXT UNIT
         AIF   (NOT &P(28)).NOT28  TEST NOT SYSOUT CLASS
&C       SETC  '&SYSOUT(1)'
         DS    0H                  ALIGN TEXT UNIT
&TPA(28)&N DC  XL2'18',H'1',H'1',CL1'&C' SYSOUT CLASS TEXT UNIT
.NOT28   ANOP
.* SYSOUT PROGRAM NAME TEXT UNIT
         AIF   (NOT &P(29)).NOT29  TEST NOT SYSOUT PROGRAM NAME
&A       SETA  K'&SYSOUT(2)
&C       SETC  '&SYSOUT(2)'
         DS    0H                  ALIGN TEXT UNIT
&TPA(29)&N DC  XL2'19',H'1',H'&A',CL8'&C'  PROGRAM NAME TEXT UNIT  @L2C
.NOT29   ANOP
         AGO   .DONE                                               @L1A
.*   BUILD TEXT UNITS FOR INFORMATION RETRIEVAL VERB               @L1A
.INTUS   ANOP                                                      @L1A
.* RETURN DDNAME TEXT UNIT                                         @L1A
         AIF   (NOT &P(1)).NOTIN1  TEST NOT RETURN DDNAME          @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(1)&N DC   XL2'04',H'1',H'8',CL8' ' RETURN DDNAME TEXT UNIT    @L1A
.NOTIN1  ANOP                                                      @L1A
.* RETURN DSNAME TEXT UNIT                                         @L1A
         AIF   (NOT &P(2)).NOTIN2  TEST NOT RETURN DSNAME          @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(2)&N DC   XL2'05',H'1',H'44',CL44' ' RETURN DSNAME TEXT UNIT  @L1A
.NOTIN2  ANOP                                                      @L1A
.* RETURN MEMBER NAME TEXT UNIT                                    @L1A
         AIF   (NOT &P(3)).NOTIN3  TEST NOT RETURN MEMBER NAME     @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(3)&N DC   XL2'06',H'1',H'8',CL8' ' RETURN MEMBER NAME TU      @L1A
.NOTIN3  ANOP                                                      @L1A
.* RETURN STATUS TEXT UNIT                                         @L1A
         AIF   (NOT &P(4)).NOTIN4  TEST NOT RETURN STATUS          @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(4)&N DC   XL2'07',H'1',H'1',CL1' ' RETURN STATUS TEXT UNIT    @L1A
.NOTIN4  ANOP                                                      @L1A
.* RETURN NORMAL DISPOSITION TEXT UNIT                             @L1A
         AIF   (NOT &P(5)).NOTIN5  TEST NOT RETURN NORMAL DISP     @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(5)&N DC   XL2'08',H'1',H'1',CL1' ' RETURN NORMAL DISP TU      @L1A
.NOTIN5  ANOP                                                      @L1A
.* RETURN CONDITIONAL DISPOSITION TEXT UNIT                        @L1A
         AIF   (NOT &P(6)).NOTIN6  TEST NOT RETURN COND DISP       @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(6)&N DC   XL2'09',H'1',H'1',CL1' ' RETURN COND DISP TU        @L1A
.NOTIN6  ANOP                                                      @L1A
.* RETURN DSORG TEXT UNIT                                          @L1A
         AIF   (NOT &P(7)).NOTIN7  TEST NOT RETURN DSORG           @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(7)&N DC   XL2'0A',H'1',H'2',CL2' ' RETURN DSORG TEXT UNIT     @L1A
.NOTIN7  ANOP                                                      @L1A
.* DDNAME TEXT UNIT                                                @L1A
         AIF   (NOT &P(8)).NOTIN8  TEST NOT DDNAME                 @L1A
&A       SETA  K'&DDNAME                                           @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(8)&N DC   XL2'01',H'1',H'&A',CL8'&DDNAME' DDNAME TEXT UNIT    @L1A
.NOTIN8  ANOP                                                      @L1A
.* DSNAME TEXT UNIT                                                @L1A
         AIF   (NOT &P(9)).NOTIN9  TEST NOT DSNAME                 @L1A
&A       SETA  K'&DSN-2                                            @L1A
         DS    0H                  ALIGN TEXT UNIT                 @L1A
&TPA(9)&N DC   XL2'02',H'1',H'&A',CL8&DSN DSNAME TEXT UNIT         @L1A
.NOTIN9  ANOP                                                      @L1A
.DONE    ANOP  ,                                                   @D1C
         MEND
./ ADD NAME=BLSCAMSL
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCAMSL) COMP(SC132) PROD(JIP1329): MODEL IDCAMS SYSIN TEXT
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
&N       BLSCAMSL &TEXT,&END=YES MODEL IDCAMS SYSIN TEXT           @D1C
         LCLA  &CTR           LOOP COUNTER
         LCLA  &NUM           NUMBER OF TEXT SEGMENTS
         LCLA  &L             TEXT SEGMENT LENGTH
         LCLA  &LL            TEXT SEGMENT MOVE LENGTH
         LCLA  &LLL           TEXT SEGMENT LENGTH + 4
         LCLC  &C             TEXT SEGMENT
         LCLC  &CC            TRUNCATED TEXT SEGMENT
         LCLC  &PAD           ONE BLANK
&CTR     SETA  0              INIT LOOP COUNTER
&NUM     SETA  N'&TEXT        INIT LOOP LIMIT
&PAD     SETC  ' '
         AIF   (N'&N EQ 0).CNT  TEST FOR NO LOCSYMB
&N       DC    0H'0'          ALIGN LIST
         AGO   .CNT
.LOOP    ANOP
&C       SETC  '&TEXT(&CTR)'  TEXT SEGMENT
&L       SETA  K'&C-1
         AIF   (&L LE 72).OK  LENGTH OK
&L       SETA  72             TRUNCATED LENGTH
         MNOTE 8,'SUB PARM NUMBER ''&CTR'' EXCEEDS 71 BYTES. PARAMETER *
               IS TRUNCATED'
.OK      ANOP
&LL      SETA  &L-1           MOVE LENGTH
&LLL     SETA  &L+4           ENTRY LENGTH
&CC      SETC  '&C'(2,&LL)    REMOVE QUOTES AND TRUNCATE IF NECESSARY
         DC    HL2'&LLL',HL2'0',CL&L'&PAD&CC' TEXT SEGMENT
.CNT     ANOP
&CTR     SETA  &CTR+1         BUMP LOOP COUNTER
         AIF   (&CTR LE &NUM).LOOP  TEST LOOP END
         AIF   ('&END' EQ 'NO').MEND
         DC    HL2'0'         END OF TEXT
.MEND    MEND
./ ADD NAME=BLSCFREF
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCFREF) COMP(SC132) PROD(JIP1329): FREE AUTOMATIC STORAGE
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
&L       BLSCFREF &R,&LV=,&A=,&SP= FREE AUTOMATIC STORAGE          @D1C
&L       L     @14,24(,@13)      PICK UP PLIST POINTER FROM SAVE AREA
         L     @14,0(,@14)       PICK UP DMCB POINTER FROM PLIST
         ST    @01,DMCBFRE(,@14) RESTORE NEXT FREE AREA ADDRESS
         MEND
./ ADD NAME=BLSCFRES
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCFRES) COMP(SC132) PROD(JIP1329): FREE AUTOMATIC STORAGE
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
&L       BLSCFRES &R,&LV=,&A=,&SP= FREE AUTOMATIC STORAGE          @D1C
&L       L     @14,24(@13)       PICK UP DMCB POINTER FROM SAVE AREA
         ST    @01,DMCBFRE(@14)  RESTORE NEXT FREE AREA ADDRESS
         MEND
./ ADD NAME=BLSCGETF
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCGETF) COMP(SC132) PROD(JIP1329): GET AUTOMATIC STORAGE
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
&L       BLSCGETF &R,&LV=,&SP=   GET AUTOMATIC STORAGE             @D1C
         LCLC  &BPT
&BPT     SETC 'DMG&SYSNDX'
&L       L     @14,0(,@01)       USE REGISTER 14 TO ADDRESS DMCB
         LR    @01,@00           LENGTH INTO REG 1 FOR INC BY LOAD ADDR
         LA    @00,7(@01)        THIS AND NEXT 2 INSTRUCTIONS
         SRL   @00,3             ROUND LENGTH TO A MULTIPLE OF EIGHT
         SLL   @00,3             FOR COMPATIBILITY WITH GETMAIN
         A     @00,DMCBFRE(@14)  COMPUTE NEXT FREE ADDRESS
         C     @00,DMCBEOB(@14)  IS THERE ENOUGH ROOM?
         BL    &BPT              IF SO THEN PROCEED
         ABEND 999,DUMP          SHOULD NEVER OCCUR
&BPT     L     @01,DMCBFRE(@14)  PICK UP ADDRESS TO USE FOR @DATD  @D1C
         ST    @00,DMCBFRE(@14)  STORE ADDRESS OF NEXT FREE AREA
         MEND
./ ADD NAME=BLSCGETS
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSCGETS) COMP(SC132) PROD(JIP1329): GET AUTOMATIC STORAGE
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
         MACRO
&L       BLSCGETS &R,&LV=,&SP=   GET AUTOMATIC STORAGE             @D1C
         LCLC  &BPT
&BPT     SETC 'DMG&SYSNDX'
&L       LR    @14,@01           USE REGISTER 14 TO ADDRESS DMCB
         LR    @01,@00           LENGTH INTO REG 1 FOR INC BY LOAD ADDR
         LA    @00,7(@01)        THIS AND NEXT 2 INSTRUCTIONS
         SRL   @00,3             ROUND LENGTH TO A MULTIPLE OF EIGHT
         SLL   @00,3             FOR COMPATIBILITY WITH GETMAIN
         A     @00,DMCBFRE(@14)  COMPUTE NEXT FREE ADDRESS
         C     @00,DMCBEOB(@14)  IS THERE ENOUGH ROOM?
         BL    &BPT              IF SO THEN PROCEED
         ABEND 999,DUMP          SHOULD NEVER OCCUR
&BPT     L     @01,DMCBFRE(@14)  PICK UP ADDRESS TO USE FOR @DATD  @D1C
         ST    @00,DMCBFRE(@14)  STORE ADDRESS OF NEXT FREE AREA
         MEND
./ ADD NAME=BLSCSECT
*** START OF SPECIFICATIONS********************************************
*
* $MAC(BLSCSECT) COMP(SC132) PROD(JIP1329): BEGIN IPCS CSECT
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= HBB2102,HIP2102,81260,DSDPRW: AMODE/RMODE
*
***** END OF SPECIFICATIONS********************************************
         MACRO
&SECT    BLSCSECT &AMODE=24,&RMODE=24
&SECT    CSECT ,
         MEND  ,                       END MACRO BLSCSECT
./ ADD NAME=BLSDMSGG
*** START OF SPECIFICATIONS *****************************************
*
* $MAC(BLSDMSGG) COMP(SC132) PROD(JIP1329): MESSAGE CSECT GENERATOR
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPSR: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
*** END OF SPECIFICATIONS *******************************************
        MACRO
&MSGNO  BLSDMSGG &MSG         MESSAGE CSECT GENERATOR              @D1C
         LCLA  &LOC           CURRENT &TEXT SCAN INDEX.
         LCLA  &NINSRT        TOTAL NUMBER OF INSERT LOCATIONS FOUND.
         LCLA  &LOCTXT(255)   TEXT SEGMENT N STARTING INDEX.
         LCLA  &LENTXT(255)   TEXT SEGMENT N LENGTH.
         LCLA  &NDQTXT(255)   NUMBER OF DOUBLE QUOTES IN TEXT SEGMENT N
         LCLA  &NDQ           NUMBER OF DOUBLE QUOTES COUNTER.
         LCLA  &LMSG          LENGTH OF ENTIRE MESSAGE.
         LCLC  &TEXT          TEXT OF MESSAGE.
         LCLA  &LTEXT         LENGTH OF TEXT OF MESSAGE.
         LCLC  &SEG           TEXT SEGMENT.
         LCLA  &LSEG          LENGTH OF TEXT SEGMENT.
         LCLA  &MSGLEN        LENGTH OF CONSTRUCTED MESSAGE.
         LCLA  &CNT           LOOP COUNTER.
         LCLA  &FNLLEN        FINAL LENGTH OF TEXT SEQMENT N.
         LCLC  &TMSGID        TEMPORARY MESSAGE IDENTIFIER.
         LCLA  &TNMSGID       TEMPORARY NUMERIC MESSAGE IDENTIFIER.
         LCLC  &TMSGC         TEMPORARY CHARACTER(S) OF THE MESSAGE ID.
         LCLA  &COMP          COMPONENT NUMBER.
         LCLA  &SCOMP         SUBCOMPONENT NUMBER.
         LCLA  &SSCOMP        SUB-SUBCOMPONENT NUMBER.
         LCLC  &LABEL         LABEL FOR MESSAGE IDENTIFIERS.
.*
.*******************************************************************
.*  MESSAGE IDENTIFIERS ARE INPUT THROUGH &MSGNO AS CXXYZZ.        *
.*    C  - ANY ALPHABETIC CHARACTER. IT IS STRIPPED OFF AND        *
.*         THROWN AWAY. IT IS USED BECAUSE THE ASSEMBLER INSISTS   *
.*         THAT A LABEL STARTS WITH AN ALPHABETIC.                 *
.*    XX - IDENTIFIES THE COMPONENT BLOCK OF THE SET OF MESSAGES.  *
.*    Y  - IDENTIFIES THE SUBCOMPONENT BLOCK OF THE SET OF         *
.*         MESSAGES.                                               *
.*    ZZ - IDENTIFIES THE SUB-SUBCOMPONENT BLOCK OF THE SET OF     *
.*         MESSAGES.                                               *
.*******************************************************************
.*
         GBLA  &MAXID         MAXIMUM &MSGID ENTERED.
         GBLA  &MSGID(1000)   ASCENDING SEQUENCE OF MESSAGE IDS.
         GBLA  &NMSGS         NUMBER OF MESSAGES ENTERED.
         GBLA  &MSGCP(1000)   COMPONENT NUMBER OF MESSAGE N.
         GBLA  &MSGSCP(1000)  SUBCOMPONENT NUMBER OF MESSAGE N.
         GBLA  &MSGSSCP(1000) SUB-SUBCOMPONENT NUMBER OF MESSAGE N.
         GBLA  &FIRST         FIRST TIME SWITCH.
         GBLA  &MAXCP         MAX COMPONENT NUMBER ENTERED. FOR
.*                            EXAMPLE, THE MAXIMUM COMPONENT NUMBER
.*                            ENTERED MIGHT BE 6.
         GBLA  &MAXSCP(100)   MAX SUBCOMPONENT NUMBER ENTERED FOR EACH
.*                            COMPONENT. FOR EXAMPLE, FOR COMPONENT
.*                            05, THE MAXIMUM SUBCOMPONENT NUMBER
.*                            ENTERED MIGHT BE 4.
         GBLA  &MAXSSCP(1000) MAX SUB-SUBCOMPCOMPONENT NUMBER ENTERED
.*                            FOR EACH SUBCOMPONENT. FOR EXAMPLE, FOR
.*                            SUBCOMPONENT 054, THE MAXIMUM SUB-
.*                            SUBCOMPONENT NUMBER ENTERED MIGHT BE 22.
.*
.**********************************************************************
.*  THIS SECTION CAUSES INITIAL INFORMATION TO BE PUT IN THE CSECT.   *
.**********************************************************************
.*
         AIF   (&FIRST NE 0).NOINIT
&FIRST   SETA  1
         SPACE 3
         DC    A(MSGINDX)     ADDRESS OF COMPONENT CROSS
*                             REFERENCE INDEX TABLE.
         DC    CL8'&SYSECT'   CSECT NAME.
         DC    CL8'&SYSDATE'  DATE OF LAST COMPILE.
         DC    CL8'&SYSTIME'  TIME OF LAST COMPILE.
         SPACE 3
.NOINIT  ANOP
.*
.**********************************************************************
.*  THIS SECTION DETERMINES WHETHER CROSS REFERENCE INDEX TABLES      *
.*  ARE TO NOW BE PRODUCED. THE LAST MACRO IN A MESSAGE CSECT SHOULD  *
.*  OMIT THE MESSAGE TEXT, WHICH WILL CAUSE THE CROSS REFERENCE       *
.*  TO BE PRODUCED.                                                   *
.**********************************************************************
.*
         AIF   (T'&MSG EQ 'O').CINDX
.*
.**********************************************************************
.*  THIS SECTION ENSURES THAT &MSGNO IS BEING ENTERED IN ASCENDING    *
.*  SEQUENCE. IF NOT, AN MNOTE WITH SEVERITY 12 IS ISSUED. IF SO,     *
.*  THE GLOBAL VARIABLES ARE UPDATED TO REFLECT THE NEW MESSAGE.      *
.**********************************************************************
.*
         AIF   (K'&MSGNO NE 6).E1MSGNO
&TMSGID  SETC  '&MSGNO'(2,(K'&MSGNO)-1)
&CNT     SETA  1
.CKMSGID ANOP
&TMSGC   SETC  '&TMSGID'(&CNT,1)
         AIF   ('&TMSGC' LT '0' OR '&TMSGC' GT '9').E1MSGNO
&CNT     SETA  &CNT+1
         AIF   (&CNT LE 5).CKMSGID
&TNMSGID SETA  &TMSGID
.* MESSAGE NUMBER ENTERED IS IN PROPER SYNTAX.
.* CHECK FOR ASCENDING SEQUENCE
         AIF   (&TNMSGID LE &MAXID).E2MSGNO
&MAXID   SETA  &TNMSGID
&TMSGC   SETC  '&TMSGID'(1,2)
&COMP    SETA  &TMSGC
&TMSGC   SETC  '&TMSGID'(3,1)
&SCOMP   SETA  &TMSGC
&TMSGC   SETC  '&TMSGID'(4,2)
&SSCOMP  SETA  &TMSGC
&MAXCP   SETA  &COMP
&MAXSCP(&COMP+1)  SETA  &SCOMP
&MAXSSCP(10*&COMP+&SCOMP+1)  SETA  &SSCOMP
&NMSGS   SETA  &NMSGS+1
&MSGID(&NMSGS)  SETA  &TNMSGID
&MSGCP(&NMSGS)    SETA  &COMP
&MSGSCP(&NMSGS)   SETA  &SCOMP
&MSGSSCP(&NMSGS)  SETA  &SSCOMP
.*
.*******************************************************************
.*  THIS SECTION INITIALIZES FOR THE TEXT SCAN.                    *
.*******************************************************************
.*
&LMSG    SETA  K'&MSG
&TEXT    SETC  '&MSG'(2,&LMSG-2) STRIP OFF QUOTES AROUND &MSG.
&LTEXT   SETA  &LMSG-2        SET LENGTH OF TEXT.
&LOC     SETA  1              STARTING SCAN LOCATION.
&LOCTXT(&NINSRT+1)  SETA &LOC STARTING INDEX OF TEXT SEGMENT 1.
&NDQ     SETA  0              INITIALIZE THE DOUBLE QUOTE COUNTER.
.*
.*******************************************************************
.*  THIS SECTION IS THE MAIN DRIVING LOOP FOR THE TEXT SCAN.       *
.*******************************************************************
.*
.MAINLOP AIF   ('&TEXT'(&LOC,1) EQ ',').CKINS
         AIF   ('&TEXT'(&LOC,1) EQ '''').CKQUOTE
.CONTML  ANOP
&LOC     SETA  &LOC+1         BUMP &TEXT INDEX PTR.
.CONTMLA ANOP
         AIF   (&LOC LT &LTEXT).MAINLOP
.* DROP THROUGH IMPLIES THAT ENTIRE TEXT HAS BEEN SCANNED FOR INSERTS.
.*
.* BUMP TEXT INDEX PTR TO ONE PAST END OF TEXT.
&LOC     SETA  &LTEXT+1
.* SET LENGTH OF LAST TEXT SEGMENT.
&LENTXT(&NINSRT+1)  SETA  &LOC-&LOCTXT(&NINSRT+1)
.* SAVE NUMBER OF DOUBLE QUOTES IN THE LAST TEXT SEGMENT.
&NDQTXT(&NINSRT+1)  SETA  &NDQ
         AGO   .FORM          GO FORM OUTPUT CONSTRUCTS.
.*
.*******************************************************************
.*  THIS SECTION CHECKS FOR AND HANDLES INSERT LOCATIONS.          *
.*******************************************************************
.*
.CKINS   AIF   ('&TEXT'(&LOC+1,1) NE ',').CONTML
.* HAVE FOUND A DOUBLE COMMA, IMPLYING THIS IS THE END OF THIS
.* TEXT SEGMENT. THE DOUBLE COMMA IS DELETED FROM THE TEXT SEGMENT.
.*
.* COMPUTE AND SAVE LENGTH OF THIS TEXT SEGMENT.
&LENTXT(&NINSRT+1)  SETA  &LOC-&LOCTXT(&NINSRT+1)
.* SAVE NUMBER OF DOUBLE QUOTES FOUND IN THIS TEXT SEGMENT.
&NDQTXT(&NINSRT+1)  SETA  &NDQ
.* RE-INITIALIZE THE DOUBLE QUOTE COUNTER.
&NDQ     SETA  0
.* UPDATE NUMBER OF INSERTS FOUND.
&NINSRT  SETA  &NINSRT+1
.* UPDATE CURRENT SCAN INDEX PTR PAST BOTH COMMAS.
&LOC     SETA  &LOC+2
.* SET NEXT TEXT SEGMENT STARTING INDEX.
&LOCTXT(&NINSRT+1)  SETA  &LOC
         AGO   .CONTMLA
.*
.*******************************************************************
.*  THIS SECTION CHECKS FOR AND HANDLES DOUBLE QUOTES.             *
.*******************************************************************
.*
.* SHOULD NEVER HIT JUST A SINGLE QUOTE, BUT MAKE CHECK ANYHOW.
.CKQUOTE AIF   ('&TEXT'(&LOC+1,1) NE '''').E3UNKN
&NDQ     SETA  &NDQ+1         BUMP NUMBER OF DOUBLE QUOTES FOUND.
&LOC     SETA  &LOC+2         BUMP SCAN INDEX PTR PAST BOTH QUOTES...
         AGO   .CONTMLA       ...AND GO CONTINUE SCAN.
.*
.*******************************************************************
.*  THIS SECTION FORMS THE MESSAGE SEGMENT CONSTRUCTS.             *
.*******************************************************************
.*
.FORM    ANOP
&MSGLEN  SETA  0
&LABEL   SETC  'BLS'.'&TMSGID'
&LABEL   DC    H'&NINSRT'     NUMBER OF INSERTS FOR THIS MESSAGE.
&CNT     SETA  1
.CONV1   AIF   (&CNT GT &NINSRT).FORMMSG
         DC    AL1(0),AL1(0)  RESERVED.
&CNT     SETA  &CNT+1
         AGO   .CONV1
.FORMMSG ANOP
&CNT     SETA  1
.NEXTSEG ANOP
&LSEG    SETA  &LENTXT(&CNT)       NUMBER OF CHARACTERS IN SEGMENT N.
.* FINAL LENGTH OF TEXT SEGMENT AFTER DOUBLE QUOTES ARE SQUEEZED OUT.
&FNLLEN  SETA  &LSEG-&NDQTXT(&CNT)
&MSGLEN  SETA  &MSGLEN + &FNLLEN   RUNNING COUNT OF TOTAL MESSAGE LEN.
         DC    AL1(&FNLLEN)   LENGTH OF TEXT SEGMENT.
         AIF   (&LSEG EQ 0).NOSGMT
&SEG     SETC  '&TEXT'(&LOCTXT(&CNT),&LSEG)
         DC    C'&SEG'        TEXT SEGMENT.
.NOSGMT  ANOP
&CNT     SETA  &CNT+1
         AIF   (&CNT LE &NINSRT+1).NEXTSEG
         AIF   (&MSGLEN LE 255).ENDFORM
         MNOTE 12,'MESSAGE LARGER THAN 255 CHARACTERS.'
.ENDFORM ANOP
         SPACE 2
         AGO   .MEND
.*
.**********************************************************************
.*  THIS SECTION CONSTRUCTS THE COMPONENT MESSAGE CROSS               *
.*  REFERENCE INDEX TABLE.                                            *
.**********************************************************************
.*
.CINDX   ANOP
         SPACE 5
PATCHLBL EQU   *              PATCH AREA.
         ORG   *+1+(*-&SYSECT)/10
         EJECT
**********************************************************************
*  COMPONENT CROSS REFERENCE INDEX TABLE.                            *
**********************************************************************
         SPACE 2
         CNOP  0,4
MSGINDX  EQU   *
         DC    F'&MAXCP'
&CNT     SETA  1
&COMP    SETA  0
.CKCOMP  ANOP
         AIF   (&COMP EQ &MSGCP(&CNT)).FOUND1
         DC    A(0)
.BCOMP   ANOP
&COMP    SETA  &COMP+1
         AIF   (&COMP GT &MAXCP).SCOMP
         AGO   .CKCOMP
.FOUND1  AIF   (&COMP LE 9).PAD1
         DC    A(SBLK&COMP)
         AGO   .NXTCOMP
.PAD1    DC    A(SBLK0&COMP)
.NXTCOMP ANOP
&CNT     SETA  &CNT+1
         AIF   (&CNT GT &NMSGS).SCOMP
         AIF   (&MSGCP(&CNT) EQ &MSGCP(&CNT-1)).NXTCOMP
         AGO   .BCOMP
.*
.**********************************************************************
.*  THIS SECTION CONSTRUCTS THE SUBCOMPONENT MESSAGE CROSS            *
.*  REFERENCE INDEX TABLES.                                           *
.**********************************************************************
.*
.SCOMP   ANOP
         EJECT
&CNT     SETA  1
.NEWCOMP ANOP
         SPACE 3
**********************************************************************
*  SUBCOMPONENT MESSAGE CROSS REFERENCE INDEX TABLE.                 *
**********************************************************************
         SPACE 2
&SCOMP   SETA  0
&COMP    SETA  &MSGCP(&CNT)
         AIF   (&COMP LE 9).PADS1
&LABEL   SETC  'SBLK'.'&COMP'
         AGO   .LBSCOMP
.PADS1   ANOP
&LABEL   SETC  'SBLK0'.'&COMP'
.LBSCOMP ANOP
&LABEL   EQU   *
         DC    F'&MAXSCP(&COMP+1)'
.CKSCOMP ANOP
         AIF   (&SCOMP EQ &MSGSCP(&CNT)).FOUND2
         DC    A(0)
.BSCOMP  ANOP
&SCOMP   SETA  &SCOMP+1
         AIF   (&SCOMP GT &MAXSCP(&COMP+1)).NXTSC
         AGO   .CKSCOMP
.FOUND2  AIF   (&COMP LE 9).PADS2
         DC    A(SSBLK&COMP&SCOMP)
         AGO   .NXTSC
.PADS2   ANOP
         DC    A(SSBLK0&COMP&SCOMP)
.NXTSC   ANOP
&CNT     SETA  &CNT+1
         AIF   (&CNT GT &NMSGS).SSCOMP
         AIF   (&MSGCP(&CNT) NE &COMP).NEWCOMP
         AIF   (&MSGSCP(&CNT) EQ &MSGSCP(&CNT-1)).NXTSC
         AGO   .BSCOMP
.*
.**********************************************************************
.*  THIS SECTION CONTSTRUCTS THE SUB-SUBCOMPONENT MESSAGE             *
.*  CROSS REFERENCE INDEX TABLE.                                      *
.**********************************************************************
.*
.SSCOMP  ANOP
         EJECT
&CNT     SETA  1
.NEWSCMP ANOP
         SPACE 3
**********************************************************************
*  SUB-SUBCOMPONENT CROSS REFERENCE INDEX TABLE.                     *
**********************************************************************
         SPACE 2
&SSCOMP  SETA  0
&SCOMP   SETA  &MSGSCP(&CNT)
&COMP    SETA  &MSGCP(&CNT)
         AIF   (&COMP LE 9).PADSS1
&LABEL   SETC  'SSBLK'.'&COMP'.'&SCOMP'
         AGO   .LBSSCMP
.PADSS1  ANOP
&LABEL   SETC  'SSBLK0'.'&COMP'.'&SCOMP'
.LBSSCMP ANOP
&LABEL   EQU   *
         DC    F'&MAXSSCP(10*&COMP+&SCOMP+1)'
.CKSSCMP ANOP
         AIF   (&SSCOMP EQ &MSGSSCP(&CNT)).FOUND3
         DC    A(0)
.BSSCOMP ANOP
&SSCOMP  SETA  &SSCOMP+1
         AIF   (&SSCOMP GT &MAXSSCP(10*&COMP+&SCOMP+1)).NXTSSC
         AGO   .CKSSCMP
.FOUND3  AIF   (&COMP LE 9).PADSS2
         DC    A(BLS&MSGID(&CNT))
         AGO   .NXTSSC
.PADSS2  DC    A(BLS0&MSGID(&CNT))
.NXTSSC  ANOP
&CNT     SETA  &CNT+1
         AIF   (&CNT GT &NMSGS).MEND
         AIF   (&MSGSCP(&CNT) NE &SCOMP).NEWSCMP
         AIF   (&MSGCP(&CNT) NE &COMP).NEWSCMP
         AGO   .BSSCOMP
.*
.**********************************************************************
.*  THIS SECTION CONTAINS THE MNOTE ERROR MESSAGES.                   *
.**********************************************************************
.*
.E1MSGNO MNOTE 12,'LABEL MUST BE ONE ALPHABETIC AND FIVE DIGITS.'
         AGO   .MEND
.E2MSGNO MNOTE 12,'LABELS MUST BE ENTERED IN ASCENDING SEQUENCE.'
         AGO   .MEND
.E3UNKN  MNOTE 12,'UNKNOWN CONDITION: SINGLE QUOTATION MARK DETECTED.'
         AGO   .MEND
.MEND    MEND
./ ADD NAME=BLSR327A
         TITLE 'BLSR3270--BLSR327A--SETUP AND CLEANUP'             @D3C
*** START OF SPECIFICATIONS*******************************************
*
* $MAC(BLSR327A) COMP(SC132) PROD(JIP1329): SETUP AND CLEANUP
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
* FUNCTION=
*  1. ESTABLISH ASSEMBLER ENVIRONMENT (PROLOG)
*  2. INITIALIZE FLAGS AND DATA AREAS
*  3. OUTPUT FORMATTED SCREEN BUFFER (TPUT)                        @01A
*  4. READ INPUT BUFFER (TGET, TCLEARQ)                            @01A
*  5. SET-UP RESPONSE ANALYSIS                                     @01A
*  6. RESET STATUS AS A RESULT OF VALIDATED INPUT                  @01A
*  7. ADD SUBCOMMAND LINE TO TSO STACK                             @01A
*  8. MAINTAIN DSPL3270 STACK                                      @01A
*  9. EXIT ASSEMBLER ENVIRONMENT (EPILOG)                          @01A
*
*     CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $L1= DIALOG,HIP2102,81138,DSDPRW: SPF DIALOG SUPPORT
* $L2= HBB2102,HIP2102,81260,DSDPRW: AMODE/RMODE ATTRIBUTES
* $D1= PERFORM,HIP2102,78343,DMGPRW: REDUCE IPCS PATH LENGTHS
* $D2= AMDPRDMP,HIP2102,79022,DMGPRW: REDUCE OVERHEAD OF EXIT SUPPORT
* $D3= QUALITY,HIP2102,81261,DSDPRW: IMPROVE COMMENTS, REMARKS
* $P1= TCLEARQ,HIP2102,79039,DMGPKB: FOLLOW TGET WITH TCLEARQ
* $01= OZ31999,EIP1102,78100,DMGPKB: SUPPORT IPCS FULL SCREEN MODE
*
***** END OF SPECIFICATIONS*******************************************
         COPY  BLSR327M           COPY GLOBAL DEFINITIONS
         COPY  BLSR327P           EQUATED VALUES AND DSECTS
         TITLE 'BLSR3270--BLSR327A--ENTRY POINT FROM BLSR3270'     @D3C
         SPACE 2
*---------------------------------------------------------------------
*  ESTABLISH ASSEMBLER ENVIRONMENT (PROLOG)
*---------------------------------------------------------------------
         SPACE
BLSR327A BLSCSECT ,                                                @L2C
         DROP  RA,RB,RC           PL/S DATAREGS & CODEREG          @D2C
         USING @SA00001,RD        ->AUTOMATIC STORAGE
         USING EA000100,RF        FORMAL LINKAGE REGISTER
EA000100 STM   R0,RF,SAVER0RF     SAVE INPUT REGISTERS
         SPACE 1
*---------------------------------------------------------------------
*  INITIALIZE FLAGS AND DATA AREAS
*---------------------------------------------------------------------
         SPACE 1
*---------------------------------------------------------------------
*        DSPL3270 UTILIZES A WORK AREA (AT WKAORG) IN AUTOMATIC
*        STORAGE WHICH DEFINES THE CURRENT FORMAT OF THE SCREEN.
*        THE CONTENT OF THIS AREA IS INITIALIZED ONE OF TWO WAYS,
*        DEPENDING OF THE SETTING OF THE RESET/NORESET OPERAND
*        CONSIDERED IN CONJUNCTION WITH THE EXISTENCE/NONEXISTENCE
*        OF PREVIOUSLY ESTABLISHED DUMP CLUSTER DATA:
*        1. INITIALIZED USING DATA SAVED IN THE DUMP CLUSTER IF
*           SUCH DATA EXISTS AND NORESET WAS ENTERED OR ALLOWED TO
*           DEFAULT.
*        2. INITIALIZED USING PERMANENT VALUES ADDRESSED BY FIELD
*           ZZ1327WP IF RESET WAS SPECIFIED AND/OR NO DUMP CLUSTER
*           EXISTS FOR THE CURRENT DUMP.
*---------------------------------------------------------------------
         SPACE
         CLI   WKRESET,1          DOES WORK AREA NEED INITIALIZATION?
         BNE   LA000200           NO
         L     RC,ZZ1P            ->ZZ1
         L     R0,ZZ1327WP(0,RC)  ->BLSR327W PERMANENT COPY
         LA    R1,WKALENG         LENGTH(BLSR327W)
         LA    R2,WKAORG          ->BLSR327W WORKING COPY
         LR    R3,R1              LENGTH(BLSR327W)
         MVCL  R2,R0              PERMANENT COPY=>WORKING COPY
         SPACE
LA000200 LA    RC,LA000200        PROCESSING BASE REGISTER (1 OF 2)
         DROP  RF
         USING LA000200,RC,RB
         LA    RB,LA000200+4095   PROCESSING BASE REGISTER (2 OF 2)
         LA    RB,1(RB)
         SPACE 2
*---------------------------------------------------------------------
*        INITIALIZE BLSRVPAS PARAMETER LIST
*---------------------------------------------------------------------
         LA    RF,PACKDEC+3       -> ASID (BINARY)
         ST    RF,PDEIP           INITIALIZE PDE
         LA    RF,PDE             -> PDE
         ST    RF,APDE            1ST PARAMETER
         L     RF,ZZ2P            -> ZZ2
         ST    RF,AZZ2            2ND PARAMETER
         L     RF,=X'80000000'    NO MESSAGE - NULL PARAMETER
         ST    RF,AMSG            3RD PARAMETER
*---------------------------------------------------------------------
*        DO HOUSEKEEPING
*---------------------------------------------------------------------
         SPACE
         LA    RF,0               ASSUME SUCCESSFUL
         ST    RF,SAVERF          -COMPLETION
         MVI   FLAG0,FLAG0FMT     INITIAL FLAG BYTE 0 STATUS
         MVI   FLAG1,FLAG1ADR+FLAG1ASI+FLAG1FMT+FLAG1ARE FLAG BYTE 1
         MVI   FLAG2,0            INITIAL FLAG BYTE 2 STATUS
         MVI   ERLN4,0            INITIAL INPUT ERROR STATUS
         MVI   SCRPO,0            INITIAL SCREEN POSITION INDICATOR
         MVI   NEWWCC,B'00000000' INITIAL WRITE CONTROL CHARACTER
         MVC   PREVCURS,=X'C5D3'  INITIAL CURSOR SAVE ADDRESS
         MVC   NEWLINES(4),WKALINES INITIAL LINES/AREA
         MVC   NEWLNCTL(19),WKALNCTL INITIAL LINE CONTROL DATA
         SPACE 1
         CLC   WKANB1,=CL6'CVT'   INITIAL ENTRY?
         BNE   LA000400           NO
         MVC   WKASTACK,ZZ2AMDC(R9) ->CVT
         SPACE
LA000400 BAL   R8,LA000820        GET RID OF EXTRANEOUS INPUT
         B     BLSR327G           START THE PROCESS
         SPACE 2
         COPY  BLSR327B           BUILD 3277 ORDER STREAM
         TITLE 'BLSR3270--BLSR327A--OUTPUT SCREEN BUFFER (TPUT)'   @D3C
*---------------------------------------------------------------------
*  OUTPUT FORMATTED SCREEN BUFFER (TPUT)
*---------------------------------------------------------------------
         SPACE
LA000500 L     R1,ZZ2P            ->ZZ2                            @L1C
         CLI   ZZ2EVEP(R1),0      TERMINATE?                       @L1C
         BNE   LA005600           YES
         LR    R0,RA              R0 WILL HAVE LENGTH FOR TPUT
         LA    R1,SCRNBUFR        ->TGET/TPUT BUFFER
         SLR   R0,R1              LENGTH TO WRITE
         ICM   R1,B'1000',=BL1'00001011' FULL SCREEN TPUT OPTION
         TPUT  (1),(0),R
         CH    RF,=H'8'           UNSUPPORTED RETURN CODE
         BNH   LA000510           NO
         LA    RF,16              YES - SET
         ST    RF,SAVERF          -RETURN CODE
         B     LA005600           -AND GIVE UP
LA000510 EQU   *
         B     LA000600(RF)       MAYBE. USE BRANCH TABLE TO DECIDE
LA000600 B     0(R8)              RC=0, SUCCESSFUL WRITE-RET TO CALLER
         B     LA005600           RC=4, ERROR. WE USE WAIT OPTION
         B     LA000500           RC=8, ATTN-ENTER SEQUENCE--RETRY
         SPACE 2
*---------------------------------------------------------------------
*  READ INPUT BUFFER (TGET, TCLEARQ)
*---------------------------------------------------------------------
         SPACE
LA000700 LA    R0,2560            LENGTH OF TGET/TPUT BUFFER
         LA    R1,SCRNBUFR        ->TGET/TPUT BUFFER
         ICM   R1,B'1000',=BL1'10000001' ASIS TGET OPTION
         TGET  (1),(0),R
         CH    RF,=H'12'          UNSUPPORTED RETURN CODE
         BNH   LA000710           NO
         LA    RF,16              YES - SET
         ST    RF,SAVERF          -RETURN CODE
         B     LA005600           -AND GIVE UP
LA000710 EQU   *
         B     LA000800(RF)       TEST TGET RETURN CODE
LA000800 B     LA000815           RC=0, SUCCESSFUL READ            @P1C
         B     LA005600           RC=4, ERROR. WE USE WAIT OPTION
         B     LC000200           RC=8, ATTN-ENTER SEQUENCE--RESEND
         OI    FLAG0,FLAG0FMT     RC=12, HAVEN'T LOST ANYTHING MUCH
         CLI   ERLN4,0            ARE WE IN THE MIDDLE OF ERRORS?
         BNE   LA000810           -YES, LEAVE FLAG0 AS IS
         NI    FLAG0,FLAG0FMT     CLEAR THE REST OF FLAG0
LA000810 LR    R7,R1              SAVE INPUT LENGTH
         BAL   R8,LA000820        CLEAR TGET INPUT QUEUE
         LR    R1,R7              RESET INPUT LENGTH REGISTER
         B     LA000950
LA000815 LR    R7,R1              SAVE INPUT LENGTH                @P1A
         BAL   R8,LA000820        CLEAR TGET INPUT QUEUE           @P1A
         LR    R1,R7              RESET INPUT LENGTH REGISTER      @P1A
         B     LA000900           PROCESS INPUT                    @P1A
         SPACE 2
*---------------------------------------------------------------------
*        MAKE SURE TGET QUEUE IS EMPTY
*---------------------------------------------------------------------
         SPACE
LA000820 TCLEARQ
         LTR   RF,RF              TEST TCLEARQ RETURN CODE
         BZR   R8                 RC=0,SUCCESSFUL
         LA    RF,16              ERROR - SET
         ST    RF,SAVERF          -RETURN CODE
         B     LA005600           -AND GIVE UP
         SPACE 2
*---------------------------------------------------------------------
*  SET-UP RESPONSE ANALYSIS
*---------------------------------------------------------------------
         SPACE
LA000900 CLI   ERLN4,0            ARE WE IN THE MIDDLE OF ERRORS?
         BNE   LA000970           -YES, DON'T RESET FLAGS
         MVI   FLAG0,0            RESET FLAG0
         B     LA000960
LA000950 CLI   ERLN4,0            ARE WE IN THE MIDDLE OF ERRORS?
         BNE   LA000970           -YES, DON'T RESET FLAGS
LA000960 MVI   FLAG0,0            RESET FLAG0
         MVI   FLAG1,0            RESET FLAG1
         NC    WKALNCTL(19),=19AL1(255-WKALNCTW) RESET LINE CONTROLS
         XC    EADDRFLG(LN4FLGLN),EADDRFLG CLEAR ERROR FLAGS
         MVC   EADDRVAL(LN4VALLN),WKAADDR RESET ERROR SAVE VALUES
         NI    EADDRVAL,255-WKAADRLL CLEAR HIGH BYTE
         XC    SAVSTK(SAVSTKLN),SAVSTK CLEAR NOTES ERROR SAVE AREA
         XC    SAVSBCMD,SAVSBCMD  CLEAR SUBCOMMAND ERROR SAVE AREA
LA000970 LTR   R7,R1              SAVE AND CHECK AMT RETD BY TGET
         LA    RA,SCRNBUFR        ->TGET/TPUT BUFFER
         MVI   NEWWCC,X'00'       REFRESH WRITE CONTROL CHAR
         MVI   FLAG2,0            OFF ALL BITS
         MVC   PREVCURS,WKACORDS+1 SAVE LAST CURSOR ADDR FOR HELP, ETC
         MVC   WKACORDS+1(2),1(RA) GET READY TO REPLACE CURSOR
         COPY  BLSR327C           PRE-PROCESS ATTENTION IDENTIFIER
         COPY  BLSR327D           PRE-PROCESS CURSOR
         TITLE 'BLSR3270--BLSR327A--RESET STATUS USING VALIDATED INPUT'F
                                                                   @D3C
*---------------------------------------------------------------------
*  RESET STATUS AS A RESULT OF VALIDATED INPUT
*---------------------------------------------------------------------
         SPACE
*---------------------------------------------------------------------
*EA001400 - INTERNAL SUBROUTINE TO ESTABLISH ROW, COL FROM 3270 ADRR
*  INPUT---RETURN ADDR IN RE
*          RA POINTS 1 BYTE BEFORE 3270 ADDR
*  OUTPUT--COLUMN NUMBER IN R4
*          ROW NUMBER IN R5 (0-ORIGIN NUMBERS)
*---------------------------------------------------------------------
         SPACE
EA001400 LA    RF,63              MASK TO KEEP ONLY LOW SIX BITS
         IC    R4,1(0,RA)         FIRST BYTE OF ADDR
         IC    R5,2(0,RA)         SECOND BYTE OF ADDR
         NR    R4,RF              GET RID OF GARBAGE
         NR    R5,RF              DITTO
         SLL   R4,6               PREPARE TO FORM BINARY OFFSET
         ALR   R5,R4              NOW HAVE DISPL FROM POS 0 (R1C1)
         SLR   R4,R4              CLEAR FOR DIVISION
         D     R4,=F'80'          REMAINDER IN R4, QUOTIENT IN R5
         BR    RE
         SPACE
*        R4 HAS REMAINDER FROM DIVISION, = 0-ORG COLUMN NUMBER
         SPACE 2
*---------------------------------------------------------------------
*        MOVE FROM INPUT CHECKING SAVE AREAS TO WORK AREA - ONLY
*        NECESSARY FOR STACK NOTATION, LINE 4, AND SUBCOMMAND
*        ENTRY FIELDS
*---------------------------------------------------------------------
         SPACE
LA001000 EQU   *
         SPACE
*---------------------------------------------------------------------
*        CHANGE TO STACK NOTATION
*---------------------------------------------------------------------
         SPACE
LA001700 LA    R3,0               LOOP COUNTER INITIAL VALUE
         LA    R4,1               LOOP INCREMENT
         LA    R5,10              LOOP COMPARAND
         LA    RA,SAVSTK          INITIAL NOTE SAVE ENTRY
LA001750 LR    R8,R3              PUT INDEX IN SAFE PLACE
         LA    RF,1(0,R8)         1-ORIGIN NUMBER OF THIS ENTRY
         SLL   R8,2               FORM INDEX INTO STACK
         CLI   0(RA),0            HAS A NOTE ENTRY BEEN SAVED?
         BE    LA002000           NO - LOOK AT NEXT
         CLI   0(RA),C'/'         A DELETE REQUEST?
         BNE   LA001800           NO, A CHANGE OR ADDITION TO NOTES
         LA    RF,WKASTACK(R8)    PREPARE TO MARK PROPER STACK ENTRY
         OI    0(RF),WKASKDEL     TO BE PURGED ... MUST UPDATE 2,3
         OI    FLAG0,FLAG0PRG+FLAG0RW2+FLAG0RW3 - REMEMBER TO DO IT
         B     LA002000           LOOK AT NEXT
LA001800 CLM   RF,1,WKANBNUM      WAS IT A NEW ENTRY?
         BNH   LA001900           - NO, BYPASS SAVING NEW HIGH WATER
         STC   RF,WKANBNUM        - YES, NEW MAX TO RESEND THIS LINE
LA001900 ALR   R8,R8              DOUBLE INDEX VALUE
         LA    R8,WKANOTES(R8)    ADDRESS OF NOTES WORK AREA
         XC    0(8,R8),0(R8)      CLEAR CURRENT ENTRY
         CLI   0(RA),X'FF'        HAS FIELD BEEN CLEARED?
         BE    LA002000           YES
         MVC   0(L'WKANB1,R8),0(RA) PUT NEW DATA INTO NOTE LIST
LA002000 LA    RA,L'WKANB1(RA)    POINT TO NEXT NOTES SAVE AREA
         BXLE  R3,R4,LA001750     CONTINUE LOOP
         SPACE 2
*---------------------------------------------------------------------
*        CHANGE TO LINE 4--NEW ADDRESS, ASID, FORMAT, ....
*---------------------------------------------------------------------
         SPACE 2
         TM    FLAG1,FLAG1BLA     CAN WE ACCEPT MANUAL INPUT THIS -
         BO    LA002100           TRANSACTION? NO, DON'T SAVE
         MVC   ESAULAD,EADDRVAL   SAVE NEW ADDRESS
         SPACE 2
         XC    ESAUAS2(4),ESAUAS2  CLEAR IT OUT
         MVC   ESAUAS2+2(2),EASIDVAL SAVE NEW ASID
         SPACE 2
LA002100 MVI   ESAUDTY,C'B'       ASSUME BIT STRING DATA           @D3C
         CLI   EFMTVAL,C'C'       CHARACTER STRING DATA?           @D3A
         BNE   LA002110           NO - CONTINUE                    @D3C
         MVI   ESAUDTY,C'C'       YES - CHARACTER STRING DATA      @D3A
         SPACE 2
LA002110 MVC   WKAAREA,EAREAVAL   SAVE NEW AREA                    @D3C
         SPACE 2
         LA    R3,4               WINDOW LOOP COUNTER
         LA    R4,EWNDSVAL        INITIAL WINDOW SAVE AREA
         LA    R5,NEWLINES        INITIAL WINDOW WORK AREA
LA002200 MVC   0(1,R5),0(R4)      MOVE FROM SAVE AREA
         LA    R4,1(R4)           POINT TO NEXT SAVE AREA
         LA    R5,1(R5)           POINT TO NEXT WORK AREA
         BCT   R3,LA002200        LOOK AT NEXT WINDOW
         SPACE 2
         MVC   WKASKIP,ESKIPVAL  SAVE NEW VALUE
         B     LA004600          LOOK AT SUBCOMMAND
         SPACE 2
*---------------------------------------------------------------------
*EA003700--VALIDATE HEXADECIMAL INPUT AND CONVERT TO BINARY
*          VALID RANGE = 0-F
*---------------------------------------------------------------------
         SPACE
EA003700 XC    PACKDEC,PACKDEC    CLEAR RESULT IN CASE OF NULL INPUT
         LR    RF,R9              WHERE WE CAN USE IT
         SH    RF,=H'3'           BYPASS SF, ADDR, ADDR
         BNP   4(0,RE)            RETURN TO CALLER, NULL INPUT VALID
         LA    R0,9               INCREMENT FOR A HEX NOT DEC DIGIT
         LA    R1,PACKDEC+5       WHERE RESULT SHOULD GO
         EX    RF,IA004000        CONVERT TO UPPER CASE -- NOTE - THIS
*                                 CLOBBERS THE FIRST BYTE OF THE NEXT
*                                 FIELD, BUT IS OK, SINCE IT IS EITHER
*                                 AN SBA ORDER ALREADY FOUND, OR OUT
*                                 OF INPUT RANGE.
LA003800 IC    R2,2(RF,RA)        BYTE OF INPUT - RIGHT TO LEFT
         CLM   R2,1,=C'A'         AN 'A'
         BLR   RE                 - IF LESS, THEN NOT VALID HEX
         CLM   R2,1,=C'9'         A '9' ?
         BHR   RE                 - IF GREATER, THEN NOT VALID HEX
         CLM   R2,1,=C'0'         A DECIMAL DIGIT?
         BNL   LA003900           - YES, SAVE IT IN WORK AREA
         CLM   R2,1,=C'F'         AN 'F'?
         BHR   RE                 - IF GREATER, THEN NOT VAILD HEX
         ALR   R2,R0              HEX DIGIT, INCREMENT BY 9
LA003900 STC   R2,0(0,R1)         HEX OR DECIMAL NUMERIC INTO WK AREA
         BCTR  R1,0               DECREMENT WORK AREA ADDRESS
         BCT   RF,LA003800        DECREMENT INDEX, CHECK FOR END
         PACK  PACKDEC+3(5),PACKDEC(7) STRIP OUT ZONES
         B     4(0,RE)            RETURN ON GOOD VECTOR
IA004000 OC    3(0,RA),=CL8' '    *** SUBJ OF EX, ABOVE ***
         SPACE 2
*---------------------------------------------------------------------
*EA004100--VALIDATE HEXADECIMAL INPUT AND CONVERT TO BINARY
*          VALID RANGE = 0-9
*---------------------------------------------------------------------
         SPACE
EA004100 XC    PACKDEC,PACKDEC    CLEAR ANSWER AREA IF NULL INPUT
         LR    RF,R9              PROTECT LENGTH OF SUBFIELD
         SH    RF,=H'3'           STRIP OFF SF, ADDR, ADDR
         BNP   4(0,RE)            NULL INPUT, ANSWER = 0
         LR    R0,RF              SAVE COUNT
         LA    R2,2(RA,RF)        LAST INPUT CHAR THIS FIELD
LA004200 CLI   0(R2),C'0'         MUST BE IN RANGE 0 - 9
         BLR   RE                 - TOO LOW, GO BACK ON BAD VECTOR
         CLI   0(R2),C'9'         CHECK TOP OF RANGE
         BHR   RE                 - TOO HIGH, IGNORE INPUT
         BCTR  R2,0               BACK TO PREVIOUS BYTE
         BCT   R0,LA004200        CHECK ALL BYTES
         BCTR  RF,0               DOWN 1 FOR EX
         EX    RF,IA004300        STRIP ZONES, ALIGN FOR CVB
         CVB   RF,PACKDEC         INPUT IN FORM WE WANT
         ST    RF,PACKDEC         SAVE IT JUST IN CASE
         B     4(0,RE)            RETURN ON GOOD VECTOR
IA004300 PACK  PACKDEC(8),3(0,RA) *** SUBJ OF EX, ABOVE ***
IA004400 MVC   0(0,RF),4(RF)      *** SUBJ OF EX, BELOW ***
IA004500 MVC   0(0,RF),8(RF)      *** SUBJ OF EX, BELOW ***
         SPACE 2
*---------------------------------------------------------------------
*  ADD SUBCOMMAND LINE TO TSO STACK                                @01A
*---------------------------------------------------------------------
         SPACE
LA004600 CLI   SAVSBCMD,0         WAS ANYTHING ENTERED?
         BE    LA005000           -NO, CHECK STACK
         CLI   SAVSBCMD,NULVALUE  DID HE JUST NULL HIS LAST CMD?
         MVI   WKABLSRN,0         -YES, RESET COUNT
         BE    LA005000           -AND CHECK STACK
         LA    RE,L'SAVSBCMD      LENGTH OF SUBCOMMAND
         STC   RE,WKABLSRN        SAVE FOR NEXT TIME
         MVC   WKABLSRC(L'SAVSBCMD),SAVSBCMD MOVE FROM SAVE AREA
         LA    R0,LSDLEN+0(0,RE)  PREPARE TO SAVE IT               @01A
         ICM   R0,B'1000',=AL1(78) SUBPOOL FOR TSO I/O SERVICE RTNS
         GETMAIN R,LV=(0)         GO GET IT
         USING LSD,R1             THE LIST SOURCE DESCRIPTOR + RECORDS
         ST    R1,STPBALSD        PUT ADDRESS INTO STACK PARM BLOCK
         MVC   LSDVRECT(L'SAVSBCMD),WKABLSRC PUT SUBCMD IN SOURCE LIST
         LA    RE,4(0,RE)         ACTUAL COUNT AGAIN + SIZE OF HEADER
         STCM  RE,B'1100',LSDVREC+2 CLEAR LITTLE LL
         STH   RE,LSDVREC         NOW HAVE SEGMENT BUILT
         SPACE 2
*---------------------------------------------------------------------
*        FILL IN LIST SOURCE DESCRIPTOR
*---------------------------------------------------------------------
         SPACE
         ST    RE,LSDRCLEN        CLEAR LRECL, SET VARIABLE LENGTH
         LA    R0,LSDVREC         WHERE THE RECORD SEGMENTS BEGIN
         ST    R0,LSDANEXT        POINTER TO CURRENT = FIRST
         ST    R0,LSDADATA        POINTER TO FIRST RECORD SEG
         SPACE 2
*---------------------------------------------------------------------
*        CALL IKJSTCK TO PASS THE SUBCOMMANDS TO THE IPCS MONITOR
*---------------------------------------------------------------------
         SPACE
         L     RF,ZZ2P            GET ADDRESS OF
         LA    R1,ZZ2IOPL(0,RF)   ->IOPL, THE IKJSTCK PARM LIST    @D1A
         L     RF,ZZ2STCKP(0,RF)  -STACK ENTRY
         STACK STORAGE=(,SOURCE),MF=(E,(1)),ENTRY=(15),PARM=STPB
         OI    FLAG0,FLAG0SUS     SUSPENSION WILL BE REQUIRED
         MVI   SPD3270,1          INDICATE SO TO PLS               @01A
         SPACE 2
*---------------------------------------------------------------------
*  MAINTAIN DSPL3270 STACK
*---------------------------------------------------------------------
         SPACE
LA005000 TM    FLAG0,FLAG0PRG     ANY '/'S ENTERED IN NOTE LIST?
         BNO   LA005500           - NO
         SLR   R4,R4              SET UP SOME WORK REGS
         SLR   R5,R5              TO CLEAR LAST ENTRY IF NEEDED
         TM    WKASTACK+40,WKASKDEL DELETE LAST ENTRY?
         BNO   LA005200           - NO, NEEDN'T DO SPECIAL
         ST    R4,WKASTACK+40     CLEAR IT OUT
         STM   R4,R5,WKANOTES+80  CLEAR NOTE ALSO
         CLI   WKASKNUM,11        WAS THE STACK FULL?
         BNE   LA005100           - NO, DONT MARK IT AS 10 USED
         MVI   WKASKNUM,10        - YES, DECREMENT ITS COUNT
LA005100 CLI   WKANBNUM,11        WAS THE NOTE LIST FULL?
         BNE   LA005200           - NO, DONT MARK IT AS 10 USED
         MVI   WKANBNUM,10        - YES, DECREMENT ITS COUNT
LA005200 IC    R4,WKASKNUM        WHERE TO START OUR LOOP
         LTR   R0,R4              COUNT CONTROL
         BZ    LA005500           NONSENSE TO DELETE UNUSED ENTRY
LA005300 LR    RF,R0              TO FORM INDEX FOR THIS ENTRY
         SLL   RF,2               - A WORD INDEX, TO BE PRECISE, 1-ORG
         LA    R5,0(RF,RF)        - AND NOW A DOUBLE-WORD INDEX
         LR    RE,RF              - NEED LOTS OF INDICES
         LA    RF,WKASTACK-4(RF)  POINT TO THIS ENTRY
         TM    0(RF),WKASKDEL     MARKED DELETE?
         BNO   LA005400           - NO, WILL CHECK FOR LOOP END
         SPACE 2
*---------------------------------------------------------------------
*        CALCULATE HOW MUCH DATA MUST BE MOVED DOWN IN STACK
*---------------------------------------------------------------------
         SPACE
         SH    RE,=H'43'          EX LENGTH OF MAX MOVE
         LPR   RE,RE              NOW HAVE LENGTH FOR EXECUTE INSTR
         EX    RE,IA004400        COMPRESS DELETED ENTRY FROM STACK
         BCTR  R4,0               (DECR NUMBER ACTIVE ENTRIES)
         CLM   R0,1,WKANBNUM      NEED WE COMPRESS THE NOTE LIST TOO?
         BH    LA005400           - NO, CONTINUE LOOP
         LA    RE,1(RE,RE)        EX LENGTH FOR NOTE LIST
         LA    RF,WKANOTES-8(R5)  WHERE TO MOVE TO
         EX    RE,IA004500        COMPRESS NOTE LIST ENTRIES
         IC    RF,WKANBNUM        AND DECREMENT ITS ACTIVE COUNT
         BCTR  RF,0               - DOWN 1
         STC   RF,WKANBNUM        - BACK INTO SLOT
LA005400 BCT   R0,LA005300        CHECK ALL ACTIVE STACK ENTRIES
         STC   R4,WKASKNUM        SAVE UPDATED ACTIVE STACK COUNT
         SPACE 2
*---------------------------------------------------------------------
*        CHECK IF A NEW DATA SCREEN ALLOCATION WAS REQUESTED
*---------------------------------------------------------------------
         SPACE
LA005500 CLC   WKALINES(4),NEWLINES ANY CHANGES INDICATED?
         BE    BLSR327E           -NO
         L     R8,=A(BLSR327H)    PICK UP ALLOCATION VERIFICATION
         BALR  R3,R8              ADDRESS AND CALL IT
         COPY  BLSR327E           POST-PROCESS ATTENTION IDENTIFIER
         COPY  BLSR327F           POST-PROCESS CURSOR
         COPY  BLSR327G           POST-PROCESS MANUAL INPUT
         TITLE 'BLSR3270--BLSR327A--EXIT ASSEMBLER ENVIRONMENT'    @D3C
*---------------------------------------------------------------------
*  EXIT ASSEMBLER ENVIRONMENT
*---------------------------------------------------------------------
         SPACE
LA005600 LM    R0,RF,SAVER0RF     RELOAD INPUT REGISTERS
         BR    RE                 RETURN TO BLSR3270
         COPY  BLSR327H           CLOSED, INDEPENDENT SUBROUTINES
         COPY  BLSR327J           INPUT CHECKING ROUTINE
         COPY  BLSR327I           STATIC STORAGE DATA
./ ADD NAME=BLSR327B
         TITLE 'BLSR3270--BLSR327B--BUILD 3277 ORDER STREAM'
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSR327B) COMP(SC132) PROD(JIP1329): BUILD 3277 ORDER STREAM   *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= BUILD 3277 ORDER STREAM.  USE SAME BUFFER USED FOR TGET.  *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENT, REMARKS         *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         SPACE
BLSR327B LA    R8,LB000100        INITIALIZE RETURN REGISTER
         SPACE 2
*---------------------------------------------------------------------*
*INITIALIZE THE OUTPUT BUFFER                                         *
*---------------------------------------------------------------------*
         SPACE
LB000020 LA    RA,SCRNBUFR        ->TGET/TPUT BUFFER
         TM    FLAG0,FLAG0FMT     ENTIRE SCREEN TO BE WRITTEN?
         BNO   LB000050           NO
         MVI   ERLN4,0            YES - RESET ERROR INDICATOR
         MVC   0(ERSWRTLN,RA),ERSWRT SEND ERASE/WRITE SEQUENCE
         LA    RA,ERSWRTLN(0,RA)  CORRECT BUFFER ADDRESS
LB000050 MVC   0(ESCWRTLN,RA),ESCWRITE
         TRT   NEWWCC(1),T3270TAB PICK UP CORRECT 3270 CHAR
         STC   R2,0(0,RA)         NOTE - R1 ALSO DESTROYED BY TRT
         LA    RA,ESCWRTLN(0,RA)  CORRECT BUFFER ADDRESS
         BR    R8
         SPACE 2
*---------------------------------------------------------------------*
*ADD ORDERS TO FORMAT THE SCREEN                                      *
*---------------------------------------------------------------------*
         SPACE
LB000100 TM    FLAG0,FLAG0FMT     SELDOM NECESSARY, HOPEFULLY
         BNO   LB000200
         MVC   0(ERASELEN,RA),ERASEALL  ERASE ENTIRE SCREEN
         LA    RA,ERASELEN(0,RA)
LB000200 MVC   0(RWL1ORLN,RA),RWL1ORDS  ALWAYS REWRITE
         LA    RA,RWL1ORLN(0,RA)        -LINE 1
         TM    FLAG0,FLAG0FMT           COMPLETE REWRITE?
         BNO   LB000500                 -NO
         MVC   0(R2T4ORLN,RA),R2T4ORDS  LINE 2-3 ORDERS
         MVC   R2T4ORLN(RWL4ORLN,RA),RWL4ORDS LINE 4 ORDERS
         LA    RA,R2T4ORLN+RWL4ORLN(0,RA) CORRECT BUFFER ADDRESS
         MVC   0(RWL5ORLN,RA),RWL5ORDS  LINE 5 ORDERS
         LA    RA,RWL5ORLN(0,RA)  CORRECT BUFFER ADDRESS
         CLI   WKASKNUM,0         ANY ADDRESSES IN THE STACK?
         BE    LB000300           NO, NONE TO WRITE OUT
         OI    FLAG0,FLAG0RW2     YES, NOTE IT FOR LATER
LB000300 CLI   WKANBNUM,0         HOW ABOUT THE NOTE LIST?
         BE    LB000400           NO
         OI    FLAG0,FLAG0RW3     YES, MARK IT FOR LATER
LB000400 MVI   FLAG1,FLAG1ADR+FLAG1ASI+FLAG1FMT+FLAG1ARE+FLAG1LIN+FLAG1*
               SKP                BETTER LET HIM SEE ALL OF IT
         OC    WKALNCTL(19),=19AL1(WKALNCTW) MARK ALL TO BE WRITN
         SLR   RF,RF              IS SUBCMD/CLIST STRING NULL?
         ICM   RF,B'0001',WKABLSRN THIS IS COUNT OF CHARS
         BZ    LB000420           YES, NO STRING TO PUT OUT
         BCTR  RF,0               DECREMENT COUNT FOR EX
         MVC   0(ORDLNSBA,RA),RW5UCMOR POINT TO SCREEN ADDR
         EX    RF,IB005200        AND PUT DATA IN STREAM
         LA    RA,ORDLNSBA+1(RF,RA) CORRECT BUFFER ADDR
         SPACE
LB000420 BAL   R8,LA000500        PUT OUT THIS PART OF THE SCREEN
         LA    RA,SCRNBUFR        ->TGET/TPUT BUFFER
         BAL   R8,LB000050        RESET OUTPUT BUFFER
         EJECT
*---------------------------------------------------------------------*
*ADD ORDERS TO DISPLAY MESSAGE                                        *
*---------------------------------------------------------------------*
         SPACE
LB000500 L     R1,ZZ1P            ->ZZ1 (R1 NOT PERMANENT AS BASE)
         CLI   FLAG2,0            ANY MESSAGE NEEDED?
         BE    LB000600           - NO
         MVC   0(ORDLNSBA,RA),RW1UMGOR ORDERS INTO SCREEN BUFFER
         LA    RA,ORDLNSBA(0,RA)      CORRECT BUFFER ADDR
         MVC   0(MSGSTKLN,RA),MSGSTK  MSG INTO BUFFER
         LA    RA,MSGSTKLN(0,RA)      CORRECT BUFFER ADDR
         SPACE 2
*---------------------------------------------------------------------*
*ADD ORDERS TO DISPLAY THE STACK, LINES 2, 3, AND 4 ON THE SCREEN     *
*---------------------------------------------------------------------*
         SPACE
LB000600 TM    FLAG0,FLAG0RW2     ANY UPDATE NEEDED?
         BNO   LB000900           NO
         MVC   0(ORDLNSBA,RA),RW2SBAOR POINT TO FIRST STACK ENTRY
         LA    RA,ORDLNSBA(0,RA)
         SLR   R8,R8              CLEAR FOR IC OF ACTIVE STACK ENTRY#
         IC    R8,WKASKNUM        FOR LOOP CONTROL
         LTR   R8,R8              COULD HAVE JUST DELETED ALL ENTRIES
         BZ    LB000800           SO WILL NULL THEM OUT
         LA    R9,WKASTACK        POINT TO MY COPY OF STACK
LB000700 UNPK  0(7,RA),1(4,R9)    POINTER=>ZONED HEXADECIMAL
         TR    0(6,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         MVI   6(RA),ORDERPT      TAB TO NEXT STACK FIELD
         LA    RA,7(0,RA)         UPDATE SCREEN ADDRESS
         LA    R9,4(0,R9)         UPDATE STACK AREA ADDRESS
         BCT   R8,LB000700        LOOP TILL COUNT EXHAUSTED
         BCTR  RA,0               DON'T NEED LAST PT ORDER
LB000800 CLI   WKASKNUM,11        DO WE NEED THIS ERASE?
         BE    LB000900           NO
         MVC   0(ORDLNEUA,RA),ERASR2OR ORDERS INTO SCREEN BUFFR
         LA    RA,ORDLNEUA(0,RA)
LB000900 TM    FLAG0,FLAG0RW4     DO WE NEED LINE 4 ORDERS?
         BNO   LB000950           NO
         OI    FLAG1,FLAG1FMT+FLAG1ARE+FLAG1LIN REWRITE CONSTANTS
         MVC   0(RWL4ORLN,RA),RWL4ORDS LINE 4 ORDERS
         LA    RA,RWL4ORLN(0,RA)  CORRECT BUFFER ADDRESS
LB000950 TM    FLAG0,FLAG0RW3     NEED TO UPDATE?
         BNO   LB001200           NO
         MVC   0(ORDLNSBA,RA),RW3SBAOR ORDERS INTO BUFFER
         LA    RA,ORDLNSBA(0,RA)
         SLR   R8,R8              FOR IC
         ICM   R8,B'0001',WKANBNUM NUMBER OF ACTIVE LIST ENTRIES
         BZ    LB001100           NO, NULL ROW
         LA    R9,WKANB1          YES, POINT TO FIRST NOTE
LB001000 MVC   0(6,RA),0(R9)      DATA INTO ORDERS STREAM
         MVI   6(RA),ORDERPT      TAB TO NEXT FIELD
         LA    RA,7(0,RA)         NEXT BUFFER POSITION
         LA    R9,8(0,R9)         NEXT NOTE LIST ENTRY
         BCT   R8,LB001000        TILL COUNT EXHAUSTED
         BCTR  RA,0               DON'T NEED LAST PT
         MVI   SCRPO,SCRPOAD1     REMEMBER WHERE WE ARE
LB001100 CLI   WKANBNUM,11        ALREADY AT END
         BE    LB001200           YES
         MVC   0(ORDLNEUA,RA),ERASR3OR NO, SET ORDERS UP
         LA    RA,ORDLNEUA(0,RA)
         MVI   SCRPO,SCRPOER3     NOT SAME AS SCRPOAD1---DIF RA
         EJECT
*---------------------------------------------------------------------*
*ADD ORDERS TO DISPLAY LINE 4 ON THE SCREEN                           *
*---------------------------------------------------------------------*
         SPACE
LB001200 TM    FLAG1,FLAG1ADR+FLAG1ASI+FLAG1FMT+FLAG1ARE+FLAG1LIN+FLAG1*
               SKP                ANYTHING ON ROW 4 TO PUT OUT?
         BZ    LB003100           NO
         TM    FLAG1,FLAG1ADR     MUST ADDR BE UPDATED?
         BNO   LB001500           NO
         CLI   SCRPO,SCRPOER3     ALREADY AT ADDR FIELD?
         BE    LB001400           YES
         CLI   SCRPO,SCRPOAD1     ARE WE ALMOST THERE?
         BNE   LB001300           NO
         LA    RA,1(0,RA)         PAST PT IN BUFFER ALREADY
         B     LB001400           PUT DATA INTO SCREEN BUFFER
LB001300 MVC   0(ORDLNSBA,RA),RW4UADOR
         LA    RA,ORDLNSBA(0,RA)
LB001400 UNPK  0(7,RA),WKAADDR+1(4) POINTER=>ZONED HEXADECIMAL
         TR    0(6,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         MVI   SCRPO,SCRPOAD9     REMEMBER WHERE WE ARE
         LA    RA,6(0,RA)         IN BUFFER, TOO
LB001500 TM    FLAG1,FLAG1ASI     DO WE?
         BNO   LB001800           NO
         CLI   SCRPO,SCRPOAD9     NEED AN SBA HERE?
         BNE   LB001600           NO
         MVI   0(RA),ORDERPT      YES, TAB TO ASID FIELD
         LA    RA,1(0,RA)         UPDATE BUFFER ADDRESS
         B     LB001700           GO DO IT
LB001600 MVC   0(ORDLNSBA,RA),RW4UASOR POINT TO ASID FIELD
         LA    RA,ORDLNSBA(0,RA)
LB001700 UNPK  0(5,RA),WKAASID(3) BIT=>ZONED HEXADECIMAL
         TR    0(4,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         LA    RA,4(0,RA)
         MVI   SCRPO,SCRPOAS9     REMEMBER WHERE WE ARE
LB001800 TM    FLAG1,FLAG1FMT     FORMAT NEED UPDATING? (X OR C)
         BNO   LB002100           NO, AREA ID NEXT ON SCREEN
         CLI   SCRPO,SCRPOAS9     IN THE RIGHT SPOT NOW?
         BNE   LB001900           NO
         MVI   0(RA),ORDERPT      YES, TAB TO FMT FIELD
         LA    RA,1(0,RA)
         B     LB002000
LB001900 MVC   0(ORDLNSBA,RA),RW4UFMOR NECESSARY ORDERS
         LA    RA,ORDLNSBA(0,RA)
LB002000 MVC   0(1,RA),WKAFMT     FORMAT INTO DATA STREAM
         LA    RA,1(0,RA)
         MVI   SCRPO,SCRPOFM9     REMEMBER WHERE WE ARE
LB002100 TM    FLAG1,FLAG1ARE     NEED AREA THIS TIME?
         BNO   LB002400           NO
         CLI   SCRPO,SCRPOFM9     CORRECTLY POSITIONED?
         BNE   LB002200           NO
         MVI   0(RA),ORDERPT      YES, TAB TO AREA FIELD
         LA    RA,1(0,RA)
         B     LB002300
LB002200 MVC   0(ORDLNSBA,RA),RW4UAROR NECESSARY ORDERS
         LA    RA,ORDLNSBA(0,RA)
LB002300 MVC   0(1,RA),WKAAREA    AREA INTO DATA STREAM
         LA    RA,1(0,RA)
         MVI   SCRPO,SCRPOWI9     REMEMBER WHERE WE ARE
LB002400 TM    FLAG1,FLAG1LIN     NEED LINES/AREA THIS TIME?
         BNO   LB002800           NO
         CLI   SCRPO,SCRPOWI9     CORRECTLY POSITIONED?
         BNE   LB002500           NO
         MVI   0(RA),ORDERPT      YES, TAB TO AREA FIELD
         LA    RA,1(0,RA)
         B     LB002600
LB002500 MVC   0(ORDLNSBA,RA),RW4ULNOR NECESSARY ORDERS
         LA    RA,ORDLNSBA(0,RA)
LB002600 LA    R8,4               NUMBER OF ENTRIES
         SLR   RF,RF              CLEAR FOR IC
         LA    R9,WKALINES        START SOURCE ADDRESS
LB002700 IC    RF,0(0,R9)         BINARY NUMBER OF LINES
         CVD   RF,PACKDEC         INTO PACKED DECIMAL
         UNPK  0(2,RA),PACKDEC+6(2) INTO DATA STREAM
         OI    1(RA),C'0'         MAKE LAST DIGIT NUMBERIC
         MVI   2(RA),ORDERPT      TAB TO NEXT FIELD ON SCREEN
         LA    R9,1(0,R9)         UPDATE TO NEXT AREA
         LA    RA,3(0,RA)
         BCT   R8,LB002700        PUT THEM ALL IN
         BCTR  RA,0               IN CASE WE DON'T NEED PT TO SKIP
         MVI   SCRPO,SCRPOPT9     REMEMBER WHERE WE ARE
LB002800 TM    FLAG1,FLAG1SKP     NEED SKIP VALUE THIS TIME?
         BNO   LB003100           NO, END OF ROW 4 OF SCREEN
         CLI   SCRPO,SCRPOPT9     CORRECTLY POSITIONED?
         BNE   LB002900           NO
         LA    RA,1(0,RA)
         B     LB003000           TO SET UP THE SKIP VALUE
LB002900 MVC   0(ORDLNSBA,RA),RW4USPOR POINT TO SKIP FIELD
         LA    RA,ORDLNSBA(0,RA)
LB003000 UNPK  0(7,RA),WKASKIP+1  POINTER=>ZONED HEXADECIMAL
         TR    0(6,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         LA    RA,6(0,RA)
         EJECT
*---------------------------------------------------------------------*
*ADD ORDERS TO DISPLAY AREAS A, B, C, AND D                           *
*                                                                     *
*        THIS ROUTINE IS DRIVEN BY A 19-BYTE VECTOR IN THE WORKAREA,  *
*        SET BY THE FIELD DEFINITION ANALYSIS ROUTINE AND UPDATED BY  *
*        THE VARIOUS 'COMMAND' PROCESSORS.  A CHANGE IN FIELD         *
*        DEFINITION WILL CAUSE ALL LOWER LINES IN THE SCREEN TO BE    *
*        REWRITTEN; A CHANGE IN THE ACTIVE AREA, OR A NEW EFFECTIVE   *
*        ADDRESS, WILL CAUSE ONLY THE ACTIVE AREA TO BE UPDATED.      *
*                                                                     *
*---------------------------------------------------------------------*
         SPACE
LB003100 MVI   SCRPO,0            POSITION NO LONGER USEFUL
         SLR   R6,R6              TO START LOOP
         SLR   R2,R2              FOR IC'S IN LOOP
         MVC   WKAVCTB(4*4),WKAVCTA COPY CURRENT START ADDRESSES
         NI    FLAG0,255-(FLAG0POK+FLAG0NUL) OFF TO START WITH
LB003200 IC    R2,WKALNCTL(R6)    VECTOR INTO AREA TABLE
         LA    RF,255-WKALNCTW    UPDATE FLAG
         CLR   R2,RF              NEED TO UPDATE THIS LINE?
         BNH   LB004600           NO
         NR    R2,RF              NULL LINE REQUIRED?
         BZ    LB004300           YES
         SPACE 2
*---------------------------------------------------------------------*
*        THINK WE NEED TO WRITE SOMETHING-- BUT WHAT? FIRST MAKE SURE *
*        THERE REALLY IS SOMETHING IN THIS AREA TO WRITE. IF SO,      *
*        CHECK THAT BUFFER ADDRESS IS CORRECT, AND THAT WE DON'T      *
*        NEED TO COMPLETE A NULL LINE OR AREA.                        *
*---------------------------------------------------------------------*
         SPACE
         BCTR  R2,0               FORM ZERO ORIGIN INDEX
         SLL   R2,2               *(2**2=4) FOR WORD ARRAY
         LA    RF,WKAVCTA(R2)     PROPER CONTROL WORD FOR THIS AREA
         TM    35(RF),WKAVCTAI    HAS FIELD EVER BEEN USED?
         BO    LB004300           NO, CAN'T HAVE DATA TO WRITE THERE
         SPACE 2
*---------------------------------------------------------------------*
*        AN ACTIVE AREA NEEDS UPDATING --- PERFORM SCREEN BUFFER      *
*        ADDRESS HOUSEKEEPING.                                        *
*---------------------------------------------------------------------*
         SPACE
         TM    FLAG0,FLAG0POK+FLAG0NUL HOW DOES BUFFER LOOK NOW?
         BM    LB003500           POSITIONED OK, AND NEED NO NULLS
         LA    RE,0(R6,R6)        FORM INDEX INTO BUFFER ADDR TAB
         MVI   0(RA),ORDERSBA     ASSUME SET BUFFER ADDR ORDER NEEDED
         BZ    LB003300           DON'T NEED NULLS
         MVC   0(2,RA),PROTAREA   ESTABLISH PROTECTED FIELD
         LA    RA,2(RA)           CORRECT BUFFER ADDRESS
         MVI   0(RA),ORDERRA      NEED REPEAT-TO-ADDRESS ORDER
LB003300 LH    RE,BUFADTAB(RE)    BUFFER ADDRESS TO USE
         STCM  RE,B'0011',1(RA)   PUT IT INTO SCREEN STREAM
         BZ    LB003400
         MVI   3(RA),0            INSERT NULL INTO STREAM
         LA    RA,1(0,RA)         ACCOUNT FOR NULL INSERTED
         NI    FLAG0,255-FLAG0NUL RESET NULL NEEDED
LB003400 LA    RA,ORDLNSBA(0,RA)  HOUSEKEEPING COMPLETE
         OI    FLAG0,FLAG0POK     SAY SO
         SPACE 2
*---------------------------------------------------------------------*
*        SET UP CORRECT ATTRIBUTE BYTE FOR THIS LINE. INTENSIFY THE   *
*        FIRST LINE IN EACH WINDOW                                    *
*---------------------------------------------------------------------*
         SPACE
LB003500 MVC   SAVELATR,NORMAREA+1  ASSUME INTENSIFY NOT NEEDED
         MVC   0(2,RA),NORMAREA   DEFINE THE START OF A FIELD
         CLC   0(4,RF),4*4(RF)    AT FIRST LINE OF FIELD?
         BNE   LB003600           -NO
         MVI   SAVELATR,INTENSE   -YES, SAVE FOR LATER FIELDS
         MVC   1(1,RA),SAVELATR   SET CORRECT ATTRIBUTE
LB003600 CLI   34(RF),C'C'        CHARACTER FORMATTING NEEDED?
         BE    LB004800           YES
         SPACE 2
*---------------------------------------------------------------------*
*        FORMAT A HEXADECIMAL DISPLAY LINE                            *
*---------------------------------------------------------------------*
         SPACE
         L     RE,4*4(RF)         PICK UP CURRENT ADDRESS
         ST    RE,PACKDEC         INTO WORK AREA FOR UNPACKING, ETC
         N     RE,=X'FFFFFFE0'    ROUND DOWN TO BOUNDARY
         ST    RE,PACKDEC+4       ADDRESS TO ASK PRDMP FOR
         LR    R0,RE              SAVE PARAMETER FOR PRDMP STG ACCESS
         L     R1,ZZ1P            ->ZZ1
         UNPK  2(7,RA),PACKDEC+5(4) POINTER=>ZONED HEXADECIMAL
         TR    2(6,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         SPACE 2
*---------------------------------------------------------------------*
*        RETRIEVE DUMP DATA                                           *
*---------------------------------------------------------------------*
         SPACE
         L     R1,ZZ2P            ->ZZ2
         MVC   ZZ2AMDA(2,R1),32(RF) ASID
         L     RF,ZZ2RVTP(0,R1)   ->RVT                            @D1A
         L     RF,RVTACCLP(0,RF)  ->BLSRACCL                       @D1C
         BALR  RE,RF              CALL BLSRACCL
         LTR   RF,RF              DATA IN DUMP?
         BNZ   LB004200           NO
         LR    R9,R0              ->DUMP DATA BUFFER
         L     R0,PACKDEC         CALCULATE INDENTATION ON LINE
         S     R0,PACKDEC+4       FROM NUMBER OF BYTES
         SRA   R0,2               WORDS = BYTES/(4=2**2)
         LA    RE,LB003800        SET RETURN ADDR FROM INDENT SUBRTNE
         BNZ   LB003700           R0 NOT ZERO - MUST DO INDENT
         XC    8(1,RA),8(RA)      NULL ONE BYTE AFTER SF,
         LA    RA,9(0,RA)         ATTR, AND DATA ADDR. UP
         BR    RE                 STREAM ADDRESS, AND BYPASS SUBR.
         SPACE 2
*---------------------------------------------------------------------*
*        CALCULATE BUFFER ADDRESS TO INDENT TO                        *
*              USED AS SUBROUTINE BY CHARACTER DATA FORMAT, TOO       *
*---------------------------------------------------------------------*
         SPACE
LB003700 MVI   8(RA),ORDERRA      START REPT-TO-ADDR ORDER SEQUENCE
         LR    R5,R0              INPUT IS NUMBER OF 'WORDS' TO INDENT
         MH    R5,=H'9'           8 BYTES + 1 SEPARATOR PER 'WORD'
         AH    R5,=H'8'           ADDR FIELD TAKES 1 ATTR, 6 BYTES, 1
*                                 SEPARATOR
         LA    R4,5(0,R6)         ZERO ORIGIN ROW NUMBER
         MH    R4,=H'80'          EIGHTY POSITIONS PER ROW
         ALR   R4,R5              FORM BINARY SCREEN POSITION, 0-ORIGN
         SRDL  R4,6               DIVIDE BY (64=2**6)
         SRL   R5,26              AND SAVE REMAINDER
         IC    R4,T3270TAB(R4)
         IC    R5,T3270TAB(R5)
         STC   R4,9(0,RA)         FIRST ADDR BYTE
         STC   R5,10(0,RA)        SECOND ADDR BYTE
         MVI   11(RA),0           NULL CHARACTER INTO STREAM
         LA    RA,12(0,RA)        UPDATE SCREEN BUFFER ADDR
         BR    RE                 RETURN TO CHAR FMT, OR TO NSI
LB003800 LA    R8,8               MAX WORDS PER LINE
         SLR   R8,R0              LESS NUMBER SKIPPED
         SLL   R0,2               WORDS*(4=2**2) = BYTES TO SKIP
         ALR   R9,R0              WHERE TO FETCH DUMP DATA FROM
         L     R1,ZZ1P            ->ZZ1
LB003900 MVC   0(2,RA),NORMAREA   DEFINE THE START OF A FIELD
         MVC   1(1,RA),SAVELATR   SET CORRECT ATTRIBUTE
         UNPK  2(9,RA),0(5,R9)    BIT=>ZONED HEXADECIMAL
         TR    2(8,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         LA    RA,10(0,RA)        NEXT BUFFER POSITION
         LA    R9,4(0,R9)         NEXT DUMP DATA POSITION
         BCT   R8,LB003900        DO ALL WORDS FOR THIS LINE
         SPACE 2
*---------------------------------------------------------------------*
*        FINISHED PROCESSING CURRENT LINE--UPDATE INDEX AND CONTINUE  *
*        LOOP                                                         *
*---------------------------------------------------------------------*
         SPACE
LB004100 CH    R6,=H'18'          OUT OF VECTOR?
         BNL   LB004150           YES
         IC    R2,WKALNCTL(R6)    VECTOR INTO AREA TABLE
         LA    RF,255-WKALNCTW    CLEAR OUT REWRITE
         NR    R2,RF               FLAG
         BZ    LB004125           NULL LINE
         BCTR  R2,0               FORM ZERO ORIGIN INDEX
         SLL   R2,2               *(2**2=4) FOR WORD ARRAY
         LA    RF,WKAVCTA(R2)     PROPER CONTROL WORD FOR THIS AREA
         L     RE,4*4(RF)         PICK UP CURRENT ADDRESS
         CLI   34(RF),C'X'        IS IT HEX?
         BNE   LB004110           NO
         N     RE,=X'FFFFFFE0'    ROUND DOWN TO HEX BOUNDARY
         LA    RE,32(0,RE)        ADD HEX BOUNDARY VALUE=LINE LENGTH
         B     LB004120
LB004110 N     RE,=X'FFFFFFC0'    ROUND DOWN TO CHAR BOUNDARY
         LA    RE,64(0,RE)        ADD CHAR BOUNDARY VALUE=LINE LENGTH
LB004120 ST    RE,16(0,RF)        SAVE FOR NEXT PASS THIS AREA
LB004125 LA    R6,1(0,R6)         INCREMENT ROW INDEX
         B     LB003200           CONTINUE ROW LOOP
LB004150 TM    FLAG0,FLAG0NUL     NEED TO NULL REST OF SCREEN?
         BNO   LB005300           NO
         MVC   0(2,RA),PROTAREA   ESTABLISH PROTECTED FIELD
         MVC   2(ORDLNRA,RA),RW6RAORD NULL TO 0,0
         LA    RA,ORDLNRA+2(0,RA) CORRECT BUFFER ADDRESS
         B     LB005300
         SPACE 2
*---------------------------------------------------------------------*
*        UNABLE TO ACCESS DATA FOR THIS LINE - ADDRESS OF DATA IS     *
*        ALREADY IN SCREEN STREAM                                     *
*---------------------------------------------------------------------*
         SPACE
LB004200 MVC   8(4,RA),=C' N/A'   RIGHT NEXT TO ADDRESS
         LA    RA,12(0,RA)        UPDATE BUFFER PTR
         OI    FLAG0,FLAG0NUL+FLAG0POK
         B     LB004100
         SPACE 2
*---------------------------------------------------------------------*
*        NEED TO WRITE A NULL LINE--EITHER A SEPARATOR BETWEEN FIELDS *
*        OR A LINE IN AN UNUSED AREA                                  *
*---------------------------------------------------------------------*
         SPACE
LB004300 TM    FLAG0,FLAG0POK+FLAG0NUL ALREADY NULLING SCREEN?
         BO    LB004100           YES
         BM    LB004400           NO, BUT POSITION IS OK
         MVI   0(RA),ORDERSBA     SBA TO THIS LINE ADDR
         LA    RE,0(R6,R6)        FORM INDEX INTO ARRAY
         LH    RE,BUFADTAB(RE)    AND ACCESS 3270 LINE ADDR
         STCM  RE,B'0011',1(RA)   ADDR INTO STREAM
         LA    RA,ORDLNSBA(0,RA)  UPDATE BUFFER ADDRESS
LB004400 OI    FLAG0,FLAG0POK+FLAG0NUL POS. OK, NULLS NEEDED
         B     LB004100           CHECK NEXT ROW
         SPACE 2
*---------------------------------------------------------------------*
*        AT A LINE NOT TO BE UPDATED. CHECK IF NULLIFICATION NEEDED   *
*        AT THIS POINT, AND IF SO, IF LINE CONTAINS USEFUL DATA TO    *
*        BE LEFT ON THE SCREEN.                                       *
*---------------------------------------------------------------------*
         SPACE
LB004600 TM    FLAG0,FLAG0POK+FLAG0NUL ANYTHING PENDING?
         BZ    LB004100           NO
         BO    LB004700           YES, CHECK IF ANY DATA ON SCREEN
         NI    FLAG0,255-FLAG0POK BUFFER NO LONGER SET UP
         B     LB004100
         SPACE 2
*---------------------------------------------------------------------*
*        BOTH FLAG0NUL AND FLAG0POK ON, CHECK IF WE CAN LEAVE         *
*        THEM ON, OR MUST WE BYPASS THIS SCREEN LINE.                 *
*---------------------------------------------------------------------*
         SPACE
LB004700 LTR   R2,R2              IS THIS LINE ALREADY NULL?
         BZ    LB004100           YES
         BCTR  R2,0               NO, FORM INDEX VALUE INTO AREA
         SLL   R2,2               *(4=2**2) CONTROL VECTORS
         LA    RF,WKAVCTA(R2)
         TM    35(RF),WKAVCTAI    ANYTHING IN THE AREA?
         BO    LB004100           NO
         MVC   0(2,RA),PROTAREA   ESTABLISH PROTECTED FIELD
         LA    RA,2(RA)           CORRECT BUFFER AREA
         MVI   0(RA),ORDERRA      INSERT REPEAT-TO ADDRESS ORDER
         LA    RE,0(R6,R6)        FORM INDEX TO BUFADTAB
         LH    RE,BUFADTAB(RE)    PICK UP SCREEN ADDR
         STCM  RE,B'0011',1(RA)   PUT IT INTO SCREEN STREAM
         MVI   3(RA),0            PUT A NULL TO COMPLETE ORD SEQ
         LA    RA,ORDLNRA(0,RA)   UPDATE BUFFER PTR
         NI    FLAG0,255-(FLAG0POK+FLAG0NUL) RESET SWITCHES
         B     LB004100           CHECK NEXT LINE
         SPACE 2
*---------------------------------------------------------------------*
*        FORMAT A CHARACTER LINE ON THE SCREEN                        *
*---------------------------------------------------------------------*
         SPACE
LB004800 L     RE,4*4(0,RF)       CURRENT ADDR FOR THIS AREA
         ST    RE,PACKDEC         INTO WORK AREA
         N     RE,=X'FFFFFFC0'    DOWN TO PROPER BOUNDARY
         ST    RE,PACKDEC+4       ADDRESS TO REQUEST
         LR    R0,RE              PARM FOR PRINT-DUMP
         L     R1,ZZ1P            ->ZZ1
         UNPK  2(7,RA),PACKDEC+5(4) ADDRESS INTO SCREEN STREAM
         TR    2(6,RA),ZZ1TRHEX(R1) ZONED HEXADECIMAL=>EBCDIC
         L     R1,ZZ2P            ->ZZ2
         MVC   ZZ2AMDA(2,R1),32(RF) ASID
         L     RF,ZZ2RVTP(0,R1)   ->RVT                            @D1A
         L     RF,RVTACCLP(0,RF)  ->BLSRACCL                       @D1C
         BALR  RE,RF              CALL BLSRACCL
         LTR   RF,RF              DUMP DATA AVAILABLE?
         BNZ   LB004200           NO
         LR    R9,R0              PRESERVE 'REAL' DATA ADDR
         L     R0,PACKDEC         CALCULATE INDENTATION, IF ANY
         S     R0,PACKDEC+4       FROM BYTES TO SKIP
         SRA   R0,3               BYTES/(8=2**3) = 'WORDS' TO SKIP
         BNZ   LB004900           SOME
         XC    8(2,RA),8(RA)      NULL TWO POSITIONS
         LA    RA,10(0,RA)        POINT TO NEXT STREAM POSITION
         B     LB005000
LB004900 BAL   RE,LB003700        SET UP SKIP ORDERS
         MVI   0(RA),0            INSERT NULL FOR FIRST SEPARATOR
         LA    RA,1(RA)           CORRECT BUFFER ADDRESS
LB005000 LA    R8,8               SET UP TRANSLATE LOOP
         SLR   R8,R0              WORDS LEFT AFTER INDENT
         SLL   R0,3               *(8=2**3) = BYTES TO SKIP
         ALR   R9,R0              WHERE TO FETCH FIRST DATA FROM
         L     R1,ZZ1P            ->ZZ1
LB005100 MVC   0(8,RA),0(R9)      DATA INTO SCREEN STREAM
         TR    0(8,RA),ZZ1TREBC(R1) NON-ALPHAMERIC TO BLANKS
         MVI   8(RA),C''         INSERT SEPARATOR BETWEEN 'WORDS'
         LA    R9,8(0,R9)         UPDATE DATA SOURCE ADDRESS
         LA    RA,9(0,RA)         UPDATE DATA TARGET ADDRESS
         BCT   R8,LB005100        PROCESS ALL 'WORDS' THIS LINE
         BCTR  RA,0               DON'T NEED FINAL SEPARATOR
         B     LB004100           GET A NEW DATA ROW
IB005200 MVC   ORDLNSBA(0,RA),WKABLSRC *** SUBJ OF EX INSTR ***
         SPACE 2
*---------------------------------------------------------------------*
*ADD AN INSERT-CURSOR ORDER                                           *
*---------------------------------------------------------------------*
         SPACE
LB005300 MVC   0(4,RA),WKACORDS
         LA    RA,4(0,RA)         CORRECT BUFFER ADDRESS
         LA    R8,LA000700        SET UP TPUT RETURN ADDRESS
./ ADD NAME=BLSR327C
         TITLE 'BLSR3270--BLSR327C--Pre-Process Attention Identifier'
*** START OF SPECIFICATIONS****************************************
*
* $MAC(BLSR327C) COMP(SC132) PROD(JIP1329): Pre-process AID
*
* COPYRIGHT= 5740-XYN, 5740-XYS Copyright IBM Corporation 1982.
*            Licenced material-Program property of IBM,
*            Refer to copyright instructions form number G120-2083.
*
* FUNCTION= Pre-process AID (attention identifier) for BLSR3270
*
*     CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $L1= PKKEYS,HIP2102,82065,DSDPRW: Improved PFKEY suport
* $H1= NEW327X,HIP2102,82065,DSDPRW: Treat PF13-PF24 as PF01-PF12
* $D1= QUALITY,HIP2102,82065,DSDPRW: Improve comments, remarks
*
***** END OF SPECIFICATIONS****************************************
         SPACE
*------- Treat PF13-PF24 as PF01-PF12  ---------------------------
         CLI   0(RA),X'C9'             MAXIMUM NEW AID (PF21)      @H1A
         BH    LC000020                NOT PF13-PF24               @H1A
         CLI   0(RA),X'C1'             MINIMUM IN GROUP (PF13)     @H1A
         BNL   LC000010                EDIT PF13-PF24 TO PF1-PF12  @H1A
         CLI   0(RA),X'4A'             MINIMUM NEW AID (PF22)      @H1A
         BL    LC000020                NOT PF13-PF24               @H1A
         CLI   0(RA),X'4C'             MAXIMUM IN GROUP (PF24)     @H1A
         BH    LC000020                NOT PF13-PF24               @H1A
LC000010 OI    0(RA),X'30'             EDIT PF13-PF24 TO PF1-PF12  @H1A
*------- By convertion the attention ID back to the 3270 internal
*------- representation, we arrive at a collating sequence that
*------- starts with the 'SHORT-READ' IDs, through the PF keys, to
*------- the ENTER and light pen IDs.
LC000020 IC    RF,0(RA)           FIRST CHAR IN BUFFER IS AID      @H1C
         N     RF,=X'0000003F'    KEEP ONLY LOW SIX BITS
         CH    RF,=X'0000003E'    LIGHT PEN ATTENTION
         BE    LC000200           YES
         SH    RF,=Y(AIDIGNOR)    SHORT READ
         BNM   LC000300           NO
LC000200 OI    FLAG0,FLAG0FMT     MUST REWRITE ENTIRE SCREEN
         MVC   WKACORDS+1(2),PREVCURS RESTORE OLD CURSOR POSITION
         B     BLSR327B           PREPARE OUTPUT
LC000300 CH    RF,=H'2'           IS IT END?
         BE    LA005600           -YES SKIP REST
         ALR   RF,RF              DOUBLE TO INDEX YCON TABLE
         STH   RF,WKAAIDNX        SAVE INDEX
         B     BLSR327J           CHECK INPUT FOR ERRORS
         SPACE
LC000320 LA    RA,SCRNBUFR        -> INPUT BUFFER
         L     R7,SAVER7          RESTORE INPUT LENGTH
         LH    RF,WKAAIDNX        RESTORE INDEX
         LH    RF,YC000400(RF)    OFFSET TO ROUTINE
         B     BLSR327B(RF)       GO TO PROPER PRE-PROCESSOR
         SPACE 1                                                   @L1C
*------- Pre-process PF05--Change display format of current area
LC050000 CLI   ESAUDTY,C'C'       Is current data type CHARACTER?  @L1A
         BNE   LC050100           No, set format to C              @L1A
         MVI   ESAUDTY,C'B'       Set data type to BIT             @L1A
         MVI   EFMTVAL,C'X'       Set format to X                  @L1A
         B     LC050200           Simulate manual entry            @L1A
LC050100 MVI   ESAUDTY,C'C'       Set data type to CHARACTER       @L1A
         MVI   EFMTVAL,C'C'       Set format to C                  @L1A
LC050200 BAL   R3,LJ000660        Simulate manual entry            @L1A
         OI    FLAG1,FLAG1FMT     Signal change in format          @L1A
         B     BLSR327D           Continue                         @L1A
         SPACE 1                                                   @L1P
*------- Pre-process PF06--Change current area -------------------
LC060000 SLR   R3,R3              Clear work register              @L1A
         SLR   RF,RF              Clear work register              @L1A
         IC    R3,WKAAREA         Get display area identifier      @L1A
LC060100 LA    R3,1(0,R3)         Add one to area identifier       @L1A
         CLM   R3,1,=C'D'         Cycle from D to A?               @L1A
         BNH   LC060200           No, Verify area is displayed     @L1A
         LA    R3,C'A'            Set area identifier to A         @L1A
         B     LC060300           Simulate manual entry            @L1A
LC060200 IC    RF,WKALINES-C'A'(R3) Lines of area being displayed  @L1A
         LTR   RF,RF              Is area being displayed?         @L1A
         BZ    LC060100           No, skip area with no lines      @L1A
*        Move to new area without disturbing the data currently
*        displayed in that area.  Later processing of manual data
*        entry or cursor position as an indirect address request
*        may override this.
LC060300 STC   R3,WKAAREA         Current area identifier          @L1A
         STC   R3,EAREAVAL        New area identifier              @L1A
         LA    RF,C'A'            Convert area id to array index   @L1A
         SLR   R3,RF              ...                              @L1A
         ALR   R3,R3              ...                              @L1A
         ALR   R3,R3              ...                              @L1A
         L     RF,WKAVCTA(R3)     Address of new area              @L1A
         MVI   ESAULAD,X'00'      Current address--initial byte    @L1A
         STCM  RF,B'0111',ESAULAD+1 Current address--final bytes   @L1A
         MVI   EADDRVAL,X'00'     New address--initial byte        @L1A
         STCM  RF,B'0111',EADDRVAL+1 New address--final bytes      @L1A
         L     RF,WKAVCTC(R3)     Attributes of new area           @L1A
         XC    ESAUAS2(2),ESAUAS2 Current ASID--initial bytes      @L1A
         STCM  RF,B'1100',ESAUAS2+2 Current ASID--final bytes      @L1A
         STCM  RF,B'1100',EASIDVAL New ASID                        @L1A
         STCM  RF,B'0010',ESAUDTY Current data type                @L1A
         CLI   ESAUDTY,C'C'       CHARACTER data type?             @L1A
         BE    LC060400           Yes, simulate manual entry       @L1A
         MVI   ESAUDTY,C'B'       Set data type to BIT.            @L1A
LC060400 STCM  RF,B'0010',EFMTVAL New data type                    @L1A
         BAL   R3,LJ000760        Simulate manual entry            @L1A
         OI    FLAG1,FLAG1ADR+FLAG1ASI+FLAG1FMT+FLAG1ARE+FLAG1RLL  @L1A
         B     BLSR327D           Continue                         @L1A
         SPACE 2
*------------------------------------------------------------------
*        Attention identifier (AID) Pre-processor Vector Table
*        AID   AID&X'3F'          MEANING OF AID
*        --    ---------          --------------
*        60    00                 NOP TO POLL OF DISPLAY
*        E6    26                 CARD READER READ A STRIPE
*        E8    28                 NOP TO POLL OF PRINTER
*        6B    2B                 PA3
*        6C    2C                 PA1
*        6D    2D                 CLEAR
*        6E    2E                 PA2
*        F0    30                 TEST REQUEST
*------------------------------------------------------------------
         SPACE
YC000400 DC    Y(BLSR327D-BLSR327B) F1-->31, PF01 ==> ENTER        @D1C
         DC    Y(BLSR327D-BLSR327B) F2-->32, PF02 ==> ENTER        @D1C
         DC    Y(LA005600-BLSR327B) F3-->33, PF03 ==> END          @D1C
         DC    Y(BLSR327D-BLSR327B) F4-->34, PF04 ==> ENTER        @D1C
         DC    Y(LC050000-BLSR327B) F5-->35, PF05 ==> FORMAT       @L1C
         DC    Y(LC060000-BLSR327B) F6-->36, PF06 ==> AREA         @L1C
         DC    Y(LD001800-BLSR327B) F7-->37, PF07 ==> -SCROLL      @D1C
         DC    Y(LD001800-BLSR327B) F8-->38, PF08 ==> +SCROLL      @D1C
         DC    Y(LD001800-BLSR327B) F9-->39, PF09 ==> STACK        @D1C
         DC    Y(LD001800-BLSR327B) 7A-->3A, PF10 ==> -SKIP        @D1C
         DC    Y(LD001800-BLSR327B) 7B-->3B, PF11 ==> +SKIP        @D1C
         DC    Y(BLSR327D-BLSR327B) 7C-->3C, PF12 ==> ENTER        @D1C
         DC    Y(BLSR327D-BLSR327B) 7D-->3D, ENTER==> ENTER        @D1C
./ ADD NAME=BLSR327D
         TITLE 'BLSR3270--BLSR327D--PRE-PROCESS CURSOR'
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSR327D) COMP(SC132) PROD(JIP1329): PRE-PROCESS CURSOR        *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= PRE-PROCESS CURSOR.                                       *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         SPACE
BLSR327D BAL   RE,EA001400        DECOMPOSE CURSOR ADDR INTO ROW/COLM
         ALR   R5,R5              DOUBLE ROW ADDRESS TO GET YCON INDEX
         STM   R4,R5,WKACRPOS     SAVE INDICES FOR POST-PROCESS
         CH    R5,=H'10'          A ROLL/POINT OPERATION (IN DUMP
         BNL   LD000300           DATA DISPLAY AREA)
         LH    RF,YD000200(R5)
         B     BLSR327B(RF)       GO TO APPROPRIATE ROUTINE
YD000200 DC    Y(LD000800-BLSR327B) CURSOR ON ROW1
         DC    Y(LD000900-BLSR327B) CURSOR ON ROW2
         DC    Y(LA001000-BLSR327B) CURSOR ON ROW3
         DC    Y(LA001000-BLSR327B) CURSOR ON ROW4
         DC    Y(LA001000-BLSR327B) CURSOR ON ROW5
LD000300 SRL   R5,1               BACK TO A BYTE ROW INDEX
         LA    R6,15              WANT LOW ORDER 4 BITS
         N     R6,WKALNCTL-8(R5)   OF THIS LINE CONTROL BYTE
         LTR   RE,R6              A NULL AREA?
         LA    RF,LA001000        WHERE TO GO NEXT IF POINTING FAILS
         BZR   RF                 YES
         SLL   RE,2               DEVELOP WORD INDEX
         LA    R2,WKAVCTA-4(RE)   ADDRESS CONTROL ARRAY, CORRECT
*                                 TO ZERO ORIGIN ADDRESSING
         TM    WKAVFLAG-WKAVCTA(R2),WKAVCTAI IS THIS AREA ACTIVE?
         BOR   RF                 NO
         LR    R0,R5              SAVE PREVIOUS LINE NUMBER
         SH    R0,=H'5'           GO FROM '5' ORIGIN TO 0-ORIGIN IN
*                                 DUMP DATA DISPLAY AREA
         SH    R4,=H'8'           WAS 0:79,-->-8:71; TEST FOR ROLL
         BM    LD000400           CURSOR UNDER #ADDRES## FIELD
         SPACE
         SRDA  R4,32              PREPARE FOR DIVIDE - MAKE SIGN POS
         D     R4,=F'9'           DIVIDES COLUMN NUMBER
         LTR   R4,R4              IF REMAINDER ZERO, CURSOR WAS UNDER
*                                 A SEPARATOR BYTE -- TO BE IGNORED
         BZR   RF                 JUST CHECK HIS INPUT
         CLI   WKAVFMT-WKAVCTA(R2),C'C' IS THIS A CHARACTER DISPLAY
         BER   RF                 YES
         SPACE 2
*---------------------------------------------------------------------*
*        CURSOR IS BENEATH A HEX DUMP WORD--INDIRECT ADDRESS REQUEST  *
*---------------------------------------------------------------------*
         SPACE
*              R0 NOW HAS NUMBER FROM 0 - 18  (WAS 5-23 BEFORE)
         S     R0,WKALNCTV-4(RE) GET ROW DISPLACEMENT IN THIS AREA
         SLL   R0,5               BYTE DISPLACEMENT TO START OF ROW
         SLL   R5,2               BYTES TO INDENT
         ALR   R0,R5              DISPLACEMENT PAST STARTING ADDR
         L     R4,0(0,R2)         PICK UP CURRENT START THIS AREA
         N     R4,=X'FFFFFFE0'    JUST IN CASE WE INDENTED
         ALR   R0,R4              DUMP ADDR TO FETCH FROM
         CL    R0,0(0,R2)         WAS CURSOR PLACED BEFORE START OF
         BLR   RF                 INDENTED FIRST LINE'S DATA? - YES
         SPACE 2
*---------------------------------------------------------------------*
*        LOAD DATA FROM DUMP                                          *
*---------------------------------------------------------------------*
         SPACE
         L     R1,ZZ2P            ->ZZ2
         MVC   ZZ2AMDA(2,R1),WKAVASI-WKAVCTA(R2) SET UP ASID
         L     RF,ZZ2RVTP(0,R1)   ->RVT                            @D1A
         L     RF,RVTACCLP(0,RF)  ->BLSRACCL                       @D1C
         BALR  RE,RF              CALL BLSRACCL
         LTR   RF,RF              OK?
         BNZ   LA001000           NO
         LR    RF,R0              PUT 'REAL' ADDRESS IN REG WE CAN USE
         L     RF,0(0,RF)         ACCESS DATA FROM DUMP
         LA    RF,0(0,RF)         CLEAR HIGH ORDER BYTE
         ST    RF,ESAULAD         TEMP SAVE FOR NEW ADDRESS TO USE
         OI    FLAG1,FLAG1BLA+FLAG1ADR CAN'T ACCEPT MANUAL ADDR INPT
         B     LA001000
         SPACE 2
*---------------------------------------------------------------------*
*        PERFORM A ROLL OPERATION WITHIN THIS AREA                    *
*---------------------------------------------------------------------*
         SPACE
LD000400 LA    R6,C'A'-1(0,R6)    FORM CORRECT AREA-ID OF ROLL
         CLM   R6,B'0001',WKAAREA NEW AREA ID?
         BE    LD000500           NO
         STCM  R6,B'0001',WKAAREA SET NEW AREA ID
         OI    FLAG1,FLAG1ARE     DISPLAY NEW AREA ID
LD000500 S     R0,WKALNCTV-4(RE)  GET ROW OFFSET WITHIN AREA
         SLL   R0,5               GET BYTE OFFSET FROM START OF AREA
         CLI   WKAVFMT-WKAVCTA(R2),C'C' IN CHARACTER DISPLAY?
         BE    LD000700           YES
         AL    R0,0(0,R2)         ADD CURRENT START ADDRESS
         N     R0,=X'00FFFFE0'    ROUND DOWN TO 32-BYTE BDY
LD000600 ST    R0,ESAULAD         SAVE RESULT
         OI    FLAG1,FLAG1BLA+FLAG1ADR+FLAG1RLL
         B     LA001000           GO SEE WHAT ELSE HE DID
LD000700 ALR   R0,R0              DOUBLE BYTE OFFSET FOR CHAR ROLL
         AL    R0,0(0,R2)         ADD CURRENT START ADDRESS
         N     R0,=X'00FFFFC0'    ROUND DOWN TO 64-BYTE BDY
         B     LD000600
         SPACE 2
*              R5 HAS A ZERO IN IT
*              R4 HAS THE COLUM NUMBER, 0-79 DECIMAL
*                                 MUST CONVERT TO A COMMAND BRANCH
*                                 TABLE INDEX
LD000800 IC    R4,AD001000(R4)    TRANSLATE TO INDEX (0-24 MAX)
         ST    R4,WKACRPOS        OVERLAY SAVED COLUMN
         LH    RF,YD001100(R4)    INDEX TO ROUTINE
         B     BLSR327B(RF)       GO TO APPROPRIATE ROUTINE
LD000900 LA    RF,LA001000        WHERE TO GO WHEN DONE
         SH    R4,=H'3'           CAN'T USE ATTR, 'SK' FIELDS
         BMR   RF
         SRDA  R4,32              PUT COLUMN IN RIGHT REG FOR DIVIDE
         D     R4,=F'7'           (0-76 ---->0-10)
         LTR   R4,R4              CURSOR UNDER ATTRIBUTE BYTE?
         BZR   RF                 YES. AMBIGUOUS
         IC    R4,WKASKNUM        MAKE SURE HE WAS UNDER AN ACTIVE
         BCTR  R4,0               STACK POSITION - GO TO 0-ORIGIN
         CLR   R4,R5              AND CHECK MAX POSITION VS PTR POS
         BLR   RF                 MAX LESS THAN WHERE HE WAS, IGNORE
         ALR   R5,R5              DOUBLE POSITION TO FORM ASID INDEX
         LH    R0,WKASKASI(R5)    PICK UP ASID FOR THIS STACK ENTRY
         ST    R0,ESAUAS2         INTO UPDATE AREA
         OI    FLAG1,FLAG1ASI     MAKE SURE HE SEES THE CHANGE
         ALR   R5,R5              FORM INDEX TO 4-BYTE TABLE
         L     R0,WKASTACK(R5)    PICK UP CORRECT STACK ENTRY
         B     LD000600           AND PUT IT INTO INPUT AREA
         SPACE 2
AD001000 DC    1AL1(0)            ATTRIBUTE-IGNORE
         DC    4AL1(2)            3END
         DC    2AL1(0)            ATTRIBUTE OR BLANK - IGNORE
         DC    6AL1(4)            7<-SCR
         DC    6AL1(6)            OLL+>8
         DC    2AL1(0)            ATTRIBUTE OR BLANK - IGNORE
         DC    6AL1(8)            9STACK
         DC    2AL1(0)            ATTRIBUTE OR BLANK - IGNORE
         DC    6AL1(10)           10<-SK
         DC    6AL1(12)           IP+>11
         DC    39AL1(0)           MESSAGE-IGNORE
         SPACE 3
YD001100 DC    Y(LA001000-BLSR327B) ATTRIBUTE BLANK OR MESSAGE
         DC    Y(LD001500-BLSR327B) END
         DC    Y(LD001800-BLSR327B) -SCROLL
         DC    Y(LD001800-BLSR327B) +SCROLL
         DC    Y(LD001700-BLSR327B) STACK
         DC    Y(LD001800-BLSR327B) -SKIP
         DC    Y(LD001800-BLSR327B) +SKIP
         SPACE 2
*---------------------------------------------------------------------*
*                                                                     *
* PRE-PROCESS PF3 = END                                               *
*                                                                     *
*---------------------------------------------------------------------*
LD001500 MVC   WKACORDS+1(2),PREVCURS RESTORE OLD CURSOR POSITION
         B     LA005600           LEAVE WITHOUT REALLY CLEANING UP
         SPACE 2
*---------------------------------------------------------------------*
*                                                                     *
* PRE-PROCESS PF9 = STACK                                             *
*                                                                     *
*---------------------------------------------------------------------*
LD001700 MVC   WKACORDS+1(2),PREVCURS RESTORE OLD CURSOR POSITION
LD001800 OI    FLAG1,FLAG1BLA     SO THAT CURRENT CAN BE MOVED TO
         B     LA001000           THE STACK AFTER POSSIBLE PURGE
*                                 AND/OR ASID CHANGE.
./ ADD NAME=BLSR327E
         TITLE 'BLSR3270--BLSR327E--POST-PROCESS ATTENTION IDENTIFIER'
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327E) COMP(SC132) PROD(JIP1329): PROCESS AID
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE
BLSR327E LH    RF,WKAAIDNX        YCON TABLE INDEX SAVED EARLIER   @D1C
         LH    RF,YE000200(RF)    OFFSET TO ROUTINE
         B     BLSR327B(RF)       GO TO PROPER POST-PROCESSOR
         SPACE 3
****
******   THIS IS THE OFFSET TABLE USED TO ENTER THE CORRECT AID
****           POST-PROCESSOR.  THE ORDER OF ENTRIES IS IMPORTANT...
         SPACE
YE000200 DC    Y(BLSR327F-BLSR327B) F1-->31 PF1 ROUTINE OFFSET=ENTER
         DC    Y(BLSR327F-BLSR327B) F2-->32 PF2 ROUTINE OFFSET=ENTER
         DC    Y(LA005600-BLSR327B) F3-->33 PF3 ROUTINE OFFSET=END
         DC    Y(BLSR327F-BLSR327B) F4-->34 PF4 ROUTINE OFFSET=ENTER
         DC    Y(BLSR327F-BLSR327B) F5-->35 PF5 ROUTINE OFFSET=ENTER
         DC    Y(BLSR327F-BLSR327B) F6-->36 PF6 ROUTINE OFFSET=ENTER
         DC    Y(LF000300-BLSR327B) F7-->37 PF7 ROUTINE OFFSET=-SCROLL
         DC    Y(LF000400-BLSR327B) F8-->38 PF8 ROUTINE OFFSET=+SCROLL
         DC    Y(LG000200-BLSR327B) F9-->39 PF9 ROUTINE OFFSET=STACK
         DC    Y(LF000700-BLSR327B) 7A-->3A PF10 ROUTINE OFFSET=-SKIP
         DC    Y(LF000800-BLSR327B) 7B-->3B PF11 ROUTINE OFFSET=+SKIP
         DC    Y(BLSR327F-BLSR327B) 7C-->3C PF12 ROUTINE OFFSET=ENTER
         DC    Y(BLSR327F-BLSR327B) 7D-->3D ENTER ROUTINE OFFSET
./ ADD NAME=BLSR327F
         TITLE 'BLSR3270--BLSR327F--POST-PROCESS CURSOR'
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327F) COMP(SC132) PROD(JIP1329): POST-PROCESS CURSOR
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE
BLSR327F LM    R4,R5,WKACRPOS     RELOAD SAVED INDICES             @D1C
         LTR   R5,R5              ON ROW ONE - A CURSOR COMMAND?
         BNZ   BLSR327G           NO, NO POST-PROCESS NEEDED
         LH    RF,YF000200(R4)    INDEX BASED ON COLUMN
         B     BLSR327B(RF)       GO TO APPROPRIATE ROUTINE
         SPACE 2
YF000200 DC    Y(BLSR327G-BLSR327B) ATTRIBUTE MESSAGE OR BLANK
         DC    Y(LA005600-BLSR327B) END
         DC    Y(LF000300-BLSR327B) -SCROLL
         DC    Y(LF000400-BLSR327B) +SCROLL
         DC    Y(LG000200-BLSR327B) STACK
         DC    Y(LF000700-BLSR327B) -SKIP
         DC    Y(LF000800-BLSR327B) +SKIP
         SPACE 2
*                                  ************************************
*                                  *                                  *
*                                  *   POST-PROCESS PF1 = ROLL BACKWD *
*                                  *                                  *
*                                  ************************************
LF000300 BAL   RE,LF000600        PERFORM COMMON CALCULATIONS FOR ROLL
*        R0    HAS NUMBER OF BYTES DISPLAYED IN CURRENT AREA
*        R1    HAS ROUNDED DOWN ADDR FROM WKAVCTA ENTRY
*        RF HAS INDEXED WORK ARRAY ADDRESS
         SLR   R1,R0              CALCULATE NEW START ADDR
         B     LF000500           GO STORE, SET SWITCHES
*                                 MUST WAIT FOR ANY SCREEN PARAMETER
*                                 UPDATES TO BE PROCESSED.
         SPACE 2
*                                  ************************************
*                                  *                                  *
*                                  *   POST-PROCESS PF2 = ROLL FORWARD*
*                                  *                                  *
*                                  ************************************
LF000400 BAL   RE,LF000600        SEE COMMENTARY ABOVE, AND BELOW
         ALR   R1,R0              CALCULATE NEXT ADDRESS
LF000500 LA    R1,0(R1)           CLEAR HIGH-ORDER BYTE
         ST    R1,ESAULAD         NEW ADDRESS INTO ENTRY LINE
         OI    FLAG1,FLAG1ADR+FLAG1RLL
         B     BLSR327G           GO CHECK STACK, ETC
LF000600 IC    RF,WKAAREA         PICK UP AREA TO BE ROLLED
         N     RF,=X'00000007'    KEEP ONLY LOW 4 BITS
         SLR   R0,R0              CLEAR FOR LATER ADDITION
         IC    R0,WKALINES-1(RF)  LINES THAT WERE DISPLAYED
         SLL   R0,5               BYTES TO MOVE
         SLL   RF,2               WORD INDEX
         LA    RF,WKAVCTA-4(RF)   ADDRESS NEW CURRENT ARRAY
         L     R1,WKAVCTA-WKAVCTA(RF) PICK UP OLD START ADDR
         N     R1,=X'FFFFFFE0'    ROUND DOWN TO 32-BYTE BDY
         CLI   WKAVFMT-WKAVCTA(RF),C'C' WAS IT CHARACTER?
         BNER  RE                 NO
         N     R1,=X'FFFFFFC0'    ROUND DOWN TO 64-BYTE BDY
         ALR   R0,R0              DOUBLE DIFFERENCE
         BR    RE
         SPACE 2
*                                  ************************************
*                                  *                                  *
*                                  *  POST-PROCESS PF10 = SKIP BACKWD *
*                                  *                                  *
*                                  ************************************
LF000700 BAL   RE,LF000900        PICK UP ADDRESS, SKIP AMOUNT
         SLR   R1,R0              DECREMENT OLD BY SKIP AMOUNT
         BR    RF
         SPACE 2
*                                  ************************************
*                                  *                                  *
*                                  * POST-PROCESS PF11 = SKIP FORWARD *
*                                  *                                  *
*                                  ************************************
LF000800 BAL   RE,LF000900        PICK UP ADDRESS, SKIP AMOUNT
         ALR   R1,R0              INCREMENT OLD BY SKIP AMOUNT
         BR    RF
LF000900 LA    RF,LF000500        WHERE TO GO WHEN DONE
         L     R0,WKASKIP         HOW MUCH TO CHANGE ADDR BY
         L     R1,WKAADDR         ADDR TO CHANGE
         BR    RE
./ ADD NAME=BLSR327G
         TITLE 'BLSR3270--BLSR327G--POST-PROCESS MANUAL INPUT'
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327G) COMP(SC132) PROD(JIP1329): POST-PROCESS MANUAL INPUT
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE
BLSR327G CLC   WKAADDR+1(3),ESAULAD+1 HAS THE ADDRESS BEEN CHANGED?
         BE    LG000600           NO
         TM    WKAADDR,WKAADRLL   IS THE OLD ADDRESS ALREADY IN    @D1C
*                                 THE STACK, OR RESULT OF A ROLL?
         BNZ   LG000600           YES
LG000200 CLI   WKASKNUM,11        STACK FULL NOW?
         BNE   LG000400           NO
         MVC   WKASTACK(40),WKASTACK+4
         MVC   WKASTACK+41(3),WKAADDR+1
         MVC   WKANOTES(80),WKANOTES+8
         XC    WKANOTES+80(8),WKANOTES+80
         MVC   WKASKASI(20),WKASKASI+2
         MVC   WKASKASI+20,WKAASID
         OI    FLAG0,FLAG0RW2     WRITE STACK BACK
         ICM   RF,1,WKANBNUM      NUMBER OF ACTIVE NOTE LIST ENTRIES
         BZ    LG000600
         BCTR  RF,0               DECREMENT
         STC   RF,WKANBNUM        ADDRESS STACK ENTRY OFF
         OI    FLAG0,FLAG0RW3     WRITE NOTE LIST BACK ALSO
         B     LG000600           A FULL STACK HAS BEEN UPDATED
IG000300 OC    0(0,R6),=19AL1(WKALNCTW) *** SUBJ EX, B
LG000400 SLR   RF,RF              PREPARE FOR INSERT CHAR
         IC    RF,WKASKNUM        CURRENT NUMBER OF ACTIVE ENTRIES
         LA    R0,1(0,RF)         UP 1
         STC   R0,WKASKNUM        SAVE NEW ACTIVE ENTRY NUMBER
         CLI   WKASKNUM,11        DID THE STACK JUST FILL UP?
         BNE   LG000500           -NO
         OI    NEWWCC,WCCALARM    YES, BEEP AT HIM
LG000500 ALR   RF,RF              DOUBLE TO FORM HWORD INDEX
         LH    R0,WKAASID         MOVE ASID TO STACK
         STH   R0,WKASKASI(RF)    INTO PROPER SLOT
         ALR   RF,RF              DOUBLE HWORD INDEX TO GET WORD INDEX
         L     R0,WKAADDR         MOVE CURRENT ADDRESS
         ST    R0,WKASTACK(RF)    INTO PROPER SLOT
         OI    FLAG0,FLAG0RW2     RE-WRITE STACK LINE
LG000600 CLI   WKASKNUM,11        IS THE ADDRESS STACK FULL?
         BL    LG000605           -NO
         OI    FLAG2,FLAG2STK     -YES, REMEMBER TO PUT OUT MESSAGE
LG000605 TM    FLAG1,FLAG1ADR+FLAG1ASI+FLAG1FMT+FLAG1ARE  UPDATE
*                                 -CONTROL ARRAY?
         BZ    LG000800           NO
         TM    FLAG1,FLAG1ADR+FLAG1ASI NEW ADDRESS?
         BZ    LG000615           NO
         MVC   WKAADDR(4),ESAULAD NEW ADDRESS
         TM    FLAG1,FLAG1RLL     RESULT OF SKIP,ROLL OR STACK?
         BZ    LG000610           NO
         OI    WKAADDR,WKAADRLL   SUPPRESS IMPLICIT STACK OPERATIONS
LG000610 MVC   WKAASID(2),ESAUAS2+2 NEW ASID
LG000615 MVC   WKAFMT,ESAUDTY     NEW FORMAT
         CLI   WKAFMT,C'C'        HANDLE CASE WHEN
         BE    LG000620           -NO INITIALIZATION
         MVI   WKAFMT,C'X'        -HAS BEEN DONE
LG000620 EQU   *
         IC    RF,WKAAREA         PREPARE TO UPDATE CONTROL ARRAY
         N     RF,=X'00000007'    KEEP JUST LOW THREE BITS
         LR    R0,RF              SAVE BYTE INDEX (1-ORG)
         SLL   RF,2               FORM WORD INDEX 1-ORG
         LR    R6,RF              SAVE WORD INDEX (1-ORG)
         LA    RF,WKAVCTA-4(RF)   ADDRESS PROPER ARRAY
         MVC   WKAVCTA-WKAVCTA(4,RF),WKAADDR NEW ADDRESS
         MVC   WKAVASI-WKAVCTA(2,RF),WKAASID NEW ASID
         MVC   WKAVFMT-WKAVCTA(1,RF),WKAFMT NEW FORMAT
         NI    WKAVFLAG-WKAVCTA(RF),255-WKAVCTAI OFF INVALID FLAG
         LR    RF,R0              AREA VALUE BACK IN GOOD INDEX REG
         IC    RF,WKALINES-1(RF)  NUMBER LINES THIS AREA
         LTR   RF,RF              ANY LINES ALLOCATED?
         BNZ   LG000700           YES
         MVI   NEWWCC,WCCALARM+WCCRSMDT
         B     LG000800           GO BLOW YOUR HORN
LG000700 BCTR  RF,0               DOWN 1 FOR EX OF OC
         L     R6,WKALNCTV-4(R6)  OFFSET INTO CONTROL VECTOR
         LA    R6,WKALNCTL(R6)    PLACE TO START WRITING
         EX    RF,IG000300        MARK LINES TO BE RE-WRITTEN
LG000800 TM    FLAG0,FLAG0SUS     MUST WE DEPART NOW?
         BNO   BLSR327B           NO - PREPARE OUTPUT
         B     LA005600           YES, HANDLE SUBCOMMAND
./ ADD NAME=BLSR327H
         TITLE 'BLSR3270--BLSR327H--CLOSED, INDEPENDENT SUBROUTINES'
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327H) COMP(SC132) PROD(JIP1329): SUBROUTINES
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE 2
*---------------------------------------------------------------------*
*        VALIDATE THE USERS REQUEST AS TO SIZES AND SUM               *
*---------------------------------------------------------------------*
         SPACE
BLSR327H OI    FLAG1,FLAG1LIN     DISPLAY RESULTING ALLOCATION
         SLR   RF,RF              CLEAR IT
         LA    R0,4               NUMBER OF AREAS WE LET HIM DEFINE
         SLR   R4,R4              CLEAR IT
         SLR   R5,R5              DITTO - INDEX CURRENT AREA DEF
         LA    RE,19              MAX NUMBER LINES HE CAN ALLOCATE
LH000200 IC    RF,NEWLINES(R5)    HOW MUCH DID HE ASK FOR HERE?    @D1C
         CR    RF,RE              MORE THAN WE HAVE TO GIVE?
         BNH   LH000300           NO
         STC   RE,NEWLINES(R5)    YES, FORCE REMAINDER HERE
         LR    RF,RE              FORCE REMAINDER TO ZERO
LH000300 SLR   RE,RF              DECREMENT NUMBER LINES AVAIL
         LA    R5,1(0,R5)         INCREMENT INDEX VALUE
         BCT   R0,LH000200        CHECK REST OF HIS REQUEST
         SPACE 2
*---------------------------------------------------------------------*
*        RE NOW HAS UNALLOCATED LINES COUNT, AND ALLOCATION IS VALID. *
*        SCHEDULE ANY REWRITES REQUIRED                               *
*---------------------------------------------------------------------*
         SPACE
         CLC   WKALINES(4),NEWLINES ANY CHANGES INDICATED?
         BER   R3                 SAME AS BEFORE
         MVC   WKALINES(4),NEWLINES DIFFERENT, UPDATE OLD VALUES
         SLR   R4,RF              BYTE VALUE INDEX OF UN-EQUAL ALLOC
         SLR   RF,RF              ASSUME NO NULL LINE ON ROW 6
         CH    RE,=H'3'           CAN WE PUT A NULL LINE AT POSIT 6?
         BNH   LH000400           NO
         LA    RF,1               INITIALIZE INDEX FOR FIRST AREA
         BCTR  RE,0               DECREMENT NUMBER OF NULL LINES
LH000400 ST    RF,WKALNCTV        INIT FIRST LINE CONTROL VECTOR
         LA    R0,3               NUMBER OF SLOTS LEFT IN LNCTV
         SLR   R1,R1              CLEAR SOME REGS - INDEX LNCTV
         SLR   R6,R6              INDEX LINES ALLOCATION
         SLR   R7,R7              NEXT AREA'S ALLOCATION
LH000500 IC    R7,NEWLINES(R6)    PICK UP NEXT ALLOCATION
         ALR   RF,R7              ADD TO PREVIOUS INDEX
         LTR   RE,RE              ANY NULLS LEFT TO INSERT?
         BZ    LH000600           NO
         BCTR  RE,0               YES, DECREMENT SPARE COUNT
         LA    RF,1(0,RF)         AND INCREMENT INDEX VALUE
LH000600 ST    RF,WKALNCTV+4(R1)  SET NEW INDEX
         LA    R1,4(0,R1)         INCREMENT WORD INDEX REGISTER
         LA    R6,1(0,R6)         INCREMENT BYTE INDEX REGISTER
         BCT   R0,LH000500        GO CHECK NEXT AREA, IF ANY
         SPACE 2
*---------------------------------------------------------------------*
*        LINE CONTROL INDEX UPDATED, NOW MARK CONTROL VECTOR. THE     *
*        SCREEN MUST BE RE-WRITTEN BELOW THE FIRST CHANGE IN ITS      *
*        ALLOCATION                                                   *
*---------------------------------------------------------------------*
         SPACE
         XC    NEWLNCTL(19),NEWLNCTL CLEAR CURRENT UPDATE CONTROL
         LA    R0,4               NUMBER OF AREAS
         LA    RF,1               BYTE INDEX VALUE, AND AREA NUMBER
         SLR   R1,R1              WORD INDEX FOR WKALNCTV
LH000700 L     R6,WKALNCTV(R1)    FETCH INDEX INTO LNCTL
         IC    RE,NEWLINES-1(RF)  NUMBER LINES THIS AREA
         LTR   RE,RE              ANY LINES THIS AREA?
         BZ    LH000900           NO
LH000800 STC   RF,NEWLNCTL(R6)    YES, MARK THE UPDATE CONTROL
         LA    R6,1(0,R6)         INDEX NEXT BYTE IN UPDATE CTL
         BCT   RE,LH000800        HIT ALL OF THEM
LH000900 LA    R1,4(0,R1)         UPDATE WORD INDEX
         LA    RF,1(RF)           UPDATE BYTE INDEX AND AREA ID
         BCT   R0,LH000700        DO ALL AREAS
         SPACE 2
*---------------------------------------------------------------------*
*        CONTROLS ALL SET, MARK AREAS TO BE RE-WRITTEN                *
*---------------------------------------------------------------------*
         SPACE
         LA    R6,WKALNCTL        POINT TO OLD VALUES
         LA    R4,NEWLNCTL        POINT TO NEW VALUES
         LA    R7,19              NUMBER OF BYTES TO CHECK
         LR    R5,R7              FIELDS HAVE EQUAL LENGTH
         LR    RF,R4              SAVE START ADDR
         CLCL  R6,R4              CHECK NEW AGAINST OLD
         SLR   R4,RF              OFFSET OF FIRST NEW AREA 0-18
         MVC   WKALNCTL(19),NEWLNCTL UPDATE THE VALUES BLSR327B USES
         SPACE 2
*---------------------------------------------------------------------*
*        HAVE THE RIGHT AREA TO UPDATE... IS THE OFFSET CORRECT?      *
*---------------------------------------------------------------------*
         SPACE
         IC    R7,0(R6)           SEE WHERE WE STOPPED
         SLA   R7,2               FORM WORD INDEX, TEST FOR NULL LINE
         BZ    LH001000           WE WILL INSERT A NULL HERE
         L     R7,WKALNCTV-4(R7)  PICK UP INDEX INTO LNCTL
         CR    R7,R4              STARTING POSITION SAME OR HIGHER?
         BNL   LH001000           YES
         LA    R6,WKALNCTL(R7)    NO, GET CORRECT RE-WRITE START
         LR    R4,R7              AND CORRECT OFFSET FROM LNCTL
LH001000 LA    RE,18              MAX EXECUTE LENGTH
         SLR   RE,R4              EX LENGTH TO USE
         EX    RE,IG000300        MARK ALL AFTER THIS ONE
         BR    R3                 GO BACK THE RIGHT WAY
./ ADD NAME=BLSR327I
         TITLE 'BLSR3270--BLSR327I--Static Storage Data'           @H1C
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327I) COMP(SC132) PROD(JIP1329): Static storage data
*
* COPYRIGHT= 5740-XYN, 5740-XYS Copyright IBM Corporation 1982.
*            Licensed material-Program property of IBM,
*            Refer to copyright instructions form number G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $H1= NEW327X,HIP2102,82008,DSDPRW: 327X MODELS 3, 4, AND 5
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE 2
*---------------------------------------------------------------------*
*        LITERAL POOL                                                 *
*---------------------------------------------------------------------*
         SPACE 1                                                   @D1C
         LTORG
         SPACE 2
*---------------------------------------------------------------------*
*OPERATIONAL MESSAGES                                                 *
*---------------------------------------------------------------------*
         SPACE
MSGSTK   DC    C' ADDRESS STACK FULL'
MSGSTKLN EQU   L'MSGSTK
         SPACE
MSGIER   DC    C' ERROR IN INPUT    '
MSGIERLN EQU   L'MSGIER
         EJECT
*---------------------------------------------------------------------*
*ERASE/WRITE COMMAND SEQUENCE                                         *
*---------------------------------------------------------------------*
ERSWRT   DC    XL1'27'              ESCAPE CHARACTER
         DC    XL1'F5'              ERASE/WRITE COMMAND
ERSWRTLN EQU   *-ERSWRT             COMMAND SEQUENCE LENGTH
         SPACE 2
*---------------------------------------------------------------------*
*THE INITIAL COMMAND/ORDER STRING FOR EACH WRITE                      *
*---------------------------------------------------------------------*
         SPACE
ESCWRITE BLSRWCC
         BLSRSBA 24,80              'FULL SCREEN' INTERFACE FOR THE
*                                   SPF TCAM/TSO MCP
ESCWRTLN EQU   *-ESCWRITE
         SPACE 2
*---------------------------------------------------------------------*
*ORDER SEQUENCE TO ERASE THE ENTIRE SCREEN                            *
*---------------------------------------------------------------------*
         SPACE
ERASEALL BLSRSBA 1,1                LINE 1, COLUMN 1
         BLSRRA 5,80,0                                             @H1C
ERASELEN EQU    *-ERASEALL
         SPACE 2
*---------------------------------------------------------------------*
*SCREEN FORMATTING SEQUENCE                                           *
*---------------------------------------------------------------------*
         SPACE
RWL1ORDS BLSRSBA 1,1              LINE 1
         BLSRSF ,                  FIRST CURSOR POSITION
         DC    C'3END '
         BLSRSF ,                  SECOND CURSOR POSITION
         DC    C'7<-SCROLL+>8 '
         BLSRSF ,                  THIRD CURSOR POSITION
         DC    C'9STACK '
         BLSRSF ,                  FOURTH CURSOR POSITION
         DC    C'10<-SKIP+>11'
         BLSRSF (PROT,INTENDET,NUM) MESSAGE AREA
         BLSRRA 2,1,0              CLEAR OUT MESSAGE AREA
RWL1ORLN EQU   *-RWL1ORDS
         SPACE
R2T4ORDS BLSRSBA 2,1              LINE 2
         BLSRSF PROT
         DC    C'SK'
         BLSRSF ,                  UNPROTECTED FOR USE OF PT ORDERS
         BLSRSBA 2,11              SECOND STACK ENTRY
         BLSRSF
         BLSRSBA 2,18              THIRD STACK ENTRY
         BLSRSF
         BLSRSBA 2,25              FOURTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,32              FIFTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,39              SIXTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,46              SEVENTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,53              EIGHTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,60              NINTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,67              TENTH STACK ENTRY
         BLSRSF
         BLSRSBA 2,74              LAST STACK ENTRY FIELD
         BLSRSF
         BLSRSBA 3,1              LINE 3
         BLSRSF (PROT,NUM)         CAN'T UPDATE LABEL
         DC    C'RF'               REFERENCE - WHAT THE STACK ENTS MEAN
         BLSRSF
         BLSRSBA 3,11              SECOND NOTE-LIST FIELD
         BLSRSF
         BLSRSBA 3,18              THIRD
         BLSRSF
         BLSRSBA 3,25              FOURTH
         BLSRSF
         BLSRSBA 3,32              FIFTH
         BLSRSF
         BLSRSBA 3,39              SIXTH
         BLSRSF
         BLSRSBA 3,46              SEVENTH
         BLSRSF
         BLSRSBA 3,53              EIGTH
         BLSRSF
         BLSRSBA 3,60              NINTH
         BLSRSF
         BLSRSBA 3,67              TENTH
         BLSRSF
         BLSRSBA 3,74              ELEVENTH AND LAST NOTE LIST ENTRY
         BLSRSF
R2T4ORLN EQU   *-R2T4ORDS          LENGTH OF ORDERS FOR LINES 2-3
RWL4ORDS BLSRSBA 4,1              LINE 4
         BLSRSF (PROT,NUM)
         DC    C'ADDR'             PROMPT FOR ADDRESS ENTRY
         BLSRSF
         BLSRSBA 4,13              PROTECT THE ASID PROMPT FIELD
         BLSRSF (PROT,NUM)         ''
         DC    C'ASID'             ''
         BLSRSF
         BLSRSBA 4,23              POSITION TO 'FORMAT' PROMPT FIELD
         BLSRSF (PROT,NUM)
         DC    C'FMT'              PROMPT FOR 'X' OR 'C' FORMAT
         BLSRSF
         DC    C'X'                PAD TO 'AREA' PROMPT FIELD
         BLSRSF (PROT,NUM)         PROTECT THE PROMPT
         DC    C'AREA'             TELL HIM WHAT WE WANT
         BLSRSF
         DC    C'A'                PAD TO AREA ALLOCATION PROMPT
         BLSRSF (PROT,NUM)
         DC    C'LINES/AREA: A'    TELL HIM WHAT WE NOW HAVE
         BLSRSF
         DC    C'04'               PAD TO 'B' AREA ALLOCATION
         BLSRSF (PROT,NUM)         PROTECT THE AREA ID
         DC    C'B'
         BLSRSF
         DC    C'04'               PAD TO 'C' AREA ALLOCATION
         BLSRSF (PROT,NUM)         PROTECT THE 'C' AREA ID
         DC    C'C'
         BLSRSF
         DC    C'04'               PAD TO 'D' AREA ALLOCATION
         BLSRSF (PROT,NUM)         PROTECT THE 'D' AREA ID
         DC    C'D'
         BLSRSF
         DC    C'04'               PAD TO THE 'SKIP' FIELD PROMPT
         BLSRSF (PROT,NUM)         PROTECT THE PROMPT
         DC    C'SKIP'             PROMPT FOR 'SKIP' AMOUNT
         BLSRSF
         BLSRSBA 4,80              TERMINATE THE ENTRY AREA
         BLSRSF (PROT,NUM)
RWL4ORLN EQU   *-RWL4ORDS          LENGTH OF LINE 4 ORDERS
         SPACE
RWL5ORDS DC    C' SUBCMND/CLIST:'
         BLSRSF
         BLSRSBA 5,80              POSITION TO END OF ROW 5
         BLSRSF PROT               LEST HE WRITE TOO MUCH
         BLSRRA 24,80,0                                            @H1A
RWL5ORLN EQU   *-RWL5ORDS          LENGTH OF LINE 5 ORDERS
         SPACE 2
*---------------------------------------------------------------------*
*        3277 LITERAL ORDERS                                          *
*---------------------------------------------------------------------*
         SPACE
RW1UMGOR BLSRSBA 1,43             POSITION TO MESSAGE AREA
RW2SBAOR BLSRSBA 2,5              POSITION TO 1ST STACK ENTRY
ERASR2OR BLSREUA 3,5              ERASE ALL REMAINING STACK ENTRIES
RW3SBAOR BLSRSBA 3,5              POSITION TO 1 NOTE LIST ENTRY
ERASR3OR BLSREUA 4,7              ERASE REMAINING NOTE ENTRIES
RW4AADOR BLSRSBA 4,6              POSITION TO ADDR ATTRIBUTE FIELD
RW4UADOR BLSRSBA 4,7              POSITION TO ADDR ENTRY FIELD
RW4AASOR BLSRSBA 4,18             POSITION TO ASID ATTRIBUTE FIELD
RW4UASOR BLSRSBA 4,19             POSITION TO ASID ENTRY FIELD
RW4AFMOR BLSRSBA 4,27             POSITION TO FMT ATTRIBUTE FIELD
RW4UFMOR BLSRSBA 4,28             POSITION TO FMT ENTRY FIELD
RW4AAROR BLSRSBA 4,34             POSITION TO WINDOW ATTRIBUTE FIELD
RW4UAROR BLSRSBA 4,35             POSITION TO WINDOW ENTRY FIELD
RW4AL1OR BLSRSBA 4,50             POSITION TO AREA A ATTRIBUTE FIELD
RW4AL2OR BLSRSBA 4,55             -DO NOT MOVE - AREA B ATTRIBUTE FIELD
RW4AL3OR BLSRSBA 4,60             -DO NOT MOVE - AREA C ATTRIBUTE FIELD
RW4AL4OR BLSRSBA 4,65             -DO NOT MOVE - AREA D ATTRIBUTE FIELD
RW4ULNOR BLSRSBA 4,51             POINT TO LINES ENTRY FIELD
RW4ASPOR BLSRSBA 4,73             POSITION TO SKIP ATTRIBUTE FIELD
RW4USPOR BLSRSBA 4,74             POINT TO SKIP ENTRY FIELD
RW5UCMOR BLSRSBA 5,17             POSITION TO SUBCOMMAND ENTRY FIELD
         SPACE 2
*---------------------------------------------------------------------*
*        ORDER SEQUENCE TO ERASE THE REMAINDER OF THE DUMP DISPLAY    *
*        WINDOWS                                                      *
*---------------------------------------------------------------------*
         SPACE
RW6RAORD BLSRRA 1,1,0             NULLS REST OF SCREEN
         SPACE 2
*---------------------------------------------------------------------*
*        ORDER SEQUENCE TO ESTABLISH A NORMAL INTENSITY, UNPROTECTED  *
*        FIELD FOR DUMP DATA DISPLAY                                  *
*---------------------------------------------------------------------*
         SPACE
NORMAREA BLSRSF
         SPACE 2
*---------------------------------------------------------------------*
*        ORDER SEQUENCE TO ESTABLISH A NORMAL INTENSITY, PROTECTED    *
*        FIELD FOR DUMP DATA DISPLAY                                  *
*---------------------------------------------------------------------*
         SPACE
PROTAREA BLSRSF PROT
         SPACE 2
*---------------------------------------------------------------------*
*        ORDER SEQUENCE TO ESTABLISH AN INTENSIFIED UNPROTECTED       *
*        FIELD FOR DUMP DATA DISPLAY                                  *
*---------------------------------------------------------------------*
INTNSESF BLSRSF INTENDET
         SPACE 2
*---------------------------------------------------------------------*
*        MISCELLANEOUS TABLES                                         *
*---------------------------------------------------------------------*
         SPACE
         PRINT DATA
T3270TAB DC    X'&TR3270'
         DC    0H'0'              ALIGN FOR BUFFER ADDRESS TABLE
BUFADTAB BLSRROTB 6,24,1
         PRINT NODATA
         DS    0D
SBATRTTB DC    256AL1(0)          SKIP PAST ALL CHARS -
         ORG   SBATRTTB+ORDERSBA  - EXCEPT THE SET-BUFFER-ADDRESS
         DC    AL1(255)           - DISPLAY ORDER CODE
         ORG
         SPACE 2
*---------------------------------------------------------------------*
*        PATCH AREA ADDRESSABLE FROM ASSEMBLER CODE                   *
*---------------------------------------------------------------------*
         SPACE
BLSRPTCH DC    CL8'ZAPAREA',(((*-BLSR327A+19)/20+7)/8)CL8'BLSR327A'
./ ADD NAME=BLSR327J
         TITLE 'BLSR3270--BLSR327J--VALIDATE INPUT'
*---------------------------------------------------------------------*
*                                                                     *
*BLSR327J--VALIDATE INPUT                                             *
*                                                                     *
*---------------------------------------------------------------------*
         SPACE
BLSR327J LA    R9,3               ACCOUNT FOR AID, ADDR, ADDR
         LA    R3,LJ000100        RETURN POINT FROM ANALYSIS SUBS
         ST    R7,SAVER7          WILL NEED THIS LATER
         BAL   RE,EA001400        DECOMPOSE CURSOR ADDR INTO ROW/COL
         CH    R5,=H'0'           IS IT ON ROW ONE?
         BNE   LJ000100           -NO, DON'T LOOK ANY FURTHER
         CH    R4,=H'1'           UNDER 3END
         BL    LJ000100           -IF BETWEEN
         CH    R4,=H'4'           -COLUMNS 1-4
         BNH   LD001500           QUIT
LJ000100 SR    R7,R9              ANY INPUT LEFT?
         BNP   LJ001000           -NO, SEE WHAT HAPPENED
         ALR   RA,R9              TO NEXT DATA FIELD DELIMITER
         LA    R1,0(RA,R7)        IN CASE TRT GETS CC=0
         LR    RF,R7              HOW MUCH THERE IS LEFT
         BCTR  RF,0               BYPASS 1ST SBA
         LR    R5,RA              PUT BUFFER ADDRESS IN SAFE PLACE
LJ000102 LR    R4,RF              HOW MUCH THERE IS LEFT
         CH    R4,=H'256'         MORE THAN ONE TRT CAN HANDLE?
         BNH   LJ000104           -NO, PROCEED
         LA    R4,256             -YES, WE WILL HAVE TO LOOP THROUGH
LJ000104 SR    RF,R4              REMEMBER TO SUBTRACT FROM TOTAL
         BCTR  R4,0               DOWN ONE FOR EXECUTE
         EX    R4,IJ000106        LOOK FOR NEXT SBA ORDER
         BNZ   LJ000110           IF NON-ZERO, WE FOUND SBA
         LTR   RF,RF              IS THERE ANYTHING LEFT?
         BNP   LJ000110           -NO
         LA    R5,256(R5)         CORRECT BUFFER ADDRESS
         B     LJ000102           KEEP LOOKING
IJ000106 TRT   1(0,R5),SBATRTTB   *** SUBJ OF EX, ABOVE
         SPACE
*---------------------------------------------------------------------*
*        R1 NOW POINTS TO NEXT SBA, OR PAST END OF DATA               *
*        R2 MAY HAVE BEEN CLOBBERED BY A X'FF'                        *
*---------------------------------------------------------------------*
         SPACE
LJ000110 LR    R9,R1              STOPPING ADDR
         SLR   R9,RA              LENGTH THIS FIELD
         BAL   RE,EA001400        DECOMPOSE FIELD ADDRESS
         ALR   R5,R5              DOUBLE ROW ADDR FOR YCON INDEX
         CH    R5,=H'10'          IN DATA DISPLAY AREA?
         BNL   LJ002900           -YES, SEE WHAT IS GOING ON
         LA    R8,BLSR327B
         AH    R8,YJ000120(R5)    ->ANALYSIS ROUTINE
         BR    R8                 GO TO ANALYSIS ROUTINE
         SPACE
*---------------------------------------------------------------------*
*        PROCESSOR VECTOR FOR MANUAL INPUT RECEIVED FROM LINES 1-5    *
*---------------------------------------------------------------------*
         SPACE
YJ000120 DC    Y(LJ002500-BLSR327B) LINE 1--CONSTANTS
         DC    Y(LJ002600-BLSR327B) LINE 2--ADDRESS IN STACK
         DC    Y(LJ002700-BLSR327B) LINE 3--NOTATION IN STACK
         DC    Y(LJ000150-BLSR327B) LINE 4--INPUT LINE
         DC    Y(LJ002800-BLSR327B) LINE 5--SUBCOMMAND
         SPACE
*---------------------------------------------------------------------*
*        CHANGE TO LINE 4                                             *
*---------------------------------------------------------------------*
         SPACE
LJ000150 IC    R4,AJ000200(R4)    TRANSLATE COLUMN NUM TO INDEX
         LH    RF,YJ000300(R4)    PICK UP BRANCH INDEX VALUE
         LA    R8,BLSR327B(RF)    ->ANALYSIS ROUTINE
         BR    R8
         SPACE
*---------------------------------------------------------------------*
*        DATA FIELD TRANSLATION VECTOR                                *
*---------------------------------------------------------------------*
         SPACE
AJ000200 DC    6AL1(0)            INVALID
         DC    1AL1(2)            ADDRESS FIELD CHANGED
         DC    11AL1(0)           INVALID
         DC    1AL1(4)            ASID FIELD CHANGED
         DC    8AL1(0)            INVALID
         DC    1AL1(6)            FORMAT FIELD CHANGED
         DC    6AL1(0)            INVALID
         DC    1AL1(8)            AREA FIELD CHANGED
         DC    15AL1(0)           INVALID
         DC    1AL1(10)           WINDOW A ALLOCATION CHANGED
         DC    4AL1(0)            INVALID
         DC    1AL1(12)           WINDOW B ALLOCATION CHANGED
         DC    4AL1(0)            INVALID
         DC    1AL1(14)           WINDOW C ALLOCATION CHANGED
         DC    4AL1(0)            INVALID
         DC    1AL1(16)           WINDOW D ALLOCATION CHANGED
         DC    7AL1(0)            INVALID
         DC    1AL1(18)           SKIP FIELD CHANGED
         DC    8AL1(0)            INVALID
         SPACE
*---------------------------------------------------------------------*
*        PROCESSING VECTOR FOR CHANGES ON LINE 4                      *
*---------------------------------------------------------------------*
         SPACE
YJ000300 DC    Y(LC000200-BLSR327B) PROTECTED CAPTION CHANGED
         DC    Y(LJ000400-BLSR327B) ADDRESS CHANGED
         DC    Y(LJ000500-BLSR327B) ASID CHANGED
         DC    Y(LJ000600-BLSR327B) FORMAT CHANGED
         DC    Y(LJ000700-BLSR327B) AREA CHANGED
         DC    Y(LJ000800-BLSR327B) WINDOW A CHANGED
         DC    Y(LJ000800-BLSR327B) WINDOW B CHANGED
         DC    Y(LJ000800-BLSR327B) WINDOW C CHANGED
         DC    Y(LJ000800-BLSR327B) WINDOW D CHANGED
         DC    Y(LJ000900-BLSR327B) SKIP CHANGED
         SPACE
*---------------------------------------------------------------------*
*        ADDRESS FIELD CHANGED                                        *
*---------------------------------------------------------------------*
         SPACE
LJ000400 OI    FLAG1,FLAG1ADR       MUST REWRITE OLD (OR NEW) DATA
         BAL   RE,EA003700          CONVERT AND VALIDATE INPUT
         B     LJ000420             VALIDATION FAILED IN SUBROUTINE
         MVC   EADDRVAL,PACKDEC+3   SAVE NEW ADDRESS
         TM    ERLN4,ERLN4ADR       WAS IT INVALID LAST TIME?
         BNO   LJ000415             -NO, TURN OFF ERROR INDICATOR
LJ000410 MVI   EADDRFLG,VREWRITE    REWRITE THIS ATTRIBUTE
         OI    FLAG0,FLAG0RW4       LINE 4 ORDERS MUST BE REWRITTTEN
LJ000415 NI    ERLN4,255-ERLN4ADR   HAVE VALID ASID
         BR    R3                   PROCESS REMAINING INPUT
LJ000420 OI    ERLN4,ERLN4ADR       INDICATE ERROR ENCOUNTERED
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        ASID FIELD CHANGED                                           *
*---------------------------------------------------------------------*
         SPACE
LJ000500 OI    FLAG1,FLAG1ASI       MUST REWRITE OLD (OR NEW) DATA
         BAL   RE,EA003700          CONVERT AND VALIDATE INPUT
         B     LJ000520             VALIDATION FAILED IN SUBROUTINE
         LA    R1,VPASPL            BLSRVPAS PARM LIST
         L     RF,VPASP             ->BLSRVPAS
         BALR  RE,RF                PERFORM MORE SOPHISTICATED CHECK
         LTR   RF,RF                DID ASID PASS TEST?
         BNZ   LJ000520             -NO
         MVC   EASIDVAL,PACKDEC+5   SAVE NEW ASID
         TM    ERLN4,ERLN4ASI       WAS IT INVALID LAST TIME?
         BNO   LJ000515             -NO, TURN OFF ERROR INDICATOR
LJ000510 MVI   EASIDFLG,VREWRITE    REWRITE THIS ATTRIBUTE
         OI    FLAG0,FLAG0RW4       LINE 4 ORDERS MUST BE REWRITTEN
LJ000515 NI    ERLN4,255-ERLN4ASI   HAVE VALID ASID
         BR    R3                   PROCESS REMAINING INPUT
LJ000520 OI    ERLN4,ERLN4ASI       INDICATE ERROR ENCOUNTERED
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        FORMAT FIELD CHANGED                                         *
*---------------------------------------------------------------------*
         SPACE
LJ000600 OI    FLAG1,FLAG1FMT       MUST REWRITE OLD (OR NEW) DATA
         LR    RF,R9                PUT LENGTH IN SAFE PLACE
         SH    RF,=H'3'             HOW MUCH DID WE GET?
         BNP   LJ000620             NOTHING, ERROR
         BCT   RF,LJ000620          MORE THAN 1 BYTE, ERROR
         OI    3(RA),C' '           CONVERT TO UPPER CASE
         CLI   3(RA),C'C'           CHARACTER FORMAT REQUESTED?
         BE    LJ000640             -YES
         CLI   3(RA),C'X'           HEX FORMAT REQUESTED?
         BE    LJ000640             -YES
LJ000620 OI    ERLN4,ERLN4FMT       INDICATE ERROR ENCOUNTERED
         BR    R3                   PROCESS REMAINING INPUT
LJ000640 MVC   EFMTVAL,3(RA)        SAVE FORMAT FIELD
         TM    ERLN4,ERLN4FMT       WAS IT INVALID LAST TIME?
         BNO   LJ000670             -NO, TURN OFF ERROR INDICATOR
LJ000660 MVI   EFMTFLG,VREWRITE     ATTRIBUTE MUST BE REWRITTEN
         OI    FLAG0,FLAG0RW4       LINE 4 ORDERS MUST BE REWRITTEN
LJ000670 NI    ERLN4,255-ERLN4FMT   HAVE VALID FORMAT
         BR    R3                   PROCESSING REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        AREA FIELD CHANGED                                           *
*---------------------------------------------------------------------*
         SPACE
LJ000700 OI    FLAG1,FLAG1ARE       MUST REWRITE OLD (OR NEW) DATA
         LR    RF,R9                SAVE INPUT LENGTH
         SH    RF,=H'3'             DID WE GET ANYTHING?
         BNP   LJ000720             -NO, ERROR
         BCT   RF,LJ000720          MORE THAN 1 BYTE, ERROR
         OI    3(RA),C' '           CONVERT TO UPPER CASE
         CLI   3(RA),C'A'           CHECK FOR RANGE A-D
         BL    LJ000720             TOO LOW
         CLI   3(RA),C'D'
         BNH   LJ000740             GOOD
LJ000720 OI    ERLN4,ERLN4ARE       INDICATE ERROR ENCOUNTERED
         BR    R3                   PROCESS REMAINING INPUT
LJ000740 MVC   EAREAVAL,3(RA)       SAVE AREA VALUE
         TM    ERLN4,ERLN4ARE       WAS IT INVALID LAST TIME?
         BNO   LJ000770             -NO, TURN OFF ERROR INDICATOR
LJ000760 MVI   EAREAFLG,VREWRITE    REWRITE ATTRIBUTE BYTE
         OI    FLAG0,FLAG0RW4       REWRITE LINE 4 ORDERS
LJ000770 NI    ERLN4,255-ERLN4ARE   HAVE VALID AREA
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        WINDOW FIELD CHANGED                                         *
*---------------------------------------------------------------------*
         SPACE
* R4 HAS INDEX TO YCON TABLE - 10, 12, 14, 16 DEPENDING ON WHICH
* FIELD WAS MODIFIED
         SPACE
LJ000800 OI    FLAG1,FLAG1LIN       MUST REWRITE OLD (OR NEW) DATA
         SRL   R4,1                 BACK TO BYTE
         SH    R4,=H'5'             0 ORIGIN
         LA    R5,EWNDSFLG(R4)      -> CURRENT WINDOW FLAG
         BAL   RE,EA004100          CONVERT AND VALIDATE INPUT
         B     LJ000840             CONVERSION FAILED
         STC   RF,EWNDSVAL(R4)      VALUE RETURNED IN RF
         TM    0(R5),EPREVERR       WAS IT INVALID LAST TIME?
         BO    LJ000820             -YES, SET REWRITE INDICATOR
         MVI   0(R5),0              RESET ERROR INDICATOR
         BR    R3                   PROCESS REMAINING INPUT
LJ000820 MVI   0(R5),VREWRITE       REWRITE THIS ATTRIBUTE
         OI    FLAG0,FLAG0RW4       LINE 4 ORDERS MUST BE REWRITTEN
         BR    R3                   PROCESS REMAINING INPUT
LJ000840 MVI   0(R5),EPREVERR       SET INDICATOR FOR NEXT TIME
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        SKIP FIELD CHANGED                                           *
*---------------------------------------------------------------------*
         SPACE
LJ000900 OI    FLAG1,FLAG1SKP       MUST REWRITE OLD (OR NEW) DATA
         BAL   RE,EA003700          VALIDATE INPUT
         B     LJ000940             VALIDATION FAILED
         MVC   ESKIPVAL,PACKDEC+3   SAVE NEW SKIP VALUE
         TM    ERLN4,ERLN4SKP       WAS IT INVALID LAST TIME?
         BNO   LJ000930             -NO, TURN OF ERROR INDICATOR
LJ000920 MVI   ESKIPFLG,VREWRITE    REWRITE THIS ATTRIBUTE
         OI    FLAG0,FLAG0RW4       LINE 4 ORDERS MUST BE REWRITTEN
LJ000930 NI    ERLN4,255-ERLN4SKP   HAVE VALID SKIP FIELD
         BR    R3                   PROCESS REMAINING INPUT
LJ000940 OI    ERLN4,ERLN4SKP       INDICATE ERROR ENCOUNTERED
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        EXAMINE RESULTS OF INPUT VALIDITY CHECKING                   *
*---------------------------------------------------------------------*
         SPACE
LJ001000 LA    R4,4                 LOOK AT ALL FOUR WINDOWS
         NI    ERLN4,255-ERLN4WND   START WITH NO ERRORS
         LA    R5,EWNDSFLG          INITIAL WINDOW FLAG
LJ001050 TM    0(R5),EPREVERR       WAS AN ERROR ENCOUNTERED?
         BNO   LJ001075             -NO, CONTINUE LOOP
         OI    ERLN4,ERLN4WND       SET MASTER ERROR FLAG
LJ001075 LA    R5,1(R5)             -> NEXT WINDOW FLAG
         BCT   R4,LJ001050          LOOK AT NEXT WINDOW
         SPACE
         CLI   ERLN4,0              ANY OUTSTANDING ERRORS?
         BE    LC000320             -NO
         OI    NEWWCC,WCCALARM      BEEP
         BAL   R8,LB000020          INITIALIZE TPUT/TGET BUFFER
         SPACE
*---------------------------------------------------------------------*
*        PUT OUT ERROR MESSAGE                                        *
*---------------------------------------------------------------------*
         SPACE
         MVC   0(ORDLNSBA,RA),RW1UMGOR  ORDERS INTO SCREEN BUFFER
         MVC   ORDLNSBA(MSGIERLN,RA),MSGIER MSG INTO BUFFER
         LA    RA,ORDLNSBA+MSGIERLN(0,RA) CORRECT BUFFER ADDRESS
         SPACE
*---------------------------------------------------------------------*
*        PUT OUT LINE 4 ORDERS AND DATA                               *
*---------------------------------------------------------------------*
         SPACE
         MVC   0(ORDLNSBA,RA),RW4AADOR SBA FOR ADDR ATTRIB
         MVC   ORDLNSBA(2,RA),INTNSESF ASSUME INTENSIFY
         TM    ERLN4,ERLN4ADR       SHOULD IT HAVE BEEN INTENSIFIED?
         BO    LJ001100             -YES, UPDATE BUFFER ADDRESS
         TM    EADDRFLG,VREWRITE    SHOULD IT HAVE BEEN NORMAL?
         BNO   LJ001200             -NO, SHOULDN'T OUTPUT
         MVI   EADDRFLG,0           CLEAR FOR NEXT TIME
         MVI   ORDLNSBA+1(RA),NORMAL UNINTENSIFY ADDR FIELD
LJ001100 LA    RA,ORDLNSBA+2(RA)    CORRECT BUFFER ADDRESS
         SPACE
LJ001200 MVC   0(ORDLNSBA,RA),RW4AASOR SBA FOR ASID ATTRIB
         MVC   ORDLNSBA(2,RA),INTNSESF ASSUME INTENSIFY
         TM    ERLN4,ERLN4ASI       SHOULD IT HAVE BEEN INTENSIFIED?
         BO    LJ001300             -YES, UPDATE BUFFER ADDRESS
         TM    EASIDFLG,VREWRITE    SHOULD IT HAVE BEEN NORMAL?
         BNO   LJ001400             -NO, SHOULDN'T OUTPUT
         MVI   EASIDFLG,0           CLEAR FOR NEXT TIME
         MVI   ORDLNSBA+1(RA),NORMAL UNINTENSIFY ASID FIELD
LJ001300 LA    RA,ORDLNSBA+2(RA)    CORRECT BUFFER ADDRESS
         SPACE
LJ001400 MVC   0(ORDLNSBA,RA),RW4AFMOR SBA FOR FORMAT ATTRIB
         MVC   ORDLNSBA(2,RA),INTNSESF ASSUME INTENSIFY
         TM    ERLN4,ERLN4FMT       SHOULD IT HAVE BEEN INTENSIFIED?
         BO    LJ001500             -YES, UPDATE BUFFER ADDRESS
         TM    EFMTFLG,VREWRITE     SHOULD IT HAVE BEEN NORMAL?
         BNO   LJ001600             -NO, SHOULD'T OUTPUT
         MVI   EFMTFLG,0            CLEAR FOR NEXT TIME
         MVI   ORDLNSBA+1(RA),NORMAL UNINTENSIFY FORMAT FIELD
LJ001500 LA    RA,ORDLNSBA+2(RA)    CORRECT BUFFER ADDRESS
         SPACE
LJ001600 MVC   0(ORDLNSBA,RA),RW4AAROR SBA FOR AREA FLAG
         MVC   ORDLNSBA(2,RA),INTNSESF ASSUME INTENSIFY
         TM    ERLN4,ERLN4ARE       SHOULD IT HAVE BEEN INTENSIFIED?
         BO    LJ001700             -YES, UPDATE BUFFER ADDRESS
         TM    EAREAFLG,VREWRITE    SHOULD IT HAVE BEEN NORMAL?
         BNO   LJ001800             -NO, SHOULD'T OUTPUT
         MVI   EAREAFLG,0           CLEAR FOR NEXT TIME
         MVI   ORDLNSBA+1(RA),NORMAL UNINTENSIFY AREA FIELD
LJ001700 LA    RA,ORDLNSBA+2(RA)    CORRECT BUFFER ADDRESS
         SPACE
LJ001800 LA    R3,EWNDSFLG          INITIAL INDEX FOR WINDOW LOOP
         LA    R4,1                 INCREMENT
         LA    R5,EWNDSFLG+3        COMPARAND
         LA    R8,RW4AL1OR          BEGINNING OF WINDOW ORDERS
LJ001900 TM    0(R3),VREWRITE+EPREVERR NEED TO REWRITE WINDOW
         BZ    LJ002100             -NO, CHECK NEXT FIELD
         MVC   0(ORDLNSBA,RA),0(R8) SBA FOR WINDOW FIELD
         MVC   ORDLNSBA(2,RA),INTNSESF ASSUME INTENSIFY
         TM    0(R3),EPREVERR       SHOULD IT HAVE BEEN?
         BO    LJ002000             -YES, UPDATE BUFFER ADDRESS
         MVI   0(R3),0              CLEAR FOR NEXT TIME
         MVI   ORDLNSBA+1(RA),NORMAL UNINTENSIFY WINDOW FIELD
LJ002000 LA    RA,ORDLNSBA+2(RA)    CORRECT BUFFER ADDRESS
LJ002100 LA    R8,ORDLNSBA(R8)      NEXT WINDOW SBA
         BXLE  R3,R4,LJ001900       LOOK AT NEXT WINDOW
         SPACE
         MVC   0(ORDLNSBA,RA),RW4ASPOR SBA FOR SKIP FIELD
         MVC   ORDLNSBA(2,RA),INTNSESF ASSUME INTENSIFY
         TM    ERLN4,ERLN4SKP       SHOULD IT HAVE BEEN INTENSIFIED?
         BO    LJ002200             -YES, UPDATE BUFFER ADDRESS
         TM    ESKIPFLG,VREWRITE    SHOULD IT HAVE BEEN NORMAL?
         BNO   LJ002300             -NO, SHOULDN'T OUTPUT
         MVI   ESKIPFLG,0           CLEAR FOR NEXT TIME
         MVI   ORDLNSBA+1(RA),NORMAL UNINTENSIFY SKIP FIELD
LJ002200 LA    RA,ORDLNSBA+2(RA)    CORRECT BUFFER ADDRESS
         SPACE
*---------------------------------------------------------------------*
*        OUTPUT FLAGGED INPUT                                         *
*---------------------------------------------------------------------*
         SPACE
LJ002300 LA    R8,LA000700          TPUT RETURN ADDRESS
         MVC   0(4,RA),WKACORDS     ADD AN INSERT CURSOR ORDER
         LA    RA,4(0,RA)           CORRECT BUFFER ADDRESS
         B     LA000500             OUTPUT BUFFER
         SPACE
*---------------------------------------------------------------------*
*        LINE 1 SHOULD NOT BE MODIFIED - SEE WHAT HAPPENED            *
*---------------------------------------------------------------------*
         SPACE
LJ002500 IC    R4,AJ002510(R4)      TRANSLATE COLUMN NUMBER TO INDEX
         LH    RF,YJ002520(R4)      PICK UP BRANCH INDEX VALUE
         LA    R8,BLSR327B(RF)      ->ANALYSIS ROUTINE
         BR    R8                   GO TO ANALYSIS ROUTINE
         SPACE
*---------------------------------------------------------------------*
*        DATA FIELD TRANSLATION VECTOR FOR LINE 1                     *
*---------------------------------------------------------------------*
         SPACE
AJ002510 DC    1AL1(0)              ATTRIBUTE - ERROR
         DC    1AL1(2)              3END - RESEND
         DC    5AL1(0)              ATTRIBUTE - ERROR
         DC    1AL1(2)              7<-SCROLL+>8 - RESEND
         DC    13AL1(0)             ATTRIBUTE - ERROR
         DC    1AL1(2)              9STACK - RESEND
         DC    7AL1(0)              ATTRIBUTE - ERROR
         DC    1AL1(2)              10<-SKIP+>11 - RESEND
         DC    50AL1(0)             ATTRIBUTE OR MESSAGE - ERROR
         SPACE
*---------------------------------------------------------------------*
*        PROCESSOR VECTOR FOR CHANGES TO FIELDS ON LINE 1             *
*---------------------------------------------------------------------*
         SPACE
YJ002520 DC    Y(LC000200-BLSR327B) PROTECTED FIELD CHANGED - BAD
         DC    Y(LJ002550-BLSR327B) CONSTANTS FIELD CHANGED - RESEND
         SPACE
LJ002550 OI    NEWWCC,WCCALARM      BEEP
         BR    R3
         SPACE
*---------------------------------------------------------------------*
*        MODIFICATIONS TO LINE 2 - ADDRESS STACK                      *
*---------------------------------------------------------------------*
         SPACE
LJ002600 SH    R4,=H'3'            BYPASS THE FIRST FIELD
         BNP   LC000200            PROTECTED FIELD CHANGED - BAD
         SRDA  R4,32               PREPARE FOR DIVISION
         D     R4,=F'7'            REMAINDER SHOULD BE ONE
         BCT   R4,LC000200         PROTECTED FIELD CHANGED - BAD
         OI    FLAG0,FLAG0RW2      MUST RESURRECT THE PREVIOUS DATA
         B     LJ002550            GO BEEP
         SPACE
*---------------------------------------------------------------------*
*        MODIFICATIONS TO LINE 3 - STACK NOTATION                     *
*---------------------------------------------------------------------*
         SPACE
LJ002700 SH    R4,=H'3'             BYPASS THE FIRST FIELD
         BNP   LC000200             PROTECTED FIELD CHANGED - BAD
         SRDA  R4,32                PREPARE FOR DIVISION
         D     R4,=F'7'             REMAINDER SHOULD BE ONE
         BCT   R4,LC000200          PROTECTED FIELD CHANGED - BAD
         LA    RF,L'WKANB1          LENGTH OF A NOTES ENTRY
         SLR   R4,R4                CLEAR R4 FOR MULTIPLY
         MR    R4,RF                COMPUTE DISPLACEMENT TO ENTRY
         LA    R5,SAVSTK(R5)        COMPUTE ADDRESS OF NOTES ENTRY
         LR    RF,R9                PUT LENGTH IN SAFE PLACE
         SH    RF,=H'3'             GET PAST SBA
         BP    LJ002720             HE MAY HAVE JUST NULLED FIELD
         MVI   0(R5),NULVALUE       INDICATE NULLS
         BR    R3                   PROCESS REMAINING INPUT
LJ002720 MVI   0(R5),C' '           INITIALIZE TO
         MVC   1(L'WKANB1-1,R5),0(R5) BLANKS
         BCTR  RF,R0                DOWN ONE FOR EXECUTE
         EX    RF,IJ002750          MOVE FROM BUFFER TO SAVE AREA
         BR    R3                   PROCESS REMAINING INPUT
IJ002750 MVC   0(0,R5),3(RA)        *** SUBJ OF EX, ABOVE
         SPACE
*---------------------------------------------------------------------*
*        MODIFICATIONS TO LINE 5 - SUBCOMMAND                         *
*---------------------------------------------------------------------*
         SPACE
LJ002800 CH    R4,=H'16'            PROTECTED FIELD BELOW THIS
         BL    LC000200             BAD
         LR    RF,R9                PUT LENGTH IN SAFE PLACE IT
         SH    RF,=H'3'             GET PAST SBA
         BP    LJ002850             HE MAY HAVE JUST NULLED FIELD
         MVI   SAVSBCMD,NULVALUE    INDICATE NULLS
         BR    R3                   PROCESS REMAINING INPUT
LJ002850 MVI   SAVSBCMD,C' '        INITIALIZE TO
         MVC   SAVSBCMD+1(65),SAVSBCMD BLANKS
         LA    R5,SAVSBCMD          -> SAVSBCMD
         BCTR  RF,R0                DOWN ONE FOR EXECUTE
         EX    RF,IJ002750          MOVE FROM BUFFER TO SAVE AREA
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
*---------------------------------------------------------------------*
*        MODIFICATIONS TO LINES 6-24 - DUMP DISPLAY AREA              *
*---------------------------------------------------------------------*
         SPACE
LJ002900 SH    R5,=H'10'            ORIGIN LINE NUMBER AT ZERO
         SRL   R5,1                 GO BACK TO BYTE INDEX
         LA    RF,WKALNCTL          INDEX TO
         AR    RF,R5                -PROPER LINE
         SLR   R8,R8                START WITH ZERO
         IC    R8,WKALNCTL(R5)      VECTOR INTO AREA TABLE
         BCTR  R8,0                 FORM ZERO ORIGIN INDEX
         SLL   R8,2                 *(2**2)=4
         LA    R8,WKAVCTA(R8)       PROPER CONTROL WORD FOR THIS AREA
         LTR   R4,R4                ONLY VALID MODIFICATIONS ARE
         BNP   LC000200             -BEYOND COLUMN 1
         CLI   34(R8),C'C'          IS IT CHARACTER FORMATTING?
         BNE   LJ002950             -NO, PERFORM CHECK FOR HEX
         OI    0(RF),WKALNCTW       LINE MUST BE REWRITTEN
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
LJ002950 SH    R4,=H'8'             GET BY ADDRESS FIELD
         BP    LJ002960             ADDRESS FIELD WAS NOT MODIFIED
         OI    0(RF),WKALNCTW       LINE MUST BE REWRITTEN
         BR    R3                   PROCESS REMAINING INPUT
LJ002960 SRDA  R4,32                PREPARE FOR DIVISION
         D     R4,=F'9'             EACH DATA FIELD IS #CCCCCCCC
         BCT   R4,LC000200          REMAINDER SHOULD BE ONE, ELSE ERR
         OI    0(RF),WKALNCTW       LINE MUST BE REWRITTEN
         BR    R3                   PROCESS REMAINING INPUT
         SPACE
./ ADD NAME=BLSR327M
         TITLE 'BLSR3270--BLSR327M--MACRO VARIABLES'
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327M) COMP(SC132) PROD(JIP1329): MACRO VARIABLES
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
*---------------------------------------------------------------------*
*THIS GLOBAL SET VARIABLE IS USED TO CONVERT FROM BINARY TO           *
*THE EBCDIC REPRESENTATION OF THE SIX-BIT 3270 CODE. IT               *
*FACILITATES USING ROW-COLUMN ADDRESSING IN THE SCREEN ORDER          *
*GENERATING MACROS.                                                   *
*---------------------------------------------------------------------*
         SPACE 1                                                   @D1C
         GBLC  &TR3270
&TR3270  SETC '40C1C2C3C4C5C6C7C8C94A4B4C4D4E4F50D1D2D3D4D5D6D7D8D95A5B5
               5C5D5E5F6061E2E3E4E5E6E7E8E96A6B6C6D6E6FF0F1F2F3F4F5F6F7F
               F8F97A7B7C7D7E7F'
         SPACE 2
./ ADD NAME=BLSR327P
         TITLE 'BLSR3270--BLSR327P--SYMBOLIC VALUES AND DSECTS'
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327P) COMP(SC132) PROD(JIP1329): SYMBOLIC VALUES/DSECTS
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE 2
*---------------------------------------------------------------------*
*3270 DISPLAY ATTENTION IDENTIFIERS                                   *
*---------------------------------------------------------------------*
         SPACE 1                                                   @D1C
AIDENTER EQU   C''''              ENTER KEY
AIDCLEAR EQU   C'_'               CLEAR KEY
AIDIGNOR EQU   49                 IGNORE ALL LESS THAN X'31'
         SPACE 2
*---------------------------------------------------------------------*
*3270 DISPLAY ORDER CODES                                             *
*---------------------------------------------------------------------*
         SPACE
ORDERPT  EQU   5                  PROGRAM TAB TO NEXT UNPROT FIELD
ORDERSBA EQU   17                 SET DISPLAY BUFFER ADDRESS
ORDEREUA EQU   18                 ERASE UNPROTECTED TO ADDRESS
ORDERIC  EQU   19                 INSERT CURSOR
ORDERSF  EQU   29                 START DISPLAY FIELD
ORDERRA  EQU   60                 REPEAT NEXT BYTE TO ADDRESS
         SPACE 2
*---------------------------------------------------------------------*
*LENGTHS FOR 3270 ORDER SEQUENCES
*---------------------------------------------------------------------*
         SPACE
ORDLNRA  EQU   4                  ORDER, ADDR, ADDR, BYTE
ORDLNSBA EQU   3                  ORDER, ADDR, ADDR
ORDLNEUA EQU   3                  ORDER, ADDR, ADDR
         SPACE 2
*---------------------------------------------------------------------*
*3270 DISPLAY REMOTE COMMAND CODES                                    *
*---------------------------------------------------------------------*
         SPACE
RCCWRITE EQU   C'1'               NORMAL 3270 WRITE COMMAND CODE
RCCEW    EQU   C'5'               3270 ERASE-WRITE COMMAND CODE
         SPACE 2
*---------------------------------------------------------------------*
*3270 DISPLAY WRITE CONTROL CHARACTER BITS                            *
*---------------------------------------------------------------------*
         SPACE
         IEZBITS
WCCALARM EQU   BIT5               SOUND AUDIBLE ALARM
WCCRESTR EQU   BIT6               UNLOCK THE KEYBOARD
WCCRSMDT EQU   BIT7               RESET MODIFIED-DATA TAGS
         SPACE 2
*---------------------------------------------------------------------*
*ATTRIBUTE BYTES FOR 3270 FIELDS                                      *
*---------------------------------------------------------------------*
         SPACE
         LCLC  &BYTE               FOR OWN GENERATION OF 3270 VALUES
&BYTE    SETC  '&TR3270'(1+(2*(8)),2)  INTENSIFIED
INTENSE  EQU   X'&BYTE'
         SPACE
&BYTE    SETC  '&TR3270'(1+(2*(0)),2) NORMAL
NORMAL   EQU   X'&BYTE'
         SPACE 2
*---------------------------------------------------------------------*
*LIST SOURCE DESCRIPTOR FOR I/O SERVICE ROUTINES. GOTTEN IN SP 78     *
*---------------------------------------------------------------------*
         SPACE
         IKJLSD
LSD      DSECT
         ORG
LSDVREC  DS    H                  LENGTH OF THIS SEGMENT
         DS    H                  LITTLE LL - SET TO ZEROS
LSDVRECT DS    0C                 START OF TEXT
LSDLEN   EQU   *-LSD              LENGTH OF LIST SOURCE DESCRIPTOR
./ ADD NAME=BLSR327W
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSR327W) COMP(SC132) PROD(JIP1329): DSPL3270 work area
*
* COPYRIGHT= 5740-XYN, 5740-XYS Copyright IBM Corporation 1982.
*            Licenced Material-Program Property of IBM,
*            Refer to copyright instructions form number G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $H1= NEW327X,HIP2102,82011,DSDPRW: 327x Models 3, 4, and 5
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         SPACE 1                                                   @D1C
         IEZBITS
WKAORG   DS    0D                 ORIGIN OF WORK AREA
         DC    CL8'BLSR327W'      IDENTIFIER
         DC    A(0)
         DC    A(0)
         SPACE 2
*---------------------------------------------------------------------*
*        11-ENTRY ADDRESS STACK                                       *
*---------------------------------------------------------------------*
         SPACE
WKASTACK DC    11A(0)             ADDRESS LIST
WKASKDEL EQU   BIT0               PURGE THIS ENTRY FROM STACK
WKANB1   DC    0CL6'CVT...'       'REAL' SIZE OF A NOTE LIST ENTRY
WKANOTES DC    CL8'CVT',10CL8' '  NOTE LIST
WKASKASI DC    11Y(1)             ASID LIST
         SPACE 2
*---------------------------------------------------------------------*
*        STACK MANAGEMENT COUNTERS                                    *
*---------------------------------------------------------------------*
         SPACE
WKASKNUM DC    FL1'1'             ONE INITIAL ADDRESS ENTRY--THE CVT
WKANBNUM DC    FL1'1'             ONE INITIAL NOTE ENTRY--'CVT'
         SPACE 2
*---------------------------------------------------------------------*
*        CURRENT ENTRY LINE VALUES                                    *
*---------------------------------------------------------------------*
         SPACE
WKAADDR  DS    0A                 CURRENT ADDRESS
         DC    AL1(WKAADRLL),AL3(0) NEEDN'T STACK ZERO ON INIT REQ
WKAADRLL EQU   BIT1               DO NOT STACK IMPLICITLY
WKAASID  DC    Y(1)               MVS ASID
WKAFMT   DC    C'X'               HEXADECIMAL DISPLAY FORMATTING
WKAAREA  DC    C'A'               START IN FIRST DISPLAY WINDOW
WKALINES DC    AL1(19,0,0,0)      ALL LINES IN WINDOW A
WKASKIP  DC    A(512)             START SKIP VALUE = 800 BYTES
         SPACE 2
*---------------------------------------------------------------------*
*        THE VECTOR THAT DEFINES CURRENT USAGE OF LINES 6-24 IT       *
*        INDICATES WHAT WINDOW A GIVEN ROW LOGICALLY BELONGS TO. THE  *
*        HIGH ORDER BIT IN EACH BYTE INDICATES THAT THE ROW MUST BE   *
*        RE-WRITTEN.                                                  *
*---------------------------------------------------------------------*
         SPACE
WKALNCTL DS    0XL19              NINETEEN ROWS BELOW HEADER LINES
         DC    19XL1'01'          NINETEEN ROWS IN WINDOW A
         DC    0X'02'             NO ROWS IN WINDOW B
         DC    0X'03'             NO ROWS IN WINDOW C
         DC    0X'04'             NO ROWS IN WINDOW D
         DC    0X'00'             NO UNUSED ROWS
WKALNCTW EQU   BIT0               MUST WRITE THIS LINE
         DC    BL1'00000011'
         SPACE 2
*---------------------------------------------------------------------*
*        WINDOW CONTROL ARRAYS                                        *
*---------------------------------------------------------------------*
         SPACE
WKALNCTV DC    A(0,20,20,20)      INDEX VALUES INTO WKALNCTL FOR
*                                 WINDOWS A,B,C, AND D
WKAVCTA  DC    4A(0)              START ADDRESSES
WKAVCTB  DC    4A(0)              CURRENT LINE START ADDRESSES
WKAVCTC  DC    4A(WKAVCTAI)       EACH WINDOW INITIALLY INVALID
WKAVASI  EQU   WKAVCTC,2,C'H'     ASID'S
WKAVFMT  EQU   WKAVCTC+2,1,C'C'   FORMATS
WKAVFLAG EQU   WKAVCTC+3,1,C'B'   FLAGS
WKAVCTAI EQU   BIT0               SCREEN WINDOW NOT YET USED
         DC    A(0)
         DC    Y(0)
         DC    C'X'
         DC    C'A'
         DC    AL1(19,0,0,0)
         SPACE 2
*---------------------------------------------------------------------*
*        SCRATCH-PAD FOR THE FORMAT ROUTINES                          *
*---------------------------------------------------------------------*
         SPACE
         DC    XL8'0'                                              @H1C
         DC    A(0)
         DC    A(0)
WKACRPOS DC    2A(0)              ROW/COLUMN ADDRESS OF CURSOR
WKAAIDNX DC    Y(0)               INDEX INTO AID PROCESSOR YCON TABS
WKACORDS DC    X'11C55013'        INSERT CURSOR
         DC    X'0000'
         SPACE 2
*---------------------------------------------------------------------*
*        SUBCOMMAND DATA                                              *
*---------------------------------------------------------------------*
         SPACE
WKABLSRC DC    CL79'LAST SUBCOMMAND ENTERED UNDER DSPL3270'
WKABLSRN DC    AL1(0)             AMOUNT OF DATA VALID IN BLSRC FIELD
WKALENG  EQU   *-WKAORG           LENGTH OF THIS WORKAREA
./ ADD NAME=BLSR327X
         TITLE 'BLSR3270--BLSR327X--ASSEMBLER AUTOMATIC STORAGE'
*** START OF SPECIFICATIONS*******************************************
*
* $MAC(BLSR327X) COMP(SC132) PROD(JIP1329): BLSR327A AUTOMATIC STORAGE
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
* FUNCTION= DESCRIBE AUTOMATIC STORAGE DATA
*
*     CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $01= OZ43724,EIP1102,80024,DMGPRW: INITIALIZE STPB BEFORE USE
*
***** END OF SPECIFICATIONS*******************************************
@DATD    DSECT
* DEFINITION OF STACK PARAMETER BLOCK (STPB) NOW IN BLSR3270     02@01D
*TPB     STACK MF=L                          LINE COMMENTED BY @ZA43724
*TPBALSD EQU   STPB+4                        LINE COMMENTED BY @ZA43724
         SPACE 2
*---------------------------------------------------------------------*
*        FLAG BYTE 0                                                  *
*---------------------------------------------------------------------*
         SPACE
FLAG0    DS    BL1                FLAG BYTE 0
FLAG0SUS EQU   BIT0               SUSPENDING THE SESSION
FLAG0POK EQU   BIT1               SCREEN BUFFER IN SYNCH WITH
*                                 DUMP DATA LINE NUMBER
FLAG0NUL EQU   BIT2               NULL SCREEN TO NEXT LINE
FLAG0FMT EQU   BIT3               SCREEN FORMATTING REQUIRED
FLAG0RW2 EQU   BIT4               RE-WRITE THE ADDRESS STACK
FLAG0RW3 EQU   BIT5               RE-WRITE THE NOTE LIST
FLAG0PRG EQU   BIT6               COMPRESS THE ADDRESS STACK
FLAG0RW4 EQU   BIT7               RE-WRITE LINE 4 ORDERS
         SPACE 2
*---------------------------------------------------------------------*
*        FLAG BYTE 1                                                  *
*---------------------------------------------------------------------*
         SPACE
FLAG1    DS    BL1                FLAG BYTE 1
FLAG1ADR EQU   BIT0               RESEND THE ADDRESS FIELD
FLAG1ASI EQU   BIT1               RESEND THE ASID FIELD
FLAG1FMT EQU   BIT2               RESEND THE CURRENT FORMAT
FLAG1ARE EQU   BIT3               RESEND THE CURRENT WINDOW NAME
FLAG1LIN EQU   BIT4               RESEND WINDOW ALLOCATIONS
FLAG1SKP EQU   BIT5               RESEND SKIP VALUE
FLAG1BLA EQU   BIT6               CAN'T ACCEPT MANUAL ADDR ENTRY
FLAG1RLL EQU   BIT7               DO NOT STACK NEW ADDRESS IMPLICITLY
         SPACE 2
*---------------------------------------------------------------------*
*        FLAG BYTE 2                                                  *
*---------------------------------------------------------------------*
         SPACE
FLAG2    DS    BL1                FLAG BYTE 2
FLAG2STK EQU   BIT0               REMEMBER TO PUT OUT STACK FULL MSG
         SPACE 2
*---------------------------------------------------------------------*
*        INDICATOR OF SCREEN POSITION                                 *
*---------------------------------------------------------------------*
         SPACE
SCRPO    DS    XL1                INDICATOR OF SCREEN POSITION
SCRPOAD1 EQU   1                  TABBED TO START OF ADDR
SCRPOAD9 EQU   2                  FILLED IN ADDR FIELD
SCRPOAS9 EQU   3                  FILLED IN ASID FIELD
SCRPOFM9 EQU   4                  FILLED IN FORMAT FIELD
SCRPOWI9 EQU   5                  FILLED IN WINDOW FIELD
SCRPOER3 EQU   6                  EUA, 3, 80
SCRPOPT9 EQU   7                  TABBED TO END OF LINES
         SPACE 2
         DS    0F
SAVER0RF DS    BL64               ASSEMBLER CODE SAVE AREA
         ORG  *-4
SAVERF   DS    BL4                RF USED TO CONTAIN RETURN CODE
         SPACE 2
SAVER7   DS    F                  SAVE R7 VALUE
SAVELATR DS    BL1                SAVE DATA LINE ATTRIBUTE
         SPACE 2
PHSY     DS    0D                 WORK AREA HISTORY RECORD
         ORG   PHSY+48            POSITION TO TEXT PORTION
         COPY  BLSR327W           LOCAL COPY OF WORK AREA
         SPACE 2
*---------------------------------------------------------------------*
*        ERROR CHECKING WORK AREA                                     *
*---------------------------------------------------------------------*
         SPACE
ERLN4    DS    CL1                LINE 4 FIELDS ERROR STATUS
ERLN4ADR EQU   BIT0               - ADDRESS FIELD INVALID
ERLN4ASI EQU   BIT1               - ASID FIELD INVALID
ERLN4FMT EQU   BIT2               - FORMAT FIELD INVALID
ERLN4ARE EQU   BIT3               - AREA FIELD INVALID
ERLN4WND EQU   BIT4               - WINDOW FIELD(S) INVALID
ERLN4SKP EQU   BIT5               - SKIP FIELD INVALID
         SPACE
EADDRFLG DS    CL1                ADDRESS FIELD REWRITE FLAG
VREWRITE EQU   BIT0               - UNINTENSIFY
EPREVERR EQU   BIT1               - INVALID LAST TIME
EASIDFLG DS    CL1                ASID FIELD REWRITE FLAG
EFMTFLG  DS    CL1                FORMAT FIELD REWRITE FLAG
EAREAFLG DS    CL1                AREA FIELD REWRITE FLAG
EWNDSFLG DS    CL4                WINDOW FIELDS REWRITE FLAG
ESKIPFLG DS    CL1                SKIP FIELD REWRITE FLAG
LN4FLGLN EQU   *-EADDRFLG         LENGTH OF LINE 4 FLAGS
         SPACE
EADDRVAL DS    CL4
EASIDVAL DS    CL2
EFMTVAL  DS    CL1
EAREAVAL DS    CL1
EWNDSVAL DS    CL4
ESKIPVAL DS    CL4
LN4VALLN EQU   *-EADDRVAL         LENGTH OF LINE 4 VALUES
         SPACE
SAVSTK   DS    11CL6              SAVE NOTES MODIFICATIONS
NULVALUE EQU   X'FF'              FIELD HAS BEEN NULLED
SAVSTKLN EQU   *-SAVSTK
SAVSBCMD DS    CL66               SAVE SUBCOMMAND ENTRY
         SPACE 2
*---------------------------------------------------------------------*
*        3270 BUFFER - MUST BE AT END OF AUTOMATIC STORAGE            *
*---------------------------------------------------------------------*
         SPACE
SCRNBUFR DS    CL2560
./ ADD NAME=BLSRCKLT
*** START OF SPECIFICATIONS********************************************
*
* $MAC(BLSRCKLT) COMP(SC132) PROD(JIP1329): BLSR3270 SUPPORT
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*     CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81260,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS********************************************
         MACRO
         BLSRCKLT &LIST,&P=,&V=   LIST, PARMETER, AND ASSOC. VALUE
         GBLA  &POSIT,&VALID      FOR INTER MACRO COMM             @D1C
         LCLA  &N                 LOOP CONTROL                     @D1C
.LOOP    AIF   (&N EQ N'&LIST).OUT
&N       SETA  &N+1
         AIF   ('&P' NE '&LIST(&N)').LOOP
&POSIT   SETA  &POSIT+&V
&VALID   SETA  &VALID+1
.OUT     MEND
./ ADD NAME=BLSRCVTA
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSRCVTA) COMP(SC132) PROD(JIP1329): CONVERT ROW/COLUMN PAIR   *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= CONVERT ROW/COLUMN PAIR                                   *
*                                                                     *
*     CHANGE ACTIVITY:                                                *
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,80026,DMGPRW: ELIMINATE NUISANCE MESSAGES      *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&N       BLSRCVTA &ROW,&COL
         GBLC  &TR3270,&B1,&B2
         LCLA  &POSIT,&BYT1,&BYT2
.*       AIF   (T'&ROW EQ 'N' AND T'&COL EQ 'N').OK1
.*       MNOTE 4,'ROW/COL MAY NOT BE NUMERIC'
.*OK1    ANOP
         AIF   (&ROW GE 1 AND &ROW LE 24).OK2                      @D1C
         MNOTE 8,'ROW VALUE &ROW NOT IN RANGE 1 - 24'
         MEXIT
.OK2     AIF   (&COL GE 1 AND &COL LE 80).OK3
         MNOTE 8,'COLUMN VALUE &COL NOT IN RANGE 1 - 80'
         MEXIT
.OK3     ANOP
&POSIT   SETA  80*(&ROW-1)+&COL-1
&BYT1    SETA  &POSIT/64      MODULO 64 DIGIT
&BYT2    SETA  &POSIT-(64*&BYT1)
&B1      SETC  '&TR3270'(2*&BYT1+1,2)
&B2      SETC  '&TR3270'(2*&BYT2+1,2)
.OUT     MEND
./ ADD NAME=BLSRDEND
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSRDEND) COMP(SC132) PROD(JIP1329): END Processing Table      *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS Copyright IBM Corporation 1982.       *
*            Licenced material-Program property of IBM,               *
*            Refer to copyright instructions form number G120-2083.   *
*                                                                     *
* FUNCTION= Final macro to be used in the definition of a data name   *
* processing table.                                                   *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,81029,DSDPRW: Improve comments, remarks        *
* $P1= PAA0007,JIP1329,82159,DSDPRW: Match array dimensions           *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSRDEND &PREFIX
.*--------------------------------------------------------------------*
.* BLSRDEND--Terminate a Data Name Processing Table Definition        *
.*--------------------------------------------------------------------*
         GBLA  &DTDIM
         GBLC  &GP,&GD(200),&GN(200),&GS(200),&GV(200)             @P1C
         LCLA  &JD,&JL,&JX
         LCLC  &CD,&CN,&CS,&CV,&CX
&GP.DIM  DC    F'&DTDIM'               DIMENSION OF ARRAY
*------- End of Table Heading -------------------------------- #MD81029
         SPACE
*------- Begin Body of Table --------------------------------- #MD81029
&JD      SETA  1                       CURRENT DATA NAME INDEX
.L01     AIF   (&JD GT &DTDIM).L99     ALL DATA NAME PROCESSED
&CD      SETC  '&GD(&JD)'              CURRENT DATA NAME
&JL      SETA  K'&CD                   LENGTH OF DATA NAME
&CN      SETC  '&GN(&JD)'              GROUP DATA NAME             @D1C
&CS      SETC  '&GS(&JD)'              FIND EXIT ENTRY POINT NAME
&CV      SETC  '&GV(&JD)'              SCAN EXIT ENTRY POINT NAME
&JX      SETA  &JD                     GROUP SEARCH INDEX          @D1C
         AIF   ('&CD' EQ '&CN').L03    SELF-GROUP                  @D1C
&JX      SETA  &DTDIM                  GROUP SEARCH INDEX          @D1C
&CX      SETC  '&GD(&DTDIM)'           SEARCH DATA NAME
.L02     AIF   ('&CN' EQ '&CX').L03    GROUP NAME FOUND            @D1C
&JX      SETA  &JX-1                   GROUP SEARCH INDEX          @D1C
&CX      SETC  '&GD(&JX)'              SEARCH DATA NAME
         AIF   (&JX GE 1).L02          CONTINUE GROUP NAME SEARCH  @D1C
         MNOTE 8,'GROUP DATA NAME ERROR FOR &CD'                   @D1C
&JX      SETA  &JD                     SUBSTITUTE DATA NAME
.L03     ANOP
&GP.&JD  DC    FL1'&JL',CL31'&CD',F'&JX',CL8'&CS',CL8'&CV'
&JD      SETA  &JD+1                   DATA NAME INDEX
         AGO   .L01
.L99     ANOP
         SPACE
*------- End of Data Name Processing Table ------------------- #MD81029
         DC    CL8'ZAPAREA'            EYE-CATCHER IN DUMP TEXT    @D1A
         DC    CL8'&SYSECT'            CSECT NAME                  @D1A
         DC    CL8'&SYSDATE'           DATE OF COMPILATION         @D1A
         DC    CL8'&SYSPARM'           MAINTENANCE LEVEL           @D1A
         MEND
./ ADD NAME=BLSRDTD
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSRDTD) COMP(SC132) PROD(JIP1329): DEFINE ONE DATA NAME       *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= DEFINE PROCESSING ASSOCIATED WITH ONE DATA NAME TO BE     *
* SHOWN IN A DATA NAME PROCESSING TABLE.                              *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,81015,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
         BLSRDTD &DTD,&FIND=,&NORMAL=,&SCAN=
.*--------------------------------------------------------------------*
.* BLSRDTD--DEFINE PROCESSING FOR ONE DATA NAME                       *
.*--------------------------------------------------------------------*
         GBLA  &DTDIM
         GBLC  &GP,&GD(200),&GN(200),&GS(200),&GV(200)             @D1C
         LCLA  &A1                                                 @D1A
.*------------ PROCESS DATA NAME ----- ----------------------- #MD81015
         AIF   (&DTDIM LT 1).L03       NO NEED TO CHECK ORDER      @D1A
&A1      SETA  K'&GD(&DTDIM)           LENGTH FOR COMPARISON       @D1A
         AIF   (&A1 LT K'&DTD).L01     NEW DATA NAME LONGER        @D1A
.*                                     OLD DATA NAME AS LONG AS NEW
&A1      SETA  K'&DTD                  LENGTH FOR COMPARISON       @D1A
         AIF   ('&GD(&DTDIM)'(1,&A1) LE '&DTD').L03 VALID ORDER    @D1A
         AGO   .L02                    OUT OF ORDER                @D1A
.*                                     NEW DATA NAME LONGER
.L01     AIF   ('&GD(&DTDIM)' LE '&DTD'(1,&A1)).L03 VALID ORDER    @D1C
.*                                     DATA NAME OUT OF ORDER
.L02     MNOTE 12,'DATA NAME OUT OF ORDER' NO. STATE THE PROBLEM   @D1A
         AGO   .L09                    NULLIFY MACRO-EXPANSION     @D1A
.*                                     DATA NAME IN PROPER ORDER
.L03     ANOP  ,                       VALID REQUEST               @D1A
&DTDIM   SETA  &DTDIM+1                DIMENSION OF NAME ARRAY     @D1C
&GD(&DTDIM) SETC '&DTD'                DATA NAME                   @D1C
.*------------ PROCESS NORMALIZED DATA NAME ------------------ #MD81015
         AIF   (T'&NORMAL EQ 'O').L04  IMPLICIT NORMAL DATA TYPE   @D1C
&GN(&DTDIM) SETC '&NORMAL'             NORMAL DATA TYPE
         AGO   .L05                                                @D1C
.L04     ANOP  ,                                                   @D1C
&GN(&DTDIM) SETC '&DTD'                NO GROUP NAME               @D1C
.*------------ PROCESS FIND EXIT NAME  ------------------------------*.
.L05     AIF   (T'&FIND EQ 'O').L06    NO FIND EXIT                @D1C
&GS(&DTDIM) SETC '&FIND'               FIND EXIT NAME
         AGO   .L07                                                @D1C
.L06     ANOP  ,                                                   @D1C
&GS(&DTDIM) SETC ' '                   NO FIND EXIT
.*------------ PROCESS SCAN EXIT NAME  ------------------------------*.
.L07     AIF   (T'&SCAN EQ 'O').L08    NO SCAN EXIT                @D1C
&GV(&DTDIM) SETC '&SCAN'               SCAN EXIT NAME
         AGO   .L09                                                @D1C
.L08     ANOP  ,                                                   @D1C
&GV(&DTDIM) SETC ' '                   NO SCAN EXIT
.L09     ANOP  ,                                                   @D1C
         MEND
./ ADD NAME=BLSRDT
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSRDT) COMP(SC132) PROD(JIP1329): DEFINE HEADER FIELDS        *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= DEFINE THE FIELDS OF A DATA NAME PROCESSING TABLE FOR USE *
* BY MVS IPCS.                                                        *
*                                                                     *
* CHANGE ACTIVITY:                                                    *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= GENDUMP,HIP2102,79095,DMGPRW: GENERALIZED DUMP SUPPORT         *
* $D1= QUALITY,HIP2102,80220,DSDPRW: IMPROVE COMMENTS, REMARKS, ....  *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSRDT &PFX
         GBLA  &DTDIM
         GBLC  &GP
&DTDIM   SETA  0
&GP      SETC  '&PFX'
&LABEL   DS    0F                      DATA NAME PROCESSING TABLE  @D1C
&PFX.ID  DC    CL8'&SYSECT.'           IDENTIFIER                  @L1C
         MEND
./ ADD NAME=BLSRDUT
*   %;                              /* BLSRDUT BILINGUAL MACRO   @D1A*/
*/* START OF SPECIFICATIONS*******************************************/
*/*                                                                  */
*/* $MAC(BLSRDUT) COMP(SC132) PROD(JIP1329): DUMP TABLE              */
*/*                                                                  */
*/* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.    */
*/*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,            */
*/*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083 */
*/*                                                                  */
*/* FUNCTION= DEFINE THE FORMAT OF THE TABLE WHICH LINKS GENERALIZED */
*/* IPCS DUMP PROCESSING FUNCTIONS TO SUBROUTINES AND DATA WHICH     */
*/* SUPPORT ONE PARTICULAR KIND OF DUMP.                             */
*/*                                                                  */
*/*   CHANGE ACTIVITY:                                               */
*/* $L0= GENDUMP,HIP2102,79078,DMGPRW: GENERALIZED DUMP ACCESS       */
*/* $L1= SYMALIAS,HIP2102,80269,DSDPRW: RECOGNIZE SYMBOLIC ALIASES   */
*/* $D1= QUALITY,HIP2102,81229,DSDPRW: IMPROVE COMMENTS, REMARKS     */
*/*                                                                  */
*/*** END OF SPECIFICATIONS*******************************************/
*   %IF DUTSTORAGE='' %THEN         /* NO SCOPE/STORAGE CLASS        */
*     %DUTSTORAGE='BASED(ZZ6DUTP)'; /* SCOPE/STORAGE CLASS           */
*   DECLARE                         /* DUMP TABLE                    */
*     1 DUT DUTSTORAGE BOUNDARY(DWORD),/* DUMP TABLE                 */
*      2 DUTID CHARACTER(8),        /* TABLE IDENTIFIER              */
*      2 DUTCSECT CHARACTER(8),     /* CONTROL SECTION IDENTIFIER    */
*      2 DUTDATE CHARACTER(8),      /* DATE ASSEMBLED                */
*
*/* -- NAMES FOR DUMP PROCESSING ----------------------------------- */
*
*      2 * CHARACTER(8),            /* RESERVED                      */
*      2 DUTSEQ CHARACTER(8),       /* SEQUENTIAL SETUP ROUTINE      */
*      2 DUTOPEN CHARACTER(8),      /* DIRECT OPEN ROUTINE           */
*      2 DUTDIR CHARACTER(8),       /* DIRECT SETUP ROUTINE          */
*      2 DUTDSL CHARACTER(8),       /* MODULE DATA SEARCH ROUTINE    */
*      2 DUTDVL CHARACTER(8),       /* MODULE DATA SCAN ROUTINE      */
*      2 *(12) CHARACTER(8),        /* RESERVED                      */
*
*/* -- ADDRESSES FOR DUMP PROCESSING ------------------------------- */
*
*      2 DUTSTRCP POINTER,          /* ->STRUCTURE TABLE             */
*      2 DUTAREAP POINTER,          /* ->AREA TABLE                  */
*      2 DUTSSTP POINTER,           /* ->SYMBOLIC ALIAS TABLE    @L1A*/
*      2 *(13) POINTER,             /* RESERVED                  @L1C*/
*
*/* -- RESERVED SPACE ---------------------------------------------- */
*
*      2 *(3) BIT(64) BOUNDARY(DWORD),/* RESERVED                    */
*      2 DUT99999 CHARACTER(0);     /* END OF DUMP TABLE             */
*   %GO TO ZZZLBLAD;                /* CONTINUE PL/S PROCESSING      */
*/* IMBED ASSEMBLER MACRO IN A PL/S FULL-WIDTH COMMENT--BEGIN COMMENT
         MACRO
&NAME    BLSRDUT &DSECT=YES,           DUMMY SECTION OPTION            *
               &SEQ=,                  SEQUENTIAL SETUP ROUTINE        *
               &OPEN=,                 DUMP OPEN ROUTINE               *
               &DIR=,                  DIRECT SETUP ROUTINE            *
               &FINDMOD=,              MODULE DATA SEARCH ROUTINE      *
               &SCANMOD=,              MODULE DATA SCAN ROUTINE        *
               &STRUC=0,               STRUCTURE TABLE                 *
               &SYMBOLS=0,             SYMBOLIC ALIAS TABLE            *
               &AREA=0                 AREA TABLE
         AIF   ('&DSECT' NE 'YES').L1  NO DSECT STATEMENT
DUT      DSECT ,                       IPCS DUMP TABLE
         AGO   .L2
.L1      ANOP
DUT      DS    0D                      IPCS DUMP TABLE
.L2      ANOP
&NAME    DS    0D                      ALIGNED ON DOUBLEWORD
DUTID    DC    CL8'BLSRDUT'            TABLE IDENTIFIER
         AIF   ('&DSECT' NE 'YES').L3  NO DSECT STATEMENT
DUTCSECT DC    CL8'DUTCSECT'           CONTROL SECTION IDENTIFIER
         AGO   .L4
.L3      ANOP
DUTCSECT DC    CL8'&SYSECT'            CONTROL SECTION IDENTIFIER
.L4      ANOP
DUTDATE  DC    CL8'&SYSDATE'           DATE ASSEMBLED
         SPACE
*------- NAMES FOR DUMP PROCESSING -----------------------------------*
         DC    CL8' '                  RESERVED
DUTSEQ   DC    CL8'&SEQ '              SEQUENTIAL SETUP ROUTINE
DUTOPEN  DC    CL8'&OPEN '             DIRECT OPEN ROUTINE
DUTDIR   DC    CL8'&DIR '              DIRECT SETUP ROUTINE
DUTDSL   DC    CL8'&FINDMOD '          MODULE DATA SEARCH ROUTINE
DUTDVL   DC    CL8'&SCANMOD '          MODULE DATA SCAN ROUTINE
         DC    12CL8' '                RESERVED
         SPACE
*------- ADDRESSES FOR DUMP PROCESSING -------------------------------*
DUTDTMP  DC    A(&STRUC)               ->STRUCTURE TABLE
DUTDTUP  DC    A(&AREA)                ->AREA TABLE
DUTSSTP  DC    A(&SYMBOLS)             ->SYMBOLIC ALIAS TABLE      @L1C
         DC    13A(0)                  RESERVED                    @L1A
         SPACE
*------- RESERVED SPACE ----------------------------------------------*
         DS    0D                      ALIGNED ON DOUBLEWORD
         DC    3XL8'00'                RESERVED
DUT99999 DS    0C                      END OF DUMP TABLE
         MEND
*IMBED ASSEMBLER MACRO IN A PL/S FULL-WIDTH COMMENT--END COMMENT     */
*%ZZZLBLAD:                         /* BY-PASS ASSEMBLER DATA--PL/S  */
*   ;                               /* BLSRDUT BILINGUAL MACRO   @D1A*/
./ ADD NAME=BLSREUA
*** START OF SPECIFICATIONS********************************************
*
* $MAC(BLSREUA) COMP(SC132) PROD(JIP1329): ERASE-UNPROTECTED ORDER
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
* FUNCTION= PRODUCE A 3270 ERASE-UNPROTECTED-TO-ADDRESS ORDER
*
*     CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81259,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS********************************************
         MACRO
&N       BLSREUA &ROW,&COL
         GBLC  &B1,&B2
         BLSRCVTA &ROW,&COL
&N       DC    AL1(ORDEREUA),XL2'&B1&B2'   EUA, BUFFER ADDRESS
         SPACE 1                                                   @D1C
         MEND
./ ADD NAME=BLSRRA
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSRRA) COMP(SC132) PROD(JIP1329): 3270 REPEAT-TO-ADDRESS
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81264,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         MACRO
&N       BLSRRA &ROW,&COL,&BYTE        3270 REPEAT-TO-ADDRESS      @D1C
         GBLC  &B1,&B2
         BLSRCVTA &ROW,&COL
&N       DC    AL1(ORDERRA),XL2'&B1&B2',AL1(&BYTE) RA ORD, ADDR, DATA
         SPACE 2
         MEND
./ ADD NAME=BLSRROTB
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSRROTB) COMP(SC132) PROD(JIP1329): 3270 ADDRESS GENERATION
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         MACRO
&N       BLSRROTB  &FROM,&TO,&COL  3270 ADDRESS GENERATION         @D1C
         GBLC  &B1,&B2             TRANSLATED ADDRESSES FROM BLSRCVTA
         LCLA  &A                  COUNTER
         LCLC  &STRING             HOLDS ADDRESSES DURING BLSRCVTA LOOP
&A       SETA  &FROM               INITIAL ROW VALUE
.L       AIF   (&A GT &TO).OUT     DON'T DO TO MUCH
         BLSRCVTA &A,&COL          GET THIS ADDRESS
&STRING  SETC  '&STRING&B1&B2'     CATENATE PREVIOUS STRING W/NEW ADDR
&A       SETA  &A+1                UPDATE ROW VALUE
         AGO   .L                  CHECK FOR OUT OF LOOP
.OUT     ANOP                      &STRING IS NOW COMPLETE
&N       DC    X'&STRING'
         MEND
./ ADD NAME=BLSRSBA
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSRSBA) COMP(SC132) PROD(JIP1329): 3270 SET-BUFFER-ADDRESS
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         MACRO
&N       BLSRSBA &ROW,&COL                 3270 SET-BUFFER-ADDRESS @D1C
         GBLC  &B1,&B2
         BLSRCVTA &ROW,&COL
&N       DC    AL1(ORDERSBA),XL2'&B1&B2'   SBA, BUFFER ADDRESS
         SPACE 2
         MEND
./ ADD NAME=BLSRSF
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSRSF) COMP(SC132) PROD(JIP1329): 3270 START-FIELD
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         MACRO
&LABEL   BLSRSF &LIST                     3270 START-FIELD         @D1C
         GBLA  &POSIT,&VALID
         GBLC  &TR3270
         LCLC  &BYTE
&POSIT   SETA  0
         AIF   (N'&LIST EQ 0).OK
&VALID   SETA  0
         BLSRCKLT &LIST,P=PROT,V=32
         BLSRCKLT &LIST,P=NUM,V=16
         BLSRCKLT &LIST,P=NONDISP,V=12
         BLSRCKLT &LIST,P=INTENDET,V=8
         BLSRCKLT &LIST,P=DET,V=4
         BLSRCKLT &LIST,P=MDT,V=1
         AIF   (&VALID EQ N'&LIST).OK
         MNOTE 8,'UNKNOWN OPERAND IN LIST'
.OK      ANOP
&BYTE    SETC  '&TR3270'(2*&POSIT+1,2)
&LABEL   DC    AL1(ORDERSF),XL1'&BYTE'    START FIELD ORD, ATTRIB BYTE
         SPACE 2
         MEND
./ ADD NAME=BLSRSSTE
*** START OF SPECIFICATIONS*******************************************
*
* $MAC(BLSRSSTE) COMP(SC132) PROD(JIP1329): END SPECIAL SYMBOL TABLE
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
* FUNCTION= TERMINATE A SPECIAL SYMBOL TABLE DEFINITION
*
*   CHANGE ACTIVITY:
* $L0= SYMALIAS,HIP2102,80269,DSDPRW: RECOGNIZES SYMBOLIC ALIASES
* $L1= ASMBLRXF,HIP2102,81293,DSDPRW: ACCEPT ASSEMBLER XF LIMITATIONS
*
***** END OF SPECIFICATIONS*******************************************
         MACRO
         BLSRSSTE
         GBLA  &GA
         GBLC  &GN(50),&GP                                         @L1C
         LCLA  &A1                     SPECIAL PREFIX SUBSCRIPT    @L1A
         LCLC  &C1                     SPECIAL PREFIX TEXT         @L1A
&GP.CNT  EQU   &GA                     NUMBER OF SPECIAL SYMBOLS
*------- END OF SPECIAL SYMBOL TABLE ------------------------- #MD81293
         SPACE 1                                                   @L1A
*------- BEGIN SPECIAL PREFIX TEXT --------------------------- #MD81293
&A1      SETA  1                       SPECIAL PREFIX SUBSCRIPT    @L1A
.L1      ANOP  ,                       PROCESS ONE SPECIAL SYMBOL  @L1C
&C1      SETC  '&GN(&A1)'              SPECIAL PREFIX TEXT         @L1A
&C1      DC    C'&C1'                  SPECIAL PREFIX TEXT         @L1A
&A1      SETA  &A1+1                   SPECIAL PREFIX SUBSCRIPT    @L1A
         AIF   (&A1 LE &GA).L1         PROCESS ONE SPECIAL SYMBOL  @L1A
*------- END SPECIAL PREFIX TEXT ----------------------------- #MD81293
         MEND  ,                                                   @L1A
./ ADD NAME=BLSRSST
*/* START OF SPECIFICATIONS ******************************************/
*/*                                                                  */
*/* $MAC(BLSRSST) COMP(SC132) PROD(JIP1329): Special Symbol Table    */
*/*                                                                  */
*/* COPYRIGHT= 5740-XYN, 5740-XYS Copyright IBM Corporation 1982.    */
*/*            Licenced material-Program property of IBM,            */
*/*            Refer to copyright instructions form number G120-2083 */
*/*                                                                  */
*/* FUNCTION= Describe the special symbol table.                     */
*/*                                                                  */
*/*   CHANGE ACTIVITY=                                               */
*/* $L0=SYMALIAS,HIP2102,80269,DSDPRW: Recognize symbolic aliases    */
*/* $L1=PEAKARCH,HIP2102,81020,DSDPRW: Extended system storage       */
*/* $P1=PUU0527,HIP2102,81080,DSDPRW: Correct micro-fiche flags      */
*/*                                                                  */
*/* END OF SPECIFICATIONS ********************************************/
*   %GO TO SSTPLS;                  /* By-pass assembler code
         MACRO  ,                                                  @P1C
&NAME    BLSRSST
SST      DSECT ,                       IPCS SPECIAL SYMBOL TABLE
&NAME    DS    0D                      ALIGNED ON DOUBLEWORD
SSTID    DC    CL3'SST'                TABLE IDENTIFIER
SSTVER   DC    AL1(SSTVERSN)           VERSION OF FORMAT
SSTVERSN EQU   1                       ORIGINAL FORMAT OF TABLE
SSTCS    DC    CL8'SSTCSECT'           CSECT IDENTIFIER
SSTLVL   DC    CL8'&SYSPARM '          LEVEL IDENTIFIER
SSTDIM   DC    F'1'                    DIMENSION OF TABLE
         DS    0F                      ALIGNED ON FULLWORD
SSTS     DS    0XL4                    SYMBOL DEFINITION ARRAY
SSTST    DC    FL1'0'                  TYPE OF SUFFIX
SSTST01  EQU   1                       ASID
SSTST02  EQU   2                       ASID AND COUNT
SSTST03  EQU   3                       CPU ADDRESS
SSTST04  EQU   4                       UNIT ADDRESS
SSTST05  EQU   5                       ASN-SECOND-TABLE INDEX      @L1A
SSTSLEN  DC    FL1'0'                  LENGTH OF PREFIX
SSTSOFF  DC    Y(0)                    OFFSET OF PREFIX
         MEND  ,                       End PLS remark                */
*   %SSTPLS:                        /* By-pass assembler code        */
*       IF SSTSTORAGE=''            /* No scope/storage class        */
*       %THEN                       /* Default scope/storage         */
*     %SSTSTORAGE='BASED(DUTSSTP)'; /* ->SPECIAL SYMBOL TABLE    @P1C*/
*%INCLUDE SYSLIB(BLSRDUT);          /* DUMP PROCESSING TABLE         */
*   DECLARE                         /* SPECIAL SYMBOL TABLE          */
*     SSTIDENT CHARACTER(3) CONSTANT('SST'),/* IDENTIFIER            */
*     1 SST SSTSTORAGE BOUNDARY(DWORD),/* SPECIAL SYMBOL TABLE       */
*      2 SSTID CHARACTER(3),        /* TABLE IDENTIFIER              */
*      2 SSTVER UNSIGNED BINARY(8), /* VERSION OF TABLE              */
*      2 SSTCSECT CHARACTER(8),     /* CSECT IDENTIFIER              */
*      2 SSTLEVEL CHARACTER(8),     /* LEVEL IDENTIFIER              */
*      2 SSTDIM UNSIGNED BINARY(32),/* NUMBER OF SYMBOLS DEFINED     */
*/*------------------------------------------------------------------*/
*/*    Special symbol definition array - Sorted by prefix            */
*/*------------------------------------------------------------------*/
*
*      2 SSTS(1) BOUNDARY(WORD),    /* SYMBOL DEFINITION ARRAY       */
*       3 SSTST UNSIGNED BINARY(8), /* TYPE OF SUFFIX                */
*       3 SSTSLEN UNSIGNED BINARY(8),/* LENGTH OF PREFIX             */
*       3 SSTSOFF POINTER(15),      /* OFFSET OF PREFIX              */
*     SSTPREF BASED CHARACTER(*),   /* PREFIX CHARACTERS             */
*     SSTVERSN UNSIGNED BINARY(8) CONSTANT(1),/* ORIGINAL FORMAT OF
                                       TABLE (FIELD SSTVER)          */
*/* Codes placed in field SSTST describe the suffix                  */
*
*     SSTST01 UNSIGNED BINARY(8) CONSTANT(1),/* ASID                 */
*     SSTST02 UNSIGNED BINARY(8) CONSTANT(2),/* ASID AND COUNT       */
*     SSTST03 UNSIGNED BINARY(8) CONSTANT(3),/* CPU ADDRESS          */
*     SSTST04 UNSIGNED BINARY(8) CONSTANT(4),/* UNIT ADDRESS     @L1C*/
*     SSTST05 UNSIGNED BINARY(8) CONSTANT(5);/* AST INDEX        @L1A*/
./ ADD NAME=BLSRSSTN
*** START OF SPECIFICATIONS*******************************************
*
* $MAC(BLSRSSTN) COMP(SC132) PROD(JIP1329): SPECIAL SYMBOL ENTRY
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
* FUNCTION= DEFINE ONE SPECIAL SYMBOL TABLE ENTRY
*
*   CHANGE ACTIVITY:
* $L0= SYMALIAS,HIP2102,81265,DSDPRW: RECOGNIZE SYMBOLIC ALIASES
* $L1= ASMBLRXF,HIP2102,81293,DSDPRW: ACCEPT ASSEMBLER XF LIMITATIONS
*
***** END OF SPECIFICATIONS*******************************************
         MACRO
         BLSRSSTN &SYMPFX,&CLASS
         GBLA  &GA
         GBLC  &GN(50),&GP,&GS                                     @L1C
         LCLA  &A1
         LCLC  &C1                                                 @L1A
&C1      SETC  '&SYMPFX'               LENGTH OF PREFIX TEXT
         AIF   (K'&C1 EQ K'&GS).L02    EQUAL PREFIX LENGTHS
         AIF   (K'&C1 GT K'&GS).L01    OLD PREFIX SHORT
.*       NEW PREFIX SHORTER THAN OLD
&A1      SETA  K'&C1                   LENGTH OF PREFIX
&GS      SETC  '&GS'(1,&A1)            TRUNCATE OLD PREFIX
.L02     AIF   ('&C1' GE '&GS').L04    PREFIX NAMES ALPHABETIZED
         AGO   .L03                    VERIFY COLLATING SEQUENCE
.*       OLD PREFIX SHORTER THAN NEW
.L01     ANOP  ,                       OLD PREFIX SHORT
&A1      SETA  K'&GS                   LENGTH OF PREFIX
&C1      SETC  '&C1'(1,&A1)            TRUNCATE NEW PREFIX
         AIF   ('&C1' GE '&GS').L04    PREFIX NAMES ALPHABETIZED
.L03     MNOTE 8,'PREFIX NAMES ARE NOT ALPHABETIZED'
         MEXIT
.L04     ANOP
&GA      SETA  &GA+1                   DIMENSION OF ARRAY
&GS      SETC  '&SYMPFX'               CURRENT PREFIX NAME
         SPACE 1
&GP.&GA  DS    0F                      SPECIAL SYMBOL ENTRY
         DC    AL1(&CLASS)             TYPE OF SYMBOLIC SUFFIX
&A1      SETA  K'&SYMPFX               LENGTH OF PREFIX TEXT
         DC    FL1'&A1'                LENGTH OF PREFIX TEXT
         DC    AL2(&SYMPFX-&SYSECT)    OFFSET OF PREFIX TEXT
&GN(&GA) SETC  '&SYMPFX'               PREFIX TEXT                 @L1A
         MEND
./ ADD NAME=BLSRSSTO
*** START OF SPECIFICATIONS*******************************************
*
* $MAC(BLSRSSTO) COMP(SC132) PROD(JIP1329): SPECIAL SYMBOL HEADER
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
* FUNCTION= DEFINE THE HEADER FIELD FOR A SPECIAL SYMBOL TABLE
*
*     CHANGE ACTIVITY:
* $L0= SYMALIAS,HIP2102,81293,DSDPRW: RECOGNIZE SYMBOLIC ALIASES
*
***** END OF SPECIFICATIONS*******************************************
         MACRO
&LABEL   BLSRSSTO &PFX
         GBLA  &GA
         GBLC  &GP,&GS
&GA      SETA  0                       DIMENSION OF TABLE
&GP      SETC  '&PFX'                  FIELD NAME PREFIX
&GS      SETC  ' '                     NO CURRENT SYMBOL NAME
&LABEL   CSECT ,                       SPECIAL SYMBOL TABLE
&GP.ID   DC    CL3'SST'                TABLE IDENTIFIER
&GP.VER  DC    FL1'1'                  FORMAT VERSION
&GP.CS   DC    CL8'&LABEL'             CSECT IDENTIFIER
&GP.LVL  DC    CL8'&SYSPARM '          LEVEL IDENTIFIER
&GP.DIM  DC    A(&GP.CNT)              DIMENSION OF TABLE
         MEND
./ ADD NAME=BLSRWCC
*** START OF SPECIFICATIONS******************************************
*
* $MAC(BLSRWCC) COMP(SC132) PROD(JIP1329): 3270 WRITE-CONTROL-CHAR
*
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*   CHANGE ACTIVITY:
* $L0= MVSIPCS,EIP1102,78001,DMGPKB: MVS IPCS INITIAL RELEASE CODE
* $D1= QUALITY,HIP2102,81266,DSDPRW: IMPROVE COMMENTS, REMARKS
*
***** END OF SPECIFICATIONS******************************************
         MACRO
&LABEL   BLSRWCC &LIST,&OP=DC      3270 WRITE-CONTROL-CHARACTER    @D1C
         GBLA  &POSIT,&VALID       FOR COMMUNICATION WITH BLSRCKLTMACRO
         GBLC  &TR3270             TO PICK UP EBCDIC REP. OF 3270 CODE
         LCLC  &BYTE               HOLDS OUTPUT VALUE
&VALID   SETA  0                   SINCE IT'S GLOBAL
         BLSRCKLT &LIST,P=ALARM,V=4 SHOULD ALARM BE SOUNDED?
         BLSRCKLT &LIST,P=RESTORE,V=2 SHOULD KEYBOARD BE UNLOCKED?
         BLSRCKLT &LIST,P=RESETMDT,V=1 SHOULD MODIFIED-TAGS BE RESET?
         AIF   (&VALID EQ N'&LIST).OK  WERE ALL VALUES IN LIST OK?
         MNOTE 8,'UNKNOWN OPERAND(S) IN LIST'
.OK      ANOP
&BYTE    SETC  '&TR3270'(2*&POSIT+1,2)  TRANSLATE THE VALUES SUM
&LABEL   &OP   X'&BYTE'            WRITE CONTROL CHARACTER
         SPACE 2
         MEND
./ ADD NAME=BLSUALL2
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUALL2) COMP(SC132) PROD(JIP1329): GET STORAGE FROM POOL     *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= IPCS MACRO TO SUBSTITUTE FOR GETMAIN IN THOSE IPCS MODULES*
* WHICH ARE PASSED AN IPCS TASK VARIABLE AS THE 2ND PARAMETER.  THIS  *
* MACRO GENERATES A CALL TO BLSUALLO WHICH WILL OBTAIN THE REQUIRED   *
* STORAGE FROM A POOL MAINTAINED IN SUBPOOL 1.                        *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= HBB2102,HIP2102,80302,DSDPRW: TOLERATE/IGNORE SP OPTION        *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUALL2 &OPTION,&LV=,&SP=    MODEL STATEMENT             @L1C
         SPACE 2
***********************************************************************
* BLSUALL2--ALLOCATE AUTOMATIC STORAGE                         #MD80302
***********************************************************************
         SPACE
&LABEL   L     R9,4(0,R1)              ->ZZ2
         L     RF,ZZ2ALLOP(0,R9)       ->BLSUALLO
         BALR  RE,RF                   CALL BLSUALLO
         MEND  ,                                                   @D1C
./ ADD NAME=BLSUALLR
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUALLR) COMP(SC132) PROD(JIP1329): GET STORAGE FROM POOL     *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= IPCS MACRO TO SUBSTITUTE FOR GETMAIN IN THOSE IPCS MODULES*
* WHICH ARE PASSED AN IPCS TASK VARIABLE ADDRESS IN REGISTER 1.  THIS *
* MACRO GENERATES A CALL TO BLSUALLO WHICH WILL OBTAIN THE REQUIRED   *
* STORAGE FROM A POOL MAINTAINED IN SUBPOOL 1.                        *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= HBB2102,HIP2102,80302,DSDPRW: TOLERATE/IGNORE SP OPTION        *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUALLR &OPTION,&LV=,&SP=    MODEL STATEMENT             @L1C
         SPACE 2
***********************************************************************
* BLSUALLR--ALLOCATE AUTOMATIC STORAGE                         #MD80302
***********************************************************************
         SPACE
&LABEL   LR    R9,R1                   ->ZZ2
         L     RF,ZZ2ALLOP(0,R9)       ->BLSUALLO
         BALR  RE,RF                   CALL BLSUALLO
         MEND  ,                                                   @D1C
./ ADD NAME=BLSUALLS
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUALLS) COMP(SC132) PROD(JIP1329): GET STORAGE FROM POOL     *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= IPCS MACRO TO SUBSTITUTE FOR GETMAIN IN THOSE IPCS MODULES*
* WHICH ARE PASSED AN IPCS TASK VARIABLE AS THE 1ST PARAMETER.  THIS  *
* MACRO GENERATES A CALL TO BLSUALLO WHICH WILL OBTAIN THE REQUIRED   *
* STORAGE FROM A POOL MAINTAINED IN SUBPOOL 1.                        *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= HBB2102,HIP2102,80302,DSDPRW: TOLERATE/IGNORE SP OPTION        *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUALLS &OPTION,&LV=,&SP=    MODEL STATEMENT             @L1C
         SPACE 2
***********************************************************************
* BLSUALLS--ALLOCATE AUTOMATIC STORAGE                         #MD80302
***********************************************************************
         SPACE
&LABEL   L     R9,0(0,R1)              ->ZZ2
         L     RF,ZZ2ALLOP(0,R9)       ->BLSUALLO
         BALR  RE,RF                   CALL BLSUALLO
         MEND  ,                                                   @D1C
./ ADD NAME=BLSUFRE2
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUFRE2) COMP(SC132) PROD(JIP1329): RETURN STORAGE TO POOL    *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= MACRO TO SUBSTITUTE FOR FREEMAIN IN THOSE IPCS MODULES    *
* WHICH ARE PASSED AN IPCS TASK VARIABLE AS THE 2ND PARAMETER.  THIS  *
* MACRO GENERATES A CALL TO BLSUFRE1 WHICH WILL RETURN THE STORAGE TO *
* A POOL MAINTAINED IN SUBPOOL 1.                                     *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= HBB2102,HIP2102,80302,DSDPRW: TOLERATE/IGNORE SP OPTION        *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUFRE2 &OPTION,&LV=,&A=,&SP= MODEL STATEMENT            @L1A
         SPACE 2
***********************************************************************
* BLSUFRE2--FREE AUTOMATIC STORAGE                             #MD80302
***********************************************************************
         SPACE
&LABEL   L     RF,SAR1(0,RD)           ->PARAMETER LIST
         L     R1,4(0,RF)              ->ZZ2
         L     RF,ZZ2FRE1P(0,R1)       ->BLSUFRE1
         BALR  RE,RF                   CALL BLSUFRE1
         MEND  ,                                                   @D1C
./ ADD NAME=BLSUFRER
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUFRER) COMP(SC132) PROD(JIP1329): RETURN STORAGE TO POOL    *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= MACRO TO SUBSTITUTE FOR FREEMAIN IN THOSE IPCS MODULES    *
* WHICH ARE PASSED AN IPCS TASK VARIABLE ADDRESS IN REGISTER 1.  THIS *
* MACRO GENERATES A CALL TO BLSUFRE1 WHICH WILL RETURN THE STORAGE TO *
* TO A POOL MAINTAINED IN SUBPOOL 1.                                  *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= HBB2102,HIP2102,80302,DSDPRW: TOLERATE/IGNORE SP OPTION        *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUFRER &OPTION,&LV=,&A=,&SP= MODEL STATEMENT            @L1C
         SPACE 2
***********************************************************************
* BLSUFRER--FREE AUTOMATIC STORAGE                             #MD80302
***********************************************************************
         SPACE
&LABEL   L     R1,SAR1(0,RD)           ->ZZ2
         L     RF,ZZ2FRE1P(0,R1)       ->BLSUFRE1
         BALR  RE,RF                   CALL BLSUFRE1
         MEND  ,                                                   @D1C
./ ADD NAME=BLSUFRES
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUFRES) COMP(SC132) PROD(JIP1329): RETURN STORAGE TO POOL    *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= MACRO TO SUBSTITUTE FOR FREEMAIN IN THOSE IPCS MODULES    *
* WHICH ARE PASSED AN IPCS TASK VARIABLE AS THE 1ST PARAMETER.  THIS  *
* MACRO GENERATES A CALL TO BLSUFRE1 WHICH WILL RETURN THE STORAGE TO *
* A POOL MAINTAINED IN SUBPOOL 1.                                     *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $L1= HBB2102,HIP2102,80302,DSDPRW: TOLERATE/IGNORE SP OPTION        *
* $D1= QUALITY,HIP2102,81225,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUFRES &OPTION,&LV=,&A=,&SP= MODEL STATEMENT            @L1A
         SPACE 2
***********************************************************************
* BLSUFRES--FREE AUTOMATIC STORAGE                             #MD80302
***********************************************************************
         SPACE
&LABEL   L     RF,SAR1(0,RD)           ->PARAMETER LIST
         L     R1,0(0,RF)              ->ZZ2
         L     RF,ZZ2FRE1P(0,R1)       ->BLSUFRE1
         BALR  RE,RF                   CALL BLSUFRE1
         MEND  ,                                                   @D1C
./ ADD NAME=BLSUSTBE
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUSTBE) COMP(SC132) PROD(JIP1329): END SUBCOMMAND TABLE      *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= TERMINATE A SUBCOMMAND TABLE DEFINITION                   *
*                                                                     *
*   CHANGE ACTIVITY:                                                  *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,81029,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
         BLSUSTBE
         GBLA  &GA
         GBLC  &GP
&GP.CNT  EQU   &GA                     NUMBER OF SUBCOMMANDS
*------- END OF SUBCOMMAND TABLE ----------------------------- #MD81029
         DC    CL8'ZAPAREA'            EYE-CATCHER IN DUMP TEXT    @D1A
         DC    CL8'&SYSECT'            CSECT NAME                  @D1A
         DC    CL8'&SYSDATE'           DATE OF COMPILATION         @D1A
         DC    CL8'&SYSPARM'           REASON FOR COMPILATION      @D1A
         MEND
./ ADD NAME=BLSUSTBN
         MACRO
         BLSUSTBN &SCMD,&EP=
.*--------------------------------------------------------------------*
.* BLSUSTBN--DEFINE PROCESSING FOR ONE SUBCOMMAND                     *
.*--------------------------------------------------------------------*
         GBLA  &GA
         GBLC  &GP,&GS
         LCLA  &A1
         LCLB  &BDSD,&BDU,&BINV,&BPDR
         LCLC  &CE,&CT
         AIF   (K'&SCMD GE K'&GS).L01  PRIMARY SORT KEY
         MNOTE 8,'SUBCOMMAND NAMES NOT ORDERED BY LENGTH'
         MEXIT
.L01     AIF   (K'&SCMD EQ K'&GS).L02  NEW PRIMARY SORT KEY
&GS      SETC  ' '                     NO CURRENT SUBCOMMAND NAME
.L02     AIF   ('&SCMD' GE '&GS').L03  SUBCOMMAND NAMES ALPHABETIZED
         MNOTE 8,'SUBCOMMAND NAMES OF SAME LENGTH ARE NOT ALPABETIZED'
         MEXIT
.*------------ PROCESS POSITIONAL KEYWORDS --------------------------*.
.L03     ANOP
&GA      SETA  &GA+1                   DIMENSION OF SUBCOMMAND ARRAY
&GS      SETC  '&SCMD'                 CURRENT SUBCOMMAND NAME
&A1      SETA  2                       SUBSCRIPT FOR SEARCH
&CT      SETC  'L'                     IPCS SUBCOMMAND
.L04     AIF   (&A1 GT N'&SYSLIST).L13 POSITION OPERANDS SCANNED
         AIF   ('&SYSLIST(&A1)' NE 'DSD').L05
&BDSD    SETB  1                       REQUIRES DATA SET DIRECTORY
         AGO   .L12
.L05     AIF   ('&SYSLIST(&A1)' NE 'DUMP').L06
&BDU     SETB  1                       REQUIRES A DUMP DATA SET
         AGO   .L12
.L06     AIF   ('&SYSLIST(&A1)' NE 'INVALID').L07
&BINV    SETB  1                       INVALID IN IPCS
         AGO   .L12
.L07     AIF   ('&SYSLIST(&A1)' NE 'IPCS').L08
&CT      SETC  'L'                     IPCS SUBCOMMAND
         AGO   .L12
.L08     AIF   ('&SYSLIST(&A1)' NE 'PDR').L09
&BPDR    SETB  1                       REQUIRES PROBLEM DIRECTORY
         AGO   .L12
.L09     AIF   ('&SYSLIST(&A1)' NE 'SPECIAL').L10
&CT      SETC  'S'                     SPECIAL COMMAND
         AGO   .L12
.L10     AIF   ('&SYSLIST(&A1)' NE 'TSO').L11
&CT      SETC  'T'                     TSO COMMAND
         AGO   .L12
.L11     MNOTE 8,'''&SYSLIST(&A1)'' KEYWORD NOT SUPPORTED'
.L12     ANOP
&A1      SETA  &A1+1                   SUBSCRIPT FOR SEARCH
         AGO   .L04
.*------------ PROCESS SUBCOMMAND ENTRY POINT NAME ------------------*.
.L13     AIF   (T'&EP EQ 'O').L14      IMPLICIT ENTRY POINT NAME
&CE      SETC  '&EP'                   SUBCOMMAND ENTRY POINT NAME
         AGO   .L15
.L14     ANOP
&CE      SETC  '&SCMD'                 SUBCOMMAND ENTRY POINT NAME
.*------------ GENERATE SUBCOMMAND TABLE ENTRY ----------------------*.
.L15     SPACE
&GP.&GA  DS    0F                      SUBCOMMAND TABLE ENTRY
         DC    CL1'&CT'                TYPE OF SUBCOMMAND
         DC    BL2'&BINV&BPDR&BDSD&BDU.000000000000' ATTRIBUTES
&A1      SETA  K'&SCMD                 LENGTH OF SUBCOMMAND NAME
         DC    FL1'&A1'                LENGTH OF SUBCOMMAND NAME
         DC    CL8'&SCMD'              SUBCOMMAND NAME
         DC    CL8'&CE'                SUBCOMMAND ENTRY POINT NAME
         MEND
./ ADD NAME=BLSUSTBO
*** START OF SPECIFICATIONS********************************************
*                                                                     *
* $MAC(BLSUSTBO) COMP(SC132) PROD(HIP2329): SUBCOMMAND TABLE HEADER   *
*                                                                     *
* COPYRIGHT= 5740-XYN, 5740-XYS COPYRIGHT IBM CORPORATION 1982.       *
*            LICENCED MATERIAL-PROGRAM PROPERTY OF IBM,               *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
* FUNCTION= DEFINE THE HEADER FIELD FOR THE IPCS SUBCOMMAND TABLE     *
*                                                                     *
*     CHANGE ACTIVITY:                                                *
* $L0= MVSIPCS,EIP1102,78001,DMGPRW: MVS IPCS INITIAL RELEASE CODE    *
* $D1= QUALITY,HIP2102,81226,DSDPRW: IMPROVE COMMENTS, REMARKS        *
*                                                                     *
***** END OF SPECIFICATIONS********************************************
         MACRO
&LABEL   BLSUSTBO &PFX
         GBLA  &GA
         GBLC  &GP,&GS
&GA      SETA  0                       DIMENSION OF SUBCOMMAND TABLE
&GP      SETC  '&PFX'                  FIELD NAME PREFIX
&GS      SETC  ' '                     NO CURRENT SUBCOMMAND NAME
&LABEL   CSECT ,                       IPCS SUBCOMMAND TABLE       @D1C
&GP.ID   DC    CL8'&LABEL'             IDENTIFIER
&GP.DIM  DC    A(&GP.CNT)              DIMENSION OF SUBCOMMAND TABLE
         MEND
./ ADD NAME=BMDSECTS
RLDIN    DSECT                          RLD INPUT RECORD FORMAT
RLDLEN   DS    CL2                      RLD RECORD LENGTH
RFLAG    DS    CL2                      FLAG
ROPCDE   DS    CL2                      OPCODE BYTES
POSID    DS    CL2                      POSITION ESD/ID
RELID    DS    CL2                      RELOCATION ESD/ID
RLDVAL   DS    CL3                      RLD SYMBOL ADDRESS
RLDFLG   DS    C                        RLD FLAG
RLDND    EQU   *-RLDIN                  LENGTH OF RECORD
RLDTYPE  EQU   JR                       RLD RECORD I.D.
         SPACE
XRFIN    DSECT                          XREF INPUT RECORD FORMAT
XRECLN   DS    CL2                      XREF RECORD LENGTH
XFLAG    DS    CL2                      FLAG
XOPCDE   DS    CL2                      OP CODE
XRFSYM   DS    CL8                      XREF SYMBOL
XRFFLG   DS    C                        XREF FLAG, BASE, DEF, DUP,UNDEF
XRFSTM   DS    CL2                      XREF STATEMENT NUMBER
XRFLEN   DS    CL2                      XREF LENGTH
XRFVAL   DS    CL4                      XREF VALUE
XRFND    EQU   *-XRFIN                  LENGTH OF XREF RECORD
XRFTYPE  EQU   JX                       XREF RECORD I.D.
BASE     EQU   X'01'                    BASE MASK
REF      EQU   X'02'                    REFERENCE MASK
DUPL     EQU   X'03'                    DUPLICATE MASK
         SPACE
ERRIN    DSECT                          ERROR INPUT RECORD FORMAT
ERRLEN   DS    CL2                      ERROR RECORD LENGTH
ERRID    DS    C                        ERROR IDENTIFIER
NUMERR   DS    C                        NUMBER OF ERRORS
ERRSTMT  DS    CL2                      ERROR STATMENT NUMBER
ERRNUM   DS    C                        ERROR NUMBER
ERRFLD   DS    CL15                     REST OF ERRORS
ERRND    EQU   *-ERRIN                  LENGTH OF RECORD
ERRTYPE  EQU   JE                       ERROR RECORD I.D.
./ ADD NAME=BRING
         MACRO
&NAME    BRING &LOAD=,&CALL=,&DELETE=,&LIST=,&C=
         LCLA  &A,&B,&K,&L
         LCLC  &MOD,&MOD1
&B       SETA  &C+1
&L       SETA  0
&A       SETA  &C/8*128
*/*           TO LOAD, LOAD & CALL, OR DELETE A MODULE       @ZM00952*/
*/*PARAMETERS-                                               @ZM00952*/
*/*      LOAD=(MODNAME)                                      @ZM00952*/
*/*      CALL=(MODNAME)                                      @ZM00952*/
*/*      DELETE=(MODNAME)                                    @ZM00952*/
*/*      LIST=(PARAMETER LIST)                               @ZM00952*/
*/*      C=(N)                                               @ZM00952*/
*/*           (MODNAME) IS THE EIGHT CHARACTER MODULE NAME   @ZM00952*/
*/*                     FROM ANYMOD MACRO OR TWO CHAR SUFFIX @ZM00952*/
*/*                     FROM IFDMOD MACRO. IT CAN BE A SYMBOL@ZM00952*/
*/*                     THAT IS THE ADDR OF THE ITEM, THE    @ZM00952*/
*/*                     ACTUAL NAME IN QUOTES, OR A REGISTER @ZM00952*/
*/*                     IN PARENTHESIS CONTAINING THE ADDR.  @ZM00952*/
*/*           (PARAMETER LIST) IS A PARAMETER LIST TO BE     @ZM00952*/
*/*                     PASSED TO THE CALLED PROGRAM. IT CAN @ZM00952*/
*/*                     BE A SYMBOL OR A REGISTER (IN        @ZM00952*/
*/*                     PARENTHESIS) CONTAINING THE ADDR.    @ZM00952*/
*/*           (N)       IS THE NUMBER OF CHARACTERS SENT     @ZM00952*/
*/*                     BY THE IFDMOD AND ANYMOD MACROS.     @ZM00952*/
*/*                     IT IS TWO FOR IFDMOD AND EIGHT       @ZM00952*/
*/*                     FOR ANYMOD.                          @ZM00952*/
*/***********************************************************@ZM00952*/
         AIF   (T'&LOAD NE 'O').LD1
         AIF   (T'&CALL NE 'O').CL1
         AIF   (T'&DELETE NE 'O').DE1
         MNOTE 8,'KEYWORD LOAD, CALL, OR DELETE MISSING'
         MEXIT
.LD1     ANOP
&A       SETA  &A+32
&MOD     SETC  '&LOAD'
&K       SETA  K'&LOAD
         AIF   (&K LT &B).OK
&L       SETA  &K-&C
&MOD1    SETC  '&LOAD'(&B,&L)
         AGO   .OK
.CL1     ANOP
&MOD     SETC  '&CALL'
&K       SETA  K'&CALL
         AIF   (&K LT &B).OK
&L       SETA  &K-&C
&MOD1    SETC  '&CALL'(&B,&L)
         AGO   .OK
.DE1     ANOP
&A       SETA  &A+16
&MOD     SETC  '&DELETE'
&K       SETA  K'&DELETE
         AIF   (&K LT &B).OK
&L       SETA  &K-&C
&MOD1    SETC  '&DELETE'(&B,&L)
.OK      AIF   (&L EQ 0).OKA
         AIF   ('&MOD'(1,1) EQ '(' OR '&MOD'(1,1) EQ '''').OKA1
         AIF   (&K LT 9).OKA
.ER1A    ANOP
&MOD     SETC  '&MOD'(1,&C)
.ER1B    MNOTE 8,'TOO MANY CHARACTERS IN &MOD&MOD1'
         MEXIT
.OKA1    AIF   (&L LT 3).OKA
&MOD     SETC  '&MOD'(2,&C-1)
&MOD1    SETC  '&MOD1'(1,&L-1)
         AGO   .ER1B
.OKA     ANOP
&NAME    DS    0H
         AIF   (T'&LIST EQ 'O').SKP1
         AIF   ('&LIST'(1,1) NE '(').SKP1
         ST    &LIST.,L&SYSNDX .        STORE LIST ADDRESS
.SKP1    AIF   ('&MOD'(1,1) NE '(').SKP2
         MVC   P&SYSNDX.+2(&C),0&MOD .   NAME INTO PARAMETER LIST
         AGO   .SKP3
.SKP2    AIF   ('&MOD'(1,1) EQ '''').SKP3
         MVC   P&SYSNDX.+2(&C),&MOD .    NAME INTO PARAMETER LIST
.SKP3    ANOP
         LA    R14,R&SYSNDX .
         L     R15,TAB28 .              TRANSIENT MANAGER ENTRY POINT
         CNOP  2,4 .
         BALR  R1,R15 .
P&SYSNDX DC    AL1(&A) .         INDICATORS FOR TRANSIENT MANAGER
         DC    AL1(2) .                 MACRO LEVEL
         AIF   ('&MOD'(1,1) EQ '''').SKP4
         DC    CL&C.' ' .           MODULE
         AGO   .SKP5
.SKP4    AIF   (&L EQ 0).SKP4A
&MOD     SETC  '&MOD'(1,&C)
         DC    CL&C&MOD&MOD1 .             MODULE NAME
         AGO   .SKP5
.SKP4A   ANOP
         DC    CL&C&MOD .    MODULE NAME
.SKP5    ANOP
         AIF   (T'&LIST EQ 'O').SKP3A
L&SYSNDX DC    A(&LIST) .
.SKP3A   ANOP
R&SYSNDX DS    0H .               RETURN ADDRESS
         MEND
./ ADD NAME=BRKELEM
         MACRO
         BRKELEM
***********************************************************************
*                                                                     *
*        MAPPING DSECT FOR BREAK ELEMENTS AND ASSOCIATED FLAGS.       *
*                                                                     *
*        STATUS -- VERSION NO. 01 -  RELEASE NO. 01 - OS/VS2          *
*                                                                     *
*        CHANGE LEVEL -- 00 - DATE 03/09/72                           *
*                                                                     *
***********************************************************************
BRKELEM  DSECT
BRKLINK  DS    F -                POINTER TO NEXT BREAK ELEMENT.
BRKADDR  DS    F -                PROBLEM PROGRAM INSTRUCTION ADDRESS.
BRKINST  DS    2F -               ORIGINAL INSTRUCTION AND 2 BYTE SVC.
BRKFLGS  DS    1X -               ONE BYTE FOR FLAGS.
BALSW    EQU   B'10000000' -      BAL OR BALR IN ORIGINAL INSTRUCTION.
BRKRANGE EQU   B'01000000' -      THIS BREAK ELEMENT IS ONE OF A RANGE.
BRKLIST  EQU   B'00100000' -      THIS BREAK ELEMENT IS ONE OF A LIST.
BRKNONOT EQU   B'00010000' -      USER IS NOT TO BE NOTIFIED IF THIS
*                                 BREAKPOINT IS ENCOUNTERED.
         DS    X -                RESERVED.
BRKDISP  DS    H -                DISPLACEMENT FROM FIRST ADDRESS OF
*                                 A RANGE.
BRKNAME  DS    F -                POINTER TO THE ADDRESS STRING.
BRKCHAIN DS    F -                POINTER TO THE SUB-COMMAND CHAIN.
BRKCOUNT DS    F -                COUNT INFORMATION.
BRKRB    DS    F -                POINTER TO PROBLEM PROGRAM RB.
         DS    0D -               FORCE LENGTH EQUATE TO DOUBLE WORD.
BRKLEN   EQU   *-BRKELEM -        BREAK ELEMENT LENGTH.
         MEND
./ ADD NAME=BRPRTMSG
         MACRO
&NAME    BRPRTMSG &ADDR,&LN
.*A001200,008600-008920,009100                                   Y02006
.*C009500                                                        Y02006
.***  GLOBAL VARIABLE &BALMOD INDICATES IF BAL MODULE OR PLS MODULE **
         GBLB  &BALMOD                                           Y02006
         AIF   ('&LN'(1,1) EQ '(').LN1
&NAME    LA    R2,&LN              LOAD LENGTH TO R2
         AGO   .LN2
.LN1     AIF   ('&LN'(2,2) EQ 'R2').LN3
&NAME    LR    R2,&LN              LOAD LENGTH TO R2
         AGO   .LN2
.LN3     ANOP
&NAME    DS    0H
.LN2     AIF   ('&ADDR' EQ '').LOAD
         AIF   ('&ADDR'(1,1) EQ '(').ADDR2
         LA    R1,&ADDR            LOAD ADDR TO R1
         AGO   .LOAD
.ADDR2   AIF   ('&ADDR'(2,2) EQ 'R1').LOAD
         LR    R1,&ADDR(1)         LOAD ADDR TO R1
.LOAD    ANOP
         AIF   (&BALMOD).BALMSG    BRANCH IF BAL MODULE          Y02006
         L     R15,APRTMSG(,COMBASE) LOAD ADDR OF PRTMSG         Y02006
         AGO   .CALMSG                                           Y02006
.BALMSG  ANOP                                                    Y02006
         L     R15,APRTMSG         LOAD ADDR OF PRTMSG
.CALMSG  ANOP                                                    Y02006
         BALR  R14,R15             LINK TO IT                    Y02006
         MEND
./ ADD NAME=BRREAD
         MACRO
&LABEL   BRREAD  &REG,&TYPE,&ASID=                               Y02006
.*D026500-035000                                                 Y02006
.*C001000,014500,015500,020000-022000,023500,024500,026000       Y02006
.*C036000                                                        Y02006
.*A002700,003100-003492,027100-028100,035200-035300              Y02006
.*A035600-035920,036600,038600-039330                            Y02006
.***  GLOBAL VARIABLE &PLIST CONTROL GENERATION OF PARMETER LIST  ***
         GBLB  &PARMLST
         GBLC  &PLIST
.***  GLOBAL VARIABLE &BALMOD INDICATES IF BAL MODULE OR PLS MODULE **
         GBLB  &BALMOD                                           Y02006
         LCLC  &TLAB
.***  TEST FOR INIT OR ADJUST FUNCTIONS  ***                     Y02006
         AIF    ('&SYSLIST(1)' EQ 'INIT').CALINIT                Y02006
         AIF    ('&SYSLIST(1)' EQ 'ADJUST').CALFREE              Y02006
.***  TEST IF DATA OR CPU CALL  ***                              Y02006
         AIF   ('&TYPE' EQ 'DATA' OR '&TYPE' EQ 'CPU').TESTNUM   Y02006
         AIF   ('&TYPE' EQ '').TESTNUM                           Y02006
         MNOTE 12,'INVALID READ FUNCTION'                        Y02006
         MEXIT                                                   Y02006
.***  TEST FOR TOO MANY PARAMETERS  ***                          Y02006
.TESTNUM AIF   (N'&SYSLIST GT 2).MANYMSG                         Y02006
.***  TEST FOR P-REG  ***
.TESTREG AIF   ('&REG' NE '').OK1
         MNOTE 12,'MISSING ADDR REG'
         MEXIT
.OK1     ANOP
.***  TEST FOR DEMAND P-LIST  ***
         AIF   (&PARMLST).EXTGEN
.***  TEST FOR FIRST CALL OF BRREAD IN THIS CSECT  ***
         AIF   ('&PLIST' EQ 'RDL'.'&SYSECT'(4,5)).NOLIST
.***  IF FIRST CALL GENERATE PARAMETER LIST  ***
&PLIST   SETC  'RDL'.'&SYSECT'(4,5)
         AGO   .NOEXTGN
.EXTGEN  ANOP
&PLIST   SETC  'TMP'.'&SYSNDX'
.NOEXTGN ANOP
         CNOP  0,4                 ALLIGN ON WORD BOUNDARY
&LABEL   ST    &REG(1),&PLIST      STORE ADDRESS OF STORAGE REQUIRED
.ST11    ANOP
.***  GENERATE STORE OF REQUESTED ADDRESS BEFORE POINT TO P-LIST  ***
&TLAB    SETC  'RDL'.'&SYSNDX'
         BAL   1,&TLAB             POINT TO PARAMETER LIST
&PLIST   DC    F'0'                ADDRESS OF STORAGE REQUIRED   Y01980
         DC    X'00'               DATA TYPE CODE FOR READ RTN   Y02006
         DC    X'00'               RESERVED                      Y01980
         DC    H'0'                ASID OF THIS STORAGE          Y02006
&TLAB    EQU   *
         AGO   .TESTID
.NOLIST  ANOP
&LABEL   ST    &REG(1),&PLIST      STORE ADDRESS OF STORAGE REQUIRED
.ST12    ANOP
         LA    1,&PLIST            POINT TO PARAMETER LIST
.TESTID  ANOP
.**** IF ASID IS NOT SPECIFIED, LEAVE PARAMETER AS IT IS         Y02006
         AIF   ('&ASID' EQ '').TSTTYPE                           Y02006
.**** DISTINGUISH BETWEEN ASID REG AND ASID ABSOLUTE NUMBER      Y02006
         AIF   ('&ASID'(1,1) EQ '(').REG                         Y02006
         AIF   ('&ASID' EQ '0').GENSR                            Y02006
         MVC   &PLIST+6(2),&ASID .GET VALUE OF ASID FROM STORAGE Y02006
         AGO   .TSTTYPE                                          Y01980
.GENSR   ANOP .                                                  Y01980
         SR    15,15 .   SET ASID VALUE EQUAL ZERO               Y02006
.STORID  ANOP .                                                  Y01980
         STH   15,&PLIST+6 .  STORE ASID IN PARAMETER LIST       Y02006
         AGO  .TSTTYPE  .                                        Y01980
.REG     ANOP .                                                  Y01980
         STH   &ASID(1),&PLIST+6 . STORE ASID IN PARAMETER LIST  Y02006
.TSTTYPE AIF   ('&TYPE' EQ 'CPU').SETCPU                         Y02006
         MVI   &PLIST+4,X'00'      ZERO DATA TYPE CODE FOR DATA
*                                  REQUEST                       Y02006
         AGO   .CALL
.SETCPU  ANOP
         MVI   &PLIST+4,X'80'      INDICATE CPU STATUS DATA REQUIRED
*                                                                Y02006
.CALL    ANOP
         AIF   (&BALMOD).BALDATA   CHECK IF BAL MODULE           Y02006
         L     R15,BRRDDATA(,COMBASE) FETCH READ ROUTINE ADDRESS FROM
*                                  COMMON CSECT                  Y02006
         AGO   .CALLD                                            Y02006
.BALDATA ANOP                                                    Y02006
         L     15,BRRDDATA         FETCH READ ROUTINE ADDRESS FROM
*                                  COMMON CSECT
.CALLD   ANOP                                                    Y02006
         BALR  14,15               LINK TO READ
         AIF   (NOT(&PARMLST)).OUT
&PLIST   SETC  'RDL'.'&SYSECT'(4,5)
&PARMLST SETB  0
         AGO   .OUT                                              Y02006
.CALINIT ANOP                                                    Y02006
         AIF   (N'&SYSLIST GT 1).MANYMSG   CHECK # OF PARMS      Y02006
         AIF   ('&ASID' NE '').MANYMSG                           Y02006
         AIF   (&BALMOD).BALINIT   CHECK IF BAL MODULE           Y02006
&LABEL   L     R15,BRRDINIT(,COMBASE)  ADDRESS OF INITIALIZATION
*                                  ROUTINE                       Y02006
         AGO   .CALLI                                            Y02006
.BALINIT ANOP                                                    Y02006
&LABEL   L     R15,BRRDINIT        ADDRESS OF INITIALIZATION ROUTINE
*                                                                Y02006
.CALLI   ANOP                                                    Y02006
         BALR  R14,R15             LINK TO INIT                  Y02006
         AGO   .OUT                                              Y02006
.CALFREE ANOP                                                    Y02006
         AIF   (N'&SYSLIST GT 1).MANYMSG   CHECK # OF PARMS      Y02006
         AIF   ('&ASID' EQ '').OK2CALL                           Y02006
.MANYMSG MNOTE 12,'TOO MANY PARAMETERS SPECIFIED'                Y02006
         MEXIT                                                   Y02006
.OK2CALL ANOP                                                    Y02006
         AIF   (&BALMOD).BALADJ    BRANCH IF BAL MODULE          Y02006
&LABEL   L     R15,BRRDADJ(,COMBASE)  ADDRESS OF ADJUST ROUTINE  Y02006
         AGO   .CALLA                                            Y02006
.BALADJ  ANOP                                                    Y02006
&LABEL   L     R15,BRRDADJ         ADDRESS OF ADJUST ROUTINE     Y02006
.CALLA   ANOP                                                    Y02006
         BALR  R14,R15             LINK TO IT                    Y02006
.OUT     ANOP
         MEND
./ ADD NAME=BRWRITE
         MACRO
&NAME    BRWRITE &PARM,&MODE                                     S21014
.*A001200,014100-014400,014600                                   Y02006
.*C015000                                                        Y02006
.***  GLOBAL VARIABLE &BALMOD INDICATES IF BAL MODULE OR PLS MODULE **
         GBLB  &BALMOD                                           Y02006
         LCLA  &IMCT                                             S21014
         AIF   ('&MODE' EQ '').AFOP                              S21014
         AIF   ('&MODE' EQ 'AFT').AFOP                           S21014
         AIF   ('&MODE' EQ 'IMM').IMOP                           S21014
.*                                                               S21014
         MNOTE 12,'INVALID BRWRITE MODE - MUST BE ''IMM'' OR ''AFT'''
         MEXIT
.IMOP    ANOP                                                    S21014
         AIF   ('&PARM' NE 'SKIP').IMLINE                        S21014
&NAME    LA    PREG,2 .            SET CODE FOR SKIP IMMEDIATELY S21014
         AGO   .COMPL                                            S21014
.IMLINE  ANOP                                                    S21014
&IMCT    SETA  &PARM                                             S21014
&IMCT    SETA  &IMCT+2                                           S21014
&NAME    LA    PREG,&IMCT .        SET SPACE IMMED. CODE         S21014
         AGO   .COMPL                                            S21014
.AFOP    ANOP                                                    S21014
         AIF   ('&PARM' EQ 'SKIP').NEXT
&NAME    LA    PREG,&PARM .        LOAD PARM FOR NUMB OF SPACES
         AGO   .NEXT1
.NEXT    ANOP
&NAME    LA    PREG,1 .            INDICATE SKIP TO
.COMPL   ANOP                                                    S21014
         LCR   PREG,PREG .         COMPLEMENT TO INDICATE        S21014
*                                  IMMEDIATE OPERATION OR SKIP   S21014
.NEXT1   ANOP
         AIF   (&BALMOD).BALWRT    BRANCH IF BAL MODULE          Y02006
         L     R15,AWRITE(,COMBASE)  LOAD ADDR OF WRITE ROUTINE  Y02006
         AGO   .CALWRT                                           Y02006
.BALWRT  ANOP                                                    Y02006
         L     R15,AWRITE .        LOAD ADDR OF WRITE ROUTINE
.CALWRT  ANOP                                                    Y02006
         BALR  R14,R15 .           LINK TO IT                    Y02006
         MEND
./ ADD NAME=CATLG
* /*                                                                */
* /* MACCOMP Y-2 SC1DE/SJE92                                        */
* /* MACSTAT Y-2 72335/Y02020                                       */
* /*                                                                */
         MACRO
&CATLBL  CATLG &MF=
         AIF   ('&MF' NE 'L').C1
         AIF   ('&CATLBL' EQ '').C0
&CATLBL  DS    0H                       CATALOG MACRO LABEL
.C0      MEXIT
.C1      AIF   ('&MF(1)' EQ 'E').C2
&CATLBL  SVC   26                       CALL AM/0 CATALOG
         MEXIT
.C2      AIF   ('&MF(2)' EQ '' OR '&MF(2)' EQ '(1)').C3
         AIF   ('&MF(2)'(1,1) EQ '(').C4
&CATLBL  LA    1,&MF(2)                 LOAD CATALOG PARM REG
         AGO   .C5
.C3      ANOP
&CATLBL  SVC   26                       CALL AM/0 CATALOG
         MEXIT
.C4      ANOP
&CATLBL  LR    1,&MF(2)                 LOAD CATALOG PARM REG
.C5      SVC   26                       CALL AM/0 CATALOG
         MEND
./ ADD NAME=CENXTR
         MACRO
&NAME    CENXTR
&NAME    IFDMOD LOAD='46'
         MEND
./ ADD NAME=CMSETI
***********************************************************************
*                                                                     *
*01* MACRO-NAME = CMSETI                                              *
*                                                                     *
*01* DESCRIPTIVE-NAME = CROSS MEMORY SET INLINE                       *
*                                                                     *
*01* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1980,                   *
*                LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,          *
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
*                G120-2083.                                           *
*                                                                     *
*01* STATUS = OS/VS2 JBB1226                                          *
*                                                                     *
*01* FUNCTION = TO ESTABLISH ADDRESSABILTY TO A SPECIFIED ADDRESS     *
*               SPACE AND TO RETURN TO THE ORIGINAL ADDRESS SPACE.    *
*               CMSETI SUPPORTS THE FOLLOWING CMSET OPTIONS INLINE:   *
*                             SET                                     *
*                             RESET,CHKAUTH=YES                       *
*                             RESET,CHKAUTH=NO                        *
*               THE OPERANDS HAVE THE SAME FORMAT AS THE CMSET MACRO. *
*                                                                     *
*01* NOTES = PROGRAMS USING CMSETI MUST INCLUDE THE IHAASCB, IHAPSA,  *
*            AND IHASVT MAPPING MACROS.                               *
*                                                                     *
*01* MODULE-TYPE = MACRO                                              *
*                                                                     *
*02* PROCESSOR = ASSEMBLER                                            *
*                                                                     *
*02* MACRO SIZE = 100 LOC                                             *
*                                                                     *
*01* MACROS = CMSET, IHBERMAC, LASP                                   *
*                                                                     *
*01* CHANGE-ACTIVITY = @G38DPXT - CROSS MEMORY SUPPORT                *
*                      @ZMB0551                                       *
*                                                                     *
*01* MNOTES = SEE THE MNOTES SECTION OF THE MACRO FOR LIST            *
*              OF MNOTES ISSUED                                       *
*                                                                     *
***********************************************************************
* A-000000-999999                                              @G38DPXT
*
         MACRO
&LABEL   CMSETI &REQUEST,&ASCB=,&XMSAVE=,&CHKAUTH=,&CHKICMA=YES,       X
               &RELATED=
.*
.*
*        MACDATE = 06/03/80
.*
         LCLC  &LABEL1,&LABEL2
&LABEL1  SETC  'IHB&SYSNDX.A'
&LABEL2  SETC  'IHB&SYSNDX.B'
.*
         AIF   (T'&LABEL EQ 'O').NOLABEL   CHECK IF A LABEL WAS
.*                                     GIVEN, IF YES GENERATE LABEL
&LABEL   DS    0H                      .BRANCH LABEL
.*
.NOLABEL ANOP
.*
         AIF   (T'&REQUEST EQ 'O').MNNREQ   IF REQUEST NOT SPECIFIED
.*                                     THEN ISSUE MNOTE AND EXIT
         AIF   (N'&SYSLIST GT 1).MNEXTRA   IF MORE THAN ONE POSITIONAL
.*                                     PARAMETER SPECIFIED THEN ISSUE
.*                                     MNOTE AND EXIT
         AIF   ('&REQUEST' EQ 'SET').SET   IF REQUEST IS 'SET' GO TO
.*                                     SET SECTION OF MACRO
         AIF   ('&REQUEST' EQ 'RESET').RESET   IF REQUEST IS 'RESET'
.*                                     GO TO RESET SECTION OF MACRO
         AGO   .MNINVR                 REQUEST NOT VALID, GO ISSUE
.*                                     MNOTE AND EXIT
.*
.**********************************************************************
.*                                                                    *
.*   SET:  THIS SECTION OF THE MACRO PERFORMS THE VALIDITY CHECKING   *
.*       AND CODE GENERATION FOR THE 'SET' OPTION                     *
.*                                                                    *
.**********************************************************************
.*
.SET     ANOP
         AIF   (T'&ASCB EQ 'O').MNNASCB ASCB KEYWORD REQUIRED ON SET,
.*                                     ISSUE MNOTE AND EXIT
         AIF   (T'&CHKAUTH NE 'O').MNAUTHI  IF CHKAUTH IS SPECIFIED,
.*                                     ISSUE MNOTE AND EXIT
         AIF   ('&ASCB'(1,1) EQ '(').SETAREG   IF FIRST CHARACTER OF
.*                                     ASCB OPERAND IS AN OPEN PAREN
.*                                     THEN ASCB ADDRESS IS ALREADY
.*                                     IN A REGISTER, BRANCH TO HANDLE
         L     1,&ASCB                 .LOAD ASCB ADDRESS INTO R1
         AGO   .SETXMCK                GO CHECK XMSAVE OPERAND
.*
.SETAREG ANOP                          ASCB ADDRESS IS IN A REGISTER
         AIF   (N'&ASCB NE 1).MNASCBI  IF NUMBER OF ELEMENTS IN ASCB
.*                                     SUBLIST IS NOT ONE, ISSUE AN
.*                                     MNOTE AND EXIT
         AIF   ('&ASCB(1)' EQ '1').SETXMCK  IF ASCB ADDRESS IS ALREADY
.*                                     IN R1 THEN GO CHECK XMSAVE
         LR    1,&ASCB(1)              .LOAD ASCB ADDRESS INTO R1
.*
.SETXMCK ANOP
         AIF   (T'&XMSAVE EQ 'O').SETCODE  IF NO XMSAVE OPERAND, GO
.*                                     GENERATE LINKAGE CODE
         AIF   ('&XMSAVE'(1,1) EQ '(').SETXREG  IF FIRST CHARACTER OF
.*                                     XMSAVE OPERAND IS AN OPEN PAREN,
.*                                     BRANCH TO HANDLE
         LA    0,&XMSAVE               .GET XMSAVE ADDRESS IN R0
         AGO   .SETCODE                GO GENERATE LINKAGE CODE
.*
.SETXREG ANOP
         AIF   (N'&XMSAVE NE 1).MNSAVI IF NUMBER OF ELEMENTS IN XMSAVE
.*                                     SUBLIST IS NOT ONE, ISSUE AN
.*                                     MNOTE AND EXIT
         AIF   ('&XMSAVE(1)' EQ '0').SETCODE   IF XMSAVE ADDRESS IS IN
.*                                     R0, GO GENERATE LINKAGE CODE
         LR    0,&XMSAVE(1)            .LOAD XMSAVE ADDRESS IN R0
.*
.SETCODE ANOP
.**********************************************************************
         TM    PSAXMFB1-PSA(0),X'20'   .HARDWARE FEATURE?
         BNZ   &LABEL2                 .NO, GO CALL SERVICE ROUTINE
.**********************************************************************
.*
         AIF   (T'&XMSAVE EQ 'O').SETNXMS  IF XMSAVE IS NOT SPECIFIED,
.*                                     DO NOT SAVE CR3 AND CR4
         LR    15,0                    .GET XMSAVE ADDRESS FROM R0
         STCTL 3,4,0(15)               .SAVE CURRENT CR3 AND CR4
.SETNXMS ANOP
.*
         LH    15,ASCBASID-ASCB(,1)    .GET ASID FROM INPUT ASCB
         ST    15,PSASLSA-PSA(0,0)     .CREATE CR3 IMAGE IN PSA
         ST    15,PSASLSA-PSA+4(0,0)   .CREATE CR4 IMAGE IN PSA
         SLR   15,15                   .SET RETURN CODE IN R15 @ZMB0551
*        LASP  PSASLSA-PSA(0),B'100'   .LOAD XM CONTROL REGISTERS
         LASP  PSASLSA-PSA(0),B'100'   .LOAD XM CONTROL REGISTERS
         BZ    &LABEL1                 .CONTROL REGISTERS LOADED?
.**********************************************************************
&LABEL2  DS    0H
.**********************************************************************
         AIF   (T'&XMSAVE NE 'O').SETXMS IF XMSAVE OPERAND SPECIFIED,
.*                                     GO ISSUE XMSAVE CMSET MACRO
*        CMSET SET,ASCB=(1),CHKICMA=&CHKICMA
         CMSET SET,ASCB=(1),CHKICMA=&CHKICMA
         AGO   .SETLABL                GO GENERATE ENDING LABEL
.SETXMS  ANOP
*        CMSET SET,ASCB=(1),CHKICMA=&CHKICMA,XMSAVE=(0)
         CMSET SET,ASCB=(1),CHKICMA=&CHKICMA,XMSAVE=(0)
.SETLABL ANOP
&LABEL1  DS    0H
         MEXIT                         EXIT FROM MACRO
.*
.**********************************************************************
.*                                                                    *
.*   RESET:  THIS SECTION OF THE MACRO PERFORMS THE VALIDITY CHECKING *
.*       AND CODE GENERATION FOR THE 'RESET' OPTION                   *
.*                                                                    *
.**********************************************************************
.*
.RESET   ANOP
         AIF   (T'&XMSAVE EQ 'O').MNNXSAV   IF XMSAVE NOT SPECIFIED
.*                                     ISSUE MNOTE AND EXIT
         AIF   (T'&ASCB NE 'O').MNASCB   IF ASCB SPECIFIED ISSUE MNOTE
         AIF   (T'&CHKAUTH EQ 'O').MNNAUTH IF CHKAUTH IS NOT SPECIFIED
.*                                     THEN ISSUE MNOTE AND EXIT
         AIF   ('&CHKAUTH' NE 'YES' AND '&CHKAUTH' NE 'NO').MNAUTH
.*                                     IF CHKAUTH IS NOT 'YES' OR 'NO'
.*                                     THEN ISSUE MNOTE AND EXIT
.*
         AIF   ('&XMSAVE'(1,1) EQ '(').RERSAV   IF SAVE AREA ADDRESS
.*                                     ALREADY IN A REGISTER BRANCH
         LA    1,&XMSAVE               .GET XMSAVE ADDRESS IN R1
         AGO   .RECODE
.RERSAV  ANOP
         AIF   (N'&XMSAVE NE 1).MNSAVI IF NUMBER OF ELEMENTS IN
.*                                     XMSAVE SUBLIST IS NOT ONE THEN
.*                                     ISSUE MNOTE AND EXIT
         AIF   ('&XMSAVE(1)' EQ '1').RECODE    IF SAVE AREA ADDRESS
.*                                     ALREADY IN R1 THEN BRANCH
         LR    1,&XMSAVE(1)            .GET XMSAVE ADDRESS IN R1
.*
.RECODE  ANOP
.**********************************************************************
         TM    PSAXMFB1-PSA(0),X'20'   .HARDWARE FEATURE?
         BNZ   &LABEL2                 .NO, GO CALL SERVICE ROUTINE
.**********************************************************************
         AIF   ('&CHKAUTH' EQ 'NO').RENAUTH   IF NO AUTHORIZATION TEST
.*                                     THEN BRANCH
*        LASP  0(1),B'100'             .LOAD XM CONTROL REGISTERS
         LASP  0(1),B'100'             .LOAD XM CONTROL REGISTERS
         AGO   .RECRCHK
.RENAUTH ANOP
*        LASP  0(1),B'011'             .LOAD XM CONTROL REGISTERS
         LASP  0(1),B'011'             .LOAD XM CONTROL REGISTERS
.RECRCHK ANOP
         BZ    &LABEL1                 .CONTROL REGISTERS LOADED?
.**********************************************************************
&LABEL2  DS    0H
.**********************************************************************
*        CMSET RESET,XMSAVE=(1),CHKAUTH=&CHKAUTH
         CMSET RESET,XMSAVE=(1),CHKAUTH=&CHKAUTH
&LABEL1  DS    0H
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*    THIS SECTION OF THE MACRO ISSUES ALL THE MNOTES USED IN         *
.*       BY MACRO.                                                    *
.*                                                                    *
.**********************************************************************
.*
.*
.MNASCB  ANOP
.*  IHB280 ASCB INVALID WITH RESET
         IHBERMAC 1020,ASCB,&REQUEST
         MEXIT
.*
.MNASCBI ANOP
.*  IHB249 INVALID ASCB PARAMETER SPECIFIED
         IHBERMAC 1014,ASCB
         MEXIT
.*
.MNAUTH  ANOP
.*  IHB002 INVALID CHKAUTH OPERAND SPECIFIED - XXX
         IHBERMAC 1001,CHKAUTH,&CHKAUTH
         MEXIT
.*
.MNAUTHI ANOP
.*  IHB280 CHKAUTH INVALID WITH SET
         IHBERMAC 1020,CHKAUTH,&REQUEST
         MEXIT
.*
.MNEXTRA ANOP
.*  IHB027 EXCESSIVE POSITIONAL PARAMETERS SPECIFIED
         IHBERMAC 238
         MEXIT
.*
.MNINVR  ANOP
.*  IHB002 INVALID REQUEST OPERAND SPECIFIED - XXX
         IHBERMAC 1001,REQUEST,&REQUEST
         MEXIT
.*
.MNNASCB ANOP
.*  IHB246 SET OPERAND SPECIFIED WITHOUT ASCB OPERAND
         IHBERMAC 1010,&REQUEST,ASCB
         MEXIT
.MNNAUTH ANOP
.*  IHB001 CHKAUTH OPERAND REQUIRED, NOT SPECIFIED
         IHBERMAC 1006,CHKAUTH
         MEXIT
.*
.MNNREQ  ANOP
.*  IHB001 REQUEST OPERAND REQUIRED, NOT SPECIFIED
         IHBERMAC 1006,REQUEST
         MEXIT
.*
.MNNXSAV ANOP
.*  IHB246 RESET OPERAND SPECIFIED WITHOUT XMSAVE OPERAND
         IHBERMAC 1010,&REQUEST,XMSAVE
         MEXIT
.*
.MNSAVI  ANOP
.*  IHB249 INVALID XMSAVE PARAMETER SPECIFIED
         IHBERMAC 1014,XMSAVE
         MEXIT
         MEND
./ ADD NAME=CMSET
* %/*******************************************************************
*                                                                     *
*01* MACRO-NAME = CMSET                                               *
*                                                                     *
*01* DESCRIPTIVE-NAME = CROSS MEMORY SET                              *
*                                                                     *
*01* COPYRIGHT: 5740-XYN COPYRIGHT IBM CORP. 1980,                    *
*               LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,           *
*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER           *
*               G120-2083.                                            *
*                                                                     *
*01* STATUS = OS/VS2 JBB1226                                          *
*                                                                     *
*01* FUNCTION = TO ESTABLISH ADDRESSABILTY TO A SPECIFIED ADDRESS     *
*               SPACE AND TO RETURN TO THE ORIGINAL ADDRESS SPACE.    *
*                                                                     *
*01* NOTES = PROGRAMS USING CMSET MUST INCLUDE THE IHAPSA AND         *
*            IHASVT MAPPING MACROS.                                   *
*            THE PLS VERSION REQUIRES THE EPILOG MACRO.               *
*                                                                     *
*01* MODULE-TYPE = MACRO                                              *
*                                                                     *
*02* PROCESSOR = ASSEMBLER/PLS (BILINGUAL)                            *
*                                                                     *
*02* MACRO SIZE = 450 LOC                                             *
*                                                                     *
*01* MACROS = IHBERMAC                                                *
*                                                                     *
*01* CHANGE-ACTIVITY = @G38DPXT - CROSS MEMORY SUPPORT                *
*                                                                     *
*01* MNOTES = SEE THE MNOTES SECTION OF THE MACRO FOR LIST            *
*              OF MNOTES ISSUED                                       *
*                                                                     *
*01* PLS MESSAGES = SEE PLS SECTION OF CODE FOR MESSAGES ISSUED       *
*                                                                     *
***********************************************************************
* A-000000-999999                                              @G38DPXT
         MACRO
&LABEL   CMSET &REQUEST,&ASCB=,&XMSAVE=,&CHKAUTH=,                     X
               &CHKICMA=YES,&RELATED=
.*
.*
*        MACDATE = 06/03/80
.*
         AIF   (T'&LABEL EQ 'O').NOLABEL   CHECK IF A LABEL WAS
.*                                     GIVEN, IF YES GENERATE LABEL
&LABEL   EQU   *                       .BRANCH LABEL
.*
.NOLABEL ANOP
.*
         AIF   (T'&REQUEST EQ 'O').MNNREQ   IF REQUEST NOT SPECIFIED
.*                                     THEN ISSUE MNOTE AND EXIT
         AIF   (N'&SYSLIST GT 1).MNEXTRA   IF MORE THAN ONE POSITIONAL
.*                                     PARAMETER SPECIFIED THEN ISSUE
.*                                     MNOTE AND EXIT
         AIF   ('&REQUEST' EQ 'SET').SET   IF REQUEST IS 'SET' GO TO
.*                                     SET SECTION OF MACRO
         AIF   ('&REQUEST' EQ 'RESET').RESET   IF REQUEST IS 'RESET'
.*                                     GO TO RESET SECTION OF MACRO
         AIF   ('&REQUEST' EQ 'SSARTO').SSARTO IF REQUEST IS 'SSARTO'
.*                                     GO TO SSARTO SECTION OF MACRO
         AIF   ('&REQUEST' EQ 'SSARBACK').SSARBCK   IF REQUEST IS
.*                                     'SSARBACK' GO TO SSARBCK
         AGO   .MNINVR                 REQUEST NOT VALID, GO ISSUE
.*                                     MNOTE AND EXIT
.*
.**********************************************************************
.*                                                                    *
.*   SET:  THIS SECTION OF THE MACRO PERFORMS THE VALIDITY CHECKING   *
.*       AND CODE GENERATION FOR THE 'SET' OPTION                     *
.*                                                                    *
.**********************************************************************
.*
.SET     ANOP
         AIF   (T'&ASCB EQ 'O').MNNASCB ASCB KEYWORD REQUIRED ON SET,
.*                                     ISSUE MNOTE AND EXIT
         AIF   ('&CHKICMA' NE 'YES' AND '&CHKICMA' NE 'NO').MNICMA
.*                                     IF CHKICMA NOT EQUAL TO 'YES'
.*                                     OR 'NO' THEN ISSUE MNOTE AND
.*                                     EXIT
         AIF   (T'&CHKAUTH NE 'O').MNAUTHI  IF CHKAUTH IS SPECIFIED
.*                                     ISSUE MNOTE AND EXIT
.*
         AIF   ('&ASCB'(1,1) EQ '(').SETAREG   IF FIRST CHARACTER OF
.*                                     ASCB OPERAND IS AN OPEN PAREN
.*                                     THEN ASCB ADDRESS IS ALREADY
.*                                     IN A REGISTER, BRANCH TO HANDLE
         L     1,&ASCB                 .LOAD ASCB ADDRESS INTO R1
         AGO   .SETCSAV                GO CHECK THE SAVE AREA OPERAND
.*
.SETAREG ANOP                          ASCB ADDRESS IS IN A REGISTER
         AIF   (N'&ASCB NE 1).MNASCBI  IF NUMBER OF ELEMENTS IN ASCB
.*                                     SUBLIST IS NOT ONE, ISSUE AN
.*                                     MNOTE AND EXIT
         AIF   ('&ASCB(1)' EQ '1').SETCSAV  IF ASCB ADDRESS IS ALREADY
.*                                     IN R1 THEN GO CHECK SAVE AREA
         LR    1,&ASCB(1)              .LOAD ASCB ADDRESS INTO R1
.*
.SETCSAV ANOP                          CHECK THE SAVE AREA OPERAND
         AIF   (T'&XMSAVE NE 'O').SETSAVE   IF SAVE AREA IS SPECIFIED
.*                                     GO CHECK IT
         SLR   0,0                     .INDICATE NO XM SAVE AREA
         AGO   .SETBALR                GO GENERATE LINKAGE CODE
.*
.SETSAVE ANOP
         AIF   ('&XMSAVE'(1,1) EQ '(').SETRSAV   IF FIRST CHARACTER OF
.*                                     XMSAVE OPERAND IS AN OPEN PAREN
.*                                     THEN XMSAVE ADDRESS IS ALREADY
.*                                     IN A REGISTER, BRANCH TO HANDLE
         LA    0,&XMSAVE               .GET XMSAVE ADDRESS IN R0
         AGO   .SETBALR                GO GENERATE LINKAGE CODE
.*
.SETRSAV ANOP                          XMSAVE ADDRESS IS IN A REGISTER
         AIF   (N'&XMSAVE NE 1).MNSAVI IF NUMBER OF ELEMENTS IN XMSAVE
.*                                     SUBLIST IS NOT ONE, THEN ISSUE
.*                                     MNOTE AND EXIT
         AIF   ('&XMSAVE(1)' EQ '0').SETBALR   IF XMSAVE ADDRESS IS
.*                                     IN R0 THEN GO GENERATE LINKAGE
         LR    0,&XMSAVE(1)            .GET XMSAVE ADDRESS IN R0
.*
.SETBALR ANOP                          ENTRY LINKAGE CODE
         L     15,PSASVT-PSA(,0)       .SVT ADDRESS
.*
.**********************************************************************
.*                                                                    *
.*  THE HIGH ORDER BIT OF THE REGISTER 1 IS USED TO INDICATE          *
.*  WHETHER OR NOT THE ICMA INDICATOR IS TO BE CHECKED.               *
.*  IF BIT IS ON THEN ICMA IS TO BE CHECKED.  A MASK IN THE           *
.*  SVT IS USED TO SET THIS BIT INSTEAD OF AN INLINE MASK             *
.*  BECAUSE OF PERFORMANCE, DO NOT WANT TO BRANCH AROUND THE MASK.    *
.*                                                                    *
.**********************************************************************
.*
         AIF   ('&CHKICMA' EQ 'NO').SETNCHK
         O     1,SVTCMCKM-SVT(,15)     .ICMA IS TO BE CHECKED
         AGO   .SETGO                  GO FINISH LINKAGE CODE
.*
.SETNCHK ANOP
         LA    1,0(0,1)                .ICMA IS NOT TO BE CHECKED
.*
.SETGO   ANOP
         L     15,SVTCMST1-SVT(,15)    .CMSET SET EPA
         BALR  14,15                   .CALL THE CMSET ROUTINE
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*   RESET:  THIS SECTION OF THE MACRO PERFORMS THE VALIDITY CHECKING *
.*       AND CODE GENERATION FOR THE 'RESET' OPTION                   *
.*                                                                    *
.**********************************************************************
.*
.RESET   ANOP
         AIF   (T'&XMSAVE EQ 'O').MNNXSAV   IF XMSAVE NOT SPECIFIED
.*                                     ISSUE MNOTE AND EXIT
         AIF   (T'&ASCB NE 'O').MNASCB   IF ASCB SPECIFIED ISSUE MNOTE
         AIF   ('&CHKICMA' NE 'YES').MNCHKI IF CHKICMA IS NOT THE
.*                                     DEFAULT ISSUE MNOTE AND EXIT
         AIF   (T'&CHKAUTH EQ 'O').MNNAUTH IF CHKAUTH IS NOT SPECIFIED
.*                                     THEN ISSUE MNOTE AND EXIT
         AIF   ('&CHKAUTH' NE 'YES' AND '&CHKAUTH' NE 'NO').MNAUTH
.*                                     IF CHKAUTH IS NOT 'YES' OR 'NO'
.*                                     THEN ISSUE MNOTE AND EXIT
.*
         AIF   ('&XMSAVE'(1,1) EQ '(').RERSAV   IF SAVE AREA ADDRESS
.*                                     ALREADY IN A REGISTER BRANCH
         LA    1,&XMSAVE               .GET XMSAVE ADDRESS IN R1
         AGO   .REBALR
.RERSAV  ANOP
         AIF   (N'&XMSAVE NE 1).MNSAVI IF NUMBER OF ELEMENTS IN
.*                                     XMSAVE SUBLIST IS NOT ONE THEN
.*                                     ISSUE MNOTE AND EXIT
         AIF   ('&XMSAVE(1)' EQ '1').REBALR    IF SAVE AREA ADDRESS
.*                                     ALREADY IN R1 THEN BRANCH
         LR    1,&XMSAVE(1)            .GET XMSAVE ADDRESS IN R1
.*
.REBALR  ANOP
         L     15,PSASVT-PSA(,0)       .SVT ADDRESS
         AIF   ('&CHKAUTH' EQ 'NO').RENAUTH   IF NO AUTHORIZATION TEST
.*                                     THEN BRANCH
         L     15,SVTCMRT1-SVT(,15)    .CMSET RESET/AUTH CHECK EPA
         AGO   .REGO
.RENAUTH ANOP
         L     15,SVTCMRT2-SVT(,15)    .CMSET RESET/NO AUTH CHECK EPA
.REGO    ANOP
         BALR  14,15                   .CALL CMSET ROUTINE
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*   SSARTO:  THIS SECTION OF THE MACRO PERFORMS THE VALIDITY         *
.*       CHECKING AND CODE GENERATION FOR THE 'SSARTO' OPTION         *
.*                                                                    *
.**********************************************************************
.*
.SSARTO  ANOP
         AIF   (T'&RELATED EQ 'O').MNNREL   IF RELATED OPERAND NOT
.*                                     SPECIFIED, ISSUE MNOTE AND EXIT
         AIF   (T'&ASCB EQ 'O').MNNASCB     IF NO ASCB ADDRESS IS
.*                                     SPECIFIED ISSUE MNOTE AND EXIT
         AIF   (T'&XMSAVE NE 'O').MNXMSAV   IF XMSAVE IS SPECIFIED
.*                                     THEN ISSUE MNOTE AND EXIT
         AIF   ('&CHKICMA' NE 'YES').MNCHKI IF CHKICMA IS NOT DEFAULT
.*                                     VALUE ISSUE MNOTE AND EXIT
         AIF   (T'&CHKAUTH NE 'O').MNAUTHI IF CHKAUTH IS SPECIFIED
.*                                     VALUE ISSUE MNOTE AND EXIT
.*
         AIF   ('&ASCB'(1,1) EQ '(').TOREGA   IS THE ASCB ADDRESS
.*                                     ALREADY IN A REGISTER, IF IT
.*                                     IS THEN BRANCH
         L     1,&ASCB                 .LOAD ASCB ADDRESS INTO R1
         AGO   .TOBALR
.TOREGA  ANOP
         AIF   (N'&ASCB NE 1).MNASCBI  IF MORE THAN ONE SUBLIST
.*                                     ELEMENT ISSUE MNOTE AND EXIT
         AIF   ('&ASCB(1)' EQ '1').TOBALR  IF ALREADY IN REG ONE
.*                                     DO NOT LOAD IT INTO REG ONE
         LR    1,&ASCB(1)              .LOAD ASCB ADDRESS INTO R1
.*
.TOBALR  ANOP
         L     15,PSASVT-PSA(,0)       .SVT ADDRESS
         L     15,SVTCMSTR-SVT(,15)    .CMSET SSARTO EPA
         BALR  14,15                   .CALL CMSET ROUTINE
*
*        REGISTER ONE NOW CONTAINS A TOKEN WHICH
*        IS REQUIRED FOR THE CMSET SSARBACK.
*
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*   SSARBACK:  THIS SECTION OF THE MACRO PERFORMS THE VALIDITY       *
.*       CHECKING AND CODE GENERATION FOR THE 'SSARBACK' OPTION       *
.*                                                                    *
.**********************************************************************
.*
.SSARBCK ANOP
         AIF   (T'&RELATED EQ 'O').MNNREL   IF RELATED OPERAND NOT
.*                                     SPECIFIED, ISSUE MNOTE AND EXIT
         AIF   (T'&ASCB NE 'O').MNASCB      IF ASCB ADDRESS IS
.*                                     SPECIFIED ISSUE MNOTE AND EXIT
         AIF   (T'&XMSAVE NE 'O').MNXMSAV   IF XMSAVE IS SPECIFIED
.*                                     THEN ISSUE MNOTE AND EXIT
         AIF   ('&CHKICMA' NE 'YES').MNCHKI IF CHKICMA IS NOT DEFAULT
.*                                     VALUE ISSUE MNOTE AND EXIT
         AIF   (T'&CHKAUTH NE 'O').MNAUTHI IF CHKAUTH IS SPECIFIED
.*                                     VALUE ISSUE MNOTE AND EXIT
*
*        REGISTER ONE MUST NOW CONTAIN THE TOKEN WHICH
*        WAS RETURNED BY THE CMSET SSARTO MACRO.
*
         L     15,PSASVT-PSA(,0)       .SVT ADDRESS
         L     15,SVTCMSBR-SVT(,15)    .CMSET SSARBACK EPA
         BALR  14,15                   .CALL CMSET ROUTINE
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*    THIS SECTION OF THE MACRO ISSUES ALL THE MNOTES USED IN         *
.*       BY MACRO.                                                    *
.*                                                                    *
.**********************************************************************
.*
.*
.MNASCB  ANOP
.*  IHB280 ASCB INVALID WITH RESET/SSARBACK
         IHBERMAC 1020,ASCB,&REQUEST
         MEXIT
.*
.MNASCBI ANOP
.*  IHB249 INVALID ASCB PARAMETER SPECIFIED
         IHBERMAC 1014,ASCB
         MEXIT
.*
.MNAUTH  ANOP
.*  IHB002 INVALID CHKAUTH OPERAND SPECIFIED - XXX
         IHBERMAC 1001,CHKAUTH,&CHKAUTH
         MEXIT
.*
.MNAUTHI ANOP
.*  IHB280 CHKAUTH INVALID WITH SET/SSARTO/SSARBACK
         IHBERMAC 1020,CHKAUTH,&REQUEST
         MEXIT
.*
.MNCHKI  ANOP
.*  IHB280 CHKICMA INVALID WITH RESET/SSARTO/SSARBACK
         IHBERMAC 1020,CHKICMA,&REQUEST
         MEXIT
.*
.MNEXTRA ANOP
.*  IHB027 EXCESSIVE POSITIONAL PARAMETERS SPECIFIED
         IHBERMAC 238
         MEXIT
.*
.MNICMA  ANOP
.*  IHB002 INVALID CHKICMA OPERAND SPECIFIED - XXX
         IHBERMAC 1001,CHKICMA,&CHKICMA
         MEXIT
.*
.MNINVR  ANOP
.*  IHB002 INVALID REQUEST OPERAND SPECIFIED - XXX
         IHBERMAC 1001,REQUEST,&REQUEST
         MEXIT
.*
.MNNASCB ANOP
.*  IHB246 SET/SSARTO OPERAND SPECIFIED WITHOUT ASCB OPERAND
         IHBERMAC 1010,&REQUEST,ASCB
         MEXIT
.MNNAUTH ANOP
.*  IHB001 CHKAUTH OPERAND REQUIRED, NOT SPECIFIED
         IHBERMAC 1006,CHKAUTH
         MEXIT
.*
.MNNREL  ANOP
.*  IHB001 RELATED OPERAND REQUIRED, NOT SPECIFIED
         IHBERMAC 1006,RELATED
         MEXIT
.*
.MNNREQ  ANOP
.*  IHB001 REQUEST OPERAND REQUIRED, NOT SPECIFIED
         IHBERMAC 1006,REQUEST
         MEXIT
.*
.MNNXSAV ANOP
.*  IHB246 RESET OPERAND SPECIFIED WITHOUT XMSAVE OPERAND
         IHBERMAC 1010,&REQUEST,XMSAVE
         MEXIT
.*
.MNSAVI  ANOP
.*  IHB249 INVALID XMSAVE PARAMETER SPECIFIED
         IHBERMAC 1014,XMSAVE
         MEXIT
.*
.MNXMSAV ANOP
.*  IHB280 XMSAVE INVALID WITH SSARTO/SSARBACK
         IHBERMAC 1020,XMSAVE,&REQUEST
         MEXIT
.*
         MEND
* */
* CMSET:
*       MACRO KEYS(ASCB,XMSAVE,CHKAUTH,CHKICMA,RELATED);
*
* DCL EHAREGS CHAR EXT;                /* REGS FOR EPILOG            */
* DCL RC FIXED;                        /* RETURN CODE FROM MACRO     */
* DCL CMT CHAR;                        /* COMMENT FOR DO-END STMTS   */
*
* RC=12;                               /* INITIALIZE BAD RETURN CODE */
* CMT=' 'MACNAME' 'MACLIST' 'MACKEYS
*       ' MACDATE(06/03/80)';          /* INITIALIZE MACRO COMMENT   */
* IF MACLABEL^='' THEN                 /* LABEL ON MACRO?            */
*   ANS(MACLABEL) COL(MACLMAR);        /* YES GENERATE LABEL         */
* ANS('DO; 'COMMENT(CMT)) COL(MACCOL);  /* GENERATE DO AND COMMENT */
* IF NUMBER(MACLIST)=0 THEN            /* TYPE SPECIFIED?            */
*   DO;
*     ANS MSG('AHA0013 ''MACLIST(1)'' IS REQUIRED BUT IS NOT '
*             'SUPPLIED, NO TEXT IS GENERATED');
*     GOTO LHA0400;
*   END;
* IF NUMBER(MACLIST)>1 THEN            /* MORE THAN ONE TYPE?        */
*   DO;
*     ANS MSG('AHA0033 ''MACLIST'' IS TOO LONG, '
*             'NO TEXT IS GENERATED');
*     GOTO LHA0400;
*   END;
* IF MACLIST(1)^='SET' THEN            /* VALID OPTION SPECIFIED?    */
*   IF MACLIST(1)^='RESET' THEN
*     IF MACLIST(1)^='SSARTO' THEN
*       IF MACLIST(1)^='SSARBACK' THEN
*         DO;
*           ANS MSG('AHA0023 CMSET OPTION '''MACLIST(1)''' IS '
*                   'INVALID, NO TEXT IS GENERATED') COL(MACCOL);
*           GOTO LHA0400;
*         END;
* IF NUMBER(ASCB)>1 THEN               /* MORE THAN ONE ASCB?        */
*   DO;
*     ANS MSG('AHA0033 ''ASCB'' IS TOO LONG, '
*             'NO TEXT IS GENERATED');
*     GOTO LHA0400;
*   END;
* IF NUMBER(XMSAVE)>1 THEN             /* MORE THAN ONE XMSAVE?      */
*   DO;
*     ANS MSG('AHA0033 ''XMSAVE'' IS TOO LONG, '
*             'NO TEXT IS GENERATED');
*     GOTO LHA0400;
*   END;
* IF NUMBER(CHKAUTH)>1 THEN            /* MORE THAN ONE CHKAUTH?     */
*   DO;
*     ANS MSG('AHA0033 ''CHKAUTH'' IS TOO LONG, '
*             'NO TEXT IS GENERATED');
*     GOTO LHA0400;
*   END;
* IF NUMBER(CHKICMA)>1 THEN            /* MORE THAN ONE CHKICMA?     */
*   DO;
*     ANS MSG('AHA0033 ''CHKICMA'' IS TOO LONG, '
*             'NO TEXT IS GENERATED');
*     GOTO LHA0400;
*   END;
*  IF CHKICMA(1)^='' THEN
*    IF MACLIST(1)^='SET' THEN         /*  CHKICMA MAY ONLY BE
*                                      SPECIFIED ON A SET            */
*      DO;
*        ANS MSG('AHA0043 ''CHKICMA'' IS INVALID WITH 'MACLIST(1)
*                ' OPTION, NO TEXT IS GENERATED');
*        GOTO LHA0400;
*      END;
* IF CHKAUTH(1)^='' THEN
*   IF MACLIST(1)^='RESET' THEN        /*  CHKAUTH MAY ONLY BE
*                                      SPECIFIED ON A RESET          */
*      DO;
*        ANS MSG('AHA0043 ''CHKAUTH'' IS INVALID WITH 'MACLIST(1)
*                ' OPTION, NO TEXT IS GENERATED');
*        GOTO LHA0400;
*      END;
*/********************************************************************/
*/*    GENERATE REGISTER RESPECIFY                                   */
*/********************************************************************/
* ANS('RFY (GPR00F,GPR01F,GPR14F,GPR15F) RSTD;  /* RESTRICT '
*     'REGISTERS USED BY CMSET */') COL(MACCOL+2);
* IF MACLIST(1)='SET' THEN
*   DO;
*/********************************************************************/
*/*    SET PROCESSING                                                */
*/********************************************************************/
*     IF NUMBER(ASCB)=0 THEN           /* ASCB REQUIRED ON SET       */
*       DO;
*         ANS MSG('AHA0013 ''ASCB'' KEYWORD REQUIRED WITH SET '
*                 'OPTION, NO TEXT IS GENERATED');
*         GOTO LHA0300;
*       END;
*     IF CHKICMA(1)^='' THEN           /* CHKICMA A VALID VALUE?     */
*       IF CHKICMA(1)^='YES' THEN
*         IF CHKICMA(1)^='NO' THEN
*           DO;
*             ANS MSG('AHA0043 CHKICMA MUST BE ''YES'' OR ''NO'', '
*                     'NO TEXT IS GENERATED');
*             GOTO LHA0300;
*           END;
*     ANS('GPR01F='ASCB(1)'; /* PUT ASCB ADDRESS IN '
*         'REGISTER 1 */') COL(MACCOL+2);
*     IF CHKICMA(1)='NO' THEN
*         ANS('GPR01F=GPR01F&''7FFFFFFF''X; /* ICMA IS NOT TO BE '
*             'CHECKED */') COL(MACCOL+2);
*       ELSE
*         ANS('GPR01F=GPR01F''80000000''X; /* ICMA IS TO BE '
*             'CHECKED */') COL(MACCOL+2);
*     IF XMSAVE(1)='' THEN
*         ANS('GPR00F=0; /* INDICATE NO XMSAVE AREA */') COL(MACCOL+2);
*       ELSE
*         ANS('GPR00F=ADDR('XMSAVE(1)'); /* PUT XMSAVE ADDRESS '
*             'REGISTER 0  */') COL(MACCOL+2);
*     ANS('CALL IEAVCMS1; /* CALL CMSET SET ROUTINE */') COL(MACCOL+2);
*     GOTO LHA0200;
*   END;                               /* END OF SET PROCESSING      */
* IF MACLIST(1)='RESET' THEN
*   DO;
*/********************************************************************/
*/*    RESET PROCESSING                                              */
*/********************************************************************/
*     IF NUMBER(XMSAVE)=0 THEN         /* XMSAVE REQUIRED FOR RESET  */
*       DO;
*         ANS MSG('AHA0013 ''XMSAVE'' KEYWORD REQUIRED WITH '
*                  'RESET OPTION, NO TEXT IS GENERATED') COL(MACCOL);
*         GOTO LHA0300;
*       END;
*     IF NUMBER(CHKAUTH)=0 THEN        /* CHKAUTH REQUIRED FOR RESET */
*       DO;
*         ANS MSG('AHA0013 ''CHKAUTH'' KEYWORD REQUIRED WITH '
*                  'RESET OPTION, NO TEXT IS GENERATED') COL(MACCOL);
*         GOTO LHA0300;
*       END;
*     IF NUMBER(ASCB)^=0 THEN          /* ASCB NOT ALLOWED ON RESET  */
*       DO;
*         ANS MSG('AHA0023 ''ASCB'' IS INVALID WITH RESET OPTION, '
*                 'NO TEXT IS GENERATED') COL(MACCOL);
*         GOTO LHA0300;
*       END;
*     IF CHKAUTH(1)^='YES' THEN
*       IF CHKAUTH(1)^='NO' THEN
*         DO;
*           ANS MSG('AHA0043 ''CHKAUTH'' MUST BE ''YES'' '
*                 'OR ''NO'', NO TEXT IS GENERATED') COL(MACCOL);
*           GOTO LHA0300;
*         END;
*     ANS('GPR01F=ADDR('XMSAVE(1)'); /* PUT XMSAVE ADDRESS '
*          'IN REGISTER 1  */') COL(MACCOL+2);
*     IF CHKAUTH(1)='YES' THEN
*       ANS('CALL IEAVCMR1; /* CALL CMSET RESET/AUTH CHECK */')
*           COL(MACCOL+2);
*     ELSE
*       ANS('CALL IEAVCMR2; /* CALL CMSET RESET/NO AUTH CHECK */')
*           COL(MACCOL+2);
*     GOTO LHA0200;                    /* END OF RESET PROCESSING    */
*   END;
*
*
* IF NUMBER(RELATED)=0 THEN            /* RELATED REQUIRED FOR
*                                         SSARTO AND SSARBACK        */
*   DO;
*     ANS MSG('AHA0013 ''RELATED'' KEYWORD REQUIRED WITH '
*         MACLIST(1)' OPTION, NO TEXT IS GENERATED') COL(MACCOL);
*     GOTO LHA0300;
*   END;
* IF NUMBER(XMSAVE)^=0 THEN            /* XMSAVE NOT ALLOWED ON
*                                         SSARTO AND SSARBACK        */
*   DO;
*     ANS MSG('AHA0023 ''XMSAVE'' KEYWORD IS INVALID WITH '
*         MACLIST(1)' OPTION, NO TEXT IS GENERATED') COL(MACCOL);
*     GOTO LHA0300;
*   END;
* IF MACLIST(1)='SSARTO' THEN
*   DO;
*/********************************************************************/
*/*    SSARTO PROCESSING                                             */
*/********************************************************************/
*     IF NUMBER(ASCB)=0 THEN           /* ASCB REQUIRED FOR SSARTO   */
*       DO;
*         ANS MSG('AHA0013 ''ASCB'' KEYWORD REQUIRED WITH SSARTO '
*                 'OPTION, NO TEXT IS GENERATED') COL(MACCOL);
*         GOTO LHA0300;
*       END;
*     ANS('GPR01F='ASCB(1)'; /* PUT ASCB ADDRESS INTO '
*         'REGISTER 1 */') COL(MACCOL+2);
*     ANS('CALL IEAVCMST;  /* CALL CMSET SSARTO ROUTINE */')
*         COL(MACCOL+2);
*     ANS('/* REGISTER ONE NOW CONTAINS A TOKEN WHICH IS '
*         'REQUIRED FOR THE CMSET SSARBACK */') COL(10);
*     GOTO LHA0200;
*   END;
* IF MACLIST(1)='SSARBACK' THEN
*   DO;
*/********************************************************************/
*/*    SSARBACK PROCESSING                                           */
*/********************************************************************/
*     IF NUMBER(ASCB)^=0 THEN        /* ASCB NOT ALLOWED ON SSARBACK */
*       DO;
*         ANS MSG('AHA0023 ''ASCB'' KEYWORD IS INVALID WITH '
*             'SSARBACK OPTION, NO TEXT IS GENERATED') COL(MACCOL);
*         GOTO LHA0300;
*       END;
*     ANS('/* REGISTER ONE MUST NOW CONTAIN THE TOKEN WHICH '
*         'WAS RETURNED BY THE CMSET SSARTO ROUTINE */') COL(10);
*     ANS('CALL IEAVCMSB; /* CALL CMSET SSARBACK ROUTINE */')
*         COL(MACCOL+2);
*     GOTO LHA0200;                    /* END OF SSARBACK PROCESSING */
*   END;
*LHA0200:
* RC=0;                                /* SET GOOD RETURN CODE      */
*LHA0300:
* ANS('RFY (GPR00F,GPR01F,GPR14F,GPR15F) UNRSTD; '
*     '/* UNRESTRICT REGISTERS USED BY CMSET */') COL(MACCOL);
* IF INDEX(EHAREGS,'00F')=0 THEN
*   EHAREGS=EHAREGS'00F';
* IF INDEX(EHAREGS,'01F')=0 THEN
*   EHAREGS=EHAREGS'01F';
* IF INDEX(EHAREGS,'14F')=0 THEN
*   EHAREGS=EHAREGS'14F';
* IF INDEX(EHAREGS,'15F')=0 THEN
*   EHAREGS=EHAREGS'15F';
*LHA0400:
* ANS('END; 'COMMENT(CMT)) COL(MACCOL);
* RETURN CODE(RC);
* % END CMSET;
./ ADD NAME=CMWTO
         MACRO
&NAME    CMWTO &MT=,&MSG=,&REG=,&WAIT=NO,&DISP=,&SIZE=
         LCLA  &D
         AIF   (T'&REG NE 'O').A1
         AIF   (T'&MT NE 'O' AND T'&MSG NE 'O').A4
         MNOTE 8,'MT AND/OR MSG OPERANDS MISSING'
         MEXIT
.A4      ANOP
&D       SETA  (&MSG-1)*4
&NAME    L     R1,&MT .                 MESSAGE MODULE ADDRESS
         L     R1,&D.(R1) .               MESSAGE ADDRESS
         AGO   .A5
.A1      ANOP
         AIF   ('&REG' EQ '(1)').A2
&NAME    LR    R1,&REG .                MESSAGE ADDRESS
         AGO   .A5
.A2      ANOP
&NAME    DS    0H .                     NAME FIELD OF ROUTINE
.A5      ANOP
         AIF   ('&DISP' EQ '6').A3
         AIF   ('&WAIT' EQ 'YES').A3
         OI    CESWT4,X'20' .           NO WAIT REQUESTED
.A3      ANOP
         AIF   (T'&SIZE EQ 'O').A6
         AIF   ('&SIZE'(1,1) EQ '(').A7
         MVI   0(R1),&SIZE .               SIZE OF REPLY
         AGO   .A6
.A7      ANOP
         STC   &SIZE,0(R1) .               SIZE OF REPLY
.A6      ANOP
         L     R15,PARPRADR .           ENTRY TO PARALLEL PRINT
         LA    R15,&DISP.(R15) .            ENTRY POINT IN DPRINT
         BALR  R14,R15 .                LINK TO MODULE
         MEND
./ ADD NAME=COMB
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73127/Y02020                                        */
* /*                                                                 */
         MACRO
&N       COMB  &A
         LCLA  &X
         LCLC  &C,&L
&X       SETA  N'&A
&X       SETA  N'&A
&N       DS    0CL&X
&X       SETA  1
.LOOP    ANOP
&C       SETC  '&A(&X)'
         AIF   (K'&C GE 6).BIG
         AIF   (K'&C EQ 5).MED
&L       SETC  '&C'(1,2)
         AGO   .OUT
.MED     ANOP
&L       SETC  '&C'(1,2).'&C'(5,1)
         AGO   .OUT
.BIG     ANOP
&L       SETC  '&C'(1,2).'&C'(5,2)
.OUT     ANOP
         DC    AL1((8+Z&L-ZDT)/8)
&X       SETA  &X+1
         AIF   (N'&A GE &X).LOOP
         MEND
./ ADD NAME=COMCOM
         MACRO
&NAME    COMCOM &RELEASE=MVM22                                   Y02008
         LCLC  &V,&X,&Z,&S                                      X01906
&S       SETC  '&RELEASE'                                       X01906
&V       SETC  'DC'
&X       SETC  'XL1'
&Z       SETC  '''00'''
         EJECT
         IFDPF1 &V,&X,&Z,&S                                     X01906
REPBUF   EQU   INBUFR
         ENTRY REPBUF
         EJECT
         MEND
./ ADD NAME=COMMON
*
*        %GOTO COM1;               /*
         MACRO
         COMMON  &MF=E
         GBLB  &BALMOD             DEFINE GLOBAL SWITCH          Y02006
&BALMOD  SETB  1               INDICATE BAL MODULE ISSUED COMMON Y02006
         AIF   ('&MF' EQ 'E').GEND
         AIF   ('&MF' EQ 'L').GENC
         MNOTE 12,'INVALID MACRO FORMAT'
         MEXIT
.GEND    ANOP
COMMON   DSECT
         AGO   .GEN
.GENC    ANOP
AMDPRCOM CSECT                                                   Y01980
COMMON   EQU   AMDPRCOM .                                        Y01980
.GEN     ANOP
         SPACE 1                                                     */
*%COM1 : ;
*
*/********************************************************************/
*/*                                                                  */
*/*      AMDPRDMP COMMON AREA MACRO                                  */
*/*      OS/VS2 RELEASE 2  -- LEVEL 001                              */
*/*                                                                  */
*/*      THIS MACRO DEFINES CONSTANTS AND POINTERS COMMON TO ALL     */
*/*      PRDMP ROUTINES                                              */
*/*                                                                  */
*/*      TO USE THIS MACRO TO OBTAIN A DSECT OF THE AMDPRDMP COMMON  */
*/*      AREA IN A BAL MODULE, CODE:                                 */
*/*            COMMON                                                */
*/*      ISSUE A USING ON COMMON IN ORDER TO REFERENCE THE AREAS     */
*/*      DEFINED IN THE DSECT.                                       */
*/*                                                                  */
*/*      TO USE THIS MACRO TO DEFINE THE COMMON AREA,CODE:           */
*/*            COMMON  MF=L                                          */
*/*      ONLY MODULE AMDPRCOM SHOULD USE THE MACRO IN THIS MANNER.   */
*/*                                                                  */
*/*      TO USE THIS MACRO IN A PLS2 MODULE,CODE:                    */
*/*            % INCLUDE SYSLIB(COMMON)                              */
*/*      SINCE THIS IS A BASED STRUCTURE, A RESPECIFY STATEMENT IS   */
*/*      ALSO REQUIRED PRIOR TO REFERENCING FIELDS DEFINED HEREIN    */
*/*      IN ORDER TO PROVIDE A POINTER VALUE FOR LOCATING THE DATA.  */
*/*                                                                  */
*/*C024000,053500,116000,144000                                Y02006*/
*/*A001100-001200,086000-086480,146000-340443                  Y02006*/
*/*D013500,014500-015500,017000-017500,020000,021000-023000    Y02006*/
*/*D024000-024500,026000-031500,034000-039000,045000-046000    Y02006*/
*/*D052000-053000,056000,057500,097500,101000-102500,115500    Y02006*/
*/*D120000,124500-127000,136500,137500-140500,141500-143000    Y02006*/
*/*D144500-149600,150000                                       Y02006*/
*/*                                                                  */
*/********************************************************************/
*
*%GOTO COM2;                       /*
         SPACE
* * * * * * * *  COMMON MACRO DEL IS D82   * * * * * * * * * *
ERRADDR  DC    F'0'                ERROR ROUTINE ADDRESS
VERBGN   DC    F'0'
VERBEND  DC    F'0'
KYWDBGN  DC    F'0'
KYWDEND  DC    F'0'
DELIMCD  DC    F'0'
WORK1    DC    D'0'
NUCTOP   DC    F'250000'
SIX      DC    F'6'
LINECNT  DC    F'1'
PAGENUMB DC    F'0'
CURBUF   DC    F'0'
TCBLIST  DC    F'0'
CVTADDR  DC    F'0'
PCBPTR   DC    F'0'
STORSIZE DC    F'0'                      AVAILABLE STORAGE SIZE  Y02006
INDD     DC    CL8'TAPE'
FILESEQ  DC    H'0' .                                            X01980
RDENTRY  DC    F'0'
READNO   DC    F'0'
RDERCNT  DC    F'0'
READTM   DC    F'0'
ONEA     DC    H'1'
TWO      DC    H'2'
THREE    DC    H'3'
FOUR     DC    H'4'
FIVE     DC    H'5'
SEVEN    DC    H'7'
EIGHT    DC    H'8'
HTEN     DC    H'10'
ELEVEN   DC    H'11'
TWELVE   DC    H'12'
SIXTEEN  DC    H'16'
LNCNT    EQU   58
LINENUMB DC    AL2(LNCNT)
LINENUM  DC    AL2(LNCNT-2)
SWA      DC    X'00'
SWB      DC    X'00'
SWC      DC    X'00'
SWD      DC    X'00'
SWE      DC    X'00'
SWF      DC    X'00'         ALWAYS RESET ON NEWDUMP OR NEWTAPE  Y01980
BUFSW    DC    X'00'
PRSW     DC    X'00'
         DC    CL3' '                                            Y02006
WTORMSG  DC    CL81' '
BLANKS   DC    CL8' '
TITLE    DC    C'TITLE'
STOP     DC    C'STOP'
MSG1     DC    C'AMD161I FORMAT ERROR      '                     Y01980
MSG2     DC    C'AMD158I I/O ERROR ON DUMP '                     Y01980
TITLEMSG DC    CL64' '
TITLEMOD DC    CL15'MODULE' .      MODULE ISSUING DUMP
         DC    CL2' '
TITLEDTE DC    CL13'DATE'
         DC    CL2' '
TITLETME DC    CL13'TIME'
         DC    CL2' '
TITLEPGE DC    CL9'PAGE'
CAPTABL  DC    X'000102030405060708090A0B0C0D0E0F'
         DC    X'101112131415161718191A1B1C1D1E1F'
         DC    X'202122232425262728292A2B2C2D2E2F'
         DC    X'303132333435363738393A3B3C3D3E3F'
         DC    X'404142434445464748494A4B4C4D4E4F'
         DC    X'505152535455565758595A5B5C5D5E5F'
         DC    X'606162636465666768696A6B6C6D6E6F'
         DC    X'707172737475767778797A7B7C7D7E7F'
         DC    X'80C1C2C3C4C5C6C7C8C98A8B8C8D8E8F'
         DC    X'90D1D2D3D4D5D6D7D8D99A9B9C9D9E9F'
         DC    X'A0A1E2E3E4E5E6E7E8E9AAABACADAEAF'
         DC    X'B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF'
         DC    X'C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF'
         DC    X'D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF'
         DC    X'E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF'
         DC    X'F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF'
TABLE    DC    64C'.'
         DC    C' '
         DC    128C'.'
         DC    C'ABCDEFGHI'
         DC    7C'.'
         DC    C'JKLMNOPQR'
         DC    8C'.'
         DC    C'STUVWXYZ'
         DC    6C'.'
         DC    C'0123456789'
         DC    6C'.'
         ORG   *-193
HEXTABL  EQU   *
         ORG   *+193
         DC    X'FAFBFCFDFEFF'
         ORG   *+41
         DC    C'0123456789'
         ORG   *-240
EBCTABL  EQU   *
         ORG   *+240
         DC    C'0123456789ABCDEF'
BLNK     DC    64X'00'
         DC    X'0C'               BLANK
         DC    12X'00'
         DC    X'10'               LEFT PAREN
         DC    15X'00'
         DC    X'14'               RIGHT PAREN
         DC    13X'00'
         DC    X'04'               COMMA
         DC    18X'00'
         DC    X'08'               EQUAL SIGN
         DC    129X'00'
NONBLNK  DC    193X'00'                                          Y02006
         DC    9C'*'                                             Y02006
         DC    7X'00'                                            Y02006
         DC    9C'*'                                             Y02006
         DC    8X'00'                                            Y02006
         DC    8C'*'                                             Y02006
         DC    6X'00'                                            Y02006
         DC    10C'*'                                            Y02006
         DC    6X'00'                                            Y02006
***********************************************************************
*                                                                     *
*   COMMON A TYPE ADDRESS CONSTANTS                                   *
*                                                                     *
***********************************************************************
         SPACE
         AIF   ('&MF' EQ 'E').GENDS
AWRITE   DC    A(AMDPRWTR)         ADDRESS OF ROUTINE FOR OUTPUT
APRTMSG  DC    A(AMDPRMSG)         ADDR OF MESSAGE ON SYSPRINT RTN
ASYNTAX  DC    A(AMDPRSYN)         ADDR OF SYNTAX ERROR ROUTINE
AFMTLINE DC    A(AMDPRGFR)         ADDR OF LINE FORMAT ROUTINE
AADRCNVT DC    A(ADRCNVT)          ADDR OF 3 BYTE CONVERT ROUTINE
AWRDCNVT DC    A(WRDCNVT)          ADDR OF 4 BYTE CONVERT ROUTINE
         AGO   .NOGENDS
.GENDS   ANOP
AWRITE   DS    A                   ADRESS OF ROUTINE FOR OUTPUT
APRTMSG  DS    A                   ADDR OF MESSAGE ON SYSPRINT RTN
ASYNTAX  DS    A                   ADDR OF SYNTAX ERROR ROUTINE
AFMTLINE DS    A                   ADDR OF LINE FORMAT ROUTINE
AADRCNVT DS    A                   ADDR OF 3 BYTE CONVERT ROUTINE
AWRDCNVT DS    A                   ADDR OF 4 BYTE CONVERT ROUTINE
.NOGENDS ANOP
ARGNBND  DS    A                   ADDRESS OF REGION BOUNDARY ROUTINE
STOPEXIT DS    A .                 ADDR STOP EXIT ROUTINE
SYNMSGA  DS    A                   ADDR OF SYNTAX ERROR MSG ARRAY
AEREXIT  DC    V(AMDPRXIT) .       ADDR OF ERROR EXIT ROUTINE
ALOADER  DC    V(AMDPRSEG)         ADDR SEGMENT LOAD ROUTINE
QATMERTN DC    V(TODCNVRT) .       ADDR OF TOD CLOCK CONVERT RTN Y01980
         AIF   ('&MF' EQ 'E').GENDS1
ATCBSAVE DC    A(AMDPRTSV) .       ADDR OF TCB SAVE ROUTINE
ATCBREMV DC    A(TCBREMV) .        ADDRESS OF ROUTINE FOR REMOVING TCBS
ATCBRTRV DC    A(TCBRTRV) .        ADDR OF TCB RETRIEVE ROUTINE
         AGO   .NGENDS1
.GENDS1  ANOP
ATCBSAVE DS    A .                 ADDR OF TCB SAVE ROUTINE
ATCBREMV DS    A .                 ADDRESS OF ROUTINE FOR REMOVING TCBS
ATCBRTRV DS    A .                 ADDR OF TCB RETRIEVE ROUTINE
.NGENDS1 ANOP
APCBENQ  DS    A                   PCB Q MGMT.
         AIF   ('&MF' EQ 'E').GENDS2
ASTPROUT DC    A(AMDPRSTP) .       ADDR OF THE STOP ROUTINE
         AGO   .NGENDS2
.GENDS2  ANOP
ASTPROUT DS    A .                 ADDR OF THE STOP ROUTINE
.NGENDS2 ANOP
AFORMAT  DS    A                   ADDR OF ROUTINE THAT CONTROLS THE
*                                  FORMATTING OF THE CONTROL BLOCKS
APRTSTG  DS    A                   ADDR OF PRINT STORAGE SERVICE
*                                  ROUTINE
BUFSUM   DC    F'0' .              TOTAL NUMBER OF BUFFERS FOR THIS
*                                  EXECUTION
BUFREINT DC    F'0' .              NUMBER OF TIMES BUFFERS WERE
*                                  INITIALIZED
AERRMSGA DC    A(MSG1)             ERROR MESSAGE ARRAY - MESSAGE
         DC    A(MSG2)             TEXT IS DEFINE IN COMMON CONSTANTS
*                                  ABOVE
AEND     DC    V(AMDPREND)
ONGOPTR  DS    A .                 POINTER TO ONGO OPERAND
ATCBSMFR DS    A                   SUMMARY TABLE FREE ROUTINE
ATCBSMRY DS    A                   SUMMARY TABLE PRINT ROUTINE
DCBADDRS DS    0F
AOUTDCB  DC    A(0) .              ADDR OF OUTPUT DCB (PRINTER)   M0732
APTRDCB  DC    A(0) .              ADDR OF MESSAGE DCB            M0732
*                                  (SYSPRINT)                     M0732
ARDRDCB  DC    A(0) .              ADDR OF CNTRL CARD INPUT DCB   M0732
*                                  (SYSIN)                        M0732
AINDCB   DC    A(0) .              ADDR OF DUMP TAPE INPUT DCB    M0732
*                                  (TAPE)                         M0732
         DC    AL1(X'80') .        END OF LIST INDICATOR          M1634
ASYSUDCB DC    AL3(0) .            ADDR OF UTILITY DA DCB         M1634
*                                  (SYSUT1 OR 2)                  M1634
*****************************************************************S21014
*                                                                S21014
*  AMDPRCOM CHANGES FOR GTF                                      S21014
*                                                                S21014
*****************************************************************S21014
         SPACE
TRCCOUNT DC    F'0' .              COUNT OF ENTRIES TO AMDPRGET  S21014
AEDITCB  DC    A(0) .              ADDRESS OF EDIT COMMUNICATION S21014
*                                  AREA - AMDPRTAB               S21014
AROOT    DC    A(0) .              ADDRESS OF AMDPRTAB INIT RTN. S21014
EDITER   DC    X'02' .             VALUE OF ER PARAMETER OF      S21014
*                                  EXECUTE CARD                  S21014
***********************************************************************
***        ADDITIONS FOR  X01980/Y01980  SUPPORT                    ***
***********************************************************************
         SPACE
REALMAP  DC    F'0' .              POINTER TO REAL DUMP MAP      X01980
SEGTABOR DC    F'0' .              SEGMENT TABLE ORIGIN          X01980
REALMAX  DC    X'00FFFFFF'         TOP OF REAL STORAGE         @OZ00404
         DC    F'0' .              SPARE WORD                    Y02006
QAPFT    DC    A(0) .              ADDRESS OF PFT IN DUMP        Y01980
***********************************************************************
***        ADDITIONS FOR Y02006 SUPPORT                             ***
***********************************************************************
         SPACE
QASID    DC    H'0' .              ASID OF IPLED'ED CPU          Y02006
IPLCPU   DC    H'0' .              ADDRESS OF IPL'ED CPU         Y02006
*                                  CONTAINS 256 IF THE IPL'ED    Y02006
*                                  CPU STATUS WAS UNAVAILABLE -  Y02006
*                                  I.E. AN I/O ERROR OCCURRED    Y02006
*                                  WHEN THE CPU STATUS RECORD    Y02006
*                                  WAS BEING READ                Y02006
CURASCB  DC    F'0' .              ADDRESS OF CURRENT ASCB IN    Y02006
*                                  DUMPED SYSTEM                 Y02006
PREFXRGR DC    F'0' .              REAL ADDRESS IN PSA PREFIX    Y02006
*                                  REGISTER (SADMP INPUT ONLY)   Y02006
PREFXRGV DC    F'0' .              VIRTUAL ADDRESS IN PSA PREFIX Y02006
*                                  REGISTER (SADMP INPUT ONLY)   Y02006
ASVTADDR DC    F'0' .              ADDRESS OF ASVT IN DUMPED     Y02006
*                                  SYSTEM                        Y02006
SACSWCAW DC    3F'0' .             CSW (FIRST 8 BYTES) AND CAW   Y02006
*                                  (LAST 4 BYTES) FROM AMDSADMP  Y02006
*                                  HEADER RECORD                 Y02006
HDRREGS  DC    42F'0' .            REGISTERS AND CURRENT PSW     Y02006
*                                  FROM SVCDUMP OR DSS HEADER    Y02006
HDRTITLE DC    100C' ' .           TITLE FROM HEADER RECORD      Y02006
         DC    A(0) .              SPARE WORD                    Y02006
ASIDNDX  DC    A(0) .              POINTER TO ASID INDEX         Y02006
CPUMAP   DC    A(0) .              POINTER TO CPU STATUS RECORD  Y02006
*                                  MAPS                          Y02006
ASCBMAP  DC    A(0) .              POINTER TO ASCB MAP THAT IS   Y02006
*                                  CREATED BY AMDPRRDC           Y02006
BUFERMAP DC    A(0) .              ADDRESS OF FIRST PHYSICAL     Y02006
*                                  BUFFER MAP ENTRY IN RDC       Y02006
BRRDDATA DC    V(AMDPRRDD) .       ADDRESS OF AMDPRRDC READ DATA Y02006
*                                  ROUTINE                       Y02006
BRRDINIT DC    V(AMDPRRDC) .       ADDRESS OF BRREAD INIT        Y02006
*                                  ROUTINE                       Y02006
BRRDADJ  DC    V(AMDPRRDA) .       ADDRESS OF BRREAD ADJUST      Y02006
*                                  ROUTINE                       Y02006
AASCBFMT DC    A(0) .              ADDRESS OF AMDPRFAR           Y02006
ASRBFMT  DC    A(0) .              ADDRESS OF AMDPRSRB           Y02006
AUSRINIT DC    V(AMDPRUIM) .       ADDRESS OF USER INTERFACE MODULE
*                                  INITIALIZATION ROUTINE        Y02006
AUSREXIT DC    V(AMDUSRXT) .       MAIN ENTRY POINT TO AMDPRUIM  Y02006
AUSRDEL  DC    V(AMDUSRDL) .       ENTRY POINT FOR AMDPRUIM      Y02006
*                                  CLEAN-UP                      Y02006
AUSRTCBA DC    F'0' .              ADDR OF TCB CURRENTLY BEING   Y02006
*                                  PROCESSED BY FSR              Y02006
AUSRASID DC    H'0' .              ASID OF MEMORY CURRENTLY      Y02006
*                                  BEING PROCESSED BY FSR OR FAR Y02006
EXITFLAG DC    X'00' .             FLAGS INDICATING ACTION       Y02006
*                                  AMDPRUIM IS TO PERFORM        Y02006
RBMAX    DC    H'50' .             LOOP CONTROL VALUE            Y02006
PQEMAX   DC    H'50' .                                           Y02006
LLEMAX   DC    H'255' .                                          Y02006
JPQMAX   DC    H'256' .                                          Y02006
DEBMAX   DC    H'200' .                                          Y02006
DDMAX    DC    H'1635' .                                         Y02006
SRBMAX   DC    H'50' .                                           Y02006
TCBMAX   DC    H'256' .                                        @ZA00413
ASCBMAX  DC    H'200' .                                          Y02006
DQEMAX   DC    H'50' .                                           Y02006
XLMAX    DC    F'25' .                                           Y02006
DNUCTOP  DC    AL4(X'00200000') .  DEFAULT NUCTOP VALUE          Y02006
LPAMAX   DC    F'500' .            LOOP CONTROL VALUE            Y02006
DFLTCSA  DC    AL4(X'00B00000') .  DEFAULT CSA ADDRESS           Y02006
TOPICHDR DC    CL10' ' .           OPTIONAL PAGE HEADER          Y02006
CSADDR   DC    F'0'                CSA ADDRESS                   Y02006
I3800SW  DC    X'00'     SWITCHES FOR 3800 SUPPORT CODE        @Z40MI3F
TITLEKEY DC    CL16'STORAGE KEY     ' MSG IN PGE TITLE DURING  @Z40MI3F
*                                     CONDENSED DUMPING ONLY   @Z40MI3F
Z9SVCBUF DS    F'0'          ADDR OF SVC BUFFER MAP          OZ09006
Z9SUBITS DC    XL15'00'      SU BIT STRING                   OZ09006
Z9SUFLG  DC    XL1'00'       SU FLAG BYTE                    OZ09006
Z9ERRID  DS    CL12                 STORED FROM SVC DUMP        UZ81700
         EJECT
         MEND                                                        */
*%COM2 : ;
*
*DECLARE
*  1 COMMON BASED,
*   2 ERRADDR PTR(31) BDY(WORD),       /* ERROR ROUTINE ADDRESS      */
*   2 VERBGN PTR(31),                  /* BEGINNING ADDRESS OF VERB  */
*   2 VERBEND PTR(31),                 /* ENDING ADDRESS OF VERB     */
*   2 KYWDBGN PTR(31),                 /* BEGINNING ADDR OF KEYWORD  */
*   2 KYWDEND PTR(31),                 /* ENDING ADDRESS OF KEYWORD  */
*   2 DELIMCD FIXED(31),               /* CODE INDICATING TYPE OF
*                                         DELIMITER ENCOUNTERED DURING
*                                         CONTROL STATEMENT SCAN     */
*   2 WORK1 CHAR(8) BDY(DWORD),        /* DOUBLEWORD WORK AREA       */
*   2 NUCTOP FIXED(31),                /* TOP OF NUCLEUS             */
*   2 SIX FIXED(31),                   /* CONSTANT 6                 */
*   2 LINECNT FIXED(31),               /* CURRENT LINE NUMBER,USED TO
*                                         DETERMINE WHEN A NEW PAGE IS
*                                         NEEDED                     */
*   2 PAGENUMB FIXED(31),              /* CURRENT PAGE NUMBER        */
*   2 CURBUF PTR(31),                  /* ADDRESS OF CURRENT OUTPUT
*                                         BUFFER - SUPPLIED BY
*                                         AMDPRWTR                   */
*   2 TCBLIST PTR(31),                 /* ORIGIN OF TCB LIST         */
*   2 CVTADDR FIXED(31),               /* ADDRESS OF CVT IN DUMPED
*                                         SYSTEM                     */
*   2 PCBPTR PTR(31),                  /* ORIGIN OF PCB QUEUE        */
*   2 STORSIZE FIXED(31),              /* AVAILABLE STORAGE SIZE     */
*   2 INDD CHAR(8),                    /* DDNAME ON INPUT DATA SET
*                                         DD STATEMENT - DEFAULT VALUE
*                                         IS 'TAPE'                  */
*   2 FILESEQ FIXED(15),               /* VALUE OF FILESEQ PARAMETER
*                                         ON NEWDUMP CONTROL STMT    */
*   2 * CHAR(2),                       /* UNUSED FIELD               */
*   2 RDENTRY FIXED(31),               /* COUNT OF DATA ENTRIES TO
*                                         AMDPRRDC                   */
*   2 READNO FIXED(31),                /* NUMBER OF BLOCKS READ      */
*   2 RDERCNT FIXED(31),               /* NUMBER OF I/O ERRORS WHILE
*                                         ATTEMPTING TO READ SYSUT1 OR
*                                         DUMP DATA SET              */
*   2 READTM FIXED(31),                /* NUMBER OF TIMES REQUESTED
*                                         DATA WAS NOT IN A BUFFER   */
*   2 ONEA FIXED(15),                  /* CONSTANT: 1                */
*   2 TWO FIXED(15),                   /* CONSTANT: 2                */
*   2 THREE FIXED(15),                 /* CONSTANT: 3                */
*   2 FOUR FIXED(15),                  /* CONSTANT: 4                */
*   2 FIVE FIXED(15),                  /* CONSTANT: 5                */
*   2 SEVEN FIXED(15),                 /* CONSTANT: 7                */
*   2 EIGHT FIXED(15),                 /* CONSTANT: 8                */
*   2 HTEN FIXED(15),                  /* CONSTANT: 10               */
*   2 ELEVEN FIXED(15),                /* CONSTANT: 11               */
*   2 TWELVE FIXED(15),                /* CONSTANT: 12               */
*   2 SIXTEEN FIXED(15),               /* CONSTANT: 16               */
*   2 LINENUMB FIXED(15),              /* VALUE OF LINECNT PARAMETER
*                                         IN PARM FIELD OF EXEC
*                                         STATEMENT OR DEFAULT OF 58 */
*   2 LINENUM FIXED(15),               /* VALUE OF LINECNT PARAMETER
*                                         MINUS 2                    */
*   2 SWA CHAR(1),                     /* SWITCHES                   */
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 GOSW BIT(1),                    /* GO CONTROL STATEMENT
*                                         PROCESSING IN PROGRESS     */
*    3 * BIT(1),
*    3 SETCVTSW BIT(1),                /* CVTADDR FIELD HAS BEEN FILLED
*                                         BY CVT= CONTROL STATEMENT  */
*    3 RDRSW BIT(1),                   /* CONTROL STATEMENTS COMING
*                                         FROM SYSIN DATA SET IF =1  */
*   2 SWB CHAR(1),
*    3 IOERR BIT(1),                   /* I/O ERROR WHILE READING FROM
*                                         SYSUT1 OR DUMP DATA SET    */
*    3 FMTERR BIT(1),                  /* REQUESTED INFORMATION NOT IN
*                                         DUMP DATA SET              */
*    3 * BIT(1),
*    3 * BIT(1),
*    3 ENDSW BIT(1),                   /* END CONTROL STATEMENT BEING
*                                         PROCESSED                  */
*    3 QSYSUT2 BIT(1),                 /* IF =1, SYSUT2 EXISTS       */
*    3 * BIT(1),
*    3 * BIT(1),
*   2 SWC CHAR(1),
*    3 MSTRSW BIT(1),                  /* AMDPRMST HAS ATTEMPTED DUMP
*                                         DATA SET INITIALIZATION    */
*    3 SETFLSH BIT(1),                 /* SET FLUSHMODE INDICATOR    */
*    3 POSITSW BIT(1),                 /* POSITIONING OF DUMP DATA SET
*                                         MUST BE PERFORMED          */
*    3 TREADIN BIT(1),                 /* AMDPREAD HAS BEEN LOADED   */
*    3 EDITSW BIT(1),                  /* EDIT FUNCTION IS BEING
*                                         PERFORMED                  */
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*   2 SWD CHAR(1),
*    3 FLSHMODE BIT(1),                /* CONTROL STATEMENTS ARE BEING
*                                         SCANNED FOR SYNTAX ERRORS
*                                         ONLY                       */
*    3 * BIT(1),
*    3 * BIT(1),
*    3 NOSTDMG BIT(1),                 /* DO NOT ISSUE MESSAGE AMD165I
*                                         BEFORE SERVICING CALLER'S
*                                         MESSAGE REQUEST            */
*    3 NOLOADSW BIT(1),                /* IF =1, A VERB CAME BEFORE
*                                         END VERB                   */
*    3 CONTSW BIT(1),                  /* CONTINUATION OF EDIT CONTROL
*                                         STATEMENT MUST BE OBTAINED */
*    3 GPRSFND BIT(1),                 /* PRINT GENERAL REGISTERS
*                                         CONTENTS (SADMP INPUT)     */
*    3 * BIT(1),
*   2 SWE CHAR(1),
*    3 STOPSW BIT(1),                  /* STOP OPTION SPECIFIED      */
*    3 * BIT(1),
*    3 RESPC BIT(1),                   /* USER MUST RESPECIFY EDIT
*                                         OPTIONS                    */
*    3 TITLESW BIT(1),                 /* TITLE OPTION SPECIFIED     */
*    3 BUILDMAP BIT(1),                /* AMDPREAD MUST SCAN DUMP TO
*                                         BUILD MAP(S)               */
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*   2 SWF CHAR(1),
*    3 QPRDINIT BIT(1),                /* AMDPREAD INIT. REQUIRED IF
*                                         =0                         */
*    3 NUCTFRMC BIT(1),                /* IF 1 NUCTOP IS FROM CVT    */
*    3 QSADMP BIT(1),                  /* INPUT IS FROM AMDSADMP     */
*    3 DMPIC BIT(1),                   /* ENTIRE DUMP IN BUFFERS     */
*    3 PAGEOK BIT(1),                  /* SWITCH FOR FCB             */
*    3 * BIT(1),
*    3 QUT1LOD BIT(1),                 /* SYSUT1 LOADED BY LOD       */
*    3 * BIT(1),
*   2 BUFSW CHAR(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 * BIT(1),
*    3 PREFM BIT(1),                   /* PREFORMATTED DUMP IS BEING
*                                         PROCESSED                  */
*    3 * BIT(1),
*   2 PRSW CHAR(1),
*    3 * BIT(1),
*    3 QSEGTBSW BIT(1),                /* SEGMENT TABLE ORIGIN GIVEN
*                                         BY USER                    */
*    3 * BIT(1),
*    3 TTLSW BIT(1),                   /* PRINT TITLE FROM HEADER
*                                         RECORD ON PRINTER DATA SET */
*    3 PRNTRL BIT(1),                  /* PRINT REAL VERB IS CURRENT
*                                         VERB                       */
*    3 PRNTREAL BIT(1),                /* REAL STORAGE DATA REQUESTED*/
*    3 * BIT(1),
*    3 * BIT(1),
*   2 * CHAR(3),                       /* SPARE BYTES                */
*   2 WTORMSG CHAR(81),                /* CONTROL STATEMENT INPUT
*                                         AREA                       */
*   2 BLANKS CHAR(8),                  /* 8 BYTES OF BLANKS          */
*   2 TITLE CHAR(5),                   /* CHARACTER STRING - TITLE   */
*   2 STOP CHAR(4),                    /* CHARACTER STRING - STOP    */
*   2 MSG1 CHAR(26),                   /* ID AND SKELETON OF MESSAGE
*                                         AMD161I                    */
*   2 MSG2 CHAR(26),                   /* ID AND SKELETON OF MESSAGE
*                                         AMD158I                    */
*   2 TITLEMSG CHAR(64),               /* TITLE AREA FOR USER-SUPPLIED
*                                         TITLE                      */
*   2 TITLEMOD CHAR(15),               /* LABEL AND FIELD FOR MODULE
*                                         NAME FROM DUMP DATA SET
*                                         HEADER                     */
*   2 * CHAR(2),                       /* 2 BLANKS                   */
*   2 TITLEDTE CHAR(13),               /* LABEL AND FIELD FOR DATE ON
*                                         WHICH DUMP WAS TAKEN       */
*   2 * CHAR(2),                       /* 2 BLANKS                   */
*   2 TITLETME CHAR(13),               /* LABEL AND FIELD FOR TIME AT
*                                         WHICH DUMP WAS TAKEN       */
*   2 * CHAR(2),                       /* 2 BLANKS                   */
*   2 TITLEPGE CHAR(9),                /* LABEL AND FIELD FOR PAGE
*                                         NUMBER                     */
*   2 CAPTABL CHAR(256),               /* TRANSLATE TABLE FOR TRANSLA-
*                                         TING EBCDIC LOWER CASE TO
*                                         UPPER CASE                 */
*   2 TABLE CHAR(256),                 /* TRANSLATE TABLE TO FORM
*                                         EBCDIC PRINTOUT AT RIGHT
*                                         MARGIN OF GENERAL FORMAT   */
*    3 * CHAR(63),
*    3 HEXTABL CHAR(256),              /* TRANSLATE TABLE FOR 1ST STAGE
*                                         OF CONVERSION OF BINARY
*                                         NUMBER TO CHARACTER
*                                         HEXADECIMAL                */
*     4 * CHAR(10),
*     4 EBCTABL CHAR(256),             /* TRANSLATE TABLE FOR 2ND STAGE
*                                         OF CONVERSION OF BINARY
*                                         NUMBER TO CHARACTER
*                                         HEXADECIMAL                */
*   2 * CHAR(57),
*   2 * CHAR(16),
*   2 BLNK CHAR(256),                  /* MAIN SCAN TABLE            */
*   2 NONBLNK CHAR(256),               /* TABLE FOR NON-BLANK CHAR
*                                         SCAN                       */
*
*/********************************************************************/
*/*                                                                  */
*/*      COMMON ADDRESS CONSTANTS                                    */
*/*                                                                  */
*/********************************************************************/
*
*   2 AWRITE PTR(31) BDY(WORD),        /* ADDRESS OF PRINTER DATA SET
*                                         WRITE ROUTINE AMDPRWTR     */
*   2 APRTMSG PTR(31),                 /* ADDRESS OF SYSPRINT DATA SET
*                                         WRITE ROUTINE AMDPRMSG     */
*   2 ASYNTAX PTR(31),                 /* ADDRESS OF MESSAGE WRITER
*                                         ROUTINE, AMDPRSYN          */
*   2 AFMTLINE PTR(31),                /* ADDRESS OF GENERAL FORMAT
*                                         ROUTINE, AMDPRGFR          */
*   2 AADRCNVT PTR(31),                /* ADDRESS OF 3 BYTE BINARY TO
*                                         CHARACTER HEXADECIMAL CON-
*                                         VERSION ROUTINE IN CSECT
*                                         AMDPRSYN                   */
*   2 AWRDCNVT PTR(31),                /* ADDRESS OF 4 BYTE CONVERSION
*                                         ROUTINE                    */
*   2 ARGNBND PTR(31),                 /* ADDRESS OF REGION BOUNDARY
*                                         ROUTINE                    */
*   2 STOPEXIT PTR(31),                /* ADDRESS OF CURRENT STOP EXIT
*                                         ROUTINE                    */
*   2 SYNMSGA PTR(31),                 /* ADDRESS OF SYNTAX ERROR
*                                         MESSAGE ARRAY              */
*   2 AEREXIT PTR(31),                 /* ADDRESS OF ERROR EXIT
*                                         (TERMINATION) ROUTINE      */
*   2 ALOADER PTR(31),                 /* ADDRESS OF SEGMENT LOAD
*                                         ROUTINE,AMDPRSEG           */
*   2 QATMERTN PTR(31),                /* ADDRESS OF TOD CLOCK CONVERT
*                                         ROUTINE                    */
*   2 ATCBSAVE PTR(31),                /* ADDR OF TCB SAVE ROUTINE   */
*   2 ATCBREMV PTR(31),                /* ADDR OF ROUTINE FOR REMOVING
*                                         TCBS FROM THE TCBLIST      */
*   2 ATCBRTRV PTR(31),                /* ADDR OF TCB RETREIVE RTN   */
*   2 APCBENQ PTR(31),                 /* PCB QUEUE MANAGEMENT RTN   */
*   2 ASTPROUT PTR(31),                /* ADDR OF MAIN STOP ROUTINE  */
*   2 AFORMAT PTR(31),                 /* ADDR OF ROUTINE THAT CONTROLS
*                                         THE FORMATTING OF CONTROL
*                                         BLOCKS                     */
*   2 APRTSTG PTR(31),                 /* ADDR OF PRINT STORAGE SERVICE
*                                         ROUTINE                    */
*   2 BUFSUM FIXED(31),                /* TOTAL NUMBER OF BUFFERS FOR
*                                         THIS EXECUTION             */
*   2 BUFREINT FIXED(31),              /* NUMBER OF TIMES BUFFERS WERE
*                                         INITIALIZED                */
*   2 AERRMSGA(2) PTR(31),             /* ERROR MESSAGE ARRAY        */
*   2 AEND PTR(31),                    /* ADDR OF AMDPREND           */
*   2 ONGOPTR PTR(31),                 /* POINTER TO ONGO OPERAND    */
*   2 ATCBSMFR PTR(31),                /* ADDR OF TCB SUMMARY TABLE
*                                         FREE ROUTINE               */
*   2 ATCBSMRY PTR(31),                /* ADDR OF TCB SUMMARY TABLE
*                                         PRINT ROUTINE              */
*   2 DCBADDRS CHAR(20) BDY(WORD),     /* DCB ADDRESS ARRAY          */
*    3 AOUTDCB PTR(31),                /* ADDR OF OUTPUT(PRINTER) DCB*/
*    3 APTRDCB PTR(31),                /* ADDR OF MSG(SYSPRINT) DCB  */
*    3 ARDRDCB PTR(31),                /* ADDR OF CONTROL CARD INPUT
*                                         DCB (SYSIN)                */
*    3 AINDCB PTR(31),                 /* ADDR OF INPUT DUMP DATA SET
*                                         DCB (TAPE)                 */
*    3 * PTR(31),
*     4 * CHAR(1),
*      5 ENDLIST BIT(1),               /* END OF LIST INDICATOR      */
*     4 ASYSUDCB PTR(24),              /* ADDR OF SYSUT1 OR SYSUT2
*                                         DCB                        */
*/********************************************************************/
*/*                                                                  */
*/*      AREAS NEEDED FOR GTF EDIT INTERFACE                         */
*/*                                                                  */
*/********************************************************************/
*   2 TRCCOUNT FIXED(31),              /* COUNT OF ENTRIES TO
*                                         AMDPRGET                   */
*   2 AEDITCB PTR(31),                 /* ADDR OF EDIT COMMUNICATION
*                                         AREA - AMDPRTAB            */
*   2 AROOT PTR(31),                   /* ADDR OF AMDPRTAB INIT. RTN */
*   2 EDITER CHAR(1),                  /* VALUE OF ER PARAMETER OF
*                                         EXECUTE STATEMENT          */
*   2 * CHAR(3),
*/********************************************************************/
*/*                                                                  */
*/*      ADDITIONS FOR X01980/Y01980 SUPPORT                         */
*/*                                                                  */
*/********************************************************************/
*   2 REALMAP PTR(31) BDY(WORD),       /* POINTER TO REAL DUMP MAPS  */
*   2 SEGTABOR PTR(31),                /* SEGMENT TABLE ORIGIN       */
*   2 REALMAX FIXED(31),               /* TOP OF REAL STORAGE-CVTEORM*/
*   2 * FIXED(31),                     /* SPARE WORD                 */
*   2 QAPFT PTR(31),                   /* ADDRESS OF PFT IN DUMP     */
*/********************************************************************/
*/*                                                                  */
*/*      ADDITIONS FOR Y02006 SUPPORT                                */
*/*                                                                  */
*/********************************************************************/
*   2 QASID BIT(16),                   /* ASID OF IPL'ED CPU         */
*   2 IPLCPU BIT(16),                  /* ADDRESS OF IPL'ED CPU -
*                                         CONTAINS 256 IF THE IPL'ED
*                                         CPU STATUS WAS UNAVAIBLE -
*                                         I.E. AN I/O ERROR OCCURRED
*                                         WHEN THE CPU STATUS RECORD
*                                         WAS BEING READ             */
*   2 CURASCB PTR(31),                 /* ADDR OF CURRENT ASCB IN
*                                         DUMPED SYSTEM              */
*   2 PREFXRGR PTR(31),                /* REAL ADDRESS IN PSA PREFIX
*                                         REGISTER (SADMP INPUT ONLY)*/
*   2 PREFXRGV PTR(31),                /* VIRTUAL ADDRESS IN PSA PREFIX
*                                         REGISTER (SADMP INPUT ONLY)*/
*   2 ASVTADDR PTR(31),                /* ADDR OF ASVT IN DUMPED SYS */
*   2 SACSWCAW CHAR(12),               /* CSW (FIRST 8 BYTES) AND CAW
*                                         (LAST 4 BYTES) FROM AMDSADMP
*                                         HEADER RECORD              */
*   2 HDRREGS CHAR(168),               /* REGISTERS AND CURRENT PSW
*                                         FROM SVCDUMP OR DSS HEADER */
*   2 HDRTITLE CHAR(100),              /* TITLE FROM HEADER RECORD   */
*   2 * PTR(31),                       /* SPARE WORD                 */
*   2 ASIDNDX PTR(31),                 /* POINTER TO ASID INDEX      */
*   2 CPUMAP PTR(31),                  /* POINTER TO CPU STATUS RECORD
*                                         MAPS                       */
*   2 ASCBMAP PTR(31),                 /* POINTER TO THE ASCB MAP THAT
*                                         IS CREATED BY AMDPRRDC     */
*   2 BUFERMAP PTR(31),                /* ADDRESS OF THE FIRST PHYSICAL
*                                         BUFFER MAP ENTRY IN RDC    */
*   2 BRRDDATA PTR(31),                /* ADDRESS OF AMDPRRDC READ DATA
*                                         ROUTINE                    */
*   2 BRRDINIT PTR(31),                /* ADDRESS OF BRREAD INIT
*                                         ROUTINE                    */
*   2 BRRDADJ PTR(31),                 /* ADDRESS OF BRREAD ADJUST
*                                         ROUTINE                    */
*   2 AASCBFMT PTR(31),                /* ADDRESS OF AMDPRFAR        */
*   2 ASRBFMT PTR(31),                 /* ADDRESS OF AMDPRSRB        */
*   2 AUSRINIT PTR(31),                /* ADDRESS OF AMDPRUIM INIT.
*                                         ROUTINE                    */
*   2 AUSREXIT PTR(31),                /* MAIN ENTRY POINT TO AMDPRUIM
*                                                                    */
*   2 AUSRDEL PTR(31),                 /* ENTRY POINT FOR AMDPRUIM
*                                         CLEAN-UP ROUTINE           */
*   2 AUSRTCBA PTR(31),                /* ADDR OF TCB CURRENTLY BEING
*                                         PROCESSED BY FSR           */
*   2 AUSRASID BIT(16),                /* ASID OF MEMORY CURRENTLY
*                                         BEING PROCESSED BY FSR OR
*                                         FAR                        */
*   2 EXITFLAG CHAR(1),                /* FLAGS INDICATING ACTION
*                                         AMDPRUIM IS TO PERFORM     */
*   2 * CHAR(1),
*   2 RBMAX FIXED(15),                 /* LOOP CONTROL VALUE =50     */
*   2 PQEMAX FIXED(15),                /* LOOP CONTROL VALUE =50     */
*   2 LLEMAX FIXED(15),                /* LOOP CONTROL VALUE =255    */
*   2 JPQMAX FIXED(15),                /* LOOP CONTROL VALUE =256    */
*   2 DEBMAX FIXED(15),                /* LOOP CONTROL VALUE =200    */
*   2 DDMAX FIXED(15),                 /* LOOP CONTROL VALUE =1635   */
*   2 SRBMAX FIXED(15),                /* LOOP CONTROL VALUE =50     */
    2 TCBMAX FIXED(15),            /* LOOP CONTROL VALUE=256 @ZA00413*/
*   2 ASCBMAX FIXED(15),               /* LOOP CONTROL VALUE =200    */
*   2 DQEMAX FIXED(15),                /* LOOP CONTROL VALUE =50     */
*   2 XLMAX FIXED(31) BDY(WORD),       /* LOOP CONTROL VALUE =25     */
*   2 DNUCTOP FIXED(31) BDY(WORD),     /* DEFAULT TOP OF NUCLEUS     */
*   2 LPAMAX FIXED(31) BDY(WORD),      /* LOOP CONTROL VALUE = 500   */
*   2 DFLTCSA PTR(31),                 /* DEFAULT CSA ADDRESS        */
*   2 TOPICHDR CHAR(10),               /* OPTIONAL PAGE HEADER       */
*   2 * CHAR(2),                       /* UNUSED FIELD               */
*   2 CSADDR FIXED(31),                /* CSA ADDRESS                */
*   2 I3800SW CHAR(1),                 /* SWITCHES FOR 3800 SUPPORT  */
*    3 * BIT(1),                       /* UNUSED             @Z40MI3F*/
*    3 * BIT(1),                       /* UNUSED             @Z40MI3F*/
*    3 * BIT(1),                       /* UNUSED             @Z40MI3F*/
*    3 * BIT(1),                       /* UNUSED             @Z40MI3F*/
*    3 I3800KEY BIT(1),            /* KEY MSG NEEDED        @Z40MI3F */
*    3 I3800ULN BIT(1),                 /* USER-SPEC-PAGE-LEN        */
*    3 I380080  BIT(1),                 /* LONG PAGE FORMAT          */
*    3 I3800204 BIT(1),            /* CONDENSED DUMP FORMAT @Z40MI3F */
*   2 TITLEKEY CHAR(16),           /* KEY MSG IN PGE TITLE  @Z40MI3F */
*    3 * CHAR(12),                 /* DURING CONDENSED ONLY @Z40MI3F */
*    3 TITLESTK CHAR(2),    /* STORAGE KEY VALUE             @Z4OM13F*/
*    2 Z9SVCBUF PTR(31),    /* ADDR OF SVC BUFFER            OZ09006 */
*    2 Z9SUBITS CHAR(15),   /* SU BIT STRING                 OZ09006 */
*   2 Z9SUFLG BIT(8),               /* SU FLAG               OZ09006 */
*   2 Z9ERRID CHAR(12);             /* SET FROM SVC DUMP     UZ81700 */
*
*/********************************************************************/
*/*                                                                  */
*/*       EXITFLAG VALUES                                            */
*/*                                                                  */
*/********************************************************************/
*
*DECLARE
*  ATCB BIT(8) CONSTANT('80'X),        /* ENTER FOR EACH TCB         */
*  BASID BIT(8) CONSTANT('40'X),       /* ENTER FOR EACH ASID        */
*  CFORMAT BIT(8) CONSTANT('20'X),     /* ENTER ON EACH FORMAT STMT  */
*  DCURJOB BIT(8) CONSTANT('10'X),     /* ENTER FOR PRINT CURRENT AND
*                                         PRINT JOBNAME STMT'S       */
*  ENUCLEUS BIT(8) CONSTANT('08'X),    /* ENTER FOR PRINT NUCLEUS
*                                         STMT                       */
*  ZVERB BIT(8) CONSTANT('00'X);       /* ENTER TO DECODE VERB       */
*
*/********************************************************************/
*/*                                                                  */
*/*       FMTPTRN FLAG BYTE VALUES                                   */
*/*                                                                  */
*/********************************************************************/
*
*GEN DATA;
DTAE     EQU   32                  DATA EBCDIC BIT
DTAC     EQU   16                  DATA IN CORE BIT
DTAP     EQU   8                   DATA PTR BIT
DTA      EQU   4                   DATA INCLUDED BIT
LBLP     EQU   2                   LABEL PTR BIT
LBL      EQU   1                   LABEL INCLUDED BIT
*@ENDGEN;
*
*/********************************************************************/
*/*                                                                  */
*/*       REGISTER DEFINITIONS                                       */
*/*                                                                  */
*/********************************************************************/
*
*DECLARE
*  R0 REG(0) PTR(31),                  /* GENERAL REGISTER 0         */
*  R1 REG(1) PTR(31),                  /* GENERAL REGISTER 1         */
*  R2 REG(2) PTR(31),                  /* GENERAL REGISTER 2         */
*  R3 REG(3) PTR(31),                  /* GENERAL REGISTER 3         */
*  R4 REG(4) PTR(31),                  /* GENERAL REGISTER 4         */
*  R5 REG(5) PTR(31),                  /* GENERAL REGISTER 5         */
*  R6 REG(6) PTR(31),                  /* GENERAL REGISTER 6         */
*  R7 REG(7) PTR(31),                  /* GENERAL REGISTER 7         */
*  R8 REG(8) PTR(31),                  /* GENERAL REGISTER 8         */
*  R9 REG(9) PTR(31),                  /* GENERAL REGISTER 9         */
*  R10 REG(10) PTR(31),                /* GENERAL REGISTER 10        */
*  R11 REG(11) PTR(31),                /* GENERAL REGISTER 11        */
*  R12 REG(12) PTR(31),                /* GENERAL REGISTER 12        */
*  R13 REG(13) PTR(31),                /* GENERAL REGISTER 13        */
*  R14 REG(14) PTR(31),                /* GENERAL REGISTER 14        */
*  R15 REG(15) PTR(31),                /* GENERAL REGISTER 15        */
*  COMBASE REG(12) PTR(31),            /* COMMON AREA BASE REGISTER  */
*  BASE1 REG(11) PTR(31),              /* BASE REGISTER              */
*  BASE2 REG(10) PTR(31),              /* SECOND BASE REGISTER       */
*  BASE3 REG(9) PTR(31),               /* THIRD BASE REGISTER        */
*  STOPBASE REG(5) PTR(31),            /* STOP EXIT BASE REGISTER    */
*  LINEREG REG(8) PTR(31),             /*                            */
*  BUFREG REG(6) PTR(31),              /* POINTER TO OUTPUT BUFFER   */
*  CNTREG REG(3) PTR(31),              /*                            */
*  PREG REG(1) PTR(31);                /* PARAMETER REGISTER         */
*
./ ADD NAME=CONTAINS
         MACRO
&PHASEID CONTAINS  &DUMMY
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.* INNER MACRO TO ICOMMON USED TO CREATE AN EXTERNAL
.* ROUTINE NAME ARRAY
         GBLC  &X0(26)
         GBLC  &X1(26)
         GBLC  &X2(26)
         GBLC  &X3(26)
         GBLC  &X4(26)
         GBLC  &X5(26)
         GBLC  &X6(26)
         GBLC  &X7(26)
         GBLC  &X8(26)
         GBLC  &X9(26)
         GBLC  &XA(26)
         GBLC  &XB(26)
         GBLC  &XC(26)
         GBLC  &XD(26)
         GBLC  &XE(26)
         GBLC  &XF(26)
.*
         LCLA  &I,&J                    INDEX
.*
         AIF   (K'&PHASEID EQ 0).ERR1
.*
         AIF   ('&X0(1)' EQ '').X0
         AIF   ('&X0(1)' EQ '&PHASEID').ERR5
         AIF   ('&X1(1)' EQ '').X1
         AIF   ('&X1(1)' EQ '&PHASEID').ERR5
         AIF   ('&X2(1)' EQ '').X2
         AIF   ('&X2(1)' EQ '&PHASEID').ERR5
         AIF   ('&X3(1)' EQ '').X3
         AIF   ('&X3(1)' EQ '&PHASEID').ERR5
         AIF   ('&X4(1)' EQ '').X4
         AIF   ('&X4(1)' EQ '&PHASEID').ERR5
         AIF   ('&X5(1)' EQ '').X5
         AIF   ('&X5(1)' EQ '&PHASEID').ERR5
         AIF   ('&X6(1)' EQ '').X6
         AIF   ('&X6(1)' EQ '&PHASEID').ERR5
         AIF   ('&X7(1)' EQ '').X7
         AIF   ('&X7(1)' EQ '&PHASEID').ERR5
         AIF   ('&X8(1)' EQ '').X8
         AIF   ('&X8(1)' EQ '&PHASEID').ERR5
         AIF   ('&X9(1)' EQ '').X9
         AIF   ('&X9(1)' EQ '&PHASEID').ERR5
         AIF   ('&XA(1)' EQ '').XA
         AIF   ('&XA(1)' EQ '&PHASEID').ERR5
         AIF   ('&XB(1)' EQ '').XB
         AIF   ('&XB(1)' EQ '&PHASEID').ERR5
         AIF   ('&XC(1)' EQ '').XC
         AIF   ('&XC(1)' EQ '&PHASEID').ERR5
         AIF   ('&XD(1)' EQ '').XD
         AIF   ('&XD(1)' EQ '&PHASEID').ERR5
         AIF   ('&XE(1)' EQ '').XE
         AIF   ('&XE(1)' EQ '&PHASEID').ERR5
         AIF   ('&XF(1)' EQ '').XF
         AIF   ('&XF(1)' EQ '&PHASEID').ERR5
.*
         AGO   .ERR4
.*
.X0      ANOP
&X0(1)   SETC  '&PHASEID'
.X01     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X01
         AIF   (&J GT 24).ERR6
&X0(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X01
.*
.X1      ANOP
&X1(1)   SETC  '&PHASEID'
.X11     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X11
         AIF   (&J GT 24).ERR6
&X1(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X11
.*
.X2      ANOP
&X2(1)   SETC  '&PHASEID'
.X21     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X21
         AIF   (&J GT 24).ERR6
&X2(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X21
.*
.X3      ANOP
&X3(1)   SETC  '&PHASEID'
.X31     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X31
         AIF   (&J GT 24).ERR6
&X3(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X31
.*
.X4      ANOP
&X4(1)   SETC  '&PHASEID'
.X41     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X41
         AIF   (&J GT 24).ERR6
&X4(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X41
.*
.X5      ANOP
&X5(1)   SETC  '&PHASEID'
.X51     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X51
         AIF   (&J GT 24).ERR6
&X5(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X51
.*
.X6      ANOP
&X6(1)   SETC  '&PHASEID'
.X61     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X61
         AIF   (&J GT 24).ERR6
&X6(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X61
.*
.X7      ANOP
&X7(1)   SETC  '&PHASEID'
.X71     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X71
         AIF   (&J GT 24).ERR6
&X7(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X71
.*
.X8      ANOP
&X8(1)   SETC  '&PHASEID'
.X81     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X81
         AIF   (&J GT 24).ERR6
&X8(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X81
.*
.X9      ANOP
&X9(1)   SETC  '&PHASEID'
.X91     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').X91
         AIF   (&J GT 24).ERR6
&X9(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .X91
.*
.XA      ANOP
&XA(1)   SETC  '&PHASEID'
.XA1     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').XA1
         AIF   (&J GT 24).ERR6
&XA(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .XA1
.*
.XB      ANOP
&XB(1)   SETC  '&PHASEID'
.XB1     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').XB1
         AIF   (&J GT 24).ERR6
&XB(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .XB1
.*
.XC      ANOP
&XC(1)   SETC  '&PHASEID'
.XC1     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').XC1
         AIF   (&J GT 24).ERR6
&XC(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .XC1
.*
.XD      ANOP
&XD(1)   SETC  '&PHASEID'
.XD1     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').XD1
         AIF   (&J GT 24).ERR6
&XD(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .XD1
.*
.XE      ANOP
&XE(1)   SETC  '&PHASEID'
.XE1     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').XE1
         AIF   (&J GT 24).ERR6
&XE(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .XE1
.*
.XF      ANOP
&XF(1)   SETC  '&PHASEID'
.XF1     AIF   (&I+1 GT N'&SYSLIST).END
&I       SETA  &I+1
         AIF   ('&SYSLIST(&I)' EQ '').XF1
         AIF   (&J GT 24).ERR6
&XF(&J+2) SETC '&SYSLIST(&I)'
&J       SETA  &J+1
         AGO   .XF1
.*
.ERR1    MNOTE 8,'INVALID OR NO PHASEID FURNISHED.'
         MEXIT
.ERR4    MNOTE 8,'EXTERNAL ROUTINE NAME ARRAYS FULL.'
         MEXIT
.ERR5    MNOTE 8,'DUPLICATE PHASEID.'
         MEXIT
.ERR6    MNOTE 8,'TOO MANY NAMES.'
         MEXIT
.END     AIF   (&J GT 0).MEND
         MNOTE 0,'NO ROUTINE NAMES FURNISHED.'
.MEND    MEND
./ ADD NAME=CONTENTS
         MACRO
&PHASEID CONTENTS  &DUMMY
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* GENERATES A BRANCH TABLE IN IFNX4E TO THE ROUTINES
.* CONTAINED IN IFNX4E
         GBLC  &X0(26)
         GBLC  &X1(26)
         GBLC  &X2(26)
         GBLC  &X3(26)
         GBLC  &X4(26)
         GBLC  &X5(26)
         GBLC  &X6(26)
         GBLC  &X7(26)
         GBLC  &X8(26)
         GBLC  &X9(26)
         GBLC  &XA(26)
         GBLC  &XB(26)
         GBLC  &XC(26)
         GBLC  &XD(26)
         GBLC  &XE(26)
         GBLC  &XF(26)
.*
         LCLA  &I
.*
         AIF   (K'&PHASEID EQ 0).ERR1
.*
&PHASEID DS    0H                       START OF BRANCH TABLE
         USING &PHASEID,R12
.*
         AIF   ('&X0(1)' EQ '&PHASEID').X0
         AIF   ('&X1(1)' EQ '&PHASEID').X1
         AIF   ('&X2(1)' EQ '&PHASEID').X2
         AIF   ('&X3(1)' EQ '&PHASEID').X3
         AIF   ('&X4(1)' EQ '&PHASEID').X4
         AIF   ('&X5(1)' EQ '&PHASEID').X5
         AIF   ('&X6(1)' EQ '&PHASEID').X6
         AIF   ('&X7(1)' EQ '&PHASEID').X7
         AIF   ('&X8(1)' EQ '&PHASEID').X8
         AIF   ('&X9(1)' EQ '&PHASEID').X9
         AIF   ('&XA(1)' EQ '&PHASEID').XA
         AIF   ('&XB(1)' EQ '&PHASEID').XB
         AIF   ('&XC(1)' EQ '&PHASEID').XC
         AIF   ('&XD(1)' EQ '&PHASEID').XD
         AIF   ('&XE(1)' EQ '&PHASEID').XE
         AIF   ('&XF(1)' EQ '&PHASEID').XF
.*
         AGO   .ERR4
.*
.X0      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X0(&I+1)' EQ '').END
         B     &X0(&I+1)
         AGO   .X0
.*
.X1      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X1(&I+1)' EQ '').END
         B     &X1(&I+1)
         AGO   .X1
.*
.X2      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X2(&I+1)' EQ '').END
         B     &X2(&I+1)
         AGO   .X2
.*
.X3      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X3(&I+1)' EQ '').END
         B     &X3(&I+1)
         AGO   .X3
.*
.X4      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X4(&I+1)' EQ '').END
         B     &X4(&I+1)
         AGO   .X4
.*
.X5      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X5(&I+1)' EQ '').END
         B     &X5(&I+1)
         AGO   .X5
.*
.X6      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X6(&I+1)' EQ '').END
         B     &X6(&I+1)
         AGO   .X6
.*
.X7      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X7(&I+1)' EQ '').END
         B     &X7(&I+1)
         AGO   .X7
.*
.X8      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X8(&I+1)' EQ '').END
         B     &X8(&I+1)
         AGO   .X8
.*
.X9      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&X9(&I+1)' EQ '').END
         B     &X9(&I+1)
         AGO   .X9
.*
.XA      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&XA(&I+1)' EQ '').END
         B     &XA(&I+1)
         AGO   .XA
.*
.XB      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&XB(&I+1)' EQ '').END
         B     &XB(&I+1)
         AGO   .XB
.*
.XC      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&XC(&I+1)' EQ '').END
         B     &XC(&I+1)
         AGO   .XC
.*
.XD      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&XD(&I+1)' EQ '').END
         B     &XD(&I+1)
         AGO   .XD
.*
.XE      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&XE(&I+1)' EQ '').END
         B     &XE(&I+1)
         AGO   .XE
.*
.XF      AIF   (&I GT 24).END
&I       SETA  &I+1
         AIF   ('&XF(&I+1)' EQ '').END
         B     &XF(&I+1)
         AGO   .XF
.*
.ERR1    MNOTE 8,'INVALID OR NO PHASEID FURNISHED.'
         MEXIT
.ERR4    MNOTE 8,'UNDEFINED PHASEID.'
.END     DROP  R12
         AIF   (&I NE 0).MEND
.ERR5    MNOTE 4,'NO ROUTINE NAME DEFINED FOR PHASE.'
.MEND    MEND
./ ADD NAME=CONTIME
         MACRO
&NAME    CONTIME &TIMER=,&LOCAL=YES,&STCLOCK=YES
* MACCOMP-SC1CM
* MACSTAT-@G17EP5W
* MACMEAN-CONVERT TIMER TO BINARY NUMBER REPRESENTING HH.MM.SS.T
         LCLB   &B        FLAG TO DETERMINE CODE GENERATION
&NAME    DS     0H
         AIF    ('&LOCAL' EQ 'YES' OR '&LOCAL' EQ 'NO').NEXT1
&B       SETB   (1)       SET FLAG TO TERMINATE
         IHBERMAC 54,,&LOCAL
.NEXT1   AIF    ('&STCLOCK' EQ 'YES' OR '&STCLOCK' EQ 'NO').NEXT2
&B       SETB   (1)       SET FLAG TO TERMINATE
         IHBERMAC 54,,&STCLOCK
.NEXT2   AIF   ('&TIMER' NE '').CONTNUE
&B       SETB  (1)        SET FLAG TO TERMINATE
         MNOTE 12,'THE NAME OF AN EIGHT CHARACTER FIELD WHICH CONTAINS C
                THE TIME VALUE TO BE CONVERTED MUST BE SPECIFIED.'
.CONTNUE AIF   (&B).EXIT  ANY ERRORS FOUND--EXIT
         AIF   ('&LOCAL' NE 'YES').NOLOC   LOCAL TIME REQUIRED
         L     1,CVTPTR                GET ADDRESS OF CVT TO ACCESS
         L     0,CVTTZ(1)              LOCAL TIME DIFFERENCE
.NOLOC   IHBINNRA &TIMER               LOAD REG 1 WITH ADDRESS
         AIF   ('&STCLOCK' EQ 'NO').NEXT3 NEED TO GET TOD VALUE?
         STCK  0(1)                    GET TOD CLOCK VALUE
         BC    8,IHBA&SYSNDX           IF SUCCESSFUL,CONVERT VALUE
         LA    0,4                     UNSUCCESFUL, SET BAD RETURN CODE
         SR    1,1                     UNSUCCESSFUL,SET ANSWER TO ZERO
         B     IHBB&SYSNDX             AND EXIT
.NEXT3   ANOP
IHBA&SYSNDX  L  1,0(1)                 GET HIGH ORDER WORD FROM TOD
         AIF   ('&LOCAL' NE 'YES').GMEANTM LOCAL TIME REQUIRED
         AR    1,0                     CHANGE TO LOCAL TIME
.GMEANTM SR    0,0                     ZERO EVEN REGISTER
         SLDL  0,7                     MULTIPLY BY 2**7
         CNOP  0,4                     BRANCH AROUND CONSTANTS
         B     *+8                     BRANCH AROUND CONSTANTS
         DC    F'10546875'             CONSTANT VALUE K
         D     0,*-4                   EVEN REG HAS 2**7 * NBR 2**20
*                                      U-SEC SINCE MIDNIGHT
         SRL   0,7                     FACTOR OUT 2**7 VALUE
         IHBINNRA &TIMER               LOAD ADDRESS IN REG 1
         L     1,4(1)                  GET LOW ORDER TOD VALUE
         SRDL  0,12                    REMOVE LOW ORDER BITS TO GET
*                                      RESOLUTION TO 1 MICRO-SEC
         D     0,=F'100000'            GET RESOLUTION TO .1 SEC IN
*                                      REG 1
         LTR   1,1                     IF RESULT ^= EXACTLY MIDNIGHT
         BC    7,IHBC&SYSNDX           USE THAT VALUE, OTHERWISE
         LA    1,1                     SET TO 1 INCREMENT PAST MIDNITE
IHBC&SYSNDX SR    0,0                  SET RETURN CODE TO GOOD
IHBB&SYSNDX DS   0H
.EXIT    MEXIT
         MEND
./ ADD NAME=COUNT
*  /*
         MACRO
&LABEL   COUNT &NAME,&T=,&SK=,&INDEX=,&EQU=
.**********************************************************************
.*
.*       THIS SECTION CREATES A LABEL IF ONE IS NOT PASSED
.*       LABEL IS OF THE FORM AA**CODE (AA IS FIXED,** IS AN
.*       ALPHANUMERIC OR NATIONAL CHARACTER, AND CODE IS THE
.*       MONITOR CODE FOR THIS COUNTER)
.*
.**********************************************************************
         GBLA   &B,&E
         LCLC   &C,&D,&CODE,&NEW,&CTCL
&C       SETC   '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$#@'
&CTCL    SETC   ',CTCLASS            SYMBOLIC ID '
         AIF    ('&LABEL' NE '').NOLABL
&B       SETA   &B+1
         AIF    (&B LE 39).INXOK
&E       SETA   &E+1
&B       SETA   1
         AIF    (&E LE 39).INXOK
&E       SETA   1
.INXOK   ANOP
&D       SETC   'AA'.'&C'(&B,1).'&C'(&E+1,1)
.NOLABL  ANOP
.**********************************************************************
.*                                                                    *
.*       MACRO-NAME = COUNT                                           *
.*                                                                    *
.*       DESCRIPTIVE-NAME = PERFORMANCE COUNTER MACRO                 *
.*                                                                    *
.*       COPYRIGHT = * 5740-XYN COPYRIGHT IBM CORP. 1980,             *
.*                   * LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,    *
.*                   * REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER    *
.*                   * G120-2083.                                     *
.*                                                                    *
.*       STATUS = OS/VS2 JBB1326                                      *
.*                                                                    *
.*       FUNCTION = ISSUES A MONITOR CALL INSTRUCTION FOR PERFORMANCE *
.*                  MEASUREMENT. THE MONITOR CALL INSTRUCTION IS OF   *
.*                  CLASS 7 WITH NO BASE REGISTER AND AN OFFSET       *
.*                  GENERATED BY THIS MACRO                           *
.*                                                                    *
.*                                                                    *
.*       MACRO-FORMAT = '&LABEL COUNT &NAME'                          *
.*                      WHERE:                                        *
.*                            &LABEL-OPTIONAL MACRO LABEL,            *
.*                            COUNT -MACRO NAME,                      *
.*                            &NAME -MANDATORY COUNTER NAME.          *
.*                                                                    *
.*                      NOTE: 4 PARAMETERS T, INDEX, SK AND EQU ARE   *
.*                            NO LONGER SUPPORTED BY THIS MACRO.      *
.*                                                                    *
.*       REGISTER-USAGE = NONE                                        *
.*                                                                    *
.*       GLOBAL-SYMBOL-USAGE = CTSWCH (FIRST TIME THRU SWITCH)        *
.*                                                                    *
.*       EQUATES-GENERATED = CTCLASS (MONITOR CALL CLASS)             *
.*                                                                    *
.*       CHANGE-ACTIVITY = NONE                                       *
.*                                                                    *
.*       MNOTES-GENERATED = NO COUNTER SPECIFIED,                     *
.*                          INVALID COUNTER SPECIFIED.                *
.*                                                                    *
.**********************************************************************
.*
.* A-000000-999999                                             @G38AP28
*                                      MACDATE 81.030
.*
.**********************************************************************
.*
.*       THIS SECTION:
.*       CHECKS FOR THE EXISTENCE OF THE NAME PARAMETER,
.*       CHECKS FOR OBSOLETE KEYWORD PARAMETERS AND THE FIRST TIME
.*       TIME THRU GENERATES THE CTCLASS EQUATE.
.*
.**********************************************************************
         AIF   ('&SYSLIST(1)' NE '').NAMEERR IF NO &NAME PARM IS GIVEN
.*                                           WRITE MNOTE & EXIT
         MNOTE 8,'*** COUNTER NOT SPECIFIED'
         MEXIT
.NAMEERR ANOP
         AIF   (T'&T EQ 'O').TEST   TST FOR OBSOLETE PARM, BRANCH ON NO
*** OBSOLETE PARM, T , USED IN COUNT MACRO
.TEST    ANOP
         AIF   (T'&INDEX EQ 'O').INDEX    TST FOR OLD PARM BRANCH ON NO
*** OBSOLETE PARM, INDEX, USED IN COUNT MACRO
.INDEX   ANOP
         AIF   (T'&SK EQ 'O').OLDSK  TST FOR OBSOLETE PARM BRANCH ON NO
*** OBSOLETE PARM, SK, USED IN COUNT MACRO
.OLDSK   ANOP
         AIF   (T'&EQU EQ 'O').EQU   TST FOR OBSOLETE PARM BRANCH ON NO
*** OBSOLETE PARM, EQU, USED IN COUNT MACRO
.EQU     ANOP
         GBLB &CTSWCH                CTSWCH IS A FIRST TIME THRU SWITCH
         AIF (&CTSWCH).ONCE        BRANCH TO ONCE EXCEPT FOR FIRST TIME
&CTSWCH  SETB 1              SET CTSWCH ONE DOES NOT GO THRU HERE TWICE
CTCLASS  EQU  7                        COUNT MONITOR CALL CLASS EQUATE
.ONCE    ANOP
.*
.**********************************************************************
.*
.* THE NEXT SECTION EXPANDS THE MONITOR CALL INSTRUCTION FOR
.* EACH  VALID  COUNTER
.*
.* NOTE: 0000-1023 ALLOCATED TO SVC COUNTERS
.*       1024-2999 ALLOCATED TO GENERAL COUNTERS
.*       3000-3129 ALLOCATED TO TEMPORARY COUNTERS
.*       3130-3839 ALLOCATED TO SPECIAL COUNTERS
.*       3840-4095 RESERVED FOR THE CUSTOMER PER STANDARD
.*
.**********************************************************************
         AIF ('&NAME' NE 'MSTPGR').N1024    IRARMST2 NEW FOR SU74
&CODE    SETC '1024'                   SYMBOLIC ID MSTPGR
         AGO   .ENDCAL
.N1024   ANOP
         AIF ('&NAME' NE 'SY5PT1').N1027    IEAVSY50 ADDED PRIOR TO SP1
&CODE    SETC '1027'                   SYMBOLIC ID SY5PT1
         AGO   .ENDCAL
.N1027   ANOP
         AIF ('&NAME' NE 'SY5PT2').N1028    IEAVSY50 ADDED PRIOR TO SP1
&CODE    SETC '1028'                   SYMBOLIC ID SY5PT2
         AGO   .ENDCAL
.N1028   ANOP
         AIF ('&NAME' NE 'SY5SRB').N1029    IEAVSY50 ADDED PRIOR TO SP1
&CODE    SETC '1029'                   SYMBOLIC ID SY5SRB
         AGO   .ENDCAL
.N1029   ANOP
         AIF ('&NAME' NE 'SY5WAT').N1030    IEAVSY50 ADDED PRIOR TO SP1
&CODE    SETC '1030'                   SYMBOLIC ID SY5WAT
         AGO   .ENDCAL
.N1030   ANOP
         AIF ('&NAME' NE 'SY5WT').N1033     IEAVSY50 ADDED PRIOR TO SP1
&CODE    SETC '1033'                   SYMBOLIC ID SY5WT
         AGO   .ENDCAL
.N1033   ANOP
         AIF ('&NAME' NE 'SY5PST').N1034    IEAVSY50 ADDED PRIOR TO SP1
&CODE    SETC '1034'                   SYMBOLIC ID SY5PST
         AGO   .ENDCAL
.N1034   ANOP
         AIF ('&NAME' NE 'TIMSRB').N1035    IEAVRT03 ADDED FOR SP1.2
&CODE    SETC '1035'                   SYMBOLIC ID TIMSRB
         AGO   .ENDCAL
.N1035   ANOP
         AIF ('&NAME' NE 'RSMIPT').N1037    IEAVPSI  ADDED PRIOR TO SP1
&CODE    SETC '1037'                   SYMBOLIC ID RSMIPT
         AGO   .ENDCAL
.N1037   ANOP
         AIF ('&NAME' NE 'RSMFXI').N1038    IEAVPSI  ADDED PRIOR TO SP1
&CODE    SETC '1038'                   SYMBOLIC ID RSMFXI
         AGO   .ENDCAL
.N1038   ANOP
         AIF ('&NAME' NE 'RSMFYI').N1039    IEAVPSI  ADDED PRIOR TO SP1
&CODE    SETC '1039'                   SYMBOLIC ID RSMFYI
         AGO   .ENDCAL
.N1039   ANOP
         AIF ('&NAME' NE 'RSMFXR').N1040    IEAVPSI  ADDED PRIOR TO SP1
&CODE    SETC '1040'                   SYMBOLIC ID RSMFXR
         AGO   .ENDCAL
.N1040   ANOP
         AIF ('&NAME' NE 'RSMFXL').N1041    IEAVPSI  ADDED PRIOR TO SP1
&CODE    SETC '1041'                   SYMBOLIC ID RSMFXL
         AGO   .ENDCAL
.N1041   ANOP
         AIF ('&NAME' NE 'RSMFRE').N1042    IEAVPSI  ADDED PRIOR TO SP1
&CODE    SETC '1042'                   SYMBOLIC ID RSMFRE
         AGO   .ENDCAL
.N1042   ANOP
         AIF ('&NAME' NE 'RSMXPF').N1043    IEAVPSI  ADDED FOR SP1.2
&CODE    SETC '1043'                   SYMBOLIC ID RSMXPF
         AGO   .ENDCAL
.N1043   ANOP
         AIF ('&NAME' NE 'RSMXPR').N1044    IEAVPSI  ADDED FOR SP1.2
&CODE    SETC '1044'                   SYMBOLIC ID RSMXPR
         AGO   .ENDCAL
.N1044   ANOP
         AIF ('&NAME' NE 'RSMSGP').N1045    IEAVINV  ADDED PRIOR TO SP1
&CODE    SETC '1045'                   SYMBOLIC ID RSMSGP
         AGO   .ENDCAL
.N1045   ANOP
         AIF ('&NAME' NE 'RSMPTB').N1046    IEAVINV  ADDED PRIOR TO SP1
&CODE    SETC '1046'                   SYMBOLIC ID RSMPTB
         AGO   .ENDCAL
.N1046   ANOP
         AIF ('&NAME' NE 'STMAQ1').N1047    IRARMEVT ADDED PRIOR TO SP1
&CODE    SETC '1047'                   SYMBOLIC ID STMAQ1
         AGO   .ENDCAL
.N1047   ANOP
         AIF ('&NAME' NE 'STMAQ2').N1048    IRARMEVT ADDED PRIOR TO SP1
&CODE    SETC '1048'                   SYMBOLIC ID STMAQ2
         AGO   .ENDCAL
.N1048   ANOP
         AIF ('&NAME' NE 'STMAQ4').N1050    IRARMEVT ADDED PRIOR TO SP1
&CODE    SETC '1050'                   SYMBOLIC ID STMAQ4
         AGO   .ENDCAL
.N1050   ANOP
         AIF ('&NAME' NE 'STMSFS').N1051    IRARMEVT NEW FOR SU74
&CODE    SETC '1051'                   SYMBOLIC ID STMSFS
         AGO   .ENDCAL
.N1051   ANOP
         AIF ('&NAME' NE 'ERILTR').N1052    IEAVERI  ADDED PRIOR TO SP1
&CODE    SETC '1052'                   SYMBOLIC ID ERILTR
         AGO   .ENDCAL
.N1052   ANOP
         AIF ('&NAME' NE 'ERIWIN').N1053    IEAVERI  ADDED PRIOR TO SP1
&CODE    SETC '1053'                   SYMBOLIC ID ERIWIN
         AGO   .ENDCAL
.N1053   ANOP
         AIF ('&NAME' NE 'EXSSP').N1054     IEAVEXS  ADDED PRIOR TO SP1
&CODE    SETC '1054'                   SYMBOLIC ID EXSSP
         AGO   .ENDCAL
.N1054   ANOP
         AIF ('&NAME' NE 'EXSMS').N1055     IEAVEXS  ADDED PRIOR TO SP1
&CODE    SETC '1055'                   SYMBOLIC ID EXSMS
         AGO   .ENDCAL
.N1055   ANOP
         AIF ('&NAME' NE 'MS0SWP').N1056    IEAVEMS0 ADDED PRIOR TO SP1
&CODE    SETC '1056'                   SYMBOLIC ID MS0SWP
         AGO   .ENDCAL
.N1056   ANOP
         AIF ('&NAME' NE 'MS0NWT').N1057    IEAVEMS0 ADDED PRIOR TO SP1
&CODE    SETC '1057'                   SYMBOLIC ID MS0NWT
         AGO   .ENDCAL
.N1057   ANOP
         AIF ('&NAME' NE 'DSPGS').N1058     IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1058'                   SYMBOLIC ID DSPGS
         AGO   .ENDCAL
.N1058   ANOP
         AIF ('&NAME' NE 'DSPLS').N1059     IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1059'                   SYMBOLIC ID DSPLS
         AGO   .ENDCAL
.N1059   ANOP
         AIF ('&NAME' NE 'DSPSSB').N1060    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1060'                   SYMBOLIC ID DSPSSB
         AGO   .ENDCAL
.N1060   ANOP
         AIF ('&NAME' NE 'DSPTCB').N1061    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1061'                   SYMBOLIC ID DSPTCB
         AGO   .ENDCAL
.N1061   ANOP
         AIF ('&NAME' NE 'DSPWT').N1062     IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1062'                   SYMBOLIC ID DSPWT
         AGO   .ENDCAL
.N1062   ANOP
         AIF ('&NAME' NE 'DSPILS').N1063    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1063'                   SYMBOLIC ID DSPILS
         AGO   .ENDCAL
.N1063   ANOP
         AIF ('&NAME' NE 'DSPGIS').N1064    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1064'                   SYMBOLIC ID DSPGIS
         AGO   .ENDCAL
.N1064   ANOP
         AIF ('&NAME' NE 'DSPGIF').N1065    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1065'                   SYMBOLIC ID DSPGIF
         AGO   .ENDCAL
.N1065   ANOP
         AIF ('&NAME' NE 'DSPSLL').N1067    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1067'                   SYMBOLIC ID DSPSLL
         AGO   .ENDCAL
.N1067   ANOP
         AIF ('&NAME' NE 'DSPDSL').N1068    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1068'                   SYMBOLIC ID DSPDSL
         AGO   .ENDCAL
.N1068   ANOP
         AIF ('&NAME' NE 'DSPSFR').N1069    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1069'                   SYMBOLIC ID DSPSFR
         AGO   .ENDCAL
.N1069   ANOP
         AIF ('&NAME' NE 'DSPSGQ').N1070    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1070'                   SYMBOLIC ID DSPSGQ
         AGO   .ENDCAL
.N1070   ANOP
         AIF ('&NAME' NE 'DSPSLQ').N1071    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1071'                   SYMBOLIC ID DSPSLQ
         AGO   .ENDCAL
.N1071   ANOP
         AIF ('&NAME' NE 'DSPLLA').N1072    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1072'                   SYMBOLIC ID DSPLLA
         AGO   .ENDCAL
.N1072   ANOP
         AIF ('&NAME' NE 'DSPLLN').N1073    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1073'                   SYMBOLIC ID DSPLLN
         AGO   .ENDCAL
.N1073   ANOP
         AIF ('&NAME' NE 'DSPLIC').N1074    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1074'                   SYMBOLIC ID DSPLIC
         AGO   .ENDCAL
.N1074   ANOP
         AIF ('&NAME' NE 'DSPLIS').N1075    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1075'                   SYMBOLIC ID DSPLIS
         AGO   .ENDCAL
.N1075   ANOP
         AIF ('&NAME' NE 'DSPTLS').N1076    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1076'                   SYMBOLIC ID DSPTLS
         AGO   .ENDCAL
.N1076   ANOP
         AIF ('&NAME' NE 'DSPTLF').N1077    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1077'                   SYMBOLIC ID DSPTLF
         AGO   .ENDCAL
.N1077   ANOP
         AIF ('&NAME' NE 'DSPFP').N1078     IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1078'                   SYMBOLIC ID DSPFP
         AGO   .ENDCAL
.N1078   ANOP
         AIF ('&NAME' NE 'DSPNEW').N1079    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1079'                   SYMBOLIC ID DSPNEW
         AGO   .ENDCAL
.N1079   ANOP
         AIF ('&NAME' NE 'DSPSS').N1080     IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1080'                   SYMBOLIC ID DSPSS
         AGO   .ENDCAL
.N1080   ANOP
         AIF ('&NAME' NE 'DSPFSS').N1081    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1081'                   SYMBOLIC ID DSPFSS
         AGO   .ENDCAL
.N1081   ANOP
         AIF ('&NAME' NE 'DSPTLE').N1082    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1082'                   SYMBOLIC ID DSPTLE
         AGO   .ENDCAL
.N1082   ANOP
         AIF ('&NAME' NE 'DSPRCS').N1083    IEAVEDS0 ADDED PRIOR TO SP1
&CODE    SETC '1083'                   SYMBOLIC ID DSPRCS
         AGO   .ENDCAL
.N1083   ANOP
         AIF ('&NAME' NE 'DSPTML').N1084    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1084'                   SYMBOLIC ID DSPTML
         AGO   .ENDCAL
.N1084   ANOP
         AIF ('&NAME' NE 'DSPSML').N1085    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1085'                   SYMBOLIC ID DSPSML
         AGO   .ENDCAL
.N1085   ANOP
         AIF ('&NAME' NE 'DSPCMI').N1086    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1086'                   SYMBOLIC ID DSPCMI
         AGO   .ENDCAL
.N1086   ANOP
         AIF ('&NAME' NE 'DSPIAF').N1087    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1087'                   SYMBOLIC ID DSPIAF
         AGO   .ENDCAL
.N1087   ANOP
         AIF ('&NAME' NE 'ELKTLS').N1088    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1088'                   SYMBOLIC ID ELKTLS
         AGO   .ENDCAL
.N1088   ANOP
         AIF ('&NAME' NE 'ELKTCS').N1089    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1089'                   SYMBOLIC ID ELKTCS
         AGO   .ENDCAL
.N1089   ANOP
         AIF ('&NAME' NE 'ELKSLS').N1090    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1090'                   SYMBOLIC ID ELKSLS
         AGO   .ENDCAL
.N1090   ANOP
         AIF ('&NAME' NE 'ELKSCS').N1091    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1091'                   SYMBOLIC ID ELKSCS
         AGO   .ENDCAL
.N1091   ANOP
         AIF ('&NAME' NE 'ELKTWS').N1092    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1092'                   SYMBOLIC ID ELKTWS
         AGO   .ENDCAL
.N1092   ANOP
         AIF ('&NAME' NE 'ELKBCT').N1093    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1093'                   SYMBOLIC ID ELKBCT
         AGO   .ENDCAL
.N1093   ANOP
         AIF ('&NAME' NE 'ELKHCK').N1094    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1094'                   SYMBOLIC ID ELKHCK
         AGO   .ENDCAL
.N1094   ANOP
         AIF ('&NAME' NE 'ELKWIN').N1095    IEAVELK  ADDED PRIOR TO SP1
&CODE    SETC '1095'                   SYMBOLIC ID ELKWIN
         AGO   .ENDCAL
.N1095   ANOP
         AIF ('&NAME' NE 'ELKMOA').N1096    IEAVELK  ADDED FOR SP1.2
&CODE    SETC '1096'                   SYMBOLIC ID ELKMOA
         AGO   .ENDCAL
.N1096   ANOP
         AIF ('&NAME' NE 'ELKMRA').N1097    IEAVELK  ADDED FOR SP1.2
&CODE    SETC '1097'                   SYMBOLIC ID ELKMRA
         AGO   .ENDCAL
.N1097   ANOP
         AIF ('&NAME' NE 'ELKMOS').N1098    IEAVELK  ADDED FOR SP1.2
&CODE    SETC '1098'                   SYMBOLIC ID ELKMOS
         AGO   .ENDCAL
.N1098   ANOP
         AIF ('&NAME' NE 'ELKSPL').N1099    IEAVELK  ADDED FOR SP1.2
&CODE    SETC '1099'                   SYMBOLIC ID ELKSPL
         AGO   .ENDCAL
.N1099   ANOP
         AIF ('&NAME' NE 'EPCSI1').N1100    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1100'                   SYMBOLIC ID EPCSI1
         AGO   .ENDCAL
.N1100   ANOP
         AIF ('&NAME' NE 'EPCSI2').N1101    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1101'                   SYMBOLIC ID EPCSI2
         AGO   .ENDCAL
.N1101   ANOP
         AIF ('&NAME' NE 'EPCSI3').N1102    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1102'                   SYMBOLIC ID EPCSI3
         AGO   .ENDCAL
.N1102   ANOP
         AIF ('&NAME' NE 'EPCSI4').N1103    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1103'                   SYMBOLIC ID EPCSI4
         AGO   .ENDCAL
.N1103   ANOP
         AIF ('&NAME' NE 'EPCSI5').N1104    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1104'                   SYMBOLIC ID EPCSI5
         AGO   .ENDCAL
.N1104   ANOP
         AIF ('&NAME' NE 'EPCSI6').N1105    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1105'                   SYMBOLIC ID EPCSI6
         AGO   .ENDCAL
.N1105   ANOP
         AIF ('&NAME' NE 'EPCSI7').N1106    IEAVEXMS ADDED FOR SP1.2
&CODE    SETC '1106'                   SYMBOLIC ID EPCSI7
         AGO   .ENDCAL
.N1106   ANOP
         AIF ('&NAME' NE 'EPCPFX').N1107    IEAVPIX  ADDED FOR SP1.2
&CODE    SETC '1107'                   SYMBOLIC ID EPCPFX
         AGO   .ENDCAL
.N1107   ANOP
         AIF ('&NAME' NE 'EPCPF').N1108     IEAVPIX  ADDED FOR SP1.2
&CODE    SETC '1108'                   SYMBOLIC ID EPCPF
         AGO   .ENDCAL
.N1108   ANOP
         AIF ('&NAME' NE 'EPCPFR').N1109    IEAVPIX  ADDED FOR SP1.2
&CODE    SETC '1109'                   SYMBOLIC ID EPCPFR
         AGO   .ENDCAL
.N1109   ANOP
         AIF ('&NAME' NE 'EPCPFI').N1110    IEAVPIX  ADDED FOR SP1.2
&CODE    SETC '1110'                   SYMBOLIC ID EPCPFI
         AGO   .ENDCAL
.N1110   ANOP
         AIF ('&NAME' NE 'ESRSSL').N1111    IEAVESRT ADDED FOR SP1.2
&CODE    SETC '1111'                   SYMBOLIC ID ESRSSL
         AGO   .ENDCAL
.N1111   ANOP
         AIF ('&NAME' NE 'ESRSSU').N1112    IEAVESRT ADDED FOR SP1.2
&CODE    SETC '1112'                   SYMBOLIC ID ESRSSU
         AGO   .ENDCAL
.N1112   ANOP
         AIF ('&NAME' NE 'ESRSTL').N1113    IEAVESRT ADDED FOR SP1.2
&CODE    SETC '1113'                   SYMBOLIC ID ESRSTL
         AGO   .ENDCAL
.N1113   ANOP
         AIF ('&NAME' NE 'ESRSTU').N1114    IEAVESRT ADDED FOR SP1.2
&CODE    SETC '1114'                   SYMBOLIC ID ESRSTU
         AGO   .ENDCAL
.N1114   ANOP
         AIF ('&NAME' NE 'ESRRES').N1115    IEAVESRT ADDED FOR SP1.2
&CODE    SETC '1115'                   SYMBOLIC ID ESRRES
         AGO   .ENDCAL
.N1115   ANOP
         AIF ('&NAME' NE 'CMSSET').N1116    IEAVECMS ADDED FOR SP1.2
&CODE    SETC '1116'                   SYMBOLIC ID CMSSET
         AGO   .ENDCAL
.N1116   ANOP
         AIF ('&NAME' NE 'CMSRCN').N1117    IEAVECMS ADDED FOR SP1.2
&CODE    SETC '1117'                   SYMBOLIC ID CMSRCN
         AGO   .ENDCAL
.N1117   ANOP
         AIF ('&NAME' NE 'CMSRCY').N1118    IEAVECMS ADDED FOR SP1.2
&CODE    SETC '1118'                   SYMBOLIC ID CMSRCY
         AGO   .ENDCAL
.N1118   ANOP
         AIF ('&NAME' NE 'CMSSTO').N1119    IEAVECMS ADDED FOR SP1.2
&CODE    SETC '1119'                   SYMBOLIC ID CMSSTO
         AGO   .ENDCAL
.N1119   ANOP
         AIF ('&NAME' NE 'CMSSBK').N1120    IEAVECMS ADDED FOR SP1.2
&CODE    SETC '1120'                   SYMBOLIC ID CMSSBK
         AGO   .ENDCAL
.N1120   ANOP
         AIF ('&NAME' NE 'EXTINT').N1121    IEAVEEXT ADDED PRIOR TO SP1
&CODE    SETC '1121'                   SYMBOLIC ID EXTINT
         AGO   .ENDCAL
.N1121   ANOP
         AIF ('&NAME' NE 'EXTEMS').N1122    IEAVEEXT ADDED PRIOR TO SP1
&CODE    SETC '1122'                   SYMBOLIC ID EXTEMS
         AGO   .ENDCAL
.N1122   ANOP
         AIF ('&NAME' NE 'EXTDSP').N1123    IEAVEEXT ADDED PRIOR TO SP1
&CODE    SETC '1123'                   SYMBOLIC ID EXTDSP
         AGO   .ENDCAL
.N1123   ANOP
         AIF ('&NAME' NE 'EXTWT').N1124     IEAVEEXT ADDED PRIOR TO SP1
&CODE    SETC '1124'                   SYMBOLIC ID EXTWT
         AGO   .ENDCAL
.N1124   ANOP
         AIF ('&NAME' NE 'EXTTCBA').N1125   IEAVEEXT ADDED FOR SP1.2
&CODE    SETC '1125'                   SYMBOLIC ID EXTTCBA
         AGO   .ENDCAL
.N1125   ANOP
         AIF ('&NAME' NE 'EXTNPRE').N1126   IEAVEEXT ADDED FOR SP1.2
&CODE    SETC '1126'                   SYMBOLIC ID EXTNPRE
         AGO   .ENDCAL
.N1126   ANOP
         AIF ('&NAME' NE 'EXTSRB').N1127    IEAVEEXT ADDED FOR SP1.2
&CODE    SETC '1127'                   SYMBOLIC ID EXTSRB
         AGO   .ENDCAL
.N1127   ANOP
         AIF ('&NAME' NE 'EIOSRB').N1128    IEAVEIO  ADDED PRIOR TO SP1
&CODE    SETC '1128'                   SYMBOLIC ID EIOSRB
         AGO   .ENDCAL
.N1128   ANOP
         AIF ('&NAME' NE 'EIOTCB').N1129    IEAVEIO  ADDED PRIOR TO SP1
&CODE    SETC '1129'                   SYMBOLIC ID EIOTCB
         AGO   .ENDCAL
.N1129   ANOP
         AIF ('&NAME' NE 'EIOTBL').N1130    IEAVEIO  ADDED PRIOR TO SP1
&CODE    SETC '1130'                   SYMBOLIC ID EIOTBL
         AGO   .ENDCAL
.N1130   ANOP
         AIF ('&NAME' NE 'EIODSP').N1131    IEAVEIO  ADDED PRIOR TO SP1
&CODE    SETC '1131'                   SYMBOLIC ID EIODSP
         AGO   .ENDCAL
.N1131   ANOP
         AIF ('&NAME' NE 'EIOWT').N1132     IEAVEIO  ADDED PRIOR TO SP1
&CODE    SETC '1132'                   SYMBOLIC ID EIOWT
         AGO   .ENDCAL
.N1132   ANOP
         AIF ('&NAME' NE 'EIONP').N1133     IEAVEIO  ADDED PRIOR TO SP1
&CODE    SETC '1133'                   SYMBOLIC ID EIONP
         AGO   .ENDCAL
.N1133   ANOP
         AIF ('&NAME' NE 'IOSREQ').N1134    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1134'                   SYMBOLIC ID IOSREQ
         AGO   .ENDCAL
.N1134   ANOP
         AIF ('&NAME' NE 'IOSTCH').N1136    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1136'                   SYMBOLIC ID IOSTCH
         AGO   .ENDCAL
.N1136   ANOP
         AIF ('&NAME' NE 'IOSCUB').N1137    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1137'                   SYMBOLIC ID IOSCUB
         AGO   .ENDCAL
.N1137   ANOP
         AIF ('&NAME' NE 'IOSINT').N1138    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1138'                   SYMBOLIC ID IOSINT
         AGO   .ENDCAL
.N1138   ANOP
         AIF ('&NAME' NE 'IOSIO0').N1139    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1139'                   SYMBOLIC ID IOSIO0
         AGO   .ENDCAL
.N1139   ANOP
         AIF ('&NAME' NE 'IOSIO2').N1140    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1140'                   SYMBOLIC ID IOSIO2
         AGO   .ENDCAL
.N1140   ANOP
         AIF ('&NAME' NE 'IOSXCP').N1141    IECIOSCN ADDED PRIOR TO SP1
&CODE    SETC '1141'                   SYMBOLIC ID IOSXCP
         AGO   .ENDCAL
.N1141   ANOP
         AIF ('&NAME' NE 'IOSDIE').N1142    IECIOSCN ADDED FOR SP1.2
&CODE    SETC '1142'                   SYMBOLIC ID IOSDIE
         AGO   .ENDCAL
.N1142   ANOP
         AIF ('&NAME' NE 'SVC1').N3839      IEAVESVC ADDED PRIOR TO SP1
&CODE    SETC '3839'                   SYMBOLIC ID SVC1
         AGO   .ENDCAL
.N3839   ANOP
         AIF ('&NAME' NE 'SVC24').N3838     IEAVESVC ADDED PRIOR TO SP1
&CODE    SETC '3838'                   SYMBOLIC ID SVC24
         AGO   .ENDCAL
.N3838   ANOP
         AIF ('&NAME' NE 'SVC6').N3837      IEAVESVC ADDED PRIOR TO SP1
&CODE    SETC '3837'                   SYMBOLIC ID SVC6
         AGO   .ENDCAL
.N3837   ANOP
         AIF ('&NAME' NE 'SVCA1').N3836     IEAVESVC ADDED FOR SP1.2
&CODE    SETC '3836'                   SYMBOLIC ID SVCA1
         AGO   .ENDCAL
.N3836   ANOP
         AIF ('&NAME' NE 'SVCA2').N3835     IEAVESVC ADDED FOR SP1.2
&CODE    SETC '3835'                   SYMBOLIC ID SVCA2
         AGO   .ENDCAL
.N3835   ANOP
         AIF ('&NAME' NE 'SVCA6').N3834     IEAVESVC ADDED FOR SP1.2
&CODE    SETC '3834'                   SYMBOLIC ID SVCA6
         AGO   .ENDCAL
.N3834   ANOP
         AIF ('&NAME' NE 'SPMGRN').N1150    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1150'                   SYMBOLIC ID SPMGRN
         AGO   .ENDCAL
.N1150   ANOP
         AIF ('&NAME' NE 'SPMGSN').N1151    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1151'                   SYMBOLIC ID SPMGSN
         AGO   .ENDCAL
.N1151   ANOP
         AIF ('&NAME' NE 'SPMGRE').N1152    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1152'                   SYMBOLIC ID SPMGRE
         AGO   .ENDCAL
.N1152   ANOP
         AIF ('&NAME' NE 'SPMGRF').N1153    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1153'                   SYMBOLIC ID SPMGRF
         AGO   .ENDCAL
.N1153   ANOP
         AIF ('&NAME' NE 'SPMGSF').N1154    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1154'                   SYMBOLIC ID SPMGSF
         AGO   .ENDCAL
.N1154   ANOP
         AIF ('&NAME' NE 'SPMFSR').N1155    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1155'                   SYMBOLIC ID SPMFSR
         AGO   .ENDCAL
.N1155   ANOP
         AIF ('&NAME' NE 'SPMFSS').N1156    IEAVESPM ADDED FOR SP1.2
&CODE    SETC '1156'                   SYMBOLIC ID SPMFSS
         AGO   .ENDCAL
.N1156   ANOP
         AIF ('&NAME' NE 'NQ1LNQ').N1157    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1157'                   SYMBOLIC ID NQ1LNQ
         AGO   .ENDCAL
.N1157   ANOP
         AIF ('&NAME' NE 'NQ1RES').N1158    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1158'                   SYMBOLIC ID NQ1RES
         AGO   .ENDCAL
.N1158   ANOP
         AIF ('&NAME' NE 'NQ1LDQ').N1159    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1159'                   SYMBOLIC ID NQ1LDQ
         AGO   .ENDCAL
.N1159   ANOP
         AIF ('&NAME' NE 'NQ1RMG').N1160    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1160'                   SYMBOLIC ID NQ1RMG
         AGO   .ENDCAL
.N1160   ANOP
         AIF ('&NAME' NE 'NQ1GN0').N1161    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1161'                   SYMBOLIC ID NQ1GN0
         AGO   .ENDCAL
.N1161   ANOP
         AIF ('&NAME' NE 'NQ1GD0').N1162    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1162'                   SYMBOLIC ID NQ1GD0
         AGO   .ENDCAL
.N1162   ANOP
         AIF ('&NAME' NE 'NQ1LMG').N1163    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1163'                   SYMBOLIC ID NQ1LMG
         AGO   .ENDCAL
.N1163   ANOP
         AIF ('&NAME' NE 'NQ1GML').N1164    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1164'                   SYMBOLIC ID NQ1GML
         AGO   .ENDCAL
.N1164   ANOP
         AIF ('&NAME' NE 'NQ1MXR').N1165    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1165'                   SYMBOLIC ID NQ1MXR
         AGO   .ENDCAL
.N1165   ANOP
         AIF ('&NAME' NE 'NQ1QWB').N1166    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1166'                   SYMBOLIC ID NQ1QWB
         AGO   .ENDCAL
.N1166   ANOP
         AIF ('&NAME' NE 'NQ1HSL').N1205    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1205'                   SYMBOLIC ID NQ1HSL
         AGO   .ENDCAL
.N1205   ANOP
         AIF ('&NAME' NE 'NQ1HSG').N1206    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1206'                   SYMBOLIC ID NQ1HSG
         AGO   .ENDCAL
.N1206   ANOP
         AIF ('&NAME' NE 'NQ1GNQ').N1169    ISGGRP00 ADDED FOR SP1.2
&CODE    SETC '1169'                   SYMBOLIC ID NQ1GNQ
         AGO   .ENDCAL
.N1169   ANOP
         AIF ('&NAME' NE 'NQ1GDQ').N1170    ISGGRP00 ADDED FOR SP1.2
&CODE    SETC '1170'                   SYMBOLIC ID NQ1GDQ
         AGO   .ENDCAL
.N1170   ANOP
         AIF ('&NAME' NE 'NQ1PSE').N1171    ISGBSR   ADDED FOR SP1.2
&CODE    SETC '1171'                   SYMBOLIC ID NQ1PSE
         AGO   .ENDCAL
.N1171   ANOP
         AIF ('&NAME' NE 'NQ1PSY').N1172    ISGBSR   ADDED FOR SP1.2
&CODE    SETC '1172'                   SYMBOLIC ID NQ1PSY
         AGO   .ENDCAL
.N1172   ANOP
         AIF ('&NAME' NE 'NQ1PSF').N1173    ISGBSR   ADDED FOR SP1.2
&CODE    SETC '1173'                   SYMBOLIC ID NQ1PSF
         AGO   .ENDCAL
.N1173   ANOP
         AIF ('&NAME' NE 'NQ1STP').N1174    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1174'                   SYMBOLIC ID NQ1STP
         AGO   .ENDCAL
.N1174   ANOP
         AIF ('&NAME' NE 'NQ1STM').N1175    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1175'                   SYMBOLIC ID NQ1STM
         AGO   .ENDCAL
.N1175   ANOP
         AIF ('&NAME' NE 'NQ1SMS').N1176    ISGGNQDQ ADDED FOR SP1.2
&CODE    SETC '1176'                   SYMBOLIC ID NQ1SMS
         AGO   .ENDCAL
.N1176   ANOP
         AIF ('&NAME' NE 'IEFHDAL').N1177   IEFHBY10 ADDED FOR SP1.2
&CODE    SETC '1177'                   SYMBOLIC ID IEFHDAL
         AGO   .ENDCAL
.N1177   ANOP
         AIF ('&NAME' NE 'RSMFXS').N1178    IEAVFXLD ADDED PRIOR TO SP1
&CODE    SETC '1178'                   SYMBOLIC ID RSMFXS
         AGO   .ENDCAL
.N1178   ANOP
         AIF ('&NAME' NE 'DSPCPI').N1179    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1179'                   SYMBOLIC ID DSPCPI
         AGO   .ENDCAL
.N1179   ANOP
         AIF ('&NAME' NE 'DSPCSI').N1180    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1180'                   SYMBOLIC ID DSPCSI
         AGO   .ENDCAL
.N1180   ANOP
         AIF ('&NAME' NE 'DSPCRI').N1181    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1181'                   SYMBOLIC ID DSPCRI
         AGO   .ENDCAL
.N1181   ANOP
         AIF ('&NAME' NE 'DSPPRS').N1182    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1182'                   SYMBOLIC ID DSPPRS
         AGO   .ENDCAL
.N1182   ANOP
         AIF ('&NAME' NE 'DSPPRU').N1183    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1183'                   SYMBOLIC ID DSPPRU
         AGO   .ENDCAL
.N1183   ANOP
         AIF ('&NAME' NE 'NQ1RNQ').N1184    ISGLNDQ  ADDED FOR SP1.2
&CODE    SETC '1184'                   SYMBOLIC ID NQ1RNQ
         AGO   .ENDCAL
.N1184   ANOP
         AIF ('&NAME' NE 'NQ1RDQ').N1185    ISGLNDQ  ADDED FOR SP1.2
&CODE    SETC '1185'                   SYMBOLIC ID NQ1RDQ
         AGO   .ENDCAL
.N1185   ANOP
         AIF ('&NAME' NE 'RES003').N1186    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1186'                   SYMBOLIC ID RES003
         AGO   .ENDCAL
.N1186   ANOP
         AIF ('&NAME' NE 'RES004').N1187    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1187'                   SYMBOLIC ID RES004
         AGO   .ENDCAL
.N1187   ANOP
         AIF ('&NAME' NE 'RES005').N1188    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1188'                   SYMBOLIC ID RES005
         AGO   .ENDCAL
.N1188   ANOP
         AIF ('&NAME' NE 'RES006').N1189    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1189'                   SYMBOLIC ID RES006
         AGO   .ENDCAL
.N1189   ANOP
         AIF ('&NAME' NE 'RES007').N1190    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1190'                   SYMBOLIC ID RES007
         AGO   .ENDCAL
.N1190   ANOP
         AIF ('&NAME' NE 'RES008').N1191    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1191'                   SYMBOLIC ID RES008
         AGO   .ENDCAL
.N1191   ANOP
         AIF ('&NAME' NE 'RES009').N1192    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1192'                   SYMBOLIC ID RES009
         AGO   .ENDCAL
.N1192   ANOP
         AIF ('&NAME' NE 'RES010').N1193    XXXXXXXX ADDED FOR SP1.2
&CODE    SETC '1193'                   SYMBOLIC ID RES010
         AGO   .ENDCAL
.N1193   ANOP
         AIF ('&NAME' NE 'NQ1SRB').N1194    ISGSMGT  ADDED FOR SP1.2
&CODE    SETC '1194'                   SYMBOLIC ID NQ1SRB
         AGO   .ENDCAL
.N1194   ANOP
         AIF ('&NAME' NE 'NQ1LPR').N1195    ISGSMGT  ADDED FOR SP1.2
&CODE    SETC '1195'                   SYMBOLIC ID NQ1LPR
         AGO   .ENDCAL
.N1195   ANOP
         AIF ('&NAME' NE 'NQ1GPR').N1196    ISGSMGT  ADDED FOR SP1.2
&CODE    SETC '1196'                   SYMBOLIC ID NQ1GPR
         AGO   .ENDCAL
.N1196   ANOP
         AIF ('&NAME' NE 'NQ1IPR').N1197    ISGSMGT  ADDED FOR SP1.2
&CODE    SETC '1197'                   SYMBOLIC ID NQ1IPR
         AGO   .ENDCAL
.N1197   ANOP
         AIF ('&NAME' NE 'NQ1REX').N1198    ISGSMGT  ADDED FOR SP1.2
&CODE    SETC '1198'                   SYMBOLIC ID NQ1REX
         AGO   .ENDCAL
.N1198   ANOP
         AIF ('&NAME' NE 'DSPEUT').N1199    IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1199'                   SYMBOLIC ID DSPEUT
         AGO   .ENDCAL
.N1199   ANOP
         AIF ('&NAME' NE 'DSPEUTL').N1200   IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1200'                   SYMBOLIC ID DSPEUTL
         AGO   .ENDCAL
.N1200   ANOP
         AIF ('&NAME' NE 'DSPEUTG').N1201   IEAVEDS0 ADDED FOR SP1.2
&CODE    SETC '1201'                   SYMBOLIC ID DSPEUTG
         AGO   .ENDCAL
.N1201   ANOP
         AIF ('&NAME' NE 'EIOPR').N1202     IEAVEIO  ADDED FOR SP1.3
&CODE    SETC '1202'                   SYMBOLIC ID EIOPR
         AGO   .ENDCAL
.N1202   ANOP
         AIF ('&NAME' NE 'EIOSRBR').N1203   IEAVEIO  ADDED FOR SP1.3
&CODE    SETC '1203'                   SYMBOLIC ID EIOSRBR
         AGO   .ENDCAL
.N1203   ANOP
         AIF ('&NAME' NE 'EIOCPOW').N1204   IEAVEIO  ADDED FOR SP1.3
&CODE    SETC '1204'                   SYMBOLIC ID EIOCPOW
         AGO   .ENDCAL
.N1204   ANOP
         AIF ('&NAME' NE 'INST0000').N3000  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3000'                   SYMBOLIC ID INST0000
         AGO   .ENDCAL
.N3000   ANOP
         AIF ('&NAME' NE 'INST0001').N3001  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3001'                   SYMBOLIC ID INST0001
         AGO   .ENDCAL
.N3001   ANOP
         AIF ('&NAME' NE 'INST0002').N3002  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3002'                   SYMBOLIC ID INST0002
         AGO   .ENDCAL
.N3002   ANOP
         AIF ('&NAME' NE 'INST0003').N3003  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3003'                   SYMBOLIC ID INST0003
         AGO   .ENDCAL
.N3003   ANOP
         AIF ('&NAME' NE 'INST0004').N3004  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3004'                   SYMBOLIC ID INST0004
         AGO   .ENDCAL
.N3004   ANOP
         AIF ('&NAME' NE 'INST0005').N3005  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3005'                   SYMBOLIC ID INST0005
         AGO   .ENDCAL
.N3005   ANOP
         AIF ('&NAME' NE 'INST0006').N3006  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3006'                   SYMBOLIC ID INST0006
         AGO   .ENDCAL
.N3006   ANOP
         AIF ('&NAME' NE 'INST0007').N3007  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3007'                   SYMBOLIC ID INST0007
         AGO   .ENDCAL
.N3007   ANOP
         AIF ('&NAME' NE 'INST0008').N3008  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3008'                   SYMBOLIC ID INST0008
         AGO   .ENDCAL
.N3008   ANOP
         AIF ('&NAME' NE 'INST0009').N3009  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3009'                   SYMBOLIC ID INST0009
         AGO   .ENDCAL
.N3009   ANOP
         AIF ('&NAME' NE 'INST0010').N3010  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3010'                   SYMBOLIC ID INST0010
         AGO   .ENDCAL
.N3010   ANOP
         AIF ('&NAME' NE 'INST0011').N3011  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3011'                   SYMBOLIC ID INST0011
         AGO   .ENDCAL
.N3011   ANOP
         AIF ('&NAME' NE 'INST0012').N3012  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3012'                   SYMBOLIC ID INST0012
         AGO   .ENDCAL
.N3012   ANOP
         AIF ('&NAME' NE 'INST0013').N3013  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3013'                   SYMBOLIC ID INST0013
         AGO   .ENDCAL
.N3013   ANOP
         AIF ('&NAME' NE 'INST0014').N3014  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3014'                   SYMBOLIC ID INST0014
         AGO   .ENDCAL
.N3014   ANOP
         AIF ('&NAME' NE 'INST0015').N3015  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3015'                   SYMBOLIC ID INST0015
         AGO   .ENDCAL
.N3015   ANOP
         AIF ('&NAME' NE 'INST0016').N3016  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3016'                   SYMBOLIC ID INST0016
         AGO   .ENDCAL
.N3016   ANOP
         AIF ('&NAME' NE 'INST0017').N3017  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3017'                   SYMBOLIC ID INST0017
         AGO   .ENDCAL
.N3017   ANOP
         AIF ('&NAME' NE 'INST0018').N3018  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3018'                   SYMBOLIC ID INST0018
         AGO   .ENDCAL
.N3018   ANOP
         AIF ('&NAME' NE 'INST0019').N3019  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3019'                   SYMBOLIC ID INST0019
         AGO   .ENDCAL
.N3019   ANOP
         AIF ('&NAME' NE 'INST0020').N3020  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3020'                   SYMBOLIC ID INST0020
         AGO   .ENDCAL
.N3020   ANOP
         AIF ('&NAME' NE 'INST0021').N3021  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3021'                   SYMBOLIC ID INST0021
         AGO   .ENDCAL
.N3021   ANOP
         AIF ('&NAME' NE 'INST0022').N3022  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3022'                   SYMBOLIC ID INST0022
         AGO   .ENDCAL
.N3022   ANOP
         AIF ('&NAME' NE 'INST0023').N3023  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3023'                   SYMBOLIC ID INST0023
         AGO   .ENDCAL
.N3023   ANOP
         AIF ('&NAME' NE 'INST0024').N3024  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3024'                   SYMBOLIC ID INST0024
         AGO   .ENDCAL
.N3024   ANOP
         AIF ('&NAME' NE 'INST0025').N3025  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3025'                   SYMBOLIC ID INST0025
         AGO   .ENDCAL
.N3025   ANOP
         AIF ('&NAME' NE 'INST0026').N3026  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3026'                   SYMBOLIC ID INST0026
         AGO   .ENDCAL
.N3026   ANOP
         AIF ('&NAME' NE 'INST0027').N3027  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3027'                   SYMBOLIC ID INST0027
         AGO   .ENDCAL
.N3027   ANOP
         AIF ('&NAME' NE 'INST0028').N3028  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3028'                   SYMBOLIC ID INST0028
         AGO   .ENDCAL
.N3028   ANOP
         AIF ('&NAME' NE 'INST0029').N3029  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3029'                   SYMBOLIC ID INST0029
         AGO   .ENDCAL
.N3029   ANOP
         AIF ('&NAME' NE 'INST0030').N3030  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3030'                   SYMBOLIC ID INST0030
         AGO   .ENDCAL
.N3030   ANOP
         AIF ('&NAME' NE 'INST0031').N3031  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3031'                   SYMBOLIC ID INST0031
         AGO   .ENDCAL
.N3031   ANOP
         AIF ('&NAME' NE 'INST0032').N3032  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3032'                   SYMBOLIC ID INST0032
         AGO   .ENDCAL
.N3032   ANOP
         AIF ('&NAME' NE 'INST0033').N3033  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3033'                   SYMBOLIC ID INST0033
         AGO   .ENDCAL
.N3033   ANOP
         AIF ('&NAME' NE 'INST0034').N3034  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3034'                   SYMBOLIC ID INST0034
         AGO   .ENDCAL
.N3034   ANOP
         AIF ('&NAME' NE 'INST0035').N3035  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3035'                   SYMBOLIC ID INST0035
         AGO   .ENDCAL
.N3035   ANOP
         AIF ('&NAME' NE 'INST0036').N3036  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3036'                   SYMBOLIC ID INST0036
         AGO   .ENDCAL
.N3036   ANOP
         AIF ('&NAME' NE 'INST0037').N3037  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3037'                   SYMBOLIC ID INST0037
         AGO   .ENDCAL
.N3037   ANOP
         AIF ('&NAME' NE 'INST0038').N3038  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3038'                   SYMBOLIC ID INST0038
         AGO   .ENDCAL
.N3038   ANOP
         AIF ('&NAME' NE 'INST0039').N3039  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3039'                   SYMBOLIC ID INST0039
         AGO   .ENDCAL
.N3039   ANOP
         AIF ('&NAME' NE 'INST0040').N3040  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3040'                   SYMBOLIC ID INST0040
         AGO   .ENDCAL
.N3040   ANOP
         AIF ('&NAME' NE 'INST0041').N3041  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3041'                   SYMBOLIC ID INST0041
         AGO   .ENDCAL
.N3041   ANOP
         AIF ('&NAME' NE 'INST0042').N3042  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3042'                   SYMBOLIC ID INST0042
         AGO   .ENDCAL
.N3042   ANOP
         AIF ('&NAME' NE 'INST0043').N3043  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3043'                   SYMBOLIC ID INST0043
         AGO   .ENDCAL
.N3043   ANOP
         AIF ('&NAME' NE 'INST0044').N3044  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3044'                   SYMBOLIC ID INST0044
         AGO   .ENDCAL
.N3044   ANOP
         AIF ('&NAME' NE 'INST0045').N3045  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3045'                   SYMBOLIC ID INST0045
         AGO   .ENDCAL
.N3045   ANOP
         AIF ('&NAME' NE 'INST0046').N3046  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3046'                   SYMBOLIC ID INST0046
         AGO   .ENDCAL
.N3046   ANOP
         AIF ('&NAME' NE 'INST0047').N3047  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3047'                   SYMBOLIC ID INST0047
         AGO   .ENDCAL
.N3047   ANOP
         AIF ('&NAME' NE 'INST0048').N3048  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3048'                   SYMBOLIC ID INST0048
         AGO   .ENDCAL
.N3048   ANOP
         AIF ('&NAME' NE 'INST0049').N3049  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3049'                   SYMBOLIC ID INST0049
         AGO   .ENDCAL
.N3049   ANOP
         AIF ('&NAME' NE 'INST0050').N3050  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3050'                   SYMBOLIC ID INST0050
         AGO   .ENDCAL
.N3050   ANOP
         AIF ('&NAME' NE 'INST0051').N3051  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3051'                   SYMBOLIC ID INST0051
         AGO   .ENDCAL
.N3051   ANOP
         AIF ('&NAME' NE 'INST0052').N3052  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3052'                   SYMBOLIC ID INST0052
         AGO   .ENDCAL
.N3052   ANOP
         AIF ('&NAME' NE 'INST0053').N3053  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3053'                   SYMBOLIC ID INST0053
         AGO   .ENDCAL
.N3053   ANOP
         AIF ('&NAME' NE 'INST0054').N3054  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3054'                   SYMBOLIC ID INST0054
         AGO   .ENDCAL
.N3054   ANOP
         AIF ('&NAME' NE 'INST0055').N3055  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3055'                   SYMBOLIC ID INST0055
         AGO   .ENDCAL
.N3055   ANOP
         AIF ('&NAME' NE 'INST0056').N3056  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3056'                   SYMBOLIC ID INST0056
         AGO   .ENDCAL
.N3056   ANOP
         AIF ('&NAME' NE 'INST0057').N3057  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3057'                   SYMBOLIC ID INST0057
         AGO   .ENDCAL
.N3057   ANOP
         AIF ('&NAME' NE 'INST0058').N3058  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3058'                   SYMBOLIC ID INST0058
         AGO   .ENDCAL
.N3058   ANOP
         AIF ('&NAME' NE 'INST0059').N3059  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3059'                   SYMBOLIC ID INST0059
         AGO   .ENDCAL
.N3059   ANOP
         AIF ('&NAME' NE 'INST0060').N3060  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3060'                   SYMBOLIC ID INST0060
         AGO   .ENDCAL
.N3060   ANOP
         AIF ('&NAME' NE 'INST0061').N3061  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3061'                   SYMBOLIC ID INST0061
         AGO   .ENDCAL
.N3061   ANOP
         AIF ('&NAME' NE 'INST0062').N3062  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3062'                   SYMBOLIC ID INST0062
         AGO   .ENDCAL
.N3062   ANOP
         AIF ('&NAME' NE 'INST0063').N3063  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3063'                   SYMBOLIC ID INST0063
         AGO   .ENDCAL
.N3063   ANOP
         AIF ('&NAME' NE 'INST0064').N3064  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3064'                   SYMBOLIC ID INST0064
         AGO   .ENDCAL
.N3064   ANOP
         AIF ('&NAME' NE 'INST0065').N3065  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3065'                   SYMBOLIC ID INST0065
         AGO   .ENDCAL
.N3065   ANOP
         AIF ('&NAME' NE 'INST0066').N3066  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3066'                   SYMBOLIC ID INST0066
         AGO   .ENDCAL
.N3066   ANOP
         AIF ('&NAME' NE 'INST0067').N3067  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3067'                   SYMBOLIC ID INST0067
         AGO   .ENDCAL
.N3067   ANOP
         AIF ('&NAME' NE 'INST0068').N3068  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3068'                   SYMBOLIC ID INST0068
         AGO   .ENDCAL
.N3068   ANOP
         AIF ('&NAME' NE 'INST0069').N3069  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3069'                   SYMBOLIC ID INST0069
         AGO   .ENDCAL
.N3069   ANOP
         AIF ('&NAME' NE 'INST0070').N3070  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3070'                   SYMBOLIC ID INST0070
         AGO   .ENDCAL
.N3070   ANOP
         AIF ('&NAME' NE 'INST0071').N3071  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3071'                   SYMBOLIC ID INST0071
         AGO   .ENDCAL
.N3071   ANOP
         AIF ('&NAME' NE 'INST0072').N3072  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3072'                   SYMBOLIC ID INST0072
         AGO   .ENDCAL
.N3072   ANOP
         AIF ('&NAME' NE 'INST0073').N3073  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3073'                   SYMBOLIC ID INST0073
         AGO   .ENDCAL
.N3073   ANOP
         AIF ('&NAME' NE 'INST0074').N3074  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3074'                   SYMBOLIC ID INST0074
         AGO   .ENDCAL
.N3074   ANOP
         AIF ('&NAME' NE 'INST0075').N3075  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3075'                   SYMBOLIC ID INST0075
         AGO   .ENDCAL
.N3075   ANOP
         AIF ('&NAME' NE 'INST0076').N3076  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3076'                   SYMBOLIC ID INST0076
         AGO   .ENDCAL
.N3076   ANOP
         AIF ('&NAME' NE 'INST0077').N3077  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3077'                   SYMBOLIC ID INST0077
         AGO   .ENDCAL
.N3077   ANOP
         AIF ('&NAME' NE 'INST0078').N3078  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3078'                   SYMBOLIC ID INST0078
         AGO   .ENDCAL
.N3078   ANOP
         AIF ('&NAME' NE 'INST0079').N3079  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3079'                   SYMBOLIC ID INST0079
         AGO   .ENDCAL
.N3079   ANOP
         AIF ('&NAME' NE 'INST0080').N3080  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3080'                   SYMBOLIC ID INST0080
         AGO   .ENDCAL
.N3080   ANOP
         AIF ('&NAME' NE 'INST0081').N3081  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3081'                   SYMBOLIC ID INST0081
         AGO   .ENDCAL
.N3081   ANOP
         AIF ('&NAME' NE 'INST0082').N3082  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3082'                   SYMBOLIC ID INST0082
         AGO   .ENDCAL
.N3082   ANOP
         AIF ('&NAME' NE 'INST0083').N3083  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3083'                   SYMBOLIC ID INST0083
         AGO   .ENDCAL
.N3083   ANOP
         AIF ('&NAME' NE 'INST0084').N3084  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3084'                   SYMBOLIC ID INST0084
         AGO   .ENDCAL
.N3084   ANOP
         AIF ('&NAME' NE 'INST0085').N3085  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3085'                   SYMBOLIC ID INST0085
         AGO   .ENDCAL
.N3085   ANOP
         AIF ('&NAME' NE 'INST0086').N3086  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3086'                   SYMBOLIC ID INST0086
         AGO   .ENDCAL
.N3086   ANOP
         AIF ('&NAME' NE 'INST0087').N3087  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3087'                   SYMBOLIC ID INST0087
         AGO   .ENDCAL
.N3087   ANOP
         AIF ('&NAME' NE 'INST0088').N3088  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3088'                   SYMBOLIC ID INST0088
         AGO   .ENDCAL
.N3088   ANOP
         AIF ('&NAME' NE 'INST0089').N3089  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3089'                   SYMBOLIC ID INST0089
         AGO   .ENDCAL
.N3089   ANOP
         AIF ('&NAME' NE 'INST0090').N3090  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3090'                   SYMBOLIC ID INST0090
         AGO   .ENDCAL
.N3090   ANOP
         AIF ('&NAME' NE 'INST0091').N3091  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3091'                   SYMBOLIC ID INST0091
         AGO   .ENDCAL
.N3091   ANOP
         AIF ('&NAME' NE 'INST0092').N3092  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3092'                   SYMBOLIC ID INST0092
         AGO   .ENDCAL
.N3092   ANOP
         AIF ('&NAME' NE 'INST0093').N3093  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3093'                   SYMBOLIC ID INST0093
         AGO   .ENDCAL
.N3093   ANOP
         AIF ('&NAME' NE 'INST0094').N3094  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3094'                   SYMBOLIC ID INST0094
         AGO   .ENDCAL
.N3094   ANOP
         AIF ('&NAME' NE 'INST0095').N3095  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3095'                   SYMBOLIC ID INST0095
         AGO   .ENDCAL
.N3095   ANOP
         AIF ('&NAME' NE 'INST0096').N3096  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3096'                   SYMBOLIC ID INST0096
         AGO   .ENDCAL
.N3096   ANOP
         AIF ('&NAME' NE 'INST0097').N3097  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3097'                   SYMBOLIC ID INST0097
         AGO   .ENDCAL
.N3097   ANOP
         AIF ('&NAME' NE 'INST0098').N3098  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3098'                   SYMBOLIC ID INST0098
         AGO   .ENDCAL
.N3098   ANOP
         AIF ('&NAME' NE 'INST0099').N3099  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3099'                   SYMBOLIC ID INST0099
         AGO   .ENDCAL
.N3099   ANOP
         AIF ('&NAME' NE 'INST0100').N3100  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3100'                   SYMBOLIC ID INST0100
         AGO   .ENDCAL
.N3100   ANOP
         AIF ('&NAME' NE 'INST0101').N3101  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3101'                   SYMBOLIC ID INST0101
         AGO   .ENDCAL
.N3101   ANOP
         AIF ('&NAME' NE 'INST0102').N3102  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3102'                   SYMBOLIC ID INST0102
         AGO   .ENDCAL
.N3102   ANOP
         AIF ('&NAME' NE 'INST0103').N3103  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3103'                   SYMBOLIC ID INST0103
         AGO   .ENDCAL
.N3103   ANOP
         AIF ('&NAME' NE 'INST0104').N3104  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3104'                   SYMBOLIC ID INST0104
         AGO   .ENDCAL
.N3104   ANOP
         AIF ('&NAME' NE 'INST0105').N3105  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3105'                   SYMBOLIC ID INST0105
         AGO   .ENDCAL
.N3105   ANOP
         AIF ('&NAME' NE 'INST0106').N3106  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3106'                   SYMBOLIC ID INST0106
         AGO   .ENDCAL
.N3106   ANOP
         AIF ('&NAME' NE 'INST0107').N3107  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3107'                   SYMBOLIC ID INST0107
         AGO   .ENDCAL
.N3107   ANOP
         AIF ('&NAME' NE 'INST0108').N3108  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3108'                   SYMBOLIC ID INST0108
         AGO   .ENDCAL
.N3108   ANOP
         AIF ('&NAME' NE 'INST0109').N3109  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3109'                   SYMBOLIC ID INST0109
         AGO   .ENDCAL
.N3109   ANOP
         AIF ('&NAME' NE 'INST0110').N3110  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3110'                   SYMBOLIC ID INST0110
         AGO   .ENDCAL
.N3110   ANOP
         AIF ('&NAME' NE 'INST0111').N3111  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3111'                   SYMBOLIC ID INST0111
         AGO   .ENDCAL
.N3111   ANOP
         AIF ('&NAME' NE 'INST0112').N3112  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3112'                   SYMBOLIC ID INST0112
         AGO   .ENDCAL
.N3112   ANOP
         AIF ('&NAME' NE 'INST0113').N3113  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3113'                   SYMBOLIC ID INST0113
         AGO   .ENDCAL
.N3113   ANOP
         AIF ('&NAME' NE 'INST0114').N3114  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3114'                   SYMBOLIC ID INST0114
         AGO   .ENDCAL
.N3114   ANOP
         AIF ('&NAME' NE 'INST0115').N3115  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3115'                   SYMBOLIC ID INST0115
         AGO   .ENDCAL
.N3115   ANOP
         AIF ('&NAME' NE 'INST0116').N3116  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3116'                   SYMBOLIC ID INST0116
         AGO   .ENDCAL
.N3116   ANOP
         AIF ('&NAME' NE 'INST0117').N3117  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3117'                   SYMBOLIC ID INST0117
         AGO   .ENDCAL
.N3117   ANOP
         AIF ('&NAME' NE 'INST0118').N3118  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3118'                   SYMBOLIC ID INST0118
         AGO   .ENDCAL
.N3118   ANOP
         AIF ('&NAME' NE 'INST0119').N3119  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3119'                   SYMBOLIC ID INST0119
         AGO   .ENDCAL
.N3119   ANOP
         AIF ('&NAME' NE 'INST0120').N3120  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3120'                   SYMBOLIC ID INST0120
         AGO   .ENDCAL
.N3120   ANOP
         AIF ('&NAME' NE 'INST0121').N3121  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3121'                   SYMBOLIC ID INST0121
         AGO   .ENDCAL
.N3121   ANOP
         AIF ('&NAME' NE 'INST0122').N3122  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3122'                   SYMBOLIC ID INST0122
         AGO   .ENDCAL
.N3122   ANOP
         AIF ('&NAME' NE 'INST0123').N3123  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3123'                   SYMBOLIC ID INST0123
         AGO   .ENDCAL
.N3123   ANOP
         AIF ('&NAME' NE 'INST0124').N3124  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3124'                   SYMBOLIC ID INST0124
         AGO   .ENDCAL
.N3124   ANOP
         AIF ('&NAME' NE 'INST0125').N3125  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3125'                   SYMBOLIC ID INST0125
         AGO   .ENDCAL
.N3125   ANOP
         AIF ('&NAME' NE 'INST0126').N3126  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3126'                   SYMBOLIC ID INST0126
         AGO   .ENDCAL
.N3126   ANOP
         AIF ('&NAME' NE 'INST0127').N3127  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3127'                   SYMBOLIC ID INST0127
         AGO   .ENDCAL
.N3127   ANOP
         AIF ('&NAME' NE 'INST0128').N3128  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3128'                   SYMBOLIC ID INST0128
         AGO   .ENDCAL
.N3128   ANOP
         AIF ('&NAME' NE 'INST0129').N3129  INSTRMT  ADDED FOR SP1.2
&CODE    SETC '3129'                   SYMBOLIC ID INST0129
         AGO   .ENDCAL
.N3129   ANOP
.**********************************************************************
.*
.* COUNTERS DELETED FROM PREVIOUS VERSIONS OF THIS MACRO,
.* THEY  ALL BRANCH TO PARMOLD WHICH CREATES A COMMENT AND EXITS.
.*
.**********************************************************************
         AIF ('&NAME' EQ 'ASMIPG').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMIPP').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMIPM').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMIOE').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMVIO').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMPCW').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMFBT').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMFDS').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ASMRNS').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'EVTBRE').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'EVTBRI').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'PMRGM1').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'PMRFM1').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'PMRFM2').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'NQ1GT1').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'NQ1GT2').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'NQ1FR1').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'NQ1FR2').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'RSMPFI').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMPFR').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMPF1').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMPTM').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMFPX').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMFPI').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMRRB').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMFNN').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMFR').PARMOLD     DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMFNR').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMREC').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'RSMFST').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'VALCHK').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'VALTPA').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'VALTPF').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKWDS').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKWSL').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKWSR').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKSPS').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKSPO').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'DSPPD').PARMOLD     DELETED FOR SP1.2
         AIF ('&NAME' EQ 'DSPLLO').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'DSPRED').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'EPCPF').PARMOLD     DELETED FOR SP1.2
         AIF ('&NAME' EQ 'EPCPFR').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'EPCPFT').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'EPCPFS').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKWLC').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKWUB').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKWSY').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKTCE').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKSCE').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKWIS').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKHV').PARMOLD     DELETED FOR SP1.2
         AIF ('&NAME' EQ 'ELKLOA').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKLOS').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKLRA').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKLRS').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKCOA').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKCOS').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKCRA').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'ELKCRS').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'EXTTCB').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'EXP1').PARMOLD      DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'EXP24').PARMOLD     DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'EXPIX').PARMOLD     DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'PRGSCN').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'PRGACT').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'PRGTOT').PARMOLD    DELETED PRIOR TO SP1.2
         AIF ('&NAME' EQ 'IOSIGP').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'STMAQ3').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'NQ1HEL').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'NQ1HEG').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'DSPMEM').PARMOLD    DELETED FOR SP1.2
         AIF ('&NAME' EQ 'RES001').PARMOLD    NAME OF COUNTER CHANGED
         AIF ('&NAME' EQ 'RES002').PARMOLD    NAME OF COUNTER CHANGED
         AIF ('&NAME' EQ 'SVC').PARMOLD       DELETED AS GENERAL LABEL
         AIF ('&NAME' EQ 'SY5TPA').PARMOLD    DELETED FOR SP1.3
         AIF ('&NAME' EQ 'SY5TPF').PARMOLD    DELETED FOR SP1.3
         AIF ('&NAME' EQ 'SY5REF').PARMOLD    DELETED FOR SP1.3
         AIF ('&NAME' EQ 'SY5NCK').PARMOLD    DELETED FOR SP1.3
         AIF ('&NAME' EQ 'VARNSWP').PARMOLD   DELETED FOR SP1.3
         MNOTE 8,'*** INVALID COUNTER WAS SPECIFIED'
         MEXIT
.PARMOLD ANOP
*** DELETED COUNTER NO EXPANSION OF COUNT MACRO
         MEXIT
.ENDCAL  AIF ('&LABEL' NE '').LABPASD
&NEW     SETC   '&D'.'&CODE'
&NEW     MC    &CODE.&CTCL.&NAME
*                                      RESERVED FOR IBM INTERNAL
*                                      INSTRUMENTATION
         MEXIT
.LABPASD ANOP
&LABEL   MC    &CODE.&CTCL.&NAME
*                                      RESERVED FOR IBM INTERNAL
*                                      INSTRUMENTATION
         MEXIT
         MEND
*   */
*%COUNT: MACRO;
*  ANS('?'  MACLABEL  'COUNTP'  MACLIST  MACKEYS ';');
*%END COUNT;
./ ADD NAME=DBV
         MACRO
&NAME    DBV   &Z
         LCLA  &I,&J,&K,&M
         LCLC  &B(7)
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* DEFINES BYTE VALUES THROUGH THE USE OF
.* EQUATES AND DS 0X
.*
         AIF   ('&NAME' EQ '').I1
&NAME    DS    0X
.I1      AIF   (&M EQ 0).M1
&B(&M+1) SETC  ''
&M       SETA  &M-1
         AGO   .I1
.M1      ANOP
&B(&M+1) SETC  '0'
&K       SETA  0
&I       SETA  &I+1
         AIF   (K'&SYSLIST(&I) EQ 0).D1
&J       SETA  K'&SYSLIST(&I)+1
.L1      ANOP
&J       SETA  &J-1
         AIF   ('&SYSLIST(&I)'(&J,1) NE ')').S1
&K       SETA  &K+1
.S1      AIF   ('&SYSLIST(&I)'(&J,1) NE '(').S2
&K       SETA  &K-1
.S2      AIF   (&K EQ 0).S3
         AIF   (&K GT 0 AND &J GT 1).L1
.ERR     MNOTE 8,'INVALID PARAMETER SYNTAX IN OPERAND &I.'
         AGO   .D1
.S4      ANOP
&B(&M+1) SETC  '&SYSLIST(&I)'(&J+1+&M*8,8)
&M       SETA  &M+1
.S3      AIF   (K'&SYSLIST(&I)-&M*8-&J GT 9).S4
         AIF   (&J EQ K'&SYSLIST(&I)).S5
&B(&M+1) SETC  '&SYSLIST(&I)'(&J+1+&M*8,K'&SYSLIST(&I)-&M*8-&J-1)
.S5      AIF   (&J EQ 1 OR &J GT 8).ERR
&B(7)    SETC  '&SYSLIST(&I)'(1,&J-1)
&B(7)    EQU   &B(1)&B(2)&B(3)&B(4)&B(5)&B(6)
V&B(7)   DS    0X
.D1      AIF   (&I LT N'&SYSLIST).I1
         DS    1X
.MEND    MEND
./ ADD NAME=DCDSWORK
         MACRO
&NAME    DCDSWORK  &DUMMY
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* GENERATES A WORK AREA FOR DC/DS EVALUATION ROUTINE
.* (IFNX4D AND IFNX4N). THE WORK AREA IS GENERATED IN
.* IFNX4D AND IFNX4N BY A CALL FROM MACRO ICOMMON
&NAME    DS    0F                       NAME
DCSWORK  DS    0XL11                             DC SWITCH CODES
DCSWTCH  DSW   BITLN,ESMOD,TYPEL,TYPEV,TYPEZ     DC/DS SWITCH CODE
LFDEL    DS    C                                 LEFT FIELD DELIMITER
RTDEL    DS    C                        RIGHT FIELD DELIMITER
SCADDR   DS    X                        SCAN ROUTINE ADDRESS
DCALIGN  DS    X                        IMPLIED LENGTH AND ALIGNMENT
MINLN    DS    X                        MINIMUM LENGTH LODIFIER RANGE
MAXLN    DS    H                        MAXIMUM LENGTH MODIFIER RANGE
BITINCR  DS    H                        NUMBER OF BITS PER DIGIT
HILIMIT  DS    X                        HIGHEST VALUE OF VALID DIGIT
PERIOD   EQU   D0+BITINCR               DECIMAL POINT ENCOUNTERED
EXPONENT EQU   D1+BITINCR               EXPONENT ENCOUNTERED
SUBFIELD EQU   D1+BITINCR               SUBFIELD ENCOUNTERED
TYPECALL DSW   ,DXDALIGN,DEFNAME,DLOCTREF,DCCALL,DSCALL,LTCALL,LTORGSCN
LEVELPTR DS    A                        LEVEL POINTER
DUPFAC   DS    F                        DUPLICATION FACTOR
CONLNG   DS    F                        CONSTANT LENGTH
DCDSWORK DS    0XL38                    INITIALIZE
REFCOUNT DS    H                        SYMBOL COUNT
SYMCOUNT DS    H                        SYMBOL COUNT
VEETABLE DS    16X                      V-TYPE CONSTANTS TABLE
ADSYM    DS    A                        ADDRESS OF SYMBOL TABLE ENTRY
BITADD   DS    H                        RESIDUAL BIT COUNT
OPCNT    DS    H                        OPERAND COUNT
LATTRSAV DS    H                        SAVE
DCWORK   DS    0XL8                     INITIALIZE
LATTR    DS    H                        LENGTH ATTRIBUTE
ADUPFAC  DS    A                        ADDRESS OF DUPLICATION FACTOR
CONCT    DS    H                        CONSTANT COUNT
         MEND
./ ADD NAME=DEL
         MACRO
&TAG     DEL   &TREE,&LV=,&T=,&TYPE=,&S=,&SP=,                         X
               &FREE=,&RECL=
.*********************** SEPTEMBER 27, 1973. **************************
.* THE DEL MACRO-INSTRUCTION IS USED TO DELETE A KEY-ADDRESS          *
.* ASSOCIATION PAIR FROM THE RADIX PARTITION TREE. THE MEANINGS OF THE*
.* PARAMETERS ARE AS FOLLOWS:                                         *
.**********************************************************************
.* TREE: THE TREE PARAMETER SPECIFIES THE ADDRESS OF THE RADIX        *
.*       PARTITION TREE, AS IT IS OBTAINED FROM USING THE STREE       *
.*       MACRO-INSTRUCTION. THE ADDRESS MAY EITHER BE IN MAIN STORAGE *
.*       OR IN A REGISTER. IF "LABEL" IS CODED FOR THE TREE PARAMETER,*
.*       THE ADDRESS IS IN A WORD IN MAIN STORAGE. IF "(TREE)" IS     *
.*       CODED, THE ADDRESS IS IN THE CORRESPONDING REGISTER.         *
.* LV:   LV MEANS "LENGTH VALUE", AND IS USED TO SPECIFY THE LENGTH OF*
.*       THE RECORD IF THE RECORD AREA IS TO BE RELEASED TO THE SYSTEM*
.*       VIA THE FSPACE MACRO-INSTRUCTION. IF THE LV PARAMETER IS NOT *
.*       CODED, THEN NO FSPACE OPERATION TAKES PLACE, BUT ONLY THE    *
.*       SPACE FOR THE RADIX PARTITION TREE ENTRY IS RELEASED.        *
.*       THE LV PARAMETER IS CODED EXACTLY THE SAME WAY AS IN THE     *
.*       FSPACE MACRO-INSTRUCTION. IF THE RECORD IS A VARIABLE LENGTH *
.*       RECORD WITH EITHER A ONE-BYTE OR HALFWORD COUNT AT THE FRONT *
.*       OF THE RECORD, THE LENGTH VALUE MAY BE CODED AS:             *
.*       LV=((15),1) FOR A ONE BYTE LENGTH;                           *
.*       LV=((15),2) FOR A HALFWORD LENGTH FIELD.                     *
.*       IF THE RECORD IS A FIXED LENGTH RECORD, THEN "LV=LENGTH"     *
.*       SHOULD BE CODED, WHERE "LENGTH" IS THE RECORD LENGTH.        *
.*                                                                    *
.* S,SP: THESE PARAMETERS ARE CODED EXACTLY THE SAME WAY AS IN THE    *
.*       FSPACE MACRO-INSTRUCTION; SEE THE DESCRIPTION OF FSPACE FOR  *
.*       DETAILS.                                                     *
.* FREE: THIS PARAMETER IS PRESENT ONLY FOR COMPATIBILITY WITH EARLIER*
.*       VERSIONS, AND SHOULD NOT BE USED.                            *
.* RECL: THIS PARAMETER IS PRESENT ONLY FOR COMPATIBILITY WITH EARLIER*
.*       VERSIONS, AND SHOULD NOT BE USED.                            *
.*       THE RETURN CODE IN REGISTER 15 IS THE ADDRESS THAT WAS       *
.*       ASSOCIATED WITH THE KEY BEFORE THE DELETE IF THE LENGTH VALUE*
.*       IS NOT CODED. THE CONDITION CODE SETTING DOES NOT ALWAYS     *
.*       AGREE WITH THE RETURN CODE IN THIS EVENT, SINCE THE CONDITION*
.*       CODE IS SET TO 01 (MINUS) WHEN THE DEL MACRO-INSTRUCTION     *
.*       DELETES THE LAST KEY-ADDRESS PAIR IN THE RPT. WHEN THE LV    *
.*       PARAMETER IS NOT CODED A BM INSTRUCTION WILL BRANCH WHEN THE *
.*       ADDRESS RETURNED IN REGISTER 15 IS THE LAST ADDRESS THAT WAS *
.*       IN THE RPT. A BNM INSTRUCTION WILL BRANCH WHEN THE ADDRESS   *
.*       RETURNED IN REGISTER 15 WAS NOT THE LAST ADDRESS IN THE RPT. *
.*       WHEN THE LENGTH VALUE IS CODED, THE CONDITION CODE SETTING IS*
.*       THE SAME AS ABOVE, BUT THE RETURN CODE IN REGISTER 15 IS SET *
.*       TO ZERO, SINCE THE FSPACE MACRO-INSTRUCTION SETS IT TO ZERO. *
.*       THE CONDITION CODE IS PRESERVED THROUGH THE FSPACE           *
.*       MACRO-INSTRUCTION, SO THAT IT IS THE SAME AS IT IS WHEN      *
.*       RETURNING FROM THE DEL SUBROUTINE IN THE MODULE IGARPT01.    *
.* AFTER THE DEL OPERATION, THE CURSOR IS SET BETWEEN THE TWO KEYS ON *
.* EITHER SIDE OF THE DELETED KEY, SO THAT IS A SCANL OR SCANR        *
.* MACRO-INSTRUCTION IS SUBSEQUENTLY EXECUTED THE CURSOR IS POSITIONED*
.* TO THE KEY LOWER OR HIGHER THAN THE DELETED KEY.                   *
.* THUS IT IS POSSIBLE TO PROCESS ALL THE ADDRESS IN THE RPT IN       *
.* ASCENDING ORDER, AND DELETE EACH PAIR AFTER IT HAS BEEN PROCESSED, *
.* BY USING ISCAN TO INITIALIZE THE CURSOR, AND THEN FOLLOWING EACH   *
.* SCANR BY A DEL, WHICH DELETES EACH ENTRY AFTER IT HAS BEEN         *
.* PROCESSED.                                                         *
.* A SAMPLE PROGRAM TO DO THIS IS AS FOLLOWS:                         *
.*       ISCAN TREE  SET THE CURSOR TO THE INITIAL STATE.             *
.* MORE: SCANR TREE,DONE=END  SET THE CURSOR TO THE NEXT.             *
.*       PROCESS THE RECORD AT THE ADDRESS IN REGISTER 15.            *
.*       DEL TREE,LV=80  DELETE THE CURSOR-SELECTED KEY-ADDRESS PAIR  *
.*                        FROM THE RADIX PARTITION TREE, AND RELEASE  *
.*                        THE 80-BYTE RECORD AREA TO THE SYSTEM VIA   *
.*                        THE FSPACE MACRO-INSTRUCTION.               *
.*       BNM MORE  BRANCH BACK TO SCAN MORE IF THERE IS STILL AT LEAST*
.*                        ONE ENTRY.                                  *
.**********************************************************************
         GBLC  &IGABLST  THE OFFSET INTO THE TREE HEADER FOR THE LIST  *
                         OF RPT ENTRY POINTS.
         GBLC  &IGADEL   INDEX OF THE ADDRESS OF THE DELETE ROUTINE    *
                         ADDRESS IN THE LIST OF ENTRY POINTS IN THE    *
                         TREE HEADER.
         GBLC  &IGADDR   THE ADDRESS OF THE MODULE IGARPTXX.
         GBLC  &IGARPT#  THE TYPE OF THE RADIX PARTITION TREE FROM ONE *
               OF THE PARAMETERS T OR TYPE.
         LCLC  &R,&Q
.*A000000                                                        Y02147
.**********************************************************************
         AIF   (K'&RECL EQ 0).NEW  SEE IF THE OLD PARAMETER RECL IS    *
                         CODED INSTEAD OF LV.
&TAG     DEL   &TREE,T=&T,TYPE=&TYPE,LV=&RECL,S=&S,SP=&SP
         AGO   .FIN
.NEW     ANOP
      RPTDSECT T=5,DS=NO
      RPTDSECT T=8,DS=NO
.**********************************************************************
&R       SETC  'R'
         AIF   (K'&TREE EQ K'&TREE(1)+2 AND N'&TREE EQ 1).LW2
&R       SETC  ' '
.LW2     AIF   ('&TREE' NE '(1)').LW3  SEE IF THE TREE ADDRESS IS      *
                         ALREADY IN R1.
         AIF   (K'&TAG EQ 0).LW4  SEE IF THERE IS NO TAG.
&TAG     EQU   *
         AGO   .LW4      SKIP THE LR INSTRUCTION.
.LW3     ANOP
&TAG     L&R   1,&TREE(1)
.LW4     ANOP
         L     15,(&IGABLST+&IGADEL)(,1)  ADDRESS OF THE DELETE ROUTINE
         BALR  14,15           LINK TO THE DELETE ROUTINE.
         AIF   (K'&LV EQ 0).FIN  SEE IF A LENGTH VALUE IS GIVEN.
         AIF   ('&LV' EQ '0').FIN  SEE IF THE LENGTH IS ZERO.
        FSPACE R,A=(15),S=&S,SP=&SP,LV=&LV  FREE THE RECORD AREA.
         SPM   14        RESTORE CONDITION CODE.
FIN&SYSNDX EQU *
.FIN     ANOP
         MEND
./ ADD NAME=DICT
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73127/Y02020                                        */
* /*                                                                 */
         MACRO
         DICT  &A,&B,&C,&D,&E
         LCLC  &N,&L,&M
&L       SETC  '        '
&M       SETC  '&A'.'&L'(1,8-K'&A)
&N       SETC  '&M'(1,2).'&M'(5,2)
Z&N      DC    CL4'&N'
         AIF   (&B EQ 32).COMB
         DC    AL1(&B),AL1(&C),AL1(&D),AL1(&E)
         MEXIT
.COMB    ANOP
&L       SETC  'L''&N'
         DC    AL1(&B),AL1(1+&N-ZCS),AL1(&L),AL1(&E)
         MEND
./ ADD NAME=DSCAN
         MACRO
&LABEL   DSCAN &KEY=,&ALT=,&SUCC=,&ROUT=,&BLANKS=,&MAXLEN=,&TYPE=,     X
               &MINLEN=,&IO=YES,&COMMA=YES,&CALLRT=NO
         LCLB  &SW1,&SW2,&SW3,&SW4,&SW5,&SW6,&SW7,&SW8
&SW8     SETB  0
         AIF   ('&ALT' EQ '').ALTOUT
&LABEL   DC    A(&ALT)                 ADDRESS OF ALTERNATE
         AGO   .CONT1
.ALTOUT  ANOP
&LABEL   DC    A(0)                    INDICATE NO ALTERNATE
.CONT1   AIF   ('&SUCC' EQ '').SUCCOUT
         DC    A(&SUCC)                ADDRESS OF SUCCESSOR
         AGO   .CONT2
.SUCCOUT ANOP
         DC    A(0)                    INDICATE NO SUCCESSOR
.CONT2   AIF   ('&ROUT' EQ '').ROUTOUT
         DC    A(&ROUT)                ADDR OF EXIT ROUTINE
         AGO   .CONT5
.ROUTOUT ANOP
         DC    A(0)                    INDICATE NO EXIT ROUTINE
.CONT5   ANOP
         AIF   ('&TYPE' NE 'A').CONT6
&SW1     SETB  1
         AGO   .CONT75
.CONT6   AIF   ('&TYPE' NE 'N').CONT7
&SW2     SETB  1
         AGO   .CONT75
.CONT7   ANOP
         AIF   ('&TYPE' NE 'H').CONT72
&SW6     SETB  1
         AGO   .CONT75
.CONT72  ANOP
         AIF   ('&KEY' NE '').CONT75
&SW1     SETB  1
&SW2     SETB  1
.CONT75  AIF   ('&BLANKS' NE 'ON').CONT8
&SW3     SETB  1
.CONT8   AIF   ('&IO' NE 'YES').CONT85
&SW4     SETB  1
.CONT85  AIF   ('&COMMA' NE 'YES').CONT86
&SW5     SETB  1
.CONT86  AIF   ('&CALLRT' NE 'YES').CONT11                   @Z67SP00
&SW7     SETB  1                                             @Z67SP00
.CONT11  ANOP
         DC    B'&SW1.&SW2.&SW3.&SW4.&SW5.&SW6.&SW7.&SW8' TYPE SW
         AIF   ('&MAXLEN' EQ '').NOLN
         DC    AL1(&MAXLEN)            MAXIMUM ARGUMENT LENGTH
         AGO   .CONT9
.NOLN    ANOP
         DC    AL1(255)                DEFAULT MAX ARG LENGTH
.CONT9   AIF   ('&MINLEN' EQ '').NOMIN
         DC    AL1(&MINLEN)            MINIMUM ARGUMENT LENGTH
         AGO   .CONT10
.NOMIN   ANOP
         DC    AL1(01)                 DEFAULT MIN ARG LENGTH
.CONT10  AIF   ('&KEY' NE '').CONT4
         DC    H'0'                    PARM INDICATOR
         MEXIT
.CONT4   DC    AL1(IHX&SYSNDX-*-1)     LENGTH OF KEY
         DC    C&KEY
IHX&SYSNDX EQU      *
         MEND
./ ADD NAME=DSW
         MACRO
&NAME    DSW
         GBLA  &INDEX
         GBLC  &DEFNAME(255),&SWNAME(255)
         LCLA  &I,&J
         LCLC  &X,&Y
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* DEFINES SWITCH BYTE AND NAMES THE BITS IN THE BYTE
.*
         AIF   (N'&SYSLIST GT 8).ERR1
&X       SETC  'JSW&SYSNDX'
         AIF   (K'&NAME EQ 0).NEXT
&X       SETC  '&NAME'
.NEXT    ANOP
&X       DS    X
         AIF   (N'&SYSLIST EQ 0).EXIT
.LOOP    ANOP
&J       SETA  &I+1
         AIF   (K'&SYSLIST(&J) EQ 0).BYPASS
         AIF   (K'&SYSLIST(&J) GT 8).ERR1
&INDEX   SETA  &INDEX+1
         AIF   (&INDEX GT 255).ERR2
&Y       SETC  '&SYSLIST(&J)'
&DEFNAME(&INDEX) SETC '&X'
&SWNAME(&INDEX)  SETC '&Y'
&Y       EQU   BIT&I
.BYPASS  ANOP
&I       SETA  &I+1
         AIF   (N'&SYSLIST GT &I).LOOP
.EXIT    MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEXIT
.ERR2    MNOTE 8,'TOO MANY SWITCHES DEFINED FOR ASSEMBLY.'
         MEND
./ ADD NAME=EDSECT
************************************************************
* VS1 RELEASE 3 CHANGES
*A418600                                                        OX00224
* VS1 RELEASE 3.1 CHANGES
*A150960                                                        OX04106
*A405500,407520                                                @OX07230
*A046200-046420                                                @OZ06551
*D046100                                                       @OZ06551
*C042000                                                       @OZ06551
*A389720                                                       @AY11215
ERRMESS  DSECT                          DSECT DEFINED FOR ERRSTK
***********************************************************************
EMSGSVTY DS    C                        ERROR MSG SEVERITY CODE
EMSGCODE DS    C                        ERROR MSG CODE
EMSGHL   EQU   *-EMSGSVTY               ERROR MSG ENTRY ADD-ON LENGTH
ENTRYLNG DS    C                        ERROR MSG ENTRY LENGTH
EMSGNTRY DS    CL8                      ERROR MSG ENTRY
ERMEND   EQU   *-ERRMESS
         EJECT
************************************************************
EDSECT   DSECT ,                        EDIT PHASE COMMON AREA
************************************************************
         USING EDSECT,MODCOMM           EDSECT BASE REGISTER
EDSCTGO  EQU   *                        BEGIN OF MODULE COMMON AREA
SWITCH1  DSW   SMDEF,                   WITHIN MAC DEF (SET BY MACRO)  X
               SXPRTO,                  PROTO EXPECTED (SET BY MACRO)  X
               SMISCN,                  RETURN TO MISCAN               X
               SNOPSYN,                 OPSYN NO LONGER ALLOW  @OZ06551X
               SUBLERR,                 SUBLIST IN ERROR       @OZ06551X
               ENDSUBL,                 END OF SUBL IN MI-SCAN @OZ06551X
               ALTERN                   IN ALTERNATE FORM      @OZ06551
*                                                              @OZ06551
SWITCH2  DSW   SONECD,                  READ ONE CARD (REPRO)          X
               SBYCNT,                  BYPASS ALL CONTINUATIONS       X
               SONECT,                  READ ONE CONTINUATION          X
               SALLCT,                  READ ALL CONTINUATIONS         X
               SBYONE,                  BYPASS ONE CARD IN EDITED FORM X
               ,                                                       X
               SCTLRTN,                 RETURN TO CALLER               X
               SNOPND                   RETURN TO CALLER
*
SWITCH3  DSW   SCMTCT,                  COMMENTS CONTINUED             X
               SNXTCT,                  NEXT CD CNT'N OF THIS CD       X
               SPRVCT,                  THIS CD CNT'N OF PREVIOUS CD   X
               SLSTCD,                  LAST CARD                      X
               SINEOF,                  EOF ON SYSTEM INPUT            X
               SGBLCL,                  PROC'G GBLX, LCLX STMT         X
               SMI,                     EDITING MACRO INSTRUCTION      X
               SUBSOP                   SUBSTITUTED OP CODE FOUND
*
SWITCH4  DSW   SPGRMD,                  PROCESSING PROGRAMMER MACRO    X
               SOPNCD,                  IN OPEN CODE                   X
               SSYSMD,                  IN SYSTEM MACRO DEFINITION     X
               SICTL,                   ICTL PROCESSED IN THIS RUN     X
               SNOACTR,                                                X
               SABORT,                                                 X
               SKPMND,                  SKIP TO MEND                   X
               SKPEND                   SKIP TO END
*
SWITCH5  DSW   SCOPY,                   COPY STATEMENT                 X
               SXMCRO,                  EXPECT MACRO (EDITING SYS MD'S)X
               SFSTCD,                  READ FIRST CARD                X
               SDINIT,                  PREPARE TO INIT./CLOSE D'S     X
               SDENT,                   PREPARE TO MAKE D ENTRY        X
               SUPDNT,                  SUPPRESS DIRECTORY ENTRY       X
               SMDDENTR,                MDD ENTRY MADE FOR THIS MACRO  X
               AMPER                    AMPERSAND IN SUBLIST
*
SWITCH6  DSW   SUBLST,                  PROCESSING SUBLIST             X
               POSSUBL,                 FIRST SCAN OF SUBLIST CANDIDATEX
               SCNCAT,                  CONCATENATION IN OPERAND       X
               SKWPRM,                  PROCESSING KEYWORD PARAMETER   X
               PROTOCAL,                EDITING PROTO/MACRO CALL       X
               SKPNAME,                 SKIP TO OP CODE FIELD          X
               SPRMER,                  PARAMETER ERROR                X
               SENDST                   END STATEMENT ENCOUNTERED
*
SWITCH7  DSW   SNMFND,                  NAME FOUND                     X
               SNOFND,                  FIELD NOT FOUND                X
               SNOSMCRO,                NO MACRO STMT IN SYS MAC DEF   X
               SBDPROTO,                BAD PROTOTYPE STATEMENT        X
               SNOSYSMD,                SYSTEM MAC DEF NOT FOUND       X
               SDTCMT,                  .* TYPE COMMENTS               X
               SASTCMT,                 * TYPE COMMENT                 X
               STRCMT                   * TYPE COMMENT
*
SWITCH8  DSW   ,,,,,                    DO NOT USE                     X
               SENAME,                  EDITING NAME FIELD             X
               SEOPCD,                  EDITING OPERATION FIELD        X
               SEOPND                   EDITING OPERAND FIELD
*
SWITCH9  DSW   SINCPY,                  IN COPY CODE                   X
               SISEQ,                   SEQ CHECK (SET BY ISEQ)        X
               SNOCNT,                  CNT'N NOT ALLOWED (SET BY ICTL)X
               SMAC,                    MACRO STMT COPIED AT THIS LEVELX
               AMPER1                   VARIABLE SYM IN POSSUBL OX04106
*
AOTSW    DSW   AOEND,                   END STATEMENT                  X
               AOMEND,                  MEND STATEMENT                 X
               AICOPY,                  ICTL/COPY STATEMENT            X
               AOPSYN,                  OPSYN STATEMENT                X
               AOCOPYX,                 ILLEGAL WITHIN COPY CODE       X
               AOMACROX,                ILLEGAL WITHIN MACRO DEF       X
               AOPENCDX,                ILLEGAL WITHIN OPEN CODE       X
               AOKBTNPM                 ALLOWED BETWEEN PROG'R MACROS
* X0 = ALLOWED ANYWHERE
*
GSCNSW   DSW   GQST,                    ODD QUOTE CHECKER              X
               GSUBS,                   FIELD NEEDS SUBSTITUTION       X
               GAIF,                    AIF STATEMENT BEING SCANNED    X
               METSW                    META TEXT INDICATION
*
PARMSTAT DSW   DMIENT,                  ENTERED FROM MIPRTOIN ROUTINE  X
               DUMOPND,                 OPERAND TREATED AS DUMMY       X
               DSDTX,                   DISALLOW SDT                   X
               DLPRN,                   LEFT PARENTHESIS WAS READ      X
               DECMA,                   END OPERAND - COMMA PASSED     X
               DEEQL,                   END OPERAND - EQUAL SIGN PASSEDX
               DQUOT,                   ODD QUOTE STATUS               X
               DNOCRD                   NEW CARD WAS READ
*
NAMBYT   DSW   NQTSTG,                  QUOTED STRING                  X
               NNALFA,                  FIRST CARD NOT ALPHA           X
               NCNCAT,                  CONCATENATION                  X
               NMPURE,                  IMPURITY (PASSED END COLUMN)   X
               NNTGER,                  INTEGER (DECIMAL)              X
               NOSYM,                   O SYM                          X
               NSSYM,                   SEQUENCE SYMBOL                X
               NVSYM                    V SYM
*
GSUMRY   DSW   RQTSTG,                  QUOTED STRING                  X
               RNALFA,                  FIRST CHARACTER NOT ALPHA      X
               RCNCAT,                  CONCATENATION                  X
               RMPURE,                  IMPURITY  (PASSED END COLUMN)  X
               RNTGER,                  INTEGER (DECIMAL)              X
               ROSYM,                   ORDINARY SYMBOL                X
               RSSYM,                   SEQUENCE SYMBOL                X
               RVSYM                    VARIABLE SYMBOL
*  BLANK = ALL ZEROS
*
         SPACE 3
MSERR    DSW   MXVS,                    INVALID VARIABLE SYMBOL        X
               MXRPRN                   EXCESSIVE RIGHT PARENTHESES
SDENTR   DS    C                        DIRECTORY ENTRY INDEX
SDENTR1  DS    C                        DIR INDEX FOR EXTRN/WXTRN OPND
DDNDX    DS    H                        D ENTRY INDEX
DDNDX1   EQU   DDNDX+1                  D ENTRY INDEX
DSTGEND  DC    A(0)                     DESTINATION AREA END PLUS 1
ENDATA   DC    A(0)                     END OF DATA IN WORK BUFFER
FPTRSV   DC    A(0)                     FIELD POINTER SAVE AREA
INPUT    DC    A(0)                     INPUT WORK BUFFER ADDRESS
IPTRSV   DC    A(0)                     INPUT BUFFER ADDRESS SAVE AREA
IRTNSV   DC    A(0)                     RETURNED ADDRESS SAVE AREA
OUTADR   DC    A(0)                     OUTPUT BUFFER LOCATION
VECPTR   DS    F                        PARAM VECTOR POINTER SAVE AREA
FSTGL    DS    F                        BEGIN OF STRING (PARAM)
AERRSTK  DC    A(ERRSTK)                ERROR MSG STACK ADDRESS
ESTKNDX  DC    A(0)                     ERROR MSG STACK INDEX
DSTGBGN  DS    F                        DESTINATION AREA POINTER
DSTGADJ  DS    F                        DEST. AREA POINTER AFTER ADJ.
DSTGNDX  DS    F                        DESTINATION AREA INDEX
STGNDX   DS    F                        DISPATCH AREA INDEX
EDTSVX   DS    F                        RETURN/TLINK REG SAVE
EDTSVY   DS    F                        RETURN POINTER SAVE AREA
EDTSVZ   DS    5F                       R15,R3 SAVE AREA
OCPTRSV  DS    F                        OP CODE POINTER SAVE AREA
INTERMET DS    F                        INTERMEDIATE LOCATION IN MT
MEZZOPTR DS    F                        INTERMEDIATE LOC IN WORK AREA
OPNDPTR  DS    F                        OPERAND FIELD POINTER SAVED
RTNSV    DS    F                        POINTER SAVE AREA
MIOPNDSV DS    F
********************DO NOT CHANGE ORDER OF NAMP AND NAML***********
NAMP     DS    F                        SYMBOL LOCATION POINTER
NAML     DS    F                        MOVE LENGTH OF THE SYMBOL
*******************************************************************
NAMP1    DS    F                        SYMBOL PTR TO EXTRN/WXTRN OPND
NAML1    DS    F                        ADDT'L SYMBOL LENGTH SAVE AREA
NOTESV1  DS    F                        NOTED VALUE SAVE AREA 1
NOTESV2  DS    F                        NOTED VALUE SAVE AREA
SEQSV    DC    XL40'00'                 SEQ FIELD SAVE AREA
COPYSV1  EQU   SEQSV
COPYSV2  DS    F                        SWITCH SAVE AREA
COPYSV2A EQU   COPYSV2+1                .
COPYSV2B EQU   COPYSV2A+1               .
COPYSV2C EQU   COPYSV2B+1               .
COPYSV3  DS    7F                       ICTL FORMAT SAVE AREA
COPYSV4  DS    6F
HICVAL   DS    F                        SDT HIGH CHAR VAL
HICVAL1  EQU   HICVAL+1                 SAVE AREA
HICCNT   EQU   HICVAL+2                 MAX CHAR COUNT SAVE AREA
TBGLN    DS    F                        PREBEGIN STRING LENGTH
TSRCLN   DS    F                        DATA PORTION TRUE LENGTH
TCNTLN   DS    F                        CONTINUATION FLD TRUE LENGTH
PBGLEN   DS    F                        PREBEGIN STRING LENGTH MINUS 1
PNDLEN   DS    F                        POSTEND STRING LENGTH MINUS 1
ENDCOL   DS    F                        END COLUMN MINUS 1
ENDCOL3  EQU   ENDCOL+3
SMACNAM  DS    CL8                      MACRO NAME SAVE AREA
COPYCODE DS    CL8                      COPY CODE
COPYLN   DS    H                        COPY CODE LENGTH
DSTGLN   DS    H                        STRING LENGTH
OCSAVE   DS    H                        INTERNAL OP CODE SAVE AREA
PRNLVL   DS    H                        PAREN LEVEL COUNTER
PRNLVL1  EQU   PRNLVL+1
FLAGBT   DS    C                        FLAG BYTE SAVE AREA
DTLENG   DS    H                        DATA LENGTH
OPNDCTR  DS    H                        OPERAND COUNTER
OPNDC1   EQU   OPNDCTR+1                OPERAND COUNTER
PARML    DS    H                        TOTAL PARM TEXT LENGTH @AY11215
MINDIF   DS    H                        DIF BETWEEN MINPUT AND INPUT
MTXTP    DS    F                        MI/PROTO META TEXT POINTER
MINPUT   DS    F                        CURRENT MI DATA AREA POINTER
MINPSTD  DS    F                        STANDARD MINPUT SAVED
STNPSTD  DS    F                        STANDARD INPUT SAVED
MINPADJ  DS    F                        ADJUSTED MINPUT SAVED
STNPADJ  DS    F                        ADJUSTED INPUT SAVED
OPCDPTR  DS    F                        OP CODE FIELD POINTER
ENDWKA   DS    F                        END OF DATA AREA PLUS 1
ENDWKADJ DS    F                        ADJUSTED 'ENDWKA'      @OX07230
MREGSV   DS    F                        EDSECT BASE REG SAVED
SVENDWKA DS    F                        SAVE END OF DATA AREA+1
COLCTR   DS    F                        COLUMN COUNTER
CRDCTR   EQU   COLCTR+2                 CARD COUNTER
OFPTRSV  DS    F                        INDEXP SAVE AREA
SVMINDIF DS    H                        SAVE STANDARD MINDIF
MINDFADJ DS    H                        ADJUSTED 'MINDIF'      @OX07230
LASTFIND DS    CL8                      LAST FOUND COPY MEMBER
         SPACE
*        THE FOLLOWING 7 CONSTANTS MUST BE IN THE PREARRANGED SEQUENCE
RAVSP    DC    A(RSTACK)              1 RSTACK NEXT AVAILABLE LOCATION
NRSTK    DC    A(RSTACK+L'RSTACK)     2 END OF RSTACK + 1
RSTACK   DS    CL200                  3 MAXIMUM OF 25 ENTRIES
CSTK     DS    CL(6*(L'JNOTEVAL+9))   4 COPY CODE RECURSION STACK
CSTKX    EQU   *
         DS    0F
NCSTK    DC    A(CSTK+L'CSTK)           5 ENDING ADDRESS OF CSTK+1
BCSTK    DC    A(CSTK)                  6 CSTK BEGIN ADDRESS
CSTKADR  DC    A(CSTK)                  7 CSTK NEXT AVAILABLE LOCATION
SAVMALL  DS    16F                      REGISTER SAVE AREA
TPSAVE   EQU   SAVMALL
TPSAVE1  EQU   SAVMALL+4                                        OX00224
ERRCNT   DS    H                        ERROR MSG COUNT - MAX 5 MSGS.
ERRCNT1  EQU   ERRCNT+1
ERRSTK   DS    CL(ERMEND*6)             ERROR MSG STACK
*        WORKSPACE FOR POSTFIX ROUTINE
SVLAST   DS    F                        LAST STACK ELEMENT POINTER
ALAST    DS    F                        START OF STACK--CONSTANT
TEMP     EQU   *                        PRE-STACK ENTRY
TEMPOP   DS    C                        OPERATOR
TEMPBIND DS    C                        BINDING FACTOR
         SPACE
STACK    DS    36H                      MAXIMUM OF 35 OPERATORS IN     X
                                        STACK ( 5+ PAREN LEVELS)
         SPACE 3
         DS    0H
VSFLG    DC    H'0'                     SET VAR TYPE SAVED FOR NAME
VSTAT    EQU   VSFLG+1
STGCNT   DC    X'00'                    STRING COUNTER
CNTCTR   DC    X'00'                    CONTINUATION CARD COUNTER
SEQSVT   DC    40X'00'                  SEQ FIELD - COMPARE V. SEQSV
         SPACE 3
         DS    0F
ADJSV    DS    F                        RETURN POINTER SAVED HERE
VSRSV    DS    F                        VSRTN RETURN LINKAGE
VSRSV1   DS    F                        HEADER DATA POINTER
MPOPSV   DS    F                        MPOPND ROUTINE RETURN LINKAGE
NEXPSV   DS    F                        RETURN LINKAGE SAVED
SUBSAVE  DS    2F                       MPOPSV/NEXPSV SAVE AREA
REGSAVE3 DS    F                        REGISTER SAVE AREA
         SPACE 3
         DS    0H
DNTERR   DS    CL10
*        BAL   TLINK,SNAPERR            LOG ERROR
         ORG   DNTERR+4                 REDEFINE
         DC    AL2(2)                   WRNERR ENTRY CODE
DSEVCD   DC    AL1(0)                   SEVERITY CODE
DERRCD   DC    AL1(0)                   ERROR CODE
*        BR    RETURN                   RETURN TO CALLER
         ORG
ENDDNTL  EQU   *-DNTERR
         SPACE 3
***********************************************************************
*
*         START OF EDIT PHASE COMMON INITIALIZED BY THE EDIT PHASE
*               DICTIONARY ROUTINES
*  THE PORTION OF COMMON BOUNDED BY DICTCOMS-DICTCOME IS INITIALIZED
*         AT THE START OF THE EDIT PHASE BY PHASENT
DICTCOMS EQU   *
FREESTRT DS    F                        PTR TO START OF DICT WORK AREA
VSDSTRT  DS    F                        PTR TO START OF VARB SYMB DIR
MDDSTRT  DS    F                        PTR TO START OF MACR DEFN DIR
SSPARMS  EQU   *                        BASE FOR SEQ SYMB REFER CONSTNT
SSRDSTRT DS    F                        PTR TO START OF SEQ SYMB REF DT
VSDSLOT  DS    F                        PTR TO NEXT AVAIL VSD ENTRY
OSPARMS  EQU   *                        BASE FOR ORD SYMB REFER CONSTNT
OSRDSTRT DS    F                        PTR TO START OF ORD SYMB REF DT
MDDSLOT  DS    F                        PTR TO NEXT AVAIL MDD ENTRY
CURMDDPT DS    F                        PTR TO CURRENT MDD ENTRY
REGSAVE1 DS    F                        REGISTER SAVE AREA
GTMVALOC DS    F                        MACRO DEFINITION VECTOR LENGTH
HIBYTE0  DS    F                        FULL WORD WORK AREA
MDDCHN   DS    F                        MASTER LINK, CHAINED MOD ENTRYS
MDDCNT   DS    F                        NUMBER OF MDD ENTRYS
OPSCHN   DS    F                        MASTER LINK, CHAINED OPSYN ENTR
*  THE PORTION OF COMMON BOUNDED BY MDINITS-TSINITE IS REINITIALIZED
*         FOR EACH MACRO DEFINITION TEXT SEGMENT BY MACRENT.
MDINITS  EQU   *
GTPVALOC DS    F                        POSITIONAL PARAM VECTOR LENGTH
GTKVALOC DS    F                        KEYWORD PARAM VECTOR LENGTH
*  THE PORTION OF COMMON BOUNDED BY OCINITS-TSININTE IS REINITIALIZED
*        FOR THE OPEN CODE TEXT SEGMENT BY OPENENT.
OCINITS  EQU   *
GTLDALOC DS    F                        LOCAL DICTIONARY LENGTH
GTGVALOC DS    F                        GLOBAL VECTOR LENGTH
GTSDALOC DS    F                        SEQ SYMB REFER DICT LENGTH
SSRAPDIS DS    H                        DISPL IN SSRD FOR NEXT ENTRY
TSINITE  EQU   *
SWITCHA  DSW   FNDFLG,                  MATCHING DIRECT ENTRY FOUND    X
               NOTEFIL2,                NOTE OF NEXT RECORD REQ'D      X
               LSTSYSMS,                SYSTEM MACRO EDIT COMPLETED    X
               ITERSW,                  SYSTEM VARIABLE DEFINITIONS    X
               ,,,
FSWITCH  DS    X                        FIRST RECORD WRITTEN NOTED
GTODALOC DS    F                        ORD SYMB REF DICT LENGTH
OSRAPDIS DS    H                        DISPL IN OSRD FOR NEXT ENTRY
SSDLNGTH DS    H                        LENGTH OF SSRD ENTRY
SSFLGVAL DS    C                        TEXT FLAG FOR SEQ SYMB REFER
SREFTYPE DS    C                        RECORD TYPE, SEQ SYMB REFER
         DS    2H                       FILLER FOR ALIGNMENT (REQ'D)
OSDLNGTH DS    H                        LENGTH OF OSRD ENTRY
OSFLGVAL DS    C                        TEXT FLAG FOR ORD SYMB REFER
OREFTYPE DS    C                        RECORD TYPE, ORD SYMB REFER
REGSAVE2 DS    F                        REGISTER SAVE AREA
PIOPARMB DS    F                        FULL I/O AREA LENGTH
PIOPARMA DS    F                        CURRENT I/O AREA ADDRESS
PIOPARMC DS    H                        CURRENT I/O AREA LENGTH
IOCID    DSW   IZRO,IONE,               OP CODE LENGTH                 X
               ITWO,ITRE                OP CODE TYPE
IOCLNG   EQU   IZRO+IONE                OP CODE LENGTH REDEFINED
*              00 = MACRO INSTRUCTION OR UNDEFINED OP CODE
*              01 = ONE BYTE LONG OP CODE
*              11 = TWO BYTE LONG OP CODE
IOCTYP   EQU   ITWO+ITRE                OP CODE TYPE REDEFINED
*              00 = MACHINE OP
*              01 = EXTENDED MNEMONICS
*              11 = ASSEMBLER OP
*        BITS 4-7 = CURRENTLY NOT USED, ALL ZERO
*
CONCODE  DSW   B0,B1,B2,B3,B4,B5,B6,B7
*
ATTRSV   DSW   AT0,AT1,AT2,AT3,AT4,AT5,AT6,AT7
ATT      EQU   AT6                      00000010
ATL      EQU   AT6+AT7                  00000011
ATS      EQU   AT5                      00000100
ATI      EQU   AT5+AT7                  00000101
ATK      EQU   AT5+AT6                  00000110
ATN      EQU   AT5+AT6+AT7              00000111
SLST     EQU   AT2                      SYSLIST
*              0 = VARIABLE SYMBOL OTHER THAN SYSLIST
*              1 = SYSLIST
ATSUBS   EQU   AT0+AT1
*              00 = NON-SUBSCRIPT
*              01 = SINGLE SUBSCRIPT
*              11 = DOUBLE SUBSCRIPT
MCALL    DSW   MCLA,                    SETA TYPE                      X
               MCLC,                    SETC TYPE                      X
               MCMPLX,,                 COMPLEX STATE                  X
               MSLST                    SYSLIST
FLGBYT   DSW   VTYP1,VTYP2,VPTYP,VSNS,VSLS,VDIM,VSTP1,VSTP2
*  VTYP1+VTYP2 - TYPE-- 00 = GLOBAL
*                       01 = LOCAL
*                       10 = NOT DEFINED
*                       11 = PARAMETER
*  VPTYP - POSITIONAL/KEYWORD-- 0 = POSITIONAL
*                               1 = KEYWORD
*  VSNS - SYSTEM/NON-SYSTEM-- 0 = NON-SYSTEM
*                             1 = SYSTEM
*  VSLS - SYSLIST/NON-SYSLIST-- 0 = NON-SYSLIST
*                               1 = SYSLIST
*  VDIM - DIMENSIONED/NON-DIMENSIONED-- 0 = NON-DIMENSIONED
*                                        1 = DIMENSIONED
*  VSTP1+VSTP2 - SUBTYPE-- 00 = A-TYPE
*                          01 = B-TYPE
*                          10 = PARAMETER
*                          11 = C-TYPE
*
GAFLG    EQU   D0                       GBLA FLAG
GBFLG    EQU   VSTP2                    GBLB FLAG
GCFLG    EQU   VSTP1+VSTP2              GBLC FALG
LAFLG    EQU   VTYP2                    LCLA FLAG
LBFLG    EQU   VTYP2+VSTP2              LCLB FLAG
LCFLG    EQU   VTYP2+VSTP1+VSTP2        LCLC FLAG
PARMFLG  EQU   VTYP1+VTYP2+VSTP1        PARAMETER FLAG
KPARMFLG EQU   PARMFLG+VPTYP            KEYWORD PARAMETER FLAG
*
NOTESAVE DS    XL8                      NOTE OF START OF MACRO DEFINTN
SAVENOTE DS    XL8                      NOTE OF START OF DICT DATA FILE
DICTCOME EQU   *
REGSTACK DS    8F                       REGISTER SAVE AREA
         SPACE 3
         DS    4F                       PATCH AREA
ENDEDSCT DS    0D                       END OF MODULE COMMON AREA
***********************************************************************
./ ADD NAME=ENDJDT
         MACRO
&NAME    ENDJDT
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = IEFJDEND                                        @H1C
.*                                                                    *
.*   DESCRIPTIVE NAME =  END JCL DEFINITION TABLE                     *
.*                                                                    *
.*   COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1982                   *
.*                LICENSED MATERIAL - PROGRAM,                        *
.*                PROPERTY OF IBM, REFER TO COPYRIGHT                 *
.*                INSTRUCTIONS FORM G120-2083                         *
.*                                                                    *
.*   FUNCTION =  ENDJDT MACRO SPECIFIES THE END OF THE JCL            *
.*               DEFINITION TABLE  SPECIFIED BY THE JDTMAC            *
.*               MACRO.  IT  SETS UP  EQUATES  FOR JDVERB,            *
.*               JDKEY AND JDPARM MACRO'S OFFSETS.                    *
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = NONE                                           *
.*                                                                    *
.*      RESTRICTIONS = THE ENDJDT MACRO CAN ONLY FOLLOW JDPARM,       *
.*                     JDVERB, OR AN ENDSUB MACRO.                 @H1C
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO ENDJDT *
.*                                                                    *
.*           PARAMETER          DESCRIPTION                           *
.*                                                                    *
.*           - &NAME            ONLY USED AS A LABEL ON THE EXPANSION.*
.*                                                                    *
.*     OUTPUT = EQUATES TO DESIGNATE THE LAST VERB, KEYWORD,          *
.*              AND PARAMETER BY MAKING THE "NEXT" OFFSET OF EACH     *
.*              BE EQUAL TO THE "PRESENT" OFFSET. JDVERB, JDKEY,      *
.*              AND JDPARM USE THESE VARIABLES IN AN A-CON.           *
.*                                                                    *
.*              FOR EXAMPLE- JDPARM USES:                             *
.*                PM&P1   DC    AL2(PM&P2-PM&P1) TO CREATE ITS        *
.*                OFFSET. THIS MAKES THE DC IN THE LAST MACROS OF     *
.*                EACH TO GENERATE A ZERO.                            *
.*                                                                    *
.*              THE EQUATES ARE AS FOLLOWS IF PRECEEDED BY JDPARM  @H1C
.*              OR ENDSUB:                                         @H1A
.*                                                                    *
.*              VB&V2   EQU   VB&V1                                   *
.*              KY&K2   EQU   KY&K1                                   *
.*              PM&P2   EQU   PM&P1                                   *
.*                                                                    *
.*              THE EQUATES ARE AS FOLLOWS IF PRECEEDED BY JDVERB: @H1A
.*                                                                    *
.*              VB&V2   EQU   VB&V1                                @H1A
.*              KY&K2   EQU   VB&K1                                @H1A
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE ENDJDT MACRO.             *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN MACRO IS NOT INVOKED IN THE CORRECT       *
.*              ORDER (SEE RESTRICTIONS AND MESSAGES)                 *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-TERMINATING ERROR DETECTED BY THE ENDJDT MACRO.        *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 16                    *
.*              ISSUED WHEN JDTMAC MACRO IS NOT INVOKED FIRST TO      *
.*              START JDTS. (SEE RESTRICTIONS AND MESSAGES)           *
.*                                                                    *
.*   EXTERNAL REFERENCES = N/A                                        *
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   ERROR MNOTES =                                                   *
.*                                                                    *
.*    MNOTE 12,'ENDJDT MACRO SPECIFIED OUT OF ORDER'                  *
.*                                                                    *
.*    MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'*
.*                                                                    *
.*   CHANGE ACTIVITY = H0,H1                                       @H1C
.*    $H0= EXTJCL JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL       *
.*    $H1= EXTJCL JBB1328 811202 PDC5: SUPPORT FOR EXTENDED JCL    @H1A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A EQUATES ALLOW A VERB WITHOUT A KEYWORD/PARAMETER COMBINATION  @H1A
         GBLA  &V1,&V2,&K1,&K2,&P1,&P2  VARIABLES FOR OFFSETS
.*                               V=VERB, K=KEYWORD, P=PARAMETER COUNTER
.*--------------------------------------------------------------------*
.*  GLOBALS USED IN THIS MACRO THAT MAY BE ACTIVE OR BE MADE ACTIVE   *
.*  RESPECTIVELY: JDTMAC, JDVERB, JDKEY, JDPARM, JDSUB, ENDSUB AND    *
.*                ENDJDT.                                             *
.*--------------------------------------------------------------------*
         GBLB  &JACT,&VACT,&KACT,&PACT,&SPACT,&EPACT,&EJACT
.*--------------------------------------------------------------------*
.*       CHECK TO SEE IF MACRO SPECIFIED OUT OF ORDER                 *
.*--------------------------------------------------------------------*
         AIF   (&VACT EQ 1).VRBEQU                                 @H1A
         AIF   (&PACT EQ 1 OR &EPACT EQ 1).ALLEQU                  @H1C
.*--------------------------------------------------------------------*
.*       IF NONE OF THE FOLLOWING BITS ARE ON THEN THIS MUST BE THE   *
.*       FIRST MACRO INVOKED IN THE JDT DEFINITIONS.                  *
.*--------------------------------------------------------------------*
         AIF   (&JACT EQ 0 AND &KACT EQ 0 AND &SPACT EQ 0 AND &EJACT EQ+
                0).NOJDT      NONE ON?  GO MNOTE IT.               @H1C
.*--------------------------------------------------------------------*
.*       MACRO SPECIFIED OUT OF ORDER-> MNOTE IT.                     *
.*--------------------------------------------------------------------*
         MNOTE 12,'ENDJDT MACRO SPECIFIED OUT OF ORDER'
         AGO   .RESET
.*--------------------------------------------------------------------*
.*  JDTMAC MUST BE THE FIRST MACRO SPECIFIED, BUT IS NOT-> MNOTE IT.  *
.*--------------------------------------------------------------------*
.NOJDT   ANOP
       MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'
         MEXIT
.*--------------------------------------------------------------------*
.*       EQUATES FOR LAST VERB TO MAKE THE OFFSETS OF THE NEXT VERB   *
.*       AND KEYWORD EQUAL TO ZEROES.                                 *
.*--------------------------------------------------------------------*
.VRBEQU  ANOP                                                      @H1A
VB&V2    EQU   VB&V1             ZERO FOR THE LAST VERB OFFSET     @H1A
KY&K2    EQU   VB&V1             ZERO FOR THE LAST KEYWORD OFFSET  @H1A
         AGO   .RESET                                              @H1A
.*--------------------------------------------------------------------*
.*       EQUATES FOR LAST VERB, KEYWORD, AND PARAMETER TO MAKE THE    *
.*       OFFSETS OF THOSE EQUAL TO ZEROES.                            *
.*--------------------------------------------------------------------*
.ALLEQU  ANOP                                                      @H1A
VB&V2    EQU   VB&V1            ZERO FOR THE LAST VERB OFFSET      @H1M
KY&K2    EQU   KY&K1            ZERO FOR THE LAST KEYWORD OFFSET   @H1M
PM&P2    EQU   PM&P1            ZERO FOR THE LAST PARAMETER OFFSET @H1M
.*--------------------------------------------------------------------*
.*       RESET THE APPROPRIATE ACTIVE GLOBAL BIT.                     *
.*--------------------------------------------------------------------*
.RESET   ANOP
&JACT    SETB  0                 RESET JDT MACRO GLOBAL BIT
&VACT    SETB  0                 RESET VERB GLOBAL BIT
&KACT    SETB  0                 RESET KEYWORD GLOBAL BIT
&PACT    SETB  0                 RESET PARAMETER GLOBAL BIT
&SPACT   SETB  0                 RESET SUBLIST GLOBAL BIT
&EPACT   SETB  0                 RESET END SUBLIST GLOBAL BIT
&EJACT   SETB  1                 SET THIS MACROS GLOBAL BIT
         MEND
./ ADD NAME=ENDSUB
         MACRO
&NAME    ENDSUB
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = ENDSUB                                             *
.*                                                                    *
.*   DESCRIPTIVE NAME = END SUBLIST DEFINITION                        *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,1983,              *
.*                LICENSED MATERIAL - PROGRAM,                        *
.*                PROPERTY OF IBM, REFER TO COPYRIGHT                 *
.*                INSTRUCTIONS FORM G120-2083                         *
.*                                                                    *
.*   STATUS = OS/VS2 JBB1329                                          *
.*                                                                    *
.*   FUNCTION = ENDSUB MACRO SPECIFIES THE END OF THE SUBLIST         *
.*              DEFINITION SPECIFIED BY THE JDSUB MACRO.              *
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = NONE                                           *
.*                                                                    *
.*      RESTRICTIONS = THE ENDSUB MACRO CAN ONLY FOLLOW JDPARM,       *
.*                     PROVIDING THAT IT  WAS DEFINED  AS BEING       *
.*                     USED (DEFINED) AS A SUBLIST MACRO.             *
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO ENDSUB *
.*                                                                    *
.*           PARAMETER          DESCRIPTION                           *
.*                                                                    *
.*           - &NAME            ONLY USED AS A LABEL ON THE EXPANSION.*
.*                                                                    *
.*     OUTPUT = THERE IS NO OUTPUT FOR THIS MACRO.                    *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE ENDSUB MACRO.             *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN MACRO IS NOT INVOKED IN THE CORRECT       *
.*              ORDER (SEE RESTRICTIONS AND MESSAGES)                 *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE ENDSUB MACRO.             *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 16                    *
.*              ISSUED WHEN JDTMAC MACRO IS NOT INVOKED FIRST TO      *
.*              START THE JDTS. (SEE RESTRICTIONS AND MESSAGES)       *
.*                                                                    *
.*   EXTERNAL REFERENCES = N/A                                        *
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   ERROR MNOTES =                                                   *
.*                                                                    *
.*    MNOTE 12,'ENDSUB MACRO DID NOT FOLLOW A SUBLIST JDPARM'         *
.*                                                                    *
.*    MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'*
.*                                                                    *
.*   CHANGE ACTIVITY = H0,H1                                       @H1C
.*  $H0= EXTJCL  JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL        *
.*  $H1= EXTJCL  JBB1329 820611 PDC5: SUPPORT FOR EXTENDED JCL     @H1A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A GLOBAL BIT THAT IS ORIGINALLY SET IN JDSUB, TO BE RESET HERE. @H1A
.*--------------------------------------------------------------------*
.*  GLOBALS USED IN THIS MACRO THAT MAY BE ACTIVE OR BE MADE ACTIVE   *
.*  RESPECTIVELY: JDTMAC, JDVERB, JDKEY, JDPARM, JDSUB, ENDSUB AND    *
.*                ENDJDT.                                             *
.*--------------------------------------------------------------------*
         GBLB  &JACT,&VACT,&KACT,&PACT,&SPACT,&EPACT,&EJACT
.*--------------------------------------------------------------------*
.*  GLOBAL BIT THAT MAY HAVE BEEN SET IN THE JDSUB MACRO TO           *
.*  INDICATE THE PRECEEDING JDPARM MACROS WERE LIST ITEMS.            *
.*--------------------------------------------------------------------*
         GBLB  &L3
&L3      SETB  0                 RESET THE ITEM LIST GLOBAL BIT    @H1A
.*--------------------------------------------------------------------*
.*       CHECK TO SEE IF ENDSUB MACRO IS SPECIFIED IN THE RIGHT ORDER *
.*       ONLY AFTER A JDPARM THAT IS SPECIFIED AS A SUBLIST IS VALID  *
.*--------------------------------------------------------------------*
         AIF   (&PACT EQ 1 AND &SPACT EQ 1).CONT    SUBLIST ACTIVE
.*--------------------------------------------------------------------*
.*       IF NONE OF THE FOLLOWING BITS ARE ON THEN THIS MUST BE THE   *
.*       FIRST MACRO INVOKED IN THE JDT DEFINITIONS.                  *
.*--------------------------------------------------------------------*
         AIF   (&JACT EQ 0 AND &VACT EQ 0 AND &KACT EQ 0 AND &PACT EQ 0+
                AND &SPACT EQ 0 AND &EPACT EQ 0 AND &EJACT EQ 0).NOJDT
.*--------------------------------------------------------------------*
.*      ENDSUB MACRO DID NOT FOLLOW A SUBLIST-> MNOTE IT.             *
.*--------------------------------------------------------------------*
         MNOTE 12,'ENDSUB MACRO DID NOT FOLLOW A SUBLIST JDPARM'
         AGO   .RESET
.*--------------------------------------------------------------------*
.*  JDTMAC MUST BE THE FIRST MACRO SPECIFIED, BUT IS NOT-> MNOTE IT.  *
.*--------------------------------------------------------------------*
.NOJDT   ANOP
       MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'
         MEXIT
.*--------------------------------------------------------------------*
.*      RESET THE APPROPRIATE BAD GLOBAL BIT                          *
.*--------------------------------------------------------------------*
.RESET   ANOP
&JACT    SETB   0                RESET THE JDTMAC ACTIVE GLOBAL BIT
&VACT    SETB   0                RESET THE JDVERB ACTIVE GLOBAL BIT
&KACT    SETB   0                RESET THE JDKEY ACTIVE GLOBAL BIT
&EJACT   SETB   0                RESET THE ENDJDT ACTIVE GLOBAL BIT
.*--------------------------------------------------------------------*
.*      RESET THE APPROPRIATE GLOBAL BITS-SET SUBLIST END BIT ON      *
.*--------------------------------------------------------------------*
.CONT    ANOP
&PACT    SETB  0                 RESET JDPARM GLOBAL BIT
&SPACT   SETB  0                 RESET JDSUB GLOBAL BIT
&EPACT   SETB  1                 SET END OF SUBLIST DEFINITION BIT
         SPACE
         MEND
./ ADD NAME=ENFREQ
* %/*
         MACRO
&NAME    ENFREQ &ACTION=,&CODE=,&TYPE=,&QUAL=,&QMASK=,                 *
               &EXIT=,&PARM=,&DTOKEN=,&STOKEN=,&FREEPRM=,&MF=,         *
               &RELATED=
.**********************************************************************
.*                                                                    *
.* MACRO  NAME - ENFREQ                                               *
.*                                                                    *
.* DESCRIPTION - MACRO FOR EVENT NOTIFICATION (ENF) REQUESTS          *
.*                                                                    *
.* COPYRIGHT -                                                        *
.*             5740-XYN COPYRIGHT IBM CORP 1981,                      *
.*             LICENSED MATERIAL - PROGRAM,                           *
.*             PROPERTY OF IBM,                                       *
.*             REFER TO COPYRIGHT INSTRUCTIONS FORM                   *
.*             NUMBER G120-2083                                       *
.*                                                                    *
.* STATUS - OS/VS2 JBB1326                                            *
.*                                                                    *
.* FUNCTION -                                                         *
.*      THE ENFREQ MACRO IS USED TO GENERATE THE EVENT                *
.*      PARAMETER LIST AND/OR INVOKE THE ENF SERVICE ROUTINE.         *
.*                                                                    *
.* OPERATION -                                                        *
.*      . VERIFY THE INPUT PARAMETERS SPECIFIED BY THE USER           *
.*                                                                    *
.*      . BUILD THE EVENT PARAMETER LIST (LIST AND NORMAL             *
.*        FORM)                                                       *
.*                                                                    *
.*      . GENERATE INSTRUCTIONS TO MODIFY THE EVENT PARAMETER         *
.*        LIST (NORMAL AND EXECUTE FORM)                              *
.*                                                                    *
.*      . GENERATE INSTRUCTION TO INVOKE THE ENF SERVICE              *
.*        ROUTINE (NORMAL AND EXECUTE FORM)                           *
.*                                                                    *
.* NOTES - N/A                                                        *
.*                                                                    *
.* DEPENDENCIES -                                                     *
.*       TO USE THE ENFREQ MACRO INSTRUCTION, THE CALLER MUST         *
.*            1. DECLARE STORAGE FOR A 4 BYTE POINTER ENFPTR          *
.*            2. DEFINE CVTPTR (EQUAL TO LOCATION 16)                 *
.*            3. INCLUDE THE CVT, IEFENFCT, AND IEFENFPM              *
.*               MAPPPING MACROS                                      *
.*                                                                    *
.* MODULE TYPE - MACRO                                                *
.*                                                                    *
.* ENTRY POINT - N/A                                                  *
.*                                                                    *
.* INPUT - THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO ENFREQ     *
.*        . &ACTION - ACTION REQUESTED FOR ENF PROCESSING             *
.*                    (VALID TYPES : SIGNAL, LISTEN, AND DELETE)      *
.*        . &CODE - THE EVENT CODE                                    *
.*        . &DTOKEN - TOKEN FOR LISTEN AND DELETE REQUEST             *
.*        . &STOKEN - TOKEN FOR SIGNAL REQUEST                        *
.*        . &TYPE - REQUESTED ENF TO PROCESS THE REQUEST              *
.*                  SYNCHRONOUSLY(SYNC) OR ASYNCHRONOUSLY(ASYNC)      *
.*        . &QUAL - QUALIFIER (THE MEANING OF THE QUALIFIER IS        *
.*                  DETERMINED BY THE SIGNALLERS/LISTENERS OF         *
.*                  A GIVEN EVENT)                                    *
.*        . &QMASK - MASK TO DETERMINE WHICH BYTES IN THE             *
.*                   QUALIFIER ARE TO BE USED IN COMPARING            *
.*                   QUALIFIERS DURING SIGNAL PROCESSING.             *
.*        . &EXIT - ADDRESS OF SIGNALLER'S OR LISTENER'S              *
.*                  EXIT ROUTINE                                      *
.*        . &FREEPRM - FREEMAIN PARAMETERS USED TO FREE THE           *
.*                     SIGNALLER'S PARAMETER LIST                     *
.*        . &PARM -  ADDRESS OF SIGNALLER'S  PARAMETER LIST           *
.*        . &RELATED - USED BY THE CALLER TO SPECIFY                  *
.*                     INFORMATION USED TO SELF-DOCUMENT THE          *
.*                     VARIOUS ENFREQ REQUESTS                        *
.*                                                                    *
.* OUTPUT - THE OUTPUT FROM THE ENFREQ MACRO IS AN EVENT              *
.*          PARAMETER LIST (FOR LIST AND NORMAL FORM) AND/OR          *
.*          INSTRUCTIONS TO MODIFY THE EVENT PARAMETER LIST           *
.*          AND INVOKE THE ENF SERVICE ROUTINE (IEFENFFX).            *
.*                                                                    *
.* EXIT,NORMAL                                                        *
.*   CONDITION - NO ERRORS DETECTED                                   *
.*   OUTPUT    - NO MNOTE ISSUED. SEVERITY CODE = 0.                  *
.*                                                                    *
.* EXIT,NORMAL                                                        *
.*   CONDITION - ERROR CONDITION DETECTED BY THE ENFREQ MACRO         *
.*   OUTPUT    - INFORMATION MNOTES WITH SEVERITY CODE 4              *
.*               ISSUED WHEN PARAMETER SPECIFIED IS                   *
.*               INCORRECT. THE SPECIFIED PARAMETER IS IGNORED        *
.*               AND THE DEFAULT VALUE FOR THAT PARAMETER             *
.*               IS ASSUMED.                                          *
.*                                                                    *
.* EXIT, ERROR                                                        *
.*   CONDITION - ERROR CONDITION DETECTED BY THE ENFREQ MACRO         *
.*   OUTPUT    - ERROR MNOTES WITH SEVERITY CODE 8 (SEE               *
.*               MESSAGES) ISSUED WHEN CERTAIN REQUIRED               *
.*               PARAMETER IS MISSING OR INCORRECTLY SPECIFIED.       *
.*               THE MACRO WILL ATTEMPT TO SCAN FOR ADDITIONAL        *
.*               ERRORS.                                              *
.*                                                                    *
.* EXIT, ERROR                                                        *
.*   CONDITION - SEVERE ERROR DETECTED BY THE ENFREQ MACRO            *
.*   OUTPUT    - ERROR MNOTES WITH SEVERITY CODE 12 (SEE              *
.*               MESSAGES) ISSUED WHEN CERTAIN REQUIRED               *
.*               PARAMETER IS MISSING OR INCORRECTLY SPECIFIED.       *
.*               THE MACRO EXPANSION WILL BE TERMINATED AS            *
.*               A RESULT OF THE ERROR.                               *
.*                                                                    *
.*                                                                    *
.* EXTERNAL REFERENCES - N/A                                          *
.*                                                                    *
.* TABLES - N/A                                                       *
.*                                                                    *
.* MACROS - CVT                                                       *
.*          IEFENFCT                                                  *
.*          IEFENFPM                                                  *
.*                                                                    *
.* CHANGE ACTIVITY -                                                  *
.*   $D0= DCR#1   JBB1326  800604  PD42: IMPLICIT FLAG - NEW CODE     *
.*   $P1= PMM0114 JBB1326  800604  PD42: ADD KEYWORD RETCODE FOR      *
.*                                         ENFREQP                    *
.*   $P2= PMM0135 JBB1326  800604  PD42: CHECK FOR ACTION PARAMETER   *
.*                                         IF DTOKEN IS SPECIFIED IN  *
.*                                         EXECUTE FORM               *
.*   $P3= PMM0335 JBB1326  810420  PD42: CORRECT CHANGE ACTIVITY      *
.*                                         LINE FLAGS AND COPYRIGHT   *
.*                                                                    *
.* MESSAGES - (MNOTES)                                                *
.*   - INFORMATIONAL MNOTES :                                         *
.*       MNOTE   04,'QUAL NOT ALLOWED FOR DELETE REQUEST - IGNORED'   *
.*       MNOTE   04,'QMASK NOT ALLOWED FOR SIGNAL REQUEST - IGNORED'  *
.*       MNOTE   04,'QMASK NOT ALLOWED FOR DELETE REQUEST - IGNORED'  *
.*       MNOTE   04,'EXIT NOT ALLOWED FOR DELETE REQUEST - IGNORED'   *
.*       MNOTE   04,'PARM NOT ALLOWED FOR LISTEN REQUEST - IGNORED'   *
.*       MNOTE   04,'PARM NOT ALLOWED FOR DELETE REQUEST - IGNORED'   *
.*       MNOTE   04,'FREEPRM NOT ALLOWED FOR LISTEN REQUEST- IGNORED' *
.*       MNOTE   04,'FREEPRM NOT ALLOWED FOR DELETE REQUEST- IGNORED' *
.*       MNOTE   04,'STOKEN NOT ALLOWED FOR DELETE REQUEST - IGNORED' *
.*       MNOTE   04,'STOKEN NOT ALLOWED FOR LISTEN REQUEST - IGNORED' *
.*       MNOTE   04,'DTOKEN NOT ALLOWED IN LIST FORM - IGNORED'       *
.*       MNOTE   04,'DTOKEN NOT ALLOWED FOR SIGNAL REQUEST - IGNORED' *
.*                                                                    *
.*   - ERROR MNOTES :                                                 *
.*       MNOTE   08,'PARM REQUIRED WITH FREEPRM - FREEPRM IGNORED'    *
.*       MNOTE   08,'DTOKEN REQUIRED FOR DELETE REQUEST'              *
.*       MNOTE   08,'ACTION REQUIRED WITH DTOKEN - DTOKEN IGNORED'    *
.*                                                                @P2A*
.*       MNOTE   08,'INVALID TYPE : TYPE=&TYPE IGNORED'               *
.*       MNOTE   08,'INVALID QMASK VALUE : &QMASK(&I) IGNORED'        *
.*       MNOTE   08,'DUPLICATE QMASK VALUE : &QMASK(&I)'              *
.*       MNOTE   08,'MORE THAN &MAXQMSK QMASK VALUES - QMASK IGNORED' *
.*       MNOTE   08,'EXTRANEOUS QMASK INFO - QMASK=(ALL) ASSUMED'     *
.*       MNOTE   08,'EXTRANEOUS QMASK INFO - QMASK=(NONE) ASSUMED'    *
.*       MNOTE   08,'CODE PARAMETER REQUIRED'                         *
.*       MNOTE   08,'EXIT REQUIRED FOR LISTEN REQUEST'                *
.*       MNOTE   08,'LENGTH REQUIRED IN FREEPRM - FREEPRM IGNORED'    *
.*       MNOTE   08,'SUBPOOL REQUIRED IN FREEPRM - FREEPRM IGNORED'   *
.*       MNOTE   08,'SUBPOOL AND LENGTH REQUIRED - FREEPRM IGNORED'   *
.*       MNOTE   08,'MORE THAN &MAXF FREEPRM VALUES -FREEPRM IGNORED' *
.*       MNOTE   08,'INVALID FREEPRM KEY VALUE - FREEPRM IGNORED'     *
.*       MNOTE   08,'KEY IN REGISTER NOT ALLOWED FOR LIST FORM'       *
.*       MNOTE   08,'LENGTH IN REGISTER NOT ALLOWED FOR LIST FORM'    *
.*       MNOTE   08,'SUBPOOL IN REGISTER NOT ALLOWED FOR LIST FORM'   *
.*                                                                    *
.*       MNOTE   12,'INVALID ACTION : ACTION=&ACTION-MACRO TERMINATED'*
.*       MNOTE   12,'INVALID MF PARAMETER : MF=&MF - MACRO TERMINATED'*
.*       MNOTE   12,'ACTION REQUIRED - MACRO TERMINATED'              *
.*       MNOTE   12,'ERROR IN ENFREQ MACRO - MACRO TERMINATED'        *
.*                                                                    *
.*                                                                    *
.* A 000000-999999                                                @D0A*
.**********************************************************************
.*-------------------------------------------------------------------*
.*   DECLARATIONS FOR TEMPORARY VALUES FOR EVENT PARAMETER LIST      *
.*-------------------------------------------------------------------*
         LCLA    &LEN,&ACT             WORD 1 : LENGTH,ACTION
         LCLC    &CDE                  WORD 2 : CODE
         LCLC    &MSK                  WORD 3 : QMASK
         LCLA    &FLG                  WORD 3 : FLAGS
         LCLC    &FREEKEY              WORD 3 : KEY FOR FREEPRM
         LCLC    &FREESP               WORD 3 : SUBPOOL FOR FREEPRM
         LCLC    &QUALIF               WORD 4 : QUALIFIER
         LCLC    &EXTADR               WORD 5 : EXIT ADDRESS
         LCLC    &PARMS                WORD 6 : SIGNAL PARMS
         LCLC    &TOK                  WORD 7 : TOKEN
         LCLC    &FREELEN              WORD 8 : LENGTH FOR FREEPRM
.*-------------------------------------------------------------------*
.*   DECLARATIONS FOR LOCAL VARIABLES                                *
.*-------------------------------------------------------------------*
         LCLB    &NORMAL,&LIST,&EXECUTE FORM OF MACRO CALL
         LCLC    &GNAME                LABEL GENERATED
         LCLC    &REGC                 REGISTER IN CHARACTERS
         LCLA    &N,&I                 FOR PROCESSING QMASK
         LCLB    &QBYTE(4),&ERRMASK    FOR PROCESSING QMASK
         LCLC    &INX                  FOR PROCESSING QMASK
         LCLB    &DONECDE              CODE ALREADY BEEN PROCESSED
         LCLB    &DONEXIT              EXIT ALREADY BEEN PROCESSED
         LCLB    &DONEPRM              PARM ALREADY BEEN PROCESSED
         LCLB    &DONETYP              TYPE ALREADY BEEN PROCESSED
         LCLB    &DONEACT              ACTION ALREADY BEEN PROCESSED
         LCLB    &DONEMSK              QMASK ALREADY BEEN PROCESSED
         LCLB    &DONESP               FREEMAIN : SUBPOOL PROCESSED
         LCLB    &DONELEN              FREEMAIN : LENGTH PROCESSED
         LCLB    &DONEKEY              FREEMAIN : KEY PROCESSED
         LCLB    &DONEFFG              ENFPFREE FLAG HAS BEEN SET UP
         LCLB    &DONEFRP              FREEPRM PROCESSING COMPLETED
         LCLA    &MAXF                 MAXIMUM NUMBER OF FREEPRM ATTR
         LCLA    &MINF                 MINIMUM NUMBER OF FREEPRM ATTR
         LCLA    &MAXQMSK              MAXIMUM NUMBER OF QMASK VALUES
         LCLA    &NPARAMS,&MAXBR,&EXTRA FOR ACTR CALCULATION
.*-------------------------------------------------------------------*
.*   DECLARATIONS FOR DEBUGGING                                      *
.*-------------------------------------------------------------------*
         LCLB    &STOPLOP              DEBUG : PREVENT LOOPING
.*-------------------------------------------------------------------*
.*   INITIALIZE LOCAL VARIABLES                                      *
.*-------------------------------------------------------------------*
&LEN     SETA    32                    LENGTH OF PARAMETER LIST
&ACT     SETA    0                     INVALID ACTION
&CDE     SETC    '0'                   INVALID CODE
&FLG     SETA    X'00'                 DEFAULT VALUES FOR FLAGS
&MSK     SETC    '00000000'            NOT SPECIFIED BY CALLER
&FREEKEY SETC    '0'                   NOT SPECIFIED BY CALLER
&FREESP  SETC    '0'                   NOT SPECIFIED BY CALLER
&QUALIF  SETC    '0'                   NOT SPECIFIED BY CALLER
&EXTADR  SETC    '0'                   NOT SPECIFIED BY CALLER
&PARMS   SETC    '0'                   NOT SPECIFIED BY CALLER
&TOK     SETC    '0'                   NOT SPECIFIED BY CALLER
&FREELEN SETC    '0'                   NOT SPECIFIED BY CALLER
.*-------------------------------------------------------------------*
.*                                                                   *
.*       MINIMUM/MAXIMUM NUMBER OF VALUES ALLOWED IN FREEPRM AND     *
.*       QMASK                                                       *
.*-------------------------------------------------------------------*
&MAXF    SETA    3                     (SUBPOOL,LENGTH,KEY)
&MINF    SETA    2                     (SUBPOOL,LENGTH)
&MAXQMSK SETA    4                     UP TO 4 QMASK VALUES ALLOWED
.*-------------------------------------------------------------------*
.*                                                                   *
.*       SET UP ACTR VALUE                                           *
.*                                                                   *
.*-------------------------------------------------------------------*
&NPARAMS SETA    12                    NUMBER OF MACRO PARAMETERS
&MAXBR   SETA    20                    MAX BRANCHES/PARAM (QMASK USED)
&EXTRA   SETA    100                   EXTRA BRANCHES
         ACTR    &NPARAMS*&MAXBR+&EXTRA
.*-------------------------------------------------------------------*
.*       DETERMINE WHICH FORM OF THE MACRO IS REQUESTED              *
.*-------------------------------------------------------------------*
         AIF     ('&MF' EQ 'L').LISTFM MF=L SPECIFIED
&GNAME   SETC    'IHB'.'&SYSNDX'       INITIALIZE LABEL
         USING   ENFPM,1               MAP ENFPM OVER AREA
         AIF     ('&MF' EQ '').NORMFM  MF NOT SPECIFIED
         AIF     (N'&MF NE 2).BADMF1   EXECUTE FORM HAS 2 PARMS
         AIF     ('&MF(1)' EQ 'E').EXECFM  MF=(E,LIST)
.BADMF1  MNOTE   12,'INVALID MF PARAMETER : MF=&MF - MACRO TERMINATED'
         AGO     .ERREXIT
.*********************************************************************
.*                                                                   *
.*       BEGIN PROCESSING PARAMETERS FOR NORMAL FORM                 *
.*                                                                   *
.*********************************************************************
.NORMFM  ANOP                          BEGIN NORMAL FORM
&NORMAL  SETB    1                     NORMAL FORM REQUESTED
.*-------------------------------------------------------------------*
.*       THE FOLLOWING PARAMETERS WILL BE PUT INTO THE EVENT         *
.*       PARAMETER LIST IF SPECIFIED  (EXCEPT WHEN SPECIFIED         *
.*       IN REGISTER) :                                              *
.*          1. ACTION                                                *
.*          2. CODE                                                  *
.*          3. TYPE                                                  *
.*          4. EXIT                                                  *
.*          5. PARM                                                  *
.*          6. QMASK                                                 *
.*          7. ENFPFREE FOR FREEPRM                                  *
.*-------------------------------------------------------------------*
.*-------------------------------------------------------------------*
.*       PROCESS THE ACTION PARAMETER - NORMAL FORM                  *
.*-------------------------------------------------------------------*
         AIF     ('&ACTION' EQ 'SIGNAL').SIGACT0 ACTION=SIGNAL
         AIF     ('&ACTION' EQ 'DELETE').DELACT0 ACTION=DELETE
         AIF     ('&ACTION' EQ 'LISTEN').LISACT0 ACTION=LISTEN
         AIF     ('&ACTION' EQ '').NOACT0        ACTION NOT SPECIFIED
         MNOTE   12,'INVALID ACTION : ACTION=&ACTION-MACRO TERMINATED'
         AGO     .ERREXIT
.NOACT0  ANOP
         MNOTE   12,'ACTION REQUIRED - MACRO TERMINATED'
         AGO     .ERREXIT
.LISACT0 ANOP
&ACT     SETA    X'02'                 SET ACTION CODE TO LISTEN
         AGO     .ENDACT0
.SIGACT0 ANOP
&ACT     SETA    X'01'                 SET ACTION CODE TO SIGNAL
         AGO     .ENDACT0
.DELACT0 ANOP
&ACT     SETA    X'03'                 SET ACTION CODE TO DELETE
.ENDACT0 ANOP
&DONEACT SETB    1                     ACTION PROCESSING COMPLETED
.*-------------------------------------------------------------------*
.*       PROCESS THE CODE PARAMETER - NORMAL FORM (NOT REGISTER)     *
.*-------------------------------------------------------------------*
         AIF     ('&CODE' NE '').CHCODE MUST SPECIFY EVENT CODE
         MNOTE   08,'CODE PARAMETER REQUIRED'
         AGO     .DONECDE
.CHCODE  ANOP
         AIF     ('&CODE'(1,1) EQ '(').ENDCDE0  SKIP : CODE IN REG
&CDE     SETC    '&CODE'               SAVE FOR EVENT PARM LIST
.DONECDE ANOP
&DONECDE SETB    1                     NO NEED TO GENERATE CODE
.ENDCDE0 ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE TYPE PARAMETER - NORMAL FORM                    *
.*-------------------------------------------------------------------*
         AIF     ('&TYPE' EQ '').SYNC0        USE DEFAULT = SYNC
         AIF     ('&TYPE' EQ 'ASYNC').ASYNC0  TYPE=ASYNC
         AIF     ('&TYPE' NE 'SYNC').BADSYN0  EXPECT TYPE=SYNC
.SYNC0   ANOP
&FLG     SETA    X'00'+&FLG            SYNCHRONOUS CALLER
         AGO     .ENDTYPE
.ASYNC0  ANOP
&FLG     SETA    X'80'+&FLG            ASYNCHRONOUS CALLER
         AGO     .ENDTYPE
.BADSYN0 MNOTE   08,'INVALID TYPE : TYPE=&TYPE IGNORED'
         AGO     .SYNC0                USE DEFAULT : TYPE=SYNC
.ENDTYPE ANOP
&DONETYP SETB    1                     TYPE PROCESSING COMPLETED
.*-------------------------------------------------------------------*
.*       PROCESS THE EXIT PARAMETER - NORMAL FORM (NOT REGISTER)     *
.*-------------------------------------------------------------------*
         AIF     ('&EXIT' EQ '').NULXIT0
         AIF     ('&ACTION' EQ 'DELETE').BADXIT0
         AIF     ('&EXIT'(1,1) EQ '(').ENDXIT0 EXIT ADDR IN REG
&EXTADR  SETC    '&EXIT'               SAVE EXIT ROUTINE ADDR
         AGO     .DONEXIT
.NULXIT0 AIF     ('&ACTION' NE 'LISTEN').DONEXIT
         MNOTE   08,'EXIT REQUIRED FOR LISTEN REQUEST'
         AGO     .DONEXIT
.BADXIT0 MNOTE   04,'EXIT NOT ALLOWED FOR DELETE REQUEST - IGNORED'
.DONEXIT ANOP
&DONEXIT SETB    1                     NO NEED TO GENERATE CODE
.ENDXIT0 ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE PARM PARAMETER - NORMAL FORM (NOT REGISTER)     *
.*-------------------------------------------------------------------*
         AIF     ('&PARM' EQ '').DONEPRM
         AIF     ('&ACTION' EQ '' OR '&ACTION' EQ 'SIGNAL').SETPRM0
         MNOTE   04,'PARM NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
         AGO     .DONEPRM
.SETPRM0 ANOP
         AIF     ('&PARM'(1,1) EQ '(').ENDPRM0
&PARMS   SETC    '&PARM'               SAVE USER PARM LIST
.DONEPRM ANOP
&DONEPRM SETB    1                     NO NEED TO GENERATE CODE
.ENDPRM0 ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE QMASK PARAMETER - NORMAL FORM                   *
.*-------------------------------------------------------------------*
         AIF     ('&QMASK' EQ '').ENDQMK0 QMASK NOT SPECIFIED
         AGO     .GETMASK              GET QMASK
.INITMSK ANOP                          QMASK SHOULD BE INITIALIZED
.ENDQMK0 ANOP
&DONEMSK SETB    1                     QMASK PROCESSING COMPLETED
.*-------------------------------------------------------------------*
.*       PROCESS THE FREEPRM PARAMETER - NORMAL FORM (SET ENFPFREE)  *
.*-------------------------------------------------------------------*
         AIF     ('&FREEPRM' EQ '').ENDFPN
         AIF     ('&ACTION' NE 'SIGNAL').BADFPM0
         AIF     ('&PARM' NE '').FREEPRO PROCESS FREEPRM AS IN LIST
.*                                     FORM. RETURN POINT = ENDFRPN
         MNOTE   08,'PARM REQUIRED WITH FREEPRM - FREEPRM IGNORED'
         AGO     .ENDFPN
.BADFPM0 MNOTE   04,'FREEPRM NOT ALLOWED FOR &ACTION REQUEST- IGNORED'
.ENDFPN  ANOP
&DONEFRP SETB    1                     ENFPFREE PROCESSING COMPLETED
.ENDFRPN ANOP                          END OF FREEPRM PROCESSING
.*-------------------------------------------------------------------*
.*    END PARAMETER LIST PROCESSING (NOT REGISTER) FOR NORMAL FORM   *
.*                                                                   *
.*-------------------------------------------------------------------*
         CNOP    0,4                   ALIGN ON HALFWORD BOUNDARY
&NAME    BAL     1,&GNAME.A            BRANCH AROUND PARM LIST
         AGO     .GENLIST              GO GENERATE PARM LIST
.*********************************************************************
.*                                                                   *
.*       MF=L SPECIFIED : BEGIN PARAMETER PROCESSING FOR LIST FORM   *
.*                                                                   *
.*********************************************************************
.LISTFM  ANOP                          BEGIN LIST FORM
&LIST    SETB    1                     LIST FORM REQUESTED
.*-------------------------------------------------------------------*
.*       PROCESS THE ACTION  PARAMETER - LIST FORM                   *
.*-------------------------------------------------------------------*
         AIF     ('&ACTION' EQ '').ENDACTN   ACTION NOT SPECIFIED
         AIF     ('&ACTION' EQ 'SIGNAL').SIGNAL
         AIF     ('&ACTION' EQ 'DELETE').DELETE
         AIF     ('&ACTION' EQ 'LISTEN').LISTEN
         MNOTE   12,'INVALID ACTION : ACTION=&ACTION-MACRO TERMINATED'
         AGO     .ERREXIT
.SIGNAL  ANOP
&ACT     SETA    X'01'                 ACTION=SIGNAL (ENFPSIG)
         AGO     .ENDACTN
.LISTEN  ANOP
&ACT     SETA    X'02'                 ACTION=LISTEN (ENFPLIS)
         AGO     .ENDACTN
.DELETE  ANOP
&ACT     SETA    X'03'                 ACTION=DELETE (ENFPDEL)
.ENDACTN ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE CODE PARAMETER - LIST FORM                      *
.*-------------------------------------------------------------------*
         AIF     ('&CODE' EQ '').CDEEND CODE NOT SPECIFIED
&CDE     SETC    '&CODE'               SAVE EVENT CODE
.CDEEND  ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE DTOKEN PARAMETER - LIST FORM                    *
.*-------------------------------------------------------------------*
         AIF     ('&DTOKEN' EQ '').ENDDTOK  DTOKEN NOT SPECIFIED
         MNOTE   04,'DTOKEN NOT ALLOWED IN LIST FORM - IGNORED'
.ENDDTOK ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE STOKEN PARAMETER - LIST FORM                    *
.*-------------------------------------------------------------------*
         AIF     ('&STOKEN' EQ '').ENDSTOK  STOKEN NOT SPECIFIED
         AIF     ('&ACTION' NE '' AND '&ACTION' NE 'SIGNAL').BADSTK1
&TOK     SETC    '&STOKEN'              SAVE STOKEN FOR LATER
         AGO     .ENDSTOK
.BADSTK1 MNOTE   04,'STOKEN NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
.ENDSTOK ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE TYPE PARAMETER - LIST FORM                      *
.*-------------------------------------------------------------------*
         AIF     ('&TYPE' EQ '').ENDSYN TYPE NOT SPECIFIED
         AIF     ('&TYPE' EQ 'ASYNC').ASYN   TYPE=ASYNC SPECIFIED
         AIF     ('&TYPE' NE 'SYNC').BADSYN1 TYPE=SYNC  SPECIFIED
&FLG     SETA    X'00'+&FLG            SYNCHRONOUS CALLER
         AGO     .ENDSYN
.ASYN    ANOP
&FLG     SETA    X'80'+&FLG            ASYNCHRONOUS CALLER(ENFPASN)
         AGO     .ENDSYN
.BADSYN1 MNOTE   08,'INVALID TYPE : TYPE=&TYPE IGNORED'
.ENDSYN  ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE QUAL   PARAMETER  - LIST FORM                   *
.*-------------------------------------------------------------------*
         AIF     ('&QUAL' EQ '').ENDQUL  QUALIFIER NOT SPECIFIED
         AIF     ('&ACTION' EQ 'DELETE').BADQUL1
&QUALIF  SETC    '&QUAL'               SAVE QUALIFER FOR LATER
         AGO     .ENDQUL
.BADQUL1 MNOTE   04,'QUAL NOT ALLOWED FOR DELETE REQUEST - IGNORED'
.ENDQUL  ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE QMASK PARAMETER - (ALL FORMS)                   *
.*-------------------------------------------------------------------*
.GETMASK ANOP                          GENERATE QMASK
&ERRMASK SETB    1                     INITIALIZE ERRMASK
         AIF     ('&QMASK' EQ '').ENDQMSK QMASK NOT SPECIFIED
         AIF     ('&ACTION' NE 'LISTEN').BADMASK
.BEGINSL ANOP                          BEGIN PROCESS SUBLIST
&N       SETA    N'&QMASK              NUMBER OF ENTRIES
         AIF     (&N GT &MAXQMSK).BADMSK2 ALLOW UP TO &MAXQMSK VALUES
&I       SETA    1
.LOOP    AIF     (&I GT &N).ENDLOOP    ALL ENTRIES PROCESSED
         AIF     ('&QMASK(&I)' EQ 'ALL').ALL  QMASK=(ALL)
         AIF     ('&QMASK(&I)' EQ 'NONE').NOQMASK QMASK=(NONE)
         AIF     (K'&QMASK(&I) NE 5).BADMSK BYTEX EXPECTED
         AIF     ('&QMASK(&I)'(1,4) NE 'BYTE').BADMSK
&INX     SETC    '&QMASK(&I)'(5,1)     EXTRACT LAST DIGIT
         AIF     (('&INX' LT '1') OR ('&INX' GT '4')).BADMSK
         AIF     (&QBYTE(&INX) NE 0).DUPMSK
&QBYTE(&INX) SETB 1                    SET CORRESPONDING QBYTE
.NEXT    ANOP
&I       SETA    &I+1                  INCREMENT COUNTER
         AGO     .LOOP                 PROCESS ANOTHER ENTRY
.BADMSK  ANOP
         MNOTE   08,'INVALID QMASK VALUE : &QMASK(&I) IGNORED'
         AGO     .NEXT                 SKIP THIS BYTE
.DUPMSK  ANOP
         MNOTE   08,'DUPLICATE QMASK VALUE : &QMASK(&I)'
         AGO     .NEXT
.BADMASK ANOP
         AIF     ('&ACTION' EQ '' AND (NOT &NORMAL)).BEGINSL
.*                                     MAY SPECIFY IN LIST OR
.*                                     EXECUTE FORM
         MNOTE   04,'QMASK NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
         AGO     .ENDQMSK              IGNORE THE QMASK
.BADMSK2 ANOP
         MNOTE   08,'MORE THAN &MAXQMSK QMASK VALUES - QMASK IGNORED'
         AGO     .ENDQMSK
.NOQMASK ANOP
         AIF     (&N EQ 1).SETNOQM
         MNOTE   08,'EXTRANEOUS QMASK INFO - QMASK=(NONE) ASSUMED'
.SETNOQM ANOP
&MSK     SETC    '00000000'            RESET MSK TO ZERO
         AGO     .RETMSK
.ALL     ANOP
         AIF     (&N EQ 1).SETALL
         MNOTE   08,'EXTRANEOUS QMASK INFO - QMASK=(ALL) ASSUMED'
.SETALL  ANOP
&MSK     SETC    '00001111'            SET MSK TO ALL BYTES
         AGO     .RETMSK
.ENDLOOP ANOP
&MSK     SETC    '0000'.'&QBYTE(1)'.'&QBYTE(2)'.'&QBYTE(3)'.'&QBYTE(4)'
.RETMSK  ANOP
&ERRMASK SETB    0                     NO ERROR FOUND
.ENDQMSK ANOP
.*
         AIF     (&EXECUTE).MVQMASK    RETURN TO EXECUTE FORM
         AIF     (&NORMAL).INITMSK     RETURN TO NORMAL FORM
.*-------------------------------------------------------------------*
.*       PROCESS THE EXIT PARAMETER - LIST FORM                      *
.*-------------------------------------------------------------------*
         AIF     ('&EXIT' EQ '').ENDXIT  EXIT NOT SPECIFIED
         AIF     ('&ACTION' EQ 'DELETE').BADXIT1
&EXTADR  SETC    '&EXIT'               SAVE EXIT ADDR FOR LATER
         AGO     .ENDXIT
.BADXIT1 MNOTE   04,'EXIT NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
.ENDXIT  ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE FREEPRM PARAMETER - LIST & NORMAL (NO REG) FORM *
.*-------------------------------------------------------------------*
         AIF     ('&FREEPRM' EQ '').DONEFRP
         AIF     ('&ACTION' NE '' AND '&ACTION' NE 'SIGNAL').BADFPM1
.FREEPRO ANOP
&N       SETA    N'&FREEPRM            NO OF FREEPRM VALUES SPECIFIED
         AIF     (&N GT &MAXF).BADFRV0      TOO MANY FREEPRM VALUES
         AIF     (&N GE &MINF).SPPROC       CORRECT NO OF VALUES
         MNOTE   08,'SUBPOOL AND LENGTH REQUIRED - FREEPRM IGNORED'
         AGO     .DONEFRP
.BADFRV0 ANOP
         MNOTE   08,'MORE THAN &MAXF FREEPRM VALUES - FREEPRM IGNORED'
         AGO     .DONEFRP
.BADFPM1 MNOTE   04,'FREEPRM NOT ALLOWED FOR &ACTION REQUEST- IGNORED'
         AGO     .DONEFRP
.*  -------------------------------------------   *
.*       SUBPOOL = &FREEPRM(1)                    *
.*  -------------------------------------------   *
.SPPROC  ANOP                          BEGIN SUBPOOL PROCESSING
         AIF     ('&FREEPRM(1)' EQ '').MISSP0  MISSING SUBPOOL NUMBER
         AIF     ('&FREEPRM(1)'(1,1) NE '(').SETFRSP
         AIF     (&NORMAL).ENDSP       SUBPOOL VALUE IN REGISTER
         MNOTE   08,'SUBPOOL IN REGISTER NOT ALLOWED FOR LIST FORM'
         AGO     .DONEFRP
.MISSP0  ANOP
         MNOTE   08,'SUBPOOL REQUIRED IN FREEPRM - FREEPRM IGNORED'
         AGO     .DONEFRP
.SETFRSP ANOP                          SAVE SUBPOOL VALUE
&FREESP  SETC    '&FREEPRM(1)'
&DONESP  SETB    1                     NO NEED TO GENERATE CODE
.ENDSP   ANOP                          END OF SUBPOOL PROCESSING
.*  -------------------------------------------   *
.*       LENGTH = &FREEPRM(2)                     *
.*  -------------------------------------------   *
         AIF     ('&FREEPRM(2)' EQ '').MISLEN0
         AIF     ('&FREEPRM(2)'(1,1) NE '(').SETFLEN
         AIF     (&NORMAL).ENDFLEN     GENERATE CODE LATER ON
         MNOTE   08,'LENGTH IN REGISTER NOT ALLOWED FOR LIST FORM'
         AGO     .DONEFRP
.MISLEN0 ANOP
         MNOTE   08,'LENGTH REQUIRED IN FREEPRM - FREEPRM IGNORED'
         AGO     .DONEFRP
.SETFLEN ANOP                          SAVE LENGTH VALUE
&FREELEN SETC    '&FREEPRM(2)'
&DONELEN SETB    1                     NO NEED TO GENERATE CODE
.ENDFLEN ANOP                          END OF LENGTH PROCESSING
.*  -------------------------------------------   *
.*       KEY = &FREEPRM(3)                        *
.*  -------------------------------------------   *
         AIF     (&N NE 3).DEFKEY0     KEY NOT SPECIFIED
         AIF     ('&FREEPRM(3)' EQ '').DEFKEY0
         AIF     ('&FREEPRM(3)'(1,1) NE '(').SETFKEY
         AIF     (&NORMAL).ENDFKEY     KEY VALUE IN REGISTER
         MNOTE   08,'KEY IN REGISTER NOT ALLOWED FOR LIST FORM'
         AGO     .DONEFRP
.SETFKEY ANOP
         AIF     (T'&FREEPRM(3) NE 'N').GOODKEY   EQUATED VALUE
         AIF     (&FREEPRM(3) LE 15).GOODKEY      KEY = 0 TO 15
         MNOTE   08,'INVALID FREEPRM KEY VALUE - FREEPRM IGNORED'
&FREELEN SETC    '0'                   RESET LENGTH VALUE TO 0
&FREESP  SETC    '0'                   RESET SUBPOOL VALUE TO 0
         AGO     .DONEFRP
.DEFKEY0 ANOP
&FREEKEY SETC    '0'                   DEFAULT TO KEY 0
         AGO     .SETDKEY
.GOODKEY ANOP
&FREEKEY SETC    '&FREEPRM(3)'         SAVE KEY VALUE FOR EPL
.SETDKEY ANOP                          KEY IN EPL
&DONEKEY SETB    1                     KEY ATTRIBUTE PROCESSED
.ENDFKEY ANOP                          COMPLETE KEY PROCESSING
.*  -------------------------------------------   *
.*       SET ENFPFREE                             *
.*  -------------------------------------------   *
&FLG     SETA    &FLG+X'08'            FLAG (ENFPFREE) TO FREEMAIN
&DONEFFG SETB    1                     ENFPFREE IS SET UP
.*
         AIF     (NOT (&DONEKEY AND &DONESP AND &DONELEN)).ENDFREE
.DONEFRP ANOP
&DONEFRP SETB    1                     NO NEED TO GENERATE CODE
.ENDFREE ANOP
         AIF     (&NORMAL).ENDFRPN     RETURN TO NORMAL FORM
.*-------------------------------------------------------------------*
.*       PROCESS THE PARM PARAMETER - LIST FORM                      *
.*-------------------------------------------------------------------*
         AIF     ('&PARM' EQ '').ENDPRM
         AIF     ('&ACTION' NE '' AND '&ACTION' NE 'SIGNAL').BADPRM1
&PARMS   SETC    '&PARM'
         AGO     .ENDPRM
.BADPRM1 MNOTE   04,'PARM NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
.ENDPRM  ANOP
.*********************************************************************
.*                                                                   *
.*       GENERATE PARAMETER LIST                                     *
.*                                                                   *
.*********************************************************************
.GENLIST ANOP
         AIF     (&STOPLOP).ENFBUG * DEBUG : BUG IN ENF
&STOPLOP SETB    1                 * DEBUG : SHOULD DO THIS ONLY ONCE
         AIF     (&NORMAL).EPLIST
&NAME    DS      0F                    START OF ENF PARAMETER LIST
.EPLIST  ANOP                          EVENT PARAMETER LIST
         DC      AL2(&LEN)             LENGTH OF ENF PARAMETER LIST
         DC      AL2(&ACT)             REQUESTED ENF ACTION
         DC      AL4(&CDE)             EVENT CODE
         DC      AL1(&FLG)             FLAG FIELD
         DC      AL1(B'&MSK')          MASK FOR COMPARING QUALIFIERS
         DC      AL1(&FREEKEY*16)      KEY FOR FREEPRM
         DC      AL1(&FREESP)          SUBPOOL FOR FREEPRM
         DC      AL4(&QUALIF)          QUALIFIER
         DC      AL4(&EXTADR)          EXIT ROUTINE ADDRESS
         DC      AL4(&PARMS)           ADDRESS OF SIGNALLERS PARAMETER
         DC      AL4(&TOK)             TOKEN
         DC      AL4(&FREELEN)         LENGTH FOR FREEPRM
         AIF     (&LIST).NORMEND       LIST FORM PROCESSING COMPLETED
&GNAME.A DS      0H                    END OF ENF PARAMETER LIST
         AGO     .PARMCHK              CHECK THE OTHER PARAMETERS
.*                                     FOR NORMAL FORM
.*********************************************************************
.*                                                                   *
.*       MF = (E,PARMLIST) SPECIFIED : PARAMETER PROCESSING FOR      *
.*                                     EXECUTE FORM                  *
.*                                                                   *
.*********************************************************************
.EXECFM  ANOP                          BEGIN EXECUTE FORM
&EXECUTE SETB    1                     EXECUTE FORM REQUESTED
         AIF     ('&NAME' EQ '').SKIPLB NO LABEL SPECIFIED
&NAME    DS      0H
.SKIPLB  ANOP
         AIF     ('&MF(2)' EQ '(1)').ENDLDPM    ADDR IN REG 1
         AIF     ('&MF(2)'(1,1) EQ '(').LOADREG ADDR IN REGISTER
         AIF     (T'&MF(2) EQ 'N').BADMF1
         LA      1,&MF(2)              LOAD ADDR OF PARM LIST
         AGO     .ENDLDPM
.LOADREG ANOP
&REGC    SETC    '&MF(2)'(2,K'&MF(2)-2) EXTRACT REG FROM SUBLIST
         LR      1,&REGC               MOVE ADDR INTO REG 1
.ENDLDPM ANOP                          PARM ADDR NOW IN REG 1
.*********************************************************************
.*                                                                   *
.*       CODE GENERATION FOR EXECUTE FORM OR NORMAL FORM (WHEN       *
.*       PARAMETERS ARE SPECIFIED IN REGISTERS, AND FOR STOKEN,      *
.*       DTOKEN, QUAL AND FREEPRM PARAMETER PROCESSING)              *
.*                                                                   *
.*********************************************************************
.PARMCHK ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE ACTION PARAMETER - EXECUTE FORM                 *
.*-------------------------------------------------------------------*
         AIF     (&DONEACT).ENDACT     ACTION IN PARM LIST ALREADY
         AIF     ('&ACTION' EQ '').ENDACT        ACTION NOT SPECIFIED
         AIF     ('&ACTION' EQ 'SIGNAL').SIGACT  ACTION=SIGNAL
         AIF     ('&ACTION' EQ 'DELETE').DELACT  ACTION=DELETE
         AIF     ('&ACTION' EQ 'LISTEN').LISACT  ACTION=LISTEN
         MNOTE   12,'INVALID ACTION : ACTION=&ACTION-MACRO TERMINATED'
         AGO     .ERREXIT
.LISACT  ANOP
         MVI     ENFPACT2,ENFPLIS      SET ACTION CODE TO LISTEN
         AGO     .ENDACT
.SIGACT  ANOP
         MVI     ENFPACT2,ENFPSIG      SET ACTION CODE TO SIGNAL
         AGO     .ENDACT
.DELACT  ANOP
         MVI     ENFPACT2,ENFPDEL      SET ACTION CODE TO DELETE
.ENDACT  ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE CODE PARAMETER - NORMAL(REG) OR EXECUTE FORM    *
.*-------------------------------------------------------------------*
         AIF     (&DONECDE).ENDCODE    ALREADY DONE EARLIER
         AIF     ('&CODE' EQ '').ENDCODE
         AIF     ('&CODE'(1,1) EQ '(').SETCDER  CODE IN REGISTER
         LA      14,&CODE              EVENT CODE INTO REG 14
         ST      14,ENFPCODE           STORE INTO ENF PARM LIST
         AGO     .ENDCODE
.LDADR   ANOP
&REGC    SETC    '&CODE'(3,K'&CODE-4)  EXTRACT REGISTER NUMBER
         MVC     ENFPCODE,0(&REGC)     MOVE EVENT CODE FROM REG
         AGO     .ENDCODE
.SETCDER ANOP
         AIF     ('&CODE'(1,2) EQ '((').LDADR  ADDR OF CODE IN REG
&REGC    SETC    '&CODE(1)'            SAVE REGISTER NUMBER
         ST      &REGC,ENFPCODE        MOVE EVENT CODE FROM REG
.ENDCODE ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE DTOKEN PARAMETER - NORMAL OR EXECUTE FORM       *
.*-------------------------------------------------------------------*
         AIF     ('&DTOKEN' NE '').DTOKN DTOKEN IS SPECIFIED
         AIF     (&EXECUTE).ENDDTKN    DTOKEN SPECIFIED IN LIST FORM
         AIF     ('&ACTION' NE 'DELETE').ENDDTKN
         MNOTE   08,'DTOKEN REQUIRED FOR DELETE REQUEST'
         AGO     .ENDDTKN
.DTOKN   ANOP
         AIF     ('&ACTION' EQ '').MISACTD ACTION NOT SPECIFIED    @P2A
         AIF     ('&ACTION' EQ 'SIGNAL').BADDTK2
         AIF     ('&ACTION' EQ 'LISTEN').ENDDTKN RESTORE DTOKEN AFTER
.*                                               RETURN FROM ENF
         AIF     ('&DTOKEN'(1,1) EQ '(').SETTKNR DTOKEN IN REG
         MVC     ENFPTOK,&DTOKEN       DTOKEN
         AGO     .ENDDTKN
.BADDTK2 MNOTE   04,'DTOKEN NOT ALLOWED FOR SIGNAL REQUEST - IGNORED'
         AGO     .ENDDTKN
.MISACTD MNOTE   08,'ACTION REQUIRED WITH DTOKEN - DTOKEN IGNORED' @P2A
         AGO     .ENDDTKN                                          @P2A
.SETTKNR ANOP
&REGC    SETC    '&DTOKEN(1)'          EXTRACT REGISTER NUMBER
         ST      &REGC,ENFPTOK         MOVE DTOKEN FROM REG
.ENDDTKN ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE STOKEN PARAMETER - NORMAL OR EXECUTE FORM       *
.*-------------------------------------------------------------------*
         AIF     ('&STOKEN' EQ '').ENDSTKN
         AIF     ('&ACTION' NE '' AND '&ACTION' NE 'SIGNAL').BADSTK2
         AIF     ('&STOKEN'(1,1) EQ '(').STOKR
         MVC     ENFPTOK,&STOKEN       STOKEN
         AGO     .ENDSTKN
.BADSTK2 ANOP
         MNOTE   04,'STOKEN NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
         AGO     .ENDSTKN
.STOKR   ANOP
&REGC    SETC    '&STOKEN(1)'          EXTRACT REG NUMBER
         ST      &REGC,ENFPTOK         STORE STOKEN FROM REG
.ENDSTKN ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE TYPE PARAMETER - EXECUTE FORM                   *
.*-------------------------------------------------------------------*
         AIF     (&DONETYP).ENDSYNC   TYPE IN PARM LIST ALREADY
         AIF     ('&TYPE' EQ '').ENDSYNC      TYPE NOT SPECIFIED
         AIF     ('&TYPE' EQ 'ASYNC').ASYNC   TYPE=ASYNC
         AIF     ('&TYPE' NE 'SYNC').BADSYN2  EXPECT TYPE=SYNC
         NI      ENFPFLG,255-ENFPASN   SYNCHRONOUS CALLER
         AGO     .ENDSYNC
.ASYNC   OI      ENFPFLG,ENFPASN       ASYNCHRONOUS CALLER
         AGO     .ENDSYNC
.BADSYN2 MNOTE   08,'INVALID TYPE : TYPE=&TYPE IGNORED'
.ENDSYNC ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE QUAL PARAMETER -  NORMAL OR EXECUTE FORM        *
.*-------------------------------------------------------------------*
         AIF     ('&QUAL' EQ '').ENDQUAL
         AIF     ('&ACTION' EQ 'DELETE').BADQUL2
         AIF     ('&QUAL'(1,1) EQ '(').SETQULR  QUALIFIER IN REG
         MVC     ENFPQUAL,&QUAL        QUALIFIER
         AGO     .ENDQUAL
.SETQULR ANOP
&REGC    SETC    '&QUAL(1)'            GET REGISTER NUMBER
         ST      &REGC,ENFPQUAL        MOVE QUALIFIER FROM REG
         AGO     .ENDQUAL
.BADQUL2 MNOTE   04,'QUAL NOT ALLOWED FOR DELETE REQUEST - IGNORED'
.ENDQUAL ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE QMASK PARAMETER - EXECUTE FORM                  *
.*-------------------------------------------------------------------*
         AIF     (&DONEMSK).ENDQMK     ALREADY PUT IN PARM LIST
         AIF     ('&QMASK' EQ '').ENDQMK  QMASK NOT SPECIFIED
         AGO     .GETMASK              GET QMASK
.MVQMASK ANOP
         AIF     (&ERRMASK).ENDQMK     ERROR : DONT GENERATE CODE
         MVI     ENFPQMSK,B'&MSK'      SET UP QMASK
.ENDQMK  ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE EXIT PARAMETER - NORMAL(REG) OR EXECUTE FORM    *
.*-------------------------------------------------------------------*
         AIF     (&DONEXIT).ENDEXIT    EXIT IN PARM LIST ALREADY
         AIF     ('&EXIT' EQ '').ENDEXIT
         AIF     ('&ACTION' EQ 'DELETE').BADXIT2
         AIF     ('&EXIT'(1,1) EQ '(').SETXITR EXIT ADDR IN REG
         LA      15,&EXIT              LOAD EXIT ROUTINE ADDR
         ST      15,ENFPEADR           SAVE EXIT ROUTINE ADDR
         AGO     .ENDEXIT
.SETXITR ANOP
&REGC    SETC    '&EXIT(1)'            GET REGISTER NUMBER
         ST      &REGC,ENFPEADR        SAVE EXIT ROUTINE ADDR
         AGO     .ENDEXIT
.BADXIT2 MNOTE   04,'EXIT NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
.ENDEXIT ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE FREEPRM PARAMETER - NORMAL (REG) & EXECUTE FORM *
.*-------------------------------------------------------------------*
         AIF     (&DONEFRP).ENDFRPE    FREEPRM ALREADY PROCESSED
         AIF     ('&FREEPRM' EQ '').ENDFRPE NOT SPECIFIED IN EXEC FORM
         AIF     ('&ACTION' NE '' AND '&ACTION' NE 'SIGNAL').BADFPM2
&N       SETA    N'&FREEPRM            NO OF FREEPRM VALUES SPECIFIED
         AIF     (&N GT &MAXF).BADFRV1      TOO MANY FREEPRM VALUES
         AIF     (&N GE &MINF).SPPROC1      CORRECT NO OF VALUES
         MNOTE   08,'SUBPOOL AND LENGTH REQUIRED - FREEPRM IGNORED'
         AGO     .ENDFRPE
.BADFRV1 ANOP
         MNOTE   08,'MORE THAN &MAXF FREEPRM VALUES - FREEPRM IGNORED'
         AGO     .ENDFRPE
.BADFPM2 MNOTE   04,'FREEPRM NOT ALLOWED FOR &ACTION REQUEST- IGNORED'
         AGO     .ENDFRPE
.*  -------------------------------------------   *
.*       SUBPOOL = &FREEPRM(1)                    *
.*  -------------------------------------------   *
.SPPROC1 ANOP                          BEGIN SUBPOOL PROCESSING
         AIF     (&DONESP).ENDSP1
         AIF     ('&FREEPRM(1)' EQ '').MISSP1
         AIF     ('&FREEPRM(1)'(1,1) NE '(').SETFRS1
&REGC    SETC    '&FREEPRM(1)'(2,K'&FREEPRM(1)-2)
         STC     &REGC,ENFPFSPL        SAVE SUBPOOL NUMBER
         AGO     .ENDSP1
.MISSP1  ANOP
         MNOTE   08,'SUBPOOL REQUIRED IN FREEPRM - FREEPRM IGNORED'
         AGO     .ENDFRPE
.SETFRS1 ANOP                          SAVE SUBPOOL VALUE
         LA      15,&FREEPRM(1)        GET SUBPOOL NUMBER
         STC     15,ENFPFSPL           SAVE SUBPOOL NUMBER
.ENDSP1  ANOP                          END OF SUBPOOL PROCESSING
.*  -------------------------------------------   *
.*       LENGTH = &FREEPRM(2)                     *
.*  -------------------------------------------   *
         AIF     (&DONELEN).ENDFLN1
         AIF     ('&FREEPRM(2)' EQ '').MISLEN1
         AIF     ('&FREEPRM(2)'(1,1) NE '(').SETFLN1
&REGC    SETC    '&FREEPRM(2)'(2,K'&FREEPRM(2)-2)
         ST      &REGC,ENFPFLEN        SAVE LENGTH VALUE
         AGO     .ENDFLN1
.MISLEN1 ANOP
         MNOTE   08,'LENGTH REQUIRED IN FREEPRM - FREEPRM IGNORED'
         AGO     .ENDFRPE
.SETFLN1 ANOP                          SAVE LENGTH VALUE
         AIF     (T'&FREEPRM(2) EQ 'N').NUMLEN
         B       &GNAME.C              BRANCH AROUND LENGTH VALUE
&GNAME.B DC      A(&FREEPRM(2))        DEFINE LENGTH VALUE
&GNAME.C MVC     ENFPFLEN,&GNAME.B     MOVE LENGTH VALUE
         AGO     .ENDFLN1
.NUMLEN  ANOP                          LENGTH VALUE IS A CONSTANT
         AIF     (&FREEPRM(2) LT 4096).MVABSL
         MVC     ENFPFLEN,=F'&FREEPRM(2)' MOVE LENGTH VALUE
         AGO     .ENDFLN1
.MVABSL  ANOP
         LA      15,&FREEPRM(2)        LOAD LENGTH VALUE
         ST      15,ENFPFLEN           SAVE LENGTH VALUE
.ENDFLN1 ANOP                          END OF LENGTH VALUE PROCESSING
.*  -------------------------------------------   *
.*       KEY = &FREEPRM(3)                        *
.*  -------------------------------------------   *
         AIF     (&DONEKEY).ENDFKY1
         AIF     (&N NE 3).DEFKEY1     KEY NOT SPECIFIED
         AIF     ('&FREEPRM(3)' EQ '').DEFKEY1
         AIF     ('&FREEPRM(3)'(1,1) NE '(').SETFKY1
&REGC    SETC    '&FREEPRM(3)'(2,K'&FREEPRM(3)-2)
         STC     &REGC,ENFPFKEY        SAVE KEY NUMBER
         AGO     .ENDFKY1
.SETFKY1 ANOP
         AIF     (T'&FREEPRM(3) NE 'N').GOODKY1 EQUATED VALUE
         AIF     (&FREEPRM(3) LE 15).GOODKY1     KEY= 0 TO 15
         MNOTE   08,'INVALID KEY VALUE &FREEPRM(3), FREEPRM IGNORED'
         AGO     .ENDFRPE
.DEFKEY1 ANOP
         MVI     ENFPFKEY,X'00'        DEFAULT TO KEY 0
         AGO     .ENDFKY1
.GOODKY1 ANOP
         LA      15,&FREEPRM(3)        LOAD STORAGE KEY
         SLL     15,4(0)               LOAD STORAGE KEY
         STC     15,ENFPFKEY           SAVE STORAGE KEY FOR FREEMAIN
.ENDFKY1 ANOP                          COMPLETE KEY PROCESSING
.*  -------------------------------------------   *
.*       SET ENFPFREE                             *
.*  -------------------------------------------   *
         AIF     (&DONEFFG).ENDFRPE    ENFPFREE ALREADY SET UP
         OI      ENFPFLG,ENFPFREE      FREE SIGNAL PARAM LIST
.*
.ENDFRPE ANOP
.*-------------------------------------------------------------------*
.*       PROCESS THE PARM PARAMETER - NORMAL(REG) OR EXECUTE FORM    *
.*-------------------------------------------------------------------*
         AIF     (&DONEPRM).ENDPARM   PARM ALREADY IN PARM LIST
         AIF     ('&PARM' EQ '').ENDPARM
         AIF     ('&ACTION' EQ '' OR '&ACTION' EQ 'SIGNAL').SETPARM
.BADPRM2 MNOTE   04,'PARM NOT ALLOWED FOR &ACTION REQUEST - IGNORED'
         AGO     .ENDPARM
.SETPARM ANOP
         AIF     ('&PARM'(1,1) EQ '(').SETPRMR
         LA      15,&PARM              GET PTR TO USER PARM LIST
         ST      15,ENFPSPRM           SAVE PTR TO USER PARM LIST
         AGO     .ENDPARM
.SETPRMR ANOP
&REGC    SETC    '&PARM(1)'
         ST      &REGC,ENFPSPRM        PUT PARM INTO ENF PARM LIST
.ENDPARM ANOP
.*-------------------------------------------------------------------*
.*       ALL SPECIFIED PARAMETERS ARE PROCESSED. CALL IEFENFFX       *
.*-------------------------------------------------------------------*
         ST      1,ENFPTR              STORE ADDR OF PARM LIST
         LA      1,ENFPTR              LOAD ADDR OF ENFPTR
         L       15,CVTPTR             ADDRESS CHAINING : CVT
         USING   CVT,15                ADDRESSIBILITY TO CVT
         L       15,CVTENFCT           ADDRESS OF ENFCT
         DROP    15                    RELEASE CVT BASE REGISTER
         USING   ENFCT,15              ADDRESSIBILITY TO ENFCT
         L       15,ENFCFMOD           ADDRESS OF ENFFX
         DROP    15                    RELEASE ENFCT BASE REGISTER
         BALR    14,15                 INVOKE IEFENFFX
.*------------------------------------------------------------------*
.*       RETURN TOKEN TO LISTENER - NORMAL OR EXECUTE FORM          *
.*------------------------------------------------------------------*
         AIF     ('&ACTION' NE 'LISTEN').NRSSTKN
         AIF     ('&DTOKEN' EQ '').NRSSTKN
         AIF     ('&DTOKEN'(1,1) EQ '(').RSTTOKR
         AIF     ('&TYPE' EQ 'ASYNC').NRSSTKN
         L       1,ENFPTR              RESTORE POINTER TO EPL
         MVC     &DTOKEN.(4),ENFPTOK   SAVE TOKEN FOR DELETE
         AGO     .NRSSTKN
.RSTTOKR ANOP
&REGC    SETC    '&DTOKEN(1)'          GET REG NUMBER
         L       1,ENFPTR              RESTORE POINTER TO EPL
         L       &REGC,ENFPTOK         RETURN TOKEN IN REG
.NRSSTKN ANOP                          END OF RESTORING DTOKEN
         AGO     .END                  NORMAL TERMINATION
.*------------------------------------------------------------------*
.*       ABNORMAL TERMINATION                                       *
.*------------------------------------------------------------------*
.ENFBUG  ANOP
         MNOTE   12,'ERROR IN ENFREQ MACRO - MACRO TERMINATED'
.ERREXIT ANOP
.*------------------------------------------------------------------*
.*       NORMAL TERMINATION                                         *
.*------------------------------------------------------------------*
.END     ANOP
         AIF     (&LIST).NORMEND       NO USING DONE
         DROP    1                     RELEASE BASE REGISTER
.NORMEND ANOP                          NORMAL TERMINATION (LIST FORM)
         MEND
* */ ENFREQ : MACRO
*             KEYS(ACTION,CODE,TYPE,QUAL,QMASK,EXIT,PARM,
*                  DTOKEN,STOKEN,FREEPRM,MF,RELATED,RETCODE); /* @P1A*/
*             ANS('?'MACLABEL'ENFREQP 'MACLISTMACKEYS';');
*   %END ENFREQ;
./ ADD NAME=EQUATES
         MACRO
         EQUATES
.*A096000,109100-109480                                          Y02006
.*C080000,081000,082500,094000,095000,097000                     Y02006
.*D075500-076500,084500-085500,087000,090500,092500              Y02006
.*D096000-096500,097500,098500,099500,101500,102500-103500       Y02006
.*D105000-108500                                                 Y02006
         SPACE
***********************************************************************
*                                                                     *
**                    ****   E Q U A T E S   ****                    **
*                                                                     *
***********************************************************************
         SPACE
R0       EQU   0
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
R6       EQU   6
R7       EQU   7
R8       EQU   8
R9       EQU   9
R10      EQU   10
R11      EQU   11
R12      EQU   12
R13      EQU   13
R14      EQU   14
R15      EQU   15
RETREG   EQU   14
COMBASE  EQU   12
BASE1    EQU   11
BASE2    EQU   10
BASE3    EQU   9
STOPBASE EQU   5
LINEREG  EQU   8
BUFREG   EQU   6
CNTREG   EQU   3
PREG     EQU   1
**************************************
GOSW     EQU   8   *      ** SWA **
SETCVTSW EQU   2   *
RDRSW    EQU   1   *
**************************************
IOERR    EQU   128 *
FMTERR   EQU   64  *
*                         ** SWB **
ENDSW    EQU   8   *
QSYSUT2  EQU   4   *               IF =1,SYSUT2 EXISTS           Y02006
**************************************
MSTRSW   EQU   128 *
SETFLSH  EQU   64                  SET FLUSHMODE INDICATOR       Y02006
POSITSW  EQU   32
TREADIN  EQU   16
EDITSW   EQU   8   *      ** SWC **                              S21014
**************************************
FLSHMODE EQU   128 *
NOSTDMG  EQU   16  *       ** SWD **                             S21014
NOLOADSW EQU   8 *          IF 1 A VERB CAME BEFORE END VERB     X01980
CONTSW   EQU   4 *                                               S21014
GPRSFND  EQU   2   *
**************************************
STOPSW   EQU   128 *
RESPC    EQU   32 *   INDICATES USER MUST RESPECIFY EDIT OPTIONS S01014
TITLESW  EQU   16  *      ** SWE **
BUILDMAP EQU   8   *  AMDPREAD MUST SCAN DUMP TO BUILD MAP(S)    X01980
**************************************
QPRDINIT EQU   128 *               IF 0 AMDPREAD INIT. REQUIRED  Y01980
NUCTFRMC EQU   64 *                IF 1 NUCTOP IS FROM CVT       Y02006
QSADMP   EQU   32 *                IF 1 INPUT IS FROM AMDSADMP   Y01980
DMPIC    EQU   16 *                IF 1 ENTIRE DUMP IS IN        Y02006
*                                  BUFFERS                       Y02006
*                                 ** SWF **                      Y01980
PAGEOK   EQU   8 *                SWITCH FOR FCB                 Y02006
QUT1LOD  EQU   2 *                SYSUT1 LOADED BY LOD           Y02006
***************************************
QSEGTBSW EQU   64 *          SEGMENT TABLE ORIGIN GIVEN BY USER  X01980
TTLSW    EQU   16  *        ** PRSW **                           S21016
PRNTRL   EQU   8 * *         PRINT REAL VERB CURRENT VERB        X01980
PRNTREAL EQU   4 * *         REAL STORAGE DATA REQUESTED         X01980
**************************************
*                         ** BUFSW **
PREFM    EQU   2   *
**************************************                         @Z40MI3F
*                                                              @Z40MI3F
*        MASKS FOR I3800SW, THE BYTE OF SWITCHES FOR THE       @Z40MI3F
*        3800 SUPPORT CODE (CONDENSED DUMP)                    @Z40MI3F
*                                                              @Z40MI3F
I3800204 EQU   1                   CONDENSED DUMP REQUESTED    @Z40MI3F
I380080  EQU   2                   8 LINES/INCH REQUESTED      @Z40MI3F
I3800ULN EQU   4                   USER-SPEC-LINECNT           @Z40MI3F
I3800KEY EQU   8                   KEY MSG NEEDED IN PGE TITLE @Z40MI3F
**************************************                         @Z40MI3F
**************************************
ATCB     EQU   128                 ENTER FOR EACH TCB            Y02006
BASID    EQU   64                  ENTER FOR EACH ASID           Y02006
CFORMAT  EQU   32                  ENTER ON EACH FORMAT STMT     Y02006
DCURJOB  EQU   16                  ENTER FOR PRINT CURRENT/      Y02006
*                                  PRINT JOBNAME STMT'S          Y02006
*                   **  EXITFLAG  **                             Y02006
ENUCLEUS EQU   8                   ENTER FOR PRINT NUCLEUS STMT  Y02006
ZVERB    EQU   X'00'               ENTER TO DECODE VERB          Y02006
**************************************
*                  *      **  FMTPTRN FLAG BYTE EQU'S  **
DTAE     EQU   32  *              DATA EBCDIC BIT
DTAC     EQU   16  *              DATA IN CORE BIT
DTAP     EQU   8   *               DATA PTR BIT
DTA      EQU   4   *               DATA INCLUDED BIT
LBLP     EQU   2   *               LABEL PTR BIT
LBL      EQU   1   *               LABEL INCLUDED BIT
*************************************
DCBOPEN  EQU   16
SISTER   EQU   128
MOTHER   EQU   132
DAUGHTER EQU   136
TCBTIOT  EQU   12
TCBPQE   EQU   152
TCBSPQE  EQU   24
TCBMSS   EQU   24
TCBNEXT  EQU   116
TCBFLGS  EQU   29
SHRSPQE  EQU   128
OWNSPQE  EQU   32
LASTSPQE EQU   64
MINCDE   EQU   4
TCBLLEP  EQU   36
JOBLAST  EQU   128
JOBVALID EQU   64
JSTCB    EQU   124
JBFNDBIT EQU   32
TIOTLNGH EQU   40
TIMER    EQU   80
BRWD1    EQU   128
BRWD2    EQU   32
RLD      EQU   64
PQEFPQE  EQU   8
PQESIZE  EQU   20
PQEREGN  EQU   24
PQERFLGS EQU   28
IEAQQCBO EQU   20
DCBIOB   EQU   68
CMPLT    EQU   64
BLKSIZE  EQU   62
LRECL    EQU   82
BUFNOA   EQU   20
XFF      EQU   X'FF'               USED FOR A 255 BIT MASK       X01980
         EJECT
         MEND
./ ADD NAME=ERMS
* /* START OF SPECIFICATIONS ****
*02* PROCESSOR = ASSEMBLER
**** END OF SPECIFICATIONS ***/
         GENERR ERR1,'SYSTEM VARIABLE SYMBOL $        USED AS SYMBOLIC X
               PARAMETER IN MACRO PROTOTYPE'
         GENERR ERR2,'SYMBOLIC PARAMETER $        IS DUPLICATED IN SAME*
                MACRO PROTOTYPE'
         GENERR ERR3,'SYSTEM VARIABLE SYMBOL $        USED IN OPERAND OX
               F GLOBAL OR LOCAL DECLARATION'
         GENERR ERR4,'GLOBAL OR LOCAL VARIABLE $        DUPLICATES A SYX
               MBOLIC PARAMETER IN SAME MACRO DEFINITION'
         GENERR ERR5,'GLOBAL OR LOCAL VARIABLE SYMBOL $        DUPLICATX
               ES PREVIOUS DEFINITION'
         GENERR ERR6,'UNDEFINED VARIABLE SYMBOL $        '
         GENERR  ERR7,'USAGE OF $        IS INCONSISTENT WITH ITS DECLAX
               RATION'
         GENERR ERR8,'CIRCULAR OPSYN STATEMENTS'
         GENERR ERR9,'EDIT DICTIONARY SPACE EXHAUSTED'
   GENERR ERR10,'SOURCE MACRO $        HAS BEEN PREVIOUSLY DEFINED'
         GENERR ERR12,'ICTL OR OPSYN STATEMENT APPEARS TOO LATE IN THE X
               PROGRAM'
         GENERR ERR13,'OPSYN NAME FIELD NOT ORDINARY SYMBOL, OR OPSYN OX
               PERAND FIELD NOT ORDINARY SYMBOL OR BLANK'
         GENERR ERR14,'INVALID OPCODE IN OPSYN OPERAND OR NAME FIELD'
         GENERR ERR16,'ILLEGAL OR INVALID NAME FIELD'
         GENERR ERR17,'.* COMMENTS STATEMENT IS ILLEGAL OUTSIDE MACRO DX
               EFINITION'
         GENERR ERR18,'MORE THAN 5 ERRORS ON THIS STATEMENT, ERROR ANAL*
               YSIS OF THIS STATEMENT IS TERMINATED'
         GENERR ERR19,'INVALID OPERAND ON ICTL OR ISEQ STATEMENT'
         GENERR ERR21,'INVALID TERM IN OPERAND'
         GENERR ERR22,'ICTL STATEMENT IS ILLEGAL IN COPY CODE'
         GENERR ERR23,'ILLEGAL MACRO, MEND, OR MEXIT STATEMENT-  MAY APX
               PEAR ONLY WITHIN MACRO DEFINITIONS'
    GENERR ERR24,'UNPAIRED PARENS, OR BLANK FOUND INSIDE PAIRED PARENS'
         GENERR ERR25,'STATEMENT OUT OF SEQUENCE'
         GENERR ERR26,'CHARACTERS APPEAR BETWEEN THE BEGIN AND CONTINUEX
                COLUMNS ON CONTINUATION CARD'
         GENERR ERR27,'ICTL, ISEQ, MACRO, OR OPSYN STATEMENT APPEARS INX
                A MACRO DEFINITION'
       GENERR ERR28,'ILLEGAL PROTOTYPE KEYWORD PARAMETER DEFAULT VALUE'
         GENERR ERR29,'$        IS AN ILLEGAL OPERAND IN A GLOBAL OR LOX
               CAL DECLARATION'
         GENERR ERR30,'DECLARED DIMENSION OF $        IS ILLEGAL'
         GENERR ERR31,'SET STATEMENT NAME NOT A VARIABLE SYMBOL, OR SETX
                STATEMENT NAME INCONSISTENT WITH DECLARED TYPE'
         GENERR ERR32,'$         APPEARS IMPROPERLY IN THE OPERAND OF TX
               HIS STATEMENT'
         GENERR ERR33,'$         IS AN INVALID LOGICAL OPERATOR'
         GENERR ERR35,'QUOTES NOT PAIRED, OR ILLEGAL TERMINATION OF QUOX
               TED STRING'
         GENERR ERR36,'ATTRIBUTE REFERENCE FOR $        IS INVALID'
         GENERR ERR37,'$        IS AN ILLEGAL SUBSCRIPT'
         GENERR ERR38,'$        IS AN INVALID SELF-DEFINING TERM'
         GENERR ERR39,'$        IS AN INVALID VARIABLE SYMBOL'
         GENERR ERR42,'PARAMETER IN MACRO PROTOTYPE OR MACRO INSTRUCTIO*
               N EXCEEDS 255 CHARACTERS'
         GENERR ERR43,'MACRO PROTOTYPE STATEMENT HAS INVALID OP CODE'
         GENERR ERR46,'STATEMENT COMPLEXITY EXCEEDED'
         GENERR ERR47,'UNEXPECTED END OF FILE ON SYSTEM INPUT (SYSIN)'
         GENERR ERR48,'ICTL STATEMENT HAS NO OPERAND'
      GENERR ERR49,'COPY STATEMENT OPERAND NOT A VALID ORDINARY SYMBOL'
         GENERR ERR50,'COPY STATEMENT DOES NOT HAVE AN OPERAND'
       GENERR ERR51,'UNEXPECTED END OF DATA ON SYSTEM LIBRARY (SYSLIB)'
         GENERR ERR52,'UNARY OPERATOR NOT A PLUS OR MINUS SIGN'
         GENERR ERR53,'OP CODE NOT FOUND ON FIRST OR ONLY CARD'
         GENERR ERR54,'INVALID OPERATION CODE'
         GENERR ERR55,'MEND STATEMENT GENERATED'
         GENERR ERR57,'DUPLICATE FACTOR $        IN SETC EXPRESSION NOTX
                TERMINATED BY A RIGHT PARENTHESIS'
         GENERR ERR58,'NO ENDING QUOTE ON SETC EXPRESSION'
         GENERR ERR59,'INVALID TERM IN LOGICAL EXPRESSION'
         GENERR ERR60,'END STATEMENT GENERATED'
         GENERR ERR61,'COPY NEST GREATER THAN FIVE'
         GENERR ERR62,'REQUIRED OPERAND FIELD MISSING'
         GENERR ERR64,'INTERLUDE DICTIONARY SPACE EXHAUSTED'
         GENERR ERR65,'EXPRESSION 2 OF EQU SYMBOL $        NOT IN RANGEX
                0-65535'
         GENERR ERR66,'EXPRESSION 3 OF EQU SYMBOL $        NOT IN RANGEX
                0-255'
         GENERR ERR67,'DECLARED DIMENSION FOR GLOBAL VARIABLE $        X
               IN $        $        IS INCONSISTENT'
         GENERR ERR68,'COPY MEMBER $         NOT FOUND IN LIBRARY'
         GENERR ERR69,'TOO MANY CONTINUATION CARDS, TWO ALLOWED'
         GENERR ERR70,'SUBSTRING NOTATION IS NOT DELIMITED BY COMMA OR X
               RIGHT PARENTHESIS'
         GENERR ERR73,'AGO OR AIF OPERAND NOT A SEQUENCE SYMBOL'
         GENERR   ERR74,'SEQUENCE SYMBOL $        IS MULTIPLY DEFINED IX
               N $        $        '
         GENERR   ERR76,'SEQUENCE SYMBOL $        IS UNDEFINED IN $    X
                    $        '
         GENERR   ERR78,'UNDEFINED OP CODE'
         GENERR ERR80,'ATTRIBUTE REFERENCE TO UNDEFINED SYMBOL'
         GENERR ERR81,'DECLARED TYPE FOR GLOBAL VARIABLE $       IN $  X
                     $        IS INCONSISTENT'
         GENERR ERR85,'MACRO HEADER MISSING, MACRO NOT EXPANDABLE'
         GENERR ERR87,'INVALID MACRO DEFINITION PROTOTYPE, MACRO NOT EXX
               PANDABLE'
         GENERR ERR88,'LIBRARY MACRO PROTOTYPE DOES NOT MATCH MEMBER NAX
               ME - MACRO NOT EXPANDABLE'
         GENERR ERR89,'GENERATION-TIME DICTIONARY SPACE EXHAUSTED'
         GENERR   ERR90,'UNDEFINED SEQUENCE SYMBOL ENCOUNTERED DURING CX
               ONDITIONAL ASSEMBLY'
         GENERR   ERR91,'KEYWORD PARAMETER $        IS DUPLICATED ON SAX
               ME MACRO CALL'
         GENERR   ERR92,'KEYWORD PARAMETER $        UNDEFINED IN MACRO X
               DEFINITION'
         GENERR ERR100,'DICTIONARY SPACE EXHAUSTED, NO SKELETION DICTIOX
               NARY BUILT'
         GENERR ERR101,'GENERATED OP CODE INVALID OR IS UNDEFINED'
         GENERR ERR102,'GENERATED OP CODE IS BLANK'
         GENERR ERR104,'MORE THAN ONE TITLE STATEMENT NAMED'
         GENERR ERR105,'GENERATED FIELD EXCEEDS 255 CHARACTERS'
         GENERR ERR107,'CHARACTER STRING USED AS AN ARITHMETIC TERM EXCX
               EEDS 10 CHARACTERS'
         GENERR ERR108,'CHARACTER STRING USED AS AN ARITHMETIC TERM CONX
               TAINS NON-DECIMAL CHARACTERS'
         GENERR ERR109,'CHARACTER STRING USED AS AN ARITHMETIC TERM IS X
               A NULL STRING'
         GENERR ERR110,'ARITHMETIC OVERFLOW IN INTERMEDIATE RESULT OF SX
               ETA EXPRESSION'
      GENERR ERR111,'SUBSCRIPT EXPRESSION HAS A ZERO OR NEGATIVE VALUE'
         GENERR ERR112,'SUBSCRIPT EXPRESSION EXCEEDS DECLARED DIMENSIONX
               '
         GENERR ERR113,'ILLEGAL REFERENCE MADE TO A PARAMETER THAT IS AX
                SUBLIST'
        GENERR ERR114,'NEGATIVE DUPLICATION FACTOR IN CHARACTER STRING'
         GENERR ERR115,'FIRST EXPRESSION IN SUBSTRING NOTATION HAS ZEROX
                OR NEGATIVE VALUE'
         GENERR ERR116,'SECOND EXPRESSION IN SUBSTRING NOTATION HAS NEGX
               ATIVE VALUE'
         GENERR ERR117,'FIRST EXPRESSION IN SUBSTRING NOTATION EXCEEDS X
               THE LENGTH OF THE STRING'
         GENERR ERR118,'THE ACTR LIMIT HAS BEEN EXCEEDED'
         GENERR ERR119,'ILLEGAL TYPE ATTRIBUTE REFERENCE'
         GENERR ERR120,'ILLEGAL LENGTH ATTRIBUTE REFERENCE'
         GENERR ERR121,'ILLEGAL COUNT (K'') ATTRIBUTE REFERENCE'
         GENERR ERR122,'ILLEGAL NUMBER (N'') ATTRIBUTE REFERENCE'
         GENERR ERR123,'ILLEGAL SCALE ATTRIBUTE REFERENCE'
         GENERR ERR124,'ILLEGAL INTEGER ATTRIBUTE REFERENCE'
         GENERR ERR125,'INVALID NAME- ILLEGAL EMBEDDED CHARACTER OR NONX
               -ALPHABETIC FIRST CHARACTER'
         GENERR ERR126,'MORE THAN 5 ERRORS IN THIS STATEMENT, PROCESSINX
               G OF THE STATEMENT IS TERMINATED'
         GENERR ERR127,'VALUE OF CHARACTER STRING USED IN ARITHMETIC COX
               NTEXT EXCEEDS 2,147,483,647'
         GENERR ERR128,'GENERATED OP CODE EXCEEDS 8 CHARACTERS'
    GENERR ERR129,'GENERATED SYMBOL IN NAME FIELD EXCEEDS 8 CHARACTERS'
     GENERR ERR130,'FIRST SUBSCRIPT OF &&SYSLIST REFERENCE IS NEGATIVE'
         GENERR ERR131,'INCONSISTENT GLOBAL VARIABLE DECLARATION, SETX X
               INSTRUCTION IGNORED'
         GENERR ERR132,'REFERENCE TO INCONSISTENTLY DECLARED GLOBAL VARX
               IABLE RESULTS IN ZERO VALUE'
         GENERR ERR133,'NO WORK SPACE FOR OPEN CODE SKELETON DICTIONARY*
               '
         GENERR ERR157,'DC OPERAND VALUE TOO LONG'
         GENERR ERR158,'NAME OF STATEMENT IN DSECT USED IN RELOCATABLE *
               ADDRESS CONSTANT'
         GENERR ERR159,'RELOCATABLE EXPRESSION AS EXPLICIT DISPLACEMENT*
                IN S-TYPE CONSTANT'
         GENERR ERR161,'INVALID LITERAL #  '
         GENERR ERR162,'VALUE ERROR- SHOULD BE BETWEEN 0 AND 9 - #  '
         GENERR ERR163,'MISSING OR INVALID SYMBOL IN NAME FIELD'
         GENERR ERR164,'INVALID OR ILLEGAL START STATEMENT'
         GENERR ERR165,'NULL PUNCH OPERAND OR PUNCH OPERAND EXCEEDS 80 X
               CHARACTERS'
         GENERR ERR167,'SYMBOL FILE OUT OF STEP'
         GENERR ERR168,'AN ARITHMETIC EXPRESSION NOT USED IN CONDITIONAX
               L ASSEMBLY CONTAINS MORE THAN 20 TERMS'
         GENERR ERR169,'INVALID SELF-DEFINING TERM #  '
         GENERR ERR170,'TWO ADJACENT BINARY OPERATORS, OR BINARY OPERATX
               OR EXPECTED BUT NOT FOUND #  '
         GENERR ERR171,'TITLE STATEMENT OPERAND EXCEEDS 100 CHARACTERS'
         GENERR ERR172,'VALUE OF ORG OPERAND IS LESS THAN THE CONTROL SX
               ECTION STARTING ADDRESS'
         GENERR ERR173,'ONE OR MORE SYMBOLS IN AN ORG OPERAND DO NOT BEX
               LONG TO THE CURRENT CSECT, DSECT, OR COM'
         GENERR ERR174,'ORG OPERAND IS ABSOLUTE, MUST BE RELOCATABLE'
         GENERR  ERR175,'OPERAND SHOULD BEGIN WITH A QUOTE'
         GENERR  ERR176,'UNPAIRED AMPERSAND #  '
         GENERR ERR177,'MISSING OPERAND'
         GENERR  ERR178,'SYNTAX ERROR #  '
         GENERR  ERR179,'OPERAND SUBFIELD #   MUST BE ABSOLUTE'
         GENERR  ERR180,'OPERAND 2 OF CNOP MUST BE EITHER 4 OR 8'
         GENERR  ERR181,'OPERAND 1 OF CNOP MUST BE 0, 2, 4 OR 6'
         GENERR ERR182,'OPERAND 1 OF CNOP IS NOT LESS THAN OPERAND 2'
         GENERR  ERR183,'MNOTE/CCW OPERAND EXCEEDS 255'
      GENERR  ERR184,'INVALID RANGE ON CCW #  , 65535 IS MAXIMUM VALUE'
         GENERR  ERR185,'BLANK EXPECTED AS A DELIMITER #  '
         GENERR  ERR186,'INVALID SYMBOL #   OF ENTRY, EXTRN, OR WXTRN'
         GENERR  ERR187,'SYMBOL LONGER THAN 8 CHARACTERS #  '
         GENERR  ERR188,'$        IS AN UNDEFINED SYMBOL'
    GENERR  ERR189,'INVALID ENTRY OPERAND, LINKAGE CANNOT BE PERFORMED'
   GENERR  ERR190,'OPERAND OF PUSH STATEMENT IS NOT USING OR PRINT #  '
         GENERR  ERR191,'PUSH LEVELS EXCEED 4 #  '
    GENERR  ERR192,'OPERAND OF POP STATEMENT IS NOT USING OR PRINT #  '
         GENERR  ERR193,'POP REQUEST NOT BALANCED BY PREVIOUS PUSH'
         GENERR  ERR194,'INVALID OPTION IN PRINT STATEMENT #  '
         GENERR  ERR195,'INVALID USING OR DROP STATEMENT #  '
         GENERR ERR196,'$        HAS BEEN PREVIOUSLY DEFINED'
         GENERR  ERR197,'*** MNOTE ***'
       GENERR  ERR198,'INVALID TYPE DECLARED ON DC/DS/DXD CONSTANT #  '
         GENERR  ERR199,'INVALID LENGTH MODIFIER #  '
         GENERR  ERR200,'INVALID SCALE MODIFIER #  '
         GENERR  ERR201,'ILLEGAL OR INVALID EXPONENT MODIFIER IN DC/DS/X
               DXD CONSTANT #  '
         GENERR  ERR202,'ARITHMETIC PRECISION OF FLOATING-POINT CONSTANX
               T LOST #  '
         GENERR  ERR203,'L, D, E, F, H, OR Y-TYPE CONSTANT TRUNCATED, HX
               IGH ORDER DIGITS LOST #  '
         GENERR ERR204,'RELOCATABLE EXPRESSION IN A- OR Y-TYPE ADDRESS X
               CONSTANT WITH BIT LENGTH SPECIFICATION NOT ALLOWED'
         GENERR  ERR205,'RELOCATABLE Y-TYPE CONSTANT, VALUE TRUNCATED TX
               O RIGHTMOST 2 BYTES'
         GENERR  ERR206,'DUPLICATION FACTOR ERROR'
         GENERR  ERR207,'OPERAND OF Q-TYPE CONSTANT DOES NOT NAME A DSEX
               CT OR DXD'
         GENERR  ERR208,'DISPLACEMENT GREATER THAN X''FFF'''
         GENERR  ERR209,'ADDRESSABILITY ERROR- BASE AND DISPLACEMENT CAX
               NNOT BE RESOLVED AND ARE SET TO 0'
         GENERR  ERR210,'TOO FEW OPERANDS'
         GENERR  ERR211,'TOO MANY OPERANDS'
         GENERR  ERR212,'PREMATURE END OF OPERAND #  '
         GENERR  ERR213,'COMPLEXLY RELOCATABLE EXPRESSION #  '
         GENERR  ERR214,'ILLEGAL USAGE OF LITERAL #  '
     GENERR  ERR215,'ILLEGAL DELIMITER, RIGHT PARENTHESIS EXPECTED #  '
         GENERR  ERR216,'ILLEGAL OPERAND FORMAT #  '
         GENERR  ERR217,'RELOCATABILITY ERROR #  '
         GENERR ERR218,'INVALID REGISTER SPECIFICATION - EVEN-NUMBERED X
               REGISTER REQUIRED'
         GENERR  ERR219,'REGISTER OR IMMEDIATE FIELD OVERFLOW #  '
         GENERR  ERR220,'ALIGNMENT ERROR #  '
         GENERR  ERR221,'ILLEGAL INDEX REGISTER OR LENGTH MODIFIER #  '
         GENERR  ERR222,'INVALID INDEX REGISTER SPECIFIED #  '
         GENERR  ERR223,'RELOCATABLE INDEX REGISTER SPECIFIED #  '
         GENERR  ERR224,'LENGTH ERROR #  '
   GENERR  ERR225,'RELOCATABLE LENGTH FIELD IN MACHINE INSTRUCTION #  '
 GENERR  ERR226,'BASE REGISTER OF MACHINE INSTRUCTION NOT ABSOLUTE #  '
   GENERR  ERR228,'RELOCATABLE DISPLACEMENT IN MACHINE INSTRUCTION #  '
         GENERR  ERR229,'POSSIBLE REENTERABILITY ERROR #  '
         GENERR  ERR230,'BASE REGISTER NUMBER GREATER THAN 15 #  '
         GENERR  ERR231,'SYMBOL NOT PREVIOUSLY DEFINED - $        '
         GENERR  ERR233,'MORE THAN 6 LEVELS OF PARENTHESES #  '
         GENERR  ERR234,'PREMATURE END OF EXPRESSION #  '
         GENERR  ERR235,'ARITHMETIC OVERFLOW #  '
         GENERR  ERR236,'ILLEGAL CHARACTER IN EXPRESSION #  '
         GENERR  ERR237,'CIRCULAR DEFINITION'
         GENERR  ERR238,'ILLEGAL AMPERSAND IN SELF-DEFINING TERM #  '
         GENERR  ERR239,'INVALID FLOATING POINT CHARACTERISTIC'
         GENERR ERR240,'CHARACTER STRING OR SELFDEFINING TERM TERMINATEX
               D BEFORE ENDING QUOTE FOUND'
         GENERR ERR241,'SECOND OPERAND OF CCW NOT BETWEEN 0 AND X''FFFFX
               FF'''
         GENERR ERR242,'SPACE OPERAND NOT A SINGLE POSITIVE DECIMAL SEL*
               FDEFINING TERM'
         GENERR ERR243,'FIRST CCW OPERAND IS NEGATIVE'
         GENERR ERR244,'BITS 38 AND 39 OF CCW OPERAND NOT ZERO'
         GENERR ERR246,'LOCATION COUNTER OVERFLOW'
         GENERR ERR254,'ILLEGAL FORMAT OF SECOND OPERAND OF END STATEME*
               NT'
         GENERR ERR255,'FIXED OR FLOATING POINT EXPRESSION ERROR #  '
./ ADD NAME=ESADVCT
*%IF DVCIBASE = ''                      /* IF NO DVCTI BASE SPECIFIED*/
*%THEN %DVCIBASE = 'BASED(CVTZDTAB)';   /* USE CVTZDTAB              */
*%IF DVCTBASE = ''                      /* IF NO DVCT BASE SPECIFIED */
*                                       /* USE UCBTYP TO INDEX DVCTI */
*                                       /* AND USE CVTZDTAB + OFFSET */
*%THEN %DVCTBASE = 'BASED(CVTZDTAB+DVCTIOFF(UCBTYP & DVCTYPMK))';
*%;/*
         MACRO
         ESADVCT   &DSECT=YES
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHADVCT
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = OS/VS2 RELEASE 2, LEVEL 0
.*
.*01  CHANGE-ACTIVITY = NONE
.*
.*01  DESCRIPTIVE-NAME = DEVICE CHARACTERISTICS TABLE MAPPING
.*
.*01  FUNCTION = THIS TABLE DESCRIBES PHYSICAL ATTRIBUTES OF EACH DASD
.*    DEVICE WHICH HAS BEEN SYSGENED
.*
.*01  NOTES = THE TABLE IS POINTED TO BY CVTZDTAB.
.*
.*01  MODULE-TYPE = MACRO
.*02    PROCESSOR = ASSEMBLER-370R
.*
.*02    MACRO-SIZE = 200 STATEMENTS
.*
.**** END OF SPECIFICATIONS ***/
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73226/021160                                        */
*/********************************************************************/
*/*                 DEVICE CHARACTERISTICS TABLE                     */
*/********************************************************************/
*/*                                                                  */
*/*         THIS TABLE MAY BE USED TO FIND THE CHARACTERISTICS       */
*/*         OF DIRECT ACCESS DEVICES.  THE APPLICABLE DEVICES ARE    */
*/*         THOSE CONTAINING UCBDACC IN UCBTBYT3 (SEE IEFUCBOB).     */
*/*                                                                  */
*/*         NOTE: DEVTYPE MAY BE USED TO EXTRACT INFORMATION         */
*/*         FROM THIS TABLE.  ITS OUTPUT AREA IS IN A SLIGHTLY       */
*/*         DIFFERENT FORMAT, AND IS MAPPED BY IHADVA.               */
*/*                                                                  */
*/*         THE TABLE IS COMPOSED OF AN INDEX FOLLOWED BY ONE        */
*/*         ENTRY FOR EACH DASD DEVICE WHICH HAS BEEN SYSGENED       */
*/*                                                                  */
*/*         FOR ASSEMBLER USE, TWO SEPARATE DSECTS ARE PROVIDED.     */
*/*         A USING ON DVCTI GIVES ADDRESSIBILITY TO THE INDEX,      */
*/*         AND A USING ON DVCT GIVES ADDRESSIBILITY TO AN ENTRY.    */
*/*         SPECIFYING DSECT=NO SUPPRESSES THE INDEX AND PROVIDES    */
*/*         AN ENTRY DESCRIPTION WITHOUT A DSECT STATEMENT           */
*/*                                                                  */
*/*         FOR PLS USE, TWO STRUCTURES ARE PROVIDED. THEIR STORAGE  */
*/*         ATTRIBUTES ARE CONTROLLED BY SETTING STRING MACRO        */
*/*         VARIABLES AS FOLLOWS:                                    */
*/*         STRUCTURE  MACRO-VAR       DEFAULT SETTING               */
*/*         DVCTI      %DVCIBASE  'BASED(CVTZDTAB)'                  */
*/*         DVCT       %DVCTBASE  'BASED(CVTZDTAB                    */
*/*                                +DVCTIOFF(UCBTYP&DVCTYPMK))'      */
*/*                                                                  */
*/*         THE DEFAULT SETTINGS WILL PROVIDE ADDRESSIBILITY TO      */
*/*         ALL FIELDS, BUT DEPEND ON CVT AND UCB ADDRESSIBILITY.    */
*/*                                                                  */
*/*               FORMAT OF EACH ENTRY                               */
*/*         _____________________________________________            */
*/*   0(00)                                                       */
*/*                DVCCYL               DVCTRK                    */
*/*         __________________________________________            */
*/*   4(04)                             DVCOVHD                   */
*/*                DVCTRKLN       DVCOVNLB  DVCOVLB              */
*/*         _________________________________________            */
*/*   8(08)                                                      */
*/*          DVCOVNK   DVCFLAGS        DVCTOL                    */
*/*         _________________________________________            */
*/*  12(0C)                      ______________________            */
*/*                DVCALT                                         */
*/*         _____________________       DVCOVR0         RPS       */
*/*         ___________________________________________  ONLY      */
*/*  16(10)                                            SECTION   */
*/*          DVCSECT   DVCSECTD        DVCBPSEC                  */
*/*         _________________________________________            */
*/********************************************************************/
*%/*
         AIF   ('&DSECT' EQ 'NO').NODSECT
DVCTI    DSECT ,              INDEX TO DVCT
*              THIS INDEX IS LOCATED FROM CVTZDTAB.
*              THE PROPER ENTRY IS FOUND BY ADDING THE LOW ORDER
*              4 BITS OF UCBTYP TO THE ADDRESS IN CVTZDTAB.
DVCTYPMK EQU   X'0000000F'              TYPICAL USAGE:
*              LA    RWRK,DVCTYPMK      MASK FOR UNIT TYPE NUMBER
*              N     RWRK,UCBTYP        PICK UP UNIT TYPE NUMBER
*              IC    RWRK,DVCTIOFF(RWRK)  PICK UP OFFSET
DVCTIOFF DS    AL1                      OFFSET TO DVCT ENTRY
***********************************************************************
         SPACE 3
DVCT     DSECT ,                        FORMAT OF DVCT ENTRY
*              THE ENTRY IS LOCATED BY ADDING DVCTIOFF TO CVTZDTAB
         AGO   .ENTRY
.NODSECT ANOP
DVCT     DS    0H                       FORMAT OF DVCT ENTRY
.ENTRY   ANOP
*
DVCCYL   DS    H                        PHYS NO. CYL PER VOLUME
DVCTRK   DS    H                        NO. TRACKS PER CYLINDER
DVCTRKLN DS    H                        NO. OF BYTES PER TRACK
*
DVCOVHD  DS    0H                       BLOCK OVERHEAD IF DVC2BOV=1
DVCOVH1  DS    0H            OVERHEAD FOR MODULO DEVICES     ESP 84015
*              USE FOLLOWING TWO CONSTANTS IF DVC2BOV=0
DVCOVNLB DS    XL1                      OVERHEAD NOT LAST BLOCK
DVCOVLB  DS    XL1                      OVERHEAD LAST BLOCK
*
DVCOVNK  DS    XL1                      OVERHEAD DECREMENT NOT KEYED
*
DVCFLAGS DS    BL1
DVCMODU  EQU   X'10'         TRK REQUIRES MODULE ARITHMETIC  ESP 84015
DVC2BOV  EQU   X'08'                    IF 1, USE DVCOVHD
*                                       IF 0, USE DVCOVNLB,DVCOVLB
DVCBI    EQU   X'04'         DEVICE HAS 2301 RELATED ADDR.   ESP 84015
DVCBB    EQU   X'02'         DEVICE HAS BB + CCHHR ADDR.     ESP 84015
DVCFTOL  EQU   X'01'                    IF 1, APPLY TOLERANCE FACTOR
*
DVCOVH2  DS    0H            OVERHEAD FOR MODULO DEVICES     ESP 84015
DVCTOL   DS    H                        TOLERANCE FACTOR
*              APPLY TOLERANCE FACTOR AS FOLLOWS:
*              1. ADD BLOCKSIZE AND KEYLENGTH
*              2. MULTIPLY BY DVCTOL
*              3. SHIFT RIGHT DVCTSHFT BITS
*              4. ADD APPROPRIATE OVERHEADS
DVCTSHFT EQU   9                        SHIFT AMT TO DIVIDE BY 512
*
DVCALT   DS    H                        NUMBER ALTERNATE TRKS/VOLUME
*
DVCENTLG EQU   *-DVCT                   BASIC SIZE OF DEVICE TABLE
*                                       ENTRY, NOT INCLUDING ADD'L
*                                       CHARACTERISTICS FOR RPS
**********************************************************************
*              THE FOLLOWING SECTION OF THE TABLE IS PRESENT         *
*              ONLY FOR RPS DEVICES--TEST UCBTBYT2 FOR UCB2OPT3      *
**********************************************************************
DVCRPS   DS    0CL4                     RPS SECTION
DVCOVR0  DS    H                        OVERHEAD BYTES FOR RECORD 0
DVCSECT  DS    XL1                      NUMBER SECTORS IN FULL TRACK
DVCDSECT DS    0XL1          NAME IN SP VERSION OF MACRO     ESP 84015
DVCSECTD DS    XL1                      NUMBER DATA SECTORS
* SP ADDITION / REPLACEMENT FOR DVCDSECT = DVCTRKLN/DVCBPSEC ESP 84015
DVCBPSEC DS    H             BYTES PER SECTOR                ESP 84015
*
*        SP ADDITION / MODULUS HALF-WORD                     ESP 84015
DVCMOD1  DS    H             MODULUS FOR TRK CALC            ESP 84015
*              END OF DVCT
         MEND
**/;
*
* DCL  1 DVCTI DVCIBASE,                /* INDEX TO DVCT             */
*        2 *   PTR(8),                  /* OFFSET TO ENTRY 0         */
*        2 DVCTIOFF (*) PTR(8);         /* OFFSETS TO ENTRIES 1 TO N */
*/*                                                                  */
*/*         USE THE LAST 4 BITS OF UCBTYP TO INDEX DVCTIOFF.         */
*/*         DVCTYPMK MAY BE USED AS A MASK TO 'AND' WITH UCBTYP.     */
*/*         THE INDEX ENTRIES ARE OFFSETS RELATIVE TO CVTZDTAB.      */
*/********************************************************************/
*
* DCL  1 DVCT DVCTBASE,                 /* FORMAT OF DVCT ENTRY      */
*        2 DVCCYL FIXED(15) UNSIGNED,   /* PHYS NO. CYL PER VOLUME   */
*        2 DVCTRK FIXED(15) UNSIGNED,   /* NO. TRACKS PER CYLINDER   */
*        2 DVCTRKLN FIXED(15) UNSIGNED, /* NO. BYTES PER TRACK       */
*
*        2 DVCOVHD FIXED(15),           /* BLOCK OVERHD IF DVC2BOV=1 */
*          /* USE THE FOLLOWING TWO CONSTANTS IF DVC2BOV=0           */
*          3 DVCOVNLB FIXED(8),         /* OVERHEAD NOT LAST BLOCK   */
*          3 DVCOVLB FIXED(8),          /* OVERHEAD FOR LAST BLOCK   */
*
*        2 DVCOVNK FIXED(8),            /* OVERHD DECREMENT NOT KEYED*/
*
*        2 DVCFLAGS BIT(8),
*          3 * BIT(4),                  /* RESERVED                  */
*          3 DVC2BOV BIT(1),            /* IF 1, USE DVCOVHD         */
*                                       /* IF 0, USE DVCOVNLB,OVLB   */
*          3 * BIT(2),                  /* RESERVED                  */
*          3 DVCFTOL BIT(1),            /* IF 1, APPLY TOLER FACTOR  */
*
*        2 DVCTOL FIXED(15) UNSIGNED,   /* TOLERANCE FACTOR          */
*/*         APPLY TOLERANCE AS FOLLOWS:                              */
*/*         (BLOCKSIZE+KEYLENGTH) * DVCTOL / DVCTSHFT + OVERHEADS    */
*
*        2 DVCALT FIXED(15),            /* NO. OF ALTERNATE TRACKS   */
*/********************************************************************/
*/*         THE FOLLOWING SETION OF THE TABLE IS PRESENT             */
*/*         ONLY FOR RPS DEVICES (UCB2OPT3=1)                        */
*/********************************************************************/
*        2 DVCRPS,                      /*RPS SECTION                */
*          3 DVCOVR0 FIXED(15),         /* OVERHD BYTES FOR RECORD 0 */
*          3 DVCSECT FIXED(8),          /* NO. SECTORS IN FULL TRACK */
*          3 DVCSECTD FIXED(8);         /* NO. OF DATA SECTORS       */
*/********************************************************************/
*
* DCL    DVCTSHFT FIXED(15) CONSTANT(512); /* DENOMINATOR FOR DVCTOL */
*/*         THE FOLLOWING CONSTANT CAN BE USED TO MASK OUT ALL BUT   */
*/*         THE DVCTIOFF SUBSCRIPT FROM THE UCB WORD UCBTYP          */
* DCL    DVCTYPMK BIT(32) CONSTANT('0000000F'X); /* UCBTYP MASK      */
*
*/*               END OF DVCT                                        */
./ ADD NAME=EVALWORK
         MACRO
&NAME    EVALWORK &DUMMY,&MAXTERM=20,&MAXPARN=6
         LCLA  &I
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.*  GENERATES THE EVALUATION ROUTINE WORK AREA
.* IN PHASE COMMON. THIS WORK AREA IS USED BY
.* IFNX4V AND IFNX5V RESPECTIVLY
.*
SELFDEFN DBV   SELFDEF(0)
EVALMODE DSW   SUBLIST,PRDEFREQ,DCOP
CLCLNG   DS    H
IMPLNG   DS    H
EVALREGS DS    0A
ATPTR    DS    A(TERMS)
ALPTR    DS    A(RLIST)
AOPTR    DS    A(OPRNS-1)
ERRPTR   DS    F                        ERROR COLUMN POINTER
OPNEND   DS    F
&I       SETA  (&MAXTERM+1)/2*2
         DS    0D                       CAUSE DOUBLE WORD ALIGNMENT
RLIST    DS    &I.H
&I       SETA  &MAXPARN*16+25
EVALWORK DS    0XL&I
FIRST    DBV   ,
STATUS   DBV   STATUS1(1),STATUS2(2)
         DS    3H
RELOCTR  DBV   NORELOC(0)
         DS    X
         DS    3H
EVALSW   DSW   ,ENDOFEXP,LOCTREF,LNGQUOTE
EVALSW1  DSW   ,EVALERR,SDVSIZE,RELOCER,OVERFLO,NOTDEFN,,FATALER
         ORG   EVALSW1
         DBV   COMPLEX(0)
         DS    3H
PARENCNT DS    0H
         DS    X
         DBV   NOPAREN(0),MAXPARN(&MAXPARN)
         DS    3H
SHIFTN   DBV   SHIFTB(1),SHIFTD(3),SHIFTH(4),SHIFTC(8)
         DBV   MAXCHAR(4),MAXHEX(8),MAXDEC(10),MAXBIT(32)
         ORG   FIRST                    ORIGIN
&I       SETA  &MAXPARN*4+6
TERMS    DS    &I.F
         DBV   ENDPARN(0)
&I       SETA  &MAXPARN*4+4
OPRNS    DS    &I.X
         DS    X                        NOT USED
XSSAV    DS    H                        TEST ESDID
DSECT2   DSECT ,                        TERM STACK POINTER
         ORG   DSECT2                   ORIGIN
TERM1CNT DS    F
TERM1    DS    F
TERM2CNT DS    F
TERM2    DS    F
DSECT3   DSECT ,                        RELOCATION LIST POINTER
         ORG   DSECT3                   ORIGIN
ESDID    DS    H
NEXTESD  DS    H
JTEXT    DSECT ,                        OPERATOR STACK POINTER
         ORG   JTEXT                    ORIGIN
OLDOP    DBV   DEL0(JLPARN),ADD0(JPLUS),SUB0(JMINUS),MUL0(JASTER),     ,
               DIV0(JSLASH),UNY0(JSLASH+1)
NEWOP    DBV   DEL1(JLPARN),ADD1(JPLUS),SUB1(JMINUS),MUL1(JASTER),     ,
               DIV1(JSLASH),UNY1(JSLASH+1)
DSECT5   DSECT ,                        INPUT POINTER
         ORG   DSECT5                   ORIGIN
CHAR1    DS    X                        CURRENT CHARACTER
CHAR2    DS    X                        NEXT CHARACTER
CHAR3    DS    X                        NEXT CHARACTER
DSECT14  DSECT ,                        INPUT POINTER
         ORG   DSECT14                  ORIGIN
         DBV   BQUOTE(JB),CQUOTE(JC),XQUOTE(JX),LQUOTE(JL)
&SYSECT  DSECT ,                        RESUME DSECT
         MEND
./ ADD NAME=EWATMAP
*/*                                                                 */
*/* ***** VTAM DEVICE DEPENDENT EWA SECTION OF EWATMAP *****        */
*/*                                                                 */
*%GOTO   EWAPLS1;
* *****   ASSEMBLER LANGUAGE DSECT FOR EWATMAP   *******
         MACRO
         EWATMAP
EWATMAP  DSECT
         ORG   EWAIERP
         DS    0F                       FORCE WORD BOUNDARY
EWATRS01 DS    CL4                      RESERVED
EWATOBR  DS    0CL18                    OBR INTERFACE
EWATSIO  DS    XL2                      SIO COUNTER
EWATTMP  DS    XL1                      TEMPORARY ERROR COUNTER
EWATRS02 DS    XL1                      RESERVED
EWATCCL  DS    XL1                      LAST EXECUTED COMMAND
EWATCCF  DS    XL1                      FIRST COMMAND IN ERROR
EWATREC  DS    XL1                      RECD TYPE, IF ZERO PERM ERROR
*           EQUATES FOR EWATREC FLAGS
EWATRS03 EQU   X'80'                    RESERVED
EWATOVF  EQU   X'40'                    COUNTER OVERFLOW RECORD
EWATCLO  EQU   X'20'                    CLOSEDOWN RECORD
EWATRS04 EQU   X'1F'                    RESERVED (LAST 5 BITS/FLAGS)
*
EWATRS05 DS    XL1                      RESERVED
EWATTRM  DS    CL8                      SYMBOLIC TERMINAL NAME
EWATSNL  DS    XL1                      LAST SENSE RECEIVED
EWATSNF  DS    XL1                      FIRST SENSE RECEIVED
EWATSR06 DS    XL3                      RESERVED
EWATCSW  DS    XL7                      ORIGINAL CSW - LAST 7 BYTES
EWATCCW  DS    XL8                      ORIGINAL CCW
         DS    0F                       FORCE WORD BDY FOR EWATERPW
EWATERPW DS    0XL20                    3270 ERP WORK AREA
EWATLFCM DS    A                        CURRENT FAILING CCW POINTER
EWATCFCS DS    A                        CURRENT FAILING SET POINTER
EWATEWRT DS    A                        E/W CCW SET POINTER
EWATWSBA DS    A                        W/SBA CCW SET POINTER
EWATCFOP DS    XL1                      CURRENT FAILING OP-CODE
EWATRECT DS    XL1                      RECORD TYPE FLAGS
*           EQUATES FOR EWATRECT FLAGS
EWATRS07 EQU   X'80'                    RESERVED
EWATCTOV EQU   X'40'                    COUNTER OVERFLOW RECORD
EWATCLOS EQU   X'20'                    CLOSEDOWN RECORD
EWATRS08 EQU   X'1F'                    RESERVED (LAST 5 BITS/FLAGS)
*
EWATLPC  DS    XL2                      LOCAL PROCESS CONTROL SWS
*           EWATLPC FIRST FLAG BYTE EQUATES
EWATLPC0 EQU   X'80'                    INVALID CCW ADDRESS
EWATLPC1 EQU   X'40'                    SEARCH EXITING
EWATLPC2 EQU   X'20'                    SEARCH DATA CHAINING
EWATLPC3 EQU   X'10'                    CHANNEL PGM NOT ALL READS
EWATLPC4 EQU   X'08'                    E/W OR W/SBA FOUND
EWATLPC5 EQU   X'04'                    RD FOLLOWS E/W OR W/SBA
EWATLPC6 EQU   X'02'                    RD & WT FOLLOWS E/W OR W/SBA
EWATLPC7 EQU   X'01'                    ALLOW RETRY ( CCC/ICC/CDC/UC )
*           EWATLPC SECOND FLAG BYTE EQUATES
EWATLPC8 EQU   X'80'                    RETRY CONTROL SWITCH 1
EWATLPC9 EQU   X'40'                    SUCCESSFUL RETRY
EWATPLCA EQU   X'20'                    RETRY CONTROL SWITCH 2
EWATLPCR EQU   X'1F'                    RESERVED (LAST 5 BITS/FLAGS)
         MEND
*%EWAPLS1: ;
*DCL
*  1  EWATMAP  BDY(WORD) DEFINED(EWAIERP), /* VTAM DEP. EWA SECTION  */
*     2  EWATRS01 CHAR(4),                 /* RESERVED               */
*     2  EWATOBR  CHAR(18),           /* OBR INTERFACE               */
*        3  EWATSIO  CHAR(2),         /* SIO COUNTER                 */
*        3  EWATTMP  CHAR(1),         /* TEMPORARY ERROR COUNTER     */
*        3  EWATRS02 CHAR(1),         /* RESERVED                    */
*        3  EWATCCL  CHAR(1),         /* LAST EXECUTED COMMAND       */
*        3  EWATCCF  CHAR(1),         /* FIRST COMMAND IN ERROR      */
*        3  EWATREC  CHAR(1),         /* RECORD TYPE, IF ZERO PERMANENT
*                                        ERROR                       */
*           4  EWATRS03 BIT(1),       /* RESERVED                    */
*           4  EWATOVF  BIT(1),       /* COUNTER OVERFLOW RECORD     */
*           4  EWATCLO  BIT(1),       /* CLOSEDOWN RECORD            */
*           4  EWATRS04 BIT(5),       /* RESERVED                    */
*        3  EWATRS05 CHAR(1),         /* RESERVED                    */
*        3  EWATTRM  CHAR(8),         /* SYMBOLIC TERMINAL NAME      */
*        3  EWATSNL  CHAR(1),         /* LAST SENSE RECEIVED         */
*        3  EWATSNF  CHAR(1),         /* FIRST SENSE RECEIVED        */
*     2  EWATRS06 CHAR(3),            /* RESERVED                    */
*     2  EWATCSW  CHAR(7),            /* ORIGINAL CSW - LAST 7 BYTES */
*     2  EWATCCW  CHAR(8),            /* ORIGINAL CCW                */
*     2  EWATERPW CHAR(20) BDY(WORD), /* 3270 ERP WORK AREA          */
*        3  EWATLFCM PTR(31),         /* CURRENT FAILING CCW POINTER */
*        3  EWATCFCS PTR(31),         /* CURRENT FAILING SET POINTER */
*        3  EWATEWRT PTR(31),         /* E/W CCW SET POINTER         */
*        3  EWATWSBA PTR(31),         /* W/SBA CCW SET POINTER       */
*        3  EWATCFOP CHAR(1),         /* CURRENT FAILING OP-CODE     */
*        3  EWATRECT BIT(8),          /* RECORD TYPE FLAGS           */
*           4  EWATRS07 BIT(1),       /* RESERVED                    */
*           4  EWATCTOV BIT(1),       /* COUNTER OVERFLOW RECORD     */
*           4  EWATCLOS BIT(1),       /* CLOSEDOWN RECORD            */
*           4  EWATRS08 BIT(5),       /* RESERVED                    */
*        3  EWATLPC  BIT(16),         /* LOCAL PROCESS CONTROL SWS   */
*           4  EWATLPC0 BIT(1),       /* INVALID CCW ADDRESS         */
*           4  EWATLPC1 BIT(1),       /* SEARCH EXITING              */
*           4  EWATLPC2 BIT(1),       /* SEARCH DATA CHAINING        */
*           4  EWATLPC3 BIT(1),       /* CHANNEL PGM NOT ALL READS   */
*           4  EWATLPC4 BIT(1),       /* E/W OR W/SBA FOUND          */
*           4  EWATLPC5 BIT(1),       /* RD FOLLOWS E/W OR W/SBA     */
*           4  EWATLPC6 BIT(1),       /* RD & WT FOLLOWS E/W OR W/SBA*/
*           4  EWATLPC7 BIT(1),       /* ALLOW RETRY (CCC/ICC/CDC/UC)*/
*           4  EWATLPC8 BIT(1),       /* RETRY CONTROL SWITCH 1      */
*           4  EWATLPC9 BIT(1),       /* SUCCESSFUL RETRY            */
*           4  EWATLPCA BIT(1),       /* RETRY CONTROL SWITCH 2      */
*           4  EWATLPCR BIT(5);       /* RESERVED                    */
./ ADD NAME=EWTCMAP
*@LIST PUSH;
*@LIST OFF ;
* /*
         MACRO
         EWTCMAP
         SPACE 1
****************************************************************
*                                                              *
*    THIS DSECT DESCRIBES THE TELECOMMUNICATIONS ACCESS METHOD *
*    DEVICE DEPENDENT SECTION OF THE ERP WORKAREA. IT IS       *
*    INVOKED BY IECDERWA IF EWTC IS SPECIFIED AS AN OPTION ON  *
*    THE MACRO CALL.                                           *
*                                                              *
*   OS/VS2 RELEASE 2,4/1/73,LEVEL=01                           *
*                                                              *
****************************************************************
         SPACE 1
EWTCADDR EQU *
EWTCSNS  DS    AL2                      SENSE INFORMATION
EWTCTID  DS    AL2                      TERMINAL IDENTIFICATION
*                                       CHARACTERS
***********************************************************************
*        START OF DEVICE DEPENDENT INFORMATION FOR OBR/SDR            *
***********************************************************************
EWTCSIO  DS    AL2                      COUNT OF START I/O COMMANDS FOR
*                                       LINE OR STATION
EWTCTMP  DS    AL1                      COUNT OF TEMPORARY ERRORS FOR
*                                       LINE OR STATION
EWTCMSK  DS    AL1                      LINE OR STATION RECORDING ERROR
*                                       MASK
EWTCTPL  DS    AL1                      TP OP-CODE OF LAST INTERRUPTED
*                                       I/O OPERATION
EWTCTPF  DS    AL1                      TP OP-CODE OF FIRST INTERRUPTED
*                                       I/O OPERATION
EWTCFLG  DS    AL1                      OBR/SDR FLAG BYTE
*                  BIT DEFINITIONS
EWTCTEM  EQU   X'80'                    TEMPORARY ERROR
EWTCOVF  EQU   X'40'                    COUNTER OVERFLOW
EWTCEOD  EQU   X'20'                    END-OF-DAY RECORDING
EWTCSEL  EQU   X'10'                    INITIAL SELECTION ERROR
EWTCGRA  DS    AL1                      GRAPHIC RESPONSE CHARACTER
EWTCTRM  DS    CL8                      TERMINAL OR UCB NAME
EWTCSNL  DS    AL1                      SENSE OF LAST INTERRUPTED I/O
*                                       OPERATION.
EWTCSNF  DS    AL1                      SENSE OF FIRST INTERRUPTED I/O
*                                       OPERATION.
***********************************************************************
*        END OF DEVICE DEPENDENT INFORMATION FOR OBR/SDR              *
***********************************************************************
EWTCRSV1 DS    AL2                      RESERVED
EWTCRSV2 DS    AL1                      RESERVED
EWTCCSW  DS    XL7                      INTERRUPTED CSW
EWTCCCW  DS    2A                       INTERRUPTED CCW.
EWTCBUFF DS    A                        ADDRESS OF TPER BUFFER FOR MDR
EWTCEND  EQU   *
*
***********************************************************************
*   0  *   EWTCSNS                     *   EWTCTID                    *
***********************************************************************
*   4  *   EWTCSIO                     *   EWTCTMP     *   EWTCMSK    *
***********************************************************************
*   8  *   EWTCTPL     *   EWTCTPF     *   EWTCFLG     *   EWTCGRA    *
***********************************************************************
*  12  *                               EWTCTRM                        *
***********************************************************************
*  16  *                                                              *
***********************************************************************
*  20  *   EWTCSNL     *   EWTCSNF     *   EWTCRSV1                   *
***********************************************************************
*  24  *   EWTCRSV2    *               EWTCCSW                        *
***********************************************************************
*  28  *                                                              *
***********************************************************************
*  32  *                               EWTCCCW                        *
***********************************************************************
*  36  *                                                              *
***********************************************************************
*  40  *                               EWTCBUFF                       *
***********************************************************************
         MEND
* */
*@LIST POP;
*
* /************************************************************/
* /*                                                          */
* /*   THIS STRUCTURE DESCRIBES THE TELECOMMUNICATIONS ACCESS */
* /*   METHOD DEVICE DEPENDENT SECTION OF THE ERP WORKAREA. IT*/
* /*   IS INVOKED BY IECDERWA IF EWTC IS SPECIFIED AS AN      */
* /*   OPTION ON THE MACRO CALL.                              */
* /*                                                          */
* /*   OS/VS2 RELEASE2,4/1/73,LEVEL=01                        */
* /*                                                          */
* /************************************************************/
*
         DCL 1 EWTCADDR CHAR(44) BASED(ADDR(EWAIERP)) BDY(DWORD),
*            2 EWTCSNS FIXED (16),     /* SENSE INFORMATION          */
*            2 EWTCTID FIXED (16),     /* TERMINAL IDENTIFICATION    */
*                                      /* CHARACTERS.                */
* /*******************************************************************/
* /*         START OF DEVICE DEPENDENT INFORMATION FOR OBR/SDR       */
* /*******************************************************************/
*            2 EWTCSIO FIXED (16),     /* COUNT OF START I/O COMMANDS*/
*                                      /* FOR LINE OR STATION        */
*            2 EWTCTMP FIXED  (8),     /* COUNT OF TEMPORARY ERRORS  */
*                                      /* FOR LINE OR STATION        */
*            2 EWTCMSK FIXED  (8),     /* LINE OR STATION RECORDING  */
*                                      /* ERROR MASK                 */
*            2 EWTCTPL FIXED  (8),     /* TP OP-CODE OF LAST         */
*                                      /* INTERRUPTED I/O OPERATION  */
*            2 EWTCTPF FIXED  (8),     /* TP OP-CODE OF FIRST        */
*                                      /* INTERRUPTED I/O OPERATION  */
*            2 EWTCFLG FIXED  (8),     /* OBR/SDR FLAG BYTE          */
*              3 EWTCTEM BIT(1),       /* TEMPORARY ERROR            */
*              3 EWTCOVF BIT(1),       /* COUNTER OVERFLOW           */
*              3 EWTCEOD BIT(1),       /* END-OF-DAY RECORDING       */
*              3 EWTCSEL BIT(1),       /* INITIAL SELECTION ERROR    */
*            2 EWTCGRA FIXED  (8),     /* GRAPHIC RESPONSE           */
*                                      /* CHARACTER.                 */
*            2 EWTCTRM CHAR   (8),     /* TERMINAL OR UCB NAME       */
*            2 EWTCSNL FIXED  (8),     /* SENSE OF LAST INTERRUPTED  */
*                                      /* I/O OPERATION              */
*            2 EWTCSNF FIXED  (8),     /* SENSE OF FIRST INTERRUPTED */
*                                      /* I/O OPERATION              */
*            2 EWTCRSV1 FIXED (16),    /* RESERVED                   */
* /*******************************************************************/
* /*         END OF DEVICE DEPENDENT INFORMATION FOR OBR/SDR         */
* /*******************************************************************/
*            2 EWTCRSV2 FIXED  (8),    /* RESERVED                   */
*            2 EWTCCSW  CHAR (7),      /* INTERRUPTED CSW.           */
*            2 EWTCCCW CHAR(8),        /* INTERRUPTED CCW.           */
             2 EWTCBUFF CHAR(4),       /* ADDRESS OF TPER BUFFER     */
*                                      /*  FOR MDR                   */
* /*******************************************************************/
* /*  0  *   EWTCSNS                   *   EWTCTID                   */
* /*******************************************************************/
* /*  4  *   EWTCSIO                   *   EWTCTMP    *  EWTCMSK     */
* /*******************************************************************/
* /*  8  *   EWTCTPL    *   EWTCTPF    *   EWTCFLG    *  EWTCGRA     */
* /*******************************************************************/
* /* 12  *                         EWTCTRM                           */
* /*******************************************************************/
* /* 16  *                                                           */
* /*******************************************************************/
* /* 20  *   EWTCSNL    *   EWTCSNF    *   EWTCRSV1                  */
* /*******************************************************************/
* /* 24  *   EWTCRSV2   *          EWTCCSW                           */
* /*******************************************************************/
* /* 28  *                                                           */
* /*******************************************************************/
* /* 32  *                         EWTCCCW                           */
* /*******************************************************************/
* /* 36  *                                                           */
* /*******************************************************************/
* /* 40  *                         EWTCBUFF                          */
* /*******************************************************************/
*            2 EWTCEND CHAR(0);        /* END OF EWTC                */
./ ADD NAME=EWTMAP
*
         MACRO
         EWTMAP
*
***********************************************************************
*              MAGNETIC TAPE ERP - DEVICE DEPENDENT SECTION           *
*   THIS SECTION DESCRIBES THE TAPE ERP DEVICE DEPENDENT SECTION OF   *
*   THE EXTENDED WORK AREA.  IT IS INVOKED BY IECDERWA IF EWT IS      *
*   SPECIFIED AS AN OPTION ON THE MACRO CALL.                         *
***********************************************************************
         ORG   EWAIERP
***********************************************************************
*                         24 SENSE BYTES                              *
***********************************************************************
EWTSNS   DS    XL24                    TAPE SENSE INFORMATION
         ORG   EWTSNS
EWTSNS0  DS    XL1                     SENSE BYTE 0
EWTCREJ  EQU   X'80'                   COMMAND REJECT
EWTINT   EQU   X'40'                   INTERVENTION REQUIRED
EWTBUSO  EQU   X'20'                   BUS OUT
EWTEQU   EQU   X'10'                   EQUIPMENT CHECK
EWTDATA  EQU   X'08'                   DATA CHECK
EWTOVRN  EQU   X'04'                   OVERRUN
EWTWCZ   EQU   X'02'                   WORD COUNT ZERO
EWTDCC   EQU   X'01'                   DATA CONVERTER CHECK
EWTSNS1  DS    XL1                     SENSE BYTE 1
EWTNOISE EQU   X'80'                   NOISE
EWTSTA   EQU   X'40'                   TU STATUS A
EWTSTB   EQU   X'20'                   TU STATUS B
EWT7TK   EQU   X'10'                   SEVEN-TRACK
EWTLP    EQU   X'08'                   LOAD POINT
EWTWRT   EQU   X'04'                   WRITE STATUS
EWTFP    EQU   X'02'                   FILE PROTECT
EWTNCAP  EQU   X'01'                   NOT CAPABLE
EWTSNS2  DS    XL1                     SENSE BYTE 2
EWTTIE   EQU   X'FF'                   TIE BYTE
EWTINVAL EQU   X'03'                   TIE BYTE INVALID
EWTSNS3  DS    XL1                     SENSE BYTE 3
EWTSNS4  DS    XL1                     SENSE BYTE 4
EWTSNS5  DS    XL1                     SENSE BYTE 5
EWTPEID  EQU   X'10'                   PE ID BURST CHECK'
EWTSNS6  DS    XL1                     SENSE BYTE 6
EWTSNS7  DS    XL1                     SENSE BYTE 7
EWTDSE   EQU   X'08'                   DATA SECURITY ERASE
EWTSNS8  DS    XL1                     SENSE BYTE 8
EWTSNS9  DS    XL1                     SENSE BYTE 9
EWTSNS10 DS    XL1                     SENSE BYTE 10
EWTSNS11 DS    XL1                     SENSE BYTE 11
EWTSNS12 DS    XL1                     SENSE BYTE 12
EWTSNS13 DS    XL1                     SENSE BYTE 13
EWTSNS14 DS    XL1                     SENSE BYTE 14
EWTSNS15 DS    XL1                     SENSE BYTE 15
EWTSNS16 DS    XL1                     SENSE BYTE 16
EWTSNS17 DS    XL1                     SENSE BYTE 17
EWTSNS18 DS    XL1                     SENSE BYTE 18
EWTSNS19 DS    XL1                     SENSE BYTE 19
EWTSNS20 DS    XL1                     SENSE BYTE 20
EWTSNS21 DS    XL1                     SENSE BYTE 21
EWTSNS22 DS    XL1                     SENSE BYTE 22
EWTSNS23 DS    XL1                     SENSE BYTE 23
***********************************************************************
*                        IDAL LIST FOR ROR                            *
***********************************************************************
*
EWTIDAL  DS    17F                     ERP IDAL LIST
*
***********************************************************************
*                         WTO MESSAGE AREA                            *
***********************************************************************
         ORG   EWTIDAL
EWTWTO   DS    0F                      WTO OUTPUT MESSAGE
EWTLNGTH DS    AL2                     MESSAGE LENGTH
         DS    XL2                     MCS FLAGS
EWTMSGNO DS    CL8                     MESSAGE ID
EWTUNID  DS    CL4                     UNIT ADDRESS
EWTTEXT  DS    CL13                    MESSAGE TEXT
EWTOPCDE DS    CL3                     CCW OP CODE
EWTSTAT  DS    CL5                     CCW STATUS
EWTSENSE DS    CL5                     SENSE DATA
EWTLOC   DS    CL9                     DCB BLOCK COUNT
EWTVOL   DS    CL6                     VOLUME SERIAL NUMBER
EWTROUTE DS    XL4                     DESCRIPTOR AND ROUTING
EWTMGEND EQU   *
         DS    CL7                     N/A
EWTVIRT  DS    A                       IOSB START ADDRESS
***********************************************************************
*                             ROR CCW                                 *
***********************************************************************
*
EWTRRCCW DS    CL8                     ROR CCW
         ORG   EWTRRCCW
EWTRRCMD DS    CL1                     ROR COMMAND
         ORG   EWTRRCCW
EWTRRADR DS    CL4                     ROR CCW DATA ADDRESS
EWTRRFLS DS    CL2                     ROR CCW FLAGS
EWTRRCNT DS    CL2                     ROR CCW COUNT
*
***********************************************************************
*                        OBR RECORD AREA                              *
***********************************************************************
EWTOBR   EQU   *                       OBR INFORMATION
EWTVOLID DS    XL6                     VOLUME SERIAL NUMBER
EWTBLK   DS    XL2                     BLOCK COUNT
EWTVES   DS    XL16                    VES INFORMATION
*
***********************************************************************
*                        MISCELLANEOUS                                *
***********************************************************************
         ORG   EWTOBR
EWTDCB   DS    A                       DCB ADDR SAVE AREA
EWTDEB   DS    A                       DEB ADDR SAVE AREA
EWTRES   DS    F                       RESIDUAL CNT FROM RECORD LENGTH
EWTNBFP  DS    F                       NUMBER OF BYTES IN FIRST PAGE
EWTC1    DS    F                       CONSTANT (1) - MADE + OR -
EWTC7FF  DS    F                       CONSTANT (2047) - MADE + OR -
*
         ORG   EWTNBFP
EWTWORD  DS    0F                      WORK AREA
EWTMASK  DS    F                       SAVE AREA FOR MASK BYTE
EWTTST   DS    XL1                     SENSE BYTE TEST AREA
         MEND
./ ADD NAME=EWUMAP
*@LIST PUSH;
*@LIST OFF;
*/*
         MACRO
         EWUMAP
**/
*@LIST POP;
*/********************************************************************/
*/* EWUMAP MAPS THE DEVICE DEPENDENT SECTION OF THE ERP WORK AREA    */
*/*        FOR UNIT RECORD DEVICES. IT IS CALLED AS AN INNER MACRO   */
*/*        FROM IECDERWA.                                            */
*/*        THE FOLLOWING CODES ARE USED TO INDICATE WHICH DEVICES    */
*/*        THE FIELDS APPLY TO:                                      */
*/*        A - 1403,1443                                             */
*/*        B - 3211                                                  */
*/*        C - 1442,2501,2520,2596                                   */
*/*        D - 1402,2540                                             */
*/*        E - 3505,3525                                             */
*/*        F - 2671                                                  */
*/*        G - 3800                                                  */
*/********************************************************************/
*@LIST PUSH;
*@LIST OFF;
*/*
         ORG   EWAIERP
EWUSN0   DS    X                  1ST SENSE BYTE
EWUCREJ  EQU   X'80'              COMMAND REJECT      (ALL)
EWUINT   EQU   X'40'              INTERVENTION REQD.  (ALL)
EWUBUSO  EQU   X'20'              BUS OUT             (ALL)
EWUEQCK  EQU   X'10'              EQUIPMENT CHECK     (ALL)
EWUDTCK  EQU   X'08'              DATA CHECK          (ALL)
EWUBUFP  EQU   X'04'              BUFFER PARITY       (A,B)
EWUOVRN  EQU   X'04'              OVERRUN             (C)
EWULDCK  EQU   X'02'              LOAD CHECK          (B,G)
EWUUSEQ  EQU   X'02'              UNUSUAL SEQUENCE    (D)
EWUABFR  EQU   X'02'              ABNORMAL FMT RESET  (E)
EWUCH9   EQU   X'01'              CHANNEL 9           (A,B,G)
EWUPEK   EQU   X'01'              PERMANENT ERROR KEY (E)
EWUSN1   DS    X                  2ND SENSE BYTE
EWUCRTRY EQU   X'80'              COMMAND RETRY       (B)
EWUPERM  EQU   X'80'              PERMANENT ERROR     (E)
EWUIVCMD EQU   X'80'              INVALID COMMAND     (G)
EWUNORDY EQU   X'80'              NOT READY           (G)
EWUCMD   EQU   X'80'              BUS OUT PARITY COMMAND  (G)
EWUHARD  EQU   X'80'              EQMT CK HARDWARE ERROR  (G)
EWUUNPRT EQU   X'80'              UNPRINTABLE CHARACTER   (G)
EWUINVLN EQU   X'80'              INCORRECT LENGTH    (G)
EWUOPCK  EQU   X'40'              OPERATION CHECK      (G)
EWUDATA  EQU   X'40'              BUS OUT PARITY DATA (G)
EWUPRM   EQU   X'40'              PERMANENT ERROR     (G)
EWUERLPI EQU   X'40'              INCORRECT LPI IN FCB (G)
EWUPCK   EQU   X'40'              PRINT CHECK         (B)
EWUARTRY EQU   X'40'              AUTOMATIC RETRY     (E)
EWUPQ    EQU   X'20'              PRINT QUALITY       (B)
EWUMOT   EQU   X'20'              MOTION ERROR        (E)
EWUTONFL EQU   X'20'              TONER COLLECTOR FULL (G)
EWUELGFL EQU   X'20'              ERROR LOG FULL      (G)
EWUNOTRT EQU   X'20'              NO TRANSLATE TABLE  (G)
EWUHLFER EQU   X'20'              FCB HALF INCH ERROR (G)
EWULNPOS EQU   X'10'              LINE POSITION       (B)
EWUIRTRY EQU   X'10'              RETRY AFTER INT.REQ.(E)
EWUNOTNE EQU   X'10'              TONER EMPTY         (G)
EWUCANCL EQU   X'10'              CANCEL KEY          (G)
EWUCHCOD EQU   X'10'              NO MATCH FCB CHAN CODE (G)
EWUBADCC EQU   X'10'              FCB INVALID CHAN CODE  (G)
EWUFORM  EQU   X'08'              FORMS CHECK         (B)
EWUDEVRQ EQU   X'08'              DEVELOPER REPL REQUIRED (G)
EWUMLTCH EQU   X'08'              MULTIPLE CHARACTERS (G)
EWUFCBLN EQU   X'08'              FCB LENGTH ERROR    (G)
EWUSUPR  EQU   X'04'              COMMAND SUPPRESS    (B)
EWUEOFRM EQU   X'04'              END OF FORMS        (G)
EWUNOWCG EQU   X'04'              WCGM NOT LOADED FOR TRANSL CODE (G)
EWUMECMO EQU   X'02'              MECHANICAL MOTION   (B)
EWUOUTFL EQU   X'02'              OUTPUT FULL         (G)
EWUBADTC EQU   X'02'              INVALID TRANSLATE CODES (G)
EWUSN2   DS    X                  3RD SENSE BYTE
EWUUCSBP EQU   X'80'              UCS PARITY ERROR    (B)
EWUHLDL  EQU   X'80'              FORMS HOLDER INTERLOCK (G)
EWUBDWCG EQU   X'80'              INVALID WCGM ID     (G)
EWUPLBP  EQU   X'40'              PLB PARITY ERROR    (B)
EWUXFRCK EQU   X'40'              TRANSFER CHECK      (G)
EWUWCG00 EQU   X'40'              NO ID FOR WCGM 00   (G)
EWUFCBP  EQU   X'20'              FCB PARITY ERROR    (B)
EWUFUSCK EQU   X'20'              FUSER CHECK         (G)
EWUBDCPY EQU   X'20'              INVALID COPY MOD    (G)
EWUCFS   EQU   X'10'              CFS CHECK    (G)
EWUBDFOV EQU   X'10'              INVALID FORMS OVERLAY SEQ (G)
EWUPRCCK EQU   X'08'              PROCESS CHECK          (G)
EWUBDGRM EQU   X'08'              INVALID GRAPHIC MOD (G)
EWUWCPAR EQU   X'04'              WCGM DATA PARITY ERROR (G)
EWULINOV EQU   X'01'              LINE OVER-RUN       (G)
EWUSN3   DS    X                  4TH SENSE BYTE
EWUPRRDY EQU   X'80'              PRINTER READY       (G)
EWUPGEPT EQU   X'40'              PAGE BUFFER EMPTY   (G)
EWUBLKDC EQU   X'20'              BLOCK DATA CHECK    (G)
EWUTHRED EQU   X'10'              BURSTER SS THREADED (G)
EWUSYRST EQU   X'08'              SYSTEM RESTART REQUIRED  (G)
EWUPCADV EQU   X'04'              PC ADVANCE ENABLED  (G)
EWUSN4   DS    X                  5TH SENSE BYTE
EWUSN5   DS    X                  6TH SENSE BYTE
         DS    XL2                RESERVED
EWUWORK  DS    0D,120X            RESERVED FOR COMPILER ASSIGNED TEMPS
         MEND
**/
*@LIST POP;
* %IF EWUSYS='VS1' %THEN %GO TO EWUA;
* DCL
*  1 EWUMAP CHAR(128)BDY(DWORD)DEF(EWAIERP),
* %GO TO EWUD;
* %EWUA:;
*   DCL 1 EWUMAP CHAR(24) BASED(UCBSNADR),
* %EWUD:;
*   2 EWUSN0 BIT(8),            /*1ST SENSE BYTE                     */
*    3 EWUCREJ BIT(1),          /*COMMAND REJECT      (ALL)          */
*    3 EWUINT  BIT(1),          /*INTERVENTION REQD.  (ALL)          */
*    3 EWUBUSO BIT(1),          /*BUS OUT             (ALL)          */
*    3 EWUEQCK BIT(1),          /*EQUIPMENT CHECK     (ALL)          */
*    3 EWUDTCK BIT(1),          /*DATA CHECK          (ALL)          */
*    3 EWUBUFP BIT(1),          /*BUFFER PARITY       (A,B)          */
*     4 EWUOVRN BIT(1),         /*OVERRUN             (C)            */
*    3 EWULDCK BIT(1),          /*LOAD CHECK          (B,G)          */
*     4 EWUUSEQ BIT(1),         /*UNUSUAL SEQUENCE    (D)            */
*      5 EWUABFR BIT(1),        /*ABNORMAL FMT RESET  (E)            */
*    3 EWUCH9  BIT(1),          /*CHANNEL 9           (A,B,G)        */
*     4 EWUPEK  BIT(1),         /*PERMANENT ERROR KEY (E)            */
*   2 EWUSN1 BIT(8),            /*2ND SENSE BYTE                     */
*    3 EWUCRTRY BIT(1),         /*COMMAND RETRY       (B)            */
*     4 EWUPERM BIT(1),         /*PERMANENT ERROR     (E)            */
*      5 EWUIVCMD BIT(1),       /* INVALID COMMAND    (G)            */
*       6 EWUNORDY BIT(1),      /* NOT READY          (G)            */
*        7 EWUCMD BIT(1),       /* BUS OUT PARITY CMD (G)            */
*         8 EWUHARD BIT(1),     /* HARDWARE ERROR     (G)            */
*          9 EWUUNPRT BIT(1),   /* UNPRINTABLE CHAR   (G)            */
*           10 EWUINVLN BIT(1), /* INCORRECT LENGTH   (G)            */
*    3 EWUPCK BIT(1),           /*PRINT CHECK         (B)            */
*     4 EWUARTRY BIT(1),        /*AUTOMATIC RETRY     (E)            */
*       5 EWUOPCK BIT(1),       /* OPERATION CHECK     (G)           */
*        6 EWUDATA BIT(1),      /* BUS OUT PARITY DATA (G)           */
*         7 EWUPRM BIT(1),      /* PERMANENT ERROR    (G)            */
*          8 EWUERLPI BIT(1),   /* INCORRECT LPI IN FCB (G)          */
*    3 EWUPQ BIT(1),            /*PRINT QUALITY       (B)            */
*     4 EWUMOT BIT(1),          /*MOTION ERROR        (E)            */
*       5 EWUTONFL BIT(1),      /* TONER COLLECTOR FULL  (G)         */
*        6 EWUELGFL BIT(1),     /* ERROR LOG FULL     (G)            */
*         7 EWUNOTRT BIT(1),    /* NO TRANSLATE TABLE (G)            */
*          8 EWUHLFER BIT(1),   /* FCB HALF INCH ERROR (G)           */
*    3 EWULNPOS BIT(1),         /*LINE POSITION       (B)            */
*     4 EWUIRTRY BIT(1),        /*RETRY AFTER INT.REQ.(E)            */
*      5 EWUNOTNE BIT(1),       /* TONER EMPTY        (G)            */
*       6 EWUCANCL BIT(1),      /* CANCEL KEY         (G)            */
*        7 EWUCHCOD BIT(1),     /* NO MATCH FCB CHAN CODE (G)        */
*         8 EWUBADCC BIT(1),    /* FCB INVALID CHAN CODES (G)        */
*    3 EWUFORM BIT(1),          /*FORMS CHECK         (B)            */
*     4 EWUDEVRQ BIT(1),        /* DEVELOPER REPL REQUIRED   (G)     */
*      5 EWUMLTCH BIT(1),       /* MULTIPLE CHAR      (G)            */
*       6 EWUFCBLN BIT(1),      /* FCB LENGTH ERROR   (G)            */
*    3 EWUSUPR BIT(1),          /*COMMAND SUPPRESS    (B)            */
*     4 EWUEOFRM BIT(1),        /* END OF FORMS       (G)            */
*       5 EWUNOWCG BIT(1),      /* WCGM NOT LOADED    (G)            */
*    3 EWUMECMO BIT(1),         /*MECHANICAL MOTION   (B)            */
*     4 EWUOUTFL BIT(1),        /* OUTPUT FULL        (G)            */
*      5 EWUBADTC BIT(1),       /* INVALID TRANSLATE CODES (G)       */
*   2 EWUSN2 BIT(8),            /*3RD SENSE BYTE                     */
*    3 EWUUCSBP BIT(1),         /*UCS PARITY ERROR    (B)            */
*     4 EWUHLDL  BIT(1),        /* FORMS HOLDER INTERLOCK (G)        */
*      5 EWUBDWCG BIT(1),       /* INVALID WCGM ID    (G)            */
*    3 EWUPLBP BIT(1),          /*PLB PARITY ERROR    (B)            */
*     4 EWUXFRCK BIT(1),        /* TRANSFER CHECK     (G)            */
*      5 EWUWCG00 BIT(1),       /* NO ID FOR WCGM 00  (G)            */
*    3 EWUFCBP BIT(1),          /*FCB PARITY ERROR    (B)            */
*     4 EWUFUSCK BIT(1),        /* FUSER CHECK        (G)            */
*      5 EWUBDCPY BIT(1),       /* INVALID COPY MOD   (G)            */
*    3 EWUCFS BIT(1),           /* CFS CHECK   (G)                   */
*     4 EWUBDFOV BIT(1),        /* INVALID FORMS OVERLAY SEQ (G)     */
*    3 EWUPRCCK BIT(1),         /* PROCESS CHECK (G)                 */
*     4 EWUBDGRM BIT(1),        /* INVALID GRAPHIC MOD (G)           */
*    3 EWUWCPAR BIT(1),         /* WCGM DATA PARITY ERROR (G)        */
*    3 * BIT(1),                /* RESERVED  (G)                     */
*    3 EWULINOV BIT(1),         /* LINE OVER-RUN      (G)            */
*   2 EWUSN3 BIT(8),            /*4TH SENSE BYTE      (G)            */
*    3 EWUPRRDY BIT(1),         /* PRINTER READY      (G)            */
*    3 EWUPGEPT BIT(1),         /* PAGE BUFFER EMPTY  (G)            */
*    3 EWUBLKDC BIT(1),         /* BLOCK DATA CHECK   (G)            */
*    3 EWUTHRED BIT(1),         /* BURSTER SS THREADED (G)           */
*    3 EWUSYRST BIT(1),         /* SYSTEM RESTART REQ (G)            */
*    3 EWUPCADV BIT(1),         /* PC ADVANCE ENABLED (G)            */
*   2 EWUSN4 BIT(8),            /*5TH SENSE BYTE                     */
*   2 EWUSN5 BIT(8),            /*6TH SENSE BYTE                     */
*   2 EWUSN6 BIT(8),            /* 7TH SENSE BYTE                    */
*   2 EWUSN7 BIT(8),            /* 8TH SENSE BYTE                    */
*   2 EWUSN8 BIT(8),            /* 9TH SENSE BYTE                    */
*   2 EWUSN9 BIT(8),            /* 10TH SENSE BYTE                   */
*   2 EWUSN10 BIT(8),           /* 11TH SENSE BYTE                   */
*   2 EWUSN11 BIT(8),           /* 12TH SENSE BYTE                   */
*   2 EWUSN12 BIT(8),           /* 13TH SENSE BYTE                   */
*   2 EWUSN13 BIT(8),           /* 14TH SENSE BYTE                   */
*   2 EWUSN14 BIT(8),           /* 15TH SENSE BYTE                   */
*   2 EWUSN15 BIT(8),           /* 16TH SENSE BYTE                   */
*   2 EWUSN16 BIT(8),           /* 17TH SENSE BYTE                   */
*   2 EWUSN17 BIT(8),           /* 18TH SENSE BYTE                   */
*   2 EWUSN18 BIT(8),           /* 19TH SENSE BYTE                   */
*   2 EWUSN19 BIT(8),           /* 20TH SENSE BYTE                   */
*   2 EWUBKUP FIXED(15),        /* PAGE BACK UP CNT FOR PAPER JAM    */
*    3 EWUSN20 BIT(8),          /* 21TH SENSE BYTE                   */
*    3 EWUSN21 BIT(8),          /* 22ND SENSE BYTE                   */
*   2 EWUSN22 BIT(8),           /* 23RD SENSE BYTE                   */
*  %IF EWUSYS='VS1' %THEN %GO TO EWUC;
*   2 EWUSN23 BIT(8),           /* 24TH SENSE BYTE                   */
*   2 EWUWORK CHAR(104)BDY(DWORD);/*RESERVED FOR COMPILER TEMPS      */
*  %GO TO EWUG;
* %EWUC:;
*   2 EWUSN23 BIT(8);           /* 24TH SENSE BYTE                   */
* %EWUG:;
./ ADD NAME=FMTPTRN
         MACRO
&NAME    FMTPTRN &CODE,&LN1,&LN2,&OFFS1,&OFFS2,&LPTR,&DPTR,&LAST
         LCLA  &A,&B
&NAME    DS    0F                  TO ALIGN TO WORD BOUNDRY
         AIF   (N'&CODE EQ 1).CODE1
         AIF   (N'&CODE EQ 2).CODE2
         AIF   (N'&CODE EQ 3).CODE3
         AIF   (N'&CODE EQ 4).CODE4
         AIF   (N'&CODE EQ 5).CODE5
         DC    AL1(&CODE(1)+&CODE(2)+&CODE(3)+&CODE(4)+&CODE(5)+&CODE(6X
               ))                  CODE BYTE
         AGO   .LN
.CODE1   DC    AL1(&CODE(1))       CODE BYTE
         AGO   .LN
.CODE2   DC    AL1(&CODE(1)+&CODE(2)) CODE BYTE
         AGO   .LN
.CODE3   DC    AL1(&CODE(1)+&CODE(2)+&CODE(3)) CODE BYTE
         AGO   .LN
.CODE4   DC    AL1(&CODE(1)+&CODE(2)+&CODE(3)+&CODE(4)) CODE BYTE
         AGO   .LN
.CODE5   DC    AL1(&CODE(1)+&CODE(2)+&CODE(3)+&CODE(4)+&CODE(5))       X
                                   CODE BYTE
.LN      AIF   (T'&LN1 EQ 'O').NOLN1
         AIF   (&LN1 EQ 0).NOLN1
         AIF   (T'&LN2 EQ 'O').NOLN2
         AIF   (&LN2 EQ 0).NOLN2
         DC    AL1(&LN1*16+&LN2-17) LENGTHS FOR LABEL AND DATA
         AGO   .OFF
.NOLN1   AIF   (T'&LN2 EQ 'O').NOLN
         AIF   (&LN2 EQ 0).NOLN
         DC    AL1(&LN2-1)         LENGTH OF DATA
         AGO   .OFF
.NOLN2   DC    AL1(&LN1*16-16)     LENGTH OF LABEL
         AGO   .OFF
.NOLN    DC    AL1(0)              NO LABEL OR DATA LENGTHS
.OFF     AIF   (T'&OFFS1 EQ 'O').NOOFF1
         AIF   (T'&OFFS2 EQ 'O').NOOFF2
         DC    AL1(&OFFS1,&OFFS2)  LABEL AND DATA OFFSETS INTO LINE
         AGO   .PTRS
.NOOFF1  AIF   (T'&OFFS2 EQ 'O').NOOFFS
         DC    AL1(0,&OFFS2)       OFFSET FOR DATA INTO LINE
         AGO   .PTRS
.NOOFF2  DC    AL1(&OFFS1,0)       OFFSET OF LABEL INTO LINE
         AGO   .PTRS
.NOOFFS  DC    AL1(0,0)            NO LABEL OR DATA OFFSETS
.PTRS    AIF   (T'&LPTR EQ 'O').DPTR NO LABEL PTR IF OMMITED
         AIF   (N'&LPTR GT 1).LPTR2 FIRST VAL IS LABEL FOR PTR
         DC    A(&LPTR(1))         ADDR OF LABEL
         AGO   .DPTR
.LPTR2   ANOP
&LPTR(1) DC    A(&LPTR(2))         ADDR OF LABEL
.DPTR    AIF   (T'&DPTR EQ 'O').END NO DATA PTR IF OMITTED
         AIF   (N'&DPTR GT 1).DPTR2 FIRST VAL IS LABEL FOR PTR
         DC    A(&DPTR(1))         ADDR OF DATA
         AGO   .END
.DPTR2   ANOP
&DPTR(1) DC    A(&DPTR(2))         ADDR OF DATA
.END     AIF   (T'&LAST EQ 'O').ENDA
         AIF   ('&LAST' NE 'LAST').ENDA
         DC    AL1(0)              TO END PATTERN
.ENDA    MEND
./ ADD NAME=FREEJSCB
         MACRO
&MACNAME FREEJSCB &SYSTEM=AOS2
.*
.*       THIS MACRO SHOULD BE USED TO FREE CORE FOR A JSCB BECAUSE
.*       IT ALLOWS FOR A LENGTH CHANGE OF THE JSCB WITHOUT CAUSING
.*       ANY RECODING IN A MODULE.  THIS MACRO DOES NOT NEED TO BE
.*       UPDATED IF THE JSCB LENGTH CHANGES BECAUSE IT USES SYMBOLS
.*       FOR THE LENGTH OF THE JSCB AND FOR THE DISPLACEMENT OF THE
.*       FIRST BYTE.  THESE SYMBOLS ARE EQU'S PUT OUT BY THE IEZJSCB
.*       MACRO SO THE IEZJSCB MACRO MUST BE USED IN ANY MODULE
.*       WHICH ISSUES A FREEJSCB.
.*
.*   OS/VS1 RELEASE 3, OS/VS2 RELEASE 2, 07/23/73, LEVEL=1
.*
&MACNAME LA    15,JSCBDISP(0,0) LOAD DISPLACEMENT OF FIRST BYTE  YM1995
         AR    1,15 -         COMPUTE ADDRESS OF BYTES TO BE FREED
         AIF   ('&SYSTEM' EQ 'AOS1' OR '&SYSTEM' EQ 'MFT').FREAOS1
         FREEMAIN R,LV=JSCBAOS2,A=(1),SP=253
         MEXIT
.FREAOS1 ANOP
         FREEMAIN R,LV=JSCBAOS1,A=(1),SP=245
         MEND
./ ADD NAME=FREESRB
* %/*** START-OF-SPECIFICATIONS ***************************************
.*                                                                    *
.*01* MACRO-NAME = FREESRB                                            *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = FREE SRB                                     *
.*                                                                    *
.*01* COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1980,                 *
.*               LICENSED MATERIAL PROGRAM,                           *
.*               PROPERTY OF IBM,                                     *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = USED BY SUPERVISOR ROUTINES TO FREE AN SRB OBTAINED  *
.*               BY THE GETSRB MACRO.                                 *
.*                                                                    *
.*01* MODULE-TYPE = MACRO  (BILINGUAL)                                *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER/PLS COMPILER                              *
.*                                                                    *
.*02* MACRO-SIZE = 120 LOC                                            *
.*                                                                    *
.*01* MACROS = IHBERMAC                                               *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G381PXY - CROSS MEMORY SUPPORT               *
.*                                                                    *
.*** END-OF-SPECIFICATIONS ********************************************
.* A-000000-999999                                             @G381PXY
.*
         MACRO
&LABEL   FREESRB &SRB=(1),&REGS=
.*
*        MACDATE = 80.029
.*
.**********************************************************************
.*       DECLARE VARIABLES                                            *
.**********************************************************************
         LCLC  &OP1,&OP2               IHBERMAC OPERANDS
.*
.**********************************************************************
.*       POSITIONAL PARAMETERS ARE NOT ALLOWED                        *
.**********************************************************************
         AIF   (N'&SYSLIST NE 0 ).ERR1
.*
.**********************************************************************
.*       &REGS MUST BE SPECIFIED AS 'SAVE' OR 'USE'                   *
.**********************************************************************
         AIF   ('&REGS' EQ '').ERR2
         AIF   ('&REGS' EQ 'USE').GEN
         AIF   ('&REGS' NE 'SAVE').ERR3
.*
.**********************************************************************
.*       CODE EXPANSION FOR &LABEL                                    *
.**********************************************************************
.GEN     ANOP
         AIF   ('&LABEL' EQ '').SRB
&LABEL   DC    0H'0'
.*
.**********************************************************************
.*       CODE EXPANSION FOR &SRB OPERAND                              *
.**********************************************************************
.SRB     ANOP
         AIF   ('&SRB'(1,1) EQ '(').SRBREG
.*
.*       &SRB = RX-TYPE ADDRESS
         L     1,&SRB                  .LOAD SRB ADDRESS INTO REG 1
         AGO   .REGS
.*
.*       &SRB = (REGISTER)
.SRBREG  ANOP
         AIF   ('&SRB(1)' EQ '1').REGS
         LR    1,&SRB(1)               .LOAD SRB ADDRESS INTO REG 1
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND                             *
.**********************************************************************
.REGS    ANOP
         AIF   ('&REGS' EQ 'USE').LINK
.*
.*       &REGS = SAVE
         STM   2,5,0(13)               .SAVE USERS REGISTERS 2-5
         STM   11,12,16(13)            .SAVE USERS REGISTERS 11-12
         LR    5,13                    .SAVE ADDRESS OF SAVE AREA
.*
.**********************************************************************
.*       GENERATE LINKAGE TO FREESRB SERVICE ROUTINE                  *
.**********************************************************************
.LINK    ANOP
         L     15,PSASVT-PSA(0,0)      .SVT ADDRESS
         L     15,SVTSRBF-SVT(0,15)    .FREESRB ENTRY ADDRESS
         BALR  14,15                   .CALL FREESRB
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND - AFTER FREESRB CALL        *
.**********************************************************************
         AIF   ('&REGS' EQ 'USE').EXIT
.*
.*       &REGS = SAVE
         LR    13,5                    .RESTORE SAVE AREA ADDRESS
         LM    2,5,0(13)               .RESTORE USERS REGISTERS 2-5
         LM    11,12,16(13)            .RESTORE USERS REGISTERS 11-12
.EXIT    ANOP
         MEXIT
.*
.**********************************************************************
.*       MACRO INVOCATION ERRORS                                      *
.**********************************************************************
.*
.*       INVALID POSITIONAL PARAMETER SPECIFIED
.ERR1    ANOP
&OP1     SETC   'POSITIONAL'
         IHBERMAC 1014,&OP1
         MEXIT
.*
.*       REGS OPERAND REQUIRED, NOT SPECIFIED
.ERR2    ANOP
&OP1     SETC   'REGS'
         IHBERMAC 1006,&OP1
         MEXIT
.*
.*       INVALID &REGS PARAMETER SUPPLIED
.ERR3    ANOP
&OP1     SETC   'REGS'
&OP2     SETC   '&REGS'
         IHBERMAC 1001,&OP1,&OP2
         MEND
* */
* FREESRB: MACRO KEYS(SRB,REGS);
*
*        /* VARIABLE DECLARES */
*
*        DCL EHAREGS CHAR EXT;         /*REGS DCLD BY EPILOG*/
*        DCL EHAMAPS CHAR EXT;         /*REG SAVE AREA DCLD BY EPILOG*/
*        DCL RC FIXED;                 /*MACRO GEN SEVERITY CODE*/
*        DCL CMT CHAR;                 /*DO-END COMMENT*/
*
*        /* GENERATE MACRO INVOCATION */
*
*        IF MACLABEL^='' THEN          /*LABEL ON MACRO CALL?*/
*          ANS(MACLABEL) COL(MACLMAR); /*YES: GEN LABEL*/
*        CMT='?'MACLABEL' 'MACNAME' 'MACLISTMACKEYS
*        ' MACDATE(78.290)';
*        ANS ('DO; 'COMMENT(CMT)) SKIP COL(MACCOL);
*
*        /* INITIALIZE MACRO RETURN CODE */
*
*        RC=12;                        /*MACRO ERROR UNTIL CHANGED*/
*
*        /* POSITIONAL PARAMETERS ARE NOT ALLOWED */
*
*        IF NUMBER(MACLIST)^=0 THEN    /*ANY POSITIONAL PARAMETERS?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0023  ''MACLIST'' IS INVALID WITH FREESRB.'
*            ' NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  ''MACLIST'' IS INVALID WITH FREESRB.'
*            ' NO TEXT IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* ONLY ONE SRB VALUE MAY BE SPECIFIED */
*
*        IF NUMBER(SRB)>1 THEN         /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  SRB'SRB' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');          /*MSOURCE MSG*/
*            ANS ('/*AHA0033  SRB'SRB' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* REGS PARAMETER MUST BE SPECIFIED AS 'SAVE' OR 'USE' */
*
*        IF REGS='' THEN               /*REGS SUPPLIED?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*YES: CONTINUE*/
*
*        IF NUMBER(REGS)>1 THEN        /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');          /*MSOURCE MSG*/
*            ANS ('/*AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        IF REGS(1)='SAVE' THEN        /*REGS VALID?*/
*          GOTO LHA01000;              /*YES: CONTINUE*/
*
*        IF REGS(1)^='USE' THEN        /*REGS VALID?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* GENERATE LINKAGE CODE */
*
* LHA01000: ;
*
*        RC=0;                         /*NO MACRO ERROR FOUND*/
*
*        IF REGS(1)='SAVE' THEN        /*SAVE USERS REGS?*/
*          DO;                         /*YES: GEN SAVE*/
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) RSTD; '
*            '/*RESTRICT REGS USED BY FREESRB*/') SKIP COL(MACCOL+2);
*            IF SRB^='' THEN           /*SRB SUPPLIED?*/
*              ANS ('GPR01F='SRB(1)'; /*LOAD SRB ADDRESS '
*              'INTO REG 1*/') SKIP COL(MACCOL+2); /*YES: GEN R1 LOAD*/
*            ANS('STM(GPR02F,GPR05F,GPR13P->SA@); /*SAVE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('STM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*SAVE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('GPR05F=GPR13P; /*SAVE ADDRESS OF SAVE AREA*/')
*            SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          DO;                         /*YES: GEN REGS(USE) CODE*/
*            ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*            'GPR12F,GPR13P) RSTD; /*RESTRICT REGS USED BY FREESRB*/')
*            SKIP COL(MACCOL+2);
*            IF SRB^='' THEN               /*SRB SUPPLIED?*/
*              ANS ('GPR01F='SRB(1)'; /*LOAD SRB ADDRESS '
*              'INTO REG 1*/') SKIP COL(MACCOL+2); /*YES: GEN R1 LOAD*/
*          END;
*
*        ANS('CALL IEAVSPM3; /*CALL FREESRB EP*/') SKIP COL(MACCOL+2);
*
*        IF REGS(1)='SAVE' THEN        /*RESTORE USERS REGS?*/
*          DO;                         /*YES: GEN RESTORE*/
*            ANS('GPR13P=GPR05F; /*RESTORE SAVE AREA ADDRESS*/')
*            SKIP COL(MACCOL+2);
*            ANS('LM(GPR02F,GPR05F,GPR13P->SA@); /*RESTORE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('LM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*RESTORE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) UNRSTD; '
*            '/*UNRESTRICT REGS*/') SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*          'GPR12F,GPR13P) UNRSTD; /*UNRESTRICT REGS*/')
*          SKIP COL(MACCOL+2);
*
*        /* REQUEST GLOBAL VARIABLE DECLARES FROM EPILOG */
*
*        IF INDEX(EHAREGS,'00F')=0 THEN /*DCL FOR R0 REQUESTED?*/
*          EHAREGS=EHAREGS'00F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'01F')=0 THEN /*DCL FOR R1 REQUESTED?*/
*          EHAREGS=EHAREGS'01F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'02F')=0 THEN /*DCL FOR R2 REQUESTED?*/
*          EHAREGS=EHAREGS'02F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'11F')=0 THEN /*DCL FOR R11 REQUESTED?*/
*          EHAREGS=EHAREGS'11F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'12F')=0 THEN /*DCL FOR R12 REQUESTED?*/
*          EHAREGS=EHAREGS'12F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'13P')=0 THEN /*DCL FOR R13 REQUESTED?*/
*          EHAREGS=EHAREGS'13P';     /* NO: REQUEST IT*/
*
*        IF REGS(1)='USE' THEN         /*REGS(USE)?*/
*          DO;                         /*YES: DCL REGS USED*/
*            IF INDEX(EHAREGS,'03F')=0 THEN /*DCL FOR R3 REQUESTED?*/
*              EHAREGS=EHAREGS'03F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAREGS,'04F')=0 THEN /*DCL FOR R4 REQUESTED?*/
*              EHAREGS=EHAREGS'04F'; /* NO: REQUEST IT*/
*          END;
*        ELSE                          /*REGS(SAVE)*/
*          DO;                         /*DCL REG AND SAVEAREA*/
*            IF INDEX(EHAREGS,'05F')=0 THEN /*DCL FOR R5 REQUESTED?*/
*              EHAREGS=EHAREGS'05F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAMAPS,'SA@')=0 THEN /*SAVEAREA DCL REQUESTED?*/
*              EHAMAPS=EHAMAPS'SA@,'; /* NO: REQUEST IT*/
*          END;
*
*LHA03000: ;
*
*        ANS ('END; 'COMMENT(CMT)) SKIP COL(MACCOL);
*        RETURN CODE(RC);              /*MACRO END*/
*%       END FREESRB;
./ ADD NAME=FREESSRB
* %/*** START-OF-SPECIFICATIONS ***************************************
.*                                                                    *
.*01* MACRO-NAME = FREESSRB                                           *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = FREE SSRB                                    *
.*                                                                    *
.*01* COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1980,                 *
.*               LICENSED MATERIAL PROGRAM,                           *
.*               PROPERTY OF IBM,                                     *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = USED BY SUPERVISOR ROUTINES TO FREE AN SSRB OBTAINED *
.*               BY THE GETSSRB MACRO.                                *
.*                                                                    *
.*01* MODULE-TYPE = MACRO  (BILINGUAL)                                *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER/PLS COMPILER                              *
.*                                                                    *
.*02* MACRO-SIZE = 120 LOC                                            *
.*                                                                    *
.*01* MACROS = IHBERMAC                                               *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G381PXY - CROSS MEMORY SUPPORT               *
.*                                                                    *
.*** END-OF-SPECIFICATIONS ********************************************
.* A-000000-999999                                             @G381PXY
.*
         MACRO
&LABEL   FREESSRB &SSRB=(1),&REGS=
.*
*        MACDATE = 80.029
.*
.**********************************************************************
.*       DECLARE VARIABLES                                            *
.**********************************************************************
         LCLC  &OP1,&OP2               IHBERMAC OPERANDS
.*
.**********************************************************************
.*       POSITIONAL PARAMETERS ARE NOT ALLOWED                        *
.**********************************************************************
         AIF   (N'&SYSLIST NE 0 ).ERR1
.*
.**********************************************************************
.*       &REGS MUST BE SPECIFIED AS 'SAVE' OR 'USE'                   *
.**********************************************************************
         AIF   ('&REGS' EQ '').ERR2
         AIF   ('&REGS' EQ 'USE').GEN
         AIF   ('&REGS' NE 'SAVE').ERR3
.*
.**********************************************************************
.*       CODE EXPANSION FOR &LABEL                                    *
.**********************************************************************
.GEN     ANOP
         AIF   ('&LABEL' EQ '').SSRB
&LABEL   DC    0H'0'
.*
.**********************************************************************
.*       CODE EXPANSION FOR &SSRB OPERAND                             *
.**********************************************************************
.SSRB    ANOP
         AIF   ('&SSRB'(1,1) EQ '(').SSRBREG
.*
.*       &SSRB = RX-TYPE ADDRESS
         L     1,&SSRB                 .LOAD SSRB ADDRESS INTO REG 1
         AGO   .REGS
.*
.*       &SSRB = (REGISTER)
.SSRBREG ANOP
         AIF   ('&SSRB(1)' EQ '1').REGS
         LR    1,&SSRB(1)              .LOAD SSRB ADDRESS INTO REG 1
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND                             *
.**********************************************************************
.REGS    ANOP
         AIF   ('&REGS' EQ 'USE').LINK
.*
.*       &REGS = SAVE
         STM   2,5,0(13)               .SAVE USERS REGISTERS 2-5
         STM   11,12,16(13)            .SAVE USERS REGISTERS 11-12
         LR    5,13                    .SAVE ADDRESS OF SAVE AREA
.*
.**********************************************************************
.*       GENERATE LINKAGE TO FREESSRB SERVICE ROUTINE                 *
.**********************************************************************
.LINK    ANOP
         L     15,PSASVT-PSA(0,0)      .SVT ADDRESS
         L     15,SVTSSRBF-SVT(0,15)   .FREESSRB ENTRY ADDRESS
         BALR  14,15                   .CALL FREESSRB
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND - AFTER FREESSRB CALL       *
.**********************************************************************
         AIF   ('&REGS' EQ 'USE').EXIT
.*
.*       &REGS = SAVE
         LR    13,5                    .RESTORE SAVE AREA ADDRESS
         LM    2,5,0(13)               .RESTORE USERS REGISTERS 2-5
         LM    11,12,16(13)            .RESTORE USERS REGISTERS 11-12
.EXIT    ANOP
         MEXIT
.*
.**********************************************************************
.*       MACRO INVOCATION ERRORS                                      *
.**********************************************************************
.*
.*       INVALID POSITIONAL PARAMETER SPECIFIED
.ERR1    ANOP
&OP1     SETC   'POSITIONAL'
         IHBERMAC 1014,&OP1
         MEXIT
.*
.*       REGS OPERAND REQUIRED, NOT SPECIFIED
.ERR2    ANOP
&OP1     SETC   'REGS'
         IHBERMAC 1006,&OP1
         MEXIT
.*
.*       INVALID &REGS PARAMETER SUPPLIED
.ERR3    ANOP
&OP1     SETC   'REGS'
&OP2     SETC   '&REGS'
         IHBERMAC 1001,&OP1,&OP2
         MEND
* */
* FREESSRB: MACRO KEYS(SSRB,REGS);
*
*        /* VARIABLE DECLARES */
*
*        DCL EHAREGS CHAR EXT;         /*REGS DCLD BY EPILOG*/
*        DCL EHAMAPS CHAR EXT;         /*REG SAVE AREA DCLD BY EPILOG*/
*        DCL RC FIXED;                 /*MACRO GEN SEVERITY CODE*/
*        DCL CMT CHAR;                 /*DO-END COMMENT*/
*
*        /* GENERATE MACRO INVOCATION */
*
*        IF MACLABEL^='' THEN          /*LABEL ON MACRO CALL?*/
*          ANS(MACLABEL) COL(MACLMAR); /*YES: GEN LABEL*/
*        CMT='?'MACLABEL' 'MACNAME' 'MACLISTMACKEYS
*        ' MACDATE(78.290)';
*        ANS ('DO; 'COMMENT(CMT)) SKIP COL(MACCOL);
*
*        /* INITIALIZE MACRO RETURN CODE */
*
*        RC=12;                        /*MACRO ERROR UNTIL CHANGED*/
*
*        /* POSITIONAL PARAMETERS ARE NOT ALLOWED */
*
*        IF NUMBER(MACLIST)^=0 THEN    /*ANY POSITIONAL PARAMETERS?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0023  ''MACLIST'' IS INVALID WITH FREESSRB.'
*            ' NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  ''MACLIST'' IS INVALID WITH FREESSRB.'
*            ' NO TEXT IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* ONLY ONE SSRB VALUE MAY BE SPECIFIED */
*
*        IF NUMBER(SSRB)>1 THEN        /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  SSRB'SSRB' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');          /*MSOURCE MSG*/
*            ANS ('/*AHA0033  SSRB'SSRB' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* REGS PARAMETER MUST BE SPECIFIED AS 'SAVE' OR 'USE' */
*
*        IF REGS='' THEN               /*REGS SUPPLIED?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*YES: CONTINUE*/
*
*        IF NUMBER(REGS)>1 THEN        /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');          /*MSOURCE MSG*/
*            ANS ('/*AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        IF REGS(1)='SAVE' THEN        /*REGS VALID?*/
*          GOTO LHA01000;              /*YES: CONTINUE*/
*
*        IF REGS(1)^='USE' THEN        /*REGS VALID?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* GENERATE LINKAGE CODE */
*
* LHA01000: ;
*
*        RC=0;                         /*NO MACRO ERROR FOUND*/
*
*        IF REGS(1)='SAVE' THEN        /*SAVE USERS REGS?*/
*          DO;                         /*YES: GEN SAVE*/
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) RSTD; '
*            '/*RESTRICT REGS USED BY FREESSRB*/') SKIP COL(MACCOL+2);
*            IF SSRB^='' THEN          /*SSRB SUPPLIED?*/
*              ANS ('GPR01F='SSRB(1)'; /*LOAD SSRB ADDRESS INTO '
*              'REG 1*/') SKIP COL(MACCOL+2); /*YES: GEN R1 LOAD*/
*            ANS('STM(GPR02F,GPR05F,GPR13P->SA@); /*SAVE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('STM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*SAVE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('GPR05F=GPR13P; /*SAVE ADDRESS OF SAVE AREA*/')
*            SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          DO;                         /*GEN REGS(USE) CODE*/
*            ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*            'GPR12F,GPR13P) RSTD; /*RESTRICT REGS USED BY FREESSRB*/')
*            SKIP COL(MACCOL+2);
*            IF SSRB^='' THEN          /*SSRB SUPPLIED?*/
*              ANS ('GPR01F='SSRB(1)'; /*LOAD SSRB ADDRESS INTO '
*              'REG 1*/') SKIP COL(MACCOL+2); /*YES: GEN R1 LOAD*/
*          END;
*
*        ANS('CALL IEAVSPM4; /*CALL FREESSRB EP*/') SKIP COL(MACCOL+2);
*
*        IF REGS(1)='SAVE' THEN        /*RESTORE USERS REGS?*/
*          DO;                         /*YES: GEN RESTORE*/
*            ANS('GPR13P=GPR05F; /*RESTORE SAVE AREA ADDRESS*/')
*            SKIP COL(MACCOL+2);
*            ANS('LM(GPR02F,GPR05F,GPR13P->SA@); /*RESTORE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('LM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*RESTORE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) UNRSTD; '
*            '/*UNRESTRICT REGS*/') SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*          'GPR12F,GPR13P) UNRSTD; /*UNRESTRICT REGS*/')
*          SKIP COL(MACCOL+2);
*
*        /* REQUEST GLOBAL VARIABLE DECLARES FROM EPILOG */
*
*        IF INDEX(EHAREGS,'00F')=0 THEN /*DCL FOR R0 REQUESTED?*/
*          EHAREGS=EHAREGS'00F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'01F')=0 THEN /*DCL FOR R1 REQUESTED?*/
*          EHAREGS=EHAREGS'01F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'02F')=0 THEN /*DCL FOR R2 REQUESTED?*/
*          EHAREGS=EHAREGS'02F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'11F')=0 THEN /*DCL FOR R11 REQUESTED?*/
*          EHAREGS=EHAREGS'11F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'12F')=0 THEN /*DCL FOR R12 REQUESTED?*/
*          EHAREGS=EHAREGS'12F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'13P')=0 THEN /*DCL FOR R13 REQUESTED?*/
*          EHAREGS=EHAREGS'13P';     /* NO: REQUEST IT*/
*
*        IF REGS(1)='USE' THEN         /*REGS(USE)?*/
*          DO;                         /*YES: DCL REGS USED*/
*            IF INDEX(EHAREGS,'03F')=0 THEN /*DCL FOR R3 REQUESTED?*/
*              EHAREGS=EHAREGS'03F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAREGS,'04F')=0 THEN /*DCL FOR R4 REQUESTED?*/
*              EHAREGS=EHAREGS'04F'; /* NO: REQUEST IT*/
*          END;
*        ELSE                          /*REGS(SAVE)*/
*          DO;                         /*DCL REG AND SAVEAREA*/
*            IF INDEX(EHAREGS,'05F')=0 THEN /*DCL FOR R5 REQUESTED?*/
*              EHAREGS=EHAREGS'05F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAMAPS,'SA@')=0 THEN /*SAVEAREA DCL REQUESTED?*/
*              EHAMAPS=EHAMAPS'SA@,'; /* NO: REQUEST IT*/
*          END;
*
*LHA03000: ;
*
*        ANS ('END; 'COMMENT(CMT)) SKIP COL(MACCOL);
*        RETURN CODE(RC);              /*MACRO END*/
*%       END FREESSRB;
./ ADD NAME=FRRSCOPY
         MACRO
&NAME    FRRSCOPY  &OPT,&STACK,&OPT2                          @G385PPY
*    MACDATE    79.052
.* -000000-999999                                             @G382PPY
.*
.**********************************************************************
.*                                                                    *
.*    COPYRIGHT =                                                     *
.*        5740-XYN COPYRIGHT IBM CORP. 1980                           *
.*        LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                 *
.*        REFER TO COPYRIGHT INSTRUCTIONS FORM                        *
.*        NUMBER G120-2083.                                           *
.*                                                                    *
.*     THE FRRSCOPY MACRO EXPANSION GENERATES CODE WHICH              *
.*     EITHER SAVES AN FRR STACK OR RESTORE AN FRR STACK              *
.*                                                                    *
.*                                                                    *
.* CHANGE-ACTIVITY                                                    *
.*         MVS/SYSTEM PRODUCT RELEASE 2                               *
.*                                                                    *
.**********************************************************************
.******* VERIFY VALID OPTION SPECIFIED. EITHER SAVE OR RESTORE
         AIF   ('&OPT' EQ '').FRR0005  DEFAULT OPT TO BE USED  @G385PPY
         AIF ('&OPT' EQ 'SAVE' OR '&OPT' EQ 'RESTORE').FRR0005 @G385PPY
         MNOTE 8,'INVALID OPTION &OPT SPECIFIED'
         MEXIT
.******* VERIFY VALID OPTION SPECIFIED. EITHER DELETE OR PLUS1 @G385PPY
.FRR0005 ANOP                                                  @G385PPY
         AIF   ('&OPT2' EQ '').FRR0010 DEFAULT OPT2 TO BE USED @G385PPY
         AIF   ('&OPT2' EQ 'DELETE' OR '&OPT2' EQ 'PLUS1').FRR0010     *
                                                               @G385PPY
         MNOTE 8,'INVALID OPTION &OPT2 SPECIFIED'              @G385PPY
         MEXIT                                                 @G385PPY
.******* VERIFY STACK SAVE AREA SPECIFIED
.FRR0010 ANOP
         AIF   ('&STACK' NE '').FRR0014
         MNOTE 8,'SAVE AREA ADDRESS MUST BE SUPPLIED'
         MEXIT
.******* PRODUCE CODE FOR MACRO
.FRR0014 ANOP
         AIF   ('&NAME' EQ '').FRR0015
&NAME    DS    0H
.FRR0015 ANOP
.******* PROCESS STACK PARMETER
         AIF   ('&STACK'(1,1) NE '(').FRR0024 REGISTER SPECIFIED ?
         AIF   ('&STACK(1)' EQ '0').FRR0040   SKIP CODE IF REG 0
         LR    0,&STACK(1) -           GET STACK ADDRESS
         AGO   .FRR0040
.FRR0024 ANOP
         LA    0,&STACK -              GET STACK ADDRESS
.******* PROCESS RESTORE OPTION
.FRR0040 ANOP
         AIF   ('&OPT' EQ '' OR '&OPT' EQ 'SAVE').FRR0042
         LR    14,0                MOVE SOURCE ADDRESS
         L     15,0(,14)           GET LENGTH TO RESTORE
         LA    0,4                 BUMP SOURCE ADDRESS
         ALR   14,0                PASSED LENGTH WORD
         LA    0,12                GET LENGTH OF FRR STACK HEADER      *
                                   WHICH IS CONSTANT AND DOES NOT HAVE *
                                   TO BE RESTORED
         AL    0,PSANSTK-PSA(0,0)  GET ADDRESS NORMAL STACK
         LR    1,15                SECOND LENGTH FOR MVCL
         MVCL  0,14                RESTORE STACK
         MEXIT                                                 @G385PPY
.******* PROCESS SAVE,DELETE OPTIONS                           @G385PPY
.FRR0042 ANOP
         AIF   ('&OPT2' EQ '' OR '&OPT2' EQ 'PLUS1').FRR0050   @G385PPY
         L     14,PSANSTK-PSA(0,0) GET ADDRESS NORMAL STACK    @G385PPY
         L     1,12(0,14)          ADDRESS OF CURRENT ENTRY    @G385PPY
         C     1,0(0,14)           IS STACK EMPTY ?            @G385PPY
         BE    IHB0&SYSNDX         BRANCH EMPTY                @G385PPY
         SL    1,8(0,14)           DELETE ENTRY FROM STACK     @G385PPY
IHB0&SYSNDX DS    0H                                           @G385PPY
         LR    15,0                COPY TARGET ADDRESS         @G385PPY
         ST    1,4(15)             SAVE UPDATED CURRENT ADDR   @G385PPY
         AL    1,8(0,14)           BUMP TO NEXT ENTRY          @G385PPY
         LA    15,12               GET LENGTH OF FRR STACK HEADER      *
                                   WHICH IS CONSTANT AND DOES NOT HAVE *
                                   TO BE SAVED (RESTORED)      @G385PPY
         ALR   14,15               BUMP PASSED CONSTANT AREA   @G385PPY
         SLR   1,14                GET LENGTH TO COPY          @G385PPY
         LR    15,0                COPY TARGET ADDRESS         @G385PPY
         ST    1,0(,15)            SAVE LENGTH OF COPIED STACK IN      *
                                   FIRST WORD OF TARGET AREA   @G385PPY
         LA    15,4                GET LENGTH TO SAVE MINUS CURRENT    *
                                   ENTRY ADDRESS FIELD WHICH HAS       *
                                   ALREADY BEEN SAVED          @G385PPY
         SR    1,15                                            @G385PPY
         ALR   0,15                BUMP PASSED LENGTH WORD AND CURRENT *
                                   ENTRY ADDRESS FIELD         @G385PPY
         ALR   0,15                                            @G385PPY
         ALR   14,15               BUMP STACK ADDRESS PASSED CURRENT   *
                                   ENTRY ADDRESS FIELD AS IT HAS       *
                                   ALREADY BEEN SAVED          @G385PPY
         LR    15,1                SECOND LENGTH FOR MVCL      @G385PPY
         MVCL  0,14                SAVE STACK                  @G385PPY
         MEXIT                                                 @G385PPY
.******* PROCESS SAVE,PLUS1 OPTIONS                            @G385PPY
.FRR0050 ANOP                                                  @G385PPY
         L     14,PSANSTK-PSA(0,0) GET ADDRESS NORMAL STACK
         L     1,12(0,14)          ADDRESS OF CURRENT ENTRY
         AL    1,8(0,14)           BUMP ADDRESS TO NEXT ENTRY
         C     1,4(0,14)           ANY MORE ENTRIES ON STACK ?
         BH    IHB0&SYSNDX         BRANCH NO MORE ENTRIES
         AL    1,8(0,14)           ADJUST FOR RACE CONDITION
IHB0&SYSNDX DS    0H
         LA    15,12               GET LENGTH OF FRR STACK HEADER      *
                                   WHICH IS CONSTANT AND DOES NOT HAVE *
                                   TO BE SAVED
         ALR   14,15               BUMP PASSED CONSTANT AREA
         SLR   1,14                GET LENGTH TO COPY
         LR    15,0                COPY TARGET ADDRESS
         ST    1,0(,15)            SAVE LENGTH OF COPIED STACK IN      *
                                   FIRST WORD OF TARGET AREA
         LA    15,4                BUMP PASSED LENGTH WORD
         ALR   0,15
         LR    15,1                SECOND LENGTH FOR MVCL
         MVCL  0,14                SAVE STACK
         MEXIT                                                 @G385PPY
         MEND
./ ADD NAME=FSPACE
             MACRO
&NAME        FSPACE &R,&LV=,&A=
.*****************************************************************
.*
.* MACRO NAME - FSPACE
.*
.* DESCRIPTIVE NAME -FREE SPACE MACRO (THIS IS FREEMAIN LIKE)
.*
.* COPYRIGHT - N/A
.*
.* STATUS - OS/VS2 REL. 2.0
.*
.* FUNCTION -
.*
.*   THE FUNCTION OF THIS MACRO IS TO SETUP THE INPUT REGS TO THE
.*   FSPACE SERVICE ROUTINE LOCATED IN MODULE IEFAB4F6.
.*
.*   OPERATION -
.*
.*      THIS MACRO REQUIRES - FSPACE R,LV=(0)
.*      1) IF INVALID PARAMETERS PRINT MNOTE.
.*      2) INSERT CODE
.*      3) EXIT
.*
.* NOTES -
.*   DEPENDENCIES -
.*      THIS MACRO IS CALLED BY USING THE PL/S STACK OPTION.
.*      THEREFORE CHANGES TO PL/S MAY IMPACT THIS MACRO
.*      THE ONLY REGISTERS THE MACRO MAY ALTER ARE 0,1,14,15.
.*
.*   RESTRICTIONS
.*      NONE.
.*   REGISTER CONVENTIONS -
.*      MAY ONLY USE 14 THRU 1
.*
.*   PATCH LABEL - N/A
.*
.* MODULE TYPE - MACRO
.*
.*   PROCESSER - ASSEM
.*   MODULE SIZE - N/A
.*   ATTRIBUTES - EXECUTABLE MACRO
.*
.* ENTRY POINT - N/A
.*
.* EXIT -
.*   R0- UNPREDICTABLE
.*   R1- UNPREDICTABLE
.*   R2-R13 NOT CHANGED
.*   R14 - UNPREDICTABLE
.*   R15 - UNPREDICTABLE
.*
.* EXTERNAL REFERENCES - NONE
.*
.* TABLES - NONE
.* MACROS - NONE
.*
.* CHANGE ACTIVITY - Y02670
.*
.* MESSAGES - SEE MNOTE IN MACRO CODE.
.*
.* ABEND CODES - NONE
.*
.*****************************************************************
             AIF ('&R' EQ 'R' AND '&LV' EQ '(0)' AND '&A' EQ '(1)').OK
             MNOTE 4,'FSPACE PARAMETERS INVALID'
.OK          ANOP
&NAME        L     15,GS&SYSNDX.C      SET FSPACE EP IN REG 15
             CNOP  2,4                 *
GS&SYSNDX.L  BALR  14,15               CALL FSPACE
             B     GS&SYSNDX.E         +0 RETURN IS NORMAL RETURN
             B     GS&SYSNDX.D         +4 RETURN REQUIRES FREEMAIN
GS&SYSNDX.C  DC    V(FSPACE)           FSPACE ENTRY POINT
GS&SYSNDX.D  SVC   10                  FREEMAIN
GS&SYSNDX.E  EQU   *                   *
             MEND
./ ADD NAME=FTREE
         MACRO
&TAG     FTREE &TREE,&TYPE=8
         GBLC  &IGAFTRE
.*A000000                                                        Y02147
.**********************************************************************
      RPTDSECT TYPE=&TYPE
         AIF   (K'&TREE EQ K'&TREE(1)+2).LW0
&TAG     L     1,&TREE
         AGO   .LW1
.LW0     AIF   ('&TREE' EQ '(1)').IFBR
&TAG     LR    1,&TREE(1)
         AGO   .LW1
.IFBR    AIF   (K'&TAG EQ 0).LW1
&TAG     EQU   *
.LW1     ANOP
         L     15,0(0,1)  BASE ADDRESS OF PROGRAM IGARPT01.
         AIF   ('&TYPE' NE '5').NOT5
SRCH&SYSNDX SRCH (1),TYPE=5,SARG=((0))
         LTR   15,15
         BC    4,OVER&SYSNDX
         DEL   (1),TYPE=5,FREE=NO
         BC    15,SRCH&SYSNDX
OVER&SYSNDX    EQU       *
         USING IGARPTH5,1
         L     2,IGAHVFC5
         IC    0,IGASP5
         SLL   0,24
         AL    0,=AL4(IGATYP5S)
     FREEMAIN R,LV=(0),A=(1)
         N     0,=XL4'FF000000'
         AL    0,=F'8'
FREE&SYSNDX LTR 1,2
         BC    8,DONE&SYSNDX
         L     2,0(2)
     FREEMAIN R,LV=(0),A=(1)
         BC    15,FREE&SYSNDX
DONE&SYSNDX EQU *
         DROP 1
         MEXIT
.NOT5    ANOP
         AIF   ('&IGAFTRE' EQ '0').BALR
         BAL   14,&IGAFTRE.(0,15)  LINK TO FREE TREE IN IGARPT01.
         AGO   .NOTBALR
.BALR    BALR  14,15     LINK TO FREE TREE IN IGARPT01.
.NOTBALR ANOP
         MEND
./ ADD NAME=GDSCB
         EJECT
GDSCB    DSECT
GDSNXGDS DS    F                   ADDRESS OF THE NEXT GDS ON
*                                  THE CHAIN
GDSGTMCB DS    F                   ADDRESS OF THE GTMCB
GDSVALID DS    X                   BYTE TO SAY THIS IS A CONTROL BLK
*              X'F2'               SETTING
GDSGDSID DS    X                   BYTE ID TO SAY THIS IS A GDSCB
*              X'03'               SETTING
GDSFLAGS DS    X                   ASSORTED FLAGS
*              X'80'               1=EQUIV IN BUFFER / 0=NOT
*              X'40'               1=CORVAL AT BGSEQ-SUB/0=NO
*              X'20'               1=CURSOR PRES / 0=CURSOR ABSENT
*              X'10'               1=LEVEL 2 GSP / 0=LEVEL 1 GSP
*              X'08'               1=GDS EQUIV / 0=GDS NOT EQUIV
*              X'04'               1=SEQUENCE BEGUN / 0=NO SEQ
*              X'02'               1=SUBROUTINE BEGUN / 0=NO SUBR
*              X'01'               1=PEN MODE PERMIT INT / 0=DISABLE
GDSFLGS2 DS    X                   MORE FLAGS
*              X'01'               0=SDATL NOT CALLED/1=SDATL CALLED
GDSAOACB DS    F                   ADDRESS OF THE OACB
GDSGDSCB DS    F                   ADDRESS OF THIS GDSCB
GDSKEYTB DS    F                   ADDRESS OF THE KEY TABLE
GDSXLAST DS    F                   VALUE IN RASTER UNITS OF X COORD
*                                  OF LAST CALL TO DATA GEN RTN
GDSYLAST DS    F                   VALUE IN RASTER UNITS OF Y COORD
*                                  OF LAST CALL TO DATA GEN RTN
GDSXCURR DS    H                   POSITION OF BEAM IN RASTER UNITS
*                                  IN THE X DIRECTION
GDSYCURR DS    H                   POSITION OF BEAM IN RASTER UNITS
*                                  IN THE Y DIRECTION
GDSUVLLL DS    F                   VALUE OF LL X COORD OF GRID
*                                  IN USER UNITS REAL OR INTEGER
GDSVVLLL DS    F                   VALUE OF LL Y COORD OF GRID
*                                  IN USER UNITS REAL OR INTEGER
GDSUVLUR DS    F                   VALUE OF UR X COORD OF GRID
*                                  IN USER UNITS REAL OR INTEGER
GDSVVLUR DS    F                   VALUE OF UR Y COORD OF GRID
*                                  IN USER UNITS REAL OR INTEGER
GDSXVILL DS    F                   VALUE OF LL X COORD OF GRID
*                                  IN RASTER UNITS INTEGER
GDSYVILL DS    F                   VALUE OF LL Y COORD OF GRID
*                                  IN RASTER UNITS INTEGER
GDSXVIUR DS    F                   VALUE OF UR X COORD OF GRID
*                                  IN RASTER UNITS INTEGER
GDSYVIUR DS    F                   VALUE OF UR Y COORD OF GRID
*                                  IN RASTER UNITS INTEGER
GDSXVRLL DS    F                   VALUE OF LL X COORD OF GRID
*                                  IN RASTER UNITS REAL
GDSYVRLL DS    F                   VALUE OF LL Y COORD OF GRID
*                                  IN RASTER UNITS REAL
GDSXVRUR DS    F                   VALUE OF UR X COORD OF GRID
*                                  IN RASTER UNITS REAL
GDSYVRUR DS    F                   VALUE OF UR Y COORD OF GRID
*                                  IN RASTER UNITS REAL
         EJECT
GDSCHARS DS    X                   CHARACTER OPTION FLAGS
*              X'08'               BASIC PROTECTED
*              X'04'               LARGE PROTECTED
*              X'02'               BASIC UNPROTECTED
*              X'01'               LARGE UNPROTECTED
GDSSCISS DS    X                   SCISSOR OPTION FLAGS
*              X'10'               NO SCISSORING
*              X'08'               SCISSOR AT SCREEN
*              X'04'               SCISSOR AT GRID
*              X'02'               CONTINUE GENERATION
*              X'01'               STOP GENERATION
GDSCURMD DS    X                   OUTPUT DATA MODE
*              X'04'               OPTIMIZED
*              X'02'               ABSOLUTE
*              X'01'               INCREMENTAL
GDSDATMD DS    X                   INPUT DATA MODE
*              X'80'               U IS REAL, ABSOLUTE
*              X'40'               U IS REAL, INCREMENTAL
*              X'20'               U IS INTEGER, ABSOLUTE
*              X'10'               U IS INTEGER, INCREMENTAL
*              X'08'               V IS REAL, ABSOLUTE
*              X'04'               V IS REAL, INCREMENTAL
*              X'02'               V IS INTEGER, ABSOLUTE
*              X'01'               V IS INTEGER, INCREMENTAL
GDSOVDAT DS    F                   GTRU TO FLOW CONTROL USED
*                                  WHEN THE GDS IS EXECUTED.
GDSFCBUF DS    H                   BUFFER ADDRESS OF FLOW CTL ENTRY
GDSBCTEL DS    H                   PTR TO ELEMENT IN THE BUFFER
*                                  CONTROL TABLE WHICH IS FIRST
GDSBCTID DS    X                   ID OF GDS IN BUFFER CONTROL TABLE
GDSGRMOD DS    X                   CURRENT MODE DEVICE IS IN
*              X'80'               CHARACTER PROTECTED BASIC
*              X'40'               CHARACTER PROTECTED LARGE
*              X'20'               CHARACTER UNPROTECTED BASIC
*              X'10'               CHARACTER UNPROTECTED LARGE
*              X'08'               VECTOR ABSOLUTE
*              X'04'               VECTOR INCREMENTAL
*              X'02'               POINT ABSOLUTE
*              X'01'               POINT INCREMENTAL
*              X'00'               CONTROL
GDSGDOAL DS    H                   LENGTH OF EACH GDOA
GDSSHDBK DS    F                   POINTER BACK TO THE EQUIV GDS
GDSSHDFD DS    F                   POINTER FOREWARD TO THE EQUIV GDS
GDSREPPB DS    H                   REPLACEMENT PHYSICAL BUFFER ADDR
GDSKEYSV DS    H                   LOGICAL START ADDRESS OF KEY FOR
*                                  BUFFER SUBROUTINE OR SEQUENCE
*                                  CURRENTLY BEING GENERATED
GDSREPDT DS    F                   DATA TO REPLACE THE GTRU TO FC
./ ADD NAME=GENCOM
*D776500                                                       @OX10944
*A160000                                                       @OX10944
GENCOM   DSECT
         USING GENCOM,R7                BASE FOR MODULE COMMON
         SPACE
*        DYNAMIC POINTERS AND WORK VALUES
         SPACE
TXTIN    DS    F                        SAVE INPUT FIXED TEXT POINTER
TXTOUT   DS    F                        SAVE OUTPUT FIXED TEXT POINTER
LCR      DS    F                        LOCATION COUNTER WORK AREA
GENRTRN  DS    F                        SAVE AREA FOR GENFLD RETURN REG
GENPTR   DS    F                        OUTPUT LENGTH FIELD POINTER
STRRTRN  DS    F                        GENSTRNG RETURN REGISTER
OUTPTR   DS    F                        OUTPUT TEXT POINTER SAVE
RESRTRN  DS    F                        RESOLVE RETURN REGISTER SAVE
GENREGS  DS    4F                       SAVE R2 THROUGH R5
INFIXRTN DS    F                        INFIX ROUTINE RETURN REGISTER
ESTKNDX  DS    F                        DISPL TO NEXT ERROR STK ENTRY
NEWSTRNG DS    F                        NEW CHARACTER STRING START
ERRCNT   DS    H                        COUNT OF ERRORS LOGGED
STRNGLN  DS    H                        LENGTH OF THAT STRING
         SPACE
*        SWITCHES FOR GENERATION
         SPACE
INHI     DSW   INHIBIT                  ESDS STARTED SWITCH
EVALSW01 DSW   GLOBAL,                  CURRENT TERM IS GLOBAL REFERENCE
               CHARMODE,                CHARACTER STRING OUTPUT WANTED X
               CTYPE,                   TERM IS CHARACTER STRING       X
               INMACDEF,                ON AT MACRO, OFF AT MEND       X
               CALLING,                 PROCESSING MCALL STATEMENT     X
               FRCMI,                   FIRST MACHINE INSTR    @OX10944X
               INMACRO,                 EXPANDING A MACRO              X
               NOCALL                   ABORT THE CALL IN PROCESS
EVALSW02 DSW   FRSTTITL,                TITLE WITH NAME ENCOUNTERED    X
               ERR105SW,                ERR105 LOGGED ONCE ALREADY     X
               PREVDEF,                 PARAM DEFINITION ALREADY FOUND X
               SUBSCR2,                 SUBSCRIPT 2 ON SYSLIST TERM    X
               FLUSH1,                  FLUSH TO EARLY END OF FILE     X
               GENEND,                  END STMT HIT INSIDE MACRO      X
               FLUSH2,                  EARLY END OF FILE REACHED      X
               FLUSH3                   END STMT TO BE GENERATED
EVALSW03 DSW   CCOMP,                   DO CHARACTER COMPARE           X
               SUBLIST                  PROCESSING MACRO SUBLIST
         SPACE
*        STACK MANAGEMENT
         SPACE
STACKLVL DS    F                        NEXT AVAILABLE POSITION
STACKEND DS    A(0)                     END OF STACK
STRPTR1  DS    A(0)                     STRING 1 CURRENT
STRPTR2  DS    A(0)                     STRING 2 CURRENT
         SPACE
*        MACRO LEVEL CONTROL
         SPACE
MACROLVL DS    F                        MACRO NEST COUNT
         SPACE
ENTRYNDX DS    0H                       DICTIONARY ROUTINES INDEX
         DS    XL1                      HALF-WORD PAD
NDXVAL   DS    XL1                      ENTRY INDEX TO BRANCH TABLE
SYSNDX   DS    F                        &SYSNDX VALUE
SYSECT   DS    0CL9                     &SYSECT VALUE
SYSECTL  DS    C                             LENGTH
GENSPEND EQU   *
SYSECTS  DS    CL8                           STRING
         SPACE
*        EVALUATION LIMITS
         SPACE
MAXCMPLX EQU   25                       MAXIMUM OF 25 TERMS IN STACK
TERMLNTH EQU   6                        LENGTH OF EACH STACK ENTRY
         SPACE
*        EVALUATION WORK AREA
         SPACE
         ORG   *+3-((*-GENCOM)-((*-GENCOM)/4)*4)  STACK STARTS ON NEXT X
                                                  FULLWORD-1
         SPACE
STKENTRY EQU   ((TERMLNTH+3)/4)*4       LENGTH OF EACH STACK ENTRY--   X
                                          (ROUNDED UP TO FULL WORDS)
         SPACE
STACK    EQU   *                        STACK NAME
         SPACE
STACKFLG DS    C                        FLAG BYTE
STACKVAL DS    F                        VALUE, ON FULL WORD BOUNDARY
         SPACE
         ORG   STACK+STKENTRY           START OF NEXT STACK ENTRY
         SPACE
STACKNXT EQU   *                        NEXT STACK ENTRY
         SPACE
NEXTFLG  DS    C                        NEXT ENTRY FLAG BYTE
NEXTVAL  DS    F                        NEXT ENTRY VALUE--FULL WORD
         SPACE
         ORG   STACK                    REPOSITION TO STACK START
         SPACE
EVALSTCK DS    (MAXCMPLX)CL(STKENTRY)   AND PUT IN THE WHOLE STACK
ENDSTACK EQU   *-STKENTRY               END OF STACK--STOPPER
ERRSTK   DS    CL(11*6)                 STACK FOR GENERATION ERRORS
         SPACE
UNPKBUF  DS    CL16                     UNPACK WORKSPACE
UNPKLAST EQU   UNPKBUF+15               LAST BYTE
UNPKEND  EQU   UNPKBUF+16               END OF STRING
         SPACE
STRING1  DS    CL256                    PRIMARY CHARACTER BUFFER.  FIRST
                                          BYTE IS CURRENT STRING LENGTH
STRING2  DS    CL256                    SECONDARY CHARACTER BUFFER.
         SPACE
*
*        START OF GENERATE PHASE COMMON INITIALIZED AND USED BY THE
*              GENERATE PHASE DICTIONARY ROUTINES.
*
DICTCOMS DS    0F
FREESTRT DS    F                        PTR TO START OF WORK SPACE
FREEEND  DS    F                        PTR TO END OF WORK SPACE
OVLYSTRT DS    F                        PTR TO SPACE FOR LOCAL DICTS
SPACEAL  DS    F                        PTR TO CURRENT SPACE, LOW END
SPACEAH  DS    F                        PTR TO CURRENT SPACE, HI END
SPACEAE  DS    F                        LENGTH OF CURRENT SPACE
REGSAVEA DS    F                        REGISTER SAVE AREA
REGSAVEB DS    F                        REGISTER SAVE AREA
OPSNSTRT DS    F                        PTR TO START OF OPSYN TABLE
MDVPTRSV DS    F                        PTR TO CURRENT MDV ENTRY
HIBYTE0  DS    F                        FULL-WORD WORK AREA
OSRDSTRT DS    F                        PTR TO START OF ORD SYMB REF DT
GDSTRT   DS    F                        PTR TO START OF GBL DICTIONARY
MDVSTRT  DS    F                        PTR TO START OF MDV
CURRDICT DS    F                        PTR TO HEADER OF CURRENT DICT
CURRPARM DS    F                        PTR TO CURRENT PARAM TABLE
CURRGLBL DS    F                        PTR TO CURRENT GLOBAL VECTOR
CURRSEQS DS    F                        PTR TO CURRENT SEQ SYMB REF DCT
CURRLOCL DS    F                        PTR TO CURRENT LOCAL DICTIONARY
CURRPOST DS    F                        PTR TO CURRENT POSIT PARAM VCTR
CURRKEYD DS    F                        PTR TO CURRENT KEYWD PARAM VCTR
PRMTBLAD EQU   SPACEAL                  PTR TO START OF PARAM TABLE
PRMTBLDS DS    F                        CURRENT LENGTH OF PARAM TABLE
PVECTPTR EQU   SPACEAH                  PTR TO CURRENT PARAM VECTOR
PVECTDIS DS    F                        CURRENT LENGTH OF POSIT VECTOR
KVECTDIS DS    F                        CURRENT LENGTH OF KEYWD VECTOR
KCHANPTR DS    F                        LINK TO KEYWORD PARAM CHAIN
PRMPTRSV DS    F                        PTR TO BASE OF PARAM TBL ENTRY
SUBCNT   DS    H                        CURRENT SUBOPERAND COUNT
SUBLEN   DS    H                        CURRENT SUBLIST CHARAC COUNT
SUBVCTDS DS    F                        CURRENT LENGTH OF SUBLIST VECTR
ACTRCNT  DS    F                        CURRENT ACTR VALUE
PIOPARMB DS    F                        LENGTH OF I/O AREA
PIOPARMA DS    F                        PTR TO CURRENT I/O AREA
PIOPARMC DS    H                        LENGTH OF CURRENT I/O AREA
NOFSYSLS DS    H                        N ATTR OF &SYSLIST
PPARMCNT DS    F                        CURRENT POSIT PARAM COUNT
ALTPTRSV DS    F                        ALTERNATE REGISTER SAVE AREA
PRMSWTCH DSW   PASSPARM,                PARAM PASSED AS PARAM TO INNER X
               GBLCALL,                 GLOBAL DICTIONARY REFERENCE    X
               REFFLAG,                 DICTIONARY REFERENCE IN PROCESSX
               KEYFLG,                  KEYWORD PARAMETER IN PROCESS   X
               DEFLG,                   DEFAULT VALUE FOR KEYWORD      X
               BYFLG,                   BYPASS DEFAULT SUBLIST         X
               ENFLG                    ENTER DEFAULT SUBLIST
NOTESAVE DS    XL8                      SAVE AREA, NOTE END OF CALL
SAVENOTE DS    XL8                      SAVE AREA, NOTE END OF PROTOTYP
KEYLENSV DS    XL1                      SAVE AREA, KEYWORD SYMB LENGTH
DICTCOME EQU   *
*
*        END OF GENERATE PHASE COMMON INITIALIZED AND USED BY THE
*              GENERATE PHASE DICTIONARY ROUTINES.
*
         SPACE
REGSTACK DS    8F                       REGISTER SAVE AREA, DICT RTNS
RECURSTK DS    8F                       RECURRSIVE SAVE, DICT RTNS
RESOLVST DS    8F                       REGISTER SAVE AREA, RESOLVE RTN
EVALST   DS    8F                       REGISTER SAVE AREA, EVAL RTN
GENSTRST DS    8F                       REGISTER SAVE AREA, GENSTRNG RT
         SPACE
         ORG   UNPKBUF                  LOCTR WORK SPACE OVERLAY
SAVVY    DS    2F                       LOCTR SAVE AREA
LFLGA    DS    F                        LOCTR WORK AREA
SYMBLCNT DS    H                        SYMBOL COUNT
PARENCNT DS    H                        PAREN LEVEL
NAMELNG  DS    H                        LABEL INDICATOR
SUPPRESW DSW   WPSOP,VCONW,MODW,,,,,SUPPRESS SCAN INDICATORS
SUPPRESV DSW   VPSOP,VCONV,MODV,,,,,SUPPREST SCAN INDICATORS
         ORG   ,                        RESUME
         SPACE
*        GENERATOR PATCH AREA
         SPACE
         DS    4F                       PATCH AREA
GENCOM99 EQU   *                        END OF GENERATOR COMMON
./ ADD NAME=GENERR
         MACRO
         GENERR &CODE,&LIST             PROTOTYPE FOR GENERR
         GBLC  &ERCD(255)
         GBLB  &GENSW
         LCLC  &CN
         LCLC  &LET,&GEN(8)
         LCLA  &A,&K,&I
         LCLA  &C,&CT,&CA                COUNTERS
.* GENERATES ERROR MESSAGES AND A BRANCH TABLE TO THEM
.* IN CSECT X6C00.  THE CODE MUST BE A SYMBOLIC NUMBER AND THE MSG
.* MUST BE A QUOTED STRING.  ACCEPTS SAME DATA AS JGENIN MACRO.  MSG
.* MUST CONTAIN  BLANK-DOLLAR-BLANK WHEREVER APPENDED DATA IS TO BE
.* INSERTED AND BLANK- POUND -BLANK WHEREVER A COLUMN POINTER IS TO BE
.* INSERTED INTO THE MESSAGE.  USE THESE TWO CHARACTERS ONLY FOR THIS
.* PURPOSE.   ALSO GENERATES EQUATES AND COMMENTS IN THE DSECT JERMSGCD
.* DEPENDING UPON THE SETTING OF THE GLOBAL VARIABLE &GENSW.
&K       SETA  K'&LIST
&I       SETA  1
&CN      SETC  '&CODE'(4,K'&CODE-3)     FIND ERROR CODE NUMBER
&A       SETA  &CN                      CONVERT TO DECIMAL
&CA      SETA  0
.* GENERATES INTERNALLY CODED TEXT.
.* ACCEPTS ALPHA, NUMBERIC, AND ALL SPECIAL CHARACTERS.
         AIF   ('&LIST'(1,1) EQ '''').M1
         AIF   ('&LIST'(&K,1) EQ '''').M1  MISSING QUOTE
         MNOTE 1,'MESSAGE QUOTE MISSING'
         MEXIT                          EXIT
.M1      ANOP                           BRANCH LABEL
&C       SETA  2
&K       SETA  &K-1
         AIF   (&GENSW).CONT           ARE WE GENERATING JERMSGCD DSECT
         SPACE
&CODE    EQU   &CN                      SEE FOLLOWING MNOTE
         MNOTE *,&LIST
         MEXIT
.CONT    ANOP                           BRANCH LABEL
S&CODE   DC    0CL(&K-&C+1)' '
.L2      ANOP
&CT      SETA  1
.L3      AIF   ('&LIST'(&C,1) GE 'A').L5  IS IT ALPHANUMERIC?
         AIF   ('&LIST'(&C,1) EQ '$').L3DOLR      DOLLAR
         AIF   ('&LIST'(&C,1) EQ '#').L3POUND     POUND
         AIF   ('&LIST'(&C,1) EQ ' ').L3B         BLANK
         AIF   ('&LIST'(&C,1) EQ ',').L3C         COMMA
         AIF   ('&LIST'(&C,1) EQ '.').L3P         PERIOD
         AIF   ('&LIST'(&C,1) EQ '=').L3EQ        EQUAL
         AIF   ('&LIST'(&C,1) EQ '+').L3PLUS      PLUS
         AIF   ('&LIST'(&C,1) EQ '-').L3MIN       MINUS
         AIF   ('&LIST'(&C,1) EQ '/').L3SLASH     SLASH
         AIF   ('&LIST'(&C,1) EQ '(').L3LP        LEFT PARN.
         AIF   ('&LIST'(&C,1) EQ ')').L3RP        RIGHT PARN.
         AIF   ('&LIST'(&C,1) EQ '*').L3AST       ASTERISK
         AIF   ('&LIST'(&C,1) EQ '&&'(1,1)).L3AMP      AMPERSAND
         AIF   ('&LIST'(&C,1) EQ ''''(1,1)).L3QUO      QUOTE
.L5      ANOP
&LET     SETC  'J'.'&LIST'(&C,1)
.L6      AIF   (&CT EQ 1).L7
&LET     SETC  ','.'&LET'
.L7      ANOP
&GEN(&CT) SETC '&LET'
&C       SETA  &C+1
         AIF   (&C GT &K).L9
&CT      SETA  &CT+1
         AIF   (&CT LT 9).L3
         DC    AL1(&GEN(1)&GEN(2)&GEN(3)&GEN(4)&GEN(5)&GEN(6)&GEN(7)&GEX
               N(8))
&CT      SETA  1
.L8      ANOP
&GEN(&CT) SETC ''
&CT      SETA  &CT+1
         AIF   (&CT LT 9).L8
         AGO   .L2
.L3DOLR  ANOP
&LET     SETC  'JDOLLAR'
         AGO   .L6
.L3POUND ANOP
&LET     SETC  'JPOUND'
         AGO   .L6
.L3EQ    ANOP
&LET     SETC  'JEQUAL'
         AGO   .L6
.L3PLUS  ANOP
&LET     SETC  'JPLUS'
         AGO   .L6
.L3MIN   ANOP
&LET     SETC  'JMINUS'
         AGO   .L6
.L3SLASH ANOP
&LET     SETC  'JSLASH'
         AGO   .L6
.L3C     ANOP
&LET     SETC  'JCOMMA'
         AGO   .L6
.L3B     ANOP
&LET     SETC  'JBLANK'
         AGO   .L6
.L3P     ANOP
&LET     SETC  'JPERIOD'
         AGO   .L6
.L3LP    ANOP
&LET     SETC  'JLPARN'
         AGO   .L6
.L3RP    ANOP
&LET     SETC  'JRPARN'
         AGO   .L6
.L3AST   ANOP
&LET     SETC  'JASTER'
         AGO   .L6
.L3AMP   AIF   ('&LIST'(&C+1,1) EQ '&&'(1,1)).L3AMP2  2ND AMPERSAND
         MNOTE 1,'ILLEGAL AMPERSAND - AMPERSAND IS NOT DOUBLED'
.L3AMP2  ANOP
&LET     SETC  'JAMPER'
&C       SETA  &C+1
&CA      SETA  &CA+1
         AGO   .L6
.L3QUO   AIF   ('&LIST'(&C+1,1) EQ ''''(1,1)).L3QUO2  2ND QUOTE
         MNOTE 1,'ILLEGAL QUOTE - QUOTE IS NOT DOUBLED'
.L3QUO2  ANOP
&LET     SETC  'JQUOTE'
&C       SETA  &C+1
&CA      SETA  &CA+1
         AGO   .L6
.L9      AIF   (&CA EQ 0).L9D
&LET     SETC  ','.'JBLANK'
&CT      SETA  &CT+1
         AIF   (&CT LT 9).L9B
         DC    AL1(&GEN(1)&GEN(2)&GEN(3)&GEN(4)&GEN(5)&GEN(6)&GEN(7)&GEX
               N(8))
&CT      SETA  1
.L9A     ANOP
&GEN(&CT) SETC ''
&CT      SETA  &CT+1
         AIF   (&CT LT 9).L9A
&CT      SETA  1
&LET     SETC  'JBLANK'
.L9B     ANOP
&GEN(&CT)      SETC                     '&LET'
&CA      SETA  &CA-1
         AGO   .L9
.L9D     DC    AL1(&GEN(1)&GEN(2)&GEN(3)&GEN(4)&GEN(5)&GEN(6)&GEN(7)&GEX
               N(8))
.L10     ANOP
&ERCD(&A) SETC 'S&CODE'                 SORT & SAVE MESSAGE NAME
         MEND
./ ADD NAME=GENOP
         MACRO
         GENOP &PHASE=,                 1=EDIT PHASE, 3=GENERATE PHASE *
               &SET=UNIV,               CHAR SET-UNIV,STD,COMM,SCNTF   X
               &LEVEL=1                 LEVEL OF TABLE
.*********************************************************************.
.*                                                                   *.
.* THIS MACRO GENERATES THE OP CODE TABLE FOR THE EDIT AND GENERATE  *.
.* PHASES.IT PERFORMS ITS WORK IN THE FOLLOWING STEPS:               *.
.*       1 - INITIALIZE  GLOBALS, COPY THE COMMON JUNK ETC.          *.
.*       2 - GENERATE THE OPCODE TABLE THROUGH A SERIES OF CALLS TO  *.
.*           THE MACRO 'OP', ONE CALL FOR EACH SYMBOLIC OPCODE.      *.
.*           NOTES - IF TAILORING OF THE TABLE ACCORDING TO INSTRUCT *.
.*                   SET BECOMES DESIRABLE,THIS CAN BE ACCOMPLISHED  *.
.*                   BY ADDING SOME PARAMETERS TO 'GENOP' AND DOING  *.
.*                   SOME SUITABLE BRANCHING ON THESE IN THIS STEP.  *.
.*                 - THE TABLE IS CHAINED BACKWARDS. IN ORDER TO GET *.
.*                   A FAST TABLE LOOKUP  FREQUENTLY USED OPCODES    *.
.*                   SUCH AS DC AND MVC SHOULD BE PUT TOWARDS THE END*.
.*                   AND UNFREQUENT ONES SUCH AS ICTL AND PRIVILEGED *.
.*                   OPS SHOULD BE IN THE BEGINNING.                 *.
.*       3 - GENERATE THE HASH TABLE, ONE POINTER FOR EACH CHAIN     *.
.*                                                                   *.
.*********************************************************************.
         GBLA  &SHIFT(8)                USED FOR FOLDING MNEMONIC
         GBLA  &CHAIN(71)               NO OF ENTRIES IN EACH CHAIN
         GBLC  &TABLE(71)               NAME OF PREVIOUS ENTRY IN CHAIN
         GBLC  &SEARCH(71)              CHAINS - FOR DOCUMENTATION ONLY
         GBLC  &CHARVAL                 VALID CHARACTERS FOR MNEMONIC
.*
         LCLA  &INDEX                   SCRATCH PAD
         LCLA  &COUNT                   SCRATCH PAD
         LCLC  &STRING                  SCRATCH PAD
         LCLC  &ID                      SCRATCH PAD
         LCLC  &COMMENT                 VARIABLE COMMENT FIELD
.*
.* CHECK PARAMETERS
.*
         AIF   (&PHASE EQ 1 OR &PHASE EQ 3).POK   GO IF PHASE OK
         MNOTE '***  ERROR  *** - PHASE=&PHASE'
.POK     AIF   (T'&LEVEL EQ 'N').LOK    GO IF LEVEL OK
         MNOTE '***  ERROR  *** - LEVEL=&LEVEL'
.LOK     ANOP
.*
&SHIFT(1) SETA X'1000000'
&SHIFT(2) SETA X'10000'
&SHIFT(3) SETA X'100'
&SHIFT(4) SETA X'1'
&SHIFT(5) SETA X'1000000'
&SHIFT(6) SETA X'10000'
&SHIFT(7) SETA X'100'
&SHIFT(8) SETA X'1'
.*
&CHARVAL SETC  'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
.*
&ID      SETC  '&SET'(1,2)
.* INITIALIZE &TABLE
.*
.INIT    ANOP
&COUNT   SETA  &COUNT+1                 NEXT ENTRY
&TABLE(&COUNT) SETC 'JOPTABLE'          INITIALIZE TO START OF JOPTABLE
         AIF   (&COUNT LT 71).INIT      GO IF NOT EXHAUSTED
         JHEAD 'OP CODE TABLE',                                        *
               PHASEID=X&PHASE.K,                                      *
               LEVEL=&LEVEL
*FUNCTION/OPERATION-                                                  *
*   THIS MODULE IS THE OP CODE TABLE. IT IS GENERATED ACCORDING TO    *
*   THE USER-SPECIFIED OPTIONS. IT IS GENERATED IN HASHED FORM. IT    *
*   IS INCLUDED AS PART OF BOTH THE EDIT PHASE AND THE GENERATE       *
*   PHASE.                                                            *
*                                                                     *
*ENTRY POINT-                                                         *
*        NONE                                                         *
*                                                                     *
*INPUT-                                                               *
*   NONE                                                              *
*                                                                     *
*OUTPUT-                                                              *
*   NONE                                                              *
*                                                                     *
*EXTERNAL ROUTINES-                                                   *
*   NONE                                                              *
*                                                                     *
*EXITS,NORMAL-                                                        *
*   NONE                                                              *
*                                                                     *
*EXITS,ERROR-                                                         *
*   NONE                                                              *
*                                                                     *
*TABLES/WORK AREAS-                                                   *
*   NONE                                                              *
*                                                                     *
*ATTRIBUTES-                                                          *
*   REFRESHABLE                                                       *
*                                                                     *
*NOTES-                                                               *
*                                                                     *
*   THE FOLLOWING IS A DESCRIPTION OF THE OP CODE TABLE ENTRY(S)      *
*                                                                     *
*   ITEM            LENGTH         DESCRIPTION                        *
*   ----            ------         -----------                        *
*                                                                     *
*   CHAIN POINTER   2 BYTES        NON-ZERO = DISPLACEMENT FROM THE   *
*                                             BASE OF THE HASH TABLE  *
*                                             TO THE NEXT ENTRY IN    *
*                                             THE CHAIN               *
*                                                                     *
*                                  ZERO = LAST ENTRY IN THE CHAIN     *
*                                                                     *
*   FLAGS           1 BYTE         FLAGS REQUIRED BY THE EDITOR AND   *
*                                  OP CODE LOOK-UP ROUTINE            *
*                                                                     *
*                                  BITS 0-1                           *
*                                 01 = ONE BYTE OP CODE OR ASMOP      *
*                                 11 = TWO BYTE OP CODE OR EXT MNEMON.*
*                                                                     *
*                                  BITS 2-3                           *
*                                 00 = ONE BYTE MACHINE OP
*                                    01 = EXTENDED MNEMONIC           *
*                                 10 = TWO BYTE MACHINE OP
*                                    11 = ASSEMBLER OP                *
*                                                                     *
*                                  BIT 4                              *
*                                    0                                *
*                                                                     *
*                                  BITS 5-7                           *
*                                    LENGTH OF MNEMONIC-1             *
*                                                                     *
*   MNEMONIC        1-8 BYTES      MNEMONIC IN INTERNAL CHARACTERS    *
*                                                                     *
*   FLAGA           1 BYTE         FLAGS FOR MACHINE OPS AND          *
*                                  EXTENDED MNEMONICS, INSERTED       *
*                                  INTO JTFLGA IN THE EDITED TEXT     *
*                                  FOR USE BY ALL SUBSEQUENT PHASES   *
*                                                                     *
*                                  BIT 0                              *
*                                    0 = MACHINE OP                   *
*                                                                     *
*                                  BIT 1                              *
*                                    0 = ONE BYTE OP CODE             *
*                                    1 = EXTENDED MNEMONIC OR         *
*                                        TWO BYTE OP CODE             *
*                                                                     *
*                                  BIT 2                              *
*                                    1 = PRIVATE CODE INITIATED       *
*                                                                     *
*                                  BIT 3                              *
*                                    0                                *
*                                                                     *
*                                  BIT 4                              *
*                                    1 = STATEMENT MAY AFFECT         *
*                                        STORAGE ASSIGNMENT OR THE    *
*                                        ESD                          *
*                                                                     *
*                                  BIT 5                              *
*                                    1 = STATEMENT MAY CONTAIN        *
*                                        SYMBOL REFERENCES IN THE     *
*                                        OPERAND                      *
*                                                                     *
*                                  BITS 6-7                           *
*                                    00 = INSTRUCTION LENGTH 2 BYTES  *
*                                    01 = INSTRUCTION LENGTH 4 BYTES  *
*                                    10 = INSTRUCTION LENGTH 6 BYTES  *
*                                                                     *
*   FLAGA           1 BYTE         FLAGS FOR ASSEMBLER OPS, INSERTED  *
*                                  INTO JTFLGA IN THE EDITED TEXT     *
*                                  FOR USE BY ALL SUBSEQUENT PHASES   *
*                                                                     *
*                                  BIT 0                              *
*                                    1 = ASSEMBLER OP                 *
*                                                                     *
*                                  BIT 1                              *
*                                    1 = EXTRN, WXTRN, ENTRY          *
*                                        STATEMENT                    *
*                                                                     *
*                                  BIT 2                              *
*                                    1 = PRIVATE CODE INITIATED       *
*                                                                     *
*                                  BIT 3                              *
*                                    1 = PRIVATE CODE INITIATION      *
*                                        INHIBITED                    *
*                                                                     *
*                                  BIT 4                              *
*                                    1 = STATEMENT MAY AFFECT         *
*                                        STORAGE ASSIGNMENT OR THE    *
*                                        ESD                          *
*                                                                     *
*                                  BIT 5                              *
*                                    1 = STATEMENT MAY CONTAIN        *
*                                        SYMBOL REFERENCES IN THE     *
*                                        OPERAND                      *
*                                                                     *
*                                  BIT 6                              *
*                                    1 = OPERAND SCAN IS REQUIRED     *
*                                                                     *
*                                  BIT 7                              *
*                                    1 = DC, DS, DXD STATEMENT        *
*                                                                     *
*   INTERNAL OP     1-2 BYTES      VALUE INSERTED INTO JTIOP1 (AND,   *
*      CODE                        FOR TWO BYTE OP CODES, INTO        *
*                                  JTIOP2) IN EDITED TEXT RECORD FOR  *
*                                  USE BY ALL SUBSEQUENT PHASES       *
*                                                                     *
*                                  MACHINE OP - HEX VALUE OF MACHINE  *
*                                               INSTRUCTION           *
*                                                                     *
*                                  ASSEMBLER OP - HEX VALUE BASED ON  *
*                                                 JTEXT               *
*                                                                     *
*   MASK            1 BYTE         MASK FOR EXTENDED MNEMONICS        *
*                                  INSERTED INTO JTIOP2 IN THE        *
*                                  EDITED TEXT                        *
*                                                                     *
*                                  BITS 0-3                           *
*                                    MASK (0-F)                       *
*                                                                     *
*                                  BITS 4-7                           *
*                                    0                                *
*                                                                     *
         EJECT
         PRINT NOGEN    SUPPRESS PRINTING OF JCOMMON AND JTEXT
         COPY  JCOMMON                  GET INTERNAL CODES FOR LETTERS
         EJECT
         COPY  JTEXT                    GET INTERNAL OPCODES FOR ASMOPS
         EJECT
         PRINT GEN
         JCSECT (X&PHASE.K&ID)
*RELEASE 3.1 CHANGES
*A274100                                                        OX02977
         JMODID
         DC    CL2'&ID'
JOPTABLE EQU   *
         JENTRY (X&PHASE.K01=JOPTABLE)
         ORG   JOPTABLE+2*71
.********************************************************************.
.*                                                                   *.
.** END OF PRELIMINARIES - GENERATE THE OP CODE TABLE               **.
.*                                                                   *.
.*********************************************************************.
         AIF   ('&SET' NE 'UNIV').STEP0
RRB      OP    X'B213'
LRA      OP    X'B1'
PTLB     OP    X'B20D'
SCKC     OP    X'B206'
STCKC    OP    X'B207'
RDD      OP    X'85'
WRD      OP    X'84'
SIGP     OP    X'AE'
STAP     OP    X'B212'
SPX      OP    X'B210'
STPX     OP    X'B211'
.STEP0   ANOP
CLRIO    OP    X'9D01'
CS       OP    X'BA'
CDS      OP    X'BB'
SPKA     OP    X'B20A'
IPK      OP    X'B20B'
STIDP    OP    X'B202'
STIDC    OP    X'B203'
SCK      OP    X'B204'
STCK     OP    X'B205'
SPT      OP    X'B208'
STPT     OP    X'B209'
LCTL     OP    X'B7'
STCTL    OP    X'B6'
SSK      OP    X'08'
ISK      OP    X'09'
TCH      OP    X'9F'
HDV      OP    X'9E01'
HIO      OP    X'9E'
TIO      OP    X'9D'
SIOF     OP    X'9C01'
SIO      OP    X'9C'
STOSM    OP    X'AD'
STNSM    OP    X'AC'
SSM      OP    X'80'
LPSW     OP    X'82'
         AIF   (&PHASE EQ 3).STEP1
AGOB     OP    DEF=NO,REF=NO,INPC=NO
AIFB     OP    DEF=NO,REF=NO,INPC=NO
ICTL     OP    DEF=NO,REF=NO,INPC=NO
ISEQ     OP    DEF=NO,REF=NO,INPC=NO
REPRO    OP    REF=NO,INPC=NO
OPSYN    OP    DEF=NO,REF=NO,INPC=NO
ACTR     OP    DEF=NO,REF=NO,INPC=NO
.STEP1   ANOP
DXD      OP    REQOP=YES,INPC=NO
CXD      OP    REF=NO
COM      OP    REF=NO,INHB=YES,INPC=NO
WXTRN    OP    DEF=NO,INPC=NO
PUSH     OP    DEF=NO,REF=NO,INPC=NO
POP      OP    DEF=NO,REF=NO,INPC=NO
         AIF   ('&SET' EQ 'STD' OR '&SET' EQ 'COMM').STEP2
MXD      OP    X'67'
MXDR     OP    X'27'
MXR      OP    X'26'
SXR      OP    X'37'
AXR      OP    X'36'
LRDR     OP    X'25'
LRER     OP    X'35'
SWR      OP    X'2F'
SW       OP    X'6F'
SUR      OP    X'3F'
SU       OP    X'7F'
AWR      OP    X'2E'
AW       OP    X'6E'
AUR      OP    X'3E'
AU       OP    X'7E'
DDR      OP    X'2D'
DD       OP    X'6D'
DER      OP    X'3D'
DE       OP    X'7D'
HDR      OP    X'24'
HER      OP    X'34'
MDR      OP    X'2C'
MD       OP    X'6C'
MER      OP    X'3C'
ME       OP    X'7C'
CDR      OP    X'29'
CD       OP    X'69'
CER      OP    X'39'
CE       OP    X'79'
STD      OP    X'60'
STE      OP    X'70'
SDR      OP    X'2B'
SD       OP    X'6B'
SER      OP    X'3B'
SE       OP    X'7B'
ADR      OP    X'2A'
AD       OP    X'6A'
AER      OP    X'3A'
AE       OP    X'7A'
LTDR     OP    X'22'
LTER     OP    X'32'
LCDR     OP    X'23'
LCER     OP    X'33'
LDR      OP    X'28'
LD       OP    X'68'
LNDR     OP    X'21'
LNER     OP    X'31'
LPDR     OP    X'20'
LPER     OP    X'30'
LER      OP    X'38'
LE       OP    X'78'
.STEP2   AIF   ('&SET' EQ 'STD' OR '&SET' EQ 'SCNTF').STEP3
DP       OP    X'FD'
MP       OP    X'FC'
EDMK     OP    X'DF'
ED       OP    X'DE'
SRP      OP    X'F0'
CP       OP    X'F9'
SP       OP    X'FB'
AP       OP    X'FA'
ZAP      OP    X'F8'
.STEP3   ANOP
MC       OP    X'AF'
CLCL     OP    X'0F'
MVCL     OP    X'0E'
LCR      OP    X'13'
CLM      OP    X'BD'
STCM     OP    X'BE'
ICM      OP    X'BF'
         AIF   (&PHASE EQ 3).STEP4
GBLC     OP    DEF=NO,REF=NO,INPC=NO
GBLA     OP    DEF=NO,REF=NO,INPC=NO
LCLC     OP    DEF=NO,REF=NO,INPC=NO
MNOTE    OP    DEF=NO,REF=NO,INPC=NO
SETC     OP    DEF=NO,REF=NO,INPC=NO
AGO      OP    DEF=NO,REF=NO,INPC=NO
.STEP4   ANOP
SPM      OP    X'04'
ALR      OP    X'1E'
AL       OP    X'5E'
NR       OP    X'14'
N        OP    X'54'
NC       OP    X'D4'
BCR      OP    X'07'
BXH      OP    X'86'
BXLE     OP    X'87'
CLR      OP    X'15'
CL       OP    X'55'
DR       OP    X'1D'
D        OP    X'5D'
XR       OP    X'17'
X        OP    X'57'
XI       OP    X'97'
BNER     OP    X'077'
LNR      OP    X'11'
LPR      OP    X'10'
MVN      OP    X'D1'
MVO      OP    X'F1'
MVZ      OP    X'D3'
MR       OP    X'1C'
M        OP    X'5C'
MH       OP    X'4C'
OR       OP    X'16'
O        OP    X'56'
SLDA     OP    X'8F'
SLA      OP    X'8B'
SLDL     OP    X'8D'
SLL      OP    X'89'
SRDA     OP    X'8E'
SRA      OP    X'8A'
SRDL     OP    X'8C'
SRL      OP    X'88'
SLR      OP    X'1F'
SL       OP    X'5F'
TS       OP    X'93'
TRT      OP    X'DD'
CCW      OP
PUNCH    OP    REF=NO,INPC=NO
LTORG    OP    REF=NO
         AIF   (&PHASE EQ 3).STEP5
ANOP     OP    DEF=NO,REF=NO,INPC=NO
GBLB     OP    DEF=NO,REF=NO,INPC=NO
COPY     OP    DEF=NO,REF=NO,INPC=NO
.STEP5   ANOP
ORG      OP    REQOP=YES
PRINT    OP    DEF=NO,REF=NO,INPC=NO
SPACE    OP    DEF=NO,REF=NO,INPC=NO
EJECT    OP    DEF=NO,REF=NO,INPC=NO
BHR      OP    X'072'
BLR      OP    X'074'
BER      OP    X'078'
BNHR     OP    X'07D'
BNLR     OP    X'07B'
BNOR     OP    X'07E'
BOR      OP    X'071'
BPR      OP    X'072'
BMR      OP    X'074'
BZR      OP    X'078'
BNPR     OP    X'07D'
BNMR     OP    X'07B'
BNZR     OP    X'077'
TR       OP    X'DC'
OC       OP    X'D6'
CH       OP    X'49'
EX       OP    X'44'
LTR      OP    X'12'
XC       OP    X'D7'
CVB      OP    X'4F'
CVD      OP    X'4E'
C        OP    X'59'
CR       OP    X'19'
BCT      OP    X'46'
SH       OP    X'4B'
STH      OP    X'40'
AH       OP    X'4A'
DROP     OP    DEF=NO,INPC=NO
ENTRY    OP    DEF=NO,INPC=NO
EXTRN    OP    DEF=NO,INPC=NO
EQU      OP    REQOP=YES
DSECT    OP    REF=NO,INHB=YES,INPC=NO
CNOP     OP    REQOP=YES
TITLE    OP    DEF=NO,REF=NO,INPC=NO
START    OP    INHB=YES,REQOP=YES,INPC=NO
END      OP    INPC=NO
STC      OP    X'42'
IC       OP    X'43'
NI       OP    X'94'
OI       OP    X'96'
USING    OP
NOP      OP    X'470'
NOPR     OP    X'070'
BNP      OP    X'47D'
BP       OP    X'472'
BNM      OP    X'47B'
BM       OP    X'474'
BNO      OP    X'47E'
BO       OP    X'471'
BNL      OP    X'47B'
BNH      OP    X'47D'
BL       OP    X'474'
BH       OP    X'472'
BNZ      OP    X'477'
BZ       OP    X'478'
AR       OP    X'1A'
TM       OP    X'91'
SVC      OP    X'0A'
SR       OP    X'1B'
STM      OP    X'90'
ST       OP    X'50'
UNPK     OP    X'F3'
PACK     OP    X'F2'
LM       OP    X'98'
LH       OP    X'48'
MVI      OP    X'92'
BAL      OP    X'45'
BALR     OP    X'05'
BCTR     OP    X'06'
A        OP    X'5A'
S        OP    X'5B'
LR       OP    X'18'
BR       OP    X'07F'
BC       OP    X'47'
CSECT    OP    REF=NO,INHB=YES,INPC=NO
         AIF   (&PHASE EQ 3).STEP6
SETB     OP    DEF=NO,REF=NO,INPC=NO
SETA     OP    DEF=NO,REF=NO,INPC=NO
LCLB     OP    DEF=NO,REF=NO,INPC=NO
LCLA     OP    DEF=NO,REF=NO,INPC=NO
MEND     OP    DEF=NO,REF=NO,INPC=NO
MEXIT    OP    DEF=NO,REF=NO,INPC=NO
MACRO    OP    DEF=NO,REF=NO,INPC=NO
AIF      OP    DEF=NO,REF=NO,INPC=NO
.STEP6   ANOP
CLI      OP    X'95'
CLC      OP    X'D5'
L        OP    X'58'
BNE      OP    X'477'
BE       OP    X'478'
B        OP    X'47F'
LA       OP    X'41'
MVC      OP    X'D2'
DS       OP    REQOP=YES
DC       OP    REQOP=YES
         DC    CL1'0'                   DUMMY                   OX02977
.*********************************************************************.
.*                                                                   *.
.** END OF OP CODE TABLE GENERATION - GENERATE HASH TABLE           **.
.*                                                                   *.
.*********************************************************************.
         EJECT
         ORG   JOPTABLE                 PUT HASH TABLE BEFORE ENTRIES
         SPACE 2
&COUNT   SETA  0                        INITIALIZE LOOP COUNTER
&INDEX   SETA  0
.LOOP    ANOP
&COUNT   SETA  &COUNT+1
         MNOTE '* CHAIN &COUNT : &SEARCH(&COUNT)'    WRITE CHAIN
&STRING  SETC  '&TABLE(&COUNT)'         EXTRACT NAME OF LAST ENTRY
&COMMENT SETC  (12-K'&STRING)' '.'POINTER TO FIRST ENTRY OF &CHAIN(&COU*
               NT)'                     SET VARIABLE COMMENT
         DC    AL2(&STRING-JOPTABLE)&COMMENT
&INDEX   SETA  &INDEX+&CHAIN(&COUNT)    ACCUMULATE NO OF ENTRIES
         AIF   (&COUNT LT 71).LOOP      GO IF NOT EXHAUSTED
         SPACE 2
         MNOTE '** THE OPCODE TABLE CONTAINS A TOTAL OF &INDEX ENTRIES'
         SPACE 2
         MEND
./ ADD NAME=GENTAB
          MACRO
          GENTAB
          GBLC  &ERCD(255)          GLOBAL ARRAY OF MSG NAMES
          LCLA  &I
          LCLC  &LQ
.* THIS MACRO GENERATES A SEQUENCED INDEX TO THE ERROR MESSAGES WHICH
.* CONTAINS THE HALF-WORD ADDRESS AND THE LENGTH OF EACH MESSAGE.  THIS
.* ALLOWS THE ERROR CODE TO BE USED TO INDEX THE MESSAGE INDEX.  THIS
.* MACRO MUST BE CALLED EXACTLY ONCE AFTER ALL CALLS TO GENERR.
&LQ       SETC  'L'''
MTABLE    DS    0F                       INDEX OF ERROR MSGS & LENGTHS
MADDR     DS    H                            MESSAGE ADDRESS
MLN       DS    H                            MESSAGE LENGTH
          ORG   MTABLE                   TO START AT THE TOP OF TABLE
          DC    Y(S0-ERRMSGS)            INDEX TO ERR0 MESSAGE
          DC    Y(L'S0-1)                MOVE LENGTH OF ERR0 MESSAGE
          ORG   MTABLE+4                 TO LEAVE SPACE FOR ERR0 ENTRY
.LOOP     ANOP
&I        SETA  &I+1
          AIF   (&I GT 255).END          CHECK FOR MAXIMUM SIZE
          AIF   ('&ERCD(&I)' NE '').C1   FOR UNDEFINED ERROR MESSAGES
          DC    F'0'                     UNDEFINED ERROR MESSAGE
          AGO   .LOOP
.C1       ANOP
          DC    Y(&ERCD(&I)-ERRMSGS)     ADDRESS OF MSG FOR THIS CODE
          DC    Y(&LQ&ERCD(&I).-1)       LENGTH OF MSG FOR THIS CODE
          AGO   .LOOP
.END      MEND
./ ADD NAME=GETJSCB
         MACRO
&MACNAME GETJSCB &SYSTEM=AOS2
.*
.*       THIS MACRO SHOULD BE USED TO GET CORE FOR A JSCB BECAUSE
.*       IT ALLOWS FOR A LENGTH CHANGE OF THE JSCB WITHOUT CAUSING
.*       ANY RECODING IN A MODULE.  THIS MACRO DOES NOT NEED TO BE
.*       UPDATED IF THE JSCB LENGTH CHANGES BECAUSE IT USES SYMBOLS
.*       FOR THE LENGTH OF THE JSCB AND FOR THE DISPLACEMENT OF THE
.*       FIRST BYTE.  THESE SYMBOLS ARE EQU'S PUT OUT BY THE IEZJSCB
.*       MACRO SO THE IEZJSCB MACRO MUST BE USED IN ANY MODULE
.*       WHICH ISSUES A GETJSCB.
.*
.*   OS/VS1 RELEASE 3, OS/VS2 RELEASE 2, 07/20/73, LEVEL=1
.*
         AIF   ('&SYSTEM' EQ 'AOS1' OR '&SYSTEM' EQ 'MFT').GETAOS1
&MACNAME GETMAIN R,LV=JSCBAOS2,SP=253
         XC    0(JSCBAOS2,1),0(1)  CLEAR JSCB CORE
         AGO   .SETADDR
.GETAOS1 ANOP
&MACNAME GETMAIN R,LV=JSCBAOS1,SP=245
         XC    0(JSCBAOS1,1),0(1)  CLEAR CORE OF JSCB
.SETADDR ANOP
         LA    15,JSCBDISP(0,0) LOAD DISPLACEMENT OF FIRST BYTE  YM1995
         SR    1,15 -           COMPUTE ADDR TO BE STORED IN TCB
         MEND
./ ADD NAME=GETSEQ
         MACRO
&NAME    GETSEQ &SEQADDR
* MACCOMP-SC1CM
* MACSTAT-@G17EP5W
* MACMEAN-GET SEQUENCE NUMBER FOR ERROR ID
         CNOP  0,4                     SET UP ALIGNMENT
         L     2,CVTPTR                GET CVT ADDR
         L     2,CVTRTMCT(2)           GET ADDR OF RTCT
         L     0,RTCTRFLG(2)           GET ORIGINAL VALUE
IHBC&SYSNDX LR    1,0                  MOVE TO REGISTER FOR PROCESSING
         LR    2,0                     SAVE ORIGINAL VALUE
         SLDL  0,16                    MOVE HI-2 BYTES TO REG0
         SLL   0,16                    MOVE TO HI-ORDER BYTES IN REG0
         SRL   1,16                    PUT SEQ# IN LOW ORDER BYTES
         LA    1,1(1)                  INCREMENT COUNTER
         SLL   1,16                    SHIFT OUT ADD OVERFLOW FOR HALF
         SRL   1,16                    RETURN COUNTER TO ORIGINAL POS.
         OR    1,0                     PUT NEW VALUE IN REG1
         LR    0,2                     PUT ORIGINAL VALUE IN REG2
         L     2,CVTPTR                GET CVT ADDR
         L     2,CVTRTMCT(2)           GET ADDR OF RTCT
         CS    0,1,RTCTRFLG(2)         TRY TO SET NEW SEQ NUMBER
         BNE   IHBC&SYSNDX             IF NOT SUCCESSFUL--RETRY
         SLL   1,16                    MOVE OUT NON-SEQ# BYTES
         SRL   1,16                    RETURN SEQ TO ORIGINAL POS.
         AIF   ('&SEQADDR' EQ '').NOSTORE
         LR    0,1                     SAVE ANSWER IN REG 0
         IHBINNRA &SEQADDR             PUT ANSWER ADDR IN REG 1
         STH   0,0(1)                SAVE SEQUENCE NUMBER VALUE
.NOSTORE MEXIT
         MEND
./ ADD NAME=GETSRB
* %/*** START-OF-SPECIFICATIONS ***************************************
.*                                                                    *
.*01* MACRO-NAME = GETSRB                                             *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = GET SRB                                      *
.*                                                                    *
.*01* COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1980,                 *
.*               LICENSED MATERIAL PROGRAM,                           *
.*               PROPERTY OF IBM,                                     *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = USED BY SUPERVISOR ROUTINES TO OBTAIN AN SRB FROM    *
.*               THE SUPERVISOR SRB POOL.                             *
.*                                                                    *
.*01* MODULE-TYPE = MACRO  (BILINGUAL)                                *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER/PLS COMPILER                              *
.*                                                                    *
.*02* MACRO-SIZE = 155 LOC                                            *
.*                                                                    *
.*01* MACROS = IHBERMAC                                               *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G381PXY - CROSS MEMORY SUPPORT               *
.*                                                                    *
.*** END-OF-SPECIFICATIONS ********************************************
.* A-000000-999999                                             @G381PXY
.*
         MACRO
&LABEL   GETSRB &TYPE=,&REGS=
.*
*        MACDATE = 80.029
.*
.**********************************************************************
.*       DECLARE VARIABLES                                            *
.**********************************************************************
         LCLC  &OP1,&OP2               IHBERMAC OPERANDS
.*
.**********************************************************************
.*       POSITIONAL PARAMETERS ARE NOT ALLOWED                        *
.**********************************************************************
         AIF   (N'&SYSLIST NE 0 ).ERR1
.*
.**********************************************************************
.*       &TYPE MUST BE SPECIFIED AS 'UNCOND', 'COND', OR 'EXPAND'     *
.**********************************************************************
         AIF   ('&TYPE' EQ '').ERR2
         AIF   ('&TYPE' EQ 'UNCOND').REGS
         AIF   ('&TYPE' EQ 'COND').REGS
         AIF   ('&TYPE' NE 'EXPAND').ERR3
.*
.**********************************************************************
.*       &REGS MUST BE SPECIFIED AS 'SAVE' OR 'USE'                   *
.**********************************************************************
.REGS    ANOP
         AIF   ('&REGS' EQ '').ERR4
         AIF   ('&REGS' EQ 'USE').GEN
         AIF   ('&REGS' NE 'SAVE').ERR5
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND - BEFORE GETSRB CALL        *
.**********************************************************************
.GEN     ANOP
         AIF   ('&LABEL' EQ '').NOLABEL
&LABEL   DC    0H'0'
.*
.NOLABEL ANOP
         AIF   ('&REGS' EQ 'USE').TYPE
.*
.*       &REGS = SAVE
         STM   2,5,0(13)               .SAVE USERS REGISTERS 2-5
         STM   11,12,16(13)            .SAVE USERS REGISTERS 11-12
         LR    5,13                    .SAVE ADDRESS OF SAVE AREA
.*
.**********************************************************************
.*       CODE EXPANSION FOR &TYPE OPERAND                             *
.**********************************************************************
.TYPE    ANOP
         AIF   ('&TYPE' EQ 'UNCOND').UNCOND
         AIF   ('&TYPE' EQ 'COND').COND
.*
.*       &TYPE = EXPAND
         LA    1,8                     .REG 1 VALUE FOR EXPAND REQUEST
         AGO   .LINK
.*
.*       &TYPE = COND
.COND    ANOP
         LA    1,4                     .REG 1 VALUE FOR COND REQUEST
         AGO   .LINK
.*
.*       &TYPE = UNCOND
.UNCOND  ANOP
         SLR   1,1                     .REG 1 VALUE FOR UNCOND REQUEST
.*
.**********************************************************************
.*       GENERATE LINKAGE TO GETSRB SERVICE ROUTINE                   *
.**********************************************************************
.LINK    ANOP
         L     15,PSASVT-PSA(0,0)      .SVT ADDRESS
         L     15,SVTSRBG-SVT(0,15)    .GETSRB ENTRY ADDRESS
         BALR  14,15                   .CALL GETSRB
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND - AFTER GETSRB CALL         *
.**********************************************************************
         AIF   ('&REGS' EQ 'USE').EXIT
.*
.*       &REGS = SAVE
         LR    13,5                    .RESTORE SAVE AREA ADDRESS
         LM    2,5,0(13)               .RESTORE USERS REGISTERS 2-5
         LM    11,12,16(13)            .RESTORE USERS REGISTERS 11-12
.EXIT    ANOP
         MEXIT
.*
.**********************************************************************
.*       MACRO INVOCATION ERRORS                                      *
.**********************************************************************
.*
.*       INVALID POSITIONAL PARAMETER SPECIFIED
.ERR1    ANOP
&OP1     SETC   'POSITIONAL'
         IHBERMAC 1014,&OP1
         MEXIT
.*
.*       TYPE OPERAND REQUIRED, NOT SPECIFIED
.ERR2    ANOP
&OP1     SETC   'TYPE'
         IHBERMAC 1006,&OP1
         MEXIT
.*
.*       INVALID &TYPE PARAMETER SUPPLIED
.ERR3    ANOP
&OP1     SETC   'TYPE'
&OP2     SETC   '&TYPE'
         IHBERMAC 1001,&OP1,&OP2
         MEXIT
.*
.*       REGS OPERAND REQUIRED, NOT SPECIFIED
.ERR4    ANOP
&OP1     SETC   'REGS'
         IHBERMAC 1006,&OP1
         MEXIT
.*
.*       INVALID &REGS PARAMETER SUPPLIED
.ERR5    ANOP
&OP1     SETC   'REGS'
&OP2     SETC   '&REGS'
         IHBERMAC 1001,&OP1,&OP2
         MEND
* */
* GETSRB: MACRO KEYS(TYPE,REGS);
*
*        /* VARIABLE DECLARES */
*
*        DCL EHAREGS CHAR EXT;         /*REGS DCLD BY EPILOG*/
*        DCL EHAMAPS CHAR EXT;         /*REG SAVE AREA DCLD BY EPILOG*/
*        DCL VAL CHAR;                 /*GETSRB TYPE INDICATOR*/
*        DCL RC FIXED;                 /*MACRO GEN SEVERITY CODE*/
*        DCL CMT CHAR;                 /*DO-END COMMENT*/
*
*        /* GENERATE MACRO INVOCATION */
*
*        IF MACLABEL^='' THEN          /*LABEL ON MACRO CALL?*/
*          ANS(MACLABEL) COL(MACLMAR); /*YES: GEN LABEL*/
*        CMT='?'MACLABEL' 'MACNAME' 'MACLISTMACKEYS
*        ' MACDATE(78.290)';
*        ANS ('DO; 'COMMENT(CMT)) SKIP COL(MACCOL);
*
*        /* INITIALIZE MACRO RETURN CODE */
*
*        RC=12;                        /*MACRO ERROR UNTIL CHANGED*/
*
*        /* POSITIONAL PARAMETERS ARE NOT ALLOWED */
*
*        IF NUMBER(MACLIST)^=0 THEN    /*ANY POSITIONAL PARAMETERS?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0023  ''MACLIST'' IS INVALID WITH GETSRB.'
*            ' NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  ''MACLIST'' IS INVALID WITH GETSRB.'
*            ' NO TEXT IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* TYPE PARAMETER MUST BE SPECIFIED AS 'UNCOND', 'COND', OR
*           'EXPAND' */
*
*        IF TYPE='' THEN               /*TYPE SUPPLIED?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0013  ''TYPE'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0013  ''TYPE'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*YES: CONTINUE*/
*
*        IF NUMBER(TYPE)>1 THEN        /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  TYPE'TYPE' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');          /*MSOURCE MSG*/
*            ANS ('/*AHA0033  TYPE'TYPE' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        IF TYPE(1)='UNCOND' THEN      /*TYPE VALID?*/
*          DO;                         /*YES: SET INDICATOR*/
*            VAL='0';                  /*TYPE(UNCOND) INDICATOR*/
*            GOTO LHA00500;
*          END;                        /*CONTINUE*/
*
*        IF TYPE(1)='COND' THEN        /*TYPE VALID?*/
*          DO;                         /*YES: SET INDICATOR*/
*            VAL='4';                  /*TYPE(COND) INDICATOR*/
*            GOTO LHA00500;
*          END;                        /*CONTINUE*/
*
*        IF TYPE(1)^='EXPAND' THEN     /*TYPE VALID?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0023  'TYPE(1)' IS INVALID WITH '
*            '''TYPE''. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  'TYPE(1)' IS INVALID WITH '
*            '''TYPE''. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        VAL='8';                      /*TYPE(EXPAND) INDICATOR*/
*
*        /* REGS PARAMETER MUST BE SPECIFIED AS 'SAVE' OR 'USE' */
*
* LHA00500: ;
*
*        IF REGS='' THEN               /*REGS SUPPLIED?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*YES: CONTINUE*/
*
*        IF NUMBER(REGS)>1 THEN        /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');          /*MSOURCE MSG*/
*            ANS ('/*AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        IF REGS(1)='SAVE' THEN        /*REGS VALID?*/
*          GOTO LHA01000;              /*YES: CONTINUE*/
*
*        IF REGS(1)^='USE' THEN        /*REGS VALID?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* GENERATE LINKAGE CODE */
*
* LHA01000: ;
*
*        RC=0;                         /*NO MACRO ERROR FOUND*/
*
*        IF REGS(1)='SAVE' THEN        /*SAVE USERS REGS?*/
*          DO;                         /*YES: GEN SAVE*/
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) RSTD; '
*            '/*RESTRICT REGS USED BY GETSRB*/') SKIP COL(MACCOL+2);
*            ANS('STM(GPR02F,GPR05F,GPR13P->SA@); /*SAVE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('STM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*SAVE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('GPR05F=GPR13P; /*SAVE ADDRESS OF SAVE AREA*/')
*            SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*          'GPR12F,GPR13P) RSTD; /*RESTRICT REGS USED BY GETSRB*/')
*          SKIP COL(MACCOL+2);
*
*        ANS('GPR01F='VAL'; /*SET TYPE OPTION*/') SKIP
*            COL(MACCOL+2);
*        ANS('CALL IEAVSPM1; /*CALL GETSRB EP*/') SKIP COL(MACCOL+2);
*
*        IF REGS(1)='SAVE' THEN        /*RESTORE USERS REGS?*/
*          DO;                         /*YES: GEN RESTORE*/
*            ANS('GPR13P=GPR05F; /*RESTORE SAVE AREA ADDRESS*/')
*            SKIP COL(MACCOL+2);
*            ANS('LM(GPR02F,GPR05F,GPR13P->SA@); /*RESTORE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('LM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*RESTORE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) UNRSTD; '
*            '/*UNRESTRICT REGS*/') SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*          'GPR12F,GPR13P) UNRSTD; /*UNRESTRICT REGS*/')
*          SKIP COL(MACCOL+2);
*
*        /* REQUEST GLOBAL VARIABLE DECLARES FROM EPILOG */
*
*        IF INDEX(EHAREGS,'00F')=0 THEN /*DCL FOR R0 REQUESTED?*/
*          EHAREGS=EHAREGS'00F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'01F')=0 THEN /*DCL FOR R1 REQUESTED?*/
*          EHAREGS=EHAREGS'01F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'02F')=0 THEN /*DCL FOR R2 REQUESTED?*/
*          EHAREGS=EHAREGS'02F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'11F')=0 THEN /*DCL FOR R11 REQUESTED?*/
*          EHAREGS=EHAREGS'11F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'12F')=0 THEN /*DCL FOR R12 REQUESTED?*/
*          EHAREGS=EHAREGS'12F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'13P')=0 THEN /*DCL FOR R13 REQUESTED?*/
*          EHAREGS=EHAREGS'13P';     /* NO: REQUEST IT*/
*
*        IF REGS(1)='USE' THEN         /*REGS(USE)?*/
*          DO;                         /*YES: DCL REGS USED*/
*            IF INDEX(EHAREGS,'03F')=0 THEN /*DCL FOR R3 REQUESTED?*/
*              EHAREGS=EHAREGS'03F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAREGS,'04F')=0 THEN /*DCL FOR R4 REQUESTED?*/
*              EHAREGS=EHAREGS'04F'; /* NO: REQUEST IT*/
*          END;
*        ELSE                          /*REGS(SAVE)*/
*          DO;                         /*DCL REG AND SAVEAREA*/
*            IF INDEX(EHAREGS,'05F')=0 THEN /*DCL FOR R5 REQUESTED?*/
*              EHAREGS=EHAREGS'05F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAMAPS,'SA@')=0 THEN /*SAVEAREA DCL REQUESTED?*/
*              EHAMAPS=EHAMAPS'SA@,'; /* NO: REQUEST IT*/
*          END;
*
*LHA03000: ;
*
*        ANS ('END; 'COMMENT(CMT)) SKIP COL(MACCOL);
*        RETURN CODE(RC);              /*MACRO END*/
*%       END GETSRB;
./ ADD NAME=GETSSRB
* %/*** START-OF-SPECIFICATIONS ***************************************
.*                                                                    *
.*01* MACRO-NAME = GETSSRB                                            *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = GET SSRB                                     *
.*                                                                    *
.*01* COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1980,                 *
.*               LICENSED MATERIAL PROGRAM,                           *
.*               PROPERTY OF IBM,                                     *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = USED BY SUPERVISOR ROUTINES TO OBTAIN AN SSRB FROM   *
.*               THE SUPERVISOR SSRB POOL.                            *
.*                                                                    *
.*01* MODULE-TYPE = MACRO  (BILINGUAL)                                *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER/PLS COMPILER                              *
.*                                                                    *
.*02* MACRO-SIZE = 105 LOC                                            *
.*                                                                    *
.*01* MACROS = IHBERMAC                                               *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G381PXY - CROSS MEMORY SUPPORT               *
.*                                                                    *
.*** END-OF-SPECIFICATIONS ********************************************
.* A-000000-999999                                             @G381PXY
.*
         MACRO
&LABEL   GETSSRB &REGS=
.*
*        MACDATE = 80.029
.*
.**********************************************************************
.*       DECLARE VARIABLES                                            *
.**********************************************************************
         LCLC  &OP1,&OP2               IHBERMAC OPERANDS
.*
.**********************************************************************
.*       POSITIONAL PARAMETERS ARE NOT ALLOWED                        *
.**********************************************************************
         AIF   (N'&SYSLIST NE 0 ).ERR1
.*
.**********************************************************************
.*       &REGS MUST BE SPECIFIED AS 'SAVE' OR 'USE'                   *
.**********************************************************************
.REGS    ANOP
         AIF   ('&REGS' EQ '').ERR2
         AIF   ('&REGS' EQ 'USE').GEN
         AIF   ('&REGS' NE 'SAVE').ERR3
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND - BEFORE GETSSRB CALL       *
.**********************************************************************
.GEN     ANOP
         AIF   ('&LABEL' EQ '').NOLABEL
&LABEL   DC    0H'0'
.*
.NOLABEL ANOP
         AIF   ('&REGS' EQ 'USE').LINK
.*
.*       &REGS = SAVE
         STM   2,5,0(13)               .SAVE USERS REGISTERS 2-5
         STM   11,12,16(13)            .SAVE USERS REGISTERS 11-12
         LR    5,13                    .SAVE ADDRESS OF SAVE AREA
.*
.**********************************************************************
.*       GENERATE LINKAGE TO GETSSRB SERVICE ROUTINE                  *
.**********************************************************************
.LINK    ANOP
         L     15,PSASVT-PSA(0,0)      .SVT ADDRESS
         L     15,SVTSSRBG-SVT(0,15)   .GETSSRB ENTRY ADDRESS
         BALR  14,15                   .CALL GETSSRB
.*
.**********************************************************************
.*       CODE EXPANSION FOR &REGS OPERAND - AFTER GETSSRB CALL        *
.**********************************************************************
         AIF   ('&REGS' EQ 'USE').EXIT
.*
.*       &REGS = SAVE
         LR    13,5                    .RESTORE SAVE AREA ADDRESS
         LM    2,5,0(13)               .RESTORE USERS REGISTERS 2-5
         LM    11,12,16(13)            .RESTORE USERS REGISTERS 11-12
.EXIT    ANOP
         MEXIT
.*
.**********************************************************************
.*       MACRO INVOCATION ERRORS                                      *
.**********************************************************************
.*
.*       INVALID POSITIONAL PARAMETER SPECIFIED
.ERR1    ANOP
&OP1     SETC   'POSITIONAL'
         IHBERMAC 1014,&OP1
         MEXIT
.*
.*       REGS OPERAND REQUIRED, NOT SPECIFIED
.ERR2    ANOP
&OP1     SETC   'REGS'
         IHBERMAC 1006,&OP1
         MEXIT
.*
.*       INVALID &REGS PARAMETER SUPPLIED
.ERR3    ANOP
&OP1     SETC   'REGS'
&OP2     SETC   '&REGS'
         IHBERMAC 1001,&OP1,&OP2
         MEND
* */
* GETSSRB: MACRO KEYS(REGS);
*
*        /* VARIABLE DECLARES */
*
*        DCL EHAREGS CHAR EXT;         /*REGS DCLD BY EPILOG*/
*        DCL EHAMAPS CHAR EXT;         /*REG SAVE AREA DCLD BY EPILOG*/
*        DCL RC FIXED;                 /*MACRO GEN SEVERITY CODE*/
*        DCL CMT CHAR;                 /*DO-END COMMENT*/
*
*        /* GENERATE MACRO INVOCATION */
*
*        IF MACLABEL^='' THEN          /*LABEL ON MACRO CALL?*/
*          ANS(MACLABEL) COL(MACLMAR); /*YES: GEN LABEL*/
*        CMT='?'MACLABEL' 'MACNAME' 'MACLISTMACKEYS
*        ' MACDATE(78.290)';
*        ANS ('DO; 'COMMENT(CMT)) SKIP COL(MACCOL);
*
*        /* INITIALIZE MACRO RETURN CODE */
*
*        RC=12;                        /*MACRO ERROR UNTIL CHANGED*/
*
*        /* POSITIONAL PARAMETERS ARE NOT ALLOWED */
*
*        IF NUMBER(MACLIST)^=0 THEN    /*ANY POSITIONAL PARAMETERS?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0023  ''MACLIST'' IS INVALID WITH GETSSRB.'
*            ' NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  ''MACLIST'' IS INVALID WITH GETSSRB.'
*            ' NO TEXT IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* REGS PARAMETER MUST BE SPECIFIED AS 'SAVE' OR 'USE' */
*
*        IF REGS='' THEN               /*REGS SUPPLIED?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0013  ''REGS'' IS REQUIRED BUT IS NOT '
*            'SUPPLIED. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*YES: CONTINUE*/
*
*        IF NUMBER(REGS)>1 THEN        /*EXCESSIVE VALUES SUPPLIED?*/
*          DO;                         /*YES: ERROR*/
*            ANS MSG('AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.');         /*MSOURCE MSG*/
*            ANS ('/*AHA0033  REGS'REGS' IS TOO LONG. NO TEXT '
*            'IS GENERATED.*/') SKIP COL(10); /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        IF REGS(1)='SAVE' THEN        /*REGS VALID?*/
*          GOTO LHA01000;              /*YES: CONTINUE*/
*
*        IF REGS(1)^='USE' THEN        /*REGS VALID?*/
*          DO;                         /*NO: ERROR*/
*            ANS MSG('AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.'); /*MSOURCE MSG*/
*            ANS ('/*AHA0023  'REGS(1)' IS INVALID WITH '
*            '''REGS''. NO TEXT IS GENERATED.*/')
*            SKIP COL(10);             /*TEXT MSG*/
*            GOTO LHA03000;
*          END;                        /*NO: CONTINUE*/
*
*        /* GENERATE LINKAGE CODE */
*
* LHA01000: ;
*
*        RC=0;                         /*NO MACRO ERROR FOUND*/
*
*        IF REGS(1)='SAVE' THEN        /*SAVE USERS REGS?*/
*          DO;                         /*YES: GEN SAVE*/
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) RSTD; '
*            '/*RESTRICT REGS USED BY GETSSRB*/') SKIP COL(MACCOL+2);
*            ANS('STM(GPR02F,GPR05F,GPR13P->SA@); /*SAVE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('STM(GPR11F,GPR12F,GPR13P->SA@(17:24)); /*SAVE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('GPR05F=GPR13P; /*SAVE ADDRESS OF SAVE AREA*/')
*            SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*          'GPR12F,GPR13P) RSTD; /*RESTRICT REGS USED BY GETSSRB*/')
*          SKIP COL(MACCOL+2);
*
*        ANS('CALL IEAVSPM2; /*CALL GETSSRB EP*/') SKIP COL(MACCOL+2);
*
*        IF REGS(1)='SAVE' THEN        /*RESTORE USERS REGS?*/
*          DO;                         /*YES: GEN RESTORE*/
*            ANS('GPR13P=GPR05F; /*RESTORE SAVE AREA ADDRESS*/')
*            SKIP COL(MACCOL+2);
*            ANS('LM(GPR02F,GPR05F,GPR13P->SA@);/*RESTORE CALLERS '
*            'REGS 2-5*/') SKIP COL(MACCOL+2);
*            ANS('LM(GPR11F,GPR12F,GPR13P->SA@(17:24));/*RESTORE '
*            'CALLERS REGS 11-12*/') SKIP COL(MACCOL+2);
*            ANS('RFY (GPR00F,GPR01F,GPR05F,GPR13P) UNRSTD; '
*            '/*UNRESTRICT REGS*/') SKIP COL(MACCOL+2);
*          END;
*        ELSE                          /*NO: MUST BE REGS(USE)*/
*          ANS('RFY (GPR00F,GPR01F,GPR02F,GPR03F,GPR04F,GPR11F,'
*          'GPR12F,GPR13P) UNRSTD; /*UNRESTRICT REGS*/')
*          SKIP COL(MACCOL+2);
*
*        /* REQUEST GLOBAL VARIABLE DECLARES FROM EPILOG */
*
*        IF INDEX(EHAREGS,'00F')=0 THEN /*DCL FOR R0 REQUESTED?*/
*          EHAREGS=EHAREGS'00F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'01F')=0 THEN /*DCL FOR R1 REQUESTED?*/
*          EHAREGS=EHAREGS'01F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'02F')=0 THEN /*DCL FOR R2 REQUESTED?*/
*          EHAREGS=EHAREGS'02F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'11F')=0 THEN /*DCL FOR R11 REQUESTED?*/
*          EHAREGS=EHAREGS'11F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'12F')=0 THEN /*DCL FOR R12 REQUESTED?*/
*          EHAREGS=EHAREGS'12F';     /* NO: REQUEST IT*/
*        IF INDEX(EHAREGS,'13P')=0 THEN /*DCL FOR R13 REQUESTED?*/
*          EHAREGS=EHAREGS'13P';     /* NO: REQUEST IT*/
*
*        IF REGS(1)='USE' THEN         /*REGS(USE)?*/
*          DO;                         /*YES: DCL REGS USED*/
*            IF INDEX(EHAREGS,'03F')=0 THEN /*DCL FOR R3 REQUESTED?*/
*              EHAREGS=EHAREGS'03F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAREGS,'04F')=0 THEN /*DCL FOR R4 REQUESTED?*/
*              EHAREGS=EHAREGS'04F'; /* NO: REQUEST IT*/
*          END;
*        ELSE                          /*REGS(SAVE)*/
*          DO;                         /*DCL REG AND SAVEAREA*/
*            IF INDEX(EHAREGS,'05F')=0 THEN /*DCL FOR R5 REQUESTED?*/
*              EHAREGS=EHAREGS'05F'; /* NO: REQUEST IT*/
*            IF INDEX(EHAMAPS,'SA@')=0 THEN /*SAVEAREA DCL REQUESTED?*/
*              EHAMAPS=EHAMAPS'SA@,'; /* NO: REQUEST IT*/
*          END;
*
*LHA03000: ;
*
*        ANS ('END; 'COMMENT(CMT)) SKIP COL(MACCOL);
*        RETURN CODE(RC);              /*MACRO END*/
*%       END GETSSRB;
./ ADD NAME=GLOBAL
         MACRO
         GLOBAL
         GBLB  &E536454
&E536454 SETB  1
         MEND
./ ADD NAME=GOIF1
         MACRO
&NAME    GOIF1 &LOC,&CMP,&EQ=,&NE=,&GT=,&LT=,&GE=,&LE=,&MODE=,         ,
               &ZERO=,&NOTZERO=,&POS=,&NOTPOS=,&NEG=,&NOTNEG=,&ELSE=
         LCLA  &W(4)
         LCLB  &B(3)
         LCLC  &R
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* INNER MACRO TO GOIF. GENERATES THE INSTRUCTIONS IF A
.* SWITCH IS TO BE TESTED
.*
         AIF   (K'&LOC EQ 0).ERR1
&W(1)    SETA  4
&W(2)    SETA  2
&W(3)    SETA  13
&W(4)    SETA  11
&B(1)    SETB  ('&EQ' NE '')
&B(2)    SETB  ('&NE' NE '')
&B(3)    SETB  ('&NE' NE '')
         AIF   ('&GT' EQ '').C1
         AIF   (&B(3)).ERR3
&B(3)    SETB  1
.C1      AIF   ('&LT' EQ '').C2
         AIF   (&B(2)).ERR3
&B(2)    SETB  1
.C2      AIF   ('&GE' EQ '').C3
         AIF   (&B(1) OR &B(3)).ERR3
&B(1)    SETB  1
&B(3)    SETB  1
.C3      AIF   ('&LE' EQ '').C4
         AIF   (&B(1) OR &B(2)).ERR3
&B(1)    SETB  1
&B(2)    SETB  1
.C4      AIF   (NOT(&B(1) AND &B(2) AND &B(3))OR '&ELSE' EQ '').C5
.ERR3    MNOTE 8,'REDUNDANT LOGIC, MACRO EXPANSION ATTEMPTED.'
.C5      AIF   (K'&CMP EQ 0).C6
.*
.*                       TWO OPERANDS SUPPLIED
.*
         AIF   ('&LOC'(1,1) EQ '(' AND '&LOC'(K'&LOC,1) EQ ')').RG1
         AIF   ('&CMP'(1,1) EQ '(' AND '&CMP'(K'&CMP,1) EQ ')').RG2
         AIF   (T'&CMP NE 'U').SS
.*
.*                       OPERAND 2 IS ASSUMED TO BE IMMEDIATE
.*
&NAME    CLI   &LOC,&CMP
         AGO   .C7
.*
.*                       ONE OPERAND ONLY
.*
.C6      AIF   ('&LOC'(1,1) EQ '(' AND '&LOC'(K'&LOC,1) EQ ')').LTR
&NAME    CLI   V&LOC,&LOC
.C7      AIF   (K'&ZERO+K'&NOTZERO+K'&POS+K'&NOTPOS+K'&NEG+K'&NOTNEG EQ,
                0).C7A
         MNOTE 8,'CALL CONTAINS OTHER THAN RELATIONAL CONDITIONS.'
.C7A     AIF   ('&EQ' EQ '').LE
         AIF   ('&EQ'EQ'&NE'OR'&EQ'EQ'&GT'AND'&EQ'EQ'&LT').ALL
         AIF   ('&EQ' EQ '&LT').LE1
         AIF   ('&EQ' EQ '&GT').GE1
         AIF   ('&EQ'(1,1) NE '(').EQ2
&R       SETC  'R'
.EQ2     BC&R  8,&EQ(1)                 BRANCH PER MACRO CALL
&R       SETC  ''
.LE      AIF   ('&LE' EQ '').GE
         AIF   ('&LE' EQ '&GT').ALL1
         AIF   ('&LE'(1,1) NE '(').LE2
&R       SETC  'R'
.LE2     BC&R  &W(3),&LE(1)             BRANCH PER MACRO CALL
&R       SETC  ''
         AGO   .GE
.LE1     AIF   ('&EQ'(1,1) NE '(').LE3
&R       SETC  'R'
.LE3     BC&R  &W(3),&EQ(1)             BRANCH PER MACRO CALL
&R       SETC  ''
.GE      AIF   ('&GE' EQ '').LT
         AIF   ('&GE' EQ '&LT').ALL2
         AIF   ('&GE'(1,1) NE '(').GE2
&R       SETC  'R'
.GE2     BC&R  &W(4),&GE(1)             BRANCH PER MACRO CALL
&R       SETC  ''
         AGO   .LT
.GE1     AIF   ('&EQ'(1,1) NE '(').GE3
&R       SETC  'R'
.GE3     BC&R  &W(4),&EQ(1)             BRANCH PER MACRO CALL
&R       SETC  ''
.LT      AIF   ('&LT' EQ '').NE
         AIF   ('&LT' EQ '&GT').NE1
         AIF   ('&LT'(1,1) NE '(').LT2
&R       SETC  'R'
.LT2     BC&R  &W(1),&LT(1)             BRANCH PER MACRO CALL
&R       SETC  ''
.NE      AIF   ('&NE' EQ '').GT
         AIF   ('&NE'(1,1) NE '(').NE2
&R       SETC  'R'
.NE2     BC&R  7,&NE(1)                 BRANCH PER MACRO CALL
&R       SETC  ''
         AGO   .END
.NE1     AIF   ('&LT'(1,1) NE '(').NE3
&R       SETC  'R'
.NE3     BC&R  7,&LT(1)                 BRANCH PER MACRO CALL
&R       SETC  ''
.GT      AIF   ('&GT' EQ '').END
         AIF   ('&GT'(1,1) NE '(').GT2
&R       SETC  'R'
.GT2     BC&R  &W(2),&GT(1)             BRANCH PER MACRO CALL
&R       SETC  ''
.END     AIF   ('&ELSE' EQ '').MEND
         AIF   ('&ELSE'(1,1) NE '(').ELSE2
&R       SETC  'R'
.ELSE2   BC&R  15,&ELSE(1)              BRANCH PER MACRO CALL
         MEXIT
.ALL     AIF   ('&EQ'(1,1) NE '(').ALL01
&R       SETC  'R'
.ALL01   BC&R  15,&EQ(1)                BRANCH PER MACRO CALL
         MEXIT
.ALL1    AIF   ('&LE'(1,1) NE '(').ALL11
&R       SETC  'R'
.ALL11   BC&R  15,&LE(1)                BRANCH PER MACRO CALL
         MEXIT
.ALL2    AIF   ('&GE'(1,1) NE '(').ALL21
&R       SETC  'R'
.ALL21   BC&R  15,&GE(1)                BRANCH PER MACRO CALL
         MEXIT
.LTRC    AIF   ('&ZERO'(1,1) NE '(').LTRV
&R       SETC  'R'
.LTRV    BC&R  15,&ZERO(1)              BRANCH PER MACRO CALL
         MEXIT
.LTRX    AIF   ('&NOTPOS'(1,1) NE '(').LTRZ
&R       SETC  'R'
.LTRZ    BC&R  15,&NOTPOS(1)            BRANCH PER MACRO CALL
         MEXIT
.LTRY    AIF   ('&NOTNEG'(1,1) NE '(').LTRW
&R       SETC  'R'
.LTRW    BC&R  15,&NOTNEG(1)            BRANCH PER MACRO CALL
         MEXIT
.RG1     AIF   ('&CMP'(1,1) EQ '(' AND '&CMP'(K'&CMP,1) EQ ')').RG12
         AIF   (L'&CMP NE 2).LNOT2
&NAME    CH    &LOC(1),&CMP
         AGO   .C7
.LNOT2   AIF   (L'&CMP EQ 4).LEQ4
         MNOTE *,'LENGTH ATTRIBUTE OF &CMP NOT 2 OR 4.'
.LEQ4    AIF   ('&MODE'(1,1) EQ 'A').NOTLOG
&NAME    CL    &LOC(1),&CMP
         AGO   .C7
.NOTLOG  ANOP
&NAME    C     &LOC(1),&CMP
         AGO   .C7
.RG2     AIF   (L'&LOC NE 2).LNOT22
&NAME    CH    &CMP(1),&LOC
         AGO   .C7R
.LNOT22  AIF   (L'&LOC EQ 4).LEQ42
         MNOTE *,'LENGTH ATTRIBUTE OF &LOC NOT 2 OR 4.'
.LEQ42   AIF   ('&MODE'(1,1) EQ 'A').NOTLOG2
&NAME    CL    &CMP(1),&LOC
         AGO   .C7R
.NOTLOG2 ANOP
&NAME    C     &CMP(1),&LOC
.C7R     ANOP
&W(1)    SETA  2
&W(2)    SETA  4
&W(3)    SETA  11
&W(4)    SETA  13
         AGO   .C7
.RG12    AIF   ('&MODE'(1,1) EQ 'A').RG12A
&NAME    CLR   &LOC(1),&CMP(1)
         AGO   .C7
.RG12A   ANOP
&NAME    CR    &LOC(1),&CMP(1)
         AGO   .C7
.SS      ANOP
&NAME    CLC   &LOC,&CMP
         AGO   .C7
.LTR     ANOP
&NAME    LTR   &LOC(1),&LOC(1)
         AIF   (&B(1)+&B(2)+&B(3) EQ 0).LTRA
         MNOTE 8,'CALL CONTAINS RELATIONAL CONDITIONS.'
.LTRA    AIF   (('&ZERO'EQ''OR'&NOTZERO'EQ''OR'&ELSE'EQ'')AND('&ZERO'EQ,
               ''OR'&POS'EQ''OR'&NEG'EQ''OR'&ELSE'EQ'')AND('&NOTPOS'EQ''
               'OR'&NEG'EQ''OR'&ELSE'EQ'')).LTRM
         MNOTE 8,'REDUNDANT LOGIC, MACRO EXPANSION ATTEMPTED.'
.LTRM    AIF   ('&NOTNEG'EQ''OR'&POS'EQ''OR'&ELSE'EQ'').LTRN
         MNOTE 8,'REDUNDANT LOGIC, MACRO EXPANSION ATTEMPTED.'
.LTRN    AIF   ('&NOTPOS' EQ '').LTRO
         AIF   ('&NOTPOS' EQ 'NEG').LTRX
         AIF   ('&NOTPOS'(1,1) NE '(').LTRP
&R       SETC  'R'
.LTRP    BC&R  13,&NOTPOS(1)            BRANCH PER MACRO CALL
&R       SETC  ''
.LTRO    AIF   ('&NOTNEG' EQ '').LTRQ
         AIF   ('&NOTNEG' EQ '&POS').LTRY
         AIF   ('&NOTNEG'(1,1) NE '(').LTRR
&R       SETC  'R'
.LTRR    BC&R  11,&NOTNEG(1)            BRANCH PER MACRO CALL
&R       SETC  ''
.LTRQ    AIF   ('&ZERO' EQ '').LTRB
         AIF   ('&ZERO' EQ '&NOTZERO' AND '&ZERO' EQ '&POS' AND '&ZERO',
                EQ '&NEG').LTRC
         AIF   ('&ZERO'(1,1) NE '(').LTRD
&R       SETC  'R'
.LTRD    BC&R  8,&ZERO(1)               BRANCH PER MACRO CALL
&R       SETC  ''
.LTRB    AIF   ('&NEG' EQ '').LTRE
         AIF   ('&NEG' EQ '&POS').LTRF
         AIF   ('&NEG'(1,1) NE '(').LTRG
&R       SETC  'R'
.LTRG    BC&R  4,&NEG(1)                 BRANCH PER MACRO CALL
&R       SETC  ''
.LTRE    AIF   ('&NOTZERO' EQ '').LTRH
         AIF   ('&NOTZERO'(1,1) NE '(').LTRI
&R       SETC  'R'
.LTRI    BC&R  7,&NOTZERO(1)            BRANCH PER MACRO CALL
&R       SETC  ''
         AGO   .LTRH
.LTRF    AIF   ('&POS'(1,1) NE '(').LTRK
&R       SETC  'R'
.LTRK    BC&R  7,&POS(1)                BRANCH PER MACRO CALL
&R       SETC  ''
.LTRH    AIF   ('&POS' EQ '').END
         AIF   ('&POS'(1,1) NE '(').LTRJ
&R       SETC  'R'
.LTRJ    BC&R  2,&POS(1)                BRANCH PER MACRO CALL
&R       SETC  ''
         AGO   .END
.ERR1    MNOTE 8,'REQUIRED OPERANDS NOT SUPPLIED.'
.MEND    MEND
./ ADD NAME=GOIF3
         MACRO
&NAME    GOIF3 &SW,&ALL=,&NONE=,&MIX=,&NOTALL=,&ANY=,&NOTMIX=,         X
               &ELSE=,&ON=,&OFF=
         GBLA  &INDEX
         GBLC  &BYTE,&CRNT
         GBLC  &DEFNAME(255),&SWNAME(255)
         LCLA  &COUNT1,&COUNT2
         LCLB  &FIRST,&COND(3),&USED(6),&TM,&MASK(3)
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* INNER MACRO TO GOIF. GENERATES THE INSTRUCTIONS
.* IF THE FIELD TO TEST IS NOT A SWITCH
.*
 LCLC    &PLUS(7)
.NXT1    ANOP
         AIF   (N'&SW EQ 1).SNGL .      ONLY ONE SWITCH
.NXT1A   ANOP
&COND(1) SETB  0
&COND(2) SETB  0
&COND(3) SETB  0
         AIF   (&USED(1) AND &USED(2) AND &USED(3) AND &USED(4) AND &USX
               ED(5) AND &USED(6)).GEN1
&FIRST   SETB  0
.ALL     AIF   (&USED(1)).NONE
         AIF   (K'&ALL EQ 0).ALL3
&COND(1) SETB  1 .                      BRANCH CONDITION ONES
&FIRST   SETB  1
&CRNT    SETC  '&ALL(1)'
&USED(1) SETB  1
.NONE    AIF   (&USED(2)).MIX
         AIF   (K'&NONE EQ 0).NONE3
         AIF   (&FIRST).NONE2
&COND(2) SETB  1 .                      BRANCH CONDITION ZEROS
&FIRST   SETB  1
&CRNT    SETC  '&NONE(1)'
&USED(2) SETB  1
         AGO   .MIX
.NONE2   AIF   ('&CRNT' NE '&NONE').MIX
&USED(2) SETB  1
&COND(2) SETB  1
.MIX     AIF   (&USED(3)).NOTALL
         AIF   (K'&MIX EQ 0).MIX3
         AIF   (&FIRST).MIX2
&FIRST   SETB  1
&CRNT    SETC  '&MIX(1)'
&USED(3) SETB  1
&COND(3) SETB  1 .                      BRANCH CONDITION MIXED
         AGO   .NOTALL
.MIX2    AIF   ('&CRNT' NE '&MIX').NOTALL
&COND(3) SETB  1
&USED(3) SETB  1
.NOTALL  AIF   (&USED(4)).ANY
         AIF   (K'&NOTALL EQ 0).NOTALL3
         AIF   (&FIRST).NOTALL2
&FIRST   SETB  1
&CRNT    SETC  '&NOTALL(1)'
&USED(4) SETB  1
&COND(2) SETB  1 .                      BRANCH CONDITION ZEROS
&COND(3) SETB  1 .                      BRANCH CONDITION MIXED
         AGO   .ANY
.NOTALL2 AIF   ('&CRNT' NE '&NOTALL').ANY
&USED(4) SETB  1
&COND(2) SETB  1
&COND(3) SETB  1
.ANY     AIF   (&USED(5)).NOTMIX
         AIF   (K'&ANY EQ 0).ANY3
         AIF (&FIRST).ANY2
&FIRST   SETB  1
&CRNT    SETC  '&ANY(1)'
&USED(5) SETB  1 .                      THIS OPTION USED
&COND(1) SETB  1 .                      BRANCH CONDITION ONES
&COND(3) SETB  1 .                      BRANCH CONDITION MIXED
         AGO   .NOTMIX
.ANY2    AIF   ('&CRNT' NE '&ANY').NOTMIX
&USED(5) SETB  1
&COND(1) SETB  1
&COND(3) SETB  1
.NOTMIX  AIF   (&USED(6)).GEN
         AIF   (K'&NOTMIX EQ 0).NOTMIX3
         AIF   (&FIRST).NOTMIX2
&FIRST   SETB  1
&CRNT    SETC  '&NOTMIX(1)'
&USED(6) SETB  1 .                      OPTION USED
&COND(1) SETB  1 .                      BRANCH CONDITION ONES
&COND(2) SETB  1 .                      BRANCH CONDITION ZEROS
         AGO   .GEN
.NOTMIX2 AIF   ('&CRNT' NE '&NOTMIX').GEN
&USED(6) SETB  1
&COND(1) SETB  1
&COND(2) SETB  1
.NOTMIX3 ANOP
&USED(6) SETB  1
         AGO   .GEN
.ANY3    ANOP
&USED(5) SETB  1
         AGO   .NOTMIX
.NOTALL3 ANOP
&USED(4) SETB  1
         AGO   .ANY
.MIX3    ANOP
&USED(3) SETB  1
         AGO   .NOTALL
.NONE3   ANOP
&USED(2) SETB  1
         AGO   .MIX
.ALL3    ANOP
&USED(1) SETB  1
         AGO   .NONE
.GEN     ANOP
         AIF   ('&CRNT' EQ '&ELSE').NXT1
.GEN1    AIF   (&TM).GEN2 .             IF ALREADY GEN'D TM
         AIF   ('&SW' EQ '').GEN2       NO SWITCHES, DON'T DO TM
         AIF   (K'&SW(2) EQ 0).ZIP1
&PLUS(1) SETC  '+'
.ZIP1    AIF   (K'&SW(3) EQ 0).ZIP2
&PLUS(2) SETC  '+'
.ZIP2    AIF   (K'&SW(4) EQ 0).ZIP3
&PLUS(3) SETC  '+'
.ZIP3    AIF   (K'&SW(5) EQ 0).ZIP4
&PLUS(4) SETC  '+'
.ZIP4    AIF   (K'&SW(6) EQ 0).ZIP5
&PLUS(5) SETC  '+'
.ZIP5    AIF   (K'&SW(7) EQ 0).ZIP6
&PLUS(6) SETC  '+'
.ZIP6    AIF   (K'&SW(8) EQ 0).ZIP7
&PLUS(7) SETC  '+'
.ZIP7    ANOP
&NAME    TM    &BYTE,&SW(1)&PLUS(1)&SW(2)&PLUS(2)&SW(3)&PLUS(3)&SW(4)&PX
               LUS(4)&SW(5)&PLUS(5)&SW(6)&PLUS(6)&SW(7)&PLUS(7)&SW(8)
&TM      SETB  1 .                      FLAG AS GENERATED
.GEN2    ANOP
         AIF   (NOT &COND(1) AND NOT &COND(2) AND NOT &COND(3)).NOP    X
                                        NO CONDITIONS, MAY BE A NOP
         AIF   (&COND(2) AND &COND(3)).BNO
         AIF   (&COND(1) AND &COND(3)).BNZ
         AIF   (&COND(1) AND &COND(2)).BNM
         AIF   (&COND(1)).BO
         AIF   (&COND(2)).BZ
         AIF   (&COND(3)).BM
&MASK(1) SETB  1
&MASK(2) SETB  1
&MASK(3) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BA1
         B     &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1 .                  GO BACK FOR MORE
.BA1     BR    &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1
.BO      AIF   (&MASK(1)).ERR4
&MASK(1) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BO1
         BO    &CRNT                    BRANCH PER MACRO CALL
 AGO     .NXT1
.BO1     BCR   1,&CRNT                  BRANCH PER MACRO CALL
         AGO   .NXT1
.BZ      AIF   (&MASK(2)).ERR4
&MASK(2) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BZ1
         BZ    &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1
.BZ1     BCR   8,&CRNT                  BRANCH PER MACRO CALL
         AGO   .NXT1
.BM      AIF   (&MASK(3)).ERR4
&MASK(3) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BM1
         BM    &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1
.BM1     BCR   4,&CRNT                  BRANCH PER MACRO CALL
         AGO   .NXT1
.BNO     AIF   (&MASK(2) OR &MASK(3)).ERR4
&MASK(2) SETB  1
&MASK(3) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BNO1
         BNO   &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1
.BNO1    BCR   14,&CRNT                 BRANCH PER MACRO CALL
         AGO   .NXT1
.BNZ     AIF   (&MASK(1) OR &MASK(3)).ERR4
&MASK(1) SETB  1
&MASK(3) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BNZ1
         BNZ   &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1
.BNZ1    BCR   7,&CRNT                  BRANCH PER MACRO CALL
         AGO   .NXT1
.BNM     AIF   (&MASK(1) OR &MASK(2)).ERR4
&MASK(1) SETB  1
&MASK(2) SETB  1
         AIF   ('&CRNT'(1,1) EQ '(').BNM1
         BNM   &CRNT                    BRANCH PER MACRO CALL
         AGO   .NXT1
.BNM1    BCR   11,&CRNT                 BRANCH PER MACRO CALL
         AGO   .NXT1
.ERR4    ANOP
         MNOTE 8,'REDUNDANT LOGIC--CONDITION USED MORE THAN ONCE'
         AGO   .DONE
.ERR10   ANOP
         MNOTE 8,'OPTIONS ARE ONLY LEGAL FOR MULTIPLE SWITCH'
         AGO   .SNGL3
.ERR3    ANOP
.OUT     ANOP
.NOP     ANOP
.DONE    AIF   (K'&ELSE EQ 0).DONE2
         AIF   (&MASK(1) AND &MASK(2) AND &MASK(3)).ERR4
         AIF   ('&ELSE'(1,1) EQ '(').DONE3
         B     &ELSE                    BRANCH PER MACRO CALL
.DONE2   MEXIT
.DONE3   BR    &ELSE                    BRANCH PER MACRO CALL
         MEXIT
.SNGL    ANOP
         AIF   ('&MIX' NE '' OR '&NOTMIX' NE '').ERR10
.SNGL3   ANOP
&NAME    TM    &BYTE,&SW
         AIF   ((K'&ON NE 0) AND (K'&OFF NE 0)).B2
         AIF   ((K'&ON EQ 0) AND (K'&OFF EQ 0)).NOP
         AIF   (K'&ON EQ 0).SNGL2
         AIF   ('&ON'(1,1) EQ '(').BO91
         BO    &ON                      BRANCH PER MACRO CALL
         AGO   .DONE
.BO91    BCR   1,&ON(1)                 BRANCH PER MACRO CALL
         AGO   .DONE
.SNGL2   ANOP
         AIF   ('&OFF'(1,1) EQ '(').BZ91
         BZ    &OFF                     BRANCH PER MACRO CALL
         AGO   .DONE
.BZ91    BCR   8,&OFF(1)                BRANCH PER MACRO CALL
         AGO   .DONE
.B2      AIF   ('&ON' EQ '&OFF').B3
         AIF   ('&ON'(1,1) EQ '(').B20
         BO    &ON                      BRANCH PER MACRO CALL
         AGO   .B21
.B20     BCR   1,&ON(1)                 BRANCH PER MACRO CALL
.B21     AIF   ('&OFF'(1,1) EQ '(').B23
         BZ    &OFF                     BRANCH PER MACRO CALL
         AGO   .DONE
.B23     BCR   8,&OFF(1)                BRANCH PER MACRO CALL
         AGO   .DONE
.B3      ANOP
         AIF   ('&ON'(1,1) EQ '(').B30
         B     &ON                      BRANCH PER MACRO CALL
         AGO   .DONE
.B30     BR    &ON(1)                   BRANCH PER MACRO CALL
         AGO   .DONE
         MEND
./ ADD NAME=GOIF
         MACRO
&NAME    GOIF  &SW, .                   SWITCH TO BE TESTED            X
               &SW2, .                  COMPARAND FOR CLC OR CLI       X
               &GT=, .                  BRANCH GREATER                 X
               &GE=, .                  BRANCH GREATER OR EQUAL        X
               &EQ=, .                  BRANCH EQUAL                   X
               &LE=, .                  BRANCH LESS OR EQUAL           X
               &LT=, .                  BRANCH LESS                    X
               &NE=, .                  BRANCH NOT EQUAL               X
               &ZERO=, .                STATUS CONDITION               X
               &NOTZERO=, .             STATUS CONDITION               X
               &POS=, .                 STATUS CONDITION               X
               &NOTPOS=, .              STATUS CONDITION               X
               &NEG=, .                 STATUS CONDITION               X
               &NOTNEG=, .              STATUS CONDITION               X
               &MODE=L, .               STATUS CONDITION               X
               &NO=, .                  SWITCH OFF                     X
               &YES=, .                 SWITCH ON                      X
               &EQUAL=, .               ALTERNATE FOR EQ               X
               &NOTEQ=, .               ALTERNATE FOR NE               X
               &ALL=, .                 BRANCH IF ALL ON               X
               &NONE=, .                BRANCH IF NONE ON              X
               &MIX=, .                 BRANCH IF SOME ON (BUT NOT ALL)X
               &NOTALL=, .              BRANCH IF NONE OR SOME         X
               &ANY=, .                 H NOT ALL OFF (ANY OR ALL ON)  X
               &NOTMIX=, .              BRANCH IF ALL ON OR ALL OFF    X
               &ELSE=, .                UNCONDITIONAL FINAL BRANCH     X
               &ON=, .                  BRANCH IF SINGLE SWITCH ON     X
               &OFF=, .                 BRANCH IF SINGLE SWITCH OFF    X
               &HIGH=,&HI=,&NOTLO=,&NOTLOW=,&LOW=,&LO=,&NOTHI=,        X
               &NOTHIGH=
         GBLA  &INDEX
         GBLC  &BYTE,&CRNT
         GBLC  &DEFNAME(255),&SWNAME(255)
         LCLA  &COUNT1,&COUNT2
         LCLB  &FIRST,&COND(3),&USED(6),&TM,&MASK(3)
         LCLB  &NULL
         LCLC  &PLUS(7)
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* GENERATES INSTRUCTIONS TO TEST A GIVEN CONDITION
.* AND BRANCH IF THE BRANCH CONDITION IS SATISFIED
.*
         AIF   (N'&SW GT 8).ERR1 .      TOO MANY SWITCHES
&COUNT1  SETA  0 .                      INITIALIZE FOR VALIDITY CHECK
.LOOP1   ANOP
&COUNT1  SETA  &COUNT1+1 .              NEXT OPERAND
         AIF   (&COUNT1 GT N'&SW).NXT1 . DONE
&COUNT2  SETA  0 .                      INITIALIZE SWNAME LOOKUP
.LOOP2   ANOP
&COUNT2  SETA  &COUNT2+1 .              NEXT IN SWNAME LIST
         AIF   (&COUNT2 GT &INDEX).ERR2 . DIDN'T FIND NAME
         AIF   ('&SW(&COUNT1)' EQ '&SWNAME(&COUNT2)').LOOP3 FOUND NAME
         AGO   .LOOP2
.ERR2    ANOP  , .                      LOG NO NAME FOUND
         AIF   (N'&SW GT 1).ERR2A
&NAME    GOIF1 &SW,&SW2,GT=&GT&HI&HIGH,GE=&GE&NOTLOW&NOTLO,            X
               EQ=&EQ&EQUAL,LE=&LE&NOTHIGH&NOTHI,LT=&LT&LOW&LO,        X
               ZERO=&ZERO,              STATUS CONDITION               X
               NOTZERO=&NOTZERO,        STATUS CONDITION               X
               POS=&POS,                STATUS CONDITION               X
               NOTPOS=&NOTPOS,          STATUS CONDITION               X
               NEG=&NEG,                STATUS CONDITION               X
               NOTNEG=&NOTNEG,          STATUS CONDITION               X
               MODE=&MODE,              STATUS CONDITION               X
               NE=&NE&NOTEQ,ELSE=&ELSE
         MEXIT
.ERR2A   MNOTE 8,'UNDECLARED BIT SWITCH OR MORE THAN ONE CLI SWITCH'
         MEXIT
.ERR1    ANOP
         MNOTE 8,'TOO MANY SWITCHES, ONLY 8 ALLOWED PER CALL'
         MEXIT
.LOOP3   ANOP
         AIF   (&FIRST).SECOND .        FIRST TIME THROUGH
&FIRST   SETB  1 .                      YES
&BYTE    SETC  '&DEFNAME(&COUNT2)' .    SAVE THE NAME
         AGO   .LOOP1 .                 BACK FOR MORE
.SECOND  ANOP
         AIF   ('&DEFNAME(&COUNT2)' EQ '&BYTE').LOOP1
         MNOTE 8,'SWITCHES NOT ALL IN THE SAME BYTE'
         MEXIT
.NXT1    ANOP
&NAME    GOIF3 &SW,                                                    X
               ALL=&ALL&YES&ON,                                        X
               NONE=&NONE&NO&OFF,                                      X
               MIX=&MIX,                                               X
               NOTALL=&NOTALL,                                         X
               ANY=&ANY,                                               X
               NOTMIX=&NOTMIX,                                         X
               ELSE=&ELSE,                                             X
               ON=&ALL&YES&ON,                                         X
               OFF=&NONE&NO&OFF
         MEND
./ ADD NAME=GOTO
         MACRO
&LABEL   GOTO  &ROUTINE
.*
         GBLC  &X0(26)
         GBLC  &X1(26)
         GBLC  &X2(26)
         GBLC  &X3(26)
         GBLC  &X4(26)
         GBLC  &X5(26)
         GBLC  &X6(26)
         GBLC  &X7(26)
         GBLC  &X8(26)
         GBLC  &X9(26)
         GBLC  &XA(26)
         GBLC  &XB(26)
         GBLC  &XC(26)
         GBLC  &XD(26)
         GBLC  &XE(26)
         GBLC  &XF(26)
.*
         LCLC  &PHASEID
         LCLA  &I
.*
.*             CHANGES TO RELEASE 3
.*             CHANGES TO RELEASE 2
.*             CHANGES TO RELEASE 1
.*
.* GENERATES A BRANCH AND LINK TO A SUBROUTINE
.* WHICH NAME IS DEFINED IN THE EXTERNAL NAME
.* ARRAY BUILT BY CONTAINS
.*
         AIF   (K'&ROUTINE EQ 0 OR N'&SYSLIST GT 1).ERR1
.*
.X0      AIF   ('&X0(1)' EQ '').INT
&PHASEID SETC  '&X0(1)'(4,5)
&I       SETA  2
.X01     AIF   ('&X0(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X1
&I       SETA  &I+1
         AIF   ('&X0(&I)' NE '').X01
.*
.X1      AIF   ('&X1(1)' EQ '').INT
&PHASEID SETC  '&X1(1)'(4,5)
&I       SETA  2
.X11     AIF   ('&X1(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X2
&I       SETA  &I+1
         AIF   ('&X1(&I)' NE '').X11
.*
.X2      AIF   ('&X2(1)' EQ '').INT
&PHASEID SETC  '&X2(1)'(4,5)
&I       SETA  2
.X21     AIF   ('&X2(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X3
&I       SETA  &I+1
         AIF   ('&X2(&I)' NE '').X21
.*
.X3      AIF   ('&X3(1)' EQ '').INT
&PHASEID SETC  '&X3(1)'(4,5)
&I       SETA  2
.X31     AIF   ('&X3(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X4
&I       SETA  &I+1
         AIF   ('&X3(&I)' NE '').X31
.*
.X4      AIF   ('&X4(1)' EQ '').INT
&PHASEID SETC  '&X4(1)'(4,5)
&I       SETA  2
.X41     AIF   ('&X4(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X5
&I       SETA  &I+1
         AIF   ('&X4(&I)' NE '').X41
.*
.X5      AIF   ('&X5(1)' EQ '').INT
&PHASEID SETC  '&X5(1)'(4,5)
&I       SETA  2
.X51     AIF   ('&X5(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X6
&I       SETA  &I+1
         AIF   ('&X5(&I)' NE '').X51
.*
.X6      AIF   ('&X6(1)' EQ '').INT
&PHASEID SETC  '&X6(1)'(4,5)
&I       SETA  2
.X61     AIF   ('&X6(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X7
&I       SETA  &I+1
         AIF   ('&X6(&I)' NE '').X61
.*
.X7      AIF   ('&X7(1)' EQ '').INT
&PHASEID SETC  '&X7(1)'(4,5)
&I       SETA  2
.X71     AIF   ('&X7(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X8
&I       SETA  &I+1
         AIF   ('&X7(&I)' NE '').X71
.*
.X8      AIF   ('&X8(1)' EQ '').INT
&PHASEID SETC  '&X8(1)'(4,5)
&I       SETA  2
.X81     AIF   ('&X8(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).X9
&I       SETA  &I+1
         AIF   ('&X8(&I)' NE '').X81
.*
.X9      AIF   ('&X9(1)' EQ '').INT
&PHASEID SETC  '&X9(1)'(4,5)
&I       SETA  2
.X91     AIF   ('&X9(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XA
&I       SETA  &I+1
         AIF   ('&X9(&I)' NE '').X91
.*
.XA      AIF   ('&XA(1)' EQ '').INT
&PHASEID SETC  '&XA(1)'(4,5)
&I       SETA  2
.XA1     AIF   ('&XA(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XB
&I       SETA  &I+1
         AIF   ('&XA(&I)' NE '').XA1
.*
.XB      AIF   ('&XB(1)' EQ '').INT
&PHASEID SETC  '&XB(1)'(4,5)
&I       SETA  2
.XB1     AIF   ('&XB(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XC
&I       SETA  &I+1
         AIF   ('&XB(&I)' NE '').XB1
.*
.XC      AIF   ('&XC(1)' EQ '').INT
&PHASEID SETC  '&XC(1)'(4,5)
&I       SETA  2
.XC1     AIF   ('&XC(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XD
&I       SETA  &I+1
         AIF   ('&XC(&I)' NE '').XC1
.*
.XD      AIF   ('&XD(1)' EQ '').INT
&PHASEID SETC  '&XD(1)'(4,5)
&I       SETA  2
.XD1     AIF   ('&XD(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XE
&I       SETA  &I+1
         AIF   ('&XD(&I)' NE '').XD1
.*
.XE      AIF   ('&XE(1)' EQ '').INT
&PHASEID SETC  '&XE(1)'(4,5)
&I       SETA  2
.XE1     AIF   ('&XE(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XF
&I       SETA  &I+1
         AIF   ('&XE(&I)' NE '').XE1
.*
.XF      AIF   ('&XF(1)' EQ '').INT
&PHASEID SETC  '&XF(1)'(4,5)
&I       SETA  2
.XF1     AIF   ('&XF(&I)' EQ '&ROUTINE').EXT
         AIF   (&I EQ 26).XG
&I       SETA  &I+1
         AIF   ('&XF(&I)' NE '').XF1
.*
.XG      ANOP
.*
.INT     ANOP
&LABEL   BAL   R9,&ROUTINE              GO TO ROUTINE
         MEXIT
.*
.*
.EXT     ANOP
&LABEL   L     R12,&PHASEID             GET ADDRESS OF PIVOT
         AIF   (&I EQ 2).EXT1
&I       SETA  &I*4-8
         BAL   R9,&I.(,R12)             GO TO ROUTINE
         MEXIT
.EXT1    BALR  R9,R12                   GO TO ROUTINE
         MEXIT
.ERR1    MNOTE 4,'ROUTINE NAME EXCESSIVE OR MISSING.'
.MEND    MEND
./ ADD NAME=GSPACE
             MACRO
&NAME        GSPACE &R,&LV=
.*****************************************************************
.*
.* MACRO NAME - GSPACE
.*
.* DESCRIPTIVE NAME -GET SPACE MACRO (THIS IS GETMAIN LIKE)
.*
.* COPYRIGHT - N/A
.*
.* STATUS - OS/VS2 REL. 3.7 PTF                                @ZA28413
.*
.* FUNCTION -
.*
.*   THE FUNCTION OF THIS MACRO IS TO SETUP THE INPUT REGS TO THE
.*   GSPACE SERVICE ROUTINE LOCATED IN MODULE IEFAB4F6.
.*
.*   OPERATION -
.*
.*      THIS MACRO REQUIRES - GSPACE R,LV=(0),A=(1)
.*      1) IF INVALID PARAMETERS PRINT MNOTE.
.*      2) INSERT CODE
.*      3) EXIT
.*
.* NOTES -
.*   DEPENDENCIES -
.*      THIS MACRO IS CALLED BY USING THE PL/S STACK OPTION.
.*      THEREFORE CHANGES TO PL/S MAY IMPACT THIS MACRO
.*      THE ONLY REGISTERS THE MACRO MAY ALTER ARE 0,1,14,15.
.*      A CHANGE TO SVC99'S CSECT NAME MEANS A CHANGE TO GSPACE@YM05157
.*
.*   RESTRICTIONS
.*      NONE.
.*   REGISTER CONVENTIONS -
.*      MAY ONLY USE 14 THRU 1
.*
.*   PATCH LABEL - N/A
.*
.* MODULE TYPE - MACRO
.*
.*   PROCESSER - ASSEM
.*   MODULE SIZE - N/A
.*   ATTRIBUTES - EXECUTABLE MACRO
.*
.* ENTRY POINT - N/A
.*
.* EXIT -
.*   R0- UNPREDICTABLE
.*   R1- ADDRESS RETURNED FROM GSPACE ROUTINE OR FROM GETMAIN
.*   R2-R13 NOT CHANGED
.*   R14 - UNPREDICTABLE
.*   R15 - UNPREDICTABLE
.*
.* EXTERNAL REFERENCES - NONE
.*
.* TABLES - NONE
.* MACROS - NONE
.*
.* CHANGE ACTIVITY - Y02670
.*                 - OZ28413                                  @ZA28413
.*
.* MESSAGES - SEE MNOTE IN MACRO CODE.
.*
.* ABEND CODES - NONE
.*
.*****************************************************************
.* GSPACE - C - MERGED BACK TO REL 3.7                         @ZA28413
             AIF   ('&R' EQ 'R' AND '&LV' EQ '(0)').OK
             MNOTE 4,'GSPACE PARAMETERS INVALID'
.OK          ANOP
             AIF   ('&SYSECT' NE 'IEFDB400' AND '&SYSECT' NE 'IEFBB401'*
                AND '&SYSECT' NE 'IEFBB410').OK1              @ZM41392
.* CSECTS IEFBB401, IEFBB410 HAVE UNPREDICTABLE REG 13.       @ZM41392
.* CSECT     IEFDB400(SVC99)  HAS AN UNPREDICTABLE REG 13     @YM05157
             SLR   1,1                                        @YM05157
             AGO   .OK2                                       @YM05157
.OK1         ANOP                                             @YM05157
             LR    1,13                SET ADDRESS IN REG 1
.OK2         ANOP                                             @YM05157
&NAME        L     15,GS&SYSNDX.C      SET GSPACE EP IN REG 15
             CNOP  2,4                 *
GS&SYSNDX.L  BALR  14,15               CALL GSPACE
             B     GS&SYSNDX.E         +0 RETURN IS NORMAL RETURN
             B     GS&SYSNDX.D         +4 RETURN REQUIRES GETMAIN
GS&SYSNDX.C  DC    V(GSPACE)           GSPACE PRIMARY ENTRY POINT
GS&SYSNDX.V  DC    V(GSPACE1)          GSPACE SECONDARY ENTRY POINT
GS&SYSNDX.D  SVC   10                  GETMAIN
             LTR   0,14                Q. IS RETURN TO GSPACE NECESSARY
             L     15,GS&SYSNDX.V      GET SECONDARY ENTRY POINT
             BNZ   GS&SYSNDX.L         A. YES. RETURN TO GSPACE
GS&SYSNDX.E  EQU   *                   *
             MEND
./ ADD NAME=GSPCB
         EJECT
GSPCB    DSECT
GSPGTMCB DS    F                   ADDRESS OF THE FIRST GTMCB
*                                  ON THE CHAIN
GSPDCTR2 DS    F                   ADDRESS OF PART 2 OF THE DIRECTOR
GSPSYSID DS    X                   BYTE TO SAY THIS IS A CONTROL BLK
*              X'F2'               SETTING
GSPCBID  DS    X                   ID TO SAY THIS IS A GSPCB
*              X'01'               SETTING
GSPBUSYS DS    X                   GSP BUSY SWITCH
*              X'00'               GSP NOT BUSY
*              X'FF'               GSP BUSY
GSPFLAGS DS    X                   ASSORTED FLAGS
*              X'01'               1=IN DE / 0= NOT IN DE
GSPDECNT DS    X                   COUNT OF DIRECT ENTRIES PENDING
GSPAWORK DS    F                   ADDRESS OF WORK AREA
GSPSTRTB DS    F                   ADDRESS OF THE STROKE TABLE
GSPARRAY DS    5F                  GSP RETURN ARRAY
GSPNULLV DS    F                   THE ADDRESS TO BE RECOGNIZED
*                                  AS THE ABSENCE OF A PARAMETER
GSPASTAT DS    F                   ADDRESS OF STATUS TABLE
GSPAEXIT DS    F                   ADDR OF USER EXIT RTN, INGSP ARG 3
./ ADD NAME=GTMCB
         EJECT
GTMCB    DSECT
GTMNXGTM DS    F                   ADDRESS OF THE NEXT GTMCB
GTMGSPCB DS    F                   ADDRESS OF THE GSPCB
GTMVALID DS    X                   BYTE TO SAY THIS IS A CONTROL BLK
*              X'F2'               SETTING
GTMTERID DS    X                   ID TO SAY THIS IS A GTMCB
*              X'02'               SETTING
GTMGTMCB DS    F                   ADDRESS OF THIS GTMCB
GTMGRDCB DS    F                   ADDRESS OF DCB
GTMGDSCB DS    F                   ADDRESS OF FIRST GDSCB ON TRM
GTMLATBL DS    F                   ADDRESS OF ACTIVE ATTN LEVEL
GTMGACBA DS    F                   ADDRESS OF GACB
GTMSYGDS DS    F                   ADDRESS OF SYSTEM GDSCB
GTMBCTBL DS    F                   ADDRESS OF BUFFER CTL TABLE
GTMFCTBL DS    F                   ADDRESS OF FLOW CTL TABLE
GTMPFKSS DS    F                   PROGRAM FUNCTION KEY STATUS
GTMFEATS DS    H                   CHARACTERISTICS OF THE DEVICE
*        BYTE  0
*              X'01'               MODEL 1 2250
*              X'02'               MODEL 2 2250
*              X'03'               MODEL 3 2250
*        BYTE  1
*              X'10'               PROGRAM FUNCTION KEYBOARD
*              X'20'               LIGHT PEN
*              X'40'               ALPHAMERIC KEYBOARD
*              X'80'               ABSOLUTE VECTORS
*              X'08'               CHARACTER GENERATOR
*              X'04'               GRAPHIC DESIGN FEATURE
GTMREPOS DS    H                   LOCATION OF REPOS VECT IN TRKG
GTMDECB1 DS    F                   ADDRESS OF THE SYSTEM DECB
GTMGDOAL DS    H                   GDOA LENGTH FOR GDS'S ON TERMINAL
*                                  MAY BE OVERRIDEN AT GDS LEVEL
GTMDVADR DS    H                   DEVICE ADDRESS (2E0,1D0,ETC.)
GTMATTNO DS    H                   ATTENTION OPTIONS
GTMCRLOC DS    H                   POINTER TO BUFFER LOCATION
*                                  TO CONTAIN CURSOR
GTMBCTSM DS    X                   INDEX TO UNIQUE NUMBER FOR
*                                  BUFFER MANAGEMENT
GTMBCTLG DS    X                   INDEX TO UNIQUE NUMBER FOR
*                                  BUFFER MANAGEMENT
GTMFLAGS DS    X                   ASSORTED FLAGS
*              X'08'               1=TRACKING IN / 0=NOT
*              X'04'               1=DE IN PROG / 0=DE NOT IN PROG
*              X'02'               1=DIRECT ENTRY PEND / 0=NOT
*              X'01'               1=CURSOR IN TRML / 0=NOT
GTMLIGHT DS    X                   LIGHT OPTION BYTE
*              X'02'               LIGHT PFK ZERO (DEFAULT)
*              X'03'               LIGHT ENABLED KEYS
*              X'04'               LIGHT AS PER LIGHT MASK(GTMPFKSS)
./ ADD NAME=HEWAPT
         MACRO
         HEWAPT &PARM
         EJECT
***********************************************************************
*                                                                     *
*    10/02/73          LEVEL=06                                       *
*                                                                     *
*                                ------------                         *
*            CODE GENERATION FOR - 10/02/73 - HEWAPT MACRO FOLLOWS    *
*                                ------------                         *
***********************************************************************
         AIF   ('&PARM' EQ 'A').CSECT
*** EQUATES FOR DSECT DEFINITIONS
HEWLKLED EQU  0
HEWLCLDB EQU   0
APTDSECT DSECT
.CSECT   ANOP
         DC    C'STARTAPT'
PDSE1    DS    CL8       MEMBER OR ALIAS NAME
PDSE2    DS    CL3       RELATIVE DA OF FIRST RECORD-TTR
PDSE3    DS    CL1       C-BYTE
*INITIAL VALUE=0    BIT   0   ALIAS INDICATOR
*INITIAL VALUE=0    BITS 1-2  NUMBER OF TTR'S IN USERS DATA
*INITIAL VALUE=0    BITS 3-7  LENGTH OF USERS DATA IN HALF WORDS
PDSE4    DS    CL4       RELATIVE DA OF FIRST TEXT RECORD TTR0
PDSE5    DS    CL3       RELATIVE DA OF NOTE LIST OR SCTR-XLATION TABLE
PDSE6    DS    CL1       L-BYTE-NUMBER OF TTR'S IF NOTE LIST PRESENT
*
PDSE7    DS    CL1       FIRST ATTRIBUTE BYTE
*
*INITIAL VALUE=0    BIT 0     REENTERABLE
*INITIAL VALUE=0    BIT 1     RESUABLE
*INITIAL VALUE=0    BIT 2     OVERLAY
*INITIAL VALUE=0    BIT 3     TEST
*INITIAL VALUE=0    BIT 4     ONLY LOADABLE
*INITIAL VALUE=0    BIT 5     BLOCK-SCATTER
*INITIAL VALUE=1    BIT 6     EXECUTABLE
*INITIAL VALUE=0    BIT 7     MODULE CONTAINS 1 TEXT RECORD + NO RLD'S
*
PDSE8    DS    CL1       SECOND ATTRIBUTE BYTE
*
*INITIAL VALUE=1    BIT 0     ON MEANS OUTPUT LOAD MOD NOT DC
*INITIAL VALUE=1    BIT 1     ORIGIN OF FIRST TEXT RECORD IS ZERO
*INITIAL VALUE=1    BIT 2     ENTRY POINT ASSIGN BY LINKAGE EDITOR IS 0
*INITIAL VALUE=1    BIT 3     MODULE CONTAINS NO RLD ITEMS
*INITIAL VALUE=0    BIT 4     MODULE CAN BE RE-PROCESSED BY LINKAGE ED.
*INITIAL VALUE=0    BIT 5     MODULE DOES NOT CONTAIN SYMBOL CARDS
*INITIAL VALUE=1    BIT 6     MODULE WAS CREATED BY LINK EDITOR F V2
*INITIAL VALUE=0    BIT 7     REFRESHABLE
*
PDSE9    DS    CL3       TOTAL CONTIGUOUS MAIN STORAGE REQUIREMENTS OF
*                        THIS MODULE
PDSE10   DS    CL2       LENGTH OF FIRST TEXT RECORD
PDSE11   DS    CL3       ENTRY POINT ADDRESS
PDSE12   DS    CL3       EDITOR ASSIGN ORIGIN OF FIRST TEXT RECORD
PDSAPFLG EQU   X'08'     THIS BIT ON IN FIRST BYTE OF PDSE12     Y01048
*                        INDICATES AUTH CODE IN LAST 2 BYTES     Y01048
*                        OF PDS DIRECTORY                        Y01048
****
**** THE FOLLOWING 4 ITEMS ARE FOR SCATTER FORMAT ONLY
****
PDSE13   DS    CL2       NUMBER OF BYTES IN SCATTER LIST
PDSE14   DS    CL2       NUMBER OF BYTES IN THE TRANSLATION TABLE
PDSE15   DS    CL2       ESDID OF THE FIRST TEXT RECORD
PDSE16   DS    CL2       ESDID OF THE CONTROL SECTION CONTAINING THE
*                        ENTRY POINT
****
**** THE FOLLOWING TWO ITEMS ARE INCLUDED WHEN AN ALIAS NAME IS SPECIFI
**** ED AND EITHER THE REENTERABLE OR REUSABLE OPTION IS SPECIFIED
****
PDSE17   DS    CL3       ENTRY POINT OF MAIN MEMBER NAME
PDSE18   DS    CL8       MEMBER NAME OF MODULE
****
**** THIS ENDS THE PARTITION DATA SET DIRECTORY
****
         SPACE 2
REGSA    DS    18F       18 FULL WORD SAVE AREA FOR DATA MANAGEMENT
IOCT     DS    6F        I/O CONTROL TABLE 4 BYTES PER ENTRY
*              ALSO USED AS STORAGE AREA BY HEWLFSCD AND HEWLFREL
*
APT0     DS    CL1       FIRST BYTE--ALL PURPOSE INDICATORS
*
*INITIAL VALUE=0    BIT 0     NCAL
*INITIAL VALUE=0    BIT 1     XREF
*INITIAL VALUE=0    BIT 2     MAP
*INITIAL VALUE=0    BIT 3     LET
*INITIAL VALUE=0    BIT 4     LOG
*INITIAL VALUE=0    BIT 5     XCAL
*INITIAL VALUE=0    BIT 6     TXT/RLD
*INITIAL VALUE=0   BIT 7     SOME LIBRARY CARD WAS READ
*
APT1     DS    CL1       SECOND BYTE--ALL PURPOSE INDICATORS
*
*INITIAL VALUE=0    BIT 0     MORE INCLUDE TO COME
*INITIAL VALUE=0    BIT 1     AUTO-LIB CALL IN OPERATION
*INITIAL VALUE=0    BIT 2     OBJECT OR LOAD MODULE
*INITIAL VALUE=0    BIT 3     DELETE INDICATOR
*INITIAL VALUE=0    BIT 4     ENTRY POINT RECEIVED
*INITIAL VALUE=1    BIT 5     SYMBOLIC OR ABSOLUTE ENTRY
*INITIAL VALUE=0    BIT 6     ENTRY CARD RECEIVED
*INITIAL VALUE=0    BIT 7     ESD-WRITE INDICATOR
*
APT2     DS    CL1       THIRD BYTE--ALL PURPOSE INDICATORS
*
*INITIAL VALUE=0    BIT 0     NO LENGTH RECEIVED
*INITIAL VALUE=0    BIT 1     NO LENGTH INDICATION
*INITIAL VALUE=0    BIT 2     FIRST TEXT RECORD
*INITIAL VALUE=0    BIT 3     STATUS INDICATOR RECEIVED
*INITIAL VALUE=0    BIT 4    INCLUDE PREVIOUSLY INITIATED
*INITIAL VALUE=0    BIT 5     I/O OVERLAP BIT
*INITIAL VALUE=0    BIT 6     IN MODULE INDICATOR
*INITIAL VALUE=0    BIT 7     PROGRAMMER PUNCHED CARD CONTINUATION
*
APT3     DS    CL1       FOURTH BYTE--ALL PURPOSE INDICATORS
*
*INITIAL VALUE=0    BIT 0     END OF FILE
*INITIAL VALUE=0    BIT 1     NAME CARD RECEIVED-END OF INPUT FOR L.M.
*INITIAL VALUE=0    BIT 2      END OF INPUT  (/*) -END OF SYSLIN INPUT
*INITIAL VALUE=0    BIT 3     TO STOW AS REPLACEMENT
*INITIAL VALUE=0    BIT5      FIRST TEXT OF SEGMENT
*INITIAL VALUE=0    BIT 4     FIRST TEXT OF LOAD MODULE
*INITIAL VALUE=0    BIT 6     RLDS FOR GROUP
*INITIAL VALUE=0   BIT  7    SYSLIB OPENED
         SPACE 2
CTTR     DS    F         TTR0 FOR CESD(1ST RECORD) IF MAP OR XREF
CSNO     DS    H         CURRENT SEGMENT NUMBER
CRNO     DS    H         CURRENT REGION NUMBER
PRAL     DS    F         PSUEDO REGISTER ACCUMULATIVE LENGTH
         SPACE 2
*
***  ADDRESSES OF ALL TABLES USED DURING PROCESSING                 ***
*
FLCD     DS    F         ADDRESS OF FIRST LINE CESD LINES DELETED
RCCE     DS    F         ADDRESS OF END OF REPLACE/CHANGE CHAIN
RCCB     DS    F         ADDRESS OF REPLACE/CHANGE CHAIN BEGINNING
ALCB     DS    F         ADDRESS OF ALIAS CHAIN BEGINNING
OVCMBGAD DS    1F        ADDRESS OF OVERLAY CHAIN BEGINNING
SGT1     DS    1F        ADDRESS OF SEGTAB1 - 1
CLLT     DS    1F        ADDRESS OF CALLS LIST TABLE
TNT1     DS    1F        ADDRESS OF TEXT NOTE LIST 1
RNT1     DS    1F        ADDRESS OF RLD NOTE LIST 1
RLDINPAD DS    1F        ADDR. OR RLD INPUT BUFFER 1ST PASS
RECNT    DS    1F        ADDRESS OF RELOCATION CONSTANT TABLE - 4
*                        ALSO RENUMBERING TABLE - 4
TXTIO    DS    1F        ADDRESS OF TEXT I/O TABLE
ALAS     DS    1F        ADDRESS OF ALIAS TABLE
DLKT     DS    1F        ADDRESS OF DELINK TABLE - 5
CHESD    DS    1F        ADDRESS OF COMPOSITE ESD - 16
SELST    DS    1F        ADDRESS OF SECOND PASS ENTRY LIST
TNLS2    DS    1F        ADDRESS OF TEXT NOTE LIST 2
RNLS2    DS    1F        ADDRESS OF RLD NOTE LIST 2
TTRLIST  DS    1F        ADDRESS OF TTR LIST
RLDOUTBF DS    1F        ADDR. OF OUTPUT RLD BUFFER-2ND PASS
HIARADD  DS    1F        ADDRESS OF HIAR (HIERARCHY) TABLE
ORDRADR  DS    1F        ADDRESS OF ORDER TABLE                  S01904
         SPACE 2
INCBRKPT DS    1F         ADDRESS OF BREAKING POINT IN INCL CHAIN
CRRTINCL DS    1F       ADDRESS OF CURRENTLY INCLUDED ESD ITEM
         SPACE 2
*
***  CAPACITIES OF ALL TABLES USED DURING PROCESSING
*
ENRNX    DS    1H        MAX. NO. OF ENTRIES IN RNT TABLE
ENCDX    DS    1H        MAX. NO. OF ENTRIES IN C/HESD TABLES
ENT1X    DS    1H        MAX. NO. OF ENTRIES IN TEXT NOTE LIST 1
ENR1X    DS    1H        MAX. NO. OF ENTRIES IN RLD NOTE LIST 1
ENT2X    DS    1H        MAX. NO. OF ENTRIES IN TEXT NOTE LIST 2
ENR2X    DS    1H        MAX. NO. OF ENTRIES IN RLD NOTE LIST 2
ENTOX    DS    1H        MAX. NO. OF BYTES IN TEXT I/O TABLE
ENCLX    DS    1H        MAX. NO. OF BYTES IN CALLS LIST
ENDTX    DS    1H        MAX. NO. OF ENTRIES IN DELINK TABLE
ENS1X    DS    1H        MAX. NO. OF SEGMENTS
BUFSIZ   DS    1H        SIZE OF BUFFER
HESD     DS    1F        ADDRESS OF HESD TABLE - 8
ENELTX   DS    1H        MAX. NUMBER OF ENTRIES IN 2ND PASS ENTRY LIST
ENT1X1   DS    1H            MAX. NO. OF ENTRIES IN TEXT NOTE LIST 1
*        BEFORE REALLOCATION - USED ONLY IF TABLES WERE REALLOCATED
ENR1X1   DS    1H            MAX. NO. OF ENTRIES IN RLD NOTE LIST 1
*        BEFORE REALLOCATION - USED ONLY IF TABLES WERE REALLOCATED
         SPACE 2                                                 S21016
***********************************************************************
*                                                                     *
*          ADDITIONS TO THE ALL PURPOSE TABLE FOR IDR SUPPORT         *
*                                                              S21016 *
***********************************************************************
         SPACE 2                                                 S21016
IDRTRLEN DS    H                       MAXIMUM LENGTH OF IDR     S21016
*                                      TRANSLATOR DATA TABLE     S21016
IDRTILEN DS    H                       MAXIMUM LENGTH OF IDR    OX04245
*                                      TRANSLATOR ID TABLE      OX04245
IDRUDLEN DS    H                       MAXIMUM LENGTH OF IDR     S21016
*                                      USER DATA TABLE           S21016
IDRZPLEN DS    H                       MAXIMUM LENGTH OF IDR     S21016
*                                      IMASPZAP DATA TABLE       S21016
* THE FOLLOWING FOUR WORDS CAN NOT BE MOVED AFTER THEIR          XM4950
* RELATED IDR CONSTANTS AND CAN NOT BE SHUFFLED AS TO            XM4950
* ORDER WITHOUT SHUFFLING ALL OTHER IDR CONTANTS IN THE APT      XM4950
IDRTRTAB DS    F                       STARTING ADDRESS OF IDR   S21016
*                                      TRANSLATOR DATA TABLE     S21016
IDRTITAB DS    F                       STARTING ADDRESS OF IDR  OX04245
*                                      TRNSLATOR ID TABLE       OX04245
IDRUDTAB DS    F                       STARTING ADDRESS OF IDR   S21016
*                                      USER DATA TABLE           S21016
IDRZPTAB DS    F                       STARTING ADDRESS OF IDR   S21016
*                                      IMASPZAP DATA TABLE       S21016
IDRTREND DS    F                       ADDRESS OF NEXT AVAILABLE S21016
*                                      (UNUSED) BYTE OF IDR      S21016
*                                      TRANSLATOR DATA TABLE     S21016
IDRTIEND DS    F                       ADDRESS OF NEXT AVAIL    OX04245
*                                      (UNUSED) BYTE OF IDR     OX04245
*                                      TRANSLATOR ID TABLE      OX04245
IDRUDEND DS    F                       ADDRESS OF NEXT AVAILABLE S21016
*                                      (UNUSED) BYTE OF IDR USER S21016
*                                      DATA TABLE                S21016
IDRZPEND DS    F                       ADDRESS OF NEXT AVAILABLE S21016
*                                      (UNUSED) BYTE OF IDR      S21016
*                                      IMASPZAP DATA TABLE       S21016
         SPACE 2                                                 S21016
ENRLD2X  DS    1H        MAX. SIZE OF INPUT RLD BUFFER-1ST PASS
ENSPX    DC    H'0'      2 BYTES USED BY HEWLKOUT
LSTS     DS    1F L      LAST SEGMENT IN EACH REGION (REGION 1-4)
EPSM     DS    CL8       ENTRY POINT SYMBOL OR END CARD ADDRESS/SYMBOL
*              ALSO USED AS STORAGE AREA BY HEWLFSCD AND HEWLFREL
         SPACE 2
*
***  CURRENT USAGE OF ALL TABLES USED DURING PROCESSING             ***
*
ENT1C    DS    H         CURRENT NUMBER OF ENTRIES IN TXT NOTE LIST 1
ENR1C    DS    H         CURRENT NUMBER OF ENTRIES IN RLD NOTE LIST 1
ENITC    DS    H         CURRENT NUMBER OF BYTES IN TXT I/O CNTL TABLE
ENIRC    DS    H         CURRENT NUMBER OF BYTES IN RLD I/O CNTL TABLE
ENTOC    DS    H         CURRENT NUMBER OF BYTES IN TXT I/O TABLE
ENCLC    DS    H         CURRENT NUMBER OF BYTES IN CALLS LIST
ENS1C    DS    H         CURRENT NUMBER OF ENTRIES IN SEGTAB1
ENASC    DS    H         CURRENT NUMBER OF ENTRIES IN ALIAS TABLE
ENDTC    DS    H         CURRENT NUMBER OF ENTRIES IN DELINK TABLE
ENRNC    DS    H         CURRENT NUMBER OF ENTRIES IN RNT TABLE  XM1692
*                        ALWAYS EQUAL TO MAXIMUM NUMBER DUE TO LR
*                        PROCESSING WHICH MUST TURN ON DEPEND FLAGS
*                        FOR SD ITEMS NOT YET RECEIVED
ENCDC    DS    H         CURRENT NUMBER OF ENTRIES IN H/CESD TABLE
ENELTC   DS    H         CURRENT NUMBER OF ENTRIES IN 2PASS ENTRY LIST
ENT2C    DS    H         CURRENT NUMBER OF ENTRIES IN TXT NOTE LIST 2
ENR2C    DS    H         CURRENT NUMBER OF ENTRIES IN RLD NOTE LIST 2
ENSPC    DC    H'00'    HIGHEST SEGMENT NUMBER WITH TEXT
* THE FOLLOWING FOUR FIELDS MAY NOT BE MOVED IN THE APT
* TO A LOCATION THAT IS BEFORE THEIR RELATED IDR CONSTANTS
* THE HALFWORD FILLERS MUST BE LEFT IN AND THE ORDER OF
* THE OCCURRENCE OF THESE FIELDS CAN NOT BE CHANGED WITHOUT
* CHANGING THE ORDER OF ALL OTHER IDR CONSTANTS
         DS    0F
IDRTRCUR DS    H         CURR # BYTES IN IDR TRANS DATA TABLE    XM4950
         DS    0F
IDRTICUR DS    H         CURR # BYTES IN IDR TRANS ID TABLE     OX04245
         DS    0F                                               OX04245
IDRUDCUR DS    H         CURR # BYTES IN IDR USER DATA TABLE     XM4950
         DS    0F
IDRZPCUR DS    H         CURR # BYTES IN IDR ZAP DATA TABLE      XM4950
ORDRCUR  DS    H        CURRENT NUMBER OF BYTES IN ORDER TABLE   S01904
ORDRMAX  DS    H        MAX. NO. OF BYTES IN ORDER TABLE         S01904
BITMAP   DS    2F        BIT SWITCHES DENOTING ERROR MESSAGES LOGGED
BITMAP2  DS    2F        ADDITIONAL BIT SWITCHES DENOTING ERROR  S21016
*                        MESSAGES LOGGED                         S21016
LINECNT  DS    1H        LINES ON THIS PAGE
HISEV    DS    1H        HIGHEST SEVERITY MESSAGE
         SPACE 2
SYSRTN   DS    2F        TWO WDS FOR REGISTER 13-14 TO RETURN TO SCHED.
SPACES   DS    18F       SAVE AREA FOR TEMPORARY DEBUGGING
*              ALSO USED AS STORAGE AREA BY HEWLFSCD AND HEWLFREL
         AIF   ('&PARM' EQ 'A').DC3
ERDIG    DS    F         ADDRESS OF HEWLFLOG
         AGO   .DC4
.DC3     ANOP
ERDIG    DC    V(HEWLFLOG) ADDRESS OF HEWLFLOG
.DC4     ANOP
         AIF   ('&PARM' EQ 'A').DC31
ERDIGA   DS    F        ADDRESS OF HEWLFALK                      S01904
         AGO   .DC41
.DC31    ANOP
ERDIGA   DC    V(HEWLFALK)   ADDRESS OF HEWLFALK                 S01904
.DC41    ANOP
SSI      DS    1F        SYSTEM STATUS INDICATOR (FOR APT)
FFCADR   DS    1F        HIGHEST ADDRESS RETAINED BY ALLOCATOR
LIBNAME  DS    8C        NAME OF LIBRARY
LIBOPEN  DS    8C        NAME OF LIBRARY NOW OPEN
         AIF   ('&PARM' EQ 'A').DC11
         DS    H
         AGO   .DC12
.DC11    ANOP
APT000   BR    14         SYNAD FOR PRINTER
.DC12    ANOP
SAVATS   DS    3C        ATTRIBUTES SAVE AREA
         SPACE 2
APTSWS   DS    1C        SWITCHES
*                   BITS 0-3  SPARE
*INITIAL VALUE=0    BIT 4     BIT MAP PROCESSED
*INITIAL VALUE=0    BIT 5     LINKAGE EDITOR INPUT RECEIVED
*INITIAL VALUE=0    BIT 6     SYM RECEIVED
*INITIAL VALUE=0    BIT 7     ESD RECEIVED
TSOBIT   EQU   X'80'         TSO OR NOT                          S99999
CSTOW    EQU   X'40'         RESERVED FOR CSTOW OPTION           S99999
ABSREL   EQU   X'20'         0 -- RELOCATABLE                    S99999
*                            1 -- ABSOLUTE                       S99999
OVRDE    EQU   X'10'         DCBS OVERRIDE                       S99999
         SPACE 2
*
NEWSW    DC    XL1'00'        SWITCHES FOR DETERMINING CONTROL
*
*INITIAL VALUE=0    BIT 0     IF OFF INDICATES 1ST TIME IN INT
*INITIAL VALUE=1    BIT 1     MAP/XREF ENTERED FROM INTERMEDIATE PROC.
*                             IF 0, ENTERED FROM FINAL PROCESSOR
*INITIAL VALUE=0    BIT 2     ALL RLDS IN CORE
*                             IF 1, THE RLDS ARE NOT IN CORE
*INITIAL VALUE=0    BIT 3     MAP/XREF NOT IN CONTROL
*                             IF 1, MAP/XREF IN CONTROL
*INITIAL VALUE=0    BIT 4     NORMAL PRINTING ON SYSPRINT
*                             IF 1, ABORT IMMEDIATELY-NO PRINTING
*INITIAL VALUE=0    BIT 5     HIERARCHY
*INITIAL VALUE=0    BIT 6     SPARE
*INITIAL VALUE=0    BIT 7     INDICATES PURGE TO TXT/RLD PROCESSOR
         SPACE 2
*
NEWSW2   DC    XL1'00'        SWITCHES FOR SECOND PASS PROCESSING
*
*INITIAL VALUE=0    BIT0      MORE RLDS EXIST FOR CURRENT ID
*INITIAL VALUE=0    BIT1      SPLIT RLD IN OUTPUT BUFFER
*INITIAL VALUE=0    BIT2      R AND P POINTER HAS BEEN SAVED
*INITIAL VALUE=0    BIT3      RELATIVE RELOCATION FACTOR NEEDED
*                             IF 1, ABSOLUTE RELOCATION FACTOR NEEDED
*INITIAL VALUE=0    BIT4      SPLIT RLD HAS BEEN SAVED IN HESD PREFIX
*INITAIL VALUE=0    BIT5      NO RLDS EXIST FOR LAST TEXT OF SEGMENT
*                             OR LAST TEXT OF MODULE
*INITIAL VALUE=0    BIT6      SPLIT RLD IS PRECEDED BY R AND P PTRS.
*INITIAL VALUE=0    BIT7      R AND P PTRS FOR CURRENT CHAIN ARE IN BFR
         SPACE 2
APTSW2   DS    XL1           SWITCHES                            S99999
ENQBIT   EQU   X'80'         OFF=ENQ'ED; ON=NO ENQ               S99999
*        EQU   X'40'                   RESERVED
SHRSYSMD EQU   X'20'                   OFF = SYSLMOD NOT SHARED  A49330
*                                      ON = SYSLMOD SHARED DASD  A49330
REINTRY  EQU   X'10'                   OFF = FIRST TIME THRU INT A51444
*                                      ON = NOT FIRST TIME THRU  A51444
         SPACE 2                                                 S99999
APTSW3   DS    XL1           SWITCHES                            S99999
         SPACE 2                                                 S99999
APTSW4   DS    XL1           SWITCHES                            S99999
         EJECT
*****
*
*   EQUATES TO SUPPORT THE REALLOCATE CODE AND TO STANDARDIZE
*      THE CONSTANTS FOR TABLE SIZE AND WEIGHT COMPUTATION
*
*****
WT1      EQU   X'0000' WEIGHT FOR RLD INP BUF TABLE (1ST PASS)
WT2      EQU   X'0000' WEIGHT FOR ALIAS TABLE
WT3      EQU   X'0120' WEIGHT FOR CESD TABLE
WT4      EQU   X'0000' WEIGHT FOR HESD TABLE
WT5      EQU   X'0090' WEIGHT FOR HESD TABLE (SECOND)
WT6      EQU   X'0054' WEIGHT FOR TEXT NOTE LIST 2 TABLE
WT7      EQU   X'003A' WEIGHT FOR RLD NOTE LIST 2 TABLE
WT8      EQU   X'0030' WEIGHT FOR TEXT I/O TABLE
WT9      EQU   X'0048' WEIGHT FOR RNT/RELOC CONSTANT TABLES
WT10     EQU   X'0018' WEIGHT FOR DELINK TABLE
WT11     EQU   X'0000' WEIGHT FOR RLD O/P BUF TABLE (2ND PASS)
WT12     EQU   X'0015' WEIGHT FOR TEXT NOTE LIST 1 TABLE
WT13     EQU   X'000E' WEIGHT FOR RLD NOTE LIST 1 TABLE
WT14     EQU   X'001C' WEIGHT FOR ORDER TABLE
WT15     EQU   X'0012' WEIGHT FOR HIERARCHY TABLE
WT16     EQU   X'0000' WEIGHT FOR SEGMENT TABLE
WT17     EQU   X'0060' WEIGHT FOR CALLS LIST TABLE
WT18     EQU   X'0060' WEIGHT FOR ENTRY LIST TABLE
WT19     EQU   X'000C' WEIGHT FOR IDR TRANSLATOR DATA TABLE     OX04245
WT20     EQU   X'0058' WEIGHT FOR IDR USER DATA TABLE
WT21     EQU   X'002C' WEIGHT FOR IDR ZAP DATA TABLE
WT22     EQU   X'002D' WEIGHT FOR TRANSLATOR ID TABLE           OX04245
MIN1     EQU   X'0100' MINSIZE FOR RLD INP BUF TABLE (1ST PASS)
MIN2     EQU   X'00A0' MINSIZE FOR ALIAS TABLE
MIN3     EQU   X'1200' MINSIZE FOR CESD TABLE
MIN4     EQU   X'0008' MINSIZE FOR HESD TABLE
MIN5     EQU   X'0900' MINSIZE FOR HESD TABLE (SECOND)
MIN6     EQU   X'0540' MINSIZE FOR TEXT NOTE LIST 2 TABLE
MIN7     EQU   X'03A0' MINSIZE FOR RLD NOTE LIST 2 TABLE
MIN8     EQU   X'0300' MINSIZE FOR TEXT I/O TABLE
MIN9     EQU   X'0480' MINSIZE FOR RNT/RELOC CONSTANT TABLES
MIN10    EQU   X'0180' MINSIZE FOR DELINK TABLE
MIN11    EQU   X'0300' MINSIZE FOR RLD O/P BUF TABLE (2ND PASS)
MIN12    EQU   X'0150' MINSIZE FOR TEXT NOTE LIST 1 TABLE
MIN13    EQU   X'00E8' MINSIZE FOR RLD NOTE LIST 1 TABLE
MIN14    EQU   X'01C8' MINSIZE FOR ORDER TABLE
MIN15    EQU   X'0120' MINSIZE FOR HIERARCHY TABLE
MIN16    EQU   X'0100' MINSIZE FOR SEGMENT TABLE
MIN17    EQU   X'0600' MINSIZE FOR CALLS LIST TABLE
MIN18    EQU   X'0600' MINSIZE FOR ENTRY LIST TABLE
MIN19    EQU   X'00C0' MINSIZE FOR IDR TRANSLATOR DATA TABLE    OX04245
MIN20    EQU   X'03C0' MINSIZE FOR IDR USER DATA TABLE
MIN21    EQU   X'01C7' MINSIZE FOR IDR ZAP DATA TABLE
MIN22    EQU   X'00D0' MINSIZE FOR TRANSLATOR ID TABLE          OX04245
ADDSIMP  EQU   WT1+WT3+WT8+WT9+WT10+WT12+WT13+WT14+WT19+WT20+WT21+WT22
*  ADDSIMP IS THE SUM OF THE WEIGHTS OF THE 'NORMAL' OR         OX04245
*   'ALWAYS USED' TABLES
ROUNDSIM EQU   ((ADDSIMP+15)/16)*16 ROUNDS UP ADDSIMP TO FW BDY
ADDHIAR  EQU   ADDSIMP+WT15  TOTAL WEIGHTS FOR HIARCHY
ROUNHIAR EQU   ((ADDHIAR+15)/16)*16 ROUNDS UP ADDHIAR TO FW BDY
ADDOVLY  EQU   ADDSIMP+WT16+WT17+WT18  TOTAL WEIGHTS FOR OVLY
ROUNOVLY EQU   ((ADDOVLY+15)/16)*16 ROUNDS UP ADDOVLY TO FW BDY
ADDSIMPM EQU   MIN1+MIN3+MIN8+MIN9+MIN10+MIN12+MIN13+MIN14+MIN19+MIN20+*
               MIN21+MIN22   ADDSIMPM SUMS THE MINIMUM SIZES FOR THE
*                       'NORMAL' TABLES                         OX04245
NORMTABS EQU   ((ADDSIMPM+15)/16)*16  ROUNDS TO FW BDY
ADDOVLYM EQU   ADDSIMPM+MIN16+WT17+WT18  SUM SIZES FOR OVLY
OVLATABS EQU   ((ADDOVLYM+15)/16)*16  ROUNDS TO FW BDY
ADDHIARM EQU   ADDSIMPM+MIN15  SUM OF SIZES FOR HIAR TABLES
HIARTABS EQU   ((ADDHIARM+15)/16)*16  ROUNDS TO FW BDY
         EJECT ,                                                 S21016
IDRSWS   DS    XL1                     IDR SWITCHES              S21016
*     ******************************************************     S21016
*     *                BIT DESCRIPTIONS                    *     S21016
*     ******************************************************     S21016
*     *  SYMBOLIC  *       *        *    MEANING OF BIT    *     S21016
*     *  NAME  OF  *  BIT  *  MASK  *    WHEN TURNED ON    *     S21016
*     *    MASK    *       *        *     (VALUE = 1)      *     S21016
*     ******************************************************     S21016
*     *    N/A     *   0   *  X'80' *  RESERVED            *     S21016
*     ******************************************************     S21016
*     *    N/A     *   1   *  X'40' *  RESERVED            *     S21016
*     ******************************************************     S21016
*     *    N/A     *   2   *  X'20' *  RESERVED            *     S21016
*     ******************************************************     S21016
*     *            *       *        *  THE LAST  IDR ITEM  *     S21016
*     *            *       *        *  PROCESSED  WAS NOT  *     S21016
*     *   PARTENT  *   3   *  X'10' *   COMPLETE  (IT IS   *     S21016
*     *            *       *        *    EXPECTED TO BE    *     S21016
*     *            *       *        *   CONTINUED ON THE   *     S21016
*     *            *       *        *  NEXT INPUT RECORD)  *     S21016
*     ******************************************************     S21016
*     *            *       *        * DOUBLE IDR  ENTRY ON *     S21016
*     *   DBLOBJ   *   4   *  X'08' *  AN OBJ MOD END REC  *     S21016
*     *            *       *        *   BEING PROCESSED    *     S21016
*     ******************************************************     S21016
*     *   USEIDR   *   5   *  X'04' *   IDENTIFY CONTROL   *     S21016
*     *            *       *        * CARD BEING PROCESSED *     S21016
*     ******************************************************     S21016
*     *            *       *        *  OBJECT MODULE END   *     S21016
*     *   OBJIDR   *   6   *  X'02' * CARD BEING PROCESSED *     S21016
*     *            *       *        *  FOR IDR INPUT DATA  *     S21016
*     ******************************************************     S21016
*     *   LMDIDR   *   7   *  X'01' *   LOAD MODULE IDR    *     S21016
*     *            *       *        *   BEING PROCESSED    *     S21016
*     ******************************************************     S21016
*   NOTE--INITIAL VALUE OF ALL BITS IS ZERO (SET BY HEWLFINT)    S21016
*RESVRD  EQU   X'80'                   EQUATES OF                S21016
*RESVRD  EQU   X'40'                   SYMBOLIC                  S21016
*RESVRD  EQU   X'20'                   NAMES                     S21016
PARTENT  EQU   X'10'                   FOR                       S21016
DBLOBJ   EQU   X'08'                   MASKS                     S21016
USEIDR   EQU   X'04'                   AS                        S21016
OBJIDR   EQU   X'02'                   SPECIFIED                 S21016
LMDIDR   EQU   X'01'                   ABOVE                     S21016
***                                                              ***
***            MAP OF INTERNAL TRANSLATOR IDR DATA TABLE         ***
***                                                              ***
TRNAME   EQU   0                        TRANSLATOR NAME         OX04245
VVMM     EQU   10                       VERSION/MOD LEVEL       OX04245
*                                       OF TRANSLATOR           OX04245
TRNAME2  EQU   12                       2ND TRANSLATOR NAME     OX04245
VVMM2    EQU   22                       VERSION/MOD LEVEL       OX04245
*                                       OF 2ND TRANSLATOR       OX04245
***                                                              ***
***            MAP OF INTERNAL TRANSLATOR IDR ID TABLE           ***
***                                                              ***
INDCTR   EQU   0                        INDICATOR               OX04245
*                                       X'00' = ONE TRANSLATOR  OX04245
*                                       DESCRIPTION             OX04245
*                                       X'01' = TWO TRANSLATOR  OX04245
*                                       DESCRIPTIONS            OX04245
NAMEPTR  EQU   1                        POINTER TO CORRESPOND   OX04245
*                                       ENTRY IN TRANS IDR DATA OX04245
*                                       TABLE                   OX04245
YYDDD    EQU   3                        DATE OF TRANSLATION     OX04245
YYDDD2   EQU   6                        2ND DATE OF TRANSLATION OX04245
         EJECT ,                                                 S21016
APT4     DS   XL1       ALL PURPOSE INDICATOR                    S01904
*
*INITIAL  VALUE=0     BIT0     TABLES INITIALLY ALLOCATED        S01904
*INITIAL  VALUE=0     BIT1     TABLES REALLOCATED                S01904
*INITIAL  VALUE=0     BIT2     INTERMEDIATE PASS PROCESSING      S01904
*INITIAL  VALUE=0     BIT3     SECOND PASS PROCESSING            S01904
*INITIAL  VALUE=0     BIT4     ORDERING REQUIRED                 S01904
*INITIAL  VALUE=0     BIT5     PAGE BOUNDARY ALIGNMENT REQUIRED  S01904
*INITIAL  VALUE=0     BIT6     ALIGN ON 2K PAGE BOUNDARY         S01904
*INITIAL  VALUE=0     BIT7     SPARE                             S01904
*
*THE FOLLOWING ARE THE SYMBOLS USED IN REFERENCING APT4
REALOCTE EQU   X'C0'    ALL ALLOCATION DONE                      S01904
INALOCTD EQU   X'80'    TABLES INITIALLY ALLOCATED               S01904
REALOCTD EQU   X'40'    TABLES REALLOCATED                       S01904
INTRPS   EQU   X'20'    INTERMEDIATE PASS PROCESSING             S01904
SCDPS    EQU   X'10'    SECOND PASS PROCESSING                   S01904
ORDERR   EQU   X'08'    ORDERING REQUIRED                        S01904
PAGEE    EQU   X'04'    PAGE ALIGNMENT REQUIRED                  S01904
ALIGN2   EQU   X'02'    ALIGN OF 2K PAGE BOUNDARY                S01904
*
         SPACE 3
*
MAXBF    DC    H'40'          MAXIMUM BLOCKING FACTOR
*
         SPACE 2
***
***   I/O CONTROL BLOCKS FOR BUFFER LOCATIONS AND CAPACITIES        ***
***
HEWLCRBB DC    A(DECBLIB)          ADDRESS OF SYSLIB DECB
         DC    F'0'                1ST LIBRARY BUFFER
         DC    F'0'                2ND LIBRARY BUFFER
         DC    H'0'                BLKSIZE
         DC    H'80'               LRECL
         DC    H'1'                BLKFCTR
         DC    H'1'                NUMBER OF RECORDS LEFT IN BUFFER
         DC    F'0'                ADDRESS OF CURRENT RECORD
         DC    X'80000000'         READSW SET TO FIRST READ
*
HEWLCRBN DC    A(DECBLIN)          ADDRESS OF SYSLIN DECB
         DC    F'0'                1ST SYSLIN BUFFER
         DC    F'0'                2ND SYSLIN BUFFER
         DC    H'0'                BLKSIZE
         DC    H'80'               LRECL
         DC    H'1'                BLKFCTR
         DC    H'1'                NUMBER OF RECORDS LEFT IN BUFFER
         DC    F'0'                ADDRESS OF CURRENT RECORD
         DC    X'80000000'         READSW SET TO FIRST READ
*
         AIF   ('&PARM' EQ 'A').DC9
HEWLCWBB  DS  F
         AGO   .DC10
.DC9     ANOP
HEWLCWBB DC    A(HEWLCPDB)        ADDRESS OF SYSPRINT DCB
.DC10    ANOP
         DC    F'0'                1ST SYSPRINT BUFFER
         DC    F'0'                2ND SYSPRINT BUFFER
         DC    H'0'                BLKSIZE
         DC    H'121'              LRECL
         DC    H'1'                BLKFCTR
         DC    H'1'                NUMBER OF RECORDS LEFT IN BUFFER
         DC    F'0'                ADDRESS OF CURRENT RECORD
         DC    X'80000000'         WRITESW SET TO FIRST WRITE
*
         SPACE 2
RLDOUT1  DC    F'0'           ADDR OF FIRST RLD OUTPUT BUFFER-1ST PASS
RLDINBF1 EQU   RLDOUT1        ADDR OF FIRST RLD INPUT BUFFER-2ND PASS
RLDOUT2  DC    F'0'           ADDR OF SECOND RLD OUTPUT BUFFER-1ST PASS
RLDINBF2 EQU   RLDOUT2        ADDR OF SECOND RLD INPUT BUFFER-2ND PASS
TXTBFBEG DC    F'0'           ADDR OF START OF TEXT BUFFER
TXTBFEND DC    F'0'           ADDR OF END OF TEXT BUFFER
MULTSIZE DC    F'0'           SIZE OF SYSLMOD MULTIPLICITY-OR RECORD
UT1SIZE  DC    F'0'           SIZE OF SYSUT1 RECORD
SZSYSUT1 DC    F'0'           SYSUT1 MAX. NUMBER BYTES PER TRACK
RLDSIZE  DC    F'0'           SIZE OF EACH RLD BUFFER 1ST PASS-IN
*                             2ND PASS-OUT
VALUE1   DC    F'0'           SIZE VALUE1 FOR LE MAX. ALLOWABLE STORAGE
VALUE2   DC    F'0'           SIZE VALUE2 FOR LE LOAD MODULE BUFFER
MSGONE   DC    X'00000000'    INDICATES 1ST MESSAGE FROM MOPT
MSGTWO   DC    X'00000000'    INDICATES 2ND MESSAGE FROM MOPT
MSGTHREE DC    X'00000000'    INDICATES 3RD MESSAGE FROM MOPT
*
HEWLCLAC DC    A(HEWLCRBN)    ADDRESS OF CURRENT READ BLOCK
         SPACE 2
         DS    0F
         AIF   ('&PARM' EQ 'A').DC7
         READ  DECBLIN,SF,HEWLKLED,,,MF=L
*
         READ  DECBLIB,SF,HEWLCLDB,,,MF=L   CREATE DECB FOR SYSLIB
         AGO   .DC8
.DC7     ANOP
         READ  DECBLIN,SF,HEWLCSDB,,,MF=L  CREATE DECB FOR SYSLIN
*
         READ  DECBLIB,SF,HEWLFLDB,,,MF=L        CREATE DECB FOR SYSLIB
.DC8     ANOP
         DS    0F
         SPACE 3
******************************************************************
COREADR  DS   F    ADDRESS OF STORAGE AREA OBTAINED THROUGH GETMAIN
CORELEN  DS   F    LENGTH OF STORAGE AREA OBTAINED
BRNCHSV  DS   16F  SAVE AREA
APTAPF   DS   0CL2       DEFAULT LGTH AND AUTH CODE              Y01048
APTAPFCT DS   CL1        FOR THIS LKED STEP                      Y01048
APTAPFAC DS   CL1        ONE BYTE LGTH & ONE BYTE CODE           Y01048
PDSAPF   DS   0CL2       CURRENT AUTH CODE FOR THIS              Y01048
PDSAPFCT DS   CL1        ITERATION OF THE LINK EDIT              Y01048
PDSAPFAC DS   CL1        CAN BE CHANGED BY SETCODE               Y01048
         DC    C'MAPT'        END OF HEWLFAPT INDICATOR
***********************************************************************
*                                ------------                         *
*            CODE GENERATION FOR - 10/02/73 - HEWAPT MACRO ENDS       *
*                                ------------                         *
***********************************************************************
         MEND
./ ADD NAME=HEWLDCOM
         MACRO
         HEWLDCOM  &MAXEXT=32,&EXTSIZ=32
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*    02/25/72          LEVEL=21
*
*STATUS - CHANGE LEVEL 021                                            *
*         TSO CHANGES FOR SYSTERM,INCORE DATA SET, PASSED SYSLIB,     *
*                         AND IDENTIFICATION                          *
*         APAR FIX 27445 - ZERO-LENGTH CSECTS OKAY                    *
*FUNCTION/OPERATION: TO PROVIDE A COMMUNICATIONS AREA FOR THE LOADER. *
*    ALL DYNAMIC DATA USED BY THE PROCESSING PORTION OF THE LOADER    *
*    IS CONTAINED IN THIS AREA. IEWLIOCA ALLOCATES SPACE FOR THIS     *
*    DATA AREA AND INITIALIZES IT. IT IS REFERENCED THROUGH REGISTER  *
*    11.                                                              *
*ENTRY POINTS: NOT APPLICABLE                                         *
*INPUT/OUTPUT: NOT APPLICABLE                                         *
*EXTERNAL ROUTINES: NOT APPLICABLE                                    *
*EXITS: NOT APPLICABLE                                                *
*TABLES/WORKAREAS:                                                    *
*ATTRIBUTES: NOT APPLICABLE                                           *
*NOTES: THE ADDRESS OF IEWLDCOM IS PLACED IN REGISTER 11 BY IEWLIOCA  *
*    AND KEPT THERE FOR USE BY ALL MODULES IN THE PROCESSING PORTION  *
*    OF THE LOADER                                                    *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         SPACE 3
HEWLDCOM DSECT
CMXDBLWD DS    D         TEMPORARY DOUBLE WORD
CMADCON  EQU   CMXDBLWD  ALIGNMENT AREA FOR RELOCATION
CMFSTSAV DS    F         POINTER TO FIRST SAVE AREA
CMBEGADR DS    F         DEFAULT ENTRY POINT TO MODULE
CMRDCBPT DS    F         INPUT DCB POINTER
CMWDCBPT DS    F         OUTPUT DCB POINTER
CMTDCBPT DS    F         SYSTERM DCB POINTER
CMRDECPT DS    F         INPUT DECB POINTER
CMWDECPT DS    F         OUTPUT DECB POINTER
CMGETREC DS    F         INPUT LOGICAL RECORD POINTER
CMPUTREC DS    F         OUTPUT LOGICAL RECORD POINTER
CMTRMREC DS    F         SYSTERM BUFFER POINTER
CMNXTTXT DS    F         NEXT ADDRESS TO BE ASSIGNED TO A CSECT
CMLSTTXT DS    F         HIGHEST TEXT ADDRESS ASSIGNED TO CURRENT CSECT
CMLOWTBL DS    F         LOWEST ADDRESS ASSIGNED FOR LOADER TABLES
CMHITBL  DS    F         HIGHEST STORAGE ADDRESS AVAILABLE TO LOADER
CMIOLST1 DS    F         OPEN LIST DCB POINTER
CMIOLST2 DS    F         OPEN LIST DCB POINTER
CMIOLST3 DS    F         OPEN LIST DCB POINTER
CMCORE1  DS    F         CORRESPONDS TO CMNXTTXT FOR PRE-LOADED TEXT
CMCORE2  DS    F         CORRESPONDS TO CMLSTTXT FOR PRE-LOADED TEXT
CMTOPCOD DS    F         TOP OF LOADED CODE BEFORE COMMON ALLOCATED
CMLIBEOD DS    F         PASSED SYSLIB EXIT ROUTINE ADDRESSES
CMLIBSYN DS    F             - SYNAD ERROR ROUTINE POINTER
CMLIBEXL DS    F             - EXIT LIST POINTER
CMBLKSIZ DS    H         BLOCKSIZE OF CURRENT INPUT OBJECT MODULE
CMMAXLNE DS    H         MAXIMUM LINE-COUNT  (SYSPRINT)
*            NEXT THREE OPTIONS MUST STAY IN THIS ORDER.  THEY
*                          ARE REFERENCED TOGETHER.
CMMAPLIN DS    H         LENGTH OF MAP LINE
CMWLRECL DS    H         SYSPRINT RECORD SIZE
CMMAXLST DS    H         MAXIMUM LENGTH OF INVALID OPTIONS LIST
         DS    0D
*
CMINITCM EQU   *         BEGINNING OF AREA COMMON TO INITMAIN
*
CMMAINPT DS    F         VARIABLE-CONDITIONAL GETMAIN ADDRESS
CMMAINSZ DS    F         VARIABLE-CONDITIONAL GETMAIN SIZE
CMPRNTDD DS    CL8       PRINT DDNAME
CMLINDD  DS    CL8       PRIMARY INPUT DDNAME
CMLIBDD  DS    CL8       LIBRARY DDNAME
CMTERMDD DS    CL8       DIAGNOSTIC DDNAME
CMEPNAME DS    CL8       ENTRY POINT NAME
CMPGMNM  DS    CL8       PROGRAM NAME
CMLINDCB DS    F         PASSED SYSLIN DCB POINTER
CMLIBDCB DS    F         PASSED SYSLIB DCB POINTER
*
*    PARAMETER FLAGS PASSED FROM PARAMETER LIST
*
CMPRMFLG DS    X         PARAMETER FLAGS
CQRES    EQU   X'01'     RES/NORES
CQMAP    EQU   X'02'     MAP/NOMAP
CQPRINT  EQU   X'04'     PRINT/NOPRINT
CQLET    EQU   X'08'     LET/NOLET
CQCALL   EQU   X'10'     CALL/NOCALL
CQEPNAME EQU   X'20'     ENTRY POINT NAME DEFINED
CQEPADDR EQU   X'40'     ENTRY POINT ADDRESS DEFINED
CQTERM   EQU   X'80'     TERM/NOTERM
*
*    INPUT - OUTPUT FLAGS
*
CMIOFLGS DS    X         I/O FLAGS
CQEOCB   EQU   X'01'     END OF CONCATENATION
CQEOFB   EQU   X'02'     END OF FILE
CQEOFSB  EQU   X'04'     END OF FILE SIGNIFICANCE
CQRECFM  EQU   X'08'     INPUT RECORD FORMAT -- 0 - FIXED
*                                               1 - UNDEFINED
CQUNDEF  EQU   CQRECFM   SEPARATE NAME IN ALLOCATION FOR UNDEFINED
CQFIXED  EQU   X'10'     FIXED RECORD FORMAT
CQIGNCR  EQU   X'20'     IGNORE CONTROL RECORD ON LOAD MODULE
CQIOERR  EQU   X'40'     AN I/O ERROR HAS OCCURRED
*
CMFLAG3  DS    X         ASSORTED FLAGS
CQTS     EQU   X'02'     TIME-SHARING ENVIRONMENT
CQPGMNM  EQU   X'04'     PROGRAM NAME PASSED
CQPASLIN EQU   X'08'     SYSLIN DCB PASSED
CQPASLIB EQU   X'10'     SYSLIB DCB PASSED
CQINCORE EQU   X'20'     WE'RE PROCESSING INCORE SYSLIN
CQIDEN   EQU   X'40'     ENTERED AT IEWLOAD. IDENTIFICATION WANTED
CMFLAG4  DS    X         ASSORTED FLAGS
CQESDS   EQU   X'01'     ESDS HAVE BEEN ENCOUNTERED
CQMOD    EQU   X'02'     MOD CARD HAS BEEN ENCOUNTERED
CQNOEX   EQU   X'04'     EXECUTION NOT SCHEDULED
CQMINI   EQU   X'08'     MINI-CESD BUILT
CQMVT    EQU   X'10'     MVT OPERATING
CQCOMMON EQU   X'20'     COMMON RECEIVED
CQTRMOPN EQU   X'40'     SYSTERM OPEN
CQIDONE  EQU   X'80'     IDENTIFICATION ACCOMPLISHED
CMSYSTYP DS    F         SYSTEM TYPE STORED HERE BY HEWLDLIB     YM2946
*                        LAST THREE BYTES ARE UNUSED SPACE
CMRSAVE  DS    9F        LIB WILL SAVE REGS HERE WHEN CALLING    YM2946
*                        LPA SEARCH ROUTINE (IEAVVMSR) IN VS2
*                        REGS ARE IN ORDER 2-10
*
         DS    0D
*
CMINTZRO EQU   *      ALL FOLLOWING THIS POINT IS INITIALIZED TO ZERO
*
CMXLCHN  DS    F         POINTER TO CHAIN OF EXTENTS
CMBITMAP DS    F         ERROR BIT MAP
CMERLIST DS    F         POINTER TO ERRORS ENCOUNTERED DURING OPEN
CMRLDCHN DS    F         FREE RLD ENTRY CHAIN (8 BYTES/ENTRY)
CMESDCHN DS    F         FREE CESD ENTRY CHAIN (20 BYTES/ENTRY)
CMEPADDR DS    F         ENTRY POINT ADDRESS TO LOADED PROGRAM
CMTRCTRL DS    &MAXEXT.F      TRANSLATE CONTROL LIST
CMBLDLPT DS    F         BLDL POINTER
CMCXDPT  DS    F         POINTER TO CXD ADDRESSES
CMFRECOR DS    F         FREE STORAGE CHAIN
CMMODLNG DS    F         LENGTH OF MODULE CURRENTLY BEING PROCESSED
CMOBJST  DS    F         STARTING POINT FOR OBJECT MODULE       SA49491
CMTEMPCH DS    F         POINTER TO LOAD CHAIN ENTRY TO BE FREED
CMEPCESD DS    F         CESD LINE ADDRESS OF THE ENTRY POINT NAME
CMPREVPT DS    F         PREVIOUS ELEMENT IN A CHAIN FOR INSERT-DELETE
CMLOADCH DS    F         TEMPORARY CHAIN FOR ESD'S IN A LOAD MODULE
CMESDSAV DS    F         CESD REG SAVE AREA FOR REL             SA56381
*
*    CESD TYPE CHAIN POINTERS -- THEY MUST REMAIN IN ORDER OF
*   TYPE NUMBER FOR INDEXING PURPOSES
*
CMTYPCHN EQU   *         INDEX POINT FOR THE VECTOR TABLE
CMSDCHN  DS    F         TYPE 0 - SECTION DEFINITION
CMLDCHN  DS    F         TYPE 1 - LABLE DEFINITION
CMERCHN  DS    F         TYPE 2 - EXTERNAL REFERENCE
CMLRCHN  DS    F         TYPE 3 - LABLE REFERENCE
CMPCCHN  DS    F         TYPE 4 - PRIVATE CODE
CMCMCHN  DS    F         TYPE 5 - COMMON
CMPRCHN  DS    F         TYPE 6 - PSEUDO REGISTER
CMNULCHN DS    F         TYPE 7 - NULL ENTRY
*
CMCURRID DS    H         ESDID COUNTER
CMLNECNT DS    H         CURRENT LINE-COUNT  (SYSPRINT)
CMBLDLNO DS    H         NUMBER OF BLDL ENTRIES
CMWTBFCT DS    H         HORIZONTAL BYTE COUNT IN PRINT RECORD
CMNUMXS  DS    H         NUMBER OF EXTENTS
*
CQMAXEXT EQU   &MAXEXT   MAXIMUM TRANSLATION TABLE EXTENTS
CQEXTSIZ EQU   &EXTSIZ   TRANSLATION TABLE EXTENT SIZE (NUMBER OF ENT)
*
CMLIBFLG DS    X         AUTO-CALL AND LOAD MODULE PROCESSOR FLAGS
CQKEEPS  EQU   X'01'     KEEP SOME TEXT FROM THIS RECORD
CQDELETE EQU   X'02'     DELETE SOME TEXT FROM THIS RECORD
CQAUTOC  EQU   X'04'     AUTO-CALL IS IN PROCESS
CQCESDR  EQU   X'08'     CESD HAS BEEN RECEIVED FOR LOAD MODULE
CQNOTXT  EQU   X'10'     TEXT HAS BEEN RECEIVED
CQLPASRH EQU   X'20'     LPA RESOLUTION POSSIBLE
CQFIRST  EQU   X'40'     FIRST REC FROM LOAD MODULE WAS CESD
CQMFTLPA EQU   X'80'     MFT LINK PACK AREA
*
CMRELFLG DS    X         RELOCATION AND OBJECT MODULE PROCESSOR FLAGS
CQESD    EQU   X'01'     ESD ROUTINE IS CALLER TO ID TRANSLATE ROUTINE
CQNOLNG  EQU   X'02'     LENGTH NOT YET RECEIVED FOR CURRENT CSECT
CQDELINK EQU   X'04'     DELINKING IS REQUIRED FOR COMMON
CQLIB    EQU   X'08'     RESOLUTION FROM SYSLIB IN PROCESS
CQNOEND  EQU   X'10'     END CARD HAS BEEN RECEIVED
CQINPUT  EQU   X'20'     INPUT HAS BEEN RECEIVED
CQENTRY  EQU   X'40'     RLD IS FOR ENTRY POINT
CQNOLNTX EQU   X'80'     TEXT RECEIVED FOR NO-LENGTH CSECT      27445
*
CMSTATUS DS    X         LOADER STATUS FLAG
CQPRTOPN EQU   X'01'     PRINT DCB ALLOCATED FOR
CQLIBOPN EQU   X'02'     LIBRARY DCB OPEN
CQABORT  EQU   X'04'     ABORT LOADING
CQREJOPT EQU   X'08'     INVALID OPTIONS ARE TO BE PRINTED
CQOPNERR EQU   X'10'     ERRORS WERE ENCOUNTERED DURING OPEN
CQRETURN EQU   X'20'     CALLER TO ERROR ROUTINE MUST REGAIN CONTROL
CQMSGSAV EQU   X'40'     REQUEST OPEN-EXIT TO SAVE ERROR MESSAGES
CQPRTDCB EQU   X'80'     PRINT DCB IS OPEN
*
CMPRTCTL DS    X         INDEX FOR PRINTER CARRIAGE CONTROL
*
CMOPTECT DS    X         COUNT OF INVALID OPTIONS TO BE PRINTED
         DS    0D
CQINTSIZ EQU   *-CMINTZRO SIZE OF ZERO INITIALIZATION AREA
*
CQCMSIZE EQU *-HEWLDCOM SIZE OF COMMUNICATION AREA
         EJECT
*    ERROR CODE DEFINITIONS --- THESE CODES CORRESPOND TO BIT POSITIONS
*   IN THE ERROR BIT-MAP NUMBERED FROM RIGHT TO LEFT BEGINNING WITH 0.
*   THE CODES (AND CORRESPONDING BIT-MAP POSITIONS) ARE IN ORDER OF
*   INCREASING SEVERITY.
*
ERCODES  DSECT
*
ERRELO1  DS    X    WARNING - UNRESOLVED ER (NCAL SPECIFIED)          1
ERENTR1  DS    X    NO ENTRY POINT RECEIVED                           1
ERINPT8  DS    X    CARD RECEIVED NOT AN OBJECT CARD                  1
*
ERINPT10 DS    X    END CARD MISSING                                  2
ERINPT2  DS    X    LENGTH NOT SPECIFIED                              2
ERRELO2  DS    X    ERROR - UNRESOLVED ER                             2
ERINPT4  DS    X    DOUBLY DEFINED ESD                                2
ERINPT5  DS    X    INVALID 2 BYTE ADCON                              2
ERINPT7  DS    X    INVALID ID RECEIVED                               2
ERINPT9  DS    X    INVALID OBJECT CARD RECEIVED                      2
ERINPT1  DS    X    INPUT BLKSIZE IS INVALID                          2
*
ERINPT3  DS    X    NO TEXT                                           3
ERENTR2  DS    X    ENTRY POINT RECEIVED BUT NOT MATCHED              3
ERIOUT4  DS    X    ERROR ON BLDL                                     3
ERINPT6  DS    X    INVALID RECORD FROM LOAD MODULE                   3
*
ERIOUT3  DS    X    UNACCEPTABLE RECFM (VARIABLE ON INPUT)            4
ERIOUT1  DS    X    DDNAME CANNOT BE OPENED                           4
ERIOUT2  DS    X    SYNCHRONOUS ERROR                                 4
ERSIZE2  DS    X    PROGRAM TOO LARGE                                 4
ERSIZE3  DS    X    INPUT ESDID TOO LARGE                             4
ERIDEN1  DS    X    IDENTIFY FAILED. DUPLICATE PROGRAM NAME           4
ERIDEN2  DS    X    IDENTIFY FAILED.  ALL OTHER RETURN CODES          4
         EJECT
*   PRINTER CARRIAGE CONTROL DEFINITIONS FOR ASA CODE
*
*   ANY CHANGE IN THE DISPLACEMENTS DEFINED HERE REQUIRES A
*  CORRESPONDING CHANGE IN THE 'PRTCNTRL' TABLE IN IEWLIOCA
*
*
*
CTSPACE1 EQU   0         SPACE 1 BEFORE PRINTING
CTSPACE2 EQU   2         SPACE 2 BEFORE PRINTING
CTSPACE3 EQU   4         SPACE 3 BEFORE PRINTING
CTEJECT  EQU   6         EJECT BEFORE PRINTING
         MEND
./ ADD NAME=HEXCNVT
         MACRO
&NAME    HEXCNVT &OUT,&IN,&LN
         GBLC  &HEXSECT,&HEXTAB,&HEXWRD
         LCLA  &A,&B,&C,&D,&E,&F,&G
         LCLB  &REGSW,&RLNSW,&DFALTSW
         LCLB  &HEXSW
         LCLC  &GNAME
&GNAME   SETC  'HEX'.'&SYSNDX'
&DFALTSW SETB  (T'&LN EQ 'O')
         AIF   (&DFALTSW EQ 1).NEXT2
&RLNSW   SETB  ('&LN'(1,1) EQ '(')
.NEXT2   AIF   ('&OUT' EQ '' OR '&IN' EQ '').ERROR2
&REGSW   SETB  ('&OUT'(1,1) EQ '(')
         AIF   (&DFALTSW EQ 0 AND T'&LN NE 'N').ERROR4
         AIF   (&DFALTSW EQ 1).NEXT3
         AIF   (N'&LN NE 1).ERROR5
.NEXT3   AIF   (&RLNSW EQ 1 AND T'&LN(1) NE 'N').ERROR4 LN MUST BE     C
               SELF DEFINING
         AIF   (&DFALTSW EQ 1).NEXT4
         AIF   (&RLNSW EQ 1 AND (&LN(1) LT 2 OR &LN(1) GT 12)).ERROR3  C
               IF LN IS A REG IT MUST BE 2-12
         AIF   (&RLNSW EQ 0 AND T'&LN(1) NE 'N').ERROR4 LN MUST BE     X
               SELF DEFINING
         AIF   (&RLNSW EQ 1).NEXT4
         AIF   (&LN LT 1 OR &LN GT 112).ERROR6 LN MUST BE FROM 1-112
.NEXT4   AIF   (&REGSW EQ 0).NEXT9
         AIF   ('&IN'(1,1) NE '(').ERROR1 &IN MUST ALSO BE A REG
         AIF   (T'&OUT NE 'N').ERROR4
         AIF   (N'&OUT GT 1).ERROR3
         AIF   (&OUT(1) LE 1 OR &OUT(1) GT 12).ERROR3
         AIF   (T'&IN NE 'N').ERROR4
         AIF   (N'&IN GT 1).ERROR3
         AIF   (&IN(1) LE 1 OR &IN(1) GT 12).ERROR3
         AGO   .NEXT5
.NEXT9   AIF   ('&IN'(1,1) EQ '(').ERROR1
         AIF   (T'&OUT EQ 'N' OR T'&IN EQ 'N').ERROR4
.NEXT5   ANOP
&HEXSW   SETB  ('&HEXSECT' EQ '&SYSECT')
         AIF   (&HEXSW EQ 1).NEXT6
&HEXSECT SETC  '&SYSECT'
&HEXWRD  SETC  '&GNAME'
&HEXTAB  SETC  '&GNAME.A'
.NEXT6   ANOP
         AIF   (&DFALTSW EQ 1).DFALT
         AIF   (&RLNSW EQ 1).REGLN
         AIF   (&LN GT 7).MULTI
&A       SETA  &LN*2+1             LENGTH FOR R1 OF UNPK
&B       SETA  &LN+1               LENGTH FOR R2 OF UNPK
.CONTA   AIF   (&REGSW EQ 1).ISAREG
&NAME    UNPK  &OUT.(&A),&IN.(&B)  UNPACK HEX DIGITS
&A       SETA &A-1
         MVI   &OUT+&A,X'40'       CLEAR SIGN BYTE
.CONTB   L     1,&GNAME.B          SET ORIGIN OF TABLE
         S     1,0(1)              BACK 240 BYTES
         AIF   (&RLNSW EQ 1).CONTG
         AIF   (&REGSW EQ 1).CONTD
         TR    &OUT.(&A),0(1)      TRANSLATE FA-FF
.CONTC   B     &GNAME.H            BR AROUND CONSTANTS
         AIF   (&HEXSW EQ 1).ENDD  DON'T GENERATE TABLE IF SW ON
         AGO   .ENDC
.ISAREG  ANOP
&NAME    UNPK  0(&A,&OUT(1)),0(&B,&IN(1)) UNPACK HEX DIGITS
&A       SETA  &A-1
         MVI   &A.(&OUT(1)),X'40'  CLEAR SIGN BYTE
         AGO   .CONTB              SET REG 1 FOR TR
.CONTD   TR    0(&A,&OUT(1)),0(1)  TRANSLATE FA-FF
         AGO   .CONTC
.DFALT   ANOP
&A       SETA  9                   DFAULT TO 4 BYTES
&B       SETA  5
         AGO   .CONTA
.MULTI   ANOP
&C       SETA  (&LN/4)             TO UNPACK 4 AT A TIME
&D       SETA  &LN-&C*4            REMAINDER
&A       SETA  9
&B       SETA  5
         AIF   (&REGSW EQ 0).MULTIB
&E       SETA  &OUT(1)
&F       SETA  &IN(1)
&G       SETA  1
&NAME    LA    &G,&C               SET COUNT
.MULTIA  ANOP
&GNAME.E UNPK  0(&A,&E),0(&B,&F)   UNPACK HEX DIGITS
&A       SETA  &A-1
         MVI   &A.(&E),X'EF'       CLEAR SIGN BYTE
         LA    &E,9(&E)            INCREMENT ADDRESSES
         LA    &F,4(&F)
         BCT   &G,&GNAME.E         LOOP
         AIF   (&D EQ 0).CONTH     NO REMAINDER
&A       SETA  &D*2+1
&B       SETA  &D+1
         UNPK  0(&A,&E),0(&B,&F)   UNPACK HEX DIGITS
&A       SETA  &A-1
         MVI   &A.(&E),X'40'       CLEAR SIGN BYTE
.CONTH   ANOP
&C       SETA  &C+&LN*2
&G       SETA  &C+&D*2             LENGTH OF FIELD TO BE TRANSLATED
         LA    1,&C                RE-ESTABLISH BEGINING
         SR    &E,1                OF FIELD
         L     1,&GNAME.B          SET ORIGIN OF TABLE
         S     1,0(1)              BACK 240 BYTES
         TR    0(&G,&E),0(1)       TRANSLATE FA-FF
         AGO   .CONTC
.MULTIB  ANOP
&NAME    LA    2,&OUT
         LA    1,&IN
         LA    3,&C                SET COUNT
&E       SETA  2
&F       SETA  1
&G       SETA  3
         AGO   .MULTIA
.REGLN   ANOP
         AIF   (&REGSW EQ 0).CONTI
&E       SETA  &OUT(1)
&F       SETA  &IN(1)
         AGO   .CONTJ
.CONTI   ANOP
&E       SETA  2
&F       SETA  3
&NAME    LA    2,&OUT
         LA    3,&IN
         LR    1,&LN(1)
         AGO   .CONTK
.CONTJ   ANOP
&NAME    LTR   1,&LN(1)            LOAD LN TO REG 1 AND TEST
         BZ    &GNAME.H            DO NOTHING IF ZERO
.CONTK   LA    0,3                 SET UP MASK
         NR    0,1                 AND SAVE 2 LOW ORDER BITS
         SRL   1,2                 DIVIDE BY 4
         LTR   1,1                 LENGTH LESS THAN 4
         BZ    &GNAME.F            IF YES--BRANCH
&GNAME.E UNPK  0(9,&E),0(5,&F)     UNPACK HEX DIGITS
         MVI   8(&E),X'EF'         CLEAR SIGN BYTE
         LA    &E,9(&E)            INCREMENT REGS
         LA    &F,4(&F)
         BCT   1,&GNAME.E          LOOP
&GNAME.F LTR   0,0
         BZ    &GNAME.G            BRANCH IF SAVED BITS ARE 0
         LR    1,0                 ADJUST REG 1
         AR    1,0                 FOR EXECUTE INSTRUCTION
         SLL   1,4
         OR    1,0
         EX    1,&GNAME.C          EXECUTE UNPK
         SRL   1,4
         AR    &E,1
         MVI   0(&E),X'40'         CLEAR SIGN BYTE
&GNAME.G LR    1,&LN(1)
         SRL   1,2                 DIVIDE BY 4
         AR    &LN(1),&LN(1)       SET UP LENGTH FOR
         AR    &LN(1),1            TRANSLATE INSTRUCTION
         SR    &E,&LN(1)           RE-ESTABLISH BEGINING OF FIELD
         AGO   .CONTB              SET REG 1 FOR TR
.CONTG   BCTR  &LN(1),0            DECR LN 1 FOR EXECUTE INST
         EX    &LN(1),&GNAME.D     EXECUTE TR
         B     &GNAME.H            BRANCH AROUND CONSTANTS
         AGO   .ENDA
.ERROR1  MNOTE 12,'INCONSISTANT PARAMETERS'
         MEXIT
.ERROR2  MNOTE 12,'PARAMETER MISSING'
         MEXIT
.ERROR3  MNOTE 12,'REG PARMS CANNOT BE 0, 1, OR 13 THROUGH 15'
         MEXIT
.ERROR4  MNOTE 12,'INVALID TYPE ATTRIBUTE SPECIFIED IN PARAMETERS'
         MEXIT
.ERROR5  MNOTE 12,'&LN--MULTIPLE PARAMETERS INVALID'
         MEXIT
.ERROR6  MNOTE 12,'&LN INVALID--MUST BE FROM 1-112'
         MEXIT
.ENDA    ANOP
&GNAME.C UNPK  0(0,&E),0(0,&F)     UNPACK HEX DIGITS
&GNAME.D TR    0(0,&E),0(1)        TRANSLATE FA-FF
         AIF   (&HEXSW EQ 0).ENDC
.ENDD    ANOP
&GNAME.B DC    A(&HEXWRD)
         AGO   .ENDB
.ENDC    ANOP
&GNAME.B DC    A(&HEXWRD)
&GNAME   DC    F'234'
         DC    C'  '
&GNAME.A DC    C'0123456789ABCDEF'
.ENDB    ANOP
&GNAME.H DS    0H
         MEND
./ ADD NAME=IBMDCB
         MACRO
&LBL     IBMDCB &DSORG=PS,&DEVD=(DA,TA),&PFX=DCB,&SECT=DSECT    \
.*  THIS IS A COPY OF DCBD, WITH THE DSECT MADE OPTIONAL, AND THE
.*  'DCB' PORTION OF EACH NAME MADE A PFX VARIABLE
         GBLB  &ONESW
         LCLC  &NM,&P                                           \
         LCLA  &A0            FOR DSORG= AND DEVD= ANALYSIS LOOPS
         LCLB  &DSORGIS       SET BY DSORG=IS - ISAM
         LCLB  &DSORGBX       SET BY DSORG=BX OR CX - BTAM
         LCLB  &DSORGDA       SET BY DSORG=DA - BDAM
         LCLB  &DSORGQX       SET BY DSORG=QX OR CX - QTAM
         LCLB  &DSORGXA       SET BY DSORG=XA - EXCP WITH APPENDAGES
         LCLB  &DSORGQS       SET BY DSORG=QS OR PS - QSAM
         LCLB  &DSORGBS       SET BY DSORG=BS OR PS OR PO - BSAM,BPAM
         LCLB  &DSORGXE       SET BY DSORG=XE - EXCP WITH EXTENSION
         LCLB  &DSORGLR       SET BY DSORG=LR - DCBLRECL FIELD ONLY
         LCLB  &DSORGGS       SET BY DSORG=GS - GAM
         LCLB  &DSORGTX       SET BY DSORG=TX - TCAM LINE GROUP
         LCLB  &DSORGTQ       SET BY DSORG=TQ - TCAM MESSAGE QUEUE
         LCLB  &DSORGTR       SET BY DSORG=TR 3705 LINE GROUP    S22024
         LCLB  &DEVDDA        DIRECT ACCESS
         LCLB  &DEVDTA        MAGNETIC TAPE
         LCLB  &DEVDPT        PAPER TAPE
         LCLB  &DEVDRD        READER OR PUNCH, DEVD=RD OR PC
         LCLB  &DEVDPR        PRINTER
         LCLB  &DEVDBS        BINARY SYNCHRONOUS
         LCLB  &DEVDWT        WORLD TRADE TELEGRAPH
         LCLB  &DEVDMR        MAGNETIC CARD READER
         LCLB  &DEVDOR        OPTICAL READER
         LCLC  &C0            SET TO EACH VALUE OF DSORG AND DEVD
&NM      SETC  'IHADCB'                                         \
         AIF   ('&LBL' EQ '').DEFLBL                            \
&NM      SETC  '&LBL'                                           \
.DEFLBL  ANOP  ,                                                \
&P       SETC  '&PFX'                                           \
.*
.*  THIS MACRO DEFINES THE FIELDS AND BITS WITHIN A DCB, WHICH IS
.*  EXPANDED BY THE DCB MACRO INSTRUCTION. CHANGES TO THIS MACRO
.*  SHOULD ALSO BE MADE TO THE IHADCB MACRO, WHICH IS WRITTEN IN PLS.
.*
         AIF   (NOT &ONESW).SETSW  TEST PREVIOUS USE OF THIS MACRO
         IHBERMAC 172
         MEXIT
.SETSW   ANOP
&ONESW   SETB  1
.*
.*                  ANALYZE DSORG OPERAND
.*
&A0      SETA  N'&DSORG       SET NUMBER OF DSORG FLEMENTS
.A1      AIF   (&A0 LE 0).D0  IF ZERO, LOOP FINISHED
&C0      SETC  '&DSORG(&A0)'  SET TO A DSORG ELEMENT
.*
.*                  TEST FOR VALID DSORG ELEMENT
.*
         AIF   ('&C0' EQ 'IS' OR '&C0' EQ 'PS' OR '&C0' EQ 'BS' OR     *
               '&C0' EQ 'QS' OR '&C0' EQ 'DA' OR '&C0' EQ 'CX' OR      *
               '&C0' EQ 'LR').A2                               @ZA02213
         AIF   ('&C0' EQ 'XE' OR '&C0' EQ 'XA' OR '&C0' EQ 'PO' OR     *
               '&C0' EQ 'BX' OR '&C0' EQ 'QX' OR '&C0' EQ 'GS' OR      *
               '&C0' EQ 'TX' OR '&C0' EQ 'TQ' OR '&C0' EQ '').A2
         AIF   ('&C0' EQ 'TR').A2                                S22024
         IHBERMAC 156,DSORG,&C0
         AGO   .AA
.*
.*                  SET VARIABLES FOR DSORG
.*
.A2      ANOP
&DSORGIS SETB  (&DSORGIS OR '&C0' EQ 'IS')
&DSORGBX SETB  (&DSORGBX OR '&C0' EQ 'BX' OR '&C0' EQ 'CX')
&DSORGDA SETB  (&DSORGDA OR '&C0' EQ 'DA')
&DSORGQX SETB  (&DSORGQX OR '&C0' EQ 'QX' OR '&C0' EQ 'CX')
&DSORGXA SETB  (&DSORGXA OR '&C0' EQ 'XA')
&DSORGQS SETB  (&DSORGQS OR '&C0' EQ 'QS' OR '&C0' EQ 'PS')
&DSORGBS SETB  (&DSORGBS OR '&C0' EQ 'BS' OR '&C0' EQ 'PS' OR '&C0' EQ *
               'PO')
&DSORGXE SETB  (&DSORGXE OR '&C0' EQ 'XE')
&DSORGLR SETB  (&DSORGLR OR '&C0' EQ 'LR')
&DSORGGS SETB  (&DSORGGS OR '&C0' EQ 'GS')
&DSORGTX SETB  (&DSORGTX OR '&C0' EQ 'TX')
&DSORGTQ SETB  (&DSORGTQ OR '&C0' EQ 'TQ')
&DSORGTR SETB  (&DSORGTR OR '&C0' EQ 'TR')                       S22024
.AA      ANOP
&A0      SETA  &A0-1          DECREMENT ELEMENT COUNTER
         AGO   .A1            TO DO NEW LOOP
.*
.*                  TEST FOR ANY VALID DSORG OPERAND
.*
.D0      AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQX OR        *
               &DSORGXA OR &DSORGQS OR &DSORGBS OR &DSORGXE OR         *
               &DSORGLR OR &DSORGGS).D0A                       @ZA02213
         AIF   (&DSORGTX OR &DSORGTQ OR &DSORGTR).D0A            S22024
         IHBERMAC 173
.D0A     AIF   (T'&DEVD NE 'O').D1      BRANCH IF DEVD CODED       1318
         AIF   (&DSORGGS).B1
         AIF   (NOT (&DSORGQS OR &DSORGBS OR &DSORGXE)).B1
.*
.*                  SET DEVD DEFAULTS
.*
&DEVDDA  SETB  1
&DEVDTA  SETB  ('&DSORG' NE '(PO)')
&DEVDPT  SETB  ('&DSORG' NE '(PO)')
&DEVDPR  SETB  ('&DSORG' NE '(PO)')
&DEVDRD  SETB  ('&DSORG' NE '(PO)')
&DEVDMR  SETB  ('&DSORG' NE '(PO)')
&DEVDOR  SETB  ('&DSORG' NE '(PO)')
         AIF   ('&DSORG' EQ '(PO)').D1
         IHBERMAC 174
         AGO   .B1
.D1      ANOP
.*
.*                  ANALYZE DEVD OPERAND
.*
&A0      SETA  N'&DEVD        SET ELEMENT COUNT
.D2      AIF   (&A0 LE 0).B1  IF ZERO, LOOP FINISHED
&C0      SETC  '&DEVD(&A0)'   SET TO A DEVD ELEMENT
.*
.*                  TEST FOR VALID DEVD ELEMENT
.*
         AIF   ('&C0' EQ 'DA' OR '&C0' EQ 'TA' OR '&C0' EQ 'PT' OR     *
               '&C0' EQ 'PR' OR '&C0' EQ 'RD' OR '&C0' EQ 'PC' OR      *
               '&C0' EQ 'BS' OR '&C0' EQ 'WT').D3
         AIF   ('&C0' EQ 'MR' OR '&C0' EQ 'OR').D3
         AIF   ('&C0' EQ '').D4
         IHBERMAC 157,DEVD,&C0
         AGO   .D4            TO DO NEW LOOP
.*
.*                  SET VARIABLES FOR DEVD
.*
.D3      ANOP
&DSORGXE SETB  (&DSORGXE OR T'&DSORG EQ 'O') FORCE EXCP EXTENDED
&DEVDDA  SETB  (&DEVDDA OR '&C0' EQ 'DA')    DIRECT ACCESS DEVICE
&DEVDTA  SETB  (&DEVDTA OR '&C0' EQ 'TA')    MAGNETIC TAPE DEVICE
&DEVDPT  SETB  (&DEVDPT OR '&C0' EQ 'PT')    PAPER TAPE DEVICE
&DEVDPR  SETB  (&DEVDPR OR '&C0' EQ 'PR')    PRINTER
&DEVDRD  SETB  (&DEVDRD OR '&C0' EQ 'RD' OR '&C0' EQ 'PC') READER,PUNCH
&DEVDBS  SETB  (&DEVDBS OR '&C0' EQ 'BS')    BINARY SYNCHRONOUS COMM.
&DEVDWT  SETB  (&DEVDWT OR '&C0' EQ 'WT')    WORLD TRADE TELEGRAPH
&DEVDMR  SETB  (&DEVDMR OR '&C0' EQ 'MR')    MAGNETIC CHAR READER
&DEVDOR  SETB  (&DEVDOR OR '&C0' EQ 'OR')    OPTICAL READER
.D4      ANOP
&A0      SETA  &A0-1          DECREMENT ELEMENT COUNTER
         AGO   .D2            TO DO NEW LOOP
.*
.B1      AIF   (NOT &DSORGLR).B1A       BR IF NOT LRECL ONLY    YA03395
         AIF   (&DSORGIS OR &DSORGQS OR &DSORGBS OR &DSORGDA OR        X
               &DSORGBX OR &DSORGQX).B1A  BR COMMNT            @ZA02213
         AIF   (NOT(&DSORGTX OR &DSORGTQ OR &DSORGTR OR &DSORGXA OR    X
               &DSORGXE OR &DSORGGS)).BA  SKIP COMM            @ZA02213
.B1A     SPACE 2                                                YA03395
*                       DCB SYMBOLIC DEFINITION FOR
         AIF   (NOT &DSORGIS).B2
*                       INDEXED SEQUENTIAL
.B2      AIF   (NOT (&DSORGQS AND &DSORGBS)).B2A
*                       PHYSICAL SEQUENTIAL
         AGO   .B3
.B2A     AIF   (NOT &DSORGQS).B2B
*                       QSAM
.B2B     AIF   (NOT &DSORGBS).B3
*                       BSAM-BPAM
.B3      AIF   (NOT &DSORGDA).B4
*                       DIRECT ACCESS
.B4      AIF   (NOT (&DSORGBX AND &DSORGQX)).B4A
*                       COMMUNICATIONS LINE GROUP
         AGO   .B5
.B4A     AIF   (NOT &DSORGBX).B4B
*                       BTAM LINE GROUP
.B4B     AIF   (NOT &DSORGQX).B5
*                       QTAM LINE GROUP
.B5      AIF   (NOT &DSORGTX).B6B
*                       TCAM LINE GROUP
.B6B     AIF   (NOT &DSORGTQ).B6C                                S22024
*                       TCAM MESSAGE QUEUE
.B6C     AIF   (NOT &DSORGTR).B7                                 S22024
*                       3705 LINE GROUP
.B7      AIF   (NOT (&DSORGXA AND &DSORGXE)).B8
*                       EXCP WITH EXTENSION AND APPENDAGES
         AGO   .BA
.B8      AIF   (NOT &DSORGXE).B9
*                       EXCP WITH EXTENSION
         AGO   .BA
.B9      AIF   (NOT &DSORGXA).B0
*                       EXCP WITH APPENDAGES
         AGO   .BA
.B0      AIF   (NOT &DSORGGS).B00
*                       GRAPHICS WITH APPENDAGES
         AGO   .BA
.B00     AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQX OR        *
               &DSORGQS OR &DSORGBS OR &DSORGTX OR &DSORGTQ OR         *
               &DSORGLR OR &DSORGTR).BA                        @ZA02213
*                       EXCP WITH EXTENSION
&DSORGXE SETB  1
.BA      SPACE 2                                               @ZA05613
         AIF   ('&SECT' EQ 'DSECT').DODSEC                     \
         AIF   ('&SECT' EQ 'CSECT').DOCSEC                     \
&NM      DS    0D                                              \
         AGO   .DONESEC                                        \
.DOCSEC  ANOP  ,                                               \
&NM      CSECT , -            DCBPTR                           \
         AGO   .DONESEC                                        \
.DODSEC  ANOP  ,                                               \
&NM      DSECT , -            DCBPTR                           \
.DONESEC SPACE 2                                               @ZA05613
***********************************************************************
*  OS/VS2 RELEASE 02, 02/14/73                                        *
*  OS/VS2 RELEASE 03, 10/23/74                                        *
*  OS/VS2 RELEASE 3.7, 3/15/78                                        *
*C80400037                                                     @ZA33630
*                                                                     *
*  OS/VS2 RELEASE 3.8, 5/15/80    FMID=FDM1133                        *
*                                                                     *
*C(116500),A(116638-116914),D(117000),A(117052-117466)         @ZA46311
*D(117500),A(117604-117880),D(118000),A(118018-118432)         @ZA46311
*D(118500-118510),A(118570-118846)                             @ZA46311
*$F01=UZ59799,FDM1133:DCBDEVT DEFINITION FOR D/T3375 AND D/T3380  @F01A
*                                                                     *
***********************************************************************
         SPACE 1                                               @ZA05613
.*                                                             @ZA05613
&P.BIT0  EQU   128                                             @ZA05613
&P.BIT1  EQU   64                                              @ZA05613
&P.BIT2  EQU   32                                              @ZA05613
&P.BIT3  EQU   16                                              @ZA05613
&P.BIT4  EQU   8                                               @ZA05613
&P.BIT5  EQU   4                                               @ZA05613
&P.BIT6  EQU   2                                               @ZA05613
&P.BIT7  EQU   1                                               @ZA05613
         SPACE 1                                               @ZA05613
***********************************************************************
         SPACE 2
         AIF   (&DSORGGS).SLIP
.*                                                              ZA00013
         AIF   (NOT (&DEVDDA OR &DEVDTA OR &DEVDPT OR &DEVDPR OR       *
               &DEVDRD OR &DEVDWT OR &DEVDOR OR &DEVDMR)).C4
***********************************************************************
*                       DEVICE INTERFACES
***********************************************************************
         SPACE 1
         AIF   (NOT &DEVDDA).C1
***********************************************************************
*                       DIRECT ACCESS DEVICES
***********************************************************************
         SPACE 1
&P.RELAD DS    CL4 -          PARTITIONED ORGANIZATION DATA SET -
*                             ADDRESS (IN THE FORM TTRN) OF MEMBER
*                             CURRENTLY USED.  ---
*                             SYS1.LOGREC DATA SET - IF CCH OPTION HAS
*                             BEEN SPECIFIED IN SYSGEN PROCESS, ADDRESS
*                             OF A 12-BYTE PARAMETER IN THE EXPANSION
*                             OF MACRO INSTRUCTION IGFCATAP
&P.KEYCN DS    FL1 -          KEYED BLOCK OVERHEAD CONSTANT
&P.FDAD  DS    CL8 -          FULL DISK ADDRESS IN THE FORM OF MBBCCHHR
*                             OF RECORD THAT WAS JUST READ OR WRITTEN
         SPACE 1
         ORG   &P.FDAD+7
&P.DVTBL DS    0A -           SAME AS DCBDVTBA BELOW
         DS    X -            LAST BYTE OF DCBFDAD
&P.DVTBA DS    AL3 -          ADDRESS OF ENTRY IN I/O DEVICE
*                             CHARACTERISTICS TABLE FOR DEVICE BEING
*                             USED
         DS    FL1 -          DCBKEYLE - KEY LENGTH OF DATA SET
         DS    C -            DCBDEVT - DEVICE TYPE
*   FOR MASKS FOR ISAM DIRECT ACCESS, SEE DCBOVDEV IN ISAM SECTION
&P.DV311 EQU   X'21' -        2311 DISK STORAGE                @ZA46311
&P.DV301 EQU   X'22' -        2301 PARALLEL DRUM
&P.DV303 EQU   X'23' -        2303 SERIAL DRUM
&P.DV302 EQU   X'24' -        2302 DISK STORAGE
&P.DV321 EQU   X'25' -        2321 DATA CELL STORAGE           @ZA46311
&P.D1305 EQU   X'26' -        2305 DRUM MODEL-1                @ZA46311
&P.DV305 EQU   X'27' -        2305 DRUM MODEL-2                @ZA46311
&P.DV314 EQU   X'28' -        2314/2319 DISK STORAGE FACILITY  @ZA46311
&P.DV330 EQU   X'29' -        3330 DISK STORAGE FACILITY       @ZA46311
*                             3330 MODEL-1                     @ZA46311
*                             3330 MODEL-2                     @ZA46311
*                             3333 MODEL-1                     @ZA46311
&P.DV340 EQU   X'2A' -        3340/3344 DISK STORAGE FACILITY  @ZA46311
&P.DV350 EQU   X'2B' -        3350 DISK STORAGE FACILITY       @ZA46311
*                             MODELS A2, B2, AND C2            @ZA46311
&P.DV375 EQU   X'2C' -        3375 DISK STORAGE FACILITY          @F01A
&P.DV331 EQU   X'2D' -        3330 MODEL-11 OR 3333 MODEL-11   @ZA46311
*                             DISK STORAGE FACILITY            @ZA46311
&P.DV380 EQU   X'2E' -        3380 DISK STORAGE FACILITY          @F01A
         SPACE 1
&P.TRBAL DS    H -            TRACK BALANCE.  NUMBER OF BYTES REMAINING
*                             ON CURRENT TRACK AFTER A WRITE OPERATION
*                             (THIS QUANTITY MAY BE NEGATIVE IF THERE
*                             ARE NO BYTES REMAINING ON TRACK).
         SPACE 1
.C1      AIF   (NOT &DEVDTA).C2
***********************************************************************
*                       MAGNETIC TAPE
***********************************************************************
         SPACE 1
         ORG   &NM
         DS    CL12 -         RESERVED FOR I/O SUPERVISOR
&P.BLKCT DS    F -            BLOCK COUNT FOR EACH VOLUME
&P.TRTCH DS    C -            TAPE RECORDING TECHNIQUE FOR 7-TRACK TAPE
&P.MTE   EQU   X'23' -        E  - EVEN PARITY
&P.MTT   EQU   X'3B' -        T  - BCD/EBCDIC TRANSLATION
&P.MTC   EQU   X'13' -        C  - DATA CONVERSION
&P.MTET  EQU   X'2B' -        ET - EVEN PARITY AND TRANSLATION
         DS    C -            DCBDEVT - DEVICE TYPE
&P.DVMT  EQU   X'81' -        2400 SERIES MAGNETIC TAPE UNIT (7-TRACK
*                             OR 9-TRACK)
&P.DVMT3 EQU   X'83' -        3400 SERIES MAGNETIC TAPE UNIT
&P.DEN   DS    C -            TAPE DENSITY - 2400 SERIES MAGNETIC TAPE
*                             UNITS
*                             CODE    7-TRACK     9-TRACK
&P.MTDN0 EQU   X'03' -         0       200 BPI       -
&P.MTDN1 EQU   X'43' -         1       556 BPI       -
&P.MTDN2 EQU   X'83' -         2       800 BPI     800 BPI
&P.MTDN3 EQU   X'C3' -         3         -        1600 BPI
&P.MTDN4 EQU   X'D3' -         4         -        6250 BPI
         DS    X -            RESERVED
         SPACE 1
.C2      AIF   (NOT &DEVDPT).C3
***********************************************************************
*                       PAPER TAPE
***********************************************************************
         SPACE 1
         ORG   &NM+8
&P.LCTBL DS    A -            ADDRESS OF TRANSLATE TABLE
         DS    XL4 -          RESERVED
&P.CODE  DS    C -            PAPER TAPE CODE BEING USED.  THE
*                             APPROPRIATE TRANSLATE TABLE IS MADE
*                             AVAILABLE
&P.PTCDN EQU   X'80' -        N - NO CONVERSION
&P.PTCDI EQU   X'40' -        I - IBM BCD
&P.PTCDF EQU   X'20' -        F - FRIDEN
&P.PTCDB EQU   X'10' -        B - BURROUGHS
&P.PTCDC EQU   X'08' -        C - NATIONAL CASH REGISTER
&P.PTCDA EQU   X'04' -        A - ASCII (8-TRACK)
&P.PTCDT EQU   X'02' -        T - TELETYPE
         DS    C -            DCBDEVT - DEVICE TYPE
&P.DVPTP EQU   X'50' -        2671 PAPER TAPE READER
         DS    X -            RESERVED
&P.PTFLG DS    BL1 -          PAPER TAPE FLAGS
&P.PTIC  EQU   &P.BIT3 -      INVALID CHARACTER IN LAST RECORD READ
&P.PTECT EQU   &P.BIT4 -      END OF RECORD CHARACTER REACHED IN
*                             TRANSLATION
&P.PTECR EQU   &P.BIT5 -      END OF RECORD CHARACTER DETECTED DURING
*                             READ
&P.PTUCT EQU   &P.BIT6 -      IF ONE, UPPER CASE TRANSLATE.
*                             IF ZERO, LOWER CASE TRANSLATE
&P.PTERR EQU   &P.BIT7 -      ERROR DETECTED ON READ
         SPACE 1
.C3      AIF   (NOT &DEVDPR).C3A
***********************************************************************
*                       PRINTER
***********************************************************************
         SPACE 1
         ORG   &NM+16
&P.PRTSP DS    C -            NUMBER INDICATING NORMAL PRINTER SPACING
&P.PRSP0 EQU   X'01' -        0 - NO SPACING
&P.PRSP1 EQU   X'09' -        1 - SPACE ONE LINE
&P.PRSP2 EQU   X'11' -        2 - SPACE TWO LINES
&P.PRSP3 EQU   X'19' -        3 - SPACE THREE LINES
         DS    C -            DCBDEVT - DEVICE TYPE
&P.DVPR1 EQU   X'48' -        1403 PRINTER AND 1404 PRINTER (CONTINUOUS
*                             FORM SUPPORT ONLY)
&P.DVPR2 EQU   X'4A' -        1443 PRINTER
&P.DVPR3 EQU   X'49' -        3211 PRINTER
&P.DVPR4 EQU   X'4B' -        3203-4 PRINTER                   @32034AP
&P.DVPR5 EQU   X'4E'          3800 PRINTER                     @Z40MSRZ
&P.PRTOV DS    C -            TEST-FOR-PRINTER-OVERFLOW MASK
*                             (PRTOV MASK)
&P.PRC9  EQU   X'20' -        9  - TEST FOR CHANNEL 9 OVERFLOW
&P.PRC12 EQU   X'10' -        12 - TEST FOR CHANNEL 12 OVERFLOW
*
&P.PRBYT DS    C             PRINTER BYTE                      @Z40MSRZ
&P.TRCID EQU   &P.BIT6+&P.BIT7   2-BIT ID OF 3800 TRANSLATE    @Z40MSRZ
*                                TABLE ACTIVE/LAST SELECTED    @Z40MSRZ
         DS    X -            RESERVED
         SPACE 1
.C3A     AIF   (NOT &DEVDRD).C3B
***********************************************************************
*                       CARD READER, CARD PUNCH
***********************************************************************
         SPACE 1
         ORG   &NM+16
&P.MODE  DS    0B -           MODE OF OPERATION FOR 1442 CARD READ
*                             PUNCH (BITS 0-3)
&P.STACK DS    B -            STACKER SELECTION (BITS 4-7)
&P.MODEC EQU   &P.BIT0 -      COLUMN BINARY MODE
&P.MODEE EQU   &P.BIT1 -      EBCDIC MODE
&P.MODEO EQU   &P.BIT2 -      OPTICAL MARK READ MODE
&P.MODER EQU   &P.BIT3 -      READ COLUMN ELIMINATE MODE
&P.STCK2 EQU   &P.BIT6 -      STACKER 2
&P.STCK1 EQU   &P.BIT7 -      STACKER 1
         DS    C -            DCBDEVT - DEVICE TYPE
&P.DVCR0 EQU   X'41' -        2540 CARD READER
&P.DVCP0 EQU   X'42' -        2540 CARD PUNCH
&P.DVCRP EQU   X'43' -        1442 CARD READ PUNCH
&P.DVCR1 EQU   X'44' -        2501 CARD READER
&P.DVCPR EQU   X'45' -        2520 CARD READ PUNCH
&P.DVCR2 EQU   X'46' -        3505 CARD READER
&P.DVCP1 EQU   X'4C' -        3525 CARD PUNCH
         DS    X -            RESERVED
&P.FUNC  DS    B -            FUNCTION INDICATOR FOR THE 3525
&P.FNCBI EQU   &P.BIT0 -      INTERPRET (PUNCH AND PRINT TWO LINES)
&P.FNCBR EQU   &P.BIT1 -      READ
&P.FNCBP EQU   &P.BIT2 -      PUNCH
&P.FNCBW EQU   &P.BIT3 -      PRINT
&P.FNCBD EQU   &P.BIT4 -      DATA PROTECTION
&P.FNCBX EQU   &P.BIT5 -      THIS DATA SET IS TO BE PRINTED
&P.FNCBT EQU   &P.BIT6 -      TWO-LINE PRINT SUPPORT REQUEST
         SPACE 1
.C3B     AIF   (NOT &DEVDWT).C3C
***********************************************************************
*                       WORLD TRADE TELEGRAPH
***********************************************************************
         SPACE 1
         ORG   &NM+16
&P.BQFLG DS    BL1 -          WTTA FLAG BYTE
&P.BQWRU EQU   &P.BIT1 -      WRU FEATURE IS TO BE USED
&P.BQIAM EQU   &P.BIT2 -      IAM FEATURE IS TO BE USED
&P.BQWRS EQU   &P.BIT3 -      WRU FEATURE TO BE USED IN SEND HEADER
*                             SUBGROUP
&P.BQWRE EQU   &P.BIT4 -      WRU FEATURE TO BE USED IN END SEND
*                             SUBGROUP
&P.WTEOM DS    C -            EOM CHARACTER
&P.WTEOT DS    C -            EOT CHARACTER
&P.WTPAD DS    FL1 -          NUMBER OF PAD (LTRS) CHARACTERS REQUIRED
*                             FOR MOTOR-ON DELAY
         SPACE 1
.C3C     AIF   (NOT (&DEVDOR OR &DEVDMR)).C4
***********************************************************************
*                       OPTICAL READER AND MAGNETIC CHAR READER
***********************************************************************
         SPACE 1
         ORG   &NM
&P.WTOID DS    0A -           SAME AS DCBWTOIA BELOW
         DS    X -            RESERVED
&P.WTOIA DS    AL3 -          A BINARY IDENTIFICATION NUMBER ASSIGNED
*                             BY COMMUNICATIONS TASK TO MESSAGE ISSUED
*                             BY WTO MACRO.  THIS NUMBER IS USED BY THE
*                             DOM MACRO WHEN MESSAGE IS NO LONGER
*                             REQUIRED (MCS SUPPORT).  ---
*                             FOR MAGNETIC CHAR READER - AFTER FIRST
*                             READ HAS BEEN ISSUED, CONTAINS ADDRESS OF
*                             MAGNETIC INTERRUPT CONTROL BLOCK (MICB)
*                             BEING USED BY THE APPENDAGES.
         SPACE 1
         AIF   (NOT &DEVDOR).C3D
***********************************************************************
*                       OPTICAL READER DEVICES
*                       1285, 1287, 1288, 3886
***********************************************************************
         SPACE 1
         ORG   &P.WTOID+4
&P.ERRCN DS    0A -           SAME AS DCBERRCA BELOW
         DS    X -            RESERVED
&P.ERRCA DS    AL3 -          ADDRESS OF 32 BYTES OF DECLARED STORAGE
*                             SPECIFIED BY THE USER IN HIS PROGRAM.
*                             THIS STORAGE WILL BE USED BY THE
*                             PROGRAMMING SUPPORT AS EIGHT 4-BYTE
*                             COUNTERS IN WHICH TOTALS OF CERTAIN 1285,
*                             1287 AND 1288 ERROR CONDITIONS ARE
*                             ACCUMULATED.
         ORG   &P.WTOID+4
&P.LNNUM DS    X -            3886  DOCUMENT LINE NUMBER
&P.LFMAT DS    X -            3886  LINE FORMAT NUMBER
&P.ORFLG DS    X -            3886  FLAGS
&P.EOPFG EQU   &P.BIT0 -      END OF PAGE
         DS    X -            RESERVED
&P.DSPLY DS    0A -           SAME AS DCBDSPLA BELOW
&P.FRID  DS    0CL4 -         3886  FORMAT RECORD ID
         DS    X -            RESERVED
&P.DSPLA DS    AL3 -          ADDRESS OF DSPLY (BSAM) ROUTINE USED FOR
*                             KEYBOARD ENTRY OF A COMPLETE FIELD
&P.RESCN DS    0A -           SAME AS DCBRESCA BELOW
&P.RDLNE DS    0A -           SAME AS DCBRDLNA BELOW
&P.FRTBA DS    0A -           3886  FORMAT RECORD TABLE
         DS    X -            RESERVED
&P.RESCA DS    0AL3 -         ADDRESS OF RESCN (BSAM) ROUTINE USED TO
*                             FORCE ON-LINE CORRECTION OF UNREADABLE
*                             CHARACTERS
&P.RDLNA DS    AL3 -          ADDRESS OF RDLNE (QSAM) ROUTINE USED TO
*                             FORCE ON-LINE CORRECTION OF UNREADABLE
*                             CHARACTERS
&P.ORBYT DS    BL1 -          OPTICAL READER BYTE USED BY BSAM/QSAM
&P.ORSYN EQU   &P.BIT0 -      SYNAD IN CONTROL
&P.OREOF EQU   &P.BIT1 -      END OF FILE (EOF)
&P.ORBFP EQU   &P.BIT2 -      BUFFERS PRIMED (QSAM)
         DS    C -            DCBDEVT - DEVICE TYPE
&P.DVOR5 EQU   X'5A' -        1285 OPTICAL READER
&P.DVOR7 EQU   X'5B' -        1287 OPTICAL READER
&P.DVOR8 EQU   X'5C' -        1288 OPTICAL READER
&P.DVOR9 EQU   X'57' -        3886 OPTICAL READER
&P.EIB   DS    BL1 -          ERROR INDICATOR BYTE
&P.ORNRM EQU   &P.BIT1 -      THE 1287 OR 1288 SCANNER WAS UNABLE TO
*                             LOCATE THE REFERENCE MARK
&P.ORREJ EQU   &P.BIT2 -      FOR 1287, A STACKER SELECT COMMAND WAS
*                             GIVEN AFTER ALLOTTED TIME HAD ELAPSED AND
*                             THE DOCUMENT HAS BEEN PUT IN REJECT
*                             POCKET.  FOR 1288 UNFORMATTED ONLY,
*                             END-OF-PAGE HAS OCCURRED.
&P.ORERR EQU   &P.BIT3 -      A NONRECOVERABLE ERROR HAS OCCURRED.
&P.ORECK EQU   &P.BIT4 -      AN EQUIPMENT CHECK RESULTED IN AN
*                             INCOMPLETE READ
&P.ORWLR EQU   &P.BIT5 -      A WRONG-LENGTH RECORD CONDITION HAS
*                             OCCURRED
&P.ORHPR EQU   &P.BIT6 -      FOR QSAM - OPERATOR ENTERED ONE OR MORE
*                             CHARACTERS FROM THE KEYBOARD.
*                             FOR BSAM - A HOPPER EMPTY CONDITION HAS
*                             OCCURRED
&P.ORDCK EQU   &P.BIT7 -      A DATA CHECK HAS OCCURRED
         DS    X -            RESERVED
         SPACE 1
.C3D     AIF   (NOT &DEVDMR).C4
***********************************************************************
*                       MAGNETIC CHARACTER READER DEVICES
*                       1419 MAGNETIC CHARACTER READER
*                       1275 OPTICAL READER SORTER
*                       3890 MAGNETIC CHARACTER READER
*                       3895 DOCUMENT READER/INSCRIBER
***********************************************************************
         SPACE 1
         ORG   &NM
&P.SSID  DS    CL8 -          BEFORE DCB IS OPENED - NAME OF USER'S
*                             STACKER SELECT ROUTINE.
         SPACE 1
         ORG   &P.SSID
         DS    0A -           AFTER DCB IS OPENED - DCBWTOID
&P.QSMEX DS    A -            ADDRESS OF QSAM EXIT ROUTINE
.*                            QSAM EXIT                        @Y30GS11
&P.SSAD  DS    0A -           ADDRESS OF USER'S STACKER SELECT ROUTINE
&P.IMG   DS    0A -           3890  ADDR OF USER'S IMAGE PROC RTN
         DS    X -            RESERVED
&P.SSADA DS    AL3 -          ADDRESS OF USER'S STACKER SELECT ROUTINE
&P.IMAGE DS    0A -           SAME AS DCBIMAGA BELOW
&P.MRFG  DS    BL1 -          BUFFER INDICATOR
&P.MRBCT EQU   &P.BIT0+&P.BIT1 - TWO-BIT BINARY COUNTER WHICH INDICATES
*                             INTO WHICH BUFFER STATUS INFORMATION IS
*                             TO BE POSTED
&P.IMAGA DS    AL3 -          ADDRESS OF PARAMETER LIST USED TO
*                             COMMUNICATE BETWEEN USER'S PROCESSING
*                             ROUTINES AND HIS STACKER SELECT ROUTINES
&P.ECBLT DS    0A -           SAME AS DCBECBLA BELOW
&P.HDR   DS    0A -           3890  ADDR OF USER'S HEADER DATA AREA
&P.MRIND DS    BL1 -          INDICATOR AND COUNTER BYTE
&P.MRDCT EQU   &P.BIT0+&P.BIT1+&P.BIT2 THREE-BIT BINARY COUNTER OF
*                             NUMBER OF DOCUMENTS READ AFTER DISENGAGE
&P.MRSCU EQU   &P.BIT3 -      DCB WAS ALTERED WHEN SYNAD ROUTINE WAS
*                             ENTERED DUE TO SECONDARY CONTROL UNIT
*                             (SCU) ERROR
&P.MRPLO EQU   &P.BIT4 -      POCKET LIGHT HAS BEEN TURNED ON
&P.MRPLS EQU   &P.BIT5 -      POCKET LIGHT 0-6 IS BEING SET ON
&P.MRERP EQU   &P.BIT6 -      ERROR RECOVERY PROCEDURE IS EXECUTING FOR
*                             PRIMARY CONTROL UNIT (PCU)
&P.MRERS EQU   &P.BIT7 -      ERROR RECOVERY PROCEDURE IS EXECUTING FOR
*                             SECONDARY CONTROL UNIT (SCU)
&P.ECBLA DS    AL3 -          ADDRESS OF ECB LIST PASSED TO WAIT MACRO
*                             BY CHECK MACRO WHEN NO 1419/1275 IS
*                             AVAILABLE FOR PROCESSING
&P.MRFLG DS    BL1 -          FLAG BYTE
&P.MRSCC EQU   &P.BIT0 -      FIRST OR SECOND SECONDARY CONTROL UNIT
*                             COMMAND CHAIN IS BEING USED
&P.MRDBG EQU   &P.BIT1 -      DEBUGGING MODE IN USE
&P.MRDRU EQU   &P.BIT2 -      DISENGAGE REQUESTED BY USER
&P.MRDR  EQU   &P.BIT3 -      DISENGAGE REQUESTED
&P.MRPCC EQU   &P.BIT4+&P.BIT5 - TWO-BIT BINARY COUNTER INDICATING
*                             FIRST, SECOND, OR THIRD PRIMARY CONTROL
*                             UNIT COMMAND CHAIN IS BEING USED
&P.MRDWT EQU   &P.BIT6 -      WTO MESSAGE MUST BE DELETED
&P.MRUE  EQU   &P.BIT7 -      UNIT EXCEPTION
         DS    C -            DCBDEVT - DEVICE TYPE
&P.DVMR  EQU   X'5D' -        1419 MAGNETIC CHARACTER READER
&P.DVORS EQU   X'5F' -        1275 OPTICAL READER SORTER
&P.DVMRS EQU   X'56' -        3890 MAGNETIC CHARACTER READER SORTER
&P.DVDRI EQU   X'59' -        3895 DOCUMENT READER/INSCRIBER   @G30HSJK
&P.APPIN DS    C -            AN INDICATOR USED BY THE APPENDAGES TO
*                             PASS INFORMATION ABOUT ONE CHANNEL CHAIN
*                             TO AN APPENDAGE ASSOCIATED WITH ANOTHER
*                             CHANNEL CHAIN
         DS    X -            RESERVED
         SPACE 1
.C4      AIF   (NOT &DSORGTR).C4A                                S22024
***********************************************************************
*                       3705 LINE TERMINAL
***********************************************************************
         ORG   &NM+8
&P.IPLTX DS    CL8 -          NAME OF MODULE TO BE USED TO IPL
*                             THE 3705
&P.BCKUP DS    0A -           FULL WORD LABEL
         DS    BL1 -          RESERVED
&P.BCKUA DS    AL3 -          ADDRESS OF THE DCB FOR THE
*                             BACKUP 3705.
         SPACE 1
.C4A     AIF   (NOT (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR   *
               &DSORGXE)).C5
***********************************************************************
*                       ACCESS METHOD COMMON INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+16
&P.RELB  DS    0F -           SAME AS DCBREL BELOW
&P.KEYLE DS    FL1 -          KEY LENGTH OF DATA SET
&P.DEVT  DS    0C -           DEVICE TYPE
&P.DVTRM EQU   X'4F' -        TERMINAL.  (DD CONTAINS TERM=TS)
&P.REL   DS    FL3 -          NUMBER OF RELATIVE TRACKS OR BLOCKS IN
*                             THIS DATA SET (BDAM)
&P.BUFCB DS    0A -           ADDRESS OF BUFFER POOL CONTROL BLOCK
&P.BUFNO DS    FL1 -          NUMBER OF BUFFERS REQUIRED FOR THIS DATA
*                             SET.  MAY RANGE FROM 0 TO 255.  IF
*                             UNBLOCKED SPANNED RECORDS ARE USED,
*                             NUMBER OF SEGMENT WORK AREAS REQUIRED
*                             FOR THIS DATA SET.
&P.BUFCA DS    AL3 -          ADDRESS OF BUFFER POOL CONTROL BLOCK
&P.BUFL  DS    H -            LENGTH OF BUFFER.  MAY RANGE FROM 0 TO
*                             32,767.
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSGIS EQU   &P.BIT0 -      IS - INDEXED SEQUENTIAL ORGANIZATION
&P.DSGPS EQU   &P.BIT1 -      PS - PHYSICAL SEQUENTIAL ORGANIZATION
&P.DSGDA EQU   &P.BIT2 -      DA - DIRECT ORGANIZATION
&P.DSGCX EQU   &P.BIT3 -      CX - BTAM OR QTAM LINE GROUP
&P.DSGPO EQU   &P.BIT6 -      PO - PARTITIONED ORGANIZATION
&P.DSGU  EQU   &P.BIT7 -      U  - UNMOVABLE, THE DATA CONTAINS
*                                  LOCATION DEPENDENT INFORMATION
&P.DSRG2 DS    BL1 -          SECOND BYTE OF DCBDSORG
&P.DSGGS EQU   &P.BIT0 -      GS - GRAPHICS ORGANIZATION
&P.DSGTX EQU   &P.BIT1 -      TX - TCAM LINE GROUP
&P.DSGTQ EQU   &P.BIT2 -      TQ - TCAM MESSAGE QUEUE
&P.ACBM  EQU   &P.BIT4 -      ACCESS METHOD CONTROL BLOCK
&P.DSGTR EQU   &P.BIT5 -      TR - TCAM 3705
&P.IOBAD DS    0A -           ADDRESS OF IOB WHEN CHAINED SCHEDULING IS
*                             USED OR FOR 1419/1275
&P.ODEB  DS    0A -           ADDRESS OF OLD DEB
&P.LNP   DS    0FL1 -         3525 PRINTER LINE POSITION COUNTER
&P.QSLM  DS    BL1 -          QSAM LOCATE MODE LOGICAL RECORD INTERFACE
*                             INDICATOR BYTE FOR UPDAT PROCESSING OF
*                             SPANNED RECORDS
&P.1DVDS EQU   &P.BIT0 -      ONLY ONE DEVICE IS ALLOCATED TO THIS
*                             DATA SET
&P.UPDCM EQU   &P.BIT1 -      UPDATE COMPLETE, FREE OLD DEB
&P.UPDBT EQU   &P.BIT2+&P.BIT3 - UPDATE BITS
&P.UPDT  EQU   &P.BIT2 -      UPDATE TO TAKE PLACE
&P.NUPD  EQU   &P.BIT2+&P.BIT3 - NO UPDATE TO TAKE PLACE
&P.SVDEB EQU   &P.BIT3 -      OLD DEB ADDRESS MUST BE SAVED
&P.IOBAA DS    0AL3 -         SAME AS DCBIOBAD ABOVE
&P.ODEBA DS    AL3 -          ADDRESS OF OLD DEB
         ORG   &NM+28
&P.SVCXL DS    0A -           SAME AS DCBSVCXA BELOW
         DS    X -            RESERVED
&P.SVCXA DS    AL3 -          POINTER TO EXIT LIST OF JES
*                             C.I. INTERFACE CONTROL SVC
         SPACE 1
***********************************************************************
*                       FOUNDATION EXTENSION
***********************************************************************
         SPACE 1
&P.EODAD DS    0A -           SAME AS DCBEODA BELOW
&P.HIARC DS    0BL1 -         HIERARCHY BITS
&P.BFTEK DS    0BL1 -         BUFFERING TECHNIQUE BITS
&P.BFALN DS    BL1 -          BUFFER ALIGNMENT BITS
&P.H1    EQU   &P.BIT0 -      HIERARCHY 1 MAIN STORAGE - BIT 5 IS ZERO
&P.BFT   EQU   &P.BIT1+&P.BIT2+&P.BIT3 BUFFERING TECHNIQUE
&P.BFTA  EQU   &P.BIT1+&P.BIT2 - QSAM LOCATE MODE PROCESSING OF SPANNED
*                             RECORDS - OPEN IS TO CONSTRUCT A RECORD
*                             AREA IF IT AUTOMATICALLY CONSTRUCTS
*                             BUFFERS
&P.BFTR  EQU   &P.BIT2 -      FOR BSAM CREATE BDAM PROCESSING OF
*                             UNBLOCKED SPANNED RECORDS - SOFTWARE
*                             TRACK OVERFLOW.  FOR BSAM INPUT
*                             PROCESSING OF UNBLOCKED SPANNED RECORDS
*                             WITH KEYS - RECORD OFFSET PROCESSING.
&P.BFTS  EQU   &P.BIT1 -      SIMPLE BUFFERING - BIT 3 IS ZERO
&P.BFTKR EQU   &P.BIT2 -      UNBLOCKED SPANNED RECORDS - SOFTWARE
*                             TRACK OVERFLOW (BDAM)
&P.BFTE  EQU   &P.BIT3 -      EXCHANGE BUFFERING - BIT 1 IS ZERO
&P.BFTKD EQU   &P.BIT4 -      DYNAMIC BUFFERING (BTAM)
&P.H0    EQU   &P.BIT5 -      HIERARCHY 0 MAIN STORAGE - BIT 0 IS ZERO
&P.BFA   EQU   &P.BIT6+&P.BIT7 - BUFFER ALIGNMENT
&P.BFAD  EQU   &P.BIT6 -      DOUBLEWORD BOUNDARY
&P.BFAF1 EQU   &P.BIT7 -      FULLWORD NOT A DOUBLEWORD BOUNDARY,
*                             CODED IN DCB MACRO INSTRUCTION
&P.BFAF2 EQU   &P.BIT6+&P.BIT7 - FULLWORD NOT A DOUBLEWORD BOUNDARY,
*                             CODED IN DCB MACRO INSTRUCTION
&P.EODA  DS    AL3 -          ADDRESS OF A USER-PROVIDED ROUTINE TO
*                             HANDLE END-OF-DATA CONDITIONS
&P.EXLST DS    0A -           ADDRESS OF USER-PROVIDED LIST OF EXITS
&P.RECFM DS    BL1 -          RECORD FORMAT
&P.RECLA EQU   &P.BIT0+&P.BIT1+&P.BIT2 RECORD LENGTH INDICATOR - ASCII
&P.RECD  EQU   &P.BIT2 -      ASCII VARIABLE RECORD LENGTH
&P.RECL  EQU   &P.BIT0+&P.BIT1 - RECORD LENGTH INDICATOR
&P.RECF  EQU   &P.BIT0 -      FIXED RECORD LENGTH
&P.RECV  EQU   &P.BIT1 -      VARIABLE RECORD LENGTH
&P.RECU  EQU   &P.BIT0+&P.BIT1 - UNDEFINED RECORD LENGTH
&P.RECTO EQU   &P.BIT2 -      TRACK OVERFLOW
&P.RECBR EQU   &P.BIT3 -      BLOCKED RECORDS
&P.RECSB EQU   &P.BIT4 -      FOR FIXED LENGTH RECORD FORMAT - STANDARD
*                             BLOCKS.  FOR VARIABLE LENGTH RECORD
*                             FORMAT - SPANNED RECORDS
&P.RECCC EQU   &P.BIT5+&P.BIT6 - CONTROL CHARACTER INDICATOR
&P.RECCA EQU   &P.BIT5 -      ASA CONTROL CHARACTER
&P.RECCM EQU   &P.BIT6 -      MACHINE CONTROL CHARACTER
&P.RECC  EQU   X'00' -        NO CONTROL CHARACTER
&P.RECKL EQU   &P.BIT7 -      KEY LENGTH (KEYLEN) WAS SPECIFIED IN DCB
*                             MACRO INSTRUCTION
&P.EXLSA DS    AL3 -          ADDRESS OF USER-PROVIDED LIST OF EXITS
         SPACE 1
.C5      AIF   (NOT &DSORGBX).C5B
         AIF   (&DSORGQX AND (&DSORGIS OR &DSORGDA OR &DSORGQS OR      *
               &DSORGBS OR &DSORGXE)).C5A
***********************************************************************
*                       BTAM LINE GROUP INTERFACE
***********************************************************************
         SPACE 1
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR        *
               &DSORGXE).C5A
         ORG   &NM+20
&P.BUFCB DS    0A -           ADDRESS OF BUFFER POOL CONTROL BLOCK
&P.BUFNO DS    FL1 -          NUMBER OF BUFFERS OBTAINED BY OPEN
&P.BUFCA DS    AL3 -          ADDRESS OF BUFFER POOL CONTROL BLOCK
&P.BUFL  DS    H -            BUFFER LENGTH
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSGIS EQU   &P.BIT0 -      IS - INDEXED SEQUENTIAL ORGANIZATION
&P.DSGPS EQU   &P.BIT1 -      PS - PHYSICAL SEQUENTIAL ORGANIZATION
&P.DSGDA EQU   &P.BIT2 -      DA - DIRECT ORGANIZATION
&P.DSGCX EQU   &P.BIT3 -      CX - BTAM OR QTAM LINE GROUP
&P.DSGPO EQU   &P.BIT6 -      PO - PARTITIONED ORGANIZATION
&P.DSGU  EQU   &P.BIT7 -      U  - UNMOVABLE, THE DATA CONTAINS
*                                  LOCATION DEPENDENT INFORMATION
&P.DSRG2 DS    BL1 -          SECOND BYTE OF DCBDSORG
&P.DSGGS EQU   &P.BIT0 -      GS - GRAPHICS ORGANIZATION
&P.DSGTX EQU   &P.BIT1 -      TX - TCAM LINE GROUP
&P.DSGTQ EQU   &P.BIT2 -      TQ - TCAM MESSAGE QUEUE
&P.ACBM  EQU   &P.BIT4 -      ACCESS METHOD CONTROL BLOCK
&P.DSGTR EQU   &P.BIT5 -      TR - TCAM 3705
&P.IOBAD DS    0A -           BASE FOR ADDRESSING IOB'S (BASE = ADDRESS
*                             OF FIRST IOB MINUS LENGTH OF AN IOB)
         DS    FL1 -          DCBDEVTP - INDEX TO DEVICE ENTRY IN THE
*                             DEVICE I/O DIRECTORY
&P.IOBAA DS    AL3 -          SAME AS DCBIOBAD ABOVE
&P.HIARC DS    0BL1 -         HIERARCHY FLAG BITS
&P.BFTEK DS    BL1 -          BUFFERING TECHNIQUE FLAG BITS
&P.H1    EQU   &P.BIT0 -      HIERARCHY 1 MAIN STORAGE - BIT 5 IS ZERO
&P.BFT   EQU   &P.BIT1+&P.BIT2+&P.BIT3 BUFFERING TECHNIQUE
&P.BFTA  EQU   &P.BIT1+&P.BIT2 - QSAM LOCATE MODE PROCESSING OF SPANNED
*                             RECORDS - OPEN IS TO CONSTRUCT A RECORD
*                             AREA IF IT AUTOMATICALLY CONSTRUCTS
*                             BUFFERS
&P.BFTR  EQU   &P.BIT2 -      FOR BSAM CREATE BDAM PROCESSING OF
*                             UNBLOCKED SPANNED RECORDS - SOFTWARE
*                             TRACK OVERFLOW.  FOR BSAM INPUT
*                             PROCESSING OF UNBLOCKED SPANNED RECORDS
&P.BFTS  EQU   &P.BIT1 -      SIMPLE BUFFERING - BIT 3 IS ZERO
&P.BFTKR EQU   &P.BIT2 -      UNBLOCKED SPANNED RECORDS - SOFTWARE
*                             TRACK OVERFLOW (BDAM)
&P.BFTE  EQU   &P.BIT3 -      EXCHANGE BUFFERING - BIT 1 IS ZERO
&P.BFTKD EQU   &P.BIT4 -      DYNAMIC BUFFERING (BTAM)
&P.H0    EQU   &P.BIT5 -      HIERARCHY 0 MAIN STORAGE - BIT 0 IS ZERO
&P.BFA   EQU   &P.BIT6+&P.BIT7 - BUFFER ALIGNMENT
&P.BFAD  EQU   &P.BIT6 -      DOUBLEWORD BOUNDARY
&P.BFAF1 EQU   &P.BIT7 -      FULLWORD NOT A DOUBLEWORD BOUNDARY,
*                             CODED IN DCB MACRO INSTRUCTION
&P.BFAF2 EQU   &P.BIT6+&P.BIT7 - FULLWORD NOT A DOUBLEWORD BOUNDARY,
*                             CODED IN DCB MACRO INSTRUCTION
         DS    BL1 -          DCBERROP - ERROR RECOVERY PROCEDURE BITS
         DS    FL1 -          DCBBUFCT - MAX NUMBER OF READ BUFFERS
         DS    X -            RESERVED
&P.EXLST DS    0A -           ADDRESS OF USER-PROVIDED EXIT LIST
         DS    FL1 -          DCBEIOBX - SIZE OF IOB
&P.EXLSA DS    AL3 -          ADDRESS OF USER-PROVIDED EXIT LIST
         SPACE 1
.C5A     ANOP
         ORG   &NM+33
&P.ERROP DS    BL1 -          ERROR RECOVERY PROCEDURE BITS
&P.ERPT  EQU   &P.BIT3 -      ON-LINE TEST FACILITIES TO BE USED
&P.ERPC  EQU   &P.BIT4 -      THRESHOLD AND CUMULATIVE ERROR COUNTS TO
*                             BE MAINTAINED
&P.ERPW  EQU   &P.BIT5 -      TEXT-WRITE ERRORS TO BE RETRIED
&P.ERPR  EQU   &P.BIT6 -      TEXT-READ ERRORS TO BE RETRIED
&P.ERPN  EQU   &P.BIT7 -      IF ZERO, BASIC ERP TO BE FOLLOWED ---
*                             IF ONE, NO ERP TO BE FOLLOWED
&P.BUFCT DS    FL1 -          CONTAINS MAXIMUM NUMBER OF BUFFERS TO BE
*                             OBTAINED BY BTAM FOR READ OPERATION
*                             (DYNAMIC BUFFERING ONLY)
         SPACE 1
         AIF   (&DSORGQX OR &DSORGTX).C5B
         ORG   &NM+28
&P.DEVTP DS    FL1 -          INDEX TO DEVICE ENTRY IN THE DEVICE I/O
*                             DIRECTORY
         SPACE 1
         ORG   &NM+36
&P.EIOBX DS    FL1 -          SIZE OF EXTENDED IOB.  SIZE OF AN IOB
*                             ASSOCIATED WITH THIS DCB
         SPACE 1
.C5B     AIF   (NOT &DSORGTX).C5B1
***********************************************************************
*                       TCAM LINE GROUP INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+20
&P.MHA   DS    0A -           SAME AS DCBMH BELOW
&P.BUFIN DS    0BL1 -         NUMBER OF INPUT BUFFERS (BITS 0-3)
&P.BUFOU DS    BL1 -          NUMBER OF OUTPUT BUFFERS (BITS 4-7)
&P.BFIN  EQU   &P.BIT0+&P.BIT1+&P.BIT2+&P.BIT3 NUMBER OF BUFFERS
*                             ASSIGNED INITIALLY FOR RECEIVING
*                             OPERATIONS, FOR EACH LINE IN LINE GROUP
&P.BFOUT EQU   &P.BIT4+&P.BIT5+&P.BIT6+&P.BIT7 NUMBER OF BUFFERS
*                             ASSIGNED INITIALLY FOR SENDING
*                             OPERATIONS, FOR EACH LINE IN LINE GROUP
&P.MH    DS    AL3 -          ADDRESS OF MESSAGE HANDLER FOR THIS LINE
*                             GROUP
         DS    FL1 -          DCBINTVL - NUMBER OF SECONDS OF
*                             INVITATION DELAY
&P.PCI   DS    BL1 -          PROGRAM CONTROLLED INTERRUPTION HANDLING
&P.PCIX1 EQU   &P.BIT0 -      PCI=(X,)
&P.PCIX2 EQU   &P.BIT1 -      PCI=(,X)
&P.PCIA1 EQU   &P.BIT2 -      PCI=(A,)
&P.PCIA2 EQU   &P.BIT3 -      PCI=(,A)
&P.PCIN1 EQU   &P.BIT4 -      PCI=(N,)
&P.PCIN2 EQU   &P.BIT5 -      PCI=(,N)
&P.PCIR1 EQU   &P.BIT6 -      PCI=(R,)
&P.PCIR2 EQU   &P.BIT7 -      PCI=(,R)
         AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQX OR        *
               &DSORGQS OR &DSORGBS OR &DSORGXE).C5B2
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSGIS EQU   &P.BIT0 -      IS - INDEXED SEQUENTIAL ORGANIZATION
&P.DSGPS EQU   &P.BIT1 -      PS - PHYSICAL SEQUENTIAL ORGANIZATION
&P.DSGDA EQU   &P.BIT2 -      DA - DIRECT ORGANIZATION
&P.DSGCX EQU   &P.BIT3 -      CX - BTAM OR QTAM LINE GROUP
&P.DSGPO EQU   &P.BIT6 -      PO - PARTITIONED ORGANIZATION
&P.DSGU  EQU   &P.BIT7 -      U  - UNMOVABLE, THE DATA CONTAINS
*                                  LOCATION DEPENDENT INFORMATION
&P.DSRG2 DS    BL1 -          SECOND BYTE OF DCBDSORG
&P.DSGGS EQU   &P.BIT0 -      GS - GRAPHICS ORGANIZATION
&P.DSGTX EQU   &P.BIT1 -      TX - TCAM LINE GROUP
&P.DSGTQ EQU   &P.BIT2 -      TQ - TCAM MESSAGE QUEUE
&P.ACBM  EQU   &P.BIT4 -      ACCESS METHOD CONTROL BLOCK
&P.DSGTR EQU   &P.BIT5 -      TR - TCAM 3705
         AGO   .C5B3
.C5B2    DS    0BL2 -         DCBDSORG - DATA SET ORGANIZATION
         DS    BL1 -          DCBDSRG1 - FIRST BYTE OF DCBDSORG
         DS    BL1 -          DCBDSRG2 - SECOND BYTE OF DCBDSORG
.C5B3    ANOP
&P.BUFMA DS    FL1 -          MAXIMUM NUMBER OF BUFFERS TO BE USED FOR
*                             DATA TRANSFER FOR EACH LINE IN THIS GROUP
         SPACE 1
.C5B1    AIF   (NOT (&DSORGQX OR &DSORGTX)).C6
***********************************************************************
*                       QTAM LINE GROUP INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+20
&P.CLPS  DS    0A -           ADDRESS OF LINE PROCEDURE SPECIFICATION
*                             ROUTINE
&P.BUFRQ DS    FL1 -          NUMBER OF BUFFERS REQUESTED FOR A READ
*                             OR WRITE OPERATION
&P.CLPSA DS    AL3 -          SAME AS DCBCLPS ABOVE
&P.INTVL DS    FL1 -          NUMBER OF SECONDS OF INTENTIONAL DELAY
*                             BETWEEN PASSES THROUGH A POLLING LIST
*                             FOR NONSWITCHED LINES
         DS    X -            RESERVED
         AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQS OR        *
               &DSORGBS OR &DSORGXE OR &DSORGTX).C5C
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSGIS EQU   &P.BIT0 -      IS - INDEXED SEQUENTIAL ORGANIZATION
&P.DSGPS EQU   &P.BIT1 -      PS - PHYSICAL SEQUENTIAL ORGANIZATION
&P.DSGDA EQU   &P.BIT2 -      DA - DIRECT ORGANIZATION
&P.DSGCX EQU   &P.BIT3 -      CX - BTAM OR QTAM LINE GROUP
&P.DSGPO EQU   &P.BIT6 -      PO - PARTITIONED ORGANIZATION
&P.DSGU  EQU   &P.BIT7 -      U  - UNMOVABLE, THE DATA CONTAINS
*                                  LOCATION DEPENDENT INFORMATION
&P.DSRG2 DS    BL1 -          SECOND BYTE OF DCBDSORG
&P.DSGGS EQU   &P.BIT0 -      GS - GRAPHICS ORGANIZATION
&P.DSGTX EQU   &P.BIT1 -      TX - TCAM LINE GROUP
&P.DSGTQ EQU   &P.BIT2 -      TQ - TCAM MESSAGE QUEUE
&P.ACBM  EQU   &P.BIT4 -      ACCESS METHOD CONTROL BLOCK
&P.DSGTR EQU   &P.BIT5 -      TR - TCAM 3705
&P.IOBAD DS    0A -           ADDRESS OF FIRST IOB
&P.DEVTP DS    AL1 -          DEVICE TYPE POINTER
&P.IOBAA DS    AL3 -          ADDRESS OF FIRST IOB
&P.LCBAD DS    0A -           BASE FOR ADDRESSING LCB'S (BASE = ADDRESS
*                             OF FIRST LCB MINUS LENGTH OF ONE LCB)
&P.CPRI  DS    BL1 -          COMMUNICATION PRIORITY BITS
&P.CPR   EQU   &P.BIT5 -      RECEIVING HAS PRIORITY
&P.CPE   EQU   &P.BIT6 -      RECEIVING AND SENDING HAVE EQUAL PRIORITY
&P.CPS   EQU   &P.BIT7 -      SENDING HAS PRIORITY
&P.LCBA  DS    AL3 -          SAME AS DCBLCBAD ABOVE
&P.EXLST DS    0A -           ADDRESS OF EXIT LIST
&P.EIOBX DS    FL1 -          EXTENDED IOB INDEX.  SIZE OF LCB.
&P.EXLSA DS    AL3 -          ADDRESS OF EXIT LIST
         SPACE 1
         AGO   .C6
.C5C     DS    0BL2 -         DCBDSORG - DATA SET ORGANIZATION
         DS    BL1 -          DCBDSRG1 - FIRST BYTE OF DCBDSORG
         DS    BL1 -          DCBDSRG2 - SECOND BYTE OF DCBDSORG
         AIF   (NOT &DSORGTX).C5C1
         AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQS OR        *
               &DSORGBS OR &DSORGXE).C5C1                      @ZA02213
&P.IOBAD DS    0A -           ADDRESS OF FIRST IOB
&P.DEVTP DS    AL1 -          DEVICE TYPE POINTER
&P.IOBAA DS    AL3 -          ADDRESS OF FIRST IOB
         SPACE 1
         AGO   .C5C2
.C5C1    ANOP
&P.DEVTP DS    AL1 -          DEVICE TYPE POINTER
         DS    AL3 -          DCBIOBAA - ADDRESS OF FIRST IOB
         SPACE 1
.C5C2    AIF   (NOT &DSORGTX).C5D
         ORG   &NM+32
&P.TRANA DS    0A -           ADDRESS OF TRANSLATION TABLE
         DS    BL1 -          DCBCPRI - COMMUNICATION PRIORITY BITS
&P.TRANS DS    AL3 -          ADDRESS OF TRANSLATION TABLE
         SPACE 1
.C5D     ORG   &NM+32
&P.LCBAD DS    0A -           BASE FOR ADDRESSING LCB'S (BASE = ADDRESS
*                             OF FIRST LCB MINUS LENGTH OF ONE LCB)
&P.CPRI  DS    BL1 -          COMMUNICATION PRIORITY BITS
&P.CPR   EQU   &P.BIT5 -      RECEIVING HAS PRIORITY
&P.CPE   EQU   &P.BIT6 -      RECEIVING AND SENDING HAVE EQUAL PRIORITY
&P.CPS   EQU   &P.BIT7 -      SENDING HAS PRIORITY
&P.LCBA  DS    AL3 -          SAME AS DCBLCBAD ABOVE
         AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQS OR        *
               &DSORGBS OR &DSORGXE).C5E
&P.EXLST DS    0A -           ADDRESS OF EXIT LIST
&P.EIOBX DS    FL1 -          EXTENDED IOB INDEX.  SIZE OF LCB
&P.EXLSA DS    AL3 -          ADDRESS OF EXIT LIST
         SPACE 1
         AGO   .C6
.C5E     ANOP
&P.EIOBX DS    FL1 -          EXTENDED IOB INDEX.  SIZE OF LCB.
         DS    AL3 -          DCBEXLSA - ADDRESS OF EXIT LIST
         SPACE 1
.C6      AIF   (NOT (&DSORGTQ)).C7                             @ZA02213
***********************************************************************
*                       TCAM MESSAGE QUEUE INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+20
&P.TRMAD DS    0A -           ADDRESS OF USER-PROVIDED AREA IN WHICH
*                             THE TERMINAL NAME IS STORED
         AIF   (&DSORGQX OR &DSORGTX).C6A
&P.BUFRQ DS    FL1 -          NUMBER OF BUFFERS TO BE FILLED FROM THE
*                             DIRECT ACCESS QUEUE
         AGO   .C6B
.C6A     DS    FL1 -          DCBBUFRQ - NUMBER OF BUFFERS TO BE FILLED
*                             FROM THE DIRECT ACCESS QUEUE
.C6B     ANOP
&P.TRMA  DS    AL3 -          SAME AS DCBTRMAD ABOVE
&P.SOWA  DS    H -            SIZE OF USER-PROVIDED WORK AREA
         AIF   (&DSORGIS OR &DSORGBX OR &DSORGDA OR &DSORGQX OR        *
               &DSORGQS OR &DSORGBS OR &DSORGXE OR &DSORGTX).C6C
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSGIS EQU   &P.BIT0 -      IS - INDEXED SEQUENTIAL ORGANIZATION
&P.DSGPS EQU   &P.BIT1 -      PS - PHYSICAL SEQUENTIAL ORGANIZATION
&P.DSGDA EQU   &P.BIT2 -      DA - DIRECT ORGANIZATION
&P.DSGCX EQU   &P.BIT3 -      CX - BTAM OR QTAM LINE GROUP
&P.DSGPO EQU   &P.BIT6 -      PO - PARTITIONED ORGANIZATION
&P.DSGU  EQU   &P.BIT7 -      U  - UNMOVABLE, THE DATA CONTAINS
*                                  LOCATION DEPENDENT INFORMATION
&P.DSRG2 DS    BL1 -          SECOND BYTE OF DCBDSORG
&P.DSGGS EQU   &P.BIT0 -      GS - GRAPHICS ORGANIZATION
&P.DSGTX EQU   &P.BIT1 -      TX - TCAM LINE GROUP
&P.DSGTQ EQU   &P.BIT2 -      TQ - TCAM MESSAGE QUEUE
&P.ACBM  EQU   &P.BIT4 -      ACCESS METHOD CONTROL BLOCK
&P.DSGTR EQU   &P.BIT5 -      TR - TCAM 3705
&P.IOBAD DS    0A -           BEFORE OPEN - ADDRESS OF AVT  ---
*                             AFTER OPEN - BASE FOR ADDRESSING IOB'S
*                             (BASE = ADDRESS OF FIRST IOB MINUS LENGTH
*                             OF ONE IOB)
         DS    FL1 -          DCBBUFMA - MAXIMUM NUMBER OF BUFFERS TO
*                             BE USED FOR DATA TRANSFER FOR EACH LINE
*                             IN THIS GROUP
&P.IOBAA DS    AL3 -          SAME AS DCBIOBAD ABOVE
         AGO   .C6D
.C6C     DS    0BL2 -         DCBDSORG - DATA SET ORGANIZATION
         DS    BL1 -          DCBDSRG1 - FIRST BYTE OF DCBDSORG
         DS    BL1 -          DCBDSRG2 - SECOND BYTE OF DCBDSORG
         DS    A -            DCBIOBAD - BASE FOR ADDRESSING IOB'S
.C6D     SPACE 1
         ORG   &NM+28
&P.SEGAD DS    A -            ADDRESS OF CURRENT SEGMENT
         AIF   (NOT &DSORGTQ).C6D1
&P.THRES DS    FL1 -          FOR NON-REUSABLE MESSAGE QUEUE RECORDS,
*                             PERCENTAGE OF NON-REUSABLE DISK MESSAGE
*                             QUEUE RECORDS TO BE USED BEFORE A FLUSH
*                             CLOSEDOWN OF THE SYSTEM IS INITIATED.
*                             FOR REUSABLE MESSAGE QUEUE RECORDS AND
*                             CHECKPOINT RECORDS, THIS FIELD IS
*                             RESERVED
         AGO   .C6D2
.C6D1    DS    X -            RESERVED
.C6D2    SPACE 1
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR        *
               &DSORGXE).C7
         ORG   &NM+32
&P.EODAD DS    A -            ADDRESS OF USER-PROVIDED ROUTINE
         AIF   (&DSORGBX OR &DSORGQX OR &DSORGTX).C6E
&P.EXLST DS    0A -           ADDRESS OF EXIT LIST
         AGO   .C6F
.C6E     DS    0A -           DCBEXLST - ADDRESS OF EXIT LIST
.C6F     ANOP
&P.RECFM DS    C -            RECORD FORMAT
&P.RECR  EQU   X'02' -        RECORD
&P.RECG  EQU   X'04' -        MESSAGE
&P.RECS  EQU   X'08' -        SEGMENT
         AIF   (&DSORGBX OR &DSORGQX OR &DSORGTX).C6G
&P.EXLSA DS    AL3 -          ADDRESS OF EXIT LIST
         AGO   .C7
.C6G     DS    AL3 -          DCBEXLSA - ADDRESS OF EXIT LIST
.C7      SPACE 1
.C8      AIF   (NOT &DSORGTR).C8A7                               S22024
         ORG   &NM+20
&P.DUMPD DS    0A -           FULL WORD LABEL
&P.UNITN DS    BL1 -          NUMBER OF UNITS FOR READ FOLLOWING
*                             ATTENTION.
&P.DUMPA DS    AL3 -          ADDRESS OF THE DCB USED FOR
*                             DUMPING THE 3705
         DS    AL1 -          RESERVED
&P.TRSTA DS    BL1 -          STATUS BYTE. WHEN SET TO 1,
*                             THE INDICATORS HAVE THE SPECIFIED
*                             MEANING
&P.AUTOI EQU   &P.BIT0 -      IPLAUTO=YES WAS SPECIFIED IN THE
*                             DCB
&P.AUTOD EQU   &P.BIT1 -      DMPAUTO=YES WAS SPECIFIED IN THE
*                             DCB MACRO.
&P.INITL EQU   &P.BIT2 -      BRINGUP=YES WAS SPECIFIED IN THE
*                             DCB MACRO.
&P.RSTRT EQU   &P.BIT3 -      RESTART IS IN PROCESS
&P.IPLED EQU   &P.BIT4 -      3705 HAS BEEN IPL'D.
&P.BAKUP EQU   &P.BIT5 -      BACKUP=YES WAS SPECIFIED IN THE
*                             DCB MACRO.
&P.NIDLE EQU   &P.BIT6 -      IDLE=NO WAS SPECIFIED IN THE OPEN
*                             MACRO OR WAS IMPLIED BY DEFAULT
&P.CHNGL EQU   &P.BIT7 -      IPL TEXT HAS BEEN CHANGED
         AIF   (NOT &DSORGTR OR (&DSORGIS OR &DSORGBX OR               *
               &DSORGDA OR &DSORGQX OR &DSORGQS OR &DSORGBS OR         *
               &DSORGXE OR &DSORGTQ OR &DSORGTX)).C8A0         @ZA02213
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSRG2 DS    BL1 -          SECOND BYTE OF DCBDSORG
&P.DSGTR EQU   &P.BIT5 -      DSORG=TR SPECIFIED
&P.IOBAD DS    A -            ADDRESS OF IOB
         AGO   .C8A1                                             S22024
.C8A0    DS    H -            DCBDSORG
         DS    A -            DCBIOBAD
.C8A1    ANOP                                                    S22024
&P.RNCKD DS    0A -           FULL WORD LABEL
         DS    BL1 -          RESERVED
&P.RNCKA DS    AL3 -          ADDRESS OF THE DCB USED TO RETAIN
*                             INCIDENT CHECKPOINT RECORDS
*                             GENERATED BY THE 3705.
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR        *
               &DSORGXE OR &DSORGBX OR &DSORGQX OR &DSORGTX OR         *
               &DSORGTQ).C8A2                                  @ZA02213
&P.EXLST DS    0A -           FULL WORD LABEL FOR EXLIST
         AGO   .C8A3                                             S22024
.C8A2    DS    0A -           DCBEXLST
.C8A3    AIF   (&DSORGBX OR &DSORGQX OR &DSORGTX).C8A4           S22024
&P.EIOBX DS    BL1 -          SIZE, IN BYTES, OF THE IOB.
         AGO   .C8A5                                             S22024
.C8A4    DS    BL1 -          DCBEIOBX
.C8A5    AIF   (&DSORGBX OR &DSORGQX OR &DSORGTX OR &DSORGIS OR        *
               &DSORGDA OR &DSORGQS OR &DSORGBS OR &DSORGXE  OR        *
               &DSORGTQ).C8A6                                  @ZA02213
&P.EXLSA DS    AL3 -          ADDRESS OF THE EXIT LIST.
         SPACE 1
         AGO   .C8A7                                             S22024
.C8A6    DS    AL3 -          DCBEXLSA
         SPACE 1
.C8A7    AIF   (&DSORGLR AND NOT (&DSORGIS OR &DSORGBX OR &DSORGDA OR  *
               &DSORGQX OR &DSORGXA OR &DSORGQS OR &DSORGBS OR         *
               &DSORGXE OR &DSORGTR)).CF                       @ZA02213
***********************************************************************
*                       FOUNDATION BEFORE OPEN
***********************************************************************
         SPACE 1
         ORG   &NM+40
&P.DDNAM DS    CL8 -          NAME ON THE DD STATEMENT WHICH DEFINES
*                             THE DATA SET ASSOCIATED WITH THIS DCB
&P.OFLGS DS    BL1 -          FLAGS USED BY OPEN ROUTINE
&P.OFLWR EQU   &P.BIT0 -      IF ZERO, LAST I/O OPERATION WAS READ OR
*                             POINT.  IF ONE, LAST I/O OPERATION WAS
*                             WRITE.
&P.OFIOD EQU   &P.BIT0 -      DATA SET IS BEING OPENED FOR INPUT OR
*                             OUTPUT (BDAM)
&P.OFLRB EQU   &P.BIT1 -      LAST I/O OPERATION WAS IN READ BACKWARD
*                             MODE
&P.OFEOV EQU   &P.BIT2 -      SET TO 1 BY EOV WHEN IT CALLS CLOSE
*                             ROUTINE FOR CONCATENATION OF DATA SETS
*                             WITH UNLIKE ATTRIBUTES
&P.OFOPN EQU   &P.BIT3 -      AN OPEN HAS BEEN SUCCESSFULLY COMPLETED
&P.OFPPC EQU   &P.BIT4 -      SET TO 1 BY PROBLEM PROGRAM TO INDICATE A
*                             CONCATENATION OF UNLIKE ATTRIBUTES
&P.OFTM  EQU   &P.BIT5 -      TAPE MARK HAS BEEN READ
&P.OFUEX EQU   &P.BIT6 -      SET TO 0 BY AN I/O SUPPORT FUNCTION WHEN
*                             THAT FUNCTION TAKES A USER EXIT. SET TO 1
*                             ON RETURN FROM USER EXIT TO THE I/O
*                             SUPPORT FUNCTION WHICH TOOK THE EXIT.
&P.OFIOF EQU   &P.BIT7 -      SET TO 1 BY AN I/O SUPPORT FUNCTION IF
*                             DCB IS TO BE PROCESSED BY THAT FUNCTION
&P.IFLG  DS    BL1 -          FLAGS USED BY IOS IN COMMUNICATING ERROR
*                             CONDITIONS AND IN DETERMINING CORRECTIVE
*                             PROCEDURES
&P.IBEC  EQU   &P.BIT0+&P.BIT1 - ERROR CORRECTION INDICATOR
&P.IFNEP EQU   X'00' -        NOT IN ERROR PROCEDURE
&P.EX    EQU   &P.BIT1 -      ERROR CORRECTION OR IOS PAGE FIX IN
*                             PROCESS
&P.IFPEC EQU   &P.BIT0+&P.BIT1 - PERMANENT ERROR CORRECTION
&P.IBPCT EQU   &P.BIT2+&P.BIT3 - PRINTER CARRIAGE TAPE PUNCH INDICATOR
&P.IFC9  EQU   &P.BIT2 -      CHANNEL 9 PRINTER CARRIAGE TAPE PUNCH
*                             SENSED
&P.IFC12 EQU   &P.BIT3 -      CHANNEL 12 PRINTER CARRIAGE TAPE PUNCH
*                             SENSED
&P.IBIOE EQU   &P.BIT4+&P.BIT5 - IOS ERROR ROUTINE USE INDICATOR
&P.IFER  EQU   X'00' -        ALWAYS USE I/O SUPERVISOR ERROR ROUTINE
&P.IFNE1 EQU   &P.BIT5 -      NEVER USE I/O SUPERVISOR ERROR ROUTINE
&P.IFTIM EQU   &P.BIT5 -      TEST IOS MASK (IMSK) FOR ERROR PROCEDURE
*                             (BTAM)
&P.IFNE2 EQU   &P.BIT4 -      NEVER USE I/O SUPERVISOR ERROR ROUTINE
&P.IFNE3 EQU   &P.BIT4+&P.BIT5 - NEVER USE I/O SUPERVISOR ERROR ROUTINE
&P.MACR  DS    0BL2 -         MACRO INSTRUCTION REFERENCE
&P.MACR1 DS    BL1 -          FIRST BYTE OF DCBMACR
&P.MRECP EQU   &P.BIT0 -      EXECUTE CHANNEL PROGRAM (EXCP) ---
*                             ALWAYS ZERO (BSAM, QSAM, BPAM, BISAM,
*                             QISAM, BDAM) --- RESERVED (QTAM, BTAM)
&P.MRFE  EQU   &P.BIT1 -      FOUNDATION EXTENSION IS PRESENT (EXCP)
&P.MRGET EQU   &P.BIT1 -      GET (QSAM, QISAM, TCAM)
&P.MRPTQ EQU   &P.BIT1 -      PUT FOR MESSAGE GROUP (QTAM) ---
*                             ALWAYS ZERO (BSAM, BPAM, BISAM, BDAM) ---
*                             RESERVED (BTAM)
&P.MRAPG EQU   &P.BIT2 -      APPENDAGES ARE REQUIRED (EXCP)
&P.MRRD  EQU   &P.BIT2 -      READ (BSAM, BPAM, BISAM, BDAM, BTAM)
&P.MRWRQ EQU   &P.BIT2 -      WRITE FOR LINE GROUP (QTAM) ---
*                             ALWAYS ZERO (QSAM, QISAM)
&P.MRCI  EQU   &P.BIT3 -      COMMON INTERFACE (EXCP)
&P.MRMVG EQU   &P.BIT3 -      MOVE MODE OF GET (QSAM, QISAM)
&P.MRRDK EQU   &P.BIT3 -      KEY SEGMENT WITH READ (BDAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (BSAM, BPAM, QTAM, BTAM)
&P.MRLCG EQU   &P.BIT4 -      LOCATE MODE OF GET (QSAM, QISAM)
&P.MRRDI EQU   &P.BIT4 -      ID ARGUMENT WITH READ (BDAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (EXCP, BSAM, BPAM, QTAM, BTAM)
&P.MRABC EQU   &P.BIT5 -      USER'S PROGRAM MAINTAINS ACCURATE BLOCK
*                             COUNT (EXCP)
&P.MRPT1 EQU   &P.BIT5 -      POINT (WHICH IMPLIES NOTE) (BSAM, BPAM)
&P.MRSBG EQU   &P.BIT5 -      SUBSTITUTE MODE OF GET (QSAM)
&P.MRDBF EQU   &P.BIT5 -      DYNAMIC BUFFERING (BISAM, BDAM) ---
*                             ALWAYS ZERO (QISAM) ---
*                             RESERVED (QTAM, BTAM)
&P.PGFXA EQU   &P.BIT6 -      PAGE FIX APPENDAGE IS SPECIFIED (EXCP)
&P.MRCRL EQU   &P.BIT6 -      CNTRL (BSAM, QSAM)
&P.MRCHK EQU   &P.BIT6 -      CHECK (BISAM)
&P.MRRDX EQU   &P.BIT6 -      READ EXCLUSIVE (BDAM) ---
*                             RESERVED (BPAM, QISAM, QTAM, BTAM)
&P.MRDMG EQU   &P.BIT7 -      DATA MODE OF GET (QSAM)
&P.MRCK  EQU   &P.BIT7 -      CHECK (BDAM) --- RESERVED (EXCP, BSAM,
*                             BPAM, BISAM, QISAM, QTAM, BTAM)
&P.MACR2 DS    BL1 -          SECOND BYTE OF DCBMACR
&P.MRSTL EQU   &P.BIT0 -      SETL (QISAM) --- ALWAYS ZERO (BSAM, QSAM,
*                             BPAM, BISAM, BDAM) ---
*                             RESERVED (EXCP, QTAM, BTAM)
&P.MRPUT EQU   &P.BIT1 -      PUT (QSAM, TCAM) - PUT OR PUTX (QISAM)
&P.MRGTQ EQU   &P.BIT1 -      GET FOR MESSAGE GROUP (QTAM) ---
*                             ALWAYS ZERO (BSAM, BPAM, BISAM, BDAM) ---
*                             RESERVED (EXCP, BTAM)
&P.MRWRT EQU   &P.BIT2 -      WRITE (BSAM, BPAM, BISAM, BDAM, BTAM)
&P.MRRDQ EQU   &P.BIT2 -      READ FOR LINE GROUP (QTAM) ---
*                             ALWAYS ZERO (QSAM, QISAM) ---
*                             RESERVED (EXCP)
&P.MRMVP EQU   &P.BIT3 -      MOVE MODE OF PUT (QSAM, QISAM)
&P.MRWRK EQU   &P.BIT3 -      KEY SEGMENT WITH WRITE (BDAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (EXCP, BSAM, BPAM, QTAM, BTAM)
&P.MR5WD EQU   &P.BIT4 -      FIVE-WORD DEVICE INTERFACE (EXCP)
&P.MRLDM EQU   &P.BIT4 -      LOAD MODE BSAM (CREATE BDAM DATA SET)
*                             (BSAM)
&P.MRLCP EQU   &P.BIT4 -      LOCATE MODE OF PUT (QSAM, QISAM)
&P.MRIDW EQU   &P.BIT4 -      ID ARGUMENT WITH WRITE (BDAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (BPAM, QTAM, BTAM)
&P.MR4WD EQU   &P.BIT5 -      FOUR-WORD DEVICE INTERFACE (EXCP)
&P.MRPT2 EQU   &P.BIT5 -      POINT (WHICH IMPLIES NOTE) (BSAM, BPAM)
&P.MRTMD EQU   &P.BIT5 -      SUBSTITUTE MODE (QSAM)
&P.MRUIP EQU   &P.BIT5 -      UPDATE IN PLACE (PUTX) (QISAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (BDAM, QTAM, BTAM)
&P.MR3WD EQU   &P.BIT6 -      THREE-WORD DEVICE INTERFACE (EXCP)
&P.MRCTL EQU   &P.BIT6 -      CNTRL (BSAM, QSAM)
&P.MRSTK EQU   &P.BIT6 -      SETL BY KEY (QISAM)
&P.MRAWR EQU   &P.BIT6 -      ADD TYPE OF WRITE (BDAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (BPAM, QTAM, BTAM)
&P.MR1WD EQU   &P.BIT7 -      ONE-WORD DEVICE INTERFACE (EXCP)
&P.MRSWA EQU   &P.BIT7 -      USER'S PROGRAM HAS PROVIDED A SEGMENT
*                             WORK AREA POOL (BSAM CREATE BDAM, BDAM)
&P.MRDMD EQU   &P.BIT7 -      DATA MODE (QSAM)
&P.MRSTI EQU   &P.BIT7 -      SETL BY ID (QISAM) ---
*                             ALWAYS ZERO (BISAM) ---
*                             RESERVED (BPAM, QTAM, BTAM)
         SPACE 1
***********************************************************************
*                       FOUNDATION AFTER OPEN
***********************************************************************
         SPACE 1
         ORG   &NM+40
&P.TIOT  DS    H -            OFFSET FROM TIOT ORIGIN TO TIOELNGH FIELD
*                             IN TIOT ENTRY FOR DD STATEMENT ASSOCIATED
*                             WITH THIS DCB
&P.MACRF DS    0BL2 -         SAME AS DCBMACR BEFORE OPEN
&P.MACF1 DS    BL1 -          FIRST BYTE OF DCBMACRF
&P.MACF2 DS    BL1 -          SECOND BYTE OF DCBMACRF
&P.DEBAD DS    0A -           ADDRESS OF ASSOCIATED DEB
&P.IFLGS DS    BL1 -          SAME AS DCBIFLG BEFORE OPEN
&P.IFEC  EQU   &P.BIT0+&P.BIT1 - ERROR CORRECTION INDICATOR
&P.IFPCT EQU   &P.BIT2+&P.BIT3 - PRINTER CARRIAGE TAPE PUNCH INDICATOR
&P.IFIOE EQU   &P.BIT4+&P.BIT5 - IOS ERROR ROUTINE USE INDICATOR
&P.IFLDT EQU   &P.BIT6 -      3800 PRINTER LOST DATA INDICATOR @G38ESMH
&P.DEBA  DS    AL3 -          ADDRESS OF ASSOCIATED DEB
         SPACE 1
         AIF   (NOT (&DSORGBX OR &DSORGDA OR &DSORGQX OR &DSORGBS)).C8A
         ORG   &NM+48
&P.READ  DS    0A -           ADDRESS OF READ MODULE
&P.WRITE DS    0A -           ADDRESS OF WRITE MODULE          @ZA11086
&P.OFLG  DS    BL1            SAME AS DCBOFLGS BEFORE OPEN     @ZA11086
&P.READA DS    0AL3           ADDRESS OF READ MODULE           @ZA11086
&P.WRITA DS    AL3            ADDRESS OF WRITE MODULE          @ZA11086
         SPACE 1
.C8A     AIF   (NOT (&DSORGIS OR &DSORGQX OR &DSORGQS OR               *
               &DSORGTR)).C8B                                    S22024
         ORG   &NM+48
&P.GET   DS    0A -           ADDRESS OF GET MODULE
&P.PUT   DS    0A -           ADDRESS OF PUT MODULE            @ZA11086
&P.OFLG1 DS    BL1            SAME AS DCBOFLGS BEFORE OPEN     @ZA14562
&P.GETA  DS    0AL3           ADDRESS OF GET MODULE            @ZA11086
&P.PUTA  DS    AL3            ADDRESS OF PUT MODULE            @ZA11086
         SPACE 1
.C8B     AIF   (NOT (&DSORGTX OR &DSORGTR)).C8B2                 S22024
***********************************************************************
*                       TCAM LINE GROUP EXTENSION
*                       3705 EXTENSION
***********************************************************************
         SPACE 1
         ORG   &NM+48
&P.SCTAB DS    0A -           ADDRESS OF SPECIAL CHARACTERS TABLE (SCT)
         DS    BL1 -          DCBOFLGS - FLAGS USED BY OPEN ROUTINE
&P.SCTAD DS    AL3 -          ADDRESS OF SPECIAL CHARACTERS TABLE (SCT)
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR        *
               &DSORGTQ OR &DSORGXA).C8B1                       ZA00023
&P.OPTCD DS    0BL1 -         OPTION CODE
.C8B1    ANOP                                                    S22024
&P.ILCT  DS    FL1 -          COUNT OF INVITATION LISTS
&P.UNTCT DS    FL1 -          BEFORE OPEN - NUMERICAL VALUE OF SCT.
*                             AFTER OPEN - COUNT OF UNITS FOR 1 BUFFER.
&P.BUFSI DS    H -            SIZE OF ALL BUFFERS USED FOR THIS LINE
*                             GROUP
         AIF   (NOT &DSORGTX).C8B2                               S22024
&P.RESER DS    0CL4 -         NUMBER OF RESERVED BYTES IN BUFFERS
&P.RESB1 DS    FL1 -          NUMBER OF BYTES RESERVED IN THE BUFFER
*                             RECEIVING FIRST INCOMING SEGMENT OF A
*                             MESSAGE
&P.RESB2 DS    FL1 -          NUMBER OF BYTES RESERVED IN ALL BUFFERS
*                             EXCEPT THE ONE CONTAINING FIRST SEGMENT
*                             OF A MESSAGE
         DS    XL2 -          RESERVED
         SPACE 1
*        THE FOLLOWING 4 BYTES MAY BE REPEATED 'N' TIMES
&P.INVLI DS    0A -           ADDRESS OF INVITATION LIST
&P.INVCI DS    BL1 -          TYPE OF COMMUNICATION INTERFACE FOR 2701
*                             DATA ADAPTER UNIT
&P.INVB1 EQU   &P.BIT2 -      IF ZERO, UNIT (A,)
*                             IF ONE, UNIT (B,)
&P.INVB2 EQU   &P.BIT4 -      IF ZERO, UNIT (,A)
*                             IF ONE, UNIT (,B)
&P.INVLA DS    AL3 -          ADDRESS OF INVITATION LIST
.C8B2    ANOP
         SPACE 1
         AIF   (NOT (&DSORGXA)).C8F                             ZA00023
***********************************************************************
*                       EXCP WITH APPENDAGES
***********************************************************************
         SPACE 1
         ORG   &NM+52
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR        *
               &DSORGTQ).C8C                                     S22024
&P.OPTCD DS    BL1 -          OPTION CODES
&P.OPTJ  EQU   &P.BIT7       3800 PRINTER,OPTCD=J              @Z40MSRZ
         AGO   .C8D
.C8C     DS    BL1 -          DCBOPTCD - OPTION CODES
.C8D     AIF   (&DSORGQS OR &DSORGBS).C8E
&P.OPTZ  EQU   &P.BIT5 -      MAGNETIC TAPE DEVICES - USE REDUCED ERROR
*                             RECOVERY PROCEDURE (EXCP, BSAM, BPAM,
*                             QSAM)
&P.SRCHD EQU   &P.BIT5 -      USE SEARCH DIRECT, INSTEAD OF SEARCH
*                             PREVIOUS, ON RECORD POSITION SENSING
*                             DEVICE  (EXCP, BSAM, BPAM, QSAM)
.C8E     DS    XL7 -          RESERVED
         SPACE 1
***********************************************************************
*                       EXCP APPENDAGE LIST
***********************************************************************
         SPACE 1
         ORG   &NM+60
&P.EOEA  DS    CL2 -          END OF EXTENT APPENDAGE ID
&P.PCIA  DS    CL2 -          PROGRAM CONTROLLED INTERRUPTION
*                             APPENDAGE ID
&P.SIOA  DS    CL2 -          START I/O APPENDAGE ID
&P.CENDA DS    CL2 -          CHANNEL END APPENDAGE ID
&P.XENDA DS    CL2 -          ABNORMAL END APPENDAGE ID
         DS    XL2 -          RESERVED
.C8F     ANOP                                                   ZA00023
         AIF   (NOT &DSORGXE).C9                                ZA00023
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS OR        *
               &DSORGTQ OR &DSORGXA OR &DSORGTX OR &DSORGTR).C9
.*                                                              ZA00023
         SPACE 1
         ORG   &NM+52
&P.OPTCD DS    0BL1 -                   OPTION CODE
.C9      ANOP
         SPACE 1
         AIF   (NOT &DSORGIS).CA
***********************************************************************
*                       BISAM-QISAM INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+52
&P.OPTCD DS    BL1 -          OPTION CODES
         AIF   (&DSORGQS OR &DSORGBS).C9A
&P.OPTW  EQU   &P.BIT0 -      WRITE VALIDITY CHECK (DASD)
*                             (BSAM, BPAM, QSAM, ISAM, BDAM)
         AGO   .C9B
.C9A     ANOP
*        BIT0 IS DCBOPTW - SAME AS BSAM
.C9B     ANOP
&P.OPTUF EQU   &P.BIT1 -      FULL-TRACK INDEX WRITE
&P.OPTM  EQU   &P.BIT2 -      MASTER INDEXES
&P.OPTI  EQU   &P.BIT3 -      INDEPENDENT OVERFLOW AREA
&P.OPTY  EQU   &P.BIT4 -      CYLINDER OVERFLOW AREA
&P.OPTL  EQU   &P.BIT6 -      DELETE OPTION
&P.OPTR  EQU   &P.BIT7 -      REORGANIZATION CRITERIA
&P.MAC   DS    BL1 -          EXTENSION OF DCBMACRF FIELD FOR ISAM
&P.MACUR EQU   &P.BIT4 -      UPDATE FOR READ
&P.MACUW EQU   &P.BIT5 -      UPDATE TYPE OF WRITE
&P.MACAW EQU   &P.BIT6 -      ADD TYPE OF WRITE
&P.MACRE EQU   &P.BIT7 -      READ EXCLUSIVE
&P.NTM   DS    FL1 -          NUMBER OF TRACKS THAT DETERMINE THE
*                             DEVELOPMENT OF A MASTER INDEX
*                             MAXIMUM PERMISSABLE VALUE - 99
&P.CYLOF DS    FL1 -          NUMBER OF TRACKS TO BE RESERVED ON EACH
*                             PRIME DATA CYLINDER FOR RECORDS THAT
*                             OVERFLOW FROM OTHER TRACKS ON THAT
*                             CYLINDER
&P.SYNAD DS    A -            ADDRESS OF USER'S SYNAD ROUTINE
&P.RKP   DS    H -            RELATIVE POSITION OF FIRST BYTE OF KEY
*                             WITHIN EACH LOGICAL RECORD
&P.BLKSI DS    H -            BLOCK SIZE
&P.LPDT  DS    0BL8 -         FOR RESUME LOAD,THE LAST PRIME DATA
*                             TRACK ON THE LAST PRIME DATA CYLINDER
*                             IN THE FORM MBBCCHHR.
&P.MSWA  DS    A -            ADDRESS OF MAIN STORAGE WORK AREA FOR USE
*                             BY CONTROL PROGRAM WHEN NEW RECORDS ARE
*                             BEING ADDED TO AN EXISTING DATA SET
&P.SMSI  DS    H -            NUMBER OF BYTES IN AREA RESERVED TO HOLD
*                             HIGHEST LEVEL INDEX
&P.SMSW  DS    H -            NUMBER OF BYTES IN WORK AREA USED BY
*                             CONTROL PROGRAM WHEN NEW RECORDS ARE
*                             BEING ADDED TO DATA SET
&P.MSHI  DS    0A -           ADDRESS OF MAIN STORAGE AREA TO HOLD
*                             HIGHEST LEVEL INDEX
&P.NCP   DS    FL1 -          NUMBER OF COPIES OF READ-WRITE (TYPE K)
*                             CHANNEL PROGRAMS THAT ARE TO BE
*                             ESTABLISHED FOR THIS DCB.  (99 MAXIMUM)
&P.MSHIA DS    AL3 -          SAME AS DCBMSHI ABOVE
&P.SETL  DS    A -            ADDRESS OF SETL MODULE FOR QISAM.
*                             ADDRESS OF CHECK MODULE FOR BISAM
&P.EXCD1 DS    BL1 -          FIRST BYTE IN WHICH EXCEPTIONAL
*                             CONDITIONS DETECTED IN PROCESSING DATA
*                             RECORDS ARE REPORTED TO THE USER
&P.EXNKY EQU   &P.BIT0 -      LOWER KEY LIMIT NOT FOUND
&P.EXIDA EQU   &P.BIT1 -      INVALID DEVICE ADDRESS FOR LOWER LIMIT
&P.EXNSP EQU   &P.BIT2 -      SPACE NOT FOUND
&P.EXINV EQU   &P.BIT3 -      INVALID REQUEST
&P.EXIER EQU   &P.BIT4 -      UNCORRECTABLE INPUT ERROR
&P.EXOER EQU   &P.BIT5 -      UNCORRECTABLE OUTPUT ERROR
&P.EXBLI EQU   &P.BIT6 -      BLOCK COULD NOT BE REACHED (INPUT)
&P.EXBLU EQU   &P.BIT7 -      BLOCK COULD NOT BE REACHED (UPDATE)
&P.EXCD2 DS    BL1 -          SECOND BYTE IN WHICH EXCEPTIONAL
*                             CONDITIONS DETECTED IN PROCESSING DATA
*                             RECORDS ARE REPORTED TO THE USER
&P.EXSEQ EQU   &P.BIT0 -      SEQUENCE CHECK
&P.EXDUP EQU   &P.BIT1 -      DUPLICATE RECORD
&P.EXCLD EQU   &P.BIT2 -      DCB CLOSED WHEN ERROR WAS DETECTED
&P.EXOFL EQU   &P.BIT3 -      OVERFLOW RECORD
&P.EXLTH EQU   &P.BIT4 -      FOR PUT - LENGTH FIELD OF RECORD LARGER
*                             THAN LENGTH INDICATED IN DCBLRECL
&P.EXRDE EQU   &P.BIT4 -      READ EXCLUSIVE
&P.LRECL DS    H -            FOR FIXED-LENGTH RECORD FORMATS, LOGICAL
*                             RECORD LENGTH.  FOR VARIABLE-LENGTH
*                             RECORD FORMATS, MAXIMUM LOGICAL RECORD
*                             LENGTH OR AN ACTUAL LOGICAL RECORD LENGTH
*                             CHANGED DYNAMICALLY BY USER WHEN CREATING
*                             THE DATA SET
&P.ESETL DS    A -            ADDRESS OF ESETL ROUTINE IN GET MODULE
&P.LRAN  DS    A -            ADDRESS OF READ-WRITE K MODULE OR
*                             EXCLUSIVE MODULE
&P.LWKN  DS    A -            ADDRESS OF WRITE KN MODULE
&P.RELSE DS    A -            WORK AREA FOR TEMPORARY STORAGE OF
*                             REGISTER CONTENTS
&P.PUTX  DS    A -            WORK AREA FOR TEMPORARY STORAGE OF
*                             REGISTER CONTENTS
&P.RELEX DS    A -            ADDRESS OF READ EXCLUSIVE MODULE
&P.FREED DS    A -            ADDRESS OF DYNAMIC BUFFERING MODULE
&P.HIRTI DS    FL1 -          NUMBER OF INDEX ENTRIES THAT FIT ON A
*                             PRIME DATA TRACK
&P.FTMI2 DS    CL7 -          DIRECT ACCESS DEVICE ADDRESS OF FIRST
*                             TRACK OF SECOND LEVEL MASTER INDEX (IN
*                             THE FORM MBBCCHH)
&P.LEMI2 DS    CL5 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             ACTIVE ENTRY IN SECOND LEVEL MASTER INDEX
*                             (IN THE FORM CCHHR)
&P.FTMI3 DS    CL7 -          DIRECT ACCESS DEVICE ADDRESS OF FIRST
*                             TRACK OF THIRD LEVEL MASTER INDEX (IN
*                             THE FORM MBBCCHH)
&P.LEMI3 DS    CL5 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             ACTIVE ENTRY IN THIRD LEVEL MASTER INDEX
*                             (IN THE FORM CCHHR)
&P.NLEV  DS    FL1 -          NUMBER OF LEVELS OF INDEX
&P.FIRSH DS    CL3 -          HHR OF FIRST DATA RECORD ON EACH
*                             CYLINDER.  FOR VARIABLE LENGTH RECORD
*                             PROCESSING, R PORTION OF THIS FIELD IS
*                             ALWAYS X'01'.
&P.HMASK DS    CL1 -          BYTE INDICATING 2301 OR NOT
&P.HMDRM EQU   X'07' -        DEVICE IS 2301 DRUM
&P.HMNDM EQU   X'FF' -        DEVICE IS OTHER THAN 2301 DRUM
&P.LDT   DS    CL2 -          HH IS THE LAST PRIME DATA TRACK ON EACH
*                             CYLINDER
&P.HIRCM DS    CL1 -          HIGHEST POSSIBLE R FOR TRACKS OF THE
*                             CYLINDER AND MASTER INDICES
&P.HIRPD DS    CL1 -          HIGHEST R ON ANY PRIME TRACK IN DATA SET.
*                             FOR VARIABLE-LENGTH RECORDS, THIS
*                             REPRESENTS THE GREATEST NUMBER OF
*                             PHYSICAL RECORDS ON ANY PRIME TRACK IN
*                             THE DATA SET
&P.HIROV DS    CL1 -          FOR FIXED-LENGTH RECORD FORMAT, HIGHEST
*                             POSSIBLE R FOR OVERFLOW DATA TRACKS.  FOR
*                             VARIABLE-LENGTH RECORD FORMAT, UNUSED.
&P.HIRSH DS    CL1 -          FOR FIXED-LENGTH RECORD FORMAT, R OF LAST
*                             DATA RECORD ON A SHARED TRACK, IF
*                             APPLICABLE.  FOR VARIABLE-LENGTH RECORD
*                             FORMAT, UNUSED.
&P.TDC   DS    H -            USER-SUPPLIED NUMBER OF RECORDS TAGGED
*                             FOR DELETION.
&P.NCRHI DS    H -            NUMBER OF STORAGE LOCATIONS NEEDED TO
*                             HOLD THE HIGHEST LEVEL INDEX
&P.RORG3 DS    F -            FOR EACH USE OF DATA SET, NUMBER OF READ
*                             OR WRITE ACCESSES TO AN OVERFLOW RECORD
*                             WHICH IS NOT FIRST IN A CHAIN OF SUCH
*                             RECORDS
&P.NREC  DS    F -            NUMBER OF LOGICAL RECORDS IN PRIME DATA
*                             AREA
&P.ST    DS    BL1 -          STATUS INDICATORS
&P.STSSM EQU   &P.BIT0 -      SINGLE SCHEDULE MODE
&P.STKSQ EQU   &P.BIT1 -      KEY SEQUENCE CHECKING IS TO BE PERFORMED
&P.STLOD EQU   &P.BIT2 -      LOADING HAS COMPLETED.  SET TO 1 BY CLOSE
*                             ROUTINE AND TO 0 BY FIRST EXECUTION OF
*                             PUT ROUTINE.
&P.STNCY EQU   &P.BIT3 -      EXTENSION OF DATA SET WILL BEGIN ON NEW
*                             CYLINDER
&P.STNMC EQU   &P.BIT5 -      FIRST MACRO INSTRUCTION NOT YET RECEIVED
&P.STLBF EQU   &P.BIT6 -      LAST BLOCK FULL
&P.STLTF EQU   &P.BIT7 -      LAST TRACK FULL
&P.FTCI  DS    CL7 -          DIRECT ACCESS DEVICE ADDRESS OF FIRST
*                             TRACK OF CYLINDER INDEX (IN THE FORM
*                             MBBCCHH).
&P.HIIOV DS    CL1 -          FOR FIXED LENGTH RECORD FORMAT, HIGHEST
*                             POSSIBLE R FOR INDEPENDENT OVERFLOW DATA
*                             TRACKS.  FOR VARIABLE LENGTH RECORD
*                             FORMAT, UNUSED
&P.FTMI1 DS    CL7 -          DIRECT ACCESS DEVICE ADDRESS OF FIRST
*                             TRACK OF FIRST LEVEL MASTER INDEX (IN
*                             THE FORM MBBCCHH).
&P.NTHI  DS    FL1 -          NUMBER OF TRACKS OF HIGH-LEVEL INDEX
&P.FTHI  DS    CL7 -          DIRECT ACCESS DEVICE ADDRESS OF FIRST
*                             TRACK OF HIGHEST LEVEL INDEX (IN THE
*                             FORM MBBCCHH).
&P.LPDA  DS    CL8 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             PRIME DATA RECORD IN PRIME DATA AREA
*                             (IN THE FORM MBBCCHHR).
&P.LETI  DS    CL5 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             ACTIVE NORMAL ENTRY OF TRACK INDEX ON
*                             LAST ACTIVE CYLINDER (IN THE FORM CCHHR).
&P.OVDEV DS    CL1 -          DEVICE TYPE FOR INDEPENDENT OVERFLOW
*        THESE SAME MASKS APPLY TO DCBDEVT FOR ISAM DIRECT ACCESS
&P.DVI01 EQU   X'02' -        2301 PARALLEL DRUM
&P.DVI03 EQU   X'03' -        2303 SERIAL DRUM
&P.DVI02 EQU   X'04' -        2302 DISK STORAGE
&P.DVI05 EQU   X'05' -        2305 DRUM
&P.DVI14 EQU   X'08' -        2314 DISK STORAGE FACILITY
&P.DVI30 EQU   X'09' -        3330 DISK STORAGE FACILITY
&P.NBOV  DS    H -            FOR FIXED LENGTH RECORD FORMAT, RESERVED.
*                             FOR VARIABLE LENGTH RECORD FORMAT, IF THE
*                             INDEPENDENT OVERFLOW OPTION IS SELECTED,
*                             CONTAINS, IN BINARY, NUMBER OF BYTES LEFT
*                             ON CURRENT TRACK OF INDEPENDENT OVERFLOW
*                             AREA
&P.LECI  DS    CL5 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             ACTIVE ENTRY IN CYLINDER INDEX (IN THE
*                             FORM CCHHR).
         DS    X -            RESERVED
&P.RORG2 DS    H -            NUMBER OF TRACKS (PARTIALLY OR WHOLLY)
*                             REMAINING IN INDEPENDENT OVERFLOW AREA
&P.LEMI1 DS    CL5 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             ACTIVE ENTRY IN FIRST LEVEL MASTER INDEX
*                             (IN THE FORM CCHHR).
         DS    X -            RESERVED
&P.NOREC DS    H -            NUMBER OF LOGICAL RECORDS IN AN OVERFLOW
*                             AREA
&P.LIOV  DS    CL8 -          DIRECT ACCESS DEVICE ADDRESS OF LAST
*                             AREA (IN THE FORM MBBCCHHR).
&P.RORG1 DS    H -            NUMBER OF CYLINDER OVERFLOW AREAS THAT
*                             ARE FULL
         DS    XL2 -          RESERVED
&P.WKPT1 DS    A -            POINTER TO WORK AREA OR TO CONSTRUCTED
*                             CHANNEL PROGRAM FOR WHICH SPACE IS
*                             OBTAINED BY GETMAIN MACRO INSTRUCTIONS
*                             ISSUED BY OPEN EXECUTORS
&P.WKPT2 DS    A -            ADDITIONAL POINTER AS IN DCBWKPT1
&P.WKPT3 DS    A -            ADDITIONAL POINTER AS IN DCBWKPT1
&P.WKPT4 DS    A -            ADDITIONAL POINTER AS IN DCBWKPT1
&P.WKPT5 DS    A -            ADDITIONAL POINTER AS IN DCBWKPT1
&P.WKPT6 DS    A -            ADDITIONAL POINTER AS IN DCBWKPT1
         SPACE 1
.CA      AIF   (NOT &DSORGDA).CB
***********************************************************************
*                       BDAM INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+52
&P.CHECK DS    0A -           ADDRESS OF CHECK MODULE
         AIF   (&DSORGIS).CA1
&P.OPTCD DS    BL1 -          OPTION CODES
         AGO   .CA2
.CA1     DS    BL1 -          DCBOPTCD - OPTION CODES
.CA2     AIF   (&DSORGIS OR &DSORGQS OR &DSORGBS).CA3
&P.OPTW  EQU   &P.BIT0 -      WRITE VALIDITY CHECK (DASD)
*                             (BSAM, BPAM, QSAM, ISAM, BDAM)
         AGO   .CA4
.CA3     ANOP
*        BIT0 IS DCBOPTW - SAME AS BSAM AND ISAM
.CA4     ANOP
&P.OPTTO EQU   &P.BIT1 -      TRACK OVERFLOW
&P.OPTE  EQU   &P.BIT2 -      EXTENDED SEARCH
&P.OPTF  EQU   &P.BIT3 -      FEEDBACK
&P.OPTA  EQU   &P.BIT4 -      ACTUAL ADDRESSING
&P.OPTDB EQU   &P.BIT5 -      DYNAMIC BUFFERING
&P.OPTRE EQU   &P.BIT6 -      READ EXCLUSIVE
&P.OPTRB EQU   &P.BIT7 -      RELATIVE BLOCK ADDRESSING
&P.CHCKA DS    AL3 -          ADDRESS OF CHECK MODULE
         AIF   (&DSORGIS).CAA
&P.SYNAD DS    A -            ADDRESS OF SYNAD ROUTINE
         DS    XL2 -          RESERVED
&P.BLKSI DS    H -            MAXIMUM BLOCK SIZE
         AGO   .CAB
.CAA     DS    A -            DCBSYNAD - ADDRESS OF SYNAD ROUTINE
         DS    XL2 -          RESERVED
         DS    H -            DCBBLKSI - MAXIMUM BLOCK SIZE
.CAB     ANOP
&P.IOBSQ DS    A -            ADDRESS OF FIRST IOB ON UNSCHEDULED QUEUE
*                             FOR EITHER A WRITE-ADD REQUEST WHEN
*                             ANOTHER WRITE-ADD IS IN PROGRESS OR A
*                             READ-EXCLUSIVE REQUEST WHEN THE
*                             READ-EXCLUSIVE LIST IS FULL
&P.SQND  DS    A -            ADDRESS OF LAST IOB ON UNSCHEDULED QUEUE
&P.IOBUQ DS    A -            ADDRESS OF FIRST IOB ON UNPOSTED QUEUE
&P.UQND  DS    A -            ADDRESS OF LAST JOB ON UNPOSTED QUEUE
*                             THAT IS MAINTAINED BY THE READ EXCLUSIVE
*                             MODULE
         DS    X -            RESERVED
&P.LIMCT DS    FL3 -          NUMBER OF TRACKS OR NUMBER OF RELATIVE
*                             BLOCKS TO BE SEARCHED (EXTENDED SEARCH
*                             OPTION)
&P.XARG  DS    0A -           ADDRESS OF READ EXCLUSIVE LIST
&P.XCNT  DS    FL1 -          NUMBER OF ENTRIES IN READ EXCLUSIVE LIST
&P.XARGA DS    AL3 -          ADDRESS OF READ EXCLUSIVE LIST
&P.DRDX  DS    0A -           ADDRESS OF READ EXCLUSIVE MODULE
&P.MVXNO DS    FL1 -          TOTAL NUMBER OF EXTENTS IN MULTIVOLUME
*                             DATA SET
&P.DRDXA DS    AL3 -          ADDRESS OF READ EXCLUSIVE MODULE
&P.DFOR  DS    A -            ADDRESS OF A FORMAT MODULE
&P.DFBK  DS    A -            ADDRESS OF A FEEDBACK MODULE
&P.DYNB  DS    A -            FOR DYNAMIC BUFFERING, ADDRESS OF DYNAMIC
*                             BUFFER MODULE.  FOR UNBLOCKED SPANNED
*                             RECORDS WITH BFTEK=R SPECIFIED AND NO
*                             DYNAMIC BUFFERING, ADDRESS OF SEGMENT
*                             WORK AREA CONTROL BLOCK
         SPACE 1
.CB      AIF   (NOT &DSORGQX).CC
***********************************************************************
*                       QTAM INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+52
&P.KSTAT DS    0CL4 -         FOUR THRESHOLD VALUES FOR ERROR COUNTS
&P.KSTA1 DS    FL1 -          THRESHOLD VALUE FOR NUMBER OF
*                             TRANSMISSIONS
&P.KSTA2 DS    FL1 -          THRESHOLD VALUE FOR NUMBER OF DATA CHECKS
&P.KSTA3 DS    FL1 -          THRESHOLD VALUE FOR NUMBER OF
*                             INTERVENTIONS REQUIRED
&P.KSTA4 DS    FL1 -          THRESHOLD VALUE FOR NUMBER OF TIMEOUTS
         SPACE 1
***********************************************************************
*                       QTAM POLLING LIST ORIGIN
***********************************************************************
         SPACE 1
&P.CPOLL DS    0A -           A 4-BYTE FIELD FOR EACH POLLING LIST
&P.PLBYT DS    BL1 -          ADAPTER TYPE
&P.CPWTT EQU   &P.BIT4 -      WTTA
&P.CPOLA DS    AL3 -          ADDRESS OF THE POLLING LIST
         SPACE 1
.CC      AIF   (NOT &DSORGTQ).CD                               @ZA02213
***********************************************************************
*                       TCAM MESSAGE QUEUE INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+52
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS).CC1A
&P.OPTCD DS    BL1 -          OPTION CODES
         AGO   .CC1B
.CC1A    DS    BL1 -          DCBOPTCD - OPTION CODES
.CC1B    ANOP
&P.OPTWP EQU   &P.BIT0 -      SOURCE OR DESTINATION NAME PRECEDES
*                             MESSAGE (AFTER CONTROL BYTE)
*                             (TCAM PROCESS QUEUE)
&P.OPTUM EQU   &P.BIT1 -      WORK UNIT IS A MESSAGE.  DEFAULT WORK
*                             UNIT IS A RECORD.  (TCAM PROCESS QUEUE)
&P.OPTCB EQU   &P.BIT2 -      CONTROL BYTE PRECEDES WORK UNIT
*                             (TCAM PROCESS QUEUE)
&P.OPTCP EQU   &P.BIT2 -      CHECKPOINT DATA SET
&P.OPTIM EQU   &P.BIT6 -      NON-REUSABLE MESSAGE QUEUE DATA SET
&P.OPTRM EQU   &P.BIT7 -      REUSABLE MESSAGE QUEUE DATA SET
         AIF   (&DSORGIS OR &DSORGDA OR &DSORGQS OR &DSORGBS).CC1D
*
         DS    XL9 -           RESERVED
&P.BLKSI DS    H -             BLOCK SIZE
         AGO   .CC1E                                         ICBI DCB-9
.CC1D    DS    XL11 -         RESERVED
.CC1E    SPACE 1
.CD      AIF   (NOT &DSORGBX).CDF
***********************************************************************
*                       BTAM INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+52
&P.LERB  DS    0A -           ADDRESS OF LINE ERROR BLOCK
&P.RDYI  DS    0X -           READYQ INDICATORS
&P.RDYIQ EQU   &P.BIT6 -      ADDRESS IS READYQ AND NOT LERB
&P.RDYIZ EQU   &P.BIT7 -      READYQ SPECIFIED, BUT ADDRESS WAS 0,
*                             SO USING BTAM READYQ ROUTINE
&P.RDYQ  DS    A -            ADDRESS OF USER/BTAM ROUTINE TO PROCESS
*                             LOCAL 3270 DEVICE READY INTERRUPTS
         SPACE 1
         AIF   (NOT &DEVDBS).CDF
***********************************************************************
*                       BSC INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+56
&P.XMODE DS    BL1 -          MODE OF TRANSMISSION FOR BINARY
*                             SYNCHRONOUS COMMUNICATION (BSC)
&P.XMIBC EQU   &P.BIT1 -      INTERMEDIATE BLOCK CHECKING IS TO BE
*                             PERFORMED
&P.XMDA1 EQU   &P.BIT2 -      TRANSMISSION IS THROUGH A 2701 DATA
*                             ADAPTER UNIT DUAL COMMUNICATION
*                             INTERFACE B
&P.XMDA2 EQU   &P.BIT4 -      TRANSMISSION IS IN CODE B FOR A 2701
*                             DATA ADAPTER UNIT DUAL CODE FEATURE
&P.XCODE DS    BL1 -          BSC CONTROL STATION FLAG AND
*                             TRANSMISSION CODE
&P.XCCSF EQU   &P.BIT0 -      BSC CONTROL STATION FLAG ---
*                             IF ZERO, THIS IS THE CONTROL STATION.
*                             IF ONE, THIS IS THE REMOTE STATION.
&P.XCPTP EQU   &P.BIT1 -      IF PTOP IS SPECIFIED IN SYSGEN PROCEDURE
*                             - SCHEDULE AN ASYNCHRONOUS EXIT TO
*                             INTERFACE RESOLUTION ROUTINE
&P.XCTR1 EQU   &P.BIT2 -      6-BIT TRANSCODE IS BEING USED (BIT 4 IS
*                             ALSO ON)
&P.XCAS1 EQU   &P.BIT3 -      USASCII TRANSMISSION CODE IS BEING USED
*                             (BIT 5 IS ALSO ON)
&P.XCEBC EQU   &P.BIT4+&P.BIT5 - IF BOTH BITS ARE ZERO, EBCDIC
*                             TRANSMISSION CODE IS BEING USED.
&P.XCTR2 EQU   &P.BIT4 -      6-BIT TRANSCODE IS BEING USED (BIT 2 IS
*                             ALSO ON)
&P.XCAS2 EQU   &P.BIT5 -      USASCII TRANSMISSION CODE IS BEING USED
*                             (BIT 3 IS ALSO ON)
&P.BSRSV DS    CL1 -          DLE CONTROL CHARACTER
&P.BSWBT DS    X -            RESERVED
&P.IRRAD DS    0A -           BEFORE OPEN - IF PTOP IS SPECIFIED IN THE
*                             SYSGEN PROCEDURE, ADDRESS OF INTERFACE
*                             RESOLUTION ROUTINE.
*                             AFTER OPEN, THE FOLLOWING 4 CHARACTERS
*                             OCCUPY THIS SPACE.
&P.BSTSX DS    CL1 -          DLE CONTROL CHARACTER
&P.BSSTX DS    CL1 -          STX CONTROL CHARACTER
&P.BSTEX DS    CL1 -          DLE CONTROL CHARACTER
&P.BSETX DS    CL1 -          ETX CONTROL CHARACTER
&P.BSAK0 DS    CL2 -          ACK-0 CONTROL CHARACTER
&P.BSAK1 DS    CL2 -          ACK-1 CONTROL CHARACTER
&P.BSENQ DS    CL1 -          ENQ CONTROL CHARACTER
&P.BSNAK DS    CL1 -          NAK CONTROL CHARACTER
&P.BSETB DS    CL1 -          ETB CONTROL CHARACTER
&P.BSDLE DS    CL1 -          DLE CONTROL CHARACTER
&P.BSEOT DS    CL1 -          EOT CONTROL CHARACTER
&P.BSSYN DS    CL3 -          SYN, SYN, SYN CONTROL CHARACTERS
&P.BSONL DS    CL2 -          SOH % CONTROL CHARACTERS
&P.BSSAK DS    CL2 -          WACK CONTROL CHARACTERS
&P.BSRVI DS    CL2 -          DLE @ CONTROL CHARACTERS
         DS    XL18 -         RESERVED
         SPACE 1
.CDF     AIF   (NOT (&DSORGQS OR &DSORGBS)).CF                  YA03395
***********************************************************************
*                       QSAM-BSAM-BPAM COMMON INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+52
         AIF   (&DSORGDA).CDA1
&P.GERR  DS    0A -           ADDRESS OF SYNCHRONIZING ROUTINE FOR GET
&P.PERR  DS    0A -           ADDRESS OF SYNCHRONIZING ROUTINE FOR PUT
&P.CHECK DS    0A -           ADDRESS OF CHECK MODULE
         AIF   (&DSORGIS).CDA
&P.OPTCD DS    BL1 -          OPTION CODES
         AGO   .CD2
.CDA1    DS    0A -           DCBGERR, DCBPERR OR DCBCHECK
.CDA     DS    BL1 -          DCBOPTCD - OPTION CODES
.CD2     ANOP
&P.OPTW  EQU   &P.BIT0 -      WRITE VALIDITY CHECK (DASD)
*                             (BSAM, BPAM, QSAM, ISAM, BDAM)
&P.OPTU  EQU   &P.BIT1 -      ALLOW DATA CHECK CAUSED BY INVALID
*                             CHARACTER (1403 PRINTER WITH UCS FEATURE)
*                             (BSAM, BPAM, QSAM)
*                             MSS WINDOW PROCESSING REQUESTED  @ZA37313
*                             (BSAM, QSAM)                     @ZA37313
&P.OPTC  EQU   &P.BIT2 -      CHAINED SCHEDULING USING PCI
*                             (BSAM, BPAM, QSAM)
&P.OPTH  EQU   &P.BIT3 -      1287/1288 OPTICAL READER - HOPPER EMPTY
*                             EXIT (BSAM, BPAM)
*                             PDS STAGING ON MSS REQUEST(BPAM) @ZA36508
&P.OPTO  EQU   &P.BIT3 -      1285/1287 OPTICAL READER - ON-LINE
*                             CORRECTION (QSAM)
&P.BCKPT EQU   &P.BIT3 -      CHANNEL-END APPENDAGE IS TO BYPASS DOS
*                             EMBEDDED CHECKPOINT RECORDS ON TAPE
*                             (BSAM, QSAM)
&P.OPTQ  EQU   &P.BIT4 -      TRANSLATION TO OR FROM ASCII
*                             (BSAM, BPAM, QSAM)
&P.OPTZ  EQU   &P.BIT5 -      MAGNETIC TAPE DEVICES - USE REDUCED ERROR
*                             RECOVERY PROCEDURE (EXCP, BSAM, BPAM,
*                             QSAM)
&P.SRCHD EQU   &P.BIT5 -      USE SEARCH DIRECT, INSTEAD OF SEARCH
*                             PREVIOUS, ON RECORD POSITION SENSING
*                             DEVICE  (EXCP, BSAM, BPAM, QSAM)
&P.OPTT  EQU   &P.BIT6 -      USER TOTALING (BSAM, QSAM)
*
*
&P.OPTJ  EQU   &P.BIT7        3800 PRINTER, OPTCD=J; (DYNAMIC  @Z40MSRZ
*                             SELECT OF TRANSLATE TABLES)      @Z40MSRZ
         AIF   (&DSORGDA).CD1
&P.GERRA DS    0AL3 -         ADDRESS OF SYNCHRONIZING ROUTINE FOR GET
&P.PERRA DS    0AL3 -         ADDRESS OF SYNCHRONIZING ROUTINE FOR PUT
&P.CHCKA DS    AL3 -          ADDRESS OF CHECK MODULE
         AGO   .CD3
.CD1     DS    AL3 -          DCBGERRA, DCBPERRA OR DCBCHCKA
.CD3     AIF   (&DSORGIS OR &DSORGDA).CDB                      @ZA02213
&P.SYNAD DS    0A -           ADDRESS OF USER-PROVIDED SYNAD ROUTINE
&P.IOBL  DS    FL1 -          IOB LENGTH IN DOUBLE WORDS
&P.SYNA  DS    AL3 -          ADDRESS OF USER-PROVIDED SYNAD ROUTINE
         AGO   .CD4
.CDB     DS    0A -           DCBSYNAD - ADDRESS OF SYNAD ROUTINE
&P.IOBL  DS    FL1 -          IOB LENGTH IN DOUBLE WORDS
&P.SYNA  DS    AL3 -          DCBSYNA - ADDRESS OF SYNAD RTN   @ZA33630
.CD4     ANOP
&P.FLAG1 DS    0BL1 -         TCAM APPLICATION PROGRAM FLAGS
*                             (BSAM, BPAM, QSAM)
&P.CIND1 DS    BL1 -          CONDITION INDICATORS
&P.CNTOV EQU   &P.BIT0 -      DIRECT ACCESS - TRACK OVERFLOW IN USE
*                             (BSAM, BPAM, QSAM)
*                             2540 CARD PUNCH - DATA SET WAS OPENED BUT
*                             NO DATA WAS WRITTEN (QSAM)
&P.STQCK EQU   &P.BIT0 -      STOP EQUAL QUICK WAS SPECIFIED FOR
*                             APPLICATION PROG. DCBS (TCAM)
&P.STFLS EQU   &P.BIT1 -      STOP EQUAL FLUSH WAS SPECIFIED FOR
*                             APPLICATION PROG. DCBS (TCAM)
&P.CNSRD EQU   &P.BIT1 -      SEARCH DIRECT (BSAM, BPAM, QSAM)
&P.CNEVB EQU   &P.BIT2 -      END OF VOLUME - USED BY EOB ROUTINES
*                             (BSAM, BPAM, QSAM)
&P.CNEVA EQU   &P.BIT3 -      END OF VOLUME - USED BY CHANNEL-END
*                             APPENDAGE ROUTINES (BSAM, BPAM, QSAM)
&P.CNBRM EQU   &P.BIT5 -      BLOCKED RECORD BIT MODIFIED (BSAM,BPAM,
*                             QSAM)
&P.CNEXB EQU   &P.BIT7 -      EXCHANGE BUFFERING SUPPORTED (QSAM)
&P.CIND2 DS    BL1 -          CONDITION INDICATORS
&P.CNSTO EQU   &P.BIT0 -      PARTITIONED DATA SET - STOW HAS BEEN
*                             PERFORMED (BSAM, BPAM, QSAM)
*                             SEQUENTIAL DATA SET - UPDATE (BSAM, BPAM)
&P.CNWR0 EQU   &P.BIT1 -      DIRECT ORGANIZATION DATA SET - LAST I/O
*                             WAS A WRITE RECORD ZERO
*                             (BSAM, BPAM, QSAM)
*                             SEQUENTIAL DATA SET - UPDATE EOF IS
*                             INDICATED (BSAM, BPAM)
&P.CNCLO EQU   &P.BIT2 -      CLOSE IN PROCESS (QSAM)
&P.CNIOE EQU   &P.BIT3 -      PERMANENT I/O ERROR (BSAM, BPAM, QSAM)
&P.CNBFP EQU   &P.BIT4 -      OPEN ACQUIRED BUFFER POOL
*                             (BSAM, BPAM, QSAM)
&P.CNCHS EQU   &P.BIT5 -      CHAINED SCHEDULING BEING SUPPORTED
*                             (BSAM, BPAM, QSAM)
&P.CNFEO EQU   &P.BIT6 -      FEOV BIT (BSAM, BPAM, QSAM)
&P.CNQSM EQU   &P.BIT7 -      ALWAYS ZERO (BSAM, BPAM)
*                             THIS IS A QSAM DCB (QSAM)
         AIF   (&DSORGIS OR &DSORGDA).CDC
&P.BLKSI DS    H -            MAXIMUM BLOCK SIZE
         AGO   .CD7
.CDC     DS    H -            DCBBLKSI - MAXIMUM BLOCK SIZE
.CD7     ANOP
&P.WCPO  DS    AL1 -          OFFSET OF WRITE CHANNEL PROGRAM FROM THE
*                             START OF IOB
&P.WCPL  DS    FL1 -          LENGTH OF WRITE CHANNEL PROGRAM
&P.OFFSR DS    AL1 -          OFFSET OF READ CCW FROM BSAM/BPAM PREFIX
*                             OF IOB
&P.OFFSW DS    AL1 -          OFFSET OF WRITE CCW FROM BSAM/BPAM PREFIX
*                             OF IOB
DCBIOBA  DS    A -            FOR NORMAL SCHEDULING, ADDRESS OF QSAM OR
*                             BSAM/BPAM PREFIX OF IOB.  FOR CHAINED
*                             SCHEDULING, ADDRESS OF ICB.  FOR
*                             1419/1275, ADDRESS OF MAGNETIC INTERRUPT
*                             CONTROL BLOCK (MICB) CURRENTLY BEING
*                             PROCESSED BY READ ROUTINE.  FOR TSO
*                             TERMINAL DATA SET OPENED FOR INPUT AND
*                             FORMAT U, SIMULATED LOW-ORDER FOUR BYTES
*                             OF IOBCSW
         SPACE 1
         ORG   &NM+68
&P.CICB  DS    0A -           SAME AS DCBCICBA BELOW
         DS    X -            DCBNCP  (BSAM,BPAM)
&P.CICBA DS    AL3 -          POINTER TO JES C.I.
*                             CONTROL BLOCK (CICB)
         SPACE 1
         ORG   &NM+80
&P.DIRCT DS    0H -           NUMBER OF BYTES USED IN LAST DIRECTORY
*                             BLOCK (RANGE 0-254)  (BSAM, BPAM)
&P.QSWS  DS    0BL1 -         FLAG BYTE
&P.POPEN EQU   &P.BIT5 -      QSAM PARALLEL INPUT PROCESSING
&P.USASI DS    B -            FLAG BYTE FOR ASCII TAPES
&P.BLBP  EQU   &P.BIT1 -      BLOCK PREFIX IS FOUR BYTE FIELD
*                             CONTAINING BLOCK LENGTH IN UNPACKED
*                             DECIMAL (SPECIFIED BY BUFFER=L).
&P.QADFS EQU   &P.BIT2+&P.BIT3+&P.BIT4 USED TO PERFORM SEQUENCE
*                             CHECKING WITH MULTIPLE FUNCTION SUPPORT
*                             FOR 3525 (BSAM, QSAM)
&P.QADF1 EQU   &P.BIT2 -      FIRST BIT OF DCBQADFS
&P.QADF2 EQU   &P.BIT3 -      SECOND BIT OF DCBQADFS
&P.QADF3 EQU   &P.BIT4 -      THIRD BIT OF DCBQADFS
&P.3525A EQU   &P.BIT6 -      DCB IS 3525 - ASSOCIATED DATA
*                             SETS EXIST
&P.QSTRU EQU   &P.BIT7 -      TRUNC ENTRY POINT ENTERED (QSAM)
&P.BUFOF DS    0FL1 -         BLOCK PREFIX LENGTH (0-99), SPECIFIED BY
*                             BUFOFF=N OR BUFOFF=L
&P.DIRCQ DS    FL1 -          NUMBER OF BYTES USED IN LAST DIRECTORY
*                             BLOCK (RANGE 0-254)  (QSAM)
         SPACE 1
         AIF   (NOT &DSORGBS).CE
***********************************************************************
*                       BSAM-BPAM INTERFACE
***********************************************************************
         SPACE 1
         ORG   &NM+72
&P.EOBR  DS    0A -           ADDRESS OF END-OF-BLOCK MODULE FOR READ
         AIF   (&DSORGIS).CDD
&P.NCP   DS    FL1 -          NUMBER OF CHANNEL PROGRAMS.
         AGO   .CD8
.CDD     DS    FL1 -          DCBNCP - NUMBER OF CHANNEL PROGRAMS.
.CD8     ANOP
*                             NUMBER OF READ OR WRITE REQUESTS WHICH
*                             MAY BE ISSUED PRIOR TO A CHECK, NUMBER
*                             OF IOB'S GENERATED.  (99 MAXIMUM)
&P.EOBRA DS    AL3 -          ADDRESS OF END-OF-BLOCK MODULE FOR READ
&P.EOBW  DS    A -            ADDRESS OF END-OF-BLOCK MODULE FOR WRITE.
*                             FOR BSAM CREATE BDAM PROCESSING OF
*                             UNBLOCKED SPANNED RECORDS WITH BKTEK=R
*                             SPECIFIED, ADDRESS OF SEGMENT WORK AREA
*                             CONTROL BLOCK
         DS    H -            DCBDIRCT - NUMBER OF BYTES USED IN LAST
*                             DIRECTORY BLOCK  (RANGE 0-254)
         AIF   (&DSORGIS).CDE
&P.LRECL DS    H -            LOGICAL RECORD LENGTH
         AGO   .CD9
.CDE     DS    H -            DCBLRECL - LOGICAL RECORD LENGTH
.CD9     ANOP
&P.CNTRL DS    0A -           ADDRESS OF CNTRL MODULE
&P.NOTE  DS    0A -           ADDRESS OF NOTE/POINT MODULE
&P.POINT DS    A -            ADDRESS OF NOTE/POINT MODULE
         SPACE 1
.CE      AIF   (NOT &DSORGQS).FIN
***********************************************************************
*                       QSAM INTERFACE
***********************************************************************
         SPACE 1
         AIF   (NOT &DSORGDA).CE1
         ORG   &NM+52
&P.GERR  DS    0A -           ADDRESS OF SYNCHRONIZING ROUTINE FOR GET
&P.PERR  DS    0A -           ADDRESS OF SYNCHRONIZING ROUTINE FOR PUT
         DS    BL1 -          DCBOPTCD - OPTION CODES
&P.GERRA DS    0AL3 -         ADDRESS OF SYNCHRONIZING ROUTINE FOR GET
&P.PERRA DS    AL3 -          ADDRESS OF SYNCHRONIZING ROUTINE FOR PUT
         SPACE 1
.CE1     ORG   &NM+72
&P.LCCW  DS    0A -           FOR EXCHANGE BUFFERING, ADDRESS OF LAST
*                             CCW IN LIST
&P.EOBAD DS    A -            FOR SIMPLE BUFFERING, ADDRESS OF LAST
*                             BYTE OF CURRENT BUFFER
&P.CCCW  DS    0A -           FOR EXCHANGE BUFFERING, ADDRESS OF
*                             CURRENT OR NEXT CCW
&P.RECAD DS    0A -           ADDRESS OF CURRENT OR NEXT LOGICAL RECORD
&P.RECBT DS    BL1 -          FLAG BYTE
&P.RCREL EQU   &P.BIT0+&P.BIT1+&P.BIT2+&P.BIT3 RELSE MACRO HAS BEEN
*                             ISSUED (QSAM WITH SIMPLE BUFFERING)
&P.RCTRU EQU   &P.BIT0 -      TRUNC MACRO HAS BEEN ISSUED (QSAM LOCATE
*                             MODE)
&P.RCFGT EQU   &P.BIT1 -      FIRST GET AFTER OPEN (QSAM LOCATE MODE)
&P.RECA  DS    AL3 -          ADDRESS OF CURRENT OR NEXT LOGICAL RECORD
         DS    B -            DCBQSWS - FLAG BYTE
         DS    FL1 -          DCBDIRCQ - NUMBER OF BYTES USED IN LAST
*                             DIRECTORY BLOCK (RANGE 0-254)
         AIF   (&DSORGIS OR &DSORGBS).CEE
&P.LRECL DS    H -            LOGICAL RECORD LENGTH
         AGO   .CEEA
.CEE     DS    H -            DCBLRECL - LOGICAL RECORD LENGTH
.CEEA    AIF   (&DSORGBS).CEF
&P.CNTRL DS    0A -           ADDRESS OF CNTRL MODULE
         AGO   .CEF1
.CEF     DS    0A -           DCBCNTRL - ADDRESS OF CNTRL MODULE
.CEF1    ANOP
&P.EROPT DS    BL1 -          ERROR OPTION
&P.ERACC EQU   &P.BIT0 -      ACCEPT PERMANENT ERROR
&P.ERSKP EQU   &P.BIT1 -      SKIP PERMANENT ERROR
&P.ERABE EQU   &P.BIT2 -      ABNORMAL END OF TASK
         AIF   (&DSORGBS).CEF2
&P.CNTRA DS    AL3 -          ADDRESS OF CNTRL MODULE
         AGO   .CEF3
.CEF2    DS    AL3 -          DCBCNTRA - ADDRESS OF CNTRL MODULE
.CEF3    DS    XL2 -          RESERVED
&P.PRECL DS    H -            FORMAT F RECORDS: BLOCK LENGTH
*                             FORMAT U RECORDS: MAXIMUM BLOCK LENGTH
*                             FORMAT V RECORDS:
*                               UNSPANNED RECORDS: MAXIMUM BLOCK LENGTH
*                               SPANNED RECORDS:
*                                 PUT, NOT DATA MODE:
*                                   MAXIMUM BOLCK LENGTH
*                                 PUT, DATA MODE:
*                                   DATA LENGTH
*                                 GET:
*                                   SEGMENT CONTROL CODE OF PREVIOUS
*                                   SEGMENT
&P.EOB   DS    A -            ADDRESS OF END OF BLOCK MODULE
         SPACE 1
         MEXIT                                                  YA03395
.CF      AIF   (NOT &DSORGLR OR &DSORGIS).FIN                   YA03395
         ORG   &NM+82
&P.LRECL DS    H -            LOGICAL RECORD LENGTH
         SPACE 1
         MEXIT                                                  YA03395
.SLIP    ANOP
***********************************************************************
*                       GRAPHIC DEVICE INTERFACE
***********************************************************************
         SPACE 1
         DS    XL12 -         RESERVED
&P.BRSA  DS    AL2 -          BUFFER RESTART ADDRESS.  BLANK BEFORE
*                             EXECUTION OF SECOND I/O OPERATION
&P.GTYPE DS    CL1 -          TYPE OF BUFFER MANAGEMENT AND ATTENTION
*                             HANDLING
&P.GTEXP EQU   X'00' -        EXPRESS
&P.GTBAS EQU   X'01' -        BASIC
         DS    X -            RESERVED
&P.BFRST DS    AL2 -          BLANK BEFORE EXECUTION OF OPEN ROUTINE.
*                             STARTING ADDRESS FOR BUFFER AFTER
*                             EXECUTION OF OPEN ROUTINE
&P.BFRSZ DS    H -            BLANK BEFORE EXECUTION OF OPEN ROUTINE.
*                             SIZE OF BUFFER AFTER EXECUTION OF OPEN
*                             ROUTINE.
         SPACE 1
***********************************************************************
*                       COMMON INTERFACE
***********************************************************************
         SPACE 1
         DS    XL6 -          RESERVED
&P.DSORG DS    0BL2 -         DATA SET ORGANIZATION BEING USED
&P.DSRG1 DS    BL1 -          FIRST BYTE OF DCBDSORG
&P.DSGIS EQU   &P.BIT0 -      IS - INDEXED SEQUENTIAL ORGANIZATION
&P.DSGPS EQU   &P.BIT1 -      PS - PHYSICAL SEQUENTIAL ORGANIZATION
&P.DSGDA EQU   &P.BIT2 -      DA - DIRECT ORGANIZATION
&P.DSGCX EQU   &P.BIT3 -      CX - BTAM OR QTAM LINE GROUP
&P.DSGPO EQU   &P.BIT6 -      PO - PARTITIONED ORGANIZATION
&P.DSGU  EQU   &P.BIT7 -      U  - UNMOVABLE, THE DATA CONTAINS
*                                  LOCATION DEPENDENT INFORMATION
&P.DSRG2 DS    BL1 -          SECOND BYTE OF SCBDSORG
&P.DSGGS EQU   &P.BIT0 -      GS - GRAPHICS ORGANIZATION
&P.DSGTX EQU   &P.BIT1 -      TX - TCAM LINE GROUP
&P.DSGTQ EQU   &P.BIT2 -      TQ - TCAM MESSAGE QUEUE
&P.ACBM  EQU   &P.BIT4 -      ACCESS METHOD CONTROL BLOCK
&P.DSGTR EQU   &P.BIT5 -      TR - TCAM 3705
&P.IOBAD DS    A -            BLANK BEFORE EXECUTION OF OPEN ROUTINE.
*                             ADDRESS OF STANDARD FIELDS OF FIRST IOB
*                             AFTER EXECUTION OF OPEN ROUTINE
         SPACE 1
***********************************************************************
*                       FOUNDATION EXTENSION
***********************************************************************
         SPACE 1
&P.POLST DS    0A -           ADDRESS OF AREA WHERE A DCB LIST IS TO BE
*                             CONSTRUCTED FOR POLLING PURPOSES
&P.GNCP  DS    FL1 -          NUMBER OF I/O INSTRUCTIONS TO BE ISSUED
*                             BEFORE A WAIT MACRO INSTRUCTION
&P.POLSA DS    AL3 -          SAME AS DCBPOLST ABOVE
&P.EXLST DS    0A -           ADDRESS OF USER'S EXIT LIST
         DS    X -            RESERVED
&P.EXLSA DS    AL3 -          ADDRESS OF USER'S EXIT LIST
         SPACE 1
***********************************************************************
*                       FOUNDATION BEFORE OPEN
***********************************************************************
         SPACE 1
&P.DDNAM DS    CL8 -          8-BYTE NAME FROM DD STATEMENT THAT
*                             DEFINES DATA SET ASSOCIATED WITH THIS DCB
&P.OFLG  DS    BL1 -          FLAGS USED BY OPEN ROUTINE
&P.OFGRW EQU   &P.BIT0 -      IF ZERO, LAST I/O OPERATION WAS GREAD.
*                             IF ONE, LAST I/O OPERATION WAS GWRITE.
&P.OFEOV EQU   &P.BIT2 -      SET TO 1 BY EOV WHEN IT CALLS CLOSE
*                             ROUTINE FOR CONCATENATION OF DATA SETS
*                             WITH UNLIKE ATTRIBUTES
&P.OFOPN EQU   &P.BIT3 -      AN OPEN HAS BEEN SUCCESSFULLY COMPLETED
&P.OFPPC EQU   &P.BIT4 -      SET TO 1 BY PROBLEM PROGRAM TO INDICATE A
*                             CONCATENATION OF UNLIKE ATTRIBUTES
&P.OFTM  EQU   &P.BIT5 -      TAPE MARK HAS BEEN READ
&P.OFUEX EQU   &P.BIT6 -      SET TO 0 BY AN I/O SUPPORT FUNCTION WHEN
*                             THAT FUNCTION TAKES A USER EXIT. SET TO 1
*                             ON RETURN FROM USER EXIT TO THE I/O
*                             SUPPORT FUNCTION WHICH TOOK THE EXIT.
&P.OFIOF EQU   &P.BIT7 -      SET TO 1 BY AN I/O SUPPORT FUNCTION IF
*                             DCB IS TO BE PROCESSED BY THAT FUNCTION
&P.IFLG  DS    BL1 -          SET TO ZERO BY GRAPHIC ROUTINES BUT USED
*                             BY IOS IN COMMUNICATING ERROR CONDITIONS
*                             AND IN DETERMINING CORRECTIVE PROCEDURES
&P.MACR  DS    0BL2 -         MACRO INSTRUCTION REFERENCE
&P.MACR1 DS    BL1 -          FIRST BYTE OF DCBMACR
&P.MRRD  EQU   &P.BIT2 -      READ
&P.MRCRL EQU   &P.BIT6 -      CNTRL
&P.MACR2 DS    BL1 -          SECOND BYTE OF DCBMACR
&P.MRWRT EQU   &P.BIT2 -      WRITE
&P.MRCTL EQU   &P.BIT6 -      CNTRL
         SPACE 1
***********************************************************************
*                       FOUNDATION AFTER OPEN
***********************************************************************
         SPACE 1
         ORG   &NM+40
&P.TIOT  DS    AL2 -          OFFSET FROM TIOT ORIGIN TO DD ENTRY
*                             ASSOCIATED WITH THIS DCB
&P.MACRF DS    0BL2 -         SAME AS DCBMACR BEFORE OPEN
&P.MACF1 DS    BL1 -          FIRST BYTE OF DCBMACRF
&P.MACF2 DS    BL1 -          SECOND BYTE OF DCBMACRF
&P.DEBAD DS    0A -           ADDRESS OF ASSOCIATED DEB
&P.IFLGS DS    BL1 -          SAME AS DCBIFLG BEFORE OPEN
&P.DEBA  DS    AL3 -          ADDRESS OF ASSOCIATED DEB
&P.GIOCR DS    0A -           ADDRESS OF GRAPHICS I/O CONTROL ROUTINE
&P.OFLGS DS    BL1 -          SAME AS DCBOFLG BEFORE OPEN
&P.GIOCA DS    AL3 -          ADDRESS OF GRAPHICS I/O CONTROL ROUTINE
         SPACE 1
.FIN     MEND
         END
./ ADD NAME=ICB2IOBX
 %ICB2IOBX: ;                       /* MACRO                 @Y30LB01*/
     /**************************************************     @Y30LB01*/
     /*              ****** MAPPING MACRO *****              @Y30LB01*/
     /* MACRO NAME = ICB2IOBX(VS2)                           @Y30LB01*/
     /*                                                      @Y30LB01*/
     /* DESCRIPTIVE NAME = MSSC VS2 IOSB EXTENSION AREA      @Y30LB01*/
     /*                                                      @Y30LB01*/
     /* COPYRIGHT = NONE                                     @Y30LB01*/
     /*                                                      @Y30LB01*/
     /* CHANGE-ACTIVITY = Y30LB01                            @Y30LB01*/
     /*                   YD00130                            @YD00130*/
     /*                   ZM31050                            @ZM31050*/
     /*                   ZDR2048 DEMOUNT VUA                @ZDR2048*/
     /*                                                      @Y30LB01*/
     /* %SSCLEVEL DEFAULTS                                   @Y30LB01*/
     /*      DCL 1 SSCDATA BASED(SSCDATAP) BDY(WORD),        @Y30LB01*/
     /*                                                      @Y30LB01*/
     /* %SSC9999 DEFAULTS TO SEMICOLON                       @Y30LB01*/
     /*                                                      @Y30LB01*/
     /* TO SET YOUR OWN LEVEL 1 USE %SSCLEVEL = 'N' WHERE    @Y30LB01*/
     /*        N IS THE LEVEL YOU WANT                       @Y30LB01*/
     /*                                                      @Y30LB01*/
     /* TO SET END TO , USE %SSC9999 = ','                   @Y30LB01*/
     /***************************************************    @Y30LB01*/
 %IF SSCLEVEL = ''                  /* DEFAULT LEVEL         @Y30LB01*/
    %THEN SSCBASE = 'BASED(SSCDATAP)' ;/* BASED ON SSCDATAP  @Y30LB01*/
    %ELSE SSCBASE = '' ;            /* NOT BASED             @Y30LB01*/
 %IF SSCLEVEL = ''                  /* DEFAULT LEVEL         @Y30LB01*/
    %THEN SSCLEVEL = 'DCL 1 ' ;     /* SET LEVEL TO 1        @Y30LB01*/
 %IF SSC9999 ^= ','                 /* COMMA TO CONTINUE     @Y30LB01*/
    %THEN SSC9999 = ';' ;           /* DEFAULT TO END        @Y30LB01*/
    SSCLEVEL SSCDATA SSCBASE BDY(WORD),/*MSSC IOSB EXTENSION @Y30LB01*/
        5 IOECB      FIXED(31),     /* IO ECB ADDRESS        @Y30LB01*/
          7 ECBCODE  CHAR(1),       /* IO COMP CODE          @Y30LB01*/
        5 TCBADDR    FIXED(31),     /* TCB ADDRESS           @Y30LB01*/
          7 TCBPTR   PTR(31),       /* TCB ADDRESS           @Y30LB01*/
        5 IOERRCD    FIXED(15),     /* MSSC ERROR CODE       @Y30LB01*/
          7 SSCDERR  FIXED(15),     /* MSSC ERROR CODE       @Y30LB01*/
        5 APPSW      FIXED(16),     /* MSSC APPN SWITCHES    @Y30LB01*/
          7 ERPSW    BIT(1),        /* ERP PROCESS SWITCH    @Y30LB01*/
          7 POSTSW   BIT(1),        /* POST SWITCH           @Y30LB01*/
          7 ATTNSW   BIT(1),        /* SPECIAL ATTN I/O      @ZM31050*/
          7 *        BIT(13),       /* RESERVED              @ZM31050*/
        5 APGAREA    CHAR(64) BDY(WORD), /* APPN SAVE AREA   @Y30LB01*/
          7 APPSAV(16) FIXED(31),   /* APPN SAVE AREA        @ZDR2048*/
        5 DMTID      CHAR(2),       /* SVC TO AEA COMM AREA  @ZDR2048*/
        5 DMTVOL     CHAR(6)        /* AEA TO SVC COMM AREA  @ZDR2048*/
             SSC9999                /* MSSC IOSB EXT END     @ZDR2048*/
./ ADD NAME=ICBACREL
* %/* START OF SPECIFICATIONS****
         MACRO
&SYMBOL  ICBACREL &MF=,&TYPE=,&FLAGS=,&VOLID=,&ECB=,&EXTS=,            *
               &HOSTID=,&NMEXTS=
.************************************************************  @ZA28964
.*                                                             @Y30LB02
.* MODULE-NAME = ICBACREL                                      @Y30LB02
.*                                                             @Y30LB02
.* DESCRIPTIVE-NAME = ACQUIRE/RELINQUISH MACRO                 @Y30LB02
.*                                                             @Y30LB02
.* COPYRIGHT = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.* STATUS = OPERATING SYSTEM = VS/2 REL 3                      @ZA28964
.*                                                             @Y30LB02
.* FUNCTION = THE ACQUIRE REQUEST IS ISSUED IF THE CALLER      @Y30LB02
.*            WISHES TO HAVE DASD SPACE ALLOCATED FOR A        @Y30LB02
.*            DATA RESOURCE AND, OPTIONALLY, IF THE DATA       @Y30LB02
.*            EXTENTS ARE TO BE STAGED. THE RELINQUISH         @Y30LB02
.*            REQUEST IS ISSUED WHEN A DATA RESOURCE IS TO     @Y30LB02
.*            HAVE ITS DASD SPACE MADE AVAILABLE FOR           @Y30LB02
.*            REALLOCATION AND, OPTIONALLY, IF ITS DASD        @Y30LB02
.*            EXTENTS ARE TO BE DESTAGED FROM THE              @Y30LB02
.*            REAL DASD.                                       @Y30LB02
.*                                                             @Y30LB02
.* NOTES =                                                     @Y30LB02
.*                                                             @Y30LB02
.*   CODE = MACRO IS BILINGUALLY CODED. IN THE ORIGINAL        @ZA28964
.*          VERSION OF THIS MACRO, THE BAL AND PL/S SECTIONS   @ZA28964
.*          ASSIGNED DIFFERENT LABELS TO THE SAME REQUEST      @ZA28964
.*          BLOCK STRUCTURE. TO MAINTAIN COMPATABILITY, THE    @ZA28964
.*          ALTERNATE PL/S LABELS HAVE BEEN ADDED TO THE BAL   @ZA28964
.*          REQUEST BLOCKS, AND THE ALTERNATE BAL LABELS       @ZA28964
.*          ADDED TO THE PL/S REQUEST BLOCKS.                  @ZA28964
.*                                                             @Y30LB02
.*   DEPENDENCIES = NONE                                       @Y30LB02
.*                                                             @Y30LB02
.*   RESTRICTIONS = THE PREFIXES ICB AND AR SHOULD BE          @Y30LB02
.*                  AVOIDED IN THE INVOKING MODULE LABELS.     @ZA28964
.*                  SVC 126, WHICH IS INVOKED BY THIS MACRO,   @ZA28964
.*                  REQUIRES THAT THE CALLER BE APF-           @ZA28964
.*                  AUTHORIZED, IN PROTECTION KEY 0 OR         @ZA28964
.*                  IN SUPERVISOR STATE.                       @ZA28964
.*                                                             @Y30LB02
.*   REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS    @Y30LB02
.*                          BY MACROS: R0,R1,R14 AND R15       @Y30LB02
.*                                                             @Y30LB02
.*   PATCH-LABEL = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.* MODULE-TYPE = MACRO                                         @Y30LB02
.*                                                             @Y30LB02
.*   PROCESSOR = ASSEM                                         @Y30LB02
.*               PL/S                                          @Y30LB02
.*                                                             @Y30LB02
.*   ATTRIBUTES = REUSABLE                                     @Y30LB02
.*                REENTRANT (EXECUTE FORM)                     @Y30LB02
.*                                                             @Y30LB02
.* ENTRY-POINT = ICBACREL                                      @Y30LB02
.*                                                             @Y30LB02
.*   PURPOSE = SEE FUNCTION                                    @Y30LB02
.*                                                             @Y30LB02
.*   LINKAGE = SEE INPUT                                       @ZA28964
.*                                                             @ZA28964
.* INPUT = CODE THE ICBACREL MACRO USING ONE OF THE            @Y30LB02
.*     FOLLOWING SYNTAX FORMS (THE '(R)' REGISTER PARAMETER    @Y30LB02
.*     FORM IS VALID ONLY IN THE BAL VERSIONS).                @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORMS =                                              @Y30LB02
.*                                                             @Y30LB02
.*     BAL - ICBACREL MF=(L,MAP),TYPE=ACQREL                  @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF=L,TYPE                       @Y30LB02
.*                                                             @Y30LB02
.*     PL/S- ICBACREL MF(L,NAME,ATTR) TYPE(ACQREL)            @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF(L,NAME) TYPE                 @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORMS =                                          @Y30LB02
.*                                                             @Y30LB02
.*     BAL - ICBACREL TYPE=ACQREL,EXTS=NAME(R),              @Y30LB02
.*                    NMEXTS=NAME(R),VOLID=NAME(R),          @Y30LB02
.*                    ECB=NAME(R),FLAGS=NAME(R),             @Y30LB02
.*                    HOSTID=NAME(R)                          @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - TYPE,EXTS,NMEXTS,VOLID          @Y30LB02
.*                                                             @Y30LB02
.*     PL/S- ICBACREL TYPE(ACQREL) EXTS(NAME) NMEXTS(NAME)    @Y30LB02
.*                    VOLID(NAME) ECB(NAME) FLAGS(NAME)        @Y30LB02
.*                    HOSTID(NAME)                             @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - TYPE EXTS NMEXTS VOLID          @Y30LB02
.*                                                             @Y30LB02
.*   EXECUTE FORMS =                                           @Y30LB02
.*                                                             @Y30LB02
.*     BAL - ICBACREL MF=(E,NAME(R))                          @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF=(E,NAME(R))                 @Y30LB02
.*                                                             @Y30LB02
.*     PL/S- ICBACREL MF(E,NAME)                               @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF(E,NAME)                      @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS =                                      @Y30LB02
.*                                                             @Y30LB02
.*     MF = MACRO FORMAT                                       @Y30LB02
.*                                                             @Y30LB02
.*       L = LIST FORM. THE EXPANSION OF THE LIST FORM         @Y30LB02
.*           PROVIDES ONLY THE PARAMETER REQUEST BLOCK.        @Y30LB02
.*           THE OPCODE AND BLOCK LENGTH FIELDS ARE            @Y30LB02
.*           FILLED IN BY THE MACRO AND THE REMAINING          @Y30LB02
.*           FIELDS ARE SET TO ZERO. IF ANY PARAMETERS         @Y30LB02
.*           BESIDES 'MF' AND 'TYPE' ARE SPECIFIED, THEY       @Y30LB02
.*           ARE IGNORED. (A WARNING IS ISSUED)                @Y30LB02
.*                                                             @ZA28964
.*         MAP = SPECIFIES THAT AN ASSEMBLER VERSION           @Y30LB02
.*             INVOCATION WILL PRODUCE A MAPPING DSECT         @Y30LB02
.*             LABELED 'ICBACREL'.                             @Y30LB02
.*                                                             @ZA28964
.*         NAME = LABEL ASSIGNED TO THE REQUEST BLOCK          @Y30LB02
.*             IN PL/S (REQUIRED IN PL/S VERSION).             @Y30LB02
.*                                                             @ZA28964
.*         ATTR = A PL/S ATTRIBUTE THAT WILL BE PLACED IN      @Y30LB02
.*             AN UNINITIALIZED REQUEST BLOCK DEFINITION.      @Y30LB02
.*             SOME ATTRIBUTE EXAMPLES ARE:                    @Y30LB02
.*                STATIC LOCAL, NONLOCAL, BASED(*), ETC        @Y30LB02
.*                                                             @Y30LB02
.*       NULL = STANDARD FORM IS INVOKED. THE EXPANSION        @Y30LB02
.*           OF THIS FORM CONSISTS OF A REQUEST BLOCK          @Y30LB02
.*           (ONLY IN THE FIRST INVOCATION OF THIS FORM        @Y30LB02
.*           IN ANY MODULE) LABELED 'ARLIST' IN THE PL/S       @ZA28964
.*           VERSION, A LINKAGE INSTRUCTION AND POSSIBLY       @ZA28964
.*           PARAMETER BINDING INSTRUCTIONS. ONLY A            @ZA28964
.*           SINGLE VOLUME REQUEST FOR UP TO 16 EXTENTS        @ZA28964
.*           MAY BE REQUESTED WITH A SINGLE STANDARD           @ZA28964
.*           FORM INVOCATION.                                  @ZA28964
.*                                                             @Y30LB02
.*       E = EXECUTE FORM. THE EXPANSION OF THIS FORM          @Y30LB02
.*           CONSISTS OF A LINKAGE INSTRUCTION AND             @Y30LB02
.*           POSSIBLY PARAMETER BINDING INSTRUCTIONS.          @Y30LB02
.*                                                             @ZA28964
.*         NAME = LABEL OF THE REQUEST BLOCK TO USE.           @Y30LB02
.*                                                             @Y30LB02
.*     TYPE = INDICATES WHETHER THE REQUEST IS FOR AN          @Y30LB02
.*         ACQUIRE (ACQ) OR RELINQUISH (REL).                  @Y30LB02
.*                                                             @Y30LB02
.*     EXTS = EXTENTS. LABEL OF THE AREA WHICH CONTAINS        @Y30LB02
.*         THE LIST OF EXTENTS OF THE RESOURCE. THE DATA       @Y30LB02
.*         FOR THIS AREA CAN BE EXTRACTED FROM EITHER          @Y30LB02
.*         THE DATA EXTENT BLOCK (DEB) OR THE DATA SET         @Y30LB02
.*         CONTROL BLOCK(S) (DSCB). THIS AREA IS COPIED        @Y30LB02
.*         INTO THE REQUEST BLOCK. THE FORMAT OF               @Y30LB02
.*         AREA POINTED TO BY THIS PARAMETER IS:               @Y30LB02
.*                                                             @ZA28964
.*          OFFSETS    LENGTH   DESCRIPTION                    @Y30LB02
.*          DEC HEX    (BYTES)                                 @Y30LB02
.*          -------    -------  -----------                    @Y30LB02
.*           0    (0)     2     BEGIN CC - EXTENT 1            @Y30LB02
.*           2    (2)     2     END CC - EXTENT 1              @Y30LB02
.*           4    (4)     2     BEGIN CC - EXTENT 2            @Y30LB02
.*             ...       ...          ...                      @Y30LB02
.*           60 (3C)      2     BEGIN CC - EXTENT 16           @Y30LB02
.*           62 (3E)      2     END CC - EXTENT 16             @Y30LB02
.*                                                             @Y30LB02
.*     NMEXTS = NUMBER OF EXTENTS. LABEL OF A ONE-BYTE FIELD   @Y30LB02
.*         WHICH CONTAINS THE NUMBER OF EXTENTS                @Y30LB02
.*         (FROM 1 TO 16) RECORDED IN THE AREA POINTED         @Y30LB02
.*         TO BY THE 'EXTS' PARAMETER. THE FIRST EXTENT        @Y30LB02
.*         IS RECORDED AT THE 'EXTS' ADDRESS.                  @Y30LB02
.*                                                             @Y30LB02
.*     VOLID = LABEL OF A 6-BYTE VOLUME IDENTIFIER OF THE      @ZA28964
.*         VOLUME ON WHICH THE DATA RESOURCE RESIDES.          @ZA28964
.*                                                             @Y30LB02
.*     ECB = LABEL OF THE EVENT CONTROL BLOCK. SPECIFIED IF A  @Y30LB02
.*         DELAYED RESPONSE IS INDICATED IN THE 'FLAGS'        @Y30LB02
.*         PARAMETER. A POST CODE IN THE RANGE X'70' -         @Y30LB02
.*         X'7F' WILL BE PLACED IN THE LOW-ORDER BYTE          @Y30LB02
.*         OF THE ECB ON COMPLETION OF THE REQUEST (X'7F'      @Y30LB02
.*         IS THE SUCCESSFUL COMPLETION CODE). THE ECB         @Y30LB02
.*         SHOULD BE SET TO BINARY ZERO BEFORE INVOKING        @Y30LB02
.*         THE MACRO. THE 'ARASID' FIELD OF THE REQUEST        @Y30LB02
.*         BLOCK IS USED BY SVC 126 TO RECORD THE              @Y30LB02
.*         ADDRESS SPACE ID OF THE INVOKING MODULE SO          @Y30LB02
.*         THAT THE CORRECT ECB MAY BE LOCATED FOR             @Y30LB02
.*         POSTING.                                            @Y30LB02
.*                                                             @Y30LB02
.*     FLAGS = LABEL OF A ONE-BYTE FIELD SPECIFYING THE        @Y30LB02
.*         ATTRIBUTES TO BE ASSOCIATED WITH THE REQUEST:       @Y30LB02
.*                                                             @Y30LB02
.*       ACQUIRE REQUESTS =                                    @Y30LB02
.*                                                             @Y30LB02
.*         1... ....    BIND. FORCES SPACE TO BE ALLOCATED     @Y30LB02
.*                        AND PREVENTS DE-ALLOCATION OF THAT   @ZA28964
.*                        SPACE UNTIL THE DATA IS RELINQUISHED @ZA28964
.*                        WITH THE UNBIND OPTION OR THE        @ZA28964
.*                        VOLUME IS DEMOUNTED.                 @ZA28964
.*         .1.. ....    DELAYED RESPONSE. FORCES SPACE TO BE   @Y30LB02
.*                        ALLOCATED AND THE CALLER NOTIFIED    @ZA28964
.*                        WHEN THE STAGING IS COMPLETE.        @ZA28964
.*         ..1. ....    INHIBIT STAGING. AFTER DASD SPACE IS   @Y30LB02
.*                        ALLOCATED, THE STAGING OF CYLINDERS  @ZA28964
.*                        OF THE DATA RESOURCE TO THE REAL     @ZA28964
.*                        DASD IS PREVENTED.                   @ZA28964
.*         ...1 ....    NEWLY ALLOCATED SECONDARY EXTENT.      @Y30LB02
.*                        CAUSES MSVC TO UPDATE THE RUNNING-   @ZA28964
.*                        SPACE COUNT FOR GENERAL-USE GROUP    @ZA28964
.*                        VOLUMES.                             @ZA28964
.*         .... 0000    RESERVED - MUST BE ZERO                @Y30LB02
.*                                                             @Y30LB02
.*       RELINQUISH REQUESTS =                                 @Y30LB02
.*                                                             @Y30LB02
.*         1... ....    UNBIND. RESETS THE BIND AND PERMITS    @Y30LB02
.*                        NORMAL DESTAGING TO RESUME. USED IN  @ZA28964
.*                        CONJUNCTION WITH THE ACQUIRE         @ZA28964
.*                        'BIND' FLAG.                         @ZA28964
.*         .1.. ....    DELAYED RESPONSE. CAUSES THE           @Y30LB02
.*                        DESTAGING OF ALL WRITTEN CYLINDERS   @ZA28964
.*                        (UNLESS THE 'INHIBIT DESTAGING'      @ZA28964
.*                        FLAG IS USED) AND THE CALLER         @ZA28964
.*                        NOTIFIED USING THE ECB BLOCK.        @ZA28964
.*         ..1. ....    INHIBIT DESTAGING. FREES THE DASD      @Y30LB02
.*                        SPACE WITHOUT DESTAGING THE DATA.    @ZA28964
.*         ..0. ....    DESTAGE. ALL CYLINDERS OF THE DATA     @Y30LB02
.*                        RESOURCE ON REAL DASD ARE MADE       @ZA28964
.*                        AVAILABLE FOR REALLOCATION. WHEN     @ZA28964
.*                        THE SPACE IS REQUIRED FOR            @ZA28964
.*                        ALLOCATION, ANY NECESSARY DESTAGING  @ZA28964
.*                        WILL BE DONE. IF 'DELAYED RESPONSE'  @ZA28964
.*                        IS SPECIFIED, THESE CYLINDERS ARE    @ZA28964
.*                        SCHEDULED FOR DESTAGING.             @ZA28964
.*         ...0 0000    RESERVED - MUST BE ZERO.               @Y30LB02
.*                                                             @Y30LB02
.*     HOSTID = LABEL OF A 5-BYTE FIELD WHICH CONTAINS THE     @Y30LB02
.*         MANUFACTURER'S CPU IDENTIFICATION. IF SET TO        @Y30LB02
.*         ZERO, SVC126 WILL FILL IN THE ID OF THE CALLING     @Y30LB02
.*         CPU.                                                @Y30LB02
.*                                                             @Y30LB02
.*   REQUEST BLOCK DESCRIPTION =                               @Y30LB02
.*                                                             @Y30LB02
.*     'ARLEN' = REQUEST BLOCK LENGTH FILLED IN BY THE         @Y30LB02
.*         MACRO(STANDARD AND LIST FORMS). 96 DEC BYTES.       @ZA28964
.*                                                             @Y30LB02
.*     'AROP' = OPCODE FILLED IN BY THE MACRO(STANDARD         @Y30LB02
.*         AND LIST FORMS). ACQUIRE = '02'X AND RELINQUISH =   @Y30LB02
.*         '04'X.                                              @Y30LB02
.*                                                             @Y30LB02
.*     'ARRES0' = RESERVED - MUST BE ZERO.                     @Y30LB02
.*                                                             @Y30LB02
.*     'ARFLAG' = FLAGS. CAN BE SET BY MACRO PARAMETER.        @Y30LB02
.*                                                             @Y30LB02
.*     'ARNMEXTS' = NUMBER OF EXTENTS. CAN BE SET BY           @Y30LB02
.*         MACRO PARAMETER.                                    @Y30LB02
.*                                                             @Y30LB02
.*     'ARVOL' = VOLID. CAN BE SET BY MACRO PARAMETER.         @Y30LB02
.*                                                             @Y30LB02
.*     'ARASID' = ADDRESS SPACE ID. SET BY SVC 126.            @Y30LB02
.*                                                             @Y30LB02
.*     'ARECB' = ECB. CAN BE SET BY MACRO PARAMETER.           @Y30LB02
.*                                                             @Y30LB02
.*     'ARHOST' = HOSTID. CAN BE SET BY SVC126 OR              @Y30LB02
.*         MACRO PARAMETER.                                    @Y30LB02
.*                                                             @Y30LB02
.*     'ARRES3' = RESERVED - MUST BE ZERO.                     @Y30LB02
.*                                                             @Y30LB02
.*     'ARCOMPC' = COMPLETION CODE. A 2-BYTE AREA WHICH        @Y30LB02
.*         IS FILLED IN BY SVC126 (MUST BE ZERO ON CALLING     @Y30LB02
.*         THE SVC). DETAILED COMPLETION CODE MESSAGES         @Y30LB02
.*         ARE EXPLAINED IN THE MSSC MESSAGES MANUAL, BUT      @Y30LB02
.*         THE FOLLOWING SITUATIONS CAN OCCUR WHEN             @Y30LB02
.*         CHAINED REQUESTS ARE MADE:                          @Y30LB02
.*                                                             @Y30LB02
.*       ACQUIRE CHAIN COMPLETION CODES =                      @Y30LB02
.*                                                             @Y30LB02
.*         FOR GENERAL ERRORS, THE SAME COMPLETION CODE        @Y30LB02
.*         WILL BE IN EACH REQUEST BLOCK IN THE CHAIN:         @Y30LB02
.*             X'173' = MSSC CONTROL BLOCK INDICATES THAT      @Y30LB02
.*                       THE MSC WAS NOT INITIALIZED           @Y30LB02
.*             X'174' = GETMAIN FAILURE FOR I/O BLOCKS         @Y30LB02
.*             X'175' = MSSC CONTROL BLOCK NOT AVAILABLE       @Y30LB02
.*                       (VS/2 ONLY)                           @Y30LB02
.*                                                             @Y30LB02
.*         FOR ERROR COMPLETION CODES IN THE RANGE X'000'      @Y30LB02
.*         TO X'0FF', THE REQUEST IN ERROR CONTAINS THE        @Y30LB02
.*         APPROPRIATE COMPLETION CODE. REQUESTS PRIOR TO      @Y30LB02
.*         THE ONE IN ERROR CONTAIN A COMPLETION CODE OF       @Y30LB02
.*         X'000', AND THE REQUESTED MSS ACTIVITY HAS BEEN     @Y30LB02
.*         INITIATED. IF APPROPRIATE FOR ANY OF THESE          @Y30LB02
.*         REQUESTS, WAIT FOR ITS DELAYED RESPONSE. EACH       @Y30LB02
.*         REQUEST SUBSEQUENT TO THE ONE IN ERROR CONTAINS     @Y30LB02
.*         A COMPLETION CODE OF X'170', WHICH MEANS THAT       @Y30LB02
.*         THE REQUEST WAS NOT PROCESSED ANY FURTHER. THERE    @Y30LB02
.*         WILL *NOT* BE ANY DELAYED RESPONSE FOR THESE        @Y30LB02
.*         REQUEST BLOCKS SINCE MSS ACTIVITY HAS NOT BEEN      @Y30LB02
.*         INITIATED.                                          @Y30LB02
.*                                                             @Y30LB02
.*         FOR THE ERROR CODES:                                @Y30LB02
.*             X'172' = PARAMETER NOT AS EXPECTED. EITHER      @Y30LB02
.*                       THE ECB ADDRESS WAS 0 WHEN A          @Y30LB02
.*                       DELAYED RESPONSE WAS REQUESTED, THE   @Y30LB02
.*                       THE LENGTH OF THE PARAMETER LIST      @Y30LB02
.*                       WAS INCORRECT, OR A WRONG NUMBER      @Y30LB02
.*                       OF EXTENTS WAS SPECIFIED.             @Y30LB02
.*             X'176' = INTERMIXED CHAIN FOR AN ACQUIRE.       @Y30LB02
.*         THE REQUEST IN ERROR CONTAINS THE APPROPRIATE       @Y30LB02
.*         COMPLETION CODE. REQUESTS PRIOR TO THE ONE IN       @Y30LB02
.*         ERROR CONTAIN A COMPLETION CODE OF X'000', BUT      @Y30LB02
.*         THE MSS ACTIVITY HAS *NOT* BEEN INITIATED -         @Y30LB02
.*         DO NOT WAIT FOR A DELAYED RESPONSE. EACH REQUEST    @Y30LB02
.*         SUBSEQUENT TO THE ONE IN ERROR CONTAINS A           @Y30LB02
.*         X'170' COMPLETION CODE - DO NOT WAIT FOR A          @Y30LB02
.*         DELAYED RESPONSE FROM THESE REQUESTS EITHER.        @Y30LB02
.*                                                             @Y30LB02
.*       RELINQUISH CHAIN COMPLETION CODES =                   @Y30LB02
.*                                                             @Y30LB02
.*         FOR GENERAL ERRORS, THE SAME COMPLETION CODE        @Y30LB02
.*         WILL BE IN EACH REQUEST BLOCK IN THE CHAIN:         @Y30LB02
.*             X'173' = MSSC CONTROL BLOCK INDICATES THAT      @Y30LB02
.*                       THE MSC WAS NOT INITIALIZED           @Y30LB02
.*             X'174' = GETMAIN FAILURE FOR I/O BLOCKS         @Y30LB02
.*             X'175' = MSSC CONTROL BLOCK NOT AVAILABLE       @Y30LB02
.*                       (VS/2 ONLY)                           @Y30LB02
.*                                                             @Y30LB02
.*         FOR THE ERROR COMPLETION CODE                       @Y30LB02
.*             X'176' = INTERMIXED CHAIN FOR RELINQUISH.       @Y30LB02
.*         THE REQUEST IN ERROR CONTAINS THE COMPLETION        @Y30LB02
.*         CODE. REQUESTS PRIOR TO THE ONE IN ERROR CONTAIN    @Y30LB02
.*         A COMPLETION CODE OF X'000', BUT THE MSS            @Y30LB02
.*         ACTIVITY HAS *NOT* BEEN INITIATED - DO NOT WAIT     @Y30LB02
.*         FOR A DELAYED RESPONSE. EACH REQUEST SUBSEQUENT     @Y30LB02
.*         TO THE ONE IN ERROR CONTAINS A COMPLETION CODE      @Y30LB02
.*         OF X'170' - DO *NOT* WAIT FOR A DELAYED RESPONSE    @Y30LB02
.*         FROM THESE REQUESTS.                                @Y30LB02
.*                                                             @Y30LB02
.*         IF THE FIRST ERROR COMPLETION CODE FOUND IN A       @Y30LB02
.*         RELINQUISH CHAIN IS NOT ONE OF THE CODES            @Y30LB02
.*         DESCRIBED ABOVE, EACH REQUEST IN THE CHAIN MUST     @Y30LB02
.*         BE INTERROGATED TO DETERMINE IF IT HAS FAILED       @Y30LB02
.*         AND THE REASON FOR THE FAILURE (SOME OR ALL OF      @Y30LB02
.*         THE REQUESTS MAY HAVE FAILED,EACH FOR A DIFFERENT   @Y30LB02
.*         REASON). IN THIS SITUATION, WAIT FOR A DELAYED      @Y30LB02
.*         RESPONSE ONLY IF THE COMPLETION CODE IS X'000'      @Y30LB02
.*         AND A DELAYED RESPONSE WAS REQUESTED.               @Y30LB02
.*                                                             @Y30LB02
.*     'AREXT' = EXTENTS. MAY BE SET BY MACRO PARAMETER.       @Y30LB02
.*                                                             @Y30LB02
.*     'ARNEDB' = ADDR OF THE NEXT EXTENT BLOCK. THROUGH       @ZA28964
.*         THE USE OF THIS POINTER, MULTIPLE ACQUIRES OR       @ZA28964
.*         RELINQUISHES MAY BE LINKED TOGETHER AND             @ZA28964
.*         EXECUTED WITH ONE CALL TO SVC 126. POINTS TO        @ZA28964
.*         AN AUXILLARY REQUEST BLOCK CONTAINING RELATED       @Y30LB02
.*         INFORMATION FOR THE SAME OR DIFFERENT VOLUME(S)     @Y30LB02
.*         AND DIFFERENT EXTENTS. ANY CHAIN OF REQUESTS MUST   @Y30LB02
.*         CONTAIN ONLY ACQUIRE REQUESTS OR ONLY               @Y30LB02
.*         RELINQUISH REQUESTS (NO MIXTURE). ALL INFORMATION   @Y30LB02
.*         REQUIRED MUST BE SPECIFIED IN EACH REQUEST BLOCK.   @Y30LB02
.*         A POINTER OF ZERO INDICATES THAT NO MORE            @Y30LB02
.*         REQUESTS ARE TO BE PROCESSED IN THIS CALL.          @Y30LB02
.*                                                             @Y30LB02
.* OUTPUT =                                                    @Y30LB02
.*                                                             @Y30LB02
.*   INLINE PL/S OR BAL STATEMENTS THAT PERFORM THE REQUESTED  @Y30LB02
.*   FUNCTION AND ERROR MESSAGES AS COMMENTS AT THE POINT      @Y30LB02
.*   OF INVOCATION.                                            @Y30LB02
.*                                                             @Y30LB02
.*   SVC126 REQUEST BLOCK (LIST AND STANDARD FORMS):           @Y30LB02
.*                                                             @Y30LB02
.*     OFFSETS  LENGTH    BAL    DESCRIPTION                   @Y30LB02
.*     DEC HEX  (BYTES)  LABEL                                 @Y30LB02
.*     -------  ------  -------  -----------                   @Y30LB02
.*      0  (0)     4    ARLEN    REQUEST BLOCK LENGTH          @Y30LB02
.*      4  (4)     1    AROP     OPCODE                        @Y30LB02
.*      5  (5)     1    ARRES0   RESERVED                      @Y30LB02
.*      6  (6)     1    ARFLAG   FLAGS                         @Y30LB02
.*      7  (7)     1    ARNMEXTS NUMBER OF EXTENTS             @Y30LB02
.*      8  (8)     6    ARVOL    VOLID                         @Y30LB02
.*     14  (E)     2    ARASID   ADDR SPACE ID                 @Y30LB02
.*     16  (10)    4    ARECB    EVENT CONTROL BLOCK ADDR      @Y30LB02
.*     20  (14)    5    ARHOST   HOSTID                        @Y30LB02
.*     25  (19)    1    ARRES3   RESERVED                      @Y30LB02
.*     26  (1A)    2    ARCOMPC  COMPLETION CODE               @Y30LB02
.*     28  (1C)   64DEC AREXT    EXTENTS                       @Y30LB02
.*     92  (5C)    4    ARNEDB   ADDR OF NEXT REQ BLK          @Y30LB02
.*                                                             @Y30LB02
.* EXIT-NORMAL = VALID INVOCATION                              @Y30LB02
.*                                                             @Y30LB02
.*   CONDITION = RETURN CODE = 0  4                           @Y30LB02
.*                                                             @Y30LB02
.*   OUTPUT = REQUEST BLOCK AND STATEMENTS GENERATED. IF PL/S  @ZA28964
.*       WARNING MESSAGES ARE GENERATED (RETCODE=4), THEY WILL @ZA28964
.*       ONLY APPEAR AS COMMENTS WHEN THE 'MSOURCE' PARAMETER  @ZA28964
.*       IS USED IN THE PL/S COMPILATION. IF THE ACQUIRE/      @ZA28964
.*       RELINQUISH REQUEST GENERATES A RUN-TIME ERROR, THE    @ZA28964
.*       MSSC SVC 126 WILL EXIT WITH R15 = 4 AND R0 = 0. IN    @ZA28964
.*       THIS CASE, THE USER MUST SCAN THE COMPLETION CODES    @ZA28964
.*       IN THE CHAIN OF REQUESTS TO DETERMINE THE REQUESTS    @ZA28964
.*       IN ERROR.                                             @ZA28964
.*                                                             @ZA28964
.*   MESSAGES =                                                @Y30LB02
.*                                                             @Y30LB02
.*     ICB603I:  WARNING-ONLY MF AND TYPE PARAMETERS ARE       @Y30LB02
.*               VALID FOR LIST FORM                           @Y30LB02
.*                                                             @Y30LB02
.* EXIT-ERROR = INVALID INVOCATION                             @Y30LB02
.*                                                             @Y30LB02
.*   CONDITION = RETURN CODE = 12                              @Y30LB02
.*                                                             @Y30LB02
.*   OUTPUT = REQUEST BLOCK AND STATEMENTS NOT GENERATED. PL/S @ZA28964
.*       ERROR MESSAGES WILL ONLY APPEAR AS COMMENTS WHEN THE  @ZA28964
.*       'MSOURCE' PARAMETER IS USED IN THE PL/S COMPILATION.  @ZA28964
.*       IF THE ACQUIRE/RELINQUISH REQUEST GENERATES AN ERROR  @ZA28964
.*       AT RUN-TIME, THE MSSC SVC 126 WILL EXIT WITH R15 = 4  @ZA28964
.*       AND R0 = 0. IN THIS CASE, THE USER MUST SCAN THE      @ZA28964
.*       THE COMPLETION CODES IN THE CHAIN OF REQUESTS TO      @ZA28964
.*       DETERMINE THE REQUESTS IN ERROR.                      @ZA28964
.*                                                             @ZA28964
.*   MESSAGES =                                                @Y30LB02
.*                                                             @Y30LB02
.*     ICB600I:  TYPE MUST BE SPECIFIED                        @Y30LB02
.*     ICB601I:  TYPE IS INCORRECTLY SPECIFIED                 @Y30LB02
.*     ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*               SPECIFIED IN MF(2)                            @Y30LB02
.*     ICB606I:  EXTS MUST BE SPECIFIED FOR THE STANDARD FORM  @Y30LB02
.*               MACRO                                         @Y30LB02
.*     ICB609I:  NMEXTS MUST BE SPECIFIED FOR STANDARD         @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB610I:  VOLID MUST BE SPECIFIED FOR STANDARD          @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME               @Y30LB02
.*               IF EXEC MACRO FORM REQUESTED                  @Y30LB02
.*     ICB613I:  MISSING REQ BLK NAME OR                       @Y30LB02
.*               MORE THAN 2 SUBPARAMETERS FOR MF              @Y30LB02
.*     ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST          @Y30LB02
.*               BE L, E, OR NULL                              @Y30LB02
.*                                                             @Y30LB02
.* EXTERNAL REFERENCES =                                       @Y30LB02
.*                                                             @Y30LB02
.*   ROUTINES = NONE                                           @Y30LB02
.*                                                             @Y30LB02
.*   DATA-AREAS =                                              @Y30LB02
.*                                                             @Y30LB02
.*     BAL : GLOBAL VARIABLES USED                             @Y30LB02
.*       &ARSTEST : >0 IF THE STANDARD FORM HAS BEEN           @Y30LB02
.*           INVOKED PREVIOUSLY IN THE CALLING MODULE          @Y30LB02
.*                                                             @Y30LB02
.*     PL/S: FIXED EXTERNAL DECLARATIONS USED                  @Y30LB02
.*       ARTESTR1: >0 IF ARR1 HAS BEEN DECLARED AS REG1        @Y30LB02
.*           PREVIOUSLY IN THE CALLING MODULE                  @Y30LB02
.*       ARTEST : >0 IF THE STANDARD FORM HAS BEEN             @Y30LB02
.*           PREVIOUSLY INVOKED IN THE CALLING MODULE          @Y30LB02
.*                                                             @Y30LB02
.*   CONTROL-BLOCKS = NONE                                     @Y30LB02
.*                                                             @Y30LB02
.* TABLES = NONE                                               @Y30LB02
.*                                                             @Y30LB02
.* MACROS = IHBINNRA (USED IN BAL TO LOAD REG1)                @Y30LB02
.*                                                             @Y30LB02
.* CHANGE-ACTIVITY =                                           @Y30LB02
.*                                                             @Y30LB02
.*   00 74/06/09 DEVELOPMENT                                   @Y30LB02
.*   01 76/04/20 ALLOCATE TO MOUNTED VOLUMES                   @G24LB04
.*   02 77/12/15 DOCUMENTATION ADDITIONS/RESTRUCTURE           @ZA28964
.*               BAL STD FORM SERIALLY REUSABLE                @ZA28964
.*               PL/S VARIABLE 'EXSPTR' RENAMED 'ARSPTR'       @ZA28964
.*               PL/S LABELS DECLARED IN BAL VERSION           @ZA28964
.*               BAL LABELS DECLARED IN PL/S VERSION           @ZA28964
.*               PL/S MACRO INVOCATION ECHOED BACK TO CALLER   @ZA28964
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         GBLB  &ARTEST       STANDARD FORM FLAG                @Y30LB02
         LCLC  &MEXTS                                          @Y30LB02
         LCLC  &END                                            @Y30LB02
         LCLC  &ACQRE                                          @Y30LB02
&END     SETC  'AR'.'&SYSNDX'                                  @Y30LB02
&MEXTS   SETC  'AR1'.'&SYSNDX'                                 @Y30LB02
&ACQRE   SETC  'AR2'.'&SYSNDX'                                 @Y30LB02
         AIF   ('&MF(1)' EQ 'E').EXEC  IF EXECUTE              @Y30LB02
         AIF   ('&TYPE' EQ 'ACQ' OR '&TYPE' EQ 'REL').START    @Y30LB02
         AIF   ('&TYPE' EQ '').NOT                             @Y30LB02
         MNOTE 12,'  ICB601I - TYPE IS INCORRECTLY SPECIFIED ' @Y30LB02
         AGO   .EXIT                                           @Y30LB02
.NOT     MNOTE 12,'  ICB600I - TYPE MUST BE SPECIFIED '        @Y30LB02
         AGO   .EXIT                                           @Y30LB02
.*                                                             @ZA28964
.START   AIF   ('&MF(1)' NE 'L').NLIST BRANCH IF NOT LIST FORM @Y30LB02
.*                                                             @ZA28964
.* *********************************************************** @Y30LB02
.*               L I S T   F O R M                             @ZA28964
.* *********************************************************** @Y30LB02
.*                                                             @ZA28964
.*       THE FOLLOWING CODE CHECKS FOR ILLEGAL PARAMETERS ON   @Y30LB02
.*       LIST FORM MACRO AND GIVES WARNING IF FOUND            @Y30LB02
.*                                                             @Y30LB02
         AIF   ('&FLAGS' NE '' OR '&VOLID' NE '').WARN         @Y30LB02
         AIF   ('&ECB' NE '' OR '&EXTS' NE '').WARN            @Y30LB02
         AIF   ('&HOSTID' EQ '' AND '&NMEXTS' EQ '').LISTOK    @ZA28964
.*                                                             @Y30LB02
.WARN    MNOTE 4,'  ICB603I - WARNING-ONLY MF AND TYPE '       @Y30LB02
         MNOTE 4,'  PARAMETERS ARE VALID FOR LIST FORM '       @Y30LB02
.*                                                             @Y30LB02
.LISTOK  AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*        MACMEAN  ACQUIRE/RELINQUISH MACRO                     @Y30LB02
*                 INITIALIZED LIST FORM MACRO                  @Y30LB02
*                 VERSION - VS/2 REL 3 77/12/15  LEVEL 02      @ZA28964
*                                                              @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
ARLEN    DC    F'96'                   REQUEST BLOCK LENGTH    @Y30LB02
         AIF   ('&TYPE' EQ 'REL').LREL BRCH IF REL. REQUEST    @Y30LB02
AROP     DC    XL1'02'                 OPCODE FOR ACQUIRE      @Y30LB02
         AGO   .ZEROES                 BRANCH                  @Y30LB02
.LREL    ANOP                                                  @Y30LB02
AROP     DC    XL1'04'                 OPCODE FOR RELINQUISH   @Y30LB02
.ZEROES  ANOP                                                  @Y30LB02
ARRES0   DC    XL1'00'                 RESERVED                @Y30LB02
ARFLAG   DC    XL1'00'                 FLAGS                   @Y30LB02
ARNMEXTS DC    XL1'00'                 NUM EXTS                @Y30LB02
ARVOL    DC    XL6'000000000000'       VOLID                   @Y30LB02
ARASID   DC    XL2'0000'               ASID                    @Y30LB02
ARECB    DC    XL4'00000000'           ECB                     @Y30LB02
ARHOST   DC    XL5'0000000000'         HOSTID                  @Y30LB02
ARRES3   DC    XL1'00'                 RESERVED                @Y30LB02
ARCOMPC  DC    XL2'0000'               COMP CODE               @Y30LB02
AREXT    DC    16XL4'00000000'         EXTS                    @Y30LB02
ARNEDB   DC    XL4'00000000'           ADDR OF NEXT EXT BLK    @Y30LB02
ARLL     EQU   ARLEN                   COMPATABILITY DEF       @ZA28964
ARFLG    EQU   ARFLAG                  COMPATIBILITY DEF       @ZA28964
ARNMEXT  EQU   ARNMEXTS                COMPATIBILITY DEF       @ZA28964
         AGO   .EXIT                   GO TO EXIT              @Y30LB02
.*                                                             @ZA28964
.LISTDS  ANOP                                                  @Y30LB02
*        MACMEAN  ACQUIRE/RELINQUISH MACRO                     @Y30LB02
*                 UNINITIALIZED LIST FORM MACRO                @Y30LB02
*                 VERSION - VS/2 REL 3 77/12/15  LEVEL 02      @ZA28964
*                                                              @Y30LB02
ICBACREL DSECT                                                 @Y30LB02
ARLEN    DS    F                       REQ BLK LEN 96 DEC      @Y30LB02
         AIF   ('&TYPE' EQ 'REL').LREL1 BRCH IF REL. REQUEST   @Y30LB02
AROP     DS    XL1                     ACQUIRE OPCD (02 HEX)   @ZA28964
         AGO   .RESTDS                 BRANCH                  @Y30LB02
.*                                                             @ZA28964
.LREL1   ANOP                                                  @Y30LB02
AROP     DS    XL1                     RELINQ OPCD (04 HEX)    @ZA28964
.*                                                             @ZA28964
.RESTDS  ANOP                                                  @Y30LB02
ARRES0   DS    XL1                     RESERVED                @ZA28964
ARFLAG   DS    XL1                     FLAGS                   @ZA28964
ARNMEXTS DS    XL1                     NUM EXTS                @ZA28964
ARVOL    DS    CL6                     VOLID                   @ZA28964
ARASID   DS    XL2                     ASID                    @ZA28964
ARECB    DS    A                       ECB                     @ZA28964
ARHOST   DS    CL5                     HOSTID                  @ZA28964
ARRES3   DS    XL1                     RESERVED                @ZA28964
ARCOMPC  DS    XL2                     COMPLETION CODE         @ZA28964
AREXT    DS    16XL4                   EXTENTS                 @ZA28964
ARNEDB   DS    A                       ADDR OF NEXT EXT BLK    @Y30LB02
ARLL     EQU   ARLEN                   COMPATABILITY DEF       @ZA28964
ARFLG    EQU   ARFLAG                  COMPATIBILITY DEF       @ZA28964
ARNMEXT  EQU   ARNMEXTS                COMPATIBILITY DEF       @ZA28964
         AGO   .EXIT                   GO TO EXIT              @Y30LB02
.*                                                             @ZA28964
.NLIST   AIF   ('&MF(1)' EQ '').ISSTD  IF STD. FORM BRANCH     @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL'         @Y30LB02
         AGO   .EXIT                   BRANCH                  @ZA28964
.*                                                             @ZA28964
.* *********************************************************** @ZA28964
.*        S T A N D A R D   F O R M                            @ZA28964
.* *********************************************************** @ZA28964
.*                                                             @ZA28964
.ISSTD   AIF   ('&NMEXTS' NE '').VOLIDCK BRCH IF NMEXTS SPEC'D @Y30LB02
         MNOTE 12,'  ICB609I - NMEXTS MUST BE SPECIFIED '      @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .EXIT                                           @Y30LB02
.*                                                             @ZA28964
.VOLIDCK AIF   ('&VOLID' NE '').EXTSCK IF VOLID SPEC'D         @ZA28964
         MNOTE 12,'  ICB610I - VOLID MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .EXIT                                           @ZA28964
.*                                                             @ZA28964
.EXTSCK  AIF   ('&EXTS' NE '').PAROK   IF EXTS SPEC'D,BRCH     @Y30LB02
         MNOTE 12,'  ICB606I - EXTS MUST BE SPECIFIED '        @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .EXIT                                           @ZA28964
.*                                                             @ZA28964
.PAROK   ANOP                                                  @ZA28964
*        MACMEAN  ACQUIRE/RELINQUISH MACRO                     @ZA28964
*                 STANDARD FORM INVOCATION                     @ZA28964
*                 VERSION - VS/2 REL 3 77/12/15  LEVEL 02      @ZA28964
         AIF   (&ARTEST).ARSET    IF ^ FIRST INVOCATION        @ZA28964
&ARTEST  SETB  1                                               @ZA28964
         CNOP  0,4                                             @Y30LB02
&SYMBOL  BAL   1,&ACQRE                BRANCH AROUND REQBLK    @Y30LB02
ARLEN    DC    A(&ACQRE-*)             REQUEST BLOCK LENGTH    @Y30LB02
         AIF   ('&TYPE' EQ 'REL').SREL BRCH IF REL REQUEST     @Y30LB02
AROP     DC    XL1'02'                 ACQ OPCODE              @Y30LB02
         AGO   .REST                   BRCH TO REST OF DC'S    @Y30LB02
.*                                                             @ZA28964
.SREL    ANOP                                                  @Y30LB02
AROP     DC    XL1'04'                 REL OPCODE              @Y30LB02
.*                                                             @ZA28964
.REST    ANOP                                                  @Y30LB02
ARRES0   DC    XL1'00'                 RESERVED                @ZA28964
ARFLAG   DC    XL1'00'                 FLAGS                   @ZA28964
ARNMEXTS DC    XL1'00'                 NUM EXTS                @ZA28964
ARVOL    DC    XL6'000000000000'       VOLID                   @ZA28964
ARASID   DC    XL2'0000'               ASID                    @ZA28964
ARECB    DC    XL4'00000000'           ECB                     @ZA28964
ARHOST   DC    XL5'0000000000'         HOSTID                  @ZA28964
ARRES3   DC    XL1'00'                 RESERVED                @ZA28964
ARCOMPC  DC    XL2'0000'               COMP CODE               @ZA28964
AREXT    DC    16XL4'00000000'         EXTS                    @ZA28964
ARNEDB   DC    XL4'00000000'           ADDR NEXT EXT BLK       @ZA28964
ARLL     EQU   ARLEN                   COMPATABILITY DEF       @ZA28964
ARFLG    EQU   ARFLAG                  COMPATIBILITY DEF       @ZA28964
ARNMEXT  EQU   ARNMEXTS                COMPATIBILITY DEF       @ZA28964
&ACQRE   EQU   *                                               @Y30LB02
         AGO   .TEST                   BRANCH                  @Y30LB02
.*                                                             @ZA28964
.ARSET   ANOP                                                  @ZA28964
*                 SUBSEQUENT STANDARD FORM INVOCATION          @ZA28964
&SYMBOL  LA    1,ARLEN       LOAD LIST ADDRESS IN REG 1        @ZA28964
.*                                                             @ZA28964
.TEST    AIF   ('&FLAGS' EQ '').NMEXTS  BRCH IF NOT SPEC'D     @ZA28964
         AIF   ('&FLAGS'(1,1) EQ '(').RFLAGS IF REGFORM        @ZA28964
         MVC   6(1,1),&FLAGS           MOVE FLAGS              @ZA28964
         AGO   .NMEXTS                 BRCH TO CHECK FOR VOLID @Y30LB02
.*                                                             @ZA28964
.RFLAGS  ANOP                                                  @Y30LB02
         MVC   6(1,1),0(&FLAGS(1))     MOVE FLAGS              @ZA28964
.*                                                             @ZA28964
.NMEXTS  AIF   ('&NMEXTS'(1,1) EQ '(').RNEXT IF REGFORM        @ZA28964
         MVC   7(1,1),&NMEXTS          MOVE #EXT INFO          @ZA28964
         AGO   .VOLOK                  BRCH TO CHECK FOR VOLID @Y30LB02
.*                                                             @ZA28964
.RNEXT   ANOP                                                  @Y30LB02
         MVC   7(1,1),0(&NMEXTS(1))    MOVE #EXT INFO          @ZA28964
.*                                                             @ZA28964
.VOLOK   AIF   ('&VOLID'(1,1) EQ '(').RVOLID IF REGFORM        @ZA28964
         MVC   8(6,1),&VOLID           MOVE VOLID              @ZA28964
         AGO   .ECBCK                  BRANCH TO CHECK FOR ECB @Y30LB02
.*                                                             @ZA28964
.RVOLID  ANOP                                                  @Y30LB02
         MVC   8(6,1),0(&VOLID(1))     MOVE VOLID              @ZA28964
.*                                                             @ZA28964
.ECBCK   AIF   ('&ECB' EQ '').HOSTCK   IF ECB NOT SPEC'D.,BRCH @ZA28964
         AIF   ('&ECB'(1,1) EQ '(').RECB IF SPEC'D BY REG,BRCH @Y30LB02
         LA    15,&ECB                 LOAD R15 WITH ADDR(ECB) @Y30LB02
         ST    15,16(1)                STORE ADDR IN ECB FIELD @Y30LB02
         AGO   .HOSTCK                 BRANCH TO CHECK HOST    @Y30LB02
.*                                                             @ZA28964
.RECB    ANOP                                                  @Y30LB02
         ST    &ECB,16(1)              ST ADDR IN THE ECB FLD  @Y30LB02
.*                                                             @ZA28964
.HOSTCK  AIF   ('&HOSTID' EQ '').EXTS    IF HOST NOT SPECD,BR  @ZA28964
         AIF   ('&HOSTID'(1,1) EQ '(').RHOST REG-FORM,BRANCH   @Y30LB02
         MVC   20(5,1),&HOSTID         STORE HOSTID IN BLOCK   @Y30LB02
         AGO   .EXTS                   BRANCH                  @Y30LB02
.*                                                             @ZA28964
.RHOST   ANOP                                                  @Y30LB02
         MVC   20(5,1),0(&HOSTID(1))   STORE HOSTID IN BLOCK   @Y30LB02
.*                                                             @ZA28964
.EXTS    ANOP                                                  @ZA28964
         SR    14,14                   ZERO REGISTER 14        @Y30LB02
         IC    14,&NMEXTS              PUT #EXTS INTO R14      @Y30LB02
         SLA   14,2                    MULT R14 BY 4           @Y30LB02
         LA    15,1                    LOAD 1 INTO R15         @Y30LB02
         SR    14,15                   SUB R15 FROM R14        @Y30LB02
         AIF   ('&EXTS'(1,1) EQ '(').RNMEX SPEC'D. BY REG,BR   @Y30LB02
         LA    15,&EXTS                LOAD EXTS ADDR INTO R15 @Y30LB02
         AGO   .LOAD5                  BRANCH                  @Y30LB02
.*                                                             @ZA28964
.RNMEX   ANOP                                                  @Y30LB02
         LR    15,&EXTS                LOAD EXTS ADDR INTO R15 @Y30LB02
.*                                                             @ZA28964
.LOAD5   ANOP                                                  @Y30LB02
         EX    14,&MEXTS               EXEC MOVE(EXTENTS) INST @Y30LB02
         B     &END                    BRANCH TO THE END       @Y30LB02
&MEXTS   MVC   28(1,1),0(15)           MOVE 64 BYTES (OF       @Y30LB02
*                                      EXTENTS) INTO REQ BLOCK @Y30LB02
         AGO   .LINK                   INVOKE THE SVC          @ZA28964
.*                                                             @ZA28964
.* *********************************************************** @ZA28964
.*        E X E C U T E   F O R M                              @ZA28964
.* *********************************************************** @ZA28964
.*                                                             @ZA28964
.EXEC    AIF   (N'&MF EQ 2).CONT       IF 2 SUBPARAMETERS      @ZA28964
         MNOTE 12,'  ICB613I - MISSING REQ BLK NAME '          @Y30LB02
         MNOTE 12,'  OR MORE THAN 2 SUBPARAMETERS FOR MF '     @Y30LB02
         AGO   .EXIT                   BRANCH                  @ZA28964
.*                                                             @ZA28964
.CONT    ANOP                                                  @Y30LB02
*        MACMEAN  ACQUIRE/RELINQUISH MACRO                     @ZA28964
*                 EXECUTE FORM INVOCATION                      @ZA28964
*                 VERSION - VS/2 REL 3 77/12/15  LEVEL 02      @ZA28964
&SYMBOL  IHBINNRA &MF(2)               LOAD THE ADDR INTO R1   @Y30LB02
.*                                                             @ZA28964
.LINK    ANOP                                                  @Y30LB02
&END     SVC   126                     LINK TO THE SVC         @Y30LB02
.*                                                             @ZA28964
.EXIT    MEND                                                  @Y30LB02
**********************************************************     @ZA28964
*********************************************************/
* ICBACREL: MACRO KEYS(MF,TYPE,FLAGS,VOLID,ECB,EXTS,
*                  HOSTID,NMEXTS);                         /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @ZA28964*/
*/*          EXTERNAL DECLARES                               @Y30LB02*/
*/********************************************************** @ZA28964*/
*   DCL (ARTEST,                       /*USED AS A TEST TO   @Y30LB02*/
*                                      /*SEE IF STD FORM     @Y30LB02*/
*                                      /*ALREADY INVOKED     @Y30LB02*/
*        ARTESTR1) FIXED EXT;          /*USED AS A TEST TO   @Y30LB02*/
*                                      /*SEE IF R1 ALREADY   @Y30LB02*/
*                                      /*DECLARED            @Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @ZA28964*/
*/*            INTERNAL DECLARES                             @Y30LB02*/
*/********************************************************** @ZA28964*/
*   DCL (ARLENGTH,                     /*LIST LENGTH         @Y30LB02*/
*        AOPCODE,                      /* ACQUIRE OPCODE     @Y30LB02*/
*        ROPCODE) CHAR,                /* RELINQUISH OPCODE  @Y30LB02*/
*        RETCODE FIXED;                /* RETURN CODE        @Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @ZA28964*/
*/*             VARIABLE INITIALIZATION                      @ZA28964*/
*/********************************************************** @ZA28964*/
*   ARLENGTH='96';                     /*LEN CONSTANT OF 96  @Y30LB02*/
*   AOPCODE='02';                      /* ACQUIRE OPCODE     @Y30LB02*/
*   ROPCODE='04';                      /* RELINQUISH OPCODE  @Y30LB02*/
*   RETCODE=0;                         /*RETURN CODE         @Y30LB02*/
*/*                                                          @ZA28964*/
*/*   NOTE: ANSWER TEXT IS INCLUDED AT THE END OF THE MACRO  @ZA28964*/
*/*         AND IS INVOKED IN A SEGMENT-LIKE FASHION         @ZA28964*/
*/*                                                          @ZA28964*/
*/********************************************************** @ZA28964*/
*/*     ECHO INVOCATION BACK TO CALLING MODULE               @ZA28964*/
*/********************************************************** @ZA28964*/
*  ANS('     /* MACRO INVOCATION:  @ZA28964*/')SKIP;
*  ANS('     /* '  MACLABEL  ' '  MACNAME  ' '  MACLIST 
*      ' '  MACKEYS  ' @ZA28964*/')SKIP;               /*@ZA28964*/
*/*                                                          @ZA28964*/
*/********************************************************** @ZA28964*/
*/*         DECLARE REGISTER 1                               @ZA28964*/
*/********************************************************** @ZA28964*/
*  IF ARTESTR1=0 THEN                  /*HAS R1 BEEN DCL'D?  @Y30LB02*/
*    DO;                               /*NO,DECLARE REG1     @Y30LB02*/
*      ANS('DCL ARR1 REG(1) PTR ;   '
*          '/*WILL CONTAIN LIST ADDRESS   @Y30LB02*/') SKIP;
*      ARTESTR1=1;                     /*SET ARTESTR1 TO 1   @Y30LB02*/
*    END;                                                  /*@Y30LB02*/
*/*                                                          @ZA28964*/
*/********************************************************** @ZA28964*/
*/*      CHECK FOR VALID TYPE                                @ZA28964*/
*/********************************************************** @ZA28964*/
*  IF MF(1) = 'E' THEN                 /*EXECUTE FORM SPECD? @Y30LB02*/
*    GO TO EXFORM;                     /*YES, BRANCH         @Y30LB02*/
*  IF TYPE(1) ^= 'ACQ' THEN IF TYPE(1) ^= 'REL' THEN       /*@ZA28964*/
*    DO;                                                   /*@ZA28964*/
*      IF TYPE(1) = '' THEN                                /*@ZA28964*/
*        ANS MSG('  ICB600I - TYPE '
*                'MUST BE SPECIFIED') SKIP(5);             /*@Y30LB02*/
*      ELSE                                                /*@ZA28964*/
*        ANS MSG('  ICB601I - TYPE '
*                ' IS INCORRECTLY SPECIFIED') SKIP(5);     /*@Y30LB02*/
*      RETCODE=12;                     /*SET RETURN CODE     @Y30LB02*/
*      GO TO FINISH;                                       /*@ZA28964*/
*    END;                                                  /*@ZA28964*/
*/*                                                          @ZA28964*/
*/********************************************************** @ZA28964*/
*/*          LIST FORM                                       @ZA28964*/
*/********************************************************** @ZA28964*/
*  IF MF(1)^='L' THEN                  /* IF NOT LIST FORM   @Y30LB02*/
*    GO TO NOTLIST;                    /* BRANCH             @Y30LB02*/
*  IF MF(2)='' THEN                    /* WAS A NAME GIVEN?  @Y30LB02*/
*    DO;                               /* NO,PRT ERROR MSG   @Y30LB02*/
*      ANS MSG('  ICB602I - A NAME FOR THE REQUEST BLOCK '
*              'MUST BE SPECIFIED IN MF(2) ') SKIP(5);     /*@Y30LB02*/
*      RETCODE=12;                     /*SET RETURN CODE     @Y30LB02*/
*      GO TO FINISH;                                       /*@Y30LB02*/
*    END;                                                  /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*  IF FLAGS                          /*FLAGS SPECIFIED?    @Y30LB02*/
*     VOLID                          /*VOLID SPECIFIED     @Y30LB02*/
*     ECB                            /*ECB SPECIFIED?      @Y30LB02*/
*     EXTS                           /*EXTENTS SPECIFIED?  @Y30LB02*/
*     HOSTID                         /*HOSTID SPECIFIED?   @Y30LB02*/
*     NMEXTS ^= '' THEN                /*NMEXTS SPECIFIED?   @Y30LB02*/
*    DO;                               /*PRT WARNING MSG     @Y30LB02*/
*      RETCODE=4;                      /*RETURN CODE EQ 4    @Y30LB02*/
*      ANS MSG('  ICB603I - WARNING-ONLY '
*              'MF AND TYPE PARAMETERS ARE VALID FOR '
*              'LIST FORM ')SKIP;                          /*@Y30LB02*/
*    END;                                                  /*@Y30LB02*/
*  IF MF(3) = '' THEN        /*ATTRIBUTE ^ SPECIFIED         @Y30LB02*/
*    GO TO LINIT;            /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  AND THEN GO TO FINISH       @ZA28964*/
*  ELSE
*    GO TO LUN;              /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  AND THEN GO TO FINISH       @ZA28964*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*        STANDARD FORM                                     @ZA28964*/
*/*********************************************************  @Y30LB02*/
*  NOTLIST:                                                /*@Y30LB02*/
*  IF MF(1)^='' THEN                   /* IF NOT STD FORM    @Y30LB02*/
*    DO;                               /* PRT ERROR MESSAGE  @Y30LB02*/
*      ANS MSG('  ICB615I - INVALID MF PARAMETER'
*              ' SPECIFIED, MUST BE L, E, OR NULL')SKIP;   /*@Y30LB02*/
*      RETCODE=12;                     /*SET RETURN CODE     @Y30LB02*/
*      GO TO FINISH;                   /* AND EXIT           @ZA28964*/
*    END;                                                  /*@Y30LB02*/
*/*                                                        /*@ZA28964*/
*  IF NMEXTS = '' THEN                 /* IS NMEXT SPEC'D?   @Y30LB02*/
*    DO;                                                   /*@Y30LB02*/
*      ANS MSG('  ICB609I - NMEXTS MUST BE '
*              'SPECIFIED FOR STANDARD FORM MACRO ')SKIP;
*      RETCODE = 12;                                       /*@ZA28964*/
*    END;                                                  /*@Y30LB02*/
*  IF VOLID = '' THEN                  /* IS VOLID SPEC'D?   @Y30LB02*/
*    DO;                                                   /*@Y30LB02*/
*      ANS MSG('  ICB610I - VOLID MUST BE SPECIFIED FOR'
*              ' STANDARD FORM MACRO')SKIP;                /*@Y30LB02*/
*      RETCODE = 12;                                       /*@Y30LB02*/
*    END;                                                  /*@ZA28964*/
*  IF EXTS = '' THEN                   /* IS EXTS SPEC'D?    @Y30LB02*/
*    DO;                                                   /*@Y30LB02*/
*      ANS MSG('  ICB606I - EXTS MUST BE '
*              ' SPECIFIED FOR STANDARD FORM MACRO ')SKIP;
*      RETCODE=12;           /*SET RETURN CODE               @Y30LB02*/
*    END;                                                  /*@Y30LB02*/
*  IF RETCODE >= 12 THEN     /*ERROR FOUND                   @ZA28964*/
*    GO TO FINISH;           /*BRANCH                        @Y30LB02*/
*  IF ARTEST=1 THEN          /*IF THE STD FM HAS             @Y30LB02*/
*                            /*BEEN INVOKED ALRDY            @Y30LB02*/
*    GO TO STDSEC;           /*SET UP REG1 TO PNT            @Y30LB02*/
*                            /*TO REQUEST BLOCK              @Y30LB02*/
*                            /*BY CALLING TEXT,              @ZA28964*/
*                            /* THEN GOTO FCHECK             @ZA28964*/
*  ELSE                                                    /*@ZA28964*/
*    GO TO STDINT;           /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  THEN GO TO FCHECK           @ZA28964*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*         FILL IN STANDARD FORM PARAMETERS                 @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*  FCHECK:                                                 /*@Y30LB02*/
*  IF FLAGS ^= '' THEN                 /*ARE FLAGS SPEC'D?   @Y30LB02*/
*    ANS('ARFLG='FLAGS';/*FILL IN FLAGS  @Y30LB02*/')SKIP;
*/*                                                          @ZA28964*/
*  ANS('ARNMEXT='NMEXTS';/*FILL IN NMEXT  @Y30LB02*/')SKIP;
*/*                                                          @ZA28964*/
*  ANS('ARVOL='VOLID';/*FILL IN VOLID  @Y30LB02*/')SKIP;
*/*                                                          @ZA28964*/
*  IF ECB ^= '' THEN        /* IF ECB SPECIFIED              @ZA28964*/
*    ANS('ARECB=ADDR'ECB';/*FILL IN ECB @Z30LB02*/')SKIP;
*/*                                                          @ZA28964*/
*  IF HOSTID ^= '' THEN                /*CK FOR HOSTID       @Y30LB02*/
*    ANS('ARHOST='HOSTID';/*FILL IN HOSTID @Y30LB02*/')SKIP;
*/*                                                          @ZA28964*/
*  ANS(' /*THE FOLLOWING CODE MOVES THE'
*      ' EXTENTS INFO INTO THE BLOCK  @Y30LB02*/')SKIP;
*  IF ARTEST=0 THEN   /* FIRST INVOCATION OF STD FORM        @ZA28964*/
*    DO;                                                   /*@Y30LB02*/
*      ANS('DCL ARI FIXED(31) INIT(0);'
*          '/*LOOP CTR INDEX  @Y30LB02*/') SKIP;
*      ANS('/*ARSPTR IS PTR USED TO EXTRACT'
*          ' # OF EXTENTS AND EXTENTS INFO   */')SKIP;
*      ANS('DCL ARSPTR PTR(31);') SKIP;
*      ANS('DCL ARE CHAR(4) BASED(ARSPTR)'
*          ';  /* EXTENTS   @Y30LB02*/') SKIP;
*      ARTEST=1;              /* SET FLAG ON                 @Y30LB02*/
*    END;                                                  /*@Y30LB02*/
*  ANS('/*INITIALIZE ARSPTR TO PTR SPECD '
*      'FOR EXTS PARAMETER       @Y30LB02*/') SKIP;
*  ANS('ARSPTR=ADDR'EXTS' ;') SKIP;                    /*@Y30LB02*/
*  ANS('/*THIS DO LOOP MOVES THE BEG AND '
*      'END CYLINDERS TO LIST @Y30LB02*/') SKIP;
*  ANS('DO ARI=1 TO ARNMEXT;') SKIP;                       /*@Y30LB02*/
*  ANS('   AREXT(ARI)=ARE; /*FILL IN '
*      'EXTENTS FIELD  @Y30LB02*/') SKIP;
*  ANS('   ARSPTR=ARSPTR+4;/*INCR PTR TO'
*      ' EXTS FIELD  @Y30LB02*/') SKIP;
*  ANS('END;')  SKIP;                                      /*@Y30LB02*/
*  GO TO QUIT;                                             /*@ZA28964*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*               EXECUTE FORM                               @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @ZA28964*/
*  EXFORM:                                                 /*@ZA28964*/
*    IF MF(2)='' THEN                  /*ADDRESS  GIVEN?     @Y30LB02*/
*      DO;                             /*NO,ERROR MSG PRNTD  @Y30LB02*/
*        ANS MSG('  ICB612I - MF(2) MUST'
*                ' CONTAIN REQ BLK NAME IF '
*                'EXEC MACRO FORM REQUESTED') SKIP(5);     /*@Y30LB02*/
*        RETCODE=12;                                       /*@Y30LB02*/
*        GO TO FINISH;                  /*BRANCH             @Y30LB02*/
*      END;                                                /*@Y30LB02*/
*    ELSE                                                  /*@ZA28964*/
*      GO TO EXEC;           /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /* THEN GO TO QUIT              @ZA28964*/
*/*                                                          @ZA28964*/
*/********************************************************** @ZA28964*/
*/*           INVOKE SVC 126                                 @ZA28964*/
*/********************************************************** @ZA28964*/
*/*                                                          @ZA28964*/
*QUIT:  ANS('SVC (126); /*ISSUE  SVC   @Y30LB02*/') SKIP;
*       ANS('RFY(ARR1)UNRSTD;/*UNRESTRICT REG 1  @Y30LB02*/')SKIP;
*       GO TO FINISH;                                      /*@ZA28964*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*      MACRO ANSWER TEXT - EACH BLOCK IS INVOKED AT        @ZA28964*/
*/*      ONLY ONE POINT IN THE MACRO                         @ZA28964*/
*/********************************************************** @Y30LB02*/
*/*                                                          @Y30LB02*/
*  LINIT:
*   ANS('/*******************************************'
*       '*************  @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC ACQUIRE/RELINQUISH MACRO    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*       'LEVEL 02       @ZA28964*/')SKIP;
*   ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '*************  @Y30LB02*/')SKIP;
*   ANS('DCL 1   'MF(2)' STATIC LOCAL,')SKIP;          /*@Y30LB02*/
*   ANS('     2 ARLL FIXED(31) INIT(96),/*LENGTH @Y30LB02*/')SKIP;
*   IF TYPE(1) = 'ACQ' THEN                                /*@ZA28964*/
*     ANS('    2 AROP FIXED(8) INIT(2),/*OPCODE=02 @Y30LB02*/')SKIP;
*   ELSE                               /*RELINQUISH REQUEST  @Y30LB02*/
*     ANS('    2 AROP FIXED(8) INIT(4),/*OPCODE=04 @Y30LB02*/')SKIP;
*   ANS('      2  * CHAR(1) INIT('QUOTE('00')
*       'X),  /*RESERVED AREA  @Y30LB02*/') SKIP;
*   ANS('      2  ARFLG BIT(8) INIT('QUOTE('00000000')
*       'B), /*FLAGS  @Y30LB02*/') SKIP;
*   ANS('       3 ARBDUBD BIT(1),/* BIND/UNBIND BIT @Y30LB02*/')SKIP;
*   ANS('       3 ARDRES BIT(1),/* DELAYED RESPONSE BIT   @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARINH BIT(1), /*INHIBIT (DE)STAGE BIT   @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARSEC BIT(1), /*NEWLY ALLOCATED SECONDARY EXTENT'
*       ' BIT @G24LB04*/')SKIP;
*   ANS('        3 * BIT(4), /*THESE BITS ALWAYS ZEROES   @G24LB04*/')
*        SKIP;
*   ANS('      2  ARNMEXT FIXED(8) INIT(0),/* #EXTS  @Y30LB02*/')
*        SKIP;
*   ANS('      2  ARVOL CHAR(6) INIT('
*        QUOTE('000000000000')'X), /*VOLID  @Y30LB02*/') SKIP;
*   ANS('      2  ARASID CHAR(2) INIT('QUOTE('0000')
*        'X),  /*ASID FIELD  @Y30LB02*/') SKIP;
*   ANS('      2  ARECB PTR(31) INIT(0), /*ADDR OF ECB  @ZA28964*/')
*        SKIP;
*   ANS('      2  ARHOST CHAR(5) INIT('QUOTE('0000000000')
*        'X),  /*HOSTID  @Y30LB02*/') SKIP;
*   ANS('      2  * CHAR(1) INIT('QUOTE('00')
*        'X),  /*ZEROES  @Y30LB02*/') SKIP;
*   ANS('      2  ARCOMPC CHAR(2) INIT('QUOTE('0000')
*        'X),  /*ZERO COMP CODE FLD  @Y30LB02*/') SKIP;
*   ANS('      2  AREXT (16), /*EXTENTS  @Y30LB02*/') SKIP;
*   ANS('       3 * CHAR(4) INIT('
*       QUOTE('00000000')'X),') SKIP;
*   ANS('      2  ARNEDB PTR(31) INIT(0);  /*NEDB    @ZA28964*/')
*        SKIP;
*   ANS('DCL ARLEN FIXED(31) DEF(ARLL), /*BAL LABEL  @ZA28964*/')SKIP;
*   ANS('    ARFLAG BIT(8) DEF(ARFLG),/*BAL LABEL @ZA28964*/')SKIP;
*   ANS('    ARNMEXTS FIXED(8) DEF(ARNMEXT);  ' 
*       '/*BAL LABEL @ZA28964*/')SKIP;
*   GO TO FINISH;        /* RETURN TO CALLER                 @ZA28964*/
*/*                                                          @ZA28964*/
*  LUN:
*   ANS('/*******************************************'
*       '*************  @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC ACQUIRE/RELINQUISH MACRO    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*         VERSION - VS/2 REL 3    77/12/15 '
*       'LEVEL 02       @ZA28964*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '*************  @Y30LB02*/')SKIP;
*   ANS('DCL 1   'MF(2)'  'MF(3)',')SKIP;          /*@Y30LB02*/
*   ANS('      2  ARLL FIXED(31),  /*LENGTH=96 BYTES   @Y30LB02*/')
*        SKIP;
*   IF TYPE(1)='ACQ' THEN
*     ANS('      2  AROP FIXED(8),/*OPCODE=02  @Y30LB02*/')SKIP;
*   ELSE                               /*REL OPCODE          @Y30LB02*/
*     ANS('      2  AROP FIXED(8),/*OPCODE = 04  @Y30LB02*/')SKIP;
*   ANS('      2  * CHAR(1),  /*RESERVED AREA  @Y30LB02*/') SKIP;
*   ANS('      2  ARFLG BIT(8), /*FLAGS  @Y30LB02*/') SKIP;
*   ANS('        3 ARBDUBD BIT(1),   /* BIND/UNBIND BIT    @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARDRES BIT(1),/* DELAYED RESPONSE BIT   @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARINH BIT(1), /*INHIBIT (DE)STAGE BIT   @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARSEC BIT(1), /*NEWLY ALLOCATED SECONDARY EXTENT'
*        ' BIT @G24LB04*/')SKIP;
*   ANS('        3 * BIT(4), /*THESE BITS ALWAYS ZEROES   @G24LB04*/')
*        SKIP;
*   ANS('      2  ARNMEXT FIXED(8),/* #EXTS  @Y30LB02*/') SKIP;
*   ANS('      2  ARVOL CHAR(6), /*VOLID  @Y30LB02*/') SKIP;
*   ANS('      2  ARASID CHAR(2),/*ASID FIELD  @Y30LB02*/') SKIP;
*   ANS('      2  ARECB PTR(31), /*ADDR OF ECB  @ZA28964*/')
*        SKIP;
*   ANS('      2  ARHOST CHAR(5),  /*HOSTID  @Y30LB02*/') SKIP;
*   ANS('      2  * CHAR(1),  /*ZEROES  @Y30LB02*/') SKIP;
*   ANS('      2  ARCOMPC CHAR(2),  /*COMP CODE  @Y30LB02*/')SKIP;
*   ANS('      2  AREXT (16), /*EXTENTS  @Y30LB02*/')
*        SKIP;
*   ANS('        3 * CHAR(4), /*ELEMENT OF EXTS ARRAY   @Y30LB02*/')
*        SKIP;
*   ANS('      2  ARNEDB PTR(31);  /*ADDR OF NEDB   @ZA28964*/')
*        SKIP;
*   ANS('DCL ARLEN FIXED(31) DEF(ARLL), /*BAL LABEL @ZA28964*/')SKIP;
*   ANS('    ARFLAG BIT(8) DEF(ARFLG),/*BAL LABEL @ZA28964*/')SKIP;
*   ANS('    ARNMEXTS FIXED(8) DEF(ARNMEXT);  ' 
*       '/*BAL LABEL @ZA28964*/')SKIP;
*   GO TO FINISH;                      /*BRANCH TO END       @Y30LB02*/
*/*                                                          @ZA28964*/
*  STDSEC:
*   ANS('/*******************************************'
*       '************  @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC ACQUIRE/RELINQUISH MACRO    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*         VERSION - VS/2 REL 3    77/12/15 '
*       'LEVEL 02      @ZA28964*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************  @Y30LB02*/')SKIP;
*   ANS('RFY(ARR1)RSTD;/*RESTRICT R1  @Y30LB02*/')SKIP;
*   ANS('ARR1=ADDR(ARLL);'
*       '/*ARR1 SET TO ADDRESS OF LIST  @Y30LB02*/') SKIP;
*   IF TYPE(1)='ACQ' THEN              /* AN ACQ REQUEST?    @Y30LB02*/
*     ANS('AROP='QUOTE(AOPCODE)'X;/*ACQ OPCODE  @Y30LB02*/')SKIP;
*   ELSE                              /*RELINQUISH CODE      @Y30LB02*/
*     ANS('AROP='QUOTE(ROPCODE)'X;/*REL OPCODE  @Y30LB02*/')SKIP;
*   GO TO FCHECK;                    /*BRCH TO STANDF CODE   @Y30LB02*/
*/*                                                          @ZA28964*/
*  STDINT:
*   ANS('/*******************************************'
*       '************  @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC ACQUIRE/RELINQUISH MACRO    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*         VERSION - VS/2 REL 3    77/12/15 '
*       'LEVEL 02      @ZA28964*/')SKIP;
*   ANS('/*THIS IS THE STANDARD FORM - ACQ/REL MACRO '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************  @Y30LB02*/')SKIP;
*   ANS('DCL  1  ARLIST,/*ACQUIRE/RELINQUISH @Y30LB02*/') SKIP;
*   ANS('      2  ARLL FIXED(31) INIT(96), /* LENGTH     @Y30LB02*/')
*        SKIP;
*   IF TYPE(1)='ACQ' THEN              /*ACQUIRE REQUEST?    @Y30LB02*/
*     ANS('      2  AROP FIXED(8) INIT(2),/*OPCODE  @Y30LB02*/')SKIP;
*   ELSE                                                   /*@Y30LB02*/
*     ANS('      2  AROP FIXED(8) INIT(4),/*OPCODE  @Y30LB02*/')SKIP;
*   ANS('      2  * CHAR(1) INIT('QUOTE('00')
*        'X), /*RESERVED AREA  @Y30LB02*/') SKIP;
*   ANS('      2  ARFLG BIT(8) INIT('QUOTE('00000000')
*        'B), /*FLAGS  @Y30LB02*/') SKIP;
*   ANS('        3 ARBDUBD BIT(1),   /* BIND/UNBIND BIT  @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARDRES BIT(1),/* DELAYED RESPONSE BIT  @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARINH BIT(1), /*INHIBIT (DE)STAGE BIT  @Y30LB02*/')
*        SKIP;
*   ANS('        3 ARSEC BIT(1), /*NEWLY ALLOCATED SECONDARY EXTENT'
*        'BIT @G24LB04*/')SKIP;
*   ANS('        3 * BIT(4), /*THESE BITS ALWAYS ZEROES   @G24LB04*/')
*        SKIP;
*   ANS('      2  ARNMEXT FIXED(8) INIT(0), /* #EXTS  @Y30LB02*/')
*        SKIP;
*   ANS('      2  ARVOL CHAR(6) INIT('
*        QUOTE('000000000000')'X), /*VOLID  @Y30LB02*/') SKIP;
*   ANS('      2  ARASID CHAR(2) INIT('QUOTE('0000')
*        'X), /*ASID AREA  @Y30LB02*/') SKIP;
*   ANS('      2  ARECB PTR(31) INIT(0), /*ADDR OF ECB  @ZA28964*/')
*        SKIP;
*   ANS('      2  ARHOST CHAR(5) INIT('QUOTE('0000000000')
*        'X),  /*HOSTID  @Y30LB02*/') SKIP;
*   ANS('      2  * CHAR(1) INIT('QUOTE('00')
*        'X),  /*ZEROES  @Y30LB02*/') SKIP;
*   ANS('      2  ARCOMPC CHAR(2) INIT('QUOTE('0000')
*        'X),/*ZERO COMP CODE FLD  @Y30LB02*/') SKIP;
*   ANS('      2  AREXT(16) , /*EXTENTS  @Y30LB02*/') SKIP;
*   ANS('       3 * CHAR(4) INIT('
*      QUOTE('00000000')'X),') SKIP;
*   ANS('      2  ARNEDB PTR(31) INIT(0);/*ADDR OF NEDB  @ZA28964*/')
*        SKIP;
*   ANS('DCL ARLEN FIXED(31) DEF(ARLL), /*BAL LABEL @ZA28964*/')SKIP;
*   ANS('    ARFLAG BIT(8) DEF(ARFLG),/*BAL LABEL @ZA28964*/')SKIP;
*   ANS('    ARNMEXTS FIXED(8) DEF(ARNMEXT);  ' 
*       '/*BAL LABEL @ZA28964*/')SKIP;
*   ANS('RFY(ARR1)RSTD;/*RESTRICT R1  @Y30LB02*/')SKIP;
*   ANS('ARR1=ADDR(ARLL);/*ARR1 SET TO ADDRESS OF LIST  @Y30LB02*/')
*       SKIP;
*   GO TO FCHECK;                                          /*@ZA28964*/
*/*                                                          @ZA28964*/
*  EXEC:
*   ANS('/*******************************************'
*       '************  @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC ACQUIRE/RELINQUISH MACRO    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*         VERSION - VS/2 REL 3    77/12/15 '
*       'LEVEL 02      @ZA28964*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*DECLARES.  THE EXECUTE FORM WILL ONLY     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*ISSUE THE SVC.                            '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************  @Y30LB02*/')SKIP;
*   ANS('RFY(ARR1)RSTD;/*RESTRICT R1  @Y30LB02*/')SKIP;
*   ANS('ARR1=ADDR('MF(2)
*       '); /*SET ARR1 TO ADDR OF LIST  @Y30LB02*/')  SKIP;
*   GO TO QUIT;                                            /*@ZA28964*/
*/*                                                          @ZA28964*/
*FINISH:RETURN CODE(RETCODE);/*RETURN CODE                   @Y30LB02*/
*        %END;                                             /*@Y30LB02*/
./ ADD NAME=ICBASDAS
* %/*  START OF SPECIFICATIONS****                             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBASDAS                                  @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = ASSOCIATE-DISASSOCIATE MACRO         @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION=THIS MACRO BUILDS THE REQUEST BLOCK            @Y30LB02
.*     NECESSARY TO ASSOCIATE/DISASSOCIATE CPU'S IN AN         @Y30LB02
.*     MP ENVIRONMENT                                          @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB AND AS/DAS                         @Y30LB02
.*                                                             @Y30LB02
.*02     REGISTER-CONVENTIONS = FOLLOW NORMAL USE OF           @Y30LB02
.*                              REGISTERS BY MACROS:           @Y30LB02
.*                              R0,R1,R14, AND R15.            @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS2 AND ASSEMBLER                        @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBASDAS                                @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE = SVC 126                                     @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT                                                    @Y30LB02
.*                                                             @Y30LB02
.*   THE ASSOCIATE-DISASSOCIATE MACRO IS ISSUED TO             @Y30LB02
.*   CHANGE THE RELATIONSHIP BETWEEN CPU'S(HOSTS) OF           @Y30LB02
.*   TIGHTLY COUPLED MP SYSTEMS  AND  NETWORKS.                @Y30LB02
.*                                                             @Y30LB02
.*   THE ASSOCIATE-DISASSOCIATE MACRO WILL                     @Y30LB02
.*   PERFORM THE FOLLOWING:                                    @Y30LB02
.*                                                             @Y30LB02
.*        (1)  ASSOCIATE CPU AND ITS PREDEFINED ASSOCIATE      @Y30LB02
.*             CPU AS TIGHTLY COUPLED MP  CPU'S.               @Y30LB02
.*                                                             @Y30LB02
.*        (2)  DISASSOCIATE CPU1 AND ITS PREDEFINED ASSOCIATE  @Y30LB02
.*             CPU.                                            @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*        (3)  DEINITIALIZE THE INTERFACE FOR THE              @Y30LB02
.*             ASSOCIATED CPU                                  @Y30LB02
.*                                                             @Y30LB02
.*        (4)  DEMOUNT ALL VOLUMES FOR BOTH CPUS               @Y30LB02
.*                                                             @Y30LB02
.*        MACRO SYNTAX:                                        @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBASDAS MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBASDAS HOSTID=ADDR/(R)       NONE                          @Y30LB02
.*         FLAGS=ADDR/(R)                                      @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBASDAS MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                              HOSTID=ADDR/(R)                @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTION.                           @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS  - THE 2 BYTE FIELD WHICH INDICATES THE FUNCTION    @Y30LB02
.*            TO BE PERFORMED.  THE ATTRIBUTES FOLLOW:         @Y30LB02
.*                                                             @Y30LB02
.*       ASSOCIATE CPU                                         @Y30LB02
.*                                                             @Y30LB02
.*         IF THIS ATTRIBUTE IS SPECIFIED, CPU (SPECIFIED      @Y30LB02
.*         BY HOSTID) AND ITS PREDEFINED ASSOCIATE CPU WILL    @Y30LB02
.*         BE ASSOCIATED AS TIGHTLY COUPLED MP HOSTS.          @Y30LB02
.*                                                             @Y30LB02
.*       DISASSOCIATE CPU                                      @Y30LB02
.*                                                             @Y30LB02
.*         IF THIS ATTRIBUTE IS SPECIFIED, CPU (SPECIFIED      @Y30LB02
.*         BY HOSTID) AND ITS PREDEFINED ASSOCIATED CPU        @Y30LB02
.*         WILL NO LONGER BE ASSOCIATED AS TIGHTLY COUPLED     @Y30LB02
.*         MP HOSTS.                                           @Y30LB02
.*                                                             @Y30LB02
.*        DEINITIALIZE INTERFACE                               @Y30LB02
.*                                                             @Y30LB02
.*         THIS BIT HAS THE SAME FUNCTION AS ATTRIBUTE         @Y30LB02
.*         BIT 1 PLUS DEINITIALIZE THE INTERFACE FOR THE       @Y30LB02
.*         OTHER CPU SPECIFIED IN THE CPU ASSOCIATION          @Y30LB02
.*         TABLE.  IF THE CPU'S ARE ALREADY DISASSOCIATED      @Y30LB02
.*         THE ORDER IS UNIT CHECKED.                          @Y30LB02
.*                                                             @Y30LB02
.*        DEMOUNT                                              @Y30LB02
.*                                                             @Y30LB02
.*         THIS ATTRIBUTE HAS THE SAME FUNCTION AS             @Y30LB02
.*         ATTRIBUTE BIT 0 EXCEPT ALL VOLUMES FOR BOTH         @Y30LB02
.*         CPU'S ARE DEMOUNTED.  THE FUNCTION IS DONE          @Y30LB02
.*         EVEN THOUGH THE CPU'S ARE ALREADY ASSOCIATED.       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*       THE FORMAT OF THE FLAGS FIELD IS                      @Y30LB02
.*                                                             @Y30LB02
.*      ____________________________________________________   @Y30LB02
.*       X  X  0  0  0  X  X BITS 7-15 MUST BE ZERO   @Y30LB02
.*      -----------------------------------------------------  @Y30LB02
.*      BIT 0------------'1'B          ASSOCIATE CPUS          @Y30LB02
.*                       '0'B          DON'T ASSOCIATE         @Y30LB02
.*                                                             @Y30LB02
.*      BIT 1------------'1'B          DISASSOCIATE CPUS       @Y30LB02
.*                       '0'B          DON'T DISASSOCIATE      @Y30LB02
.*                                                             @Y30LB02
.*      BITS 2-4 --------              RESERVED,MUST BE ZERO @Y30LB02
.*                                                             @Y30LB02
.*      BIT 5------------'1'B          DEINITIALIZE INTERFACE  @Y30LB02
.*                       '0'B          DON'T DENITIALIZE       @Y30LB02
.*                                                             @Y30LB02
.*      BIT 6------------'1'B          DEMOUNT                 @Y30LB02
.*                       '0'B          DON'T DEMOUNT           @Y30LB02
.*                                                             @Y30LB02
.*      BITS 7-15-------               UNUSED,MUST BE ZERO   @Y30LB02
.*                                                             @Y30LB02
.*      HOSTID - HOSTID IDENTIFIER:  THE 5 BYTE AREA WHICH     @Y30LB02
.*               CONTAINS THE MANUFACTURER'S CPU IDENTI-       @Y30LB02
.*               FICATION OF CPU #1 OR CPU #2 OF A MP          @Y30LB02
.*               OR NETWORK ENVIRONMENT.                       @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM      @Y30LB02
.*       THE REQUESTED FUNCTION                                @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*     ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*               SPECIFIED IN MF(2)                            @Y30LB02
.*     ICB604I:  WARNING ONLY THE MF  PARAMETER  IS            @Y30LB02
.*               VALID FOR LIST FORM                           @Y30LB02
.*     ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD          @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB608I:  HOSTID MUST BE SPECIFIED FOR STANDARD         @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME IF            @Y30LB02
.*               EXEC MACRO FORM REQUESTED                     @Y30LB02
.*     ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST BE       @Y30LB02
.*                L,E, OR NULL                                 @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = IHBINNRA                                  @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 & Y30LB02                  @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO
&SYMBOL  ICBASDAS &MF=,&FLAGS=,&HOSTID=
         LCLB &ERSW               ERROR SWITCH                 @Y30LB02
         LCLC &ASDAS              ASSOC MACRO INSTR INDX       @Y30LB02
&ASDAS   SETC 'ASD'.'&SYSNDX'     ASSIGN CHARACTER VALUE       @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
         AIF  ('&MF(1)' NE 'L').EFORM       LIST FORM?         @Y30LB02
         AIF  ('&FLAGS' EQ '' AND '&HOSTID' EQ '').LISTOK      @AS17746
         MNOTE 4,'  ICB604I - WARNING-ONLY THE MF  '           @Y30LB02
         MNOTE 4,'  PARAMETER IS VALID FOR LIST FORM '         @Y30LB02
.*                                                             @Y30LB02
.LISTOK  ANOP                                                  @Y30LB02
*  MACMEAN  ASSOCIATE MACRO--INITIALIZED LIST FORM             @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         AIF  ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?    @Y30LB02
&SYMBOL  DS   0F                                               @Y30LB02
ASDALEN  DC   F'16'               LENGTH OF ASSOC REQ BLOCK    @Y30LB02
ASDAOPC  DC   XL1'2C'             ASSOCIATE  FUNCTION OPCODE   @Y30LB02
ASDA001  DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
ASDAFLG  DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
ASDACPU  DC   CL5'00000'          5-BYTE HOSTID AREA           @Y30LB02
ASDA002  DC   XL3'000000'         3-BYTE RESERVED AREA         @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  ASSOCIATE MACRO--UNINITIALIZED LIST FORM           @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBASDAS DSECT                                                 @Y30LB02
ASDALEN  DS   F                   LENGTH OF ASSOC 16 DEC       @Y30LB02
ASDAOPC  DS   XL1                 ASSOCIATE OPCODE 2C HEX      @Y30LB02
ASDA001  DS   XL1                 1-BYTE RESERVED AREA-ZERO    @Y30LB02
ASDAFLG  DS   XL2                 2-BYTE FLAGS AREA            @Y30LB02
ASDACPU  DS   CL5                 5-BYTE HOSTID AREA           @Y30LB02
ASDA002  DS   XL3                 3-BYTE RESERVED AREA         @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING PROCESSING IS ACCOMPLISHED FOR THE      @Y30LB02
.*       EXECUTABLE MACRO FORM                                 @Y30LB02
.*                                                             @Y30LB02
.EFORM   AIF  ('&MF(1)' NE 'E').SFORM       EXECUTE FORM?      @Y30LB02
         AIF  ('&MF(2)' EQ '').EXFAIL       MF(2) NULL?        @Y30LB02
*  MACMEAN  ASSOCIATE MACRO--EXECUTE FORM                      @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)          LOAD REG ONE USING           @Y30LB02
.*                                IHBINNRA MACRO               @Y30LB02
         LA   0,16                LEN OF ASSOC REQBLK          @Y30LB02
         ST   0,0(1)              STORE LEN IN REQBLK          @Y30LB02
         MVI  4(1),X'2C'          ASSOC OPCODE IN BLK          @Y30LB02
         AGO  .CKSW1                                           @Y30LB02
.*                                                             @Y30LB02
.EXFAIL  ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB612I - MF(2) MUST CONTAIN REQ BLK '    @Y30LB02
         MNOTE 12,'  NAME IF EXEC MACRO FORM IS REQUESTED '    @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
.*                                                             @Y30LB02
.CKSW1   AIF  (&ERSW).FINISH      IF ERROR-END PROCESSING      @Y30LB02
         AGO  .COMMON                                          @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF THE STANDARD FORM MACRO                 @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF  ('&MF(1)' NE '').BADFORM      STANDARD FORM?     @Y30LB02
         AIF  ('&FLAGS' NE '').CKHOST       FLAGS SPECIFIED?   @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO  .CKSW2                                           @Y30LB02
.CKHOST  AIF  ('&HOSTID' NE '').CKSW2    HOSTID SPECIFIED?     @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB608I - HOSTID MUST BE SPECIFIED '      @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO  .CKSW2                                           @Y30LB02
.*                                                             @Y30LB02
.BADFORM ANOP                                                  @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL.'        @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS TO DETERMINE IF THE ERROR   @Y30LB02
.*       SWITCH IS ON. IF YES, PROCESSING IS TERMINATED, OTHER @Y30LB02
.*       WISE STANDARD FORM MACRO PROCESSING WILL BE CON-      @Y30LB02
.*       TINUED                                                @Y30LB02
.*                                                             @Y30LB02
.CKSW2   AIF  (&ERSW).FINISH      IF YES-END PROCESSING        @Y30LB02
*  MACMEAN ASSOCIATE MACRO--STANDARD FORM                      @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL  1,&ASDAS            SET R1 ADDR OF REQBLK        @Y30LB02
ASDALEN  DC   A(&ASDAS-*)         LENGTH OF REQUEST BLOCK      @Y30LB02
ASDAOPC  DC   XL1'2C'             ASSOCIATE  FUNCTION OPCODE   @Y30LB02
ASDA001  DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
ASDAFLG  DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
ASDACPU  DC   CL5'00000'          5-BYTE HOSTID AREA           @Y30LB02
ASDA002  DC   XL3'000000'         3-BYTE RESERVED AREA         @Y30LB02
&ASDAS   EQU  *                                                @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR VALID PARAMETERS IF     @Y30LB02
.*       STANDARD OR EXECUTE FORM MACRO IS SPECIFIED.          @Y30LB02
.*       IF PARAMETERS ARE SPECIFIED, THEY WILL BE STORED      @Y30LB02
.*       IN THE REQUEST BLOCK.                                 @Y30LB02
.*                                                             @Y30LB02
.COMMON  AIF  ('&FLAGS' EQ '').HOSTD       FLAGS SPECIFIED?    @Y30LB02
         AIF  ('&FLAGS'(1,1) EQ '(').FLREG  FLAGS IN REG-FORM? @Y30LB02
         MVC  6(2,1),&FLAGS       PUT FLAGS IN PARM LIST       @Y30LB02
         AGO  .HOSTD              BRANCH TO CK HOSTID          @Y30LB02
.*                                                             @Y30LB02
.FLREG   ANOP                                                  @Y30LB02
         MVC  6(2,1),0(&FLAGS(1)) REG-FORM PLACE FLAGS IN BLK  @Y30LB02
.*                                                             @Y30LB02
.HOSTD   AIF  ('&HOSTID' EQ '').INVOKE      HOSTID SPECIFIED?  @Y30LB02
         AIF  ('&HOSTID'(1,1) EQ '(').HREG  REGISTER FORM?     @Y30LB02
         MVC  8(5,1),&HOSTID      ADDRFORM-PUT HOSTID IN BLK   @Y30LB02
         AGO  .INVOKE                                          @Y30LB02
.*                                                             @Y30LB02
.HREG    ANOP                                                  @Y30LB02
         MVC  8(5,1),0(&HOSTID(1)) REGFORM-PUT HOSTID IN BLK   @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC  126                 INVOKE THE SVC               @Y30LB02
.FINISH  MEND                                                  @Y30LB02
**/
*   ICBASDAS: MACRO KEYS(MF,FLAGS,HOSTID);                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                     EXTERNAL DECLARES                    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      ASDATEST IS USED TO DETERMINE WHETHER THE STANDARD  @Y30LB02*/
*/*      FORM MACRO HAS BEEN INVOKED MORE THAN ONCE BY THE   @Y30LB02*/
*/*      SAME CALLER.                                        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      ASTESTR1 WILL BE USED TO DETERMINE IF IT IS NECES-  @Y30LB02*/
*/*      SARY TO DECLARE R1 OR WHETHER IT IS ALREADY DCLD    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  ASTESTR1  FIXED  EXT;    /*REG1 DECLARE COUNTER     @Y30LB02*/
*   DCL  ASDATEST  FIXED  EXT;    /*STANDARD INVOC COUNTER   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      INTERNAL DECLARES                                   @Y30LB02*/
*   DCL  ASDOP   CHAR;       /*DEFINE ASSOC OPCODE           @Y30LB02*/
*   DCL  ASDLEN  CHAR;       /*DECLARE LENGTH OF ORDER       @Y30LB02*/
*   DCL  ERSW     FIXED;     /*DECLARE ERROR COND SWITCH     @Y30LB02*/
*   DCL  RETCODE  FIXED;     /*DECLARE RETURN CODE AREA      @Y30LB02*/
*   DCL  CTR      FIXED;     /*DECLARE CTR FOR LIST FORM     @Y30LB02*/
*        ERSW=0;             /*INITIALIZE ERROR SWITCH       @Y30LB02*/
*        RETCODE=0;          /*INITIALIZE RETURN CODE        @Y30LB02*/
*        ASDLEN='10';        /*INITIALIZE LENGTH             @Y30LB02*/
*        ASDOP='2C';         /*INITIALIZE OPCODE             @Y30LB02*/
*        CTR=0;              /*INITIALIZE PARM CTR           @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      CHECK FOR VALID MACRO FORM--E INDICATES EXECUTE     @Y30LB02*/
*/*      FORM, L INDICATES LIST FORM AND IF THE MF PARA-     @Y30LB02*/
*/*      METER IS NULL THE STANDARD FORM MACRO IS INVOKED    @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        IF ASTESTR1=0 THEN   /*REGISTER ONE DECLARED?       @Y30LB02*/
*             DO;             /*NO,DECLARE REGISTER ONE      @Y30LB02*/
*                  ANS('DCL ASDAR1 REG(1) PTR;/*PTR'
*                  ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*                  ASTESTR1=ASTESTR1+1; /*INCREM REG CTR     @Y30LB02*/
*             END;           /*                              @Y30LB02*/
*   IF MF(1) ^= 'L' THEN     /*IS IT LIST FORM?              @Y30LB02*/
*        GO TO EFORM;        /*NO, CK FOR EXEC               @Y30LB02*/
*   IF MF(2) = '' THEN       /*LIST NAME SPECIFIED?          @Y30LB02*/
*        DO;                 /*NO, DO ERROR PROCESSING       @Y30LB02*/
*             ERSW=1;        /*SET ERROR SWITCH TO ONE       @Y30LB02*/
*             RETCODE=12;    /*SET RETURN CODE TO 12         @Y30LB02*/
*             ANS MSG('  ICB602I - A NAME FOR THE REQUEST BLOCK '
*             'MUST BE SPECIFIED IN MF(2) ')SKIP;          /*@Y30LB02*/
*             GO TO FINISH;  /*BRANCH TO END PROCESSING      @Y30LB02*/
*        END;                /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS ^= '' THEN      /*IS THE FLAGS AREA NULL        @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF HOSTID ^= '' THEN     /*IS THE HOSTID AREA NULL       @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF CTR > 0 THEN          /*INCREMENT CTR > ZERO?         @Y30LB02*/
*        DO;                 /*DO ERROR PROCESSING           @Y30LB02*/
*           RETCODE=4;     /*SET RETRUN CODE TO 4            @Y30LB02*/
*           ANS MSG('  ICB604I - WARNING-ONLY THE MF PARAMETER'
*             ' IS VALID FOR LIST FORM')SKIP;              /*@Y30LB02*/
*        END;                /*                              @Y30LB02*/
*   IF MF(3) ^= '' THEN      /*PLS ATTRIBUTE SPECIFIED?      @Y30LB02*/
*        GO TO ATTRLST;      /*BRANCH TO UNINITL LIST FORM   @Y30LB02*/
*/*                                                          @Y30LB02*/
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('/*     MACMEAN  MSSC ASSOCIATE MACRO        '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)'  STATIC LOCAL,'
*             ' /*ASSOCIATE REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  ASDALEN  FIXED(31)INIT('QUOTE
*             ('10')'X),/*LENG OF ASSOC REQ BLK @Y30LB02*/')SKIP;
*             ANS('    2  ASDAOPC CHAR(1)INIT('QUOTE('2C')
*             'X),/*ASSOCIATE OPCODE @Y30LB02*/')SKIP;
*             ANS('    2  ASDA001 CHAR(1)INIT('QUOTE('00')
*             'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  ASDAFLG BIT(16)INIT('QUOTE
*             ('0000000000000000')'B),/*TWO BYTE ATTRI'
*             'BUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  ASASSOC BIT(1),/*ASSOCIATE'
*             ' ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  ASDASSOC BIT(1),/*DISASSOCIATE'
*             ' ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  *    BIT(3),/*THREE BITS'
*             ' RESERVE @Y30LB02*/')SKIP;
*             ANS('       3  ASDEINT BIT(1),/*DISASSOC'
*             ' AND DEINITIALIZE THE INTERFACE FOR THE'
*             ' OTHER CPU SPECIFIED IN THE CPU ASSOCIATE'
*             ' TABLE @Y30LB02*/')SKIP;
*             ANS('       3  ASDMNT BIT(1),/*ASSOC'
*             ' CPUS AND DEMOUNT ALL VOLUMES FOR BOTH'
*             ' CPUS @Y30LB02*/')SKIP;
*             ANS('       3  *      BIT(9),/*RESERVED AND'
*             ' MUST BE ZERO @Y30LB02*/')SKIP;
*             ANS('    2  ASDACPU  CHAR(5) INIT('QUOTE
*             ('0000000000')'X),/*HOSTID @Y30LB02*/')SKIP;
*             ANS('    2  ASDA002  CHAR(3) INIT('QUOTE
*             ('000000')'X);/*RESERVED AREA @Y30LB02*/')SKIP;
*             GO TO FINISH;                                /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('/*      MACMEAN  MSSC ASSOCIATE MACRO       '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)' 'MF(3)','
*             ' /*ASSOCIATE REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  ASDALEN  FIXED(31),/*LENG'
*             'TH OF ASSOCIATE REQ BLOCK=10 HEX @Y30LB02*/')SKIP;
*             ANS('    2  ASDAOPC CHAR(1),'
*             '/*ASSOCIATE OPCODE=2C HEX @Y30LB02*/')SKIP;
*             ANS('    2  ASDA001 CHAR(1),'
*             ' /*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  ASDAFLG BIT(16),'
*             '/*TWO BYTE ATTRIBUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  ASASSOC BIT(1),/*ASSOCIATE'
*             ' ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  ASDASSOC BIT(1),/*DISASSOCIATE'
*             ' ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  *    BIT(3),/*THREE BITS'
*             ' RESERVE @Y30LB02*/')SKIP;
*             ANS('       3  ASDEINT BIT(1),/*DISASSOC'
*             ' AND DEINITIALIZE THE INTERFACE FOR THE'
*             ' OTHER CPU SPECIFIED IN THE CPU ASSOCIATE'
*             ' TABLE @Y30LB02*/')SKIP;
*             ANS('       3  ASDMNT BIT(1),/*ASSOC'
*             ' CPUS AND DEMOUNT ALL VOLUMES FOR BOTH'
*             ' CPUS @Y30LB02*/')SKIP;
*             ANS('       3  *      BIT(9),/*RESERVED AND'
*             ' MUST BE ZERO @Y30LB02*/')SKIP;
*             ANS('    2  ASDACPU  CHAR(5),/*HOSTID @Y30LB02*/')SKIP;
*             ANS('    2  ASDA002  CHAR(3);/*RESERVED'
*             ' AREA @Y30LB02*/')SKIP;
*             GO TO FINISH;                                /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      PROCESSING THE EXECUTE MACRO FORM                   @Y30LB02*/
*/*                                                          @Y30LB02*/
*EFORM:
*   IF MF(1) ^= 'E' THEN     /*EXCUTE FORM                   @Y30LB02*/
*        GO TO SFORM;        /*NO, CK FOR STANDARD           @Y30LB02*/
*   IF MF(2) = '' THEN       /*YES,LIST NAME SPECD?          @Y30LB02*/
*        DO;                 /*DO ERROR PROCESSING           @Y30LB02*/
*             ERSW=1;        /*SET ERROR SWITCH TO ONE       @Y30LB02*/
*             RETCODE=12;    /*SET ERROR RETURN CODE TO 12   @Y30LB02*/
*             ANS MSG('  ICB612I - MF(2) MUST CONTAIN'
*                ' REQ BLK NAME IF EXEC '
*                ' MACRO FORM REQUESTED')SKIP;             /*@Y30LB02*/
*             GO TO CKSW;    /*BRCH TO CK ERROR CONDITION    @Y30LB02*/
*        END;                /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                     /*EXECUTE FORM PROCESSING       @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC ASSOCIATE MACRO        '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*            '              @Y30LB02*/')SKIP;
*        ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('RFY(ASDAR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ASDAR1=ADDR('MF(2)');/*R1 POINTER TO'
*        ' REQUEST BLOCK @Y30LB02*/')SKIP;
*   IF MF(3) = 'COMPLETE' THEN   /*COMPLETE SPECIFIED        @Y30LB02*/
*     DO;                        /*ZERO REQ BLOCK            @Y30LB02*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'    /*@Y30LB02*/
*        '/*ZERO BLOCK @Y30LB02*/')SKIP;
*     END;                       /*                          @Y30LB02*/
*        ANS('ASDALEN= 'QUOTE(ASDLEN)'X;/* '
*        'LENGTH OF ASSOC REQUEST @Y30LB02*/')SKIP;
*        ANS('ASDAOPC= 'QUOTE(ASDOP)'X;/*ASSOCIATE'
*        ' OPCODE @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*CKSW:
*   IF ERSW=1 THEN             /*ERROR SWITCH EQ ONE?        @Y30LB02*/
*        GO TO FINISH;         /*YES,BRANCH TO END           @Y30LB02*/
*   ELSE                       /*NO,CK PARAMETERS            @Y30LB02*/
*        GO TO COMPROC;        /*BRANCH TO CK PARAMETERS     @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN        /*STANDARD FORM               @Y30LB02*/
*     DO;                      /*NO,DO ERROR PROCESSING      @Y30LB02*/
*        ERSW=1;               /*SET ERROR SWITCH TO ONE     @Y30LB02*/
*        RETCODE=12;           /*SET RETURN CODE TO 12       @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER '
*                'SPECIFIED, MUST BE L, E, OR NULL')SKIP;  /*@Y30LB02*/
*        GO TO CKSW2;          /*BRANCH TO CK ERROR SWITCH   @Y30LB02*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS = '' THEN         /*FLAGS SPECIFIED?            @Y30LB02*/
*     DO;                      /*NO,DO ERROR PROCESSING      @Y30LB02*/
*        ERSW=1;               /*SET ERROR SWITCH TO 1       @Y30LB02*/
*        RETCODE=12;           /*SET RETURN CODE TO 12       @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED  '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO CKSW2;          /*BRANCH TO CK SWITCH         @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*   IF HOSTID = '' THEN        /*HOSTID SPECIFIED?           @Y30LB02*/
*     DO;                      /*DO ERROR PROCESSING         @Y30LB02*/
*        ERSW=1;               /*SET ERROR CODE TO ONE       @Y30LB02*/
*        RETCODE=12;           /*SET RETURN CODE TO 12       @Y30LB02*/
*        ANS MSG('  ICB608I - HOSTID MUST BE SPECIFIED  '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*CKSW2:
*/*                                                          @Y30LB02*/
*   IF ERSW = 1 THEN           /*ERROR SWITCH EQUAL 1?       @Y30LB02*/
*        GO TO FINISH;         /*YES,BRANCH TO END           @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF ASDATEST = 1 THEN       /*FIRST STANDARD FORM?        @Y30LB02*/
*     DO;                      /*NO,PUT OUT NO DCLS          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC ASSOCIATE MACRO        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(ASDAR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ASDAR1=ADDR(ASDALEN);/*R1 PTR TO BLK @Y30LB02*/')SKIP;
*        ANS('ASDALEN= 'QUOTE(ASDLEN)'X;/* '
*        'LENGTH OF ASSOC REQUEST @Y30LB02*/')SKIP;
*        ANS('ASDAOPC='QUOTE(ASDOP)'X;/*ASSOC'
*        ' OPCODE @Y30LB02*/')SKIP;
*        GO TO COMPROC;      /*BRANCH TO CK PARAMETERS       @Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                     /*PUT OUT THE DECLARES          @Y30LB02*/
*     DO;                    /*STANDARD FIRST TIME           @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC ASSOCIATE MACRO         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE STANDARD FORM  MACRO          '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(ASDAR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ASDAR1=ADDR(ASDALEN);/*R1 PTR  '
*        'TO REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('DCL 1 ASDALST  STATIC LOCAL,'
*        ' /*ASSOCIATE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  ASDALEN  FIXED(31)INIT('QUOTE
*        ('10')'X),/*LENG OF ASSOC REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  ASDAOPC CHAR(1)INIT('QUOTE('2C')
*        'X),/*ASSOCIATE OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  *      CHAR(1)INIT('QUOTE('00')
*        'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  ASDAFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B),/*TWO BYTE ATTRI'
*        'BUTE AREA @Y30LB02*/')SKIP;
*        ANS('       3  ASASSOC BIT(1),/*ASSOCIATE'
*        ' ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  ASDASSOC BIT(1),/*DISASSOCIATE'
*        ' ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  *     BIT(1),/*THREE BITS'
*        ' RESERVE @Y30LB02*/')SKIP;
*        ANS('       3  ASDEINT BIT(1),/*DISASSOC'
*        ' AND DEINITIALIZE THE INTERFACE FOR THE'
*        ' OTHER CPU SPECIFIED IN THE CPU ASSOCIATE'
*        ' TABLE @Y30LB02*/')SKIP;
*        ANS('       3  ASDMNT BIT(1),/*ASSOC'
*        ' CPUS AND DEMOUNT ALL VOLUMES FOR BOTH'
*        ' CPUS @Y30LB02*/')SKIP;
*        ANS('       3  *      BIT(9),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('    2  ASDACPU  CHAR(5) INIT('QUOTE
*        ('0000000000')'X),/*HOSTID @Y30LB02*/')SKIP;
*        ANS('    2  ASDA002  CHAR(3) INIT('QUOTE
*        ('000000')'X);/*RESERVED AREA @Y30LB02*/')SKIP;
*        ASDATEST=ASDATEST+1; /*INCREM STD FORM CTR          @Y30LB02*/
*        GO TO COMPROC;       /*BRANCH,CK PARAMETERS         @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      COMMON PROCESSING FOR EXECUTE AND STANDARD FORMS    @Y30LB02*/
*/*      THE FOLLOWING CODE WILL CHECK TO DETERMINE WHICH    @Y30LB02*/
*/*      PARAMETERS ARE SPECIFIED AND PLACE THE VALUE IN     @Y30LB02*/
*/*      THE REQUEST BLOCK                                   @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*COMPROC:
*   IF FLAGS ^= '' THEN      /*FLAGS SPECIFIED?              @Y30LB02*/
*        ANS('ASDAFLG= 'FLAGS';/*VALUE OF FLAGS '
*        'PARAMETER @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF HOSTID ^= '' THEN    /*HOSTID SPECIFIED?              @Y30LB02*/
*        ANS('ASDACPU= 'HOSTID';/*HOSTID @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      THIS SECTION OF CODE WILL INVOKE SVC 126 AND        @Y30LB02*/
*/*      SET THE PROPER RETURN CODE, THEN END PROCESSING     @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        ANS('SVC (126);/*INVOKE THE SVC  @Y30LB02*/')SKIP;
*        ANS('RFY  ASDAR1 UNRSTD;/*UNRESTRICT REG 1 @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:
*        RETURN CODE(RETCODE);                             /*@Y30LB02*/
*        %END;                                             /*@Y30LB02*/
./ ADD NAME=ICBCOTB
* %/* START OF SPECIFICATIONS  ***                             @Y30LB02
.*                                                             @Y30LB02
.*01  MODULE-NAME = ICBCOTB                                    @Y30LB02
.*                                                             @Y30LB02
.*01  DESCRIPTIVE-NAME = COPY TABLES                           @Y30LB02
.*                                                             @Y30LB02
.*01  COPYRIGHT = NONE                                         @Y30LB02
.*                                                             @Y30LB02
.*01  STATUS = OS/VS1 RELEASE 4.0,                             @Y30LB02
.*             OS/VS2 RELEASE 3.0                              @Y30LB02
.*                                                             @Y30LB02
.*01  FUNCTION = BUILDS A REQUEST BLOCK FOR A COPY             @Y30LB02
.*               TABLES REQUEST.  THE MACRO IS A               @Y30LB02
.*               COMMUNICATION LINK BETWEEN THE CALLER         @Y30LB02
.*               AND THE MSSC SVC MODULE.                      @Y30LB02
.*                                                             @Y30LB02
.*01  NOTES = ICBCOTB IS A BILINGUAL MACRO.                    @Y30LB02
.*                                                             @Y30LB02
.*02    DEPENDENCIES = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*02    RESTRICTIONS = THE PREFIXES ICB AND COTB SHOULD        @Y30LB02
.*                     BE AVOIDED WHEN INVOKING THIS MACRO.    @Y30LB02
.*                                                             @Y30LB02
.*02    REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF           @Y30LB02
.*                             REGISTERS BY MACROS:            @Y30LB02
.*                             R0,R1,R14, AND R15.             @Y30LB02
.*                                                             @Y30LB02
.*01  MODULE-TYPE = MACRO                                      @Y30LB02
.*                                                             @Y30LB02
.*02    PROCESSOR = PLS2 AND ASSEM                             @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT = PARAMETERS SPECIFIED ON THE PLS/BAL MACRO        @Y30LB02
.*            INVOCATION.                                      @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   THE COPY TABLES REQUEST IS ISSUED BY A HOST CALLER        @Y30LB02
.*   WHEN HE DESIRES TO HAVE THE MSC'S TABLES ON DASD          @Y30LB02
.*   MOVED TO THE VIRTUAL VOLUME SPECIFIED BY VOLID            @Y30LB02
.*   SPECIFIED BY VOLID AT THE LOCATION GIVEN                  @Y30LB02
.*   BY EXTS.                                                  @Y30LB02
.*                                                             @Y30LB02
.*   MACRO SYNTAX                                              @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBCOTB  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBCOTB  VOLID=ADDR/(R)              NONE                    @Y30LB02
.*         ECB=ADDR/(R)                                        @Y30LB02
.*         EXTS=ADDR/(R)                                       @Y30LB02
.*         FLAGS=ADDR/(R)                                      @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBCOTB  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              VOLID=ADDR/(R)                 @Y30LB02
.*                              ECB=ADDR/(R)                   @Y30LB02
.*                              EXTS=ADDR/(R)                  @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTIONS.                          @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS--FLAGS:  THE 2 BYTE FIELD WHICH INDICATES THE       @Y30LB02
.*   TABLE TO BE COPIED.  THE FORMAT OF THE 'FLAGS' FIELD      @Y30LB02
.*   IS SHOWN BELOW:                                           @Y30LB02
.*                                                             @Y30LB02
.*     BITS 0-7                                                @Y30LB02
.*     ____________________________                            @Y30LB02
.*      X X X  X 0 0 0  0                             @Y30LB02
.*     ----------------------------                            @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*  BIT SPECIFICATIONS FOR BITS 0-7                            @Y30LB02
.*                                                             @Y30LB02
.*  BITS 0-3------------MAY BE SET TO 8                        @Y30LB02
.*                                                             @Y30LB02
.*  BITS 4-7------------UNUSED AND MUST BE SET TO ZERO         @Y30LB02
.*                                                             @Y30LB02
.*   IF BITS 0-3 OF THE FLAGS FIELD IS SET TO EIGHT, THE       @Y30LB02
.*   FOLLOWING TABLES WILL BE COPIED                           @Y30LB02
.*                                                             @Y30LB02
.*   TABLE ID  TABLE                                           @Y30LB02
.*                                                             @Y30LB02
.*       1     STAGING DRIVE                                   @Y30LB02
.*       2     MOUNTED VOLUME                                  @Y30LB02
.*       3     SCRATCH CARTRIDGE                               @Y30LB02
.*       4     VOLUME INVENTORY                                @Y30LB02
.*       5     TRANSIENT VOLUME                                @Y30LB02
.*       6     VDA/VOLID CROSS REFERENCE                       @Y30LB02
.*       7     CONFIGURATION                                   @Y30LB02
.*       9     CELL MAP                                        @Y30LB02
.*       A     VDA                                             @Y30LB02
.*       B     JOURNAL                                         @Y30LB02
.*       C     SCHEDULE QUEUE                                  @Y30LB02
.*       D     DIAGNOSTIC,EC AND OVERLAY                       @Y30LB02
.*                                                             @Y30LB02
.*   BITS 8-15 OF THE FLAGS FIELD WILL BE USED TO COPY THE     @Y30LB02
.*   TRACE TABLE IN ITS ENTIRETY OR SPECIFIC VARIATIONS        @Y30LB02
.*   THEREOF.                                                  @Y30LB02
.*                                                             @Y30LB02
.*    BITS 8-15                                                @Y30LB02
.*     ____________________________                            @Y30LB02
.*      X X X  X 0 0 0  0                             @Y30LB02
.*     ____________________________                            @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   *BIT 8--------------'1'B  COPY TRACE X                    @Y30LB02
.*                       '0'B  NO FUNCTION REQUESTED           @Y30LB02
.*                                                             @Y30LB02
.*   *BIT 9--------------'1'B  COPY TRACE Y                    @Y30LB02
.*                       '0'B  NO FUNCTION REQUESTED           @Y30LB02
.*                                                             @Y30LB02
.*     *NOTE:  IF BOTH BITS(8 AND 9) ARE SET TO 1,             @Y30LB02
.*         THE ENTIRE TRACE TABLE WILL BE COPIED.              @Y30LB02
.*         (TRACE X AND TRACE Y)                               @Y30LB02
.*                                                             @Y30LB02
.*   BIT 10--------------'1'B  COPY ACTIVE TRACE               @Y30LB02
.*                       '0'B  NO FUNCTION REQUESTED           @Y30LB02
.*                                                             @Y30LB02
.*   BIT 11--------------'1'B  COPY INACTIVE TRACE             @Y30LB02
.*                       '0'B   NO FUNCTION REQUESTED          @Y30LB02
.*                                                             @Y30LB02
.*   BITS 12-15----------UNUSED AND MUST BE SET TO ZERO        @Y30LB02
.*                                                             @Y30LB02
.*       **********            **********                      @Y30LB02
.*                                                             @Y30LB02
.*   NOTE 1: BITS 0-7 AND BITS 8-15 ARE MUTUALLY EXCLUSIVE.    @Y30LB02
.*       IF THE TABLE ID IS SPECIFIED IN BITS 0-7,             @Y30LB02
.*       THEN BITS 8-15 MUST BE SET TO ZERO.                   @Y30LB02
.*                                                             @Y30LB02
.*   NOTE 2: BITS 8 AND 9 MAY BOTH BE SPECIFIED AT             @Y30LB02
.*       THE SAME TIME, HOWEVER, NEITHER BIT                   @Y30LB02
.*       8 OR 9 CAN BE USED IN CONJUNCTION                     @Y30LB02
.*       WITH EITHER BIT 10 OR 11.                             @Y30LB02
.*                                                             @Y30LB02
.*   NOTE 3: BITS 10 AND 11 ARE MUTUALLY EXCLUSIVE.            @Y30LB02
.*                                                             @Y30LB02
.*   NOTE 4: THE MSC WILL BE RESPONSIBLE FOR RETURN OF         @Y30LB02
.*           A MESSAGE TO THE MESSAGE BUFFER.  THIS            @Y30LB02
.*           MESSAGE WILL GIVE THE 'START' AND 'END' CHR'S     @Y30LB02
.*           FOR THE TABLE THAT WAS COPIED.  THE CHRS WILL     @Y30LB02
.*           BE THE ADDRESS OF THE TABLE ON THE TARGET         @Y30LB02
.*           VIRTUAL VOLUME.  THE MSC WILL ALSO RETURN THE     @Y30LB02
.*           THE ORIGINAL 'START' CHR OF THE TABLE BEFORE      @Y30LB02
.*           IT WAS COPIED.  IF A TRACE TABLE WAS COPIED,      @Y30LB02
.*           THE MSC WILL ALSO RETURN THE 'CURRENT' CHR        @Y30LB02
.*           VALUE FOR THE TRACE TABLE; THIS CHR WILL BE       @Y30LB02
.*           THE ORIGINAL CHR BEFORE THE TRACE TABLE WAS       @Y30LB02
.*           COPIED.                                           @Y30LB02
.*                                                             @Y30LB02
.*   NOTE 5: THE MSC WILL RETURN CHRS FOR BOTH TRACE AREAS     @Y30LB02
.*           WHEN BOTH TRACE AREAS ARE COPIED.                 @Y30LB02
.*                                                             @Y30LB02
.*  VOLID -- VOLUME IDENTIFIER:  THE VOLUME IDENTIFIER OF      @Y30LB02
.*           THE VOLUME TO WHICH THE TABLES ARE TO BE          @Y30LB02
.*           COPIED.  THIS VOLUME MUST BE MOUNTED.             @Y30LB02
.*                                                             @Y30LB02
.*  ECB ---- EVENT CONTROL BLOCK:  ADDRESS OF AN EVENT         @Y30LB02
.*           CONTROL BLOCK.  THIS PARAMETER IS PROVIDED SINCE  @Y30LB02
.*           A DELAYED RESPONSE IS ALWAYS GIVEN FOR A COPY     @Y30LB02
.*           TABLES REQUEST.  THE ECB WILL BE POSTED WITH      @Y30LB02
.*           ONE OF THE FOLLOWING POST CODES: 70, 71, 72, 73,  @Y30LB02
.*           74, ETC.. THE POST CODE WILL BE PLACED IN THE     @Y30LB02
.*           LOW-ORDER BYTE OF THE ECB - '7F'X INDICATES       @Y30LB02
.*           SUCCESSFUL COMPLETION.  THE ECB AREA MUST BE      @Y30LB02
.*           CLEARED(SET TO BINARY 0) BEFORE INVOKING          @Y30LB02
.*           THE MACRO.                                        @Y30LB02
.*                                                             @Y30LB02
.*  EXTS --- EXTENTS:  A FOUR BYTE AREA WHICH CONTAINS         @Y30LB02
.*           THE BEGINNING CYLINDER (2 BYTES) AND ENDING       @Y30LB02
.*           CYLINDER (2 BYTES) OF THE EXTENT OF THE VIRTUAL   @Y30LB02
.*           VOLUME TO WHICH THE TABLES ARE TO BE COPIED.      @Y30LB02
.*           THE EXTENTS PARAMETER MUST SPECIFY SUFFICIENT     @Y30LB02
.*           CONTIGUOUS CYLINDERS TO ACCOMMODATE THE           @Y30LB02
.*           TABLE(S) TO BE COPIED AS THEY ARE MAPPED IN THE   @Y30LB02
.*           PAGES OF THE MSC TABLES.                          @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02    CONDITION = RETURN CODE = 0.                           @Y30LB02
.*                                                             @Y30LB02
.*02    OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM       @Y30LB02
.*               THE REQUESTED FUNCTION.                       @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02    CONDITION = RETURN CODE = 12.                          @Y30LB02
.*                                                             @Y30LB02
.*02    OUTPUT = ERROR MESSAGE                                 @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL-REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01 MESAGES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*           ICB602I: A NAME FOR THE REQUEST BLOCK MUST        @Y30LB02
.*                    BE SPECIFIED IN MF(2)                    @Y30LB02
.*           ICB604I: WARNING-ONLY THE MF PARAMETER IS         @Y30LB02
.*                    VALID FOR THE LIST FORM                  @Y30LB02
.*           ICB605I: ECB MUST BE SPECIFIED FOR                @Y30LB02
.*                    STANDARD FORM MACRO                      @Y30LB02
.*           ICB606I: EXTS MUST BE SPECIFIED FOR               @Y30LB02
.*                    STANDARD FORM MACRO                      @Y30LB02
.*           ICB607I: FLAGS MUST BE SPECIFIED FOR              @Y30LB02
.*                    STANDARD FORM MACRO                      @Y30LB02
.*           ICB610I: VOLID MUST BE SPECIFIED FOR              @Y30LB02
.*                    STANDARD FORM MACRO                      @Y30LB02
.*           ICB612I: MF(2) MUST CONTAIN REQ BLK NAME          @Y30LB02
.*                    IF EXEC MACRO FORM REQUESTED             @Y30LB02
.*           ICB613I: MISSING REQ BLK NAME OR MORE             @Y30LB02
.*                    THAN 2 SUBPARAMETERS FOR MF              @Y30LB02
.*           ICB615I: INVALID MF PARAMETER SPECIFIED,          @Y30LB02
.*                    MUST BE L, E, OR NULL                    @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*01  INNER=MACRO = NONE                                       @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM-MACROS = IHBINNRA                                 @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D = X04AC02 AND Y30LB02              @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO
&SYMBOL  ICBCOTB &MF=,&VOLID=,&ECB=,&EXTS=,&FLAGS=
         LCLB  &ESW                    EXIT-SWITCH             @Y30LB02
         LCLB  &BSW                    BRCH-SWITCH             @Y30LB02
         LCLC  &COTB                                           @Y30LB02
&COTB    SETC  'CT'.'&SYSNDX'                                  @Y30LB02
         AIF   ('&MF(1)' NE 'L').NLIST BRCH IF NOT LIST FORM   @Y30LB02
         AIF   ('&VOLID' NE '' OR '&ECB' NE '' OR '&EXTS' NE           *
               '' OR '&FLAGS' NE '').WARN                      @Y30LB02
         AGO   .LIST                                           @Y30LB02
.WARN    MNOTE 4,'  ICB604I - WARNING-ONLY THE MF PARAMETER '  @Y30LB02
         MNOTE 4,'  IS VALID FOR THE LIST FORM  '              @Y30LB02
.LIST    ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC COPY TABLES MACRO--INITIALIZED LIST FORM      @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
COTBLEN  DC    F'24'                   REQUEST BLK LENGTH      @Y30LB02
COTBOP   DC    XL1'16'                 COTB OPCODE             @Y30LB02
COTBRES1 DC    XL1'00'                 RESERVED FIELD          @Y30LB02
COTBFLAG DC    XL2'0000'               FLAGS FIELD             @Y30LB02
COTBEXT  DC    XL4'00000000'           EXTENTS FIELD           @Y30LB02
COTBVOL  DC    XL6'000000000000'       VOLID FIELD             @Y30LB02
COTBASID DC    XL2'0000'               ASID FIELD              @Y30LB02
COTBECB  DC    XL4'00000000'           ECB FIELD               @Y30LB02
         AGO   .EXIT                   BRANCH TO END           @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC COPY TABLES MACRO--UNINITIALIZED LIST FORM    @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBCOTB  DSECT                                                 @Y30LB02
COTBLEN  DS    F                       REQUEST LEN 18 HEX      @Y30LB02
COTBOP   DS    XL1                     COTB OPCODE 16 HEX      @Y30LB02
COTBRES1 DS    XL1                     RESERVED FIELD          @Y30LB02
COTBFLAG DS    XL2                     FLAGS FIELD             @Y30LB02
COTBEXT  DS    XL4                     EXTENTS FIELD           @Y30LB02
COTBVOL  DS    XL6                     VOLID FIELD             @Y30LB02
COTBASID DS    XL2                     ASID FIELD              @Y30LB02
COTBECB  DS    A                       ECB FIELD               @Y30LB02
         AGO   .EXIT                   BRANCH TO END           @Y30LB02
.NLIST   AIF   ('&MF(1)' NE '').EXCK   IF NOT STD FORM,BRCH    @Y30LB02
*  MACMEAN  MSSC COPY TABLES MACRO--STANDARD FORM              @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL   1,&COTB                 BRCH AROUND REQBLK      @Y30LB02
COTBLEN  DC    A(&COTB-*)              REQUEST BLOCK LENGTH    @Y30LB02
COTBOP   DC    XL1'16'                 COTB OPCODE             @Y30LB02
COTBRES1 DC    XL1'00'                 RESERVED FIELD          @Y30LB02
COTBFLAG DC    XL2'0000'               FLAGS FIELD             @Y30LB02
COTBEXT  DC    XL4'00000000'           EXTENTS FIELD           @Y30LB02
COTBVOL  DC    XL6'000000000000'       VOLID FIELD             @Y30LB02
COTBASID DC    XL2'0000'               ASID FIELD              @Y30LB02
COTBECB  DC    XL4'00000000'           ECB FIELD               @Y30LB02
&COTB    EQU   *                                               @Y30LB02
         AGO   .TEST                   BRANCH                  @Y30LB02
.EXCK    AIF   ('&MF(1)' EQ 'E').EXEC  IF EXEC FORM,BRCH       @Y30LB02
&ESW     SETB  1                       TURN EXIT-SWITCH ON     @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL '        @Y30LB02
         AGO   .TEST                   BRANCH                  @Y30LB02
.EXEC    AIF   (N'&MF EQ 2).CONT       IF 2 SUBPARAMETERS,BRCH @Y30LB02
&ESW     SETB  1                       TURN EXIT-SWITCH ON     @Y30LB02
         MNOTE 12,'  ICB613I - MISSING REQ BLK NAME OR MORE '  @Y30LB02
         MNOTE 12,'  THAN 2 SUBPARAMETERS FOR MF'              @Y30LB02
         AGO   .TEST                   BRANCH                  @Y30LB02
.CONT    ANOP                                                  @Y30LB02
.*                                                             @Y30LB02
*  MACMEAN  MSSC COPY TABLES MACRO--EXECUTE FORM               @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)               ADDR OF REQUEST BLK     @Y30LB02
.*                                     USING IHBINNRA MACRO    @Y30LB02
         LA    15,24                   LENGTH(24) INTO R15     @Y30LB02
         ST    15,0(1)                 STORE R15 IN BLOCK      @Y30LB02
         MVI   4(1),X'16'              STORE  OPCODE           @Y30LB02
.TEST    AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   ('&FLAGS' NE '').TEST6  BRCH IF FLAGS SPECIFIED @Y30LB02
         AIF   ('&MF(1)' EQ '').SETESW0 BRCH IF STD FORM       @Y30LB02
&BSW     SETB  1                       TURN BRCH-SWITCH ON     @Y30LB02
         AGO   .TEST6                  BRANCH                  @Y30LB02
.SETESW0 ANOP                                                  @Y30LB02
&ESW     SETB  1                       TURN EXIT-SWITCH ON     @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
.TEST6   AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   (&BSW).RESET0           BRCH IF BRCH-SWITCH ON  @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').RFLAGS BRCH IF IN REG    @Y30LB02
         MVC   6(2,1),&FLAGS           MV FLAGS INTO FLAGS FLD @Y30LB02
         AGO   .RESET0                 BRANCH                  @Y30LB02
.RFLAGS  ANOP                                                  @Y30LB02
         MVC   6(2,1),0(&FLAGS(1))     MV FLAGS TO FLAGS FLD   @Y30LB02
.RESET0  ANOP                                                  @Y30LB02
&BSW     SETB  0                                               @Y30LB02
         AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   ('&VOLID' NE '').TEST2  BRCH IF VOLID SPECIFIED @Y30LB02
         AIF   ('&MF(1)' EQ '').SETESW1 BRCH IF STD FORM       @Y30LB02
&BSW     SETB  1                       TURN BRCH-SWITCH ON     @Y30LB02
         AGO   .TEST2                  BRANCH                  @Y30LB02
.SETESW1 ANOP                                                  @Y30LB02
&ESW     SETB  1                       TURN EXIT-SWITCH ON     @Y30LB02
         MNOTE 12,'  ICB610I - VOLID MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
.TEST2   AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   (&BSW).RESET1           BRCH IF BRCH-SWITCH ON  @Y30LB02
         AIF   ('&VOLID'(1,1) EQ '(').RVOLID BRCH IF IN REG    @Y30LB02
         MVC   8(6,1),&VOLID           MV VOLID INTO VOLID FLD @Y30LB02
         AGO   .RESET1                 BRANCH                  @Y30LB02
.RVOLID  ANOP                                                  @Y30LB02
         MVC   8(6,1),0(&VOLID(1))     MV VOLID TO VOLID FLD   @Y30LB02
.RESET1  ANOP                                                  @Y30LB02
&BSW     SETB  0                       RESET BRCH-SWITCH TO 0  @Y30LB02
         AIF   ('&ECB' NE '').TEST3    BRCH IF ECB SPECIFIED   @Y30LB02
         AIF   ('&MF(1)' EQ '').SETESW2 BRCH IF STD FORM       @Y30LB02
&BSW     SETB  1                       TURN BRCH-SWITCH ON     @Y30LB02
         AGO   .TEST3                  BRANCH                  @Y30LB02
.SETESW2 ANOP                                                  @Y30LB02
&ESW     SETB  1                       TURN EXIT-SWITCH ON     @Y30LB02
         MNOTE 12,'  ICB605I - ECB MUST BE SPECIFIED FOR '     @Y30LB02
         MNOTE 12,'  STANDARD FORM MACRO '                     @Y30LB02
.TEST3   AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   (&BSW).RESET2           BRCH IF BRCH-SWITCH ON  @Y30LB02
         AIF   ('&ECB'(1,1) EQ '(').RECB BRCH IF IN REG        @Y30LB02
         LA    15,&ECB                 LOAD R15 WITH ADDR      @Y30LB02
         ST    15,16(1)                ST ADDR IN ECB FIELD    @Y30LB02
         AGO   .RESET2                 BRANCH                  @Y30LB02
.RECB    ANOP                                                  @Y30LB02
         ST    &ECB,16(1)              ST ADDR IN ECB FIELD    @Y30LB02
.RESET2  ANOP                                                  @Y30LB02
&BSW     SETB  0                       RESET BRCH-SWITCH TO 0  @Y30LB02
         AIF   ('&EXTS' NE '').TEST4   BRCH IF EXTS SPECIFIED  @Y30LB02
         AIF   ('&MF(1)' EQ '').SETESW3 BRCH IF STD FORM       @Y30LB02
&BSW     SETB  1                       TURN BRCH-SWITCH ON     @Y30LB02
         AGO   .TEST4                  BRANCH                  @Y30LB02
.SETESW3 ANOP                                                  @Y30LB02
&ESW     SETB  1                       TURN EXIT-SWITCH ON     @Y30LB02
         MNOTE 12,'  ICB606I - EXTS MUST BE SPECIFIED FOR '    @Y30LB02
         MNOTE 12,'  STANDARD FORM MACRO '                     @Y30LB02
.TEST4   AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   (&BSW).LINK             BRCH IF BRCH-SWITCH ON  @Y30LB02
         AIF   ('&EXTS'(1,1) EQ '(').REXTS BRCH IF IN REG      @Y30LB02
         MVC   20(4,1),&EXTS           MV EXTS INTO EXTS FLD   @Y30LB02
         AGO   .LINK                   BRANCH                  @Y30LB02
.REXTS   ANOP                                                  @Y30LB02
         MVC   20(4,1),0(&EXTS(1))     MV EXTS TO EXTS FLD     @Y30LB02
.LINK    ANOP                                                  @Y30LB02
         SVC   126                     ISSUE SVC INSTRUCTION   @Y30LB02
.EXIT    MEND                                                  @Y30LB02
**/
* ICBCOTB: MACRO KEYS(MF,VOLID,ECB,EXTS,FLAGS);            /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/* EXTERNAL DECLARES                                        @Y30LB02*/
*   DCL COTBTEST FIXED EXT;            /*USED AS A TEST TO   @Y30LB02*/
*                                      /*SEE IF STD FORM     @Y30LB02*/
*                                      /*ALREADY INVOKED     @Y30LB02*/
*   DCL COTESTR1 FIXED EXT;            /*USED AS A TEST TO   @Y30LB02*/
*                                      /*SEE IF R1 ALREADY   @Y30LB02*/
*                                      /*DECLARED            @Y30LB02*/
*/* INTERNAL DECLARES                                        @Y30LB02*/
*   DCL  RETCODE FIXED;                /*RETURN CODE         @Y30LB02*/
*   DCL  COPCODE CHAR;                 /*COPY TABLES OPCODE  @Y30LB02*/
*   DCL  LENGTH CHAR;                  /*LENGTH OF BLOCK     @Y30LB02*/
*   DCL  ESW FIXED;                    /*EXIT-SWITCH         @Y30LB02*/
*   DCL  BSW FIXED;                    /*BRCH-SWITCH         @Y30LB02*/
*   DCL  CTR FIXED;                    /*PARM-SWITCH         @Y30LB02*/
*   COPCODE='16';                      /*COPY TABLES OPCODE  @Y30LB02*/
*   LENGTH='18';                       /*DEFINE REQ LENGTH   @Y30LB02*/
*/* INITIALIZE SWITCHES TO ZERO                              @Y30LB02*/
*   ESW=0;                             /*INIT ERROR SWITCH   @Y30LB02*/
*   BSW=0;                             /*INIT BRANCH SWITCH  @Y30LB02*/
*   CTR=0;                             /*INIT PARM  SWITCH   @Y30LB02*/
*/* END OF DECLARES AND INITIALIZATION                       @Y30LB02*/
*   IF COTESTR1=0 THEN                 /*HAS R1 BEEN DCL'D?  @Y30LB02*/
*             DO;                      /*NO,DECLARE IT       @Y30LB02*/
*                  ANS('DCL COTBR1 PTR REG(1) ;'         /*@Y30LB02*/
*                       '/*WILL CONTAIN BLOCK ADDRESS @Y30LB02*/')
*                       SKIP(1);                           /*@Y30LB02*/
*                  COTESTR1=1;         /*COTESTR1 SET TO 1   @Y30LB02*/
*             END;                     /*                    @Y30LB02*/
*   IF MF(1)^='L' THEN                 /*IF NOT LIST FORM    @Y30LB02*/
*        GO TO NOTLIST;                /*THEN BRANCH         @Y30LB02*/
*   IF MF(2)='' THEN                   /*WAS A NAME GIVEN?   @Y30LB02*/
*        DO;                           /*NO,TURN ESW ON AND  @Y30LB02*/
*             ESW=1;                   /*PRINT ERROR MSG     @Y30LB02*/
*             ANS MSG('  ICB602I - A NAME FOR THE '
*                  'REQUEST BLOCK MUST BE SPECIFIED '
*                  'IN MF(2)')SKIP(5);                     /*@Y30LB02*/
*             RETCODE=12;              /*SET RETURN CODE     @Y30LB02*/
*        END;                          /*                    @Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, BRANCH         @Y30LB02*/
*        IF FLAGS ^= '' THEN  /*FLAGS SPECIFIED?             @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT CTR            @Y30LB02*/
*        IF VOLID ^= '' THEN  /*VOLID SPECIFIED?             @Y30LB02*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @Y30LB02*/
*        IF EXTS ^= '' THEN   /*EXTENTS SPECIFIED?           @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF ECB ^= '' THEN    /*ECB SPECIFIED?               @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF CTR > 0 THEN      /*COUNTER GT ZERO?             @Y30LB02*/
*          DO;                /*YES,PRINT WARNING MSG        @Y30LB02*/
*             RETCODE = 4;    /*SET RETURN CODE TO 4         @Y30LB02*/
*             ANS MSG('  ICB604I - WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR THE'
*                 ' LIST FORM  ')SKIP;                     /*@Y30LB02*/
*          END;               /*                             @Y30LB02*/
*   IF MF(3) ^= '' THEN                /*PLS ATTR SPCD?      @Y30LB02*/
*        GO TO ATTRLST;                /*BRANCH              @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* PRINT OUT DECLARES FOR LIST FORM                         @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('/*    MACMEAN  MSSC COPY TABLES MACRO       '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('DCL 1  'MF(2)'  STATIC LOCAL,') SKIP(1);      /*@Y30LB02*/
*   ANS('      2  COTBLL FIXED(31) INIT('QUOTE('18')
*        'X), /*LENGTH OF REQUEST BLOCK @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBOP FIXED(8) INIT('QUOTE(COPCODE)
*        'X), /*OPCODE @Y30LB02*/') SKIP(1);
*   ANS('      2  * CHAR(1) INIT('QUOTE('00')
*        'X), /*RESERVED AREA @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBFLG BIT(16) INIT('
*        QUOTE('0000000000000000')'B), /*FLAGS FIELD @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*   ANS('        3  COTBTID BIT(4),/*TABLE IDENTIFI'
*        'CATION, MUST BE SET TO 8 FOR TABLES OTHER '
*        'THAN TRACE  @Y30LB02*/') SKIP(1);
*   ANS('        3  *       BIT(4),/*RESERVED BITS'
*        ' AND MUST BE ZERO @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRX BIT(1),/*COPY TRACEX'
*        ' ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRY BIT(1),/*COPY TRACEY'
*        ' ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRA BIT(1),/*COPY TRACE'
*        ' ACTIVE ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRI BIT(1),/*COPY TRACE'
*        ' INACTIVE ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  *       BIT(4),/*RESERVED BITS '
*        'AND MUST BE ZERO @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBEXTS CHAR(4) INIT('QUOTE('00000000')
*        'X), /*BEG AND END EXTENTS @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBVOL CHAR(6) INIT('
*        QUOTE('000000000000')'X), /*VOLID FIELD @Y30LB02*/')
*        SKIP(1);
*   ANS('      2  COTBASID CHAR(2) INIT('QUOTE('0000')
*        'X), /*ASID FIELD @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBECB FIXED(31) INIT(0);/*NAME OF ECB @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   GO TO EXIT;                        /*BRANCH TO END       @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* THIS IS ALL THAT IS DONE FOR LIST FORM                   @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*/*                                                          @Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC COPY TABLES MACRO      '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('DCL 1  'MF(2)' 'MF(3)','
*   '/*COPY TABLES REQUEST BLOCK*/ ') SKIP(1);
*   ANS('      2  COTBLL FIXED(31), /*LENGTH'
*        ' = 18 BYTES HEX @Y30LB02*/')SKIP(1);
*   ANS('      2  COTBOP FIXED(8) , /*OPCODE='
*        ' 16 HEX @Y30LB02*/') SKIP(1);
*   ANS('      2  * CHAR(1), /*RESERVED AREA @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBFLG BIT(16),'
*        ' /*FLAGS FIELD @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTID BIT(4),/*TABLE IDENTIFI'
*        'CATION, MUST BE SET TO 8 FOR TABLES OTHER '
*        'THAN TRACE  @Y30LB02*/') SKIP(1);
*   ANS('        3  *       BIT(4),/*RESERVED BITS'
*        ' AND MUST BE ZERO @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRX BIT(1),/*COPY TRACEX'
*        ' ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRY BIT(1),/*COPY TRACEY'
*        ' ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRA BIT(1),/*COPY TRACE'
*        ' ACTIVE ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRI BIT(1),/*COPY TRACE'
*        ' INACTIVE ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  *       BIT(4),/*RESERVED BITS '
*        'AND MUST BE ZERO @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBEXTS CHAR(4),'
*        ' /*BEG AND END EXTENTS @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBVOL CHAR(6),'
*        ' /*VOLID FIELD @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBASID CHAR(2), /*ASID AREA '
*        'USED BY THE SVC @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBECB FIXED(31);/*NAME OF ECB @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*   GO TO EXIT;                        /*BRANCH TO END       @Y30LB02*/
*NOTLIST:
*   IF MF(1)^='' THEN                  /*STD FORM REQUEST?   @Y30LB02*/
*        GO TO EXCHECK;                /*NO,BRANCH           @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* THIS PART OF THE MACRO IS FOR STD FORM(MF(1)='')         @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF COTBTEST=1 THEN                 /*IF THE STD FRM HAS  @Y30LB02*/
*                                      /*BEEN INVOKED ALRDY  @Y30LB02*/
*        DO;                           /*SET UP REG1 TO PNT  @Y30LB02*/
*                                      /*TO REQUEST BLOCK    @Y30LB02*/
*           ANS('/***********************************'
*               '********************* @Y30LB02*/')SKIP;
*           ANS('/*     MACMEAN  MSSC COPY TABLES    '
*               ' MACRO                @Y30LB02*/')SKIP;
*           ANS('/*     VS1-4/VS2-3 VERSION--06/09/74'
*               'LEVEL 00              @Y30LB02*/')SKIP;
*           ANS('/*     THIS IS THE OUTPUT FOR A     '
*               'SECONDARY             @Y30LB02*/')SKIP;
*           ANS('/*     INVOCATION OF THE STANDARD   '
*               'FORM MACRO            @Y30LB02*/')SKIP;
*           ANS('/***********************************'
*               '********************* @Y30LB02*/')SKIP;
*             ANS('RFY(COTBR1)RSTD;'                     /*@Y30LB02*/
*                '/*RESTRICT REGISTER 1 @Y30LB02*/')SKIP(1);
*             ANS('COTBR1=ADDR(COTBLL);'                 /*@Y30LB02*/
*                '/*COTBR1 ADDRESS OF REQ BLOCK @Y30LB02*/')SKIP(1);
*             GO TO TEST1;                                 /*@Y30LB02*/
*        END;                                              /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* OTHERWISE, PRINT OUT DECLARES FOR STD FORM               @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC COPY TABLES MACRO      '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS ('DCL  1 COTBLIST  STATIC LOCAL,') SKIP(1);        /*@Y30LB02*/
*   ANS('      2  COTBLL FIXED(31) INIT('QUOTE('18')
*        'X), /*LENGTH OF REQUEST BLOCK @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBOP FIXED(8) INIT('QUOTE(COPCODE)
*        'X), /*OPCODE @Y30LB02*/') SKIP(1);
*   ANS('      2  * CHAR(1) INIT('QUOTE('00')
*        'X), /*RESERVED AREA @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBFLG BIT(16) INIT('
*        QUOTE('0000000000000000')'B), /*FLAGS FIELD @Y30LB02*/')
*        SKIP(1);
*   ANS('        3  COTBTID BIT(4),/*TABLE IDENTIFI'
*        'CATION @Y30LB02*/') SKIP(1);
*   ANS('        3  *       BIT(4),/*RESERVED BITS'
*        ' AND MUST BE ZERO @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRX BIT(1),/*COPY TRACEX'
*        ' ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRY BIT(1),/*COPY TRACEY'
*        ' ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRA BIT(1),/*COPY TRACE'
*        ' ACTIVE ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  COTBTRI BIT(1),/*COPY TRACE'
*        ' INACTIVE ATTRIBUTE @Y30LB02*/') SKIP(1);
*   ANS('        3  *       BIT(4),/*RESERVED BITS '
*        'AND MUST BE ZERO @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBEXTS CHAR(4) INIT('QUOTE('00000000')
*        'X), /*BEG AND END EXTENTS @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBVOL CHAR(6) INIT('
*        QUOTE('000000000000')'X), /*VOLID FIELD @Y30LB02*/')
*        SKIP(1);
*   ANS('      2  COTBASID CHAR(2) INIT('QUOTE('0000')
*        'X), /*ASID FIELD @Y30LB02*/') SKIP(1);
*   ANS('      2  COTBECB FIXED(31) INIT(0);/*NAME OF ECB @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   COTBTEST=1;                        /*SET SWITCH TO 1     @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* END OF DECLARES FOR REQUEST BLOCK                        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ANS('RFY(COTBR1)RSTD;/*RESTRICT REGISTER 1 @Y30LB02*/')SKIP;
*   ANS('COTBR1=ADDR(COTBLL);/*COTBR1  ADDR OF REQBLK @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*   GO TO TEST1;                       /*BRANCH              @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* THE MACRO BRANCHES HERE FOR EXEC FORM                    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*EXCHECK: IF MF(1)='E' THEN            /*EXEC FORM?          @Y30LB02*/
*             GO TO EXFORM;            /*YES, BRANCH         @Y30LB02*/
*   ESW=1;                             /*TURN EXIT-SWTCH ON  @Y30LB02*/
*   DO;                                /*PRINT THIS ERR MSG  @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER'
*             ' SPECIFIED, MUST BE L, E, OR NULL') SKIP(5);/*@Y30LB02*/
*   END;                                /*                   @Y30LB02*/
*   RETCODE=12;                        /*SET RETURN CODE     @Y30LB02*/
*   GO TO TEST1;                       /*BRANCH              @Y30LB02*/
*EXFORM: IF MF(2)='' THEN              /*ADDR OF LIST GIVEN  @Y30LB02*/
*             DO;                      /*NO,PRINT ERROR MSG  @Y30LB02*/
*                  ESW=1;              /*TURN EXIT-SWTCH ON  @Y30LB02*/
*                  ANS MSG('  ICB612I - MF(2) MUST '
*                  'CONTAIN REQ BLK NAME IF '
*                  'EXEC MACRO FORM REQUESTED ') SKIP(5);  /*@Y30LB02*/
*                  RETCODE=12;         /*SET RETURN CODE     @Y30LB02*/
*                  GO TO TEST1;        /*BRANCH              @Y30LB02*/
*             END;                     /*                    @Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC COPY TABLES MACRO      '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('RFY(COTBR1)RSTD;/*RESTRICT REGISTER 1 @Y30LB02*/')SKIP;
*   ANS('COTBR1=ADDR('MF(2)
*        '); /*SET COTBR1 TO ADDR OF REQ BLK @Y30LB02*/') SKIP(1);
*  IF MF(3) = 'COMPLETE' THEN    /*REQUEST TO ZERO?          @Y30LB02*/
*   DO;                          /*YES,ZERO BLK              @Y30LB02*/
*   ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'         /*@Y30LB02*/
*       '/*ZERO REQUEST BLOCK @Y30LB02*/')SKIP;
*   END;                        /*                           @Y30LB02*/
*   ANS('COTBLL='QUOTE(LENGTH)'X;'                   /*@Y30LB02*/
*       '/*SET LENGTH FIELD @Y30LB02*/')SKIP(1);
*   ANS('COTBOP='QUOTE(COPCODE)'X; /*OPCODE @Y30LB02*/') SKIP(1);
*TEST1: BSW=0;                                             /*@Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @Y30LB02*/
*   IF FLAGS='' THEN                   /*FLAGS SPECIFIED?    @Y30LB02*/
*        DO;                           /*NO,CHECK FOR STD    @Y30LB02*/
*             IF MF(1)='' THEN         /*FORM                @Y30LB02*/
*                  DO;                 /*IF STD FORM,TURN    @Y30LB02*/
*                       ESW=1;         /*EXIT-SWITCH ON AND  @Y30LB02*/
*                                      /*PRINT ERROR MSG     @Y30LB02*/
*                       ANS MSG('  ICB607I - FLAGS'
*                        ' MUST BE SPECIFIED FOR STANDARD'
*                        ' FORM MACRO') SKIP(5);           /*@Y30LB02*/
*                       RETCODE=12;    /*SET RETURN CODE     @Y30LB02*/
*                  END;                /*                    @Y30LB02*/
*             ELSE                     /*IF NOT STD FORM     @Y30LB02*/
*                  BSW=1;              /*TURN BRCH-SWTCH ON  @Y30LB02*/
*        END;                          /*                    @Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y30LB02*/
*   IF BSW=1 THEN                      /*BRCH-SWITCH ON?     @Y30LB02*/
*        GO TO VOLCHECK;               /*YES,GO CK FOR ECB   @Y30LB02*/
*   ANS('COTBFLG='FLAGS';/*FILL IN FLAGS FIELD @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*VOLCHECK:  BSW=0;                                         /*@Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @Y30LB02*/
*   IF VOLID='' THEN                   /*VOLID SPECIFIED?    @Y30LB02*/
*        DO;                           /*NO,CHECK FOR STD    @Y30LB02*/
*             IF MF(1)='' THEN         /*FORM                @Y30LB02*/
*                  DO;                 /*IF STD FORM,TURN    @Y30LB02*/
*                       ESW=1;         /*EXIT-SWITCH ON AND  @Y30LB02*/
*                                      /*PRINT ERROR MSG     @Y30LB02*/
*                       ANS MSG('  ICB610I - VOLID'
*                        ' MUST BE SPECIFIED FOR STANDARD'
*                        ' FORM MACRO') SKIP(5);           /*@Y30LB02*/
*                       RETCODE=12;    /*SET RETURN CODE     @Y30LB02*/
*                  END;                /*                    @Y30LB02*/
*             ELSE                     /*IF NOT STD FORM     @Y30LB02*/
*                  BSW=1;              /*TURN BRCH-SWTCH ON  @Y30LB02*/
*        END;                          /*                    @Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y30LB02*/
*   IF BSW=1 THEN                      /*BRCH-SWITCH ON?     @Y30LB02*/
*        GO TO ECBCHECK;               /*YES,GO CK FOR ECB   @Y30LB02*/
*   ANS('COTBVOL='VOLID';/*FILL IN VOLID FIELD @Y30LB02*/')
*        SKIP(1);
*ECBCHECK:  BSW=0;                     /*RESET BRCH-SWITCH   @Y30LB02*/
*   IF ECB='' THEN                     /*ECB   SPECIFIED?    @Y30LB02*/
*        DO;                           /*NO,CHECK FOR STD    @Y30LB02*/
*             IF MF(1)='' THEN          /*FORM               @Y30LB02*/
*                  DO;                 /*IF STD FORM,TURN    @Y30LB02*/
*                       ESW=1;         /*EXIT-SWITCH ON AND  @Y30LB02*/
*                                      /*PRINT ERROR MSG     @Y30LB02*/
*                       ANS MSG('  ICB605I - ECB'
*                        ' MUST BE SPECIFIED FOR STANDARD'
*                        ' FORM MACRO') SKIP(5);           /*@Y30LB02*/
*                       RETCODE=12;    /*SET RETURN CODE     @Y30LB02*/
*                  END;                                    /*@Y30LB02*/
*             ELSE                     /*IF NOT STD FORM     @Y30LB02*/
*                  BSW=1;              /*TURN BRCH-SWTCH ON  @Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y30LB02*/
*   IF BSW=1 THEN                      /*BRCH-SWITCH ON?     @Y30LB02*/
*        GO TO EXTSCK;                 /*YES,GO CK FOR EXTS  @Y30LB02*/
*   ANS('COTBECB=ADDR'ECB';/*FILL IN ECB FIELD @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*EXTSCK:  BSW=0;                       /*RESET BRCH-SWITCH   @Y30LB02*/
*   IF EXTS='' THEN                    /*EXTS  SPECIFIED?    @Y30LB02*/
*        DO;                           /*NO,CHECK FOR STD    @Y30LB02*/
*             IF MF(1)='' THEN         /*FORM                @Y30LB02*/
*                  DO;                 /*IF STD FORM,TURN    @Y30LB02*/
*                       ESW=1;         /*EXIT-SWITCH ON AND  @Y30LB02*/
*                                      /*PRINT ERROR MSG     @Y30LB02*/
*                       ANS MSG('  ICB606I - EXTS'
*                        ' MUST BE SPECIFIED FOR STANDARD'
*                        ' FORM MACRO') SKIP(5);           /*@Y30LB02*/
*                       RETCODE=12;    /*SET RETURN CODE     @Y30LB02*/
*                  END;                /*                    @Y30LB02*/
*             ELSE                     /*IF NOT STD FORM     @Y30LB02*/
*                  BSW=1;              /*TURN BRCH-SWTCH ON  @Y30LB02*/
*        END;                          /*                    @Y30LB02*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y30LB02*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y30LB02*/
*   IF BSW=1 THEN                      /*BRCH-SWITCH ON?     @Y30LB02*/
*        GO TO LINK;                   /*YES,BR TO SVC INST  @Y30LB02*/
*   ANS('COTBEXTS='EXTS';/*FILL IN EXTS FIELD @Y30LB02*/') SKIP(1);
*LINK: ANS(' SVC (126); /*ISSUE SVC INSTRUCTION @Y30LB02*/')
*        SKIP(1);
*      ANS('RFY  COTBR1 UNRSTD;/*UNRESTRCT REG 1 @Y30LB02*/')SKIP;
*EXIT: RETURN CODE(RETCODE);                               /*@Y30LB02*/
*   %END;                                                  /*@Y30LB02*/
./ ADD NAME=ICBCOVC
* %/*  START OF SPECIFICATIONS****                             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBCOVC                                   @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = COPY VOLUME/CARTRIDGE MACRO          @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = REQUEST COPY VOLUME/CART OF MSS DATA         @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB, CVO, AND CCRT.                    @Y30LB02
.*                                                             @Y30LB02
.*02  REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS   @Y30LB02
.*                              BY MACROS: R0,R1,R14, AND R15  @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS AND ASSEMBLER                         @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBCOVC                                 @Y30LB02
.*                                                             @Y30LB02
.*02     PURPOSE = THE ICBCOVC MACRO SERVES AS A COMMUNI-      @Y30LB02
.*       CATIONS LINK BETWEEN THE MSSC CALLER AND THE          @Y30LB02
.*       MSSC SVC ROUTINE.                                     @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE =  SVC 126                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT = PARAMETERS SPECIFIED ON THE PLS/BAL MACRO        @Y30LB02
.*            INVOCATION                                       @Y30LB02
.*                                                             @Y30LB02
.*   THE ICBCOVC MACRO REQUEST IS ISSUED TO SATISFY COPY       @Y30LB02
.*                                                             @Y30LB02
.*   VOLUME AND COPY CARTRIDGE REQUESTS.                       @Y30LB02
.*                                                             @Y30LB02
.*   THE COPY VOLUME (CVOL) REQUEST IS ISSUED IF THE CALLER    @Y30LB02
.*   WISHES TO:                                                @Y30LB02
.*                                                             @Y30LB02
.*   (1)  CAUSE REAL 3330I DASD TO BE COPIED TO A SUBSYSTEM    @Y30LB02
.*        VOLUME.                                              @Y30LB02
.*                                                             @Y30LB02
.*   (2)  CAUSE A SUBSYSTEM VOLUME TO BE COPIED TO REAL        @Y30LB02
.*        3330I DASD.                                          @Y30LB02
.*                                                             @Y30LB02
.*   (3)  CAUSE A VIRTUAL VOLUME TO BE COPIED TO A VIRTUAL     @Y30LB02
.*        VOLUME HAVING THE SAME VOLID BUT NOT ACTIVE.         @Y30LB02
.*                                                             @Y30LB02
.*   (4)  CAUSE A VIRTUAL VOLUME SPECIFIED BY CSN1 TO BE       @Y30LB02
.*        COPIED TO A VIRTUAL VOLUME HAVING THE SAME VOLID     @Y30LB02
.*        AND ACTIVE.                                          @Y30LB02
.*                                                             @Y30LB02
.*   THE COPY CARTRIDGE (CCRT) REQUEST IS ISSUED IF THE        @Y30LB02
.*   CALLER WISHES TO CAUSE A CARTRIDGE TO BE COPIED TO A      @Y30LB02
.*   DIFFERENT CARTRIDGE.                                      @Y30LB02
.*                                                             @Y30LB02
.*   MACRO SYNTAX                                              @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBCOVC  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*         TYPE=CCRT/CVOL                                      @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBCOVC  TYPE=CCRT/CVOL        VOLID=ADDR/(R)                @Y30LB02
.*         FLAGS=ADDR/(R)        CSN=ADDR/(R)                  @Y30LB02
.*         ECB=ADDR/(R)          RUA=ADDR/(R)                  @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBCOVC  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*         TYPE=CCRT/CVOL       VOLID=ADDR/(R)                 @Y30LB02
.*                              ECB=ADDR/(R)                   @Y30LB02
.*                              CSN=ADDR/(R)                   @Y30LB02
.*                              RUA=ADDR/(R)                   @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                              VVICEXT=ADDR/(R)               @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*  TYPE -  TYPE:  INDICATES WHETHER THE REQUEST FOR THE       @Y30LB02
.*          THE COPY VOLUME(CVOL) OR THE COPY CARTRIDGE        @Y30LB02
.*          (CCRT) FUNCTION.  IF CVOL IS SPECIFIED, HEX        @Y30LB02
.*          '2A' IS PLACED IN THE OPCODE FIELD.  FOR           @Y30LB02
.*          TYPE=CCRT, HEX '28' IS PLACED IN THE OPCODE        @Y30LB02
.*          FIELD.                                             @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTIONS.                          @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS - FLAGS: THE FIELD WHICH INDICATES THE FUNCTION(S)  @Y30LB02
.*   TO BE PERFORMED.  THE FORMAT OF THE FLAGS FIELD IS        @Y30LB02
.*   SHOWN BELOW:                                              @Y30LB02
.*                                                             @Y30LB02
.*   --------------------------------------------              @Y30LB02
.*    X  X  X  X BITS 4-15 UNUSED AND ZERO               @Y30LB02
.*   --------------------------------------------              @Y30LB02
.*   IF CVOL (COPY VOLUME) IS SPECIFIED FOR THE TYPE           @Y30LB02
.*   PARAMETER:                                                @Y30LB02
.*                                                             @Y30LB02
.*   BIT 0-------'1'B   TRANSFER DATA FROM DASD TO             @Y30LB02
.*                      CARTRIDGE(S)                           @Y30LB02
.*               '0'B   NOT DASD TO CARTRIDGE                  @Y30LB02
.*                                                             @Y30LB02
.*   BIT 1-------'1'B   TRANSFER DATA FROM                     @Y30LB02
.*                      CARTRIDGE(S) TO DASD                   @Y30LB02
.*               '0'B   NOT CARTRIDGE TO DASD                  @Y30LB02
.*                                                             @Y30LB02
.*   BIT 2-------'1'B   TRANSFER DATA FROM CARTRIDGE           @Y30LB02
.*                      TO CARTRIDGE (TRANSIENT)               @Y30LB02
.*               '0'B   NOT CARTRIDGE TO CARTRIDGE             @Y30LB02
.*                                                             @Y30LB02
.*   BIT 3-------'1'B   TRANSFER DATA FROM CARTRIDGE           @Y30LB02
.*                      TO CARTRIDGE (INVENTORY)               @Y30LB02
.*               '0'B   NOT CARTRIDGE TO CARTRIDGE             @Y30LB02
.*                                                             @Y30LB02
.*   BITS 4-15---       NOT USED AND MUST BE ZERO              @Y30LB02
.*                                                             @Y30LB02
.*   NOTE:  BITS 0-3 ARE MUTUALLY EXCLUSIVE.                   @Y30LB02
.*                                                             @Y30LB02
.*   PACK TO CARTRIDGE                                         @Y30LB02
.*                                                             @Y30LB02
.*          IF THIS ATTRIBUTE IS SPECIFIED, THEN, DATA         @Y30LB02
.*          FROM A REAL 3330I DASD PACK (SPECIFIED BY RUA)     @Y30LB02
.*          WILL BE COPIED TO A SUBSYSTEM VOLUME (SPECIFIED    @Y30LB02
.*          BY VOLID).                                         @Y30LB02
.*                                                             @Y30LB02
.*          PACK TO CARTRIDGE REQUIRED PARAMETERS: TYPE,       @Y30LB02
.*          FLAGS, ECB, VOLID, AND RUA.                        @Y30LB02
.*          OPTIONAL PARAMETER:  VVICEXT                       @Y30LB02
.*                                                             @Y30LB02
.*   CARTRIDGE TO PACK                                         @Y30LB02
.*                                                             @Y30LB02
.*          IF THIS ATTRIBUTE IS SPECIFIED, THEN, DATA         @Y30LB02
.*          FROM A SUBSYSTEM VOLUME (SPECIFIED BY VOLID)       @Y30LB02
.*          IS COPIED TO A REAL 3330I DASD PACK (SPECIFIED     @Y30LB02
.*          BY RUA).                                           @Y30LB02
.*                                                             @Y30LB02
.*          CARTRIDGE TO PACK REQUIRED PARAMETERS: TYPE,       @Y30LB02
.*          FLAGS, ECB, VOLID, AND RUA.                        @Y30LB02
.*          OPTIONAL PARAMETER:  VVICEXT                       @Y30LB02
.*                                                             @Y30LB02
.*   CARTRIDGE TO CARTRIDGE(INVENTORY TO TRANSIENT)            @Y30LB02
.*                                                             @Y30LB02
.*          IF THIS ATTRIBUTE IS SPECIFIED, THEN, DATA         @Y30LB02
.*          FROM A SUBSYSTEM VOLUME SPECIFIED BY VOLID         @Y30LB02
.*          WILL BE COPIED TO ANOTHER SUBSYSTEM VOLUME         @Y30LB02
.*          SPECIFIED BY CARTRIDGE SERIAL NUMBER (CSN).        @Y30LB02
.*                                                             @Y30LB02
.*          CARTRIDGE TO CARTRIDGE REQUIRED PARAMETERS:        @Y30LB02
.*          TYPE, FLAGS, ECB, VOLID, AND CSN.                  @Y30LB02
.*          OPTIONAL PARAMETER:  VVICEXT                       @Y30LB02
.*                                                             @Y30LB02
.*   CARTRIDGE TO CARTRIDGE(TRANSIENT TO INVENTORY)            @Y30LB02
.*                                                             @Y30LB02
.*          IF THIS ATTRIBUTE IS SPECIFIED, THEN, DATA         @Y30LB02
.*          FROM A SUBSYSTEM VOLUME SPECIFIED BY CSN1 WILL     @Y30LB02
.*          BE COPIED TO ANOTHER SUBSYSTEM VOLUME SPECIFIED    @Y30LB02
.*          BY VOLID.                                          @Y30LB02
.*                                                             @Y30LB02
.*          CARTRIDGE TO CARTRIDGE REQUIRED PARAMETERS:        @Y30LB02
.*          TYPE, FLAGS, ECB, VOLID, AND CSN.                  @Y30LB02
.*          OPTIONAL PARAMETER:  VVICEXT                       @Y30LB02
.*                                                             @Y30LB02
.*   IF CCRT (COPY CARTRIDGE) IS SPECIFIED FOR THE TYPE        @Y30LB02
.*   PARAMETER:                                                @Y30LB02
.*                                                             @Y30LB02
.*   BIT 0-------'1'B   CARTRIDGE 1 OF 2 IS BEING COPIED       @Y30LB02
.*               '0'B   NOT CARTRIDGE ONE                      @Y30LB02
.*                                                             @Y30LB02
.*   BIT 1-------'1'B   CARTRIDGE 2 OF 2 IS BEING COPIED       @Y30LB02
.*               '0'B   NOT CARTRIDGE TWO                      @Y30LB02
.*                                                             @Y30LB02
.*   BITS 2-15---       NOT USED AND MUST BE ZERO              @Y30LB02
.*                                                             @Y30LB02
.*   NOTE:  BITS 0-1 ARE MUTUALLY EXCLUSIVE.                   @Y30LB02
.*                                                             @Y30LB02
.*   CARTRIDGE 1 OF 2:                                         @Y30LB02
.*                                                             @Y30LB02
.*          IF THIS ATTRIBUTE IS SPECIFIED, THEN THE FIRST     @Y30LB02
.*          CARTRIDGE OF A 2 CARTRIDGE VOLUME(SPECIFIED BY     @Y30LB02
.*          VOLID) IS COPIED TO A DIFFERENT CARTRIDGE WHICH    @Y30LB02
.*          IS SPECIFIED BY CSN.                               @Y30LB02
.*                                                             @Y30LB02
.*          CARTRIDGE 1 OF 2 REQUIRED PARAMETERS:              @Y30LB02
.*          TYPE, FLAGS, ECB, VOLID, AND CSN.                  @Y30LB02
.*                                                             @Y30LB02
.*   CARTRIDGE 2 OF 2:                                         @Y30LB02
.*                                                             @Y30LB02
.*          IF THIS ATTRIBUTE IS SPECIFIED, THEN, THE          @Y30LB02
.*          SECOND CARTRIDGE OF A 2 CARTRIDGE VOLUME(SPECI-    @Y30LB02
.*          FIED BY VOLID) IS COPIED TO A DIFFERENT            @Y30LB02
.*          CARTRIDGE WHICH IS SPECIFIED BY CSN.               @Y30LB02
.*                                                             @Y30LB02
.*          CARTRIDGE 2 OF 2 REQUIRED PARAMETERS:              @Y30LB02
.*          TYPE, FLAGS, ECB, VOLID, AND CSN.                  @Y30LB02
.*                                                             @Y30LB02
.*   VOLID - VOLUME IDENTIFIER: THE VOLUME IDENTIFIER OF THE   @Y30LB02
.*           VOLUME TO BE COPIED.                              @Y30LB02
.*                                                             @Y30LB02
.*   CSN   - CARTRIDGE SERIAL NUMBER: A 12 BYTE AREA WHICH     @Y30LB02
.*           CONTAINS THE CARTRIDGE SERIAL NUMBER.             @Y30LB02
.*                                                             @Y30LB02
.*   ECB   - THE NAME OF THE EVENT CONTROL BLOCK (ECB) TO BE   @Y30LB02
.*           POSTED WHEN THE REQUEST IS COMPLETE.  THE USER    @Y30LB02
.*           MUST ALSO DECLARE A MINIMUM 50 BYTE CONTIGUOUS    @Y30LB02
.*           AREA TO CONTAIN THE MESSAGE GENERATED BY THE      @Y30LB02
.*           MESSAGE TASK.  (THE ECB AND APPENDED DATA AREA    @Y30LB02
.*           MUST BE IN COMMON CORE IN VS/2).  THE ECB IS      @Y30LB02
.*           POSTED WITH '7F'X FOR SUCCESSFUL (IN LOW-ORDER    @Y30LB02
.*           BYTE OF ECB).  THE MSC DATA WILL BE MOVED         @Y30LB02
.*           TO CORE LOCATION ADDRESS(ECB)+4.  ECB             @Y30LB02
.*           MUST BE SPECIFIED AND THE ECB AREA MUST BE        @Y30LB02
.*           CLEARED (SET TO BINARY 0) BEFORE INVOKING         @Y30LB02
.*           THE MACRO.                                        @Y30LB02
.*                                                             @Y30LB02
.*   RUA   - REAL UNIT ADDRESS: THE REAL UNIT DESIGNATED TO    @Y30LB02
.*           RECEIVE THE SUBSYSTEM DATA.  MUST BE SPECIFIED    @Y30LB02
.*           WITH EACH STANDARD FORM COPY VOLUME REQUEST       @Y30LB02
.*           WHICH SPECIFIES PACK TO CARTRIDGE OR CARTRIDGE    @Y30LB02
.*           TO PACK.                                          @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* VVICEXT - THE NAME OF AN AREA WHICH CONTAINS THE MSVC       @Y30LB02
.*           EXTENSION (VVICEXT) MAPPING.  IF THIS PARAMETER   @Y30LB02
.*           IS NOT SPECIFIED, THE CORRESPONDING POSITION IN   @Y30LB02
.*           THE REQUEST BLOCK MUST BE SET TO ZERO.  THE       @Y30LB02
.*           MAPPING MACRO FOR THE MSVC EXTENSION TO COPY      @Y30LB02
.*           VOLUME IS IEZCOVCE (VVICEXT IS NOT A VALID        @Y30LB02
.*           PARAMETER FOR THE COPY CARTRIDGE REQUEST).        @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM      @Y30LB02
.*                THE REQUESTED FUNCTION                       @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*     ICB600I:  TYPE MUST BE SPECIFIED                        @Y30LB02
.*     ICB601I:  TYPE IS INCORRECTLY SPECIFIED                 @Y30LB02
.*     ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*               SPECIFIED IN MF(2)                            @Y30LB02
.*     ICB603I:  WARNING-ONLY MF AND TYPE PARAMETERS ARE       @Y30LB02
.*               VALID FOR LIST FORM                           @Y30LB02
.*     ICB605I:  ECB MUST BE SPECIFIED FOR STANDARD            @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD          @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB610I:  VOLID MUST BE SPECIFIED FOR STANDARD          @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB616I:  RUA MUST BE SPECIFIED FOR STANDARD            @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME               @Y30LB02
.*               IF EXEC MACRO FORM REQUESTED                  @Y30LB02
.*     ICB613I:  MISSING REQ BLK NAME OR MORE                  @Y30LB02
.*               THAN 2 SUBPARAMETERS FOR MF                   @Y30LB02
.*     ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST          @Y30LB02
.*                BE E, L, OR NULL                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 AND Y30LB02                @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO
&SYMBOL  ICBCOVC &MF=,&TYPE=,&FLAGS=,&ECB=,&RUA=,&VOLID=,              *
               &CSN=,&VVICEXT=
         LCLC  &LBL                DEFINE MACRO INSTR INDX     @Y30LB02
         LCLB  &ERSW               DEFINE ERROR SWITCH         @Y30LB02
&LBL     SETC  'CVC'.'&SYSNDX'     ASSIGN CHARACTER VALUE      @Y30LB02
.*                                                             @Y30LB02
.*       CHECK FOR VALID TYPE SPECIFICATION                    @Y30LB02
.TYPE    AIF   ('&TYPE' EQ '').NUL                             @Y30LB02
         AIF   ('&TYPE' EQ 'CVOL' OR '&TYPE' EQ 'CCRT').START  @Y30LB02
         MNOTE 12,'  ICB601I - TYPE IS INCORRECTLY SPECIFIED'  @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.NUL     ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB600I - TYPE MUST BE SPECIFIED '        @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.START   AIF   ('&MF(1)' EQ 'L').LFORM      LIST FORM?         @Y30LB02
         AIF   ('&MF(1)' EQ 'E').EFORM      EXECUTE FORM?      @Y30LB02
         AIF   ('&MF(1)' EQ '').SFORM       STANDARD FORM?     @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL '        @Y30LB02
&ERSW    SETB  1                                               @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF 'LIST' MACRO FORM                       @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR ILLEGAL PARAMETERS ON   @Y30LB02
.*       THE LIST FORM MACRO AND GIVES WARNING IF FOUND        @Y30LB02
.*                                                             @Y30LB02
.LFORM   ANOP                                                  @Y30LB02
         AIF   ('&FLAGS' NE '' OR '&ECB' NE '' OR '&RUA' NE            *
               '' OR '&VOLID' NE '' OR '&CSN' NE ''                    *
               OR '&VVICEXT' NE '').WARN                       @Y30LB02
         AGO   .LIST1                                          @Y30LB02
.*                                                             @Y30LB02
.WARN    MNOTE 4,'  ICB603I - WARNING-ONLY MF AND TYPE '       @Y30LB02
         MNOTE 4,'  PARAMETERS ARE VALID FOR LIST FORM '       @Y30LB02
.*                                                             @Y30LB02
.LIST1   AIF   ('&TYPE' EQ 'CVOL').COPYV    COPY VOL REQ?      @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC COPY CARTRIDGE MACRO--INITIALIZED LIST FORM   @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
CCRTLEN  DC    F'32'               LENGTH OF CCRT REQ BLK      @Y30LB02
CCRTOPC  DC    XL1'28'             COPY CARTRIDGE OPCODE       @Y30LB02
CCRTRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
CCRTFLG  DC    XL2'0000'           2-BYTE FLAGS AREA           @Y30LB02
CCRTVOL  DC    XL6'0000'           6-BYTE VOLID AREA           @Y30LB02
CCRTASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
CCRTECB  DC    XL4'00000000'       4-BYTE AREA FOR ECB         @Y30LB02
CCRTCSN  DC    XL12'0000000000'    12-BYTE CSN AREA            @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC COPY CARTRIDGE MACRO-UNINITIALIZED LIST FORM  @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBCOVC  DSECT                                                 @Y30LB02
CCRTLEN  DS    F                   LEN OF CCRT REQ 20 HEX      @Y30LB02
CCRTOPC  DS    XL1                 COPY CART OPCODE 28 HEX     @Y30LB02
CCRTRES1 DS    XL1                 1-BYTE RESERVED FIELD       @Y30LB02
CCRTFLG  DS    XL2                 2-BYTE FLAGS FIELD          @Y30LB02
CCRTVOL  DS    CL6                 6-BYTE VOLID FIELD          @Y30LB02
CCRTASID DS    XL2                 2-BYTE ASID FIELD           @Y30LB02
CCRTECB  DS    A                   4-BYTE ECB FIELD            @Y30LB02
CCRTCSN  DS    CL12                12-BYTE CSN FIELD           @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.COPYV   ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS2  DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC COPY VOLUME MACRO--INITIALIZED LIST FORM      @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
CVOLLEN  DC    F'40'               LENGTH OF CVOL REQ BLK      @Y30LB02
CVOLOPC  DC    XL1'2A'             COPY VOLUME OPCODE          @Y30LB02
CVOLRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
CVOLFLG  DC    XL2'0000'           2-BYTE FLAGS AREA-ZERO      @Y30LB02
CVOLVOL  DC    XL6'0000'           6 BYTE VOLID AREA           @Y30LB02
CVOLASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
CVOLECB  DC    XL4'00000000'       4-BYTE ECB AREA             @Y30LB02
CVOLCSN  DC    XL12'000000'        12-BYTE CSN AREA            @Y30LB02
CVOLRUA  DC    XL2'0000'           2-BYTE RUA AREA             @Y30LB02
CVOLRES2 DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
CVOLVEXT DC    XL4'00000000'       4-BYTE VVICEXT AREA         @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.LISTDS2 ANOP                                                  @Y30LB02
*  MACMEAN  MSSC COPY VOLUME MACRO--UNINITIALIZED LIST FORM    @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBCOVC1 DSECT                                                 @Y30LB02
CVOLLEN  DS    F                   LEN CVOL REQ BLK 28 HEX     @Y30LB02
CVOLOPC  DS    XL1                 COPY VOL OPCODE 2A HEX      @Y30LB02
CVOLRES1 DS    XL1                 1-BYTE RESERVED FIELD       @Y30LB02
CVOLFLG  DS    XL2                 2-BYTE FLAGS FIELD-ZERO     @Y30LB02
CVOLVOL  DS    CL6                 6 BYTE VOLID FIELD          @Y30LB02
CVOLASID DS    XL2                 2-BYTE ASID FIELD           @Y30LB02
CVOLECB  DS    A                   4-BYTE ECB ADDR             @Y30LB02
CVOLCSN  DS    CL12                12-BYTE CSN FIELD           @Y30LB02
CVOLRUA  DS    XL2                 2-BYTE RUA FIELD            @Y30LB02
CVOLRES2 DS    XL2                 2-BYTE RESERVED FIELD       @Y30LB02
CVOLVEXT DS    A                   4-BYTE VVICEXT FIELD        @Y30LB02
         MEXIT                                                 @Y30LB02
.*       PROCESSING OF THE 'EXECUTE' MACRO FORM                @Y30LB02
.*                                                             @Y30LB02
.EFORM   ANOP                                                  @Y30LB02
         AIF   (N'&MF EQ 2).PARMOK  LIST NAME MUST BE SPEC-    @Y30LB02
.*                                 FIED, OTHERWISE ERROR.      @Y30LB02
         MNOTE 12,'  ICB613I - MISSING REQ BLK NAME OR MORE '  @Y30LB02
         MNOTE 12,'  THAN 2 SUBPARAMETERS FOR MF '             @Y30LB02
&ERSW    SETB  1                                               @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.PARMOK  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC COPY VOLUME/CARTRIDGE MACRO--EXECUTE FORM     @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)           LD ADDR OF REQUEST BLK      @Y30LB02
.*                                 USING IHBINNRA MACRO        @Y30LB02
         AIF   ('&TYPE' EQ 'CVOL').CVOL1     TYPE COPYV?       @Y30LB02
         LA    0,32                   LD LENGTH OF CCRT        @Y30LB02
         ST    0,0(1)                 STORE LENGTH             @Y30LB02
         MVI   0,X'28'                LOAD CCRT OPCODE         @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.CVOL1   ANOP                                                  @Y30LB02
         LA    0,40                   LD LENG OF CVOL REQ      @Y30LB02
         ST    0,0(1)                 STORE LENGTH             @Y30LB02
         MVI   0,X'2A'                LOAD CVOL OPCODE         @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF 'STANDARD' MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF   ('&FLAGS' NE '').CKECB       FLAGS SPECIFIED?   @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.CKECB   AIF   ('&ECB' NE '').CKRUA        ECB SPECIFIED?      @Y30LB02
         MNOTE 12,'  ICB605I - ECB MUST BE SPECIFIED '         @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.CKRUA   AIF   ('&TYPE' EQ 'CCRT').CKVOLD   BRCH IF CCRT       @Y30LB02
         AIF   ('&RUA' NE '').SFORM1        RUA SPECIFIED?     @Y30LB02
         MNOTE 12,'  ICB616I - RUA MUST BE SPECIFIED FOR '     @Y30LB02
         MNOTE 12,'  STANDARD FORM MACRO '                     @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.CKVOLD  AIF   ('&VOLID' NE '').SFORM1     VOLID SPECIFIED?    @Y30LB02
         MNOTE 12,'  ICB610I - VOLID MUST BE SPECIFIED FOR '   @Y30LB02
         MNOTE 12,'  STANDARD FORM MACRO '                     @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.SFORM1  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC COPY VOLUME/CARTRIDGE MACRO--STANDARD FORM    @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP  0,4                                             @Y30LB02
&SYMBOL  BAL   1,&LBL              BRCH AROUND REQ BLK         @Y30LB02
         AIF   ('&TYPE' EQ 'CVOL').CVOL2           COPYVOL?    @Y30LB02
CCRTLEN  DC    A(&LBL-*)           CCRT LENGTH FIELD           @Y30LB02
CCRTOPC  DC    XL1'28'             COPY CARTRIDGE OPCODE       @Y30LB02
CCRTRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
CCRTFLG  DC    XL2'0000'           2-BYTE FLAGS AREA           @Y30LB02
CCRTVOL  DC    XL6'0000'           6-BYTE VOLID AREA           @Y30LB02
CCRTASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
CCRTECB  DC    XL4'00000000'       4-BYTE AREA FOR ECB         @Y30LB02
CCRTCSN  DC    XL12'0000000000'    12-BYTE CSN AREA            @Y30LB02
&LBL     EQU   *                                               @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.CVOL2   ANOP                                                  @Y30LB02
CVOLLEN  DC    A(&LBL-*)           CVOL LENGTH FIELD           @Y30LB02
CVOLOPC  DC    XL1'2A'             COPY VOLUME OPCODE          @Y30LB02
CVOLRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
CVOLFLG  DC    XL2'0000'           2-BYTE FLAGS AREA-ZERO      @Y30LB02
CVOLVOL  DC    XL6'0000'           6 BYTE VOLID AREA           @Y30LB02
CVOLASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
CVOLECB  DC    XL4'00000000'       4-BYTE ECB AREA             @Y30LB02
CVOLCSN  DC    XL12'000000'        12-BYTE CSN AREA            @Y30LB02
CVOLRUA  DC    XL2'0000'           2-BYTE RUA AREA             @Y30LB02
CVOLRES2 DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
CVOLVEXT DC    XL4'0000'           2-BYTE VVICEXT AREA         @Y30LB02
&LBL     EQU   *                                               @Y30LB02
.*                                                             @Y30LB02
.*       PROCESS REQUEST BLOCK FOR STANDARD & EXECUTE FORMS    @Y30LB02
.*                                                             @Y30LB02
.PROCES  AIF   (&ERSW).FINISH                                  @Y30LB02
         AIF   ('&FLAGS' EQ '').VOLID       FLAGS SPECIFIED?   @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').REGF FLAGS IN REGFORM?   @Y30LB02
         MVC   6(2,1),&FLAGS          MOVE FLAGS TO REQ BLK    @Y30LB02
         AGO   .VOLID                 BR TO CHECK FOR VOLID    @Y30LB02
.*                                                             @Y30LB02
.REGF    ANOP                                                  @Y30LB02
         MVC   6(2,1),0(&FLAGS(1))    REG-FORM-STORE FLAGS     @Y30LB02
.*                                                             @Y30LB02
.VOLID   AIF   ('&VOLID' EQ '').ECB          VOLID SPECIFIED?  @Y30LB02
         AIF   ('&VOLID'(1,1) EQ '(').SREG   REG-FORM?         @Y30LB02
         MVC   8(6,1),&VOLID          MOVE VOLID TO REQBLK     @Y30LB02
         AGO   .ECB                                            @Y30LB02
.*                                                             @Y30LB02
.SREG    ANOP                                                  @Y30LB02
         MVC   8(6,1),0(&VOLID(1))    REG-FORM--STORE VOLID    @Y30LB02
.*                                                             @Y30LB02
.ECB     AIF   ('&ECB' EQ '').CSN          ECB SPECIFIED?      @Y30LB02
         AIF   ('&ECB'(1,1) EQ '(').EREG   REG-FORM?           @Y30LB02
         LA    15,&ECB                LOAD R15 WITH ADDR       @Y30LB02
         ST    15,16(1)               ST ADDR IN ECB FIELD     @Y30LB02
         AGO   .CSN                                            @Y30LB02
.*                                                             @Y30LB02
.EREG    ANOP                                                  @Y30LB02
         ST    &ECB,16(1)             REG-FORM--STORE ECB      @Y30LB02
.CSN     AIF   ('&CSN' EQ '').RUA  IS CSN SPECIFIED            @Y30LB02
         AIF   ('&CSN'(1,1) EQ '(').CREG    REG-FORM           @Y30LB02
         MVC   20(12,1),&CSN          MOVE CSN TO REQBLK       @Y30LB02
         AIF   ('&TYPE' EQ 'CVOL').RUA     BRCH TO CHECK RUA   @Y30LB02
         AGO   .INVOKE                                         @Y30LB02
.*                                                             @Y30LB02
.CREG    ANOP                                                  @Y30LB02
         MVC   20(12,1),0(&CSN(1))    REG-FORM--STORE CSN      @Y30LB02
         AIF   ('&TYPE' EQ 'CVOL').RUA     BRCH TO CHECK RUA   @Y30LB02
         AGO   .INVOKE                                         @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.RUA     AIF   ('&TYPE' EQ 'CCRT').INVOKE    BR TO SVC IF CCRT @Y30LB02
         AIF   ('&RUA' EQ '').VEXT           BRCH IF RUA NULL  @Y30LB02
         AIF   ('&RUA'(1,1) EQ '(').UREG     REGISTER FORM?    @Y30LB02
         MVC   32(2,1),&RUA           MOVE RUA TO REQ BLK      @Y30LB02
         AGO   .VEXT                                           @Y30LB02
.*                                                             @Y30LB02
.UREG    ANOP                                                  @Y30LB02
         MVC   32(2,1),0(&RUA(1))     REG-FORM, STORE RUA      @Y30LB02
.*                                                             @Y30LB02
.VEXT    AIF   ('&VVICEXT' EQ '').INVOKE   VVICEXT SPECIFIED?  @Y30LB02
         AIF   ('&VVICEXT'(1,1) EQ '(').VEREG    REG FORM?     @Y30LB02
         LA    15,&VVICEXT            LOAD ADDRESS IN R15      @Y30LB02
         ST    15,36(1)               STORE ADDRESS            @Y30LB02
         AGO   .INVOKE                                         @Y30LB02
.*                                                             @Y30LB02
.VEREG   ANOP                                                  @Y30LB02
         ST    &VVICEXT,36(1)         REG-FORM, STORE VVICEXT  @Y30LB02
.*                                                             @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC   126                    INVOKE SVC               @Y30LB02
.FINISH  MEND                                                  @Y30LB02
**/
*   ICBCOVC:  MACRO KEYS(MF,TYPE,FLAGS,VOLID,RUA,ECB,CSN,
*                     VVICEXT);                            /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*            EXTERNAL DECLARES                             @Y30LB02*/
*        DCL CVTESTR FIXED EXT;  /*INVOCATION COUNTER        @Y30LB02*/
*        DCL CVOLTEST FIXED EXT; /*CTR FOR STANDARD FORM     @Y30LB02*/
*        DCL CCRTTEST FIXED EXT;  /*CTR FOR  CCRT S-FORM     @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*            INTERNAL DECLARES                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL CTR        FIXED;        /*CTR FOR LIST PARAMETERS   @Y30LB02*/
*   DCL ERSW       FIXED;        /*ERROR COND SWITCH         @Y30LB02*/
*   DCL CVOLCOD    CHAR;         /*COPYV OPCODE              @Y30LB02*/
*   DCL CCRTCOD    CHAR;         /*COPYC OPCODE              @Y30LB02*/
*   DCL RETCODE    FIXED;        /*RETURN CODE AREA          @Y30LB02*/
*   DCL CVLEN      CHAR;         /*LENGTH OF CVOL REQ BLOCK  @Y30LB02*/
*   DCL CCLEN      CHAR;         /*LENGTH OF CCRT REQ BLOCK  @Y30LB02*/
*        CVOLCOD='2A';           /*COPY VOLUME OPCODE        @Y30LB02*/
*        CCRTCOD='28';           /*COPY CARTRIDGE OPCODE     @Y30LB02*/
*        RETCODE=0;              /*INITIALIZE RETURN CODE    @Y30LB02*/
*        CCLEN='20';             /*COPY CARTRIDGE LENGTH     @Y30LB02*/
*        ERSW = 0;               /*INITIALIZE ERROR SWITCH   @Y30LB02*/
*        CVLEN='28';             /*COPY VOLUME LENGTH        @Y30LB02*/
*        CTR = 0;                /*INITIALIZE PARM COUNTER   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*            CHECK FOR VALID TYPE SPECIFICATION            @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE='' THEN              /*TYPE SPECIFIED?           @Y30LB02*/
*     DO;                        /*NO,PRINT ERROR MESSAGE    @Y30LB02*/
*        ERSW=1;                 /*SET ERROR SWITCH          @Y30LB02*/
*        ANS MSG('  ICB600I - TYPE MUST BE SPECIFIED')SKIP;/*@Y30LB02*/
*        RETCODE=12;             /*SET RETURN CODE           @Y30LB02*/
*        GO TO FINISH;           /*BRANCH,END PROCESSING     @Y30LB02*/
*     END;                       /*                          @Y30LB02*/
*   IF ERSW=1 THEN               /*IS ERROR SWITCH SET       @Y30LB02*/
*        GO TO FINISH;           /*YES,BRCH,END PROCESSING   @Y30LB02*/
*   IF TYPE(1)='CVOL' THEN       /*TYPE COPY VOL?            @Y30LB02*/
*        GO TO START;            /*VALID TYPE,BRANCH         @Y30LB02*/
*   IF TYPE(1) = 'CCRT' THEN     /*TYPE COPY CART?           @Y30LB02*/
*        GO TO START;            /*VALID TYPE,CONTINUE       @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      INVALID 'TYPE' WILL CREATE THE FOLLOWING ERR MSGS   @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ERSW=1;                       /*SET ERROR SWITCH         @Y30LB02*/
*   ANS MSG('  ICB601I - TYPE IS INCORRECTLY'
*           ' SPECIFIED')SKIP;                             /*@Y30LB02*/
*   RETCODE=12;               /*SET RETURN CODE TO 12        @Y30LB02*/
*   IF ERSW=1 THEN            /*CHECK ERROR SWITCH           @Y30LB02*/
*   GO TO FINISH;             /*IF SET,BRCH TO END           @Y30LB02*/
*/*                                                          @Y30LB02*/
*START:
*     IF CVTESTR = 0 THEN    /*REG 1 DECLARED?               @Y30LB02*/
*      DO;                   /*NO,DECLARE IT                 @Y30LB02*/
*        ANS('DCL CVOLR1 REG(1) PTR;/*DECLARE R1 - '
*        'ADDRESS OF REQUEST BLOCK @Y30LB02*/')SKIP;
*        CVTESTR=1;          /*INCREM REG COUNTER            @Y30LB02*/
*      END;                  /*                              @Y30LB02*/
*   IF MF(1) ^= 'L' THEN     /*LIST FORM REQUEST?            @Y30LB02*/
*        GO TO CKFORM;       /*NO,BRCH,CK FOR OTHER FORM     @Y30LB02*/
*   IF MF(2) ^= '' THEN      /*LIST NAME SPECIFIED?          @Y30LB02*/
*        GO TO LISTFORM;     /*YES,BRCH,PROCESS REQUEST      @Y30LB02*/
*   ERSW=1;                  /*NO,SET ERROR SWITCH           @Y30LB02*/
*   ANS MSG('  ICB602I - A NAME FOR THE '
*     'REQUEST BLOCK MUST BE SPECIFIED IN MF(2)')SKIP;     /*@Y30LB02*/
*   RETCODE=12;             /*SET RETURN CODE TO 12          @Y30LB02*/
*   IF ERSW=1 THEN          /*ERROR SWITCH SET?              @Y30LB02*/
*   GO TO FINISH;           /*YES,BRCH,END PROCESSING        @Y30LB02*/
*/*                                                          @Y30LB02*/
*LISTFORM:
*/********************************************************   @Y30LB02*/
*/*  CHECK FOR ILLEGAL PARAMETERS AND PRINT OUT DECLARES     @Y30LB02*/
*/********************************************************   @Y30LB02*/
*   IF FLAGS ^= '' THEN     /*FLAGS PARAMETER SPECIFIED?     @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF VOLID ^= '' THEN     /*VOLID PARAMETER SPECIFIED?     @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF RUA ^= '' THEN       /*RUA SPECIFIED?                 @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF ECB ^= '' THEN       /*ECB PARAMETER SPECIFIED?       @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF CSN ^= '' THEN       /*CSN PARAMETER SPECIFIED?       @Y30LB02*/
*        CTR = CTR + 1;     /*YES INCREMENT COUNTER          @Y30LB02*/
*   IF VVICEXT ^= '' THEN   /*VVICEXT SPECIFIED?             @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF CTR > 0 THEN         /*IS COUNTER GT ZERO?            @Y30LB02*/
*     DO;                   /*YES,PRINT WARNING MSG          @Y30LB02*/
*        RETCODE=4;         /*SET RETURN CODE TO 4           @Y30LB02*/
*        ANS MSG('  ICB603I - WARNING-ONLY MF AND '
*             'TYPE PARAMETERS ARE VALID FOR LIST '
*             'FORM ')SKIP;                                /*@Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*/*                                                          @Y30LB02*/
*    IF MF(3) ^= '' THEN    /*PLS ATTRIBUTE SPECIFIED?       @Y30LB02*/
*       GO TO ATTRLST;      /*YES,BRANCH                     @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='CVOL' THEN   /*TYPE CVOL?                    @Y30LB02*/
*     DO;                    /*PRINT CVOL LIST FORM          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC COPY VOLUME MACRO       '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2) '  STATIC LOCAL,'
*        ' /*COPY VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CVOLLEN  FIXED(31)INIT('QUOTE
*        ('28')'X),/*LENGTH OF REQBLK @Y30LB02*/')SKIP;
*        ANS('    2  CVOLOPCD CHAR(1)INIT('QUOTE('2A')
*        'X),/*COPY VOLUME OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  CVOLFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  CVODASCR  BIT(1), /*DASD TO '
*        'CARTRIDGE ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRDAS  BIT(1),/*CARTRIDGE '
*        'TO DASD ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRCR  BIT(1),/*CARTRIDGE '
*        'TO CARTRIDGE ATTRIBUTE TRANS VOL @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRCRV BIT(1),/*CARTRIDGE '
*        'TO CARTRIDGE ATTRIBUTE VOL INV LIST @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(12),'
*        ' /*TWELVE BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  CVOLID  CHAR(6) INIT('QUOTE
*        ('000000000000')'X), /*VOLUME ID  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLASID CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLECB  FIXED(31) INIT(0),'
*        ' /*EVENT CONTROL BLOCK  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLCSN CHAR(12),/*CSN AREA @Y30LB02*/')SKIP;
*        ANS('       3  *(12) CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CSN AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRUA  FIXED(15) INIT(0),'
*        ' /*REAL UNIT ADDRESS  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRES2 CHAR(2) INIT('QUOTE
*        ('0000')'X),/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLVEXT FIXED(31) INIT(0);'
*        '/*MSVC EXTENSION AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;        /*BRANCH TO END                @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*  ELSE                       /*COPY CART REQUEST            @Y30LB02*/
*     DO;                     /*PRINT COPY CART REQBLK       @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC COPY CARTRIDGE MACRO    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*           '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2) '  STATIC LOCAL,'
*        ' /*COPY CARTRIDGE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CCRTLEN  FIXED(31)INIT('QUOTE('20')
*        'X),/*LENGTH OF REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CCRTOPCD CHAR(1)INIT('QUOTE('28')
*        'X),/*COPY CARTRIDGE OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  CCRTRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  CCRTFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  CCRTCRT1  BIT(1), /*CART 1 OF 2 '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CCRTCRT2  BIT(1), /*CART 2 OF 2 '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(14),'
*        ' /*FOURTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  CCRTVOL  CHAR(6) INIT('QUOTE
*        ('000000000000')'X),/*VOLID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CCRTASID CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CCRTECB  FIXED(31) INIT(0),'
*        ' /*EVENT CONTROL BLOCK  @Y30LB02*/')SKIP;
*        ANS('    2  CCRTCSN CHAR(12),/*CSN AREA @Y30LB02*/')SKIP;
*        ANS('       3  *(12) CHAR(1)INIT((12)'QUOTE
*        ('00')'X);/*INIT CSN AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;        /*BRANCH TO END                @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*ATTRLST:
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='CVOL' THEN    /*COPY VOL REQUEST?            @Y30LB02*/
*     DO;                     /*CVOL UNINIT REQUEST BLOCK    @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC COPY VOLUME MACRO      '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2)' 'MF(3)','
*        ' /*COPY VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CVOLLEN  FIXED(31),/*LENGTH'
*        ' OF REQ BLOCK = 28 BYTES HEX @Y30LB02*/')SKIP;
*        ANS('    2  CVOLOPCD CHAR(1),'
*        '/*COPY VOLUME OPCODE = 2A HEX @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRES1 CHAR(1),'
*        ' /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  CVOLFLG BIT(16),'
*        ' /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  CVODASCR  BIT(1), /*DASD TO '
*        'CARTRIDGE ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRDAS  BIT(1),/*CARTRIDGE '
*        'TO DASD ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRCR  BIT(1),/*CARTRIDGE '
*        'TO CARTRIDGE ATTRIBUTE TRANS VOL @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRCRV BIT(1),/*CARTRIDGE '
*        'TO CARTRIDGE ATTRIBUTE VOL INV LIST @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(12),'
*        ' /*THIRTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  CVOLID  CHAR(6),'
*        ' /*VOLUME ID  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLASID CHAR(2) ,'
*        '/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLECB  FIXED(31) ,'
*        ' /*EVENT CONTROL BLOCK  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLCSN CHAR(12),/*CSN AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRUA  FIXED(15),'
*        ' /*REAL UNIT ADDRESS  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRES2 CHAR(2) ,'
*        '/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLVEXT  FIXED(31) ;'
*        ' /*MSVC EXTENTION AREA  @Y30LB02*/')SKIP;
*        GO TO FINISH;        /*BRANCH TO END                @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*  ELSE                       /*COPY CARTRIDGE REQUEST       @Y30LB02*/
*     DO;                     /*COPY CART REQ BLOCK          @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC COPY CARTRIDGE MACRO     '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2)' 'MF(3)','
*        ' /*COPY CARTRIDGE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CCRTLEN  FIXED(31),/*LENGTH OF'
*        ' REQUEST BLOCK = 20 HEX @Y30LB02*/')SKIP;
*        ANS('    2  CCRTOPCD CHAR(1),'
*        '/*COPY CARTRIDGE OPCODE = 28 HEX @Y30LB02*/')SKIP;
*        ANS('    2  CCRTRES1 CHAR(1),'
*        ' /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  CCRTFLG BIT(16),/*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  CCRTCRT1  BIT(1), /*CART 1 OF 2 '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CCRTCRT2  BIT(1), /*CART 2 OF 2 '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(14),'
*        ' /*FOURTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  CCRTVOL  CHAR(6),'
*        '/*VOLID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CCRTASID CHAR(2),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CCRTECB  FIXED(31),'
*        ' /*EVENT CONTROL BLOCK  @Y30LB02*/')SKIP;
*        ANS('    2  CCRTCSN CHAR(12);/*CSN AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;        /*BRANCH TO END                @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                        /*@Y30LB02*/
*/*      CHECK FOR EXECUTE FORM SPECIFICATION              /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*CKFORM:
*   IF MF(1) ^= 'E' THEN       /*EXECUTE FORM SPECIFIED?     @Y30LB02*/
*        GO TO SFORM;          /*NO,CK FOR STANDARD          @Y30LB02*/
*   IF MF(2)='' THEN           /*2ND SUB-PARM SPECIFIED?     @Y30LB02*/
*     DO;                      /*PRINT ERROR MESSAGE         @Y30LB02*/
*        ANS MSG('  ICB612I - MF(2) MUST '
*             'CONTAIN REQ BLK NAME IF '
*             'EXEC MACRO FORM REQUESTED')SKIP;            /*@Y30LB02*/
*        RETCODE=12;           /*SET ERROR RETURN CODE       @Y30LB02*/
*        ERSW = 1;             /*SET ERROR SWITCH            @Y30LB02*/
*        GO TO COMPROC;        /*BRANCH TO CK ERROR SWITCH   @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                        /*@Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC COPY VOLUME/CARTRIDGE MACRO '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*    IF MF(3) = 'COMPLETE' THEN   /*REQUEST TO ZERO BLOCK?   @Y30LB02*/
*      DO;                     /*                            @Y30LB02*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'
*        '/*ZERO OUT REQUEST BLOCK @Y30LB02*/')SKIP;
*      END;                    /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('RFY(CVOLR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('CVOLR1=ADDR('MF(2)'); /*R1 PTR'
*        ' TO LIST  @Y30LB02*/')SKIP;
*        GO TO COMPROC;       /*BRANCH TO CK PARAMETERS      @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN       /* FORM STANDARD?              @Y30LB02*/
*     DO;                     /*NO,PRINT ERROR MESSAGE       @Y30LB02*/
*        ERSW = 1;            /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER '
*             'SPECIFIED, MUST BE L, E, OR NULL')SKIP;     /*@Y30LB02*/
*        GO TO COMPROC;       /*BRANCH,CK ERROR SWITCH       @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS = '' THEN        /*FLAGS SPECIFIED?             @Y30LB02*/
*     DO;                     /*NO,PROCESS ERROR MESSAGE     @Y30LB02*/
*        ERSW=1;              /*SET THE ERROR SWITCH         @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE TO 12        @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO COMPROC;       /*BRANCH TO CK ERROR SWITCH    @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF VOLID = '' THEN        /*VOLID SPECIFIED?             @Y30LB02*/
*    IF TYPE(1) = 'CCRT' THEN /*TYPE CCRT?                   @Y30LB02*/
*     DO;                     /*NO,PRINT ERROR MESSAGE       @Y30LB02*/
*        ERSW=1;              /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB610I - VOLID MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO COMPROC;       /*BRANCH TO CK ERROR SWITCH    @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF RUA = '' THEN        /*VOLID SPECIFIED?               @Y30LB02*/
*    IF TYPE(1) = 'CVOL' THEN  /*NO,COPY VOLUME?             @Y30LB02*/
*     DO;                     /*YES,PRINT ERROR MESSAGE      @Y30LB02*/
*        ERSW=1;              /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB616I - RUA MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO ')SKIP;                  /*@Y30LB02*/
*        GO TO COMPROC;       /*BRANCH TO CK ERROR SWITCH    @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*   IF ECB = '' THEN          /*ECB SPECIFIED                @Y30LB02*/
*     DO;                     /*NO,PRINT ERROR MESSAGE       @Y30LB02*/
*        ERSW=1;              /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB605I - ECB MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO COMPROC;        /*BRANCH TO CK ERROR SWITCH   @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='CVOL' THEN     /*TYPE COPY VOLUME?           @Y30LB02*/
*     IF CVOLTEST => 1 THEN    /*STD FORM INVOKED BEFORE?    @Y30LB02*/
*      DO;                     /*YES,DON'T PRINT DECLARES    @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC COPY VOLUME MACRO        '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('RFY(CVOLR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('CVOLR1=ADDR(CVOLLEN);/*PTR TO REQBLK    @Y30LB02*/')SKIP;
*        GO TO COMPROC;       /*BRANCH TO CK PARAMETERS      @Y30LB02*/
*      END;                   /*                             @Y30LB02*/
*/*                                                        /*@Y30LB02*/
*     IF TYPE(1) = 'CVOL' THEN  /*COPY VOLUME                @Y30LB02*/
*      DO;                   /*PRINT DECLARES                @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC COPY VOLUME MACRO       '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*OUTPUT FOR THE STANDARD FORM MACRO        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(CVOLR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('CVOLR1=ADDR(CVOLLEN);/*PTR REQUEST BLK  @Y30LB02*/')SKIP;
*        ANS('DCL 1  CVOLLST  STATIC LOCAL,'
*        ' /*COPY VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CVOLLEN  FIXED(31)INIT('QUOTE('28')
*        'X),/*LENGTH OF REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CVOLOPCD CHAR(1)INIT('QUOTE('2A')
*        'X),/*COPY VOLUME OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  CVOLFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  CVODASCR  BIT(1), /*DASD TO '
*        'CARTRIDGE ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRDAS  BIT(1),/*CARTRIDGE '
*        'TO DASD ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRCR  BIT(1),/*CARTRIDGE '
*        'TO CARTRIDGE ATTRIBUTE TRAN VOL @Y30LB02*/')SKIP;
*        ANS('     3  CVOCRCRV BIT(1),/*CARTRIDGE '
*        'TO CARTRIDGE ATTRIBUTE VOL INVL @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(12),'
*        ' /*TWELVE BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  CVOLID  CHAR(6) INIT('QUOTE
*        ('000000000000')'X), /*VOLUME ID  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLASID CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLECB  FIXED(31) INIT(0),'
*        ' /*EVENT CONTROL BLOCK  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLCSN CHAR(12),/*CSN AREA @Y30LB02*/')SKIP;
*        ANS('       3  *(12) CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CSN AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRUA  FIXED(15) INIT(0),'
*        ' /*REAL UNIT ADDRESS  @Y30LB02*/')SKIP;
*        ANS('    2  CVOLRES2 CHAR(2) INIT('QUOTE
*        ('0000')'X),/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  CVOLVEXT  FIXED(31) INIT(0);'
*        ' /*MSVC EXTENSION AREA  @Y30LB02*/')SKIP;
*        CVOLTEST=CVOLTEST+1; /*INCREM COUNTER               @Y30LB02*/
*        GO TO COMPROC;    /*BRANCH TO CK PARAMETERS         @Y30LB02*/
*     END;                /*                                 @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                     /*PROCESS COPY CARTRIDGE        @Y30LB02*/
*     IF CCRTTEST => 1 THEN  /*STD FM INVOKED BEFORE?        @Y30LB02*/
*      DO;                   /*YES,DON'T PRINT DCLS          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC COPY CARTRIDGE MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(CVOLR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('CVOLR1=ADDR(CCRTLEN);/*PTR TO BLOCK @Y30LB02*/')SKIP;
*        GO TO COMPROC;                                    /*@Y30LB02*/
*      END;                                                /*@Y30LB02*/
*     IF CCRTTEST=0 THEN      /*                             @Y30LB02*/
*     DO;                                                  /*@Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC COPY CARTRIDGE MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE STANDARD FORM  '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(CVOLR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('CVOLR1=ADDR(CCRTLEN);/*R1 PTR TO BLOCK @Y30LB02*/')SKIP;
*        ANS('DCL 1 CCRTLST  STATIC LOCAL,'
*        ' /*COPY CARTRIDGE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CCRTLEN  FIXED(31)INIT('QUOTE
*        ('20')'X),/*LENGTH OF REQ BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  CCRTOPCD CHAR(1)INIT('QUOTE('28')
*        'X),/*COPY CARTRIDGE OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  CCRTRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  CCRTFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  CCRTCRT1  BIT(1), /*CART 1 OF 2 '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  CCRTCRT2  BIT(1), /*CART 2 OF 2 '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(14),'
*        ' /*FOURTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  CCRTVOL  CHAR(6) INIT('QUOTE
*        ('000000000000')'X),/*VOLID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CCRTASID CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  CCRTECB  FIXED(31) INIT(0),'
*        ' /*EVENT CONTROL BLOCK  @Y30LB02*/')SKIP;
*        ANS('    2  CCRTCSN CHAR(12),/*CSN AREA @Y30LB02*/')SKIP;
*        ANS('       3  *(12) CHAR(1)INIT((12)'QUOTE
*        ('00')'X);/*INIT CSN AREA @Y30LB02*/')SKIP;
*        CCRTTEST=CCRTTEST+1; /*INCREMENT CTR                @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*COMPROC:
*   IF ERSW =1 THEN          /*ERROR SWITCH SET?             @Y30LB02*/
*     GO TO FINISH;          /*YES,BRANCH TO END             @Y30LB02*/
*   IF TYPE(1)='CVOL' THEN  /*TYPE CVOL?                     @Y30LB02*/
*    DO;                    /*OUTPUT LEN AND OPC             @Y30LB02*/
*     ANS('CVOLLEN=' QUOTE(CVLEN) 'X; /*LENGTH OF '
*      'COPY VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*     ANS('CVOLOPCD=' QUOTE(CVOLCOD) 'X;/*COPYVL '
*     ' OPCODE @Y30LB02*/')SKIP;
*    END;                 /*                                 @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                 /*CCRT LEN AND OPC                  @Y30LB02*/
*    DO;                 /*                                  @Y30LB02*/
*     ANS('CCRTLEN=' QUOTE(CCLEN) 'X; /*LENGTH'
*    ' COPY CARTRIDGE REQUEST BLOCK @Y30LB02*/')SKIP;
*     ANS('CCRTOPCD=' QUOTE(CCRTCOD) 'X;/*OPCODE FOR'
*    ' COPY CARTRIDGE LIST @Y30LB02*/')SKIP;
*    END;                /*                                  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='CVOL' THEN  /*TYPE COPY VOL?                 @Y30LB02*/
*    IF FLAGS ^= '' THEN    /*FLAGS PARAMETER SPECIFIED      @Y30LB02*/
*     ANS('CVOLFLG=' FLAGS '; /*VALUE OF FLAGS    @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='CCRT' THEN    /*COPY CARTRIDGE?              @Y30LB02*/
*    IF FLAGS ^= '' THEN      /*FLAGS SPECIFIED?             @Y30LB02*/
*     ANS('CCRTFLG=' FLAGS '; /*VALUE OF FLAGS    @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VOLID ^= '' THEN      /*VOLID SPECIFIED?              @Y30LB02*/
*    IF TYPE(1) = 'CVOL' THEN    /*COPY VOLUME?              @Y30LB02*/
*     ANS('CVOLID=' VOLID '; /*VALUE OF VOLID @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VOLID ^= '' THEN     /*VOLID SPECIFIED?               @Y30LB02*/
*    IF TYPE(1) = 'CCRT' THEN  /*COPY CARTRIDGE?             @Y30LB02*/
*     ANS('CCRTVOL= ' VOLID ';/*VALUE OF VOLID    @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF CSN ^= '' THEN    /*CSN SPECIFIED?                    @Y30LB02*/
*    IF TYPE(1) = 'CVOL' THEN   /*TYPE COPY VOLUME?          @Y30LB02*/
*     ANS('CVOLCSN=' CSN '; /*VALUE OF CSN @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF CSN ^= '' THEN
*    IF TYPE(1) = 'CCRT' THEN  /*COPY CARTRIDGE?             @Y30LB02*/
*     ANS('CCRTCSN= ' CSN ';/*VALUE OF CSN @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF ECB ^= ''  THEN      /*ECB PARAMETER SPECIFIED        @Y30LB02*/
*     IF TYPE(1) = 'CCRT' THEN
*        ANS('CCRTECB=ADDR' ECB';/*ADDRESS OF ECB'
*        ' @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF ECB ^= ''  THEN
*     IF TYPE(1) = 'CVOL' THEN
*        ANS('CVOLECB=ADDR' ECB';/*ADDRESS OF ECB'
*        ' @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF RUA ^= '' THEN      /*RUA PARAMETER SPECIFIED?        @Y30LB02*/
*    IF TYPE(1) = 'CVOL' THEN
*     ANS('CVOLRUA=' RUA '; /*VALUE OF RUA @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VVICEXT ^= ''  THEN  /*MSVC EXTENSION?                @Y30LB02*/
*     IF TYPE(1) = 'CVOL' THEN
*        ANS('CVOLVEXT=ADDR'VVICEXT';/*ADDRESS OF '
*        'VVICEXT @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*     ANS('SVC (126);/*INVOKE THE SVC @Y30LB02*/')SKIP;
*     ANS('RFY  CVOLR1 UNRSTD;/*UNRESTRICT REG 1 @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:  RETURN CODE(RETCODE);                            /*@Y30LB02*/
*         %END;                                            /*@Y30LB02*/
./ ADD NAME=ICBDEFV
* %/*   START OF SPECIFICATIONS****                            @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBDEFV                                   @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = DEFINE VOLUME MACRO                  @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = REQUEST VIRTUAL VOLUMES BE DEFINED BY        @Y30LB02
.*                THE MSC                                      @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB AND DEF                            @Y30LB02
.*                                                             @Y30LB02
.*02  REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS   @Y30LB02
.*                              BY MACROS: R0,R1,R14, AND R15  @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS2 AND ASSEMBLER                        @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBDEFV                                 @Y30LB02
.*                                                             @Y30LB02
.*02     PURPOSE = A REQUEST TO DEFINE A VOLUME IS             @Y30LB02
.*       ISSUED WHENEVER ONE OF THE FOLLOWING IS TO            @Y30LB02
.*       BE PERFORMED:                                         @Y30LB02
.*          DEFINE A NEW VIRTUAL VOLUME.                       @Y30LB02
.*          ELIMINATE A VIRTUAL VOLUME.                        @Y30LB02
.*          RENAME A VIRTUAL VOLUME.                           @Y30LB02
.*          DESIGNATE VOLUME FLAGS                             @Y30LB02
.*          ACTIVATE A VOLUME.                                 @Y30LB02
.*          DEACTIVATE A VOLUME.                               @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE = SVC 126                                     @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT                                                    @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*MACRO SYNTAX                                                 @Y30LB02
.*                                                             @Y30LB02
.*LIST FORM                                                    @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBDEFV  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*STANDARD FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBDEFV  ECB=ADDR/(R)          VOLID=ADDR/(R)                @Y30LB02
.*         FLAGS=ADDR/(R)        CSN1=ADDR/(R)                 @Y30LB02
.*                               LIBID=ADDR/(R)                @Y30LB02
.*                               CSN2=ADDR/(R)                 @Y30LB02
.*                               NVOLID=ADDR/(R)               @Y30LB02
.*                               USDATA=ADDR/(R)               @Y30LB02
.*                               VVICEXT=ADDR/(R)              @Y30LB02
.*                                                             @Y30LB02
.*EXECUTE FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBDEFV  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                              VOLID=ADDR/(R)                 @Y30LB02
.*                              ECB=ADDR/(R)                   @Y30LB02
.*                              CSN1=ADDR/(R)                  @Y30LB02
.*                              CSN2=ADDR/(R)                  @Y30LB02
.*                              NVOLID=ADDR/(R)                @Y30LB02
.*                              USDATA=ADDR/(R)                @Y30LB02
.*                              VVICEXT=ADDR/(R)               @Y30LB02
.*                              LIBID=ADDR/(R)                 @Y30LB02
.*                              VOLFLG=ADDR/(R)                @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLICK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTIONS.                          @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*  LIBID - THE FIELD WHICH IDENTIFIES THE MSF ACCESSED.       @Y30LB02
.*   LIBID MUST BE SPECIFIED WITH THE CREATE ATTRIBUTE.        @Y30LB02
.*   THE FORMAT OF THE LIBID FIELD IS SHOWN BELOW:             @Y30LB02
.*                                                             @Y30LB02
.*    ---------------------------------                        @Y30LB02
.*     0  0  0  0  0  0  X  X                         @Y30LB02
.*    ---------------------------------                        @Y30LB02
.*                                                             @Y30LB02
.* BITS 0-5 ---------------------IGNORED-MUST BE SET TO ZERO   @Y30LB02
.*                                                             @Y30LB02
.* BITS 6-7 ---------------------- MAY BE SET TO 0,1,2, OR 3   @Y30LB02
.*                                                             @Y30LB02
.* FLAGS -  FLAGS:  THE FIELD WHICH INDICATES THE FUNCTION(S)  @Y30LB02
.* TO BE PERFORMED.  THE FORMAT OF THE FLAGS FIELD IS SHOWN    @Y30LB02
.* BELOW:                                                      @Y30LB02
.*    ---------------------------------                        @Y30LB02
.*     X  X  X  X  X  X  X  X                         @Y30LB02
.*    ---------------------------------                        @Y30LB02
.*                                                             @Y30LB02
.*         BIT 0-----------'1'B   CREATE VOLUME                @Y30LB02
.*                         '0'B   NO FUNCTION REQUESTED        @Y30LB02
.*                                                             @Y30LB02
.*         BIT 1-----------'1'B   ELIMINATE VOLUME             @Y30LB02
.*                         '0'B   NO FUNCTION REQUESTED        @Y30LB02
.*                                                             @Y30LB02
.*         BIT 2-----------'1'B   RENAME VOLUME                @Y30LB02
.*                         '0'B   NO FUNCTION REQUESTED        @Y30LB02
.*                                                             @Y30LB02
.*         BIT 3-----------'1'B   REPLACE VOLUME FLAGS         @Y30LB02
.*                         '0'B   NO FUNCTION REQUESTED        @Y30LB02
.*                                                             @Y30LB02
.*         BIT 4-----------'1'B   ELIMINATE TRANSIENT          @Y30LB02
.*                                VOLUME                       @Y30LB02
.*                         '0'B   NO FUNCTION REQUESTED        @Y30LB02
.*                                                             @Y30LB02
.*         BIT 5-----------'1'B   RENAME TRANSIENT             @Y30LB02
.*                                VOLUME                       @Y30LB02
.*                         '0'B  NO FUNCTION REQUESTED         @Y30LB02
.*                                                             @Y30LB02
.*        BIT 6-----------'1'B   ACTIVATE TRANSIENT            @Y30LB02
.*                               VOLUME                        @Y30LB02
.*                        '0'B   NO FUNCTION REQUESTED         @Y30LB02
.*                                                             @Y30LB02
.*         BIT 7-----------'1'B  DEACTIVATE VOLUME             @Y30LB02
.*                         '0'B  NO FUNCTION REQUESTED         @Y30LB02
.*                                                             @Y30LB02
.*   CREATE:   CAUSES A NEW VOLUME TO BE CREATED.  THE         @Y30LB02
.*   CARTRIDGE SERIAL NUMBERS (CSNS) MAY BE SPECIFIED IF       @Y30LB02
.*   SPECIFIC CARTRIDGES ARE DESIRED.  VOLID AND LIBID MUST    @Y30LB02
.*   BE SPECIFIED WITH CREATE.  AFTER THE VOLUME IS CREATED    @Y30LB02
.*   IT WILL HAVE AN ENTRY IN THE TRANSIENT LIST.  IF A CE     @Y30LB02
.*   FLAG IS SET A CSN MUST BE SUPPLIED AND MUST BE THE SAME   @Y30LB02
.*   FOR BOTH CSN1 AND CSN2.                                   @Y30LB02
.*                                                             @Y30LB02
.*   CREATE REQUIRED PARAMETERS:  FLAGS, ECB, VOLID, AND       @Y30LB02
.*   LIBID.                                                    @Y30LB02
.*   CREATE OPTIONAL PARAMETERS: CNS1 AND CSN2.                @Y30LB02
.*                                                             @Y30LB02
.*   ELINMINATE:  THE VOLUME IDENTIFIED BY THE GIVEN VOLID     @Y30LB02
.*   IS ELIMINATED FROM THE VOLUME INVENTORY.  IT'S            @Y30LB02
.*   CARTRIDGES ARE MADE AVAILABLE FOR REALLOCATION.           @Y30LB02
.*   VOLID MUST BE SPECIFIED.                                  @Y30LB02
.*                                                             @Y30LB02
.*   ELIMINATE REQUIRED PARMS:  VOLID, FLAGS, AND ECB.         @Y30LB02
.*                                                             @Y30LB02
.*   RENAME:   THE VOLUME CURRENTLY IDENTIFIED BY THE VOLID    @Y30LB02
.*   LISTED IN THIS REQUEST IS TO BE RENAMED WITH THE NEW      @Y30LB02
.*   VOLID (NVOLID).  THE VOLUME TO BE RENAMED MUST BE         @Y30LB02
.*   ALREADY IN THE SYSTEM'S INVENTORY .  IF THE VOLUME'S      @Y30LB02
.*   CHARACTERISTICS ARE TO BE CHANGED, THEN THE USER MUST     @Y30LB02
.*   INSURE THAT THE "VOLFLG" FIELD IS SPECIFIED WITH THE      @Y30LB02
.*   DESIRED CHARACTERISTICS.  OTHERWISE THE USER WILL SET     @Y30LB02
.*   THE VOLFLG FIELD TO 'FF', INDICATING NO CHANGE IS         @Y30LB02
.*   REQUIRED IN VOLUME CHARACTERISTICS. BOTH VOLID AND        @Y30LB02
.*   NVOLID MUST BE SPECIFIED. AFTER A RENAME IS COMPLETE THE  @Y30LB02
.*   VOLUME WILL BE PLACED ON THE TRANSIENT (INACTIVE) LIST.   @Y30LB02
.*                                                             @Y30LB02
.*   RENAME REQUIRED PARAMETERS ARE:  FLAGS, ECB, VOLID,       @Y30LB02
.*   NVOLID, AND VOLFLG.                                       @Y30LB02
.*                                                             @Y30LB02
.*   REPLACE:    REPLACE VOLUME FLAGS - THE VOLUME IDENTIFIED  @Y30LB02
.*   BY THE VOLID IN THIS REQUEST HAS ITS FLAGS UPDATED. THE   @Y30LB02
.*   VOLUME WILL REMAIN ACTIVE. THE VOLFLG FIELD MUST BE       @Y30LB02
.*   SPECIFIED.                                                @Y30LB02
.*                                                             @Y30LB02
.*   REPLACE REQUIRED PARAMETERS ARE:  FLAGS, ECB,             @Y30LB02
.*   VOLID, AND VOLFLG.                                        @Y30LB02
.*                                                             @Y30LB02
.*   ELIMINATE TRANSIENT VOLUME:                               @Y30LB02
.*   THE VOLUME IDENTIFIED BY THE GIVEN SEQUENCE ONE SERIAL    @Y30LB02
.*   NUMBER (CSN1) IS ELIMINATED FROM THE MSF.                 @Y30LB02
.*                                                             @Y30LB02
.*   ELIMINATE TRANSIENT VOLUME REQUIRED PARAMETERS:           @Y30LB02
.*   FLAGS, ECB, AND CSN1.                                     @Y30LB02
.*                                                             @Y30LB02
.*   RENAME TRANSIENT VOLUME:                                  @Y30LB02
.*   THE VOLUME THAT IS CURRENTLY IDENTIFIED BY SEQUENCE ONE   @Y30LB02
.*   SERIAL NUMBER (CSN1), LISTED IN THE DEFINE REQUEST IS TO  @Y30LB02
.*   BE RENAMED WITH THE NEW VOLID. IF NO CHANGES ARE DESIRED  @Y30LB02
.*   IN THE VOLUME FLAGS FIELD(VOLFLG), THE USER MUST SET THE  @Y30LB02
.*   VOLFLG FIELD TO 'FF'.  AFTER THE RENAME IS COMPLETE THE   @Y30LB02
.*   VOLUME ENTRY WILL REMAIN ON THE TRANSIENT VOLUME LIST.    @Y30LB02
.*   (INACTIVE)                                                @Y30LB02
.*                                                             @Y30LB02
.*   RENAME TRANSIENT VOLUME REQUIRED PARAMETERS:              @Y30LB02
.*   FLAGS, ECB, VOLFLG, AND CSN1.                             @Y30LB02
.*                                                             @Y30LB02
.*   ACTIVATE TRANSIENT VOLUME:                                @Y30LB02
.*   THE VOLUME SPECIFIED BY CSN1 IS DELETED FROM THE          @Y30LB02
.*   TRANSIENT VOLUME LIST AND WILL BE MADE AVAILABLE FOR      @Y30LB02
.*   USE BY THE MSC.                                           @Y30LB02
.*                                                             @Y30LB02
.*   ACTIVATE TRANSIENT VOLUME REQUIRED PARAMETERS:            @Y30LB02
.*   FLAGS, ECB, AND CSN1.                                     @Y30LB02
.*                                                             @Y30LB02
.*   DEACTIVATE VOLUME:                                        @Y30LB02
.*   THE VOLUME SPECIFIED BY VOLID WILL BE MADE UNAVAILABLE    @Y30LB02
.*   FOR USE BY THE MSC (PLACED ON THE TRANSIENT VOLUME LIST). @Y30LB02
.*                                                             @Y30LB02
.*   DEACTIVATE VOLUME REQUIRED PARAMETERS:  FLAGS,            @Y30LB02
.*   ECB, AND VOLID.                                           @Y30LB02
.*                                                             @Y30LB02
.*   NOTE:  BITS 0-7 ARE MUTUALLY EXCLUSIVE:  ONE              @Y30LB02
.*   (AND ONLY ONE) MAY BE ON.                                 @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*  VOLFLG-  THE 'VOLUME FLAGS' FIELD INDICATES THE            @Y30LB02
.*  CHARACTERISTICS A VOLUME WILL EXHIBIT WHEN CREATE, RENAME  @Y30LB02
.*  OR REPLACE VOLUME FLAGS IS SPECIFIED IN THE FLAGS FIELD.   @Y30LB02
.*  THE FORMAT OF THE VOLFLG FIELD IS SHOWN BELOW:             @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   ---------------------------------                         @Y30LB02
.*    X  0  X  X  0  X  X  0                          @Y30LB02
.*   ---------------------------------                         @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   BIT 0-----------'1'B   CE CARTRIDGE                       @Y30LB02
.*                   '0'B   NO FUNCTION REQUESTED              @Y30LB02
.*                                                             @Y30LB02
.*   BIT 1-----------'0'B   UNUSED - MUST BE SET TO ZERO       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   BIT 2-----------'1'B   SECURE VOLUME                      @Y30LB02
.*                   '0'B   NO FUNCTION REQUESTED              @Y30LB02
.*                                                             @Y30LB02
.*   BIT 3-----------'1'B   EXCLUSIVE VOLUME                   @Y30LB02
.*                   '0'B   NO FUNCTION REQUESTED              @Y30LB02
.*                                                             @Y30LB02
.*   BIT 4-----------       RESERVED AND MUST BE ZERO          @Y30LB02
.*                                                             @Y30LB02
.*   BIT 5-----------'1'B   BIND VOLUME                        @Y30LB02
.*                    '0'B  NO FUNCTION                        @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   BIT 6-----------'1'B   WRITE INHIBIT                      @Y30LB02
.*                   '0'B   NO FUNCTION                        @Y30LB02
.*                                                             @Y30LB02
.*   BIT 7-----------       UNUSED - MUST BE SET TO ZERO     @Y30LB02
.*                                                             @Y30LB02
.*   NOTE:  IF THE VOLFLG PARAMETER IS NOT SPECIFIED,          @Y30LB02
.*   A VOLUME WILL BE DEFINED WITHOUT SPECIAL ATTRIBUTES.      @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*  CE CARTRIDGE:                                              @Y30LB02
.*  IF THIS ATTRIBUTE IS SPECIFIED WITH THE                    @Y30LB02
.*  CREATE FUNCTION, THE CARTRIDGE IS DESIGNATED               @Y30LB02
.*  FOR CE USE.  ONCE A CARTRIDGE IS DESIGNATED                @Y30LB02
.*  AS CE THE VOLUME FLAGS CANNOT BE CHANGED                   @Y30LB02
.*  NOR CAN THE CARTRIDGE BE ELIMINATED.                       @Y30LB02
.*                                                             @Y30LB02
.*  SECURE VOLUME:                                             @Y30LB02
.*  WHEN SPECIFIED WITH THE CREATE OR RENAME ATTRIBUTE         @Y30LB02
.*  THE VOLUME SPECIFIED IS DESIGNATED FOR SECURE ERASE.       @Y30LB02
.*  AN INDICATION OF THIS ATTRIBUTE IS IN THE INVENTORY        @Y30LB02
.*  ENTRY AND CTOC OF THE VOLUME.  MSC WILL RECOGNIZE          @Y30LB02
.*  THIS VOLUME FLAG WHEN CYLINDER EXTENTS ARE DESTAGED,       @Y30LB02
.*  AND THEREFORE ERASE DASD.  THIS HELPS TO PREVENT THE       @Y30LB02
.*  POSSIBILITY OF SENSITIVE DATA BEING INADVERTENTLY          @Y30LB02
.*  COPIED BY AN UNAUTHORIZED USER.                            @Y30LB02
.*                                                             @Y30LB02
.*  EXCLUSIVE:                                                 @Y30LB02
.*  IF THIS VOLUME FLAG IS SPECIFIED, WHENEVER A REQUEST       @Y30LB02
.*  TO MOUNT THE VOLUME IS GIVEN IT WILL BE MOUNTED            @Y30LB02
.*  EXCLUSIVE.  NO OTHER HOST WILL BE ABLE TO ACCESS           @Y30LB02
.*  THE VOLUME UNTIL IT IS RELEASED BY THE REQUESTING HOST.    @Y30LB02
.*                                                             @Y30LB02
.*  BIND:                                                      @Y30LB02
.*  IF THIS VOLUME FLAG IS SPECIFIED, THE                      @Y30LB02
.*  VOLUME WILL HAVE THE BIND ATTRIBUTE                        @Y30LB02
.*  UNTIL REDEFINED.  WHENEVER, A REQUEST                      @Y30LB02
.*  TO MOUNT THE VOLUME IS RECEIVED IT WILL                    @Y30LB02
.*  BE MOUNTED AND ALL CYLINDERS ACQUIRED WILL BE BOUND.       @Y30LB02
.*                                                             @Y30LB02
.*  WRITE INHIBIT:                                             @Y30LB02
.*  IF THIS VOLUME FLAG IS SPECIFIED,                          @Y30LB02
.*  THE VOLUME IS DEFINED FOR READ ONLY.  THE                  @Y30LB02
.*  VOLUME CANNOT BE UPDATED.                                  @Y30LB02
.*                                                             @Y30LB02
.*  VOLID -  VOLUME IDENTIFIER:   THE IDENTIFIER OF THE        @Y30LB02
.*  VOLUME TO BE DEFINED.                                      @Y30LB02
.*                                                             @Y30LB02
.*  NVOLID-  NEW VOLUME IDENTIFIER:   THE NEW VOLUME           @Y30LB02
.*  IDENTIFIER WHEN RENAMING A VOLUME.                         @Y30LB02
.*                                                             @Y30LB02
.*  CSN1 -   CARTRIDGE SERIAL NUMBER ONE IS A 12               @Y30LB02
.*  BYTE AREA WHICH CONTAINS THE MANUFACTURER'S SERIAL         @Y30LB02
.*  NUMBER FOR CARTRIDGE SEQUENCE NUMBER ONE.                  @Y30LB02
.*  CSN1 MUST BE SPECIFIED WHEN DEFINING TRANSIENT VOLUMES.    @Y30LB02
.*  OTHERWISE IT IS OPTIONAL.                                  @Y30LB02
.*                                                             @Y30LB02
.*  CSN2 -   CARTRIDGE SERIAL NUMBER TWO IS A 12               @Y30LB02
.*  BYTE AREA WHICH CONTAINS THE MANUFACTURER'S SERIAL         @Y30LB02
.*  NUMBER FOR CARTRIDGE SEQUENCE NUMBER TWO.                  @Y30LB02
.*                                                             @Y30LB02
.*  ECB  - THE NAME OF THE EVENT CONTROL BLOCK(ECB)            @Y30LB02
.*  TO BE POSTED WHEN DEFINE IS COMPLETE.  THE                 @Y30LB02
.*  THE USER MUST ALSO DECLARE A MINIMUM 50 BYTE CONTIGUOUS    @Y30LB02
.*  AREA TO CONTAIN THE MESSAGE GENERATED BY THE MSSC MESSAGE  @Y30LB02
.*  TASK. (THE ECB AND APPENDED DATA AREA MUST BE IN COMMON    @Y30LB02
.*  CORE IN VS/2.) THE ECB IS POSTED WITH ONE OF THE           @Y30LB02
.*  FOLLOWING POST CODES: 70,71,72,73,74, ETC.                 @Y30LB02
.*  THE POST CODE WILL BE PLACED IN THE LOW-ORDER BYTE         @Y30LB02
.*  OF THE ECB - '7F'X INDICATES SUCCESSFUL COMPLETION.        @Y30LB02
.*  THE MSC DATA WILL BE MOVED TO CORE LOCATION ADDR(ECB)+4.   @Y30LB02
.*  ECB MUST BE SPECIFIED.  THE ECB AREA MUST BE CLEARED       @Y30LB02
.*  (SET TO BINARY 0) BEFORE INVOKING THE MACRO.               @Y30LB02
.*                                                             @Y30LB02
.*  USDATA-  USER DATA:  THE NAME OF AN AREA WHICH             @Y30LB02
.*  CONTAINS 72 BYTES OF CARTRIDGE LABEL INFORMATION.          @Y30LB02
.*  THE USER DATA PARAMETER MAY BE OPTIONALLY SPECIFIED        @Y30LB02
.*  WITH CREATE, RENAME,AND RENAME TRANSIENT VOLUME.           @Y30LB02
.*  WHEN SPECIFIED WITH RENAME, ANY BYTE WHICH IS X'00'        @Y30LB02
.*  (BINARY ZERO) DOES NOT UPDATE THE CORRESPONDING BYTE       @Y30LB02
.*  OF THE CARTRIDGE LABEL USER AREA.                          @Y30LB02
.*                                                             @Y30LB02
.*  VVICEXT- THE NAME OF AN AREA WHICH CONTAINS THE            @Y30LB02
.*  MSVC EXTENSION (VVICEXT) MAPPING.                          @Y30LB02
.*  IF THIS PARAMETER IS NOT SPECIFIED, THE CORRESPONDING      @Y30LB02
.*  POSITION IN THE REQUEST BLOCK MUST BE SET                  @Y30LB02
.*  TO ZERO. THE MAPPING MACRO FOR THE MSVC EXTENSION          @Y30LB02
.*  TO DEFINE VOLUME IS IEZDEFVE.                              @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = REQUESTED ORDER GENERATED FOR THE MSSC-SVC   @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*     ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*               SPECIFIED IN MF(2)                            @Y30LB02
.*     ICB604I:  WARNING-ONLY THE MF PARAMETER IS VALID        @Y30LB02
.*               FOR THE LIST FORM                             @Y30LB02
.*     ICB605I:  ECB MUST BE SPECIFIED FOR STANDARD            @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD          @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME               @Y30LB02
.*               IF EXEC MACRO FORM REQUESTED                  @Y30LB02
.*     ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST          @Y30LB02
.*               BE L, E, OR NULL                              @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = IHBINNRA                                  @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 AND Y30LB02                @Y30LB02
.*                          ZM31011                            @ZM31011
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO
&SYMBOL  ICBDEFV &MF=,&FLAGS=,&VOLID=,&NVOLID=,&LIBID=,                *
               &VOLFLG=,&CSN1=,&CSN2=,&ECB=,&USDATA=,                  *
               &VVICEXT=
         LCLB  &ERSW               CONDITION SWITCH            @Y30LB02
         LCLC  &DEFV               DEFINE MACRO INSTR INDX     @Y30LB02
&DEFV    SETC  'D'.'&SYSNDX'       ASSIGN CHARACTER VALUE      @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
         AIF   ('&MF(1)' NE 'L').EFORM      LIST FORM?         @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF LIST MACRO FORM                         @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR ILLEGAL PARAMETERS      @Y30LB02
.*       SPECIFIED FOR THE LIST FORM AND PUTS OUT DEFINE       @Y30LB02
.*       VOLUME REQUEST BLOCK.                                 @Y30LB02
.*                                                             @Y30LB02
         AIF   ('&FLAGS' NE '' OR '&VOLID' NE '' OR '&LIBID'           *
               NE '' OR '&CSN1' NE '' OR '&CSN2' NE '' OR              *
               '&VOLFLG' NE '' OR '&NVOLID' NE '').WARN        @Y30LB02
         AIF   ('&ECB' NE ''OR '&VVICEXT' NE '' OR '&USDATA'           *
               NE '').WARN                                     @Y30LB02
         AGO   .LIST                                           @Y30LB02
.WARN    MNOTE 4,'  ICB604I - WARNING-ONLY THE MF PARAMETER '  @Y30LB02
         MNOTE 4,'  IS VALID FOR THE LIST FORM '               @Y30LB02
.*                                                             @Y30LB02
.LIST    ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC DEFINE VOLUME MACRO--INITIALIZED LIST FORM    @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
DEFVLEN  DC    F'132'              LENGTH OF DEFINE REQ        @Y30LB02
DEFVOPC  DC    XL1'18'             DEFINE VOLUME OPCODE        @Y30LB02
DEFVRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
DEFVFLG  DC    XL1'00'             1-BYTE FLAGS AREA           @Y30LB02
DEFVLIB  DC    XL1'00'             1-BYTE LIBID AREA           @Y30LB02
DEFVVOL  DC    XL6'000000000000'   6-BYTE AREA FOR VOLID       @Y30LB02
DEFVVFL  DC    XL1'00'             1-BYTE VOLUME FLAGS AREA    @Y30LB02
DEFVRES2 DC    XL1'00'             1-BYTE RESERVE AREA         @Y30LB02
DEFVNVL  DC    XL6'000000000000'   6-BYTE NEW VOLID AREA       @Y30LB02
DEFVRES3 DC    XL2'0000'           2-BYTE RESERVE AREA         @Y30LB02
DEFVCSN1 DC    2XL6'000000000000'  12-BYTE AREA FOR SEQ CART1  @Y30LB02
DEFVCSN2 DC    2XL6'000000000000'  12-BYTE AREA FOR SEQ CART2  @Y30LB02
DEFVRES4 DC    XL2'0000'           2-BYTE RESERVE AREA         @Y30LB02
DEFVASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
DEFVECB  DC    XL4'00000000'       4-BYTE ECB AREA             @Y30LB02
DEFVDATA DC    18XL4'00000000'     72-BYTE DATA AREA           @Y30LB02
DEFVVEXT DC    XL4'00000000'       4-BYTE VVICEXT AREA         @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC DEFINE VOLUME MACRO--UNINITIALIZED LIST FORM  @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBDEFV  DSECT                                                 @Y30LB02
DEFVLEN  DS    F                   DEFINE REQ LEN 84 HEX       @Y30LB02
DEFVOPC  DS    XL1                 DEFINE  OPCODE 18 HEX       @Y30LB02
DEFVRES1 DS    XL1                 1-BYTE RESERVED AREA        @Y30LB02
DEFVFLG  DS    XL1                 1-BYTE FLAGS AREA           @Y30LB02
DEFVLIB  DS    XL1                 1-BYTE LIBID AREA           @Y30LB02
DEFVVOL  DS    CL6                 6-BYTE AREA FOR VOLID       @Y30LB02
DEFVVFL  DS    XL1                 1-BYTE VOLUME FLAGS         @Y30LB02
DEFVRES2 DS    XL1                 1-BYTE RESERVE AREA         @Y30LB02
DEFVNVL  DS    CL6                 6-BYTE NEW VOLID AREA       @Y30LB02
DEFVRES3 DS    XL2                 2-BYTE RESERVE AREA         @Y30LB02
DEFVCSN1 DS    CL12                12-BYTE AREA SEQ CART1      @Y30LB02
DEFVCSN2 DS    CL12                12-BYTE AREA FOR SEQ CART2  @Y30LB02
DEFVRES4 DS    XL2                 2-BYTE RESERVE AREA         @Y30LB02
DEFVASID DS    XL2                 2-BYTE ASID AREA            @Y30LB02
DEFVECB  DS    A                   4-BYTE ECB ADDR             @Y30LB02
DEFVDATA DS    CL72                72-BYTE DATA AREA           @Y30LB02
DEFVVEXT DS    A                   4-BYTE VVICEXT ADDR         @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*       PROCESSING FOR THE EXECUTE MACRO FORM                 @Y30LB02
.*                                                             @Y30LB02
.EFORM   AIF   ('&MF(1)' NE 'E').SFORM      IS IT EFORM?       @Y30LB02
         AIF   ('&MF(2)' EQ '').EFOUT       IS 2ND PARM NULL?  @Y30LB02
.*                                                             @Y30LB02
*  MACMEAN  MSSC DEFINE VOLUME MACRO--EXECUTE FORM             @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)           LD ADDR OF REQUEST BLK      @Y30LB02
.*                                 USING IHBINNRA MACRO        @Y30LB02
         LA    0,132                 LENGTH OF DEFV REQ BLK    @Y30LB02
         ST    0,0(1)                STORE LENGTH              @Y30LB02
         MVI   4(1),X'18'            STORE DEFINE OPCODE       @Y30LB02
         AGO   .CKSW2                                          @Y30LB02
.*                                                             @Y30LB02
.EFOUT   ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB612I - MF(2) MUST CONTAIN REQ BLK '    @Y30LB02
         MNOTE 12,'  NAME IF EXEC MACRO  FORM REQUESTED '      @Y30LB02
&ERSW    SETB  1                   SET CONDITION SWITCH TO 1   @Y30LB02
.*                                                             @Y30LB02
.CKSW2   AIF   (&ERSW).FINISH      IF ERROR - END PROCESSING   @Y30LB02
         AGO   .CPROC              NAME OK - CONTINUE PROCESS  @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF 'STANDARD' MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF   ('&MF(1)' NE '').INCFM      STANDARD FORM?      @Y30LB02
         AIF   ('&ECB' NE '').CKFLG    ECB SPECIFIED           @Y30LB02
&ERSW    SETB  1                 ERROR CONDITION NOTED         @Y30LB02
         MNOTE 12,'  ICB605I - ECB MUST BE SPECIFIED FOR '     @Y30LB02
         MNOTE 12,'  STANDARD FORM MACRO '                     @Y30LB02
         AGO   .CKSW4                                          @Y30LB02
.*                                                             @Y30LB02
.CKFLG   AIF   ('&FLAGS' NE '').CKSW4    FLAGS SPECIFIED       @Y30LB02
&ERSW    SETB  1                 ERROR CONDITION NOTED         @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .CKSW4                                          @Y30LB02
.*                                                             @Y30LB02
.INCFM   ANOP                                                  @Y30LB02
&ERSW    SETB  1                   ERROR CONDITION NOTED       @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE, L,E, OR NULL'         @Y30LB02
.CKSW4   AIF   (&ERSW).FINISH      IF ERROR-END PROCESSING     @Y30LB02
*  MACMEAN  MSSC DEFINE VOLUME MACRO--STANDARD FORM            @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL   1,&DEFV             BRANCH AROUND REQ BLK       @Y30LB02
DEFVLEN  DC    A(&DEFV-*)          LENGTH OF DEFINE REQ BLK    @Y30LB02
DEFVOPC  DC    XL1'18'             DEFINE VOLUME OPCODE        @Y30LB02
DEFVRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
DEFVFLG  DC    XL1'00'             1-BYTE FLAGS AREA           @Y30LB02
DEFVLIB  DC    XL1'00'             1-BYTE LIBID AREA           @Y30LB02
DEFVVOL  DC    XL6'000000000000'   6-BYTE AREA FOR VOLID       @Y30LB02
DEFVVFL  DC    XL1'00'             1-BYTE VOLUME FLAGS AREA    @Y30LB02
DEFVRES2 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
DEFVNVL  DC    XL6'000000000000'   6-BYTE NEW VOLID AREA       @Y30LB02
DEFVRES3 DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
DEFVCSN1 DC    2XL6'000000000000'  12-BYTE AREA FOR CART SEQ1  @Y30LB02
DEFVCSN2 DC    2XL6'000000000000'  12-BYTE AREA FOR CART SEQ2  @Y30LB02
DEFVRES4 DC    XL2'0000'           2-BYTE RESERVE AREA         @Y30LB02
DEFVASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
DEFVECB  DC    XL4'00000000'       4-BYTE ECB AREA             @Y30LB02
DEFVDATA DC    18XL4'00000000'     72-BYTE DATA AREA           @Y30LB02
DEFVVEXT DC    XL4'00000000'       4-BYTE VVICEXT AREA         @Y30LB02
&DEFV    EQU   *                                               @Y30LB02
.*                                                             @Y30LB02
.*       PROCESS REQUEST BLOCK FOR STANDARD AND EXECUTE FORMS  @Y30LB02
.*                                                             @Y30LB02
.CPROC   AIF   ('&FLAGS' EQ '').LIBID       FLAGS SPECIFIED?   @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').FLREG FLAGS IN REG-FORM? @Y30LB02
         MVC   6(1,1),&FLAGS         PUT FLAGS IN REQ BLK      @Y30LB02
         AGO   .LIBID                BRANCH                    @Y30LB02
.*                                                             @Y30LB02
.FLREG   ANOP                                                  @Y30LB02
         MVC   6(1,1),0(&FLAGS(1))   REGFORM-PLACE FLAGS REQB  @Y30LB02
.*                                                             @Y30LB02
.LIBID   AIF   ('&LIBID' EQ '').VOLID       LIBID SPECIFIED?   @Y30LB02
         AIF   ('&LIBID'(1,1) EQ '(').LIBREG  REG-FORM?        @Y30LB02
         MVC   7(1,1),&LIBID         ADDR-FM,LIBID IN REQB     @Y30LB02
         AGO   .VOLID                BRANCH                    @Y30LB02
.*                                                             @Y30LB02
.LIBREG  ANOP                                                  @Y30LB02
         MVC   7(1,1),0(&LIBID(1))   REG-FORM-LIBID IN REQB    @Y30LB02
.*                                                             @Y30LB02
.VOLID   AIF   ('&VOLID' EQ '').VOLFLG      VOLID SPECIFIED?   @Y30LB02
         AIF   ('&VOLID'(1,1) EQ  '(').REGV VOLID IN REG-FORM? @Y30LB02
         MVC   8(6,1),&VOLID         PUT VOLID IN REQBLK       @Y30LB02
         AGO   .VOLFLG               BRANCH                    @Y30LB02
.*                                                             @Y30LB02
.REGV    ANOP                                                  @Y30LB02
         MVC   8(6,1),0(&VOLID(1))   REGFORM-VOLID IN BLK      @Y30LB02
.*                                                             @Y30LB02
.VOLFLG  AIF   ('&VOLFLG' EQ '').NVOLID     VOLFLG SPECIFIED?  @Y30LB02
         AIF   ('&VOLFLG'(1,1) EQ '(').REFLG VOLFLG REG-FORM?  @Y30LB02
         MVC   14(1,1),&VOLFLG       PUT VAL VOLFLG IN BLK     @Y30LB02
         AGO   .NVOLID               BRANCH                    @Y30LB02
.*                                                             @Y30LB02
.REFLG   ANOP                                                  @Y30LB02
         MVC   14(1,1),0(&VOLFLG(1)) REG FORM-VOLFLG IN BLK    @Y30LB02
.*                                                             @Y30LB02
.NVOLID  AIF   ('&NVOLID' EQ '').CSN1       NVOLID SPECIFIED   @Y30LB02
         AIF   ('&NVOLID'(1,1) EQ '(').RNVL NVOLID REG-FORM?   @Y30LB02
         MVC   16(6,1),&NVOLID       ADDRFORM-NVOLID IN BLK    @Y30LB02
         AGO   .CSN1                                           @Y30LB02
.*                                                             @Y30LB02
.RNVL    ANOP                                                  @Y30LB02
         MVC   16(6,1),0(&NVOLID(1)) REG-FORM-NVOLID IN BLK    @Y30LB02
.*                                                             @Y30LB02
.CSN1    AIF  ('&CSN1' EQ '').CSN2            CSN1 SPECIFIED?  @Y30LB02
         AIF   ('&CSN1'(1,1) EQ '(').REGC1    CSN1 REG FORM?   @Y30LB02
         MVC   24(12,1),&CSN1        ADDRFORM-CSN1 PARM        @Y30LB02
         AGO   .CSN2                 BRANCH                    @Y30LB02
.*                                                             @Y30LB02
.REGC1   ANOP                                                  @Y30LB02
         MVC   24(12,1),0(&CSN1(1))  REG FORM-CSN1 TO BLK      @Y30LB02
.*                                                             @Y30LB02
.CSN2    AIF   ('&CSN2' EQ '').CKECB2       CSN2 SPECIFIED?    @Y30LB02
         AIF   ('&CSN2'(1,1) EQ '(').REGC2  CSN2 IN REG FORM?  @Y30LB02
         MVC   36(12,1),&CSN2        ADDRFORM-CSN2 IN BLK      @Y30LB02
         AGO   .CKECB2                                         @Y30LB02
.*                                                             @Y30LB02
.REGC2   ANOP                                                  @Y30LB02
         MVC   36(12,1),0(&CSN2(1))  REG FORM-CSN2 TO BLK      @Y30LB02
.*                                                             @Y30LB02
.CKECB2  AIF   ('&ECB' EQ '').VEXT   ECB SPECIFIED?            @Y30LB02
         AIF   ('&ECB'(1,1) EQ '(').ECBREG  ECB REG-FORM?      @Y30LB02
         LA    15,&ECB               ADDRFORM--ECB IN BLK      @Y30LB02
         ST    15,52(1)              STORE ADDR IN BLK         @Y30LB02
         AGO   .VEXT                                           @Y30LB02
.ECBREG  ANOP                                                  @Y30LB02
         ST    &ECB,52(1)            REGFORM-ECB IN BLK        @Y30LB02
.VEXT    ANOP                                                  @Y30LB02
         AIF   ('&VVICEXT' EQ '').DATA  VVICEXT SPECD?         @Y30LB02
         AIF   ('&VVICEXT'(1,1) EQ '(').RVEXT REGFORM BRCH     @Y30LB02
         LA    15,&VVICEXT           LOAD REG 15 WITH          @Y30LB02
.*                                   VVICEXT ADDRESS           @Y30LB02
         ST    15,128(1)             STORE ADDRESS             @Y30LB02
         AGO   .DATA                 BRANCH                    @Y30LB02
.*                                                             @Y30LB02
.RVEXT   ANOP                                                  @Y30LB02
         ST    &VVICEXT,128(1)       STORE VVICEXT ADDRESS     @Y30LB02
.DATA    AIF   ('&USDATA' EQ '').INVOKE   BRCH IF NULL         @Y30LB02
         AIF   ('&USDATA'(1,1) EQ '(').RDTA  IF REGFORM BRCH   @Y30LB02
         MVC   56(72,1),&USDATA      LOAD DATA IN REQ BLK      @Y30LB02
         AGO   .INVOKE               BRANCH                    @Y30LB02
.RDTA    ANOP                                                  @Y30LB02
         MVC   56(72,1),0(&USDATA(1)) LOAD DATA INTO REQ BLK   @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC   126           ISSUE SVC INSTRUCTION             @ZM31011
.FINISH  MEND                                                  @Y30LB02
**/
*   ICBDEFV:  MACRO KEYS(MF,FLAGS,LIBID,VOLID,VOLFLG,NVOLID,
*                        CSN1,CSN2,ECB,USDATA,VVICEXT);    /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                          EXTERNAL DECLARES               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  DEFVTEST  FIXED EXT;    /*CTR FOR S-FORM INVOC      @Y30LB02*/
*   DCL  DEFTESR1  FIXED EXT;    /*TEST FOR REG1 INVOC       @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                          INTERNAL DECLARES               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  ERSW     FIXED;     /*ERROR CONDITION SWITCH        @Y30LB02*/
*   DCL  DEFVCD   CHAR;      /*DEFINE VOLUME OPCODE          @Y30LB02*/
*   DCL  RETCODE  FIXED;     /*RETURN CODE                   @Y30LB02*/
*   DCL  DEFVLN   CHAR;      /*LENGTH OF DEFINE VOL LIST     @Y30LB02*/
*   DCL  CTR   FIXED;        /*LIST FORM PARAMETER CTR       @Y30LB02*/
*        DEFVCD = '18';      /*HEX OPCODE FOR DEFINE         @Y30LB02*/
*        DEFVLN = '84';      /*HEX LENGTH OF DEFINE REQ      @Y30LB02*/
*        CTR = 0;            /*INITIALIZE PARM CTR           @Y30LB02*/
*        RETCODE = 0;        /*INITIALIZE RETURN CODE        @Y30LB02*/
*        ERSW = 0;           /*INITIALIZE ERROR SWITCH       @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      CHECK FOR VALID MACRO FORMAT - E, L, OR NULL        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*     IF DEFTESR1=0 THEN     /*REG 1 ALREADY DCLD?           @Y30LB02*/
*        DO;                 /*NO,DECLARE IT                 @Y30LB02*/
*          ANS('DCL DEFVR1 REG(1) PTR ;/*ADDRESS OF '
*          'REQUEST BLOCK @Y30LB02*/')SKIP;
*          DEFTESR1=DEFTESR1+1;   /*INCREM REG COUNTER       @Y30LB02*/
*        END;                     /*                         @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF MF(1) ^= 'L' THEN     /*IS IT LIST FORM?              @Y30LB02*/
*     GO TO EFORM;           /*NO,BRCH,CK FOR EXECUTE        @Y30LB02*/
*   IF MF(2) = '' THEN       /*LIST NAME SPECIFIED?          @Y30LB02*/
*     DO;                    /*NO,PROCESS ERROR              @Y30LB02*/
*        ERSW = 1;           /*SET ERROR SWITCH TO ONE       @Y30LB02*/
*        RETCODE = 12;       /*SET RETURN CODE TO 12         @Y30LB02*/
*        ANS MSG('  ICB602I -  A NAME FOR THE '
*        'REQUEST BLOCK MUST BE SPECIFIED IN MF(2)')SKIP;  /*@Y30LB02*/
*        GO TO FINISH;       /*BRANCH TO END                 @Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      THE FOLLOWING CODE WILL CHECK FOR ILLEGAL           @Y30LB02*/
*/*      PARAMETERS SPECIFIED WITH LIST FORM AND             @Y30LB02*/
*/*      PUT OUT DEFINE VOLUME REQUEST BLOCK                 @Y30LB02*/
*/********************************************************   @Y30LB02*/
*   ELSE                     /*                              @Y30LB02*/
*     DO;                    /*CHECK PARAMETERS              @Y30LB02*/
*        IF FLAGS ^= '' THEN /*FLAGS SPECIFIED?              @Y30LB02*/
*             CTR = CTR + 1;/*YES,INCREMENT CTR              @Y30LB02*/
*        IF VOLID ^= '' THEN /*VOLID SPECIFIED?              @Y30LB02*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @Y30LB02*/
*        IF LIBID ^= '' THEN /*LIBID SPECIFIED?              @Y30LB02*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @Y30LB02*/
*        IF VOLFLG ^= '' THEN /*VOLUME FLAGS SPECIFIED?      @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF NVOLID ^= '' THEN /*NEW VOLID SPECIFIED?         @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF CSN1 ^= '' THEN   /*CART SEQ 1 SPECIFIED?        @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF CSN2 ^= '' THEN   /*CART SEQ 2 SPECIFIED?        @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF ECB ^= '' THEN    /*ECB SPECIFIED?               @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF USDATA ^= '' THEN /*USER DATA SPECIFIED?         @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF VVICEXT ^= '' THEN /*VVICEXT SPECIFIED           @Y30LB02*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y30LB02*/
*        IF CTR > 0 THEN      /*COUNTER GT ZERO?             @Y30LB02*/
*          DO;                /*YES,PRINT WARNING MSG        @Y30LB02*/
*             RETCODE = 4;    /*SET RETURN CODE TO 4         @Y30LB02*/
*             ANS MSG('  ICB604I -  WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR THE'
*                 ' LIST FORM  ')SKIP;                     /*@Y30LB02*/
*          END;               /*                             @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*   IF MF(3) ^= '' THEN       /*PLS ATTRIBUTE SPECIFIED?     @Y30LB02*/
*      GO TO ATTRLST;         /*BRANCH,PROCESS ATTRIBUTE     @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                      /*INITIALIZED LIST FORM        @Y30LB02*/
*     DO;                     /*OUTPUT DECLARES FOR REQ BLK  @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC DEFINE VOLUME MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 'MF(2)'  STATIC LOCAL,'
*        '/*DEFINE VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  DEFVLEN  FIXED(31)INIT('QUOTE('84')
*        'X),/*LENGTH OF DEFINE VOLUME REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  DEFVOPCD  FIXED(8)INIT('QUOTE('18')
*        'X),/*DEFINE VOLUME OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  *       CHAR(1)INIT('QUOTE('00')
*        'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  DEFVFLG   BIT(8)INIT('QUOTE
*        ('00000000')'B),/*ONE BYTE FLAGS  @Y30LB02*/')SKIP;
*        ANS('       3  DEFVCR  BIT(1),/*CREATE ATTRI'
*        'BUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVELM BIT(1),/*ELIMINATE'
*        ' ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVRNM  BIT(1),/*RENAME ATTRI'
*        'BUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVREP  BIT(1),/*REPLACE VOLUME'
*        ' FLAGS @Y30LB02*/')SKIP;
*        ANS('       3  DEFVELTR BIT(1),/*ELIMINATE TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVRNTR BIT(1),/*RENAME TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVACT BIT(1),/*ACTIVATE TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVDACT BIT(1),/*DEACTIVATE'
*        ' VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVLIB  BIT(8)INIT('QUOTE
*        ('00000000')'B), /*ONE BYTE LIBID @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(6),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  DEFVLID BIT(2),/*BINARY NUMBER'
*        ' ZERO TO THREE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVOLD CHAR(6) ,/*VOLUME IDENTIFI'
*        'CATION @Y30LB02*/')SKIP;
*        ANS('        3  *(6)  CHAR(1)INIT((6)'QUOTE
*        ('00')'X),/*INIT VOLID AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  DEFVVFLG  BIT(8)INIT('QUOTE
*        ('00000000')'B),/*VOLUME FLAG ATTRIB @Y30LB02*/')SKIP;
*        ANS('       3  DEFVCECT BIT(1),/*CE CARTRIDGE'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  *  BIT(1),/*RESERVED BIT'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVSEC  BIT(1),/*SECURE VOLUME'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVEXCL  BIT(1),/*EXCLUSIVE '
*        'VOLUME @Y30LB02*/')SKIP;
*        ANS('       3  *  BIT(1),/*RESERVED '
*        'BIT-USED BY THE SUBSYSTEM @Y30LB02*/')SKIP;
*        ANS('       3  DEFVBIND  BIT(1),/*BIND VOLUME'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVWINH  BIT(1),/*WRITE INHIBIT'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(1),/*RESERVED-ZERO'
*        ' @Y30LB02*/')SKIP;
*        ANS('    2  *         CHAR(1)INIT('QUOTE('00')
*        'X),/*1-BYTE RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVNVOL  CHAR(6) ,/*NEW VOL ID @Y30LB02*/')SKIP;
*        ANS('        3  *(6)  CHAR(1)INIT((6)'QUOTE
*        ('00')'X),/*INIT AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  *          CHAR(2) ,/*2-BYTE RESERVED'
*        ' AREA @Y30LB02*/')SKIP;
*        ANS('        3  *(2)  CHAR(1)INIT((2)'QUOTE
*        ('00')'X),/*INIT RESERVED AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  DEFVCSN1  CHAR(12) ,/*CART SEQUENCE'
*        ' ONE @Y30LB02*/')SKIP;
*        ANS('        3  *(12)  CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CART ONE AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  DEFVCSN2     CHAR(12) ,/*CART SEQ'
*        ' TWO @Y30LB02*/')SKIP;
*        ANS('        3  *(12)  CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CART TWO AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  *     CHAR(2) INIT('
*        QUOTE('0000')'X),/*RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  DEFVASID CHAR(2) INIT('
*        QUOTE('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVECB  FIXED(31)INIT(0),/*EVENT '
*        'CONTROL BLOCK ADDRESS @Y30LB02*/')SKIP;
*        ANS('    2  DEFVDATA CHAR(72) INIT('
*        QUOTE('')'B),/*USER DATA ARRAY @Y30LB02*/')SKIP;
*        ANS('       3  DEFR50 CHAR(2),/*RESERVED AND MUST '
*        'ALWAYS BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFACSEC CHAR(1),/*ACCESSI'
*        'BILITY(SECURITY) @Y30LB02*/')SKIP;
*        ANS('       3  DEFR55 CHAR(26),/*RESERVED AREA '
*        'MUST BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFOWNID CHAR(14),/*OWNER'
*        ' IDENTIFICATION @Y30LB02*/')SKIP;
*        ANS('       3  DEFR60 CHAR(28),/*RESERVED AREA '
*        'MUST BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFTLAB CHAR(1),/*T LABEL '
*        'STANDARD VERSION @Y30LB02*/')SKIP;
*        ANS('    2  DEFVVEXT  FIXED(31)INIT(0);/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;         /*BRANCH TO END               @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*/*                                                          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC DEFINE VOLUME MACRO    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 'MF(2)' 'MF(3)','
*        ' /*DEFINE VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  DEFVLEN  FIXED(31),/*LENGTH '
*        'OF DEFINE VOLUME REQ BLK=84 HEX @Y30LB02*/')SKIP;
*        ANS('    2  DEFVOPCD  FIXED(8),/*DEFINE '
*        'OPCODE = 18 HEX @Y30LB02*/')SKIP;
*        ANS('    2  *  CHAR(1),/*RESERVED AND ZERO @Y30LB02 */')SKIP;
*        ANS('    2  DEFVFLG   BIT(8) ,/*ONE BYTE'
*        ' FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('       3  DEFVCR  BIT(1),/*CREATE ATTRI'
*        'BUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVELM BIT(1),/*ELIMINATE'
*        ' ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVRNM  BIT(1),/*RENAME ATTRI'
*        'BUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVREP  BIT(1),/*REPLACE VOLUME'
*        ' FLAGS @Y30LB02*/')SKIP;
*        ANS('       3  DEFVELTR BIT(1),/*ELIMINATE TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVRNTR BIT(1),/*RENAME TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVACT BIT(1),/*ACTIVATE TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVDACT BIT(1),/*DEACTIVATE'
*        ' VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVLIB  BIT(8),/*ONE BYTE LIBID @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(6),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  DEFVLID BIT(2),/*BINARY NUMBER'
*        ' ZERO TO THREE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVOLD CHAR(6) ,/*VOLUME IDENTIFI'
*        'CATION @Y30LB02*/')SKIP;
*        ANS('    2  DEFVVFLG  BIT(8),'
*        '/*VOLUME FLAG ATTRIB @Y30LB02*/')SKIP;
*        ANS('       3  DEFVCECT BIT(1),/*CE CARTRIDGE'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  *  BIT(1),/*RESERVED BIT'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVSEC  BIT(1),/*SECURE VOLUME'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVEXCL  BIT(1),/*EXCLUSIVE '
*        ' VOLUME @Y30LB02*/')SKIP;
*        ANS('       3  *  BIT(1),/*SCRATCH '
*        'CARTRIDGE RESERVED FOR SUBSYS @Y30LB02*/')SKIP;
*        ANS('       3  DEFVBIND  BIT(1),/*BIND VOLUME'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVWINH  BIT(1),/*WRITE INHIBIT'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(1),/*RESERVED-ZERO'
*        ' @Y30LB02*/')SKIP;
*        ANS('    2  *  CHAR(1),/*BYTE RESVD AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVNVOL CHAR(6),/*NEW VOLID @Y30LB02*/')SKIP;
*        ANS('    2  *          CHAR(2) ,/*2-BYTE RESERVED'
*        ' AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVCSN1     CHAR(12) ,/*CART SEQUENCE'
*        ' ONE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVCSN2     CHAR(12) ,/*CART SEQ'
*        ' TWO @Y30LB02*/')SKIP;
*        ANS('    2  *     CHAR(2) ,'
*        '/*RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  DEFVASID CHAR(2) ,'
*        '/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVECB  FIXED(31),/*EVENT '
*        'CONTROL BLOCK ADDRESS @Y30LB02*/')SKIP;
*        ANS('    2  DEFVDATA CHAR(72),'
*        '/*USER DATA ARRAY @Y30LB02*/')SKIP;
*        ANS('       3  DEFR50 CHAR(2),/*RESERVED AND MUST '
*        'ALWAYS BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFACSEC CHAR(1),/*ACCESSI'
*        'BILITY(SECURITY) @Y30LB02*/')SKIP;
*        ANS('       3  DEFR55 CHAR(26),/*RESERVED AREA '
*        'MUST BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFOWNID CHAR(14),/*OWNER'
*        ' IDENTIFICATION @Y30LB02*/')SKIP;
*        ANS('       3  DEFR60 CHAR(28),/*RESERVED AREA '
*        'MUST BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFTLAB CHAR(1),/*T LABEL '
*        'STANDARD VERSION @Y30LB02*/')SKIP;
*        ANS('    2  DEFVVEXT  FIXED(31);/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;     /*BRANCH TO END                   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*   PROCESSING THE EXECUTE MACRO FORM                      @Y30LB02*/
*/*                                                          @Y30LB02*/
*EFORM:
*   IF MF(1) ^= 'E' THEN     /*EXECUTE FORM SPECIFIED?       @Y30LB02*/
*     GO TO SFORM;           /*NO,BRCH AND CK FOR STD FORM   @Y30LB02*/
*   IF MF(2) = '' THEN       /*IS LIST NAME SPECIFIED?       @Y30LB02*/
*     DO;                    /*NO,PRINT OUT ERROR MSG        @Y30LB02*/
*        ERSW = 1;           /*SET ERROR SWITCH TO ONE       @Y30LB02*/
*        RETCODE = 12;       /*SET RETURN CODE TO 12         @Y30LB02*/
*        ANS MSG('  ICB612I - MF(2) MUST CONTAIN REQ BLK '
*        'NAME IF EXEC MACRO FORM REQUESTED')SKIP;         /*@Y30LB02*/
*        GO TO CKSW;         /*BRANCH TO CHECK ERROR SWITCH  @Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                     /*REQUEST TO ZERO BLOCK         @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC DEFINE VOLUME MACRO    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*            '               @Y30LB02*/')SKIP;
*        ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF MF(3) = 'COMPLETE' THEN  /*COMPLETE SPECIFIED         @Y30LB02*/
*     DO;                    /*ZERO OUT THE BLOCK            @Y30LB02*/
*      ANS(' 'MF(2)'='MF(2)'&&'MF(2)';/*ZERO '
*        ' AND INIT REQUEST BLOCK @Y30LB02*/')SKIP;
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   ANS('RFY DEFVR1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*   ANS('DEFVR1= ADDR('MF(2)'); /*R1 PTR'
*       ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*CKSW:
*   IF ERSW = 1 THEN        /*SET RETURN CODE TO ONE         @Y30LB02*/
*     GO TO FINISH;         /*BRANCH TO END                  @Y30LB02*/
*   ELSE                    /*                               @Y30LB02*/
*     GO TO COMPROC;        /*BRANCH TO CK PARAMETERS        @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN     /*STANDARD FORM REQUEST?         @Y30LB02*/
*     DO;                   /*NO,PROCESS ERROR               @Y30LB02*/
*        ERSW = 1;          /*SET ERROR SWITCH TO ONE        @Y30LB02*/
*        RETCODE = 12;      /*SET RETURN CODE TO 12          @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER '
*             'SPECIFIED, MUST BE L, E, OR NULL')SKIP;     /*@Y30LB02*/
*        GO TO CKSW2;       /*BRANCH TO CK ERROR SWITCH      @Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF ECB = '' THEN        /*ECB SPECIFIED?                 @Y30LB02*/
*     DO;                   /*NO,PROCESS ERROR MSG           @Y30LB02*/
*        ERSW = 1;          /*SET ERROR SWITCH TO ONE        @Y30LB02*/
*        RETCODE = 12;      /*SET RETURN CODE TO 12          @Y30LB02*/
*        ANS MSG('  ICB605I - ECB MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO CKSW2;       /*BRANCH TO CK ERROR SWITCH      @Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*   IF FLAGS = '' THEN      /*FLAGS SPECIFIED?               @Y30LB02*/
*     DO;                   /*NO,PRINT ERROR MESSAGE         @Y30LB02*/
*        ERSW = 1;          /*SET ERROR SWITCH TO ONE        @Y30LB02*/
*        RETCODE = 12;      /*SET RETURN CODE TO 12          @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*CKSW2:
*   IF ERSW = 1 THEN        /*IS ERROR SWITCH SET?           @Y30LB02*/
*     GO TO FINISH;         /*YES,BRANCH TO END              @Y30LB02*/
*   IF DEFVTEST = 1 THEN    /*1ST STANDARD FORM REQ?         @Y30LB02*/
*     DO;                   /*NO,DON'T PUT OUT DCLS          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC DEFINE VOLUME MACRO    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY DEFVR1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('DEFVR1= ADDR(DEFVLEN); /*R1 PTR'
*            ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*        GO TO COMPROC;                                    /*@Y30LB02*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                /*FIRST INVOC OF STD FORM            @Y30LB02*/
*     DO;               /*PRINT OUT THE DECLARES             @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC DEFINE VOLUME MACRO    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 DEFVLS01  STATIC LOCAL,'
*        '/*DEFINE VOLUME REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  DEFVLEN  FIXED(31)INIT('QUOTE('84')
*        'X),/*LENGTH OF DEFINE VOLUME REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  DEFVOPCD  FIXED(8)INIT('QUOTE('18')
*        'X),/*DEFINE VOLUME OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  *       CHAR(1)INIT('QUOTE('00')
*        'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  DEFVFLG   BIT(8)INIT('QUOTE
*        ('00000000')'B),/*ONE BYTE FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('       3  DEFVCR  BIT(1),/*CREATE ATTRI'
*        'BUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVELM  BIT(1),/*ELIMINATE'
*        ' ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVRNM  BIT(1),/*RENAME ATTRI'
*        'BUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVREP  BIT(1),/*REPLACE VOLUME'
*        ' FLAGS @Y30LB02*/')SKIP;
*        ANS('       3  DEFVELTR BIT(1),/*ELIMINATE TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVRNTR  BIT(1),/*RENAME TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVACT BIT(1),/*ACTIVATE TRAN'
*        'SIENT VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  DEFVDACT BIT(1),/*DEACTIVATE'
*        ' VOLUME ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVLIB  BIT(8)INIT('QUOTE
*        ('00000000')'B), /*ONE BYTE MSF ID @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(6),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  DEFVLID BIT(2),/*BINARY NUMBER'
*        ' ZERO TO THREE @Y30LB02*/')SKIP;
*        ANS('    2  DEFVOLD CHAR(6) ,/*VOLUME ID @Y30LB02*/')SKIP;
*        ANS('        3  *(6)  CHAR(1)INIT((6)'QUOTE
*        ('00')'X),/*INIT VOLID AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  DEFVVFLG  BIT(8)INIT('QUOTE
*        ('00000000')'B),/*VOLUME FLAG ATTRIB @Y30LB02*/')SKIP;
*        ANS('       3  DEFVCECT  BIT(1),/*CE CARTRIDGE'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  *  BIT(1),/*RESERVED BIT'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVSEC  BIT(1),/*SECURE VOLUME'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVEXCL  BIT(1),/*EXCLUSIVE '
*        ' VOLUME @Y30LB02*/')SKIP;
*        ANS('       3  *  BIT(1),/*SCRATCH '
*        'CARTRIDGE - USED BY MSC @Y30LB02*/')SKIP;
*        ANS('       3  DEFVBIND  BIT(1),/*BIND VOLUME'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  DEFVWINH  BIT(1),/*WRITE INHIBIT'
*        ' @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(1),/*RESERVED-ZERO'
*        ' @Y30LB02*/')SKIP;
*        ANS('    2  *          CHAR(1)INIT('QUOTE
*        ('00')'X),/*1-BYTE RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVNVOL     CHAR(6) ,/*NEW VOL'
*        'ID @Y30LB02*/')SKIP;
*        ANS('        3  *(6)  CHAR(1)INIT((6)'QUOTE
*        ('00')'X),/*INIT NEW VOLID TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  *          CHAR(2) ,/*2-BYTE'
*        ' RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('        3  *(2)  CHAR(1)INIT((2)'QUOTE
*        ('00')'X),/*INIT RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVCSN1     CHAR(12),/*CART SEQ'
*        ' ONE @Y30LB02*/')SKIP;
*        ANS('        3  *(12)  CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CART SEQ ONE  @Y30LB02*/')SKIP;
*        ANS('    2  DEFVCSN2    CHAR(12) ,/*CART SEQ'
*        ' TWO @Y30LB02*/')SKIP;
*        ANS('        3  *(12)  CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CART SEQ TWO @Y30LB02*/')SKIP;
*        ANS('    2  *     CHAR(2) INIT('
*        QUOTE('0000')'X),/*RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  DEFVASID CHAR(2) INIT('
*        QUOTE('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  DEFVECB  FIXED(31)INIT(0),/*EVENT '
*        'CONTROL BLOCK ADDRESS @Y30LB02*/')SKIP;
*        ANS('    2  DEFVDATA CHAR(72) INIT('
*        QUOTE('')'B),/*USER DATA ARRAY @Y30LB02*/')SKIP;
*        ANS('       3  DEFR50 CHAR(2),/*RESERVED AND MUST '
*        'ALWAYS BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFACSEC CHAR(1),/*ACCESSI'
*        'BILITY(SECURITY) @Y30LB02*/')SKIP;
*        ANS('       3  DEFR55 CHAR(26),/*RESERVED AREA '
*        'MUST BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFOWNID CHAR(14),/*OWNER'
*        ' IDENTIFICATION @Y30LB02*/')SKIP;
*        ANS('       3  DEFR60 CHAR(28),/*RESERVED AREA '
*        'MUST BE ZERO/BLANK @Y30LB02*/')SKIP;
*        ANS('       3  DEFTLAB CHAR(1),/*T LABEL '
*        'STANDARD VERSION @Y30LB02*/')SKIP;
*        ANS('    2  DEFVVEXT  FIXED(31)INIT(0);/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*        ANS('RFY DEFVR1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('DEFVR1= ADDR(DEFVLEN); /*R1 PTR'
*        ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*        DEFVTEST = DEFVTEST + 1;    /*INCREM STD FORM CTR   @Y30LB02*/
*     END;                           /*                      @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*   COMMON PROCESSING FOR EXECUTE AND STANDARDS FORMS      @Y30LB02*/
*/*                                                          @Y30LB02*/
*COMPROC:
*        ANS('DEFVLEN= 'QUOTE(DEFVLN)'X;/*'
*        'LENGTH-DEFINE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('DEFVOPCD= 'QUOTE(DEFVCD)'X;/*'
*        'DEFINE VOL OPCODE @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF FLAGS ^= '' THEN     /*FLAGS SPECIFIED                @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('DEFVFLG= ' FLAGS';/*VALUE OF FLAGS'
*        ' @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF LIBID ^= '' THEN    /*LIBID SPECIFIED?                @Y30LB02*/
*        ANS('DEFVLIB= 'LIBID';/*VALUE OF LIBID   @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VOLID ^= '' THEN    /*VOLID SPECIFIED?                @Y30LB02*/
*        ANS('DEFVOLD= 'VOLID';/*VOLUME ID @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VOLFLG ^= '' THEN   /*VOLUME FLAGS SPECIFIED?         @Y30LB02*/
*          ANS('DEFVVFLG= 'VOLFLG';/*VOLUME FLAGS @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF NVOLID ^= '' THEN   /*NEW VOLID SPECIFIED?            @Y30LB02*/
*        ANS('DEFVNVOL= 'NVOLID';/*NEW VOLUME ID'
*        ' @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF CSN1 ^= '' THEN     /*CSN1 SPECIFIED?                 @Y30LB02*/
*        ANS('DEFVCSN1= 'CSN1';/*CARTRIDGE SEQUENCE'
*        ' ONE @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF CSN2 ^= '' THEN     /*CART SEQ NUM 2 SPECIFIED        @Y30LB02*/
*        ANS('DEFVCSN2= ' CSN2';/*CARTRIDGE SEQUENCE'
*        ' TWO @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF ECB ^= '' THEN      /*ECB SPECIFIED?                  @Y30LB02*/
*        ANS('DEFVECB=ADDR' ECB ';/*ADDRESS '
*        'OF ECB @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF USDATA ^= '' THEN   /*USER DATA SPECIFIED?            @Y30LB02*/
*        ANS('DEFVDATA='USDATA' ;/*MOVE 72 BYTES OF'
*        'CARTRIDGE DATA TO THE REQ BLK @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VVICEXT ^= '' THEN    /*MSVC EXTENSION SPECIFIED?     @Y30LB02*/
*        ANS('DEFVVEXT=ADDR'VVICEXT';/*ADDRESS '
*        'OF MSVC EXTENSION @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*/*      INVOKE SVC AND END PROCESSING                       @Y30LB02*/
*/*                                                          @Y30LB02*/
*QUIT:   ANS('SVC (126);/*INVOKE THE MSSC-SVC  @Y30LB02*/')SKIP;
*        ANS('RFY  DEFVR1 UNRSTD;/*UNRESTRICT REG 1 @Y30LB02 */')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:
*        RETURN CODE(RETCODE);                             /*@Y30LB02*/
*        %END;                                             /*@Y30LB02*/
./ ADD NAME=ICBMCRT
* %/*  START OF SPECIFICATIONS****                             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBMCRT                                   @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = MOVE CARTRIDGE MACRO                 @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = REQUEST VIRTUAL VOLUMES BE MOVED FROM        @Y30LB02
.*                THE MSF                                      @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB AND MC                             @Y30LB02
.*                                                             @Y30LB02
.*02     REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS@Y30LB02
.*                              BY MACROS: R0,R1,R14, AND R15  @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS2 AND ASSEMBLER                        @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBMCRT                                 @Y30LB02
.*                                                             @Y30LB02
.*02     PURPOSE = A MOVE CARTRIDGE REQUEST WILL BE            @Y30LB02
.*       ISSUED WHENEVER THE CALLER WANTS TO REMOVE A          @Y30LB02
.*       CARTRIDGE OR A VIRTUAL VOLUME FROM THE MSF.           @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE = SVC 126                                     @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT                                                    @Y30LB02
.*                                                             @Y30LB02
.* MACRO SYNTAX                                                @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBMCRT  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBMCRT  FLAGS=ADDR/(R)        LIBID=ADDR/(R)                @Y30LB02
.*         ECB=ADDR/(R)          CSN=ADDR/(R)                  @Y30LB02
.*                               VVICEXT=ADDR/(R)              @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBMCRT  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              ECB=ADDR/(R)                   @Y30LB02
.*                              CSN=ADDR/(R)                   @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                              LIBID=ADDR/(R)                 @Y30LB02
.*                              VVICEXT=ADDR/(R)               @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTION.                           @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS - FLAGS:  THE FIELD WHICH INDICATES THE FUNC-       @Y30LB02
.*           TION(S) TO BE PERFORMED.  THE FORMAT OF THE       @Y30LB02
.*           FLAGS FIELD IS SHOWN BELOW:                       @Y30LB02
.*                                                             @Y30LB02
.*   ---------------------------------                         @Y30LB02
.*    0  0  X  X  0  0  0  0                          @Y30LB02
.*   ---------------------------------                         @Y30LB02
.*   BITS 0-1-------       RESERVED - MUST BE SET TO ZERO    @Y30LB02
.*                                                             @Y30LB02
.*   BIT 2----------'1'B   MOVE TRANSIENT VOLUME               @Y30LB02
.*                  '0'B   NO FUNCTION REQUESTED (DEFAULT)     @Y30LB02
.*                                                             @Y30LB02
.*   BIT 3----------'1'B   MOVE SCRATCH                        @Y30LB02
.*                  '0'B   NO FUNCTION REQUESTED (DEFAULT)     @Y30LB02
.*                                                             @Y30LB02
.*   BITS 4-5 -------      UNUSED AND MUST BE SET TO ZERO    @Y30LB02
.*                                                             @Y30LB02
.*   BITS 6-7 -------      RESERVED - MUST BE SET TO ZERO    @Y30LB02
.*                                                             @Y30LB02
.*   NOTE:   BITS 0-7 ARE 'MUTUALLY EXCLUSIVE'                 @Y30LB02
.*                                                             @Y30LB02
.*     TRANSIENT VOLUME:                                       @Y30LB02
.*         THE SOURCE VOLUME (MAY BE 2 CARTRIDGES) IS          @Y30LB02
.*         SPECIFIED BY SEQUENCE 1 CSN.                        @Y30LB02
.*         THE KEYWORD PARAMETER CSN MUST BE SPECIFIED.        @Y30LB02
.*                                                             @Y30LB02
.*         MOVE TRANSIENT VOLUME REQUIRED PARMS:  FLAGS,       @Y30LB02
.*         ECB AND CSN (CSN1).                                 @Y30LB02
.*                                                             @Y30LB02
.*     MOVE SCRATCH:                                           @Y30LB02
.*         MOVE ANY AVAILABLE SCRATCH CARTRIDGE WITHIN A       @Y30LB02
.*         SPECIFIED MSF.  USE OF THE CARTRIDGE SERIAL         @Y30LB02
.*         NUMBER IS OPTIONAL.  IF CARTRIDGE SERIAL NUMBER     @Y30LB02
.*         IS SPECIFIED WITH THE MOVE SCRATCH OPTION, CART-    @Y30LB02
.*         RIDGE SPECIFIED WITH 'CSN' IS MOVED PROVIDED IT     @Y30LB02
.*         IS AVAILABLE.  THE LIBID PARAMETER MUST BE          @Y30LB02
.*         SPECIFIED.                                          @Y30LB02
.*                                                             @Y30LB02
.*         MOVE SCRATCH REQUIRED PARMS:  FLAGS, ECB AND        @Y30LB02
.*         LIBID.  OPTIONAL PARMS: CSN                         @Y30LB02
.*                                                             @Y30LB02
.*   LIBID - THE FIELD WHICH IDENTIFIES THE MSF SUB-           @Y30LB02
.*         SYSTEM FROM WHICH TO REMOVE A SCRATCH CART-         @Y30LB02
.*         RIDGE.  THE FORMAT OF THE LIBID FIELD IS SHOWN      @Y30LB02
.*         BELOW:                                              @Y30LB02
.*                                                             @Y30LB02
.*   ----------------------------------                        @Y30LB02
.*    0  0  0  0  0  0  X  X                          @Y30LB02
.*   ----------------------------------                        @Y30LB02
.*   BITS 0-5 --------     IGNORED - MUST BE SET TO ZERO     @Y30LB02
.*                                                             @Y30LB02
.*   BITS 6-7 --------     MAY BE SET TO BINARY 0,1,2, OR 3    @Y30LB02
.*                                                             @Y30LB02
.*   CSN - IDENTIFIES A SPECIFIC CARTRIDGE, BY SERIAL          @Y30LB02
.*   NUMBER, TO BE REMOVED FROM THE MSF.  FOR MOVE             @Y30LB02
.*   TRANSIENT VOLUME, CSN IDENTIFIES THE SEQUENCE 1 CART-     @Y30LB02
.*   RIDGE OF THE VOLUME; THE ENTIRE VOLUME WILL BE MOVED      @Y30LB02
.*   FROM THE MSF.                                             @Y30LB02
.*                                                             @Y30LB02
.*   ECB - THE NAME OF THE EVENT CONTROL BLOCK (ECB) TO BE     @Y30LB02
.*   POSTED WHEN THE REQUEST IS COMPLETE. THE USER MUST ALSO   @Y30LB02
.*   DECLARE A MINIMUM 50 BYTE CONTIGUOUS AREA TO CONTAIN      @Y30LB02
.*   THE MESSAGE GENERATED BY THE MESSAGE TASK.  (THE ECB      @Y30LB02
.*   AND APPENDED DATA AREA MUST BE IN COMMON CORE IN VS/2).   @Y30LB02
.*   THE ECB IS POSTED WITH ONE OF THE FOLLOWING POST CODES:   @Y30LB02
.*   70, 71, 72, 73, 74, ETC..  THE POST CODE WILL BE PLACED   @Y30LB02
.*   IN THE LOW-ORDER BYTE OF THE ECB - '7F'X INDICATES        @Y30LB02
.*   SUCCESSFUL COMPLETION.  THE MSC DATA WILL BE MOVED TO     @Y30LB02
.*   CORE LOCATION ADDRESS(ECB)+4.  THE ECB PARAMETER MUST BE  @Y30LB02
.*   SPECIFIED AND THE ECB AREA MUST BE CLEARED (SET TO        @Y30LB02
.*   BINARY 0) BEFORE INVOKING THE MACRO.                      @Y30LB02
.*                                                             @Y30LB02
.*   VVICEXT - THE NAME OF AN AREA WHICH CONTAINS THE MSVC     @Y30LB02
.*   EXTENSION (VVICEXT) MAPPING.  IF THIS PARAMETER IS NOT    @Y30LB02
.*   SPECIFIED, THE CORRESPONDING POSITION IN THE REQUEST      @Y30LB02
.*   BLOCK MUST BE SET TO ZERO.  THE MAPPING MACRO FOR THE     @Y30LB02
.*   MSVC EXTENSION TO MOVE CARTRIDGE IS IEZMCRTE.             @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM      @Y30LB02
.*                THE REQUESTED FUNCTION                       @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*      ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE         @Y30LB02
.*                SPECIFIED IN MF(2)                           @Y30LB02
.*      ICB604I:  WARNING-ONLY THE MF PARAMETER IS VALID       @Y30LB02
.*                FOR LIST FORM                                @Y30LB02
.*      ICB605I:  ECB MUST BE SPECIFIED FOR STANDARD           @Y30LB02
.*                FORM MACRO                                   @Y30LB02
.*      ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD         @Y30LB02
.*                FORM MACRO                                   @Y30LB02
.*      ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME              @Y30LB02
.*                IF EXEC MACRO FORM REQUESTED                 @Y30LB02
.*      ICB615I:  INVALID MF PARAMETER SPECIFIED,              @Y30LB02
.*                MUST BE L, E, OR NULL                        @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO =IHBINNRA                                   @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 AND Y30LB02                @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO                                                 @Y30LB02
&SYMBOL  ICBMCRT &MF=,&FLAGS=,&LIBID=,&CSN=,&ECB=,                     *
               &VVICEXT=                                       @Y30LB02
         LCLB  &ERSW               CONDITION SWITCHES          @Y30LB02
         LCLC  &MCRT               MOVE MACRO INSTR INDX       @Y30LB02
&MCRT    SETC  'M'.'&SYSNDX'       ASSIGN CHARACTER VALUE      @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
         AIF   ('&MF(1)' NE 'L').EFORM      LIST FORM?         @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF LIST MACRO FORM                         @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR ILLEGAL PARAMETERS      @Y30LB02
.*       SPECIFIED FOR THE LIST FORM AND PUTS OUT MOVE         @Y30LB02
.*       CARTRIDGE REQUEST BLOCK.                              @Y30LB02
.*                                                             @Y30LB02
         AIF   ('&FLAGS' NE '' OR  '&LIBID'                            *
               NE '' OR '&CSN' NE '' OR '&ECB' NE '').WARN     @Y30LB02
         AGO   .LIST                                           @Y30LB02
.WARN    MNOTE 4,'  ICB604I - WARNING-ONLY THE MF PARAMETER '  @Y30LB02
         MNOTE 4,'  IS VALID FOR LIST FORM '                   @Y30LB02
.*                                                             @Y30LB02
.LIST    ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC MOVE CARTRIDGE MACRO--INITIALIZED LIST FORM   @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
MCRTLEN  DC    F'48'               LENGTH OF MOVE REQ          @Y30LB02
MCRTOPCD DC    XL1'0E'             MOVE CARTRIDGE OPCODE       @Y30LB02
MCRTRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
MCRTFLAG DC    XL1'00'             1-BYTE FLAGS AREA           @Y30LB02
MCRTLIBR DC    XL1'00'             1-BYTE LIBID AREA           @Y30LB02
MCRTRES2 DC    XL8'000000000000'   8-BYTE RESERVED AREA        @Y30LB02
MCRTRES3 DC    XL8'000000000000'   8-BYTE RESERVE AREA         @Y30LB02
MCRTCSN  DC    XL12'000000000000'  12-BYTE AREA FOR CSN        @Y30LB02
MCRTRES4 DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
MCRTASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
MCRTECB  DC    XL4'00000000'       4-BYTE AREA FOR ECB         @Y30LB02
MCRTVEXT DC    XL4'00000000'       4-BYTE VVICEXT AREA         @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN MSSC MOVE CARTRIDGE MACRO--UNINITIALIZED LIST FORM  @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBMCRT  DSECT                                                 @Y30LB02
MCRTLEN  DS    F                   LENGTH OF REQ 30 HEX        @Y30LB02
MCRTOPCD DS    XL1                 MOVE OPCODE 0E HEX          @Y30LB02
MCRTRES1 DS    XL1                 1-BYTE RESERVED AREA        @Y30LB02
MCRTFLAG DS    XL1                 1-BYTE FLAGS AREA           @Y30LB02
MCRTLIBR DS    XL1                 1-BYTE LIBID AREA           @Y30LB02
MCRTRES2 DS    XL8                 8-BYTE RESERVED AREA        @Y30LB02
MCRTRES3 DS    XL8                 8-BYTE RESERVE AREA         @Y30LB02
MCRTCSN  DS    CL12                12-BYTE AREA FOR CSN        @Y30LB02
MCRTRES4 DS    XL2                 2-BYTE RESERVED AREA        @Y30LB02
MCRTASID DS    XL2                 2-BYTE ASID AREA            @Y30LB02
MCRTECB  DS    A                   4-BYTES FOR ECB ADDR        @Y30LB02
MCRTVEXT DS    A                   4-BYTE VVICEXT ADDR         @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*       PROCESSING FOR THE EXECUTE MACRO FORM                 @Y30LB02
.*                                                             @Y30LB02
.EFORM   AIF   ('&MF(1)' NE 'E').SFORM      IS IT EFORM?       @Y30LB02
         AIF   ('&MF(2)' EQ '').EFOUT       IS 2ND PARM NULL?  @Y30LB02
.*                                                             @Y30LB02
*  MACMEAN  MSSC MOVE CARTRIDGE MACRO--EXECUTE FORM            @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)           LD ADDR OF REQUEST BLK      @Y30LB02
.*                                 USING IHBINNRA MACRO        @Y30LB02
         LA    0,48                LENGTH OF MOVE REQ          @Y30LB02
         ST    0,0(1)              STORE LENGTH                @Y30LB02
         MVI   4(1),X'0E'          STORE MOVE OPCODE           @Y30LB02
         AGO   .CKSW2                                          @Y30LB02
.*                                                             @Y30LB02
.EFOUT   ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB612I - MF(2) MUST CONTAIN REQ BLK '    @Y30LB02
         MNOTE 12,'  NAME IF EXEC MACRO FORM REQUESTED '       @Y30LB02
&ERSW    SETB  1              SET CONDITION SWITCH TO 1        @Y30LB02
.*                                                             @Y30LB02
.CKSW2   AIF   (&ERSW).FINISH      IF ERROR - END PROCESSING   @Y30LB02
         AGO   .CPROC     NAME OK - CONTINUE PROCESS           @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF 'STANDARD' MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF   ('&MF(1)' NE '').INCFM       STANDARD FORM?     @Y30LB02
         AIF   ('&FLAGS' NE '').CKECB       FLAGS SPECIFIED?   @Y30LB02
&ERSW    SETB  1                   ERROR CONDITION NOTED       @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED'        @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO   .CKSW4                                          @Y30LB02
.CKECB   AIF   ('&ECB' NE '').CKSW4     ECB SPECIFIED?         @Y30LB02
&ERSW    SETB  1                  ERROR CONDITION NOTED        @Y30LB02
         MNOTE 12,'  ICB605I - ECB MUST BE SPECIFIED FOR'      @Y30LB02
         MNOTE 12,'  STANDARD FORM MACRO '                     @Y30LB02
         AGO   .CKSW4                                          @Y30LB02
.*                                                             @Y30LB02
.INCFM   ANOP                                                  @Y30LB02
&ERSW    SETB  1                   ERROR CONDITION NOTED       @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL'         @Y30LB02
.*                                                             @Y30LB02
.CKSW4   AIF   (&ERSW).FINISH      IF ERROR-END PROCESSING     @Y30LB02
*  MACMEAN  MSSC MOVE CARTRIDGE MACRO--STANDARD FORM           @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL   1,&MCRT             BRANCH AROUND REQ BLK       @Y30LB02
MCRTLEN  DC    A(&MCRT-*)          LENGTH OF MOVE REQ          @Y30LB02
MCRTOPCD DC    XL1'0E'             MOVE CARTRIDGE OPCODE       @Y30LB02
MCRTRES1 DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
MCRTFLAG DC    XL1'00'             1-BYTE FLAGS AREA           @Y30LB02
MCRTLIBR DC    XL1'00'             1-BYTE LIBID AREA           @Y30LB02
MCRTRES2 DC    XL8'000000000000'   8-BYTE RESERVED AREA        @Y30LB02
MCRTRES3 DC    XL8'000000000000'   8-BYTE RESERVED AREA        @Y30LB02
MCRTCSN  DC    XL12'000000000000'  12-BYTE AREA FOR CSN        @Y30LB02
MCRTRES4 DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
MCRTASID DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
MCRTECB  DC    XL4'00000000'       4-BYTE AREA FOR ECB         @Y30LB02
MCRTVEXT DC    XL4'00000000'       4-BYTE VVICEXT AREA         @Y30LB02
&MCRT    EQU   *                                               @Y30LB02
.*                                                             @Y30LB02
.*       PROCESS REQUEST BLOCK FOR STANDARD AND EXECUTE FORMS  @Y30LB02
.*                                                             @Y30LB02
.CPROC   AIF   ('&FLAGS' EQ '').LIBID       FLAGS SPECIFIED?   @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').FLREG FLAGS IN REG-FORM? @Y30LB02
         MVC   6(1,1),&FLAGS       PUT FLAGS IN REQUEST BLK    @Y30LB02
         AGO   .LIBID              BRANCH                      @Y30LB02
.*                                                             @Y30LB02
.FLREG   ANOP                                                  @Y30LB02
         MVC   6(1,1),0(&FLAGS(1)) REG-FORM -PLACE FLAGS REQBLK@Y30LB02
.*                                                             @Y30LB02
.LIBID   AIF   ('&LIBID' EQ '').CSN       LIBID SPECIFIED?     @Y30LB02
         AIF   ('&LIBID'(1,1) EQ '(').LIBREG  REG-FORM?        @Y30LB02
         MVC   7(1,1),&LIBID       ADDR-FM, PUT LIBID IN REQBLK@Y30LB02
         AGO   .CSN                BRANCH                      @Y30LB02
.*                                                             @Y30LB02
.LIBREG  ANOP                                                  @Y30LB02
         MVC   7(1,1),0(&LIBID(1)) REG-FORM-PUT LIBID IN REQBLK@Y30LB02
.*                                                             @Y30LB02
.CSN     AIF   ('&CSN' EQ '').CKECB2         CSN SPECIFIED?    @Y30LB02
         AIF   ('&CSN'(1,1) EQ '(').CSNREG   CSN REG-FORM?     @Y30LB02
         MVC   24(12,1),&CSN       PUT CSN IN REQ BLOCK        @Y30LB02
         AGO   .CKECB2             BRANCH                      @Y30LB02
.*                                                             @Y30LB02
.CSNREG  ANOP                                                  @Y30LB02
         MVC   24(12,1),0(&CSN(1)) REG FORM-CSN IN BLOCK       @Y30LB02
.*                                                             @Y30LB02
.CKECB2  AIF   ('&ECB' EQ '').CKVEXT   ECB SPECIFIED           @Y30LB02
         AIF   ('&ECB'(1,1) EQ '(').ECBREG  ECB REG-FORM?      @Y30LB02
         LA    15,&ECB             ADDR-FORM                   @Y30LB02
         ST    15,40(1)            STORE ADDR IN REQBLK        @Y30LB02
         AGO   .CKVEXT                                         @Y30LB02
.ECBREG  ANOP                                                  @Y30LB02
         ST    &ECB,40(1)          REG-FORM,STORE ECB          @Y30LB02
.CKVEXT  AIF   ('&VVICEXT' EQ '').INVOKE  VVICEXT SPECIFIED    @Y30LB02
         AIF   ('&VVICEXT'(1,1) EQ '(').VVIREG   REG-FORM?     @Y30LB02
         LA    15,&VVICEXT         ADDR-FORM                   @Y30LB02
         ST    15,44(1)            STORE ADDR IN REQBLK        @Y30LB02
         AGO   .INVOKE                                         @Y30LB02
.VVIREG  ANOP                                                  @Y30LB02
         ST    &VVICEXT,44(1)      REG-FORM                    @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC   126                 INVOKE THE SVC              @Y30LB02
.FINISH  MEND
**/
*   ICBMCRT:  MACRO KEYS(MF,FLAGS,LIBID,CSN,ECB,
*                    VVICEXT);                             /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                          EXTERNAL DECLARES               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  TESTMCRT  FIXED EXT;    /*CTR FOR S-FORM INVOC      @Y30LB02*/
*   DCL  MCTESTR1  FIXED EXT;    /*TEST FOR REG1 INVOC       @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                          INTERNAL DECLARES               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  ERSW     FIXED;     /*ERROR CONDITION SWITCH        @Y30LB02*/
*   DCL  MCRTCD   CHAR;      /*MOVE CARTRIDGE OPCODE         @Y30LB02*/
*   DCL  RETCODE  FIXED;     /*RETURN CODE                   @Y30LB02*/
*   DCL  MCRTLN   CHAR;      /*LENGTH OF MOVE CART REQBLK    @Y30LB02*/
*   DCL  CTR      FIXED;     /*CTR FOR LIST PARAMETERS       @Y30LB02*/
*        CTR = 0;            /*INITIALIZE PARMAMETER CTR     @Y30LB02*/
*        MCRTCD = '0E';      /*INITIALIZE OPCODE             @Y30LB02*/
*        MCRTLN = '30';      /*INITIALIZE LENGTH             @Y30LB02*/
*        RETCODE = 0;        /*INITIALIZE RETURN CODE        @Y30LB02*/
*        ERSW = 0;           /*INITIALIZE ERROR SWITCH       @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      CHECK FOR VALID MACRO FORMAT - E, L, OR NULL        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*     IF MCTESTR1=0 THEN     /*REG 1 DECLARED?               @Y30LB02*/
*        DO;                 /*NO,DECLARE IT                 @Y30LB02*/
*             ANS('DCL MCR1 REG(1) PTR ;/*ADDRESS OF '
*             'REQUEST BLOCK @Y30LB02*/')SKIP;
*             MCTESTR1=MCTESTR1+1; /*INCREM REG DCLD CTR     @Y30LB02*/
*        END;                      /*                        @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF MF(1) ^= 'L' THEN           /*LIST FORM?              @Y30LB02*/
*     GO TO EFORM;                 /*NO,CK FOR EXECUTE FM    @Y30LB02*/
*   IF MF(2) = '' THEN             /*LIST NAME SPECIFIED?    @Y30LB02*/
*     DO;                          /*PRINT ERROR MESSAGE     @Y30LB02*/
*        ERSW = 1;                 /*SET ERROR SWITCH        @Y30LB02*/
*        RETCODE = 12;             /*SET ERROR RETURN TO 12  @Y30LB02*/
*        ANS MSG('  ICB602I - A NAME FOR THE '
*        'REQUEST BLOCK MUST BE SPECIFIED IN MF(2)')SKIP;  /*@Y30LB02*/
*        GO TO FINISH;             /*BRANCH TO END PROCES    @Y30LB02*/
*     END;                         /*                        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      THE FOLLOWING CODE WILL CHECK FOR ILLEGAL           @Y30LB02*/
*/*      PARAMETERS SPECIFIED WITH LIST FORM AND             @Y30LB02*/
*/*      PUT OUT MOVE CARTRIDGE REQUEST BLOCK                @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*   ELSE                           /*                        @Y30LB02*/
*     DO;                          /*CHECK LIST PARAMETERS   @Y30LB02*/
*/*                                                          @Y30LB02*/
*        IF FLAGS ^= '' THEN    /*FLAGS SPECIFIED?           @Y30LB02*/
*             CTR = CTR + 1;    /*YES,INCREMENT COUNTER      @Y30LB02*/
*        IF LIBID ^= '' THEN    /*MSF IDENTIFICATION?        @Y30LB02*/
*             CTR = CTR + 1;    /*YES,INCREMENT COUNTER      @Y30LB02*/
*        IF CSN ^= ''  THEN     /*CART SERIAL SPECIFIED?     @Y30LB02*/
*             CTR = CTR +1;     /*YES,INCREMENT COUNTER      @Y30LB02*/
*        IF ECB ^= '' THEN      /*ECB SPECIFIED?             @Y30LB02*/
*             CTR = CTR +1;     /*YES,INCREMENT COUNTER      @Y30LB02*/
*        IF VVICEXT ^= '' THEN  /*MSVC EXTENSION SPECD?      @Y30LB02*/
*             CTR = CTR +1;     /*YES,INCREMENT COUNTER      @Y30LB02*/
*        IF CTR  > 0  THEN      /*COUNTER GREATER THAN 0?    @Y30LB02*/
*          DO;                  /*YES,WARN USER              @Y30LB02*/
*             RETCODE = 4;      /*SET RETURN CODE TO 4       @Y30LB02*/
*             ANS MSG('  ICB604I - WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR'
*                 ' LIST FORM ')SKIP;                      /*@Y30LB02*/
*          END;                 /*                           @Y30LB02*/
*     END;                      /*                           @Y30LB02*/
*     IF MF(3) ^= '' THEN       /*PLS ATTRIBUTE SPECIFIED    @Y30LB02*/
*        GO TO ATTRLST;         /*BRCH,PROCESS ATTRIBUTE     @Y30LB02*/
*     ELSE                      /*PUT OUT INITIALIZED LIST   @Y30LB02*/
*       DO;                     /*OUTPUT DECLARES            @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC MOVE CARTRIDGE MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 'MF(2)' STATIC LOCAL,'
*        '/*MOVE CARTRIDGE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  MCRTLEN  FIXED(31)INIT('QUOTE('30')
*        'X),/*LENG OF MOVE CARTRIDGE REQUEST BLK @Y30LB02*/')SKIP;
*        ANS('    2  MCRTOPCD  FIXED(8)INIT('QUOTE('0E')
*        'X), /*MOVE CARTRIDGE OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES1 CHAR(1)INIT('QUOTE
*        ('00')'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTFLG   BIT(8)INIT('QUOTE
*        ('00000000')'B),/*ONE BYTE FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('       3  *      BIT(2),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  MCRTTRAN  BIT(1),/*SOURCE WITH'
*        ' TRANSIENT CSN1 SPECD @Y30LB02*/')SKIP;
*        ANS('       3  MCRTSCT  BIT(1),/*SOURCE WITH'
*        ' SCRATCH ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(4),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTLIB  BIT(8)INIT('QUOTE
*        ('00000000')'B), /*ONE BYTE-LIBID @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(5),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  MCRTLD    BIT(2),/*BINARY NUMBER'
*        ' ZERO TO THREE @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES2 CHAR(8) ,/*RESERVED @Y30LB02*/')SKIP;
*        ANS('     3  *(8) CHAR(1)INIT((8)'QUOTE
*        ('00')'X),/*INIT RESERVED AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES3 CHAR(8) ,/*RESERVED @Y30LB02*/')SKIP;
*        ANS('     3  *(8) CHAR(1)INIT((8)'QUOTE
*        ('00')'X),/*INIT RES AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTCSN  CHAR(12) ,/*CART SER NO @Y30LB02*/')SKIP;
*        ANS('     3  *(12) CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CSN AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('     2  MCRTRES4 CHAR(2) INIT('
*        QUOTE('0000')'X),/*RESERVED @Y30LB02*/')SKIP;
*        ANS('     2  MCRTASID CHAR(2) INIT('
*        QUOTE('0000')'X),/*ASID FIELD @Y30LB02*/')SKIP;
*        ANS('     2  MCRTECB  FIXED(31)INIT(0),/*EVENT '
*        'CONTROL BLOCK ADDRESS @Y30LB02*/')SKIP;
*        ANS('     2  MCRTVEXT  FIXED(31)INIT(0);/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;   /*BRANCH TO END                     @Y30LB02*/
*      END;              /*                                  @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC MOVE CARTRIDGE MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 'MF(2)' 'MF(3)','
*        ' /*MOVE CARTRIDGE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  MCRTLEN  FIXED(31),/*LENGTH OF'
*        ' MOVE CARTRIDGE REQUEST BLK = 30 HEX @Y30LB02*/')SKIP;
*        ANS('    2  MCRTOPCD  FIXED(8)'
*        ' , /*MOVE CARTRIDGE OPCODE = 0E HEX @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES1  CHAR(1),/*RESERVED'
*        ' AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTFLG   BIT(8),'
*        '/*ONE BYTE FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('       3  *      BIT(2),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  MCRTTRAN  BIT(1),/*SOURCE WITH'
*        ' TRANSIENT CSN1 SPECD @Y30LB02*/')SKIP;
*        ANS('       3  MCRTSCT  BIT(1),/*SOURCE WITH'
*        ' SCRATCH ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(4),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTLIB  BIT(8) ,/*BYTE-LIBID @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(6),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  MCRTLD    BIT(2),/*BINARY NUMBER'
*        ' ZERO TO THREE @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES2 CHAR(8) ,/*8-BYTE RES  @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES3 CHAR(8) ,/*8-BYTE RES @Y30LB02*/')SKIP;
*        ANS('    2  MCRTCSN  CHAR(12) ,/*CART SER NO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES4 CHAR(2) ,/*RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  MCRTASID CHAR(2) ,/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  MCRTECB  FIXED(31),/*EVENT '
*        'CONTROL BLOCK ADDRESS @Y30LB02*/')SKIP;
*        ANS('    2  MCRTVEXT  FIXED(31);/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;    /*BRANCH TO END                    @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*   PROCESSING THE EXECUTE MACRO FORM                      @Y30LB02*/
*/*                                                          @Y30LB02*/
*EFORM:
*   IF MF(1) ^= 'E' THEN     /*EXECUTE FORM SPECIFIED?       @Y30LB02*/
*     GO TO SFORM;           /*BRANCH TO CK FOR STAND        @Y30LB02*/
*   IF MF(2) = '' THEN       /*IS LIST NAME SPECIFIED?       @Y30LB02*/
*     DO;                    /*PRINT ERROR MESSAGE           @Y30LB02*/
*        ERSW = 1;           /*SET SET ERROR SWITCH TO 1     @Y30LB02*/
*        RETCODE = 12;       /*SET RETURN CODE TO 12         @Y30LB02*/
*        ANS MSG('  ICB612I - MF(2) MUST CONTAIN '
*        'REQ BLK NAME IF EXEC MACRO FORM REQUESTED')SKIP; /*@Y30LB02*/
*        GO TO CKSW;         /*BRANCH                        @Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                    /*PROCESS EXECUTE FORM           @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC MOVE CARTRIDGE MACRO    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*            '              @Y30LB02*/')SKIP;
*        ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*    IF MF(3) = 'COMPLETE' THEN  /*COMPLETE SPECIFIED?       @Y30LB02*/
*      DO;                       /*                          @Y30LB02*/
*          ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'  /*@Y30LB02*/
*          '/*ZERO OUT REQUEST BLOCK @Y30LB02*/')SKIP;
*      END;                      /*                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('RFY(MCR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('MCR1= ADDR('MF(2)'); /*R1 PTR'
*        '  TO REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('MCRTLEN= 'QUOTE(MCRTLN)'X; '           /*@Y30LB02*/
*        '/*LENGTH-MOVE REQUEST @Y30LB02*/')SKIP;
*        ANS('MCRTOPCD= 'QUOTE(MCRTCD)'X;'           /*@Y30LB02*/
*        '/*MOVE CARTRIDGE OPCODE @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*CKSW:
*   IF ERSW = 1 THEN           /*ERROR SWITCH SET?           @Y30LB02*/
*     GO TO FINISH;            /*YES,END PROCESSING          @Y30LB02*/
*   ELSE                       /*BRCH,CHECK PARAMETERS       @Y30LB02*/
*     GO TO COMPROC;           /*BRANCH                      @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN        /*STANDARD FORM SPECIFIED?    @Y30LB02*/
*     DO;                      /*NO,PROCESS ERROR            @Y30LB02*/
*        ERSW = 1;             /*SET ERROR SWITCH TO 1       @Y30LB02*/
*        RETCODE = 12;         /*SET RETURN CODE TO 12       @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER '
*             'SPECIFIED, MUST BE L, E, OR NULL')SKIP;     /*@Y30LB02*/
*        GO TO CKSW2;         /*BRANCH,CHECK ERROR SWITCH    @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS = '' THEN        /*FLAGS SPECIFIED?             @Y30LB02*/
*     DO;                     /*NO,PRINT ERROR MESSAGE       @Y30LB02*/
*        ERSW = 1;            /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE = 12;        /*SET RETURN CODE TO 12        @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO CKSW2;         /*BRANCH TO CK ERROR SWITCH    @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*   IF ECB = '' THEN          /*ECB SPECIFIED?               @Y30LB02*/
*     DO;                     /*PRINT OUT ERROR MSG          @Y30LB02*/
*        ERSW = 1;            /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE = 12;        /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB605I - ECB MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*CKSW2:
*   IF ERSW = 1 THEN         /*ERROR SWITCH SET?             @Y30LB02*/
*     GO TO FINISH;          /*YES,BRANCH TO END             @Y30LB02*/
*   IF TESTMCRT = 1 THEN     /*STD FORM INVOKED BEFORE?      @Y30LB02*/
*     DO;                    /*YES,NO DECLARES               @Y30LB02*/
*        ANS('/*******************************************'
*           '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC MOVE CARTRIDGE MACRO    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(MCR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('MCR1=ADDR(MCRTLEN); /*R1 PTR TO REQ @Y30LB02*/')SKIP;
*        ANS('MCRTLEN= 'QUOTE(MCRTLN)'X; '           /*@Y30LB02*/
*        '/*LENGTH-MOVE REQUEST @Y30LB02*/')SKIP;
*        ANS('MCRTOPCD= 'QUOTE(MCRTCD)'X;'           /*@Y30LB02*/
*        '/*MOVE CARTRIDGE OPCODE @Y30LB02*/')SKIP;
*        GO TO COMPROC;      /*BRCH,CK PARAMETERS            @Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                     /*1ST INVOC STD FORM            @Y30LB02*/
*     DO;                    /*PUT OUT DECLARES              @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*   MACMEAN  MSSC MOVE CARTRIDGE MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(MCR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('MCR1=ADDR(MCRTLEN);/*R1 PTR TO REQBLK @Y30LB02*/')SKIP;
*        ANS('DCL 1  MCRTSF01  STATIC LOCAL,'
*        '/*MOVE CART REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  MCRTLEN  FIXED(31)INIT('QUOTE('30')
*        'X),/*LENG OF MOVE CARTRIDGE REQUEST BLK @Y30LB02*/')SKIP;
*        ANS('    2  MCRTOPCD  FIXED(8)INIT('QUOTE('0E')
*        'X), /*MOVE CARTRIDGE OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES1 CHAR(1)INIT('QUOTE
*        ('00')'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTFLG   BIT(8)INIT('QUOTE
*        ('00000000')'B),/*ONE BYTE FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('       3  *      BIT(2),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  MCRTTRAN  BIT(1),/*SOURCE WITH'
*        ' TRANSIENT CSN1 SPECD @Y30LB02*/')SKIP;
*        ANS('       3  MCRTSCT  BIT(1),/*SOURCE WITH'
*        ' SCRATCH ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(4),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTLIB  BIT(8)INIT('QUOTE
*        ('00000000')'B), /*ONE BYTE-LIBID @Y30LB02*/')SKIP;
*        ANS('       3  *       BIT(5),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('       3  MCRTLD    BIT(2),/*BINARY NUMBER'
*        ' ZERO TO THREE @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES2 CHAR(8) ,/*RESERVED @Y30LB02*/')SKIP;
*        ANS('     3  *(8) CHAR(1)INIT((8)'QUOTE
*        ('00')'X),/*INIT RESERVED AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES3 CHAR(8) ,/*RESERVED @Y30LB02*/')SKIP;
*        ANS('     3  *(8) CHAR(1)INIT((8)'QUOTE
*        ('00')'X),/*INIT RES AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTCSN  CHAR(12) ,/*CART SER NO @Y30LB02*/')SKIP;
*        ANS('     3  *(12) CHAR(1)INIT((12)'QUOTE
*        ('00')'X),/*INIT CSN AREA TO ZERO @Y30LB02*/')SKIP;
*        ANS('    2  MCRTRES4 CHAR(2) INIT('
*        QUOTE('0000')'X),/*RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  MCRTASID CHAR(2) INIT('
*        QUOTE('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  MCRTECB  FIXED(31)INIT(0),/*EVENT '
*        'CONTROL BLOCK ADDRESS @Y30LB02*/')SKIP;
*        ANS('    2  MCRTVEXT  FIXED(31)INIT(0);/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*        TESTMCRT = TESTMCRT + 1; /*INCREM STD FORM CTR      @Y30LB02*/
*     END;                        /*                         @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*   COMMON PROCESSING FOR EXECUTE AND STANDARDS FORMS      @Y30LB02*/
*/*                                                          @Y30LB02*/
*COMPROC:
*   IF FLAGS ^= '' THEN       /*FLAGS SPECIFIED?             @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('MCRTFLG= ' FLAGS';/*VALUE OF FLAGS'
*        ' @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF LIBID ^= '' THEN      /*MSF ID SPECIFIED?             @Y30LB02*/
*        ANS('MCRTLIB= 'LIBID';/*VALUE OF LIBID @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF CSN ^= '' THEN        /*CART SERIAL NUMBER SPCD?      @Y30LB02*/
*        ANS('MCRTCSN= 'CSN';/*CARTRIDGE SERIAL'
*        ' NUMBER @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF ECB ^= '' THEN        /*ECB SPECIFIED?                @Y30LB02*/
*        ANS('MCRTECB=ADDR' ECB ';/*ADDRESS OF EVENT '
*        'CONTROL BLOCK @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF VVICEXT ^= '' THEN    /*MSVC EXTENSION SPECIFIED?     @Y30LB02*/
*        ANS('MCRTVEXT=ADDR'VVICEXT ';/*MSVC '
*        'EXTENSION AREA @Y30LB02*/')SKIP;
*/*      INVOKE THE SVC AND END PROCESSING                   @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('SVC (126);/*INVOKE THE SVC @Y30LB02*/')SKIP;
*        ANS('RFY  MCR1 UNRSTD;/*UNRESTRICT REG 1 @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:
*        RETURN CODE(RETCODE);                             /*@Y30LB02*/
*        %END;                                             /*@Y30LB02*/
./ ADD NAME=ICBMESG
* %/*  START OF SPECIFICATIONS****
.*
.*01   NAME = ICBMESG                               6/19/74
.*
.*01   DESCRIPTIVE-NAME = MESSAGE PROCESSING MACRO
.*
.*01   COPYRIGHT = NONE
.*
.*01   STATUS = OS/VS1 RELEASE 4, LEVEL 0
.*              OS/VS2 RELEASE 3, LEVEL 0
.*
.*01   FUNCTION = THIS MACRO EXPANDS INTO AN SVC 126 AND IS TO
.*                BE USED WITH A REQUEST BLOCK MAPPED BY IEZMESG.
.*                SOLICITED AND UNSOLICITED MESSAGES ARE PASSED
.*                TO MSVC IN THIS MANNER AND MSVI DATA SET RECORDS
.*                ARE UPDATED.
.*
.*01   NOTES = AS FOLLOWS:
.*                WHEN SVC 126 IS CALLED, REGISTER 1 SHOULD
.*                POINT TO IEZMESG PARAMETER LIST.
.*
.*02     CODE = PLS2
.*
.*02     RESTRICTIONS = NONE
.*
.*02     REGISTER-CONVENTIONS = NONE
.*
.*01   MODULE-TYPE = EXECUTABLE MACRO
.*
.*02     PROCESSOR = PLS2
.*
.*02     ATTRIBUTES = REENTERABLE
.*
.*02     ENTRY-POINT = NONE
.*
.*02     LINKAGE = SVC 126
.*
.*01 OPERATION:
.*          DCL  MESGPTR  POINTER(31)
.*          INCLUDE IEZMESG
.*          MESLNGTH=MESLEN
.*          MESCODE=MESOP
.*          MESGBUF='WHAT EVER DSM MESSAGE IS CALLED'
.*          REG1 = ADDR(REQUEST BLOCK)
.*          ? ICBMESG
.*
.*01  INPUT = PLS INVOCATION:   LABEL: ? ICBMESG
.*
.*01  EXIT-NORMAL = VALID INVOCATION
.*
.*02     CONDITION = RETURN CODE = 0
.*
.*02     OUTPUT = REQUESTED ORDER GENERATED FOR THE SVC
.*
.*01  EXIT-ERROR = NONE
.*
.*01  EXTERNAL REFERENCES = NONE
.*
.*01  TABLES = NONE
.*
.*01  CONTROL-BLOCKS = NONE
.*
.*01  INNER MACROS = NONE
.*
.*01  SYSTEM MACRO = NONE
.*
.*01  CHANGE-ACTIVITY = NONE
.*
.**** END OF SPECIFICATIONS ***/
*    ICBMESG:  MACRO; /*                                     @Y30LB22*/
*/*********************************************************/
*/*      THE FOLLOWING CODE WILL INVOKE SVC 126.          */
*/*      THE RETURN CODE IS SET AND PROCESSING IS ENDED   */
*/*********************************************************/
*        ANS('SVC  (126);/*INVOKE SVC 126*/')SKIP;  /*       @Y30LB22*/
*/*                                                        */
*        RETURN CODE(0);                                   /*@Y30LB22*/
*        %END;                                             /*@Y30LB22*/
./ ADD NAME=ICBMNTDE
* %/* START OF SPECIFICATIONS****
         MACRO
&SYMBOL  ICBMNTDE &MF=,&TYPE=,&FLAGS=,&VOLID=,&VUA=,                   *
               &HOSTID=,&MEXTN=,&ECB=,&MJFCB=
.************************************************************* @Y30LB02
.*                                                             @Y30LB02
.* MODULE-NAME = ICBMNTDE                                      @Y30LB02
.*                                                             @Y30LB02
.* DESCRIPTIVE-NAME = MOUNT/DEMOUNT MACRO                      @Y30LB02
.*                                                             @Y30LB02
.* COPYRIGHT = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.* STATUS = OPERATING SYSTEM = VS/2 REL 3                      @G18MB04
.*                                                             @Y30LB02
.* FUNCTION = REQUESTS MOUNT/DEMOUNT OF VIRTUAL VOLUMES        @Y30LB02
.*            FROM THE MSC USING SVC 126. THE                  @Y30LB02
.*            MOUNT REQUEST IS ISSUED WHEN A VIRTUAL           @Y30LB02
.*            VOLUME IS TO BE MADE AVAILABLE FOR               @Y30LB02
.*            PROCESSING. CONVERSELY, WHEN THE                 @Y30LB02
.*            VOLUME IS NO LONGER REQUIRED FOR                 @Y30LB02
.*            PROCESSING, THE DEMOUNT REQUEST IS               @Y30LB02
.*            ISSUED.                                          @Y30LB02
.*                                                             @Y30LB02
.* NOTES =                                                     @Y30LB02
.*                                                             @Y30LB02
.*   CODE = MACRO IS BILINGUALLY CODED. IN THE ORIGINAL        @Y30LB02
.*          VERSION OF THIS MACRO, THE BAL AND PL/S            @ZA28964
.*          SECTIONS ASSIGNED DIFFERENT LABELS TO THE          @ZA28964
.*          SAME REQUEST BLOCK STRUCTURE. TO MAINTAIN          @ZA28964
.*          COMPATABILITY, THE ALTERNATE PL/S LABELS HAVE      @ZA28964
.*          BEEN ADDED TO THE BAL REQUEST BLOCK DEFINITION     @ZA28964
.*          AND THE ALTERNATE BAL LABELS ADDED TO THE PL/S     @ZA28964
.*          REQUEST BLOCK DEFINITION.                          @ZA28964
.*                                                             @Y30LB02
.*   DEPENDENCIES = NONE                                       @Y30LB02
.*                                                             @Y30LB02
.*   RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE           @Y30LB02
.*                  AVOIDED IN THE INVOKING MODULE:            @Y30LB02
.*                  ICB, MD, DM AND MNT. SVC 126, WHICH        @Y30LB02
.*                  IS INVOKED BY THIS MACRO, REQUIRES THAT    @ZA28964
.*                  THE CALLER BE APF-AUTHORIZED, IN           @ZA28964
.*                  PROTECTION KEY 0, OR IN SUPERVISOR STATE.  @ZA28964
.*                                                             @Y30LB02
.*   REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS    @Y30LB02
.*                          BY MACROS: R0,R1,R14,AND R15.      @Y30LB02
.*                                                             @Y30LB02
.*   PATCH-LABEL = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.* MODULE-TYPE = MACRO                                         @Y30LB02
.*                                                             @Y30LB02
.*   PROCESSOR = ASSEM                                         @Y30LB02
.*               PL/S                                          @Y30LB02
.*                                                             @Y30LB02
.*   ATTRIBUTES = REUSABLE                                     @Y30LB02
.*                RE-ENTRANT (EXECUTE FORM)                    @Y30LB02
.*                                                             @Y30LB02
.* ENTRY-POINT = ICBMNTDE                                      @Y30LB02
.*                                                             @Y30LB02
.*   PURPOSE = SEE FUNCTION                                    @Y30LB02
.*                                                             @Y30LB02
.*   LINKAGE = SEE INPUT                                       @Y30LB02
.*                                                             @Y30LB02
.* INPUT = CODE THE ICBMNTDE MACRO USING                       @Y30LB02
.*         ONE OF THE FOLLOWING SYNTAX FORMS (THE              @Y30LB02
.*         '(R)' REGISTER PARAMETER FORM IS VALID              @Y30LB02
.*         ONLY IN THE BAL VERSIONS):                          @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORMS =                                              @Y30LB02
.*                                                             @Y30LB02
.*     BAL - ICBMNTDE MF=(L,MAP),TYPE=MNTDMNT                 @Y30LB02
.*                                                             @ZA28964
.*       REQUIRED PARAMETERS - MF=L,TYPE                       @ZA28964
.*                                                             @Y30LB02
.*     PL/S- ICBMNTDE MF(L,NAME,ATTR) TYPE(MNTDMNT)           @Y30LB02
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF(L,NAME) TYPE                 @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORMS =                                          @ZDR2048
.*                                                             @Y30LB02
.*     BAL - ICBMNTDE TYPE=MNTDMNT,VOLID=NAME(R),            @Y30LB02
.*                    VUA=NAME(R),ECB=NAME(R),               @ZDR2048
.*                    FLAGS=NAME(R),MEXTN=NAME(R),           @G18MB04
.*                    MJFCB=NAME(R),HOSTID=NAME(R)           @G18MB04
.*                                                             @ZA28964
.*       REQUIRED PARAMETERS - TYPE,VOLID(FOR DMNT ONLY),      @ZA28964
.*                             VUA(FOR MNT ONLY)               @ZA28964
.*                                                             @Y30LB02
.*     PL/S- ICBMNTDE TYPE(MNTDMNT) VOLID(NAME) VUA(NAME)     @ZDR2048
.*                    ECB(NAME) FLAGS(NAME) MEXTN(NAME)        @G18MB04
.*                    MJFCB(NAME) HOSTID(NAME)                 @G18MB04
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - TYPE, VOLID(FOR DMNT ONLY),     @ZA28964
.*                             VUA(FOR MNT ONLY)               @ZA28964
.*                                                             @Y30LB02
.*   EXECUTE FORMS =                                           @ZDR2048
.*                                                             @Y30LB02
.*     BAL - ICBMNTDE MF=(E,NAME(R)),TYPE=MNTDMNT,           @ZDR2048
.*                    VOLID=NAME(R),VUA=NAME(R),             @ZDR2048
.*                    ECB=NAME(R),FLAGS=NAME(R),             @ZDR2048
.*                    MEXTN=NAME(R),MJFCB=NAME(R),           @G18MB04
.*                    HOSTID=NAME(R)                          @ZDR2048
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF=(E,NAME(R)), TYPE           @Y30LB02
.*                                                             @Y30LB02
.*     PL/S- ICBMNTDE MF(E,NAME,COMPLETE) TYPE(MNTDMNT)       @ZDR2048
.*                    VOLID(NAME) VUA(NAME) ECB(NAME)          @ZDR2048
.*                    FLAGS(NAME) MEXTN(NAME) MJFCB(NAME)      @G18MB04
.*                    HOSTID(NAME)                             @ZDR2048
.*                                                             @Y30LB02
.*       REQUIRED PARAMETERS - MF(E,NAME) TYPE                 @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS =                                      @Y30LB02
.*                                                             @Y30LB02
.*     MF = MACRO FORMAT                                       @Y30LB02
.*                                                             @Y30LB02
.*       L = LIST FORM. THE EXPANSION OF THE LIST FORM         @Y30LB02
.*           WILL DEFINE A REQUEST BLOCK.                      @Y30LB02
.*                                                             @ZA28964
.*         NAME = LABEL ASSIGNED TO THE REQUEST BLOCK IN       @Y30LB02
.*             PL/S (REQUIRED IN PL/S VERSION).                @Y30LB02
.*                                                             @ZA28964
.*         MAP = SPECIFIES THAT AN ASSEMBLER VERSION           @Y30LB02
.*             INVOCATION WILL PRODUCE A MAPPING DSECT         @Y30LB02
.*             LABELED 'ICBMNTDE' (FOR DEMOUNT) OR             @Y30LB02
.*             'ICBMNTD1' (FOR MOUNT).                         @Y30LB02
.*                                                             @ZA28964
.*         ATTR = A PL/S ATTRIBUTE THAT WILL BE PLACED         @Y30LB02
.*             IN AN UNINITIALIZED REQUEST BLOCK DEFINITION.   @Y30LB02
.*             SOME ATTRIBUTE EXAMPLES ARE:                    @Y30LB02
.*               STATIC LOCAL, NONLOCAL, BASED(*), ETC         @Y30LB02
.*                                                             @Y30LB02
.*       NULL = STANDARD FORM IS INVOKED. THE EXPANSION OF     @Y30LB02
.*           THIS FORM CONSISTS OF A REQUEST BLOCK (ONLY       @Y30LB02
.*           IN THE FIRST INVOCATION OF THIS FORM IN ANY       @Y30LB02
.*           MODULE) LABELED ICBMLST OR ICBDMLST IN THE        @ZA28964
.*           PL/S VERSIONS, A LINKAGE INSTRUCTION AND          @ZA28964
.*           PARAMETER BINDING INSTRUCTIONS.                   @ZA28964
.*                                                             @Y30LB02
.*       E = EXECUTE FORM. THE EXPANSION OF THIS               @Y30LB02
.*           FORM CONSISTS OF A LINKAGE INSTRUCTION AND        @Y30LB02
.*           POSSIBLY PARAMETER BINDING INSTRUCTIONS.          @Y30LB02
.*                                                             @ZA28964
.*         NAME = LABEL OF THE REQUEST BLOCK TO USE.           @Y30LB02
.*                                                             @ZA28964
.*         COMPLETE = CAUSES THE MACRO TO ZERO OUT THE         @Y30LB02
.*             REQUEST BLOCK AND THEN INSERT THE FUNCTION      @Y30LB02
.*             OPCODE AND LENGTH INTO THE REQUEST BLOCK.       @Y30LB02
.*                                                             @Y30LB02
.*     TYPE = INDICATES WHETHER THE REQUEST IS FOR A           @Y30LB02
.*         MOUNT (MNT) OR DEMOUNT (DMNT).                      @Y30LB02
.*                                                             @Y30LB02
.*     VOLID = LABEL OF THE LOCATION CONTAINING THE VOLUME     @ZA28964
.*         SERIAL NUMBER OF THE VIRTUAL VOLUME TO              @ZA28964
.*         BE MOUNTED OR DEMOUNTED. VOLID IS NOT SPECIFIED     @Y30LB02
.*         WHEN A MOUNT SCRATCH IS REQUESTED, BUT IS           @ZDR2048
.*         REQUIRED FOR A DEMOUNT.                             @ZDR2048
.*                                                             @Y30LB02
.*     ECB = LABEL OF THE EVENT CONTROL BLOCK FOR              @Y30LB02
.*         NOTIFICATION WHEN THE DEMOUNT PROCESS HAS           @Y30LB02
.*         COMPLETED. THIS PARAMETER IS REQUIRED ONLY          @Y30LB02
.*         IF THE DELAYED RESPONSE ATTRIBUTE IS SPECIFIED      @Y30LB02
.*         WITH A DEMOUNT REQUEST OF A SUBSYSTEM VOLUME.       @Y30LB02
.*         A POST CODE IN THE RANGE '70'X - '7F'X WILL         @Y30LB02
.*         BE PLACED IN THE LOW-ORDER BYTE OF THE ECB ON       @Y30LB02
.*         COMPLETION OF THE DEMOUNT ('7F'X IS THE             @Y30LB02
.*         SUCCESSFUL COMPLETION CODE). THE ECB SHOULD BE      @Y30LB02
.*         SET TO BINARY ZERO BEFORE INVOKING THE MACRO.       @Y30LB02
.*         THIS PARAMETER MAY ONLY BE USED IN DEMOUNT          @ZA28964
.*         REQUESTS. THE DMNTASID FIELD OF THE REQUEST BLOCK   @ZA28964
.*         IS USED BY SVC 126 TO RECORD THE ADDRESS            @ZA28964
.*         SPACE ID OF THE INVOKING MODULE SO THAT THE         @ZA28964
.*         CORRECT ECB MAY BE LOCATED FOR POSTING.             @ZA28964
.*                                                             @Y30LB02
.*     VUA = LABEL OF THE LOCATION CONTAINING THE VIRTUAL      @ZA28964
.*         UNIT ADDRESS TO WHICH THE VOLUME IS TO BE           @ZA28964
.*         MOUNTED OR DEMOUNTED. A VUA IS REQUIRED FOR A       @ZA28964
.*         MOUNT.                                              @ZA28964
.*                                                             @Y30LB02
.*     FLAGS = LABEL OF TWO BYTES SPECIFYING THE ATTRIBUTES    @Y30LB02
.*         TO BE ASSOCIATED WITH THE REQUEST:                  @Y30LB02
.*                                                             @Y30LB02
.*       MOUNT REQUESTS =                                      @Y30LB02
.*                                                             @Y30LB02
.*         0... ....    RESERVED - ALWAYS ZERO                 @Y30LB02
.*         .1.. ....    MSVC IS ISSUING THE MOUNT. MSSC WILL   @Y30LB02
.*                        NOT CALL MSVC TO COMMUNICATE         @ZA28964
.*                        THE REQUEST.                         @ZA28964
.*         ..1. ....    MSVC SECONDARY VOLUME REQUEST. USED    @Y30LB02
.*                        WITH MOUNT SCRATCH TO INDICATE A     @ZA28964
.*                        NON-SPECIFIC SECONDARY VOLUME        @ZA28964
.*                        REQUEST FROM EOV. MSVC WILL SELECT   @ZA28964
.*                        A VOLUME BASED ON THE SECONDARY      @ZA28964
.*                        VOLUME ALGORITHM INSTEAD OF          @ZA28964
.*                        SELECTING A VOLUME BASED ON THE      @ZA28964
.*                        PRIMARY VOLUME ALGORITHM. THIS BIT   @ZA28964
.*                        IS IGNORED BY THE MSVC IF A MOUNT    @ZA28964
.*                        SCRATCH IS NOT INDICATED.            @ZA28964
.*         ...1 ....    MOUNT SCRATCH VOLUME AS SELECTED BY    @Y30LB02
.*                        THE MSVC.                            @ZA28964
.*         .... 1...    MOUNT EXTENSION PROVIDED.  SET BY THE  @G18MB04
.*                        MEXTN KEYWORD TO INDICATE THAT THE   @ZA28964
.*                        JFCB POINTER IS CONTAINED IN AN      @ZA28964
.*                        EXTENSION BLOCK RATHER THAN IN THE   @ZA28964
.*                        MOUNT REQUEST BLOCK.                 @ZA28964
.*         .... .000    RESERVED - ALWAYS ZERO                 @G18MB04
.*         0000 0000    SECOND BYTE - RESERVED - ALWAYS ZERO   @Y30LB02
.*                                                             @Y30LB02
.*       DEMOUNT REQUESTS =                                    @Y30LB02
.*                                                             @Y30LB02
.*         0... ....    RESERVED - ALWAYS ZERO                 @Y30LB02
.*         .1.. ....    DELAYED RESPONSE. ECB WILL BE POSTED   @Y30LB02
.*                        WHEN THE DEMOUNT IS COMPLETE.        @ZA28964
.*         ..1. ....    VUA FIELD HAS BEEN INITIALIZED AND     @ZDR2048
.*                        IS VALID.                            @ZA28964
.*         ...0 0000    RESERVED - ALWAYS ZERO                 @ZDR2048
.*         0000 0000    SECOND BYTE - RESERVED - ALWAYS ZERO   @Y30LB02
.*                                                             @Y30LB02
.*     HOSTID = LABEL OF A 5-BYTE FIELD WHICH CONTAINS THE     @Y30LB02
.*         MANUFACTURER'S CPU IDENTIFICATION. IF SET TO ZERO,  @Y30LB02
.*         SVC 126 WILL FILL IN THE ID OF THE CALLING CPU.     @ZA28964
.*                                                             @Y30LB02
.*     MJFCB = LABEL OF THE FIELD CONTAINING A POINTER         @G18MB04
.*         TO THE JFCB TO BE USED BY THE MSVC. MUTUALLY        @G18MB04
.*         EXCLUSIVE WITH THE MEXTN PARAMETER. USED IN         @G18MB04
.*         NONSPECIFIC MOUNT REQUESTS ONLY.                    @G18MB04
.*                                                             @Y30LB02
.*     MEXTN = LABEL OF THE MOUNT PARAMETER LIST               @G18MB04
.*         EXTENSION IN THE INVOKING PROGRAM. USED FOR         @G18MB04
.*         NON-SPECIFIC REQUESTS ONLY. MUTUALLY                @G18MB04
.*         EXCLUSIVE WITH THE MJFCB PARAMETER.                 @G18MB04
.*                                                             @Y30LB02
.* OUTPUT =                                                    @Y30LB02
.*                                                             @Y30LB02
.*   INLINE PL/S OR BAL STATEMENTS THAT PERFORM THE            @Y30LB02
.*   REQUESTED FUNCTION AND ERROR MESSAGES AS COMMENTS         @Y30LB02
.*   AT THE POINT OF INVOCATION.                               @Y30LB02
.*                                                             @Y30LB02
.*   SVC126 REQUEST BLOCK (LIST AND STANDARD FORMS):           @Y30LB02
.*                                                             @Y30LB02
.*     OFFSETS  LENGTH      BAL LABELS    DESCRIPTION          @ZA28964
.*     DEC HEX  (BYTES)   MOUNT   DEMOUNT                      @ZA28964
.*     -------  ------- -------- -------- ------------         @ZA28964
.*      0  (0)     4    MNTLEN   DMNTLEN  REQ BLK LENGTH       @ZA28964
.*      4  (4)     1    MNTOPCD  DMOPCODE REQUEST OPCODE       @ZA28964
.*      5  (5)     1    MNTRES1  DMNTRES1 RESERVED             @ZA28964
.*      6  (6)     2    MNTFLAGS DMNTFLAG FLAGS                @ZA28964
.*      8  (8)     6    MNTVOLID DMVOLID  VOLUME ID            @ZA28964
.*     14  (E)     2    MNTVUA   DMNTASID VUA  ASID           @ZA28964
.*     16  (10)    5    MNTHOSTD -------- HOST ID (MNT)        @ZA28964
.*     16  (10)    4    -------- DMNTECB  ECB (DMNT)           @ZA28964
.*     20  (14)    5    -------- DMHOSTID HOST ID (DMNT)       @ZA28964
.*     21  (15)    3    MNTRES2  -------- RESERVED AREA        @ZA28964
.*     24  (18)    4    MNTEXTP  -------- EXTN ADDR            @ZA28964
.*     24  (18)    4    MNTJFCB  -------- JFCB POINTER         @ZA28964
.*     25  (19)    1    -------- DMNTRES2 RESERVED             @ZA28964
.*     26  (1A)    2    -------- DMNTVUA  VUA FOR DMNT         @ZA28964
.*                                                             @Y30LB02
.* EXIT-NORMAL = VALID INVOCATION                              @Y30LB02
.*                                                             @Y30LB02
.*   CONDITION = RETURN CODE = 0  4                           @Y30LB02
.*                                                             @Y30LB02
.*   OUTPUT = REQUEST BLOCK AND STATEMENTS GENERATED. IF       @ZA28964
.*            PL/S WARNING MESSAGES ARE GENERATED (RETCODE=4), @ZA28964
.*            THEY WILL ONLY APPEAR AS COMMENTS WHEN THE       @ZA28964
.*            'MSOURCE' PARAMETER IS USED IN THE PL/S          @ZA28964
.*            COMPILATION.                                     @ZA28964
.*                                                             @ZA28964
.*   MESSAGES =                                                @ZA28964
.*                                                             @ZA28964
.*     ICB603I - WARNING - ONLY MF AND TYPE PARAMETERS ARE     @Y30LB02
.*                VALID FOR LIST FORM                          @Y30LB02
.*     ICB618I - WARNING - ECB PARAMETER VALID ONLY FOR        @ZA28964
.*                DEMOUNT REQUEST                              @ZA28964
.*     ICB619I - WARNING - MEXTN/MJFCB PARAMETER VALID         @ZA28964
.*                ONLY FOR MOUNT REQUEST                       @ZA28964
.*                                                             @Y30LB02
.* EXIT-ERROR = INVALID INVOCATION                             @Y30LB02
.*                                                             @Y30LB02
.*   CONDITION = RETURN CODE = 12                              @Y30LB02
.*                                                             @Y30LB02
.*   OUTPUT = REQUEST BLOCK AND STATEMENTS NOT GENERATED.      @Y30LB02
.*            PL/S ERROR MESSAGES WILL ONLY APPEAR AS COMMENTS @ZA28964
.*            WHEN THE 'MSOURCE' PARAMETER IS USED IN THE      @ZA28964
.*            PL/S COMPILATION.                                @ZA28964
.*                                                             @Y30LB02
.*   MESSAGES =                                                @ZA28964
.*                                                             @ZA28964
.*     ICB600I - TYPE MUST BE SPECIFIED                        @Y30LB02
.*     ICB601I - TYPE IS INCORRECTLY SPECIFIED                 @Y30LB02
.*     ICB602I - A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*                SPECIFIED IN MF(2)                           @Y30LB02
.*     ICB610I - VOLID MUST BE SPECIFIED FOR                   @Y30LB02
.*                STANDARD FORM MACRO                          @Y30LB02
.*     ICB611I - VUA MUST BE SPECIFIED FOR                     @Y30LB02
.*                STANDARD FORM MACRO                          @Y30LB02
.*     ICB612I - MF(2) MUST CONTAIN REQ BLK NAME IF            @Y30LB02
.*                EXECUTE MACRO FORM REQUESTED                 @Y30LB02
.*     ICB613I - MISSING REQ BLK NAME OR MORE                  @Y30LB02
.*                THAN 2 SUBPARAMETERS FOR MF                  @Y30LB02
.*     ICB615I - INVALID MF PARAMETER SPECIFIED, MUST BE       @Y30LB02
.*                L, E, OR NULL                                @Y30LB02
.*     ICB621I - MEXTN AND MJFCB MUTUALLY EXCLUSIVE PARAMETERS @G18MB04
.*                SPECIFIED                                    @G18MB04
.*                                                             @Y30LB02
.* EXTERNAL REFERENCES =                                       @Y30LB02
.*                                                             @ZA28964
.*   ROUTINES = NONE                                           @ZA28964
.*                                                             @ZA28964
.*   DATA-AREAS =                                              @ZA28964
.*                                                             @ZA28964
.*     BAL : GLOBAL VARIABLES USED                             @ZA28964
.*       &MNTTEST : > 0 IF THE MNT STANDARD FORM HAS BEEN      @ZA28964
.*           INVOKED PREVIOUSLY IN THE CALLING MODULE          @ZA28964
.*       &DMNTTES : > 0 IF THE DMNT STANDARD FORM HAS BEEN     @ZA28964
.*           INVOKED PREVIOUSLY IN THE CALLING MODULE          @ZA28964
.*                                                             @ZA28964
.*     PL/S: FIXED EXTERNAL DECLARATIONS USED                  @ZA28964
.*       MDTESTR1: > 0 IF MDREG1 HAS BEEN DECLARED AS REG1     @Y30LB02
.*           PREVIOUSLY IN THE INVOKING PROCEDURE              @Y30LB02
.*       MNTTEST: > 0 IF THE MNT STANDARD FORM HAS BEEN        @Y30LB02
.*           INVOKED PREVIOUSLY IN THE CALLING MODULE          @Y30LB02
.*       DMTTEST: > 0 IF THE DMNT STANDARD FORM HAS BEEN       @Y30LB02
.*           INVOKED PREVIOUSLY IN THE CALLING MODULE          @Y30LB02
.*                                                             @ZA28964
.*   CONTROL-BLOCKS = NONE                                     @ZA28964
.*                                                             @Y30LB02
.* TABLES = NONE                                               @Y30LB02
.*                                                             @Y30LB02
.* MACROS =  IHBINNRA (USED IN ASSEM TO LOAD REG 1)            @Y30LB02
.*                                                             @Y30LB02
.* CHANGE-ACTIVITY =                                           @Y30LB02
.*                                                             @ZA28964
.*   00 74/06/09 DEVELOPMENT                                   @Y30LB02
.*   01 76/01/19 DMOUNT VUA SUPPORT ADDED                      @ZDR2048
.*   02 76/02/06 MOUNT LIST EXTENSION SUPPORT ADDED            @G18MB04
.*   03 76/03/11 CORRECT INVALID HOSTID IN STD FORM            @ZA09524
.*   04 77/12/15 DOCUMENTATION ADDITIONS/RESTRUCTURE           @ZA28964
.*               BAL STD FORM MADE SERIALLY REUSABLE           @ZA28964
.*               PL/S LABELS DECLARED IN BAL VERSION           @ZA28964
.*               CHG ASSEM LOGIC TO AGREE WITH PL/S            @ZA28964
.*               PL/S MACRO INVOCATION ECHOED BACK TO CALLER   @ZA28964
.*               BAL LABELS DECLARED IN PL/S VERSION           @ZA28964
.*                                                             @Y30LB02
.************************************************************* @ZA28964
.*    END OF SPECIFICATIONS ********************************** @Y30LB02
         GBLB  &MNTTEST            MNT STD FORM FLAG           @ZA28964
         GBLB  &DMNTTES            DMT STD FORM FLAG           @ZA28964
         LCLC  &LBL                DEFINE MACRO INSTR INDX     @Y30LB02
         LCLC  &LBL1               DEFINE MACRO INSTR INDX     @Y30LB02
&LBL     SETC  'J'.'&SYSNDX'       ASSIGN CHARACTER VALUE      @Y30LB02
&LBL1    SETC  'K'.'&SYSNDX'       ASSIGN CHARACTER VALUE      @Y30LB02
.*                                                             @G18MB04
.*       CHECK FOR MUTUALLY EXCLUSIVE PARAMETERS               @G18MB04
.*                                                             @G18MB04
.PARM    AIF   ('&MJFCB' EQ '' OR '&MEXTN' EQ '').TYPE         @G18MB04
         MNOTE 12,'  ICB621I - MEXTN AND MJFCB MUTUALLY'       @G18MB04
         MNOTE 12,'  EXCLUSIVE PARAMETERS SPECIFIED.'          @G18MB04
         AGO   .FINISH                                         @G18MB04
.*                                                             @Y30LB02
.*       CHECK FOR VALID TYPE SPECIFICATION                    @Y30LB02
.*                                                             @Y30LB02
.TYPE    AIF   ('&TYPE' EQ '').NUL                             @Y30LB02
         AIF   ('&TYPE' EQ 'MNT' OR '&TYPE' EQ 'DMNT').START   @Y30LB02
         MNOTE 12,'  ICB601I - TYPE IS INCORRECTLY SPECIFIED'  @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.NUL     MNOTE 12,'  ICB600I - TYPE MUST BE SPECIFIED '        @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.START   AIF   ('&MF(1)' EQ 'L').LFORM      LIST FORM?         @Y30LB02
         AIF   ('&MF(1)' EQ 'E').EFORM      EXECUTE FORM?      @Y30LB02
         AIF   ('&MF(1)' EQ '').SFORM       STANDARD FORM?     @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER'           @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL.'        @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.* *********************************************************** @ZA28964
.*             L I S T    F O R M                              @Y30LB02
.* *********************************************************** @ZA28964
.*                                                             @Y30LB02
.LFORM   AIF   ('&FLAGS' NE '' OR '&MEXTN' NE '').WARN         @G18MB04
         AIF   ('&VOLID' NE '' OR '&VUA' NE '').WARN           @Y30LB02
         AIF   ('&MJFCB' NE '' OR '&HOSTID' NE '').WARN        @ZA28964
         AIF   ('&ECB' EQ '').LISTOK                           @ZA28964
.*                                                             @Y30LB02
.WARN    MNOTE 4,'  ICB603I - WARNING-ONLY MF AND TYPE '       @Y30LB02
         MNOTE 4,'  PARAMETERS ARE VALID FOR LIST FORM '       @Y30LB02
.*                                                             @ZA28964
.LISTOK  AIF   ('&TYPE' EQ 'MNT').MOUNT    MOUNT REQUEST?      @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').DMNTDS  DSECT REQUESTED     @Y30LB02
*  MACMEAN MSSC DEMOUNT MACRO--INITIALIZED LIST FORM           @ZA28964
*          VERSION - VS/2  REL 3 77/12/15   LEVEL 04           @ZA28964
&SYMBOL  DS    0F                                              @Y30LB02
DMNTLEN  DC    F'28'               REQ BLK LENGTH              @Y30LB02
DMOPCODE DC    XL1'06'             DEMOUNT OPCODE              @Y30LB02
DMNTRES1 DC    XL1'00'             RESERVED                    @Y30LB02
DMNTFLAG DC    XL2'0000'           FLAGS                       @Y30LB02
DMVOLID  DC    XL6'000000000000'   VOLID                       @Y30LB02
DMNTASID DC    XL2'0000'           ASID                        @Y30LB02
DMNTECB  DC    XL4'00000000'       ECB                         @Y30LB02
DMHOSTID DC    XL5'0000000000'     HOST ID                     @Y30LB02
DMNTRES2 DC    XL1'00'             RESERVED                    @ZDR2048
DMNTVUA  DC    XL2'0000'           VUA                         @ZDR2048
DMLEN    EQU   DMNTLEN             COMPATABILITY DEFINITION    @ZA28964
DMOPCD   EQU   DMOPCODE            COMPATABILITY DEFINITION    @ZA28964
DMVOL    EQU   DMVOLID             COMPATABILITY DEFINITION    @ZA28964
DMHOST   EQU   DMHOSTID            COMPATABILITY DEFINITION    @ZA28964
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.DMNTDS  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC DEMOUNT MACRO--UNINITIALIZED LIST FORM        @Y30LB02
*           VERSION - VS/2 REL 3  77/12/15   LEVEL 04          @ZA28964
ICBMNTDE DSECT                                                 @Y30LB02
DMNTLEN  DS    F                   REQ BLK LENGTH (1C HEX)     @Y30LB02
DMOPCODE DS    XL1                 DMNT OPCODE (06 HEX)        @Y30LB02
DMNTRES1 DS    XL1                 RESERVED                    @Y30LB02
DMNTFLAG DS    XL2                 FLAGS                       @Y30LB02
DMVOLID  DS    CL6                 VOLID                       @Y30LB02
DMNTASID DS    XL2                 ASID                        @Y30LB02
DMNTECB  DS    A                   ECB                         @ZA28964
DMHOSTID DS    CL5                 HOST ID                     @Y30LB02
DMNTRES2 DS    XL1                 RESERVED                    @ZDR2048
DMNTVUA  DS    XL2                 VUA                         @ZDR2048
DMLEN    EQU   DMNTLEN             COMPATABILITY DEFINITION    @ZA28964
DMOPCD   EQU   DMOPCODE            COMPATABILITY DEFINITION    @ZA28964
DMVOL    EQU   DMVOLID             COMPATABILITY DEFINITION    @ZA28964
DMHOST   EQU   DMHOSTID            COMPATABILITY DEFINITION    @ZA28964
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.MOUNT   AIF   ('&MF(2)' EQ 'MAP').MNTDS   DSECT REQUEST       @Y30LB02
*  MACMEAN  MSSC MOUNT MACRO--INITIALIZED LIST FORM            @Y30LB02
*           VERSION - VS/2 REL 3  77/12/15   LEVEL 04          @ZA28964
&SYMBOL  DS    0F                                              @Y30LB02
MNTLEN   DC    F'28'               REQ BLK LENGTH              @Y30LB02
MNTOPCD  DC    XL1'08'             MOUNT OPCODE                @Y30LB02
MNTRES1  DC    XL1'00'             RESERVED                    @Y30LB02
MNTFLAGS DC    XL2'0000'           FLAGS                       @Y30LB02
MNTVOLID DC    XL6'000000000000'   VOLID                       @Y30LB02
MNTVUA   DC    XL2'0000'           VUA                         @Y30LB02
MNTHOSTD DC    XL5'0000000000'     HOSTID                      @Y30LB02
MNTRES2  DC    XL3'000000'         RESERVED                    @Y30LB02
MNTEXTP  DC    XL4'00000000'       MNT LIST EXTN ADDR          @G18MB04
MNTJFCB  EQU   MNTEXTP             NAME RE-DEF FOR JFCB PTR    @G18MB04
MDLEN    EQU   MNTLEN              COMPATABILITY REDEFINITION  @ZA28964
MDOPCD   EQU   MNTOPCD             COMPATABILITY REDEFINITION  @ZA28964
MDFLG    EQU   MNTFLAGS            COMPATABILITY REDEFINITION  @ZA28964
MDVOL    EQU   MNTVOLID            COMPATABILITY REDEFINITION  @ZA28964
MDVUA    EQU   MNTVUA              COMPATABILITY REDEFINITION  @ZA28964
MDHOST   EQU   MNTHOSTD            COMPATABILITY REDEFINITION  @ZA28964
MDJFCB   EQU   MNTJFCB             COMPATABILITY REDEFINITION  @ZA28964
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.MNTDS   ANOP                                                  @Y30LB02
*  MACMEAN  MSSC MOUNT MACRO--UNINITIALIZED LIST FORM          @Y30LB02
*           VERSION - VS/2 REL 3  77/12/15   LEVEL 04          @ZA28964
ICBMNTD1 DSECT                                                 @Y30LB02
MNTLEN   DS    F                   REQ BLK LENGTH (1C HEX)     @Y30LB02
MNTOPCD  DS    XL1                 MOUNT OPCODE (08 HEX)       @Y30LB02
MNTRES1  DS    XL1                 RESERVED                    @Y30LB02
MNTFLAGS DS    XL2                 FLAGS                       @Y30LB02
MNTVOLID DS    CL6                 VOLID                       @Y30LB02
MNTVUA   DS    XL2                 VUA                         @Y30LB02
MNTHOSTD DS    CL5                 HOSTID                      @Y30LB02
MNTRES2  DS    XL3                 RESERVED                    @Y30LB02
MNTEXTP  DS    A                   MNT LIST EXTN ADDR          @ZA28964
MNTJFCB  EQU   MNTEXTP             NAME RE-DEF FOR JFCB PTR    @G18MB04
MDLEN    EQU   MNTLEN              COMPATABILITY REDEFINITION  @ZA28964
MDOPCD   EQU   MNTOPCD             COMPATABILITY REDEFINITION  @ZA28964
MDFLG    EQU   MNTFLAGS            COMPATABILITY REDEFINITION  @ZA28964
MDVOL    EQU   MNTVOLID            COMPATABILITY REDEFINITION  @ZA28964
MDVUA    EQU   MNTVUA              COMPATABILITY REDEFINITION  @ZA28964
MDHOST   EQU   MNTHOSTD            COMPATABILITY REDEFINITION  @ZA28964
MDJFCB   EQU   MNTJFCB             COMPATABILITY REDEFINITION  @ZA28964
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.* *********************************************************** @ZA28964
.*            E X E C U T E     F O R M                        @Y30LB02
.* *********************************************************** @ZA28964
.*                                                             @Y30LB02
.EFORM   AIF   (N'&MF EQ 2).PARMOK IF 2 SUB-PARAMETERS         @Y30LB02
         MNOTE 12,'  ICB613I - MISSING REQ BLK NAME '          @Y30LB02
         MNOTE 12,'  OR MORE THAN 2 SUBPARAMETERS FOR MF '     @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.PARMOK  ANOP                                                  @Y30LB02
*  MACMEAN MSSC MOUNT/DEMOUNT MACRO--EXECUTE FORM              @Y30LB02
*          VERSION - VS/2 REL 3  77/12/15  LEVEL 04            @ZA28964
&SYMBOL  IHBINNRA &MF(2)          LD ADDR OF REQUEST BLK       @Y30LB02
         AIF   ('&TYPE' EQ 'MNT').MNT1           TYPE MOUNT?   @Y30LB02
         LA    0,X'1C'             LD LENGTH OF DEMOUNT        @Y30LB02
         ST    0,0(1)              STORE LENGTH IN REQ BLK     @Y30LB02
         MVI   4(1),X'06'          MOVE OPCODE IN REQ BLK      @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.MNT1    ANOP                                                  @Y30LB02
         LA    0,X'1C'             LENGTH OF MOUNT REQ BLK     @Y30LB02
         ST    0,0(1)              STORE LENGTH                @Y30LB02
         MVI   4(1),X'08'          MOVE MNT OPCODE IN REQBLK   @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.* *********************************************************** @ZA28964
.*           S T A N D A R D     F O R M                       @Y30LB02
.* *********************************************************** @ZA28964
.*                                                             @Y30LB02
.SFORM   AIF   ('&TYPE' EQ 'MNT' OR '&VOLID' NE '').CKVUA      @ZDR2048
         MNOTE 12,'  ICB610I - VOLID MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO'                  @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.CKVUA   AIF   ('&VUA' NE '' OR '&TYPE' EQ 'DMNT').SFORMOK     @Y30LB02
         MNOTE 12,'  ICB611I - VUA MUST BE SPECIFIED '         @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO'                  @Y30LB02
         AGO   .FINISH                                         @Y30LB02
.*                                                             @Y30LB02
.SFORMOK ANOP                                                  @Y30LB02
*  MACMEAN MSSC MOUNT/DEMOUNT MACRO--STANDARD FORM             @Y30LB02
*          VERSION - VS/2 REL 3  77/12/15  LEVEL 04            @ZA28964
         AIF   ('&TYPE' EQ 'MNT').MNT2           MOUNT?        @Y30LB02
         AIF   (&DMNTTES).MNT1SET  IF ^ 1ST STD FORM           @ZA28964
&DMNTTES SETB  1                   STD FORM INVOKED            @ZA28964
         CNOP  0,4                                             @ZA28964
&SYMBOL  BAL   1,&LBL1             SET REG1 POINTING TO LIST   @ZA28964
DMNTLEN  DC    A(&LBL-*)           REQ BLK LENGTH              @Y30LB02
DMOPCODE DC    XL1'06'             DEMOUNT OPCODE              @Y30LB02
DMNTRES1 DC    XL1'00'             RESERVED                    @Y30LB02
DMNTFLAG DC    XL2'0000'           FLAGS                       @Y30LB02
DMVOLID  DC    XL6'000000000000'   VOLID                       @Y30LB02
DMNTASID DC    XL2'0000'           ASID                        @Y30LB02
DMNTECB  DC    XL4'00000000'       ECB                         @Y30LB02
DMHOSTID DC    XL5'0000000000'     HOST ID                     @Y30LB02
DMNTRES2 DC    XL1'00'             RESERVED                    @ZDR2048
DMNTVUA  DC    XL2'0000'           VUA                         @ZDR2048
DMLEN    EQU   DMNTLEN             COMPATABILITY DEFINITION    @ZA28964
DMOPCD   EQU   DMOPCODE            COMPATABILITY DEFINITION    @ZA28964
DMVOL    EQU   DMVOLID             COMPATABILITY DEFINITION    @ZA28964
DMHOST   EQU   DMHOSTID            COMPATABILITY DEFINITION    @ZA28964
&LBL     EQU   *                                               @Y30LB02
&LBL1    DS    0F                                              @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.MNT1SET ANOP                                                  @ZA28964
*          SUBSEQUENT STD FORM INVOCATION                      @ZA28964
&SYMBOL  LA    1,DMLEN             LOAD LIST ADDRESS IN REG1   @ZA28964
         AGO   .PROCES                                         @ZA28964
.*                                                             @ZA28964
.MNT2    AIF   (&MNTTEST).MNT2SET  IF ^ 1ST STD FORM           @ZA28964
&MNTTEST SETB  1                   STD FORM INVOKED            @ZA28964
         CNOP  0,4                                             @ZA28964
&SYMBOL  BAL   1,&LBL1             SET REG1 POINTING TO LIST   @ZA28964
MNTLEN   DC    A(&LBL-*)           REQ BLK LENGTH              @Y30LB02
MNTOPCD  DC    XL1'08'             MOUNT OPCODE                @Y30LB02
MNTRES1  DC    XL1'00'             RESERVED                    @Y30LB02
MNTFLAGS DC    XL2'0000'           FLAGS                       @Y30LB02
MNTVOLID DC    XL6'000000000000'   VOLID                       @Y30LB02
MNTVUA   DC    XL2'0000'           VUA                         @Y30LB02
MNTHOSTD DC    XL5'0000000000'     HOSTID                      @Y30LB02
MNTRES2  DC    XL3'000000'         RESERVED                    @Y30LB02
MNTEXTP  DC    XL4'00000000'       MNT LIST EXTN ADDR          @G18MB04
MNTJFCB  EQU   MNTEXTP             NAME RE-DEF FOR JFCB PTR    @G18MB04
MDLEN    EQU   MNTLEN              COMPATABILITY REDEFINITION  @ZA28964
MDOPCD   EQU   MNTOPCD             COMPATABILITY REDEFINITION  @ZA28964
MDFLG    EQU   MNTFLAGS            COMPATABILITY REDEFINITION  @ZA28964
MDVOL    EQU   MNTVOLID            COMPATABILITY REDEFINITION  @ZA28964
MDVUA    EQU   MNTVUA              COMPATABILITY REDEFINITION  @ZA28964
MDHOST   EQU   MNTHOSTD            COMPATABILITY REDEFINITION  @ZA28964
MDJFCB   EQU   MNTJFCB             COMPATABILITY REDEFINITION  @ZA28964
&LBL     EQU   *                                               @Y30LB02
&LBL1    DS    0F                                              @Y30LB02
         AGO   .PROCES                                         @ZA28964
.*                                                             @ZA28964
.MNT2SET ANOP                                                  @ZA28964
*          SUBSEQUENT STD FORM INVOCATION                      @ZA28964
&SYMBOL  LA    1,MDLEN             LOAD LIST ADDRESS IN REG1   @ZA28964
.*                                                             @Y30LB02
.*       PROCESS REQUEST BLOCK FOR STANDARD & EXECUTE FORMS    @Y30LB02
.*                                                             @Y30LB02
.PROCES  AIF   ('&FLAGS' EQ '').VOLID        FLAGS SPECIFIED?  @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').REGF  FLAGS IN REG-FORM? @Y30LB02
         MVC   6(2,1),&FLAGS       PUT FLAGS IN REQUEST BLK    @Y30LB02
         AGO   .VOLID              CHECK FOR VOLID             @Y30LB02
.*                                                             @Y30LB02
.REGF    ANOP                                                  @Y30LB02
         MVC   6(2,1),0(&FLAGS(1)) REG-FORM-STORE FLAGS        @Y30LB02
.*                                                             @Y30LB02
.VOLID   AIF   ('&VOLID' EQ '').YDMNT2                         @Y30LB02
         AIF   ('&VOLID'(1,1) EQ '(').VREG    REG-FORM?        @Y30LB02
         MVC   8(6,1),&VOLID       PUT VOLID IN REQBLK         @Y30LB02
         AGO   .YDMNT2                                         @Y30LB02
.*                                                             @Y30LB02
.VREG    ANOP                                                  @Y30LB02
         MVC   8(6,1),0(&VOLID(1)) REG-FORM--STORE VOLID       @Y30LB02
.*                                                             @Y30LB02
.YDMNT2  AIF   ('&VUA' EQ '').CKECB                            @ZA28964
         AIF   ('&VUA'(1,1) EQ '(').UREG     REGISTER FORM?    @Y30LB02
         AIF   ('&TYPE' EQ 'DMNT').DMTU   BRANCH ON DEMOUNT    @ZDR2048
         MVC   14(2,1),&VUA        STORE VUA                   @ZA28964
         AGO   .CKECB                                          @ZA28964
.*                                                             @ZDR2048
.DMTU    ANOP                                                  @ZDR2048
         MVC   26(2,1),&VUA        STORE VUA                   @ZDR2048
         OI    6(1),X'20'          SET VUA VALID FLAG          @ZDR2048
         AGO   .CKECB                                          @ZA28964
.*                                                             @Y30LB02
.UREG    AIF   ('&TYPE' EQ 'DMNT').DMTUREG BR ON DEMOUNT       @ZDR2048
         MVC   14(2,1),0(&VUA(1))  REG-FORM, STORE VUA         @Y30LB02
         AGO   .CKECB                                          @Y30LB02
.*                                                             @ZDR2048
.DMTUREG ANOP                                                  @ZDR2048
         MVC   26(2,1),0(&VUA(1))  REG FORM STORE VUA          @ZDR2048
         OI    6(1),X'20'          SET VUA VALID FLAG          @ZDR2048
.*                                                             @Y30LB02
.CKECB   AIF   ('&ECB' EQ '').CKHOST   ECB SPECIFIED?          @ZA28964
         AIF   ('&TYPE' EQ 'DMNT').CKECB1    IF DEMOUNT        @ZA28964
         MNOTE 4,'  ICB618I - WARNING - ECB PARAMETER '        @ZA28964
         MNOTE 4,'  VALID ONLY FOR DEMOUNT REQUEST '           @ZA28964
         AGO   .CKHOST                                         @ZA28964
.*                                                             @ZA28964
.CKECB1  AIF   ('&ECB'(1,1) EQ '(').RECB    REG FORM?          @ZA28964
         LA    15,&ECB            ADDRESS FORM ECB             @Y30LB02
         ST    15,16(1)           STORE ECB IN REQ BLK         @Y30LB02
         AGO   .CKHOST                                         @Y30LB02
.*                                                             @ZA28964
.RECB    ANOP                                                  @Y30LB02
         ST    &ECB,16(1)         REGFORM-STORE ECB            @Y30LB02
.*                                                             @Y30LB02
.CKHOST  AIF   ('&HOSTID' EQ '').CKJF   HOSTID NOT SPECD,BR    @Y30LB02
         AIF   ('&TYPE(1)' EQ 'DMNT').CKHOST1 BRCH IF DMNT     @Y30LB02
         AIF   ('&HOSTID'(1,1) EQ '(').RHOST  REG-FORM,BRCH    @Y30LB02
         MVC   16(5,1),&HOSTID     ADDR-FORM,STORE HOSTID      @Y30LB02
         AGO   .CKJF                                           @Y30LB02
.*                                                             @ZA28964
.RHOST   ANOP                                                  @Y30LB02
         MVC   16(5,1),0(&HOSTID(1)) STORE HOSTID              @Y30LB02
         AGO   .CKJF                                           @ZA09524
.*                                                             @Y30LB02
.CKHOST1 AIF   ('&HOSTID'(1,1) EQ '(').RHOST1 REG-FORM,BRCH    @Y30LB02
         MVC   20(5,1),&HOSTID     ADDR-FORM,STORE HOSTID      @Y30LB02
         AGO   .CKJF                                           @Y30LB02
.*                                                             @ZA28964
.RHOST1  ANOP                                                  @Y30LB02
         MVC   20(5,1),0(&HOSTID(1)) STORE HOSTID              @Y30LB02
.*                                                             @Y30LB02
.CKJF    AIF   ('&MJFCB' EQ '').CKMEXT      BR AND CK FOR EXT  @G18MB04
         AIF   ('&TYPE' EQ 'DMNT').JFEXER    IF BAD PARAMETER  @ZA28964
         AIF   ('&MJFCB'(1,1) EQ '(').RJF   BR FOR REG FORM    @G18MB04
         LA    15,&MJFCB           ADDR FORM MJFCB SPECD       @G18MB04
         ST    15,24(1)            STORE JFCB POINTER IN PARMS @G18MB04
         AGO   .CVS2               BR AROUND JFCB MEXT CODE    @G18MB04
.*                                                             @ZA28964
.RJF     ANOP                      REG FORM LABEL              @G18MB04
         MVC   24(4,1),0(&MJFCB(1)) REG FORM STORE JFCB PTR    @G18MB04
         AGO   .CVS2               BR AROUND MEXT CODE         @G18MB04
.*                                                             @ZA28964
.CKMEXT  AIF   ('&MEXTN' EQ '').CVS2   BR IF MEXTN IS NULL     @G18MB04
         AIF   ('&TYPE' EQ 'DMNT').JFEXER    IF BAD PARAMETER  @ZA28964
         AIF   ('&MEXTN'(1,1) EQ '(').RMEXT REG FORM SPECD     @G18MB04
         LA    15,&MEXTN           ADDRESS FORM SPECD          @G18MB04
         ST    15,24(1)            STORE MEXTN                 @G18MB04
         OI    6(1),X'08'          OR ON MNT EXT PROVIDED BIT  @G18MB04
         AGO   .CVS2               BRANCH                      @Y30LB02
.*                                                             @ZA28964
.RMEXT   ANOP                                                  @G18MB04
         MVC   24(4,1),0(&MEXTN(1))  STORE MEXTN               @G18MB04
         OI    6(1),X'08'          OR ON MNT EXT PROVIDED BIT  @G18MB04
         AGO   .CVS2                                           @ZA28964
.*                                                             @ZA28964
.JFEXER  MNOTE 4,'  ICB619I - WARNING - MEXTN/MJFCB '          @ZA28964
         MNOTE 4,'  PARAMETER VALID ONLY FOR MOUNT REQUEST '   @ZA28964
.*                                                             @Y30LB02
.CVS2    ANOP                                                  @Y30LB02
         SVC   126                 INVOKE  THE SVC             @Y30LB02
.FINISH  MEND                                                  @Y30LB02
************************************************************** @ZA28964
*************************************************************/
*   ICBMNTDE:  MACRO KEYS(MF,TYPE,FLAGS,VOLID,VUA,
*                  HOSTID,MJFCB,MEXTN,ECB);                /*@G18MB04*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*            EXTERNAL DECLARES                             @Y30LB02*/
*/********************************************************** @Y30LB02*/
*        DCL (MDTESTR1,         /*REGISTER ONE DECLARED      @Y30LB02*/
*             MNTTEST,          /*FLAG FOR STANDARD FORM     @Y30LB02*/
*             DMTTEST) FIXED EXT;/*FLAG FOR DMNT S-FORM      @Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*            INTERNAL DECLARES                             @Y30LB02*/
*/********************************************************** @Y30LB02*/
*   DCL RETCODE FIXED,       /*RETURN CODE AREA              @Y30LB02*/
*       (MLEN,               /*MOUNT LIST LENGTH             @Y30LB02*/
*        DLEN,               /*DEMOUNT LIST LENGTH           @Y30LB02*/
*        MOPCD,              /*MOUNT OPCODE                  @Y30LB02*/
*        DOPCD,              /*DEMOUNT OPCODE                @Y30LB02*/
*        VUAVAL,             /*VUA VALID SET BIT             @ZDR2048*/
*        MEXTVAL) CHAR;      /*MOUNT EXTENSION SET BIT       @G18MB04*/
*/*                                                          @ZA28964*/
*/********************************************************** @Y30LB02*/
*/*            VARIABLE INITIALIZATION                       @ZA28964*/
*/********************************************************** @Y30LB02*/
*        RETCODE=0;          /*INITIALIZE RETURN CODE        @Y30LB02*/
*        MLEN = '1C';        /*INITIALIZE MOUNT LENGTH       @Y30LB02*/
*        DLEN = '1C';        /*INITIALIZE DEMOUNT LENGTH     @Y30LB02*/
*        MOPCD = '08';       /*INITIALIZE MOUNT OPCODE       @Y30LB02*/
*        DOPCD = '06';       /*INITIALIZE DEMOUNT OPCODE     @Y30LB02*/
*        VUAVAL='1';         /*INITIALIZE VUA VALID BIT      @ZDR2048*/
*        MEXTVAL='1';        /*INITIALIZE MNT EXT PROVIDED   @G18MB04*/
*/*                                                          @ZA28964*/
*/*    ANSWER TEXT IS AT THE END OF THE MACRO AND IS         @ZA28964*/
*/*    INCLUDED IN A SEGMENT-LIKE FASHION                    @ZA28964*/
*/*                                                          @ZA28964*/
*/********************************************************** @Y30LB02*/
*/*    ECHO INVOCATION BACK TO CALLING MODULE                @ZA28964*/
*/********************************************************** @Y30LB02*/
*  ANS('      /* MACRO INVOCATION:      @ZA28964*/')SKIP;  /*@ZA28964*/
*  ANS('      /*  '  MACLABEL  ' '  MACNAME  ' ' 
*      MACLIST  ' '  MACKEYS  ' @ZA28964*/')SKIP;    /*@ZA28964*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*            CHECK FOR MUTUALLY EXCLUSIVE PARAMETERS       @G18MB04*/
*/********************************************************** @Y30LB02*/
*   IF MEXTN ^= '' THEN IF MJFCB ^= '' THEN                /*@G18MB04*/
*     DO;                    /*ONE MUST BE NULL              @G18MB04*/
*       ANS MSG('  ICB621I - MEXTN AND MJFCB MUTUALLY'
*               ' EXCLUSIVE PARAMETERS SPECIFIED. ')SKIP;
*       RETCODE=12;               /* SET RETURN CODE         @G18MB04*/
*       GO TO FINISH;             /* EXIT                    @G18MB04*/
*     END;                                                 /*@ZA28964*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*         DECLARE REGISTER 1                               @Y30LB02*/
*/********************************************************** @Y30LB02*/
*   IF MDTESTR1 = 0 THEN     /*REG 1 NOT DECLARED?           @ZA28964*/
*     DO;                    /*THEN DECLARE REG 1            @Y30LB02*/
*       ANS('DCL MDREG1 REG(1) PTR; /*'
*           'ADDRESS OF REQUEST BLOCK @Y30LB02*/')SKIP;
*       MDTESTR1=1;          /*SET REG 1 DECLARED FLAG       @Y30LB02*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*       CHECK FOR VALID TYPE SPECIFICATION                 @Y30LB02*/
*/********************************************************** @Y30LB02*/
*   IF TYPE(1) ^= 'MNT' THEN IF TYPE(1) ^= 'DMNT' THEN     /*@ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE='' THEN      /*IS THE TYPE PARM NULL?        @Y30LB02*/
*         ANS MSG('  ICB600I - TYPE MUST BE '
*                 'SPECIFIED ')SKIP;                       /*@Y30LB02*/
*       ELSE                                               /*@Y30LB02*/
*         ANS MSG('  ICB601I - TYPE IS INCORRECTLY '
*                 'SPECIFIED')SKIP;                        /*@ZA28964*/
*       RETCODE=12;          /*SET RETURN CODE TO 12         @ZA28964*/
*       GO TO FINISH;        /*BRANCH TO FINISH              @ZA28964*/
*     END;                                                 /*@ZA28964*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*        LIST FORM                                         @Y30LB02*/
*/********************************************************** @Y30LB02*/
*   IF MF(1) ^= 'L' THEN     /*REQUEST NOT FOR LIST FORM     @Y30LB02*/
*        GO TO CKFORM;       /*BRANCH, CK FOR EXECUTE        @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF MF(2) = '' THEN       /*LIST FORM, NAME ^ SPECIFIED   @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       ANS MSG('  ICB602I - A NAME FOR THE '
*               'REQUEST BLOCK MUST BE SPECIFIED IN '
*               'MF(2) ')SKIP;                             /*@ZA28964*/
*       RETCODE=12;          /*SET RETURN CODE TO 12         @ZA28964*/
*       GO TO FINISH;        /*BRANCH TO FINISH              @ZA28964*/
*     END;                                                 /*@ZA28964*/
*/*                                                          @Y30LB02*/
*   IF FLAGS               /*FLAGS SPECIFIED?              @ZA28964*/
*     VOLID                /*VOLID SPECIFIED?              @ZA28964*/
*     VUA                  /*VUA SPECIFIED?                @ZA28964*/
*     MEXTN                /*MEXTN SPECIFIED?              @G18MB04*/
*     HOSTID               /*HOST ID SPECIFIED?            @ZA28964*/
*     ECB                  /*ECB SPECIFIED?                @ZA28964*/
*     MJFCB ^= '' THEN       /*MJFCB SPECIFIED?              @G18MB04*/
*       DO;                  /*PRINT WARNING MESSAGE         @Y30LB02*/
*         RETCODE = 4;       /*SET RETURN CODE TO 4          @Y30LB02*/
*         ANS MSG('  ICB603I - WARNING-ONLY MF'
*                 ' AND TYPE PARAMETERS ARE VALID FOR'
*                 ' LIST FORM ')SKIP;                      /*@Y30LB02*/
*       END;                                               /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF MF(3) = '' THEN      /*PLS ATTRIBUTE ^ SPECIFIED      @Y30LB02*/
*     DO;                   /*PRINT REQUEST BLOCK            @Y30LB02*/
*       IF TYPE(1)='MNT' THEN /*REQUEST FOR MOUNT?           @Y30LB02*/
*         GO TO LMNTINT;     /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  THEN GO TO FINISH           @ZA28964*/
*       ELSE                                               /*@ZA28964*/
*         GO TO LDMTINT;     /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  THEN GO TO FINISH           @ZA28964*/
*     END;                                                 /*@Y30LB02*/
*   ELSE                                                   /*@Y30LB02*/
*     DO;                    /* PLS ATTRIBUTE SPECIFIED      @Y30LB02*/
*       IF TYPE(1)='MNT' THEN   /*MOUNT REQUEST?             @Y30LB02*/
*         GO TO LMNTUN;      /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  THEN GO TO FINISH           @ZA28964*/
*       ELSE                 /*PROCESS DEMOUNT REQ BLK       @Y30LB02*/
*         GO TO LDMTUN;      /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  THEN GO TO FINISH           @ZA28964*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*          EXECUTE FORM                                    @Y30LB02*/
*/********************************************************** @Y30LB02*/
*CKFORM:
*   IF MF(1) ^= 'E' THEN     /* EXECUTE FORM SPECIFIED?      @Y30LB02*/
*     GO TO SFORM;           /*BRANCH, CK  STANDARD FORM     @Y30LB02*/
*   IF MF(2)='' THEN         /* IS 2ND SUB-PARM SPECIFIED?   @Y30LB02*/
*     DO;                    /*PRINT OUT ERROR MESSAGE       @Y30LB02*/
*        ANS MSG('  ICB612I - MF(2) MUST CONTAIN'
*                ' REQ BLK NAME IF EXEC'
*                ' MACRO FORM REQUESTED')SKIP;             /*@Y30LB02*/
*        RETCODE=12;         /*SET RETURN CODE TO 12         @ZA28964*/
*        GO TO FINISH;                                     /*@ZA28964*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*   GO TO EMNTDMT;           /* CALL ANSWER TEXT BLOCK       @ZA28964*/
*                            /*  THEN GO TO EMNTDMTR         @ZA28964*/
*/*                                                          @ZA28964*/
*EMNTDMTR:                                                 /*@ZA28964*/
*   IF MF(3) = 'COMPLETE' THEN /*COMPLETE SPECIFIED?         @ZA28964*/
*     ANS(' 'MF(2)'='MF(2)'&&'MF(2)';/*ZERO'
*         ' OUT BLOCK @Y30LB02*/')SKIP;
*   IF TYPE(1) = 'MNT' THEN /*MOUNT REQUEST?                 @Y30LB02*/
*     DO;                      /*MOUNT OPCD AND LEN          @Y30LB02*/
*       ANS('MDLEN='QUOTE(MLEN)'X;/*LENGTH OF '
*           'MOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
*       ANS('MDOPCD='QUOTE(MOPCD)'X;/*MOUNT'
*           ' OPCODE @Y30LB02*/')SKIP;
*       GO TO COMPROC;         /*BRANCH, CK PARAMETERS       @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*   ELSE                       /*DEMOUNT LEN AND OPCD        @Y30LB02*/
*     DO;                      /*PUT OUT LEN AND OPCD        @Y30LB02*/
*       ANS('DMLEN='QUOTE(DLEN)'X;/*LENGTH OF '
*           'DEMOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
*       ANS('DMOPCD='QUOTE(DOPCD)'X;/*DEMOUNT'
*          ' OPCODE @Y30LB02*/')SKIP;
*       GO TO COMPROC;         /*BRANCH, CK PARAMETERS       @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*           STANDARD FORM                                  @Y30LB02*/
*/********************************************************** @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN       /* FORM STANDARD?              @Y30LB02*/
*     DO;                     /*PRINT ERROR MESSAGE          @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER'
*                ' SPECIFIED, MUST BE L, E, OR NULL')SKIP; /*@Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE TO 12        @Y30LB02*/
*        GO TO FINISH;                                     /*@ZA28964*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF VOLID = '' THEN IF TYPE(1) = 'DMNT' THEN            /*@ZA28964*/
*     DO;                   /*PRINT ERROR MESSAGE            @Y30LB02*/
*        RETCODE = 12;      /*SET RETURN CODE TO 12          @Y30LB02*/
*        ANS MSG('  ICB610I - VOLID MUST BE SPECIFIED '
*                'FOR STANDARD FORM MACRO')SKIP;           /*@Y30LB02*/
*        GO TO FINISH;                                     /*@ZA28964*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF VUA = '' THEN IF TYPE(1) = 'MNT' THEN               /*@Y30LB02*/
*     DO;                       /*PRINT ERROR MSG            @Y30LB02*/
*        RETCODE = 12;          /*SET RETURN CODE TO 12      @Y30LB02*/
*        ANS MSG('  ICB611I - VUA MUST BE SPECIFIED FOR '
*                'STANDARD FORM MACRO')SKIP;               /*@Y30LB02*/
*        GO TO FINISH;                                     /*@ZA28964*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1) = 'MNT' THEN       /*MOUNT REQUEST?           @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF MNTTEST => 1 THEN      /*STD FORM INVOKED BEFORE  @ZA28964*/
*         GO TO SSMNT;            /* CALL ANSWER TEXT BLOCK  @Y30LB02*/
*                                 /* THEN GO TO COMPROC      @ZA28964*/
*       ELSE                 /*FIRST INVOCATION              @ZA28964*/
*         DO;                     /*PUT OUT DECLARES         @ZA28964*/
*           MNTTEST = 1;          /*SET STD FORM CTR         @ZA28964*/
*           GO TO SIMNT;         /* CALL ANSWER TEXT BLOCK   @ZA28964*/
*                                /*  THEN GO TO COMPROC      @ZA28964*/
*         END;                                             /*@Y30LB02*/
*     END;                   /* MOUNT REQUEST                @Y30LB02*/
*   ELSE                     /* DEMOUNT REQUEST              @Y30LB02*/
*     DO;                                                  /*@Y30LB02*/
*       IF DMTTEST => 1 THEN /*DMNT STD FM INVOKED BEFORE ?  @Y30LB02*/
*         GO TO SSDMT;      /*CALL ANSWER TEXT BLOCK         @Y30LB02*/
*                           /*  THEN GO TO COMPROC           @ZA28964*/
*       ELSE           /*PUT OUT DECLARES FOR STD FM         @Y30LB02*/
*         DO;          /*DECLARES FOR DEMOUNT                @Y30LB02*/
*           DMTTEST = 1;     /*SET DMNT STDFM FLAG           @Y30LB02*/
*           GO TO SIDMT;     /* CALL ANSWER TEXT BLOCK       @Y30LBO2*/
*                            /*  THEN GO TO COMPROC          @ZA28964*/
*         END;                                             /*@Y30LB02*/
*    END;                                                  /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/********************************************************** @Y30LB02*/
*/*   FILL IN STANDARD AND EXECUTE FORM PARAMETERS           @ZA28964*/
*/********************************************************** @Y30LB02*/
*COMPROC:                                                  /*@ZA28964*/
*   IF FLAGS^='' THEN    /*FLAGS SPECIFIED?                  @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE(1) = 'DMNT' THEN /*DEMOUNT REQUEST?          @ZA28964*/
*         ANS('DMNTFLAG=' FLAGS '; /*FLAGS @Y30LB02*/')SKIP;
*       ELSE             /*PUT FLAGS IN REQ BLOCK            @ZA28964*/
*         ANS('MDFLG=' FLAGS '; /*FLAGS @Y30LB02*/')SKIP;
*     END;                                                 /*@ZA28964*/
*/*                                                          @Y30LB02*/
*   IF VOLID ^= '' THEN        /*VOLID SPECIFIED?            @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE(1) = 'MNT' THEN  /*MOUNT REQUEST?            @ZA28964*/
*         ANS('MDVOL=' VOLID';/*VALUE OF VOLID @Y30LB02*/')SKIP;
*       ELSE                  /*DEMOUNT REQUEST              @ZA28964*/
*         ANS('DMVOL=' VOLID '; /*VALUE OF VOLID @Y30LB02*/')SKIP;
*     END;                                                 /*@ZA28964*/
*/*                                                          @Y30LB02*/
*   IF VUA ^= '' THEN             /*VUA SPECIFIED?           @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE(1)='DMNT' THEN    /*TEST FOR DEMOUNT         @ZDR2048*/
*         DO;                     /*DEMOUNT REQUEST          @ZDR2048*/
*           ANS('DMNTVUA=' VUA '; /*FILL VUA @ZDR2048*/')SKIP;
*           ANS('DMVUAVAL='QUOTE(VUAVAL)'B;/* OR ON'
*               ' THE VUA VALID ATTRIBUTE FLAG @ZDR2048*/')SKIP;
*         END;                    /*                         @ZDR2048*/
*       ELSE                  /*PUT VUA IN BLOCK FOR MNT     @ZDR2048*/
*         ANS('MDVUA=' VUA '; /*VALUE OF VUA    @Y30LB02*/')SKIP;
*     END;                                                 /*@ZA28964*/
*/*                                                          @Y30LB02*/
*   IF HOSTID ^= '' THEN     /*HOSTID SPECIFIED              @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE(1) = 'MNT' THEN  /*IS THE TYPE MOUNT?        @Y30LB02*/
*         ANS('MDHOST='HOSTID';/*FILL IN HOSTID @Y30LB02*/')SKIP;
*       ELSE                                               /*@ZA28964*/
*         ANS('DMHOST='HOSTID';/*FILL IN HOSTID @Y30LB02*/')SKIP;
*     END;                                                 /*@ZA28964*/
*/*                                                          @ZA28964*/
*   IF ECB ^= '' THEN                                      /*@ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE(1) = 'DMNT' THEN                           /*@ZA28964*/
*         ANS('DMNTECB =ADDR'ECB';/*ADDRESS OF THE EVENT'
*             'CONTROL BLOCK @Y30LB02*/')SKIP;
*       ELSE                 /* TYPE MUST BE MOUNT           @ZA28964*/
*         DO;                                              /*@ZA28964*/
*           RETCODE = 4;                                   /*@ZA28964*/
*           ANS MSG('  ICB618I - WARNING - ECB PARAMETER ' 
*                   'VALID ONLY FOR DEMOUNT REQUEST')SKIP; /*@ZA28964*/
*         END;                                             /*@ZA28964*/
*     END;                                                 /*@ZA28964*/
*/*                                                          @ZA28964*/
*   IF MEXTN  MJFCB ^= '' THEN   /* MEXTN, MJFCB GIVEN     @ZA28964*/
*     DO;                                                  /*@ZA28964*/
*       IF TYPE(1) = 'DMNT' THEN  /* ILLEGAL PARAMETER       @ZA28964*/
*         DO;                                              /*@ZA28964*/
*           RETCODE = 4;                                   /*@ZA28964*/
*           ANS MSG('  ICB619I - WARNING - MEXTN/MJFCB ' 
*                   'PARAMETER VALID ONLY FOR MOUNT REQUEST')SKIP;
*         END;                                             /*@ZA28964*/
*       ELSE                 /* MOUNT REQUEST                @ZA28964*/
*         DO;                                              /*@ZA28964*/
*           IF MEXTN ^= '' THEN                            /*@ZA28964*/
*             DO;            /* PROCESS MOUNT EXTENSION      @G18MB04*/
*               ANS('MNTEXTP=ADDR'  MEXTN 
*                   ';/*FILL IN MEXTN @G18MB04*/')SKIP;
*               ANS('MDMEXT='QUOTE(MEXTVAL)'B;/* SET'
*                   ' THE MOUNT EXT PROVIDED BIT @G18MB04*/')SKIP;
*             END;           /* END PROCESS MOUNT EXTENSION  @G18MB04*/
*           ELSE             /* PROCESS MOUNT JFCB           @ZA28964*/
*             ANS('MDJFCB=ADDR'  MJFCB 
*                 ';/*FILL MDJFCB @G18MB04*/')SKIP;
*         END;                                             /*@ZA28964*/
*     END;                                                 /*@ZA28964*/
*EXIT:
*   ANS('SVC  (126);/*INVOKE THE MSSC SVC  @Y30LB02*/')SKIP;
*   ANS('RFY  MDREG1 UNRSTD;/*UNREST REG 1 @Y30LB02*/')SKIP;
*   GO TO FINISH;            /* SKIP OVER THE ANSWER TEXTS   @ZA28964*/
*/*                                                          @ZA28964*/
*/********************************************************** @Y30LB02*/
*/*          MACRO ANSWER TEXT - EACH BLOCK IS INVOKED       @ZA28964*/
*/*          AT ONLY ONE POINT IN THE MACRO                  @ZA28964*/
*/********************************************************** @Y30LB02*/
*  LMNTINT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC MOUNT MACRO                 '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3    77/12/15 '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('DCL 1 ' MF(2) '  STATIC LOCAL,'
*     ' /*MOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
* ANS('    2  MDLEN  FIXED(31)INIT('QUOTE('1C')
*     'X),/*LENGTH 0F REQ BLOCK @Y30LB02*/')SKIP;
* ANS('    2  MDOPCD FIXED(8)INIT('QUOTE('08')
*     'X),/*MOUNT OPCODE @Y30LB02*/')SKIP;
* ANS('    2  MNTRES1 CHAR(1)INIT('QUOTE('00')
*     'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
* ANS('    2  MDFLG BIT(16)INIT('QUOTE
*     ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
* ANS('    3  * BIT(1), /*RESERVED '
*     ' @YD00125*/')SKIP;
* ANS('    3  MDVISMNT BIT(1), /*MSVC ISSUING'
*     ' THE MOUNT @Y30LB02*/')SKIP;
* ANS('    3  MDVSVRQ BIT(1), /*MSVC SECONDARY'
*     ' VOLUME REQUEST @Y30LB02*/')SKIP;
* ANS('    3  MDSRTCH BIT(1), /*SCRATCH'
*     '  @Y30LB02*/')SKIP;
* ANS('    3  MDMEXT  BIT(1), /*MOUNT EXTENSION'
*     '  @G18MB04*/')SKIP;
* ANS('    3  *      BIT(11),'
*     ' /* RESERVED BITS @G18MB04*/')SKIP;
* ANS('    2  MDVOL  CHAR(6) , /*VOLID @Y30LB02*/')SKIP;
* ANS('     3  *(6) CHAR(1)INIT((6)'QUOTE
*     ('00')'X),/*INIT VOLID AREA TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  MDVUA  FIXED(15)INIT(0), /*VIRTUAL'
*     ' UNIT ADDRESS @Y30LB02*/')SKIP;
* ANS('    2  MDHOST CHAR(5),/*5-BYTES HOSTID '
*     'AREA @Y30LB02*/')SKIP;
* ANS('     3  *(5) CHAR(1) INIT((5)'QUOTE
*     ('00')'X),/*INIT HOSTID AREA  @Y30LB02*/')SKIP;
* ANS('    2  MNTRES2  CHAR(3) INIT('QUOTE
*     ('')'B),/*INIT RESERVED AREA  @Y30LB02*/')SKIP;
* ANS('    2  MNTEXTP PTR(31)INIT(0), /*ADDRESS'
*     ' OF MOUNT LIST EXTENSION @G18MB04*/')SKIP;
* ANS('     3  MDJFCB PTR(31); /* ADDRESS'
*     ' OF JFCB @ZA28964*/')SKIP;
* ANS('DCL MNTLEN FIXED(31) DEF(MDLEN), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTOPCD FIXED(8) DEF(MDOPCD), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTFLAGS BIT(16) DEF(MDFLG), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTVOLID CHAR(6) DEF(MDVOL), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTVUA FIXED(15) DEF(MDVUA), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTHOSTD CHAR(5) DEF(MDHOST), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTJFCB FIXED(31) DEF(MDJFCB); /*BAL LABEL @ZA28964*/')SKIP;
*        GO TO FINISH;                                     /*@ZA28964*/
*/*                                                          @ZA28964*/
*  LDMTINT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC DEMOUNT MACRO               '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3  77/12/15   '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('DCL 1 ' MF(2) '  STATIC LOCAL,'
*     ' /*DEMOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
* ANS('    2  DMLEN  FIXED(31)INIT('QUOTE('1C')
*     'X),/*LENGTH DEMOUNT REQUEST BLK @Y30LB02*/')SKIP;
* ANS('    2  DMOPCD FIXED(8)INIT('QUOTE('06')
*     'X),/*DEMOUNT OPCODE @Y30LB02*/')SKIP;
* ANS('    2  DMNTRES1  CHAR(1)INIT('QUOTE
*     ('00')'X),/*INIT RESERVED AREA TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  DMNTFLAG BIT(16)INIT('QUOTE
*     ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
* ANS('    3  DMBITRE1 BIT(1), /*ONE'
*     ' RESERVED BIT @YM02186*/')SKIP;
* ANS('    3  DMDELRSP BIT(1), /*DEMOUNT '
*     'DELAYED RESPONSE ATTRIBUTE @YM02186*/')SKIP;
* ANS('    3  DMVUAVAL BIT(1), /*DEMOUNT '
*     'VUA VALID ATTRIBUTE @ZDR2048*/')SKIP;
* ANS('    3  DMBITRES BIT(13), /*THIRTEEN'
*     ' RESERVED BITS @ZDR2048*/')SKIP;
* ANS('    2  DMVOL CHAR(6) INIT('QUOTE
*     ('')'B), /*INIT VOLID TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  DMNTASID  CHAR(2)INIT('QUOTE
*     ('')'B),/*INIT ASID AREA TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  DMNTECB  PTR(31)INIT(0), /*DEMOUNT'
*     ' EVENT CONTROL BLOCK @ZA28964*/')SKIP;
* ANS('    2  DMHOST CHAR(5) INIT('QUOTE
*     ('')'B),/*INIT HOSTID AREA  @Y30LB02*/')SKIP;
* ANS('    2  DMNTRES2  CHAR(1)INIT('QUOTE
*     ('')'B),/*INIT RESERVED AREA TO ZERO @ZDR2048*/')SKIP;
* ANS('    2  DMNTVUA   FIXED(15)INIT(0); /*VIRTUAL'
*     ' UNIT ADDRESS @ZDR2048*/')SKIP;
* ANS('DCL DMNTLEN  FIXED(31) DEF(DMLEN), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMVOLID CHAR(6) DEF(DMVOL), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMOPCODE FIXED(8) DEF(DMOPCD),/*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMHOSTID CHAR(5) DEF(DMHOST); /*BAL LABEL @ZA28964*/')SKIP;
*       GO TO FINISH;                                      /*@ZA28964*/
*/*                                                          @ZA28964*/
*  LMNTUN:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC MOUNT MACRO                 '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('DCL 1 ' MF(2)'  'MF(3)','
*     ' /*MOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
* ANS('    2  MDLEN  FIXED(31), /*LENGTH'
*     ' OF BLOCK = 1C HEX BYTES @Y30LB02*/')SKIP;
* ANS('    2  MDOPCD FIXED(8), /*MOUNT'
*     ' OPCODE = 08 HEX @Y30LB02*/')SKIP;
* ANS('    2  MNTRES1  CHAR(1),/*RESERVED @Y30LB02*/')SKIP;
* ANS('    2  MDFLG BIT(16) , /*FLAGS AREA @Y30LB02*/')SKIP;
* ANS('    3  * BIT(1), /*RESERVED '
*     ' @YD00125*/')SKIP;
* ANS('    3  MDVISMNT BIT(1), /*MSVC ISSUING'
*     ' THE MOUNT @Y30LB02*/')SKIP;
* ANS('    3  MDVSVRQ BIT(1), /*MSVC SECONDARY'
*     ' VOLUME REQUEST @Y30LB02*/')SKIP;
* ANS('    3  MDSRTCH BIT(1), /*SCRATCH'
*     '  @Y30LB02*/')SKIP;
* ANS('    3  MDMEXT  BIT(1), /*MOUNT EXTENSION'
*     '  @G18MB04*/')SKIP;
* ANS('    3  *      BIT(11),'
*     ' /* RESERVED BITS @YD00125*/')SKIP;
* ANS('    2  MDVOL  CHAR(6) , /*VOLID @Y30LB02*/')SKIP;
* ANS('    2  MDVUA  FIXED(15), /*VIRTUAL'
*     ' UNIT ADDRESS @Y30LB02*/')SKIP;
* ANS('    2  MDHOST CHAR(5),/*5-BYTES HOSTID '
*     'AREA @Y30LB02*/')SKIP;
* ANS('    2  MNTRES2  CHAR(3) , /*RESERVED @Y30LB02*/')SKIP;
* ANS('    2  MNTEXTP PTR(31), /*ADDRESS'
*     ' OF MOUNT LIST EXTENSION @G18MB04*/')SKIP;
* ANS('     3  MDJFCB PTR(31); /* ADDRESS'
*     ' OF JFCB @ZA28964*/')SKIP;
* ANS('DCL MNTLEN FIXED(31) DEF(MDLEN), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTOPCD FIXED(8) DEF(MDOPCD), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTFLAGS BIT(16) DEF(MDFLG), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTVOLID CHAR(6) DEF(MDVOL), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTVUA FIXED(15) DEF(MDVUA), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTHOSTD CHAR(5) DEF(MDHOST), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTJFCB FIXED(31) DEF(MDJFCB); /*BAL LABEL @ZA28964*/')SKIP;
*        GO TO FINISH;                                     /*@ZA28964*/
*/*                                                          @ZA28964*/
*  LDMTUN:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC DEMOUNT MACRO               '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3    77/12/15 '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('DCL 1 ' MF(2)'  'MF(3)','
*     ' /*DEMOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
* ANS('    2  DMLEN  FIXED(31),/*LENGTH OF'
*     ' DEMOUNT REQ BLK = 1C HEX BYTES @Y30LB02*/')SKIP;
* ANS('    2  DMOPCD FIXED(8),/*DEMOUNT'
*     ' OPCODE = 06 HEX @Y30LB02*/')SKIP;
* ANS('    2  DMNTRES1 CHAR(1), /*RESERVED @Y30LB02*/')SKIP;
* ANS('    2  DMNTFLAG BIT(16),/*FLAGS AREA @Y30LB02*/')SKIP;
* ANS('    3  DMBITRE1 BIT(1), /*ONE'
*     ' RESERVED BIT @YM02186*/')SKIP;
* ANS('    3  DMDELRSP BIT(1), /*DEMOUNT '
*     'DELAYED RESPONSE ATTRIBUTE @YM02186*/')SKIP;
* ANS('    3  DMVUAVAL BIT(1), /*DEMOUNT '
*     'VUA VALID ATTRIBUTE @ZDR2048*/')SKIP;
* ANS('    3  DMBITRES BIT(13), /*THIRTEEN'
*     ' RESERVED BITS @ZDR2048*/')SKIP;
* ANS('    2  DMVOL CHAR(6), /* VOLID FIELD @Y30LB02*/')SKIP;
* ANS('    2  DMNTASID CHAR(2), /*ASID AREA @Y30LB02*/')SKIP;
* ANS('    2  DMNTECB  PTR(31),/*DEMOUNT'
*     ' EVENT CONTROL BLOCK @ZA28964*/')SKIP;
* ANS('    2  DMHOST CHAR(5),/*5-BYTE HOSTID '
*     'AREA @Y30LB02*/')SKIP;
* ANS('    2  DMNTRES2 CHAR(1), /*RESERVED @ZDR2048*/')SKIP;
* ANS('    2  DMNTVUA  FIXED(15); /*VIRTUAL'
*     ' UNIT ADDRESS @ZDR2048*/')SKIP;
* ANS('DCL DMNTLEN  FIXED(31) DEF(DMLEN), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMVOLID CHAR(6) DEF(DMVOL), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMOPCODE FIXED(8) DEF(DMOPCD),/*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMHOSTID CHAR(5) DEF(DMHOST); /*BAL LABEL @ZA28964*/')SKIP;
*        GO TO FINISH;                                     /*@ZA28964*/
*/*                                                          @ZA28964*/
*  EMNTDMT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC MOUNT/DEMOUNT MACRO         '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*     '               @Y30LB02*/')SKIP;
* ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*     '               @Y30LB02*/')SKIP;
* ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*     '               @Y30LB02*/')SKIP;
* ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*     '               @Y30LB02*/')SKIP;
* ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('RFY  MDREG1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
* ANS('MDREG1= ADDR('MF(2)'); /*R1'
*     ' PTR TO REQ BLOCK @Y30LB02*/')SKIP;
* GO TO EMNTDMTR;            /* RETURN TO CALLING POINT      @ZA28964*/
*/*                                                          @ZA28964*/
* SSMNT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC MOUNT MACRO                 '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*     '               @Y30LB02*/')SKIP;
* ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('RFY  MDREG1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
* ANS('MDREG1=ADDR(MDLEN);/*PTR TO LIST @Y30LB02*/')SKIP;
* GO TO COMPROC;                 /* GO FILL IN BLOCK         @ZA28964*/
*/*                                                          @ZA28964*/
* SIMNT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC MOUNT MACRO                 '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE STANDARD FORM - MOUNT MACRO   '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('RFY  MDREG1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
* ANS('MDREG1=ADDR(MDLEN);/*R1 PTR TO REQBLK @Y30LB02*/')SKIP;
* ANS('DCL 1  ICBMLST  STATIC LOCAL,'
*     ' /*MOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
* ANS('    2  MDLEN  FIXED(31)INIT('QUOTE('1C')
*     'X),/*LENGTH OF MOUNT REQ BLK @Y30LB02*/')SKIP;
* ANS('    2  MDOPCD FIXED(8)INIT('QUOTE('08')
*     'X),/*MOUNT OPCODE @Y30LB02*/')SKIP;
* ANS('    2  *    CHAR(1) INIT('QUOTE('00')
*     'X) ,/*RESERVED @Y30LB02*/')SKIP;
* ANS('    2  MDFLG BIT(16)INIT('QUOTE
*     ('0000000000000000')'B),/*FLAGS AREA @Y30LB02*/')SKIP;
* ANS('    3  * BIT(1), /* RESERVED '
*     ' @YD00125*/')SKIP;
* ANS('    3  MDVISMNT BIT(1), /*MSVC ISSUING'
*     ' THE MOUNT @Y30LB02*/')SKIP;
* ANS('    3  MDVSVRQ BIT(1), /*MSVC SECONDARY'
*     ' VOLUME REQUEST @Y30LB02*/')SKIP;
* ANS('    3  MDSRTCH BIT(1), /*SCRATCH'
*     '  @Y30LB02*/')SKIP;
* ANS('    3  MDMEXT  BIT(1), /*MOUNT EXTENSION'
*     '  @G18MB04*/')SKIP;
* ANS('    3  *      BIT(11),'
*     ' /*RESERVE BITS OF ZERO @Y30LB02*/')SKIP;
* ANS('    2  MDVOL CHAR(6),/*VOLUME ID @Y30LB02*/')SKIP;
* ANS('     3  *(6) CHAR(1) INIT((6)'QUOTE
*     ('00')'X),/*INIT VOLID AREA TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  MDVUA  FIXED(15) INIT(0),/*VIRTUAL '
*     'UNIT ADDRESS @Y30LB02*/')SKIP;
* ANS('    2  MDHOST CHAR(5),/*5-BYTE HOSTID '
*     'AREA @Y30LB02*/')SKIP;
* ANS('     3  *(5) CHAR(1) INIT((5)'QUOTE
*     ('00')'X),/*INIT HOSTID AREA  @Y30LB02*/')SKIP;
* ANS('    2  * CHAR(3),/*2-BYTE RESERVED '
*     'AREA @Y30LB02*/')SKIP;
* ANS('     3  *(3) CHAR(1) INIT((3)'QUOTE
*     ('00')'X),/*INIT RESERVED AREA  @Y30LB02*/')SKIP;
* ANS('    2  MNTEXTP PTR(31) INIT(0),/*ADDRESS '
*     'OF MOUNT LIST EXTENSION @G18MB04*/')SKIP;
* ANS('     3  MDJFCB PTR(31); /* ADDRESS'
*     ' OF JFCB @ZA28964*/')SKIP;
* ANS('DCL MNTLEN FIXED(31) DEF(MDLEN), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTOPCD FIXED(8) DEF(MDOPCD), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTFLAGS BIT(16) DEF(MDFLG), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTVOLID CHAR(6) DEF(MDVOL), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTVUA FIXED(15) DEF(MDVUA), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTHOSTD CHAR(5) DEF(MDHOST), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  MNTJFCB FIXED(31) DEF(MDJFCB); /*BAL LABEL @ZA28964*/')SKIP;
*        GO TO COMPROC;          /* GO FILL IN BLOCK         @ZA28964*/
*/*                                                          @ZA28964*/
* SSDMT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC DEMOUNT MACRO               '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*     '               @Y30LB02*/')SKIP;
* ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('RFY  MDREG1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
* ANS('MDREG1=ADDR(DMLEN);/*PTR TO REQ BLK @Y30LB02*/')SKIP;
* GO TO COMPROC;                 /* GO FILL IN BLOCK         @ZA28964*/
*/*                                                          @ZA28964*/
* SIDMT:
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('/*MACMEAN  MSSC DEMOUNT MACRO               '
*     '               @Y30LB02*/')SKIP;
* ANS('/*         VERSION - VS/2 REL 3   77/12/15  '
*     'LEVEL 04       @ZA28964*/')SKIP;
* ANS('/*THIS IS THE STANDARD FORM - DEMOUNT MACRO '
*     '               @Y30LB02*/')SKIP;
* ANS('/*******************************************'
*     '************** @Y30LB02*/')SKIP;
* ANS('RFY  MDREG1 RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
* ANS('MDREG1=ADDR(DMLEN);/*R1 PTR TO LIST @Y30LB02*/')SKIP;
* ANS('DCL 1 ICBDMLST  STATIC LOCAL,'
*     ' /*DEMOUNT REQUEST BLOCK @Y30LB02*/')SKIP;
* ANS('    2 DMLEN  FIXED(31)INIT('QUOTE('1C')
*     'X),/*LENGTH OF DEMOUNT BLOCK @Y30LB02*/')SKIP;
* ANS('    2 DMOPCD FIXED(8)INIT('QUOTE('06')
*     'X),/*DEMOUNT OPCODE @Y30LB02*/')SKIP;
* ANS('    2  DMNTRES1  CHAR(1)INIT('QUOTE
*     ('00')'X),/*INIT RESERVED AREA TO ZERO @YM02186*/')SKIP;
* ANS('    2  DMNTFLAG BIT(16)INIT('QUOTE
*     ('0000000000000000')'B), /*FLAGS AREA @YM02186*/')SKIP;
* ANS('    3  DMBITRE1 BIT(1), /*ONE'
*     ' RESERVED BIT @YM02186*/')SKIP;
* ANS('    3  DMDELRSP BIT(1), /*DEMOUNT '
*     'DELAYED RESPONSE ATTRIBUTE @Y30LB02*/')SKIP;
* ANS('    3  DMVUAVAL BIT(1), /*DEMOUNT '
*     'VUA VALID ATTRIBUTE @ZDR2048*/')SKIP;
* ANS('    3  DMBITRES BIT(13), /*THIRTEEN'
*     ' RESERVED BITS @ZDR2048*/')SKIP;
* ANS('    2  DMVOL CHAR(6) INIT('QUOTE
*     ('')'B), /*INIT VOLID TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  DMNTASID  CHAR(2)INIT('QUOTE
*     ('')'B),/*INIT ASID AREA TO ZERO @Y30LB02*/')SKIP;
* ANS('    2  DMNTECB  PTR(31)INIT(0), /*DEMOUNT'
*     ' EVENT CONTROL BLOCK @ZA28964*/')SKIP;
* ANS('    2  DMHOST CHAR(5) INIT('QUOTE
*     ('')'B),/*INIT HOSTID AREA  @Y30LB02*/')SKIP;
* ANS('    2  DMNTRES2  CHAR(1)INIT('QUOTE
*     ('')'B),/*INIT RESERVED AREA TO ZERO @ZDR2048*/')SKIP;
* ANS('    2  DMNTVUA   FIXED(15)INIT(0); /*VIRTUAL'
*     ' UNIT ADDRESS @ZDR2048*/')SKIP;
* ANS('DCL DMNTLEN  FIXED(31) DEF(DMLEN), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMVOLID CHAR(6) DEF(DMVOL), /*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMOPCODE FIXED(8) DEF(DMOPCD),/*BAL LABEL @ZA28964*/')SKIP;
* ANS('  DMHOSTID CHAR(5) DEF(DMHOST); /*BAL LABEL @ZA28964*/')SKIP;
*        GO TO COMPROC;          /* GO FILL IN BLOCK         @ZA28964*/
*/*                                                          @ZA28964*/
*/*                                                          @Y30LB02*/
*FINISH:  RETURN CODE(RETCODE);    /*SET RETURN CODE         @Y30LB02*/
*         %END;                                            /*@Y30LB02*/
./ ADD NAME=ICBMODC
* %/* START OF SPECIFICATIONS  ***                           @G24LB22
*                                                            @G24LB22
*01*  MODULE-NAME = ICBMODC                                  @G24LB22
*                                                            @G24LB22
*01*  DESCRIPTIVE-NAME = MODIFY CARTRIDGE                    @G24LB22
*                                                            @G24LB22
*01*  COPYRIGHT = NONE                                       @G24LB22
*                                                            @G24LB22
*01*  STATUS =  OS/VS2                                       @G24LB22
*                                                            @G24LB22
*01*  FUNCTION = BUILDS A REQUEST BLOCK FOR A MODIFYC        @G24LB22
*                REQUEST.  THE MACRO IS A COMMUNICATION LINK @G24LB22
*                BETWEEN THE CALLER AND THE MSSC SVC MODULE. @G24LB22
*                                                            @G24LB22
*01*  NOTES = ICBMODC IS CODED IN PLS ONLY.                  @G24LB22
*                                                            @G24LB22
*02*    DEPENDENCIES = NONE                                  @G24LB22
*                                                            @G24LB22
*02*    RESTRICTIONS = THE PREFIXES ICB AND MOD SHOULD BE    @G24LB22
*                      AVOIDED WHEN INVOKING THIS MACRO.     @G24LB22
*                                                            @G24LB22
*02*    REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF         @G24LB22
*                              REGISTERS BY MACROS:          @G24LB22
*                              R0,R1,R14, AND R15.           @G24LB22
*                                                            @G24LB22
*01*  MODULE-TYPE = MACRO                                    @G24LB22
*                                                            @G24LB22
*02*    PROCESSOR = PLS2                                     @G24LB22
*                                                            @G24LB22
*01*  INPUT = PARAMETERS SPECIFIED ON THE PLS MACRO          @G24LB22
*             INVOCATION.                                    @G24LB22
*                                                            @G24LB22
*                                                            @G24LB22
*     MACRO SYNTAX                                           @G24LB22
*                                                            @G24LB22
*     LIST FORM                                              @G24LB22
*                                                            @G24LB22
*     VERB        REQUIRED PARMS             OPTIONAL PARMS  @G24LB22
*                                                            @G24LB22
*     ICBMODC     MF(L,NAME[,ATTRIBUTE])                     @G24LB22
*                                                            @G24LB22
*     EXECUTE FORM                                           @G24LB22
*                                                            @G24LB22
*     VERB        REQUIRED PARMS             OPTIONAL PARMS  @G24LB22
*                                                            @G24LB22
*     ICBMODC     MF(E,NAME)                                 @G24LB22
*                                           [,COMPLETE])     @G24LB22
*                                           ATTR1(NAME)      @G24LB22
*                                           ATTR2(NAME)      @G24LB22
*                                           VOLID(NAME)      @G24LB22
*                                           LOC1(NAME)       @G24LB22
*                                           CSN(NAME)        @G24LB22
*                                           NVOLID(NAME)     @G24LB22
*                                           LOC2(NAME)       @G24LB22
*                                           CSNPAIR(NAME)    @G24LB22
*                                           VOLFLG(NAME)     @G24LB22
*                                           SEQNO(NAME)      @G24LB22
*                                                            @G24LB22
*     KEYWORD PARAMETERS:                                    @G24LB22
*                                                            @G24LB22
*     MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE      @G24LB22
*            MACRO FORMAT AND MAY GIVE THE ADDRESS OR        @G24LB22
*            ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK   @G24LB22
*            IS STORED.                                      @G24LB22
*                                                            @G24LB22
*            L - LIST FORM:  THE EXPANSION OF THE L-FORM     @G24LB22
*                MACRO WILL RESULT IN AN UNINITIALIZED       @G24LB22
*                REQUEST BLOCK.                              @G24LB22
*                                                            @G24LB22
*            (1) NAME - THE MACRO INVOKER MUST SPECIFY A     @G24LB22
*                NAME FOR HIS STRUCTURE WHEN INVOKING THE    @G24LB22
*                PLS LIST FORM.                              @G24LB22
*                                                            @G24LB22
*            (2) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS    @G24LB22
*                ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION @G24LB22
*                IN AN UNINITIALIZED REQUEST BLOCK.          @G24LB22
*                ATTRIBUTE EXAMPLE:                          @G24LB22
*                                                            @G24LB22
*                CHAR, FIXED, STATIC LOCAL, NONLOCAL,        @G24LB22
*                BASED(*), ETC.                              @G24LB22
*                                                            @G24LB22
*            E - EXECUTABLE FORM:  THE EXPANSION OF THIS     @G24LB22
*                FORM CONSISTS OF A LINKAGE INSTRUCTION AND  @G24LB22
*                POSSIBLY, PARAMETER BINDING INSTRUCTIONS.   @G24LB22
*                                                            @G24LB22
*                SUB-PARAMETERS                              @G24LB22
*                (1)  AN E MUST BE SPECIFIED IN THE FIRST    @G24LB22
*                     SUB-PARAMETER POSITION.  THIS          @G24LB22
*                     INDICATES THAT THE MACRO IS IN         @G24LB22
*                     EXECUTABLE FORM.                       @G24LB22
*                                                            @G24LB22
*                (2)  A NAME MUST BE SPECIFIED IN THE SECOND @G24LB22
*                     SUB-PARAMETER.                         @G24LB22
*                                                            @G24LB22
*                (3)  'COMPLETE' - COMPLETE WILL CAUSE THE   @G24LB22
*                     MACRO TO ZERO OUT THE REQUEST BLOCK.   @G24LB22
*                     AFTER ZEROING THE REQUEST BLOCK THE    @G24LB22
*                     FUNCTION OPCODE AND LENGTH ARE         @G24LB22
*                     PLACED IN THE REQUEST BLOCK.           @G24LB22
*                                                            @G24LB22
*                                                            @G24LB22
*                REQUEST           ORDER     CODE          @G24LB22
*                --------------------------------------      @G24LB22
*                MODIFYC           HEX'11'   N/A           @G24LB22
*                                                            @G24LB22
*                                                            @G24LB22
*01*  EXIT-NORMAL = VALID INVOCATION                         @G24LB22
*                                                            @G24LB22
*02*    CONDITION = RETURN CODE = 0.                         @G24LB22
*                 = RETURN CODE = 4.                         @G24LB22
*                                                            @G24LB22
*02*    OUTPUT = IN-LINE PLS STATEMENTS THAT PERFORM THE     @G24LB22
*                REQUESTED FUNCTION.                         @G24LB22
*              = A WARNING MESSAGE WILL BE PRINTED, AND      @G24LB22
*                THE EXPANSION WILL CONTINUE.                @G24LB22
*                                                            @G24LB22
*01*  EXIT-ERROR = INVALID INVOCATION                        @G24LB22
*                                                            @G24LB22
*02*    CONDITION = RETURN CODE = 12.                        @G24LB22
*                                                            @G24LB22
*02*    OUTPUT = ERROR MESSAGE                               @G24LB22
*                                                            @G24LB22
*01*  EXTERNAL-REFERENCES = NONE                             @G24LB22
*                                                            @G24LB22
*01*  TABLES = NONE                                          @G24LB22
*                                                            @G24LB22
*01*  MESSAGES = AS FOLLOWS:                                 @G24LB22
*                                                            @G24LB22
*            ICB602I:  A NAME FOR THE REQUEST BLOCK MUST     @G24LB22
*                      BE SPECIFIED IN MF(2)                 @G24LB22
*            ICB604I:  WARNING - ONLY MF PARAMETER IS VALID  @G24LB22
*                      FOR LIST FORM                         @G24LB22
*            ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME       @G24LB22
*                      IF EXEC MACRO FORM REQUESTED          @G24LB22
*            ICB620I:  INVALID MF PARAMETER SPECIFIED,       @G24LB22
*                      MUST BE L  OR E.                      @G24LB22
*                                                            @G24LB22
*01*  INNER-MACRO = NONE                                     @G24LB22
*                                                            @G24LB22
*01*  SYSTEM-MACRO = NONE                                    @G24LB22
*                                                            @G24LB22
*01*  CHANGE-ACTIVITY = NONE                                 @G24LB22
*                                                            @G24LB22
**** END OF SPECIFICATIONS ***                               @G24LB22*/
*                                                          /*@G24LB22*/
*          ICBMODC: MACRO KEYS(MF,ATTR1,ATTR2,VOLID,LOC1,
*                              CSN,NVOLID,LOC2,CSNPAIR,
*                              VOLFLG,SEQNO);              /*@G24LB22*/
*/* EXTERNAL DECLARES                                        @G24LB22*/
*   DCL MODTSTR1 FIXED EXT;            /*USED AS A TEST TO   @G24LB22*/
*                                      /*SEE IF R1 ALREADY   @G24LB22*/
*                                      /*DECLARED            @G24LB22*/
*/* INTERNAL DECLARES                                        @G24LB22*/
*   DCL  RETCODE FIXED;                /*RETURN CODE         @G24LB22*/
*   DCL  MODCODE CHAR;                 /*MODIFYC ORDER       @G24LB22*/
*   DCL  LENGTH CHAR;                  /*LENGTH OF BLOCK     @G24LB22*/
*   DCL  ESW FIXED;                    /*EXIT-SWITCH         @G24LB22*/
*   DCL  BSW FIXED;                    /*BRCH-SWITCH         @G24LB22*/
*   DCL  CTR FIXED;                    /*PARM-SWITCH         @G24LB22*/
*/* INITIALIZE SWITCHES AND FIELDS                           @G24LB22*/
*   ESW=0;                             /*INIT ERROR SWITCH   @G24LB22*/
*   BSW=0;                             /*INIT BRANCH SWITCH  @G24LB22*/
*   CTR=0;                             /*INIT PARM  SWITCH   @G24LB22*/
*   MODCODE='11';                      /*ORDER CODE          @G24LB22*/
*   LENGTH='34';                       /*REQ BLK LEN         @G24LB22*/
*/* END OF DECLARES AND INITIALIZATION                       @G24LB22*/
*   IF MODTSTR1=0 THEN                 /*HAS R1 BEEN DCL'D?  @G24LB22*/
*             DO;                      /*NO,DECLARE IT       @G24LB22*/
*                  ANS('DCL MODBR1 PTR REG(1) ;'
*                       '/*WILL CONTAIN BLOCK ADDRESS @G24LB22*/')
*                       SKIP(1);                           /*@G24LB22*/
*                  MODTSTR1=1;         /*MODTSTR1 SET TO 1   @G24LB22*/
*             END;                     /*                    @G24LB22*/
*   IF MF(1)^='L' THEN                 /*IF NOT LIST FORM    @G24LB22*/
*        GO TO EXCHECK;                /*THEN BRANCH         @G24LB22*/
*   IF MF(2)='' THEN                   /*WAS A NAME GIVEN?   @G24LB22*/
*        DO;                           /*NO,TURN ESW ON AND  @G24LB22*/
*             ESW=1;                   /*PRINT ERROR MSG     @G24LB22*/
*             ANS MSG('  ICB602I - A NAME FOR THE '
*                  'REQUEST BLOCK MUST BE SPECIFIED '
*                  'IN MF(2)')SKIP(5);                     /*@G24LB22*/
*             RETCODE=12;              /*SET RETURN CODE     @G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH         @G24LB22*/
*        IF ATTR1 ^= '' THEN  /*ATTR1 SPECIFIED?             @G24LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT CTR            @G24LB22*/
*        IF ATTR2 ^= '' THEN  /*ATTR2 SPECIFIED?             @G24LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT CTR            @G24LB22*/
*        IF VOLID ^= '' THEN  /*VOLID SPECIFIED?             @G24LB22*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @G24LB22*/
*        IF LOC1 ^= '' THEN    /*LOC1 SPECIFIED?             @G24LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @G24LB22*/
*        IF CSN ^= '' THEN    /*CSN SPECIFIED?               @G24LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @G24LB22*/
*        IF NVOLID ^= '' THEN  /*NVOLID SPECIFIED?           @G24LB22*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @G24LB22*/
*        IF LOC2 ^= '' THEN    /*LOC2 SPECIFIED?             @G24LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @G24LB22*/
*        IF CSNPAIR ^= '' THEN  /*CSNPAIR SPECIFIED?         @G24LB22*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @G24LB22*/
*        IF VOLFLG ^= '' THEN  /*VOLFLG SPECIFIED?           @G24LB22*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @G24LB22*/
*        IF SEQNO ^= '' THEN  /*SEQNO SPECIFIED?             @G24LB22*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @G24LB22*/
*        IF CTR > 0 THEN      /*COUNTER GT ZERO?             @G24LB22*/
*          DO;                /*YES,PRINT WARNING MSG        @G24LB22*/
*             RETCODE = 4;    /*SET RETURN CODE TO 4         @G24LB22*/
*             ANS MSG('  ICB604I - WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR THE'
*                 ' LIST FORM  ')SKIP;                     /*@G24LB22*/
*          END;               /*                             @G24LB22*/
*/*                                                          @G24LB22*/
*/*********************************************************  @G24LB22*/
*/* PRINT OUT DECLARES FOR LIST FORM                         @G24LB22*/
*/*********************************************************  @G24LB22*/
*/*                                                          @G24LB22*/
*/*                                                          @G24LB22*/
*   ANS('/*******************************************'
*       '************* @G24LB22*/')SKIP;
*   ANS('/*   MSSC MODIFY CARTRIDGE MACRO    '
*       '              @G24LB22*/')SKIP;
*   ANS('/*VS1-6/VS2-3 VERSION--04/23/76 LEVEL 00    '
*       '              @G24LB22*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '              @G24LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @G24LB22*/')SKIP;
*   IF MF(3) ^= '' THEN DO;            /*PLS ATTR SPCD?      @G24LB22*/
*   ANS('DCL 1  'MF(2)' 'MF(3)','
*   '/*MODIFYC REQUEST BLOCK*/ ') SKIP(1);
*       END;
*     ELSE
*       DO;
*   ANS('DCL 1  'MF(2)','' /*MF2 REQUEST BLOCK'
*        '@G24LB22*/') SKIP(1);
*       END;
*   ANS('      2  MODLEN FIXED(31), /*LENGTH'
*        ' = 52 BYTES (DEC.) @G24LB22*/')SKIP(1);
*   ANS('      2  MODORDER FIXED(8), /*OPCODE='
*        ' 11 HEX @G24LB22*/') SKIP(1);
*   ANS('      2  MODRES1 CHAR(1), /*RESERVED @G24LB22*/') SKIP(1);
*   ANS('      2  MODFUNC BIT(8),'
*        ' /*FUNCTION FIELD @G24LB22*/') SKIP(1);
*   ANS('        3  MODUPDTE BIT(1), /*UPDATE'
*        'CARTRIDGE LABEL @G24LB22*/') SKIP(1);
*   ANS('        3  MODCREAT BIT(1), /*CREATE'
*        'SCRATCH CARTRIDGE @G24LB22*/') SKIP(1);
*   ANS('        3  MODMOVE BIT(1), /*MOVE CARTRIDGE'
*        'TO CAS @G24LB22*/') SKIP(1);
*   ANS('        3  *      BIT(5), /*RESERVED @G24LB22*/') SKIP(1);
*   ANS('      2  MODLOCAT BIT(8),'
*        ' /*LOCATE ATTRIBUTE @G24LB22*/') SKIP(1);
*   ANS('        3  MODLCSN BIT(1), /*LOCATE'
*        ' USING CSN @G24LB22*/') SKIP(1);
*   ANS('        3  MODLVOL BIT(1), /*LOCATE'
*        ' USING VOLID @G24LB22*/') SKIP(1);
*   ANS('        3  MODLLXYZ BIT(1), /*LOCATE'
*        ' USING LXYZ @G24LB22*/') SKIP(1);
*   ANS('        3  MODLSEQ1 BIT(1), /*UPDTE-MOVE'
*        ' SEQ1 CART @G24LB22*/') SKIP(1);
*   ANS('        3  MODLSEQ2 BIT(1), /*UPDTE-MOVE'
*        ' SEQ2 CART @G24LB22*/') SKIP(1);
*   ANS('        3  *       BIT(3), /*RESERVED BITS '
*        'AND MUST BE ZERO @G24LB22*/') SKIP(1);
*   ANS('      2  MODVOLID CHAR(6),'
*        ' /*CURRENT VOLID @G24LB22*/') SKIP(1);
*   ANS('      2  MODLXYZ FIXED(16), /*CURRENT '
*        'LOC OF CART @G24LB22*/') SKIP(1);
*   ANS('      2  MODCSN CHAR(12),'
*        ' /*CURRENT CSN @G24LB22*/') SKIP(1);
*   ANS('      2  MODNVOL CHAR(6), /*SUPPLIED '
*        'VOLID FOR UPDTE @G24LB22*/') SKIP(1);
*   ANS('      2  MODNLXYZ FIXED(16), /*SUPPLIED '
*        'LXYZ FOR UPDTE @G24LB22*/') SKIP(1);
*   ANS('      2  MODNCSN CHAR(12), /*CSN OF PAIR '
*        'FOR UPDTE @G24LB22*/') SKIP(1);
*   ANS('      2  MODVFLG BIT(8), /*VOLUME FLAGS @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*   ANS('        3  *       BIT(2), /*RESERVED BITS '
*        'AND MUST BE ZERO @G24LB22*/') SKIP(1);
*   ANS('        3  MODSECUR BIT(1), /*SECURE'
*        ' VOLUME @G24LB22*/') SKIP(1);
*   ANS('        3  MODEXCL BIT(1), /*EXCLUSIVE'
*        ' VOLUME @G24LB22*/') SKIP(1);
*   ANS('        3  MODSCR BIT(1), /*SCRATCH'
*        ' CARTRIDGE @G24LB22*/') SKIP(1);
*   ANS('        3  MODBIND BIT(1), /*BOUND'
*        ' VOLUME @G24LB22*/') SKIP(1);
*   ANS('        3  MODWINH BIT(1), /*WRITE'
*        ' INHIBIT @G24LB22*/') SKIP(1);
*   ANS('        3  *       BIT(1), /*RESERVED BITS '
*        'AND MUST BE ZERO @G24LB22*/') SKIP(1);
*   ANS('      2  MODSEQNO CHAR(1), /*ID OF CARTRIDGE '
*        'OF PAIR @G24LB22*/') SKIP(1);
*   ANS('      2  *       CHAR(2); /*RESERVED @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*   GO TO EXIT;                        /*BRANCH TO END       @G24LB22*/
*/*********************************************************  @G24LB22*/
*/* THIS IS ALL THAT IS DONE FOR LIST FORM                   @G24LB22*/
*/*********************************************************  @G24LB22*/
*/* THE MACRO BRANCHES HERE FOR EXEC FORM                    @G24LB22*/
*/*********************************************************  @G24LB22*/
*/*                                                          @G24LB22*/
*EXCHECK: IF MF(1)='E' THEN            /*EXEC FORM?          @G24LB22*/
*             GO TO EXFORM;            /*YES, BRANCH         @G24LB22*/
*   ESW=1;                             /*TURN EXIT-SWTCH ON  @G24LB22*/
*   DO;                                /*PRINT THIS ERR MSG  @G24LB22*/
*        ANS MSG('  ICB620I - INVALID MF PARAMETER'
*             ' SPECIFIED, MUST BE L OR E') SKIP(5);       /*@G24LB22*/
*   END;                                /*                   @G24LB22*/
*   RETCODE=12;                        /*SET RETURN CODE     @G24LB22*/
*   GO TO TEST1;                       /*BRANCH              @G24LB22*/
*EXFORM: IF MF(2)='' THEN              /*ADDR OF LIST GIVEN  @G24LB22*/
*             DO;                      /*NO,PRINT ERROR MSG  @G24LB22*/
*                  ESW=1;              /*TURN EXIT-SWTCH ON  @G24LB22*/
*                  ANS MSG('  ICB612I - MF(2) MUST '
*                  'CONTAIN REQ BLK NAME IF '
*                  'EXEC MACRO FORM REQUESTED ') SKIP(5);  /*@G24LB22*/
*                  RETCODE=12;         /*SET RETURN CODE     @G24LB22*/
*                  GO TO TEST1;        /*BRANCH              @G24LB22*/
*             END;                     /*                    @G24LB22*/
*   ANS('/*******************************************'
*       '************* @G24LB22*/')SKIP;
*   ANS('/*  MSSC MODIFY CARTRIDGE MACRO     '
*       '              @G24LB22*/')SKIP;
*   ANS('/*VS1-6/VS2-3 VERSION-- 04/23/76 LEVEL 00   '
*       '              @G24LB22*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @G24LB22*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @G24LB22*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @G24LB22*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @G24LB22*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @G24LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @G24LB22*/')SKIP;
*   ANS('RFY(MODBR1)RSTD; /*RESTRICT REGISTER 1 @G24LB22*/')SKIP;
*   ANS('MODBR1=ADDR('MF(2)
*        '); /*SET MODBR1 TO ADDR OF REQ BLK @G24LB22*/') SKIP(1);
*  IF MF(3) = 'COMPLETE' THEN    /*REQUEST TO ZERO?          @G24LB22*/
*   DO;                          /*YES,ZERO BLK              @G24LB22*/
*   ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'         /*@G24LB22*/
*       '/*ZERO REQUEST BLOCK @G24LB22*/')SKIP;
*   END;                        /*                           @G24LB22*/
*   ANS('MODLEN='QUOTE(LENGTH)'X;'
*       '/*SET LENGTH FIELD @G24LB22*/')SKIP(1);
*   ANS('MODORDER='QUOTE(MODCODE)'X; /*OPCODE @G24LB22*/') SKIP(1);
*TEST1:                                                    /*@G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF ATTR1 ^='' THEN                 /*ATTR1 SPECIFIED?    @G24LB22*/
*        DO;
*   ANS('MODFUNC='ATTR1';/*FILL IN FUNCTION FIELD @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF ATTR2 ^='' THEN                 /*ATTR2 SPECIFIED?    @G24LB22*/
*        DO;
*   ANS('MODLOCAT='ATTR2';/*FILL IN SEARCH FIELD @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF VOLID ^='' THEN                 /*VOLID SPECIFIED?    @G24LB22*/
*        DO;
*   ANS('MODVOLID='VOLID';/*FILL IN CURRENT VOLID @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF LOC1 ^='' THEN                 /*LXYZ SPECIFIED?      @G24LB22*/
*        DO;
*   ANS('MODLXYZ='LOC1';/*FILL IN CURRENT LOCATION @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF CSN ^='' THEN                 /*CSN SPECIFIED?      @G24LB22*/
*        DO;
*   ANS('MODCSN='CSN';/*FILL IN CURRENT CSN @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF NVOLID ^='' THEN                /*VOLID SPECIFIED?    @G24LB22*/
*        DO;                           /*                    @G24LB22*/
*   ANS('MODVOLID='NVOLID';/*FILL IN NEW VOLID @G24LB22*/')
*        SKIP(1);
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, GO TO END      @G24LB22*/
*   IF LOC2 ^='' THEN                 /*LXYZ SPECIFIED?      @G24LB22*/
*        DO;
*   ANS('MODNLXYZ='LOC2';/*FILL IN NEW LOCATION @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF CSNPAIR ^='' THEN             /*CSN SPECIFIED?        @G24LB22*/
*        DO;
*   ANS('MODNCSN='CSNPAIR';/*FILL IN CURRENT CSN @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @G24LB22*/
*   IF VOLFLG ^='' THEN              /*VOLFLG  SPECIFIED?    @G24LB22*/
*        DO;                           /*                    @G24LB22*/
*   ANS('MODVFLG='VOLFLG';/*FILL IN VOLUME FLAGS @G24LB22*/')
*        SKIP(1);                                          /*@G24LB22*/
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, GO TO END      @G24LB22*/
*   IF SEQNO ^='' THEN               /*SEQNO  SPECIFIED?     @G24LB22*/
*        DO;
*   ANS('MODSEQNO='SEQNO';/*FILL IN SEQUENCE NO. @G24LB22*/')
*        SKIP(1);
*        END;                          /*                    @G24LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @G24LB22*/
*        GO TO EXIT;                   /*YES, GO TO END      @G24LB22*/
*LINK: ANS(' SVC (126); /*ISSUE SVC INSTRUCTION @G24LB22*/')
*        SKIP(1);
*      ANS('RFY  MODBR1 UNRSTD;/*UNRESTRCT REG 1 @G24LB22*/')SKIP;
*EXIT: RETURN CODE(RETCODE);                               /*@G24LB22*/
*   %END;                                                  /*@G24LB22*/
./ ADD NAME=ICBNULLC
* %/* START OF SPECIFICATIONS  ***                           @Z40LB22
*                                                            @Z40LB22
*01*  MODULE-NAME = ICBNULLC                                 @Z40LB22
*                                                            @Z40LB22
*01*  DESCRIPTIVE-NAME = NULLIFYC VOLUME/CARTRIDGE           @Z40LB22
*                                                            @Z40LB22
*01*  COPYRIGHT = NONE                                       @Z40LB22
*                                                            @Z40LB22
*01*  STATUS =  OS/VS2                                       @Z40LB22
*                                                            @Z40LB22
*01*  FUNCTION = THE NULLIFYC ORDER WILL REMOVE ALL          @Z40LB22
*                REFERENCES OF A VOLUME OR SCRATCH CARTRIDGE @Z40LB22
*                FROM THE SYSTEM.  IF ONE CARTRIDGE OF A     @Z40LB22
*                VOLUME IS STILL IN THE MASS STORAGE         @Z40LB22
*                FACILITY THIS FUNCTION CONVERTS IT INTO A   @Z40LB22
*                SCRATCH CARTRIDGE.                          @Z40LB22
*                                                            @Z40LB22
*01*  NOTES = ICBNULLC IS CODED IN PLS ONLY.                 @Z40LB22
*                                                            @Z40LB22
*02*    DEPENDENCIES = NONE                                  @Z40LB22
*                                                            @Z40LB22
*02*    RESTRICTIONS = THE PREFIXES ICB AND NULLC SHOULD BE  @Z40LB22
*                      AVOIDED WHEN INVOKING THIS MACRO.     @Z40LB22
*                                                            @Z40LB22
*02*    REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF         @Z40LB22
*                              REGISTERS BY MACROS:          @Z40LB22
*                              R0,R1,R14, AND R15.           @Z40LB22
*                                                            @Z40LB22
*01*  MODULE-TYPE = MACRO                                    @Z40LB22
*                                                            @Z40LB22
*02*    PROCESSOR = PLS2                                     @Z40LB22
*                                                            @Z40LB22
*01*  INPUT = PARAMETERS SPECIFIED ON THE PLS MACRO          @Z40LB22
*             INVOCATION.                                    @Z40LB22
*                                                            @Z40LB22
*     MACRO SYNTAX                                           @Z40LB22
*                                                            @Z40LB22
*     LIST FORM                                              @Z40LB22
*                                                            @Z40LB22
*     VERB        REQUIRED PARMS             OPTIONAL PARMS  @Z40LB22
*                                                            @Z40LB22
*     ICBNULLC    MF(L,NAME/(R),[ATTRIBUTE])                 @Z40LB22
*                                                            @Z40LB22
*     EXECUTE FORM                                           @Z40LB22
*                                                            @Z40LB22
*     VERB        REQUIRED PARMS             OPTIONAL PARMS  @Z40LB22
*                                                            @Z40LB22
*     ICBNULLC    MF(E,NAME/(R))            MF(E,NAME/(R),   @Z40LB22
*                                             [COMPLETE])    @Z40LB22
*                                           VOLID(ADDR/(R))  @Z40LB22
*                                           FLAGS(ADDR/(R))  @Z40LB22
*                                           ECB(NAME/(R))    @Z40LB22
*                                           CSN(ADDR/(R))    @Z40LB22
*                                                            @Z40LB22
*     KEYWORD PARAMETERS:                                    @Z40LB22
*                                                            @Z40LB22
*     MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE      @Z40LB22
*            MACRO FORMAT AND MAY GIVE THE ADDRESS OR        @Z40LB22
*            ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK   @Z40LB22
*            IS STORED.                                      @Z40LB22
*                                                            @Z40LB22
*            L - LIST FORM:  THE EXPANSION OF THE L-FORM     @Z40LB22
*                MACRO WILL RESULT IN AN UNINITIALIZED       @Z40LB22
*                REQUEST BLOCK.                              @Z40LB22
*                                                            @Z40LB22
*            (1) NAME - THE MACRO INVOKER MUST SPECIFY A     @Z40LB22
*                NAME FOR HIS STRUCTURE WHEN INVOKING THE    @Z40LB22
*                PLS LIST FORM.                              @Z40LB22
*                                                            @Z40LB22
*            (2) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS    @Z40LB22
*                ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION @Z40LB22
*                IN AN UNINITIALIZED REQUEST BLOCK.          @Z40LB22
*                ATTRIBUTE EXAMPLE:                          @Z40LB22
*                                                            @Z40LB22
*                CHAR, FIXED, STATIC LOCAL, NONLOCAL,        @Z40LB22
*                BASED(*), ETC.                              @Z40LB22
*                                                            @Z40LB22
*            E - EXECUTABLE FORM:  THE EXPANSION OF THIS     @Z40LB22
*                FORM CONSISTS OF A LINKAGE INSTRUCTION AND  @Z40LB22
*                POSSIBLY, PARAMETER BINDING INSTRUCTIONS.   @Z40LB22
*                                                            @Z40LB22
*                SUB-PARAMETERS                              @Z40LB22
*                (1)  AN E MUST BE SPECIFIED IN THE FIRST    @Z40LB22
*                     SUB-PARAMETER POSITION.  THIS          @Z40LB22
*                     INDICATES THAT THE MACRO IS IN         @Z40LB22
*                     EXECUTABLE FORM.                       @Z40LB22
*                                                            @Z40LB22
*                (2)  A NAME OR A REGISTER MUST BE SPECIFIED @Z40LB22
*                     IN THE SECOND SUB-PARAMETER.           @Z40LB22
*                                                            @Z40LB22
*                (3)  'COMPLETE' - COMPLETE WILL CAUSE THE   @Z40LB22
*                     MACRO TO ZERO OUT THE REQUEST BLOCK.   @Z40LB22
*                     AFTER ZEROING THE REQUEST BLOCK THE    @Z40LB22
*                     FUNCTION OPCODE AND LENGTH ARE PLACED  @Z40LB22
*                     IN THE REQUEST BLOCK.                  @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*                REQUEST           ORDER     CODE          @Z40LB22
*                --------------------------------------      @Z40LB22
*                NULLIFYC          HEX'09'   N/A           @Z40LB22
*                                                            @Z40LB22
*02*    INVOCATION PARAMETERS (CCW 27)                       @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*       NULLIFYC - (L,F,X,A,VOLID,MSGID,CSN,X)               @Z40LB22
*                                                            @Z40LB22
*       (1)  LENGTH (L) - 4 BYTES                            @Z40LB22
*                                                            @Z40LB22
*       (2)  ORDER (F) - 1 BYTE                              @Z40LB22
*            THIS BYTE IS ALWAYS X'09' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (3)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (4)  FLAGS (A) - 2 BYTES                             @Z40LB22
*            BIT 0 = 1;  ACTIVE VOLUME                       @Z40LB22
*            BIT 0 = 0;  NOT ACTIVE                          @Z40LB22
*            BIT 1 = 1;  TRANSIENT                           @Z40LB22
*            BIT 1 = 0;  NOT TRANSIENT                       @Z40LB22
*            BIT 2 = 1;  SCRATCH                             @Z40LB22
*            BIT 2 = 0;  NOT SCRATCH                         @Z40LB22
*            BITS 3 - 4; UNUSED                              @Z40LB22
*            BIT 5 = 1;  CARTRIDGE 1 MISSING                 @Z40LB22
*            BIT 5 = 0;  NOT CARTRIDGE 1                     @Z40LB22
*            BIT 6 = 1;  CARTRIDGE 2 MISSING                 @Z40LB22
*            BIT 6 = 0;  NOT CARTRIDGE 2                     @Z40LB22
*            BITS 7 - 15; UNUSED                             @Z40LB22
*                                                            @Z40LB22
*       (5)  VIRTUAL VOLUME ID (VOLID) - 6 BYTES             @Z40LB22
*            VOLID OF THE VOLUME TO BE NULLIFIED (OPTIONAL). @Z40LB22
*                                                            @Z40LB22
*       (6)  MESSAGE ID (MSGID) - 6 BYTES                    @Z40LB22
*            THIS FIELD CONTAINS BOTH THE ASID (USED BY      @Z40LB22
*            THE SVC ONLY) AND THE NAME OF THE ECB.  THE     @Z40LB22
*            ECB IS POSTED WITH X'7F' FOR SUCCESSFUL         @Z40LB22
*            COMPLETION.  THE MSC DATA WILL BE MOVED TO CORE @Z40LB22
*            LOCATION ADDRESS(ECB) + 4.  THE ECB MUST BE     @Z40LB22
*            SPECIFIED AND THE ECB AREA MUST BE CLEARED      @Z40LB22
*            BEFORE INVOKING THE MACRO (REQUIRED).           @Z40LB22
*                                                            @Z40LB22
*       (7)  CARTRIDGE SERIAL NUMBER (CSN) - 12 BYTES        @Z40LB22
*            A 12 BYTE AREA THAT CONTAINS THE SERIAL         @Z40LB22
*            NUMBER OF THE CARTRIDGE TO BE ACTED UPON.       @Z40LB22
*            THE ONLY VALID FLAGS SETTING IS BIT 1 = 1 OR    @Z40LB22
*            BIT 2 =  1.  CSN IS AN OPTIONAL PARAMETER.      @Z40LB22
*                                                            @Z40LB22
*       (8)  RESERVED (X) - 8 BYTES                          @Z40LB22
*                                                            @Z40LB22
*01*  EXIT-NORMAL = VALID INVOCATION                         @Z40LB22
*                                                            @Z40LB22
*02*    CONDITION = RETURN CODE = 0.                         @Z40LB22
*                 = RETURN CODE = 4.                         @Z40LB22
*                                                            @Z40LB22
*02*    OUTPUT = IN-LINE PLS STATEMENTS THAT PERFORM THE     @Z40LB22
*                REQUESTED FUNCTION.                         @Z40LB22
*              = A WARNING MESSAGE WILL BE PRINTED, AND      @Z40LB22
*                THE EXPANSION WILL CONTINUE FOR RC=4.       @Z40LB22
*                                                            @Z40LB22
*01*  EXIT-ERROR = INVALID INVOCATION                        @Z40LB22
*                                                            @Z40LB22
*02*    CONDITION = RETURN CODE = 12.                        @Z40LB22
*                                                            @Z40LB22
*02*    OUTPUT = ERROR MESSAGE                               @Z40LB22
*                                                            @Z40LB22
*01*  EXTERNAL-REFERENCES = NONE                             @Z40LB22
*                                                            @Z40LB22
*01*  TABLES = NONE                                          @Z40LB22
*                                                            @Z40LB22
*01*  MESSAGES = AS FOLLOWS:                                 @Z40LB22
*                                                            @Z40LB22
*            ICB602I:  A NAME FOR THE REQUEST BLOCK MUST     @Z40LB22
*                      BE SPECIFIED IN MF(2)                 @Z40LB22
*            ICB604I:  WARNING - ONLY MF PARAMETER IS VALID  @Z40LB22
*                      FOR LIST FORM.                        @Z40LB22
*            ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME IF    @Z40LB22
*                      EXEC MACRO FORM REQUESTED.            @Z40LB22
*            ICB620I:  INVALID MF PARAMETER SPECIFIED,       @Z40LB22
*                      MUST BE L  OR E.                      @Z40LB22
*                                                            @Z40LB22
*01*  INNER-MACRO = NONE                                     @Z40LB22
*                                                            @Z40LB22
*01*  SYSTEM-MACRO = NONE                                    @Z40LB22
*                                                            @Z40LB22
**** END OF SPECIFICATIONS ***                               @Y40LB22*/
*                                                          /*@Z40LB22*/
*         ICBNULLC: MACRO KEYS(MF,FLAGS,VOLID,ECB,CSN);    /*@Z40LB22*/
*/* EXTERNAL DECLARES                                        @Y40LB22*/
*   DCL NULTSTR1 FIXED EXT;            /*USED AS A TEST TO   @Y40LB22*/
*                                      /*SEE IF R1 ALREADY   @Y40LB22*/
*                                      /*DECLARED            @Y40LB22*/
*/* INTERNAL DECLARES                                        @Y40LB22*/
*   DCL  RETCODE FIXED;                /*RETURN CODE         @Y40LB22*/
*   DCL  NULCODE CHAR;                 /*NULLIFYC ORDER      @Y40LB22*/
*   DCL  LENGTH CHAR;                  /*LENGTH OF BLOCK     @Y40LB22*/
*   DCL  ESW FIXED;                    /*EXIT-SWITCH         @Y40LB22*/
*   DCL  BSW FIXED;                    /*BRCH-SWITCH         @Y40LB22*/
*   DCL  CTR FIXED;                    /*PARM-SWITCH         @Y40LB22*/
*   NULCODE='09';                      /*NULLIFYC OPCODE     @Y40LB22*/
*   LENGTH='2C';                       /*DEFINE REQ LENGTH   @Y40LB22*/
*/* INITIALIZE SWITCHES TO ZERO                              @Y40LB22*/
*   ESW=0;                             /*INIT ERROR SWITCH   @Y40LB22*/
*   BSW=0;                             /*INIT BRANCH SWITCH  @Y40LB22*/
*   CTR=0;                             /*INIT PARM  SWITCH   @Y40LB22*/
*/* END OF DECLARES AND INITIALIZATION                       @Y40LB22*/
*   IF NULTSTR1=0 THEN                 /*HAS R1 BEEN DCL'D?  @Y40LB22*/
*             DO;                      /*NO,DECLARE IT       @Y40LB22*/
*                  ANS('DCL NULBR1 PTR REG(1) ;'         /*@Y40LB22*/
*                       '/*WILL CONTAIN BLOCK ADDRESS @Y40LB22*/')
*                       SKIP(1);                           /*@Y40LB22*/
*                  NULTSTR1=1;         /*NULTSTR1 SET TO 1   @Y40LB22*/
*             END;                     /*                    @Y40LB22*/
*   IF MF(1)^='L' THEN                 /*IF NOT LIST FORM    @Y40LB22*/
*        GO TO EXCHECK;                /*THEN BRANCH         @Y40LB22*/
*   IF MF(2)='' THEN                   /*WAS A NAME GIVEN?   @Y40LB22*/
*        DO;                           /*NO,TURN ESW ON AND  @Y40LB22*/
*             ESW=1;                   /*PRINT ERROR MSG     @Y40LB22*/
*             ANS MSG('  ICB602I - A NAME FOR THE '
*                  'REQUEST BLOCK MUST BE SPECIFIED '
*                  'IN MF(2)')SKIP(5);                     /*@Y40LB22*/
*             RETCODE=12;              /*SET RETURN CODE     @Y40LB22*/
*        END;                          /*                    @Y40LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y40LB22*/
*        GO TO EXIT;                   /*YES, BRANCH         @Y40LB22*/
*        IF FLAGS ^= '' THEN  /*FLAGS SPECIFIED?             @Y40LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT CTR            @Y40LB22*/
*        IF VOLID ^= '' THEN  /*VOLID SPECIFIED?             @Y40LB22*/
*             CTR = CTR + 1; /*YES,INCREMENT COUNTER         @Y40LB22*/
*        IF ECB ^= '' THEN    /*ECB SPECIFIED?               @Y40LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y40LB22*/
*        IF CSN ^= '' THEN    /*CSN SPECIFIED?               @Y40LB22*/
*             CTR = CTR + 1;  /*YES,INCREMENT COUNTER        @Y40LB22*/
*        IF CTR > 0 THEN      /*COUNTER GT ZERO?             @Y40LB22*/
*          DO;                /*YES,PRINT WARNING MSG        @Y40LB22*/
*             RETCODE = 4;    /*SET RETURN CODE TO 4         @Y40LB22*/
*             ANS MSG('  ICB604I - WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR THE'
*                 ' LIST FORM  ')SKIP;                     /*@Y40LB22*/
*          END;               /*                             @Y40LB22*/
*/*                                                          @Y40LB22*/
*/*********************************************************  @Y40LB22*/
*/* PRINT OUT DECLARES FOR LIST FORM                         @Y40LB22*/
*/*********************************************************  @Y40LB22*/
*/*                                                          @Y40LB22*/
*/*                                                          @Y40LB22*/
*   ANS('/*******************************************'
*       '************* @Y40LB22*/')SKIP;
*   ANS('/*   MSSC NULLIFY VOLUME/CARTRIDGE MACRO    '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--03/14/75 LEVEL 00    '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y40LB22*/')SKIP;
*   IF MF(3) ^= '' THEN DO;            /*PLS ATTR SPCD?      @Y40LB22*/
*   ANS('DCL 1  'MF(2)' 'MF(3)','
*   '/*NULLIFYC REQUEST BLOCK*/ ') SKIP(1);
*       END;
*     ELSE
*       DO;
*   ANS('DCL 1  'MF(2)','' /*MF2 REQUEST BLOCK'
*        '@Y40LB22*/') SKIP(1);
*       END;
*   ANS('      2  NULENGTH FIXED(31), /*LENGTH'
*        ' = 44 BYTES (DEC.) @Y40LB22*/')SKIP(1);
*   ANS('      2  NULORDER CHAR(1), /*OPCODE='
*        ' 09 HEX @Y40LB22*/') SKIP(1);
*   ANS('      2  NULRES1 CHAR(1), /*RESERVED @Y40LB22*/') SKIP(1);
*   ANS('      2  NULFLAGA BIT(16),'
*        ' /*FLAGS FIELD @Y40LB22*/') SKIP(1);
*   ANS('        3  NULVOL BIT(1), /*AN ACTIVE VOLUME'
*        'IS BEING NULLIFIED @Y40LB22*/') SKIP(1);
*   ANS('        3  NULTRAN BIT(1), /*A TRANSIENT VOLUME'
*        'IS BEING NULLIFIED @Y40LB22*/') SKIP(1);
*   ANS('        3  NULSCRC BIT(1), /*A SCRATCH CARTRIDGE'
*        'IS BEING NULLIFIED @Y40LB22*/') SKIP(1);
*   ANS('        3  *      BIT(2), /*UNUSED @Y40LB22*/') SKIP(1);
*   ANS('        3  NULCART1 BIT(1), /*CARTRIDGE 1'
*        ' IS MISSING @Y40LB22*/') SKIP(1);
*   ANS('        3  NULCART2 BIT(1), /*CARTRIDGE 2'
*        ' IS MISSING @Y40LB22*/') SKIP(1);
*   ANS('        3  *       BIT(9), /*RESERVED BITS '
*        'AND MUST BE ZERO @Y40LB22*/') SKIP(1);
*   ANS('      2  NULVOLID CHAR(6),'
*        ' /*VOLID FIELD @Y40LB22*/') SKIP(1);
*   ANS('      2  NULASID CHAR(2), /*ASID AREA '
*        'USED BY THE SVC @Y40LB22*/') SKIP(1);
*   ANS('      2  NULECB FIXED(31), /*ADDR OF ECB @Y40LB22*/')
*        SKIP(1);                                          /*@Y40LB22*/
*   ANS('      2  NULCSN CHAR(12), /*SERIAL NO OF CARTRIDGE '
*        'TO BE ACTED UPON @Y40LB22*/') SKIP(1);
*   ANS('      2  NULRES2 CHAR(12); /*RESERVED @Y40LB22*/')
*        SKIP(1);                                          /*@Y40LB22*/
*   GO TO EXIT;                        /*BRANCH TO END       @Y40LB22*/
*/*********************************************************  @Y40LB22*/
*/* THIS IS ALL THAT IS DONE FOR LIST FORM                   @Y40LB22*/
*/*********************************************************  @Y40LB22*/
*/* THE MACRO BRANCHES HERE FOR EXEC FORM                    @Y40LB22*/
*/*********************************************************  @Y40LB22*/
*/*                                                          @Y40LB22*/
*EXCHECK: IF MF(1)='E' THEN            /*EXEC FORM?          @Y40LB22*/
*             GO TO EXFORM;            /*YES, BRANCH         @Y40LB22*/
*   ESW=1;                             /*TURN EXIT-SWTCH ON  @Y40LB22*/
*   DO;                                /*PRINT THIS ERR MSG  @Y40LB22*/
*        ANS MSG('  ICB620I - INVALID MF PARAMETER'
*             ' SPECIFIED, MUST BE L OR E') SKIP(5);       /*@Y40LB22*/
*   END;                                /*                   @Y40LB22*/
*   RETCODE=12;                        /*SET RETURN CODE     @Y40LB22*/
*   GO TO TEST1;                       /*BRANCH              @Y40LB22*/
*EXFORM: IF MF(2)='' THEN              /*ADDR OF LIST GIVEN  @Y40LB22*/
*             DO;                      /*NO,PRINT ERROR MSG  @Y40LB22*/
*                  ESW=1;              /*TURN EXIT-SWTCH ON  @Y40LB22*/
*                  ANS MSG('  ICB612I - MF(2) MUST '
*                  'CONTAIN REQ BLK NAME IF '
*                  'EXEC MACRO FORM REQUESTED ') SKIP(5);  /*@Y40LB22*/
*                  RETCODE=12;         /*SET RETURN CODE     @Y40LB22*/
*                  GO TO TEST1;        /*BRANCH              @Y40LB22*/
*             END;                     /*                    @Y40LB22*/
*   ANS('/*******************************************'
*       '************* @Y40LB22*/')SKIP;
*   ANS('/*  MSSC NULLIFY VOLUME/CARTRIDGE MACRO     '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION-- 03/14/75 LEVEL 00   '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Y40LB22*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @Y40LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y40LB22*/')SKIP;
*   ANS('RFY(NULBR1)RSTD; /*RESTRICT REGISTER 1 @Y40LB22*/')SKIP;
*   ANS('NULBR1=ADDR('MF(2)
*        '); /*SET NULBR1 TO ADDR OF REQ BLK @Y40LB22*/') SKIP(1);
*  IF MF(3) = 'COMPLETE' THEN    /*REQUEST TO ZERO?          @Y40LB22*/
*   DO;                          /*YES,ZERO BLK              @Y40LB22*/
*   ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'         /*@Y40LB22*/
*       '/*ZERO REQUEST BLOCK @Y40LB22*/')SKIP;
*   END;                        /*                           @Y40LB22*/
*   ANS('NULENGTH='QUOTE(LENGTH)'X;'
*       '/*SET LENGTH FIELD @Y40LB22*/')SKIP(1);
*   ANS('NULORDER='QUOTE(NULCODE)'X; /*OPCODE @Y40LB22*/') SKIP(1);
*TEST1:                                                    /*@Y40LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y40LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @Y40LB22*/
*   IF FLAGS ^='' THEN                 /*FLAGS SPECIFIED?    @Y40LB22*/
*        DO;
*   ANS('NULFLAGA='FLAGS';/*FILL IN FLAGS FIELD @Y40LB22*/')
*        SKIP(1);                                          /*@Y40LB22*/
*        END;                          /*                    @Y40LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y40LB22*/
*        GO TO EXIT;                   /*YES, BRANCH TO END  @Y40LB22*/
*   IF VOLID ^='' THEN                 /*VOLID SPECIFIED?    @Y40LB22*/
*        DO;                           /*                    @Y40LB22*/
*   ANS('NULVOLID='VOLID';/*FILL IN VOLID FIELD @Y40LB22*/')
*        SKIP(1);
*        END;                          /*                    @Y40LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y40LB22*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y40LB22*/
*   IF ECB ^='' THEN                   /*ECB   SPECIFIED?    @Y40LB22*/
*        DO;                           /*                    @Y40LB22*/
*   ANS('NULECB=ADDR'ECB';/*FILL IN ECB FIELD @Y40LB22*/')
*        SKIP(1);                                          /*@Y40LB22*/
*        END;                          /*                    @Y40LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y40LB22*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y40LB22*/
*   IF CSN ^='' THEN                    /*EXTS  SPECIFIED?    @Y40LB22*/
*        DO;
*   ANS('NULCSN='CSN';/*FILL IN CSN FIELD @Y40LB22*/') SKIP(1);
*        END;                          /*                    @Y40LB22*/
*   IF ESW=1 THEN                      /*EXIT-SWITCH ON?     @Y40LB22*/
*        GO TO EXIT;                   /*YES, GO TO END      @Y40LB22*/
*LINK: ANS(' SVC (126); /*ISSUE SVC INSTRUCTION @Y40LB22*/')
*        SKIP(1);
*      ANS('RFY  NULBR1 UNRSTD;/*UNRESTRCT REG 1 @Y40LB22*/')SKIP;
*EXIT: RETURN CODE(RETCODE);                               /*@Y40LB22*/
*   %END;                                                  /*@Y40LB22*/
./ ADD NAME=ICBPAIR
* %/* START OF SPECIFICATIONS  ***                             @Y30LB02
.*                                                             @Y30LB02
.*01  MODULE-NAME = ICBPAIR                                    @Y30LB02
.*                                                             @Y30LB02
.*01  DESCRIPTIVE-NAME = PURGE/ASSIGN PRIMARY HOST/            @Y30LB02
.*                       INITIALIZE/HOST READY                 @Y30LB02
.*                                                             @Y30LB02
.*01  COPYRIGHT = NONE                                         @Y30LB02
.*                                                             @Y30LB02
.*01  STATUS = OS/VS1 RELEASE 4.0,                             @Y30LB02
.*             OS/VS2 RELEASE 3.0                              @Y30LB02
.*                                                             @Y30LB02
.*01  FUNCTION = BUILDS A REQUEST BLOCK FOR A PURGE/           @Y30LB02
.*               ASSIGN PRIMARY HOST/INITIALIZE/               @Y30LB02
.*               HOST READY REQUEST.  THE MACRO IS A           @Y30LB02
.*               COMMUNICATION LINK BETWEEN THE CALLER         @Y30LB02
.*               AND THE MSSC SVC MODULE.                      @Y30LB02
.*                                                             @Y30LB02
.*01  NOTES = ICBPAIR IS A BILINQUAL MACRO.                    @Y30LB02
.*                                                             @Y30LB02
.*02    DEPENDENCIES = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*02    RESTRICTIONS = THE CALLER SHOULD AVOID USING THE       @Y30LB02
.*        THE FOLLOWING PREFIXES: ICB, AIR, PAIR, AND PURG.    @Y30LB02
.*                                                             @Y30LB02
.*02    REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF           @Y30LB02
.*                             REGISTERS BY MACROS:            @Y30LB02
.*                             R0,R1,R14, AND R15.             @Y30LB02
.*                                                             @Y30LB02
.*01  MODULE-TYPE = MACRO                                      @Y30LB02
.*                                                             @Y30LB02
.*02    PROCESSOR = PLS2 AND ASSEM                             @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT                                                    @Y30LB02
.*                                                             @Y30LB02
.*     THE PURGE REQUEST IS ISSUED WHEN THE CALLER WANTS ALL   @Y30LB02
.*     VOLUMES MOUNTED FOR THE HOST (OPTIONALLY SPECIFIED BY   @Y30LB02
.*     THE HOST ID) TO BE DEMOUNTED.  IF THE FLAGS FIELD IS    @Y30LB02
.*     SPECIFIED, THEN THE PURGE IS FOR THE OTHER PROCESSOR    @Y30LB02
.*     OF THE MP PAIR.                                         @Y30LB02
.*                                                             @Y30LB02
.*     THE ASSIGN PRIMARY HOST REQUREST IS ISSUED WHEN THE     @Y30LB02
.*     CALLER WISHES TO ESTABLISH THE HOST TO RECEIVE UN-      @Y30LB02
.*     TAGGED MESSAGES; THAT IS, MESSAGES FROM THE SUBSYSTEM   @Y30LB02
.*     NOT ASSOCIATED WITH A PARTICULAR ORDER OR REQUEST.      @Y30LB02
.*                                                             @Y30LB02
.*     THE INITIALIZE REQUEST IS ISSUED WHEN THE CALLER        @Y30LB02
.*     WISHES TO ESTABLISH COMMUNICATION WITH THE MSC, OR TO   @Y30LB02
.*     INITIALIZE BOTH CPUS OF A TIGHTLY COUPLED MP PAIR.      @Y30LB02
.*     (IF THE FLAGS FIELD IS SPECIFIED, THEN, INITIALIZE      @Y30LB02
.*     BOTH CPUS OF A TIGHTLY COUPLED MP ENVIRONMENT).         @Y30LB02
.*                                                             @Y30LB02
.*     THE HOST READY REQUEST IS ISSUED WHEN THE CALLER        @Y30LB02
.*     WANTS TO INDICATE TO THE MSC THAT THE HOST IS READY     @Y30LB02
.*     TO ACCEPT ATTENTION INTERRUPTS.                         @Y30LB02
.*                                                             @Y30LB02
.*   MACRO SYNTAX                                              @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBPAIR  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*         TYPE=PURG/APH/INITL/RDY                             @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS            OPTIONAL PARMS            @Y30LB02
.*                                                             @Y30LB02
.*ICBPAIR  TYPE=PURG/APH/INITL/RDY  FLAGS=ADDR/(R)             @Y30LB02
.*                                  HOSTID=ADDR/(R)            @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBPAIR  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*      TYPE=PURG/APH/INITL/RDY FLAGS=ADDR/(R)                 @Y30LB02
.*                              HOSTID=ADDR/(R)                @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTIONS.                          @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*   TYPE - INDICATES WHETHER THE REQUEST IS FOR PURGE         @Y30LB02
.*          (PURG), ASSIGN PRIMARY HOST(APH), INITIALIZE       @Y30LB02
.*          (INTL) OR HOST READY(RDY) COMMAND. THE OPCODE      @Y30LB02
.*          FIELD OF THE REQUEST BLOCK IS FILLED IN BY         @Y30LB02
.*          THE MACRO.  THE FOLLOWING TABLE GIVES THE          @Y30LB02
.*          OPCODES FOR EACH REQUEST.                          @Y30LB02
.*                                                             @Y30LB02
.*               REQUEST                OPCODE                @Y30LB02
.*               -----------------------------------           @Y30LB02
.*               PURGE                  HEX'14'               @Y30LB02
.*               ASSIGN PRIMARY HOST    HEX'12'               @Y30LB02
.*               INITIALIZE             HEX'10'               @Y30LB02
.*               HOST READY             HEX'20'               @Y30LB02
.*                                                             @Y30LB02
.*   HOSTID-OPTIONALLY INDICATES THE HOST (OTHER THAN THE      @Y30LB02
.*          ISSUING HOST) FOR WHICH THE REQUEST IS BEING       @Y30LB02
.*          ISSUED.  SPECIFIED FOR PURGE REQUESTS ONLY.        @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS -THE FIELD WHICH INDICATES THE FUNCTION(S) TO BE    @Y30LB02
.*          PERFORMED.  THIS PARAMETER IS SPECIFIED ONLY IF    @Y30LB02
.*          TYPE IS SPECIFIED AS INITL OR PURG.  THE FORMAT    @Y30LB02
.*          OF THE FIELD IS SHOWN BELOW.                       @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS:  2 BYTES                                           @Y30LB02
.*    _________________________________                        @Y30LB02
.*      00000000000000                        @Y30LB02
.*    _________________________________                        @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* IF TYPE IS SPECIFIED AS INITL, THEN:                        @Y30LB02
.*                                                             @Y30LB02
.*   BIT 0-------  ALWAYS ZEROES                               @Y30LB02
.*                                                             @Y30LB02
.*   BIT 1--'1'B,  INITIALIZE BOTH CPU'S OF A TIGHTLY          @Y30LB02
.*                 COUPLED MP ENVIRONMENT                      @Y30LB02
.*          '0'B,  NO FUNCTION REQUESTED                       @Y30LB02
.*                                                             @Y30LB02
.*   BITS 2-15--   ALWAYS ZEROES.                              @Y30LB02
.*                                                             @Y30LB02
.* IF TYPE IS  SPECIFIED AS PURG, THEN:                        @Y30LB02
.*                                                             @Y30LB02
.*   BIT 0--'1'B,  PURGE FOR THE OTHER PROCESSOR OF THIS       @Y30LB02
.*                  MP PAIR.                                   @Y30LB02
.*          '0'B, PURGE IS FOR REQUESTING HOST.                @Y30LB02
.*                                                             @Y30LB02
.*   BITS 1-15--ALWAYS ZEROES.                                 @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02    CONDITION = RETURN CODE = 0.                           @Y30LB02
.*                                                             @Y30LB02
.*02    OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM       @Y30LB02
.*               THE REQUESTED FUNCTION.                       @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02    CONDITION = RETURN CODE = 12.                          @Y30LB02
.*                                                             @Y30LB02
.*02    OUTPUT = ERROR MESSAGE                                 @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL-REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01 MESAGES = AS FOLLOWS:                                     @Y30LB02
.*           ICB600I: TYPE MUST BE SPECIFIED                   @Y30LB02
.*           ICB601I: TYPE IS INCORRECTLY SPECIFIED            @Y30LB02
.*           ICB602I: A NAME FOR THE REQUEST BLOCK MUST        @Y30LB02
.*                    BE SPECIFIED IN MF(2)                    @Y30LB02
.*           ICB612I: MF(2) MUST CONTAIN REQ BLK NAME          @Y30LB02
.*                    IF EXEC MACRO FORM REQUESTED             @Y30LB02
.*           ICB613I: MISSING REQ BLK NAME OR MORE             @Y30LB02
.*                    THAN 2 SUBPARAMETERS FOR MF              @Y30LB02
.*           ICB615I: INVALID MF PARAMETER SPECIFIED,          @Y30LB02
.*                    MUST BE L, E, OR NULL                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER-MACRO = NONE                                       @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM-MACROS = IHBINNRA                                 @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D = X04AC02 AND Y30LB02              @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO                                                 @Y30LB02
&SYMBOL  ICBPAIR &MF=,&TYPE=,&HOSTID=,&FLAGS=                  @Y30LB02
         LCLB  &ESW                    EXIT-SWITCH             @Y30LB02
         LCLB  &BSW                    BRCH-SWITCH             @Y30LB02
         LCLB  &LSW                    LINK-SWITCH             @Y30LB02
         LCLC  &PARMAC                 SETC SYMBOL             @Y30LB02
         LCLC  &PURMAC                 SETC SYMBOL             @Y30LB02
&PARMAC  SETC  'P'.'&SYSNDX'                                   @Y30LB02
&PURMAC  SETC  'PU'.'&SYSNDX'                                  @Y30LB02
         AIF   ('&TYPE' EQ 'PURG' OR '&TYPE' EQ 'APH' OR               *
               '&TYPE' EQ 'INITL' OR '&TYPE' EQ 'RDY').TEST1   @Y30LB02
&ESW     SETB  1                       SET EXIT-SWITCH TO 1    @Y30LB02
         AIF   ('&TYPE' EQ '').NOT     IF TYPE NULL, BRCH      @Y30LB02
         MNOTE 12,'  ICB601I - TYPE IS INCORRECTLY SPECIFIED'  @Y30LB02
         AGO   .TEST1                  BRANCH                  @Y30LB02
.NOT     ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB600I - TYPE MUST BE SPECIFIED '        @Y30LB02
.TEST1   AIF   (&ESW).EXIT             IF EXIT-SWITCH ON,BRCH  @Y30LB02
         AIF   ('&MF(1)' NE 'L').NLIST BRCH IF NOT LIST FORM   @Y30LB02
*  MACMEAN  PURGE/ASSIGN/INITIALIZE/READY MACRO                @Y30LB02
*    INITIALIZED/UNINITIALIZED LIST FORM                       @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').LPURG BRCH IF PURG REQUEST  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DESECT REQUESTED   @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
AIRLEN   DC    F'8'                    REQUEST BLOCK LENGTH    @Y30LB02
         AIF   ('&TYPE' EQ 'APH').LAPH BRCH IF APH REQUEST     @Y30LB02
         AIF   ('&TYPE' EQ 'INITL').LINITL BRCH IF INITL REQ.  @Y30LB02
AIROP    DC    XL1'20'                 RDY OPCODE              @Y30LB02
         AGO   .ZEROES                 BRANCH                  @Y30LB02
.LAPH    ANOP                                                  @Y30LB02
AIROP    DC    XL1'12'                 APH OPCODE              @Y30LB02
         AGO   .ZEROES                 BRANCH                  @Y30LB02
.LINITL  ANOP                                                  @Y30LB02
AIROP    DC    XL1'10'                 INITL OPCODE            @Y30LB02
.ZEROES  ANOP                                                  @Y30LB02
AIRRES0  DC    XL1'00'                 ZERO RESERVED FIELD     @Y30LB02
AIRFLAG  DC    XL2'0000'               ZERO FLAGS FIELD        @Y30LB02
         AGO   .EXIT                   BRANCH                  @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
ICBPAIR  DSECT                                                 @Y30LB02
AIRLEN   DS    F                       REQUEST BLK 8 BYTES     @Y30LB02
         AIF   ('&TYPE' EQ 'APH').LAPH1 BRCH IF APH REQUEST    @Y30LB02
         AIF   ('&TYPE' EQ 'INITL').LINITL1 BRCH IF INITL REQ. @Y30LB02
AIROP    DS    XL1                     RDY OPCODE 20 HEX       @Y30LB02
         AGO   .ZEROE1                 BRANCH                  @Y30LB02
.LAPH1   ANOP                                                  @Y30LB02
AIROP    DS    XL1                     APH OPCODE 12 HEX       @Y30LB02
         AGO   .ZEROE1                 BRANCH                  @Y30LB02
.LINITL1 ANOP                                                  @Y30LB02
AIROP    DS    XL1                     INITL OPCODE 10 HEX     @Y30LB02
.ZEROE1  ANOP                                                  @Y30LB02
AIRRES0  DS    XL1                     ZERO RESERVED FIELD     @Y30LB02
AIRFLAG  DS    XL2                     ZERO FLAGS FIELD        @Y30LB02
         AGO   .EXIT                   BRANCH                  @Y30LB02
.*                                                             @Y30LB02
.LPURG   ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LPURGDS  PURGE DSECT        @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
PURGLEN  DC    F'13'                   PURGE BLOCK LENGTH      @Y30LB02
PURGOP   DC    XL1'14'                 PURG OPCODE             @Y30LB02
PURGRES0 DC    XL1'00'                 ZERO RESERVED FIELD     @Y30LB02
PURGFLG  DC    XL2'0000'               ZERO FLAGS FIELD        @Y30LB02
PURGHOST DC    XL5'0000000000'         ZERO HOSTID FIELD       @Y30LB02
         AGO   .EXIT                   BRCH TO EXIT            @Y30LB02
.*                                                             @Y30LB02
.LPURGDS ANOP                                                  @Y30LB02
ICBPAIR  DSECT                                                 @Y30LB02
PURGLEN  DS    F                       PURGE BLK 13 BYTES      @Y30LB02
PURGOP   DS    XL1                     PURG OPCODE 14 HEX      @Y30LB02
PURGRES0 DS    XL1                     ZERO RESERVED FIELD     @Y30LB02
PURGFLG  DS    XL2                     FLAGS FIELD             @Y30LB02
PURGHOST DS    CL5                     HOSTID FIELD            @Y30LB02
         AGO   .EXIT                   BRCH TO EXIT            @Y30LB02
.*                                                             @Y30LB02
.NLIST   AIF   ('&MF(1)' NE '').EXCK   IF NOT STD FORM,BRCH    @Y30LB02
*  MACMEAN  PURGE/ASSIGN/INITIALIZE/READY MACRO                @Y30LB02
*              STANDARD FORM                                   @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP  0,4                                             @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').SPURG BRCH IF PURG REQUEST  @Y30LB02
&SYMBOL  BAL   1,&PARMAC               BRCH AROUND BLOCK       @Y30LB02
AIRLEN   DC    A(&PARMAC-*)            REQUEST BLOCK LENGTH    @Y30LB02
         AIF   ('&TYPE' EQ 'APH').SAPH BRCH IF APH REQUEST     @Y30LB02
         AIF   ('&TYPE' EQ 'INITL').SINITL BRCH IF INITL REQ.  @Y30LB02
AIROP    DC    XL1'20'                 RDY OPCODE              @Y30LB02
         AGO   .REST                   BRCH TO REST OF DC'S    @Y30LB02
.SAPH    ANOP                                                  @Y30LB02
AIROP    DC    XL1'12'                 APH OPCODE              @Y30LB02
         AGO   .REST                   BRCH TO REST OF DC'S    @Y30LB02
.SINITL  ANOP                                                  @Y30LB02
AIROP    DC    XL1'10'                 INITL OPCODE            @Y30LB02
.REST    ANOP                                                  @Y30LB02
AIRRES0  DC    XL1'00'                 ZERO RESERVED FIELD     @Y30LB02
AIRFLAG  DC    XL2'0000'               ZERO FLAGS FIELD        @Y30LB02
&PARMAC  EQU   *                                               @Y30LB02
         AGO   .CONT0                  BRCH IF NOT PURGE       @Y30LB02
.SPURG   ANOP                                                  @Y30LB02
&SYMBOL  BAL   1,&PURMAC               BRCH AROUND BLOCK       @Y30LB02
PURGLEN  DC    A(&PARMAC-*)            REQUEST BLOCK LENGTH    @Y30LB02
PURGOP   DC    XL1'14'                 PURG OPCODE             @Y30LB02
PURGRES0 DC    XL1'00'                 ZERO RESERVED FIELD     @Y30LB02
PURGFLG  DC    XL2'0000'               ZERO FLAGS FIELD        @Y30LB02
PURGHOST DC    XL5'0000000000'         ZERO HOSTID FIELD       @Y30LB02
&PARMAC  EQU   *                                               @Y30LB02
&PURMAC  DS    0F                                              @Y30LB02
.CONT0   ANOP                                                  @Y30LB02
&BSW     SETB  1                       SET BRCH-SWITCH TO 1    @Y30LB02
         AGO   .TEST2                  BRANCH                  @Y30LB02
.EXCK    AIF   ('&MF(1)' EQ 'E').EXEC  IF EXECUTABLE FORM,BRCH @Y30LB02
&ESW     SETB  1                       SET EXIT-SWITCH TO 1    @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE, L, E, OR NULL'        @Y30LB02
         AGO   .TEST2                  BRANCH                  @Y30LB02
.EXEC    AIF   (N'&MF EQ 2).CONT1      IF 2 SUBPARAMETERS,BRH  @Y30LB02
&ESW     SETB  1                       SET EXIT-SWITCH TO 1    @Y30LB02
         MNOTE 12,'  ICB613I - MISSING REQ BLK NAME OR MORE '
         MNOTE 12,'  THAN 2 SUBPARAMETERS FOR MF '
         AGO   .TEST2                  BRANCH                  @Y30LB02
.CONT1   ANOP                                                  @Y30LB02
*  MACMEAN  PURGE/ASSIGN/INITIALIZE/READY MACRO                @Y30LB02
*              EXECUTE FORM                                    @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)               LOAD THE ADDR INTO R1   @Y30LB02
.*                                     BY USING IHBINNRA MAC   @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').CONT2 BRCH IF PURGE         @Y30LB02
         LA    15,8                    PUT LENGTH(8) INTO R15  @Y30LB02
         AGO   .CONT3                                          @Y30LB02
.CONT2   ANOP                                                  @Y30LB02
         LA    15,13                   PUT LENGTH(13) INTO R15 @Y30LB02
.CONT3   ANOP                                                  @Y30LB02
         ST    15,0(1)                 R15 INTO LENGTH FIELD   @Y30LB02
.TEST2   AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   (&BSW).TYPECK           BRCH IF BRCH-SWITCH ON  @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').EPURG BRCH IF PURG REQUEST  @Y30LB02
         AIF   ('&TYPE' EQ 'APH').EAPH BRCH IF APH REQUEST     @Y30LB02
         AIF   ('&TYPE' EQ 'INITL').EINITL BRCH IF INITL REQ.  @Y30LB02
         MVI   4(1),X'20'              PUT RDY OPCODE IN BLK   @Y30LB02
         AGO   .TYPECK                 BRANCH                  @Y30LB02
.EPURG   ANOP                                                  @Y30LB02
         MVI   4(1),X'14'              PUT PURG OPCODE IN BLK  @Y30LB02
         AGO   .TYPECK                 BRANCH                  @Y30LB02
.EAPH    ANOP                                                  @Y30LB02
         MVI   4(1),X'12'              PUT APH OPCODE IN BLK   @Y30LB02
         AGO   .TYPECK                 BRANCH                  @Y30LB02
.EINITL  ANOP                                                  @Y30LB02
         MVI   4(1),X'10'              PUT INITL OPCODE IN BLK @Y30LB02
.*      THE FOLLOWING CODE CHECKS FOR PURG BECAUSE HOSTID      @Y30LB02
.*      IS A VALID PARAMETER FOR THAT REQUEST ONLY.            @Y30LB02
.*      IF PURG IS NOT SPECIFIED THE SECTION OF CODE(AT TEST3) @Y30LB02
.*      THAT CHECKS FOR HOSTID IS BY-PASSED.                   @Y30LB02
.TYPECK  AIF   ('&TYPE' EQ 'PURG').CKFLG                       @Y30LB02
         AIF   ('&TYPE' NE 'INITL').SETLSW IF NOT INITL        @Y30LB02
.*                                     REQUEST,BRANCH          @Y30LB02
.*      THIS SECTION OF CODE IS FOR INITL REQUESTS.            @Y30LB02
.*      IT CHECKS FOR THE FLAGS PARAMETER.                     @Y30LB02
.CKFLG   AIF   ('&FLAGS' EQ '').SETLSW BRCH IF FLAGS ARE NULL  @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').RFLAGS BRCH IF IN REG.   @Y30LB02
         MVC   6(2,1),&FLAGS           MOVE FLAGS INFO INTO    @Y30LB02
*                                      FLAGS FIELD             @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').TEST3 IF PURG-BRCH          @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').TEST3 IF PURG-BRCH          @Y30LB02
         AGO   .SETLSW                 BRCH TO SET LSW         @Y30LB02
.RFLAGS  ANOP                                                  @Y30LB02
         MVC   6(2,1),0(&FLAGS(1))     MOVE FLAGS INFO INTO    @Y30LB02
*                                      FLAGS FIELD             @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').TEST3 IF PURG-BRCH          @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').TEST3 IF PURG-BRCH          @Y30LB02
.SETLSW  ANOP                                                  @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').TEST3 IF PURG-BRCH          @Y30LB02
         AIF   ('&TYPE' EQ 'PURG').TEST3 IF PURG-BRCH          @Y30LB02
&LSW     SETB  1                       SET LINK SWITCH TO 1    @Y30LB02
.TEST3   AIF   (&LSW).LINK             BRCH IF LINK-SWITCH ON  @Y30LB02
         AIF   ('&HOSTID' NE '').TEST4 BRCH IF NOT NULL        @Y30LB02
&LSW     SETB  1                       SET LINK-SWITCH TO 1    @Y30LB02
.TEST4   AIF   (&ESW).EXIT             BRCH IF EXIT-SWITCH ON  @Y30LB02
         AIF   (&LSW).LINK             BRCH IF LINK-SWITCH ON  @Y30LB02
         AIF   ('&HOSTID'(1,1) EQ '(').RHOSTID BRCH IF IN REG  @Y30LB02
         MVC   8(5,1),&HOSTID          MV HOSTID TO HOSTID FLD @Y30LB02
         AGO   .LINK                   BRANCH                  @Y30LB02
.RHOSTID ANOP                                                  @Y30LB02
         MVC   8(5,1),0(&HOSTID(1))    MV HOSTID TO HOSTID FLD @Y30LB02
.LINK    ANOP                                                  @Y30LB02
         SVC   126                     ISSUE SVC INSTRUCITON   @Y30LB02
.EXIT    MEND                          MACRO ENDS              @Y30LB02
**/
* ICBPAIR: MACRO KEYS(MF,TYPE,HOSTID,FLAGS);               /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*/* EXTERNAL DECLARES                                        @Y30LB02*/
*   DCL  AIRTEST FIXED EXT;            /*USED IN TESTS TO    @Y30LB02*/
*   DCL PURGTEST FIXED EXT;            /*SEE IF STD FORMS    @Y30LB02*/
*                                      /*HAVE ALREADY BEEN   @Y30LB02*/
*                                      /*INVOKED             @Y30LB02*/
*   DCL PAIRTSTR FIXED EXT;            /*USED AS A TEST TO   @Y30LB02*/
*                                      /*SEE IF R1 ALREADY   @Y30LB02*/
*                                      /*DECLARED            @Y30LB02*/
*/* INTERNAL DECLARES                                        @Y30LB02*/
*   DCL RETCODE FIXED;                 /*RETURN CODE         @Y30LB02*/
*   DCL POPCODE CHAR;                  /*PURG OPCODE         @Y30LB02*/
*   DCL AOPCODE CHAR;                  /*APH OPCODE          @Y30LB02*/
*   DCL IOPCODE CHAR;                  /*INITL OPCODE        @Y30LB02*/
*   DCL ROPCODE CHAR;                  /*RDY OPCODE          @Y30LB02*/
*   DCL LENGTH CHAR;                   /*LENGTH OF LIST      @Y30LB02*/
*   DCL PLENGTH CHAR;                  /*LEN OF PURG LIST    @Y30LB02*/
*   DCL ESW FIXED;                     /*EXIT SWITCH         @Y30LB02*/
*   DCL BSW FIXED;                     /*BRANCH SWITCH       @Y30LB02*/
*   DCL LSW FIXED;                     /*LINK SWITCH         @Y30LB02*/
*   POPCODE='14';                      /*PURG OPCODE         @Y30LB02*/
*   AOPCODE='12';                      /*APH OPCODE          @Y30LB02*/
*   IOPCODE='10';                      /*INITL OPCODE        @Y30LB02*/
*   ROPCODE='20';                      /*RDY OPCODE          @Y30LB02*/
*   LENGTH='08';                       /*DEFINE LENGTH       @Y30LB02*/
*   PLENGTH='0D';                      /*DEF PURGE LENGTH    @Y30LB02*/
*/* INITIALIZE SWITCHES TO ZERO                              @Y30LB02*/
*   ESW=0;                                                 /*@Y30LB02*/
*   BSW=0;                                                 /*@Y30LB02*/
*   LSW=0;                                                 /*@Y30LB02*/
*/* END OF DECLARES AND INITIALIZATION                       @Y30LB02*/
*   IF TYPE(1)='PURG' THEN             /*PURG REQUEST?       @Y30LB02*/
*        GO TO TEST1;                  /*YES, BRANCH         @Y30LB02*/
*   IF TYPE(1)='APH'  THEN             /*APH  REQUEST?       @Y30LB02*/
*        GO TO TEST1;                  /*YES, BRANCH         @Y30LB02*/
*   IF TYPE(1)='INITL' THEN            /*INITL REQUEST?      @Y30LB02*/
*        GO TO TEST1;                  /*YES, BRANCH         @Y30LB02*/
*   IF TYPE(1)='RDY' THEN              /*RDY  REQUEST?       @Y30LB02*/
*        GO TO TEST1;                  /*YES, BRANCH         @Y30LB02*/
*   ESW=1;                             /*TURN ON ESW         @Y30LB02*/
*   IF TYPE='' THEN                    /*IS TYPE NULL?       @Y30LB02*/
*        DO;                           /*YES,PRT ERROR MSG   @Y30LB02*/
*             ANS MSG('  ICB600I - TYPE'
*                  ' MUST BE SPECIFIED') SKIP(5);          /*@Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   ELSE                               /*PRINT ERROR MSG     @Y30LB02*/
*        DO;                                               /*@Y30LB02*/
*             ANS MSG('  ICB601I - TYPE'
*                  ' IS INCORRECTLY SPECIFIED') SKIP(5);   /*@Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   RETCODE=12;                                            /*@Y30LB02*/
*TEST1: IF ESW=1 THEN                  /*ESW ON?             @Y30LB02*/
*        GO TO EXIT;                   /*YES, GO TO EXIT     @Y30LB02*/
*   IF PAIRTSTR=0 THEN                 /*WAS R1 ALREADY      @Y30LB02*/
*                                      /*DECLARED?           @Y30LB02*/
*        DO;                           /*NO,PRT DCL FOR R1   @Y30LB02*/
*             ANS('DCL PAIRR1  REG(1) PTR; '             /*@Y30LB02*/
*                  '/* WILL CONTAIN BLK ADDRESS @Y30LB02*/') SKIP(1);
*             PAIRTSTR=1;              /*TURN SWITCH ON      @Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   IF MF(1)^='L' THEN                 /*IF NOT LIST FORM    @Y30LB02*/
*        GO TO NOTLIST;                /*BRANCH              @Y30LB02*/
*   IF MF(2)='' THEN                   /*WAS A NAME GIVEN?   @Y30LB02*/
*        DO;                           /*IF NOT, THEN        @Y30LB02*/
*             ESW=1;                   /*TURN ON ESW         @Y30LB02*/
*                                      /*AND,PRT ERROR MSG   @Y30LB02*/
*             ANS MSG('  ICB602I - A NAME FOR THE '
*                  'REQUEST BLOCK MUST BE SPECIFIED '
*                  'IN MF(2)')SKIP(5);                     /*@Y30LB02*/
*             RETCODE=12;                                  /*@Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   IF ESW=1 THEN                      /*ESW ON?             @Y30LB02*/
*        GO TO EXIT;                   /*YES,BRANCH TO EXIT  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF MF(3) ^= '' THEN
*        GO TO ATTRLST;                                    /*@Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* START TO PRINT OUT DECLARES FOR LIST FORM                @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC PURG/ASSIGN/INITL/READY MACRO'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('DCL 1   'MF(2)'  STATIC LOCAL,') SKIP(1);     /*@Y30LB02*/
*   IF TYPE(1)^='PURG' THEN             /*NOT A PURG REQ?    @Y30LB02*/
*        DO;                                               /*@Y30LB02*/
*             ANS('      2  AIRLL FIXED(31) INIT('QUOTE('08')
*                  'X), /*LENGTH @Y30LB02*/')  SKIP(1);
*             IF TYPE(1)='APH' THEN    /*APH REQUEST?        @Y30LB02*/
*                  DO;                 /*PUT IN APH  OPCODE  @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8) INIT('
*                            QUOTE(AOPCODE)
*                            'X), /*OPCODE @Y30LB02*/') SKIP(1);
*                  END;                                    /*@Y30LB02*/
*             ELSE
*                  IF TYPE(1)='INITL' THEN /*INITL REQUEST?  @Y30LB02*/
*                     DO;              /*PUT IN INITL  OPCD  @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8) INIT('
*                            QUOTE(IOPCODE)
*                            'X),/*OPCODE @Y30LB02*/') SKIP(1);
*                     END;                                 /*@Y30LB02*/
*                  ELSE
*                     DO;              /*PUT IN RDY OPCODE   @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8) INIT('
*                            QUOTE(ROPCODE)
*                            'X),/*OPCODE @Y30LB02*/') SKIP(1);
*                     END;                                 /*@Y30LB02*/
*             ANS ('      2  * CHAR(1) INIT('
*                  QUOTE('00')'X), /*ZEROES   @Y30LB02*/') SKIP(1);
*             ANS ('      2  AIRFLAG BIT(16) INIT('
*                 QUOTE('0000000000000000')
*                 'B),/*FLAGS/ZEROES @Y30LB02*/') SKIP(1);
*             ANS ('        3  AIRRESV BIT(1),'
*                  '/*RESERVED BIT  @Y30LB02*/') SKIP(1);
*             ANS ('        3  AIRCPUS BIT(1),'
*                  '/*INITIALIZE BOTH CPUS  @Y30LB02*/') SKIP(1);
*             ANS ('        3  *      BIT(14);'          /*@Y30LB02*/
*                  '/*RESERVED BITS  @Y30LB02*/') SKIP(1);
*        END;                                              /*@Y30LB02*/
*   ELSE                               /*PURG REQUEST        @Y30LB02*/
*        DO;                           /*DCL PURGE LIST      @Y30LB02*/
*             ANS('      2  PURGLL FIXED(31) INIT('QUOTE('0D')
*                  'X), /*LENGTH @Y30LB02*/')  SKIP(1);
*             ANS('      2  PURGOP FIXED(8) INIT('
*                  QUOTE(POPCODE)'X), /*OPCODE @Y30LB02*/') SKIP(1);
*             ANS ('      2  * CHAR(1) INIT('
*                  QUOTE('00')'X), /*ZEROES   @Y30LB02*/')
*                  SKIP(1);                                /*@Y30LB02*/
*             ANS ('      2  PURGFLG BIT(16) INIT('
*                  QUOTE('0000000000000000')'B),'
*                  '/*ZEROES   @Y30LB02*/') SKIP(1);
*             ANS ('        3  PURGMPP BIT(1),'
*                  '/*PURGE OTHER PROCESSOR  @Y30LB02*/') SKIP(1);
*             ANS ('        3  *      BIT(15),'
*                  '/*RESERVED BITS  @Y30LB02*/') SKIP(1);
*             ANS('      2  PURGHOST CHAR(5) INIT('
*                  QUOTE('0000000000')'X); /*HOSTID @Y30LB02*/')
*                  SKIP(1);                                /*@Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   GO TO EXIT;                        /*BRANCH TO EXIT      @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* THAT IS ALL THAT IS DONE FOR LIST FORM                   @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC PURG/ASSIGN/INITL/READY MACRO'
*       '             @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('DCL 1   'MF(2)' 'MF(3)','
*              '/*REQUEST BLOCK @Y30LB02*/') SKIP(1);
*   IF TYPE(1)^='PURG' THEN             /*NOT A PURG REQ?    @Y30LB02*/
*        DO;                                               /*@Y30LB02*/
*             ANS('      2  AIRLL FIXED(31) ,  '
*                  ' /*LENGTH  = 8 BYTES @Y30LB02*/')  SKIP(1);
*             IF TYPE(1)='APH' THEN    /*APH REQUEST?        @Y30LB02*/
*                  DO;                 /*PUT IN APH  OPCODE  @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8),'
*                            ' /*OPCODE=12 HEX @Y30LB02*/') SKIP(1);
*                  END;                                    /*@Y30LB02*/
*             ELSE
*                  IF TYPE(1)='INITL' THEN /*INITL REQUEST?  @Y30LB02*/
*                     DO;              /*PUT IN INITL  OPCD  @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8),'
*                            '/*OPCODE=10 HEX @Y30LB02*/') SKIP(1);
*                     END;                                 /*@Y30LB02*/
*                  ELSE
*                     DO;              /*PUT IN RDY OPCODE   @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8),'
*                            '/*OPCODE=20 HEX @Y30LB02*/') SKIP(1);
*                     END;                                 /*@Y30LB02*/
*             ANS ('      2  * CHAR(1),/*ZEROES   @Y30LB02*/') SKIP(1);
*             ANS ('      2  AIRFLAG BIT(16),'
*                 '/*FLAGS/ZEROES @Y30LB02*/') SKIP(1);
*             ANS ('        3  AIRRESV BIT(1),'
*                  '/*RESERVED BIT  @Y30LB02*/') SKIP(1);
*             ANS ('        3  AIRCPUS BIT(1),'
*                  '/*INITIALIZE BOTH CPUS  @Y30LB02*/') SKIP(1);
*             ANS ('        3  *      BIT(14);'          /*@Y30LB02*/
*                  '/*RESERVED BITS  @Y30LB02*/') SKIP(1);
*        END;                                              /*@Y30LB02*/
*   ELSE                               /*PURG REQUEST        @Y30LB02*/
*        DO;                           /*DCL PURGE LIST      @Y30LB02*/
*             ANS('      2  PURGLL FIXED(31),  '
*                  ' /*LENGTH=13 BYTES @Y30LB02*/')  SKIP(1);
*             ANS('      2  PURGOP FIXED(8),'
*                  ' /*OPCODE=14 HEX @Y30LB02*/') SKIP(1);
*             ANS ('      2  * CHAR(1),'
*                 '/*RESERVED/ZEROES @Y30LB02*/') SKIP(1);
*             ANS ('      2  PURGFLG BIT(16),'
*                  '/*FLAGS FIELD   @Y30LB02*/') SKIP(1);
*             ANS ('        3  PURGMPP BIT(1),'
*                  '/*PURGE OTHER PROCESSOR  @Y30LB02*/') SKIP(1);
*             ANS ('        3  *      BIT(15),'
*                  '/*RESERVED BITS  @Y30LB02*/') SKIP(1);
*             ANS('      2  PURGHOST CHAR(5);'
*                  ' /*HOSTID @Y30LB02*/') SKIP(1);
*        END;                                              /*@Y30LB02*/
*   GO TO EXIT;                        /*BRANCH TO EXIT      @Y30LB02*/
*NOTLIST:
*   IF MF(1)^='' THEN                  /*IF NOT STD FORM     @Y30LB02*/
*        GO TO EXCHECK;                /*BRANCH              @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* THIS PART OF THE MACRO IS FOR STD FORM (MF(1)='')        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='PURG' THEN             /*PURG REQUEST?       @Y30LB02*/
*        IF PURGTEST=1 THEN            /*IF STD FORM HAS     @Y30LB02*/
*                                      /*BEEN INVOKED ALRDY  @Y30LB02*/
*             DO;                      /*SET UP REG1 TO PT   @Y30LB02*/
*                                      /*TO PURG LIST        @Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC PURGE MACRO                 '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*                  ANS ('RFY(PAIRR1)RSTD;/*RESTRICT '
*                       'R1 @Y30LB02*/')SKIP;
*                  ANS ('PAIRR1=ADDR(PURGLL);'           /*@Y30LB02*/
*                    '/*PAIRR1 SET TO ADDR OF PURG LIST @Y30LB02*/')
*                     SKIP(1);                             /*@Y30LB02*/
*                  GO TO TEST2;        /*BRANCH              @Y30LB02*/
*             END;                                         /*@Y30LB02*/
*   IF TYPE(1)^='PURG' THEN             /*NOT PURG REQUEST?  @Y30LB02*/
*        IF  AIRTEST=1 THEN            /*IF STD FORM HAS     @Y30LB02*/
*                                      /*BEEN INVOKED ALRDY  @Y30LB02*/
*             DO;                      /*SET UP REG1 TO PT   @Y30LB02*/
*                                      /*TO REQUEST BLOCK   @Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  MSSC ASSIGN/INITIALIZE/READY MACRO'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*                  ANS ('RFY(PAIRR1)RSTD;/*RESTRICT '
*                       'R1 @Y30LB02*/')SKIP;
*                  ANS ('PAIRR1=ADDR(AIRLL);'            /*@Y30LB02*/
*                    '/*PAIRR1 SET TO ADDR OF AIR LIST @Y30LB02*/')
*                     SKIP(1);                             /*@Y30LB02*/
*                  GO TO TEST2;        /*BRANCH              @Y30LB02*/
*             END;                                         /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* OTHERWISE PRINT OUT THE DECLARE STATEMENTS FOR STD FORM  @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)^='PURG' THEN             /*NOT A PURG REQ?    @Y30LB02*/
*        DO;                                               /*@Y30LB02*/
*             ANS('/*******************************************'
*                 '************* @Y30LB02*/')SKIP;
*             ANS('/*MACMEAN  MSSC ASSIGN/INITIALIZE/READY MACRO'
*                 '             @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '              @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE STANDARD FORM - ICBPAIR MACRO '
*                 '              @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************* @Y30LB02*/')SKIP;
*             ANS('DCL  1   AIRLIST  STATIC LOCAL,') SKIP(1);
*             ANS('      2  AIRLL FIXED(31) INIT('QUOTE('08')
*                  'X), /*LENGTH @Y30LB02*/')  SKIP(1);
*             IF TYPE(1)='APH' THEN    /*APH REQUEST?        @Y30LB02*/
*                  DO;                 /*PUT IN APH  OPCODE  @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8) INIT('
*                            QUOTE(AOPCODE)
*                            'X), /*OPCODE @Y30LB02*/') SKIP(1);
*                  END;                                    /*@Y30LB02*/
*             ELSE
*                  IF TYPE(1)='INITL' THEN /*INITL REQUEST?  @Y30LB02*/
*                     DO;              /*PUT IN INITL  OPCD  @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8) INIT('
*                            QUOTE(IOPCODE)
*                            'X),/*OPCODE @Y30LB02*/') SKIP(1);
*                     END;                                 /*@Y30LB02*/
*                  ELSE
*                     DO;              /*PUT IN RDY OPCODE   @Y30LB02*/
*                       ANS('      2  AIROP FIXED(8) INIT('
*                            QUOTE(ROPCODE)
*                            'X),/*OPCODE @Y30LB02*/') SKIP(1);
*                     END;                                 /*@Y30LB02*/
*             ANS ('      2  * CHAR(1) INIT('
*                  QUOTE('00')'X), /*ZEROES   @Y30LB02*/') SKIP(1);
*             ANS ('      2  AIRFLAG BIT(16) INIT('
*                 QUOTE('0000000000000000')
*                 'B),/*FLAGS/ZEROES @Y30LB02*/') SKIP(1);
*             ANS ('        3  AIRRESV BIT(1),'
*                  '/*RESERVED BIT  @Y30LB02*/') SKIP(1);
*             ANS ('        3  AIRCPUS BIT(1),'
*                  '/*INITIALIZE BOTH CPUS  @Y30LB02*/') SKIP(1);
*             ANS ('        3  *      BIT(14);'
*                  '/*RESERVED BITS  @Y30LB02*/') SKIP(1);
*             ANS ('RFY(PAIRR1)RSTD;/*RESTRICT '
*                  'R1 @Y30LB02*/')SKIP;
*             ANS('PAIRR1=ADDR(AIRLL); '                 /*@Y30LB02*/
*                '/*PAIRR1 SET TO ADDR OF BLK @Y30LB02*/') SKIP(1);
*             AIRTEST=1;               /*SET SO KNOW STD     @Y30LB02*/
*                                      /*HAS BEEN INVOKED    @Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   ELSE                               /*PURG REQUEST        @Y30LB02*/
*        DO;                           /*DCL PURGE LIST      @Y30LB02*/
*             ANS('/*******************************************'
*                 '************* @Y30LB02*/')SKIP;
*             ANS('/*MACMEAN  MSSC PURGE MACRO                 '
*                 '              @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '              @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE STANDARD FORM - ICBPAIR MACRO '
*                 '              @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************* @Y30LB02*/')SKIP;
*             ANS('DCL  1   PURGLIST  STATIC LOCAL,') SKIP;/*@Y30LB02*/
*             ANS('      2  PURGLL FIXED(31) INIT('QUOTE('0D')
*                  'X), /*LENGTH @Y30LB02*/')  SKIP(1);
*             ANS('      2  PURGOP FIXED(8) INIT('
*                  QUOTE(POPCODE)'X), /*OPCODE @Y30LB02*/') SKIP(1);
*             ANS ('      2  * CHAR(1) INIT('
*                  QUOTE('00')'X), /*ZEROES   @Y30LB02*/')
*                  SKIP(1);                                /*@Y30LB02*/
*             ANS ('      2  PURGFLG BIT(16) INIT('
*                  QUOTE('0000000000000000')'B),'
*                  '/*ZEROES   @Y30LB02*/') SKIP(1);
*             ANS ('        3  PURGMPP BIT(1),'
*                  '/*PURGE OTHER PROCESSOR  @Y30LB02*/') SKIP(1);
*             ANS ('        3  *      BIT(15),'
*                  '/*RESERVED BITS  @Y30LB02*/') SKIP(1);
*             ANS('      2  PURGHOST CHAR(5) INIT('
*                  QUOTE('0000000000')'X); /*HOSTID @Y30LB02*/')
*                  SKIP(1);                                /*@Y30LB02*/
*             ANS ('RFY(PAIRR1)RSTD;/*RESTRICT'
*                  ' R1 @Y30LB02*/')SKIP;
*             ANS('PAIRR1=ADDR(PURGLL); '                /*@Y30LB02*/
*                 '/*PAIRR1 SET TO ADDR OF LIST @Y30LB02*/') SKIP(1);
*             PURGTEST=1;              /*SET SO KNOW STD     @Y30LB02*/
*                                      /*HAS BEEN INVOKED    @Y30LB02*/
*        END;                                              /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* END OF DCLS TO BE PRINTED OUT FOR REQUEST BLOCK          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   BSW=1;                             /*TURN BSW SWITCH     @Y30LB02*/
*   GO TO TEST2;                       /*BRANCH              @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/* THE MACRO BRANCHES HERE IF EXECUTABLE FORM WAS REQUESTD  @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*EXCHECK: IF MF(1)='E' THEN            /*EXEC FORM SPECD?    @Y30LB02*/
*             GO TO EXFORM;            /*YES, BRANCH         @Y30LB02*/
*   ESW=1;                             /*TURN ON ESW         @Y30LB02*/
*   DO;                                /*PRINT ERROR MSG     @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER SPECIFIED,'
*             ' MUST BE L, E, OR NULL ') SKIP(1);          /*@Y30LB02*/
*   END;                                /*                   @Y30LB02*/
*   RETCODE=12;                        /*SET RETURN CODE     @Y30LB02*/
*   GO TO TEST2;                       /*BRANCH              @Y30LB02*/
*EXFORM: IF MF(2)='' THEN              /*ADDRESS GIVEN?      @Y30LB02*/
*             DO;                      /*NO,TURN ON ESW AND  @Y30LB02*/
*                  ESW=1;              /*PRINT ERROR MSG     @Y30LB02*/
*                  ANS MSG('  ICB612I - MF(2) MUST CONTAIN'
*                       ' REQ BLK NAME IF EXEC MACRO '
*                       'FORM REQUESTED')SKIP(5);          /*@Y30LB02*/
*                  RETCODE=12;         /*SET RETURN CODE     @Y30LB02*/
*                  GO TO TEST2;        /*BRANCH              @Y30LB02*/
*             END;                                         /*@Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*MACMEAN  PURGE/ASSIGN/INITIALIZE/READY    '
*       'MACRO         @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS ('RFY(PAIRR1)RSTD;/*RESTRICT  R1 @Y30LB02*/')SKIP;
*   ANS('PAIRR1=ADDR('MF(2)
*        '); /*SET PAIRR1 TO REQ BLOCK @Y30LB02*/')  SKIP(1);
*   IF MF(3) = 'COMPLETE' THEN
*      DO;                                                 /*@Y30LB02*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'    /*@Y30LB02*/
*           '/*ZERO REQUEST BLOCK @Y30LB02*/')SKIP;
*      END;                                                /*@Y30LB02*/
*   IF TYPE(1)='PURG' THEN             /*SET LENGTH FLD=13   @Y30LB02*/
*        ANS('PURGLL='QUOTE(PLENGTH)'X; /*SET LENGTH '
*            'FIELD @Y30LB02*/')SKIP(1);
*   ELSE                               /*SET LENGTH FLD=8    @Y30LB02*/
*        ANS('AIRLL='QUOTE(LENGTH)'X; /*SET LENGTH '
*            'FIELD @Y30LB02*/')SKIP(1);
*TEST2: IF ESW=1 THEN                  /*IS ESW ON?          @Y30LB02*/
*        GO TO EXIT;                   /*YES, BRANCH         @Y30LB02*/
*   IF BSW=1 THEN                      /*IS BSW ON?          @Y30LB02*/
*        GO TO TYPECK;                 /*YES, BRANCH         @Y30LB02*/
*   IF TYPE(1)='PURG' THEN             /*PURG REQUEST?       @Y30LB02*/
*        DO;                           /*YES,PUT IN PURG     @Y30LB02*/
*                                      /*OPCODE              @Y30LB02*/
*             ANS('PURGOP='QUOTE(POPCODE)'X;'
*                  '/*PURG  OPCODE @Y30LB02*/') SKIP(1);
*        END;                                              /*@Y30LB02*/
*   ELSE
*        IF TYPE(1)='APH' THEN         /*APH  REQUEST?       @Y30LB02*/
*             DO;                      /*YES,PUT IN APH      @Y30LB02*/
*                                      /*OPCODE              @Y30LB02*/
*                  ANS('AIROP='QUOTE(AOPCODE)'X;'
*                       '/*APH  OPCODE @Y30LB02*/') SKIP(1);
*             END;                                         /*@Y30LB02*/
*        ELSE
*             IF TYPE(1)='INITL' THEN  /*INITL REQUEST?      @Y30LB02*/
*                  DO;                 /*YES,PUT IN INITL    @Y30LB02*/
*                                      /*OPCODE              @Y30LB02*/
*                       ANS('AIROP='QUOTE(IOPCODE)'X;'
*                            '/*INITL OPCODE @Y30LB02*/') SKIP(1);
*                  END;                                    /*@Y30LB02*/
*             ELSE
*                  DO;                 /*PUT IN RDY OPCODE   @Y30LB02*/
*                       ANS('AIROP='QUOTE(ROPCODE)'X;'
*                            '/*RDY OPCODE @Y30LB02*/') SKIP(1);
*                  END;                                    /*@Y30LB02*/
*TYPECK: IF TYPE(1)='PURG' THEN
*             GO TO TEST3;             /*BRCH IF PURG REQ.   @Y30LB02*/
*   IF TYPE(1)='INITL' THEN            /*INITL REQUEST?      @Y30LB02*/
*        DO;                           /*YES,CHECK FLAGS     @Y30LB02*/
*             IF FLAGS^='' THEN        /*IS FLAGS NULL?      @Y30LB02*/
*                  DO;                 /*NO,FILL IN FLAGS    @Y30LB02*/
*                                      /*FIELD               @Y30LB02*/
*                       ANS('AIRFLAG='FLAGS
*                            ';/*FILL IN FLAGS FIELD @Y30LB02*/')
*                            SKIP(1);                      /*@Y30LB02*/
*                  END;                                    /*@Y30LB02*/
*        END;                                              /*@Y30LB02*/
*   LSW=1;                             /*TURN ON LSW         @Y30LB02*/
*TEST3: IF LSW=1 THEN                  /*IS LSW ON?          @Y30LB02*/
*        GO TO LINK;                   /*YES, BRANCH         @Y30LB02*/
*             IF FLAGS^='' THEN        /*IS FLAGS NULL?      @Y30LB02*/
*                  DO;                 /*NO,FILL IN FLAGS    @Y30LB02*/
*                                      /*FIELD               @Y30LB02*/
*                       ANS('PURGFLG='FLAGS
*                            ';/*FILL IN FLAGS FIELD @Y30LB02*/')
*                            SKIP(1);                      /*@Y30LB02*/
*                  END;                                    /*@Y30LB02*/
*   IF HOSTID='' THEN                  /*HOSTID NULL?        @Y30LB02*/
*                  LSW=1;              /*TURN LSW ON         @Y30LB02*/
*   IF ESW=1 THEN                      /*ESW ON?             @Y30LB02*/
*        GO TO EXIT;                   /*YES, BRANCH         @Y30LB02*/
*   IF LSW=1 THEN                      /*LSW ON?             @Y30LB02*/
*        GO TO LINK;                   /*YES, BRANCH         @Y30LB02*/
*/* OTHERWISE PUT HOSTID IN HOSTID FIELD & INVOKE SVC INST   @Y30LB02*/
*   ANS ('PURGHOST='HOSTID'; /*FILL IN HOSTID FIELD @Y30LB02*/')
*        SKIP(1);                                          /*@Y30LB02*/
*LINK: ANS('SVC  (126); /*ISSUE SVC INST.  @Y30LB02*/') SKIP(1);
*      ANS ('RFY(PAIRR1)UNRSTD;/*UNRESTRICT'
*           ' R1 @Y30LB02*/')SKIP;
*EXIT: RETURN CODE(RETCODE);                               /*@Y30LB02*/
*   %END;                                                  /*@Y30LB02*/
./ ADD NAME=ICBQUERY
* %/* START OF SPECIFICATIONS  ***                           @Z40LB22
*                                                            @Z40LB22
*01*  MODULE-NAME = ICBQUERY                                 @Z40LB22
*                                                            @Z40LB22
*01*  DESCRIPTIVE-NAME = READ SA WCS, READ MCS WCS, READ MSC @Z40LB22
*                        TABLES, LABEL READ, AND CELL AUDIT  @Z40LB22
*                                                            @Z40LB22
*01*  COPYRIGHT = NONE                                       @Z40LB22
*                                                            @Z40LB22
*01*  STATUS =  OS/VS2                                       @Z40LB22
*                                                            @Z40LB22
*01*  FUNCTION = BUILDS A REQUEST BLOCK FOR A REQUEST.       @Z40LB22
*                THE MACRO IS A COMMUNICATION LINK BETWEEN   @Z40LB22
*                THE CALLER AND THE MSSC SVC MODULE.         @Z40LB22
*                                                            @Z40LB22
*01*  NOTES = ICBQUERY IS CODED IN PLS ONLY.                 @Z40LB22
*                                                            @Z40LB22
*02*    DEPENDENCIES = NONE                                  @Z40LB22
*                                                            @Z40LB22
*02*    RESTRICTIONS = THE PREFIXES ICB AND QUERY SHOULD BE  @Z40LB22
*                      AVOIDED WHEN INVOKING THIS MACRO.     @Z40LB22
*                                                            @Z40LB22
*02*    REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF         @Z40LB22
*                              REGISTERS BY MACROS:          @Z40LB22
*                              R0,R1,R14, AND R15.           @Z40LB22
*                                                            @Z40LB22
*01*  MODULE-TYPE = MACRO                                    @Z40LB22
*                                                            @Z40LB22
*02*    PROCESSOR = PLS2                                     @Z40LB22
*                                                            @Z40LB22
*01*  INPUT = PARAMETERS SPECIFIED ON THE PLS MACRO          @Z40LB22
*             INVOCATION.                                    @Z40LB22
*                                                            @Z40LB22
*     THE READ SA WCS REQUEST IS ISSUED WHEN THE CALLER      @Z40LB22
*     WANTS TO MOVE ONE SECTOR (256 BYTES) OF SA STORAGE     @Z40LB22
*     INTO MSC DIAGNOSTIC BUFFER AT OFFSET 256 - 511.        @Z40LB22
*                                                            @Z40LB22
*     THE READ MSC WCS REQUEST IS ISSUED WHEN THE CALLER     @Z40LB22
*     WANTS TO MOVE ONE SECTOR (256 BYTES) INTO MSC          @Z40LB22
*     DIAGNOSTIC BUFFER AT OFFSET 256 - 511.                 @Z40LB22
*                                                            @Z40LB22
*     THE READ MSC TABLES REQUEST IS ISSUED WHEN THE CALLER  @Z40LB22
*     WANTS TO READ ONE RECORD (264 BYTES) INTO MSC          @Z40LB22
*     DIAGNOSTIC BUFFER AT OFFSET 248 - 511.                 @Z40LB22
*                                                            @Z40LB22
*     THE LABEL READ REQUEST IS ISSUED WHEN THE CALLER WANTS @Z40LB22
*     TO READ A CARTRIDGE LABEL (256 BYTES) INTO DIAGNOSTIC  @Z40LB22
*     BUFFER AT OFFSET 256 - 511.                            @Z40LB22
*                                                            @Z40LB22
*     THE CELL AUDIT REQUEST IS ISSUED WHEN THE CALLER WANTS @Z40LB22
*     TO TEST THE LIBRARY CELLS FOR FULL/EMPTY STATUS AND    @Z40LB22
*     LOAD THE RESULTS IN DIAGNOSTIC BUFFER AT OFFSET 0 - 31 @Z40LB22
*                                                            @Z40LB22
*     MACRO SYNTAX                                           @Z40LB22
*                                                            @Z40LB22
*     LIST FORM                                              @Z40LB22
*                                                            @Z40LB22
*     VERB        REQUIRED PARMS             OPTIONAL PARMS  @Z40LB22
*                                                            @Z40LB22
*     ICBQUERY    MF(L,NAME/(R)[,ATTRIBUTE])                 @Z40LB22
*                                                            @Z40LB22
*     EXECUTE FORM                                           @Z40LB22
*                                                            @Z40LB22
*     VERB        REQUIRED PARMS             OPTIONAL PARMS  @Z40LB22
*                                                            @Z40LB22
*     ICBQUERY    MF(E,NAME/(R))            MF(E,NAME/(R)    @Z40LB22
*                 TYPE(QSWCS/QLAB/QMWCS/      [,COMPLETE])   @Z40LB22
*                      QTAB/QCEL)           PARMS(ADDR/(R))  @Z40LB22
*                                           FLAGS(ADDR/(R))  @Z40LB22
*                                           SECT(ADDR/(R))   @Z40LB22
*                                           SSID(ADDR/(R))   @Z40LB22
*                                           MSFID(ADDR/(R))  @Z40LB22
*                                           CMAP(ADDR/(R))   @Z40LB22
*                                           LZYX(ADDR/(R))   @Z40LB22
*                                           LOC(ADDR/(R))    @Z40LB22
*                                          DASDCHR(ADDR/(R)) @Z40LB22
*                                          DATAPTR(NAME/(R)) @Z40LB22
*                                                            @Z40LB22
*     KEYWORD PARAMETERS:                                    @Z40LB22
*                                                            @Z40LB22
*     MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE      @Z40LB22
*            MACRO FORMAT AND MAY GIVE THE ADDRESS OR        @Z40LB22
*            ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK   @Z40LB22
*            IS STORED.                                      @Z40LB22
*                                                            @Z40LB22
*            L - LIST FORM:  THE EXPANSION OF THE L-FORM     @Z40LB22
*                MACRO WILL RESULT IN AN UNINITIALIZED       @Z40LB22
*                REQUEST BLOCK.                              @Z40LB22
*                                                            @Z40LB22
*            (1) NAME - THE MACRO INVOKER MUST SPECIFY A     @Z40LB22
*                NAME FOR HIS STRUCTURE WHEN INVOKING THE    @Z40LB22
*                PLS LIST FORM.                              @Z40LB22
*                                                            @Z40LB22
*            (2) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS    @Z40LB22
*                ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION @Z40LB22
*                IN AN UNINITIALIZED REQUEST BLOCK.          @Z40LB22
*                ATTRIBUTE EXAMPLE:                          @Z40LB22
*                                                            @Z40LB22
*                CHAR, FIXED, STATIC LOCAL, NONLOCAL,        @Z40LB22
*                BASED(*), ETC.                              @Z40LB22
*                                                            @Z40LB22
*            E - EXECUTABLE FORM:  THE EXPANSION OF THIS     @Z40LB22
*                FORM CONSISTS OF A LINKAGE INSTRUCTION AND  @Z40LB22
*                POSSIBLY, PARAMETER BINDING INSTRUCTIONS.   @Z40LB22
*                                                            @Z40LB22
*                SUB-PARAMETERS                              @Z40LB22
*                (1)  AN E MUST BE SPECIFIED IN THE FIRST    @Z40LB22
*                     SUB-PARAMETER POSITION.  THIS          @Z40LB22
*                     INDICATES THAT THE MACRO IS IN         @Z40LB22
*                     EXECUTABLE FORM.                       @Z40LB22
*                                                            @Z40LB22
*                (2)  A NAME OR A REGISTER MUST BE SPECIFIED @Z40LB22
*                     IN THE SECOND SUB-PARAMETER.           @Z40LB22
*                                                            @Z40LB22
*                (3)  'COMPLETE' - COMPLETE WILL CAUSE THE   @Z40LB22
*                     MACRO TO ZERO OUT THE REQUEST BLOCK.   @Z40LB22
*                     AFTER ZEROING THE REQUEST BLOCK THE    @Z40LB22
*                     FUNCTION OPCODE, CODE AND LENGTH ARE   @Z40LB22

*                     PLACED IN THE REQUEST BLOCK.           @Z40LB22
*                                                            @Z40LB22
*     TYPE - INDICATES WHETHER THE REQUEST IS FOR READ SA    @Z40LB22
*            WCS (QSWCS), READ MSC WCS (QMWCS), LABEL READ   @Z40LB22
*            (QLAB), READ MSC TABLES (QTAB), OR CELL AUDIT   @Z40LB22
*            (QCEL).  THE ORDER AND CODE FIELD OF THE        @Z40LB22
*            REQUEST BLOCK IS FILLED IN BY THE EXECUTE FORM  @Z40LB22
*            MARCO. THE FOLLOWING TABLE GIVES THE ORDERS     @Z40LB22
*            AND CODES FOR EACH REQUEST.                     @Z40LB22
*                                                            @Z40LB22
*                REQUEST           ORDER     CODE          @Z40LB22
*                --------------------------------------      @Z40LB22
*                READ MSC WCS      HEX'0B'   HEX'03'       @Z40LB22
*                READ MSC TABLES   HEX'05'   HEX'06'       @Z40LB22
*                LABEL READ        HEX'05'   HEX'08'       @Z40LB22
*                READ SA WCS       HEX'05'   HEX'10'       @Z40LB22
*                CELL AUDIT        HEX'07'   N/A           @Z40LB22
*                                                            @Z40LB22
*02*    INVOCATION PARAMETERS                                @Z40LB22
*       WITH THE SINGLE EXCEPTION OF THE RESERVED FIELDS,    @Z40LB22
*       ALL OF THE INVOCATION PARAMETERS ARE REQUIRED.       @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*       READ MSC WCS - (F,X,CODE,SECT,X,A,X)                 @Z40LB22
*                                                            @Z40LB22
*       (1)  ORDER (F) - 1 BYTE                              @Z40LB22
*            THIS BYTE IS ALWAYS X'0B' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (2)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (3)  OPCODE (CODE) - 1 BYTE                          @Z40LB22
*            THIS BYTE IS ALWAYS X'03' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (4)  SECTOR (SECT) - 1 BYTE                          @Z40LB22
*            THIS BYTE REPRESENTS THE SECTOR OF WCS CODE     @Z40LB22
*            TO BE READ INTO THE MSC DIAGNOSTIC BUFFER.  A   @Z40LB22
*            VALID SECTOR RANGE IS FROM X'00' TO X'FF'.      @Z40LB22
*                                                            @Z40LB22
*       (5)  RESERVED (X) - 2 BYTES                          @Z40LB22
*                                                            @Z40LB22
*       (6)  FLAGS (A) - 1 BYTE                              @Z40LB22
*            BIT 0 = 0; READ FROM MAIN STORAGE               @Z40LB22
*            BIT 0 = 1; READ FROM EXTENDED STORAGE           @Z40LB22
*            BIT 1 - 6; UNUSED                               @ZA27590
*            BIT 7 = 0; DUMP PRIMARY MSC                     @ZA27590
*            BIT 7 = 1; DUMP ALTERNATE MSC                   @ZA27590
*                                                            @Z40LB22
*       (7)  RESERVED (X) - 29 BYTES                         @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*       READ MSC TABLES - (F,X,CODE,X,PARMS,X)               @Z40LB22
*                                                            @Z40LB22
*       (1)  ORDER (F) - 1 BYTE                              @Z40LB22
*            THIS BYTE IS ALWAYS X'05' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (2)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (3)  OPCODE (CODE) - 1 BYTE                          @Z40LB22
*            THIS BYTE IS ALWAYS X'06' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (4)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (5)  PARAMETERS (PARMS) - 20 BYTES                   @Z40LB22
*            THIS 20 BYTE AREA CONTAINS THE INPUT PARAMETERS @Z40LB22
*            TO THE TABLE MODULE, NORMALLY FOUND IN MSC      @Z40LB22
*            JOBLIST AT OFFSET X'0C' - X'1F'.  THE CHR OF    @Z40LB22
*            BLOCKS TO BE READ (OPTIONAL) AT OFFSET X'30' -  @Z40LB22
*            X'33'.                                          @Z40LB22
*                                                            @Z40LB22
*            (A)  PARAMETER PASS AREA IN MSC JOBLIST         @Z40LB22
*                 X'0C'  BIT 0 - 3  TABLE ID                 @Z40LB22
*                        BIT 4 - 7  SECTOR ID                @Z40LB22
*                 X'0D'  BIT 0 - 7  FLAG BYTE                @Z40LB22
*                        BIT 3 = 1  BLOCK CHR SUPPLIED       @Z40LB22
*                        BIT 7 = 1  READ                     @Z40LB22
*                 X'0E' - X'1F'     TABLE DEPENDENT DATA     @Z40LB22
*                 X'30' - X'33'     CHR                      @Z40LB22
*       (6)  RESERVED (X) - 8 BYTES                          @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*       LABEL READ - (F,X,CODE,A,LZYX,X)                     @Z40LB22
*                                                            @Z40LB22
*       (1)  ORDER (F) - 1 BYTE                              @Z40LB22
*            THIS BYTE WILL ALWAYS BE X'05' FOR THIS ORDER   @Z40LB22
*                                                            @Z40LB22
*       (2)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (3)  OPCODE (CODE) - 1 BYTE                          @Z40LB22
*            THIS BYTE IS ALWAYS X'08' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (4)  ATTRIBUTES (A) - 1 BYTE                         @Z40LB22
*            THIS BYTE IS ALWAYS X'10'.  THIS BYTE INDICATES @Z40LB22
*            THAT THE LZYX OF THE CARTRIDGE IS SUPPLIED.     @Z40LB22
*                                                            @Z40LB22
*       (5)  LOCATION (LZYX) - 2 BYTES                       @Z40LB22
*            THE MSF AND CELL ADDRESS OF CARTRIDGE TO BE     @Z40LB22
*            READ.                                           @Z40LB22
*                                                            @Z40LB22
*       (6)  RESERVED (X) - 30 BYTES                         @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*       READ SA WCS - (F,X,CODE,SECT,SSID,A,X)               @Z40LB22
*                                                            @Z40LB22
*       (1)  ORDER (F) - 1 BYTE                              @Z40LB22
*            THIS BYTE WILL ALWAYS BE X'05' FOR THIS ORDER   @Z40LB22
*                                                            @Z40LB22
*       (2)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (3)  OPCODE (CODE) - 1 BYTE                          @Z40LB22
*            THIS BYTE IS ALWAYS X'10' FOR THIS ORDER        @Z40LB22
*                                                            @Z40LB22
*       (4)  SECTOR (SECT) - 1 BYTE                          @Z40LB22
*            THIS BYTE REPRESENTS THE SECTOR OF THE WCS      @Z40LB22
*            CODE TO BE READ INTO THE DIAGNOSTIC BUFFER.     @Z40LB22
*            A VALID SECTOR RANGE IS FROM X'00' TO X'FF'.    @Z40LB22
*                                                            @Z40LB22
*       (5)  SUB-SYSTEM ID (SSID) - 2 BYTES                  @Z40LB22
*            THESE 2 BYTES (ONLY 12 BITS ARE USED) ARE THE   @Z40LB22
*            SSID OF THE SA.                                 @Z40LB22
*                                                            @Z40LB22
*       (6)  FLAGS (A) - 1 BYTE                              @Z40LB22
*            BIT 0 = 0; READ FROM MAIN STORAGE               @Z40LB22
*            BIT 0 = 1; READ FROM EXTENDED STORAGE           @Z40LB22
*            BIT 1 - 6; UNUSED                               @ZA27590
*            BIT 7 = 0; DUMP PRIMARY MSC                     @ZA27590
*            BIT 7 = 1; DUMP ALTERNATE MSC                   @ZA27590
*                                                            @Z40LB22
*       (7)  RESERVED (X) - 29 BYTES                         @Z40LB22
*                                                            @Z40LB22
*                                                            @Z40LB22
*       CELL AUDIT - (F,X,MSF,ADDR,CMAP)                     @Z40LB22
*                                                            @Z40LB22
*       (1)  ORDER (F) - 1 BYTE                              @Z40LB22
*            THIS ONE BYTE FIELD WILL ALWAYS BE X'07'.       @Z40LB22
*                                                            @Z40LB22
*       (2)  RESERVED (X) - 1 BYTE                           @Z40LB22
*                                                            @Z40LB22
*       (3)  MSFID (MSF) - 1 BYTE                            @Z40LB22
*            THIS BYTE WILL CONTAIN THE IDENTIFICATION OF    @Z40LB22
*            THE MASS STORAGE FACILITY TO BE AUDITED.        @Z40LB22
*            (IE, 0,1).  THE ID WILL BE PLACED IN BITS       @Z40LB22
*            0 - 1.                                          @Z40LB22
*                                                            @Z40LB22
*       (4)  ADDRESS (ADDR) - 1 BYTE                         @Z40LB22
*            ONE BYTE WHICH GIVES THE START (X) ADDRESS OF   @Z40LB22
*            CELLS TO BE AUDITED IN A SPECIFIED MASS STORAGE @Z40LB22
*            FACILITY.                                       @Z40LB22
*                                                            @Z40LB22
*       (5)  CELL MAP (CMAP) -32 BYTES                       @Z40LB22
*            32 BYTES THAT CONTAIN THE BIT MAP OF CELL       @Z40LB22
*            ADDRESS TO BE TESTED (BIT = 1 MEANS TEST CELL). @Z40LB22
*            EACH WORD IS FOR ONE X ADDRESS, ONE Z ADDRESS,  @Z40LB22
*            AND Y ADDRESSES 0 -27 (THE LAST FOUR BITS WILL  @Z40LB22
*            ALWAYS BE ZERO IN EACH WORD).                   @Z40LB22
*            DIRECTION:                                      @Z40LB22
*              FOR Z = 0, 0 --> 27                           @Z40LB22
*              FOR Z = 1, 27 --> 0                           @Z40LB22
*                                                            @Z40LB22
*01*  EXIT-NORMAL = VALID INVOCATION                         @Z40LB22
*                                                            @Z40LB22
*02*    CONDITION = RETURN CODE = 0.                         @Z40LB22
*                 = RETURN CODE = 4.                         @Z40LB22
*                                                            @Z40LB22
*02*    OUTPUT = IN-LINE PLS STATEMENTS THAT PERFORM THE     @Z40LB22
*                REQUESTED FUNCTION.                         @Z40LB22
*              = A WARNING MESSAGE WILL BE PRINTED, AND      @Z40LB22
*                THE EXPANSION WILL CONTINUE.                @Z40LB22
*                                                            @Z40LB22
*01*  EXIT-ERROR = INVALID INVOCATION                        @Z40LB22
*                                                            @Z40LB22
*02*    CONDITION = RETURN CODE = 12.                        @Z40LB22
*                                                            @Z40LB22
*02*    OUTPUT = ERROR MESSAGE                               @Z40LB22
*                                                            @Z40LB22
*01*  EXTERNAL-REFERENCES = NONE                             @Z40LB22
*                                                            @Z40LB22
*01*  TABLES = NONE                                          @Z40LB22
*                                                            @Z40LB22
*01*  MESSAGES = AS FOLLOWS:                                 @Z40LB22
*                                                            @Z40LB22
*            ICB600I:  TYPE MUST BE SPECIFIED                @Z40LB22
*            ICB601I:  TYPE IS INCORRECTLY SPECIFIED         @Z40LB22
*            ICB602I:  A NAME FOR THE REQUEST BLOCK MUST     @Z40LB22
*                      BE SPECIFIED IN MF(2)                 @Z40LB22
*            ICB604I:  WARNING - ONLY MF PARAMETER IS        @Z40LB22
*                      VALID FOR LIST FORM                   @Z40LB22
*            ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME       @Z40LB22
*                      IF EXEC MACRO FORM REQUESTED          @Z40LB22
*            ICB620I:  INVALID MF PARAMETER SPECIFIED,       @Z40LB22
*                      MUST BE L  OR E.                      @Z40LB22
*                                                            @Z40LB22
*01*  INNER-MACRO = NONE                                     @Z40LB22
*                                                            @Z40LB22
*01*  SYSTEM-MACRO = NONE                                    @Z40LB22
*                                                            @Z40LB22
*01*  CHANGE-ACTIVITY = ZA09556                              @ZA09556
*     CHANGE 01 07/21/77 - DUMP OF THE ALTERNATE MSC         @ZA27590
*                                                            @Z40LB22
**** END OF SPECIFICATIONS ***                               @Z40LB22*/
*/*                                                          @Z40LB22*/
*/*                                                          @Z40LB22*/
* ICBQUERY: MACRO KEYS(MF,TYPE,PARMS,FLAGS,SECT,CODE,SSID,
*          MSFID,CMAP,LZYX,LOC,DASDCHR,DATAPTR);
*/*                                                          @Z40LB22*/
*/*                                                          @Z40LB22*/
*/* EXTERNAL DECLARES                                        @Z40LB22*/
*   DCL QUERYREG FIXED EXT;            /*USED AS A TEST TO   @Z40LB22*/
*                                      /*SEE IF R1 ALREADY   @Z40LB22*/
*                                      /*DECLARED            @Z40LB22*/
*/* INTERNAL DECLARES                                        @Z40LB22*/
*   DCL RETCODE FIXED;                 /*RETURN CODE         @Z40LB22*/
*   DCL QMCODE CHAR;                  /*QMWCS OPCODE         @Z40LB22*/
*   DCL QLCODE CHAR;                  /*QLAB OPCODE          @Z40LB22*/
*   DCL QTCODE CHAR;                  /*QTAB OPCODE          @Z40LB22*/
*   DCL QSCODE CHAR;                  /*QSWCS OPCODE         @Z40LB22*/
*   DCL QCCODE CHAR;                  /*QCEL OPCODE          @Z40LB22*/
*   DCL QMTYPE CHAR;                  /*QMWCS TYPE           @Z40LB22*/
*   DCL QLTYPE CHAR;                  /*QLAB TYPE            @Z40LB22*/
*   DCL QLFLAG CHAR;                  /*QLAB FLAG            @Z40LB22*/
*   DCL QTTYPE CHAR;                  /*QTAB TYPE            @Z40LB22*/
*   DCL QSTYPE CHAR;                  /*QSWCS TYPE           @Z40LB22*/
*   DCL LENGTH CHAR;                  /*LENGTH OF LIST       @Z40LB22*/
*   DCL CTR FIXED;                     /*CTR  SWITCH         @Z40LB22*/
*   DCL ESW FIXED;                     /*EXIT SWITCH         @Z40LB22*/
*   DCL BSW FIXED;                     /*BRANCH SWITCH       @Z40LB22*/
*   DCL LSW FIXED;                     /*LINK SWITCH         @Z40LB22*/
*   QMCODE='0B';                      /*QMWCS OPCODE         @Z40LB22*/
*   QLCODE='05';                      /*QLAB OPCODE          @Z40LB22*/
*   QTCODE='05';                      /*QTAB OPCODE          @Z40LB22*/
*   QSCODE='05';                      /*QSWCS OPCODE         @Z40LB22*/
*   QCCODE='07';                      /*QCEL OPCODE          @Z40LB22*/
*   QMTYPE='03';                      /*QMWCS CODE TYPE      @Z40LB22*/
*   QLTYPE='08';                      /*QLAB CODE TYPE       @Z40LB22*/
*   QSTYPE='10';                      /*QSWCS CODE TYPE      @Z40LB22*/
*   QTTYPE='06';                      /*QTAB CODE TYPE       @Z40LB22*/
*   QLFLAG='10';                      /*QLAB CODE FLAG       @Z40LB22*/
*   LENGTH='2C';                       /*DEFINE LENGTH       @Z40LB22*/
*/*     INITIALIZE SWITCHES TO ZERO                          @Z40LB22*/
*   CTR=0;                                                 /*@Z40LB22*/
*   ESW=0;                                                 /*@Z40LB22*/
*   BSW=0;                                                 /*@Z40LB22*/
*   LSW=0;                                                 /*@Z40LB22*/
*/* END OF DECLARES AND INITIALIZATION                       @Z40LB22*/
*   IF QUERYREG=0 THEN                 /*WAS R1 ALREADY      @Z40LB22*/
*                                      /*DECLARED?           @Z40LB22*/
*        DO;                           /*NO,PRT DCL FOR R1   @Z40LB22*/
*             ANS('DCL QUERR1  REG(1) PTR; '             /*@Z40LB22*/
*                  '/* WILL CONTAIN BLK ADDRESS @Z40LB22*/') SKIP(1);
*             QUERYREG=1;              /*TURN SWITCH ON      @Z40LB22*/
*        END;                                              /*@Z40LB22*/
*   IF MF(1)^='L' THEN                 /*IF NOT LIST FORM    @Z40LB22*/
*        GO TO EXCHECK;                /*BRANCH              @Z40LB22*/
*   IF MF(2)='' THEN                   /*WAS A NAME GIVEN?   @Z40LB22*/
*        DO;                           /*IF NOT, THEN        @Z40LB22*/
*             ESW=1;                   /*TURN ON ESW         @Z40LB22*/
*                                      /*AND,PRT ERROR MSG   @Z40LB22*/
*             ANS MSG('  ICB602I - A NAME FOR THE '
*                  'REQUEST BLOCK MUST BE SPECIFIED '
*                  'IN MF(2)')SKIP(5);                     /*@Z40LB22*/
*             RETCODE=12;                                  /*@Z40LB22*/
*        END;                                              /*@Z40LB22*/
*   IF ESW=1 THEN                      /*ESW ON?             @Z40LB22*/
*        GO TO EXIT;                   /*YES,BRANCH TO EXIT  @Z40LB22*/
*/*********************************************************  @Z40LB22*/
*/* CHECK FOR VALID PARAMETERS                               @Z40LB22*/
*/*********************************************************  @Z40LB22*/
*   IF TYPE ^= '' THEN              /*TYPE SPECIFIED?        @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF PARMS ^= '' THEN              /*PARMS SPECIFIED?      @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF FLAGS ^= '' THEN             /*FLAGS SPECIFIED?       @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF SECT ^= '' THEN              /*SECT SPECIFIED?        @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF CODE ^= '' THEN              /*CODE SPECIFIED?        @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF SSID ^= '' THEN              /*SSID SPECIFIED?        @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF MSFID ^= '' THEN             /*MSFID SPECIFIED?       @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF CMAP ^= '' THEN              /*CMAP SPECIFIED?        @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF LZYX ^= '' THEN              /*LZYX SPECIFIED?        @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF LOC ^= '' THEN               /*LOC SPECIFIED?         @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF DASDCHR ^= '' THEN           /*DASDCHR SPECIFIED?     @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF DATAPTR ^= '' THEN           /*DATAPTR SPECIFIED?     @Z40LB22*/
*       CTR = CTR + 1;              /*YES, INCREMENT CTR     @Z40LB22*/
*   IF CTR > 0 THEN                 /*CTR GT ZERO?           @Z40LB22*/
*      DO;                          /*YES, PRINT WARNING MSG @Z40LB22*/
*        RETCODE = 4;               /*SET RETURN CODE TO 4   @Z40LB22*/
*        ANS MSG('  ICB604I - WARNING-ONLY'
*            ' THE MF PARAMETER IS VALID FOR THE'
*            ' LIST FORM  ')SKIP;
*      END;                                                /*@Z40LB22*/
*   IF MF(3) ^= '' THEN                /*ATTRIBUTE GIVEN?    @Z40LB22*/
*        GO TO ATTRLST;                                    /*@Z40LB22*/
*/*********************************************************  @Z40LB22*/
*/*********************************************************  @Z40LB22*/
*/*                                                          @Z40LB22*/
*ATTRLST:
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*   ANS('/*MSSC QMWCS/QLAB/QTAB/QSWCS/QCEL MACRO'
*       '             @Z40LB22*/')SKIP;
*   ANS('/*OS/VS2 VERSION--03/21/75 LEVEL 00    '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*GENERAL AREA TO BE OVERLAID BY SPECIFIC '
*       'ORDERS        @Z40LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*   ANS('DCL 1   'MF(2)' 'MF(3)','
*              '/*REQUEST BLOCK @Z40LB22*/') SKIP(1);
*            ANS('       2  QULEN  FIXED(31),  '
*                  ' /*LENGTH = 44 BYTES @Z40LB22*/')  SKIP(1);
*            ANS('       2  QUORD  CHAR(1),    '
*                  ' /*ORDER - COULD BE FOR QMWCS '
*                  ' (0B), QLAB (05), QTAB (05), '
*                  ' QSWCS (05), OR QCEL (07) '
*                  ' @Z40LB22*/')  SKIP(1);
*            ANS('       2  QURES  CHAR(1),    '
*                  ' /*RESERVED BITS @Z40LB22*/')  SKIP(1);
*            ANS('       2  QUCODE BIT(8),     '
*                  ' /*CODE - COULD BE FOR QMWCS '
*                  ' (03), QLAB (08), QTAB (06), '
*                  ' OR QSWCS (10) @Z40LB22*/') SKIP(1);
*            ANS('        3  QULIB BIT(8),     '
*                  ' /*QCEL ONLY - ID OF THE MSF '
*                  ' TO BE AUDITED @Z40LB22*/')  SKIP(1);
*            ANS('       2  QUSECT  BIT(8),    '
*                  ' /*QMWCS AND QSWCS ONLY - THE '
*                  ' SECTOR OF CODE TO BE READ '
*                  ' @Z40LB22*/') SKIP(1);
*            ANS('        3  QUXADDR BIT(8),   '
*                  ' /*QCEL ONLY - THE START X '
*                  ' ADDR OF CELLS TO BE AUDITED '
*                  ' @Z40LB22*/') SKIP (1);
*            ANS('         4  QUFLAG  BIT(8),  '
*                  ' /*QLAB ONLY - SET TO HEX 10, '
*                  ' THE LZYX OF CART IS SUPPLIED'
*                  ' @Z40LB22*/') SKIP(1);
*            ANS('          5  QURES1  CHAR(1), '
*                 ' /*QTAB ONLY - RESERVED BITS '
*                 ' @Z40LB22*/')  SKIP (1);
*             ANS('      2  QUPARM  CHAR(32),  '
*                  ' /*PARM AREA FOR ANY SPECIFIED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QUPTR  FIXED(31);  '
*                  ' /*ADDR OF A 512 BYTE DATA AREA'
*                  ' @Z40LB22*/')  SKIP(1);
 /*  READ MSC WCS (QMWCS) AND READ SA WCS (QSWCS) QUPARM AREA */
*             ANS('DCL  1  QWPARM  DEFINED(QUPARM),'
*                  '/*MSC AND SA WCS READ @Z40LB22*/') SKIP (1);
*             ANS('      2  QWRES1  CHAR(2),   '
*                  '/*MSC WCS ONLY - RESERVED BITS'
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('       3  QWSSID  CHAR(2),  '
*                  '/*SA WCS ONLY - SUBSYSTEM  '
*                  ' ID OF THE SA @Z40LB22*/')  SKIP(1);
*             ANS('      2  QWFLAG  BIT(8),    '
*                  ' /*READ INDICATOR @Z40LB22*/') SKIP(1);
*             ANS('       3  QWMEM  BIT(1),    '
*                  ' /*BIT 0=0 READ FROM MAIN STORAGE '
*                  ' BIT 0=1 READ FROM EXTENDED STORAGE '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('       3  *      BIT(6), /*UNUSED '
*                  ' @ZA27590*/')  SKIP(1);
*             ANS('       3  QWALTMSC BIT(1), '
*                  ' /*BIT 7=0 DUMP PRIMARY MSC '
*                  ' BIT 7=1 DUMP ALTERNATE MSC '
*                  ' @ZA27590*/')  SKIP(1);
*             ANS('      2  QWRES2  CHAR(29);   '
*                  ' /*RESERVED BITS @Z40LB22*/') SKIP(1);
 /*  SPECIFIC QUPARM AREA FOR READ MSC TABLES (QTAB) @Z40LB22*/
*             ANS('DCL  1  QTPARM  DEFINED(QUPARM), '
*                  '/*QTAB REQUEST BLOCK @Z40LB22*/') SKIP(1);
*             ANS('      2  QTID  BIT(8),  '
*                  '/*@Z40LB22*/')  SKIP(1);
*             ANS('       3  QTTABID  BIT(4),       '
*                  '/*TABLE ID @Z40LB22*/')  SKIP(1);
*             ANS('      2  QTFLAG  BIT(8), /* READ CHR '
*                  ' BIT 3=1 BLOCK CHR SUPPLIED '
*                  ' BIT 7=1 READ REQUEST @Z40LB22*/') SKIP(1);
*             ANS('      2  QTDATA CHAR(18), /* TABLE '
*                  ' DEPENDENT DATA @Z40LB22*/') SKIP(1);
*             ANS('      2  QTDASCHR BIT(32), /* THE '
*                  ' CHR OF RECORD TO BE READ '
*                  ' ORDER @Z40LB22*/')  SKIP (1);
*             ANS('      2  QTRES CHAR(8); /* '
*                  ' RESERVED @Z40LB22*/') SKIP(1);
 /*  SPECIFIC QUPARM AREA FOR READ LABEL (QLAB) @Z40LB22*/
*             ANS('DCL  1  QLPARM  DEFINED(QUPARM), '
*                  '/*QLAB REQUEST BLOCK @Z40LB22*/') SKIP(1);
*             ANS('      2  QLZYX  FIXED(15), /*THE MSF '
*                  ' AND CELL ADDR OF CART. TO BE READ '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QLRES  CHAR(30); /*RESERVED '
*                  ' @Z40LB22*/')  SKIP(1);
 /*  SPECIFIC QUPARM AREA FOR CELL AUDIT (QCEL) @Z40LB22*/
*             ANS('DCL  1  QCPARM  DEFINED(QUPARM), '
*                  '/*QCEL 8 WORD BIT MAP @Z40LB22*/') SKIP(1);
*             ANS('      2  QCMAD0Z0 BIT(32), /*WORD 1 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD0Z1 BIT(32), /*WORD 2 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD1Z0 BIT(32), /*WORD 3 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD1Z1 BIT(32), /*WORD 4 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD2Z0 BIT(32), /*WORD 5 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD2Z1 BIT(32), /*WORD 6 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD3Z0 BIT(32), /*WORD 7 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*             ANS('      2  QCMAD3Z1 BIT(32); /*WORD 8 '
*                  ' OF CELL ADDR TO BE TESTED '
*                  ' @Z40LB22*/')  SKIP(1);
*   GO TO EXIT;
*/*                                                          @Z40LB22*/
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*   ANS('/*END OF DCLS TO BE PRINTED OUT FOR REQUEST '
*       'BLOCK         @Z40LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*/*                                                          @Z40LB22*/
*/*                                                          @Z40LB22*/
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*   ANS('/*THE MACRO BRANCHES HERE IF EXECUTABLE FORM '
*       'WAS REQUESTED @Z40LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*/*                                                          @Z40LB22*/
*EXCHECK:                                                  /*@Z40LB22*/
*   IF TYPE(1)='QMWCS'  THEN           /*QMWCS  REQUEST?     @Z40LB22*/
*        GO TO TEST1;                  /*YES, BRANCH         @Z40LB22*/
*   IF TYPE(1)='QLAB'  THEN             /*QLAB  REQUEST?     @Z40LB22*/
*        GO TO TEST1;                  /*YES, BRANCH         @Z40LB22*/
*   IF TYPE(1)='QTAB' THEN              /*QTAB REQUEST?      @Z40LB22*/
*        GO TO TEST1;                  /*YES, BRANCH         @Z40LB22*/
*   IF TYPE(1)='QSWCS' THEN              /*QSWCS  REQUEST?   @Z40LB22*/
*        GO TO TEST1;                  /*YES, BRANCH         @Z40LB22*/
*   IF TYPE(1)='QCEL' THEN              /*CELL  REQUEST?     @Z40LB22*/
*        GO TO TEST1;                  /*YES, BRANCH         @Z40LB22*/
*   ESW=1;                             /*TURN ON ESW         @Z40LB22*/
*   IF TYPE(1)='' THEN                 /*IS TYPE NULL?       @Z40LB22*/
*        DO;                           /*YES,PRT ERROR MSG   @Z40LB22*/
*             ANS MSG('  ICB600I - TYPE'
*                  ' MUST BE SPECIFIED') SKIP(5);          /*@Z40LB22*/
*        END;                                              /*@Z40LB22*/
*   ELSE                               /*PRINT ERROR MSG     @Z40LB22*/
*        DO;                                               /*@Z40LB22*/
*             ANS MSG('  ICB601I - TYPE'
*                  ' IS INCORRECTLY SPECIFIED') SKIP(5);   /*@Z40LB22*/
*        END;                                              /*@Z40LB22*/
*   RETCODE=12;                                            /*@Z40LB22*/
*TEST1: IF ESW=1 THEN                  /*ESW ON?             @Z40LB22*/
*             GO TO EXIT;              /*YES, GO TO EXIT     @Z40LB22*/
*       IF MF(1)='E' THEN              /*EXEC FORM SPECD?    @Z40LB22*/
*             GO TO EXFORM;            /*YES, BRANCH         @Z40LB22*/
*   ESW=1;                             /*TURN ON ESW         @Z40LB22*/
*   DO;                                /*PRINT ERROR MSG     @Z40LB22*/
*        ANS MSG('  ICB620I - INVALID MF PARAMETER SPECIFIED,'
*             ' MUST BE L OR E ') SKIP(1);                 /*@Z40LB22*/
*   END;                                /*                   @Z40LB22*/
*   RETCODE=12;                        /*SET RETURN CODE     @Z40LB22*/
*   GO TO EXIT;                       /*BRANCH              @Z40LB22*/
*EXFORM: IF MF(2)='' THEN              /*ADDRESS GIVEN?      @Z40LB22*/
*             DO;                      /*NO,TURN ON ESW AND  @Z40LB22*/
*                  ESW=1;              /*PRINT ERROR MSG     @Z40LB22*/
*                  ANS MSG('  ICB612I - MF(2) MUST CONTAIN'
*                       ' REQ BLK NAME IF EXEC MACRO '
*                       'FORM REQUESTED')SKIP(5);          /*@Z40LB22*/
*                  RETCODE=12;         /*SET RETURN CODE     @Z40LB22*/
*                  GO TO EXIT;        /*BRANCH              @Z40LB22*/
*             END;                                         /*@Z40LB22*/
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*   ANS('/*MSSC ICBQUERY QSWCS/QLAB/QTAB/QSWCS QCEL  '
*       'MACRO         @Z40LB22*/')SKIP;
*   ANS('/*OS/VS2 VERSION-- 03/21/75 LEVEL 00        '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Z40LB22*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @Z40LB22*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Z40LB22*/')SKIP;
*   ANS ('RFY(QUERR1)RSTD;/*RESTRICT  R1 @Z40LB22*/')SKIP;
*   ANS('QUERR1=ADDR('MF(2)
*        '); /*SET QUERR1 TO REQ BLOCK @Z40LB22*/')  SKIP(1);
*   IF MF(3) = 'COMPLETE' THEN
*      DO;                                                 /*@Z40LB22*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'    /*@Z40LB22*/
*           '/*ZERO REQUEST BLOCK @Z40LB22*/')SKIP;
*      END;                                                /*@Z40LB22*/
*   IF TYPE(1)='QMWCS' THEN             /*SET LENGTH FLD=44  @Z40LB22*/
*      DO;
*        ANS('QULEN='QUOTE(LENGTH)'X; /*SET LENGTH '
*            'FIELD @Z40LB22*/')SKIP(1);
*        ANS('QUORD='QUOTE(QMCODE)'X; /*SET OPCODE '
*            'FIELD @Z40LB22*/') SKIP(1);
*        ANS('QUCODE='QUOTE(QMTYPE)'X; /*SET CODE '
*            'TYPE @Z40LB22*/') SKIP(1);
*      END;
*   ELSE
*         GO TO CKTAB;
*   IF SECT ^='' THEN                  /*SECT SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUSECT='SECT';          /*FILL IN SECTOR ID   @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF FLAGS ^='' THEN                /*FLAGS SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QWFLAG='FLAGS';       /*FILL IN FLAGS FIELD   @ZA09556*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF DATAPTR ^='' THEN           /*DATAPTR SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPTR=ADDR'DATAPTR';  /*ADDR OF DATAPTR FIELD @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*    GO TO LINK;
*CKTAB:
*   IF TYPE(1)='QTAB' THEN             /*SET LENGTH FLD=44  @Z40LB22*/
*      DO;
*        ANS('QULEN='QUOTE(LENGTH)'X; /*SET LENGTH '
*            'FIELD @Z40LB22*/')SKIP(1);
*        ANS('QUORD='QUOTE(QTCODE)'X; /*SET OPCODE '
*            'FIELD @Z40LB22*/') SKIP(1);
*        ANS('QUCODE='QUOTE(QTTYPE)'X; /*SET CODE '
*            'TYPE @Z40LB22*/') SKIP(1);
*      END;
*   ELSE
*         GO TO CKLAB;
*   IF PARMS ^='' THEN               /*PARMS SPECIFIED?      @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPARM='PARMS';       /*FILL IN PARAMETERS    @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF DASDCHR ^='' THEN               /*CHR SPECIFIED?      @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QTDASCHR='DASDCHR';     /*FILL IN CHR         @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF DATAPTR ^='' THEN           /*DATAPTR SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPTR=ADDR'DATAPTR';  /*ADDR OF DATAPTR FIELD @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*    GO TO LINK;
*CKLAB:
*   IF TYPE(1)='QLAB' THEN             /*INITIALIZE FIELDS  @Z40LB22*/
*      DO;
*        ANS('QULEN='QUOTE(LENGTH)'X; /*SET LENGTH '
*            'FIELD @Z40LB22*/')SKIP(1);
*        ANS('QUORD='QUOTE(QLCODE)'X; /*SET OPCODE '
*            'FIELD @Z40LB22*/') SKIP(1);
*        ANS('QUCODE='QUOTE(QLTYPE)'X; /*SET CODE '
*            'TYPE @Z40LB22*/') SKIP(1);
*        ANS('QUFLAG='QUOTE(QLFLAG)'X; /*SET CODE '
*            'FLAG @Z40LB22*/') SKIP(1);
*      END;
*   ELSE
*         GO TO CKQSWCS;
*   IF LZYX ^='' THEN               /*CELL ADDR SPECIFIED?   @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QLZYX='LZYX';         /*FILL IN LZYX          @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF DATAPTR ^='' THEN           /*DATAPTR SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPTR=ADDR'DATAPTR';  /*ADDR OF DATAPTR FIELD @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*    GO TO LINK;
*CKQSWCS:
*   IF TYPE(1)='QSWCS' THEN             /*INITIALIZE FIELDS  @Z40LB22*/
*      DO;
*        ANS('QULEN='QUOTE(LENGTH)'X; /*SET LENGTH '
*            'FIELD @Z40LB22*/')SKIP(1);
*        ANS('QUORD='QUOTE(QSCODE)'X; /*SET OPCODE '
*            'FIELD @Z40LB22*/') SKIP(1);
*        ANS('QUCODE='QUOTE(QSTYPE)'X; /*SET CODE '
*            'TYPE @Z40LB22*/') SKIP(1);
*      END;
*   ELSE
*         GO TO CKCEL;
*   IF SECT ^='' THEN                /*SECTOR ID SPECIFIED?  @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUSECT='SECT';       /*FILL IN SECTOR ID      @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF SSID ^='' THEN               /*SUBSYSTEM ID?          @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QWSSID='SSID';        /*FILL SUBSYSTEM ID     @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF FLAGS ^='' THEN               /*READ INDICATOR?       @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QWFLAG='FLAGS';        /*FILL IN FLAG FIELD   @ZA09556*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF DATAPTR ^='' THEN           /*DATAPTR SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPTR=ADDR'DATAPTR';  /*ADDR OF DATAPTR FIELD @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*    GO TO LINK;
*CKCEL:
*   IF TYPE(1)='QCEL' THEN              /*INITIALIZE FIELDS  @Z40LB22*/
*      DO;
*        ANS('QULEN='QUOTE(LENGTH)'X; /*SET LENGTH '
*            'FIELD @Z40LB22*/')SKIP(1);
*        ANS('QUORD='QUOTE(QCCODE)'X; /*SET OPCODE '
*            'FIELD @Z40LB22*/') SKIP(1);
*      END;
*   ELSE
*         GO TO EXIT;
*   IF MSFID ^='' THEN                /*MSF ID SPECIFIED?    @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QULIB='MSFID';       /*MSF TO BE AUDITED ID   @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF LOC ^='' THEN                /*START X ADDR?          @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUXADDR='LOC';        /*FILL IN X ADDR        @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF CMAP ^='' THEN               /*CELL MAP SPECIFIED?    @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPARM='CMAP';        /*FILL IN CELL BIT MAP  @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF DATAPTR ^='' THEN           /*DATAPTR SPECIFIED?     @Z40LB22*/
*      DO;                                                 /*@Z40LB22*/
*   ANS('QUPTR=ADDR'DATAPTR';  /*ADDR OF DATAPTR FIELD @Z40LB22*/')
*      SKIP(1);                                            /*@Z40LB22*/
*      END;                                                /*@Z40LB22*/
*   IF ESW=1 THEN                      /*ESW ON?             @Z40LB22*/
*        GO TO EXIT;                   /*YES, BRANCH         @Z40LB22*/
*LINK: ANS('SVC  (126); /*ISSUE SVC INST.  @Z40LB22*/') SKIP(1);
*      ANS ('RFY(QUERR1)UNRSTD;/*UNRESTRICT'
*           ' R1 @Z40LB22*/')SKIP;
*EXIT: RETURN CODE(RETCODE);                               /*@Z40LB22*/
*   %END;                                                  /*@Z40LB22*/
./ ADD NAME=ICBRQUE
 %ICBRQUE: ;                        /* MACRO                 @Y30LB01*/
        /**************************************************  @Y30LB01*/
        /*              ****** MAPPING MACRO *****           @Y30LB01*/
        /* MACRO NAME = ICBRQUE(VS1-VS2)                     @Y30LB01*/
        /*                                                   @Y30LB01*/
        /* DESCRIPTIVE NAME = MSSC RESPONSE QUEUE ELEMENT    @Y30LB01*/
        /*                                                   @Y30LB01*/
        /* COPYRIGHT = NONE                                  @Y30LB01*/
        /*                                                   @Y30LB01*/
        /* CHANGE-ACTIVITY = X04AC01,Y30LB01                 @Y30LB01*/
        /*                                                   @Y30LB01*/
        /* MACRO INVOKER MUST CODE 1 LEVEL DCL BEFORE        @Y30LB01*/
        /*       INCLUDE STATEMENT                           @Y30LB01*/
        /**************************************************  @Y30LB01*/
        2 QELSP     FIXED(8),       /* STORAGE SUBPOOL       @Y30LB01*/
        2 QELTCBPR  PTR(24),        /* TCB ADDRESS           @Y30LB01*/
        2 QELECB    PTR(32),        /* ECB ADDRESS           @Y30LB01*/
          3 QELFLG1  CHAR(1),       /* MESSAGE TASK FLAG     @Y30LB01*/
          3 QELECBPR PTR(24),       /* ECB ADDRESS           @Y30LB01*/
        2 QELFLG2    CHAR(1),       /* ABEND INTF FLAG       @Y30LB01*/
          3 FLAG1    CHAR(1),       /* ABEND INTF FLAG       @Y30LB01*/
        2 QELAHEAD   PTR(24),       /* ADDR NEXT ELEMENT     @Y30LB01*/
          3 CHNHEAD  PTR(24),       /* ADDR NEXT ELEMENT     @Y30LB01*/
        2 QELFLG3    CHAR(1),       /* MSSC SVC FLAG         @Y30LB01*/
          3 SVCINVAL CHAR(1),       /* MSSC SVC FLAG         @Y30LB01*/
        2 QELBACK    PTR(24),       /* ADDR PREV ELEMENT     @Y30LB01*/
          3 CHNBACK  PTR(24),       /* ADDR PREV ELEMENT     @Y30LB01*/
        2 QELASID    FIXED(16),     /* REQUESTOR ASID VS2    @Y30LB01*/
          3 PRGASID  FIXED(16),     /* REQUESTOR ASID VS2    @Y30LB01*/
        2 *          CHAR(2);       /* RESERVED FIELD        @Y30LB01*/
./ ADD NAME=ICBSELTM
* %/*                                                        @G24LB18*/
*/*                                                          @G24LB18*/
*/*  MODULE NAME = ICBSELTM                                  @G24LB18*/
*/*                                                          @G24LB18*/
*/*  DESCRIPTIVE NAME = SELECT/TERMINATE                     @G24LB18*/
*/*                                                          @G24LB18*/
*/*  COPYRIGHT = NONE                                        @G24LB18*/
*/*                                                          @G24LB18*/
*/*  STATUS = OS/MVS                                         @G24LB18*/
*/*                                                          @G24LB18*/
*/*  FUNCTION = PROVIDES A REQUEST BLOCK MAPPING FOR AN MSVC @G24LB18*/
*/*             SELECT OR TERMINATE REQUEST.                 @G24LB18*/
*/*                                                          @G24LB18*/
*/*  NOTES = ICBSELTM IS A BILINGUAL MACRO.                  @G24LB18*/
*/*                                                          @G24LB18*/
*/*    DEPENDENCIES = NONE                                   @G24LB18*/
*/*                                                          @G24LB18*/
*/*    RESTRICTIONS = PREFIXES SEL AND TRM RESERVED          @G24LB18*/
*/*                   FOR USE BY THE MACRO.                  @G24LB18*/
*/*                                                          @G24LB18*/
*/*    REGISTER CONVENTIONS = NORMAL MACRO USAGE OF          @G24LB18*/
*/*                           R0, R1, R14, AND R15.          @G24LB18*/
*/*                                                          @G24LB18*/
*/*  MODULE TYPE = MACRO                                     @G24LB18*/
*/*                                                          @G24LB18*/
*/*    PROCESSOR = PLS2 AND ASSEMBLER                        @G24LB18*/
*/*                                                          @G24LB18*/
*/*    ENTRY POINT = ICBSELTM                                @G24LB18*/
*/*                                                          @G24LB18*/
*/*    PURPOSE = THE SELECT REQUEST IS ISSUED BY ALLOCATION  @G24LB18*/
*/*              FOR EACH 3330V DD TO ALLOW MSVC TO KEEP     @G24LB18*/
*/*              TRACK OF THE VIRTUAL VOLUMES CURRENTLY      @G24LB18*/
*/*              BEING USED AND TO SELECT VOLUMES FOR MSVGP  @G24LB18*/
*/*              REQUESTS. THE TERMINATE REQUEST IS ISSUED   @G24LB18*/
*/*              BY ALLOCATION AT THE END OF ALLOCATION FOR  @G24LB18*/
*/*              EACH STEP CONTAINING 3330V DDS. THIS ALLOWS @G24LB18*/
*/*              MSVC TO FREE UP THE RECORDS IT BUILT AT     @G24LB18*/
*/*              SELECT TIME FOR THE 3330V DDS IN THE STEP.  @G24LB18*/
*/*                                                          @G24LB18*/
*/*  INPUT                                                   @G24LB18*/
*/*                                                          @G24LB18*/
*/*    MACRO SYNTAX: LIST FORM ONLY                          @G24LB18*/
*/*                                                          @G24LB18*/
*/*        VERB       REQUIRED PARAMETERS                    @G24LB18*/
*/*                                                          @G24LB18*/
*/*        ICBSELTM   MF=L,TYPE=SEL/TRM       -- ASSEMBLER   @G24LB18*/
*/*                                                          @G24LB18*/
*/*        ICBSELTM   MF(L) TYPE(SEL/TRM)     -- PLS         @G24LB18*/
*/*                                                          @G24LB18*/
*/*    KEYWORD PARAMETERS:                                   @G24LB18*/
*/*                                                          @G24LB18*/
*/*      MF - MACRO FORMAT: ONLY THE LIST FORM OF THE MACRO  @G24LB18*/
*/*           MAY BE SPECIFIED. THE EXPANSION OF THE LIST    @G24LB18*/
*/*           FORM WILL RESULT IN A MAPPING OF A REQUEST     @G24LB18*/
*/*           BLOCK AND EQUATES FOR THE OPCODE AND LENGTH    @G24LB18*/
*/*           OF THE REQUEST BLOCK.                          @G24LB18*/
*/*                                                          @G24LB18*/
*/*      TYPE - INDICATES WHETHER THE REQUEST IS FOR THE     @G24LB18*/
*/*             SELECT(SEL) FUNCTION OR THE TERMINATE (TRM)  @G24LB18*/
*/*             FUNCTION. THE REQUEST BLOCK AND THE EQUATES  @G24LB18*/
*/*             FOR THE OPCODE AND LENGTH WILL BE GENERATED  @G24LB18*/
*/*             ACCORDING TO THE FUNCTION SPECIFIED.         @G24LB18*/
*/*                                                          @G24LB18*/
*/*  EXIT-NORMAL = VALID INVOCATION                          @G24LB18*/
*/*                                                          @G24LB18*/
*/*    OUTPUT = A BASED DCL STRUCTURE (PLS) OR DSECT         @G24LB18*/
*/*             (BAL) OF THE REQUEST BLOCK FOR THE REQUESTED @G24LB18*/
*/*             FUNCTION, PLUS THE APPROPRIATE DCLS (PLS)    @G24LB18*/
*/*             OR EQUATES (BAL) FOR THE OPCODE AND LENGTH   @G24LB18*/
*/*             OF THE REQUEST BLOCK.                        @G24LB18*/
*/*                                                          @G24LB18*/
*/*    CONDITION = RETURN CODE = 0                           @G24LB18*/
*/*                                                          @G24LB18*/
*/*  EXIT-ERROR = INVALID INVOCATION (RESULTS IN FAILURE OF  @G24LB18*/
*/*               COMPILATION OR ASSEMBLY OF CALLING MODULE) @G24LB18*/
*/*                                                          @G24LB18*/
*/*    OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @G24LB18*/
*/*             INVOCATION.                                  @G24LB18*/
*/*                                                          @G24LB18*/
*/*    CONDITION = RETURN CODE = 12                          @G24LB18*/
*/*                                                          @G24LB18*/
*/*  EXTERNAL REFERENCES = NONE                              @G24LB18*/
*/*                                                          @G24LB18*/
*/*  TABLES = NONE                                           @G24LB18*/
*/*                                                          @G24LB18*/
*/*  MESSAGES                                                @G24LB18*/
*/*                                                          @G24LB18*/
*/*    ICB600I:  TYPE MUST BE SPECIFIED.                     @G24LB18*/
*/*    ICB601I:  TYPE IS INCORRECTLY SPECIFIED.              @G24LB18*/
*/*    ICB617I:  INVALID MF PARAMETER SPECIFIED; MUST BE L.  @G24LB18*/
*/*                                                          @G24LB18*/
*/*  CONTROL BLOCKS = NONE                                   @G24LB18*/
*/*                                                          @G24LB18*/
*/*  INNER MACROS = NONE                                     @G24LB18*/
*/*                                                          @G24LB18*/
*/*  SYSTEM MACROS = NONE                                    @G24LB18*/
*/*                                                          @G24LB18*/
*/*  CHANGE ACTIVITY =                                       @G24LB18*/
*/*                                                          @G24LB18*/
*/*    G24LB18  ALLOCATE TO MOUNTED VOLUMES        4/5/76    @G24LB18*/
*/*    G24LB04  ALLOCATE TO MOUNTED VOLUMES      07/06/76    @G24LB04*/
*/*                                                          @G24LB18*/
*/********************************************************** @G24LB18*/
*/*
         MACRO
         ICBSELTM &MF=,&TYPE=
.*                                                             @G24LB04
.*       CHECK FOR VALID TYPE SPECIFICATION                    @G24LB04
.*                                                             @G24LB04
.TYPE    AIF   ('&TYPE' EQ '').NUL                             @G24LB04
         AIF   ('&TYPE' EQ 'SEL' OR '&TYPE' EQ 'TRM').START    @G24LB04
         MNOTE 12,'  ICB601I - TYPE IS INCORRECTLY SPECIFIED'  @G24LB04
         MEXIT                                                 @G24LB04
.*                                                             @G24LB04
.NUL     ANOP                                                  @G24LB04
         MNOTE 12,'  ICB600I - TYPE MUST BE SPECIFIED '        @G24LB04
         MEXIT                                                 @G24LB04
.*                                                             @G24LB04
.*       DETERMINATION OF DESIRED MACRO FORM                   @G24LB04
.*                                                             @G24LB04
.START   AIF   ('&MF(1)' EQ 'L').LFORM      LIST FORM?         @G24LB04
         MNOTE 12,'  ICB617I - INVALID MF PARAMETER '          @G24LB04
         MNOTE 12,'  SPECIFIED; MUST BE L.'                    @G24LB04
         MEXIT                                                 @G24LB04
.*                                                             @G24LB04
.*       PROCESSING OF 'LIST' MACRO FORM                       @G24LB04
.*                                                             @G24LB04
.LFORM   ANOP                                                  @G24LB04
         AIF   ('&TYPE' EQ 'TRM').TERMN    SELECT REQUEST?     @G24LB04
.*                                                             @G24LB04
.SELCDS  ANOP                                                  @G24LB04
*  MACMEAN  SELECT MACRO--UNINITIALIZED LIST FORM              @G24LB04
*  MVS VERSION--07/20/76                                       @G24LB04
SELRB    DSECT                                                 @G24LB04
         DS    0F                                              @G24LB04
SELRBLEN DS    XL4                 LENGTH OF SELECT RB         @G24LB04
SELRBOPC DS    XL1                 OPCODE FOR SELECT           @G24LB04
SELFLGS1 DS    XL1                 ALLOCATION FLAGS            @G24LB04
SELPARMT EQU   X'80'               PARALLEL MOUNT REQUESTED    @G24LB04
SELDEFER EQU   X'40'               DEFERRED MOUNT REQUESTED    @G24LB04
SELSEPVL EQU   X'20'               SEPVOL REQUESTED            @G24LB04
SELVENQV EQU   X'10'               VOLUME ENQ VALID            @G24LB04
SELVOLRF EQU   X'08'               VOLUME REFERBACK TO DDNAME  @G24LB04*
                                   REQUESTED                   @G24LB04
SELVRNEW EQU   X'04'               REFERENCED DD IS FOR NEW    @G24LB04*
                                   DATA SET                    @G24LB04
SELVRGRP EQU   X'02'               REFERENCED DD IS FOR GROUP  @G24LB04*
                                   VOLUME (IF NEW)             @G24LB04
SELMXESO EQU   X'01'               MIXED ESOTERIC REQUEST      @G24LB04
SELFLGS2 DS    XL1                 ALLOCATION/MSVC FLAGS       @G24LB04
SELPRSPL EQU   X'80'               RESERVED FOR VS1 USE        @G24LB04
SELSCSPL EQU   X'40'               RESERVED FOR VS1 USE        @G24LB04
SELSUBAL EQU   X'20'               RESERVED FOR VS1 USE        @G24LB04
SELUNSEP EQU   X'10'               RESERVED FOR VS1 USE        @G24LB04
SELCNTWT EQU   X'08'               CAN NOT WAIT REQUEST        @G24LB04
SELINITC EQU   X'04'               INITIAL CALL FOR STEP OR    @G24LB04*
                                   DYNAMIC ALLOCATION          @G24LB04
SELRPRIV EQU   X'02'               MARK REQUEST PRIVATE        @G24LB04
SELNOVSL EQU   X'01'               NO VOLS WERE SELECTED       @G24LB04
SELUNCNT DS    XL1                 UNIT COUNT OF REFERENCED DD @G24LB04*
                                   STATEMENT                   @G24LB04
SELJOBID DS    XL4                 THE ASID                    @G24LB04
SELJFCBA DS    F                   ADDRESS OF JFCB             @G24LB04
SELDEVTP DS    XL4                 4-BYTE INTERNAL DEVICE TYPE @G24LB04
SELUCBAD DS    F                   UCB ADDR (IF SPECIFIC UNIT) @G24LB04
SELJOBNM DS    CL8                 8-BYTE JOB NAME             @G24LB04
SELDDNAM DS    CL8                 DD NAME                     @G24LB04
SELSTNUM DS    XL1                 STEP NUMBER                 @G24LB04
SELUNUS1 DS    CL1                 UNUSED                      @G24LB04
SELDDCAT DS    H                   DD RELATIVE CONCAT. NUMBER  @G24LB04
SELDDNUM DS    H                   CURRENT DD NUMBER,          @G24LB04*
                                   ZERO FOR DYNAMIC ALLOCATION @G24LB04
SELRFDDN DS    H                   REFERENCED DD NO.(SEPVOL)   @G24LB04
SELUNUS2 DS    CL4                 UNUSED                      @G24LB04
SELJFCBX DS    F                   ADDR OF 1ST JFCB EXTN       @G24LB04
SELVLRET DS    F                   ADDR OF VOLSER RETURN AREA  @G24LB04
SELGRPPR DS    F                   ADDR OF GROUP PARAMS AREA   @G24LB04
SELUNUSE DS    XL8                 UNUSED                      @G24LB04
SELLEN   EQU   X'48'               SELECT REQUEST BLOCK LENGTH @G24LB04
SELOPCD  EQU   X'89'               OP CODE FOR SELECT REQUEST  @G24LB04
         AGO   .FINISH                                         @G24LB04
.*                                                             @G24LB04
.TERMN   ANOP                                                  @G24LB04
*  MACMEAN  TERMINATE MACRO--UNINITIALIZED LIST FORM           @G24LB04
*  MVS VERSION--07/06/76                                       @G24LB04
TRMRB    DSECT                                                 @G24LB04
         DS    0F                                              @G24LB04
TRMRBLEN DS    XL4                 LENGTH OF TERMINATE REQ BLK @G24LB04
TRMRBOPC DS    XL1                 OPCODE FOR TERMINATE        @G24LB04
TRMFLAGS DS    XL1                 1-BYTE ALLOCATION FLAGS     @G24LB04
TRMALLOK EQU   X'80'               STEP ALLOCATED SUCCESSFULLY @G24LB04
TRMSCHAB EQU   X'40'               RESERVED FOR VS1 USE        @G24LB04
         DS    XL2                 UNUSED                      @G24LB04
TRMJOBID DS    XL4                 4-BYTE ASID AREA            @G24LB04
TRMSTHDR DS    F                   STEP TABLE HEADER ADDRESS   @G24LB04
TRMLEN   EQU   X'10'               TERMINATE REQ BLOCK LENGTH  @G24LB04
TRMOPCD  EQU   X'8A'               OP CODE FOR TERMINATE REQ   @G24LB04
         AGO   .FINISH                                         @G24LB04
.FINISH  MEND                                                  @G24LB04
**/
*   ICBSELTM:  MACRO KEYS(MF,TYPE);                       /* @G24LB04*/
*/*                                                          @G24LB04*/
*/*                                                          @G24LB04*/
*/*                                                          @G24LB04*/
*/*            INTERNAL DECLARE                              @G24LB04*/
*/*                                                          @G24LB04*/
*   DCL RETCODE FIXED;       /*RETURN CODE AREA              @G24LB04*/
*        RETCODE=0;          /*INITIALIZE RETURN CODE        @G24LB04*/
*/*                                                          @G24LB04*/
*/*                                                          @G24LB04*/
*/*            CHECK FOR VALID TYPE SPECIFICATION            @G24LB04*/
*/*                                                          @G24LB04*/
*   IF TYPE='' THEN          /*IS THE TYPE PARM NULL?        @G24LB04*/
*     DO;                    /*PRINT ERROR MESSAGE           @G24LB04*/
*        ANS MSG('  ICB600I - TYPE MUST BE '
*                'SPECIFIED ')SKIP;                        /*@G24LB04*/
*        RETCODE=12;         /*SET RETURN CODE TO 12         @G24LB04*/
*        GO TO FINISH;       /*BRANCH TO FINISH              @G24LB04*/
*     END;                   /*                              @G24LB04*/
*   IF TYPE(1)='SEL' THEN    /*IS THE TYPE SELECT?           @G24LB04*/
*        GO TO START;        /*YES, VALID TYPE, BRANCH       @G24LB04*/
*   IF TYPE(1)='TRM' THEN    /*IS THE TYPE FOR TERMINATE?    @G24LB04*/
*        GO TO START;        /*YES, VALID TYPE, BRANCH       @G24LB04*/
*/*                                                          @G24LB04*/
*/*      INVALID 'TYPE' WILL CREATE THE FOLLOWING ERR MSG    @G24LB04*/
*/*                                                          @G24LB04*/
*   ANS MSG('  ICB601I - TYPE IS INCORRECTLY '
*           'SPECIFIED')SKIP;                              /*@G24LB04*/
*   RETCODE=12;              /*SET RETURN CODE TO 12         @G24LB04*/
*        GO TO FINISH;       /*BRANCH TO FINISH              @G24LB04*/
*/*                                                          @G24LB04*/
*START:
*   IF MF(1) = 'L' THEN      /*IS REQUEST FOR LIST FORM?     @G24LB04*/
*        GO TO BLDLIST;      /*YES, WILL GO BUILD LIST       @G24LB04*/
*   ANS MSG('  ICB617I - INVALID MF PARAMETER '
*           'SPECIFIED; MUST BE L.')SKIP;                /*  @G24LB04*/
*   RETCODE=12;              /*SET RETURN CODE TO 12         @G24LB04*/
*        GO TO FINISH;       /*BRANCH TO FINISH              @G24LB04*/
*/*                                                          @G24LB04*/
*BLDLIST:
*   IF TYPE(1)='SEL' THEN       /*SELECT REQUEST?            @G24LB04*/
*     DO;                       /*PRINT UNINITIALIZED BLK    @G24LB04*/
*        ANS('/*******************************************'
*            '************** @G24LB04*/')SKIP;
*        ANS('/*MACMEAN  MSSC SELECT MACRO                '
*            '               @G24LB04*/')SKIP;
*        ANS('/*MVS VERSION--07/20/76                     '
*            '               @G24LB04*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '               @G24LB04*/')SKIP;
*        ANS('/*******************************************'
*            '************** @G24LB04*/')SKIP;
*        ANS('DCL 1 SELRB BASED,'
*        ' /*SELECT REQUEST BLOCK @G24LB04*/')SKIP;
*        ANS('    2  SELRBLEN FIXED(31), /*LENGTH'
*        ' OF BLOCK @G24LB04*/')SKIP;
*        ANS('    2  SELRBOPC FIXED(8), /*SELECT'
*        ' OPCODE @G24LB04*/')SKIP;
*        ANS('    2  SELFLGS1 BIT(8), /* ALLOCATION FLAGS'
*        ' @G24LB04*/')SKIP;
*        ANS('    3  SELPARMT BIT(1) , /*PARALLEL MOUNT REQUESTED '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELDEFER BIT(1) , /*DEFERRED MOUNT REQUESTED '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELSEPVL BIT(1) , /*SEPVOL REQUESTED '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELVENQV BIT(1) , /*VOLUME ENQUEUE VALID '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELVOLRF BIT(1) , /*VOLUME REFERBACK TO DDNAME '
*        ' REQUESTED @G24LB04*/')SKIP;
*        ANS('    3  SELVRNEW BIT(1) , /*REFERENCED DD IS FOR NEW '
*        'DATA SET @G24LB04*/')SKIP;
*        ANS('    3  SELVRGRP BIT(1) , /*REFERENCED DD IS FOR GROUP '
*        'VOLUME (IF NEW) @G24LB04*/')SKIP;
*        ANS('    3  SELMXESO BIT(1), /* MIXED ESOTERIC REQUEST'
*        ' @G24LB04*/')SKIP;
*        ANS('    2  SELFLGS2 BIT(8), /* ALLOCATION/MSVC FLAGS'
*        ' @G24LB04*/')SKIP;
*        ANS('    3  SELPRSPL BIT(1) , /*RESERVED FOR VS1 USE '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELSCSPL BIT(1) , /*RESERVED FOR VS1 USE '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELSUBAL BIT(1) , /*RESERVED FOR VS1 USE '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELUNSEP BIT(1) , /*RESERVED FOR VS1 USE '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELCNTWT BIT(1) , /*CAN NOT WAIT REQUEST '
*        '@G24LB04*/')SKIP;
*        ANS('    3  SELINITC BIT(1) , /*INITIAL CALL FOR STEP OR '
*        ' DYNAMIC ALLOCATION @G24LB04*/')SKIP;
*        ANS('    3  SELRPRIV BIT(1) , /*MARK REQUEST PRIVATE '
*        ' @G24LB04*/')SKIP;
*        ANS('    3  SELNOVSL BIT(1) , /*NO VOLUMES WERE SELECTED '
*        ' @G24LB04*/')SKIP;
*        ANS('    2  SELUNCNT FIXED(8),/*UNIT COUNT '
*        '@G24LB04*/')SKIP;
*        ANS('    2  SELJOBID FIXED(31), /*ASID'
*        ' @G24LB04*/')SKIP;
*        ANS('    2  SELJFCBA PTR(31),/*ADDRESS OF JFCB '
*        '@G24LB04*/')SKIP;
*        ANS('    2  SELDEVTP CHAR(4) , /*INTERNAL DEVICE TYPE '
*        '@G24LB04*/')SKIP;
*        ANS('    2  SELUCBAD PTR(31) , /*ADDRESS OF UCB (IF '
*        'SPECIFIC UNIT REQUESTED) @G24LB04*/')SKIP;
*        ANS('    2  SELJOBNM CHAR(8) , /*JOBNAME '
*        ' @G24LB04*/')SKIP;
*        ANS('    2  SELDDNAM CHAR(8) , /*DD NAME '
*        ' @G24LB04*/')SKIP;
*        ANS('    2  SELSTNUM FIXED(8) , /*STEP NUMBER '
*        ' @G24LB04*/')SKIP;
*        ANS('    2  SELUNUS1 CHAR(1),/*UNUSED '
*        '@G24LB04*/')SKIP;
*        ANS('    2  SELDDCAT FIXED(15), /*DD RELATIVE CONCATENATION'
*        ' NUMBER @G24LB04*/')SKIP;
*        ANS('    2  SELDDNUM FIXED(15) , /*CURRENT DD NUMBER, '
*        'ZERO FOR DYNAMIC ALLOCATION @G24LB04*/')SKIP;
*        ANS('    2  SELRFDDN FIXED(15) , /*REFERENCED DD NUMBER '
*        '(FOR SEPVOL) @G24LB04*/')SKIP;
*        ANS('    2  SELUNUS2 CHAR(4),/*UNUSED '
*        '@G24LB04*/')SKIP;
*        ANS('    2  SELJFCBX PTR(31) , /*ADDRESS OF FIRST JFCB '
*        'EXTENSION @G24LB04*/')SKIP;
*        ANS('    2  SELVLRET PTR(31),/*ADDRESS OF VOLUME SERIAL '
*        'RETURN AREA @G24LB04*/')SKIP;
*        ANS('    2  SELGRPPR PTR(31),/*ADDRESS OF GROUP PARAMETERS '
*        'AREA @G24LB04*/')SKIP;
*        ANS('    2  SELUNUSE CHAR(8);/*UNUSED @G24LB04*/')SKIP;
*        ANS('DCL SELLEN FIXED(8) CONSTANT(72);'
*        '/*SELECT REQUEST LENGTH @G24LB04*/')SKIP;
*        ANS('DCL SELOPCD BIT(8) CONSTANT('  QUOTE('89')  'X);'
*        '/*SELECT OP CODE @G24LB04*/')SKIP;
*        GO TO FINISH;                                    /* @G24LB04*/
*     END;                                                /* @G24LB04*/
*/*                                                          @G24LB04*/
*  ELSE                      /*PROCESS TERMINATE REQ BLK     @G24LB04*/
*     DO;                    /*PRINT TERMINATE REQ BLK       @G24LB04*/
*        ANS('/*******************************************'
*            '************** @G24LB04*/')SKIP;
*        ANS('/*MACMEAN  MSSC TERMINATE MACRO             '
*            '               @G24LB04*/')SKIP;
*        ANS('/*MVS VERSION--06/16/76                     '
*            '               @G24LB04*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '               @G24LB04*/')SKIP;
*        ANS('/*******************************************'
*            '************** @G24LB04*/')SKIP;
*        ANS('DCL 1 TRMRB BASED,'
*        ' /*TERMINATE REQUEST BLOCK @G24LB04*/')SKIP;
*        ANS('    2  TRMRBLEN FIXED(31),/*LENGTH OF'
*        ' TERMINATE REQ BLK @G24LB04*/')SKIP;
*        ANS('    2  TRMRBOPC FIXED(8),/*TERMINATE'
*        ' OPCODE @G24LB04*/')SKIP;
*        ANS('    2  TRMFLAGS BIT(8), /*ALLOCATION FLAGS'
*        ' @G24LB04*/')SKIP;
*        ANS('    3  TRMALLOK BIT(1), /*STEP ALLOCATED '
*        'SUCCESSFULLY @G24LB04*/')SKIP;
*        ANS('    3  TRMSCHAB BIT(1), /*RESERVED FOR VS1 USE '
*        ' @G24LB04*/')SKIP;
*        ANS('    3  * BIT(6), /*UNUSED BITS'
*        ' @G24LB04*/')SKIP;
*        ANS('    2  * CHAR(2), /* UNUSED @G24LB04*/')SKIP;
*        ANS('    2  TRMJOBID FIXED(31), /*ASID @G24LB04*/')SKIP;
*        ANS('    2  TRMSTHDR PTR(31);/*STEP TABLE HEADER ADDRESS' 
*        ' @G24LB04*/')SKIP;
*        ANS('DCL TRMLEN FIXED(8) CONSTANT(16);/*TERMINATE REQUEST '
*          'LENGTH @G24LB04*/')SKIP;
*        ANS('DCL TRMOPCD BIT(8) CONSTANT('  QUOTE('8A')  'X);'
*        '/*TERMINATE OP CODE @G24LB04*/')SKIP;
*     END;                 /*                                @G24LB04*/
*/*                                                          @G24LB04*/
*FINISH:  RETURN CODE(RETCODE);    /*SET RETURN CODE         @G24LB04*/
*         %END;                                            /*@G24LB04*/
./ ADD NAME=ICBSUSP
* %/*  START OF SPECIFICATIONS****                             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBSUSP                                   @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = SUSPEND MACRO                        @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = REQUEST THE MSC TO STOP MSS PROCESSING       @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB AND SU                             @Y30LB02
.*                                                             @Y30LB02
.*02     REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS@Y30LB02
.*                              BY MACROS: R0,R1,R14, AND R15  @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS2 AND ASSEMBLER                        @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBSUSP                                 @Y30LB02
.*                                                             @Y30LB02
.*02     PURPOSE = A SUSPEND REQUEST WILL BE ISSUED            @Y30LB02
.*       WHENEVER THE CALLER WANTS TO QUIESCE MSS              @Y30LB02
.*       PROCESSING FOR A POWER DOWN OR TO INFORM MSS          @Y30LB02
.*       THAT THE HOST INTERFACE WILL NO LONGER                @Y30LB02
.*       ACCESS MSS OR TO PREPARE TO SWAP TO THE ALTERNATE MSC @ZD00155
.*                                                             @Y30LB02
.*02     LINKAGE = SVC  126                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT                                                    @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* MACRO SYNTAX                                                @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBSUSP  MF=L                  MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R)         MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBSUSP  FLAGS=ADDR/(R)                                      @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBSUSP  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTION.                           @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS - THE 2 BYTE FIELD WHICH INDICATES FUNCTION TO      @Y30LB02
.*   BE PERFORMED.  THE FORMAT OF THE FLAGS FIELD IS AS        @Y30LB02
.*   FOLLOWS:                                                  @Y30LB02
.*                                                             @Y30LB02
.*     ----------------------------------------------          @ZD00155
.*      X  X  X      BITS 3-15 --- ALL ZEROS              @ZD00155
.*     ----------------------------------------------          @ZD00155
.*                                                             @Y30LB02
.*   BIT 0------------'1'B     IMMEDIATE SHUTDOWN              @Y30LB02
.*                    '0'B     NO FUNCTION                     @Y30LB02
.*                                                             @Y30LB02
.*   BIT 1------------'1'B     RECONFIGURATION SHUTDOWN        @Y30LB02
.*                    '0'B     NO FUNCTION                     @Y30LB02
.*                                                             @Y30LB02
.*   BIT 2------------'1'B     PREPARE TO SWAP MSCS            @ZD00155
.*                    '0'B     NO FUNCTION                     @Y30LB02
.*                                                             @Y30LB02
.*   BITS 3-15------------    NOT USED - ALWAYS ZERO         @Y30LB02
.*                                                             @Y30LB02
.*      IMMEDIATE SHUTDOWN:                                    @Y30LB02
.*                                                             @Y30LB02
.*      THIS FUNCTION IS PERFORMED FOR MSC ACTIVITY ON BEHALF  @Y30LB02
.*      OF THE INTERFACE ISSUING THE ORDER ONLY.               @Y30LB02
.*      IF THE ISSUING INTERFACE IS NOT THAT OF THE PRIMARY    @Y30LB02
.*      HOST PROCESSOR, THE INTERFACE IS DEINITIALIZED AND NO  @Y30LB02
.*      FURTHER ACTION IS TAKEN BY THE MSC FOR THIS COMMAND.   @Y30LB02
.*      USE OF THIS ATTRIBUTE CAUSES ALL STAGING/DESTAGING     @Y30LB02
.*      IN PROGRESS TO BE COMPLETED. IF TRACE IS ON, THE TRACE @Y30LB02
.*      END RECORD IS WRITTEN.                                 @Y30LB02
.*      ALL CARTRIDGES ARE RETURNED TO THEIR CELLS             @Y30LB02
.*      AND THE INTERFACE IS DEINITIALIZED.                    @Y30LB02
.*                                                             @Y30LB02
.*      RECONFIGURATION SHUTDOWN:                              @Y30LB02
.*                                                             @Y30LB02
.*      THIS FUNCTION IS PERFORMED ONLY WHEN ISSUED BY THE     @Y30LB02
.*      PRIMARY HOST CPU PROCESSOR.                            @Y30LB02
.*      USE OF THIS ATTRIBUTE CAUSES ALL MOUNTED VOLUMES IN    @Y30LB02
.*      MSS TO BE DEMOUNTED AND ALL SCHEDULED WORK IN MSS      @Y30LB02
.*      COMPLETED. IF TRACE IS ON, THE TRACE END RECORD IS     @Y30LB02
.*      WRITTEN.  THE INTERFACE IS DEINITIALIZED.              @Y30LB02
.*                                                             @Y30LB02
.*      PREPARE TO SWAP:                                       @ZD00155
.*                                                             @ZD00155
.*      THIS IS USED TO PREPARE THE MSF AND PROCESSORS WHICH   @ZD00155
.*      ARE USING THE MSF FOR A SWAP TO THE ALTERNATE MSC,     @ZD00155
.*      AT OPERATOR REQUEST.                                   @ZD00155
.*      A PREPARE MSC SWAP WILL ONLY BE EXECUTED WHEN RECEIVED @ZD00155
.*      BY THE MSC FROM THE PRIMARY HOST.                      @ZD00155
.*      USE OF THIS ATTRIBUTE CAUSES THE STAGE/DESTAGE         @ZD00155
.*      ACTIVITY CURRENTLY IN PROGRESS TO BE COMPLETED.        @ZD00155
.*      IF TRACE IS ON, THE TRACE END RECORD IS WRITTEN.       @ZD00155
.*      A DUMMY MESSAGE IS WRITTEN TO ANY INTERFACE OTHER      @ZD00155
.*      THAN THE PRIMARY TO CONVEY THE INFORMATION THAT        @ZD00155
.*      THE SWAP IS TO TAKE PLACE.                             @ZD00155
.*      NO INTERFACE IS DEINITIALIZED.                         @ZD00155
.*                                                             @Y30LB02
.*   BITS 0, 1 AND 2 ARE MUTUALLY EXCLUSIVE                    @ZD00155
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = REQUESTED ORDER GENERATED FOR THE SVC        @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*      ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE         @Y30LB02
.*                SPECIFIED IN MF(2)                           @Y30LB02
.*      ICB604I:  WARNING-ONLY THE MF PARAMETER IS VALID FOR   @Y30LB02
.*                THE LIST FORM                                @Y30LB02
.*      ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD         @Y30LB02
.*                FORM MACRO                                   @Y30LB02
.*      ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME              @Y30LB02
.*                IF EXEC MACRO FORM REQUESTED                 @Y30LB02
.*      ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST         @Y30LB02
.*                BE E, L, OR NULL                             @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 AND Y30LB02                @Y30LB02
 .*                         @ZD00155                           @ZD00155
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO                                                 @Y30LB02
&SYMBOL  ICBSUSP &MF=,&FLAGS=                                  @Y30LB02
         LCLB  &ERSW              ERROR SWITCH                 @Y30LB02
         LCLC  &SUSP              SUSPEND MACRO INSTR INDX     @Y30LB02
&SUSP    SETC 'SU'.'&SYSNDX'      ASSIGN CHARACTER VALUE       @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
         AIF  ('&MF(1)' NE 'L').EFORM       LIST FORM?         @Y30LB02
         AIF  ('&FLAGS' EQ '').LISTOK                          @Y30LB02
.WARN    MNOTE 4,'  ICB604I - WARNING-ONLY THE MF PARAMETER '  @Y30LB02
         MNOTE 4,'  IS VALID FOR THE LIST FORM '               @Y30LB02
.*                                                             @Y30LB02
.LISTOK  ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC SUSPEND MACRO--INITIALIZED LIST FORM          @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS   0F                                               @Y30LB02
SUSPLEN  DC   F'8'                LENGTH OF SUSPEND REQBLK     @Y30LB02
SUSPOPC  DC   XL1'22'             SUSPEND  FUNCTION OPCODE     @Y30LB02
SUSP001  DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
SUSPFLG  DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC SUSPEND MACRO--UNINITIALIZED LIST FORM        @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBSUSP  DSECT                                                 @Y30LB02
SUSPLEN  DS   F                   LEN SUSPEND REQBLK=8         @Y30LB02
SUSPOPC  DS   XL1                 SUSPEND OPCODE 22 HEX        @Y30LB02
SUSP001  DS   XL1                 1-BYTE RESERVED AREA         @Y30LB02
SUSPFLG  DS   XL2                 2-BYTE FLAGS AREA            @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING PROCESSING IS ACCOMPLISHED FOR THE      @Y30LB02
.*       EXECUTABLE MACRO FORM                                 @Y30LB02
.*                                                             @Y30LB02
.EFORM   AIF  ('&MF(1)' NE 'E').SFORM       EXECUTE FORM?      @Y30LB02
         AIF  ('&MF(2)' EQ '').EXFAIL       MF(2) NULL?        @Y30LB02
.*                                                             @Y30LB02
*  MACMEAN  MSSC SUSPEND MACRO--EXECUTE FORM                   @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)           LD ADDR OF REQUEST BLK      @Y30LB02
.*                                 USING IHBINNRA MACRO        @Y30LB02
         LA    0,8                 LENGTH OF REQ BLOCK         @Y30LB02
         ST    0,0(1)              STORE LENGTH IN BLK         @Y30LB02
         MVI   4(1),X'22'          STORE OPCODE                @Y30LB02
         AGO  .CKSW1               BR TO CK ERROR SWITCH       @Y30LB02
.EXFAIL  ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB612I - MF(2) MUST CONTAIN REQ '        @Y30LB02
         MNOTE 12,'  BLK NAME IF EXEC MACRO FORM REQUESTED'    @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
.*                                                             @Y30LB02
.CKSW1   AIF  (&ERSW).FINISH      IF ERROR-END PROCESSING      @Y30LB02
         AGO  .COMMON                                          @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF THE STANDARD FORM MACRO                 @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF  ('&MF(1)' NE '').BADFORM      STANDARD FORM?     @Y30LB02
         AIF  ('&FLAGS' NE '').CKSW2        FLAGS SPECIFIED?   @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO  .CKSW2                                           @Y30LB02
.*                                                             @Y30LB02
.BADFORM ANOP                                                  @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL '        @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS TO DETERMINE IF THE ERROR   @Y30LB02
.*       SWITCH IS ON.  IF YES, PROCESSING IS TERMINATED, OTHER@Y30LB02
.*       WISE STANDARD FORM MACRO PROCESSING WILL BE CON-      @Y30LB02
.*       TINUED                                                @Y30LB02
.*                                                             @Y30LB02
.CKSW2   AIF  (&ERSW).FINISH      IF YES-END PROCESSING        @Y30LB02
*  MACMEAN  MSSC SUSPEND MACRO--STANDARD FORM                  @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL  1,&SUSP             BRANCH AROUND REQ BLOCK      @Y30LB02
SUSPPTR  DC   A(&SUSP-*)          LENGTH OF REQUEST BLOCK      @Y30LB02
SUSPOPC  DC   XL1'22'             SUSPEND FUNCTION OPCODE      @Y30LB02
SUSP001  DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
SUSPFLG  DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
&SUSP    EQU  *                                                @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR VALID PARAMETERS IF     @Y30LB02
.*       STANDARD FOR EXECUTE FORM MACRO IS SPECIFIED.         @Y30LB02
.*       IF PARAMETERS ARE SPECIFIED, THEY WILL BE STORED      @Y30LB02
.*       IN THE REQUEST BLOCK.                                 @Y30LB02
.*                                                             @Y30LB02
.COMMON  AIF  ('&FLAGS' EQ '').INVOKE       FLAGS SPECIFIED?   @Y30LB02
         AIF  ('&FLAGS'(1,1) EQ '(').FLREG  FLAGS IN REG-FORM? @Y30LB02
         MVC  6(2,1),&FLAGS       PUT FLAGS IN REQ BLK         @Y30LB02
         AGO  .INVOKE             BRANCH TO CK TIME/DATE       @Y30LB02
.*                                                             @Y30LB02
.FLREG   ANOP                                                  @Y30LB02
         MVC  6(2,1),0(&FLAGS(1)) REGFORM,FLAGS IN BLOCK       @Y30LB02
.*                                                             @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC  126                                              @Y30LB02
.FINISH  MEND                                                  @Y30LB02
**/
*/*                                                          @Y30LB02*/
*   ICBSUSP: MACRO KEYS(MF,FLAGS);                         /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                     EXTERNAL DECLARES                    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      SUSPTEST IS USED TO DETERMINE WHETHER THE STANDARD  @Y30LB02*/
*/*      FORM MACRO HAS BEEN INVOKED MORE THAN ONCE BY THE   @Y30LB02*/
*/*      SAME CALLER.                                        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      SUTESTR1 WILL BE USED TO DETERMINE IF IT IS NECES-  @Y30LB02*/
*/*      SARY TO DECLARE R1 OR WHETHER IT IS ALREADY DCLD    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  SUTESTR1  FIXED  EXT;    /*REG1 DECLARE COUNTER     @Y30LB02*/
*   DCL  SUSPTEST  FIXED  EXT;    /*STANDARD INVOC COUNTER   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      INTERNAL DECLARES                                   @Y30LB02*/
*   DCL  SUPOP    CHAR;      /*DEFINE SUSPEND OPCODE         @Y30LB02*/
*   DCL  SUPLEN   CHAR;      /*DECLARE LENGTH OF ORDER       @Y30LB02*/
*   DCL  ERSW     FIXED;     /*DECLARE ERROR COND SWITCH     @Y30LB02*/
*   DCL  RETCODE  FIXED;     /*DECLARE RETURN CODE AREA      @Y30LB02*/
*   DCL  CTR      FIXED;     /*DECLARE CTR FOR LIST FORM     @Y30LB02*/
*        ERSW=0;             /*INITIALIZE ERROR SWITCH       @Y30LB02*/
*        RETCODE=0;          /*INITIALIZE RETURN CODE        @Y30LB02*/
*        SUPLEN='8';         /*INITIALIZE LENGTH FIELD       @Y30LB02*/
*        SUPOP='22';         /*INITIALIZE OPCODE FIELD       @Y30LB02*/
*        CTR=0;              /*INITIALIZE COUNTER            @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      CHECK FOR VALID MACRO FORM--E INDICATES EXECUTE     @Y30LB02*/
*/*      FORM, L INDICATES LIST FORM AND IF THE MF PARA-     @Y30LB02*/
*/*      METER IS NULL THE STANDARD FORM MACRO IS INVOKED    @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        IF SUTESTR1=0 THEN  /*REGISTER ONE DECLARED?        @Y30LB02*/
*             DO;            /*NO,DECLARE IT                 @Y30LB02*/
*                  ANS('DCL SUSPR1 REG(1) PTR ;/*PTR'
*                  ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*                  SUTESTR1=SUTESTR1+1; /*INCREM REG CTR     @Y30LB02*/
*             END;               /*                          @Y30LB02*/
*   IF MF(1) ^= 'L' THEN         /*LIST FORM REQUEST?        @Y30LB02*/
*        GO TO EFORM;            /*NO,CK FOR EXECUTE         @Y30LB02*/
*   IF MF(2) = '' THEN           /*LIST NAME SPECIFIED?      @Y30LB02*/
*        DO;                     /*NO,PRINT ERROR MSG        @Y30LB02*/
*             ERSW=1;            /*SET ERROR SWITCH          @Y30LB02*/
*             RETCODE=12;        /*SET RETURN CODE           @Y30LB02*/
*        ANS MSG('  ICB602I -  A NAME FOR THE '
*        'REQUEST BLOCK MUST BE SPECIFIED IN MF(2)')SKIP;  /*@Y30LB02*/
*             GO TO FINISH;      /*BRANCH TO END PROCESS     @Y30LB02*/
*        END;                 /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS ^= '' THEN      /*IS THE FLAGS AREA NULL        @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF CTR > 0 THEN          /*INCREMENT CTR > ZERO?         @Y30LB02*/
*        DO;                 /*GIVE USER WARNING MSG         @Y30LB02*/
*             RETCODE=4;     /*SET RETURN CODE TO 4          @Y30LB02*/
*             ANS MSG('  ICB604I -  WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR THE'
*                 ' LIST FORM  ')SKIP;                     /*@Y30LB02*/
*        END;                  /*                            @Y30LB02*/
*    IF MF(3) ^= '' THEN       /*PLS ATTRIBUTE SPECIFIED     @Y30LB02*/
*        GO TO ATTRLST;        /*BRCH,PROCESS ATTRIBUTE      @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('/*    MACMEAN  MSSC SUSPEND MACRO           '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)' STATIC LOCAL,'
*             ' /*SUSPEND REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  SUSPLEN  FIXED(31)INIT('QUOTE
*             ('08')'X),/*LENGTH OF SUSPEND REQ BLK @Y30LB02*/')SKIP;
*             ANS('    2  SUSPOP  CHAR(1)INIT('QUOTE('22')
*             'X),/*SUSPEND OPCODE @Y30LB02*/')SKIP;
*             ANS('    2  *      CHAR(1)INIT('QUOTE('00')
*             'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  SUSPFLG BIT(16)INIT('QUOTE
*             ('0000000000000000')'B),/*TWO BYTE ATTRI'
*             'BUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  SUPIMED BIT(1),/*SUSPEND'
*             ' IMMEDIATE ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  SUPRCON BIT(1),/*SUSPEND'
*             ' RECONFIGURATION ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  SUPPRSW BIT(1),/*SUSPEND'
*             ' PREPARE TO SWAP MSCS ATTRIBUTE @ZD00155*/')SKIP;
*             ANS('       3  *      BIT(13);/*RESERVED AND'
*             ' MUST BE ZERO @ZD00155*/')SKIP;
*             GO TO FINISH;    /*BRANCH TO END PROCESSING    @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC SUSPEND MACRO          '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)' 'MF(3)','
*             ' /*SUSPEND REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  SUSPLEN  FIXED(31),/*LENG'
*             'TH OF SUSPEND REQBLK = 8 BYTES @Y30LB02*/')SKIP;
*             ANS('    2  SUSPOP  CHAR(1),'
*             '/*SUSPEND OPCODE = 22 HEX @Y30LB02*/')SKIP;
*             ANS('    2  *      CHAR(1),'
*             '/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  SUSPFLG BIT(16),'
*             '/*TWO BYTE ATTRIBUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  SUPIMED BIT(1),/*SUSPEND'
*             ' IMMEDIATE ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  SUPRCON BIT(1),/*SUSPEND'
*             ' RECONFIGURATION ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  SUPPRSW BIT(1),/*SUSPEND'
*             ' PREPARE TO SWAP MSCS ATTRIBUTE @ZD00155*/')SKIP;
*             ANS('       3  *      BIT(13);/*RESERVED AND'
*             ' MUST BE ZERO @ZD00155*/')SKIP;
*             GO TO FINISH;   /*BRANCH TO END PROCESSING     @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      PROCESSING THE EXECUTE MACRO FORM                   @Y30LB02*/
*/*                                                          @Y30LB02*/
*EFORM:
*   IF MF(1) ^= 'E' THEN      /*EXECUTE FORM?                @Y30LB02*/
*        GO TO SFORM;         /*NO,CK FOR STANDARD?          @Y30LB02*/
*   IF MF(2) = '' THEN        /*YES,NAME SPECIFIED?          @Y30LB02*/
*        DO;                  /*NO,PRINT ERROR MSG           @Y30LB02*/
*             ERSW=1;         /*SET ERROR SWITCH             @Y30LB02*/
*             RETCODE=12;     /*SET RETURN CODE              @Y30LB02*/
*             ANS MSG('  ICB612I - MF(2) MUST '
*                'CONTAIN REQ BLK NAME IF '
*                'EXEC MACRO FORM REQUESTED ')SKIP;        /*@Y30LB02*/
*             GO TO CKSW;     /*BRANCH TO CK ERROR SWITCH    @Y30LB02*/
*        END;                 /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                       /*REQUEST TO ZERO BLOCK?      @Y30LB02*/
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC SUSPEND MACRO          '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*       '              @Y30LB02*/')SKIP;
*   ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*       '              @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************* @Y30LB02*/')SKIP;
*    IF MF(3) = 'COMPLETE' THEN   /*COMPLETE SPECIFIED?      @Y30LB02*/
*      DO;                        /*YES,ZERO BLOCK           @Y30LB02*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'    /*@Y30LB02*/
*        '/*ZERO OUT REQUEST BLOCK @Y30LB02*/')SKIP;
*      END;                  /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('RFY(SUSPR1)RSTD;/*RESTRICT REG1 @Y30LB02*/')SKIP;
*        ANS('SUSPR1=ADDR('MF(2)');/*R1 POINTER TO'
*        ' REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('SUSPLEN= 'QUOTE(SUPLEN)'X;/*LENGTH '
*        'OF SUSPEND REQUEST @Y30LB02*/')SKIP;
*        ANS('SUSPOP= 'QUOTE(SUPOP)'X;/*SUSPEND'
*        ' OPCODE @Y30LB02*/')SKIP;
*        GO TO COMPROC;    /*BRANCH,CK PARAMETERS            @Y30LB02*/
*/*                                                          @Y30LB02*/
*CKSW:
*   IF ERSW=1 THEN         /*ERROR SWITCH SET?               @Y30LB02*/
*        GO TO FINISH;     /*BRANCH TO END PROCESSING        @Y30LB02*/
*   ELSE                   /*CONTINUE PROCESSING             @Y30LB02*/
*        GO TO COMPROC;    /*BRANCH,CK PARAMETERS            @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN    /*STANDARD FORM?                  @Y30LB02*/
*     DO;                  /*NO,PRINT ERROR MESSAGE          @Y30LB02*/
*        ERSW=1;           /*SET ERROR SWITCH                @Y30LB02*/
*        RETCODE=12;       /*SET RETURN CODE TO 12           @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER '
*             'SPECIFIED, MUST BE L, E, OR NULL')SKIP;     /*@Y30LB02*/
*        GO TO CKSW2;      /*BRANCH,CHECK ERROR SWITCH       @Y30LB02*/
*     END;                 /*                                @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS = '' THEN     /*FLAGS PARAMETER SPECIFIED?      @Y30LB02*/
*     DO;                  /*NO,PRINT ERROR MESSAGE          @Y30LB02*/
*        ERSW=1;           /*SET ERROR SWITCH TO ONE         @Y30LB02*/
*        RETCODE=12;       /*SET RETURN CODE TO 12           @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*     END;                 /*                                @Y30LB02*/
*/*                                                          @Y30LB02*/
*CKSW2:
*/*                                                          @Y30LB02*/
*   IF ERSW = 1 THEN       /*ERROR SWITCH EQUAL ONE?         @Y30LB02*/
*        GO TO FINISH;     /*BRANCH TO END PROCESSING        @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF SUSPTEST = 1 THEN  /*STD FORM REQUESTED BEFORE?       @Y30LB02*/
*     DO;                 /*YES,DON'T PUT OUT DECLARES       @Y30LB02*/
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC SUSPEND MACRO          '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*        ANS('RFY(SUSPR1)RSTD;/*RESTRICT REG1 @Y30LB02*/')SKIP;
*        ANS('SUSPR1=ADDR(SUSPLEN);/*R1 PTR TO BLK @Y30LB02*/')SKIP;
*        ANS('SUSPLEN= 'QUOTE(SUPLEN)'X;/*LENGTH '
*        'OF SUSPEND REQUEST @Y30LB02*/')SKIP;
*        ANS('SUSPOP='QUOTE(SUPOP)'X;/*SUSPEND'
*        ' OPCODE @Y30LB02*/')SKIP;
*        GO TO COMPROC;       /*BRANCH,CK PARAMETERS         @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                      /*STD FORM 1ST TIME            @Y30LB02*/
*     DO;                     /*PRINT DECLARES               @Y30LB02*/
*   ANS('/*******************************************'
*       '************** @Y30LB02*/')SKIP;
*   ANS('/*     MACMEAN  MSSC SUSPEND MACRO          '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*       '               @Y30LB02*/')SKIP;
*   ANS('/*******************************************'
*       '*********** @Y30LB02*/')SKIP;
*        ANS('RFY(SUSPR1)RSTD;/*RESTRICT REG1 @Y30LB02*/')SKIP;
*        ANS('SUSPR1=ADDR(SUSPLEN);/*R1 PTR  '
*        'TO BLOCK @Y30LB02*/')SKIP;
*        ANS('DCL 1 SUSPLST  STATIC LOCAL,'
*        ' /*SUSPEND REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  SUSPLEN  FIXED(31)INIT('QUOTE
*        ('08')'X),/*LENGTH OF SUSPEND REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  SUSPOP  CHAR(1)INIT('QUOTE('22')
*        'X),/*SUSPEND OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  *      CHAR(1)INIT('QUOTE('00')
*        'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  SUSPFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B),/*TWO BYTE ATTRI'
*        'BUTE AREA @Y30LB02*/')SKIP;
*        ANS('       3  SUPIMED BIT(1),/*SUSPEND'
*        ' IMMEDIATE ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  SUPRCON BIT(1),/*SUSPEND'
*        ' RECONFIGURATION ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  SUPPRSW BIT(1),/*SUSPEND'
*        ' PREPARE TO SWAP MSCS ATTRIBUTE @ZD00155*/')SKIP;
*        ANS('       3  *      BIT(13);/*RESERVED AND'
*        ' MUST BE ZERO @ZD00155*/')SKIP;
*        SUSPTEST=SUSPTEST+1;  /*INCREM STD FORM CTR         @Y30LB02*/
*        GO TO COMPROC;        /*BRANCH TO CK PARAMETERS     @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      COMMON PROCESSING FOR EXECUTE AND STANDARD FORMS    @Y30LB02*/
*/*      THE FOLLOWING CODE WILL CHECK TO DETERMINE WHAT     @Y30LB02*/
*/*      PARAMETERS ARE SPECIFIED AND PLACE THE VALUE IN     @Y30LB02*/
*/*      THE REQUEST BLOCK                                   @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*COMPROC:
*   IF FLAGS ^= '' THEN   /*FLAGS SPECIFIED?                 @Y30LB02*/
*        ANS('SUSPFLG= 'FLAGS';/*VALUE OF FLAGS '
*        'PARAMETER @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      THE FOLLOWING CODE WILL INVOKE SVC 126.             @Y30LB02*/
*/*      THE RETURN CODE IS SET AND PROCESSING ENDS.         @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        ANS('SVC (126);/*INVOKE  SVC 126 @Y30LB02*/')SKIP;
*        ANS('RFY  SUSPR1 UNRSTD;/*UNRESTRICT REG 1 @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:
*        RETURN CODE(RETCODE);                             /*@Y30LB02*/
*        %END;                                             /*@Y30LB02*/
./ ADD NAME=ICBTRACE
* %/*  START OF SPECIFICATIONS****                             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBTRACE                                  @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = TRACE MACRO                          @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = REQUEST THE MSC TO TRACE THE SCHEDULE        @Y30LB02
.*                QUEUES                                       @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB AND TRAC                           @Y30LB02
.*                                                             @Y30LB02
.*02     REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF          @Y30LB02
.*                              REGISTERS BY MACROS:           @Y30LB02
.*                              R0,R1,R14, AND R15.            @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS2 AND ASSEMBLER                        @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBTRACE                                @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE =  SVC 126                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT                                                    @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   THE TRACE REQUEST IS ISSUED IF A HOST WISHES TO FOLLOW    @Y30LB02
.*   THE STATUS OF THE SCHEDULE QUEUE(CARTRIDGE MOVEMENT,      @Y30LB02
.*   STAGING/ DESTAGING) ACTIVITY.                             @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* MACRO SYNTAX                                                @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBTRACE MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBTRACE FLAGS=ADDR/(R)            NONE                      @Y30LB02
.*         TIMDAT=ADDR/(R)                                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBTRACE MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                              TIMDAT=ADDR/(R)                @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTION.                           @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*   FLAGS - A 2 BYTE FIELD WHICH INDICATES THE FUNCTION       @Y30LB02
.*   TO BE PERFORMED.  THE FORMAT OF THE FLAGS FIELD IS AS     @Y30LB02
.*   FOLLOWS:                                                  @Y30LB02
.*                                                             @Y30LB02
.*   --------------------------------------------              @Y30LB02
.*    X    BITS 1-15 NOT USED - ALWAYS ZERO                 @Y30LB02
.*   --------------------------------------------              @Y30LB02
.*                                                             @Y30LB02
.*   BIT 0 ------------'1'B     TRACE ON                       @Y30LB02
.*         ------------'0'B     TRACE OFF                      @Y30LB02
.*                                                             @Y30LB02
.*   BITS 1-15---------         NOT USED - ZERO              @Y30LB02
.*                                                             @Y30LB02
.*   TRACE ON:                                                 @Y30LB02
.*                                                             @Y30LB02
.*   WHEN THIS ATTRIBUTE IS SPECIFIED, THE HOST WILL PASS      @Y30LB02
.*   CURRENT TIME AND DATE TO THE TRACE HEADER RECORD.  IF     @Y30LB02
.*   THE TRACE IS ALREADY ACTIVE THIS REQUEST IS CONSIDERED    @Y30LB02
.*   SATISFIED.  IF THE TRACE IS INACTIVE, IT WILL BE ACTI-    @Y30LB02
.*   VATED ON TRACEX AND THE HOST REQUESTING THE ORDER WILL    @Y30LB02
.*   BE NOTIFIED.                                              @Y30LB02
.*                                                             @Y30LB02
.*   TRACE OFF:                                                @Y30LB02
.*                                                             @Y30LB02
.*   WHEN THIS ATTRIBUTE IS SPECIFIED, THE MSC WILL CHECK TO   @Y30LB02
.*   DETERMINE WHETHER THE TRACE IS ACTIVE.  IF THE TRACE      @Y30LB02
.*   IS NOT ACTIVE, A MESSAGE IS SENT TO THE REQUESTING        @Y30LB02
.*   HOST, INDICATING THAT THE REQUEST HAS BEEN FULFILLED.     @Y30LB02
.*   OTHERWISE, THE MSC WILL DISABLE THE TRACE AND SEND A      @Y30LB02
.*   MESSAGE INDICATING TRACE ENDED.                           @Y30LB02
.*                                                             @Y30LB02
.* TIMDAT -  TIME AND DATE:  AN EIGHT BYTE FIELD WHICH         @Y30LB02
.*           CONTAINS THE TIME OF DAY AND DATE THE TRACE       @Y30LB02
.*           FUNCTION WAS ACTIVATED OR DEACTIVATED.  THE       @Y30LB02
.*           FIRST FOUR BYTES WILL CONTAIN THE DATE IN         @Y30LB02
.*           FIXED DECIMAL AND THE NEXT FOUR BYTES WILL CON-   @Y30LB02
.*           TAIN THE TIME IN FIXED BINARY.                    @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = REQUESTED ORDER GENERATED FOR THE SVC        @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*      ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE         @Y30LB02
.*                SPECIFIED IN MF(2)                           @Y30LB02
.*      ICB604I:  WARNING-ONLY THE MF PARAMETER IS VALID FOR   @Y30LB02
.*                THE LIST FORM                                @Y30LB02
.*      ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD         @Y30LB02
.*                FORM MACRO                                   @Y30LB02
.*      ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME              @Y30LB02
.*                IF EXEC MACRO FORM REQUESTED                 @Y30LB02
.*      ICB614I:  TIMDAT MUST BE SPECIFIED FOR STANDARD        @Y30LB02
.*                FORM MACRO                                   @Y30LB02
.*      ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST         @Y30LB02
.*                BE L, E, OR NULL                             @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = IHBINNRA                                  @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 AND Y30LB02                @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO                                                 @Y30LB02
&SYMBOL  ICBTRACE &MF=,&FLAGS=,&TIMDAT=                        @Y30LB02
         LCLB  &ERSW              ERROR SWITCH                 @Y30LB02
         LCLC  &TRACE             TRACE MACRO INSTR INDX       @Y30LB02
&TRACE   SETC 'T'.'&SYSNDX'       ASSIGN CHARACTER VALUE       @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
         AIF  ('&MF(1)' NE 'L').EFORM       LIST FORM?         @Y30LB02
         AIF  ('&FLAGS' EQ '' AND '&TIMDAT' EQ '').LISTOK      @Y30LB02
.WARN    MNOTE 4,'  ICB604I - WARNING-ONLY THE MF PARAMETER '  @Y30LB02
         MNOTE 4,'  IS VALID FOR THE LIST FORM '               @Y30LB02
.*                                                             @Y30LB02
.LISTOK  ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').LISTDS   DSECT REQUESTED?   @Y30LB02
*  MACMEAN  MSSC TRACE MACRO--INITIALIZED LIST FORM            @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS   0F                                               @Y30LB02
TRACLEN  DC   F'16'               LEN OF TRACE REQUEST BLK     @Y30LB02
TRACOPC  DC   XL1'24'             TRACE  FUNCTION OPCODE       @Y30LB02
TRAC001  DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
TRACFLG  DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
TRACTIM  DC   XL8'0000'           8-BYTE TIME/DATE AREA        @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  MSSC TRACE MACRO--UNINITIALIZED LIST FORM          @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBTRACE DSECT                                                 @Y30LB02
TRACLEN  DS   F                   LEN OF REQ BLK 10 HEX        @Y30LB02
TRACOPC  DS   XL1                 TRACE OPCODE 24 HEX          @Y30LB02
TRAC001  DS   XL1                 1-BYTE RESERVED AREA         @Y30LB02
TRACFLG  DS   XL2                 2-BYTE FLAGS AREA            @Y30LB02
TRACTIM  DS   XL8                 8-BYTE TIME/DATE AREA        @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*       THE FOLLOWING PROCESSING IS ACCOMPLISHED FOR THE      @Y30LB02
.*       EXECUTABLE MACRO FORM                                 @Y30LB02
.*                                                             @Y30LB02
.EFORM   AIF  ('&MF(1)' NE 'E').SFORM       EXECUTE FORM?      @Y30LB02
         AIF  ('&MF(2)' EQ '').EXFAIL       MF(2) NULL?        @Y30LB02
*  MACMEAN  MSSC TRACE MACRO--EXECUTE FORM                     @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)           LD ADDR OF REQUEST BLK      @Y30LB02
.*                                 USING IHBINNRA MACRO        @Y30LB02
         LA    0,16                LENGTH OF REQ BLOCK         @Y30LB02
         ST    0,0(1)              STORE LENGTH IN BLK         @Y30LB02
         MVI   4(1),X'24'          STORE OPCODE                @Y30LB02
         AGO  .CKSW1               BR TO CK ERROR SWITCH       @Y30LB02
.*                                                             @Y30LB02
.EXFAIL  ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB612I - MF(2) MUST CONTAIN REQ BLK '    @Y30LB02
         MNOTE 12,'  NAME IF EXEC MACRO FORM REQUESTED'        @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
.*                                                             @Y30LB02
.CKSW1   AIF  (&ERSW).FINISH      IF ERROR-END PROCESSING      @Y30LB02
         AGO  .COMMON                                          @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF THE STANDARD FORM MACRO                 @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF  ('&MF(1)' NE '').BADFORM      STANDARD FORM?     @Y30LB02
         AIF  ('&FLAGS' NE '').CKTIME       FLAGS SPECIFIED?   @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED'        @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO  .CKSW2                                           @Y30LB02
.CKTIME  AIF  ('&TIMDAT' NE '').CKSW2       TIME SPECIFIED?    @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB614I - TIMDAT MUST BE SPECIFIED'       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO  .CKSW2                                           @Y30LB02
.*                                                             @Y30LB02
.BADFORM ANOP                                                  @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE, L,E, OR NULL'         @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS TO DETERMINE IF THE ERROR   @Y30LB02
.*       SWITCH IS ON.  IF YES, PROCESSING IS TERMINATED, OTHER@Y30LB02
.*       WISE STANDARD FORM MACRO PROCESSING WILL BE CON-      @Y30LB02
.*       TINUED                                                @Y30LB02
.*                                                             @Y30LB02
.CKSW2   AIF  (&ERSW).FINISH      IF YES-END PROCESSING        @Y30LB02
*  MACMEAN  MSSC TRACE MACRO--STANDARD FORM                    @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL  1,&TRACE            BRANCH AROUND REQ BLK        @Y30LB02
TRACLEN  DC   A(&TRACE-*)         LENGTH OF REQUEST BLOCK      @Y30LB02
TRACOPC  DC   XL1'24'             TRACE FUNCTION OPCODE        @Y30LB02
TRAC001  DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
TRACFLG  DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
TRACTIM  DC   XL8'0000'           8-BYTE TIME/DATE AREA        @Y30LB02
&TRACE   EQU  *                                                @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR VALID PARAMETERS IF     @Y30LB02
.*       STANDARD FOR EXECUTE FORM MACRO IS SPECIFIED.         @Y30LB02
.*       IF PARAMETERS ARE SPECIFIED, THEY WILL BE STORED      @Y30LB02
.*       IN THE REQUEST BLOCK.                                 @Y30LB02
.*                                                             @Y30LB02
.COMMON  AIF  ('&FLAGS' EQ '').TIMDAT       FLAGS SPECIFIED?   @Y30LB02
         AIF  ('&FLAGS'(1,1) EQ '(').FLREG  FLAGS IN REG-FORM? @Y30LB02
         MVC  6(2,1),&FLAGS        PUT FLAGS IN REQ BLK        @Y30LB02
         AGO  .TIMDAT             BRANCH TO CK TIME/DATE       @Y30LB02
.*                                                             @Y30LB02
.FLREG   ANOP                                                  @Y30LB02
         MVC  6(2,1),0(&FLAGS(1))  REG-FORM FLAGS PARM         @Y30LB02
.*                                                             @Y30LB02
.TIMDAT  AIF  ('&TIMDAT' EQ '').INVOKE    TIMDAT SPECIFIED?    @Y30LB02
         AIF  ('&TIMDAT'(1,1) EQ '(').TREG  REGISTER FORM?     @Y30LB02
         MVC  8(8,1),&TIMDAT       ADDRFORM-PUT TIMDAT PARM    @Y30LB02
         AGO  .INVOKE                                          @Y30LB02
.*                                                             @Y30LB02
.TREG    ANOP                                                  @Y30LB02
         MVC  8(8,1),0(&TIMDAT(1)) REGFORM-PUT TIMDAT PARM     @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC  126                  INVOKE THE SVC              @Y30LB02
.FINISH  MEND                                                  @Y30LB02
**/
*/*                                                          @Y30LB02*/
*   ICBTRACE: MACRO KEYS(MF,FLAGS,TIMDAT);                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                     EXTERNAL DECLARES                    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      TRACTEST IS USED TO DETERMINE WHETHER THE STANDARD  @Y30LB02*/
*/*      FORM MACRO HAS BEEN INVOKED MORE THAN ONCE BY THE   @Y30LB02*/
*/*      SAME CALLER.                                        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      TRTESTR1 WILL BE USED TO DETERMINE IF IT IS NECES-  @Y30LB02*/
*/*      SARY TO DECLARE R1 OR WHETHER IT IS ALREADY DCLD    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  TRTESTR1  FIXED  EXT;    /*REG1 DECLARE COUNTER     @Y30LB02*/
*   DCL  TRACTEST  FIXED  EXT;    /*STANDARD INVOC COUNTER   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      INTERNAL DECLARES                                   @Y30LB02*/
*   DCL  TRACOP   CHAR;      /*DEFINE TRACE OPCODE           @Y30LB02*/
*   DCL  TRLEN  CHAR;        /*DECLARE LENGTH OF ORDER       @Y30LB02*/
*   DCL  ERSW     FIXED;     /*DECLARE ERROR COND SWITCH     @Y30LB02*/
*   DCL  RETCODE  FIXED;     /*DECLARE RETURN CODE AREA      @Y30LB02*/
*   DCL  CTR      FIXED;     /*DECLARE CTR FOR LIST FORM     @Y30LB02*/
*        ERSW=0;             /*INITIALIZE ERROR SWITCH       @Y30LB02*/
*        RETCODE=0;          /*INITIALIZE RETURN CODE        @Y30LB02*/
*        TRLEN='10';         /*INITIALIZE LENGTH FLD         @Y30LB02*/
*        TRACOP='24';        /*TRACE OPCODE                  @Y30LB02*/
*        CTR=0;              /*INITIALIZE PARM CTR           @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      CHECK FOR VALID MACRO FORM--E INDICATES EXECUTE     @Y30LB02*/
*/*      FORM, L INDICATES LIST FORM AND IF THE MF PARA-     @Y30LB02*/
*/*      METER IS NULL THE STANDARD FORM MACRO IS INVOKED    @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        IF TRTESTR1=0 THEN /*REG 1 DECLARED?                @Y30LB02*/
*             DO;           /*NO,DECLARE IT                  @Y30LB02*/
*                  ANS('DCL TRACR1 REG(1) PTR ;/*PTR'
*                  ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*                  TRTESTR1=TRTESTR1+1;  /*INCREM COUNTER    @Y30LB02*/
*             END;               /*                          @Y30LB02*/
*   IF MF(1) ^= 'L' THEN         /*LIST FORM REQUEST?        @Y30LB02*/
*        GO TO EFORM;            /*NO,CK FOR EXECUTE         @Y30LB02*/
*   IF MF(2) = '' THEN           /*LIST NAME SPECIFIED?      @Y30LB02*/
*        DO;                     /*NO,PRINT ERROR MSG        @Y30LB02*/
*         ERSW=1;                /*SET ERROR SWITCH          @Y30LB02*/
*         RETCODE=12;            /*SET RETURN CODE           @Y30LB02*/
*         ANS MSG('  ICB602I -  A NAME FOR THE '
*         'REQUEST BLOCK MUST BE SPECIFIED IN MF(2)')SKIP; /*@Y30LB02*/
*         GO TO FINISH;       /*BRANCH TO END PROCESSING     @Y30LB02*/
*        END;                 /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS ^= '' THEN      /*IS THE FLAGS AREA NULL        @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF TIMDAT ^= '' THEN     /*IS THE TIMDAT AREA NULL       @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF CTR > 0 THEN          /*INCREMENT CTR > ZERO?         @Y30LB02*/
*        DO;                 /*PRINT WARNING MESSAGE         @Y30LB02*/
*             RETCODE=4;     /*SET RETURN CODE               @Y30LB02*/
*             ANS MSG('  ICB604I - WARNING-ONLY'
*                 ' THE MF PARAMETER IS VALID FOR'
*                 ' LIST FORM ')SKIP;                      /*@Y30LB02*/
*        END;                /*                              @Y30LB02*/
*    IF MF(3) ^= '' THEN     /*PLS ATTRIBUTE SPECIFIED?      @Y30LB02*/
*        GO TO ATTRLST;      /*BRANCH,PROCESS IT             @Y30LB02*/
*/*                                                          @Y30LB02*/
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('/*    MACMEAN  MSSC TRACE MACRO             '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)'  STATIC LOCAL,'
*             ' /*TRACE REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  TRACLEN  FIXED(31)INIT('QUOTE
*             ('10')'X),/*LENGTH OF TRACE REQ BLK @Y30LB02*/')SKIP;
*             ANS('    2  TRACOPC  CHAR(1)INIT('QUOTE('24')
*             'X),/*TRACE OPCODE @Y30LB02*/')SKIP;
*             ANS('    2  *      CHAR(1)INIT('QUOTE('00')
*             'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  TRACFLG BIT(16)INIT('QUOTE
*             ('0000000000000000')'B),/*TWO BYTE ATTRI'
*             'BUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  TRACEON BIT(1),/*TRACEON/OFF'
*             ' ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  *      BIT(15),/*RESERVED AND'
*             ' MUST BE ZERO @Y30LB02*/')SKIP;
*             ANS('    2  TRACTIM  CHAR(8) INIT('QUOTE
*             ('0000000000000000')'X);/*TIME/DATE @Y30LB02*/')SKIP;
*             GO TO FINISH;    /*BRANCH TO END PROCESSING    @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('/*     MACMEAN  MSSC TRACE MACRO            '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)' 'MF(3)','
*             ' /*TRACE REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  TRACLEN  FIXED(31),/*LENG'
*             'TH OF TRACE REQ BLK = 10 HEX @Y30LB02*/')SKIP;
*             ANS('    2  TRACOPC  CHAR(1),'
*             '/*TRACE OPCODE=24 HEX @Y30LB02*/')SKIP;
*             ANS('    2  * CHAR(1) ,/*RESERVED  @Y30LB02*/')SKIP;
*             ANS('    2  TRACFLG BIT(16),'
*             '/*TWO BYTE ATTRIBUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  TRACEON BIT(1),/*TRACEON/OFF'
*             ' ATTRIBUTE @Y30LB02*/')SKIP;
*             ANS('       3  *      BIT(15),/*RESERVED AND'
*             ' MUST BE ZERO @Y30LB02*/')SKIP;
*             ANS('    2  TRACTIM  CHAR(8);'
*             '/*TIME AND DATE @Y30LB02*/')SKIP;
*             GO TO FINISH;    /*BRANCH TO END               @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      PROCESSING THE EXECUTE MACRO FORM                   @Y30LB02*/
*/*                                                          @Y30LB02*/
*EFORM:
*   IF MF(1) ^= 'E' THEN      /*EXECUTE FORM SPECIFIED?      @Y30LB02*/
*        GO TO SFORM;         /*NO,BRANCH,CK FOR STANDARD    @Y30LB02*/
*   IF MF(2) = '' THEN        /*LIST NAME SPECIFIED?         @Y30LB02*/
*        DO;                  /*NO,PRINNT ERROR MSG          @Y30LB02*/
*             ERSW=1;         /*SET ERROR SWITCH             @Y30LB02*/
*             RETCODE=12;     /*SET RETURN CODE              @Y30LB02*/
*             ANS MSG('  ICB612I - MF(2) MUST '
*                'CONTAIN REQ BLK NAME IF '
*                'EXEC MACRO FORM REQUESTED ')SKIP(3);     /*@Y30LB02*/
*             GO TO CKSW;     /*BRANCH TO CK SWITCH          @Y30LB02*/
*        END;                 /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                      /*                             @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC TRACE MACRO            '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*            '              @Y30LB02*/')SKIP;
*        ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*    IF MF(3) = 'COMPLETE' THEN  /*COMPLETE SPECIFIED?       @Y30LB02*/
*      DO;                       /*ZERO REQUSET BLOCK        @Y30LB02*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'    /*@Y30LB02*/
*        '/*ZERO OUT THE REQUEST BLOCK @Y30LB02*/')SKIP;
*      END;                      /*                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('RFY(TRACR1)RSTD;/*RESTRICT REG1 @Y30LB02*/')SKIP;
*        ANS('TRACR1=ADDR('MF(2)');/*R1 POINTER TO'
*        ' REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('TRACLEN= 'QUOTE(TRLEN)'X;/*LENGTH '
*        'OF TRACE REQUEST @Y30LB02*/')SKIP;
*        ANS('TRACOPC= 'QUOTE(TRACOP)'X;/*TRACE'
*        ' OPCODE @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*CKSW:
*   IF ERSW=1 THEN            /*ERROR SWITCH SET?            @Y30LB02*/
*        GO TO FINISH;        /*YES,END PROCESSING           @Y30LB02*/
*   ELSE                      /*NO,CONTINUE PROCESSING       @Y30LB02*/
*        GO TO COMPROC;       /*BRCH,CHECK PARAMETERS        @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN       /*STANDARD FORM SPECIFIED?     @Y30LB02*/
*     DO;                     /*NO,PRINT ERROR MESSAGE       @Y30LB02*/
*        ERSW=1;              /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET ERROR RETURN CODE        @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER '
*             'SPECIFIED, MUST BE L, E, OR NULL')SKIP;     /*@Y30LB02*/
*        GO TO CKSW2;         /*BRANCH TO CK SWITCH          @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS = '' THEN        /*FLAGS PARAMETERS SPECIFIED?  @Y30LB02*/
*     DO;                     /*NO,PRINT ERROR MESSAGE       @Y30LB02*/
*        ERSW=1;              /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED '
*        'FOR STANDARD FORM MACRO')SKIP;                   /*@Y30LB02*/
*        GO TO CKSW2;         /*BRANCH                       @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*   IF TIMDAT = '' THEN       /*TIME AND DATE SPECIFIED      @Y30LB02*/
*     DO;                     /*PRINT ERROR MESSAGE          @Y30LB02*/
*        ERSW=1;              /*SET ERROR SWITCH             @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE              @Y30LB02*/
*        ANS MSG('  ICB614I - TIMDAT MUST BE SPECIFIED'
*        ' FOR STANDARD FORM MACRO')SKIP;                  /*@Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*/*                                                          @Y30LB02*/
*CKSW2:
*/*                                                          @Y30LB02*/
*   IF ERSW = 1 THEN          /*ERROR SWITCH SET?            @Y30LB02*/
*        GO TO FINISH;        /*BRANCH TO END                @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TRACTEST = 1 THEN      /*STD FORM INVOKED BEFORE?     @Y30LB02*/
*     DO;                     /*YES,DON'T PRINT DECLARES     @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*     MACMEAN  MSSC TRACE MACRO            '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(TRACR1)RSTD;/*RESTRICT REG1 @Y30LB02*/')SKIP;
*        ANS('TRACR1=ADDR(TRACLEN);/*R1 PTR TO BLK @Y30LB02*/')SKIP;
*        ANS('TRACLEN= 'QUOTE(TRLEN)'X;/*LENGTH '
*        'OF TRACE REQUEST @Y30LB02*/')SKIP;
*        ANS('TRACOPC='QUOTE(TRACOP)'X;/*TRACE'
*        ' OPCODE @Y30LB02*/')SKIP;
*        GO TO COMPROC;       /*BRANCH TO CK PARAMETERS      @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                      /*1ST INVOC OF STD FORM        @Y30LB02*/
*     DO;                     /*PUT OUT THE DECLARES         @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*    MACMEAN  MSSC TRACE MACRO             '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(TRACR1)RSTD;/*RESTRICT REG1 @Y30LB02*/')SKIP;
*        ANS('TRACR1=ADDR(TRACLEN);/*R1 PTR  '
*        'TO LIST @Y30LB02*/')SKIP;
*        ANS('DCL 1 TRACLST  STATIC LOCAL,'
*        ' /*TRACE REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  TRACLEN  FIXED(31)INIT('QUOTE('10')
*        'X),/*LENGTH OF TRACE REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  TRACOPC  CHAR(1)INIT('QUOTE('24')
*        'X),/*TRACE OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  *      CHAR(1)INIT('QUOTE('00')
*        'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  TRACFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B),/*TWO BYTE ATTRI'
*        'BUTE AREA @Y30LB02*/')SKIP;
*        ANS('       3  TRACEON BIT(1),/*TRACEON/OFF'
*        ' ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('       3  *      BIT(15),/*RESERVED AND'
*        ' MUST BE ZERO @Y30LB02*/')SKIP;
*        ANS('    2  TRACTIM  CHAR(8) INIT('QUOTE
*        ('0000000000000000')'X);/*TIME/DATE @Y30LB02*/')SKIP;
*        TRACTEST=TRACTEST+1; /*INCREMENT STD FORM CTR       @Y30LB02*/
*        GO TO COMPROC;       /*BRCH TO CK PARAMETERS        @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      COMMON PROCESSING FOR EXECUTE AND STANDARD FORMS    @Y30LB02*/
*/*      THE FOLLOWING CODE WILL CHECK TO DETERMINE WHAT     @Y30LB02*/
*/*      PARAMETERS ARE SPECIFIED AND PLACE THE VALUE IN     @Y30LB02*/
*/*      THE REQUEST BLOCK                                   @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*COMPROC:
*   IF FLAGS ^= '' THEN      /*FLAGS SPECIFIED?              @Y30LB02*/
*        ANS('TRACFLG= 'FLAGS';/*VALUE OF FLAGS '
*        'PARAMETER @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF TIMDAT ^= '' THEN     /*TIME AND DATE SPECIFIED?      @Y30LB02*/
*        ANS('TRACTIM= 'TIMDAT';/*TIME/DATE PARM @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      THE FOLLOWING CODE WILL INVOKE SVC 126.             @Y30LB02*/
*/*      THE RETURN CODE IS SET AND PROCESSING IS ENDED      @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        ANS('SVC  (126);/*INVOKE SVC 126 @Y30LB02*/')SKIP;
*        ANS('RFY  TRACR1 UNRSTD;/*UNRESTRICT REG 1 @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:
*        RETURN CODE(RETCODE);                             /*@Y30LB02*/
*        %END;                                             /*@Y30LB02*/
./ ADD NAME=ICBTUNE
* %/* START OF SPECIFICATIONS****                              @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBTUNE                                   @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = TUNING MACRO                         @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = THIS MACRO WILL CAUSE TUNING                 @Y30LB02
.*     PARAMETERS TO BE MODIFIED OR DISPLAYED                  @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB AND TUN                            @Y30LB02
.*                                                             @Y30LB02
.*02     REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF          @Y30LB02
.*                              REGISTERS BY MACROS:           @Y30LB02
.*                              R0,R1,R14, AND R15             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = ASSEMBLER AND PLS                         @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBTUNE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE = SVC 126                                     @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT =                                                  @Y30LB02
.*                                                             @Y30LB02
.*  THE TUNING REQUEST IS ISSUED IF A HOST WISHES TO           @Y30LB02
.*  TO UPDATE SPECIFIED LRU TUNING PARAMETERS.  THIS           @Y30LB02
.*  FUNCTION ALSO HAS THE CAPABILITY TO DISPLAY SPECIFIC       @Y30LB02
.*  LRU TUNING PARAMETERS.                                     @Y30LB02
.*                                                             @Y30LB02
.*   MACRO SYNTAX                                              @Y30LB02
.*                                                             @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBTUNE  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBTUNE  FLAGS=ADDR/(R)        SDGNUM=ADDR/(R)               @Y30LB02
.*                               ECB=ADDR/(R)                  @Y30LB02
.*                               DATA=ADDR/(R)                 @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBTUNE  MF(E,NAME/(R)        MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*                              ECB=ADDR/(R)                   @Y30LB02
.*                              SDGNUM=ADDR/(R)                @Y30LB02
.*                              DATA=ADDR/(R)                  @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                                                             @Y30LB02
.*  RESTRICTION:                                               @Y30LB02
.*                                                             @Y30LB02
.*  THE MF PARAMETER IS SPECIFIED WITH THE LIST AND            @Y30LB02
.*  EXECUTE FORMS.  THE DEFAULT (NULL) WILL REPRESENT          @Y30LB02
.*  STANDARD FORM.  IF STANDARD FORM IS INDICATED, THEN        @Y30LB02
.*  THE FLAGS PARAMETER IS NOT OPTIONAL.                       @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTION.                           @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*  FLAGS - A 2 BYTE FIELD WHICH INDICATES THE FUNCTION TO     @Y30LB02
.*          BE PERFORMED.  (BITS 8, 9, 10 ARE MUTUALLY EX-     @Y30LB02
.*          EXCLUSIVE)  THE FORMAT OF THE FLAGS FIELD IS AS    @Y30LB02
.*          FOLLOWS:                                           @Y30LB02
.*                                                             @Y30LB02
.*  -----------------------------------------                  @Y30LB02
.*   X 0000000 X  X  X 00000                  @Y30LB02
.*  -----------------------------------------                  @Y30LB02
.*                                                             @Y30LB02
.*  BIT 0-------'1'B    MODIFY MODE                            @Y30LB02
.*              '0'B    DISPLAY MODE                           @Y30LB02
.*                                                             @Y30LB02
.*  BITS 1-7---         RESERVED AND MUST BE ZERO            @Y30LB02
.*                                                             @Y30LB02
.*  BIT 8-------'1'B    DISPLAY OR MODIFY THRESHOLDS           @Y30LB02
.*              '0'B    NO FUNCTION (DEFAULT)                  @Y30LB02
.*                                                             @Y30LB02
.*  BIT 9-------'1'B    DISPLAY OR MODIFY SLICE RANGE          @Y30LB02
.*                      PARAMETER                              @Y30LB02
.*              '0'B    NO FUNCTION (DEFAULT)                  @Y30LB02
.*                                                             @Y30LB02
.*  BIT 10------'1'B    DISPLAY OR MODIFY LRU CLOCK            @Y30LB02
.*                      RESOLUTION                             @Y30LB02
.*              '0'B    NO FUNCTION (DEFAULT)                  @Y30LB02
.*                                                             @Y30LB02
.*  BIT 11-15---        RESERVED AND MUST BE ZERO            @Y30LB02
.*                                                             @Y30LB02
.*  MODIFY MODE                                                @Y30LB02
.*                                                             @Y30LB02
.*  THRESHOLDS:  IF MODIFY IS SPECIFIED WITH BIT 8 ON, THEN    @Y30LB02
.*  THE UPPER AND LOWER THRESHOLD DELTAS SPECIFIED WITH THE    @Y30LB02
.*  DATA PARAMETER WILL REPLACE THE UPPER AND LOWER THRESHOLD  @Y30LB02
.*  DELTAS IN THE STAGING DRIVE GROUP PAGE AVAILABILITY BLOCK. @Y30LB02
.*                                                             @Y30LB02
.*  SLICE RANGES:  IF MODIFY IS SPECIFIED WITH BIT 9 ON, THEN  @Y30LB02
.*  THE RANGES SPECIFIED WITH THE 'DATA' PARAMETER WILL RE-    @Y30LB02
.*  PLACE THE CURRENT SLICE RANGE FIELD.                       @Y30LB02
.*                                                             @Y30LB02
.*  LRU TIME DELTA:  IF MODIFY IS SPECIFIED WITH BIT 10 ON,    @Y30LB02
.*  THEN THE NEW TIME DELTA SPECIFIED WITH THE DATA PARAMETER  @Y30LB02
.*  WILL REPLACE THE OLD IN THE IMPL RECORD ON THE DASD TABLE  @Y30LB02
.*  PACK.  IF THE NEW DELTA SUCCESSFULLY REPLACES THE OLD,     @Y30LB02
.*  THEN THE 'IN CORE' LRU DELTA WILL BE CHANGED TO AGREE      @Y30LB02
.*  WITH THE NEW DELTA.                                        @Y30LB02
.*                                                             @Y30LB02
.*  DISPLAY MODE                                               @Y30LB02
.*                                                             @Y30LB02
.*  A MESSAGE WILL BE RETURNED TO THE USER IN THE AREA         @Y30LB02
.*  PROVIDED BY THE ECB PARAMETER.  THE DATA WILL HAVE THE     @Y30LB02
.*  FOLLOWING FORMAT:                                          @Y30LB02
.*                                                             @Y30LB02
.*  THRESHOLD DELTAS FOR THE SPECIFIED DRIVE GROUP:            @Y30LB02
.*                                                             @Y30LB02
.*    BYTE 0  -   THE UPPER THRESHOLD DELTA                    @Y30LB02
.*    BYTE 1  -   THE LOWER THRESHOLD DELTA                    @Y30LB02
.*    BYTES 2,3 - UNUSED                                       @Y30LB02
.*                                                             @Y30LB02
.*  SLICE RANGES FOR THE SPECIFIED STAGING DRIVE GROUP:        @Y30LB02
.*    BYTE 0  -   LRU TIME DELTA                               @Y30LB02
.*    BYTES 1-3 - UNUSED                                       @Y30LB02
.*                                                             @Y30LB02
.*  SDGNUM -  STAGING DRIVE GROUP NUMBER:  A ONE BYTE FIELD    @Y30LB02
.*            THAT CONTAINS THE STAGING DRIVE GROUP DESIGNA-   @Y30LB02
.*            TION.  THIS PARAMETER NEED NOT BE SPECIFIED      @Y30LB02
.*            IF BIT 10 (MODIFY OR DISPLAY LRU CLOCK           @Y30LB02
.*            RESOLUTION) IS SPECIFIED.                        @Y30LB02
.*                                                             @Y30LB02
.*  ECB    -  EVENT CONTROL BLOCK:  THE NAME OF THE EVENT      @Y30LB02
.*            CONTROL BLOCK.  THE USER MUST DECLARE A          @Y30LB02
.*            MINIMUM 12 BYTES CONTIGUOUS AREA TO CONTAIN      @Y30LB02
.*            THE MESSAGE.  THIS PARAMETER IS REQUIRED FOR     @Y30LB02
.*            DISPLAY MODE ONLY.  (THE ECB AND APPENDED        @Y30LB02
.*            DATA AREA MUST BE IN COMMON CORE IN VS/2.)       @Y30LB02
.*            THE ECB IS POSTED WITH ONE OF THE FOLLOWING      @Y30LB02
.*            POST CODES:  71, 72, 73, 74, AND ETC.  THE       @Y30LB02
.*            POST CODE WILL BE PLACED IN THE LOW-ORDER BYTE   @Y30LB02
.*            OF THE ECB - '7F'X INDICATES SUCCESSFUL          @Y30LB02
.*            COMPLETION.  THE MSC DATA WILL BE MOVED TO       @Y30LB02
.*            CORE LOCATION ADDR(ECB)+4.  THE ECB AREA MUST    @Y30LB02
.*            BE CLEARED(SET TO BINARY 0) BEFORE INVOKING      @Y30LB02
.*            THE MACRO.                                       @Y30LB02
.*                                                             @Y30LB02
.*  DATA   -  A FOUR BYTE FIELD THAT CONTAINS INFORMATION      @Y30LB02
.*            TO MODIFY THE MSC MEMORY, OR THE MSC TABLE       @Y30LB02
.*            BLOCK.  THIS PARAMETER IS REQUIRED FOR THE       @Y30LB02
.*            MODIFY MODE AND HAS THE FOLLOWING FORMAT:        @Y30LB02
.*                                                             @Y30LB02
.*  IF THRESHOLDS ARE TO BE MODIFIED THEN:                     @Y30LB02
.*                                                             @Y30LB02
.*    BYTE 0  -   NEW UPPER THRESHOLD DELTA VALUE              @Y30LB02
.*    BYTE 1  -   NEW LOWER THRESHOLD DELTA VALUE              @Y30LB02
.*    BYTES 2-3 - RESERVED                                     @Y30LB02
.*                                                             @Y30LB02
.*  IF SLICE RANGES ARE TO BE MODIFIED THEN:                   @Y30LB02
.*                                                             @Y30LB02
.*    BYTES 0-3 - NEW SLICE RANGE VALUES                       @Y30LB02
.*                                                             @Y30LB02
.*  IF LRU CLOCK DELTA IS TO BE MODIFIED THEN:                 @Y30LB02
.*                                                             @Y30LB02
.*    BYTE 0  -   NEW LRU CLOCK DELTA VALUE                    @Y30LB02
.*    BYTE 1-3  - RESERVED                                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM      @Y30LB02
.*       THE REQUESTED FUNCTION                                @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*     ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*               SPECIFIED IN MF(2)                            @Y30LB02
.*     ICB604I:  WARNING ONLY THE MF PARAMETER IS              @Y30LB02
.*               VALID FOR LIST FORM                           @Y30LB02
.*     ICB607I:  FLAGS MUST BE SPECIFIED FOR STANDARD          @Y30LB02
.*               FORM MACRO                                    @Y30LB02
.*     ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME IF            @Y30LB02
.*               EXEC MACRO FORM REQUESTED                     @Y30LB02
.*     ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST BE       @Y30LB02
.*               L, E, OR NULL                                 @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = IHBINNRA                                  @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 & Y30LB02                  @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO
&SYMBOL  ICBTUNE &MF=,&FLAGS=,&SDGNUM=,&ECB=,&DATA=
         LCLB &ERSW               ERROR SWITCH                 @Y30LB02
         LCLC &TUNEU              TUNE MACRO INSTR INDX        @Y30LB02
&TUNEU   SETC 'TU'.'&SYSNDX'      ASSIGN CHARACTER VALUE       @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM,L MEANS           @Y30LB02
.*       THE LIST FORM, E REPRESENTS THE EXECUTE               @Y30LB02
.*       FORM AND THE DEFAULT IS STANDARD FORM                 @Y30LB02
.*                                                             @Y30LB02
         AIF  ('&MF(1)' NE 'L').EFORM       LIST FORM?         @Y30LB02
         AIF  ('&FLAGS' NE '' OR '&SDGNUM' NE '').WARN         @Y30LB02
         AIF  ('&ECB' NE '' OR '&DATA' NE '').WARN             @Y30LB02
         AGO  .LISTOK                                          @Y30LB02
.WARN    MNOTE 4,'  ICB604I - WARNING-ONLY THE MF  '           @Y30LB02
         MNOTE 4,'  PARAMETER IS VALID FOR LIST FORM '         @Y30LB02
.*                                                             @Y30LB02
.LISTOK  ANOP                                                  @Y30LB02
         AIF  ('&MF(2)' EQ 'MAP').LISTDS  MAPPING DSECT REQ?   @Y30LB02
*  MACMEAN  TUNING MACRO--INITIALIZED LIST FORM                @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS   0F                                               @Y30LB02
TUNELEN  DC   F'20'               LENGTH OF TUNE REQ BLK       @Y30LB02
TUNEOPCD DC   XL1'1C'             TUNING  FUNCTION OPCODE      @YM02853
TUNERES1 DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
TUNEFLAG DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
TUNESDGN DC   XL1'00'             1-BYTE SDGNUM AREA           @Y30LB02
TUNERES2 DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
TUNEASID DC   XL2'0000'           2-BYTE ASID AREA             @Y30LB02
TUNEECB  DC   XL4'00000000'       4-BYTE ECB AREA              @Y30LB02
TUNEDATA DC   XL4'00000000'       2-BYTE RESERVED AREA         @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.LISTDS  ANOP                                                  @Y30LB02
*  MACMEAN  TUNING MACRO--UNINITIALIZED LIST FORM              @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBTUNE  DSECT                                                 @Y30LB02
TUNELEN  DS   F                   LEN OF 20 BYTES              @Y30LB02
TUNEOPCD DS   XL1                 TUNING OPCODE                @YM02853
TUNERES1 DS   XL1                 1-BYTE RESERVE-ZERO          @Y30LB02
TUNEFLAG DS   XL2                 2-BYTE FLAGS AREA            @Y30LB02
TUNESDGN DS   XL1                 1-BYTE SDGNUM AREA           @Y30LB02
TUNERES2 DS   XL1                 1-BYTE RESERVED AREA         @Y30LB02
TUNEASID DS   XL2                 2-BYTE ASID AREA             @Y30LB02
TUNEECB  DS   A                   4-BYTE ECB AREA              @Y30LB02
TUNEDATA DS   XL4                 4-BYTE DATA AREA             @Y30LB02
         AGO  .FINISH                                          @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING PROCESSING IS ACCOMPLISHED FOR THE      @Y30LB02
.*       EXECUTABLE MACRO FORM                                 @Y30LB02
.*                                                             @Y30LB02
.EFORM   AIF  ('&MF(1)' NE 'E').SFORM       EXECUTE FORM?      @Y30LB02
         AIF  ('&MF(2)' EQ '').EXFAIL       MF(2) NULL?        @Y30LB02
*  MACMEAN  TUNING MACRO--EXECUTE FORM                         @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)          LD ADDR OF REQUEST BLK       @Y30LB02
         LA   0,20                LD LEN OF TUNE BLK           @Y30LB02
         ST   0,0(1)              STORE LEN IN REQ BLK         @Y30LB02
         MVI  4(1),X'1C'          LD TUNING OPCODE IN BLK      @YM02853
         AGO  .CKSW1                                           @Y30LB02
.*                                                             @Y30LB02
.EXFAIL  ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB612I - MF(2) MUST CONTAIN REQ BLK '    @Y30LB02
         MNOTE 12,'  NAME IF EXEC MACRO FORM REQUESTED '       @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
.*                                                             @Y30LB02
.CKSW1   AIF  (&ERSW).FINISH      IF ERROR-END PROCESSING      @Y30LB02
         AGO  .COMMON                                          @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF THE STANDARD FORM MACRO                 @Y30LB02
.*                                                             @Y30LB02
.SFORM   AIF  ('&MF(1)' NE '').BADFORM      STANDARD FORM?     @Y30LB02
         AIF  ('&FLAGS' NE '').CKSW2      FLAGS SPECIFIED?     @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB607I - FLAGS MUST BE SPECIFIED '       @Y30LB02
         MNOTE 12,'  FOR STANDARD FORM MACRO '                 @Y30LB02
         AGO  .CKSW2                                           @Y30LB02
.*                                                             @Y30LB02
.BADFORM ANOP                                                  @Y30LB02
&ERSW    SETB 1                   SET ERROR SWITCH TO 1        @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL.'        @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS TO DETERMINE IF THE ERROR   @Y30LB02
.*       SWITCH IS ON.  IF YES, PROCESSING IS TERMINATED,      @Y30LB02
.*       OTHERWISE STANDARD FORM MACRO PROCESSING WILL BE      @Y30LB02
.*       CONTINUE                                              @Y30LB02
.*                                                             @Y30LB02
.CKSW2   AIF  (&ERSW).FINISH      IF YES-END PROCESSING        @Y30LB02
*  MACMEAN TUNING MACRO--STANDARD FORM                         @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL  1,&TUNEU            LD R1 WITH ADDR REQ BLK      @Y30LB02
TUNELEN  DC   A(&TUNEU-*)         LEN OF TUN REQ BLK           @Y30LB02
TUNEOPCD DC   XL1'1C'             TUNING  FUNCTION OPCODE      @YM02853
TUNERES1 DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
TUNEFLAG DC   XL2'0000'           2-BYTE FLAGS AREA            @Y30LB02
TUNESDGN DC   XL1'00'             1-BYTE SDGNUM AREA           @Y30LB02
TUNERES2 DC   XL1'00'             1-BYTE RESERVED AREA         @Y30LB02
TUNEASID DC   XL2'0000'           2-BYTE ASID AREA             @Y30LB02
TUNEECB  DC   XL4'00000000'       4-BYTE ECB AREA              @Y30LB02
TUNEDATA DC   XL4'00000000'       2-BYTE RESERVED AREA         @Y30LB02
&TUNEU   EQU  *                                                @Y30LB02
.*                                                             @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR VALID PARAMETERS IF     @Y30LB02
.*       STANDARD OR EXECUTE FORM MACRO IS SPECIFIED.          @Y30LB02
.*       IF PARAMETERS ARE SPECIFIED, THEY WILL BE STORED      @Y30LB02
.*       IN THE REQUEST BLOCK.                                 @Y30LB02
.*                                                             @Y30LB02
.COMMON  AIF  ('&FLAGS' EQ '').SDGN   FLAGS SPECIFIED?         @Y30LB02
         AIF  ('&FLAGS'(1,1) EQ '(').FLREG   FLAGS REGFORM?    @Y30LB02
         MVC  6(2,1),&FLAGS       PUT FLAGS IN REQ BLOCK       @Y30LB02
         AGO  .SDGN               BRANCH TO CK HOSTID          @Y30LB02
.*                                                             @Y30LB02
.FLREG   ANOP                                                  @Y30LB02
         MVC  6(2,1),0(&FLAGS(1)) REGFORM PLACE FLAGS IN BLK   @Y30LB02
.*                                                             @Y30LB02
.SDGN    AIF  ('&SDGNUM' EQ '').CKECB       SDGNUM SPECIFIED?  @Y30LB02
         AIF  ('&SDGNUM'(1,1) EQ '(').HREG  REGISTER FORM?     @Y30LB02
         MVC  8(1,1),&SDGNUM      ADDRFORM-ST SDGNUM IN BLK    @Y30LB02
         AGO  .CKECB                                           @Y30LB02
.*                                                             @Y30LB02
.HREG    ANOP                                                  @Y30LB02
         MVC  8(1,1),0(&SDGNUM(1)) REGFORM-ST SDGNUM IN BLK    @Y30LB02
.*                                                             @Y30LB02
.CKECB   AIF  ('&ECB' EQ '').CKDATA       ECB SPECIFIED?       @Y30LB02
         AIF  ('&ECB'(1,1) EQ '(').EREG   REGISTER FORM?       @Y30LB02
         LA   15,&ECB             LOAD ECB IN REG 15           @Y30LB02
         ST   15,12(1)            ST ECB IN REQUEST BLK        @Y30LB02
         AGO  .CKDATA                                          @Y30LB02
.*                                                             @Y30LB02
.EREG    ANOP                                                  @Y30LB02
         ST   &ECB,12(1)          REGFORM-ST ECB IN BLK        @Y30LB02
.*                                                             @Y30LB02
.CKDATA  AIF  ('&DATA' EQ '').INVOKE      DATA SPECIFIED?      @Y30LB02
         AIF  ('&DATA'(1,1) EQ '(').DREG  REGISTER FORM?       @Y30LB02
         MVC  16(4,1),&DATA       MOVE DATA IN REQ BLK         @Y30LB02
         AGO  .INVOKE                                          @Y30LB02
.*                                                             @Y30LB02
.DREG    ANOP                                                  @Y30LB02
         MVC  16(4,1),0(&DATA(1)) REGFORM-PUT DATA IN BLK      @Y30LB02
.INVOKE  ANOP                                                  @Y30LB02
         SVC  126                 INVOKE THE SVC               @Y30LB02
.FINISH  MEND                                                  @Y30LB02
**/
*/*                                                          @Y30LB02*/
*   ICBTUNE: MACRO KEYS(MF,FLAGS,SDGNUM,ECB,DATA);         /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                     EXTERNAL DECLARES                    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      TUNETES IS USED TO DETERMINE WHETHER THE STANDARD   @Y30LB02*/
*/*      FORM MACRO HAS BEEN INVOKED MORE THAN ONCE BY THE   @Y30LB02*/
*/*      SAME CALLER.                                        @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      TUTESTR1 WILL BE USED TO DETERMINE IF IT IS NECES-  @Y30LB02*/
*/*      SARY TO DECLARE R1 OR WHETHER IT IS ALREADY DCLD    @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL  TUTESTR1  FIXED  EXT;    /*REG1 DECLARE COUNTER     @Y30LB02*/
*   DCL  TUNETES  FIXED  EXT;     /*STANDARD INVOC COUNTER   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      INTERNAL DECLARES                                   @Y30LB02*/
*   DCL  OPCODE   CHAR;      /*DEFINE TUNE OPCODE            @Y30LB02*/
*   DCL  TUNLEN  CHAR;       /*DECLARE LENGTH OF ORDER       @Y30LB02*/
*   DCL  ERSW     FIXED;     /*DECLARE ERROR COND SWITCH     @Y30LB02*/
*   DCL  RETCODE  FIXED;     /*DECLARE RETURN CODE AREA      @Y30LB02*/
*   DCL  CTR      FIXED;     /*DECLARE CTR FOR LIST FORM     @Y30LB02*/
*        ERSW=0;             /*INITIALIZE ERROR SWITCH       @Y30LB02*/
*        RETCODE=0;          /*INITIALIZE RETURN CODE        @Y30LB02*/
*        TUNLEN='14';        /*INITIALIZE LENGTH FIELD       @Y30LB02*/
*        OPCODE='1C';        /*INITIALIZE OPCODE VARIABLE    @YM02853*/
*        CTR=0;              /*INITIALIZE INCREMENT CTR      @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*      CHECK FOR VALID MACRO FORM--E INDICATES EXECUTE     @Y30LB02*/
*/*      FORM, L INDICATES LIST FORM AND IF THE MF PARA-     @Y30LB02*/
*/*      METER IS NULL THE STANDARD FORM MACRO IS INVOKED    @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        IF TUTESTR1=0 THEN  /*REG1 DECLARED BEFORE?         @Y30LB02*/
*             DO;            /*                              @Y30LB02*/
*                  ANS('DCL TUNER1 REG(1) PTR ;/*PTR'
*                  ' TO REQUEST BLOCK @Y30LB02*/')SKIP;
*                  TUTESTR1=TUTESTR1+1;/*INCREMENT CTR       @Y30LB02*/
*             END;           /*                              @Y30LB02*/
*   IF MF(1) ^= 'L' THEN     /*LIST FORM?                    @Y30LB02*/
*        GO TO EFORM;        /*CHECK FOR EXECUTE FORM        @Y30LB02*/
*   IF MF(2) = '' THEN       /*LIST NAME SPECIFIED           @Y30LB02*/
*        DO;                 /*SET UP ERROR MESSAGE          @Y30LB02*/
*             ERSW=1;        /*SET ERROR SWITCH ON           @Y30LB02*/
*             RETCODE=12;    /*SET RETURN CODE TO 12         @Y30LB02*/
*             ANS MSG('  ICB602I - A NAME FOR THE REQUEST BLOCK '
*             'MUST BE SPECIFIED IN MF(2) ')SKIP;          /*@Y30LB02*/
*             GO TO FINISH;  /*BRANCH TO END                 @Y30LB02*/
*        END;                /*                              @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*  THE FOLLOWING CODE CHECKS TO INSURE THAT THE USER       @Y30LB02*/
*/*  DOES NOT ATTEMPT TO PASS ARGUMENTS OTHER THAN THE MF    @Y30LB02*/
*/*  PARAMETER ON THE LIST FORM MACRO INVOCATION.  IF A      @Y30LB02*/
*/*  VIOLATION IS DETECTED, A WARNING MESSAGE WILL BE        @Y30LB02*/
*/*  GIVEN AND PROCESSING WILL CONTINUE.                     @Y30LB02*/
*/********************************************************   @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS ^= '' THEN      /*IS THE FLAGS AREA NULL        @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF SDGNUM ^= '' THEN     /*IS THE SDGNUM AREA NULL       @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF ECB ^= '' THEN        /*IS THE ECB AREA NULL          @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF DATA ^= '' THEN       /*IS THE DATA AREA NULL         @Y30LB02*/
*        CTR=CTR+1;          /*INCREMENT PARAMETER COUNTER   @Y30LB02*/
*   IF CTR > 0 THEN          /*INCREMENT CTR > ZERO?         @Y30LB02*/
*        DO;                 /*SET UP ERROR MESSAGE          @Y30LB02*/
*          RETCODE=4;     /*SET RETURN CODE TO 4             @Y30LB02*/
*          ANS MSG('  ICB604I - WARNING-ONLY THE MF PARAMETER'
*             ' IS VALID FOR LIST FORM')SKIP;              /*@Y30LB02*/
*        END;                /*                              @Y30LB02*/
*   IF MF(3) ^= '' THEN      /*ARGUMENT THREE SPECIFIED      @Y30LB02*/
*        GO TO ATTRLST;      /*IF YES, THEN BRANCH           @Y30LB02*/
*/*                                                          @Y30LB02*/
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('/*MACMEAN  MSSC TUNING MACRO                '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)'  STATIC LOCAL,'
*             ' /*TUNING REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  TUNELEN  FIXED(31)INIT('QUOTE
*             ('14')'X),/*LEN OF TUNING REQ BLK @Y30LB02*/')SKIP;
*             ANS('    2  TUNEOPCD CHAR(1)INIT('QUOTE('1C')
*             'X),/*TUNING OPCODE @YM02853*/')SKIP;
*             ANS('    2  TUNERES1 CHAR(1)INIT('QUOTE('00')'X),'
*             '/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  TUNEFLAG BIT(16)INIT('QUOTE
*             ('0000000000000000')'B),/*TWO BYTE ATTRIBUTE '
*             'AREA @Y30LB02*/')SKIP;
*             ANS('       3  TUNMODE BIT(1),/*IF ON, THEN'
*             ' MODIFY MODE-OFF RESULT IN DISPLAY @Y30LB02*/')SKIP;
*             ANS('       3  TUNRES1 BIT(7),/*SEVEN BITS'
*             ' RESERVED @Y30LB02*/')SKIP;
*             ANS('       3  TUNTHRES BIT(1),/*DISPLAY OR'
*             ' MODIFY THRESHOLDS @Y30LB02*/')SKIP(1);
*             ANS('       3  TUNSLICE BIT(1),/*DISPLAY OR'
*             ' MODIFY SLICE RANGES @Y30LB02*/')SKIP(1);
*             ANS('       3  TUNCLOCK BIT(1),/*DISPLAY OR'
*             ' MODIFY LRU CLOCK @Y30LB02*/')SKIP(1);
*             ANS('       3  TUNRES2 BIT(5),/*5 BITS'
*             ' RESERVED @Y30LB02*/')SKIP;
*             ANS('    2  TUNESDGN  FIXED(8) INIT(0),'
*             '/*STAGING DRIVE GROUP NUMBER @Y30LB02*/')SKIP;
*             ANS('    2  TUNERES2  CHAR(1) INIT('QUOTE
*             ('00')'X),/*RESERVED AREA @Y30LB02*/')SKIP;
*             ANS('    2  TUNEASID  CHAR(2) INIT('QUOTE
*             ('0000')'X),/*ADDRESS SPACE ID @Y30LB02*/')SKIP;
*             ANS('    2  TUNEECB  FIXED(31) INIT(0),'
*             '/*EVENT CONTROL BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  TUNEDATA  FIXED(31)INIT(0);'
*             '/*DATA PARAMETER @Y30LB02*/')SKIP;
*             GO TO FINISH;    /*BRANCH TO END               @Y30LB02*/
*/*                                                          @Y30LB02*/
*ATTRLST:
*/*                                                          @Y30LB02*/
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('/*MACMEAN  MSSC TUNING MACRO                '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*                 '               @Y30LB02*/')SKIP;
*             ANS('/*******************************************'
*                 '************** @Y30LB02*/')SKIP;
*             ANS('DCL 1 'MF(2)' 'MF(3)','
*             ' /*TUNING REQUEST BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  TUNELEN  FIXED(31),'
*             '/*LEN OF TUNING REQ BLK 20 BYTES @Y30LB02*/')SKIP;
*             ANS('    2  TUNEOPCD CHAR(1),'
*             '/*TUNING MACRO OPCODE @YM02853*/')SKIP;
*             ANS('    2  TUNERES1 CHAR(1),'
*             '/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*             ANS('    2  TUNEFLAG BIT(16),'
*             '/*TWO BYTE ATTRIBUTE AREA @Y30LB02*/')SKIP;
*             ANS('       3  TUNMODE BIT(1),/*IF ON, THEN'
*             ' MODIFY MODE-OFF RESULT IN DISPLAY @Y30LB02*/')SKIP;
*             ANS('       3  TUNRES1 BIT(7),/*SEVEN BITS'
*             ' RESERVED @Y30LB02*/')SKIP;
*             ANS('       3  TUNTHRES BIT(1),/*DISPLAY OR'
*             ' MODIFY THRESHOLDS @Y30LB02*/')SKIP;
*             ANS('       3  TUNSLICE BIT(1),/*DISPLAY OR'
*             ' MODIFY SLICE RANGES @Y30LB02*/')SKIP;
*             ANS('       3  TUNCLOCK BIT(1),/*DISPLAY OR'
*             ' MODIFY LRU CLOCK @Y30LB02*/')SKIP;
*             ANS('       3  TUNRES2 BIT(5),/*5 BITS'
*             ' RESERVED @Y30LB02*/')SKIP;
*             ANS('    2  TUNESDGN  FIXED(8) ,'
*             '/*STAGING DRIVE GROUP NUMBER @Y30LB02*/')SKIP;
*             ANS('    2  TUNERES2  CHAR(1) ,'
*             '/*RESERVED AREA @Y30LB02*/')SKIP;
*             ANS('    2  TUNEASID  CHAR(2) ,'
*             '/*ADDRESS SPACE ID @Y30LB02*/')SKIP;
*             ANS('    2  TUNEECB  FIXED(31) ,'
*             '/*EVENT CONTROL BLOCK @Y30LB02*/')SKIP;
*             ANS('    2  TUNEDATA  FIXED(31);'
*             '/*DATA PARAMETER @Y30LB02*/')SKIP;
*             GO TO FINISH;    /*BRANCH TO END               @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      PROCESSING THE EXECUTE MACRO FORM                   @Y30LB02*/
*/*                                                          @Y30LB02*/
*EFORM:
*   IF MF(1) ^= 'E' THEN       /*EXECUTE FORM SPECIFIED?     @Y30LB02*/
*        GO TO SFORM;          /*NO, BRANCH TO CK FOR STD    @Y30LB02*/
*   IF MF(2) = '' THEN         /*LIST NAME SPECIFIED?        @Y30LB02*/
*        DO;                   /*SETUP ERROR MESSAGE         @Y30LB02*/
*             ERSW=1;          /*SET ERROR SWITCH ON         @Y30LB02*/
*             RETCODE=12;      /*SET RETURN CODE TO 12       @Y30LB02*/
*             ANS MSG('  ICB612I - MF(2) MUST CONTAIN '
*                'REQ BLK NAME IF EXEC '
*                'MACRO FORM REQUESTED ')SKIP;             /*@Y30LB02*/
*             GO TO CKSW;      /*BRANCH TO CK ERROR SWITCH   @Y30LB02*/
*        END;                  /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE              /*CONTINUE EXECUTE PROCESSING          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC TUNING MACRO                '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*            '               @Y30LB02*/')SKIP;
*        ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*        ANS('RFY(TUNER1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('TUNER1=ADDR('MF(2)');/*R1 POINTER TO'
*        ' REQUEST BLOCK @Y30LB02*/')SKIP;
*   IF MF(3) = 'COMPLETE' THEN  /*COMPLETE SPECIFIED?        @Y30LB02*/
*     DO;                       /*PREPARE TO ZERO BLK        @Y30LB02*/
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';'
*        '/*ZERO REQUEST BLOCK @Y30LB02*/')SKIP;
*     END;                      /*                           @Y30LB02*/
*        ANS('TUNELEN= 'QUOTE(TUNLEN)'X;/*LENGTH '
*        ' OF TUNING REQUEST @Y30LB02*/')SKIP;
*        ANS('TUNEOPCD= 'QUOTE(OPCODE)'X;/*TUNING'
*        ' OPCODE @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*CKSW:
*   IF ERSW=1 THEN          /*IS ERROR SWITCH ON?            @Y30LB02*/
*        GO TO FINISH;      /*YES, BRANCH TO END             @Y30LB02*/
*   ELSE                    /*PROCESS PARAMETERS             @Y30LB02*/
*        GO TO COMPROC;     /*BRANCH TO PROCESS PARAMETERS   @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN     /*STANDARD FORM?                 @Y30LB02*/
*     DO;                   /*                               @Y30LB02*/
*        ERSW=1;            /*SET ERROR SWITCH TO 1          @Y30LB02*/
*        RETCODE=12;        /*SET RETURN CODE TO 12          @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER'
*                ' SPECIFIED, MUST BE L,E, OR NULL')SKIP;  /*@Y30LB02*/
*        GO TO CKSW2;       /*BRANCH TO CK SWITCH            @Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF FLAGS = '' THEN      /*FLAGS SPECIFIED?               @Y30LB02*/
*     DO;                   /*                               @Y30LB02*/
*        ERSW=1;            /*SET ERROR SWITCH TO 1          @Y30LB02*/
*        RETCODE=12;        /*SET RETURN CODE TO 12          @Y30LB02*/
*        ANS MSG('  ICB607I - FLAGS MUST BE SPECIFIED  '
*        'FOR STANDARD FORM MACRO ')SKIP;                  /*@Y30LB02*/
*        GO TO CKSW2;       /*BRANCH TO CK SWITCH            @Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*/*                                                          @Y30LB02*/
*CKSW2:
*/*                                                          @Y30LB02*/
*   IF ERSW = 1 THEN        /*ERROR SWITCH ON?               @Y30LB02*/
*        GO TO FINISH;      /*YES, BRANCH TO END             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TUNETES = 1 THEN     /*STANDARD FORM INVOKED BEFORE?  @Y30LB02*/
*     DO;                   /*DO NOT PUT OUT DECLARES        @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC TUNING MACRO                '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(TUNER1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('TUNER1=ADDR(TUNELEN);/*R1 PTR TO BLK @Y30LB02*/')SKIP;
*        ANS('TUNELEN= 'QUOTE(TUNLEN)'X;/*LENGTH OF '
*        'TUNING REQUEST @Y30LB02*/')SKIP;
*        ANS('TUNEOPCD='QUOTE(OPCODE)'X;/*TUNING'
*        ' OPCODE @Y30LB02*/')SKIP;
*        GO TO COMPROC;       /*BRANCH TO CK PARAMETERS      @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                      /*PUT OUT DECLARES             @Y30LB02*/
*     DO;                     /*                             @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC TUNING MACRO                '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE STANDARD FORM - TUNING MACRO  '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*        ANS('RFY(TUNER1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('TUNER1=ADDR(TUNELEN);/*R1 PTR  '
*        'TO LIST @Y30LB02*/')SKIP;
*        ANS('DCL 1 TUNELST  STATIC LOCAL,'
*        ' /*TUNING REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  TUNELEN  FIXED(31)INIT('QUOTE
*        ('14')'X),/*LEN OF TUNING REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  TUNEOPCD CHAR(1)INIT('QUOTE
*        ('1C')'X),/*TUNING MACRO OPCODE @YM02853*/')SKIP;
*        ANS('    2  TUNERES1 CHAR(1)INIT('QUOTE
*        ('00')'X),/*RESERVED AND ZERO @Y30LB02*/')SKIP;
*        ANS('    2  TUNEFLAG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B),/*TWO BYTE ATTRI'
*        'BUTE AREA @Y30LB02*/')SKIP;
*        ANS('       3  TUNMODE BIT(1),/*IF ON, THEN'
*        ' MODIFY MODE-OFF RESULT IN DISPLAY @Y30LB02*/')SKIP;
*        ANS('       3  TUNRES1 BIT(7),/*SEVEN BITS'
*        ' RESERVED @Y30LB02*/')SKIP;
*        ANS('       3  TUNTHRES BIT(1),/*DISPLAY OR'
*        ' MODIFY THRESHOLDS @Y30LB02*/')SKIP;
*        ANS('       3  TUNSLICE BIT(1),/*DISPLAY OR'
*        ' MODIFY SLICE RANGES @Y30LB02*/')SKIP;
*        ANS('       3  TUNCLOCK BIT(1),/*DISPLAY OR'
*        ' MODIFY LRU CLOCK @Y30LB02*/')SKIP;
*        ANS('       3  TUNRES2 BIT(5),/*5 BITS'
*        ' RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  TUNESDGN  FIXED(8) INIT(0),'
*        '/*STAGING DRIVE GROUP NUMBER @Y30LB02*/')SKIP;
*        ANS('    2  TUNERES2  CHAR(1) INIT('QUOTE
*        ('00')'X),/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  TUNEASID  CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ADDRESS SPACE ID @Y30LB02*/')SKIP;
*        ANS('    2  TUNEECB  FIXED(31) INIT(0),'
*        '/*EVENT CONTROL BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  TUNEDATA  FIXED(31)INIT(0);'
*        '/*DATA PARAMETER @Y30LB02*/')SKIP;
*        TUNETES=TUNETES+1;   /*INCREMENT INVOCATION CTR     @Y30LB02*/
*        GO TO COMPROC;       /*BRANCH TO CHECK PARAMETERS   @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*/*      COMMON PROCESSING FOR EXECUTE AND STANDARD FORMS    @Y30LB02*/
*/*      THE FOLLOWING CODE WILL CHECK TO DETERMINE WHAT     @Y30LB02*/
*/*      PARAMETERS ARE SPECIFIED AND PLACE THE VALUE IN     @Y30LB02*/
*/*      THE REQUEST BLOCK                                   @Y30LB02*/
*/*********************************************************  @Y30LB02*/
*COMPROC:
*   IF FLAGS ^= '' THEN       /*FLAGS SPECIFIED?             @Y30LB02*/
*        ANS('TUNEFLAG= 'FLAGS';/*VALUE OF FLAGS '
*        'PARAMETER @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF SDGNUM ^= '' THEN      /*STAGING DRIVE GROUP SPECD    @Y30LB02*/
*        ANS('TUNESDGN= 'SDGNUM';/*STAGING DRIVE'
*        ' GROUP NUMBER LOADED @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF DATA ^= '' THEN        /*DATA SPECIFIED?              @Y30LB02*/
*        ANS('TUNEDATA= 'DATA';/*VALUE OF DATA '
*        'PARAMETER @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF ECB ^= '' THEN         /*ECB SPECIFIED?               @Y30LB02*/
*        ANS('TUNEECB=ADDR'ECB';/*EVENT CONTROL'
         ' BLOCK ADDRESS LOADED @Y30LB02*/')SKIP;
*/********************************************************   @Y30LB02*/
*/*      THIS SECTION OF CODE WILL INVOKE SVC 126 AND        @Y30LB02*/
*/*      SET THE PROPER RETURN CODE, THEN END PROCESSING     @Y30LB02*/
*/********************************************************   @Y30LB02*/
*        ANS('SVC (126);/*INVOKE THE SVC  @Y30LB02*/')SKIP;
*        ANS('RFY (TUNER1)UNRSTD;/*UNRSTD REG ONE  @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:
*        RETURN CODE(RETCODE);   /*SET THE RETURN CODE       @Y30LB02*/
*        %END;                   /*                          @Y30LB02*/
./ ADD NAME=ICBVARY
* %/*  START OF SPECIFICATIONS****                             @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-NAME = ICBVARY                                   @Y30LB02
.*                                                             @Y30LB02
.*01   DESCRIPTIVE-NAME = VARYON/VARYOFF MACRO                 @Y30LB02
.*                                                             @Y30LB02
.*01   COPYRIGHT = NONE                                        @Y30LB02
.*                                                             @Y30LB02
.*01   STATUS = OS/VS1 RELEASE 4, OS/VS2 RELEASE 3             @Y30LB02
.*                                                             @Y30LB02
.*01   FUNCTION = REQUEST VARYON/VARYOFF OF SS1 DEVICES        @Y30LB02
.*                BY THE MSC                                   @Y30LB02
.*                                                             @Y30LB02
.*01   NOTES = AS FOLLOWS:                                     @Y30LB02
.*                                                             @Y30LB02
.*02     CODE = MACRO IS BILINGUALLY CODED                     @Y30LB02
.*                                                             @Y30LB02
.*02     RESTRICTIONS = THE FOLLOWING PREFIXES SHOULD BE       @Y30LB02
.*                      AVOIDED IN THE USER'S INVOCATION:      @Y30LB02
.*                      ICB, VON, AND VOF.                     @Y30LB02
.*                                                             @Y30LB02
.*02   REGISTER-CONVENTIONS = FOLLOWS NORMAL USE OF REGISTERS  @Y30LB02
.*                              BY MACROS: R0,R1,R14, AND R15  @Y30LB02
.*                                                             @Y30LB02
.*01   MODULE-TYPE = MACRO                                     @Y30LB02
.*                                                             @Y30LB02
.*02     PROCESSOR = PLS2 AND ASSEMBLER                        @Y30LB02
.*                                                             @Y30LB02
.*02     ATTRIBUTES = REUSABLE                                 @Y30LB02
.*                                                             @Y30LB02
.*02     ENTRY-POINT = ICBVARY                                 @Y30LB02
.*                                                             @Y30LB02
.*02     PURPOSE = THE VARY ON REQUEST NOTIFIES THE MSS        @Y30LB02
.*       THAT IT CAN START USING  A SPECIFIED ADDRESSABLE      @Y30LB02
.*       UNIT; THE VARY OFF REQUEST NOTIFIES THE MSS TO        @Y30LB02
.*       STOP USING A SPECIFIED ADDRESSABLE UNIT (E.G.         @Y30LB02
.*       MSF, DRD, DASD UNIT).                                 @Y30LB02
.*                                                             @Y30LB02
.*02     LINKAGE = SVC 126                                     @Y30LB02
.*                                                             @Y30LB02
.*01  INPUT = PARAMETERS SPECIFIED ON THE PLS/BAL MACRO        @Y30LB02
.*            INVOCATION                                       @Y30LB02
.*                                                             @Y30LB02
.* VARY-ON:  THIS REQUEST IS ISSUED WHEN                       @Y30LB02
.*  A UNIT PREVIOUSLY ADDRESSABLE TO THE MSC                   @Y30LB02
.*  IS AVAILABLE FOR USE.  THE UNIT SPECIFIED MAY BE           @Y30LB02
.*  EITHER A  SUBSYSTEM DASD, DRD, CONTROLLER, STAGING         @Y30LB02
.*  ADAPTER(SA), MSF OR UC0 OF A MSF.                          @Y30LB02
.*  VARY-ON COMPLETION IS INDICATED BY DEVICE END.             @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* VARY-OFF:  THIS REQUEST IS ISSUED WHEN THE                  @Y30LB02
.*  MSC IS TO STOP USING A  SPECIFIC UNIT.  THE UNIT           @Y30LB02
.*  SPECIFIED MAY BE EITHER A SUBSYSTEM DASD, DRD,             @Y30LB02
.*  CONTROLLER, STAGING ADAPTER(SA), MSF OR UC0 OF A           @Y30LB02
.*  MSF.  VARY-OFF COMPLETION IS INDICATED BY DEVICE           @Y30LB02
.*  END, EXCEPT FOR A DASD WITH THE STAGING DASD ATTRIBUTE.    @Y30LB02
.*                                                             @Y30LB02
.* MACRO SYNTAX                                                @Y30LB02
.*   LIST FORM                                                 @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBVARY  MF=L - (BAL)          MF=(L,MAP) - BAL              @Y30LB02
.*         MF(L,NAME/(R))-PLS    MF(L,NAME/(R),ATTR)-PLS       @Y30LB02
.*         TYPE=VON/VOF                                        @Y30LB02
.*                                                             @Y30LB02
.*   STANDARD FORM                                             @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBVARY  TYPE=VON/VOF          ECB=ADDR/(R)                  @Y30LB02
.*         SSID=ADDR/(R)         FLAGS=ADDR/(R)                @Y30LB02
.*                               RUA=ADDR/(R)                  @Y30LB02
.*                                                             @Y30LB02
.* EXECUTE FORM                                                @Y30LB02
.*                                                             @Y30LB02
.* VERB    REQUIRED PARMS        OPTIONAL PARMS                @Y30LB02
.*                                                             @Y30LB02
.*ICBVARY  MF(E,NAME/(R))       MF(E,NAME/(R),COMPLETE)-PLS    @Y30LB02
.*         TYPE=VON/VOF         SSID=ADDR/(R)                  @Y30LB02
.*                              ECB=ADDR/(R)                   @Y30LB02
.*                              RUA=ADDR/(R)                   @Y30LB02
.*                              FLAGS=ADDR/(R)                 @Y30LB02
.*                                                             @Y30LB02
.*   KEYWORD PARAMETERS:                                       @Y30LB02
.*                                                             @Y30LB02
.*   MF  -  MACRO FORMAT: THIS PARAMETER DESCRIBES THE         @Y30LB02
.*          MACRO FORMAT AND MAY GIVE THE ADDRESS OR           @Y30LB02
.*          ADDRESS IN A REGISTER WHERE THE REQUEST BLOCK      @Y30LB02
.*          IS STORED.                                         @Y30LB02
.*                                                             @Y30LB02
.*          L - LIST FORM: THE EXPANSION OF THE L-FORM         @Y30LB02
.*              MACRO WILL RESULT IN A REQUEST BLOCK WITH      @Y30LB02
.*              THE ONLY NON-ZERO FIELDS BEING THE OPCODE      @Y30LB02
.*              AND LENGTH FIELDS.                             @Y30LB02
.*                                                             @Y30LB02
.*          (1) 'MAP' - IF MAP IS SPECIFIED WITH THE           @Y30LB02
.*              ASSEMBLER MACRO CALL A DSECT EQUIVALENT TO     @Y30LB02
.*              A MAPPING MACRO IS PRODUCED.                   @Y30LB02
.*                                                             @Y30LB02
.*          (2) NAME - THE MACRO INVOKER MUST SPECIFY A        @Y30LB02
.*              NAME FOR HIS STRUCTURE WHEN INVOKING THE       @Y30LB02
.*              PLS LIST FORM.                                 @Y30LB02
.*                                                             @Y30LB02
.*          (3) ATTRIBUTE - THE MACRO WILL PLACE ANY PLS       @Y30LB02
.*              ATTRIBUTE SPECIFIED IN THE MACRO INVOCATION    @Y30LB02
.*              IN AN UNINITIALIZED REQUEST BLOCK.  ATTRI-     @Y30LB02
.*              BUTE EXAMPLE:                                  @Y30LB02
.*                                                             @Y30LB02
.*              CHAR, FIXED, STATIC LOCAL, NONLOCAL,           @Y30LB02
.*              BASED(*), ETC.                                 @Y30LB02
.*                                                             @Y30LB02
.*       NULL - STANDARD FORM: THE EXPANSION OF THIS FORM      @Y30LB02
.*              CONSISTS OF A REQUEST BLOCK, A LINKAGE         @Y30LB02
.*              INSTRUCTION, AND, POSSIBLY, PARAMETER          @Y30LB02
.*              BINDING INSTRUCTION.                           @Y30LB02
.*                                                             @Y30LB02
.*          E - EXECUTABLE FORM: THE EXPANSION OF THIS FORM    @Y30LB02
.*              CONSISTS OF A LINKAGE INSTRUCTION AND          @Y30LB02
.*              POSSIBLY, PARAMETER BINDING INSTRUCTIONS.      @Y30LB02
.*                                                             @Y30LB02
.*              SUB-PARAMETERS                                 @Y30LB02
.*                                                             @Y30LB02
.*              (1)  AN E MUST BE SPECIFIED IN THE FIRST       @Y30LB02
.*                   SUB-PARAMETER POSITION.  THIS INDICATES   @Y30LB02
.*                   THAT THE MACRO IS IN EXECUTABLE FORM.     @Y30LB02
.*                                                             @Y30LB02
.*              (2)  A NAME OR A REGISTER MUST BE SPECIFIED    @Y30LB02
.*                   IN THE SECOND SUB-PARAMETER.              @Y30LB02
.*                                                             @Y30LB02
.*              (3)  'COMPLETE' - COMPLETE WILL CAUSE THE      @Y30LB02
.*                   MACRO TO ZERO OUT THE REQUEST BLOCK.      @Y30LB02
.*                   AFTER ZEROING THE REQUEST BLOCK THE       @Y30LB02
.*                   FUNCTION OPCODE AND LENGTH ARE PLACED     @Y30LB02
.*                   IN THE REQUEST BLOCK.                     @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* TYPE- INDICATES WHETHER THE REQUEST IS FOR THE              @Y30LB02
.*       VARY-ON (VON) OR VARY-OFF (VOF) COMMAND.              @Y30LB02
.*                                                             @Y30LB02
.* FLAGS -  THE TWO BYTE FIELD WHICH INDICATES THE             @Y30LB02
.*  FUNCTION(S) TO BE PERFORMED.  THE FLAGS FIELD IS ONLY      @Y30LB02
.*  VALID IF THE REQUEST IS FOR SUBSYSTEM DASD.                @Y30LB02
.*  IF A SUBSYSTEM'S STAGING DEVICE IS REQUESTED, THEN         @Y30LB02
.*  ONE AND ONLY ONE FLAG BIT MUST BE SET TO '1'B.             @Y30LB02
.*                                                             @Y30LB02
.*       -------------------------------------------------     @Y30LB02
.*        X  X  X  X OTHER BITS MUST BE SET TO ZERO      @Y30LB02
.*       -------------------------------------------------     @Y30LB02
.*                                                             @Y30LB02
.*       BIT 0------------'1'B     STAGING DASD                @Y30LB02
.*                         '0'B    NO FUNCTION                 @Y30LB02
.*                                                             @Y30LB02
.*       BIT 1------------'1'B     REAL DASD                   @Y30LB02
.*                         '0'B    NO FUNCTION                 @Y30LB02
.*                                                             @Y30LB02
.*       BIT 2------------'1'B     NEUTRAL DASD                @Y30LB02
.*                         '0'B    NO FUNCTION                 @Y30LB02
.*                                                             @Y30LB02
.*       BIT 3------------'1'B     TEST DASD                   @Y30LB02
.*                         '0'B    NO FUNCTION                 @Y30LB02
.*                                                             @Y30LB02
.*       BITS 4-15--------         RESERVED AND MUST BE       @Y30LB02
.*                                  ZERO                      @Y30LB02
.*                                                             @Y30LB02
.*  STAGING DASD                                               @Y30LB02
.*                                                             @Y30LB02
.*   VARY-ON:  THE SPECIFIED SUBSYSTEM DASD IS MADE            @Y30LB02
.*   AVAILABLE FOR STAGING SPACE.  THE SSID PARAMETER          @Y30LB02
.*   MUST BE SPECIFIED.                                        @Y30LB02
.*                                                             @Y30LB02
.*  VARY-OFF:  THE SPECIFIED SUBSYSTEM DASD IS MADE            @Y30LB02
.*   UNAVAILABLE FOR STAGING SPACE.  THE CALLER MUST           @Y30LB02
.*   SPECIFY THE  ECB PARAMETER IN ORDER TO RECEIVE COMPLE-    @Y30LB02
.*   TION NOTIFICATION OF NECESSARY DESTAGING.                 @Y30LB02
.*   BOTH THE SSID AND ECB PARAMETERS MUST BE                  @Y30LB02
.*   SPECIFIED.                                                @Y30LB02
.*                                                             @Y30LB02
.*  REAL                                                       @Y30LB02
.*                                                             @Y30LB02
.*  VARY-ON:  USE OF THIS ATTRIBUTE CAUSES                     @Y30LB02
.*   THE SSID SPECIFIED TO BECOME A REAL DASD                  @Y30LB02
.*   UNTIL VARIED OFF.                                         @Y30LB02
.*                                                             @Y30LB02
.*  VARY-OFF: APPLIES ONLY TO DASD WHICH HAVE BEEN             @Y30LB02
.*   PREVIOUSLY VARIED ON WITH THE REAL ATTRIBUTE.             @Y30LB02
.*   THE SPINDLE WILL NO LONGER BE DESIGNATED AS REAL.         @Y30LB02
.*                                                             @Y30LB02
.*   NEUTRAL                                                   @Y30LB02
.*                                                             @Y30LB02
.*  VARY-OFF: THIS ATTRIBUTE APPLIES TO SUBSYSTEM              @Y30LB02
.*   DASD VARIED ON WITH THE STAGING SUBSYSTEM                 @Y30LB02
.*   DASD ATTRIBUTE.  THE SPECIFIED DASD IS MARKED             @Y30LB02
.*   UNAVAILABLE FOR THE MSC AFTER CURRENT STAGE/              @Y30LB02
.*   DESTAGE ACTIVITY IS COMPLETE.                             @Y30LB02
.*   A VARYON WITH THE STAGING DASD ATTRIBUTE                  @Y30LB02
.*   NULLIFIES THE NEUTRAL STATE.                              @Y30LB02
.*                                                             @Y30LB02
.*  TEST                                                       @Y30LB02
.*                                                             @Y30LB02
.*  VARY-OFF: FOR USE BY OLTEP.                                @Y30LB02
.*   THE RUA PARAMETER IS REQUIRED.                            @Y30LB02
.*   THE HOSTID WILL BE INSERTED BY THE MSSC-SVC.              @Y30LB02
.*   THE PATH INDICATED BY THE RUA (MAY BE                     @Y30LB02
.*   EITHER A VIRTUAL 3330 UCB OR A REAL 3330                  @Y30LB02
.*   UCB) WILL BE DESIGNATED REAL FOR OLTEP'S USE.             @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.* SSID  - SUB-SYSTEM IDENTIFICATION:  A UNIQUE NUMBER         @Y30LB02
.*  WHICH APPEARS EXTERNALLY ON EACH  UNIT                     @Y30LB02
.*  IN THE SUBSYSTEM. THE SSID PARAMETER MUST                  @Y30LB02
.*  BE SPECIFIED WITH EACH VARY REQUEST.                       @Y30LB02
.*                                                             @Y30LB02
.* RUA  -   THE UNIT (UCB) TO BE USED BY OLTEP.                @Y30LB02
.*                                                             @Y30LB02
.* ECB - THE NAME OF THE EVENT CONTROL BLOCK;                  @Y30LB02
.*  THE CALLER WILL BE NOTIFIED WHEN THE VARY OFF              @Y30LB02
.*  PROCESS HAS COMPLETED.  THE ECB PARAMETER IS REQUIRED      @Y30LB02
.*  ONLY IF THE STAGING DASD ATTRIBUTE IS SPECIFIED            @Y30LB02
.*  WITH A VARYOFF REQUEST OF A SUBSYSTEM                      @Y30LB02
.*  DASD UNIT.  THE ECB IS POSTED WITH A POST CODE             @Y30LB02
.*  OF 71, 72, 73, 74, ETC.. THE POST CODE WILL  BE            @Y30LB02
.*  PLACED IN THE LOW-ORDER BYTE OF THE ECB - '7F'X            @Y30LB02
.*  INDICATES SUCCESSFUL COMPLETION.  THE ECB AREA MUST        @Y30LB02
.*  BE CLEARED(SET TO BINARY 0) BEFORE INVOKING THE MACRO.     @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-NORMAL = VALID INVOCATION                           @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 0                           @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = IN-LINE PLS/BAL STATEMENTS THAT PERFORM      @Y30LB02
.*                THE REQUESTED FUNCTION                       @Y30LB02
.*                                                             @Y30LB02
.*01  EXIT-ERROR = INVALID INVOCATION                          @Y30LB02
.*                                                             @Y30LB02
.*02     CONDITION = RETURN CODE = 12                          @Y30LB02
.*                                                             @Y30LB02
.*02     OUTPUT = ERROR MESSAGE AS A COMMENT AT POINT OF       @Y30LB02
.*                INVOCATION                                   @Y30LB02
.*                                                             @Y30LB02
.*01  EXTERNAL REFERENCES = NONE                               @Y30LB02
.*                                                             @Y30LB02
.*01  TABLES = NONE                                            @Y30LB02
.*                                                             @Y30LB02
.*01  MESSAGES = AS FOLLOWS:                                   @Y30LB02
.*     ICB600I:  TYPE MUST BE SPECIFIED                        @Y30LB02
.*     ICB601I:  TYPE IS INCORRECTLY SPECIFIED                 @Y30LB02
.*     ICB602I:  A NAME FOR THE REQUEST BLOCK MUST BE          @Y30LB02
.*               SPECIFIED IN MF(2)                            @Y30LB02
.*     ICB603I:  WARNING-ONLY MF AND TYPE PARAMETERS ARE       @Y30LB02
.*               VALID FOR LIST FORM                           @Y30LB02
.*     ICB612I:  MF(2) MUST CONTAIN REQ BLK NAME IF            @Y30LB02
.*               EXEC MACRO FORM REQUESTED                     @Y30LB02
.*     ICB613I:  MISSING REQ BLK NAME OR MORE                  @Y30LB02
.*               THAN 2 SUBPARAMETERS FOR MF                   @Y30LB02
.*     ICB615I:  INVALID MF PARAMETER SPECIFIED, MUST BE       @Y30LB02
.*               L, E, OR NULL                                 @Y30LB02
.*                                                             @Y30LB02
.*01  CONTROL-BLOCKS = NONE                                    @Y30LB02
.*                                                             @Y30LB02
.*01  INNER MACROS = NONE                                      @Y30LB02
.*                                                             @Y30LB02
.*01  SYSTEM MACRO = IHBINNRA                                  @Y30LB02
.*                                                             @Y30LB02
.*01  CHANGE-ACTIVITY = S/D X04AC02 AND Y30LB02                @Y30LB02
.*                                                             @Y30LB02
.**** END OF SPECIFICATIONS ***                                @Y30LB02
         MACRO
&SYMBOL  ICBVARY &MF=,&TYPE=,&FLAGS=,&ECB=,&RUA=,&SSID=
         LCLC  &LBL                DEFINE MACRO INSTR INDX     @Y30LB02
         LCLB  &ERSW               DEFINE ERROR SWITCH         @Y30LB02
&LBL     SETC  'V'.'&SYSNDX'       ASSIGN CHARACTER VALUE      @Y30LB02
.*                                                             @Y30LB02
.*       CHECK FOR VALID TYPE SPECIFICATION                    @Y30LB02
.TYPE    AIF   ('&TYPE' EQ '').NUL                             @Y30LB02
         AIF   ('&TYPE' EQ 'VON' OR '&TYPE' EQ 'VOF').START    @Y30LB02
         MNOTE 12,'  ICB601I - TYPE IS INCORRECTLY SPECIFIED'  @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.NUL     ANOP                                                  @Y30LB02
         MNOTE 12,'  ICB600I - TYPE MUST BE SPECIFIED '        @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.*       DETERMINATION OF DESIRED MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.START   AIF   ('&MF(1)' EQ 'L').LFORM      LIST FORM?         @Y30LB02
         AIF   ('&MF(1)' EQ 'E').EFORM      EXECUTE FORM?      @Y30LB02
         AIF   ('&MF(1)' EQ '').SFORM       STANDARD FORM?     @Y30LB02
         MNOTE 12,'  ICB615I - INVALID MF PARAMETER '          @Y30LB02
         MNOTE 12,'  SPECIFIED, MUST BE L, E, OR NULL.'        @Y30LB02
&ERSW    SETB  1                                               @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF 'LIST' MACRO FORM                       @Y30LB02
.*       THE FOLLOWING CODE CHECKS FOR ILLEGAL PARAMETERS ON   @Y30LB02
.*       THE LIST FORM MACRO AND GIVES WARNING IF FOUND        @Y30LB02
.*                                                             @Y30LB02
.LFORM   ANOP                                                  @Y30LB02
         AIF   ('&FLAGS' NE '' OR '&ECB' NE '' OR '&RUA' NE            *
               '' OR '&SSID' NE '').WARN                       @Y30LB02
         AGO   .LIST1                                          @Y30LB02
.*                                                             @Y30LB02
.WARN    MNOTE 4,'  ICB603I - WARNING-ONLY MF AND TYPE '       @Y30LB02
         MNOTE 4,'  PARAMETERS ARE VALID FOR LIST FORM '       @Y30LB02
.*                                                             @Y30LB02
.LIST1   ANOP                                                  @Y30LB02
         AIF   ('&TYPE' EQ 'VON').VARYON  VARYON REQUEST?      @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').VOFDS  DSECT REQUESTED      @Y30LB02
*  MACMEAN  VARYOFF MACRO--INITIALIZED LIST FORM               @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
VOFLEN   DC    F'24'               LENGTH OF VOF REQ BLK       @Y30LB02
VOFOPCD  DC    XL1'0C'             OPCODE PLACED IN REQ        @Y30LB02
VOFRES1  DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
VOFFLAG  DC    XL2'0000'           2-BYTE FLAGS AREA           @Y30LB02
VOFSSID  DC    XL2'0000'           2-BYTE SSID AREA            @Y30LB02
VOFRUA   DC    XL2'0000'           2-BYTE RUA AREA             @Y30LB02
VOFHOST  DC    XL5'0000000000'     5-BYTE HOST ID AREA         @Y30LB02
VOFRES2  DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
VOFASID  DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
VOFECB   DC    XL4'00000000'       4-BYTE AREA FOR ECB         @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.VOFDS   ANOP                                                  @Y30LB02
*  MACMEAN  VARYOFF MACRO--UNINITIALIZED LIST FORM             @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBVARY  DSECT                                                 @Y30LB02
VOFLEN   DS    F                   LENGTH OF VOF 24 DEC        @Y30LB02
VOFOPCD  DS    XL1                 VOF OPCODE 0C HEX           @Y30LB02
VOFRES1  DS    XL1                 1-BYTE RESERVED AREA        @Y30LB02
VOFFLAG  DS    XL2                 2-BYTE FLAGS AREA           @Y30LB02
VOFSSID  DS    XL2                 2-BYTE SSID AREA            @Y30LB02
VOFRUA   DS    XL2                 2-BYTE RUA AREA             @Y30LB02
VOFHOST  DS    CL5                 5-BYTE HOST ID AREA         @Y30LB02
VOFRES2  DS    XL1                 1-BYTE RESERVED AREA        @Y30LB02
VOFASID  DS    XL2                 2-BYTE ASID AREA            @Y30LB02
VOFECB   DS    A                   4-BYTE ECB ADDR             @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.VARYON  ANOP                                                  @Y30LB02
         AIF   ('&MF(2)' EQ 'MAP').VONDS   DSECT REQUEST       @Y30LB02
*  MACMEAN  VARYON MACRO--INITIALIZED LIST FORM                @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  DS    0F                                              @Y30LB02
VONLEN   DC    F'12'               LENGTH OF VON REQ BLK       @Y30LB02
VONOPCD  DC    XL1'0A'             OPCODE PLACED IN BLOCK      @Y30LB02
VONRES1  DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
VONFLAG  DC    XL2'0000'           2-BYTE FLAGS AREA-ZERO      @Y30LB02
VONSSID  DC    XL2'0000'           2 BYTE SSID AREA            @Y30LB02
VONRES2  DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
         MEXIT                                                 @Y30LB02
.*                                                             @Y30LB02
.VONDS   ANOP                                                  @Y30LB02
*  MACMEAN  VARYON MACRO--UNINITIALIZED LIST FORM              @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
ICBVARY1 DSECT                                                 @Y30LB02
VONLEN   DS    F                   LENGTH OF VON 12 DEC        @Y30LB02
VONOPCD  DS    XL1                 VON OPCODE 0A HEX           @Y30LB02
VONRES1  DS    XL1                 1-BYTE RESERVED AREA        @Y30LB02
VONFLAG  DS    XL2                 2-BYTE FLAGS AREA-ZERO      @Y30LB02
VONSSID  DS    XL2                 2 BYTE SSID AREA            @Y30LB02
VONRES2  DS    XL2                 2-BYTE RESERVED AREA        @Y30LB02
         MEXIT                                                 @Y30LB02
.*       PROCESSING OF THE 'EXECUTE' MACRO FORM                @Y30LB02
.*                                                             @Y30LB02
.EFORM   ANOP                                                  @Y30LB02
         AIF   (N'&MF EQ 2).PARMOK  MORE THAN TWO MF SUB-      @Y30LB02
.*                                 PARAMETERS SPECD?           @Y30LB02
         MNOTE 12,'  ICB613I - MISSING REQ BLK NAME OR '       @Y30LB02
         MNOTE 12,'  MORE THAN 2 SUBPARAMETERS FOR MF '        @Y30LB02
&ERSW    SETB  1                                               @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.PARMOK  ANOP                                                  @Y30LB02
*  MACMEAN  VARYON/VARYOFF--EXECUTE FORM                       @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
&SYMBOL  IHBINNRA &MF(2)          LD ADDR OF REQUEST BLK       @Y30LB02
.*                                USING IHBINNRA MACRO         @Y30LB02
.*                                                             @Y30LB02
         AIF   ('&TYPE' EQ 'VON').VON1          TYPE VARYON?   @Y30LB02
         LA    0,24                LD LENGTH OF VARYOFF        @Y30LB02
         ST    0,0(1)              STORE LENGTH IN REQ BLK     @Y30LB02
         MVI   4(1),X'0C'          LOAD VARYOFF OPCODE         @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.VON1    ANOP                                                  @Y30LB02
         LA    0,12                LD LENG OF VARYON REQ       @Y30LB02
         ST    0,0(1)              STORE LENGTH                @Y30LB02
         MVI   4(1),X'0A'          LD VARYON OPCODE IN REG     @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.*       PROCESSING OF 'STANDARD' MACRO FORM                   @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.SFORM   ANOP                                                  @Y30LB02
*  MACMEAN VARYON/VARYOFF MACRO--STANDARD FORM                 @Y30LB02
*  VS1-4/VS2-3 VERSION--06/09/74   LEVEL 00                    @Y30LB02
         CNOP 0,4                                              @Y30LB02
&SYMBOL  BAL   1,&LBL              BRCH AROUND REQ BLK         @Y30LB02
         AIF   ('&TYPE' EQ 'VON').VON2           VARYON?       @Y30LB02
VOFLEN   DC    A(&LBL-*)           LENGTH OF VOF REQ BLK       @Y30LB02
VOFOPCD  DC    XL1'0C'             DEFINE VARYOFF OPCODE       @Y30LB02
VOFRES1  DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
VOFFLAG  DC    XL2'0000'           2-BYTE FLAGS AREA           @Y30LB02
VOFSSID  DC    XL2'0000'           2-BYTE SSID AREA            @Y30LB02
VOFRUA   DC    XL2'0000'           2-BYTE RUA AREA             @Y30LB02
VOFHOST  DC    XL5'0000000000'     5-BYTE HOSTID AREA          @Y30LB02
VOFRES2  DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
VOFASID  DC    XL2'0000'           2-BYTE ASID AREA            @Y30LB02
VOFECB   DC    XL4'00000000'       4-BYTE ECB AREA             @Y30LB02
&LBL     EQU   *                                               @Y30LB02
         AGO   .PROCES                                         @Y30LB02
.*                                                             @Y30LB02
.VON2    ANOP                                                  @Y30LB02
VONLEN   DC    A(&LBL-*)           LENGTH OF VON REQ BLK       @Y30LB02
VONOPCD  DC    XL1'0A'             DEFINE VARYON OPCODE        @Y30LB02
VONRES1  DC    XL1'00'             1-BYTE RESERVED AREA        @Y30LB02
VONFLAG  DC    XL2'0000'           2-BYTE FLAGS AREA           @Y30LB02
VONSSID  DC    XL2'0000'           2-BYTE SSID AREA            @Y30LB02
VONRES2  DC    XL2'0000'           2-BYTE RESERVED AREA        @Y30LB02
&LBL     EQU   *                                               @Y30LB02
.*                                                             @Y30LB02
.*       PROCESS REQUEST BLOCK FOR STANDARD & EXECUTE FORMS    @Y30LB02
.*                                                             @Y30LB02
.PROCES  AIF   (&ERSW).FINISH                                  @Y30LB02
         AIF   ('&FLAGS' EQ '').SSID       FLAGS SPECIFIED?    @Y30LB02
         AIF   ('&FLAGS'(1,1) EQ '(').REGF   FLAGS REGFORM?    @Y30LB02
         MVC   6(2,1),&FLAGS       PUT FLAGS IN REQ BLOCK      @Y30LB02
         AGO   .SSID               BR TO CHECK FOR SSID        @Y30LB02
.*                                                             @Y30LB02
.REGF    ANOP                                                  @Y30LB02
         MVC   6(2,1),0(&FLAGS(1)) REG-FORM-STORE FLAGS        @Y30LB02
.*                                                             @Y30LB02
.SSID    AIF   ('&SSID' EQ '').RUA          SSID SPECIFIED?    @Y30LB02
         AIF   ('&SSID'(1,1) EQ '(').SREG   REG-FORM?          @Y30LB02
         MVC   8(2,1),&SSID        PUT SSID IN REQ BLOCK       @Y30LB02
         AGO   .RUA                                            @Y30LB02
.*                                                             @Y30LB02
.SREG    ANOP                                                  @Y30LB02
         MVC   8(2,1),0(&SSID(1))  REG-FORM--STORE SSID        @Y30LB02
.*                                                             @Y30LB02
.RUA     AIF   ('&TYPE' EQ 'VON').CVS2     BR IF VARYON        @Y30LB02
         AIF   ('&RUA' EQ '').CKECB        RUA SPECIFIED?      @Y30LB02
         AIF   ('&RUA'(1,1) EQ '(').VREG    REG-FORM?          @Y30LB02
         MVC   10(2,1),&RUA        PUT RUA IN REQ BLOCK        @Y30LB02
         AGO   .CKECB                                          @Y30LB02
.*                                                             @Y30LB02
.VREG    ANOP                                                  @Y30LB02
         MVC   10(2,1),0(&RUA(1))  REG-FORM--STORE RUA         @Y30LB02
.*                                                             @Y30LB02
.CKECB   AIF   ('&ECB' EQ '').CVS2                             @Y30LB02
         AIF   ('&ECB'(1,1) EQ '(').UREG     REGISTER FORM?    @Y30LB02
         LA    15,&ECB             LOAD ADDRESS OF ECB         @Y30LB02
         ST    15,20(1)            STORE ADDRESS OF ECB        @Y30LB02
         AGO   .CVS2                                           @Y30LB02
.*                                                             @Y30LB02
.UREG    ANOP                                                  @Y30LB02
         ST    &ECB,20(1)          REG-FORM,STORE ECB          @Y30LB02
.*                                                             @Y30LB02
.*                                                             @Y30LB02
.CVS2    ANOP                                                  @Y30LB02
         SVC   126                 INVOKE SVC                  @Y30LB02
.FINISH  MEND                                                  @Y30LB02
**/
*   ICBVARY:  MACRO KEYS(MF,TYPE,FLAGS,SSID,RUA,ECB);      /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*/*            EXTERNAL DECLARES                             @Y30LB02*/
*        DCL ICBTESTR FIXED EXT;/*INVOCATION COUNTER         @Y30LB02*/
*        DCL VONTEST FIXED EXT; /*COUNTER FOR STANDARD FORM  @Y30LB02*/
*        DCL VOFTES1 FIXED EXT;  /*COUNTER FOR  VOF S-FORM   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*            INTERNAL DECLARES                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*   DCL CTR        FIXED;         /*CTR FOR LIST PARAMETERS  @Y30LB02*/
*   DCL ERSW       FIXED;         /*ERROR COND SWITCH        @Y30LB02*/
*   DCL VONCOD     CHAR;         /*VARYON OPCODE             @Y30LB02*/
*   DCL VOFCOD     CHAR;         /*VARYOFF OPCODE            @Y30LB02*/
*   DCL RETCODE    FIXED;        /*RETURN CODE AREA          @Y30LB02*/
*   DCL VNLEN      CHAR;         /*LENGTH OF VON REQ BLOCK   @Y30LB02*/
*   DCL VFLEN      CHAR;         /*LENGTH OF VOF REQ BLOCK   @Y30LB02*/
*        VONCOD='0A';            /*INIT VARYON OPCODE        @Y30LB02*/
*        VOFCOD='0C';            /*INITIALIZE VARYOFF OPCOD  @Y30LB02*/
*        RETCODE=0;              /*INITIALIZE RETURNCODE     @Y30LB02*/
*        VNLEN='0C';             /*INITIALIZE VARYON LENGTH  @Y30LB02*/
*        ERSW = 0;               /*INITIALIZE ERROR SWITCH   @Y30LB02*/
*        VFLEN='18';             /*INITIALIZE VARYOFF LEN    @Y30LB02*/
*        CTR = 0;                /*INITIALIZE PARM COUNTER   @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*            CHECK FOR VALID TYPE SPECIFICATION            @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE='' THEN              /*TYPE SPECIFIED?           @Y30LB02*/
*     DO;                        /*NO,PROCESS ERROR MSG      @Y30LB02*/
*        ERSW=1;                 /*SET ERROR SWITCH TO 1     @Y30LB02*/
*        ANS MSG('  ICB600I - TYPE MUST BE '
*                'SPECIFIED')SKIP;                         /*@Y30LB02*/
*        RETCODE=12;        /*SET RETURN CODE TO 12          @Y30LB02*/
*        GO TO FINISH;      /*BRANCH TO END                  @Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*   IF ERSW=1 THEN          /*ERROR SWITCH SET?              @Y30LB02*/
*        GO TO FINISH;      /*YES,BRCH END PROCES            @Y30LB02*/
*   IF ICBTESTR = 0 THEN    /*REG 1 ALREADY DCLD?            @Y30LB02*/
*      DO;                  /*NO,PRINT DECLARE               @Y30LB02*/
*        ANS('DCL ICBR1 REG(1) PTR ;/*'
*        'ADDRESS OF REQUEST BLOCK @Y30LB02*/')SKIP;
*        ICBTESTR=1;        /*INCREM DCL COUNTER             @Y30LB02*/
*      END;                 /*                               @Y30LB02*/
*   IF TYPE(1)='VON' THEN   /*TYPE VARYON?                   @Y30LB02*/
*        GO TO START;       /*YES,BRCH,VALID TYPE            @Y30LB02*/
*   IF TYPE(1) = 'VOF' THEN /*TYPE VARYOFF?                  @Y30LB02*/
*        GO TO START;       /*YES,BRCH,VALID TYPE            @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      INVALID 'TYPE' WILL CREATE THE FOLLOWING ERR MSGS   @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ERSW=1;                 /*SET ERROR SWITCH TO ONE        @Y30LB02*/
*   ANS MSG('  ICB601I - TYPE IS INCORRECTLY '
*           'SPECIFIED')SKIP(3);                           /*@Y30LB02*/
*   RETCODE=12;             /*SET RETURN CODE TO 12          @Y30LB02*/
*   IF ERSW=1 THEN          /*ERROR SWITCH SET TO ONE?       @Y30LB02*/
*   GO TO FINISH;           /*YES,BRCH TO END PROCESS        @Y30LB02*/
*/*                                                          @Y30LB02*/
*START:
*   IF MF(1) ^= 'L' THEN    /*LIST FORM REQUEST?             @Y30LB02*/
*        GO TO CKFORM;      /*NO,CHECK FOR OTHER FORMS       @Y30LB02*/
*   IF MF(2) ^= '' THEN     /*LIST NAME SPECIFIED?           @Y30LB02*/
*        GO TO LISTFORM;    /*YES,BRCH PROCESS REQUEST       @Y30LB02*/
*   ERSW=1;                 /*NO,SET ERROR SWITCH            @Y30LB02*/
*   ANS MSG('  ICB602I - A NAME FOR THE '
*           'REQUEST BLOCK MUST BE SPECIFIED IN '
*           'MF(2) ')SKIP(3);                              /*@Y30LB02*/
*   RETCODE=12;             /*SET RETURN CODE TO 12          @Y30LB02*/
*   IF ERSW=1 THEN          /*CHECK THE ERROR SWITCH         @Y30LB02*/
*   GO TO FINISH;                                          /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*LISTFORM:
*/********************************************************@Y30LB02*/
*/*  CHECK FOR ILLEGAL PARAMETERS AND PRINT OUT DECLARES  @Y30LB02*/
*/********************************************************@Y30LB02*/
*   IF FLAGS ^= '' THEN     /*FLAGS SPECIFIED?               @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF SSID ^= '' THEN      /*SSID SPECIFIED?                @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF RUA ^= '' THEN       /*RUA SPECIFIED?                 @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF ECB ^= '' THEN       /*ECB SPECIFIED?                 @Y30LB02*/
*        CTR = CTR + 1;     /*YES,INCREMENT COUNTER          @Y30LB02*/
*   IF CTR > 0 THEN         /*COUNTER GT ZERO?               @Y30LB02*/
*     DO;                   /*YES,WARN USER                  @Y30LB02*/
*        RETCODE=4;         /*SET RETURN CODE TO 4           @Y30LB02*/
*        ANS MSG('  ICB603I - WARNING-ONLY MF'
*             ' AND TYPE PARAMETERS ARE VALID FOR'
*             ' LIST FORM  ')SKIP(3);                      /*@Y30LB02*/
*     END;                  /*                               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF MF(3) ^= '' THEN     /*PLS ATTRIBUTE SPECIFIED?       @Y30LB02*/
*       GO TO ATTRLST;      /*YES,PROCESS IT                 @Y30LB02*/
*   IF TYPE(1)='VON' THEN   /*IS TYPE VARYON?                @Y30LB02*/
*     DO;                   /*YES,PUT VARYON REQ BLOCK       @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYON MACRO                '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*           '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2) '  STATIC LOCAL,'
*        ' /*VARYON REQ BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VONLEN  FIXED(31)INIT('QUOTE
*        ('0C')'X),/*LENGTH OF VON REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VONOPCD CHAR(1)INIT('QUOTE('0A')
*        'X),/*VARYON OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  VONRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  VONFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  VONSTAG  BIT(1), /*STAGING '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VONREAL  BIT(1), /*REAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(14),'
*        ' /*FOURTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  VONSSID  FIXED(15) INIT(0),'
*        ' /*SUBSYSTEM ID  @Y30LB02*/')SKIP;
*        ANS('    2  VONRES2  CHAR(2) INIT('QUOTE
*        ('0000')'X);/*RESERVED AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;                                     /*@Y30LB02*/
*     END;                                                 /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*  ELSE
*     DO;                                                  /*@Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYOFF MACRO               '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE INITIALIZED LIST FORM         '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2) '  STATIC LOCAL,'
*        ' /*VARYOFF REQ BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VOFLEN  FIXED(31)INIT('QUOTE
*        ('18')'X),/*LENGTH OF VOF REQUEST BLK @Y30LB02*/')SKIP;
*        ANS('    2  VOFOPCD CHAR(1)INIT('QUOTE('0C')
*        'X),/*VARYOFF OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  VOFRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  VOFFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  VOFSTAG  BIT(1), /*VIRTUAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFREAL  BIT(1), /*REAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFNEUT  BIT(1), /*NEUTRAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFTEST  BIT(1), /*TEST '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(12),'
*        ' /*TWELVE BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  VOFSSID  FIXED(15) INIT(0),'
*        ' /*SUBSYSTEM ID  @Y30LB02*/')SKIP;
*        ANS('    2  VOFRUA  FIXED(15) INIT(0),'
*        ' /*REAL UNIT ADDRESS  @Y30LB02*/')SKIP;
*        ANS('    2  VOFHOST  CHAR(5) INIT('QUOTE
*        ('0000000000')'X),/*HOSTID AREA @Y30LB02*/')SKIP;
*        ANS('    2  *     CHAR(1) INIT('QUOTE
*        ('00')'X),/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  VOFASID CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  VOFECB  FIXED(31) INIT(0);'
*        ' /* EVENT CONTROL BLOCK AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;       /*BRCH TO END                   @Y30LB02*/
*     END;                   /*                              @Y30LB02*/
*ATTRLST:
*   IF TYPE(1)='VON' THEN    /*VARYON REQUEST                @Y30LB02*/
*     DO;                    /*OUTPUT UNINIT REQ BLOCK       @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYON MACRO                '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2)'  'MF(3)','
*        ' /*VARYON REQ BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VONLEN  FIXED(31), /*LENGTH'
*        ' OF BLOCK = 0C BYTES HEX @Y30LB02*/')SKIP;
*        ANS('    2  VONOPCD CHAR(1),/*VARYON'
*        ' OPCODE = 0A HEX @Y30LB02*/')SKIP;
*        ANS('    2  VONRES1 CHAR(1),/*ONE '
*        ' BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  VONFLG BIT(16), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  VONSTAG  BIT(1), /*STAGING '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VONREAL  BIT(1), /*REAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(14),'
*        ' /*FOURTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  VONSSID  FIXED(15),'
*        ' /*SUBSYSTEM ID  @Y30LB02*/')SKIP;
*        ANS('    2  VONRES2  CHAR(2);'
*        '/*RESERVED AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;           /*BRCH TO END               @Y30LB02*/
*     END;                       /*                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*  ELSE                          /*VARYOFF REQUEST           @Y30LB02*/
*     DO;                        /*OUTPUT VARYOFF BLOCK      @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYOFF MACRO               '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE UNINITIALIZED LIST FORM       '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('DCL 1 ' MF(2)'  'MF(3)','
*        ' /*VARYOFF REQ BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VOFLEN  FIXED(31),/*LENGTH OF'
*        ' REQUEST BLOCK = 18 HEX @Y30LB02*/')SKIP;
*        ANS('    2  VOFOPCD CHAR(1), '
*        '/*VARYOFF OPCODE = 0C HEX @Y30LB02*/')SKIP;
*        ANS('    2  VOFRES1  CHAR(1),/*ONE '
*        'BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  VOFFLG BIT(16),/*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  VOFSTAG  BIT(1), /*STAGING '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFREAL  BIT(1), /*REAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFNEUT  BIT(1), /*NEUTRAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFTEST  BIT(1), /*TEST '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(12),'
*        ' /*TWELVE BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  VOFSSID FIXED(15),'
*        ' /*SUBSYSTEM ID  @Y30LB02*/')SKIP;
*        ANS('    2  VOFRUA  FIXED(15),'
*        ' /*REAL UNIT ADDRESS  @Y30LB02*/')SKIP;
*        ANS('    2  VOFHOST  CHAR(5),'
*        '/*HOSTID AREA @Y30LB02*/')SKIP;
*        ANS('    2  * CHAR(1) ,/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  VOFASID  CHAR(2),'
*        '/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  VOFECB  FIXED(31);'
*        ' /* EVENT CONTROL BLOCK AREA @Y30LB02*/')SKIP;
*        GO TO FINISH;           /*BRANCH TO END             @Y30LB02*/
*/*                                                          @Y30LB02*/
*     END;                       /*                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*      CHECK FOR EXECUTE FORM SPECIFICATION                @Y30LB02*/
*/*                                                          @Y30LB02*/
*CKFORM:
*   IF MF(1) ^= 'E' THEN       /* EXECUTE FORM SPECIFIED?    @Y30LB02*/
*        GO TO SFORM;         /*NO,CHECK FOR STANDARD        @Y30LB02*/
*   IF MF(2)='' THEN          /* BLOCK NAME SPECIFIED?       @Y30LB02*/
*     DO;                     /*YES,PRINT ERROR MESSAGE      @Y30LB02*/
*        ANS MSG('  ICB612I - MF(2) MUST CONTAIN'
*                ' REQ BLK NAME IF EXEC'
*                ' MACRO FORM REQUESTED')SKIP(3);          /*@Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE TO 12        @Y30LB02*/
*        ERSW = 1;            /*SET ERROR SWITCH             @Y30LB02*/
*        GO TO COMPROC;       /*BRCH TO CHECK SWITCH         @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYON/VARYOFF MACRO        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION-- 06/09/74 LEVEL 00   '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR THE EXECUTE FORM.  '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THE LIST FORM OF THIS MACRO SHOULD BE     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOKED FIRST IN ORDER TO SET UP NECESSARY'
*            '               @Y30LB02*/')SKIP;
*        ANS('/*DECLARES.  IF THE COMPLETE ARGUMENT IS    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*SPECIFIED THE REQ BLOCK WILL BE ZEROED.   '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(ICBR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ICBR1=ADDR('MF(2)'); /*R1 PTR'
*        ' TO REQUEST BLOCK @Y30LB02*/')SKIP(2);
*   IF MF(3) = 'COMPLETE' THEN     /*COMPLETE SPECIFIED      @Y30LB02*/
*        GO TO EXCOMP;             /*YES,BRCH TO ZERO BLK    @Y30LB02*/
*   ELSE                           /*NO ZERO REQUESTED       @Y30LB02*/
*        GO TO COMPROC;            /*BRANCH TO CK PARAMETERS @Y30LB02*/
*EXCOMP:
*        ANS(' 'MF(2)'='MF(2)'&&'MF(2)';/*ZERO'
*        ' REQUEST BLOCK @Y30LB02*/')SKIP;
*        GO TO COMPROC;           /*BRANCH TO CK PARAMETERS  @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*SFORM:
*   IF MF(1) ^= '' THEN       /* FORM STANDARD?              @Y30LB02*/
*     DO;                     /*PRINT OUT ERROR MESSAGE      @Y30LB02*/
*        ANS MSG('  ICB615I - INVALID MF PARAMETER'
*                ' SPECIFIED, MUST BE L,E, OR NULL')SKIP;  /*@Y30LB02*/
*        ERSW = 1;            /*SET ERROR SWITCH TO 1        @Y30LB02*/
*        RETCODE=12;          /*SET RETURN CODE TO 12        @Y30LB02*/
*        GO TO COMPROC;       /*BRANCH TO CK SWITCH          @Y30LB02*/
*     END;                    /*                             @Y30LB02*/
*/*                                                          @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='VON' THEN     /*TYPE EQUAL VARYON?           @Y30LB02*/
*     IF VONTEST => 1 THEN    /*1ST VARYON STD FORM?         @Y30LB02*/
*      DO;                    /*NO,DON'T PRINT DCLS          @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYON MACRO                '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*           '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('RFY(ICBR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ICBR1=ADDR(VONLEN);/*PTR TO REQ BLK @Y30LB02*/')SKIP;
*        GO TO COMPROC;        /*BRANCH TO CK PARAMETERS     @Y30LB02*/
*      END;                    /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*     IF TYPE(1) = 'VON' THEN  /*TYPE EQUAL VARYON?          @Y30LB02*/
*      DO;                     /*PUT OUT THE DCLS            @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYON MACRO                '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE STANDARD FORM - VARYON MACRO  '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('RFY(ICBR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ICBR1=ADDR(VONLEN);/*R1 PTR TO REQ BLK @Y30LB02*/')SKIP;
*        ANS('DCL 1  VONLST01  STATIC LOCAL,'
*        ' /*VARYON REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VONLEN  FIXED(31)INIT('QUOTE('0C')
*        'X),/*LENGTH OF VARYON REQ BLK @Y30LB02*/')SKIP;
*        ANS('    2  VONOPCD CHAR(1)INIT('QUOTE('0A')
*        'X),/*VARYON OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  VONRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  VONFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  VONSTAG  BIT(1), /*STAGING '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VONREAL  BIT(1), /*REAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(14),'
*        ' /*FOURTEEN BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  VONSSID  FIXED(15) INIT(0),'
*        ' /*SUBSYSTEM ID  @Y30LB02*/')SKIP;
*        ANS('    2  VONRES2  CHAR(2) INIT('QUOTE
*        ('0000')'X);/*RESERVED AREA @Y30LB02*/')SKIP;
*        VONTEST=VONTEST+1;    /*INCREMENT STD FORM CTR      @Y30LB02*/
*        GO TO COMPROC;        /*BRANCH TO CK PARAMETERS     @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                       /*VARYOFF PROCESSING          @Y30LB02*/
*     IF VOFTES1 => 1 THEN     /*1ST VARYOFF STD FORM?       @Y30LB02*/
*      DO;                     /*NO,DON'T PRINT DCLS         @Y30LB02*/
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYOFF MACRO               '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE OUTPUT FOR A SECONDARY        '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*INVOCATION OF THE STANDARD FORM MACRO     '
*            '               @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************** @Y30LB02*/')SKIP;
*        ANS('RFY(ICBR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ICBR1=ADDR(VOFLEN);/*PTR TO REQ BLK @Y30LB02*/')SKIP;
*        GO TO COMPROC;        /*BRANCH TO CK PARAMETERS     @Y30LB02*/
*      END;                    /*                            @Y30LB02*/
*     IF VOFTES1=0 THEN        /*1ST VARYOFF STD FORM        @Y30LB02*/
*     DO;                      /*PUT OUT THE DCLS            @Y30LB02*/
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('/*MACMEAN  MSSC VARYOFF MACRO               '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*VS1-4/VS2-3 VERSION--06/09/74 LEVEL 00    '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*THIS IS THE STANDARD FORM - VARYOFF MACRO '
*            '              @Y30LB02*/')SKIP;
*        ANS('/*******************************************'
*            '************* @Y30LB02*/')SKIP;
*        ANS('RFY(ICBR1)RSTD;/*RESTRICT REG 1 @Y30LB02*/')SKIP;
*        ANS('ICBR1=ADDR(VOFLEN);/*R1 PTR TO REQ BLK @Y30LB02*/')SKIP;
*        ANS('DCL 1 VOFLST01  STATIC LOCAL,'
*        ' /*VARYOFF REQUEST BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VOFLEN  FIXED(31)INIT('QUOTE('18')
*        'X),/*LENGTH OF VOF REQ BLOCK @Y30LB02*/')SKIP;
*        ANS('    2  VOFOPCD CHAR(1)INIT('QUOTE('0C')
*        'X),/*VARYOFF OPCODE @Y30LB02*/')SKIP;
*        ANS('    2  VOFRES1 CHAR(1)INIT('QUOTE('00')
*        'X), /*ONE BYTE OF ZERO @Y30LB02*/')SKIP;
*        ANS('    2  VOFFLG BIT(16)INIT('QUOTE
*        ('0000000000000000')'B), /*FLAGS AREA @Y30LB02*/')SKIP;
*        ANS('     3  VOFSTAG  BIT(1), /*STAGING '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFREAL  BIT(1), /*REAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFNEUT  BIT(1), /*NEUTRAL '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  VOFTEST  BIT(1), /*TEST '
*        'ATTRIBUTE @Y30LB02*/')SKIP;
*        ANS('     3  *      BIT(12),'
*        ' /*TWELVE BITS RESERVED @Y30LB02*/')SKIP;
*        ANS('    2  VOFSSID  FIXED(15) INIT(0),'
*        ' /*SUBSYSTEM ID  @Y30LB02*/')SKIP;
*        ANS('    2  VOFRUA  FIXED(15) INIT(0),'
*        ' /*REAL UNIT ADDRESS  @Y30LB02*/')SKIP;
*        ANS('    2  VOFHOST CHAR(5) INIT('QUOTE
*        ('0000000000')'X),/*HOSTID AREA @Y30LB02*/')SKIP;
*        ANS('    2  *     CHAR(1) INIT('QUOTE
*        ('00')'X),/*RESERVED AREA @Y30LB02*/')SKIP;
*        ANS('    2  VOFASID  CHAR(2) INIT('QUOTE
*        ('0000')'X),/*ASID AREA @Y30LB02*/')SKIP;
*        ANS('    2  VOFECB  FIXED(31) INIT(0);'
*        ' /* EVENT CONTROL BLOCK AREA @Y30LB02*/')SKIP;
*        VOFTES1=VOFTES1+1;    /*INCREM VOF STD FORM CTR     @Y30LB02*/
*     END;                     /*                            @Y30LB02*/
*/*                                                          @Y30LB02*/
*COMPROC:
*/*                                                          @Y30LB02*/
*   IF ERSW =1 THEN           /*ERROR SWITCH SET?            @Y30LB02*/
*     GO TO FINISH;           /*YES,BRANCH OUT               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='VON' THEN  /*VARYON REQUEST?                 @Y30LB02*/
*    DO;                   /*PROCESS LEN AND OPCOD           @Y30LB02*/
*     ANS('VONLEN=' QUOTE(VNLEN) 'X;'
*     '  /*LENG-VARYON REQUEST BLOCK @Y30LB02*/')SKIP;
*     ANS('VONOPCD=' QUOTE(VONCOD) 'X;/*VARYON '
*     ' OPCODE @Y30LB02*/')SKIP;
*    END;                   /*                               @Y30LB02*/
*/*                                                          @Y30LB02*/
*   ELSE                    /*PROCESS LEN AND OPC FOR VOF    @Y30LB02*/
*    DO;                    /*                               @Y30LB02*/
*     ANS('VOFLEN=' QUOTE(VFLEN) 'X;'
*     '  /*LENG-VARYOFF REQUEST BLOCK @Y30LB02*/')SKIP;
*     ANS('VOFOPCD=' QUOTE(VOFCOD) 'X;/*OPCODE FOR'
*    ' VARYOFF REQ @Y30LB02*/')SKIP;
*    END;                                                  /*@Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='VON' THEN     /*VARYON REQUEST?              @Y30LB02*/
*    IF FLAGS ^= '' THEN      /*FLAGS SPECIFIED              @Y30LB02*/
*     ANS('VONFLG=' FLAGS '; /*VALUE OF FLAGS @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF TYPE(1)='VOF' THEN     /*VARYOFF SPECIFIED?           @Y30LB02*/
*    IF FLAGS ^= '' THEN      /*FLAGS SPECIFIED?             @Y30LB02*/
*     ANS('VOFFLG=' FLAGS '; /*VALUE OF FLAGS @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF SSID ^= '' THEN          /*SSID SPECIFIED?            @Y30LB02*/
*    IF TYPE(1) = 'VON' THEN   /*VARYON SPECIFIED?           @Y30LB02*/
*     ANS('VONSSID=' SSID '; /*VALUE OF SSID @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF SSID ^= '' THEN          /*SSID SPECIFIED ?           @Y30LB02*/
*    IF TYPE(1) = 'VOF' THEN    /*VARYOFF SPECIFIED?         @Y30LB02*/
*     ANS('VOFSSID= ' SSID ';/*VALUE OF SSID @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF TYPE(1) = 'VON' THEN     /*TYPE EQUAL VARYON?         @Y30LB02*/
*     GO TO LINK;               /*BRCH TO LINK TO SVC        @Y30LB02*/
*/*                                                          @Y30LB02*/
*   IF RUA ^= '' THEN           /*RUA SPECIFIED?             @Y30LB02*/
*    IF TYPE(1) = 'VOF' THEN    /*TYPE EQUAL VARRYOFF?       @Y30LB02*/
*     ANS('VOFRUA= ' RUA ';/*VALUE OF RUA @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*   IF ECB ^= ''  THEN    /*ECB SPECIFIED?                   @Y30LB02*/
*        ANS('VOFECB=ADDR' ECB';/*ADDRESS OF ECB'
*        ' @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*LINK:
*     ANS('SVC   (126);/*INVOKE THE SVC @Y30LB02*/')SKIP;
*     ANS('RFY  ICBR1  UNRSTD;/*UNRESTRICT REG 1 @Y30LB02*/')SKIP;
*/*                                                          @Y30LB02*/
*FINISH:  RETURN CODE(RETCODE);                            /*@Y30LB02*/
*         %END;                                            /*@Y30LB02*/
./ ADD NAME=ICBVOLTB
 %ICBVOLTB: ;                       /* MACRO                 @ZA27588*/
     /***********************************************        @ZA27588*/
     /*              ***** MAPPING MACRO *****               @ZA27588*/
     /*                                                      @ZA27588*/
     /* MACRO NAME = ICBVOLTB(VS2)                           @ZA27588*/
     /*                                                      @ZA27588*/
     /* DESCRIPTIVE NAME = MSSC VS2 VOLUME TRACKING          @ZA27588*/
     /*                    TABLE FORMAT                      @ZA27588*/
     /*                                                      @ZA27588*/
     /* COPYRIGHT = NONE                                     @ZA27588*/
     /*                                                      @ZA27588*/
     /* CHANGE ACTIVITY = 10/24/77 ELIMINATE REDUNDANT       @ZA27588*/
     /*                            ACQUIRES                  @ZA27588*/
     /*                                                      @ZA27588*/
     /* %SSCLEVEL DEFAULTS                                   @ZA27588*/
     /*      DCL 1 ICBVLIST BASED(ICBVOLST) BDY(WORD),       @ZA27588*/
     /*                                                      @ZA27588*/
     /* %SSC9999 DEFAULTS TO SEMICOLON                       @ZA27588*/
     /*                                                      @ZA27588*/
     /* TO SET YOUR OWN LEVEL 1 USE %SSCLEVEL = 'N' WHERE    @ZA27588*/
     /*        N IS THE LEVEL YOU WANT                       @ZA27588*/
     /*                                                      @ZA27588*/
     /* TO SET END TO , USE %SSC9999 = ','                   @ZA27588*/
     /***********************************************        @ZA27588*/
 %IF SSCLEVEL = ''                  /*DEFAULT BASE           @ZA27588*/
    %THEN SSCBASE = 'BASED(ICBVOLST)' ;/*BASED ON ICBVOLST   @ZA27588*/
    %ELSE SSCBASE = '' ;            /*NOT BASED              @ZA27588*/
 %IF SSCLEVEL = ''                  /*DEFAULT LEVEL          @ZA27588*/
    %THEN SSCLEVEL = 'DCL 1 ' ;     /*SET LEVEL TO 1         @ZA27588*/
 %IF SSC9999 ^= ','                 /*COMMA TO CONTINUE      @ZA27588*/
    %THEN SSC9999 = ';' ;           /*DEFAULT TO END         @ZA27588*/
    SSCLEVEL ICBVLIST SSCBASE BDY(WORD),/*MSSC VOLUME TABLE  @ZA27588*/
        5 ICBVLCNT FIXED(31),       /*NUMBER OF VOLUMES      @ZA27588*/
        5 ICBVLENT(*) CHAR(60),     /*ENTRY ARRAY            @ZA27588*/
          7 ICBVLVID CHAR(6),       /*VOLID                  @ZA27588*/
          7 ICBVLCYL CHAR(54)       /*CYLINDER INDICATORS    @ZA27588*/
             SSC9999                /*MSSC VOLUME TABLE END  @ZA27588*/
./ ADD NAME=ICBVVIC
* %/*  START OF SPECIFICATIONS****
.*
.*01   NAME = ICBVVIC                               6/19/74
.*
.*01   DESCRIPTIVE-NAME = MSVC REQUEST MACRO
.*
.*01   COPYRIGHT = NONE
.*
.*01   STATUS = OS/VS1 RELEASE 4, LEVEL 0
.*              OS/VS2 RELEASE 3, LEVEL 0
.*
.*01   FUNCTION = THIS MACRO EXPANDS INTO AN SVC 126 AND IS TO BE USED
.*                WITH REQUEST BLOCKS IEZMGP, IEZRVR, IEZSGP, IEZRVVI,
.*                AND IEZMVR.  DIRECT REQUESTS TO MSVC ARE EXECUTED
.*                IN THIS MANNER.
.*
.*01   NOTES = AS FOLLOWS:
.*                WHEN SVC 126 IS CALLED, REGISTER 1 SHOULD
.*                POINT THE REQUEST BLOCK (IEZRVR,IEZMGP,IEZSGP, ETC.,)
.*02     CODE = PLS2
.*
.*02     RESTRICTIONS = NONE
.*
.*02     REGISTER-CONVENTIONS = NONE
.*
.*01   MODULE-TYPE = EXECUTABLE MACRO
.*
.*02     PROCESSOR = PLS2
.*
.*02     ATTRIBUTES = REENTERABLE
.*
.*02     ENTRY-POINT = NONE
.*
.*02     LINKAGE = SVC 126
.*
.*01 OPERATION:
.*            DCL REQUEST BLOCK POINTER
.*            INCLUDE REQUEST BLOCK
.*            INITIALIZE REQUEST BLOCK
.*            REG1 = ADDR(REQUEST BLOCK)
.*            ? ICBVVIC
.*
.*01  INPUT = PLS INVOCATION:   LABEL: ? ICBVVIC
.*
.*01  EXIT-NORMAL = VALID INVOCATION
.*
.*02     CONDITION = RETURN CODE = 0
.*
.*02     OUTPUT = REQUESTED ORDER GENERATED FOR THE SVC
.*
.*01  EXIT-ERROR = NONE
.*
.*01  EXTERNAL REFERENCES = NONE
.*
.*01  TABLES = NONE
.*
.*01  CONTROL-BLOCKS = NONE
.*
.*01  INNER MACROS = NONE
.*
.*01  SYSTEM MACRO = NONE
.*
.*01  CHANGE-ACTIVITY = NONE
.*
.**** END OF SPECIFICATIONS ***/

*    ICBVVIC:  MACRO; /*                                     @Y30LB22*/
*/*********************************************************/
*/*      THE FOLLOWING CODE WILL INVOKE SVC 126.          */
*/*      THE RETURN CODE IS SET AND PROCESSING IS ENDED   */
*/*********************************************************/
*/*********************************************************/
*        ANS('SVC  (126);/*INVOKE SVC 126*/')SKIP;         /*@Y30LB22*/
*/*                                                        */
*        RETURN CODE(0);                                   /*@Y30LB22*/
*        %END;                                             /*@Y30LB22*/
./ ADD NAME=ICFWORK
         MACRO
         ICFWORK &GENCODE=NO                                        PWF
         AIF   ('&GENCODE' NE 'YES').DSECT                          PWF
ICFWORKA CSECT                                                      PWF
         AGO   .COM                                                 PWF
.DSECT   ANOP                                                       PWF
ICFWORKA DSECT                                                      PWF
.COM     ANOP                                                       PWF
ICFADR1  DC    F'0'          POINTER TO FOOTPRINT TABLE
ICFADR2  DC    F'0'          *VS2-2 - REAL ADDR.OF PCCA VECTOR TABLE
ICFADR3  DC    F'0'          *VS2-2 - REAL ADDRESS OF CSD
ICFADR4  DC    F'0'     *POINTER TO ICFBIE00 - (ICFTIE00 FOR MVT ONLY)
         SPACE 3
ICFSEK00 DC    X'07',AL3(ICFCHR00),X'60',XL3'6' *SEEK CCW TRK 00    PWF
ICFSRC00 DC    X'31',AL3(ICFCHR00+2),X'60',XL3'5' *SRC FOR TRK 00   PWF
ICFTIC00 DC    X'08',AL3(ICFSRC00),X'60',XL3'1'  *TIC CCW TRK 00    PWF
ICFWRD00 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 00    PWF
         SPACE
ICFSEK01 DC    X'07',AL3(ICFCHR01),X'60',XL3'6' *SEEK CCW TRK 01    PWF
ICFSRC01 DC    X'31',AL3(ICFCHR01+2),X'60',XL3'5' *SRC FOR TRK 01   PWF
ICFTIC01 DC    X'08',AL3(ICFSRC01),X'60',XL3'1'  *TIC CCW TRK 01    PWF
ICFWRD01 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 01    PWF
         SPACE
ICFSEK02 DC    X'07',AL3(ICFCHR02),X'60',XL3'6' *SEEK CCW TRK 02    PWF
ICFSRC02 DC    X'31',AL3(ICFCHR02+2),X'60',XL3'5' *SRC FOR TRK 02   PWF
ICFTIC02 DC    X'08',AL3(ICFSRC02),X'60',XL3'1'  *TIC CCW TRK 02    PWF
ICFWRD02 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 02    PWF
         SPACE
ICFSEK03 DC    X'07',AL3(ICFCHR03),X'60',XL3'6' *SEEK CCW TRK 03    PWF
ICFSRC03 DC    X'31',AL3(ICFCHR03+2),X'60',XL3'5' *SRC FOR TRK 03   PWF
ICFTIC03 DC    X'08',AL3(ICFSRC03),X'60',XL3'1'  *TIC CCW TRK 03    PWF
ICFWRD03 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 03    PWF
         SPACE
ICFSEK04 DC    X'07',AL3(ICFCHR04),X'60',XL3'6' *SEEK CCW TRK 04    PWF
ICFSRC04 DC    X'31',AL3(ICFCHR04+2),X'60',XL3'5' *SRC FOR TRK 04   PWF
ICFTIC04 DC    X'08',AL3(ICFSRC04),X'60',XL3'1'  *TIC CCW TRK 04    PWF
ICFWRD04 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 04    PWF
         SPACE
ICFSEK05 DC    X'07',AL3(ICFCHR05),X'60',XL3'6' *SEEK CCW TRK 05    PWF
ICFSRC05 DC    X'31',AL3(ICFCHR05+2),X'60',XL3'5' *SRC FOR TRK 05   PWF
ICFTIC05 DC    X'08',AL3(ICFSRC05),X'60',XL3'1'  *TIC CCW TRK 05    PWF
ICFWRD05 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 05    PWF
         SPACE
ICFSEK06 DC    X'07',AL3(ICFCHR06),X'60',XL3'6' *SEEK CCW TRK 06    PWF
ICFSRC06 DC    X'31',AL3(ICFCHR06+2),X'60',XL3'5' *SRC FOR TRK 06   PWF
ICFTIC06 DC    X'08',AL3(ICFSRC06),X'60',XL3'1'  *TIC CCW TRK 06    PWF
ICFWRD06 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 06    PWF
         SPACE
ICFSEK07 DC    X'07',AL3(ICFCHR07),X'60',XL3'6' *SEEK CCW TRK 07    PWF
ICFSRC07 DC    X'31',AL3(ICFCHR07+2),X'60',XL3'5' *SRC FOR TRK 07   PWF
ICFTIC07 DC    X'08',AL3(ICFSRC07),X'60',XL3'1'  *TIC CCW TRK 07    PWF
ICFWRD07 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 07    PWF
         SPACE
ICFSEK08 DC    X'07',AL3(ICFCHR08),X'60',XL3'6' *SEEK CCW TRK 08    PWF
ICFSRC08 DC    X'31',AL3(ICFCHR08+2),X'60',XL3'5' *SRC FOR TRK 08   PWF
ICFTIC08 DC    X'08',AL3(ICFSRC08),X'60',XL3'1'  *TIC CCW TRK 08    PWF
ICFWRD08 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 08    PWF
         SPACE
ICFSEK09 DC    X'07',AL3(ICFCHR09),X'60',XL3'6' *SEEK CCW TRK 09    PWF
ICFSRC09 DC    X'31',AL3(ICFCHR09+2),X'60',XL3'5' *SRC FOR TRK 09   PWF
ICFTIC09 DC    X'08',AL3(ICFSRC09),X'60',XL3'1'  *TIC CCW TRK 09    PWF
ICFWRD09 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 09    PWF
         SPACE
ICFSEK10 DC    X'07',AL3(ICFCHR10),X'60',XL3'6' *SEEK CCW TRK 10    PWF
ICFSRC10 DC    X'31',AL3(ICFCHR10+2),X'60',XL3'5' *SRC FOR TRK 10   PWF
ICFTIC10 DC    X'08',AL3(ICFSRC10),X'60',XL3'1'  *TIC CCW TRK 10    PWF
ICFWRD10 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 10    PWF
         SPACE
ICFSEK11 DC    X'07',AL3(ICFCHR11),X'60',XL3'6' *SEEK CCW TRK 11    PWF
ICFSRC11 DC    X'31',AL3(ICFCHR11+2),X'60',XL3'5' *SRC FOR TRK 11   PWF
ICFTIC11 DC    X'08',AL3(ICFSRC11),X'60',XL3'1'  *TIC CCW TRK 11    PWF
ICFWRD11 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 11    PWF
         SPACE
ICFSEK12 DC    X'07',AL3(ICFCHR12),X'60',XL3'6' *SEEK CCW TRK 12    PWF
ICFSRC12 DC    X'31',AL3(ICFCHR12+2),X'60',XL3'5' *SRC FOR TRK 12   PWF
ICFTIC12 DC    X'08',AL3(ICFSRC12),X'60',XL3'1'  *TIC CCW TRK 12    PWF
ICFWRD12 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 12    PWF
         SPACE
ICFSEK13 DC    X'07',AL3(ICFCHR13),X'60',XL3'6' *SEEK CCW TRK 13    PWF
ICFSRC13 DC    X'31',AL3(ICFCHR13+2),X'60',XL3'5' *SRC FOR TRK 13   PWF
ICFTIC13 DC    X'08',AL3(ICFSRC13),X'60',XL3'1'  *TIC CCW TRK 13    PWF
ICFWRD13 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 13    PWF
         SPACE
ICFSEK14 DC    X'07',AL3(ICFCHR14),X'60',XL3'6' *SEEK CCW TRK 14    PWF
ICFSRC14 DC    X'31',AL3(ICFCHR14+2),X'60',XL3'5' *SRC FOR TRK 14   PWF
ICFTIC14 DC    X'08',AL3(ICFSRC14),X'60',XL3'1'  *TIC CCW TRK 14    PWF
ICFWRD14 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 14    PWF
         SPACE
ICFSEK15 DC    X'07',AL3(ICFCHR15),X'60',XL3'6' *SEEK CCW TRK 15    PWF
ICFSRC15 DC    X'31',AL3(ICFCHR15+2),X'60',XL3'5' *SRC FOR TRK 15   PWF
ICFTIC15 DC    X'08',AL3(ICFSRC15),X'60',XL3'1'  *TIC CCW TRK 15    PWF
ICFWRD15 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 15    PWF
         SPACE
ICFSEK16 DC    X'07',AL3(ICFCHR16),X'60',XL3'6' *SEEK CCW TRK 16    PWF
ICFSRC16 DC    X'31',AL3(ICFCHR16+2),X'60',XL3'5' *SRC FOR TRK 16   PWF
ICFTIC16 DC    X'08',AL3(ICFSRC16),X'60',XL3'1'  *TIC CCW TRK 16    PWF
ICFWRD16 DC    X'05',AL3(0),X'40',XL3'3000'   *WRITE DATA TRK 16    PWF
         SPACE
ICFSEK17 DC    X'07',AL3(ICFCHR17),X'60',XL3'6' *SEEK CCW TRK 17    PWF
ICFSRC17 DC    X'31',AL3(ICFCHR17+2),X'60',XL3'5' *SRC FOR TRK 17   PWF
ICFTIC17 DC    X'08',AL3(ICFSRC17),X'60',XL3'1'  *TIC CCW TRK 17    PWF
ICFWRD17 DC    X'05',AL3(0),X'00',XL3'3000'   *WRITE DATA TRK 17    PWF
         SPACE
ICFSEK18 DC    X'07',AL3(ICFCHR18),X'60',XL3'6' *SEEK CCW TRK 18    PWF
ICFSRC18 DC    X'31',AL3(ICFCHR18+2),X'60',XL3'5' *SRC FOR TRK 18   PWF
ICFTIC18 DC    X'08',AL3(ICFSRC18),X'60',XL3'1'  *TIC CCW TRK 18    PWF
ICFWRD18 DC    X'05',AL3(0),X'00',XL3'3000'   *WRITE DATA TRK 18    PWF
         SPACE
ICFSEK19 DC    X'07',AL3(ICFCHR19),X'60',XL3'6' *SEEK CCW TRK 19    PWF
ICFSRC19 DC    X'31',AL3(ICFCHR19+2),X'60',XL3'5' *SRC FOR TRK 19   PWF
ICFTIC19 DC    X'08',AL3(ICFSRC19),X'60',XL3'1'  *TIC CCW TRK 19    PWF
ICFWRD19 DC    X'05',AL3(0),X'00',XL3'3000'   *WRITE DATA TRK 19    PWF
         SPACE 3
ICFWADEV DC    XL4'450'      *DEVICE ADDRESS OF PRIMARY DATA SET    PWF
ICFWAUCB DC    XL4'0'        *UCB ADDRESS OF PRIMARY DATA SET       PWF
ICFWACHR DC    X'00000000000001'  *START OF PRIMARY EXTENT          PWF
ICFFLAGA DC    X'00'         *FLAG A FIELD                          PWF
         SPACE
ICFINOP  EQU   X'80'         *PWF FUNCTION INOPERATIVE              PWF
ICFCMTDM EQU   X'40'         *COMMIT TO DUMP                        PWF
ICFUSRC4 EQU   X'20'         *USER SET RETURN CODE OF 4
         SPACE 3
ICFWBDEV DC    XL4'457'      *DEVICE ADDRESS OF ALTRNT  DATA SET    PWF
ICFWBUCB DC    XL4'0'        *UCB ADDRESS OF ALTRNT  DATA SET       PWF
ICFWBCHR DC    X'00000000000001'  *START OF ALTRNT  EXTENT          PWF
ICFFLAGB DC    X'00'         *FLAG B FIELD                          PWF
         SPACE
ICFMVT   EQU   X'10'         *SYSTEM TYPE - MVT
ICFSVM   EQU   X'12'         *SYSTEM TYPE - VS2 R1
ICFMVM   EQU   X'13'         *SYSTEM TYPE - VS2 R2
ICFVS1   EQU   X'22'         *SYSTEM TYPE - VS1 R3
         SPACE 3
ICFTRSIZ DC    F'12288'      *NUMBER OF BYTES PER TRACK             PWF
ICFTPC   DC    F'19'         *NUMBER OF TRACKS PER CYLINDER         PWF
         SPACE 3
ICFCHR00 DC    X'0000000000000100'     *SEEK/SRCH ADDR.FOR TRK 00   PWF
ICFCHR01 DC    X'0000000000010100'     *SEEK/SRCH ADDR.FOR TRK 01   PWF
ICFCHR02 DC    X'0000000000020100'     *SEEK/SRCH ADDR.FOR TRK 02   PWF
ICFCHR03 DC    X'0000000000030100'     *SEEK/SRCH ADDR.FOR TRK 03   PWF
ICFCHR04 DC    X'0000000000040100'     *SEEK/SRCH ADDR.FOR TRK 04   PWF
ICFCHR05 DC    X'0000000000050100'     *SEEK/SRCH ADDR.FOR TRK 05   PWF
ICFCHR06 DC    X'0000000000060100'     *SEEK/SRCH ADDR.FOR TRK 06   PWF
ICFCHR07 DC    X'0000000000070100'     *SEEK/SRCH ADDR.FOR TRK 07   PWF
ICFCHR08 DC    X'0000000000080100'     *SEEK/SRCH ADDR.FOR TRK 08   PWF
ICFCHR09 DC    X'0000000000090100'     *SEEK/SRCH ADDR.FOR TRK 09   PWF
ICFCHR10 DC    X'00000000000A0100'     *SEEK/SRCH ADDR.FOR TRK 10   PWF
ICFCHR11 DC    X'00000000000B0100'     *SEEK/SRCH ADDR.FOR TRK 11   PWF
ICFCHR12 DC    X'00000000000C0100'     *SEEK/SRCH ADDR.FOR TRK 12   PWF
ICFCHR13 DC    X'00000000000D0100'     *SEEK/SRCH ADDR.FOR TRK 13   PWF
ICFCHR14 DC    X'00000000000E0100'     *SEEK/SRCH ADDR.FOR TRK 14   PWF
ICFCHR15 DC    X'00000000000F0100'     *SEEK/SRCH ADDR.FOR TRK 15   PWF
ICFCHR16 DC    X'0000000000100100'     *SEEK/SRCH ADDR.FOR TRK 16   PWF
ICFCHR17 DC    X'0000000000110100'     *SEEK/SRCH ADDR.FOR TRK 17   PWF
ICFCHR18 DC    X'0000000000120100'     *SEEK/SRCH ADDR.FOR TRK 18   PWF
ICFCHR19 DC    X'0000000000130100'     *SEEK/SRCH ADDR.FOR TRK 19   PWF
         SPACE 3
ICFSTSIZ DC    F'2097152'    *STORAGE SIZE                          PWF
ICFTME00 DC    F'2000'       *ORIGINAL TIME VALUE (IN MSEC)         PWF
ICFTME01 DC    XL8'200000000'     *ORIGINAL TIME IN TOD UNITS       PWF
ICFTOD00 DC    XL8'0'        *TIME AT ENTRY TO MCH APPENDAGE        PWF
ICFTOD01 DC    XL8'0'        *TIME AT INNER WARNING SIGNALS         PWF
ICFTOD99 DC    XL8'0'        *TIME TO COMMIT TO DUMP                PWF
ICFLRDAT DC    F'0'          *DATE OF DUMP FOR LOGREC
ICFLRTIM DC    F'0'          *TIME OF DUMP FOR LOGREC
ICFLRCPU DC    D'0'          *CPU ID FOR LOGREC
ICFLRCHA DC    D'0'          *CHANNEL ASSIGNMENT FOR LOGREC
ICFRSVD1 DC    2D'0'         *RESERVED
ICFPXREG DC    F'0'          *PREFIX REGISTER CONTENTS AT DUMP TIME
ICFTRMSA DC    F'0'          *TRACE FLAGS FOR MSI APPENDAGE
ICFTRMCA DC    F'0'          *TRACE FLAGS FOR MCH APPENDAGE
ICFTRDMP DC    F'0'          *TRACE FLAGS FOR DUMP
ICFIOMAP DC    9D'0'         *WORK AREA FOR IOSGEN                  PWF
         SPACE 3
ICFCNTRK DS    0CL512        *BUFFER FOR CONTROL RECORD             PWF
ICFCTID  DC    CL4'CNTL'     *CONTROL TRACK IDENTIFIER              PWF
ICFCTCF  DC    128X'12'      *CYLINDER FLAGS FOR 128 CYLINDERS      PWF
ICFCTFLA DC    X'00'         *CONTROL TRACK FLAG A                  PWF
         SPACE
ICFCTEMP EQU   X'00'         *DATA SET IS EMPTY                     PWF
ICFCTFUL EQU   X'80'         *DATA SET CONTAINS VALID DUMP          PWF
ICFCTINV EQU   X'08'         *DATA SET CONTAINS INVALID DUMP        PWF
ICFCTFBT EQU   X'84'         *DATA SET CONTAINS VALID DUMP BUT ONE  PWF
*                            *OR MORE TRACKS GAVE I/O ERRORS -      PWF
*                            *ALTERNATE TRACK(S) ARE IN USE         PWF
         SPACE 3
ICFCTTS  DC    F'12288'      *NO OF BYTES PER TRACK                 PWF
ICFCTAWA DC    F'0'          *ADDRESS OF PWF WORK AREA              PWF
         SPACE
ICFCTB11 DC    F'0'          *START OF STRG BLK ADDRESS             PWF
ICFCTB12 DC    X'00010000'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB13 DC    F'2097152'    *END OF STRG BLK ADDRESS               PWF
ICFCTB14 DC    X'000A0008'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB21 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB22 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB23 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB24 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB31 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB32 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB33 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB34 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB41 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB42 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB43 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB44 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB51 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB52 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB53 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB54 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB61 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB62 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB63 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB64 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB71 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB72 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB73 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB74 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE
ICFCTB81 DC    X'FFFFFFFF'   *START OF STRG BLK ADDRESS             PWF
ICFCTB82 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK BEGINS     PWF
ICFCTB83 DC    X'FFFFFFFF'   *END OF STRG BLK ADDRESS               PWF
ICFCTB84 DC    X'FFFFFFFF'   *TRK ADDR AT WHICH STRG BLK ENDS       PWF
         SPACE 3
ICFCTST  DC    XL8'0'        *TOD AT ENTRY TO MCH APPENDAGE         PWF
ICFCTED  DC    XL8'0'        *TOD AT END OF DUMP                    PWF
ICFCTTPC DC    F'0'          *NO. TRKS PER CYLINDER
ICFCTRDA DC    F'0'          *DEVICE ADDRESS FOR RESTORE
ICFCTPXR DC    F'0'          *PREFIX REGISTER CONTENTS AT DUMP TIME
ICFCTSTS DC    F'0'          *HIGHEST STORAGE ADDRESS FOR LOGREC
ICFCTDAT DC    F'0'          *DATE OF DUMP FOR LOGREC
ICFCTTIM DC    F'0'          *TIME OF DUMP FOR LOGREC
ICFCTCPU DC    D'0'          *CPU ID FOR LOGREC
ICFCTCHA DC    D'0'          *CHANNEL ASSIGNMENT FOR LOGREC
ICFCTRSV DC    XL184'0'      *RESERVED
ICFCTEND EQU   *             *END OF CONTROL TRACK BUFFER
         SPACE 3
ICFRSVD2 DC    2D'0'         *RESERVED                              PWF
ICFSAVE  DC    16F'0'        *REGISTER SAVE AREA FOR USER EXIT      PWF
ICFSNMCP DC    D'0'          * SA FOR HIS MCNPSW                    PWF
ICFMCOPS DC    D'0'          * SA FOR HIS MCOPSW                    PWF
ICFDMPWA DC    20D'0'        *WORK AREA FOR DUMP ROUTINE
ICFRSVD3 DC    32D'0'        *RESERVED
ICFWAEND EQU   *             *END OF PWF COMMUNICATION AREA
         MEND
./ ADD NAME=ICGDSMA1
 /***********************************************************@Y30LB12*/
 /*                                                          @Y30LB12*/
 /* PROCEDURE NAME - READS99                                 @Y30LB12*/
 /*                                                          @Y30LB12*/
 /* FUNCTION - CALL SCAN READ KEYWORD/PARAMETER SUBROUTINE   @Y30LB12*/
 /*            ICGDSS99.  PICK UP STARTING COLUMN FOR THIS   @Y30LB12*/
 /*            SCAN AND STARTING COLUMN FOR NEXT ENTRY INTO  @Y30LB12*/
 /*            ICGDSS99.  IF TERMINATING ERROR OCCURS IN     @Y30LB12*/
 /*            ICGDSS99, SET 'LASTPARM' TO TERMINATE IN THIS @Y30LB12*/
 /*            MODULE ON NEXT READ OF KEYWORD                @Y30LB12*/
 /*                                                          @Y30LB12*/
 /***********************************************************@Y30LB12*/
 READS99:  PROCEDURE;                                      /*@Y30LB12*/
           GEN (LINK EP=ICGDSS99);      /* TO SCAN KEYWORD/PARAMETER */
           /*************************************************@Y30LB12*/
           /* IF 'ENDSCAN' BIT IS ON, WE ENCOUNTERED SOME    @Y30LB12*/
           /* DISASTEROUS CONDITION THAT TERMINATED THE SCAN @Y30LB12*/
           /* OF THIS CONTROL STATEMENT.  THERE ERRORS ARE   @Y30LB12*/
           /* ASSOCIATED WITH SCANNING INTO COLUMN 73 AND    @Y30LB12*/
           /* WITH FINDING A FORMAT ERROR IN THE             @Y30LB12*/
           /* CONTINUATION STATEMENT.  SHOULD SUCH A         @Y30LB12*/
           /* CONDITION OCCUR, WE TERMINATE SCAN OF THE      @Y30LB12*/
           /* CONTROL STATEMENT UPON READ OF THE NEXT        @Y30LB12*/
           /* KEYWORD.                                       @Y30LB12*/
           /*************************************************@Y30LB12*/
           IF ENDSCAN = '1'B                               /*@Y30LB12*/
             THEN                                          /*@Y30LB12*/
               LASTPARM = '1'B;                            /*@Y30LB12*/
             ELSE;                                         /*@Y30LB12*/
           END READS99;                                    /*@Y30LB12*/
 @ EJECT;
./ ADD NAME=ICGDSMA2
 /***********************************************************@Y30LB12*/
 /*                                                          @Y30LB12*/
 /* PROCEDURE NAME - PUTIT1                                  @Y30LB12*/
 /*                                                          @Y30LB12*/
 /* FUNCTION - CALL ICGDSMSG, MESSAGE PRINT SUBROUTINE, TO   @Y30LB12*/
 /*            PUT TERMINATING MESSAGE FOR WHICH TEXT IS NOT @Y30LB12*/
 /*            IN ICGDSMSG BUT ALREADY BUILT IN 'OUTBUF2'    @Y30LB12*/
 /*                                                          @Y30LB12*/
 /***********************************************************@Y30LB12*/
 PUTIT1:   PROCEDURE;                                      /*@Y30LB12*/
           STOPSCAN = '1'B;                                /*@Y30LB12*/
           PRNTBUF2 = '1'B;                                /*@Y30LB12*/
           TERMINAT = TERMINAT + 1;                        /*@Y30LB12*/
           GEN (LINK  EP=ICGDSMSG);                        /*@Y30LB12*/
           PRNTBUF2 = '0'B;                                /*@Y30LB12*/
           END PUTIT1;                                     /*@Y30LB12*/
 @ EJECT;
./ ADD NAME=ICGDSMA3
 /***********************************************************@Y30LB12*/
 /*                                                          @Y30LB12*/
 /* PROCEDURE NAME - PUTIT2                                  @Y30LB12*/
 /*                                                          @Y30LB12*/
 /* FUNCTION - CALL ICGDSMSG, MESSAGE PRINT SUBROUTINE, TO   @Y30LB12*/
 /*            PUT TERMINATING MESSAGE FOR WHICH MESSAGE     @Y30LB12*/
 /*            TEXT IS IN ICGDSMSG.  'MSGNO' INDICATES THE   @Y30LB12*/
 /*            OFFSET OF THE MESSAGE TEXT.                   @Y30LB12*/
 /*                                                          @Y30LB12*/
 /***********************************************************@Y30LB12*/
 PUTIT2:   PROCEDURE;                                      /*@Y30LB12*/
           STOPSCAN = '1'B;                                /*@Y30LB12*/
           TERMINAT = TERMINAT + 1;                        /*@Y30LB12*/
           GEN (LINK  EP=ICGDSMSG);                        /*@Y30LB12*/
           END PUTIT2;                                     /*@Y30LB12*/
 @ EJECT;
./ ADD NAME=ICGDSMA4
 /***********************************************************@Y30LB12*/
 /*                                                          @Y30LB12*/
 /* PROCEDURE NAME - PUTIT3                                  @Y30LB12*/
 /*                                                          @Y30LB12*/
 /* FUNCTION - CALL ICGDSMSG, MESSAGE PRINT SUBROUTINE, TO   @Y30LB12*/
 /*            PUT WARNING MESSAGE FOR WHICH MESSAGE TEXT    @Y30LB12*/
 /*            IS NOT IN ICGDSMSG, BUT WHICH IS BUILT AND    @Y30LB12*/
 /*            PASSED IN 'OUTBUF2'.                          @Y30LB12*/
 /*                                                          @Y30LB12*/
 /***********************************************************@Y30LB12*/
 PUTIT3:   PROCEDURE;                                      /*@Y30LB12*/
           PRNTBUF2 = '1'B;                                /*@Y30LB12*/
           WARNING = WARNING + 1;                          /*@Y30LB12*/
           GEN (LINK  EP=ICGDSMSG);                        /*@Y30LB12*/
           PRNTBUF2 = '0'B;                                /*@Y30LB12*/
           END PUTIT3;                                     /*@Y30LB12*/
 @ EJECT;
./ ADD NAME=ICGDSMA5
 /***********************************************************@Y30LB12*/
 /*                                                          @Y30LB12*/
 /* THE FOLLOWING DECLARE STATEMENT DESCRIBES BUILDTAB,      @Y30LB12*/
 /* THE BUILD COMMUNICATIONS AREA.  THIS AREA IS OBTAINED    @Y30LB12*/
 /* AND FREED BY ICGDSBLD, THE BUILD EXECUTIVE PHASE.        @Y30LB12*/
 /*                                                          @Y30LB12*/
 /***********************************************************@Y30LB12*/
 DCL 1 BUILDTAB BOUNDARY(DWORD) BASED(BUILDPTR),           /*@Y30LB12*/
       /*****************************************************@Y30LB12*/
       /*                                                    @Y30LB12*/
       /* THE FOLLOWING AREA IS USED TO COMMUNICATE WITH     @Y30LB12*/
       /* THE DASD READ AND WRITE MODULES.  UPON CALL TO     @Y30LB12*/
       /* ICGDSB06, THIS AREA MUST CONTAIN                   @Y30LB12*/
       /*    1. THE ADDRESS OF THE DCB.                      @Y30LB12*/
       /*    2. THE ADDRESS OF THE BUFFER TO BE WRITTEN      @Y30LB12*/
       /*    3. THE VIRTUAL CYLINDER AND HEAD TO WHICH       @Y30LB12*/
       /*       TO WRITE.                                    @Y30LB12*/
       /*                                                    @Y30LB12*/
       /*****************************************************@Y30LB12*/
       2 COMB06,                                           /*@Y30LB12*/
         3 B06DCBPT FIXED(31),                             /*@Y30LB12*/
         3 B06BUFPT FIXED(31),                             /*@Y30LB12*/
         3 B06TBLID FIXED(8),                              /*@Y30LB12*/
         3 B06ADDR CHAR(3),                                /*@Y30LB12*/
           4 B06CYL FIXED(8),                              /*@Y30LB12*/
           4 B06HEAD FIXED(8),                             /*@Y30LB12*/
           4 B06REC FIXED(8),                              /*@Y30LB12*/
       /*****************************************************@Y30LB12*/
       /*                                                    @Y30LB12*/
       /* THE FOLLOWING AREA IS USED TO COMMUNICATE WITH     @Y30LB12*/
       /* THE DASD READ AND WRITE MODULES.  UPON CALL TO     @Y30LB12*/
       /* ICGDSB05, THIS AREA MUST CONTAIN                   @Y30LB12*/
       /*    1. THE ADDRESS OF THE DCB.                      @Y30LB12*/
       /*    2. THE ADDRESS OF THE BUFFER TO BE READ INTO    @Y30LB12*/
       /*    3. THE VIRTUAL CYLINDER AND HEAD FROM WHICH     @Y30LB12*/
       /*       TO READ.                                     @Y30LB12*/
       /*                                                    @Y30LB12*/
       /*****************************************************@Y30LB12*/
       2 COMB05,                                           /*@Y30LB12*/
         3 B05DCBPT FIXED(31),                             /*@Y30LB12*/
         3 B05BUFPT FIXED(31),                             /*@Y30LB12*/
         3 B05TBLID FIXED(8),                              /*@Y30LB12*/
         3 B05ADDR CHAR(3),                                /*@Y30LB12*/
           4 B05CYL FIXED(8),                              /*@Y30LB12*/
           4 B05HEAD FIXED(8),                             /*@Y30LB12*/
           4 B05REC FIXED(8),                              /*@Y30LB12*/
       /*****************************************************@Y30LB12*/
       /*                                                    @Y30LB12*/
       /* THE FOLLOWING IS A GENERAL WORK AREA CONTAINING    @Y30LB12*/
       /* POINTERS TO THE TWO BUFFERS OBTAINED IN THE        @Y30LB12*/
       /* 'BUILDTAB GETMAIN', THE ADDRESS OF THE NEXT        @Y30LB12*/
       /* AVAILABLE VIRTUAL CYLINDER AND HEAD ON SYSUT2,     @Y30LB12*/
       /*                                                    @Y30LB12*/
       /*****************************************************@Y30LB12*/
       2 BUILDGEN,                                         /*@Y30LB12*/
         3 ADDRBUF1 FIXED(31),                             /*@Y30LB12*/
         3 ADDRBUF2 FIXED(31),                             /*@Y30LB12*/
         3 UT2VCHR FIXED(31),                              /*@Y30LB12*/
           4 UT2TABID FIXED(8),                            /*@Y30LB12*/
           4 OUTADDR CHAR(3),                              /*@Y30LB12*/
             5 UT2VCYL FIXED(8),                           /*@Y30LB12*/
             5 UT2VHEAD FIXED(8),                          /*@Y30LB12*/
             5 UT2VREC FIXED(8),                           /*@Y30LB12*/
         3 UT1VCHR FIXED(31),                              /*@Y30LB12*/
           4 UT1TABID FIXED(8),                            /*@Y30LB12*/
           4 INADDR CHAR(3),                               /*@Y30LB12*/
             5 UT1VCYL FIXED(8),                           /*@Y30LB12*/
             5 UT1VHEAD FIXED(8),                          /*@Y30LB12*/
             5 UT1VREC FIXED(8),                           /*@Y30LB12*/
       2 UT1STUFF BOUNDARY(DWORD),                         /*@Y30LB12*/
         3 UT1DCB CHAR(96),                                /*@Y30LB12*/
         3 UT1FLAG BIT(32),                                /*@Y30LB12*/
           4 UT1VUPDT BIT(1),                              /*@Y30LB12*/
           4 UT1VOERR BIT(1),                              /*@Y30LB12*/
           4 UT1VWERR BIT(1),                              /*@Y30LB12*/
           4 * BIT(29),                                    /*@Y30LB12*/
         3 UT1JFCB CHAR(176),                              /*@Y30LB12*/
         3 UT1ECB CHAR(4),                                 /*@Y30LB12*/
         3 UT1IOB CHAR(40),                                /*@Y30LB12*/
         3 UT1CCWS (37) CHAR(8),                           /*@Y30LB12*/
         3 UT1DDN CHAR(8),                                 /*@Y30LB12*/
       /*****************************************************@Y30LB12*/
       /*                                                    @Y30LB12*/
       /* THE FOLLOWING AREA WILL CONTAIN THE DCB, IOB,      @Y30LB12*/
       /* AND CCW STRINGS FOR SYSUT2, THE 'NEW' TABLES       @Y30LB12*/
       /* PACK,                                              @Y30LB12*/
       /*                                                    @Y30LB12*/
       /*****************************************************@Y30LB12*/
       2 UT2STUFF BOUNDARY(DWORD),                         /*@Y30LB12*/
         3 UT2DCB CHAR(96),                                /*@Y30LB12*/
         3 UT2FLAG BIT(32),                                /*@Y30LB12*/
           4 UT2VUPDT BIT(1),                              /*@Y30LB12*/
           4 UT2VOERR BIT(1),                              /*@Y30LB12*/
           4 UT2VWERR BIT(1),                              /*@Y30LB12*/
           4 UT2VCERR BIT(1),                              /*@Y30LB12*/
           4 * BIT(28),                                    /*@Y30LB12*/
         3 UT2JFCB CHAR(176),                              /*@Y30LB12*/
         3 UT2ECB CHAR(4),                                 /*@Y30LB12*/
         3 UT2IOB CHAR(40),                                /*@Y30LB12*/
         3 UT2CCWS (37) CHAR(8),                           /*@Y30LB12*/
         3 UT2DDN CHAR(8),                                 /*@Y30LB12*/
       2 UT3STUFF BOUNDARY(DWORD),                         /*@Y30LB12*/
         3 UT3DCB CHAR(96),                                /*@Y30LB12*/
         3 UT3FLAG BIT(32),                                /*@Y30LB12*/
           4 UT3VUPDT BIT(1),                              /*@Y30LB12*/
           4 UT3VOERR BIT(1),                              /*@Y30LB12*/
           4 UT3VWERR BIT(1),                              /*@Y30LB12*/
           4 * BIT(29),                                    /*@Y30LB12*/
         3 UT3JFCB CHAR(176),                              /*@Y30LB12*/
         3 UT3ECB CHAR(4),                                 /*@Y30LB12*/
         3 UT3IOB CHAR(40),                                /*@Y30LB12*/
         3 UT3CCWS (37) CHAR(8),                           /*@Y30LB12*/
         3 UT3DDN CHAR(8),                                 /*@Y30LB12*/
         3 * CHAR(4),                                      /*@Y30LB12*/
       2 CVERIFY CHAR(1584),                               /*@Y30LB12*/
       2 NVERIFY CHAR(1584),                               /*@Y30LB12*/
       2 UT1BUFER CHAR(8448),                              /*@Y30LB12*/
       2 UT2BUFER CHAR(8704),                              /*@Y30LB12*/
       2 LTRTRANO (40) FIXED(15),                          /*@Y30LB12*/
       2 LTRTRANI (40) FIXED(15),                          /*@Y30LB12*/
       2 TEMPEND CHAR(1);                                  /*@Y30LB12*/
./ ADD NAME=ICGDSMAC
 /********************************************************** @Y30LB12*/
 /* THE FOLLOWING STRUCTURES, COMTAB AND COMTAB2, ARE THE    @Y30LB12*/
 /* MAPPING OF THE GETMAIN AREA OBTAINED BY ICGDSINT.        @Y30LB12*/
 /* COMTAB IS BASED OFF REGISTER 4 (RESERVED THROUGHOUT      @Y30LB12*/
 /* TABLE CREATE) AND COMTAB2 IS BASED OFF THE POINTER       @Y30LB12*/
 /* COMPTR2 WITHIN COMTAB.                                   @Y30LB12*/
 /********************************************************** @Y30LB12*/
 DCL 1 COMTAB BOUNDARY(DWORD) BASED(R4),/*                   @Y30LB12*/
       2 PATCH CHAR(256),               /* PATCH, INIT 0     @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING AREA WILL CONTAIN THE DCB FOR SYSIN  @Y30LB12*/
       /* DURING SCAN AND THE DCB FOR SYSPUNCH DURING BUILD. @Y30LB12*/
       /* IN EACH CASE, A MODEL DCB IS COPIED INTO THIS AREA @Y30LB12*/
       /* AND THE OPEN IS PERFORMED ON THIS COPY.            @Y30LB12*/
       /* IN THIS AREA IS ALSO THE WORK AREA USED DURING     @Y30LB12*/
       /* READING FROM SYSIN                                 @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 READER BOUNDARY(DWORD),        /*                   @Y30LB12*/
         3 READDCB CHAR(96),            /* SYSIN/SYSPCH DCB  @Y30LB12*/
         3 READFLAG BIT(8),             /* SYSIN FLAG BITS   @Y30LB12*/
           4 READTERM BIT(1),           /* END OF DATA, S99  @Y30LB12*/
           4 KEYBIT BIT(1),             /* SCANNED KEYWORD   @Y30LB12*/
           4 PARMBIT BIT(1),            /* SCANNED PARAMETER @Y30LB12*/
           4 ENDSCAN BIT(1),            /* ABNORMAL END, S99 @Y30LB12*/
           4 LASTPARM BIT(1),           /* NORMAL END        @Y30LB12*/
           4 * BIT(3),                  /* UNUSED            @Y30LB12*/
         3 * CHAR(2),                   /* UNUSED            @Y30LB12*/
         3 PCHBF CHAR(1),               /* SYSPUNCH WORKAREA @Y30LB12*/
           4 SSELECT CHAR(1),           /* STACKER SELECT    @Y30LB12*/
         3 INBUF CHAR(80),              /* SYSIN WORK AREA   @Y30LB12*/
         3 STARTCOL PTR(31),            /* CURRENT START COL @Y30LB12*/
         3 NEXTCOL PTR(31),             /* START NEXT FIELD  @Y30LB12*/
         3 SAVESCOL PTR(31),            /* SAVED CURR START  @Y30LB12*/
         3 SAVENCOL PTR(31),            /* SAVED START NEXT  @Y30LB12*/
         3 SVSYNAD2 PTR(31),            /* SAVE, SYSIN SYNAD @Y30LB12*/
         3 SVEODAD PTR(31),             /* SAVE, SYSIN EODAD @Y30LB12*/
         3 SCANLEN FIXED(15),           /* LEN OF SCAN DATA  @Y30LB12*/
         3 * FIXED(15),                 /* UNUSED            @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THIS IS THE DCB FOR SYSPRINT.  IT WILL BE USED     @Y30LB12*/
       /* FOR THE ENTIRE DURATION OF THE RUN.                @Y30LB12*/
       /* INCLUDED ALSO IN THIS AREA IS THE WORK AREA        @Y30LB12*/
       /* USED FOR COMMUNICATIONS WITH THE MESSAGE           @Y30LB12*/
       /* WRITER                                             @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 PRINTER BOUNDARY(DWORD),       /*                   @Y30LB12*/
         3 DCBPRINT CHAR(96),           /* SYSPRINT DCB      @Y30LB12*/
         3 PAGENO CHAR(4),              /* STARTING PAGE NO. @Y30LB12*/
         3 LINECTR FIXED(15),           /* LINES LEFT TO PRT @Y30LB12*/
         3 LINECT FIXED(15),            /* LINES PER PAGE    @Y30LB12*/
         3 OUTBUF CHAR(121),            /* 1ST PRINT BUFFER  @Y30LB12*/
         3 OUTBUF2 CHAR(121),           /* 1ST PRINT BUFFER  @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THIS AREA IS USED FOR COMMUNICATIONS WITH THE      @Y30LB12*/
       /* MESSAGE WRITER (ICGDSMSG).                         @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 MESSAGES,                      /*                   @Y30LB12*/
         3 RETCODE FIXED(15),           /* HIGHEST RETURN CD @Y30LB12*/
         3 MSGNO FIXED(15),             /* MSG PTR, ICGDSMSG @Y30LB12*/
         3 WARNING FIXED(15),           /* COUNT WARNING MSG @Y30LB12*/
         3 TERMINAT FIXED(15),          /* COUNT TERM MSGS   @Y30LB12*/
         3 WARN CHAR(4),                /* PRINTABLE WARN CT @Y30LB12*/
         3 TERM CHAR(4),                /* PRINTABLE TERM CT @Y30LB12*/
         3 PRINTRC CHAR(2),             /* PRINTABLE RET CD  @Y30LB12*/
         3 SPECLMSG BIT(8),             /* ICGDSMSG FLAGS    @Y30LB12*/
           4 NEED101 BIT(1),            /* NEED ICGDS101 MSG @Y30LB12*/
           4 NEED102 BIT(1),            /* NEED ICGDS102 MSG @Y30LB12*/
           4 * BIT(1),                  /* UNUSED            @Y30LB12*/
           4 PRNTCARD BIT(1),           /* PRINT CARD IMAGE  @Y30LB12*/
           4 * BIT(1),                  /* UNUSED            @Y30LB12*/
           4 ENDPHASE BIT(1),           /* ICGDS103,4,5,OR 6 @Y30LB12*/
           4 NEEDEOJ BIT(1),            /* NEED ICGDS107     @Y30LB12*/
           4 PRNTBUF2 BIT(1),           /* PRINT FROM BUF2   @Y30LB12*/
         3 * CHAR(3),                   /* UNUSED            @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING AREA IS A GENERAL WORK AREA USED     @Y30LB12*/
       /* TO HANDLE I/O OPERATIONS.  IT ALSO CONTAINS THE    @Y30LB12*/
       /* POINTER TO THE COMMON WORK AREA FOR BUILD ROUTINES.@Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 GENIO,                         /*                   @Y30LB12*/
         3 OPENLIST CHAR(4) BOUNDARY(WORD),/* TO EXEC OPEN   @Y30LB12*/
         3 DCBPTR PTR(31),              /* FOR DCB OVERLAY   @Y30LB12*/
           4 DCBFLAG CHAR(1),           /* OPTIONS FLAG      @Y30LB12*/
           4 * CHAR(3),                 /*                   @Y30LB12*/
         3 EXLST CHAR(4),               /* EXIT LIST         @Y30LB12*/
         3 SAVE14 CHAR(4),              /* R14 DURING EXITS  @Y30LB12*/
         3 COMPTR2 PTR(31) BOUNDARY(WORD), /* PTR TO COMTAB2 @Y30LB12*/
         3 BUILDPTR PTR(31) BOUNDARY(WORD), /* PTR BUILDTAB  @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THIS AREA CONTAINS THE INVOKER'S REGISTER 1 AND    @Y30LB12*/
       /* THE NAMES OF USER SUPPLIED ALTERNATE DDNAMES.      @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 INVOKED,                       /*                   @Y30LB12*/
         3 PARMPTR PTR(31),             /* INVOKER'S PARM R1 @Y30LB12*/
         3 SAVEDDS,                     /* ALTERNATE DDNAMES @Y30LB12*/
           4 SVSYSIN CHAR(8),           /* ALT. SYSIN        @Y30LB12*/
           4 SVSYSPCH CHAR(8),          /* ALT. SYSPUNCH     @Y30LB12*/
           4 SVSYSUT1 CHAR(8),          /* ALT. SYSUT1       @Y30LB12*/
           4 SVSYSUT2 CHAR(8),          /* ALT. SYSUT2       @Y30LB12*/
           4 SVSYSUT3 CHAR(8),          /* ALT. SYSUT3       @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING STRUCTURE CONTAINS PART OF THE       @Y30LB12*/
       /* INFORMATION REQUIRED TO BUILD THE STAGING DRIVE    @YD00113*/
       /* GROUP TABLE AND TO VERIFY CONSISTENCY OF RSG       @Y30LB12*/
       /* ASSIGNMENT.  THE LRU THRESHOLD AND LRU TIMESTAMP   @Y30LB12*/
       /* INFORMATION IS OBTAINED FROM THE SDGXX CONTROL     @YD00113*/
       /* STATEMENT.  THE REMAINDER OF THE INFORMATION IS    @Y30LB12*/
       /* BUILT FROM INFORMATION CONTAINED IN THE DASD       @YD00113*/
       /* CONTROL STATEMENT.  THE INFORMATION IS USED TO     @Y30LB12*/
       /* COMPLETE FIELDS IN THE PAGE AVAILABILITY BLOCK     @Y30LB12*/
       /* OF THE SDG TABLE                                   @YD00113*/
       /*                                                    @Y30LB12*/
       /* TODS1 AND TODS2 ARE INITIALIZED IN ICGDSSCN TO     @Y30LB12*/
       /* 'FF'X.  ARE OTHER FIELDS ARE INITIALIZED TO BINARY @Y30LB12*/
       /* ZEROS.                                             @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 BUILDRSG,                      /*                   @Y30LB12*/
         3 RSGS (30) CHAR(9),           /* TABLE HOLDS 30    @Y30LB12*/
           4 RSG CHAR(9),               /* ONE GROUP         @Y30LB12*/
             5 RSGSPEC BIT(1),          /* GROUP SPECIFIED   @Y30LB12*/
             5 RSGABOX BIT(2),          /* A-BOX ATTACHMENT  @Y30LB12*/
               6 RSGABOX0 BIT(1),       /* ON LOGICAL ABOX 0 @Y30LB12*/
               6 RSGABOX1 BIT(1),       /* ON LOGICAL ABOX 1 @Y30LB12*/
             5 * BIT(5),                /* UNUSED            @Y30LB12*/
             5 RSGLDEL FIXED(8),        /* LOWER LRU DELTA   @Y30LB12*/
             5 RSGUDEL FIXED(8),        /* UPPER LRU DELTA   @Y30LB12*/
             5 RSGSLICE CHAR(4),        /* 4 TIME-STAMPS     @Y30LB12*/
             5 RSGTODS CHAR(2),         /* DS CONNECTIONS    @Y30LB12*/
               6 TODS1 CHAR(1),         /* FIRST (LOWER) DS  @Y30LB12*/
               6 TODS2 CHAR(1),         /* OPTIONAL 2ND DS   @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING AREA IS USED TO DESCRIBE THE         @Y30LB12*/
       /* MASS STORAGE FACILITIES ATTACHED TO THE SUBSYSTEM. @YD00113*/
       /* ONLY TWO MSFS ARE SUPPORTED, AND THE FIRST LOGICAL @YD00113*/
       /* MSF IDENTIFICATION MUST BE 0.  IF A SECOND MSF IS  @YD00113*/
       /* PRESENT, IT MUST BE MSF 1.                         @YD00113*/
       /**************************************************** @Y30LB12*/
       2 LIBRARY,                       /*                   @Y30LB12*/
         3 LIBS (4) CHAR(12),           /* POSITIONAL, LIBID @Y30LB12*/
           4 LIB CHAR(12),              /*                   @Y30LB12*/
             5 LIBBITS,                 /*                   @Y30LB12*/
               6 LIBSPEC BIT(1),        /* LIBRARY PRESENT   @Y30LB12*/
               6 * BIT(7),              /* UNUSED            @Y30LB12*/
             5 LIBSIZE CHAR(1),         /* NUMBER OF FRAMES  @Y30LB12*/
             5 LIBDSMID CHAR(1),        /* ADDRESS FROM DSM  @Y30LB12*/
             5 LIBMAP CHAR(1),          /* LOADMAP CHOSEN    @Y30LB12*/
             5 MAPEXIT CHAR(8),         /* USER EXIT NAME    @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THIS STRUCTURE CONTAINS THE INFORMATION NEEDED TO  @Y30LB12*/
       /* COMPLETE THE DEVICE PORTION OF THE PAB (PAGE       @Y30LB12*/
       /* AVAILABILITY BLOCK) OF THE RSG TABLE.  THE         @Y30LB12*/
       /* STRUCTURE IS ORGANIZED BY LOGICAL DEVICE WITHIN    @Y30LB12*/
       /* REAL SPINDLE GROUP.  THE FLAGS PABEXIST, PABIBERG, @Y30LB12*/
       /* AND PABBERG2, AND THE BYTE PABAADDD ARE COMPLETED  @Y30LB12*/
       /* FROM INFORMATION SCANNED FROM THE SPINDLES         @Y30LB12*/
       /* STATEMENT.  THE BYTE PABREAL IS COMPLETED FROM     @Y30LB12*/
       /* MOVING THE REAL INTERFACE INFORMATION SCANNED      @Y30LB12*/
       /* FROM THE UPPERCON STATEMENT INTO THIS TABLE        @Y30LB12*/
       /* DURING ANALYZE.  THE FLAG PABDSMTL (PACK CONTAINS  @Y30LB12*/
       /* DSM TABLES) IS SET DURING ANALYZE.  THE FLAG       @Y30LB12*/
       /* PABVOVIR (VOLUME AVAILABLE FOR STAGING) IS SET     @Y30LB12*/
       /* DURING ACTUAL OUTPUT OF THE DATA TO DASD.          @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 PABTABLE (30,8) CHAR(3),       /*                   @Y30LB12*/
         3 PABDEV CHAR(3),              /* EACH DEVICE       @Y30LB12*/
           4 PABFLAGS BIT(8),           /*                   @Y30LB12*/
             5 PABEXIST BIT(1),         /* LOGICAL DEVICE    @Y30LB12*/
             5 PABVOVIR BIT(1),         /* VARIED ON VIRTUAL @Y30LB12*/
             5 * BIT(1),                /* NOT INITIALIZED   @Y30LB12*/
             5 PABIBERG BIT(1),         /* PHYSICAL 3330-11  @Y30LB12*/
             5 PABDSMTL BIT(1),         /* CONTAINS TABLES   @Y30LB12*/
             5 * BIT(2),                /* NOT INITIALIZED   @Y30LB12*/
             5 PABBERG2 BIT(1),         /* 2ND HALF, 3330-11 @Y30LB12*/
           4 PABREAL BIT(8),            /* REAL INTERFACES   @Y30LB12*/
             5 PABIMPLR BIT(1),         /* REAL AT IMPL      @Y30LB12*/
             5 PAB1B BIT(1),            /* 1ST DS INT B      @Y30LB12*/
             5 PAB1C BIT(1),            /* 1ST DS INT C      @Y30LB12*/
             5 PAB1D BIT(1),            /* 1ST DS INT D      @Y30LB12*/
             5 * BIT(1),                /* NOT INITIALIZED   @Y30LB12*/
             5 PAB2B BIT(1),            /* 2ND DS INT B      @Y30LB12*/
             5 PAB2C BIT(1),            /* 2ND DS INT C      @Y30LB12*/
             5 PAB2D BIT(1),            /* 2ND DS INT D      @Y30LB12*/
           4 PABAADDD BIT(8),           /* PHYSICAL ADDRESS  @Y30LB12*/
             5 PABZEROS BIT(3),         /* ALWAYS ZEROS      @Y30LB12*/
             5 PABAA BIT(2),            /* DASD CONTROLLER   @Y30LB12*/
             5 PABDDD BIT(3),           /* PHYSICAL DEVICE   @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING TWO STRUCTURES CONTAIN THE DATA      @Y30LB12*/
       /* EXTRACTED FROM THE SPINDLES CONTROL STATEMENT.     @Y30LB12*/
       /*                                                    @Y30LB12*/
       /* THE STRUCTURE DSPAIRS IS ORGANIZED BY DASD         @Y30LB12*/
       /* CONTROLLER WITHIN DATA STAGER AND INDICATES THE    @Y30LB12*/
       /* SECOND DATA STAGER (IF ANY) TO WHICH THE DASD      @Y30LB12*/
       /* CONTROLLER ATTACHES.   IF 'A' POINTS TO 'B'        @Y30LB12*/
       /* 'B' ALSO POINTS AT 'A'. THIS STRUCTURE IS          @Y30LB12*/
       /* INITIALIZED TO 'FF'X IN ICGDSSCN.                  @Y30LB12*/
       /*                                                    @Y30LB12*/
       /* THE STRUCTURE PHYSTYPE IS ORGANIZED BY PHYSICAL    @Y30LB12*/
       /* DEVICE ADDRESS WITHIN DASD CONTROLLER WITHIN DATA  @Y30LB12*/
       /* DATA STAGER. THIS STRUCTURE IS USED TO INDICATE    @Y30LB12*/
       /* THETHER THE SPECIFIC PHYSICAL SPINDLE EXISTS       @Y30LB12*/
       /* WITHIN THE CONFIGURATION (NON-EXISTENT IS '00'B    @Y30LB12*/
       /* IN THE BITS 'MERLICEB'), WHERTHER THE SPINDLE IS   @Y30LB12*/
       /* A 3330 MODEL 1 ('01' IN 'MERLICEB) OR A 3330       @Y30LB12*/
       /* MODEL 11 ('10' IN 'MERLICEB), WHETHER THE SPINDLE  @Y30LB12*/
       /* HAS AN SSID OR WHETHER IT IS REAL, AND, FOR        @Y30LB12*/
       /* SPINDLES WITH SSID, THE REAL SPINDLE GROUP, THE    @Y30LB12*/
       /* LOGICAL A-BOX, AND THE LOGICAL DEVICE.             @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 DSPAIRS (16,4) CHAR(1),        /*                   @Y30LB12*/
         3 PHYSDS2 CHAR(1),             /* SECOND DS (OPT)   @Y30LB12*/
       2 PHYSTYPE (16,4,8) CHAR(2),     /* 16 DS 4 ABOX 8 DV @Y30LB12*/
         3 PHYSFLGS BIT(8),             /*                   @Y30LB12*/
           4 MERLICEB BIT(2),           /* IF 00, NO DEVICE  @Y30LB12*/
           4 PHYSREAL BIT(1),           /* NON-SUBSYSTEM     @Y30LB12*/
           4 PHYSSSID BIT(1),           /* SUBSYSTEM DASD    @Y30LB12*/
           4 LOGABOX1 BIT(1),           /* LOGICAL A-BOX 1   @Y30LB12*/
           4 LGDEVICE BIT(3),           /* LOGICAL DEVICE    @Y30LB12*/
         3 SPNRSGNO BIT(8),             /* RSG NUMBER        @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING STRUCTURE DESCRIBES THE CPU          @Y30LB12*/
       /* STRUCTURE OF THE CONFIGURATION TABLE (BYTES        @Y30LB12*/
       /* 128-255 OF THE FIRST BLOCK).  THIS PORTION OF THE  @Y30LB12*/
       /* CONFIGURATION TABLES DESCRIBES THE MANUFACTURER'S  @Y30LB12*/
       /* IDENTIFICATION OF THE CPUS THAT INTERFACE WITH THE @Y30LB12*/
       /* SUBSYSTEM, AND THOSE CPUS' CONNECTIONS WITH ONE    @Y30LB12*/
       /* ANOTHER.                                           @Y30LB12*/
       /* THE COUNTER 'CPUNUM' IS NOT PART OF THE OUTPUT IT  @Y30LB12*/
       /* TABLE.  IT IS USED INTERNALLY IN ICGDSS02 TO       @Y30LB12*/
       /* DEVELOP THE LOGICAL CPUID (0-F) TO BE USED TO      @Y30LB12*/
       /* PLACE ENTRIES IN THE TABLE.  IT IS ALSO THE        @Y30LB12*/
       /* NUMBER OF ENTRIES CURRENTLY IN THE TABLE.          @Y30LB12*/
       /* ALL OTHER FIELDS IN THE STRUCTURE ARE BUILT IN     @Y30LB12*/
       /* THE SAME FORMAT THAT THEY WILL HAVE IN THE         @Y30LB12*/
       /* OUTPUT TABLE.                                      @Y30LB12*/
       /* THE THREE BITS IN THIS STRUCTURE CALLED 'OPSYSTYP' @ZD02028*/
       /* ARE NOT PART OF THE CPU ASSOCIATION TABLE AND ARE  @ZD02028*/
       /* RESET IN THE STRUCTURE PRODUCED BY ICGDSB08.       @ZD02028*/
       /**************************************************** @Y30LB12*/
       2 CPUASSOC,                      /*                   @Y30LB12*/
         3 CPUNUM FIXED(15),            /* CURRENT ENTRIES   @Y30LB12*/
         3 CPUS (16) CHAR(8),           /* ENTIRE, 128 BYTES @Y30LB12*/
           4 CPU CHAR(8),               /* ONE OF 16 ENTRIES @Y30LB12*/
             5 CPUID CHAR(5),           /* MANUFACTURER'S ID @Y30LB12*/
             5 TOMPCPU BIT(8),          /* MPCPU, AS BIT SW  @Y30LB12*/
             5 CPUFLAG1 BIT(8),         /* FLAG BYTE         @Y30LB12*/
               6 * BIT(1),              /* NOT INITIALIZED   @Y30LB12*/
               6 CPUTIGHT BIT(1),       /* TIGHTLY-COUPLED   @Y30LB12*/
               6 CPUALTFL BIT(1),       /* CPU HAS ALT. INT. @YD00142*/
               6 OPSYSTYP BIT(3),       /* PRIMARY OP SYSTEM @ZD02028*/
                 7 OPVS1 BIT(1),        /* USE OS/VS1        @ZD02028*/
                 7 OPVS2 BIT(1),        /* USE OS/VS2        @ZD02028*/
                 7 OPJES3 BIT(1),       /* IN JES3 NETWORK   @Z40LB73*/
               6 CPUMSCIN BIT(2),       /* MSC INTERFACE     @Y30LB12*/
             5 CPUFLAG2 BIT(8),         /* FLAG BYTE         @Y30LB12*/
               6 CPUSPEC BIT(1),        /* SPEC. AS CPUID    @Y30LB12*/
               6 * BIT(1),              /* NOT INITIALIZED   @YD00142*/
               6 ALTMSGBF BIT(1),       /* MSG BUFFER FLAG   @YD00142*/
               6 * BIT(3),              /* NOT INITIALIZED   @YD00142*/
               6 ALTMSCIN BIT(2),       /* ALT MSC INTERFACE @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING TWO AREAS (LOWERCON AND LIBCTL) ARE  @Y30LB12*/
       /* USED TO HOLD THE VALUES SCANNED FROM THE           @Y30LB12*/
       /* 'LOWERCON' CONTROL STATEMENT                       @Y30LB12*/
       /* LOWERCON IS ORGANIZED BY DATA STAGER BY LIBRARY    @Y30LB12*/
       /* READ/WRITE CONTROL UNIT IDENTIFICATION.            @Y30LB12*/
       /* LIBCTL IS ORGANIZED BY LIBRARY BY LIBRARY          @Y30LB12*/
       /* READ/WRITE CONTROL UNIT POSITION AND IS USED TO    @Y30LB12*/
       /* INDICATE WHETHER THE POSITION IS AVAILABLE OR      @Y30LB12*/
       /* ALREADY IN USE.                                    @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 LOWERCON,                      /*                   @Y30LB12*/
         3 LOWDSS (16,4) CHAR(2),       /* CU WITHIN DS      @Y30LB12*/
           4 LOWFLGS BIT(8),            /* EACH CTL. UNIT    @Y30LB12*/
             5 LOWSPEC BIT(1),          /* CU ADDR SPECIFIED @Y30LB12*/
             5 LOWRW01 BIT(1),          /* TO READ/WRITES 01 @Y30LB12*/
             5 LOWRW23 BIT(1),          /* TO READ/WRITES 23 @Y30LB12*/
             5 LOWRW45 BIT(1),          /* TO READ/WRITES 45 @Y30LB12*/
             5 LOWRW67 BIT(1),          /* TO READ/WRITES 67 @Y30LB12*/
             5 LOWLEFT BIT(1),          /* TO LEFT INTERFACE @Y30LB12*/
             5 LOWRGHT BIT(1),          /* RIGHT INTERFACE   @Y30LB12*/
             5 * BIT(1),                /* UNUSED            @Y30LB12*/
           4 LOWLIB CHAR(1),            /* IN LIBRARY        @Y30LB12*/
       2 LIBCTL,                        /*                   @Y30LB12*/
         3 LIBCTLS (4) CHAR(1),         /* FOR LOGICAL LIB   @Y30LB12*/
           4 RW01LEFT BIT(1),           /* LEFT RW01 USED    @Y30LB12*/
           4 RW01RGHT BIT(1),           /* RIGHT RW01 USED   @Y30LB12*/
           4 RW23LEFT BIT(1),           /* LEFT RW23 USED    @Y30LB12*/
           4 RW23RGHT BIT(1),           /* RIGHT RW23 USED   @Y30LB12*/
           4 RW45LEFT BIT(1),           /* LEFT RW45 USED    @Y30LB12*/
           4 RW45RGHT BIT(1),           /* RIGHT RW45 USED   @Y30LB12*/
           4 RW67LEFT BIT(1),           /* LEFT RW67 USED    @Y30LB12*/
           4 RW67RGHT BIT(1),           /* RIGHT RW67 USED   @Y30LB12*/
 @ EJECT;
       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING AREA IS USED TO HOLD THE VALUES      @Y30LB12*/
       /* SCANNED FROM THE 'CREATE' CONTROL STATEMENT.       @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 CREATE,                        /*                   @Y30LB12*/
         3 * BIT(8),                    /*                   @Y30LB12*/
           4 CMDCREAT BIT(1),           /* STATEMENT PRESENT @Y30LB12*/
           4 NEWCREAT BIT(1),           /* NEW SPECIFIED     @Y30LB12*/
           4 UPDCREAT BIT(1),           /* UPDATE SPECIFIED  @Y30LB12*/
           4 PRNTONLY BIT(1),           /* ONLY PRINTED DATA @Y30LB12*/
           4 CYLFAULT BIT(1),           /* CYL FAULT OPTED   @G24LB42*/
           4 BINTIND BIT(1),            /* CI 'B' INDICATOR. @ZA20268*/
           4 CINTIND BIT(1),            /* CI 'C' INDICATOR  @ZA20268*/
           4 DINTIND BIT(1),            /* CI 'D' INDICATOR  @ZA20268*/
         3 VPAGES(4) FIXED(8),          /* LOG TO REAL MAP   @Y30LB12*/
         3 VOLSER CHAR(6),              /* VOLUME SERIAL NO. @Y30LB12*/
         3 LRUCLOCK CHAR(1),            /* MASTER LRU CLOCK  @Y30LB12*/
       2 COM2BASE CHAR(8) BOUNDARY(DWORD); /* START COMTAB2  @Y30LB12*/
  DCL  PHYSFNUL  BIT(2)  CONSTANT('00'B);  /* NO DEVICE      @X50RSPC*/
  DCL  PHYSFICE  BIT(2)  CONSTANT('01'B);  /* 3330 MODEL 11  @X50RSPC*/
  DCL  PHYSFMER  BIT(2)  CONSTANT('10'B);  /* 3330 MODEL 1   @X50RSPC*/
  DCL  PHYSFMAD  BIT(2)  CONSTANT('11'B);  /* 3350           @X50RSPC*/
 @ EJECT;
 /********************************************************** @Y30LB12*/
 /* THE FOLLOWING STRUCTURE (COMTAB2) IS A PHYSICAL AND      @Y30LB12*/
 /* LOGICAL CONTINUATION OF THE STRUCTURE COMTAB.            @Y30LB12*/
 /* PHYSICALLY THE STRUCTURE IS BASED ON THE POINTER COMPTR2 @Y30LB12*/
 /* WHICH CONTAINS THE ADDRESS OF COM2BASE.   THIS           @Y30LB12*/
 /* STURCTURE IS USED TO CONTAIN THE DATA SCANNED FROM THE   @Y30LB12*/
 /* UPPERCON CONTROL STATEMENT.                              @Y30LB12*/
 /********************************************************** @Y30LB12*/
 DCL 1 COMTAB2 BASED(COMPTR2),          /*                   @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING STRUCTURE IS BUILT DURING THE SCAN   @Y30LB12*/
       /* OF THE UPPERCON STATEMENT AND IS USED TO VERIFY    @Y30LB12*/
       /* THAT ALL THREE INTERFACES INTO A DATA STAGER       @Y30LB12*/
       /* INTERFACE TO NO MORE THAN TWO RSGS IN TOTAL        @Y30LB12*/
       /* THE STRUCTURE IS ORGANIZED BY DATA STAGER.         @Y30LB12*/
       /* THE STRUCTURE IS INITIALIZED TO 'FF'X IN ICGDSSCN  @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 DSTORSG (16) CHAR(2),          /*                   @Y30LB12*/
         3 DSENTRY CHAR(2),             /*                   @Y30LB12*/
           4 TORSG1 CHAR(1),            /*                   @Y30LB12*/
           4 TORSG2 CHAR(1),            /*                   @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING STRUCTURE IS ORGANIZED BY DATA       @Y30LB12*/
       /* STAGER/CHANNEL INTERFACE AND CONTAINS THE DATA     @Y30LB12*/
       /* THAT IS COMMON TO ALL DEVICE ADDRESSES THROUGH     @Y30LB12*/
       /* THAT INTERFACE (CPU/CHANNEL/CONTROL UNIT).  THE    @Y30LB12*/
       /* FIELD CPUREFNO IS DEVELOPED IN THE ANALYSIS        @Y30LB12*/
       /* ROUTINES BY FINDING THE LOGICAL (POSITIONAL)       @Y30LB12*/
       /* IDENTIFICATION OF THE CPU FROM CPUASSOC.  THE      @Y30LB12*/
       /* INFORMATION IN THIS STRUCTURE IS USED TO BUILD     @Y30LB12*/
       /* THE CONFIGURATION INDEX PORTION OF THE             @Y30LB12*/
       /* CONFIGURATION TABLE.                               @Y30LB12*/
       /**************************************************** @Y30LB12*/
       2 CONFGCON (48) CHAR(9),       /* COMMON ON INTERFACE @Y30LB12*/
         3 RSGUCB CHAR(9),            /*                     @Y30LB12*/
           4 RSGFLAGS,                /*                     @Y30LB12*/
             5 CISPEC BIT(1),         /* UPPERCON STATEMENT  @Y30LB12*/
             5 * BIT(7),              /*                     @Y30LB12*/
           4 RSGCPUID CHAR(5),        /* UPPERCON CPUID      @Y30LB12*/
           4 CPUREFNO CHAR(1),        /* LOGICAL CPUID       @Y30LB12*/
           4 RSGCHAN CHAR(1),         /* HOST CHANNEL        @Y30LB12*/
           4 RSGCUA CHAR(1),          /* DS CONTROL UNIT ADR @Y30LB12*/

       /**************************************************** @Y30LB12*/
       /* THE FOLLOWING STRUCTURE DESCRIBES EACH POSSIBLE    @Y30LB12*/
       /* DEVICE ADDRESS (64) THAT CAN BE GENERATED FOR A    @Y30LB12*/
       /* DATA STAGER/CHANNEL INTERFACE.  THIS STRUCTURE IS  @Y30LB12*/
       /* USED TO BUILD THE DEVICE DATA PORTION OF THE       @Y30LB12*/
       /* CONFIGURATION MAP AND ALSO TO HOLD THE DATA NEEDED @Y30LB12*/
       /* TO PRODUCE THE IODEVICE AND UNITNAME SYSGEN        @YD00113*/
       /* STATEMENTS.  THE STRUCTURE IS ORGANIZED BY DEVICE  @Y30LB12*/
       /* WITHIN STAGING ADAPTER/CHANNEL INTERFACE.          @YD00113*/
       /**************************************************** @Y30LB12*/
       2 CONFGUCB (48,64) CHAR(11),     /*                   @Y30LB12*/
         3 CONFGDEV CHAR(11),           /*                   @Y30LB12*/
           4 USEFLAGS BIT(8),           /* DEVICE USE FLAGS  @Y30LB12*/
             5 USESPEC BIT(1),          /* DEVICE IS USED    @Y30LB12*/
             5 USEV BIT(1),             /* USED VIRTUAL      @Y30LB12*/
             5 USEVS BIT(1),            /* USED SHARED VIRT  @Y30LB12*/
             5 USEREAL BIT(1),          /* USED REAL         @Y30LB12*/
             5 SUPPUNCH BIT(1),         /* NO SYSGEN CARD    @Y30LB12*/
             5 USECONVR BIT(1),         /* USE CONVERTIBLE   @Y30LB12*/
             5 ITISALTP BIT(1),         /* IS ALTERNATE PATH @Y30LB12*/
             5 ICEBERG BIT(1),          /* DEVICE IS 3330-11 @Y30LB12*/
           4 INDEXRSG BIT(8),           /* RSG NUMBER        @Y30LB12*/
           4 ALTPATH1 BIT(24),          /* 1ST ALT PATH      @Y30LB12*/
             5 ALTDS1 BIT(8),           /* 1ST ALT PATH DS   @Y30LB12*/
             5 ALTCI1 BIT(8),           /* 1ST ALT PATH CI   @Y30LB12*/
             5 ALTCH1 BIT(8),           /* 1ST ALT PATH CHAN @Y30LB12*/
           4 ALTPATH2 BIT(24),          /* 2ND ALT PATH      @Y30LB12*/
             5 ALTDS2 BIT(8),           /* 2ND ALT PATH DS   @Y30LB12*/
             5 ALTCI2 BIT(8),           /* 2ND ALT PATH CI   @Y30LB12*/
             5 ALTCH2 BIT(8),           /* 2ND ALT PATH CHAN @Y30LB12*/
           4 ALTPATH3 BIT(24),          /* 3RD ALT PATH      @Y30LB12*/
             5 ALTDS3 BIT(8),           /* 3RD ALT PATH DS   @Y30LB12*/
             5 ALTCI3 BIT(8),           /* 3RD ALT PATH CI   @Y30LB12*/
             5 ALTCH3 BIT(8);           /* 3RD ALT PATH CHAN @Y30LB12*/

 DCL SCANDATA CHAR(72) BASED(STARTCOL); /* OVERLAY OF INBUF  @Y30LB12*/
 DCL SCANBUF CHAR(72) BASED(NEXTCOL);   /* OVERLAY OF INBUF  @Y30LB12*/
./ ADD NAME=ICOMMON
*                        DEFINE EXTERNAL ROUTINES                     *
         SPACE
         AIF   ('&TESTRAN' NE 'YES').X4D
&COMPNM.X4N01  CONTAINS  DCSCAN,XDSCAN,SYMPUNCH
         AGO   .X4N
.X4D     ANOP
&COMPNM.X4D01  CONTAINS  DCSCAN,XDSCAN
.X4N     ANOP
&COMPNM.X4E01  CONTAINS  BLDESD,MAKESD,GETESD,ENTRY,EXTRN,VCON,QCON,   ,
               REFER
&COMPNM.X4S01  CONTAINS  FIND,ENTER,SUBSET
&COMPNM.X4V01  CONTAINS  EVAL
         SPACE
         SPACE
*                        ADDRESSING VIA WORK REGISTERS                *
         SPACE
DSECT2   DSECT ,                        ADDRESS
         USING DSECT2,R2                BASE
         SPACE
DSECT3   DSECT ,                        ADDRESS
         USING DSECT3,R3                BASE
         SPACE
         USING JTEXT,R4                 BASE
         SPACE
DSECT5   DSECT ,                        ADDRESS
         USING DSECT5,R5                BASE
         SPACE
DSECT6   DSECT ,                        ADDRESS
         USING DSECT6,R6                BASE
         SPACE
DSECT7   DSECT ,                        ADDRESS
         USING DSECT7,R7                BASE
         SPACE
DSECT10  DSECT ,                        ADDRESS
         USING DSECT10,R10              BASE
         SPACE
DSECT11  DSECT                          ADDRESS
         USING DSECT11,R11              BASE
         SPACE
DSECT12  DSECT ,                        ADDRESS
         USING DSECT12,R12              BASE
         SPACE
DSECT14  DSECT ,                        ADDRESS
         USING DSECT14,R14              BASE
         SPACE
DSECT15  DSECT ,                        ADDRESS
         USING DSECT15,R15              BASE
         EJECT
DSECT7   DSECT ,                        ADDRESS
         ORG   DSECT7                   ORIGIN
         SPACE
SAVE     JSAVE BASE=NO                  SAVE REGISTER
         BR    R14                      RETURN
EXIT     JRETURN                        RESTORE REGISTERS AND RETURN
         AIF   ('&TESTRAN' NE 'YES').X4D1
X4N01    DS    A                        DC EVALUATION (TESTRAN VERSION)
         AGO   .X4N1
.X4D1    ANOP
X4D01    DS    A                        DC EVALUATION
.X4N1    ANOP
X4E01    DS    A                        ESD PROCESSING
X4S01    DS    A                        SYMBOL TABLE ROUTINES
X4V01    DS    A                        EXPRESSION EVALUATION
         EJECT
HASHNR   EQU   64                       NUMBER OF HASH CHAINS
MINDBL   EQU   1024                     MINIMUM STORAGE REQUIREMENT
MAXDBL   EQU   4095                     MAXIMUM STORAGE REQUIREMENT
ALIGNB   EQU   B'00000001'              BYTE ALIGNMENT MASK
ALIGNH   EQU   B'00000010'              HALFWORD ALIGNMENT MASK
ALIGNF   EQU   B'00000100'              FULLWORD ALIGNMENT MASK
ALIGND   EQU   B'00001000'              DOUBLEWORD ALIGNMENT MASK
         EJECT
*                        EXTERNAL SYMBOL DICTIONARY                   *
         SPACE
ESDBLK1  DS    A(*+4),H'324,0',16XL20   ESD BLOCK 1
ESDBLK2  DS    A(*+4),H'324,0',16XL20   ESD BLOCK 2
FILELAST DS    01XL9                    END OF SPILL FILE
NOTELIST DS    25XL9                    ADDRESS OF ESD BLOCKS
OOPS     DS    X                        ESD OVERFLOW VALVE
         EJECT
SYMDIMEN DS    4F                       SYMBOL TABLE POINTERS
HASHTBL  DS    (HASHNR)F                HASH TABLE
         EJECT
SWTCH1   DSW   ,                        SWITCH 1                       ,
               ,                                                       ,
               ,                                                       ,
               ,                                                       ,
               STBLOFLO,                SYMBOL TABLE OVERFLOW          ,
               LITEND,                  LITERAL AND END        @OX09723,
               IOFLO,                                                  ,
               INOTE
         SPACE
SWTCH2   DSW   ,                        SWITCH 2                       ,
               ,                                                       ,
               INCSECT,                                                ,
               ,                                                       ,
               DCMODEXP,                     DC MODIFIER EXPRESSION    ,
               ,                                                       ,
               ,                             NOT USED                  ,
                                             NOT USED
MODE     DS    0H                       RESERVED FOR MODE SWITCHES ONLY
         DS    X                        RESERVED FOR MODE SWITCHES ONLY
         DSW   ,,,,MODE1,MODE2,,        RESERVED FOR MODE SWITCHES ONLY
STARTLOC DS    A                        START LOCATION
HIESDNR  DS    H                        HIGH ESD ID
DCDSSW   DSW   SDZDUPF                  SELF DEF ZERO AS DUPF
DCDSMODE DSW   NOESD,NOESDS,LMOD,BMOD,SMOD     MODE
LINECNT  DS    H                               LINE COUNT
LOCTRSAV DS    XL6                      LOCATION COUNTER SAVE AREA
SYMCARD  DS    3F                       TESTRAN CARD BUFFER ADDRESS
         ORG   LOCTRSAV                 AFTER ASSIGNMENT MODE
         DS    H                        NOT USED
CARDADDR DS    2F                       ADDRESS OF ESD CARD BUFFER
ADJINDEX DS    2F                       ESD ADJUSTMENT TABLE INDEX
LATADD   DS    F                        FIRST LITERAL ENTRY ADDRESS
LATEND   DS    F                        NEXT LITERAL ENTRY ADDRESS
LATA8    DS    F                        8 CHAIN ADDRESS
LATA4    DS    F                        4 CHAIN ADDRESS
LATA2    DS    F                        2 CHAIN ADDRESS
LATA1    DS    F                        1 CHAIN ADDRESS
XPARM    DS    F                        PARAMETER
         SPACE
*                        TESTRAN OUTPUT BUFFER                        *
         SPACE
         DS    0F                       ALIGNMENT
ORGBYTE  DBV   TSPACE(X'08'),           BYTES SKIPPED                  ,
               TCSECT(X'18'),           CSECT                          ,
               TDSECT(X'28'),           DSECT                          ,
               TCOM(X'38'),             COM                            ,
               TMOP(X'48'),             MACHINE OP                     ,
               TCCW(X'58'),             CCW                            ,
               TMIS(X'68'),             CATCH ALL                      ,
               TDATA(X'88')             DATA TYPE
         ORG   ORGBYTE                             ORIGIN
         DSW   ,MULTIPLE,CLUSTER,SCALING,LABEL     INDICATORS
ADDRESS  DS    AL3                                 ADDRESS
NAME     DS    CL8                      NAME
LENGTH   DS    F                        LENGTH
MULTIP   DS    F                        MULTIPLICITY
SCALE    DS    H                        SCALE
DATATYPE DBV   ,                        DATA TYPE                      ,
               DTYPEC(X'00'),           DATA TYPE C                    ,
               DTYPEX(X'04'),           DATA TYPE X                    ,
               DTYPEB(X'08'),           DATA TYPE B                    ,
               DTYPEF(X'10'),           DATA TYPE F                    ,
               DTYPEH(X'14'),           DATA TYPE H                    ,
               DTYPEE(X'18'),           DATA TYPE E                    ,
               DTYPED(X'1C'),           DATA TYPE D                    ,
               DTYPEA(X'20'),           DATA TYPE A                    ,
               DTYPEQ(X'20'),           DATA TYPE Q                    ,
               DTYPEY(X'24'),           DATA TYPE Y                    ,
               DTYPES(X'28'),           DATA TYPE S                    ,
               DTYPEV(X'2C'),           DATA TYPE V                    ,
               DTYPEP(X'30'),           DATA TYPE P                    ,
               DTYPEZ(X'34'),           DATA TYPE Z                    ,
               DTYPEL(X'38')            DATA TYPE L
         DS    X                        NOT USED
         SPACE
*                        SYMBOL TABLE STAGING AREA                    *
         SPACE
XWORK    DS    0F                       WORK
         DS    H                        X
XFLGA    DS    X                        WORK
XFLGB    DS    X                        WORK
XTYPE    DS    X                        WORK
XFLDI    DS    X                        WORK
XESDI    DS    H                        WORK
XLCTR    DS    F                        WORK
XNAME    DS    CL8                      WORK
XLNGQ    DS    H                        WORK
FSTCSECT DS    H                        FIRST CSECT NUMBER NUMBER
HICESDID DS    H                        HIGH EVERYTHING ELSE NUMBER
HIDESDID DS    H                        HIGH DSECT NUMBER
INOTEVAL DS    XL8                      INPUT NOT ADDRESS
         EJECT
*                        DC/DS ROUTINE WORK AREA                      *
         SPACE
         DCDSWORK
         SPACE
         DS    0F
INPUTBUF DS    XL300                    INPUT BUFFER
         EJECT
*                        EVALUATION ROUTINE WORK AREA                 *
         SPACE
         EVALWORK
ENDOFCOM DS    0F                       ENOVID
         EJECT
DSECT6   DSECT ,                        ADDRESS
         ORG   DSECT6                   ORIGIN
         SPACE
EITEM    DS    0XL20                    ESD ENTRY
ETYPE    DBV   ,                        ESD TYPE                       ,
               ETYPESD(X'00'),               CONTROL SECTION--CSECT    ,
               ETYPELD(X'01'),               LABEL DEFINITION--ENTRY   ,
               ETYPEER(X'02'),               EXTERNAL REFERENCE--EXTRN ,
               ETYPEPC(X'04'),               PRIVATE CODE--            ,
               ETYPECM(X'05'),               COMMON SECTION--COM       ,
               ETYPEXD(X'06'),               EXTERNAL DUMMY--DXD       ,
               ETYPEDX(X'07'),               EXTERNAL DUMMY--DSECT     ,
               ETYPEDS(X'08'),               DUMMY SECTION--DSECT      ,
               ETYPELX(X'09'),               LABEL DEFINITION - ENTRY  ,
               ETYPEWX(X'0A')                EXTERNAL REFERENCE - WXTRN
         SPACE
EFLGS    DSW   ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ESDNRSW2,                     X                         ,
               CSECTSW2,                     X                         ,
               DSECTSW2,                X                              ,
               DSCOMSW2                 X
         SPACE
ERCDC    DS    0XL6                     FIELD
ESWTS    DSW   ,DSW2,CSW2,QDSW2
         ORG   ESWTS                    ORIGIN
EESDI    DS    H                        ESD IDENTIFICATION
EFLDA    EQU   *                        FIELD
ELCTR    DS    F                        CURRENT LOCATION COUNTER VALUE
EHILC    DS    F                        HIGH LOCATION COUNTER VALUE
         ORG   EFLDA                    ORIGIN
         DS    H                        NOT USED
ELDID    DS    H                        CONTROL SECTION DEFINED
ELDAD    DS    F                        OFFSET IN CONTROL SECTION
         ORG   EFLDA                    ORIGIN
EXDAL    DBV   ,                        ALIGNMENT                      ,
               EXDALX(B'00000000'),          BYTE BOUNDARY             ,
               EXDALH(B'00000001'),          HALFWORD BOUNDARY         ,
               EXDALF(B'00000011'),          FULLWORD BOUNDARY         ,
               EXDALD(B'00000111'),          DOUBLEWORD BOUNDARY
         DS    X                        NOT USED
EXDID    DS    H                        ESDID OF DSECT REFERENCED
EXDLN    DS    F                        DUMMY SECTION LENGTH
ENAME    DS    CL8                      SYMBOL
         EJECT
DSECT14  DSECT ,                        ADDRESS
         ORG   DSECT14                  ORIGIN
         SPACE
*                        FORMAT OF SYMBOL TABLE ENTRY                 *
         SPACE
SFLGS    DSW   LNGDEF,                  X                              ,
               XDUMMY,                  X                              ,
               XENTRY,                  X                              ,
               ENTRYSW,                 X                              ,
               ESDNRSW,                 X                              ,
               CSECTSW,                 X                              ,
               DSECTSW,                 X                              ,
               DSCOMSW                  X
         SPACE
         ORG   SFLGS                    ORIGIN
SCHPT    DS    A                        CHAIN POINTER
SNAME    DS    CL8                      SYMBOL
SLNGQ    DS    H                        SYMBOL LENGTH ATTRIBUTE
SSWTS    DSW   ,DSW,CSW,,ESW,EQUF       X              @OY08064,OX00106
         ORG   SSWTS                    ORIGIN
SESDI    DS    H                        ESDID ASSOCIATED WITH VALUE
SLCTR    DS    F                        VALUE
         SPACE
SLAST    EQU   *                        X
         ORG   SCHPT                    ORIGIN
SITEM    DS    0XL(SLAST-SCHPT)         FIELD
         ORG   SNAME                    ORIGIN
SSEG1    DS    0XL(L'SNAME+L'SLNGQ)     FIELD
         ORG   SESDI                    ORIGIN
SSEG2    DS    0XL(L'SESDI+L'SLCTR)     FIELD
./ ADD NAME=ICPIOCDS
 @EJECT ASM;
 /********************************************************************/
 /*THE FOLLOWING ARE THE DECLARES FOR THE IOCDS MEMBERS.             */
 /********************************************************************/
 /********************************************************************/
 /* THE FIRST RECORD IN THE IOCDS IS THE DIRECTORY RECORD (RECORD 0).*/
 /********************************************************************/
    DCL
      1 R0REC CHAR(256) BASED(REC0@),  /* REC0 DIRECTORY RECORD      */
        2 R0DATA (16) CHAR(16),             /* ARRAY OF R0 ENTRIES   */
 /*---------------+---------------+---------------+--------------- */
 /*00-07-MEMBER IDENTIFICATION                                     */
 /*      (MEMBERID)                                                */
 /*---------------+---------------+---------------+--------------- */
 /*08-SIZE        09-FLAGS       0A-0D-(MEMBERDA) MEMBER DATA    */
 /* (MSIZE)        (MFLAGS)      0A-0B-(MEMDAH0)                 */
 /*---------------+---------------+---------------+--------------- */
 /*  MEMBER DATA (CONTINUED)      0E-0F-START OF MEMBER           */
 /*0C-0D-(MEMDAH1)                 (MEMBERST)                     */
 /*---------------+---------------+---------------+--------------- */
          3 MEMBER CHAR(16),           /* MEMBER ENTRY               */
            4 MEMBERID CHAR(8),        /* MEMBER NAME                */
            4 MSIZE CHAR(1),           /* MEMBER SIZE IN SECTORS     */
            4 MFLAGS CHAR(1),          /* MEMBER FLAGS               */
            4 MEMBERDA CHAR(4),        /* MEMBER DATA                */
              5 MEMDAH0 CHAR(2),       /* MEMBER DATA H0             */
              5 MEMDAH1 CHAR(2),       /* MEMBER DATA H1             */
            4 MEMBERST CHAR(2);        /* START OF MEMBER            */
 /* MEMBER DISPLACEMENTS INTO R0                                     */
    DCL MDSID FIXED(8) CONSTANT(1);    /* DSID ENTRY IN R0           */
    DCL MCPID FIXED(8) CONSTANT(2);    /* CPID ENTRY IN R0           */
    DCL MIODV FIXED(8) CONSTANT(3);    /* IODV ENTRY IN R0           */
    DCL MIODVE FIXED(8) CONSTANT(4);   /* IODV EXT ENTRY IN R0       */
    DCL MDACBE0 FIXED(8) CONSTANT(5);  /* DACB-SET 0 ENTRY IN R0     */
    DCL MDACBE1 FIXED(8) CONSTANT(6);  /* DACB-SET 1 ENTRY IN R0     */
    DCL MPCUS FIXED(8) CONSTANT(7);    /* PCUS ENTRY IN R0           */
    DCL MCHTC FIXED(8) CONSTANT(8);    /* CHTC ENTRY IN R0           */
    DCL MDSED FIXED(8) CONSTANT(9);    /* DSED ENTRY IN R0           */
 @EJECT ASM;
    /*****************************************************************/
    /* THE FOLLOWING IS THE DSID0000 (DATA SET IDENTIFICATION RECORD)*/
    /* MEMBER OF THE IOCDS AND THE IOCP COMMON AREA (BYTES 257-512). */
    /* THE COMMON AREA IS USED BY VARIOUS MODULES.  ONLY BYTES 1-256 */
    /* ARE TRANSFERRED TO/FROM THE PROCESSOR CONTROLLER FILE.        */
    /*****************************************************************/
    DCL
      1 IDREC CHAR(512) BASED(DSID@), /* ID RECORD AND IOCP COMMON   */
       2 USERMSG1 CHAR(64),            /* USER MSG1 FIELD            */
       2 USERMSG2 CHAR(64),            /* USER MSG2 FIELD            */
       2 *        CHAR(112),           /* RESERVED                   */
       2 IOCDSTS  CHAR(12),            /* IOCDS TIME STAMP    @ZA52051*/
        3 IOCDSTST CHAR(5),            /* IOCDS T.S. TIME - HH.MM
                                                              @ZA52051*/
        3 IOCDSTSD CHAR(7),            /* IOCDS T.S. DATE - YY.DDD_
                                                              @ZA52051*/
       2 IOCPFLGS CHAR(4),             /* IOCP FLAGS & PAGE COUNTERS */
        3 ICPFLAGS BIT(16),            /* COMMMON FLAGS FOR IOCP RTNS*/
         4 ICPNOGO BIT(1),             /* GO/NOGO SWITCH             */
         4 ICPIGNOR BIT(1),            /* IGNORE EXTRA CARD INPUT    */
         4 ICPIDCD BIT(1),             /* ID CARD READ               */
         4 ICPNOTID BIT(1),            /* NOT ID CARD                */
         4 ICPWMSG  BIT(1),            /* WARNING MESSAGE PRINTED    */
         4 ICPACTVE BIT(1),            /* '1'B = IOCDS ACTIVE BIT ON */
         4 ICPRDDSX BIT(1),            /* READ LEVEL 0/1 IOCDS       */
         4 ICPWRDS1 BIT(1),            /* WRITE LEVEL 1 IOCDS        */
         4 ICPDS0IC BIT(1),            /* LEVEL 0 IOCDS IN CORE      */
         4 ICPDS1IC BIT(1),            /* LEVEL 1 IOCDS IN CORE      */
         4 ICPMSCRN BIT(1),            /* IOCDS MODIFIED BY SCREEN   */
         4 ICPNOTGN BIT(1),            /* IOCDS NOT GENERATED        */
         4 ICPALTER BIT(1),            /* ALTER ENTRY FROM SCREEN    */
         4 ICPUPDAT BIT(1),            /*'1'B = IOCDS UPDATED BIT ON */
         4 *       BIT(1),             /* RESERVED                   */
         4 ICPNOAPC BIT(1),            /* NO AUTO PAGE CONTROL       */
        3 ICPMAXLN CHAR(1),            /* MAXIMUM LINES PER PAGE     */
        3 ICPLNCNT CHAR(1),            /* NO. LINES COUNTED FOR PAGE */
       2 IOCPCOMM  CHAR(256),          /* IOCP COMMON         @ZA52051*/
        3 IOCPTS CHAR(12),             /* IOCP TIME STAMP     @ZA52051*/
         4 IOCPTST CHAR(5),            /* IOCP T.S. TIME - HH.MM
                                                              @ZA52051*/
         4 IOCPTSD CHAR(7),            /* IOCP T.S. DATE - YY.DDD_
                                                              @ZA52051*/
        3 ISAVE  CHAR(4),              /* SAVE AREA FOR I     @ZA52051*/
        3 JSAVE  CHAR(4),              /* SAVE AREA FOR J     @ZA52051*/
        3 NUPARENS FIXED(8),           /* NUMBER OF LEFT PARENTHESIS
                                                              @ZA52051*/
        3 PARMPOS  FIXED(8),           /* POSITION OF PARAMETER
                                                              @ZA52051*/
        3 * BIT(16),                   /* SWITCHES            @ZA52051*/
          4 ENDCARD BIT(1),            /* END OF CARD POCESSING
                                                              @ZA52051*/
          4 FOUND BIT(1),              /* FOUND SWITCH        @ZA52051*/
          4 DONE BIT(1),               /* DONE SWITCH         @ZA52051*/
          4 STOP BIT(1),               /* STOP SWITCH         @ZA52051*/
          4 ERROR BIT(1),              /* ERROR SWITCH        @ZA52051*/
          4 SYNTAX BIT(1),             /* OPTCHAN ERROR SWITCH
                                                              @ZA52051*/
          4 INC8 BIT(1),               /* INCREMENT BY 8          @H1A*/
          4 * BIT(9),                  /* RESERVED                @H1C*/
        3 WMSGCTR CHAR(2),             /* WARNING MESSAGE CTR @ZA52051*/
        3 EMSGCTR CHAR(2),             /* ERROR MESSAGE CTR   @ZA52051*/
        3 PUTPGCTR CHAR(2),            /* ICPCPUT PAGE CTR    @ZA52051*/
        3 HISTORY CHAR(8),             /* CARD HISTORY        @ZA52051*/
         4 SAVER15 CHAR(4),            /* SAVE R15            @ZA52051*/
          5 *     CHAR(2),             /* MESSAGE VARIABLES   @ZA52051*/
          5 RCODE CHAR(2),             /* RETURN/ERROR CODE   @ZA52051*/
         4 TYPE CHAR(1),               /* CARD TYPE SWITCHES  @ZA52051*/
          5 *      BIT(2),             /* RESERVED            @ZA52051*/
          5 LABELERR BIT(1),           /* LABEL ERROR         @ZA52051*/
          5 PRTSTAR BIT(1),            /* COMMENT CARD        @ZA52051*/
          5 CHPIDTYP BIT(1),           /* CHPID CARD          @ZA52051*/
          5 CNTLTYPE BIT(1),           /* CNTLUNIT CARD       @ZA52051*/
          5 IODVTYPE BIT(1),           /* IODEVICE CARD       @ZA52051*/
          5 IDTYPE BIT(1),             /* ID CARD             @ZA52051*/
         4 OPERAND CHAR(1),            /* KEYWORDS PROCESSED  @ZA52051*/
          5 OPERAND0 BIT(1),           /* OPERAND SWITCH 0    @ZA52051*/
          5 OPERAND1 BIT(1),           /* OPERAND SWITCH 1    @ZA52051*/
          5 OPERAND2 BIT(1),           /* OPERAND SWITCH 2    @ZA52051*/
          5 OPERAND3 BIT(1),           /* OPERAND SWITCH 3    @ZA52051*/
          5 OPERAND4 BIT(1),           /* OPERAND SWITCH 4    @ZA52051*/
          5 OPERAND5 BIT(1),           /* OPERAND SWITCH 5    @ZA52051*/
          5 OPERAND6 BIT(1),           /* OPERAND SWITCH 6    @ZA52051*/
          5 OPERAND7 BIT(1),           /* OPERAND SWITCH 7    @ZA52051*/
         4 CDCT CHAR(1),               /* MACRO CARD COUNT    @ZA52051*/
         4 KWDP CHAR(1),               /* KEYWORD PROCESSED   @ZA52051*/
        3 *       CHAR(218);           /* RESERVED            @ZA52051*/
 @EJECT ASM;
    /*****************************************************************/
    /* THE FOLLOWING IS THE CPID0000 (CHANNEL PATH ID) MEMBER OF THE */
    /* IOCDS.                                                        */
    /*****************************************************************/
    DCL
      1 CPID(*) CHAR(4) BASED(CPID@),  /* ARRAY OF CHPIDS            */
 /*---------------+---------------+---------------+--------------- */
 /*00-FLAGS       01-TABLE NUMBER02-CHN NO & SET03-RESERVED     */
 /* (CPIDB0)       (CPIDB1)       (CPIDB2)                      */
 /*---------------+---------------+---------------+--------------- */
        2 CPIDB0 CHAR(1),              /* BYTE 0  FLAGS              */
          3 CPIDB0I BIT(1),            /* INSTALLED FLAG             */
          3 * BIT(3),                  /* RESERVED                   */
          3 CPIDB0S BIT(1),            /* RESERVED - SET TO 1        */
          3 CPIDB0M BIT(1),            /* MULTIPLEX MODE-BYTE/BLOCK  */
          3 * BIT(1),                  /* RESERVED                   */
          3 CPIDB0V BIT(1),            /* RESERVED - SET TO 1        */
        2 CPIDB1 CHAR(1),              /* BYTE 1 TABLE NUMBER        */
        2 CPIDB2 CHAR(1),              /* BYTE 2 CHN NO AND SET      */
          3 CPIDB20 BIT(4),            /* CHANNEL NUMBER             */
          3 CPIDB24 BIT(1),            /* CHANNEL SET                */
          3 * BIT(3),                  /* RESERVED                   */
        2 * CHAR(1);                   /* BYTE 3-RESERVED            */
 @EJECT ASM;
    /*****************************************************************/
    /* THE FOLLOWING IS THE IODV0000 AND IODV0001 (I/O DEVICE)       */
    /* MEMBERS OF THE IOCDS.                                         */
    /*****************************************************************/
    DCL
      1 IODVS(*) CHAR(24) BASED(IODV@), /* ARRAY OF IODVS            */
 /*---------------+---------------+---------------+--------------- */
 /*00-FLAGS       01-RESERVED    02-03--DEVICE ADDRESS           */
 /* (IODVW0B0)                      (IODVADR)                    */
 /*---------------+---------------+---------------+--------------- */
 /*04-UNIT ADDRESS05-07--RESERVED                                 */
 /* (IODVUA)                                                      */
 /*---------------+---------------+---------------+--------------- */
 /*08-0C--DEVICE TYPE                                              */
 /*       (IODVDEVT)                                               */
 /*               +---------------+---------------+--------------- */
 /*               0D-0E--MODEL                   0F-RESERVED     */
 /*                      (IODVDEVM)                              */
 /*---------------+---------------+---------------+--------------- */
 /*10-11--CONTROL UNIT NUMBER 1   12-13--CONTROL UNIT NUMBER 2    */
 /* (CUNO1)                           (CUNO2)                     */
 /*---------------+---------------+---------------+--------------- */
 /*14-15--CONTROL UNIT NUMBER 3   16-17--CONTROL UNIT NUMBER 4    */
 /* (CUNO3)                         (CUNO4)                       */
 /*---------------+---------------+---------------+--------------- */
        2 * CHAR(4),                   /* WORD 0                     */
          3 * CHAR(1),                 /* WORD 0 BYTE 0 - FLAGS      */
            4 * BIT(2),                /* RESERVED                   */
            4 IODVTOUT BIT(1),      /* TIMEOUT 0-ACTIVE, 1-INHIBITED */
            4 IODVCUTP BIT(1),         /* IODV CU TYPE BIT           */
            4 IODVPROT BIT(1),         /* IODV PROTOCOL              */
            4 * BIT(2),                /* RESERVED                   */
            4 BYTE0B7V BIT(1),         /* IODV VALID/DUMMY BIT       */
          3 * CHAR(1),                 /* WORD 0 BYTE 1 RESERVED     */
          3 IODVADR CHAR(2),           /* WORD 0 HWORD 1 DEVICE ADDR */
        2 * CHAR(4),                   /* WORD 1                     */
          3 IODVUA CHAR(1),            /* WORD 1 BYTE 0 UNIT ADDRESS */
          3 * CHAR(3),                 /* RESERVED                   */
        2 * CHAR(8),                   /* WORD 2 AND WORD 3          */
          3 IODVDEVT CHAR(5),          /* WORD 2 DEVICE TYPE         */
          3 IODVDEVM CHAR(2),          /* WORD 3 BYTE 1 DEVICE MODEL */
          3 IODVB33 CHAR(1),           /* WORD 3 BYTE 3 RESERVED     */
        2 IODCUNOS CHAR(8),            /* WORD 4 & 5 CUNUMBERS       */
          3 CUNO1 CHAR(2),             /* WORD 4 HWORD 0 CUNUMBER 1  */
          3 CUNO2 CHAR(2),             /* WORD 4 HWORD 1 CUNUMBER 2  */
          3 CUNO3 CHAR(2),             /* WORD 5 HWORD 0 CUNUMBER 3  */
          3 CUNO4 CHAR(2);             /* WORD 5 HWORD 1 CUNUMBER 4  */
 @EJECT ASM;
    /*****************************************************************/
    /*               DEVICE ADDRESS CONTROL BLOCKS (DACB)            */
    /* THE FOLLOWING IS THE DALE3700 (DACB LOOK-UP TABLE, CHANNEL SET*/
    /* 0) AND DALE3701 (DACB LOOK-UP TABLE, CHANNEL SET 1) MEMBERS OF*/
    /* THE IOCDS.                                                    */
    /*****************************************************************/
    DCL
      1 DACBS (2,16,256) CHAR(4) BASED(DALE@), /* ARRAY OF DACBS     */
 /*---------------+---------------+---------------+--------------- */
 /*00-FLAGS1      01-FLAGS2      02-03-RESERVED                  */
 /* (DACBB0)       (DACBB1)                                      */
 /*---------------+---------------+---------------+--------------- */
        2 DACBB0 CHAR(1),              /* DACB BYTE 0 - FLAGS 1      */
          3 DABB00 BIT(1),             /* DACB UNASSIGNED BIT        */
          3 DABB01 BIT(1),             /* CONTROL UNIT VALID BIT     */
          3 DABB02 BIT(4),             /* CONTROL UNIT NUMBER        */
          3 DABB06 BIT(1),             /* CONTROL UNIT TYPE          */
          3 DABB07 BIT(1),             /* PROTOCOL                   */
        2 DACBB1 CHAR(1),              /* DACB BYTE 1 - FLAGS 2      */
          3 DABB10 BIT(1),             /* DATA RATE                  */
          3 * BIT(1),                  /* RESERVED                   */
          3 DABB12 BIT(1),             /* TIMEOUT 0-ACTIVE, 1-INHIBIT*/
          3 DABB13 BIT(1),             /* MODE 0-SELECTOR, 1-BLOCK
                                                              @ZA52051*/
          3 * BIT(4),                  /* RESERVED                   */
        2 * CHAR(2);                   /* RESERVED                   */
 @EJECT ASM;
    /*****************************************************************/
    /* THE FOLLOWING IS THE PCUS0000 (CONTROL UNITS) MEMBER OF THE   */
    /* IOCDS.                                                        */
    /*****************************************************************/
    DCL
      1 PCUS(*) CHAR(32) BASED(PCUS@), /* ARRAY OF CONTROL UNITS     */
 /*---------------+---------------+---------------+--------------- */
 /*00-FLAGS       01-RESERVED    02-03--CONTROL UNIT NUMBER      */
 /* (PCUFLAGS)                      (PCUCUNUM)                   */
 /*---------------+---------------+---------------+--------------- */
 /*04-PATH1 CHPID 05-PATH2 CHPID 06-PATH3 CHPID 07-PATH4 CHPID  */
 /* (PCUP1CID)      (PCUP2CID)      (PCUP3CID)    (PCUP4CID)    */
 /*---------------+---------------+---------------+--------------- */
 /*08-09-(PCUUAS1) UNIT ADR SET 1 0A-0B-(PCUUAS2) UNIT ADR SET 2  */
 /*08-UNIT ADR 1  09-UA COUNT 1  0A-UNIT ADR 2  0B-UA COUNT 2   */
 /* (PCUUA1)       (PCUCT1)       (PCUUA2)       (PCUCT2)       */
 /*---------------+---------------+---------------+--------------- */
 /*0C-0D-(PCUUAS3) UNIT ADR SET 3 0E-0F-(PCUUAS4) UNIT ADR SET 4  */
 /*0C-UNIT ADR 3  0D-UA COUNT 3  0E-UNIT ADR 4  0F-UA COUNT 4   */
 /* (PCUUA3)       (PCUCT3)       (PCUUA4)       (PCUCT4)       */
 /*---------------+---------------+---------------+--------------- */
 /*10-11-(PCUUAS5) UNIT ADR SET 5 12-13-(PCUUAS6) UNIT ADR SET 6  */
 /*10-UNIT ADR 5  11-UA COUNT 5  12-UNIT ADR 6  13-UA COUNT 6   */
 /* (PCUUA5)       (PCUCT5)       (PCUUA6)       (PCUCT6)       */
 /*---------------+---------------+---------------+--------------- */
 /*14-15-(PCUUAS7) UNIT ADR SET 7 16-17-(PCUUAS8) UNIT ADR SET 8  */
 /*14-UNIT ADR 7  15-UA COUNT 7  16-UNIT ADR 8  17-UA COUNT 8   */
 /* (PCUUA7)       (PCUCT7)       (PCUUA8)       (PCUCT8)       */
 /*---------------+---------------+---------------+--------------- */
 /*18-1C-(PCUCUT) CONTROL UNIT TYPE                                */
 /*               +---------------+---------------+--------------- */
 /*               1D-1F--RESERVED 3 BYTES OF ZEROS                */
 /*---------------+---------------+---------------+--------------- */
        2 PCUW0 CHAR(4),               /* WORD 0                     */
          3 PCUFLAGS CHAR(1),          /* WORD 0 BYTE 0 - FLAGS      */
            4 * BIT(2),                /* RESERVED                   */
            4 PCUFLAGB BIT(1),         /* SHR SUBCHAN BLOCK MULTIPLEX
                                                              @ZA52051*/
            4 PCUFLAGT BIT(1),         /* CU TYPE                    */
            4 PCUFLAGP BIT(1),         /* CU PROTOCOL                */
            4 * BIT(3),                /* RESERVED                   */
          3 * CHAR(1),                 /* WORD 0 BYTE 1 - RESERVED   */
          3 PCUCUNUM CHAR(2),          /* WORD 0 BYTE 1 & 2 CU NO.   */
        2 PCUW1 CHAR(4),               /* WORD 1 CHPIDS              */
          3 PCUP1CID CHAR(1),          /* WORD 1 BYTE 0 - P1 CHPID   */
          3 PCUP2CID CHAR(1),          /* WORD 1 BYTE 1 - P2 CHPID   */
          3 PCUP3CID CHAR(1),          /* WORD 1 BYTE 2 - P3 CHPID   */
          3 PCUP4CID CHAR(1),          /* WORD 1 BYTE 3 - P4 CHPID   */
        2 PCUUAS CHAR(16),             /* WORD 2-5 UA SETS           */
          3 PCUUAS1 CHAR(2),           /* WORD 2 HW0 UA SET 1        */
            4 PCUUA1 CHAR(1),          /* WORD 2 BYTE 0-UA 1         */
            4 PCUCT1 CHAR(1),          /* WORD 2 BYTE 1-UA COUNT 1   */
          3 PCUUAS2 CHAR(2),           /* WORD 2 HW1 UA SET 2        */
            4 PCUUA2 CHAR(1),          /* WORD 2 BYTE 2-UA 2         */
            4 PCUCT2 CHAR(1),          /* WORD 2 BYTE 3-UA COUNT 2   */
          3 PCUUAS3 CHAR(2),           /* WORD 3 HW0 UA SET 3        */
            4 PCUUA3 CHAR(1),          /* WORD 3 BYTE 0-UA 3         */
            4 PCUCT3 CHAR(1),          /* WORD 3 BYTE 1-UA COUNT 3   */
          3 PCUUAS4 CHAR(2),           /* WORD 3 HW1 UA SET 4        */
            4 PCUUA4 CHAR(1),          /* WORD 3 BYTE 2-UA 4         */
            4 PCUCT4 CHAR(1),          /* WORD 3 BYTE 3-UA COUNT 4   */
          3 PCUUAS5 CHAR(2),           /* WORD 4 HW0 UA SET 5        */
            4 PCUUA5 CHAR(1),          /* WORD 4 BYTE 0-UA 5         */
            4 PCUCT5 CHAR(1),          /* WORD 4 BYTE 1-UA COUNT 5   */
          3 PCUUAS6 CHAR(2),           /* WORD 4 HW1 UA SET 6        */
            4 PCUUA6 CHAR(1),          /* WORD 4 BYTE 2-UA 6         */
            4 PCUCT6 CHAR(1),          /* WORD 4 BYTE 3-UA COUNT 6   */
          3 PCUUAS7 CHAR(2),           /* WORD 5 HW0 UA SET 7        */
            4 PCUUA7 CHAR(1),          /* WORD 5 BYTE 0-UA 7         */
            4 PCUCT7 CHAR(1),          /* WORD 5 BYTE 1-UA COUNT 7   */
          3 PCUUAS8 CHAR(2),           /* WORD 5 HW1 UA SET 8        */
            4 PCUUA8 CHAR(1),          /* WORD 5 BYTE 2-UA 8         */
            4 PCUCT8 CHAR(1),          /* WORD 5 BYTE 3-UA COUNT 8   */
        2 * CHAR(8),                   /* WORD 6 CONTROL UNIT TYPE   */
          3 PCUCUT CHAR(5),            /* WORD 6 CU TYPE             */
          3 * CHAR(3);                 /* WORD 7 BYTE 1-3 RESERVED   */
 @EJECT ASM;
    /*****************************************************************/
    /* THE FOLLOWING IS THE CHTC0000 (CHANNEL PATH ID TO CHANNEL     */
    /* NUMBER CORRESPONDENCE TABLE) MEMBER OF THE IOCDS.             */
    /*****************************************************************/
    DCL
      1 CHTC (2,16) CHAR(2) BASED(CHTC@), /* ARRAY OF CHANNEL NUMBERS TO
                                          CHPIDS */
 /*---------------+---------------                                 */
 /*00-01-(CHTC) CHANNEL TO CHPID#                                  */
 /*00-(CHTCEB0)   01-(CHTCEB1)                                    */
 /*---------------+---------------                                 */
        2 CHTCE,                       /* CHTC ENTRY                 */
          3 CHTCEB0 CHAR(1),           /* BYTE 0  - FLAGS            */
            4 CHTCEV BIT(1),           /* CHTC ENTRY VALID FLAG      */
            4 * BIT(7),                /* RESERVED                   */
          3 CHTCEB1 CHAR(1);           /* BYTE 1 - CHPID             */
 @EJECT ASM;
    /*****************************************************************/
    /* THE FOLLOWING IS THE DSED0000 (DSE RESET DATA) MEMBER OF IOCDS*/
    /*****************************************************************/
    DCL
      DSED CHAR(256) BASED(DSED@);     /* RESET DATA                 */
 @EJECT ASM;
 /********************************************************************/
 /* THE FOLLOWING ARE CONSTANTS USED BY IOCP MODULES                 */
 /********************************************************************/
    DCL REC0LEN FIXED(31) CONSTANT(256); /* LENGTH OF R0             */
    DCL DSIDLEN FIXED(31) CONSTANT(256*2);/* LENGTH OF DSID   @ZA52051*/
    DCL CPIDLEN FIXED(31) CONSTANT(256); /* LENGTH OF CPID           */
    DCL CHTCLEN FIXED(31) CONSTANT(256); /* LENGTH OF CHTC           */
    DCL DSEDLEN FIXED(31) CONSTANT(256); /* LENGTH OF DSED           */
    DCL PCUSLEN FIXED(31) CONSTANT(256*48); /* LENGTH OF PCUS FOR 384*/
    DCL DALELEN FIXED(31) CONSTANT(256*128);/* LENGTH OF DACBS       */
    DCL IODVLEN FIXED(31) CONSTANT(256*383);/* LENGTH OF IODV- 4080  */
    DCL LENIOCDS FIXED(31) CONSTANT(256*565); /* TOTAL IOCDS LENGTH  */
    DCL LENBUFF  FIXED(31) CONSTANT(2048);   /* LENGTH OF MSSF BUFFER*/
    DCL MAXCUCT  FIXED(31) CONSTANT(384);    /* MAXIMUM CU COUNT     */
    DCL MAXDVCT  FIXED(31) CONSTANT(4080);   /* MAXIMUM I/O DEV CNT  */
    DCL MAXCBLKS FIXED(31) CONSTANT(4608);/*MAXIMUM DEVICE CNTL BLKS */
    DCL MAXCPCT  FIXED(31) CONSTANT(24);     /*MAXIMUM CPID CNT/VALUE*/
    DCL DACBSCT  FIXED(31) CONSTANT(128);    /*COUNT OF DACB SECTORS */
    DCL DACBACT  FIXED(31) CONSTANT(2);      /*COUNT OF DACB ARRAYS  */
    DCL CHPIDEND FIXED(31) CONSTANT(40);     /*END OF VALID CHPIDS   */
 /********************************************************************/
 /*THE FOLLOWING IS THE DECLARE FOR THE IOCDSML  PARAMETER.  THE     */
 /*IOCDSML IS A STRUCTURE CONTAINING THE STORAGE ADDRESSES OF THE    */
 /*IOCDS MEMBERS.                                                    */
 /********************************************************************/
    DCL
      1 IOCDSML,                        /*IOCDS MEMBERS ADDRESSES    */
        2 REC0ADDR PTR(31),             /*IOCDS R0 MEMBER ADDRESS    */
        2 DSIDADDR PTR(31),             /*IOCDS DSID MEMBER ADDRESS  */
        2 CPIDADDR PTR(31),             /*IOCDS CPID MEMBER ADDRESS  */
        2 CHTCADDR PTR(31),             /*IOCDS CHTC MEMBER ADDRESS  */
        2 DSEDADDR PTR(31),             /*IOCDS DSED MEMBER ADDRESS  */
        2 PCUSADDR PTR(31),             /*IOCDS PCUS MEMBER ADDRESS  */
        2 DALEADDR PTR(31),             /*IOCDS DALE MEMBERS ADDRESS */
        2 IODVADDR PTR(31);             /*IOCDS IODV MEMBERS ADDRESS */
 /********************************************************************/
 /* DECLARES FOR LOCAL VARIABLES FOR IOCDS MEMBER ADDRESSES          */
 /********************************************************************/
    DCL
     1 IOCDSML@,                        /*IOCDS MEMBERS ADDRESSES    */
      2 REC0@ PTR(31),                  /*IOCDS R0 ADDRESS           */
      2 DSID@ PTR(31),                  /*IOCDS DSID MEMBER ADDRESS  */
      2 CPID@ PTR(31),                  /*IOCDS CPID MEMBER ADDRESS  */
      2 CHTC@ PTR(31),                  /*IOCDS CHTC MEMBER ADDRESS  */
      2 DSED@ PTR(31),                  /*IOCDS DSED MEMBER ADDRESS  */
      2 PCUS@ PTR(31),                  /*IOCDS PCUS MEMBER ADDRESS  */
      2 DALE@ PTR(31),                  /*IOCDS DALE MEMBERS ADDRESS */
      2 IODV@ PTR(31);                  /*IOCDS IODV MEMBERS ADDRESS */
./ ADD NAME=IDAAIR
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAAIR                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME =ALTERNATE INDEX RECORD                       */
*/*                                                                  */
*/*   FUNCTION = DESCRIBES THE ALTERNATE INDEX RECORD HEADER         */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = RECORD MANAGEMENT MODULE IDA019RU                 */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
    DCL
      1 IDAAIX BASED,               /* ALTERNATE INDEX RECORD        */
       2 AIXFG BIT(8),              /* FLAG FIELD                    */
        3 * BIT(7),                 /* RESERVED                      */
        3 AIXPKP BIT(1),            /* 0= RBA POINTERS 1=PRIME KEY
                                       POINTERS                      */
       2 AIXPL FIXED(8),            /* LENGTH OF THE POINTER         */
       2 AIXPC FIXED(15),           /* NUMBER OF POINTERS            */
       2 AIXKL FIXED(8),            /* LENGTH OF AIX KEY             */
       2 AIXKY CHAR(*);             /* AIX KEY                       */
    DCL AIXPCMAX CONSTANT(32767)FIXED(15);/* MAXIMUM AIXPC VALUE     */
./ ADD NAME=IDAAMBL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAAMBL                                           */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = ACCESS METHOD BLOCK LIST.                   */
 /*                                                                  */
 /*   FUNCTION = THE AMBL DESCRIBES A VSAM CLUSTER AND POINTS TO THE */
 /*              CLUSTER'S DATA SET AND INDEX AMB'S. WHEN THE CLUSTER*/
 /*              IS OPENED, AN AMBL IS BUILT TO DESCRIBE THE CLUSTER.*/
 /*              IF THE CLUSTER IS SHARED WITH OTHER USERS, THE      */
 /*              EXISTING AMB'S ADDRESSES ARE PUT INTO THE AMBL.     */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE AMBL IS POINTED TO BY AN ACB     */
 /*                             (ACBAMBL).                           */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAAMBL BASED.             */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192F.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3,  (CHANGE FLAGS @X04SVXX)*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 29/07/75                         @Z40WSRL*/
 /*                                                                  */
 /********************************************************************/
         DCL 1 IDAAMBL BASED,
               2 AMBLPCHN     PTR(31),  /* PRIMARY CHAIN POINTER    */
               2 AMBLSCHN     PTR(31),  /* SECONDARY CHAIN POINTER  */
               2 AMBLACB      PTR(31),  /* POINTER TO ACB           */
               2 AMBLEOV      FIXED(31),/* EOV/RM INTERFACE         */
                 3 AMBLEFLG   CHAR(1),  /* EOV FLAGS                */
                   4 AMBLWAIT BIT(1),   /* EOV IS WAITING           */
                   4 AMBLESET BIT(1),   /* EOV RESET CONTROL BLOCKS. */
                 3 AMBLCOMP   CHAR(1),  /* EOV LOCK                 */
                 3 *          CHAR(2),  /* NOT USED                 */
               2 AMBLDDNM     CHAR(8),  /* DDNAME FROM ACB          */
                 3 AMBLIDF    CHAR(8),  /* CLUSTER ID        @X04SVLC*/
                   4 AMBLCACB PTR(31)BDY(BYTE),/* CAT ACB    @X04SVLC*/
                   4 AMBLDCI  FIXED(24)BDY(BYTE),/* CI NBR   @X04SVLC*/
                   4 AMBLQ    BIT(8),   /* QUALIFIER         @X04SVLC*/
                    5 AMBLDDC BIT(1),/* DD CONNECT ONLY      @X04SVLC*/
                    5 AMBLGSR BIT(1),/* OPENED FOR GSR       @X04SVLC*/
                    5 AMBLLSR BIT(1),/* OPENED FOR LSR       @X04SVLC*/
                    5 AMBLFSTP BIT(1),/* OPENED FOR FAST PATH
                                                             @X04SVLC*/
                    5 AMBLUBF BIT(1),/* OPENED FOR USER BFR  @X04SVLC*/
                    5 AMBLKSDS BIT(1),/* OPENED AS KSDS      @X04SVLC*/
                    5 AMBLESDS BIT(1),/* OPENED AS ESDS      @X04SVLC*/
                    5 AMBLDFR BIT(1),/* OPENED WITH DEFER OPTION
                                                             @X04SVLC*/
               2 AMBLXPT      PTR(31),  /* PTR FR BASE AMBL TO PATH
                                           AMBL & VICE-VERSA @X04SVLC*/
               2 AMBLVC       FIXED(15),/* VALID AMBL TABLE  @X04SVLC*/
                 3 AMBLVRT    FIXED(8), /* RELATIVE VAT      @X04SVLC*/
                 3 AMBLENO    FIXED(8), /* OFFSET WITHIN VAT @X04SVLC*/
               2 AMBLTYPE     BIT(8),   /* STRUCTURE TYPE    @X04SVLC*/
                 3 AMBLPATH   BIT(1),   /* ACB IS FOR PATH   @X04SVLC*/
                 3 AMBLUPGR   BIT(1),   /* ACB FOR UPGRADE   @X04SVLC*/
                 3 AMBLAIX    BIT(1),   /* ACB FOR AIX END USE-IMPLIES
                                           AMBLBASE ON       @X04SVLC*/
                 3 AMBLBASE   BIT(1),   /* ACB FOR BASE      @X04SVLC*/
                 3 AMBLFIX BIT(1),      /* STRUCTURE FIXED BY
                                           OPEN              @X04SVLC*/
                 3 *          BIT(3),   /* UNUSED            @X04SVLC*/
               2 *            CHAR(1),  /* UNUSED            @X04SVLC*/
               2 AMBLID       CHAR(1),  /* AMBL IDENTIFER           */
               2 AMBLSHAR     BIT(8),   /* SHARING INDICATORS       */
                 3 AMBLPRIM   BIT(1),   /* P-AMBL INDICATOR         */
                 3 AMBLCATO   BIT(1),   /* CATALOG OPEN IND IS ON   */
                 3 AMBLWRIT   BIT(1),   /* OUTPUT/UPDATE SPECIFIED  */
                 3 *          BIT(5),   /* RESERVED                 */
               2 AMBLLEN      PTR(8),   /* AMBL LENGTH              */
               2 AMBLFLG1     BIT(8),   /* FLAG BYTE ONE            */
                 3 AMBLFULL   BIT(1),   /* FULL ACCESS OK           */
                 3 AMBLCINV   BIT(1),   /* CINV ACCESS OK           */
                 3 AMBLUPD    BIT(1),   /* UPDATE ACCESS OK         */
                 3 AMBLVVIC   BIT(1),   /* AMBL FOR VVIC DATA SET
                                                             @X04SVRP*/
                   4 AMBLSDS  BIT(1),   /* AMBL FOR SYSTEM DATA SET
                                                             @Z40WSRL*/
                 3 AMBLSCRA   BIT(1),   /* AMBL FOR SYSTEM CATALOG
                                           RECOVERY AREA     @X04SVRP*/
                 3 AMBLUCRA   BIT(1),   /* AMBL FOR USER CATALOG
                                           RECOVERY AREA     @X04SVRP*/
                 3 AMBLCAT    BIT(1),   /* IND ACB FOR A CATALOG    */
                 3 AMBLDUMY   BIT(1),   /* DD DUMMY SPECIFIED       */
                                        /* TO SIMPLIFY TESTING  FOR  */
                                        /* SPECIAL DATA SETS IN      */
                                        /* EXISTING CODE THE AMBLCAT */
                                        /* AMBLVVIC AND AMBLSCRA     */
                                        /* BITS ARE SET AS FOLLOWS:  */
                                        /* VVIC SCRA X CAT TYPE OF   */
                                        /*                 DATA SET  */
                                        /*   0    0   X 0  CATALOG   */
                                        /*   1    0   X 1  VVIC      */
                                        /*   0    1   X 1  SCRA      */
               2 AMBLFLG2     BIT(8),   /* FLAG BYTE TWO            */
                 3 *          BIT(3),   /* RESERVED          @Z30SSDT*/
                 3 AMBLSTAG   BIT(1),   /* CLUSTER IS STAGED @X04ACPS*/
                 3 *          BIT(4),   /* RESERVED          @X04ACPS*/
               2 AMBLNST      CHAR(1),  /* NUMBER OF STRINGS         */
               2 AMBLNUM      FIXED(15),/* NUMBER OF AMB PTRS IN    */
                                        /* AMBL                     */
               2 *            CHAR(1),  /* RESERVED                 */
               2 AMBLNIDS     PTR(8),   /* NUMBER IF IDS            */
               2 AMBLMIDS(5)  CHAR(2),  /* IDS OF MODULES LOADED    */
               2 AMBLDTA      PTR(31),  /* POINTER TO DATA AMB      */
               2 AMBLIX       PTR(31),  /* POINTER TO INDEX AMB     */
               2 AMBLBIB      PTR(31),  /* PTR TO BIB        @X04SVLC*/
               2 AMBLCMB      PTR(31);  /* PTR TO CMB        @X04SVRP*/
./ ADD NAME=IDAAMB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAAMB                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME =ACCESS METHOD BLOCK                          */
*/*                                                                  */
*/*   FUNCTION = DESCRIBES DATA SET ATTRIBUTES AND SUPPLIES          */
*/*              IOS COMPATIBLE FIELDS FOR I/O                       */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE IDAAMB IS POINTED TO BY THE      */
*/*              IDAAMBL                                             */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*            VS/2 RELEASE 3  (CHANGE FLAG @Y30SDXX)                */
*/*            IDATRACE SUPPORT (CHANGE FLAG @ZA29388)               */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 08/11/75                         @Z40WSRL*/
*/*                                                                  */
*/********************************************************************/
*     DCL  1 IDAAMB  BASED ,                /* AMB                 */
*               2 AMBID         BIT(8),     /* AMB IDENTIFIER      */
*               2 AMBRSC        BIT(8),     /* RESOURCE TS BYTE    */
*               2 AMBLEN        FIXED(15),  /* AMB LENGTH          */
*               2 AMBLINK       PTR(31),    /* NEXT AMB            */
*               2 AMBBUFC       PTR(31),    /* BUFFER CONTROL      */
*               2 AMBPH         PTR(31),    /* PLACEHOLDER         */
*               2 AMBCACB       PTR(31),    /*PTR TO ACB OF CATALOG*/
*                                           /*USED TO ACCESS OBJECT*/
*               2 AMBDSB        PTR(31),    /* AMDSB POINTER       */
*               2 AMBEOVR       CHAR(1),    /* EOV REQUEST TYPE - NOT
*                                              USED IN MVM   @Y30DSJH*/
*                 3 AMBFLG0     BIT(8),     /* MVM AMB FLAGS @Y30DSJH*/
*                   4 AMBPSDS   BIT(1),     /* PAGE SPACE    @Y30DSJH*/
*                   4 AMBSWSP   BIT(1),     /* SWAP SPACE    @Z40WSRL*/
*                   4 *         BIT(6),     /* UNUSED IN MVM @Z40WSRL*/
*               2 AMBFLG1       BIT(8),     /* FLAG BYTE ONE       */
*                 3 AMBCREAT    BIT(1),     /* ON IF IN CREATE MODE*/
*                3 AMBTYPE    BIT(1),       /*                       */
*                3 AMBMCAT    BIT(1),       /* MASTER CATL           */
*                3 AMBPCAT    BIT(1),       /* PRIVATE CATL          */
*                 3 AMBSPEED  BIT(1),       /* CREATE SPEED OPITON */
*                 3 AMBUBF      BIT(1),     /* USER BUFFERING      */
*                 3 AMBJRN      BIT(1),     /* JOURNAL EXIT PRESENT*/
*                 3 AMBINBUF    BIT(1),     /* SHARED DS--DIRECT   */
*                                           /* REQ BFR INVALIDATION*/
*               2 AMBDSORG      BIT(16),    /* DATA SET ORGANIZ.   */
*                    3 *        BIT(12),     /* ALWAYS ZERO         */
*                    3 AMBDORGA BIT(1),      /* ACCESS METHOD INDIC */
*                    3 *        BIT(3),      /* ALWAYS ZERO         */
*               2 AMBIOBAD      PTR(31),    /* IOB ADDR            */
*                 3 AMBIOMB     PTR(31),    /* IOMB CHAIN IN MVM
*                                                            @Y30DSJH*/
*               2 AMBCDSN       CHAR(3),    /* CATALOG DSN         */
*               2 AMBDDSN       CHAR(3),    /* DATA DSN            */
*               2 *             PTR(16),    /* RESERVED            */
*               2 AMBTIOT       FIXED(15),  /* OFFSET TO TIOT      */
*                2 AMBINFL      PTR(8),     /* INDICATOR FLAGS     */
*                  3 *          BIT(1),     /* RESERVED FOR EXCP   */
*                  3 *          BIT(2),     /* RESERVED            */
*                  3 AMBCAT     BIT(1),     /* AMB FOR VSAM CATLG  */
*                  3 AMBSCRA    BIT(1),     /* CATALOG CONTROL BLOCK
*                                              SYSTEM AREA   @X04SVLC*/
*                  3 AMBUCRA    BIT(1),     /* CATALOG CONTROL BLOCK
*                                              USER AREA     @X04SVLC*/
*                  3 AMBUPX     BIT(1),     /* SET ON IF UPGRADE TABLE
*                                              EXISTS        @X04SVLC*/
*                  3 AMBSDS     BIT(1),     /* SET ON IF SYSTEM DATA
*                                              SET           @Z40WSRL*/
*                2 AMBAMETH     PTR(8),     /* ACCESS METHOD TYPE  */
*                  %AMBVSAM='''11''X';      /* VSAM CODE           */
*               2 AMBDEBPT      PTR(31),    /* DEB ADDR            */
*                 3 AMBIFLGS    BIT(8),     /* IOS ERROR FLAGS     */
*                 3 AMBDEBAD    PTR(24),    /* DEB ADDR            */
*               2 AMBOFLGS      BIT(8),     /* OPEN FLAGS          */
*                 3 *       BIT(3),         /* ALWAYS ZERO          */
*                 3 AMBOPEN BIT(1),         /* AMB IS OPEN          */
*                 3 *       BIT(2),         /* ALWAYS ZERO          */
*                 3 AMBEXFG BIT(1),         /* USER EXIT FLAG       */
*                 3 AMBBUSY BIT(1),         /* BUSY BIT             */
*               2 AMBFLG2       PTR(8),     /* FLAG BYTE TWO @X04SVLC*/
*                 3 AMBPUG BIT(1),          /* AMB PARTICIPATES IN
*                                              UPGRADE       @X04SVLC*/
*               2 AMBRPT        FIXED(15),  /*                     */
*               2 AMBEDB        PTR(31),    /* EDB POINTER         */
*               2 AMBEOVPT      PTR(31),    /* PTR TO KEY OR RBA - NOT
*                                              USED IN MVM   @Y30DSJH*/
*                 3 AMBAMBXN    PTR(31),    /* PTR TO AMB EXTENSION IN
*                                              MVM           @Y30DSJH*/
*               2 AMBWKA        PTR(31),    /* WORK AREA PTR       */
*               2 AMBIWA        PTR(31),    /* INSERT WORK AREA PTR*/
*               2 *             PTR(31),    /* UNUSED        @Z30SSMR*/
*               2 AMBPIXP       PTR(31),    /* PTR TO PRIME INDEX AMB*/
*               2 AMBPAMBL      PTR(31),    /* PTR TO PRIMARY AMBL
*                                                            @X04SVLC*/
*               2 AMBUPLH       PTR(31),    /* PTR TO UPGRADE PLH
*                                                            @X04SVLC*/
*               2 AMBCSWD1 FIXED(31)BDY(WORD),/* CS WORD 1   @X04SVLC*/
*                 3 AMBAFLG BIT(8), /* ADDITIONAL FLAGS      @X04SVLC*/
*                   4 *      BIT(1),/* UNUSED                @X04SVLC*/
*                   4 AMBLSR BIT(1),/* LSR OPTION            @X04SVLC*/
*                   4 AMBGSR BIT(1),/* GSR OPTION            @Y30SDLP*/
*                   4 AMBICI BIT(1),/* ICIP OPTION           @Y30SDLP*/
*                   4 AMBDFR BIT(1),/* DEFER WRITES          @X04SVLC*/
*                   4 AMBSIS BIT(1),/* SEQ INSERT STRAT      @X04SVLC*/
*                   4 AMBCFX BIT(1),/* FIXED CTRL BLK OPTN   @Y30SDLP*/
*                   4 *      BIT(1),/* UNUSED                @X04SVLC*/
*                 3 * FIXED(8),     /* UNUSED                @X04SVLC*/
*                 3 AMBRDCNT FIXED(15),/* NBR OF CIS READ FOR THIS AMB
*                                           - VS1 ONLY       @X04SVLC*/
*               2 AMBBM2SH PTR(31), /* ADDR OF PLH DOING 2ND SEARCH
*                                      OF SUBPOOL - VS1 ONLY @X04SVLC*/
*               2 AMBCPA PTR(31),   /* DB/DC - PTR TO WSHD.  NON DB/DC
*                                      & VS1 - UNUSED.  NON DB/DC & VS2
*                                      - PTR TO STATIC CPA'S @Y30DSJH*/
*               2 AMBWSHD PTR(31),  /* PTR TO WORK SPACE HDR @X04SVLC*/
*               2 AMBEXEX CHAR(8),  /* EXCEPTION EXIT NAME   @X04SVLC*/
*               2 AMBSZRD FIXED(15),/* CP SIZE FOR READ      @X04SVLC*/
*               2 AMBSZWR FIXED(15),/* CP SIZE FOR WRITE     @X04SVLC*/
*               2 AMBSZFW FIXED(15),/* CP SIZE FORMAT WRITE  @X04SVLC*/
*               2 AMBSZCP FIXED(15),/* SIZE FOR CPA BASE     @X04SVLC*/
*               2 AMBVIOT PTR(31),  /* POINTER TO IDAVIOT    @X04SVLC*/
*               2 AMBTRACE PTR(31); /* PTR TO TRACE TABLE    @ZA29388*/
*  DCL   AMBINDEX BIT(1) CONSTANT('1'B);    /* INDEX TYPE AMB        */
*  DCL   AMBDATA  BIT(1) CONSTANT('0'B);    /* DATA TYPE AMB         */
* DCL AMBEOVMK BIT(8) CONSTANT('00000001'B); /* MOUNT BY KEY         */
* DCL AMBEOVMR BIT(8) CONSTANT('10000001'B); /* MOUNT BY RBA         */
* DCL AMBEOVAK BIT(8) CONSTANT('00000010'B); /* ALLOCATE BY KEY      */
* DCL AMBEOVAR BIT(8) CONSTANT('10000010'B); /* ALLOCATE BY RBA      */
* DCL AMBEOVUC BIT(8) CONSTANT('00000100'B); /* UPDATE CATALOG       */
* DCL AMBEXOFF BIT(1) CONSTANT('1'B);       /* AMB NOT LOCKED       */
*%GOTO AMBBSL2 ;
*/*                                                                */
*/*                                                                */
*/*                  ASSEMBLER DSECT FOR AMB                       */
*/*                                                                */
          MACRO
         IDAAMB &DSECT=YES
          AIF   ('&DSECT' EQ 'NO').NODS
IDAAMB    DSECT
          AGO   .AMBDSCT
.NODS     ANOP
IDAAMB    DS    0F                       ACCESS METHOD BLOCK
.AMBDSCT  ANOP
AMBID     DS    XL1                      AMB IDENTIFIER='40'
AMBRSC    DS    XL1                      RESOURCE TS BYTE
AMBIDENT  EQU   X'40'                    ID OF AMB
AMBLEN    DS    H                        AMB LENGTH IN BYTES
AMBLINK   DS    A                        AMB LINK FIELD
AMBBUFC   DS    A                        AMB BUFFER PTR
AMBPH     DS    A                        AMB PLACE HOLDER
AMBCACB   DS    A                        PTR TO CATALOG ACB
AMBDSB    DS    A                        ADDRESS OF ASB
AMBEOVR   DS    0BL1                     EOV REQUEST TYPE - NOT USED
*                                        BY EOV IN MVM         @Y30DSJH
AMBEOVMK  EQU   X'01'                    MOUNT BY KEY
AMBEOVMR  EQU   X'81'                    MOUNT BY RBA
AMBEOVAK  EQU   X'02'                    ALLOCATE BY KEY
AMBEOVAR  EQU   X'82'                    ALLOCATE BY RBA
AMBFLG0   DS    BL1                      MVM AMB FLAGS FIELD   @Y30DSJH
AMBPSDS   EQU   X'80'                    PAGE SPACE DATA SET   @Y30DSJH
AMBSWSP   EQU   X'40'                    SWAP SPACE DATA SET   @Z40WSRL
AMBFLG1   DS    BL1                      FLAG BYTE ONE
AMBCREAT  EQU   X'80'                    ON IF IN CREATE MODE
AMBTYPE  EQU   X'40'                     TYPE OF AMB
AMBMCAT  EQU   X'20'                     MASTER CATL
AMBPCAT  EQU   X'10'                     PRIVATE CATL
AMBSPEED  EQU   X'08'                    CREATE SPEED OPTION
AMBUBF   EQU   X'04'                     USER BUFFERING--CNV, MOVE MODE
AMBJRN   EQU   X'02'                     JOURNAL EXIT SPECIFIED
AMBINBUF EQU   X'01'                     SHARE--INVALIDATE DIR REQ BFRS
AMBDSORG  DS    BL2                      DS ORG FIELD
AMBDORGA EQU   X'08'                     ACCESS METHOD INDICATOR
AMBIOBAD  DS    0A                       IOB ADDR              @Y30DSJH
AMBIOMB   DS    A                        IOMB CHAIN IN MVM     @Y30DSJH
AMBCDSN   DS    CL3                      CATALOG DSN
AMBDDSN   DS    CL3                      DATA DSN
          DS    H                        RESERVED
AMBTIOT   DS    H                        OFFSET TO TIOT
AMBINFL  DS    XL1                       INDICATOR FLAGS
AMBCAT   EQU   X'10'                     AMB FOR VSAM CATALOG
AMBSCRA   EQU   X'08'                    CATALOG CONTROL BLOCK
*                                        SYSTEM AREA           @X04SVLC
AMBUCRA   EQU   X'04'                    CATALOG CONTROL BLOCK
*                                        USER AREA             @X04SVLC
AMBUPX   EQU   X'02'                     UPGRADE TAB EXISTS    @X04SVLC
AMBSDS    EQU   X'01'                    SYSTEM DATA SET       @Z40WSRL
AMBAMETH DS    XL1                       ACCESS METHOD TYPE
AMBVSAM  EQU   X'11'                     VSAM CODE
AMBIFLGS  DS    XL1                      ERROR FLAGS
AMBDEBAD  DS    AL3                      ADDRESS OF DEB
AMBOFLGS  DS    BL1                      OPEN FLAGS
AMBOPEN   EQU   X'10'                    AMB IS OPEN
AMBEXFG  EQU   X'02'               USER EXIT FLAG
AMBBUSY   EQU   X'01'                    AMB IS BUSY
AMBFLG2   DS    BL1                      FLAG BYTE TWO         @X04SVLC
AMBPUG    EQU   X'80'                    AMB PARTICIPATES IN
*                                              UPGRADE         @X04SVLC
AMBRPT    DS    H
AMBEDB    DS    A                        ADDRESS OF EDB
AMBEOVPT  DS    0A                       PTR TO KEY OR RBA FOR @Y30DSJH
*                                        EOV - NOT USED IN MVM @Y30DSJH
AMBAMBXN  DS    A                        PTR TO AMB EXTENSION  @Y30DSJH
*                                        IN MVM                @Y30DSJH
AMBWKA    DS    A                        WORK AREA PTR
AMBIWA    DS    A                        INSERT WORK AREA PTR
         DS    A                         UNUSED                @Z30SSMR
AMBPIXP   DS    A                        POINTER TO PRIME INDEX AMB
AMBPAMBL DS    A                         PTR TO PRIMARY AMBL
AMBUPLH  DS    A                         PTR TO UPGRADE PLH    @X04SVLC
AMBCSWD1 DS    0A                        CS WORD 1            @X04SVLC
AMBAFLG  DS    BL1                       ADDITIONAL FLAGS      @X04SVLC
AMBLSR   EQU   X'40'                     LSR OPTION            @X04SVLC
AMBGSR   EQU   X'20'                     GSR OPTION           @X04SVLC
AMBICI   EQU   X'10'                     ICIP OPTION           @X04SVLC
AMBDFR   EQU   X'08'                     DEFER WRITES          @X04SVLC
AMBSIS   EQU   X'04'                     SEQ INSERT STRAT      @X04SVLC
AMBCFX   EQU   X'02'                     FIXED CNTL BLK OPTION @X04SVLC
         DS    AL1                       UNUSED                @X04SVLC
AMBRDCNT DS    H                         NBR OF CIS READ FOR THIS AMB
*                                                            @X04SVLC
AMBBM2SH DS    A                         ADDR OF PLH DOING 2ND SEARCH
*                                        OF SUBPOOL            @X04SVLC
AMBCPA   DS    A                         DB/DC - PTR TO WSHD. NON DB/DC
*                                        & VS1 - UNUSED.  NON DB/DC &
*                                        VS2 - STATIC CPA PTR. @Y30DSJH
AMBWSHD  DS    A                         PTR TO WORK SPACE HDR @X04SVLC
AMBEXEX  DS    CL8                       EXCEPTION EXIT NAME   @X04SVLC
AMBSZRD  DS    H                         CP SIZE FOR READ      @X04SVLC
AMBSZWR  DS    H                         CP SIZE FOR WRITE     @X04SVLC
AMBSZFW  DS    H                         CP SIZE FORMAT WRITE  @X04SVLC
AMBSZCP  DS    H                         SIZE FOR CPA BASE     @X04SVLC
AMBVIOT  DS    A                         POINTER TO IDAVIOT    @X04SVLC
AMBTRACE DS    A                         PTR TO TRACE TABLE    @ZA29388
AMBLENTH  EQU   *-IDAAMB                 LENGTH OF AMB IN BYTES
          MEND
*
*
*%AMBBSL2: ;
./ ADD NAME=IDAAMBXN
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAAMBXN                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = VSAM AMB EXTENSION - IOMB EXTENSION         */
*/*                                                                  */
*/*   FUNCTION =  TO PROVIDE ADDITIONAL FIELDS FOR MVM               */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 3    (CHANGE FLAG @Y30SDXX)              */
*/*            VS/2 RELEASE 4.1  (CHANGE FLAG @Z40GSDT)              */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 15 AUGUST 75                             */
*/*                         11 APR  77                       @ZA14809*/
*/*                          9 MAY  77                       @ZA14824*/
*/*                                                                  */
*/********************************************************************/
* /*                                                                 */
* /*    MACCOMP                         Y-2 SC1DE/SJD61              */
* /*    MACSTAT                         Y-2 73191/Y02113             */
* /*                                                                 */
*/********************************************************************/
*/* VSAM IDAAMB EXTENSION                                            */
*/********************************************************************/
        DCL 1 IDAAMBXN BASED(AMBEOVPT), /*AMB EXTENSION BLK  @X30SDLC*/
                2 AMBXEOV   BDY(WORD),  /* EOV INTERFACE FIELD.Y02113*/
                  3 AMBXEVPT PTR(31),   /* EOV DATA PTR              */
                  3 AMBXRSC  BIT(8),    /* RESOURCE T&S BYTE         */
                  3 AMBXEOVR CHAR(1),   /* EOV REQUEST TYPE          */
                  3 AMBXEVRC PTR(8),    /* AMEOV RETURN CODE @OZ04909*/
                  3 *        BIT(8),    /* UNUSED            @OZ04909*/
                2 AMBXASCB   PTR(31),   /* EOV CALLER ASCB   @OZ04909*/
                2 AMBXECB    FIXED(31), /* ECB FOR AMEOV     @OZ04909*/
                2 AMBXCSWD PTR(31)BDY(WORD),/* BFR MGR CS WD @Y30SDLC*/
                  3 * FIXED(15),    /* UNUSED                @Y30SDLC*/
                  3 AMBXRDCT FIXED(15),/* NBR CI READ        @Y30SDLC*/
                2 AMBXBM2S PTR(31); /* ADDR OF PLH DOING 2ND SEARCH
                                       OF SUBPOOL            @Y30SDLC*/
*/********************************************************************/
*/* VSAM IDAIOMB EXTENSION                                           */
*/********************************************************************/
         DCL 1 IDAIOMBX BASED BDY(WORD),/* MVM IOMB EXT      @X30SDLC*/
                2 IOMXLOCK CHAR(1),     /* RESOURCE T&S BYTE         */
                2 IOMXFLGS BIT(8),      /* I/O MGR FLAGS       */
                  3 IOMXUSE BIT(1),     /* REDUNDANT BIT     @Y30SSMR*/
                  3 IOMXEOVW BIT(1),    /* EOV WAIT FOR ASYN @ZA02269*/
                  3 IOMXSCAN BIT(1),    /* SCANBUFF BIT      @ZA14824*/
                  3 * BIT(5),           /* RESERVED          @ZA02269*/
                2 * CHAR(2),            /* RESERVED          @Z40GSDT*/
                2 IOMXPDET,         /* PD FIELDS             @X30SDLC*/
                  3 IOMXBFLG FIXED(16), /* I/O FLAGS AT I/O INITIATION*/
                  3 * CHAR(2),          /* RESERVED          @Z40GSDT*/
                  3 IOMXR13S PTR(31),   /* USER SAVE AREA PTR*/
                  3 IOMXRPL PTR(31),    /*PTR TO HEAD RPL*/
                2 IOMXR14 PTR(31),      /*ASYNC REG 14 SAVE  @ZA14809*/
                2 IOMXRECB CHAR(4) BDY(WORD), /*RECORD MGT I/O ECB */
                  3 IOMXECB PTR(31),    /* I/O ECB*/
                    4 IOMXWAIT BIT(1),  /* I/O WAIT BIT*/
                    4 IOMXRSLT BIT(7),  /* I/O COMPLETION RESULT*/
                      5 IOMXPOST BIT(1),/* I/O POST BIT*/
                      5 IOMXIOCC BIT(6),/* I/O COMPLETION CODE*/
                    4 IOMXRBPT PTR(24); /* PTR TO RB OR RESULT*/
./ ADD NAME=IDAAMDSB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAAMDSB                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME =DATA SET CHARACTERISTICS                     */
*/*              AND STATISTICS BLOCK                                */
*/*                                                                  */
*/*   FUNCTION = CONTAINS DATA SET CHARACTERISTICS AND STATISTICS    */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE IDAAMDSB IS POINTED TO BY IDAAMB */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 8 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
*        DCL 1 IDAAMDSB BASED,/* DATA SET CHAR./STATISTICS BLOCK     */
*              2 AMDSBID      CHAR(1),  /* CONTROL BLOCK ID          */
*              2 AMDATTR      CHAR(1),  /* ATTRIBUTES                */
*                3 AMDDST     BIT(1),   /* KEY, CHRONOLOGIC          */
*                3 AMDWCK     BIT(1),   /* WRITE CHECK               */
*                3 AMDSDT     BIT(1),   /* SEQ SET WITH DATA         */
*                3 AMDREPL BIT(1),      /* REPLICATION               */
*                3 AMDORDER   BIT(1),   /* USE VOLS IN LIST ORDER    */
*                3 AMDRANGE   BIT(1),   /* KEY RANGE DATA SET        */
*                3 AMDRRDS    BIT(1),   /* RELATIVE RECORD DATA SET
*                                                            @X04SVLC*/
*                3 AMDSPAN    BIT(1),   /* SPANNED RECORDS ARE ALLOWED
*                                                            @X04SVLC*/
*              2 AMDLEN FIXED(15),      /* LENGTH OF AMDSB           */
*              2 AMDNEST      FIXED(15),/* NO OF ENTRIES IN IDX SECTN*/
*                3 AMDAXRKP   FIXED(15),/* RELATIVE KEY POSITION OF
*                                            ALTERNATE KEY   @X04SVLC*/
*              2 AMDRKP       FIXED(15),/* RELATIVE KEY POSITION     */
*              2 AMDKEYLN     FIXED(15),/* KEY LENGTH                */
*              2 AMDPCTCA PTR(8),       /* % FREE CI IN CA           */
*              2 AMDPCTCI PTR(8),       /* % FREE BYTES IN CI        */
*              2 AMDCIPCA FIXED(15),    /* TOTAL NO. OF CIS PER CA   */
*              2 AMDFSCA      FIXED(15),/* NO OF FREE CIS PER CA     */
*              2 AMDFSCI      FIXED(31),/* NO OF FREE BYTES PER CI   */
*              2 AMDCINV      FIXED(31),/* CONTROL INTERVAL SIZE     */
*              2 AMDLRECL     FIXED(31),/* MAXIMUM RECORD SIZE       */
*              2 AMDHLRBA     FIXED(32),/* RBA OF HIGH LEVEL IDX REC */
*                3 AMDNSLOT   FIXED(31),/* NO. OF RECORD SLOTS PER CI
*                                                            @X04SVLC*/
*              2 AMDSSRBA     FIXED(32),/* RBA OF FIRST SEQ SET REC  */
*                3 AMDMAXRR   FIXED(31),/* MAX RELATIVE RECORD NUMBER
*                                                            @X04SVLC*/
*              2 AMDPARDB     PTR(31),  /* PTR TO FIRST ARDB         */
*              2 AMDATTR3   BIT(8),     /* ATTRIBUTES        @X04SVLC*/
*                3 AMDUNQ     BIT(1),  /* ON=NON-UNIQUE KEYS @X04SVLC
*                                         OFF=UNIQUE KEYS    @X04SVLC*/
*                3 AMDFAULT   BIT(1),  /* ON=CYLINDER FAULT ON SS1
*                                         OFF=STAGE THE DATA SET
*                                         (DEFAULT)          @X04SVLC*/
*                3 AMDBIND    BIT(1),  /* ON=BIND THE DATA SET ON SS1
*                                         OFF=DO NOT BIND (DEFAULT)
*                                                            @X04SVLC*/
*                3 AMDWAIT    BIT(1),  /* ON=WAIT ON A RELINQUISH
*                                         OFF=DO NOT WAIT (DEFAULT)
*                                                            @X04SVLC*/
*                3 AMDLM      BIT(1),   /* ON=DATA SET LOADED
*                                          OFF=LOAD MODE OR NOT LOADED
*                                                            @X04SVLC*/
*                3 *          BIT(3),   /* UNUSED            @X04SVLC*/
*              2 *          CHAR(7),    /* UNUSED            @X04SVLC*/
*              2 AMDSTAT      BDY(WORD),/* STATISTICS        @X04SVLC*/
*                3 AMDSTSP    CHAR(8),  /*    SYSTEM TIME STAMP      */
*                3 AMDNIL     FIXED(15),/* NUMBER INDEX LEVELS       */
*                3 AMDNEXT    FIXED(15),/* NUMBER OF EXTENTS         */
*                3 AMDNLR     FIXED(31),/* NUMBER LOGICAL RECORDS    */
*                3 AMDDELR    FIXED(31),/* NUMBER DELETED RECORDS    */
*                3 AMDIREC    FIXED(31),/* NUMBER INSERTED RECORDS   */
*                3 AMDUPR     FIXED(31),/* NUMBER UPDATED RECORDS    */
*                3 AMDRETR    FIXED(31),/* NUMBER RETRIEVED RECORDS  */
*                3 AMDASPA    FIXED(31),/* BYTES OF FREE SPACE IN DS */
*                3 AMDNCIS    FIXED(31),/* NUMBER OF CI SPLITS       */
*                3 AMDNCAS    FIXED(31),/* NUMBER OF CA SPLITS       */
*                3 AMDEXCP    FIXED(31);/* NUMBER OF EXCPS           */
*
*
*
*%  DCL  (AMDKSDS,AMDCSDS) CHAR;
*%       AMDKSDS = '''1''B';            /* KEY SEQUENTIAL DATA SET   */
*%       AMDCSDS = '''0''B';            /* CHRONOLOGIC SEQ DATA SET  */
*%       AMDSBLEN = 'LENGTH(IDAAMDSB)'; /* LENGTH OF AMDSB           */
./ ADD NAME=IDAARDB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAARDB                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME =ADDRESS RANGE DEFINITION BLOCK               */
*/*                                                                  */
*/*   FUNCTION = TO DEFINE THE HIGH AND LOW KEYS OF A KEY RANGE.     */
*/*              IT DESCRIBES THE KEY RANGE, ITS LOCATION AND RBA    */
*/*              EXTENTS.                                            */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE QUEUE OF IDAARDBS ORIGINATES     */
*/*              IN THE IDAAMDSB                                     */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 8 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
*        DCL 1 IDAARDB BASED, /* ADDRESS RANGE DEFINITION BLOCK      */
*              2 ARDID        CHAR(1),  /* CONTROL BLOCK ID          */
*              2 ARDTYPE      CHAR(1),  /* ENTRY TYPE                */
*                3 ARDKR      BIT(1),   /* KEY RANGE ENTRY           */
*                3 ARDHLI     BIT(1),   /* HIGH LVS (OR TOTAL) INDEX */
*                3 ARDSS      BIT(1),   /* SEQ SET FOR SS WITH DATA  */
*                3 ARDUOVFL BIT(1),     /* USE OVFL FOR THIS KEY     */
*                                       /* RANGE                     */
*                3 ARDEOD     BIT(1),   /* END OF DATA ARDB          */
*                3 ARDUSED    BIT(1),   /* ARDB HAS HAD SPACE REMOVED*/
*              2 ARDLEN       FIXED(15),/* LENGTH OF THIS ARDB       */
*              2 ARDNPTR      PTR(31),  /* PTR TO NEXT ARDB          */
*              2 ARDHKRBA     FIXED(32),/* RBA OF HIGH KEY CI        */
*              2 ARDHRBA      FIXED(32),/* HIGH USED RBA             */
*              2 ARDERBA      FIXED(32),/* HIGH ALLOCATED RBA        */
*              2 ARDVOLSR     CHAR(6),  /* SER OF HIGH RBA VOLUME    */
*              2 ARDRELNO     FIXED(15),/* I/O SUPPORT-CATALOG INFO  */
*              2 ARDPRF BIT(8),         /* PREFORMAT BYTE            */
*                                       /* CORRESPONDS TO FIELD      */
*                                       /*  ITYPEXT OF THE VSAM      */
*                                       /*  CATALOG                  */
*                3 ARDPRSS BIT(1),      /* SEQ SET WITH DATA         */
*                3 ARDPRFMT BIT(1),     /* EXTENTS NOT PREFORMATTED  */
*                3 * BIT(6),            /* RESERVED AND MUST AGREE   */
*                                       /*  WITH ITYPEXT             */
*              2 ARDKEYS      CHAR(*);  /* LOW AND HIGH KEY VALUES   */
*                                       /* FOR KEY RANGE ENTRY,      */
*                                       /* SIZE = 2*AMDKEYLN         */
./ ADD NAME=IDAARWA
* /* ARWA (VSAM RESTART WORK AREA) DECLARATION                      */
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73192/Y02113                                @Y021131*/
* /*                                                                 */
* /* DESCRIBES WORK AREA USED BY ALL AM/0 RESTART ROUTINES          */
* /* CREATED BY VSAM RESTART                                        */
* /*                                                                */
*%GOTO   ARWA1;
* /*     ARWA DIGRAM                                                */
* /*  0 -------------------------------------------                 */
* /*                                                             */
* /*          ARWASIZE            ARWAACBN                       */
* /*  4 ----------------------------------------                 */
* /*                                                            */
* /*          ARWABUFS       RESERVED ARWAMCDE                  */
* /*  8 -----------------------------------------                 */
* /*                                                             */
* /*     ARWARCDE            ARWAOPEN                            */
* /* 12 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWARSWA                                  */
* /* 16 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAUALP                                  */
* /* 20 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAWALP                                  */
* /* 24 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAACBU                                  */
* /* 28 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAACBW                                  */
* /* 32 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAAMLU                                  */
* /* 36 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAAMLW                                  */
* /* 40 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAAMBU                                  */
* /* 44 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAAMBW                                  */
* /* 48 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAAMBL                                  */
* /* 52 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAWORK                                  */
* /* 56 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAWAEP                                  */
* /* 60 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAMDSB                                  */
* /* 64 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWABLPT                                  */
* /* 68 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAMBPT                                  */
* /* 72 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAXBEG                                  */
* /* 76 -----------------------------------------                 */
* /*                                                             */
* /*     ARWAXFL2            ARWAXEND                            */
* /* 80 -----------------------------------------                 */
* /*                                                              */
* /*                    ARWAECB                                   */
* /* 84 -----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 88 -----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 92 -----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 96 -----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 100-----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 104-----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 108-----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 112-----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 116-----------------------------------------                 */
* /*                                                              */
* /*                    RESERVED                                  */
* /* 120 -----------------------------------------           @Y021131*/
* /*                                                                */
* /*     ARWA DECLARATION                                           */
* /*                                                                */
* /*                                                                */
*%ARWA1: ;
* /*                                                                */
*        DCL  1 IDAARWA  BASED,              /* ARWA                */
*               2 ARWASIZE  FIXED(15),       /* ARWA SIZE           */
*               2 ARWAACBN    FIXED(15),     /* NUMBER OF USER ACBS */
*               2 ARWABUFS    FIXED(15),     /* USED TO COMPUTE
*                                               LENGTH OF THE ARDKEYS
*                                               FIELD IN THE ARDB   */
*               2 *           BIT(8),        /* RESERVED            */
*               2 ARWAMCDE    FIXED(8),      /* ERROR MESSAGE CODE  */
*               2 ARWARCDE    FIXED(8),      /* ERROR RETURN CODE   */
*               2 ARWAOPEN    PTR(24),       /* OPEN PARAMETER LIST */
*               2 ARWARSWA    PTR(31),       /* PTR VS  RESTART WA  */
*               2 ARWAAL      CHAR(8) BDY(WORD), /* PT ACB LISTS    */
*                 3 ARWAUALP  PTR(31),       /* PT USER/WORK ACB LIST
*                                                            @Y021131*/
*                 3 ARWAWALP  PTR(31),       /* PT WORK ACBS @Y021131*/
*               2 ARWAACB     CHAR(8) BDY(WORD), /* PT CURRENT ACBS */
*                 3 ARWAACBU  PTR(31),       /* PTR CURRENT USER ACB*/
*                 3 ARWAACBW  PTR(31),       /* PTR CURRENT WORK ACB*/
*               2 ARWAAML     CHAR(8) BDY(WORD), /* PT CURRENT AMBLS*/
*                 3 ARWAAMLU  PTR(31),       /* PTR  USER  AMBL     */
*                 3 ARWAAMLW  PTR(31),       /* PTR  WORK  AMBL     */
*               2 ARWAAMB     CHAR(8) BDY(WORD), /* PT CURRENT AMBS */
*                 3 ARWAAMBU  PTR(31),       /* PTR CURRENT USER AMB*/
*                 3 ARWAAMBW  PTR(31),       /* PTR CURRENT WORK AMB*/
*               2 ARWAAMBL    PTR(31),       /* SAVE JSCB AMBL PT   */
*               2 ARWAWORK    PTR(31),       /* WORK AREA           */
*               2 ARWARSA     CHAR(64) BDY(WORD), /* VSAM RESTART
*                                               ERROR MESSAGE AND
*                                               PAGE FIX WORK AREA  */
*                 3 ARWAWAEP  PTR(31),       /* POINTER TO WORK
*                                               ACB EXTENSION       */
*                 3 ARWAMDSB  PTR(31),       /* PT TO CURRENT AMDSB */
*                 3 ARWABLPT  PTR(31),       /* PT TO CURRENT AMBL  */
*                 3 ARWAMBPT  PTR(31),       /* PT TO CURRENT AMB   */
*                 3 ARWAXBEG  PTR(31),       /* PT MSTR BLK TO FIX  */
*                 3 ARWAXFL2  BIT(8),        /* END LIST INDICATOR  */
*                 3 ARWAXEND  PTR(24),       /* PT END OF MSTR BLK  */
*                 3 ARWAECB   CHAR(4),       /* PAGE FIX ECB        */
*                   4 *       CHAR(3),       /* RESERVE SECTION ECB */
*                   4 ARWACC  BIT(8),        /* ECB CONDITION CODE  */
*                     5 *     BIT(4),        /*   UNUSED            */
*                     5 ARWAFXER BIT(1),     /* PAGE FIX INDICATOR  */
*                     5 *     BIT(3),        /*     UNUSED          */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED            */
*                 3 *         PTR(31),       /* RESERVED     @Y021131*/
*             2 ARWAUWAL CHAR(0); /* USER/WORK ACB LIST      @Y021131*/
* /*                                                                */
*%GOTO ARWA2;
* /*                                                                */
* /*                ARWA ASSEMBLER DSECT                            */
* /*                                                                */
         MACRO
IGCARWA  DSECT                               ARWA DSECT
ARWASIZE DS    H                             RESTART WORK AREA SIZE
ARWAACBN DS    H                             NUMBER OF OPEN VSAM ACBS
ARWABUFS DS    H                             LENGTH OF ARDKEYS FIELD
         DS    BL1                           RESERVED
ARWAMCDE DS    XL1                           ERROR MESSAGE CODE
ARWARCDE DS    XL1                           ERROR RETURN CODE
ARWAOPEN DS    AL3                           PT TO OPEN PARAMETER LIST
ARWARSWA DS    A                             POINTER TO VS  RESTART WA
ARWAAL   DS    0CL8                          PTR USER / WORK ACB LIST
ARWAUALP DS    A                             POINTER TO USER ACB LIST
ARWAWALP DS    A                             POINTER TO WORK ACBS
ARWAACB  DS    0CL8                          PTR TO CURRENT ACBS
ARWAACBU DS    A                             PTR TO CURRENT USER ACB
ARWAACBW DS    A                             PTR TO CURRENT WORK ACB
ARWAAML  DS    0CL8                          PTR TO CURRENT AMBLS
ARWAAMLU DS    A                             PTR TO CURRENT USER AMBL
ARWAAMLW DS    A                             PTR TO CURRENT WORK AMBL
ARWAAMB  DS    0CL8                          PTR TO CURRENT AMBS
ARWAAMBU DS    A                             PTR TO CURRENT USER AMB
ARWAAMBW DS    A                             PTR TO CURRENT WORK AMB
ARWAAMBL DS    A                             SAVE AREA FOR JSCB AMBL PT
ARWAWORK DS    A                             WORK AREA
ARWARSA  DS    0CL64                         PAGEFIX ERROR MSG WRK AREA
ARWAWAEP DC    A                             WORK ACB EXTENSION PT
ARWAMDSB DC    A                             CURRENT AMDSB POINTER
ARWABLPT DC    A                             CURRENT AMBL POINTER
ARWAMBPT DC    A                             CURRENT AMB POINTER
ARWAXBEG DC    A                             PT MASTER BLK TO BE FIXED
ARWAXFL2 DC    0BL1                          END OF LIST INDICATOR
ARWAXEND DC    A                             PT TO END OF MASTER BLK
ARWAECB  DC    0A                            MASTER BLOCK ECB
         DC    CL3                           RESERVE SECTION OF ECB
ARWACC   DC    CL1                           ECB CONDITION CODE
ARWAFXER EQU   X'08'                         PAGE FIX INDICATOR
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
         DC    A                             RESERVED
ARWAPGFX DC    A                             ADDRESS OF PAGE FIX LIST
         DC    F                             RESERVED
         MEND
* /*                                                                */
* /*           END OF IGCARWA, AM/0 RESTART WORK AREA               */
* /*                                                                */
*%ARWA2:  ;
./ ADD NAME=IDABFR
 %IDABFR: MACRO;
      IF MACLIST(1) = 'UPDATE'             /* SEE IF UPDATE          */
        THEN
          DO;
          ANS('DO;  /* SET UPDATED BFR */');
          ANS('BUFCORBA = BUFCDDDD;') SKIP;
          ANS('BUFCMW = ON;') SKIP;
          ANS('END;') SKIP;
          RETURN CODE(0);                  /* EXIST FROM MACRO       */
          END;
          IF MACLIST(1) = 'SETORBA'
            THEN
              DO;
              ANS('DO; /* SET OUTPUT RBA */');
              ANS('BUFCORBA = RPARM1;') SKIP;
              ANS('BUFCMW = ON;  /* SET MUST WRITE */') SKIP;
              ANS('END;') SKIP;
              RETURN CODE(0);              /* EXIST FROM MACRO       */
              END;
            ELSE RETURN CODE(4);           /* UNKNOWN PARAMETER      */
 %END IDABFR;
./ ADD NAME=IDABIB
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDABIB                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = BASE INFORMATION BLOCK                      */
 /*                                                                  */
 /*   FUNCTION = THE BIB CONTAINS INFORMATION RELATING TO THE        */
 /*              OPERATIONAL SPHERE.                                 */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE AMBL (AMBLBIB).    */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDABIB BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192A.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 22 JANUARY 75                            */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDABIB BASED BDY (WORD),  /* BASE INFORMATION BLOCK        */
          2 BIBHDR,                 /* BIB HEADER SECTION            */
            3 BIBID CHAR(1),        /* CONTROL BLOCK ID              */
            3 BIBFLG1 BIT(8),       /* BIB FLAG BYTE                 */
              4 BIBVIRT BIT(1),     /* VIRTUAL UCB'S IN SPHERE       */
              4 BIBREST BIT(1),     /* RESTART PROCESSING SPHERE     */
              4 BIBCKPT BIT(1),     /* CHECKPOINT PROCESSING SPHERE  */
              4 * BIT(5),           /* UNUSED                        */
            3 BIBLEN FIXED(15),     /* LENGTH OF BIB                 */
          2 BIBFLG2 BIT(8),         /* FLAGS                         */
          2 * CHAR(3),              /* NOT USED                      */
          2 BIBUPT PTR(31),         /* ADDR OF UPGRADE TABLE         */
          2 BIBVMT PTR(31),         /* ADDR OF VOLUME MOUNT TABLE    */
          2 BIBDACB PTR(31),        /* ADDR OF DUMMY ACB             */
          2 BIBPAMBL PTR(31),       /* ADDR OF PRIMARY AMBL          */
          2 BIBSPHPT PTR(31),       /* PTR TO SPHERE BLOCK           */
          2 BIBPRSPH PTR(31),       /* PTR TO PROTECTED SPHERE BLK   */
          2 BIBHEBPT PTR(31),       /* PTR TO FIRST HEB              */
          2 BIBHEBFQ PTR(31),       /* PTR FIRST FREE HEADER ELEMENT */
          2 BIBVCRT PTR(31),        /* ADDR OF VSAM C/R TABLE        */
          2 BIBWSHD PTR(31),        /* ADDR OF WORK SPACE HEADER BLK */
          2 BIBCSL PTR(31),         /* IN VS2, PTR TO CSL CHAIN.     */
          2 BIBPSAB PTR(31),        /* ADDRS OF PROT SPHERE AMBL BLK.*/
          2 BIBVGTT PTR(31),        /* IN VS2, ADDRESS OF SPHERE VGTT*/
          2 BIBRTNS,                /* PTR'S TO RECORD MGMT ROUTINES */
            3 BIBINTRF PTR(31),     /* INTERFACE ROUTINE             */
            3 BIBCEAPP PTR(31),     /* CHANNEL END APPENDAGE         */
            3 BIBASYRT PTR(31),     /* ASYNCHRONOUS ROUTINES         */
            3 BIBSIOAP PTR(31),     /* START I/O APPENDAGE           */
          2 BIBJOBNM CHAR(8),       /* JOBNAME OF ISSUER OF OPEN     */
          2 BIBSTPNM CHAR(8),       /* STEP NAME OF OPENER           */
          2 BIBDDNM CHAR(8),        /* DDNAME OF OPENER              */
          2 BIBASCB PTR(31);        /* ASCB ADDR OF ISSUER OF OPEN   */
./ ADD NAME=IDABLPRM
*        %GOTO IDABLPL1;                /* BILINGUAL MAPPING
         MACRO
&IDABLPN IDABLPRM &DSECT=NO             NO DSECT IS THE DEFAULT      */
*%IDABLPL1: ;
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDABLPRM                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = BUILD VSAM RESOURCE POOLS PARAMETER LIST.   */
*/*                                                                  */
*/*   FUNCTION = IDABLPRM MAPS THE ENTRIES IN THE PARAMETER LIST     */
*/*              CREATED BY BLDVRP AND DELVRP MACROS.                */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = GENERALLY POINTED TO BY REGISTER 2.  */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - RESPECIFY IDABLPRM BASED.            */
*/*                                                                  */
*/*   CREATED BY: N/A                                                */
*/*                                                                  */
*/*   STATUS = VS1 RELEASE 4                                         */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 2 AUGUST 74                              */
*/*                                                                  */
*/********************************************************************/
*        %GOTO IDABLPL2;                /*
         AIF   ('&DSECT' EQ 'NO').IDABLP1
&IDABLPN DSECT ,                        BLDVRP/DELVRP PARAMETER LIST
         AGO   .IDABLP2
.IDABLP1 ANOP
&IDABLPN DS    0F                       BLDVRP/DELVRP PARAMETER LIST
.IDABLP2 ANOP
IDABLPRM EQU   *                        START OF BASIC PARAMETER LIST
BLPACBID DS    XL1                      ACBID - MUST BE X'A0'
BLPACBCD EQU   X'A0'                    ACBID CONSTANT
BLPACBST DS    XL1                      ACBSTYP - MUST BE X'11'
BLPSTCD  EQU   X'11'                    ACBSTYP CONSTANT
         DS    H                        RESERVED
BLPBUFLP DS    0A                       POINTER TO THE BUFFER LIST
BLPUACB  DS    0A                       POINTER TO THE USER ACB
BLPIOPLH DS    AL4                      POINTER TO I/O SUPPORT PLH
BLPKEYLN DS    XL1                      KEYLENGTH
BLPSTRNO DS    XL1                      STRNGNO REQUESTS
BLPFLAGS DS    0BL2                     PARAMETER LIST FLAGS
BLPFLAG1 DS    BL1                      FLAG FIELD
BLPFDBDC EQU   X'80'                    DBDC FLAG
BLPFBLD  EQU   X'40'                    BLDVRP REQUEST FLAG
BLPFDEL  EQU   X'20'                    DELVRP REQUEST FLAG
BLPFLSR  EQU   X'10'                    LSR OPTION FLAG
BLPFGSR  EQU   X'08'                    GSR OPTION FLAG
BLPFIOBF EQU   X'04'                    FIX IOB'S REQUEST FLAG
BLPFBFRF EQU   X'02'                    FIX BUFFERS REQUEST FLAG
BLPFSTAD EQU   X'01'                    STRING ADD REQUEST FLAG
BLPFLAG2 DS    BL1                      FLAG FIELD
BLPFPART EQU   X'80'                    PARTIAL BUILD REQUEST FLAG
BLPFUPGR EQU   X'40'                    UPGRADE SET FLAG
BLPFPATH EQU   X'20'                    PATH FLAG
BLPFPRIM EQU   X'10'                    PRIM FLAG
BLPFDATA EQU   X'08'                    DATA FLAG
BLPFINDX EQU   X'04'                    INDEX FLAG
BLPFIOSR EQU   X'02'                    I/O SUPPORT REQUEST FLAG
BLPFRSTR EQU   X'01'                    RESTART REQUEST FLAG
BLPOCODE DS    AL1                      SPECIAL USE CODE
BLPOACB  DS    AL3                      RESERVED
         DS    2AL4                     RESERVED
BLPIOACB DS    0A                       POINTER TO I/O SUPPORT ACB
         DS    XL3                      RESERVED
BLPDSORG DS    XL1                      ACB DSORG
BLPDSOCD EQU   X'08'                    ACBDSORG CONSTANT
         DS    5AL4                     RESERVED
BLPOFLGS DS    XL1                      ACB OPEN FLAGS
BLPOFLCD EQU   X'02'                    ACBOFLAGS CONSTANT
         DS    XL2                      RESERVED
BLPERFLG DC    X'00'                    MUST BE X'00'
BLPEND   EQU   *                        END OF BASIC PARAMETER LIST
BLPSIZE  EQU   BLPEND-IDABLPRM          SIZE OF BASIC PARAMETER LIST
BLPBUFL  DSECT ,                        BUFFER REQUEST LIST
BLPBUFSZ DS    F                        BUFFER SIZE
BLPBRLFG DS    BL1                      BUFFER LIST FLAGS
BLPBFLST EQU   X'80'                    LAST BUFFER REQUEST FLAG
BLPBRSV1 EQU   X'7F'                    RESERVED
         DS    CL1                      RESERVED
BLPBFLCT DS    H                        BUFFER COUNT
BLPPRMCD EQU   128                      ACB EOF CONSTANT
         MEND  , */
 %IDABLPL2: ;
    DCL 1 IDABLPRM BASED BDY (WORD), /* BLDVRP/DELVRP PARAMETER LIST */
          2 BLPACBID FIXED (8),      /* ACBID - MUST BE X'A0'        */
          2 BLPACBST FIXED (8),      /* ACBSTYP - MUST BE X'11'      */
          2 * FIXED (15),            /* RESERVED                     */
          2 BLPBUFLP PTR (31),       /* POINTER TO THE BUFFER LIST   */
            3 BLPUACB PTR (31),      /* POINTER TO THE USER ACB      */
              4 BLPIOPLH PTR (31),   /* POINTER TO I/O SUPPORT PLH   */
          2 BLPKEYLN FIXED (8),      /* KEYLENGTH                    */
          2 BLPSTRNO FIXED (8),      /* STRNGNO REQUESTS             */
          2 BLPFLAGS BIT (16),       /* FLAG FIELD                   */
            3 BLPFLAG1 BIT (8),      /* FLAG FIELD                   */
              4 BLPFDBDC BIT (1),    /* DBDC FLAG                    */
              4 BLPFBLD BIT (1),     /* BLDVRP REQUEST FLAG          */
              4 BLPFDEL BIT (1),     /* DELVRP REQUEST FLAG          */
              4 BLPFLSR BIT (1),     /* LSR OPTION FLAG              */
              4 BLPFGSR BIT (1),     /* GSR OPTION FLAG              */
              4 BLPFIOBF BIT (1),    /* FIX IOB'S REQUEST FLAG       */
              4 BLPFBFRF BIT (1),    /* FIX BUFFERS REQUEST FLAG     */
              4 BLPFSTAD BIT (1),    /* STRING ADD REQUEST FLAG      */
            3 BLPFLAG2 BIT (8),      /* FLAG FIELD                   */
              4 BLPFPART BIT (1),    /* PARTIAL BUILD REQUEST FLAG   */
              4 BLPFUPGR BIT (1),    /* UPGRADE SET FLAG             */
              4 BLPFPATH BIT (1),    /* PATH FLAG                    */
              4 BLPFPRIM BIT (1),    /* PRIMARY FLAG                 */
              4 BLPFDATA BIT (1),    /* DATA FLAG                    */
              4 BLPFINDX BIT (1),    /* INDEX FLAG                   */
              4 BLPFIOSR BIT (1),    /* I/O SUPPORT REQUEST FLAG     */
              4 BLPFRSTR BIT (1),    /* RESTART REQUEST FLAG         */
          2 BLPOCODE PTR (8),        /* SPECIAL USE FIELD            */
          2 BLPOACB PTR (24),        /* ACB POINTER                  */
          2 BLPCORE,                 /*REC MGT GETCORE REQUEST       */
            3 BLPGFLG BIT(8),        /*GET CORE FLAG BYTE            */
              4 BLPGREQ BIT(1),      /*GET CORE REQUEST INDIC        */
              4 BLPGPG BIT(1),       /*GET CORE PAGE BDY REQUEST     */
            3 BLPGSZ FIXED(24),      /*GET CORE LENGTH               */
            3 BLPGSP CHAR(1),        /*GET CORE SUBPOOL              */
            3 BLPGAD PTR(24),        /*GET CORE ADDRESS RETURN       */
          2 BLPIOACB PTR (31),       /* POINTER TO I/O SUPPORT ACB   */
            3 * (3) FIXED (8),       /* RESERVED                     */
            3 BLPDSORG FIXED (8),    /* MUST BE X'08'                */
          2 * (5) PTR (31),          /* RESERVED                     */
          2 BLPOFLGS FIXED (8),      /* MUST BE X'02'                */
          2 * (2) FIXED (8),         /* RESERVED                     */
          2 BLPERFLG FIXED (8),      /* MUST BE X'00'                */
        1 BLPBUFL (*) BASED(BLPBUFLP), /* BUFFER REQUEST LIST        */
          2 BLPBUFSZ FIXED (31),     /* BUFFER SIZE                  */
          2 BLPBRLFG,                /* BUFFER LIST FLAGS            */
            3 BLPBFLST BIT (1),      /* LAST BUFFER REQUEST FLAG     */
            3 * BIT (7),             /* RESERVED                     */
          2 * FIXED (8),             /* RESERVED                     */
          2 BLPBFLCT FIXED (15)      /* BUFFER COUNT                 */
    ;
    DCL BLPSTCD FIXED (8) CONSTANT(17), /* ACBSTYP CONSTANT          */
        BLPACBCD FIXED (8) CONSTANT (160), /* ACBID CONSTANT         */
        BLPDSOCD FIXED (8) CONSTANT (8), /* ACBDSORG CONSTANT        */
        BLPOFLCD FIXED (8) CONSTANT (2), /* ACBOFLAGS CONSTANT       */
        BLPPRMCD FIXED (8) CONSTANT (128) /* ACB EOF CONSTANT        */
    ;
./ ADD NAME=IDABSPH
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDABSPH                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = BUFFER SUBPOOL HEADER                       */
*/*                                                                  */
*/*   FUNCTION =  DEFINES VSAM BUFFER POOL FOR SHARED RESOURCES      */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = IDABSPH IS POINTED TO BY IDAAMB      */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM BLDVRP                                       */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 3  (CHANGE FLAG @Y30SDXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 19 SEPT 74                               */
*/*                                                                  */
*/********************************************************************/
  DCL 1 IDABSPH BASED,              /* BUFFER SUBPOOL HEADER         */
       2 BSPHID CHAR(1),            /* BSPH IDENTIFICATION           */
       2 BSPHFLG1 BIT(8),           /* FLAG BYTE 1                   */
        3 BSPHIOBF BIT(1),          /* I/O BLOCKS FIXED              */
        3 BSPHBFRF BIT(1),          /* BUFFERS FIXED                 */
       2 BSPHLEN FIXED(15),         /* LENGTH OF BSPH                */
       2 BSPHNM CHAR(4),            /* EBCDIC BSPH ID                */
       2 BSPHNBSP PTR(31),          /* NEXT BSPH                     */
       2 BSPHBFNO FIXED(15),        /* NUMBER OF BUFFERS             */
       2 BSPHERCT FIXED(15),        /* WRITE ERROR COUNT             */
       2 BSPHBUFC PTR(31),          /* FIRST BUFC IN POOL            */
       2 BSPHMDBT FIXED(32),        /* MODIFICATION BITS             */
       2 BSPHBSZ FIXED(31),         /* BUFFER SIZE                   */
       2 BSPHCSRC FIXED(31),        /* COMPARE/SWAP RESOURCE         */
        3 BSPHFLG2 BIT(8),          /* FLAG BYTE 2                   */
         4 BSPHAPRT BIT(1),         /* ARITHMETIC PROTECT BIT        */
         4 BSPHPCUC BIT(1),         /* USE CHAIN CHANGING            */
        3 * PTR(8),                 /* RESERVED                      */
        3 BSPHPSUC FIXED(15),       /* NBR OF PLHS SEARCHING USE CHN */
       2 BSPHCPLH PTR(31),          /* PLH CHANGING USE CHAIN        */
       2 BSPHRDS FIXED(31),         /* NUMBER OF BUFFER READS        */
       2 BSPHFND FIXED(31),         /* NBR TIMES RBA FOUND BY
                                       LOOK-ASIDE                    */
       2 BSPHUIW FIXED(31),         /* NBR OF USER INITIATED WRITES  */
       2 BSPHNUIW FIXED(31),        /* NON-UIW COUNT                 */
       2 BSPHUTOP PTR(31),          /* PTR TO USE CHAIN TOP          */
       2 BSPHUBTM PTR(31),          /* PTR TO BOTTOM OF USE CHAIN    */
       2 BSPH1ST PTR(31);           /* POINTER TO 1ST IDABSPH        */
./ ADD NAME=IDABUFC
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDABUFC                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = VSAM BUFFER CONTROL BLOCK HEADER (IDABUFDR) */
*/*              VSAM BUFFER CONTROL BLOCK (IDABUFC)                 */
*/*                                                                  */
*/*   FUNCTION = THIS MACRO CONTAINS:                                */
*/*              IDABUFDR = ORIGIN OF THE COMMON BUFFER AND THE      */
*/*               PREFORMAT BUFFER CHAINS                            */
*/*              IDABUFC = DESCRIBES THE BUFFER                      */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = IDABUFDR IS POINTED TO BY IDAAMB     */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/********************************************************************/
*  DCL 1 IDABUFDR BASED BDY(WORD),         /* BUFFER HEADER          */
*        2 BUFDRID CHAR(1),                /* BUFFER HEADER ID      */
*        2 BUFDRNO PTR(8),                 /* NUMBER OF BUFFERS     */
*        2 BUFDRLEN FIXED(15),             /* LENGTH OF CNTL BLK    */
*        2 BUFDRPFB PTR(31),               /* FIRST PREFORMAT BUFC  */
*        2 BUFDRPFN PTR(8),                /* NO. OF PREFORMAT BUFCS*/
*        2 BUFDRCIX PTR(8),                /* NO OF COMMON IX BFRS  */
*          3 BUFDRMAX PTR(8),              /* MAX BFRS PER SEQ PLH  */
*        2 BUFDRTSB CHAR(1),               /* HDR TEST AND SET BYTE */
*        2 BUFDRFLG BIT(8),                /* BFR HEADER FLAGS      */
*          3 BUFDRREL BIT(1),              /* BFR REL FLG           */
*          3 BUFDRAVL BIT(1),              /* BFR AVAILABLE          */
*          3 * BIT(6),                     /* UNUSED                 */
*        2 BUFDBUFC PTR(31),               /* PTR TO 1ST BUFC@X04SVLC*/
*        2 *        CHAR(4);               /* RESERVED              */
*/********************************************************************/
*/* BUFFER CONTROL BLOCK                                             */
*/********************************************************************/
*  DCL 1 IDABUFC  BASED BDY(DWORD),        /* BUFC ENTRY     @X04SVLC*/
*        2 BUFCAVL CHAR(1),                /* BUFFER TEST/SET BYTE  */
*          3 BUFCUCNT FIXED(8),            /* USE COUNT      @X04SVLC*/
*        2 BUFCFLG1 BIT(8),                /* BUFC FLAGS--BYTE ONE  */
*          3 BUFCUPG BIT(1),               /* UPGRADE SET BUFC
*                                                           @X04SVLC*/
*          3 BUFCSEG BIT(1),               /* SEGMENTED REC IN BFR  */
*          3 BUFCINS BIT(1),               /* BUFC FOR INSERTS ONLY */
*          3 BUFCER1 BIT(1),               /* READ ERROR OCCURRED   */
*          3 BUFCER2 BIT(1),               /* WRITE ERROR OCCURRED  */
*          3 BUFCVAL BIT(1),               /* BUFCDDDD IS VALID     */
*          3 BUFCEXC BIT(1),               /* BFR IN EXCL CNTL      */
*          3 BUFCEPT BIT(1),               /* POST BIT               */
*        2 BUFCIOFL BIT(8),                /* I/O MGR COMMUN FLAGS   */
*          3 BUFCMW  BIT(1),               /* MUST WRITE THIS CINV   */
*          3 BUFCFMT BIT(1),               /* FORMAT WRITE BUFC      */
*          3 BUFCRRD BIT(1),               /* READ REQUIRED          */
*          3 BUFCREAL BIT(1),              /* BUFCBAD IS A REAL ADDR */
*          3 BUFCWC  BIT(1),               /* WRITE CHECK OPTION     */
*          3 BUFCXEDB BIT(1),              /* NO EDB FOUND FOR RBA */
*          3 BUFCPFCP BIT(1),              /* PREFORMAT CP COMPLETE  */
*          3 BUFCFIX  BIT(1),              /* BUFFER FIXED           */
*        2 BUFCFLG2 BIT(8),         /* FLAG BYTE--TWO        @X04SVLC*/
*          3 BUFCXDDR BIT(1),       /* SUPRESS DDR ON ERRORS @X04SVLC*/
*          3 BUFCNLAS BIT(1),       /* NON-EXIST PG RD IND   @X04SVLC*/
*          3 BUFCBSYR BIT(1),       /* BUSY READING          @X04SVLC*/
*          3 BUFCBSYW BIT(1),       /* BUSY WRITING          @X04SVLC*/
*          3 * BIT(4),              /* UNUSED                @X04SVLC*/
*        2 BUFCPLH PTR(31),         /* POINTER TO PLH        @X04SVLC*/
*          3 BUFCAMB PTR(31),       /* PTR TO AMB            @X04SVLC*/
*        2 BUFCDDDD PTR(32),        /* INPUT RBA             @X04SVLC*/
*        2 BUFCORBA PTR(32),        /* OUTPUT RBA            @X04SVLC*/
*        2 BUFCCPA PTR(31),         /* CHAN PGM AREA ADDRESS @X04SVLC*/
*        2 BUFCBAD PTR(31),         /* BUFFER ADDRESS        @X04SVLC*/
*        2 BUFCNXT1 PTR(31),        /* NEXT BUFC IN I/O CHN  @X04SVLC*/
*        2 BUFCINV    PTR(31),      /* INVOKERS FLD FOR ASM AND DB/DC
*                                                            @X04SVLC*/
*          3 BUFCWLEN FIXED(15),    /* BUFC DATA LEN FOR VBP @X04SVLC*/
*        2 BUFCDSPC   PTR(31),      /* DSPCT PTR FOR VBP.    @X04SVLC*/
*        2 BUFCIDXL FIXED(8),       /* INDEX LEVEL           @X04SVLC*/
*        2 BUFCNXT2 PTR(24),        /* NEXT LOGICAL BUFFER   @X04SVLC*/
*        2 BUFXIRBA FIXED(32),      /* EXCL INPUT RBA        @X04SVLC*/
*        2 BUFXORBA FIXED(32),      /* EXCL OUTPUT RBA       @X04SVLC*/
*        2 BUFCHAIN PTR(31),        /* NEXT BUFC IN POOL     @X04SVLC*/
*        2 BUFCMDBT FIXED(32),      /* MODIFICATION MASK     @X04SVLC*/
*        2 BUFCUCUP PTR(31),        /* NXT BUFC UP USE CHN   @X04SVLC*/
*        2 BUFCUCDN PTR(31),        /* NXT BUFC DOWN USE CHN @X04SVLC*/
*        2 BUFCEND CHAR(0)BDY(DWORD);/* ROUND LEN TO DWORD   @X04SVLC*/
*        DCL BUFCRSC1 CHAR(8)DEFINED(BUFCAVL);/* CDS RESOURCE
*                                                            @X04SVLC*/
./ ADD NAME=IDACALL
 %IDACALL:
    MACRO KEYS(ADDBASE);

 /* MACRO IS NEW FOR VSAM RELEASE 2                          @X04SVLC*/

    DCL
      ACOL FIXED;
    ACOL=MACCOL+LENGTH(MACLIST)+8;
    ANS('I'MACINDEX(3:4)':') COL(2);
    ANS('DO;') COL(MACCOL);
    ANS('/* IDACALL'MACLIST) COL(44);
    ANS('*/') COL(70);
    IF MACLIST(1) ^= '' THEN
      DO;
    ANS('CALL 'MACLIST(1)';') SKIP COL(MACCOL+2);
    ANS('/* EXIT TO 'MACLIST(1)) COL(44);
    ANS('*/') COL(70);
      END;
    ANS('GEN(BALR @11,0);') SKIP COL(MACCOL+2);
    ANS('/* LOAD ADDR OF REENTRY   */') COL(44);
    ANS('GEN(USING *,@11);') SKIP COL(MACCOL+2);
    ANS('/* ESTABLISH ADDRESSING   */') COL(44);
    IF ADDBASE^='' THEN             /* IF SECOND BAS NEEDED          */
      DO;
        ANS('GEN(USING *+4095,'ADDBASE(1)');') SKIP COL(MACCOL+2);
        ANS('/* ESTABLISH SECOND BASE  */') COL(44);
        ACOL=ACOL+LENGTH(ADDBASE)+7;
        ANS('GEN(LA    'ADDBASE(1)',4095(@11));') SKIP COL(MACCOL+2
            );
        ANS('/* LOAD SECOND BASE       */') COL(44);
        ANS('GEN(L     'ADDBASE(1)',=A(@PSTART+4095));') SKIP COL(
            MACCOL+2);
        ANS('/* RELOAD SECOND BASE     */') COL(44);
        ANS('GEN(USING @PSTART+4095,'ADDBASE(1)');') SKIP COL(
            MACCOL+2);
        ANS('/* ESTABLISH SECOND BASE  */') COL(44);
      END;
    ANS('GEN(L     @11,=A(@PSTART));') SKIP COL(MACCOL+2);
    ANS('/* RELOAD BASE            */') COL(44);
    ANS('GEN(USING @PSTART,@11);') SKIP COL(MACCOL+2);
    ANS('/* ESTABLISH ADDRESSING   */') COL(44);
    ANS('END I'MACINDEX(3:4)';') SKIP COL(MACCOL);
    ANS COL(ACOL);
    %END;
./ ADD NAME=IDACIDF
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDACIDF                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = CONTROL INTERVAL DEFINITION FIELD           */
*/*                                                                  */
*/*   FUNCTION = DESCRIBES THE FREE SPACE IN A VSAM CONTROL INTERVAL */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM RECORD MANAGEMENT                            */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                         28 MAR 78                       @ZA31009 */
*/********************************************************************/
*        DCL 1 IDACIDF BASED,  /* CONTROL INTERVAL DEFINITION FIELD  */
*              2 CIDFOSET     PTR(15),  /* OFFSET TO FREE SPACE      */
*              2 CIDFLL       PTR(15),  /* LENGTH OF FREE SPACE      */
*                                       /* BOTH PTRS CONTAIN ZERO    */
*                                       /* VALUE FOR SOFTWARE EOF    */
*                3 CIDFBUSY   BIT(1),  /* CI SPLIT BUSY FLAG @ZA31009*/
*                3 *          BIT(15);  /*FREE SPACE LENGTH  @ZA31009*/
./ ADD NAME=IDACLWRK
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDACLWRK                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CLOSE AND T-CLOSE ACB WORK AREA.       */
 /*                                                                  */
 /*   FUNCTION = THE ACB WORK AREA IS USED FOR INTERNAL COMMUNICATION*/
 /*              WITHIN THE CLOSE MODULES AND THE T-CLOSE MODULES.   */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE IDACLWRK IS POINTED TO BY        */
 /*                             REGISTER 4 (RCORE).                  */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY.               */
 /*                                                                  */
 /*   CREATED BY: VSAM CLOSE MODULE IDA0200T.                        */
 /*               VSAM T-CLOSE MODULE IDA0231T.                      */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 22 NOVEMBER 74                   @Z30SSRL*/
 /*                                                                  */
 /********************************************************************/
    DCL
      1 IDACLWRK BASED(RCORE),      /* ACB WORK AREA                 */
       2 CLWID CHAR(8),             /* CLOSE ACB WK AREA ID  @Z30SSRL*/
       2 CLWCOMWK PTR(31),          /* ADDRESS OF COMMON WORK AREA   */
       2 CLWAMBPT PTR(31),          /* CURRENT AMB POINTER           */
       2 CLWSFI CHAR(12),           /* SUB FUNCTION INFORMATION AREA */
       2 CLWBNOFL BIT(1),           /* INDICATE NO BUFFER FLUSH      */
       2 CLWCNOUP BIT(1),           /* INDICATE NO CATALOG UPDATE    */
       2 CLWNWRIT BIT(1),           /* INDICATE NO WRTBFR            */
       2 CLWPATH BIT(1),            /* INDICATE PATH PROCESSING      */
       2 CLWSPHCL BIT(1),           /* INDICATE CLOSE ENTIRE SPHERE  */
       2 CLWDUMMY BIT(1),           /* INDICATE DUMMY DATA SET       */
       2 CLWOUTPT BIT(1),           /* INDICATE BASE DATA SET OPENNED
                                       FOR OUTPUT                    */
       2 CLWPARCL BIT(1),           /* INDICATE PARTIAL CLOSE        */
       2 CLWPRMCL BIT(1),           /* INDICATE PRIMARY CLOSE        */
       2 CLWSECCL BIT(1),           /* INDICATE SECONDARY CLOSE      */
       2 CLWGMAIN BIT(1),           /* IND MODULE WORK AREA BUILT    */
       2 CLWTERM  BIT(1);           /* INDICATE TERMINATING ERROR IN
                                       IDA0200B                      */
./ ADD NAME=IDACMB
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDACMB                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = CLUSTER MANAGEMENT BLOCK.                   */
 /*                                                                  */
 /*   FUNCTION = THE CMB POINTS TO CORE BLOCK HEADERS WHICH REFLECT  */
 /*              GOTTEN CORE FOR AN ESDS OR A KSDS CONTROL BLOCK     */
 /*              STRUCTURE.                                          */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE AMBL (AMBLCMB).    */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDACMB BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192F.                         */
 /*                                                                  */
 /*   STATUS = VS2 RELEASE 3.                                        */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 10/22/74                                 */
 /*                                                                  */
 /********************************************************************/
 DCL 1 IDACMB BASED,                /* CLUSTER MANAGEMENT BLOCK      */
       2 CMBID    CHAR(1),          /* CONTROL BLOCK ID              */
       2 *        CHAR(1),          /* UNUSED                        */
       2 CMBLEN   FIXED(15),        /* LENGTH OF CMB                 */
       2 CMBFLGS BIT(8),            /* INDICATOR FLAGS               */
         3 CMBOUT BIT(1),           /* STRUCTURE ALLOWS OUTPUT       */
       2 CMBNST CHAR(1),            /* NUMBER OF STRINGS             */
       2 CMBCNT   FIXED(15),        /* NUMBER OF ENTRIES IN CMB      */
       2 CMBPTRS,                   /* PTR'S TO STORAGE BLOCKS       */
         3 CMBUSRPT PTR(31),        /* USER BLOCK HEADER             */
         3 CMBPRPTR PTR(31),        /* PROTECT BLOCK HEADER          */
         3 CMBSTPTR PTR(31),        /* NON-PROTECTED STRING BLK HDR  */
         3 CMBUSPTR PTR(31),        /* NON-PROT UPGR STRING BLK HDR  */
         3 CMBFSTPT PTR(31),        /* VS2 - GLOBAL FIXED STRING BLOCK
                                       HEADER                @ZA04718*/
         3 CMBUFSPT PTR(31),        /* VS2 - GLOBAL UPGRADE FIXED
                                       STRING BLOCK HEADER   @ZA04718*/
         3 CMBBFRPT PTR(31),        /* BUFFER BLOCK HEADER           */
         3 CMBUBFPT PTR(31),        /* UPGRADE BUFFER BLOCK HEADER   */
         3 CMBDEBPT PTR(31),        /* DEB BLOCK HEADER              */
         3 CMBEDBPT PTR(31),        /* EDB BLOCK HEADER              */
         3 CMBPSTPT PTR(31),        /* VS2 - PROTECTED STRING BLK HDR*/
         3 CMBPUSPT PTR(31),        /* VS2 - PROT UPGR STRING BLK HDR*/
         3 CMBFXDPT PTR(31),        /* FIXED BLOCK HEADER    @ZA04718*/
         3 * PTR(31);               /* RESERVED              @ZA04718*/
./ ADD NAME=IDACPA
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDACPA                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = CHANNEL PROGRAM AREA                        */
*/*                                                                  */
*/*   FUNCTION =                                                     */
*/*                                                                  */
*/* THE CHANNEL PROGRAM AREA(CPA) CONTAINS A FIXED, HEADER SECTION   */
*/* CONTAINING VARIOUS POINTERS AND PARAMETERS, AND OTHER SECTIONS   */
*/* WHICH CONTAIN CHANNEL PROGRAM SEGMENTS AND ARGUMENTS NEEDED BY   */
*/* THE CCW-S. THESE VARIOUS OTHER SECTIONS ARE LOCATED BY POINTERS  */
*/* FROM THE FIXED SECTION SINCE THE AMOUNT OF SPACE REQUIRED FOR    */
*/* THEM VARIES DEPENDING ON CONTROL INTERVAL SIZE, BLOCKSIZE, OPEN  */
*/* OPTIONS SPECIFIED, ETC.                                          */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = IDACPA IS POINTED TO BY IDABUFC      */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 13 AUG 74                                */
*/*                                                                  */
*/********************************************************************/
*% GOTO CPAPLS1;
*/*                                                                  */
*/* READ AND WRITE CHANNEL COMMANDS SPECIFY AN INDIRECT DATA ADDRESS */
*/* LIST AND POINT TO AN ADDRESS WITHIN THE AREA POINTED TO BY       */
*/* CPAIDAL. THE REAL ADDRESSES IN CPAIDAL ARE FILLED IN LATER IN    */
*/* CONJUNCTION WITH PAGE FIXING.  THE VIRTUAL ADDRESSES CORRESPONDING*/
*/* TO THE REAL ADDRESSES ARE IN THE AREA POINTED TO BY CPAVPL.      */
*/* THESE VIRTUAL ADDRESSES ARE NORMALLY SUPPLIED BY OPEN.           */
*/* (EXCEPTION WHEN CPAVPLV IS OFF)                                  */
*/* THE FIRST ADDRESS IS THE STARTING ADDRESS OF THE                 */
*/* BUFFER. SUBSEQUENT ADDRESSES ARE OBTAINED BY INCREMENTING THE    */
*/* PREVIOUS ADDRESS BY 2K OR PHYSICAL BLOCK SIZE, WHICHEVER IS LESS.*/
*/*                                                                  */
*/* IT IS ALSO ASSUMED BY THE I/O MANAGER THAT CCW LISTS WILL        */
*/* EXIST, AS REQUIRED, AS SPECIFIED FOR EACH TYPE OF CHANNEL        */
*/* PROGRAM SEGMENT.                                                 */
*/*                                                                  */
*/*                                                                  */
*/* *** IMPORTANT NOTE: THE ENTIRE CPA MUST BE CONTAINED WITHIN      */
*/*                     A SINGLE PAGE.                               */
*/*          ALSO NOTE THAT CHANNEL PROGRAM SEGMENTS MUST BE         */
*/*                    ON DOUBLE WORD BOUNDARIES.                    */
*/*                                                                  */
*/*                                                                  */
*/* IN THE FOLLOWING DESCRIPTIONS,                                   */
*/*     CC = COMMAND CHAIN                                           */
*/*     MT = MULTI-TRACK MODE                                        */
*/*     IDAL = INDIRECT DATA ADDRESS LIST                            */
*/*     LL = PHYSICAL BLOCK SIZE (LPMBLKSZ)                          */
*/*     N = NUMBER OF PHYSICAL BLOCKS PER CINV (CPABCINV)            */
*/*     NT = NO TRANSFER                                             */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/******       UPDATE WRITE CHANNEL PROGRAM SEGMENT             ******/
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/* EVERY SEARCH ID CCW AFTER THE FIRST ONE IS A MULTI-TRACK SEARCH. */
*/*                                                                  */
*/*                                                                  */
*/* (CPAWCPS POINTER MINUS 8)     (EXTRA CCW SLOT IF RPS DEVICE)     */
*/* CPAWCPS->                     SEEKH       CPAWSEEK,CC,6          */
*/*                         __   SRCH ID EQ  SA,CC,5                */
*/*                          _  TIC         *-8                    */
*/*                             WD          DA1,(CC,IDAL),LL       */
*/*                                                                 */
*/*                             SRCH ID EQ  SA+5,(CC,MT),5         */
*/*                           - TIC         *-8                    */
*/*                             WD          DA2,(CC,IDAL),LL       */
*/*            N GROUPS  --       .                                 */
*/*            OF 3 CCW-S         .                                 */
*/*                                .                                 */
*/*                             SRCH ID EQ  SA+5*(N-1),(CC,MT),5   */
*/*                           - TIC         *-8                    */
*/*                        __   WD          DA(N),(CC,IDAL),LL     */
*/*                               NOP                                */
*/*                                                                  */
*/*                               -------------------------------  */
*/* CPAIDAL->               DA1                                    */
*/*                                 IF LL=4K, 2*N 4 BYTE ENTRIES   */
*/*  IF LL=4K,              DA2                                    */
*/*     DA(N)=DA(N-1)+8             IF LL<4K, N 4 BYTE ENTRIES     */
*/*  IF LL<4K,              DA(N)                                  */
*/*     DA(N)=DA(N-1)+4                                            */
*/*                               -------------------------------  */
*/* CPAVPL->                                                       */
*/*                                                                */
*/*                                                                */
*/*                                    SAME AS ABOVE               */
*/*                                                                */
*/*                                                                */
*/*                               ------------------------------   */
*/*                                                                  */
*/* CPAWSID->               SA    -------------------------------  */
*/*                                 N 5 BYTE ENTRIES               */
*/*                               ------------------------------   */
*/*                                                                  */
*/*                                                                  */
*/*  BYTES REQUIRED BY CCW-S = (3*N+2(+1,IF RPS))*8                  */
*/*                                                                  */
*/*  BYTES REQUIRED FOR SID ARGS = 5*N                               */
*/*                                                                  */
*/*  BYTES REQUIRED FOR BOTH,                                        */
*/*            CCW MINIMUM         24*N+16                           */
*/*            SID ARGS            5*N                               */
*/*                                -------                           */
*/*            TOTAL MINIMUM       29*N+16                           */
*/*                                                                  */
*/*            ADDITIONAL IF RPS         8                           */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/******           READ CHANNEL PROGRAM SEGMENT                 ******/
*/*                                                                  */
*/* EVERY READ CCW AFTER THE FIRST ONE IS A MULTI-TRACK READ.        */
*/*                                                                  */
*/*                                                                  */
*/* (CPARCPS POINTER MINUS 8)      (EXTRA CCW SLOT IF RPS DEVICE)    */
*/* CPARCPS->                      SEEKH      CPARSEEK,CC,6          */
*/*                                SRCH ID EQ CPARSID,CC,5           */
*/*                                TIC        *-8                    */
*/*                            --- RD         DA1,(CC,IDAL),LL       */
*/*                               RD         DA2,(CC,IDAL,MT),LL    */
*/*            N READ              .                                */
*/*            DATA CCW-S  ---     .                                */
*/*                                .                                */
*/*                           --- RD         DA(N),(CC,IDAL,MT),LL  */
*/*                                NOP                               */
*/*                                                                  */
*/*                                ------------------------------  */
*/* CPAIDAL->                DA1                                   */
*/*                                  IF LL=4K, 2*N 4 BYTE ENTRIES  */
*/*  IF LL=4K,               DA2                                   */
*/*     DA(N)=DA(N-1)+8              IF LL<4K, N 4 BYTE ENTRIES    */
*/*  IF LL<4K,               DA(N)                                 */
*/*     DA(N)=DA(N-1)+4                                            */
*/*                                ------------------------------  */
*/* CPAVPL->                                                       */
*/*                                                                */
*/*                                                                */
*/*                                    SAME AS ABOVE               */
*/*                                                                */
*/*                                                                */
*/*                                ------------------------------  */
*/*                                                                  */
*/*                                                                  */
*/*  BYTES REQUIRED BY CCW-S = (N+4(+1 IF RPS))*8                    */
*/*                          = 8*N+32 (+8, IF RPS)                   */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/******       FORMAT WRITE CHANNEL PROGRAM SEGMENT             ******/
*/*                                                                  */
*/*                                                                  */
*/* ONLY THE PART OF THE CHANNEL PROGRAM SEGMENT WHICH WRITES        */
*/* THE FIRST BLOCK CAN BE PREBUILT. THEREFORE OPEN WILL             */
*/* BUILD THE CHANNEL PROGRAM (6 CCW-S) AS IF THERE WERE             */
*/* ONLY ONE PHYSICAL BLOCK PER CONTROL INTERVAL AND THE             */
*/* I/O MANAGER WILL DYNAMICALLY MODIFY THE CCW LIST,                */
*/* WHEN NECESSARY. OPEN WILL LEAVE SPACE FOR ADDITIONAL CCW-S.      */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/* (CPAWCPS POINTER MINUS 8)     (EXTRA CCW SLOT IF RPS DEVICE)     */
*/* CPAWCPS->                     SEEKH       CPAWSEEK,CC,6          */
*/*                               SRCH ID EQ  SA,CC,5                */
*/*                               TIC        *-8                     */
*/*                               WCKD        FWCA1,DC,8             */
*/*                               WCKD        DA1,(CC,IDAL),LL       */
*/*                               NOP         ,SILI,2                */
*/*                                                                  */
*/*                                                                  */
*/* CPAFWCNT->             FWCA1  -------------------------------  */
*/*                                                                */
*/*                                N 8 BYTE ENTRIES - USED TO      */
*/*                                                                */
*/*                                FORM COUNT FIELDS - CCHHRKDD    */
*/*                                                                */
*/*                               -------------------------------  */
*/*                                                                  */
*/*                                                                  */
*/* THE REST OF THE ITEMS IN THE ABOVE FORMAT WRITE CHANNEL          */
*/* PROGRAM EXAMPLE ARE THE SAME AS IN THE UPDATE WRITE EXAMPLE      */
*/*                                                                  */
*/* TOTAL SPACE REQUIRED FOR CCW-S = 32*N+16 (+8 IF RPS)             */
*/*                                                                  */
*/* TOTAL BYTES REQUIRED,                                            */
*/*                 CCW     32*N+16                                  */
*/*            SID ARGS      5*N                                     */
*/*           COUNT FLDS     8*N                                     */
*/*                         -------                                  */
*/*                         45*N+16    PLUS CPAIDAL AND CPAVPL SPACE */
*/*           ADDITIONAL                                             */
*/*               IF RPS          8                                  */
*/*                                                                  */
*/*                                                                  */
*/******          WRITE CHECK CHANNEL PROGRAM SEGMENT           ******/
*/*                                                                  */
*/* EVERY READ CCW AFTER THE FIRST ONE IS A MULTI-TRACK READ.        */
*/*                                                                  */
*/*                                                                  */
*/* CPAWCKS->                      SEEKH      CPAWSEEK,CC,6          */
*/*                                SRCH ID EQ SA*,CC,5               */
*/*                                TIC        *-8                    */
*/*                            --- RD         DA1,(CC,NT),LL         */
*/*                               RD         DA2,(CC,NT,MT),LL      */
*/*             N READ             .                                */
*/*             DATA CCW-S ---     .                                */
*/*                                .                                */
*/*                           --- RD         DA(N),(CC,NT,MT),LL    */
*/*                                NOP                               */
*/*                                                                  */
*/*   *SA = CPAWCHR FOR UPDATE WRITE                                 */
*/*       = CPAFWCHR (FIRST FIVE BYTES POINTED TO BY CPAFWCNT)       */
*/*            FOR FORMAT WRITE                                      */
*/*                                                                  */
*/* BYTES REQUIRED BY CCW-S = (N+4)*8                                */
*/*                         = 8*N+32                                 */
*/*                                                                  */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*/*      CPA   DECLARATION                                           */
*/*                                                                  */
*%CPAPLS1: ;
* /* CPA (CHANNEL PROGRAM AREA)                                      */
 /*                                                                  */
*  DCL 1 IDACPA BDY(WORD) BASED,    /* CPA                           */
*        2 CPAID        CHAR(1),    /* CONTROL BLOCK ID              */
*        2 *            CHAR(1),    /* RESERVED                      */
*        2 CPALEN       FIXED(15),  /* CONTROL BLOCK SIZE            */
*        2 CPAWREAL     PTR(31),    /* PREVIOUS REAL ADDR WRITE CP   */
*        2 CPAWCPS      PTR(31),    /* PTR TO 1ST WRITE CCW (SEEK)   */
*        2 CPAWCPE      PTR(31),    /* PTR TO LAST WRITE CCW(NOP/TIC)*/
*        2 CPAWCKS      PTR(31),    /* PTR TO 1ST WRITE CHECK CCW    */
*        2 CPAWCKE      PTR(31),    /* PTR TO LAST WRITE CHECK CCW   */
*        2 CPARREAL     PTR(31),    /* PREVIOUS REAL ADDR READ CP    */
*        2 CPARCPS      PTR(31),    /* PTR TO 1ST READ CCW           */
*        2 CPARCPE      PTR(31),    /* PTR TO LAST READ CCW          */
*        2 CPAWPHAD     CHAR(8),    /* WRITE PHYS ADDR - MBBCCHHR    */
*          3 *          CHAR(1),
*          3 CPAWSEEK   CHAR(6),    /* WRITE SEEK ADDR               */
*            4 CPAWBB   CHAR(2),
*            4 CPAWCHR  CHAR(5),
*          3 CPAWPHR    CHAR(1),
*        2 CPAWSID      PTR(31),    /* PTR TO WRITE SRCH ID ARG LIST */
*        2 CPAFWCNT     PTR(31),    /* PTR TO FORMAT WRITE CNT FIELDS*/
*        2 CPARPHAD     CHAR(8),    /* READ PHYS ADDR - MBBCCHHR     */
*          3 *          CHAR(1),
*          3 CPARSEEK   CHAR(6),    /* READ SEEK ADDR                */
*            4 CPARBB   CHAR(2),
*            4 CPARSID  CHAR(5),    /* READ SEARCH ID ARGUMENT       */
*          3 *          CHAR(1),
*        2 CPAIDAL      PTR(31),    /* PTR TO REAL PAGE LIST         */
*        2 CPAVPL       PTR(31),    /* PTR TO VIRT PAGE LIST         */
*        2 CPAWORK1     PTR(31),    /* WORK AREA                     */
*        2 CPAWORK2     PTR(31),    /* WORK AREA                     */
*        2 CPABLKSZ     FIXED(31),  /* PHYS BLOCK SIZE FROM CONVERT  */
*        2 CPABCINV     FIXED(15),  /* NBR OF BLOCKS PER CINV        */
*        2 CPASSECT     PTR(8),     /* SET SECTOR ARG                */
*        2 CPASTAT1     BIT(8),     /* CPA STATUS                    */
*          3 CPAVPLV    BIT(1),     /* SET ON IN VPL VALID           */
*        2 CPAFLAGS     CHAR(2),    /* I/O MANAGER FLAGS             */
*          3 CPAFLAG1   CHAR(1),
*            4 CPAWV    BIT(1),     /* WRITE CHAN PROG SEG VALID     */
*            4 CPAWCV   BIT(1),     /* WRITE CHK CHAN PROG SEG VALID */
*            4 CPARV    BIT(1),     /* READ CHAN PROG SEG VALID      */
*            4 CPAWRPS  BIT(1),     /* WRITE CP SEG FOR RPS DEVICE   */
*            4 CPARRPS  BIT(1),     /* READ CP SEG FOR RPS DEVICE    */
*            4 CPACHNED BIT(1),     /* CHAINING OF CP SEGS COMPLETE  */
*            4 *        BIT(1),     /* RESERVED                      */
*          3 CPAFLAG2   CHAR(1),
*            4 CPAWREPL BIT(1),     /* REPLICATED INDEX ON WRITE     */
*            4 CPARREPL BIT(1),     /* REPLICATED INDEX ON READ      */
*            4 CPAXLRA  BIT(1),     /* LRA INSTRUCTION ERROR         */
*            4 CPAPFENT BIT(1),     /* PAGEFIX APPENDAGE ENTERED     */
*            4 CPATKOFL BIT(1),     /* TRACK OVERFLOW IN MVM @Y30DSJH*/
*        2 CPARSECT     PTR(8),     /* SET SECTOR ARG--READ  @X04SVMR*/
*        2 CPAWSECT     PTR(8),     /* SET SECTOR ARG--WRITE @X04SVMR*/
*        2 CPANXT1      PTR(31),    /* MVM STATIC CPA CHAIN  @Y30DSJH*/
*        2 CPACPCHN     PTR(31);    /* MVM DYN CPA CHAIN FLD @Y30DSJH*/
*/********************************************************************/
*/* COMMON CHANNEL PROGRAM CCWS                                      */
*/********************************************************************/
    DCL 1 CPACCW BDY(DWORD)BASED,   /* FIRST 4 CCWS          @X04SVLC*/
          2 CPACCWSK CHAR(8),       /* SEEK CCW              @X04SVLC*/
          2 CPACCWSS CHAR(8),       /* SET SECTOR            @X04SVLC*/
          2 CPACCWSI CHAR(8),       /* SEARCH ID             @X04SVLC*/
          2 CPACCWTC CHAR(8);       /* TRANSFER IN CHANNEL   @X04SVLC*/
./ ADD NAME=IDACPDEF
* /*                                                               */
* /* MACCOMP Y-2 SC1DE/SJD61                                       */
* /* MACSTAT Y-2 73103/Y02113                                      */
* /*                                                               */
*/*       CHANGE LEVEL=00                                          */
*/*       DATE OF LAST CHANGE = 20 SEPT 71 ( 71*265 )              */
*/*       IDACPDEF, CHANNEL PROGRAM DEFINITION                     */
*/*                                                                */
*        DCL   1 IDACP   BASED,            /* CHAN PGM DEFINITION  */
*                2 IDACCW1,                /* SEEK HEAD            */
*                  3 IDACC1CC BIT(8),      /* COMMAND CODE         */
*                  3 IDACC1AD PTR(24),     /* COMMAND ADDRESS      */
*                  3 IDACC1ST BIT(16),     /* STATUS               */
*                  3 IDACC1NO FIXED(15),   /* RESIDUAL BYTE COUNT  */
*                2 IDACCW2,                /* SET SECTOR/NOP       */
*                  3 IDACC2CC BIT(8),      /* COMMAND CODE         */
*                  3 IDACC2AD PTR(24),     /* COMMAND ADDRESS      */
*                  3 IDACC2ST BIT(16),     /* STATUS               */
*                  3 IDACC2NO FIXED(15),   /* RESIDUAL BYTE COUNT  */
*                2 IDACCW3,                /* SEARCH ID            */
*                  3 IDACC3CC BIT(8),      /* COMMAND CODE         */
*                  3 IDACC3AD PTR(24),     /* COMMAND ADDRESS      */
*                  3 IDACC3ST BIT(16),     /* STATUS               */
*                  3 IDACC3NO FIXED(15),   /* RESIDUAL BYTE COUNT  */
*                2 IDACCW4,                /* TIC                  */
*                  3 IDACC4CC BIT(8),      /* COMMAND CODE         */
*                  3 IDACC4AD PTR(24),     /* COMMAND ADDRESS      */
*                  3 IDACCIOB PTR(31);     /* ADDRESS OF IOB       */
*        DCL   1 IDACCW5 BASED,            /* DATA TRANSFER DEFINED*/
*                2 IDACC5CC BIT(8),        /* COMMAND CODE         */
*                2 IDACC5AD PTR(24),       /* COMMAND ADDRESS      */
*                2 IDACC5ST BIT(16),       /* STATUS               */
*                2 IDACC5NO FIXED(15);     /* RESIDUAL BYTE COUNT  */
*        DCL   1 IDACCW6 BASED,            /* TIC/NOP SWITCH       */
*                2 IDACC6CC BIT(8),        /* COMMAND CODE         */
*                2 IDACC6AD PTR(24),       /* COMMAND ADDRESS      */
*                2 IDACC6ST BIT(16),       /* STATUS               */
*                2 IDACC6NO FIXED(15);     /* RESIDUAL BYTE COUNT  */
*%       DCL   SEEKHH   CHAR;              /* DEFINE HEAD SEEK     */
*%       DCL   SETSECT  CHAR;              /* SET SECTOR           */
*%       DCL   SIDEQ    CHAR;              /* SEARCH ID EQUAL      */
*%       DCL   TIC      CHAR;              /* TRANSFER IN CHANNEL  */
*%       DCL   NOP      CHAR;              /* NO OPERATION         */
*%       DCL   RDATA    CHAR;              /* READ DATA            */
*%       DCL   RCKD     CHAR;              /* RD COUNT, KEY, DATA  */
*%       DCL   WCKD     CHAR;              /* WRT COUNT, KEY, DATA */
*%       DCL   WD       CHAR;              /* WRITE DATA           */
*%       DCL   MT       CHAR;              /* MULTI-TRACK          */
*%       DCL   PCI      CHAR;              /* PROGRAMMED INTERRUPT */
*%       DCL   CC       CHAR;              /* COMMAND CHAINING     */
*%       DCL   DC       CHAR;              /* DATA CHAINING        */
*%       DCL   SILI     CHAR;              /* SUPPRESS INCORR LEN  */
*%       DCL   SKIP     CHAR;              /* SKIP DATA TRANSFER   */
*%       SEEKHH = '''1B''X';               /* SEEK HEAD            */
*%       SETSECT = '''23''X';              /* SET SECTOR           */
*%       SIDEQ = '''31''X';                /* SEARCH ID EQUAL      */
*%       TIC = '''08''X';                  /* TRANSFER IN CHANNEL  */
*%       NOP = '''03''X';                  /* NO OPERATION         */
*%       RDATA = '''06''X';                /* READ DATA            */
*%       RCKD = '''1E''X';                 /* RD COUNT, KEY, DATA  */
*%       WCKD = '''1D''X';                 /* WRT COUNT, KEY, DATA */
*%       WD = '''05''X';                   /* WRITE DATA           */
*%       MT = '''80''X';                   /* MULTI-TRACK          */
*%       PCI = '''08''X';                  /* PROGRAMMED INTERRUPT */
*%       CC = '''40''X';                   /* COMMAND CHAINING     */
*%       DC = '''80''X';                   /* DATA CHAINING        */
*%       SILI = '''20''X';                 /* SUPPRESS INCORR LEN  */
*%       SKIP = '''10''X';                 /* SKIP DATA TRANSFER   */
*%GOTO    IDACPSL2 ;
*/*                                                                */
*/*                 ASSEMBLER DSECT FOR IDACPDEF                   */
*/*                                                                */
         MACRO
         IDACPDEF  &DSECT=YES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
.*         RELEASE 20 DELETIONS/CHANGES
* CONTROL
NOP      EQU   X'03'
SEEK     EQU   X'07'
SEEKCC   EQU   X'0B'
SEEKHH   EQU   X'1B'
SFM      EQU   X'1F'
SPACE    EQU   X'0F'
TIC      EQU   X'08'
*SEARCH  OPS
MT       EQU   X'80'
SHAEQ    EQU   X'39'
SIDEQ    EQU   X'31'
SIDHI    EQU   X'51'
SIDEQHI  EQU   X'71'
SKEQ     EQU   X'29'
SKHI     EQU   X'49'
SKEQHI   EQU   X'69'
SETSECT  EQU   X'23'
* READ   OPS
RHA      EQU   X'1A'
RDCNT    EQU   X'12'
RR0      EQU   X'16'
RDATA    EQU   X'06'
RKD      EQU   X'0E'
RCKD     EQU   X'1E'
RDSECT   EQU   X'22'
* WRITE  OPS
WCKD     EQU   X'1D'
WSCKD    EQU   X'01'
WD       EQU   X'05'
WKD      EQU   X'0D'
WR0      EQU   X'15'
* FLAGS
DC       EQU   X'80'
CC       EQU   X'40'
SILI     EQU   X'20'
SKIP     EQU   X'10'
PCI      EQU   X'08'
* CP OFFSETS
IDACPC4  EQU   4                        OFFSET TO SECOND HALF OF CCW
IDACPC6  EQU   6                        OFFSET TO FIRST BYTE OF COUNT
IDACPC7  EQU   7                        OFFSET TO SECOND BYTE OF COUNT
*
         AIF   ('&DSECT' EQ 'NO').IDACPM1
IDACP    DSECT                          AM/0 CHANNEL PROGRAM DEFINITION
         AGO   .IDACPM2
.IDACPM1 ANOP
IDACP    DS    0D                       AM/0 CHANNEL PROGRAM DEFINITION
.IDACPM2 ANOP
IDACCW1  CCW   SEEKHH,0,CC,6            SEEK TO CORRECT TRACK
IDACCW2  CCW   SETSECT,0,CC+SILI,1      SET SECTOR (NO OP FOR NON RPS)
IDACCW3  CCW   SIDEQ,0,CC,5             SEARCH ID (SILI AND COUNT OF 4
*                                       FOR REPLICATED INDEX READS)
IDACCW4  CCW   TIC,IDACCW3-IDACCW1,0,0  REPEAT UNTIL FOUND
IDACCIOB EQU   IDACCW4+IDACPC4          SECOND WORD USED FOR IOB PTR
*        THE VARIABLE SEGMENT OF THE CHANNEL PROGRAM FOLLOWS.
IDACCW5A CCW   RDATA+MT,0,CC,0          READ DATA/WRITE DATA--REPEATED
*        ONCE FOR EACH PHYSICAL BLOCK IN CONTROL INTERVAL OR ONCE FOR
*        EACH REPLICATED INDEX BLOCK.  IN NON-FIRST CHANNEL PROGRAM
*        SEGMENTS, THE PCI BIT MAY BE SET ALSO.  FOR FORMAT OR UPDATE
*        WRITE, CCW3 AND CCW4 ARE REPEATED FOR EACH CCW5 AND MT IS OFF.
IDACCW5B CCW   WD,0,CC,0                UPDATE WRITE VERSION
IDACCW5C CCW   WCKD,0,DC,8              FMT WRITE VERSION--WRITE COUNT
IDACCW5D CCW   WCKD,0,CC,0              FMT WRITE VERSION--WRITE DATA
IDACCW6  CCW   NOP,0,SILI,1             CC ON AND SET TO TIC IF CHANNEL
*        PROGRAM SEGMENTS ARE LINKED TOGETHER.
         MEND
*                     END OF ASSEMBLER DSECT
*%IDACPSL2: ;
./ ADD NAME=IDACSL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDACSL                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = CORE SAVE LIST.                             */
 /*                                                                  */
 /*   FUNCTION = IDACSL DEFINES THE STRUCTURE OF THE CORE SAVE LIST. */
 /*              ALL SUCCESSFUL GETMAINS FOR VIRTUAL STORAGE WHICH   */
 /*              ARE NOT NORMALLY FREED DURING OPEN TERMINATION ARE  */
 /*              RECORED IN THIS LIST.  ADDITIONAL LISTS ARE CHAINED */
 /*              AS REQUIRED.                                        */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE OPEN ACB WORK AREA.*/
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDACSL AND CSLENTRY BASED. */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192M.                         */
 /*                                                                  */
 /*   STATUS = VS2 RELEASE 4                                 @Z40ESSR*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 01/31/75                         @Z40ESSR*/
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDACSL BASED,             /* CORE SAVE LIST                */
          2 CSLR0,                  /* USED TO LOAD FREEMAIN REG 0   */
            3 CSLSUBPL FIXED (8),   /* SUBPOOL NUMBER OF THIS CSL    */
            3 CSLLENTH FIXED (24),  /* LENGTH IN BYTES OF THIS CSL   */
          2 CSLID    CHAR (8),      /* BLOCK IDENTIFIER              */
          2 CSLNXPTR PTR (31),      /* PTR TO NEXT CSL OR 0 IF LAST
                                       CSL IN CHAIN                  */
          2 CSLACTEN FIXED (15),    /* NUMBER OF ACTIVE ENTRIES      */
          2 CSLGSRK FIXED(8),       /* GSR KEY - VS2         @Z40ESSR*/
          2 *       FIXED(8),       /*  NOT USED             @Z40ESSR*/
          2 CSLNTRYS (32) CHAR(12); /* CORE ENTRIES                  */
    DCL 1 CSLENTRY BASED,           /* CORE SAVE LIST ENTRY          */
          2 CSLFREMN,               /* FEEEMAIN INFORMATION          */
            3 CSLPOOLN FIXED (8),   /* SUBPOOL NUMBER OF GOTTEN CORE */
            3 CSLCORLN FIXED (24),  /* LENGTH OF BLOCK OF GOTTEN CORE*/
            3 CSLCORPT PTR (31),    /* PTR TO BLOCK OF GOTTEN CORE   */
          2 CSLFLAGS BIT(8),        /* FLAGS                         */
            3 CSLKEY5  BIT(1),      /* CORE IS IN KEY 5 - VS2        */
            3 CSLGSRKT  BIT(1),      /* CORE IN GSR KEY- VS2 @Z40ESSR*/
                                   /* ELSE CORE IN KEY 0-VS2 @Z40ESSR*/
            3 CSLJSTCB BIT(1),      /* CORE IS OWNED BY JOBSTEP TCB  */
          2 CSLANCPT PTR(24);       /* PTR TO ADDR OF HEB HDR ELEM FOR
                                       THIS BLK OF CORE OR ZERO      */
    DCL IDACSLID CHAR (8) CONSTANT (' IDACSL '); /* CHAR CONSTANT
                                       FOR CSLID                     */
./ ADD NAME=IDACTREC
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDACTREC                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = AMB WORK AREA.                              */
 /*                                                                  */
 /*   FUNCTION = THE AMB WORK AREA CONTAINS ALL THE CATALOG INFORMA- */
 /*              TIONS OF AN AMB.                                    */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE AMB (AMBWKA).      */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY FOR THE MAIN   */
 /*                             SECTION.  RESPECIFY CTVOLENT BASED   */
 /*                             FOR THE CATALOG VOLUME ENTRY.        */
 /*                             RESPECIFY CTKEYENT BASED FOR THE KEY */
 /*                             RANGE ENTRY.  RESPECIFY CTEXTENT     */
 /*                             BASED FOR THE EXTENT ENTRY.          */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192C.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4   (CHANGE FLAG @X04SVXX)                */
 /*            VS2 RELEASE 3   (CHANGE FLAG @Z30SSXX)        @Z30SSRL*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 3 MARCH 75                       @Z30SSRL*/
 /*                                                                  */
 /********************************************************************/
   DCL 1 AMBWORK BASED(AMBWKA),     /* AMB WORK AREA         @X04SVRL*/
     2 AMACATLG PTR,                /* POINTER TO CATLG ACB  @X04SVRL*/
     2 AMATIOT FIXED(15),           /* OFFSET OF TIOT ENTRY  @X04SVRL*/
     2 AMALEN FIXED(15),            /* LENGTH OF AMB WA              */
     2 AMATIOE PTR,                 /* POINTER TO TIOT ENTRY @X04SVRL*/
     2 VOLENTNO FIXED(15),          /* NUMBER OF VOLUME ENTRIES      */
     2 CTINFO BDY(BYTE),            /* CATALOG INFO                  */
              3 CTATTRA BIT(8),     /* DATA SET OPTIONS              */
                4 CTAMDSPD BIT(1),  /* SPEED OPTION                  */
                4 CTUNIQ BIT(1),    /* UNIQUE DATA SET               */
                4 CTRELOP BIT(1),   /* RELEASE OPTION                */
                4 CTERASE BIT(1),   /* ERASE OPTION                  */
                4 *       BIT(1),   /* RESERVED                      */
                4 CTRDONLY BIT(1),  /* INHIBIT UPDATES               */
                4 CTTEMPEX BIT(1),  /* TEMPROARY EXPORT              */
                4 CTTOVFL  BIT(1),  /* TRACK OVERFLOW IN MVM @Y30DSJH*/
              3 CTATTRB BIT(8),     /* MISC INDICATORS               */
                4 CTOPEN BIT(1),    /* DATA SET OPEN FOR WRITE       */
                4 CTCYL BIT(1),     /* CYLINDER ALLOCATION           */
                4 CTINDXSS BIT(1),  /* INDEX & SEQ SET W/DATA        */
                4 CTINDX BIT(1),    /* INDEX DATA SET                */
              3 CTSHROP BIT(8),     /* SHARE OPTIONS                 */
                4 CTSHARE BIT(1),   /* FULL SHARE                    */
                4 CTSHRW BIT(1),    /* WRITE INTEGRITY               */
                4 CTSHRF BIT(1),    /* FULL INTEGRITY                */
                4 CTHELP BIT(1),    /* INVALIDATE BUFFERS            */
                4 CTSDHELP BIT(1),  /* SHARED DASD INVALIDATE BFRS   */
                4 * BIT(1),         /* RESERVED              @Z40WSRL*/
                4 CTINTDS BIT(1),   /* INTERNAL DATA SET     @Z40WSRL*/
                4 CTUNUSE BIT(1),   /* DATA SET UNUSABLE             */
              3 CTAUTH BIT(8),      /* AUTHORIZATION LEVEL   @X04SVRL*/
                4 CTFULL BIT(1),    /* FULL AUTHORIZATION    @X04SVRL*/
                4 CTCINV BIT(1),    /* CI AUTHORIZATION      @X04SVRL*/
                4 CTUPD BIT(1),     /* UPDATE AUTHORIZATION  @X04SVRL*/
              3 * CHAR(2),          /* NOT USED              @X04SVRL*/
              3 CTBLKSZ,            /* PHYSICAL BLOCK SIZE           */
              3 CTDEVTYP CHAR(4),   /* DEVICE TYPE           @X04SVRL*/
                4 * CHAR(1),        /* NOT USED              @X04SVRL*/
                4 CTDEV2 BIT(8),    /* 2ND BYTE OF DEV TYPE  @X04SVRL*/
                  5 * BIT(3),       /* NOT USED              @X04SVRL*/
                  5 CTBRPS BIT(1),  /* RPS DEVICE TYPE               */
                  5 CTVIRT BIT(1),  /* VIRTUAL DEVICE TYPE   @X04SVRP*/
              3 CTTRKAU,            /* TRKS/ALLOCATION UNIT          */
              3 CTSTRKAU,           /* TRACK/ALLOCATION UNIT SS W/DTA*/
              3 CTBLKTR,            /* PHYSICAL BLOCKS/TRACK         */
              3 CTSBLKTR,           /* PHYSICAL BLOCKS/TRACK SS W/DTA*/
              3 CTBYTAU  FIXED(31), /* BYTES/ALLOC FOR TRACK OVERFLOW
                                       IN MVM                @Y30DSJH*/
              3 CTSBYTAU FIXED(31), /* BYTES/ALLOC FOR SS WITH DATA AND
                                       TRACK OVERFLOW IN MVM @Y30DSJH*/
              3 CTBYTTRK FIXED(31), /* BYTES/TRACK FOR TRACK OVERFLOW
                                       IN MVM                @Y30DSJH*/
              3 CTSBYTRK FIXED(31), /* BYTES/TRACK FOR SS WITH DATA AND
                                       TRACK OVERFLOW IN MVM @Y30DSJH*/
              3 CTHSHDSN CHAR (3) , /* DATA SET NAME, HASHED         */
              3 * CHAR(1),          /* NOT USED              @X04SVRL*/
              3 CTHSHCAT PTR(31) ,  /* CATALOG ACB PTR       @X04SVRL*/
              3 CTHURBA FIXED (32), /* DATA SET HIGH USED RBA        */
              3 CTBUFSIZ,           /* MINIMUM BUFFER SPACE          */
              3 CTCISIZ,            /* CI SIZE                       */
              3 CTEXEX   CHAR(8),   /* EXCEPTION EXIT NAME   @X04SVGP*/
              3 CTDATANM CHAR(44) , /* DATA SET NAME                 */
              3 CTAMDSB  CHAR(LENGTH(IDAAMDSB)), /* AMDSB    @Y30DSJH*/
              3 *        CHAR(4);   /* NOT USED              @Z30SSRL*/
  DCL 1 CTVOLENT BASED,             /* CATALOG VOLUME ENTRY          */
     2 CTVOLFLG BIT(8),             /* VOLUME FLAG                   */
       3 CTVOLMT BIT(1),            /* VOL IS MOUNTED                */
      3 CTOFLOW BIT(1),             /* OVERFLOW VOLUME               */
     2 CTNOEXT FIXED(8),            /* NBR EXTENTS ON THIS VOLUME    */
     2 * CHAR(2),                   /* NOT USED              @X04SVRL*/
     2 CTVOLUCB PTR(31),            /* UCB ADDRESS                   */
     2 CTNOKEY FIXED(15),           /* NUMBER OF KEY RANGES ON VOL   */
     2 CTKEYLEN FIXED (15),         /* KEY LENGTH FOR KEY RANGE SPEC */
     2 CTVOLSER CHAR(6),            /* VOLUME SERIAL NUMBER          */
     2 * CHAR(2),                   /* NOT USED              @X04SVRL*/
     2 CTKEYEN1 CHAR(*);            /* FIRST KEY ENTRY               */
 DCL 1 CTKEYENT BASED,              /* KEY RANGE ENTRY               */
     2 CTKEYFLG BIT(8),             /* KEY FLAG                      */
       3 CTSSWDTA BIT(1),           /* SEQ SET WITH DATA             */
       3 CTPRFMT BIT(1),            /* EXTENT NOT PREFORMATED        */
     2 CTNOKEXT FIXED(8),           /* NBR EXTS THIS KEY RANGE       */
     2 CTKRELNO FIXED(15),          /* VOL OCCURENCE NBR             */
     2 CTKHKRBA FIXED(32),          /* HI KEY RBA                    */
     2 CTKHURBA FIXED(32),          /* HIGH USED RBA THIS KEY RANGE  */
      2 CTKHARBA FIXED(32),         /* HIGH ALLOCATED RBA THIS
                                       KEY RANGE                     */
     2 CTKEY CHAR(*);               /* FIRST LOW KEY                 */
   DCL 1 CTEXTENT BASED BDY(BYTE),  /* EXTENT ENTRY                  */
     2 CTEXTFLG BIT(8),             /* ENTENT FLAG                   */
     2 * CHAR(1),                   /* RESERVED                      */
     2 CTABSBEG CHAR(4),            /* BEGINNING CCHH                */
       3 CTCCBEG FIXED(16)BDY(BYTE),/* BEGINNING CC          @X04SVRL*/
       3 CTHHBEG FIXED(16)BDY(BYTE),/* BEGINNING HH          @X04SVRL*/
     2 CTABSEND CHAR(4),            /* ENDING CCHH                   */
       3 CTCCEND FIXED(16)BDY(BYTE),/* ENDING CC             @X04SVRL*/
       3 CTHHEND FIXED(16)BDY(BYTE),/* ENDING HH             @X04SVRL*/
     2 CTNOTRKS FIXED(15)BDY(BYTE), /* NBR TRACKS IN EXTENT          */
     2 CTRBABEG FIXED(32)BDY(BYTE), /* BEGINNING RBA                 */
     2 CTRBAEND FIXED(32)BDY(BYTE), /* ENDING RBA                    */
     2 * CHAR(*);                   /* NOT USED              @X04SVRL*/
./ ADD NAME=IDADIWA
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDADIWA                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = DATA INSERT WORK AREA                       */
*/*                                                                  */
*/*   FUNCTION = USED BY VSAM RECORD MANAGEMENT TO INSERT DATA       */
*/*              INTO A CONTROL INTERVAL                             */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE IDAAMB             */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 01 SEPT 77                       @ZA25653*/
*/*                         23 AUG 74                                */
*/*                         15 SEPT 76                       @ZA02289*/
*/*                                                                  */
*/********************************************************************/
*  DCL 1 IDADIWA BDY(WORD) BASED,       /* DATA INSERT WORK AREA     */
*        2 DIWID         CHAR(1),       /* CONTROL BLOCK ID          */
*        2 DIWATV        CHAR(1),       /* INSERT IN PROGRESS - TEST */
*                                       /* AND SET BYTE              */
*        2 DIWLEN        FIXED(15),     /* CONTROL BLOCK LENGTH      */
*        2 DIWFLG1       BIT(8),        /*   FLAGS                   */
*          3 DIWCAS      BIT(1),        /* CONTROL AREA SPLIT IN     */
*                                       /* PROGRESS                  */
*          3 DIWCISPL    BIT(1),        /* CI SPLIT HAS OCCURRED     */
*          3 DIWPFERR    BIT(1),           /* PREFORMAT I/O ERROR    */
*          3 DIWEOKR     BIT(1),        /* CI SPLIT DUE TO EOKR      */
*          3 DIWGSPC     BIT(1),        /* RCD NEEDS NEW CA  @X04SVLC*/
*          3 DIWSHIFT    BIT(1),        /* ON--INSERT CI SHIFTING TO
*                                          RBA IN DIWINRBA   @ZA25653*/
*          3 DIWNOT1     BIT(1),        /* ON--BUFFER HAD MIDDLE/LAST
*                                       SEG OF A SPANNED RCD @X04SVMR*/
*          3 DIW1ST      BIT(1),        /* ON--BUFFER HAD MIDDLE/FIRST
*                                       SEG OF A SPANNED RCD @X04SVMR*/
*        2 DIWFLG2       BIT(8),        /* FLAGS            @X04SVLC*/
*          3 DIWFSPF     BIT(1),        /* FREE SPACE PREFORMAT
*                                       NEEDED IN ESDS       @X04SVMR*/
*        2 *             FIXED(15),     /* NOT USED                  */
*        2 DIWLRBA       PTR(32),       /* CA SPLIT START RBA        */
*        2 DIWHRBA       PTR(32),       /* CA SPLIT NEXT CA RBA      */
*        2 DIWPLH        PTR(31),       /* PTR TO PLH USING DIWA     */
*        2 DIWBUFC       PTR(31),       /* PTR TO INSERT WORK BUFC   */
*        2 DIWSPLTP      PTR(31),       /* PTR TO SPLIT RDF          */
*        2 DIWSAVE       BDY(WORD),     /* REGISTER SAVE AREA        */
*          3 DIWSAVE1    PTR(31),       /* REGISTER SAVE 1           */
*          3 DIWSAVE2    PTR(31),       /* REGISTER SAVE 2           */
*          3 DIWSAVE3    PTR(31),       /* REGISTER SAVE 3           */
*          3 DIWSAVE4    PTR(31),       /* REGISTER SAVE 4           */
*          3 DIWSAVE5    PTR(31),       /* REGISTER SAVE 5           */
*        2 DIWRKCT       PTR(32),       /* COUNTER FOR RK.   @ZA02289*/
*        2 DIWINRBA      FIXED(32),     /* INSERT CI RBA     @ZA25653*/
*        2 *             PTR(32),       /* RESERVED. TWO     @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. THREE   @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. FOUR    @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. FIVE    @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. SIX     @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. SEVEN   @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. EIGHT   @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. NINE    @ZA02289*/
*        2 *             PTR(32),       /* RESERVED. TEN     @ZA02289*/
*        2 *             PTR(32);       /* RESERVED. ELEVEN  @ZA02289*/
./ ADD NAME=IDADSECT
*%IF IDAMODNM = 'C05B' %THEN
*%GOTO IDAESTXA;                                           /*@Y021131*/
*%IF IDAMODNM='I96C' %THEN
*%GOTO IDAESTXA;                                           /*@Y021131*/
*%IF IDAMODNM='CKRA1' %THEN
*%GOTO IDAESTXA;                                           /*@Y021131*/
* /******************************************************************/
* /*     THIS DSECT DEFINES THE WORK AREAS USED BY AM/0 CHECKPOINT  */
* /*     RESTART MODULES. IT ALSO CONTAINS ALL MACRO VARIABLES,     */
* /*     DECLARES AND EQUATES.                                      */
* /*                                                                */
* /*                                                                */
* /* MACCOMP Y-2 SC1DE/SJD61                                        */
* /* MACSTAT Y-2 73192/Y02113                                @Y021131*/
* /*                                                                */
* /******************************************************************/
* /*                                                                */
* /*           FOLLOWING ARE THE REGISTER DECLARES                  */
* /*                                                                */
* /******************************************************************/
         DCL   PARAMREG  PTR(31)   REG(1);   /* CHKPT/REST W.A. PTR */
         DCL   RUAL      PTR(31)   REG(2);   /* USER ACB LIST PTR   */
         DCL   RLRCNT    PTR(31)   REG(2);   /* RECORDS ERASED COUNT*/
         DCL   RTIOTPTR  PTR(31)   REG(2);   /* TIOT DD NAME POINTER*/
         DCL   RACBCNT   PTR(31)   REG(3);   /* COUNT OF OPEN ACBS  */
         DCL   REODRET   PTR(31)   REG(3);   /* PTR EOD RETURN ADDR */
         DCL   RWORK1    PTR(31)   REG(3);   /* WORK REGISTER ONE   */
         DCL   RSAVE     PTR(31)   REG(4);   /* SAVE AOS REST WA PT */
         DCL   RARWA     PTR(31)   REG(4);   /* PTR AM/0 RESTART WA */
         DCL   RWORK2    PTR(31)   REG(5);   /* WORK REGISTER TWO   */
         DCL   RACBCUR   PTR(31)   REG(5);   /* INDEX TO CURRENT ACB*/
         DCL   RAMBCUR   PTR(31)   REG(6);   /* INDEX TO CURRENT AMB*/
         DCL   RWORK3    PTR(31)   REG(6);   /* WORK REGISTER THREE */
         DCL   RPASSCNT  PTR(31)   REG(7);   /* BUILD UAL WORK REG. */
         DCL   RWORK4    PTR(31)   REG(7);   /* WORK REGISTER FOUR  */
         DCL   RPTWAMBS  PTR(31)   REG(7);   /* POINTER WORK AMBS   */
         DCL   RPTUAMBS  PTR(31)   REG(8);   /* POINTER USER AMBS   */
         DCL   RUALEP    PTR(31)   REG(8);   /* PTR UAL ENTRY       */
         DCL   RWORK5    PTR(31)   REG(8);   /* WORK REGISTER FIVE  */
         DCL   RWKREG    PTR(31)   REG(9);   /* WORK REGISTER NINE  */
         DCL   RCREG     PTR(31)   REG(15);
* /*                                                                */
* /******************************************************************/
* /*           MACRO VARIABLES                                      */
* /******************************************************************/
 %DCL (EIGHT,HIBITON,CKVALNOC,ONE,FOUR,CATERROR,SEVEN) CHAR;
 %DCL (CKPTER03,CKPTER40,CKPTER41,WAEOFSET,NOCORAM0,ZERO1) CHAR;
 %ZERO1    = '''00''X';
 %CKPTER03 = '3';                            /* NO CORE AVAILABLE EC*/
 %CKPTER40 = '40';                           /* VALIDITY CHECK E.C. */
 %CKPTER41 = '41';                           /* CONFLICTING PARM.   */
         DCL ZERO CONSTANT(0);          /* INITIALIZE CONSTANT */
 %ONE      = '1';                            /* INITIALIZE CONSTANT */
 %FOUR     = '4';                            /* INITIALIZE CONSTANT */
 %SEVEN    = '7';                            /* INITIALIZE CONSTANT */
 %EIGHT    = '8';                            /* INITIALIZE CONSTANT */
 %EIGHTY   = '80';                           /* LENGTH WORK ACB+EXT.*/
 %NOCORAM0 = '55';                           /* NO CORE AVAILABLE EC*/
 %HIBITON  = '''80''X';                      /* TURN HI ORDER BIT ON*/
 %CKVALNOC = '''01''X';                      /* VALIDITY/NOCORE MSG */
 %ON       ='''1''B';                        /* BIT EQUAL ONE TEST  */
 %OFF      ='''0''B';                        /* BIT EQUAL ZERO TEST */
 %WAEOFSET = '76';                           /* OFFSET TO WACB EXT. */
* /******************************************************************/
* /*          INCLUDES AND CONTROL BLOCK DEFINITIONS                */
* /******************************************************************/
* /*                                                                */
* /*     THIS DSECT MAPS THE DEB USED BY AM/0 CHECKPOINT / RESTART  */
* /*                                                                */
*        %GOTO DEBPLS;
         MACRO
DEBDSECT DSECT      DATA EXTENT BLOCK
*
DEBNMSUB DS    0CL1                    NO. OF SUB RTNS
DEBTCBAD DS    A                       TASK CONTROL BLOCK ADDR
DEBAMLNG DS    0CL1                    LENGTH OF ACCESS METHOD SEC
DEBDEBPT DS    0F                     SAME AS DEBDEBAD
DEBDEBAD DS    A                       ADDR OF NEXT DEB IN DEB CHAIN
DEBOFLGS DS    0CL1                    DEB OPEN FLAGS
DEBIRBAD DS    A                       ADDR OF THE IRB CONTROL BLOCK
DEBOPATB DS    0CL1                    OPEN ATRIBUTES
DEBSYSPG DS    A                       SYSTEM PURGE FIELD
DEBNMEXT DS    0CL1                    NUMBER OF EXTENTS IN DEB
DEBUSRPG DS    A                       USER PURGE FIELD
DEBPRIOR DS    0CL1                    INFO BYTE
DEBECBAD DS    A                       EVENT CONTROL BLOCK ADDR
DEBPROTG DS    0CL1                    INFO BYTE
DEBDEBID DS    0CL1                    INFO BYTE
DEBDCBAD DS    A                       ADDR OF DCB
DEBEXSCL DS    0CL1                    SCALING FACTOR OF DEB EXTENT
DEBAPPAD DS    A                       APPENDAGE TABLE ADDR
DEBDVMOD DS    0CL1                    DEVICE MODIFIER BYTE
DEBUCBAD DS    A                       UNIT CTL BLOCK ADDR
DEBTVLSQ DS    H                      VOLUME SEQUENCE FOR TAPE
DEBBINUM DS    H                       BIN NUMBER
DEBTVLNM DS    H                      NO OF VOLUME FOR TAPE
DEBSTRCC DS    H                       START CYLINDER NUMBER
DEBSTRHH DS    H                       START HEAD NUMBER
DEBENDCC DS    H                       END CYLINDER NUMBER
DEBENDHH DS    H                       END HEAD NUMBER
DEBNMTRK DS    H                       NUMBER OF TRACKS
*                                                                     *
*  FOR ADDITIONAL EXTENTS ONN DIRECT ACCESS THE FOWOLLING FIELDS
*  WILL HAVE TO BE OFFSET ANOTHER 16 BYTES
*                                                                     *
DEBVOLSQ DS    H                       VOL SEQUENCE NUMBER
DEBVOLNM DS    H                       VOLUME NUMBER
*                                                                     *
*  FOR EACH SUBROUTINE LOADED BUMP THIS OFFSET BY 2
*                                                                     *
DEBSUBID DS    H                       SUBROUTINE ID ( 2 BYTES )
*                                                                   */
* /*                                                                */
*                                                                   */
*%DEBPLS:  ;
*DECLARE
*  1 DEBDSECT  BASED,
*   2 DEBTCBAD    PTR(31),               /* TASK CONTROL BLOCK ADDR  */
*    3 DEBNMSUB    CHAR(1),              /* NO. OF SUB RTNS          */
*   2 DEBDEBPT    PTR(31),               /* PTR TO NEXT DEB IN DEB
*                                           CHAIN                    */
*    3 DEBAMLNG    CHAR(1),              /* LENGTH OF ACCESS METHOD
*                                           SEC                      */
*    3 DEBDEBAD   PTR(24),               /* SAME AS DEBDEBPT         */
*   2 DEBIRBAD    PTR(31),               /* ADDR OF THE IRB CONTROL
*                                           BLOCK                    */
*    3 DEBOFLGS    CHAR(1),              /* DEB OPEN FLAGS           */
*   2 DEBSYSPG    PTR(31),               /* SYSTEM PURGE FIELD       */
*    3 DEBOPATB    CHAR(1),              /* OPEN ATRIBUTES           */
*   2 DEBUSRPG    PTR(31),               /* USER PURGE FIELD         */
*    3 DEBNMEXT    CHAR(1),              /* NUMBER OF EXTENTS IN DEB */
*   2 DEBECBAD    PTR(31),               /* EVENT CONTROL BLOCK ADDR */
*    3 DEBPRIOR    CHAR(1),              /* INFO BYTE                */
*   2 DEBDCBAD    PTR(31),               /* ADDR OF DCB              */
*    3 DEBPROTG    CHAR(1),              /* INFO BYTE                */
*     4 DEBDEBID    CHAR(1),             /* INFO BYTE                */
*   2 DEBAPPAD    PTR(31),               /* APPENDAGE TABLE ADDR     */
*    3 DEBEXSCL    CHAR(1),              /* SCALING FACTOR OF DEB
*                                           EXTENT                   */
*   2 DEBUCBAD    PTR(31),               /* UNIT CTL BLOCK ADDR      */
*    3 DEBDVMOD    CHAR(1),              /* DEVICE MODIFIER BYTE     */
*   2 DEBTVLSQ    FIXED(15),             /* VOL SEQ FOR TAPE         */
*   2 DEBBINUM    FIXED(15),             /* BIN NUMBER               */
*   2 DEBTVLNM    FIXED(15),             /* NO OF VOL FOR TAPE       */
*   2 DEBSTRCC    FIXED(15),             /* START CYLINDER NUMBER    */
*   2 DEBSTRHH    FIXED(15),             /* START HEAD NUMBER        */
*   2 DEBENDCC    FIXED(15),             /* END CYLINDER NUMBER      */
*   2 DEBENDHH    FIXED(15),             /* END HEAD NUMBER          */
*   2 DEBNMTRK    FIXED(15),             /* NUMBER OF TRACKS         */
* /*                                                                 */
* /*     FOR ADDITIONAL EXTENT ON DIRECT ACCESS THE FOLLOWING        */
* /*     FIELDS WILL HAVE TO BE OFFSET ANOTHER 16 BYTES              */
* /*                                                                 */
*   2 DEBVOLSQ    FIXED(15),             /* VOLUME SEQUENCE NUMBER   */
*   2 DEBVOLNM    FIXED(15),             /* VOLUME NUMBER            */
* /*                                                                 */
* /*     FOR EACH SUBROUTINE LOADED BUMP THIS OFFSET BY 2            */
* /*                                                                 */
*   2 DEBSUBID    FIXED(15);             /* SUBROUTINE ID ( 2 BYTES )*/
* /*     END OF DEB                                                  */
* /*                                                                */
* /*     THIS DSECT MAPS THE TCB USED BY AM/0 CHECKPOINT RESTART    */
* /*                                                                */
*        %GOTO TCBPLS;
         MACRO
TCBDSECT DSECT      TASK CONTROL BLOCK
*
TCBRBP   DS    A                       POINTER TO EXECUTING RB
TCBPIE   DS    A                       POINTER TO PROG. INTERRUPT EL.
TCBDEB   DS    A                       POINTER TO DEB QUEUE
TCBTIO   DS    A                       POINTER TO TIOT
TCBCMP   DS    F                       TASK COMPLETION CODE
TCBTRN   DS    A                       TESTRAN FIELD
TCBMSS   DS    A                       DATA BLOCK QUEUE ELEMENT POINTER
TCBPRTK  DS    BL1                     PROTECTION TAG
TCBFLGS  DS    BL5                     FLAG BYTES
TCBLMP   DS    BL1                     LIMIT PRIORITY
TCBDSP   DS    BL1                     DISPATCHING PRIORITY
TCBLLS   DS    A                       POINTER TO LOAD LIST
TCBJLB   DS    A                       POINTER TO JOBLIB DCB
TCBJSE   DS    A                       LIST OF INACTIVE PROGRAMS ADDR.
TCBGRS   DS    16F                     GENERAL REGISTER SAVE AREA
TCBIDF   DS    0BL1                    TCB IDENTIFIER FIELD
TCBFSA   DS    A                       POINTER TO 1ST PROB.PROG.SAVEAR
TCBTCB   DS    A                       NEXT TCB ON READY QUEUE POINTER
TCBTME   DS    A                       POINTER TO TIMER ELEMENT
         MEND
*%TCBPLS:  ;
*DECLARE
*  1 TCBDSECT  BASED,
*   2 TCBRBP      PTR(31),               /* POINTER TO EXECUTING RB  */
*   2 TCBPIE      PTR(31),               /* POINTER TO PROG.
*                                           INTERRUPT EL.            */
*   2 TCBDEB      PTR(31),               /* POINTER TO DEB QUEUE     */
*   2 TCBTIO      PTR(31),               /* POINTER TO TIOT          */
*   2 TCBCMP      FIXED(31),             /* TASK COMPLETION CODE     */
*   2 TCBTRN      PTR(31),               /* TESTRAN FIELD            */
*   2 TCBMSS      PTR(31),               /* DATA BLOCK QUEUE ELEMENT
*                                           POINTER                  */
*   2 TCBPRTK     CHAR(1),               /* PROTECTION TAG           */
*   2 TCBFLGS     CHAR(5),               /* FLAG BYTES               */
*   2 TCBLMP      CHAR(1),               /* LIMIT PRIORITY           */
*   2 TCBDSP      CHAR(1),               /* DISPATCHING PRIORITY     */
*   2 TCBLLS      PTR(31),               /* POINTER TO LOAD LIST     */
*   2 TCBJLB      PTR(31),               /* POINTER TO JOBLIB DCB    */
*   2 TCBJSE      PTR(31),               /* LIST OF INACTIVE
*                                           PROGRAMS ADDR.           */
*   2 TCBGRS   (16) FIXED(31),           /* GENERAL REGISTER SAVE
*                                           AREA                     */
*   2 TCBFSA      PTR(31),               /* POINTER TO 1ST
*                                           PROB.PROG.SAVEAR         */
*    3 TCBIDF      CHAR(1),              /* TCB IDENTIFIER FIELD     */
*   2 TCBTCB      PTR(31),               /* NEXT TCB ON READY QUEUE
*                                           POINTER                  */
*   2 TCBTME      PTR(31);               /* POINTER TO TIMER ELEMENT */
* /*     END OF TCB                                                  */
* %IF IGCUWALX^='YES' %THEN %GOTO UWALX01;                 /*@Y021131*/
* /* UWAL (USER/WORK ACB LIST)                               @Y021131*/
*        DCL
*          1 IGCUWAL BASED,             /* START OF LIST     @Y021131*/
*            2 IGCUAL PTR(31),          /* A(USER ACB)       @Y021131*/
*              3 UALFLAG BIT(8),        /* FLAG BYTE         @Y021131*/
*              3 UALACBAD PTR(24),      /* A(USER ACB)       @Y021131*/
*            2 IGCWAL PTR(31),          /* A(WORK ACB)       @Y021131*/
*              3 WALFLAG BIT(8),        /* FLAG BYTE         @Y021131*/
*              3 WALACBAD PTR(24),      /* A(USER ACB)       @Y021131*/
*            2 IGCAMBL PTR(31);         /* A(USER AMBL)      @Y021131*/
* %GOTO UWALX02;                                           /*@Y021131*/
* %UWALX01:;                                               /*@Y021131*/
* /* UAL (USER ACB LIST) DECLARATION                                */
* /* DESCRIBES LIST OF POINTERS TO USER ACB'S                       */
* /* CREATED BY AM/0 CHECKPOINT/RESTART                             */
*        DCL 1 IGCUAL      BASED,            /* UAL                 */
*              2 UALFLAG   BIT(8),           /* UAL FLAG BYTE       */
                3 UALDODSS  BIT(1),          /* DO DSS CHECKS       */
                3 UALDOBKO  BIT(1),          /* DO DATA SET BACKOFF */
                3 UALDOKEY  BIT(1),          /* DO KEYED PROCESSING */
                3 UALDOSTU  BIT(1),          /* DO STATISTICS UPDATE*/
                3 *         BIT(4),          /* RESERVED            */
*              2 UALACBAD  PTR(24);          /* POINTER TO USER ACB */
*%GOTO UAL1;
         MACRO
         IGCUAL
IGCUAL   DSECT
UALFLAG  DS    BL1                           UAL FLAG BYTE
UALACBAD DS    AL3                           POINTER TO USER ACB
         MEND
*%UAL1: ;
* /*           END OF UAL                                           */
* %UWALX02:;                                               /*@Y021131*/
* /* WAE (WORK ACB EXTENSION) DECLARATION                           */
* /* DESCRIBES ACB PROCESSING FLAGS                                 */
* /* CREATED BY RESTART                                             */
*        DCL 1 IGCWAE        BASED,          /* WAE                 */
*              2 WAEFLAGS    BIT(8),         /* WAE FLAG BYTE       */
*                3 WAEDODSS  BIT(1),         /* DO DSS CHECKS       */
                 3 WAEREPOS  BIT(1),         /* DO DATA REPOSITION  */
*                3 WAEDOKEY  BIT(1),         /* DO KEYED PROCESSING */
*                3 WAEDOSTU  BIT(1),         /* DO STATISTICS UPDATE*/
*                3 *         BIT(4),         /* RESERVED            */
               2 WAEXLIST    PTR(24);        /* PTR ARWA EXIT LIST  */
*%GOTO WAE1;
         MACRO
         IGCWAE
IGCWAE   DSECT
WAEFLAGS DS    BL1                           WAE PROCESSING FLAGS
WAEDODSS EQU   X'80'                         DO DSS CHECKS
WAEREPOS EQU   X'40'                         DO DATA REPOSITION
WAEDOKEY EQU   X'20'                         DO KEYED PROCESSING
WAEDOSTU EQU   X'10'                         DO STATISTICS UPDATE
         DS    AL3                           RESERVED
         MEND
*%WAE1: ;
* /*           END OF WAE                                           */
* %IF IGCUWALX='YES' %THEN %GOTO UWALX03;                  /*@Y021131*/
* /* WAL (WORK ACB LIST) DECLARATION                                */
* /* DESCRIBES LIST OF POINTERS TO WORK ACB'S                       */
* /* CREATED BY CHECKPOINT/RESTART                                  */
*        DCL 1 IGCWAL      BASED,            /* WAL                 */
*              2 WALFLAG   BIT(8),           /* WAL FLAG BYTE       */
                3 WALDODSS  BIT(1),          /* DO DSS CHECKS       */
                3 WALDOBKO  BIT(1),          /* DO DATA SET BACKOFF */
                3 WALDOKEY  BIT(1),          /* DO KEYED PROCESSING */
                3 WALDOSTU  BIT(1),          /* DO STATISTICS UPDATE*/
                3 *         BIT(4),          /* RESERVED            */
*              2 WALACBAD  PTR(24);          /* POINTER TO WORK ACB */
* %UWALX03:;                                               /*@Y021131*/
*%GOTO WAL1;
         MACRO
         IGCWAL
IGCWAL   DSECT
WALFLAG  DS    BL1                           WAL FLAG BYTE
WALACBAD DS    AL3                           POINTER TO WORK ACB
         MEND
*%WAL1: ;
* /*           END OF WAL                                           */
 %INCLUDE      SYSLIB(IDAAMB);
 %INCLUDE      SYSLIB(IDAAMBL);
 %INCLUDE      SYSLIB(IDAAMDSB);
 %INCLUDE      SYSLIB(IFGACB);
 %INCLUDE      SYSLIB(IFGRPL);
 %IDAESTXA:;                                               /*@Y021131*/
         /* PARAMETER LIST FOR ESTAE ROUTINES                @Y021131*/
 %IF IDAMODNM='C05B' %THEN
  %GOTO IDAESTX0;                                           /*@Y021131*/
 %IF IDAMODNM='I96C' %THEN
  %GOTO IDAESTX0;                                           /*@Y021131*/
         DCL 1 ESTAELST BASED,
 %GOTO IDAESTX1;                                           /*@Y021131*/
 %IDAESTX0:;                                               /*@Y021131*/
         DCL 1 ESTAELST,
 %IDAESTX1:;                                               /*@Y021131*/
               2 ESTMODUL CHAR(4),      /* MODULE NAME       @Y021131*/
               2 ESTCKWA PTR(31),       /* A(CHECKPOINT WORK AREA) */
 %IF IDAMODNM='I96C' % THEN
  %GOTO IDAESTX2;                                          /*@Y021131*/
 %IF IDAMODNM='C05B' % THEN
  %GOTO IDAESTX2;                                          /*@Y021131*/
 %IF IDAMODNM='CKRA1' % THEN
  %GOTO IDAESTX2;                                          /*@Y021131*/
                 3 ESTRSWA PTR(31);     /* A(RESTART WORK AREA) */
 %GOTO IDAESTX9;                                           /*@Y021131*/
 %IDAESTX2:;                                               /*@Y021131*/
                 3 ESTRSWA PTR(31),     /* A(RESTART WORK AREA) */
               2 ESTSSCR PTR(31),       /* CURRENT SSCR      @Y021131*/
               2 ESTAMB PTR(31),        /* CURRENT AMB       @Y021131*/
               2 ESTIOMB PTR(31),       /* CURRENT IOMB      @Y021131*/
               2 ESTRDATA PTR(31),     /* SAVE AREA FOR DATA REGISTER*/
               2 ESTRBASE PTR(31),    /* SAVE AREA FOR BASE REGISTER */
               2 ESTR14 PTR(31),        /* SAVE AREA FOR REG 14 */
 %IF IDAMODNM ^= 'I96C' %THEN %GOTO IDAESTX3;              /*@Y021131*/
               2 EST#SSCR FIXED(31);    /* NUMBER OF SSCRS CREATED */
 %GOTO IDAESTX9;                                           /*@Y021131*/
 %IDAESTX3:;                                               /*@Y021131*/
               2 EST#SSCR FIXED(31),    /* NUMBER OF SSCRS CREATED */
                 3 ESTBLNAM CHAR(4),    /* NAME OF LAST CONTROL BLOCK */
               2 ESTASCB PTR(31),       /* ADDRESS OF THE ASCB
                                        USED TO LOACATE THE VGTT
                                        STRING               @Y021131*/
               2 ESTGMLST PTR(31),      /* LAST AREA ACQUIRED IN SP245*/
               2 ESTGMLEN FIXED(31),    /* LENGTH OF AREA ACQUIRED */
               2 ESTVGTT PTR(31);       /* ADDRESS OF LAST VGTT ACQUIRED
                                                             @Y021131*/
 %IDAESTX9:;                                               /*@Y021131*/
         /* ERROR CODES                                      @Y021131*/
         DCL ESTAEBAD CONSTANT(240);    /* ESTAE FAILED TO BE INVOKED */
         DCL PGMCHKXX CONSTANT(241);    /* PROGRAM CHECK OCCURRED */
         DCL MCHCHKXX CONSTANT(242);    /* MACHINE CHECK OCCURRED */
         DCL BADSSCR CONSTANT(243);     /* SSCR FORMAT INVALID */
         DCL BADGETM CONSTANT(195);     /* GETMAIN FAILED    @Y021131*/
./ ADD NAME=IDADSL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDADSL                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = DEB SAVE LIST.                              */
 /*                                                                  */
 /*   FUNCTION = ALL DEB'S SUCCESSFULLY CHAINED AND ADDED TO THE DEB */
 /*              TABLE ARE RECORDED IN THIS LIST. ADDITIONAL LIST    */
 /*              ARE CHAINED AS REQUIRED.                            */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE OPEN ACB WORK AREA.*/
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDADSL BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192A.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 2 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDADSL BASED,             /* DEB SAVE LIST                 */
          2 DSLSUBPL FIXED (8),     /* SUBPOOL NUMBER OF THIS DSL    */
          2 DSLLENTH FIXED (24),    /* LENGTH IN BYTES OF THIS DSL   */
          2 DSLID CHAR (8),         /* BLOCK IDENTIFIER              */
          2 DSLNXPTR PTR (31),      /* POINTER TO NEXT DSL OR 0 IF
                                       LAST DSL IN CHAIN.            */
          2 DSLACTEN FIXED (15),    /* NUMBER OF ACTIVE ENTRIES      */
          2 * FIXED (15),           /* RESERVED                      */
          2 DSLENTRY (16),          /* DEB ENTRIES                   */
            3 DSLFLG BIT (8),       /* FLAGS                         */
              4 * BIT (7),          /* RESERVED                      */
              4 DSLFDDEB BIT (1),   /* BIT ON INDICATES DUMMY DEB    */
            3 DSLDEBAD PTR (24)     /* ADDRESS OF DEB                */
    ;
    DCL IDADSLID CHAR (8) CONSTANT (' IDADSL '); /* CHAR CONSTANT
                                       FOR DSLID                     */
./ ADD NAME=IDAEDB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAEDB                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME =EXTENT DEFINITION BLOCK                      */
*/*                                                                  */
*/*   FUNCTION = DESCRIBES LOGICAL EXTENTS OF A VSAM DATA SET        */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE IDAEDB IS POINTED TO BY THE      */
*/*              IDAAMB                                              */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*            VS/2 RELEASE 3  (CHANGE FLAG @Y30SDXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 30 AUG 74                                */
*/*                                                                  */
*/********************************************************************/
*/********************************************************************/
*/* EXTENT DEFINITION BLOCK HEADER                                   */
*/********************************************************************/
*        DCL 1 IDAEDBHD BASED,
*              2 EDBID       PTR(8),    /* EDB IDENTIFIER           */
*              2 EDBNO       PTR(8),    /* NUMBER OF ENTRIES        */
*              2 EDBLEN      FIXED(15), /* LENGTH OF ENTRY          */
*              2 EDBLPMBC    PTR(31);   /* PTR TO FIRST LPMB        */
*/********************************************************************/
*/* EXTENT DEFINITION BLOCK                                          */
*/********************************************************************/
*        DCL 1 IDAEDB BASED,            /* ENTRY DEFINITION         */
*              2 *           CHAR(2),   /* NOT USED          @Y30DSJH*/
*              2 EDBFLG1     BIT(8),    /* EDB FLAGS FOR MVM @Y30DSJH*/
*                3 EDBLKR    BIT(1),    /* CATLG LOW KEY RNG @Y30DSJH*/
*                3 EDBTOFLW  BIT(1),    /* TRACK OVERFLOW    @Y30DSJH*/
*                3 EDBPSDS   BIT(1),    /* PAGE SPACE D.S.   @Y30DSJH*/
*                3 *         BIT(5),    /* UNUSED            @Y30DSJH*/
*              2 EDBM        PTR(8),    /* ENTENT NUMBER            */
*              2 EDBLPMBA    PTR(31),   /* ADDRESS OF LPMB          */
*              2 EDBSTTRK    PTR(31),   /* EXTENT RELATIVE TRK ADDR */
*              2 EDBLORBA    PTR(32),   /* LO RBA LIMIT             */
*              2 EDBHIRBA    PTR(32),   /* HI RBA LIMIT             */
*              2 EDBTKBAL    FIXED(31); /* MVM TRACK BAL CTR @Y30DSJH*/
./ ADD NAME=IDAEQUS
*        /*                                                          */
*        /*    ASSEMBLER EQUATES                                     */
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
*        /*                                                          */
*        GEN DATA;
R0       EQU   0                        REGISTER ZERO
CON0     EQU   C'0'                     USED BY TRANSLATE INST
K0       EQU   0                        OFFSET FOR MOVE INST
ONE      EQU   1                        MISCELLANEOUS EQUATE
TWO      EQU   2                        MISCELLANEOUS EQUATE
THREE    EQU   3                        MISCELLANEOUS EQUATE
FOUR     EQU   4                        MISCELLANEOUS EQUATE
FIVE     EQU   5                        MISCELLANEOUS EQUATE
SIX      EQU   6                        MISCELLANEOUS EQUATE
SEVEN    EQU   7                        MISCELLANEOUS EQUATE
EIGHT    EQU   8                        MISCELLANEOUS EQUATE
NINE     EQU   9                        MISCELLANEOUS EQUATE
ELEVEN   EQU   11                       MISCELLANEOUS EQUATE
TWELVE   EQU   12                       MISCELLANEOUS EQUATE
THIRTEEN EQU   13                       MISCELLANEOUS EQUATE
FOURTEEN EQU   14                       MISCELLANEOUS EQUATE
FIFTEEN  EQU   15                       MISCELLANEOUS EQUATE
SIXTEEN  EQU   16                       MISCELLANEOUS EQUATE
TWENTY   EQU   20                       MISCELLANEOUS EQUATE
TWENTY4  EQU   24                       MISCELLANEOUS EQUATE
TWENTY8  EQU   28                       MISCELLANEOUS EQUATE
THIRTY2  EQU   32                       MISCELLANEOUS EQUATE
*        @ENDGEN ;
./ ADD NAME=IDAERMAP
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAERMAP                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = ERROR CODE MAPPING MACRO                    */
 /*                                                                  */
 /*   FUNCTION = THIS MACRO DEFINES AN ARRAY THAT MAPS THE ERROR CODE*/
 /*              (PPCODE) IN THE IEC ERROR MESSAGE (DEFINED BY THE   */
 /*              IDAPPCDE MACRO) INTO THE CORRESPONDING CODE THAT IS */
 /*              SET IN THE ACBERFLG FIELD (DEFINED BY THE IDAERRCD  */
 /*              MACRO).  THE PPCODE IS USED AS AN INDEX INTO THE    */
 /*              ARRAY DEFINED BY THIS MACRO TO REFERENCE THE        */
 /*              ACBERFLG CORRESPONDING TO THIS PPCODE.  THIS MACRO  */
 /*              WILL NEED TO BE UPDATED WHENEVER THE IDAPPCDE OR    */
 /*              IDAERRCD MACRO ARE CHANGED.                         */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 10/13/75                         @Z40WSRL*/
 /*                                                                  */
 /********************************************************************/
    DCL
      IDAERMAP(256) FIXED(8) STATIC LOCAL INIT( /* ERROR CODE MAP    */
          (3)0,                     /* NOT USED                      */
          132,                      /* PP4                           */
          (15)0,                    /* NOT USED                      */
          136,                      /* PP20                          */
          0,                        /* NOT USED                      */
          184,                      /* PP22                          */
          (5)0,                     /* NOT USED                      */
          180,                      /* PP28                          */
          (3)0,                     /* NOT USED                      */
          148,                      /* PP32                          */
          0,                        /* PP33                          */
          0,                        /* PP34                          */
          0,                        /* PP35                          */
          144,                      /* PP36                          */
          148,                      /* PP37                          */
          196,                      /* PP38                          */
          100,                      /* PP39                          */
          152,                      /* PP40                          */
          160,                      /* PP41                          */
          (2)0,                     /* NOT USED                      */
          160,                      /* PP44                          */
          96,                       /* PP45                          */
          192,                      /* PP46                          */
          160,                      /* PP47                          */
          160,                      /* PP48                          */
          224,                      /* PP49                          */
          176,                      /* PP50                          */
          0,                        /* NOT USED                      */
          168,                      /* PP52                          */
          0,                        /* NOT USED                      */
          160,                      /* PP54                          */
          0,                        /* NOT USED                      */
          116,                      /* PP56                          */
          0,                        /* NOT USED                      */
          108,                      /* PP58                          */
          104,                      /* PP59                          */
          240,                      /* PP60                          */
          (7)0,                     /* NOT USED                      */
          160,                      /* PP68                          */
          (3)0,                     /* NOT USED                      */
          160,                      /* PP72                          */
          (3)0,                     /* NOT USED                      */
          188,                      /* PP76                  @Z40WSRL*/
          0,                        /* NOT USED                      */
          188,                      /* PP78                          */
          0,                        /* NOT USED                      */
          160,                      /* PP80                          */
          (3)0,                     /* NOT USED                      */
          232,                      /* PP84                          */
          (3)0,                     /* NOT USED                      */
          160,                      /* PP88                          */
          0,                        /* NOT USED                      */
          0,                        /* PP90                          */
          0,                        /* PP91                          */
          236,                      /* PP92                          */
          236,                      /* PP93                          */
          0,                        /* PP94                          */
          (5)0,                     /* NOT USED                      */
          0,                        /* PP100                         */
          (3)0,                     /* NOT USED                      */
          0,                        /* PP104                         */
          (3)0,                     /* NOT USED                      */
          0,                        /* PP108                         */
          (3)0,                     /* NOT USED                      */
          0,                        /* PP112                         */
          (3)0,                     /* NOT USED                      */
          164,                      /* PP116                         */
          (3)0,                     /* NOT USED                      */
          220,                      /* PP120                         */
          (3)0,                     /* NOT USED                      */
          228,                      /* PP124                         */
          (3)0,                     /* NOT USED                      */
          184,                      /* PP128                         */
          (3)0,                     /* NOT USED                      */
          208,                      /* PP132                         */
          (3)0,                     /* NOT USED                      */
          160,                      /* PP136                         */
          (3)0,                     /* NOT USED                      */
          160,                      /* PP140                         */
          (3)0,                     /* NOT USED                      */
          160,                      /* PP144                         */
          (3)0,                     /* NOT USED                      */
          204,                      /* PP148                         */
          (3)0,                     /* NOT USED                      */
          212,                      /* PP152                         */
          (3)0,                     /* NOT USED                      */
          216,                      /* PP156                         */
          (7)0,                     /* NOT USED                      */
          160,                      /* PP164                         */
          (3)0,                     /* NOT USED                      */
          244,                      /* PP168                         */
          (3)0,                     /* NOT USED                      */
          200,                      /* PP172                         */
          (3)0,                   /* PP173-PP175 ARE UNUSED. @Z30SSMD*/
           0,              /* PP176, USE ACBERFLAG OF ZERO.  @Z30SSMD*/
          (3)0,                   /* PP177-PP179 ARE UNUSED. @Z30SSMD*/
           0,              /* PP180, USE ACBERFLAG OF ZERO.  @Z30SSMD*/
          (3)0,                   /* PP181-PP183 ARE UNUSED. @Z30SSMD*/
           0,              /* PP184, USE ACBERFLAG OF ZERO.  @Z30SSMD*/
          (3)0,                   /* PP185-PP187 ARE UNUSED  @Z40WSRL*/
           160,                   /* PP188                   @Z40WSRL*/
          (3)0,                   /* PP189-PP191 ARE UNUSED  @Z40WSRL*/
           160,                   /* PP192                   @Z40WSRL*/
          (64)0);                  /* PP193-PP256 ARE UNUSED @Z40WSRL*/
./ ADD NAME=IDAERMSG
* /*                                                                 */
         /* ERROR MESSAGE FIELDS                                    */
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
         DCL 1 IDAERMSG  BASED,            /* I/O ERROR MESSAGE     */
               2 ERBASE,                   /* BASIC ERROR MSG       */
                   4 ERLGTH,               /* MESSAGE LENGTH FIELD  */
                     6 ERMLL1 FIXED(15),   /* BIG LL                */
                     6 ERMZERO1 FIXED(15), /* ZEROES                */
                     6 ERMLL2 FIXED(15),   /* LITTLE LL             */
                     6 ERMZERO2 FIXED(15), /* ZEROES                */
                   4 ERMBFRA  CHAR(4),     /* SYSTEM BUFFER ADDRESS */
                   4 ERDATE   CHAR(5),     /* DATE--YYDDD           */
                   4 ERCOMMA  CHAR(1),     /* COMMA                 */
                   4 ERTIME   CHAR(8),     /* TIME--HHMMSSTH        */
                   4 COMMA0 CHAR(1),       /* COMMA                 */
                   4 ERRBA    CHAR(8),     /* RBA IN ERROR           */
                   4 COMMA05  CHAR(1),     /* COMMA                  */
                   4 ERMDSID  CHAR(6),     /* DATA SET TYPE          */
                   4 COMMA9   CHAR(1),     /* COMMA                  */
                   4 ERMVOL   CHAR(6),     /* VOLUME SERIAL NUMBER   */
                   4 COMMA1   CHAR(1),     /* COMMA                 */
                   4 ERJOBNM  CHAR(8),     /* JOB NAME FIELD        */
                   4 COMMA2   CHAR(1),     /* COMMA                 */
                   4 ERSTEPNM CHAR(8),     /* STEP NAME FIELS       */
                   4 COMMA3   CHAR(1),     /* COMMA                 */
                   4 ERUNIT   CHAR(3),     /* UNIT ADDRESS FIELD    */
                   4 COMMA4   CHAR(1),     /* COMMA                 */
                   4 ERUNTYPE CHAR(2),     /* UNIT TYPE FIELD       */
                   4 COMMA5   CHAR(1),     /* COMMA                 */
                   4 ERDDNM   CHAR(8),     /* DD NAME FIELD         */
                   4 COMMA6   CHAR(1),     /* COMMA                 */
                   4 EROPER   CHAR(6),     /* OPERATION ATTEMPTED   */
                   4 COMMA7   CHAR(1),     /* COMMA                 */
                   4 ERDESC   CHAR(15),    /* ERROR DESCRIPTION     */
                   4 COMMA8   CHAR(1),     /* COMMA                 */
                   4 ERDEVD   CHAR(21),    /*DEVICE DEPENDENT FIELDS*/
                     6 ERDASEEK CHAR(14),  /* ASTERISKS             */
                     6 ERDACOM  CHAR(1),   /* COMMA                 */
                     6 ERDAAM   CHAR(6);   /* ACCESS METHOD         */
./ ADD NAME=IDAERRCD
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAERRCD                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM OPEN/CLOSE/EOV ERROR CODES.            */
 /*                                                                  */
 /*   FUNCTION = THE ERROR CODE IS DETERMINED BY THE PROBLEM CODE    */
 /*              RELATING TO A PROBLEM. THE ERROR CODE IS THEN MOVED */
 /*              INTO THE ACB (ACBERFLG) TO COMMUNICATE WITH THE     */
 /*              USER.                                               */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VSAM MVS SELECTABLE UNIT 7                    @ZA16012*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 05 AUG 1976                      @ZA16012*/
 /*                                                                  */
 /********************************************************************/
   DCL (OPERR000 CONSTANT(0),     /* NO ERROR FOR OPEN OR CLOSE */
    OPERR004 CONSTANT(4),    /* WARNING - ACB ALREADY OPEN FOR OPEN OR
                                ACB NOT OPEN FOR CLOSE AND TCLOSE    */
    OPERR080 CONSTANT(80),   /* WARNING - PROCESSING INTEGRITY */
    OPERR096 CONSTANT(96),   /* WARNING - UNUSABLE DATA SET OPENED
                                          FOR INPUT          @X04SVRL*/
    OPERR100 CONSTANT(100),  /* WARNING - EMPTY UPGRADE AIX  @X04SVRL*/
    OPERR104 CONSTANT(104),  /* WARNING-VOLUME TIMESTAMP DISCREPANCY
                                AND ACB INDICATES INPUT      @X04SVRP*/
    OPERR108 CONSTANT(108),  /* WARNING-D.S. TIMESTAMP DISCREPANCY   */
    OPERR116 CONSTANT(116),  /* WARNING - DATA SET NOT PROPERLY CLOSED*/
    OPERR128 CONSTANT(128),  /* DD NAME NOT FOUND IN TIOT */
    OPERR132 CONSTANT(132),  /* I/O ERR RD/WRT JFCB */
    OPERR136 CONSTANT(136),  /* NO CORE AVAILABLE */
    OPERR144 CONSTANT(144),  /* I/O ERROR RD/WRT CATALOG ENT */
    OPERR148 CONSTANT(148),  /* CATALOG ENTRY NOT FOUND */
    OPERR152 CONSTANT(152),  /* DATA SET SECURITY INVALID */
    OPERR160 CONSTANT(160),  /* CONFLICTING PARAMETERS */
    OPERR164 CONSTANT(164),  /* I/O ERROR READING VOLUME LABEL */
    OPERR168 CONSTANT(168),  /* DATA SET NOT AVAILABLE */
    OPERR176 CONSTANT(176),  /* PGFIX FAILURE                       */
    OPERR180 CONSTANT(180),  /* CAT DOES NOT EXIST OR NOT OPEN      */
    OPERR184 CONSTANT(184),  /* I/O ERROR COMPLETING I/O REQUEST    */
    OPERR188 CONSTANT(188),  /* ACB IS NOT FOR A VALID DATA SET */
    OPERR192 CONSTANT(192),  /* UNUSABLE DATA SET OPENED FOR OUTPUT
                                                             @X04SVRL*/
    OPERR196 CONSTANT(196),  /* ACCESS TO DATA REQUESTED VIA EMPTY
                                PATH AIX                     @X04SVRL*/
    OPERR200 CONSTANT(200),  /* FMT 4 DSCB INDICATES VOL IS UNUSABLE
                                                             @X04SVRL*/
    OPERR204 CONSTANT(204),  /* ACB INDICATES GSR OR CBIC BUT CALLER IS
                                NOT IN SUPERVISOR STATE AND KEY 0 TO 7
                                                             @ZA16012*/
    OPERR208 CONSTANT(208),  /* ACB INDICATES GSR AND SYSTEM IS VS1
                                                             @X04SVRL*/
    OPERR212 CONSTANT(212),  /* ACB INDICATES LSR/GSR AND DATA SET
                                IS EMPTY                     @X04SVRL*/
    OPERR216 CONSTANT(216),  /* ACB INDICATES LSR/GSR AND KEY LENGTH
                                OF DS EXCEEDED MAXKEY IN BLDVRP MACRO
                                                             @X04SVRL*/
    OPERR220 CONSTANT(220),  /* DB/DC - BSPH TOO SMALL       @X04SVGP*/
    OPERR224 CONSTANT(224),  /*ICI PROCESSING AND CREATE MODE INDICATED
                                                             @X04SVRL*/
    OPERR228 CONSTANT(228),  /* DB/DC - VSRT DOES NOT EXIST  @X04SVRL*/
    OPERR232 CONSTANT(232),  /* RESET SPECIFIED FOR NON-REUSABLE DS
                                                             @X04SVRL*/
    OPERR236 CONSTANT(236),  /* MSS STAGE OR DESTAGE ERROR   @X04SVRL*/
    OPERR240 CONSTANT(240), /* VOLUME TIMESTAMP DISCREPANCY AND
                               ACB INDICATES OUTPUT          @X04SVRP*/
    OPERR244 CONSTANT(244)) /* CRA VOLUME NOT MOUNTED        @X04SVRP*/
         FIXED(31);          /* ERRORS DETECTED BY OPEN AND CLOSE   */
  /* THE FOLLOWING ERRORS ARE DETECTED BY OPEN, CLOSE, EOV OR        */
  /* TCLOSE, BUT ERROR FLAGS ARE NOT SET IN THE ACB IN ORDER         */
  /* NOT TO INTERFERE WITH ANY POSSIBLE PROCESSING BEING DONE        */
  /* ON THAT ACB BY ANOTHER TASK:                                    */
  /*     ACB BUSY                                                    */
  /*     ACB DOES NOT BELONG TO JOB STEP ISSUING OPEN, CLOSE         */
  /*       OR TCLOSE                                                 */
./ ADD NAME=IDAESL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAESL                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = ENQUEUE SAVE LIST.                          */
 /*                                                                  */
 /*   FUNCTION = IDAESL CONTAINS A LIST OF ALL ENQUEUES COMPLETED    */
 /*              SUCCESSFULLY DURING OPEN PROCESSING. ADDITIONAL     */
 /*              LISTS ARE CHAINED AS REQUIRED.                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO THE OPEN ACB WORK AREA.   */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAESL BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192A.                         */
 /*                                                                  */
 /*   STATUS = VS/1 RELEASE 4, VS2 RELEASE 3.                        */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 2 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDAESL BASED BDY(WORD),   /* ENQUEUE SAVE LIST             */
          2 ESLSUBPL FIXED (8),     /* SUBPOOL NUMBER OF THIS ESL    */
          2 ESLLENTH FIXED (24),    /* LENGTH IN BYTES OF THIS ESL   */
          2 ESLID CHAR (8),         /* BLOCK IDENTIFIER              */
          2 ESLNXPTR PTR (31),      /* PTR TO NEXT ESL OR 0 IF LAST
                                       ESL IN CHAIN                  */
          2 ESLACTEN FIXED (15),    /* NUMBER OF ACTIVE ENTRIES      */
          2 * FIXED (15),           /* RESERVED                      */
          2 ESLENTRY (16),          /* ENQUEUE ENTRIES              */
            3 ESLENQOP CHAR(1),     /* ENQUEUE OPTION FOR THIS ENTRY */
            3 ESLRNAME,             /* ENQUEUE RNAME FOR THIS ENTRY  */
              4 ESLCINBR CHAR(3),   /* CI NUMBER FOR THIS ENTRY      */
              4 ESLACBAD CHAR(4),   /* POINTER TO ACB FOR THIS ENTRY */
              4 ESLIO CHAR(1)       /* I OR O                        */
    ;
    DCL IDAESLID CHAR (8) CONSTANT (' IDAESL '); /* CHAR CONSTANT
                                       FOR ESLID                     */
./ ADD NAME=IDAEXITR
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
 @EJECT;
 /*  IDAEXITR-- EXIT TO USER ROUTINE
 01  FUNCTION = SAVE VSAM REGISTERS, LOAD USER ROUTINE IF IT IS
                NOT IN CORE, RESTORE USER REGISTERS, BALR TO
                THE USER ROUTINE, RESTORE THE VSAM REGISTERS,
                AND DELETE THE USER ROUTINE IF IT WAS LOADED.
 01  INPUT    = RPARM1 POINTS TO DESIRED EXIT LIST ENTRY
 01  OUTPUT   = REGISTERS ARE UNCHANGED. IF USER ROUTINE DID NOT RETURN
                CONTROL, THE USER EXIT ROUTINE IS LEFT LOADED.       */
 IDAEXITR:
  PROC OPTIONS (NOSAVE, NOSAVEAREA);       /* INTERFACE TO USER RTN  */
                                           /* SAVE VSAM REGISTERS    */
  GEN (IDASVR14);                        /* SAVE RETURN REG          */
  RESPECIFY IFGEXLEF BASED(RPARM1);      /* ENTRY BASE               */
  RPLPLHPT = RPLH;                         /* PUT PLH POINTER IN RPL */
  RFY (RWORK0, R13, R15) RSTD;             /* GET REGISTERS          */
  GEN SETS (PLHSAVE1, PLHSAVE5);
         STM   RAMB,RWORK2,PLHSAVE1(RPLH) SAVE RAMB,ETC
         STM   RPARM1,R13,PLHSAVE5(RPLH)  SAVE RPARM1 AND R13
 @ENDGEN
  R15 = EXLEXITP;                          /* GET ROUTINE ADDRESS    */
  RFY RWORK1 RSTD;                         /* GET REGISTER           */
  /* LOAD THE USER EXIT ROUTINE IF REQUESTED                         */
  IF EXLFLAG(EXLLINK) = ON                 /* SEE IF LOAD REQUIRED   */
    THEN                                   /* IF SO, COME HERE       */
      DO;
      RWORK1 = R1;                         /* SAVE REGISTER ONE      */
      GEN (LOAD  EPLOC=(R15));             /* LOAD ROUTINE           */
      R15 = RWORK0;                        /* GET ADDR INTO R15      */
      R1 = RWORK1;                         /* RESTORE REGISTER ONE   */
      END;                                 /* END OF LOAD CODE       */
      /* RESTORE USER REGISTERS AND BALR TO THE USER ROUTINE         */
      GEN (LM @02,@12,TWENTY8(R13));       /* RESTORE USER REGS      */
  /* TAKE USER EXIT                                                  */
 ?IDACALL (USEREXIT);
 /* RESTORE THE VSAM REGISTERS                                       */
  RPLH = RPLPLHPT;                         /* RESTORE PLH POINTER    */
  GEN;
         LM    RAMB,RWORK2,PLHSAVE1(RPLH) RESTORE RAMB,ETC.
         LM    RPARM1,R13,PLHSAVE5(RPLH)  RESTORE RPARM1 AND R13
 @ENDGEN
 /* DELETE THE USER EXIT ROUTINE IF IT WAS LOADED                    */
  IF EXLFLAG(EXLLINK) = ON                 /* SEE IF DELETE NEEDED   */
    THEN                                   /* IF SO, COME HERE       */
      DO;
      RFY RWORK1 RSTD;                     /* GET REGISTER           */
      RWORK1 = R1;                         /* SAVE REGISTER ONE      */
      R15 = EXLEXITP;                      /* POINT TO ROUTINE NAME  */
      GEN (DELETE EPLOC=(R15));            /* DELETE ROUTINE         */
      R1 = RWORK1;                         /* RESTORE REGISTER ONE   */
      RFY RWORK1 UNRSTD;                   /* DROP REGISTER          */
      END;                                 /* END OF DELETE CODE     */
  RFY (RWORK0, R13, R15) UNRSTD;           /* DROP REGISTERS         */
  GEN (IDARST14);                        /* RESTORE RETURN           */
  END IDAEXITR;                            /* END OF EXIT INTERFACE  */
./ ADD NAME=IDAFOREC
 /********************************************************************/
 /*                                                          @X04SVRL*/
 /*   MACRO NAME = IDAFOREC                                  @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   DESCRIPTIVE NAME = COMMON OPEN WORK AREA.              @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   FUNCTION = MAPS THE COMMON OPEN WORK AREA PASSED TO    @X04SVRL*/
 /*              VSAM OPEN/CLOSE/EOV IN REGISTER 4.          @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   CONTROL BLOCK STRUCTURE = NONE                         @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   INCLUDED MACROS = IEFJFCBN                             @X04SVRL*/
 /*                     IEFJFCBX                             @X04SVRL*/
 /*                     IDAPDPRM                             @X04SVRL*/
 /*                     IECDSECS (VS2 ONLY)                  @X04SVRL*/
 /*                     IECDSECT (VS2 ONLY)                  @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY        @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   CREATED BY: IGC0001I, IGC00020, IGC0005E.              @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   STATUS = VS1 RELEASE 4   (CHANGE FLAG @X04SVXX)        @X04SVRL*/
 /*            VS2 RELEASE 3   (CHANGE FLAG @Y30DSXX)        @X04SVRL*/
 /*                                                          @X04SVRL*/
 /*   DATE OF LAST CHANGE = 5 AUGUST 74                      @X04SVRL*/
 /*                                                          @X04SVRL*/
 /********************************************************************/
 %IF ENV='VS2'  %THEN                   /*IF VS2 THEN BYPASS @Y30DSDT*/
    %GOTO IDAFOR1;                      /* VS1 SECTION       @Y30DSDT*/
 DCL FORECORE CHAR(496) BDY(DWORD) BASED(RCORE);
   DCL 1 DXLBL DEFINED(FORECORE),
*                2 VOLLABI     CHAR(3), /* LABEL IDENTIFIER         */
*                2 VOLNO       CHAR(1), /* VOLUME LABEL NUMBER      */
*                2 VOLSERNO    CHAR(6),
*                2 VOLSEC      CHAR(1),
*                2 VOLVTOC     CHAR(5),
*                2 *           CHAR(5),
*                2 *           CHAR(10),/* RESERVED                 */
*                2 *           CHAR(10),/* RESERVED                 */
*                2 VOLOWNER    CHAR(10),/* OWNER NAME AND ADDR CODE */
*                2 *           CHAR(29);/* RESERVED                 */
   DCL 1 DSECT01 DEFINED(FORECORE) POS(38),
*                2 AVOLOWNR    CHAR(14),/* ANSI OWNER ID            */
*                2 *           CHAR(28),/* RESERVED                 */
*                2 LABSTAND    CHAR(1); /* LABEL STANDARD LEVEL     */
   DCL 1 DSECT02 DEFINED(FORECORE),
*                2 FL1LABI     CHAR(3), /* LABEL IDENTIFIER         */
*                2 FL1NO       CHAR(1), /* FILE LABEL NUMBER        */
*                2 FL1ID       CHAR(17),/* FILE IDENTIFIER          */
*                2 FL1FILSR    CHAR(6), /* FILE SERIAL NUMBER       */
*                2 FL1VOLSQ    CHAR(4), /* VOL SEQ NUMBER           */
*                2 FL1FILSQ    CHAR(4), /* FILE SEQ NUMBER          */
*                2 FL1GNO      CHAR(4), /* GENERATION NUMBER        */
*                2 FL1VNG      CHAR(2), /* VERSION NUMBER OF GDG    */
*                2 FL1CREDT    CHAR(6), /* CREATION DATE            */
*                2 FL1EXPDT    CHAR(6), /* EXPIRATION DATE          */
*                2 FL1FSEC     CHAR(1), /* FILE SECURITY INDICATOR  */
*                2 FL1BLKCT    CHAR(6), /* BLOCK COUNT              */
*                2 FL1SYSCD    CHAR(13),/* SYSTEM CODE              */
*                2 FL1RES      CHAR(7), /* RESERVED                 */
*                  3 *         CHAR(1),
*                  3 FL1RES1   CHAR(6);
   DCL 1 DSECT03 DEFINED(FORECORE) POS(5),
*                2 FL2RECFM    CHAR(1), /* RECORD FORMAT            */
*                2 FL2BLKL     CHAR(5), /* BLOCK LENGTH             */
*                2 FL2LRECL    CHAR(5), /* BLOCK FACTOR/REC LEN     */
*                2 FL2DEN      CHAR(1), /* DENSITY                  */
*                2 FL2FILP     CHAR(1), /* FILE POSITION            */
*                2 FL2JSID     CHAR(17),/* JOB/STEP ID              */
*                  3 FL2JOBD   CHAR(8), /* JOB IDENTIFICATION       */
*                  3 FL2JSSP   CHAR(1), /* SLASH                    */
*                  3 FL2STEPD  CHAR(8), /* STEP IDENTIFICATION      */
*                2 FL2TRTCH    CHAR(2), /* TAPE REC TECHNIQUE       */
*                2 FL2CNTRL    CHAR(1), /* CARRIAGE CONTROL CHAR    */
*                2 *           CHAR(1), /* RESERVED                 */
*                2 FL2BLKA     CHAR(1), /* BLOCK ATTRIBUTE          */
*                2 FL2RES      CHAR(41);/* RESERVED                 */
*        DCL      FL2BUFOF     CHAR(2) BASED(ADDR(DXLBL)+50);
   DCL 1 DXDSCB  DEFINED(FORECORE),
*                2 DSCFMTID    CHAR(1), /* ID                       */
*                2 DSCFILSR    CHAR(6), /* FILE SERIAL NUMBER       */
*                2 DSCVOLSR    CHAR(2),
*                2 DSCCREDT    CHAR(3), /* CREATION DATE            */
*                2 DSCEXPDT    CHAR(3), /* EXPIRATION DATE          */
*                2 DSCNOEXT    CHAR(1),
*                2 DSCBLDBL    CHAR(1),
*                2 *           CHAR(1),
*                2 DSCSYSCD    CHAR(13),/* SYSTEM CODE              */
*                2 *           CHAR(7),
*                2 DSCFILTY    CHAR(2), /* FILE TYPE                */
*                2 DSCRECFM    CHAR(1), /* RECORD FORMAT            */
*                2 DSCOPTCD    CHAR(1), /* OPTION CODE              */
*                2 DSCBLKL     CHAR(2), /* BLOCK LENGTH             */
*                2 DSCLRECL    CHAR(2), /* RECORD LENGTH            */
*                2 DSCKEYL     CHAR(1), /* KEY LENGTH               */
*                2 DSCRKP      CHAR(2), /* KEY LOCATION             */
*                2 DSCDSIND    CHAR(1),
*                2 DSCSCALO    CHAR(4),
*                2 DSCLSTAR    CHAR(5),
*                2 DSCTRBAL    CHAR(2),
*                2 DSCEXTYP    CHAR(1), /* EXTENT TYPE INDICATOR    */
*                2 DSCEXTSQ    CHAR(1), /* EXTENT SEQ NUMBER        */
*                2 DSCLOWLM    CHAR(4),
*                2 DSCUPPLM    CHAR(4),
*                2 DSCEXT1     CHAR(10),
*                2 DSCEXT2     CHAR(10),
*                2 DSCNEXT     CHAR(5); /* POINTER TO NEXT RECORD   */
   DCL   DSCCORE PTR(31) DEFINED(FORECORE) POS(97);
   DCL   DSCBEND CHAR(0) DEFINED(FORECORE) POS(101);
   DCL 1 DXDSCB3K DEFINED(FORECORE),
*                2 DSCBF3C     CHAR(4),
*                2 DSCBEXSK    CHAR(40),
*                  3 DSCBEXTY  CHAR(1), /* EXTENT TYPE INDICATOR    */
*                  3 DSCBEXSQ  CHAR(1), /* EXTENT SEQ NUMBER        */
*                  3 DSCBLLMT  CHAR(4), /* CCHH LOWER LIMIT         */
*                  3 DSCBULMT  CHAR(4), /* CCHH UPPER LIMIT         */
*                  3 DSCBEX2   CHAR(10),/* ADDITIONAL EXTENT        */
*                  3 DSCBEX3   CHAR(10),/* ADDITIONAL EXTENT        */
*                  3 DSCBEX4   CHAR(10);/* ADDITIONAL EXTENT        */
   DCL 1 DSECT04  DEFINED(FORECORE),
*                2 DSCBFMID    CHAR(1), /* FORMAT ID 3              */
*                2 DSCBEXSD    CHAR(90),/* ADDITIONAL EXTENTS       */
*                  3 DSCBEX5   CHAR(10),
*                  3 DSCBEX6   CHAR(10),
*                  3 DSCBEX7   CHAR(10),
*                  3 DSCBEX8   CHAR(10),
*                  3 DSCBEX9   CHAR(10),
*                  3 DSCBEXA   CHAR(10),
*                  3 DSCBEXB   CHAR(10),
*                  3 DSCBEXC   CHAR(10),
*                  3 DSCBEXD   CHAR(10),
*                2 DSCBNEXT    CHAR(5); /* CCHHR OF NEXT F3 DSCB    */
   DCL 1 DSECT05  DEFINED(FORECORE),
*                2 REPLYLTH    CHAR(1),
*                2 REPLYADR    PTR(24),
*                2 REPLYECB    CHAR(4),
*                2 MSGLSTSZ    FIXED(15),/* MSG LENGTH              */
*                2 MCSFLAGS    BIT(16), /* FLAG FIELD FOR MCS       */
*                2 MESSAGEA    CHAR(68),/* MESSAGE AREA             */
*                2 DESCODE     BIT(16), /* DESCRIPTOR CODE FOR MCS  */
*                2 ROUTCODE    BIT(16), /* ROUTING CODE FOR MCS     */
*                2 REPLY       CHAR(12);/* REPLY AREA               */
*%       DCL (MSERL,MINSTL,MUNL,MVOLL) FIXED;
*%       MSERL  = 3;
*%       MINSTL = 6;
*%       MUNL   = 3;
*%       MVOLL  = 6;
   DCL 1 DSECT06  DEFINED(FORECORE) POS(13),
*                2 MSGIOSUP    CHAR(3), /* I/O SUPPORT MSG ID       */
*                2 MSGINSTR    CHAR(6), /* MSG SERIAL               */
*                  3 MSGSER    CHAR(3), /* MSG SERIAL NUMBER        */
*                    4 *       CHAR(2),
*                    4 MSGSERLO CHAR(1),/* LOW ORDER BYTE OF MSG SER*/
*                  3 *         CHAR(2),
*                  3 MSGACTN   CHAR(1), /* OPERATOR ACTION CODE     */
*                2 MSGBLANK    CHAR(1), /* BLANK                    */
*                2 MSGUN       CHAR(3), /* UNIT NAME                */
*                2 MSGCOMM1    CHAR(1), /* COMMA                    */
*                2 MSGVOLSR    CHAR(6), /* VOLSER                   */
*                2 MSGCOMM2    CHAR(1), /* COMMA                    */
*                2 MSGTEXT     CHAR(47);/* MESSAGE TEXT             */
   DCL DXJBF CHAR(176) DEFINED(FORECORE) POS(101);
*%GOTO IDAFOR2;                        /* BYPASS VS2 SECTION @Y30DSDT*/
*%IDAFOR1: DCL (FORECORE,RWTG,RWTGC) CHAR;                 /*@Y30DSDT*/
*%         FORECORE='FORCORE';                             /*@Y30DSDT*/
*%         RWTG='IECWTGTB';            /* RWTG NOT VSAM REG  @Y30DSDT*/
*%         RWTGC='*';                  /* RWTGC NOT VSAM REG @Y30DSDT*/
*%         INCLUDE SYSLIB(IECDSECT);   /* VS2 FORCORE        @Y30DSDT*/
*%         INCLUDE SYSLIB(IECDSECS);   /* VS2 FORCORE EXT.   @Y30DSDT*/
*%         DEACTIVATE RWTG,RWTGC;                          /*@Y30DSDT*/
*%IDAFOR2: ;                       /* VS1/VS2 COMMON SECTION @Y30DSDT*/
 %IF NOJFCB='YES'
    %THEN %GOTO NOJFCBA;
*%       DCL   JFCBPTR  CHAR;
*%       JFCBPTR = 'ADDR(DXJBF)';
*%       INCLUDE SYSLIB(IEFJFCBN);
*%       DCL   JFCBXPTR CHAR;
*%       JFCBXPTR = 'ADDR(DXJBF)';
*%       INCLUDE SYSLIB(IEFJFCBX);
         %NOJFCBA:;
*%IF ENV='VS2'  %THEN                   /*IF VS2, BYPASS VS1 @Y30DSDT*/
*   %GOTO IDAFOR3;                      /* SECTION           @Y30DSDT*/
   DCL DXECB CHAR(4) DEFINED(FORECORE) POS(277);
*% IF CONFLICT ^= 'NO' %THEN %GOTO NORMAL;
   DCL DXIOB CHAR(32) DEFINED(FORECORE) POS(281);
*% GOTO BYPASS;
*% NORMAL: ;
   DCL 1 DXIOB DEFINED(FORECORE) POS(281),
*                2 IOBFLAG1    BIT(8),
*                2 IOBFLAG2    BIT(8),
*                2 IOBSENSE    CHAR(2),
*                  3 IOBSENS0  BIT(8),
*                  3 IOBSENS1  BIT(8),
*                2 IOBECBPT    PTR(31),
*                  3 *         BIT(8),
*                  3 *         PTR(24),
*                2 IOBCSW,
*                  3 IOBCOMAD  CHAR(4),
*                  3 IOBSTAT0  BIT(8),
*                  3 IOBSTAT1  BIT(8),
*                  3 IOBCNT    FIXED(15),
*                2 IOBSIOCC    BIT(8),
*                2 IOBSTART    PTR(24),
*                2 IOBWGHT     BIT(8),
*                2 IOBDCBPT    PTR(24),
*                2 *           CHAR(1),
*                2 *           CHAR(3),
*                2 IOBINCAM    FIXED(15),
*                2 IOBERRCT    FIXED(15);
*% BYPASS: ;
   DCL DXDADDR CHAR(8) DEFINED(FORECORE) POS(313);
   DCL 1 DYYYY DEFINED(FORECORE) POS(321),
*                2 DXDEBDEB    PTR(31),
*                2 DXDEBIRB    PTR(31),
*                  3 DXDEBOFL  CHAR(1),
*                2 DXDEBSYS    PTR(31),
*                2 DXDEBUSR    PTR(31),
*                2 DXDEBECB    PTR(31),
*                2 DXDEBDCB    PTR(31),
*                  3 DXDCBAD   PTR(31),
*                    4 DXDEBID CHAR(1),
*                2 DXDEBAPP    PTR(31),
*                2 DXDEBUCB    PTR(31),
*                  3 DXDEBMOD  CHAR(1),
*                2 DXDEBBIN    CHAR(2),
*                2 DXDEBSCC    CHAR(2),
*                2 DXDEBSHH    CHAR(2),
*                2 DXDEBECC    CHAR(2),
*                2 DXDEBEHH    CHAR(2),
*                2 DXDEBNTR    CHAR(2);
   DCL   DXDEB                          DEFINED(FORECORE) POS(317);
   DCL   DXXXX CHAR(4)                  DEFINED(FORECORE) POS(365);
   DCL   DXDCB                          DEFINED(FORECORE) POS(321);
   DCL   DXDCBDEB PTR(31)               DEFINED(FORECORE) POS(365);
   DCL 1 DXCCW                          DEFINED(FORECORE) POS(369),
*                2 DXCCW1      CHAR(8),
*                2 DXCCW2      CHAR(8),
*                2 DXCCW3      CHAR(8),
*                2 DXCCW4      CHAR(8),
*                2 DXCCW5      CHAR(8),
*                2 DXCCW6      CHAR(8),
*                2 DXCCW7      CHAR(8),
*                2 DXCCW8      CHAR(8),
*                2 DXCCW9      CHAR(8),
*                2 DXCCW10     CHAR(8),
*                2 DXCCW11     CHAR(8),
*                2 DXCCW12     CHAR(8);
   DCL   DXVSAMID PTR(31) DEFINED(FORECORE) POS(489);
*%IDAFOR3: ;                      /* VS1/VS2 COMMON SECTION @Y30DSDT*/
   DCL 1 PDWLIST DEFINED(FORECORE),    /* WRITE-TO-PROGRAMMER
                                          PARAMETER LIST            */
*                2 WTPLNGTH FIXED(15) UNSIGNED, /* LENGTH OF LIST   */
*                2 WTPFLGS FIXED(15) UNSIGNED, /* WTPFLAGS          */
*                2 WTPMSG CHAR(71),    /* TEXT OF MESSAGE           */
*                2 WTPROUT CHAR(4);    /* ROUTING CODES             */
*  % INCLUDE SYSLIB(IDAPDPRM);
*  RFY IDAPDPRM  BASED(ADDR(DXIOB));
*%IF ENV='VS2'  %THEN                  /* IF VS2, BYPASS VS1 @Y30DSDT*/
*   %GOTO IDAFOR4;                     /*  DECLARE           @Y30DSDT*/
   DCL 1 PDWWORK DEFINED(FORECORE) POS(321),
*   %GOTO IDAFOR5;                     /* BYPASS VS2 DECLARE @Y30DSDT*/
*%IDAFOR4: ;                                               /*@Y30DSDT*/
   DCL 1 PDWWORK DEFINED(DXDCB),                           /*@Y30DSDT*/
*%IDAFOR5: ;                                               /*@Y30DSDT*/
*                2 PDWSAVE CHAR(64),   /* REGISTER SAVE AREA        */
*                2 PDWSAVEA PTR(31),   /* REG 14 SAVE AREA          */
*                2 PDWSAVEB PTR(31),   /* REG 14 SAVE AREA          */
*                2 PDWSAVEC PTR(31),   /* REG 14 SAVE AREA          */
*                2 PDWSAVED PTR(31),   /* REG 14 SAVE AREA  @X04SVRL*/
*                2 PDWMSGPT PTR(31),   /* PTR TO LOCATION IN USER'S
*                                         MESSAGE AREA      @X04SVRL*/
*                2 PDWERRCD PTR(31),   /* ERROR CODE                */
*                2 PDWORKSP CHAR(8) BDY(DWORD); /* DBL WORD WORK AREA*/
*%IF ENV='VS2'  %THEN                   /*IF VS2, BYPASS VS1 @Y30DSDT*/
*   %GOTO NOWTG;                        /* SECTION           @Y30DSDT*/
*%       DCL DSECTSIZ FIXED;
*%       DSECTSIZ = 496;
* % IF WTGX ^= 'YES' %THEN %GO TO NOWTG;
*        DCL 1 WTG BASED     ,
*             2 WTGAREA  CHAR(29) ,     /* WTG TABLE BASIC SECTION  */
*              3 WTGMODNM CHAR(8) ,     /* MODULE NAME              */
*                4 *      CHAR(6) ,     /* FIRST SIX BYTES OF MODULE*/
*                4 WTGMODID CHAR(2),    /* MODULE ID                */
*              3 *          CHAR(6),    /* TTRSZE FLD OF BLDL       */
*              3 WTGTTR     CHAR(3);    /* TTR OF FIRST TEXT RECORD */
*        DCL WTGECBAD PTR(31) BASED(ADDR(WTGTTR)+2);
*        DCL 1 DSECTT10 BASED(ADDR(WTGECBAD)+4) BDY(WORD),
*             2 *         CHAR(2),
*             2 WTGATTRB  BIT(16),      /* ATTRIBUTES OF MODULE     */
*             2 WTGMODSZ  CHAR(3),      /* MAIN STORAGE NEEDED      */
*             2 WTGTXTLN  CHAR(2),      /* LNG OF FIRST TXT REC     */
*             2 WTGLNG    PTR(8) ,      /* LNG OF WTG TABL DWORDS   */
*             2 WTGPATHS  BIT(16),      /* O/C PROC. INDICATORS     */
*               3 WTGPRLSE BIT(1),      /* DA PARTIAL RLSE REQ      */
*               3 WTGNSL   BIT(1),      /* NSL TAPE INPUT PROC.     */
*               3 WTGCLOS  BIT(1),      /* TCLOSE XCTL TO NSL RTNS  */
*               3 WTGSMF   BIT(1),      /* SMF IS ACTIVE            */
*               3 WTGJFCBW BIT(1),      /* JFCB ALTERED NEEDS JQ UPD*/
*               3 *        BIT(3),
*               3 WTGTRACE BIT(1),      /* OPT TRACE FACILITY REQD  */
*               3 WTGAM0   BIT(1),      /* VSAM ACBS IN PARM LIST   */
*               3 *        BIT(4),
*               3 WTGRECHK BIT(1),      /* INCORRECT NSL VOL MOUNTED*/
*               3 WTGOPD   BIT(1),      /* DCBS TO COMPLETE THEN    */
*                                       /* GET PROB DET FOR LAST LD */
*             2 *         CHAR(8),      /*                          */
*             2 WTGEND    CHAR(0);      /* END OF WTG TABLE         */
*        DCL 1 DSECT10A BDY(WORD) BASED,
*             2 WTGENTRY  CHAR(8) BDY(WORD),/* FIRST ENTRY IN WTG   */
*               3 WTGIDTTR CHAR(5),     /* ID & TTR OF NEXT MODULE  */
*                 4 WTGID  CHAR(2),     /* MODULE ID                */
*                 4 WTGXTTR CHAR(3),    /* TTR OF MODULE            */
*               3 WTGCORE  PTR(24);     /* ADDR OF MAIN WORKAREA    */
* %NOWTG:  ;
./ ADD NAME=IDAFRCIO
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
         MACRO
&NAME    IDAFRCIO &RPL=
         AIF   ('&RPL' NE '').OKY
         IHBERMAC 24
         MEXIT
.OKY     ANOP
&NAME    DS    0H
         AIF   ('&RPL'(1,1) EQ '(').RPLR
         LA    1,&RPL                   LOAD RPL ADDRESS
         AGO   .RPLSET
.RPLR    AIF   ('&RPL' EQ '(1)').RPLSET
         LR    1,&RPL(1)                LOAD RPL ADDRESS INTO REG. 1
.RPLSET  ANOP
         LA    0,10                     INDICATE A FORCE I/O REQUEST
.TYPESET L     15,24(1)                 LOAD ACB ADDRESS FROM RPL
         L     15,8(15)                 LOAD VSAM INTERFACE RTN ADDR
         BALR  14,15                    LINK TO INTERFACE ROUTINE
         MEND
./ ADD NAME=IDAGMAIN
 %GOTO SKIP;                       /*SKIP MACRO PROLOG               */
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAGMAIN                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = GETMAIN FOR VSAM OPEN/CLOSE/EOV AUTOMATICS. */
 /*                                                                  */
 /*   FUNCTION = PERFORMS GETMAIN'S FOR VSAM OPEN/CLOSE/EOV MODULES. */
 /*              IT GETS THE CORRECT AMOUNT OF STORAGE AREA FOR THE  */
 /*              AUTOMATICS DECLARED BY THE MODULES.                 */
 /*              REGISTER 15 CONTAINS ADDRESS OF GOTTEN CORE IF      */
 /*              GETMAIN WAS SUCCESSFUL, OTHERWISE REISTER 15        */
 /*              CONTAINS ZERO.                                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 3 DECEMBER 74                    @Z30SSRL*/
 /*                                                                  */
 /********************************************************************/
 %SKIP: ;                          /*END OF MACRO PROLOG             */
 /********************************************************************/
 /*           IDAGMAIN - GETS CORE STORAGE FOR AUTOMATICS.           */
 /*                      FOR VS2 IDAGMAIN WILL MOVE THE      @Z30SSRL*/
 /*                      ID AND DATE OF THE MODULE TO A      @Z30SSRL*/
 /*                      LOCATION DIRECTLY AFTER THE PLS     @Z30SSRL*/
 /*                      GENERATED SAVE AREA.                @Z30SSRL*/
 /*           DATE OF LAST CHANGE = 3 DECEMBER 74            @Z30SSRL*/
 /********************************************************************/
   GEN;
 %        IF ENV='VS2'  %THEN          /* CHECK FOR VS2 SWITCH AND   */
 %          GOTO IDAGMN1;              /* BYPASS VS1 CODE            */
REG1SAVE EQU   20                       SAVE AREA FOR REGISTER 1
GMRESULT EQU   24                       SAVE AREA FOR ADDR OF GETMAIN
GMWORK   EQU   28                       ADDR OF WORK AREA FOR GETMAIN
WORKPOOL EQU   252                      SUBPOOL 252
         L     @15,CVTPTR               LOAD POINTER TO THE CVT
         L     @15,CVTTCBP(,@15)        LOAD POINTER TO TCB POINTERS
         L     @15,TCBPTR(,@15)         LOAD POINTER TO TCB
         L     @15,TCBRBP(,@15)         LOAD POINTER OF RB
         LA    @15,XRBESA(,@15)         LOAD ADDRESS OF RB SAVE AREA
         STM   @05,@09,0(@15)           SAVE REG 5 TO 9 IN RB SAVE AREA
         LR    @05,@15                  SAVE ADDRESS OF RB SAVE AREA
         ST    @01,REG1SAVE(,@15)       SAVE REGISTER 1 IN 6TH WORD OF
*                                       RB SAVE AREA
         LA    @01,GMWORK(,@15)         POINT TO GETMAIN WORK AREA
         LA    @06,GMRESULT(,@15)       POINT TO GETMAIN RESULT AREA IN
*                                       7TH WORD OF RB SAVE AREA
         LA    @09,WORKPOOL             LOAD SUBPOOL NUMBER
         L     @07,@SIZDATD             LOAD NUMBER OF BYTES REQUIRED
         GETMAIN EC,LV=(@07),A=(@06),SP=(@09),MF=(E,(@01)) DO GETMAIN
         SR    @09,@09                  ZERO PAD CHARACTER
         LTR   @15,@15                  TEST RETURN CODE FOR ERROR
         BNZ   GMN00100                 BRANCH IF ERROR ENCOUNTERED
*                                       IF NO ERROR WAS ENCOUNTERED
         L     @06,0(,@06)              GET ADDRESS OF ACQUIRED STORAGE
         MVCL  @06,@08                  ZERO THE ACQUIRED STORAGE
         B     GMN00200                 CONTINUE PROCESSING AT GMN00200
GMN00100 ST    @09,GMRESULT(,@05)       ZERO THE RESULT WORD IN RB
GMN00200 LR    @15,@05                  GET ADDRESS OF RB SAVE AREA
         LM    @05,@09,0(@15)           RESTORE REGISTER 5 THROUGH 9
         L     @01,REG1SAVE(,@15)       RESTORE REGISTER 1
         L     @15,GMRESULT(,@15)       LOAD GETMAIN RESULT
 %         GOTO IDAGMN2;               /* BYPASS VS2 CODE            */
 %IDAGMN1: ;                           /* START VS2 CODE             */
         L     @00,@SIZDATD             LOAD LENGTH OF AUTOMATICS
         GETMAIN RC,LV=(0),SP=0         ISSUE GETMAIN IN SUBPOOL ZERO
         LTR   @15,@15                  TEST RETURN CODE FOR ERROR
         BNZ   GMN00100                 BRANCH IF ERROR ENCOUNTERED
*                                       IF NO ERROR WAS ENCOUNTERED
         LR    @00,@01                  ADDRESS OF GOTTEN AREA IN R0
         LR    @14,@01                  SAVE THE ADDRESS IN REGISTER 14
         L     @01,@SIZDATD             LENGTH OF GOTTEN AREA
         MVCL  @00,@14                  ZERO THE GOTTEN AREA, R15=0
         LR    @15,@14                  ADDRESS OF AREA IN REGISTER 15
         ST    @15,8(,@13)              FORWARD CHAIN THIS SAVE AREA
 %   IF CALLER='192P'  %THEN        /* IF IT IS 192P                 */
 %   GOTO NEXT;                     /* BYPASS SETTING ID             */
         L     @01,@SIZDATD             LENGTH OF GOTTEN AREA
         ST    @01,88(,@15)             STORE LENGTH OF AREA
         LR    @14,@03                  LOAD BASE REGISTER OF MODULE
         LA    @01,23                   LOAD NEGATIVE OFFSET BYTE NO.
         SR    @14,@01                  NEGITIVE OFFSET 23 BYTES
         MVC   72(16,@15),0(@14)        GET MODULE NAME AND DATE
 %NEXT: ;
         B     GMN00200                 BYPASS SETTING ERROR
GMN00100 SR    @15,@15                  REGISTER 15 = 0 INDICATES ERROR
GMN00200 EQU   *                        R15 CONTAINS ADDRESS OR ZERO
 %IDAGMN2: ;
*        REGISTER 15 CONTAINS EITHER THE ADDRESS OF GOTTEN CORE OR
*        ZERO IF THE GETMAIN WAS UNSUCCESSFUL.
 @ENDGEN;
./ ADD NAME=IDAHEB
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAHEB                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = HEADER ELEMENT BLOCK.                       */
 /*                                                                  */
 /*   FUNCTION = THE HEB CONTAINS UP TO 16 ACTIVE CORE BLOCK HEADERS */
 /*              USED TO REFLECT GOTTEN CORE FOR VSAM CONTROL BLOCKS.*/
 /*              ADDITIONAL HEB(S) ARE CHAINED AS REQUIRED.          */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE HEB IS POINTED TO BY THE BIB     */
 /*                             (BIBHEBPT). THE FIRST FREE HEADER    */
 /*                             ELEMENT IS POINTED TO BY (BIBHEBFQ). */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAHEB AND HEBHDREL BASED. */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192M.                         */
 /*                                                                  */
 /*   STATUS = VS2 RELEASE 4                                 @Z40ESSR*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 04/11/75                         @Z40ESSR*/
 /*                                                                  */
 /********************************************************************/
 DCL HEBNEL CONSTANT(16) FIXED(31); /* NUMBER OF ELEMENTS IN A HEB   */
 DCL 1 HEBHDREL BASED BDY(WORD),    /* HEADER ELEMENT                */
       2 HEBFREMN,                  /* FREEMAIN INFORMATION          */
         3 HEBSP    FIXED(8),       /* SUBPOOL OF BLOCK              */
         3 HEBLN    FIXED(24),      /* LENGTH OF BLOCK               */
         3 HEBBLKPT PTR(31),        /* POINTER TO CORE BLOCK         */
       2 HEBFLAGS BIT(8),           /* FLAGS                         */
         3 HEBJSTCB BIT(1),         /* CORE IS OWNED BY JOBSTEP TCB  */
         3 HEBKEY5  BIT(1),         /* STORAGE IS IN KEY 5 - VS2     */
         3 HEBGSRKT BIT(1),         /* STOR IN GSR KEY - VS2 @Z40ESSR*/
                                    /* NOTE - IF NOT KEY 5 OR GSR KEY
                                       GET CORE IN KEY 0     @Z40ESSR*/
         3 HEBIOSUP BIT(1),         /* O/C/E SPECIAL REQUEST BLK -VS2*/
         3 HEBRTFLG BIT(1),         /* RECOVERY/TERM FREED CORE - VS2*/
       2 HEBAVSP  FIXED(24),        /* AMOUNT OF AVAILABLE CORE      */
       2 HEBELCHN PTR(31),          /* PTR TO NEXT HDR ELEMENT       */
       2 HEBNBYTE PTR(31),          /* PTR TO NEXT AVAIL BYT @Z40ESSR*/
       2 * CHAR(4),                                        /*@Z40ESSR*/
         3 HEBGSRK FIXED(8),        /*GSR KEY IF HEBGSRKT ON @Z40ESSR*/
         3 *       FIXED(24);       /* UNUSED                @Z40ESSR*/
 DCL 1 IDAHEB BASED BDY(WORD),      /* HEADER ELEMENT BLOCK  @Z40ESSR*/
       2 HEBID    CHAR(1),          /* CONTROL BLOCK ID      @Z40ESSR*/
       2 *        CHAR(1),          /* RESERVED - NOT USED   @Z40ESSR*/
       2 HEBLEN   FIXED(15),        /* LENGTH OF HEB         @Z40ESSR*/
       2 HEBNHEB  PTR (31),         /* POINTER TO NEXT HEB OR ZERO   */
       2 *        CHAR(2),          /* UNUSED                @Z40ESSR*/
       2 HEBCNT   FIXED(15),        /* NUMBER OF HEADER ELEMENTS     */
       2 HEBHDELS(HEBNEL) CHAR(LENGTH(HEBHDREL));/* HDR ELEM @Z40ESSR*/
./ ADD NAME=IDAICWA
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAICWA                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = INDEX CREATE WORK AREA                      */
*/*                                                                  */
*/*   FUNCTION = USED BY VSAM RECORD MAGANEMENT WHEN CREATING        */
*/*         AN INDEX                                                 */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = POINTED TO BY IDAAMB                 */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
*  DCL 1  IDAICWA  BASED,                  /* INDEX CREATE WORK AREA */
*        2 ICWID CHAR(1),                  /* CONTROL BLOCK ID     */
*        2 ICWFLG1 BIT(8),                 /* FLAG BYTE ONE        */
*          3 ICWWNF BIT(1),                /* ENTRY WILL NOT FIT     */
*          3 ICWWAGM BIT(1),               /* WORK AREA NOT FROM OPEN*/
*          3 ICWRBAOK BIT(1),              /* DONT GET RBA ON INITAL */
*          3 ICWVSE BIT(1),                /* SECTION ENTRY IS VALID */
*          3 ICWVNE BIT(1),                /* PREVIOUS ENTRY IS VALID*/
*          3 ICWKRDS BIT(1),               /* KEY RANGE DATA SET     */
*          3 ICWSPLIT BIT(1),              /* AREA USED BY SPLT I.R. */
*          3 ICWENDRQ BIT(1),              /* CLOSE REQUIRES CI SPLT.*/
*        2 ICWLEN FIXED(15),               /* LENGTH OF CONTROL BLK*/
*        2 ICWCHN PTR(31),                 /* PTR TO NEXT ICWA     */
*        2 ICWBUFC PTR(31),                /* PTR TO CURR IX BUFC  */
*        2 ICWCRBA PTR(32),                /* CURRENT INDEX RBA      */
*        2 ICWPRBA PTR(32),                /* PREVIOUS INDEX RBA     */
*        2 ICWPSEO PTR(15),                /* PRIOR SECT ENTRY PTR */
*        2 ICWSCNT PTR(15),                /* ENTRIES IN CURR SECT */
*        2 ICWADD PTR(31),                 /* PTR TO CURRENT W.A.    */
*        2 ICWTBASE PTR(32),               /* BASE RBA SAVE POSITION */
*        2 ICWTPTR PTR(31),                /* INDEX PTR SAVE POSITION*/
*        2 ICWARDBP PTR(31),               /* POINTER TO CURRENT ARDB*/
*        2 ICWLN FIXED(15),                /* INDEX LEVEL NUMBER     */
*        2 ICWKEY1L FIXED(15),             /* LENGTH OF CURRENT KEY  */
*        2 ICWKEY2L FIXED(15),             /* LENGTH OF PREVIOUS KEY */
*        2 ICWKEY3L FIXED(15),             /* LENGTH OF SECTION KEY  */
*        2 ICWNEST  FIXED(15),             /* NO ENTRYS IN INDX SECT */
*        2 ICWNOSEG FIXED(15),             /* NO. SEGMENTS IN SPANNED
*                                             RECORD         @X04SVLC*/
*        2 ICWCRSEG FIXED(15),             /* CURRENT SEGMENT BEING
*                                             PROCESSED      @X04SVLC*/
*        2 ICWREQ PTR(8),                  /* REQUEST TYPE           */
*        2 ICWPTL PTR(8),                  /* INDEX ENTRY POINTER LEN*/
*        2 ICWCER PTR(8),                  /* REAR COMP. OF CUR ENTRY*/
*        2 ICWCEF PTR(8),                  /* CURRENT ENTRY F      */
*        2 ICWCEL PTR(8),                  /* CURRENT ENTRY L      */
*        2 ICWCERP PTR(8),                 /* REAR COMP. OF PREVIOUS */
*        2 ICWKEY1 CHAR(*);                /* FIRST KEY SAVED      */
*  DCL ICWKEY2 CHAR(*) BASED;              /* SECOND KEY SAVED     */
*  DCL ICWKEY3 CHAR(*) BASED;              /* THIRD KEY SAVED      */
./ ADD NAME=IDAIDXCB
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAIDXCB                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = IDENTIFICATION CONSTANTS FOR CONTROL BLOCKS.*/
 /*                                                                  */
 /*   FUNCTION = THE CONSTANTS IDENTIFY EACH TYPE OF CONTROL BLOCKS. */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4   (CHANGE FLAG @X04SVXX)                */
 /*            VS2 RELEASE 3   (CHANGE FLAG @Y30DSXX)                */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 5 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
   DCL (IDXAMB CONSTANT('01000000'B),      /* ID FOR AMB             */
        IDXAMBL CONSTANT('01010000'B),     /* ID FOR AMBL            */
        IDXAMDSB CONSTANT('01100000'B),    /* ID FOR AMDSB           */
        IDXARDB CONSTANT('01100001'B),     /* ID FOR ARDB            */
        IDXBIB CONSTANT('00010000'B),      /* ID FOR BIB     @X04SVRP*/
        IDXBSPH CONSTANT('01110010'B),     /* ID FOR BSPH    @X04SVRP*/
        IDXBUFC CONSTANT('01110000'B),     /* ID FOR BUFC    @X04SVRP*/
        IDXBUFDR CONSTANT('01110000'B),    /* ID FOR BUFDR           */
        IDXCMB CONSTANT('00010001'B),      /* ID FOR CMB     @X04SVRP*/
        IDXCPA CONSTANT('01110001'B),      /* ID FOR CPA             */
        IDXDEB CONSTANT('00001111'B),      /* ID FOR DEB             */
        IDXDIWA CONSTANT('01000001'B),     /* ID FOR DIWA            */
        IDXEDB CONSTANT('10010000'B),      /* ID FOR EDB             */
        IDXHEB CONSTANT('00010011'B),      /* ID FOR HEB     @X04SVRP*/
        IDXICWA CONSTANT('01000011'B),     /* ID FOR ICWA            */
        IDXIMWA CONSTANT('01000010'B),     /* ID FOR IMWA            */
        IDXLPMB CONSTANT('10010001'B),     /* ID FOR LPMB            */
        IDXPLH CONSTANT('00110000'B),      /* ID FOR PLHDR           */
        IDXUPT CONSTANT('01000101'B),      /* ID FOR UPT     @X04SVRP*/
        IDXVAT CONSTANT('00010001'B),      /* ID FOR VAT     @X04SVRP*/
        IDXVCRT CONSTANT('10000000'B),     /* ID FOR VCRT    @X04SVRP*/
        IDXVIOT CONSTANT('00010110'B),     /* ID FOR VIOT    @X04SVRP*/
        IDXVMT CONSTANT('00010010'B),      /* ID FOR VMT     @X04SVRP*/
        IDXVSRT CONSTANT('00010101'B),     /* ID FOR VSRT    @X04SVRP*/
        IDXWAX CONSTANT('01110011'B),      /* ID FOR WAX     @X04SVRP*/
        IDXWSHD CONSTANT('01000100'B))     /* ID FOR WSHD    @X04SVRP*/
                        BIT(8);
./ ADD NAME=IDAIICB
* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* /*                                                                 */
* /*     ISAM INTERFACE CONTROL BLOCK  - IICB                        */
* /*                                                                 */
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73212/Y02113                                @Y021130*/
* /*                                                                 */
* /*     ISAM INTERFACE OPEN CREATES AND INITIALIZES THE IICB.       */
* /*     IT IS USED TO POINT TO THE ISAM (DCB) AND VSAM (ACB         */
* /*     AND RPL) CONTROL BLOCKS AND ASSOCIATED AREAS NEEDED BY      */
* /*     THE ISAM INTERFACE.  IT IS POINTED TO BY THE ISAM DEB       */
* /*     (DEBWKPT5) TO PROVIDE INTEGRITY AND BY THE RPL EXTENSION    */
* /*     (RRLIICB) TO PROVIDE A CONNECTION TO THE VSAM CONTROL BLOCK */
* /*     STRUCTURE.  IT IS FREED BY ISAM INTERFACE CLOSE.            */
* /*                                                                 */
* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* /*                                                                 */
*   DCL  1 IDAIICB            BASED,    /* ISAM INTERFACE CONTROL BLK*/
*          2 IICBID           PTR(8),   /* IICB ID X'80'             */
*          2 *                PTR(8),   /* RESERVED                  */
*          2 IICBLEN          FIXED(15),/* LENGTH OF IICB            */
*          2 IIDCBPTR         PTR(31),  /* DCB POINTER               */
*          2 IIACBPTR         PTR(31),  /* ABC POINTER               */
*          2 IIRPLPTR         PTR(31),  /* RPL POINTER               */
*                                       /* WORK AREA PTR             */
*          2 IIW1CBF          PTR(31),  /* DUMMY SCAN WA PTR         */
*            3 IISAVLRL       FIXED (15), /* SAVE REC LENGTH @Y021130*/
*            3 IIMAXLRL       FIXED (15), /* MAX REC LENGTH  @Y021130*/
*          2 IIKEYPT          PTR(31),  /* KEYSAVE PTR               */
*          2 IIFLAG1          BIT(8),   /* ISAM INTERFACE FLAG BYTE 1*/
*            3 IIFSCAN        BIT(1),   /* SCAN MODE                 */
*            3 IIFGET         BIT(1),   /* FIRST GET                 */
*            3 *              BIT(1),   /* RESERVED                  */
*            3 IIFCLOSE       BIT(1),   /* CLOSE IN PROCESS          */
*            3 IIDATA         BIT(1),   /* DATA ONLY RETRIVAL        */
*            3 IIFTEST        BIT(1),   /* LOOP TEST BIT             */
*            3 *              BIT(1),   /* RESERVED                  */
*            3 IIQBFRS        BIT(1),   /* QISAM W/O BFRS-NO FREEMAIN*/
*                                       /* GETMAIN/FREEMAIN LENGTHS  */
*          2 IIACBL           FIXED(24),/* ACB,EXLST,IICB LENGTH     */
*          2 IIFLAG2          BIT(8),   /* ISAM INTERFACE FLAG BYTE 2*/
*                                       /* USED BY OPEN TO DESIGNATE */
*                                       /* THE FIELDS BEING MERGED   */
*                                       /* BY II.  II CLOSE USES THE */
*                                       /* SAME MASK TO RESTORE THE  */
*                                       /* DCB TO PRE-OPEN CONDITION */
*            3 MRKP      BIT (1),       /* RELATIVE KEY POSITION     */
*            3 MLRECL    BIT (1),       /* LOGICAL RECORD LENGTH     */
*            3 MBLKSI    BIT (1),       /* BLOCK SIZE                */
*            3 MOPTCD    BIT (1),       /* OPTION CODE               */
*            3 MRECFM    BIT (1),       /* RECORD FORMAT             */
*            3 MBUFL     BIT (1),       /* BUFFER LENGTH             */
*            3 MBUFNO    BIT (1),       /* BUFFER NUMBER             */
*            3 MKEYLE    BIT (1),       /* KEY LENGTH                */
*          2 IIRPLL           FIXED(24),/* RPL, RPLE LENGTH-FREEMAIN */
*          2 IIKEYSL          FIXED(15),/* KEY SAVE AREA LENGTH      */
*          2 IIBUFL           FIXED(15),/* II SINGLE BUFFER LENGTH   */
*          2 IIFLAG3          BIT(8),   /* ISAM INTERFACE FLAG BYTE 3*/
*            3 MBFALN         BIT(1),   /* BFALN MERGE BIT           */
*            3 *              BIT(7),   /* RESERVED                  */
*          2 IIMSGL           FIXED(24),/* MESSAGE AREA LENGTH       */
*          2 IIMSGPTR         PTR(31),  /* MESSAGE AREA POINTER      */
*          2 IIBUFNO          PTR(8),   /* II BUFFER NUMBER          */
*          2 IITBUFL          FIXED(24),/* TOTAL BCB & BUFFER LENGTH */
*          2 IISVCLST         PTR(31),  /* SVC EXIT - SYNADAF        */
*          2 IISAMSYN         CHAR(8),  /* ISAM SYNAD NAME           */
*          2 IIREGSAV,                  /* REG SAVE AREA (II - VSAM) */
*            3 *              PTR(31),  /*                           */
*            3 IIREGBC        PTR(31),  /* PREVIOUS SAVE AREA PTR    */
*            3 IIREGFC        PTR(31),  /* NEXT SAVE AREA PTR        */
*            3 *              CHAR(60), /* REMAINDER OF SAVE AREA    */
*          2 IIAUD  ,                   /* AUDIT INFORMATION @Y021130*/
*            3 IIAUDHDR ,               /* FIRST WORD        @Y021130*/
*             4 IIAUDFL1      BIT(8),   /* II AUDIT FLAGS    @Y021130*/
*              5 AUDACBOP  BIT (1),     /* ACB OPEN ISSUED   @Y021130*/
*              5 AUDACBRO  BIT (1),     /* ACB OPEN RETURNED @Y021130*/
*              5 AUDDCBEX  BIT (1),     /* DCB EXIT TAKEN    @Y021130*/
*              5 AUDDCBRT  BIT (1),     /* DCB EXIT RETURNED @Y021130*/
*              5 AUDPRMOD  BIT (2),     /* PROCESSING MOD LOADED     */
*                                       /* '11' = IDAIIPM3   @Y021130*/
*                                       /* '10' = IDAIIPM2   @Y021130*/
*                                       /* '01' = IDAIIPM1   @Y021130*/
*              5 AUDIISYN  BIT (1),     /* II SYNAD LOADED   @Y021130*/
*              5 AUDURSYN  BIT (1),     /* USER SYNAD LOADED @Y021130*/
*             4 IIAUDFL2      BIT(8),   /* II AUDIT FLAGS    @Y021130*/
*              5 AUDIIFBF  BIT (1),     /* IDAIIFBF LOADED   @Y021130*/
*              5 AUDACBCL  BIT (1),     /* ACB CLOSE ISSUED  @Y021130*/
*              5 AUDACBRC  BIT (1),     /* ACB CLOSE RETURN  @Y021130*/
*              5 AUDBFREX  BIT (1),     /* FLUSH BFR EXIT    @Y021130*/
*              5 AUDBFRRT  BIT (1),     /* FLUSH BFR RETURN  @Y021130*/
*              5 AUDDEBXF  BIT (1),     /* DEB EXTENSION FREED       */
*              5 *         BIT (2),     /* UNUSED            @Y021130*/
*             4 IIGMCNTR   FIXED (15),  /* USED FOR OFFSET TO ENTRY  */
*                                       /* OF GOTTEN CORE    @Y021130*/
*            3 IIGMAUD ,                /* LIST OF CORE ADDRESSES    */
*                                       /* GOTTEN            @Y021130*/
*             4 AUDCIICB      PTR (31), /* ADDR IICB         @Y021130*/
*             4 AUDCSPLI      PTR (32), /* SUBPOOL/LENGTH    @Y021130*/
*              5 AUDCSPI    FIXED (8),  /* SUBPOOL           @Y021130*/
*              5 AUDCLI     FIXED (24), /* LENGTH            @Y021130*/
*             4 AUDCDEB       PTR (31), /* ADDR DEB          @Y021130*/
*             4 AUDCSPLD      PTR (32), /* SUBPOOL/LENGTH    @Y021130*/
*              5 AUDCSPD    FIXED (8),  /* SUBPOOL           @Y021130*/
*              5 AUDCLD     FIXED (24), /* LENGTH            @Y021130*/
*             4 AUDCBFRS      PTR (31), /* BUFFERS,RPLS,ETC  @Y021130*/
*             4 AUDCSPLB      PTR (32), /* SUBPOOL/LENGTH    @Y021130*/
*              5 AUDCSPB    FIXED (8),  /* SUBPOOL           @Y021130*/
*              5 AUDCLB     FIXED (24), /* LENGTH            @Y021130*/
*             4 AUDCMSGA      PTR (31), /* MESSAGE AREA      @Y021130*/
*             4 AUDCSPLM      PTR (32), /* SUBPOOL/LENGTH    @Y021130*/
*              5 AUDCSPM    FIXED (8),  /* SUBPOOL           @Y021130*/
*              5 AUDCLM     FIXED (24); /* LENGTH            @Y021130*/
*        /* AUDIT GETMAIN ENTRY DESCRIPTION                  @Y021130*/
*        DCL 1 IIGMNTRY BASED (ADDR(IIAUD)+IIGMCNTR), /* DESCRIPTION */
*                                       /* OF GOTTEN CORE ENTRIES    */
*          2 IIGMADDR     PTR(31),      /* ADDRESS OF CORE   @Y021130*/
*          2 IIGMSPLG ,                 /* SUBPOOL/LENGTH    @Y021130*/
*            3 IIGMPOOL   FIXED(8),     /* SUBPOOL           @Y021130*/
*            3 IIGMLEN    FIXED (24);   /* LENGTH            @Y021130*/
./ ADD NAME=IDAIIREG
* /*                                                                 */
* /*     IDAIIREG                                                    */
* /*                                                                 */
* /*     ISAM INTERFACE REGISTER DECLARATIONS, CONSTANTS AND         */
* /*     CONTROL BLOCK INCLUDES FOR THE IICB, DCB, RPL AND RPLE.     */
* /*                                                                 */
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73183/Y02113                                        */
* /*                                                                 */
* /*                                                                 */
*   DCL  R0         REG (00)  PTR (31); /* PARAMETER REG             */
*   DCL  R1         REG (01)  PTR (31); /* PARAMETER REG             */
*   DCL  RDCB       REG (01)  PTR (31); /* DCB PTR                   */
*   DCL  RDECB      REG (01)  PTR (31); /* DECB PTR                  */
*   DCL  R2         REG (02)  PTR (31); /* WORK REG                  */
*   DCL  RIICB      REG (02)  PTR (31); /* ISAM INTERFACE CB PTR     */
*   DCL  R3         REG (03)  PTR (31); /* WORK REG                  */
*   DCL  RRPL       REG (03)  PTR (31); /* RPL PTR                   */
*   DCL  R4         REG (04)  PTR (31); /* WORK REG                  */
*   DCL  RCORE      REG (04)  PTR (31); /* DCB WORK AREA PTR (O/C)   */
*   DCL  R5         REG (05)  PTR (31); /* WORK REG                  */
*   DCL  RBUFF      REG (05)  PTR (31); /* BUFFER PTR                */
*   DCL  R6         REG (06)  PTR (31); /* WORK REG                  */
*   DCL  RACB       REG (06)  PTR (31); /* ABC POINTER               */
*   DCL  RWORK1     REG (06)  PTR (31); /* WORK REG                  */
*   DCL  R7         REG (07)  PTR (31); /* WORK REG                  */
*   DCL  RPARC      REG (07)  PTR (31); /* CURR ENTRY-PARM LIST (O/C)*/
*   DCL  RWORK2     REG (07)  PTR (31); /* WORK REG                  */
*   DCL  RFMADDR    REG (07)  PTR (31); /* FREEMAIN ADDR     @Y021130*/
*   DCL  R8         REG (08)  PTR (31); /* WORK REG                  */
*   DCL  RWORK3     REG (08)  PTR (31); /* WORK REG                  */
*   DCL  RGMSP      REG (08)  PTR (31); /* GETMAIN SUBPOOL   @Y021130*/
*   DCL  R9         REG (09)  PTR (31); /* WORK REG                  */
*   DCL  JFCBPTR    REG (09)  PTR (31); /* JFCB POINTER              */
*   DCL  RTIOT      REG (09)  PTR (31); /* TIOT DD ENTRY             */
*   DCL  RGMLEN     REG (09)  PTR (31); /* GETMAIN LENGTH    @Y021130*/
*   DCL  R10        REG (10)  PTR (31); /* WORK REG                  */
*   DCL  RLKRETSV   REG (10)  PTR (31); /* LINKAGE SAVE REG  @Y021130*/
*   DCL  R11        REG (11)  PTR (31); /* WORK REG                  */
*   DCL  RDEB       REG (11)  PTR (31); /* DEB PTR                   */
*   DCL  DEBPTR     REG (11)  PTR (31); /* DEB PTR                   */
*   DCL  R12        REG (12)  PTR (31); /* SAVE AREA REG             */
*   DCL  R13        REG (13)  PTR (31); /* SAVE AREA REG             */
*   DCL  R14        REG (14)  PTR (31); /* RETURN ADDR REG           */
*   DCL  R15        REG (15)  PTR (31); /* ENTRY POINT REG           */
* /*                                                                 */
* /*                                                                 */
   DCL   ON         BIT(1)         CONSTANT ('1'B); /* BIT IS '1'B   */
   DCL   OFF        BIT(1)         CONSTANT ('0'B); /* BIT IS '0'B   */
   DCL   ZERO       FIXED (15)     CONSTANT (0); /* DATA TEST OF ZERO*/
   DCL   ONE        FIXED (15)     CONSTANT (1); /* DATA TEST OF ONE */
   DCL   SEVEN      FIXED (15)     CONSTANT (7); /* ROUNDING FACTOR  */
   DCL   EIGHT      FIXED (15)     CONSTANT (8); /* ROUNDING FACTOR  */
   DCL   BZERO      BIT (2)        CONSTANT ('00'B); /* BIT TEST     */
   DCL   CZERO      BIT (8)        CONSTANT ('00000000'B);/* BIT TEST*/
* /*                                                                 */
* /*                                                                 */
 @EJECT;
 %INCLUDE SYSLIB(IDAIICB);
 @EJECT;
 %INCLUDE SYSLIB (IHADCBDF);
 %DCBPTR='RDCB';
 %DSORGIS=1;
 %DEVDDA=1;
 %INCLUDE SYSLIB (IHADCB);
 @EJECT;
     /* RPL DECLARE                                                 */
 %INCLUDE SYSLIB (IFGRPL);
 @EJECT;
 %INCLUDE SYSLIB (IDARPLE);
 @EJECT;
* /*                                                                 */
* /*                                                                 */
         RESPECIFY  IDAIICB   BASED (RIICB);
         RESPECIFY  IHADCB    BASED (RDCB);
         RESPECIFY  IFGRPL    BASED (RRPL);
         RESPECIFY  IDARPLE   BASED (RRPL + LENGTH (IFGRPL));
* /*                                                                 */
         RESPECIFY (RIICB,
                    RDCB,
                    RRPL,
                    R14) RESTRICTED;
* /*                                                                 */
./ ADD NAME=IDAIMWA
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAIMWA                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = INDEX MODIFICATION WORK AREA                */
*/*                                                                  */
*/*   FUNCTION = USED BY VSAM RECORD MANAGEMENT WHEN MODIFING        */
*/*              AN INDEX                                            */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = POINTED TO BY IDAAMB                 */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
*        DCL 1 IDAIMWA BASED BDY(WORD),    /* INDEX INSERT WORK AREA */
*              2 IMWID        CHAR(1),     /* CONTROL BLOCK ID       */
*              2 IMWFLAGS     CHAR(1),     /* PROCESS FLAGS          */
*                3 IMWNEWHL   BIT(1),      /* BUILD NEW HIGH LEVEL   */
*                3 IMWRIPL    BIT(1),      /* RIPPLE INSERT          */
*                3 IMWBSE     BIT(1),      /* BUILD SECTION ENTRY    */
*              2 IMWLEN       FIXED(15),   /* CONTROL BLOCK LENGTH   */
*              2 IMWIXSP      PTR(31),     /* PTR TO IX SEARCH PARML */
*              2 IMWISWKA     CHAR(32) BDY(WORD), /* IX SEARCH PARML */
*              2 IMWXKEYP     PTR(31),     /* PTR TO NEXT DATA KEY   */
*              2 IMWIKEYP     PTR(31),     /* PTR TO INSERT KEY      */
*              2 IMWXPTR      PTR(31),     /* NEXT ENTRY PTR VALUE   */
*              2 IMWIPTR      PTR(31),     /* NEW ENTRY PTR VALUE    */
*              2 IMWLBUFC     PTR(31),     /* LOW KEY DATA BUFC PTR  */
*              2 IMWBUFP      PTR(31),     /* IDX RECORD PTR         */
*              2 IMWFGAIN     PTR(8),      /* NEXT ENTRY F GAIN      */
*              2 IMWIEL       PTR(8),      /* NEW ENTRY L VALUE      */
*              2 IMWSVIEL     PTR(8),      /* SAVE L DURING RIPPLE   */
*              2 *            PTR(8),      /* NOT USED               */
*              2 IMWCIMVN     PTR(15),     /* NO. CIS TO MOVE BACK TO*/
*                                          /* OLD CONTROL AREA       */
*              2 IMWNSOFF     PTR(15),     /* OFFSET TO NEXT SECTION */
*              2 *            PTR(31),     /* RESERVED FOR FUTURE USE*/
*              2 IMWKEY1      CHAR(*);     /* INSERT KEY FOR MASS I. */
./ ADD NAME=IDAIOB
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
*  DCL 1 IOBEXTN DEFINED(IOBSTDRD) POSITION(41),  /* IOB EXTENSION   */
*        2 IOBBUFCS PTR(31),               /* PTR TO CURRENT I/O BUFC*/
*        2 IOBIOMF BIT(8),                 /* I/O MANAGER FLAGS      */
*          3 IOBAMUSE BIT(1),              /* IOB IN USE INDICATOR   */
*          3 IOBMCSW  BIT(1),              /* CSW ADDR NOT IN CP     */
*          3 IOBEOVW  BIT(1),              /* EOV IS WAITING FOR IOB */
*          3 IOBEOVTS BIT(1),              /* EOV SET IOBLOCK        */
*          3 *        BIT(4),              /* NOT USED               */
*        2 IOBNMOD  PTR(8),                /* NO. MODULES IN VSL LIST*/
*        2 IOBLOCK  CHAR(1),               /* PROCESS LOCK           */
*        2 *        CHAR(1),               /* NOT USED               */
*        2 IOBNBUF  FIXED(15),             /* NO. BUFFERS THIS REQ.  */
*        2 IOBNSEG  FIXED(15),             /* NO. OF CHANNEL PROGRAM */
*                                          /* SEQMENTS THIS REQUEST  */
*        2 IOBPLH   PTR(31),               /* POINTER TO PLH         */
*        2 IOBR14   PTR(31),               /* APPENDAGE R14 SAVE     */
*        2 IOBVSL   PTR(31),               /* PTR TO VIRT ADDR LIST  */
*                                          /* FOR PAGE FIX           */
*        2 IOBMSAV1 PTR(31),               /* WORK AREA              */
*        2 IOBMSAV2 PTR(31),               /* WORK AREA              */
*        2 IOBMSAV3 PTR(31),               /* WORK AREA              */
*        2 IOBMSAV4 PTR(31),               /* WORK AREA              */
*        2 IOBMSAV5 PTR(31),               /* WORK AREA              */
*        2 IOBMSAV6 PTR(31);               /* WORK AREA              */
*%GOTO   IOBAPLS2;
         MACRO
         IDAIOB
         ORG   IOBSTDRD+40              IOB EXTENSION
IOBBUFCS DS    A                        POINTER TO CURRENT I/O BUFC
IOBIOMF  DS    BL1                      I/O MANAGER FLAGS
IOBAMUSE EQU   X'80'                    IOB IN USE INDICATOR
IOBMCSW  EQU   X'40'                    CSW ADDR NOT IN CP
IOBEOVW  EQU   X'20'                    EOV IS WAITING FOR IOB
IOBEOVTS EQU   X'10'                    EOV SET IOBLOCK
IOBNMOD  DS    C                        NO. MODULES IN VSL LIST
IOBLOCK  DS    C                        NOT USED
         DS    C                        NOT USED
IOBNBUF  DS    H                        NO. BUFFERS FOR THIS REQUEST
IOBNSEG  DS    H                        NO. CP SEGS FOR THIS REQUEST
IOBPLH   DS    A                        POINTER TO PLH
IOBR14   DS    F                        APPENDAGE R14 SAVE LOCATION
IOBVSL   DS    F                        PTR TO PAGE FIX VIRT ADDR LIST
IOBMSAV1 DS    F                        WORK AREA
IOBMSAV2 DS    F                        WORK AREA
IOBMSAV3 DS    F                        WORK AREA
IOBMSAV4 DS    F                        WORK AREA
IOBMSAV5 DS    F                        WORK AREA
IOBMSAV6 DS    F                        WORK AREA
         MEND
*%IOBAPLS2: ;
./ ADD NAME=IDAIOMB
*/*********************************************************************
*                                                                     *
*   THIS MAPPING MACRO DESCRIBES THE CONTROL BLOCK PASSED TO THE I/O  *
*   MANAGER BY USERS SUCH AS RECORD MANAGEMENT AND ASM.  IT CONTAINS  *
*   POINTERS TO OTHER CONTROL BLOCKS, FLAGS FOR I/O MANAGER USE, AND  *
*   A SIXTEEN WORD SAVE AREA.  POINTERS TO THE FIRST BUFC AND CPA ARE *
*   INSERTED BY I/O MGR AFTER THEY HAVE BEEN VERIFIED.                *
*                                                                     *
*   THE IOMB IS USED IN CONJUNCTION WITH AN IOSB AND AN SRB FOR I/O   *
*   PURPOSES IN PLACE OF THE IOB USED BY OTHER IOS DRIVERS.  THE IOMB *
*   POINTS TO THE IOSB, WHICH POINTS TO THE SRB.                      *
*                                                                     *
*    09/18/74          LEVEL=01                                       *
*    08/15/75          LEVEL=02           CHANGE FLAG=@Z40GSDT        *
*                                                                     *
**********************************************************************/
* %      GO TO IOMBPLS;             /* GO TO THE PLS VERSION         */
         MACRO
         IDAIOMB
IOMB     DSECT
         SPACE 1
         DS    0F
IOMBID   DS    XL4                  IOMB IDENTIFIER
IOMBUFC  DS    F                    POINTER TO THE FIRST BUFC
IOMCPA   DS    F                    POINTER TO THE FIRST CPA
IOMPLH   DS    F                    POINTER TO THE PLH
IOMAMB   DS    F                    POINTER TO THE AMB
IOMIQE   DS    F                    POINTER TO THE IQE
IOMECBPT DS    F                    POINTER TO THE ECB
IOMVSL   DS    F                    POINTER TO THE VIRTUAL SUBAREA LIST
IOMPGAD  DS    F                    ADDR OF CALLER TO RECEIVE CONTROL
*                                   ON COMPLETION OF I/O OPERATION
*                                   (ZEROED FOR RECORD MANAGEMENT)
IOMIOSB  DS    F                    POINTER TO THE IOSB
IOMFLAGS DS    0XL3                 INTERNAL FLAGS
IOMFL    DS    XL2                  FLAGS TO BE RESET AFTER I/O
IOMAPEND EQU   X'C0'                ABNORMAL END AND NORMAL END ENTERED
IOMNE    EQU   X'80'                NORMAL END ENTERED
IOMAE    EQU   X'40'                ABNORMAL END ENTERED
IOMPURGE EQU   X'20'                PURGE IN PROGRESS
IOMCBERR EQU   X'08'                CONTROL BLOCK VALIDITY ERROR
IOMADERR EQU   X'04'                ERROR CONVERTING VPL TO IDAL
IOMPGFIX EQU   X'02'                PAGES FIXED
IOMCSW   EQU   X'01'                CSW ADDRESS NOT VALID
*                                   SECOND BYTE OF IOMFL AND IOMFLAGS
IOMDDR   EQU   X'80'                DYNAMIC DEVICE RECONFIGURATION
IOMCPRB  EQU   X'40'                CALLER IN PROBLEM STATE    @ZA09130
IOMEEXIT EQU   X'08'                END APPENDAGE EXIT BIT     @ZA02276
IOMIRBSW EQU   X'04'                ASYNCH PROCESSING SCHED    @ZA02276
         SPACE 1
*                                   THIRD BYTE OF IOMFLAGS
IOMSTIND DS    XL1                  ONE BYTE OF STATUS INDICATORS
IOMAMUSE EQU   X'80'                IOMB CURRENTLY IN USE
IOMEOVW  EQU   X'40'                EOV WAITING FOR IOMB
IOMEOVTS EQU   X'20'                EOV HAS SET IOMLOCK
IOMEOVXC EQU   X'10'                END OF VOLUME INDICATOR
IOMLLOCK EQU   X'08'                LOCAL LOCK HELD
IOMSLOC  EQU   X'04'                SALLOC HELD                @Y30SDLC
IOMSRBM  EQU   X'02'                USER IN SRB MODE           @Y30SDLP
IOMSR    EQU   X'01'                SUSPEND/RESUME INDICATOR   @Z40GSDT
IOMCKEY  DS    XL1                  USER KEY SAVED FOR APPENDAGE USE
IOMPFERR DS    XL1                  RETURN CODE FROM PAGEFIX
IOMLOCK  DS    XL1                  END OF VOLUME LOCK
IOMNMOD  DS    H                    NUMBER OF MODULES TO BE FIXED
IOMNBUF  DS    H                    NUMBER OF BUFFERS
IOMNSEG  DS    H                    NUMBER OF CHANNEL PROGRAM SEGMENTS
IOMSAVER DS    0CL64                16 WORD SAVE AND WORK AREA
IOMSAVE0 DS    F
IOMSAVE1 DS    F
IOMSAVE2 DS    F
IOMSAVE3 DS    F
IOMSAVE4 DS    F
IOMSAVE5 DS    F
IOMSAVE6 DS    F
IOMSAVE7 DS    F
IOMSAVE8 DS    F
IOMSAVE9 DS    F
IOMSAVEA DS    F
IOMSAVEB DS    F
IOMSAVEC DS    F
IOMSAVED DS    F
IOMSAVEE DS    F
IOMSAVEF DS    F
IOMNXT1  DS    F                    POINTER TO NEXT IOMB ON CHAIN
IOMUFLD  DS    F                    USER FIELD-PTR TO IDAIOMBX FOR RM
IOMSRBP  DS    F                    ADDRESS OF SUSPENDED RB    @Z40GSDT
IOMSTCB  DS    F                    TCB FOR SUSPENDED RB       @Z40GSDT
         MEND
         EJECT
* /*      IOMB DECLARATION                                           */
* /*                                                                 */
*%IOMBPLS: ;
* /*                                                                 */
*     DCL 1 IDAIOMB BASED BDY(WORD),
*           2 IOMBID     CHAR(4),   /* IOMB IDENTIFIER               */
*           2 IOMBUFC    PTR(31),   /* FIRST BUFC ADDRESS            */
*           2 IOMCPA     PTR(31),   /* 1ST CPA IN CHAIN              */
*           2 IOMPLH     PTR(31),   /* PLH ADDRESS                   */
*           2 IOMAMB     PTR(31),   /* AMB ADDRESS                   */
*           2 IOMIQE     PTR(31),   /* IQE ADDRESS                   */
*           2 IOMECBPT   PTR(31),   /* ECB ADDRESS                   */
*           2 IOMVSL     PTR(31),   /* VIRTUAL SUBAREA LIST PTR      */
*           2 IOMPGAD    PTR(31),   /* ADDR OF CALLER TO GET CONTROL
*                                      ON COMPLETION OF I/O OPERATION
*                                      (ZEROED FOR RECORD MGMT)      */
*           2 IOMIOSB    PTR(31),   /* IOSB ADDRESS                  */
*           2 IOMFLAGS   BIT(24),   /* INTERNAL FLAGS                */
*             3 IOMFL    BIT(16),   /* FLAGS TO BE RESET AFTER I/O   */
*               4 IOMAPEND BIT(2),  /* APPENDAGE FLAGS               */
*                 5 IOMNE  BIT(1),  /* NE APPENDAGE COMPLETED        */
*                 5 IOMAE  BIT(1),  /* AE APPENDAGE COMPLETED        */
*               4 IOMPURGE BIT(1),  /* PURGE IN PROGRESS             */
*               4 *        BIT(1),  /* RESERVED                      */
*               4 IOMCBERR BIT(1),  /* CONTROL BLOCK VALIDITY ERROR  */
*               4 IOMADERR BIT(1),  /* ERROR CONVERTING VPL TO IDAL  */
*               4 IOMPGFIX BIT(1),  /* PAGES FIXED                   */
*               4 IOMCSW   BIT(1),  /* CSW ADDRESS NOT VALID         */
*               4 IOMDDR   BIT(1),  /* DYNAMIC DEVICE RECONFIGURATION*/
*               4 IOMCPRB  BIT(1),  /* PROBLEM STATE CALLER  @ZA09130*/
*               4 *        BIT(2),  /* RESERVED              @ZA09130*/
*               4 IOMEEXIT BIT(1),  /* END APPENDAGE EXIT    @ZA02276*/
*               4 IOMIRBSW BIT(1),  /* ASYNCH PROCESSING SCH @ZA02276*/
*               4 *        BIT(2),  /* RESERVED              @ZA02276*/
*             3 IOMSTIND   BIT(8),  /* STATUS INDICATORS             */
*               4 IOMAMUSE BIT(1),  /* IOMB CURRENTLY IN USE         */
*               4 IOMEOVW  BIT(1),  /* EOV WAITING FOR IOMB          */
*               4 IOMEOVTS BIT(1),  /* EOV HAS SET IOMLOCK           */
*               4 IOMEOVXC BIT(1),  /* END OF VOLUME INDICATOR       */
*               4 IOMLLOCK BIT(1),  /* LOCAL LOCK HELD               */
*               4 IOMSLOC  BIT(1),  /* SALLOC HELD           @Y30SDLC*/
*               4 IOMSRBM  BIT(1),  /* USER IN SRB MODE      @Y30SDLP*/
*               4 IOMSR    BIT(1),  /* SUSPEND/RESUME IND    @Z40GSDT*/
*           2 IOMCKEY    CHAR(1),   /* USER KEY FOR APPENDAGE USE    */
*           2 IOMPFERR   CHAR(1),   /* RETURN CODE FROM PAGE FIX     */
*           2 IOMLOCK    CHAR(1),   /* END-OF-VOLUME LOCK            */
*           2 IOMNMOD    PTR(16),   /* NUMBER OF MODULES TO BE FIXED */
*           2 IOMNBUF    PTR(16),   /* NUMBER OF BUFFERS             */
*           2 IOMNSEG    PTR(16),   /* NUMBER OF CHANNEL PGM SEGMENTS*/
*           2 IOMSAVER   BDY(WORD), /* 16 WORD SAVE AND WORK AREA    */
*             3 IOMSAVE0 PTR(31),
*             3 IOMSAVE1 PTR(31),
*             3 IOMSAVE2 PTR(31),
*             3 IOMSAVE3 PTR(31),
*             3 IOMSAVE4 PTR(31),
*             3 IOMSAVE5 PTR(31),
*             3 IOMSAVE6 PTR(31),
*             3 IOMSAVE7 PTR(31),
*             3 IOMSAVE8 PTR(31),
*             3 IOMSAVE9 PTR(31),
*             3 IOMSAVEA PTR(31),
*             3 IOMSAVEB PTR(31),
*             3 IOMSAVEC PTR(31),
*             3 IOMSAVED PTR(31),
*             3 IOMSAVEE PTR(31),
*             3 IOMSAVEF PTR(31),
*           2 IOMNXT1    PTR(31),   /* POINTER TO NEXT IOMB ON CHAIN */
*           2 IOMUFLD    PTR(31),   /* USER FIELD   -
*                                      PTR TO IDAIOMBX FOR REC MGMT  */
*           2 IOMSRBP    PTR(31),   /* ADDR OF SUSPENDED RB  @Z40GSDT*/
*           2 IOMSTCB    PTR(31);   /* TCB FOR SUSPENDED RB  @Z40GSDT*/
./ ADD NAME=IDAIOSCN
     /* REGISTER DECLARES */
* /* MACSTAT Y-2 73276/Y02113                                        */
   DCL (R0 REG(00), R1 REG(01)) PTR(24) UNRESTRICTED;/* WORK REGISTERS*/
   DCL (RACB REG(02),                   /* PTR TO ACB */
        RBASE REG(03),                  /* BASE REGISTER */
        RCORE REG(04))                  /* PTR TO WORK AREA */
                       PTR(24) RESTRICTED;
   DCL ((RAMB,                          /* PTR TO AMB */
         RES) REG(05),                  /* PTR TO RESIDENT ROUTINE */
        (RWTG,                          /* PTR TO WTG TABLE */
         R6) REG(06),                   /* WORK REGISTER */
        (RPARC,                         /* PTR TO CURRENT ENTRY IN PARM
                                        LIST */
         R7) REG(07),                   /* WORK REGISTER */
        (RWTGC,                         /* PTR TO CURRENT WTG ENTRY */
         R8) REG(08),                   /* WORK REGISTER */
        (RTIOT,                         /* POINTER TO TIOT */
         R9) REG(09))                   /* WORK REGISTER */
                 PTR(24) RESTRICTED;    /* RESTRICTED REGISTER POINTERS
                                         */
   DCL ((RUCB,                          /* PTR TO UCB */
         R10) REG(10),                  /* WORK REGISTER */
        (RDEB,                          /* PTR TO DEB */
         R11) REG(11),                  /* WORK REGISTER */
         R12 REG(12),                   /* WORK REGISTER */
         R13 REG(13),                   /* WORK REGISTER */
         RET REG(14),                   /* RETURN REGISTER */
         (RETCODE,R15)REG(15))          /* RETURN CODE REGISTER */
               PTR(24) UNRESTRICTED;    /* WORK REGISTERS */
 @EJECT;
     /* CONSTANT DECLARES */
   DCL (ON CONSTANT('1'B),              /* INDIC BIT IS SET TO 1 */
        OFF CONSTANT('0'B)) BIT(1);     /* INDIC BIT IS SET TO 0*/
   DCL (DWORDLEN CONSTANT(8),           /* BYTE LENGTH OF DWORD */
        FWORDLEN CONSTANT(4),           /* BYTE LENGTH OF WORD */
        HWORDLEN CONSTANT(2)) FIXED;    /* BYTE LENGTH OF HWORD */
   DCL (FIX CONSTANT(0),
       NOFIX CONSTANT(4)) FIXED;
   DCL (EXFGON CONSTANT('0'B),          /* USER EXIT */
       EXFGOFF CONSTANT('1'B)) BIT(1);  /* USER EXIT NOT IN PROGRESS */
   DCL (OPM CONSTANT(4),
       CLM CONSTANT(8),
       OPO CONSTANT(12),
       OPP CONSTANT(16),
       VLT CONSTANT(20),
       CLR CONSTANT(24),
       PRE CONSTANT(32),
       DUM CONSTANT(28)) FIXED;
        DCL (MASTPOOL CONSTANT(250),/* SUBPOOL FOR MASTER BLOCK */
        SRBPOOL CONSTANT(245),       /* SUBPOOL FOR SRB,IOSB @Y021130*/
        RDEBPOOL CONSTANT(230),     /* SUBPOOL FOR REAL DEB  @Y021130*/
        DDEBPOOL CONSTANT(230),     /* SUBPOOL FOR DUMMY DEB @Y021130*/
        FIXDPOOL CONSTANT(245),     /* SUBPOOL FOR FIXED CORE */
        PROTPOOL CONSTANT(252),     /* SUBPOOL FOR PROT BLKS @Y021130*/
        LPMBPOOL CONSTANT(252),         /* SUBPOOL FOR LPMB */
        EDBPOOL CONSTANT(252),          /* SUBPOOL FOR EDB */
        CATPOOL CONSTANT(231),    /* CATALOG UNFIXED SUBPOOL @Y021130*/
        CATPOOL2 CONSTANT(239),     /* CATALOG FIXED SUBPOOL @Y021130*/
        WKPOOL CONSTANT(252),
        AMBLPOOL CONSTANT(252)) FIXED;  /* SUBPOOL FOR AMBL */
     /*  BASED DECLARES */
   DCL 1 MSTRBLK BASED,                 /* MASTER BLOCK FORMAT */
     2 MSTRHDR CHAR(16),
       3 MSTRNEXT PTR,                  /*   NEXT MASTER BLOCK */
       3 MSTRLAST PTR,                  /*   LAST MASTER BLOCK */
       3 *       FIXED(8),              /*                   @Y021130*/
       3 MSTRKEY FIXED(8),              /*  SUBPOOL KEY      @Y021130*/
       3 MSTRPOOL FIXED(8),             /*  SUBPOOL                 */
       3 MSTRCODE FIXED(8),             /*  FLAGS            @Y021130*/
       3 MSTRLEN FIXED(31),            /*  LENGTH THIS BLOCK @Y021130*/
     2 MSTRCORE CHAR(*);                /* REST OF MASTER BLOCK */
    DCL 1 ENQPARML BDY(WORD),       /* ENQ/DEQ PARAMETER LIST */
          2 ENQTCB PTR(31),         /* TCB FOR DIRECTED ENQ/DEQ */
          2 ENQPROPR,
            3 EQNOPT1 BIT(8),
              4 ENQEND BIT(1),      /* 1 INDICS END OF LIST */
              4 ENQNEW BIT(1),      /* 0 INDICS NES FORM OF PARM LIST */
              4 * BIT(5),
            4 ENQDIR BIT(1),        /* 1 INDICS DIRECTED ENQ/DEQ */
            3 ENQRLEN FIXED(8),     /* RNAME LENGTH */
            3 ENQOPT2 BIT(8),       /* OPTION BYTE 2 */
              4 ENQSHR BIT(1),      /* ENQ FOR SHARED CONTROL */
            3 ENQRETC FIXED(8),     /* ENQ/DEQ RETURN CODE */
            3 ENQQNADR PTR(31),     /* QNAME ADDRESS */
          3 ENQRNADR PTR(31),       /* RNAME ADDRESS */
          3 ENQUCADR PTR(31);       /* UCB ADDR FOR RESERVE */
    DCL 1 RNAME CHAR(8),            /* RNAME FOR ENQ/DEQ */
          2 * CHAR(3),              /* CI NBR FOR DS (DSN) */
        2 * CHAR(4),                /* ACB ADDR FOR CATALOG */
          2 * CHAR(1);              /* CONTROL CHAR - O=OUTPUT */
                                    /*                I=NOT OUTPUT */
                                    /*                B=BUSY */
./ ADD NAME=IDAIRD
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
*        DCL 1 IDAIXH BASED BDY(WORD),  /* INDEX RECORD HEADER       */
*              2 IXHLL        CHAR(2),  /*                           */
*              2 IXHFLPLN     CHAR(1),  /* LENGTH OF F + L + POINTER */
*              2 IXHPTLS      CHAR(1),  /* POINTER LENGTH SPEC.      */
*                                       /*   X'01'  1 BYTE POINTER   */
*                                       /*   X'03'  2 BYTE POINTER   */
*                                       /*   X'07'  3 BYTE POINTER   */
*              2 IXHBRBA      PTR(32),  /*   BASE POINTER            */
*              2 IXHHP        PTR(32),  /*   HORIZONTAL PTR          */
*              2 IXHXX        PTR(32),  /*                           */
*              2 IXHLV        PTR(8),   /* LEVEL NUMBER              */
*              2 IXHFLGS      CHAR(1),  /* CONTROL INFORMATION FLAGS */
                                        /*  ALL BITS RESERVED        */
                                        /*  CURRENTLY SET TO ZERO    */
*              2 IXHFSO       PTR(15),  /*   OFFSET TO INSERT SPACE  */
*              2 IXHLEO       PTR(15),  /*   OFFSET TO LAST ENTRY    */
*              2 IXHSEO       PTR(15);  /*   OFFSET TO FIRST SECT ENT*/
*        DCL 1 IDAIBFLP  BASED,         /*  IX F,L,PTR 1 BYTE F,L    */
*              2 IBFLPF       PTR(8),   /*  F -FRONT COMPRESSION     */
*              2 IBFLPL       PTR(8),   /*  L -LENGTH OF KEY CHARS   */
*              2 IBFLP3       CHAR(3),  /*    3 BYTE PTR             */
*                3 IBFLP2     CHAR(2),  /*    2 BYTE PTR             */
*                  4 IBFLP1   CHAR(1);  /*    1 BYTE PTR             */
*        DCL 1 IDASELL BASED,           /*   SECTION ENTRY LL        */
*              2 IXSELL       CHAR(2);  /*                           */
*        DCL 1 IDAIXK  BASED,           /*                           */
*              2 IXKEY        CHAR(1);  /*   ENTRY KEY CHARACTERS    */
./ ADD NAME=IDAIXSPL
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAIXSPL                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = INDEX SEARCH PARAMETER LIST                 */
*/*                                                                  */
*/*   FUNCTION = USED TO SEARCH A VSAM INDEX RECORD FOR A PARTICULAR */
*/*              KEY                                                 */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM RECORD MANAGEMENT                            */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
*     DCL  1 IDAIXSPL  BASED,           /* INDEX SEARCH PARM LIST    */
*            2 IXSSTRBA  PTR(32),       /* START SEARCH RBA          */
*            2 IXSBUFC   PTR(31),       /* PTR TO INDEX BUFC         */
*            2 IXSARG    PTR(31),       /* PTR TO SEARCH ARGUMENT    */
*            2 IXSTLN    PTR(8),        /* TERMINATE LEVEL NO.       */
*            2 IXSILN    PTR(8),        /* INITIAL LEVEL NO.         */
*            2 IXSKLEN   PTR(15),       /* KEY LENGTH        @X04SVLC*/
*            2 IXSNOSR   PTR(8),        /* NBR CIS -1 IN RCD @X04SVLC*/
*            2 IXSBFLG   CHAR(1),       /* SCIB FLAGS                */
*             3 IXSSSRH  BIT(1),        /* SECTION SEARCH            */
              3 IXSLELV  BIT(1),        /* LAST ENTRY IN LEVEL       */
              3 *        BIT(6),        /* UNUSED                    */
*            2 IXSEKON   PTR(8),        /* LENGTH OF F+L+POINTER     */
*            2 IXSPEC    PTR(8),        /* COUNT ON PREVIOUS ENTRY   */
*            2 IXSHEP    PTR(31),       /* POINTER TO ENTRY FOUND    */
*            2 IXSSEP    PTR(31),       /* POINTER TO SECT.          */
*            2 IXSLEP    PTR(31);       /* POINTER TO LOW ENTRY IN   */
*                                       /*  THE SECTION              */
./ ADD NAME=IDALPMB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDALPMB                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = LOGICAL TO PHYSICAL MAPPING BLOCK           */
*/*                                                                  */
*/*   FUNCTION = USED TO MAP THE PHYSICAL ATTRIBUTES OF A VSAM DATA  */
*/*                SET                                               */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE IDAEDB             */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 13 AUG 74                                */
*/*                                                                  */
*/********************************************************************/
*  DCL 1 IDALPMB BASED,                    /* LOGICAL TO PHYSICAL  */
*                                          /* MAPPING BLOCK        */
*        2 LPMBID CHAR(1),                 /* LPMB IDENTIFER       */
*        2 LPMBFLGS BIT(8),                /* FLAG BYTE ONE        */
*          3 LPMBRPS BIT(1),               /* ON FOR RPS DEVICE    */
*          3 LPMREPL BIT(1),               /* REPLICATED RECORDS   */
*          3 LPMSS   BIT(1),               /* SEQUENCE SET W/DATA  */
*          3 LPMBTOFL BIT(1),              /* MVM TRK OFLOW  @Y30DSJH*/
*          3 LPMBSSTH BIT(1),              /* ON--SET SECTOR TABLE
*                                             IS HERE        @X04SVMR*/
*          3 *        BIT(3),              /* UNUSED         @Y30DSJH*/
*        2 LPMBLEN FIXED(15),              /* LENGTH OF LPMB       */
*        2 LPMAUSZ FIXED(31),              /* BYTES PER ALLOC UNIT */
*        2 LPMBPTRK FIXED(31),             /* BYTES PER TRACK      */
*        2 LPMBLKSZ FIXED(31),             /* PHYSICAL BLOCKSIZE   */
*        2 LPMTRKAU FIXED(15),             /* TRACKS PER ALLOC UNIT*/
*        2 LPMTPC FIXED(15),               /* TRACKS PER CYLINDER  */
*        2 LPMBLKTR FIXED(15),             /* BLOCKS PER TRACK     */
*        2 * FIXED(15),                    /* NOT USED       @X04SVLC*/
*        2 LPMBEXT PTR(31),                /* RESERVED FOR PTR TO LPMB
*                                             EXTENSION WHEN DEFINED
*                                                            @X04SVLC*/
*        2 LPMBSST CHAR(*);                /* SET SECTOR TAB @X04SVLC*/
./ ADD NAME=IDAOCECN
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAOCECN                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = CONSTANTS USED BY OPEN/CLOSE/EOV MODULES.   */
 /*                                                                  */
 /*   FUNCTION = THESE ARE SOME CONSTANTS AND REGISTERS COMMONLY     */
 /*              USED BY THE OPEN/CLOSE/EOV MODULES.                 */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 2 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
     /* REGISTER DECLARES */
   DCL (R0 REG(00), R1 REG(01)) PTR(31) UNRESTRICTED;/* WORK REGISTERS*/
   DCL (RACB REG(02),                   /* PTR TO ACB */
        RBASEA REG(03),                 /* BASE REGISTER */
       (RBASEB,R12) REG(12),            /* BASE REGISTER */
        R13 REG(13),                    /* PTR TO SAVE AREA */
       (RCORE,R4) REG(04))              /* PTR TO OPEN/CLOSE WKAREA */
                       PTR(31) RESTRICTED;
   DCL (R5 REG(05),                    /* WORK REGISTER */
         R6 REG(06),                   /* WORK REGISTER */
         R7 REG(07),                   /* WORK REGISTER */
         R8 REG(08),                   /* WORK REGISTER */
        (RTIOT,                         /* POINTER TO TIOT */
         R9) REG(09),                  /* WORK REGISTER */
        (RUCB,                          /* PTR TO UCB */
         R10) REG(10),                  /* WORK REGISTER */
        (RDEB,                          /* PTR TO DEB */
         R11) REG(11),                  /* WORK REGISTER */
         RET REG(14),                   /* RETURN REGISTER */
         (RETCODE,R15)REG(15))          /* RETURN CODE REGISTER */
               PTR(31) UNRESTRICTED;    /* WORK REGISTERS */
     /* CONSTANT DECLARES */
   DCL (ON CONSTANT('1'B),              /* INDIC BIT IS SET TO 1 */
        OFF CONSTANT('0'B)) BIT(1);     /* INDIC BIT IS SET TO 0*/
   DCL (DWORDLEN CONSTANT(8),           /* BYTE LENGTH OF DWORD */
        FWORDLEN CONSTANT(4),           /* BYTE LENGTH OF WORD */
        HWORDLEN CONSTANT(2)) FIXED;    /* BYTE LENGTH OF HWORD */
   DCL (FIX CONSTANT(0),
       NOFIX CONSTANT(4)) FIXED;
   DCL (EXFGON CONSTANT('0'B),          /* USER EXIT */
       EXFGOFF CONSTANT('1'B)) BIT(1);  /* USER EXIT NOT IN PROGRESS */
   DCL (OP1 CONSTANT(4),
       CLM CONSTANT(8),
       OPO CONSTANT(12),
       OPP CONSTANT(16),
       VLT CONSTANT(20),
       CLR CONSTANT(24),
       DUM CONSTANT(28),
       PRE CONSTANT(32),
       RCM CONSTANT(36),
       CLD CONSTANT(40),
       OP2 CONSTANT(44),
       CLC CONSTANT(48)) FIXED;
 %IF ENV='VS2'  %THEN
    %GOTO IDAOCE1;
   DCL PAGE CONSTANT(2048) FIXED(31);   /* VS1 PAGE SIZE    */
   DCL (RDEBPOOL CONSTANT(234),     /* SUBPOOL FOR REAL DEB */
        DDEBPOOL CONSTANT(252),         /* SUBPOOL FOR DUMMY DEB */
        FIXDPOOL CONSTANT(234),     /* SUBPOOL FOR FIXED CORE */
        FIXSTRPL CONSTANT(234),     /* SUBPOOL FOR FIXED STRING BLK */
        FIXUPGPL CONSTANT(234),     /* SUBPOOL FOR FIXED UPGRADE STR */
        CATPOOL CONSTANT(241),        /* CATALOG BLOCK SUBPOOL  */
        PRTSPPL CONSTANT(252),     /* SUBPOOL FOR PROTECTED SPHERE BLK*/
 %GOTO IDAOCE2;
 %IDAOCE1: ;
   DCL PAGE CONSTANT(4096) FIXED(31);   /* VS2 PAGE SIZE    */
   DCL (RDEBPOOL CONSTANT(230),     /* SUBPOOL FOR REAL DEB */
        DDEBPOOL CONSTANT(230),     /* SUBPOOL FOR DUMMY DEB */
        FIXDPOOL CONSTANT(245),     /* SUBPOOL FOR FIXED CORE */
        FIXSTRPL CONSTANT(245),     /* SUBPOOL FOR FIXED STRING BLK */
        FIXUPGPL CONSTANT(245),     /* SUBPOOL FOR FIXED UPGRADE STR */
        CATPOOL CONSTANT(231),      /* CATALOG BLOCK SUBPOOL */
        FCATPOOL CONSTANT(231),     /* FETCH PROTECTED CATALOG BLOCK */
        SCATPOOL CONSTANT(241),     /* STORE PROTECTED CATALOG BLOCK */
        PRTSPPL CONSTANT(241),     /* SUBPOOL FOR PROTECTED SPHERE BLK*/
        GSRSPOOL CONSTANT(241),     /* SUBPOOL FOR GSR CONTROL BLKS. */
 %IDAOCE2: ;
        WKPOOL CONSTANT(252),        /* SUBPOOL FOR GENERAL USE */
        EDBPOOL CONSTANT(252),          /* SUBPOOL FOR EDB */
        VATPOOL CONSTANT(252),     /* SUBPOOL FOR VAT            */
        SPBLKPL CONSTANT(250),     /* SUBPOOL FOR SPHERE BLK     */
        VMTPOOL CONSTANT(252),      /* SUBPOOL FOR VMT           */
        BIBPOOL CONSTANT(252),      /* SUBPOOL FOR BIB           */
        USERPOOL CONSTANT(250),     /* SUBPOOL FOR USER BLK       */
        PRTBLKPL CONSTANT(252),     /* PROTECTED USER BLK        */
        STRBLKPL CONSTANT(250),     /* SUBPOOL FOR STRING BLOCK   */
        UPSTRPL CONSTANT(250),      /* SUBPOOL FOR UPGRADE STR BLK */
        BFRPOOL CONSTANT(250),      /* SUBPOOL FOR BUFFER BLOCK  */
        UPGBFRPL CONSTANT(250),     /* SUBPOOL FOR UPGRADE BFR BLK */
        CMBPOOL CONSTANT(252),      /* SUBPOOL FOR CMB           */
        WSHDPL CONSTANT(250),     /* SUBPOOL FOR WSHD */
        AMBLPOOL CONSTANT(252)) FIXED;  /* SUBPOOL FOR AMBL */
./ ADD NAME=IDAOPWRK
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAOPWRK                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM OPEN ACB WORK AREA.                    */
 /*                                                                  */
 /*   FUNCTION = THIS MACRO DEFINES THE STRUCTURE OF THE OPEN VSAM   */
 /*              ACB WORK AREA. THE ACB WORK AREA IS THE COMMON WORK */
 /*              AREA USED BY VSAM OPEN ROUTINES.                    */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE ACB WORK AREA IS POINTED TO BY   */
 /*                             REGISTER 4 (RCORE).                  */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192A.                         */
 /*                                                                  */
 /*   STATUS = VS2 RELEASE 4                                 @Z40ESSR*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 7/22/75                          @Z40WSRL*/
 /*                                                                  */
 /********************************************************************/
    DECLARE
      1 IDAOPWRK BASED(RCORE),      /* ACB WORK AREA                 */
        3 OPWSUBPL FIXED(8),        /* SUBPOOL OF WORK AREA          */
        3 OPWLENTH FIXED(24),       /* LENGTH OF WORK AREA           */
        3 OPWID CHAR(8),            /* BLOCK IDENTIFIER              */
        3 OPWFLGS1 BIT(8),          /* SPHERE FLAGS FOR SYSTEM DATA
                                       SETS                          */
          5 OPWCAT   BIT(1),        /* CATALOG OPEN                  */
          5 OPWSCRA  BIT(1),        /* SYS CATLG RECOVERY AREA OPEN  */
          5 OPWVVIC  BIT(1),        /* VVIC DATA SET                 */
            6 OPWSDS BIT(1),        /* IND SYSTEM DATA SET   @Z40WSRL*/
          5 *        BIT(5),        /* RESERVED FOR SYSTEM DATA SETS */
        3 OPWFLGS2 BIT(8),          /* SPHERE FLAGS NON-SYSTEM
                                       DATA SETS                     */
          5 OPWUCRA  BIT(1),        /* USER CATLG RECOVERY AREA OPEN */
          5 OPWIXDT  BIT(1),        /* INDEX BEING OPENED AS AN ESDS */
          5 OPWAIXDT BIT(1),        /* AIX OPENED FOR END USE        */
          5 OPWDUMMY BIT(1),        /* OPEN DUMMY DATA SET           */
          5 *        BIT(4),        /* RESERVED                      */
        3 OPWFLGS3 BIT(8),          /* INDICATORS FOR IDA0192F       */
          5 OPWDAVAT BIT(1),        /* DUMMY AMBL ADDED TO VAT       */
          5 OPWPUPGR BIT(1),        /* PATH ALSO IN UPGRADE SET      */
          5 OPWUPGOP BIT(1),        /* UPGRADE SET OPENED            */
          5 OPWNOWRK BIT(1),        /* MOD WORK AREA DOES NOT EXIST  */
          5 OPWRSTRT BIT(1),        /* RESTART IN PROGRESS           */
          5 *        BIT(3),        /* UNUSED                        */
        3 OPWFLGS4 BIT(8),          /* AUTHORIZATION LEVEL           */
          5 OPWFULL  BIT(1),        /* FULL ACCESS                   */
          5 OPWCINV  BIT(1),        /* CONTROL INTERVAL ACCESS       */
          5 OPWUPD   BIT(1),        /* UPDATE ACCESS                 */
          5 *        BIT(5),        /* NOT USED                      */
        3 OPWBIB PTR(31),           /* PTR TO BIB                    */
        3 OPWCOMWA PTR(31),         /* PTR TO OPEN COMMON WORK AREA  */
        3 OPWIDF,                   /* CLUSTER IDENTIFIER            */
          5 OPWCACB PTR(31),        /* ADDRESS OF CATALOG ACB        */
          5 OPWDCI PTR(24) BDY(WORD), /* CINV NO. OF DATA COMP       */
          5 OPWQ BIT(8),            /* QUALIFIER FOR TYPE OF OPEN    */
            7 OPWDDC  BIT(1),       /* CONNECT BY DD NAME            */
            7 OPWGSR  BIT(1),       /* OPENED FOR GSR                */
            7 OPWLSR  BIT(1),       /* OPENED FOR LSR                */
            7 OPWFSTP BIT(1),       /* OPENED FOR ICI                */
            7 OPWUBF  BIT(1),       /* OPENED FOR USER BUFFERING     */
            7 OPWKSDS BIT(1),       /* OPENED AS KSDS                */
            7 OPWESDS BIT(1),       /* OPENED AS ESDS                */
            7 OPWDFR  BIT(1),       /* OPENED WITH DEFER WRT OPTION  */
        3 OPWVSMPL,                 /* O/C/EOV VIRTUAL STORAGE
                                       MANAGER (VSM) PARAMETER LIST  */
          5 OPWVMANC PTR(31),       /* PTR TO ANCHOR BLOCK           */
          5 OPWVMSP  FIXED(8),      /* SUBPOOL FOR DIRECT REQUEST    */
          5 OPWVMLNG FIXED(24),     /* AMOUNT OF STORAGE REQUESTED   */
          5 OPWVMADR PTR(31),       /* ADDR OF GOTTEN STORAGE, ZERO
                                       IF STORAGE NOT OBTAINED       */
          5 OPWVMTYP FIXED(8),      /* REQUEST TYPE                  */
          5 OPWVMFLG BIT(8),        /* INDICATOR FLAGS               */
            7 OPWVMPGB BIT(1),      /* GET STORAGE ON A PAGE BNDY    */
            7 OPWVMKE5 BIT(1),      /* GET STORAGE IN KEY 5          */
            7 OPWVMDXK BIT(1),      /* GET STORAGE IN GSR KEY
                                       NOTE - IF NOT KEY 5 & NOT GSR,
                                       GET CORE IN KEY 0     @Z40ESSR*/
            7 OPWVMSRB BIT(1),      /* IND THIS IS A SPECIAL REQ BLK */
            7 OPWVMNSL BIT(1),      /* DO NOT BLD A CSL FOR THIS REQ */
            7 OPWVMTCB BIT(1),      /* CORE IS TO BE OWNED BY JOBSTEP
                                       TCB                           */
          5 * CHAR(2),              /* NOT USED                      */
        3 OPWVSMWA,                 /* O/C/EOV VSM WORK AREA         */
          5 OPWVANCP PTR(31),       /* PTR TO ADDR OF FIRST HEB HDR
                                       ELEM ASSOCIATED WITH THIS REQ */
          5 OPWVTBLP PTR(31),       /* PTR TO REQUEST TABLE USED BY
                                       THE GETSPACE ROUTINE          */
          5 OPWVCSLP PTR(31),       /* USED TO SCAN FOR A CSL ENTRY  */
          5 OPWVCSLE PTR(31),       /* POINTER TO CSL ENTRY          */
          5 OPWVHDRE PTR(31),       /* POINTER TO HDR ELEMENT        */
          5 OPWVR13  PTR(31),       /* SAVE AREA ADDRESS SAVE AREA   */
          5 OPWVSAVE(4) FIXED(31),  /* SAVE AREA FOR IDA0192M        */
          5 OPWVGSPL(3),            /* GET SPACE PARAMETER LISTS     */
            7 OPWVGSSP FIXED(8),    /* SUBPOOL NUMBER                */
            7 OPWVGETL FIXED(24),   /* LENGTH OF GOTTEN CORE         */
            7 OPWVGSPT PTR(31),     /* POINTER TO GOTTEN CORE        */
            7 OPWVGFLG BIT(8),      /* FLAGS FOR GET SPACE REQUEST -
                                       SEE OPWVMFLG ABOVE FOR A
                                       DESCRIPTION OF BIT SETTINGS   */
            7 OPWVREQL FIXED(24),   /* LENGTH OF REQUEST             */
          5 OPWVANCS PTR(31),       /* BIB ANCHOR PTR FOR SPHERE
                                       BLOCK REQUESTS                */
          5 OPWVLSAV,               /* SAVE AREA FOR SETLOCK         */
            7 OPWVRG12 PTR(31),     /* SAVE AREA FOR REG 12          */
            7 OPWVRG13 PTR(31),     /* SAVE AREA FOR REG 13          */
          5 OPWVFMPL,               /* FREEMAIN PARAMETER LIST       */
            7 OPWVFMSP FIXED(8),    /* FREEMAIN SUBPOOL NUMBER       */
            7 OPWVFMLN FIXED(24),   /* FREEMAIN LENGTH               */
            7 OPWVFMPT PTR(31),     /* FREEMAIN POINTER              */
        3 OPWSAVE,                  /* PTR'S TO SAVE LISTS           */
          5 OPWCSL PTR(31),         /* PTR TO CORE SAVE LIST         */
          5 OPWESL PTR(31),         /* PTR TO ENQ SAVE LIST          */
          5 OPWPSL PTR(31),         /* PTR TO PAGE FIX SAVE LIST     */
          5 OPWDSL PTR(31),         /* PTR TO DEB SAVE LIST          */
          5 OPWSSL PTR(31),         /* PTR TO SWAP SAVE LIST         */
        3 OPWCURPT PTR(31),         /* PTR TO CLUSTER BEING PROCESSED*/
        3 OPWXAMBL PTR(31),         /* PTR TO CURRENT AMBL           */
        3 OPWCAMBL PTR(31),         /* PTR TO AMBL CONNECTING TO     */
        3 OPWBCON PTR(31),          /* PTR TO BASE AMBL CONNECTING TO*/
        3 OPWPCON PTR(31),          /* PTR TO PATH AMBL CONNECTING TO*/
        3 OPWBAMBL PTR(31),         /* PTR TO AMBL FOR BASE          */
        3 OPWPAMBL PTR(31),         /* PTR TO AMBL FOR PATH          */
        3 OPWCRA CHAR(6),           /* CRA VOLUME SERIAL NUMBER      */
        3 * CHAR(1),                /* NOT USED                      */
        3 OPWCATTR CHAR(1),         /* MVM CLUSTER ATTR FLAG         */
          5 * BIT(6),               /* NOT USED              @Z40WSRL*/
          5 OPWSWSP BIT(1),         /* SWAP SPACE            @Z40WSRL*/
          5 OPWPSDS BIT(1),         /* PAGE SPACE DATA SET           */
        3 OPWUPT PTR(31),           /* PTR TO UPT                    */
        3 OPWUACB PTR(31),          /* PTR TO USER ACB               */
        3 OPWWRKPT PTR(31),         /* PTR TO CURRENT AMBWK AREA     */
        3 OPWDTWRK PTR(31),         /* PTR TO DATA AMB WORK AREA     */
        3 OPWIXWRK PTR(31),         /* PTR TO INDEX AMB WORK AREA    */
        3 OPWCTCB PTR(31),          /* PTR TO CURRENT TCB            */
        3 OPWJSTCB PTR(31),         /* PTR TO JOB STEP TCB           */
        3 OPWTIOT PTR(31),          /* PTR TO TIOT ENTRY             */
        3 OPWBUFND FIXED(31),       /* NUMBER OF DATA BUFFERS        */
        3 OPWBUFNI FIXED(31),       /* NUMBER OF INDEX BUFFERS       */
        3 OPWCSTRN FIXED(8),        /* CURRENT STRING NUMBER         */
        3 OPWSTRNO FIXED(8),        /* PATH STRING NO. IF PATH
                                       PROCESSING OTHERWISE BASE     */
        3 OPWBSTRN FIXED(8),        /* BASE STRING NO. IF PATH
                                       PROCESSING                    */
        3 * CHAR(1),                /* NOT USED                      */
        3 OPWDACB CHAR(52),         /* DUMMY ACB FOR OPENING BASE    */
        3 OPWSFI CHAR(12),          /* SUB-FUNCTION INFORMATION      */
        3 OPWERMAP CHAR(256),       /* PPCODE TO ACBERFLG MAP        */
        3 OPWSAVEA PTR(31),         /* SAVE AREA FOR RETURN ADDRESS  */
        3 OPWBSECL,                 /* BASE CLUSTER INFORMATION      */
          5 * BIT(8),               /* RESERVED FOR FLAGS            */
          5 OPWBDTCI PTR(24),       /* BASE DATA CINV NUMBER         */
          5 * BIT(8),               /* RESERVED FOR FLAGS            */
          5 OPWBIXCI PTR(24),       /* BASE INDEX CINV NUMBER        */
        3 OPWPTAIX,                 /* PATH AIX INFORMATION          */
          5 * BIT(8),               /* RESERVED FOR FLAGS            */
          5 OPWPDTCI PTR(24),       /* PATH AIX DATA CINV NUMBER     */
          5 * BIT(8),               /* RESERVED FOR FLAGS            */
          5 OPWPIXCI PTR(24),       /* PATH AIX INDEX CINV NUMBER    */
        3 OPWNOUPG FIXED(8),        /* NO. OF UPGRADE AIX'S          */
        3 OPW2YPLH PTR(24),         /* PLHNXT PTR FOR 2Y/2Z.         */
        3 OPWUPAIX (*),             /* UPGRADE AIX INFORMATION       */
          5 * BIT(8),               /* RESERVED FOR FLAGS            */
          5 OPWUDTCI PTR(24),       /* UPGRADE AIX DATA CINV NUMBER  */
          5 * BIT(8),               /* RESERVED FOR FLAGS            */
          5 OPWUIXCI PTR(24);       /* UPGRADE AIX INDEX CINV NUMBER */

    /*****************************************************************/
    /*  MAP FOR REFERENCING CURRENT CLUSTER INFORMATION              */
    /*****************************************************************/
    DECLARE
      1 OPWCURCL BASED(OPWCURPT),   /* CLUSTER INFORMATION MAP       */
        2 OPWCFLG1 BIT(8),          /* CLUSTER FLAGS SET BY SPHERE
                                       OPEN                          */
          3 OPWBASE BIT(1),         /* OPEN BASE CLUSTER             */
          3 OPWPATH BIT(1),         /* OPEN PATH AIX                 */
          3 OPWUPGR BIT(1),         /* OPEN UPGRADE AIX              */
          3 OPWSVWRK BIT(1),        /* DON'T FREE AMB WORK AREAS     */
          3 OPWPRTBL BIT(1),        /* PARTIAL CONTROL BLOCK BUILD   */
        2 OPWCDTCI PTR(24),         /* CINV NO. OF DATA COMPONENT    */
        2 OPWFLG2 BIT(8),           /* CLUSTER FLAGS SET BY CLUSTER
                                       OPEN                          */
          3 OPWDOPEN BIT(1),        /* OPEN INDR ON IN CTLG FOR DATA */
          3 OPWMODWK BIT(1),        /* MODULE WORK AREA EXISTS       */
          3 OPWEMPUP BIT(1),        /* IND EMPTY UPGRADE DS          */
          3 OPWERR2B BIT(1),        /* IND TERMINATING ERROR IN 192B */
          3 OPWIOPEN BIT(1),        /* OPEN INDR ON IN CTLG FOR INDX */
        2 OPWCIXCI PTR(24);         /* CINV NO. OF INDEX COMPONENT   */

    /*****************************************************************/
    /*  THE FOLLOWING CONSTANTS DEFINE THE REQUEST TYPE CODES USED IN*/
    /*  THE VIRTUAL STORAGE MANAGER PARAMETER LIST TO CALL IDA0192M. */
    /*  CODES 0 THROUGH 127 ARE RESERVED FOR REQUESTING SPACE IN     */
    /*  CLUSTER RELATED BLOCKS AS THESE CODES ARE USED TO INDEX THE  */
    /*  CORRESPONDING HEB HEADER ELEMENT ENTRY IN THE CMB.  CODES    */
    /*  128 THROUGH 255 ARE USED FOR ALL OTHER TYPE REQUESTS.        */
    /*****************************************************************/
    DECLARE                         /* REQUEST TYPE CODES            */
      USERBLK  FIXED(8) CONSTANT(1), /* USER BLOCK                   */
      PROTBLK  FIXED(8) CONSTANT(2), /* PROTECT BLOCK                */
      STRBLK   FIXED(8) CONSTANT(3), /* NON-PROTECTED STRING BLOCK   */
      UPSTRBLK FIXED(8) CONSTANT(4), /* NON-PROT UPGRADE STRING BLK  */
      FXSTRBLK FIXED(8) CONSTANT(5), /* GLOBAL FIXED STRING BLOCK    */
      FUSTRBLK FIXED(8) CONSTANT(6), /* GLBL UPGRADE FIXED STRING BLK*/
      BFRBLK   FIXED(8) CONSTANT(7), /* BUFFER BLOCK                 */
      UPBFRBLK FIXED(8) CONSTANT(8), /* UPGRADE BUFFER BLOCK         */
      DEBBLK   FIXED(8) CONSTANT(9), /* DEB BLOCK                    */
      EDBBLK   FIXED(8) CONSTANT(10), /* EDB BLOCK                   */
      PRSTRBLK FIXED(8) CONSTANT(11), /* PROTECTED STRING BLK        */
      PRUSTRBK FIXED(8) CONSTANT(12), /* PROT UPGR STRING BLK        */
      FIXEDBLK FIXED(8) CONSTANT(13), /* FIXED BLOCK         @ZA04718*/
      SPHBLK   FIXED(8) CONSTANT(128), /* SPHERE BLOCK               */
      PRSPHBLK FIXED(8) CONSTANT(129), /* PROTECTED SPHERE BLOCK     */
      FREECLSP FIXED(8) CONSTANT(130), /* FREE EXCESS SPACE IN CLUSTER
                                          RELATED BLOCKS             */
      FREESPH  FIXED(8) CONSTANT(131), /* FREE EXCESS SPACE IN SPHERE
                                          BLOCKS                     */
      ERRCLNUP FIXED(8) CONSTANT(132), /* PERFORM ERROR CLEAN UP     */
      DIRCTREQ FIXED(8) CONSTANT(133), /* DIRECT REQUEST FOR CORE    */
      PSAMBLBK FIXED(8) CONSTANT(134), /* PROTECTED AMBL BLOCK       */
      FREESREQ FIXED(8) CONSTANT(135); /* FREE SPECIAL REQ BLKS      */
./ ADD NAME=IDAPATCH
*%IDAPATCH:  MACRO;
*  ANS ('GEN DATA; ');
*  ANS (MACLIST(1)    ) SKIP COL(1);
*  ANS ('CSECT ') COL(10);
*  ANS ('PATCH     DC    ((*-@PSTART)/20)X''00''') SKIP COL(1);
*  ANS ('DEFINE 5 PERCENT PATCH AREA') COL(41);
*  ANS ('ORG   PATCH') SKIP COL(10);
*  ANS ('RESET LOCATION COUNTER') COL(41);
*  ANS ('DC    50X''00''') SKIP COL(10);
*  ANS ('PROVIDE A 50 BYTE MINIMUM') COL(41);
*  ANS ('ORG   ,') SKIP COL(10);
*  ANS ('RESET LOCATION TO HIGHER VALUE') COL(41);
*  ANS ('@DATD    DSECT') SKIP COL(1);
*  ANS ('GO BACK TO DATA DSECT') COL(41);
*  ANS ('@ENDGEN') SKIP COL(1);
*%END IDAPATCH;
*%GOTO PATCH1;
         MACRO
         IDAPATCH
PATCH    DC    ((*-@PSTART)/20)X'00'    DEFINE 5 PERCENT PATCH AREA
         ORG   PATCH                    RESET FOR OVERLAY
         DC    50X'00'                  PROVIDE A 50 BYTE MINIMUM
         ORG   ,                        RESET COUNTER TO HIGHER VALUE
         MEND
*%PATCH: ;
./ ADD NAME=IDAPCTT
*/********************************************************************/
*/*                                                                  */
*/* MODULE-NAME = IDAPCTT                                            */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = PCTT (PRIVATE CATALOG TERMINATION TABLE)      */
*/*                                                                  */
*/* COPYRIGHT = NONE                                                 */
*/*                                                                  */
*/* STATUS = VERSION 1 - JULY 9, 1973                                */
*/*                                                                  */
*/* FUNCTION = THE PRIVATE CATALOG TERMINATION TABLE, PCTT,          */
*/*   IS USED TO RECORD THE OPEN STATUS OF PRIVATE CATALOGS.         */
*/*   ONE OF ITS PRIMARY PURPOSES IS TO ENABLE PROPER CLEANUP        */
*/*   AND FREEING OF CONTROL BLOCKS DURING TASK TERMINATION.         */
*/*   (MOST OF THE CATALOG CONTROL BLOCKS ARE IN GLOBAL STORAGE.)    */
*/*   THERE IS ONE PCTT PER MEMORY. THE PCTT IS LOCATED FROM THE     */
*/*   ADDRESS SPACE CONTROL BLOCK, ASCB, FIELD - ASCBPCTT.           */
*/*                                                                  */
*/* NOTES = THE LABEL 'PCTT' IS DECLARED BASED ON ASCBPCTT.          */
*@LISTPUSH;
*@LISTOFF;
*/*                                                                  */
*/*    DEPENDENCIES = N/A                                            */
*/*                                                                  */
*/*    RESTRICTIONS = N/A                                            */
*/*                                                                  */
*/*    REGISTER-CONVENTIONS = N/A                                    */
*/*                                                                  */
*/*    PATCH-LABEL = N/A                                             */
*/*                                                                  */
*/* MODULE-TYPE = MAPPING MACRO                                      */
*/*                                                                  */
*/*    PROCESSOR = PLS2                                              */
*/*                                                                  */
*/*    MODULE-SIZE = N/A                                             */
*/*                                                                  */
*/*    ATTRIBUTES = N/A                                              */
*/*                                                                  */
*/* ENTRY-POINT = N/A                                                */
*/*                                                                  */
*/*    PURPOSE = N/A                                                 */
*/*                                                                  */
*/*    LINKAGE = N/A                                                 */
*/*                                                                  */
*/* INPUT = N/A                                                      */
*/*                                                                  */
*/* OUTPUT = N/A                                                     */
*/*                                                                  */
*/* EXIT-NORMAL = N/A                                                */
*/*                                                                  */
*/* EXIT-ERROR = N/A                                                 */
*/*                                                                  */
*/* EXTERNAL-REFERENCES = NONE                                       */
*/*                                                                  */
*/*    ROUTINES = N/A                                                */
*/*                                                                  */
*/*    DATA-AREAS = N/A                                              */
*/*                                                                  */
*/*    CONTROL-BLOCKS = N/A                                          */
*/*                                                                  */
*/* TABLES = N/A                                                     */
*/*                                                                  */
*/* MACROS = N/A                                                     */
*@LISTPOP;
*/*                                                                  */
*/* CHANGE-ACTIVITY = NONE                                           */
*/*                                                                  */
*/*                                                                  */
 /* PCTT                                                             */
 /*                                                                  */
 DCL 1 PCTT BASED(ASCBPCTT),
       2 PCTTHDR,                   /* PCTT HEADER                   */
         3 PCTTID  CHAR(4),         /* PCTT ID - PCTT-               */
         3 PCTTENBR PTR(31),        /* NBR OF SLOTS FOR ACB ADDRS    */
         3 PCTTCURR PTR(31),        /* NBR USED SLOTS FOR ACB ADDRS  */
         3 * PTR(31),               /* RESERVED                      */
       2 PCTTENTR(4),               /* ACB ENTRIES                   */
         3 PCTACBEN,                /* ACB ENTRY                     */
           4 PCTFLGS1 CHAR(1),      /* FLAG BYTE                     */
             5 PCTTCL BIT(1),       /* TEMPORARILY CLOSED            */
           4 * CHAR(1),             /* RESERVED                      */
           4 PCTTOPCT FIXED(15),    /* OPEN COUNT                    */
           4 PCTTACB  PTR(31);      /* ACB ADDRESS SLOT              */
./ ADD NAME=IDAPDFCD
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAPDFCD                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM OPEN/CLOSE/EOV PROBLEM DETERMINATION   */
 /*                      MESSAGE FUNCTION CODES.                     */
 /*                                                                  */
 /*   FUNCTION = TO IDENTIFY THE FUNCTION BEING PERFORMED WHEN THE   */
 /*              PROBLEM OCCURED.  THIS CODE IS INCLUDED IN THE      */
 /*              PROBLEM DETERMINATION MESSAGE.                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 06/06/78                         @ZA33246*/
 /*                                                                  */
 /********************************************************************/
    DCL
     (PDF1 CONSTANT(1),             /* IDA0192C--INITIALIZATION      */
      PDF2 CONSTANT(2),             /* IDA0A92C--OBTAIN ASSOCIATED
                                       DATA SET CI NUMBERS           */
      PDF3 CONSTANT(3),             /* IDA0192C--OBTAIN DATA SET
                                       ATTRIBUTES                    */
      PDF4 CONSTANT(4),             /* IDA0192C--GET VOL INFO        */
      PDF5 CONSTANT(5),             /* IDA0192C--UPDATE OPEN
                                       INDICATOR IN CATALOG          */
      PDF6 CONSTANT(6),             /* IDA0192C--UPDATE CATALOG
                                       FOR CLOSE                     */
      PDF7 CONSTANT(7),             /* IDA0192C--GET VOL TIME STAMP  */
      PDF8 CONSTANT(8),             /* IDA0192C--RECORD MANAGEMENT
                                       CATALOG UPDATE                */
      PDF9 CONSTANT(9),             /* IDA0192C--UPDATE PREFORMAT
                                       INDICATOR IN CATALOG          */
      PDF10 CONSTANT(10),           /* IDA0192C--RETRIEVE 44 BYTE
                                       CLUSTER NAME                  */
      PDF11 CONSTANT(11),           /* IDA0192C--RETRIEVE 44 BYTE
                                       ELEMENTARY DATA SET NAME      */
      PDF20 CONSTANT(20),           /* IDA0192V--INITIALIZATION      */
      PDF21 CONSTANT(21),           /* IDA0192V--CHECK VOL TIMESTAMP */
      PDF22 CONSTANT(22),           /* IDA0192V--HANDLE MESSAGES     */
      PDF23 CONSTANT(23),           /* IDA0192V--MOUNT VOLUME        */
      PDF24 CONSTANT(24),           /* IDA0192V--MSS JES3    @ZA33246*/
      PDF30 CONSTANT(30),           /* IDA0192S--INITIALIZATION      */
      PDF31 CONSTANT(31),           /* IDA0192S--BUILD SMF RECORD    */
      PDF40 CONSTANT(40),           /* IDA0192D--INITIALIZATION      */
      PDF41 CONSTANT(41),           /* IDA0192D--BUILD UCB LIST      */
      PDF42 CONSTANT(42),           /* IDA0192D--BUILD
                                       ACQUIRE/RELINQUISH LIST       */
      PDF43 CONSTANT(43))           /* IDA0192D--ACQUIRE/RELINQUISH
                                       EXTENTS                       */
        FIXED(8);
    DCL
     (PDF50 CONSTANT(50),           /* IDA0192Z--INITIALIZATION      */
      PDF51 CONSTANT(51),           /* IDA0192Z--DETERMINE NUMBER
                                       OF BUFFERS NEEDED             */
      PDF52 CONSTANT(52),           /* IDA0192Z--BUILD BUFFERS       */
      PDF53 CONSTANT(53),           /* IDA0192Z--BUILD CNTRL BLOCKS  */
      PDF54 CONSTANT(54),           /* IDA0192Y--BUILD STRING BLOCKS */
      PDF60 CONSTANT(60),           /* IDA0192B--MOD INITIALIZATION  */
      PDF61 CONSTANT(61),           /* IDA0192B--LOCATE DATA SET
                                                 ATTRIBUTES AND
                                                 VALIDITY CHECK      */
      PDF62 CONSTANT(62),           /* IDA0192B--VOLUME PROCESSING   */
      PDF63 CONSTANT(63),           /* IDA0192B--PREFORMAT EXTENT    */
      PDF84 CONSTANT(84),           /* IDA0192B--SUBTASK SHARING     */
      PDF70 CONSTANT(70),           /* IDA0192W--INITIALIZATION      */
      PDF71 CONSTANT(71),           /* IDA0192W--BUILD CPA           */
      PDF80 CONSTANT(80),           /* IFG0193A--READ JFCB           */
      PDF81 CONSTANT(81),           /* IDA0192A--INITITALIZATION     */
      PDF82 CONSTANT(82),           /* IDA0192A--VERIFY ACB          */
      PDF83 CONSTANT(83),           /* IDA0192F--FIX CONTROL BLOCKS  */
      PDF85 CONSTANT(85),           /* IDA0192F--MNT AND VERIFY VOLS */
      PDF87 CONSTANT(87),           /* IDA0192A--CONNECT BASE        */
      PDF88 CONSTANT(88),           /* IDA0192F--OPEN BASE CLUSTER   */
      PDF89 CONSTANT(89),           /* IDA0192F--OPEN UPGRADE AIX    */
      PDF90 CONSTANT(90),           /* IDA0192F--OPEN PATH AIX       */
      PDF93 CONSTANT(93),           /* IDA0192A--BUILD DUMMY DEB     */
      PDF95 CONSTANT(95),           /* IDA0192A--OPEN TERMINATION    */
      PDF96 CONSTANT(96))           /* IDA0192A--OPEN ERROR CLEANUP  */
        FIXED(8);
    DCL
     (PDF100 CONSTANT(100),         /* IFG0200V--READ JFCB           */
      PDF101 CONSTANT(101),         /* IDA0200T--INITIALIZATION      */
      PDF103 CONSTANT(103),         /* IDA0200T--COMPLETE I/O        */
      PDF104 CONSTANT(104),         /* IDA0200T--CLOSE PATH          */
      PDF105 CONSTANT(105),         /* IDA0200T--CLOSE BASE          */
      PDF106 CONSTANT(106),         /* IDA0200T--CLOSE SPHERE        */
      PDF107 CONSTANT(107),         /* IDA0200T--CLOSE UPGRADE       */
      PDF108 CONSTANT(108),         /* IDA0200T--VMT PROCESSING      */
      PDF110 CONSTANT(110),         /* IDA0200B--INITIALIZATION      */
      PDF111 CONSTANT(111),         /* IDA0200B--VALIDITY CHECK      */
      PDF112 CONSTANT(112),         /* IDA0200B--SMF PROCESSING      */
      PDF113 CONSTANT(113),         /* IDA0200B--UPDATE CATALOG      */
      PDF114 CONSTANT(114),         /* IDA0200B--RELEASE CONTROL BLK */
      PDF115 CONSTANT(115),         /* IDA0200B--WRITE BUFFER        */
      PDF148 CONSTANT(148),         /* IDA0200T--FORCE DLVRP.@Z30SSMD*/
      PDF149 CONSTANT(149))         /* IDAOCEA2--FORCE DLVRP.@Z30SSMD*/
        FIXED(8);
    DCL
     (PDF150 CONSTANT(150),         /* IGC0002C--READ JFCB           */
      PDF151 CONSTANT(151),         /* IDA0231T--INITIALIZATION      */
      PDF153 CONSTANT(153),         /* IDA0231T--COMPLETE I/O        */
      PDF154 CONSTANT(154),         /* IDA0231T--TCLOSE PATH         */
      PDF155 CONSTANT(155),         /* IDA0231T--TCLOSE BASE         */
      PDF156 CONSTANT(156),         /* IDA0231T--TCLOSE UPGRADE      */
      PDF157 CONSTANT(157),         /* IDA0231B--INITIALIZATION      */
      PDF158 CONSTANT(158),         /* IDA0231B--VALIDITY CHECK      */
      PDF159 CONSTANT(159),         /* IDA0231B--UPDATE CATALOG      */
      PDF160 CONSTANT(160),         /* IDA0231B--SMF PROCESSING      */
      PDF161 CONSTANT(161))         /* IDA0231B--WRITE BUFFER        */
        FIXED(8);
    DCL
     (PDF200 CONSTANT(200),         /* IFG0551F--READ JFCB           */
      PDF201 CONSTANT(201),         /* IDA0557A--INITIALIZATION      */
      PDF202 CONSTANT(202),         /* IDA0557A--LOCATE AND MNT VOL  */
      PDF203 CONSTANT(203),         /* IDA0557A--ALLOCATE SPACE      */
      PDF204 CONSTANT(204),         /* IDA0557A--SWITCH VOLUMES      */
      PDF205 CONSTANT(205),         /* IDA0557A--BLD CONTROL BLOCKS  */
      PDF206 CONSTANT(206),         /* IDA0557A--UPDATE SMF RECORD   */
      PDF207 CONSTANT(207),         /* IDA0557A--PREFORMAT EXTENT    */
      PDF208 CONSTANT(208),         /* IDA0557A--RECORD MANAGEMENT
                                       CATALOG UPDATE                */
      PDF209 CONSTANT(209))         /* IDA0557A--RESET CNTRL BLOCKS  */
        FIXED(8);
./ ADD NAME=IDAPDPRM
*% GO TO VS1;
         MACRO
         IDAPDPRM
*% VS1: ;
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAPDPRM                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = PROBLEM DETERMINATION PARAMETER LIST.       */
*/*                                                                  */
*/*   FUNCTION = CONTAINS INFORMATIONS USED BY OPEN/CLOSE/EOV MODULES*/
*/*              TO GENERATE THE PROBLEM DETERMINATION MESSAGES.     */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = NONE                                 */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - RESPECIFY IDAPDPRM BASED.            */
*/*                                                                  */
*/*   CREATED BY: N/A                                                */
*/*                                                                  */
*/*   STATUS = VS1 RELEASE 4   (CHANGE FLAG @X04SVXX)                */
*/*            VS2 RELEASE 3   (CHANGE FLAG @Y30DSXX)                */
*/*            VS2 RELEASE 3  ICR (CHANGE FLAG @Z30SSXX)             */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 04 OCTOBER 74                    @Z30SSMD*/
*/*                                                                  */
*/********************************************************************/
*% GO TO VS1A;
IDAPDPRM DSECT                          VSAM PD PARAMETER LIST
PDPCALL  DS    CL1                      CALLER IDENTIFICATION CODE
PDPCODE  DS    CL1                      INTERNAL PD CODE
PDPFUNC  DS    CL1                      FUNCTION CODE
PDPSFC   DS    CL1                      SUB-FUNCTION RET CODE  @X04SVRP
PDPACB   DS    F                        ADDR OF USER ACB
PDPUCB   DS    F                        ADDR OF UCB
PDPTIOT  DS    F                        ADDR OF TIOT ENTRY FOR DD NAME
PDPVLSER DS    F                        ADDR OF VOL SER NUMBER
PDPCLSNM DS    F                        ADDR OF 44 BYTE CLUSTER NAME
PDPDSN   DS    F                        ADDR OF 44 BYTE DS NAME
PDPCTACB DS    F                        ADDR OF CATALOG ACB
PDPKEY   DS    CL1                      KEY SAVE AREA FOR MVM  @Y30DSJH
PDPDSTYP DS    CL1                      DATA SET TYPE          @X04SVRL
PDPMSGFL DS    CL1                      MSG AREA FLAG          @X04SVRL
         DS    CL1                      UNUSED                 @X04SVRL
PDPSFI   DS    F                        ADDR OF EXTENDED SUB-FUNCTION
*                                       INFORMATION            @X04SVRP
PDPLNGTH EQU   *-IDAPDPRM               LENGTH OF PARAMETER LIST
* CALLER IDENTIFICATION CODES
PDPOPEN  EQU   0                        OPEN
PDPCLOSE EQU   4                        CLOSE
PDPEOV   EQU   8                        END-OF-VOLUME
PDPTCLOS EQU   12                       TCLOSE
* DATA SET IDENTIFICATION CODE                                 @X04SVRL
PDPNONM  EQU   0                        NO DATA SET NAME       @Z30SSMD
PDPDDNM  EQU   1                        DD DATA SET NAME       @Z30SSMD
PDPBASE  EQU   2                        BASE DATA SET          @Z30SSMD
PDPPATH  EQU   3                        PATH DATA SET          @Z30SSMD
PDPUPGR  EQU   4                        UPGRADE DATA SET       @Z30SSMD
* MESSAGE AREA FLAG                                            @X04SVRL
PDPNOTFC EQU   X'80'                    ON IND NOT FIRST CALL  @X04SVRL
PDPSPACE EQU   X'40'                    ON IND NO MORE SPACE   @X04SVRL
PDPNOTRC EQU   X'20'                    ON IND SUPRESS TRACE   @Z30SSMD
PDPNOMSG EQU   X'10'                    ON IND SUPRESS MSGAREA @Z30SSMD
         MEND
*% VS1A: ;
*   DCL 1 IDAPDPRM BDY(WORD) BASED,    /* VSAM PD PARAMETER LIST     */
*         2 PDPCALL FIXED(8),          /* CALLER IDENTIFICATION      */
*         2 PDPCODE  FIXED(8),         /* INTERNAL PD CODE           */
*         2 PDPFUNC FIXED(8),          /* FUNCTION CODE              */
*         2 PDPSFC FIXED(8),           /* SUB-FUNCTION CODE  @X04SVRP*/
*         2 PDPACB PTR(31),            /* ADDR OF USER ACB           */
*         2 PDPUCB PTR(31),            /* ADDR OF UCB                */
*         2 PDPTIOT,                   /* ADDR OF TIOT ENTRY FOR
*                                         DD NAME                    */
*         2 PDPVLSER PTR(31),          /* ADDR OF VOL SER NUMBER     */
*         2 PDPCLSNM PTR(31),          /* ADDR OF 44 BYTE CLUSTER
*                                         NAME                       */
*         2 PDPDSN   PTR(31),          /* ADDR OF 44 BYTE DS NAME    */
*         2 PDPCTACB PTR(31),          /* ADDR OF CATALOG ACB        */
*         2 PDPKEY   FIXED(8),         /* KEY SAVE FOR MVM   @Y30DSJH*/
*         2 PDPDSTYP CHAR(1),          /* DATA SET TYPE      @X04SVRL*/
*         2 PDPMSGFL CHAR(1),          /* MSG AREA FLAG      @X04SVRL*/
*           3 PDPNOTFC BIT(1),         /* IND NOT FIRST CALL @X04SVRL*/
*           3 PDPSPACE BIT(1),         /* IND NO MORE SPACE  @X04SVRL*/
*           3 PDPNOTRC BIT(1),         /* IF ON THEN SUPRESS THE
*                                         GTF TRACE.VS2 ONLY.@Z30SSMD*/
*           3 PDPNOMSG BIT(1),         /* IF ON THEN SUPRESS MSG  AREA
*                                         SUPPORT. VS2 ONLY. @Z30SSMD*/
*         2 *        CHAR(1),          /* UNUSED             @X04SVRL*/
*         2 PDPSFI PTR(31);            /* ADDR OF EXTENDED SUB-FUNCTION
*                                         INFORMATION        @X04SVRP*/
*   /* CALLER IDENTIFICATION CODES                                   */
*   DCL (PDPOPEN  CONSTANT(0),         /* OPEN                       */
*        PDPCLOSE CONSTANT(4),         /* CLOSE                      */
*        PDPEOV   CONSTANT(8),         /* END-OF-VOLUME              */
*        PDPTCLOS CONSTANT(12))        /* TCLOSE                     */
*          FIXED(8);
*   /* DATA SET IDENTIFICATION CODES                         @X04SVRL*/
*   DCL (PDPNONM  CONSTANT(0),         /* NO DATA SET NAME   @Z30SSMD*/
*        PDPDDNM  CONSTANT(1),         /* DD NAME DATA SET   @Z30SSMD*/
*        PDPBASE  CONSTANT(2),         /* BASE DATA SET      @Z30SSMD*/
*        PDPPATH  CONSTANT(3),         /* PATH DATA SET      @Z30SSMD*/
*        PDPUPGR  CONSTANT(4))         /* UPGRADE DATA SET   @Z30SSMD*/
*          FIXED(8);
./ ADD NAME=IDAPFMT
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
         MACRO
&NAME    IDAPFMT  &RPL=,&TYPE=
         AIF   ('&RPL' NE '').OKY
         IHBERMAC 24
         MEXIT
.OKY     ANOP
&NAME    DS    0H
         AIF   ('&RPL'(1,1) EQ '(').RPLR
         LA    1,&RPL                   LOAD RPL ADDRESS
         AGO   .RPLSET
.RPLR    AIF   ('&RPL' EQ '(1)').RPLSET
         LR    1,&RPL(1)                LOAD RPL ADDRESS INTO REG. 1
.RPLSET  ANOP
         AIF   ('&TYPE' EQ 'INDEX').INDEX
         LA    0,8                      INDICATE A DATA PREFORMAT
         AGO   .TYPESET
.INDEX   ANOP
         LA    0,9                      INDICATE AN INDEX PREFORMAT
.TYPESET L     15,24(1)                 LOAD ACB ADDRESS FROM RPL
         L     15,8(15)                 LOAD VSAM INTERFACE RTN ADDR
         BALR  14,15                    LINK TO INTERFACE ROUTINE
         MEND
./ ADD NAME=IDAPLH
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAPLH                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = VSAM PLACE HOLDER                           */
*/*                                                                  */
*/*   FUNCTION = THIS MACRO CONTAINS:                                */
*/*              IDAPLHDR = PLACE HOLDER HEADER - CONTAINS THE       */
*/*               NUMBER OF PLACE HOLDERS AND STATISTICS             */
*/*              IDAPLH = CONTAINS POSITION INFORMATION              */
*/*              PLHEXTEN = PLH EXTENSION PRESENT WHEN LSR OR GSR    */
*/*               OPTIONS ARE IN EFFECT                              */
*/*              PLHKEY = CONTAINS THE CURRENT KEY                   */
*/*               THIS MACRO ALSO CONTAINS VARIOUS DECLARES FOR      */
*/*               JOURNALING                                         */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE IDAPLHDR IS POINTED TO BY THE    */
*/*              IDAAMB. THE FIRST IDAPLH IS ADJACENT TO THE         */
*/*              IDAPLHDR. SUBSEQUENT IDAPLHS ARE POINTED TO BY      */
*/*              PLHCHAIN.                                           */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 4.1  (CHANGE FLAG @Z40GSXX)              */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 15 AUGUST 75                             */
*/*                         3 JAN 77                          ZA14811*/
*/*                         02 FEB 77               @XA16338,@ZA14830*/
*/*                         04 APR 78                        @ZA32757*/
*/*                                                                  */
*/********************************************************************/
*  DCL  1 IDAPLHDR BASED,                  /* LEVEL 1 DECLARE      */
*         2 PLHID CHAR(1),                 /* PLH ID '30'X         */
*         2 PLHCNT PTR(8),                 /* NUMBER OF PLH ENTRIES*/
*         2 PLHELTH PTR(15),               /* LENGTH OF EACH ENTRY */
*         2 PLHDRREQ FIXED(31),     /* DEFER REQUEST COUNT   @X04SVLC*/
*         2 PLHDRMAX FIXED(15),     /* MAX NBR PLH IN CONCURRENT USE
*                                                            @X04SVLC*/
*         2 PLHDRCUR FIXED(15),     /* CURRENT NBR OF ACTIVE PLHS
*                                                            @X04SVLC*/
*         2 PLHIOSDQ PTR(31);       /* I/O SUPPORT DEFERRAL QUEUE
*                                      HEADER                @X04SVLC*/
*/********************************************************************/
*/* VSAM PLACE HOLDER                                                */
*/********************************************************************/
*  DCL  1 IDAPLH BASED,                    /* ENTRY DEFINITION     */
*         2 PLHAVL CHAR(1),                /* 0 IF ENTRY AVAILABLE */
*         2 PLHATV CHAR(1),                /* 0 IF NO ACTIVE REQ   */
*         2 PLHFLG1 BIT(8),                /* PROCESS FLAGS--BYTE 1*/
*           3 PLHEOVW BIT(1),              /* EOV WAITING          */
*           3 PLHENDRQ BIT(1),             /* ON IF ENDREQ ISSUED  */
*           3 PLHASKBF BIT(1),             /* LESS THAN MAX BFRS   */
*           3 PLHSSR BIT(1),               /* SEQ SET REQ          */
*           3 PLHRDEXC BIT(1),             /* PLH IN READ EXCL MODE*/
*           3 PLHASYRQ BIT(1),             /* IRB EXECUTION NEEDED */
*           3 PLHDRPND BIT(1),             /* DEFERRED REQ PENDING */
*           3 PLHSR BIT(1),           /* SUSPEND/RESUME PROCESSING IN
*                                        PLACE OF WAIT/POST @Z40GSDT*/
*         2 PLHFLG2 BIT(8),                /* PROCESS FLAGS--BYTE 2*/
*           3 PLHUPD BIT(1),               /* LAST REQUEST GET UPD */
*           3 PLHSQINS BIT(1),             /* SEQ INSERT MODE      */
*           3 PLHKEYMD BIT(1),             /* KEYED MODE             */
*           3 PLHADDTE BIT(1),             /* ADD TO END PROCESSING*/
*           3 PLHKRE   BIT(1),             /* END OF KEY RANGE     */
*           3 PLHCIINS BIT(1),             /* CI SPLIT INSERT      */
*           3 PLHSVADV BIT(1),             /* SAVE PLHNOADV--SCANDATA*/
*           3 PLHIWAIT BIT(1),             /* IDAWAIT TEST         */
*         2 PLHEFLGS BIT(16),              /* EXCEPTION FLAGS--1   */
*           3 PLHNOSPC BIT(1),             /* NO SPACE--CREATE MODE*/
*           3 PLH1ST   BIT(1),             /* 1ST REQ AFTER OPEN   */
*           3 PLHSKPER BIT(1),             /* SKIP ACROSS ERROR CNV*/
*           3 PLHSRINV BIT(1),      /* SPAN RCD EXCEPTION    @X04SVLC*/
*           3 PLHNOADV BIT(1),             /* DONT ADVANCE PLH     */
*           3 PLHEODX BIT(1),              /* EODAD TAKEN          */
*           3 PLHINVAL BIT(1),             /* ON IF INVALID        */
*           3 PLHDSCAN BIT(1),             /* SCAN DATA AFTER RD EX*/
*           3 PLHRSTRT BIT(1),      /* RESTART FLAG          @X04SVLC*/
*           3 * BIT(7),             /* RESERVED              @X04SVLC*/
*         2 PLHFLG3 BIT(8),         /* FLAGS -- BYTE 3       @X04SVLC*/
*           3 PLHSRBSG BIT(1),      /* SPAN RCD SEGS ARE INCONSISTANT
*                                                            @X04SVLC*/
*           3 PLHRAHD BIT(1),       /* READ-AHEAD            @X04SVLC*/
*           3 PLHSLVLD BIT(1),      /* ON IF 2ND LVL IDX VALID
*                                                            @X04SVLC*/
*           3 PLHBWD BIT(1),        /* PREV REQ SPEC BWD DIRECTION
*                                                            @X04SVLC*/
*           3 PLHRVRS BIT(1),       /* I/0 CHAIN REVERSED IF ON
*                                                            @X04SVLC*/
*           3 PLHEOVDF BIT(1),     /* EOV DEFER ON IRB FLAG  @ZA10850*/
*         2 PLHAFLGS BIT(8),       /* MORE FLAGS-NOT CLEARED @X04SVLC*/
*           3 PLHDRLM BIT(1),       /* DIRECT REQ ISSUED DURING
*                                      CREATE                @X04SVLC*/
*           3 PLHIOSRQ BIT(1),      /* I/O SUPPORT REQUEST   @ZA04719*/
*           3 PLHVAMB BIT(1),       /* PLHAMB IS VALID       @X04SVLC*/
*           3 PLHDBDC BIT(1),       /* PLH FROM SHR POOL     @X04SVLC*/
*           3 PLHIOSID BIT(1),      /* I/O SUPPORT ID        @X04SVLC*/
*           3 PLHRABWD BIT(1),      /* RA ENTERED IN BWD     @X04SVLC*/
*           3 PLHRAE   BIT(1),      /* RA KEY EQUAL HIT      @ZA14811*/
*         2 PLHACB   PTR(31),              /* POINTER TO ACB         */
*         2 PLHDSTYP CHAR(1),              /* DATA SET TYPE          */
*                                          /*     01 FOR DATA        */
*                                          /*     02 FOR INDEX       */
*         2 PLHRMIN  PTR(8),               /* READ THRESHOLD         */
*         2 PLHFRCNT PTR(8),               /* FREE BFRS IN ENTRY   */
*         2 PLHBFRNO PTR(8),               /* TOTAL NO OF BFRS     */
*         2 PLHMRPL PTR(31),               /* ADDR OF HEADER RPL   */
*         2 PLHCRPL PTR(31),               /* ADDR OF CURRENT RPL  */
*         2 PLHDSIDA PTR(31),              /* PTR TO DSID          */
*         2 PLHCRBA PTR(32),               /* CURRENT RBA          */
*           3 PLHJORBA PTR(32),            /* JRNAD CHANGE--OLD RBA*/
*               5 PLHUPECB PTR(31),        /* UPAD ADDR ECB  @ZA07549*/
*         2 PLHJRNLL FIXED(31),            /* JRNAD--LENGTH OF DATA*/
*         2 PLHJNRBA PTR(32),              /* JRNAD CHANGE--NEW RBA*/
*         2 PLHJCODE CHAR(1),              /* JRNAD ENTRY CODE     */
*           3 PLHUCODE CHAR(1),            /* UPAD EXIT CODE @ZA07549*/
*         2 PLHRCODE PTR(8),               /* PREVIOUS REQUEST CODE*/
*         2 PLHEOVR CHAR(1),               /* EOV REQ CODE--ALLOC/MNT*/
*         2 PLHRSCS BIT(8),              /* RESOURCE BITS AND FEEDBACK
*                                           CODE INDICATORS  @ZA32757*/
*           3 PLHINEOV BIT(1),           /* EOV IN PROCESS   @ZA32757*/
*           3 PLHBUFHD BIT(1),           /* PLH LOCKED DATA BUFC
*                                           HEADER           @ZA32757*/
*           3 * BIT(2),                  /* RESERVED         @ZA32757*/
*           3 PLHASYER BIT(1),           /* ASYNCH DEFERRED REQUEST
*                                           CANNOT BE RESTARTED BY
*                                           TERMRPL          @ZA32757*/
*           3 PLHDSERR BIT(1),           /* POSSIBLE DATA SET ERROR
*                                           CONDITION DETECTED BY
*                                           TERMRPL:  (1) INCOMPLETE
*                                           I/O OR, (2) BUFFER IN MUST
*                                           WRITE STATUS     @ZA32757*/
*           3 PLHDBPER BIT(1),           /* ERROR IN PLH DATA BUFC
*                                           POINTER DETECTED BY
*                                           TERMRPL          @ZA32757*/
*           3 * BIT(1),                  /* RESERVED         @ZA32757*/
*         2 PLHARDB    PTR(31),            /* CURRENT DATA ARDB PTR*/
*         2 PLHLRECL PTR(31),              /* LENGTH OF LAST RECORD*/
*         2 PLHDBUFC PTR(31),              /* PTR TO CURR DATA BUFC*/
*         2 PLHNBUFC PTR(31),              /* PTR TO NEXT READ BUFC*/
*         2 PLHRECP PTR(31),               /* BUFC CURR REC POINTER*/
*         2 PLHFSP PTR(31),                /* FREE SPACE POINTER   */
*         2 PLHRDFP PTR(31),               /* PTR TO CURRENT RDF   */
*         2 PLHRDFC PTR(15),               /* CURR RDF REPLIC CNT  */
*         2 PLHSRSID PTR(16),        /* SPAN RCD SEG ID      @X04SVLC*/
*         2 PLHDIOB PTR(31),               /* PTR TO DATA IOB      */
*           3 PLHIIOB PTR(31),       /* PTR TO INDEX IOB     @X04SVLC*/
*         2 PLHARET PTR(31),               /* ASYNCH RTN RETURN ADR*/
*    /* PLHSAVE1 - PLHSAVE6 ARE NOT TO BE USED BY BUFFER MANAGER,
*       I/O MANAGER, IDADRQ, OR IDATJXIT                     @X04SVLC*/
*         2 PLHSAVE1 PTR(31),              /* REGISTER SAVE 1      */
*         2 PLHSAVE2 PTR(31),              /* REGISTER SAVE 2      */
*         2 PLHSAVE3 PTR(31),              /* REGISTER SAVE 3      */
*         2 PLHSAVE4 PTR(31),              /* REGISTER SAVE 4      */
*         2 PLHSAVE5 PTR(31),              /* REGISTER SAVE 5      */
*         2 PLHSAVE6 PTR(31),              /* REGISTER SAVE 6      */
*         2 PLHAMB PTR(31),          /* IDADRQ-IDATJXIT AMB SAVE AREA
*                                                            @X04SVLC*/
*         2 PLHCHAIN PTR(31),        /* CHAIN PTR            @X04SVLC*/
*         2 PLHRETO FIXED(15),             /* OFFSET TO CURR RETURN*/
*         2 PLHRETOS FIXED(15),      /* INITIAL OFFSET       @ZA16007*/
*         2 PLHRET1(11) PTR(31),           /* 11 RETURN REGS         */
*         2 PLHASAVE PTR(31),              /* ASYNCH SAVEAREA START*/
*         2 * PTR(31),                     /* 13 TH  RETURN REG    */
*         2 * PTR(31),                     /* 14 TH  RETURN REG    */
*         2 PLHAR14 PTR(31),               /* RETURN FROM ASYNCH     */
*         2 PLHEOVPT PTR(31),              /* PTR TO RBA FOR EOV     */
*           3 PLHDDDD PTR(32),             /* PREVIOUS REQUEST RBA   */
*         2 PLHNRBA    PTR(32),            /* NEXT RBA               */
*         2 PLHIBUFC PTR(31),              /* PTR TO INDEX BUFC      */
*         2 PLHRBUFC PTR(31),        /* IDADRQ-IDATJXIT RBUFC SAVE AREA
*                                                            @X04SVLC*/
*         2 PLHISPLP   PTR(31),            /* INDEX SEARCH PARML PTR */
          2 PLHIXSPL BDY(WORD),            /* INDEX SEARCH PARM LIST */
*           3 PLHSSRBA PTR(32),            /* INDEX CINV RBA         */
*             4 PLHHIREC FIXED(32), /* HI-RECORD RBA         @X04SVLC*/
            3 PLHIXBFC PTR(31),            /* PTR TO IX SRCH BUFC    */
*           3 *        CHAR(24),           /*                        */
*         2 PLHWAX PTR(31),         /* PTR TO PATH WORK AREA @X04SVLC*/
*           3 PLHXPLH PTR(31),      /* PTR TO AIX PLH FR BASE
*                                                            @X04SVLC*/
*         2 PLHLLOR PTR(31),        /* PTR LEAST LEN SEGMENT @X04SVLC*/
*         2 PLHNOSEG FIXED(15),     /* NBR SEG SPAN RCD      @X04SVLC*/
*         2 PLHSRCSG FIXED(15),     /* CUR SEG NBR SPAN RCD  @X04SVLC*/
*         2 PLHSLRBA FIXED(32),     /* RBA 2ND LEVEL INDEX   @X04SVLC*/
*         2 PLHKEYPT PTR(31),       /* PTR TO CUR KEY        @X04SVLC*/
*         2 PLHDRRSC PTR(31),       /* ADDR OF DEFERRED REQUEST
*                                      FLAG BYTE             @X04SVLC*/
*         2 PLHPARM1 PTR(31),       /* IDADRQ-IDATJXIT RPARM1 SAVE
*                                      AREA                  @X04SVLC*/
*         2 PLHR13 PTR(31),         /* IDADRQ-I/O MGR R13 SAVE AREA
*                                                            @X04SVLC*/
*         2 PLHDRMSK BIT(8),        /* MASK FOR DEFERRED REQUEST
*                                            RESOURCE TEST   #X04SVLC*/
*         2 PLHTMRPL BIT(8),        /* TERMRPL PROCESS BITS  @ZA32757*/
*           3 PLHTERM BIT(1),       /* TERMRPL IN PROCESS    @ZA32757*/
*           3 PLHTMBUF BIT(1),    /* TERMRPL FREED BUFC HDR  @ZA32757*/
*           3 PLHTMDIW BIT(1),      /* TERMRPL FREED DIWA    @ZA32757*/
*           3 PLHTMDTA BIT(1),      /* TERMRPL FREED DATA BUFC
*                                                            @ZA32757*/
*           3 PLHTMINX BIT(1),      /* TERMRPL FREED INDEX BUFC
*                                                            @ZA32757*/
*           3 PLHTMIOB BIT(1),      /* TERMRPL FREED IOMB    @ZA32757*/
*           3 * BIT(2),             /* RESERVED              @ZA32757*/
*         2 * PTR(16),              /* RESERVED              @ZA32757*/
*      /* CROSS - REGION POST PARM LIST                      @X04SVLC*/
*         2 PLHECB PTR(31),         /* ADDR OF ECB           @X04SVLC*/
*         2 PLHASCB PTR(31),        /* ADDR OF ASCB          @X04SVLC*/
*         2 PLHERRET PTR(31),       /* ADDR OF ERROR RETURN  @X04SVLC*/
*         2 PLHEND CHAR(*);         /* PLH END               @X04SVLC*/
*/********************************************************************/
*/* VSAM PLACE HOLDER EXTENSION                                      */
*/********************************************************************/
*  DCL 1 PLHEXTEN DEFINED(PLHEND),  /* LSR/GSR EXTENSION     @X04SVLC*/
*         2 PLHRESR1 PTR(31),        /* ADDR OF SERIAL RESOURCE HELD
*                                                            @X04SVLC*/
*         2 * BIT(8),                /* UNUSED               @X04SVLC*/
*         2 PLHBMWRK BIT(8),         /* BUFFER MANAGER WORK FLAGS
*                                                            @X04SVLC*/
*           3 PLHBMRDF BIT(1),       /* RBA FOUND FLAG       @X04SVLC*/
*           3 PLHBEUC BIT(1),        /* END OF USE CHAIN     @X04SVLC*/
*           3 PLHBMSOV BIT(1),       /* START OVER FLAG      @X04SVLC*/
*         2 PLHRDCNT FIXED(15),      /* SA FOR AMBRDCNT      @X04SVLC*/
*        2 PLHBMSV1 PTR(31),         /* BFR MGR SA           @X04SVLC*/
*        2 PLHBMSV2 PTR(31),         /*                      @X04SVLC*/
*        2 PLHBMSV3 PTR(31),         /*                      @X04SVLC*/
*        2 PLHBMSV4 PTR(31),         /*                      @X04SVLC*/
*        2 PLHBMSV5 PTR(31);         /*                      @X04SVLC*/
*/********************************************************************/
*/* VSAM PLACE HOLDER KEY                                            */
*/********************************************************************/
*  DCL PLHKEY CHAR(*)BASED(PLHKEYPT);         /* CURRENT KEY #X04SVLC*/
*  DCL PLHRRN PTR(31) BASED(PLHKEYPT);/* PREV RELATIVE NUMBER@ZA14830*/
*/********************************************************************/
*/* VSAM PLACE HOLDER PUSH DOWN LIST                                 */
*/********************************************************************/
*  DCL PLHPDL (20) PTR(31) BASED;    /* R14 SAVE AREA        @ZA16007*/
*  DCL PLHPDLE PTR(31)BASED(ADDR(PLHRET1)+PLHRETO);/* NXT SA @ZA16007*/
*/********************************************************************/
*/* VSAM JOURNALING CONSTANTS                                        */
*/********************************************************************/
*  DCL PLHTDATA BIT(8) CONSTANT('00000001'B); /* DATA  DS TYPE CODE  */
*  DCL PLHTIDX  BIT(8) CONSTANT('00000010'B); /* INDEX DS TYPE CODE  */
*  DCL PLHJGET BIT(8) CONSTANT('00000000'B); /* JRNAD ENTRY FOR GET  */
*  DCL PLHJPUT BIT(8) CONSTANT('00000100'B); /* JRNAD ENTRY FOR PUT  */
*  DCL PLHJERS BIT(8) CONSTANT('00001000'B); /* ERASE JRNAD ENTRY  */
*  DCL PLHJRBAC BIT(8) CONSTANT('00001100'B); /* RBA CHANGE--JRNAD */
*  DCL PLHJCAS BIT(8) CONSTANT('00100000'B); /* START OF CA SPLIT
*                                    JRNAD CODE              @X04SVLC*/
*  DCL PLHJIER BIT(8) CONSTANT('00100100'B); /* PHYSICAL INPUT ERROR
*                                    JRNAD CODE              @X04SVLC*/
*  DCL PLHJOER BIT(8) CONSTANT('00101000'B); /* PHYSICAL OUTPUT ERROR
*                                    JRNAD CODE              @X04SVLC*/
*  DCL PLHJIXM BIT(8) CONSTANT('00101100'B); /* INDEX MODIFICATION
*                                    JRNAD CODE              @X04SVLC*/
*  DCL PLHRSRSG BIT(8)CONSTANT('00010000'B);/* READ SPANNED RECORD
*                                       SEGMENT              @X04SVLC*/
*  DCL PLHWSRSG BIT(8)CONSTANT('00010100'B);/* WRITE SPANNED RECORD
*                                       SEGMENT              @X04SVLC*/
*/********************************************************************/
*/* VSAM UPAD EXIT CONSTANTS                                 @ZA07549*/
*/********************************************************************/
*  DCL PLHUWAIT BIT(8) CONSTANT('00000000'B); /* UPAD WAIT EXIT CODE
*                                                            @ZA07549*/
./ ADD NAME=IDAPPCDE
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAPPCDE                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM OPEN/CLOSE/EOV PROBLEM DETERMINATION   */
 /*                      MESSAGE PROBLEM CODE.                       */
 /*                                                                  */
 /*   FUNCTION = IDENTIFY THE PROBLEM THAT CAUSED THE PROBLEM        */
 /*              DETERMINATION MESSAGE.                              */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = NONE                                 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 11/04/75                         @Z40WSRL*/
 /*                                                                  */
 /********************************************************************/
    DCL
      (PP4 CONSTANT(4),             /* I/O ERROR READING JFCB        */
      PP20 CONSTANT(20),            /* INSUFFICIENT VIRTUAL STORAGE  */
      PP22 CONSTANT(22),            /* I/O ERROR COMPLETING I/O
                                       REQUESTS                      */
      PP28 CONSTANT(28),            /* CATALOG DOES NOT EXIST OR IS
                                       NOT OPEN                      */
      PP32 CONSTANT(32),            /* CATALOG ENTRY NOT FOUND       */
      PP33 CONSTANT(33),            /* CANNOT EXTEND VSAM CATALOG    */
      PP34 CONSTANT(34),            /* DATA SET HAS REACHED MAXIMUM
                                       NUMBER OF EXTENTS             */
      PP35 CONSTANT(35),            /* CATALOG RECORD HAS EXCEEDED
                                       MAX NBR OF OCCURRENCES*/
      PP36 CONSTANT(36),            /* CATALOG I/O ERROR             */
      PP37 CONSTANT(37),            /* UNEXPECTED RETURN CODE FROM
                                       CATALOG                       */
      PP38 CONSTANT(38),            /* EMPTY PATH DATA SET           */
      PP39 CONSTANT(39),            /* EMPTY UPGRADE AIX             */
      PP40 CONSTANT(40),            /* SECURITY VIOLATION            */
      PP41 CONSTANT(41),            /* BUFFER SPACE TO SMALL         */
      PP44 CONSTANT(44),            /* USER BUFFERING AND NOT
                                       CINV PROCESSING               */
      PP45 CONSTANT(45),            /* UNUSABLE DS OPEN FOR INPUT    */
      PP46 CONSTANT(46),            /* UNUSABLE DS OPEN FOR OUTPUT   */
      PP47 CONSTANT(47),            /* ICI & INCONSISTENT PARAMETERS */
      PP48 CONSTANT(48),            /* RESET AND DS IS AN INDEX      */
      PP49 CONSTANT(49),            /* ICI PROCESSING AND CREATE MODE*/
      PP50 CONSTANT(50),            /* UNABLE TO PAGE FIX CNTRL BLKS */
      PP52 CONSTANT(52),            /* UNABLE TO OBTAIN RESOURCE     */
      PP54 CONSTANT(54),            /* KEYED ACCESSING AND NOT KSDS  */
      PP56 CONSTANT(56),            /* DATA SET NOT CLOSED           */
      PP58 CONSTANT(58),            /* INDEX TIMESTAMP LESS THAN
                                       DATA TIMESTAMP                */
      PP59 CONSTANT(59),            /* VOLUME TIMESTAMP ERROR AND
                                       VOL BEING OPENED FOR INPUT    */
      PP60 CONSTANT(60),            /* VOLUME TIMESTAMP ERROR AND
                                       VOL BEING OPENED FOR OUTPUT   */
      PP68 CONSTANT(68),            /* INCONSISTENT DEVICE TYPES     */
      PP72 CONSTANT(72),            /* EMPTY DS NOT OPEN FOR OUTPUT  */
      PP76 CONSTANT(76),            /* INVALID ACB                   */
      PP78 CONSTANT(78),            /* INVALID AMBL                  */
      PP80 CONSTANT(80),            /* DS OPENED FOR CREATE WITH
                                       STRNO GREATER THAN 1          */
      PP84 CONSTANT(84),            /* RESET SPECIFIED FOR NON-REUSABLE
                                       DATA SET                      */
      PP88 CONSTANT(88),            /* RESET SPECIFIED FOR REAL PATH */
      PP90 CONSTANT(90),            /* MSS MOUNT ERROR               */
      PP91 CONSTANT(91),            /* MSS DEMOUNT ERROR             */
      PP92 CONSTANT(92),            /* MSS ACQUIRE ERROR             */
      PP93 CONSTANT(93),            /* MSS RELINQUISH ERROR          */
      PP94 CONSTANT(94),            /* MSS UNABLE TO BIND            */
      PP100 CONSTANT(100),          /* NO SPACE ON CANDIDATE VOLUMES */
      PP104 CONSTANT(104),          /* NO VOLS AVAILABLE FOR
                                       SPACE ALLOCATION              */
      PP108 CONSTANT(108),          /* UNABLE TO MOUNT VOLUME        */
      PP112 CONSTANT(112),          /* UNABLE TO MOUNT VOLUME FOR
                                       SPACE ALLOCATION              */
      PP116 CONSTANT(116),          /* I/O ERROR READING VOLUME LABEL
                                       OR FORMAT 4 DSCB              */
      PP120 CONSTANT(120),          /* LSR/GSR AND CINV SIZE EXCEEDS
                                       MAXIMUM BUFFER SPACE          */
      PP124 CONSTANT(124),          /* LSR/GSR - VSRT DOES NOT EXIST */
      PP128 CONSTANT(128),          /* LSR/GSR - ERROR IN WRTBFR     */
      PP132 CONSTANT(132),          /* GSR AND SYSTEM IS VS1         */
      PP136 CONSTANT(136),          /* LSR/GSR AND RESET             */
      PP140 CONSTANT(140),          /* LSR/GSR AND ICI               */
      PP144 CONSTANT(144),          /* LSR/GSR AND USER BUFFERING    */
      PP148 CONSTANT(148),          /* GSR AND CALLER NOT AUTHORIZED */
      PP152 CONSTANT(152),          /* LSR/GSR AND DATA SET IS EMPTY */
      PP156 CONSTANT(156),          /* LSR/GSR AND KEY LENGTH EXCEEDS
                                       MAXIMUM                       */
      PP164 CONSTANT(164),          /* LSR/GSR WITH DFR AND SHARE
                                       OPTION IS 4                   */
      PP168 CONSTANT(168),          /* CRA VOL NOT MOUNTED           */
      PP172 CONSTANT(172),          /* FMT 4 DSCB INDICATES VOL IS
                                       UNUSABLE                      */
      PP176 CONSTANT(176),          /* GSR FORCE DLVRP WAS DONE,
                                       DUMP WAS TAKEN.       @Z30SSMD*/
      PP180 CONSTANT(180),          /* GSR FORCE DLVRP WAS DONE,
                                       PARTIAL DUMP WAS DONE.@Z30SSMD*/
      PP184 CONSTANT(184),          /* GSR FORCE DLVRP WAS DONE, DUMP
                                       COULD NOT BE DONE.    @Z30SSMD*/
      PP188 CONSTANT(188),          /* SYSTEM DATA SET DOES NOT SUPPORT
                                       THE LSR OR GSR OPTION @Z40WSRL*/
      PP192 CONSTANT(192))          /* SYSTEM DATA SET DOES NOT SUPPORT
                                       PATH OR UPGRADE PROCESSING
                                                             @Z40WSRL*/
        FIXED(8);
./ ADD NAME=IDAPSL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAPSL                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = PAGE SAVE LIST.                             */
 /*                                                                  */
 /*   FUNCTION = THE PSL CONTAINS A VARABLE NUMBER OF ENTRIES. ALL   */
 /*              SUCCESSFUL FIXED STORAGE FOR AN OPEN IS REFLECTED   */
 /*              IN THIS LIST. THERE IS A MAXIMUM OF 1 LIST PER ESDS */
 /*              OR KSDS.                                            */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE OPEN ACB WORK AREA.*/
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAPSL BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192A.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 1 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDAPSL BASED,             /* PAGE SAVE LIST                */
          2 PSLSUBPL FIXED (8),     /* SUBPOOL NUMBER OF THIS PSL    */
          2 PSLLENTH FIXED (24),    /* LENGTH IN BYTES OF THIS PSL   */
          2 PSLID CHAR (8),         /* BLOCK IDENTIFIER              */
          2 PSLNXPTR PTR (31),      /* POINTER TO NEXT PSL OR 0 IF
                                       LAST PSL IN CHAIN             */
          2 PSLENTRY (*),           /* PAGE SAVE ENTRY               */
            3 PSLSTAD PTR (31),     /* STARTING ADDR OF FIXED AREA   */
            3 PSLFLG BIT (8),       /* FLAGS                         */
              4 PSLFLGLT BIT (1),   /* BIT ON INDICATES LAST ENTRY   */
              4 * BIT (7),          /* RESERVED                      */
            3 PSLENDAD PTR (24)     /* END ADDR+1 OF FIXED AREA      */
    ;
    DCL IDAPSLID CHAR (8) CONSTANT (' IDAPSL '); /* CHAR CONSTANT
                                       FOR PSLID                     */
./ ADD NAME=IDARDF
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDARDF                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = VSAM RECORD DEFINITION FIELD                */
*/*                                                                  */
*/*   FUNCTION = DESCRIBES THE RECORD DEFINITION FIELD OF A VSAM     */
*/*              RECORD                                              */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM RECORD MANAGEMENT                            */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
*        DCL 1 IDARDF BASED,            /* RECORD DEFINITION FIELD   */
*              2 RDFRBYTE     CHAR(1),  /*                           */
*                3 RDFTYPE    BIT(1),   /* R TYPE                    */
*                3 RDFCTNU    BIT(1),   /* CONTROL INFO. CONTINUATION*/
*                3 RDFSEG     BIT(2),   /* SEGMENT TYPE INDICATOR    */
*                  4 RDFNOT1 BIT(1),    /* OFF= NOT A SPAN RCD OR
*                                          FIRST SEG OF S.R. @X04SVLC*/
*                                       /* ON = INTERMEDIATE OR LAST
*                                          SEGMENT OF A SPANNED
*                                          RCD               @X04SVLC*/
*                  4 RDF1ST BIT(1),     /* OFF = NOT A SPAN RCD OR LAST
*                                          SEGMENT OF S.R.   @X04SVLC*/
*                                       /* ON  = FIRST OR INTERMEDIATE
*                                          SEGMENT OF SPAN
*                                          RECORD            @X04SVLC*/
*                                       /*  00 COMPLETE REC  @X04SVLC*/
*                                       /*  01 FIRST SEGMENT @X04SVLC*/
*                                       /*  10 LAST  SEGMENT @X04SVLC*/
*                                       /*  11 INTERMEDIATE
*                                          SEGMENT           @X04SVLC*/
*                3 RDFREPL    BIT(1),   /*  0 - LL IS RECORD LENGTH  */
*                                        /*  1 - LL IS RECORD COUNT  */
*                3 RDFEMPTY   BIT(1),   /* EMPTY RECORD      @X04SVLC*/
*              2 RDFLL        CHAR(2);  /*                           */
*/********************************************************************/
*/* DATA DEFINITION                                                  */
*/********************************************************************/
*        DCL 1 IDADATA BASED,            /* DATA DECLARE     @X04SVLC*/
*              2 AMDATA       CHAR(*);                     /*@X04SVLC*/
*/********************************************************************/
*/* KEY DEFINITION                                                   */
*/********************************************************************/
*        DCL 1 IDAKEY BASED,             /* KEY DECLARE      @X04SVLC*/
*              2 KEY         CHAR(*);    /* KEY DECLARE      @X04SVLC*/
       GEN DATA;                                           /*@X04SVLC*/
RDFCTNUA EQU   X'40'                    COMPLEX RDF INDICATOR
RDFCTNUX EQU   X'FF'-RDFCTNUA           RESET COMPLEX MASK
RDFREPLA EQU   X'08'                    COUNT RDF INDICATOR
RDFREPLX EQU   X'FF'-RDFREPLA           RESET COUNT MASK
RDFEMPTI EQU   X'04'                    EMPTY RECORD       /*@X04SVLC*/
RDFLEN   EQU   3                        LENGTH OF RDF
RDFLLOFF EQU   1                        OFFSET WITHIN RDF TO LL
RDFSGLR  EQU   X'00'                   MASK FOR SINGLE RECORD RDF
RDFGRP   EQU   RDFCTNUA                 MASK FOR LL RDF OF A GROUP RDF
RDFCNT   EQU   RDFREPLA                 MASK FOR COUNT RDF
         @ENDGEN;
./ ADD NAME=IDAREGS
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAREGS                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME =VSAM RECORD MANAGEMENT REGISTER DECLARES     */
*/*                                                                  */
*/*   FUNCTION = DECLARES REGISTERS USED BY VSAM RECORD MANAGEMENT   */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 9 AUG 74                                 */
*/*                                                                  */
*/********************************************************************/
 DCL RWORK0         PTR(32)   REG(0);        /* REQ TYPE REG         */
 DCL RRPL           PTR(31)   REG(1) RESTRICTED;  /* RPL REGISTER    */
 DCL R1             PTR(31)   REG(1);        /* VOLATILE REG         */
 DCL RPLH           PTR(31)   REG(2) RESTRICTED; /* PLH REGISTER     */
 DCL RAMB           PTR(31)   REG(3) RESTRICTED;  /*  AMB REGISTER   */
 DCL RBUFC          PTR(31)   REG(4) RESTRICTED; /* BUFC REGISTER    */
 DCL RWORK1         PTR(31)   REG(5);        /* WORK REGISTER        */
 DCL RWORK2         PTR(32)   REG(6);        /* WORK REGISTER        */
 DCL RWORK3         PTR(31)   REG(7);        /* WORK REGISTER        */
 DCL RWORK4         PTR(31)   REG(8);        /* WORK REGISTER        */
 DCL RWORK5         PTR(31)   REG(9);        /* WORK REGISTER        */
 DCL R10            PTR(31)   REG(10);           /* PL/S REGISTER    */
 DCL R11            PTR(31)   REG(11);           /* PL/S REGISTER    */
 DCL RPARM1         PTR(31)   REG(12) RESTRICTED;  /* PARAMETER REG  */
 DCL R13            PTR(31)   REG(13);       /* ADDRESS OF SAVEAREA  */
 DCL R14            PTR(31)   REG(14);       /* RETURN ADDRESS       */
 DCL R15            PTR(31)   REG(15);       /* RETURN CODE/LINKAGE  */
 DCL ON BIT(1)CONSTANT('1'B);       /* MEANING SET TO ONE    @X04SVLC*/
 DCL OFF BIT(1)CONSTANT('0'B);      /* MEANING RESET TO ZERO @X04SVLC*/
 DCL ZERO  FIXED(15) CONSTANT(0);   /* MEANING EXACTLY ZERO  @X04SVLC*/
 DCL ONE   FIXED(15) CONSTANT(1);   /* MEANING EXACTLY ONE   @X04SVLC*/
 DCL CZERO BIT(8) CONSTANT('00000000'B);/* MEANING CHARACTER ZERO
                                                             @X04SVLC*/
 DCL EOV FIXED(15)CONSTANT(55);     /* EOV SVC NUMBER        @X04SVLC*/
   DCL HWORD4 FIXED(15) INIT(4);        /* CONSTANT FOR LINKAGE      */
./ ADD NAME=IDARPLE
* /*                                                                 */
* /*     RPLE - REQUEST PARAMENTER LIST EXTENSION                    */
* /*                                                                 */
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73183/Y02113                                        */
* /*                                                                 */
* /*     THIS EXTENSION IS CREATED BY THE ISAM INTERFACE OPEN        */
* /*     ROUTINE.  IT IS LOCATED IMMEDIATELY AFTER THE RPL.          */
* /*                                                                 */
*  DCL   1 IDARPLE         BASED,       /* RPL EXTENSION             */
*          2 RPLIICB       PTR (31),    /* PTR TO IICB               */
*          2 RPLDECB       PTR (31),    /* PTR TO DECB (0-FREE RPL)  */
*          2 RPLIIBFR      PTR (31),    /* PTR TO DYNAMIC BUFFER     */
*          2 RPLRPLPT      PTR (31),    /* PTR TO NEXT RPL (0-LAST)  */
*          2 RPLIITSB      CHAR(1),     /* TEST AND SET BYTE         */
*          2 *             BIT (24),    /* RESERVED                  */
*          2 RPLSAVE       PTR(31),     /* REG SAVE AREA             */
*          2 RPLSAVE2      PTR (31);    /* SAVE AREA                */
./ ADD NAME=IDARST14
         MACRO
&NAME    IDARST14
&NAME    LH    R14,PLHRETO(,RPLH)      GET CURRENT OFFSET
         SH    R14,HWORD4              BACK UP 1 WORD
         STH   R14,PLHRETO(,RPLH)      STORE NEW OFFSET
         L     R14,PLHRET1(R14,RPLH)   RESTORE R14
         MEND
./ ADD NAME=IDARTMAC
*%GOTO PLSRTMAC;  /*
          MACRO
&LABEL   IDARTMAC
*
*        LEVEL=1 02/24/75.
*
FORCORE   DSECT
IDARSTAT  EQU DXATEXC1 *     RECOVERY ROUTINE STATUS AREA.
          ORG DXATEXC1 *     THIS IS THE SAME AS DXATEXC1.
RSTAT     DS  0F *           STATUS BITS FOR RECOVERY.
RSTATOPT  DS  BL1 *          OPTION OR OPERATION.
*
IDARLOAD EQU X'80'                IFG0192A IN PROGRESS.
IDARIICL EQU X'40'                ISAM INTERFACE CLOSE IN PROGRESS.
IDARIIOP EQU X'20'                ISAM INTERFACE OPEN IN PROGRESS.
IDARTCLO EQU X'10'                VSAM TYPE=T CLOSE IN PROGRESS.
IDAREOV  EQU X'08'                VSAM EOV IN PROGRESS.
IDARCLOS EQU X'04'                VSAM CLOSE IN PROGRESS.
IDAROPEN EQU X'02'                VSAM OPEN IN PROGRESS.
IDARVRP  EQU X'01'                BLDVRP OR DLVRP IN PROGRESS.
*
RSTATCRO  DS  BL1 *          CHECKPOINT/RESTART OPTION         @Z30SSDT
*
IDARCKPT EQU X'80'                CHECKPOINT IN PROGRESS.      @Z30SSDT
IDARRSTR EQU X'40'                RESTART IN PROGRESS.         @Z30SSDT
IDARCRCU EQU X'20'                CHECKPOINT/RESTART CLEANUP.  @Z30SSDT
IDARCURS EQU X'10'                RECURSION IF ON.             @Z30SSDT
*
RSTATOP2  DS  BL1  *         SECOND BYTE OF O/C/E INDICATORS.  @Z30SSMD
*
RSTATCSA  EQU X'80'          O/C/E IS OBTAINING CSA STORAGE.   @Z30SSMD
*
          DS  CL1  *         RESERVED - UNUSED.
IDARRTN   EQU DXATEXC2 *     SECOND WORD OF STATUS
          ORG DXATEXC2 *     ROUTINE IN CNTL.
RSTATRTN  DS  CL4 *          ROUTINE IN CONTROL.
          ORG DXATCOM1 *     DEFINE THE BASE FOR IDAESPL.
IDAESPL   DS CL16  *         BLD/DLVRP ESTAE P/L AREA.
          ORG DXJBF *        BASE THE R/T SAVE AREA.
IDARTSA  DS CL72 *          SAVE AREA FOR R/T IF BLDVRP/DLVRP.
*
*
*
     MEND   */
*%PLSRTMAC:;
*        /* IDAVGTT */
*        /* -THE VGTT (VSAM GLOBAL TERMINATION TABLE) IS     @Z30SSMD*/
*        /*  USED BY VSAM I/O SUPPORT TO KEEP TRACK OF       @Z30SSMD*/
*        /*  GLOBAL RESOURCES WHICH MUST BE RELEASED UNDER   @Z30SSMD*/
*        /*  TERMINATION CONDITIONS.                         @Z30SSMD*/
*        /*                                                  @Z30SSMD*/
*        /*  LEVEL=2  07/23/75.                              @Z40WSRL*/
*        /*                                                  @Z30SSMD*/
*        DCL 1 IDAVGTT BASED BDY(WORD),/* IDAVGTT- VSAM GLOBAL
*                                         TERMINATION TABLE. */
*              3 VGTTID CHAR(4),       /* BLOCK NAME ALWAYS = 'VGTT' */
*              3 VGTTTYPE   BIT(8), /* TYPE OF VGTT          @Z30SSMD*/
*                5 VGTTSDS BIT(1), /* SYSTEM DATA SET VGTT   @Z40WSRL*/
*                5 VGTTGSR BIT(1), /* GSR VGTT, VGTT HAS USE COUNT.*/
*                5 VGTTLSR BIT(1), /* LSR VGTT.              @Z30SSMD*/
*                5 VGTTCTLG BIT(1), /* CTLG OPEN IN PROGRESS.*/
*                5 VGTTOPEN BIT(1), /* NORMAL DATA SET VGTT. @Z30SSMD*/
*                5 * BIT(3), /* RESERVED - UNUSED.           @Z30SSMD*/
*              3 * CHAR(1),       /* RESERVED- UNUSED.       @Z30SSMD*/
*              3 VGTTGSRK FIXED(8), /* GSR KEY IF VGTTGSR ON @Z40ESSR*/
*              3 VGTTSP FIXED(8),      /* SUBPOOL IN WHICH THE VGTT AND
*                                       THE CORE RESIDE.     @Z30SSMD*/
*              3 VGTTSIZE FIXED(31),   /* SIZE OF THE VGTT,BYTES.*/
*              3 VGTTNEXT PTR(31),     /* ADDRESS OF THE VGTT FOR
*                                       THE NEXT SPHERE,=0 IF LAST.*/
*              3 VGTTBIB PTR(31),     /* SPHERE IDENTIFIER @Z30SSMD*/
*              3 VGTTVUSE FIXED(31),      /* VSRT USE COUNT IF GSR.*/
*              3 VGTTPSB PTR(31),  /* PTR TO THE PROTECTED SPHERE BLK*/
*              3 * PTR(31),                      /* RESERVED, UNUSED */
*              3 VGTTCORE CHAR(*); /* IF LSR, THE CORE PREFIXED. */
*        /*                                                  @Z30SSMD*/
*        /* MISCELLANEOUS DECLARES.                          @Z30SSMD*/
*        /*                                                  @Z30SSMD*/
*        DCL VGTTNAME CHAR(4) CONSTANT('VGTT'); /* NAME OF VGTT USED TO
*                                       FILL IN VGTTID FIELD */
*        /* IDARTSA - RESERVES A STANDARD 72 BYTE SAVE AREA IF
*                     BLDVRP/DLVRP IS IN PROGRESS.           @Z30SSMD*/
*        DCL IDARTSA CHAR(72) DEFINED(DXJBF); /* R/T SAVE AREA.*/
*        /* IDAESPL - RESERVES 4 WORDS IN FORCORE FOR ESTAE IF
*           BLDVRP/DLVRP IS IN PROGRESS.                     @Z30SSMD*/
*        DCL  IDAESPL CHAR(16) BDY(WORD) DEFINED(DXATCOM1);/*ESTAE P/L.
*                                                            @Z30SSMD*/
*        /*  IDARRPL- PROVIDES IECRRPL COMPATABLITIY FOR IDAOCEA1. */
*        DCL 1 IDARRPL CHAR(4) DEFINED(DXATCOM1), /* VSAM R/T P/L.*/
*              2 * CHAR(1),/* IECRRPL COMPATABILITY.         @Z30SSMD*/
*              2 IDARRFLG CHAR(1), /* IECRRPL COMPATABILITY. @Z30SSMD*/
*                3 * BIT(4), /* IECRRPL COMPATABILITY.       @Z30SSMD*/
*                3 RRPLVSAM BIT(1), /* RRFAMSTR COMPATABILITY. */
*                3 * BIT(3), /* IECRRPL COMPATABILITY.       @Z30SSMD*/
*              2 * CHAR(2); /* IECRRPL COMPATABILITY.        @Z30SSMD*/
*
*        /*                                                  @Z30SSMD*/
*        /*     VSAM RECOVERY STATUS INDICATORS.             @Z30SSMD*/
*        /*                                                  @Z30SSMD*/
* DCL 1 IDARSTAT DEFINED(DXATEXC1),  /* RECOVERY ROUTINE STATUS AREA.*/
*       2 RSTAT BIT(32),             /* STATUS FOR RECOVERY. @Z30SSMD*/
*         3 RSTATOPT CHAR(1),        /* OPTION OR OPERATION.         */
*         3 RSTATCRO CHAR(1),        /* CHECKPOINT/RESTRT OP @Z30SSDT*/
*           4 IDARCKPT BIT(1),       /* CHECKPT IN PROGRESS  @Z30SSDT*/
*           4 IDARRSTR BIT(1),       /* RESTART IN PROGRESS  @Z30SSDT*/
*           4 IDARCRCU BIT(1),       /* C/R CLEANUP IN PROG  @Z30SSDT*/
*           4 IDARCURS BIT(1),       /* RECURSION IF ON      @Z30SSDT*/
*         3 RSTATOP2 CHAR(1),       /* O/C/E INDICATORS, 2ND BYTE.   */
*           4 RSTATCSA BIT(1),      /* O/C/E OBTAINING CSA CORE.     */
*           4 * BIT(7),             /* RESERVED - UNUSED, AVAILABLE. */
*         3 *        CHAR(1);       /* RESERVED-UNUSED.      @Z30SSMD*/
* DCL 1 IDARRTN DEFINED(DXATEXC2),  /* WORD TWO OF VSAM STATUS SWITCHES
*                                                            @Z30SSMD*/
*        2 RSTATRTN CHAR(4);        /* RTNE IN CNTL.         @Z30SSMD*/
*
*        /*                                                  @Z30SSMD*/
*        /*      CONSTANTS FOR SETTING RSTATOPT.             @Z30SSMD*/
*        /*                                                  @Z30SSMD*/
* DCL IDARLOAD BIT(8) CONSTANT('80'X); /*IFG0192A/2Y IN CNTL.
*                                                            @Z30SSMD*/
* DCL IDARIICL BIT(8) CONSTANT('40'X); /*II CLOSE IN PROGRESS. */
* DCL IDARIIOP BIT(8) CONSTANT('20'X); /*II OPEN IN PROGRESS. */
* DCL IDARTCLO BIT(8) CONSTANT('10'X); /*TCLOSE IN PROGRESS. */
* DCL IDAREOV  BIT(8) CONSTANT('08'X); /*EOV IN PROGRESS. */
* DCL IDARCLOS BIT(8) CONSTANT('04'X); /*CLOSE IN PROGRESS. */
* DCL IDAROPEN BIT(8) CONSTANT('02'X); /*OPEN IN PROGRESS. */
* DCL IDARVRP BIT(8) CONSTANT('01'X); /*BLDVRP/DLVRP IN PROGRESS.
*                                                            @Z30SSMD*/
*
*        /*                                                  @Z30SSMD*/
*        /*      CONSTANTS FOR SETTING RSTATRTN.             @Z30SSMD*/
*        /*                                                  @Z30SSMD*/
*
* DCL IDAR192A CHAR(4) CONSTANT('192A'); /*IDA0192A IN CNTL.@Z30SSMD*/
* DCL IDAR192B CHAR(4) CONSTANT('192B'); /*IDA0192B IN CNTL.@Z30SSMD*/
* DCL IDAR192C CHAR(4) CONSTANT('192C'); /*IDA0192C IN CNTL.@Z30SSMD*/
* DCL IDAR192D CHAR(4) CONSTANT('192D'); /*IDA0192D IN CNTL.@Z30SSMD*/
* DCL IDAR192F CHAR(4) CONSTANT('192F'); /*IDA0192F IN CNTL.@Z30SSMD*/
* DCL IDAR192G CHAR(4) CONSTANT('192G'); /*IDA0192G IN CNTL.@Z30SSMD*/
* DCL IDAR192M CHAR(4) CONSTANT('192M');/* IDA0192M IN CNTL.@Z30SSMD*/
* DCL IDAR192P CHAR(4) CONSTANT('192P'); /*IDA0192P IN CNTL.@Z30SSMD*/
* DCL IDAR192S CHAR(4) CONSTANT('192S'); /*IDA0192S IN CNTL.@Z30SSMD*/
* DCL IDAR192V CHAR(4) CONSTANT('192V'); /*IDA0192V IN CNTL.@Z30SSMD*/
* DCL IDAR192W CHAR(4) CONSTANT('192W'); /*IDA0192W IN CNTL.@Z30SSMD*/
* DCL IDAR192Y CHAR(4) CONSTANT('192Y');/* IDA0192Y IN CNTL.@Z30SSMD*/
* DCL IDAR192Z CHAR(4) CONSTANT('192Z'); /*IDA0192Z IN CNTL.@Z30SSMD*/
* DCL IDAR200B CHAR(4) CONSTANT('200B'); /*IDA0200B IN CNTL.@Z30SSMD*/
* DCL IDAR200T CHAR(4) CONSTANT('200T'); /*IDA0200T IN CNTL.@Z30SSMD*/
* DCL IDAR231B CHAR(4) CONSTANT('231B'); /*IDA0231B IN CNTL.@Z30SSMD*/
* DCL IDAR231T CHAR(4) CONSTANT('231T'); /*IDA0231T IN CNTL.@Z30SSMD*/
* DCL IDAR557A CHAR(4) CONSTANT('557A'); /*IDA0557A IN CNTL.@Z30SSMD*/
* DCL IDARA05B CHAR(4) CONSTANT('A05B'); /*IDA0A05B IN CNTL.@Z30SSDT*/
* DCL IDARC05B CHAR(4) CONSTANT('C05B'); /*IDA0C05B IN CNTL.@Z30SSDT*/
* DCL IDARC06C CHAR(4) CONSTANT('C06C'); /*IDA0C06C IN CNTL.@Z30SSDT*/
* DCL IDARI96C CHAR(4) CONSTANT('I96C'); /*IDA0I96C IN CNTL.@Z30SSDT*/
*
*        /*                                                  @Z30SSMD*/
*        /* END OF IDARTMAC.                                 @Z30SSMD*/
*        /*                                                  @Z30SSMD*/
./ ADD NAME=IDASFI
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDASFI                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = SUB-FUNCTION INFORMATION.                   */
 /*                                                                  */
 /*   FUNCTION = IDASFI DEFINES THE STRUCTURE OF THE PROBLEM         */
 /*              DETERMINATION SUB-FUNCTION INFORMATION AREA.        */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = N/A                                  */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDASFI BASED.              */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VS/1 RELEASE 4, VS2 RELEASE 3.                        */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 29 APRIL 74                              */
 /*                                                                  */
 /********************************************************************/
   DCL 1 IDASFI BDY(WORD) BASED,    /* SUB-FUNCTION INFORMATION      */
       2 SFIDESC FIXED(8),          /* FORMAT DESCRIPTOR CODE        */
       2 * CHAR(3),                 /* UNUSED                        */
       2 SFIRETCD FIXED(31),        /* SUB-FUNCTION RETURN CODE      */
       2 * CHAR(1),                 /* RESERVED FOR REASON CODE      */
       2 SFIRSNCD FIXED(8),         /* REASON CODE                   */
       2 SFIMODID CHAR(2);          /* LAST TWO CHAR'S OF MOD NAME   */
./ ADD NAME=IDASMFR
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
 %IDASMFR: MACRO;
  DCL R CHAR;                           /*MACLIST ENTRY BEING PROCD*/
  DCL I FIXED;                          /*MACLIST NUMBER BEING PROCD*/
  DCL H CHAR;                           /*LABEL NAME HEADER*/
  DCL T CHAR;
  DCL D CHAR;
  I=0;                                  /*INIT COUNTER*/
 START:
   I=I+1;                               /*BUMP ENTRY NBR*/
   IF I>NUMBER(MACLIST) THEN GOTO SMFREND;  /*EXIT IF ALL PROC DONE*/
   R=MACLIST(I);
   IF R='62' THEN GOTO BEGIN;           /*RECORD 62 IS SUPPORTED*/
   IF R='63' THEN GOTO BEGIN;           /*RECORD 63 IS SUPPORTED*/
   IF R='64' THEN GOTO BEGIN;           /*RECORD 64 IS SUPPORTED*/
   IF R='67' THEN GOTO BEGIN;           /*RECORD 67 IS SUPPORTED*/
   IF R='68' THEN GOTO BEGIN;           /*RECORD 68 IS SUPPORTED*/
   IF R='69' THEN GOTO BEGIN;           /*RECORD 69 IS SUPPORTED*/
   GOTO START;
 BEGIN:
   ANS ('/* SMF RECORD 'R'*/') COL(6);
   ANS ('DCL 1 SMFRCD'R' BASED,/*FIRST LEVEL DCL*/') SKIP COL(4);
   H='SMF'R;/*FORM HEADER*/
   T='2 'H;
   D='  3 'H;
   ANS (T'LEN FIXED(15),/*RECORD LENGTH*/') SKIP COL(10);
   ANS (T'SEG FIXED(15),/*SEGMENT DESCRIPTION*/') SKIP COL(10);
   ANS (T'RSV CHAR(1),/*RESERVED*/') SKIP COL(10);
   ANS (T'RTY FIXED(8),/*RECORD TYPE 'R'*/')  SKIP COL(10);
   ANS (T'TME CHAR(4),/*TIME OF DAY*/') SKIP COL(10);
   ANS (T'DTE CHAR(4),/*DATE*/') SKIP COL(10);
   ANS (T'SID CHAR(2),/*SYSTEM IDENTIFICATION*/') SKIP COL(10);
   ANS (T'MOD CHAR(2),/*SYSTEM MODULE ID*/') SKIP COL(10);
   ANS (T'JNM CHAR(8),/*JOB NAME*/') SKIP COL(10);
   ANS (T'RST CHAR(4),/*READER START TIME*/')  SKIP COL(10);
   ANS (T'RDT CHAR(4),/*READER START DATE*/')  SKIP COL(10);
   ANS (T'UID CHAR(8),/*USER INDENTIFICATION*/')  SKIP COL(10);
   IF R='62' THEN GOTO REC62;
   IF R='63' THEN GOTO REC63;
   IF R='64' THEN GOTO REC64;
   IF R='67' THEN GOTO REC67;
   IF R='68' THEN GOTO REC68;
   IF R='69' THEN GOTO REC69;
   GOTO START;
 REC62:
   ANS (T'IND BIT(32),/*GOOD/BAD INDICATORS*/')  SKIP COL(10);
   ANS (D'OOK BIT(1),/*OPEN WAS SUCCESSFUL*/') SKIP COL(10);
   ANS (D'SVL BIT(1),/*SECURITY VIOLATION*/') SKIP COL(10);
   ANS (T'CNM CHAR(44),/*CATALOG DATA SET NAME*/') SKIP COL(10);
   ANS (T'CVS CHAR(6),/*CATALOG VOLUME SERIAL*/') SKIP COL(10);
   ANS (T'DNM CHAR(44),/*DATA SET NAME*/') SKIP COL(10);
   ANS (T'VCT FIXED(15),/*VOLUME COUNT*/') SKIP COL(10);
   ANS (T'VLT (*),/*VOLUME LIST*/') SKIP COL(10);
   ANS (D'VSR CHAR(6),/*VOLUME SERIAL*/') SKIP COL(10);
   ANS (D'DTY CHAR(4);/*DEVICE TYPE*/') SKIP COL(10);
   GOTO START;
 REC63:
   ANS (T'CIN FIXED(15),/*INDICATORS*/') SKIP COL(10);
   ANS (T'NES FIXED(15),/*NEW CATALOG ENT SIZE*/') SKIP COL(10);
   ANS (T'OES FIXED(15),/*OLD CATALOG ENT SIZE*/') SKIP COL(10);
   ANS (T'CNM CHAR(44),/*CATALOG NAME*/') SKIP COL(10);
   ANS (T'NCT CHAR(*);/*NEW CATALOG ENT*/') SKIP COL(10);
   ANS ('DCL 'H'OCT CHAR(*) BASED;/*OLD CATALOG ENT*/') SKIP COL(4);
   GOTO START;
 REC64:
   ANS (T'RIN BIT(8),/*RECORDING INDICATORS*/') SKIP COL(10);
   ANS (D'CLO BIT(1),/*RCD WRITTEN BY CLOSE*/') SKIP COL(10);
   ANS (D'VSW BIT(1),/*RCD BY EOV-VOL SWITCH*/') SKIP COL(10);
   ANS ('3 'H'OSP BIT(1),/*RCD BY EOV-OUT OF SPACE*/') SKIP COL(12);
   ANS (T'DTY BIT(8),/*DATA SET TYPE*/') SKIP COL(10);
   ANS (D'DTA BIT(1),/*DATA*/') SKIP COL(10);
   ANS (D'IDX BIT(1),/*INDEX*/') SKIP COL(10);
   ANS (T'CNM CHAR(44),/*CATALOG NAME*/') SKIP COL(10);
   ANS (T'DNM CHAR(44),/*DATA SET NAME*/') SKIP COL(10);
   ANS (T'NTR FIXED(15),/*NBR OF TRACKS REQD*/') SKIP COL(10);
   ANS (T'CHR CHAR(4),/*CURRENT HIGH RBA*/') SKIP COL(10);
   ANS (T'ESL FIXED(15),/*EXTENT SEGMENT LGTH*/') SKIP COL(10);
   ANS (T'FEX CHAR(0);/*FIRST EXTENT*/') SKIP COL(10);
   ANS ('/* EXTENT TABLE - ONE PER VOLUME ON LINE AT TIME RECORD 64 WRIT
 TEN */') SKIP COL(6);
   ANS ('DCL 1 'H'EXT BASED,/*TABLE OF EXTENTS*/') SKIP COL(4);
   ANS (D'FCC CHAR(4),/*FROM CCHH*/') SKIP COL(10);
   ANS (D'TCC CHAR(4),/*TO CCHH*/') SKIP COL(10);
   ANS (D'VSN CHAR(6),/*VOLUME SERIAL NBR*/') SKIP COL(10);
   ANS (D'CUS CHAR(4),/*CUU AND SPINDLE ID*/') SKIP COL(10);
   ANS ('3 'H'UTY CHAR(4),/*UNIT TYPE - UCBTYPE */') SKIP COL(12);
   ANS ('        3  * CHAR(4);/*RESERVED*/') SKIP COL(10);
   ANS ('/* STATISTICS AT OPEN TIME */') SKIP COL(6);
   ANS ('DCL 1 'H'STS BASED,/*DATA SET STATISTICS*/') SKIP COL(4);
   ANS (T'SLN FIXED(31),/*STATISTICS SEG LGTH*/') SKIP COL(10);
   ANS (T'NIL FIXED(31),/*NBR-INDEX LEVEL-OPEN*/') SKIP COL(10);
   ANS (T'NEX FIXED(31),/*NBR-EXTENTS-OPEN*/') SKIP COL(10);
   ANS (T'NLR FIXED(31),/*NBR-LOGICAL RCD-OPEN*/') SKIP COL(10);
   ANS (T'NDE FIXED(31),/*NBR-DELETES-OPEN*/') SKIP COL(10);
   ANS (T'NIN FIXED(31),/*NBR-INSERTS-OPEN*/') SKIP COL(10);
   ANS (T'NUP FIXED(31),/*NBR-UPDATES-OPEN*/') SKIP COL(10);
   ANS (T'NRE FIXED(31),/*NBR-RETRIEVES-OPEN*/') SKIP COL(10);
   ANS (T'NFS FIXED(31),/*NBR-FREE SPACE-OPEN*/') SKIP COL(10);
   ANS (T'NCS FIXED(31),/*NBR-CI SPLITS-OPEN*/') SKIP COL(10);
   ANS (T'NAS FIXED(31),/*NBR-CA SPLITS-OPEN*/') SKIP COL(10);
   ANS (T'NEP FIXED(31),/*NBR-EXCPS COUNT-OPEN*/') SKIP COL(10);
   ANS ('/*CHANGE IN STATISTICS DURING PROCESSING*/') SKIP COL(6);
   ANS (T'DIL FIXED(31),/*CHANGE-NBR INDEX LEVEL*/') SKIP COL(10);
   ANS (T'DEX FIXED(31),/*CHANGE-NBR EXTENTS*/') SKIP COL(10);
   ANS (T'DLR FIXED(31),/*CHANGE-NBR LOGICAL RCD*/') SKIP COL(10);
   ANS (T'DDE FIXED(31),/*CHANGE-NBR DELETES*/') SKIP COL(10);
   ANS (T'DIN FIXED(31),/*CHANGE-NBR INSERTS*/') SKIP COL(10);
   ANS (T'DUP FIXED(31),/*CHANGE-NBR UPDATES*/') SKIP COL(10);
   ANS (T'DRE FIXED(31),/*CHANGE-NBR RETRIEVES*/') SKIP COL(10);
   ANS (T'DFS FIXED(31),/*CHANGE-NBR FREE SPACE*/') SKIP COL(10);
   ANS (T'DCS FIXED(31),/*CHANGE-NBR CI SPLITS*/') SKIP COL(10);
   ANS (T'DAS FIXED(31),/*CHANGE-NBR CA SPLITS*/') SKIP COL(10);
   ANS (T'DEP FIXED(31);/*CHANGE-NBR EXCP COUNT*/') SKIP COL(10);
   GOTO START;
 REC67:
   ANS (T'DIN BIT(8),/*DELETE INDICATORS*/') SKIP COL(10);
   ANS (D'UNC BIT(1),/*UNCATALOG*/') SKIP COL(10);
   ANS (D'SCR BIT(1),/*SCRATCH*/') SKIP COL(10);
   ANS (T'DTY BIT(8),/*DATA SET TYPE*/') SKIP COL(10);
   ANS (D'CLS BIT(1),/*CLUSTER*/') SKIP COL(10);
   ANS (D'USR BIT(1),/*USER DATA SET*/') SKIP COL(10);
   ANS (D'IDX BIT(1),/*INDEX DATA SET*/') SKIP COL(10);
   ANS (T'CNM CHAR(44),/*CATALOG NAME*/') SKIP COL(10);
   ANS (T'DNM CHAR(44),/*DATA SET NAME*/') SKIP COL(10);
   ANS (T'CES FIXED(15),/*CATALOG ENTRY SIZE*/') SKIP COL(10);
   ANS (T'CEN CHAR(*);/*CATALOG ENTRY*/') SKIP COL(10);
   GOTO START;
 REC68:
   ANS (T'CNM CHAR(44),/*CATALOG NAME*/') SKIP COL(10);
   ANS (T'ONM CHAR(44),/*OLD DATA SET NAME*/') SKIP COL(10);
   ANS (T'NNM CHAR(44);/*NEW DATA SET NAME*/') SKIP COL(10);
   GOTO START;
 REC69:
   ANS (T'CUS CHAR(4),/*CUU AND SPINDLE ID*/') SKIP COL(10);
   ANS (T'NDS FIXED(15),/*NBR AM/0 DATA SPACES*/') SKIP COL(10);
   ANS (T'NUC FIXED(15),/*NBR UNALLOCATED CYL*/') SKIP COL(10);
   ANS (T'NUT FIXED(15),/*NBR UNALLOCATED TRKS*/') SKIP COL(10);
   ANS (T'LUC FIXED(15),/*LRGT NBR UNALLOC CYL*/') SKIP COL(10);
   ANS (T'LUT FIXED(15),/*LRGT NBR ALLOC TRKS*/') SKIP COL(10);
   ANS (T'CNM CHAR(44),/*CATALOG NAME*/') SKIP COL(10);
   ANS (T'VSR CHAR(6);/*VOLUME SERIAL NBR*/') SKIP COL(10);
   GOTO START;
 %SMFREND: END IDASMFR;
./ ADD NAME=IDASSL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDASSL                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = SWAP SAVE LIST.                             */
 /*                                                                  */
 /*   FUNCTION = IDASSL CONTAINS A LIST OF CONTROL BLOCKS TO BE      */
 /*              CHAINED AFTER OPEN IS GUARANTEED TO OPEN. ADDITIONAL*/
 /*              LISTS ARE CHAINED AS REQUIRED.                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE OPEN ACB WORK AREA.*/
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192A.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 2 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDASSL BASED,             /* SWAP SAVE LISTS               */
          2 SSLSUBPL FIXED (8),     /* SUBPOOL NUMBER OF THIS SSL    */
          2 SSLLENTH FIXED (24),    /* LENGTH OF THIS LIST           */
          2 SSLID CHAR (8),         /* BLOCK IDENTIFER               */
          2 SSLNXPTR PTR (31),      /* PTR TO NEXT SSL OR 0 IF END
                                       OF CHAIN                      */
          2 SSLACEN FIXED (15),     /* NUMBER OF ACTIVE ENTRIES      */
          2 * FIXED (15),           /* RESERVED                      */
          2 SSLENTRY (16),          /* SWAP SAVE ENTRY               */
            3 SSLSWPTR PTR (31),    /* PTR TO SWAP WORD              */
            3 SSLSWAP FIXED (31)    /* SWAP CONTENTS                 */
    ;
    DCL IDASSLID CHAR (8) CONSTANT (' IDASSL '); /* CHAR CONSTANT
                                       FOR SSLID                     */
./ ADD NAME=IDASVR14
         MACRO
&NAME    IDASVR14
&NAME    LH    R15,PLHRETO(,RPLH)      GET CURRENT OFFSET
         ST    R14,PLHRET1(R15,RPLH)   STORE R14
         LA    R15,4(,R15)             ADVANCE OFFSET
         STH   R15,PLHRETO(,RPLH)      STORE NEW OFFSET
         MEND
./ ADD NAME=IDATRACE
*/******************************************************************/
*/*  MACRO NAME = IDATRACE                                         */
*/*                                                                */
*/*  DESCRIPTIVE NAME = VSAM TRACE WORK AREA DSECT                 */
*/*                                                                */
*/*  FUNCTION = DESCRIBES THE WORK AREA, DECB'S AND BUFFERS        */
*/*             FOR THE TRACE ROUTINES.                            */
*/*                                                                */
*/*  CONTROL BLOCK STRUCTURE = IDATRACE IS POINTED TO BY IDAAMB    */
*/*                                                                */
*/*  INCLUDED MACROS = NONE                                        */
*/*                                                                */
*/*  METHOD OF ACCESS = PL/S OR ASM.                               */
*/*                                                                */
*/*  CREATED BY = VSAM OPEN (CORE OBTAINED)                        */
*/*               IDA019SU (FIELDS INITIALIZED)                    */
*/*                                                                */
*/*  STATUS = VS/1 RELEASE 6                                       */
*/*           VS/2 RELEASE 3.7                                     */
*/*                                                                */
*/*  DATA OF LAST CHANGE = 19 MAY 1978                             */
*/*                                                                */
*/******************************************************************/
*  DCL 1 IDATRACE BASED ,               /* IDATRACE                */
*        2 SAVE1X ,                     /* MAIN SAVE AREA          */
*          3 TRAENTRY PTR(31),          /* IDA019ST ENTRY POINT    */
*          3 * CHAR(72),                /* SAVE AREA               */
*        2 PRTSAVE CHAR(64),            /* IDA019SU SAVE AREA      */
*        2 HOLDREGS CHAR(32),           /* WORK SAVE AREA          */
*        2 OLDSAVE PTR(31),             /* ADDRESS OF SWAPED SAVE  */
*        2 ROUTCDE PTR(31),             /* WTO ROUTE CODE          */
*        2 REPLY@ CHAR(24),             /* WTOR PARM LIST          */
*          3   *   CHAR(16),            /* INPUT AREA FOR WTORS    */
*          3 REPLYMSG BIT(32),          /* WTOR TEXT PARMS         */
*            4 REPLYLYL BIT(8),         /* INPUT REPLY LENGTH      */
*            4 REPLYIN BIT(24),         /* PTR TO REPLY INPUT AREA */
*          3 RELYECB CHAR(4),           /* ECB FOR WTOR            */
*        2 MSGLNG CHAR(4),              /* MESSAGE LENGTH          */
*        2 OUTLINE CHAR(133),           /* PRINT LINE              */
*          3 MESSAGES CHAR(133),        /* MESSAGE BUILD AREA      */
*           4 HEADER CHAR(133),         /* HEADER BUILD AREA       */
*            5 * BIT(8),                /*                         */
*            5 ADDRESS CHAR(6),         /* ADDRESS PART OF PRINT   */
*            5 * BIT(8),                /*                         */
*            5 DISPLACE CHAR(3),        /* DISPLACEMENT IN PRINT   */
*            5 * CHAR(2),               /*                         */
*            5 LINE1 CHAR(39),          /* FIRST PART OF PRINT     */
*            5 LINE2 CHAR(38),          /* 2ND PART OF PRINT       */
*            5 ENGLISH CHAR(34),        /* TRANSLATED PART OF PRINT*/
*            5 * CHAR(9),               /*                         */
*        2 DLLLINE CHAR(66),            /* DLL FORMAT BUILD AREA   */
*        2 OUTREG   CHAR(4) BDY(WORD),  /* INTERNAL RETURN REG     */
*        2 IBUFFC   CHAR(4),            /* ADDR OF INDEX BUFC      */
*        2 DBUFFC   CHAR(4),            /* ADDR OF DATA BUFC       */
*        2 UNPACK   CHAR(12),           /* FILED USED TO UNPACK    */
*        2 WORK1    CHAR(4),            /* START DUMP ADDRESS      */
*        2 WORK2    CHAR(4),            /* ALIGNED DUMP ADDRESS    */
*        2 WORK3    CHAR(4),            /* DDD VALUE               */
*        2 WORK5    CHAR(4),            /* END OF DATA FOR ZERO    */
*        2 WORK6    CHAR(4),            /* CURRENT PRINT LENGTH    */
*        2 IRBNUM   CHAR(4),            /* IRB INTERRUPT NUMBER    */
*        2 CPLH     CHAR(4),            /* CURRENT PLH ADDRESS     */
*        2 UPGPTR   CHAR(4),            /* UPG TABLE ADDRESS       */
*        2 INLENGTH CHAR(4),            /* REPLY LENGTH            */
*        2 AMBL     CHAR(4),            /* ADDRESS OF AMBL         */
*        2 IAMB     CHAR(4),            /* ADDRESS OF INDEX AMB    */
*        2 DAMB     CHAR(4),            /* ADDRESS OF DATA AMB     */
*        2 RPL      CHAR(4),            /* ADDRESS OF RPL          */
*        2 PLH      CHAR(4),            /* ADDRESS OF PLH          */
*        2 VATADDR  CHAR(4),            /* ADDRESS OF VAT          */
*        2 BUFFLEN  CHAR(4),            /* LENGTH OF USER BUFFERS  */
*        2 STATUS BIT(8),               /* 1 CALL STATUS FLAGS     */
*          3 WTOR BIT(1),               /* WTOR ISSUED             */
*          3 GOOD BIT(1),               /* CALL WAS HANDLED        */
*          3 INDXPROC BIT(1),           /* WORKING IN INDEX CBS    */
*          3 HEADOUT BIT(1),            /* HEADER MSG WAS ISSUED   */
*          3 UPGSHORT BIT(1),           /* SHORT UPG PRINT         */
*          3 PATHDONE BIT(1),           /* FINISHED PATH PROCESSING*/
*          3 BASEDONE BIT(1),           /* FINISHED BASE PROCESSING*/
*          3 UPGDONE BIT(1),            /* DOING UPG PROCESSING    */
*        2 STATUS2 CHAR(1),             /* 2 CALL STATUS FLAGS     */
*          3 UNSWAP BIT(1),             /* HAD TO UNSWAP THE PARM  */
*          3 * BIT(7),                  /*                         */
*        2 HOOKCALL CHAR(2),            /* CALLING HOOK NUMBER     */
*        2 SAVEIN1 CHAR(60) BDY(WORD),  /* INPUT REG SAVE AREA     */
*          3 * CHAR(4),                 /*                         */
*          3 RPLIN CHAR(4),             /* INPUTTED RPL ADDRESS    */
*          3 PLHIN CHAR(4),             /* INPUTTED PLH ADDRESS    */
*          3 AMBIN CHAR(4),             /* INPUTTED AMB ADDRESS    */
*          3 * CHAR(36),                /* INPUT REGS 4 THRU 12    */
*          3 R13IN CHAR(4),             /* INPUTTED REG 13         */
*          3 R14IN CHAR(4),             /* INPUTTED REG 14 (RETURN)*/
*        2 SAVE2X,                      /* SAME AS SAVE1X          */
*          3 SAVEIN2 CHAR(560),         /*                         */
*        2 SAVE3X,                      /* SAME AS SAVE1X          */
*          3 SAVEIN3 CHAR(560),         /*                         */
*        2 SAVE4X CHAR(20),             /* GETMAIN SAVE AREA 1     */
*        2 SAVE5X CHAR(20),             /* GETMAIN SAVE AREA 2     */
*        2 SAVE6X CHAR(20),             /* GETMAIN SAVE AREA 3     */
*        2 FLAG0 BIT(8),                /* CONTROL FLAGS           */
*          3 SWAPED   BIT(1),           /* PARM LIST IS SWAPED     */
*          3 *        BIT(1),           /*                         */
*          3 INDEXOFF BIT(1),           /* TURNED INDEX OPTION OFF */
*          3 NOCORE   BIT(1),           /* GETMAIN FAILED          */
*          3 NOSAVE   BIT(1),           /* NO SAVE AREA FOR ENTRY  */
*          3 CASPLIT  BIT(1),           /* CA SPLIT IN PROGRESS    */
*          3 CISPLIT  BIT(1),           /* CI SPLIT IN PROGRESS    */
*          3 NODDNAME BIT(1),           /* BAD TRACE DS DDNAME     */
*        2 FLAG1 BIT(8),                /*                         */
*          3 STOP     BIT(1),           /* TERMINATE BIT           */
*          3 COUNTOLY BIT(1),           /* COUNT MODE              */
*          3 MVS      BIT(1),           /* IOSB/IOMB, NOT IOB      */
*          3 ADDRONLY BIT(1),           /* ADDRESS DISPLAY MODE    */
*          3 PARMS    BIT(1),           /* HAVE INPUT PARMS        */
*          3 *        BIT(1),           /*                         */
*          3 RMERRCD  BIT(1),           /* HAVE ERROR CODE         */
*          3 COUNTING BIT(1),           /* HAVE START/STOP VALUES  */
*        2 FLAG2 BIT(8),                /* FLAGS TO DETERMINE THE  */
*          3 DATACB   BIT(1),           /* CONTROL BLOCKS TO PRINT */
*          3 INDEXCB  BIT(1),           /*                         */
*          3 RPLX     BIT(1),           /*                         */
*          3 ACBX     BIT(1),           /*                         */
*          3 PLHX     BIT(1),           /*                         */
*          3 ALLCB    BIT(1),           /*                         */
*          3 BUFFCX   BIT(1),           /*                         */
*          3 AMBLX    BIT(1),           /*                         */
*        2 FLAG3 BIT(8),                /*                         */
*          3 BUFFX    BIT(1),           /*                         */
*          3 IOBX     BIT(1),           /*                         */
*          3 CPAX     BIT(1),           /*                         */
*          3 ICWAX    BIT(1),           /*                         */
*          3 AMBX     BIT(1),           /*                         */
*          3 AMDSBX   BIT(1),           /*                         */
*          3 ARDBX    BIT(1),           /*                         */
*          3 DEBX     BIT(1),           /*                         */
*        2 FLAG4 BIT(8),                /*                         */
*          3 BSPHX    BIT(1),           /*                         */
*          3 UPTX     BIT(1),           /*                         */
*          3 BIBX     BIT(1),           /*                         */
*          3 HEBX     BIT(1),           /*                         */
*          3 VATX     BIT(1),           /*                         */
*          3 VSRTX    BIT(1),           /*                         */
*          3 RECDX    BIT(1),           /*                         */
*          3 KEYX     BIT(1),           /*                         */
*        2 FLAG5 BIT(8),                /*                         */
*          3 REGX     BIT(1),           /*                         */
*          3 IICBX    BIT(1),           /* LAST CB OPTION BIT      */
*          3 DLL      BIT(1),           /* WANTS OUTPUT IN DLL     */
*          3 PAPSAVE  BIT(1),           /* WANTS PAPER SAVE        */
*          3 NOTE1    BIT(1),           /* WANTS LIMIT PRINT       */
*          3 AIXX     BIT(1),           /* WANTS AIX RE-PROMPT     */
*          3 COUNTX   BIT(1),           /* WANTS COUNT PROMPT      */
*          3 ERRCDPMT BIT(1),           /* WANTS ERROR CODE PMT    */
*        2 FLAG6 BIT(8),                /* ERROR CODE FROM OPTR    */
*        2 AIXIN  CHAR(3),              /* AIX PARM LIST           */
*        2 AIXOPT BIT(8),               /* AIX FLAGS               */
*          3 * BIT(4),                  /* SAME AS FLAG 5 EXCEPT   */
*          3 ONLYCALL BIT(1),           /* PRINT ONLY THE CALLER   */
*          3 AIXNOAIX BIT(1),           /* DOESNT WANT AIX         */
*          3 AIXNOBSE BIT(1),           /* DOESNT WANT BASE        */
*          3 AIXUPG BIT(1),             /* DOES WANT UPG           */
*        2 UPGCOUNT BIT(8),             /* COUNTER OF UPGS DONE    */
*        2 PSWKEY BIT(8),               /* OPEN PSW KEY            */
*        2 ECB@ CHAR(4) BDY(WORD),      /* NORMAL WTOR ECB         */
*        2 LPMBADR CHAR(4),             /* VARIOUS CB POINTERS     */
*        2 IBUFFLEN CHAR(4),
*        2 DBUFFLEN CHAR(4),
*        2 HOOK CHAR(4),                /* ACTIVE TRACE HOOK NUMS  */
*        2 JOBNAME CHAR(8),             /* JOBNAME FOR MESSAGES    */
*        2 STEPNAME CHAR(8),            /* STEP NAME FOR MESSAGES  */
*        2 DDNAME CHAR(8),              /* DDNAME OF DS BEING TRAC */
*        2 COUNTS  CHAR(4),             /* START COUNT VALUE       */
*        2 COUNTE  CHAR(4),             /* STOP COUNT VALUE        */
*        2 COUNT2  CHAR(4),             /* TOTAL COUNT VALUE       */
*        2 COUNT   CHAR(4),             /* GOOD COUNT VALUES       */
*        2 DECB@0 CHAR(80),             /* 20 DECB ADDRESSS        */
*        2 OPENLST CHAR(4),             /* OPEN PARM LIST          */
*        2 CURREC CHAR(4) BDY(DWORD),   /* POINTER TO CURRENT REC  */
*        2 CURDECBT CHAR(4),            /* POINTER TO CUR DECB     */
*        2 ZEROLINE CHAR(40),           /* ZERO LINE MESSAGE AREA  */
*        2 TRACE CHAR(88),              /* TRACE OUTPUT DCB        */
*        2 DECB0 CHAR(400),             /* 20 DECBS                */
*        2 BUFFER0 CHAR(53200);         /* 20 BUFFERS              */
*/******************************************************************/
*%GOTO   IDAEND;
         MACRO
         IDATRACE  &DSECT=YES
         AIF ('&DSECT' EQ 'NO').NODS
IDATRACE DSECT
.NODS    ANOP
         AGO   .TRDSECT
IDATRACE DS    0F
.TRDSECT ANOP
SAVE1X   DS    19F          MAIN SAVE AREA FOR EXTERNAL CALLS
PRTSAVE  DS    16F          IDA019SU SAVE AREA
HOLDREGS DS    8F           WORKING SAVE AREA
OLDSAVE  DS    F            ADDRESS OF SAVE AREA THAT WAS SWAPED
ROUTCDE  DS    F            ROUTING CODE FOR WTO
REPLY@   DS    XL11         INPUT AREA FOR WTOR'S
REPLY2   DS    XL5          PADDING THE INPUT AREA
* WTO PARAMETER LIST
REPLYMSG EQU   *
REPLYLYL DS    XL1          REPLY INPUT LENGTH (10)
REPLYIN  DS    XL3          ADDRESS OF THE REPLY AREA (REPLY)
RELYECB  DS    F            ADDRESS OF THE WTOR ECB
MSGLNG   DS    F            LENGTH OF THE OUTPUT MESSAGE
*** OUTPUT AND MESSAGE BUILD AREA. ********************************
OUTLINE  DS    XL133               PRINT LINE
MESSAGES EQU   OUTLINE
HEADER   EQU   OUTLINE
ADDRESS  EQU   OUTLINE+1
DISPLACE EQU   OUTLINE+8           DDD VALUE
LINE1    EQU   OUTLINE+13          FIRST SECTION OF DUMP
LINE2    EQU   OUTLINE+52          SECOND SECTION OF DUMP
ENGLISH  EQU   OUTLINE+90          TRANSLATED PART OF DUMP
DLLLINE  DS    XL66                2ND PRINT LINE FOR DLL FORMAT
**********************************************************************
OUTREG   DS    F
IBUFFC   DS    F
DBUFFC   DS    F
UNPACK   DS    3F
WORK1    DS    F                      START DUMP ADDRESS
WORK2    DS    F                      ALIGNED DUMP ADDRESS
WORK3    DS    F                      DDD VALUE (LAST 3 BYTES)
WORK5    DS    F                      END OF DATA FOR ZEROCHECK
WORK6    DS    F                      CURRENT PRINT LENGTH
IRBNUM   DS    F
CPLH     DS    F
UPGPTR   DS    F
INLENGTH DS    F
AMBL     DS    F                      AMBL ADDRESS
IAMB     DS    F                      INDEX AMB
DAMB     DS    F                      DATA AMB
RPL      DS    F
PLH      DS    F
VATADDR  DS    F
BUFFLEN  DS    F
STATUS   DS    XL1
WTOR     EQU   128
GOOD     EQU   64
INDXPROC EQU   32
HEADOUT  EQU   16
UPGSHORT EQU   8
PATHDONE EQU   4
BASEDONE EQU   2
UPGDONE  EQU   1
STATUS2  DS    XL1
UNSWAP   EQU   128
HOOKCALL DS    XL2                    CALLER HOOK NUMBER
SAVEIN1  DS    15F
RPLIN    EQU   SAVEIN1+4              ADDRESS OF CALLERS REG 1
PLHIN    EQU   SAVEIN1+8              ADDRESS OF CALLERS REG 2
AMBIN    EQU   SAVEIN1+12             ADDRESS OF CALLERS REG 3
R13IN    EQU   SAVEIN1+52             ADDRESS OF CALLERS REG 13
R14IN    EQU   SAVEIN1+56             ADDRESS OF CALLERS REG 14
*************************** END OF SAVE 1 *****************************
SAVE2X   DC    (*-SAVE1X)X'00'        2ND SAVE AREA, SAME AS SAVE1.
SAVEIN2  EQU   SAVE2X+SAVEIN1-SAVE1X
*************************** END OF SAVE 2 *****************************
SAVE3X   DC    (SAVE2X-SAVE1X)X'00'   3RD SAVE AREA, SAME AS SAVE1.
SAVEIN3  EQU   SAVE3X+SAVEIN1-SAVE1X
*************************** END OF SAVE 3 *****************************
SAVE4X   DS    5F                     4TH SAVE AREA INCASE OF GETMAIN
SAVE5X   DS    5F                     5TH SAVE AREA INCASE OF GETMAIN
SAVE6X   DS    5F                     6TH SAVE AREA INCASE OF GETMAIN
************************** FLAG1 *************************
FLAG0    DS    XL1
SWAPED   EQU   128
INDEXOFF EQU   32
NOCORE   EQU   16
NOSAVE   EQU   8
CASPLIT  EQU   4
CISPLIT  EQU   2
NODDNAME EQU   1
FLAG1    DS    XL1                ***** FLAG 1
STOP     EQU   128
COUNTOLY EQU   64
MVS      EQU   32
ADDRONLY EQU   16
PARMS    EQU   8
UNUSED   EQU   4
RMERRCD  EQU   2                   HAVE SUPPLIED ERROR CODE
COUNTING EQU   1                   DO COUNT VALUES
FLAG2    DS    XL1                ***** FLAG 2
DATACB   EQU   128                 WANTS DATA CB'S
INDEXCB  EQU   64                  WANTS INDEX CB'S
RPLX     EQU   32                  WANTS RPL
ACBX     EQU   16                  WANTS ACB
PLHX     EQU   8                   WANTS PLH
ALLCB    EQU   4                   WANTS ALL CB'S PRINTED
BUFFCX   EQU   2                   WANTS BUFFC PRINT
AMBLX    EQU   1                   WANTS AMBL PRINT
FLAG3    DS    XL1                ***** FLAG 3
BUFFX    EQU   128                 WANTS BUFFER PRINT
IOBX     EQU   64                  WANTS IOB PRINT
CPAX     EQU   32
ICWAX    EQU   16                  WANTS ICWA, IMWA OR DIWA (IF DATA)
AMBX     EQU   8                   WANTS AMB PRINT
AMDSBX   EQU   4                   WANTS AMDSB PRINT
ARDBX    EQU   2                   WANTS ARDB, EDB, LPMB PRINT
DEBX     EQU   1                   WANTS DEB
FLAG4    DS    XL1                ***** FLAG 4
BSPHX    EQU   128                 WANTS BSPH PRINT
UPTX     EQU   64                  WANTS UPT PRINT
BIBX     EQU   32                  WANTS BIB AND CMB PRINT
HEBX     EQU   16                  WANTS HEB PRINT
VATX     EQU   8                   WANTS VAT AND VMT PRINT
VSRTX    EQU   4                   WANTS VSRT PRINT
RECDX    EQU   2                   WANTS USER RECORD
KEYX     EQU   1                   WANTS SEARCH ARGUMENT
FLAG5    DS    XL1                ***** FLAG 5
REGX     EQU   128                 WANTS REGS
IICBX    EQU   64                  WANTS IICB AND DCB
DLL      EQU   32                  WANTS OUTPUT IN DLL FORMAT
PAPSAVE  EQU   16                  WANTS PAPER SAVED
NOTE1    EQU   8                   SINGLE PRINT OPTION
AIXX     EQU   4                   WANTS REPROMPT FOR AIX STUFF
COUNTX   EQU   2                   COUNT MODE
ERRCDPMT EQU   1                   PROMPT FOR ERROR CODE
FLAG6    DS    XL1                 ERROR CODE FROM OPERATOR
AIXIN    DS    XL3                 AIX PARM LIST
AIXOPT   DS    XL1                 UNIQUE INFO FOR AIX
ONLYCALL EQU   8
AIXNOAIX EQU   4
AIXNOBSE EQU   2
AIXUPG   EQU   1
UPGCOUNT DS    XL1                 COUNT OF UPGRADES DONE.
PSWKEY   DS    XL1                 PSW KEY
ECB@     DS    F                   NORMAL WTOR ECB
LPMBADR  DS    F
IBUFFLEN DS    F
DBUFFLEN DS    F
HOOK     DS    F
JOBNAME  DS    2F
STEPNAME DS    2F
DDNAME   DS    2F
COUNTS   DS    F
COUNTE   DS    F
COUNT2   DS    F
COUNT    DS    F
DECB@0   DS    F                     A(DECB0)
DECB@1   DS    F                     A(DECB1)
DECB@2   DS    F                     A(DECB2)
DECB@3   DS    F                     A(DECB3)
DECB@4   DS    F                     A(DECB4)
DECB@5   DS    F                     A(DECB5)
DECB@6   DS    F                     A(DECB6)
DECB@7   DS    F                     A(DECB7)
DECB@8   DS    F                     A(DECB8)
DECB@9   DS    F                     A(DECB9)
DECB@10  DS    F                     A(DECB10)
DECB@11  DS    F                     A(DECB11)
DECB@12  DS    F                     A(DECB12)
DECB@13  DS    F                     A(DECB13)
DECB@14  DS    F                     A(DECB14)
DECB@15  DS    F                     A(DECB15)
DECB@16  DS    F                     A(DECB16)
DECB@17  DS    F                     A(DECB17)
DECB@18  DS    F                     A(DECB18)
DECB@19  DS    F                     A(DECB19)
OPENLST  DS    F                     OPEN PARM LIST
         DS    0D           ALIGN FOR CDS INSTRUCTION
CURREC   DS    F                     A(BUFFER1)
CURDECBT DS    F                     A(DECB@0)
ZEROLINE DS    CL40                  ZERO LINE MESSAGE
**********************************************************************
*TRACE    DCB   DDNAME=TRACE,DSORG=PS,MACRF=W,RECFM=FBM,NCP=20,
*               BLKSIZE=2660,LRECL=133
TRACE    DS    CL88         ROOM FOR ONE DCB
DECB0    DS    20XL20       20 DECBS
BUFFER0  DS    20CL2660     20 BUFFERS
         MEND
*
*%IDAEND: ;
./ ADD NAME=IDAUPT
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAUPT                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = UPGRADE TABLE.                              */
 /*                                                                  */
 /*   FUNCTION = THE UPT CONTAINS INFORMATION RELATING TO THE        */
 /*              IMMEDIATE UPGRADE SET.                              */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE BIB (BIBUPT)       */
 /*                             WHENEVER THE IMMEDIATE UPGRADE SET   */
 /*                             IS OPENED.                           */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAUPT BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192F.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 1 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL
      1 IDAUPT BASED BDY(WORD),     /* UPGRADE TABLE                 */
       2 UPTHDR,                    /* UPT HEADER SECTION            */
        3 UPTID CHAR(1),            /* CONTROL BLOCK ID              */
        3 UPTFLG0 BIT(8),           /* FLAGS                         */
         4 UPTPWS BIT(1),           /* CONTINUE WITH SCAN            */
        3 UPTLEN FIXED(15),         /* LENGTH OF UPT                 */
       2 UPTNEW PTR(31),            /* ADDR OF NEW AIX RECORD        */
       2 UPTOLD PTR(31),            /* ADDR OF OLD AIX RECORD        */
       2 UPTRSC BIT(8),             /* RESOURCE BYTE -- USED TO
                                       SERIALIZE UPDATES             */
       2 UPTNOENT FIXED(8),         /* NUMBER OF AIX ENTRIES         */
       2 UPTLLEN FIXED(15),         /* LARGEST VALUE OF RKP + KEYLEN */
       2 UPTSA CHAR(72) BDY(WORD),  /* SAVE AREA                     */
        3 UPTBRPL PTR(31),          /* PTR TO BASE RPL               */
        3 UPTLSA PTR(31),           /* LAST SAVE AREA                */
        3 UPTBEREG FIXED(8),        /* BASE RPLERREG                 */
        3 UPTBERCD FIXED(8),        /* BASE RPLERRCD                 */
        3 * FIXED(8),               /* UNUSED                        */
        3 UPTSARES BIT(8),          /* UPT SAVE AREA RESOURCE BYTE   */
        3 UPTR14 PTR(31),           /* RETURN ADDR FROM IDA019R4
                                       AFTER I/O INITIATED           */
        3 UPTR15 CHAR(56) BDY(WORD),/* REST OF SAVE AREA             */
       2 UPTAXENT(*),               /* AIX ENTRY--ONE PER AIX        */
        3 UPTRPL PTR(31),           /* ADDR OF UPGRADE RPL           */
         4 UPTF1LOP BIT(8),         /* LAST OPERATION AGAINST UPG ACB*/
        3 UPTFLG1 BIT(16),          /* FLAGS                         */
         4 UPTF1LST BIT(1),         /* LAST ENTRY                    */
         4 UPTF1ATV BIT(1),         /* ENTRY IS ACTIVE FOR UPGRADE   */
         4 UPTF1NUK BIT(1),         /* NON-UNIQUE KEYS               */
         4 UPTF1NOP BIT(1),         /* AIX NOT OPEN                  */
         4 UPTF1NRF BIT(1),         /* NO RECORD FOUND ERR DETECTED  */
         4 UPTF1KEY BIT(1),         /* KEY BEING WORKED UPON
                                       0=OLD KEY 1=NEW KEY           */
         4 UPTF1RTY BIT(1),         /* LAST OPERATION BEING RETRIED  */
         4 UPTF1UPG BIT(1),         /* AIX IS IN UPGRADE             */
         4 UPTF1BKO BIT(1),         /* BACKOUT IS IN PROGRESS        */
         4 UPTF1LOG BIT(1),         /* THIS AIX HAD LOGICAL ERROR    */
         4 UPTF1PHY BIT(1),         /* THIS AIX HAD PHYSICAL ERROR   */
         4 UPTF1ERA BIT(1),         /* BASE FUNCTION WAS ERASE       */
         4 UPTF1PNU BIT(1),         /* BASE FUNCTION WAS PUT INSERT  */
         4 UPTF1PUD BIT(1),         /* BASE FUNCTION WAS PUT UPDATE  */
        3 UPTRKP FIXED(15),         /* RELATIVE KEY POSITION         */
        3 UPTPASS FIXED(8),         /* PROCESSING PASS NUMBER        */
        3 UPTLNCDE FIXED(8),        /* KEY LENGTH - ONE              */
        3 UPTBG FIXED(15);          /* LENGTH OF RPLAREA FIELD       */
    DCL
     (UPTOKEY CONSTANT('0'B),       /* OLD KEY FOR UPTF1KEY          */
      UPTNKEY CONSTANT('1'B)) BIT(1);/* NEW KEY FOR UPTF1KEY         */
    DCL
     (UPTLOPER CONSTANT('10000000'B),/* LAST OPERATION WAS ERASE     */
      UPTLOPGU CONSTANT('01000000'B),/* LAST OPERATION WAS GET UPDATE*/
      UPTLOPPU CONSTANT('00100000'B),/* LAST OPERATION WAS PUT UPDATE*/
      UPTLOPPN CONSTANT('00010000'B),/* LAST OPERATION WAS PUT NUP   */
      UPTLOPEN CONSTANT('00000000'B))/* LAST OPERATION WAS ENDREQ    */
          BIT(8);
./ ADD NAME=IDAVAT
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAVAT                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VALID AMBL TABLE.                           */
 /*                                                                  */
 /*   FUNCTION = THE VAT CONTAINS THE ADDRESS OF EACH AMBL CREATED   */
 /*              FOR A BASE KSDS.  THE VAT IS USED FOR VALIDITY CHECK*/
 /*              OF AMBL'S.                                          */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE JSCB (JSCBSHR).    */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAVAT BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192F.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 1 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDAVAT BASED BDY (DWORD), /* VALID AMBL TABLE              */
          2 VATHDR,                 /* HEADER                        */
            3 VATID CHAR(1),        /* CONTROL BLOCK ID              */
            3 * CHAR(1),            /* RESERVED                      */
            3 VATLEN FIXED(15),     /* LENGTH OF VAT                 */
          2 VATNEXT PTR(31),        /* ADDRESS OF NEXT VAT           */
          2 VATVSRT CHAR(8) BDY(DWORD), /* USED IN CDS INSTRUCTION   */
            3 VATVUSE FIXED(31),    /* VSRT USE CNT                  */
            3 VATVPTR PTR(31),      /* PTR TO VSRT                   */
          2 VATPAMBL PTR(31),       /* ADR 1ST AMBL IN PRIMARY CHAIN */
          2 VATVC FIXED(15),        /* USED BY AMBL FOR VALIDITY CHECK*/
            3 VATVRT FIXED(8),      /* TABLE NUMBER                  */
            3 VATENO FIXED(8),      /* NUMBER OF ENTRIES             */
          2 * CHAR(2),              /* NOT USED                      */
          2 VATNAE FIXED(31),       /* NUMBER OF ACTIVE ENTRIES      */
          2 VATAMBL(16) PTR(31);    /* ADDRESSES OF VALID AMBL'S     */
./ ADD NAME=IDAVBPH
 /*      DATASET  PAGE  CORRESPONDENCE  TABLE                        */
 /*                                                                  */
 /*      NAME       :    IDAVBPH                                     */
 /*                                                                  */
 /*      OWNER      :    VIRTUAL BLOCK PROCESSOR(VBP)                */
 /*                                                                  */
 /*      LANGUAGE   :    PL/S                                        */
 /*                                                                  */
 /*      USAGE      :    USED BY VIO ONLY                    @Z40WSSR*/
 /*                                                                  */
 /*      DESCRIPTION:    VBP'S CONTROL BLOCK THAT DESCRIBES  @Z40WSSR*/
 /*                      THE VIO DATASET. IT POINTS TO AN    @Z40WSSR*/
 /*                      EXTENSION THAT IS USED TO BUILD ASM @Z40WSSR*/
 /*                      AND RSM PARM LISTS(ACA & VCB)       @Z40WSSR*/
 /*                                                                  */
 /*      STORAGE ACQUIRED BY   IDAVBPO1 OR IDAVBPJ2 IN SWA   @Z40WSSR*/
 /*      STORAGE RELEASED BY   IDAVBPS1 FOR DSPCT HEADER &   @Z40WSSR*/
 /*                            IDAVBPS1/IDAVBPS2 FOR DSPCT-  @Z40WSSR*/
 /*                            EXTENSION                     @Z40WSSR*/
 /*      STATUS: VS2 RELEASE 4.1                             @Z40WSSR*/
 /*      LAST CHANGE: 10/07/75                               @Z40WSSR*/
 /*D066500                                                   @Z40WSSR*/
 /*                                                                  */
     DCL 1 VBPDSPCT BASED BDY(WORD),
           2 VBPHFIX BDY(WORD),          /*FIXED SECTION  */
            3 VBPHJJ BDY(WORD),          /*SECTION JOURNALED */
             4 VBPHNAME CHAR(4),        /* DSPCT BLOCK ID    @Z40WSSR*/
             4 VBPHLEN       FIXED(32), /* LENGTH OF HEADER          */
             4 VBPHLGN CHAR(8) BDY(WORD),/*LOGICAL GROUP NUMBER  */
               5 VBPHLGID    FIXED(32), /* LOGICAL GROUP IDENTIFIER */
                 6 VBPHLPG1  FIXED(16), /* ALL ZEROS                 */
                 6 VBPHLPG2  FIXED(16), /* IDENTIFIER                 */
             4 VBPHSYM CHAR(8) BDY(WORD),/* STORAGE LOCATOR SYMBOL   */
               5 VBPHSYM1 FIXED(32), /* 1ST SUBFIELD */
               5 VBPHSYM2 FIXED(32), /* 2ND SUBFIELD */
             4 VBPHPNP FIXED(15),       /* IF VBPHPAS IS ON, 1 + NO.
   OF PAGES ASSIGNED IN PRIOR OPERATION                      @Z40WSSR*/
             4 VBPHDSG       FIXED(16), /* DSPAGEID GENERATOR        */
             4 VBPHDSSZ      FIXED(32), /* MAX. D/S SIZE IN PAGES    */
             4 VBPHOPT       BIT(8),    /* PROCESSING OPTIONS        */
               5 VBPHINS     BIT(1),    /* NOT USED            */
               5 VBPHPGLD    BIT(1),    /* NOT USED          */
               5 VBPHRST     BIT(1),   /* IF ON, DSPCT FROM JOB JOURNAL,
                                 TO BE RESET BY IDAVBPO1.    @Z40WSSR*/
               5 VBPHPAS BIT(1),        /* IF ON, ASSIGN DONE IN PRIOR
      REGUEST */
               5 VBPHDEL BIT (1),   /* IF ON THEN AN ACTIVATE
                                      WAS ISSUED FOR THE LOGICAL
                                      GROUP BUT THE LOGICAL GROUP
                                      HAS BEEN RELEASED AND
                                      DOESN'T EXIST          @ZA00139*/
               5 VBPHPADD BIT(1), /* IF ON, ASSIGN MAP PAGES DURING
                                      RESTART                @Z40WSSR*/
               5 VBPHJRN BIT(1), /* IF VBPHJOU ON, PAGES ADDED SINCE
                                    JOURNALING. ELSE, PAGES ADDED SINCE
                                    CREATION                 @Z40WSSR*/
               5 VBPHJOU BIT(1), /* DSPCT SAVED/JOURNALED    @Z40WSSR*/
             4 VBPHSTA       BIT(8),    /* STATUS BYTE               */
               5 VBPHOPE     BIT(1),    /* IDAVBPO1 IN PROGRESS      */
               5 VBPHRW      BIT(1),/* IDAVBPP1  IN PROGRESS*/
               5 *      BIT(1),/* NOT USED                   @Z40WSSR*/
               5 VBPHSCR     BIT(1),    /* IDAVBPS1 IN PROGRESS      */
               5 VBPHCLO     BIT(1),    /* IDAVBPC1 IN PROGRESS      */
               5 *     BIT(3), /* NOT USED                   @Z40WSSR*/
             4 VBPHNMP     FIXED(15),/* CURRENT NO OF DSPCT MAP PAGES*/
             4 VBPHMMP       FIXED(15), /* MAX. MAP PAGES REQD.      */
             4 VBPHWSZ  FIXED(15), /* WINDOW SIZE IN PAGES   @Z40WSSR*/
             4 VBPHWAD       PTR(31),   /* WINDOW ADDRESS            */
             4 VBPHPRL       PTR(32),/* RELATIVE PAGE NO OF 1ST PAGE
      ASSIGNED TO WINDOW BY PRIOR ASSIGN REQUEST */
             4 VBPHRBN       FIXED(32), /* RBN ASGNED BY IEFXB500    */
           3 VBPHBUFC PTR(31), /*  ADDR OF BUFC */
             4 VBPHVOP  PTR(31), /* ADDR OF VOPEN PARM LIST */
           3 VBPHFRAR PTR(31), /* PTR TO RECOVERY COMM. AREA */
           3 VBPHVCB PTR(31), /* ADDR OF DSPCT EXTENSION     @Z40WSSR*/
           3 VBPHSAVE CHAR(72) BDY(WORD),/* 18 WORD REG. SAVE AREA   */
             4 * PTR(31),
             4 VBPHSAVO PTR(31),       /* ADDR OF CALLERS SAVE AREA  */
           3 SECSAVE CHAR(72) BDY(WORD),/* 2ND SAVE AREA */
            4 * PTR(31),
            4 SECSAVO PTR(31), /* ADDR OF CALLERS SAVE AREA */
      4 DSGSAVE FIXED(16),/* DSPAGEID GENERATOR SAVED IN IDAVBPJ2 */
      4 LGNSAVE CHAR(8),/* LGN SAVED IN IDAVBPJ2 */
         4 OPTSAVE BIT(8), /* USED TO SAVE THE SCRATCH STATUS OF
                            THE DATA SET AND IS SAVED IN MODULE
                               IDAVBPJ2                      @ZA00139*/
     3 VBPHSPUL BIT(8),/* SWA SUBPOOL NO. TO GET/FREEMAIN FOR THE DSPCT
   MAP                                                       @VS07802*/
      3 VBPHJRNP PTR(24), /* ADDR OF IEFXB500 PASSED FROM IDDWIJRN TO
                         IDAVBPJ1                            @Z30TSWT*/
   3 VBPHTCB PTR(32),/* TCB ADDR TO GET/FREEMAIN FOR THE DSPCT
   MAP AND DSPCT EXTENSION                                   @Z40WSSR*/
           2 VBPHMAD(*) PTR(31);   /* MAP PAGE POINTERS. ONE PER
                                      EACH MAP PAGE */

   /*     DSPCT EXTENSION. IS IN LSQA SUBPOOL 255.           @Z40WSSR*/
   /*     NO. OF MOVEOUT/ASSIGN VCBS=SIZE OF WINDOW IN PAGES @Z40WSSR*/
   /*     STORAGE ACQUIRED BY IDAVBPO1 & RELEASED BY         @Z40WSSR*/
   /*     IDAVBPS1                                           @Z40WSSR*/

   DCL 1 VBPVCB BDY(WORD) BASED(VBPHVCB), /* DSPCT EXTENSION @Z40WSSR*/
         2 VBPVFXD,
           3 VBPVNAME CHAR(4), /* ACRONYM ID - VCB           @Z40WSSR*/
           3 VBPVLEN FIXED(31), /* LENGTH OF DSPCT EXTENSION @Z40WSSR*/
           3 VBPVMAP   CHAR(24)BDY(WORD),/* USED AS AN ACA MAP & AS A
                                VCB FOR DSPCT PAGE MAPS      @Z40WSSR*/
           3 VCBSAVAD PTR(31), /* PTR TO 1ST VCB             @Z40WSSR*/
           3 VBPVAPTR PTR(31),  /* ADDR OF ASSIGN VCBS       @Z40WSSR*/
         2 VBPVMOVE(*) CHAR(24);/* MOVEOUT VCBS              @Z40WSSR*/
   DCL VBPVASIN(*) CHAR(24) BASED(VBPVAPTR); /* ASSIGN VCBS  @Z40WSSR*/
./ ADD NAME=IDAVBPI
 /*      VBP MODULE BRANCH VECTOR TABLE                              */
 /*                                                                  */
 /*  NAME:   IDAVBPI                                                 */
 /*                                                                  */
 /* OWNER:   VIRTUAL BLOCK PROCESSOR                                 */
 /*                                                                  */
 /* LANGUAGE:   PL/S 2                                               */
 /*                                                                  */
 /* USAGE:   MUST BE INCLUDED BY ALL PL/S MODULES THAT BRANCH INTO   */
 /*          VBP MODULES                                             */
 /*                                                                  */
 /* DESCRIPTION:   MAPS THE TRANSFER VECTOR OF THE FOLLOWING         */
 /*                VBP MODULES IN VBP LOAD MODULE - IDAVBPP1 @Z40WSSR*/
 /*                IDAVBPO1  IDAVBPS1  IDAVBPC1              @Z40WSSR*/
 /* STATUS:         VS2 RELEASE 4.1(CHANGE FLAG @Z40WSSR)    @Z40WSSR*/
 /* DATE OF LAST CHANGE: 06/26/75                            @Z40WSSR*/
 /*D7500,013000-013500                                       @Z40WSSR*/
 /*                                                                  */
     DCL VBPMOD(5) PTR(31) BASED(CVTPVBP);                 /*@Z40WSSR*/
   /* PTR TO IDAVBPO1 */
     DCL VOPEN    ENTRY BASED(VBPMOD(1)) VALRG(0) OPTIONS(NOFLOWS);
   /* PTR TO IDAVBPP1 */
     DCL VREADWR  ENTRY BASED(VBPMOD(2)) VALRG(0) OPTIONS(NOFLOWS);
   /* PTR TO IDAVBPC1 */
     DCL VCLOSE   ENTRY BASED(VBPMOD(3)) VALRG(0) OPTIONS(NOFLOWS);
   /* PTR TO IDAVBPS1 */
     DCL VSCRATCH ENTRY BASED(VBPMOD(5)) VALRG(0) OPTIONS(NOFLOWS);
./ ADD NAME=IDAVBPM
 /********************************************************************/
 /*     DSPCT MAP ENTRY                                              */
 /*      NAME     : IDAVBPM                                          */
 /*      OWNER    : VIO                                              */
 /*      LANGUAGE : PL/S II                                          */
 /*      USAGE    : INTERNAL TO VBP. USED IN ALL VBP MODULES THAT    */
 /*                 REFERENCE DSPCT MAP                              */
 /*      DESCRIPTION:  MAPS EACH DSPCT MAP ENTRY.                    */
 /*               INDICATES WHETHER THE CORRESPONDING DATA SET       */
 /*               PAGE HAS BEEN WRITTEN OUT OR NOT                   */
 /*                 ALSO HAS THE REAL STORAGE NUMBER(RSN) PASSED     */
 /*           BY RSM USED TO RECLAIM THE VIO PAGES IN CORE           */
 /********************************************************************/
 /*                                                                  */
     DCL MAPPAGE CHAR(4096) BASED(MAPPGPTR); /*MAP PAGE */
  /* MAP PAGE ENTRY */
     DCL 1 VBPMAPE BASED(DSPCTMPR) BDY(HWORD),
           2 VBPMFLG     BIT(8),        /* FLAG BYTE */
             3 VBPMRLPG  BIT(1),/* IF ON, PAGE CORRESPONDING TO MAP
               ENTRY EXISTS ON AUXILIARY STORAGE */
             3 *         BIT(7),        /* NOT USED                  */
           2 *           BIT(8),        /* NOT USED */
           2 VBPMRSN     FIXED(16);/* RSN USED FOR RECLAIMING VIO PAGES
              FROM REAL STORAGE.  */
./ ADD NAME=IDAVCRT
*/********************************************************************/
* /*                                                                 */
* /*     IDAVCRT (VSAM CHECKPOINT RESTART TABLE) DECLARATION         */
* /*                                                                 */
* /* MACRO NAME : IDAVCRT                                            */
* /*                                                                 */
* /* DESCRIPTIVE NAME : VSAM CHECKPOINT RESTART TABLE                */
* /*                                                                 */
* /* FUNCTION : THE VSAM CHECKPOINT RESTART TABLE (VCRT) IS USED BY  */
* /*       VSAM CHECKPOINT RESTART AS A MEANS OF PROCESSING THE      */
* /*       ALTERNATE INDEX ENVIRONMENT OF VSAM RELEASE TWO. THE VCRT */
* /*       IS SUBALLOCATED FROM VCRCORE, ALSO DESCRIBED BY THIS      */
* /*       MACRO, AND CONTAINS A COUNT, BY ENTRY TYPE, OF EACH ENTRY */
* /*       APPENDED TO THE VCRT. THERE ARE THREE TYPES OF ENTRIES:   */
* /*                                                                 */
* /*       1. THE FIRST ENTRY TYPE IS THE VCRT OPEN ENTRY USED BY    */
* /*       VSAM RESTART TO REBUILD THE CONTROL BLOCKS REQUIRED FOR A */
* /*       VALID RESTART.  THIS ENTRY IS EIGHT BYTES IN LENGTH AND   */
* /*       CONTAINS POINTERS TO THE USER AMBL, AND A SAVE AREA FOR   */
* /*       THE HEADER ELEMENT BLOCKS FOR THE CLUSTER.  THE SAVE AREA */
* /*       POINTER WILL BE ZERO IF THE CLUSTER IS PART OF THE        */
* /*       IMMEDIATE UPGRADE SET.                                    */
* /*                                                                 */
* /*       2. THE SECOND ENTRY TYPE IS THE VCRT UPGRADE ENTRY, WHICH */
* /*       POINTS TO THE UPGRADE AMBLS AND THE HEB SAVE AREAS TO BE  */
* /*       PROCESSED BY VSAM RESTART. THIS ENTRY IS EIGHT BYTES LONG */
* /*       AND WILL EXIST ONLY IF THE IMMEDIATE UPGRADE SET FOR THIS */
* /*       DATA SET WAS OPEN AT CHECKPOINT TIME.                     */
* /*                                                                 */
* /*       3. THE THIRD ENTRY TYPE IS THE VCRT INDEX ENTRY. EIGHT    */
* /*       BYTES IN LENGTH, THIS ENTRY EXISTS ONLY IF THE BASE DATA  */
* /*       SET IS A KSDS OPEN FOR CREATE MODE PROCESSING. THERE WILL */
* /*       BE ONE INDEX ENTRY FOR EACH INDEX LEVEL THAT EXISTS AT    */
* /*       CHECKPOINT TIME. THE INDEX ENTRY CONTAINS ICWA AND BUFFER */
* /*       POINTERS FOR THE INDEX LEVEL IT REPRESENTS.               */
* /*                                                                 */
* /* CONTROL BLOCK STRUCTURE : THE VCRT IS POINTED TO BY THE BIB     */
* /*                                                                 */
* /* INCLUDED MACROS : NONE                                          */
* /*                                                                 */
* /* METHOD OF ACCESS : DECLARE VCRTPTR AS PTR, AND                  */
* /*                    RESPECIFY VCRCORE AND VCRHEBSA BASED         */
* /*                                                                 */
* /* CREATED BY : VCRCORE IS CREATED BY VSAM CHECKPOINT AND FREED    */
* /*       BY THE VSAM C/R CLEANUP ROUTINE IN IGC0I96C FOR ALL       */
* /*       SITUATIONS, INCLUDING ERRORS IN VS CHECKPOINT.            */
* /*                                                                 */
* /* STATUS : VS2 RELEASE 3 - LEVEL = 0                              */
* /*                                                                 */
* /* DATE OF LAST CHANGE : 28 AUGUST 74                              */
* /*                                                                 */
*/********************************************************************/
*@EJECT;
*%GOTO   VCRT1;
* /*                                                                 */
* /*       VCRT DIAGRAM                                              */
* /*                                                                 */
* /*       0 *-----------------------------------------*             */
* /*           VCRID             VCRFLAG1                         */
* /*       4 -----------------------------------------             */
* /*                                                               */
* /*                        VCRIDNM                                */
* /*                                                               */
* /*      12 -----------------------------------------             */
* /*                        VCRCOREH                               */
* /*      16 -----------------------------------------             */
* /*               VCROPNCT            VCRUPGCT                   */
* /*      20 -----------------------------------------             */
* /*               VCRIDXCT            RESERVED                   */
* /*      24 -----------------------------------------             */
* /*                        VCRCISIZ                               */
* /*      28 -----------------------------------------             */
* /*                         VCRRBUF                               */
* /*      32 -----------------------------------------             */
* /*                         VCROPN                                */
* /*      36 -----------------------------------------             */
* /*                         VCRUPG                                */
* /*      40 -----------------------------------------             */
* /*                         VCRIDX                                */
* /*      44 *-----------------------------------------*             */
* /*                                                                 */
* /*                     VCRT OPEN ENTRY                             */
* /*                                                                 */
* /*         *-----------------------------------------*             */
* /*                         VCRHEBS                               */
* /*                 POINTER TO HEB SAVE AREA                      */
* /*         -----------------------------------------             */
* /*                         VCRAMBL                               */
* /*                   POINTER TO USER AMBL                        */
* /*         *-----------------------------------------*             */
* /*                                                                 */
* /*           THE VCRT UPGRADE ENTRY IS THE SAME AS THE OPEN ENTRY  */
* /*                                                                 */
* /*                THE VCRT INDEX ENTRY                             */
* /*                                                                 */
* /*         *-----------------------------------------*             */
* /*                         VCRICWA                               */
* /*                  POINTER TO INDEX ICWA                        */
* /*         -----------------------------------------             */
* /*                         VCRBUFPT                              */
* /*                POINTER TO ASSOCIATED BUFFER                   */
* /*         *-----------------------------------------*             */
* /*                                                                 */
* /*                                                                 */
*%VCRT1:  ;
*        DCL  1 IDAVCRT  BASED(VCRTPTR),    /* IDAVCRT               */
*               2 VCRID         BIT(8),     /* VCRT CONTROL BLOCK ID */
*               2 VCRFLAG1      BIT(24),    /* VCRT FLAGS            */
*                 3 VCRUPGSW    BIT(1),     /* VCRT ENTRY TYPE       */
*                                           /* 1=PROCESS VCRT UPGRADE*/
*                                           /* 0 = PROCESS VCRT OPEN */
*                 3 VCRLSR      BIT(1),     /* LSR SPECIFIED         */
*                 3 VCROUT      BIT(1),     /* OUTPUT ACB IS OPEN    */
*                 3 *           BIT(21),    /* RESERVED              */
*               2 VCRIDNM       CHAR(8),    /* VCRT CONTROL BLK NAME */
*               2 VCRCOREH      PTR(31),    /* PTR TO HEAD OF VCRCORE*/
*               2 VCROPNCT      FIXED(15),  /* OPEN ENTRY COUNT      */
*               2 VCRUPGCT      FIXED(15),  /* UPGRADE ENTRY COUNT   */
*               2 VCRIDXCT      FIXED(15),  /* INDEX ENTRY COUNT     */
*               2 *             FIXED(15),  /* RESERVED              */
*               2 VCRCISIZ      FIXED(31),  /* HIGH SPHERE CI SIZE   */
*               2 VCRSPHPT      PTR(31),    /* PTR TO SPHERE HEB SAVE*/
*               2 VCRRBUF       PTR(31),    /* PTR TO RESTART BUFFER */
*               2 VCROPN        PTR(31),    /* PTR VCRT OPEN ENTRIES */
*               2 VCRUPG        PTR(31),    /* PTR VCRT UPGRADE ENTRY*/
*               2 VCRIDX        PTR(31);    /* PTR VCRT INDEX ENTRIES*/
*/********************************************************************/
*/*                                                                  */
*/*             VCRT OPEN ENTRY                                      */
*/*                                                                  */
*/********************************************************************/
*        DCL  1 VCRENTRY(*)     BASED(VCROPN),
*               2 VCRHEBS       PTR(31),    /* POINTER TO HEB SAVE   */
*               2 VCRAMBL       PTR(31);    /* POINTER TO USER AMBL  */
*/********************************************************************/
*/*                                                                  */
*/*             VCRT UPGRADE ENTRY                                   */
*/*                                                                  */
*/********************************************************************/
*        DCL  1 VCRUPGRD(*)     BASED(VCRUPG),
*               2 VCRUHEBS      PTR(31),    /* POINTER TO HEB SAVE   */
*               2 VCRUAMBL      PTR(31);    /* PTR TO UPGRADE AMBL   */
*/********************************************************************/
*/*                                                                  */
*/*             VCRT INDEX ENTRY                                     */
*/*                                                                  */
*/********************************************************************/
*        DCL  1 VCRINDEX(*)     BASED(VCRIDX),
*               2 VCRICWA       PTR(31),    /* POINTER TO ICWA       */
*               2 VCRBUFPT      PTR(31);    /* PTR TO ASSOCIATED BUF */
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*             VCR CORE DESCRIPTION                                 */
*/*                                                                  */
*/********************************************************************/
*        DCL  1 VCRCORE         BASED,
*               2 VCRCHDR,                  /* VCR CORE HEADER       */
*                 3 VCRCNM      CHAR(8),    /* VCR CORE NAME FOR ID  */
*                 3 VCRCNEXT    PTR(31),    /* PTR TO NEXT CORE BLK  */
*                 3 VCRCDESC    FIXED(31),  /* CLEANUP INFORMATION   */
*                   4 VCRCSP    FIXED(8),   /* SUBPOOL               */
*                   4 VCRCLEN   FIXED(24),  /* LENGTH                */
*                 3 VCRCPTRA    PTR(31),    /* PTR TO 1ST AVAIL BYTE */
*                 3 VCRCLENA    FIXED(31),  /* LENGTH OF AVAIL CORE  */
*               2 VCRCDATA      CHAR(*);    /* CORE FOR DATA         */
*@SPACE;
*/********************************************************************/
*/*                                                                  */
*/*             VCR HEB SAVE DESCRIPTION                             */
*/*                                                                  */
*/********************************************************************/
*        DCL  1 VCRHEBSA        BASED,
*               2 VCRHHDR,                  /* HEADER PER CMB ENTRY  */
*                 3 VCRHNENT    FIXED(15),  /* NUMBER OF ENTRIES     */
*                 3 VCRHFLG     BIT(8),     /* HEADER FLAGS          */
*                   4 VCRHFCON  BIT(1),     /* CONTINUATION HEADER   */
*                   4 VCRHFREL  BIT(1),     /* FREEMAIN AT RESTART   */
*                 3 VCRHCID     FIXED(8),   /* RELATIVE CMB ENTRY NO.*/
*                 3 VCRHNEXT    PTR(31),    /* POINTER TO NEXT HEADER*/
*               2 VCRHENT(*) CHAR(LENGTH(HEBHDREL)) BDY(WORD),/* HEADER
*                                         ELEMENT SAVED AT CHECKPOINT*/
*                 3 VCRHEFMN,               /* FREEMAIN INFORMATION  */
*                   4 VCRHESP   FIXED(8),   /* SUBPOOL OF STORAGE    */
*                   4 VCRHELN   FIXED(24),  /* LENGTH OF GOTTEN CORE */
*                   4 VCRHESPT  PTR(31);    /* STORAGE ADDRESS       */
*@SPACE;
*        DCL  VCRNAME  CHAR(8) CONSTANT('IDAVCRT ');/* VCRT ID NAME  */
*        DCL  VCRCNAME CHAR(8) CONSTANT('VCRCORE ');/* VCR CORE NAME */
./ ADD NAME=IDAVIOT
    /*****************************************************************/
    /*                                                               */
    /* THE VIOT (VALID IOMB TABLE) CONTAINS THE ADDRESS OF EACH      */
    /* VALID IOMB WITHIN THE SHARED RESOURCE POOL.  THIS BLOCK IS    */
    /* POINTED TO BY THE VSRT AND BY ALL AMB'S UTILIZING THE SHARED  */
    /* RESOURCE POOL.  THE VIOT IS ONLY DEFINED FOR VS2.             */
    /*                                                               */
    /* VS2 RELEASE 3, 4/30/74, LEVEL=0                               */
    /*                                                               */
    /* METHOD OF ACCESS - RESPECIFY IDAVIOT AND VIOPTR BASED.        */
    /*                                                               */
    /*****************************************************************/
    DCL 1 IDAVIOT BASED BDY(WORD),  /* VALID IOMB TABLE              */
          2 VIOHDR,                 /* CONTROL BLOCK HEADER          */
            3 VIOID  CHAR(1),       /* BLOCK ID - CONSTANT X'16'     */
            3 *      CHAR(1),       /* RESERVED                      */
            3 VIOLEN FIXED(15);     /* LENGTH OF VIOT                */
    DCL VIOPTR BASED PTR(31);       /* PTR TO VALID IOMB             */
./ ADD NAME=IDAVIRT
*% GOTO PLS2;
         MACRO
IDAVIRT  DSECT
         DS    CL1                       RESERVED
VIRTFLAG DS    XL1                       FLAGS DESCRIBING REQUEST
         DS    CL2                       RESERVED
VIRTACB  DS    A                         POINTER TO ACB
VIRTUCB  DS    A                         PTR TO VIRTUAL UCB
VIRTEXT  DS    A                         PTR TO EXTENT LIST
VIRTTIOE DS    A                         PTR TO TIOT ENTRY
VIRTLENG DS    H                         LENGTH OF EXTENT LIST
         DS    H                         RESERVED
         MEND
*%PLS2:;
         DCL 1 IDAVIRT BDY(WORD) BASED,  /* STAGE VIRTUAL DEV PARM  */
               2 *        BIT(8),        /* RESERVED                */
               2 VIRTFLAG BIT(8),        /* FLAGS FOR OPTIONS       */
                 3 VIRTACQ  BIT(1),      /* PERFORM AN ACQUIRE      */
                 3 VIRTINHB BIT(1),      /* INHIBIT STAGING OR DESTG*/
                 3 VIRTNOUN BIT(1),      /* DO NOT UNBIND OR REL    */
                 3 VIRTBACB BIT(1),      /* ACQ OR REL BY ACB       */
                 3 VIRTBUCB BIT(1),      /* ACQ OR REL THIS UCB     */
                 3 VIRTBEXT BIT(1),      /* ACQ OR REL BY EXTENT LST*/
                 3 VIRTMNT  BIT(1),      /* VOLUME JUST MOUNTED     */
               2 *        FIXED(15),     /* RESERVED                */
               2 VIRTACB  PTR(31),       /* PTR TO ACB FOR DATA SET */
               2 VIRTUCB  PTR(31),       /* PTR TO UCB TO ACQ OR REL*/
               2 VIRTEXT  PTR(31),       /* PTR TO EXTENT LIST      */
               2 VIRTTIOE PTR(31),       /* PTR TO TIOT ENTRY       */
               2 VIRTLENG FIXED(15),     /* LENGTH OF EXTENT LIST   */
               2 *        FIXED(15);     /* RESERVED                */
./ ADD NAME=IDAVMT
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAVMT                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VOLUME MOUNT TABLE.                         */
 /*                                                                  */
 /*   FUNCTION = THE VMT DESCRIBES VOLUME SERIAL NUMBERS TO BE       */
 /*              MOUNTED.  A VMT IS CREATED FOR EACH DEVICE TYPE IN  */
 /*              THE OPERATIONAL SPHERE.                             */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE BIB (BIBVMT).      */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAVMT BASED.              */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192F.                         */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4, VS2 RELEASE 3.                         */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 1 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDAVMT BASED BDY (WORD),  /* VOLUME MOUNT TABLE            */
          2 VMTHDR,                 /* VMT HEADER                    */
            3 VMTID CHAR(1),        /* CONTROL BLOCK ID              */
            3  *    CHAR(1),        /* RESERVED                      */
            3 VMTLEN FIXED(15),     /* LENGTH OF VMT                 */
          2 VMTNXT PTR(31),         /* ADDRESS OF NEXT VMT           */
          2 VMTNOVOL FIXED(15),     /* NO. OF VOL ENTRIES IN TABLE   */
          2 * CHAR(3),              /* NOT USED                      */
          2 VMTDEV BIT(24),         /* DEVICE INFORMATION            */
            3 VMTDVOPT BIT(8),      /* DEVICE OPTIONS                */
            3 VMTDVTYP BIT(16),     /* DEVICE CLASS AND TYPE         */
          2 VMTVOL(*),              /* VOLUME ENTRY -- 1 PER VOLUME  */
            3 VMTUSECT FIXED(31),   /* USE COUNT                     */
            3 VMTVFLG1 BIT(8),      /* VOLUME FLAGS                  */
              4 VMTOPEN BIT(1),     /* VOL BEING PROCESSED BY OPEN   */
              4 * BIT(7),           /* NOT USED                      */
            3 * CHAR(1),            /* NOT USED                      */
            3 VMTVLSER CHAR(6),     /* VOLUME SERIAL NUMBER          */
            3 VMTUCB PTR(31);       /* ADDR OF UCB FOR VOLUME        */
./ ADD NAME=IDAVOP1
 /*                 VOPEN     INTERFACE     BLOCK                    */
 /*                                                                  */
 /*      NAME       :    IDAVOP1                                     */
 /*                                                                  */
 /*      OWNER      :    WINDOW INTERCEPT                            */
 /*                                                                  */
 /*      LANGUAGE   :    PL/S                                        */
 /*                                                                  */
 /*      DESCRIPTION:    PARAMETER CONTROL BLOCK BETWEEN IDDWITRM    */
 /*                           AND  IDAVBPO1(VOPEN)                   */
 /*                                                                  */
 /*      STORAGE ACQUIRED BY WINDOW INTERCEPT                        */
 /*                                                                  */
 /*      REFERRED AND UPDATED BY VBP'S VOPEN                         */
 /*                                                                  */
     DCL 1 IDAVOP1  BASED BDY(WORD),
           2 VBPOHPTR    PTR(31),       /* DSPCT HEADER POINTER      */
           2 VBPOWIA     PTR(31),       /* WINDOW ADDRESS            */
           2 VBPOLEN     FIXED(31),     /* WINDOW LENGTH IN PAGES */
           2 VBPODSSZ    FIXED(32),     /* MAX DATASET SIZE IN BYTES */
           2 VBPOFLG     BIT(8),        /* OPTION FLAG BYTE          */
             3 VBPOPGLD  BIT(1),        /* PAGE LOAD REQUIRED        */
             3 *         BIT(7);        /*   NOT USED                */
./ ADD NAME=IDAVSRB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAVSRB                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = VSAM SRB                                    */
*/*                                                                  */
*/*   FUNCTION = DECLARES SRB USED BY VSAM                           */
*/*                                                                  */
*/*   INCLUDED MACROS = IHASRB                                       */
*/*                                                                  */
*/*   METHOD OF ACCESS = PLS - SRBSECT IS BASED ON SRBPTR            */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 3.7 - CHANGE FLAG @ZA10855               */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = MAY 26, 1976                             */
*/*                                                                  */
*/********************************************************************/
    %SRB9999=',';                   /* DO NOT CLOSE SRB STRUCTURE    */
    %INCLUDE SYSLIB(IHASRB);        /* INCLUDE SYSTEM SRB MACRO      */
          5 SRBVSAM,                /* VSAM SRB APPENDAGE            */
           6 SRBVFLGS BIT(8),       /* VSAM PROCESSING FLAGS         */
            7 SRBVFIX BIT(1),       /* VSAM CONTROL BLOCKS ARE FIXED */
            7 * BIT(7),             /* RESERVED                      */
           6 * CHAR(3);             /* RESERVED                      */
./ ADD NAME=IDAVSRT
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAVSRT                                           */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM SHARED RESOURCE TABLE.                 */
 /*                                                                  */
 /*   FUNCTION = THE VSRT CONTAINS POINTERS TO BUFFER AND PLH POOLS  */
 /*              AS WELL AS POINTERS TO VARIOUS BLOCKS BUILT BY THE  */
 /*              BLDVRP ROUTINES.                                    */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = CHAINED OFF THE VAT (LSR OPTION) OR  */
 /*                             THE AMCBS (GSR OPTION).              */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAVSRT BASED.             */
 /*                                                                  */
 /*   CREATED BY: VSAM OPEN MODULE IDA0192Y.                         */
 /*                                                                  */
 /*   STATUS = VS2 RELEASE 4.                                @Z40ESSR*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 31 JAN. 75.                      @Z40ESSR*/
 /*                                                                  */
 /********************************************************************/
    DCL 1 IDAVSRT BASED BDY (WORD), /* VSAM SHARED RESOURCE POOL     */
        2 VSRTBKID CHAR (1),        /* BLOCK ID                      */
        2 VSRTKEY FIXED(8),         /* KEY OF GSR USER       @Z40ESSR*/
        2 VSRTLEN FIXED (15),       /* VSRT LENGTH IN BYTES          */
        2 VSRTID CHAR (8),          /* BLOCK IDENTIFIER              */
        2 VSRTFLGS,                 /* FLAG BYTES                    */
          3 VSRTGSRF BIT (1),       /* ON INDICATES GSR OPTION       */
          3 VSRTLSRF BIT (1),       /* ON INDICATES LSR OPTION       */
          3 VSRTIOBF BIT (1),       /* ON INDICATES IOB'S FIXED      */
          3 VSRTBFRF BIT (1),       /* ON INDICATES BUFFERS FIXED    */
          3 * BIT (12),             /* RESERVED                      */
        2 VSRTKL FIXED (8),         /* MAX KEY LENGTH                */
        2 VSRTSTRN FIXED (8),       /* STRNO FROM BLDVRP MACRO       */
        2 VSRTPLHH PTR (31),        /* POINTER TO PLH HEADER         */
        2 VSRTBUFH PTR (31),        /* POINTER TO BUFFER HEADER      */
        2 VSRTCPAH PTR (31),        /* POINTER TO CPA HEADER         */
        2 VSRTWAH PTR (31),         /* POINTER TO WORKAREA HEADER    */
        2 VSRTVIOT PTR (31),        /* POINTER TO VIOT (0 IN VS1)    */
        2 VSRTASCB PTR(31),     /* ADDRS OF ORIGINATING ASCB IF GSR. */
        2 VSRTNEXT PTR(31),         /* ADDR OF NEXT VSRT             */
        2 VSRTCSL (*),              /* ENTRIES FOR GOTTEN STORAGE    */
          3 VSRTCSLF,               /* FLAGS                         */
            4 VSRTCSFX BIT (1),     /* ON INDICATES FIXED STORAGE    */
            4 VSRTCSVS BIT (1),     /* INDICATES BLOCK IS VSRT       */
            4 VSRTCSBF BIT (1),     /* INDICATES BLOCK IS BUFFER     */
              5 VSRTCSGT BIT(1), /*GSR KEY(VSRTKEY) CORE IND @Z40ESSR*/
            4 VSRTCSPF BIT (1),     /* INDICATES  PFL BLOCK          */
              5 VSRTCSVG BIT(1),    /* INDIC VGTT PREFIX BLK @Z30SSDP*/
            4 VSRTCSWS BIT (1),     /* INDICATES BLOCK IS WORKING
                                       STORAGE                       */
            4 VSRTCSPL BIT (1),     /* INDICATES BLOCK IS PLH'S      */
            4 VSRTCSIO BIT (1),     /* INDICATES BLOCK IS IOB'S      */
            4 VSRTCSBH BIT (1),     /* INDICATES BLOCK IS BUFFER     */
          3 VSRTCSAD PTR (24),      /* POINTER TO GOTTEN STORAGE     */
          3 VSRTCSSP FIXED (8),     /* SUBPOOL NUMBER                */
          3 VSRTCSLN FIXED (24);    /* LENGTH OF GOTTEN STORAGE      */
./ ADD NAME=IDAVUCBL
* /*                                                                 */
* /* MACCOMP Y-2 SC1DE/SJD61                                         */
* /* MACSTAT Y-2 73103/Y02113                                        */
* /*                                                                 */
   DCL 1 IDAVUCBL BASED BDY(WORD),      /* UCB LIST */
         2 * BIT(8),
           3 VUCBLID BIT(1),            /* INDICATES UCB LIST */
           3 *       BIT(1),            /* MUST BE ZERO */
           3 VUCBLFAE BIT(1),           /* UCB LIST FREED AT END */
         2 * CHAR(1),
         2 VUCBLNBR FIXED(15),          /* NUMBER OF UCB ENTRIES */
         2 VUCBLVLA PTR(31),            /* POINTER TO VOLUME LIST */
         2 VUCBLENT (*),
           3 * BIT(8),
             4 VUCBLALC BIT(1),         /* INDICATES UCB ALLOCATED */
             4 VUCBLBAD BIT(1),         /* VOLUME NOT DISMOUNTABLE */
           3 VUCBLADR PTR(24);          /* POINTER TO UCB */
./ ADD NAME=IDAVVOLL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IDAVVOLL                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VOLUME LIST FOR VSAM VOLUME MOUNT.          */
 /*                                                                  */
 /*   FUNCTION = IDAVVOLL CONTAINS INFORMATIONS OF MOUNTED VOLUME.   */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = N/A                                  */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY IDAVVOLL BASED.            */
 /*                                                                  */
 /*   CREATED BY: N/A                                                */
 /*                                                                  */
 /*   STATUS = VS1 RELEASE 4   (CHANGE FLAG @X04SVXX)                */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 1 AUGUST 74                              */
 /*                                                                  */
 /********************************************************************/
   DCL 1 IDAVVOLL BASED BDY(WORD),      /* VOLUME LIST */
         2 * BIT(8),
           3 *       BIT(1),            /* MUST BE ZERO              */
           3 VVOLLID BIT(1),            /* INDICATES VOLUME LIST     */
           3 VVOLLTIO BIT(1),           /* INDICS VUCBL CREATED      */
           3 VVOLLOPE BIT(1),           /* CALLED BY OPEN            */
            3 VVOLLEOV BIT(1),          /* CALLED BY EOV             */
           3 VVOLLCAT BIT(1),           /* CALLED BY CATALOG         */
           3 VVOLLSWD BIT(1),           /* SEQUENCE SET WITH DATA    */
         2 * CHAR(1),
         2 VVOLLNBR FIXED(15),          /* NUMBER OF VOLSER ENTRIES */
         2 VVOLLTAB PTR(31),            /* PTR TO TIOT DD ENTRY (TIOE)*/
         2 VVOLLACB PTR(31),            /* PTR TO CATALOG ACB */
         2 VVOLLERR FIXED(31),          /* RETURN CODE       @X04SVRP*/
           3 VVOLLPDC FIXED(8),         /* PROB DET ERR CODE @X04SVRP*/
           3 VVOLLFNC FIXED(8),         /* FUNCTION CODE     @X04SVRP*/
           3 VVOLLSFC FIXED(8),         /* SUB-FUNCTION CODE @X04SVRP*/
           3 VVOLLCNT FIXED(8),         /* VOLUME COUNT      @X04SVRP*/
         2 VVOLLSFI CHAR(12),           /* SUB-FUNCTION INFORMATION
                                                        AREA @X04SVRP*/
         2 VVOLLBIB PTR(31),           /* PTR TO BIB         @X04SVRP*/
         2 VVOLLDEB PTR(31),           /* PTR TO DEB         @X04SVRP*/
         2 VVOLLENT (*),
           3 VVOLLUCB PTR(31),          /* PTR TO UCB USED           */
           3 * BIT(16),
             4 VVOLLMNT BIT(1),         /* INDICS VOLUME MOUNTED     */
             4 VVOLLVFY BIT(1),         /* VOLUME IS VERIFIED        */
           3 VVOLLVSR CHAR(6);          /* VOLSER FOR VOLUME         */
./ ADD NAME=IDAWAX
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAWAX                                            */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = WORK AREA FOR PATH PROCESSING               */
*/*                                                                  */
*/*   FUNCTION = CONTAINS POINTERS AND INDICATORS REQUIRED FOR PATH  */
*/*              PROCESSING                                          */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = POINTED TO BY THE IDAPLH WHEN AIX IS */
*/*              OPENED FOR PATH PROCESSING                          */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 13 AUG 74                                */
*/*                                                                  */
*/********************************************************************/
    DCL
      1 IDAWAX BASED(PLHWAX),       /* WORK AREA FOR PATH PROCESSING */
       2 WAXID FIXED(8),            /* ID FIELD                      */
       2 WAXFLG1 FIXED(8),          /* FLAGS                         */
        3 WAXSRAB BIT(1),           /* ONE INDICATES SRA BUILT       */
        3 WAXPUG BIT(1),            /* AIX IS IN UPGRADE SET         */
        3 WAXPS BIT(1),             /* LAST OPERATION WAS A PUT SEQ  */
        3 WAXNOADV BIT(1),          /* DON'T ADVANCE WAXXPTR @ZA10591*/
       2 WAXLEN FIXED(15),          /* LENGTH OF IDAWAX              */
       2 WAXPL FIXED(15),           /* AIX RECORD PTR LENGTH         */
       2 WAXXXXX2 FIXED(15),        /* UNUSED                        */
       2 WAXIRPL PTR(31),           /* POINTER TO INNER RPL          */
       2 WAXURPL PTR(31),           /* POINTER TO USERS RPL          */
       2 WAXRCDA PTR(31),           /* POINTER TO AIX RECORD         */
       2 WAXXPTR PTR(31),           /* POINTER TO CURRENT AIX PTR    */
       2 WAXEPTR PTR(31),           /* POINTER BEYOND LAST AIX PTR   */
       2 WAXBPLH PTR(31),           /* POINTER TO BASE PLH           */
       2 WAXSRAA PTR(31),           /* POINTER TO SAVED RECORD AREA  */
       2 WAXSRAL FIXED(31),         /* LENGTH OF SAVED RECORD AREA   */
       2 WAXXXXX3 FIXED(31);        /* UNUSED                        */
./ ADD NAME=IDAWSHD
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IDAWSHD                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = WORKING STORAGE HEADER                      */
*/*                                                                  */
*/*   FUNCTION = DESCRIBES BLOCKS OF CORE THAT ARE USED FOR WORKING  */
*/*              STORAGE                                             */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = POINTED TO BY IDAAMB                 */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY = VSAM OPEN                                         */
*/*                                                                  */
*/*   STATUS = VS/1 RELEASE 4  (CHANGE FLAG @X04SVXX)                */
*/*            @ZA26092                                              */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 15 APR 75                        @Z40ESSR*/
*/*                       = 01 MAR 78                        @ZA29035*/
*/*                                                                  */
*/********************************************************************/
* DCL 1 IDAWSHD BASED,              /* WORK SPACE HEADER             */
*      2 WSHDID CHAR(1),            /* CONTROL BLOCK ID-X'44'        */
*      2 WSHDPOOL FIXED(8),         /* SUBPOOL OF IDAWSHD            */
*      2 WSHDLEN FIXED(15),         /* LENGTH OF WORK SPACE HEADER   */
*      2 WSHDACHN PTR(31),          /* ACCESS CHAIN          @ZA29035*/
*       3 WSHDGMTB BIT(8),          /* GETMAIN RESOURCE BYTE @ZA26092*/
*       3 WSHDNEXT PTR(24),         /* PTR TO NEXT IDAWSHD   @ZA26092*/
*      2 WSHDGMWA CHAR(10),         /* GETMAIN WORK AREA             */
*      2 WSHDNUS FIXED(15),         /* NBR OF USED SLOTS             */
*      2 WSHDGMRA PTR(31),          /* GETMAIN RESULT                */
*      2 WSHDOCHN PTR(31),          /* ORDERED SLOT CHAIN            */
*      2 WSHDSLT(4),                /* WORK SPACE SLOT               */
*       3 WSHDSAD PTR(31),          /* POINTER TO BLOCK              */
*        4 * BIT(8),                /* FLAG FIELD            @Z30SSMR*/
*         5 * BIT(2),               /* RESERVED              @Z30SSMR*/
*         5 WSHDGSR BIT(1),         /* CORE IS IN GSR KEY    @Z40ESSR*/
*       3 WSHDSGMW,                 /* WORK AREA FOR SLOT GETMAIN    */
*        4 WSHDSFM,                 /* FREEMAIN FIELD FOR DELVRP     */
*         5 WSHDSFSP FIXED(8),      /* SUBPOOL FOR BLOCK             */
*         5 WSHDSFLN FIXED(24),     /* LENGTH IN BYTES OF BLOCK      */
*        4 WSHDSONX PTR(31),        /* PTR TO NEXT ON ORDERED CHN    */
*        4 WSHDSBV FIXED(15),       /* NBR OF BYTES PRE SLOT BIT     */
*        4 WSHDSFLG BIT(8),         /* WORK SPACE SLOT FLAGS         */
*         5 WSHDSFNO BIT(1),        /* SLOT HAS NO AVAILABLE CORE    */
*        4 WSHDSBM BIT(8);          /* BIT MASK                      */
./ ADD NAME=IDCCSAU
         /************************************************************/
         /*                                                          */
         /*  'AUDITMSS' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'MAP' OPTION                                             */
         DCL   MAP    BASED(FDTPTR(  1));

         /* 'CHECK' OPTION                                           */
         DCL   CHK    BASED(FDTPTR(  2));

         /* 'READLABEL' OPTION                                       */
         DCL RDLBL    BASED(FDTPTR(  3));

         /* 'FULL' CELL-CHECK OPTION                                 */
         DCL  FULL    BASED(FDTPTR(  4));

         /* 'EMPTY' CELL-CHECK OPTION                                */
         DCL EMPTY    BASED(FDTPTR(  5));

         /* 'ALL' CELL-CHECK OPTION                                  */
         DCL CHALL    BASED(FDTPTR(  6));

         /* ID NUMBER OF MSF                                         */
         DCL 1   MSF BASED(FDTPTR(  7)) BDY(WORD),
               2   MSFVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'XRANGE' AUDIT-LIMIT OPTION                              */
         DCL  XRNG    BASED(FDTPTR(  8));
         DCL  XRNGCNT FIXED(31) BASED(ADDR(FDTPTR(  8)));

         /* LOW X-VALUE OF RANGE                                     */
         DCL  LOWXPTR(100) PTR(31) BASED(FDTPTR(  9));
         DCL 1  LOWX BASED BDY(WORD),
               2  LOWXVAL FIXED(31);   /* NUMERIC VALUE              */

         /* HIGH X-VALUE OF RANGE                                    */
         DCL HIGHXPTR(100) PTR(31) BASED(FDTPTR( 10));
         DCL 1 HIGHX BASED BDY(WORD),
               2 HIGHXVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'CELL' AUDIT-LIMIT OPTION                                */
         DCL  CELL    BASED(FDTPTR( 11));
         DCL  CELLCNT FIXED(31) BASED(ADDR(FDTPTR( 11)));

         /* 'X' PORTION OF CELL ADDRESS                              */
         DCL CELLXPTR(100) PTR(31) BASED(FDTPTR( 12));
         DCL 1 CELLX BASED BDY(WORD),
               2 CELLXVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'Y' PORTION OF CELL ADDRESS                              */
         DCL CELLYPTR(100) PTR(31) BASED(FDTPTR( 13));
         DCL 1 CELLY BASED BDY(WORD),
               2 CELLYVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'Z' PORTION OF CELL ADDRESS                              */
         DCL CELLZPTR(100) PTR(31) BASED(FDTPTR( 14));
         DCL 1 CELLZ BASED BDY(WORD),
               2 CELLZVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'OUTFILE' DDNAME                                         */
         DCL 1 OFILE BASED(FDTPTR( 15)) BDY(HWORD),
               2 OFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET' DATA SET NAME                               */
         DCL 1   ODS BASED(FDTPTR( 16)) BDY(HWORD),
               2   ODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   ODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   ODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   ODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   ODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   ODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   ODSMEM CHAR(8),     /* MEMBER NAME                */
               2   ODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   ODSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'LIST' OPTION                                            */
         DCL  LIST    BASED(FDTPTR( 17));

         /* 'NOLIST' OPTION                                          */
         DCL NLIST    BASED(FDTPTR( 18));

         /* 'LABELFILE' DDNAME                                       */
         DCL 1 LFILE BASED(FDTPTR( 19)) BDY(HWORD),
               2 LFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 LFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'LABELDATASET' DATA SET NAME                             */
         DCL 1   LDS BASED(FDTPTR( 20)) BDY(HWORD),
               2   LDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   LDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   LDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   LDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   LDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   LDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   LDSMEM CHAR(8),     /* MEMBER NAME                */
               2   LDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   LDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'READALL' OPTION                                         */
         DCL  RDAL    BASED(FDTPTR( 21));

         /* 'NOREADALL' OPTION                                       */
         DCL NRDAL    BASED(FDTPTR( 22));
./ ADD NAME=IDCCSAV
         /************************************************************/
         /*                                                          */
         /*  'ADDV    ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'VOLUME' SERIAL NO.                                      */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'COPYDATE' PARM                                          */
         DCL CDATE    BASED(FDTPTR(  2));

         /* 'COPYDATE' JULIAN DATE VALUE                             */
         DCL 1  DATE BASED(FDTPTR(  3)) BDY(WORD),
               2  DATEVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'COPYDATE' SEQUENCE NO.                                  */
         DCL 1  SEQ# BASED(FDTPTR(  4)) BDY(WORD),
               2  SEQ#VAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'CARTRIDGE' SERIAL NO.                                   */
         DCL 1  CART BASED(FDTPTR(  5)) BDY(HWORD),
               2  CARTLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  CARTVAL CHAR( 12);   /* DATA ITEM VALUE            */

         /* 'NEWSERIAL' VOLUME SERIAL NO.                            */
         DCL 1  NSER BASED(FDTPTR(  6)) BDY(HWORD),
               2  NSERLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  NSERVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'READWRITE' PARM                                         */
         DCL RWOPT    BASED(FDTPTR(  7));

         /* 'FILE' DDNAME VALUE                                      */
         DCL 1  FILE BASED(FDTPTR(  8)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'PASSWORDFILES' PARM                                     */
         DCL 1 PFILE BASED(FDTPTR(  9)) BDY(HWORD),
               2 PFILECNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3 PFILELEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3 PFILEVAL CHAR(  8); /* DATA ITEM VALUE            */

         /* 'REPLACEVOLUME' PARM                                     */
         DCL  RVOL    BASED(FDTPTR( 10));
./ ADD NAME=IDCCSCH
         /************************************************************/
         /*                                                          */
         /*  'CHECKMSS' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'WORKFILE' FILE NAME                                     */
         DCL 1 WFILE BASED(FDTPTR(  1)) BDY(HWORD),
               2 WFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 WFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* WORK DATA SET NAME                                       */
         DCL 1   WDS BASED(FDTPTR(  2)) BDY(HWORD),
               2   WDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   WDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   WDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   WDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   WDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   WDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   WDSMEM CHAR(8),     /* MEMBER NAME                */
               2   WDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   WDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'MASSSTORAGECONTROL' PARAMETER                           */
         DCL   MSC    BASED(FDTPTR(  3));

         /* 'STAGINGADAPTERS' PARAMETER                              */
         DCL STGAD    BASED(FDTPTR(  4));

         /* 'MSVINVENTORY' PARAMETER                                 */
         DCL  MSVI    BASED(FDTPTR(  5));

         /* 'ALL' PARAMETER                                          */
         DCL CHALL    BASED(FDTPTR(  6));
./ ADD NAME=IDCCSCN
         /************************************************************/
         /*                                                          */
         /*  'CONVERTV' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* SOURCE VOLUME DDAME                                      */
         DCL 1 FFILE BASED(FDTPTR(  1)) BDY(HWORD),
               2 FFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 FFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* TARGET VOLUME DDNAME                                     */
         DCL 1 TFILE BASED(FDTPTR(  2)) BDY(HWORD),
               2 TFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 TFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* SOURCE VOLUME SERIAL NUMBER                              */
         DCL 1  FVOL BASED(FDTPTR(  3)) BDY(HWORD),
               2  FVOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FVOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* TARGET VOLUME SERIAL NUMBER                              */
         DCL 1  TVOL BASED(FDTPTR(  4)) BDY(HWORD),
               2  TVOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  TVOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'RECATALOG' PARM                                         */
         DCL RECAT    BASED(FDTPTR(  5));

         /* 'ALL' PARM                                               */
         DCL  ALLC    BASED(FDTPTR(  6));

         /* 'VSAMCATALOG' PARM                                       */
         DCL  VCAT    BASED(FDTPTR(  7));

         /* 'NONE' PARM                                              */
         DCL  NONE    BASED(FDTPTR(  8));

         /* 'SCRATCH' PARM                                           */
         DCL   SCR    BASED(FDTPTR(  9));

         /* 'NOSCRATCH' PARM                                         */
         DCL  NSCR    BASED(FDTPTR( 10));

         /* 'CATALOG' KEYWORD                                        */
         DCL   CAT    BASED(FDTPTR( 11));

         /* VSAM CATALOG NAME                                        */
         DCL 1  CATN BASED(FDTPTR( 12)) BDY(HWORD),
               2  CATNPLN FIXED(8),    /* PASSWORD LENGTH            */
               2  CATNPAS CHAR(8),     /* PASSWORD VALUE             */
               2  CATNPOS FIXED(8),    /* ASTERISK POSITION          */
               2  CATNFLG BIT(8),      /* DATA SET FLAGS             */
                 3  CATNFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2  CATNMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2  CATNMEM CHAR(8),     /* MEMBER NAME                */
               2  CATNLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2  CATNVAL CHAR(44);    /* CATALOGUED NAME            */

         /* CATALOG DDNAME                                           */
         DCL 1 CATDD BASED(FDTPTR( 13)) BDY(HWORD),
               2 CATDDLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CATDDVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'LIST' PARM                                              */
         DCL  LIST    BASED(FDTPTR( 14));

         /* 'NOLIST' PARM                                            */
         DCL NLIST    BASED(FDTPTR( 15));

         /* 'PASSWORDFILE' PARM                                      */
         DCL 1 PFILE BASED(FDTPTR( 16)) BDY(HWORD),
               2 PFILECNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3 PFILELEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3 PFILEVAL CHAR(  8); /* DATA ITEM VALUE            */
./ ADD NAME=IDCCSCO
         /************************************************************/
         /*                                                          */
         /*  'COPYV   ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'VOLUME' SERIAL NO.                                      */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'BACKUP' PARM                                            */
         DCL  BKUP    BASED(FDTPTR(  2));

         /* 'CARTRIDGES' PARM                                        */
         DCL  CART    BASED(FDTPTR(  3));

         /* SCRATCH CARTRIDGE SERIAL NO. 1                           */
         DCL 1  CSN1 BASED(FDTPTR(  4)) BDY(HWORD),
               2  CSN1LEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  CSN1VAL CHAR( 12);   /* DATA ITEM VALUE            */

         /* SCRATCH CARTRIDGE SERIAL NO. 2                           */
         DCL 1  CSN2 BASED(FDTPTR(  5)) BDY(HWORD),
               2  CSN2LEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  CSN2VAL CHAR( 12);   /* DATA ITEM VALUE            */

         /* 'DESCRIPTION' OF COPY VOLUME                             */
         DCL 1 DESCR BASED(FDTPTR(  6)) BDY(HWORD),
               2 DESCRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DESCRVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'EJECT' PARM                                             */
         DCL EJECT    BASED(FDTPTR(  7));

         /* 'NOEJECT' PARM                                           */
         DCL NEJCT    BASED(FDTPTR(  8));

         /* 'RECORD' PARM                                            */
         DCL   REC    BASED(FDTPTR(  9));

         /* 'NORECORD' PARM                                          */
         DCL  NREC    BASED(FDTPTR( 10));

         /* 'LOCATION' OF EJECTED VOLUME                             */
         DCL 1   LOC BASED(FDTPTR( 11)) BDY(HWORD),
               2   LOCLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   LOCVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'CATALOG' PARM                                           */
         DCL   CAT    BASED(FDTPTR( 12));

         /* 'CATALOG' CATNAME/PASSWORD VALUE                         */
         DCL 1 CATNM BASED(FDTPTR( 13)) BDY(HWORD),
               2 CATNMPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CATNMPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CATNMPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CATNMFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CATNMFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CATNMMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CATNMMEM CHAR(8),     /* MEMBER NAME                */
               2 CATNMLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CATNMVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CATALOG' DNAME VALUE                                    */
         DCL 1 CATDN BASED(FDTPTR( 14)) BDY(HWORD),
               2 CATDNLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CATDNVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'FILE' DNAME VALUE                                       */
         DCL 1  FILE BASED(FDTPTR( 15)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'MASSSTORAGEFACILITY' ID                                 */
         DCL 1   MSF BASED(FDTPTR( 16)) BDY(WORD),
               2   MSFVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'PASSWORDFILES' PARM                                     */
         DCL 1 PFILE BASED(FDTPTR( 17)) BDY(HWORD),
               2 PFILECNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3 PFILELEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3 PFILEVAL CHAR(  8); /* DATA ITEM VALUE            */
./ ADD NAME=IDCCSCP
         /************************************************************/
         /*                                                          */
         /*  'COMPARET' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'WORKFILE' DDNAMES                                       */
         DCL WFILE    BASED(FDTPTR(  1));

         /* FIRST 'WORKFILE' DDNAME                                  */
         DCL 1 FILE1 BASED(FDTPTR(  3)) BDY(HWORD),
               2 FILE1LEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 FILE1VAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* SECOND 'WORKFILE' DDNAME                                 */
         DCL 1 FILE2 BASED(FDTPTR(  4)) BDY(HWORD),
               2 FILE2LEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 FILE2VAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'WORKDATASET' DATA SET NAMES                             */
         DCL   WDS    BASED(FDTPTR(  2));

         /* FIRST 'WORKDATASET' DATA SET NAME                        */
         DCL 1  WDS1 BASED(FDTPTR(  5)) BDY(HWORD),
               2  WDS1PLN FIXED(8),    /* PASSWORD LENGTH            */
               2  WDS1PAS CHAR(8),     /* PASSWORD VALUE             */
               2  WDS1POS FIXED(8),    /* ASTERISK POSITION          */
               2  WDS1FLG BIT(8),      /* DATA SET FLAGS             */
                 3  WDS1FUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2  WDS1MLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2  WDS1MEM CHAR(8),     /* MEMBER NAME                */
               2  WDS1LEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2  WDS1VAL CHAR(44);    /* CATALOGUED NAME            */

         /* SECOND 'WORKDATASET' DATA SET NAME                       */
         DCL 1  WDS2 BASED(FDTPTR(  6)) BDY(HWORD),
               2  WDS2PLN FIXED(8),    /* PASSWORD LENGTH            */
               2  WDS2PAS CHAR(8),     /* PASSWORD VALUE             */
               2  WDS2POS FIXED(8),    /* ASTERISK POSITION          */
               2  WDS2FLG BIT(8),      /* DATA SET FLAGS             */
                 3  WDS2FUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2  WDS2MLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2  WDS2MEM CHAR(8),     /* MEMBER NAME                */
               2  WDS2LEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2  WDS2VAL CHAR(44);    /* CATALOGUED NAME            */
./ ADD NAME=IDCCSCV
         /************************************************************/
         /*                                                  @Y30LB32*/
         /*  'CREATEV ' FUNCTION DATA TABLE DECLARATIONS     @Y30LB32*/
         /*                                                  @Y30LB32*/
         /************************************************************/
 %IF BASEFDT = 'YES'                                       /*@Y30LB32*/
   %THEN                                                   /*@Y30LB32*/
     %GO TO BASEFDT1;                                      /*@Y30LB32*/

         DCL 1 FDTTBL      BDY(WORD),                      /*@Y30LB32*/
 %GO TO BASEFDT2;                                          /*@Y30LB32*/
 %BASEFDT1:;                                               /*@Y30LB32*/

         DCL 1 FDTTBL      BASED   BDY(WORD),              /*@Y30LB32*/
 %BASEFDT2:;                                               /*@Y30LB32*/
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME  @Y30LB32*/
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA        @Y30LB32*/
                                       /* POINTERS           @Y30LB32*/

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS           @Y30LB32*/

         /* 'VOLUME'  PARAMETER                              @Y30LB32*/
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),        /*@Y30LB32*/
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE    @Y30LB32*/

         /* 'FILE'  PARAMETER                                @Y30LB32*/
         DCL 1  FILE BASED(FDTPTR(  2)) BDY(HWORD),        /*@Y30LB32*/
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE    @Y30LB32*/

         /* 'COUNT'  PARMAMETER                              @Y30LB32*/
         DCL 1 COUNT BASED(FDTPTR(  3)) BDY(WORD),         /*@Y30LB32*/
               2 COUNTVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/

         /* 'MASS STORAGE FACILITY'  PARAMETER               @Y30LB32*/
         DCL 1   MSF BASED(FDTPTR(  4)) BDY(WORD),         /*@Y30LB32*/
               2   MSFVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/

         /* 'VTOCSIZE'  PARAMETER                            @Y30LB32*/
         DCL 1  VTSZ BASED(FDTPTR(  5)) BDY(WORD),         /*@Y30LB32*/
               2  VTSZVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/

         /* 'CARTRIDGES'  PARAMETER                          @Y30LB32*/
         DCL 1  CART BASED(FDTPTR(  6)) BDY(HWORD),        /*@Y30LB32*/
               2  CARTCNT FIXED(15),   /* COUNT OF ITEMS     @Y30LB32*/
                                       /* IN LIST            @Y30LB32*/
               2 *(254) BDY(HWORD),                        /*@Y30LB32*/
                 3  CARTLEN FIXED(8),  /* DATA ITEM LENGTH   @Y30LB32*/
                 3  CARTVAL CHAR( 12); /* DATA ITEM VALUE    @Y30LB32*/

         /* 'OWNER'  PARAMETER                               @Y30LB32*/
         DCL 1 OWNER BASED(FDTPTR(  7)) BDY(HWORD),        /*@Y30LB32*/
               2 OWNERLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2 OWNERVAL CHAR( 10);   /* DATA ITEM VALUE    @Y30LB32*/

         /* 'DESCRIPTION'  PARAMETER                         @Y30LB32*/
         DCL 1 DESCR BASED(FDTPTR(  8)) BDY(HWORD),        /*@Y30LB32*/
               2 DESCRLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2 DESCRVAL CHAR( 30);   /* DATA ITEM VALUE    @Y30LB32*/

         /* 'BACKUPNUMBER'  PARMAMETER                       @Y30LB32*/
         DCL 1 BKUP# BASED(FDTPTR(  9)) BDY(WORD),         /*@Y30LB32*/
               2 BKUP#VAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/

         /* 'GROUP'  PARAMETER                               @Y30LB32*/
         DCL 1   GRP BASED(FDTPTR( 10)) BDY(HWORD),        /*@Y30LB32*/
               2   GRPLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2   GRPVAL CHAR(  8);   /* DATA ITEM VALUE    @Y30LB32*/

         /* 'GENERAL'  PARAMETER                             @Y30LB32*/
         DCL GENRL    BASED(FDTPTR( 11));                  /*@Y30LB32*/

         /* 'RESTRICTED'  PARAMETER                          @Y30LB32*/
         DCL  RSTR    BASED(FDTPTR( 12));                  /*@Y30LB32*/

         /* 'BIND'  PARAMETER                                @Y30LB32*/
         DCL  BIND    BASED(FDTPTR( 13));                  /*@Y30LB32*/

         /* 'NOBIND'  PARAMETER                              @Y30LB32*/
         DCL NBIND    BASED(FDTPTR( 14));                  /*@Y30LB32*/

         /* 'EXCLUSIVE'  PARAMETER                           @Y30LB32*/
         DCL EXCLU    BASED(FDTPTR( 15));                  /*@Y30LB32*/

         /* 'SHARED'  PARAMETER                              @Y30LB32*/
         DCL  SHRD    BASED(FDTPTR( 16));                  /*@Y30LB32*/

         /* 'READONLY'  PARAMETER                            @Y30LB32*/
         DCL RONLY    BASED(FDTPTR( 17));                  /*@Y30LB32*/

         /* 'READWRITE'  PARAMETER                           @Y30LB32*/
         DCL    RW    BASED(FDTPTR( 18));                  /*@Y30LB32*/

         /* 'DASDERASE'  PARAMETER                           @Y30LB32*/
         DCL DERAS    BASED(FDTPTR( 19));                  /*@Y30LB32*/

         /* 'NODASDERASE'  PARAMETER                         @Y30LB32*/
         DCL NDERS    BASED(FDTPTR( 20));                  /*@Y30LB32*/
./ ADD NAME=IDCCSDU
         /************************************************************/
         /*                                                          */
         /*  'DUMPMSS ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'MASSSTORAGECONTROL' OPTION                              */
         DCL   MSC    BASED(FDTPTR(  1));

         /* MSC 'FORMAT' OPTION                                      */
         DCL  MFMT    BASED(FDTPTR(  2));

         /* MSC 'MAINSECTOR' OPTION                                  */
         DCL MSCTM    BASED(FDTPTR(  3));
         DCL MSCTMCNT FIXED(31) BASED(ADDR(FDTPTR(  3)));

         /* MSC 'MAINSECTOR' LOW SECTOR#                             */
         DCL  MMLOPTR( 16) PTR(31) BASED(FDTPTR( 16));
         DCL 1  MMLO BASED BDY(WORD),
               2  MMLOVAL FIXED(31);   /* NUMERIC VALUE              */

         /* MSC 'MAINSECTOR' HIGH SECTOR#                            */
         DCL  MMHIPTR( 16) PTR(31) BASED(FDTPTR( 17));
         DCL 1  MMHI BASED BDY(WORD),
               2  MMHIVAL FIXED(31);   /* NUMERIC VALUE              */

         /* MSC 'EXTENDEDSECTOR' OPTION                              */
         DCL MSCTE    BASED(FDTPTR(  4));
         DCL MSCTECNT FIXED(31) BASED(ADDR(FDTPTR(  4)));

         /* MSC 'EXTENDEDSECTOR' LOW SECTOR#                         */
         DCL  MELOPTR( 16) PTR(31) BASED(FDTPTR( 18));
         DCL 1  MELO BASED BDY(WORD),
               2  MELOVAL FIXED(31);   /* NUMERIC VALUE              */

         /* MSC 'EXTENDEDSECTOR' HIGH SECTOR#                        */
         DCL  MEHIPTR( 16) PTR(31) BASED(FDTPTR( 19));
         DCL 1  MEHI BASED BDY(WORD),
               2  MEHIVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'STAGINGADAPTER' OPTION                                  */
         DCL STGAD    BASED(FDTPTR(  5));
         DCL STGADCNT FIXED(31) BASED(ADDR(FDTPTR(  5)));

         /* SSID OF STAGING ADAPTER                                  */
         DCL  SSIDPTR( 14) PTR(31) BASED(FDTPTR(  6));
         DCL 1  SSID BASED BDY(WORD),
               2  SSIDVAL FIXED(31);   /* NUMERIC VALUE              */

         /* SA 'FORMAT' OPTION                                       */
         DCL  SFMTPTR( 14) PTR(31) BASED(FDTPTR(  7));
         DCL  SFMT    BASED;

         /* SA 'MAINSECTOR' OPTION                                   */
         DCL SSCTMPTR( 14) PTR(31) BASED(FDTPTR(  8));
         DCL SSCTM    BASED;
         DCL SSCTMCNT( 14) FIXED(31) BASED(FDTPTR(  8));

         /* SA 'MAINSECTOR' LOW SECTOR#                              */
         DCL  SMLOPTR( 14, 16) PTR(31) BASED(FDTPTR( 20));
         DCL 1  SMLO BASED BDY(WORD),
               2  SMLOVAL FIXED(31);   /* NUMERIC VALUE              */

         /* SA 'MAINSECTOR' HIGH SECTOR#                             */
         DCL  SMHIPTR( 14, 16) PTR(31) BASED(FDTPTR( 21));
         DCL 1  SMHI BASED BDY(WORD),
               2  SMHIVAL FIXED(31);   /* NUMERIC VALUE              */

         /* SA 'EXTENDEDSECTOR' OPTION                               */
         DCL SSCTEPTR( 14) PTR(31) BASED(FDTPTR(  9));
         DCL SSCTE    BASED;
         DCL SSCTECNT( 14) FIXED(31) BASED(FDTPTR(  9));

         /* SA 'EXTENDEDSECTOR' LOW SECTOR#                          */
         DCL  SELOPTR( 14, 16) PTR(31) BASED(FDTPTR( 22));
         DCL 1  SELO BASED BDY(WORD),
               2  SELOVAL FIXED(31);   /* NUMERIC VALUE              */

         /* SA 'EXTENDEDSECTOR' HI SECTOR#                           */
         DCL  SEHIPTR( 14, 16) PTR(31) BASED(FDTPTR( 23));
         DCL 1  SEHI BASED BDY(WORD),
               2  SEHIVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'TABLES' OPTION                                          */
         DCL   TBL    BASED(FDTPTR( 10));
         DCL   TBLCNT FIXED(31) BASED(ADDR(FDTPTR( 10)));

         /* LOW CHR OF RANGE TO DUMP                                 */
         DCL LOCHRPTR(100) PTR(31) BASED(FDTPTR( 11));
         DCL 1 LOCHR BASED BDY(WORD),
               2 LOCHRVAL FIXED(31);   /* NUMERIC VALUE              */

         /* HIGH CHR OF RANGE TO DUMP                                */
         DCL HICHRPTR(100) PTR(31) BASED(FDTPTR( 12));
         DCL 1 HICHR BASED BDY(WORD),
               2 HICHRVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'OUTFILE' OPTION                                         */
         DCL 1 OFILE BASED(FDTPTR( 13)) BDY(HWORD),
               2 OFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET' OPTION                                      */
         DCL 1   ODS BASED(FDTPTR( 14)) BDY(HWORD),
               2   ODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   ODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   ODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   ODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   ODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   ODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   ODSMEM CHAR(8),     /* MEMBER NAME                */
               2   ODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   ODSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'ALTERNATEMASSSTORAGECONTROL' OPTION             @ZA27590*/
         DCL  AMSC    BASED(FDTPTR( 24));                  /*@ZA27590*/
./ ADD NAME=IDCCSEC
         /************************************************************/
         /*                                                  @Y30LB32*/
         /*  'EJECTC  ' FUNCTION DATA TABLE DECLARATIONS     @Y30LB32*/
         /*                                                  @Y30LB32*/
         /************************************************************/
 %IF BASEFDT = 'YES'                                       /*@Y30LB32*/
   %THEN                                                   /*@Y30LB32*/
     %GO TO BASEFDT1;                                      /*@Y30LB32*/

         DCL 1 FDTTBL      BDY(WORD),                      /*@Y30LB32*/
 %GO TO BASEFDT2;                                          /*@Y30LB32*/
 %BASEFDT1:;                                               /*@Y30LB32*/

         DCL 1 FDTTBL      BASED   BDY(WORD),              /*@Y30LB32*/
 %BASEFDT2:;                                               /*@Y30LB32*/
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME  @Y30LB32*/
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA        @Y30LB32*/
                                       /* POINTERS           @Y30LB32*/
         /* DATA DECLARATIONS OF SCALAR DATA ITEMS           @Y30LB32*/

         /* CARTRIDGE SERIAL NUMBER                          @Y30LB32*/
         DCL 1  CART BASED(FDTPTR(  1)) BDY(HWORD),        /*@Y30LB32*/
               2  CARTCNT FIXED(15),   /* COUNT OF ITEMS IN  @Y30LB32*/
                                       /* LIST               @Y30LB32*/
               2 *(255) BDY(HWORD),                        /*@Y30LB32*/
                 3  CARTLEN FIXED(8),  /* DATA ITEM LENGTH   @Y30LB32*/
                 3  CARTVAL CHAR( 12); /* DATA ITEM VALUE    @Y30LB32*/

         /* NUMBER SCRATCH CARTRIDGES                        @Y30LB32*/
         DCL 1   CNT BASED(FDTPTR(  2)) BDY(WORD),         /*@Y30LB32*/
               2   CNTVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/

         /* 'ALL'PARAMETER                                   @Y30LB32*/
         DCL  ALLC    BASED(FDTPTR(  3));                  /*@Y30LB32*/

         /* MASS STORAGE FACILITY ID                         @Y30LB32*/
         DCL 1   MSF BASED(FDTPTR(  4)) BDY(WORD),         /*@Y30LB32*/
               2   MSFVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/
./ ADD NAME=IDCCSEV
         /************************************************************/
         /*                                                  @Y30LB38*/
         /*  'EJECTV  ' FUNCTION DATA TABLE DECLARATIONS     @Y30LB38*/
         /*                                                  @Y30LB38*/
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;                                      /*@Y30LB38*/

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;                                          /*@Y30LB38*/
 %BASEFDT1:;                                               /*@Y30LB38*/

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;                                               /*@Y30LB38*/
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME  @Y30LB38*/
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS           @Y30LB38*/

         /* VOLUME SERIAL NUMBERS                            @Y30LB38*/
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB38*/
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE    @Y30LB38*/

         /* 'COPYDATE' PARAMETER                             @Y30LB38*/
         DCL CDATE    BASED(FDTPTR(  2));                  /*@Y30LB38*/

         /* DATE COPY CREATED                                @Y30LB38*/
         DCL 1  DATE BASED(FDTPTR(  3)) BDY(WORD),
               2  DATEVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB38*/

         /* 'COPYDATE' COPY NUMBER                           @Y30LB38*/
         DCL 1   SEQ BASED(FDTPTR(  4)) BDY(WORD),
               2   SEQVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB38*/

         /* CARTRIDGE SERIAL NUMBER                          @Y30LB38*/
         DCL 1  CART BASED(FDTPTR(  5)) BDY(HWORD),
               2  CARTLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB38*/
               2  CARTVAL CHAR( 12);   /* DATA ITEM VALUE    @Y30LB38*/

         /* 'RECORD' PARAMETER                               @Y30LB38*/
         DCL   REC    BASED(FDTPTR(  6));                  /*@Y30LB38*/

         /* 'NORECORD' PARAMETER                             @Y30LB38*/
         DCL  NREC    BASED(FDTPTR(  7));                  /*@Y30LB38*/

         /* LOCATION DATA                                    @Y30LB38*/
         DCL 1   LOC BASED(FDTPTR(  8)) BDY(HWORD),
               2   LOCLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB38*/
               2   LOCVAL CHAR( 30);   /* DATA ITEM VALUE    @Y30LB38*/
./ ADD NAME=IDCCSGR
         /************************************************************/
         /*                                                          */
         /*  'CREATEG ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'GROUP' NAME                                             */
         DCL 1   GRP BASED(FDTPTR(  1)) BDY(HWORD),
               2   GRPLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   GRPVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'PRIMARY' SPACE                                          */
         DCL 1   PRI BASED(FDTPTR(  2)) BDY(WORD),
               2   PRIVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'SECONDARY' SPACE                                        */
         DCL 1   SEC BASED(FDTPTR(  3)) BDY(WORD),
               2   SECVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'THRESHOLD' PERCENTAGE                                   */
         DCL 1 THOLD BASED(FDTPTR(  4)) BDY(WORD),
               2 THOLDVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'DESCRIPTION' PARAMETER                                  */
         DCL 1 DESCR BASED(FDTPTR(  5)) BDY(HWORD),
               2 DESCRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DESCRVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'OWNER' NAME                                             */
         DCL 1 OWNER BASED(FDTPTR(  6)) BDY(HWORD),
               2 OWNERLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OWNERVAL CHAR( 10);   /* DATA ITEM VALUE            */

         /* 'OWNER' ADDRESS                                          */
         DCL 1   ADD BASED(FDTPTR(  7)) BDY(HWORD),
               2   ADDLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   ADDVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'RETENTIONPERIOD' PARAMETER                              */
         DCL 1 RETPD BASED(FDTPTR(  8)) BDY(WORD),
               2 RETPDVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'RELEASE' PARAMETER                                      */
         DCL  RLSE    BASED(FDTPTR(  9));

         /* 'NORELEASE' PARAMETER                                    */
         DCL NRLSE    BASED(FDTPTR( 10));

         /* 'BIND' PARAMETER                                         */
         DCL  BIND    BASED(FDTPTR( 11));

         /* 'NOBIND' PARAMETER                                       */
         DCL NBIND    BASED(FDTPTR( 12));

         /* 'EXCLUSIVE' USE                                          */
         DCL   EXC    BASED(FDTPTR( 13));

         /* 'SHARED' USE                                             */
         DCL  SHRD    BASED(FDTPTR( 14));

         /* 'DASDERASE' PARAMETER                                    */
         DCL DERAS    BASED(FDTPTR( 15));

         /* 'NODASDERASE' PARAMETER                                  */
         DCL NDERA    BASED(FDTPTR( 16));

         /* 'READONLY' PARAMETER                                     */
         DCL RONLY    BASED(FDTPTR( 17));

         /* 'READWRITE' PARAMETER                                    */
         DCL    RW    BASED(FDTPTR( 18));

         /* 'CONCURRENTUSERS' PARAMETER                              */
         DCL 1 CONUS BASED(FDTPTR( 19)) BDY(WORD),
               2 CONUSVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'RESERVEDSPACE' PARAMETER                                */
         DCL 1 RSVDS BASED(FDTPTR( 20)) BDY(WORD),
               2 RSVDSVAL FIXED(31);   /* NUMERIC VALUE              */
./ ADD NAME=IDCCSLD
         /************************************************************/
         /*                                                          */
         /*  'LISTDSET' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* VOLUME(S) TO LIST                                        */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3   VOLLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3   VOLVAL CHAR(  6); /* DATA ITEM VALUE            */

         /* GROUP(S) TO LIST                                         */
         DCL 1   GRP BASED(FDTPTR(  2)) BDY(HWORD),
               2   GRPCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3   GRPLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3   GRPVAL CHAR(  8); /* DATA ITEM VALUE            */

         /* OPTION TO LIST ALL VOLUMES                               */
         DCL  AVOL    BASED(FDTPTR(  3));

         /* OPTION TO LIST ALL GROUPS                                */
         DCL  AGRP    BASED(FDTPTR(  4));

         /* 'NON-GROUPED' LIMITING OPTION                            */
         DCL NGRPD    BASED(FDTPTR(  5));

         /* 'GENERAL' LIMITING OPTION                                */
         DCL GENER    BASED(FDTPTR( 20));

         /* LEVEL NAME OF DATA SETS TO LIST                          */
         DCL 1 LEVEL BASED(FDTPTR(  6)) BDY(HWORD),
               2 LEVELPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 LEVELPAS CHAR(8),     /* PASSWORD VALUE             */
               2 LEVELPOS FIXED(8),    /* ASTERISK POSITION          */
               2 LEVELFLG BIT(8),      /* DATA SET FLAGS             */
                 3 LEVELFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 LEVELMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 LEVELMEM CHAR(8),     /* MEMBER NAME                */
               2 LEVELLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 LEVELVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'UNCATALOGED' LIMITING OPTION                            */
         DCL UNCAT    BASED(FDTPTR(  7));

         /* 'EXPIRATION DATE' LIMITING OPTION                        */
         DCL 1 EXPDT BASED(FDTPTR(  8)) BDY(WORD),
               2 EXPDTVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'EXPIRATION DAYS' LIMITING OPTION                        */
         DCL 1 EXPIR BASED(FDTPTR(  9)) BDY(WORD),
               2 EXPIRVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'CREATION DATE' LIMITING OPTION                          */
         DCL 1 CREDT BASED(FDTPTR( 10)) BDY(WORD),
               2 CREDTVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'CREATION DAYS' LIMITING OPTION                          */
         DCL 1 CREAT BASED(FDTPTR( 11)) BDY(WORD),
               2 CREATVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'FILE' DDNAME                                            */
         DCL 1  FILE BASED(FDTPTR( 12)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'REPORT' OPTION                                          */
         DCL   RPT    BASED(FDTPTR( 13));

         /* 'STATUS' REPORT OPTION                                   */
         DCL  STAT    BASED(FDTPTR( 14));

         /* 'USAGE' REPORT OPTION                                    */
         DCL USAGE    BASED(FDTPTR( 15));

         /* 'LEGEND' OPTION                                          */
         DCL  LGND    BASED(FDTPTR( 16));

         /* 'NOLEGEND' OPTION                                        */
         DCL NLGND    BASED(FDTPTR( 17));

         /* 'OFILE' DDNAME                                           */
         DCL 1 OFILE BASED(FDTPTR( 18)) BDY(HWORD),
               2 OFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET' NAME                                        */
         DCL 1   ODS BASED(FDTPTR( 19)) BDY(HWORD),
               2   ODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   ODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   ODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   ODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   ODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   ODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   ODSMEM CHAR(8),     /* MEMBER NAME                */
               2   ODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   ODSVAL CHAR(44);    /* CATALOGUED NAME            */
./ ADD NAME=IDCCSLM
         /************************************************************/
         /*                                                          */
         /*  'LISTMSF ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'WORKFILE' PARAMETER                                     */
         DCL 1 WFILE BASED(FDTPTR(  1)) BDY(HWORD),
               2 WFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 WFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'WORKDATASET' PARAMETER                                  */
         DCL 1   WDS BASED(FDTPTR(  2)) BDY(HWORD),
               2   WDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   WDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   WDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   WDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   WDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   WDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   WDSMEM CHAR(8),     /* MEMBER NAME                */
               2   WDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   WDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'MOUNTABLE' PARAMETER                                    */
         DCL   MNT    BASED(FDTPTR(  3));

         /* 'NONMOUNTABLE' PARAMETER                                 */
         DCL  NMNT    BASED(FDTPTR(  4));

         /* 'CARTRIDGES' PARAMETER                                   */
         DCL  CART    BASED(FDTPTR(  5));

         /* 'SUMMARY' PARAMETER                                      */
         DCL SUMRY    BASED(FDTPTR(  6));

         /* 'ALL' PARAMETER                                          */
         DCL    AL    BASED(FDTPTR(  7));

         /* 'MSF'  PARAMETER                                         */
         DCL 1   MSF BASED(FDTPTR(  8)) BDY(WORD),
               2   MSFVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'OUTFILE' PARAMETER                                      */
         DCL 1 OFILE BASED(FDTPTR(  9)) BDY(HWORD),
               2 OFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET' PARAMETER                                   */
         DCL 1   ODS BASED(FDTPTR( 10)) BDY(HWORD),
               2   ODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   ODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   ODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   ODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   ODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   ODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   ODSMEM CHAR(8),     /* MEMBER NAME                */
               2   ODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   ODSVAL CHAR(44);    /* CATALOGUED NAME            */
./ ADD NAME=IDCCSLV
         /************************************************************/
         /*                                                          */
         /*  'LISTMSVI' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'VOLUMES' PARAMETER                                      */
         DCL 1  VOLS BASED(FDTPTR(  1)) BDY(HWORD),
               2  VOLSCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3  VOLSLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3  VOLSVAL CHAR(  6); /* DATA ITEM VALUE            */

         /* 'ALLVOLUMES' PARAMETER                                   */
         DCL  ALLV    BASED(FDTPTR(  2));

         /* 'GROUPS' PARAMETER                                       */
         DCL 1   GRP BASED(FDTPTR(  3)) BDY(HWORD),
               2   GRPCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3   GRPLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3   GRPVAL CHAR(  8); /* DATA ITEM VALUE            */

         /* 'ALLGROUPS' PARAMETER                                    */
         DCL  AGRP    BASED(FDTPTR(  4));

         /* 'NONGROUPED' PARAMETER                                   */
         DCL NGRPD    BASED(FDTPTR(  5));

         /* 'PASTTHRESHOLD' PARAMETER                                */
         DCL    PT    BASED(FDTPTR(  6));

         /* 'VOLUMELIST' PARAMETER                                   */
         DCL VOLST    BASED(FDTPTR(  7));

         /* 'EXPIRATION' PARAMETER                                   */
         DCL 1 EXPIR BASED(FDTPTR(  8)) BDY(WORD),
               2 EXPIRVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'ALL' PARAMETER                                          */
         DCL    AL    BASED(FDTPTR( 10));

         /* 'OUTFILE' PARAMETER                                      */
         DCL 1 OFILE BASED(FDTPTR( 11)) BDY(HWORD),
               2 OFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET' PARAMETER                                   */
         DCL 1   ODS BASED(FDTPTR( 12)) BDY(HWORD),
               2   ODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   ODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   ODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   ODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   ODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   ODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   ODSMEM CHAR(8),     /* MEMBER NAME                */
               2   ODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   ODSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'REPORT' PARAMETER                                       */
         DCL   RPT    BASED(FDTPTR( 13));

         /* 'STATUS' PARAMETER                                       */
         DCL  STAT    BASED(FDTPTR( 14));

         /* 'USAGE' PARAMETER                                        */
         DCL USAGE    BASED(FDTPTR( 15));

         /* 'LEGEND' PARAMETER                                       */
         DCL   LED    BASED(FDTPTR( 16));

         /* 'NOLEGEND' PARAMETER                                     */
         DCL  NLED    BASED(FDTPTR( 17));

         /* 'ACTIVE' SUBPARAMETER                                    */
         DCL   ACT    BASED(FDTPTR( 18));

         /* 'INACTIVE' SUBPARAMETER                                  */
         DCL INACT    BASED(FDTPTR( 19));

         /* 'GENERAL' SUBPARAMETER                                   */
         DCL  GNRL    BASED(FDTPTR( 20));

         /* 'RESTRICTED' SUBPARAMETER                                */
         DCL  RSTR    BASED(FDTPTR( 21));

         /* 'CARTRIDGES' PARAMETER                                   */
         DCL 1  CTGS BASED(FDTPTR( 22)) BDY(HWORD),
               2  CTGSCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3  CTGSLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3  CTGSVAL CHAR( 12); /* DATA ITEM VALUE            */

         /* 'ALLCARTRIDGES' PARAMETER                                */
         DCL  ALLC    BASED(FDTPTR( 23));

         /* 'DUPLICATES' PARM                                        */
         DCL   DUP    BASED(FDTPTR(  9));

         /* 'PLACEHOLDERS' PARM                                      */
         DCL  PLHD    BASED(FDTPTR( 24));
./ ADD NAME=IDCCSMC
         /************************************************************/
         /*                                                          */
         /*  'MODIFYC ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'VOLUME' OPTION FOR LOCATING A CART                      */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'CARTRIDGE' OPTION FOR LOCATING A CART                   */
         DCL 1  CART BASED(FDTPTR(  2)) BDY(HWORD),
               2  CARTLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  CARTVAL CHAR( 12);   /* DATA ITEM VALUE            */

         /* 'CELL' OPTION WITH SPECIFIC XYZ LOCATION                 */
         DCL  CELL    BASED(FDTPTR(  3));

         /* 'X' PORTION OF CELL ADDRESS                              */
         DCL 1 CELLX BASED(FDTPTR(  4)) BDY(WORD),
               2 CELLXVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'Y' PORTION OF CELL ADDRESS                              */
         DCL 1 CELLY BASED(FDTPTR(  5)) BDY(WORD),
               2 CELLYVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'Z' PORTION OF CELL ADDRESS                              */
         DCL 1 CELLZ BASED(FDTPTR(  6)) BDY(WORD),
               2 CELLZVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'SEQUENCE' NUMBER OF CARTRIDGE                           */
         DCL 1   SEQ BASED(FDTPTR(  7)) BDY(WORD),
               2   SEQVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'MSF' ID NUMBER CONTAINING CARTRIDGE                     */
         DCL 1   MSF BASED(FDTPTR(  8)) BDY(WORD),
               2   MSFVAL FIXED(31);   /* NUMERIC VALUE              */

         /* MODIFY BY A DIRECT EJECT OF CART FUNCTION                */
         DCL   DEJ    BASED(FDTPTR(  9));

         /* MODIFY BY A CHANGE LABEL OF CART FUNCTION                */
         DCL CHNGL    BASED(FDTPTR( 10));

         /* 'CELL' ADDRESS AFTER MODIFICATION                        */
         DCL  NCEL    BASED(FDTPTR( 11));

         /* 'X' PORTION OF CELL ADDRESS                              */
         DCL 1 NCELX BASED(FDTPTR( 12)) BDY(WORD),
               2 NCELXVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'Y' PORTION OF CELL ADDRESS                              */
         DCL 1 NCELY BASED(FDTPTR( 13)) BDY(WORD),
               2 NCELYVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'Z' PORTION OF CELL ADDRESS                              */
         DCL 1 NCELZ BASED(FDTPTR( 14)) BDY(WORD),
               2 NCELZVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'EJECT' MANUAL EXIT STATION AFTER MODIFICATION           */
         DCL EJECT    BASED(FDTPTR( 15));

         /* 'SCRATCH' OPTION AS CART MODIFICATION                    */
         DCL   SCR    BASED(FDTPTR( 16));

         /* 'VOLUME' OPTION AS CART MODIFICATION                     */
         DCL 1  NVOL BASED(FDTPTR( 17)) BDY(HWORD),
               2  NVOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  NVOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'SEQUENCE' OPTION AS CART MODIFICATION                   */
         DCL 1  NSEQ BASED(FDTPTR( 18)) BDY(WORD),
               2  NSEQVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'OTHERCARTRIDGE' CSN OF A PAIR TO BE MODIFIED            */
         DCL 1  OCSN BASED(FDTPTR( 19)) BDY(HWORD),
               2  OCSNLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  OCSNVAL CHAR( 12);   /* DATA ITEM VALUE            */

         /* 'BIND' ATTRIBUTE OPTION AS CART MODIFICATION             */
         DCL  BIND    BASED(FDTPTR( 20));

         /* 'NOBIND' ATTRIBUTE OPTION AS CART MODIFICATION           */
         DCL NBIND    BASED(FDTPTR( 21));

         /* 'EXCLUSIVE' ATTRIBUTE OPTION AS CART MODIFICATION        */
         DCL   XCL    BASED(FDTPTR( 22));

         /* 'SHARED' ATTRIBUTE OPTION AS CART MODIFICATION           */
         DCL  SHRD    BASED(FDTPTR( 23));

         /* 'READONLY' ATTRIBUTE OPTION AS CART MODIFICATION         */
         DCL RONLY    BASED(FDTPTR( 24));

         /* 'READWRITE' ATTRIBUTE OPTION AS CART MODIFICATION        */
         DCL    RW    BASED(FDTPTR( 25));

         /* 'DASDERASE' ATTRIBUTE OPTION AS CART MODIFICATION        */
         DCL DERAS    BASED(FDTPTR( 26));

         /* 'NODASDERASE' ATTRIBUTE OPTION AS CART MODIFICATION      */
         DCL NERAS    BASED(FDTPTR( 27));
./ ADD NAME=IDCCSMG
         /************************************************************/
         /*                                                          */
         /*  'MODIFYG ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'GROUP' NAME                                             */
         DCL 1   GRP BASED(FDTPTR(  1)) BDY(HWORD),
               2   GRPLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   GRPVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'PRIMARY' SPACE                                          */
         DCL 1   PRI BASED(FDTPTR(  2)) BDY(WORD),
               2   PRIVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'SECONDARY' SPACE                                        */
         DCL 1   SEC BASED(FDTPTR(  3)) BDY(WORD),
               2   SECVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'THRESHOLD' PERCENTAGE                                   */
         DCL 1 THOLD BASED(FDTPTR(  4)) BDY(WORD),
               2 THOLDVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'DESCRIPTION' PARAMETER                                  */
         DCL 1 DESCR BASED(FDTPTR(  5)) BDY(HWORD),
               2 DESCRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DESCRVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'OWNER' NAME                                             */
         DCL 1 OWNER BASED(FDTPTR(  6)) BDY(HWORD),
               2 OWNERLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OWNERVAL CHAR( 10);   /* DATA ITEM VALUE            */

         /* 'OWNER' ADDRESS                                          */
         DCL 1   ADD BASED(FDTPTR(  7)) BDY(HWORD),
               2   ADDLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   ADDVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'RETENTIONPERIOD' PARAMETER                              */
         DCL 1 RETPD BASED(FDTPTR(  8)) BDY(WORD),
               2 RETPDVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'NULLIFY' PARAMETER                                      */
         DCL NULLF    BASED(FDTPTR(  9));

         /* 'NULLIFY THRESHOLD' FLAG                                 */
         DCL NTHOL    BASED(FDTPTR( 10));

         /* 'NULLIFY DESCRIPTION' FLAG                               */
         DCL NDESC    BASED(FDTPTR( 11));

         /* 'NULLIFY OWNER' FLAG                                     */
         DCL  NOWN    BASED(FDTPTR( 12));

         /* 'NULLIFY ADDRESS' FLAG                                   */
         DCL NADDR    BASED(FDTPTR( 13));

         /* 'NULLIFY RETENTIONPERIOD' FLAG                           */
         DCL NRTPD    BASED(FDTPTR( 14));

         /* 'RELEASE' PARAMETER                                      */
         DCL  RLSE    BASED(FDTPTR( 15));

         /* 'NORELEASE' PARAMETER                                    */
         DCL NRLSE    BASED(FDTPTR( 16));

         /* 'BIND' PARAMETER                                         */
         DCL  BIND    BASED(FDTPTR( 17));

         /* 'NOBIND' PARAMETER                                       */
         DCL NBIND    BASED(FDTPTR( 18));

         /* 'EXCLUSIVE' USE                                          */
         DCL   EXC    BASED(FDTPTR( 19));

         /* 'SHARED' USE                                             */
         DCL  SHRD    BASED(FDTPTR( 20));

         /* 'DASDERASE' PARAMETER                                    */
         DCL DERAS    BASED(FDTPTR( 21));

         /* 'NODASDERASE' PARAMETER                                  */
         DCL NDERA    BASED(FDTPTR( 22));

         /* 'READONLY' PARAMETER                                     */
         DCL RONLY    BASED(FDTPTR( 23));

         /* 'READWRITE' PARAMETER                                    */
         DCL    RW    BASED(FDTPTR( 24));

         /* 'CONCURRENTUSERS' PARAMETER                              */
         DCL 1 CONUS BASED(FDTPTR( 25)) BDY(WORD),
               2 CONUSVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'RESERVEDSPACE' PARAMETER                                */
         DCL 1 RSVDS BASED(FDTPTR( 26)) BDY(WORD),
               2 RSVDSVAL FIXED(31);   /* NUMERIC VALUE              */
./ ADD NAME=IDCCSMV
         /************************************************************/
         /*                                                          */
         /*  'MODIFYV ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'VOLUME'  PARAMETER                                      */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'NEWSERIAL'  PARMAMETER                                  */
         DCL 1 NEWSR BASED(FDTPTR(  2)) BDY(HWORD),
               2 NEWSRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 NEWSRVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'OWNER'  PARAMETER                                       */
         DCL 1 OWNER BASED(FDTPTR(  3)) BDY(HWORD),
               2 OWNERLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OWNERVAL CHAR( 10);   /* DATA ITEM VALUE            */

         /* 'GROUP'  PARAMETER                                       */
         DCL 1   GRP BASED(FDTPTR(  4)) BDY(HWORD),
               2   GRPLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   GRPVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'GENERAL'  PARAMETER                                     */
         DCL  GNRL    BASED(FDTPTR(  5));

         /* 'RESTRICTED'  PARAMETER                                  */
         DCL  RSTR    BASED(FDTPTR(  6));

         /* 'BIND'  PARAMETER                                        */
         DCL  BIND    BASED(FDTPTR(  7));

         /* 'NOBIND'  PARAMETER                                      */
         DCL NBIND    BASED(FDTPTR(  8));

         /* 'EXCLUSIVE'  PARAMETER                                   */
         DCL EXECL    BASED(FDTPTR(  9));

         /* 'SHARED'  PARAMETER                                      */
         DCL  SHRD    BASED(FDTPTR( 10));

         /* 'READONLY'  PARAMETER                                    */
         DCL RONLY    BASED(FDTPTR( 11));

         /* 'READWRITE'  PARAMETER                                   */
         DCL    RW    BASED(FDTPTR( 12));

         /* 'DASDERASE'  PARAMETER                                   */
         DCL DERAS    BASED(FDTPTR( 13));

         /* 'NODASDERASE'  PARAMETER                                 */
         DCL NDERS    BASED(FDTPTR( 14));

         /* 'DESCRIPTION'  PARAMETER                                 */
         DCL 1 DESCR BASED(FDTPTR( 15)) BDY(HWORD),
               2 DESCRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DESCRVAL CHAR( 30);   /* DATA ITEM VALUE            */

         /* 'TO'  PARMAMETER                                         */
         DCL 1    TO BASED(FDTPTR( 16)) BDY(WORD),
               2    TOVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'BACKUPNUMBER'  PARMAMETER                               */
         DCL 1  BKUP BASED(FDTPTR( 17)) BDY(WORD),
               2  BKUPVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'NULLIFY'  PARAMETER                                     */
         DCL NULFY    BASED(FDTPTR( 18));

         /* 'OWNER'  SUBPARAMETER                                    */
         DCL  NOWN    BASED(FDTPTR( 19));

         /* 'GROUP'  SUBPARAMETER                                    */
         DCL  NGRP    BASED(FDTPTR( 20));

         /* 'DESCRIPTION'  SUBPARAMETER                              */
         DCL NDESC    BASED(FDTPTR( 21));

         /* 'RETENTION'  SUBPARAMETER                                */
         DCL  NRET    BASED(FDTPTR( 22));

         /* 'FILE'  PARAMETER                                        */
         DCL 1  FYLE BASED(FDTPTR( 23)) BDY(HWORD),
               2  FYLELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FYLEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'PASSWORDFILES'  PARAMETER                               */
         DCL 1  PSWD BASED(FDTPTR( 24)) BDY(HWORD),
               2  PSWDCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3  PSWDLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3  PSWDVAL CHAR(  8); /* DATA ITEM VALUE            */

         /* 'FOR'  PARMAMETER                                        */
         DCL 1  FORE BASED(FDTPTR( 25)) BDY(WORD),
               2  FOREVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'REBIULDLABEL'  PARAMETER                                */
         DCL  RLBL    BASED(FDTPTR( 26));

         /* 'VTOCHEADERADDRESS'  PARAMETER                           */
         DCL 1 VADDR BASED(FDTPTR( 27)) BDY(WORD),
               2 VADDRVAL FIXED(31);   /* NUMERIC VALUE              */
./ ADD NAME=IDCCSNC
         /************************************************************/
         /*                                                          */
         /*  'NULLIFYC' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'ACTIVE' VOLUME OPTION                                   */
         DCL   ACT    BASED(FDTPTR(  1));

         /* 'INACTIVE' VOLUME OPTION                                 */
         DCL INACT    BASED(FDTPTR(  2));

         /* 'SCRATCHCARTRIDGE' OPTION                                */
         DCL  SCRC    BASED(FDTPTR(  3));

         /* CARTRIDGE SERIAL NUMBER                                  */
         DCL 1  CART BASED(FDTPTR(  4)) BDY(HWORD),
               2  CARTLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  CARTVAL CHAR( 12);   /* DATA ITEM VALUE            */

         /* VOLUME SERIAL NUMBER                                     */
         DCL 1   VOL BASED(FDTPTR(  5)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'SEQUENCE1' CARTRIDGE OPTION                             */
         DCL  SEQ1    BASED(FDTPTR(  7));

         /* 'SEQUENCE2' CARTRIDGE OPTION                             */
         DCL  SEQ2    BASED(FDTPTR(  8));

         /* 'NULLIFY VOLUME' OPTION                                  */
         DCL  NVOL    BASED(FDTPTR(  9));
./ ADD NAME=IDCCSRD
         /************************************************************/
         /*                                                          */
         /*  'REPAIRV ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'DISPLAY'PARAMETER                                       */
         DCL DISPL    BASED(FDTPTR(  1));

         /* 'ERRORS'PARAMETER                                        */
         DCL ERROR    BASED(FDTPTR(  2));

         /* 'ALL'PARAMETER                                           */
         DCL  ALLA    BASED(FDTPTR(  3));

         /* 'INFILE'PARAMETER/PASSWORD                               */
         DCL 1 INFIL BASED(FDTPTR(  4)) BDY(HWORD),
               2 INFILPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 INFILPAS CHAR(8),     /* PASSWORD VALUE             */
               2 INFILLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 INFILVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'INDATASET'PARAMETER/PASSWORD                            */
         DCL 1  INDS BASED(FDTPTR(  5)) BDY(HWORD),
               2  INDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2  INDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2  INDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2  INDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3  INDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2  INDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2  INDSMEM CHAR(8),     /* MEMBER NAME                */
               2  INDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2  INDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FULLREPAIR'PARAMETER                                    */
         DCL FULLR    BASED(FDTPTR(  6));

         /* 'DATASETRANGE'PARAMETER                                  */
         DCL DSRNG    BASED(FDTPTR(  7));

         /* 'REPAIRRANGE'PARAMETER                                   */
         DCL DRRNG    BASED(FDTPTR(  8));

         /* 'STAGINGRANGE' PARAMETER                                 */
         DCL STAGR    BASED(FDTPTR(  9));

         /* 'LENGTH'PARAMETER                                        */
         DCL DLENG    BASED(FDTPTR( 10));
         DCL DLENGCNT FIXED(31) BASED(ADDR(FDTPTR( 10)));

         /* 'IDONLY'PARAMETER                                        */
         DCL IDONL    BASED(FDTPTR( 11));

         /* 'FULL RECORD'PARAMETER                                   */
         DCL  FREC    BASED(FDTPTR( 12));

         /* 'OUTFILE'PARAMETER                                       */
         DCL 1 DOUTF BASED(FDTPTR( 13)) BDY(HWORD),
               2 DOUTFPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 DOUTFPAS CHAR(8),     /* PASSWORD VALUE             */
               2 DOUTFLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DOUTFVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET'PARAMETER                                    */
         DCL 1 DOTDS BASED(FDTPTR( 14)) BDY(HWORD),
               2 DOTDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 DOTDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 DOTDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 DOTDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 DOTDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 DOTDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 DOTDSMEM CHAR(8),     /* MEMBER NAME                */
               2 DOTDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 DOTDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'HEXADECIMAL'PARAMETER                                   */
         DCL  HEXA    BASED(FDTPTR( 15));

         /* 'CHARACTER'PARAMETER                                     */
         DCL CHARA    BASED(FDTPTR( 16));

         /* 'DUMP'PARAMETER                                          */
         DCL  DUMP    BASED(FDTPTR( 17));

         /* 'VOLSER STAGINGRNGE'PARAMETER                            */
         DCL 1 VOLSR BASED(FDTPTR( 18)) BDY(HWORD),
               2 VOLSRPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 VOLSRPAS CHAR(8),     /* PASSWORD VALUE             */
               2 VOLSRPOS FIXED(8),    /* ASTERISK POSITION          */
               2 VOLSRFLG BIT(8),      /* DATA SET FLAGS             */
                 3 VOLSRFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 VOLSRMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 VOLSRMEM CHAR(8),     /* MEMBER NAME                */
               2 VOLSRLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 VOLSRVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FROM CCHHR STGRNGE'PARAMETER                            */
         DCL 1 DCCHR BASED(FDTPTR( 19)) BDY(HWORD),
               2 DCCHRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DCCHRVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'TO HHR STAGINGRNGE'PARAMETER                            */
         DCL 1  DREC BASED(FDTPTR( 20)) BDY(HWORD),
               2  DRECLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  DRECVAL CHAR(  3);   /* DATA ITEM VALUE            */

         /* 'VOLSER DATASETRANGE'PARAMETER                           */
         DCL 1 VOLDS BASED(FDTPTR( 21)) BDY(HWORD),
               2 VOLDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 VOLDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 VOLDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 VOLDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 VOLDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 VOLDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 VOLDSMEM CHAR(8),     /* MEMBER NAME                */
               2 VOLDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 VOLDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FROM CCHHR  DATASETRANGE'PARAMETER                      */
         DCL 1 DSCHR BASED(FDTPTR( 22)) BDY(HWORD),
               2 DSCHRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DSCHRVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'TO CCHHR OF DATASETRANGE'PARAMETER                      */
         DCL 1 DSCHH BASED(FDTPTR( 23)) BDY(HWORD),
               2 DSCHHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DSCHHVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'VOLSER REPAIRRANGE'PARAMETER                            */
         DCL 1 VOLRR BASED(FDTPTR( 24)) BDY(HWORD),
               2 VOLRRPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 VOLRRPAS CHAR(8),     /* PASSWORD VALUE             */
               2 VOLRRPOS FIXED(8),    /* ASTERISK POSITION          */
               2 VOLRRFLG BIT(8),      /* DATA SET FLAGS             */
                 3 VOLRRFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 VOLRRMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 VOLRRMEM CHAR(8),     /* MEMBER NAME                */
               2 VOLRRLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 VOLRRVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FROM CCHHR REPAIRRANGE'PARAMETER                        */
         DCL 1 RRCHR BASED(FDTPTR( 25)) BDY(HWORD),
               2 RRCHRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 RRCHRVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'TO CCHHR REPAIRRANGE'PARAMETER                          */
         DCL 1 RRCHH BASED(FDTPTR( 26)) BDY(HWORD),
               2 RRCHHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 RRCHHVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'KEYLENGTH OF LENGTH'PARAMETER                           */
         DCL DKEYLPTR(110) PTR(31) BASED(FDTPTR( 28));
         DCL 1 DKEYL BASED BDY(WORD),
               2 DKEYLVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'DATALENGTH OF LENGTH'PARAMETER                          */
         DCL DATALPTR(110) PTR(31) BASED(FDTPTR( 29));
         DCL 1 DATAL BASED BDY(WORD),
               2 DATALVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'VTOCHEADER PARAMETER'PARAMETER                          */
         DCL DPVTC    BASED(FDTPTR( 30));

         /* 'VTOCHEADER'PARAMETER                                    */
         DCL 1 DVTCS BASED(FDTPTR( 31)) BDY(HWORD),
               2 DVTCSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 DVTCSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 DVTCSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 DVTCSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 DVTCSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 DVTCSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 DVTCSMEM CHAR(8),     /* MEMBER NAME                */
               2 DVTCSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 DVTCSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'COPY'PARAMETER                                          */
         DCL  COPY    BASED(FDTPTR( 35));

         /* 'INFILE'PARAMETER/PASSWORD                               */
         DCL 1 CINFL BASED(FDTPTR( 36)) BDY(HWORD),
               2 CINFLPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CINFLPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CINFLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CINFLVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'INDATASET'PARAMETER/PASSWORD                            */
         DCL 1 CINDS BASED(FDTPTR( 37)) BDY(HWORD),
               2 CINDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CINDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CINDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CINDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CINDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CINDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CINDSMEM CHAR(8),     /* MEMBER NAME                */
               2 CINDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CINDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'STAGINGRANGE  'PARAMETER                                */
         DCL CSRNG    BASED(FDTPTR( 38));

         /* 'DATASETRANGE'PARAMETER                                  */
         DCL CDSRG    BASED(FDTPTR( 39));

         /* 'LENGTH FOR COPY'PARAMETER                               */
         DCL  CLEN    BASED(FDTPTR( 40));
         DCL  CLENCNT FIXED(31) BASED(ADDR(FDTPTR( 40)));

         /* 'OUTFILE'PARAMETER/PASSWORD                              */
         DCL 1 COFIL BASED(FDTPTR( 41)) BDY(HWORD),
               2 COFILPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 COFILPAS CHAR(8),     /* PASSWORD VALUE             */
               2 COFILLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 COFILVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'CATALOG'PARAMETER/PASSWORD                              */
         DCL 1 CCATL BASED(FDTPTR( 42)) BDY(HWORD),
               2 CCATLPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CCATLPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CCATLPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CCATLFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CCATLFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CCATLMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CCATLMEM CHAR(8),     /* MEMBER NAME                */
               2 CCATLLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CCATLVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'VOLSER DATASETRANGE'PARAMETER                           */
         DCL 1 CVOLD BASED(FDTPTR( 43)) BDY(HWORD),
               2 CVOLDPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CVOLDPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CVOLDPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CVOLDFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CVOLDFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CVOLDMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CVOLDMEM CHAR(8),     /* MEMBER NAME                */
               2 CVOLDLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CVOLDVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FROM CCHHR OF DATASET RANGE'PARAMETER                   */
         DCL 1 CDCHR BASED(FDTPTR( 44)) BDY(HWORD),
               2 CDCHRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CDCHRVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'TO HHR   DATASET RANGE'PARAMETER                        */
         DCL 1 CDHHR BASED(FDTPTR( 45)) BDY(HWORD),
               2 CDHHRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CDHHRVAL CHAR(  3);   /* DATA ITEM VALUE            */

         /* 'VOLSER STAGINGRANGE'PARAMETER                           */
         DCL 1 CVOLS BASED(FDTPTR( 46)) BDY(HWORD),
               2 CVOLSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CVOLSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CVOLSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CVOLSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CVOLSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CVOLSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CVOLSMEM CHAR(8),     /* MEMBER NAME                */
               2 CVOLSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CVOLSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CCHHR STAGINGRANGE'PARAMETER                            */
         DCL 1 CCCHR BASED(FDTPTR( 47)) BDY(HWORD),
               2 CCCHRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CCCHRVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'TO RECORD STAGINGRANGE'PARAMETER                        */
         DCL 1 CRECR BASED(FDTPTR( 48)) BDY(HWORD),
               2 CRECRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CRECRVAL CHAR(  1);   /* DATA ITEM VALUE            */

         /* ' KEYLENGTH OF LENGTH'PARAMETER                          */
         DCL CKEYLPTR(110) PTR(31) BASED(FDTPTR( 50));
         DCL 1 CKEYL BASED BDY(WORD),
               2 CKEYLVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'DATALENGTH OF LENGTH'PARAMETER                          */
         DCL CDATLPTR(110) PTR(31) BASED(FDTPTR( 51));
         DCL 1 CDATL BASED BDY(WORD),
               2 CDATLVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'VTOCHEADER COPY'PARAMETER                               */
         DCL CVTOC    BASED(FDTPTR( 52));

         /* 'VTOCHEADER'PARAMETER                                    */
         DCL 1 CVTCS BASED(FDTPTR( 53)) BDY(HWORD),
               2 CVTCSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CVTCSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CVTCSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CVTCSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CVTCSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CVTCSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CVTCSMEM CHAR(8),     /* MEMBER NAME                */
               2 CVTCSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CVTCSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'DEBLOCK'PARAMETER                                       */
         DCL DBLOC    BASED(FDTPTR( 70));

         /* 'FILE'PARAMETER/PASSWORD                                 */
         DCL 1 DBFIL BASED(FDTPTR( 71)) BDY(HWORD),
               2 DBFILPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 DBFILPAS CHAR(8),     /* PASSWORD VALUE             */
               2 DBFILLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DBFILVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'DATASET'PARAMETER/PASSWORD                              */
         DCL 1  DBDS BASED(FDTPTR( 72)) BDY(HWORD),
               2  DBDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2  DBDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2  DBDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2  DBDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3  DBDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2  DBDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2  DBDSMEM CHAR(8),     /* MEMBER NAME                */
               2  DBDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2  DBDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'RANGE  'PARAMETER                                       */
         DCL DBRNG    BASED(FDTPTR( 73));

         /* 'LENGTH'PARAMETER                                        */
         DCL DBLST    BASED(FDTPTR( 74));
         DCL DBLSTCNT FIXED(31) BASED(ADDR(FDTPTR( 74)));

         /* 'VOLSER RANGE'PARAMETER                                  */
         DCL 1 DBVOL BASED(FDTPTR( 75)) BDY(HWORD),
               2 DBVOLPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 DBVOLPAS CHAR(8),     /* PASSWORD VALUE             */
               2 DBVOLPOS FIXED(8),    /* ASTERISK POSITION          */
               2 DBVOLFLG BIT(8),      /* DATA SET FLAGS             */
                 3 DBVOLFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 DBVOLMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 DBVOLMEM CHAR(8),     /* MEMBER NAME                */
               2 DBVOLLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 DBVOLVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FROM CCHH OF RANGE'PARAMETER                            */
         DCL 1 DBCCH BASED(FDTPTR( 76)) BDY(HWORD),
               2 DBCCHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DBCCHVAL CHAR(  4);   /* DATA ITEM VALUE            */

         /* 'TO HH OF RANGE'PARAMETER                                */
         DCL 1 DBHHH BASED(FDTPTR( 77)) BDY(HWORD),
               2 DBHHHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 DBHHHVAL CHAR(  2);   /* DATA ITEM VALUE            */

         /* 'LENGTH OF KEY FOR LENGTH'PARAMETER                      */
         DCL DBKEYPTR(110) PTR(31) BASED(FDTPTR( 79));
         DCL 1 DBKEY BASED BDY(WORD),
               2 DBKEYVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'DATALENGTH OF LENGTH'PARAMETER                          */
         DCL DBDATPTR(110) PTR(31) BASED(FDTPTR( 80));
         DCL 1 DBDAT BASED BDY(WORD),
               2 DBDATVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'MODIFY'PARAMETER                                        */
         DCL MODIF    BASED(FDTPTR( 90));

         /* 'NEWDATA'PARAMETER                                       */
         DCL MNDAT    BASED(FDTPTR( 91));

         /* 'NEWKEY'PARAMETER                                        */
         DCL MNKEY    BASED(FDTPTR( 92));

         /* 'NEWCOUNT'PARAMETER                                      */
         DCL 1 MNCNT BASED(FDTPTR( 93)) BDY(HWORD),
               2 MNCNTLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MNCNTVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'INFILE'PARAMETER/PASSWORD                               */
         DCL 1 MINFL BASED(FDTPTR( 94)) BDY(HWORD),
               2 MINFLPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MINFLPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MINFLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MINFLVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'INDATASET'PARAMETER/PASSWORD                            */
         DCL 1 MINDS BASED(FDTPTR( 95)) BDY(HWORD),
               2 MINDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MINDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MINDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MINDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MINDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MINDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MINDSMEM CHAR(8),     /* MEMBER NAME                */
               2 MINDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MINDSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'INREPAIRKEY'PARAMETER                                   */
         DCL  MIRK    BASED(FDTPTR( 96));

         /* 'INDATASETADDRESS'PARAMETER                              */
         DCL MIDSA    BASED(FDTPTR( 97));

         /* 'INREPAIRRANGE'PARAMETER                                 */
         DCL MIRNG    BASED(FDTPTR( 98));

         /* 'OUTREPAIRKEY'PARAMETER/PASSWORD                         */
         DCL  MORK    BASED(FDTPTR(102));

         /* 'OUTDATASETADDRESS  'PARAMETER                           */
         DCL MODSA    BASED(FDTPTR(103));

         /* 'OUTFILE'PARAMETER/PASSWORD                              */
         DCL 1 MOUTF BASED(FDTPTR(104)) BDY(HWORD),
               2 MOUTFPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MOUTFPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MOUTFLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MOUTFVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'OUTDATASET'PARAMETER/PASSWORD                           */
         DCL 1  MODS BASED(FDTPTR(105)) BDY(HWORD),
               2  MODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2  MODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2  MODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2  MODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3  MODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2  MODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2  MODSMEM CHAR(8),     /* MEMBER NAME                */
               2  MODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2  MODSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'OVERFLOW'PARAMETER/PASSWORD                             */
         DCL MOVFL    BASED(FDTPTR(106));

         /* 'VTOCHEADERADDRESS'PARAMETER                             */
         DCL MVTOC    BASED(FDTPTR(107));

         /* 'VTOCHEADERADDRESS VOLSER'PARAMETER                      */
         DCL 1 MVTCS BASED(FDTPTR(108)) BDY(HWORD),
               2 MVTCSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MVTCSPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MVTCSPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MVTCSFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MVTCSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MVTCSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MVTCSMEM CHAR(8),     /* MEMBER NAME                */
               2 MVTCSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MVTCSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'VTOCHEADERADDRESS CCHHR'PARAMETER                       */
         DCL 1 MVTCR BASED(FDTPTR(109)) BDY(HWORD),
               2 MVTCRLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MVTCRVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'VOLSER INREPAIRKEY'PARAMETER                            */
         DCL 1 MIRVO BASED(FDTPTR(110)) BDY(HWORD),
               2 MIRVOPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MIRVOPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MIRVOPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MIRVOFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MIRVOFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MIRVOMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MIRVOMEM CHAR(8),     /* MEMBER NAME                */
               2 MIRVOLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MIRVOVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CCHHR INREPAIRKEY'PARAMETER                             */
         DCL 1 MIRCH BASED(FDTPTR(111)) BDY(HWORD),
               2 MIRCHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MIRCHVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'VOLSER INDATASETADDRESS'PARAMETER                       */
         DCL 1 MIDVO BASED(FDTPTR(112)) BDY(HWORD),
               2 MIDVOPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MIDVOPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MIDVOPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MIDVOFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MIDVOFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MIDVOMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MIDVOMEM CHAR(8),     /* MEMBER NAME                */
               2 MIDVOLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MIDVOVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CCHHR INDATASETADDRESS'PARAMETER                        */
         DCL 1 MIDCH BASED(FDTPTR(113)) BDY(HWORD),
               2 MIDCHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MIDCHVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'VOL SER INREPAIRRANGE'PARAMETER                         */
         DCL 1 MRRVO BASED(FDTPTR(114)) BDY(HWORD),
               2 MRRVOPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MRRVOPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MRRVOPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MRRVOFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MRRVOFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MRRVOMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MRRVOMEM CHAR(8),     /* MEMBER NAME                */
               2 MRRVOLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MRRVOVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'FROM CCHH  IN RANGE'PARAMETER                           */
         DCL 1 MRRCH BASED(FDTPTR(115)) BDY(HWORD),
               2 MRRCHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MRRCHVAL CHAR(  4);   /* DATA ITEM VALUE            */

         /* 'TO CCHHR IN RANGE'PARAMETER                             */
         DCL 1 MRRHH BASED(FDTPTR(116)) BDY(HWORD),
               2 MRRHHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MRRHHVAL CHAR(  2);   /* DATA ITEM VALUE            */

         /* 'OFFSET OF NEWDATA'PARAMETER                             */
         DCL 1 MNDOF BASED(FDTPTR(117)) BDY(WORD),
               2 MNDOFVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'DATA STRING'PARAMETER                                   */
         DCL 1 MNDST BASED(FDTPTR(118)) BDY(HWORD),
               2 MNDSTLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MNDSTVAL CHAR(255);   /* DATA ITEM VALUE            */

         /* 'OFFSET OF NEWKEY'PARAMETER                              */
         DCL 1 MNKOF BASED(FDTPTR(119)) BDY(WORD),
               2 MNKOFVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'KEY STRING'PARAMETER                                    */
         DCL 1 MNKST BASED(FDTPTR(120)) BDY(HWORD),
               2 MNKSTLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MNKSTVAL CHAR(255);   /* DATA ITEM VALUE            */

         /* 'VOLSER OUTREPAIRKEY'PARAMETER                           */
         DCL 1 MORVO BASED(FDTPTR(121)) BDY(HWORD),
               2 MORVOPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MORVOPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MORVOPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MORVOFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MORVOFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MORVOMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MORVOMEM CHAR(8),     /* MEMBER NAME                */
               2 MORVOLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MORVOVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CCHHR INDEX OF OUTREPAIRKEY'PARAMETER                   */
         DCL 1 MORCH BASED(FDTPTR(122)) BDY(HWORD),
               2 MORCHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MORCHVAL CHAR(  5);   /* DATA ITEM VALUE            */

         /* 'VOLSER OUTDATASETADDRESS'PARAMETER                      */
         DCL 1 MODVO BASED(FDTPTR(123)) BDY(HWORD),
               2 MODVOPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 MODVOPAS CHAR(8),     /* PASSWORD VALUE             */
               2 MODVOPOS FIXED(8),    /* ASTERISK POSITION          */
               2 MODVOFLG BIT(8),      /* DATA SET FLAGS             */
                 3 MODVOFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 MODVOMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 MODVOMEM CHAR(8),     /* MEMBER NAME                */
               2 MODVOLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 MODVOVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CCHHR OUTDATASETADDRESS'PARAMETER                       */
         DCL 1 MODCH BASED(FDTPTR(124)) BDY(HWORD),
               2 MODCHLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 MODCHVAL CHAR(  5);   /* DATA ITEM VALUE            */
./ ADD NAME=IDCCSRL
         /************************************************************/
         /*                                                  @Y30LB32*/
         /*  'REPLACEC' FUNCTION DATA TABLE DECLARATIONS     @Y30LB32*/
         /*                                                  @Y30LB32*/
         /************************************************************/
 %IF BASEFDT = 'YES'                                       /*@Y30LB32*/
   %THEN                                                   /*@Y30LB32*/
     %GO TO BASEFDT1;                                      /*@Y30LB32*/
                                                           /*@Y30LB32*/
         DCL 1 FDTTBL      BDY(WORD),                      /*@Y30LB32*/
 %GO TO BASEFDT2;                                          /*@Y30LB32*/
 %BASEFDT1:;                                               /*@Y30LB32*/
                                                           /*@Y30LB32*/
         DCL 1 FDTTBL      BASED   BDY(WORD),              /*@Y30LB32*/
 %BASEFDT2:;                                               /*@Y30LB32*/
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME  @Y30LB32*/
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA        @Y30LB32*/
                                       /* POINTERS           @Y30LB32*/
                                                           /*@Y30LB32*/
         /* DATA DECLARATIONS OF SCALAR DATA ITEMS           @Y30LB32*/
                                                           /*@Y30LB32*/
         /* VOLUME SERIAL NUMBER                             @Y30LB32*/
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),        /*@Y30LB32*/
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE    @Y30LB32*/
                                                           /*@Y30LB32*/
         /* SEQUENCE NUMBER                                  @Y30LB32*/
         DCL 1   SEQ BASED(FDTPTR(  2)) BDY(WORD),         /*@Y30LB32*/
               2   SEQVAL FIXED(31);   /* NUMERIC VALUE      @Y30LB32*/
                                                           /*@Y30LB32*/
         /* CARTRIDGE SERIAL NUMBER                          @Y30LB32*/
         DCL 1  CART BASED(FDTPTR(  3)) BDY(HWORD),        /*@Y30LB32*/
               2  CARTLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB32*/
               2  CARTVAL CHAR( 12);   /* DATA ITEM VALUE    @Y30LB32*/
./ ADD NAME=IDCCSRR
         /************************************************************/
         /*                                                          */
         /*  'REMOVEVR' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* VOLUME SERIAL NUMBERS                                    */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'ALL' PARAMETER                                          */
         DCL  ALLC    BASED(FDTPTR(  2));

         /* 'COPYDATE' PARAMETER                                     */
         DCL CDATE    BASED(FDTPTR(  3));

         /* DATE COPY CREATED                                        */
         DCL 1  DATE BASED(FDTPTR(  4)) BDY(WORD),
               2  DATEVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'COPYDATE' SEQUENCE NUMBER                               */
         DCL 1   SEQ BASED(FDTPTR(  5)) BDY(WORD),
               2   SEQVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'BASEPLACEHOLDER' PARAMETER                              */
         DCL  BHLD    BASED(FDTPTR(  6));

         /* 'COPYPLACEHOLDER' PARAMETER                              */
         DCL  CHLD    BASED(FDTPTR(  7));
./ ADD NAME=IDCCSRV
         /************************************************************/
         /*                                                          */
         /*  'RECV    ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'FROMVOLUME' SERIAL NO.                                  */
         DCL 1  FVOL BASED(FDTPTR(  1)) BDY(HWORD),
               2  FVOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FVOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'TOVOLUME' SERIAL NO.                                    */
         DCL 1  TVOL BASED(FDTPTR(  2)) BDY(HWORD),
               2  TVOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  TVOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'COPYDATE' PARM                                          */
         DCL CDATE    BASED(FDTPTR(  3));

         /* 'COPYDATE' JULIAN DATE VALUE                             */
         DCL 1  DATE BASED(FDTPTR(  4)) BDY(WORD),
               2  DATEVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'COPYDATE' SEQUENCE NO.                                  */
         DCL 1  SEQ# BASED(FDTPTR(  5)) BDY(WORD),
               2  SEQ#VAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'LATESTBACKUP' PARM                                      */
         DCL LBKUP    BASED(FDTPTR(  6));

         /* 'CATALOG' PARM                                           */
         DCL   CAT    BASED(FDTPTR(  7));

         /* 'CATALOG' CATNAME/PASSWORD VALUE                         */
         DCL 1 CATNM BASED(FDTPTR(  8)) BDY(HWORD),
               2 CATNMPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 CATNMPAS CHAR(8),     /* PASSWORD VALUE             */
               2 CATNMPOS FIXED(8),    /* ASTERISK POSITION          */
               2 CATNMFLG BIT(8),      /* DATA SET FLAGS             */
                 3 CATNMFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CATNMMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 CATNMMEM CHAR(8),     /* MEMBER NAME                */
               2 CATNMLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CATNMVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'CATALOG' DNAME VALUE                                    */
         DCL 1 CATDN BASED(FDTPTR(  9)) BDY(HWORD),
               2 CATDNLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 CATDNVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'FILE' DNAME VALUE                                       */
         DCL 1  FILE BASED(FDTPTR( 10)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'PASSWORDFILES' PARM                                     */
         DCL 1 PFILE BASED(FDTPTR( 11)) BDY(HWORD),
               2 PFILECNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3 PFILELEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3 PFILEVAL CHAR(  8); /* DATA ITEM VALUE            */
./ ADD NAME=IDCCSSD
         /************************************************************/
         /*                                                          */
         /*  'SCRDSET ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* VOLUME(S) TO LIST                                        */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3   VOLLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3   VOLVAL CHAR(  6); /* DATA ITEM VALUE            */

         /* GROUP(S) TO LIST                                         */
         DCL 1   GRP BASED(FDTPTR(  2)) BDY(HWORD),
               2   GRPCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3   GRPLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3   GRPVAL CHAR(  8); /* DATA ITEM VALUE            */

         /* OPTION TO LIST ALL VOLUMES                               */
         DCL  AVOL    BASED(FDTPTR(  3));

         /* OPTION TO LIST ALL GROUPS                                */
         DCL  AGRP    BASED(FDTPTR(  4));

         /* 'NON-GROUPED' LIMITING OPTION                            */
         DCL NGRPD    BASED(FDTPTR(  5));

         /* 'GENERAL' LIMITING OPTION                                */
         DCL GENER    BASED(FDTPTR( 16));

         /* LEVEL NAME OF DATA SETS TO LIST                          */
         DCL 1 LEVEL BASED(FDTPTR(  6)) BDY(HWORD),
               2 LEVELPLN FIXED(8),    /* PASSWORD LENGTH            */
               2 LEVELPAS CHAR(8),     /* PASSWORD VALUE             */
               2 LEVELPOS FIXED(8),    /* ASTERISK POSITION          */
               2 LEVELFLG BIT(8),      /* DATA SET FLAGS             */
                 3 LEVELFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 LEVELMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2 LEVELMEM CHAR(8),     /* MEMBER NAME                */
               2 LEVELLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 LEVELVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'UNCATALOGED' LIMITING OPTION                            */
         DCL UNCAT    BASED(FDTPTR(  7));

         /* 'EXPIRATION DATE' LIMITING OPTION                        */
         DCL 1 EXPDT BASED(FDTPTR(  8)) BDY(WORD),
               2 EXPDTVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'EXPIRATION DAYS' LIMITING OPTION                        */
         DCL 1 EXPIR BASED(FDTPTR(  9)) BDY(WORD),
               2 EXPIRVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'CREATION DATE' LIMITING OPTION                          */
         DCL 1 CREDT BASED(FDTPTR( 10)) BDY(WORD),
               2 CREDTVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'CREATION DAYS' LIMITING OPTION                          */
         DCL 1 CREAT BASED(FDTPTR( 11)) BDY(WORD),
               2 CREATVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'FILE' DDNAME                                            */
         DCL 1  FILE BASED(FDTPTR( 12)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'SYSTEMNAMES' OPTION                                     */
         DCL  SYSN    BASED(FDTPTR( 13));

         /* OPTION TO PURGE ALL DATA SETS                            */
         DCL PURGE    BASED(FDTPTR( 17));

         /* VOLUMES NOT TO BE SCRATCHED                              */
         DCL 1 EXVOL BASED(FDTPTR( 14)) BDY(HWORD),
               2 EXVOLCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3 EXVOLLEN FIXED(8),  /* DATA ITEM LENGTH           */
                 3 EXVOLVAL CHAR(  6); /* DATA ITEM VALUE            */

         /* DATA SETS NOT TO BE SCRATCHED                            */
         DCL 1  EXDS BASED(FDTPTR( 15)) BDY(HWORD),
               2  EXDSCNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3  EXDSPLN FIXED(8),  /* PASSWORD LENGTH            */
                 3  EXDSPAS CHAR(8),   /* PASSWORD VALUE             */
                 3  EXDSPOS FIXED(8),  /* ASTERISK POSITION          */
                 3  EXDSFLG BIT(8),    /* DATA SET FLAGS             */
                   4  EXDSFUQ BIT(1),  /* FLAG-ON IF UNQUALIFIED     */
                 3  EXDSMLN FIXED(8),  /* MEMBER NAME LENGTH         */
                 3  EXDSMEM CHAR(8),   /* MEMBER NAME                */
                 3  EXDSLEN FIXED(8),  /* CATALOGUED NAME LENGTH     */
                 3  EXDSVAL CHAR(44);  /* CATALOGUED NAME            */
./ ADD NAME=IDCCSSG
         /************************************************************/
         /*                                                  @Y30LB36*/
         /*  'SCRATCHG' FUNCTION DATA TABLE DECLARATIONS     @Y30LB36*/
         /*                                                  @Y30LB36*/
         /************************************************************/
 %IF BASEFDT = 'YES'                                       /*@Y30LB36*/
   %THEN                                                   /*@Y30LB36*/
     %GO TO BASEFDT1;                                      /*@Y30LB36*/

         DCL 1 FDTTBL      BDY(WORD),                      /*@Y30LB36*/
 %GO TO BASEFDT2;                                          /*@Y30LB36*/
 %BASEFDT1:;                                               /*@Y30LB36*/

         DCL 1 FDTTBL      BASED   BDY(WORD),              /*@Y30LB36*/
 %BASEFDT2:;                                               /*@Y30LB36*/
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME  @Y30LB36*/
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA PRTS   @Y30LB36*/

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS           @Y30LB36*/

         /* 'GROUP' NAME                                     @Y30LB36*/
         DCL 1   GRP BASED(FDTPTR(  1)) BDY(HWORD),        /*@Y30LB36*/
               2   GRPLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB36*/
               2   GRPVAL CHAR(  8);   /* DATA ITEM VALUE    @Y30LB36*/
         DCL   GRPCNT FIXED(31) BASED(ADDR(FDTPTR(  1)));  /*@Y30LB36*/
./ ADD NAME=IDCCSSR
         /************************************************************/
         /*                                                  @Y30LB31*/
         /*  'STOREV  ' FUNCTION DATA TABLE DECLARATIONS     @Y30LB31*/
         /*                                                  @Y30LB31*/
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;                                      /*@Y30LB31*/

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;                                          /*@Y30LB31*/
 %BASEFDT1:;                                               /*@Y30LB31*/

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;                                               /*@Y30LB31*/
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME  @Y30LB31*/
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS           @Y30LB31*/

         /* 'VOLUME' SERIAL NO.                              @Y30LB31*/
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB31*/
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE    @Y30LB31*/

         /* 'NEWSERIAL' VOLUME SERIAL NO.                    @Y30LB31*/
         DCL 1  NSER BASED(FDTPTR(  2)) BDY(HWORD),
               2  NSERLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB31*/
               2  NSERVAL CHAR(  6);   /* DATA ITEM VALUE    @Y30LB31*/

         /* 'EJECT' PARM                                     @Y30LB31*/
         DCL EJECT    BASED(FDTPTR(  3));                  /*@Y30LB31*/

         /* 'NOEJECT' PARM                                   @Y30LB31*/
         DCL NEJEC    BASED(FDTPTR(  4));                  /*@Y30LB31*/

         /* 'RECORD' PARM                                    @Y30LB31*/
         DCL   REC    BASED(FDTPTR(  5));                  /*@Y30LB31*/

         /* 'NORECORD' PARM                                  @Y30LB31*/
         DCL  NREC    BASED(FDTPTR(  6));                  /*@Y30LB31*/

         /* 'LOCATION' OF EJECTED VOLUME                     @Y30LB31*/
         DCL 1   LOC BASED(FDTPTR(  7)) BDY(HWORD),
               2   LOCLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB31*/
               2   LOCVAL CHAR( 30);   /* DATA ITEM VALUE    @Y30LB31*/

         /* 'CATALOG' PARM                                   @Y30LB31*/
         DCL   CAT    BASED(FDTPTR(  8));                  /*@Y30LB31*/

         /* 'CATALOG' CATNAME/PASSWORD VALUE                 @Y30LB31*/
         DCL 1 CATNM BASED(FDTPTR(  9)) BDY(HWORD),
               2 CATNMPLN FIXED(8),    /* PASSWORD LENGTH    @Y30LB31*/
               2 CATNMPAS CHAR(8),     /* PASSWORD VALUE     @Y30LB31*/
               2 CATNMPOS FIXED(8),    /* ASTERISK POSITION  @Y30LB31*/
               2 CATNMFLG BIT(8),      /* DATA SET FLAGS     @Y30LB31*/
                 3 CATNMFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2 CATNMMLN FIXED(8),    /* MEMBER NAME LENGTH @Y30LB31*/
               2 CATNMMEM CHAR(8),     /* MEMBER NAME        @Y30LB31*/
               2 CATNMLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2 CATNMVAL CHAR(44);    /* CATALOGUED NAME    @Y30LB31*/

         /* 'CATALOG' DNAME VALUE                            @Y30LB31*/
         DCL 1 CATDN BASED(FDTPTR( 10)) BDY(HWORD),
               2 CATDNLEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB31*/
               2 CATDNVAL CHAR(  8);   /* DATA ITEM VALUE    @Y30LB31*/

         /* 'FILE' DDNAME VALUE                              @Y30LB31*/
         DCL 1  FILE BASED(FDTPTR( 11)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH   @Y30LB31*/
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE    @Y30LB31*/

         /* 'PASSWORDFILES' PARM                             @Y30LB31*/
         DCL 1 PFILE BASED(FDTPTR( 12)) BDY(HWORD),
               2 PFILECNT FIXED(15),   /* COUNT OF ITEMS IN LIST     */
               2 *(255) BDY(HWORD),
                 3 PFILELEN FIXED(8),  /* DATA ITEM LENGTH   @Y30LB31*/
                 3 PFILEVAL CHAR(  8); /* DATA ITEM VALUE    @Y30LB31*/
./ ADD NAME=IDCCSST
         /************************************************************/
         /*                                                          */
         /*  'SWAPT   ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */
./ ADD NAME=IDCCSSV
         /************************************************************/
         /*                                                          */
         /*  'SCRATCHV' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* VOLUME SERIAL NUMBERS                                    */
         DCL 1   VOL BASED(FDTPTR(  1)) BDY(HWORD),
               2   VOLLEN FIXED(8),    /* DATA ITEM LENGTH           */
               2   VOLVAL CHAR(  6);   /* DATA ITEM VALUE            */

         /* 'ALL' PARAMETER                                          */
         DCL  ALLC    BASED(FDTPTR(  2));

         /* 'COPYDATE' PARAMETER                                     */
         DCL CDATE    BASED(FDTPTR(  3));

         /* DATE COPY CREATED                                        */
         DCL 1  DATE BASED(FDTPTR(  4)) BDY(WORD),
               2  DATEVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'COPYDATE' SEQUENCE NUMBER                               */
         DCL 1   SEQ BASED(FDTPTR(  5)) BDY(WORD),
               2   SEQVAL FIXED(31);   /* NUMERIC VALUE              */

         /* NAME OF DD STATEMENT                                     */
         DCL 1  FILE BASED(FDTPTR(  6)) BDY(HWORD),
               2  FILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2  FILEVAL CHAR(  8);   /* DATA ITEM VALUE            */
./ ADD NAME=IDCCSTR
         /************************************************************/
         /*                                                          */
         /*  'TRACE   ' FUNCTION DATA TABLE DECLARATIONS             */
         /*                                                          */
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'TRACE OP' ON                                            */
         DCL  ZXON    BASED(FDTPTR(  1));

         /* 'TRACE OP' OFF                                           */
         DCL ZXOFF    BASED(FDTPTR(  2));

         /* 'TRACE OP' DUMP                                          */
         DCL  DUMP    BASED(FDTPTR(  3));

         /* 'TRACE DATA' X                                           */
         DCL     X    BASED(FDTPTR(  4));

         /* 'TRACE DATA' Y                                           */
         DCL     Y    BASED(FDTPTR(  5));

         /* 'TRACE DATA' BOTH                                        */
         DCL  BOTH    BASED(FDTPTR(  6));

         /* 'TRACE DATA' ACTIVE                                      */
         DCL   ACT    BASED(FDTPTR(  7));

         /* 'TRACE DATA' INACTIVE                                    */
         DCL INACT    BASED(FDTPTR(  8));

         /* 'TRACE EXTENT' CURRENT                                   */
         DCL  CURR    BASED(FDTPTR(  9));

         /* 'TRACE EXTENT' MAXIMUM                                   */
         DCL ZXMAX    BASED(FDTPTR( 10));

         /* 'TRACE OUTPUT' DDNAME                                    */
         DCL 1 OFILE BASED(FDTPTR( 11)) BDY(HWORD),
               2 OFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 OFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'TRACE OUTPUT' DSNAME                                    */
         DCL 1   ODS BASED(FDTPTR( 12)) BDY(HWORD),
               2   ODSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   ODSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   ODSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   ODSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   ODSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   ODSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   ODSMEM CHAR(8),     /* MEMBER NAME                */
               2   ODSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   ODSVAL CHAR(44);    /* CATALOGUED NAME            */

         /* 'TRACE WORK' DDNAME                                      */
         DCL 1 WFILE BASED(FDTPTR( 13)) BDY(HWORD),
               2 WFILELEN FIXED(8),    /* DATA ITEM LENGTH           */
               2 WFILEVAL CHAR(  8);   /* DATA ITEM VALUE            */

         /* 'TRACE WORK' DSNAME                                      */
         DCL 1   WDS BASED(FDTPTR( 14)) BDY(HWORD),
               2   WDSPLN FIXED(8),    /* PASSWORD LENGTH            */
               2   WDSPAS CHAR(8),     /* PASSWORD VALUE             */
               2   WDSPOS FIXED(8),    /* ASTERISK POSITION          */
               2   WDSFLG BIT(8),      /* DATA SET FLAGS             */
                 3   WDSFUQ BIT(1),    /* FLAG-ON IF UNQUALIFIED     */
               2   WDSMLN FIXED(8),    /* MEMBER NAME LENGTH         */
               2   WDSMEM CHAR(8),     /* MEMBER NAME                */
               2   WDSLEN FIXED(8),    /* CATALOGUED NAME LENGTH     */
               2   WDSVAL CHAR(44);    /* CATALOGUED NAME            */
./ ADD NAME=IDCCSTU
         /************************************************************/
         /*                                                  @Y30LB00*/
         /*  'TUNE    ' FUNCTION DATA TABLE DECLARATIONS     @Y30LB00*/
         /*                                                  @Y30LB00*/
         /************************************************************/
 %IF BASEFDT = 'YES'
   %THEN
     %GO TO BASEFDT1;

         DCL 1 FDTTBL      BDY(WORD),
 %GO TO BASEFDT2;
 %BASEFDT1:;

         DCL 1 FDTTBL      BASED   BDY(WORD),
 %BASEFDT2:;
               2 FDTVERB   CHAR(8),    /* FUNCTION VERBNAME          */
               2 FDTPTR(*) PTR(31);    /* SCALAR DATA POINTERS       */

         /* DATA DECLARATIONS OF SCALAR DATA ITEMS                   */

         /* 'DISPLAY' PARM                                           */
         DCL   DIS    BASED(FDTPTR(  1));

         /* 'CHANGE' PARM                                            */
         DCL  CHNG    BASED(FDTPTR(  2));

         /* 'LRUCLOCK' VALUE IN SECONDS                              */
         DCL 1  LRUC BASED(FDTPTR(  3)) BDY(WORD),
               2  LRUCVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'STAGINGDRIVEGROUP' NUMBER                               */
         DCL 1   SDG BASED(FDTPTR(  4)) BDY(WORD),
               2   SDGVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'ACTIVEPAGES' LOWER AND HIGHER NUMBER OF PAGES           */
         DCL  ACTP    BASED(FDTPTR(  5));

         /* 'ACTIVEPAGES' LOWER NUMBER OF PAGES                      */
         DCL 1 ACTPL BASED(FDTPTR(  6)) BDY(WORD),
               2 ACTPLVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'ACTIVEPAGES' HIGHER NUMBER OF PAGES                     */
         DCL 1 ACTPH BASED(FDTPTR(  7)) BDY(WORD),
               2 ACTPHVAL FIXED(31);   /* NUMERIC VALUE              */

         /* 'LRUGROUPS' UNITS                                        */
         DCL 1 LRUGR BASED(FDTPTR(  8)) BDY(WORD),
               2 LRUGRCNT FIXED(31),   /* COUNT OF ITEMS IN LIST     */
               2 LRUGRVAL(  4) FIXED(31);/* DATA ITEMS               */
./ ADD NAME=IDCDF04
 /*********************************************************  @Y30LB33*/
 /*                                                          @Y30LB33*/
 /* MSS GLOBAL DATA AREAS FOR AMS (VS2):        04/05/76     @ZA09521*/
 /*     (1) MSS MESSAGE STRUCTURES                           @Y30LB30*/
 /*     (2) SYSTEM ADAPTER DECLARATIONS                      @Y30LB30*/
 /*         A) DATA STRUCTURES                               @Y30LB30*/
 /*         B) SYMBOLIC RETURN CODES                         @Y30LB30*/
 /*     (3) VOLUME SERVICE DECLARATIONS                      @Y30LB30*/
 /*         A) DATA STRUCTURES                               @Y30LB30*/
 /*         B) SYMBOLIC RETURN CODES                         @Y30LB30*/
 /*     (4) INPUT/OUTPUT ADAPTER DECLARATIONS                @Y30LB30*/
 /*     (5) CONVENTIONALIZED NAMED VALUES DELCARATIONS       @Y30LB30*/
 /*                                                          @Y30LB30*/
 /* CHANGE ACTIVITY -                                        @YD00171*/
 /*       @YD00171                                           @YD00171*/
 /*       @YD00175                                           @YD00175*/
 /* CHANGE 03  3/18/75  NEW COPY CART. MSSC MESSAGE FORMAT   @ZM00741*/
 /* CHANGE 04 11/10/75  NEW STAEPARM FORMAT                  @ZA05112*/
 /* CHANGE 05 03/04/76  MDFORCE IN MDAGL                     @ZA09521*/
 /* CHANGE 06 9/1/76  DCRR - REBUILD A VOLUME LABEL          @ZDR2057*/
 /* CHANGE 07 10/13/76 FIX TO CTMSG CTARRAY MULTIPLE         @ZA14727*/
 /* CHANGE 08 10/20/76 REPAIRV                               @ZA11014*/
 /* CHANGE 09 04/05/76  RACF D.S. PROTECTION FLAG IN VSDSTAT @G24LB31*/
 /* CHANGE 10 05/10/76  NEW KEYWORD FOR MODIFYC              @G24LB40*/
 /*                                                          @YD00171*/
 /*********************************************************  @Y30LB30*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB33*/
 /*                                                          @Y30LB33*/
 /*  THIS STRUCTURE IS THE FORMAT OF THE COPY CARTRIDGE      @Y30LB33*/
 /*  MESSAGE RETURNED AFTER THE SUCCESSFUL COMPLETION        @Y30LB33*/
 /*  OF THE USSC MACRO.                                      @Y30LB33*/
 /*                                                          @Y30LB33*/
 /*********************************************************  @Y30LB33*/
                                                           /*@Y30LB33*/
         DCL CCMSGPTR PTR(31);         /*PTR TO MSG AREA     @Y30LB33*/
                                                           /*@Y30LB33*/
         DCL 1 CCMSG BASED(CCMSGPTR),                      /*@Y30LB33*/
               2 CCPSTCDE    CHAR(1),  /* POST CODE          @ZM00741*/
               2 CCEJCODE    FIXED(8), /* EJECT CODE         @ZM00741*/
               2 *           CHAR(2),  /* RESERVED           @ZM00741*/
               2 CCVOL       CHAR(6),  /* VOLUME             @Y30LB33*/
               2 *           CHAR(2),  /* RESERVED           @ZM00741*/
               2 CCNEWCSN    CHAR(12), /* REPLACEMENT CART   @Y30LB33*/
               2 CCOLDCSN    CHAR(12); /* OLD CARTRIDGE      @Y30LB33*/
                                                           /*@Y30LB33*/
                                                           /*@Y30LB33*/
 /*********************************************************  @Y30LB33*/
 /*                                                          @Y30LB33*/
 /*  THIS STRUCTURE IS THE FORMAT OF THE MOVE AND            @Y30LB33*/
 /*  DEFINE MESSAGES RETURNED AFTER THE SUCCESSFUL           @Y30LB33*/
 /*  COMPLETION OF THE USSC MACRO                            @Y30LB33*/
 /*                                                          @Y30LB33*/
 /*********************************************************  @Y30LB33*/
                                                           /*@Y30LB33*/
         DCL CMMSGPTR PTR(31);         /*PTR TO MSG AREA     @Y30LB30*/
                                                           /*@Y30LB33*/
         DCL 1 CMMSG BASED(CMMSGPTR),                      /*@Y30LB30*/
               2 CMOLDVOL    CHAR(6),  /* OLD VOLID          @Y30LB30*/
               2 CMVOLFLG    CHAR(1),  /* MESSAGE FLAGS      @Y30LB30*/
                 3 CMCECART  BIT(1),   /* CE CART            @Y30LB30*/
                 3 CMSCRVOL  BIT(1),   /* SCRATCH VOLUME     @Y30LB30*/
                 3 CMDERAS   BIT(1),   /* DASD ERASE         @Y30LB30*/
                 3 CMEXCL    BIT(1),   /* EXCLUSIVE VOLUME   @Y30LB30*/
                 3 CMSCRCRT  BIT(1),   /* SCRATCH CARTRIDGE  @Y30LB30*/
                 3 CMBIND    BIT(1),   /* BOUND VOLUME       @Y30LB30*/
                 3 CMRONLY   BIT(1),   /* READONLY VOLUME    @Y30LB30*/
                 3 *         BIT(1),   /* UNUSED             @Y30LB33*/
               2 *           CHAR(1),  /* UNUSED             @Y30LB33*/
               2 CMNEWVOL    CHAR(6),  /* NEW VOLID          @Y30LB30*/
               2 *           CHAR(1),  /* UNUSED             @Y30LB33*/
               2 CMNUMCRT    CHAR(1),  /* NUMBER OF CARTS    @Y30LB30*/
               2 CMCSN1      CHAR(12), /* CART SERIAL 1      @Y30LB30*/
               2 CMCSN2      CHAR(12); /* CART SERIAL 2      @Y30LB30*/
                                                           /*@Y30LB33*/
 /*********************************************************  @Y30LB33*/
 /*                                                          @Y30LB33*/
 /* THIS STRUCTURE IS THE FORMAT OF THE COPY TABLES          @Y30LB33*/
 /* MESSAGE RETURNED AFTER THE SUCCESSFUL COMPLETION         @Y30LB33*/
 /* OF THE USSC MACRO TO COPY THE MSC TABLES                 @Y30LB30*/
 /*                                                          @Y30LB33*/
 /*********************************************************  @Y30LB33*/
                                                           /*@Y30LB33*/
         DCL CTMSGPTR PTR(31);         /*PTR TO MSG AREA     @Y30LB33*/
                                                           /*@Y30LB33*/
         DCL 1 CTMSG BASED(CTMSGPTR),                      /*@Y30LB33*/
               2 * CHAR(1),            /* UNUSED             @Y30LB33*/
               2 CTREALCC CHAR(2),     /* CYLINDER IN        @Y30LB33*/
                                       /* TARGET DATA SET    @Y30LB33*/
                                       /* WHERE FIRST        @Y30LB33*/
                                       /* BEGINS             @Y30LB33*/
               2 CTREALH FIXED(8) UNSIGNED,                /*@Y30LB33*/
                                       /* TRACK IN TARGET    @Y30LB33*/
                                       /* DATA SET WHERE     @Y30LB33*/
                                       /* FIRST TABLE        @Y30LB33*/
                                       /* BEGINS             @Y30LB33*/
               2 CTARRAY(14) CHAR(4),  /* TABLE TRACKS       @ZA14727*/
                    3 CTTBLID CHAR(1), /* TABLE ID           @Y30LB33*/
                    3 CTTBLCC FIXED(8) /* CYLINDER WHERE     @Y30LB33*/
                             UNSIGNED, /* TABLE BEGAN ON     @Y30LB33*/
                                       /* TABLE VOLUME       @Y30LB33*/
                    3 CTTBLHH FIXED(8) /* TRACK WHERE        @Y30LB33*/
                             UNSIGNED, /* TABLE BEGAN ON     @Y30LB33*/
                                       /* TABLE VOLUME       @Y30LB33*/
                    3 CTTBLRR FIXED(8) /* RECORD WHERE       @Y30LB33*/
                         UNSIGNED;     /* TABLE BEGAN ON     @Y30LB33*/
                                       /* TABLE VOLUME       @Y30LB33*/
 /*                                                          @Y30LB33*/
 /*********************************************************  @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR MOUNT/DEMOUNT   @Y30LB37*/
 /*  FOR THE UMSSUNIT MACRO CALL.                            @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*********************************************************  @Y30LB37*/
                                                           /*@Y30LB37*/
         DCL 1 MDAGL BDY(WORD) BASED,                      /*@Y30LB37*/
               2 MDHEAD   CHAR(8),     /*MDAGL HEADING       @Y30LB37*/
               2 MDUCBPTR PTR(31),     /*PTR TO UCB ADDR     @Y30LB37*/
               2 MDDDNAME CHAR(8),     /*DDNAME              @Y30LB37*/
               2 MDPUAGL  PTR(31),     /*PTR TO PUAGL        @Y30LB37*/
               2 MDLABEL  CHAR(6),     /*VOL SERIAL NUMBER   @Y30LB37*/
               2 MDFLAGS,              /*OPTION FLAGS        @Y30LB37*/
                 3 MDNEWVOL  BIT(1),   /*NEW VOLUME          @Y30LB37*/
                 3 MDCLEAR   BIT(1),   /*CLEAR WITH MOUNT    @Y30LB37*/
                 3 MDPOST    BIT(1),   /*POST WITH DEMOUNT   @Y30LB37*/
                 3 MDWAIT    BIT(1),   /*WAIT ON DEMOUNT     @Y30LB37*/
                 3 MDENQ     BIT(1),   /*INTERNAL ENQ FLAG   @Y30LB37*/
                 3 MDDEQ     BIT(1),   /*DEQ WITH DEMOUNT    @YD00175*/
                 3 MDFORCE   BIT(1),   /*FORCE DEMOUNT       @ZA09521*/
                 3 MDVTOCTR  BIT(1),   /* USE SUPPLIED VTOC  @ZDR2057*/
              2 * CHAR(1),             /* RESERVED (UNUSED)  @ZDR2057*/
              2 MDVTOC CHAR(5) BDY(WORD), /* VTOC            @ZDR2057*/
                   3 MDCC FIXED(15),   /* CC (CYLANDER)      @ZDR2057*/
                   3 MDHH FIXED(15),   /* HH (HEAD)          @ZDR2057*/
                   3 MDR CHAR(1);      /* R (RECORD)         @ZDR2057*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR POST UCB        @Y30LB37*/
 /*  FOR THE UMSSUNIT MACRO CALL.                            @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*********************************************************  @Y30LB37*/
                                                           /*@Y30LB37*/
         DCL 1 PUAGL BDY(WORD) BASED,                      /*@Y30LB37*/
               2 PUHEAD   CHAR(8),     /*PUAGL HEADING       @Y30LB37*/
               2 PUUCBPTR PTR(31),     /*UCB POINTER         @Y30LB37*/
               2 PUTTRPTR PTR(31),     /*TTR POINTER         @Y30LB37*/
               2 PULABELP PTR(31);     /*VOLUME LABEL PTR    @Y30LB37*/
                                                           /*@Y30LB37*/
 /*********************************************************  @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR CHECK UCB       @Y30LB37*/
 /*  FOR THE UMSSUNIT MACRO CALL.                            @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*********************************************************  @Y30LB37*/
                                                           /*@Y30LB37*/
       DCL 1 CKAGL BDY(WORD) BASED,                        /*@Y30LB37*/
             2 CKHEAD   CHAR(8),       /*CKAGL HEADING       @Y30LB37*/
             2 CKUCBPTR PTR(31),       /*UCB POINTER         @Y30LB37*/
             2 CKDDNAME CHAR(8),       /*DDNAME              @Y30LB37*/
             2 CKDATYPE PTR(31),       /*RET ADDR OF TYPE    @Y30LB37*/
             2 CKLABELP PTR(31),       /*VOLUME LABEL PTR    @Y30LB37*/
             2 CKFLAGS,                /*OPTION  FLAGS       @Y30LB37*/
               3 CKTESTVT BIT(1),      /*TEST VIRTUAL        @Y30LB37*/
               3 CKRETTYP BIT(1),      /*RETURN TYPE         @Y30LB37*/
               3 CKDMTABL BIT(1),      /*TEST DEMOUNTABLE    @Z40LB35*/
               3 *        BIT(5);      /*RESERVED            @YD00175*/
                                                           /*@Y30LB37*/
 /*********************************************************  @YD00175*/
 /*                                                          @YD00175*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR EXCLUSIVE       @YD00175*/
 /*  CONTROL FOR THE UMSSUNIT MACRO CALL.                    @YD00175*/
 /*                                                          @YD00175*/
 /*********************************************************  @YD00175*/
                                                           /*@YD00175*/
         DCL 1 EXCLAGL BDY(WORD) BASED,                    /*@YD00175*/
               2 EXCLHEAD CHAR(8),     /*EXCLAGL HEADING     @YD00175*/
               2 EXCLUCBP PTR(31),     /*UCB POINTER         @YD00175*/
               2 EXCLDDP  PTR(31),     /*DDNAME POINTER      @YD00175*/
               2 EXCLVOL  CHAR(6),     /*VOLUME SERIAL       @YD00175*/
               2 EXCLFLAG,             /*OPTION FLAGS        @YD00175*/
                 3 EXCLMNT  BIT(1),    /*VOLUME MOUNTED FLAG @YD00175*/
                 3 *        BIT(7);    /*RESERVED            @YD00175*/
                                                           /*@YD00175*/
 /*********************************************************  @YD00175*/
 /*                                                          @Y30LB35*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR OPEN            @Y30LB35*/
 /*  FOR THE UEXCP MACRO CALL.                               @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*********************************************************  @Y30LB35*/
                                                           /*@Y30LB35*/
         DCL 1 EXOARG BDY(WORD) BASED,                     /*@Y30LB35*/
               2 EXOHEAD  CHAR(8),     /*RESERVED            @Y30LB35*/
               2 EXODDN   PTR(31),     /*POINTER TO DDNAME   @Y30LB35*/
               2 EXODSN   PTR(31),     /*POINTER TO DSNAME   @Y30LB35*/
               2 EXOVSN   PTR(31),     /*POINTER TO VOL SER  @Y30LB35*/
               2 EXOUCB   PTR(31),     /*POINTER TO UCB      @Y30LB35*/
               2 EXOEXT   PTR(31),     /*POINTER RET EXTENTS @Y30LB30*/
               2 EXOCTLBK PTR(31),     /*PTR RET IOCTLBK PTR @Y30LB30*/
               2 EXOPT,                /*OPEN OPITIONS       @Y30LB35*/
                 3 EXOTAB   BIT(1),    /*OPEN FOR MSC TABLES @Y30LB30*/
                 3 EXOLAB   BIT(1),    /*OPEN VOL LABEL      @Y30LB35*/
                 3 EXOPASS  BIT(1),    /*OPEN TEST PASSWD    @Y30LB35*/
                 3 EXONEW   BIT(1),    /*OPEN VOL TO INIT    @Y30LB35*/
                 3 EXOVTOC  BIT(1),    /*OPEN VOL TO READ    @Z40LB35*/
                                       /*VTOC DSCBS          @Z40LB35*/
                 3 EXOREP   BIT(1),    /*REPAIR OPEN         @ZA11014*/
                 3 *        BIT(2),    /*RESERVED            @ZA11014*/
               2 EXFLG,                /*OPEN FLAGS          @Y30LB35*/
                 3 EXOREAD  BIT(1),    /*INDICATES READ ONLY @Y30LB35*/
                 3 *        BIT(2),    /*RESERVED            @ZA11014*/
                 3 EXORVS   BIT(1),    /*VSAM DATA SET       @ZA11014*/
                 3 EXOSPK   BIT(1),    /*STAGING PACK        @ZA11014*/
                 3 EXORDS   BIT(1),    /*DATA SET            @ZA11014*/
                 3 EXORVT   BIT(1),    /*VTOC                @ZA11014*/
                 3 EXOVTH   BIT(1);    /*VTOC HEADER         @ZA11014*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR GET             @Y30LB35*/
 /*  FOR THE UEXCP MACRO CALL.                               @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*********************************************************  @Y30LB35*/
                                                           /*@Y30LB35*/
         DCL 1 EXGARG BDY(WORD) BASED,                     /*@Y30LB35*/
               2 EXGHEAD  CHAR(8),     /*RESERVED            @Y30LB35*/
               2 EXGCTLBK PTR(31),     /*POINTER TO IOCTLBK  @Y30LB35*/
               2 EXGCCHH1 PTR(31),     /*PTR TO SEEK CCHHR   @Y30LB35*/
               2 EXGCCHH2 PTR(31),     /*PTR TO SEARCH CCHHR @Y30LB35*/
               2 EXGRECNO FIXED(31),   /*NUM RECORDS TO READ @Y30LB35*/
               2 EXGDATAP PTR(31),     /*PTR AREA FOR RECS   @Y30LB35*/
               2 EXGKEYLN FIXED(8) UNSIGNED, /*LEN OF KEY    @Y30LB35*/
               2 *        FIXED(8),          /*RESERVED      @Y30LB35*/
               2 EXGDATAL FIXED(15) UNSIGNED;/*LEN OF DATA   @Y30LB35*/
 /*********************************************************  @ZA11014*/
 /*                                                          @ZA11014*/
 /* THIS STRUCTURE IS THE ARGUMENT LIST FOR REPAIRV          @ZA11014*/
 /* I/O CALLS TO THE UEXCP MACRO                             @ZA11014*/
 /*                                                          @ZA11014*/
 /*********************************************************  @ZA11014*/
                                                           /*@Y30LB35*/
         DCL 1 EXWRARG BDY(WORD) BASED,                   /*@ZA11014*/
               2 EXRWRES  CHAR(8),     /*RESERVED            @ZA11014*/
               2 EXRWCTBL PTR(31),     /*POINTER TO IOCTLBK  @ZA11014*/
               2 EXRWIOAR PTR(31),     /*PTR TO SEEK CCHHR   @ZA11014*/
               2 EXRWDARE PTR(31),     /*PTR TO SEARCH CCHHR @ZA11014*/
               2 EXLOCPTR PTR(31),     /*NUM RECORDS TO READ @ZA11014*/
               2 EXCCWCNT FIXED(15),   /*PTR AREA FOR RECS   @ZA11014*/
               2 EXRWCHR,                                  /*@ZA11014*/
                 3 EXCC     FIXED(16),                     /*@ZA11014*/
                 3 EXHH     FIXED(16),                     /*@ZA11014*/
                 3 EXRECNUM FIXED(8),                      /*@ZA11014*/
               2 *       FIXED(8),      /* RESERVED          @ZA11014*/
               2 EXRWKDLN PTR(31),                         /*@ZA11014*/
               2 EXSPACE,                                  /*@ZA11014*/
                 3  *    FIXED(8),                         /*@ZA11014*/
                 3  *    PTR(24),                          /*@ZA11014*/
                 3  *    FIXED(15),                        /*@ZA11014*/
                 3  *    FIXED(15),                        /*@ZA11014*/
                 3  *    FIXED(15),                        /*@ZA11014*/
               2 EXRWFUN  FIXED(8);                        /*@ZA11014*/
 /*********************************************************  @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR PUT             @Y30LB35*/
 /*  FOR THE UEXCP MACRO CALL.                               @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*********************************************************  @Y30LB35*/
                                                           /*@Y30LB35*/
         DCL 1 EXPARG BDY(WORD) BASED,                     /*@Y30LB35*/
               2 EXPHEAD  CHAR(8),     /*RESERVED            @Y30LB35*/
               2 EXPCTLBK PTR(31),     /*PTR IOCTLBK PTR     @Y30LB35*/
               2 EXPDATA  PTR(31),     /*PTR DATA-TO-WRITE   @Y30LB35*/
               2 EXPCCHHR PTR(31);     /*PTR TO SEEK CCHHR   @Y30LB35*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR DATA-TO-WRITE   @Y30LB35*/
 /*  FOR THE UEXCP MACRO CALL.                               @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*********************************************************  @Y30LB35*/
                                                           /*@Y30LB35*/
         DCL 1 EXPDATAB BDY(WORD) BASED(EXPDATA),          /*@Y30LB35*/
               2 EXPRECNO FIXED(31),   /*NUM OF RECORDS      @Y30LB35*/
               2 EXPARRAY (*),         /*DATA-TO-WRITE ARRAY @Y30LB35*/
                 3 EXPDATAP PTR(31),   /*PTR TO DATA         @Y30LB30*/
                 3 EXPKEYLN FIXED(8) UNSIGNED, /*LEN OF KEY  @Y30LB35*/
                 3 *        FIXED(8),          /*RESERVED    @Y30LB35*/
                 3 EXPDATAL FIXED(15) UNSIGNED;/*LEN DATA    @Y30LB35*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR VOLUME SERVICES @Y30LB35*/
 /*  FOR THE 'INITVOL', 'GETLABEL', AND 'PUTLABEL' REQUEST.  @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*********************************************************  @Y30LB35*/
                                                           /*@Y30LB35*/
         DCL 1 VS2AGL BDY(WORD) BASED,                     /*@Y30LB35*/
               2 VS2HEAD  CHAR(8),     /*RESERVED            @Y30LB35*/
               2 VSUCBPTR PTR(31),     /*PTR TO UCB ADDR     @Y30LB35*/
               2 VSVTOCSZ FIXED(31),   /*VTOC TRK SIZE       @Y30LB35*/
               2 VSOWNPTR PTR(31),     /*PTR TO OWNER NAME   @Y30LB30*/
               2 VSVOLPTR PTR(31),     /*PTR TO VOLUME SER   @Y30LB30*/
               2 VSIOBKPT PTR(31),     /*PTR TO IOXCTLBK PTR @Y30LB30*/
               2 VSLABOPT,             /*LABEL OPTIONS       @Y30LB35*/
                 3 VSOWNER  BIT(1),    /*RETRIEVE OR UPDATE  @Y30LB35*/
                                       /*OWNER FIELD IN LABEL@Y30LB35*/
                 3 VSVOLSER BIT(1),    /*RETRIEVE OR UPDATE  @Y30LB35*/
                                       /*VOL FIELD IN LABEL  @Y30LB35*/
                 3 VSNOVTOC BIT(1),    /* NO DEFAULT VTOC    @ZDR2057*/
                 3 *        BIT(5),    /*RESERVED            @ZDR2057*/
               2 VSVOLUME CHAR(6),     /*SERIAL NUM FOR OPEN @Y30LB35*/
               2 VS2MSG,               /*MESSAGE OPTION      @Y30LB35*/
                 3 VS2TOV   BIT(1),    /*TO VOLUME PLACED IN @Y30LB35*/
                                       /*MESSAGE             @Y30LB35*/
                 3 *        BIT(7),    /*RESERVED            @Y30LB35*/
               2 VS2RESOP,             /*RESERVE OPTION      @Y30LB30*/
                 3 VS2RES   BIT(1),    /*RESERVE TO BE       @Y30LB35*/
                                       /*PERFORMED           @Y30LB35*/
                 3 VS2REAL  BIT(1),    /*REAL VOLUME         @Y30LB35*/
                 3 *        BIT(6),    /*RESERVED            @Y30LB35*/
               2 VSDDNAME CHAR(8),     /*DD NAME             @YD00175*/
               2 * CHAR(3),            /* RESERVED (UNUSED)  @ZDR2057*/
               2 VSVTOCPT PTR(31);     /* PTR TO VTOC        @ZDR2057*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB30*/
 /*                                                          @Y30LB30*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR VOLUME SERVICES @Y30LB30*/
 /*  FOR THE 'SECCHECK', 'SCRVTOC ', 'GETVTOC ', 'PUTVTOC ', @Y30LB30*/
 /*  AND 'RECATLG  ' SERVICE REQUESTS.                       @Y30LB30*/
 /*                                                          @Y30LB30*/
 /*********************************************************  @Y30LB30*/
                                                           /*@Y30LB30*/
         DCL 1 VS1AGL BDY (WORD) BASED,                    /*@Y30LB30*/
               2 VSHEAD     CHAR(8),   /*RESERVED            @Y30LB30*/
               2 VSUCBP     PTR(31),   /*UCB ADDRESS PTR     @Y30LB30*/
               2 VSVOLP     PTR(31),   /*VOLUME SER PTR      @Y30LB30*/
               2 VSFILEP    PTR(31),   /*DD NAME PTR         @Y30LB30*/
               2 VSIOP      PTR(31),   /*VTOC IOCSTR PTR     @Y30LB30*/
               2 VSNUMATP   PTR(31),   /*NO. ALT TRACK PTR   @Y30LB30*/
               2 VSNXTATP   PTR(31),   /*NEXT ALT TRK PTR    @Y30LB30*/
               2 VSCATP     PTR(31),   /*VSAM CAT NAME PTR   @Y30LB30*/
               2 VSACBP     PTR(31),   /*VSAM CAT ACB PTR    @Y30LB30*/
               2 VSCATDDP   PTR(31),   /*VSAM CAT DDNAME PTR @Y30LB30*/
               2 VSPSWDP    PTR(31),   /*VSAM CAT PSWD PTR   @Y30LB30*/
               2 VSPFILEP   PTR(31),   /*PASSWORD FILE PTR   @Y30LB30*/
               2 VSSERP     PTR(31),   /*NEW SERIAL PTR      @Y30LB30*/
               2 VSDEVP     PTR(31),   /*DEVICE TYPE PTR     @Y30LB30*/
               2 VSOSERP    PTR(31),   /*OLD SERIAL PTR      @Y30LB30*/
               2 VSODEVP    PTR(31),   /*OLD DEVICE PTR      @Y30LB30*/
               2 VSSECOPT,             /*SECURITY CHECK OPT  @Y30LB30*/
                 3 VSNOVSAM BIT(1),    /*NO VSAM DATA SETS   @Y30LB30*/
                 3 VSMASTER BIT(1), /*VSAM MASTER/RACF ALTER @G24LB31*/
                 3 VSNONONV BIT(1),    /*NO NON-VSAM D.S.    @Y30LB30*/
                 3 VSREAD   BIT(1),  /*NON-VSAM READ ACCESS  @G24LB31*/
                 3 VSWRITE  BIT(1),  /*NON-VSAM WRITE ACCESS @G24LB31*/
                 3 VSUCTEST BIT(1),    /*RET USER CAT INFO   @Y30LB30*/
                 3 VSOPCAT  BIT(1),    /*OPEN USERCAT VS/2   @Y30LB30*/
                 3 VSUCMAST BIT(1),  /*VSAM UCAT MASTER/RACF @G24LB31*/
               2 VSVTOPT,              /*VTOC FIELD OPTIONS  @Y30LB30*/
                 3 VSTIME   BIT(1),    /*VSAM TIME STAMP     @Y30LB30*/
                 3 VSALTTRK BIT(1),    /*ALTERNATE TRACKS    @Y30LB30*/
                 3 VSVSFLAG BIT(1),    /*VSAM OWNERSHIP FLAG @Y30LB30*/
                 3 *        BIT(5),    /*RESERVED            @Y30LB30*/
               2 VSCATOPT,             /*RECATALOG OPTIONS   @Y30LB30*/
                 3 VSDEVICE BIT(1),    /*DEVICE TYPE         @Y30LB30*/
                 3 VSSERIAL BIT(1),    /*VOLUME SERIAL       @Y30LB30*/
                 3 VSLIST   BIT(1),    /*LIST NAMES          @Y30LB30*/
                 3 *        BIT(5),    /*RESERVED            @Y30LB30*/
               2 VSRETURN,             /*INFORMATION RETURN  @Y30LB30*/
                 3 VSVSAM   BIT(1),    /*VOL OWNED BY VSAM   @Y30LB30*/
                 3 VSUCAT   BIT(1),    /*USER CAT ON VOLUME  @Y30LB30*/
                 3 *        BIT(6),    /*RESERVED            @Y30LB30*/
               2 VSMSG,                /*MESSAGE OPTIONS     @Y30LB30*/
                 3 VSFROMV  BIT(1),    /*FROM VOLUME         @Y30LB30*/
                 3 VSTOV    BIT(1),    /*TO VOLUME           @Y30LB30*/
                 3 *        BIT(6),    /*RESERVED            @Y30LB30*/
               2 VSRESOPT,             /*RESERVE OPTIONS     @Y30LB30*/
                 3 VSRES    BIT(1),    /*RESERVE VOLUME      @Y30LB30*/
                 3 VSREAL   BIT(1),    /*REAL VOLUME         @Y30LB30*/
                 3 *        BIT(6);    /*RESERVED            @Y30LB30*/
                                                           /*@Y30LB30*/
 /*********************************************************  @Y30LB34*/
 /*                                                          @Y30LB34*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR URECAT MACRO    @Y30LB34*/
 /*                                                          @Y30LB34*/
 /*********************************************************  @Y30LB34*/
                                                           /*@Y30LB34*/
         DCL 1 RCTAGL BDY(WORD) BASED,                   /*  @Y30LB34*/
               2 RCTHEAD CHAR(8),     /*RESERVED             @Y30LB30*/
               2 RCTOPT CHAR(2),      /*RECAT OPTIONS        @Y30LB30*/
                 3 RCTDEV BIT(1),     /*DEVICE TYPE          @Y30LB30*/
                 3 RCTVOL BIT(1),     /*VOLUME SERIAL        @Y30LB30*/
                 3 *     BIT(6),      /*RESERVED             @Y30LB34*/
               2 * CHAR(2),           /*RESERVED             @Y30LB34*/
               2 RCTODEV FIXED(31),   /*OLD DEV TYPE         @Y30LB30*/
               2 RCTNDEV FIXED(31),   /*NEW DEV TYPE         @Y30LB30*/
               2 RCTOVOL CHAR(6),     /*OLD VOL SER          @Y30LB30*/
               2 RCTNVOL CHAR(6),     /*NEW VOL SER          @Y30LB30*/
               2 RCTDSET CHAR(44);    /*DATA SET NAME        @Y30LB30*/
                                                           /*@Y30LB34*/
                                                           /*@Y30LB34*/
 /*********************************************************  @Y30LB30*/
 /*                                                          @Y30LB30*/
 /*  THIS STRUCTURE IS THE ARGUMENT LIST FOR USTAE MACRO     @Y30LB30*/
 /*                                                          @Y30LB30*/
 /*********************************************************  @Y30LB30*/
                                                           /*@Y30LB30*/
         DCL 1 STAEPARM BDY(WORD) BASED,                   /*@Y30LB33*/
               2 STAHEAD CHAR(8),     /*RESERVED             @Y30LB30*/
               2 STAVUCB  PTR(31),    /*VIRTUAL UCB ADDR     @Y30LB30*/
               2 STAVVOL  CHAR(6),    /*VIRTUAL VOLSER       @Y30LB30*/
               2 *        CHAR(2),    /*RESERVED             @Y30LB30*/
               2 STARUCB  PTR(31),    /*REAL UCB ADDR        @Y30LB30*/
               2 STARVOL  CHAR(6),    /*REAL VOLSER          @Y30LB30*/
               2 *        CHAR(2),    /*RESERVED             @Y30LB30*/
               2 STARTTR  CHAR(4),    /*TTR TO THE VTOC      @Y30LB30*/
               2 STARTSAV PTR(31),    /*PTR TO RETRY SAVAREA @Y30LB30*/
               2 STAEXSAV PTR(31),    /*PTR STAEEXIT SAVAREA @Y30LB35*/
               2 STARTADD PTR(31),    /*PTR TO RETRY AREA    @Y30LB30*/
               2 STATCB   PTR(31),    /*PTR TO ENQUEUED TCB  @Y30LB35*/
               2 STARCVY,             /*TRACKING FLAGS       @Y30LB30*/
                 3 STAVMNT  BIT(1),   /*VIRT VOL MOUNTED     @Y30LB30*/
                 3 STAVDMNT BIT(1),   /*VIRT VOL DEMOUNTED   @Y30LB30*/
                 3 STAVENQ  BIT(1),   /*VOL ENQUEUED         @Y30LB30*/
                 3 STAVPOST BIT(1),   /*VIRT VOL POSTED      @Y30LB30*/
                 3 STACLEAR BIT(1),   /*REAL UCB CLEARED     @Y30LB30*/
                 3 *        BIT(3),   /*RESERVED             @Y30LB30*/
               2 STARETRY,            /*RETRY FLAGS          @Y30LB30*/
                 3 STAIO05  BIT(1),   /*IO5 RETRY IN CONTROL @Y30LB30*/
                 3 STAOFF   BIT(1),   /*STAE CANCELLED (VS1) @Y30LB35*/
                 3 STAVTOC BIT(1),    /*OPEN VTOC IN-PROCESS @Z40LB35*/
                 3 *        BIT(5),   /*RESERVED             @ZA05112*/
               2 STAVTTR CHAR(4);     /*VIRTUAL VTOC TTR     @ZA05112*/
                                                           /*@Y30LB37*/
 /*********************************************************  @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*  THIS STRUCTURE IS THE MAPPING OF THE VOLUME LABEL REC   @Y30LB37*/
 /*                                                          @Y30LB37*/
 /*********************************************************  @Y30LB37*/
                                                           /*@Y30LB37*/
         DCL 1 VOLLABEL BASED,
               2 VOLKEY   CHAR(4),    /*VOL LABEL KEY        @Y30LB37*/
               2 VOLLABI  CHAR(3),    /*LABEL ID 'VOL'       @Y30LB37*/
               2 VOLNO    CHAR(1),    /*VOL LABEL SEQ NUMBER @Y30LB37*/
               2 VOLSERNO CHAR(6),    /*VOLUME SERIAL        @Y30LB37*/
               2 VOLSECTY CHAR(1),    /*RESERVED             @Y30LB37*/
               2 VOLVTOC  CHAR(5),    /*CCHHR OF THE VTOC    @Y30LB37*/
               2 VOLRESV1 CHAR(25),   /*RESERVED             @Y30LB37*/
               2 VOLOWNER CHAR(10),   /*USER NAME AREA       @Y30LB37*/
               2 VOLRESV3 CHAR(29);   /*RESERVED             @Y30LB37*/
                                                           /*@Y30LB37*/
 /*********************************************************  @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*  THIS STRUCTURE IS THE MAPPING OF THE SVC 82 PARMLIST    @Y30LB35*/
 /*                                                          @Y30LB35*/
 /*********************************************************  @Y30LB35*/
                                                           /*@Y30LB35*/
         DCL 1 SV82LIST BDY(WORD) BASED, /*SVC 82 ARG LIST   @Y30LB35*/
               2 SV82CODE BIT(8),     /*OPERATION CODE       @Y30LB35*/
               2 SV82UCBP PTR(24),    /*UCB ADDRESS          @Y30LB35*/
               2 * PTR(31),           /*THIRD ARGUMENT       @Y30LB35*/
                 3 SV82DCBP PTR(31),  /*DCB PTR FOR - OPEN   @Y30LB35*/
                   4 SV82VOLP PTR(31),/*VOL PTR FOR - POST   @Y30LB35*/
               2 SV82TTRP PTR(31),    /*TTR TO VTOC ADDRESS  @Y30LB35*/
               2 * PTR(31),           /*FIFTH ARGUMENT       @Y30LB35*/
                 3 SV82WRKP PTR(31),  /*ADD RET AREA - CLEAR @Y30LB35*/
                     4 SV82DEBP PTR(31); /*ADDR DEB - CLOSE  @Y30LB35*/
                                                           /*@Y30LB35*/
 /*********************************************************  @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* SORT ARGUMENT LIST                                       @Z40LB37*/
 /*                                                          @Z40LB37*/
 /*********************************************************  @Z40LB37*/

         DCL 1 SRTAGL BDY(WORD) BASED,   /*                  @Z40LB37*/
               2 SRTHEAD CHAR(8),        /*SRTAGL HEADING    @Z40LB37*/
               2 SRTADDR PTR(31),        /*PTR TO FIRST      @Z40LB37*/
                                         /*ELEMENT           @Z40LB37*/
               2 SRTNUM FIXED(31),       /*NUMBER OF         @Z40LB37*/
                                         /*ELEMENTS          @Z40LB37*/
               2 SRTLEN FIXED(31),       /*LENGTH OF         @Z40LB37*/
                                         /*ELEMENT           @Z40LB37*/
               2 SRTPOSIT FIXED(31),     /*SORT FIELD        @Z40LB37*/
                                         /*STARTING POSITION @Z40LB37*/
               2 SRTFLDLN FIXED(31),     /*SORT FIELD LENGTH @Z40LB37*/
               2 SRTWORKP PTR(31);       /*WORK AREA ADDRESS @Z40LB37*/

 /*********************************************************  @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* ULOCATE DATA SET RETURNED INFORMATION AREA               @Z40LB37*/
 /*                                                          @Z40LB37*/
 /*********************************************************  @Z40LB37*/

         DCL 1 LCTINFO BDY(WORD) BASED,  /*                  @Z40LB37*/
               2 LCTHEAD  CHAR(8),       /*LCTINFO HEADING   @Z40LB37*/
               2 LCTMULVC FIXED(31),     /*NUMBER OF VOLUMES @Z40LB37*/
               2 LCTACBP  PTR(31),       /*PTR TO THE ACB    @Z40LB37*/
               2 LCTCREAT CHAR(4),      /*VSAM CREATION DATE @Z40LB37*/
               2 LCTEXPIR CHAR(4),       /*VSAM EXPIRATION   @Z40LB37*/
                                         /*DATE              @Z40LB37*/
               2 LCTOWNER CHAR(8),      /*OWNER NAME         @Z40LB37*/
               2 LCTFLAGS,              /*RETURN FLAGS       @Z40LB37*/
                 3 LCTVSCAT BIT(1),     /*VSAM CATALOG ENTRY @Z40LB37*/
                 3 *        BIT(7);     /*RESERVED           @Z40LB37*/

 /*********************************************************  @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* UUNCATLG ARGUMENT LIST                                   @Z40LB63*/
 /*                                                          @Z40LB37*/
 /*********************************************************  @Z40LB37*/

         DCL 1 UCTAGL BDY(WORD) BASED,   /*                  @Z40LB63*/
               2 UCTHEAD  CHAR(8),       /*UCTAGL HEADING    @Z40LB63*/
               2 UCTDSN   CHAR(44),      /*DATA SET NAME     @Z40LB63*/
               2 UCTACBP  PTR(31),       /*PTR TO CAT ACB    @Z40LB63*/
               2 UCTVOLP  PTR(31),       /*PTR TO VOLUME     @Z40LB30*/
                                         /*LIST              @Z40LB30*/
               2 UCTDD    CHAR(8),       /*DDNAME            @Z40LB63*/
               2 UCTFLAGS,               /*OPTION FLAGS      @Z40LB63*/
                 3 UCTVSCAT BIT(1),      /*VSAM CATALOG      @Z40LB63*/
                 3 *        BIT(7);      /*RESERVED          @Z40LB63*/

 /*********************************************************  @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* ARGUMENT LIST FOR SELECTING A DDNAME                     @Z40LB37*/
 /*                                                          @Z40LB37*/
 /*********************************************************  @Z40LB37*/

         DCL 1 SELAGL BDY(WORD) BASED,  /*                   @Z40LB37*/
               2 SELHEAD CHAR(8),       /*SELAGL HEADING     @Z40LB37*/
               2 SELUCBP PTR(31),       /*UCB POINTER        @Z40LB37*/
               2 SELDDNP PTR(31),       /*DDNAME POINTER     @Z40LB37*/
               2 SELVOL  CHAR(6),       /*VOLUME SERIAL      @Z40LB37*/
               2 SELFLAGS,              /*OPTION FLAGS       @Z40LB37*/
                 3 *     BIT(8);        /*RESERVED           @Z40LB37*/

 /*********************************************************  @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* ARGUMENT LIST FOR CONVERT DATE PROCEDURE                 @Z40LB35*/
 /*                                                          @Z40LB37*/
 /*********************************************************  @Z40LB37*/

         DCL 1 DATESAGL BDY(WORD) BASED,
               2 DATHEAD  CHAR(8),     /*IDENTIFIER HEADER   @Z40LB35*/
               2 DATDATE  FIXED(31),   /*DATE TO CONVERT     @Z40LB35*/
               2 DATDAYS  FIXED(31),   /*DAYS TO ADJUST      @Z40LB35*/
               2 DATRETRN PTR(31),     /*RETURN PTR OF DATE  @Z40LB35*/
               2 DATESOPT BIT(8),      /*OPTIONS FLAGS       @Z40LB35*/
                 3 DATADD   BIT(1),    /*ADD DAYS TO DATE    @Z40LB35*/
                 3 DATSUB   BIT(1),    /*SUBTRACT DAYS       @Z40LB35*/
                 3 DATDTEOP BIT(1),    /*ADJUST DAYS         @Z40LB35*/
                 3 DATDAYOP BIT(1),    /*CONVERT DATE ONLY   @Z40LB35*/
                 3 *        BIT(4);    /*RESERVED            @Z40LB35*/

 /*********************************************************  @Z40LB35*/
 /*                                                          @Z40LB37*/
 /* SELECTDS DATA SET ARGUMENT LIST                          @Z40LB35*/
 /*                                                          @Z40LB35*/
 /*********************************************************  @Z40LB37*/

         DCL 1 VS3AGL BDY(WORD) BASED,
               2  VS3HEAD  CHAR(8),    /*RESERVED            @Z40LB35*/
               2  VS3LISTP PTR(31),    /*PTR LIST ADDR       @Z40LB35*/
               2  VS3EXDSP PTR(31),    /*PTR EXCLUDE DS      @Z40LB35*/
               2  VS3LEVP  PTR(31),    /*PTR LEVEL QUAL      @Z40LB35*/
               2  VS3LEVLN FIXED(15),  /*LENGTH OF QUAL      @Z40LB35*/
               2  VS3AST   FIXED(15),  /*OFFSET ASTERISK     @Z40LB35*/
               2  VS3EXPIR PTR(31),    /*PTR EXPIRATION DATE @Z40LB35*/
               2  VS3CREAT PTR(31),    /*PTR CREATION DATE   @Z40LB35*/
               2  VS3UCBP  PTR(31),    /*PTR UCB             @Z40LB35*/
               2  VS3DEV   CHAR(4),    /*DEVICE TYPE         @Z40LB35*/
               2  VS3POOL  CHAR(4),    /*STORAGE POOL ID     @Z40LB35*/
               2  VS3VOL   CHAR(6),    /*SERIAL NUMBER       @Z40LB35*/
               2  VS3DD    CHAR(8),    /*DDNAME FOR OPEN     @Z40LB35*/
               2  VS3FLAGS,            /*FLAGS               @Z40LB35*/
                  3 VS3STAT  BIT(1),   /*RETURN VSDSTAT      @Z40LB35*/
                  3 VS3USAGE BIT(1),   /*RETURN VSDUSAGE     @Z40LB35*/
                  3 VS3SCR   BIT(1),   /*RETURN VSDSCR       @Z40LB35*/
                  3 VS3UNCAT BIT(1),   /*UNCAT SELECTION     @Z40LB35*/
                  3 VS3SYSNM BIT(1),   /*SYSTEM NAME         @Z40LB35*/
                                       /*SELECTION           @Z40LB35*/
                  3 *        BIT(3);   /*RESERVED            @Z40LB35*/

 /*********************************************************  @YD00175*/
 /*                                                          @YD00175*/
 /*   SELECTED DATA SET ARRAY                                @Z40LB35*/
 /*                                                          @Z40LB35*/
 /*********************************************************  @Z40LB35*/

         DCL ELEMENT FIXED(31);        /*ELEMENT COUNTER     @Z40LB35*/

         DCL 1 VSDVTOC BASED(VSDSPACE),/*LSPACE INFO BLOCK   @Z40LB35*/
               2 *        CHAR(6),     /*RESERVED            @Z40LB35*/
               2 VSDFRCYL CHAR(4),     /*TOTAL FREE CYL      @Z40LB35*/
               2 *        CHAR(1),     /*RESERVED            @Z40LB35*/
               2 VSDFRTRK CHAR(4),     /*TOTAL FREE TRACKS   @Z40LB35*/
               2 *        CHAR(1),     /*RESERVED            @Z40LB35*/
               2 VSDFREXT CHAR(4),     /*TOTAL FREE EXTENTS  @Z40LB35*/
               2 *        CHAR(1),     /*RESERVED            @Z40LB35*/
               2 VSDFRCCL CHAR(4);     /*LARGEST CONT CYL    @Z40LB35*/

         DCL 1 VSDSTAT BASED(ADDR(VSDVARY(ELEMENT))) BDY(WORD),
               2 VSDCREAT FIXED(31),   /*CREATION DATE       @Z40LB35*/
               2 VSDEXPIR FIXED(31),   /*EXPIRATION DATE     @Z40LB35*/
               2 VSDOWNER CHAR(8),     /*OWNER OF D. S.      @Z40LB35*/
               2 VSDSFLG1 BIT(8),      /*FLAG BYTE           @Z40LB35*/
                 3 VSDVTOCC BIT(1),    /*CREATION DATE VTOC  @Z40LB35*/
                 3 VSDVTOCE BIT(1),    /*EXPIRATION DATE     @Z40LB35*/
                                       /*VTOC                @Z40LB35*/
                 3 VSDVSAMC BIT(1),    /*CREATION DATE VSAM  @Z40LB35*/
                 3 VSDVSAME BIT(1),    /*EXPIRATION DATE     @Z40LB35*/
                                       /*VSAM                @Z40LB35*/
                 3 VSDCATLG BIT(1),    /*DSN IS CATALOGED    @Z40LB35*/
                 3 VSDCVSAM BIT(1),    /*CATLG IN VSAM       @Z40LB35*/
                 3 *        BIT(2),    /*RESERVED            @Z40LB35*/
               2 VSDFLG2 BIT(8),       /*FLAG BYTE           @Z40LB35*/
                 3 VSDPWR   BIT(1),    /*READ PROTECTED      @Z40LB35*/
                 3 VSDPWW   BIT(1),    /*WRITE PROTECTED     @Z40LB35*/
                 3 VSDPROT  BIT(1),    /*DSN IS PROTECTED    @Z40LB35*/
                 3 VSDERROR BIT(1),    /*CATALOG ERROR       @Z40LB35*/
                 3 VSDRACF  BIT(1),    /*RACF PROTECTED      @G24LB31*/
                 3 *        BIT(3),    /*RESERVED            @G24LB31*/
         /*THE FOLLOWING PORTION IS THE CALLERS WORK AREA    @Z40LB35*/
               2 VSDCRE   CHAR(2),     /*CREATION DATE       @Z40LB35*/
               2 VSDEXP   CHAR(2),     /*EXPIRATION DATE     @Z40LB35*/
               2 VSDCAT   CHAR(3),     /*CATALOG INFO        @Z40LB35*/
               2 VSDPRTC  CHAR(4),     /*PROTECTION INFO     @G24LB31*/
               2 *        CHAR(3);     /*UNUSED, BDY ALIGN   @G24LB31*/

         DCL 1 VSDSCR BASED(ADDR(VSDVARY(ELEMENT))) BDY(WORD),
               2 VSDACBPT PTR(31),     /*ACB PTR TO VSAM CAT @Z40LB35*/
               2 VSDSCRFL BIT(8),      /*FLAG BYTE           @Z40LB35*/
                 3 VSDCATLC BIT(1),    /*DATA SET IN CATLG   @Z40LB35*/
                 3 VSDVSAM  BIT(1),    /*DSN IN VSAM CATLG   @Z40LB35*/
                 3 *        BIT(6),    /*RESERVED            @Z40LB35*/
               2 *         CHAR(3);    /*RESERVED            @Z40LB35*/


         DCL 1 VSDUSAGE BASED(ADDR(VSDVARY(ELEMENT))) BDY(WORD),
               2 VSDTRKS  FIXED(15),   /*TRACKS ALLOCATED    @Z40LB35*/
               2 VSDFTRK  FIXED(15),   /*TRACKS FREE         @Z40LB35*/
               2 VSDSECAL FIXED(31),   /*SECONDARY ALLOC     @Z40LB35*/
               2 VSDEXTS  FIXED(8),    /*NUMBER EXTENTS      @Z40LB35*/
               2 VSDDORG  BIT(8),      /*FLAG BYTE           @Z40LB35*/
                 3 VSDOPO   BIT(1),    /*PARTITIONED ORG     @Z40LB35*/
                 3 VSDOPS   BIT(1),    /*PHYSICAL SEQUENTIAL @Z40LB35*/
                 3 VSDOUN   BIT(1),    /*UNKNOWN ORG         @Z40LB35*/
                 3 VSDODA   BIT(1),    /*DIRECT ACCESS ORG   @Z40LB35*/
                 3 VSDOIS   BIT(1),    /*INDEX SEQ ORG       @Z40LB35*/
                 3 VSDOU    BIT(1),    /*UNMOVEABLE          @Z40LB35*/
                 3 *        BIT(2),    /*RESERVED            @Z40LB35*/
               2 VSDALLOC BIT(8),      /*FLAG BYTE           @Z40LB35*/
                 3 VSDACYL  BIT(1),    /*CYLINDER ALLOC      @Z40LB35*/
                 3 VSDATRK  BIT(1),    /*TRACK ALLOC         @Z40LB35*/
                 3 VSDABLK  BIT(1),    /*BLOCK ALLOC         @Z40LB35*/
                 3 VSDABSTR BIT(1),    /*ABSOLUTE TRACKS     @Z40LB35*/
                 3 *        BIT(4),    /*RESERVED            @Z40LB35*/
               2 VSDUSEF BIT(8),       /*FLAG BYTE           @Z40LB35*/
                 3 VSDCALFR BIT(1),    /*UNABLE CAL. SPACE   @Z40LB35*/
                 3 *        BIT(7),    /*RESERVED            @Z40LB35*/
         /*THE FOLLOWING PORTION IS THE CALLERS WORK AREA    @Z40LB35*/
               2 VSDSCAL  CHAR(4),     /*SECONDARY ALLOC     @Z40LB35*/
               2 VSDDSORG CHAR(3),     /*DSORG               @Z40LB35*/
                 3 *      CHAR(2),     /*RESERVED            @Z40LB35*/
                 3 VSDDSOR3 CHAR(1),   /*DSORG INFO          @Z40LB35*/
               2 VSDALLC  CHAR(5),     /*TOTAL TRKS ALLOC    @Z40LB35*/
               2 VSDFREE  CHAR(4);     /*FREE TRACKS         @Z40LB35*/

         DCL 1 VSDBLOCK BDY(WORD) BASED,
               2 VSDELEM  FIXED(31),   /*NUMBER DSN'S        @Z40LB35*/
               2 VSDVTOCS FIXED(31),   /*NUMBER TRKS IN VTOC @Z40LB35*/
               2 VSDFMT0  FIXED(31),   /*NUMBER FMT0 IN VTOC @Z40LB35*/
               2 VSDSPACE PTR(31),     /*PTR TO LSPACE INFO  @Z40LB35*/
               2 VSDARRAY(*) BDY(WORD),
                 3 VSDVOLCT FIXED(31), /*VOLUME COUNT        @Z40LB35*/
                 3 VSDDSN  CHAR(44),   /*DSN                 @Z40LB35*/
                 3 VSDVARY CHAR(MAX(LENGTH(VSDSTAT),
                       LENGTH(VSDSCR),LENGTH(VSDUSAGE)));  /*@Z40LB35*/

 /*********************************************************  @YD00175*/
 /*                                                          @YD00175*/
 /*   KEYWORD ARGUMENT DECLARATIONS FOR ADAPTORS AND         #Y30LB30*/
 /*   VOLUME SERVICES                                        #Y30LB30*/
 /*                                                          #Y30LB30*/
 /*********************************************************  #Y30LB30*/
                                                           /*#Y30LB30*/
         DCL SECCHECK CHAR(8) INIT('SECCHECK');            /*#Y30LB30*/
                                       /*ARGUMENT FOR SECURITY CHECK */
         DCL SCRVTOC  CHAR(8) INIT('SCRVTOC ');            /*#Y30LB30*/
                                       /*ARGUMENT FOR SCRATCH        */
         DCL GETVTOC  CHAR(8) INIT('GETVTOC ');            /*@Y30LB30*/
                                       /*ARGURMENT FOR GET VTOC      */
         DCL PUTVTOC  CHAR(8) INIT('PUTVTOC ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR PUT VTOC       */
         DCL RECATLG  CHAR(8) INIT('RECATLG ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR RECATALOG      */
         DCL INITVOL  CHAR(8) INIT('INITVOL ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR INIT VOLUME    */
         DCL CHECK    CHAR(8) INIT('CHECK   ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR CHECK UCB      */
         DCL POSTUCB  CHAR(8) INIT('POSTUCB ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR POST  UCB      */
         DCL GET      CHAR(8) INIT('GET     ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR GET EXCP RECORD*/
         DCL PUT      CHAR(8) INIT('PUT     ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR PUT EXCP RECORD*/
         DCL CLOSE    CHAR(8) INIT('CLOSE   ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR CLOSE EXCP DCB */
         DCL OPEN     CHAR(8) INIT('OPEN    ');            /*@Y30LB30*/
                                       /*ARGUMENT FOR OPEN EXCP DCB  */
         DCL RVOPENR  CHAR(8) INIT('OPENR   ');            /*@ZA11014*/
         DCL RVRDCNT  CHAR(8) INIT('READCNT ');            /*@ZA11014*/
         DCL RVREADKD CHAR(8) INIT('READKD  ');            /*@ZA11014*/
         DCL RVSPACCR CHAR(8) INIT('SPACCR  ');            /*@ZA11014*/
         DCL RVFWRITE CHAR(8) INIT('FWRITE  ');            /*@ZA11014*/
         DCL RVWRITER CHAR(8) INIT('WRITEREC');            /*@ZA11014*/
         DCL PUTLABEL CHAR(8) INIT('PUTLABEL');            /*@Y30LB30*/
                                       /*PUTLABEL VS02 REQUEST       */
         DCL GETLABEL CHAR(8) INIT('GETLABEL');            /*@Y30LB30*/
                                       /*GETLABEL VS02 REQUEST       */
         DCL CANCEL   CHAR(8) INIT('CANCEL  ');            /*@Y30LB37*/
                                       /*CANCEL REQUEST FOR USTAE    */
         DCL SET      CHAR(8) INIT('SET     ');            /*@Y30LB37*/
                                       /*SET REQUEST FOR USTAE       */
         DCL SELECTX  CHAR(8) INIT('SELECTX ');            /*@YD00175*/
                                       /*SELECT REQUEST FOR UMSSUNIT */
         DCL CHANGEX  CHAR(8) INIT('CHANGEX ');            /*@YD00175*/
                                       /*CHANGE REQUEST FOR UMSSUNIT */
         DCL SELECTDD CHAR(8) INIT('SELECTDD');            /*@Z40LB37*/
                                       /*SELECTDD REQUEST    @Z40LB37*/
                                       /*FOR UMSSUNIT        @Z40LB37*/
         DCL SELECTDS CHAR(8) INIT('SELECTDS');            /*@Z40LB37*/
                                       /*SELECTDS REQUEST    @Z40LB37*/
                                       /*FOR IDCVS03         @Z40LB37*/
 /*                                                          @Y40LB63*/
 /*********************************************************  @Y40LB63*/
 /*                                                          @Y40LB63*/
 /*   KEYWORD ARGUMENT DECLARATIONS FOR USSC MACRO FOR       @Y40LB63*/
 /*   MSS RECOVERY                                           @Y40LB63*/
 /*                                                          @Y40LB63*/
 /*********************************************************  @Y40LB63*/
         DCL TBLREST CHAR(8) INIT('TBLREST ');             /*@Y40LB63*/
                                       /*COPY TABLES FOR     @Y40LB63*/
                                       /*INTERNAL TABLE      @Y40LB63*/
                                       /*RESTORE             @Y40LB63*/
         DCL NULLIFYC CHAR(8) INIT ('NULLIFYC');           /*@Y40LB63*/
                                       /*NULLIFYC ORDER WHICH        */
                                       /*ELEMINATES ALL TRACE        */
                                       /*OF ACTIVE OR INACTIVE       */
                                       /*VOLUME OR A SCRATCH CART    */
         DCL RDMSC CHAR(8) INIT ('RDMSC   ');              /*@Y40LB63*/
                                       /*QUERY ORDER TO READ MSC     */
                                       /*STORAGE             @Y40LB63*/
         DCL RDMSCTBL CHAR(8) INIT ('RDMSCTBL');           /*@Y40LB63*/
                                       /*QUERY ORDER TO READ MSC     */
                                       /*TABLES              @Y40LB63*/
         DCL RDCARTLB CHAR(8) INIT ('RDCARTLB');           /*@Y40LB63*/
                                       /*QUERY ORDER TO READ A       */
                                       /*CARTRIDGE LABEL     @Y40LB63*/
         DCL AUDITCEL CHAR(8) INIT('AUDITCEL');            /*@Y40LB63*/
                                       /*QUERY ORDER TO DO A CELL    */
                                       /*AUDIT OF THE MSF    @Y40LB63*/
         DCL RDSTGAD CHAR(8) INIT ('RDSTGAD ');            /*@Y40LB63*/
                                       /*QUERY ORDER TO READ STAG-   */
                                       /*ING ADAPTER STORAGE @Y40LB63*/
         DCL MODIFYC CHAR(8) INIT ('MODIFYC ');            /*@G24LB40*/
                                       /*MODIFY CARTRIDGE    @G24LB40*/
                                       /*ORDER               @G24LB40*/
 %                                                         /*#Y30LB30*/
 /*********************************************************  @Y30LB30*/
 /*                                                          @Y30LB30*/
 /*                  SYMBOLIC DEFINITIONS                    @Y30LB30*/
 /*                                                          @Y30LB30*/
 /*********************************************************  @Y30LB30*/
                                                           /*@Y30LB30*/
         DCL (RCNRECAT,                /*DATA SET NOT RECAT  @Y30LB30*/
              RCVVIERR,                /*VVIC ERROR          @Y30LB35*/
              RCDSERR,                 /*ERR FROM IDCVS03    @Z40LB35*/
              RCDSCLS,                 /*ERR IDCVS03 CLOSE   @Z40LB35*/
              RCNLOCAT,                /*NOT LOCATED IDCSA07 @Z40LB37*/
              RCNCLOSE) FIXED;         /*CLOSE ERROR         @Y30LB35*/
                                                           /*@Y30LB30*/
 % RCNLOCAT = 8;                       /*DATA SET NOT LOCAT  @Y40LB37*/
 % RCNRECAT = 8;                       /*DATA SET NOT RECAT  @Y30LB30*/
 % RCNCLOSE = 8;                       /*DATA SET NOT CLOSED @Y30LB30*/
 % RCVVIERR = 12;                      /*ERR CODE FROM VVIC  @Y30LB30*/
 % RCDSERR  = 8;                       /*ERR FROM IDCVS03    @Z40LB35*/
 % RCDSCLS  = 12;                      /*ERR IDCVS03 CLOSE   @Z40LB35*/
 % NULLAREA = '''''B';                 /*USED TO CLEAR PARM  @Y30LB30*/
./ ADD NAME=IDCDF11
 /*********************************************************  @Z40LB61*/
 /*                                                          @Z40LB61*/
 /* MSS HARDWARE TABLE MAPPINGS FOR AMS (VS2):     3/31/76   @ZD00051*/
 /*     (1) STAGING ADAPTER TABLES                           @Z40LB61*/
 /*     (2) MASS STORAGE CONTROL TABLES                      @Z40LB61*/
 /*                                                          @Z40LB61*/
 /* CHANGE ACTIVITY -                                        @Z40LB61*/
 /*     ZD00051                                              @ZD00051*/
 /*                                                          @Z40LB61*/
 /*********************************************************  @Z40LB61*/

     /* STAGING ADAPTER VIRTUAL ADDRESS DIRECTORY MAPPING    @Z40LB61*/
     DCL VADPTR1   PTR(31);            /*PTR TO 1ST VAD WORD @Z40LB61
                                         FOR 1 SA INTERFACE  @Z40LB61*/
     DCL VADPTR2   PTR(31);            /*PTR TO 2ND VAD WORD @Z40LB61
                                         FOR 1 SA INTERFACE  @Z40LB61*/
     DCL 1 VADWORD1 (64) BDY(WORD) BASED(VADPTR1),
           3 VADVFM    BIT(8),         /*VIRTUAL FILE MASK   @Z40LB61*/
           3 VADVVA    FIXED(8),       /*VIRTUAL VOL ADDRESS @Z40LB61*/
           3 VADRUA    FIXED(8),       /*REAL UNIT ADDRESS   @Z40LB61*/
             5 VADEDI    BIT(1),       /*EXPECTED DEV INTRPT @ZD00051*/
             5 VADCCR    BIT(1),       /*CHANNEL CMD RETRY   @Z40LB61*/
             5 VADUCS    BIT(1),       /*UNIT CHECK SIO      @ZD00051*/
           3 VADLINK   FIXED(8);       /*LINK POINTER        @Z40LB61*/
     DCL 1 VADWORD2 (64) BDY(WORD) BASED(VADPTR2),
           3 VADRPNUM  FIXED(8),       /*REAL PAGE NUMBER    @Z40LB61*/
             5 VADMOD11  BIT(1),       /*VUA FOR 2ND HALF OF @Z40LB61
                                         A 3330 MOD 11       @Z40LB61*/
           3 VADLUA    FIXED(8),       /*LOGICAL UNIT ADDR   @Z40LB61*/
             5 VADUDE    BIT(1),       /*UNSUPPRESSABLE D.E. @ZD00051*/
           3 VADPOH    FIXED(8),       /*PAGE OFFSET/HEAD    @Z40LB61*/
           3 VADFLAGS  BIT(8),         /*ATTRIBUTE FLAGS     @Z40LB61*/
             5 VADVRW    BIT(1),       /*VIRTUAL READ/WRITE  @Z40LB61*/
             5 VADVWG    BIT(1),       /*VIRTUAL WRITE GATE  @Z40LB61*/
             5 VADVWI    BIT(1),       /*VIRT. WRITE INHIBIT @Z40LB61*/
             5 VADRR     BIT(1),       /*REAL RESERVE        @Z40LB61*/
             5 VADRB     BIT(1),       /*REAL BUSY           @Z40LB61*/
             5 VADRDED   BIT(1),       /*REAL DEVICE END DUE @Z40LB61*/
             5 VADVSI    BIT(1),       /*VIRTUAL SEEK ISSUED @Z40LB61*/
             5 VADRM     BIT(1);       /*REAL MODE           @Z40LB61*/

     /* STAGING ADAPTER VIRTUAL VOLUME INFO TABLE MAPPING    @Z40LB61*/
     DCL VVITPTR1  PTR(31);            /*PTR TO VVIT BYTE#1  @Z40LB61*/
     DCL VVITPTR2  PTR(31);            /*PTR TO VVIT BYTE#2  @Z40LB61*/
     DCL 1 VVITBYT1 (256) BIT(8) BASED(VVITPTR1),
           3 VVITDEDA  BIT(1),         /*DEVICE END DUE      @ZD00051
                                         INTERFACE A         @ZD00051*/
           3 VVITDEDB  BIT(1),         /*DEVICE END DUE      @Z40LB61
                                         INTERFACE B         @Z40LB61*/
           3 VVITDEDC  BIT(1),         /*DEVICE END DUE      @Z40LB61
                                         INTERFACE C         @Z40LB61*/
           3 VVITDEDD  BIT(1),         /*DEVICE END DUE      @Z40LB61
                                         INTERFACE D         @Z40LB61*/
           3 VVITNBM   BIT(1),         /*NOT BUSY MESSAGE    @Z40LB61*/
           3 VVITFR    BIT(1),         /*FIRST RESERVE       @Z40LB61*/
           3 VVITVVWI  BIT(1),         /*VIRT. WRITE INHIBIT @Z40LB61*/
           3 VVITVVS   BIT(1);         /*VIRTUAL VOL SHARED  @Z40LB61*/
     DCL 1 VVITBYT2 (256) BIT(8) BASED(VVITPTR2),
           3 VVITCC    BIT(1),         /*CONTINGENT CONNECT. @Z40LB61*/
           3 VVITVVB   BIT(1),         /*VIRTUAL VOL BUSY    @Z40LB61*/
           3 VVITINTF  BIT(2),         /*INTERFACE ID        @Z40LB61*/
           3 VVITRSVD  BIT(1),         /*VOLUME RESERVED     @Z40LB61*/
           3 VVITPCDB  BIT(1),         /*PACK CHANGE DUE     @Z40LB61
                                         INTERFACE B         @Z40LB61*/
           3 VVITPCDC  BIT(1),         /*PACK CHANGE DUE     @Z40LB61
                                         INTERFACE C         @Z40LB61*/
           3 VVITPCDD  BIT(1);         /*PACK CHANGE DUE     @Z40LB61
                                         INTERFACE D         @Z40LB61*/

     /* STAGING ADAPTER PAGE STATUS TABLE MAPPING            @Z40LB61*/
     DCL PSTPTR    PTR(31);            /*PTR TO PST ENTRY    @Z40LB61
                                         FOR ONE REAL PAGE   @Z40LB61*/
     DCL 1 PST BDY(WORD) BASED(PSTPTR),
           3 PSTVVA    FIXED(8),       /*VIRTUAL VOL ADDRESS @Z40LB61*/
           3 PSTVPNUM  FIXED(8),       /*VIRTUAL PAGE NUMBER @Z40LB61*/
           3 PSTCYLV   BIT(8),         /*MAP OF CYL'S VALID  @Z40LB61*/
           3 PSTCYLW   BIT(8);         /*MAP OF CYL'S WRIT'N @Z40LB61*/

     /* STAGING ADAPTER LOGICAL-TO-REAL TABLE MAPPING        @Z40LB61*/
     DCL LTRPTR    PTR(31);            /*PTR TO LTR TABLE    @Z40LB61*/
     DCL 1 LTR BASED(LTRPTR),
           3 LTRRUA(16) FIXED(8),      /*REAL UNIT ADDRESSES @Z40LB61*/
             5 LTRMOD11  BIT(1);       /*UNIT IS SECOND HALF @Z40LB61
                                         OF A 3330 MOD 11    @Z40LB61*/
 @EJECT;                                                    /*@Z40LB61*/
    /* MASS STORAGE CONTROL VERIFICATION TABLE               @Z40LB61*/
    /* RECORD 1 (VERIFY MISCELLANEOUS DATA) MAPPING          @Z40LB61*/
    DCL VTR1PTR PTR(31);             /* VTABLER1 PTR         @Z40LB65*/
    DCL 1 VTABLER1 BDY(WORD) BASED(VTR1PTR),
         2 VTPACKID CHAR(8),            /* TABLE PACK ID     @Z40LB65*/
         2 * CHAR(8) BDY(HWORD),
          3 VTIMPLS FIXED(16),          /* IMPL/SEQUENCE NUM @Z40LB65*/
          3 * CHAR(6),                  /* RESERVED          @Z40LB65*/
         2 VTTBLCHR (16) CHAR(4),       /* TABLE CHRS        @Z40LB65*/
          3 * CHAR(1),                  /* RESERVED          @Z40LB65*/
          3 VTTBLC FIXED(8),            /* CYLINDER NUMBER   @Z40LB65*/
          3 VTTBLH FIXED(8),            /* HEAD NUMBER       @Z40LB65*/
          3 VTTBLR FIXED(8),            /* RECORD NUMBER     @Z40LB65*/
         2 VTSDGID (16) CHAR(4),        /* STG DRIVE GRP ID  @Z40LB65*/
          3 VTL33330 FIXED(8),          /* LOGICAL 3333 0    @Z40LB65*/
          3 VTL33331 FIXED(8),          /* LOGICAL 3333 1    @Z40LB65*/
          3 VTLRU0 FIXED(8),            /* LRU FOR 3333 0    @Z40LB65*/
          3 VTLRU1 FIXED(8),            /* LRU FOR 3333 1    @Z40LB65*/
         2 VTUCB (2) CHAR(8) BDY(HWORD),/* PRIM. & SEC. UCBS @Z40LB65*/
          3 VTFLAGS BIT(8),             /* UCB FLAGS         @Z40LB65*/
           4 VTPVALID BIT(1),           /* PRIMARY VALID     @Z40LB65*/
           4 VTPONLIN BIT(1),           /* PRIMARY ONLINE    @Z40LB65*/
           4 VTPREADY BIT(1),           /* PRIMARY READY     @Z40LB65*/
           4 VTPBUSY BIT(1),            /* PRIMARY BUSY      @Z40LB65*/
           4 VTSVALID BIT(1),           /* SECONDARY VALID   @Z40LB65*/
           4 VTSONLIN BIT(1),           /* SECONDARY ONLINE  @Z40LB65*/
           4 VTSREADY BIT(1),           /* SECONDARY READY   @Z40LB65*/
           4 VTSBUSY BIT(1),            /* SECONDARY BUSY    @Z40LB65*/
          3 VTWORK BIT(8),              /* WORK BITS         @Z40LB65*/
          3 VTACTIVE BIT(8),            /* ACTIVE BITS       @Z40LB65*/
          3 VTPOST BIT(8),              /* POST BITS         @Z40LB65*/
          3 VTPADDR FIXED(16),          /* PRIMARY ADDRESS   @Z40LB65*/
          3 VTSADDR FIXED(16),          /* ALTERNATE ADDRESS @Z40LB65*/
         2 * CHAR(60),                  /* RESERVED          @Z40LB65*/
         2 VTTRCCHR (4) CHAR(4),        /* TRACE CHRS        @Z40LB65*/
          3 VTXY FIXED(8),              /* X,Y END/START     @Z40LB65*/
          3 VTTRCC FIXED(8),            /* CYLINDER NUMBER   @Z40LB65*/
          3 VTTRCH FIXED(8),            /* HEAD NUMBER       @Z40LB65*/
          3 VTTRCR FIXED(8),            /* RECORD NUMBER     @Z40LB65*/
         2 VTLRUCW CHAR(4) BDY(WORD),   /* LRU CONTROL WORD  @Z40LB65*/
          3 VTLRUCLK FIXED(8),          /* LRU INITIAL CLOCK @Z40LB65*/
          3 VTLRUTIM FIXED(8),          /* LRU TIME VALUE    @Z40LB65*/
          3 VTLRUIOS FIXED(16),         /* LRU-IOS INTERFACE @Z40LB65*/
         2 VTRVPAGE CHAR(12),           /* REAL-VIRT PG XREF @Z40LB65*/
          3 VT08TO0F FIXED(8),          /* VIRT. CYLS 08-0F  @Z40LB65*/
          3 VT10TO17 FIXED(8),          /* VIRT. CYLS 10-17  @Z40LB65*/
          3 VT18TO1F FIXED(8),          /* VIRT. CYLS 18-1F  @Z40LB65*/
          3 VT20TO27 FIXED(8),          /* VIRT. CYLS 20-27  @Z40LB65*/
          3 * CHAR(8),                  /* RESERVED          @Z40LB65*/
         2 VTVOLPFX CHAR(4);            /* VOLID PREFIX      @Z40LB65*/

     /* MASS STORAGE CONTROL STAGING DRIVE GROUP TABLE       @Z40LB61*/
     /* REAL PAGE MAP MAPPING                                @Z40LB61*/
     DCL RPMPTR    PTR(31);            /*PTR TO REAL PAGE    @Z40LB61
                                         MAP FOR ONE DEVICE  @Z40LB61*/
     DCL 1 RPM(52) BDY(WORD) BASED(RPMPTR),
           3 RPMFLAGS  BIT(8),         /*PAGE-TYPE FLAGS     @Z40LB61*/
             5 RPMACT    BIT(1),       /*PAGE IS ACTIVE      @Z40LB61*/
             5 RPMINACT  BIT(1),       /*PAGE IS INACTIVE    @Z40LB61*/
             5 RPMBND    BIT(1),       /*PAGE IS BOUND       @Z40LB61*/
             5 RPMVBND   BIT(1),       /*PAGE ALLOCATED TO   @Z40LB61
                                         A BOUND VOLUME      @Z40LB61*/
             5 RPMIOERR  BIT(1),       /*I/O ERROR DETECTED  @Z40LB61*/
             5 *         BIT(1),       /*RESERVED            @Z40LB61*/
             5 RPMMSCT   BIT(1),       /*PAGE OF MSC TABLES  @Z40LB61*/
             5 RPMNA     BIT(1),       /*PAGE NOT AVAILABLE  @Z40LB61*/
           3 RPMVPNUM  FIXED(8),       /*VIRTUAL PAGE NO.    @Z40LB61*/
           3 RPMMVT    FIXED(16);      /*MVT POINTER         @Z40LB61*/

     /* MASS STORAGE CONTROL STAGING DRIVE GROUP TABLE       @Z40LB61*/
     /* PAGE AVAILABILITY BLOCK MAPPING                      @Z40LB61*/
     DCL PABPTR    PTR(31);            /*PTR TO PAB FOR      @Z40LB61
                                         ONE SDG             @Z40LB61*/
     DCL 1 PAB BDY(WORD) BASED(PABPTR),
           3 PABFTOT   FIXED(16),      /*FREE PAGE TOTAL     @Z40LB61*/
           3 PABATOT   FIXED(16),      /*ACTIVE PAGE TOTAL   @Z40LB61*/
           3 PABITOT   FIXED(16),      /*INACTIVE PAGE TOTAL @Z40LB61*/
           3 PABBTOT   FIXED(16),      /*BOUND PAGE TOTAL    @Z40LB61*/
           3 PABPPD    FIXED(8),       /*PAGES PER DEVICE    @Z40LB61*/
           3 PABUPDEL  FIXED(8),       /*UPPER DELTA         @Z40LB61*/
           3 PABUPTH   FIXED(16),      /*UPPER THRESHOLD     @Z40LB61*/
           3 *         FIXED(8),       /*RESERVED            @Z40LB61*/
           3 PABLODEL  FIXED(8),       /*LOWER DELTA         @Z40LB61*/
           3 PABLOTH   FIXED(16),      /*LOWER THRESHOLD     @Z40LB61*/
           3 PABSA (2) FIXED(8),       /*SA ID (LOW 4 BITS)  @Z40LB61*/
             5 PABVLDSA  BIT(1),       /*SA IS VALID         @Z40LB61*/
             5 *         BIT(2),       /*RESERVED            @Z40LB61*/
             5 PAB3333   BIT(1),       /*3333 ID             @Z40LB61*/
           3 *         FIXED(16),      /*RESERVED            @Z40LB61*/
           3 PABSRW    FIXED(8),       /*SLICE RANGE W       @Z40LB61*/
           3 PABSRX    FIXED(8),       /*SLICE RANGE X       @Z40LB61*/
           3 PABSRY    FIXED(8),       /*SLICE RANGE Y       @Z40LB61*/
           3 PABSRZ    FIXED(8),       /*SLICE RANGE Z       @Z40LB61*/
           3 *         CHAR(8),        /*RESERVED            @Z40LB61*/
           3 * (8)     FIXED(32),      /*PAGE COUNTS FOR     @Z40LB61
                                         EACH SDG DEVICE     @Z40LB61*/
             5 PABFCNT   FIXED(8),     /*FREE PAGE COUNT     @Z40LB61*/
             5 PABACNT   FIXED(8),     /*ACTIVE PAGE COUNT   @Z40LB61*/
             5 PABICNT   FIXED(8),     /*INACTIVE PAGE COUNT @Z40LB61*/
             5 PABBCNT   FIXED(8),     /*BOUND PAGE COUNT    @Z40LB61*/
           3 PABFMAP (8,8) BIT(8),     /*FREE PAGE BIT MAP   @Z40LB61
                                         FOR EACH DEVICE     @Z40LB61*/
           3 PABAMAP (8,8) BIT(8),     /*ACTIVE PAGE BIT MAP @Z40LB61
                                         FOR EACH DEVICE     @Z40LB61*/
           3 * (8)     FIXED(32),      /*DEVICE INFORMATION  @Z40LB61
                                         FOR EACH DEVICE     @Z40LB61*/
             5 PABFLAGS  BIT(8),       /*DEVICE ATTRIBUTES   @Z40LB61*/
               7 PABDEX    BIT(1),     /*DEVICE EXISTS       @Z40LB61*/
               7 PABVARV   BIT(1),     /*VARIED ON VIRTUAL   @Z40LB61*/
               7 PABVARR   BIT(1),     /*VARIED ON REAL      @Z40LB61*/
               7 PABMOD11  BIT(1),     /*DEVICE IS HALF OF   @Z40LB61
                                         A 3330 MOD 11       @Z40LB61*/
               7 PABMSCT   BIT(1),     /*DEVICE CONTAINS     @Z40LB61
                                         MSC TABLES          @Z40LB61*/
               7 PABVBND   BIT(1),     /*VOLUME BOUND        @Z40LB61*/
               7 PABVARN   BIT(1),     /*VARIED NEUTRAL      @Z40LB61*/
               7 PAB2M11   BIT(1),     /*DEVICE IS 2ND HALF  @Z40LB61
                                         OF A 3330 MOD 11    @Z40LB61*/
             5 PABRINTF  BIT(8),       /*REAL INTERFACE      @Z40LB61*/
               7 PABRAI    BIT(1),     /*CONVERTIBLE TO REAL @Z40LB61*/
               7 PABSA1B   BIT(1),     /*INTERFACE B OF SA#1 @Z40LB61*/
               7 PABSA1C   BIT(1),     /*INTERFACE C OF SA#1 @Z40LB61*/
               7 PABSA1D   BIT(1),     /*INTERFACE D OF SA#1 @Z40LB61*/
               7 *         BIT(1),     /*RESERVED            @Z40LB61*/
               7 PABSA2B   BIT(1),     /*INTERFACE B OF SA#2 @Z40LB61*/
               7 PABSA2C   BIT(1),     /*INTERFACE C OF SA#2 @Z40LB61*/
               7 PABSA2D   BIT(1),     /*INTERFACE D OF SA#2 @Z40LB61*/
             5 PABORUA   FIXED(8),     /*ORIGINAL RUA        @Z40LB61*/
               7 PABORUAV  BIT(1),     /*OLD RUA IS VALID    @Z40LB61*/
             5 PABRUA    FIXED(8);     /*REAL UNIT ADDRESS   @Z40LB61*/

     /* MASS STORAGE CONTROL STAGING DRIVE GROUP TABLE       @Z40LB61*/
     /* DEMOUNTED VOLUME BLOCK MAPPING                       @Z40LB61*/
     DCL DVBPTR    PTR(31);            /*PTR TO 1 SDG'S DVB  @Z40LB61*/
     DCL 1 DVB BDY(WORD) BASED(DVBPTR),
           3 DVBNEXT   FIXED(8),       /*NEXT ENTRY'S OFFSET @Z40LB61*/
           3 DVBCURR   FIXED(8),       /*CURRENT ENTRY'S     @Z40LB61
                                         OFFSET              @Z40LB61*/
           3 *         FIXED(16),      /*RESERVED            @Z40LB61*/
           3 DVBMVT (126) FIXED(16),   /*MVT POINTERS        @Z40LB61*/
             5 DVBMSFID   BIT(2),      /*MSF CONTAINING VOL  @Z40LB61*/
             5 DVBPFI     BIT(1);      /*PREFERRED INACTIVE  @ZD00051
                                         SPACE FOR THIS VOL  @ZD00051*/

     /* MASS STORAGE CONTROL STAGING DRIVE GROUP TABLE       @Z40LB61*/
     /* LEAST RECENTLY USED PAGES BLOCK MAPPING              @Z40LB61*/
     DCL LPBPTR    PTR(31);            /*PTR TO 1 SDG'S LPB  @Z40LB61*/
     DCL 1 LPB BDY(WORD) BASED(LPBPTR),
           3 LPBNEXT   FIXED(8),       /*NEXT ENTRY'S OFFSET @Z40LB61*/
           3 LPBCURR   FIXED(8),       /*CURRENT ENTRY'S     @Z40LB61
                                         OFFSET              @Z40LB61*/
           3 *         FIXED(16),      /*RESERVED            @Z40LB61*/
           3 LPBMVT (126) FIXED(16),   /*MVT POINTERS        @Z40LB61*/
             5 LPBMSFID   BIT(2),      /*MSF CONTAINING VOL  @Z40LB61*/
             5 LPBPFI     BIT(1);      /*PREFERRED INACTIVE  @ZD00051
                                         SPACE FOR THIS VOL  @ZD00051*/

     /* MASS STORAGE CONTROL VIRTUAL VOLUME ADDRESS /        @Z40LB61*/
     /* MOUNTED VOLUME TABLE CROSS REFERENCE TABLE MAPPING   @Z40LB61*/
     DCL VMXPTR    PTR(31);            /*PTR TO MVT XREF FOR @Z40LB61
                                         A SINGLE VVA ENTRY  @Z40LB61*/
     DCL 1 VMX BDY(WORD) BASED(VMXPTR),
           3 VMXFLAGS  BIT(8),         /*ATTRIBUTE FLAGS     @Z40LB61*/
             5 VMXVALID  BIT(1),       /*ENTRY IS VALID      @Z40LB61*/
             5 *         BIT(7),       /*RESERVED            @Z40LB61*/
           3 *         FIXED(8),       /*RESERVED            @Z40LB61*/
           3 VMXMVT    FIXED(16);      /*MVT POINTER         @Z40LB61*/

     /* MASS STORAGE CONTROL VIRTUAL VOL ADDR TABLE MAPPING  @Z40LB61*/
     DCL VVATPTR   PTR(31);            /*PTR TO VVAT ENTRY   @Z40LB61
                                         FOR ONE SA          @Z40LB61*/
     DCL 1 VVAT BDY(WORD) BASED(VVATPTR),
           3 VVATVVA (32) BIT(8);      /*MAP OF VVA'S IN USE @Z40LB61
                                         (VVA 64 IS 1ST BIT) @Z40LB61*/

     /* MASS STORAGE CONTROL CONFIGURATION BIT MAP MAPPING   @Z40LB64*/
     DCL CBMPTR   PTR(31) BDY(WORD);   /* CBM BASE POINTER   @Z40LB64*/
     DCL 1 CBMAP BDY(WORD) BASED(CBMPTR),
           3 CBMDRD (4) BIT(8),        /* ONE BIT FOR EACH   @Z40LB64
                                          POSSIBLE DRD IN    @Z40LB64
                                          CONFIGURATION      @Z40LB64*/
           3 CBMSA (2) BIT(8),         /* ONE BIT FOR EACH   @Z40LB64
                                          POSSIBLE SA IN     @Z40LB64
                                          CONFIGURATION      @Z40LB64*/
           3 CBMDRC (2) BIT(8),        /* ONE BIT FOR EACH   @Z40LB64
                                          POSSIBLE DRC IN    @Z40LB64
                                          CONFIGURATION      @Z40LB64*/
           3 CBMDRIVE(30) BIT(8),      /* ONE BIT FOR EACH   @Z40LB64
                                          POSSIBLE DRIVE     @Z40LB64
                                          IN CONFIGURATION   @Z40LB64*/
           3 CBMFLAGS BIT(8),          /*ATTRIBUTE FLAGS     @Z40BL64*/
           3 CBMMSF   BIT(8);          /*TWO BITS FOR EACH   @Z40LB64
                                         POSSIBLE MSF (1 BIT @Z40LB64
                                         EACH FOR UC0-2 &    @Z40LB64
                                         UC0-1 RESPECTIVELY) @Z40LB64*/

     /* MASS STORAGE CONTROL MOUNT EQUALIZATION              @Z40LB64*/
     /* RECORD MAPPING                                       @Z40LB64*/
     DCL MERPTR PTR(31);               /* MER BASE POINTER   @Z40LB64*/
     DCL 1 MERECORD BDY(WORD) BASED(MERPTR),
           3 *(30) BDY(WORD),          /* INFORMATION FOR    @Z40LB64
                                          EACH SDG           @Z40LB64*/
             5 MEFLAGS BIT(8),         /* FLAGS              @Z40LB64*/
               7 MEVOI1 BIT(1),        /* INCREMENT VARIED   @Z40LB64
                                          ON COUNT BY 1      @Z40LB64*/
               7 MEVOD1 BIT(1),        /* DECREMENT VARIED   @Z40LB64
                                          ON COUNT BY 1      @Z40LB64*/
               7 MEVOI2 BIT(1),        /* INCREMENT VARIED   @Z40LB64
                                          ON COUNT BY 2      @Z40LB64*/
               7 MEVOD2 BIT(1),        /* DECREMENT VARIED   @Z40LB64
                                          ON COUNT BY 2      @Z40LB64*/
               7 MEMVI1 BIT(1),        /* INCREMENT MOUNTED  @Z40LB64
                                          VOLUMES COUNT BY 1 @Z40LB64*/
               7 MEMVD1 BIT(1),        /* DECREMENT MOUNTED  @Z40LB64
                                          VOLUMES COUNT BY 1 @Z40LB64*/
               7 MEMVI2 BIT(1),        /* INCREMENT MOUNTED  @Z40LB64
                                          VOLUMES COUNT BY 2 @Z40LB64*/
               7 MEMVD2 BIT(1),        /* DECREMENT MOUNTED  @Z40LB64
                                          VOLUMES COUNT BY 2 @Z40LB64*/
             5 MEVOCNT FIXED(8),       /* COUNT OF LOGICAL   @Z40LB64
                                          DRIVES VARIED ON   @Z40LB64*/
             5 MEMNTCNT FIXED(16),     /* COUNT OF VOLUMES   @Z40LB64
                                          MOUNTED ON SDG     @Z40LB64*/
           3 * CHAR(8),                /* RESERVED           @Z40LB64*/
           3 *(30) BDY(WORD),          /* INFORMATION FOR    @Z40LB64
                                          EACH SDG           @Z40LB64*/
             5 MELRUCNT FIXED(8),      /* COUNT OF LRU       @Z40LB64
                                          INVOKES FOR SDG    @Z40LB64*/
             5 MEDRVCNT FIXED(8),      /* COUNT OF LOGICAL   @Z40LB64
                                          DRIVES FOR SDG     @Z40LB64*/
             5 MEUCBCNT FIXED(16);     /* COUNT OF SYSGENED  @Z40LB64
                                          UCBS FOR SDG       @Z40LB64*/

     /* MASS STORAGE CONTROL MOUNTED VOLUME TABLE            @Z40LB64*/
     /* CONTROL BLOCK MAPPING                                @Z40LB64*/
     DCL MVCBPTR PTR(31);              /* MVT CTL BLK PTR    @Z40LB64*/
     DCL 1 MVCTLBLK BDY(WORD) BASED(MVCBPTR),
           3 MVCTLBIT (256) BIT(8);    /* MVT ENTRY IN-USE   @Z40LB64
                                          FLAGS              @Z40LB64*/

     /* MASS STORAGE CONTROL MOUNTED VOLUME TABLE            @Z40LB64*/
     /* INDEX BLOCK MAPPING                                  @Z40LB64*/
     DCL MVIBPTR PTR(31);              /* MVT INDEX BLK PTR  @Z40LB64*/
     DCL 1 MVIDXBLK BDY(WORD) BASED(MVIBPTR),
           3 MVIFLAGS BIT(8),          /* INDEX FLAGS        @Z40LB64*/
             5 MVOFOUT BIT(1),         /* OVERFLOW OUT       @Z40LB64*/
             5 MVOFBLK BIT(1),         /* OVERFLOW BLOCK     @Z40LB64*/
             5 MVLSTBLK BIT(1),        /* LAST BLK IN INDEX  @Z40LB64*/
             5 *       BIT(5),         /* ZEROS              @Z40LB64*/
           3 MVENTLEN FIXED(8),        /* ENTRY LENGTH       @Z40LB64*/
           3 MVENTMAX FIXED(8),        /* MAXIMUM ENTRIES    @Z40LB64*/
           3 MVENTNUM FIXED(8),        /* ACTUAL ENTRIES     @Z40LB64*/
           3 * CHAR(4),                /* RESERVED           @Z40LB64*/
           3 *(31) BDY(WORD),          /* INDEX ENTRY        @Z40LB64*/
             5 MVIVOLID CHAR(6),       /* VOLUME IDENTIFIER  @Z40LB64*/
             5 MVMVTPTR FIXED(16);     /* MVT ENTRY POINTER  @Z40LB64*/

     /* MASS STORAGE CONTROL MOUNTED VOLUME TABLE            @Z40LB64*/
     /* ENTRY MAPPING                                        @Z40LB64*/
     DCL MVENTPTR PTR(31);             /* MVT ENTRY BASE PTR @Z40LB64*/
     DCL MVPATH#   FIXED(15);          /*INDEX TO SA PATH TO @Z40LB61
                                         BE EXAMINED         @Z40LB61*/
     DCL 1 MVENTRY BDY(WORD) BASED(MVENTPTR),
           3 MVVOLID CHAR(6),          /* VOLUME IDENTIFIER  @Z40LB64*/
           3 MVVFLAGS BIT(8),          /* VOLUME FLAGS       @Z40LB64*/
             5 MVCECTG BIT(1),         /* CE CARTRIDGE       @Z40LB64*/
             5 *        BIT(1),        /* RESERVED           @Z40LB64*/
             5 MVSECVOL BIT(1),        /* SECURE VOLUME      @Z40LB64*/
             5 MVEXCVOL BIT(1),        /* EXCLUSIVE VOLUME   @Z40LB64*/
             5 MVSCRCTG BIT(1),        /* SCRATCH CARTRIDGE  @Z40LB64*/
             5 MVBNDVOL BIT(1),        /* BOUND VOLUME       @Z40LB64*/
             5 MVWRTINH BIT(1),        /* WRITE INHIBIT      @Z40LB64*/
             5 *        BIT(1),        /* RESERVED           @Z40LB64*/
           3 *        CHAR(1),         /* RESERVED           @Z40LB64*/
           3 MVLZYX1 FIXED(16),        /* SEQ #1 CTG ADDRESS @Z40LB64*/
           3 MVLZYX2 FIXED(16),        /* SEQ #2 CTG ADDRESS @Z40LB64*/
           3 MVMFLAGS BIT(8),          /* MOUNT FLAGS        @Z40LB64*/
             5 MVMNTVOL BIT(1),        /* VOLUME MOUNTED     @Z40LB64*/
             5 MVMNTEXC BIT(1),        /* MOUNTED EXCLUSIVE  @Z40LB64*/
             5 MVMNTBND BIT(1),        /* MOUNTED BOUND      @Z40LB64*/
             5 MVREMNT  BIT(1),        /* REMOUNTED NEW SDG  @Z40LB61*/
             5 *        BIT(4),        /* RESERVED           @Z40LB64*/
           3 MVPINCNT FIXED(8),        /* INACTIVE PAGE CNT  @Z40LB64*/
           3 MVRESRVE FIXED(8),        /* SA PORT RESERVING  @Z40LB64
                                          VOL (LOW 2 BITS)   @Z40LB64*/
             5 *      BIT(4),          /* RESERVED           @Z40LB64*/
             5 MVSA2RSV BIT(1),        /* 0 FOR SA1          @Z40LB64
                                          1 FOR SA2          @Z40LB64*/
             5 *        BIT(1),        /* RESERVED           @Z40LB64*/
           3 MVSDG    FIXED(8),        /* SDG INDEX          @Z40LB64*/
           3 MV3333   FIXED(8),        /* LOGICAL 3333 ADDR  @Z40LB64*/
           3 MVVAMSG BIT(8),           /* VOL AVAILABLE MSG  @Z40LB64*/
             5 MVINTFA BIT(1),         /* INTERFACE A        @Z40LB64*/
             5 MVINTFB BIT(1),         /* INTERFACE B        @Z40LB64*/
             5 MVINTFC BIT(1),         /* INTERFACE C        @Z40LB64*/
             5 MVINTFD BIT(1),         /* INTERFACE D        @Z40LB64*/
             5 *       BIT(4),         /* RESERVED           @Z40LB64*/
           3 *         CHAR(2),        /* RESERVED           @Z40LB64*/
           3 *(2)  CHAR(8) BDY(WORD),  /* INTERFACE INFO     @Z40LB64*/
             5 MVSA    FIXED(8),       /* SA ADDRESS         @Z40LB64
                                          (LOW 4 BITS)       @Z40LB64*/
               7 MVVLDSA BIT(1),       /* SA IS VALID        @Z40LB64*/
               7 MVACTB BIT(1),        /* INTERFACE B ACTIVE @Z40LB64*/
               7 MVACTC BIT(1),        /* INTERFACE C ACTIVE @Z40LB64*/
               7 MVACTD BIT(1),        /* INTERFACE D ACTIVE @Z40LB64*/
             5 MVCPUIDS FIXED(24),     /* CPU IDENTIFIERS    @Z40LB64
                                          (SEE LOWER LEVEL
                                          STRUCTURE DECLARE) @Z40LB64*/
             5 MVVVA     FIXED(8),     /*VIRTUAL VOL ADDRESS @Z40LB61*/
             5 MVVUAS   FIXED(24),     /* VIRTUAL UNIT ADDRS @Z40LB61
                                          (SEE LOWER LEVEL
                                          STRUCTURE DECLARE) @Z40LB64*/
           3 MVPFI (8) BIT(8),         /*PREFERRED INACTIVE  @ZD00051
                                         PAGE BIT MAP        @ZD00051*/
           3 *         CHAR(8),        /*RESERVED            @ZD00051*/
           3 *(51) CHAR(4) BDY(WORD),  /* PAGE ALLOCATION    @Z40LB64
                                          INFORMATION        @Z40LB64*/
             5 MVLOGDEV FIXED(8),      /* LOGICAL DEVICE     @Z40LB64
                                          (LOW 3 BITS)       @Z40LB64*/
               7 MVPINACT BIT(1),      /* PAGE IS ACTIVE     @Z40LB64*/
               7 MVDSTGC1 BIT(1),      /* CTG #1 SCHEDULED   @Z40LB64
                                          FOR DESTAGE        @Z40LB64*/
               7 MVDSTGC2 BIT(1),      /* CTG #2 SCHEDULED   @Z40LB64
                                          FOR DESTAGE        @Z40LB64*/
               7 *       BIT(2),       /* RESERVED           @Z40LB64*/
             5 MVBNDCNT FIXED(8),      /* BOUND COUNT        @Z40LB64*/
             5 MVRPNUM  FIXED(8),      /* REAL PAGE          @Z40LB64*/
             5 MVCYLMAP BIT(8);        /* CYLINDER MAP       @Z40LB64*/

     /* MASS STORAGE CONTROL MOUNTED VOLUME TABLE ENTRY      @Z40LB64*/
     /* CPU IDENTIFIERS FOR INTERFACES B, C, AND D           @Z40LB64*/
     /* (LOWER LEVEL STRUCTURE DECLARATION FOR 'MVCPUIDS')   @Z40LB64*/
     DCL MVCPUID(3) FIXED(8) BASED(    /* CPU IDENTIFIER     @Z40LB64*/
              ADDR(MVCPUIDS(MVPATH#)));/* (LOW 4 BITS)       @Z40LB64*/

     /* MASS STORAGE CONTROL MOUNTED VOLUME TABLE ENTRY      @Z40LB64*/
     /* VIRTUAL UNIT ADDRESSES FOR INTERFACES B, C, AND D    @Z40LB64*/
     /* (LOWER LEVEL STRUCTURE DECLARATION FOR 'MVVUAS')     @Z40LB64*/
     DCL 1 MVVUA(3) FIXED(8) BASED(    /* VIRTUAL UNIT ADDR  @Z40LB61*/
              ADDR(MVVUAS(MVPATH#))),  /* (LOW 6 BITS)       @Z40LB61*/
           3 MVVUAI#  BIT(2);          /* INTERFACE ID#      @Z40LB64*/

     /* MASS STORAGE CONTROL SCRATCH CARTRIDGE LIST          @Z40LB64*/
     /* CONTROL FIELD MAPPING                                @Z40LB64*/
     DCL SCCFPTR PTR(31);              /* SCL CTL FLD PTR    @Z40LB64*/
     DCL 1 SCCTLFLD BDY(WORD) BASED(SCCFPTR),
           3 SCCOMLEN FIXED(8),        /* COMPARE LENGTH     @Z40LB64
                                          (LOW 4 BITS)       @Z40LB64*/
             5 SCCFLAGS BIT(4),        /* CONTROL FLD FLAGS  @Z40LB64*/
               7 SCLSTBLK BIT(1),      /* LAST TABLE BLOCK   @Z40LB64*/
               7 SCLSTACT BIT(1),      /* LAST ACTIVE BLOCK  @Z40LB64*/
               7 SCENDTRK BIT(1),      /* END OF TRACK BLOCK @Z40LB64*/
               7 SCLSTTRK BIT(1),      /* LAST TABLE TRACK   @Z40LB64*/
           3 SCENTLEN FIXED(8),        /* ENTRY LENGTH       @Z40LB64*/
           3 SCENTMAX FIXED(8),        /* MAXIMUM ENTRIES    @Z40LB64*/
           3 SCENTNUM FIXED(8),        /* ENTRY USE COUNT    @Z40LB64*/
           3 SCTRKPTR CHAR(4),         /* NEXT TRACK POINTER @Z40LB64*/
             5 *      CHAR(1),         /* ZEROS              @Z40LB64*/
             5 SCCYL  FIXED(8),        /* CYLINDER ADDRESS   @Z40LB64*/
             5 SCHEAD FIXED(8),        /* TRACK ADDRESS      @Z40LB64*/
             5 SCREC  FIXED(8);        /* RECORD ADDRESS     @Z40LB64*/

     /* MASS STORAGE CONTROL SCRATCH CARTRIDGE LIST          @Z40LB64*/
     /* ENTRY MAPPING                                        @Z40LB64*/
     DCL SCENTPTR PTR(31);             /* SCL ENTRY POINTER  @Z40LB64*/
     DCL 1 SCENTRY BDY(WORD) BASED(SCENTPTR),
           3 *     CHAR(4),            /* RESERVED           @Z40LB64*/
           3 SCCSN CHAR(12),           /* CARTRIDGE SERIAL   @Z40LB64*/
           3 SCLZYX FIXED(16),         /* CARTRIDGE ADDRESS  @Z40LB64*/
           3 *     CHAR(2);            /* RESERVED           @Z40LB64*/

     /* MASS STORAGE CONTROL VOLUME INVENTORY                @Z40LB64*/
     /* CONTROL FIELD MAPPING                                @Z40LB64*/
     DCL VICFPTR PTR(31);              /* VI CTL FLD PTR     @Z40LB64*/
     DCL 1 VICTLFLD BDY(WORD) BASED(VICFPTR),
           3 VICFLAGS BIT(8),          /* CONTROL FLD FLAGS  @Z40LB64*/
             5 VILSTBLK BIT(1),        /* LAST TABLE BLOCK   @Z40LB64*/
             5 VILSTACT BIT(1),        /* LAST ACTIVE BLOCK  @Z40LB64*/
             5 VIENDTRK BIT(1),        /* END OF TRACK       @Z40LB64*/
             5 VILSTTRK BIT(1),        /* LAST TABLE TRACK   @Z40LB64*/
             5 VIUSEBLK BIT(1),        /* BLOCK USED         @Z40LB64*/
             5 VIAREA   BIT(2),        /* TABLE AREA         @Z40LB64*/
             5 VIOFBLK  BIT(1),        /* OVERFLOW BLOCK     @Z40LB64*/
           3 VIENTLEN FIXED(8),        /* ENTRY LENGTH       @Z40LB64*/
           3 VIENTMAX FIXED(8),        /* MAXIMUM ENTRIES    @Z40LB64*/
           3 VIENTNUM FIXED(8),        /* ACTUAL ENTRIES     @Z40LB64*/
           3 VITRKPTR CHAR(4),         /* NEXT TRACK POINTER @Z40LB64*/
             5 *      CHAR(1),         /* ZEROS              @Z40LB64*/
             5 VICYL  FIXED(8),        /* CYLINDER ADDRESS   @Z40LB64*/
             5 VIHEAD FIXED(8),        /* TRACK ADDRESS      @Z40LB64*/
             5 VIREC  FIXED(8);        /* RECORD ADDRESS     @Z40LB64*/

     /* MASS STORAGE CONTROL VOLUME INVENTORY ENTRY MAPPING  @Z40LB64*/
     DCL VIENTPTR PTR(31);             /* VI ENTRY POINTER   @Z40LB64*/
     DCL 1 VIENTRY BDY(WORD) BASED(VIENTPTR),
           3 VIVOLID CHAR(6),          /* VOLUME IDENTIFIER  @Z40LB64*/
           3 VIVFLAGS BIT(8),          /* VOLUME FLAGS       @Z40LB64*/
             5 VICECTG BIT(1),         /* CE CARTRIDGE       @Z40LB64*/
             5 *       BIT(1),         /* RESERVED           @Z40LB64*/
             5 VISECVOL BIT(1),        /* SECURE VOLUME      @Z40LB64*/
             5 VIEXCVOL BIT(1),        /* EXCLUSIVE VOLUME   @Z40LB64*/
             5 VISCRCTG BIT(1),        /* SCRATCH CARTRIDGE  @Z40LB64*/
             5 VIBNDVOL BIT(1),        /* BOUND VOLUME       @Z40LB64*/
             5 VIWRTINH BIT(1),        /* WRITE INHIBIT      @Z40LB64*/
             5 *        BIT(1),        /* RESERVED           @Z40LB64*/
           3 *         CHAR(1),        /* RESERVED           @Z40LB64*/
           3 VILZYX1   FIXED(16),      /* SEQ #1 CTG ADDRESS @Z40LB64*/
           3 VILZYX2   FIXED(16);      /* SEQ #2 CTG ADDRESS @Z40LB64*/

     /* MASS STORAGE CONTROL TRANSIENT VOLUME LIST           @Z40LB64*/
     /* CONTROL FIELD MAPPING                                @Z40LB64*/
     DCL TVCFPTR PTR(31);              /* TVL CTL FLD PTR    @Z40LB64*/
     DCL 1 TVCTLFLD BDY(WORD) BASED(TVCFPTR),
           3 TVCOMLEN FIXED(8),        /* COMPARE LENGTH     @Z40LB64
                                          (LOW 4 BITS)       @Z40LB64*/
             5 TVCFLAGS BIT(4),        /* CONTROL FLD FLAGS  @Z40LB64*/
               7 TVLSTBLK BIT(1),      /* LAST TABLE BLOCK   @Z40LB64*/
               7 TVLSTACT BIT(1),      /* LAST ACTIVE BLOCK  @Z40LB64*/
               7 TVENDTRK BIT(1),      /* END OF TRACK       @Z40LB64*/
               7 TVLSTTRK BIT(1),      /* LAST TABLE TRACK   @Z40LB64*/
           3 TVENTLEN FIXED(8),        /* ENTRY LENGTH       @Z40LB64*/
           3 TVENTMAX FIXED(8),        /* MAXIMUM ENTRIES    @Z40LB64*/
           3 TVENTNUM FIXED(8),        /* ENTRY USE COUNT    @Z40LB64*/
           3 TVTRKPTR CHAR(4),         /* NEXT TRACK POINTER @Z40LB64*/
             5 *      CHAR(1),         /* ZEROS              @Z40LB64*/
             5 TVCYL FIXED(8),         /* CYLINDER ADDRESS   @Z40LB64*/
             5 TVHEAD FIXED(8),        /* TRACK ADDRESS      @Z40LB64*/
             5 TVREC FIXED(8);         /* RECORD ADDRESS     @Z40LB64*/

     /* MASS STORAGE CONTROL TRANSIENT VOLUME LIST           @Z40LB64*/
     /* ENTRY MAPPING                                        @Z40LB64*/
     DCL TVENTPTR PTR(31);             /* TVL ENTRY POINTER  @Z40LB64*/
     DCL 1 TVENTRY BDY(WORD) BASED(TVENTPTR),
           3 TVLZYX1 FIXED(16),        /* SEQ #1 CTG ADDRESS @Z40LB64*/
           3 TVLZYX2 FIXED(16),        /* SEQ #2 CTG ADDRESS @Z40LB64*/
           3 TVCSN   CHAR(12),         /* CARTRIDGE SERIAL   @Z40LB64*/
           3 TVVOLID CHAR(6),          /* VOLUME IDENTIFIER  @Z40LB64*/
           3 TVVFLAGS BIT(8),          /* VOLUME FLAGS       @Z40LB64*/
             5 TVCECTG BIT(1),         /* CE CARTRIDGE       @Z40LB64*/
             5 *       BIT(1),         /* RESERVED           @Z40LB64*/
             5 TVSECVOL BIT(1),        /* SECURE VOLUME      @Z40LB64*/
             5 TVEXCVOL BIT(1),        /* EXCLUSIVE VOLUME   @Z40LB64*/
             5 TVSCRCTG BIT(1),        /* SCRATCH CARTRIDGE  @Z40LB64*/
             5 TVBNDVOL BIT(1),        /* BOUND VOLUME       @Z40LB64*/
             5 TVWRTINH BIT(1),        /* WRITE INHIBIT      @Z40LB64*/
             5 *        BIT(1),        /* RESERVED           @Z40LB64*/
           3 *          CHAR(1);       /* RESERVED           @Z40LB64*/

     /* MASS STORAGE CONTROL CONFIGURATION INDEX             @Z40LB64*/
     /* ENTRY MAPPING                                        @Z40LB64*/
     DCL CIENTPTR PTR(31);             /* CONFIG INDEX PTR   @Z40LB64*/
     DCL CISA#    FIXED(15);           /*INDEX TO CI DATA    @Z40LB61
                                         FOR A GIVEN SA#     @Z40LB61*/
     DCL 1 CIENTRY(16) BDY(WORD) BASED(CIENTPTR),
           3 CICSCNCT BIT(8),          /* SA MSF CONNECTION  @Z40BL64*/
             5 CIMSF    BIT(1),        /* ID IS FOR AN MSF   @Z40BL64*/
             5 *        BIT(3),        /* RESERVED           @Z40LB64*/
             5 CIMSF0   BIT(1),        /* MSF 0              @Z40LB64*/
             5 CIMSF1   BIT(1),        /* MSF 1              @Z40LB64*/
             5 CIMSF2   BIT(1),        /* MSF 2              @Z40LB64*/
             5 CIMSF3   BIT(1),        /* MSF 3              @Z40LB64*/
           3 *          CHAR(1),       /* RESERVED           @Z40LB64*/
           3 CISACHNL CHAR(6);         /* SA CHANNEL B,C,D   @Z40LB64
                                          (SEE LOWER LEVEL   @Z40LB64
                                          STRUCTURE DECLARE) @Z40LB64*/

     /* MASS STORAGE CONTROL CONFIGURATION INDEX ENTRY       @Z40LB64*/
     /* SA CHANNEL B, C, AND D INFORMATION                   @Z40LB64*/
     /* (LOWER LEVEL STRUCTURE DECLARATION FOR 'CISACHNL')   @Z40LB64*/
     DCL 1 *(3) CHAR(2) BASED(ADDR(CISACHNL(CISA#))),
           3 CICPUID FIXED(8),         /* CPU IDENTIFIER     @Z40LB64*/
           3 CICUCHL FIXED(8),         /* CONTROL UNIT AND   @Z40LB64
                                          CHANNEL ADDRESS    @Z40LB64*/
             5 CICU    BIT(2),         /* CONTROL UNIT       @Z40LB64*/
             5 *       BIT(2),         /* ZEROS              @Z40LB64*/
             5 CICHL   BIT(4);         /* CHANNEL ADDRESS    @Z40LB64*/

     /* MASS STORAGE CONTROL MANUFACTURER'S ID CONVERSION    @Z40LB64*/
     /* TABLE MAPPING                                        @Z40LB64*/
     DCL MICPTR PTR(31);               /* MICT BASE POINTER  @Z40LB64*/
     DCL 1 MICTABLE BDY(WORD) BASED(MICPTR),
           3 *(16) CHAR(8),            /* MICT ENTRY         @Z40LB64*/
             5 MICMFID CHAR(5),        /* MANUFACTURER'S ID  @Z40LB64*/
             5 MICMPCPU FIXED(8),      /* CPUID OF OTHER     @Z40LB64
                                          CPU OF MP PAIR     @Z40LB64*/
             5 MICFLAG1 BIT(8),        /* MICT FLAGS         @Z40LB64*/
               7 *      BIT(1),        /* RESERVED           @Z40LB64*/
               7 MICPOTMP BIT(1),      /* POTENTIAL MP       @Z40LB64*/
               7 MICAPATH BIT(1),      /* ALTERNATE PATH     @Z40LB64*/
               7 *      BIT(3),        /* ZEROS              @Z40LB64*/
               7 MICINTF BIT(2),       /* CPU INTERFACE      @Z40LB64*/
             5 MICFLAG2 BIT(8),        /* MICT FLAGS         @Z40LB64*/
               7 MICVALID BIT(1),      /* MICT ENTRY VALID   @Z40LB64*/
               7 MICCURMP BIT(1),      /* CURRENT MP         @Z40LB64*/
               7 MICCMB   BIT(1),      /* COMMON MSG BUFFER  @Z40LB64*/
               7 *        BIT(3),      /* ZEROS              @Z40LB64*/
               7 MICAINTF BIT(2);      /* ALTERNATE INTRFACE @Z40LB64*/

     /* MASS STORAGE CONTROL CONFIGURATION DATA BLOCK        @Z40LB64*/
     /* MAPPING                                              @Z40LB64*/
     DCL CDBPTR PTR(31);               /* CDB BASE POINTER   @Z40LB64*/
     DCL CDBVUA#   FIXED(15);          /*INDEX TO CDB DATA   @Z40LB61
                                         FOR A GIVEN VUA#    @Z40LB61*/
     DCL 1 CDBLOCK BDY(WORD) BASED(CDBPTR),
           3 *(64) CHAR(4) BDY(WORD),  /* CDB ENTRY          @Z40LB64*/
             5 CDBSDG FIXED(8),        /* STAGING DRIVE      @Z40LB64*/
                                       /* GROUP (LOW 5 BITS) @Z40LB64*/
               7 CDBCNFIG BIT(8),      /* CONFIGURATION BITS @Z40LB64*/
                 9 CDBNOSHR BIT(1),    /* NOT SHARABLE       @Z40LB64*/
                 9 CDBINUSE BIT(1),    /* VUA IN USE         @Z40LB64*/
                 9 CDB3333  BIT(1),    /* LOGICAL 3333 ADDR  @Z40LB64*/
             5 CDBPATHS BIT(8),        /* ALTERNATE PATHS    @ZD00051*/
               7 * BIT(1),             /*RESERVED            @ZD00051*/
               7 CDBSA1B BIT(1),       /*SA-1 INTF-B PATH    @ZD00051*/
               7 CDBSA1C BIT(1),       /*SA-1 INTF-C PATH    @ZD00051*/
               7 CDBSA1D BIT(1),       /*SA-1 INTF-D PATH    @ZD00051*/
               7 * BIT(1),             /*RESERVED            @ZD00051*/
               7 CDBSA2B BIT(1),       /*SA-2 INTF-B PATH    @ZD00051*/
               7 CDBSA2C BIT(1),       /*SA-2 INTF-C PATH    @ZD00051*/
               7 CDBSA2D BIT(1),       /*SA-2 INTF-D PATH    @ZD00051*/
             5 CDBMVTP FIXED(16);      /*MVT POINTER         @ZD00051*/

     /* MASS STORAGE CONTROL CELL MAP CONTROL BLOCK MAPPING  @Z40LB64*/
     DCL CMCBPTR PTR(31);              /* CM CTL BLK PTR     @Z40LB64*/
     DCL 1 CMCTLBLK BDY(WORD) BASED(CMCBPTR),
           3 CMCFLAGS (22) BIT(8),     /* CUBE FLAGS         @Z40LB64*/
           3 CMCPTRS(175) FIXED(8);    /* CUBE POINTERS      @Z40LB64*/

     /* MASS STORAGE CONTROL CELL MAP ENTRY MAPPING          @Z40LB64*/
     DCL CMENTPTR PTR(31);             /* CELL MAP ENTRY PTR @Z40LB64*/
     DCL 1 CMENTRY BIT(8) BASED(CMENTPTR),
           3 CMX0Z0 BIT(1),            /* X=0, Z=0           @Z40LB64*/
           3 CMX0Z1 BIT(1),            /* X=0, Z=1           @Z40LB64*/
           3 CMX1Z0 BIT(1),            /* X=1, Z=0           @Z40LB64*/
           3 CMX1Z1 BIT(1),            /* X=1, Z=1           @Z40LB64*/
           3 CMX2Z0 BIT(1),            /* X=2, Z=0           @Z40LB64*/
           3 CMX2Z1 BIT(1),            /* X=2, Z=1           @Z40LB64*/
           3 CMX3Z0 BIT(1),            /* X=3, Z=0           @Z40LB64*/
           3 CMX3Z1 BIT(1);            /* X=3, Z=1           @Z40LB64*/
./ ADD NAME=IDCDF50
 /*******************************************************************/
 /*                                                          @Y30LB32*/
 /*  PROCEDURE NAME - CKCSNLEN (FSR SUBROUTINE)              @Y30LB32*/
 /*                                                          @Y30LB32*/
 /*  FUNCTION - CHECKS LENGTH OF CARTRIDGE SERIAL NUMBER     @Y30LB32*/
 /*             IF THE LENGTH OF THE CSN IS LESS THEN ELEVEN,@Y30LB32*/
 /*             ISSUES MESSAGE IDC2099I, IF CSN IS ELEVEN    @Y30LB32*/
 /*             A BLANK CHARACTER IS INSERTED AS THE FOURTH  @Y30LB32*/
 /*             CHARACTER                                    @Y30LB32*/
 /*                                                          @Y30LB32*/
 /*  INPUT - CSN, LENGTH OF CSN                              @Y30LB32*/
 /*                                                          @Y30LB32*/
 /*  OUTPUT - CSN, RETURN CODE IN REGISTER 15(RETURN CODE    @Y30LB32*/
 /*           ZERO IF CSN VALID AND FOUR IF CSN INVALID)     @Y30LB32*/
 /*                                                          @Y30LB32*/
 /********************************************************************/
 CKCSNLEN:                                                 /*@Y30LB32*/
    PROCEDURE(CKCSNVAL,                /* CSN VALUE          @Y30LB32*/
              CKLENGTH)                /* LENGTH OF CSN      @Y30LB32*/
    OPTIONS(NOSAVE,NOSAVEAREA);                            /*@Y30LB32*/

    /* DECLARATIONS FOR CKCSNLEN SUBROUTINE                  @Y30LB32*/
    DCL CKCSNVAL CHAR(12);             /* CSN VALUE          @Y30LB32*/
    DCL CKCSNADJ CHAR(12);             /* FOR ADJUSTED CSN   @Y30LB32*/
    DCL CKLENGTH FIXED(8);             /* LENGTH OF CSN      @Y30LB32*/
    DCL CKRETPTR PTR(31);              /* SAVE RETURN ADDR   @Y30LB32*/
    DCL CKSAVPTR PTR(31);              /* TO SAVE POINTER    @Y30LB32*/
    DCL CKPRTTAB CHAR(20) BDY(WORD);   /* PRINT TABLE AREA   @Y30LB32*/
    DCL CKCOND FIXED(15);
    /* DECLARATIONS OF CONSTANTS                             @Y30LB32*/
    DCL CKBLANK CHAR(1) CONSTANT(' '); /* BLANK TO INSERT IN @Y30LB32*/
                                       /* CSN                @Y30LB32*/
    DCL CKELEVEN BIT(8) CONSTANT('0B'X);/* TO CHECK LENGTH   @Y30LB32*/
                                       /* OF CSN AGAINST     @Y30LB32*/
    DCL CKMSGID CHAR(3) CONSTANT('CM0');/* MODULE MESSAGE ID @Y30LB32*/
    DCL MSG2099I PTR(8) CONSTANT(1);   /* INVALID CSN MSG    @Y30LB32*/
 @EJECT;
    /* THIS IS THE START OF THE CHECK CSN SUBROUTINE         @Y30LB32*/
    /* THE CALLERS RETURN ADDRESS IS SAVED                   @Y30LB32*/
    CKRETPTR = REG14;                                      /*@Y30LB32*/
    UTRACE = 'CKLN';                                       /*@Y30LB32*/
    /* SAVE POINTER TO CALLERS PRINT TABLE,                  @Y30LB32*/
    /* INITIALIZE THE PRINT ARGUMENT LIST                    @Y30LB32*/
    /* AND CONDITION CODE TO ZEROES                           @Y30LB32*/
    CKSAVPTR = DDSTRU;                                     /*@Y30LB32*/
    DDSTRU = ADDR(CKPRTTAB);                               /*@Y30LB32*/
    CKPRTTAB = NULLAREA;                                   /*@Y30LB32*/
    CKCOND = NULLAREA;                                     /*@Y30LB32*/
    /* CSN IS CHECKED FOR LENGTH OF ELEVEN CHARACTERS        @Y30LB32*/
    /* OR MORE                                               @Y30LB32*/
    IF CKLENGTH >= CKELEVEN THEN                           /*@Y30LB32*/
    /* CSN IS CHECKED FOR LENGTH OF ELEVEN AND IF IT IS      @Y30LB32
       ELEVEN A BLANK CHARACTER IS INSERTED AS FOURTH        @Y30LB32
       CHARACTER                                             @Y30LB32*/
      IF CKLENGTH = CKELEVEN THEN                          /*@Y30LB32*/
        DO;                                                /*@Y30LB32*/
          CKCSNADJ(4:4) = CKBLANK;                         /*@Y30LB32*/
          CKCSNADJ(5:12) = CKCSNVAL(4:11);                 /*@Y30LB32*/
          CKCSNVAL(4:12) = CKCSNADJ(4:12);                 /*@Y30LB32*/
        END;                                               /*@Y30LB32*/
      ELSE;                                                /*@Y30LB32*/
    /* IF CSN IS LESS THEN ELEVEN CHARACTERS ERROR           @Y30LB32*/
    /* MESSAGE IDC2099I IS WRITTEN AND CONDITION CODE SET    @Y30LB32*/
    ELSE                                                   /*@Y30LB32*/
      DO;                                                  /*@Y30LB32*/
        DARGSMOD = CKMSGID;                                /*@Y30LB32*/
        DARGSENT = MSG2099I;                               /*@Y30LB32*/
        DARGDBP = ADDR(CKCSNVAL);                          /*@Y30LB32*/
        DARGILP = LENGTH(CKCSNVAL);                        /*@Y30LB32*/
        DARGRETP = NULLAREA;                               /*@Y30LB32*/

        UPRINT (GDTTBL,PRTFILE,DDSTRU);                    /*@Y30LB32*/

        CKCOND = RCFAIL;                                   /*@Y30LB32*/
      END;                                                 /*@Y30LB32*/
    /* RESTORE PRINT AREA POINTER AND RETURN ADDRESS AND     @Y30LB32*/
    /* RETURN CONTROL TO CALLING FSR                         @Y30LB32*/
    DDSTRU = CKSAVPTR;                                     /*@Y30LB32*/
    REG14 = CKRETPTR;                                      /*@Y30LB32*/
    RETURN CODE(CKCOND);                                   /*@Y30LB32*/
    END CKCSNLEN;                                          /*@Y30LB32*/
./ ADD NAME=IDCDF51
 /********************************************************************/
 /*                                                          @Y30LB38*/
 /*     PROCEDURE NAME - VOLEXIT                             @Y30LB38*/
 /*                                                          @Y30LB38*/
 /*     FUNCTION - REMOVES A VOLUME FROM THE MSF.            @Y30LB38*/
 /*                IF THE VOLUME IS EJECTED SUCCESSFULLY,    @Y30LB38*/
 /*                ISSUES MESSAGE IDC0085I TO SYSPRINT AND   @Y30LB38*/
 /*                MESSAGE IDC083E TO THE OPERATOR.  IF THE  @Y30LB38*/
 /*                VOLUME IS NOT EJECTED SUCCESSFULLY, AN    @Y30LB38*/
 /*                ERROR MESSAGE IS ISSUED VIA SSCMSG        @Y30LB38*/
 /*                PROCEDURE AND MESSAGE IDC2084I IS ISSUED  @Y30LB38*/
 /*                TO SYSPRINT.                              @Y30LB38*/
 /*                                                          @Y30LB38*/
 /*     INPUT - THE FOLLOWING POSITIONAL PARAMETERS ARE      @Y30LB38*/
 /*             PASSED AS INPUT:                             @Y30LB38*/
 /*             ARG1 = CSN OF FIRST VOLUME CARTRIDGE         @Y30LB38*/
 /*             ARG2 = VOLUME SERIAL NUMBER                  @Y30LB38*/
 /*             ARG3 = VVI ERROR FLAG                        @Y30LB38*/
 /*             ARG4 = RETAIN RECORD FLAG                    @Y30LB38*/
 /*             ARG5 = VOLUME STORAGE LOCATION               @Y30LB38*/
 /*                                                          @Y30LB38*/
 /*     OUTPUT - RETURN CODE IN REG15                        @Y30LB38*/
 /*              REG15 = 00 CARTRIDGES EJECTED SUCCESSFULLY  @Y30LB38*/
 /*              REG15 = 04 CARTRIDGES NOT EJECTED           @Y30LB38*/
 /*                         SUCCESSFULLY                     @Y30LB38*/
 /*              REG15 = 08 SECOND CARTRIDGE NOT EJECTED     @Y30LB38*/
 /*                         SUCCESSFULLY                     @Y30LB38*/
 /*                                                          @Y30LB38*/
 /********************************************************************/
 VOLEXIT:
   PROCEDURE(VECSN1,                   /* CART SERIAL NUMBER @Y30LB38*/
             VEVOLUME,                 /* VOL SERIAL NUMBER  @Y30LB38*/
             VEVVIERR,                 /* VVI ERROR FLAG     @Y30LB38*/
             VERECFLG,                 /* RETAIN RECORD FLAG @Y30LB38*/
             VEVOLLOC)                 /* VOL STORAGE LOC    @Y30LB38*/
             OPTIONS(NOSAVE,NOSAVEAREA);                   /*@Y30LB38*/
   @EJECT;                                                 /*@Y30LB38*/
   %INCLUDE SYSLIB(IEZMCRTE);                              /*@Y30LB38*/
 @EJECT;                                                   /*@Y30LB38*/
     /* DECLARATIONS FOR VOLEXIT                             @Y30LB38*/
   DCL VEDDSTRU POINTER(31);           /* DARGLIST POINTER   @Y30LB38*/
   DCL MCLSTPTR POINTER(31);           /* BASE PTR FOR MCLIST@Y30LB38*/
   DCL MCRTEPTR POINTER(31);           /* PTR FOR MCLIST EXT @Y30LB38*/
   DCL VERETADR POINTER(31);           /* RETURN ADDR        @Y30LB38*/
   DCL VEMSGPTR POINTER(31);           /* MESSAGE PTR AREA   @Y30LB38*/
   DCL VEWTOPTR POINTER(31);           /* WTO MSG POINTER    @Y30LB38*/
   DCL VECOND FIXED(15);               /* CONDITION CODE     @Y30LB38*/
   DCL VEWTOLEN FIXED(15);             /* LENGTH OF WTO MSG  @Y30LB38*/
   DCL VERESNCD FIXED(31);             /* RSN CODE FOR USSC  @Y30LB38*/
   DCL VEECB CHAR (1);                 /* ECB RETURN AREA    @Y30LB38*/
     /* PARM LIST FOR UPRINT MACRO WITH MULTIPLE INSERTS     @Y30LB38*/
   DCL VELIST CHAR(LENGTH(DARGLIST)+(4*LENGTH(DARGARY)));  /*@Y30LB38*/
     /* POSITIONAL PARMS FOR INPUT PARMAMETERS               @Y30LB38*/
   DCL VECSN1 CHAR(12);                /* CART SERIAL NUM    @Y30LB38*/
   DCL VEVOLUME CHAR(6);               /* VOL SER NUMBER     @Y30LB38*/
   DCL VEVVIERR BIT(1);                /* VVI ERROR FLAG     @Y30LB38*/
   DCL VERECFLG BIT(1);                /* RETAIN REC FLAG    @Y30LB38*/
   DCL VEVOLLOC CHAR(30);              /* VOL LOCATION       @Y30LB38*/
   DCL VEWTOMSG CHAR(72);              /* UWTO MSG AREA      @Y30LB38*/
     /* INVOKE LIST FORM OF MCLIST MACRO                     @Y30LB38*/
    ? ICBMCRT MF(L,MCLIST,BASED(MCLSTPTR));                /*@Y30LB38*/
   @EJECT;
     /* DECLARE WORK AREA FOR MC LIST AND EXTENSION LIST     @Y30LB38*/
   DCL VEMCLIST CHAR(LENGTH(MCLIST));                      /*@Y30LB38*/
   DCL VEEXLIST CHAR(LENGTH(MCRTE));                       /*@Y30LB38*/
     /* DECLARE WORK AREA FOR JOBNAME AND STEPNAME USED BY   @Y30LB38
        USYSINFO MACRO                                       @Y30LB38*/
   DCL 1 VESYSIN CHAR(16),
     2 VEJOBNAM CHAR(8),
     2 VESTEPNM CHAR(8);                                   /*@Y30LB38*/
     /* DECLARE ROUTING AND DESCRIPTOR CODE AREAS FOR UWTO   @Y30LB38*/
   DCL 1 VEROUTCD BIT(16),
     2 VECD1 BIT(1),
     2 * BIT(15);                                          /*@Y30LB38*/
   DCL 1 VEDESCCD BIT(16),
     2 * BIT(2),
     2 VEDESC3 BIT(1),
     2 * BIT(12);                                          /*@Y30LB38*/
     /* DECLARE WORK AREA FOR UDUMP MACRO                    @Y30LB38*/
   DCL VEDMPSTG CHAR(17);                                  /*@Y30LB38*/
     /* DECLARE STATIC MODULE ID FOR MESSAGES USED BY        @Y30LB38
        COMMON FSR'S                                         @Y30LB38*/
   DCL VECMOMSG CHAR(3) CONSTANT('CM0');                   /*@Y30LB38*/
   DCL MSG0085I PTR(8) CONSTANT(21);   /* MSG ENTRY NUMBER   @Y30LB38*/
   DCL MSG2084I PTR(8) CONSTANT(22);   /* MSG ENTRY NUMBER   @Y30LB38*/
   DCL MSG083E PTR(8) CONSTANT(23);    /* MSG ENTRY NUMBER   @Y30LB38*/
     /* VOLEXIT CONSTANTS                                    @Y30LB38*/
   DCL VEECBLEN FIXED(31) CONSTANT(4); /* LENGTH OF ECB      @Y30LB38*/
 @EJECT;
     /* SAVE RETURN ADDRESS AND INITIALIZE PARAMETER LISTS   @Y30LB38*/
   VERETADR = REG14;                                       /*@Y30LB38*/
   UTRACE = 'VESR';                                        /*@Y30LB38*/
   VELIST = ''B;                                           /*@Y30LB38*/
   VEDDSTRU = ADDR(VELIST);                                /*@Y30LB38*/
   MCLSTPTR = ADDR(VEMCLIST);                              /*@Y30LB38*/
   MCRTEPTR = ADDR(VEEXLIST);                              /*@Y30LB38*/
   VEWTOPTR = ADDR(VEWTOMSG);                              /*@Y30LB38*/
   MCLIST = ''B;                                           /*@Y30LB38*/
   MCRTE = ''B;                                            /*@Y30LB38*/
   VECOND = '0'X;                                          /*@Y30LB38*/
     /* INITIALIZE MCLIST FOR USSC MACRO                     @Y30LB38*/
   MCRLNGTH = MCRLEN;                                      /*@Y30LB38*/
   MCRTCSN = VECSN1;                                       /*@Y30LB38*/
   MCRTTRAN = ON;                                          /*@Y30LB38*/
   IF VERECFLG = ON THEN
     MCRREC = ON;                                          /*@Y30LB38*/
   MCRLOC = VEVOLLOC;                                      /*@Y30LB38*/
   MCRTVEXT = MCRTEPTR;                                    /*@Y30LB38*/
   MCRSPLOC = ON;                                          /*@Y30LB38*/
     /* TAKE UDUMP OF MOVE VOLUME PARAMETER LIST (MCLIST)    @Y30LB38*/
   ? DMPSTART LIST(VEDMPSTG);                              /*@Y30LB38*/
   ? DMPITEM NAME(MCLIST) LENGTH(LENGTH(MCLIST)) TYPE(H)
     ADDRESS(MCLSTPTR);                                    /*@Y30LB38*/
   ? DMPEND;                                               /*@Y30LB38*/
   UDUMP (GDTTBL,'VEBM',ADDR(VEDMPSTG));                   /*@Y30LB38*/
     /*  ISSUE USSC MACRO TO EJECT THE VOLUME                @Y30LB38*/
   USSC(GDTTBL,MOVE,MCLSTPTR,VERESNCD,VEECB,VEMSGPTR);     /*@Y30LB38*/
   USAVERC;                                                /*@Y30LB38*/
     /* SET UP ADDRESSABILITY TO MESSAGE AREA FROM USSC      @Y30LB38*/
   VEMSGPTR = VEMSGPTR+VEECBLEN;                           /*@Y30LB38*/
   @EJECT;                                                 /*@Y30LB38*/
     /*  IF CARTRIDGE WERE SUCCESSFULLY EJECTED; ISSUE THE   @Y30LB38
         APPROPRIATE MESSAGE                                 @Y30LB38*/
   IF TESTRC = LASTCC00  TESTRC = LASTCC12 THEN
     DO;                                                   /*@Y30LB38*/
     /*  IF AN ERROR OCCURRES UPDATING INVENTORY, SET A      @Y30LB38
         FLAG ON FOR THE CALLER                              @Y30LB38*/
       IF TESTRC = LASTCC12 THEN
         VEVVIERR = ON;                                    /*@Y30LB38*/
     /* ISSUE USYSINFO MACRO TO OBTAIN JOBNAME AND STEPNAME  @Y30LB38
        TO BE USED IN MESSAGE IDC083E                        @Y30LB38*/
       USYSINFO (GDTTBL,NAMES,ADDR(VESYSIN));              /*@Y30LB38*/
     /* INITIIALIZE DARGLIST WITH MULTIPLE INSERTS           @Y30LB38
        FOR MESSAGE IDC083E                                  @Y30LB38*/
       VEDDSTRU -> DARGSMOD = VECMOMSG;                    /*@Y30LB38*/
       VEDDSTRU -> DARGSENT = MSG083E;                     /*@Y30LB38*/
       VEDDSTRU -> DARGDBP =ADDR(VEMSGPTR->CMCSN1);        /*@Y30LB38*/
       VEDDSTRU -> DARGILP = LENGTH(CMCSN1);               /*@Y30LB38*/
       VEDDSTRU -> DARGRETP = VEWTOPTR;                    /*@Y30LB38*/
       VEDDSTRU -> DARGRETL = LENGTH(VEWTOMSG);            /*@Y30LB38*/
     /* IF BOTH CARTRIDGES WERE EJECTED, SET DARGLIST        @Y30LB38
        FOR FIVE INSERTS.  IF NOT USE FOUR INSERTS.          @Y30LB38
      IF FIVE INSERTS ARE USED, THEY WILL BE CSN1, CSN2,     @Y30LB38
       VOLUME SERIAL NUMBER, JOB NAME AND STEP NAME.         @Y30LB38
       IF FOUR INSERTS ARE USED CSN2 WILL BE OMMITTED.       @Y30LB38*/
       IF VEMSGPTR -> CMNUMCRT = 'F2'X THEN                /*@Y30LB38*/
         DO;                                               /*@Y30LB38*/
           VEDDSTRU -> DARGCNT = '4'X;                     /*@Y30LB38*/
           VEDDSTRU -> DARGINS(1) = '1'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(1)=LENGTH(CMCSN2);          /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(1) =ADDR(VEMSGPTR->CMCSN2); /*@Y30LB38*/
           VEDDSTRU -> DARGINS(2) = '2'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(2) = LENGTH(VEVOLUME);      /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(2) = ADDR(VEVOLUME);        /*@Y30LB38*/
           VEDDSTRU -> DARGINS(3) = '3'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(3) = LENGTH(VEJOBNAM);      /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(3) = ADDR(VEJOBNAM);        /*@Y30LB38*/
           VEDDSTRU -> DARGINS(4) = '4'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(4) = LENGTH(VESTEPNM);      /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(4) = ADDR(VESTEPNM);        /*@Y30LB38*/
         END;                                              /*@Y30LB38*/
       ELSE
         DO;                                               /*@Y30LB38*/
           VEDDSTRU -> DARGCNT = '3'X;                     /*@Y30LB38*/
           VEDDSTRU -> DARGINS(1) = '2'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(1) = LENGTH(VEVOLUME);      /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(1) = ADDR(VEVOLUME);        /*@Y30LB38*/
           VEDDSTRU -> DARGINS(2) = '3'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(2) = LENGTH(VEJOBNAM);      /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(2) = ADDR(VEJOBNAM);        /*@Y30LB38*/
           VEDDSTRU -> DARGINS(3) = '4'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(3) = LENGTH(VESTEPNM);      /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(3) = ADDR(VESTEPNM);        /*@Y30LB38*/
         END;                                              /*@Y30LB38*/
     /*  ISSUE UPRINT MACRO TO RETRIEVE MESSAGE IDC0083I     @Y30LB38*/
       UPRINT (GDTTBL,PRTFILE,VEDDSTRU);                   /*@Y30LB38*/
     /* SET MESSAGE LENGTH AND ROUTING AND DESCRIPTOR CODES  @Y30LB38
        FOR UWTO MACRO.  ISSUE UWTO MACRO TO WRITE MESSAGE
        IDC2083E TO THE SYSTEM OPERATOR.                     @Y30LB38*/
       VEWTOLEN = LENGTH(VEWTOMSG);                        /*@Y30LB38*/
       VEROUTCD = ''B;                                     /*@Y30LB38*/
       VECD1 = ON;                                         /*@Y30LB38*/
       VEDESCCD = ''B;                                     /*@Y30LB38*/
       VEDESC3 = ON;                                       /*@Y30LB38*/
       UWTO (GDTTBL,VEWTOLEN,VEWTOPTR,VEROUTCD,VEDESCCD);  /*@Y30LB38*/
   @EJECT;                                                 /*@Y30LB38*/
     /* TEST IF BOTH SERIAL NUMBERS WERE SPECIFIED?  IF      @Y30LB38
        YES, PUT BOTH CSN'S IN MESSAGE IDC0085I AND
        PRINT THE MESSAGE.  IF NO, USE ONLY THE FIRST CSN.   @Y30LB38*/
       VELIST = ''B;                                       /*@Y30LB38*/
       VEDDSTRU -> DARGSMOD = VECMOMSG;                    /*@Y30LB38*/
       VEDDSTRU -> DARGSENT = MSG0085I;                    /*@Y30LB38*/
       VEDDSTRU -> DARGDBP =ADDR(VEMSGPTR->CMCSN1);        /*@Y30LB38*/
       VEDDSTRU -> DARGILP = LENGTH(CMCSN1);               /*@Y30LB38*/
       IF VEMSGPTR -> CMNUMCRT = 'F2'X THEN                /*@Y30LB38*/
         DO;                                               /*@Y30LB38*/
           VEDDSTRU -> DARGCNT = '1'X;                     /*@Y30LB38*/
           VEDDSTRU -> DARGINS(1) = '1'X;                  /*@Y30LB38*/
           VEDDSTRU -> DARGINL(1)=LENGTH(CMCSN2);          /*@Y30LB38*/
           VEDDSTRU -> DARGDTM(1) =ADDR(VEMSGPTR->CMCSN2); /*@Y30LB38*/
         END;                                              /*@Y30LB38*/
       UPRINT (GDTTBL,PRTFILE,VEDDSTRU);                   /*@Y30LB38*/
     /* ISSUE UFSPACE MACRO TO FREE MESSAGE AREA SPACE       @Y30LB38
        FROM THE USSC MACRO                                  @Y30LB38*/
       VEMSGPTR = VEMSGPTR-VEECBLEN;                      /*@Y30LB38*/
       UFSPACE (GDTTBL,VEMSGPTR);                          /*@Y30LB38*/
     END;                                                  /*@Y30LB38*/
   @EJECT;                                                 /*@Y30LB38*/
   ELSE
     DO;                                                   /*@Y30LB38*/
     /* THE RETURN CODE FROM THE USSC MACRO WAS NOT 0 OR 12. @Y30LB38
        A RETURN CODE OF 8 IS CHECKED TO DETERMINE IF USSC
        COULD NOT GET STORAGE.  IF YES, MESSAGE IDC2084I
        IS WRITTEN AND RETURN TO CALLER WITH CONDITION
        CODE 4.                                              @Y30LB38*/
       IF TESTRC = LASTCC08 THEN
         DO;                                               /*@Y30LB38*/
           VELIST = ''B;                                   /*@Y30LB38*/
           VEDDSTRU -> DARGSMOD = VECMOMSG;                /*@Y30LB38*/
           VEDDSTRU -> DARGSENT = MSG2084I;                /*@Y30LB38*/
           UPRINT (GDTTBL,PRTFILE,VEDDSTRU);               /*@Y30LB38*/
           VECOND = LASTCC04;                              /*@Y30LB38*/
         END;                                              /*@Y30LB38*/
       ELSE
         DO;                                               /*@Y30LB38*/
     /* IF THE RETURN CODE WAS NOT 8, TEST IF THE REASON     @Y30LB38
        CODE WAS '4C'X INDICATING THAT THE FIRST CARTRIDGE
        WAS EJECTED BUT THE SECOND WAS NOT.  IF YES,
        ISSUE UPRINT AND UWTO MACROS TO WRITE MESSAGE
        IDC083E TO THE SYSTEM OPERATOR AND ISSUE UPRINT
        MACRO TO WRITE MESSAGE IDC0085I TO THE USER.         @Y30LB38
        ISSUE USYSINFO MACRO TO OBTAIN JOBNAME AND STEPNAME  @Y30LB38
        TO BE USED IN MESSAGE IDC083E                        @Y30LB38*/
           IF VERESNCD = '4C'X THEN
             DO;                                           /*@Y30LB38*/
               USYSINFO (GDTTBL,NAMES,ADDR(VESYSIN));      /*@Y30LB38*/
               VEDDSTRU -> DARGSMOD = VECMOMSG;            /*@Y30LB38*/
               VEDDSTRU -> DARGSENT = MSG083E;             /*@Y30LB38*/
               VEDDSTRU -> DARGDBP=ADDR(VECSN1);           /*@Y30LB38*/
               VEDDSTRU ->DARGILP=LENGTH(VECSN1);          /*@Y30LB38*/
               VEDDSTRU -> DARGRETP = VEWTOPTR;            /*@Y30LB38*/
               VEDDSTRU -> DARGRETL = LENGTH(VEWTOMSG);    /*@Y30LB38*/
               VEDDSTRU -> DARGCNT = '3'X;                 /*@Y30LB38*/
               VEDDSTRU -> DARGINS(1) = '2'X;              /*@Y30LB38*/
               VEDDSTRU -> DARGINL(1) = LENGTH(VEVOLUME);  /*@Y30LB38*/
               VEDDSTRU -> DARGDTM(1) = ADDR(VEVOLUME);    /*@Y30LB38*/
               VEDDSTRU -> DARGINS(2) = '3'X;              /*@Y30LB38*/
               VEDDSTRU -> DARGINL(2) = LENGTH(VEJOBNAM);  /*@Y30LB38*/
               VEDDSTRU -> DARGDTM(2) = ADDR(VEJOBNAM);    /*@Y30LB38*/
               VEDDSTRU -> DARGINS(3) = '4'X;              /*@Y30LB38*/
               VEDDSTRU -> DARGINL(3) = LENGTH(VESTEPNM);  /*@Y30LB38*/
               VEDDSTRU -> DARGDTM(3) = ADDR(VESTEPNM);    /*@Y30LB38*/
               UPRINT (GDTTBL,PRTFILE,VEDDSTRU);           /*@Y30LB38*/
     /* SET MESSAGE LENGTH AND ROUTING AND DESCRIPTOR CODES  @Y30LB38
        FOR UWTO MACRO.  ISSUE UWTO MACRO TO WRITE MESSAGE
        IDC083E TO THE SYSTEM OPERATOR.                      @Y30LB38*/
               VEWTOLEN = LENGTH(VEWTOMSG);                /*@Y30LB38*/
               VEROUTCD = ''B;                             /*@Y30LB38*/
               VECD1 = ON;                                 /*@Y30LB38*/
               VEDESCCD = ''B;                             /*@Y30LB38*/
               VEDESC3 = ON;                               /*@Y30LB38*/
          UWTO(GDTTBL,VEWTOLEN,VEWTOPTR,VEROUTCD,VEDESCCD);/*@Y30LB38*/
     /* ISSUE UPRINT MACRO TO PRINT MESSAGE IDC0085I         @Y30LB38*/
               VELIST = ''B;                               /*@Y30LB38*/
               VEDDSTRU -> DARGSMOD = VECMOMSG;            /*@Y30LB38*/
               VEDDSTRU -> DARGSENT = MSG0085I;            /*@Y30LB38*/
               VEDDSTRU -> DARGDBP =ADDR(VECSN1);          /*@Y30LB38*/
               VEDDSTRU ->DARGILP=LENGTH(VECSN1);          /*@Y30LB38*/
               UPRINT (GDTTBL,PRTFILE,VEDDSTRU);           /*@Y30LB38*/
     /* THE SSCMSG ROUTINE IS CALLED TO WRITE THE MSS        @Y30LB38
        MESSAGE EXPLAINING THE SECOND CARTRIDGE
        WAS NOT EJECTED.                                     @Y30LB38*/
               CALL SSCMSG(VERESNCD);                      /*@Y30LB38*/
               VECOND = LASTCC08;                          /*@Y30LB38*/
             END;                                          /*@Y30LB38*/
   @EJECT;
           ELSE
             DO;                                           /*@Y30LB38*/
     /* RETURN CODE FROM USSC IS 4 INDICATING THAT           @Y30LB38
        THE CARTRIDGES WERE NOT EJECTED.  THE SSCMSG
        ROUTINE IS CALLED TO WRITE THE MSS MESSAGE
        EXPLAINING THE ERROR.  MESSAGE IDC2048I IS
        WRITTEN TO THE USER WITH THE UPRINT MACRO.           @Y30LB38*/
               CALL SSCMSG(VERESNCD);                      /*@Y30LB38*/
               VEDDSTRU -> DARGSMOD = VECMOMSG;            /*@Y30LB38*/
               VEDDSTRU -> DARGSENT = MSG2084I;            /*@Y30LB38*/
               UPRINT (GDTTBL,PRTFILE,VEDDSTRU);           /*@Y30LB38*/
               VECOND = LASTCC04;                          /*@Y30LB38*/
             END;                                          /*@Y30LB38*/
         END;                                              /*@Y30LB38*/
     END;                                                  /*@Y30LB38*/
     /* RESTORE RETURN ADDRESS AND RETURN TO CALLER          @Y30LB38*/
   REG14 = VERETADR;                                       /*@Y30LB38*/
   RETURN CODE(VECOND);                                    /*@Y30LB38*/
 END VOLEXIT;                                              /*@Y30LB38*/
./ ADD NAME=IDCDF52
 /***********************************************************@Y30LB39*/
 /* PROCEDURE NAME - SSCMSG                                  @Y30LB39*/
 /*                                                          @Y30LB39*/
 /* FUNCTION - THIS ROUTINE PRINTS MESSAGES                  @Y30LB39*/
 /*   FROM IDCTSSS0 OR IDCTSCM0 AS DICTATED BY THE MSSC      @Y30LB39*/
 /*   REASON CODE OR THE ECB POST CODE, EITHER ONE PASSED AS @Y30LB39*/
 /*   INPUT ARGUMENTS.                                       @Y30LB39*/
 /*                                                          @Y30LB39*/
 /*   THE REASON CODE IS PASSED TO THIS ROUTINE FROM THE     @Y30LB39*/
 /*   CALLER IN SSRCODE, AND THE ECB POST CODE IS PASSED     @Y30LB39*/
 /*   IN SSECBCD.                                            @Y30LB39*/
 /*                                                          @Y30LB39*/
 /*   ONLY ONE MESSAGE IS PRINTED. IF THE REASON CODE        @Y30LB39*/
 /*   CONTAINS A NUMBER GREATER THAN ZERO, IT IS USED AS     @Y30LB39*/
 /*   THE INDICATION TO CALL UPRINT TO READ IN THE FIRST     @Y30LB39*/
 /*   STATIC TEXT ENTRY FROM IDCTSSS0.  THAT ENTRY CONTAINS  @Y30LB39*/
 /*   AN ARRAY OF THE MESSAGE INDICES USED TO PRINT THE      @Y30LB39*/
 /*   MSSC REASON CODE MESSAGE. THE ARRAY IS SCANNED FOR THE @Y30LB39*/
 /*   REASON CODE THAT WAS PASSED AS THE FIRST PARAMETER.    @Y30LB39*/
 /*   IF THE ARRAY CONTAINS AN ENTRY WITH THAT VALUE, THE    @Y30LB39*/
 /*   ARRAY INDEX IS USED TO PRINT THE MESSAGE.  IF THE      @Y30LB39*/
 /*   REASON CODE IS NOT FOUND IN THE ARRAY, THE REASON      @Y30LB39*/
 /*   CODE IS USED AS BLOCK DATA WHEN PRINTING THE "LAST"    @Y30LB39*/
 /*   STATIC TEXT ENTRY IN THE TEXT MODULE.                  @Y30LB39*/
 /*                                                          @Y30LB39*/
 /*   IF THE REASON CODE FIELD IS ZERO, THE ECB POST CODE    @Y30LB39*/
 /*   IS INSERTED AS BLOCK DATA INTO A GENERAL MESSAGE IN    @Y30LB39*/
 /*   STATIC TEXT MODULE IDCTSCM0.                           @Y30LB39*/
 /*                                                          @Y30LB39*/
 /* INPUT - REASON CODE AS FIRST ARGUMENT, OPTIONALLY THE    @Y30LB39*/
 /*         ECB CODE AS THE SECOND ARGUMENT.                 @Y30LB39*/
 /*                                                          @Y30LB39*/
 /* OUTPUT - PRINTED MESSAGE AND RETURN CODE OF ZERO.        @Y30LB39*/
 /*                                                          @Y30LB39*/
 /***********************************************************@Y30LB39*/
                                                           /*@Y30LB39*/
 SSCMSG: PROCEDURE(SSRCODE,            /* SSC RETURN CODE    @Y30LB39*/
                   SSECBCD);           /* ECB POST CODE      @Y30LB39*/
                                                           /*@Y30LB39*/
 @EJECT;                                                   /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  DECLARATIONS FOR THE SSCMSG PROCEDURE           @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE NEXT TWO DECLARES ARE FOR THE TWO INPUT     @Y30LB39*/
         /*  ARGUMENTS. 1ST - MSSC REASON CODE OR            @Y30LB39*/
         /*  2ND - MSSC POST CODE                            @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DCL 1 SSRCODE FIXED(31),                          /*@Y30LB39*/
               3 * FIXED(15),                              /*@Y30LB39*/
               3 SSRHALF FIXED(15);    /*1ST ARG REASON CODE @Y30LB39*/
         DCL SSECBCD PTR(8);           /*2ND ARG POST CODE   @Y30LB39*/
                                                           /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  DECLARE THE DYNAMIC AREA NEEDED TO POINT TO AND @Y30LB39*/
         /*  CONTAIN THE "LOCAL" PRINT ARGUMENT LIST         @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DCL SSDLPTR PTR(31);                              /*@Y30LB39*/
         DCL SSDRGLT CHAR(LENGTH(DARGLIST));               /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE NEXT DECLARE IS FOR THE INDEX WHICH IS      @Y30LB39*/
         /*  INCREMENTED WHILE SEARCHING THE ARRAY OF        @Y30LB39*/
         /*  REASON CODES AND, UPON FINDING THE CORRECT      @Y30LB39*/
         /*  REASON CODE, IS PASSED TO PRINT MODULE AS THE   @Y30LB39*/
         /*  INDEX OF THE MESSAGE NUMBER TO BE PRINTED.      @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DECLARE ENTRYNUM FIXED(8) UNSIGNED;               /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE NEXT DECLARE IS FOR THE COMMON MESSAGE      @Y30LB39*/
         /*  NUMBER TO IDENTIFY THE ECB POST CODE            @Y30LB39*/
         /*  MESSAGE CONTAINED IN STATIC TEXT MODULE         @Y30LB39*/
         /*  IDCTSCM0.                                       @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DECLARE SSMSGNUM FIXED(8) STATIC LOCAL INIT(56);  /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE NEXT DECLARE IS FOR THE ARRAY WHICH IS      @Y30LB39*/
         /*  SEARCHED FOR THE REASON CODE CORRESPONDING      @Y30LB39*/
         /*  TO THE MESSAGE INDEX AND ULTIMATELY, THE        @Y30LB39*/
         /*  MESSAGE TEXT TO BE PRINTED TO THE USER TELLING  @Y30LB39*/
         /*  HIM OF THE EXACT REASON FOR THE MSSC FAILURE.   @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DECLARE 1 SSINXLST BDY(WORD),                     /*@Y30LB39*/
                   3 SSARRAY (60) FIXED(15);               /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE NEXT DECLARATION IS FOR THE MESSAGE ID      @Y30LB39*/
         /*  USED BY THE STATIC TEXT MODULE - IDCTSSS0.      @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DECLARE SSMODSS0 CHAR(3) STATIC INIT('SS0');      /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE NEXT DECLARATION IS FOR THE MESSAGE ID      @Y30LB39*/
         /*  USED BY THE STATIC TEXT MODULE - IDCTSCMO.      @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         DECLARE SSMODCM0 CHAR(3) STATIC INIT('CM0');      /*@Y30LB39*/
                                                           /*@Y30LB39*/
 @EJECT;                                                   /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*  ISSUE UTRACE MACRO TO PROVIDE A TRACK OF FLOW   @Y30LB39*/
         /*  ON CONTROL WITHIN THE SSMSG MODULE.             @Y30LB39*/
         /*  THIS WILL PLACE THE IDENTIFIER SPECIFIED IN     @Y30LB39*/
         /*  A SEPARATE INTRA-MODULE TRACE TABLE.            @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         UTRACE = 'SSAA';                                  /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  ESTABLISH ADDRESSABILITY TO THE DYNAMIC         @Y30LB39*/
         /*  ARGUMENT LIST.                                  @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         SSDLPTR = ADDR(SSDRGLT);                          /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  IF THE REASON CODE IS NOT ZERO, READ IN THE     @Y30LB39*/
         /*  ARRAY FROM THE STATIC TEXT MODULE - IDCTSSS0.   @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         IF SSRCODE > 0 THEN
           DO;                                             /*@Y30LB39*/
                                                           /*@Y30LB39*/
             /********************************************************/
             /*                                              @Y30LB39*/
             /*  CLEAR THE DYNAMIC ARGUMENT LIST AND         @Y30LB39*/
             /*  INITIALIZE THE PRINT ARGUMENT LIST TO READ  @Y30LB39*/
             /*  IN THE ARRAY WHICH CONTAINS THE MSSC REASON @Y30LB39*/
             /*  CODES.                                      @Y30LB39*/
             /*                                              @Y30LB39*/
             /********************************************************/
                                                           /*@Y30LB39*/
             SSDRGLT = NULLAREA;                           /*@Y30LB39*/
             SSDLPTR -> DARGRETP = ADDR(SSINXLST);         /*@Y30LB39*/
             SSDLPTR -> DARGSMOD = SSMODSS0;               /*@Y30LB39*/
             SSDLPTR -> DARGSENT = 1;                      /*@Y30LB39*/
             SSDLPTR -> DARGRETL = LENGTH(SSINXLST);       /*@Y30LB39*/
                                                           /*@Y30LB39*/
             /********************************************************/
             /*                                              @Y30LB39*/
             /*  ISSUE UPRINT MACRO TO READ IN THE SEARCH    @Y30LB39*/
             /*  ARRAY.                                      @Y30LB39*/
             /*                                              @Y30LB39*/
             /********************************************************/
                                                           /*@Y30LB39*/
             UPRINT (GDTTBL,PRTFILE,SSDLPTR);              /*@Y30LB39*/
                                                           /*@Y30LB39*/
             /********************************************************/
             /*                                              @Y30LB39*/
             /*  BEGIN DO LOOP TO SEARCH FOR THE MESSAGE     @Y30LB39*/
             /*  INDEX CORRESPONDING TO THE REASON CODE      @Y30LB39*/
             /*  PASSED AS THE FIRST ARGUMENT.               @Y30LB39*/
             /*  THE DO LOOP BEGINS WITH THE SECOND ARRAY    @Y30LB39*/
             /*  ENTRY SINCE THE FIRST IS REQUIRED BY THE    @Y30LB39*/
             /*  SEARCH ARRAY ITSELF.                        @Y30LB39*/
             /*  THE SEARCH CONTINUES UNTIL THE REASON CODE  @Y30LB39*/
             /*  IS FOUND, AT WHICH TIME THE SEARCH INDEX    @Y30LB39*/
             /*  IS PASSED TO THE PRINT MODULE TO PRINT      @Y30LB39*/
             /*  THE MESSAGE ASSOCIATED WITH THAT PARTICULAR @Y30LB39*/
             /*  REASON CODE.                                @Y30LB39*/
             /*  IF THERE IS NO MATCH FOUND IN THE ARRAY,    @Y30LB39*/
             /*  THEN THE INDEX WILL BE THE LAST POSITION IN @Y30LB39*/
             /*  ARRAY.  THIS WILL BE THE INDICATION THAT    @Y30LB39*/
             /*  THE REASON CODE ITSELF SHOULD BE PRINTED.   @Y30LB39*/
             /*                                              @Y30LB39*/
             /********************************************************/
                                                           /*@Y30LB39*/
             ENTRYNUM = 1;                                 /*@Y30LB39*/
             DO UNTIL (SSRHALF=SSARRAY(ENTRYNUM)SSARRAY(ENTRYNUM)=0);
               ENTRYNUM = ENTRYNUM + 1;                    /*@Y30LB39*/
             END;                                          /*@Y30LB39*/
                                                           /*@Y30LB39*/
             /********************************************************/
             /*                                              @Y30LB39*/
             /*  THE CORRECT INDEX HAS BEEN FOUND            @Y30LB39*/
             /*                                              @Y30LB39*/
             /*  CLEAR THE DYNAMIC ARGUMENT LIST AND FILL    @Y30LB39*/
             /*  OUT THE PRINT ARGUMENT FIELDS WITH EITHER:  @Y30LB39*/
             /*    1) THE INDEX CORRESPONDING TO THE REASON  @Y30LB39*/
             /*       CODE OR                                @Y30LB39*/
             /*    2) THE LAST INDEX AND THE REASON CODE     @Y30LB39*/
             /*       ITSELF AS A STATIC TEXT INSERT.        @Y30LB39*/
             /*                                              @Y30LB39*/
             /********************************************************/
                                                           /*@Y30LB39*/
             SSDRGLT = NULLAREA;                           /*@Y30LB39*/
             SSDLPTR -> DARGSMOD = SSMODSS0;               /*@Y30LB39*/
             SSDLPTR -> DARGSENT = ENTRYNUM;               /*@Y30LB39*/
             IF SSARRAY(ENTRYNUM) = 0 THEN                 /*@Y30LB39*/
               DO;                                         /*@Y30LB39*/
                 SSDLPTR -> DARGDBP = ADDR(SSRCODE);       /*@Y30LB39*/
                 SSDLPTR -> DARGILP = LENGTH(SSRCODE);     /*@Y30LB39*/
               END;                                        /*@Y30LB39*/
           END;                                            /*@Y30LB39*/
 @EJECT;                                                   /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  THE FIRST ARGUMENT WAS ZERO, INDICATING THAT    @Y30LB39*/
         /*  THIS ROUTINE IS TO PRINT OUT THE ECB POST       @Y30LB39*/
         /*  CODE.  THEREFORE, CLEAR THE DYNAMIC ARGUMENT    @Y30LB39*/
         /*  LIST AND FILL OUT THE PRINT ARGUMENT FIELDS     @Y30LB39*/
         /*  SO THE STATIC TEXT MODULE, IDCTSCM0, WILL       @Y30LB39*/
         /*  PRINT OUT THE MESSAGE ASSOCIATED WITH THE       @Y30LB39*/
         /*  POST CODE.                                      @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         ELSE                                              /*@Y30LB39*/
           DO;                                             /*@Y30LB39*/
             SSDRGLT = NULLAREA;                           /*@Y30LB39*/
             SSDLPTR -> DARGSMOD = SSMODCM0;               /*@Y30LB39*/
             SSDLPTR -> DARGSENT = SSMSGNUM;               /*@Y30LB39*/
             SSDLPTR -> DARGDBP = ADDR(SSECBCD);           /*@Y30LB39*/
             SSDLPTR -> DARGILP = LENGTH(SSECBCD);         /*@Y30LB39*/
           END;                                            /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  ISSUE UPRINT MACRO TO PRINT THE REASON          @Y30LB39*/
         /*  CODE MESSAGE OR THE ECB POST CODE MESSAGE.      @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
         UPRINT (GDTTBL,PRTFILE,SSDLPTR);                  /*@Y30LB39*/
                                                           /*@Y30LB39*/
         /************************************************************/
         /*                                                  @Y30LB39*/
         /*  RETURN TO CALLER WITH A RETURN CODE OF ZERO     @Y30LB39*/
         /*                                                  @Y30LB39*/
         /************************************************************/
                                                           /*@Y30LB39*/
                                                           /*@Y30LB39*/
         RETURN CODE(0);                                   /*@Y30LB39*/
                                                           /*@Y30LB39*/
         END SSCMSG;                                       /*@Y30LB39*/
./ ADD NAME=IDCDF53
 /********************************************************************/
 /*                                                          @Y30LB11*/
 /* PROCEDURE NAME - SCRCOPY                                 @Y30LB11*/
 /*                                                          @Y30LB11*/
 /* FUNCTION - THE PRINCIPLE FUNCTION OF THIS ROUTINE IS TO  @Y30LB11*/
 /*            SCRATCH AN MSS COPY VOLUME.                   @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*            IDC0088I CARTRIDGES CSN (CSN) SCRATCHED FOR   @Y30LB11*/
 /*            COPY YYDDD.                                   @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*            IDC0098I ** LOCATION OF VOLUME: (LOCATION)    @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*            IDC2076I ** CART CSN (CSN) NOT IN MSF FOR     @Y30LB11*/
 /*            COPY YYDDD.                                   @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*            IDC2087I ** CART CSN (CSN) NOT SCRATCHED FOR  @Y30LB11*/
 /*            COPY YYDDD.                                   @Y30LB11*/
 /*                                                          @Y30LB11*/
 /* INPUT - A PARAMETER CONSISTING OF A SINGLE BYTE.  THE    @Y30LB11*/
 /*         FIRST BIT OF THE BYTE IS SET TO '1' BY SCRCOPY   @Y30LB11*/
 /*         AN ERROR OCCURS UPDATING THE INVENTORY.          @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*         THE COPY RECORD MUST HAVE BEEN READ AND THE      @Y30LB11*/
 /*         COPYV MAPPING MACRO BASED ON THE RECORD PRIOR TO @Y30LB11*/
 /*         THE CALL TO SCRCOPY.   FURTHER, THE DEFLIST      @Y30LB11*/
 /*         MUST HAVE BEEN INCLUDED PRIOR TO THE CALL TO     @Y30LB11*/
 /*         SCRCOPY.                                         @Y30LB11*/
 /*                                                          @Y30LB11*/
 /* OUTPUT - FIRST BIT OF INPUT BYTE SET IF INVENTORY ERROR. @Y30LB11*/
 /*          RETURN CODE IN REGISTER 15                      @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*          0 - CARTRIDGE OR CARTRIDGES FOR COPY VOLUME     @Y30LB11*/
 /*              SCRATCHED SUCCESSFULLY.                     @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*          4 - CARTRIDGES NOT IN LIBRARY, OR DSM FAILURE   @Y30LB11*/
 /*              OCCURRED.                                   @Y30LB11*/
 /*                                                          @Y30LB11*/
 /*          8 - USSC UMACRO COULD NOT OBTAIN STORAGE        @Y30LB11*/
 /*              FOR ECB/MESSAGE AREA.                       @Y30LB11*/
 /*                                                          @Y30LB11*/
 /********************************************************************/

 SCRCOPY:                                                  /*@Y30LB11*/
    PROCEDURE(SCINPUT);                                    /*@Y30LB11*/
    DCL SCCMPTR PTR(31);            /* PTR TO ECB/MSG AREA   @Y30LB11*/
    DCL SCECBCD FIXED(8);           /* SCRCOPY ECB CODE      @Y30LB11*/
    DCL SCRCOND FIXED(15);          /* SCRCOPY COND CODE     @Y30LB11*/
    DCL SCMSGCD PTR(31);            /* SSCMSG REASON CODE    @Y30LB11*/
    DCL SCMSGPTR PTR(31);           /* MESSAGE AREA POINTER  @Y30LB11*/
    DCL SCDEFLST CHAR(LENGTH(DEFLIST));/* SCRCOPY DEFLIST    @Y30LB11*/
    DCL SCDEFPTR PTR(31);           /* DEFLIST POINTER       @Y30LB11*/
    DCL SCDDSTRU PTR(31);           /* DARGLIST POINTER      @Y30LB11*/
                            /* DARGLIST WITH UP TO 3 INSERTS @Y30LB11*/
    DCL SCDARG CHAR(LENGTH(DARGLIST)+2*(LENGTH(DARGARY))); /*@Y30LB11*/

    DCL 1 SCINPUT BIT(8),           /* PARAMETER LIST        @Y30LB11*/
      2 SCERRFLG BIT(1),            /* RETURNED FLAG         @Y30LB11*/
      2 * BIT(7);                   /* UNUSED                @Y30LB11*/

    /* CONSTANT SECTION DECLARATIONS FOR SCRCOPY             @Y30LB11*/

    DCL 1 SCBLANKS CHAR(30) STATIC LOCAL,/* BLANK FIELD      @Y30LB11*/
      2 * (30) CHAR(1) INIT((30)'40'X);                    /*@Y30LB11*/

    DCL SCCSN2# FIXED(15) CONSTANT(1);/* CSN2 INSERT         @Y30LB11*/
    DCL SCDATE# FIXED(15) CONSTANT(2);/* DATE INSERT         @Y30LB11*/
    DCL SCECBLEN FIXED(15) CONSTANT(4);/* ECB LENGTH         @Y30LB11*/
    DCL SCNOCSNS BIT(8) CONSTANT('23'X);/* NEITHER CSN FOUND @Y30LB11*/
    DCL SCNOCSN1 BIT(8) CONSTANT('26'X);/* CSN1 NOT FOUND    @Y30LB11*/
    DCL SCNOCSN2 BIT(8) CONSTANT('2A'X);/* CSN2 NOT FOUND    @Y30LB11*/
    DCL SCCOMMSG CHAR(3) CONSTANT('CM0');/* STATIC TEST MOD  @Y30LB11*/
    DCL SCM0088I PTR(8) CONSTANT(18);/* CARTS SCRATCHED      @Y30LB11*/
    DCL SCM0098I PTR(8) CONSTANT(2);/* LOCATION OF VOLUME    @Y30LB11*/
    DCL SCM2076I PTR(8) CONSTANT(30);/* CART NOT SCRATCHED   @Y30LB11*/
    DCL SCM2087I PTR(8) CONSTANT(19);/* CARTS NOT IN LIBRARY @Y30LB11*/
 @EJECT;                                                   /*@Y30LB11*/

    /* TRACE AT ENTRY TO SCRCOPY PROCEDURE                   @Y30LB11*/

    UTRACE='SCSC';                                         /*@Y30LB11*/

    /* INITIALIZATION CONSISTS OF ZEROING THE RETURN CODE, ZEROING
       THE DEFLIST, AND THE PRINT ARGUMENT LIST.             @Y30LB11*/

    SCRCOND=0;                                             /*@Y30LB11*/

    SCDDSTRU=ADDR(SCDARG);                                 /*@Y30LB11*/
    SCDEFPTR=ADDR(SCDEFLST);                               /*@Y30LB11*/
    SCDEFLST=NULLAREA;                                     /*@Y30LB11*/
    SCDARG=NULLAREA;                                       /*@Y30LB11*/
    SCDDSTRU->DARGSMOD=SCCOMMSG;/* COMMON MESSAGE MODULE     @Y30LB11*/

    /* INDICATE AN INACTIVE VOLUME IS TO BE SCRATCHED AND PICK
       UP THE CSN1 FROM THE COPY RECORD.                     @Y30LB11*/

    SCDEFPTR->DEFVELTR=ON;                                 /*@Y30LB11*/
    SCDEFPTR->DEFVCSN1=COPCSN1;                            /*@Y30LB11*/

    /* FULL REGION DUMP BEFORE EXECUTING THE ICBDEFV MACRO.  @Y30LB11*/

    UDUMP(GDTTBL,'SCDF');                                  /*@Y30LB11*/

    /* THE USSC MACRO IS ISSUED TO EXECUTE THE ICBDEFV MACRO @Y30LB11
       TO SCRATCH THE COPY.                                  @Y30LB11*/

    USSC(GDTTBL,DEFINE,SCDEFPTR,SCMSGCD,SCECBCD,SCMSGPTR); /*@Y30LB11*/
    USAVERC;                                               /*@Y30LB11*/

 @EJECT;                                                   /*@Y30LB11*/
    /* A RETURN CODE OF 0 OR 12 INDICATES THAT THE MACRO WAS EXECUTED
       SUCCESSFULLY.                                         @Y30LB11*/

    IF TESTRC=RCOKTESTRC=RCVVIERR THEN                    /*@Y30LB11*/
      DO;                                                  /*@Y30LB11*/

        /* IF A RETURN CODE OF 12 IS PASSED, SCERRFLG IS SET ON
           TO INDICATE THAT THE INVENTORY RECORD WAS NOT UPDATED.
                                                             @Y30LB11*/

        IF TESTRC=RCVVIERR THEN                            /*@Y30LB11*/
          SCERRFLG=ON;                                     /*@Y30LB11*/

        /* THE MESSAGE: CARTRIDGES CSN (CSN) SCRATCHED FOR COPY YYDDD,
           IS ISSUED.                                        @Y30LB11*/

        SCCMPTR=SCMSGPTR+SCECBLEN;                         /*@Y30LB11*/
        SCDDSTRU->DARGSENT=SCM0088I;                       /*@Y30LB11*/
        SCDDSTRU->DARGDBP=ADDR(SCCMPTR->CMCSN1);           /*@Y30LB11*/
        SCDDSTRU->DARGILP=LENGTH(CMCSN1);                  /*@Y30LB11*/
        SCDDSTRU->DARGCNT=2;                               /*@Y30LB11*/
        SCDDSTRU->DARGINS(1)=SCCSN2#;                      /*@Y30LB11*/
        SCDDSTRU->DARGINL(1)=LENGTH(CMCSN2);               /*@Y30LB11*/
        SCDDSTRU->DARGDTM(1)=ADDR(SCCMPTR->CMCSN2);        /*@Y30LB11*/
        SCDDSTRU->DARGINS(2)=SCDATE#;                      /*@Y30LB11*/
        SCDDSTRU->DARGINL(2)=LENGTH(COPDATE);              /*@Y30LB11*/
        SCDDSTRU->DARGDTM(2)=ADDR(COPDATE);                /*@Y30LB11*/
        UPRINT(GDTTBL,PRTFILE,SCDDSTRU);                   /*@Y30LB11*/

        /* BECAUSE THE MESSAGE AREA POINTER IS SET, AND THE ICBDEFV
           MACRO IS SUCCESSFUL, THE UFSPACE IS ISSUED TO FREE THE
           ECB/MESSAGE AREA GOTTEN BY THE ICBDEFV MACRO.     @Y30LB11*/

        UFSPACE(GDTTBL,SCMSGPTR);                          /*@Y30LB11*/
      END;                                                 /*@Y30LB11*/

 @EJECT;                                                   /*@Y30LB11*/
    /* A RETURN CODE OF 4 OR 8 INDICATES THAT THE MACRO WAS NOT
       EXECUTED SUCCESSFULLY.                                @Y30LB11*/

    ELSE                                                   /*@Y30LB11*/
      DO;                                                  /*@Y30LB11*/

          /* A RETURN CODE OF 8 FROM THE ICBDEFV MACRO INDICATES
             THAT NO CORE WAS AVAILABLE FOR THE ECB/MESSAGE AREA.
             THE MESSAGE: ** CART CSN (CSN) NOT SCRATCHED COPY
             YYDDD, IS ISSUED AND THE RETURN CODE IS SET TO 8.
                                                             @Y30LB11*/

        IF TESTRC=RCNOCOR THEN                             /*@Y30LB11*/
          DO;                                              /*@Y30LB11*/
            SCDDSTRU->DARGSENT=SCM2087I;                   /*@Y30LB11*/
            SCDDSTRU->DARGDBP=ADDR(COPCSN1);               /*@Y30LB11*/
            SCDDSTRU->DARGILP=LENGTH(COPCSN1);             /*@Y30LB11*/
            SCDDSTRU->DARGCNT=2;                           /*@Y30LB11*/
            SCDDSTRU->DARGINS(1)=SCCSN2#;                  /*@Y30LB11*/
            SCDDSTRU->DARGINL(1)=LENGTH(COPCSN2);          /*@Y30LB11*/
            SCDDSTRU->DARGDTM(1)=ADDR(COPCSN2);            /*@Y30LB11*/
            SCDDSTRU->DARGINS(2)=SCDATE#;                  /*@Y30LB11*/
            SCDDSTRU->DARGINL(2)=LENGTH(COPDATE);          /*@Y30LB11*/
            SCDDSTRU->DARGDTM(2)=ADDR(COPDATE);            /*@Y30LB11*/
            UPRINT(GDTTBL,PRTFILE,SCDDSTRU);               /*@Y30LB11*/

            /* SET THE RETURN CODE TO 8 INDICATING THAT THE USSC
               UMACRO COULD NOT OBTAIN STORAGE FOR THE ECB/MESSAGE
               AREA.                                         @Y30LB11*/

            SCRCOND=RCNOCOR;                               /*@Y30LB11*/
          END;                                             /*@Y30LB11*/

        /* A RETURN CODE OF 4 INDICATES THAT THE ICBDEFV MACRO WAS
           EXECUTED, BUT FAILED.                             @Y30LB11*/

        ELSE                                               /*@Y30LB11*/
          DO;                                              /*@Y30LB11*/

          /* THE SSCMSG ROUTINE IS CALLED TO PRINT COMMON MESSAGES
             FROM IDCTSSS0 AND IDCTSSS1 AS DIRECTED BY THE REASON
             CODE PASSED BACK FROM THE ICBDEFV MACRO.        @Y30LB11*/

            CALL SSCMSG(SCMSGCD);                          /*@Y30LB11*/

            /* IF EITHER OR BOTH CARTRIDGES ARE NOT IN THE MSF
             A MESSAGE INDICATING THAT SITUATION IS PRINTED. @Y30LB11*/

            IF SCMSGCD=SCNOCSN1                           /*@Y30LB11*/
               SCMSGCD=SCNOCSN2                           /*@Y30LB11*/
               SCMSGCD=SCNOCSNS THEN                       /*@Y30LB11*/
              DO;                                          /*@Y30LB11*/

                /* SET UP TO ISSUE MESSAGE THAT CARTS ARE OUT
.                  OF THE MSF.                               @Y30LB11*/

                SCDDSTRU->DARGSENT=SCM2076I;               /*@Y30LB11*/

                /* INSERT COPYDATE FROM COPY RECORD          @Y30LB11*/

                SCDDSTRU->DARGINS(1)=SCDATE#;              /*@Y30LB11*/
                SCDDSTRU->DARGINL(1)=LENGTH(COPDATE);      /*@Y30LB11*/
                SCDDSTRU->DARGDTM(1)=ADDR(COPDATE);        /*@Y30LB11*/

                /* IF 2 CARTS OUT OF LIBRARY, INSERT 2 CSNS  @Y30LB11*/

                IF SCMSGCD=SCNOCSNS THEN
                  DO;                                      /*@Y30LB11*/
                    SCDDSTRU->DARGDBP=ADDR(COPCSN1);       /*@Y30LB11*/
                    SCDDSTRU->DARGILP=LENGTH(COPCSN1);     /*@Y30LB11*/
                    SCDDSTRU->DARGCNT=2;                   /*@Y30LB11*/
                    SCDDSTRU->DARGINS(2)=SCCSN2#;          /*@Y30LB11*/
                    SCDDSTRU->DARGINL(2)=LENGTH(COPCSN2);  /*@Y30LB11*/
                    SCDDSTRU->DARGDTM(2)=ADDR(COPCSN2);    /*@Y30LB11*/
                  END;                                     /*@Y30LB11*/

                /* IF CSN1 OUT OF LIBRARY, INSERT CSN1      @Y30LB11*/

                IF SCMSGCD=SCNOCSN1 THEN
                  DO;                                      /*@Y30LB11*/
                    SCDDSTRU->DARGDBP=ADDR(COPCSN1);       /*@Y30LB11*/
                    SCDDSTRU->DARGILP=LENGTH(COPCSN1);     /*@Y30LB11*/
                    SCDDSTRU->DARGCNT=1;                   /*@Y30LB11*/
                  END;                                     /*@Y30LB11*/

                /* IF CSN2 OUT OF LIBRARY, INSERT CSN2      @Y30LB11*/

                IF SCMSGCD=SCNOCSN2 THEN
                  DO;                                      /*@Y30LB11*/
                    SCDDSTRU->DARGDBP=ADDR(COPCSN2);       /*@Y30LB11*/
                    SCDDSTRU->DARGILP=LENGTH(COPCSN2);     /*@Y30LB11*/
                    SCDDSTRU->DARGCNT=1;                   /*@Y30LB11*/
                  END;                                     /*@Y30LB11*/

                /* ISSUE THE UPRINT MACRO TO PRINT THE MESSAGE       */
                                                           /*@Y30LB11*/

                UPRINT(GDTTBL,PRTFILE,SCDDSTRU);           /*@Y30LB11*/

                /* IF THE LOCATION OF THE VOLUME HAS BEEN DETERMINED
                   THE MESSAGE: ** LOCATION OF VOLUME: (LOCATION), IS
                   ISSUED.                                   @Y30LB11*/

                IF COPDEST^=SCBLANKS THEN                  /*@Y30LB11*/
                  DO;                                      /*@Y30LB11*/
                    SCDARG=NULLAREA;                       /*@Y30LB11*/
                    SCDDSTRU->DARGSENT=SCM0098I;           /*@Y30LB11*/
                    SCDDSTRU->DARGSMOD=SCCOMMSG;           /*@Y30LB11*/
                    SCDDSTRU->DARGDBP=ADDR(COPDEST);       /*@Y30LB11*/
                    SCDDSTRU->DARGILP=LENGTH(COPDEST);     /*@Y30LB11*/
                    UPRINT(GDTTBL,PRTFILE,SCDDSTRU);       /*@Y30LB11*/
                  END;                                     /*@Y30LB11*/
          END;                                             /*@Y30LB11*/

        /* A RETURN CODE OF 4 FROM THE ICBDEFV MACRO INDICATES
           THAT THE ICBDEFV MACRO FAILED.  A MESSAGE INDICATING
           THAT COPY VOLUMES WERE NOT SCRATCHED, IS PRINTED. @Y30LB11*/

        ELSE
          DO;                                              /*@Y30LB11*/
            SCDDSTRU->DARGSENT=SCM2087I;                   /*@Y30LB11*/
            SCDDSTRU->DARGDBP=ADDR(COPCSN1);               /*@Y30LB11*/
            SCDDSTRU->DARGILP=LENGTH(COPCSN1);             /*@Y30LB11*/
            SCDDSTRU->DARGCNT=2;                           /*@Y30LB11*/
            SCDDSTRU->DARGINS(1)=SCCSN2#;                  /*@Y30LB11*/
            SCDDSTRU->DARGINL(1)=LENGTH(COPCSN2);          /*@Y30LB11*/
            SCDDSTRU->DARGDTM(1)=ADDR(COPCSN2);            /*@Y30LB11*/
            SCDDSTRU->DARGINS(2)=SCDATE#;                  /*@Y30LB11*/
            SCDDSTRU->DARGINL(2)=LENGTH(COPDATE);          /*@Y30LB11*/
            SCDDSTRU->DARGDTM(2)=ADDR(COPDATE);            /*@Y30LB11*/
            UPRINT(GDTTBL,PRTFILE,SCDDSTRU);               /*@Y30LB11*/
          END;                                             /*@Y30LB11*/

        /* INDICATE THAT SCRCOPY FAILED WITH A RETURN CODE OF 4.     */
                                                           /*@Y30LB11*/

        SCRCOND=RCFAIL;                                    /*@Y30LB11*/
        END;                                               /*@Y30LB11*/
      END;                                                 /*@Y30LB11*/

    /* RETURN TO SCRCOPY CALLER                              @Y30LB11*/

    RETURN CODE(SCRCOND);                                  /*@Y30LB11*/
    END SCRCOPY;                                           /*@Y30LB11*/
./ ADD NAME=IDCDF54
 /********************************************************************/
 /*                                                                  */
 /* PROCEDURE NAME - SORT  (ACCESS METHOD SERVICES)          @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* FUNCTION - THIS COMMON INCLUDED PROCEDURE PROVIDES THE   @Z40LB37*/
 /*            CALLER WITH THE BASIC FUNCTION OF SORTING     @Z40LB37*/
 /*            A CONTIGUOUS AREA OF STORAGE OF ANY LENGTH,   @Z40LB37*/
 /*            OR ELEMENT (RECORD) SIZE.   IT ALLOWS         @Z40LB37*/
 /*            CHARACTER FIELDS TO BE SORTED PER USER CALL,  @Z40LB37*/
 /*            ANYWHERE WITHIN AN ELEMENT (RECORD) FOR ANY   @Z40LB37*/
 /*            LENGTH EQUAL TO OR SMALLER THAN AN ELEMENTS   @Z40LB37*/
 /*            SIZE.  THE ELEMENT SIZE CANNOT CHANGE BETWEEN @Z40LB37*/
 /*            CALLS TO THE SORT PROCEDURE.  (THIS IS A      @Z40LB37*/
 /*            COMPILE TIME VARIABLE.)                       @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* ENTRY POINT - SORT                                       @Z40LB37*/
 /*                                                          @Z40LB37*/
 /*      LINKAGE - 'CALL SORT (SRTAGL)'                      @Z40LB37*/
 /*                '%SRTLABEL = 'WORK AREA''                 @Z40LB37*/
 /*                '%INCLUDE SYSLIB(IDCDF54)'                @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* INPUT  - ADDRESS OF ARGUMENT LIST (SRTAGL)               @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* OUTPUT - A RETURN CODE IN REGISTER 15                    @Z40LB37*/
 /*                                                          @Z40LB37*/
 /*          (0) - SORT SUCCESSFUL                           @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* EXIT NORMAL - RETURNS TO CALLER WITH CONDITION           @Z40LB37*/
 /*               CODE ZERO                                  @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* EXIT ERROR  - NONE                                       @Z40LB37*/
 /*                                                          @Z40LB37*/
 /* CHANGE ACTIVITY - NONE                                   @Z40LB37*/
 /*                                                                  */
 /********************************************************************/
 % DECLARE SRTLABEL CHARACTER;                             /*@Z40LB37*/
 % IF SRTLABEL = '' %THEN
     %SRTLABEL = '0';                                      /*@Z40LB37*/

 SORT:                              /*AMS SORT ROUTINE       @Z40LB37*/
    PROCEDURE(SRTARG);              /*SORT ARGUMENT LIST     @Z40LB37*/

 @EJECT;                                                   /*@Z40LB37*/
    /*****************************************************************/
    /*                                                               */
    /*  DECLARATIONS FOR THE SORT ROUTINE.                   @Z40LB37*/
    /*                                                               */
    /*****************************************************************/

    DCL
      1 SRTSTOR(*)  BASED(SRTPTR),  /*INPUT STORAGE DCL      @Z40LB37*/
        2 SRTELEM   CHAR(LENGTH(SRTLABEL));/*FOR MOVING ONE
                                      ELEMENT                @Z40LB37*/
    DCL
      SRTSAVE CHAR(LENGTH(SRTLABEL))/*PASSED ELEMENT         @Z40LB37*/
        BASED(SRTWPTR);             /*SAVE AREA              @Z40LB37*/
    DCL
      (SRTPTR,SRTWPTR) PTR(31);     /*SORT AREA PTRS         @Z40LB37*/
    DCL
      SRTLN    FIXED(31);           /*SORT ELEMENT LENGTH    @Z40LB37*/
    DCL
      (SRTBEG,SRTEND) FIXED(31);    /*SORT FIELD DCLS        @Z40LB37*/
    DCL
      (SRTSTOP,SRTMOVE)  BIT(1);    /*SORT SWITCHES          @Z40LB37*/
    DCL
      SRTON   BIT(1) CONSTANT('1'B);/*SWITCH ON CONSTANT     @Z40LB37*/
    DCL
      SRTOFF  BIT(1) CONSTANT('0'B);/*SWITCH OFF CONSTANT    @Z40LB37*/
    DCL
      (SRTMAXCT,SRTI,SRTJ) FIXED(31);/*SORT COUNTER DCLS     @Z40LB37*/
    DCL
      SRTRC   FIXED(15) CONSTANT(0);/*SORT RETURN CODE AREA  @Z40LB37*/

 @EJECT;                                                   /*@Z40LB37*/
    /*****************************************************************/
    /*                                                               */
    /*  RESPECIFY SRTAGL ON PASSED ADDRESS, ISSUE UTRACE     @Z40LB37*/
    /*  AND UDUMP MACROS, AND INITIALIZE LOCAL COUNTERS AND  @Z40LB37*/
    /*  LENGTH FIELDS.                                       @Z40LB37*/
    /*                                                               */
    /*****************************************************************/

    RFY
      SRTAGL    BASED(ADDR(SRTARG));                       /*@Z40LB37*/

    UTRACE = 'SORT';                                       /*@Z40LB37*/

    UDUMP (GDTTBL,'SOTI');                                 /*@Z40LB37*/

    SRTHEAD = 'SRTAGL  ';                                  /*@Z40LB37*/
    SRTWPTR = SRTWORKP;                                    /*@Z40LB37*/
    SRTPTR = SRTADDR;                                      /*@Z40LB37*/
    SRTLN = SRTLEN;                                        /*@Z40LB37*/
    SRTMAXCT = SRTNUM;                                     /*@Z40LB37*/
    SRTBEG = SRTPOSIT;                                     /*@Z40LB37*/
    SRTEND = SRTPOSIT + (SRTFLDLN - 1);                    /*@Z40LB37*/
    SRTSTOP = SRTOFF;                                      /*@Z40LB37*/
    SRTMOVE = SRTOFF;                                      /*@Z40LB37*/

 @EJECT;                                                   /*@Z40LB37*/
    /*****************************************************************/
    /*                                                               */
    /*  EXECUTE THE SORT LOOP USING THE MAXIMUM ELEMENTS     @Z40LB37*/
    /*  MINUS ONE FOR THE SRTI COUNTER AND DECREMENTING THE  @Z40LB37*/
    /*  THE SRTI COUNTER BY ONE EACH PASS.  THE SRTJ COUNTER @Z40LB37*/
    /*  IS USED TO COUNT THE ELEMENTS THRU EACH PASS AND IN- @Z40LB37*/
    /*  CREMENT THE SRTJ COUNTER BY ONE AFTER EACH ELEMENT   @Z40LB37*/
    /*  IS COMPARED.   THE SRTSTOP SWITCH IS USED TO TERM-   @Z40LB37*/
    /*  INATE THE SORT IF NO INTERCHANGE OF ELEMENTS TAKES   @Z40LB37*/
    /*  PLACE.                                               @Z40LB37*/
    /*                                                               */
    /*****************************************************************/

 SRTLOOP:
    DO SRTI = SRTMAXCT-1 TO 1 BY -1 WHILE SRTSTOP = SRTOFF;/*@Z40LB37*/
      DO SRTJ = 1 TO SRTI;                                 /*@Z40LB37*/

        /*************************************************************/
        /*                                                           */
        /*  COMPARE THE TWO ELEMENTS TO SEE IF AN INTER-     @Z40LB37*/
        /*  CHANGE SHOULD TAKE PLACE, USING THE PASSED SORT  @Z40LB37*/
        /*  FIELDS AS A SUBSTRING, IF SO INTERCHANGE THEM.   @Z40LB37*/
        /*                                                           */
        /*************************************************************/

        IF SRTELEM(SRTJ,SRTBEG:SRTEND) > SRTELEM(SRTJ+1,SRTBEG:SRTEND)
          THEN
            DO;                                            /*@Z40LB37*/
              SRTMOVE = SRTON;                             /*@Z40LB37*/
              SRTSAVE = SRTELEM(SRTJ);                     /*@Z40LB37*/
              SRTELEM(SRTJ) = SRTELEM(SRTJ+1);             /*@Z40LB37*/
              SRTELEM(SRTJ+1) = SRTSAVE;                   /*@Z40LB37*/
            END;                                           /*@Z40LB37*/
      END;                                                 /*@Z40LB37*/

      /***************************************************************/
      /*                                                             */
      /*  IF AN ELEMENT WAS INTERCHANGED THEN TURN SRTMOVE   @Z40LB37*/
      /*  SWITCH OFF.  IF NO INTERCHANGE WAS MADE TURN SORT  @Z40LB37*/
      /*  STOP SWITCH TO ON.                                 @Z40LB37*/
      /*                                                             */
      /***************************************************************/

      IF SRTMOVE = SRTON
        THEN
          SRTMOVE = SRTOFF;                                /*@Z40LB37*/
        ELSE
          SRTSTOP = SRTON;                                 /*@Z40LB37*/
    END SRTLOOP;                    /*END OF SRTLOOP TO SORT INTO AN */
                                    /*ASCENDING SEQUENCE     @Z40LB37*/

 @EJECT;                                                   /*@Z40LB37*/
    UDUMP (GDTTBL,'SOTO');          /*UDUMP EXIT             @Z40LB37*/

    RETURN CODE(SRTRC);             /*RETURN TO MAIN ROUTINE @Z40LB37*/

    END SORT;                       /*END OF AMS SORT ROUTINE -
                                      SORT                   @Z40LB37*/
./ ADD NAME=IDCDF55
 /********************************************************************/
 /*                                                          @Z40LB35*/
 /* PROCEDURE NAME - DATES  (ACCESS METHOD SERVICES)         @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* FUNCTION - THIS COMMON INCLUDED PROCEDURE PROVIDES       @Z40LB35*/
 /*            THE AMS SERVICES WITH THE BASIC FUNCTION OF   @Z40LB35*/
 /*            CONVERTING A ONE VALUE DATE SUCH AS 99999 TO  @Z40LB35*/
 /*            '00 99 0999' OR OBTAINING THE CURRENT DATE AND@Z40LB35*/
 /*            ADJUSTING IT BY EITHER ADDING OR SUBTRACTING  @Z40LB35*/
 /*            DAYS TO THAT DATE.  THE DATE WILL BE ADJUSTED @Z40LB35*/
 /*            FOR ANY LEAP YEARS.  THE DATE WILL ALSO BE    @Z40LB35*/
 /*            ADJUSTED TO FIT WITHIN THE RANGE 0 TO 99999.  @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* ENTRY POINT - DATES                                      @Z40LB35*/
 /*                                                          @Z40LB35*/
 /*      LINKAGE - 'CALL DATES (DATESAGL)'                   @Z40LB35*/
 /*                '%INCLUDE SYSLIB(IDCDF55)'                @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* INPUT  - ADDRESS OF ARGUMENT LIST (DATESAGL)             @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* OUTPUT - A RETURN CODE IN REGISTER 15                    @Z40LB35*/
 /*          (0) - DATES SUCCESSFUL                          @Z40LB35*/
 /*                                                          @Z40LB35*/
 /*        - A CONVERTED DATE (00 YY DDDD) IN BINARY         @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* EXIT NORMAL - RETURNS TO CALLER WITH CONDITION           @Z40LB35*/
 /*               CODE ZERO                                  @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* EXIT ERROR  - NONE                                       @Z40LB35*/
 /*                                                          @Z40LB35*/
 /* CHANGE ACTIVITY - NONE                                   @Z40LB35*/
 /*                                                          @Z40LB35*/
 /********************************************************************/
 DATES: PROC;                                              /*@Z40LB35*/
             /*DECLARATION FOR DATES PROCEDURE               @Z40LB35*/
 DCL     TIMEVAR CHAR(8);           /*TIME VARIABLE - UTIME  @Z40LB35*/
                                    /*USED IN UTIME CALL     @Z40LB35*/
 DCL     1 DATEVAR CHAR(4),         /*DATE VARIABLE - UTIME  @Z40LB35*/
           2 *     CHAR(1),         /*FILLER - RESERVED      @Z40LB35*/
           2 DATEPACK CHAR(3);      /*DATE RETURN - PACKED   @Z40LB35*/
                                    /*DECIMAL FORMAT         @Z40LB35*/
             /*THE FOLLOWING STRUCTURE IS THE DATE RETURNED  @Z40LB35*/
 DCL     1 CONVDATE BDY(WORD) BASED(DATRETRN),
           2 CONVYEAR FIXED(15),    /*YEAR - RANGE 0 - 99    @Z40LB35*/
           2 CONVDAYS FIXED(15);    /*DAYS - RANGE 0 - 999   @Z40LB35*/
             /*THE FOLLOWING DECLARES ARE INTERNAL FIELDS    @Z40LB35*/
 DCL     DATEBIN FIXED(31);         /*USED TO UNPACK DATE    @Z40LB35*/
 DCL     QUITSW  BIT(1);            /*USED TO CONTROL LOOPS  @Z40LB35*/
 DCL     ADJDAYS FIXED(31);         /*USED TO ADJUST DAYS    @Z40LB35*/
             /*THE FOLLOWING ARE STATIC CONSTANTS            @Z40LB35*/
 DCL     REGYEAR  FIXED(15) INIT(365);                     /*@Z40LB35*/
                                    /*NUM DAYS IN REG YEAR   @Z40LB35*/
 DCL     LEAPYEAR FIXED(15) INIT(366);                     /*@Z40LB35*/
                                    /*NUM DAYS IN LEAP YEAR  @Z40LB35*/
 DCL     MAXYEAR  FIXED(15) INIT(99);                      /*@Z40LB35*/
                                    /*HIGHEST YEAR           @Z40LB35*/
 DCL     MAXDAYS  FIXED(15) INIT(999);                     /*@Z40LB35*/
                                    /*HIGHEST DAYS           @Z40LB35*/
 DCL     MINYEAR  FIXED(15) INIT(0);                       /*@Z40LB35*/
                                    /*LOWEST YEAR            @Z40LB35*/
 DCL     MINDAYS  FIXED(15) INIT(0);                       /*@Z40LB35*/
                                    /*LOWEST DAYS            @Z40LB35*/
 DCL     NOREMAIN FIXED(15) INIT(0);                       /*@Z40LB35*/
                                    /*NO REMAINDER AFTER DIV @Z40LB35*/
 @EJECT;                                                   /*@Z40LB35*/
             /* THIS IS THE START OF THIS PROCEDURE          @Z40LB35*/
             /* HERE INITIALIZATION TAKES PLACE.             @Z40LB35*/
             /* THE PARM LIST HEADER IS INITIALIZED,         @Z40LB35*/
             /* THE TRACE POINT 'DTST' IS RECORDED, AND      @Z40LB35*/
             /* THE DATE IS SET TO ZERO.                     @Z40LB35*/
         UTRACE = 'DTST';                                  /*@Z40LB35*/
         DATHEAD = 'DATESAGL';                             /*@Z40LB35*/
         CONVDATE = 0;                                     /*@Z40LB35*/
             /* DETERMINE IF CALLER WANTS THE CURRENT DATE   @Z40LB35*/
             /* ADJUSTED WITH DAYS ADD OR SUBTRACTED.        @Z40LB35*/
         IF DATDAYOP = ON THEN
           DO;                                             /*@Z40LB35*/
             /* IF CALLER WANTS TO ADJUST CURRENT DATE,      @Z40LB35*/
             /* ISSUE UTIME TO RETRIEVE CURRENT DATE,        @Z40LB35*/
             /* CONVERT THE DATE FROM PACKED DECIMAL TO      @Z40LB35*/
             /* BINARY, AND SEPARATE THE YEARS FROM THE      @Z40LB35*/
             /* DAYS.                                        @Z40LB35*/
             ADJDAYS = DATDAYS;                            /*@Z40LB35*/
             UTIME (GDTTBL,TIMEVAR,DATEVAR);               /*@Z40LB35*/
             CVB(DATEBIN,DATEPACK);                        /*@Z40LB35*/
             CONVYEAR = DATEBIN/1000;                      /*@Z40LB35*/
             CONVDAYS = DATEBIN - (CONVYEAR*1000);         /*@Z40LB35*/
             /*INITIALIZE QUITSW OFF FOR LOOP CONTROL        @Z40LB35*/
             QUITSW = OFF;                                 /*@Z40LB35*/
             /*DETERMINE IF CALLER WANTS DAYS ADDED TO       @Z40LB35*/
             /*CURRENT DATE.                                 @Z40LB35*/
             IF DATADD = ON THEN
             /*IF CALLER WANTS DAYS ADDED, LOOP THOUGH       @Z40LB35*/
             /*THE FOLLOWING DO LOOP UNTIL QUITSW IS SET     @Z40LB35*/
               DO WHILE QUITSW = OFF;                      /*@Z40LB35*/
             /*TEST FOR LEAP YEAR - EVERY FOUTH YEAR IS LEAP @Z40LB35*/
             /*YEAR.  IF NO REMAINDER AFTER DIVIDING BY FOUR @Z40LB35*/
             /*THEN THE YEAR BEING PROCESSED IS A LEAP YEAR  @Z40LB35*/
                 IF CONVYEAR//4 = NOREMAIN THEN
             /*DETERMINE IF THE DAYS BEING ADDED CAN BE      @Z40LB35*/
             /*ADDED TO CURRENT YEAR BEING PROCESSED WITHOUT @Z40LB35*/
             /*AN OVERFLOW INTO THE NEXT YEAR.               @Z40LB35*/
                   IF (ADJDAYS + CONVDAYS) > LEAPYEAR THEN
             /*SUBTRACT LEAP YEAR DAYS (366) FROM DAYS       @Z40LB35*/
             /*AND INCREMENT YEAR BY ONE                     @Z40LB35*/
                     DO;                                   /*@Z40LB35*/
                       ADJDAYS = ADJDAYS - LEAPYEAR;       /*@Z40LB35*/
                       CONVYEAR = CONVYEAR + 1;            /*@Z40LB35*/
                     END;                                  /*@Z40LB35*/
                   ELSE
             /*INCREMENT DAYS AND SET QUITSW TO FALL OUT     @Z40LB35*/
             /*OF DO LOOP                                    @Z40LB35*/
                     DO;                                   /*@Z40LB35*/
                       CONVDAYS = ADJDAYS + CONVDAYS;      /*@Z40LB35*/
                       QUITSW = ON;                        /*@Z40LB35*/
                     END;                                  /*@Z40LB35*/
                 ELSE
             /*DETERMINE IF THE DAYS BEING ADDED CAN BE      @Z40LB35*/
             /*ADDED TO CURRENT YEAR BEING PROCESSED WITHOUT @Z40LB35*/
             /*AN OVERFLOW INTO THE NEXT YEAR.               @Z40LB35*/
                   IF (ADJDAYS + CONVDAYS) > REGYEAR THEN
             /*SUBTRACT REG YEAR DAYS (365) FROM DAYS        @Z40LB35*/
             /*AND INCREMENT YEAR BY ONE                     @Z40LB35*/
                     DO;                                   /*@Z40LB35*/
                       ADJDAYS = ADJDAYS - REGYEAR;        /*@Z40LB35*/
                       CONVYEAR = CONVYEAR + 1;            /*@Z40LB35*/
                     END;                                  /*@Z40LB35*/
                   ELSE
             /*INCREMENT DAYS AND SET QUITSW TO FALL OUT     @Z40LB35*/
             /*OF DO LOOP                                    @Z40LB35*/
                     DO;                                   /*@Z40LB35*/
                       CONVDAYS = CONVDAYS + ADJDAYS;      /*@Z40LB35*/
                       QUITSW = ON;                        /*@Z40LB35*/
                     END;                                  /*@Z40LB35*/
               END;                                        /*@Z40LB35*/
 @EJECT;                                                   /*@Z40LB35*/
             /*IF DAYS ARE TO BE SUBTRACTED FROM CURRENT,    @Z40LB35*/
             /*DO THE FOLLOWING DO GROUP                     @Z40LB35*/
             ELSE
             /*DO THE FOLLOWING WHILE THE QUITSW IS NOT SET  @Z40LB35*/
               DO WHILE QUITSW = OFF;                      /*@Z40LB35*/
             /*TEST FOR LEAP YEAR - EVERY FOUTH YEAR IS LEAP @Z40LB35*/
             /*YEAR.  IF NO REMAINDER AFTER DIVIDING BY FOUR @Z40LB35*/
             /*THEN THE YEAR BEING PROCESSED IS A LEAP YEAR  @Z40LB35*/
                 IF (CONVYEAR-1)//4 = NOREMAIN THEN
             /*TEST TO SEE IF THE YEAR CAN BE DECREMENTED    @Z40LB35*/
                   IF ADJDAYS >= LEAPYEAR THEN
             /*SUBTRACT LEAP YEAR DAYS (366) FROM DAYS       @Z40LB35*/
             /*AND DECREMENT YEAR BY ONE                     @Z40LB35*/
                     DO;                                   /*@Z40LB35*/
                       ADJDAYS = ADJDAYS - LEAPYEAR;       /*@Z40LB35*/
                       CONVYEAR = CONVYEAR - 1;            /*@Z40LB35*/
                     END;                                  /*@Z40LB35*/
                   ELSE
             /*IF NO FULL YEAR, TEST FOR OVERFLOW            @Z40LB35*/
                     IF (CONVDAYS-ADJDAYS) <= 0 THEN
             /*IF YEAR RUNS BACK INTO LAST YEAR,             @Z40LB35*/
             /*ADJUST DAYS, SUBTRACT YEAR AND SET QUITSW     @Z40LB35*/
                       DO;                                 /*@Z40LB35*/
                         CONVDAYS = CONVDAYS + LEAPYEAR - ADJDAYS;
                         CONVYEAR = CONVYEAR - 1;          /*@Z40LB35*/
                         QUITSW = ON;                      /*@Z40LB35*/
                       END;                                /*@Z40LB35*/
                     ELSE
             /*IF YEAR DOES NOT RUNS BACK INTO LAST YEAR,    @Z40LB35*/
             /*ADJUST DAYS AND SET QUITSW                    @Z40LB35*/
                       DO;                                 /*@Z40LB35*/
                         CONVDAYS = CONVDAYS - ADJDAYS;    /*@Z40LB35*/
                         QUITSW = ON;                      /*@Z40LB35*/
                       END;                                /*@Z40LB35*/
             /*ELSE THIS IS A NORMAL YEAR(NON-LEAP YEAR)     @Z40LB35*/
                 ELSE
             /*TEST TO SEE IF THE YEAR CAN BE DECREMENTED    @Z40LB35*/
                   IF ADJDAYS >= REGYEAR THEN
             /*SUBTRACT REG YEAR DAYS (365) FROM DAYS        @Z40LB35*/
             /*AND DECREMENT YEAR BY ONE                     @Z40LB35*/
                     DO;                                   /*@Z40LB35*/
                       ADJDAYS = ADJDAYS - REGYEAR;        /*@Z40LB35*/
                       CONVYEAR = CONVYEAR - 1;            /*@Z40LB35*/
                     END;                                  /*@Z40LB35*/
                   ELSE
             /*IF NO FULL YEAR, TEST FOR OVERFLOW            @Z40LB35*/
                     IF (CONVDAYS-ADJDAYS) <= 0 THEN
             /*IF YEAR RUNS BACK INTO LAST YEAR,             @Z40LB35*/
             /*ADJUST DAYS, SUBTRACT YEAR AND SET QUITSW     @Z40LB35*/
                       DO;                                 /*@Z40LB35*/
                         CONVDAYS = CONVDAYS + REGYEAR - ADJDAYS;
                         CONVYEAR = CONVYEAR - 1;          /*@Z40LB35*/
                         QUITSW = ON;                      /*@Z40LB35*/
                       END;                                /*@Z40LB35*/
                     ELSE
             /*IF YEAR DOES NOT RUNS BACK INTO LAST YEAR,    @Z40LB35*/
             /*ADJUST DAYS AND SET QUITSW                    @Z40LB35*/
                       DO;                                 /*@Z40LB35*/
                         CONVDAYS = CONVDAYS - ADJDAYS;    /*@Z40LB35*/
                         QUITSW = ON;                      /*@Z40LB35*/
                       END;                                /*@Z40LB35*/
               END;                                        /*@Z40LB35*/
           END;                                            /*@Z40LB35*/
 @EJECT;                                                   /*@Z40LB35*/
             /*DETERMINE IF THE CALLER WANTS THE DATE        @Z40LB35*/
             /*CONVERTED                                     @Z40LB35*/
         IF DATDTEOP= ON THEN
             /*IF CALLER WANTS DATE CONVERTED, CONVERT THE   @Z40LB35*/
             /*DATE BY SEPARATING THE YEARS FROM THE DAYS    @Z40LB35*/
           DO;                                             /*@Z40LB35*/
             CONVYEAR = DATDATE/1000;                      /*@Z40LB35*/
             CONVDAYS = DATDATE - (CONVYEAR * 1000);       /*@Z40LB35*/
           END;                                            /*@Z40LB35*/
             /*HERE THE DETERMINATION WILL BE MADE TO SEE    @Z40LB35*/
             /*IF THE LIMITS ARE VIOLATED                    @Z40LB35*/
             /*IF SO, FORCE THE DATE TO FALL WITHIN THE      @Z40LB35*/
             /*LIMITS (0 99999)                              @Z40LB35*/
         IF CONVYEAR > MAXYEAR THEN
           DO;                                             /*@Z40LB35*/
             CONVYEAR = MAXYEAR;                           /*@Z40LB35*/
             CONVDAYS = MAXDAYS;                           /*@Z40LB35*/
           END;                                            /*@Z40LB35*/
         ELSE
           IF CONVYEAR < MINYEAR  CONVDAYS < MINDAYS THEN
             DO;                                           /*@Z40LB35*/
               CONVYEAR = MINYEAR;                         /*@Z40LB35*/
               CONVDAYS = MINDAYS;                         /*@Z40LB35*/
             END;                                          /*@Z40LB35*/
             /*RETURN TO CALLER WITH RETURN CODE ZERO        @Z40LB35*/
         UDUMP (GDTTBL,'DTND');                            /*@Z40LB35*/
         RETURN CODE(RCOK);                                /*@Z40LB35*/
         END DATES;                                        /*@Z40LB35*/
./ ADD NAME=IDCDF56
   /******************************************************** @Z40LB64*/
   /*                                                        @Z40LB64*/
   /* CHECKMSS FUNCTION COMMON DATA AREA          6/27/75    @Z40LB64*/
   /*                                                        @Z40LB64*/
   /* CHANGE ACTIVITY -                                      @Z40LB64*/
   /*     NONE                                               @Z40LB64*/
   /*                                                        @Z40LB64*/
   /******************************************************** @Z40LB64*/

     DCL SA#   FIXED(15);              /*SA INDEX VARIABLE   @Z40LB61*/
     /* INTERNAL SA VIRTUAL ADDRESS DIRECTORY MAPPING        @Z40LB64*/
     DCL 1 IVAD(3,64) BDY(HWORD) BASED(IVADPTR(SA#)),
           3 IVADVVA FIXED(8),         /* VIRTUAL VOL ADDR   @Z40LB64*/
           3 IVADFLG BIT(8),           /* VAD FLAGS          @Z40LB64*/
             5 *     BIT(2),           /* RESERVED           @Z40LB64*/
             5 IVADWI BIT(1),          /* WRITE INHIBIT      @Z40LB64*/
             5 *     BIT(2);           /* RESERVED           @Z40LB64*/

     /* INTERNAL SA VIRTUAL VOLUME INFORMATION TABLE MAPPING @Z40LB64*/
     DCL 1 IVVIT(192) BDY(HWORD) BASED(IVVITPTR(SA#)),
           3 IVVI1    BIT(8),          /* IVVIT FIRST BYTE   @Z40LB64*/
             5 *        BIT(5),        /* RESERVED           @Z40LB64*/
             5 IVVI1STR BIT(1),        /* FIRST RESERVE      @Z40LB64*/
             5 IVVIWI   BIT(1),        /* WRITE INHIBIT      @Z40LB64*/
             5 IVVISHR  BIT(1),        /* VIRTUAL VOL SHARED @Z40LB64*/
           3 IVVI2    BIT(8),          /* IVVIT SECOND BYTE  @Z40LB64*/
             5 *        BIT(2),        /* RESERVED           @Z40LB64*/
             5 IVVIINTF BIT(2),        /* INTERFACE ID       @Z40LB64*/
             5 IVVIRSVD BIT(1),        /* VOLUME RESERVED    @Z40LB64*/
             5 *        BIT(3);        /* RESERVED           @Z40LB64*/

     /* INTERNAL SA PAGE STATUS TABLE MAPPING                @Z40LB64*/
     DCL 1 IPST(2,8,52) BDY(HWORD) BASED(IPSTPTR(SA#)),
           3 IPSTVVA  FIXED(8),        /* VIRTUAL VOL ADDR   @Z40LB64*/
           3 IPSTVP   FIXED(8);        /* VIRTUAL PAGE       @Z40LB64*/

     /* INTERNAL SA LOGICAL-TO-REAL TABLE MAPPING            @Z40LB64*/
     DCL 1 ILTR(16) BDY(BYTE) BASED(ILTRPTR(SA#)),
           3 ILTRRUA  FIXED(8),        /* REAL UNIT ADDRESS  @Z40LB64*/
             5 ILTRM11 BIT(1);         /* SECOND HALF OF     @Z40LB64
                                          A 3330 MOD 11      @Z40LB64*/

     /* TABLE OF STARTING CCHHR LOCATIONS FOR MSC TABLES     @Z40LB64*/
     DCL 1 CCHHRTBL BDY(WORD) BASED(CCHHRPTR),
           3 CCOFFSET  FIXED(15),      /*CYLINDER DIFFERENCE @Z40LB61
                                         BETWEEN ORIGINAL
                                         LOCATION OF TABLES
                                         AND COPY'S LOCATION @Z40LB61*/
           3 TBLCCHHR(10) CHAR(6)
                          BDY(HWORD),  /*ORIGINAL CCHHR'S OF @Z40LB61
                                         THE MSC TABLES      @Z40LB61*/
             5 TBLCC     FIXED(15),    /*CYLINDER NUMBER     @Z40LB61*/
             5 TBLHH     FIXED(15),    /*HEAD (TRACK) NUMBER @Z40LB61*/
             5 TBLR      FIXED(8),     /*RECORD NUMBER       @Z40LB61*/
             5 *         CHAR(1),      /*RESERVED            @Z40LB61*/
           3 MVTDBCHR  CHAR(5)         /*CCHHR OF START OF   @Z40LB61*/
                     BDY(HWORD),       /*MVT DATA BLOCK AREA @Z40LB61*/
             5 MVTDBCC   FIXED(15),    /*CYLINDER NUMBER     @Z40LB61*/
             5 MVTDBHH   FIXED(15),    /*HEAD (TRACK) NUMBER @Z40LB61*/
             5 MVTDBR    FIXED(8);     /*RECORD NUMBER       @Z40LB61*/

     /* IDCCH03 ARGUMENT LIST                                @Z40LB64*/
     DCL 1 ENTRYARG BDY(WORD) BASED(EARGPTR),
           3 RDOPTION  BIT(8),         /*READ TYPE OPTIONS   @Z40LB61*/
             5 GETNEXT   BIT(1),       /*GET NEXT SEQUENTIAL @Z40LB61
                                         RECORD (OR ENTRY)   @Z40LB61*/
             5 BUFFER2   BIT(1),       /*USE I/O BUFFER #2   @Z40LB61*/
             5 *         BIT(6),       /*RESERVED            @Z40LB61*/
           3 TABLEID   FIXED(8),       /*ID OF TABLE TO BE   @Z40LB61
                                         READ                @Z40LB61*/
           3 TBLFLAGS  BIT(8),         /*OPTION FLAGS FOR    @Z40LB61
                                         TABLES IN MSC WCS   @Z40LB61*/
             5 MEFLAG    BIT(1),       /*MOUNT EQUALIZATION  @Z40LB61
                                         RECORD              @Z40LB61*/
             5 CBMFLAG   BIT(1),       /*CONFIGURATION BIT   @Z40LB61
                                         MAP                 @Z40LB61*/
             5 TCHRFLAG  BIT(1),       /*MSC TABLE CHR'S     @Z40LB61*/
             5 *         BIT(5),       /*RESERVED            @Z40LB61*/
           3 TBLPARTS  BIT(8),         /*OPTION FLAGS FOR    @Z40LB61
                                         TABLE SUBSETS       @Z40LB61*/
             5 RPMFLAG   BIT(1),       /*SDG REAL PAGE MAP   @Z40LB61*/
             5 PABFLAG   BIT(1),       /*SDG PAGE AVAIL-     @Z40LB61
                                         ABILITY BLOCK       @Z40LB61*/
             5 DVBFLAG   BIT(1),       /*SDG DEMOUNTED       @Z40LB61
                                         VOLUME BLOCK        @Z40LB61*/
             5 LPBFLAG   BIT(1),       /*SDG LRU'D PAGES     @Z40LB61
                                         BLOCK               @Z40LB61*/
             5 CIFLAG    BIT(1),       /*CONFIGURATION INDEX @Z40LB61*/
             5 MICTFLAG  BIT(1),       /*CONFIG. MANUF'S ID  @Z40LB61
                                         CONVERSION TABLE    @Z40LB61*/
             5 CDBFLAG   BIT(1),       /*CONFIG. DATA BLOCK  @Z40LB61*/
             5 *         BIT(1),       /*RESERVED            @Z40LB61*/
           3 ENTRYID CHAR(12)          /*DATA RETURNED FROM  @Z40LB61*/
                     BDY(WORD),        /*'GETENTRY' POINTING @Z40LB61
                                         TO LAST RECORD READ @Z40LB61*/
             5 TBLADDR   PTR(31),      /*PTR TO WHERE ENTRY  @Z40LB61
                                         WAS READ INTO CORE  @Z40LB61*/
             5 PREVCHR CHAR(5)         /*CCHHR OF LAST       @Z40LB61*/
                       BDY(WORD),      /*RECORD READ         @Z40LB61*/
               7 RECCYL    FIXED(15),  /*LAST RECORD'S CYL#  @Z40LB61*/
               7 RECHEAD   FIXED(15),  /*LAST RECORD'S HEAD# @Z40LB61*/
               7 RECREC    FIXED(8),   /*LAST RECORD'S REC#  @Z40LB61*/
             5 ENTNUM    FIXED(8),     /*LATEST ENTRY'S SEQ# @Z40LB61
                                         IN CURRENT RECORD -
                                         (APPLIES ONLY TO VI,
                                         TVL, & SCL TABLES)  @Z40LB61*/
             5 RECNUM    FIXED(15),    /*CURRENT RECORD'S    @Z40LB61
                                         SEQ# WITH RESPECT
                                         TO ENTIRE TABLE     @Z40LB61*/
           3 SANUM     FIXED(15),      /*SA NUMBER           @Z40LB61*/
           3 SDGNUM    FIXED(15),      /*STAGING DRIVE GRP#  @Z40LB61*/
           3 INTFID    FIXED(15),      /*SA INTERFACE ID     @Z40LB61*/
           3 VVADDR    FIXED(15),      /*VIRTUAL VOL ADDR    @Z40LB61*/
           3 DEVICEID  FIXED(15),      /*SDG DEVICE NUMBER   @Z40LB61*/
           3 CELLBLK   FIXED(15),      /*CELL MAP BLOCK#     @Z40LB61*/
           3 MSFID     FIXED(15),      /*MSF NUMBER          @Z40LB61*/
           3 VOLID     CHAR(6),        /*VOL SERIAL NUMBER   @Z40LB61*/
           3 SEQ1CSN   CHAR(12),       /*SEQUENCE#1 CART.    @Z40LB61
                                         SERIAL NUMBER       @Z40LB61*/
           3 BYTE#     FIXED(15),      /*BYTE# OF CHECK-OFF  @Z40LB61
                                         TABLE ENTRY FOR THIS
                                         FREE-FORMAT ENTRY   @Z40LB61*/
           3 BIT#      FIXED(15),      /*BIT# OF CHECK-OFF   @Z40LB61
                                         TABLE ENTRY FOR THIS
                                         FREE-FORMAT ENTRY   @Z40LB61*/
           3 GETRC     FIXED(15);      /*RETURN CODE FROM    @Z40LB61
                                         'GETENTRY' ROUTINE  @Z40LB61*/

     /* IDCCH04 ARGUMENT LIST                                @Z40LB64*/
     DCL 1 MSGARG BDY(WORD) BASED(MARGPTR),                /*@Z40LB64*/
           3 MSGTYPE  BIT(32),         /* PRIMARY MSG FLAGS  @Z40LB64*/
             5 INCNMSG BIT(1),         /* 'INCONSISTENT' MSG @Z40LB64*/
             5 DUPLMSG BIT(1),         /* 'DUPLICATE' MSG    @Z40LB64*/
             5 SUMSMSG BIT(1),         /* 'UNEQUAL SUMS' MSG @Z40LB64*/
             5 MTCHMSG BIT(1),         /* 'NO MATCH' MSG     @Z40LB64*/
             5 *       BIT(27),        /* RESERVED           @Z40LB64*/
             5 MSGNRSET BIT(1),        /* NO MSG RESET FLAG  @Z40LB64*/
           3 TBLTYPE(2) BIT(32),       /* TABLE NAME FLAGS   @Z40LB64*/
             5 MVTTBL  BIT(1),         /* MOUNTED VOLUME TBL @Z40LB64*/
             5 VITBL   BIT(1),         /* VOLUME INVENTORY   @Z40LB64*/
             5 TVLTBL  BIT(1),         /* TRANSIENT VOL LIST @Z40LB64*/
             5 SCLTBL  BIT(1),         /* SCRATCH CTG LIST   @Z40LB64*/
             5 MSVITBL BIT(1),         /* MSVI DATA SET      @Z40LB64*/
             5 CMTBL   BIT(1),         /* CELL MAP           @Z40LB64*/
             5 MICTTBL BIT(1),         /* MFRS ID CONVERSION @Z40LB64*/
             5 VADTBL  BIT(1),         /* VIRTUAL ADDRESS    @Z40LB64
                                          DIRECTORY          @Z40LB64*/
             5 PSTTBL  BIT(1),         /* PAGE STATUS TABLE  @Z40LB64*/
             5 LTRTBL  BIT(1),         /* LOGICAL TO REAL    @Z40LB64*/
             5 VVITTBL BIT(1),         /* VIRTUAL VOLUME     @Z40LB64
                                          INFORMATION TABLE  @Z40LB64*/
             5 PABTBL  BIT(1),         /* PAGE AVAIL. BLOCK  @Z40LB64*/
             5 DVBTBL  BIT(1),         /* DEMOUNTED VOL BLK  @Z40LB64*/
             5 LPBTBL  BIT(1),         /* LRU PAGES BLOCK    @Z40LB64*/
             5 RPMTBL  BIT(1),         /* REAL PAGE MAP      @Z40LB64*/
             5 VMXTBL  BIT(1),         /* VVA/MVT CROSS-REF  @Z40LB64*/
             5 VVATTBL BIT(1),         /* VIRTUAL VOLUME     @Z40LB64
                                          ADDRESS TABLE      @Z40LB64*/
             5 CITBL   BIT(1),         /* CONFIG INDEX       @Z40LB64*/
             5 CDBTBL  BIT(1),         /* CONFIG DATA BLOCK  @Z40LB64*/
             5 METBL   BIT(1),         /* MOUNT EQUALIZATION @Z40LB64*/
             5 CBMTBL  BIT(1),         /* CONFIG BIT MAP     @Z40LB64*/
             5 VTSTBL  BIT(1),         /* VI, TVL, OR SCL    @Z40LB64*/
             5 *       BIT(9),         /* RESERVED           @Z40LB64*/
             5 TBLNRSET BIT(1),        /* NO TBL RESET FLAG  @Z40LB64*/
           3 FLDTYPE1  BIT(32),        /* FIELD NAME FLAGS 1 @Z40LB64*/
             5 VMSFLD  BIT(1),         /* VOL MOUNTED STATUS @Z40LB64*/
             5 VSSFLD  BIT(1),         /* VOL SECURE STATUS  @Z40LB64*/
             5 VESFLD  BIT(1),         /* VOL EXCLUSIVE      @Z40LB64*/
             5 VBSFLD  BIT(1),         /* VOL BOUND STATUS   @Z40LB64*/
             5 VRSFLD  BIT(1),         /* VOL RESERVED       @Z40LB64*/
             5 WISFLD  BIT(1),         /* WRITE INHIBIT      @Z40LB64*/
             5 MSFFLD  BIT(1),         /* MSF IDENTIFIER     @Z40LB64*/
             5 VSNFLD  BIT(1),         /* VOL SERIAL NUMBER  @Z40LB64*/
             5 MIFLD   BIT(1),         /* MANUFACTURER'S ID  @Z40LB64*/
             5 VVAFLD  BIT(1),         /* VIRTUAL VOL ADDR   @Z40LB64*/
             5 VPFLD   BIT(1),         /* VIRTUAL PAGE ADDR  @Z40LB64*/
             5 RUAFLD  BIT(1),         /* REAL UNIT ADDRESS  @Z40LB64*/
             5 SAFLD   BIT(1),         /* SA IDENTIFICATION  @Z40LB64*/
             5 FPASFLD BIT(1),         /* FREE PAGE STATUS   @Z40LB64*/
             5 FPCFLD  BIT(1),         /* FREE PAGE COUNTS   @Z40LB64*/
             5 APCFLD  BIT(1),         /* ACTIVE PAGE COUNTS @Z40LB64*/
             5 IPCFLD  BIT(1),         /* INACTIVE PAGE CNTS @Z40LB64*/
             5 BPCFLD  BIT(1),         /* BOUND PAGE COUNTS  @Z40LB64*/
             5 MVTPFLD BIT(1),         /* MVT POINTER        @Z40LB64*/
             5 CAFLD   BIT(1),         /* CELL ADDRESS (XYZ) @Z40LB64*/
             5 COSFLD  BIT(1),         /* CELL OCCUPIED      @Z40LB64*/
             5 CPUFLD  BIT(1),         /* CPU IDENTIFICATION @Z40LB64*/
             5 SDGFLD  BIT(1),         /* SDG INDEX          @Z40LB64*/
             5 L3AFLD  BIT(1),         /* LOGICAL 3333 ADDR  @Z40LB64*/
             5 CSNFLD  BIT(1),         /* CTG SERIAL NUMBER  @Z40LB64*/
             5 LRUDFLD BIT(1),         /* LRU DELTAS         @Z40LB64*/
             5 MVFLD   BIT(1),         /* MOUNTED VOLUMES    @Z40LB64*/
             5 VUAFLD  BIT(1),         /* VIRTUAL UNIT ADDR  @Z40LB64*/
             5 BPASFLD BIT(1),         /* BOUND PAGE STATUS  @Z40LB64*/
             5 DVSFLD  BIT(1),         /* DEVICE VALID       @Z40LB64*/
             5 DOSFLD  BIT(1),         /* DEVICE ONLINE      @Z40LB64*/
             5 IUSFLD  BIT(1),         /* IN-USE STATUS      @Z40LB64*/
           3 FLDTYPE2  BIT(32),        /* FIELD NAME FLAGS 2 @Z40LB64*/
             5 APSFLD  BIT(1),         /* ALTERNATE PATH     @Z40LB64*/
             5 VSHSFLD BIT(1),         /* VOLUME SHARED      @Z40LB64*/
             5 RPFLD   BIT(1),         /* REAL PAGE          @Z40LB64*/
             5 APASFLD BIT(1),         /* ACTIVE PAGE STATUS @Z40LB64*/
             5 IPASFLD BIT(1),         /* INACT. PAGE STATUS @Z40LB64*/
             5 FPFLD   BIT(1),         /* FREE PAGES         @Z40LB64*/
             5 APFLD   BIT(1),         /* ACTIVE PAGES       @Z40LB64*/
             5 IPFLD   BIT(1),         /* INACTIVE PAGES     @Z40LB64*/
             5 BPFLD   BIT(1),         /* BOUND PAGES        @Z40LB64*/
             5 *       BIT(23),        /* RESERVED           @Z40LB64*/
           3 TBLINDEX(2) BDY(WORD),    /* TABLE INDEX VALUES @Z40LB64*/
             5 KEYINDEX  CHAR(13)      /* MSVI KEY VALUE     @Z40LB64*/
                         BDY(WORD),                        /*@Z40LB64*/
               7 CSNINDEX  CHAR(12)    /* CTG SERIAL VALUE   @Z40LB64*/
                           BDY(WORD),                      /*@Z40LB64*/
                 9 XYZINDEX  FIXED(16),/* CELL ADDR (LZYX)   @Z40LB64*/
                 9 CPUINDEX  FIXED(8), /* CPU ID VALUE       @Z40LB64*/
                 9 SAINDEX   FIXED(8), /* SA INDEX VALUE     @Z40LB64*/
                 9 INFINDEX  FIXED(8), /* INTERFACE VALUE    @Z40LB64*/
                 9 VUAINDEX  FIXED(8), /* VIRTUAL UNIT ADDR  @Z40LB64*/
                 9 VVAINDEX  FIXED(8), /* VIRTUAL VOL ADDR   @Z40LB64*/
                 9 LUAINDEX  FIXED(8), /* LOGICAL UNIT ADDR  @Z40LB64*/
                 9 RPINDEX   FIXED(8), /* REAL PAGE VALUE    @Z40LB64*/
                 9 SDGINDEX  FIXED(8), /* SDG INDEX VALUE    @Z40LB64*/
                 9 *         FIXED(8), /* RESERVED           @Z40LB64*/
                 9 *         FIXED(8), /* RESERVED           @Z40LB64*/
               7 MSFINDEX  FIXED(8),   /* MSF ID VALUE       @Z40LB64*/
             5 VSNINDEX  CHAR(6),      /* VOL SERIAL VALUE   @Z40LB64*/
             5 CHRINDEX  CHAR(5),      /* CCHHR VALUE        @Z40LB64*/
           3 FLDVALUE(2) BDY(WORD),    /* FIELD VALUES       @Z40LB64*/
             5 FLDCHAR  CHAR(12)       /* CHARACTER VALUE    @Z40LB64*/
                        BDY(WORD),                         /*@Z40LB64*/
               7 FLDNUM   FIXED(31);   /* NUMERIC VALUE      @Z40LB64*/

     /* CHECKMSS CHECK-OFF TABLES                            @Z40LB64*/

     DCL VICHKFF(4560) BIT(8)          /* VOLUME INVENTORY   @Z40LB64*/
           BASED(VICOPTR);             /* CHECK-OFF TABLE    @Z40LB64*/
     DCL TVLCHKFF(1280) BIT(8)         /* TRANSIENT VOL LIST @Z40LB64*/
           BASED(TVLCOPTR);            /* CHECK-OFF TABLE    @Z40LB64*/
     DCL MVTCHKFF(1024) BIT(8)         /* MOUNTED VOL TABLE  @Z40LB64*/
           BASED(MVTCOPTR);            /* CHECK-OFF TABLE    @Z40LB64*/
     DCL CDBCOT (16) BIT(192)          /*CDB CHECK-OFF TABLE @Z40LB61*/
                     BASED(CDBCOPTR);                      /*@Z40LB61*/
     DCL CDBCHKFF (16,3,8) BIT(8) BASED(CDBCOPTR);         /*@Z40LB61*/
     DCL VVACOT (16) BIT(192)          /*VVAT CHECK-OFF TBL  @Z40LB61*/
                     BASED(VVACOPTR);                      /*@Z40LB61*/
     DCL VVACHKFF (16,24) BIT(8) BASED(VVACOPTR);          /*@Z40LB61*/
     DCL VMXCOT (16) BIT(192)          /*VMX CHECK-OFF TABLE @Z40LB61*/
                     BASED(VMXCOPTR);                      /*@Z40LB61*/
     DCL VMXCHKFF (16,24) BIT(8) BASED(VMXCOPTR);          /*@Z40LB61*/
     DCL RPMCOT (30) BIT(448)          /*RPM CHECK-OFF TABLE @Z40LB61*/
                     BASED(RPMCOPTR);                      /*@Z40LB61*/
     DCL RPMCHKFF (30,8,7) BIT(8) BASED(RPMCOPTR);         /*@Z40LB61*/
     DCL DVBCOT (30) BIT(128)          /*DVB CHECK-OFF TABLE @Z40LB61*/
                     BASED(DVBCOPTR);                      /*@Z40LB61*/
     DCL DVBCHKFF (30,16) BIT(8) BASED(DVBCOPTR);          /*@Z40LB61*/
     DCL LPBCOT (30) BIT(128)          /*LPB CHECK-OFF TABLE @Z40LB61*/
                     BASED(LPBCOPTR);                      /*@Z40LB61*/
     DCL LPBCHKFF (30,16) BIT(8) BASED(LPBCOPTR);          /*@Z40LB61*/
     DCL 1 VVICOT    BIT(192)          /*VVIT CHECK-OFF TBL  @Z40LB61*/
                     BASED(VVICOPTR(SA#)),
           3 VVICHKFF (24) BIT(8);                         /*@Z40LB61*/
     DCL 1 VADCOT    BIT(192)          /*VAD CHECK-OFF TABLE @Z40LB61*/
                     BASED(VADCOPTR(SA#)),
           3 VADCHKFF (3,8) BIT(8);                        /*@Z40LB61*/
     DCL 1 PSTCOT    BIT(896)          /*PST CHECK-OFF TABLE @Z40LB61*/
                     BASED(PSTCOPTR(SA#)),
           3 PSTCHKFF (2,8,7) BIT(8);                      /*@Z40LB61*/
     /* CHECKMSS PARAMETER LIST OF POINTERS AND OTHER NON-   @Z40LB61*/
     /* BASED VARIABLES ASSOCIATED WITH COMMON DATA AREAS    @Z40LB61*/
     DCL 1 CDALIST,
           3 IVADPTR (16) PTR(31),     /*INTERNAL VAD PTR    @Z40LB61*/
           3 IVVITPTR(16) PTR(31),     /*INTERNAL VVIT PTR   @Z40LB61*/
           3 IPSTPTR (16) PTR(31),     /*INTERNAL PST PTR    @Z40LB61*/
           3 ILTRPTR (16) PTR(31),     /*INTERNAL LTR PTR    @Z40LB61*/
           3 IMERPTR   PTR(31),        /*INTERNAL MER PTR    @Z40LB61*/
           3 CCHHRPTR  PTR(31),        /*CCHHR TABLE PTR     @Z40LB61*/
           3 EARGPTR   PTR(31),        /*'ENTRYARG' PTR      @Z40LB61*/
           3 MARGPTR   PTR(31),        /*'MSGARG' PTR        @Z40LB61*/
           3 VICOPTR   PTR(31),        /*POINTER TO VI       @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 TVLCOPTR  PTR(31),        /*POINTER TO TVL      @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 MVTCOPTR  PTR(31),        /*POINTER TO MVT      @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 CMCOPTR(4,4) PTR(31),     /*POINTER TO CELL MAP @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 CDBCOPTR  PTR(31),        /*POINTER TO CDB      @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 VVACOPTR  PTR(31),        /*POINTER TO VVAT     @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 VMXCOPTR  PTR(31),        /*POINTER TO VMX      @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 RPMCOPTR  PTR(31),        /*POINTER TO SDG RPM  @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 DVBCOPTR  PTR(31),        /*POINTER TO SDG DVB  @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 LPBCOPTR  PTR(31),        /*POINTER TO SDG LPB  @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 VVICOPTR(16) PTR(31),     /*POINTER TO VVIT     @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 VADCOPTR(16) PTR(31),     /*POINTER TO VAD      @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 PSTCOPTR(16) PTR(31),     /*POINTER TO PST      @Z40LB61
                                         CHECK-OFF TABLE     @Z40LB61*/
           3 VVATADDR  PTR(31),        /*VVAT IN-CORE PTR    @Z40LB61*/
           3 CBMADDR   PTR(31),        /*CBM IN-CORE PTR     @Z40LB61*/
           3 CIADDR    PTR(31),        /*CI IN-CORE PTR      @Z40LB61*/
           3 MVCBADDR  PTR(31),        /*MVT CONTROL BLOCKS  @Z40LB61
                                         IN-CORE POINTER     @Z40LB61*/
           3 CMBUFPTR(5,4) PTR(31),    /*CELL MAP BLOCKS     @Z40LB61
                                         IN-CORE POINTER     @Z40LB61*/
           3 RWCSPTR   PTR(31),        /*PTR TO READ MSC/SA  @Z40LB61
                                         ARGUMENT LIST       @Z40LB61*/
           3 EXARGPTR  PTR(31),        /*PTR TO UEXCP        @Z40LB61
                                         ARGUMENT LIST       @Z40LB61*/
           3 WCSBFPTR  PTR(31),        /*WCS BUFFER PTR      @Z40LB61*/
           3 CHRADDR1  PTR(31),        /*PTR TO I/O BUFFER 1 @Z40LB61*/
           3 CHRADDR2  PTR(31),        /*PTR TO I/O BUFFER 2 @Z40LB61*/
           3 RVVIPTR   PTR(31),        /*BASE PTR TO RVVI    @Z40LB64*/
           3 MSVIAPTR  PTR(31),        /*MSVI BUFFER PTR     @Z40LB64*/
           3 MSGAPTR   PTR(31),        /*PTR TO IDCCH04      @Z40LB61
                                         MESSAGE AREA        @Z40LB61*/
           3 TEXTAPTR  PTR(31),        /*PTR TO IDCCH04      @Z40LB61
                                         TEXT AREA           @Z40LB61*/
           3 FMTAPTR   PTR(31),        /*PTR TO IDCCH04      @Z40LB61
                                         FORMAT AREA         @Z40LB61*/
           3 BDATAPTR  PTR(31),        /*PTR TO IDCCH04      @Z40LB61
                                         BLOCK DATA AREA     @Z40LB61*/
           3 SAVLDCNT  FIXED(15),      /*COUNT OF VALID SAS  @Z40LB61*/
           3 VLDSAID(16) FIXED(15),    /*VALID SA#S IN 1ST   @Z40LB61
                                         'SAVLDCNT' ENTRIES  @Z40LB61*/
           3 MSFVLCNT  FIXED(15),      /*COUNT OF VALID MSFS @Z40LB61*/
           3 VLDMSFID(4) FIXED(15),    /*VALID MSF#S IN 1ST  @Z40LB61
                                         'MSFVLCNT' ENTRIES  @Z40LB61*/
           3 *         BIT(8),         /*COMMON FLAGS        @Z40LB61*/
             5 MSCCHK  BIT(1),         /*MSC-MSC CHECKING    @Z40LB61
                                         REQUEST FLAG        @Z40LB61*/
             5 SACHK   BIT(1),         /*MSC-SA CHECKING     @Z40LB61
                                         REQUEST FLAG        @Z40LB61*/
             5 MSVICHK BIT(1),         /*MSC-MSVI CHECKING   @Z40LB61
                                         REQUEST FLAG        @Z40LB61*/
             5 *       BIT(5);         /*RESERVED            @Z40LB61*/
./ ADD NAME=IDCDF65
 %       /************************************************************/
         /*                                                          */
         /* REPAIRV GLOBAL DATA AREAS - AMSDF65                      */
         /*                                                          */
         /*     1) PLS/2 MACRO DEFINITIONS                           */
         /*     2) GLOBAL REPTBL - REPAIRV COMMUNICATIONS REGION     */
         /*     3) DATA STRUCTURES                                   */
         /*                                                          */
         /************************************************************/

         /************************************************************/
         /*                                                          */
         /* PLS/2 MACRO DEFINITONS(MUST PRECEDE OTHER DECLARES)      */
         /*                                                          */
         /************************************************************/


         /************************************************************/
         /* FUNCTION - THESE MACROS ARE USED BY REPAIRV FOR ALL      */
         /*            CALLS TO IDCRDIO                              */
         /*                                                          */
         /* INVOCATION - ?FUNRCD DS(DSOPT) FOR(FOROPT);              */
         /*                                                          */
         /* INPUT -                                                  */
         /*            FUN = LOAD  ADD  GET  UPD  POS            */
         /*            DSOPT = IN  OUT                              */
         /*            FOROPT = NUP  UPD                            */
         /*                                                          */
         /* OUTPUT - APPRORIATE BITS ARE SET IN WFREQ                */
         /*                                                          */
         /* ERROR MESSAGES - ISSUED IF MACRO CALLED IMPROPERLY       */
         /*                                                          */
         /* RETURN CODE - 0 = SUCCESSFUL EXPANSION                   */
         /*               4 = NO EXPANSION DUE TO ERROR              */
         /*                                                          */
         /************************************************************/

  LOADRCD: ADDRCD: GETRCD: UPDRCD: POSRCD:
         MACRO KEYS(DS,FOR);
         DCL OP CHAR;
         DCL RCODE FIXED;
         OP = MACNAME(1:1);
         RCODE = 4;
         IF DS(1) = '' THEN RCODE = 0;
         IF DS(1) = 'IN' THEN RCODE = 0;
         IF DS(1) = 'OUT' THEN RCODE = 0;
         IF RCODE = 4 THEN DO;
           ANS MSG('DS OPTION UNRECOGNIZABLE');
           GOTO WFMOUT;
         END;
         RCODE = 4;
         IF DS(1) = 'IN' THEN DO;
           IF OP = 'P' THEN RCODE = 0;
           IF OP = 'G' THEN RCODE = 0;
         END;
         ELSE RCODE = 0;
         IF RCODE = 4 THEN DO;
           ANS MSG('FUNCTION NOT VALID FOR INPUT DS');
           GOTO WFMOUT;
         END;
         RCODE = 4;
         IF FOR(1) = '' THEN RCODE = 0;
         IF FOR(1) = 'NUP' THEN RCODE = 0;
         IF FOR(1) = 'UPD' THEN RCODE = 0;
         IF RCODE = 4 THEN DO;
           ANS MSG('FOR OPTION UNRECOGNIZABLE');
           GOTO WFMOUT;
         END;
         IF OP = 'G' THEN
           IF DS(1) = '' THEN DO;
             ANS MSG('DS OPTION MUST BE CODED FOR GETRCD');
             RCODE = 4;
             GOTO WFMOUT;
           END;
         IF OP = 'G' THEN DO;
           IF DS(1) = 'OUT' THEN IF FOR(1) = '' THEN RCODE = 4;
         END;
         IF RCODE = 4 THEN DO;
           ANS MSG('FOR OPTION MUST BE CODED FOR GETRCD DS(OUT)');
           GOTO WFMOUT;
         END;
         ANS('DO;') SKIP COL(MACCOL);
         ANS('WFREQ = ''''B;') SKIP COL(MACCOL+2);
         /*************************************************************/
         /* DETERMINE IF ADDRCD,LOADRCD, OR GETCRD HAS BEEN REQUESTED */
         /*************************************************************/
         IF OP = 'L' THEN DO;
           ANS('WFRLD  = ON;') SKIP COL(MACCOL+2);
           ANS('/* LOADRCD */') COL(MACCOL+20);
         END;
         IF OP = 'A' THEN DO;
           ANS('WFRADD = ON;') SKIP COL(MACCOL+2);
           ANS('/*  ADDRCD */') COL(MACCOL+20);
         END;
         IF OP = 'G' THEN DO;
           ANS('WFRGET = ON;') SKIP COL(MACCOL+2);
           ANS('/*  GETRCD */') COL(MACCOL+20);
           IF DS(1) = 'IN' THEN DO;
             ANS('WFRIN  = ON;') SKIP COL(MACCOL+2);
             ANS('/* INPUT DS */') COL(MACCOL+20);
           END;
           ELSE DO;
             IF FOR(1) = 'UPD' THEN DO;
               ANS('WFRUP  = ON;') SKIP COL(MACCOL+2);
               ANS('/* UPDATE */') COL(MACCOL+20);
             END;
           END;
         END;
         /*************************************************************/
         /* DETERMINE IF UPDRCD OR POSRCD FUNCTION WAS REQUESTED*/
         /*************************************************************/
         IF OP = 'U' THEN DO;
           ANS('WFRUPD = ON;') SKIP COL(MACCOL+2);
           ANS('/*  UPDRCD */') COL(MACCOL+20);
           ANS('WFRUP  = ON;') SKIP COL(MACCOL+2);
           ANS('/* UPDATE */') COL(MACCOL+20);
         END;
         IF OP = 'P' THEN DO;
           ANS('WFRPOS = ON;') SKIP COL(MACCOL+2);
           ANS('/*  POSRCD */') COL(MACCOL+20);
           IF DS(1) = 'IN' THEN DO;
             ANS('WFRIN  = ON;') SKIP COL(MACCOL+2);
             ANS('/* INPUT DS */') COL(MACCOL+20);
           END;
         END;
         ANS('CALL IDCRDIO;') SKIP COL(MACCOL+2);
         ANS('RFY RTNREG RSTD;') SKIP COL(MACCOL+2);
         ANS('TESTRC = RTNREG;') SKIP COL(MACCOL+2);
         ANS('RFY RTNREG UNRSTD;') SKIP COL(MACCOL+2);
         ANS('END;') SKIP COL(MACCOL);
 WFMOUT: RETURN CODE(RCODE);
 %END;
 @EJECT;
 %       /************************************************************/
         /* FUNCTION - THIS MACRO IS USED BY REPAIRV FOR ALL         */
         /*            CALLS TO CKERR                                */
         /*                                                          */
         /* INVOCATION - ?CALLCKER(ERRNUM,MSGVARX,...);              */
         /*                                                          */
         /* INPUT -                                                  */
         /*            ERRNUM = ENTRY NUMBER FOR CKERR ACTION TABLE  */
         /*            MSGVARX = MESSAGE VARIABLES TO BE INSERTED    */
         /*                      IN MESSAGE                          */
         /*                                                          */
         /* OUTPUT - APPRORIATE BITS ARE SET IN CKREQ                */
         /*                                                          */
         /************************************************************/

  CALLCKER:
         MACRO;
         DCL INDEX1 FIXED;
         DCL INDEX2 FIXED;
         INDEX1 = 1;
         INDEX2 = 2;
         ANS('DO;') SKIP COL(MACCOL);
         ANS('CKREQ = CKREQ && CKREQ;') SKIP COL(MACCOL+2);
         ANS('CKRERN = 'MACLIST(1)';') SKIP COL(MACCOL+2);
         IF NUMBER(MACLIST) > 1
           THEN
 MVAR:       DO;
               ANS('CKRMVAR(INDEX1) = ADDR('MACLIST(INDEX2)');')
                 SKIP COL(MACCOL+2);
               INDEX1 = INDEX1 + 1;
               INDEX2 = INDEX2 + 1;
               IF INDEX2 <= NUMBER(MACLIST)
                 THEN
                   GOTO MVAR;
             END;
         ANS('CALL IDCRDER;') SKIP COL(MACCOL+2);
         ANS('END;') SKIP COL(MACCOL);
 %END;

 %       /************************************************************/
         /*                                                          */
         /* FUNCTION - THIS MACRO SIMULATES THE MVCL ASSEMBLER       */
         /*            INSTRUCTION THUS ALLOWING MORE THAN 256       */
         /*            BYTES TO BE MOVED AT A TIME.                  */
         /*                                                          */
         /* INVOCATION - ?MOVELONG TARGET(TARAREA,TARLENG)           */
         /*                        SOURCE(SRCAREA,SRCLENG);          */
         /*                                                          */
         /* INPUT - TARAREA = ADDRESS OF RECEIVING FIELD             */
         /*         TARLENG = LENGTH OF RECEIVING FIELD              */
         /*         SRCAREA = ADDRESS OF SOURCE FIELD                */
         /*         SRCLENG = LENGTH OF SOURCE FIELD                 */
         /*                                                          */
         /* OUTPUT - RECEIVING FIELD GETS THE STRING                 */
         /*          OF THE SOURCE FIELD AS IN THE MVCL              */
         /*          ASSEMBLER INSTRUCTION.                          */
         /*                                                          */
         /************************************************************/

  MOVELONG: MACRO KEYS(TARGET,SOURCE);
         ANS('RFY (REG2,REG3,REG4,REG5) RSTD;')
                   SKIP COL(MACCOL);
         ANS('REG2 = 'TARGET(1)';') SKIP COL(MACCOL);
         ANS('REG3 = 'TARGET(2)';') SKIP COL(MACCOL);
         ANS('REG4 = 'SOURCE(1)';') SKIP COL(MACCOL);
         ANS('REG5 = 'SOURCE(2)';') SKIP COL(MACCOL);
         ANS('MVCL (REG2,REG4);') SKIP COL(MACCOL);
         ANS('RFY(REG2,REG3,REG4,REG5) UNRSTD;')
                   SKIP COL(MACCOL);
 %END;

         /**********************************************************/
         /*                                                        */
         /* REPAIRV COMMUNICATIONS REGION                          */
         /*                                                        */
         /**********************************************************/
         DCL 1 REPTBL,
               2 REPCB,
                 3 REPRESER CHAR(12),   /*SPACE FOR IDENTIFER REPTBL*/
                 3 REPARFIO PTR(31),    /*PTR TO IOCSTR FOR
                                              ALTERNATE REPORT FILE */
                 3 REPIRWIO PTR(31),    /*PTR TO IOCSTR FOR IN
                                          REPAIR WORK FILE          */
                 3 REPORWIO PTR(31),    /*PTR TO IOCSTR FOR OUT
                                                 REPAIR WORK FILE   */
                 3 REPIDSOP PTR(31),    /*PTR TO IOCTLBK FOR IN FILE*/
                 3 REPODSOP PTR(31),    /*PTR TO IOCTLBK FOR OUT DS */
                 3 REPIDSAR PTR(31),    /*PTR TO UEXCP READ ARGUMENT
                                            LIST FOR INPUT DATA SET */
                 3 REPODSAR PTR(31),    /*PTR TO UEXCP READ ARGUMENT
                                            LIST FOR OUTPUT DATA SET*/
                 3 REPSPRIT PTR(31),    /*PTR TO IDCRDPT ARG LIST   */
                 3 REPIBFPT PTR(31),    /*PTR TO IN BUFFER FOR FILE */
                 3 REPOBFPT PTR(31),    /*PTR TO OUT BUFFER FOR DS  */
                 3 REPBUFF0 PTR(31),    /*PTR TO IN BUFFER FOR
                                              REPAIR WORK FILE      */
                 3 REPBUFF1 PTR(31),    /*PTR TO OUT BUFFER TO
                                              REPAIR WORK FILE      */
                 3 REPRWHDI PTR(31),    /*PTR TO INPUT REPAIR WORK
                                            FILE HEADER RECORD      */
                 3 REPRWHDO PTR(31),    /*PTR TO OUTPUT REPAIR WORK
                                            FILE HEADER RECORD      */
                 3 REPINCL  PTR(31),    /*TO CLOSE INPUT            */
                 3 REPOUTCL PTR(31),    /*TO CLOSE OUTPUT           */
                 3 REPIXTN2 PTR(31),    /*ADDR OF INPUT XTNTTBL2    */
                 3 REPIXTNT PTR(31),    /*ADDR OF INPUT XTNTTBL     */
                 3 REPOXTN2 PTR(31),    /*ADDR OF OUTPUT XTNTTBL2   */
                 3 REPOXTNT PTR(31),    /*ADDR OF OUTPUT XTNTTBL    */
                 3 REPIINFO PTR(31),    /*ADDR OF INPUT UIOINFO AREA*/
                 3 REPOINFO PTR(31),    /*ADDR OF OUTPT UIOINFO AREA*/
                 3 REPRWHAR PTR(31),    /*ADDR OF REPAIR WORK FILE
                                         HEADER INFORMATION AREA    */
                 3 REPRWINA PTR(31),    /*ADDR OF REPAIR WORK FILE
                                                INFORMATION AREA    */
                 3 REPISYSI PTR(31),    /*INPUT USYSINFO AREA ADDR  */
                 3 REPOSYSI PTR(31),    /*OUTPUT USYSINFO AREA ADDR */
                 3 REPILCPT PTR(31),    /*PTR TO LOCATION TABLE FOR
                                          THE INPUT DATA SET        */
                 3 REPOLCPT PTR(31),    /*PTR TO LOCATION TABLE FOR
                                          THE OUTPUT DATA SET       */
                 3 REPIDEVA PTR(31),    /* PTR TO INPUT DEVTYPE AREA*/
                 3 REPODEVA PTR(31),    /* PTR TO OPUT DEVTYPE AREA */
                 3 REPQRPTR PTR(31),    /* PTR TO QNAME AND RNAME   */
                 3 REPALLAG PTR(31),    /* PTR TO SPACE FOR ALLAGL  */
                 3 REPEXOAR PTR(31),    /* PTR TO SPACE FOR EXOARG  */
                 3 REPOPAGL PTR(31),    /* PTR TO SPACE FOR OPNAGL  */
                 3 REPCPPTR PTR(31),    /* PTR TO CATALOG PARM LIST */
                 3 REPCDSOP PTR(31),    /* IOCPTR FOR DS            */
               /*****************************************************/
               /*                                                   */
               /* WORKING STORAGE FOR IDCRD02-IDCRD07               */
               /*                                                   */
               /*****************************************************/
               2 REPCBEXT,
                 3 REPR0LN  FIXED(16),  /* RWF RECORD 0 LENGTH      */
                 3 REPR1LN  FIXED(16),  /* RWF RECORD 1 LENGTH      */
                 3 REPSRPR,
                   4 REPSRPRT BIT(1),   /*HEADER SWITCH FOR IDCRDPT */
                   4 *        BIT(7),
                   4 * CHAR(1),         /*RESERVED                  */
                 3 REPRC FIXED(16),     /*RETURN CODE               */
                 3 REPRCDCT FIXED(31),  /*RECORDS PROCESSED COUNTER */
                 3 I        FIXED(8),   /* INDEX1 FOR TNTTBL PROCESS*/
                 3 J        FIXED(8),   /* INDEX2 FOR TNTTBL PROCESS*/
                 3 K        FIXED(8),   /* INDEX3 FOR TNTTBL PROCESS*/
                 3 *        FIXED(8),   /* RESERVED                 */
                 3 CKREQ BDY(WORD),     /*   CKERR PARM LIST        */
                   4 CKRERN  FIXED(15), /*   ERROR NUMBER           */
                   4 *       FIXED(15), /*   RESERVED               */
                   4 CKRMVAR (10) PTR(31), /*  PTRS TO MSG VARIABLES*/
                 3 RDCATRC FIXED(31),   /*     UCATLG RETURN CODE   */
                 3 WFIOGUK CHAR(11),    /*     GET UPDATE KEY       */
                 3 *         CHAR(1),   /*   RESERVED               */
                 3 WFAREA BDY(WORD),    /*   WFIO ARGUEMENTS        */
                   4 WFIODAD PTR(31),   /*   DATA ADDRESS           */
                   4 WFIODLN FIXED(31), /*   DATA LENGTH            */
                   4 WFIOKYA PTR(31),   /*   KEY ADDRESS            */
                   4 WFREQ BIT(16),     /*   FUNCTION FLAGS         */
                     5 WFRTYP BIT(8),   /*   FUNCTION TYPE          */
                       6 WFRADD BIT(1), /*   ADDRCD                 */
                       6 WFRLD  BIT(1), /*   LOADRCD                */
                       6 WFRGET BIT(1), /*   GETRCD                 */
                       6 WFRUPD BIT(1), /*   UPDRCD                 */
                       6 WFRPOS BIT(1), /*   POSRCD                 */
                       6 *      BIT(3), /*   RESERVED               */
                     5 WFROPT BIT(8),   /*   OPTIONS                */
                       6 WFRIN  BIT(1), /*   INPUT DS               */
                       6 WFRUP  BIT(1), /*   UPDATE                 */
                       6 *      BIT(6), /*   RESERVED               */
                 3 REPENQSW FIXED(8);   /*   ENQUEUE SENSE SWITCH   */

         /***********************************************************/
         /*                                                         */
         /* DATA STRUCTURES FOR REPAIRV                             */
         /*                                                         */
         /***********************************************************/

          /* REPAIR WORKFILE HEADER RECORD                          */

          DCL 1 RWFHDR BDY(WORD) BASED,
                2 RWFHKEY   CHAR(11),   /* RWF KEY                  */
                2 RWFHDSNR  CHAR(44),   /*  REPAIRWORKFILE          */
                2 RWFHDSNU  CHAR(44),   /* DSNAME OF USER DATA SET  */
                2 RWFHFM CHAR(4);       /* INFO AREA - SEE RWDEF    */
          /* ADDRESSABILITY TO INFORMATION AREA OF WORKFILE HDR REC */
          DCL 1 RWDEF  DEFINED(RWFHDR) BDY(WORD),
                2 * CHAR(89),           /* SEE RWFHDR               */
                2 RWFHFT  CHAR(1),      /* F MEANS FIXED RECORD
                                           BLANK MEANS NOT FIXED    */
                2 RWFHDLN FIXED(16),    /* RCD LENGTH OR ZERO       */
                2 RWFHKLN FIXED(8);     /* KEY LENGTH OR ZERO       */

          /* IDCRDPT ARGUMENT LIST                                  */
          DCL 1 SRPRTARG BDY(WORD) BASED(REPSPRIT),

                2 SRVRECL FIXED(31),    /* VSAM REC LEN MINUS F + K */
                2 SRVREPTR PTR(31),     /* PTR TO VSAM RECORD       */
                2 SRDSNHDR PTR(31),     /* PTR TO DSNAME IN RWF     */
                2 SRVOLPTR PTR(31),     /* PTR TO VOL SER NUMBER    */
                2 SRRWFDSN PTR(31),     /* PTR TO DSNAME OF RWF     */
                2 SRRWFKEY PTR(31),     /* PTR TO KEY OF RWF        */
                2 SRERCODE PTR(31),     /* PTR TO ERROR CODE        */
                2 SRDSNPTR PTR(31),     /* PTR TO DSNAME - DATA SET */
                2 SRSPRECL FIXED(31),   /* KEY + DATA LEN STAGPACK  */
                2 SRRECPTR PTR(31),     /* PTR TO COUNT OF NON-VSAM */
                2 SRCCHHRP PTR(31);     /* PTR TO CCHHR             */

         /* REPAIR WORKFILE INFORMATION AREA                        */

         DCL 1 RWFINFO BASED(REPRWINA),
               2 RWFDDN CHAR(8),        /* DDNAME                   */
               2 RWFDSN CHAR(44),       /* DSNAME                   */
               2 RWFVOL (5) CHAR(6),    /* VOLSER                   */
               2 RWFKEY1,               /* BEGINING RWF KEY         */
                 3 RWFKVOL1 CHAR(6),    /* VOLSER                   */
                 3 RWFKCHR1 CHAR(5),    /* CCHHR                    */
               2 RWFKEY2,               /* ENDING RWF KEY           */
                 3 RWFKVOL2 CHAR(6),    /* VOLSER                   */
                 3 RWFKCHR2 CHAR(5);    /* CCHHR                    */

         /* RWF HEADER RECORD INFORMATION                           */

         DCL 1 RWHDRINF BASED(REPRWHAR),
               2 RWHDRFIX CHAR(1),      /* F FOR FBS RECORD FORMAT  */
                                        /* 0 FOR OTHER RCD FORMATS  */
               2 *        CHAR(4),
               2 RWHDRKLN FIXED(8),     /* KEY LN IF RWHDRFIX = F   */
                                        /* 0 IF RWHDRFIX ^= F       */
               2 RWHDRDLN FIXED(16);    /* DATA LN IF RWHDRFIX = F  */
                                        /* 0 IF RWHDRFIX ^= F       */

         /* IDCRDRD  ARGUMENT LIST                                  */

         DCL 1 RDARG BDY(WORD) BASED,
               2 RDRES      CHAR(8),    /*RESERVED                  */
               2 RDCTLBK    PTR(31),    /*POINTER TO I/O CNTL BLK   */
               2 RDIOAREA   PTR(31),    /*PTR TO RIOAREA            */
               2 RDDARE     PTR(31),    /*PTR TO DATA READ          */
               2 RDLOCPTR   PTR(31),    /*POINTER TO LOC TABLE      */
               2 RDCCWCNT   FIXED(15),  /*NUM OF CCWS EXECUTED      */
               2 RDCHR,
                  3 RDCC    FIXED(16),  /*CYLINDER NUMBER           */
                  3 RDHH    FIXED(16),  /*HEAD NUMBER               */
                  3 RDRECNUM FIXED(8),  /*RECORD NUMBER             */
               2 RDDS       FIXED(8),   /* ZERO FOR DATA SET        */
               2 RDRWPKLN   PTR(31),    /* KEY LEN POINTER          */
               2 RDSPACE,               /* RESERVED FOR UEXCP       */
                  3 *       FIXED(8),   /* RESERVED                 */
                  3 *       PTR(24),    /* RESERVED                 */
                  3 *       FIXED(15),  /* RESERVED                 */
                  3 *       FIXED(15),  /* RESERVED                 */
                  3 *       FIXED(15),  /* RESERVED                 */
               2 RDFUNC FIXED(8),       /* WRITE FUNCTION BYTE      */
               2 RDSPKL FIXED(8),       /* STAGING PACK KEY LENGTH  */
               2 RDSPDL FIXED(15),      /* STAGING PACK DATA LENGTH */
               2 RDLENTOT FIXED(15),    /* NUM OF LENGTH ENTRIES    */
               2 RDKLEN    PTR(31),     /* PTR LEN ENTRIES FOR KL   */
               2 RDDLEN    PTR(31);     /* PTR LEN ENTRIES FOR DL   */

         DCL RDSPKLDL CHAR(3) DEFINED(RDSPKL);
         /* UIOINFO RETURN AREAS                                    */

         DCL 1 INFOAREA BASED,
               2 INFAREAL   FIXED(16),  /* LENGTH OF RETURN AREA    */
               2 INFDATAL   FIXED(16),  /* LENGTH OF DATA RETURNED  */
               2 INFAREA    CHAR(*);
         DCL 1 INFODSN BASED,
               2 INFDSNID   CHAR(2),    /* IDENTIFIER - X'0001'     */
               2 INFDSNLN   FIXED(16),  /* LENGTH OF DATA RETURNED  */
               2 INFDSN     CHAR(44);   /* DATA SET NAME            */
         DCL 1 INFOVOL BASED,
               2 INFVOLID   CHAR(2),    /* IDENTIFIER - X'0002'     */
               2 INFVOLLN   FIXED(16),  /* LENGTH OF DATA RETURNED  */
               2 INFVOL(5)  CHAR(6);    /* VOLUME SERIAL NUMBER LIST*/

         /* DEVICE TYPE AREA DSECT                                  */

         DCL 1 DEVAREA BDY(WORD) BASED,
               2 DEVDEVTP,              /* UCB DEVICE TYPE          */
                 3 DEVTBYT1 BIT(8),     /* MODEL BITS               */
                 3 DEVTBYT2,            /* OPTION FLAGS             */
                   4 * BIT(4),
                   4 DEVRVDEV BIT(1),   /* 0 = REAL DEVICE          */
                                        /* 1 = VIRTUAL DEVICE       */
                   4 * BIT(3),
                 3 DEVTBYT3 BIT(8),     /* CLASS BITS               */
                 3 DEVTBYT4 BIT(8),     /* DEVICE CODE              */
               2 DEVMAXBK   FIXED(32),  /* MAXIMUM DEVICE BLOCKSIZE */
               2 *,
                 3 DEVMAXCC FIXED(16),  /* MAXIMUM PHYSICAL CYLINDER*/
                 3 DEVMAXHH FIXED(16),  /* MAXIMUM PHYSICAL TRACKS  */
               2 DEVWORD3,
                 3 DEVTC    FIXED(16),  /*TRACK CAPACITY            */
                 3 DEVBOH,
                   4 DEVBOH1 FIXED(8),  /* BLOCK OVERHEAD 3330      */
                   4 DEVBOH2 FIXED(8),  /* THIS & ABOVE IS BLOCK    */
               2 DEVWORD4,
                 3 DEVKC    FIXED(8),   /* KEY CONSTANT             */
                 3 DEV4B1,
                   4 *      BIT(4),
                   4 INF4FLG BIT(1),    /* ON INDICATES TWO BYTES
                                   OF BLOCK OVERHEAD MUST BE HANDLED*/
                   4 *      BIT(3),
                   4 *      CHAR(2),    /* RESERVED                 */
               2 DEVWORD5 FIXED(32);

         /* EXTENT TABLE 2: DATA SET DEB EXTENTS                    */

         DCL 1 XTNTTBL2 BASED,
               2 XTN2ENT(140),
                 3 XTN2DSN CHAR(44),      /* DATA SET NAME          */
                 3 XTN2CHR1,              /*  LOWER LIMIT CCHH      */
                   4 XTN2CC1  FIXED(16),
                   4 XTN2HH1  FIXED(16),
                 3 XTN2CHR2,              /*  UPPER LIMIT CCHH      */
                   4 XTN2CC2   FIXED(16),
                   4 XTN2HH2   FIXED(16);

         /* EXTENT TABLE 3: USER SUPPLIED RANGE MERGED WITH XTNTTBL2*/

         DCL 1 XTNTTBL BASED,
               2 XTNTHDR,                 /* EXTENT TABLE HEADER    */
                 3 XTNHDDN   CHAR(8),     /* DDNAME                 */
                 3 XTNHDSN   CHAR(44),    /* DSNAME                 */
                 3 XTNHVOLN  CHAR(1),     /* VOLUME COUNT OF 1      */
                 3 XTNHVOL   CHAR(6),     /* VOLSER                 */
                 3 *         CHAR(1),
                 3 XTNHPWD   CHAR(8),     /* PASSWORD               */
                 3 XTNHCHR1,              /* USER LOWER LIMIT CCHHR */
                   4 XTNHCC1   FIXED(16),
                   4 XTNHHH1   FIXED(16),
                   4 XTNHR1    FIXED(8),
                 3 *         CHAR(3),     /* RESERVED               */
                 3 XTNHCHR2,              /* USER UPPER LIMIT CCHHR */
                   4 XTNHCC2   FIXED(16),
                   4 XTNHHH2   FIXED(16),
                   4 XTNHR2    FIXED(8),
                 3 *         CHAR(3),     /* RESERVED               */
                 3 XTNHMODE  CHAR(1),     /* I=INPUT,O=OUTPUT       */
                 3 *         CHAR(3),
               2 XTNTENT(140),            /* EXTENT TABLE ENTRIES   */
                 3 XTNTDDN   CHAR(8),     /* DDNAME                 */
                 3 XTNTDSN   CHAR(44),    /* DSNAME                 */
                 3 XTNTVOLN  CHAR(1),     /* VOLUME COUNT OF 1      */
                 3 XTNTVOL   CHAR(6),     /* VOLSER                 */
                 3 *         CHAR(3),     /* RESERVED               */
                 3 XTNTCHR1,              /* MERGED LOW LIM  CCHHR  */
                   4 XTNTCC1   FIXED(16),
                   4 XTNTHH1   FIXED(16),
                   4 XTNTR1    FIXED(8),
                 3 *         CHAR(3),     /* RESERVED               */
                 3 XTNTCHR2,              /* MERGED UPPER LIM CCHHR */
                   4 XTNTCC2   FIXED(16),
                   4 XTNTHH2   FIXED(16),
                   4 XTNTR2    FIXED(8),
                 3 *         CHAR(3);     /* RESERVED               */
         /* STRUCTURE TO REFERENCE 'RESERVE' QUEUE PARAMETERS       */
         DCL 1 SPLIST BASED(REPQRPTR),
               2 SPQNAME CHAR(8),         /* QNAME                  */
               2 SPRNAME,                 /* RNAME                  */
                 3 SPRLEN CHAR(1),        /* RNAME LENGTH           */
                 3 SPRVOL CHAR(6);        /* VOLSER                 */
         /* REPAIR WORKFILE DATA RECORD                             */
         DCL 1 RWFR BASED BDY(WORD),
               2 RWFRKEY  CHAR(11),       /* RWF KEY                */
               2 RWFRFLG CHAR(5),         /* SEE RWFRDE             */
               2 RWFRCNT,
                 3 RWFRCC FIXED(16),      /* CC                     */
                 3 RWFRHH FIXED(16),      /* HH                     */
                 3 RWFRR  FIXED(8),       /* R                      */
                 3 RWFRKLN FIXED(8),      /* RECORD KEY LENGTH      */
                 3 RWFRDLN FIXED(16),     /* RECORD DATA LENGTH     */
               2 RWFRKD CHAR(*);          /* RECORD KEY/DATA        */
         /* STRUCTURE TO ALLOW ADDRESSABILITY TO STATUS FIELDS OF
                               OF REPAIR WORKFILE DATA RECORD       */
         DCL 1 RWFRDE DEFINED(RWFR),
               2 * CHAR(11),              /* SEE RWFR               */
               2 RWFRF1 CHAR(1),          /* 0 WHEN FILE CREATED    */
                                          /* 1 WHEN FILE MODIFIED   */
                                          /* 2 WHEN FILE DEBLOCKED  */
                                          /* 3 WHEN DEBLOCKED AND   */
                                          /* MODIFIED               */
                                          /* DEBLOCKED              */
               2 RWFRF2 FIXED(16),        /* STATUS CODE            */
               2 RWFROV FIXED(8),         /* OVERFLOW RECORD        */
               2 * CHAR(*);               /* SEE RWFR               */

         /***********************************************************/
         /*                                                         */
         /*  END OF REPAIRV GLOBAL DECLARATIONS                     */
         /*                                                         */
         /***********************************************************/
./ ADD NAME=IDCDF66
         /************************************************************/
         /* REPAIRV I/O MAPPING MACRO -AMSDF66                       */
         /*                                                          */
         /* THE FOLLOWING STRUCTURE IS USED BY IDCRDRD  & REPAIRV    */
         /* TO DETERMINE THE LOCATION & READ RETURN CODES OF THE     */
         /* RECORDS ON A TRACK.                                      */
         /*                                                          */
         /* IT ALSO CONTAINS A SAVE AREA FOR THE COUNT FIELD AND     */
         /* LENGTH INFORMATION FOR EACH RECORD,IF REQUIRED           */
         /************************************************************/
         DCL 1 LOCTAB(125) BDY (WORD) BASED, /* LOC TABLE FOR READS  */
               2 LOCADDR PTR(31),            /* ENTRY ADDRESS        */
               2 LOCRCNT  FIXED(15),         /*RET CODE OF READ COUNT*/
               2 LOCRCKD FIXED(15),          /*RET CODE KEY/DATA RD  */
               2 LOCCNTFD CHAR(8),           /*SAVE AREA FOR COUNT   */
               2 * CHAR(1),                  /*SAVE AREA FOR COUNT   */
               2 LOCKLEN FIXED(8),           /*KEY LEN FOR SPACCR    */
               2 LOCDLEN FIXED(15);          /*DATA LEN FOR SPACCR   */
         DCL 1 RIOAREA BDY(WORD) BASED,
               2 RIOHDR,
               3 RFIRST     CHAR(1),     /* FIRST TIME INDICATOR    */
               3 *          CHAR(1),     /* RESERVED                */
               3 RPREV,                  /* PREVIOUS CCHHR          */
                   4 RPREVCC FIXED(15),  /* PREVIOUS CYLINDER ADDRESS*/
                   4 RPREVHH FIXED(15),  /* PREVIOUS READ ADDR       */
                   4 RPREVR  FIXED(8),   /* PREVIOUS RECORD NUMBER   */
                 3 *         CHAR(1),    /* RESERVED                 */
                 3 RNUMREC   FIXED(15),  /* NUM OR RECS TO READ      */
                 3 *         CHAR(16),   /* RESERVED FOR KEY AREA    */
                 3 *         CHAR(256),  /* RESERVED                 */
               2 RBUFF       CHAR(*);    /* BUFFER READ IN AREA      */
         DCL 1 RKEY BASED,               /* STRUCTURE FOR KEYAREA    */
               2 RKEYVOL     CHAR(6),    /* VOLID                    */
               2 RKEYCHR,                /* CCHHR                    */
                 3 RKEYCC  FIXED(15),    /* CYLINDER ADDRESS         */
                 3 RKEYHH  FIXED(15),    /* HEAD ADDRESS             */
                 3 RKEYR   FIXED(8),     /* RECORD NUMBER            */
               2 RKEYFLG,                /* FLAG BYTES               */
                 3 RKEYFLG1  CHAR(1),    /* FLAG BYTE ONE            */
                 3 RKEYFLG2  CHAR(2),    /* SECOND FLAGS             */
                 3 RKEYFLG3  CHAR(1),    /* THIRD FLAGS              */
                 3 *         CHAR(1);    /* RESERVED                 */
         DCL 1 RBUF BASED,               /* STRUC FOR RECS IN RBUFF  */
               2 RBUFCNT,                /* RECORD COUNT AREA        */
                 3 RBCCHHR,              /* CCHHR                    */
                   4 RBCC  FIXED(15),    /* CYLINDER ADDRESS         */
                   4 RBHH  FIXED(15),    /* HEAD ADDRESS             */
                   4 RBREC FIXED(8),     /* RECORD NUMBER            */
                 3 RBKL   FIXED(8),      /* KEY LENGTH               */
                 3 RBDL   FIXED(15),     /* DATA LENGTH              */
               2 RKEYDAT  CHAR(*);       /* KEY AND DATA AREA        */
         DCL 1 WIOAREA BASED BDY(WORD),
               2 WNUMREC FIXED(31),      /* NUM OF RECORDS TO WRITE  */
               2 WBUFF CHAR(*);          /* DATA AREAS FOR WRITES    */
         DCL 1 WBUF BASED,               /* STRUC WRITES FROM WBUFF  */
               2 WBUFCNT,                /* RECORD COUNT AREA        */
                 3 WBCCHHR,              /* CCHHR                    */
                   4 WBCC  FIXED(15),    /* CYLINDER ADDRESS         */
                   4 WBHH  FIXED(15),    /* HEAD ADDRESS             */
                   4 WBREC FIXED(8),     /* RECORD NUMBER            */
                 3 WBKL  FIXED(8),       /* KEY LENGTH               */
                 3 WBDL  FIXED(15),      /* DATA LENGTH              */
               2 WKEYDAT CHAR(*);        /* KEY AND DATA BUFFER      */
./ ADD NAME=IDDTRACK
*        %GOTO VTRACK1; /*
         MACRO
         IDDTRACK
VTRACK   DSECT ,  */
*%VTRACK1:;
*
*/* **************************************************************** */
*/*                                                                  */
*/*                  ***** VIRTUAL TRACK *****                       */
*/*           ALSO KNOWN AS VIRTUAL BUFFER OR WINDOW                 */
*/*                                                                  */
*/*   MVM RELEASE 1 8/9/72 LEVEL=0                                   */
*/*                                                                  */
*/*   METHOD OF ACCESS                                               */
*/*                                                                  */
*/*      PLS - MUST HAVE ADDRESSABILITY ON THE VDSCB                 */
*/*      BAL - ONE DSECT PRODUCED. DO USING ON VTRACK.               */
*/*                                                                  */
*/*   FUNCTION                                                       */
*/*      THE VIRTUAL TRACK CONTAINS THE DATA RECORDS WHICH REPRESENT */
*/*      THE FORMAT OF THE DASD TRACK.  IT IS ACQUIRED, RELEASED AND */
*/*      INITIALIZED BY THE WINDOW INTERCEPT.                        */
*/*                                                                  */
*/* **************************************************************** */
*%GO TO VTRACK2; /*
*
VTDATEND DS    AL4                      DISPLACEMENT FROM BEGINNING
*                                       OF TRACK TO THE END OF LAST
*                                       BYTE OF LAST RECORD
VTRKBAL  DS    AL4                      CURRENT TRACK BALANCE
VTST     DS    X                        TRACK STATUS
VTINIT   EQU   X'80'                    TRACK INITIALIZED
VTOVFL   EQU   X'40'                    LAST RECORD IS AN OVERFLOW SEG.
VTUPDATE EQU   X'20'                    TRACK UPDATED
*
VTHA     DS    0CL5                     HOME ADDRESS
VTHAFLAG DS    CL1                      FLAG BYTE OF HOME ADDRESS
VTHACCHH DS    CL4                      ADDRESS PORTION OF HOME ADDR
VTR0     DS    0CL16                    RECORD ZERO
VTR0CNT  DS    CL8                      R0 COUNT
VTR0DATA DS    CL8                      R0 DATA
VTR1     DS    X                        BEGINNING OF RECORD ONE
         MEND  ,         */
         %VTRACK2: ;
* DECLARE 1 VTRACK BASED(VDSWINDW),      /* TRACK BEGINNING */
*          2 VTDATEND FIXED (31),       /* DISPLACEMENT FROM THE
*                                       BEGINNING OF TRACK TO THE END
*                                       OF LAST BYTE OF LAST RECORD */
*          2 VTRKBAL FIXED (31),        /* CURRENT TRACK BALANCE */
*          2 VTST CHAR (1),             /* TRACK STATUS */
*           3 VTINIT BIT (1),           /* TRACK INITIALIZED */
*           3 VTOVFL BIT (1),           /* LAST REC. IS OVERFLOW REC.*/
*           3 VTUPDATE BIT (1),         /* TRACK UPDATED */
*          2 VTHA CHAR (5),             /* HOME ADDRESS */
*           3 VTHAFLAG CHAR (1),        /* FLAG BYTE OF HOME ADDRESS */
*           3 VTHACCHH CHAR (4),        /* ADDRESS PORTION HOME ADDR */
*          2 VTR0 CHAR (16),            /* RECORD ZERO */
*           3 VTR0CNT CHAR (8),         /* R0 COUNT */
*           3 VTR0DATA CHAR (8),        /* R0 DATA */
*          2 VTR1 CHAR (1);             /* BEGINNING OF RECORD ONE */
./ ADD NAME=IDDVBPPL
*        %GOTO VBPPL1; /*
         MACRO
         IDDVBPPL
VBPPL    DSECT ,  */
*%VBPPL1:;
*
*/* **************************************************************** */
*/*                                                                  */
*/*       ***** VIRTUAL BLOCK PROCESSOR PARAMETER LIST *****         */
*/*                                                                  */
*/*   MVM RELEASE 1 8/9/72 LEVEL=0                                   */
*/*                                                                  */
*/*   METHOD OF ACCESS                                               */
*/*                                                                  */
*/*      PLS - INCLUDE IDDVDSCB MACRO                                */
*/*      BAL - ONE DSECT PRODUCED. DO USING ON VBPPL.                */
*/*                                                                  */
*/*   FUNCTION                                                       */
*/*      THE VBPPL CONTAINS THE VREADWR PARAMETER LIST PASSED TO     */
*/*      VBP BY THE WINDOW INTERCEPT. IT IS ACQUIRED, RELEASED AND   */
*/*      INITIALIZED BY THE WINDOW INTERCEPT.                        */
*/*                                                                  */
*/* **************************************************************** */
*%GO TO VBPPL2; /*
VBPPLSAV DS    18F                      WINDOW INTERCEPT REGISTER
*                                       SAVE AREA.
VBPPLSV2 DS    18F                      SEOND SAVE AREA FOR WINDOW
*                                       INTERCEPT
VBPOPPRM DS    0CL24                    VOPEN PARAMETER LIST
VBPRWPRM DS    CL40                     PARAMETER LIST PASSED TO
*                                       VBP ON VREAD OR VWRITE.
         MEND  ,         */
         %VBPPL2: ;
* DECLARE 1 VBPPL BASED(VDSVBPPL),      /* BASIC PARAMETER LIST */
*      2 VBPPLSAV(18) FIXED(31),        /* WINDOW INTERCEPT
*                                         REGISTER SAVE AREA. */
*      2 VBPPLSV2(18) FIXED(31),        /* SECOND WINDOW INTERCEPT
*                                         REGISTER SAVE AREA. */
*      2 * BDY(WORD),                   /* USED FOR VREADWR AND
*                                         VOPEN PARAMETER LISTS */
*        3 VBPRWPRM CHAR(40) BDY(WORD), /* VREADWR */
*          4 VBPOPPRM CHAR(24) BDY(WORD);/* VOPEN */
./ ADD NAME=IDDVDSCB
*        % GOTO VDSCB1;   /*
         MACRO
         IDDVDSCB
VDSCB    DSECT ,           */
*%VDSCB1: ;
*
*/* ************************************************************** */
*/*                                                                */
*/*           ******* VIRTUAL DATA SET CONTROL BLOCK ******        */
*/*                                                                */
*/*   MVM RELEASE 1 8/9/72,LEVEL = 1.                              */
*/*   METHOD OF ACCESS                                             */
*/*      PL/S - DCL VDSCBPTR PTR                                   */
*/*      BAL  - ONE DSECT PRODUCED. DO USING ON VDSCB.             */
*/*                                                                */
*/*   FUNCTION                                                     */
*/*      THE VIO DATA SET CONTROL BLOCK CONTAINS THE FORMAT 1      */
*/*      DSCB AND THE UCB AND POINTERS TO OTHER VIO CONTROL        */
*/*      BLOCKS AND PARAMETER LISTS AND SAVE AREAS.                */
*/*                                                                */
*/* ************************************************************** */
*
*%GO TO VDSCB2;   /*
VDSUCB   DS    CL45                    DIRECT ACCESS UCB FOR
*                                      THIS DATA SET.
VDSSEEKA DS    CL7                     SEEK ADDR OF TRK IN THE WINDOW
VDSDSPCT DS    A                       POINTER TO DSPCT HEADER
VDSWICB  DS    A                       POINTER TO WICB.
VDSVBPPL DS    A                       POINTER TO VBPPL.
VDSWINDW DS    A                       POINTER TO WINDOW.
VDSTRKSI DS    H                       MAXIMUM TRACK SIZE IN BYTES
VDSWINSI DS    H                       SIZE OF WINDOW IN BYTES
VDSABSTT DS    H                       ABSOLUTE TRACK NUMBER OF FIRST
*                                      TRACK IN THE DATA SET.
VDSNMTRK DS    H                       NUMBER OF TRACKS IN THE DATA
*                                      SET.
VDSRBN   DS        F                   NO PASSED BY IEFXB500
VDSDSCB  DS    CL125                   FORMAT 1 DSCB.
         MEND  ,   */
         % VDSCB2: ;
* DECLARE 1 VDSCB BASED(VDSCBPTR),
*          2 VDSUCB CHAR(45),           /* UCB FOR A VIRTUAL DEVICE */
*          2 VDSSEEKA CHAR(7),          /* SEEK ADDR OF TRK IN WINDOW*/
*          2 VDSDSPCT PTR(31),          /* POINTER TO DSPCT HEADER */
*          2 VDSWICB PTR(31),           /* POINTER TO WICB */
*          2 VDSVBPPL PTR(31),          /* POINTER VBPPL */
*          2 VDSWINDW PTR(31),          /* POINTER TO WINDOW */
*          2 VDSTRKSI FIXED(15),        /* MAXIMUM TRACK SIZE IN BYTES*/
*          2 VDSWINSI FIXED(15),        /* SIZE OF THE WINDOW IN BYTES*/
*          2 VDSABSTT FIXED(15),        /* ABSOLUTE TRACK NUMBER OF THE
*                                       FIRST TRACK OF THE DATA SET */
*          2 VDSNMTRK FIXED(15),        /* NUMBER OF TRACKS IN THE DATA
*                                       SET */
*          2 VDSRBN FIXED(32),          /* NO. PASSED BY IEFXB500*/
*          2 VDSDSCB CHAR(125);         /* FORMAT 1 DSCB */
./ ADD NAME=IDDWICB
*        %GOTO WICB1;  /*
         MACRO
         IDDWICB
WICB     DSECT ,                        */
*%WICB1:;
*
*/* *************************************************************** */
*/*                                                                 */
*/*           ***** WINDOW INTERCEPT CONTROL BLOCK *****            */
*/*                                                                 */
*/*   VS2 RELEASE 4.1 7/8/75                                @Z40WSSR*/
*/*                                                                 */
*/*   METHOD OF ACCESS                                              */
*/*      PL/S - DCL WICBPTR PTR                                     */
*/*           - % IDDSWAPP = 'YES'  - INCLUDES THE EXCP INTERCEPT   */
*/*             FRR PARAMETER LIST.                                 */
*/*           - % IDDSWJRN = 'YES'  - INCLUDES WIJOURN FRR          */
*/*             PARAMETER LIST.                                     */
*/*           - % IDDCLSSW = 'YES'  - INCLUDES WICLOSE FRR          */
*/*             PARAMETER LIST.                                     */
*/*      BAL - ONE DSECT PRODUCED. DO USING ON WICB                 */
*/*                                                                 */
*/*   FUNCTION                                                      */
*/*      THE WINDOW INTERCEPT CONTROL BLOCK CONTAINS THE ACTIVE     */
*/*      FIELDS OF THE VAM DATA SET. IT IS ACQUIRED,RELEASED        */
*/*      AND MANIPULATED BY THE WINDOW INTERCEPT.                   */
*/*     IT ALSO CONTAINS STATUS AND CONTROL INFORMATION             */
*/*     THAT IS USED IN INTERPRETING AND SIMULATING EXECUTION       */
*/*     OF THE CHANNEL PROGRAM ASSOCIATED WITH THE EXCP REQUEST     */
*/*     THAT INITIATED VIO PROCESSING.                              */
*/*                                                                 */
*/* VS2 RELEASE 4.1 CHANGES:                                @Z40WSSR*/
*/* C511000, A511100                                        @Z40WSSR*/
*/* *************************************************************** */
*
*%GOTO WICB2;  /*
WICB     DSECT ,                        BOUNDARY
WICSEEKA DS    0CL8                     SEEK ADDRESS OF THE TRACK TO
*                                       BE PLACED IN THE WINDOW.
WICSKAM  DS    CL1                      M - EXTENT NUMBER
WICSKBCH DS    0CL6                     BBCCHH - SEEK ADDRESS
WICSKABB DS    CL2                      BB - BIN NUMBER
WICSKACH DS    0CL4                     CCHH - SEEK ADDRESS
WICSKACC DS    CL2                      CC - CYLINDER NUMBER
WICSKAHH DS    CL2                      HH - HEAD NUMBER
WICSKAR  DS    CL1                      R - RECORD NUMBER
*
WICSTART DS    A                        ADDRESS OF THE FIRST CCW TO BE
*                                       INTERPRETED.
WICAUDIT DS    AL3                      AUDIT TRAIL FLAGS.
*
WICPRT   DS    AL1                      PROTECT KEY FROM UCB
WICRSTCP DS    0CL16                    RESTART CHANNEL PROGRAM EXT
WICCCW1  DS    D                        DATA TRANSFER CCW
WICCCW2  DS    D                        TIC TO NEXT CCW
WICERPSW DS    CL1                      ERP CONTROL SWITCHES
WICERPOV EQU   X'80'                    OVERRUN INCOMPLETE RESTARTED
WICERPWR EQU   X'40'                    WRITE CCW RESTARTED-
*                                       WILL BE RESET BY THE CPI
*                                       USED TO TEST FOR WRITE
*                                       PREREQUISITES
WICERPSV DS    AL3                      ADDRESS OF CCW THAT WAS
*                                        RESTARTED. USED TO INTERPRET
*                                        THE CSW.
WICCAM   DS    A                        ADDRESS OF THE COUNT FIELD OF
*                                       THE CURRENT RECORD.(CURSOR)
WICRELTP DS    H                        POSITION INDICATOR.
WICBFCNT EQU   1                        BEFORE COUNT
WICBFKEY EQU   2                        BEFORE KEY
WICBFDAT EQU   3                        BEFORE DATA
WICAFDAT EQU   4                        AFTER DATA
WICBFHA  EQU   5                        BEFORE HOME ADDRESS
WICBFR0  EQU   6                        BEFORE RECORD ZERO
WICAFR0  EQU   7                        AFTER RECORD ZERO
*
WICKL    DS    H                        CURRENT KEY LENGTH
WICDL    DS    F                        CURRENT DATA LENGTH
*
WICAVXFR DS    F                        NUMBER OF BYTES AVAILABLE FOR
*                                       A READ OR NON-FORMATTED WRITE.
WICREQXF DS    F                        ACCUMULATED BYTES TRANSFERRED
*                                       FOR AN AREA(COUNT, KEY OR DATA)
*                                       DURING A READ OF NON-FORMATTING
*                                       WRITE CCW.
WICOFLG1 DS    CL1                      FLAGS FOR CURRENT OP CODE
*
WICWCKD  EQU   X'80'                    WRITE COUNT KEY DATA
WICWSCKD EQU   X'40'                    WRITE SPECIAL COUN KEY DATA
WICERASE EQU   X'20'                    ERASE
WICFMTW  EQU   X'10'                    FORMAT WRITE SET FOR WCKD,
*                                       WSPCKD, AND ERASE
WICOVFOP EQU   X'08'                    SET FOR RD, RKD, RCKD, WD, WKD
*                                       QUALIFIES FOR OVERFLOW
*                                       PROCESSING
WICSCHTC EQU   X'04'                    SEARCH TIC COMBINATION
WICSID   EQU   X'02'                    SEARCH ID OP CODE
*
WICOFLG2 DS    CL1                      FLAGS FOR CURRENT OP CODE
*
WICXFCOM EQU   X'80'                    TRANSFER COMPLETE OR NOT
*                                       DESIRED
WICDATAX EQU   X'40'                    INDICATE THAT TRANSFER HAS
*                                       BEEN INITIATED
WICINTRP EQU   X'20'                    INDICATE THAT A CONDITION
*                                       EXEIST FOR ENDING THE CHANNEL
*                                       PROGRAM INTERPRETATION
WICERROR EQU   X'10'                    INDICATE THAT AN ERROR HAS
*                                       BEEN DETECTED AFTER THE
*                                       OPERATION HAS STARTED
WICSCHEQ EQU   X'08'                    SET WHEN SID EQUAL OR SK
*                                       EQUAL OP CODE IS USED.
*                                       IF SEARCH IS A FULL SEARCH
*                                       THEN FLAG WICFSIDE OR
*                                       WICFSKE IS SET
WICDC    EQU   X'04'                    DATA CHAINING REQUESTED
WICWRTIP EQU   X'02'                    WRITE IN PROCESS
*
WICSEQFG DS    CL1                      FLAGS FOR SEQUENCE CHECKING
*
WICLWCKD EQU   X'80'                    LAST OPERATION A WCKD
WICFSIDE EQU   X'40'                    A FULL SID EQUAL HAS BEEN
*                                       SATISFIED
WICFSKE  EQU   X'20'                    A FULL SK EQUAL HAS BEEN
*                                       SATISFIED
WICTICFG EQU   X'10'                    TIC BEING PROCESSED
*
WICXOFLG DS    CL1                      ACCROSS OP CODE FLAG
*
WICNDXPT EQU   X'80'                    INDEX POINT SWITCH
WICRCSKT EQU   X'40'                    READ COUNT SEARCH KEY TIC
*                                       COMBINATION DETECTED
WICWORK  DS    A                        GENERAL WORK AREA.
WICERDSP DS    H                        DISPLACEMNT INTO ERROR TABLE
WICLSTOP DS    AL1                      OPCODE OF LAST CCW.
WICCUROP DS    AL1                      CURRENT OP CODE
WICRESTA DS    CL1                      FLAG TO RESTART CONDITIONS
WICPCIRS EQU   X'80'                    RESTARTING FROM PCI EXIT
WICOVFIP EQU   X'40'                    RESTARTING FROM OVERFLOW
*                                       RECORD PROCESSING
WICSEKRS EQU   X'20'                    SEEK ROUTINE CALLED THE TRK
*                                       ROUTINE
WICTRKRS EQU   X'10'                    TRACK REQUEST RESTART FLAG
WICTRMSK EQU   X'08'                    TRACK MANAGER DETECTED AN
*                                       INVALID SEEK ARGGUMENT
WICRSTRT EQU   X'01'                    FOR ALL RESTART SITUATIONS
WICFMASK DS    CL1                      FILE MASK.
*
WICFMVAL EQU   B'00100110'              MASK FOR CHECKING FILE MASK
*                                       BITS 2, 5, AND 6 MUST BE ZERO
WICFMWRT EQU   B'11000000'              BITS 0-1 DESCRIBE THE WRITE
*                                       BITS OF THE FILE MASK
WICFMW00 EQU   B'00000000'              '00' INHIBIT WHA AND WR0
WICFMW01 EQU   B'01000000'              '01' INHIBIT ALL WRITES
WICFMW10 EQU   B'10000000'              '10' INHIBIT WHA,WR0, FORMAT
*                                            WRITES
WICFMW11 EQU   B'11000000'              '11' PERMIT ALL WRITES
*
WICFMSEK EQU   B'00011000'              BITS 3-5 DESCRIBE THE SEEK
*                                       BITS OF THE FILE MASK
WICFMS00 EQU   B'00000000'              '00' PERMIT ALL SEEK
WICFMS01 EQU   B'00001000'              '01' PERMIT CYL AND HEAD SEEKS
WICFMS10 EQU   B'00010000'              '10' PERMIT HEAD SEEKS
WICFMS11 EQU   B'00011000'              '11' INHIBIT ALL SEEKS
WICDVTAB DS    0CL16                    CONDENSED FORM OF DEVICE TABLE
WICMAXCC DS    H                        HIGHEST CYLINDER
WICMAXHH DS    H                        HIGHEST HEAD
WICTRKCP DS    H                        TRACK CAPACITY
WICIGAP  DS    H                        NORMAL-KEYED RECORD OVERHEAD
WICLGAP  DS    H                        LAST-KEYED RECORD OVERHEAD
WICKEYGP DS    H                        KEYED-RECORD OVERHEAD
WICTOL   DS    H                        TOLERANCE
WICTOLSW EQU   WICTOL+1                 SECOND BYTE OF TOLERANCE
*                                       SERVES AS SWITCH AND IF ZERO
*                                       INDICATES TOLERANCE DOES NOT
WICTOLAP EQU   X'00'                    APPLY
WICSECT  DS    AL1                      0-RPS NOT SUPPORTED,
*                                       ^0-HIGHEST POSSIBLE SECTOR
WICNORPS EQU   X'00'                    NOT AN RPS DEVICE IF ZERO
WICDEVTP DS    CL1                      DEVICE TYPE FROM UCB
*
WIC2314  EQU   X'08'                    2314 DEVICE
WICSENSE DS    CL2                      SAVE AREA FOR SENSE BYTES
WICEXPTR DS    A                        POINTER TO DEB EXTENT
*
WICREGSV DS    0CL24                    REGISTER SAVE AREA .
WICCSWSV DS    0CL7                     SAVE AREA FOR CSW
WICCCWER DS    0CL8                     FAKE ERROR CCW
WICRGSV0 DS    F                        FIRST SLOT
WICRGSV1 DS    F                        SECOND SLOT
WICRGSV2 DS    F                        THIRD SLOT
WICRGSV3 DS    F                        FOURTH SLOT
WICRGSV4 DS    F                        FIFTH SLOT
WICRGSV5 DS    F                        SIXTH SLOT
WICDATND DS    A                        ADDRESS OF THE END OF CURRENT
*                                       TRACK.
WICTCB   DS    A                   ADDR OF TCB GETMAINED UNDER VS05944
*
WICCPINT EQU   WICFMASK-WICAVXFR        FIELDS WHICH WILL BE ZEROED OUT
*                                       AT THE BEGINNING OF EACH CHAN-
*                                       NEL PROGRAM AND ARE THE FOLLOW-
*                                       ING
*                                       WICAVXFR
*                                       WICREQXF
*                                       WICOFLG1
*                                       WICOFLG2
*                                       WICSEQFG
*                                       WICXOFLG
*                                       WICWORK
*                                       WICERDSP
*                                       WICLSTOP
*                                       WICCUROP
*                                       WICRESTA
WICOPINT EQU   WICSEQFG-WICAVXFR        FIELD WHICH WILL BE ZEROED OUT
*                                       AT THE BEGINNING OF EACH OP
*                                       CODE PROCESS AND ARE THE
*                                       FOLLOWING
*                                       WICAVXFR
*                                       WICREQXF
*                                       WICOFLG1
*                                       WICOFLG2
         MEND  ,                        */
         %WICB2: ;
* DECLARE 1 WICB BASED(VDSWICB) BDY(DWORD),
*        2  WICSEEKA CHAR(8),           /*SEEK ADDRESS ADDRESS OF THE
*                                       TRACK TO BE PLACED IN THE
*                                       WINDOW */
*          3 WICSKAM CHAR(1),           /* EXTENT NUMBER */
*          3 WICSKBCH CHAR(6),          /* BBCCHH */
*            4 WICSKABB CHAR(2),        /* BB */
*            4 WICSKACH CHAR(4),        /* CCHH */
*              5 WICSKACC CHAR(2),      /* CC */
*              5 WICSKAHH CHAR(2),      /* HH */
*          3 WICSKAR CHAR(1),           /* R */
*        2 WICSTART PTR(31),            /* STARTING ADDRESS OF CHANNEL
*                                       PROGRAM */
*        2 WICAUDIT CHAR(3),            /* AUDIT FLAGS */
*        2 WICPRT FIXED(8),             /* PROTECTION KEY OF CURRENT
*                                       USER AND WICB AND WINDOW */
*        2 WICRSTCP CHAR(16) BDY(DWORD), /* RESTART CHANNEL PROGRAM
*                                       USED BY ERP FUNCTION */
*          3 WICCCW1 CHAR(8) BDY(DWORD), /* FIRST CCW */
*          3 WICCCW2 CHAR(8) BDY(DWORD), /* SECOND CCW */
*        2 WICERPSW CHAR(1),            /* ERP CONTROL SWITCHES */
*          3 WICERPOV BIT(1),           /* ERP RESTART OF OVERFLOW
*                                       INCOMPLETE IN PROGRESS */
*          3 WICERPWR BIT(1),           /* WRITE CCW RESTART - WILL BE
*                                       USED AND RESET BY THE CPI TO
*                                       SATISFY THE WRITE PREREQUISITES
*                                       FOR RESTARTED OVERFLOW
*                                       INCOMPLETE WRITE CCWS */
*          3 * BIT(6),                  /* UNUSED */
*        2 WICERPSV PTR(24) BDY(WORD,2), /* ADDRESS OF CCW THAT WAS
*                                       RESTARTED */
*        2 WICCAM PTR(31),              /* ADDRESS OF THE COUNT FIELD
*                                       OF THE CURRENT RECORD */
*        2 WICRELTP FIXED(15),          /* POSITON IN CURRENT RECORD
*                                       -COUNT KEY OR DATA R0 OR HA */
*        2 WICKL FIXED(15),             /* CURRENT KEY LENGTH */
*        2 WICDL FIXED(31),             /* CURRENT DATA LENGTH */
*        2 WICAVXFR FIXED(31),          /* NUMBER OF BYTES AVAILABLE
*                                       FOR A READ OR NON-FORMATTED
*                                       WRITE */
*        2 WICREQXF FIXED(31),          /* ACCUMULATED BYTES
*                                       TRANSFERRED FOR AN AREA */
*        2 WICOFLG1 BIT(8),             /* FLAGS FOR CURRENT OPCODE */
*          3 WICWCKD BIT(1),            /* WRITE CKD */
*          3 WICWSCKD BIT(1),           /* WRITE SPECIALIAL CKD */
*          3 WICERASE BIT(1),           /* ERASE */
*          3 WICFMTW BIT(1),            /* FORMAT WRITE SET FOR WCKD */
*          3 WICOVFOP BIT(1),           /* SET FOR RD, RKD ,RCKD, WD,
*                                       WKD QUALIFIES FOR OVERFLOW
*                                       PROCESSING */
*          3 WICSCHTC BIT(1),           /* SRCHID TIC *-8 */
*          3 WICSID BIT(1),             /* SEARCH ID IN PROGRESS */
*          3 * BIT(1),                  /* UNUSED */
*        2 WICOFLG2 BIT(8),             /* FLAGS FOR CURRENT OPCODE
*                                       CONTINUED */
*          3 WICXFCOM BIT(1),           /* TRANSFER COMPLETE OR NOT
*                                       DESIRED */
*          3 WICDATAX BIT(1),           /* TRANSFER HAS BEEN INITIATED
*                                       */
*          3 WICINTRP BIT(1),           /* INDICATES THAT A CONDITION
*                                       EXISTS FOR ENDING THE CP
*                                       INTERPRETATION */
*          3 WICERROR BIT(1),           /* ERROR DETECTED AFTER THE
*                                       OPERATION WAS INITIATED */
*          3 WICSCHEQ BIT(1),           /* INDICATES SID OR SRCH KEY IS
*                                       USED. */
*          3 WICDC BIT(1),              /* DATA CHAINING REQUESTED */
*          3 WICWRTIP BIT(1),           /* WRITE OPERATION IN PROGRESS
*                                       */
*        2 WICSEQFG BIT(8),             /* FLAGS FOR SEQUENCE CHECKING
*                                       */
*          3 WICLWCKD BIT(1),           /* LAST OPERATION WAS A WCKD */
*          3 WICFSIDE BIT(1),           /* A FULL SID EQUAL HAS BEEN
*                                       SATISFIED */
*          3 WICFSKE BIT(1),            /* A FULL SRCH KEY EQ HAS BEEN
*                                       SATISFIED */
*          3 WICTICFG BIT(1),           /* TIC PROCESSING IN PROGRESS
*                                       */
*        2 WICXOFLG BIT(8),             /* ACROSS OP CODE PROCESSING */
*          3 WICNDXPT BIT(1),           /* INDEX POINT SWITCH */
*          3 WICRCSKT BIT(1),           /* READ COUNT SRCH KEY TIC *-16
*                                       COMBINATION IN PROGRESS */
*        2 WICWORK FIXED(31),           /* GENERAL WORK AREA */
*        2 WICERDSP  FIXED (15),        /* ERROR TABLE DISPLACEMENT */
*        2 WICLSTOP FIXED(8),           /* OPCODE OF THE LAST CCW */
*        2 WICCUROP FIXED(8),           /* OPCODE OF THE CURRENT CCW */
*        2 WICRESTA BIT(8),             /* RESTART FLAGS */
*          3 WICPCIRS BIT(1),           /* PCI RESTART */
*          3 WICOVFIP BIT(1),           /* OVERFLOW INCOMPLETE RESTART
*                                       */
*          3 WICSEKRS BIT(1),           /* SEEK ROUTINE CALLED THE
*                                       TRACK MANAGER */
*          3 WICTRKRS BIT(1),           /* TRACK REQUEST RESTART FLAG
*                                       */
*          3 WICTRMSK BIT(1),           /* INVVALID SEEK DETECTED
*                                       BY THE TRACK MANAGER */
*          3 *        BIT(2),           /* UNUSED */
*          3 WICRSTRT BIT(1),           /* FOR ALL RESTARTS */
*        2 WICFMASK FIXED(8),           /* FILE MASK */
*        2 WICDVTAB,                    /* DEVICE TABLE INFORMATION */
*          3 WICMAXCC FIXED(15),        /* MAXIMUM CYLINDER NUMBER */
*          3 WICMAXHH FIXED(15),        /* MAXIMUM HEAD NUMBER */
*          3 WICTRKCP FIXED(15),        /* TRACK CAPACITY */
*          3 WICIGAP FIXED(15),         /* INTER RECORD OVERHEAD */
*            4 WICIGP CHAR(2),        /* SAME */
*          3 WICLGAP FIXED(15),         /* LAST RECORD OVERHEAD */
*            4 WICLGP CHAR(2),          /* SAME */
*          3 WICKEYGP FIXED(15),        /* KEYED RECORD OVERHEAD */
*            4 WICKYGP CHAR(2),         /* SAME */
*          3 WICTOL FIXED(15),          /* TOLERANCE */
*          3 WICSECT FIXED(8),          /* HIGH PERMISSABLE SECTOR - =0
*                                       RPS NOT SUPPORTED */
*          3 WICDEVTP FIXED(8),         /* DEVICE TYPE */
*        2 WICSENSE CHAR(2),            /* SAVE AREA FOR SENSE
*                                       INFORMATION */
*        2 WICEXPTR PTR(31),            /* POINTER TO THE EXTENT IN THE
*                                       DEB */
*        2 WICREGSV,                    /* REGISTER SAVE AREA */
*          3 WICRGSV0 FIXED(31),        /* FIRST SLOT */
*          3 WICRGSV1 FIXED(31),        /* SECOND SLOT */
*          3 WICRGSV2 FIXED(31),        /* THIRD SLOT */
*          3 WICRGSV3 FIXED(31),        /* FOURTH SLOT */
*          3 WICRGSV4 FIXED(31),        /* FIFTH SLOT */
*          3 WICRGSV5 FIXED(31),        /* SIXTH SLOT */
*        2 WICDATND PTR(31),            /* ADDRESS OF THE END OF THE
*                                       CURRENT TRACK */
*        2 WICTCB   PTR(31),            /* ADDR OF TCB GETMAINED
*                                         UNDER              @VS05944*/
*        WICCSWSV CHAR(7) DEFINED WICREGSV, /* SAVE AREA FOR CSW */
*        WICCCWER CHAR(8) DEFINED WICREGSV; /* FAKE ERROR CCW */
 % IF IDDSWAPP^='YES' %THEN
     %GOTO WICBXX01;
       DCL  /* PARAMETER LIST EXCP INTERCEPT */
          1 EIFRRPRM BASED(SDWAPARM), /* EXCP INTERCEPT FRR PARAMETER
                                        LIST */
               2 EIRQEPTR PTR(31),      /* RQE ADDRESS */
               2 EIREG5 PTR(31),        /* REGISTER 5 SAVED FOR RETURN
               TO IOS */
               2 EIREG14 PTR(31),       /* REGISTER 14 SAVED FOR RETURN
               TO IOS */
               2 * CHAR(4),             /* FLAGS */
                3 * CHAR(1),              /* FLAG BYTE 1 */
                 4 EIRECUR BIT(1);      /* RECURSIVE ERROR */
 %WICBXX01:;
 %IF IDDSWJRN ^= 'YES' %THEN
     %GOTO WICBXX02;
         @EJECT;
          DCL /* PARAMETERS PASSED TO JOURNAL FRR FROM IDDWIJRN */
          1 JRFRRPRM BASED(SDWAPARM),  /* BASE */
               2 JRTCBPTR PTR(31),      /* A(TCB) PASSED TO WIJOURN */
               2 JRUCBPTR PTR(31);      /* A(CURRENT UCB) */
       DCL  /* PARAMETERS PASSED TO WIJOURN ESTAE ROUTINE */
 % IF IDDIN = 'YES' %THEN
     % GOTO WICBYY01;
         1 ESTJPRMS BASED(SDWAPARM),  /* START */
    % GOTO WICBYY02;
 %WICBYY01:;
         1 ESTJPRMS, /* START */
 %WICBYY02:;
               2 ESJTCB PTR(31), /* ADDRESS OF TCB */
               2 ESJUCB PTR(31), /* ADDRESS OF UCB */
               2 ESJSAVE PTR(31), /* ADDRESS OF SAVE AREA */
               2 ESJBASE PTR(31), /* BASE REGISTER IN WIJOURN */
               2 ESJDATA PTR(31),/* DATA REGISTER IN WIJOURN @Z40WSSR*/
               2 ESJTRFLG FIXED(31); /* ESTAE TRACE FLAG     @Z40WSSR*/
 %WICBXX02:;
 %IF IDDCLSSW ^= 'YES' %THEN
    % GO TO WICBXX03;
         DCL /* PARAMETERS PASSED TO WICLOSE FRR ROUTINE */
         1 CLSFRRPR BASED(SDWAPARM), /* START */
               2 CLVDSCB PTR(31),     /* ADDRESS OF VDSCB */
               2 * CHAR(4),
                 3 * FIXED(8),
                   4 CLSTRMSW BIT(1);  /* =1 TRACK MANAGER IN CONTROL
                   */
 %WICBXX03:;
./ ADD NAME=IEACIWA
*        %GOTO CIWAPLS;                                              /*
         MACRO
         IEACIWA &DSECT=YES
         AGO  .CIWARND
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0 (OS/VS2 REL 2 VERSION)                            *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR COMMON INTERNAL WORK AREA                      *
* ENTRY POINTS -                                                      *
*     IEACIWA MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IEACIWA MACRO DEFINITION                                     *
* OUTPUT -                                                            *
*    COMMON INTERNAL WORK AREA MAPPING MACRO                          *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.CIWARND ANOP
         IEZBITS
***********************************************************************
*                  CIWA MAPPING     9/17/73                           *
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').CIWA001
CIWA     DSECT , CIWAPTR
         AGO   .CIWA002
.CIWA001 ANOP
CIWA     DS    0F
.CIWA002 ANOP
CIWFLG1  DS    BL1 -                FIRST INTERNAL FLAG FIELD
CIWSVC2  EQU   BIT0 -               PSI ENTERED AT IGC112
CIWSVC3  EQU   BIT1 -               PSI ENTERED AT IGC113
CIWBREX  EQU   BIT3 -               PSI ENTERED VIA BRANCH ENTRY
*                                   FROM NON-RSM ROUTINE AT
*                                   IEAVPSIB/IEAVPSIX/IEAVPSIF.
CIWBRIN  EQU   BIT4 -               PSI ENTERED AT IEAVPSII
CIWOUTKR EQU   BIT5 -               INTERNAL KEEPREAL FLAG (PGOUT)
CIWFIXC  EQU   BIT6 -               PGFIX IS CALLING PGFREE
CIWNOPST EQU   BIT7 -               DO NOT POST REQUESTOR ECB FLAG.
*                                   SET BY PGFIX/PGLOAD MODULE
CIWFLG2  DS    BL1 -                RESERVED FLAG FIELD
CIWOPFL1 DS    BL1 -                FIRST BYTE OF INPUT VSL ENTRY
CIWCONT  EQU   BIT0 -               CONTINUATION/LIST FORM FLAG
CIWFIX   EQU   BIT1 -               PGFIX FLAG
CIWFREE  EQU   BIT2 -               PGFREE FLAG
CIWLOAD  EQU   BIT3 -               PGLOAD FLAG
CIWRLS   EQU   BIT4 -               PGRLSE FLAG
CIWLONG  EQU   BIT6 -               LONG-FIX OPTION FLAG
CIWOPFL2 DS    BL1 -                FIFTH BYTE OF INPUT VSL ENTRY
CIWLAST  EQU   BIT0 -               LAST ENTRY FLAG
CIWNULL  EQU   BIT1 -               NULL ENTRY FLAG
CIWRAO   EQU   BIT2 -               REAL ADDRESS OPTION FLAG
CIWERR   EQU   BIT3 -               ERROR FLAG
CIWPGOUT EQU   BIT5 -               PGOUT FLAG
CIWKEPRL EQU   BIT6 -               KEEPREAL OPTION FLAG
CIWEXTRS EQU   BIT7 -               RESERVED FOR EXTENDABILITY
CIWRETC  DS    FL1 -                RETURN CODE FIELD USED BY
*                                   SERVICE MODULES TO COMMUNICATE
*                                   RETURN CODES BACK TO PSI
CIWSAVRC DS    FL1 -                RETURN CODE SAVE AREA USED BY
*                                   PAGE SERVICES MODULES WHEN
*                                   CALLING ANOTHER PAGE SERVICES
*                                   MODULE
CIWKEY   DS    FL1 -                THE CALLER'S PROTECTION KEY
         DS    FL1 -                RESERVED
CIWINVSL DS    A -                  VSA OF THE REQUESTOR SUPPLIED
*                                   VSL. ZERO IF REGISTER FORM ENTRY
*                                   USED.
CIWCUVSL DS    A -                  VSA OF THE CURRENT VSL ENTRY
*                                   BEING PROCESSED. ZERO FOR
*                                   REGISTER ENTRY REQUEST.
CIWVSL   DS    0D -                 INTERNAL VSL ENTRY WHERE CURRENT
*                                   VSL ENTRY IS PLACED WHILE BEING
*                                   PROCESSED.
CIWSTRT  DS    0F -                 FULLWORD REFERENCE TO FIRST WORD
*                                   OF VSL
CIWIFLG1 DS    BL1 -                FIRST BYTE OF VSL ENTRY
CIWICONT EQU   BIT0 -               CONTINUATION/LIST FORM FLAG
CIWIFIX  EQU   BIT1 -               PGFIX FLAG
CIWIFREE EQU   BIT2 -               PGFREE FLAG
CIWILOAD EQU   BIT3 -               PGLOAD FLAG
CIWIRLS  EQU   BIT4 -               PGRLSE FLAG
CIWILONG EQU   BIT6 -               LONG-FIX OPTION FLAG
CIWSTRTA DS    AL3 -                START ADDR OF VIRTUAL SUBAREA
CIWEND1  DS    0F -                 FULLWORD REFERENCE TO LAST WORD
*                                   OF VSL
CIWIFLG2 DS    BL1 -                FIFTH BYTE OF VSL ENTRY
CIWILAST EQU   BIT0 -               LAST ENTRY FLAG
CIWINULL EQU   BIT1 -               NULL ENTRY FLAG
CIWIRAO  EQU   BIT2 -               REAL ADDRESS OPTION FLAG
CIWIERR  EQU   BIT3 -               ERROR FLAG
CIWIOUT  EQU   BIT5 -               PGOUT FLAG
CIWIKPRL EQU   BIT6 -               KEEPREAL OPTION FLAG
CIWEND1A DS    AL3 -                END ADDR+1 OF VIRTUAL SUBAREA
CIWTCB   DS    A -                  ADDRESS OF REQUESTOR TCB
CIWECB   DS    A -                  ADDRESS OF REQUESTOR SUPPLIED ECB
CIWCURPG DS    A -                  ADDRESS OF CURRENT VIRTUAL PAGE
*                                   BEING PROCESSED
CIWLSTPG DS    A -                  ADDRESS OF LAST VIRTUAL PAGE TO
*                                   BE PROCESSED
CIWRETRN DS    A -                  SAVE AREA FOR RETURN ADDR TO PSI.
*                                   USED BY SERVICE MODULES WHEN
*                                   CALLED BY PSI
CIWWRK1  DS    F -                  FIRST WORK AREA
CIWWRK2  DS    F -                  SECOND WORK AREA
CIWWRK3  DS    F -                  THIRD WORK AREA
CIWWRK4  DS    F -                  FOURTH WORK AREA
CIWWRK5  DS    F -                  FIFTH WORK AREA
CIWALEN  EQU   *-CIWA -             LENGTH OF CIWA
         MEND  , */
*%CIWAPLS :  ;
* /*******************************************************************/
* /*               CIWA MAPPING     9/17/73                          */
* /*******************************************************************/
*        %IF CIWA9999 ^= ','        /* IF THIS IS LAST BLOCK         */
*          %THEN %CIWA9999 = ';';   /* THEN CLOSE DCL STATEMENT      */
*        %IF CIWALEVL ^= ''         /* IF THIS IS CONCATENATED       */
*          %THEN %GOTO CIWAPLS1;    /* THEN SKIP DCL                 */
*DCL 1 CIWA BASED (CIWAPTR)         /* DECLARE CIWA LEVEL 1          */
*        %GO TO CIWAPLS2;           /* AND SKIP LEVEL TWO DCL        */
*%CIWAPLS1: CIWADUM=CIWALEVL ' CIWA'; /* SET LEVEL FOR MINOR       */
*    CIWADUM                        /* MINOR STRUCTURE NAME PARM     */
*%CIWAPLS2:;
*        BDY(WORD),
*    3 CIWFLG1  BIT(8),             /* FIRST INTERNAL FLAG FIELD     */
*        5 CIWSVC2  BIT(1),         /* PSI ENTERED AT IGC112         */
*        5 CIWSVC3  BIT(1),         /* PSI ENTERED AT IGC113         */
*        5 *        BIT(1),         /* RESERVED                      */
*        5 CIWBREX  BIT(1),         /* PSI ENTERED VIA BRANCH ENTRY
*                                      FROM NON-RSM ROUTINE AT
*                                      IEAVPSIB/IEAVPSIX/IEAVPSIF.   */
*        5 CIWBRIN  BIT(1),         /* PSI ENTERED AT IEAVPSII       */
*        5 CIWOUTKR BIT(1),         /* INTERNAL KEEPREAL FLAG (PGOUT)*/
*        5 CIWFIXC  BIT(1),         /* PGFIX IS CALLING PGFREE       */
*        5 CIWNOPST BIT(1),         /* DO NOT POST REQUESTOR ECB
*                                      FLAG. SET BY PGFIX/PGLOAD MOD */
*    3 CIWFLG2  BIT(8),             /* RESERVED FLAG FIELD           */
*    3 CIWOPFL1 BIT(8),             /* FIRST BYTE OF INPUT VSL ENTRY */
*        5 CIWCONT  BIT(1),         /* CONTINUATION FLAG             */
*        5 CIWFIX   BIT(1),         /* PGFIX FLAG                    */
*        5 CIWFREE  BIT(1),         /* PGFREE FLAG                   */
*        5 CIWLOAD  BIT(1),         /* PGLOAD FLAG                   */
*        5 CIWRLS   BIT(1),         /* PGRLSE FLAG                   */
*        5 *        BIT(1),         /* RESERVED FOR VS1              */
*        5 CIWLONG  BIT(1),         /* LONG-FIX OPTION FLAG          */
*        5 *        BIT(1),         /* RESERVED FOR VS1              */
*    3 CIWOPFL2 BIT(8),             /* FIFTH BYTE OF INPUT VSL ENTRY */
*        5 CIWLAST  BIT(1),         /* LAST ENTRY FLAG               */
*        5 CIWNULL  BIT(1),         /* NULL ENTRY FLAG               */
*        5 CIWRAO   BIT(1),         /* REAL ADDRESS OPTION FLAG      */
*        5 CIWERR   BIT(1),         /* ERROR FLAG                    */
*        5 *        BIT(1),         /* RESERVED                      */
*        5 CIWPGOUT BIT(1),         /* PGOUT FLAG                    */
*        5 CIWKEPRL BIT(1),         /* KEEPREAL OPTION FLAG          */
*        5 CIWEXTRS BIT(1),         /* RESERVED FOR EXTENDABILITY    */
*    3 CIWRETC  FIXED(8),           /* RETURN CODE FIELD USED BY
*                                      SERVICE MODULES TO COMMUNICATE
*                                      RETURN CODES BACK TO PSI      */
*    3 CIWSAVRC FIXED(8),           /* RETURN CODE SAVE AREA USED BY
*                                      PAGE SERVICES MODULES WHEN
*                                      CALLING ANOTHER PAGE SERVICES
*                                      MODULE                        */
*    3 CIWKEY   FIXED(8),           /* THE CALLER'S PROTECTION KEY   */
*    3 *        FIXED(8),           /* RESERVED                      */
*    3 CIWINVSL PTR(31),            /* VSA OF THE REQUESTOR SUPPLIED
*                                      VSL. ZERO IF REGISTER FORM
*                                      ENTRY IS USED.                */
*    3 CIWCUVSL PTR(31),            /* VSA OF THE CURRENT VSL ENTRY
*                                      BEING PROCESSED. ZERO FOR
*                                      REGISTER ENTRY REQUESTS.      */
*    3 CIWVSL BDY(WORD)  CHAR(8),   /* INTERNAL VSL ENTRY WHERE
*                                      CURRENT VSL ENTRY IS PLACED
*                                      WHILE BEING PROCESSED.        */
*        5 CIWSTRT BDY(WORD),       /* FULLWORD REFERNCE TO FIRST
*                                      WORD OF VSL                   */
*          7 CIWIFLG1 BIT(8),       /* FIRST BYTE OF INPUT VSL ENTRY */
*             9 CIWICONT  BIT(1),   /* CONTINUATION FLAG             */
*             9 CIWIFIX   BIT(1),   /* PGFIX FLAG                    */
*             9 CIWIFREE  BIT(1),   /* PGFREE FLAG                   */
*             9 CIWILOAD  BIT(1),   /* PGLOAD FLAG                   */
*             9 CIWIRLS   BIT(1),   /* PGRLSE FLAG                   */
*             9 *         BIT(1),   /* RESERVED FOR VS1              */
*             9 CIWILONG  BIT(1),   /* LONG-FIX OPTION FLAG          */
*             9 *         BIT(1),   /* RESERVED FOR VS1              */
*          7 CIWSTRTA PTR(24),      /* START ADDR OF VIRTUAL SUBAREA */
*        5 CIWEND1 BDY(WORD),       /* FULLWORD REFERENCE TO LAST
*                                       WORD OF VSL                  */
*          7 CIWIFLG2 BIT(8),       /* FIFTH BYTE OF INPUT VSL ENTRY */
*             9 CIWILAST  BIT(1),   /* LAST ENTRY FLAG               */
*             9 CIWINULL  BIT(1),   /* NULL ENTRY FLAG               */
*             9 CIWIRAO   BIT(1),   /* REAL ADDRESS OPTION FLAG      */
*             9 CIWIERR   BIT(1),   /* ERROR FLAG                    */
*             9 *         BIT(1),   /* RESERVED                      */
*             9 CIWIOUT   BIT(1),   /* PGOUT FLAG                    */
*             9 CIWIKPRL  BIT(1),   /* KEAPREAL OPTION FLAG          */
*             9 *         BIT(1),   /* RESERVED FOR EXTENDABILITY    */
*          7 CIWEND1A PTR(24),      /* END ADDR+1 OF VIRTUAL AREA
*                                      SUBLIST                       */
*    3 CIWTCB   PTR(31),            /* ADDRESS OF REQUESTOR TCB      */
*    3 CIWECB   PTR(31),            /* ADDR OF REQUESTOR SUPPLIED
*                                      ECB                           */
*    3 CIWCURPG PTR(31),            /* ADDR OF CURRENT VIRTUAL
*                                      PAGE BEING PROCESSED          */
*    3 CIWLSTPG PTR(31),            /* ADDR OF LAST PAGE TO BE
*                                      PROCESSED                     */
*    3 CIWRETRN PTR(31),            /* SAVE AREA FOR RETURN ADDR
*                                      TO PSI. USED BY SERVICE
*                                      MODULES WHEN CALLED BY PSI    */
*    3 CIWWRK1  PTR(31),            /* FIRST  WORK AREA              */
*    3 CIWWRK2  PTR(31),            /* SECOND WORK AREA              */
*    3 CIWWRK3  PTR(31),            /* THIRD  WORK AREA              */
*    3 CIWWRK4  PTR(31),            /* FOURTH WORK AREA              */
*    3 CIWWRK5  PTR(31) CIWA9999    /* FIFTH  WORK AREA              */
*        %CIWALEN = 'LENGTH(CIWA)'; /* OBTAIN LENGTH OF CIWA         */
./ ADD NAME=IEAMMB
*        %GOTO MMBL1;         /* BILINGUAL MAPPING
         MACRO
         IEAMMB &DSECT=YES                                           */
*%MMBL1 : ;
* /*******************************************************************/
* /*                                                                 */
* /* MACMEAN MMB MEANS MONITOR MESSAGE BLOCK                         */
* /*                                                                 */
* /* MACCOMP Y-2 SC1C5/PZD81                                         */
* /*                                                                 */
* /* MACSTAT Y-2 72245/TU015156                                      */
* /*                                                                 */
* /* METHOD OF ACCESS                                                */
* /*     PL/S - DCL MMBPTR PTR                                       */
* /*     BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
* /*            USING ON DSECT NAME GIVES ADDRESSABILITY FOR ALL     */
* /*            SYMBOLS IN THAT DSECT.                               */
* /*                                                                 */
* /*******************************************************************/
*%GOTO MMBL2;   /*
         SPACE
         IEZBITS , -          SYMBOLIC BIT DEFINITIONS
         SPACE
         AIF   ('&DSECT' EQ 'NO').MMB0000
MMB      DSECT
         AGO   .MMB0020
.MMB0000 ANOP
         DS    0D
MMB      EQU   *
.MMB0020 ANOP
         SPACE
MMBNAME  DS    CL4            BLOCK ID - MMB IN EBCDIC LEFT JUSTIFIED
MMBLINK  DS    AL4            POINTER TO NEXT MMB OR ZERO
MMBBKPTR DS    AL4            POINTER TO PREVIOUS MMB OR ZERO
MMBTXLN  DS    H              LENGTH OF TEXT
         SPACE
MMBTYPE  DS    0H             MONITOR TYPE FLAGS
MMBTYPE1 DS    B -            FIRST BYTE OF MONITOR TYPE FLAGS
MMBJBNM  EQU   BIT0 -         MONITOR JOBNAMES
MMBSTAT  EQU   BIT1 -         MONITOR STATUS
MMBRSV01 EQU   BIT2 -         RESERVED
MMBRSV02 EQU   BIT3 -         RESERVED
MMBRSV03 EQU   BIT4 -         RESERVED
MMBSESS  EQU   BIT5 -         MONITOR SESSIONS
MMBRSV04 EQU   BIT6 -         RESERVED
MMBRSV05 EQU   BIT7 -         RESERVED
         SPACE
MMBTYPE2 DS    B -            SECOND BYTE OF MONITOR TYPE FLAGS
         SPACE
MMBTEXT  DS    CL128 -        MESSAGE TEXT
         SPACE
MMBSIZE  EQU   *-MMB          LENGTH OF MMB
         MEND                    */
*%MMBL2: ;
*
*DECLARE
*  1 MMB BASED(MMBPTR) BDY(WORD),       /* START OF MMB              */
*   2 MMBNAME      CHAR(4),             /* BLOCK ID - MMB IN EBCDIC
*                                          LEFT JUSTIFIED            */
*   2 MMBLINK      PTR(31),             /* POINTER TO NEXT MMB OR
*                                          ZERO                      */
*   2 MMBBKPTR     PTR(31),             /* POINTER TO PREVIOUS MMB
*                                          OR ZERO                   */
*   2 MMBTXLN      FIXED(15),           /* LENGTH OF MESSAGE TEXT    */
*
*   2 MMBTYPE      CHAR(2),             /* MONITOR TYPE FLAGS        */
*    3 MMBTYPE1     BIT(8),             /* FIRST BYTE OF MONITOR
*                                          TYPE FLAGS                */
*     4 MMBJBNM    BIT(1),              /* MONITOR JOBNAMES          */
*     4 MMBSTAT    BIT(1),              /* MONITOR STATUS            */
*     4 MMBRSV01   BIT(1),              /* RESERVED                  */
*     4 MMBRSV02   BIT(1),              /* RESERVED                  */
*     4 MMBRSV03   BIT(1),              /* RESERVED                  */
*     4 MMBSESS    BIT(1),              /* MONITOR SESSIONS          */
*     4 MMBRSV04   BIT(1),              /* RESERVED                  */
*     4 MMBRSV05   BIT(1),              /* RESERVED                  */
*
*    3 MMBTYPE2     BIT(8),             /* SECOND BYTE OF MONITOR
*                                          TYPE FLAGS                */
*
*   2 MMBTEXT CHAR(128) BDY(WORD);      /* MESSAGE TEXT              */
*
*%MMBSIZE = 'LENGTH(MMB)';              /* GET SIZE OF MMB           */
./ ADD NAME=IEAMQE
 /********************************************************************/
 /*                                                                  */
 /* MACMEAN MQE MEANS MONITOR QUEUE ELEMENT                          */
 /*                                                                  */
 /* MACCOMP Y-2 SC1CK/PZD81                                          */
 /*                                                                  */
 /* MACSTAT Y-2 73046/TU015048                                       */
 /*                                                                  */
 /* METHOD OF ACCESS - DECLARE MQEPTR PTR                            */
 /*                                                                  */
 /********************************************************************/

 DECLARE
   1 MQE BASED(MQEPTR) BDY(WORD),      /* MONITOR QUEUE ELEMENT      */
    2 MQENAME      CHAR(4),            /* BLOCK ID - MQE IN EBCDIC
                                          LEFT JUSTIFIED             */
    2 MQELINK      PTR(31),            /* POINTER TO NEXT MQE OR
                                          ZERO                       */
    2 MQEID        CHAR(2),            /* ASID OF TSO USER           */
    2 MQETYPE      CHAR(2),            /* MONITOR TYPE FLAGS         */

     3 MQETYPE1    BIT(8),             /* FIRST BYTE OF MONITOR
                                          TYPE FLAGS                 */
      4 MQEJBNM    BIT(1),             /* MONITOR JOBNAMES           */
      4 MQESTAT    BIT(1),             /* MONITOR STATUS             */
      4 MQERSV01   BIT(1),             /* RESERVED                   */
      4 MQERSV02   BIT(1),             /* RESERVED                   */
      4 MQERSV03   BIT(1),             /* RESERVED                   */
      4 MQESESS    BIT(1),             /* MONITOR SESSIONS           */
      4 MQERSV04   BIT(1),             /* RESERVED                   */
      4 MQERSV05   BIT(1),             /* RESERVED                   */

     3 MQETYPE2    BIT(8);             /* SECOND BYTE OF MONITOR
                                          TYPE FLAGS                 */

 %MQESIZE = 'LENGTH(MQE)';             /* GET SIZE OF MQE            */
./ ADD NAME=IEAPMNIP
*%GOTO MNIPBSL ;                      /*
         MACRO
&NAME    IEAPMNIP  &TYPE=,&MSGST=,&MSGEND=,&RMSGST=,&RMSGL=,&MOD=,     X
               &ASYNCH=,&PARAM=,&BUFREL=,&OPT=,&CPUID=,&ADDR=
         LCLC  &NB,&LB,&LC,&SX,&LM,&LI,&AU,&RS,&US
.**********************************************************************
.*           06/27/74   VS2-3 VERSION
.*       INITIALIZE ALL FLAG-SETTING SWITCHES TO ZERO
.*
.**********************************************************************
&NB      SETC  '0'                    OPEN - NON-NUCLEUS DEB
&LB      SETC  '0'                    OPEN - END OF NUCLEUS DEB
.*                                    MOUNT - UCB ADDRESS GIVEN
&LC      SETC  '0'                    OPEN,MOUNT - CONDITIONAL REQUEST
&SX      SETC  '0'                    OPEN - SINGLE EXTENT
&LM      SETC  '0'                    OPEN - SUPPRESS OPEN MSGS
&LI      SETC  '0'                    OPEN,MOUNT - DS NAME PTR GIVEN
&AU      SETC  '0'                    OPEN - AUTHORINZED LIBRARY
&RS      SETC  '0'                    OPEN - PERMANENTLY RESIDENT DS
&US      SETC  '0'                    MOUNT- UCB SCAN ONLY
         AIF   ('&TYPE' EQ 'PLIST').LISTMAC
         AIF   ('&TYPE' EQ 'MOUNTPL').LISTMAC
         AIF   ('&TYPE' EQ 'OPENPL').LISTMAC
         AIF   ('&TYPE' EQ 'SCHEDL').LISTMAC
&NAME    DS    0H
         AGO   .EXMACRO
.LISTMAC ANOP
&NAME    DS    0F
.EXMACRO ANOP
         AIF   ('&TYPE' NE 'MOUNTPL').NOMPL
.**************
.*
.*        NIPMOUNT  PARAMETER  LIST
.*
.**************
         AIF   ('&OPT' NE 'PTR').MNOPTR
         AIF   (K'&PARAM EQ 0).MNOPRM
         DC    A(&PARAM)              DATA SET NAME ADDRESS
         AGO   .MZER
.MNOPRM  ANOP
         DC    A(0)                   DATA SET NAME ADDRESS
.MZER    ANOP
         DC    XL8'0000000000000000'  RESERVED
         AGO   .MPTR
.MNOPTR  ANOP
         DC    CL12'&PARAM '          DATASET NAME
.MPTR    ANOP
         DC    CL6' '                 VOLUME SERIAL OR UCB ADDRESS
         DC    XL2'0000'              DEVICE TYPE
         DC    X'00'                  NIPMOUNT FLAGS
         DC    XL3'000000'            UNASSIGNED
         AGO   .MACEND
.NOMPL   AIF   ('&TYPE' NE 'OPENPL').NOOPL
.**************
.*
.*        NIPOPEN  PARAMETER  LIST
.*
.**************
         AIF   ('&OPT' NE 'PTR').ONOPTR
         AIF   (K'&PARAM EQ 0).ONOPRM
         DC    A(&PARAM)              DATA SET NAME ADDRESS
         AGO   .OZER
.ONOPRM  ANOP
         DC    A(0)                   DATA SET NAME ADDRESS
.OZER    ANOP
         DC    XL8'0000000000000000'  RESERVED
         AGO   .OPTR
.ONOPTR  ANOP
         DC    CL12'&PARAM '          DATASET NAME
.OPTR    ANOP
         DC    A(0)                   DCB ADDRESS
         DC    A(0)                   UCB ADDRESS
         DC    X'00'                  NIPOPEN FLAGS
         DC    X'00'                  NIPOPEN RETURN CODE
         DC    XL2'0000'              UNASSIGNED
         AGO   .MACEND
.NOOPL   AIF   ('&TYPE' NE 'MOUNT').NOMNT
.**************
.*
.*        LINKAGE TO  NIPMOUNT
.*
.**************
         AIF   ('&OPT(1)' NE 'LB').MNOLB
&LB      SETC  '1'
.MNOLB   AIF   ('&OPT(2)' NE 'LC').MNOLC
&LC      SETC  '1'
.MNOLC   AIF   ('&OPT(3)' NE 'LI').MNOLI
&LI      SETC  '1'
.MNOLI   AIF   ('&OPT(4)' NE 'US').MNOUS
&US      SETC  '1'
.MNOUS   ANOP
         LA    RPARM,&PARAM           LOAD PARM LIST ADDRESS
         MVI   NMNTFL(RPARM),B'0000&US&LI&LC&LB'  SET FLAG BITS
         AGO   .ELOAD
.NOMNT   AIF   ('&TYPE' NE 'OPEN').NOOPN
.**************
.*
.*        LINKAGE TO  NIPOPEN
.*
.**************
         AIF   ('&OPT(1)' NE 'NB').NONB
&NB      SETC  '1'
.NONB    AIF   ('&OPT(2)' NE 'LB').NOLB
&LB      SETC  '1'
.NOLB    AIF   ('&OPT(3)' NE 'LC').NOLC
&LC      SETC  '1'
.NOLC    AIF   ('&OPT(4)' NE 'SX').NOSX
&SX      SETC  '1'
.NOSX    AIF   ('&OPT(5)' NE 'LM').NOLM
&LM      SETC  '1'
.NOLM    AIF   ('&OPT(6)' NE 'LI').NOLI
&LI      SETC  '1'
.NOLI    AIF   ('&OPT(7)' NE 'AU').NOAU
&AU      SETC  '1'
.NOAU    AIF   ('&OPT(8)' NE 'RS').NORS
&RS      SETC  '1'
.NORS    ANOP
         LA    RPARM,&PARAM           LOAD PARM LIST ADDRESS
         MVI   NOPNFL(RPARM),B'&RS&AU&LM&LI&NB&LB&LC&SX' SET FLAG BITS
         AGO   .ELOAD
.NOOPN   AIF   ('&TYPE' NE 'HEADER').NOHEAD
.**************
.*
.*        NIPWTO  MESSAGE  HEADER
.*
.**************
         DC    Y(&MSGEND-&MSGST)      MESSAGE LENGTH
         AIF   ('&OPT(1)' NE 'NHC').NONHC
         AIF   ('&OPT(2)' NE 'NBC').NONBC1
         DC    X'C0'                  FLAG BYTE 1
         AGO   .HEADB2
.NONBC1  DC    X'80'                  FLAG BYTE 1
         AGO   .HEADB2
.NONHC   AIF ('&OPT(2)' NE 'NBC').NONBC2
         DC    X'40'                 FLAG BYTE 1
         AGO   .HEADB2
.NONBC2  DC    X'00'                 FLAG BYTE 1
.HEADB2  DC    X'00'                 FLAG BYTE 2
         AGO   .MACEND
.NOHEAD  AIF   ('&TYPE' NE 'PLIST').NOLIST
.**************
.*
.*        NIPWTOR  PARAMETER  LIST
.*
.**************
         AIF   ('&RMSGST' EQ 'SQARBUF').ZERRPA
         DC    A(&RMSGST)             REPLY AREA ADDRESS
         DC    A(0)                   REPLY ECB ADDRESS
         DC    H'&RMSGL'              REPLY AREA LENGTH
         AIF   ('&ASYNCH' EQ 'YES').ASYN1
         DC    XL1'00'                NIP WTOR FLAGS
         AGO   .PARM1
.ASYN1   DC    XL1'80'                NIP WTOR FLAGS
         AGO   .PARM1
.ZERRPA  DC    A(0)                   REPLY AREA ADDRESS
         DC    A(0)                   REPLY ECB ADDRESS
         DC    H'0'                   REPLY AREA LENGTH
         AIF   ('&ASYNCH' EQ 'YES').ASYN2
         DC    XL1'08'                NIP WTOR FLAGS
         AGO   .PARM1
.ASYN2   DC    XL1'88'                NIP WTOR FLAGS
.PARM1   DC    XL1'00'                RESERVED
         DC    A(&MSGST)              WTOR MESSAGE ADDRESS
         AGO   .MACEND
.********************
.*
.*            NIPSCHED PARAMETER LIST
.*
.**********************
.NOLIST  AIF   ('&TYPE' NE 'SCHEDL').NOSCHDL
         AIF   (K'&ADDR EQ 0).SCHDL1
         DC    A(&ADDR)
         AGO   .SCHDL2
.SCHDL1  DC    A(0)
.SCHDL2  AIF   (K'&PARAM EQ 0).SCHDL3
         DC     A(&PARAM)
         AGO    .SCHDL4
.SCHDL3  DC     A(0)
.SCHDL4  DC     XL2'0000'
         AGO   .MACEND
.********************
.*
.*       LINKAGE FOR THE NIPSCHED  ROUTINE
.*
.*********************
.NOSCHDL AIF   ('&TYPE' NE 'SCHED').NOSCHED
         LA    RPARM,&PARAM
         MVC   8(2,RPARM),0(&CPUID)
         AIF   (K'&ADDR EQ 0).ELOAD
         ST    &ADDR,0(0,RPARM)                                @YM1995P
         AGO   .ELOAD
.NOSCHED AIF   ('&TYPE' NE 'PRMPT').NOPRMPT
.*******************************************
.*
.*      LINKAGE FOR THE NIPPRMPT ROUTINE
.*
.******************************************
         LA     RPARM,&PARAM       ADDRESS OF PARAMETER FOR PROMPT
         AIF   ('&OPT' NE 'ERROR').PRMPT1
         LCR   RPARM,RPARM         COMPLEMENT PARAM REGISTER (ERROR)
.PRMPT1  AGO   .ELOAD
.**************
.*
.*        LINKAGE  FOR:  NIPSENSE, NIPSWAIT,NIPTIME,NIPUCBFN,
.*                       NIPWTO, NIPWTOR, NIPWTOR2
.*                       NIPOPIO,NIPVIRT,NIPREAL,NIPPRMPT
.*
.**************
.NOPRMPT AIF   ('&TYPE' EQ 'SENSE').PLOAD
         AIF   ('&TYPE' EQ 'SWAIT').ELOAD
         AIF   ('&TYPE' EQ 'OPIO').ELOAD
         AIF   ('&TYPE' EQ 'VIRT').ELOAD
         AIF   ('&TYPE' EQ 'REAL').ELOAD
         AIF   ('&TYPE' NE 'TIME').NTIME
         AIF   ('&PARAM' NE 'DEC').BTIME
         SR    RPARM,RPARM            REQUEST DECIMAL TIME
         AGO   .ELOAD
.BTIME   LA    RPARM,4(0,0)           REQUEST BINARY TIME      @YM1995P
         AGO   .ELOAD
.NTIME   AIF   ('&TYPE' EQ 'UCBFN').PLOAD
         AIF   ('&TYPE' EQ 'WTOR2').WTOR2
         LA    RPARM,&PARAM           LOAD PARM REGISTER
         AGO   .ELOAD
.WTOR2   AIF   ('&BUFREL' NE 'YES').PLOAD
         LCR   RPARM,&PARAM           INDICATE SQA RELEASE
         AGO   .ELOAD
.PLOAD   AIF   ('&PARAM' EQ 'RPARM').ELOAD
         LR    RPARM,&PARAM           LOAD PARM REGISTER
.ELOAD   AIF   ('&MOD' EQ 'NIPM').ELOAD1
         L     RENTRY,NVT&TYPE.(0,RNVT)   LOAD BRANCH ADDRESS  @YM1995P
         BALR  REXIT,RENTRY               CALL THE ROUTINE
         AGO   .MACEND
.ELOAD1  ANOP
         L     RENTRY,NVT&TYPE        LOAD BRANCH ADDRESS
         BALR  REXIT,RENTRY           BRANCH TO ROUTINE
.MACEND  ANOP
         MEND  ,                      */
*%MNIPBSL: ;
*        /***             NIPWTO  MESSAGE  HEADER                  ***/
*        /* THE FOLLOWING STRUCTURE MAPS THE NIPWTO MESSAGE HEADER   */
*        /* THAT IS GENERATED BY THE BAL MACRO -IEAPMNIP TYPE=HEADER-*/
*        /* AND IS USED TO PASS INFORMATION TO THE NIPWTO SERVICE    */
*        /* ROUTINE. THE MESSAGE LENGTH FIELD, NWTOLNG, INCLUDES THE */
*        /* LENGTH OF THE MESSAGE HEADER ITSELF.                     */
*        DECLARE 1 NWTOHDR BASED ,        /* MESSAGE HEADER START    */
*                 2 NWTOLNG  FIXED(15),   /* MESSAGE LENGTH          */
*                 2 NWTOFL   CHAR(2),     /* NIP MESSAGE FLAGS       */
*                  3 NWTOFLNH  BIT(1),    /* NOT TO BE HARDCOPIED    */
*                  3 NWTOFLNC  BIT(1),    /* SUPRESS BLANK COMPRESS  */
*                  3 *         BIT(14);   /* RESERVED                */
*        /***        END  OF  NIPWTO  MESSAGE  HEADER              ***/
*
*        /***             NIPWTOR  PARAMETER  LIST                 ***/
*        /* THE FOLLOWING STRUCTURE MAPS THE NIPWTOR PARAMETER LIST  */
*        /* THAT IS GENERATED BY THE BAL MACRO -IEAPMNIP TYPE=PLIST- */
*        /* AND IS USED TO PASS INFORMATION TO THE NIPWTOR SERVICE   */
*        /* ROUTINE.                                                 */
*        DECLARE 1 NWTORLST BASED,        /* PARM LIST START         */
*                 2 NWTORRPA PTR(31),     /* REPLY AREA ADDRESS      */
*                 2 NWTORECB PTR(31),     /* REPLY ECB ADDRESS       */
*                 2 NMTORRDL FIXED(15),   /* REPLY AREA LENGTH       */
*                 2 NWTORFL  CHAR(1),     /* NIP WTOR FLAGS          */
*                  3 NWTORFLA BIT(1),     /* ASYNCHRONOUS REQUEST    */
*                  3 *        BIT(3),     /* RESERVED                */
*                  3 NWTORFLB BIT(1),     /* PROVIDE SQA BUFFER      */
*                  3 *        BIT(3),     /* RESERVED                */
*                 2   *      CHAR(1),     /* RESERVED                */
*                 2 NWTORMSG PTR(31);     /* WTOR MESSAGE HEADER
*                                            ADDRESS.                */
*        /***        END  OF  NIPWTOR  PARAMETER  LIST             ***/
*
*        /***        NIP SYSTEM PARAMETER QUEUE ENTRY              ***/
*        /* THE FOLLOWING STRUCTURE MAPS THE NIP SYSTEM PARAMETER    */
*        /* ENTRY WHICH IS AN INTERNAL CONTROL BLOCK USED BY NIP TO  */
*        /* TRACK SQA BUFFERS USED TO CONTAIN WTOR REPLIES.  THIS    */
*        /* IS DONE SO THAT IEAVNIPX CAN FREE THESE AREAS AT THE END */
*        /* OF NIP PROCESSING.  ONE SPE IS CONTAINED IN THE NVTSPE   */
*        /* FIELD OF THE NVT. IF OTHERS ARE REQUIRED, THEY ARE       */
*        /* OBTAINED DYNAMICALLY FROM SQA AND CHAINED TO THE ONE IN  */
*        /* THE NVT.                                                 */
*        DECLARE 1 NIPSPE BASED ,         /* NIPSPE START            */
*                 2 NIPSPEQ PTR(31),      /* CHAIN PTR               */
*                 2 NIPSPEA PTR(31);      /* PARAMETER PTR           */
*        /***                  END OF NIPSPE                       ***/
*
*        /***              NIPMOUNT PARAMETER LIST                 ***/
*        /* THE FOLLOWING STRUCTURE MAPS THE NIPMOUNT PARAMETER LIST */
*        /* THAT IS GENERATED BY THE BAL MACRO -IEAPMNIP TYPE=MOUNTPL*/
*        /* AND IS USED TO PASS INFORMATION TO THE NIPMOUNT SERVICE  */
*        /* ROUTINE.  THIS MAPPING MUST BE INCLUDED IN ANY MODULE    */
*        /* THAT USES THE NIPMOUNT SERVICE, SINCE IT IS REFERRED TO  */
*        /* BY THE NIPMOUNT BAL CALL MACRO, IEAPMNIP TYPE=MOUNT.     */
*
*        DECLARE 1 NIPMNTPL BASED,        /* PARM LIST START         */
*               2 NMNTDS CHAR(12),        /* DATASET NAME  OR        */
*                3 NMNTDSA PTR(31) BDY(BYTE), /* DS NAME ADDRESS     */
*               2 NMNTVS CHAR(6),         /* VOLUME SERIAL  OR       */
*                3 NMNTUCB FIXED(31) BDY(BYTE), /* UCB ADDRESS       */
*               2 NMNTDT CHAR(2),         /* DEVICE TYPE             */
*               2 NMNTFL CHAR(1),         /* NIPMOUNT FLAGS          */
*                3 *        BIT(4),       /* ** RESERVED **          */
*                3 NMNTFUS  BIT(1),       /* UCB SCAN ONLY REQUEST   */
*                3 NMNTFLI  BIT(1),       /* DS NAME ADDR GIVEN      */
*                3 NMNTFLC  BIT(1),       /* CONDITIONAL REQUEST     */
*                3 NMNTFLB  BIT(1),       /* UCB ADDRESS GIVEN       */
*               2 *      CHAR(3);         /* ** RESERVED **          */
*        /***            END OF NIPMOUNT PARAMETER LIST            ***/
*
*        /***                NIPOPEN PARAMETER LIST                ***/
*        /* THE FOLLOWING STRUCTURE MAPS THE NIPOPEN PARAMETER LIST  */
*        /* THAT IS GENERATED BY THE BAL MACRO -IEAPMNIP TYPE=OPENPL-*/
*        /* AND IS USED TO PASS INFORMATION TO THE NIPOPEN SERVICE   */
*        /* ROUTINE.  THIS MAPPING MUST BE INCLUDED IN ANY MODULE    */
*        /* THAT USES THE NIPOPEN SERVICE, SINCE IT IS REFERRED TO BY*/
*        /* THE NIPOPEN BAL CALL MACRO, IEAPMNIP TYPE=OPEN.          */
*
*        DECLARE 1 NIPOPNPL BASED,        /* PARM LIST START         */
*                 2 NOPNDS CHAR(12),      /* DATASET NAME OR         */
*                  3 NOPNDSA PTR(31) BDY(BYTE), /* DS NAME ADDRESS   */
*                 2 NOPNDCB PTR(31),      /* DCB ADDRESS             */
*                 2 NOPNUCB PTR(32),      /* UCB ADDRESS     @Z30AAXC*/
*                 2 NOPNFL CHAR(1),       /* NIPOPEN FLAGS           */
*                  3 NOPNFRS  BIT(1),     /* PERMANENTLY RESIDENT DS */
*                  3 NOPNFAU  BIT(1),     /* AUTHORIZED LIBRARY FLAG */
*                  3 NOPNFLM  BIT(1),     /* SUPRESS DS NOT FOUND MSG*/
*                  3 NOPNFLI  BIT(1),     /* DS NAME ADDR GIVEN      */
*                  3 NOPNFLNB BIT(1),     /* INITIALIZE BASIC DEB    */
*                  3 NOPNFLLB BIT(1),     /* END OF NUCLEUS DEB      */
*                  3 NOPNFLLC BIT(1),     /* CONDITIONAL REQUEST     */
*                  3 NOPNFLSX BIT(1),     /* FIRST EXTENT ONLY       */
*                 2 NOPNRC   CHAR(1),     /* NIPOPEN RETURN CODE     */
*                 2 *        CHAR(2);     /* ** RESERVED **          */
*        /***           END OF NIPOPEN PARAMETER LIST              ***/
*
*       /***     NIPSCHED    PARAMETER   LIST               *****/
*        /* THE FOLLOWING STRUCTURE MAPS THE NIPSCHED PARAMETER LIST */
*        /* THAT IS GENERATED BY THE BAL MACRO -IEAPMNIP TYPE=SCHEDL-*/
*        /* AND IS USED TO PASS INFORMATION TO THE NIPSCHED SERVICE  */
*        /* ROUTINE.                                                 */
*
*        DECLARE 1 NIPSCHDL BASED,
*                  2 NSCHDPTR PTR(31),  /*ADDRESS OF ROUTINE TO SCHED*/
*                  2 NSCHDPRM PTR(31),  /* ADDRESS OF CALLERS AREA   */
*                  2 NSCHDCPU CHAR(2);  /* CPU ADDRESS FOR SCHEDULE  */
*      /*****  END OF NIPSCHED  PARAMETER  LIST             ********/
./ ADD NAME=IEAPNPB
*/******************************************************************/
*/*                                                                */
*/*                         I E A P N P B                          */
*/*                     DATE=05/11/72,LEVEL=1                      */
*/*                                                                */
*/*   THIS BSL MACRO PROVIDES EXPANSIONS OF CONTROL BLOCKS         */
*/*   (IOB,ECB,DEB,DCB) INITIALIZED FOR I/O FOR DIRECT ACCESS      */
*/*   AND TAPE DATA SETS, INPUT OR OUTPUT CONSOLES OR FOR          */
*/*   CONSOLE TESTING.                                             */
*/*                                                                */
*/******************************************************************/
*
*
*     %IF  DASD ^= 'YES'
*       %THEN
*         %GOTO NPBNUC ;
*/******************************************************************/
*/*                                                                */
*/*              BLOCKS  FOR  DIRECT ACCESS I/O                    */
*/*                                                                */
*/******************************************************************/
*/*                                                                */
*/**                                                              **/
*/*               INPUT/OUTPUT  BLOCK   (IOB)                      */
*/**                                                              **/
*       DECLARE  1 * ,
*                  2 NPBNIOBF  CHAR(4) ,    /* IOB PREFIX BYTES    */
*                    /* BYTE 0 - MAX RETRY                         */
*                    3 NPBNIFB0  PTR(8) INIT(0) ,
*                    3 NPBNIFB1  CHAR(1) INIT('00'X) , /* BYTE 1 : */
*                      4 NIPDSTAT  BIT(1) , /*   DEVICE STATUS     */
*                      4 NIPDFEST  BIT(1) , /*   FEATURE TEST      */
*                      4 NIPDRTY   BIT(1) , /*   RETRY OPTION      */
*                      4 NIPDERR   BIT(1) , /*   REPORT ERROR      */
*                      4 NIPDMOD   BIT(1) , /*   TAPE MODE REQUIRED*/
*                      4 *         BIT(3) , /*   RESERVED          */
*                    3 NPBNIFB2  CHAR(1) INIT('00'X) , /* BYTE 2   */
*                    3 NPBNIFB3  CHAR(1) INIT('00'X) , /* BYTE 3 : */
*                      4 NIPDUNAV  BIT(1) , /*   UNAVAILABLE       */
*                      4 NIPDCREJ  BIT(1) , /*   COMMAND REJECT    */
*                      4 NIPDOFFL  BIT(1) , /*   OFF-LINE          */
*                      4 *         BIT(5) , /*   RESERVED          */
*                  2 NIPIOBSN ,
*                    3  NPBNIOB ,
*                      /* FLAG AND SENSE BYTES                     */
*                      4 NPBNFGSN  CHAR(4) INIT('42000000'X) ,
*                      /* IOBECBPT - ECB ADDRESS                   */
*                      4 NPBNECBA  PTR(31) INIT(ADDR(NPBNECB)) ,
*                      /* FLAGS AND CSW IMAGE                      */
*                      4 NPBNIOB1  CHAR(8) INIT('0000000000000000'X) ,
*                      /* IOBSTART - CHANNEL PROGRAM ADDRESS       */
*                      4 NPBNCPAD  PTR(31) INIT(0) ,
*                      /* IOBDCBPT - DCB ADDRESS                   */
*                      4 NPBNDCBP  PTR(31) INIT(ADDR(NPBNDCB1)-40) ,
*                      /*     REST OF IOB COMMON                   */
*                      4 NPBNREST  CHAR(8) INIT('0000000000000000'X) ,
*
*/**                     DASD  EXTENSION                          **/
*
*                      /* IOBSEEK - MBBCCHHR                       */
*                      4 NPBNSEEK  CHAR(8) INIT('0000000000000000'X) ;
*/**                                                              **/
*/*               EVENT  CONTROL  BLOCK   (ECB)                    */
*/**                                                              **/
*     DECLARE 1  NIPECBSN ,
*             2  NPBNECB ,
*               /* EVENT COMPLETION CODE                           */
*               3 NPBNCPCD  CHAR(1) INIT('00'X),
*               /* RB ADDR OR REST OF COMPLETION CODE              */
*               3 NPBNRBAD  PTR(24) INIT(0) ;
*     %GOTO NPBNDEBN ;
*%NPBNUC: ;
*     %IF  NUCLEUS ^= 'YES'
*       %THEN
*         %GOTO NPBNUCX ;
*/******************************************************************/
*/*                                                                */
*/*                   BLOCKS  FOR  SYS1.NUCLEUS                    */
*/*                                                                */
*/******************************************************************/
*/*                                                                */
*%NPBNDEBN: ;
*/**                                                              **/
*/*               DATA  EXTENT  BLOCK   (DEB)                      */
*/**                                                              **/
*/*                                                                */
*/**                    DEB  PREFIX                               **/
*
*     DECLARE 1  * BDY(DWORD,5) ,
*             /* DEBLNGTH - DEB LENGTH                             */
*             2  NPBNLNTH  CHAR(1) INIT('06'X) ,
*             2  NPBNRSVD  PTR(24) INIT(0) , /* RESERVED           */
*
*/**               DEB  BASIC  SECTION                            **/
*
*             2  NIPDEBSN ,
*               3  NPBNDEB ,
*                 /* TCB ADDR - UNUSED                             */
*                 4 NPBNDEB1  PTR(31) INIT(0) ,
*                 /* DEBAMLNG - ACSECT LENGTH                      */
*                 4 NPBNAMLN  CHAR(1) INIT('00'X) ,
*                 4 NPBNDEB2  PTR(24) INIT(0) , /* 3 BYTES - UNUSED*/
*                 /* DEBOFLGS - DATA SET STATUS                    */
*                 4 NPBNOFLG  CHAR(1) INIT('00'X) BDY(WORD) ,
*                 /* FLAGS,ETC - UNUSED                            */
*                 4 NPBNDEB3  CHAR(7) INIT('00000000000000'X) ,
*                 /* DEBNMEXT - NO. OF EXTENTS                     */
*                 4 NPBNNMXT  CHAR(1) INIT('01'X) ,
*                 /* IOB ADDRESS - UNUSED                          */
*                 4 NPBNDEB4  PTR(24) INIT(0) ,
*                 /* DEBPRIOR -TASK PRIORITY                       */
*                 4 NPBNPRTY  CHAR(1) INIT('00'X) ,
*                 /* ECB ADDRESS - UNUSED                          */
*                 4 NPBNDEB5  PTR(24) INIT(0) ,
*                 /* DEBPROTG,DEBDEBID                             */
*                 4 NPBNKYID  CHAR(1) INIT('0F'X) ,
*                 /* DEBDCBAD - DCB ADDRESS                        */
*                 4 NPBNDCBA  PTR(24) INIT(ADDR(NPBNDCB1)-40) ,
*                 /* DEBEXSCL - EXTENT SCALE                       */
*                 4 NPBNXSCL  CHAR(1) INIT('00'X) ,
*                 /* DEBAPPAD - APPENDAGE ADDRESS                  */
*                 4 NPBNAPAD  PTR(24) INIT(0) ,
*
*/**            DIRECT - ACCESS STORAGE DEVICE SECTION            **/
*
*                 /* DEBDVMOD - FILE MASK                          */
*                 4 NPBNDVMD  CHAR(1) INIT('18'X) ,
*                 /* DEBUCBAD - UCB ADDRESS                        */
*                 4 NPBNUCBA  PTR(24) INIT(0) ,
*                 /* DEBBINUM - BIN NUMBER                         */
*                 4 NPBNBINM  CHAR(2) INIT('0000'X) ,
*                 /* DEBSTRCC - START CYLINDER                     */
*                 4 NPBNSTCC  CHAR(2) INIT('0000'X) ,
*                 /* DEBSTRHH - START TRACK                        */
*                 4 NPBNSTHH  CHAR(2) INIT('0000'X) ,
*                 /* DEBENDCC - END CYLINDER                       */
*                 4 NPBNNDCC  CHAR(2) INIT('FFFF'X) ,
*                 /* DEBENDHH - END TRACK                          */
*                 4 NPBNNDHH  CHAR(2) INIT('FFFF'X) ,
*                 /* DEBNMTRK - NUMBER OF TRACKS                   */
*                 4 NPBNNTRK FIXED(15) INIT('7FFF'X) ,
*/**                                                              **/
*/*                DATA  CONTROL  BLOCK   (DCB)                    */
*/**                                                              **/
*                 4 NPBNDCB1 ,
*                   /* DCBMACRF - MACRO TYPE                       */
*                   5 NPBNMACR  CHAR(4) INIT('00008000'X) BDY(WORD) ,
*                   /* DCBIFLGS - FLAGS FOR IOS                    */
*                   5 NPBNIFGS  CHAR(1) INIT('00'X) ,
*                   /* DCBDEBAD - DEB ADDRESS                      */
*                   5 NPBNDEBA  PTR(24) INIT(ADDR(NPBNDEB)) ,
*                   /* DCBOFLGS - FLAGS FOR OPEN                   */
*                   5 NPBNOFGS  CHAR(4) INIT('12000000'X) ;
*
*/*              DATA CONTROL BLOCK BASE                           */
*     DECLARE 1  NIPDCBSN DEFINED(NPBNOFLG) ,
*               2  NPBNDCB ;
*
*%NPBNUCX: ;
*     %IF  NPBIOB ^= 'YES'
*       %THEN
*         %GOTO NPBIOBX ;
*/******************************************************************/
*/*                                                                */
*/*              NIP  CONTROL  BLOCKS  FOR  I/O                    */
*/*                                                                */
*/******************************************************************/
*/*                                                                */
*/**                                                              **/
*/*               INPUT/OUTPUT  BLOCK   (IOB)                      */
*/**                                                              **/
*       DECLARE  1 * ,
*                  2 NPBNIOBF  CHAR(4) ,    /* IOB PREFIX BYTES    */
*                    /* BYTE 0 - MAX RETRY                         */
*                    3 NPBNIFB0  PTR(8) INIT(0) ,
*                    3 NPBNIFB1  CHAR(1) INIT('00'X) , /* BYTE 1 : */
*                      4 NIPDSTAT  BIT(1) , /*   DEVICE STATUS     */
*                      4 NIPDFEST  BIT(1) , /*   FEATURE TEST      */
*                      4 NIPDRTY   BIT(1) , /*   RETRY OPTION      */
*                      4 NIPDERR   BIT(1) , /*   REPORT ERRORS     */
*                      4 NIPDMOD   BIT(1) , /*   TAPE MODE REQUIRED*/
*                      4 *         BIT(3) , /*   RESERVED          */
*                    3 NPBNIFB2  CHAR(1) INIT('00'X) , /* BYTE 2   */
*                    3 NPBNIFB3  CHAR(1) INIT('00'X) , /* BYTE 3 : */
*                      4 NIPDUNAV  BIT(1) , /*   UNAVAILABLE       */
*                      4 NIPDCREJ  BIT(1) , /*   COMMAND REJECT    */
*                      4 NIPDOFFL  BIT(1) , /*   OFF-LINE          */
*                      4 *         BIT(5) , /*   RESERVED          */
*                  2 NIPIOBSN ,
*                    3  NPBNIOB ,
*                      /* FLAG AND SENSE BYTES                     */
*                      4 NPBNFGSN  CHAR(4) INIT('42000000'X) ,
*                      /* IOBECBPT - ECB ADDRESS                   */
* % IF NPBECB ^= 'YES'
*   % THEN
*     %  GOTO NPBECBNA ;
*                      4 NPBNECBA  PTR(31) INIT(ADDR(NPBNECB)) ,
* % GOTO NPBECBYA ;
* %NPBECBNA:;
*                      4 NPBNECBA  PTR(31) INIT(0) ,
* %NPBECBYA:;
*                      /* FLAGS AND CSW IMAGE                      */
*                      4 NPBNIOB1  CHAR(8) INIT('0000000000000000'X) ,
*                      /* IOBSTART - CHANNEL PROGRAM ADDRESS       */
*                      4 NPBNCPAD  PTR(31) INIT(0) ,
*                      /* IOBDCBPT - DCB ADDRESS                   */
* % IF NPBDCB ^= 'YES'
*   % THEN
*     % GOTO NPBDCBNA ;
*                      4 NPBNDCBP  PTR(31) INIT(ADDR(NPBNDCB1)-40) ,
* %GOTO NPBDCBYA ;
* %NPBDCBNA:;
*                      4 NPBNDCBP  PTR(31) INIT(0) ,
* %NPBDCBYA:;
*                      /*    REST OF IOB COMMON                    */
*                      4 NPBNREST  CHAR(8) INIT('0000000000000000'X) ,
*
*/**                       DASD  EXTENSION                        **/
*
*                      /* IOBSEEK - MBBCCHHR                       */
*                      4 NPBNSEEK  CHAR(8) INIT('0000000000000000'X) ;
* %NPBIOBX:;
* % IF NPBECB ^= 'YES'
*   % THEN
*     % GOTO NPBECBX ;
*/**                                                              **/
*/*               EVENT  CONTROL  BLOCK   (ECB)                    */
*/**                                                              **/
*     DECLARE 1  NIPECBSN ,
*             2  NPBNECB ,
*               /* EVENT COMPLETION CODE                           */
*               3 NPBNCPCD  CHAR(1) INIT('00'X),
*               /* RB ADDRESS OR REST OF COMPLETION CODE           */
*               3 NPBNRBAD  PTR(24) INIT(0) ;
* %NPBECBX:;
* % IF NPBDEB ^= 'YES'
*   % THEN
*     % GOTO NPBDEBX ;
*/**                                                              **/
*/*               DATA  EXTENT  BLOCK   (DEB)                      */
*/**                                                              **/
*/*                                                                */
*/**                    DEB  PREFIX                               **/
*
*     DECLARE 1  * BDY(DWORD,5) ,
*              /* DEBLNGTH - DEB LENGTH                            */
*              2 NPBNLNTH  CHAR(1) INIT('06'X) ,
*              2 NPBNRSVD  PTR(24) INIT(0) , /* RESERVED           */
*
*/**               DEB  BASIC  SECTION                            **/
*
*              2 NIPDEBSN ,
*               3  NPBNDEB ,
*                 /* TCB ADDRESS - UNINITIALIZED                   */
*                 4 NPBNDEB1  PTR(31) INIT(0) ,
*                 /* DEBAMLNG - ACCESS METHOD SECTION LENGTH       */
*                 4 NPBNAMLN  CHAR(1) INIT('00'X) ,
*                 4 NPBNDEB2  PTR(24) INIT(0) , /* 3 BYTES - UNUSED*/
*                 /* DEBOFLGS - DATA SET STATUS                    */
*                 4 NPBNOFLG  CHAR(1) INIT('00'X) BDY(WORD) ,
*                 /* FLAGS,ETC - UNINITIALIZED                     */
*                 4 NPBNDEB3  CHAR(7) INIT('00000000000000'X) ,
*                 /* DEBNMEXT - NUMBER OF EXTENTS                  */
*                 4 NPBNNMXT  CHAR(1) INIT('01'X) ,
*                 /* IOB ADDRESS - UNINITIALIZED                   */
*                 4 NPBNDEB4  PTR(24) INIT(0) ,
*                 /* DEBPRIOR - TASK PRIORITY                      */
*                 4 NPBNPRTY  CHAR(1) INIT('00'X) ,
*                 /* AN ECB ADDRESS - UNINITIALIZED                */
*                 4 NPBNDEB5  PTR(24) INIT(0) ,
*                 /* DEBPROTG,DEBDEBID                             */
*                 4 NPBNKYID  CHAR(1) INIT('0F'X) ,
*                 /* DEBDCBAD - DCB ADDRESS                        */
* % IF NPBDCB ^= 'YES'
*   % THEN
*     % GOTO NPBDCBN1 ;
*                 4 NPBNDCBA  PTR(24) INIT(ADDR(NPBNDCB1)-40) ,
* % GOTO NPBDCBY1 ;
* %NPBDCBN1:;
*                 4 NPBNDCBA  PTR(24) INIT(0) ,
* %NPBDCBY1:;
*                 /* DEBEXSCL - EXTENT SCALE                       */
*                 4 NPBNXSCL  CHAR(1) INIT('00'X) ,
*                 /* DEBAPPAD - APPENDAGE ADDRESS                  */
*                 4 NPBNAPAD  PTR(24) INIT(0) ,
*
*/**            DIRECT - ACCESS STORAGE DEVICE SECTION            **/
*
* % IF DEB16 ^= 'YES'
*   % THEN
*     % GOTO NPBDEB1 ;
*                 /* 16 DASD EXTENTS                               */
*                 4 *    (64) FIXED(31) INIT((64)0) ;
*% GOTO NPBDEBX ;
*%NPBDEB1: ;
*                 /* DEBDVMOD - FILE MASK                          */
*                 4 NPBNDVMD  CHAR(1) INIT('18'X) ,
*                 /* DEBUCBAD - UCB ADDRESS                        */
*                 4 NPBNUCBA  PTR(24) INIT(0) ,
*                 /* DEBBINUM - BIN NUMBER                         */
*                 4 NPBNBINM  CHAR(2) INIT('0000'X) ,
*                 /* DEBSTRCC - START CYL                          */
*                 4 NPBNSTCC  CHAR(2) INIT('0000'X) ,
*                 /* DEBSTRHH - START TRACK                        */
*                 4 NPBNSTHH  CHAR(2) INIT('0000'X) ,
*                 /* DEBENDCC - END CYL                            */
*                 4 NPBNNDCC  CHAR(2) INIT('FFFF'X) ,
*                 /* DEBENDHH - END TRACK                          */
*                 4 NPBNNDHH  CHAR(2) INIT('FFFF'X) ,
*                 /* DEBNMTRK - NUMBER OF TRACKS                   */
*                 4 NPBNNTRK FIXED(15) INIT('7FFF'X) ;
* %NPBDEBX:;
* % IF NPBDCB ^= 'YES'
*   % THEN
*     % GOTO NPBDCBX ;
*/**                                                              **/
*/*                DATA  CONTROL  BLOCK   (DCB)                    */
*/**                                                              **/
*     DECLARE 1 * ,
*               2 NPBNDCB1 ,
*                 /* DCBMACRF - MACRO TYPE                         */
*                 4 NPBNMACR  CHAR(4) INIT('00008000'X) BDY(WORD) ,
*                 /* DCBIFLGS - FLAGS FOR IOS                      */
*                 4 NPBNIFGS  CHAR(1) INIT('00'X) ,
*                 /* DCBDEBAD - DEB ADDRESS                        */
* % IF NPBDEB ^= 'YES'
*   % THEN
*     % GOTO NPBDEBNA ;
*                 4 NPBNDEBA  PTR(24) INIT(ADDR(NPBNDEB)) ,
* % GOTO NPBDEBYA ;
* %NPBDEBNA:;
*                 4 NPBNDEBA  PTR(24) INIT(0) ,
* %NPBDEBYA:;
*                 /* DCBOFLGS - FLAGS FOR OPEN                     */
*                 4 NPBNOFGS  CHAR(4) INIT('12000000'X) ;
*
*/*                     DATA CONTROL BLOCK BASE                    */
*     DECLARE 1  NIPDCBSN BASED(ADDR(NPBNMACR) - 40) ,
*             2  NPBNDCB ;
*
*%NPBDCBX: ;
*     %IF  INC ^= 'YES'
*       %THEN
*         %GOTO NPBOUTC ;
*/******************************************************************/
*/*                                                                */
*/*               BLOCKS  FOR  INPUT  CONSOLE                      */
*/*                                                                */
*/******************************************************************/
*/*                                                                */
*/**                                                              **/
*/*               INPUT/OUTPUT  BLOCK   (IOB)                      */
*/**                                                              **/
*       DECLARE  1 * ,
*                  2 NPBIIOBF  CHAR(4) ,
*                    3 NPBIRSV1  CHAR(2) INIT('0000'X) ,
*                                       /* RESERVED BYTES          */
*                    3 NPBIIFB1  CHAR(1) INIT('00'X) ,
*                                       /* IOB PREFIX FLAG BYTE 1  */
*                    3 NPBIIFB2  CHAR(1) INIT('00'X) ,
*                                       /* IOB PREFIX FLAG BYTE 2  */
*                  2 NIPIOBIC ,
*                    3  NPBIIOB ,
*                      4 NPBIFGSN  CHAR(4) INIT('42000000'X) ,
*                                       /* FLAG AND SENSE BYTES    */
*                      4 NPBIECBA  PTR(31) INIT(ADDR(NPBIECB)) ,
*                                       /* IOBECBPT - ECB ADDRESS  */
*                      4 NPBIIOB1  CHAR(8) INIT('0000000000000000'X) ,
*                                       /* FLAGS AND CSW IMAGE     */
*                      4 NPBICPAD  PTR(31) INIT(0) ,
*                                       /* IOBSTART -CHAN PROG ADDR*/
*                      4 NPBIDCBP  PTR(31) INIT(ADDR(NPBIDCB1)-40) ,
*                                       /* IOBDCBPT - DCB ADDRESS  */
*                      4 NPBIREST  CHAR(8) INIT('0000000000000000'X) ;
*/**                                                              **/
*/*               EVENT  CONTROL  BLOCK   (ECB)                    */
*/**                                                              **/
*     DECLARE 1  NIPECBIC ,
*             2  NPBIECB ,
*               3 NPBICPCD  CHAR(1) INIT('00'X),
*                                       /* EVENT COMPLETION CODE   */
*               3 NPBIRBAD  PTR(24) INIT(0) ;
*                                       /* RB ADDR OR REST OF C.C. */
*/**                                                              **/
*/*               DATA  EXTENT  BLOCK   (DEB)                      */
*/**                                                              **/
*/*                                                                */
*/**                    DEB  PREFIX                               **/
*     DECLARE 1  * BDY(DWORD,5) ,
*             2  NPBILNTH  CHAR(1) INIT('06'X) BDY(WORD) ,
*                                       /* DEBLNGTH - DEB LENGTH   */
*             2  NPBIRSVD  PTR(24) INIT(0) ,
*                                       /* RESERVED                */
*/**               DEB  BASIC  SECTION                            **/
*             2  NIPDEBIC ,
*               3  NPBIDEB ,
*                 4 NPBIDEB1  PTR(31) INIT(0) ,
*                                       /* TCB ADDR - UNUSED       */
*                 4 NPBIAMLN  CHAR(1) INIT('00'X) ,
*                                       /* DEBAMLNG - ACSECT LENGTH*/
*                 4 NPBIDEB2  PTR(24) INIT(0) ,
*                 4 NPBIOFLG  CHAR(1) INIT('00'X) ,
*                                       /* DEBOFLGS - D.S. STATUS  */
*                 4 NPBIDEB3  CHAR(7) INIT('00000000000000'X) ,
*                                       /* FLAGS,ETC - UNUSED      */
*                 4 NPBINMXT  CHAR(1) INIT('00'X) ,
*                                       /* DEBNMEXT -NO.OF EXTENTS */
*                 4 NPBIDEB4  PTR(24) INIT(0) ,
*                                       /* IOB ADDRESS - UNUSED    */
*                 4 NPBIPRTY  CHAR(1) INIT('00'X) ,
*                                       /* DEBPRIOR -TASK PRIORITY */
*                 4 NPBIDEB5  PTR(24) INIT(0) ,
*                                       /* AN ECB ADDR - UNUSED    */
*                 4 NPBIKYID  CHAR(1) INIT('0F'X) ,
*                                       /* DEBPROTG,DEBDEBID       */
*                 4 NPBIDCBA  PTR(24) INIT(ADDR(NPBIDCB1)-40) ,
*                                       /* DEBDCBAD - DCB ADDRESS  */
*                 4 NPBIXSCL  CHAR(1) INIT('00'X) ,
*                                       /* DEBEXSCL - EXTENT SCALE */
*                 4 NPBIAPAD  PTR(24) INIT(0) ,
*                                       /* DEBAPPAD -APPENDAGE ADDR*/
*/**                  UNIT RECORD DEVICE SECTION                  **/
*                 4 NPBIDVMD  CHAR(1) INIT('00'X) ,
*                                       /* DEBDVMOD - FILE MASK    */
*                 4 NPBIUCBA  PTR(24) INIT(0) ,
*                                       /* DEBUCBAD - UCB ADDRESS  */
*/**                                                              **/
*/*                DATA  CONTROL  BLOCK   (DCB)                    */
*/**                                                              **/
*                 4 NPBIDCB1 ,
*                   5 NPBIMACR  CHAR(4) INIT('00008000'X) ,
*                                       /* DCBMACRF - MACRO TYPE   */
*                   5 NPBIIFGS  CHAR(1) INIT('0C'X) ,
*                                       /* DCBIFLGS - FOR IOS      */
*                   5 NPBIDEBA  PTR(24) INIT(ADDR(NPBIDEB)) ,
*                                       /* DCBDEBAD - DEB ADDRESS  */
*                   5 NPBIOFGS  CHAR(4) INIT('12000000'X) ;
*                                       /* DCBOFLGS - FOR OPEN     */
*     DECLARE 1  NIPDCBIC DEFINED(NPBILNTH) ,
*             2  NPBIDCB ;
*
*%NPBOUTC: ;
*     %IF  OUTC ^= 'YES'
*       %THEN
*         %GOTO NPBTSTC ;
*/******************************************************************/
*/*                                                                */
*/*               BLOCKS  FOR  OUTPUT  CONSOLE                     */
*/*                                                                */
*/******************************************************************/
*/*                                                                */
*/**                                                              **/
*/*               INPUT/OUTPUT  BLOCK   (IOB)                      */
*/**                                                              **/
*       DECLARE  1 * ,
*                  2 NPBOIOBF  CHAR(4) ,
*                    3 NPBORSV1  CHAR(2) INIT('0000'X) ,
*                                       /* RESERVED BYTES          */
*                    3 NPBOIFB1  CHAR(1) INIT('00'X) ,
*                                       /* IOB PREFIX FLAG BYTE 1  */
*                    3 NPBOIFB2  CHAR(1) INIT('00'X) ,
*                                       /* IOB PREFIX FLAG BYTE 2  */
*                  2 NIPIOBOC ,
*                    3  NPBOIOB ,
*                      4 NPBOFGSN  CHAR(4) INIT('42000000'X) ,
*                                       /* FLAG AND SENSE BYTES    */
*                      4 NPBOECBA  PTR(31) INIT(ADDR(NPBOECB)) ,
*                                       /* IOBECBPT - ECB ADDRESS  */
*                      4 NPBOIOB1  CHAR(8) INIT('0000000000000000'X) ,
*                                       /* FLAGS AND CSW IMAGE     */
*                      4 NPBOCPAD  PTR(31) INIT(0) ,
*                                       /* IOBSTART -CHAN PROG ADDR*/
*                      4 NPBODCBP  PTR(31) INIT(ADDR(NPBODCB1)-40) ,
*                                       /* IOBDCBPT - DCB ADDRESS  */
*                      4 NPBOREST  CHAR(8) INIT('0000000000000000'X) ;
*/**                                                              **/
*/*               EVENT  CONTROL  BLOCK   (ECB)                    */
*/**                                                              **/
*     DECLARE 1  NIPECBOC ,
*             2  NPBOECB ,
*               3 NPBOCPCD  CHAR(1) INIT('00'X),
*                                       /* EVENT COMPLETION CODE   */
*               3 NPBORBAD  PTR(24) INIT(0) ;
*                                       /* RB ADDR OR REST OF C.C. */
*/**                                                              **/
*/*               DATA  EXTENT  BLOCK   (DEB)                      */
*/**                                                              **/
*/*                                                                */
*/**                    DEB  PREFIX                               **/
*     DECLARE 1  * BDY(DWORD,5) ,
*             2  NPBOLNTH  CHAR(1) INIT('06'X) BDY(WORD) ,
*                                       /* DEBLNGTH - DEB LENGTH   */
*             2  NPBORSVD  PTR(24) INIT(0) ,
*                                       /* RESERVED                */
*/**               DEB  BASIC  SECTION                            **/
*             2  NIPDEBOC ,
*               3  NPBODEB ,
*                 4 NPBODEB1  PTR(31) INIT(0) ,
*                                       /* TCB ADDR - UNUSED       */
*                 4 NPBOAMLN  CHAR(1) INIT('00'X) ,
*                                       /* DEBAMLNG - ACSECT LENGTH*/
*                 4 NPBODEB2  PTR(24) INIT(0) ,
*                 4 NPBOOFLG  CHAR(1) INIT('00'X) ,
*                                       /* DEBOFLGS - D.S. STATUS  */
*                 4 NPBODEB3  CHAR(7) INIT('00000000000000'X) ,
*                                       /* FLAGS,ETC - UNUSED      */
*                 4 NPBONMXT  CHAR(1) INIT('00'X) ,
*                                       /* DEBNMEXT -NO.OF EXTENTS */
*                 4 NPBODEB4  PTR(24) INIT(0) ,
*                                       /* IOB ADDRESS - UNUSED    */
*                 4 NPBOPRTY  CHAR(1) INIT('00'X) ,
*                                       /* DEBPRIOR -TASK PRIORITY */
*                 4 NPBODEB5  PTR(24) INIT(0) ,
*                                       /* AN ECB ADDR - UNUSED    */
*                 4 NPBOKYID  CHAR(1) INIT('0F'X) ,
*                                       /* DEBPROTG,DEBDEBID       */
*                 4 NPBODCBA  PTR(24) INIT(ADDR(NPBODCB1)-40) ,
*                                       /* DEBDCBAD - DCB ADDRESS  */
*                 4 NPBOXSCL  CHAR(1) INIT('00'X) ,
*                                       /* DEBEXSCL - EXTENT SCALE */
*                 4 NPBOAPAD  PTR(24) INIT(0) ,
*                                       /* DEBAPPAD -APPENDAGE ADDR*/
*/**                  UNIT RECORD DEVICE SECTION                  **/
*                 4 NPBODVMD  CHAR(1) INIT('00'X) ,
*                                       /* DEBDVMOD - FILE MASK    */
*                 4 NPBOUCBA  PTR(24) INIT(0) ,
*                                       /* DEBUCBAD - UCB ADDRESS  */
*/**                                                              **/
*/*                DATA  CONTROL  BLOCK   (DCB)                    */
*/**                                                              **/
*                 4 NPBODCB1 ,
*                   5 NPBOMACR  CHAR(4) INIT('00008000'X) ,
*                                       /* DCBMACRF - MACRO TYPE   */
*                   5 NPBOIFGS  CHAR(1) INIT('0C'X) ,
*                                       /* DCBIFLGS - FOR IOS      */
*                   5 NPBODEBA  PTR(24) INIT(ADDR(NPBODEB)) ,
*                                       /* DCBDEBAD - DEB ADDRESS  */
*                   5 NPBOOFGS  CHAR(4) INIT('12000000'X) ;
*                                       /* DCBOFLGS - FOR OPEN     */
*     DECLARE 1  NIPDCBOC DEFINED(NPBOLNTH) ,
*             2  NPBODCB ;
*
*%NPBTSTC: ;
*     %IF  TESTC ^= 'YES'
*       %THEN
*         %GOTO NPBEND ;
*/******************************************************************/
*/*                                                                */
*/*               BLOCKS  FOR  CONSOLE  TESTING                    */
*/*                                                                */
*/******************************************************************/
*/*                                                                */
*/**                                                              **/
*/*               INPUT/OUTPUT  BLOCK   (IOB)                      */
*/**                                                              **/
*       DECLARE  1 * ,
*                  2 NIPIOBTC ,
*                    3  NPBTIOB ,
*                      4 NPBTFGSN  CHAR(4) INIT('42000000'X) ,
*                                       /* FLAG AND SENSE BYTES    */
*                      4 NPBTECBA  PTR(31) INIT(ADDR(NPBTECB)) ,
*                                       /* IOBECBPT - ECB ADDRESS  */
*                      4 NPBTIOB1  CHAR(8) INIT('0000000000000000'X) ,
*                                       /* FLAGS AND CSW IMAGE     */
*                      4 NPBTCPAD  PTR(31) INIT(0) ,
*                                       /* IOBSTART -CHAN PROG ADDR*/
*                      4 NPBTDCBP  PTR(31) INIT(ADDR(NPBTDCB1)-40) ,
*                                       /* IOBDCBPT - DCB ADDRESS  */
*                      4 NPBTREST  CHAR(8) INIT('0000000000000000'X) ;
*/**                                                              **/
*/*               EVENT  CONTROL  BLOCK   (ECB)                    */
*/**                                                              **/
*     DECLARE 1  NIPECBTC ,
*             2  NPBTECB ,
*               3 NPBTCPCD  CHAR(1) INIT('00'X),
*                                       /* EVENT COMPLETION CODE   */
*               3 NPBTRBAD  PTR(24) INIT(0) ;
*                                       /* RB ADDR OR REST OF C.C. */
*/**                                                              **/
*/*               DATA  EXTENT  BLOCK   (DEB)                      */
*/**                                                              **/
*/*                                                                */
*/**                    DEB  PREFIX                               **/
*     DECLARE 1  * BDY(DWORD,5) ,
*             2  NPBTLNTH  CHAR(1) INIT('06'X) BDY(WORD) ,
*                                       /* DEBLNGTH - DEB LENGTH   */
*             2  NPBTRSVD  PTR(24) INIT(0) ,
*                                       /* RESERVED                */
*/**               DEB  BASIC  SECTION                            **/
*             2  NIPDEBTC ,
*               3  NPBTDEB ,
*                 4 NPBTDEB1  PTR(31) INIT(0) ,
*                                       /* TCB ADDR - UNUSED       */
*                 4 NPBTAMLN  CHAR(1) INIT('00'X) ,
*                                       /* DEBAMLNG - ACSECT LENGTH*/
*                 4 NPBTDEB2  PTR(24) INIT(0) ,
*                 4 NPBTOFLG  CHAR(1) INIT('00'X) ,
*                                       /* DEBOFLGS - D.S. STATUS  */
*                 4 NPBTDEB3  CHAR(7) INIT('00000000000000'X) ,
*                                       /* FLAGS,ETC - UNUSED      */
*                 4 NPBTNMXT  CHAR(1) INIT('00'X) ,
*                                       /* DEBNMEXT -NO.OF EXTENTS */
*                 4 NPBTDEB4  PTR(24) INIT(0) ,
*                                       /* IOB ADDRESS - UNUSED    */
*                 4 NPBTPRTY  CHAR(1) INIT('00'X) ,
*                                       /* DEBPRIOR -TASK PRIORITY */
*                 4 NPBTDEB5  PTR(24) INIT(0) ,
*                                       /* AN ECB ADDR - UNUSED    */
*                 4 NPBTKYID  CHAR(1) INIT('0F'X) ,
*                                       /* DEBPROTG,DEBDEBID       */
*                 4 NPBTDCBA  PTR(24) INIT(ADDR(NPBTDCB1)-40) ,
*                                       /* DEBDCBAD - DCB ADDRESS  */
*                 4 NPBTXSCL  CHAR(1) INIT('00'X) ,
*                                       /* DEBEXSCL - EXTENT SCALE */
*                 4 NPBTAPAD  PTR(24) INIT(0) ,
*                                       /* DEBAPPAD -APPENDAGE ADDR*/
*/**                  UNIT RECORD DEVICE SECTION                  **/
*                 4 NPBTDVMD  CHAR(1) INIT('00'X) ,
*                                       /* DEBDVMOD - FILE MASK    */
*                 4 NPBTUCBA  PTR(24) INIT(0) ,
*                                       /* DEBUCBAD - UCB ADDRESS  */
*/**                                                              **/
*/*                DATA  CONTROL  BLOCK   (DCB)                    */
*/**                                                              **/
*                 4 NPBTDCB1 ,
*                   5 NPBTMACR  CHAR(4) INIT('00008000'X) ,
*                                       /* DCBMACRF - MACRO TYPE   */
*                   5 NPBTIFGS  CHAR(1) INIT('0C'X) ,
*                                       /* DCBIFLGS - FOR IOS      */
*                   5 NPBTDEBA  PTR(24) INIT(ADDR(NPBTDEB)) ,
*                                       /* DCBDEBAD - DEB ADDRESS  */
*                   5 NPBTOFGS  CHAR(4) INIT('12000000'X) ;
*                                       /* DCBOFLGS - FOR OPEN     */
*     DECLARE 1  NIPDCBTC DEFINED(NPBTLNTH) ,
*             2  NPBTDCB ;
*
*%NPBEND: ;
./ ADD NAME=IEAPXNIP
* %GOTO XNPBSL ;                                     /*
         MACRO
         IEAPXNIP  &TRACE=NOMAP,&IPLDATA=NOMAP,&SYSGEN=(NO,DUM1,DUM2)
         AIF   ('&TRACE' NE 'MAP').XNPTRCX
*
***  SYSTEM TRACE HEADER
TRHDR    DSECT
TRPTR    DS    F                   - NEXT ENTRY ADDRESS
TRBEG    DS    F                   - FIRST ENTRY ADDRESS
TREND    DS    F                   - END OF TABLE ADDRESS
TRSIZE   DS    0F                  - SIZE OF AREA USED FOR TRACE FUNCT
TRSBPOOL DS    XL1                  - SUBPOOL CONTAINING TRACE TABLE
TRLEN    DS    XL3                 - LENGTH OF TOTAL TRACE ARE AND HDR
TRSIZ    EQU   32                  - TRACE TABLE ENTRY SIZE
.XNPTRCX AIF   ('&IPLDATA' NE 'MAP').XNPIPLX
*
***  IPLDATA - IPL PARAMETER AREA
IPLDATA  DSECT
IPLDVSER DS    6C                  IPL UNIT - VOLUME SERIAL
IPLDVTOC DS    5C                           - VTOC CCHHR
IPLDNUCM DS    C                   NUCLEUS MEMBER ID
IPLDNUCS DS    F                   SYS1.NUCLEUS DS - START CCHH
IPLDNUCE DS    F                                   - END CCHH
.XNPIPLX AIF   ('&SYSGEN(1)' EQ 'NO').XNPGENX
*
***  SYSGEN PARAMETER LIST
         DC    H'0'                *  RESERVED  *
NIPTRACE DC    H'&SYSGEN(1)'       NO. OF TRACE TABLE ENTRIES
.XNPGENX ANOP
         MEND                      */
*%XNPBSL: ;
*
*/*****    SYSTEM TRACE HEADER     *****/
*  DECLARE 1 TRHDR BASED,
*        2 TRPTR FIXED(31),        /* NEXT ENTRY ADDRESS             */
*        2 TRBEG FIXED(31),        /* FIRST ENTRY ADDRESS            */
*        2 TREND FIXED(31),        /* END OF TABLE ADDRESS           */
*        2 TRSIZE FIXED(31),       /* SIZE OF AREA ALLOCATED TO TRACE*/
*          3 TRSBPOOL PTR(8),      /* SUBPOOL CONTAINING TRACE TABLE */
*          3 TRLEN    PTR(24);     /* LENGTH OF TRACE TABLE AND HDR  */
* %DECLARE TRSIZ CHAR ;
* %TRSIZ = '''20''X' ;             /* TRACE TABLE ENTRY SIZE         */
*
*/*****    IPLDATA - IPL PARAMETER AREA  *****/
*  DECLARE 1 IPLDATA BASED,
*        2 IPLDVSER CHAR(6),       /* IPL UNIT - VOLUME SERIAL       */
*        2 IPLDVTOC CHAR(5),       /*          - VTOC CCHHR          */
*        2 IPLDNUCM CHAR(1),       /* NUCLEUS MEMBER ID              */
*        2 IPLDNUCS FIXED(31),     /* SYS1.NUCLEUS DS - START CCHH   */
*        2 IPLDNUCE FIXED(31);     /*                 - END CCHH     */
*
*/*****    SYSGEN PARAMETER LIST   *****/
*  DECLARE 1 GENLIST BASED(ADDR(TCBGRS)),
*        2 *        FIXED(15),     /* * RESERVED *                   */
*        2 NIPTRACE FIXED(15);     /* NO. OF TRACE TABLE ENTRIES     */
./ ADD NAME=IEARCTD
*% GO TO PLSRCTDA; /*
         MACRO
         IEARCTD &DSECT=YES
         AIF ('&DSECT' EQ 'NO').RCTD10
RCTD     DSECT
         AGO   .RCTD20
.RCTD10  ANOP
RCTD     EQU   *
.RCTD20  ANOP
RCTDBEGN DS    0D                        BEGINING OF RCTD
.*/ %PLSRCTDA:;
*/********************************************************************/
*/*                                                                  */
*/*      MACMEAN               REGION CONTROL TASK DATA AREA         */
*/*                                                                  */
*/*      MACCOMP     Y1                  SC1CU / PZD81               */
*/*                                                                  */
*/*      MACSTAT     Y1                  73164 / Y02752              */
*/*                                                                  */
*/********************************************************************/
*   %GO TO PLSRCTD; /*
RCTDISAV DS    18F                       INTERNAL SAVE AREA
RCTDTCBD DS    A                         ADDRESS OF DUMP TCB
RCTDTCBS DS    A                         ADDRESS OF STC TCB
RCTDWORK DS    0F                        WORK AREA
RCTDLMAC DS    0F                        LIST FORM MACROS
RCTDCLRL DS    0F                        CLEAR WORK AREA
RCTDTIME DS    0F                        CURRENT TIME
RCTDTMLH DS    F                         LEFT HALF USED FOR
         DS    F                         CALCULATIONS
RCTDPRG  DS    8F                        PURGE PARAMETER LIST
         DS    8F
RCTDRES2 DS    H                         RESERVED FOR FUTURE USE
*                                                              @ZA08100
RCTDCLST DS    H                         COUNTER FOR ATTN STMT'S
*                                        IN NESTED CLISTS      @ZA08100
RCTDECBS DS    0F                        ECB LIST
RCTDTPTR DS    A                         POINTER TO RCTDTECB
RCTDWPTR DS    A                         POINTER TO ASCBECB
RCTDECBE EQU   X'80'                     LAST ECB INDICATOR
*                                        END OF ECB LIST
RCTDTECB DS    A                         RCT TERMINATION ECB
RCTDPOST EQU   X'40'                     TERMINATION ECB'S POST BIT
RCTDRET@ DS    A                         AREA FOR SAVING INIT/TERM
*                                        CALLER'S RETURN ADDRESS
RCTDTAXE DS    A                         ADDRESS OF TAXE QUEUE
RCTDPIRL DS    0A                        ADDRESS OF PURGE I/O REQUEST
         DS    AL1
RCTDBASE DS    AL3                       ANCHOR FOR PURGE I/O
*                                        REQUESTS
RCTDRC   DS    A                         SAVE AREA FOR INVALID
*                                        RETURN CODES
RCTDRTRY DS    A                         RECURSION INDICATOR
RCTDRTY@ DS    A                         POTENTIAL RETRY ADDRESS
RCTDSCLR DS    0F                        CLEAR LIST AREA
RCTDSLST DS    6F                        AREA TO CONTAIN LIST FORM OF
*                                        SDUMP MACRO
***********************************************************************
*
*        RECOVERY FOOTPRINTS
*
***********************************************************************
RCTDRCTR DS    0F                        RECOVERY FOOTPRINTS
RCTDMOID DS    XL1                       MODULE IDENTIFIER
RCTDINIT EQU   X'80'                     INITIALIZATION
RCTDCOMN EQU   X'40'                     COMMON PROCESSING
RCTDQUIS EQU   X'20'                     QUIESCE
RCTDREST EQU   X'10'                     RESTORE
RCTDATTN EQU   X'08'                     ATTENTION EXIT
RCTDTERM EQU   X'04'                     TERMINATION
RCTDDUMP EQU   X'02'                     DUMP REQUESTED BY RCT
*        EQU   X'01'                     RESERVED
RCTDFLGS DS    XL3                       RECOVERY FLAGS
***********************************************************************
*
*        WHEN RCTDINIT MODULE FLAG IS ON
*
***********************************************************************
RCTDATTD EQU   X'80'                     DUMP TASK BEING ATTACHED
RCTDRES3 EQU   X'40'                     RESERVED FOR FUTURE USE
RCTDATTS EQU   X'20'                     STC BEING ATTACHED
RCTDBRCP EQU   X'10'                     BRANCHING TO COMMON PROC
***********************************************************************
*
*        WHEN THE RCTDCOMN MODULE FLAG IS ON
*
***********************************************************************
RCTDWAIT EQU   X'80'                     PREPARING TO ISSUE WAIT
RCTDLOOP EQU   X'40'                     LOOKING FOR WORK REQUESTS
RCTDBR2T EQU   X'20'                     BRANCHING TO TERMINATION
RCTDBR2Q EQU   X'10'                     BRANCHING TO QUIESCE
RCTDBR2R EQU   X'08'                     BRANCHING TO RESTORE
RCTDBR2A EQU   X'04'                     BRANCHING TO ATTENTION EXIT
***********************************************************************
*
*        WHEN THE RCTDTERM MODULE FLAG IS ON
*
***********************************************************************
RCTDRES4 EQU   X'80'                     RESERVED FOR FUTURE USE
RCTDDETS EQU   X'40'                     STC BEING DETACHED
RCTDDETD EQU   X'20'                     DUMP BEING DETACHED
RCTDCANE EQU   X'10'                     CANCEL ESTAE
***********************************************************************
*
*        WHEN THE RCTDATTN MODULE FLAG IS ON
*
***********************************************************************
RCTDAFPE EQU   X'80'                     ATTENTION SCHEDULING BEGUN
RCTDAFPC EQU   X'40'                     ATTENTION SCHEDULING ENDED
RCTDPMSG EQU   X'20'                     THE ATTENTION ERROR MESSAGE
*                                        SHOULD BE ISSUED
***********************************************************************
*
*        WHEN THE RCTDQUIS MODULE FLAG IS ON
*
***********************************************************************
*        BYTE 1
RCTDENQ  EQU   X'80'                     ENQ INVOKED
RCTDOLL1 EQU   X'40'                     SETLOCK OBTAIN INVOKED
*                                        THE 1ST TIME FOR LOCAL LOCK
RCTDRLL1 EQU   X'20'                     SETLOCK RELEASE INVOKED
*                                        THE 1ST TIME FOR LOCAL LOCK
RCTDPSUB EQU   X'10'                     STATUS INVOKED TO STOP
*                                        SUBTASKS
RCTDSY12 EQU   X'08'                     SYSEVENT 12 INVOKED
RCTDSV16 EQU   X'04'                     SVC 16 INVOKED
RCTDDEQ  EQU   X'02'                     DEQ INVOKED
RCTDPSRB EQU   X'01'                     STATUS INVOKED TO STOP
*                                        SUBTASKS
*        BYTE2
RCTDSY13 EQU   X'80'                     SYSEVENT 13 INVOKED
RCTDSSUB EQU   X'40'                     STATUS INVOKED TO START
*                                        SUBTASKS
RCTDSSRB EQU   X'20'                     STATUS INVOKED TO START SRBS
RCTDSWOT EQU   X'10'                     SWAP-OUT INVOKED
RCTDQWAI EQU   X'08'                     WAIT INVOKED
RCTDSLFL EQU   X'04'                     SETLOCK FAILED
RCTDPRGF EQU   X'02'                     PURGE FAILED
RCTDSYBC EQU   X'01'                     SRM PROCESSING COMPLETE
*                                        FOR BRANCH ENTRY
*        BYTE 3
RCTDSWPF EQU   X'80'                     SWAP-OUT RETURN CODE NON ZERO
RCTDOLL2 EQU   X'40'                     SETLOCK OBTAIN INVOKED THE
*                                        2ND TIME FOR LOCAL LOCK
RCTDRLL2 EQU   X'20'                     SETLOCK RELEASE INVOKED THE
*                                        2ND TIME FOR LOCAL LOCK
RCTDOGL1 EQU   X'10'                     SETLOCK OBTAIN INVOKED THE
*                                        1ST TIME FOR GLOBAL DISPATCHER
*                                        LOCK
RCTDRGL1 EQU   X'08'                     SETLOCK RELEASE INVOKED THE
*                                        1ST TIME FOR GLOBAL DISPATCHER
*                                        LOCK
*********************************************************************
*
*        WHEN THE RCTDREST MODULE FLAG IS ON
*
***********************************************************************
*        BYTE 1
RCTDRS17 EQU   X'80'                     SVC 17 BEING INVOKED
RCTDOBLK EQU   X'40'                     SETLOCK BEING INVOKED
RCTDSTAT EQU   X'20'                     STATUS BEING INVOKED
RCTDRLLK EQU   X'10'                     SETLOCK RELEASE INVOKED
RCTDSY19 EQU   X'08'                     SYSEVENT 19 INVOKED
RCTDSY18 EQU   X'04'                     SYSEVENT 18 INVOKED
RCTDFAIL EQU   X'02'                     SETLOCK FAILED
RCTDRSLW EQU   X'01'                     RESTORE FOUND ADDRESS SPACE
*                                        IN LONG WAIT
*        BYTE 2
RCTDRIOC EQU   X'80'                     I/O PROCESSING COMPLETE
RCTDWTLB EQU   X'40'                     WAIT LIMIT PROCESSING
*                                        BEGINNING
RCTDSTAC EQU   X'20'                     STATUS PROCESSING COMPLETE
RCTDRLWC EQU   X'10'                     LONG WAIT PROC COMPLETE
RCTDRLWB EQU   X'08'                     LONG WAIT PROC BEGINNING
*        EQU   X'04'                     RESERVED
*        EQU   X'02'                     RESERVED
*        EQU   X'01'                     RESERVED
*        BYTE 3
*        EQU   X'80'                     RESERVED
RCTDWTLC EQU   X'40'                     WAIT LIMIT PROCESSING
*                                        COMPLETE
RCTDOPTC EQU   X'20'                     SRM PROC COMPLETE
*
***********************************************************************
*
*        RCT INTERNAL ACTION FLAGS
*
***********************************************************************
RCTDINTF DS    0F                        RCT INTERNAL ACTION   @YM02646
*                                        FLAGS                 @YM02646
RCTDRCTF DS    XL1                       RCT'S CROSS           @YM02646
*                                        COMMUNICATIONS        @YM02646
*                                        RECOVERY FLAGS        @YM02646
RCTDRSBO EQU   X'80'                     QUIESCE BACKOUT INVOKED
RCTDSUBN EQU   X'40'                     WHEN ON (1) INDICATES QUIESCE
*                                        HAS MADE SUBTASKS
*                                        NON-DISPATCHABLE
RCTDPRGR EQU   X'20'                     WHEN ON (1) INDICATES THAT
*                                        RCT IS ENQUEUED ON PURGE
*                                        RESOURCE
RCTDSRBN EQU   X'10'                     SRB'S STOPPED
RCTDDLCK EQU   X'08'                     QUIESCE HAS DISPATCHER LOCK
RCTDRES5 DS    XL3                       RESERVED              @YM02646
RCTDRES1 DS    4F                        RESERVED
RCTDEND  DS    0D                        END OF RCTD
         MEND
**/
*%PLSRCTD: ;
*DCL 1 RCTD BASED(ASXBRCTD),           /* RCT DATA AREA              */
*      2 RCTDBEGN  CHAR(0) BDY(DWORD), /* BEGINING OF RCTD           */
*      2 RCTDISAV(18) FIXED(32),       /* INTERNAL SAVE AREA         */
*      2 RCTDTCBD  PTR(31),            /* ADDRESS OF DUMP TCB        */
*      2 RCTDTCBS  PTR(31),            /* ADDRESS OF STC TCB         */
*      2 RCTDWORK CHAR(72)BDY(WORD),   /* WORK AREA                  */
*        4 RCTDLMAC CHAR(60)BDY(WORD), /* LIST FORM MACROS           */
*          6 RCTDCLRL BIT(480)BDY(WORD),/* CLEAR WORK AREA           */
*            8 RCTDTIME BIT(64)BDY(WORD),/* CURRENT TIME             */
*              10 RCTDTMLH FIXED(32),  /* LEFT HALF USED             */
*                                      /* FOR CALCULATIONS           */
*              10 *        FIXED(32),  /* RESERVED                   */
*            8 RCTDPRG CHAR(32) BDY(WORD), /* PURGE PARAMETER LIST   */
*      2 RCTDRES2  PTR(16),            /* RESERVED FOR FUTURE USE    */
*      2 RCTDCLST FIXED(16),           /* COUNT OF CLIST ATTN STMT'S
                                       WITHIN NESTED CLISTS  @ZA08100*/
*      2 RCTDECBS,                     /* ECB LIST                   */
*        4 RCTDTPTR  PTR(31),          /* POINTER TO RCTDTECB        */
*        4 RCTDWPTR  PTR(32),          /* POINTER TO ASCBECB         */
*          6 RCTDECBE BIT(1),          /* LAST ECB INDICATOR         */
*                                      /* END OF ECB LIST            */
*      2 RCTDTECB  PTR(31),            /* RCT TERMINATION ECB        */
*        4 *        BIT(1),            /* UNUSED                     */
*        4 RCTDPOST BIT(1),            /* TERMINATION ECB'S POST BIT */
*        4 *        BIT(30),           /* UNUSED                     */
*      2 RCTDRET@ PTR(31),             /* AREA FOR SAVING INIT/TERM  */
*                                      /* CALLER'S RETURN ADDRESS    */
*      2 RCTDTAXE  PTR(31),            /* ADDRESS OF TAXE QUEUE      */
*      2 RCTDPIRL  PTR(31),            /* ADDRESS OF PURGE I/O REQ   */
*        4 *        CHAR(1),           /* RESERVED                   */
*        4 RCTDBASE PTR(24),           /* ANCHOR FOR PURGE I/O       */
*                                      /* REQUESTS                   */
*      2 RCTDRC    PTR(31),            /* SAVE AREA FOR INVALID      */
*                                      /* RETURN CODES               */
*      2 RCTDRTRY  PTR(31),            /* RECURSION INDICATOR        */
*      2 RCTDRTY@  PTR(31),            /* POTENTIAL RETRY ADDRESS    */
*      2 RCTDSLST  CHAR(24),           /* AREA TO CONTAIN LIST FORM  */
*                                      /* OF SDUMP MACRO             */
*        4 RCTDSCLR  BIT(192),         /* CLEAR LIST AREA            */
*/********************************************************************/
*/*                                                                  */
*/*         RECOVERY FOOTPRINTS                                      */
*/*                                                                  */
*/********************************************************************/
*      2 RCTDRCTR  BIT(32),            /* RECOVERY FOOTPRINTS        */
*        4 RCTDMOID  BIT(8),           /*  MODULE IDENTIFIER         */
*          6 RCTDINIT  BIT(1),         /* INITIALIZATION             */
*          6 RCTDCOMN  BIT(1),         /* COMMON PROCESSING          */
*          6 RCTDQUIS  BIT(1),         /* QUIESCE                    */
*          6 RCTDREST  BIT(1),         /* RESTORE                    */
*          6 RCTDATTN  BIT(1),         /* ATTENTION EXIT             */
*          6 RCTDTERM  BIT(1),         /* TERMINATION                */
*          6 RCTDDUMP  BIT(1),         /* DUMP REQUESTED BY RCT      */
*          6 *         BIT(1),         /* RESERVED                   */
*        4 RCTDFLGS  BIT(24),          /* RECOVERY FLAGS             */
*/********************************************************************/
*/*                                                                  */
*/*  WHEN RCTDINIT MODULE FLAG IS ON                                 */
*/*                                                                  */
*/********************************************************************/
*          6 RCTDATTD  BIT(1),         /* DUMP TASK BEING ATTACHED   */
*          6 RCTDRES3  BIT(1),         /* RESERVED FOR FUTURE USE    */
*          6 RCTDATTS  BIT(1),         /* STC BEING ATTACHED         */
*          6 RCTDBRCP  BIT(1),         /* BRANCHING TO COMMON PROC   */
*          6 *         BIT(20),        /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*  RCT INTERNAL ACTION FLAGS                                       */
*/*                                                                  */
*/********************************************************************/
*      2 RCTDINTF  BIT(32),            /* RCT INTERNAL       @YM02646*/
*                                      /* ACTION FLAGS       @YM02646*/
*        4 RCTDRCTF  BIT(8),           /* RCT'S CROSS        @YM02646*/
*                                      /* COMMUNICATIONS     @YM02646*/
*                                      /* RECOVERY FLAGS     @YM02646*/
*          6 RCTDRSBO  BIT(1),         /* QUIESCE BACKOUT    @YM02646*/
*                                      /* INVOKED            @YM02646*/
*          6 RCTDSUBN  BIT(1),         /* RCT'S SUBTASKS     @YM02646*/
*                                      /* STOPPED            @YM02646*/
*          6 RCTDPRGR  BIT(1),         /* RCT OWNS PURGE     @YM02646*/
*                                      /* RESOURCE           @YM02646*/
*          6 RCTDSRBN  BIT(1),         /* SRB'S STOPPED      @YM02646*/
*          6 RCTDDLCK  BIT(1),         /* QUIESCE HAS        @YM02646*/
*                                      /* DISPATCHER LOCK    @YM02646*/
*          6 *         BIT(3),         /* RESERVED           @YM02646*/
*        4 RCTDRES5 BIT(24),           /* RESERVED           @YM02646*/
*      2 RCTDRES1  CHAR(16),           /* RESERVED                   */
*      2 RCTDEND   CHAR(0) BDY(DWORD); /* END OF RCTD                */
*/********************************************************************/
*/*                                                                  */
*/*  WHEN THE RCTDCOMMON MODULE FLAG IS ON                           */
*/*                                                                  */
*/********************************************************************/
*DCL  1   *          BIT(24)  DEF(RCTDFLGS),
*          6 RCTDWAIT  BIT(1),         /* PREPARING TO ISSUE WAIT    */
*          6 RCTDLOOP  BIT(1),         /* LOOKING FOR WORK REQUESTS  */
*          6 RCTDBR2T  BIT(1),         /* BRANCHING TO TERMINATION   */
*          6 RCTDBR2Q  BIT(1),         /* BRANCHING TO QUIESCE       */
*          6 RCTDBR2R  BIT(1),         /* BRANCHING TO RESTORE       */
*          6 RCTDBR2A  BIT(1),         /* BRANCHING TO ATTENTION EXIT*/
*          6 *         BIT(18);        /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*  WHEN THE RCTDTERM FLAG IS ON                                    */
*/*                                                                  */
*/********************************************************************/
*DCL  1     *          BIT(24)  DEF(RCTDFLGS),
*          6 RCTDRES4  BIT(1),         /* RESERVED FOR FUTURE USE    */
*          6 RCTDDETS  BIT(1),         /* STC BEING DETACHED         */
*          6 RCTDDETD  BIT(1),         /* DUMP BEING DETACHED        */
*          6 RCTDCANE  BIT(1),         /* CANCEL ESTAE               */
*          6 *         BIT(20);        /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*  WHEN RCTDATTN MODULE FLAG IS ON                                 */
*/*                                                                  */
*/********************************************************************/
*DCL  1  *             BIT(24)  DEF(RCTDFLGS),
*          6 RCTDAFPE  BIT(1),         /* ATTENTION SCHEDULING BEGUN */
*          6 RCTDAFPC  BIT(1),         /* ATTENTION SCHEDULING ENDED */
*          6 RCTDPMSG  BIT(1),         /* THE ATTENTION ERROR MESSAGE*/
*                                      /* SHOULD BE ISSUED           */
*          6 *         BIT(21);        /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*  WHEN THE RCTDQUIS FLAG IS ON                                    */
*/*                                                                  */
*/********************************************************************/
*DCL   1  *         BIT(24)  DEF(RCTDFLGS),
*/*                                    BYTE 1                        */
*          6 RCTDENQ  BIT(1),          /* ENQ INVOKED                */
*          6 RCTDOLL1  BIT(1),         /* SETLOCK OBTAIN INVOKED     */
*                                      /* THE 1ST TIME FOR LOCAL LOCK*/
*          6 RCTDRLL1  BIT(1),         /* SETLOCK RELEASE INVOKED    */
*                                      /* THE 1ST TIME FOR LOCAL LOCK*/
*          6 RCTDPSUB  BIT(1),         /* STATUS INVOKED TO STOP     */
*                                      /* SUBTASKS                   */
*          6 RCTDSY12  BIT(1),         /* SYSEVENT 12 INVOKED        */
*          6 RCTDSV16  BIT(1),         /* SVC 16 INVOKED             */
*          6 RCTDDEQ   BIT(1),         /* DEQ INVOKED                */
*          6 RCTDPSRB  BIT(1),         /* STATUS INVOKED TO STOP SRBS*/
*/*                                    BYTE 2                        */
*          6 RCTDSY13  BIT(1),         /* SYSEVENT 13 INVOKED        */
*          6 RCTDSSUB  BIT(1),         /* STATUS INVOKED TO START    */
*                                      /* SUBTASKS                   */
*          6 RCTDSSRB  BIT(1),         /* STATUS INVOKED TO START SRB*/
*          6 RCTDSWOT  BIT(1),         /* SWAP-OUT INVOKED           */
*          6 RCTDQWAI  BIT(1),         /* WAIT INVOKED               */
*          6 RCTDSLFL  BIT(1),         /* SETLOCK FAILED             */
*          6 RCTDPRGF  BIT(1),         /* PURGE FAILED               */
*          6 RCTDSYBC  BIT(1),         /* SRM PROCESSING             */
*                                      /* COMPLETE FOR BRANCH ENTRY  */
*/*                                    BYTE 3                        */
*          6 RCTDSWPF  BIT(1),         /* SWAP-OUT RETURN CODE       */
*                                      /* NON ZERO                   */
*          6 RCTDOLL2  BIT(1),         /* SETLOCK OBTAIN INVOKED THE */
*                                      /* 2ND TIME FOR THE LOCAL LOCK*/
*          6 RCTDRLL2  BIT(1),         /* SETLOCK RELEASE INVOKED THE*/
*                                      /* 2ND TIME FOR THE LOCAL LOCK*/
*          6 RCTDOGL1  BIT(1),         /* SETLOCK OBTAIN INVOKED THE */
*                                      /* 1ST TIME FOR THE GLOBAL    */
*                                      /* DISPATCHER LOCK            */
*          6 RCTDRGL1  BIT(1),         /* SETLOCK RELEASE INVOKED THE*/
*                                      /* 1ST TIME FOR THE GLOBAL    */
*                                      /* DISPATCHER LOCK            */
*          6 *         BIT(3);         /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*  WHEN THE RCTDREST FLAG IS ON                                    */
*/*                                                                  */
*/********************************************************************/
*DCL  1  *          BIT(24)  DEF(RCTDFLGS),
*/*                                    BYTE 1                        */
*          6 RCTDRS17  BIT(1),         /* SVC 17 BEING INVOKED       */
*          6 RCTDOBLK  BIT(1),         /* SETLOCK OBTAIN INVOKED     */
*          6 RCTDSTAT  BIT(1),         /* STATUS BEING INVOKED       */
*          6 RCTDRLLK  BIT(1),         /* SETLOCK RELEASE INVOKED    */
*          6 RCTDSY19  BIT(1),         /* SYSEVENT 19 INVOKED        */
*          6 RCTDSY18  BIT(1),         /* SYSEVENT 18 INVOKED        */
*          6 RCTDFAIL  BIT(1),         /* SETLOCK FAILED             */
*          6 RCTDRSLW  BIT(1),         /* RESTORE FOUND ADDRESS SPACE*/
*                                      /* IN LONG WAIT               */
*/*                                    BYTE 2                        */
*          6 RCTDRIOC  BIT(1),         /* I/O PROCESSING COMPLETE    */
*          6 RCTDWTLB  BIT(1),         /* WAIT LIMIT PROCESSING      */
*                                      /* BEGINNING                  */
*          6 RCTDSTAC  BIT(1),         /* STATUS PROCESSING COMPLETE */
*          6 RCTDRLWC  BIT(1),         /* LONG WAIT PROC COMPLETE    */
*          6 RCTDRLWB  BIT(1),         /* LONG WAIT PROC BEGINNING   */
*          6 *         BIT(3),         /* RESERVED                   */
*/*                                    BYTE 3                        */
*          6 *         BIT(1),         /* RESERVED                   */
*          6 RCTDWTLC  BIT(1),         /* WAIT LIMIT PROCESSIMG      */
*                                      /* COMPLETE                   */
*          6 RCTDOPTC  BIT(1),         /* SRM PROC COMPLETE          */
*          6 *         BIT(5);         /* RESERVED                   */
./ ADD NAME=IEARSMID
 %IEARSMID:MACRO ;
 ANS ('GENERATE ;') SKIP ;
 ANS (MACLABEL(1:LENGTH(MACLABEL)-1)' CSECT') COL(2) SKIP ;
 ANS ('USING *,15') COL (11) SKIP ;
 ANS ('MODID') COL (11) SKIP ;
 ANS ('@ENDGEN ;') SKIP ;
 %END ;
./ ADD NAME=IEAVGM02
         PUSH  PRINT                                               @L0C
         PRINT OFF                                                 @L0C
***********************************************************************
*                                                                     *
* COPYRIGHT - COPYRIGHT IBM CORP. 1981,                               *
*             LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,           *
*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083   *
*                                                                     *
* STATUS - OS/VS2 JBB1326                                          @L0C
*                                                                     *
* USING MODULES - IEAVGM00, IEAVGM03, AND IEAVGM04                    *
*                                                                     *
* CHANGE ACTIVITY - $L0=GTMNPERF,JBB1326,801001,PDWQ:                 *
*                                                                     *
***********************************************************************
*A000000-999999                                                    @L0C
         POP   PRINT                                               @L0C
***********************************************************************
*                                                                Y02714
*        THE FOLLOWING STORAGE AREAS WILL ACTUALLY BE LOCATED    Y02714
*        IN THE LOCAL DATA AREA (LDA) OF EACH ADDRESS SPACE OR   Y02714
*        THE GLOBAL SAVE AREA FOR THE GLBRANCH ENTRY POINT.  IF  Y02714
*        ANY CHANGE IS MADE IN DISPLACEMENTS, A CORRESPONDING    Y02714
*        CHANGE MAY BE REQUIRED IN MODULE IEAVGFRR (GETMAIN/     Y02714
*        FREEMAIN FRR).                                          Y02714
*                                                                Y02714
***********************************************************************
         SPACE 2                                                 Y02714
         ORG   GMFMWKAR            PUT FOLLOWING INTO LDA        Y02714
         SPACE 2                                                 Y02714
* LDARQSTA                         STATUS OF CURRENT REQUEST     Y02714
*                                  BYTE 0 - FLAGS                Y02714
*                                  BYTE 1 - SUBPOOL FLAGS        Y02714
*                                  BYTE 2 - SVC NUMBER           Y02714
*                                  BYTE 3 - KEY AND MODE         Y02714
         SPACE 2                                                 Y02714
FLAGS    EQU   LDARQSTA            MISC. FLAGS                   Y02714
BRENTRY  EQU   X'01'               BRANCH ENTRY                  Y02714
GETMB    EQU   X'02'               GETMAINB REQUEST              Y02714
FREEMB   EQU   X'04'               FMAINB OR MRELEASR REQUEST    Y02714
DEFERR10 EQU   X'08'               DEFERRED ERROR 10 FLAG        Y02714
EXPANSN  EQU   X'10'               SQA OR LSQA EXPANSION         Y02714
VARPASS2 EQU   X'20'               VARIABLE REQUEST, PASS 2      Y02714
ERGNRCHD EQU   X'40'               EXPLICIT V=V REGION REACHED   Y02714
LDAABGM  EQU   X'80'               SP254 REQSTR HAS TCBABGM ON @ZA29616
         SPACE 2                                                 Y02714
SPFLAGS  EQU   LDARQSTA+1          SUBPOOL FLAGS                   @L0C
SQA      EQU   X'01'               SQA SUBPOOL                   Y02714
CSA      EQU   X'02'               CSA SUBPOOL                   Y02714
LSQA     EQU   X'04'               LSQA SUBPOOL                  Y02714
SWA      EQU   X'08'               SWA SUBPOOL                   Y02711
AUK      EQU   X'10'               AUTHORIZED USER KEY SUBPOOL   Y02714
FPROTECT EQU   X'20'               FETCH PROTECTED SUBPOOL       Y02714
NEEDAQE  EQU   X'40'               AN AQE IS NEEDED              Y02714
REQ4K    EQU   X'80'               4096 BYTE REQ FROM SP253/4  @ZA11822
         SPACE 2                                                 Y02714
SVCBYTE  EQU   LDARQSTA+2          SVC NUMBER                      @L0C
         SPACE 2                                                 Y02714
MODE     EQU   LDARQSTA+3          KEY & MODE                      @L0C
SUP      EQU   X'01'               SUPERVISOR MODE (IF ZERO)
SUBFRMN  EQU   X'02'               SUBPOOL FREEMAIN
         SPACE 2                                                 Y02714
*
*        THE FOLLOWING FIELDS MUST REMAIN IN THE SAME ORDER
*        AS 1 INSTRUCTION CLEARS THE FIELDS.
*
ABNDATA  DS    F                   VARIABLE DATA                 Y02714
*                                                                  @L0C
*        FIELDS MSGLEN, FREESW, LOCKFLAG, AND FRRBRNDX ARE         @L0C
*        CLEARED BY ONE STORE INSTRUCTION AT ALL ENTRY POINTS      @L0C
*        IN IEAVGM03, THEY MUST BE KEPT TOGETHER                   @L0C
*                                                                  @L0C
MSGLEN   DS    X                   REASON CODE & LNTH OF VAR DATAY02714
FREESW   DS    B                   MULTIPURPOSE SWITCH           Y02714
FREESWM  EQU   X'80'               FREEMAIN IN PROCESS
INCR     EQU   X'40'               LENGTH HAS BEEN INCREMENTED
DECR     EQU   X'20'               ADDRESS HAS BEEN DECREMENTED
NFRSTDQE EQU   X'10'               NOT FIRST DQE (FOR L/SQA)     Y02714
FQEBELOW EQU   X'08'               AN FQE WAS BELOW FREED AREA   Y02714
NEEDRLSE EQU   X'04'               FURTHER PAGE RELEASE NEEDED   Y02714
ABNDATAL EQU   *-ABNDATA           LENGTH OF FIELDS TO BE CLEARED
         SPACE 2                                                 Y02714
*        LOCKFLAG & FRRBRNDX ARE CLEARED WITH ONE STH, KEEP TOGETHER
         SPACE 1                                                 Y02714
LOCKFLAG DS    B                   LOCKING FLAGS                 Y02751
SALHELD  EQU   X'01'               SALLOC LOCK ALREADY HELD      Y02751
SALOBTND EQU   X'02'               SALLOC LOCK OBTAINED          Y02751
         SPACE 2                                                 Y02714
FRRBRNDX DS    X                   BRANCH INDEX FOR FRR          Y02753
*        EQU   0        UNEXPECTED ERROR, CHECK STATUS FLAGS     Y02753
CLSALFLD EQU   1        SALLOC RELEASE RETURN CODE > 0           Y02753
CRSEGERR EQU   2        CREATE SEGMENT RETURN CODE > 0           Y02753
FNDPGERR EQU   3        FIND PAGE RETURN CODE NOT 0 OR 4         Y02753
GFREFAIL EQU   4        ON L/SQA EXPAN., GFRECORE FAILED         Y02753
GTSALFLD EQU   5        SALLOC OBTAIN RETURN CODE NOT 0 OR 4     Y02753
PGRLSRC4 EQU   6        PAGE RELEASE RETURN CODE OF 4            Y02753
SPFMERR  EQU   7        SUBPOOL FREEMAIN, AQE AREA NOT IN DQE    Y02753
         SPACE 2                                                 Y02753
REGSAVE  DS    18F                 STANDARD REGISTER SAVE AREA   Y02714
*                                  (72 BYTES),  USED FOR         Y02714
*                                  SRM (SYSEVENT) AND RSM        Y02714
REGSVEND EQU   *                   END OF REGISTER SAVE AREA     Y02714
STRPL    EQU   REGSAVE             SYSTEM TERM ROUTINE PARM LIST Y02751
         ORG   REGSAVE+8           RESET INSTRUCTION COUNTER SO    @L0C
*                                  LRB CAN BE ON NEXT AVAILABLE  Y02714
*                                  DOUBLE WORD BOUNDARY IN       Y02714
*                                  REGSAVE                       Y02714
STRLRB   DS    0D                  LOGREC RECORD BUFFER          Y02751
LRBSIZE  EQU   32                  SIZE OF LRB                   Y02751
         ORG   REGSVEND            RESTORE INSTRUCTION COUNTER   Y02714
         SPACE 2                                                 Y02714
MSAVE    DS    16F                 SAVE AREA FOR MRELEASE        Y02714
GNOTSAVE DS    16F                 SAVE AREA USED IN GNOTSAT     Y02714
LOCKSAVE DS    2F                  GT/CLSALLOC, QFMAINB, AND SRM Y02751
*                                  SAVE AREA OVERLAPS INTO       Y02751
*                                  GFSMFSVE AND MPTRS            Y02751
GFSMFSVE DS    3F                  SMF CORE ROUTINES SAVE AREA   Y02714
CSPCKSAV EQU   GFSMFSVE            SAVE AREA FOR CSPCHK          Y02714
MPTRS    DS    2F                  SAVE PREVIOUS AND NEXT PTRS.  Y02714
DUMYDQE  DS    4F                  DUMMY DQE FOR L/SQA EXPANSION Y02714
TEMPDQE  DS    4F                  TEMPORARY DQE FOR FMCOMMON    Y02714
DUMFBQE  DS    4F                  DUMMY FBQE FOR MRELEASE       Y02714
SAVEREG1 EQU   BRANCHSV+4          SAVE INPUT REG 1 FOR FREEMAI    @L0C
RETSAVE  EQU   BRANCHSV+56         SAVE RETURN ADDRESS             @L0C
SAV911   DS    3F                  SAVE REGS 9-11                Y02714
LASTSAVE DS    F                   SAVE POSSIBLE LAST LIST ENTRY Y02714
MINMAX   DS    2F                  MAX & MIN LENGTH FOR VARIABLE Y02714
LASTLSTA DS    F                   LAST LIST ENTRY ADDRESS       Y02714
LSTINDEX DS    F                   INDEX FOR LIST REQUEST        Y02714
FMAREAS  DS    F                   PTR TO AREAS TO BE FREEMAINED Y02714
FRRPARM  DS    F                   FRR PARAMETER AREA ADDRESS    Y02753
PARMLDA  EQU   0                   LDA ADDRESS IN FRR PARM       Y02753
PARMFLG1 EQU   4                   FIRST FLAG BYTE IN FRR PARM   Y02753
PARMGLBL EQU   X'80'               GLOBAL REQUEST (GLBRANCH OR   Y02753
*                                  MRELEASR ON GLOBAL REQUEST)   Y02753
PARMSALO EQU   X'40'               SALLOC LOCK OBTAINED BY GM/FM Y02753
PARMVLCK EQU   X'20'               SVC 4/SVC 5 INTERFACE BEING @ZA20641
*                                  VALIDITY CHECKED            @ZA20641
         SPACE 2                                                 Y02714
*
*    THE FOLLOWING 3 LINES MUST REMAIN IN THE SPECIFIED ORDER
*    AS 1 INSTRUCTION IS USED TO CLEAR THEM
*
CLOPREV  DS    F                   PREVIOUS FQE TO CLOSEST       Y02714
CLOSEST  DS    F                   CLOSEST IN SIZE FQE           Y02714
LARGESTA DS    F                   LARGEST AVAILABLE             Y02714
         SPACE 2                                                 Y02714
LARGEST  DS    F                   LARGEST AVAILABLE FBQE        Y02714
LENSAVE  DS    F                   SAVE AREA FOR LENGTH LIST POINTER
SAVESIZE DS    F                   SIZE OF MULTIPLE OF 4K CORE   Y02714
ENDADD   DS    F                   END ADDRESS                   Y02714
TEMPSAV1 EQU   ENDADD              TEMPORARY SAVE AREA 1         Y02714
STRTADD  DS    F                   START ADDRESS                 Y02714
TEMPSAV2 EQU   STRTADD             TEMPORARY SAVE AREA 2         Y02714
DIFF     DS    F                   DIFFERENCE                    Y02714
SAVEPQE  EQU   DIFF                SAVE PQE ADDRESS IN FBQSRCH   Y02714
FIXSTART DS    F                   STARTING ADDRESS TO BE CLEAREDY02714
FIXEND   DS    F                   ENDING ADDRESS TO BE CLEARED  Y02714
NOTSATSV DS    F                   LENGTH POINTER USED BY GNOTSATY02714
NOTSATS1 DS    F                   SAVE LDARQSTA WHEN GNOTSAT IS Y02714
*                                  DOING A FREEMAIN FOR A LIST   Y02714
SAVESEG  DS    F                   ADDRESS OF MULTIPLE OF 4K COREY02714
LARSOFAR DS    F                   LARGEST AVAILABLE IN FBQE     Y02714
RSTRTADD DS    F                   ROUNDED START ADDRESS         Y02714
TEMPSAV3 EQU   RSTRTADD            TEMPORARY SAVE AREA 3         Y02714
RENDADD  DS    F                   ROUNDED END ADDRESS           Y02714
VPFP     DS    F                   FIND PAGE ADDRESS TO BE USED  Y02714
***********************************************************************
*     THE FOLLOWING DS'S MUST REMAIN IN THE SAME ORDER AS ONE MOVE    *
*    INSTRUCTION IS USED TO SAVE THEM ALL                             *
***********************************************************************
DQESAVE  DS    2F                  SAVE DQE PTR AND PREV DQE PTR
FMSAVE   DS    1F                  SAVE RETURN REG FOR FREEMAIN
PREVFQSV DS    1F                  SAVE AREA FOR PREVIOUS FQE POINTER
FQESAVE  DS    1F                  SAVE AREA FOR FQE
SPQESAVE DS    1F                  SAVE AREA FOR SPQE
SVRLB    DS    F                   SAVE AREA FOR RLB             Y02714
SVSIZE   DS    F                   SAVE AREA FOR ROUNDED SIZE    Y02714
DQESAVE1 DS    2F                  SAVE DQE INFO WHEN USING FMAINB
FMSAVE1  DS    1F                  SAVE RETURN REG WHEN USING FMAINB
FQESAVE1 DS    1F                  SAVE FQE INFO WHEN USING FMAINB
PREVFQS1 DS    1F                  SAVE PREVIOUS FQE WHEN USING FMAINB
SPQSAVE1 DS    1F                  SAVE SPQE WHEN USING FMAINB
SVRLB1   DS    F                   SAVE RLB FOR FMAINB           Y02714
SVSIZE1  DS    F                   SAVE ROUNDED SIZE FOR FMAINB  Y02714
***********************************************************************
SAVSVTSV DS    F                   SAVE LDARQSTA DURING FMAINB   Y02714
FQENXTSV DS    F                   FQE NEXT SAVE AREA            Y02714
OLDFQELN DS    F                   OLD FQE LENGTH                Y02714
NEWFQELN DS    F                   NEW FQE LENGTH                Y02714
RQSTSIZE DS    F                   SAVED SIZE OF ORIGINAL      @ZA27672
*                                  REQUEST FOR MSG IEA700I ON  @ZA27672
*                                  AXX-2 ABENDS.               @ZA27672
SEGTEST  DS    H                   AREA TO TEST END OF SEGMENT   Y02714
         SPACE 2                                                 Y02714
CODE1    DS    B                   SAVE AREA FOR OPTION CODE     Y02714
S120FM   EQU   X'01'               SVC 120 FREEMAIN REQUEST      Y02714
S120UNCD EQU   X'02'               SVC 120 UNCONDITIONAL REQUEST Y02714
S120PBND EQU   X'04'               SVC 120 PAGE BOUNDRY REQUEST  Y02714
BOUND    EQU   X'10'               MASK FOR PAGE BOUNDARY
CONDTNL  EQU   X'20'               CONDITIONAL  INDICATOR
LIST     EQU   X'C0'               LIST INDICATOR (IF MIXED IS LIST)
LISTVAR  EQU   X'C0'               USED TO CHECK FOR LIST AND VARIABLE
VARBLE   EQU   X'C0'               VARIABLE TEST INDICATOR
         SPACE 2                                                 Y02714
CLEARSW  DS    B                   CLEARSW FOR GFRECORE          Y02714
CLEARON  EQU   X'01'               FQECPB INDICATOR IS ON IN FQE
         SPACE 2                                                 Y02714
GMFMSW   DS    B                   GM/FM SWITCH FOR MRELEASE     Y02714
GM       EQU   X'01'               INDICATES GM TO BE DONE FOR FBQE
FM       EQU   X'02'               INDICATES FM TO BE DONE FOR FBQE
FIRSTSW  EQU   X'04'               FIRST TIME THRU SW FOR MRELEASE
         SPACE 2                                                 Y02714
FETCH    DS    B                   KEY AND FETCH PROTECT         Y02714
FETCHON  EQU   X'08'               FETCH PROTECT ON
         SPACE 2                                                 Y02714
OUTSW    DS    X                   SWITCH FOR OUT OF REAL OR VIRTY02714
VIRTUAL  EQU   X'FF'               VIRTUAL INDICATOR FOR OUT SWITCH
REALOUT  EQU   X'00'               REAL INDICATOR FOR OUT SWITCH
         SPACE 2                                                 Y02714
CODE2    DS    B                   SAVE AREA FOR OPTION CODE     Y02714
SAVFRESW DS    B                   SAVE FREESW DURING FMAINB     Y02714
SPID     DS    X                   SPID FOR MRELEASE             Y02714
LSPQEKEY DS    X                   PROTECT KEY FROM CURRENT SPQE Y02714
RQSTRKEY DS    X                   REQUESTER KEY OR KEY= PARAM.  Y02714
SAVSPID  DS    X                   SAVE SPID FOR FREEMAIN        Y02714
SAVSPID2 DS    X                   SAVE SPID FOR MESSAGES      @YM07648
CELLFLGS DS    B                   CONTROL OF INTERNAL CB POOL @Z30ENWD
LCLEXP   EQU   X'80'               LOCAL POOL EXPANSION REQ'D  @Z30ENWD
GLBLEXP  EQU   X'40'               GLOBAL POOL EXPANSION REQ'D @Z30ENWD
LCLREQ   EQU   X'20'               LOCAL CELL REQUEST          @Z30ENWD
GNOTCALL EQU   X'08'               ON =GNOTSAT CALLING GETMAINE@Z30ENWD
INCELL   EQU   X'04'               ON = IN GETMAINC            @Z30ENWD
INEXPN   EQU   X'02'               ON = IN EXPANSION ROUTINE   @Z30ENWD
INCBBRAN EQU   X'01'               ON = CBBRANCH WAS ENTRY     @Z30ENWD
./ ADD NAME=IEAVM100
*         %GOTO GWPL1;   /* BILINGUAL MAPPING
          MACRO
          IEAVM100   ,   */
*%GWPL1: ;
*/********************************************************************/
*/*                                                                  */
*/* MACRO NAME=       IEAVM100                                       */
*/*                                                                  */
*/* MACDATE   =       03/20/80                                       */
*/*                                                                  */
*/* DESCRIPTIVE NAME= GET WQE PARAMETER LIST                         */
*/*                                                                  */
*/* COPYRIGHT=        5740-XYN COPYRIGHT IBM CORP 1981,          @P1C*/
*/*                   LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,  */
*/*                   REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER    */
*/*                   G120-2083.                                     */
*/*                                                                  */
*/* STATUS=           OS/VS2 JBB1326                                 */
*/*                                                                  */
*/* FUNCTION=         MAPS THE PARAMETER LIST USED TO COMMUNICATE    */
*/*                   WITH THE WQE SERVICE ROUTINE.                  */
*/*                                                                  */
*/* METHOD OF ACCESS=                                                */
*/*                   BAL  - SPECIFY IEAVM100                        */
*/*                          A LOAD FOR THE PARAMETER LIST AND       */
*/*                          USING ON GWPL GIVES ADDRESSABILITY.     */
*/*                                                                  */
*/*                   PL/S - %INCLUDE SYSLIB(IEAVM100)               */
*/*                                                                  */
*/* CREATED BY=       IEAVVWTO AND IEAVMWTO                          */
*/*                                                                  */
*/* POINTED TO BY=    PASSED AS PARAMETER                            */
*/*                                                                  */
*/* SUBPOOL=          229                                            */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/* $L0=XMCTASK, JBB1326,  800515,  L0SJ: XMEM SERVICE PARM LIST @L0A*/
*/* $P1=PMM0300, JBB1326,  810402,  P1SJ: GWPL COPYRIGHT UPDATE      */
*/*                                                                  */
*/*                                                                  */
*/********************************************************************/
*%GOTO GWPL2;   /*
.* A 000000-999999                                                 @L0A
         EJECT
GWPL     DSECT   -       GET WQE PARAMETER LIST
         SPACE
         DS    0F
GWPID    DS    CL4           CONTROL BLOCK ID - GWPL
GWPVERSN DS    XL1           VERSION LEVEL
GWPSP13  EQU   1             VERSION LEVEL OS/VS2 JBB1326
GWPVERID EQU   GWPSP13       VERSION LEVEL - UPDATED FOR SIZE OR       X
                             INCOMPATIBLE CHANGE
GWPFUNC1 DS    XL1           GWPL FUNCTION FLAGS - BYTE 1
GWPFNDMJ EQU   X'80'         FIND MAJOR WQE AND COPY BACK TO CALLER
GWPCPYWQ EQU   X'40'         GET WQE, COPY DUMMY TO REAL WQE, CHAIN    X
                             IT, AND UPDATE WQE COUNT
GWPDSPG  EQU   X'20'         TURN ON SUSPEND FLAG IN MAJOR WQE
GWPCHNWQ EQU   X'10'         CHAIN WQE TO ORE
GWPMLWTO EQU   X'08'         WQE IS FOR MLWTO
GWPCNNCT EQU   X'04'         WQE IS BEING CONNECTED
GWPCNTDN DS    FL1           NUMBER OF WQES PROCESSED BY IEAVH600
GWPWQCNT DS    FL1           COUNT OF WQES TO BE PROCESSED BY IEAVH600
GWPWQSTK DS    A             PTR TO FIRST WQE IN STACK (ARRAY)
GWPRSV00 DS    XL1           RESERVED
GWPWQEID DS    XL3           WQE ID
GWPWQEAD DS    A             PTR TO CALLERS MAJOR WQE
GWPOREAD DS    A             PTR TO ORE FOR WTOR
GWPXSAAD DS    A             PTR TO CALLERS XSA
GWPRSV01 DS    XL4           RESERVED
GWPLEN   EQU   *-GWPL        LENGTH OF GWPL
GWPPCIDX EQU   26            WQE SERVICE ROUTINE IEAVH600 PC INDEX
GWPWQSRV EQU   0             WQE SERVICE ROUTINE IEAVH600 ENTRY NUMBER
         MEND   , */
* %GWPL2:  ;
*@EJECT;
*
* DCL 1 GWPL     BDY(WORD)
*                BASED(GWPLPTR), /*GWPL                              */
*      2 GWPID    CHAR(4),       /*CONTROL BLOCK ID - GWPL           */
*      2 GWPVERSN FIXED(8),      /*VERSION LEVEL                     */
*      2 GWPFUNC1 BIT(8),        /*GWPL FUNCTION FLAGS - BYTE 1      */
*       3 GWPFNDMJ BIT(1),       /*FIND MAJOR WQE AND COPY BACK
*                                      TO CALLER                     */
*       3 GWPCPYWQ BIT(1),       /*GET WQE, COPY DUMMY TO REAL WQE,
*                                     CHAIN IT, AND UPDATE WQE COUNT */
*       3 GWPDSPG  BIT(1),       /* TURN ON SUSPEND FLAG IN MAJOR WQE*/
*       3 GWPCHNWQ BIT(1),       /*CHAIN WQE TO ORE                  */
*       3 GWPMLWTO BIT(1),       /*WQE IS FOR MLWTO                  */
*       3 GWPCNNCT BIT(1),       /*WQE IS BEING CONNECTED            */
*       3 *        BIT(2),       /*RESERVED                          */
*      2 GWPCNTDN FIXED(8),      /*NUMBER OF WQES PROCESSED
*                                                        BY IEAVH600 */
*      2 GWPWQCNT FIXED(8),      /*COUNT OF WQES TO BE PROCESSED
*                                                        BY IEAVH600 */
*      2 GWPWQSTK PTR(31),       /*PTR TO FIRST WQE IN STACK (ARRAY) */
*      2 GWPRSV00 FIXED(8),      /*RESERVED                          */
*      2 GWPWQEID FIXED(24),     /*WQE ID                            */
*      2 GWPWQEAD PTR(31),       /*PTR TO CALLERS MAJOR WQE          */
*      2 GWPOREAD PTR(31),       /*PTR TO ORE FOR WTOR               */
*      2 GWPXSAAD PTR(31),       /*PTR TO CALLERS XSA                */
*      2 GWPRSV01 FIXED(31);     /*RESERVED                          */
*/********************************************************************/
*/*                                                                  */
*/*     CONSTANTS SECTION                                            */
*/*                                                                  */
*/********************************************************************/
* DCL GWPSP13 FIXED(8) CONSTANT(1);/*VERSION LEVEL IS OS/VS2 JBB1326 */
* DCL GWPVERID FIXED(8) CONSTANT(GWPSP13);/*VERSION LEVEL - UPDATED FOR
*                                  SIZE OR INCOMPATABLE CHANGE       */
* DCL GWPLIDDC CHAR(4) CONSTANT('GWPL'); /* GWPL ACRONYM             */
* DCL GWPPCIDX CONSTANT(26);/* WQE SERVICE RTN IEAVH600 PC INDEX     */
* DCL GWPWQSRV CONSTANT(0); /* WQE SERVICE RTN IEAVH600 ENTRY NUMBER */
./ ADD NAME=IEAVSPSA
 IEAVSPSA: PROC(FREEPTR) OPTIONS(NOSAVE(1,15),NOSAVEAREA);
 /********************************************************************/
 /*                                                                  */
 /*                                                                  */
 /********************************************************************/
 /*                                                                  */
 /* STATUS:   CHANGE LEVEL=001  12/12/74                             */
 /*                                                                  */
 /* FUNCTION:  1) FOR GETMAIN REQUESTS, TO GET A SA/WA AND VECTOR    */
 /*               TABLE AND INITIALIZE IT                            */
 /*            2) FOR FREEMAIN REQUESTS, TO FREE A SA/WA AND VECTOR  */
 /*               TABLE                                              */
 /*            3) FOR FORMAT REQUESTS, TO FORMAT THE SA/WA VECTOR    */
 /*               TABLE                                              */
 /*                                                                  */
 /* ENTRY POINT: IEAVSPSA                                            */
 /*                                                                  */
 /* INPUT:    REGISTER 1  CONTAINS: 1)ADDRESS TO FREEMAIN, OR        */
 /*                                 2)ZERO IF REQUEST FOR GETMAIN    */
 /*                                 3)COMPLEMENT FOR FORMAT          */
 /*           REGISTER 13 POINTS TO A REGISTER SAVEAREA              */
 /*           REGISTER 14 CONTAINS THE RETURN ADDRESS                */
 /*           REGISTER 15 CONTAINS THE ENTRY POINT ADDRESS           */
 /*                                                                  */
 /* OUTPUT:   REGISTER 1  CONTAINS 1)ADDRESS OF VECTOR TABLE         */
 /*                                2)ZERO - ON RETURN FROM FREEMAIN  */
 /*                                         REQUEST                  */
 /*           REGISTER 15 CONTAINS 1)A RETURN CODE OF ZERO, IF NO    */
 /*                                  ERROR                           */
 /*                                2)A RETURN CODE OF FOUR FOR ERRORS*/
 /*                                   FROM AT LEAST ONE OF THESE     */
 /*                                   SOURCES:                       */
 /*                                  - ISSUING A GETMAIN             */
 /*                                  - ISSUING A FREEMAIN            */
 /*                                  - ISSUING A SETLOCK TO OBTAIN OR*/
 /*                                    FREE SALLOC                   */
 /*           REGISTER 14 CONTAINS THE RETURN ADDRESS                */
 /*           REGISTER 13 POINTS TO A REGISTER SAVEAREA              */
 /*                                                                  */
 /* EXTERNAL REFERENCES: NONE.                                       */
 /*                                                                  */
 /* EXITS:    RETURN TO CALLER VIA A BR 14                           */
 /*                                                                  */
 /* ERROR CODES:                                                     */
 /*           REGISTER 15 CONTAINS THE RETURN CODE                   */
 /*                                                                  */
 /* TABLES/WORK AREAS: IHAWSAVT                                      */
 /* NOTE: THE ROUTINE THAT INCLUDES THIS ROUTINE MUST CONTAIN        */
 /*       MAPPING MACROS FOR THE CVT (MARCO: CVT) AND THE PSA        */
 /*       (MACRO: IHAPSA).                                           */
 /*                                                                  */
 /* ATTRIBUTES: SERIALLY REUSABLE                                    */
 /*                                                                  */
 /* RESOURCES:                                                       */
 /*           NONE.                                                  */
 /*                                                                  */
 /* SVCS:     NONE.  BRANCH ENTRIES TO GETMAIN,FREEMAIN              */
 /*                                                                  */
 /* MESSAGES: NONE.                                                  */
 /*                                                                  */
 /* NOTES:                                                           */
 /*    THIS ROUTINE INCLUDES THE MAPPING MACRO 'IHAWSAVT' AND        */
 /*    SPECIFIES THE MAPPING OF THE GLOBAL WORK/SAVE AREAS, EVEN     */
 /*    THOUGH THIS ROUTINE BUILDS THE WORK/SAVE AREAS FOR A CPU.     */
 /*    THIS IS BECAUSE THIS ROUTINE USES 'GETMAIN' TO OBTAIN THE     */
 /*    SPACE FOR THE WORK/SAVE AREA IT IS BUILDING BUT 'GETMAIN'     */
 /*    ITSELF USES THE GLOBAL WORK/SAVE AREAS.                       */
 /*    THE MAPPING MACRO FOR THE CPU RELATED WORK/SAVE AREA IS NOT   */
 /*    USED IN BUILDING OR INITIALIZING THAT WORK/SAVE AREA BY THIS  */
 /*    THIS ROUTINE, THUS THE MAPPING OF THE CPU RELATED WORK/SAVE   */
 /*    AREA IS NOT NEEDED BY THIS ROUTINE BUT THE MAPPING OF THE     */
 /*    GLOBAL WORK/SAVE AREA IS NEEDED.                              */
 /*                                                                  */
 /********************************************************************/
 @LISTOFF;
 %NONSENSE='X';
 %WSALOCAL='NO';
 %WSACPU='NO';
 %INCLUDE SYSLIB(IHAWSAVT);
  @LISTON;
         DCL REGSAPTR PTR(31) REG(13);      /* PTR. TO REGISTER
                                               SAVE AREAS            */
         DCL PARMX FIXED(31) REG(1);  /* INPUT PARM @ZM30488*/
         DCL PARM POINTER(31) REG(1);       /*INPUT AND OUTPUT PARM  */
         DCL RTCODE FIXED(31) REG(15);      /*RETURN CODE            */
         DCL TBLPTR PTR(31) REG(1);         /*PTR TO VECTOR TABLE    */
         DCL LNGREG FIXED(31) REG(0);       /*LENGTH TO GET OR FREE  */
         DCL LOCKRC FIXED(31) REG(15);      /*RETURN CODE FROM
                                              SETLOCK                */
         DCL GMREG FIXED(31) REG(3);        /*PARMS FOR GETMAIN      */
         DCL 1 LGTHTBL BASED(CVTWSAC),      /*CPU SA/WA SIZES        */
             (2 NUM,                        /*NUMBER OF ENTRIES      */
              2 LGTH,                       /*VECTOR TBL + SAVEAREAS */
              2 FSIZE)  FIXED(15);          /* SIZE OF FIRST SA/WA   */
         DCL SVPTR BASED(P) PTR(31);        /*VECTOR TABLE           */
         DCL P PTR(31);                     /*POINT TO VECTOR        */
                                            /*ENTRIES                */
         DCL SAPTR PTR(31);                 /*PTR TO SAVEAREAS       */
  DCL NSIZEPTR PTR(31);                     /*POINTER TO SIZE ENTRIES*/
         DCL 1 GMTBL FIXED(31),             /*GET/FREEMAIN PARMS     */
              (2 RSVD,                      /*RESERVED BYTE          */
               2 STKEY,                     /*STORAGE PROTECT KEY    */
               2 SBPOOL,                    /*SUBPOOL REQUESTED      */
               2 FLAGS)  FIXED(8);          /*TYPE OF GET/FREEMAIN   */
         DCL HOLDRC FIXED(31);              /*RETAINER OF RETURN CODE*/
         DCL CDGM FIXED(8) CONSTANT(0);     /*X'00' INDICATOR OF     */
                                            /*CONDITIONAL GETMAIN    */
         DCL CDFM FIXED(8) CONSTANT(1);     /*X'01' INDICATOR OF     */
                                            /*CONDITIONAL FREEMAIN   */
         DCL LUPONE FIXED(8) CONSTANT(1);   /*LOOP CONTROL CONSTANT  */
         DCL ZZERO FIXED(8) CONSTANT(0);    /*ZERO RETURN CODE       */
         DCL FFOUR FIXED(8) CONSTANT(4);    /*RETURN CODE FOUR       */
         DCL SQAPOOL FIXED(8) CONSTANT(245);/*SUBPOOL 245            */
         DCL KEYZERO FIXED(8) CONSTANT(0);  /*KEY                    */
         DCL INCSIZE FIXED(8) CONSTANT(2);  /*INCREMENT VALUE        */
         DCL GETID FIXED(8) CONSTANT(0);    /*R1=0 ON GETMAIN REQUEST*/
         DCL LOOP FIXED(31);                /*LOOP INDEX             */
     DCL R3SAVAR PTR(31);         /* SAVE AREA FOR REG. 3 ACROSS
                                     GET/FREEMAIN'S                  */
         DCL SAVAREA PTR(31);        /* SAVE AREA FOR POINTER TO
                                        REGISTER SAVE AREAS          */
         DCL 1 SETLOKSA BDY(WORD),  /* SETLOCK REG. SAVE AREA        */
              2 * FIXED(31),        /* SAVE AREA FOR REG. 11         */
              2 * FIXED(31),        /* SAVE AREA FOR REG. 12         */
              2 * FIXED(31),        /* SAVE AREA FOR REG. 13         */
              2 * FIXED(31),        /* SAVE AREA FOR REG. 14         */
              2 * FIXED(31);        /* FIFTH WORD OF SAVE AREA       */
  DCL NWSASIZE FIXED(15) BASED(NSIZEPTR);
  RFY (PARM,RTCODE) RSTD;           /* THESE REG'S ARE RSTD THRUOUT
                                       THIS MODULE                   */
  RFY (REGSAPTR,LOCKRC) RSTD;
    SAVAREA = REGSAPTR;             /* PRESERVE REG. 13              */
     REGSAPTR = ADDR(SETLOKSA);     /* PUT ADDR. OF 5 WORD SAVE AREA
                                       FOR SETLOCK IN REG. 13        */
 /* TRY TO GET SALLOC LOCK, MAKE SETLOCK SAVE REG'S 11-14 IN SAVE    */
 /* AREA POINTED TO BY REG. 13,  RETURN CODE WILL BE IN REG. 15      */
  GLOCK:  GEN REFS(FLC,PSALITA);
          SETLOCK   OBTAIN,TYPE=SALLOC,MODE=UNCOND,REGS=SAVE,          X
                RELATED=('SALLOC LOCK, THIS SETLOCK IS ISSUED IN THIS  X
                MACRO WHICH IS INCLUDED IN VARIOUS MODULES, THE LOCK   X
                IS RELEASED AT THE LABEL: FLOCK, IN THIS MACRO')
 @ENDGEN
   REGSAPTR = SAVAREA;              /* RESTORE REGISTER 13           */
  RFY (REGSAPTR) UNRSTD;
  RFY (LNGREG) RSTD;
         IF LOCKRC=ZZERO  LOCKRC=FFOUR THEN /*WAS LOCK SET?         */
 LOCKSET:       DO;                         /*YES PROCEED FOR GM/FM  */
     RFY (LOCKRC) UNRSTD;
                LNGREG = LGTH               /*LENGTH IN REGISTER 0   */
                        * EIGHT;            /* LENGTH IN TABLE IS
                                               NUMBER OF DOUBLE WORDS*/
                SBPOOL=SQAPOOL;             /* PUT SUBPOOL IN TABLE  */
                STKEY=KEYZERO;              /*PROTECT KEY REQUESTED  */
       /* CHECK FOR FORMAT REQUEST */
            IF PARMX<0 THEN  /* REGISTER NEGITIVE? @ZM30488*/
         DO;
          TBLPTR=-PARMX; /* CORRECT ADDR @ZM30488*/
          GOTO WSTFORMT;  /* GO FORMAT TABLE @ZM30488*/
         END;
                IF PARM=GETID  THEN         /*GETMAIN OR FREEMAIN    */

 /********************************************************************/
 /*                                                                  */
 /*                   GETMAIN PATH                                   */
 /*  REGISTER ONE CONTAINS ZERO ON INPUT FOR A GETMAIN REQUEST.      */
 /*  IF R1 IS ZERO, THEN SPACE IS OBTAINED FOR A SA/WA AND VECTOR    */
 /*  TABLE.  AFTER A SUCCESSFUL RETURN FROM GETMAIN, THE TABLE       */
 /*  IS INITIALIZED.                                                 */
 /*                                                                  */
 /********************************************************************/


 GMAIN:                 DO;                 /*GETMAIN PATH           */
                       FLAGS=CDGM;         /*CONDITIONAL GETMAIN    */
             RFY (GMREG,TBLPTR)RSTD;
      R3SAVAR = GMREG;            /* SAVE CONTENTS OF REG. 3         */
                       GMREG=GMTBL;        /*PARMS IN REG. 3        */
 /* GETMAIN VECTOR TABLE AND SAVEAREAS FROM SUBPOOL 245             */
  SGTWSA: GEN  REFS(CVTSPSA,CVTGLMN,CVTPTR,CVTMAP,WSAGGMFM,WSAG);
          GETMAIN RC,LV=(0),BRANCH=(YES,GLOBAL),KEY=(3),SP=(3),        X
                RELATED=('SUPERVISOR ROUTINE WORK/SAVE AREAS FOR A CPU.X
                THIS GETMAIN IS ISSUED IN THIS MACRO WHICH IS INCLUDED X
                IN VARIOUS MODULES.  THE CORRESPONDING FREEMAIN IS AT  X
                LABEL: SFRWSA, IN THIS MACRO')
 @ENDGEN
  GMREG = R3SAVAR;  /* RESTORE REG. 3,
                       BRANCH ENTRY TO GETMAIN DESTROYS REG. 3       */
                       IF RTCODE ^= ZZERO   /*ERROR IN GETMAIN       */
                         THEN               /*YES                    */
                             HOLDRC=FFOUR;  /*RETAIN RETURN CODE     */
                         ELSE
   WSTFORMT:   DO;          /*INITIALIZE VECTOR TABLE  @ZM30488 */
                             HOLDRC=ZZERO;  /*RETAIN RETURN CODE     */
                             P=TBLPTR;      /*POINT TO START OF TABLE*/
                             SAPTR=TBLPTR+(NUM*FFOUR);
                                            /*GET PTR TO SAVEAREAS   */
 /* ROUND ADDR. OF FIRST WORK/SAVE AREA UP TO AN 8-BYTE MULT.  ALL   */
 /* WORK/SAVE AREAS MUST BEGIN ON DOUBLE WORD BOUNDARIES.  ALL WORK/ */
 /* SAVE AREAS ARE MULTIPLES OF 8 BYTES IN SIZE.  THUS IF THE FIRST  */
 /* WORK/SAVE AREA IS ON A DOUBLE WORD BOUNDARY, THEY ALL WILL BE.   */
    SAPTR = ((SAPTR + SEVEN)  SEVEN) && SEVEN;
          RFY (TBLPTR) UNRSTD;
   NSIZEPTR = ADDR(FSIZE);         /* PICK UP ADDR. OF FIELD
                                      CONTAINING FIRST WORK/SAVE
                                      AREA SIZE                      */
 INTZE:                      DO LOOP = LUPONE TO NUM;
                                            /*DO FOR EACH ENTRY IN   */
                                            /*VECTOR TABLE           */
                              SVPTR = SAPTR;/*SET PTR TO SAVEAREA    */
                              SAPTR = SAPTR + NWSASIZE;
                                            /*INCREMENT PTR BY SIZE  */
                                            /* OF SAVEAREA           */
                    P=P+ LENGTH(SVPTR);     /*POINT TO NEXT VECTOR   */
                                            /*TABLE ENTRY            */
          NSIZEPTR = NSIZEPTR               /*POINT TO NEXT SIZE     */
                    + LENGTH(NWSASIZE);
                             END INTZE;
                         END;               /*END PROCESSING FROM    */
                                            /*SUCCESSFUL GETMAIN     */
                       END GMAIN;
                  ELSE
 /********************************************************************/
 /*                                                                  */
 /*                  FREEMAIN PATH                                   */
 /*  REGISTER ONE CONTAINS THE ADDRESS OF THE AREA TO BE FREE'D.     */
 /*  THIS REQUEST IS ONLY FROM VARY CPU OFFLINE, OR IEAVNIP0         */
 /*                                                                  */
 /********************************************************************/


 FMAIN:                DO;                  /*FREEMAIN PATH          */
  RFY (GMREG,LNGREG) RSTD;
                        FLAGS=CDFM;         /*CONDITIONAL FREEMAIN   */
      R3SAVAR = GMREG;            /* PRESERVE CONTENTS OF REG. 3     */
                       GMREG=GMTBL;         /*PARMS IN REG. 3        */
     /*FREEMAIN AREA PROVIDED BY CALLER (VARY CPU OFFLINE OR NIP)    */
  SFRWSA:  GEN REFS(CVTSPSA,CVTGLMN,CVTPTR,CVTMAP,WSAGGMFM,WSAG);
          FREEMAIN      RC,LV=(0),BRANCH=(YES,GLOBAL),                 X
                KEY=(3),A=(1),SP=(3),                                  X
                RELATED=('SUPERVISOR ROUTINE WORK/SAVE AREAS FOR A CPU.X
                THIS FREEMAIN IS ISSUED IN THIS MACRO WHICH IS INCLUDEDX
                IN VARIOUS MODULES.  THE CORRESPONDING GETMAIN IS AT   X
                LABEL: SGTWSA, IN THIS MACRO')
 @ENDGEN
  GMREG = R3SAVAR;  /* RESTORE REG. 3,
                       BRANCH ENTRY TO FREEMAIN DESTROYS REG. 3      */
                       IF RTCODE ^= ZZERO   /*ERROR                  */
                         THEN               /*YES                    */
                           HOLDRC=FFOUR;    /*SET RETURN CODE        */
                         ELSE
                           HOLDRC=ZZERO;    /*SAVE 0 RETURN CODE     */
   RFY (LNGREG,TBLPTR) UNRSTD;
                       PARM=ZZERO;          /*INDICATOR FOR FREEMAIN */
                       END FMAIN;
  RFY (LOCKRC,REGSAPTR) RSTD;
   SAVAREA = REGSAPTR;              /* PRESERVE REGISTER 13          */
     REGSAPTR = ADDR(SETLOKSA);     /* PUT ADDR. OF 5 WORD SAVE AREA
                                       FOR SETLOCK IN REG. 13        */
 /* RELEASE SALLOC LOCK, MAKE SETLOCK SAVE REG'S 11-14 IN SAVE AREA  */
 /* POINTED TO BY REG. 13, RETURN CODE WILL BE IN REG. 15            */
  FLOCK: GEN REFS(FLC,PSALITA);
          SETLOCK RELEASE,TYPE=SALLOC,REGS=SAVE,                       *
                RELATED=('SALLOC LOCK, THIS SETLOCK IS ISSUED IN THIS  X
                MACRO WHICH IS INCLUDED IN VARIOUS MODULES, THE LOCK   X
                IS OBTAINED AT THE LABEL: GLOCK, IN THIS MACRO')
 @ENDGEN
   REGSAPTR = SAVAREA;              /* RESTORE REGISTER 13           */
  RFY (REGSAPTR) UNRSTD;
                IF (LOCKRC=ZZERO) 
                (LOCKRC=FFOUR)              /*LOCK NOT RELEASED?     */
                  THEN RTCODE=HOLDRC;       /*RETURN CODE INDICATOR  */
                  ELSE RTCODE=FFOUR;        /*0 RETURN FROM SETLOCK  */
                                            /*SET RETURN CODE TO THAT*/
                                            /*FROM GET/FREEMAIN      */
  RFY (LOCKRC) UNRSTD;
                END LOCKSET;
                ELSE                        /*SETLOCK ERROR          */
                  RTCODE = FFOUR;           /*RETURN CODE INDICATOR  */
   RFY (PARM,RTCODE) UNRSTD;
   @LISTOFF;
*/*IEAVSPSA: CHART (AMODE,SEQ,IBM68,AREF) */
*/*IEAVSPSA: E ENTER */
*/* N ON ENTRY IF REG. 1 IS ZERO, THE REQUEST IS TO ALLOCATE */
*/* N A CPU RELATED WORK/SAVE AREA.  IF REG. 1 IS NON-ZERO, */
*/* N THE REQUEST IS TO FREE A CPU RELATED WORK/SAVE AREA AND THE */
*/* N VIRT. ADDRESS OF THE AREA TO BE FREED IS IN REG. 1 */
*/* P SAVE REGS EXCEPT REG. 1 AND REG. 15 */
*/* P SAVE REGISTER 13 */
*/* P PUT ADDR. OF 5 WORD SAVEAREA FOR SETLOCK IN REG. 13 */
*/* L SETLOCK TO OBTAIN 'SALLOC' LOCK*/
*/* P RESTORE REG. 13 */
*/* D (YES,,NO,P2A1) WAS LOCK OBTAINED ? */
*/* P PUT SIZE OF AREA TO BE GOTTEN/FREED IN REG. 0 */
*/* P INDICATE SUBPOOL 245 AND KEY 0 IN GET/FREEMAIN WORKAREA */
*/* D (YES,,NO,FMAIN) IS THIS A GETMAIN REQUEST ? */
*/*GMAIN: P SET FLAGS IN GETMAIN WORKAREA FOR CONDITIONAL GETMAIN */
*/* P SAVE CONTENTS OF REGISTER 3 */
*/* N BRANCH ENTRY TO GET/FREEMAIN DESTROYS REG. 3 */
*/* P PUT GETMAIN PARAMETERS IN REG. 3 */
*/*SGTWSA: L BRANCH TO GETMAIN TO ALLOC. WORK/SAVE AREA*/
*/* N VIRT. ADDR. OF GOTTEN AREA IS IN REG. 1 */
*/* P RESTORE CONTENTS OF REGISTER 3 */
*/* D (YES,,NO,P2A2) GETMAIN SUCCESSFUL ?*/
*/* P SET UP A CODE OF ZERO, TO BE RETURNED BY THIS MODULE*/
*/* P CALC. VIRT. ADDR. OF FIRST SAVEAREA IN THE GOTTEN SPACE */
*/* P ROUND THIS ADDR. UP TO A DOUBLE WORD BOUNDARY */
*/* P PICK UP ADDR. OF FIELD CONTAINING FIRST WORK/SAVE AREA SIZE */
*/* P PICK UP NUMBER OF SAVE AREAS TO BE BUILT */
*/* P INITIALIZE A COUNTER OF SAVE AREAS BUILT TO 1 */
*/*INTZE: D (YES,P2B1,NO,) ALL SAVE AREAS BUILT ? */
*/* P SET CURR. VECTOR TABLE ENTRY TO POINT TO CURR. SAVE AREA */
*/* P UPDATE POINTER TO NEXT SAVE AREA */
*/* P UPDATE POINTER TO NEXT VECTOR TABLE ENTRY */
*/* P (,INTZE) INCREMENT COUNTER BY 1 */
*/*P2A1: P SET UP A CODE OF 4, TO BE RETURNED BY THIS MODULE */
*/* P (,P2J5) PUT RETURN CODE FOR THIS MODULE IN REG. 15 */
*/*P2A2: P (,P2B1) SET UP A CODE OF 4, TO BE RETURNED BY THIS MODULE */
*/*FMAIN: P SET FLAGS IN FREEMAIN WORKAREA FOR CONDITIONAL FREEMAIN */
*/* P SAVE CONTENTS OF REGISTER 3 */
*/* N BRANCH ENTRY TO GET/FREEMAIN DESTROYS REG. 3 */
*/* P PUT FREEMAIN PARAMETERS IN REG. 3 */
*/* N REG. 1 ALREADY CONTAINS THE VIRT. ADDR. OF AREA TO BE FREED */
*/*SFRWSA: L BRANCH TO FREEMAIN TO FREE WORK/SAVE AREA*/
*/* P RESTORE CONTENTS OF REGISTER 3 */
*/* D (YES,,NO,P2A3) FREEMAIN SUCCESSFUL ?*/
*/* P SET UP A CODE OF 0, TO BE RETURNED BY THIS MODULE*/
*/*P2B1: P SAVE REG. 13 */
*/* P PUT ADDR. OF 5 WORD SAVEAREA FOR SETLOCK IN REG. 13 */
*/*FLOCK: L SETLOCK TO RELEASE 'SALLOC' LOCK*/
*/* P RESTORE REG. 13 */
*/* D (YES,,NO,P2A4) WAS LOCK RELEASED ?*/
*/* P PUT RETURN CODE FOR THIS MODULE IN REG. 15*/
*/*P2J5: P RESTORE REGS EXCEPT REG. 1 AND REG. 15 */
*/* R RETURN TO CALLER */
*/*P2A3: P (,P2B1) SET UP A CODE OF 4, TO BE RETURNED BY THIS MODULE*/
*/*P2A4: P (,P2J5) SET RETURN CODE FOR THIS MODULE (REG. 15) TO 4*/
*/*IEAVSPSA: END */
  @LISTON;
         END IEAVSPSA;
./ ADD NAME=IEBIBLKS
*%GOTO IEBIB00;
*/* START OF SPECIFICATIONS *******************************************
*                                                                     *
*   MODULE-NAME = IEBIBLKS                                            *
*                                                                     *
*   COPYRIGHT = NONE                                                  *
*                                                                     *
*   STATUS = VS1 RELEASE 5 LEVEL 1                                    *
*                                                                     *
*   DESCRIPTIVE-NAME = IEBIMAGE WORKAREA                              *
*                                                                     *
*   FUNCTION = USED BY IEBIMAGE MODULES TO MAP THE COMMON WORKAREA.   *
*                                                                     *
*   MODULE-TYPE = MACRO                                               *
*                                                                     *
*     MACRO-SIZE = N/A FOR MAPPING MACRO.                             *
*                                                                     *
*     PARAMETER-RECEIVED = NONE                                       *
*                                                                     *
*   TABLES = NONE                                                     *
*                                                                     *
*   INNER-MACROS = NONE                                               *
*                                                                     *
*   SYSTEM-MACROS = NONE                                              *
*                                                                     *
*   CHANGE-ACTIVITY = NONE                                            *
*                                                                     *
*** END OF SPECIFICATIONS ********************************************/
*%IEBIB00:;
*/*********************************************************************
*                                                                     *
*  THE FOLLOWING DEFINES THE WORKAREA OF GOTTEN STORAGE OF IEBIBLKS.  *
*                                                                     *
***********************************************************************
*                                                                     *
*         __________________________________________________          *
*          0(0)                                                     *
*          DWORK                                                    *
*                                                                   *
*         ________________________________________________          *
*          8(8)                                                     *
*          FWORK                                                    *
*         ________________________________________________          *
*          12(C)       13(D)      14(E)      15(F)               *
*          STATUS1     STATUS2    STATUS3    STATUS4             *
*         _____________________________________________          *
*          16(10)      17(11)     18(12)     19(13)              *
*          KWDUSED     ACTIVOP    NEXTOP     ACTIVKEY            *
*         _____________________________________________          *
*          20(14)      21(15)                                      *
*          OPTABLN     OPTABAD                                     *
*         _______________________________________________          *
*          24(18)                                                   *
*          DNAME                                                    *
*                                                                   *
*         ________________________________________________          *
*          32(20)                              35(23)              *
*          DTTRP                               DINDCT              *
*         _______________________________________________          *
*          36(24)                              39(27)              *
*          DTTRT                               (ZERO)              *
*         ____________________________________                     *
*                                                                   *
*         ________________________________________________          *
*          44(2C)                  46(2E)                          *
*          DATTRI                  DSTOR                           *
*         _______________________________________________          *
*                      49(31)                 51(33)              *
*            (CONT)    DLEN                   (ZERO)              *
*         ___________________________________                     *
*                                                                   *
*         ________________________________________________          *
*          60(3C)                  62(3E)                          *
*          LIBBLKSZ                BFFLL                           *
*         _______________________________________________          *
*                                  66(42)                          *
*            (CONT)                BNAME                           *
*         ________________________                                 *
*                                                                   *
*                                 ________________________          *
*                                  74(4A)                          *
*                                  BTTRP                           *
*         _______________________________________________         */
*@EJECT;
*/*       __________________________________________________          *
*                      77(4D)     78(4E)     79(4F)              *
*            (CONT)    CONCATNO   LIBTYPE    BINDCT              *
*         _____________________________________________          *
*          80(50)                              83(53)              *
*          BTTRT                               (ZERO)              *
*         ____________________________________                     *
*                                                                   *
*         ________________________________________________          *
*          88(58)                  90(5A)                          *
*          BATTRI                  BSTOR                           *
*         _______________________________________________          *
*                      93(5D)                 94(5F)              *
*            (CONT)    BLEN                   (ZERO)              *
*         ___________________________________                     *
*                                                                   *
*         ________________________________________________          *
*           104(68)     105(69)   106(6A)                         *
*           LIBEXT      PRECOL    NEXT                            *
*         ______________________________________________          *
*          108(6C)      109(6D)                                    *
*          RETSAVE      CC                                         *
*         _______________________________________________          *
*          112(70)                                                  *
*          CARDEND                                                  *
*         ________________________________________________          *
*          116(74)                                                  *
*          SYSINAD                                                  *
*         ________________________________________________          *
*          120(78)                                                  *
*          SYSPRTAD                                                 *
*         ________________________________________________          *
*          124(7C)                                                  *
*          UTINAD                                                   *
*         ________________________________________________          *
*          128(80)                                                  *
*          UTOUTAD                                                  *
*         ________________________________________________          *
*          132(84)                                                  *
*         / MSGEDIT                                        /          *
*         /                                                /          *
*         ________________________________________________          *
*          148(94)                 150(96)                         *
*          PRNCNT                  PAGE                            *
*         _______________________________________________          *
*          152(98)     153(99)                                     *
*          ARGMT       TODAY                                       *
*         _______________________________________________         */
*@EJECT;
*/*       __________________________________________________          *
*          154(9A)     155(9B)                                     *
*          LOADFLAG    LOADMOD                                     *
*         _______________________________________________          *
*          160(A0)                                                  *
*          LOADNAME                                                 *
*                                                                   *
*         ________________________________________________          *
*          168(A8)                 170(AA)                         *
*          SEGCNT                  TESTP                           *
*         _______________________________________________          *
*          172(AC)                                                  *
*         / SAVE1                                          /          *
*         /                                                /          *
*         ________________________________________________          *
*          244(F4)                                                  *
*         / SAVE2                                          /          *
*         /                                                /          *
*         ________________________________________________          *
*          316(13C)                                                 *
*         / SAVE3                                          /          *
*         /                                                /          *
*         ________________________________________________          *
*          388(184)                                                 *
*         / SAVE4                                          /          *
*         /                                                /          *
*         ________________________________________________          *
*          460(1CC)                                                 *
*         / PRIMCARD                                       /          *
*         /                                                /          *
*         ________________________________________________          *
*          540(21C)                                                 *
*         / SDRYCARD                                       /          *
*         /                                                /          *
*         ________________________________________________          *
*          620(26C)    621(26D)                                    *
*          MSGN        MSG                                         *
*         ____________                                             *
*         /                                                /          *
*                                 ________________________          *
*                                  742(2E6)                        *
*                                  FCBSIZE                         *
*         _______________________________________________          *
*          744(2E8)    745(2E9)   746(2EA)   747(2EB)            *
*          LPI8        LPI6       LPI12      MARGN               *
*         _____________________________________________          *
*          748(2DC)                750(2DE)                        *
*          BOTTOM                  LOOP                            *
*         _______________________________________________          *
*          752(2F0)                                                 *
*         / DDNAMES                                        /          *
*         /                                                /          *
*         ________________________________________________         */
*@EJECT;
*/*       __________________________________________________          *
*          784(310)                                                 *
*          LASTKEY                                                  *
*                                                                   *
*         ________________________________________________          *
*          792(318)                794(31A)   795(31B)            *
*          PARMSIZE                PARMNUM    (RSVD)              *
*         ______________________________________________          *
*          796(31C)                                                 *
*         / SCANWORK                                       /          *
*         /                                                /          *
*         ________________________________________________          *
*          2236(8BC)                                                *
*          MODHEAD                                                  *
*                                                                   *
*         ________________________________________________          *
*          2244(8C4)                                                *
*         / MODBOD                                         /          *
*         /                                                /          *
*         ________________________________________________          *
*          10436(28C4)                                              *
*         / OVERFLO                                        /          *
*         /                                                /          *
*         ________________________________________________          *
*          10648(2998)                                              *
*         / MSGSAVE                                        /          *
*         /                                                /          *
*         ________________________________________________          *
*                                                                     *
**********************************************************************/
*@EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW ARE MISCELLANEOUS WORK AREAS.                       *
**                                                                    *
**********************************************************************/
*
*    DECLARE                           /* GOTTEN STORAGE             */
*      1 WORKAREA     BASED(BUFAD),    /* WORK AREA AND BUFFER SPACE */
*        2 WORK     CHAR(172)BDY(WORD),/* TOTAL WORK AREA.           */
*          3 WSTOR   CHAR(12)BDY(WORD),/* CHARACTER WORK AREA.       */
*            4 DWORK  CHAR(8)BDY(WORD),/* DOUBLE WORD WORK AREA.     */
*              5 DWORK1  CHAR(4),      /* CHARACTER WORK AREA.       */
*                6 *      BIT(8),      /* TEMP AREA.                 */
*                6 DWORKB BIT(24),     /* TEMP AREA.                 */
*              5 DWORK2  FIXED(32),    /* ARITHMATIC WORK AREA.      */
*                6 XWORK CHAR(2),      /*                            */
*                6 PWORK CHAR(2),      /* PACKED CHARACTERS.         */
*                  7 PWORK1 CHAR(1),   /* PACK CHARACTER     @Z48MSTT*/
*            4 FWORK     FIXED(31),    /* FULL WORD WORK AREA.       */
 @EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW ARE THE STATUS INDICATORS FOR THE UTILITY.          *
**                                                                    *
**********************************************************************/
*
*          3 STATUS1     BIT(8),       /* CURRENT STATUS OF UTILITY. */
*            4 ABNDFLG   BIT(1),       /* ABNORMAL END PENDING.      */
*            4 EOFFLG    BIT(1),       /* END OF FILE PENDING.       */
*            4 CARDIN    BIT(1),       /* CARD IN BUFFER INDICATION. */
*            4 INHIBLIB  BIT(1),       /* INHIBIT LIBRARY ACCESS.    */
*            4 CONTINUE  BIT(1),       /* CONTINUATION CARD INDICATOR*/
*            4 NOWRITE   BIT(1),       /* NEVER WRITE ON LIBRARY.    */
*            4 NOTED     BIT(1),       /* NOTE MACRO ISSUED.         */
*          3 STATUS2     BIT(8),       /* CURRENT STATUS OF OPERATION*/
*            4 REPUSE    BIT(1),       /* REPLACE OPTION INDICATOR.  */
*            4 INHIBIT   BIT(2),       /* INHIBIT WRITING/READING.   */
*              5 INHIBITW  BIT(1),     /* INHIBIT WRITING PDS.       */
*              5 INHIBITR  BIT(1),     /* INHIBIT READING PDS.       */
*            4 INHIBITP  BIT(1),       /* INHIBIT PRINTING.          */
*            4 FMTERR    BIT(1),       /* INDICATE FORMAT ERROR.     */
*            4 FMTERR1   BIT(1),       /* INDICATE FORMAT ERROR.     */
*            4 PRTYERR   BIT(1),       /* PARITY ERROR INDICATOR.    */
*              5 SETRAS  BIT(1),       /* ONE RASTER SCAN SET.       */
*            4 READMOD   BIT(1),       /* READ AND PRINT ONLY.       */
*          3 STATUS3     BIT(8),       /* CURRENT STATUS OF SCAN.    */
*            4 INVDLM    BIT(1),       /* INVALID DELIMITER.         */
*            4 FOUND     BIT(1),       /* OPERATION OR KEYWORD FOUND.*/
*            4 INVKWD    BIT(1),       /* INVALID KEYWORD INDICATOR. */
*            4 EXCLKWD   BIT(1),       /* EXCLUSIVE KEYWORD INDICATOR*/
*            4 INVPARM   BIT(1),       /* INVALID PARAMETER.         */
*            4 INVCHAR   BIT(1),       /* INVALID CHARACTER.         */
*            4 UNBAL     BIT(1),       /* UNBALANCED PARENTHESIS.    */
*            4 KWDCOMP   BIT(1),       /* KEYWORD SCAN COMPLETE.     */
*          3 STATUS4     BIT(8),       /* CURRENT STATUS (MISC).     */
*            4 KEYIN     BIT(1),       /* KEYWORD READY.             */
*            4 SCANINP   BIT(1),       /* SCAN IN PROGRESS.          */
*            4 INCLSW    BIT(1),       /* INDICATE INCLUDE KEYWORD.  */
*            4 HEXERR    BIT(1),       /* HEX ERROR DURING CONVERT.  */
*            4 FLDSW     BIT(1),       /* WITHIN PARM GROUP SWITCH.  */
*            4 PARMGRP   BIT(1),       /* PARAMETER GROUP SWITCH.    */
*            4 OPINPRG   BIT(1),       /* OPERATION IN PROGRESS.     */
*            4 LASTQ     BIT(1),       /* LAST QUOTE OR CARD.        */
*          3 KWDUSED     BIT(8),       /* KEYWORDS USED IN OPERATION.*/
*          3 ACTIVOP     FIXED(8),     /* ACTIVE OPERATION NUMBER.   */
*          3 NEXTOP      FIXED(8),     /* NEXT OPERATION NUMBER.     */
*          3 ACTIVKEY    FIXED(8),     /* ACTIVE KEYWORD.            */
*          3 OPTABLN     FIXED(8),     /* LENGTH OF OPERATION TABLE. */
*          3 OPTABAD     PTR(24),      /* ADDR OF OPERATION TABLE.   */
 @EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW ARE THE PDS DIRECTORY ENTRIES FOR STOW AND BLDL.    *
**                                                                    *
**********************************************************************/
*
*          3 DIRECTRY,                 /* DIRECTORY ENTRY FOR STOW.  */
*            4 DNAME     CHAR(8),      /* MEMBER NAME.               */
*              5 DPREFX  CHAR(4),      /* STANDARD PREFIX.           */
*              5 DSUFIX  CHAR(4),      /* APPENDED SUFFIX.           */
*            4 DTTRP     CHAR(3),      /* RELATIVE ADDR OF 1ST BLOCK.*/
*            4 DINDCT    BIT(8),       /* NO. TTRS, USER FLD LENGTH. */
*            4 DTTRT     CHAR(4),      /* RELATIVE ADDR OF TEXT REC. */
*            4   *       CHAR(4),      /* ZEROS.                     */
*            4 DATTRI    BIT(16),      /* ATTRIBUTES.                */
*              5 *       BIT(7),       /* FIXED ATTRIBUTES.          */
*              5 UNIREC  BIT(1),       /* BIT ON INDICATES ONE TEXT. */
*            4 DSTOR     PTR(24)BDY(WORD,3),/* MAIN STORAGE REQUIRED.*/
*            4 DLEN      PTR(16)BDY(WORD,2),/* LENGTH OF TEXT RECORD.*/
*            4   *       CHAR(9),      /* ZEROS.                     */
*/********************************************************************/
*          3 LIBBLKSZ    FIXED(16),    /* LIBRARY BLOCKING FACTOR.   */
*/********************************************************************/
*
*          3 BLDLNTRY  BDY(WORD,3),    /* BLDL DIRECTORY ENTRY.      */
*            4 BFFLL     BIT(32),      /* ONE ENTRY, LENGTH 36.      */
*            4 BNAME     CHAR(8),      /* MEMBER NAME.               */
*              5 BPREFX  CHAR(4),      /* STANDARD PREFIX.           */
*              5 BSUFIX  CHAR(4),      /* MEMBER NAME SUFFIX.        */
*            4 BTTRP     CHAR(3),      /* RELATIVE ADDR OF 1ST BLOCK.*/
*            4   *       BIT(16),      /* CONCAT NO. AND LIBRARY TYPE*/
*            4 BINDCT    BIT(8),       /* NO. TTRS, USER FLD LENGTH. */
*            4 BTTRTA    CHAR(8),      /* RELATIVE ADDR OF TEXT REC. */
*              5 BTTRT   CHAR(3),      /* REAL TTR.                  */
*            4 BATTRI    BIT(16),      /* ATTRIBUTES.                */
*              5 *       BIT(7),       /* FIXED ATTRIBUTES.          */
*              5 BUNIREC BIT(1),       /* BIT ON INDICATES ONE TEXT. */
*            4 BSTOR     PTR(24)BDY(WORD,3),/* MAIN STORAGE REQUIRED.*/
*            4 BLEN      PTR(16)BDY(WORD,2),/* LENGTH OF TEXT RECORD.*/
*            4   *       CHAR(9),      /* ZEROS                      */
 @EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW ARE MISCELLANEOUS COUNTERS AND ADDRESSES.           *
**                                                                    *
**********************************************************************/
*
*          3 LIBEXT     BIT(8),        /* LAST LIBRARY EXTENT KNOWN. */
*          3 PRECOL      CHAR(1),      /* PREVIOUS COLUMN INFO.      */
*          3 NEXT        FIXED(16),    /* CURRENT MSG BUFFER COUNT.  */
*          3 RETSAVE     FIXED(8),     /* RETURN CODE SAVE AREA.     */
*          3 CC          PTR(24),      /* CURRENT CARD COLUMN PTR.   */
*          3 CARDEND     FIXED(31),    /* LAST COLUMN POINTER.       */
*          3 DCBADS,                   /* DCB ADDRESS LIST.          */
*            4 SYSPRTAD  PTR(31),      /* ADDR OF SYSPRINT DCB.      */
*            4 SYSINAD   PTR(31),      /* ADDR OF SYSIN DCB.         */
*            4 UTINAD    PTR(31),      /* ADDR OF SYSUT1 INPUT DCB.  */
*            4 UTOUTAD   PTR(31),      /* ADDR OF SYSUT1 OUTPUT DCB. */
*          3 MSGEDIT(4)  FIXED(32),    /* MESSAGE EDIT LIST.         */
*            4 EDITLEN   FIXED(8),     /* EDIT DATA LENGTH.          */
*            4 EDITDATA  PTR(24),      /* EDIT DATA ADDRESS.         */
*          3 PRNCNT      FIXED(15),    /* PARENTHESIS COUNTER.       */
*          3 PAGE        FIXED(15),    /* RESERVED BYTES.            */
*          3 ARGMT       FIXED(8),     /* SCAN ARGUMENT HOLDER.      */
*          3 TODAY       BIT(24),      /* TODAYS DATE.               */
*          3 LOADFLAG    BIT(8),       /* FLAG INDICATES MOD LOADED. */
*          3 LOADMOD     PTR(24),      /* POINTER TO LOADED MODULE.  */
*          3 LOADNAME CHAR(8)BDY(WORD),/* NAME OF MODULE TO LOAD.    */
*            4 *         CHAR(4),      /*                            */
*            4 INCLNAME  CHAR(4),      /* NAME OF MODULE TO LOAD.    */
*          3 SEGCNT      FIXED(15),    /* MODULE SEGMENT COUNT.      */
*          3 TESTP       FIXED(16),    /* TEST AREA, PITCH AND PARITY*/
*            4 TPITCH    BIT(8),       /* PITCH WORK AREA.           */
*              5 TPP     BIT(2),       /* PITCH BIT AREA.            */
*                6 TP1   BIT(1),       /* FIRST PITCH BIT.           */
*                6 TP2   BIT(1),       /* SECOND PITCH BIT.          */
*            4 TPARTY    BIT(8),       /* PARITY WORK AREA.          */
*              5 TPS     BIT(2),       /* PARITY BIT AREA.           */
*                6 PR1   BIT(1),       /* FIRST PARITY BIT.          */
*                6 PR2   BIT(1),       /* SECOND PARITY BIT.         */
 @EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW ARE THE SAVE AREAS AND SYSIN AND SYSPRINT AREAS.    *
**                                                                    *
**********************************************************************/
*
*        2 SAVE1         CHAR(72),     /* SAVE AREA LEVEL 1.         */
*        2 SAVE2         CHAR(72),     /* SAVE AREA LEVEL 2.         */
*        2 SAVE3         CHAR(72),     /* SAVE AREA LEVEL 3.         */
*        2 SAVE4         CHAR(72),     /* SAVE AREA LEVEL 4.         */
*
*/************************  SYSIN BUFFERS  ***************************/
*
*        2 PRIMCARD      CHAR(80),     /* PRIMARY CARD BUFFER.       */
*        2 SDRYCARD      CHAR(80),     /* SECONDARY CARD BUFFER.     */
*          3 RASDATA(18) CHAR(1),      /* CARD RASTER SCAN PATTERN.  */
*          3 *           CHAR(6),      /* NOT REFERENCED.            */
*          3 IDENT       CHAR(4),      /* IDENTIFIER (SEQ=).         */
*          3 SEQNO       CHAR(2),      /* SEQUENCE NUMBER.           */
*
*/************************  SYSPRINT BUFFERS  ************************/
*
*        2 MSGN          FIXED(8),     /* INDICATES MESSAGE NUMBER.  */
*        2 MSG           CHAR(121),    /* MESSAGE AREA.              */
*          3 SPACE       CHAR(1),      /* FORMS CONTROL BYTE.        */
*          3 MSGTXT      CHAR(120),    /* TEXT OF MESSAGE.           */
*            4 PREFX     CHAR(4),      /* IEBA IS PREFIX TO ALL MSGS.*/
*            4 MSGR      CHAR(116),    /* REAL MSG MOVES TO HERE.    */
*              5 *       CHAR(1),      /*                            */
*              5 MSGOF   CHAR(115),    /* MSG DISP COUNT FROM HERE   */
*                6 *     CHAR(100),    /* UNREFERENCED.              */
*                6 PAGENO CHAR(4),     /* PAGE NUMBER GOES HERE.     */
 @EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW ARE MISCELLANEOUS COUNTERS AND ADDRESSES.           *
**                                                                    *
**********************************************************************/
*
*        2 FCBSIZE       FIXED(15),    /* FCB SIZE PARAMETER.        */
*        2 LPICNT        FIXED(32),    /* LINE PER INCH COUNTERS.    */
*          3 LPI8        FIXED(8),     /* EIGHT LINE PER INCH CNTR.  */
*          3 LPI6        FIXED(8),     /* SIX LINE PER INCH CNTR.    */
*          3 LPI12       FIXED(8),     /* 12 LPI COUNTER     @Z48MSTT*/
*          3 MARGN       FIXED(8),     /* MARGIN LINE COUNT. @Z48MSTT*/
*        2 BOTTOM        FIXED(15),    /* BOTTOM MARGIN.     @Z48MSTT*/
*        2 LOOP          FIXED(15),    /* LOOP COUNTER.      @Z48MSTT*/
*        2 DDNAMES(4)    CHAR(8),      /* DDNAME LIST.               */
*        2 LASTKEY       CHAR(8),      /* SAVE AREA FOR LAST KEYWORD.*/
*        2 PARMSIZE      FIXED(16),    /* CURRENT PARAMETER SIZE.    */
*        2 PARMNUM       FIXED(8),     /* CURRENT PARAMETER NUMBER.  */
*        2 RESRV1        FIXED(8),     /* RESERVED.          @Z48MSTT*/
*        2 SCANWORK,                   /* AREA USED BY SCAN ROUTINES.*/
*          3 SCANARY(256,4)FIXED(8),   /* ARRAY FILLED BY IEBISCAN.  */
*          3 SCNT        FIXED(16),    /* ARRAY TRACKER.             */
*          3 CARDDATA    CHAR(414),    /* CARD DATA SCANNED TO HERE. */
*            4 COPSV     CHAR(3),      /* PRINTABLE COPY NUMBER.     */
*            4 LINSV     CHAR(3),      /* PRINTABLE LINE NUMBER.     */
 @EJECT;
*/*********************************************************************
**                                                                    *
**  DEFINED BELOW IS THE INPUT/OUTPUT BUFFER FOR THE LIBRARY DATA SET.*
**                                                                    *
**********************************************************************/
*
*        2 LIBBUF,                     /* LIBRARY BUFFER AREA.       */
*          3 MODHEAD,                  /* MODULE HEADING.            */
*            4 MODNAME   CHAR(4),      /* MODULE SUFFIX.             */
*            4 MODRSVD   FIXED(16),    /* RESERVED.                  */
*            4 MODCNT    FIXED(16),    /* LENGTH OF MODULE BODY.     */
*              5 CMODCNT FIXED(15),    /* LENGTH OF MODULE BODY.     */
*          3 MODBOD      CHAR(8192),   /* MODULE BODY.               */
*            4 BEGMARG   CHAR(3),      /* FCB MARGIN.                */
*            4 FCBBOD(141)BIT(8),      /* FCB BODY.                  */
*            4 FCBCLR    CHAR(144),    /* CLEAR FCB COMPARAND.       */
*          3 OVERFLO     CHAR(212),    /* OVERFLOW FOR COPYMOD.      */
*
*/*********************************************************************
**                                                                    *
**  THE AREAS BELOW HAVE MISCELLANEOUS USES, SEE EACH REDEFINITION    *
**  FOR ITS APPROPRIATE MEANING.                                      *
**                                                                    *
**********************************************************************/
*
*        2 MSGSAVE(60)   CHAR(121),    /* MESSAGE BUFFER AREA.       */
*        2 LASTBYTE      CHAR(1);      /* LAST BYTE OF GOTTEN CORE.  */
*    DECLARE
*        ASGNMENT        BIT(8)DEF(LPI8),/* FOR EBCDIC ASSIGNMENT.   */
*        PITCH           BIT(8)DEF(LPI6),/* FOR CHARACTER PITCH.     */
*        1 GRAFARY(64)   BDY(WORD)BASED(ADDR(SCANWORK)),
*          2 ASNARRAY     BIT(8),      /* FOR EBCDIC ASSIGNMENT.     */
*          2 ASNENTRY     BIT(8),      /* ALL BITS IF ASSIGNED.      */
*          2 REFARRAY     FIXED(16);   /* FOR GCM REFERENCE.         */
*     DECLARE                          /* DELETED SEGMENT ARRAY.     */
*        ASGNSAVE     CHAR(256)BASED(ADDR(DEL)),/* FOR ASSIGN VALUES.*/
*        DEL(1024)    BIT(8)BASED(ADDR(SCANARY));/* DELETE VALUES.   */
*@EJECT;
*/*********************************************************************
**                                                                    *
**  THE FOLLOWING DEFINES THE KEYWORD USED SWITCHES FOR EACH          *
**  OPERATION.                                                        *
**                                                                    *
**********************************************************************/
*    DECLARE
*        1 ALLKEY        BIT(8)DEF(KWDUSED),
*          2 NAMESET     BIT(1),       /* NAME FOUND.                */
*          2 NOKEY       BIT(1),       /* NO KEYWORD FOUND           */
*          2 DELSET      BIT(1),       /* DELSEG FOUND.              */
*        1 FCBKEY        BIT(8)DEF(KWDUSED),
*          2 *           BIT(3),       /* PREDEFINED.                */
*          2 LPISET      BIT(1),       /* LPI FOUND.                 */
*          2 SIZESET     BIT(1),       /* SIZE FOUND.                */
*          2 CHSET       BIT(1),       /* CHX FOUND.                 */
*        1 TBLKEY        BIT(8)DEF(KWDUSED),
*          2 *           BIT(3),       /* PREDEFINED.                */
*          2 LOCSET      BIT(1),       /* LOC FOUND.                 */
*          2 CGMIDSET    BIT(1),       /* CGMID FOUND.               */
*          2 GCMLSET     BIT(1),       /* GCMLIST FOUND.             */
*        1 COPYKEY       BIT(8)DEF(KWDUSED),
*          2 *           BIT(3),       /* PREDEFINED.                */
*          2 COPYSET     BIT(1),       /* COPIES FOUND.              */
*          2 LINESET     BIT(1),       /* LINES FOUND.               */
*          2 POSSET      BIT(1),       /* POS FOUND.                 */
*          2 TEXTSET     BIT(1),       /* TEXT FOUND.                */
*        1 GRAPHKEY      BIT(8)DEF(KWDUSED),
*          2 *           BIT(3),       /* PREDEFINED.                */
*          2 REFSET      BIT(1),       /* REF FOUND.                 */
*          2 GCMSET      BIT(1),       /* GCM FOUND.                 */
*          2 ASGNSET     BIT(1);       /* ASSIGN FOUND.              */
*@EJECT;
*    DECLARE
*        TEXTDATA        CHAR(204)BASED(BUFFPTR),
*        1 COPYLINE      BDY(WORD)BASED(ADDR(SCANWORK)),
*          2 COPYLABL,                 /* COPY SEGMENT HEADER.       */
*            3 ICOPY     FIXED(8),     /* INITIAL COPY NUMBER.       */
*            3 COPYX     FIXED(8),     /* NUMBER OF COPIES.          */
*            3 ILINE     FIXED(8),     /* INITIAL LINE NUMBER.       */
*            3 LINEX     FIXED(8),     /* NUMBER OF LINES.           */
*            3 IPOS      FIXED(8),     /* INITIAL PRINT POSITION.    */
*            3 TEXTN     FIXED(8),     /* NUMBER OF TEXT BYTES.      */
*          2 TEXTD       CHAR(204);    /* TEXT DATA.                 */
*    DECLARE                           /* BUFFER DEFINITION FOR      */
*        1 XLATTABL DEF(MODBOD),       /* CHAR ARRANGEMENT TABLE.    */
*          2 XPOS(16,16) BIT(8),       /* 256 ENTRIES IN TABLE.      */
*            3 XWCGM     BIT(2),       /* TWO HI BITS INDICATE WCGM. */
*            3 XREF      BIT(6),       /* SIX LOW BITS ARE WCGM REF. */
*          2  CGMIDALL CHAR(8)BDY(WORD),/* CGMID AREA.               */
*            3 CGMIDX(4) FIXED(16),    /* FOUR POSSIBLE              */
*              4 CGMIDN  FIXED(8),     /* CHAR GEN MOD IDENTS AND    */
*              4 CGMIDNO FIXED(8),     /*  IDENT ORDERS.             */
*          2 GRFMODS     CHAR(16),     /* GCM NAME AREA.             */
*            3 GRAFMODN(4)CHAR(4);     /* FOUR POSSIBLE GCM NAMES.   */
*     DECLARE
*        1 FCBMOD CHAR(152)DEF(LIBBUF),/* DEFINE FCB MODULE.         */
*          2 FCBHEAD,                  /* FCB MODULE HEADING.        */
*            3 FCBNAME     CHAR(4),    /* NAME SUFFIX.               */
*            3 FCBRSVD     FIXED(16),  /* RESERVED.                  */
*            3 FCBCNT      FIXED(16),  /* COUNT OF BYTES REMAINING.  */
*          2 FCBYTE(*)      BIT(8),    /* ACTUAL FCB                 */
*            3 FCBNA        BIT(2),    /* TWO BITS NOT USED  @Z48MSTT*/
*            3 FLPI12       BIT(2),    /* 12 LPI BITS.       @Z48MSTT*/
*              4 *          BIT(1),    /* UNDEFINED.         @Z48MSTT*/
*              4 FLPI       BIT(1),    /* ON = 8 LPI, OFF = 6 LPI    */
*            3 FCHN         BIT(4);    /* CHANNEL CODE.              */
*    DECLARE
*        DCBTAB(4)PTR(31)DEF(DCBADS),  /* TABLE OF DCB ADDRESSES.    */
*        1 CWORK CHAR(4) DEF(FWORK),   /* NEED CHAR DEFINITION ALSO  */
*          2 UWORK   CHAR(2),          /* UNPACK AREA.               */
*            3 *     CHAR(1),
*            3 UNITS CHAR(1),          /* UNITS POSITION RETURN CODE */
*        1 CWORKX CHAR(4) DEF(FWORK),  /*                            */
*          2 *         CHAR(1),        /* UNREFERENCED.              */
*          2 CWORK3    CHAR(3),        /* THREE LOW ORDER BYTES.     */
*            3 *       CHAR(1),        /* UNREFERENCED.              */
*            3 CWORK2  CHAR(2),        /* TWO LOW ORDER BYTES.       */
*              4 *     CHAR(1),        /* UNREFERENCED.              */
*              4 CWORK1 CHAR(1);       /* LOW ORDER BYTE.            */
*    DECLARE
*        COL      CHAR(8)  BASED(CC),  /* CARD COLUMN DEFINITION.    */
*        COL72    CHAR(1) DEF(PRIMCARD)POSITION(72); /* DEFINE COL 72*/
*    DECLARE                           /* PRINT QUEUE AREA.          */
*        1 PRTQELEM  CHAR(121)BASED(ADDR(MSGSAVE(NEXT))),
*          2 CONTROL     CHAR(1),      /* ROOM FOR CONTROL CHARACTER.*/
*          2 PRTQUEUE    CHAR(120),    /* PRINT LINE INFORMATION.    */
*            3 *     CHAR(54),         /* UNDEFINED AREA.            */
*            3 TBN   CHAR(8);          /* AREA FOR MODULE NAME.      */
*@EJECT;
*/*********************************************************************
**                                                                    *
**  LISTED BELOW ARE THE MESSAGE NUMBERS THAT MAY BE SELECTED.        *
**                                                                    *
**********************************************************************/
*
*    DECLARE
*        IEBA01I FIXED(8) CONSTANT(1), /* SELECTS MESSAGE 1.         */
*        IEBA02I FIXED(8) CONSTANT(2), /* SELECTS MESSAGE 2.         */
*        IEBA03I FIXED(8) CONSTANT(3), /* SELECTS MESSAGE 3.         */
*        IEBA04I FIXED(8) CONSTANT(4), /* SELECTS MESSAGE 4.         */
*        IEBA05I FIXED(8) CONSTANT(5), /* SELECTS MESSAGE 5.         */
*        IEBA06I FIXED(8) CONSTANT(6), /* SELECTS MESSAGE 6.         */
*        IEBA07I FIXED(8) CONSTANT(7), /* SELECTS MESSAGE 7.         */
*        IEBA08I FIXED(8) CONSTANT(8), /* SELECTS MESSAGE 8.         */
*        IEBA09I FIXED(8) CONSTANT(9), /* SELECTS MESSAGE 9.         */
*        IEBA10I FIXED(8) CONSTANT(10),/* SELECTS MESSAGE 10.        */
*        IEBA11I FIXED(8) CONSTANT(11),/* SELECTS MESSAGE 11.        */
*        IEBA12I FIXED(8) CONSTANT(12),/* SELECTS MESSAGE 12.        */
*        IEBA13I FIXED(8) CONSTANT(13),/* SELECTS MESSAGE 13.        */
*        IEBA14I FIXED(8) CONSTANT(14),/* SELECTS MESSAGE 14.        */
*        IEBA15I FIXED(8) CONSTANT(15),/* SELECTS MESSAGE 15.        */
*        IEBA16I FIXED(8) CONSTANT(16),/* SELECTS MESSAGE 16.        */
*        IEBA17I FIXED(8) CONSTANT(17),/* SELECTS MESSAGE 17.        */
*        IEBA18I FIXED(8) CONSTANT(18),/* SELECTS MESSAGE 18.        */
*        IEBA19I FIXED(8) CONSTANT(19),/* SELECTS MESSAGE 19.        */
*        IEBA20I FIXED(8) CONSTANT(20),/* SELECTS MESSAGE 20.        */
*        IEBA21I FIXED(8) CONSTANT(21),/* SELECTS MESSAGE 21.        */
*        IEBA22I FIXED(8) CONSTANT(22),/* SELECTS MESSAGE 22.        */
*        IEBA23I FIXED(8) CONSTANT(23),/* SELECTS MESSAGE 23.        */
*        IEBA24I FIXED(8) CONSTANT(24),/* SELECTS MESSAGE 24.        */
*        IEBA25I FIXED(8) CONSTANT(25),/* SELECTS MESSAGE 25.        */
*        IEBA26I FIXED(8) CONSTANT(26),/* SELECTS MESSAGE 26.        */
*        IEBA27I FIXED(8) CONSTANT(27),/* SELECTS MESSAGE 27.        */
*        IEBA28I FIXED(8) CONSTANT(28),/* SELECTS MESSAGE 28.        */
*        IEBA29I FIXED(8) CONSTANT(29),/* SELECTS MESSAGE 29.        */
*        IEBA30I FIXED(8) CONSTANT(30),/* SELECTS MESSAGE 30.        */
*        IEBA31I FIXED(8) CONSTANT(31),/* SELECTS MESSAGE 31.        */
*        IEBA32I FIXED(8) CONSTANT(32),/* SELECTS MESSAGE 32.        */
*        IEBA33I FIXED(8) CONSTANT(33),/* SELECTS MESSAGE 33.        */
*        IEBA34I FIXED(8) CONSTANT(34),/* SELECTS MESSAGE 34.        */
*        IEBA35I FIXED(8) CONSTANT(35),/* SELECTS MESSAGE 35.        */
*        IEBA36I FIXED(8) CONSTANT(36),/* SELECTS MESSAGE 36.        */
*        IEBA37I FIXED(8) CONSTANT(37),/* SELECTS MESSAGE 37.        */
*        IEBA38I FIXED(8) CONSTANT(38),/* SELECTS MESSAGE 38.        */
*        IEBA39I FIXED(8) CONSTANT(39),/* SELECTS MESSAGE 39.        */
*        IEBA40I FIXED(8) CONSTANT(40),/* SELECTS MESSAGE 40.        */
*        IEBA41I FIXED(8) CONSTANT(41),/* SELECTS MESSAGE 41.        */
*        IEBA42I FIXED(8) CONSTANT(42),/* SELECTS MESSAGE 42.        */
*        IEBA43I FIXED(8) CONSTANT(43),/* SELECTS MESSAGE 43.        */
*        IEBA44I FIXED(8) CONSTANT(44),/* SELECTS MESSAGE 44.        */
*        IEBA45I FIXED(8) CONSTANT(45),/* SELECTS MESSAGE 45.        */
*        IEBA46I FIXED(8) CONSTANT(46),/* SELECTS MESSAGE 46.        */
*        IEBA47I FIXED(8) CONSTANT(47),/* SELECTS MESSAGE 47.        */
*        IEBA48I FIXED(8) CONSTANT(48),/* SELECTS MESSAGE 48.        */
*        IEBA49I FIXED(8) CONSTANT(49);/* SELECTS MESSAGE 49.        */
* @EJECT;
*/*********************************************************************
**                                                                    *
**  BELOW  ARE ALL THE REGISTER DEFINITIONS USED IN THE PROGRAM.      *
**  THEY ARE RESTRICTED AND UNRESTRICTED AS THE NEED FOR THIER        *
**  USE ARISES.                                                       *
**                                                                    *
**********************************************************************/
*
*    DECLARE                           /* REGISTER ASSIGNMENTS.      */
*        R0        REG(0)  PTR(31)UNRSTD, /* HOLDS PARAMETER.        */
*        R1        REG(1)  PTR(31)UNRSTD, /* HOLDS PARAMETER POINTER */
*        PARAM     REG(3)  PTR(31)UNRSTD, /* SAVES PARAMETER POINTER */
*        REMSIZE   REG(3)FIXED(31)UNRSTD, /* REMAINDER OF MOD BLOCK. */
*        SHIFT     REG(4)FIXED(31)UNRSTD, /* SHIFT REG.              */
*        SHIFT2    REG(5)FIXED(31)UNRSTD, /* SHIFT REGISTER.         */
*        RECAREA   REG(4)FIXED(31)UNRSTD, /* RECEIVING AREA FOR MVCL.*/
*        RECSIZE   REG(5)FIXED(31)UNRSTD, /* RECEIVING SIZE FOR MVCL.*/
*        BUFFPTR   REG(6)  PTR(31)UNRSTD, /* INTERNAL BUFFER POINTER.*/
*        TRANSIZE  REG(7)FIXED(31)UNRSTD, /* RECEIVING SIZE FOR MVCL.*/
*        DB        REG(7)  PTR(32)UNRSTD, /* DATA PTR FOR ASSEM CODE */
*        BUFAD     PTR REG(8) RESTRICTED, /* REG OF GOTTEN STORAGE.  */
*        R14       REG(14) PTR(32)UNRSTD, /* HOLDS CALLED ROUTINE ADR*/
*        RETCODE   REG(15) FIXED(32)UNRSTD;/* HOLDS RETURN CODE.     */
*@EJECT;
*/*********************************************************************
**                                                                    *
**  THE FOLLOWING REDEFINES THE OPERATION TABLE AS AN ARRAY OF        *
**  TWENTY FOUR BYTE ELEMENTS.                                        *
**                                                                    *
**********************************************************************/
*    DECLARE
*        1 TABLDEF(*) BASED(OPTABAD),  /* OPERATION TABLE STRUCTURE. */
*          2 OPNUM      FIXED(8),      /* OPERATION NUMBER.          */
*          2 OPFLAGS    BIT(24),       /* OPERATIONAL/KEYWORD FLAGS. */
*            3 MLTFLAG  BIT(1),        /* MULTI CONTROL CARDS ALLOWED*/
*            3 LPIFLAG  BIT(1),        /* ALLOW LPI                  */
*            3 CHFLAG   BIT(1),        /*       CH1 THRU CH12        */
*            3 SIZEFLAG BIT(1),        /*       SIZE                 */
*            3 COPYFLAG BIT(1),        /*       COPY                 */
*            3 LINEFLAG BIT(1),        /*       LINE                 */
*            3 POSFLAG  BIT(1),        /*       POS                  */
*            3 TEXTFLAG BIT(1),        /*       TEXT                 */
*            3 NAMEFLAG BIT(1),        /*       MEMBER NAME          */
*            3 ASGNFLAG BIT(1),        /*       ASSIGN               */
*            3 DELFLAG  BIT(1),        /*       DELSEG               */
*            3 REFFLAG  BIT(1),        /*       REF                  */
*            3 GCMFLAG  BIT(1),        /*       GCM                  */
*            3 GCMLFLAG BIT(1),        /*       GCMLIST              */
*            3 LOCFLAG  BIT(1),        /*       LOC                  */
*            3 CGMIDFLG BIT(1),        /*       CGMID                */
*            3 NOFLAG   BIT(1),        /*       NO KEYWORDS          */
*            3 ASTRFLAG BIT(1),        /*       ASTERISK             */
*            3 REPFLAG  BIT(1),        /*       REPLACE OPTION       */
*          2 NOB        FIXED(8),      /* NUMBER OF BYTES IN KEYWORD.*/
*          2 BLDPTR     PTR(24),       /* POINTER TO BUILD ROUTINE.  */
*          2  *         FIXED(8),      /* RESERVED BYTE              */
*          2 CHKPTR     PTR(24),       /* POINTER TO CHECK ROUTINE.  */
*          2  *         FIXED(8),      /* RESERVED BYTE              */
*          2 PRTPTR     PTR(24),       /* POINTER TO PRINT ROUTINE.  */
*          2 RTNAME     CHAR(8);       /* KEYWORD NAME.              */
*@EJECT;
./ ADD NAME=IEBMCA
         MACRO
&NAME    IEBMCA
*A 976365                                                      @YM06438
*C 976364                                                      @YM06438
*A 976364                                                      @YM06433
*C 976200-976480,976899                                        @YM06433
*D 976484-976799,976999-977360                                 @YM06433
*A976420-977360                                                @YM04848
*D655200,A654900-655500                                         OY01182
*A966100-976400                                                 YL026VD
*A664200,928800                                                  A36049
*A711900-712100                                                  A44345
* 155700,179100,229500,236700,324900,839700,859500               X010XX
*C229500-230900,236700-238500                                    A45170
* 472500,475200,481500                                           X010XX
*A756500-756840                                                  A48742
*A236700                                                        YA01689
*
**********       C O M M U N I C A T I O N    A R E A        **********
**********                  I E B D S C P Y                  **********
*
         SPACE 2
* ABBREVIATIONS USED FREQUENTLY -
*        ODE = OUTPUT DIRECTORY ENTRY
*        IDE = INPUT DIRECTORY ENTRY
         SPACE 2
*
* SETAB = SELECT/EXCLUDE TABLE
*        THE SETAB CONSISTS OF 10-BYTE ENTRIES.  ENTRIES ARE MADE TO
*        THIS TABLE WHEN -
*              1) A SELECTIVE COPY HAS BEEN SPECIFIED.  EACH ENTRY IS
*              FOR THE NAME OF A MEMBER TO BE SELECTED.  IF A MEMBER IS
*              TO BE RENAMED, TWO 10-BYTE ENTRIES ARE MADE IN THE SETAB
*              2) AN EXCLUSIVE COPY HAS BEEN SPECIFIED.  EACH ENTRY IS
*              FOR THE NAME OF A MEMBER TO BE EXCLUDED.
*        NOTE- IN THE CASE OF A SELECTIVE COPY (AND ONLY IN THIS CASE),
*              THE SETAB WILL ALSO BE USED AS THE CTLTAB.  IN ALL OTHER
*              CASES, A SEPARATE CTLTAB WILL BE CONSTRUCTED.
*        BYTE 0 OF AN ENTRY IS DESIGNATED AS SEFLAG1.  WITHIN THIS BYTE
*        THE FOLLOWING BITS HAVE MEANING -
SEBIT1   EQU   X'80' ON=THIS IS A NEWNAME ENTRY
SEBIT2   EQU   X'40' ON=THIS IS A RENAMED ENTRY
SEBIT3   EQU   X'20' ON=REPLACE OPTION WAS SPECIFIED FOR THIS MEMBER
SEBIT4   EQU   X'10' ON=DONTCOPY FLAG...DO NOT PROCESS THIS ENTRY
SEBIT5   EQU   X'08' ON= THIS MEMBER HAS BEEN ''FOUND'' ON INPUT D.S.
SEBIT6   EQU   X'04' ON= THIS IS LAST ENTRY IN SETAB/CTLTAB
*        LO ORDER 2 BITS NOT USED
*        NOTE THE DEFINITION OF SEBIT3.  IF, IN THE INDD TABLE, BYTE 0
*              BIT 2 IS ON, THIS MEANS THAT THE REPLACE OPTION WAS SPE-
*              CIFIED FOR ALL MEMBERS COPIED FROM THIS INDD.  IT IS
*              VALID FOR BOTH OF THESE BITS TO BE ON AT THE SAME TIME,
*              ALTHOUGH IF THE BIT IS ON IN THE INDD TABLE, IT IS UN-
*              NECESSARY FOR SEBIT3 TO ALSO BE ON IN THE SETAB.
         EJECT
* FOLLOWING IS A DESCRIPTION OF THE CONTROL TABLE -CTLTAB-
* (REMEMBER THAT THIS TABLE IS PHYSICALLY THE SAME TABLE AS SETAB WHEN
* A SELECTIVE COPY OPERATION IS SPECIFIED, BUT IS PHYSICALLY INDEPEN-
* DENT AND DISTINCT FROM THE SETAB FOR AN EXCLUSIVE COPY OPERATION.
* THERE IS NO SETAB FOR A FULL COPY OPERATION, AND THE CTLTAB IN THIS
* CASE IS CONSTRUCTED SIMILARLY TO WHEN AN EXCLUSIVE COPY IS SPECIFIED.
* SINCE THE SETAB AND CTLTAB ARE ONE AND THE SAME FOR A SEL. COPY, THIS
*  DESCRIPTION WILL ASSUME THAT A SELECTIVE COPY IS BEING DONE, FOR THE
*  PURPOSE OF SETTING UP THE TABLE INITIALLY.)....
         SPACE 2
*        INITIAL TABLE, FOLLOWING CCSCAN PROCESSING OF ''SELECT'' -
***********************************************************************
*SEFLAG1 *SEFLAG2 * NAME OF MEMBER TO BE SELECTED, OR, IF SPECIFIED,  *
*(DESCR. *(UNUSED)* NEWNAME.  IF NEWNAME WAS SPECIFIED, THE TABLE WILL*
* ABOVE) *        * CONTAIN 1 ENTRY FOR OLDNAME AND ANOTHER FOR NEW.  *
***********************************************************************
* 1 BYTE * 1 BYTE *----------------------8 BYTES----------------------*
         SPACE 2
* OLDNAME/NEWNAME PAIRS ARE NOW EXTRACTED FROM THE SETAB.  THEN THE
* CTLTAB IS SORTED ALPH. BY MBRNAME, AND A NEWNAME PTRTABLE SET UP.
* WHEN THIS HAS BEEN DONE, THE INPUT DATA SET'S DIRECTORY IS SEARCHED
* FOR MATCHING NAMES (THE NEWNAME ENTRIES IN THE TABLE ARE NOT USED FOR
* THIS COMPARISON).  WHEN A MATCHING MEMBERNAME IS FOUND, THE DIRECTORY
* ENTRY IS RETAINED IN CORE (IF SPACE PERMITS), OR IT IS SPILLED ONTO
* SYSUT3.  IN EITHER CASE, THE CORE ADDRESS OR THE TTR+INDICATOR ARE
* PUT INTO THE CTLTAB, OVERLAYING THE HIGH-ORDER 4 BYTES OF 'OLDNAME'.
* THE MEMBER-TTR IS EXTRACTED FROM THE DIRECTORY ENTRY, AND OVERLAYS
* THE LOW-ORDER 4 BYTES OF 'OLDNAME' IN THE CTLTAB.  SEBIT5 IS TURNED
* ON.  IF THIS IS AN ALIAS ENTRY, SEFLAG2 IS SET AS FOLLOWS -
ALIAS    EQU   X'80'         TO TEST FOR AND SET ALIAS DIRECTORY ENTRY
         SPACE 2
*        CTLTAB ENTRY FOR A ''FOUND'' MEMBER -
         SPACE 2
***********************************************************************
*SEFLAG1 *SEFLAG2 * INDIC. * ADDR OF THE IN-* ZEROES *   MEMBER TTR   *
*        *        *  BYTE  * PUT DIR. ENTRY *        *                *
***********************************************************************
*-1 BYTE-*-1 BYTE-*-1 BYTE-*-----3 BYTES----*-1 BYTE-*-----3 BYTES----*
         SPACE 2
* THE INDICATOR BYTE IS ZEROES IF THE DIRECTORY ENTRY IS IN CORE, OR IT
* IS HEX '01' IF THE DIRECTORY ENTRY WAS SPILLED TO SYSUT3.
* NOTE THAT CTLTAB ENTRIES FOR A ''NEWNAME'' ARE NOT OVERLAYED OR AL-
* TERED AT ANY TIME.  ONCE THE ENTIRE INPUT DIRECTORY HAS BEEN SCANNED,
* (OR AT LEAST ALL ENTRIES FOR MEMBERS TO BE COPIED FROM THIS INPUT
* DATA SET HAVE BEEN BUILT), THE OUTPUT DATA SET DIRECTORY IS READ.
* MEMBERNAMES OF MEMBERS CURRENTLY IN THE OUTPUT DATA SET ARE COMPARED
* AGAINST MEMBERNAMES OF MEMBERS REFERENCED IN THE CTLTAB FOR THE CUR-
* RENT INPUT DATA SET, UNLESS THE LATTER WERE RENAMED.  IF THE INPUT
* MEMBER IS RENAMED, THEN THE NEWNAME IS COMPARED AGAINST THE OUTPUT.
* IF DUPLICATE NAMES ARE ENCOUNTERED, AND IF THE REPLACE OPTION WAS NOT
* SPECIFIED ON EITHER THE INDD LEVEL OR THE MEMBERNAME LEVEL, THEN THE
* DONT-COPY BIT (SEBIT4) IS SET IN THE FLAG BYTE OF THE APPROPRIATE
* CTLTAB ENTRY, AND THE INDIC. BYTE (BYTE 3) OF THIS ENTRY IS SET TO
* HEX 'FF'.
* THINK OF THE LOW-ORDER 8-BYTES OF EACH ''FOUND'' CTLTAB ENTRY AS BE-
* ING DIVIDED INTO A LEFT HALF (INDIC. + DIR. ENTRY ADDR.) AND A RIGHT
* HALF (ZEROES + MBR. TTR).  THE LEFT HALF NOW REPRESENTS DIRECTORY
* ENTRIES FOUND IN THE CURRENT INPUT DATA SET, AND IS IN ALPHAMERIC
* SEQUENCE.
         EJECT
* THE NEXT STEP IN CTLTAB PROCESSING CAUSES THE ''FOUND'' ENTRIES TO BE
* MANIPULATED, WITH THE RESULT BEING THAT THE LEFT HALF CONTAINS (IN-
* DIC + ADDR OF DIR. ENTRY) IN SEQUENCE BY MEMBER TTR, AND THE RIGHT
* HALF CONTAINS THIS SAME INFORMATION (INDIC. + ADDR OF DIR. ENTRY) IN
* ALPHAMERIC SEQUENCE, OVERLAYING THE ACTUAL MEMBER TTR.  ANOTHER RE-
* SULT OF THIS MANIPULATION OF THE CTLTAB IS THAT MAIN-MEMBER ENTRIES
* PRECEDE THE CORRESPONDING ALIAS ENTRIES.  NOTE THAT THE BITS SET IN
* SEFLAG1 ARE NOW ONLY USEFUL FOR THE ''RIGHT HALF'' OF THE CTLTAB,
* SINCE THEY ARE NOT MANIPULATED AND THUS REMAIN IN THE ORIGINAL (AL-
* PHABETIC) SEQUENCE.
         SPACE 2
*        CTLTAB ENTRY FOR A FOUND MEMBER FOLLOWING TTR SORT -
         SPACE 2
***********************************************************************
*SEFLAG1 *SEFLAG2 * INDIC. * ADDR OF IN. DE * INDIC. * ADDR OF IN. DE *
*        *        *  BYTE  *                *  BYTE  *                *
*        *        *IN SEQ BY MEMBER TTR     *IN SEQ ALPHAMERICALLY    *
***********************************************************************
* 1 BYTE-*-1 BYTE-*-1 BYTE-*-----3 BYTES----*-1 BYTE-*-----3 BYTES----*
         SPACE 2
* AT THIS POINT, THERE IS NO LOGICAL RELATIONSHIP BETWEEN THE LEFT AND
* RIGHT HALVES OF THE RELEVANT CTLTAB ENTRIES.  BOTH HALVES CONTAIN THE
* SAME INFORMATION, BUT IT IS IN TWO DIFFERENT SEQUENCES.  NOTE THAT,
* IF A MEMBER BEING LOOKED FOR IS NOT ''FOUND'', ITS CTLTAB ENTRY RE-
* MAINS UNALTERED - THE NAME IS STILL UN-OVERLAYED.
* FROM THIS POINT ON, THOSE MEMBERS OF THE INPUT DATA SET WHOSE DIREC-
* TORY ENTRIES ARE REFERENCED IN THE CTLTAB WILL BE COPIED, PROVIDED
* THAT THEY ARE ''FOUND'' AND NOT FLAGGED AS ''DONT-COPY''.  THEN THE
* DIRECTORY ENTRIES WILL BE MERGED.  AS THE MERGE IS PERFORMED, WHEN AN
* INPUT DE IS MERGED, IF THIS IS A SELECTIVE COPY, THE DONT-COPY BIT
* (SEBIT4) IS TURNED ON, THUS ALLOWING FOR THESE ENTRIES IN THE CTLTAB
* TO BE IGNORED IN SUBSEQUENT PASSES THROUGH THE SAME TABLE FOR THE EN-
* SUING INPUT DATA SETS.
JSTCPD   EQU   X'10'              IF ON IN THE 2ND BYTE OF A CTLTAB EN-
*                                 TRY (SEFLAG2), THERE IS A NAME (CON-
*                                 TAINED IN THE 3RD THROUGH 10TH BYTES
*                                 OF THIS ENTRY) OF AN INPUT MEMBER
*                                 WHICH HAS BEEN SUCCESSFULLY COPIED.
*                                 THIS MEMBERNAME WILL BE PRINTED BY
*                                 THE TERMINATION MODULE (IEBVTM) UNDER
*                                 APPROPRIATE CONDITIONS, AT WHICH TIME
*                                 THIS BIT WILL BE TURNED OFF.
***********************************************************************
         EJECT
*XXXXXXXXXX    EVERY CONSTANT BETW. HERE AND NXT X'S MUST BE CONTIGUOUS
* ALL CONSTANTS BETWEEN X'S ARE SET TO ZERO FOR EVERY INPUT DATA SET.
* THE NAMES OF THE CONSTANTS WHICH ARE INCLUDED IN THIS CONTIG. AREA -
* CDCT, FCT, NNTCT, OLDTTR, FLG5
* ICPT,SVLSTO,SVFSTO,FLG2,FLG6,SWITCH1,UTTRFLAG,OBCT
         SPACE 2
         DS    0F                 ALIGNMENT
ICPT     DC    F'0'          ADDR OF LAST CTLTAB ENTRY WHICH REFERENCED
*                            AN IN-CORE INPUT D.E.
SVFSTO   DC    AL4(0)        ADDR OF 1ST OUT DIR BLOCK SAVED IN CORE
SVLSTO   DC    AL4(0)        ADDR OF LAST OUT DIR BLOCK SAVED IN CORE
*
CDCT     DC    HL2'0'        COUNT OF NBR OF ENTRIES IN CTLTAB WHICH
*                            REFERENCE INPUT D-E'S WHICH WERE RETAINED
*                            IN CORE (IE, NOT ''SPILLED'')
FCT      DC    HL2'0'        COUNT OF THE NUMBER OF 'FOUND' MEMBERS
*                            WHICH ARE TO BE COPIED FROM THE CURRENT
*                            INPUT DATA SET
NNTCT    DC    HL2'0'        COUNTER USED FOR INDEXING THROUGH NEWNAME
*                            POINTER TABLE (NNPTRTAB)
OLDTTR   DS    XL3           IN TTR OF MOST RECENT MBR ACTUALLY COPIED
*
FLG2     DC    X'00'              FLAGS/SWITCHES
TRKS2    EQU   X'80'              ON = 2 TRACK-LENGTH BFRS ALLOCATED
MBUSED   EQU   X'40'              ON = MINIMUM I/O BFR-SIZE NOW ALLOC
RDEOF    EQU   X'20'              ON = EOF OCCURRED ON DS BEING READ
FSTWRT   EQU   X'10'              ON = 1ST BFR-FULL OF DATA FOR CURRENT
*                                 MEMBER HAS BEEN COPIED BY IEBMNM RTNE
FMTSPL   EQU   X'08'         ON = NEED TO WRT CT-KEY-DATA IF TO UT3
NBRK     EQU   X'04'              ON=SIZE PARM GIVEN IN K        X010XX
*              LOW ORDER 2 BITS NOT USED - RESERVED              X010XX
         SPACE 1
FLG5     DC    XL1'0'        SWITCHES / FLAGS
DEFSW    EQU   X'80'         ON = IEBMGD SUBRTNE INITIALIZATION SWITCH
OSCAN    EQU   X'40'         ON = SCAN OF OUT. D.E'S HAS BEEN INITIAL-
*                                 IZED FOR CURRENT INPUT D.S.
NSP      EQU   X'20'         ON = NO (MORE) SPACE TO KEEP ANY OUT. D.E.
OSW1     EQU   X'10'         ON = PRE-SCAN OF OUT. DIR. IS BEING DONE
*              LO ORDER 4 BITS NOT USED - RESERVED
*
         SPACE 1
FLG6     DC    X'0'          SWITCH
OIC      EQU   X'80'         ON = ALL ODE BLOCKS ARE RETAINED IN CORE
ODIC     EQU   X'40'         ON = SOME, BUT NOT ALL, ODE'S RETAINED
CPYSW    EQU   X'20'         ON = IEBMGI CALLED DURING CTLTAB TTR PROC.
SPL      EQU   X'10'         ON = SPILL OF INPUT D.E'S TO UT3 OCCURRED
*              LO ORDER 4 BITS NOT USED - RESERVED
*
SWITCH1  DC    X'00'         SWITCHES
TIME1    EQU   X'80'         ON = IEBMGI HAS INITIALIZED ITSELF FOR THE
*                                 CURRENT PHASE OF PROCESSING
ENTERNN  EQU   X'40'         ON = NEED TO PUT NEWNAME INTO DIR ENTRY
MGINODE  EQU   X'20'         ON = AN I/O ERROR READING FROM SYSUT3 HAS
*                                 CAUSED THE REQUESTED IDE NOT TO BE
*                                 READ INTO CORE CORRECTLY - IEBMGI HAS
*                                 NO IDE TO PASS BACK TO THE CALLER
UNLDTM   EQU   X'10'         FIRST TIME THROUGH IEBDSU           X010XX
*              LOW ORDER 4 BITS NOT USED-RESERVED                X010XX
*
UTTRFLAG DC    XL1'00'                 FLAG FIELD FOR USER AND NOTE-
*                                 LIST PROCESSING BY IEBVWS
* HIGH ORDER THREE BITS ARE USED INTERNALLY BY IEBVWS FOR NOTE-LIST AND
*        USER TTR PROCESSING
NOTELIST EQU   X'10'         ON = NOTELIST FOUND BY IEBVWS
*              LO ORDER 4 BITS NOT USED - RESERVED
*
*
OBCT     DC    HL2'0'        ACTUAL NO OUTPUT BLOCKS SAVED IN CORE
*
*XXXXXXXXXX ALL CONSTANTS BETW. HERE AND PREV X'S MUST BE CONTIGUOUS
         EJECT
***********************************************************************
BCB      DS    4F                 BUFFER CONTROL BLOCK
* THERE WILL ALWAYS BE AT LEAST 1 PR OF BUFFERS ALLOCATED - IF CORE
* SPACE EQUAL TO OR GREATER THAN THE SIZE OF THE 1ST PR OF BFRS IS
* AVAILABLE FOR THE COPY PHASE, THE 2ND BFR SPACE WILL BE ALLOCATED TO
* USE ALL OF THIS EXTRA CORE
* THE BCB IS RE-SET WHENEVER ANOTHER INPUT DATASET IS TO BE PROCESSED.
         ORG   BCB
FLG1     DC    X'0'          FLAG BYTE FOR BCB
P2FLG1   EQU   X'80'         ON = 2 DISCONTIGUOUS BUFFERS ARE ALLOCATED
IN2ND    EQU   X'40'         ON = PROCESSING BEING DONE WITHIN THE 2ND
*                                 BUFFER
STOPEND1 EQU   X'20'         ON = READ (IEBDRD) OR PREPARE TO WRITE
*                                 (IEBVWS) ONLY ONE BUFFER
*              LO ORDER 5 BITS NOT USED - RESERVED
BEGFST1  DC    AL3(0)        ADDR OF BEGINNING OF 1ST BUFFER AREA
ENDFST1  DC    AL4(0)        ADDR OF END OF 1ST BUFFER AREA
BEGFST2  DC    AL4(0)        ADDR OF BEGINNING OF 2ND BUFFER AREA
END2ND2  DC    AL4(0)        ADDR OF END OF 2ND BUFFER AREA
* END OF BUFFER CONTROL BLOCK (BCB)
***********************************************************************
*             3 FLAGS BELOW ARE IN FLAG FIELD BUILT AHEAD OF RECORDS IN
*         I/O BUFFER.  READ PCI SETS 'ENDPROC' AND 'LASTREC' AND WRITE
*         SETUP SETS 'WRTOVR'- FLAGS USED BY WRITE AND WRITE/PCI.
*                                                                     *
ENDPROC  EQU   X'80'         IN I/O BFR, THIS BIT ON IN FLGS =
*                            THIS IS THE LAST RECORD IN ANY BUFFER
LASTREC  EQU   X'40'         IN I/O BFR, THIS BIT ON IN FLGS =
*                            THIS IS THE LAST RECORD IN CURRENT BUFFER
WRTOVR   EQU   X'20'         IN I/O BFR, THIS BIT ON IN FLGS =
*                            THIS RECORD IS A SEGMENT (NOT THE LAST
*                            SEGMENT) OF AN OVERFLOW RECORD
         SPACE 2
MAXBUF   DC    F'0'          MAX BUFFER LENGTH SPECIFIED         X010XX
BUFSIZ   DC    F'0'          SIZE IN BYTES OF 1 IO BFR(BEG2ND1-BEGFST1)
MINSIZ   DC    F'0'               LENGTH OF MINIMUM SIZE OF I/O BFR-PR
MAXBLK   DC    F'0'               LENGTH OF 1/2 OF MINSIZ
READNEXT DC    AL4(0)        SET WHEN READ CALLED - TELLS WHERE TO READ
WRTNEXT  DC    AL4(0)             POINTER TO WHERE START WRITING FROM
LASTMREC DS    F POINTER TO LAST EOF IN A BUFFER NOT YET WRITTEN
EOREAD   DC    A(0)  POINTER TO END OF LAST RECORD READ-COMPRESS
         EJECT
         DS    0F
ADWANT   DC    X'00002000'   LENGTH OF MINIMUM USABLE AMT OF COREX010XX
*                            CORE FOR VARIABLE                   A45170
*                            CONDITIONAL GETMAIN                 A45170
ADWANTHI DC    X'00100000'   LENGTH OF MAXIMUM USABLE AMOUNT OF CORE
*                            (THIS IS AN ARBITRARY LIMIT)
ADGOT    DC    F'0'          GETMAIN PUTS ADDR OF CORE HERE
LENGOT   DC    F'0'          GETMAIN PUTS LENGTH OF CORE HERE
*                            ADGOT AND LENGOT ARE USED TO FREE CORE AT
*                            TERMINATION OF PROGRAM
FREEAMT  DC    X'00002000'   LENGTH OF CORE RELEASED FOR USE BY YA01689
*               USE BY SYSTEM (OPEN, CLOSE, EOV, SYNADAF, ETC)   A45170
*                   (THIS MUST BE A MULTIPLE OF 8)               A45170
FREEAMT2 DC    X'00000C00'   CORE FREED FOR TAPE WORKAREA        X010XX
* NOTE - VALUE OF 'FREEAMT' MAY BE CHANGED IF IT IS EITHER NOT ENOUGH
*        OR TOO MUCH CORE TO RELINQUISH FOR SYSTEM UTILIZATION.  IN ANY
*        CASE, THE VALUE OF THIS CONSTANT SHOULD BE CONSIDERED WITH RE-
*        LATION TO THE MINIMUM AMOUNT OF CORE SPECIFIED IN THE CONSTANT
*        NAMED 'ADWANT'.
ACOPYR1  DC    A(0)          ADDRESS OF COPYR1 HEADER            X010XX
*                            RECORD BUFFER                       X010XX
ACOPYR2  DC    A(0)          ADDRESS OF COPYR2 HEADER            X010XX
*                            RECORD BUFFER                       X010XX
ADNL     DC    F'0'          ADDR OF NOTE-LIST AREA
ADWK     DC    F'0'          ADDR OF WORK-AREA
WKLEN    EQU   128           LENGTH OF WKAREA - ALSO USED FOR SYSUT3 IO
HDRLEN   DC    H'344'        LENGTH OF HEADER RECORDS            X010XX
INBEGIN  DC    F'0'          ADDRESS OF START OF INDD TABLE
NXTINDS  DS    F             ADDR OF INDD TABLE ENTRY FOR THE CURRENT
*                            INPUT DATA SET'S DDNAME (IN THE CURRENT
*                            INDD GROUP)
REPLACOP EQU   SEBIT3        IF ON IN HI-ORDER BYTE OF AN INDD-TABLE
*                            ENTRY, THE REPLACE OPTION WAS SPECIFIED
*                            FOR THIS INPUT DATA SET.
SEBEGIN  DC    AL4(0)        ADDR OF BEGINNING OF SETAB
SESTOP   DC    F'0'          IF SELECTIVE OR EXCLUSIVE COPY, THIS IS
*                            THE ADDRESS (+1) OF THE END OF THE SETAB.
*                            IF FULL COPY, ADDR (+1) OF END OF INDDTAB.
ADNNPTRT DS    AL4           ADDR OF NEWNAME POINTER TABLE
NNTABAD  DC    F'0'               ADDR OF CURRENT NNPTRTAB ENTRY + 4
LOCOR    DC    F'0'          ADDR OF LOWEST CURRENTLY AVAILABLE
*                            ''FREE'' CORE BYTE
SVLO     DC    F'0'               AREA FOR RE-INITIALIZING 'LOCOR'
HICOR    DC    F'0'          ADDR OF HIGHEST CURRENTLY AVAILABLE
*                            ''FREE'' CORE BYTE (+1)
SVHI     DC    F'0'               ADDR OF HIGHEST ACQUIRED CORE (+1)
BUMP     DS    AL4           ADDR WHERE 'NEXT' ENTRY IN CTLTAB SHOULD
*                            BE PLACED
CTAD     DS    AL4           ADDR OF CONTROL TABLE - IF SELECTIVE COPY,
*                            THIS WILL BE SAME AS SEBEGIN.
TABAD    DS    AL4           SET TO ADDR OF NEXT CTLTAB ENTRY BY IEBMGI
ENCT     DC    HL2'0'        COUNT OF NBR OF ENTRIES IN CTLTAB (TOTAL)
*              IF THIS IS A SELECTIVE COPY, THIS COUNT WILL BE INI-
*              TIALIZED TO THE NUMBER OF ENTRIES IN SETAB.
COUNT    DC    HL2'0'        COUNT OF NBR OF ENTRIES IN SETAB IF SEL OR
*                            EXCL COPY, OR ZERO IF FULL COPY.
INDDCT   DC    AL2(0)        COUNT OF NO. INDD'S IN CURRENT STEP
NNCT1    DC    AL2(0)        NBR OF NEWNAMES SPECIFIED IN CURRENT SE-
*                            LECTIVE COPY STEP (IF NOT SEL CPY, = 0)
UFCT     DC    HL2'0'        COUNT OF NBR OF SELECTED MEMBERS YET TO BE
*                            FOUND ON ANY INPUT D.S. IN CURR INDD GROUP
DIRBCNT  DC    HL2'0'        MAX NBR BLOCKS WHICH OUT DIR CAN CONTAIN
NDBTR    DC    X'00'    COUNT OF MAX NUMBER OF DIR BLOCKS        A36049
*                      PER TRACK ALLOCATED ON THE OUTPUT DS      A36049
DBCNT    DC    H'0'          COUNT OF ACTUAL NUMBER OF BLOCKS MERGED
*                            TO THE OUTPUT DATA SET DIRECTORY
TRBALBUF DC    H'0'          AREA FOR USE IN CALCULATING TRACK BALANCE
         EJECT
ZROS     DC    F'0'          CONSTANT OF ZEROES
         DS    0D
DBKEY    DC    DL8'0'        KEY FROM CURR DIR. BLOCK IN BFR
OUTDAD1  DC    DL8'0'        DASD ADDR WHERE TO GET 1ST UN-RETAINED
*                            OUTPUT DIRECTORY BLOCK.  THIS ADDR IS ONLY
*                            VALID WHEN 'ODIC' BIT IS ON IN FLG6
OUTNAME  DC    CL8' '        NAME OF CURRENT OUTPUT DD
         SPACE 2
CCIMAGE  DS    10D                     SCAN CONTROL CARD BUFFER
         SPACE 2
WKA1     DC    10F'0'        VOLATILE WORK AREA FOR GENERAL USE
*
*****   PLEASE NOTE---    IEBSCN IS NOT THE ONLY MODULE WHICH USES
**                WKA1 FOR TEMPORARY WORK SPACE.
*                 HOWEVER, THE FOLLOWING 4 EQUATES ARE USED ONLY BY
*                 IEBSCN -
*
SARG     EQU   WKA1          TEMPORARY WORK AREA USED BY IEBSCN (SCAN)
*                            TO HOLD SEARCH ARGUMENT 8 BYTES LONG
SAVEPAPR EQU   WKA1+8        TEMPORARY WORK AREA USED BY IEBSCN (SCAN)
*                            TO HOLD PARTIAL PARAMETERS IF CONTROL CARD
*                            IS CONTINUED, 8 BYTES LONG.
LEFTPCNT EQU   WKA1+16       TEMPORARY WORK AREA USED BY IEBSCN (SCAN)
*                            TO HOLD COUNT OF LEFT PARENTHESIS SCANNED.
RGHTPCNT EQU   WKA1+18       TEMPORARY WORK AREA USED BY IEBSCN (SCAN)
*                            TO HOLD COUNT OF RIGHT PARENTHESIS SCANNED
*                            BOTH LEFTPCNT AND RGHTPCNT 2 BYTES EACH
*                            AND MUST BE CONTIGUOUS STORAGE.
         SPACE 1
ALO      DC    F'0'               WORKAREA FOR IEBMKO SUBROUTINE
NMAD     DC    F'0'          ADDRESS OF NAME IN THE SETAB TO BE COM-
*                            PARED AGAINST AN INPUT DIRECTORY ENTRY
DEPTR    DS    AL4           ADDR OF ''NEXT'' DIR. ENTRY IN BUFFER
*                            (SET BY IEBMGD SUBROUTINE)
BLKAD    DS    AL4           ADDR OF CURRENT DIRECTORY BLOCK IN BFR
IDEAD    DS    AL4           AREA INTO WHICH IEBMGI SUBR. PLACES THE
*                            CORE ADDRESS OF THE ''NEXT'' INPUT D.E.
CSTOREG  DC    3F'0'         SAVE AREA USED BY IEBSCN
RESET1   DS    4F                 AREA FROM WHICH R11-R14 ARE RESTORED
*                            BY IEBVTM WHEN IT IS TO EXIT TO IEBSCN
         SPACE 2
*        REGISTER SAVE AREAS
SV1      DC    18F'0'        REGISTER SAVE AREA FOR MAINFLOW
SV2      DC    18F'0'        REGISTER SAVE AREA FOR NON-RESIDENT RTNES
SV3      DC    18F'0'        REGISTER SAVE AREA FOR RESIDENT SUBRTNES
SV4      DC    18F'0'        REGISTER SAVE AREA FOR RESIDENT SUBRTNES
SV5      DC    18F'0'        SAVE AREA FOR IEBDV1
SV6      DC    18F'0'             SAVE AREA USED BY IEBVDM
SIOSAVE  DC    6F'0'         SAVEAREA FOR SIO APPENDAGE          X010XX
PCISAVE  DC    9F'0'         SAVEAREA FOR PCI APPENDAGE          X010XX
MCAMOD   DC    10F'0'             IEBMCA CHANGE AREA
* MCAMOD IS A PATCH-AREA FOR USE IN MAINTENANCE OF THIS PROGRAM
         EJECT
VIEBDV0  DC    V(IEBDV0)     ADDR OF ENTRY POINT (IN IEBDV1) TO OPEN
*                            AND VALIDATE SYSIN AND SYSPRINT DCB'S
VIEBDV1  DC    V(IEBDV1) ADDR VALIDATION ROUTINE OUTDCB AND FIRST INDD
VIEBDV2  DC    V(IEBDV2) ADDR VALIDATION ROUTINE OPEN/VALIDATE INDD
VIEBDV3  DC    V(IEBDV3) ADDR VALIDATION ROUTINE OPEN/VALIDATE SYSUT3
VIEBDV4  DC    V(IEBDV4) ADDR VALIDATION ROUTINE OPEN/VALIDATE SYSUT4
VIEBSCN  DC    V(IEBSCN)           ADDR OF CONTROL CARD SCAN ROUTINE
VIEBSEF  DC    V(IEBSCF) ENTRY POINT IN SCAN FOR ENTRY FROM SYSIN EODAD
*  HANDLER IN MAINFLOW IEBEOF
VIEBEOF  DC    V(IEBDSCEF)   EODAD HANDLER FOR SYSIN EOF
VIEBCER  DC    V(IEBDSCCE)   SYNAD ROUTINE FOR READER ERROR
VIEBVMS  DC    V(IEBVMS)           ADDR OF MESSAGE WRITING ROUTINE
VIEBPER  DC    V(IEBDSCPE)   SYNAD ROUTINE FOR PRINTER ERROR
VIEBMNI  DC    V(IEBDSCNI)   ADDR OF ENTRY POINT IN MAIN PGM - TO START
*                            PROCESSING THE 'NEXT' INPUT DATA SET IN
*                            THE CURRENT 'INDD-GROUP'
VIEBSCX  DC    V(IEBDSCSX)   E.P. IN ROOT SEGMENT TO GO FROM IEBVTM TO
*                                 IEBSCN
VIEBGME  DC    V(IEBDSCME)   ADDR OF E.P. IN ROOT SEGMENT - FOR USE
*                                 WHEN IT IS NECESSARY TO RE-ISSUE THE
*                                 GETMAIN AND RE-ALLOCATE CORE
VIEBM04  DC    V(IEBDSCM4)   E.P. IN ROOT SEGMENT TO GO FROM IEBVDM TO
*                                 IEBDV4
VIEBRTM  DC    V(IEBVDRTM)   E.P. IN IEBVDM TO RETURN FROM IEBDV4
VIEBVCT  DC    V(IEBVCT)     ADDR OF SETAB/CTLTAB/NNTAB ALPH SORT RTNE
VIEBVTT  DC    V(IEBVTT)     ADDR OF TTR SORT RTNE FOR CTLTAB
VIEBMGD  DC    V(IEBDSCGD)   ROUTINE TO FIND NEXT DIR ENTRY IN BUFFER
VIEBMBT  DC    V(IEBDSCBT)   ROUTINE TO BUILD CTLTAB AND SPILL TO UT3
VIEBMGI  DC    V(IEBDSCGI)   ROUTINE TO LOCATE A DIR ENTRY VIA CTLTAB
VIEBMKO  DC    V(IEBDSCKO)   ROUTINE TO RETAIN OUTPUT DIR BLOCKS
VIEBDRD  DC    V(IEBDRD)           ADDR OF READ ROUTINE
VIEBVWS  DC    V(IEBWSU)     ADDR. OF RTN TO PREPARE RECORDS
*                            TO BE WRITTEN - PREVIOUSLY NAMED IEBVWS
VTTOCC   DC    V(IEBDSTOC)   ROUTINE TO CONVERT TTR TO MBBCCHHR
VCCOTT   DC    V(IEBDSCOT)   ROUTINE TO CONVERT MBBCCHHR TO TTR
VIEBDWR  DC    V(IEBDWR)           ADDR OF WRITE ROUTINE
VIEBIOE  DC    V(IEBIOE)          ADDR OF RTNE TO SET UP MSG FOR I/O
*                                 ERROR, VIA SYNADAF
VIEBMNM  DC    V(IEBDSCNM)   ROUTINE TO CONTROL MBR COPYING WHEN NOT
*                            COMPRESSING, DEBLOCKING, OR REBLOCKING
VIEBDRB  DC    V(IEBDRB)           ADDR OF REBLOCK/DEBLOCK RTNE
VIEBMCM  DC    V(IEBMCM)          ADDR OF COMPRESS-IN-PLACE ROUTINE
VIEBVDM  DC    V(IEBVDM)           ADDR OF DIRECTORY MERGE RTNE
VIEBVTM  DC    V(IEBVTM)          ADDR OF TERMINATION ROUTINE
VIEBDSRE DC    V(IEBDSRE)    ROUTINE TO TRANSFER CONTROL TO      A33288
*                              IEBIOE FROM IEBDRD                A33288
VIEBDSWE DC    V(IEBDSWE)    ROUTINE TO TRANSFER CONTROL TO      A33288
*                              IEBIOE FROM IEBDWR                A33288
VIEBDRDR DC    V(IEBDRDR)    RETURN POINT IN IEBDRD FROM IEBIOE  A33288
VIEBDWRR DC    V(IEBDWRR)    RETURN POINT IN IEBDWR FROM IEBIOE  A33288
VIEBBAM  DC    V(IEBBAM)          BUFFER ALLOCATION ROUTINE      S20201
VLDUL1   DC    V(IEBLDUL1)   LOAD INITIALIZATION ROUTINE         X010XX
VLDUL2   DC    V(IEBLDUL2)   UNLOAD INITIALIZATION ROUTINE       X010XX
VIEBIOE2 DC    V(IEBIOE2)    LOAD DCB EODAD ROUTINE              X010XX
VIEBIOE3 DC    V(IEBIOE3)    LOAD DCB SYNAD ROUTINE              X010XX
VIEBIOE4 DC    V(IEBIOE4)    UNLOAD DCB SYNAD ROUTINE            X010XX
VDSFRC   DC    V(IEBDSFRC)   ENTRYPOINT IN IEBDSCPY TO ISSUE     X010XX
*                            FREEMAIN FOR LOAD/UNLOAD DATAMANAG. X010XX
*                            MODULES                             X010XX
VDSIOE2  DC    V(IEBDSOE2)   EODAD ENTRY POINT IN MAINFLOW       X010XX
VRSAM    DC    V(IEBRSAM)    LOAD DIRECTORY ROUTINE              X010XX
VRSAM1   DC    V(IEBRSAM1)   LOAD MEMBER DATA  READ ROUTINE      X010XX
VWSAM    DC    V(IEBWSAM)    WRITE MEMBER AND NOTELIST           X010XX
VWSAM1   DC    V(IEBWSAM1)   WRITE HEADER RECORD                 X010XX
VIEBDSU  DC    V(IEBDSU)     UNLOAD DIRECTORY BUILD ROUTINE      X010XX
VIEBDSU1 DC    V(IEBDSU1)    UNLOAD CTLTAB MODIFY ROUTINE        X010XX
VIEBCNVT DC    V(IEBCNVT)    IEBCOPY TTR-TO-MBBCCHHR             X010XX
*                              CONVERT ROUTINE                   X010XX
VIEBCNV1 DC    V(IEBCNVT1)    IEBCOPY CONVERT BACK ROUTINE       X010XX
         EJECT
         DS    0F
LIST1    DC    VL4(IEBDVJCB)  JFCB EXIT
JFCBECON EQU   X'87'  JFCB EXIT+LAST ENTRY CODE
LIST2    DC    AL4(0) ADDRESS OF EXLST HANDLER FILLED IN BY IEBDV0
LIST2SET EQU   X'85' DCB EXIT LIST FOR SYSIN/SYSPRINT CODE, LAST ENTRY
LIST4    DC    AL4(0)                  DCB EXIT ADDRESS FILLED IN BY
*                                 IEBDV1 ROUTINE
         DC    VL4(IEBDVJCB)  JFCB EXIT
LIST5    DC    X'85'         THIS IS THE DCB EXIT LIST FOR       X010XX
         DC    AL3(0)           THE LOAD DCB                     X010XX
LIST6    DC    X'85'         THIS IS THE DCB EXIT LIST FOR       X010XX
         DC    AL3(0)           THE UNLOAD DCB                   X010XX
         SPACE 2
WRPCICNT DS    F COUNT OF PCI'S TAKEN- USED BY READ BACK CHECK
         SPACE 2
WRPTR1   DC    A(WRCW11)  CURRENT WRITE CCW ADDRESS
WRPTR2   DC    A(WRCW21) NEXT WRITE CCW ADDRESS
RDPTR1   DC    A(RDCW11)  CURRENT READ CCW ADDRESS
RDPTR2   DC    A(RDCW21)  NEXT READ CCW ADDRESS
RDCKPTR1 DC    A(RDCKCW11)  CURRENT READ BACK CHECK CCW ADDRESS
RDCKPTR2 DC    A(RDCKCW21)  NEXT READ BACK CHECK CCW ADDRESS
         SPACE 2
* FOLLOWING FIELDS ARE USED FOR RESETTING APPROPRIATE DCB'S, ETC.,
* UPON THE OCCURRENCE OF AN ERROR CONDITION (INCLUDING I/O ERRORS).
OUTPTTR  DS    2F TTRNTB OF LAST VALID EOF ON OUTPUT DATA SET
SYS4TTR  DS    2F TTRNTB OF LAST VALID EOF ON SYSUT4 DATA SET ORIGINAL
SYS3TTR  DS    2F TTRNTB OF LAST VALID EOF ON SYSUT3 DATA SET ORIGINAL
         SPACE 1
OUTDS1   DS    2F TTRNTB - TTRN NEXT RECORD TO BE WRITTEN AND CURRENT
*   TRACK BALANCE OF OUTPUT DATA SET. ORIGINALLY FROM DS1STAR FIELD
*   OF DSCB.
UT3DS1   DS    2F TTRNTB- TTRN NEXT RECORD TO BE WRITTEN TO SYSUT3 AND
*  TRACK BALANCE FOR CURRENT TRACK.ORIGINALLY FROM DS1STAR FIELD DSCB
         SPACE 1
UT4DS1   DS    2F TTRNTB- TTRN NEXT RECORD TO BE WRITTEN TO SYSUT4 AND
*  TRACK BALANCE FOR CURRENT TRACK.ORIGINALLY FROM DS1STAR FIELD DSCB
*   OUTPUT DATA SET.
OUTFDAD  DC    2F'0'              MBBCCHHR FOR RE-INITIALIZING OUTDCB
UT3FDAD  DC    2F'0'              MBBCCHHR FOR RE-INITIALIZING UT3DCB
UT4FDAD  DC    2F'0'              MBBCCHHR FOR RE-INITIALIZING UT4DCB
***********************************************************************
***** NOTE - THE FOLLOWING SIX FIELDS MUST BE KEPT CONTIGUOUS WITHIN
*            THE COMMUNICATION AREA
ERPLMFD  DC    2F'0'              AREA USED BY IEBVTM PROCESSING (ER-
*                                 ROR CONDITIONS).  CONTAINS MBBCCHHR
*                                 OF THE LAST SUCCESSFULLY WRITTEN DATA
*                                 RECORD, WHEN THE OUTPUT DIRECTORY WAS
*                                 WRITTEN TO THE OUTPUT DATA SET.  THIS
*                                 AREA IS INITIALLY SET UP BY IEBDV1,
*                                 AND SUBSEQUENTLY UPDATED WHENEVER THE
*                                 MERGED DIRECTORY IS WRITTEN TO THE
*                                 OUTPUT DATA SET BY IEBVDM.  THIS
*                                 FIELD IS NOT UPDATED WHEN THE DIREC-
*                                 TORY IS WRITTEN TO SYSUT4.
ERPLMFD4 DC    2F'0'              AREA USED BY IEBVTM PROCESSING (ER-
*                                 ROR CONDITIONS).  CONTAINS MBBCCHHR
*                                 OF THE LAST SUCCESSFULLY WRITTEN DATA
*                                 RECORD, WHEN THE OUTPUT DIRECTORY WAS
*                                 WRITTEN TO THE SYSUT4 DATA SET.  THIS
*                                 AREA IS SET BY IEBVDM WHENEVER THE
*                                 MERGED DIRECTORY IS WRITTEN TO THE
*                                 SYSUT4 DATA SET BY IEBVDM.  THIS
*                                 FIELD IS NOT UPDATED WHEN THE DIREC-
*                                 TORY IS WRITTEN TO THE OUTPUT DATASET
ERPTTR   DC    F'0'               CONTAINS TTRN OF LAST VALID DATA REC
*                                 ALL OTHER COMMENTS APPLYING TO 'ERP-
*                                 LMFD' ALSO APPLY HERE AND TO THE NEXT
*                                 AREA, NAMED 'ERPTB'.
ERPTTR4  DC    F'0'               CONTAINS TTRN OF LAST VALID DATA REC
*                                 ALL OTHER COMMENTS APPLYING TO 'ERPL-
*                                 MFD4' ALSO APPLY HERE AND TO THE
*                                 AREA NAMED 'ERPTB4'.
ERPTB    DS    CL2                TRACK BALANCE FOR LAST VALID DATA REC
*                                 SEE COMMENTS ABOVE.
ERPTB4   DS    CL2                TRACK BALANCE FOR LAST VALID DATA REC
*                                 SEE COMMENTS ABOVE.
         DS    0F
***********************************************************************
         SPACE 2
***********************************************************************
* THE CONSTANTS IN THIS GROUP ARE ALL SET UP BY THE I/O VALIDATION RTNE
OBLKSIZE DC    H'0'          OUTPUT BLOCKSIZE
IBLKSIZE DC    H'0'           INPUT BLOCKSIZE
OBLKFAC  DC    H'0'          OUTPUT BLOCKING FACTOR
IBLKFAC  DC    H'0'           INPUT BLOCKING FACTOR
OUTLRECL DC    H'0'          OUTPUT LOGICAL RECORD LENGTH
INLRECL  DC    H'0'           INPUT LOGICAL RECORD LENGTH
NOTRKS   DC    H'0'          NO. OF TRACKS ALLOCATED TO OUTPUT DS
OKEYLEN  DC    XL1'0'        OUTPUT KEYLENGTH
***********************************************************************
         SPACE 2
NXTTTR   DS    XL3           SET TO TTR OF EOF+1 OF OUT DIR BY IEBDRD,
*                            WHENEVER CTOUT BIT WAS ON.
CTTR     DS    XL3           AREA TO PUT MODIFIABLE NXTTTR FOR COMPRESS
INIDDCTS DC    H'0'               AREA TO SAVE INITIAL INDD COUNT
DDLIST   DC    CL8'SYSIN   '      LIST OF DDNAMES TO BE USED FOR INI-
         DC    CL8'SYSPRINT'      TIALIZING DCB DDNAMES (DEFAULTS)
         DC    CL8'SYSUT1  '
         DC    CL8'SYSUT2  '
         DC    CL8'SYSUT3  '
         DC    CL8'SYSUT4  '
OUTVOL   DS    CL6                     VOLID OF OUTPUT
OTDSNAME DS    CL44               AREA TO PRESERVE OUTPUT DSNAME
         EJECT
CARDCB   DCB   DDNAME=SYSIN,RECFM=FB,LRECL=80,DSORG=PS,EXLST=LIST2,    X
               MACRF=(GM)
*  SYNAD ADDRESS FILLED IN AT OPEN TIME BY VALIDATE- IEBDV0 ROUTINE
         EJECT
PRTDCB   DCB   DDNAME=SYSPRINT,DSORG=PS,MACRF=(PM),RECFM=FBA,          X
               LRECL=121,EXLST=LIST2
* SYNAD ADDRESS FILLED IN AT OPEN TIME BY VALIDATE- IEBDV0 ROUTINE
         EJECT
INDCB    DCB   DDNAME=SYSUT1,MACRF=(E),IOBAD=INIOB,DSORG=PO,           X
               EXLST=LIST1,PCIA=C8,DEVD=DA,SIOA=FT,PGFX=YES      X010XX
         EJECT
OUTDCB   DCB   DDNAME=SYSUT2,MACRF=(E),IOBAD=OUTIOB,DSORG=PO,          X
               EXLST=LIST1,PCIA=C8,DEVD=DA,SIOA=FT,PGFX=YES      X010XX
         EJECT
LOADDCB  DCB   DSORG=PS,DDNAME=SYSUT1,EXLST=LIST5,MACRF=(R),     X010XX*
               RECFM=VS,NCP=1                                    X010XX
         EJECT
ULOADDCB DCB   DSORG=PS,DDNAME=SYSUT2,EXLST=LIST6,MACRF=(W),     X010XX*
               RECFM=VS,NCP=1                                    X010XX
         EJECT
UT3DCB   DCB   DDNAME=SYSUT3,DSORG=PS,MACRF=(E),IOBAD=UT3IOB,          X
               DEVD=DA,EXLST=LIST1
UT3LRECL DC    H'80'                   80 BYTE LRECL SYSUT3
         EJECT
UT4DCB   DCB   DDNAME=SYSUT4,DSORG=PS,MACRF=(E),IOBAD=UT4IOB,          X
               EXLST=LIST1,PCIA=C8,DEVD=DA,KEYLEN=8,SIOA=FT,     X010XXX
               PGFX=YES                                          X010XX
UT4LRECL DC    H'264'             264-BYTE LRECL FOR SYSUT4
         EJECT
BPAMOUT  DCB   DDNAME=SYSUT2,DSORG=PO,MACRF=(W)
         EJECT
*    IEBDSCPY IOB AREA      IF IOB FORMAT IS EVER CHANGED THIS AREA   *
*  MUST CHANGE.  THE ADCON FOR IEBMCA IS APPENDED TO THE END OF EACH  *
*  IOB FOR THE USE OF THE PCI APPENDAGE SO THAT IT CAN FIND THE START *
*  OF THE COMMON AREA TO CHANGE POINTERS AND CCWS.                    *
         SPACE 1
INIOB    DC    F'0'
         DC    A(EVENTCB)              POINTER TO EVENT CONTROL BLOCK
         DC    3F'0'
         DC    A(INDCB)                DCB POINTER
         DC    4F'0'
COMMONPT DC    A(IEBMCA) POINTER TO COMMON AREA IN IOB FOR PCI
INCHAR   DC    5F'0'                   DEVTYPE INFO              S20201
INSCTOR  DC    X'00'                   CURRENT SECTOR VALUE      S20201
*                                        FOR INPUT - ONLY        S20201
*                                        VALID IF RPS DEVICE     S20201
DEVOFF   EQU   INCHAR-INIOB            OFFSET TO DEVTYPE         S20201
*                                        INFO FROM ALL IOB'S     S20201
SCTOFF   EQU   INSCTOR-INIOB           OFFSET TO CURRENT         S20201
*                                        SECTOR VALUE FROM       S20201
*                                        ALL IOB'S               S20201
IEBMCAPT EQU   COMMONPT-INIOB POINTER TO IEBMCA IN THE IOB- ASSUMES
*   ALL IOB'S NEED THIS AND ALL IOB'S ARE THE SAME SIZE
         SPACE 1
OUTIOB   DC    F'0'
         DC    A(EVENTCB)              POINTER TO EVENT CONTROL BLOCK
         DC    3F'0'
         DC    A(OUTDCB)               DCB POINTER
         DC    4F'0'
         DC    A(IEBMCA) POINTER TO COMMON AREA IN IOB FOR PCI
OUTCHAR  DC    5F'0'                   DEVTYPE INFO              S20201
OUTSCTOR DC    X'00'                   CURRENT SECTOR VALUE      S20201
*                                        FOR OUTPUT - ONLY       S20201
*                                        VALID IF RPS DEVICE     S20201
         SPACE 1
UT3IOB   DC    F'0'
         DC    A(EVENTCB)              POINTER TO EVENT CONTROL BLOCK
         DC    3F'0'
         DC    A(UT3DCB)               DCB POINTER
         DC    4F'0'
         DC    A(IEBMCA) POINTER TO COMMON AREA IN IOB FOR PCI
UT3CHAR  DC    5F'0'                   DEVTYPE INFO              S20201
UT3SCTOR DC    X'00'                   CURRENT SECTOR VALUE      S20201
*                                        FOR SYSUT3 - ONLY       S20201
*                                        VALID IF RPS DEVICE     S20201
         SPACE 1
UT4IOB   DC    F'0'
         DC    A(EVENTCB)              POINTER TO EVENT CONTROL BLOCK
         DC    3F'0'
         DC    A(UT4DCB)               DCB POINTER
         DC    4F'0'
         DC    A(IEBMCA) POINTER TO COMMON AREA IN IOB FOR PCI
UT4CHAR  DC    5F'0'                   DEVTYPE INFO              S20201
UT4SCTOR DC    X'00'                   CURRENT SECTOR VALUE      S20201
*                                        FOR SYSUT4 - ONLY       S20201
*                                        VALID IF RPS            S20201
         SPACE 1
EVENTCB  DC    F'0'                    EVENT CONTROL BLOCK FOR EXCP
         EJECT
*                                                                S20201
*  THE FOLLOWING CCW IS USED WHEN THE DEVICE TO BE USED          S20201
*     SUPPORTS THE RPS FEATURE                                   S20201
*                                                                S20201
         SPACE 1                                                 S20201
SSECTOR  CCW   X'23',SECTOR,X'60',1    SET SECTOR WITH CC/SLI    S20201
*                                        FLAGS                   S20201
*                                                                     *
*     GENERAL SEARCH ID EQUAL CCW TO START A READ OR WRITE CHAIN      *
*                                                                     *
         SPACE 1
CCW1     CCW   X'31',0,X'60',5 SEARCH ID EQUAL, CC,SLI FLAGS ON
CCW2     CCW   X'08',CCW1,X'00',1 TIC TO CCW1 TILL ID EQUAL FOUND
CCW3     CCW   X'08',0,X'00',1 TIC TO FIRST READ OR WRITE
*           TIC TO RDCW11/21 OR WRCW11/21 OR RDCKCW11/21
         SPACE 1
*                                                                     *
*     READ CCWS WITH PCI- READ DIRECTORIES AND INPUT MEMBERS          *
*                                                                     *
         SPACE 1
RDCW11   CCW   X'92',0,X'40',8 READ COUNT M/T, COMMAND CHAIN FLAG ON
RDCW12   CCW   X'0E',0,X'68',0 READ KEY/DATA CC,SLI,PCI FLAGS ON
RDCW13   CCW   X'03',RDCW21,X'20',1 NOP/RS/TIC TO BE SET BY      S20201
*                                        PCI APPENDAGE           S20201
RDCW21   CCW   X'92',0,X'40',8 READ COUNT M/T, COMMAND CHAIN FLAG ON
RDCW22   CCW   X'0E',0,X'68',0 READ KEY/DATA CC,SLI,PCI FLAGS ON
RDCW23   CCW   X'03',RDCW11,X'20',1 NOP/RS/TIC TO BE SET BY      S20201
*                                        PCI APPENDAGE           S20201
         SPACE 1
*                                                                     *
*     RESTART WRITE SEARCH ID EQUAL M/T ON LAST SUCCESSFUL RECORD     *
*              USED FOR ERROR RETRY AND HEAD SWITCHING                *
*                                                                     *
         SPACE 1
WSCH     CCW   X'B1',LASTADDR+3,X'60',5 SEARCH ID EQUAL M/T RESTART
WSCH1    CCW   X'08',WSCH,X'00',1 TIC TO WSCH TILL EQUAL ID FOUND
WSCH2    CCW   X'08',0,X'00',1 TIC TO CORRECT WRITE COMMAND
         SPACE 1
WRCW11   CCW   X'1D',0,X'68',0 WRITE COUNT/KEY/DATA CC,SLI,PCI FLAGS ON
WRCW12   CCW   X'08',WRCW13,X'20',1 TIC TO NOP/RS/WCKD/WKD/SID   S20201
*                                    CCW - SET BY PCI ROUTINE    S20201
WRCW13   CCW   X'03',0,X'20',1 NOP/RS CCW TO STOP CHAIN IF PCI   S20201
*                               MISSED - SET BY IEBDWR           S20201
*   MAY TIC TO NEXT WRITE COMMAND OR SEARCH TO NEXT TRACK             *
         SPACE 1
WRCW21   CCW   X'1D',0,X'68',0 WRITE COUNT/KEY/DATA CC,SLI,PCI FLAGS ON
WRCW22   CCW   X'08',WRCW23,X'20',1 TIC TO NOP/RS/WCKD/WKD/SID   S20201
*                                    CCW - SET BY PCI ROUTINE    S20201
WRCW23   CCW   X'03',0,X'20',1 NOP/RS CCW TO STOP CHAIN IF PCI   S20201
*                               MISSED - SET BY IEBDWR           S20201
*   MAY TIC TO NEXT WRITE COMMAND OR SEARCH TO NEXT TRACK             *
         SPACE 1
*                                                                     *
*     READ BACK CHECK CCW LIST WITH PCI                               *
*                                                                     *
         SPACE 1
RDCKCW11 CCW   X'92',LASTADDR,X'60',8 READ COUNT M/T CC, SLI FLAGS ON
RDCKCW12 CCW   X'0E',LASTADDR,X'78',1 READ KEY/DATA CC,SLI,PCI,SKIP
RDCKCW13 CCW   X'03',RDCKCW21,X'20',1 NOP/RS/TIC TO BE SET BY    S20201
*                                        PCI APPENDAGE           S20201
RDCKCW21 CCW   X'92',LASTADDR,X'60',8 READ COUNT M/T CC, SLI FLAGS ON
RDCKCW22 CCW   X'0E',LASTADDR,X'78',1 READ KEY/DATA CC,SLI,PCI,SKIP
RDCKCW23 CCW   X'03',RDCKCW11,X'20',1 NOP/RS/TIC TO BE SET BY    S20201
*                                        PCI APPENDAGE           S20201
         SPACE 1
*
*  THE FOLLOWING CCW IS USED TO ERASE ONE TRACK AT A TIME
*
         SPACE 1
ERSCCW   CCW   X'11',ERSCCW,X'20',1   ERASE  -SLI-
         SPACE 1
*                                                                S20201
*  THE FOLLOWING CCW IS USED WHEN THE DEVICE TO BE USED          S20201
*     SUPPORTS THE RPS FEATURE                                   S20201
*                                                                S20201
         SPACE 1                                                 S20201
RSECTOR  CCW   X'22',SECTOR,X'20',1  READ SECTOR CCW - SLI FLAG  S20201
         SPACE 1                                                 S20201
*  THE FOLLOWING BYTE IS USED TO STORE SECTOR VALUES FOR         S20201
*      DEVICES WHICH SUPPORT RPS                                 S20201
         SPACE 1                                                 S20201
SECTOR   DC    X'00'                                             S20201
RDBKSAVE DC    X'00'              AREA TO SAVE CURRENT SECTOR    S20201
*                                   VALUE WHEN REQUIRED (SUCH    S20201
*                                   AS READ BACK CHECK)          S20201
LASTADDR DS    D RESTART ADDRESS FOR WRITE OR BUFFER FOR READBACK CHECK
LASTGBSV DS    D  USED TO SAVE VALUE IN LASTADDR AT ENTRY TO IGG019C8
LASTGB   DS    D USED BY IEBIOE FOR ERROR ANALYSIS
FIRSTERS DS    F TTR OF FIRST TRACK TO BE ERASED
LASTERS  DS    F TTR OF LAST TRACK TO BE ERASED
SVTTR    DS    F USED BY IEBWSU TO PASS THE MEMBER TTR OF ALL    A34431
*                 COPIED MEMBERS TO IEBDSCPY                     A34431
         EJECT
*   THE FOLLOWING LIST IS PASSED AT SIO TIME TO IOSUPERVISOR     X010XX
RDLENGTH DC    F'7'          EXTENDED TRANSLATION LIST LENGTH    X010XX
READLIST DC    X'03'         EXTENDED TRANSLATION LIST           X010XX
         DC    AL3(CCW1)     *THE FIRST ENTRY IS REPLACED FOR    X010XX
         DC    X'03'         *RPS DEVICES BY X'05'AL3(SSECTOR)   X010XX
         DC    AL3(RDCW11)   *AND RESET FOR NOT RPS FOR ALL      X010XX
         DC    X'03'         *THREE LISTS WHEN THEY ARE USED.    X010XX
         DC    AL3(RDCW21)   *EACH CCW ADDRESS IS PRECEDED       X010XX
         DC    X'80'         *BY AN OPTION BYTE                  X010XX
         DC    AL3(RDCW11)   *IF ITS HIORDER BIT IS OFF          X010XX
RDL1     DC    X'80'         MAX RECORD LENGTH FOR READING       X010XX
         DC    AL3(RDCW12)   *THE BYTE GIVES THE LENGTH OF       X010XX
         DC    X'80'         *A CHAIN THAT CAN BE APPENDED       X010XX
         DC    AL3(RDCW21)   *TO THE CURRENT CCWCHAIN AND        X010XX
RDL2     DC    X'80'         MAX RECORD LENGTH FOR READING       X010XX
         DC    AL3(RDCW22)   *STARTS AT THE LIST ENTRY ADDRESS   X010XX
WRLENGTH DC    F'6'          EXTENDED TRANSLATION LIST LENGTH    X010XX
WRITLIST DC    X'03'         EXTENDED TRANSLATION LIST           X010XX
         DC    AL3(CCW1)     *IF THE HIGH ORDER BIT OF THE       X010XX
         DC    X'03'         *OPTION BYTE IS ON, THE ADDRESS     X010XX
         DC    AL3(WSCH)     *IN THE NEXT CCW CAN BE             X010XX
         DC    X'03'         *MODIFIED.                          X010XX
         DC    AL3(WRCW11)   *THE OPTION BYTE THEN GIVES         X010XX
         DC    X'03'         *THE BIGGEST POSSIBLE LENGTH        X010XX
         DC    AL3(WRCW21)   *FIELD IN NEXT CCW,DIVIDED BY       X010XX
WRL1     DC    X'80'         MAX RECORD LENGTH FOR WRITING       X010XX
         DC    AL3(WRCW11)   *2K.THIS IS ZERO EXCEPT FOR         X010XX
WRL2     DC    X'80'         MAX RECORD LENGTH FOR WRITING       X010XX
         DC    AL3(WRCW21)   *THE ENTRIES RDL1,RDL2,WRL1,        X010XX
RBLENGTH DC    F'3'          EXTENDED TRANSLATION LIST LENGTH    X010XX
RBLIST   DC    X'03'         EXTENDED TRANSLATION LIST           X010XX
         DC    AL3(CCW1)     *AND WRL2.THEY ARE FILLED OUT       X010XX
         DC    X'03'         *AT START IO TIME.                  X010XX
         DC    AL3(RDCKCW11) *FOR USE OF THIS LIST SEE MODULE    X010XX
         DC    X'03'         *IGG019FT(SIO APPENDAGE) AND        X010XX
         DC    AL3(RDCKCW21) *IO SUPERVISOR MANUALS (OS VE)      X010XX
*   FOLLOWING AREA IS USED BY PCI APPENDAGE TO PASS A LIST OF    X010XX
*   CCW'S IT CHANGES TO THE IO SUPERVISOR  (OS VE)               X010XX
XLIST    DS    10F           PCI PARAMETER LIST FOR AOS          X010XX
* NOTE - THE FOLLOWING AREAS AND SWITCH ARE USED ONLY BY IEBVDM -
* BLOCK, ENDWRT, READDCB, WRTDCB, ODEPTR, OLDKEY, ADLAST, BC, AND DMSW
* THEY APPEAR IN THE COMMUNICATION AREA BECAUSE, IF THIS PROGRAM IS IN
* OVERLAY, AND IF IT IS NECESSARY TO OPEN SYSUT4, THESE AREAS WOULD BE
* OVERLAYED BY IEBDV1 WHEN IT WAS CALLED BY IEBVDM.
BLOCK    DC    F'0'                A PTR  TO THE FLAG FIELD OF THE
*                                  OUTPUT DIRECTORY BLOCK WHICH IS
*                                  BEING BUILT
ENDWRT   DC    F'0'                A PTR TO THE END OF A BUFFER AREA
*                                  WHICH IS USED FOR WRITING
READDCB  DC    F'0'                A POINTER TO THE DCB FROM WHICH
*                                  THE OUTPUT DIRECTORY IS BEING READ
WRTDCB   DC    F'0'                A POINTER TO THE DCB TO WHICH THE
*                                  OUTPUT DIRECTORY IS TO BE WRITTEN
ODEPTR   DC    F'0'                PTR TO AN ODE IN CORE
OLDKEY   DC    2F'0'               NAME OF CAST ENTRY WHICH WAS ADDED
*                                  TO BLOCK
ADLAST   DC    F'0'               FOR USE IF NEED TO OVERLAY NAME OF
*                                 LAST DE MERGED WITH FF'S
BC       DC    H'0'                COUNT OF THE NUMBER OF BYTES IN AN
*                                  OUTPUT DIRECTORY BLOCK WHICH IS
*                                  BEING BUILT
DMSW     DC    X'00'              BYTE USED FOR INTERNAL DIRECTORY
*                                 MERGE SWITCHES
R        EQU   X'80'          ON = THERE ARE NO MORE OUTPUT DIRECTORY
*                                  ENTRIES TO BE MERGED
E        EQU   X'40'          ON = THERE ARE NO MORE INPUT DIRECTORY
*                                  ENTRIES TO BE MERGED
I        EQU   X'20'          ON = AN INPUT DIRECTORY ENTRY IS BEING
*                                  MERGED
RETEOD   EQU   X'10'         ON = NO SPACE IN THE I/O BUFFER TO SET UP
*                            AN EOF RECORD TO BE WRITTEN TO SYSUT4 BY
*                            IEBVDM ROUTINE
DIRWRT   EQU   X'08'         ON = DURING MERGE PHASE, AT LEAST ONE CALL
*                                 TO IEBWSU WAS MADE, SO THERE HAS BEEN
*                                 SOME OR ALL OF THE MERGED OUTPUT
*                                 DIRECTORY WRITTEN
*              LO ORDER 3 BITS NOT USED - RESERVED
*
         SPACE 1
FLG3     DC    XL1'0'        SWITCHES/FLAGS
OUTPUTEP EQU   X'80'         ON = ENTRY WAS MADE TO IEBDV1 TO OPEN BOTH
*                            AN OUTPUT AND AN INPUT DCB
SORTDONE EQU   X'40'         ON = SETAB HAS BEEN SORTED FOR INDD GRP
FTINGP   EQU   X'20'         ON = THE CURRENT INDD GROUP HAS BEEN INI-
*                            TIALIZED FOR THE FIRST TIME THRU
REBLK    EQU   X'10'         ON = REBLOCKING / DEBLOCKING SPECIFIED
ENTOBT   EQU   X'08'         ON=OBTAIN WAS ENTERED BEFORE       OY01182
*              LO ORDER THREE BITS NOT USED - RESERVED          OY01182
*
         SPACE 2
FLG4     DC    XL1'0'        SWITCHES / FLAGS
NEWODS   EQU   X'80'         ON = 'CURRENT' OUTPUT DATA SET HAS NOT
*                            HAD IT'S DIRECTORY UPDATED
LE       EQU   X'40'         ON = LAST CTLTAB ENTRY WAS CHECKED BY
*                                 IEBMGI SUBR.
ODALT    EQU   X'20'         ON = OUT. DIRECTORY IS TO BE READ FRM UT4
NEWCOPOP EQU   X'10'         SET BY SCAN FOR EACH NEW COPY OPERATION
REDASD   EQU   X'08'   'OUTPUT' DS HAS TOO MANY DIR BL PER TR    A36049
*              LO ORDER 3 BITS NOT USED-RESERVED                 A36049
*
         SPACE 2
FLG7     DC    X'00'              SWITCHES/FLAGS
COP      EQU   X'80'         ON = IEBMGI BEING CALLED DURING COPY PHASE
FRSTMBR  EQU   X'40'         ON = FIRST MEMBER OF CURRENT INPUT DATA
*                            SET IS NOW BEING PROCESSED
DM       EQU   X'20'         ON = DIRECTORY MERGE BEING DONE NOW
NOPRNBDB EQU   X'10'         ON = IEBVTM WILL NOT PRINT MESSAGE CON-
*                                 CERNING NBR OF UNUSED DIR BLKS
SUPPRMSG EQU   X'08'         ON = IEBVTM USES THIS BIT, IN COMBINATION
*                                 WITH OTHER BITS, TO DETERMINE WHETHER
*                                 OR NOT TO PRINT CERTAIN TERMINATION
*                                 MESSAGES
*              LO ORDER 3 BITS NOT USED - RESERVED
AOS      DC    X'00'         AOS SWITCH                          X010XX
PCI      EQU   X'80'         A PCI READ OR WRITE IS  DONE        X010XX
*              LOW ORDER 7 BITS NOT USED-RESERVED                X010XX
ULLDST   DC    X'00'         UNLOAD/LOAD STATUS SWITCH           X010XX
LOAD     EQU   X'80'         IF ONE INPUT DCB IS SEQUENTIAL      X010XX
UNLOAD   EQU   X'40'         IF ONE OUTPUT DCB IS SEQUENTIAL     X010XX
*                              THE ABOVE SWITCHES ARE NOT        X010XX
*                              MUTUALLY EXCLUSIVE                X010XX
CFREED   EQU   X'20'         IF 1 A FREEMAIN HAS BEEN DONE       X010XX
*                              FOR LOAD OR UNLOAD AND            X010XX
*                              ADDRESS OF HEADER BUFFERS IS VALIDX010XX
*              LOW ORDER 5 BITS NOT USED-RESERVED                X010XX
*
         SPACE 2
FORM     DC    XL1'0'    SET BY VALIDATE AND USED BY REBLOCK ROUTINE
*
FORM1    EQU   X'80'     ON= INPUT DATA SET VARIABLE FORMAT
*                        OFF = INPUT DATA SET FIXED FORMAT
FORM2    EQU   X'40'    ON= INPUT DATA SET BLOCKED FORMAT
FORM3    EQU   X'20'    ON= OUTPUT DATA SET IS BLOCKED
FORM4    EQU   X'10'  INPUT OR OUTPUT DATASET MAY HAVE OVERFLOW RECORDS
ERASE    EQU   X'08' ON=IEBDWR CALLED TO ERASE A TRACK(S)
*              LOW ORDER 3 BITS NOT USED - RESERVED
*
         SPACE 2
TAG      DC    XL1'0'        SWITCHES / FLAGS - MUST BE SET BY CALLER
*                            PRIOR TO REQUESTING WRITE EXCP
TAG1     EQU   X'80'         ON = WRITING OUTPUT DIRECTORY TO OUTPUT DS
TAG2     EQU   X'40'         ON = WRITING (COPYING) MEMBER TO OUTPUT DS
TAG3     EQU   X'20'         ON = WRITING OUTPUT DIRECTORY TO SYSUT4 DS
TAG4     EQU   X'10'         ON = WRITING SPILLED INPUT DE'S TO UT3
TAG5     EQU   X'08'         USED BY WRITE RTNE FOR READBACK CHECK
TAG6     EQU   X'04'         USED BY WRITE RTNE FOR READBACK CHECK
CTOUT    EQU   X'02'         ON = NEED TO CT NBR BLKS IN OUTPUT DIR
TAG8     EQU   X'01'         ON=FIRST TIME IEBWSU IS ENTERED AFTER
*                            FINDING 'HOLE' - COMPRESS
*
         SPACE 2
WSFLAG   DC    X'00'         SWITCHES FOR IEBWSU INTERFACE/CONTROL
USERTTR  EQU   X'80'         ON = NOTE LIST AND/OR USER TTRN(S) PRESENT
*                                 IN THE MEMBER NOW BEING COPIED
RETRNOVR EQU   X'40'         ON = PROCESSING A SEGMENT OF A TRACK-
*                                 OVERFLOW RECORD
NOWRT    EQU   X'20'         ON = RECORDS ARE PROCESSED FOR WRITING,BUT
*                            BECAUSE THERE IS ROOM IN BFR TO READ MORE,
*                            THE RECORDS HAVENT BEEN WRITTEN YET.
FORCEWRT EQU   X'10'         ON = IEBWSU MUST CALL IEBDWR TO WRITE THE
*                            RECORD(S) CURRENTLY IN THE I/O BFR
RDGSW    EQU   X'08'         ON = READ ROUTINE WAS CALLED -
*                            OFF = WRITE ROUTINE WAS CALLED
FRSTMREC EQU   X'04'              ON = IEBWSU IS TO PROCESS THE  A34431
*                                  FIRST RECORD OF A MEMBER      A34431
NTELSTRC EQU   X'02'              ON = IEBWSU IS PROCESSING A    A44345
*                        RECORD AND TRIES TO FIND OUT IF THIS IS A44345
*                        NOTELIST RECORD (TRACK OVERFLOW ONLY)   A44345
*              LOW ORDER BIT NOT USED - RESERVED                 A44345
*
         SPACE 2
* THE FOLLOWING SWITCHES (PARMSWCH, CCSWITCH, COMDCDSW, CPARAMSW, CCDE-
* LIM, CCDELIM2) ARE PRIMARILY BUT NOT SOLELY USED BY IEBSCN -
*
         SPACE 1
PARMSWCH DC    XL1'0'    SCAN INTERNAL INDD AND MEMBER SWITCHES
SCANNAME EQU   X'80'         SCANNING NAME
SET4REPL EQU   X'40'         MULTIPLE ( EXPECT REPLACE
ONELEFT  EQU   X'20'         FIRST LEFT PARENTHESIS
COPYNOW  EQU   X'10'         NOW SCANNING COPY CARD
STOPSCAN EQU   X'08'         BLANK ENCOUNTERED
FLUSHSW  EQU   X'04'                   FLUSH TO NEXT COPY RE/SET ALONE
HASNEWNM EQU   X'02'         HAVE A NEW NAME WITH MEMBER
COMDPART EQU   X'01'         PARTIAL COMMAND- CONTINUED ON NEXT CARD
*
         SPACE 1
CCSWITCH DC    XL1'0'                  CONTROL CARD SWITCHES- EXTERNAL
CARDPRTD EQU   X'80'         ON = CONTROL STATEMENT HAS BEEN PRINTED
SYSINEOF EQU   X'40'         END OF FILE ON SYSIN
UNECPARN EQU   X'20'         INDD/MEMBER NAMES IMBEDDED IN PARENTHESIS
IEBCOPYC EQU   X'10'         IEBCOPY CONTROL CARDS
COMDNOW  EQU   X'08'         COMMAND WORD
LASTPARM EQU   X'04'         LAST PARAMETER- BYPASS SWITCH
MULTSE   EQU   X'02' MULTIPLE SELECT/EXCLUDE STATEMENTS
FIRSTSCN EQU   X'01' ON=IEBSCN HAS BEEN CALLED FOR THE FIRST TIME
*
         SPACE 2
COMDCDSW DC    XL1'0'           SOME EXTERNAL SWITCHES
COPYDONE EQU   X'80'         COPY COMMAND SCANNED ALL OK
SELECTSC EQU   X'40'         SELECT COMMAND SCANNED
EXCLUDES EQU   X'20'         EXCLUDE COMMAND SCANNED
NEWOUT   EQU   X'10'         OUTDD KEYWORD PRESENT
NEWINDD  EQU   X'08'         INDD KEYWORD PRESENT
LISTSW   EQU   X'04'         DO NOT LIST MEMBERS COPIED (LIST=NO)
COMPRESS EQU   X'02'                   COMPRESS COPY DATA SET
MEMBRCD1 EQU   X'01'         MEMBER STATEMENT
*
         SPACE 2
CPARAMSW DC    XL1'0'       INTERNAL SCAN SWITCHES
DELIMEND EQU   X'80'         DELIMITER IN COLUMN 71
CONTINY  EQU   X'40'         CONTINUATION
PARMCOME EQU   X'20'         PARAMETER FOLLOWS
PARTPARM EQU   X'10'         PARTIAL PARAMETER
READ1    EQU   X'08'         READ ANOTHER CONTROL STATEMENT
COMDPARM EQU   X'04'         COMMAND FOLLOWED BY PARAMETER
COL72BLK EQU   X'02'         COLUMN 72 NOT BLANK
PARMZERO EQU   X'01'         PARAMETER LENGTH ZERO
*
         SPACE 2                                                 A48742
SCANSWCH DC    XL1'0'        INTERNAL SCAN SWITCHES              A48742
NOCMMEXP EQU   X'80'         DON'T SCAN COMMAND ON CONTIN CARDS  A48742
*              LOW ORDER 7 BITS NOT USED - RESERVED              A48742
*
         SPACE 2
CCDELIM  DC    XL1'0'        INTERNAL SCAN SWITCHES
EQUALSGN EQU   X'80'         EQUAL SIGN
COMMASGN EQU   X'40'         COMMA
LEFTPRSG EQU   X'20'         LEFT PARENTHESIS
RIGHTPRS EQU   X'10'         RIGHT PARENTHESIS
BLANKSGN EQU   X'08'         BLANK
LASTCOMA EQU   X'04'         LAST DELIMITER A COMMA- READ A CARD
BADBLOCK EQU   X'02' VALIDATE-IEBDV0 SETS IF SYSIN/SYSPRINT BLOCKSIZE
*          IS BAD.
*              LO ORDER BIT NOT USED
*
         SPACE 2
CCDELIM2 DC    XL1'0'  USED TO SAVE SETTINGS OF CCDELIM ON CONTINUATION
*
         SPACE 2
STATUS   DC    XL1'0'        SWITCHES / FLAGS - MUST BE SET BY CALLER
*                            PRIOR TO REQUESTING READ EXCP
STAT1    EQU   X'80'         ON = READING INPUT DIR.
STAT2    EQU   X'40'         ON = READING OUTPUT DIR FROM OUTPUT D.S.
STAT3    EQU   X'20'         ON = READING OUTPUT DIR FROM SYSUT4 D.S.
STAT4    EQU   X'10'         ON = READING INPUT MEMBER
STAT5    EQU   X'08'         ON = OUTPUT DIRECTORY HAS NO ENTRIES IN IT
STAT6    EQU   X'04'         ON = OUTPUT DIRECTORY IS BEING MERGED
STAT7    EQU   X'02'    SET BY WRITE- TELLS PCI AM READ BACK CHECKING
STAT8    EQU   X'01'         USED FOR TRACK-OVERFLOW READING
*
         SPACE 2
SENSE    DC    XL1'0'        USED BY READ ROUTINE
SENSE1   EQU   X'80'         ON = READING FROM SYSUT3
SENSE2   EQU   X'40'         ON = READING NOTE LIST
SENSE3   EQU   X'20'         ON = READING ONLY ONE RECORD FROM A FILE
SENSE4   EQU   X'10'         ON = READING OUTPUT DATA SET TO FIND THE
*                            FIRST GAP FOR COMPRESS INPLACE, ALSO WILL
*                            CALCULATE TRACK BALANCE WHEN ON.
SENSE5   EQU   X'08'         ON=SHORT LENGTH RECORD READ-RECFM=FBS
SENSE6   EQU   X'04'                   ON = ERROR ON READING FROM UT4
*                            AND MUST CONSTRUCT DUMMY RECORD IF LAST
SENSE7   EQU   X'02'         SWITCH USED FOR TRACK OVERFLOW INPUTS20201
*                              PROCESSING - IF ON, THE FIRST     S20201
*                              RECORD OF A MEMBER IS BEING       S20201
*                              READ                              S20201
SENSE8   EQU   X'01'         ON= AN I/O REQUEST ON SYSUT3 WAS    A33287
*                              ISSUED FOR ALPH SORTED CTLTAB     A33287
*                              INFORMATION                       A33287
*
         SPACE 2
VTMFLG1  DC    X'00'              FLAGS/SWITCHES SET FOR USE BY IEBVTM
IOERROR  EQU   X'80'         ON = AN I/O ERROR HAS OCCURRED
*                                 BYTES NAMED 'IOEF1' AND 'IOEF2' DES-
*                                 CRIBE THE TYPE OF ERROR AND CONTROL
*                                 ACTIONS TO BE TAKEN BY IEBVTM
UNUSEND  EQU   X'40'         ON = A NON-I/O ERROR HAS OCCURRED
NOMAIN   EQU   X'20'         ON = MINIMUM CORE WAS NOT ACQUIRED FROM
*                                 GETMAIN - DO NOT TRY TO FREEMAIN
*              LO ORDER 5 BITS NOT USED - RESERVED
*
         SPACE 2
IOEF1    DC    X'00'              FLAGS DESCRIBING NATURE/TYPE OF I/O
*                                 ERROR
*              HI ORDER BIT NOT USED - RESERVED
ERF2     EQU   X'40'         ON = ERROR WHILE READING INPUT DIRECTORY
*                                 FROM INPUT DATA SET
ERF3     EQU   X'20'         ON = 'HARD' ERROR READING MEMBER DATA -
ERF4     EQU   X'10'         ON = ERROR READING OUTPUT DIRECTORY -
*                                 IF 'ERF10' ALSO ON, WAS READING FROM
*                                 SYSUT4 DATA SET DURING OUTPUT DIREC-
*                                 TORY PRE-SCAN PHASE OF PROGRAM.  IF
*                                 ''ERF10'' WAS OFF, ERROR OCCURRED
*                                 ON OUTPUT DATA SET DIRECTORY.
ERF5     EQU   X'08'         ON = ERROR WRITING MERGED DIRECTORY TO
*                                 OUTPUT DATA SET
ERF6     EQU   X'04'         ON = 'HARD' ERROR WRITING MEMBER DATA
ERF7     EQU   X'02'         ON = 'HARD' ERROR WRITING TO SYSUT3 (SPIL-
*                                 LING AN INPUT DIRECTORY ENTRY)
ERF8     EQU   X'01'         ON = 'HARD' ERROR READING FROM SYSUT3
*
         SPACE 2
IOEF2    DC    X'00'              FLAGS DESCRIBING NATURE/TYPE OF I/O
*                                 ERROR
ERF9     EQU   X'80'         ON = 'HARD' ERROR WRITING MERGED OUTPUT
*                                 DIRECTORY TO SYSUT4
ERF10    EQU   X'40'         ON = ERROR READING FROM SYSUT4.  IF 'ERF4'
*                                 OFF, ERROR OCCURRED DURING MERGE
*                                 PHASE OF PROGRAM - IF 'ERF4' ON, SEE
*                                 DESCRIPTION OF 'ERF4'.
NOSYSIN  EQU   X'20'         ON = SYSIN COULD NOT BE OPENED OR WAS IN-
*                                 VALID, OR BECAME UNUSABLE DUE TO AN
*                                 I/O ERROR
SPRNOPN  EQU   X'10'         SYSPRINT COULD NOT BE OPENED, WAS INVALID-
*                                 LY SPECIFIED, OR AN I/O ERROR OCCUR-
*                                 RED MAKING SYSPRINT UNAVAILABLE
SNDFUSED EQU   X'08'         ON=SYNADAF MACRO USED               X010XX
IOEFENT  EQU   X'04'         ON=IOE WAS ENTERED BEFORE           X010XX
VERPEST  EQU   X'02'         ON=RECORD LONGER THEN DCBBLKSI      X010XX
ENTIOE3  EQU   X'01'         ON=IOE ENTERED THROUGH IEBIOE3      X010XX
*
         EJECT
         DS    0H
MSGLIST  DC    4H'0'              AREA FOR PARAMETRIC INPUT TO IEBVMS
MSG1     EQU   MSGLIST
MSG2     EQU   MSG1+2
MSG3     EQU   MSG2+2
MSG4     EQU   MSG3+2
* THE FOLLOWING BITS WILL BE SET ON BY THE CALLER OF IEBVMS (MESSAGE
* WRITING ROUTINE) IN THE HIGH ORDER BYTE OF EACH APPROPRIATE HALFWORD
* IN THE MSGLIST PARAMETER(S) BEING USED -
LASTMSG  EQU   X'80'         ON = LAST PARAMETER IN MSGLIST
CTLCD    EQU   X'40'         ON = A CONTROL CARD IS TO BE PRINTED
IOERF    EQU   X'20'         ON = A MESSAGE IS IN THE MESSAGE BUFFER -
*                                 AND IS TO BE PRINTED.  NO MSG CODE IS
*                                 ASSOCIATED WITH THIS MESSAGE, AND IT
*                            USUALLY WILL BE A SYNADAF MESSAGE.
RCODE    EQU   X'10'         ON = PUT RETURN CODE INTO THIS MSG TEXT
PBIT     EQU   X'08'         ON = USE PARAM LIST WITH THIS MSG TEXT
*              LO ORDER 3 BITS NOT USED - RESERVED
         SPACE 2
MSGPARAM DS    10H           THIS FIELD IS TO CONTAIN PARAMETERS X010XX
*                                 TO BE PLACED IN MESSAGES
         ORG   MSGPARAM
NAMEDISP DC    X'00'              THE DISPLACEMENT OF A NAME
*                                 PARAMETER FROM THE BEGINNING OF
*                                 THE MESSAGE IT IS TO BE PLACED IN
*                                 THIS BYTE
NODISP   DC    X'00'              THE DISPLACEMENT OF A NUMBER
*                                 PARAMETER FROM THE BEGINNING OF
*                                 THE MESSAGE IT IS TO BE PLACED IN
*                                 THIS BYTE
NAMEFLD  DC    CL8' '        AREA CONTAINING NAME TO BE PUT INTO MSG
DDVALNM  EQU   NAMEFLD       USED BY VALIDATE TO SAVE DD NAME
COPDISP  DC    X'00'         DISPLACEMENT OF THE WORD COPY       X010XX
*                              THAT HAS TO BE REPLACED           X010XX
PARAMS   DC    X'00'
NAME     EQU   X'80'         ON = THERE IS A NAME PARAMETER
NBR      EQU   X'40'         ON = THERE IS A NUMBER PARAMETER
MSGULLD  EQU   X'20'         ON = COPY MUST BE REPLACED BY       X010XX
*                              LOAD/UNLOAD                       X010XX
NOFLD    DC    CL7'0'        AREA CONTAINING NUMBER TO BE PUT INTO MSG
         SPACE 2
* THE FOLLOWING MESSAGE CODES ARE USED BY VARIOUS MODULES OF THE PGM -
INALCNTR EQU     01                INVALID COMMAND OR KEYWORD
INVALSPR EQU     02                INVALID PARAMETER
ONEQPARN EQU     03                UNEQUAL PARENTHESIS
INVALCON EQU     04                INVALID CONTINUATION
MEMNOSE  EQU     05                MEMBER WITHOUT SELECT/EXCLUDE
MULTSSEE EQU     06                ONLY ONE SELECT/EXCLUDE PER INDD
INVALREP EQU     07                INVALID REPLACE SPECIFIED
NULLPARM EQU     08                NULL PARAMETERS
NORREN   EQU     09                CANNOT RENAME/REPLACE ON EXCLUDE
NOINDD   EQU     10                OUTDD OR INDD NOT SPECIFIED
INVALIST EQU   11                  OUTDD/LIST NOT ON COPY STATEMENT
ENDMESS  EQU   12                  END OF CONTROL CARDS
MODEERR  EQU   13                  MIXING IEBCOPYAND IEBDSCPY MODE
COREGONE EQU   14                  TABLES EXCEED CORE
SCANMSG  EQU   15                  CONTROL STATEMENT ERROR
SEQERROR EQU   16                  STATEMENT SEQUENCE ERROR
GENERUAL EQU   17                  GENERAL VALIDATION MESSAGE
OPENERRX EQU   18                  OPEN ERROR MESSAGE
OBTAINER EQU   19                  OBTAIN ERROR
NOTPDSER EQU   20                  OBTAIN NOT PDS
INVALREC EQU   21                  INVALID LRECL
INVALBLK EQU   22                  INVALID BLOCKSIZE
UNMOVEDS EQU   23                  DATA SET UNMOVABLE
RECFMINC EQU   24                  RECFM INCOMPATIBLE
NORBOVRF EQU   25                  CANNOT REBLOCK OVERFLOW DATA SET
NORBKEYS EQU   26                  CANNOT REBLOCK KEYED DATA SET
UNEQKEYS EQU   27                  UNEQUAL KEY LENGTHS
INVALRFM EQU   28                  CANNOT COMPRESS KEYED PDS
INVALRBC EQU   29                  INVALID REBLOCK ROUTINE MSG
M38      EQU   30                  MINIMUM REQUESTED CORE NOT AVAILABLE
M39      EQU   31                  CANNOT COMPRESS WITH SELECT OR
*                                  EXLCUDE
M40      EQU   32                  MINIMUM I/O BUFFER NOT ALLOCATABLE
M41      EQU   33                  CANNOT ALLOCATE TWO TRACKS OF I/O
*                                  BUFFERS FOR COMPRESS
M42      EQU   34 CANNOT SPECIFY DUPLICATE NAME FOR SEL/EXCL/RENAME
M43      EQU   35                  CANNOT PROCESS ALL OLD/NEW NAMES
*                                  SPECIFIED
M45      EQU   36                  (DATA SET NAME) REFERENCES A NULL
*                                  INPUT DATA SET
M46      EQU   37                  CANNOT RE/DE BLOCK WITH
*                                  NOTE-LIST/USER TTRN IN MEMBER
*                                  (MEMBER NAME)
M47      EQU   38                  CANNOT CONTINUE TO BUILD CTLTAB
M48      EQU   39                 ALL SELECTED MEMBERS COPIED - DID NOT
*                                 USE ALL SPECIFIED INDD'S
M49      EQU   40                  (NUMBER) UNUSED TRKS IN OUTPUT DATA
*                                  SET REFERENCED BY (DDNAME)
M50      EQU   41                  CANNOT COMPRESS TRACK OVERFLOW DATA
*                                  SET
M51      EQU   42                  CANNOT COMPRESS WITH RE/DE BLOCKING
M53      EQU   43                  END OF JOB (0,4,8) WAS HIGHEST
*                                  SEVERITY CODE
NORMOD   EQU   44                  NO SPACE IN OUTPUT DIRECTORY FOR
*                                  DIRECTORY ENTRIES FROM DATA SET
*                                  (DATA SET NAME)
UNUSDDB  EQU   45                  THERE ARE (NUMBER) UNUSED DIRECTORY
*                                  BLOCKS IN THE OUTPUT DIRECTORY
TMDBTR   EQU   46     **WARNING** THE OUTPUT DS REF BY@YM04848X  A36049
*                     CONTAINS TOO MANY DIRECTORY BLOCKS PER     A36049
*                     TRACK                                      A36049
M58      EQU   47                  ERROR FORCES JOB TO TERMINATE
M59      EQU   48                  (MEMBER NAME) COMPRESSED- WAS
*                                  ALREADY IN PLACE
M60      EQU   49                  ALL MEMBERS COMPRESSED-
*                                  ALL WERE ORIGINALLY COMPRESSED
MEMCOP   EQU   50                  (MEMBERNAME) HAS BEEN SUCCESSFULLY
*                                  COPIED
RNMEMCOP EQU   51                  (MEMBER NAME) HAS BEEN RENAMED AND
*                                  SUCCESSFULLY COPIED
NOTDA    EQU   52                 DATA SET NOT DIRECT ACCESS
NODDCARD EQU   53                 DD CARD NOT FOUND
PARMEXEC EQU   54                 PARM EQUAL COMPRESS NOT VALID
NOMBCPDM EQU   55                 NO MBRS COPIED FROM INPUT DATASET RE-
*                                 FERENCED BY (XXXXXXXX)
CONCATBD EQU   56                 CONCATENATED DATA SETS
IMPCOMPR EQU   57                 IMPLIED COMPRESS
NOCMPOSS EQU   58                 CANNOT COMPRESS
NOCOPY   EQU   59                 NO MEMBERS FOR PARTIAL COPY,
*                                 WILL NOT COPY
DOFULLCP  EQU  60                 TOTAL COPY ASSUMED
MFBNC    EQU   61 MEMBER FOUND BUT NOT COPIED - I/O ERROR READING
*                 INPUT DIRECTORY
NONECOPY EQU   62 NO MEMBERS COPIED
FOLLMCPD EQU   63 FOLLOWING MBRS COPIED FROM INPUT DS REF BY XXXXXXXX
PLAMPID  EQU   64 POSSIBLE LOSS OF ACCESS TO MEMBER AND/OR INCOMPLETE
*                 DIRECTORY
WODINC   EQU   65 SYSUT4 I/O ERROR - OUTPUT DIRECTORY MAY BE INCOMPLETE
WONTCOM  EQU   66 I/O ERROR ON SYSUT3 - COMPRESS IN PLACE NOT DONE
BADPRINT EQU   67 SYSPRINT COULD NOT BE OPENED
SMNF    EQU   68                  (MBRNAME) WAS SELECTED BUT NOT FOUND
BADID    EQU   69                 INVALID ID FIELD IN COPYR1     X010XX
BADCMPRS EQU   70                 COMPR IS INVALID ON LOAD/UNLOADX010XX
MTOINDS  EQU   71                 MORE THAN ONE INPUTDS ON UNLOADX010XX
M72      EQU   72                 NO CORE FOR LOAD/UNLOAD        X010XX
NLDBL    EQU   73                 NON LOADABLE INPUT DATA SET    X010XX
M74      EQU   74                 INPUT AND OUTPUT DATA SETS ON  X010XX
*                                   SAME TAPE VOLUME             X010XX
M75      EQU   75                 NOT A DIRECT ACCESS OR TAPE    X010XX
*                                   DATA SET                     X010XX
         SPACE 2
RCBUF    DC    C'0'               COMPLETION-CODE AREA...CONTAINS CHAR-
*                                 ACTER REPRESENTATION OF HIGHEST
*                                 COMPLETION CODE SET BY UTILITY PGM
LINECT   DC   X'0'                COUNT OF NBR LINES WRITTEN ON ONE PG
PGLIMIT  EQU   56                 MAX NBR OF LINES TO BE PUT ON ONE PG
         SPACE 2
MSGBUF   DC    121C' '            MESSAGE BUFFER
PGNO     DC    C'0001'            STARTING PAGE NUMBER FOR MSG OUTPUT
* THE FOLLOWING WORK AREA IS USED BY IEBWSU                      A33288
         SPACE 1                                                 A33288
SAVERGS  DS    18F           REGISTER SAVE AREA                  A33288
RETSAVE  DS    3F            SAVE AREA FOR NOTELIST PROCESSING   A33288
SAVETTR0 DC    F'0'          HOLDS USER TTR                      A33288
READPROC DC    F'0'          PTR TO NEXT DATA TO PROCESS T/O     A33288
WRTPROC  DC    F'0'          PTR TO NEXT BUFFER SEGMENT T/O      A33288
LASTSEG  DC    F'0'          PTR TO LAST SEGMENT PROCESSED       A33288
SEGTTRN  DC    F'0'          TTRN OF 1ST SEGMENT T/O             A33288
SEGKLDL  DC    F'0'          ORIGINAL KEY + DATA LENGTH T/O      A33288
WARNTTRN DC    F'0'          SAVE AREA FOR PREVIOUS TTRN-FBS     A33288
*** END OF IEBWSU WORK AREA ****                                 A33288
*************              END OF COMMUNICATION AREA   ****************
IOBVRPTR DS    F           PTR TO IOB FOR PAGE FIX              YL026VD
WRTICPTR DS    F           PTR TO PROPER TIC IN WRITE CHAIN    @YL06433
IALPTR1  DS    F           PTR TO FIRST INDIRECT ADDR LIST     @YL06433
IALPTR2  DS    F           PTR TO SECOND INDIRECT ADDR LIST    @YL06433
CURRCCW1 DS    F           FIRST READ OR WRITE CCW - VIRTUAL   @YM04848
CURRCCW2 DS    F           SECOND READ OR WRITE CCW - VIRTUAL  @YM04848
SIOWKA   DS    F           WORK AREA FOR SIO AND PCI APPENDAGES@YM04848
COPYIAL1 DS    20F         EXTEND LIST RDPTR1.WTPTR1           @YM06433
COPYIAL2 DS    20F         EXTEND LIST FOR RDPTR2, WTPTR2      @YM06433
FIXLIST  DS    F           AREA FOR PAGE FIX POINTER           @YM06438
ADDLPTCH DS    11F         ADDITIONAL PATCH AREA               @YM06438
***   KEEP CARD  'MCAEND' LAST IN COMMUNICATION AREA JUST BEFORE THE **
****  EQUATE THAT DETERMINES THE COMMUNICATIONS AREA SIZE 'MCASIZE'  **
         SPACE 1
MCAEND   DS    0D        END OF COMMUNICATION AREA
MCASIZE  EQU   MCAEND-IEBMCA      SIZE OF COMMUNICATIONS AREA FOR SNAPS
         MEND
./ ADD NAME=IEBUPCON
         MACRO
         IEBUPCON
*1101                                                              MA0H
*1101                                                              4929
*1101                                                              5324
*1101004000,004200,022200-022800                                   UL0H
*A4584,24700,27100-27120,39300                                  YM07522
*A020100,020120                                                @ZA01682
*C020000                                                       @ZA01682
IEBUPCON DSECT
*  ********************************************************************
*  **      SWITCHES TO BE RE-INITIALIZED. THESE SWITCHES ARE RESET ****
*  **    UPON RE-ENTRY TO THIS PROGRAM, THIS IS DONE BY AT THE START **
*  **    OF THE PROGRAM BY AN XC INSTRUCTION. THE SIZE OF THE TABLE  **
*  **    IS OBTAINED BY SUBTRACTING THE BEGINNING FROM THE END IN    **
*  **    THE EQUATE AT SIZETAB.  SWITCHES MAY BE ADDED TO THE TABLE  **
*  **    ANYWHERE BETWEEN 'STARTAB' AND 'ENDTAB' AND THEY WILL BE    **
*  **    RESET BY THE INITIAL CODE UP TO A MAXIMUM OF 256 BYTES OF   **
*  **    SWITCHES. IF MORE THAN 256 BYTES OF SWITCHES, CHANGE CODE   **
*  **    AT START OF PROGRAM.                                        **
*  **            GROUP OF SWITCHES FROM COMDCD TO ENDTAB MUST REFER  **
*  **    ONLY TO CONTROL CARD SWITCHES.                              **
*  ********************************************************************
         SPACE 1
STARTAB  DS    0F   START OF SWITCH TABLE. COMMENTS STATE SWITCH USE
         SPACE 1
HICONCDE DC    H'0'                    RETURN CODE FOR IEBUPDAT
FIRSTCON DC    X'00'                   SET TO '0F' ON CONT. CARD   UL0H
LABELSW  DC    X'00'                    USER LABELS IN INPUT STREAMUL0H
LABEL2SW DC    X'00'                    PROCESSING USER LABELS     UL0H
EOVSWTCH DC    X'00'                    EOV ON OLD MASTER FOR LABELUL0H
IOBADSW  DC    X'00'                    I/O ERROR DURING LABEL PROCUL0H
LBLRETCD DC    X'00'                    RETURN CODE FROM LABEL RTNSUL0H
FRSTCOMD DC    X'00'                    INDICATES HEADERS INPUT    UL0H
LABLSYSN DC    X'00'                    LABELS HAVE BEEN SAVED SWT UL0H
LABELCNT DC    X'00'                    NO. OF HDR/TRL LABELS INPUTUL0H
USERCONT DC    X'00'                    NO. OF LABELS TO BE PRINTEDUL0H
ULBLCNT  DC    X'00'                    DECREMENTATION COUNT       UL0H
USYSNCNT DC    X'00'                    DECREMENTATION COUNT       UL0H
OMLBLCNT DC    X'00'                    NO. LABELS ON  OLD MASTER  UL0H
OMOPENSW DC    X'00'                    OLD MASTER IS OPEN  X'0F'  UL0H
NMOPNSWT DC    X'00'                    NEW MASTER IS OPEN  X'0F'  UL0H
NMCLSESW DC    X'00'                    NEW MASTER IS CLOSED X'0F' UL0H
OMSYSNLB DC    X'00'                    HDRS TAKEN FROM OM/INPUT   UL0H
NMSYSNLB DC    X'00'                    TRLRS TAKEN FROM OM/INPUT  UL0H
TOTALSW  DC    X'00'                    TOTAL EXIT TO BE TAKEN X'FFUL0H
SQFSW    DC    X'00'                    SEQFLD SPECIFIED        YM07522
FIRSENTR DC    X'00'                   FIRST CONTROL CARD SWITCH
ASISMSW  DC    X'00'                   WRITE RECORD AS IS NOT A MESSAGE
PRIMESW  DC    X'00'                   OPEN DCBLOGR SWITCH
QUITALL  DC    X'00'                   CLOSE DCBLOG IF '0F'
LOGBADSW DC    X'00'                   IF '0F'  DCBLOGR NOT OPENED
EODCTSW  DC    X'00'                   END OF DATA ON SYSIN
ERRNAMSW DC    X'00'                   ERROR FOUND IN EXIT NAME
CTONLYSW DC    X'00'                   PARM=NEW CT ONLY- NO OLD MASTER
CTHDRSW  DC    X'00'                   SET TO '0F' IF SYSIN TRAILERUL0H
CTTRLRSW DC    X'00'                   SET TO '0F' IF SYSIN HEADER UL0H
OMHDRSW  DC    X'00'                   SET TO '0F' IF OM USER HEADER
OMTRLRSW DC    X'00'                   SET TO '0F' IF OM USER TRAILER
NMHDRSW  DC    X'00'                   SET TO '0F' IF NM USER HEADER
NMTRLRSW DC    X'00'                   SET TO '0F' IF NM USER TRAILER
TEMPCON  DC    X'00'                   TEMPORARY RETURN CODE IEBUPDAT
NMBLKERR DC    X'00'                   INCORRECT NEW MASTER BLOCKSIZE
OMBLKERR DC    X'00'                   INCORRECT OLD MASTER BLOCKSIZE
OPENSW   DC    X'00'                   DCB NOT OPENED IF '0F'
LEVELXX  DC    X'F000'                 SAVES LEVEL, 'F0' NOT STORED
FLUSHSW  DC    X'00'                   SCANNING FOR NEXT COMD SWITCH
PRINTED  DC    X'00'                   IEBASCAN--IEBBSCAN COM. SWTCUL0H
PSSWOM   DC    X'00'                   OLD MASTER PHYSICAL SEQUENTIAL
PSSWNM   DC    X'00'                   NEW MASTER PHYSICAL SEQUENTIAL
CCSCANSW DC    X'00'                   SET TO 01 IF CARD SCAN READ
FINICCS  DC    X'00'                   CONTROL CARDS DEPLETED
REPLUPDT DC    X'00'                   REPLACEMENT MADE SWITCH
INPLCSW  DC    X'00'                   UPDATE INPLACE SWITCH
ENDONLY  DC    X'00'                   FLUSHIG TO ENDUP CARD       4929
FSTINSRT DC    X'00'    SET TO '0F' WHEN FIRST DATA CARD AFTER A A25432
*                 ./ NUMBER STMT (WITH INSERT=YES) IS SEQUENCED  A25432
SYNADSW  DC    X'00'  TURNED TO '0F' WHEN SYNAD EXIT TAKEN       A27716
*
****             WARNING--  PLEASE NOTE                             ***
*   ONLY CONTROL CARD SWITCHES GO BETWEEN HERE AND 'ENDTAB' OR THE    *
*       SCAN FOR NEXT COMMAND CARD IN 'FLUSH' ROUTINE WILL BE RUINED. *
*
COMDCD   DC    X'00'                   SET ON ADD,REPL,CHNGE,REPRO CARD
COMDCD2  DC    X'00'                   NEXT COMMAND CARD ENCOUNTERED
ALIASW   DC    X'00'                   FLAGS ALIAS PRESENT
ALIASW2  DC    X'00'                   ALIAS PENDING SWITCH        MA0H
REPROSW  DC    X'00'                   SWITCH SET FOR REPRO COMMAND
ADDSW    DC    X'00'                   SET TO INDICATE ADD COMMAND
REPLSW   DC    X'00'                   SET TO INDICATE REPL COMMAND
CHNGESW  DC    X'00'                   INDICATES CHANGE COMD
DELETSW  DC    X'00'                   SET FOR DELET STATEMENT NUMBER 1
DELET2SW DC    X'00'                   DELET PENDING- HOLD CARD READ
NUMBRSW  DC    X'00'                   NUMBR SWITCH
NUMBR2SW DC    X'00'                   NUMBER PENDING- HOLD CARD READ
RENUMALL DC    X'00'                   RENUMBER COMPLETE DATA IF '0F'
INSERTSW DC    X'00'                   BLOCK INSERT IF SET TO '0F'
INSRTRD  DC    X'00'                   FLAG AS INSERT, PROTECTS GR9
NEWNAME  DC    X'00'                   FLAG NEW MASTER PO MEMBER NAME
COLUMNSW DC    X'00'                   SELECTIVE COLUMN UPDATE
IGNORESW DC    X'00'                   PUT FIRST /* ON NM IF SWITCH 0F
IGNORE1  DC    X'00'                   SET TO '01' ON FIRST EOF
PRINTWRT DC    X'00'                   LIST RECORD, WRITE IT SWITCH
RIDIT2SW DC    X'00'                   FLUSH BY DELETE/NUMBER CARDS
NMBUFFR  DC    X'00'                   '0F' IF NM NOT WRITTEN '01' LAST
SSISW    DC    X'00'                   TOTAL SSI GIVEN
FLLISTSW DC    X'00'                   SET TO '01' LIST NM/CT FULL LIST
PARMSW   DC    X'00'                   SET TO INDICATE PARAMETERS FOUND
OMEND    DC    X'00'                   END OF MEMBER OR DATA SET SYSUT1
DONOTRDC DC    X'00'                   DO NOT READ SYSIN IF '0F'
SEQ1SW   DC    X'00'                   SEQUENCE 1 SATISFIED
READNOOM DC    X'00'                   DO NOT READ OLD MASTER IF '0F'
SHORTBLK DC    X'00'                   SET TO '0F' LAST BLOCK NOT FULL
EQUALREC DC    X'00'                   REPLACEMENT RECORD UPDATE INPLAC
STARTMEM DC    X'00'                   SET TO '0F' WHEN UPDATING MEMBER
UPDATCOL DC    H'0'                    PARTIAL UPDATE USUALLY 0
*   END OF CONTROL CARD SWITCHES IS ENDTAB                            *
ENDTAB   DS    0F                      END OF SWITCH TABLE
         SPACE 1
*   **  WARNING--   KEEP DELTSEQ1,DELTSEQ2,NUMRSEQ1,NUMRSEQ2 TOGETHER *
*  AS THEY ARE CLEARED BY A 32 BYTE XC IN FLUSH ROUTINE.              *
*
DELTSEQ1 DC    D'0'                    SEQUENCE START DELET CARD
DELTSEQ2 DC    D'0'                    SEQUENCE END DELET CARD
NUMRSEQ1 DC    D'0'                    SEQUENCE START NUMBR CARD
NUMRSEQ2 DC    D'0'                    SEQUENCE END NUMBR CARD
         SPACE 1
INCRNUMB DC    D'0'                    INCREMENTATION FACTOR
INCREMWA DC    D'0'                    INCREMENT FOR NUMBER
NEW1NUMB DC    D'0'                    STARTING NEW SEQUENCE NUMBER
MEMBNEW  DC    D'0'                    BUFFER FOR NEW PO MEMBER NAME
SSIBUF   DC    D'0'                    SSI INFORMATION BUFFER
ALIASNM  DC    CL128' '                BUFFER FOR ALIAS NAME   @ZA01682
ALIASNM1 DS    A                       ALIAS SAVE POINTER      @ZA01682
ALIASNM2 DS    A                       ALIAS SAVE POINTER      @ZA01682
TEMPINCR DC    D'0'                    TEMPORARY INCR FOR 2ND BLOCK INS
***   WARNING--  KEEP THE 4 NAMES BELOW IN THIS ORDER-              ***
**               SYSIN, SYSPRINT, SYSUT1, SYSUT2                     **
*                                                                     *
SYSINNM  DC    CL8' '                  NAME OF INPUT DD CARD
SYSPRNTN DC    CL8' '                  NAME OF PRINTER DD CARD
SYSUT1NM DC    CL8' '                  NAME OF OLD MASTER DD CARD
SYSUT2NM DC    CL8' '                  NAME OF NEW MASTER DD CARD
         SPACE 1
MEMNAME  DC    CL8' '                  MEMBER NAME FOR PODS
 SPACE 2
***********************************************************************
*        THE FOLLOWING THREE WORD FIELDS CONTAIN THE USER'S LABEL     *
*        EXIT ROUTINE NAME,A ONE BYTE PRINT CONSTANT FOLLOWED BY A    *
*        THREE BYTE ADDRESS OF THE LOADED USER ROUTINE.               *
*                                                                     *
* FIELD  ************************                                     *
*        * USER ROUTINE  *C*ADDR*                                     *
*        ************************                                     *
***********************************************************************
   SPACE 1
USERRTN  DS    3F             CURRENT USER LABEL ROUTINE INFO      UL0H
CTHDR    DS    3F             USER LABEL HEADER ROUTINE ON SYSIN   UL0H
CTTRLR   DS    3F             USER LABEL TRALER ROUTINE ON SYSIN   UL0H
OMHDR    DS    3F             USER LABEL HEADER ROUTINE ON SYSUT1  UL0H
OMTRLR   DS    3F             USER LABEL TRALER ROUTINE ON SYSUT1  UL0H
NMHDR    DS    3F             USER LABEL HEADER ROUTINE ON SYSUT2  UL0H
NMTRLR   DS    3F             USER LABEL TRALER ROUTINE ON SYSUT2  UL0H
STOWAREA DS    CL80'        '          BUFFER USED BY STOW
LISTAREA DS    CL80'        '          BUFFER USED BY BLDL
OMINAREA DS    CL80'        '          BUFFER USED FOR OLD MASTER IMAGE
TEMP     DC    D'0'                    WORK BUFFER CSECT2
LASTCTRC DC    D'0'                    LAST CT SEQUENCE NUMBER
LASTSEQN DC    D'0'                    LAST SEQUENCE ASSIGNED BY NUMBER
TEMPSEQ  DC    D'0'                    LAST SEQUENCE NUMBER NEW SYSIN
FDADSET  DC    D'0'                    START OF MEMBER FDAD MBBCCHHR
TEMPWA   DC    2D'0'                   SAVE AREA FOR SEQUENCE NUMBERS
NEW1TEMP DS    D'0'                    TEMPORARY SEQ NO BUFFER  YM07522
TEXTCTL  DS    CL121                   LOGOUT PRINT BUFFER + CONTROL
TRKBAL   DC    X'0000'       SAVE AREA FOR TRACK BALANCE           5666
SWITCHRD DS    27F                     SCAN BUFFER AND SWITCHES
INPUT    DS    20F                      SYSIN INPUT AREA           BS0H
EXTNTSW  DC    X'00'         OLD AND NEW SAME DATA SET             5324
STOREG   DS    3F                      SAVES SCAN REGISTERS
JFCBAREA DS    CL176               AREA INTO WHICH JFCB IS READ    3341
         DS    0D                  ALIGN DSCBAREA ON DOUBLE WORD   3341
DSCBAREA DS    CL350               WORK AREA FOR OBTAIN MACRO      3341
DSCBLIST DS    4F                  LIST OF INFORMATION FOR OBTAIN  3341
ADEVTYPE DS    2F                  AREA FOR DEVTYPE MACRO INFO     3341
BLOKSW   DC    X'00'                   SET IF BLOCKSIZE NOT 80     UL0H
BLOKFCTP DC    F'00'                                               UL0H
OMBLOCKP DC    F'0'                    OM BLOCK FACTOR/LENGTH RECORD
OMREADP  DC    F'0'                    ADDRESS OF OLD MASTER BUFFER
OMREADT  DC    F'0'                    ADDRESS OF OLD MASTER RECORD
NMWRITEP DC    F'0'                    ADDRESS OF NEW MASTER BUFFER
NMWRITET DC    F'0'                    ADDRESS OF NEW MASTER RECORD
READINAP DC    F'0'                    ADDRESS OF SYSIN BUFFER
LASTRECB DC    F'0'                    ADDRESS OF LAST RECORD PROCESSED
NEXTINSR DC    F'0'                    ADDRESS OF NEXT INSERT RECORD
OMLBLPTR DC    F'00'                    ADDR OF OMLABELS           UL0H
LABELBUF DC    F'00'                    ADDR OF GOTTEN CORE SAVE ARUL0H
USYSNBUF DC    F'00'                                               UL0H
UPDATBUF DC    F'00'                    ADDR OF SPECIAL UPDATE AREAUL0H
TOTALSIZ DC    F'00'                    SIZE SPECIFIED BY USER     UL0H
TOTALRTN DC    D'00'                    USER ROUTINE FOR TOTALING  UL0H
TOTALADR DC    F'00'                    ADDRESS OF TOTAL ROUTINE   UL0H
TOTLPARM DC    4F'0'                    USER TOTALING PARM LIST    000I
TOTRTNCD DC    H'00'                    RETURN CODE FROM TOTAL RTN UL0H
OMLABELS DS    160F                     EIGHT 80 BYTE LABEL SAVE ARUL0H
IDENTXX  DC    X'00480008'             SEQUENCE COLUMN-1,AND SIZE 73-8
IDENTNN  DS    F                        NUMERIC SEQ NO DDL      YM07522
NUMOFFST DS    H                        NUMERIC OFFSET FROM END YM07522
*   POINTER TO DCB'S CONTAINED IN CSECT1  (IEBUPDAT)
DCBLOG   DS    F                       POINTER TO LOG (SYSPRINT) DCB
DCBCT    DS    F                       POINTER TO SYSIN DCB
DCBOM    DS    F                       POINTER TO OLD MASTER (SYSUT1)
DCBNM    DS    F                       POINTER TO NEW MASTER (SYSUT2)
*   CONSTANTS FOR INITIALIZATION ROUTINE
USRHDPTR DC    F'0'                    POINTER TO USER HEADER LABEL
USRTRPTR DC    F'0'                    POINTER TO USER TRAILER LABEL
PAGENO   DC    F'0'                    NUMBER FIELD OF PAGE REFERENCE
NMBLOCKP DC    F'0'                    NM BLOCK FACTOR/LOGICAL RECORD
SAVE13   DS    F                       POINTER TO SUPERVISOR REGISTERS
SEQWA    DC    F'0'                    STARTING SEQUENCE NUMBER
TEMPSEQA DC    F'0'                    TEMPORARY BUFFER 2ND (EW1 BLOCK
MAXSIZEL DC    H'80'                   ASSUMED LRECL
LRECL    DC    H'0'                    LOGICAL RECORD LENGTH SYSUT1/2
SOURCECD DC    X'FF'                   C'1'=IBM,C'0'=USER,'FF'=LEAVE IT
FLBLK    DC    H'00'                   ORIGINAL BLOCKSIZE          3628
SHRTBLK  DC    H'00'                   COMPUTED SHORT BLOCK ON READ3628
DSECTEND DS    0D                      END OF DSECT
         SPACE 1
*   THE FOLLOWING ARE THE CODES FOR MESSAGES. MESSAGES ARE CONTAINED  *
*  IN CSECT 'IEBUPLOG', THE MESSAGE CSECT. IN ALL CSECTS GR11 IS      *
*  LOADED WITH THE MESSAGE CODE NUMBER TO ENABLE THE MESSAGE WRITER   *
*  TO SELECT THE DESIRED MESSAGE. MESSAGES ARE OF VARIABLE LENGTHS    *
*  DETERMINED BY THE EQUATES IN THE 'IEBUPLOG' CSECT.                 *
         SPACE 1
BLOKSMSG EQU   X'01'                   NUMBER OF BLOCKSIZE ASSUMED 80
IOERR    EQU   X'02'           NUMBR OF I/O ERROR MESSAGE        A27716
FINDMSG  EQU   X'03'       NUMBER FOR FIND I/O ERROR MSG         A27716
BLDLMSG  EQU   X'04'       NUMBER FOR BLDL I/O ERROR MSG         A27716
SCANMSG  EQU   X'05'                   NUMBER OF CONTROL STATEMENT MSG
SEQMSG   EQU   X'06'                   NUMBER OF STATEMENT SEQUENCE MSG
ERROP    EQU   X'07'                   NUMBER OF INVALID OPERATION MSG
FLUSHING EQU   X'08'                   NUMBER OF FLUSH TO NEXT MEMBER
CARDSKIP EQU   X'09'                   NUMBER OF IGNORE CARD IN FLUSH
DELMSG   EQU   X'10'                   NUMBER OF DELETE RANGE ERROR MSG
NUMMSG   EQU   X'11'                   NUMBER OF NUMBER RANGE ERROR MSG
ERRDRIO  EQU   X'12'                   NUMBER OF DIRECTORY WRITE ERROR
ERRDIRF  EQU   X'13'                   NUMBER OF OUTPUT DIRECTORY FULL
NTOPMSG  EQU   X'14'                   NUMBER OF DS NOT OPENED MESSAGE
ERRMSGC  EQU   X'15'                   NUMBER OF ONLY 1 PS PROCESSED
STOWMSGN EQU   X'16'                   NUMBER OF NAME FOUND AND ALTERED
STOWMSGT EQU   X'17'                   NUMBER OF NAME NOT FOUND MSG
CONCDMSG EQU   X'18'                   NUMBER OF CONDITION CODE MESSAGE
EOJMESSG EQU   X'19'                   END OF JOB MESSAGE
UPDATMSG EQU   X'20'                   NUMBER OF CANNOT UPDATE INPLACE
PLUS8MSG EQU   X'21'                   NUMBER OF INVALID EXIT MESSAGE
USRTRMSG EQU   X'22'                   NUMBER OF EXIT RETURN ERROR MSG
ERRMSGN  EQU   X'23'                   NUMBER OF NULL DATA SET MESSAGE
PSALIAS  EQU   X'25'                   NUMBER OF IGNORE ALIAS IN PS
ALTTRUE  EQU   X'26'                   NUMBER OF ALIAS TO TRUE MESSAGE
BADPARMG EQU   X'27'                   NUMBER OF INVALID INPUT PARM MSG
PAGEMSG  EQU   X'28'                   NUMBER OF INVALID PAGE PARM MSG
DDNAMEMG EQU   X'29'                   NUMBER OF INVALID DD NAME MSG
SIZEBAD  EQU   X'30'                   OLD MASTER /NEW MASTER LRECL
DSORGBAD EQU   X'31'               OM AND NM DSORGS INCOMPATIBLE   3341
USRLBLMS EQU   X'32'                    ROUTINE IS PROCESSING LABELUL0H
LBLENTMS EQU   X'33'                    NO. OF ENTRANCES MSG       UL0H
LSTRCMSG EQU   X'34'                    LAST RETURN CODE FROM  USERUL0H
SEQDSMSG EQU   X'35'                    SUPPORTED ON SEQUENTIAL DS UL0H
INPLBLMS EQU   X'36'                    TRAILERS NOT ON UPDATE     UL0H
LBLERMSG EQU   X'37'                    I/O ERROR DURING LABEL PROCUL0H
NOLBLMSG EQU   X'38'                    NO. LABELS CREATED FROM IN UL0H
TOTENTMS EQU   X'39'                    ROUTINE IS TAKING TOTAL XITUL0H
TOTTERM  EQU   X'40'                    ROUTINE TERM. TOTAL EXITS  UL0H
TOTBDRCD EQU   X'41'                    INVALID RETURN CODE -TOTAL UL0H
TOTNTSPT EQU   X'42'                    TOTALING NOT SUPPORT- UPDATUL0H
BDCORESZ EQU   X'43'                    INVALID CORE SIZE--TOTALINGUL0H
NOULXSTM EQU   X'44'                    NO USER LABELS EXIST       UL0H
NOULCRTM EQU   X'45'                    NO USER LABELS CREATED     UL0H
UPALIAS  EQU   X'46'                                               UL0H
         SPACE 1
DSECTSIZ EQU   DSECTEND-IEBUPCON       SIZE OF DSECT
SIZETAB  EQU   ENDTAB-STARTAB-1        SIZE OF SWITCHES
CONTCLER EQU   ENDTAB-COMDCD-1         EXTENT OF CONTROL CARD SWITCHES
         SPACE 1
LOGOUTAR EQU   TEXTCTL+1               DATA PORTION OF PRINT BUFFER
IDENTY   EQU   IDENTXX+2               EXTENT OF SEQUENCE NUMBER
IDENTN   EQU   IDENTNN+2                EXTENT OF NUMERIC       YM07522
LASTCOLM EQU   SWITCHRD+72        LAST COLUMN                      3185
PARAMSW  EQU   SWITCHRD+81             PARAMETER FOLLOWS, CONTINUATION
SAVEPAPR EQU   SWITCHRD+83             SAVE AREA FOR PARTIAL PARAMETERS
COL72LG  EQU   SWITCHRD+103            COLUMN 72 SWITCH AND LENGTH SW
DELIMIN  EQU   SWITCHRD+106            DELIMITER INDICATORS
DELIMIN2 EQU   SWITCHRD+107            DELIMITER INDICATORS
NMBLOCKT EQU   NMBLOCKP+2              LOGICAL RECORD USED
OMBLOCKT EQU   OMBLOCKP+2              LOGICAL RECORD USED COUNT
         MEND
./ ADD NAME=IECDBEB
         MACRO
         IECDBEB
BEB      DSECT
         SPACE 1
**********************************************************************
*                                                                    *
*        THE BEB  CONTAINS POINTERS WHICH DESCRIBE THE REAL          *
*        CHANNEL PROGRAM SEGMENT (S) WHICH IT CONTAINS. TWO SETS     *
*        OF SUCH POINTERS ARE CONTAINED WITH ROOM FOR 15 CCWS.       *
*                                                                    *
**********************************************************************
         SPACE 1
BEBCHAIN DS    A                   POINTER TO NEXT BEB
BEBFLAG  DS    XL1                 FLAGS CONTAINED IN BEB
         SPACE 1
*   BIT SETTINGS IN BEBFLAG
         SPACE 1
BEB2INUS EQU   X'80'               SECOND SET OF POINTERS IN USE
BEBNOPTC EQU   X'40'               NOP TIC USED FOR TIC INSERTION
*                                  ALL OTHER FLAGS NOT USED
         SPACE 1
         DS    AL3                 UNUSED
BEBRLST  DS    A                   START OF REAL CHANNEL PGM SGMT
BEBRLEN  DS    A                   END OF REAL CHANNEL PGM SEGMENT
BEBVRST  DS    A                   START OF VIRTUAL CHANNEL PGM SGMT
BEBVREN  DS    A                   END OF VIRTUAL CHANNEL PGM SGMT
BEBRLST2 DS    A                   SECOND REAL START
BEBRLEN2 DS    A                   SECOND REAL END
BEBVRST2 DS    A                   SECOND VIRTUAL START
BEBVREN2 DS    A                   SECOND VIRTUAL END
BEBSCCW  DS    D                   FIRST CCW AREA
BEBHL    EQU   BEBVREN2+L'BEBVREN2-BEB HEADER LENGTH
BEBPTRLN EQU   BEBVREN+L'BEBVREN-BEBRLST SET OF POINTERS LENGTH
BEBEL    EQU   L'BEBSCCW           CCW LENGTH
BEBNE    EQU   15                  NUMBER OF CCWS IN BEB
BEBBL    EQU   BEBHL+BEBEL*BEBNE   SIZE OF A BEB
         MEND
./ ADD NAME=IECDCAT
*%       GOTO  CATPLS1;             /* BILINGUAL MACRO
         MACRO
         IECDCAT
         DSECT
CAT      DS    0F
         SPACE 1                   */
*%CATPLS1 : ;
*/* ******************************************************************/
*/*                                                                  */
*/*              5740-XYN COPYRIGHT IBM CORP 1980,                   */
*/*              LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,         */
*/*              REFER TO COPYRIGHT INSTRUCTIONS, FORM NUMBER        */
*/*              G120-2083.                                          */
*/*                                                                  */
*/*  THIS DSECT DESCRIBES AN ENTRY IN THE CHANNEL AVAILABILITY       */
*/*  TABLE. THE TABLE IS CHANNEL SET RELATED AND RESIDES IN SQA.     */
*/*  EACH PHYSICAL CHANNEL IN THE CHANNEL SET CONTAINS AN ENTRY      */
*/*  IN THE CAT AND IS INDEXED BY THAT CHANNEL NUMBER. THE ENTRY     */
*/*  CONTAINS THE CHANNEL ID, CHANNEL STATUS, AND CHANNEL            */
*/*  STATISTICS.                                                     */
*/*  MODIFICATIONS ARE SERIALIZED VIA DISABLED STATE                 */
*/*  IN THE CPU CONNECTED TO THIS CAT'S CHANNEL SET.                 */
*/*                                                                  */
*/*  FLAG REASON   PRODUCT DATE   ORIG. COMMENTS                     */
*/*  $L1= IOQUING ,JBB1326,800529,PDLN: BUSY HANDLING BY CHANNEL     */
*/*                                                                  */
*/* ******************************************************************/
* %      GOTO CATPLS2;             /*
         SPACE 1
CATFLG   DS    XL1                 CAT ENTRY FLAG BYTE
CATRES1  EQU   X'80'               RESERVED
CATNOP   EQU   X'40'               CHANNEL NOT OPERATIVE
CATNGEN  EQU   X'20'               CHANNEL NOT SYSGENNED
CATNCPU  EQU   X'10'               CHANNEL NOT ON THIS CPU
CATNID   EQU   X'08'               CHANNEL ID (CATCHID) INVALID
CATFLG5  EQU   X'04'               RESERVED
CATFLG6  EQU   X'02'               RESERVED
CATDSABL EQU   X'01'               CHANNEL DISABLED            @ZA30350
CATFLA   DS    XL1                 IOS FLAG BYTE
CATBSY   EQU   X'80'               CHANNEL BUSY
CATIORST EQU   X'40'               CHAN NEED I/O RESTART       @G552PLM
CATCCRST EQU   X'20'               CHAN ERR ON I/O INTERRUPT   @G51BPLM
CATMCRST EQU   X'10'               CHAN ERR ON MACH CHK INTRPT @G51BPLM
CATSOL   EQU   X'08'               SIO CC=0 DONE               @ZA30350
CATFLARS EQU   X'07'               RESERVED                    @ZA30350
CATSIOCT DS    XL2                 CHANNEL SIO COUNT
CATCHID  DS    0XL4                CHANNEL ID
CATTYPE  DS    0XL1                CHANNEL TYPE (4 BITS ONLY)  @G64APLK
CATMODEL DS    XL2                 CHANNEL MODEL NUMBER        @G64APLK
CATIOELL DS    XL2                 IOEL LENGTH                 @G64APLK
CATCHQLN DS    XL1                 CHANNEL QUEUE LENGTH        @G874PLQ
         DS    XL1                 RESERVED                        @L1C
CATIOCNT DS    H                   ACTIVE I/O COUNTER              @L1A
         DS    XL4                 RESERVED                        @L1A
CATELP2  EQU    4                  ENTRY LENGTH IN POWERS OF 2 @G64APLK
CATEL    EQU   *-CAT               CHANNEL TABLE ENTRY LENGTH
CATDIM   EQU   16                  NUMBER OF CAT ENTRIES IN THE FULL
*                                  CHANNEL AVAILABILITY TABLE  @G64APLK
         MEND  ,                   */
*%CATPLS2 : ;
*   DCL 1 CAT  BASED(CATPTR),
*       2 CATENTRY CHAR(1),        /* ENTRY NAME              */
*         3 CATFLG CHAR(1),        /* CAT FLAG BYTE           */
*          4 CATRES1 BIT(1),       /* RESERVED                */
*          4 CATNOP  BIT(1),       /* CHANNEL NOT OPERATIVE   */
*          4 CATNGEN BIT(1),       /* CHANNEL NOT SYSGENNED   */
*          4 CATNCPU BIT(1),       /* CHANNEL NOT ON THIS CPU */
*          4 CATNID  BIT(1),       /* CHANNEL ID INVALID      */
*          4 CATFLG5 BIT(1),       /* RESERVED                */
*          4 CATFLG6 BIT(1),       /* RESERVED                */
*          4 CATDSABL BIT(1),      /* CHANNEL DISABLED       @ZA30350*/
*       2 CATFLA   BIT(8),         /* IOS FLAG BYTE           */
*         3 CATBSY  BIT(1),        /* CHANNEL BUSY            */
*         3 CATIORST BIT(1),       /* CHAN NEEDS I/O RESTART @G552PLM*/
*         3 CATCCRST BIT(1),       /* CHAN ERR I/O INTRUPT   @G51BPLM*/
*         3 CATMCRST BIT(1),       /* CHAN ERR ON MACH CHK   @G51BPLM*/
*         3 CATSOL BIT(1),         /* SIO CC=0 DONE          @ZA30350*/
*         3 CATFLARS BIT(3),       /* RESERVED               @ZA30350*/
*       2 CATSIOCT  CHAR(2),       /* CHANNEL SIO COUNT       */
*       2 CATCHID,                 /* CHANNEL ID              */
*         3 CATTYPE BIT(4),        /* CHANNEL TYPE           @G64APLK*/
*         3 CATMODEL BIT(12),      /* CHANNEL MODEL NUMBER   @G64APLK*/
*         3 CATIOELL FIXED(16),    /* IOEL LENGTH            @G64APLK*/
*       2 CATCHQLN FIXED(8),       /* CHANNEL QUEUE LENGTH   @G874PLQ*/
*       2 *         CHAR(1),       /* RESERVED                   @L1C*/
*       2 CATIOCNT FIXED(15),      /* ACTIVE I/O COUNTER         @L1A*/
*       2 *         CHAR(4),       /* RESERVED                   @L1A*/
*       2 CATEND  CHAR(0);         /* END OF CAT              */
*   DCL CATELP2 BIT(8) CONSTANT('04'X),  /* ENTRY LENGTH IN
*                                     POWERS OF 2            @G64APLK*/
*      CATDIM CONSTANT(16);        /* NUMBER OF CAT ENTRIES IN THE FULL
*                                     CHANNEL AVAILABILITY TABLE
*                                                            @G64APLK*/
*
*%DCL  CATEL  CHAR;                /* LENGTH OF CAT           */
*%CATEL='ADDR(CATEND)-ADDR(CATENTRY)';
./ ADD NAME=IECDCPT
* %      GOTO  CPTPLS;        /* GO TO THE PL/S VERSION             */
*
         MACRO
         IECDCPT
.*    COPYRIGHT =
.*       5740-XYN COPYRIGHT IBM CORP 1977, 1980;               @G81LPLR
.*       LICENSED MATERIAL-PROGRAM; PROPERTY OF IBM;
.*       REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER
.*       G120-2083.
.*
.*000000-999999                                                @G50GPLK
CPT      DSECT
         SPACE 1
**********************************************************************
*                                                                    *
*   CHANNEL PATH TABLE (POINTED TO BY LCH FIELD LCHTCH)              *
*                                                                    *
**********************************************************************
         SPACE 1
CPTFIRST DS    0H             CHANNEL PATH TABLE
CPTPCHAN DS    H              PRIMARY CHANNEL ENTRY
CPTSCHAN DS    H              SECONDARY CHANNEL ENTRY OR TERMINATOR OF
*                             *X'FFFF' IF NO ALTERNATE CHANNEL
         SPACE 1
*  THE FOLLOWING FIELDS EXIST ONLY IF AN ALTERNATE CHANNEL WAS
*  SPECIFIED VIA 'OPTCHAN' DURING SYSGEN
CPTEND1  DS    H              TERMINATOR OF X'FF00'
CPTSWTCH DS    2XL1           SWITCH BYTES INDEXED BY CPU ADDRESS
*                             *AND USED BY CHANNEL ROTATE ALGORITHM
CPTSWBIT EQU   X'88'          USED TO FLIP CPTSWTCH
         SPACE 2
CPTSEC   DS    0H             ROTATED CHANNEL PATH TABLE
CPTSCHN2 DS    H              SAME AS CPTSCHAN
CPTPCHN2 DS    H              SAME AS CPTPCHAN
CPTEND2  DS    H              TERMINATOR OF X'FFFF'
         SPACE 2
* THE FOLLOWING MAPS A CHANNEL PATH TABLE ENTRY
         SPACE 1
CPTE     DSECT
CPTENTRY DS    0H             CPT ENTRY
CPTCHAN  DS    XL1            PHYSICAL CHANNEL NUMBER OR FF TERMINATOR
CPTFLAGS DS    XL1            FLAG BYTE
CPTSELSC EQU   X'F0'          BYTE MULTIPLEXER SELECTOR SUBCHANNEL NO.
CPTPPATH EQU   X'08'          PRIMARY CHANNEL SPECIFIED BY CPTCHAN
CPTSPATH EQU   X'04'          SECONDARY CHANNEL SPECIFIED BY CPTCHAN
CPTRESV  EQU   X'03'          RESERVED
CPTELEN  EQU   L'CPTENTRY    'SINGLE ENTRY LENGTH
         MEND
*%CPTPLS: ;
*
* /*******************************************************************/
* /*                                                                 */
* /*  CHANNEL PATH TABLE (POINTER TO BY LCH FIELD LCHTCH)            */
* /*                                                                 */
* /*******************************************************************/
*
*   DCL  1 CPT BASED,        /* CHANNEL PATH TABLE                   */
*           2 CPTFIRST,
*              3 CPTPCHAN FIXED(16), /* PRIMARY CHANNEL ENTRY        */
*              3 CPTSCHAN FIXED(16), /* SECONDARY CHANNEL ENTRY OR
*                                       TERMINATOR OF 'FFFF'X IF NO
*                                       ALTERNATE CHANNEL            */
* /* THE FOLLOWING FIELDS EXIST ONLY IF AN ALTERNATE CHANNEL WAS     */
* /* SPECIFIED VIA 'OPTCHAN' DURING SYSGEN                           */
*              3 CPTEND1 FIXED(16), /* TERMINATOR OF 'FF00'X         */
*          2 CPTSWTCH(2) BIT(8), /* SWITCH INDEXED BY CPU ADDRESS AND
*                                  USED BY CHANNEL ROTATE ALGORITHM  */
*          2 CPTSEC,        /* ROTATED CHANNEL PATH TABEL            */
*              3 CPTSCHN2 FIXED(16), /* SAME AS CPTSCHAN             */
*              3 CPTPCHN2 FIXED(16), /* SAME AS CPTPCHAN             */
*              3 CPTEND2 FIXED(16); /* TERMINATOR OF 'FFFF'X         */
*  DCL CPTSWBIT BIT(8) CONSTANT('88'X); /* USED TO FLIP CPTSWTCH     */
*@SPACE;
* /*  THE FOLLOWING MAPS A CHANNEL PATH TABLE ENTRY                  */
*
*  DCL  1 CPTE BASED BDY(HWORD), /* CPT ENTRY                        */
*          2 CPTENTRY CHAR(2),
*             3 CPTCHAN BIT(8), /* PHYSICAL CHANNEL NUMBER OR 'FF'X
*                                  TERMINATOR                        */
*             3 CPTFLAGS,    /* FLAG BYTE                            */
*                4 CPTSELSC BIT(4), /* BYTE MULTIPLEXER SELECTOR
*                                      SUBCHANNEL NUMBER             */
*                4 CPTPPATH BIT(1), /* PRIMARY CHANNEL SPECIFIED
*                                      BY CPTCHAN                    */
*                4 CPTSPATH BIT(1), /* SECONDARY CHANNEL SPECIFIED
*                                      BY CPTCHAN                    */
*                4 CPTRESV BIT(2); /* RESERVED                       */
./ ADD NAME=IECDCRCA
*%GOTO CRCAPLS ;   /* BILINGUAL MAPPING */
         MACRO
         IECDCRCA   &DSECT=YES
.*A000000-999999                                                Y30CQLF
*%CRCAPLS: ;
*              /* BILINGUAL MAPPING
***********************************************************************
********************       OS/VS2 REL3             ********************
*****     CHANNEL RECONFIGURATION HARDWARE COMMUNICATIONS AREA    *****
********************        MAY 16, 1974           ********************
**********************************************************************/
*%GOTO CRCAPL2 ;   /*
         AIF   ('&DSECT' EQ 'YES').DSECT
IECVCRCA DS    0D
         AGO   .NDSECT
.DSECT   ANOP
CRCA     DSECT
         DS    0D
.NDSECT  ANOP
CRCAID   DC    CL4'CRCA'               CRCA IDENTIFIER
***********************************************************************
***                      CRCA FLAGS                                 ***
***********************************************************************
CRCAFLGS DS    0F                      FLAGS
CRCAFLG1 DC    X'00'                   FIRST FLAG BYTE
CRCADIAG EQU   X'80'                   CRH CONNECTION OUTSTANDING
CRCADINT EQU   X'40'                   CRH INTERRUPT - FLAG FOR CCH
CRCACCH  EQU   X'20'                   CHANNEL BURP  - FLAG FOR IOS
CRCAHIO  EQU   X'10'                   CRH INTERRUPT - FLAG FROM HIO
CRCAFTIM EQU   X'08'                   CRHT 1ST TIME ENTERED   @ZM30496
*
CRCAFLG2 DC    X'00'                   SECOND FLAG BYTE
CRCAFLG3 DC    X'00'                   RESERVED
CRCAFLG4 DC    X'00'                   RESERVED
***********************************************************************
****              MAINTENANCE CONTROL WORD                         ****
***********************************************************************
CRCAMCW  DS    0D                      USED BY ALL CRH ROUTINES TO
*                                      CONTROL THE HARDWARE
CRCAMCWZ DC    X'01'                   MCW CHANNEL FUNCTION BYTE
CRCAMCWY EQU   X'01'                   BIT ALWAYS ON IN MCW FOR CRH
         DC    XL2'00'                 UNUSED BY CRH
CRCAMCWF DC    X'00'                   MCW CRH FUNCTION BYTE
CRCAMCWI EQU   X'20'                   MCW FOR CRH
CRCAMCWM EQU   X'10'                   ORING FLAG-MAKE CRH CONNECTION
CRCAMCWB EQU   X'EF'                   ANDING FLAG-BREAK CRH CONNECTION
         DC    F'0'                    UNUSED BY CRH
***********************************************************************
***                         ADDRESSES                               ***
***********************************************************************
CRCACRHT DC    V(IECVCRHT)             ADDRESS OF TIMER POP ROUTINE
CRCACRH1 DC    V(IECVCRH1)             ADDRESS OF TCH HOOK ROUTINE
CRCACRH2 DC    V(IECVCRH2)             ADDRESS OF SIO HOOK ROUTINE
CRCACRH3 DC    V(IECVCRH3)             ADDRESS OF SENSE HOOK ROUTINE
CRCACINT DC    V(IECVCINT)             ADDRESS OF CRH SLIH
CRCAPCCA DC    A(0)                    ADDRESS OF PCCA FOR DEAD CPU
CRCACAT  DC    A(0)                    ADDRESS OF CAT FOR DEAD CPU
CRCARSV1 DC    2F'0'                   RESERVED
***********************************************************************
****                        CRCA WORK AREAS                        ****
***********************************************************************
CRCACHAN DC    H'0'                    CHANNEL ID OF CONNECTED CHANNEL
CRCARSV2 DC    H'0'                    RESERVED
CRCACTIM DC    D'0'                    CURRENT TIME - USED BY IECVCRHT
CRCAITIM DC    D'0'                    TIME OF LAST I/O INTERRUPT
CRCARSV3 DC    2F'0'                   RESERVED
CRCAEND  EQU   *
***********************************************************************
         MEND  ,                       */
*%CRCAPL2: ;
  DCL 1 CRCA BASED(CRCAPTR),
        2 CRCAID CHAR(4),              /* CRCA IDENTIFIER            */
 /********************************************************************/
 /*                         CRCA FLAGS                               */
 /********************************************************************/
        2 CRCAFLGS,                    /* FLAGS                      */
          3 CRCAFLG1 CHAR(1),          /* FIRST FLAG BYTE            */
            4 CRCADIAG BIT(1),         /* CRH CONNECTION OUTSTANDING */
            4 CRCADINT BIT(1),         /* CRH INTERRUPT-FLAG FOR CCH */
            4 CRCACCH  BIT(1),         /* CHANNEL BURP -FLAG FOR IOS */
            4 CRCAHIO  BIT(1),         /* CRH INTERRUPT-FLAG FROM HIO*/
            4 CRCAFTIM BIT(1),         /* CRHT 1ST TIME IN   @ZM30496*/
            4 *        BIT(3),         /* RESERVED           @ZM30496*/
          3 CRCAFLG2 CHAR(1),          /* SECOND FLAG BYTE           */
          3 CRCAFLG3 CHAR(1),          /* RESERVED                   */
          3 CRCAFLG4 CHAR(1),          /* RESERVED                   */
 /********************************************************************/
 /*                         MAINTENANCE CONTROL WORD                 */
 /********************************************************************/
        2 CRCAMCW CHAR(8) BDY(DWORD),  /* USED BY ALL CRH ROUTINES
                                          TO CONTROL THE HARDWARE    */
          3 CRCAMCWZ CHAR(1),          /* CHANNEL FUNCTION BYTE      */
            4 *        BIT(7),         /* UNUSED BY CRH              */
            4 CRCAMCWY BIT(1),         /* BIT ALWAYS ON FOR CRH      */
          3 *        CHAR(2),          /* UNUSED BY CRH              */
          3 CRCAMCWF CHAR(1),          /* MCW CRH FUNCTION BYTE      */
            4 *        BIT(2),         /* UNUSED BY CRH              */
            4 CRCAMCWI BIT(1),         /* BIT ON-MCW FOR CRH         */
            4 CRCAMCWM BIT(1),         /* BIT ON-MAKE CRH CONNECTION
                                         BIT OFF-BREAK CRH CONNECTION*/
            4 CRCAMCWC BIT(4),         /* CHANNEL NUMBER OF CONNECTED
                                          CHANNEL                    */
          3 *        CHAR(4),          /* UNUSED BY CRH              */
 /********************************************************************/
 /*                         ADDRESSES                                */
 /********************************************************************/
        2 CRCACRHT PTR(31),            /* ADDRESS OF TIMER POP RTN.  */
        2 CRCACRH1 PTR(31),            /* ADDRESS OF TCH HOOK ROUTINE*/
        2 CRCACRH2 PTR(31),            /* ADDRESS OF SIO HOOK ROUTINE*/
        2 CRCACRH3 PTR(31),            /* ADDRESS OF SENSE HOOK RTN. */
        2 CRCACINT PTR(31),            /* ADDRESS OF CRH SLIH        */
        2 CRCAPCCA PTR(31),            /* ADDR OF PCCA FOR DEAD CPU  */
        2 CRCACAT  PTR(31),            /* ADDRESS OF CAT FOR DEAD CPU*/
        2 CRCARSV1 CHAR(8),            /* RESERVED                   */
 /********************************************************************/
 /*                         CRCA WORK AREAS                          */
 /********************************************************************/
        2 CRCACHAN CHAR(2) BDY(WORD),  /* CHANNEL ID OF CONNECTED
                                          CHANNEL                    */
        2 CRCARSV2 CHAR(2),            /* RESERVED                   */
        2 CRCACTIM CHAR(8) BDY(DWORD), /* CURRENT TIME - USED BY
                                          IECVCRHT                   */
        2 CRCAITIM CHAR(8) BDY(DWORD), /* TIME OF LAST I/O INTERRUPT */
        2 CRCARSV3 CHAR(8),            /* RESERVED                   */
        2 CRCAEND  CHAR(*);
 /********************************************************************/
./ ADD NAME=IECDEPCB
         MACRO
         IECDEPCB
***********************************************************************
*                  EXCP PURGE CONTROL BLOCK                           *
*                                                                     *
*        THE EXCP PURGE CONTROL BLOCK IS BUILT BY EXCP PURGE          *
*        SUBROUTINE AND IS USED BY EXCP RESTORE SUBROUTINE TO         *
*        RESTORE THE PURGED REQUESTS IN THE APPROPRIATE PROTECT       *
*        KEY AND UNDER THE APPROPRIATE TCB.                           *
*                                                                     *
***********************************************************************
         SPACE 2
EPCB     DSECT
EPCBCHN  DS    F                   CHAIN TO NEXT EPCB BLOCK
EPCBRTCB DS    A                   1ST I/O REL REQ TCB ADDR    @YM06170
EPCBENT  DS    0F                  POINTER TO CURRENT ENTRY
EPCBNENT DS    XL1                 NUMBER OF FREE ENTRIES IN
*                                  TABLE
EPCBENTY DS    AL3                 SAME AS EPCBENT
* A SPECIFIC ENTRY IS DESCRIBED BELOW
EPCBIOB  DS    0F                  IOB ADDRESS OF THE REQUEST
EPCBPKEY DS    X                   PROTECT KEY OF THE REQUEST
*                                  ORIGINALLY ISSUED.
EPCBIOBA DS    AL3                 IOB ADDRESS OF THE REQUEST
*                                  TO BE RESTORED
EPCBTCB  DS    A                   ADDRESS OF THE TCB OR ZEROS
*                                  IF THE PURGE REQUEST WAS NOT
*                                  MEMORY QUIESCE OR ORIGINATING
*                                  TCB RESTORE WAS NOT SPECIFIED
*                                  THIS ADDRESS WILL BE ZERO TO
*                                  SPECIFY RESTORE TO TCB THAT
*                                  REQUESTED THE RESTORE.
EPCBENTL EQU   *-EPCBIOB           ENTRY LENGTH
*        END OF ENTRIES IS DEPICTED AS A FULL WORD OF ZEROS
*        FOLLOWING THE LAST ENTRY.
EPCBHDRL EQU  EPCBIOB-EPCB        LENGTH OF HEADER             @ZA00884
*                                                          *   @ZA00884
EPCBBL   EQU   188                 SIZE OF A SPECIFIC EPCB BLK @YM06170
EPCBNE   EQU  (EPCBBL-EPCBHDRL)/EPCBENTL  NUMBER OF ENTRIES    @ZA00884
         MEND
./ ADD NAME=IECDFIX
         MACRO
         IECDFIX
FIX      DSECT
         SPACE 1
**********************************************************************
*                                                                    *
*        THIS DSECT DESCRIBES THE FIX LIST WHICH IS BUILT BY THE     *
*        CCW TRANSLATOR TO FIX DATA PAGES. THERE IS A CHAIN POINTER  *
*        AND ROOM FOR 19 FIX ENTRIES.                                *
*                                                                    *
**********************************************************************
         SPACE 1
FIXCHAIN DS    A                   POINTER TO NEXT FIX LIST
FIXECB   DS    A                   FIX LIST ECB USED FOR PAGE FIX
FIXLSTST DS    A                   START ADDRESS OF AREA TO BE FIXE
FIXLSTEN DS    A                   END ADDRESS OF AREA TO BE FIXED
FIXHL    EQU   FIXLSTST-FIX        HEADER LENGTH
FIXEL    EQU   FIXLSTEN+L'FIXLSTEN-FIXLSTST ENTRY LENGTH
FIXNE    EQU   19                  NUMBER OF FIX LIST ENTRIES
FIXBL    EQU   FIXHL+FIXEL*FIXNE   SIZE OF FIX LIST BLOCK
FIXCONT  EQU   X'80'               FIX CONTINUATION FLAG
LASTENT  EQU   X'80'               LAST ENTRY FLAG
UNFIXIND EQU   X'20'               UNFIX INDICATOR
         MEND
./ ADD NAME=IECDHIDT
*        %GOTO HIDT1;              /*HIDT MAPPING
         MACRO
         IECDHIDT
*************** START OF SPECIFICATIONS *******************************
*                                                                     *
* MODULE NAME - IECVHIDT                                              *
*                                                                     *
* DESCRIPTIVE NAME - HOT IO DETECTION THRESHOLDS                      *
*                                                                     *
* COPYRIGHT - NONE                                                    *
*                                                                     *
* STATUS -                                                            *
*                                                                     *
* FUNCTION -                                                          *
*   THIS NON-EXECUTABLE MODULE CONTAINS THE THRESHOLDS USED BY        *
*   IECVHDET TO DETERMINE IF HOT I/O IS OCCURRING. THE CONTENTS       *
*   OF THIS MODULE ARE MAPPED BY IECDHIDT.                            *
*                                                                     *
*   OPERATION - NA                                                    *
*                                                                     *
* METHOD OF ACCESS                                                    *
*   TO CREATE CSECT USE BAL:                                          *
*     IECDHIDT                                                        *
*   TO GET MAPPING USE PLS:                                           *
*     INCLUDE IECDHIDT FROM SYSLIB                                    *
*                                                                     *
* NOTES -                                                             *
*                                                                     *
*   DEPENDENCIES -                                                    *
*     NONE OF THE THRESHOLDS MAY BE CHANGED TO A VALUE SMALLER THAN 2 *
*                                                                     *
*   RESTRICTIONS - NONE                                               *
*                                                                     *
*   REGISTER CONVENTIONS - NA                                         *
*                                                                     *
*   PATCH LABEL - NONE                                                *
*                                                                     *
* MODULE TYPE - NON-EXECUTABLE                                        *
*                                                                     *
*   PROCESSOR - ASSEMBLER                                             *
*                                                                     *
*   MODULE SIZE - 4 BYTES                                             *
*                                                                     *
*   ATTRIBUTES - NUCLEUS RESIDENT, NON-EXECUTABLE                     *
*                                                                     *
* ENTRY POINT - N/A                                                   *
*                                                                     *
* EXIT-NORMAL - N/A                                                   *
*                                                                     *
* EXIT-ERROR - N/A                                                    *
*                                                                     *
* EXTERNAL REFERENCES - NONE                                          *
*                                                                     *
* TABLES - N/A                                                        *
*                                                                     *
* MACROS - NONE                                                       *
*                                                                     *
* SERIALIZATION - NONE                                                *
*                                                                     *
* CHANGE ACTIVITY - NONE                                              *
*   A000000-999999                                          @ZA30350  *
*                                                                     *
* MESSAGES - NONE                                                     *
*                                                                     *
********************* END OF SPECIFICATIONS ***************************
IECVHIDT CSECT
         DC    XL2'64'             HOT CHANNEL THRESHOLD
         DC    XL2'64'             HOT DEVICE THRESHOLD
         DC    XL2'0C'             TIMEOUT THRESHOLD
         DC    XL2'04'             TIMEOUT INTERVAL IN SECONDS
         END
         MEND                      */
*%HIDT1:  ;
*
 /********************************************************************/
 /*                                                                  */
 /* CONTROL BLOCK NAME - HIDT                                        */
 /*                                                                  */
 /* DESCRIPTIVE NAME - HOT I/O DETECTION THRESHOLDS                  */
 /*                                                                  */
 /* FUNCTION -                                                       */
 /*   THE HIDT CONTAINS THE THRESHOLDS WHICH ARE USED BY MODULE      */
 /*   IECVHIDT TO DETERMINE IF HOT I/O IS OCCURRING.                 */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*   A000000-999999                                         @ZA30350*/
 /*                                                                  */
 /********************************************************************/
 DCL
   1 HIDT BASED,                   /*HOT I/O DETECTION THRESHOLDS    */
     3 HIDTCHAN FIXED(15),         /*HOT CHANNEL THRESHOLD           */
     3 HIDTDEV FIXED(15),          /*HOT DEVICE THRESHOLD            */
     3 HIDTTIME FIXED(15),         /*TIMEOUT DETECTION THRESHOLD     */
     3 HIDTINTV FIXED(15);         /*TIMEOUT INTERVAL IN SECONDS     */
./ ADD NAME=IECDIDAL
         MACRO
         IECDIDAL
IDAL     DSECT
         SPACE 1
**********************************************************************
*                                                                    *
*        THIS DSECT DESCRIBES THE GETMAINED BLOCK OF CORE WHICH      *
*        CONTAINS INDIRECT ADDRESS LISTS FOR THE CCW TRANSLATOR.     *
*        THERE IS ROOM IN ONE IDAL FOR 38 ENTRIES.                   *
*                                                                    *
**********************************************************************
         SPACE 1
IDALCHN  DS    A                   POINTER TO NEXT INDL
         DS    A                   UNUSED
IDALHL   EQU   *-IDAL              HEADER LENGTH
IDALENTY DS    A                   INDIRECT ADDRESS LIST ENTRY
IDALEL   EQU   *-IDALENTY          ENTRY LENGTH
IDALNE   EQU   38                  NUMBER OF ENTRIES
IDALBL   EQU   IDALHL+IDALEL*IDALNE BLOCK LENGTH
         MEND
./ ADD NAME=IECDIOQ
* %      GOTO IOQPLS;              /* GO TO THE PLS VERSION   */
         MACRO
         IECDIOQ
IOQ      DSECT
         SPACE 1
****************************************************************
*                                                              *
*   THIS DSECT DESCRIBES THE ELEMENT USED BY THE I/O           *
*   SUPERVISOR WHEN QUEUING I/O REQUESTS TO A LOGICAL          *
*   CHANNEL OR TO A DEVICE (UCB).                              *
*                                                              *
****************************************************************
         SPACE 1
IOQLNK   DS    A                   LINK FIELD
IOQFLA   DS    XL1                 IOQ FLAG BYTE A
IOQSLCH  EQU   X'80'               IOQ ASSOC WITH A SENSE LCH
IOQENQ   EQU   X'40'               IOQ IS ENQUEUED
IOQLBSY  EQU   X'20'               UPDATE LCHLGBSY COUNTER
IOQPBSY  EQU   X'10'               UPDATE LCHPYBSY COUNTER
*        EQU   X'08'               RESERVED
*        EQU   X'04'               RESERVED
*        EQU   X'03'               RESERVED
IOQFLB   DS    XL1                 IOQ FLAG BYTE B
IOQRESV  EQU   X'80'               RESERVE FLAG
IOQRLSE  EQU   X'40'               RELEASE FLAG
IOQALOC  EQU   X'3C'               ALLOCATED IND TO IECVSMGR
IOQHOLD  EQU   X'02'               3330V REQUEST HELD          @G24LPLN
*        EQU   X'01'               RESERVED
IOQPRI   DS    XL1                 PRIORITY
IOQPTH   DS    XL1                 CURRENT PATH MASK
IOQIOSB  DS    A                   ADDRESS OF IOSB
IOQL     EQU   *-IOQLNK            LENGTH OF IOQ
         MEND
*%IOQPLS: ;
*
*/*************************************************************/
*/*                                                           */
*/*  THIS STRUCTURE DESCRIBES THE ELEMENT USED BY THE I/O     */
*/*  SUPERVISOR WHEN QUEUING  I/O REQUESTS  TO A  LOGICAL     */
*/*  CHANNEL OR TO A DEVICE (UCB).                            */
*/*                                                           */
*/*************************************************************/
*/*                                                           */
*/*   05/30/72  LEVEL=00                                      */
*/*                                                           */
*/*************************************************************/
*
*   DCL 1 IOQ  BDY(WORD)  BASED(IOQPTR),
*       2 IOQLNK    PTR(31),       /* LINK FIELD              */
*       2 IOQFLAGS  PTR(31),       /* ADDRESS OF IOSB         */
*         3 IOQFLA  BIT(8),        /* IOQ FLAG BYTE A         */
*          4 IOQSLCH  BIT(1),      /* IOQ ASSOC WTH SENSE  LCH*/
*          4 IOQENQ   BIT(1),      /* IOQ IS ENQUEUED         */
*          4 IOQLBSY  BIT(1),      /* UPDATE LCHLGBSY COUNTER */
*          4 IOQPBSY  BIT(1),      /* UPDATE LCHPYBSY COUNTER */
*          4 *        BIT(4),      /* RESERVED                */
*         3 IOQFLB  BIT(8),        /* IOQ FLAG BYTE B         */
*           4 IOQRESV BIT(1),      /* RESERVE FLAG            */
*           4 IOQRLSE BIT(1),      /* RELEASE FLAG            */
*           4 IOQALOC BIT(4),      /* ALLOCATED IND TO        */
*                                  /* IECVSMGR                */
*           4 IOQHOLD BIT(1),      /* 3330V REQUEST HELD     @G24LPLN*/
*         3 IOQPRI  CHAR(1),       /* PRIORITY                */
*         3 IOQPTH  CHAR(1),       /* CURRENT PATH MASK       */
*       2 IOQIOSB   PTR(31),       /* ADDRESS OF IOSB         */
*       2 IOQEND    CHAR(0);       /* END OF IOQ              */
*
*%DCL IOQL  CHAR;                  /* LENGTH OF IOQ           */
*%IOQL='ADDR(IOQEND)-ADDR(IOQLNK)';
./ ADD NAME=IECDIPIB
* %      GOTO IPIBPLS;             /* GO TO PLS VERSION       */
         MACRO
         IECDIPIB   &DSECT=YES
         AIF   ('&DSECT' EQ 'NO').IPIB1
IPIB     DSECT
         AGO   .IPIB2
.IPIB1   ANOP
IPIB     DS    0D
.IPIB2   ANOP
         SPACE 1
****************************************************************
*                                                              *
*   THIS DSECT DESCRIBES THE IOS PURGE INTERFACE BLOCK WHICH   *
*   IS BUILT IN THE PURGE WORK AREA. IT IS USED TO HOLD ALL    *
*   THE INFORMATION THAT IS COMMUNICATED BETWEEN PURGE AND     *
*   THE CHANNEL SCHEDULER AND ITS DRIVERS.                     *
*                                                              *
****************************************************************
         SPACE 1
IPIBOPT  DS    XL1                 OPTIONS NEEDED BY DRIVERS
*                                  FOR CHANNEL SCHEDULER WHEN
*                                  PURGING THEIR QUEUES.
IPIBMEM  EQU   X'80'               ASID PURGE WAS SPECIFIED
IPIBTASK EQU   X'40'               TCB PURGE WAS SPECIFIED IF
*                                  ASID PURGE WAS NOT
*                                  SPECIFIED
IPIBRBP  EQU   X'20'               RB PURGE SPECIFIED
IPIBPOST EQU   X'10'               POST THE ECBS RELATED TO THE
*                                  I/O REQUESTS THAT ARE PURGED
IPIBREL  EQU   X'08'               PURGE ONLY REQUESTS THAT ARE
*                                  MARKED RELATED
IPIBHALT EQU   X'04'               HALT I/O REQUESTS - DO NOT
*                                  BUILD A CHAIN FOR RESTORE
IPIBOTCB EQU   X'02'               PURGE SO THAT I/O REQUESTS
*                                  MAY BE RESTORED TO THE
*                                  ORIGINATING TCB
         SPACE 1
IPIBDVID DS    XL1                 DRIVER ID FOR DSID PURGE  DCRR 21082
*                                  DEFAULT VALUE OF X'00'    DCRR 21082
*                                  IMPLIES EXCP              DCRR 21082
IPIBFLG1 DS    XL1                 FLAG BYTE                   @ZA12676
IPIBDQ   EQU   X'80'               INDICATES PURGEDQ ISSUED BY
*                                  IGC0001F                    @ZA12676
         DS    XL1                 RESERVED                    @ZA12676
IPIBCNT  DS    A                   COUNT OF I/O REQUESTS TO BE
*                                  COMPLETED. DECREMENTED BY
*                                  IOS DRIVERS WHEN I/O EVENT
*                                  COMPLETES
IPIBECB  DS    A                   ECB TO BE POSTED WHEN IPIBCNT
*                                  GOES TO ZERO. PURGE WAITS ON
*                                  THIS ECB WHEN THE COUNT IS
*                                  ESTABLISHED.
IPIBARG  DS    A                   PURGE ARGUMENT. IF ASID
*                                  PURGE, THE RIGHT TWO BYTES
*                                  CONTAIN THE ASID OF THE ASID
*                                  BEING PURGED AND THE LEFT
*                                  TWO BYTES CONTAIN THE SIGN
*                                  BIT OF THE ASID. IF TCB
*                                  PURGE, THEN THE TCB ADDRESS.
IPIBSRB  DS    A                   POINTER TO FIRST SRB ON CHAIN
*                                  OF SRBS THAT HAVE BEEN COL-
*                                  LECTED FOR RETURN TO THE
*                                  APPROPRIATE DRIVER OF THE
*                                  CHANNEL SCHEDULER.
IPIBIO   DS    A                   POINTER TO I/O REQUEST CHAIN
*                                  RETURNED TO PURGE FOR PLACE-
*                                  MENT ON THE PIRL.
IPIBDVRU DS    A                   POINTER TO ADDITIONAL INFOR-
*                                  MATION THE DRIVER MAINTAINS
*                                  INSURE TO THE PROPER RESTOR-
*                                  ATION OF ITS QUEUE OF I/O
*                                  REQUESTS (E.G.PROTECT KEYS
*                                  TCB ADDRESSES ETC)
IPIBPIRL DS    A                   POINTER TO PIRL FOR THIS
*                                  PURGE REQUEST.
IPIBPSQ  DS    A                   POINTER TO CHAIN OF I/O RE-
*                                  QUESTS INVOLVED WITH THIS
*                                  PURGE FOUND BY ROUTINES RUN-
*                                  NING ASYNCHRONOUSLY WITH THE
*                                  PURGE ROUTINE (E.G. THE IN-
*                                  TERRUPT HANDLER).
IPIBLNK  DS    A                   MAY BE A MAX OF 2 IPIBS/ASID@YM07220
*                                  IF SO, THIS POINTS TO 2ND  @YM07220
*                                  IPIB WHICH MUST BE A HALT OR = 0
IPIBASCB DS    A                   ASCB ADDRESS FOR MEMORY IN  @ZA30265
*                                  WHICH PURGE WAS ISSUED      @ZA30265
         MEND
*%IPIBPLS: ;
*
* /************************************************************/
* /*                                                          */
* /*   THIS STRUCTURE DESCRIBES THE IOS PURGE INTERFACE BLOCK */
* /*   WHICH IS BUILT IN THE PURGE WORK AREA . IT IS USED TO  */
* /*   HOLD ALL THE INFORMATION THAT IS COMMUNICATED BETWEEN  */
* /*   PURGE AND THE CHANNEL SCHEDULER AND ITS DRIVERS.       */
* /*                                                          */
* /************************************************************/
*
*DCL 1 IPIB  BDY(WORD)  BASED(IPIBPTR),
*    2 IPIBOPT     BIT(8),         /* OPTIONS NEEDED BY DRVRS
*                                     OF CHANNEL SCHEDULR WHEN
*                                     PURGING THEIR QUEUES    */
*     3 IPIBMEM    BIT(1),         /* ASID   PURGE WAS SPECFD */
*     3 IPIBTASK   BIT(1),         /* TCB PURGE WAS SPECIFIED
*                                     IF ASID   PURGE WAS NOT */
*     3 IPIBRBP    BIT(1),         /* RB PURGE SPECIFIED      */
*     3 IPIBPOST   BIT(1),         /* POST THE ECBS RELATED TO
*                                     THE I/O REQUESTS THAT
*                                     ARE PURGED              */
*     3 IPIBREL    BIT(1),         /* PURGE ONLY REQUESTS THAT
*                                     ARE MARKED RELATED      */
*     3 IPIBHALT   BIT(1),         /* HALT I/O REQUESTS - DO
*                                     NOT BUILD A CHAIN FOR
*                                     RESTORE                 */
*     3 IPIBOTCB   BIT(1),         /* PURGE SO I/O REQUESTS
*                                     MAY BE RESTORED TO THE
*                                     ORIGINATING TCB         */
*     3 *          BIT(1),         /* RESERVED                */
*
*    2 IPIBDVID    CHAR(1),        /* DRIVER ID FOR DSID PURGE
*                                     DEFAULT VALUE OF X'00'
*                                     IMPLIES EXCP  DCRR 21082*/
*    2 IPIBFLG1    BIT(8),         /* FLAG BYTE              @ZA12676*/
*     3 IPIBDQ     BIT(1),         /* IGC0001F ISSUED PURGEDQ@ZA12676*/
*     3 *          BIT(7),         /* RESERVED               @ZA12676*/
*    2 *           CHAR(1),        /* RESERVED               @ZA12676*/
*    2 IPIBCNT     CHAR(4),        /* COUNT OF I/O REQUESTS TO
*                                     BE COMPLETED. DECREMENTD
*                                     BY IOS DRIVERS WHEN
*                                     I/O EVENT COMPLETES     */
*    2 IPIBECB     PTR(31),        /* ECB TO BE POSTED WHEN
*                                     IPIBCNT GOES TO ZERO.
*                                     PURGE WAITS ON THIS ECB
*                                     WHEN COUNT IS ESTABLISHD*/
*    2 IPIBARG     PTR(31),        /* PURGE ARGUMENT. IF ASID
*                                     PURGE, THE RIGHT 2 BYTES
*                                     CONTAIN THE ASID OF THE
*                                     ASID BEING PURGED AND
*                                     THE LEFT TWO BYTES HAVE
*                                     THE SIGN BIT OF THE ASID
*                                     IF TCB PURGE, THEN THE
*                                     TCB ADDRESS             */
*    2 IPIBSRB     PTR(31),        /* PTR TO FIRST SRB ON CHN
*                                     OF SRBS THAT HAVE BEEN
*                                     COLLECTED FOR RETURN TO
*                                     THE APPROPRIATE DRIVER
*                                     OF THE CHANNL SCHEDULER */
*    2 IPIBIO      PTR(31),        /* PTR TO I/O REQUEST CHAIN
*                                     RETURNED TO PURGE FOR
*                                     PLACEMENT ON THE PIRL   */
*    2 IPIBDVRU    PTR(31),        /* PTR TO ADTNL INFO EACH
*                                     DRIVER MAINTNS TO INSURE
*                                     PROPER RESTORATN OF ITS
*                                     QUEUE OF REQUESTS (E.G.
*                                     PROTECT KEYS - TCB ADDR)
*                                     RETURNED TO PURGE FOR
*                                     PLACEMENT ON THE PIRL   */
*    2 IPIBPIRL    PTR(31),        /* PTR TO PIRL FOR THIS
*                                     PURGE REQUEST           */
*    2 IPIBPSQ     PTR(31),        /* PTR TO CHAIN OF I/O REQ.
*                                     INVOLVED WITH THIS PURGE
*                                     FOUND BY ROUTINES RUNNG
*                                     ASYNCHRONOUSLY WITH THE
*                                     PURGE ROUTINE (E.G. THE
*                                     INTERRUPT HANDLER).     */
*    2 IPIBLNK    PTR(31),         /* PTS TO 2ND IPIB IF 2,  @YM07220*/
*                                  /* EITHER PTS TO HALT IPIB@YM07220*/
*                                  /* OR =0, MAX OF 2 IPIBS  @YM07220*/
*    2 IPIBASCB   PTR(31),         /* ASCB ADDRESS FOR       @ZA30265*/
*                                  /* MEMORY IN WHICH PURGE  @ZA30265*/
*                                  /* WAS ISSUED             @ZA30265*/
*
*    2 IPIBEND     CHAR(0);        /* END OF IPIB             */
./ ADD NAME=IECDIRT
* %      GOTO IRTPLS;              /* GO TO THE PLS VERSION   */
*
         MACRO
         IECDIRT
         ORG   LCCAIRT
IRT      DS    0D
         SPACE 1
****************************************************************
*                                                              *
*   THIS MACRO DSECT DESCRIBES THE IOS RECOVERY  TABLE.        *
*   THE TABLE IS RELATED TO A CPU AND IS LOCATED IN THE        *
*   LCCA.                                                      *
*                                                              *
****************************************************************
         SPACE 1
IRTENTRY EQU   *
IRTFLA   DS    XL1                 FLAG BYTE A
         SPACE 1
IRTULCK  EQU   X'80'               UCB LOCK HELD
IRTLLCK  EQU   X'40'               LCH LOCK HELD
IRTSLCK  EQU   X'20'               SYNCH LOCK HELD
IRTCLCK  EQU   X'10'               CAT LOCK HELD
IRTALCK  EQU   X'08'               SALLOC LOCK HLED
IRTIOQA  EQU   X'04'               AN IOQ IS ACTIVE
IRTSLISN EQU   X'02'               RECOVERY SENSE INDICATOR
IRTSSIGP EQU   X'01'               SHLDR TAP NEEDED FOR SENSE  @ZA16177
         SPACE 1
IRTFLB   DS    XL1                 FLAG BYTE B
IRTNRST  EQU   X'80'               SUPPRESS RESTART OF CURRENT
*                                  CHANNEL
IRTSKRST EQU   X'40'               FIRST PASS OF CHAN. RESTART
IRTPCISW EQU   X'20'               FIRST PASS OF PCI
IRTCHBSY EQU   X'10'               ALL CHANNELS BUSY
IRTSMGR  EQU   X'08'               STORAGE MANAGER ENTERED
IRT12GT  EQU   X'04'               STORAGE MNGR - SMALL BLK GET
IRTCCHWA EQU   X'02'               SET IF CCH GETS EWA         @ZA18094
*        EQU   X'01'               RESERVED                    @ZA18094
         SPACE 1
IRTENVR  DS    XL1                 ENVIRONMENT FLAGS
IRTCHENT EQU   X'80'               CHAN SCHED ENTRANCE
IRTSLIHA EQU   X'40'               I/O INT HNDLR ENTRANCE
IRTSHTP  EQU   X'20'               SHOULDER TAP ENTRANCE
IRTCRHIN EQU   X'10'               CRH INTERRUPT ON DEAD CPU   @ZA16177
IRTRSTI  EQU   X'08'               I/O RESTART IN PROGRESS
IRTHIO   EQU   X'04'               HIO IN PROCESS
IRTPINT  EQU   X'02'               I/O RESTART PSEUDO INTERRUPT
IRTCSINT EQU   X'01'               CHANNEL SCHEDULER ENTRANCE
*                                  * INITIALIZATION COMPLETE
         SPACE 1
         DS    XL1                 RESERVED
         SPACE 1
IRTSYMSK DS    XL1                 OLD SYSTEM MASK SET BY
*                                  CHANNEL SCHEDULER
IRTCCH   DS    XL1                 CHANNEL CHECK HANDLER
*                                  COMMUNICATION BYTE
IRTCMRST DS    XL1                 RESTART INDICATOR SET BY CHAN
*                                  SCHEDULER WHEN ENTERED. SET
*                                  IN THE OTHER CPU WHEN SHLDER
*                                  TAP IS TO BE DONE.
*                                    FF = IOS ACTIVE AND RESTART
*                                       CAN BE DONE VIA RESTART
*                                       ROUTINE
*                                    00 = IOS NOT ACTIVE. SHLDER
*                                       TAP TO BE USED TO RESTRT
IRTDETEC DS    XL1                 HOT I/O DETECTION FLAGS     @ZA30350
IRTDETR1 EQU   X'80'               RESERVED FOR HOT I/O DETEC  @ZA30350
IRTAVAIL EQU   X'40'               AVAILABILITY INTERRUPT      @ZA30350
IRTUNSOL EQU   X'20'               UNSOLICITED INTERRUPT       @ZA30350
IRTNOSYS EQU   X'10'               DEVICE NOT SYSGENED         @ZA30350
IRTHOTD  EQU   X'08'               HOT DEVICE DETECTION        @ZA30350
IRTINVDV EQU   X'04'               INVALID DEVICE ADDRESS AND  @ZA30350
*                                  CHANNEL ERROR               @ZA30350
IRTCUERR EQU   X'02'               CHANNEL ERROR-CONTROL UNIT  @ZA30350
*                                  PROBABLE CAUSE OF ERROR     @ZA30350
IRTCHERR EQU   X'01'               CHANNEL ERROR-CONTROL UNIT  @ZA30350
*                                  NOT PROBABLE CAUSE OF ERR   @ZA30350
IRTUCB   DS    A                   ADDRESS OF LOCKED UCB
IRTLCH   DS    A                   ADDRESS OF LOCKED LCH
IRTIOQ   DS    A                   ADDRESS OF ACTIVE IOQ
IRTCHNL  DS    A                   CURRENT CHANNEL USED BY TCH
IRTNIOQ  DS    A                   SAVED ADDRESS OF NEXT IOQ
IRTPSTSV DS    A                   IOQ SAVE AREA USED BY
*                                  CHANNEL SCHEDULER
IRTCHMSK DS    A                   RESTART CHANNEL MASK THIS CPU
IRTRSV01 DS    A                   RESERVED
IRTRTNSV DS    D                   USED BY CHAN SCHED AND SHLDR
*                                  TAP FOR REG 13 AND 14 SAVE
IRTTCHSV DS    A                   TCH ROUTINE LINK SAVE
IRTDDSV  DS    A                   DEVICE DEPENDENT SIO SUBROUTINE
IRTSIOSV DS    A                   POST SIO LINK SAVE
IRTSTASV DS    A                   STATUS ROUTINE LINK SAVE
IRTRSTSV DS    A                   RESTART ROUTINE LINK SAVE
IRTDIESV DS    A                   DIE ROUTINE LINK SAVE
IRTSENSV DS    A                   SENSE ROUTINE LINK SAVE
IRTPCISV DS    A                   PCI ROUTINE LINK SAVE
IRTPRGSV DS    A                   CHECK PURGE ROUTINE LINK SAVE
IRTCSME  DS    A                   SAVED CHANNEL SEARCH MODULE
*                                  TABLE ENTRY ADDRESS
IRTNSRB  DS    A                   ADDR OF SRB FOR NEW WORK
*                                  FROM DIE.
IRTFRRWA DS    A                   ADDR OF FRR WORKAREA
IRTATTSV DS    A                   ATTENTION ROUTINE LINK SAVE
IRTCCHSV DS    A                   CCH INTERFACE LINK SAVE
IRTINTSV DS    A                   SLIH ROUTINE LINK SAVE
IRTSTSSV DS    A                   TEST SCHEDULABILITY SAVE AREA
IRTLCHAD DS    A                   SAVED LCH ADDR FOR CHAN RSTRT
IRTSNSCT DS    A                   SENSE COUNTER               @ZA10792
IRTCHNSV DS    A                   SENSE CHAIN ROUTINE LINK SV @ZA16177
IRTRSV0B DS    A                   RESERVED                    @ZA10792
IRTEL    EQU   128                 ENTRY LENGTH
         MEND
*%IRTPLS: ;
*
*/*************************************************************/
*/*                                                           */
*/*  THIS STRUCTURE DESCRIBES THE IOS  RECOVERY  TABLE.  THE  */
*/*  TABLE IS RELATED TO A CPU AND IS LOCATED  IN  THE  LCCA. */
*/*  A RESPECIFY SHOULD BE DONE ON IRT TO  BASE  IT  ON  THE  */
*/*  ADDRESS OF LCCAIRT.                                      */
*/*                                                           */
*/*************************************************************/
*/*                                                           */
*/*    05/30/72     LEVEL=00                                  */
*/*                                                           */
*/*************************************************************/
*
*   DCL 1 IRT  BDY(WORD)  BASED(IRTPTR),
*
*       2 IRTENTRY  PTR(31),       /* LABEL IDENTIFICATION    */
*         3 IRTFLA  CHAR(1),       /* FLAG BYTE A             */
*           4 IRTULCK BIT(1),      /* UCB LOCK HELD           */
*           4 IRTLLCK BIT(1),      /* LCH LOCK HELD           */
*           4 IRTSLCK BIT(1),      /* SYNCH LOCK HELD         */
*           4 IRTCLCK BIT(1),      /* CAT LOCK HELD           */
*           4 IRTALCK BIT(1),      /* SALLOC LOCK HELD        */
*           4 IRTIOQA BIT(1),      /* AN IOQ  IS ACTIVE       */
*           4 IRTSLISN BIT(1),     /* RECOVERY SENSE IND      */
*           4 IRTSSIGP BIT(1),     /* SHLDR TAP NEEDED FOR SENSE
*                                                            @ZA16177*/
*         3 IRTFLB  CHAR(1),       /* RESERVED                */
*           4 IRTNRST BIT(1),      /* SUPPRESS RESTART FOR
*                                     CURRENT CHANNEL         */
*           4 IRTSKRST BIT(1),     /* FIRST PASS OF CHAN RSTRT*/
*           4 IRTPCISW BIT(1),     /* FIRST PASS OF PCI       */
*           4 IRTCHBSY BIT(1),     /* ALL CHANNELS BUSY       */
*           4 IRTSMGR  BIT(1),     /* STORAGE MANAGER ENTERED */
*           4 IRT12GT  BIT(1),     /* SMALL BLK GET           */
*           4 IRTCCHWA BIT(1),     /* SET IF CCH GETS EWA    @ZA18094*/
*           4 *        BIT(1),     /* RESERVED               @ZA18094*/
*
*         3 IRTENVR CHAR(1),       /* ENVIRONMENT INDICATORS  */
*           4 IRTCHENT BIT(1),     /* CHAN. SCHED. ENTRANCE   */
*           4 IRTSLIHA BIT(1),     /* I/O INT HNDLR ENTRANCE  */
*           4 IRTSHTP  BIT(1),     /* SHOULDER TAP ENTRANCE   */
*           4 IRTCRHIN BIT(1),     /* CRH INTERRUPT          @ZA16177*/
*           4 IRTRSTI  BIT(1),     /* I/O RESTART IN PROGRESS */
*           4 IRTHIO   BIT(1),     /* HIO IN PROCESS          */
*           4 IRTPINT  BIT(1),     /* I/O RESTART PSEUDO INT  */
*           4 IRTCSINT BIT(1),     /* CHAN SCHED INIT DONE    */
*
*         3 *         BIT(8),      /* RESERVED                */
*       2 IRTSYMSK  CHAR(1),       /* OLD SYSTEM MASK SET BY
*                                     CHANNEL SCHEDULER       */
*       2 IRTCCH    CHAR(1),       /* CCH COMMUNICATION BYTE  */
*       2 IRTCMRST  CHAR(1),       /* RESTRT IND. SET BY CHAN.
*                                     SCHED WHEN ENTERED. ALSO
*                                     SET IN THE OTHER CPU
*                                     WHEN SHOULDER TAP TO BE
*                                     DONE
*                                     FF = IOS ACTIVE AND CAN
*                                       RESTART VIA RSTSRT RTN
*                                     00 = IOS NOT ACTIVE.
*                                     SHOULDER TAP TO BE USED
*                                     TO RESTART              */
*       2 IRTDETEC  BIT(8),        /* HOT I/O DETECTION FLAG
*                                                           @ZA30350*/
*        3 IRTDETR1 BIT(1),        /* RESVD FOR HOT I/O     @ZA30350*/
*        3 IRTAVAIL BIT(1),        /* AVAILABILITY INTERPT  @ZA30350*/
*        3 IRTUNSOL BIT(1),        /* UNSOLICITED INTERRUPT @ZA30350*/
*        3 IRTNOSYS BIT(1),        /* DEVICE NOT SYSGENED   @ZA30350*/
*        3 IRTHOTD BIT(1),         /* HOT DEVICE DETECTION  @ZA30350*/
*        3 IRTINVDV BIT(1),        /* CHANNEL ERROR AND INVALID
*                                     DEVICE ADDRESS        @ZA30350*/
*        3 IRTCUERR BIT(1),        /* CHANNEL ERROR-CONTROL UNIT
*                                     PROBABLE CAUSE OF ERR @ZA30350*/
*        3 IRTCHERR BIT(1),        /* CHANNEL ERROR-CONTROL UNIT NOT
*                                     PROBABLE CAUSE OF ERR @ZA30350*/
*       2 IRTUCB    PTR(31),       /* ADDRESS OF LOCKED UCB   */
*       2 IRTLCH    PTR(31),       /* ADDRESS OF LOCKED LCH   */
*       2 IRTIOQ    PTR(31),       /* ADDRESS OF ACTIVE IOQ   */
*       2 IRTCHNL   PTR(31),       /* TCH CURRENT CHANNEL     */
*       2 IRTNIOQ   PTR(31),       /* SAVED ADDR OF NEXT IOQ  */
*       2 IRTPSTSV  PTR(31),       /* IOQE SAVE AREA USED BY
*                                     CHANNEL SCHEDULER       */
*       2 IRTCHMSK  CHAR(4),       /* RESTART CHANNEL MASK FOR
*                                     THIS CPU                */
*       2 IRTRSV01  PTR(31),       /* RESERVED                */
*       2 IRTRTNSV  CHAR(8),       /* USED BY CHAN SCHED AND
*                                     SHLDR TAP FOR RG 13 & 14*/
*       2 IRTTCHSV  PTR(31),       /* TCH ROUTINE LINK SAVE   */
*       2 IRTDDSV   PTR(31),       /* DEVICE DEPENDENT SIO
*                                     SUBROUTINE LINK SAVE    */
*       2 IRTSIOSV  PTR(31),       /* POST SIO LINK SAVE      */
*       2 IRTSTASV  PTR(31),       /* STATUS SUBRTN LINK SAVE */
*       2 IRTRSTSV  PTR(31),       /* RESTART RTN LINK SAVE   */
*       2 IRTDIESV  PTR(31),       /* DIE ROUTINE LINK SAVE   */
*       2 IRTSENSV  PTR(31),       /* SENSE ROUTINE LINK SAVE */
*       2 IRTPCISV  PTR(31),       /* PCI ROUTINE LINK SAVE   */
*       2 IRTPRGSV  PTR(31),       /* CHECK PURGE ROUTINE
*                                     LINK SAVE               */
*       2 IRTCSME   PTR(31),       /* SAVED CHANNEL SEARCH
*                                     MODULE TABLE ENTRY ADDR */
*       2 IRTNSRB   PTR(31),       /* ADDR OF SRB FOR NEW WORK
*                                     FROM DIE.               */
*       2 IRTFRRWA  PTR(31),       /* ADDR OF FRR WORKAREA    */
*       2 IRTATTSV  PTR(31),       /* ATTN. ROUTINE LINK SAVE */
*       2 IRTCCHSV  PTR(31),       /* CCH INTERFACE LINK SAVE */
*       2 IRTINTSV  PTR(31),       /* SLIH ROUTINE LINK SAVE  */
*       2 IRTSTSSV  PTR(31),       /* TEST SCHEDULABILITY SAVE*/
*       2 IRTLCHAD  PTR(31),       /* LCH ADDR FOR CHAN RSTRT */
*       2 IRTSNSCT  FIXED(31),     /* SENSE COUNTER          @ZA10792*/
*       2 IRTCHNSV  PTR(31),       /* SENSE CHAIN RTN LINK SV@ZA16177*/
*       2 IRTRSV0B  PTR(31),       /* RESERVED               @ZA10792*/
*       2 IRTEND    CHAR(0);       /* END OF IRT              */
*
*%DCL IRTEL CHAR;                  /* ENTRY LENGTH            */
*%IRTEL='ADDR(IRTEND)-ADDR(IRTENTRY)';
./ ADD NAME=IECDLCH
* %      GOTO  LCHPLS;             /* GO TO THE PL/S VERSION   */
*
         MACRO
         IECDLCH
LCH      DSECT
         SPACE 1
*****************************************************************
*                                                               *
*   THIS MACRO DSECT DESCRIBES THE LOGICAL CHANNEL QUEUE TABLE. *
*                                                               *
*****************************************************************
         SPACE 1
LCHENTRY DS    0D                  DOUBLEWORD ALIGNMENT
LCHFST   DS    F                   FIRST IOQ ON LCH
LCHLST   DS    F                   LAST IOQ ON LCH
LCHLOCK  DS    F                   LOCKWORD ASSOCIATED WITH LCH YM3157P
LCHRSV01 DS    F                   RESERVED                     YM3157P
LCHTCH   DS    F                   TCH CHANNEL LIST
LCHCHCNT DS    FL1                 NUMBER OF CHANNELS ON LCH
LCHFLA   DS    XL1                 FLAG BYTE
         SPACE 1
LCHLKHLD EQU   X'80'               LCHLOCK HELD ON ENTRY
*        EQU   X'7F'               RESERVED
         SPACE 1
LCHRSV02 DS    H                   RESERVED                     YM3157P
LCHTOTAL DS    H                   TOTAL REQUESTS STARTED OR
*                                  QUEUED
LCHRSV03 DS    H                   RESERVED                     YM3157P
LCHLGBSY DS    H                   NUMBER REQUESTS QUEUED
*                                  BECAUSE LOGICALLY BUSY
LCHPYBSY DS    H                   NUMBER REQUESTS QUEUED
*                                  BECAUSE PHYSICALLY BUSY
LCHEL    EQU   *-LCHENTRY          ENTRY LENGTH
LCHELP2  EQU   5                   LENGTH OF LCH IN POWERS OF TWO
         MEND
*%LCHPLS: ;
*
* /*************************************************************/
* /*                                                           */
* /* THIS STRUCTURE DESCRIBES THE LOGICAL CHANNEL QUEUE TABLE. */
* /* CALLERS OF THIS MACRO SHOULD RESPECIFY THE LCH BASED  ON  */
* /* THE ADDRESS GOTTEN FROM THE CVT.                          */
* /*                                                           */
* /*************************************************************/
* /*                                                           */
* /*     09/05/73     LEVEL=00                                 */
* /*                                                           */
* /*************************************************************/
*
*   DCL  1 LCH  BDY(DWORD)  BASED(LCHPTR),
*        2  LCHENTRY  PTR(31),     /* LABEL IDENTIFICATION     */
*          3  LCHFST  PTR(31),     /* FIRST IOQ  ON LCH        */
*        2  LCHLST    PTR(31),     /* LAST IOQ  ON LCH         */
*        2  LCHLOCK   CHAR(4),     /* LOCKWORD FOR LCH YM3157P */
*        2  LCHRSV01  CHAR(4),     /* RESVERVED        YM3157P */
*        2  LCHTCH    PTR(31),     /* TCH CHANNEL LIST         */
*        2  LCHCHCNT  FIXED(8),    /* NUMBER OF CHANNELS IN
*                                     LIST                     */
*        2  LCHFLA    CHAR(1),     /* FLAG BYTE                */
*          3  LCHLKHLD  BIT(1),    /* LOCK HELD ON ENTRY       */
*          3  *         BIT(7),    /* RESERVED                 */
*
*        2  LCHRSV02    CHAR(2),   /* RESERVED         YM3157P */
*        2  LCHTOTAL  FIXED(15),   /* TOTAL REQUESTS STARTED
*                                     OR QUEUED                */
*        2  LCHRSV03  CHAR(2),     /* RESERVED         YM3157P */
*        2  LCHLGBSY  FIXED(15),   /* NUMBER OF RQSTS QUEUED
*                                     BECAUSE LOGICALLY BUSY   */
*        2  LCHPYBSY  FIXED(15),   /* NUMBER RQSTS QUEUED
*                                     BECAUSE PHYSICALLY BUSY  */
*        2  LCHEND    CHAR(0);     /* END OF LCH               */
*   DCL LCHELP2 BIT(8) CONSTANT('05'X);  /*
*                                     LCH ELEM LNGTH POWER OF 2*/
*
*%DCL  LCHEL  CHAR;                /* LENGTH OF TABLE          */
*%LCHEL='ADDR(LCHEND)-ADDR(LCHENTRY)';
./ ADD NAME=IECDPIRL
*  %    GOTO PIRPLS;               /* GO TO THE PLS VERSION   */
         MACRO
         IECDPIRL   &DSECT=YES
         AIF   ('&DSECT' EQ 'NO').PIRL1
PIRL     DSECT
         AGO   .PIRL2
.PIRL1   ANOP
PIRL     DS    0D
.PIRL2   ANOP
         SPACE 1
****************************************************************
*                                                              *
*   THIS DSECT DESCRIBES THE PURGED I/O RESTORE LIST WHICH IS  *
*   BUILT IN SUBPOOL ZERO OF THE MEMORY OF THE REQUESTOR  OF   *
*   PURGE. PURGE OBTAINS THE SPACE FOR THE PIRL AND  RESTORE   *
*   RETURNS IT. THE POINTER TO THE PIRL IS PASSED TO RESTORE   *
*   AS A PARAMETER IN REGISTER 1.                              *
*                                                              *
****************************************************************
         SPACE 1
         DS    0F
PIROPT   DS    XL1                 RESTORE OPTION BYTE
         SPACE 1
*   BIT DEFINITIONS FOR PIROPT
         SPACE 1
PIROTCB  EQU   X'80'               RESTORE REQUESTS TO THE TCB
*                                  THAT ORIGINATED THE REQUEST
*                                  INSTEAD OF THE TCB USED TO
*                                  RESTORE THEM.
PIRSUPCK  EQU  X'40'               DO TCB VALIDITY CHECK REGARD
*                                  LESS OF THE STATE OF
*                                  THE CALLER.
*        EQU   X'7F'               RESERVED - MUST BE ZERO
PIRCNT   DS    XL1                 NUMBER OF PIRRSTR ENTRIES
*        DS    H                   RESERVED - MUST BE ZERO
PIRRSTR  DS    A                   POINTER TO I/O REQUEST LIST
*                                  FOR EACH DRIVER OF CHANNEL
*                                  SCHEDULER.
PIRDVRU DS     A                   POINTER TO ADDITIONAL
*                                  INFORMATION THE DRIVER
*                                  MAINTAINS TO INSURE THE
*                                  PROPER RESTORATION OF ITS
*                                  QUEUE OF I/O REQUESTS
*                                  (E.G. PROTECT KEYS TCB
*                                  ADDRESSES ETC)
PIRENTL  EQU   *-PIRRSTR           ENTRY LENGTH
         MEND
*%PIRPLS: ;
* /************************************************************/
* /*                                                          */
* /*   THIS STRUCTURE DESCRIBES THE PURGED I/O RESTORE  LIST  */
* /*   WHICH IS BUILT IN SUBPOOL 0 OF THE MEMORY OF  THE  RE- */
* /*   QUESTOR OF PURGE. PURGE OBTAINS THE SPACE FOR THE PIRL */
* /*   AND RESTORE RETURNS IT.  THE POINTER  TO  THE PIRL IS  */
* /*   PASSED AS A PARAMETER TO RESTORE IN REGISTER 1.        */
* /*                                                          */
* /************************************************************/
*
*   DCL 1 PIRL  BDY(WORD)  BASED(PIRLPTR),
*       2  PIROPT   BIT(8),        /* RESTORE OPTION BYTE     */
*       2 PIRCNT    CHAR(1),       /* NMBR OF PIRRSTR ENTRIES */
*       2 *         FIXED(15),     /* RESERVED - MUST BE 0    */
*       2 PIRRSTR   PTR(31),       /* POINTER TO I/O REQUEST
*                                     LIST FOR EACH DRIVER OF
*                                     THE CHANNEL SCHEDULER   */
*       2 PIRDVRU   PTR(31),       /* POINTER TO ADDITIONAL
*                                     INFORMATION THE DRIVER
*                                     MAINTAINS TO INSURE THE
*                                     PROPER RESTORATION OF
*                                     ITS QUEUE OF REQUESTS
*                                     (E.G. PROTECT KEYS TCB
*                                     ADDRESSES ETC )         */
*       2 PIREND    CHAR(0);       /* END OF PIRL             */
*
* /*  FOLLOWING ARE BIT DEFINITIONS OF PIROPT                 */
*
*   DCL PIROTCB BIT(8) CONSTANT('80'X);
*                                  /* RESTORE REQUEST TO THE
*                                     ORIGINATING TCB INSTEAD
*                                     OF THE RESTORING TCB    */
*   DCL PIRSUPCK BIT(8) CONSTANT('40'X);
*                                  /* DO TCB VALIDITY CHECK
*                                     REGARDLESS OF THE STATE
*                                     OF THE CALLER           */
*%DCL PIRENTL  CHAR;               /* ENTRY LENGTH OF PIRRSTR */
*%PIRENTL='ADDR(PIREND)-ADDR(PIRRSTR)';
./ ADD NAME=IECDRESV
 /********************************************************************/
 /*                                                                  */
 /* CONTROL BLOCK NAME - RESVTAB                                     */
 /*                                                                  */
 /* DESCRIPTIVE NAME - RESERVE TABLE                                 */
 /*                                                                  */
 /* MAPPING MACRO NAME - IECDRESV                                    */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1329                                          */
 /*                                                                  */
 /* COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP. 1983,                   */
 /*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
 /*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          */
 /*             G120-2083                                            */
 /*                                                                  */
 /* FUNCTION -                                                       */
 /*   THE RESERVE TABLE CONTAINS ENTRIES FOR DEVICES WHOSE RESERVES  */
 /*   HAVE BEEN LOST.  EACH ENTRY IN THE RESERVE TABLE REPRESENTS    */
 /*   ONE REQUEST.  IF RESVSKIP IS ON, THE ENTRY WILL BE IGNORED.    */
 /*   IF RESVBOX IS ON, THE DEVICE WILL BE FORCED OFFLINE WITHOUT    */
 /*   A RESERVE BEING ATTEMPTED.  OTHERWISE A RESERVE WILL BE        */
 /*   DONE FOR THE DEVICE.                                           */
 /*                                                                  */
 /* CHANGE ACTIVITY - NONE                                           */
 /*A-000000-999999                                           @G64VPLP*/
 /* $H1=6872AU,JBB1329,811130,PDLT: ASSIGN/UNASSIGN SUPPORT          */
 /********************************************************************/
 DCL
   1 RESVTAB BASED(RESVTABP),      /*RESERVE TABLE                   */
    3 RESVHDR,                     /*RESERVE TABLE HEADER            */
     5 RESVNEXT PTR(31),           /*PTR TO NEXT RESERVE TABLE SEG   */
     5 RESVCNT FIXED(15),          /*COUNT OF ENTRIES IN THIS SEG    */
     5 RESVFLAG BIT(8),            /*FLAGS WHICH APPLY TO ALL ENTRIES-
                                     THESE FLAGS ARE USED FROM THE
                                     FIRST TABLE SEGMENT AND ARE
                                     IGNORED IN SUBSEQUENT SEGMENTS  */
      7 RESVBOX  BIT(1),           /*FORCE THIS DEVICE OFFLINE - DO
                                     NOT ATTEMPT RESERVE.  ONLY
                                     RESVNMSG AND RESVSKIP ARE USED  */
      7 RESVUNCR BIT(1),           /*DO UNCONDITIONAL RESERVE ONLY   */
      7 RESVNBOX BIT(1),           /*DO NOT FORCE DEVICE OFFLINE IF
                                     RE-RESERVE FAILS                */
      7 RESVNMSG BIT(1),           /*DO NOT ISSUE IEA026I MESSAGE FOR
                                     DEVICES FORCED OFFLINE          */
      7 RESVDPTH BIT(1),           /*CALLER IS DYNAMIC PATHING - DO
                                     NOT CALL DYNAMIC PATHING WHEN
                                     BOXING A DEVICE                 */
     5 *         BIT(8),
    3 RESVENTY (*),                /*RESERVE TABLE ENTRY             */
     5 RESVFLG1 BIT(8),            /*INPUT FLAG BYTE                 */
      7 RESVSKIP BIT(1),           /*SKIP THIS ENTRY IN TABLE - NO
                                     OTHER FLAG HAS MEANING          */
      7 RESVRELS BIT(1),           /*CHAIN RELEASE TO UNCONDITIONAL
                                     RESERVE CCW.  MEANINGFUL ONLY IF
                                     RESVUNCR IS ON                  */
      7 *        BIT(6),           /*RESERVED                        */
     5 RESVFLG2 BIT(8),            /*OUTPUT FLAGS - MUST BE ZERO ON
                                     ENTRY                           */
      7 RESVCOMP BIT(1),           /*RE-RESERVE COMPLETED.  IF RESVRELS
                                     IS ON, DEVICE HAS BEEN RELEASED */
      7 RESVBOXD BIT(1),           /*DEVICE IS FORCED OFFLINE        */
      7 *        BIT(6),           /*RESERVED                        */
     5 RESVDEVA FIXED(15),         /*DEVICE ADDRESS                  */
     5 RESVUCBA PTR(31);           /*UCB ADDRESS                     */
 DCL
   RESVNSIZ CONSTANT(12);          /*NUMBER OF ENTRIES IN TABLE
                                     SEGMENT FOR IECVBRSV */
./ ADD NAME=IECDRQE
*        %GOTO RQEL1; /*
         MACRO
         IECDRQE
RQE      DSECT
         SPACE 1  */
*%RQEL1 : ;
*/********************************************************************/
*/*                                                                  */
*/* THIS DSECT DESCRIBES THE CONTROL BLOCK USED WITHIN THE EXCP PROC-*/
*/* ESSOR TO DEFINE A SINGLE REQUEST. IT CONTAINS ALL INFORMATION    */
*/* NECESSARY TO INITIATE AND TERMINATE I/O REQUESTS WITHIN THE EXCP */
*/* PROCESSOR.                                                       */
*/*                                                                  */
*/********************************************************************/
*%GOTO RQEL2; /*
         SPACE 1
RQEUCB   DS    A                   ADDRESS OF THE UNIT CONTROL BLOCK
RQEIOB   DS    A                   ADDRESS OF THE INPUT-OUTPUT BLOCK
RQEDEB   DS    A                   ADDRESS OF THE DATA EXTENT BLOCK
RQETCB   DS    A                   ADDRESS OF THE TASK CONTROL BLOCK
RQETCCW  DS    A                   ADDRESS OF TRANSLATION CONTROL
*                                  BLOCK - USED BY VIO
*                                  AS A WORK AREA
RQENRQE  DS    A                   ADDRESS OF THE NEXT RQE ON RELATED
*                                  REQUEST CHAIN - USED BY VIO
*                                  AS A WORK AREA
RQERRQ   DS    A                   ADDRESS OF RELATED REQUEST QUEUE -
*                                  USED BY VIO
*                                  AS A WORK AREA
RQESRB   DS    A                   ADDRESS OF ASSOCIATED SRB - USED BY
*                                  VIO AS A WORK AREA
RQEIPIB  DS    A                   ADDRESS OF PURGE IPIB
RQEPRT   DS    XL1                 PROTECT KEY FROM SVC OLD PSW@ZA06067
*                                  (BITS 0-3) AND FLAGS(4-7)   @ZA06067
RQEPKEY  EQU   X'F0'               PROTECT KEY - BITS 0-3      @ZA06067
RQEPRT4R EQU   X'08'               BIT4 - RESERVED             @ZA06067
RQEPRT5R EQU   X'04'               BIT5 - RESERVED             @ZA06067
RQEPRT6R EQU   X'02'               BIT6 - RESERVED             @ZA06067
RQESMFRQ EQU   X'01'               BIT7 - SMF RECORDING REQD   @ZA06067
         SPACE
RQETYPE  DS    XL1                 REQUEST TYPE FLAGS
         SPACE 1
*   BIT SETTINGS FOR RQETYPE
         SPACE 1
RQE114   EQU   X'80'               EXCPVR REQUEST
RQEVIRT  EQU   X'40'               VIRTUAL EXCP REQUEST
RQE1TO1  EQU   X'20'               VIRTUAL EQUAL REAL REQUEST
RQEVAM   EQU   X'10'               VIO RQE
RQEEOEE  EQU   X'08'               END-OF-EXTENT-ERROR,TO BE   @YM04681
*                                  PURGED
RQEDIE   EQU   X'04'               EXCP DIE GOING TO PCI APPEND@YM05537
RQERRTYP EQU   X'03'               RELATED REQUEST FLAGS
RQETYP3  EQU   X'03'               RELATED REQUEST TYPE 3
RQETYP2  EQU   X'02'               RELATED REQUEST TYPE 2
RQETYP1  EQU   X'01'               RELATED REQUEST TYPE 1
         SPACE 1
RQEFLAG  DS    XL1                 FLAG BYTE IN RQE
         SPACE 1
*   BIT SETTINGS FOR RQEFLAG2
RQERETRY EQU   X'80'               RETRY REQUESTED
RQENOPST EQU   X'40'               NO POST REQUESTED
RQENOFRE EQU   X'20'               DONT FREE RQE
RQEFIXST EQU   X'10'               FIX PROCESS HAS BEEN STARTED,
*                                  UNFIX REQUIRED
RQESTBL  EQU   X'08'               THIS REQUEST IS STARTABLE - THAT IS
*                                  ALL FIXING AND TRANSLATION IS DONE
RQESRBS  EQU   X'04'               SRB SCHEDULED FOR THIS RQE
RQEPURGE EQU   X'02'               RQE UNDERGOING PURGE
RQECHEAC EQU   X'01'               CHANNEL END APPENDAGE COMPLETE
*        BIT SETTINGS FOR RQEFLAG3                             @ZM32371
RQEFLAG3 DS    XL1                                             @ZM32371
RQEINIOS EQU   X'80'               REQUEST IN IOS              @ZM32371
RQECLEAR EQU   X'00'               RESET FLAG BYTES            @ZM32371
         SPACE 1
RQEBL    EQU   *-RQE               RQE BLOCK LENGTH
         MEND  , - */
*%RQEL2 : ;
* DECLARE 1 RQE BDY(WORD) BASED(RQEPTR), /* REQUEST QUEUE ELEMENT
*                                   FOR EXCP */
*    2 RQEUCB  PTR(31),            /* ADDRESS OF THE UNIT CONTROL
*                                     BLOCK.                         */
*    2 RQEIOB  PTR(31),            /* ADDRESS OF THE INPUT OUTPUT
*                                     BLOCK                          */
*    2 RQEDEB  PTR(31),            /* ADDRESS OF THE DATA EXTENT
*                                     BLOCK                          */
*    2 RQETCB  PTR(31),            /* ADDRESS OF THE TASK CONTROL
*                                     BLOCK                          */
*    2 RQETCCW PTR(31),            /* ADDRESS OF THE TRANSLATION IS
*                                     CONTROL BLOCK - THIS FIELD
*                                     USED BY VIO
*                                     AS A WORK AREA.                */
*    2 RQENRQE PTR(31),            /* ADDRESS OF NEXT RQE ON RELATED
*                                     REQUEST QUEUE - THIS FIELD IS
*                                     USED BY VIO AS
*                                     A WORK AREA.                   */
*    2 RQERRQ  PTR(31),            /* ADDRESS OF THE RELATED REQUEST
*                                     QUEUE - USED BY VIO
*                                     AS A WORK AREA                 */
*    2 RQESRB  PTR(31),            /* ADDRESS OF SRB - USED BY VIO
*                                     AS A WORK
*                                     AREA.                          */
*    2 RQEIPIB PTR(31),            /* ADDRESS OF IOS PURGE INTERFACE
*                                     BLOCK.                         */
*    2 RQEPRT  BIT(8),             /* PROTECTION KEY USED IN THE     */
*      3 RQEPKEY BIT(4),           /* PROTECTION KEY                 */
*      3 *     BIT(3),             /* RESERVED-MUST BE ZERO  @ZA06067*/
*      3 RQESMFRQ BIT(1),          /* SMF RECORDING REQUIRED @ZA06067*/
*    2 RQETYPE BIT(8),             /* RQE TYPE FLAGS                 */
*      3 RQE114  BIT(1),           /* EXCPVR REQUEST                 */
*      3 RQEVIRT BIT(1),           /* VIRTUAL EXCP REQUEST           */
*      3 RQE1TO1 BIT(1),           /* VIRTUAL = REAL EXCP REQUEST    */
*      3 RQEVAM  BIT(1),           /* VIO REQUEST                    */
*      3 RQEEOEE BIT(1),           /* END-OF-EXTENT-ERROR    @YM04681*/
*                                  /* TO BE PURGED                   */
*      3 RQEDIE  BIT(1),           /* EXCP DIE GOING TO PCI  @YM05537*/
*      3 RQETYP3 BIT(2),           /* TYPE 3 RELATED REQUEST         */
*        4 RQETYP2 BIT(1),         /* TYPE 2 RELATED REQUEST         */
*        4 RQETYP1 BIT(1),         /* TYPE 1 RELATED REQUEST         */
*    2 RQEFLAG BIT(8),             /* FLAGS INDICATING WORK TO DO
*                                     AND POSITION IN EXCP           */
*      3 RQERETRY BIT(1),          /* RETRY REQUEST FROM APPENDAGE   */
*      3 RQENOPST BIT(1),          /* NO POST REQUEST FROM APPEND    */
*      3 RQENOFRE BIT(1),          /* NO FREE REQUEST FROM APPEND    */
*      3 RQEFIXST BIT(1),          /* FIXING IS STARTED FOR REQUEST  */
*      3 RQESTBL  BIT(1),          /* REQUEST IS STARTABLE           */
*      3 RQESRBS  BIT(1),          /* REQUEST SENT TO IOS            */
*      3 RQEPURGE BIT(1),          /* PURGE IN CONTROL               */
*      3 RQECHEAC BIT(1),          /* CHANNEL END APPENDAGE COMPL    */
*    2 RQEFLAG3  BIT(8),           /* FLAG BYTE 3            @ZM32371*/
*      3 RQEINIOS BIT(1),          /* REQUEST IN IOS         @ZM32371*/
*      3 * BIT(7),                 /* UNUSED                 @ZM32371*/
*    2 RQEEND CHAR(0);             /* END OF RQE                     */
*%DCL RQEBL CHAR;
*%RQEBL='RQEEND-RQEUCB';           /* LENGTH OF RQE                  */
./ ADD NAME=IECDSCD
 /********************************************************************/
 /*                                                                  */
 /* CONTROL BLOCK NAME - SCD                                         */
 /*                                                                  */
 /* DESCRIPTIVE NAME - HOT I/O STATUS COLLECTION DATA                */
 /*                                                                  */
 /* MAPPING MACRO NAME - IECDSCD                                     */
 /*                                                                  */
 /* FUNCTION -                                                       */
 /*   THE SCD IS USED TO MAINTAIN INFORMATION ON UNSOLICITED STATUS  */
 /*   AND INTERRUPTS FOR THE PURPOSE OF DETERMINING IF HOT I/O IS    */
 /*   OCCURRING. THERE IS ONE SCD PER CHANNEL PER PROCESSOR. THE     */
 /*   SCDS ARE INDEXED BY CHANNEL NUMBER.                            */
 /*                                                                  */
 /* CHANGE ACTIVITY - NONE                                           */
 /*   A000000-999999                                         @ZA30350*/
 /*                                                                  */
 /********************************************************************/
 DCL
   1 SCD BASED(SCDPTR),            /*HOT I/O STATUS COLLECTION DATA  */
    3 SCDCPUID FIXED(15),          /*CPU OF HOT CHANNEL OR DEVICE    */
    3 SCDADDR FIXED(15),           /*CHANNEL/DEVICE ADDRESS          */
    3 SCDFLG1 BIT(8),              /*FLAG BYTE 1                     */
     5 SCDRECUR BIT(1),            /*HOT I/O RECURSION INDICATOR     */
     5 * BIT(7),                   /*RESERVED                        */
    3 SCDRSCDE,                    /*HOT I/O DETECTION FLAGS         */
     5 SCDRSC1 BIT(8),             /*DETECTION FLAG BYTE 1           */
      7 SCDTMOUT BIT(1),           /*TIME OUT HOT I/O                */
      7 SCDAVAIL BIT(1),           /*AVAILABILITY INTERRUPT          */
      7 SCDUNSOL BIT(1),           /*UNSOLICITED STATUS              */
      7 SCDNOSYS BIT(1),           /*DEVICE NOT SYSGENED             */
      7 SCDHOTD BIT(1),            /*IF SET-HOT DEVICE--OTHERWISE-HOT
                                     HOT CHANNEL                     */
      7 SCDINVDV BIT(1),           /*CHANNEL ERROR AND INVALID DEVICE
                                     ADDR                            */
      7 SCDCUERR BIT(1),           /*CHANNEL ERROR-CONTROL UNIT
                                     PROBABLE CAUSE                  */
      7 SCDCHERR BIT(1),           /*CHANNEL ERROR-CONTROL UNIT NOT
                                     PROBABLE CAUSE                  */
     5 SCDRSC2 BIT(8),             /*RESERVED                        */
    3 * BIT(8),                    /*RESERVED                        */
    3 SCDCSWST BIT(16),            /*CSW STATUS                      */
    3 * FIXED(15),                 /*RESERVED                        */
    3 SCDCNTS,                     /*HOT I/O COUNTERS                */
     5 SCDRCNT FIXED(15),          /*STATUS REPEAT COUNT             */
     5 SCDTRCNT FIXED(15),         /*TIMEOUT REPEAT COUNT            */
    3 SCDTIME,                     /*TIME OF STATUS                  */
     5 SCDTIME1 FIXED(32),         /*VALUE FOR CALCULATING SECONDS
                                     ELAPSED                         */
     5 SCDTIME2 FIXED(32);         /*2ND WORD OF TIME VALUE          */
./ ADD NAME=IECDSFRR
         MACRO
         IECDSFRR
FRRSMGR  DSECT                                                 @ZA12704
         SPACE 1                                               @ZA12704
************************************************************** @ZA12704
*        IECVSMGR FRR PARM AREA DSECT.                       * @ZA12704
*        DSECT DESCRIBES USAGE OF THE 6 WORD FRR PARM AREA   * @ZA12704
*                                                            * @ZA12704
************************************************************** @ZA12704
         SPACE 1                                               @ZA12704
FRRSVA   DS    A         REGISTER 13 SAVE                      @ZA12704
FRRSVB   DS    A         REGISTER 14 SAVE                      @ZA12704
FRRASID  DS    H         ASID OF MEMORY REQUESTING LGE BLOCK   @ZA12704
         SPACE 1                                               @ZA12704
FRRFLA   DS    X         SMGR FLAG BYTE                        @ZA12704
FRRSYNCH EQU   X'80'     IOSYNCH LOCK HELD                     @ZA12704
FRRALLOC EQU   X'40'     SALLOC LOCK HELD - FOR 12 BYTE BLOCK  @ZA12704
*                             INDICATOR IS SET IN IRT          @ZA12704
FRRFAIL  EQU   X'20'     1ST LEVEL FRR FAILURE                 @ZA12704
FRRCURS  EQU   X'10'     RETRY RECURSION INDICATOR             @ZA12704
FRRGET   EQU   X'08'     GET BLOCK REQUEST                     @ZA12704
FRRSML   EQU   X'04'     SMALL BLOCK REQUEST                   @ZA12704
FRRMED   EQU   X'02'     MIDDLE BLOCK REQUEST                  @ZA12704
FRRLGE   EQU   X'01'     LARGE BLOCK REQUEST- FRR PROVIDED     @ZA12704
*                                                              @ZA12704
FRRGMDL  EQU   X'0A'     MIDDLE BLOCK GET REQUEST              @ZA12704
FRRGLGE  EQU   X'09'     LARGE BLOCK GET REQUEST               @ZA12704
         SPACE 1                                               @ZA12704
FRRFLB   DS    X         SMGR FLAG BYTE                        @ZA12704
FRRIOS   EQU   X'80'     ELEMENT VERIFICATION ROUTINE (EVR)    @ZA12704
FRRBCOM  EQU   X'40'     BRANCH ENTRY COMPRESS                 @ZA12704
FRRSCOM  EQU   X'20'     SRB ENTRY COMPRESS                    @ZA12704
FRRPURG  EQU   X'10'     PURGE/FREE INTERFACE ENTRY            @ZA12704
FRRCFLK  EQU   X'08'     COMPRESS ROUTINE PROCESSING FLAG      @ZA12704
FRRCSTP2 EQU   X'04'     COMPRESS ROUTINE PROCESSING FLAG      @ZA12704
FRRDFREE EQU   X'02'     COMPRESS ROUTINE PROCESSING FLAG      @ZA12704
FRRDEL   EQU   X'01'     MDL REQ- DELETE FRR IN FRR ROUTINE    @ZA12704
         SPACE 1                                               @ZA12704
FRRHDR   DS    A         POOL HEADER ADDRESS FOR EVR           @ZA12704
FRRRTM   DS    A         RTM/CALLER RETURN ADDRESS             @ZA12704
FRRWRK   DS    A         RTN 200B WORK AREA EXTENSION ADDRESS  @ZA12704
         SPACE 1                                               @ZA12704
FRRSLEN  EQU   *-FRRSMGR      FRR PARM AREA LENGTH             @ZA12704
         MEND
./ ADD NAME=IECDSIAB
*%GOTO SIABPLS1;
         MACRO
         IECDSIAB
*%SIABPLS1: ;
* /************************************************************/
* /*                                                          */
* /*           THIS IS THE DESCRIPTION OF HOW THE AREA        */
* /*           OF STORAGE RECIEVED FROM IOS STORAGE MANAGER   */
* /*           IS SUBDIVIDED INTO SRB AND IOSB.               */
* /*                                                          */
* /************************************************************/
*%GOTO SIABPLS2;
SIAB     DSECT
SIABCMCH DS    0F                  CHAIN POINTER FOR STORAGE MGR
SIABSRB  DS    12F                 THIS IS THE SRB AREA
SIABIOSB DS    28F                 THIS IS THE IOSB AREA
SIABEL   EQU   *-SIABCMCH          SIAB LENGTH
         MEND
*%SIABPLS2: ;
*   DCL 1 SIAB  BDY(WORD)  BASED(SIABPTR),
*        2 SIABCMCH CHAR(0),       /*CHAIN PTR FOR STORAGE MGR*/
*        2 SIABSRB  CHAR(48),      /*THIS IS THE SRB AREA     */
*        2 SIABIOSB CHAR(112),     /*THIS IS THE IOSB AREA    */
*        2 SIABEND  CHAR(0);       /*THIS IS THE END OF SIAB  */
*%DCL SIABEL CHAR;                 /* SIAB LENGTH             */
*%SIABEL='ADDR(SIABEND)-ADDR(SIABCMCH)';
./ ADD NAME=IECDTCCW
*        %GOTO TCCWL1; /*
         MACRO
         IECDTCCW
TCCW     DSECT
         SPACE 1  */
*%TCCWL1 : ;
*/********************************************************************/
*/*                                                                  */
*/*      THE TCCW BLOCK IS THE TRANSLATION CONTROL BLOCK WHICH       */
*/*      CONTAINS ALL INFORMATION REQUIRED TO TRANSLATE CCWS,        */
*/*      RE-TRANSLATE ADDRESSES OR UNFIX DATA AREAS. IT IS THE       */
*/*      BLOCK THAT IS BASSED BY ROUTINES WHICH CALL THE CCW         */
*/*      TRANSLATOR.                                                 */
*/*                                                                  */
*/********************************************************************/
*%GOTO TCCWL2; /*
         SPACE 1
TCCWTCB  DS    A                   ADDRESS OF TCB FOR THIS REQUEST
TCCWOPTN DS    XL1                 OPTION BYTE DESCRIBING WORK
*                                  TO BE DONE BY CCW TRANSLATOR
TCCWXLAT EQU   0                   TRANSLATE CCWS
TCCWCSWX EQU   4                   TRANSLATE CSW OR PASSES ADDRESS
TCCWUNFX EQU   8                   UNFIX DATA AREA - SET UP FREE LST
TCCWGTMN EQU   12                  RETURN FROM GETMAIN
TCCWSATR EQU   16                  SINGLE ADDRESS TRANSLATION
TCCWPGER EQU   X'80'               PAGE FIX ERROR
TCCWTRER EQU   X'90'               TRANSLATION ERROR
TCCWIDAE EQU   X'A0'               IDA BIT ERROR IN VIRT CP    @ZA06069
TCCWVMER EQU   X'D0'               VALMAP ERROR
         SPACE 1
TCCWUCB  DS    AL3                 ADDRESS OF ASSOCIATED UCB
TCCWBEB  DS    A                   ADDRESS OF FIRST BEB
TCCWFIX  DS    A                   ADDRESS OF FIRST FIX LIST
TCCWFVC  DS    A                   ADDRESS OF FIRST VIRTUAL CCW
TCCWFRC  DS    A                   ADDRESS OF FIRST REAL CCW
TCCWPLKR DS    A                   ADDRESS OF NEXT FIX LIST ENTRY
TCCWINDA DS    A                   ADDRESS OF FIRST IDAL
TCCWTICL DS    A                   ADDRESS OF UNRESOLVED TIC LIST
TCCWINDR DS    A                   ADDRESS OF NEXT IDAL POINTER
TCCWCCWR DS    A                   ADDRESS OF NEXT VIRTUAL CCW
         SPACE 1                                               @ZA16169
TCCWMODB DS    XL1                 TRANSLATOR FLAG BYTE        @ZA16169
TCCWFCHN EQU   X'80'               - FREE CHAIN CONSTRUCTED    @ZA26555
TCCWRSV2 EQU   X'40'               - RESERVED                  @ZA16169
TCCWRSV3 EQU   X'20'               - RESERVED                  @ZA16169
TCCWRSV4 EQU   X'10'               - RESERVED                  @ZA16169
TCCWRSV5 EQU   X'08'               - RESERVED                  @ZA16169
TCCWPC10 EQU   X'04'               - A ZERO IDAL ENTRY REQD    @ZA16169
TCCWPGCK EQU   X'02'               - PAGE FIX/UNFIXING ACTIVE. @ZA16169
TCCWECBU EQU   X'01'               - ECB IN USE.               @ZA16169
         EJECT
TCCWCCWL DS    XL1                 NUMBER OF CCWS LEFT IN BEB
TCCWINDL DS    XL1                 NUMBER OF IDAS LEFT IN IDAL
TCCWEFOP DS    XL1                 NUMERIC PORTION OF CURRENT COMMAND
TCCWCCWA DS    A                   NEXT VIRTUAL CCW
TCCWTICA DS    A                   TIC-ED TO ADDRESS
TCCWLOCA DS    A                   LOW COMPARE ADDRESS
TCCWHICA DS    A                   HIGH COMPARE ADDRESS
TCCWCBEB DS    A                   CURRENT BEB POINTER
TCCWOPBT DS    X                   PREVIOUS OP BYTE
         ORG   *-1                 FULL WORD ALIGNMENT
TCCWOPTR DS    A                   PREVIOUS CCW ADDRESS
         SPACE 1                                               @ZA16169
TCCWSAVE DS    0XL32               160 BYTE BLK REG SAVE AREA  @ZA16169
TCCWSAVD DS    A                   - SAVE AREA FOR REG 13      @ZA16169
TCCWSAV4 DS    A                   - SAVE AREA FOR REG  4      @ZA16169
TCCWSAV5 DS    A                   - SAVE AREA FOR REG  5      @ZA16169
TCCWSAV6 DS    A                   - SAVE AREA FOR REG  6      @ZA16169
TCCWSAV7 DS    A                   - SAVE AREA FOR REG  7      @ZA16169
TCCWSAV8 DS    A                   - SAVE AREA FOR REG  8      @ZA16169
TCCWSAV9 DS    A                   - SAVE AREA FOR REG  9      @ZA16169
TCCWSAVA DS    A                   - SAVE AREA FOR REG  A      @ZA16169
TCCWRGSV DS    0XL56               TRANSLATOR REG SAVE AREA    @ZA16169
TCCWREG1 DS    A                   - SAVE AREA FOR REG 1
TCCWREG2 DS    A                   - SAVE AREA FOR REG 2
TCCWREG3 DS    A                   - SAVE AREA FOR REG 3
TCCWREG4 DS    A                   - SAVE AREA FOR REG 4
TCCWREG5 DS    A                   - SAVE AREA FOR REG 5
TCCWREG6 DS    A                   - SAVE AREA FOR REG 6
TCCWREG7 DS    A                   - SAVE AREA FOR REG 7
TCCWREG8 DS    A                   - SAVE AREA FOR REG 8
TCCWREG9 DS    A                   - SAVE AREA FOR REG 9
TCCWREGA DS    A                   - SAVE AREA FOR REG 10
TCCWREGB DS    A                   - SAVE AREA FOR REG 11
TCCWREGC DS    A                   - SAVE AREA FOR REG 12
TCCWREGD DS    A                   - SAVE AREA FOR REG 13
TCCWREGE DS    A                   - SAVE AREA FOR REG 14
         SPACE 1
TCCWBL   EQU   *-TCCW              BLOCK LENGTH OF TCCW
         MEND , */
*%TCCWL2: ;
* DECLARE 1 TCCW BDY(WORD) BASED(TCCWPTR), /* TRANSLATION CONTROL
*                                  BLOCK */
*    2 TCCWTCB PTR(31),            /* ADDRESS OF TCB FOR REQUEST   */
*    2 TCCWOPTN BIT(8),            /* COMMUNICATION TO/FROM CALLER */
*    2 TCCWUCB PTR(24),             /* ADDRESS OF THE UCB */
*    2 TCCWBEB PTR(31),             /* ADDRESS OF THE BEGIN END BLK */
*    2 TCCWFIX PTR(31),             /* ADDRESS OF THE FIX LIST */
*    2 TCCWFVC PTR(31),             /* ADDR OF THE FST VIRTUAL CCW */
*    2 TCCWFRC PTR(31),             /* ADDRESS OF THE REAL CCW */
*    2 TCCWPLKR PTR(31),            /* ADDRESS OF CURRENT FIX ENTRY */
*    2 TCCWINDA PTR(31),            /* ADDRESS OF FIRST IDAL */
*    2 TCCWTICL PTR(31),            /* UNRESOLVED TIC LIST */
*    2 TCCWINDR PTR(31),            /* ADDRESS OF CURRENT IDAL ENTY */
*    2 TCCWCCWR PTR(31),            /* ADDRESS OF SLOT FOR REAL CCW */
*    2 TCCWMODB BIT(8),             /* FLAG BYTE FOR  TRANSLATION */
*      3 TCCWRSV1 BIT(1),           /* RESERVED              @ZA16169*/
*      3 TCCWRSV2 BIT(1),           /* RESERVED              @ZA16169*/
*      3 TCCWRSV3 BIT(1),           /* RESERVED              @ZA16169*/
*      3 TCCWRSV4 BIT(1),           /* RESERVED              @ZA16169*/
*      3 TCCWRSV5 BIT(1),           /* RESERVED              @ZA16169*/
*      3 TCCWPC10 BIT(1),           /* A ZERO IDAL ENTRY RQD @ZA16169*/
*      3 TCCWPGCK BIT(1),           /* PAGE FIX/UNFIX ACTIVE @ZA16169*/
*      3 TCCWECBU BIT(1),           /* ECB IN USE            @ZA16169*/
*    2 TCCWCCWL CHAR(1),            /* NUMBER OF CCWS LEFT IN BEB */
*    2 TCCWINDL CHAR(1),            /* NUMBER OF IDAL LEFT */
*    2 TCCWEFOP CHAR(1),            /* NUMERIC PORTION OF OP CODE */
*    2 TCCWCCWA PTR(31),            /* CURRENT VIRTUAL CCW ADDR */
*    2 TCCWTICA PTR(31),            /* ADDRESS PORTION OF TIC */
*    2 TCCWLOCA PTR(31),            /* LOW COMPARE ADDRESS */
*    2 TCCWHICA PTR(31),            /* HIGH COMPERE ADDRESS */
*    2 TCCWCBEB PTR(31),            /* CURRENT BEB POINTER */
*    2 TCCWOPTR PTR(31),            /* PREVIOUS CCW ADDR     @ZM30410*/
*      3 TCCWOPBT CHAR(1),          /* PREVIOUS OP BYTE      @ZM30410*/
*      3 *        CHAR(3),          /* ADDRESS PORTION       @ZM30410*/
*    2 TCCWSAVE CHAR(32),           /* INTERNAL WORK AREA */
*      3 TCCWSAVD PTR(31),          /* SAVE AREA- REG D      @ZA16169*/
*      3 TCCWSAV4 PTR(31),          /* SAVE AREA- REG 4      @ZA16169*/
*      3 TCCWSAV5 PTR(31),          /* SAVE AREA- REG 5      @ZA16169*/
*      3 TCCWSAV6 PTR(31),          /* SAVE AREA- REG 6      @ZA16169*/
*      3 TCCWSAV7 PTR(31),          /* SAVE AREA- REG 7      @ZA16169*/
*      3 TCCWSAV8 PTR(31),          /* SAVE AREA- REG 8      @ZA16169*/
*      3 TCCWSAV9 PTR(31),          /* SAVE AREA- REG 9      @ZA16169*/
*      3 TCCWSAVA PTR(31),          /* SAVE AREA- REG A      @ZA16169*/
*    2 TCCWRGSV,                    /* REGISTER SAVE AREA */
*      3 TCCWREG1 PTR(31),          /* SAVE AREA FOR REGISTER 1 */
*      3 TCCWREG2 PTR(31),          /* SAVE AREA FOR REGISTER 2 */
*      3 TCCWREG3 PTR(31),          /* SAVE AREA FOR REGISTER 3 */
*      3 TCCWREG4 PTR(31),          /* SAVE AREA FOR REGISTER 4 */
*      3 TCCWREG5 PTR(31),          /* SAVE AREA FOR REGISTER 5 */
*      3 TCCWREG6 PTR(31),          /* SAVE AREA FOR REGISTER 6 */
*      3 TCCWREG7 PTR(31),          /* SAVE AREA FOR REGISTER 7 */
*      3 TCCWREG8 PTR(31),          /* SAVE AREA FOR REGISTER 8 */
*      3 TCCWREG9 PTR(31),          /* SAVE AREA FOR REGISTER 9 */
*      3 TCCWREGA PTR(31),          /* SAVE AREA FOR REGISTER 10 */
*      3 TCCWREGB PTR(31),          /* SAVE AREA FOR REGISTER 11 */
*      3 TCCWREGC PTR(31),          /* SAVE AREA FOR REGISTER 12 */
*      3 TCCWREGD PTR(31),          /* SAVE AREA FOR REGISTER 13 */
*      3 TCCWREGE PTR(31),          /* SAVE AREA FOR REGISTER 14 */
*    2 TCCWEND CHAR(0);             /* END OF STRUCTURE          */
*%DCL TCCWBL CHAR;
*%TCCWBL='ADDR(TCCWEND)-ADDR(TCCWTCB)'; /* LENGTH OF TCCW        */
*
*/*      BITS DEFINED FOR TCCWOPTN                               */
*
* DCL TCCWXLAT BIT(8) CONSTANT('00'X); /* TRANSLATION REQUEST    */
* DCL TCCWCSWX BIT(8) CONSTANT('04'X); /* CSW TRANSLATION REQUEST */
* DCL TCCWUNFX BIT(8) CONSTANT('08'X); /* UNFIX PAGES REQUEST     */
* DCL TCCWSATR BIT(8) CONSTANT('10'X); /*SINGLE ADDRESS TRANSLATION*/
* DCL TCCWPGER BIT(8) CONSTANT('80'X); /* PAGING ERROR INDICATOR   */
* DCL TCCWTRER BIT(8) CONSTANT('90'X); /* TRANSLATION ERROR INDICATOR*/
* DCL TCCWIDAE BIT(8) CONSTANT('A0'X); /* IDA BIT ERROR      @ZA06069*/
./ ADD NAME=IECDVOID
* %      GO TO VOIPLS;             /* GO TO THE PLS VERSION   */
         MACRO
         IECDVOID  &CSECT=NO
         SPACE 1
****************************************************************
*                                                              *
*    THIS IS THE VECTOR OF IOS DRIVERS CONTROL BLOCK. IT IS    *
*    ADDRESSABLE THROUGH THE IOCOM VIA IOCVOID.                *
*                                                              *
****************************************************************
         SPACE 1
         AIF   ('&CSECT' NE 'YES').VOI001
IECVOID  DS    0F
*   DRIVER ID =0   RESERVED
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
IECVOENT EQU   *
*   DRIVER ID =1  MISCELLANEOUS ID FOR I/O REQUESTS NOT NEEDING
*                 VOID SERVICES.
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =2  EXCP
         DC    V(IECVXPUR)         EXCP PURGE SUBROUTINE ADDRESS
         DC    V(IECVXRES)         RESTORE SUBROUTINE
         DC    V(IECVEXTC)         EXTENT CHECK SUBROUTINE
*   DRIVER ID =3  VSAM
         DC    V(IDA121A6)         ABP PURGE SUBROUTINE
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =4  VTAM
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =5  TCAM
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =6  OLTEP
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =7  PCI FETCH
         DC    V(IEWFTPRG)
         DC    A(IECVOB14)
         DC    V(IEWFTXCK)
         WXTRN IEWFTPRG,IEWFTXCK                               @ZA11363
*   DRIVER ID =8  JES3
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =9  SS1                                          @Y30LPLC
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DRIVER ID =A  IECVIOPM PURGE                               @ZA04107
         DC    A(IECVOB14)         HI BYTE USED FOR USE COUNT  @ZA04107
         DC    A(IECVOB14)
         DC    A(IECVOB14)
*   DUMMY  ID =B  VPSS                                         @G29ANLO
         DC    A(IECVOB14)                                     @G29ANLO
         DC    A(IECVOB14)                                     @G29ANLO
         DC    A(IECVOB14)                                     @G29ANLO
*   DUMMY  ID =C  RESERVED
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         DC    A(IECVOB14)
         SPACE 1
IECVOEND EQU   *
         SPACE 1
*  DUMMY VOID TABLE ENTRY - ZERO REG 15 AND RETURN ON 14
*  MUST BE CONTIGUOUS TO LAST TABLE ENTRY FOR IOSGEN SETVOID FUNCTION
         SPACE 1
IECVOB14 SLR   15,15               ZERO REG 15
         BR    14                  RETURN TO CALLER
         MEXIT
.VOI001  ANOP
VOID     DSECT
VOIENTRY DS    0F
VOIPRG   DS    A                   ADDR OF DRIVER PURGE SUBR
VOIRSTR  DS    A                   ADDR OF DRIVER RESTORE SUBR
VOIEXTNT DS    A                   ADDR OF DRIVER EXTENT CHECK
*                                  SUBROUTINE
VOIEL    EQU   *-VOIENTRY          LENGTH OF VOID
         MEND
*%VOIPLS: ;
*
*/*************************************************************/
*/*                                                           */
*/*  THIS IS THE VECTOR OF IOS DRIVERS CONTROL BLOCK. IT IS   */
*/*  ADDRESSABLE THROUGH THE IOCOM.                           */
*/*                                                           */
*/*************************************************************/
*/*                                                           */
*/*      08/22/72   LEVEL=00                                  */
*/*                                                           */
*/*************************************************************/
*
*   DCL 1 VOID(*)  BDY(WORD)  BASED(VOIDPTR),
*       2  VOIENTRY PTR(31),       /* ENTRY NAME              */
*         3 VOIPRG  PTR(31),       /* ADDR OF DRIVR PURGE RTN */
*       2  VOIRSTR  PTR(31),       /* ADDR OF DRVR RESTORE RTN*/
*       2  VOIEXTNT PTR(31),       /* ADDR OF DRIVER EXTENT   */
*                                  /* CHECK SUBROUTINE        */
*       2  VOIEND   CHAR(0);       /* END OF VOID             */
*
*%DCL  VOIEL  CHAR;                /* LENGTH OF VOID          */
*%VOIEL='ADDR(VOIEND)-ADDR(VOIENTRY)';
./ ADD NAME=IECDXDBA
         MACRO
         IECDXDBA
***********************************************************************
*        EXCP PROVIDED DEBUGGING AREA - DATE 2/13/73 - LEVEL=1        *
*                                                                     *
*        THIS AREA IS PROVIDED FOR ABENDING TASKS TO AID THE          *
*        PROGRAMMER IN DEBUGGING. PROVIDED FOR HIS INFORMATION        *
*        IS THE ORIGINAL ABEND CODE, THE PSW, THE REGISTERS, THE      *
*        GENERAL VICINITY OF THE ERROR AND, IN THE CASE OF            *
*        TRANSLATION ERRORS, THE TRANSLATION BLOCKS.                  *
*                                                                     *
*        A POINTER TO THE AREA IS CONTAINED IN THE TCB CALLED         *
*        TCBEXCPD, OFFSET X'C0'. IF A FIELD IS ZERO, IT IS NOT VALID  *
*        OR CANNOT BE FOUND AT TIME OF ERROR.                         *
*                                                                     *
***********************************************************************
XDBA     DSECT
XDBACOMP DS    H                   ABEND COMPLETION CODE
XDBAFLAG DS    X                   FLAG DEPICTING WHERE THE PROBLEM
*                                  OCCURRED.
XDBAFTE  EQU   X'80'               ERROR IN SVC PORTION OF EXCP
XDBABKE  EQU   X'40'               ERROR IN SRB PORTION OF EXCP
XDBAPCI  EQU   X'20'               ERROR IN PCI APPENDAGE
XDBACHE  EQU   X'10'               ERROR IN CHE APPENDAGE
XDBAABE  EQU   X'08'               ERROR IN ABE APPENDAGE
XDBAEOE  EQU   X'04'               ERROR IN EOE APPENDAGE
XDBAPGFX EQU   X'02'               ERROR IN PGFX APPENDAGE
XDBAAACT EQU   X'01'               APPENDAGE IS ACTIVE         @YM05509
XDBASIO  EQU   X'00'               ERROR IN SIO APPENDAGE      @YM05509
         SPACE 1
XDBARV1  DS    X                   RESERVED
XDBAPSW  DS    XL8                 PSW AT TIME OF ERROR
         DS    XL2                 RESERVED                    @YM02855
XDBACC   DS    XL2                 ORIG. ABEND CODE            @YM02855
XDBARGSV DS    16F                 REGISTERS AT TIME OF ABEND
XDBATRAN DS    F                   TRANSLATION EXCEPTION ADDR  @ZA06070
XDBARQE  DS    XL40                RQE BLOCK                   @ZA06070
XDBACHAN DS    F                   XDBA CHAIN POINTER          @ZA15703
         SPACE 1                                               @ZA06070
*  THE 160 BYTE BLOCKS ARE MOVED INTO REMAINING DEBUGGING     *@ZA06070
*  AREA, IN FOLLOWING SEQUENCE (IF PRESENT) :                 *@ZA06070
*        EWA, SRB/IOSB, TCCW, IDAL, FIX AND BEB.              *@ZA06070
*  THE 1ST 160 BYTE FOLLOWING LAST ENTRY IS ZEROED.           *@ZA06070
*  THE SRB AND TCCW ARE VALID IF ADDR IN RQE IS VALID         *@ZA06070
***************************************************************@ZA06070
XDBAENT  DS    XL160               START OF 160B BLOCKS        @ZA06070
         SPACE 1                                               @ZA06070
XDBAEL   EQU   160                 ONE BLOCK ENTRY LENGTH      @ZA06070
XDBASIZE EQU   2048                SIZE OF XDBA
XDBABLKS EQU   (XDBASIZE-(XDBAENT-XDBA))/XDBAEL  CNT 160B BLKS @ZA06070
         MEND
./ ADD NAME=IECDXFRR
         MACRO
         IECDXFRR
FRREXCP  DSECT                                                 @ZA12704
************************************************************** @ZA12704
*        IECVEXCP/IECVEXPR FRR PARM AREA DSECT.              * @ZA12704
*        DSECT DESCRIBES USAGE OF THE 6 WORD FRR PARM AREA   * @ZA12704
*                                                            * @ZA12704
************************************************************** @ZA12704
FRRCRQE  DS    A         CURRENT  RQE POINTER                  @ZA12704
FRRPRQE  DS    A         PREVIOUS RQE POINTER                  @ZA12704
FRRSTRG  DS    A         FREE 160B BLOCK POINTER               @ZA12704
         SPACE 1                                               @ZA12704
FRRFLAG  DS    X         EXCP PROCESSING FLAGS                 @ZA12704
FRRFTE   EQU   X'80'     FRONT END ENTRANCE                    @ZA12704
FRRBKE   EQU   X'40'     BACK END ENTRANCE                     @ZA12704
FRRPCI   EQU   X'20'     PCI APPENDAGE PROCESSING              @ZA12704
FRRCHE   EQU   X'10'     CHANNEL END APPENDAGE PROCESSING      @ZA12704
FRRABE   EQU   X'08'     ABNORMAL END APPENDAGE PROCESSING     @ZA12704
FRREOE   EQU   X'04'     END OF EXTEND APPENDAGE PROCESSING    @ZA12704
FRRPGFX  EQU   X'02'     PAGE FIX APPENDAGE PROCESSING         @ZA12704
FRRAACT  EQU   X'01'     APPENDAGE IS ACTIVE                   @ZA12704
FRRSIO   EQU   X'00'     START I/O APPENDAGE PROCESSING        @ZA12704
*                                                              @ZA12704
FRREXPR  EQU   X'3E'     EXPR ENTRY FOR PURGING OR FRR TERM    @ZA12704
         SPACE 1                                               @ZA12704
FRRTCNT  DS    X         RQE XLATE CTR AND SMGR INTF FLAGS     @ZA12704
*        EQU   X'80'     RESERVED                              @ZA12704
FRRXLTA  EQU   X'40'     RQE TRANSLATION ACTIVE                @ZA12704
FRRXLT   EQU   X'30'     2 BIT RQE XLATE COUNTER (0-3)         @ZA12704
FRRGETR  EQU   X'08'     STORAGE MANAGER GET REQUEST           @ZA12704
*        EQU   X'04'     STORAGE MANAGER RESERVED BIT          @ZA12704
FRR40    EQU   X'02'     STORAGE MANAGER 40B (MED) REQUEST     @ZA12704
FRR160   EQU   X'01'     STORAGE MANAGER 160B (LGE) REQUEST    @ZA12704
*                                                              @ZA12704
FRRG40   EQU   X'0A'     40 BYTE GET REQUEST                   @ZA12704
FRRF40   EQU   X'02'     40 BYTE FREE REQUEST                  @ZA12704
FRRG160  EQU   X'09'     160 BYTE GET REQUEST                  @ZA12704
FRRF160  EQU   X'01'     160 BYTE FREE REQUEST                 @ZA12704
         SPACE 1                                               @ZA12704
FRRFCNT  DS    X         COUNT OF CHAINED 160 B BLOCKS TO FREE @ZA12704
FRRWORK  DS    X         WORK BYTE AND FLAG DEFINITIONS        @ZA12704
*        EQU   X'F0'     WORK BITS                             @ZA12704
FRRPTERM EQU   X'08'     POST STATUS TERMINATION ENTRY         @ZA12704
FRRRRP   EQU   X'04'     PURGE REL REQ RQES TO CURRENT RQE     @ZA12704
FRRUNREL EQU   X'02'     IOBUNREL BIT                          @ZA12704
*        EQU   X'01'     RESERVED                              @ZA12704
         SPACE 1                                               @ZA12704
FRRRETR  DS    A         CALLERS RETURN ADDRESS                @ZA12704
FRRLLSA  DS    A         LOCAL LOCK SAVE AREA POINTER          @ZA12704
         SPACE 1                                               @ZA12704
FRRXLEN  EQU   *-FRREXCP      FRR PARM AREA LENGTH             @ZA12704
         MEND
./ ADD NAME=IECIOLTP
         MACRO
         IECIOLTP
*******************************************************$********  20102
*                                                                 20102
*                     IOS - OLTEP CLEANUP ROUTINES                20102
*                                                                 20102
*   FUNCTION   RESTORE SYSTEM TO NORMAL PROCESSING BY RESETTING   20102
*              THE IOS-OLTEP VECTOR TABLE FUNCTION SWITCH, AND    20102
*              RELEASING MAIN STORAGE WHICH WAS USED FOR CONTROL  20102
*              BLOCKS.  THE FUNCTIONS ARE SET UP IN IGC01059 AND  20102
*              IN IGC03059, AND ARE DEFINED IN FULL THERE.        20102
*                                                                 20102
*   ENTRY POINTS   CLEANCH FOR CLEANING UP CHANNEL FUNCTION       20102
*                  CLEANDE FOR CLEANING UP D.E. POSTING FUNCTION  20102
*                  CLEANAT FOR CLEANING UP ATT'N FUNCTION         20102
*                  CLEANBP FOR CLEANING UP BYPASS CP PREFIX       21051
*                  CLEANEX FOR CLEANING UP SPECIFIC EXPOSURE      21051
*                  CLEANSI FOR CLEANING UP 2ND SIO                21051
*                  FREEQUE IF FROM ABEND                          20102
*                                                                 20102
*   INPUT      ADDRESS OF TWO WORD PARAMETER LIST IN REGISTER 9.  20102
*              FOR DEVICE FUNCTIONS, THE UCB, DEB ADDRESSES       20102
*              FOR CHANNEL FUNCTION, THE DEB AND CHAN ADDRESSES   20102
*              IF REG9=0, OLTEP REQUIRES TOTAL CLEANUP            20067
*                                                                 20102
*   OUTPUT     N/A
*                                                                 20102
*   EXTERNAL ROUTINES  FREEMAIN                                   20102
*                                                                 20102
*   EXITS      RETURN TO SYSTEM ON REGISTER 14                    20102
*                                                                 20102
*   TABLES/WORK AREAS  THE IOS V.T., THE IOS-OLTEP QUEUE          20102
*                                                                 20102
*   NOTES      THIS PART OF IGC0005I WAS WRITTEN AND IS           20102
*              MAINTAINED BY IOS.                                 20102
*                                                                 20102
*******************************************************$********  20102
         EJECT                                                    20102
*   REGISTER DEFINITIONS                                          20102
GMREG    EQU   1                        GETMAIN CORE ADDRESS      20102
VTREG    EQU   2                        VECTOR TABLE IN IOS       20102
MSTREG   EQU   5                        ADDRESS OF MASTER Q ENTRY 20102
SCBREG   EQU   6                        UCB OR DEB ADR            20102
LNKREG1  EQU   7                        LINK REGISTER             20102
SUBREG   EQU   8                        SUB-ENTRY ADDRESS         20102
WKREG1   EQU   10                       WORK REGISTER             20102
WKREG2   EQU   11                       WORK REGISTER             20102
WKREG3   EQU   13                       WORK REGISTER             20102
RETNREG  EQU   14                       RETURN TO THE SYSTEM      20102
         SPACE 1                                                  20102
*   OLTEP QUEUE ADDRESSING                                        20102
LOGDCB   EQU   116                      OFFSET TO LOGREC DCB      20102
OLTSW    EQU   0                        FUNCTION SWITCH           20102
OLTQUE   EQU   4                        ADR OF QUEUE ORIGIN       20102
         SPACE 1                                                  20102
*   OFFSETS IN QUEUE ENTRY                                        20102
LNKFLD   EQU   0                        LINK FIELD                20102
SUBSCB   EQU   4                        UCB OR DEB                20102
MSTRCH   EQU   7                        CHAN ADR IN MASTER ENTRY  20102
SUBOPT   EQU   8                        OPTION CODE FIELD         20102
SUBDTI   EQU   11                       TRUE DEVTAB INDEX         21051
SUBUCB   EQU   12                       UCB ADDRESS               21051
         SPACE 1                                                  20102
*   PARAMETER LIST OFFSETS                                        20102
OPTBYTE  EQU   0                        OPTION CODE BYTE          20102
SCBADR   EQU   0                        DEB OR UCB C.B.           20102
CHADR    EQU   7                        CHANNEL ADDRESS           20102
         SPACE 1                                                  20102
*   OPTION CODES                                                  20102
CHOPT    EQU   X'80'                    CHANNEL OPTION            20102
DEOPT    EQU   X'40'                    D.E. OPTION               20102
ATOPT    EQU   X'20'                    ATTENTION OPTION          20102
BPOPT    EQU   X'10'                    BYPASS OPTION             20102
EXPOPT   EQU   X'08'                    SPECIFIC EXPOSURE         21051
SIOOPT   EQU   X'02'                    2ND SIO                   21051
         SPACE 1                                                  20102
*   TCB FIELDS AND FLAGS                                          20067
TCBFLTRN EQU   20                       TCB FLAG BYTE             20102
TCBOLTFL EQU   X'02'                    TCB OLTEP FLAG            20102
TCBFLAG  EQU   29                       TCB FLAG BYTES            20102
ABND     EQU   X'80'                    TASK BEING ABENDED        20102
         SPACE 1                                                  20102
*   UCB OFFSETS                                                   21051
UCBDTI   EQU   7                        DEVICE TABLE INDEX        21051
UCBDUTYP EQU   18                       DEVICE CLASS/UNIT TYPE    21051
UCBWKADB EQU   60                       UCB EXTENSION             21051
*   MISCELLANEOUS                                                 20102
NEXAVL   EQU   X'7C'                    ADR OF NEXT AVAIL. RQE    20102
CHMSK    EQU   20                       CHANNEL MASK FOR RESTART  20102
ZERO     EQU   0                        ZERO                      20102
ADDONE   EQU   1                        ONE                       20102
HIBYTE   EQU   24                       SLL FACTOR                20067
VTLN     EQU   8                        LENGTH OF VECTOR TABLE    20067
EXPCHN   EQU   92                       CONTROL UCB PTR OFFSET    21051
NXTEXP   EQU   4                        EXP. UCB PTR OFFSET       21051
         SPACE 3                                                  20102
CLEANBP  DS    0H                       BYPASS FUNCTION           20102
         MVI   OPTBYTE(PARMREG),BPOPT   INDICATE BYPASS OPTION    20102
         BC    15,FREEQUE               GO CLEAN IT UP            20102
         SPACE 1                                                  20102
CLEANCH  DS    0H                       CHANNEL CLEANUP           20102
         MVI   OPTBYTE(PARMREG),CHOPT   SET UP CHAN OPTION CODE   20102
         BC    15,FREEQUE               GO CLEAN IT UP            20102
         SPACE 1                                                  20102
CLEANDE  DS    0H                       D.E. OPTION CLEANUP       20102
         MVI   OPTBYTE(PARMREG),DEOPT   INDICATE D.E. OPTION      20102
         BC    15,FREEQUE               GO CLEAN IT UP            20102
         SPACE 1                                                  20102
CLEANAT  DS    0H                                                 20102
         MVI   OPTBYTE(PARMREG),ATOPT   INDICATE ATT'N OPTION     20102
         B     FREEQUE                  CLEAN UP                  21051
         SPACE 1                                                  21051
CLEANEX  MVI   OPTBYTE(PARMREG),EXPOPT  INDICATE SPECIFIC EXP OPTN21051
         B     FREEQUE                  CLEAN UP                  21051
         SPACE 1                                                  21051
CLEANSI  MVI   OPTBYTE(PARMREG),SIOOPT  INDICATE 2ND SIO OPTION   21051
*****    B     FREEQUE                  CLEAN UP                  21051
         SPACE 1                                                  20102
*   SCAN THE IOS-OLTEP QUEUE AND FIND THE NUMBER OF SUB-ENTRIES   20102
*   FOR THE INPUT OPTION AND THE ENTRY FOR THE INPUT UCB OR DEB.  20102
         SPACE 1                                                  20102
FREEQUE  DS    0H                       ENTRY IF FROM ABEND       20102
         L     VTREG,LOGDCB(0,CVTREG)   LOG DCB ADR               20102
         SH    VTREG,TWELVE             BACK UP TWELVE            20102
         L     VTREG,ZERO(0,VTREG)      POINT AT VECTOR TABLE     20102
         L     MSTREG,OLTQUE(0,VTREG)   GET MASTER ENTRY          20102
         LTR   MSTREG,MSTREG            ANYTHING TO CLEAN UP      20102
         BCR   8,RETNREG                NO, RETURN                20102
         TM    TCBFLAG(TCBREG),ABND     IS TASK BEING ABENDED     20102
         BC    1,FREEQ1                 YES, CLEAN UP QUEUE       20102
         LTR   PARMREG,PARMREG          OLTEP WANT TOTAL CLEANUP  20102
         BC    8,FREEQ1                 YES, GO DO IT             20102
         L     SCBREG,SCBADR(0,PARMREG) GET INPUT C.B.            20102
         LA    SCBREG,ZERO(0,SCBREG)    CLEAR HIGH ORDER BYTE     20102
         SR    RCREG,RCREG              INITIALIZE COUNTER        20102
         SR    SUBREG,SUBREG            CLEAR FOR LATER COMPARE   20102
         LR    WKREG1,MSTREG            COPY MASTER ADDRESS       20102
FIND1    L     WKREG2,LNKFLD(0,WKREG1)  GET NEXT ENTRY            20102
         LTR   WKREG2,WKREG2            END OF QUEUE              20102
         BC    8,DEQNTRY                YES, GO DEQUE IT          20102
         LR    LNKREG1,WKREG1           SAVE BACK LINK POINTER    20102
         LR    WKREG1,WKREG2            COPY ENTRY ADDRESS        20102
         CLC   OPTBYTE(1,PARMREG),SUBOPT(WKREG1) FOR THIS OPTION  20102
         BC    7,FIND1                  NO, GET NEXT ENTRY        20102
         LA    RCREG,ADDONE(0,RCREG)    INCREMENT COUNTER         20102
         C     SCBREG,SUBSCB(0,WKREG1)  IS IT FOR INPUT SCB       20102
         BC    7,FIND1                  NO, GET NEXT ENTRY        20102
         LR    SUBREG,WKREG1            SAVE ENTRY ADDRESS        20102
         LR    WKREG3,LNKREG1           SAVE BACK LINK ENTRY      M1008
         BC    15,FIND1                 CONTINUE SCAN             20102
         SPACE 1                                                  20102
*   THE ENTRY ADDRESS IS IN SUBREG, THE ENTRY PRECEDING THIS      20102
*   ENTRY IS IN WKREG3.  THE LAST QUEUE ELEMENT IS IN WKREG1.     20102
*   THE NUMBER OF ENTRIES FOR THIS FUNCTION IS IN RCREG.          20102
*   IF ONLY ONE ENTRY IS FOUND FOR THIS FUNCTION, THE IOS-OLTEP   20102
*   SWITCH BIT FOR THIS FUNCTION IS TURNED OFF. IF NO OTHER       20102
*   FUNCTIONS ARE LEFT, THE ENTIRE QUEUE IS FREED AND THE IOS     20102
*   VECTOR TABLE IS RE-INITIALIZED.                               20102
         SPACE 1                                                  20102
DEQNTRY  LTR   SUBREG,SUBREG            WAS THE ENTRY FOUND       20102
         BCR   8,RETNREG                NO, RETURN                20102
         BCT   RCREG,DEQ2               SKIP AROUND IF ANY LEFT   20102
         XC    OLTSW(1,VTREG),OPTBYTE(PARMREG) TURN OFF SWITCH
         BC    8,DEQ4                   FREE Q IF NO FUNC IS LEFT 20102
         SPACE 1                                                  20102
*   DEQUE THE ENTRY FOR THIS FUNCTION                             20102
DEQ2     EQU   *                                                  21051
         CLI   SUBOPT(SUBREG),EXPOPT .  THIS A SPECIFIC EXP FUNC  21051
         BNE   ALLSET .                 BRANCH NO                 21051
         L     WKREG2,SUBUCB(0,SUBREG) .GET UCB ADDRESS           21051
         LA    LNKREG1,ALLSET                                     21051
         SPACE 1                                                  21051
***  IF DEVICE IS A MULTIPLE EXPOSURE DEVICE, RESET DTI IN ALL    21051
***  EXPOSURE UCB'S. IF NOT,RESET MAIN UCB DTI.                   21051
         SPACE 1                                                  21051
RESETRTN IC    GMREG,SUBDTI(0,SUBREG)   TRUE DEVTAB INDEX         21051
         STC   GMREG,UCBDTI(0,WKREG2)   SET TRUE INDEX IN UCB     21051
         CLC   UCBDUTYP(2,WKREG2),ZEUSCON                         21051
         BE    RESETALL                                           21051
         CLC   UCBDUTYP(2,WKREG2),ZEUSCN1                         21051
         BCR   7,LNKREG1                                          21051
RESETALL L     SCBREG,UCBWKADB(0,WKREG2) BASE UCB ENTENSION       21051
         L     RCREG,EXPCHN+NXTEXP(0,SCBREG) LAST EXP. STARTED    21051
         LR    WKREG2,RCREG             SAVE LAST EXP STARTED     21051
SETDTI   STC   GMREG,UCBDTI(0,WKREG2)   CHANGE EXP DTI            21051
         L     SCBREG,UCBWKADB(0,WKREG2) THIS EXPOSURE EXTENSION  21051
         L     WKREG2,EXPCHN+NXTEXP(0,SCBREG) NEXT EXP IN CHAIN   21051
         CR    WKREG2,RCREG             ALL EXPOSURES CHANGED     21051
         BNE   SETDTI                   BRANCH NO                 21051
         BR    LNKREG1                                            21051
         SPACE 1                                                  21051
ALLSET   L     WKREG1,LNKFLD(0,SUBREG)  RELINK REST OF THE        21051
         ST    WKREG1,LNKFLD(0,WKREG3)  OLTEP QUEUE               20102
         LR    GMREG,SUBREG             SET UP FREEMAIN PARAMETER 20102
         BAL   LNKREG1,FREENTRY         RELEASE CORE              20102
         CLI   OPTBYTE(PARMREG),CHOPT   IS THIS CHAN OPT          20102
         BCR   7,RETNREG                NO, RETURN TO SYSTEM      20102
         SPACE 1                                                  20102
*   IF CHANNEL OPTION, TELL IOS TO RESTART CHANNEL                20102
DEQ3     L     WKREG1,NEXAVL(0,CVTREG)  GET NEXT AVAIL. ADR       20102
         SR    WKREG2,WKREG2            CLEAR WORK REGISTER       20067
         IC    WKREG2,MSTRCH(0,MSTREG) GET CHANNEL ADR            20102
         LA    WKREG3,X'80'             SET UP MASK BIT           20102
         SLL   WKREG3,HIBYTE            SHIFT TO HIGH-ORDER BYTE  20102
         SRL   WKREG3,0(WKREG2)         SHIFT BIT TO CORRECT POS  20102
         O     WKREG3,CHMSK(0,WKREG1)   PICK UP ANY BITS THERE    20102
         ST    WKREG3,CHMSK(0,WKREG1)   ADD THIS CHAN TO MASK     20102
         BCR   15,RETNREG               RETURN TO SYSTEM          20102
         SPACE 1                                                  20102
DEQ4     OC    OLTSW(1,VTREG),OPTBYTE(PARMREG)     RESET SWITCH   20102
FREEQ1   TM    OLTSW(VTREG),CHOPT       NEED CHANNEL CLEANUP      20067
         BC    8,FREEQ1A                NO, CONTINUE              20067
         LR    RCREG,RETNREG            SAVE RETURN ADR           20067
         BAL   RETNREG,DEQ3             GO FORCE RESTART OF CHAN  20067
         LR    RETNREG,RCREG            RESTORE RETURN ADR        20067
FREEQ1A  LR    SUBREG,MSTREG            COPY MASTER ADR           20067
FREEQ2   LR    GMREG,SUBREG             SET UP REG1 FOR FREEMAIN  20102
         L     SUBREG,LNKFLD(0,SUBREG)  SAVE NEXT IN QUEUE        20102
         BAL   LNKREG1,FREENTRY         FREE ENTRY                20102
         LTR   SUBREG,SUBREG            ANY LEFT IN QUEUE         20102
         BZ    ENDALL                   BRANCH NO,ALL THROUGH     21051
         TM    SUBOPT(SUBREG),EXPOPT    EXP FUNCTION              21051
         BZ    FREEQ2                   BRANCH NO                 21051
         L     WKREG2,SUBUCB(0,SUBREG)  GET UCB ADDRESS           21051
         LA    LNKREG1,FREEQ2           RETURN ADDRESS            21051
         B     RESETRTN                 GO RESTORE DEVTAB INDEX   21051
         SPACE 1                                                  21051
ENDALL   XC    OLTSW(VTLN,VTREG),OLTSW(VTREG) ZERO OUT VECTOR TBL 21051
         BCR   15,RETNREG               RETURN TO SYSTEM          20102
         SPACE 1                                                  20102
FREENTRY L     REG0,SPL16               SET UP PARAMETER          20102
         FREEMAIN R,LV=(0),A=(1)
         BCR   15,LNKREG1                                         20102
         SPACE 1                                                  20102
***            CONSTANTS                                          20102
         SPACE 1                                                  20102
TWELVE   DC    H'12'                    TWELVE                    20102
ZEUSCON  DC    X'2006'                  2305-1                    21051
ZEUSCN1  DC    X'2007'                  2305-2                    21051
SPL16    DS    0F                       FREEMAIN PARAMETERS       20102
         DC    X'EA000010'              16 BYTES, SUBPOOL 234    X01906
         EJECT
         MEND
         END
./ ADD NAME=IEDCBDA
         MACRO
         IEDCBDA
* IEDCBDA MACRO UPDATED 4/27/72
*
*        THIS IS A DSECT OF THE COMMON BUFFER DATA AREA
*
IEDCBDA  DSECT
CBDAINDX DS    XL1 .                    INDEX BYTE
CBDAADDR DS    AL3 .                    POINTER TO DATA IN THIS AREA
CBDALEN  DS    H .                      LENGTH OF DATA IN THIS AREA
CBDAUSCT DS    H .                      NO OF LCBS USING THIS AREA
CBDAFLG1 DS    XL1 .                    FLAG BYTE 1
CBDAINUS EQU   X'01'                    DATA IN USE
CBDAFLG2 DS    XL1 .                    FLAG BYTE 2
         DC    H'0' .                   RESERVED
CBDASIZE EQU   *
CBDPRFSZ EQU   CBDASIZE-CBDAINDX
         MEND
./ ADD NAME=IEDCMB
         MACRO
         IEDCMB
* IEDCMB MACRO UPDATED 5/15/72
IEDCMB   DSECT
*
*        THIS IS A DSECT OF THE MASTER QCB FOR COMMON BUFFER
*        TRANSMISSION.
*
CMBFLAG1 DS    XL1 .                    FLAG BYTE
CMBSTCB  DS    AL3 .                    ADDRESS OF FIRST STCB
CMBPRI   DS    XL1 .                    PRIORITY
CMBLINK  DS    AL3 .                    POINTER TO NEXT STCB IN CHAIN
CMBSTVTO DS    XL1 .                    INDEX TO ENTRY IN THE SUBTASK
*                                         VECTOR TABLE
CMBRETRN DS    AL3 .                    RESERVED
CMBDAREA DS    H .                      NUMBER OF DATA AREAS
CMBASTCB DS    H .                      NUMBER OF AVAILABLE STCB'S
CMBFINDX DS    XL1 .                    INDEX TO FIRST DATA AREA
*                                         PREFIX
CMBFIRST DS    AL3 .                    ADDRESS OF FIRST DATA AREA
*                                         PREFIX
CMBLINDX DS    XL1 .                    INDEX TO LAST DATA AREA
*                                         PREFIX
CMBLAST  DS    AL3 .                    ADDRESS OF LAST DATA AREA
*                                         PREFIX
CMBNINDX DS    XL1 .                    INDEX TO NEXT DATA AREA
*                                         PREFIX
CMBNEXT  DS    AL3 .                    ADDRESS OF NEXT DATA AREA
*                                         PREFIX
         DS    H .                      RESERVED
CMBSIZE  DS    H .                      DATA AREA SIZE
*
*    DEC
*         *******************************************************
*     0   *  FLAG1   **                  STCB                   *
*         *******************************************************
*     4   *  PRI     **                  LINK                   *
*         *******************************************************
*     8   *  STVTO   **                  RETRN                  *
*         *******************************************************
*    12   *          DAREA          **          ASTCB           *
*         *******************************************************
*    16   *  FINDX   **                  FIRST                  *
*         *******************************************************
*    20   *  LINDX   **                  LAST                   *
*         *******************************************************
*    24   *  NINDX   **                  NEXT                   *
*         *******************************************************
*    28   *                         **          SIZE            *
*         *******************************************************
         MEND
./ ADD NAME=IEDDCT
*/*
         MACRO
&NAME    IEDDCT    &REG=1,&FLD=,&LEN=4
         LCLA      &NDX
         LCLB      &KGT1,&LGT6,&L1LT0
         LCLC      &OPS,&MLEN
.*A000000-999999                                               @Y17XAYO
.*A003820-004060,005650-005850                                 @Y17XAMO
.*C001700,002600,002900,003400,003800,006500-007060            @Y17XAMO
&NDX     SETA      2
&NAME    SR        &REG,&REG      CLEAR FOR IC
         IC        &REG,TRMCHCIN  PICK UP DCT INDEX
         BCTR      &REG,0         DECREMENT FOR MULTIPLY
         MH        &REG,AVTDCTLN  GET DCT ADDRESS OFFSET
         A         &REG,AVTCSTCS  GET ADDRESS OF DCT ENTRY
         AIF       ('&FLD' EQ '').DONE   NO MOVE ->
         AIF       ('&LEN' GT '1').NON0LEN CHECK FOR 0 LEN SPEC
         MNOTE     0,'ZERO/ONE LENGTH MOVE SPECIFIED - NO MOVE DONE'
         AGO       .DONE  EXIT                                 @Y17XAMO
* THE FOLLOWING SEVEN LINES DETERMINE IF THE &LEN SPEC IS A SYMBOL OR
* A CONSTANT, AND IF A CONSTANT THAT THE VALUE IS SIX OR LESS.
.NON0LEN ANOP
&MLEN    SETC      '&LEN'
&KGT1    SETB      (K'&LEN GT 1)
&LGT6    SETB      ('&LEN' GT '6')
&L1LT0   SETB      ('&LEN'(1,1) LT '0')
         AIF   ((&KGT1 AND &L1LT0) OR (NOT(&KGT1 OR &LGT6))).LENOK
&MLEN    SETC      '4'                                         @Y17XAMO
.LENOK   AIF       ('&FLD'(K'&FLD,1) EQ ')').BASED
         MVC       &FLD.(&MLEN),0(&REG) MOVE THE DCT ENTRY
         AGO       .CHECK                                      @Y17XAMO
.BASED   AIF       ('&FLD'(&NDX,1) EQ '(').FOUND
&NDX     SETA      &NDX+1
         AIF       (&NDX LT K'&FLD).BASED
         MNOTE     12,'INVALID ''TO'' OPERAND SPECIFIED: &FLD'
         AGO       .DONE  EXIT                                 @Y17XAMO
.FOUND   ANOP
&OPS     SETC     '&FLD'(1,&NDX).'&MLEN'.','.'&FLD'(&NDX+1,K'&FLD-&NDX)
         MVC       &OPS,0(&REG)
*                                MOVE THE DCT ENTRY
.CHECK   TM        TRMSTATE,TRMPREF   IS THERE A PREFIX?       @Y17XAMO
         BNO       $DCT&SYSNDX   NO ->                         @Y17XAMO
         CLI       TRMTYPE,TRMLUNT   SNA LOGICAL UNIT?         @Y17XAMO
         BNE       $DCT&SYSNDX  NO ->                          @Y17XAMO
         ICM       &REG,7,TRMSIBPT PICK UP THE SIB ADDRESS     @Y17XAMO
         TM        SIBSTAT0-IEDSIBD(&REG),X'7C' LUTYPE 0,1,2,3 @Y17XAMO
         BNZ       $DCT&SYSNDX  NO ->                          @Y17XAMO
         TM        SIBSTAT0-IEDSIBD(&REG),X'03' LUTYPE 0 OR 3? @Y17XAMO
         BNM       #DCT&SYSNDX  YES ->                         @Y17XAMO
         TM        SIBSTAT0-IEDSIBD(&REG),X'02' IS IT LUTYPE 2 @Y17XAMO
         BO        #DCT&SYSNDX  YES ->                         @Y17XAMO
$DCT&SYSNDX LA        &REG,&FLD       PICK UP TARGET ADDRESS   @Y17XAMO
         B         @DCT&SYSNDX  SKIP AROUND 3270 BIT SETTING   @Y17XAMO
#DCT&SYSNDX LA        &REG,&FLD       PICK UP TARGET ADDRESS   @Y17XAMO
         OI        DCTBYTE1-IEDDCT(&REG),DCT3270    SET 3270 BIT
@DCT&SYSNDX DS        0H
         AGO       .DONE                             */
*%IEDDCT: MACRO KEYS(REG,FLD,LEN);
*         DCL (REG,FLD,LEN)    CHAR;
*         DCL (MREG,MFLD,MLEN,SLEN) CHAR;
*         DCL FLEN             FIXED;
*         MREG='?'MACLABEL' 'MACNAME' 'MACKEYS';';
*         ANS(COMMENT(MREG)) SKIP  COL(MACCOL);
*         IF REG(1)='' THEN
*            ANS('/* THE ''REG'' KEYWORD MUST BE SPECIFIED */')  SKIP
*            MSG('/* THE ''REG'' KEYWORD MUST BE SPECIFIED */');
*         ELSE DO;
*              MREG=REG(1);   MFLD=FLD(1);
* ANS('/* SET UP ADDRESSABILITY TO THE DCT ENTRY */') COL(9);
* ANS(MACLABELMREG'=AVTCSTCS+(TRMCHCIN-1)*AVTDCTLN;') SKIP COL(10);
*              IF MFLD^='' THEN DO; /* MOVE REQUESTED            */
*              MLEN=LEN(1);
*              IF MLEN='' THEN MLEN='4';
*              ELSE IF INDEX('0123456789',MLEN(1:1))^=0 THEN DO;
*              FLEN=FIXED(MLEN); IF FLEN>6 THEN MLEN='4';
*              ELSE IF FLEN<2 THEN MLEN='4';                 END;
*              IF INDEX(MFLD,'(')=0 THEN SLEN='(1:'MLEN')';
*              ELSE SLEN='';
* ANS('/* MOVE THE DCT ENTRY TO THE SPECIFIED WORKAREA */') COL(9);
* ANS(MFLDSLEN' = 'MREG'->IEDDCT(1:'MLEN');') SKIP COL(10);
* ANS('/* SET POINTER TO THE TARGET ADDRESS */') COL(9);
* ANS(MREG'=ADDR('MFLD'); /*SET UP PTR*/') SKIP COL(15);
* ANS('/* IS THE DCT FOR AN LU WITH 3270 DATA STREAM */') COL(9);
* ANS('IF (TRMPREF=''1''B  & TRMTYPE=TRMLUNT & (TRMSIBPT->SIBLUTYP = '
*'''0000000''B  TRMSIBPT->SIBLUTYP=''0000010''B  TRMSIBPT->SIBLUTYP'
*' = ''0000011''B)) THEN') COL(10);
* ANS('/* YES - THEN SET THE DCT3270 BIT IN THE COPY MADE */') COL(9);
* ANS(MREG'->DCT3270 = ''1''B; /* SET 3270 BIT */') SKIP COL(15);
*              END; END;
*%END IEDDCT;                         /*
.DONE    ANOP
         MEND                                */
./ ADD NAME=IEDHJN
         MACRO
&NAME    IEDHJN &LABEL,&HJN
         LCLC  &HJA,&HJB
&HJA     SETC  '&SYSPARM'(1,4)
&HJB     SETC  '&SYSPARM'(5,4)
         AIF   ('&LABEL' EQ '').NOBRNCH
         B     &LABEL .                 BR AROUND CONSTANTS
         SPACE 2
.NOBRNCH ANOP
         AIF   ('&NAME' EQ '').NOLABEL
         DC    C'&NAME' .              MODULE IDENTIFIER
.NOLABEL ANOP
         DC    X'&HJA' .                DATE OF MODIFICATION
         AIF   ('&HJN' NE 'HJN').DATE
         DC    X'&HJB' .                HJN OF MODIFICATION
.DATE    ANOP
         AIF   ('&LABEL' EQ '').NOLBL
         SPACE 2
&LABEL   DS    0H
.NOLBL   ANOP
         MEND
./ ADD NAME=IEDQMSG
         MACRO
&NAME    IEDQMSG   &MSGID=,&FUNCT=,&INBUF=,&LINK=,&INCNT=,&MSG=,&RET=, X
               &RETREG=R14,&PREG1=PARMREG1,&PREG0=PARMREG0,            X
               &OTBUF=,&OTCNT=
         LCLB      &ID,&FN,&OCT,&IBF,&OBF,&MG,&LN,&RT,&ICT
         LCLC      &FLAGS,&FLAGS1,&REPCNT,&RETURN
*
*        TOTE MESSAGE CALL MACRO
*
*        STATUS = VERSION 10.0                                 @Y17XAUU
*
&ID      SETB      (T'&MSGID NE 'O')
&FN      SETB      (T'&FUNCT NE 'O')
&ICT     SETB      (T'&INCNT NE 'O')
&IBF     SETB      (T'&INBUF NE 'O')
&OBF     SETB      (T'&OTBUF NE 'O')
&MG      SETB      (T'&MSG NE 'O')
&RT      SETB      (T'&RET NE 'O')
&LN      SETB      (T'&LINK NE 'O')
&OCT     SETB      (T'&OTCNT NE 'O')
         AIF       (&ID+&MG+&OBF GT 1).MGER010
         AIF       (&OCT+&OBF EQ 1).MGER030
         AIF       (&ID+&MG+&OBF EQ 0).BYP010
         AIF       (&FN NE 1).MGER040
.BYP010  ANOP
         AIF       (&ID+&MG+&OBF+&LN EQ 0).MGER050
         AIF       (&RT EQ 0).BYP020
         AIF       (&ID+&MG+&OBF EQ 0).MGER060
.BYP020  ANOP
         AGO       .CONT010
.MGER010 ANOP
         MNOTE 12,'ONLY ONE PARM FROM MSGID, MSG AND OTBUF ALLOWED'
         MEXIT
.MGER030 ANOP
         MNOTE 12,'OTBUF AND OTCNT MUST ALWAYS APPEAR TOGETHER'
         MEXIT
.MGER040 ANOP
         MNOTE 12,'FUNCT MUST BE SPECIFIED WITH MSGID,MSG OR OTBUF'
         MEXIT
.MGER050 ANOP
         MNOTE 12,'MSGID,MSG,OTBUF OR LINK MUST BE SPECIFIED'
         MEXIT
.MGER060 ANOP
         MNOTE 12,'RET MUST APPEAR WITH MSGID,MSG OR OTBUF'
         MEXIT
.CONT010 ANOP
&RETURN  SETC      '$MRT&SYSNDX'
         AIF   (T'&RET EQ 'O').BYP060
&RETURN  SETC  '&RET'
.BYP060  ANOP
         AIF   (&ID+&OBF+&MG EQ 0).BYP250
         AIF   (N'&FUNCT EQ 0).BYP130
&REPCNT  SETC      '0'
         AIF   (T'&INCNT EQ 'O').BYP120
&REPCNT  SETC      '&INCNT'
.BYP120  ANOP
&FLAGS   SETC      '$&FUNCT(1)'
         AIF   (N'&FUNCT EQ 1).BYP180
         AIF   (N'&FUNCT EQ 2).BYP160
.BYP130  ANOP
         MNOTE 12,'MISSING OR INVALID FUNCT= OPERAND'
         MEXIT
.BYP160  ANOP
&FLAGS1  SETC      '$&FUNCT(2)'
.BYP180  ANOP
&NAME    DS    0H .               TOTE MESSAGE CALL
         LA    &PREG0,&RETURN .        GET RETURN ADDRESS
         BAL   &PREG1,$MSGLINK .        BRANCH TO LINKAGE SUBROUTINE
         AIF   (T'&MSGID EQ 'O').BYP190
         DC    AL2(&MSGID) .         MESSAGE IDENTIFIER
         AGO   .BYP195
.BYP190  ANOP
         DC    XL2'8000' .        INDICATES MESSAGE IS SUPPLIED
* .                                 IN PARAMETER LIST
.BYP195  ANOP
         AIF   (N'&FUNCT EQ 2).BYP200
         DC    AL1(&FLAGS) .         FUNCTION FLAGS
         AGO   .BYP210
.BYP200  ANOP
         DC    AL1(&FLAGS+&FLAGS1) .  FUNCTION FLAGS           @Y17XAUU
.BYP210  ANOP
         DC    AL1(&REPCNT) .            REPLY BUFFER LENGTH
         AIF   (T'&OTBUF EQ 'O').BYP230
         DC    AL1(&OTCNT) .           OUT MESSAGE LENGTH
         DC    AL3(&OTBUF) .       OUT MESSAGE ADDRESS
         AGO   .BYP240
.BYP230  ANOP
         AIF   (T'&MSG EQ 'O').BYP240
         DC    AL1($MG&SYSNDX.E-$MSG&SYSNDX.) . OUT MESSAGE LENGTH
         DC    AL3($MSG&SYSNDX.) .    OUT MESSAGE ADDRESS
$MSG&SYSNDX DC    C&MSG
$MG&SYSNDX.E DS    0C
.BYP240  ANOP
.BYP250  ANOP
         AIF   (T'&LINK EQ 'O').BYP450
$MSGLINK DS    0H .               LINK ROUTINE FOR TOTE MSG CALL
         AIF   ('&LINK' EQ 'XCTL').BYP350
         LINK  EP=IEDQWK .        LINK TO TOTE MESSAGE MODULE
         LR    &RETREG,&PREG0 .          GET RETURN ADDRESS
         BR    &RETREG .              BRANCH TO RETURN POINT
         AGO   .BYP370
.BYP350  ANOP
         XCTL  (2,12),EP=IEDQWM2 .      GO TO TOTE TRACE MODULE  S99528
.BYP370  ANOP
*
$CEC     EQU   X'80' .            CONTROL TERMINAL MESSAGE FLAG
$REP     EQU   X'40' .            C.T. MESSAGE WITH REPLY FLAG
$PRT     EQU   X'20' .            PRINTER MESSAGE FLAG
$SRC     EQU   X'10' .            SOURCE MESSAGE FLAG          @Y17XAUU
.BYP450  ANOP
$MRT&SYSNDX DS    0H .                RETURN ADDRESS
         MEND
./ ADD NAME=IEEBUFSC
          MACRO
&NAME     IEEBUFSC
.*******************************************************************
.*
.*     ROUTINE NAME        IEEBUFSC
.*
.*     FUNCTION            TO SCAN A BUFFER FOR A GIVEN KEYWORD OF
.*                         A GIVEN LENGTH AND TO RETURN A POINTER
.*                         TO THE KEYWORD VALUE AND THE LENGTH OF
.*                         THE VALUE
.*
.*     ENTRY POINT         IEEBUFSC
.*
.*     ATTRIBUTES          REFRESHABLE
.*
.*     OPERATION           1. SET UP PTR TO BUFFER -1 AND PTR
.*                            TO KEYWORD LENGTH
.*                         2. IF BUFFER PTR = SPECIFIED KEYWORD
.*                            GO TO FOUND ROUTINE (3).
.*                            A. IF NOT, INCREMENT BUFFER PTR
.*                               BY ONE.
.*                            B. IF PTR IS AT END OF BUFFER SET
.*                               UP NOT FOUND RETURN CODE (8) IN
.*                               R15 AND EXIT.
.*                            C. IF PTR IS AT A COMMA, GO BACK TO
.*                               OPERATION 2.
.*                            D. IF PTR IS AT A BLANK SET UP NOT
.*                               FOUND RETURN CODE (8) IN R15 AND
.*                               EXIT.
.*                            E. OTHERWISE GO TO OPERATION 2.A.
.*                         3. AT FOUND ROUTINE SET UP R14 TO POINT
.*                            TO KEYWORD VALUE
.*                         4. SCAN KEYWORD VALUE TO THE END OF
.*                            THE BUFFER, A COMMA OR A BLANK
.*                         5. CALCULATE LENGTH OF KEYWORD VALUE.
.*                         6. IF LENGTH IS < OR = ZERO, SET UP
.*                            AN INVALID KEYWORD VALUE LENGTH
.*                            RETURN CODE (4) IN R15 AND EXIT.
.*                         7. OTHERWISE, SET GOOD RETURN CODE
.*                            OF ZERO IN R15 AND EXIT.
.*
.*     EXTERNAL REFS       NONE
.*
.*     SVCS                NONE
.*
.*     INPUT               R1 - PTR TO BEGINNING OF BUFFER
.*                         R0 - PTR TO LAST BYTE OF BUFFER + 1
.*                         R15- PTR TO KEYWORD WITH THE LENGTH
.*                              OF THE KEYWORD IN THE HIGH ORDER
.*                              BYTE.
.*                              EG. KEYWORD FORMAT 'DSNAME='
.*                                  R15 WOULD POINT TO THE 'D'
.*                                  WITH A 6 IN THE HIGH ORDER
.*                                  BYTE.
.*
.*     OUTPUT              R14  PTR TO FIRST BYTE OF KEYWORD
.*                              VALUE IN BUFFER OR WORKAREA
.*                         R1   LENGTH OF KEYWORD VALUE
.*                         R15  RETURN CODE OF ZERO.
.*
.*     ERROR OUTPUT        R15  CONTAINS A FOUR IF KEYWORD
.*                              HAD AN INVALID LENGTH
.*                         R15  CONTAINS AN EIGHT IF THE KEYWORD
.*                              WAS NOT FOUND IN THE BUFFER
.*
.*     EXIT                TO NEXT SEQUENTIAL INSTRUCTION AFTER
.*                         MACRO CALL
.*
.*     NOTES               LISTS OF OPERANDS IN PARENTHESES ARE
.*                         NOT PROCESSED; THIS MACRO IS INTENDED
.*                         TO PROCESS ONLY A SINGLE VALUE  FOR
.*                         A GIVEN KEYWORD
.*******************************************************************
          BCTR  1,0                DEC. ADDRESS TO BEG. OF BUFFER
          SR    14,14              CLEAR LENGTH REGISTER
          SLDL  14,8               KEYWORD LENGTH TO LOW ORDER
          LTR   14,14              IS LENGTH ZERO?
          BZ    NG&SYSNDX          YES, GO SET BAD R.C.
          SRL   15,8               ADDRESS BACK TO LOW ORDER 3 BYTES
AB&SYSNDX EQU   *
          EX    14,CO&SYSNDX       KEYWORD FOUND IN BUFFER?
          BE    FD&SYSNDX          YES, GO TO FOUND ROUTINE
CD&SYSNDX EQU   *
          LA    1,1(1)             INCREMENT BUFFER POINTER
          CR    1,0                IS END OF BUFFER REACHED?
          BE    NF&SYSNDX          YES, KEYWORD NOT PRESENT
          CLI   0(1),MA&SYSNDX     IS IT A COMMA?
          BE    AB&SYSNDX          YES,CHECK FOR KEYWORD AGAIN
          CLI   0(1),LK&SYSNDX     IS IT A BLANK?
          BE    NF&SYSNDX          YES, GO SET BAD R.C.
          B     CD&SYSNDX          NO, RETURN TO SEARCH
FD&SYSNDX EQU   *
          AR    1,14               ADD LENGTH TO KEYWORD PTR.
          LA    14,2(1)            SET PTR TO KEYWORD VALUE
SC&SYSNDX EQU   *
          LA    1,1(1)             INCREMENT PTR TO = SIGN
          CR    1,0                IS END OF BUFFER REACHED?
          BE    LG&SYSNDX          YES,GO CALCULATE VALUE LENGTH
          CLI   0(1),MA&SYSNDX     NO, IS IT A COMMA?
          BE    LG&SYSNDX          YES, CALCULATE VALUE LENGTH
          CLI   0(1),LK&SYSNDX     NO, IS IT A BLANK?
          BE    LG&SYSNDX          YES, CALCULATE VALUE LENGTH
          B     SC&SYSNDX          NO RETURN TO SCAN
LG&SYSNDX EQU   *
          SR    1,14               SUBT. BEG. OF KEYWORD FROM END
          BC    12,NG&SYSNDX       IF < OR = ZERO, NOT FOUND
          SR    15,15              CLEAR RETURN CODE REG.
          B     OT&SYSNDX          LENGTH SET UP IN REG ZERO
NF&SYSNDX EQU   *
          LA    15,8               SET NOT FOUND RETURN CODE
          B     OT&SYSNDX          RETURN TO END
NG&SYSNDX EQU   *
          LA    15,4               SET BAD LENGTH CODE
          B     OT&SYSNDX          RETURN TO END
CO&SYSNDX CLC   1(0,1),0(15)       INPUT KEYWORD = BUFFER WORD?
MA&SYSNDX EQU   C','               COMMA FOR COMPARES
LK&SYSNDX EQU   C' '               BLANK FOR COMPARES
OT&SYSNDX EQU   *
          MEND
./ ADD NAME=IEECVMAP
         MACRO
         IEECVMAP &REQUEST
*     02/14/72          LEVEL=01
.*
.*             MAPS USED FOR CRT AND STATUS DISPLAY SUPPORT
.*
.*                  &REQUEST
.*                  OPERAND        MAP GENERATED
.*
.*                  KPARAM         ROUTED COMMAND PARAMETER LIST
.*                  RCT            ROUTING CONTROL TABLE
.*
         AIF   ('&REQUEST' EQ 'KPARAM').KPARAM
         AIF   ('&REQUEST' EQ 'RCT').RCT
         MNOTE *,'IMPROPER OPERAND, SPECIFY KPARAM OR RCT'
         MEXIT
.KPARAM  ANOP
*              ROUTED COMMAND PARAMETER LIST
         SPACE
KPARAM   DS    0F
KMOD     DS    F         ADDRESS OF MODULE TO HANDLE COMMAND  MB Y02958
KOPN     DS    XL125     OPERAND FIELD OF COMMAND
KFLGS    DS    X         FLAGS
KGM      EQU   X'80'     PARAMETER LIST WAS GETMAINED
KSRVCD   EQU   X'40'     THIS COMMAND HAS BEEN SERVICED
KK       EQU   X'08'     K COMMAND
KPT      EQU   X'04'     PT COMMAND
KAID     DS    C         TARGET AREA ID
KRES1    DS    X         RESERVED
* THE FOLLOWING WORD IS PRESENT ONLY IN GETMAINED PARAMETER LIST
KCHAIN   DS    A         POINTER TO NEXT K LIST FOR THIS CONSOLE
KPLLNGTH EQU   *-KPARAM  LENGTH OF A GETMAINED PARAMETER LIST
         MEXIT
.RCT     ANOP
***********************************************************************
*                                                                     *
*   THE ROUTE COMMAND TABLE IS GOTTEN BY A GETMAIN AND EACH SECTION   *
*   IS MADE UP OF FIVE ENTRIES PLUS A POINTER TO THE THE NEXT SECTION.*
*   EACH ENTRY IS EIGHT BYTES LONG, THE FIRST BYTE IS A FLAG, THE NEXT*
*   TWO BYTES ARE THE OPERAND, THE NEXT TWO   BYTES ARE THE VERB, AND *
*   THE LAST TWO BYTES ARE THE CONSOLE ID IN BINARY PLUS THE AREA ID  *
*   IN EBCDIC. THE LAST BYTE IS UNUSED.                               *
*                                                                     *
***********************************************************************
RCTBEG   EQU   *                   BEGINNING OF RCT SECTION
RCTCODE  DS    1C                  FLAGS INDICATING STATUS OF ENTRY
RCTCON   EQU   X'C0'               FLAG INDICATES END OF SECTION
RCTEND   EQU   X'80'               FLAG INDICATES LAST DEFINED ENTRY
RCTRES   EQU   X'02'               FLAG INDICATES NEXT ENTRY RESERVED
RCTACT   EQU   X'01'               FLAG INDICATES ENTRY IS DEFINED
RCTVER   DS    2C                  VERB FROM THE ROUTE COMMAND
RCTOPD   DS    2C                  OPERAND FROM THE ROUTE COMMAND
RCTCID   DS    1C                  CONSOLE ID FROM THE ROUTE COMMAND
RCTAID   DS    1C                  AREA ID FROM THE ROUTE COMMAND
RCTUNU   DS    1C                  UNUSED BYTE IN TABLE
RCTLEN   EQU   8                   LENGHT OF ONE ENTRY IN THE RCT
RCTENT2  DS    8C                  SECOND ENTRY IN RCT
RCTENT3  DS    8C                  THIRD ENTRY IN RCT
RCTENT4  DS    8C                  FOURTH ENTRY IN RCT
RCTENT5  DS    8C                  FIFTH ENTRY IN RCT
RCTENT6  DS    8C                  CONTINUED OR ZERO IF LAST SECTION
RCTPTRN  EQU   RCTENT6             FIRST FULL WORD POINTER TO NEXT
*                                  SECTION OR ZERO IF THIS IS LAST
RCTTEND  EQU   *                   END OF ONE SECTION OF THE RCT
         MEND
./ ADD NAME=IEEDEFOP
         MACRO
&NAME    IEEDEFOP &KWD,&RTN=1,&FIRST=NO,&LAST=NO,&NOX=NO,&MEMBER=YES,  X
               &REPLY=YES,&SUBOP=,&BLDRTN=1,&SETSMF=YES
         AGO  .LABEL1
***** START OF SPECIFICATIONS *****************************************
*                                                                     *
* MACRO-NAME =IEEDEFOP                                                *
*                                                                     *
* DESCRIPTIVE-NAME = DEFINE OPTIONS                                   *
*                                                                     *
* FUNCTION = EXPAND IEEDEFOP MACROS IN IEEMB837                       *
*                                                                     *
* NOTES = NONE                                                        *
*                                                                     *
* MODULE-TYPE = BAL EXECUTABLE MACRO                                  *
*                                                                     *
* CHANGE ACTIVITY =                                                   *
*                                                                     *
* A000000-999999                                              @G741PJK*
* JBB1226 CHANGE TO ADD BIT ALLOWING SETSMF TO CHANGE         @G383P26*
*                                                                     *
* METHOD-OF-INVOCATION = SEE BELOW                                    *
*                                                                     *
*    LABEL  IEEDEFOP  KEYWORD,OPTIONS                                 *
*                                                                     *
*    WHERE  LABEL       - NAME OF THIS TABLE                          *
*           KEYWORD     - ACCEPTABLE OPTION OR SUBOPTION              *
*           RTN=N       - N IS ELEMENT NO. IN LSTRTN ARRAY IN         *
*                         IEEMB832 AND IEEMB833                       *
*           BLDRTN=M    - M IS ELEMENT NO. IN BLDRTN ARRAY IN         *
*                         IEEMB821                                    *
*           FIRST=YES   - FIRST KEYWORD IN THIS TABLE                 *
*           LAST=YES    - LAST KEYWORD IN THIS TABLE                  *
*           NOX=YES     - NEGATIVE OF KEYWWRD IS ACCEPTABLE           *
*           SUBOP=LABEL - LABEL OF TABLE OF SUPOPTIONS FOR THIS       *
*                         KEYWORD                                     *
*           MEMBER=YES  -                                             *
*           REPLY=YES   -                                             *
*           SETSMF=NO   - NOT ALLOWED TO CHANGE KEYWORD WITH SETSMF   *
*                                                             @G383P26*
***** END OF SPECIFICATIONS *******************************************
.LABEL1  ANOP
         LCLA  &KWDLEN
         LCLB  &MEMBB,&RPLYB,&NOXB,&LASTB,&SETSMFB            @G383P26
&KWDLEN  SETA  K'&KWD
         AIF   ('&FIRST' NE 'YES').NOTFRST
         AIF   ('&NAME'  NE '').GOTNAME
         MNOTE *,'FIRST=YES SPECIFIED....NAME REQUIRED ON IEEDEFOP'
.GOTNAME ANOP
         ENTRY &NAME     MAKE TABLE EXTERNALLY ADDRESSABLE
.NOTFRST ANOP
         AIF   ('&SUBOP' EQ '').NOSUBOP
&NAME    DC    AL4(&SUBOP.)      SUBOPTION TABLE ADDRESS
         AGO   .TSTMEMB
.NOSUBOP ANOP
&NAME    DC    AL4(0)            NO SUBOPTIONS TABLE SPECIFIED
.TSTMEMB ANOP
         AIF   ('&MEMBER' EQ 'YES').MEMBOK
&MEMBB   SETB  0
         AGO   .TSTRPLY
.MEMBOK  ANOP
&MEMBB   SETB  1
.TSTRPLY ANOP
         AIF   ('&REPLY' EQ 'YES').RPLYOK
&RPLYB   SETB  0
         AGO   .TSTNOX
.RPLYOK  ANOP
&RPLYB   SETB  1
.TSTNOX  ANOP
         AIF   ('&NOX' EQ 'YES').NOXOK
&NOXB    SETB  0
         AGO   .TSTSETS                                        @G383P26
.NOXOK   ANOP
&NOXB    SETB  1
.TSTSETS ANOP                                                  @G383P26
         AIF   ('&SETSMF' EQ 'YES').SETSMFO                    @G383P26
&SETSMFB SETB  0                                               @G383P26
         AGO   .TSTLAST                                        @G383P26
.SETSMFO ANOP                                                  @G383P26
&SETSMFB SETB  1                                               @G383P26
.TSTLAST ANOP
         AIF   ('&LAST' EQ 'YES').LASTOK
&LASTB   SETB  0
         AGO   .SETFLGS
.LASTOK  ANOP
&LASTB   SETB  1
.SETFLGS ANOP
         DC    BL1'&MEMBB&RPLYB&NOXB&LASTB.&SETSMFB.000' FLAGS -
*                                  X'80' - VALID FROM MEMBER
*                                  X'40' - VALID ON OPERATOR REPLY
*                                  X'20' - NOXXX VALID
*                                  X'10' - END OF OP TABLE
*                                  X'08' - SETSMF CAN CHANGE   @G383P26
         DC    1X'00'            RESERVED
         DC    AL2(&RTN)         PROCESSING ROUTINE NUMBER
*                                   CORRESPONDS TO SUBROUTINES IN
*                                   IEEMB832 AND IEEMB833
         DC    AL2(&BLDRTN)      BUILD ROUTINE NUMBER
*                                   USED BY INPUT MERGE ROUTINES
.SETLEN  ANOP
         DC    AL2(&KWDLEN)      KEYWORD LENGTH
         DC    CL&KWDLEN.'&KWD'  KEYWORD
         MEND
./ ADD NAME=IEELANGP
         MACRO
         IEELANGP &TEXT
         AGO   .LABEL1
*/*                                                                  */
*/***** START OF SPECIFICATIONS **************************************/
*/*                                                                  */
*/* MODULE-NAME = IEELANGP                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = LANGUAGE PART MACRO                           */
*/*                                                                  */
*/* FUNCTION = INSERTS A POINTER INTO A VECTOR LIST WHICH POINTS     */
*/*            TO A FULL WORD LENGTH AND TEXT.  THE TEXT IS          */
*/*            CONSIDERED A TRANSLATABLE LANGUAGE PART.              */
*/*                                                                  */
*/* NOTES = NONE                                                     */
*/*                                                                  */
*/* MODULE-TYPE = BAL EXECUTABLE MACRO                               */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/*                                                                  */
*/* A000000-999999                                           @G741PJK*/
*/*                                                                  */
*/* METHOD-OF-INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    BAL - LMPARTXX 'LANGUAGE PART;                                */
*/*                                                                  */
*/*          WHERE XX ARE TWO DIGITS(00-99) AND LANGUAGE PART IS     */
*/*          THE ACTUAL TEXT WHICH FORMS THE LAGUAGE PART.           */
*/*                                                                  */
*/***** END OF SPECIFICATIONS ****************************************/
*/*                                                                  */
.LABEL1  ANOP
         LCLC  &A
&A       SETC  'L'''
*/* MACDATE Y-2 73018 */
IEEMB826 CSECT
         DC    A(LGTH&SYSNDX)
IEEMB847 CSECT
LGTH&SYSNDX DC A(&A.TEXT&SYSNDX)  .    LENGTH
TEXT&SYSNDX DC    C&TEXT
         MEND
./ ADD NAME=IEELCA
*/*******************************************************************/
*/*                                                                 */
*/*            LOG CONTROL TABLE  -  ( LCA )                        */
*/*                                                                 */
*/*      OS/VS2  RELEASE 3 , 4/7/76                                 */
*/*      CHANGE LEVEL = Y02669, @ZA05195, @ZA10123                   */
*/*                                                                 */
*/*      METHOD OF ACCESS                                           */
*/*            THE LCA ADDRESS IS IN MASTER SCHEDULER RESIDENT DATA */
*/*            AREA - IEEBASEA , FIELD - BALOG .                    */
*/*      BAL -                                                      */
*/*            L    REGX,BALOG                                      */
*/*            USING  LCABASE,REGX                                  */
*/*      PLS -                                                      */
*/*            DCL  LCAPTR  PTR(31)  REGISTER(X)                    */
*/*            LCAPTR=BALOG                                         */
*/*                                                                 */
*/*******************************************************************/
*        %GOTO LCAPLS;   /*
         MACRO
         IEELCA
LCABASE  DSECT
LCAQHEAD DS    0D
LCAELCNT DS    F                  NUMBER OF ELEMENTS ON WTL QUEUE
LCAELPTR DS    0F
LCAPTSW  DS    B                  FLAG FIELD
LCAPOST  EQU   X'80'              HI-BIT POSTING SWITCH TO PUT RTN
LCAELEAD DS    AL3                QUEUE ELEMENT ADDRESS
LCACPID  DS    F                  POOL ID FROM BLDCPOOL MACRO
LCALIMCT DS    F                  NUMBER OF WTLS PROCESSED
LCAASCB  DS    A                  PTR TO LOG ASCB
LCACBONE DS    A                  CURRENT ACB PTR
LCACBTWO DS    A                  PREVIOUS ACB PTR
LCAELST  DS    0A                 LOG ECB LIST
LCLOZPTR DS    A                  PTR TO TERMINATION ECB
LWLOGPTR DS    A                  PTR TO TASK SWITCH ECB
LWTRPTR  DS    0A                 PTR TO PUT RTN ECB
LWTRBITS DS    B
LECBEND  EQU   X'80'              END OF LIST INDICATOR
         DS    AL3                PUT RTN ECB ADDRESS
LCAPOSTT DS    B
POSTCLOZ EQU   X'80'              TERMINATION IN PROCESS SWITCH
POSTWLOG EQU   X'40'              WRITELOG IN PROCESS SWITCH
LCASTAE  DS    FL1                ESTAE RECURSION SWITCH
LCADDONE DS    CL8                CURRENT LOG DDNAME
LCADDTWO DS    CL8                PREVIOUS LOG DDNAME
LCACLPTR DS    0CL2
         DS    FL1                RESERVED
LCCLASS  DS    FL1                VALUE OF WRITELOG CLASS PARM
LCARPLP  DS    A                  RPL PTR                      @ZA05195
LCASSIBP DS    A                  SSIB PTR                     @ZA05195
LCASSOBP DS    A                  SSOB PTR                     @ZA05195
LCASSOBR DS    A                  SSOBR PTR                    @ZA05195
LCACOREF DS    B                  GOTTEN RESOURCE FLAGS        @ZA05195
LCAFLG   EQU   X'80'              LCA GETMAIN FLAG             @ZA05195
LCAPOOLF EQU   X'40'              BLDCPOOL FLAG                @ZA05195
LCASSIBF EQU   X'20'              SSIB GETMAIN FLAG            @ZA05195
LCAJSCBF EQU   X'10'              GETJSCB MACRO FLAG           @ZA05195
LCASUBSF EQU   X'08'              SUBSYSTEM INTERFACE FLAG     @ZA05195
LCAACBF  EQU   X'04'              ACB GETMAIN FLAG             @ZA05195
WTLLMPTR DS    0CL2
         DS    FL1                RESERVED
WTLPLIM  DS    FL1                QUEUE LIMIT FOR POST OF PUT RTN
LCAX     DS    FL1                RESERVED                     @ZA10123
         MEND  ,    */
*%LCAPLS:  ;
*DECLARE
*  1 LCABASE       BASED(LCAPTR) BDY(DWORD),
*   2 LCAQHEAD,
*    3 LCAELCNT  FIXED(31)BDY(WORD), /* NUMBER OF ELEMENTS ON WTL
*                                     QUEUE                         */
*    3 LCAELPTR,
*     4 LCAPTSW    PTR(8),        /* FLAG FIELD                     */
*      5 LCAPOST   BIT(1),        /* HI-BIT POSTING SWITCH TO PUT
*                                    ROUTINE                        */
*      5 *         BIT(7),        /* RESERVED                       */
*     4 LCAELEAD   PTR(24),       /* QUEUE ELEMENT ADDRESS          */
*   2 LCACPID      FIXED(31),     /* POOL ID FROM BLDCPOOL MACRO    */
*   2 LCALIMCT FIXED(31)BDY(WORD), /* NUMBER OF WTLS PROCESSED      */
*   2 LCAASCB      PTR(31),       /* PTR TO LOG ASCB                */
*   2 LCACBONE     PTR(31),       /* CURRENT ACB PTR                */
*   2 LCACBTWO     PTR(31),       /* PREVIOUS ACB PTR               */
*   2 LCAELST,
*    3 LCLOZPTR    PTR(31),       /* PTR TO TERMINATION ECB         */
*    3 LWLOGPTR    PTR(31),       /* PTR TO TASK SWITCH ECB         */
*    3 LWTRPTR     PTR(31),       /* PTR TO PUT RTN ECB             */
*     4 LWTRBITS   PTR(8),        /* HI-BYTE OF PTR                 */
*      5 LECBEND   BIT(1),        /* END OF LIST INDICATOR          */
*      5 *         BIT(7),        /* RESERVED                       */
*     4 *          PTR(24),       /* PUT ECB ADDRESS                */
*   2 LCAPOSTT,
*    3 POSTCLOZ    BIT(1) ABNL,   /* CLOSE ECB POSTED BIT           */
*    3 POSTWLOG    BIT(1) ABNL,   /* DATA SET SWITCH ECB POSTED BIT */
*    3 *           BIT(6),        /* RESERVED                       */
*   2 LCASTAE       PTR(8),       /* STAE RECURSION FIELD           */
*   2 LCADDONE     CHAR(8),       /* CURRENT LOG DDNAME             */
*   2 LCADDTWO     CHAR(8),       /* PREVIOUS LOG DDNAME            */
*   2 LCACLPTR ,
*    3 *           CHAR(1),       /* RESERVED                       */
*    3 LCCLASS     CHAR(1),       /* VALUE OF WRITELOG CLASS PARM   */
*   2 LCARPLP PTR(31),  /* RPL PTR                           @ZA05195*/
*   2 LCASSIBP PTR(31), /* SSOB PTR                          @ZA05195*/
*   2 LCASSOBP PTR(31), /* SSOB PTR                          @ZA05195*/
*   2 LCASSOBR PTR(31), /* SSOBR PTR                         @ZA05195*/
*   2 LCACOREF BIT(8),                                     /*@ZA05195*/
*    3 LCAFLG BIT(1),   /* LCA GETMAIN FLAG                  @ZA05195*/
*    3 LCAPOOLF BIT(1), /* BLDCPOOL FLAG                     @ZA05195*/
*    3 LCASSIBF BIT(1), /* SSIB GETMAIN FLAG                 @ZA05195*/
*    3 LCAJSCBF BIT(1), /* GETJSCB MACRO ISSUED              @ZA05195*/
*    3 LCASUBSF BIT(1), /* SUBSYSTEM INTERFACE FLAG          @ZA05195*/
*    3 LCAACBF BIT(1),  /* ACB GETMAIN FLAG                  @ZA05195*/
*    3 * BIT(2), /* RESERVED BITS                            @ZA05195*/
*   2 WTLLMPTR ,
*    3 *           CHAR(1),       /* RESERVED                       */
*    3 WTLPLIM     CHAR(1),       /* QUEUE LIMIT FOR POST OF PUT    */
*   2 LCAX         CHAR(1);       /* RESERVED                @ZA10123*/
./ ADD NAME=IEEMBACT
 /*************START OF SPECIFICATIONS********************************/
 /*                                                                  */
 /*  MODULE-NAME = IEEMBACT                                          */
 /*                                                                  */
 /*  DESCRIPTIVE-NAME = APPLICATION CONTROL TABLE                    */
 /*                                                                  */
 /*  FUNCTION = MAPPING FOR APPLICATION CONTROL TABLE.  THE ACT      */
 /*             CONTAINS VARIABLES APPLICABLE ONLY TO THE SMF        */
 /*             INPUT PARSE PROCESS (AS OPPOSED TO THE DATA          */
 /*             COLLECTION AND WRITING PROCESS).                     */
 /*                                                                  */
 /*  NOTES =                                                         */
 /*                                                                  */
 /*  MODULE-TYPE = PLS MAPPING MACRO                                 */
 /*                                                                  */
 /*  CHANGE-ACTIVITY = SEE BELOW                                     */
 /*                                                                  */
 /*  A000000-999999                                          @G741PLS*/
 /*  JBB1226 CHANGES FOR SETSMF                              @G383P26*/
 /******END OF SPECIFICATIONS*****************************************/
 DCL 1 IEEMBACT BDY(WORD) BASED,
       2 ACTID CHAR(4),           /* IDENTIFIER ACT                  */
       2 ACTSRCP PTR(31),         /* ADDRESS OF INPUT TO PARSE       */
       2 ACTMSDCB PTR(31),        /* ADDRESS OF MESAGE DATASET DCB   */
       2 ACTPLDCB PTR(31),        /* PARMLIB IEFPARM DCB             */
       2 ACTOCB PTR(31),          /* ADDRESS OF 1ST OCB ON CHAIN     */
       2 ACTDSNAM PTR(31),        /* ADDR OF DSNAME SUBOP OCB'S      */
       2 ACTOCBPL PTR(31),        /* OCB BUFFER POOL ADDRESS         */
       2 ACTCONID CHAR(1),        /* CONSOLE ID (FOR SET PROCESSING)
                                                             @ZM49499*/
       2 ACTCAREA CHAR(1),        /* CONSOLE AREA ID       @ZM49499*/
       2 ACTALTCN CHAR(1),        /* ALTERNATE CONSOLE ID    @G743PJK*/
       2 ACTALTAR CHAR(1),        /* ALTERNATE CONSOLE AREA  @G743PJK*/
       2 ACTOPTAB PTR(31),        /* ADDRESS OF OPTION TABLE FOR THIS
                                     ENVIRONMENT (SEE ACTENVC)       */
       2 ACTFLGS BIT(16),         /* PARSE CONTROL FLAGS             */
         3 ACTDMP BIT(1),         /* DUMP PROCESSING                 */
         3 ACTSMF BIT(1),         /* SMF PROCESSING                  */
         3 ACTSRCF BIT(4),        /* FLAGS INDICATE INPUT SOURCE     */
           5 ACTMEMBF BIT(1),     /* INPUT IS FROM MEMBER            */
           5 ACTREPLF BIT(1),     /* INPUT IS FROM REPLY BUFFER.
                                     OPTION IN REPLY FIELD WILL
                                     REPLACE ALREADY EXISTING OPTION */
           5 ACTDFTSF BIT(1),     /* DEFAULTS BEING PARSED           */
           5 ACTSYSNF BIT(1),     /* INPUT CAME FROM SYSIN DATASET   */
         3 ACTMSGF BIT(1),        /* USED BY PARSE
                                     0 - SUPPRESS ERROR MESSAGES
                                     1 - WRITE ERROR MESSAGES        */
         3 ACTNOXF BIT(1),        /* NOXXX SPECIFIED FOR THIS OPTION */
         3 ACTERRF  BIT(1),       /* ERROR FLAG FORCES LIST OPTIONS  */
         3 ACTRANGF BIT(1),       /* SET IF COLON FOUND
                                     IN TEXT STRING                  */
         3 ACTOPPRF BIT(1),       /* OPTION PROCESSING FLAG
                                       0 = OPTION NOT BEING PARSED
                                       1 = OPTION BEING PARSED       */
         3 ACTPRMTF BIT(2),       /* PROMPT CONTROL FLAGS            */
           5 ACTPRMTL BIT(1),     /* PROMPT(LIST) SPECIFIED          */
           5 ACTPRMTI BIT(1),     /* PROMPT(IPLR) SPECIFIED          */
         3 ACTSUBSY BIT(1),       /* SETSMF CHANGED SUBSYS   @G383P26*/
         3 ACTSUBPM BIT(1),       /* SETSMF CHANGED SUBPARM  @G383P26*/
       2 ACTMEMID CHAR(2),        /* ID OF MEMBER NOW BEING PARSED   */
       2 ACTCHARP PTR(31),        /* CURRENT BUFFER ADDRESS          */
       2 ACTENDP PTR(31),         /* END OF BUFFER ADDRESS           */
       2 ACTOPTNE PTR(31),        /* ADDRESS OF OPTION TABLE ENTRY
                                     FOR OPTION FOUND                */
       2 ACTBUFP PTR(31),         /* POINTER TO START OF STRING      */
       2 ACTBUFL FIXED(15),       /* LENGTH OF BUFFER                */
       2 ACTBUFL1 FIXED(15),      /* WHEN RANGE SPECIFIED,1ST LENGTH */
       2 ACTBSU FIXED(8),         /* PARSE TOKEN RETURNED BY
                                     IEEMB831 (SEE BSU TYPES BELOW)  */
       2 ACTSTATE FIXED(8),       /* CURRENT PARSE STATE             */
       2 ACTNXTST FIXED(8),       /* NEXT PARSE STATE                */
       2 ACTSETFG BIT(8),         /* FLAGS FOR SETSMF        @G383P26*/
         3 ACTDSNCH BIT(1),       /* DSNAME CHANGED IF ON    @G383P26*/
         3 ACTBUFCH BIT(1),       /* BUFNUM CHANGED IF OF    @G383P26*/
       2 ACTSVOCB PTR(31),        /* SAVE SYS OCB            @G743PJK*/
       2 ACTACTIV PTR(31),        /* SAVE ACTIVE OCB         @GKELLEY*/
       2 ACTPREVD PTR(31);        /* SAVE PREVIOUS DSN OCB   @GKELLEY*/
 @SPACE;
 DCL 1 INSOURCE BASED(ACTSRCP),   /* INPUT TEXT TO PARSE             */
       3 INSRCSPL FIXED(31),      /* SUBPOOL ID AND LENGTH           */
         5 INSUBPL FIXED(8),      /* SUBPOOL ID                      */
         5 INSRCLEN FIXED(24),    /* LENGTH OF INSOURCE              */
       3 INTXTLEN FIXED(15),      /* TRUE TEXT LENGTH                */
       3 INSRCTXT CHAR(*);        /* INPUT TEXT                      */
 @SPACE;
 DCL BSUNULL  FIXED(8) CONSTANT(00),     /* END OF TEXT,NOTHING FOUND*/
     BSUOP    FIXED(8) CONSTANT(01),     /* OPTAB OPTION             */
     BSUBMOP  FIXED(8) CONSTANT(02),     /* BMENU OPTION             */
     BSUNUMB  FIXED(8) CONSTANT(03),     /* NUMERIC STRING           */
     BSUALPHA FIXED(8) CONSTANT(04),     /* ALPHABETIC STRING        */
     BSUALPH# FIXED(8) CONSTANT(05),     /* ALPHANUMERIC - 1ST LETTER*/
     BSU#ALPH FIXED(8) CONSTANT(06),     /* ALPHANUMERIC - 1ST NUMBER*/
     BSULP    FIXED(8) CONSTANT(07),     /* LEFT PARENTHESIS         */
     BSURP    FIXED(8) CONSTANT(08),     /* RIGHT PARENTHESIS        */
     BSUVALH  FIXED(8) CONSTANT(09),     /* VALUE IN HOURS           */
     BSUVALM  FIXED(8) CONSTANT(10),     /* VALUE IN MINUTES         */
     BSUVALS  FIXED(8) CONSTANT(11),     /* VALUE IN SECONDS         */
     BSUDELIM FIXED(8) CONSTANT(12),     /* DELIMITER FOUND          */
     BSUERROR FIXED(8) CONSTANT(13);     /* ERROR                    */
./ ADD NAME=IEEMBBQE
 /***** START OF SPECIFICATIONS **************************************/
 /*                                                                  */
 /*  MACRO-NAME = IEEMBBQE                                           */
 /*                                                                  */
 /*  DESCRIPTIVE-NAME = SMF BUFFER QUEUE ELEMENT                     */
 /*                                                                  */
 /*  FUNCTION = PLS MAPPING MACRO FOR BQE.  A BQE CONTAINS AN SMF    */
 /*             BUFFER, CHAIN POINTERS TO OTHER BQES, AND FLAGS      */
 /*             AND OTHER FIELDS DESCRIBING THE STATUS AND           */
 /*             CONTENT OF THE BUFFER.                               */
 /*                                                                  */
 /*  MODULE-TYPE = PLS MACRO                                         */
 /*                                                                  */
 /*  CHANGE-ACTIVITY = SEE BELOW                                     */
 /*                                                                  */
 /*  A000000-999999                                          @G741PBB*/
 /*                                                                  */
 /***** END OF SPECIFICATIONS ****************************************/
 DCL 1 IEEMBBQE BDY(WORD) BASED,
       2 BQEID CHAR(4),          /* CONTROL BLOCK ID                 */
       2 BQENEXT PTR(31),        /* FORWARD CHAIN POINTER            */
       2 BQEPREV PTR(31),        /* BACKWARD CHAIN POINTER           */
       2 BQEFLAG BIT(32),        /* DESCRIPTION TELLS MEANING        */
         3 * BIT(8),             /* WHEN BIT IS 1                    */
           4 BQEMPTY BIT(1),     /* BUFFER IS EMPTY                  */
           4 BQEREADY BIT(1),    /* BUFFER IS READY TO BE FILLED     */
           4 BQEDATA BIT(1),     /* BUFFER CONTAINS AT LEAST 1 RCD   */
           4 BQEWRITE BIT(1),    /* BUFFER IS READY TO WRITE         */
           4 *        BIT(4),    /*                                  */
         3 * BIT(8),             /*                                  */
           4 BQELAST BIT(1),     /* LAST RECORD IN DATASET           */
           4 BQEFIRST BIT(1),    /* FIRST RECORD IN DATASET          */
           4 BQESEGRD BIT(1),    /* BUFFER CONTAINS SEGMENTED RCD    */
           4 BQEXTRA  BIT(1),    /* AN EXTRA BUFFER                  */
         3 * BIT(8),             /*                                  */
         3 * BIT(8),             /*                                  */
       2 BQENUM FIXED(31),       /* BLOCK NUMBER OF THIS BUFFER      */
       2 BQECIDFP PTR(31),       /* ADDR OF CIDF IN BUFFER           */
       2 *        CHAR(0),       /* CONTAINS SMF RECORDS             */
         3 BQERECRD CHAR(*),     /* CONTAINS SMF RECORDS             */
     1 BQERDF CHAR(3) BASED,     /* VSAM RECORD DEFINITION FIELD     */
         3 BQERDFCF BIT(8),      /* CONTROL FIELD                    */
         3 BQERDFL FIXED(15) BDY(BYTE),  /* RECORD LENGTH            */
     1 BQECIDF CHAR(4) BASED(BQECIDFP), /* CONTROL INTERVAL DEFN
                                           FIELD                     */
         3 BQEOFREE FIXED(15) BDY(BYTE),   /* OFFSET TO FREE SPACE */
         3 BQELFREE FIXED(15) BDY(BYTE);   /* LENGTH OF FREE SPACE */
 @EJECT;
./ ADD NAME=IEEMBOCB
 /******START OF SPECIFICATIONS***************************************/
 /*                                                                  */
 /*  MODULE-NAME = IEEMBOCB                                          */
 /*                                                                  */
 /*  DESCRIPTIVE-NAME = OPTION CONTROL BLOCK                         */
 /*                                                                  */
 /*  FUNCTION = THIS MACRO MAPS THE DIFFERENT TYPES OF             */
 /*             OPTION CONTROL BLOCKS WHICH ARE THE INTERNAL         */
 /*             REPRESENTATION OF THE OPTIONS SPECIFIED.             */
 /*             IT ALSO MAPS THE OCB BUFFER POOL                     */
 /*                                                                  */
 /*  NOTES = SEE BELOW                                               */
 /*                                                                  */
 /*  MODULE-TYPE = PLS MAPPING MACRO                                 */
 /*                                                                  */
 /*  CHANGE-ACTIVITY = NONE                                          */
 /*                                                                  */
 /*     A000000-999999                                       @G741PLS*/
 /*  JBB1226 CHANGES - ADD OCBCHNG FLAG                      @G383P26*/
 /******END OF SPECIFICATIONS*****************************************/
 DCL 1 IEEMBOCB BASED BDY(WORD),   /* COMMON TO ALL OPTIONS      */
           2 OCBNEXT PTR(31),     /* NEXT OCB ON CHAIN          */
           2 OCBOPTNE PTR(31),    /* ADDRESS OF OPTAB ENTRY     */
           2 OCBADDR PTR(31),     /* ADDRESS OF SUBOPTION OCB'S */
           2 OCBFLAGS BIT(32),    /* CHARACTERISTICS           */
               4 OCBNOXF BIT(1),  /* NOXXX OPTION SPECIFIED    */
               4 OCBSRCF BIT(16), /* FLAGS INDICATE INPUT SOURCE */
                 5 OCBMEMBF BIT(1), /* ACCEPTED FROM MEMBER  */
                 5 OCBREPLF BIT(1), /* ACCEPTED FROM REPLY   */
                 5 OCBDFTSF BIT(1), /* DEFAULT USED          */
                 5 OCBCONF BIT(1),  /* CHANGED DUE TO
                                       CONFLICTING OPTIONS       */
                 5 OCBSYSNF BIT(1), /* ACCEPTED FROM SYSIN
                                     (DUMP PROCESSOR ONLY)     */
               4 OCBCHNG BIT(1);    /* OPTION MODIFIED     @G383P26*/

 DCL 1 OCBSYSID BASED(ADDR(IEEMBOCB))BDY(WORD),/* SYSID OPTION       */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD), /* COMMON SECTION */
       8 OCBSYSTM CHAR(4),          /* SYSTEM ID */
       8 OCBCPUID(2) CHAR(6);      /* CPU SERIAL NUMBERS */

 DCL 1 OCBDATE BASED(ADDR(IEEMBOCB))BDY(WORD),/* DATE OPTION         */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION         */
       8 OCBPSDAT CHAR(4),            /* START DATE (PACKED)         */
       8 OCBPEDAT CHAR(4),            /* END DATE (PACKED)           */
       8 OCBCHDAT CHAR(11),           /* CHARACTER VALUES            */
         9 OCBSDATE CHAR(5),          /* START DATE (CHARS)          */
         9 OCBDDLM CHAR(1),           /* COMMA IN HERE               */
         9 OCBEDATE CHAR(5);          /* END DATE (CHARS)            */

 DCL 1 OCBTOD BASED(ADDR(IEEMBOCB))BDY(WORD), /* TOD OPTION          */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION         */
       8 OCBPTOD CHAR(4),            /* START TOD  (PACKED)         */
       8 OCBCTOD CHAR(6);            /* CHARACTER VALUE             */
 DCL 1 OCBGROUP BASED(ADDR(IEEMBOCB))BDY(WORD),/* GROUP OCB */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION */
       8 OCBGRPNM CHAR(8);            /* GROUP NAME */
 DCL 1 OCBEXITS BASED(ADDR(IEEMBOCB))BDY(WORD),/* EXITS OCB */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION */
       8 OCBEXITN CHAR(8);            /* EXIT NAME */
 DCL 1 OCBXXDD BASED(ADDR(IEEMBOCB))BDY(WORD),/* DDNAME OCB */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION */
       8 OCBDDNAM CHAR(8);            /* DDNAME    */
 DCL 1 OCBSSID BASED(ADDR(IEEMBOCB))BDY(WORD),/* SSID OCB */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION */
       8 OCBSSNM CHAR(4);            /* SSID    */
 DCL 1 OCB2DEC  BASED(ADDR(IEEMBOCB))BDY(WORD),/* 2 DIGIT DECIMAL */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION */
       8 OCBBINVL FIXED(31),          /* BINARY VALUE */
       8 OCBCHVAL CHAR(2);           /* PRINTABLE VALUE */
 DCL 1 OCBBUFNO BASED(ADDR(IEEMBOCB))BDY(WORD),/* BUFNUM OCB */
       8 * CHAR(LENGTH(IEEMBOCB))BDY(WORD),/* COMMON SECTION */
       8 OCBBVAL1 FIXED(31),         /* BINARY FIRST VALUE */
       8 OCBBVAL2 FIXED(31),         /* BINARY SECOND VALUE */
       8 OCBCHVL1 CHAR(2),           /* FIRST VALUE AS ENTERED */
       8 OCBCHVL2 CHAR(2);           /* SECOND VALUE AS ENTERED */
 DCL 1 OCBTYPE BASED(ADDR(IEEMBOCB))BDY(WORD),/*  TYPE OCB       */
       8 * CHAR(LENGTH(IEEMBOCB)),
       8 OCBRECFL BIT(256),           /* RECORD FLAG BITS          */
       8 OCBLEN FIXED(31),            /* LENGTH OF CAHRACTER DATA    */
       8 OCBLDATA CHAR(*);            /* LIST OF DATA ITEMS          */
 DCL OCBRCDID(*) CHAR(4) DEFINED(OCBLDATA);/* RECORD ID'S            */

 DCL 1 OCBPOOLH BDY(WORD) BASED(ACTOCBPL), /* OCB BUFFER POOL+HEADER */
       2 OCBPLHDR,                      /* POOL HEADER               */
         3 OCBPLID CHAR(8),             /* POOL ID                   */
         3 OCBPLSPL FIXED(31),          /* SUBPOOL ID AND LENGTH     */
           5 OCBPLSPI FIXED(8),         /* SUBPOOL ID                */
           5 OCBPLSIZ FIXED(24),        /* OCB POOL LENGTH           */
         3 OCBPLAVL PTR(31),            /* NEXT AVAILABLE OCB ADDR   */
         3 OCBPLSPU FIXED(15),          /* SPACE USED IN BYTES       */
       2 OCBPOOL CHAR(*);               /* OCB BUFFER POOL BEGINS    */

./ ADD NAME=IEEMBRDS
 /***** START OF SPECIFICATIONS **************************************/
 /*                                                                  */
 /*  MACRO-NAME = IEEMBRDS                                           */
 /*                                                                  */
 /*  DESCRIPTIVE-NAME = SMF RECORDING DATA SET CONTROL BLOCK         */
 /*                                                                  */
 /*  FUNCTION = PLS MAPPING MACRO FOR RDS.  AN RDS CONTAINS THE      */
 /*             DATA NECESSARY TO CONTROL AN SMF RECORDING           */
 /*             DATASET.  IT INCLUDES TH VSAM ACB AND RPL AND        */
 /*             OTHER FLAGS AND FIELDS DESCRIBING THE STATUS         */
 /*             OF THE DATASET.                                      */
 /*                                                                  */
 /*  MODULE-TYPE = PLS MACRO                                         */
 /*                                                                  */
 /*  CHANGE-ACTIVITY = SEE BELOW                                     */
 /*                                                                  */
 /*  A000000-999999                                          @G741PBB*/
 /*                                                                  */
 /***** END OF SPECIFICATIONS ****************************************/
 DCL 1 IEEMBRDS BDY(WORD) BASED,
       2 RDSID CHAR(4),            /* CONTROL BLOCK ID             */
       2 RDSNEXT PTR(31),          /* FORWARD CHAIN POINTER          */
       2 RDSPREV PTR(31),          /* BACKWARD CHAIN POINTER         */
       2 RDSFLAG BIT(32),          /* DATASET STATUS INDICATORS      */
         3 * BIT(8),               /*                                */
           4 * BIT(1),
           4 * BIT(1),
           4 * BIT(1),
           4 RDSFREE BIT(1),     /* 1- NEED TO FREE DATASET AND RDS */
           4 RDSDUMP BIT(1),     /* 1-OPER HAS BEEN TOLD TO DUMP DS */
           4 RDSREADY BIT(1),    /* 1-DS IS OPEN AND READY TO USE    */
           4 RDSCLOSE BIT(1),    /* 1-DS NEEDS TO BE CLOSED          */
           4 RDSNDOP  BIT(1),    /* 1-DS NEEDS TO BE OPENED          */
         3 * BIT(8),             /*                                  */
           4 RDSLOST BIT(1),     /* DUMMY RDS FOR LOST DATA          */
           4 RDSPHYER BIT(1),    /* 1 - PHYSICAL I/O ERROR           */
           4 RDSLOGER BIT(1),    /* 1 - LOGICAL I/O ERROR            */
         3 * BIT(8),             /*                                  */
         3 * BIT(8),             /*                                  */
       2 RDSNAME CHAR(10),       /* DATASET NAME                     */
       2 RDSVOLID CHAR(6),       /* VOLUME SERIAL                    */
       2 RDSDDN   CHAR(8),       /* DDNAME RETURNED BY DYNAMIC ALLOC */
       2 RDSCAPTY FIXED(31),     /* DATASET CAPACITY IN # OF BLOCKS  */
       2 RDSNXTBL FIXED(31),     /* NUMBER OF NEXT AVAILABLE BLOCK   */
       2 RDSBQE   FIXED(31),     /* ADDRESS OF BQE BEING WRITTEN     */
       2 RDSAVSPC FIXED(31),     /* AVAILABLE SPACE FROM SHOWCB      */
       2 RDSENRBA FIXED(31),     /* ENDRBA FROM SHOWCB               */
       2 RDSCINV FIXED(31),      /* CONTROL INTERVAL SIZE            */
       2 RDSDOMID FIXED(31),     /* MSG # OF DUMP MSG                */
       2 RDSRPL CHAR(76),        /* VSAM RPL                         */
       2 RDSACB CHAR(76);        /* VSAM ACB                         */
 DCL RDSFBQE PTR(31)             /* ADDR OF FIRST BQE                */
      DEFINED(RDSRPL);           /* TO BE PROCESSED AFTER LOST DATA
                                    RECOVERY (ONLY IN LOST DATA RDS) */
 @EJECT;
./ ADD NAME=IEEMBSSB
 /**** START OF SPECIFICATIONS ***************************************/
 /*                                                                  */
 /* MACRO-NAME = IEEMBSSB                                            */
 /*                                                                  */
 /* DESCRIPTIVE-NAME = SMF STOP BLOCK                                */
 /*                                                                  */
 /* FUNCTION = PLS MAPPING MACRO FOR THE SMF STOP BLOCK.     THIS    */
 /*            BLOCK CONTAINS ALL THE DATA NECESSARY TO STOP A       */
 /*            CALLER OF IEEMB830 (SVC 83) WHEN THE SMF BUFFERS ARE  */
 /*            ALL FULL.  IT IS GETMAINED BY IEEMB830 AND PASSED TO  */
 /*            IEASMFSP WHO HANGS IT FROM SMCASSB.  WHEN BUFFERS ARE */
 /*            AVAILABLE, IEEMB834 REMOVES THE SSB PTR FROM SMCASSB  */
 /*            AND PASSES IT TO IEASMFSP, WHO RESETS THE CALLER.     */
 /*                                                                  */
 /* MODULE-TYPE = PLS MACRO                                          */
 /*                                                                  */
 /* CHANGE-ACTIVITY = SEE BELOW                                      */
 /*                                                                  */
 /* A000000-999999                                                   */
 /*                                                          @G742PBB*/
 /* JBB1226 SUPPORT - INCREASE SAVE AREAS TO 72 BYTES        @G384P27*/
 /**** END OF SPECIFICATIONS *****************************************/
 DCL
  1 IEEMBSSB BASED(SSBPTR) BDY(WORD),
    2 SSBID CHAR(4),               /* CONTROL BLOCK ID               */
    2 SSBREGS CHAR(72),            /* RESUME REGISTERS       @G384P27*/
    2 SSBPSW CHAR(8) BDY(WORD),    /* RESUME PSW             @G384P27*/
      3 SSBLPSW CHAR(4),
      3 SSBRPSW PTR(31),
    2 SSBSAVE CHAR(72),  /* SAVE AREA FOR IEAVSUSP/IEAVRSTD @G384P27*/
    2 SSBRREG,           /* REG 4-7 TO BE GIVEN TO IEAVRSTD @G384P27*/
      3 SSBREG4 PTR(31),
      3 SSBREG5 PTR(31),
      3 SSBREG6 PTR(31),
      3 SSBREG7 PTR(31),
    2 SSBASCB PTR(31),            /* ASCB OF STOPEE                  */
    2 * CHAR(4),
      3 SSBENABL BIT(8),          /* TARGET OF STNSM                 */
      3 SSBDSABL BIT(8),          /* TARGET OF STOSM                 */
      3 SSBFLAGS BIT(16),         /* FLAGS USED BY IEASMFSP          */
        4 SSBALLOC BIT(1),        /* SALLOC LOCK HELD                */
        4 * BIT(15),
    2 SSBFRRPA PTR(31),           /* ADDR OF 6 WORD AREA RETURNED
                                     BY SETFRR  */
    2 SSBCSA PTR(31);             /* ADDR OF CALLERS SAVEAREA */
./ ADD NAME=IEEMBSST
 /***** START OF SPECIFICATIONS **************************************/
 /*                                                                  */
 /* MACRO-NAME = IEEMBSST                                            */
 /*                                                                  */
 /* DESCRIPTIVE-NAME = SMF SUBSYSTEM TABLE                           */
 /*                                                                  */
 /* STATUS = OS/VS2 JBB1226                                  @G383P26*/
 /*                                                                  */
 /* FUNCTION = PLS MAPPING MACRO FOR THE SMF SUBSYSTEM TABLE AND THE */
 /*            EXIT TABLE.  THE ARRAY OF SSTS IS POINTED TO BY       */
 /*            SMCASSTP AND RESIDES IN SQA.                          */
 /*                                                                  */
 /* A000000-999999                                           @G741PJK*/
 /* ADD SSOB EXTENSION DATA FOR JBB1226                      @G383P26*/
 /*                                                                  */
 /***** END OF SPECIFICATIONS ****************************************/
 DCL
   1 SST(*) BASED(SMCASSTP),        /* SMF SELECTIVITY TABLE         */
     3 SSTNAME CHAR(4),             /* WORK CLASS ID ASSOCIATED WITH
                                       THIS SST                      */
     3 SSTFLAGS CHAR(1),            /* SUBSYS FLAGS                  */
       5 SSTDETAL BIT(1),           /* DETAILED ACCT?                */
       5 SSTACTIV BIT(1),           /* SUBSYS ACTIVE?        @G742PJK*/
       5 SSTRESET BIT(1),           /* SET MATCH SWITCH      @G743PJK*/
     3 * CHAR(3),                   /* RESERVED              @G742PJK*/
     3 SSTINTVL CHAR(8),            /* INTERVAL LENGTH IN 64-BIT FORM
                                                             @G742PJK*/
     3 SSTRCDON BIT(256),           /* A BIT FOR EACH RECORD TYPE
                                       1=RECORD SELECTED             */
     3 SSTEXTAB PTR(31),            /* EXIT TABLE ADDR               */
     3 SSTSSOB CHAR(4);             /* SSOB EXTENSION        @G383P26*/
 DCL
   1 EXITTAB BASED BDY(DWORD),      /* EXIT NAMES TABLE      @G741PJK*/
     2 EXITSPL FIXED(31),           /* SUBPOOL ID, LENGTH    @G741PJK*/
     2 EXITNMBR FIXED(31),          /* CURRENT # EXITS       @G741PJK*/
     2 EXITNTRY(15),                /* 15 EXIT ENTRIES       @G743PBB*/
       3 EXITNAME CHAR(8),          /* EXIT NAME ENTRY       @G741PJK*/
       3 EXITADDR PTR(31),          /* ADDR WHERE LOADED     @G741PJK*/
         5 EXITINAC BIT(1);         /* EXIT ACTIVE IF ON     @G743PJK*/
./ ADD NAME=IEEMBWKA
 /***** START OF SPECIFICATIONS **************************************/
 /*                                                                  */
 /*  MACRO-NAME = IEEMBWKA                                           */
 /*                                                                  */
 /*  DESCRIPTIVE-NAME = WORKAREA FOR IEEMB834 - SMF SRB              */
 /*                                                                  */
 /*  FUNCTION = PLS MAPPING MACRO FOR IEEMB834 WORKAREA. SINCE       */
 /*             IEEMB834 CANNOT OBTAIN ITS OWN AUTOMATIC STORAGE,    */
 /*             IEEMB822 OBTAINS STORAGE FOR IT AT THE SAME TIME     */
 /*             IT DOES THE GETMAIN FOR THE SRB.  THE SRB AND        */
 /*             WORKAREA WHICH FOLLOWS IT ARE POINTED TO BY          */
 /*             SMCASRB.                                             */
 /*                                                                  */
 /*  MODULE-TYPE = PLS MACRO                                         */
 /*                                                                  */
 /*  CHANGE-ACTIVITY = SEE BELOW                                     */
 /*                                                                  */
 /*  A000000-999999                                          @G741PBB*/
 /*                                                                  */
 /***** END OF SPECIFICATIONS ****************************************/
 DCL
   1 IEEMBWKA BASED(SMCASRB),
     2 WKASRB CHAR(LENGTH(SRB)),   /* SMF SRB                        */
     2 WKAREG14 PTR(31),           /* SAVE AREA FOR RETURN ADDR      */
     2 WKAREGS CHAR(72),           /* SAVE AREA FOR CALLING MODCB
                                      AND PUT                        */
     2 WKAMODCB CHAR(36);          /* MODCB PARMLIST                 */
./ ADD NAME=IEEMFLMM
*/*                                                                  */
*/**** START OF SPECIFICATIONS ***************************************/
*/*                                                                  */
*/* MODULE-NAME = IEEMFLMM                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = LANGUAGE PART INDEX CONSTANTS FOR LANGUAGE    */
*/*                    PARTS MODULE IEEMB826                         */
*/*                                                                  */
*/*                                                                  */
*/* FUNCTION = PROVIDES SYMBOLIC NAMES FOR REFERENCES TO LANGUAGE    */
*/*            PARTS                                                 */
*/*                                                                  */
*/* NOTES = NONE                                                     */
*/*                                                                  */
*/* MODULE-TYPE = PLS MACRO                                          */
*/*                                                                  */
*/* METHOD-OF-INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    PLS - %INCLUDE DDNAME(IEEMFLMM)                               */
*/*                                                                  */
*/* CHANGE-ACTIVITY = SEE BELOW                                      */
*/*                                                                  */
*/* A000000-999999                                           @G743PJK*/
*/* JBB1226 - ADD MESSAGE PARTS FOR SSI CAL MESSAGES         @G383P26*/
*/*                                                                  */
*/**** END OF SPECIFICATIONS *****************************************/
*/*                                                                  */
  DCL
  LMPART1 FIXED(31)                /*'SYS1.MAN'                      */
     CONSTANT( 1),
  LMPART2 FIXED(31)                /*' RECORDING NOT BEING USED'     */
     CONSTANT( 2),
  LMPART3 FIXED(31)                /*'SMF '                          */
     CONSTANT( 3),
  LMPART4 FIXED(31)                /*'MEMBER '                       */
     CONSTANT( 4),
  LMPART5 FIXED(31)                /*'NOT FOUND IN'                  */
     CONSTANT( 5),
  LMPART6 FIXED(31)                /*'REPLY WITH SMF VALUES'         */
     CONSTANT( 6),
  LMPART7 FIXED(31)                /*' OR U'                         */
     CONSTANT( 7),
  LMPART8 FIXED(31)                /*' CANNOT BE DETERMINED'         */
     CONSTANT( 8),
  LMPART9 FIXED(31)                /*'SMFPRM'                        */
     CONSTANT( 9),
  LMPART10 FIXED(31)               /*' TIME='                        */
     CONSTANT(10),
  LMPART11 FIXED(31)               /*'PARAMETERS'                    */
     CONSTANT(11),
  LMPART12 FIXED(31)               /*'OPEN FAILED FOR '              */
     CONSTANT(12),
  LMPART13 FIXED(31)               /*'FAILED,'                       */
     CONSTANT(13),
  LMPART14 FIXED(31)               /*'        '                      */
     CONSTANT(14),
  LMPART15 FIXED(31)               /*'ABEND'                         */
     CONSTANT(15),
  LMPART16 FIXED(31)               /*' TERMINATED'                   */
     CONSTANT(16),                 /*                                */
  LMPART17 FIXED(31)               /*', DUMPED,'                     */
     CONSTANT(17),
  LMPART18 FIXED(31)               /*'NOW RECORDING ON '             */
     CONSTANT(18),
  LMPART19 FIXED(31)               /*' ON '                          */
     CONSTANT(19),
  LMPART20 FIXED(31)               /*'DATA LOST - '                  */
     CONSTANT(20),
  LMPART21 FIXED(31)               /*'NO DATA SETS AVAILABLE'        */
     CONSTANT(21),
  LMPART22 FIXED(31)               /*'ENTER DUMP FOR '               */
     CONSTANT(22),
  LMPART23 FIXED(31)               /*'I/O ERROR'                     */
     CONSTANT(23),
  LMPART24 FIXED(31)               /*'('                             */
     CONSTANT(24),
  LMPART25 FIXED(31)               /*')'                             */
     CONSTANT(25),
  LMPART26 FIXED(31)               /*'FIND ERROR CODE '              */
     CONSTANT(26),
  LMPART27 FIXED(31)               /*'SYNTAX ERROR IN OR FOLLOWING   */
     CONSTANT(27),                 /* TEXT BEGINNING '''             */
  LMPART28 FIXED(31)               /*''' IN '                        */
     CONSTANT(28),
  LMPART29 FIXED(31)               /*' INPUT'                        */
     CONSTANT(29),
  LMPART30 FIXED(31)               /*'UNRECOGNIZABLE '               */
     CONSTANT(30),
  LMPART31 FIXED(31)               /*'OPTION '''                     */
     CONSTANT(31),
  LMPART32 FIXED(31)               /*'SUBOPTION '''                  */
     CONSTANT(32),
  LMPART33 FIXED(31)               /*'UNEXPECTED END OF TEXT IN '    */
     CONSTANT(33),
  LMPART34 FIXED(31)               /*''' SKIPPED DUE TO PREVIOUS     */
     CONSTANT(34),                 /* ERROR'                         */
  LMPART35 FIXED(31)               /*'INVALID '                      */
     CONSTANT(35),
  LMPART36 FIXED(31)               /*' VALUE '''                     */
     CONSTANT(36),
  LMPART37 FIXED(31)               /*''''                            */
     CONSTANT(37),
  LMPART38 FIXED(31)               /*' SYNAD TEXT FOLLOWS: '         */
     CONSTANT(38),
  LMPART39 FIXED(31)               /*'SYS1.PARMLIB'                  */
     CONSTANT(39),
  LMPART40 FIXED(31)               /*'PARMLIB'                       */
     CONSTANT(40),
  LMPART41 FIXED(31)               /*'REPLY'                         */
     CONSTANT(41),
  LMPART42 FIXED(31)               /*'SYSIN'                         */
     CONSTANT(42),
  LMPART43 FIXED(31)               /*'DEFAULT'                       */
     CONSTANT(43),
  LMPART44 FIXED(31)               /*'DUMP '                         */
     CONSTANT(44),
  LMPART45 FIXED(31)               /*'MESSAGE'                       */
     CONSTANT(45),
  LMPART46 FIXED(31)               /*' OPENED'                       */
     CONSTANT(46),
  LMPART47 FIXED(31)               /*' READ'                         */
     CONSTANT(47),
  LMPART48 FIXED(31)               /*' CLOSED'                       */
     CONSTANT(48),
  LMPART49 FIXED(31)               /*' WRITTEN TO'                   */
     CONSTANT(49),
  LMPART50 FIXED(31)               /*'DATA SET CANNOT BE'            */
     CONSTANT(50),
  LMPART51 FIXED(31)               /*'JOB'                           */
     CONSTANT(51),
  LMPART52 FIXED(31)               /*'NO FURTHER PROCESSING OF THIS  */
     CONSTANT(52),                 /* DATASET'                       */
  LMPART53 FIXED(31)               /*'''CLEAR'' OPTION IS VALID ONLY */
     CONSTANT(53),                 /* FOR VSAM DATASETS.             */
  LMPART54 FIXED(31)               /*'SMF DUMP INITALIZATION FAILED. */
     CONSTANT(54),                 /* JOB TERMINATED.'               */
  LMPART55 FIXED(31)               /*' ABNORMALLY. NO DATASETS WERE  */
     CONSTANT(55),                 /* CLEARED.'                      */
  LMPART56 FIXED(31)               /*'DSORG OF '                     */
     CONSTANT(56),
  LMPART57 FIXED(31)               /*' OPTION IGNORED FOR DATASET    */
     CONSTANT(57),                 /* XXXXXXXX'                      */
  LMPART58 FIXED(31)               /*'CHANGED'                       */
     CONSTANT(58),
  LMPART59 FIXED(31)               /*' -- '                          */
     CONSTANT(59),
  LMPART60 FIXED(31)               /*'ERROR DETECTED IN USER EXIT'   */
     CONSTANT(60),
  LMPART61 FIXED(31)               /*'EXIT BYPASSED.'                */
     CONSTANT(61),
  LMPART62 FIXED(31)               /*'. RETURN CODE='                */
     CONSTANT(62),
  LMPART63 FIXED(31)               /*'. FEEDBACK CODE='              */
     CONSTANT(63),
  LMPART64 FIXED(31)               /*'ERROR IN SUMF DUMP SUMMARY RE- */
     CONSTANT(64),                 /* PORT. REPORT TERMINATED.       */
  LMPART65 FIXED(31)               /*'DATA SETS'                     */
     CONSTANT(65),
  LMPART66 FIXED(31)               /*'    NAME    VOLSER SIZE(BLKS)  */
     CONSTANT(66),                 /* %FULL STATUS'                  */
  LMPART67 FIXED(31)               /*'. ALLOCATED'                   */
     CONSTANT(67),
  LMPART68 FIXED(31)               /*'. ERROR CODE='                 */
     CONSTANT(68),
  LMPART69 FIXED(31)               /*'. INFO. CODE='                 */
     CONSTANT(69),
  LMPART70 FIXED(31)               /*'DATASET IS NOT VSAM. DATASET   */
     CONSTANT(70),                 /* CANNOT BE USED.                */
  LMPART71 FIXED(31)               /*'ACTIVE'                        */
     CONSTANT(71),
  LMPART72 FIXED(31)               /*'ALTERNATIVE'                   */
     CONSTANT(72),
  LMPART73 FIXED(31)               /*'DUMP REQUIRED'                 */
     CONSTANT(73),
  LMPART74 FIXED(31)               /*' OPENED. GENCB FAILED.         */
     CONSTANT(74),
  LMPART75 FIXED(31)               /*' OPENED. MODCB FAILED.         */
     CONSTANT(75),
  LMPART76 FIXED(31)               /*' DATA SET '                    */
     CONSTANT(76),
  LMPART77 FIXED(31)               /*' HAS BEEN CLEARED.             */
     CONSTANT(77),
  LMPART78 FIXED(31)               /*'DISPLAY  '                     */
     CONSTANT(78),
  LMPART79 FIXED(31)               /*'PARAMETER'                     */
     CONSTANT(79),
  LMPART80 FIXED(31)               /*'BUFNUM VALUE HAS BEEN CHANGED  */
     CONSTANT(80),                 /* TO '                           */
  LMPART81 FIXED(31)               /*'CONTROL INTERVAL SIZE IN       */
     CONSTANT(81),
  LMPART82 FIXED(31)               /*'SPECIFY IPL REASON'            */
     CONSTANT(82),
  LMPART83 FIXED(31)               /*' - FTIME=HH.MM.SS.,NAME=OPERAT-*/
     CONSTANT(83),                 /* OR,REASON=(IPL,REASON) OR U'   */
  LMPART84 FIXED(31)               /*'SYNTAX ERROR IN IPL REASON RE- */
     CONSTANT(84),                 /* PLY - RESPECIFY'               */
  LMPART85 FIXED(31)               /*' WILL NOT BE USED. '           */
     CONSTANT(85),
  LMPART86 FIXED(31)               /*'DATA SET TOO SMALL'            */
     CONSTANT(86),
  LMPART87 FIXED(31)               /*'RECOVERY ATTEMPTING RETRY      */
     CONSTANT(87),
  LMPART88 FIXED(31)               /*'SET '                          */
     CONSTANT(88),
  LMPART89 FIXED(31)               /*'SUBSYS '                       */
     CONSTANT(89),
  LMPART90 FIXED(31)               /*' IS IGNORED. '                 */
     CONSTANT(90),
  LMPART91 FIXED(31)               /*'MAXIMUM NUMBER OF SUBSYSTEMS   */
     CONSTANT(91),                 /* EXCEEDED. '                    */
  LMPART92 FIXED(31)               /*' OLD OPTIONS REMAIN IN EFFECT. */
     CONSTANT(92),
  LMPART93 FIXED(31)               /*'LOGICAL '                      */
     CONSTANT(93),
  LMPART94 FIXED(31)               /*'PHYSICAL'                      */
     CONSTANT(94),
  LMPART95 FIXED(31)               /*'COMMAND '                      */
     CONSTANT(95),
  LMPART96 FIXED(31)               /*'ABENDED '                      */
     CONSTANT(96),
  LMPART97 FIXED(31)               /*'OPTIONS '                      */
     CONSTANT(97),
  LMPART98 FIXED(31)               /*'REMAIN '                       */
     CONSTANT(98),
  LMPART99 FIXED(31)               /*'IN EFFECT '                    */
     CONSTANT(99),
  LMPAR100 FIXED(31)               /*'UNDETERMINABLE '               */
     CONSTANT(100),
  LMPAR101 FIXED(31)               /*'NEW '                          */
     CONSTANT(101),
  LMPAR102 FIXED(31)               /*'INOPERATIVE FOR REMAINDER OF   */
     CONSTANT(102),                /* IPL'                           */
  LMPAR103 FIXED(31)               /*' IS BEING FORMATTED'           */
     CONSTANT(103),
  LMPAR104 FIXED(31)               /*'= '                            */
     CONSTANT(104),
  LMPAR105 FIXED(31)               /*'CLEAR FUNCTION IS NOT AUTHOR   */
     CONSTANT(105),                /* IZED IN THIS ENVIRONMENT       */
  LMPAR106 FIXED(31)               /*'NOTIFICATION OF '      @G383P26*/
     CONSTANT(106),
  LMPAR107 FIXED(31)               /*' FAILED'               @G383P26*/
     CONSTANT(107),
  LMPAR108 FIXED(31)               /*'SUBSYSTEM '            @G383P26*/
     CONSTANT(108),
  LMPAR109 FIXED(31)               /*' DOES NOT SUPPORT THIS @G383P26*/
     CONSTANT(109),                /* FUNCTION'                      */
  LMPAR110 FIXED(31)               /*' IS NOT OPERATIONAL'   @G383P26*/
     CONSTANT(110),
  LMPAR111 FIXED(31)               /*' DOES NOT EXIST'       @G383P26*/
     CONSTANT(111),
  LMPAR112 FIXED(31)               /*' SYSTEM ERROR'         @G383P26*/
     CONSTANT(112),
  LMPAR113 FIXED(31)               /*'SETSMF '               @G383P26*/
     CONSTANT(113),
  LMPAR114 FIXED(31)               /*'NOT AUTHORIZED'        @G383P26*/
     CONSTANT(114),
  LMPAR115 FIXED(31)               /*' CAN CHANGE ONLY ONE ' @G383P26*/
     CONSTANT(115),
  LMPAR116 FIXED(31)               /*'PROCESSING COMPLETE    @G383P26*/
     CONSTANT(116),
  LMPAR117 FIXED(31)               /*'SET SMF '              @G383P26*/
     CONSTANT(117),
  LMPAR118 FIXED(31)               /*'CANNOT BE USED TO CHANGE '     */
     CONSTANT(118),                /*                        @G383P26*/
  LMPAR119 FIXED(31)               /*'CHANGE REQUEST'        @G385P26*/
     CONSTANT(119);
./ ADD NAME=IEEMMRSP
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEEMMRSP                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - REFERENCE - STARTING POINT PAIR ENTRY         */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /* 5740-XYN COPYRIGHT IBM CORP 1980,                                */
 /* LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,                    */
 /* REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.           */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION - THIS MACRO PROVIDES A MAPPING FOR AN ENTRY IN THE     */
 /*            ARRAY USED TO DRIVE VARY STORAGE ELEMENT PROCESSING.  */
 /*            EACH ENTRY IN THE ARRAY REPRESENTS AN AREA IN REAL    */
 /*            STORAGE.  THIS AREA OF REAL STORAGE STARTS AT THE     */
 /*            REAL ADDRESS REPRESENTED BY THE REFERENCE AND         */
 /*            STARTING POINTS OF THE R-S PAIR.  THE REFERENCE       */
 /*            POINT INDICATES WHICH STORAGE ADDRESS INCREMENT       */
 /*            (SAI) - SIZED BLOCK OF STORAGE (1-ORIGIN) THE R-S     */
 /*            PAIR IS IN.  THE STARTING POINT INDICATES WHICH       */
 /*            FRAME (1-ORIGIN) OF THE SAI THE R-S PAIR STARTS       */
 /*            WITH.                                                 */
 /*                                                                  */
 /*            INDIVIDUAL FIELDS AND INDICATORS MAY BE USED          */
 /*            (1) IN OFFLINE PROCESSING ONLY, (2) IN ONLINE         */
 /*            PROCESSING ONLY, OR (3) IN BOTH OFFLINE AND           */
 /*            ONLINE PROCESSING.  IN OFFLINE PROCESSING THERE       */
 /*            ARE TWO DIFFERENT TYPES OF ENTRIES, ORIGINAL          */
 /*            ENTRIES AND ALTERNATE ENTRIES.  ORIGINAL              */
 /*            ENTRIES ("RSPORIG" IS ON) REPRESENT R-S               */
 /*            PAIRS BELONGING TO THE STORAGE ELEMENT TO GO          */
 /*            OFFLINE.  ALTERNATE ENTRIES ("RSPALT" IS ON)          */
 /*            REPRESENT ALL OTHER R-S PAIRS IN THE SYSTEM.          */
 /*            THEY ARE CALLED "ALTERNATES" BECAUSE THEY ARE         */
 /*            ALTERNATIVES FOR RECEIVING THE DATA FROM              */
 /*            ORIGINAL R-S PAIRS CONTAINING PREFERRED DATA.         */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE(IEEMMRSP) MUST BE CODED TO OBTAIN THIS MAPPING.       */
 /*   THIS MAPPING IS PLS-ONLY.                                      */
 /*                                                                  */
 /*   VIRTUAL STORAGE FOR THE ARRAY OF R-S PAIR ENTRIES IS           */
 /*   OBTAINED AND FREED BY IEEVSTEL.  ESTAE EXIT ROUTINE            */
 /*   IEEVSTEE ALSO FREES THE ARRAY.  THE ARRAY IS OBTAINED          */
 /*   FROM SUBPOOL 230.                                              */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*                                                                  */
 /*   ZMH0008 - ADD "VARY IN PROCESS" INDICATOR SO THAT      @ZMH0008*/
 /*             ESTAE PROCESSING CAN CANCEL THE OFFLINE      @ZMH0008*/
 /*             REQUEST                                      @ZMH0008*/
 /*                                                                  */
 /********************************************************************/
 @EJECT;
 DCL
   1 RSPENTRY BASED(PAIRPTR),
     2 RSPSTAT,                    /* STATIC INFORMATION             */
       3 RSPRADDR FIXED(31),       /* REAL STARTING ADDRESS OF THE
                                      FIRST FRAME OF THE R-S PAIR    */
       3 RSPNALTP PTR(31),         /* PTR TO NEXT ALTERNATE ENTRY -
                                      OFFLINE ONLY - ALTERNATE ONLY  */
       3 RSPNORGP PTR(31),         /* PTR TO NEXT ORIGINAL ENTRY -
                                      OFFLINE ONLY, ORIGINAL ONLY    */
       3 RSPOS  FIXED(31),         /* POSITION OF R-S PAIR IN MSSF'S
                                      INFO - OFFLINE ONLY - ORIGINAL
                                      ONLY                           */
       3 RSPBADFP PTR(31),         /* PTR TO BIT PATTERN INDICATING
                                      POSITION(S) OF BAD FRAME(S) IN
                                      THE R-S PAIR - OFFLINE ONLY -
                                      ALTERNATE ONLY                 */
       3 RSPPREFP PTR(31),         /* PTR TO BIT PATTERN INDICATING
                                      POSITION(S) OF PERMANENTLY
                                      RESIDENT FRAMES IN THE R-S
                                      PAIR - OFFLINE ONLY - ORIGINAL
                                      ONLY                           */
       3 RSPOINTS FIXED(16),       /* REFERENCE & STARTING POINTS    */
         4 RSPREFPT FIXED(8),      /* REFERENCE POINT                */
         4 RSPSTPT FIXED(8),       /* STARTING POINT                 */
       3 RSPFLAG1 BIT(16),
         4 RSPLAST BIT(1),         /* LAST ENTRY IN THE ARRAY        */
         4 RSPORIG BIT(1),         /* ORIGINAL ENTRY - OFFLINE ONLY  */
         4 RSPALT BIT(1),          /* ALTERNATE ENTRY - OFFLINE ONLY */
         4 RSPSKIP BIT(1),         /* SET ON IN AN ORIGINAL ENTRY
                                      WHEN IT GOES OFFLINE LOGICALLY -
                                      PREVENTS ENTRY FROM BEING RE-
                                      PROCESSED IF BAD/PERMRES STATUS
                                      CHANGES - OFFLINE ONLY -
                                      ORIGINAL ONLY                  */
     2 RSPDYNAM,                   /* DYNAMIC INFORMATION            */
       3 RSPELCNT FIXED(31),       /* IN AN ORIGINAL ENTRY, THE NUMBER
                                      OF ALTERNATES ELIGIBLE TO IT -
                                      IN AN ALTERNATE ENTRY, THE
                                      NUMBER OF ORIGINALS IT IS
                                      ELIGIBLE TO - OFFLINE ONLY     */
       3 RSPELIGP PTR(31),         /* IN AN ORIGINAL ENTRY, PTR TO
                                      AN ARRAY OF POINTERS TO ELIGIBLE
                                      ALTERNATES - IN AN ALTERNATE
                                      ENTRY, PTR TO AN ARRAY OF
                                      POINTERS TO ORIGINALS IT'S
                                      ELIGIBLE TO - OFFLINE ONLY     */
       3 RSPREST# FIXED(31),       /* RESTRICTIVENESS FACTOR FOR
                                      ORIGINAL ENTRIES - OFFLINE ONLY
                                      - ORIGINALS ONLY - ORIGINAL WITH
                                      LOWEST NUMBER IS THE FIRST/NEXT
                                      ORIGINAL TO HAVE AN ALTERNATE
                                      CHOSEN FOR IT                  */
       3 RSPALTP PTR(31),          /* PTR TO ALTERNATE ENTRY ALLOCATED
                                      TO THIS PREFERRED ORIGINAL -
                                      OFFLINE ONLY - ORIGINAL ONLY   */
       3 RSPALT# FIXED(31),        /* ALLOCATABILITY FACTOR - ALTERNATE
                                      WITH HIGHEST NUMBER IS FIRST/
                                      NEXT TO BE ALLOCATED - OFFLINE
                                      ONLY - ALTERNATE ONLY          */
       3 RSPALCDP PTR(31),         /* PTR TO ALTERNATE ALLOCATED TO
                                      THIS ORIGINAL - OFFLINE ONLY -
                                      ORIGINAL ONLY                  */
       3 RSPFLAG2 BIT(32),         /* PAIR - RELATED FLAGS           */
         4 RSPREADY BIT(1),        /* PAIR IS READY TO COME ONLINE -
                                      ONLINE ONLY                    */
         4 RSPSAI BIT(1),          /* THIS R-S PAIR IS A MEMBER OF AN
                                      SAI ALL OF WHOSE R-S PAIRS HAVE
                                      BEEN VARIED ONLINE/OFFLINE     */
         4 RSPMSG BIT(1),          /* THIS ENTRY CONTAINS DATA FOR
                                      ONLINE/OFFLINE MSG             */
         4 RSPPREF BIT(1),         /* R-S PAIR CONTAINS PERMRES/HSA
                                      DATA - OFFLINE ONLY            */
         4 RSPNELIG BIT(1),        /* INELIGIBLE TO BE AN ALTERNATE
                                      BECAUSE OF PERMRES/HSA DATA
                                      OR THE ALTERNATE BEING PHYSICALLY
                                      OFFLINE - OFFLINE ONLY -
                                      ALTERNATE ONLY                 */
         4 RSPLOFF BIT(1),         /* PAIR IS LOGICALLY OFFLINE -
                                      OFFLINE ONLY                   */
         4 RSPHSA BIT(1),          /* R-S PAIR CONTAINS HSA DATA -
                                      OFFLINE ONLY                   */
         4 RSPVRCAN BIT(1),        /* PAIR CONTAINS V=R CANDIDATE
                                      FRAMES - OFFLINE ONLY          */
         4 RSPBADFR BIT(1),        /* THIS ALTERNATE CONTAINS BAD
                                      FRAME(S) - OFFLINE ONLY -
                                      ALTERNATE ONLY                 */
         4 RSPPOFF BIT(1),         /* PAIR IS PHYSICALLY OFFLINE -
                                      OFFLINE ONLY                   */
         4 RSPVDOFF BIT(1),        /* THIS PAIR HAS ALREADY BEEN
                                      VARIED LOGICALLY OFFLINE       */
         4 RSPCMPND BIT(1),        /* THIS ALTERNATE IS A COMPLEMENT
                                      OF AN AREA SCHEDULED TO GO
                                      OFFLINE - OFFLINE ONLY -
                                      ALTERNATE ONLY                 */
         4 RSPCMPPR BIT(1),        /* AREA IS COMPLEMENT OF AN AREA
                                      CONTAINING PREFERRED DATA      */
         4 RSPCMPOF BIT(1),        /* AREA IS COMPLEMENT OF A
                                      PHYSICALLY OFFLINE PAIR        */
         4 RSPNDOFF BIT(1),        /* THIS PAIR IS PENDING OFFLINE -
                                      OFFLINE ONLY                   */
         4 RSPALCD BIT(1),         /* THIS ORIGINAL HAS AN ALTERNATE
                                      ALLOCATED TO IT, OR THIS
                                      ALTERNATE HAS BEEN ALLOCATED TO
                                      AN ORIGINAL - OFFLINE ONLY    */
         4 RSPVIP  BIT(1),         /* LOGICAL VARY IN PROCESS FOR
                                      THIS R-S PAIR          @MZH0008*/
         4 RSPCANC BIT(1);         /* OFFLINE REQUEST HAS BEEN
                                      CANCELLED              @ZMH0008*/
 DCL
   RSPPRBIT    CHAR(*) BASED(RSPPREFP), /* BIT PATTERN INDICATING
                                      POSITION(S) OF PREFERRED/HSA
                                      FRAME(S) - OFFLINE ONLY -
                                      ORIGINAL ONLY                  */
   RSPBADBT    CHAR(*) BASED(RSPBADFP), /* BIT PATTERN INDICATING
                                      POSITION(S) OF BAD FRAME(S) -
                                      OFFLINE ONLY - ALTERNATE ONLY  */
   RSPELENT(*) PTR(31) BASED(RSPELIGP); /* ARRAY OF ELIGIBLE
                                      ENTRIES - OFFLINE ONLY         */
./ ADD NAME=IEEMMSAI
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEEMMSAI                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - SAI(STORAGE ADDRESS INCREMENT) AND            */
 /*                    VARY STOR PHYSICAL ESTAE MAPPING MACRO        */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*    5740-XYN COPYRIGHT IBM CORP 1980,                             */
 /*    LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,                 */
 /*    REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.        */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION - THIS MACRO PROVIDES MAPPINGS FOR:  (1) AN ENTRY       */
 /*            IN THE ARRAY OF SAI ENTRIES USED FOR 'VARY            */
 /*            STORAGE PHYSICAL' PROCESSING, (2) THE                 */
 /*            ESTAE PARAMETER LIST FOR VARY STOR PHYSICAL, AND      */
 /*            (3) A MAP OF A DUMP LIST ENTRY FOR ESTAE'S SDUMP.     */
 /*                                                                  */
 /*            STORAGE FOR BOTH THESE AREAS IS OBTAINED IN           */
 /*            IEEVSTGP.  BOTH AREAS ARE USED IN IEEVSTGP, THE       */
 /*            VARY STOR PHYSICAL PROCESSING MODULE, AND             */
 /*            IEEVSTPE, ITS ESTAE EXIT ROUTINE.                     */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE(IEEMMSAI) MUST BE CODED TO OBTAIN THIS MAPPING.       */
 /*   THIS MAPPING IS PLS-ONLY.                                      */
 /*                                                                  */
 /*   VIRTUAL STORAGE FOR THE ARRAY OF SAI ENTRIES IS                */
 /*   OBTAINED AND FREED BY IEEVSTGP.  ESTAE EXIT ROUTINE            */
 /*   IEEVSTPE ALSO FREES THE ARRAY.  THE ARRAY IS OBTAINED          */
 /*   FROM SUBPOOL 253.                                              */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*                                                                  */
 /*   ZMH0008 - ADD SPACE FOR PTR TO RSM'S ECB FOR POSTING A VARY    */
 /*             OFFLINE REQUEST COMPLETE                     @ZMH0008*/
 /*   ZMH0029 - "ESEARYSZ" MOVES SO IT WON'T GENERATE        @ZMH0029*/
 /*             "BYTE-SKIPPING"                              @ZMH0029*/
 /*   ZMH0035 - ADD FLAG "SAISEOFF"                          @ZMH0035*/
 /*                                                                  */
 /********************************************************************/
 @EJECT;
 DCL
   1 ESTAEPRM BASED,             /* INPUT PARAMETERS                 */
     2 EMSSFPMP  PTR(31),        /* PTR TO MSSF PARM BASE            */
     2 EMMBA     PTR(31),        /* PTR TO MSG BUFFER                */
     2 ECONSID   FIXED(15),      /* MASTER CONSOLE ID                */
     2 ESEARYP   PTR(31),        /* PTR TO STG ELEM ARRAY            */
     2 ESAI      FIXED(31),      /* NO OF MEGABYTES IN AN SAI        */
     2 ERSMPMP   PTR(31),        /* PTR TO RSM PARM AREA             */
     2 EVECBP    PTR(31),        /* PTR TO VARY OFFLINE ECB  @ZMH0008*/
     2 EDYNDPTR  PTR(31),        /* PTR TO DYNAMIC DATA AREA         */
     2 EDUMPLP   PTR(31),        /* PTR TO DUMP LIST                 */
       3 EDLISTP  CHAR(4),       /* DCL FOR VRA SETUP USE            */
     2 ESAIARYP  PTR(31),        /* PTR TO SAI ARRAY                 */
     2 EFREESAI  FIXED(31),      /* SAI ARRAY LENGTH, SUBPOOL
                                    FOR FREEING                      */
     2 ELASTP    PTR(31),        /* PTR TO LAST SAI ENTRY            */
     2 ESWITCH   BIT(32),        /* PROCESSING SWITCHES              */
       3 EVARYON  BIT(1),        /* VARY ONLINE COMMAND              */
       3 EVARYOFF BIT(1),        /* VARY OFFLINE REQUEST             */
       3 EMSFCALD BIT(1),        /* MSSF WAS CALLED FOR ON/OFFLINE   */
       3 ESORTDON BIT(1),        /* A SORT WAS DONE                  */
       3 ERANGE   BIT(1),        /* RANGE REQUEST                    */
       3 EAMOUNT  BIT(1),        /* AMOUNT REQUEST                   */
     2 ELISTCTR  FIXED(31),      /* CNT OF NON-ZERO ENTRIES FOUND IN
                                    DUMP LIST                        */
     2 EVARYSAD  FIXED(31),      /* REAL STARTING ADDR OF SAI        */
     2 ESAIFRMS  FIXED(31),      /* NO OF FRAMES IN AN SAI           */
     2 ESEARYSZ  FIXED(31),      /* SIZE OF STG ELEM ARRAY           */
   1 EDUMPLST(*) BASED(EDUMPLP), /* LIST OF AREAS TO DUMP            */
     2 ESTARTP  PTR(31),         /* START POINT OF AREA TO DUMP      */
     2 EENDP    PTR(31),         /* END POINT OF AREA TO DUMP        */
   1 SAIENTRY BASED(ASAIPTR),
     2 SAINUMBR  FIXED(15),      /* NUMBER OF THIS SAI               */
     2 SAISORTF  FIXED(15),      /* SORTING WEIGHT FACTOR IF NOT 0   */
     2 SAIERLVL  FIXED(15),      /* ERROR ASSOCIATED WITH THIS SAI   */
     2 SAIRSM    FIXED(15),      /* RETURN CODE FROM RSM STATUS      */
     2 SAISTGL   FIXED(15),      /* RETURN CODE FROM IEEVSTGL        */
     2 SAIMCSVC  FIXED(15),      /* RETURN CODE FROM MSSFCALL SVC    */
     2 SAIMSSF   FIXED(15),      /* REPONSE FROM MSSF                */
     2 SAIFLAG1 CHAR(2),         /* FLAG FIELD                       */
       4 SAIALON  BIT(1),        /* SAI ALREADY ONLINE               */
       4 SAIALOFF BIT(1),        /* SAI ALREADY OFFLINE              */
       4 SAIPVARY BIT(1),        /* SAI VARIED PHYSICALLY            */
       4 SAILVARY BIT(1),        /* SAI VARIED LOGICALLY             */
       4 SAICUR  BIT(1),         /* CURRENT ENTRY                    */
       4 SAIMSG  BIT(1),         /* MSG HAS BEEN ISSUED              */
       4 SAILGST BIT(1),         /* LOGICAL VARY STARTED             */
       4 SAILGEND BIT(1),        /* LOGICAL VARY ENDED               */
       4 SAIPHST  BIT(1),        /* PHYSICAL VARY STARTED            */
       4 SAIPHEND BIT(1),        /* PHYSICAL VARY ENDED              */
       4 SAIKNRSP BIT(1),        /* MSSF VARY RESPONSE UNKNOWN       */
       4 SAIVARYD BIT(1),        /* SAI SUCCESSFULLY VARIED          */
     2 SAIELGIB CHAR(1),         /* ELIGIBILITY FLAG                 */
       4 SAIENOT BIT(1),         /* ENTRY NOT ELGIBLE                */
       4 SAIPREF BIT(1),         /* SAI HAS PREFERRED DATA           */
       4 SAIEHSA BIT(1),         /* NOT ELGIBLE BECAUSE HAS HSA      */
       4 SAIEFRM0 BIT(1),        /* NOT ELGIBLE BECAUSE HAS FRAME0   */
       4 SAIVRCAN BIT(1),        /* SAI HAS V=R CANIDATE FRAME(S)    */
       4 SAISEOFF BIT(1);        /* PART OF THIS SAI IS OFFLINE WITH
                                    A STORAGE ELEMENT        @ZMH0035*/
./ ADD NAME=IEEMMSEE
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEEMMSEE                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - STORAGE ELEMENT ESTAE PARAMETERS              */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*     5740-XYN COPYRIGHT IBM CORP 1980,                            */
 /*     LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                  */
 /*     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.       */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION - THIS MAPPING MACRO REPRESENTS THE ESTAE               */
 /*            PARAMETER LIST FOR THE VARY STORAGE ELEMENT           */
 /*            MODULES, IEEVSTEL AND IEEVSTFA, AND THEIR             */
 /*            ESTAE EXIT ROUTINE, IEEVSTEE.                         */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE(IEEMMSEE) MUST BE CODED.  THE MAPPING IS PLS ONLY.    */
 /*   STORAGE IS OBTAINED BY IEEVSTEL AS PART OF ITS PLS AUTOMATIC   */
 /*   DATA AREA.                                                     */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*                                                                  */
 /*   ZMH0008 - ADD PTR TO VSLSTAT, WHICH CONTAINS           @ZMH0008*/
 /*             INDICATORS OF THE STATUS OF A LOGICAL VARY   @ZMH0008*/
 /*             OFFLINE REQUEST.  ADD SWITCHES INDICATING    @ZMH0008*/
 /*             MSSF VARY STORAGE ELEMENT OFFLINE CMD WAS    @ZMH0008*/
 /*             ISSUED, AND THE R-S PAIR ARRAY HAS BEEN      @ZMH0008*/
 /*             BUILT.                                       @ZMH0008*/
 /*                                                                  */
 /********************************************************************/
 @EJECT;
 DCL
   1 EVSEEPRM BASED,               /* PARMS FOR ESTAE ROUTINE        */
     2 EARAYSIZ FIXED(31),         /* SIZE OF R-S PAIR ARRAY         */
     2 EARAYPTR PTR(31),           /* PTR TO R-S PAIR ARRAY          */
     2 EMSFPTR  PTR(31),           /* PTR TO MSSF PARM LIST          */
     2 EMSFRC   FIXED(31),         /* MSSF SVC RETURN CODE           */
     2 ELISTCTR FIXED(31),         /* COUNTER OF ENTRIES IN
                                      'EDUMPLST'                     */
     2 EELARYP  PTR(31),           /* PTR TO VIRTUAL STORAGE
                                      OBTAINED FOR ELIGIBLE LISTS    */
     2 EELARYSZ FIXED(31),         /* SIZE OF ELIGIBLE LIST STORAGE  */
     2 EDYNAPTR PTR(31),           /* PTR TO DYNAMIC DATA AREA FOR
                                      ESTAE ROUTINE          @ZMH0008*/
     2 EPATPTR PTR(31),            /* PTR TO BIT PATTERN STORAGE     */
     2 EPATSIZE FIXED(31),         /* SIZE, SUBPOOL OF BIT PATTERN
                                      STORAGE                        */
     2 ERSMPPTR PTR(31),           /* PTR TO RSM PARM AREA           */
     2 ERSMSIZE FIXED(31),         /* SIZE OF RSM PARM AREA          */
     2 EOFFECBP PTR(31),           /* PTR TO ECB FOR RSM TO POST
                                      COMPLETION OF VARY OFFLINE
                                      REQUEST                @ZMH0008*/
     2 ESTATPTR PTR(31),           /* PTR TO INDICATORS OF STATUS
                                      OF LOGICAL VARY OFFLINE
                                      REQUEST                @ZMH0008*/
     2 EPRFRMS  FIXED(31),         /* # OF FRAMES IN AN R-S PAIR
                                                             @ZMH0008*/
     2 ESKPFCTR FIXED(31),         /* SKIP FACTOR FOR LOGICALLY
                                      VARYING FRAMES         @ZMH0008*/
     2 EMSGBUFP PTR(31),           /* ADDR OF MSG BUFFER     @ZMH0008*/
     2 ECONSID  FIXED(15),         /* CONSOLE ID             @ZMH0008*/
     2 EWORK(10) PTR(31),          /* WORK AREA FOR THE LOCAL USE
                                      OF IEEVSTEE                    */
     2 ECSECTNM CHAR(8),           /* NAME OF CSECT IN CONTROL       */
     2 EFOOTPRT CHAR(2),           /* FOOTPRINTS FOR DEBUGGING       */
       3 EONLINE   BIT(1),         /* ONLINE REQUEST                 */
       3 EOFFLINE  BIT(1),         /* OFFLINE REQUEST                */
       3 *        BIT(14),
     2 ESTAFLGS CHAR(2),           /* FLAGS FOR ESTAE EXIT           */
       3 EMSFCALD BIT(1),          /* MSSF WAS CALLED                */
       3 EARAYGOT BIT(1),          /* R-S PAIR ARRAY HAS BEEN OB-
                                      TAINED                         */
       3 EARAYBLT BIT(1),          /* ARRAY BUILT FOR OFFLINE
                                      PROCESSING             @ZMH0008*/
       3 EMSFOFF  BIT(1),          /* MSSF OFFLINE CMD ISSUED
                                                             @ZMH0008*/
       3 *        BIT(12),
     2 EDUMPLST,                   /* AREAS FOR ESTAE TO DUMP        */
       3 EMSSFDAT(2),              /* MSSF DATA-FOR ONLINE CMD ONLY
                                      FIRST WILL EXIST: FOR OFFLINE
                                      CMD INFO (FIRST) THEN OFFLINE
                                      CMD DATA MAY EXIST             */
         4 EMSFPST  PTR(31),       /* START OF SVC PARM LIST         */
         4 EMSFPEND PTR(31),       /* END OF SVC PARM LIST           */
         4 EMSFCST  PTR(31),       /* START OF COMMAND WORD          */
         4 EMSFCEND PTR(31),       /* END OF COMMAND WORD            */
         4 EMSFDST  PTR(31),       /* START OF DATA BLOCK            */
         4 EMSFDEND PTR(31),       /* END OF DATA BLOCK              */
       3 EARAYST  PTR(31),         /* START OF ARRAY                 */
       3 EARAYEND PTR(31);         /* END OF ARRAY                   */
./ ADD NAME=IEEMMVSE
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEEMMVSE                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - FUNCTION MAP FOR VARY STORAGE ELEMENT         */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*     5740-XYN COPYRIGHT IBM CORP 1980,                            */
 /*     LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                  */
 /*     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.       */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION -                                                       */
 /*                                                                  */
 /*   THIS MACRO PROVIDES A FUNCTION MAP FOR VARY STORAGE ELEMENT.   */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE SYSLIB(IEEMMVSE)    MUST BE CODED TO USE THIS         */
 /*   MAPPING MACRO.                                                 */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*                                                                  */
 /*                                                                  */
 /********************************************************************/
        @SPACE (2);
 DCL
   1 VSEFUNC  BIT(8),              /* VARY STORAGE ELEMENT FUNCTION
                                      MAP                            */
     2 VSEONLIN BIT(1),            /* ONLINE REQUEST                 */
     2 VSEOFFLN BIT(1),            /* OFFLINE REQUEST                */
     2 VSENOMSG BIT(1),            /* DON'T ISSUE MESSAGES           */
     2    *     BIT(5);            /* UNUSED BITS                    */
./ ADD NAME=IEEMMVSL
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /********************************************************************/
 /* NAME - IEEMMVSL                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - FUNCTION MAP FOR IEEVSTGL                     */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*     5740-XYN COPYRIGHT IBM CORP 1980,                            */
 /*     LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                  */
 /*     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.       */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION - THIS MACRO IS A FUNCTION MAP FOR IEEVSTGL,            */
 /*            THE VARY STORAGE LOGICAL MODULE.                      */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*      %INCLUDE SYSLIB(IEEMMVSL)                                   */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*                                                                  */
 /*   ZMH0008 - ADD VSLSTAT TO ALLOW RECOVERY (ESTAE)        @ZMH0008*/
 /*             ROUTINES TO KNOW STATUS OF LOGICAL VARY      @ZMH0008*/
 /*                                                                  */
 /********************************************************************/
 %IF VSLSTATATTRS = ''
 %THEN VSLSTATATTRS = 'CHAR(2)';
 %IF VSLFUNCATTRS = ''
 %THEN
    VSLFUNCATTRS = 'CHAR(2)';
 DCL
   1 VSLFUNC VSLFUNCATTRS,         /* FUNCTION MAP           @ZMH0008*/
     2 VSLONLIN BIT(1),            /* ONLINE FUNCTION REQUESTED      */
     2 VSLOFFLN BIT(1),            /* OFFLINE FUNCTION REQUESTED     */
     2 VSLCHKPR BIT(1),            /* EACH TIME THE TIME INTERVAL
                                      EXPIRES, A CHECK SHOULD BE
                                      MADE TO SEE IF ANY FRAMES ARE
                                      NOW PREFERRED, AND FAIL THE
                                      REQUEST IF ANY ARE.            */
     2 VSLWTOR  BIT(1),            /* ISSUE WTOR GIVING OPERATOR
                                      OPTION TO CANCEL               */
     2 VSLFAIL  BIT(1),            /* FAIL REQUEST IF STORAGE ISN'T
                                      OFFLINE AFTER THE REQUESTED
                                      NUMBER OF ATTEMPTS             */
     2 *        BIT(11);           /* RESERVED BITS                  */
 DCL                               /*                        @ZMH0008*/
   1 VSLSTAT VSLSTATATTRS,         /* STATUS OF OFFLINE
                                      REQUEST                @ZMH0008*/
     2 VSLOFFS  BIT(1),            /* VARY BEGUN BY CALLING
                                      RSM                    @ZMH0008*/
     2 VSLOFFC  BIT(1),            /* RSM VARY COMPLETED     @ZMH0008*/
     2 VSLCANS  BIT(1),            /* RSM CANCEL STARTED     @ZMH0008*/
     2 VSLCANC  BIT(1),            /* RSM CANCEL COMPLETED   @ZMH0008*/
     2 *        BIT(12);           /* RESERVED BITS          @ZMH0008*/
 DCL
   VSLPREF  FIXED(31) CONSTANT(4), /* REQUEST FAILED BECAUSE SOME
                                      FRAMES BECAME PREFERRED        */
   VSLTMOUT FIXED(31) CONSTANT(8), /* REQUEST FAILED BECAUSE THE
                                      REQUESTOR - SUPPLIED LIMIT
                                      OF ATTEMPTS WAS REACHED
                                      WITHOUT GETTING ALL STORAGE
                                      OFFLINE                        */
   VSLOPCAN FIXED(31) CONSTANT(12), /* "OPERATOR CANCELLED" RETURN
                                       RETURN CODE                   */
   VSLESTFL FIXED(31) CONSTANT(16); /* ESTAE FAILED                  */
./ ADD NAME=IEEMMVSP
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEEMMVSP                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - INTERFACE TO VARY STORAGE PHYSICAL            */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*     5740-XYN COPYRIGHT IBM CORP 1980,                            */
 /*     LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                  */
 /*     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.       */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION - THIS MACRO PROVIDES A  FUNCTION MAP                   */
 /*            FOR THE VARY STORAGE PHYSICAL RECONFIG-               */
 /*            URATION MODULE, IEEVSTGP.  IT ALSO MAPS THE           */
 /*            REFERENCE-STARTING POINT PAIRS ARRAY, WHICH           */
 /*            IS ANOTHER PART OF THE INTERFACE TO IEEVSTGP.         */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE SYSLIB(IEEMMVSP)    MUST BE CODED TO USE THIS         */
 /*   MAPPING MACRO.                                                 */
 /*                                                                  */
 /*   THE FUNCTION MAP, 'VSPFUNC', IS SELF-DEFINING IN THE           */
 /*   INCLUDING MODULE.                                              */
 /*                                                                  */
 /*   THE R-S PAIR ARRAY IS DEFINED AS BASED ON 'PAIRSPTR',          */
 /*   SO THE INCLUDING MODULE MUST CODE:                             */
 /*           DCL PAIRSPTR PTR(31)                                   */
 /*   OR RESPECIFY THE BASE.                                         */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /********************************************************************/
        @SPACE (2);
 DCL
   1 VSPFUNC  BIT(16),             /* FUNCTION MAP FOR VARY STORAGE
                                      PHYSICAL - IEEVSTGP            */
     2 VSPONLIN BIT(1),            /* ONLINE REQUEST                 */
     2 VSPOFFLN BIT(1),            /* OFFLINE REQUEST                */
     2 VSPSIZE  BIT(1),            /* SIZE REQUEST                   */
     2 VSPRANGE BIT(1),            /* RANGE REQUEST                  */
     2 VSPLOGCL BIT(1),            /* VARY STORAGE LOGICALLY         */
     2 VSPPHYS  BIT(1),            /* VARY STORAGE PHYSICALLY        */
     2    *     BIT(10);           /* UNUSED BITS                    */
./ ADD NAME=IEEOPTNE
 /*****START OF SPECIFICATIONS****************************************/
 /*                                                                  */
 /*  MODULE-NAME = IEEOPTNE                                          */
 /*                                                                  */
 /*  DESCRIPTIVE-NAME = OPTION TABLE ENTRY (OPTNE)                   */
 /*                                                                  */
 /*                                                                  */
 /*  FUNCTION = MAPS AN ENTRY IN THE OPTION TABLES DEFINED           */
 /*             VIA IEEDEFOP MACRO                                   */
 /*                                                                  */
 /*  NOTES = SEE BELOW                                               */
 /*                                                                  */
 /*          OPFLAGS INDICATES FOR WHICH COMMANDS AND SOURCES        */
 /*          AN OPTION IS VALID.                                     */
 /*                                                                  */
 /*          OPRTN IS USED FOR OPTION PROCESSING ONLY                */
 /*                                                                  */
 /*  MODULE-TYPE = PLS MAPPING MACRO                                 */
 /*                                                                  */
 /*  CHANGE-ACTIVITY = NONE                                          */
 /*                                                                  */
 /*     A000000-999999                                       @G741PLS*/
 /* CHANGES FOR JBB1226 - SETSMF ALLOWED BIT ADDED           @G383P26*/
 /******END OF SPECIFICATIONS*****************************************/
 DCL 1 IEEOPTNE BASED,            /* OPTION TABLE ENTRY              */
       2 OPHDR,                   /* STANDARD LENGTH HEADER          */
         3 OPSUBOP PTR(31)BDY(BYTE),/* SUBOPTION TABLE ADDRESS       */
         3 OPFLAGS BIT(8),        /* OPTION VALIDIFICATION FLAGS     */
           5 OPMEMBF BIT(1),      /* VALID IN PARMLIB MEMBER IF ON   */
           5 OPREPLF BIT(1),      /* VALID IN OPERATOR REPLY IF ON   */
           5 OPNOXF BIT(1),       /* NOXXX OPTION IS VALID IF ON     */
           5 OPTABEND BIT(1),     /* END OF OPTION TABLE IF ON       */
           5 OPSETSMF BIT(1),     /* SETSMF CAN CHANGE IF ON @G383P26*/
           5 *      BIT(3),       /* RESERVED                        */
         3 * BIT(8),              /* RESERVED */
         3 OPRTN FIXED(15)BDY(BYTE),/* ROUTINE # TO PROCESS OPTION */
         3 OPBLDRTN FIXED(15)BDY(BYTE),/*BUILD ROUTINE NUMBER */
         3 OPNAMEL FIXED(15)BDY(BYTE),/* LENGTH OF NAME */
       2 OPNAME CHAR(*);          /* KEYWORD NAME                    */
./ ADD NAME=IEEPPT
         MACRO ,             HOME-GROWN PPT FROM GC28-1152
&NM      IEEPPT ,                               ADDED FOR X/A ON 93118
PPTDSECT DSECT ,
PPTID    DS    CL4           PPT IDENTIFIER
PPTVERS  DS    AL1,X         VERSION NUMBER; RSVD
PPTHDRLN DS    H             OFFSET TO FIRST ENTRY
PPTENTLN DS    H             LENGTH OF ENTRY
PPTUSED  DS    H             NUMBER OF ENTRIES IN USE
PPTENTS  DS    H,H           TOTAL NUMBER OF ENTRIES
PPTMSGAD DS    A             ?
PPTIB650 DS    A,A,A         ?
.*
PPTNAME  DS    CL8           PROGRAM NAME
PPTBYTE1 DS    X             FLAGS
PPTNCNCL EQU    X'80'          NON-CANCELLABLE
PPTSKEY  EQU    X'40'          USE PROT.KEY IN PPTKEY
PPTNSWP  EQU    X'20'          NON-SWAPPABLE
PPTPRIV  EQU    X'10'          PRIV: NO SWAP EXC. LONG WAIT
PPTSYSTK EQU    X'08'          (LONG RUNNING) SYSTEM TASK
PPTNDSI  EQU    X'04'          NO DATASET INTEGRITY
PPTNOPAS EQU    X'02'          NO PASSWORD PROTECTION
.*       EQU    X'01'            RSVD
PPTKEY   DS    X             PROTECTION KEY 'N0'
PPTCPUA  DS    XL2           CPU AFFINITY (8000 IS PU 0)
PPTPUBYT DS    X             PREFERRED STORAGE FLAGS
PPT2LPU  EQU    X'80'          SHORT PVT FROM PREFERRED
PPT1LPU  EQU    X'40'          PVT AND LSQA FROM PREFERRED
PPTN2LP  EQU    X'20'          NO SHORT PVT FROM PREFERRED
PPTORIG  DS    X             ENTRY ORIGIN
PPTDEFLT EQU    X'80'          ON - PPT; OFF - PARMLIB SCHEDXX
         MEND  ,
./ ADD NAME=IEERDCM
*        %GOTO DCMRBSL;                                              /*
         MACRO
         IEERDCM
*     01/15/73          LEVEL=05                              MB Y02958
DCMTSRT  DSECT DCMTSPTR
DCMADTRN DS    A                   POINTER TO PAGABLE DCM
         DS    CL1                 RESERVED
DCMRFLGS DS    BL1                 FLAGS
DCMDOM   EQU   X'10'               DOM MUST BE TRIED
DCMNIPP  EQU   X'08'               DCM WAS USED BY NIP
DCMLEN   DS    H                   LENGTH OF PAGABLE DCM
DCMADKP  DS    A                   ADDRESS OF ROUTED K COMMAND
*                                   PARAMETER LIST
DCMTOPAR DS    CL1                 TOP DISPLAY AREA DEFINED
DCMTOPDS DS    CL1                 TOP DISPLAY ON SCREEN
         DS    BL1                 RESERVED
DCMDEVTY DS    BL1                 DEVICE TYPE FLAGS
DCMTY60  EQU   X'80'               USABLE FOR SD
DCMTY50  EQU   X'40'               NOT USABLE FOR SD
DCMADSDS DS    A                   POINTER TO FIRST SDS SUPPORT AREA
DCMRMS   DS    CL1                 NUMBER OF CCWS TO WRITE
DCMADRMS DS    AL3                 POINTER TO RMS CCWS
DCMWLAST DS    A                   PT CON Q ENTRY LAST OUT (O-O-L)
DCMRMSAL DS    H                   NUMBER LINES IN MSG AREA
DCMDOMKY DS    H                   CONSOLE DOM ELEMENT        MC XM5812
DCMSUBAD DS    A                   POINTER TO SUB CONTROL BLOCK
DCMADPFK DS    A                   POINTER TO RESIDENT PFK AREA
DCMINTVL DS    H                   INTERVAL FOR THIS DCM
DCMTMCTR DS    H                   TIME COUNTER FOR THIS DCM
DCMR2FLG DS    BL1                 TIMER FLAGS
DCMRXSFL EQU   X'80'               FULL SCREEN FLAG
DCMRXUNV EQU   X'40'               UNVIEWABLE MESSAGE DISPLAYED
DCMRXTMR EQU   X'20'               TIMER FLAG
DCMRXRLL EQU   X'10'               READY TO ROLL
DCMRXDEL EQU   X'08'               PENDING DELETE REQUEST
DCMRXTIM EQU   X'02'               TIMER ELAPSED FOR THIS DISPLAY
DCMR3FLG DS    BL1                 MISC FLAGS
DCMSTSWT EQU   X'80'               CHANGING STATUS OF OUTPUT ONLY CON
DCMKVIP  EQU   X'40'               ENTRY FOR K VARY COMMAND
DCMCLPR  EQU   X'20'               CLOSE IN PROCESS
DCMRXSCN EQU   X'10'               ASY ERROR MESSAGE ON SCREEN
DCMR3PKA EQU   X'08'               DA I/O COMPLETE
DCMRXHMT EQU   X'04'               FULL SCREEN SIMULATED      MC YM4102
         DS    H                   RESERVED
DCMRQDEL DS    A                   DELETE REQUEST BUFFER
         DS    A                   DELETE REQUEST BUFFER
DCMMSGSV DS    A                   POINTER TO SAVED NIP MESSAGES
DCMPACB  EQU   *                   SACB PREFIX
DCMPLN   DS    FL2                 SYSGEN LENGTH OF AREA
DCMPLNPR DS    H                   LENGTH OF SACB PREFIX-IN BYTES
DCMPRSZ  EQU   *-DCMPACB           SIZE OF PREFIX
DCMACB   EQU   *                   SACB
DCMACBNX DS    A                   POINTER TO NEXT SACB
DCMAID   DS    CL1                 AREA ID
DCMASACB DS    BL1                 SACB FLAGS
DCMAUSE  EQU   X'80'               AREA PRESENTLY DEFINED     MB Y02958
*    IF DCMAUSE IS OFF, A SYSGEND AREA HAS BEEN FREED E.G. K A,NONE
DCMAGM   EQU   X'40'               GETMAINED SACB
DCMALN   DS    FL2                 LENGTH OF AREA
DCMATOP  DS    FL1                 TOP ROW OF AREA
DCMACLR  EQU   *                   REINITIALIZED PORTION      MB Y02958
DCMAROW  DS    FL1                 ROW TO BE WRITTEN NEXT
DCMAFR   DS    H                   FRAME ON SCREEN
DCMAMJWQ DS    A                   POINTER TO CON Q ENTRY FOR MAJOR
DCMAMIN  DS    A                   POINTER TO MINOR WQE
DCMATIME DS    F                   TIME CONTROL LINE WAS WRITTEN
DCMAMT   DS    XL2                 RESERVED                   MB Y02958
DCMAFLG1 DS    XL1                 AREA FLAGS1
DCMADISP EQU   X'40'               DISPLAY IN AREA
DCMADEND EQU   X'20'               END OF DISPLAY ON SCREEN
DCMAFRPR EQU   X'10'               FRAMING IN PROGRESS
DCMAFULL EQU   X'08'               FRAME FULL
DCMABL   EQU   X'04'               BLANKING TO BE DONE
DCMAFLG2 DS    XL1                 AREA FLAGS 2
DCMALMIN EQU   X'80'               SAVED POINTER TO LAST MINOR OUTPUT
DCMAWCON EQU   X'40'               WRITE CONTROL LINE
DCMARCON EQU   X'20'               REWRITE CONTROL LINE
DCMAMJFR EQU   X'10'               MAJOR WQE HAS BEEN FOUND
DCMADFLG DS    XL1                 DYNAMIC DISPLAY FLAGS      MB Y02958
DCMADD   EQU   X'80'               TRACK IN AREA              MB Y02958
DCMAHOLD EQU   X'40'               TRACK IN HOLD MODE         MB Y02958
DCMACSIB EQU   X'20'               TRACK WITH CONTINUATION LINE IN     *
                                   SCREEN IMAGE BUFFER        MB Y02958
DCMATRCK DS    X                   TRACK REQUEST INDICATORS   MB Y02958
DCMATJOB EQU   X'80'               TRACK JOBS                 MB Y02958
DCMATJBL EQU   X'40'               TRACK JOBS,LIST            MB Y02958
DCMATTS  EQU   X'08'               TRACK TS                   MB Y02958
DCMATTSL EQU   X'04'               TRACK TS,LIST              MB Y02958
DCMATA   EQU   X'88'               TRACK A                    MB Y02958
DCMATAL  EQU   X'44'               TRACK A,LIST               MB Y02958
DCMAUTME DS    XL2                 UTME=NNN VALUE             MB Y02958
DCMATECB DS    F                   TRACK CANCEL ECB ADDRESS   MB Y02958
DCMAPAD  DS    F                   RESERVED                   MB Y02958
DCMACBND EQU   *                   SACB END
DCMCLRLN EQU   *-DCMACLR           LENGTH FOR REINITIALIZING  MB Y02958
DCMACBSZ EQU   *-DCMACB            SACB SIZE
DCMREND  DS    0C                  END OF DCM
         MEND  , */
*%DCMRBSL  :  ;
*/*   01/15/73          LEVEL=05                                     */
*DECLARE
*  1 DCMTSRT  BASED(DCMTSPTR),
*   2 DCMADTRN    PTR(31),               /* POINTER TO PAGABLE DCM   */
*   2 *           CHAR(1),               /* RESERVED                 */
*   2 DCMRFLGS    CHAR(1),               /* FLAGS                    */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 DCMDOM   BIT(1),                  /* DOM MUST BE TRIED        */
*    3 DCMNIPP  BIT(1),                  /* DCM WAS USED BY NIP      */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*   2 DCMLEN      FIXED(15),             /* LENGTH OF PAGABLE DCM    */
*   2 DCMADKP     PTR(31),               /* ADDRESS OF ROUTED K
*                                           COMMAND  PARAMETER LIST  */
*   2 DCMTOPAR    CHAR(1),               /* TOP DISPLAY AREA DEFINED */
*   2 DCMTOPDS    CHAR(1),               /* TOP DISPLAY ON SCREEN    */
*   2 *           CHAR(1),               /* RESERVED                 */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*   2 DCMDEVTY    CHAR(1),               /* DEVICE TYPE FLAGS        */
*    3 DCMTY60  BIT(1),                  /* USABLE FOR SD            */
*    3 DCMTY50  BIT(1),                  /* UNUSABLE FOR SD          */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*   2 DCMADSDS    PTR(31),               /* POINTER TO FIRST SDS
*                                           SUPPORT AREA             */
*   2 DCMRMS      CHAR(1),               /* NUMBER OF CCWS TO WRITE  */
*   2 DCMADRMS    PTR(24)  BDY(BYTE),    /* POINTER TO RMS CCWS      */
*   2 DCMWLAST    PTR(31),               /* PT CON Q ENTRY LAST OUT
*                                           (O-O-L)                  */
*   2 DCMRMSAL    FIXED(15),             /* NUMBER LINES IN MSG AREA */
*   2 DCMDOMKY    FIXED(15),             /* CONSOLE DOM ELEMENT      */
*   2 DCMSUBAD    PTR(31),               /* POINTER TO SUB CONTROL
*                                           BLOCK                    */
*   2 DCMADPFK    PTR(31),               /* POINTER TO RESIDENT PFK
*                                           AREA                     */
*   2 DCMINTVL    FIXED(15),             /* INTERVAL FOR THIS DCM    */
*   2 DCMTMCTR    FIXED(15),             /* TIME COUNTER FOR THIS
*                                           DCM                      */
*   2 DCMR2FLG    CHAR(1),               /* TIMER FLAGS              */
*    3 DCMRXSFL BIT(1),                  /* FULL SCREEN FLAG         */
*    3 DCMRXUNV BIT(1),                  /* UNVIEWABLE MESSAGE
*                                           DISPLAYED                */
*    3 DCMRXTMR BIT(1),                  /* TIMER FLAG               */
*    3 DCMRXRLL BIT(1),                  /* READY TO ROLL            */
*    3 DCMRXDEL BIT(1),                  /* PENDING DELETE REQUEST   */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 DCMRXTIM BIT(1),                  /* TIMER ELAPSED FOR THIS
*                                           DISPLAY                  */
*    3 *        BIT(1),                  /* UNUSED                   */
*   2 DCMR3FLG    CHAR(1),               /* MISC FLAGS               */
*    3 DCMSTSWT BIT(1),                  /* CHANGING STATUS OF
*                                           OUTPUT ONLY CON          */
*    3 DCMKVIP  BIT(1),                  /* ENTRY FOR K VARY COMMAND */
*    3 DCMCLPR  BIT(1),                  /* CLOSE IN PROCESS         */
*    3 DCMRXSCN BIT(1),                  /* ASY ERROR MESSAGE ON
*                                           SCREEN                   */
*    3 DCMR3PKA BIT(1),                  /* DCM I/O COMPLETE         */
*    3 DCMRXHMT BIT(1),                  /* FULL SCREEN SIMULATED    */
*    3 *        BIT(1),                  /* UNUSED                   */
*    3 *        BIT(1),                  /* UNUSED                   */
*   2 *           FIXED(15),             /* RESERVED                 */
*   2 DCMRQDEL    PTR(31),               /* DELETE REQUEST BUFFER    */
*   2 *           PTR(31),               /* DELETE REQUEST BUFFER    */
*   2 DCMMSGSV    PTR(31),               /* POINTER TO NIPS MSGS.    */
*   2 DCMPACB              ,             /* SACB PREFIX              */
*    3 DCMPLN     FIXED(15),             /* SYSGEN LEN OF AREA.      */
*    3 DCMPLNPR   FIXED(15);             /* PREFIX LENGTH OF AREA.   */
* DECLARE                                /* SCREEN AREA CNTRL BLOCK  */
*  1 DCMACB  BASED(SACBPTR),             /* SACB                     */
*   2 DCMACBNX   PTR(31),                /* POINTER TO NEXT SACB.    */
*   2 DCMAID     CHAR(1),                /* AREA I.D.                */
*   2 DCMASACB   CHAR(1),                /* SACB FLAGS.              */
*    3 DCMAUSE BIT(1),                   /* AREA PRESENTLY DEFINED   */
*    3 DCMAGM  BIT(1),                   /* GETMAINED SACB.          */
*   2 DCMALN     FIXED(15),              /* LENGTH OF AREA.          */
*   2 DCMATOP    CHAR(1),                /* TOP ROW OF AREA.         */
*   2 DCMACLR    BDY(WORD,2),            /* REINITIALIZED PORTION.   */
*    3 DCMAROW    CHAR(1),               /* ROW FOR NEXT WRITE.      */
*    3 DCMAFR     FIXED(15),             /* FRAME ON SCREEN.         */
*    3 DCMAMJWQ   PTR(31),               /* PTR MAJOR CON Q ENTRY    */
*    3 DCMAMIN    PTR(31),               /* PTR TO MINOR WQE.        */
*    3 DCMATIME   FIXED(31),             /* TIME CONTROL LINE WRITN. */
*    3 DCMAMT     CHAR(2),               /* RESERVED                 */
*    3 DCMAFLG1   CHAR(1),               /* AREA FLAGS.              */
*     4 *        BIT(1),                 /* RESERVED.                */
*     4 DCMADISP BIT(1),                 /* DISPLAY IN AREA          */
*     4 DCMADEND BIT(1),                 /* END OF DISP. ON SCREEN   */
*     4 DCMAFRPR BIT(1),                 /* FRAMING IN PROGRESS      */
*     4 DCMAFULL BIT(1),                 /* FRAME FULL               */
*     4 DCMABL   BIT(1),                 /* BLANKING TO BE DONE      */
*     4 *        BIT(1),                 /* RESERVED.                */
*     4 *        BIT(1),                 /* RESERVED.                */
*    3 DCMAFLG2   CHAR(1),               /* AREA FLAGS 2.            */
*     4 DCMALMIN BIT(1),                 /* PTR TO LAST MINOR OUTPT. */
*     4 DCMAWCON BIT(1),                 /* WRITE CONTROL LINE       */
*     4 DCMARCON BIT(1),                 /* REWRITE CONTROL LINE     */
*     4 DCMAMJFR BIT(1),                 /* MAJOR WQE HAS BEEN FOUND */
*     4 *        BIT(1),                 /* RESERVED.                */
*     4 *        BIT(1),                 /* RESERVED.                */
*     4 *        BIT(1),                 /* RESERVED.                */
*     4 *        BIT(1),                 /* RESERVED.                */
*    3 DCMATFLG     CHAR(4) BDY(WORD),   /* FLAGS AND UTME VALUE     */
*     4 DCMADFLG    CHAR(1),             /* DYNAMIC DISPLAY FLAGS    */
*      5 DCMADD   BIT(1),                /* TRACK IN AREA            */
*      5 DCMAHOLD BIT(1),                /* TRACK IN HOLD MODE       */
*      5 DCMACSIB BIT(1),                /* TRACK WITH CONT LINE     */
*      5 *        BIT(1),                /* RESERVED.                */
*      5 *        BIT(1),                /* RESERVED.                */
*      5 *        BIT(1),                /* RESERVED.                */
*      5 *        BIT(1),                /* RESERVED.                */
*      5 *        BIT(1),                /* RESERVED.                */
*     4 DCMATRCK    CHAR(1),             /* TRACK REQUEST INDICATORS */
*      5 DCMATJOB    BIT(1),             /* TRACK JOBS               */
*      5 DCMATJBL    BIT(1),             /* TRACK JOBS,LIST          */
*      5 *           BIT(1),             /* RESERVED                 */
*      5 *           BIT(1),             /* RESERVED                 */
*      5 DCMATTS     BIT(1),             /* TRACK TS                 */
*      5 DCMATTSL    BIT(1),             /* TRACK TS,LIST            */
*      5 *           BIT(1),             /* RESERVED                 */
*      5 *           BIT(1),             /* RESERVED                 */
*                        /* TO REFERENCE AND CHANGE THE ABOVE BITS   */
*                        /* REFERENCE: IF DCMATJBL='1'B THEN ...     */
*                        /* CHANGE: DCMATJBL='1'B                    */
*%DCL DCMATA CHAR;       /* MASK FOR TRACK A                         */
*%DCMATA='''88''X';      /* REFERENCE: IF DCMATRCK=DCMATA THEN ...   */
*                        /* CHANGE: DCMATRCK=DCMATA                  */
*%DCL DCMATAL CHAR;      /* MASK FOR TRACK A,LIST                    */
*%DCMATAL='''44''X';     /* REFERENCE AND CHANGE AS FOR DCMATA       */
*     4 DCMAUTME    FIXED(15),           /* UTME=NNN VALUE           */
*    3 DCMATECB    PTR(31),              /* TRACK CANCEL ECB ADDRESS */
*    3 DCMAPAD     FIXED(31),            /* RESERVED                 */
*   2 DCMACBND    BDY(BYTE);             /* SACB END                 */
* %DCMCLRLN='LENGTH(DCMACLR)';
* %DCMPRSZ='LENGTH(DCMPACB)';
* %DCMACBSZ='LENGTH(DCMACB)';
*DECLARE DCMREND (*) CHAR(1)   BASED
*  (ADDR(DCMTSRT )+LENGTH(DCMTSRT ));
*                                        /* END OF DCM               */
./ ADD NAME=IEERSRRB
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEERSRRB                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - INTERFACE TO REAL STORAGE RECONFIGURATION -   */
 /*                    MODULE IEAVRCF3                               */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*     5740-XYN COPYRIGHT IBM CORP 1980,                            */
 /*     LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                  */
 /*     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.       */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1127                                          */
 /*                                                                  */
 /* FUNCTION - THIS MACRO PROVIDES A MAPPING OF THE REAL STORAGE     */
 /*            RECONFIGURATION REQUEST BLOCK, AND OF THE STATUS      */
 /*            BYTES POINTED TO BY A FIELD IN THE REQUEST BLOCK.     */
 /*                                                                  */
 /*            WHEN CALLING IEAVRCF3, GPR 1 MUST POINT TO A POINTER  */
 /*            TO THE REQUEST BLOCK, AND FIELD RSFLAGP IN THE        */
 /*            REQUEST BLOCK MUST POINT TO THE STATUS BYTES'         */
 /*            STORAGE. STORAGE FOR THE REQUEST BLOCK AND THE        */
 /*            STATUS BYTES MUST BE NON-SWAPPABLE.                   */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE SYSLIB(IEERSRRB) MUST BE CODED TO USE THIS MAPPING    */
 /*   MACRO.                                                         */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*                                                                  */
 /********************************************************************/
 @SPACE(5);
 DCL
   1 RSRRB BASED(RSRRBPTR),        /* REAL STORAGE RECONFIGURATION
                                      REQUEST BLOCK                  */
     2 RSRSTART FIXED(31),         /* STARTING REAL ADDRESS OF
                                      STORAGE TO BE RPOCESSED        */
     2 RSRECBP PTR(31),            /* POINTER TO ECB FOR RSR TO POST
                                      WHEN A VARY OFFLINE IS
                                      COMPLETE                       */
     2 RSRFLAGP PTR(31),           /* POINTER TO STATUS BYTES'
                                      STORAGE                        */
     2 RSRFRCNT FIXED(31),         /* COUNT OF FRAMES TO BE
                                      PROCESSED                      */
     2 RSRSKIP FIXED(15),          /* SKIP FACTOR, EG., 2 MEANS EVERY
                                      OTHER FRAME, 3 MEANS EVERY
                                      THIRD FRAME                    */
     2 RSRFUNC FIXED(15),          /* FUNCTION INDICATOR -
                                      1 = ONLINE, 2 = OFFLINE,
                                      3 = STATUS, 4 = CANCEL         */
 @SPACE(3);
   1 RSRFLAGS  CHAR(2) BASED(RSRSTATP), /* STATUS BYTES ARRAY      */
     2 RSRPRMRS BIT(1),            /* PERMANENTLY RESIDENT - CAN'T GO
                                      OFFLINE                        */
     2 RSRSQA BIT(1),              /* SQA FRAME                      */
     2 RSRVR BIT(1),               /* V=R FRAME - CAN'T GO OFFLINE   */
     2 * BIT(1),                   /* RESERVED                       */
     2 RSRINTRC BIT(1),            /* INTERCEPTED BECAUSE OF A
                                      STORAGE ERROR MACHINE CHECK, A
                                      VARY OFFLINE, OR A REQUEST FOR
                                      V=R                            */
     2 RSROFLN BIT(1),             /* OFFLINE OR GOING OFFLINE       */
     2 RSRVRCAN BIT(1),            /* V=R CANDIDATE - CAN GO OFFLINE */
     2 * BIT(1),                   /* RESERVED                       */
     2 RSRLSQA BIT(1),             /* LSQA FRAME - CAN GO OFFLINE    */
     2 RSRFIXED BIT(1),            /* FIXED FRAME                    */
     2 RSRLNSWP BIT(1),            /* LONG-TERM NON-SWAPPABLE        */
     2 RSRNSWAS BIT(1),            /* NON-SWAPPABLE ADDRESS SPACE    */
     2 RSRSTERR BIT(1),            /* STORAGE ERROR IN FRAME         */
     2 * BIT(3);                   /* RESERVED                       */
./ ADD NAME=IEESDT
         MACRO
         IEESDT
         SPACE
.*  START DESCRIPTOR TABLE
.*
.*
.*
.*  THIS MACRO PROVIDES A MAPPING OF THE START DESCRIPTOR TABLE WHICH
.*  IS USED IN PROCESSING START AND MOUNT COMMANDS. THE TABLE CONTAINS
.*  JOB CONTROL LANGUAGE BUILT FROM THE PARAMETERS SPECIFIED ON THE
.*  COMMAND AND FOUND IN THE COMMAND SCHEDULING CONTROL BLOCK (CSCB).
.*  THIS JCL HAS BEEN SYNTAX CHECKED AND WILL BE MOVED TO THE JOB
.*  CONTROL LANGUAGE SET BY IEEVJCL IN THE L-SHAPED PROGRAM AND
.*  PASSED TO THE INTERPRETER FOR FURTHER CHECKING. THE SIZE OF THIS
.*  TABLE IS VARIABLE DEPENDING ON THE LENGTH OF THE COMMAND RECEIVED.
.*
.*
         SPACE
***********************************************************************
*                                                                     *
*                       START DESCRIPTOR TABLE                        *
*                                                                     *
***********************************************************************
         SPACE
*  FURTHER DOCUMENTATION OF THIS CONTROL BLOCK CAN BE OBTAINED BY
*  LISTING THE MACRO SINCE MANY OF THE COMMENTS ARE PRECEEDED BY .*,
*  WHICH DO NOT APPEAR DURING ASSEMBLY.
         SPACE 4
SDTSDT   DS    0D
SDTSIZE  DS    1H       SIZE OF START DESCRIPTOR TABLE.
         SPACE
SDTJCLS1 DS    1C       IDENTIFIER FLAGS FOR IN-CORE JCL.
SDTJOB1  EQU   128      BIT 0 - JOB STATEMENT.
SDTEXEC1 EQU   64       BIT 1 - EXEC STATEMENT.
SDTDD1   EQU   32       BIT 2 - DD STATEMENT.
SDTCONT1 EQU   16       BIT 3 - DD STATEMENT CONTINUATION
SDTJCLL1 DS    1C                 RESERVED
SDTJCL1  DS    72C      JCL STATEMENT.
         SPACE
SDTJCLS2 DS    1C       IDENTIFIER FLAGS FOR IN-CORE JCL.
SDTJOB2  EQU   128      BIT 0 - JOB STATEMENT.
SDTEXEC2 EQU   64       BIT 1 - EXEC STATEMENT.
SDTDD2   EQU   32       BIT 2 - DD STATEMENT.
SDTCONT2 EQU   16       BIT 3 - DD STATEMENT CONTINUATION
SDTJCLL2 DS    1C                 RESERVED
SDTJCL2  DS    72C      JCL STATEMENT.
         SPACE
SDTJCLS3 DS    1C       IDENTIFIER FLAGS FOR IN-CORE JCL.
SDTJOB3  EQU   128      BIT 0 - JOB STATEMENT.
SDTEXEC3 EQU   64       BIT 1 - EXEC STATEMENT.
SDTDD3   EQU   32       BIT 2 - DD STATEMENT.
SDTCONT3 EQU   16       BIT 3 - DD STATEMENT CONTINUATION
SDTJCLL3 DS    1C                 RESERVED
SDTJCL3  DS    72C      JCL STATEMENT.
         SPACE
SDTJCLS4 DS    1C       IDENTIFIER FLAGS FOR IN-CORE JCL.
SDTJOB4  EQU   128      BIT 0 - JOB STATEMENT.
SDTEXEC4 EQU   64       BIT 1 - EXEC STATEMENT.
SDTDD4   EQU   32       BIT 2 - DD STATEMENT.
SDTCONT4 EQU   16       BIT 3 - DD STATEMENT CONTINUATION
SDTJCLL4 DS    1C                 RESERVED
SDTJCL4  DS    72C      JCL STATEMENT.
         SPACE
SDTJCLS5 DS    1C       IDENTIFIER FLAGS FOR IN-CORE JCL.
SDTJOB5  EQU   128      BIT 0 - JOB STATEMENT.
SDTEXEC5 EQU   64       BIT 1 - EXEC STATEMENT.
SDTDD5   EQU   32       BIT 2 - DD STATEMENT.
SDTCONT5 EQU   16       BIT 3 - DD STATEMENT CONTINUATION
SDTJCLL5 DS    1C                 RESERVED
SDTJCL5  DS    72C      JCL STATEMENT.
         SPACE
SDTJCLS6 DS    1C       IDENTIFIER FLAGS FOR IN-CORE JCL.
SDTJOB6  EQU   128      BIT 0 - JOB STATEMENT.
SDTEXEC6 EQU   64       BIT 1 - EXEC STATEMENT.
SDTDD6   EQU   32       BIT 2 - DD STATEMENT.
SDTCONT6 EQU   16       BIT 3 - DD STATEMENT CONTINUATION
SDTJCLL6 DS    1C                 RESERVED
SDTJCL6  DS    72C      JCL STATEMENT.
         SPACE
SDTJCLS7 DS    1C   IDENTIFIER FLAGS FOR IN-CORE JCL            OCIP39A
SDTJOB   EQU   128  BIT 0 - JOB STATEMENT.                      OCIP39A
SDTEXEC  EQU   64   BIT 1 - EXEC STMT.                          OCIP39A
SDTDD    EQU   32   BIT 2 - DD STMT.                            OCIP39A
SDTCONT  EQU   16   BIT 3 - DD STMT. CONTINUATION               OCIP39A
SDTEXCON EQU   8    BIT 4 - EXEC STMT. CONTINUATION             OCIP39A
SDTJCLL7 DS    1C   RESERVED                                    OCIP39A
SDTJCL7  DS    72C  JCL STATEMENT                               OCIP39A
         SPACE
** * * * * * WORK AREA FOR IEEVSTAR KEYWORD SCANNING* * * *     OCIP39A
SDTEXPT  DS    F  PT.TO NEXT SLOT WITHIN CURRENT SDT EXEC       OCIP39A
*                   STMT.-USED FOR KEYWORD SCAN                 OCIP39A
SDTDDPT  DS    F    PT. TO NEXT SLOT WITHIN CURRENT SDT DD      OCIP39A
*                     STMT.-USED FOR KEYWORD SCAN               OCIP39A
SDTPAREN DS    F     PT. TO MAJOR KEYWORD(IN START BUFFER)      OCIP39A
*                     THAT FOLLOWS A MAJOR DD KEYWORD           OCIP39A
*                      ENCLOSED IN PARENTHESES                  OCIP39A
*                       =0 IF VALUE NOT ENCLOSED IN PARENS.     OCIP39A
SDTWORK  DS    F                  SDT WORK SPACE                 Y02669
         SPACE
SDTEND   EQU   *
SDTLN    EQU   SDTEND-SDTSDT      SDT LENGTH
         SPACE
         MEND
./ ADD NAME=IEESMFID
*/***  START OF SPECIFICATIONS  **************************************/
*/*                                                                  */
*/*  MODULE NAME = IEESMFID                                          */
*/*                                                                  */
*/*  DESCRIPTIVE NAME = MESSAGES INDEX TABLE CONSTANTS               */
*/*                                                                  */
*/*  FUNCTION = MAPPING MACRO FOR THE MESSAGES INDEX TABLE CONSTANTS */
*/*                                                                  */
*/*  NOTES = NONE                                                    */
*/*                                                                  */
*/*  MODULE TYPE = PLS MAPPING MACRO                                 */
*/*                                                                  */
*/*  METHOD OF INVOCATION                                            */
*/*    PLS - PERCENT INCLUDE(SYSLIB) IEESMFID                        */
*/*                                                                  */
*/*    BAL - NONE                                                    */
*/*                                                                  */
*/*  CHANGE ACTIVITY = SEE BELOW                                     */
*/*                                                                  */
*/*  A000000-999999                                          @G743PJK*/
*/*  JBB1226 - ADD MESSAGES FOR SSI CALLS                    @G383P26*/
*/*                                                                  */
*/****  END OF SPECIFICATIONS  ***************************************/
*/*                                                                  */
         DECLARE
           MID351I                  /* MSG ID - IEE351I             */
                 FIXED(31)          /* SYS1.MAN RECORDING NOT BEING */
                 CONSTANT(1),       /* USED                         */
           MID967I                  /* MSG ID - IEE967I             */
                 FIXED(31)          /* HH.MM.SS SMF PARAMETERS ID   */
                 CONSTANT(2),     /**/
           MID967I2                 /* MSG ID - IEE967I             */
                 FIXED(31)          /* XXXXXXXX -- XXXXXXXX         */
                 CONSTANT(3),       /*                              */
           MID967I3                 /* MSG ID - IEE967I             */
                 FIXED(31)          /* XXXXXXXX(XXXXX) -- XXXXXXXX  */
                 CONSTANT(4),       /*                              */
           MID967I4                 /* MSG ID - IEE967I             */
                 FIXED(31)          /*                              */
                 CONSTANT(5),       /*                              */
           MID357A                  /* MSG ID - IEE357A             */
                 FIXED(31)          /* REPLY WITH SMF VALUES OR U   */
                 CONSTANT(6),       /*                              */
           MID360I                  /* MSG ID - IEE360I             */
                 FIXED(31)          /* SMF NOW RECORDING ON SYS1.MAN*/
                 CONSTANT(7),       /* X ON AAAAAA TIME=XX:XX:XX    */
           MID361I                  /* MSG ID - IEE361I             */
                 FIXED(31)          /* SMF DATA LOST - NO DATA SETS */
                 CONSTANT(8),       /* AVAILABLE TIME=XX:XX:XX      */
           MID362A                  /* MSG ID - IEE362A             */
                 FIXED(31)          /* SMF ENTER DUMP FOR SYS1.MANX */
                 CONSTANT(9),       /* ON AAAAAA                    */
           MID364I                  /* MSG ID - IEE364I             */
                 FIXED(31)          /* SMF I/O ERROR ON AAAAAA      */
                 CONSTANT(10),      /*                              */
           MID480I                  /* MSG ID - IEE480I             */
                 FIXED(31)          /* SMF FAILED, TERMINATED       */
                 CONSTANT(11),      /*                              */
           MID480I2                 /* MSG ID - IEE480I             */
                 FIXED(31)          /* SMF ABEND XXX, DUMPED, TERM  */
                 CONSTANT(12),      /* INATED                       */
           MID940I                  /* MSG ID - IEE940I             */
                 FIXED(31)          /* SMF OPEN FAILED FOR XXXXXXXX */
                 CONSTANT(13),      /*                              */
           MID941I                  /* MSG ID - IEE3941             */
                 FIXED(31)          /* SMF MEMBER XXXXXXXX NOT      */
                 CONSTANT(14),      /* FOUND IN XXXXXXXXXX          */
           MID942I                  /* MSG ID - IEE942I             */
                 FIXED(31)          /* I/O ERROR ON SMFPRMXX READ - */
                 CONSTANT(15),      /* SYNAD TEXT FOLLOWS: XXXXXX   */
           MID943I                  /* MSG ID - IEE943I             */
                 FIXED(31)          /* SMF FIND ERROR CODE XXX ON   */
                 CONSTANT(16),      /* SMFPRMXX                     */
           MID944I                  /* MSG ID - IEE944I             */
                 FIXED(31)          /* SYNTAX ERROR IN OR FOLLOWING */
                 CONSTANT(17),      /* TEXT BEGINNING 'XXXX' IN     */
                                    /* XXXX INPUT                   */
           MID945I                  /* MSG ID - IEE945I             */
                 FIXED(31)          /* UNRECOGNIZABLE OPTION/SUB-   */
                 CONSTANT(18),      /* OPTION 'XXXX' IN XXXX INPUT  */
           MID946I                  /* MSG ID - IEE946I             */
                 FIXED(31)          /* UNEXPECTED END OF TEXT IN    */
                 CONSTANT(19),      /* XXXX INPUT                   */
           MID947I                  /* MSG ID - IEE947I             */
                 FIXED(31)          /* 'XXXX' SKIPPED DUE TO        */
                 CONSTANT(20),      /* PREVIOUS ERROR               */
           MID948I                  /* MSG ID - IEE948I             */
                 FIXED(31)          /* INVALID XXXX VALUE 'YYYY' IN */
                 CONSTANT(21),      /* ZZZZ INPUT                   */
           MID010I                  /* MSG ID - IFA010I             */
                 FIXED(31)          /* SMF DUMP PARAMETERS          */
                 CONSTANT(22),      /*                              */
           MID010I2                 /* MSG ID - IFA010I             */
                 FIXED(31)          /* XXXXXXXX -- XXXXXXXX         */
                 CONSTANT(23),      /*                              */
           MID010I3                 /* MSG ID - IFA010I             */
                 FIXED(31)          /* XXXXXXXX(XXXXX) -- XXXXXXXX  */
                 CONSTANT(24),      /*                              */
           MID011I                  /* MSG ID - IFA011I             */
                 FIXED(31)          /* SMF XXXXXXXX DATA SET        */
                 CONSTANT(25),      /* CANNOT BE XXXXXXXX.          */
           MID011I2                 /* MSG ID - IFA011I             */
                 FIXED(31)          /* JOB TERMINATED               */
                 CONSTANT(26),      /*                              */
           MID011I3                 /* MSG ID - IFA011I             */
                 FIXED(31)          /* NO FURTHER PROCESSING OF     */
                 CONSTANT(27),      /* THIS DATA SET                */
           MID011I4                 /* MSG ID - IFA011I             */
                 FIXED(31)          /* RETURN CODE=XX. FEEDBACK     */
                 CONSTANT(28),      /* CODE=XXXX.                   */
           MID012I                  /* MSG ID - IFA012I             */
                 FIXED(31)          /* DSORG OF XXXXXXXX CANNOT BE  */
                 CONSTANT(29),      /* DETERMINED                   */
           MID012I2                 /* MSG ID - IFA012I             */
                 FIXED(31)          /* JOB TERMINATED               */
                 CONSTANT(30),      /*                              */
           MID012I3                 /* MSG ID - IFA012I             */
                 FIXED(31)          /* NO FURTHER PROCESSING OF     */
                 CONSTANT(31),      /* THIS DATA SET                */
           MID013I                  /* MSG ID - IFA013I             */
                 FIXED(31)          /* 'CLEAR' OPTION IS VALID ONLY */
                 CONSTANT(32),      /* FOR VSAM DATA SETS. OPTION
                                       IGNORED FOR DDNAME XXXXXX    */
           MID014I                  /* MSG ID - IFA014I             */
                 FIXED(31)          /* SMF DUMP INITIALIZATION FAIL-*/
                 CONSTANT(33),      /* ED. JOB TERMINATED.          */
           MID015I                  /* MSG ID - IFA015I             */
                 FIXED(31)          /* SMF DUMP PROGRAM TERMINATED  */
                 CONSTANT(34),      /* ABNORMALLY. NO DATASETS WERE */
                                    /* CLEARED.                     */
           MID016I                  /* MSG ID - IFA016I             */
                 FIXED(31)          /* ERROR DETECTED IN USER EXIT  */
                 CONSTANT(35),      /* XXXXXXXX. EXIT BYPASSED.     */
           MID017I                  /* MSG ID - IFA017I             */
                 FIXED(31)          /* ERROR IN SMF DUMP SUMMARY    */
                 CONSTANT(36),      /* REPORT. REPORT TERMINATED.   */
           MID949I1                 /* MSG ID - IEE949I             */
                 FIXED(31)          /* HH.MM.SS SMF DATA SETS ID    */
                 CONSTANT(37),      /*                              */
           MID949I2                 /* MSG ID - IEE949I             */
                 FIXED(31)          /*     NAME    VOLSER SIZE(BLKS)*/
                 CONSTANT(38),      /*  %FULL STATUS                */
           MID949I3                 /* MSG ID - IEE949I             */
                 FIXED(31)          /*   XXXXXXXX  XXXXXX  XXXXXXX  */
                 CONSTANT(39),      /*   XXX    XXXXXXXXXX          */
           MID949I4                 /* MSG ID - IEE949I             */
                 FIXED(31)          /* NO TEXT (END OF MULTI-LINE)  */
                 CONSTANT(40),
           MID950I1                 /* MSG ID - IEE950I             */
                 FIXED(31)          /* SMF XXXXXXXX DATASET CANNOT  */
                 CONSTANT(41),      /* BE XXXXXXXXX                 */
           MID950I2                 /* MSG ID - IEE950I             */
                 FIXED(31)          /* RETURN CODE=XX. ERROR CODE=  */
                 CONSTANT(42),      /* XXXX. INFO. CODE=XXXXX       */
           MID951I                  /* MSG ID - IEE951I             */
                 FIXED(31)          /* DSORG OF XXXXXXXX DATASET IS */
                 CONSTANT(43),      /* NOT VSAM. DATASET CANNOT BE
                                       USED.                        */
           MID018I                  /* MSG ID - IFA018I             */
                 FIXED(31)          /* SMF DATA SET XXXXXXXX HAS    */
                 CONSTANT(44),      /* BEEN CLEARED.                */
           MID952I                  /* MSG ID - IEE952I             */
                 FIXED(31)          /* ERROR DETECTED IN USER EXIT  */
                 CONSTANT(45),      /* XXXXXXXX. EXIT BYPASSED.     */
           MID953I                  /* MSG ID - IEE953I             */
                 FIXED(31)          /* INVALID CONTROL INTERVAL     */
                 CONSTANT(46),      /* SIZE IN DATASET XXXXXXXX     */
           MID954I                  /* MSG ID - IEE954I             */
                 FIXED(31)          /* BUFNUM VALUE HAS BEEN        */
                 CONSTANT(47),      /* CHANGED TO XXXXXXX           */
           MID535I                  /* MSG ID - IEE535I             */
                 FIXED(31)          /* DISPLAY  INVALID PARAMETER   */
                 CONSTANT(48),
           MID955I                  /* MSG ID - IEE955I             */
                 FIXED(31)          /* SPECIFY IPL REASON           */
                 CONSTANT(49),
           MID956A                  /* MSG ID - IEE956I             */
                 FIXED(31)          /* REPLY - FTIME=HH.MM.SS,NAME= */
                 CONSTANT(50),      /* OPERATOR,REASON=(IPL REASON)
                                       OR U                         */
           MID957I                  /* MSG ID - IEE957I             */
                 FIXED(31)          /* SYNTAX ERROR IN IPL REASON   */
                 CONSTANT(51),      /* REPLY - RESPECIFY            */
           MID362I                  /* MSG ID - IEE362I             */
                 FIXED(31)          /* SMF ENTER DUMP FOR SYS1.MANX */
                 CONSTANT(52),      /* ON AAAAAA                    */
           MID961I                  /* MSG ID - IEE961I             */
                 FIXED(31)          /* SMF INITIALIZATION FAILED    */
                 CONSTANT(53),
           MID960I                  /* MSG ID - IEE960I             */
                 FIXED(31)          /* SMF1.MANX WILL NOT BE USED.  */
                 CONSTANT(54),      /* DATASET TOO SMALL            */
           MID958I                  /* MSG ID - IEE958I             */
                 FIXED(31)          /* MAXIMUM NUMBER OF SUBSYSTEMS */
                 CONSTANT(55),      /* EXCEEDED.                    */
           MID958I2                 /* MSG ID - IEE958I             */
                 FIXED(31)          /* SUBSYS XXXX IGNORED.         */
                 CONSTANT(56),
           MID958I3                 /* MSG ID - IEE958I             */
                 FIXED(31)          /* SET SMF COMMAND TERMINATED.  */
                 CONSTANT(57),      /* OLD OPTIONS REMAIN IN EFFECT */
           MID962E                  /* MSG ID - IEE962I             */
                 FIXED(31)          /* SMF TERMINATED.              */
                 CONSTANT(58),
           MID963I                  /* MSG ID - IEE963I             */
                 FIXED(31)          /* SMF RECOVERY ATTEMPTING      */
                 CONSTANT(59),      /* RETRY                        */
           MID964I                  /* MSG ID - IEE964I             */
                 FIXED(31)          /* SET SMF COMMAND ABENDED      */
                 CONSTANT(60),
           MID964I2                 /* MSG ID - IEE964I             */
                 FIXED(31)          /* OLD OPTIONS REMAIN IN EFFECT */
                 CONSTANT(61),
           MID964I3                 /* MSG ID - IEE964I             */
                 FIXED(31)          /* OPTIONS IN EFFECT            */
                 CONSTANT(62),      /* UNDETERMINABLE               */
           MID964I4                 /* MSG ID - IEE964I             */
                 FIXED(31)          /* NEW OPTIONS IN EFFECT        */
                 CONSTANT(63),
           MID965I                  /* MSG ID - IEE965I             */
                 FIXED(31)          /* SET SMF COMMAND INOPERATIVE  */
                 CONSTANT(64),      /* FOR REMAINDER OF IPL         */
           MID966I                  /* MSG ID - IEE966I             */
                 FIXED(31)          /* XXXXXXXXX IS BEING FORMATTED */
                 CONSTANT(65),      /* FOR REMAINDER OF IPL         */
           MID967I5                 /* MSG ID - IEE967I             */
                 FIXED(31)          /* MEMBER = SMFPRMXX            */
                 CONSTANT(66),      /*                              */
           MID962I                  /* MSG ID - IEE962              */
                 FIXED(31)          /* SMF TERMINATED               */
                 CONSTANT(67),
           MID019I                  /* MSG ID - IFA019I             */
                 FIXED(31)          /* CLEAR FUNCTION IS NOT AUTHOR */
                 CONSTANT(68),      /* IZED IN THIS ENVIRONMENT     */
           MID968I                  /* MSG ID - IEE968I     @G383P26*/
                 FIXED(31)          /* NOTIFICATION OF SUBSYS XXXX  */
                 CONSTANT(69),      /* REJECTED                     */
           MID968I2                 /* MSG ID - IEE968I     @G383P26*/
                 FIXED(31)          /* SUBSYSTEM DOES NOT SUPPORT   */
                 CONSTANT(70),      /* THIS FUNCTION                */
           MID968I3                 /* MSG ID - IEE968I     @G383P26*/
                 FIXED(31)          /* SUBSYSTEM IS NOT OPERATIONAL */
                 CONSTANT(71),
           MID968I4                 /* MSG ID - IEE968I     @G383P26*/
                 FIXED(31)          /* SUBSYSTEM DOES NOT EXIST     */
                 CONSTANT(72),
           MID968I5                 /* MSG ID - IEE968I     @G383P26*/
                 FIXED(31)          /* SYSTEM ERROR                 */
                 CONSTANT(73),      /*                              */
           MID969I                  /* MSG ID - IEE969I     @G383P26*/
                 FIXED(31)          /* SETSMF COMMAND ABENDED       */
                 CONSTANT(74),
           MID969I2                 /* MSG ID - IEE969I     @G383P26*/
                 FIXED(31)          /* OLD OPTIONS REMAIN IN EFFECT */
                 CONSTANT(75),
           MID969I3                 /* MSG ID - IEE969I     @G383P26*/
                 FIXED(31)          /* OPTIONS IN EFFECT            */
                 CONSTANT(76),      /* UNDETERMINABLE               */
           MID969I4                 /* MSG ID - IEE969I     @G383P26*/
                 FIXED(31)          /* NEW OPTIONS IN EFFECT        */
                 CONSTANT(77),
           MID970I                  /* MSG ID - IEE970I     @G383P26*/
                 FIXED(31)          /* SETSMF COMMAND NOT AUTHORIZED*/
                 CONSTANT(78),
           MID971I                  /* MSG ID - IEE971I     @G383P26*/
                 FIXED(31)          /* XXXX KEYWORDS IGNORED - ONLY */
                 CONSTANT(79),      /* ONE SUBSYSTEM CAN BE CHANGED */
           MID712I                  /* MSG ID - IEE712I     @G383P26*/
                 FIXED(31)          /* SETSMF PROCESSING COMPLETE   */
                 CONSTANT(80),
           MID972I                  /* MSG ID - IEE972I     @G383P26*/
                 FIXED(31)          /* SETSMF CANNOT BE USER TO     */
                 CONSTANT(81),      /* CHANGE XXXXX                 */
           MID973I                  /* MSG ID - IEE973I     @G385P26*/
                 FIXED(31)          /* DATA SET CHANGE REQUEST IS   */
                 CONSTANT(82)       /* IGNORED.                     */
         ;
./ ADD NAME=IEESMFML
     /* INPUT PARAMETER LIST FOR IEEMB824 - SMF MESSAGE MODULE */
*%IF DSECT='YES' %THEN
*   %GOTO ISBASED;
*%ELSE
*   %GOTO NOTBASED;
*%ISBASED : ;
*DECLARE
*  1 MSGLIST  BASED,
*%GOTO START ;
*%NOTBASED : ;
*DCL
*  1 MSGLIST BDY(WORD),
*%START : ;
     2 MPDCBADP PTR(31),            /* POINTER TO MESSAGE DCB       */
     2 MPCONSID CHAR(1),            /* CONSOLE ID, IF NOT MASTER    */
     2 MPCNAREA CHAR(1),            /* CONSOLE AREA                 */
     2 * CHAR(2),
       3 MPOTHCON BIT(1),           /* IF ON, OTHER CONSOLE         */
       3 * BIT(15),                 /* RESERVED                     */
     2 MPMLBLK,                     /* POINTER FOR MULTI-LINE WTO'S */
       3 MLFSTBLK PTR(31),          /* POINTER TO FIRST BLOCK       */
       3 MLCURBLK PTR(31),          /* POINTER TO CURRENT BLOCK     */
     2 MPDOMID FIXED(31),           /* MESSAGE ID TO DOM            */
     2 MPREPBUF,                    /* MESSAGE REPLY BUFFER         */
       3 * CHAR(4),                 /* RESERVED                     */
       3 MPREPLEN FIXED(15),        /* REPLY LENGTH                 */
       3 MPREPTXT CHAR(119);        /* REPLY TEXT                   */
./ ADD NAME=IEETDCM
*       %GOTO DCMPROLG;            /*                        @G811PSS
        MACRO
        IEETDCM
        SPACE 1                                              @G811PSS*/
*%DCMPROLG:;                       /*                        @G811PSS*/
*/********************************************************************/
*/*                                                          @G811PSS*/
*/*                      IEETDCM                             @G811PSS*/
*/*                                                          @G811PSS*/
*/*        PAGEABLE DISPLAY CONTROL MODULE MAPPING MACRO     @G811PSS*/
*/*                                                          @G811PSS*/
*/* COPYRIGHT  -                                                 @L2A*/
*/*           5740-XYN COPYRIGHT IBM CORP 1980, 1982,                */
*/*           LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,            */
*/*           REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083. */
*/*                                                                  */
*/* STATUS  - OS/VS2 JBB1328                                     @L2A*/
*/*                                                          @G811PSS*/
*/* INVOCATION - SPECIFY FOR BAL: IEETDCM                    @G811PSS*/
*/*                      FOR PLS: %INCLUDE SYSLIB(IEETDCM)   @G811PSS*/
*/*                                                          @G811PSS*/
*/* FUNCTION   - THIS MACRO MAPS THE PAGEABLE DISPLAY        @G811PSS*/
*/*              CONTROL MODULE (TDCM).                      @G811PSS*/
*/*                                                          @G811PSS*/
*/* CREATED-BY    = IEECVET1                                     @L2A*/
*/*                                                              @L2A*/
*/* POINTED-TO-BY = DCMADTRN IN RDCM                             @L2A*/
*/*                                                              @L2A*/
*/* SERIALIZATION = LOCAL AND CMS LOCKS                          @L2A*/
*/*                                                              @L2A*/
*/* LOCATION      =                                              @L2A*/
*/*           MAIN STORAGE = SUBPOOL 229 KEY 0 IN COMM TASK ASID @L2A*/
*/*           AUXILIARY STORAGE = N/A                            @L2A*/
*/*                                                              @L2A*/
*/* CHANGE                                                   @G811PSS*/
*/*   ACTIVITY - G811PSS,ZA44483                             @G811PSS*/
*/* $L1=CONCOLOR, JBB1326,  801205,  PDSS: BASE COLOR SUPPORT        */
*/* $L2=OCCF,     JBB1328,  810615,  PDSJ: ROUTABLE K S              */
*/*                                                          @G811PSS*/
*/********************************************************************/
*        %GOTO DCMPBSL;                                              /*
.* D (DCMIRCTR,DCMMSGDM,DCMMSGIR,DCMMSGWR,DCMDSINR)                @L1A
.* A (DCMMSGR1,DCMMSGR2,DCMMSGUA,DCMMSGEA)                         @L1A
.* A (DCMDELFC,DCMSEGFC,DCMCONFC,DCMRNUMF,DCMRTMEF,DCMMFRMF)       @L2A
.* A (DCMDELMS,DCMSEGMS,DCMCONMS,DCMRNUMM,DCMRTMEM,DCMMFRMM)       @L2A
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        WORK AND SAVE AREAS                                          *
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMSTRT  DSECT DCMSTPTR
DCMOACRO DS    0F                  CNTL BLK ACRONYM 'TDCM' AFTER OPEN  X
                                                               @G811PSS
         DS    H                   TDCM LENGTH BEFORE OPEN     @G811PSS
         DS    H                   PADDING FOR LENGTH          @G811PSS
         SPACE 1                                               @G811PSS
DCMFLG1  DS    BL1                 TDCM AREA INDICATORS
DCMOUTPT EQU   X'02'               TDCM UPDATED FOR OUTPUT ONLY
         SPACE 1                                               @G811PSS
DCMATI   DS    XL1                 SAVED UCB ATTN INDEX        @G811PSS
         DS    AL2                 RESERVED                    @G811PSS
         SPACE 1                                               @G811PSS
DCMWTINT DS    A                   DCMWTINT INITIAL VALUE
DCMLNCNT DS    H                   NUMBER OF LINES TO BLANK  MC SA53462
DCMLNNUM DS    XL1                 FIRST LINE TO BLANK         @G811PSS
         DS    XL1                 RESERVED                    @G811PSS
DCMPACK  DS    F                   AREA TO PLACE NUMBER FOR PACKING
DCMCVBIN DS    F                   AREA FOR CONVERSION TO BINARY
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        TIMER COMMUNICATION FIELD                             @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMTIMES DS    BL1                 TIME RTNS INDICATOR BYTE
DCMTIMER EQU   X'80'               TIME ELAPSED FOR THIS DISPLAY
DCMOPTTI EQU   X'40'               OPTIONS TO TI RTN
DCMOTTMM EQU   X'10'               OPTIONS OR TI RTNS TO MSG MODULE
DCMTASYN EQU   X'04'               TIMER SET FOR ASYNC ERROR MSG
DCMOCTTI EQU   X'02'               OPEN-CLOSE TO TI RTN
DCMRMTTI EQU   X'01'               ROLL MODE TO TIMER ROUTINE
         SPACE 1                                               @G811PSS
         DS    XL1                 RESERVED
         SPACE 1                                               @G811PSS
DCMELGN  DS    H                   ENTRY AREA LAST CHARACTER POINTER
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        ADDRESS TABLE                                         @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMBUFAD DS    A                   POINTER TO BUFFER ADDRESS TABLE
DCMDOMPK DS    A                   ADDRESS OF FIRST DOM NUMBER
DCMAMTAB DS    A                   ADDRESS OF FIRST SCT ENTRY
DCMADSEC DS    A                   ADDRESS OF FIRST SSCT ENTRY
DCMADDRL DS    A                   ADDRESS OF LAST SCT ENTRY
DCMASCRN DS    A                   POINTER TO SCREEN IMAGE BUFFER
DCMLSCRN DS    A                   POINTER TO LAST BUFFER LINE
DCMWTBUF DS    A                   SCREEN LENGTH POINTER
DCMAINS  DS    A                   POINTER TO INSTRUCTION LINE
DCMAENTR DS    A                   POINTER TO ENTRY AREA
DCMAWARN DS    A                   POINTER TO WARNING LINE
DCMADCHP DS    A                   ADDRESS OF CHANNEL PROGRAM AREA
DCMPFKLN DS    A                   POINTER TO PFK LINE
         SPACE 1                                               @G811PSS
DCMCXSVE DS    F                   CXSA SAVE AREA
DCMADOPN DS    A                   ADDRESS OF COMMAND OPERAND
         SPACE 1                                               @G811PSS
DCMDSAV  DS    5F                  SAVE AND WORK AREA
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        INPUT BUFFER FOR ISSUING SVC 34 AND SVC 35                   *
*        FIELDS DCMWQEXP THROUGH DCMINPUT MUST REMAIN IN ORDER        *
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMWQEXP DS    0F                  ENSURE FULL WORD BOUNDARY
DCMINLGN DS    H                   FIELD FOR INPUT LENGTH
DCMMCSFL DS    H                   MCS FLAGS FIELD
DCMINPUT DS    32F                 INPUT MESSAGE TEXT
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        GENERAL LENGTH VALUES                                 @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMLGNTH DS    H                   LENGTH OF A LINE
DCMBAINC DS    H                   ADDRESS TO INSERT CURSOR
         DS    H                   RESERVED - WAS DCMIRCTR         @L1A
DCMBADLN DS    H                   BUFFER ADDR TO BEGIN MSG WRITE
DCMBYTCT DS    H                   NUMBER OF BYTES TO WRITE
DCMADNUM DS    H                   NEXT LINE NUMBER
DCMAXLGN DS    H                   MAXIMUM LINE LENGTH
DCMMSGAL DS    H                   NUMBER OF LINES IN MESSAGE AREA
DCMRMINC DS    H                   INCREMENT INTO RMI
DCMSCTCN DS    H                   LENGTH OF ONE SCT ENTRY
DCMCORLN DS    H                   LENGTH OF TDCM LINE IN CORE
         DS    H                   TIME COUNTER
DCMPFKNM DS    XL1                 NUMBER OF KEY BEING PROCESSED
DCMPFKKN DS    XL1                 LIST KEY NUMBER
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        VALUES FOR OPTIONS                                    @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMDEL   DS    CL2                 DEL VALUE
DCMCON   DS    CL1                 CON VALUE
DCMSEG   DS    FL1                 SEG VALUE
DCMDL    DS    FL1                 DISPLAY AREA OPTION
DCMRNUM  DS    FL1                 ROLL NUMBER VALUE
DCMRTME  DS    H                   ROLL TIME VALUE
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        DEFAULT VALUES FOR OPTIONS                                   *
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMSEGDF DS    FL1                 SEG DEFAULT
DCMRNUMD DS    FL1                 RNUM DEFAULT
DCMRTMED DS    H                   RTME DEFAULT
         SPACE 1                                               @G811PSS
         DS    XL5                 RESERVED                    @G811PSS
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        COMMUNICATIONS AREAS                                         *
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMOPTST DS    BL1                 STATUS OF SCREEN CONTROL OPTIONS
DCMOPTVR EQU   X'80'               DELETE VERIFICATION  CON=(Y=1,N=0)
DCMOPTAD EQU   X'40'               AUTOMATIC DELETION   DEL=(Y=1,N=0)
DCMOPTSG EQU   X'20'               DEFAULT SEGMENT SPECIFIED  SEG=(0=0)
DCMOPRLL EQU   X'10'               ROLL MODE  (Y=1,N=0)
         SPACE 1                                               @G811PSS
DCMCS    DS    BL1                 OPEN/CLOSE REQUEST
DCMCSC   EQU   X'80'               CLOSE REQUEST
DCMCSO   EQU   X'40'               OPEN REQUEST
         SPACE 1                                               @G811PSS
DCMUTILT DS    BL1                 INTERNAL FLAGS              @G811PSS
DCMUTILA EQU   X'80'               THESE BITS ARE
DCMUTILB EQU   X'40'                 INITIALIZED AND USED
DCMUTILC EQU   X'20'                 SOLELY WITHIN
DCMUTILD EQU   X'10'                 EACH MODULE
DCMUTILE EQU   X'08'               THEY ARE NEVER
DCMUTILF EQU   X'04'               USED FOR INTERFACE
DCMTEST1 EQU   X'02'               FOR TESTING
DCMTEST2 EQU   X'01'               FOR TESTING
         SPACE 1                                               @G811PSS
DCMDSTAT DS    BL1                 CURRENT DISPLAY STATUS
DCMDSTNM EQU   X'20'               MESSAGES ARE NUMBERED
DCMDSTNH EQU   X'10'               MSGS NUMBERED - HOLD OPTION
.* X'08' WAS DCMDSINR - INTERVENTION REQ'D DELETION TRIED          @L1A
DCMDSAUT EQU   X'04'               AUTOMATIC DELETION TRIED
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        MCS INTERFACE FIELD                                   @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMMCSST DS    BL1                 MCS INTERFACE BYTE
DCMDUSE  EQU   X'80'               DIDOCS IN CONTROL           @G811PSS
DCMOOMSS EQU   X'04'               MESSAGE STREAM ENTRY
DCMOOSDS EQU   X'01'               STATUS DISPLAY ENTRY
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        UNIQUE INTERFACE FIELD                                @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMIOUNQ DS    BL1                 UNIQUE IO BYTE
DCMIO226 EQU   X'80'               RMI PERFORMED
DCMRPCUR EQU   X'40'               ADVANCE CURSOR TO BLANKS
DCMFRSCN EQU   X'20'               PUT OUTPUT IN HOLD MODE
DCMRDARM EQU   X'10'               PERFORM READ AFTER RMI
DCMW2250 EQU   X'08'               DEVICE HAS LIGHT PEN        @G811PSS
DCMINNOR EQU   X'04'               NORMAL INSTRUCTION LINE
DCMINERR EQU   X'02'               ERROR INSTRUCTION LINE
DCMEWASP EQU   X'01'               ERASE/WRITE ALTERNATE COMMAND       X
                                   SUPPORTED                   @G811PSS
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        I/O COMMUNICATION FIELDS                              @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMIOCM1 DS    BL1                 IO COMMUNICATIONS BYTE 1
DCMDORMI EQU   X'80'               ISSUE RMI
DCMSOUND EQU   X'40'               SOUND ALARM
DCMWRWRN EQU   X'20'               WRITE WARNING LINE
DCMWRMSG EQU   X'10'               WRITE FULL MESSAGE AREA
DCMWRPAR EQU   X'08'               WRITE PARTIAL MESSAGE AREA
DCMWRINS EQU   X'04'               WRITE INSTRUCTION LINE
DCMWRENT EQU   X'02'               WRITE ENTRY AREA
DCMINSC  EQU   X'01'               INSERT CURSOR
         SPACE 1                                               @G811PSS
DCMIOCM2 DS    BL1                 IO COMMUNICATIONS BYTE 2
DCMBLENT EQU   X'80'               BLANK ENTRY AREA
DCMBLWRL EQU   X'40'               BLANK LEFT HALF WARNING LINE
DCMBLWRR EQU   X'20'               BLANK RIGHT HALF WARNING LINE
DCMINSSH EQU   X'10'               INIT AND SHIFT INSTRUCTION LINE
DCMWINFD EQU   X'08'               WRITE INFORMATIONAL DISPLAY
DCMERASE EQU   X'04'               PERFORM ERASE
DCMIOCRD EQU   X'02'               PERFORM READ (2250,22DOC)
DCMWRASY EQU   X'01'               WRITE ASYNC ERROR MSG TO MID-SCREEN
         SPACE 1                                               @G811PSS
DCMIOCM3 DS    BL1                 IO COMMUNICATIONS BYTE 3
DCMOPRMI EQU   X'80'               RMI AFTER OPEN TO UNLOCK KEYBOARD
DCMSSRG  EQU   X'40'               SUPPRESS START REGENERATION
DCMEWAND EQU   X'20'               ERASE/WRITE ALTERNATE COMMAND       X
                                   NEEDED                      @G811PSS
DCMWRPFK EQU   X'10'               TDCM WRITE PFK AREA
DCMPFKAT EQU   X'08'               PFK ATTENTION
DCMRDPFK EQU   X'04'               PFK AREA READ
DCMACPFK EQU   X'02'               EXTINGUISH PFK LIGHTS       @G811PSS
DCMLTPFK EQU   X'01'               LIGHT ALL ALLOCATED PFK LIGHTS      X
                                                               @G811PSS
         SPACE 1                                               @G811PSS
DCMLINEN DS    XL1                 LINE NUMBER TO BEGIN WRITE
DCMCULNO DS    XL1                 LINE IN ENTRY AREA TO INSERT CURSOR
DCMPOSCU DS    XL1                 POSITION TO INSERT CURSOR
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        ASYNCHRONOUS ERROR COMMUNICATIONS FIELD               @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMASYNC DS    BL1                 ASYN ERROR COMMUNICATIONS/RETRY BYTE
DCMASDA  EQU   X'40'               DATA CHECK RETRY BIT        @G811PSS
DCMASIN  EQU   X'20'               INVALID BUFFER ADDR CHECK RETRY BIT X
                                                               @G811PSS
DCMASBA  EQU   X'10'               BUFFER ADDR PARITY CHECK RETRY BIT  X
                                                               @G811PSS
DCMASEWA EQU   X'08'               PERMANENT ERROR ON EWA DEVICE       X
                                   RETRIED                     @G811PSS
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        COMMUNICATION FIELDS                                  @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMCOM1  DS    BL1                 COMMUNICATIONS BYTE
DCMLPENT EQU   X'80'               ENTER BY LP OR CURSOR
DCMIOPRD EQU   X'40'               READ PERFORMED
DCMCOMRM EQU   X'20'               RMI PERFORMED
DCMCOMAU EQU   X'10'               PERFORM AUTO DELETE
DCMCOMRD EQU   X'08'               PERFORM REGULAR DELETE
DCMCOMNM EQU   X'04'               NUMBER MESSAGES
DCMCLEAR EQU   X'02'               CLEAR KEY WAS PRESSED       @G811PSS
DCMCANCL EQU   X'01'               INDICATE CANCEL TO COMMAND ROUTINE
         SPACE 1                                               @G811PSS
DCMCOM2  DS    BL1                 COMMUNICATIONS BYTE
DCMCM2I  EQU   X'80'               INPUT TO BE PROCESSED
DCMSPLIT EQU   X'40'               MSG TO BE SPLIT
DCMCOMAR EQU   X'20'               ACCEPTED REPLY
DCMREPLC EQU   X'10'               REPEAT LAST COMMAND KEY (PA1)       X
                                   PRESSED                     @G811PSS
DCMERPF  EQU   X'08'               ERASE PERF-PROC CAN NOW CLOSE DEVICE
DCMCMIN5 EQU   X'04'               RETURN TO INTER. 5 FOR BLNK
DCMCBLNK EQU   X'02'               BLANKING REQUIRED
DCMAE    EQU   X'01'               CLEANUP FOR ASY ERROR
         SPACE 1                                               @G811PSS
DCMCOM3  DS    BL1                 COMMUNICATIONS BYTE
DCMCDSP3 EQU   X'80'               DISPLAY 3 COMPLETED WORK
DCMRTPFK EQU   X'40'               RETURN TO PFK ROUTINE
DCMVLPFK EQU   X'20'               VERIFYING LAST COMMAND
DCMXINT1 EQU   X'10'               ENTRY FOR INTERFACE 1 ROUTINE
DCMOLUNV EQU   X'08'               O-O-L MSG CAUSED UNVIEW. MSG.
DCMPFKWR EQU   X'04'               WRITE PFK UPDATES TO LIB
DCMOLHLD EQU   X'02'               OUT OF LINE MESSAGES HELD  MB Y02958
DCMCMIN7 EQU   X'01'               RETURN TO INTER. 7 FOR BLANKING
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        MESSAGE MODULES COMMUNICATION FIELDS                  @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMCMSG1 DS    BL1                 MSG MODULE COMMUNICATIONS BYTE 1
DCMMSGWT EQU   X'80'               MOVE IN MESSAGE WAITING
DCMUNMSG EQU   X'40'               MOVE IN UNVIEWABLE MESSAGE
DCMSTEX  EQU   X'20'               MOVE IN STATUS EXISTS
DCMCHOPT EQU   X'10'               MOVE IN CHANGE OPTIONS
DCMELONG EQU   X'08'               MOVE IN ENTRY TOO LONG
DCMWRCDL EQU   X'04'               MOVE IN CON=N,DEL=Y
DCMDELNT EQU   X'02'               MOVE IN DEL UNCHANGED, NO TIMER
         SPACE 1                                               @G811PSS
DCMCMSG2 DS    BL1                 MSG MODULE COMMUNICATIONS BYTE 2
DCMDLREQ EQU   X'80'               MOVE IN DELETION REQUESTED
DCMRQINC EQU   X'40'               MOVE IN REQUEST INCONSISTENT
DCMMSGCR EQU   X'20'               MOVE IN INVALID CURSOR OPERATION
DCMINVOP EQU   X'10'               MOVE IN INVALID OPERAND
DCMCILLP EQU   X'08'               MOVE IN ILLEGAL LP OPERATION
DCMDELRI EQU   X'04'               MOVE IN DELETE REQUEST INCONSISTANT
DCMASYRT EQU   X'02'               MOVE IN ASYN ERROR RETRYABLE
DCMASYCD EQU   X'01'               MOVE IN ASYN ERROR MAYBE RETRYABLE
         SPACE 1                                               @G811PSS
DCMCMSG3 DS    BL1                 MSG MODULE COMMUNICATIONS BYTE 3
DCMCMRLL EQU   X'80'               MOVE IN ROLL MODE MESSAGE
DCMCDLR1 EQU   X'40'               NO DELETABLE MESSAGES
DCMCDLR2 EQU   X'20'               INVALID RANGE
DCMCDLR3 EQU   X'10'               SEG EQU TO ZERO
DCMCDLR4 EQU   X'08'               DISPLAY NOT ON SCREEN
DCMCDLR5 EQU   X'04'               INVALID OPERAND
DCMDTBSY EQU   X'01'               COMMAND REJECTED - TASK BUSY
         SPACE 1                                               @G811PSS
DCMCMSG4 DS    BL1                 MSG MODULE COMMUNICATIONS BYTE 4
DCMPFKNA EQU   X'80'               MOVE IN PFK NOT ALLOCATED FOR
DCMPFKND EQU   X'40'               MOVE IN PFK NOT DEFINED
DCMPFKNO EQU   X'20'               MOVE IN NO PFK ALLOCATION
DCMPFKIP EQU   X'10'               MOVE IN PFK IN PROCESS
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        SVC 34 COMMUNICATIONS FIELD                           @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMSVC34 DS    BL1                 SVC 34 COMMUNICATION BYTE
DCMMYCMD EQU   X'80'               COMMAND TO BE HANDLED BY THIS CONS
DCMINVLD EQU   X'40'               INVALID K COMMAND
DCMTYPE1 EQU   X'20'               K COMMAND IS NOT ROUTABLE
         SPACE 1                                               @G811PSS
DCMCOM4  DS    BL1                  COMMUNICATION BYTE 4       @ZA44483
DCMCNTRL EQU   X'80'                CONTROL LINE INDICATOR     @ZA44483
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        INDEX FOR I/O ROUTINE                                 @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMIONDX DS    XL1                 INDEX FOR SELECTING THE    MB Y02958
*                                  APPROPRIATE I/O ROUTINE    MB Y02958
*                                  X'04' - 3066-IEECVETH       @G811PSS
*                                  X'08' - 2250-IEECVETP       @G811PSS
*                                  X'0C' - 2260-IEECVETR       @G811PSS
*                                  X'10' - 3277 TYPE DEVICE -  @G811PSS
*                                               IEECVETU       @G811PSS
         SPACE 1                                               @G811PSS
DCMTEST  DS    H                   RESERVED FOR TESTING       MB Y02958
         EJECT
***********************************************************************
*                                                                     *
*        MODULE ADDRESSES                                             *
*                                                                     *
***********************************************************************
         SPACE 1                                              MB Y02958
DCMIORTN DS    F                   APPROPRIATE I/O ROUTINE    MB Y02958
*                  NAME   TRACE ID   DESCRIPTION              MB Y02958
*                 IEECVETH    EH   3066 IO ROUTINE             @G811PSS
*                 IEECVETP    EP   2250 IO ROUTINE            MB Y02958
*                 IEECVETR    ER   2260 IO ROUTINE            MB Y02958
*                 IEECVETU    EU   3277 TYPE DEVICE IO ROUTINE @G811PSS
         SPACE 1                                              MB Y02958
*                  NAME   TRACE ID   DESCRIPTION              MB Y02958
DCMNPRZ  DS    F  IEECVFT1    F1   PROCESSOR 0 LOAD ONE       MB Y02958
DCMNPROC DS    F  IEECVET1    E1   PROCESSOR ROUTINE LOAD ONE MB Y02958
DCMNDSP1 DS    F  IEECVET2    E2   DISPLAY ROUTINE 1          MB Y02958
DCMNDSP2 DS    F  IEECVET3    E3   DISPLAY ROUTINE 2          MB Y02958
DCMNDSP3 DS    F  IEECVFT2    F2   DISPLAY ROUTINE 3          MB Y02958
DCMNCMD1 DS    F  IEECVET4    E4   COMMAND ROUTINE 1          MB Y02958
DCMNDEL1 DS    F  IEECVET6    E6   DELETE ROUTINE 1           MB Y02958
DCMNDEL2 DS    F  IEECVET7    E7   DELETE ROUTINE 2           MB Y02958
DCMNDEL3 DS    F  IEECVET8    E8   DELETE ROUTINE 3           MB Y02958
DCMNDEL4 DS    F  IEECVET9    E9   DELETE ROUTINE 4           MB Y02958
DCMNOPT1 DS    F  IEECVETA    EA   OPTIONS ROUTINE 1          MB Y02958
DCMNPFK1 DS    F  IEECVFTA    FA   PFK ROUTINE 1              MB Y02958
DCMNPFK2 DS    F  IEECVFTB    FB   PFK ROUTINE 2              MB Y02958
DCMNERRO DS    F  IEECVETC    EC   ASYNCHRONOUS ERROR ROUTINE MB Y02958
DCMNMSG1 DS    F  IEECVETD    ED   MESSAGE ROUTINE 1          MB Y02958
DCMNMSG2 DS    F  IEECVETE    EE   MESSAGE ROUTINE 2          MB Y02958
DCMNMSG3 DS    F  IEECVFTD    FD   MESSAGE ROUTINE 3          MB Y02958
DCMNLPCR DS    F  IEECVETF    EF   LIGHT PEN/CURSOR SERVICE   MB Y02958
DCMNOPCL DS    F  IEECVETG    EG   OPEN-CLOSE ROUTINE         MB Y02958
DCMNCLN  DS    F  IEECVFTG    FG   CLEANUP MODULE             MB Y02958
DCMNROLL DS    F  IEECVETJ    EJ   ROLL MODE ROUTINE          MB Y02958
DCMNTIMR DS    F  IEECVETK    EK   TIMER INTERPRETER ROUTINE  MB Y02958
DCMNINT1 DS    F  IEECVFTL    FL   INTERFACE 1 ROUTINE        MB Y02958
DCMNINT2 DS    F  IEECVFTM    FM   INTERFACE 2 ROUTINE        MB Y02958
DCMNINT3 DS    F  IEECVFTN    FN   INTERFACE 3 ROUTINE        MB Y02958
DCMNINT4 DS    F  IEECVFTO    FO   INTERFACE 4 ROUTINE        MB Y02958
DCMNINT5 DS    F  IEECVFTP    FP   INTERFACE 5 ROUTINE        MB Y02958
DCMNINT6 DS    F  IEECVFTQ    FQ   INTERFACE 6 ROUTINE        MB Y02958
DCMNINT7 DS    F  IEECVFTT    FT   INTERFACE 7 ROUTINE        MB Y02958
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        DIDOCS MODULE TRACE AREA                              @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMTRACE DS    CL30                DIDOCS MODULE TRACE AREA   MB Y02958
DCMTRAC2 EQU   DCMTRACE+2          TRACE MOVE FROM-ADDRESS    MB Y02958
DCMTRLEN EQU   *-DCMTRACE          LENGTH FOR TRACE MOVE      MB Y02958
DCMTREN1 DS    C                   1ST BYTE OF TRACE ENTRY    MB Y02958
DCMTREN2 DS    C                   2ND BYTE OF TRACE ENTRY    MB Y02958
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        FOLLOWING GROUP OF BYTES ARE DEVICE DEPENDENT         @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMASKEN DS    XL1                 ENTER MASK
DCMASKCN DS    XL1                 CANCEL MASK
DCMASKCR DS    XL1                 CURSOR MASK
DCMASKLP DS    XL1                 LIGHT PEN MASK
DCMSKPF1 DS    XL1                 1ST PFK TYPE MASK           @G811PSS
DCMSKPF2 DS    XL1                 2ND PFK TYPE MASK           @G811PSS
DCMSKPF3 DS    XL1                 3RD PFK TYPE MASK           @G811PSS
DCMSKPF4 DS    XL1                 4TH PFK TYPE MASK           @G811PSS
DCMASKCL DS    XL1                 CLEAR KEY MASK              @G811PSS
DCMSKPA1 DS    XL1                 PA1 KEY MASK                @G811PSS
DCMSKPA3 DS    XL1                 PA3 KEY MASK                @G811PSS
         DS    5XL1                RESERVED                    @G811PSS
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        ADDRESSES OF PARTS OF THE SCREEN IMAGE BUFFER WHEN IN @G811PSS
*        FULL CAPABILITY MODE                                  @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMSADCN EQU   *                  FIRST ADCON IN LIST          @G811PSS
DCMFLLA  DS    A                  LAST LINE IN MSG AREA        @G811PSS
DCMFLL1A DS    A                  LAST LINE IN MSG AREA + 1    @G811PSS
DCMFLSCT DS    A                  SCT FOR LAST LINE IN MSG             X
                                  AREA                         @G811PSS
DCMFSCT1 DS    A                  SCT FOR LAST LINE IN MSG AREA + 1    X
                                                               @G811PSS
DCMFSSCT DS    A                  SSCT FOR LAST LINE IN MSG AREA + 1   X
                                                               @G811PSS
DCMFENT2 DS    A                  2ND LINE OF ENTRY AREA       @G811PSS
         DS    6A                 RESERVED                     @G811PSS
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        ADDRESSES OF PARTS OF THE SCREEN IMAGE BUFFER WHEN IN @G811PSS
*        MESSAGE STREAM MODE                                   @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMMLLA  DS    A                  LAST LINE MSG AREA           @G811PSS
DCMMLL1A DS    A                  LAST LINE IN MSG AREA + 1    @G811PSS
DCMMLSCT DS    A                  SCT FOR LAST LINE IN MSG             X
                                  AREA                         @G811PSS
DCMMSCT1 DS    A                  SCT FOR LAST LINE IN MSG AREA + 1    X
                                                               @G811PSS
DCMMSSCT DS    A                  SSCT FOR LAST LINE IN MSG AREA + 1   X
                                                               @G811PSS
         DS    2A                 RESERVED                     @G811PSS
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        ADDRESSES OF PARTS OF THE SCREEN IMAGE BUFFER WHEN IN @G811PSS
*        STATUS DISPLAY MODE                                   @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMDLLA  DS    A                  LAST LINE IN MSG AREA        @G811PSS
DCMDLL1A DS    A                  LAST LINE IN MSG AREA + 1    @G811PSS
DCMDLSCT DS    A                  SCT FOR LAST LINE IN MSG             X
                                  AREA                         @G811PSS
DCMDSCT1 DS    A                  SCT FOR LAST LINE IN MSG AREA + 1    X
                                                               @G811PSS
DCMDSSCT DS    A                  SSCT FOR LAST LINE IN MSG AREA + 1   X
                                                               @G811PSS
         DS    2A                 RESERVED                         @L1A
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        ADDRESSES TO BE RESOLVED DURING OPEN                      @L1A
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMLSSCT DS    A                  ADDRESS OF THE LAST SSCT         @L1A
         DS    8A                 RESERVED                         @L1A
DCMLADCN EQU   *                  LAST ADCON IN LIST               @L1A
         DS    A                  RESERVED                         @L1A
         EJECT                                                 @G811PSS
***********************************************************************
*                                                                     *
*        NUMBER OF LINES IN MESSAGE AREA AND ENTRY AREA VALUES @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMFNLMA DS    FL1                 MAX NUMBER LINES IN MSG AREA WHEN   X
                                   IN FULL CAPABILITY MODE     @G811PSS
DCMMNLMA DS    FL1                 MAX NUMBER LINES IN MSG AREA WHEN   X
                                   IN MESSAGE STREAM MODE      @G811PSS
DCMDNLMA DS    FL1                 MAX NUMBER LINES IN MSG AREA WHEN   X
                                   IN STATUS DISPLAY MODE      @G811PSS
DCMENTL1 DS    FL1                 LINE NUMBER -1 OF 1ST LINE IN ENTRY X
                                   AREA                        @G811PSS
DCMENTL2 DS    FL1                 LINE NUMBER -1 OF 2ND LINE IN ENTRY X
                                   AREA                        @G811PSS
         DS    FL3                 RESERVED                    @G811PSS
DCMFENRC DS    XL2                 ADDR OF 2ND LINE IN ENTRY AREA IN   X
                                   ROW-COLUMN FORMAT           @G811PSS
DCMENTPO DS    H                   OFFSET OF 1ST CHAR IN ENTRY AREA    X
                                                               @G811PSS
         DS    2F                  RESERVED                    @G811PSS
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        COMMAND BUFFER AREA FOR THE LAST COMMAND ENTERED      @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMCBUFA DS    CL128               COMMAND BUFFER AREA FOR LAST COMMANDX
                                   ENTERED                     @G811PSS
         EJECT ,                                                   @L2M
***********************************************************************
*                                                                     *
*        SAVE AREAS                                            @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMMODAD DS    0F                  VIRT ADDR OF REAL TDCM AFTER OPEN   X
                                                               @G811PSS
DCMCACRO DS    CL4                 CNTL BLK ACRONYM 'TDCM' BEFORE OPEN X
                                                               @G811PSS
DCMAIDSV DS    XL6                 SAVE AREA FOR AID FROM RMI  @G811PSS
         DS    H                   RESERVED                    @G811PSS
         DS    2F                  RESERVED                        @L2C
         DS    H                   RESERVED                        @L2A
DCMMFRMF DS    CL1                 FULL CAPABILITY MFORM VALUE     @L2A
DCMDELFC DS    CL2                 FULL CAPABILITY DEL VALUE       @L2A
DCMCONFC DS    CL1                 FULL CAPABILITY CON VALUE       @L2A
DCMSEGFC DS    FL1                 FULL CAPABILITY SEG VALUE       @L2A
DCMRNUMF DS    FL1                 FULL CAPABILITY RNUM VALUE      @L2A
DCMRTMEF DS    H                   FULL CAPABILITY RTME VALUE      @L2A
DCMMFRMM DS    CL1                 MESSAGE STREAM MFORM VALUE      @L2A
DCMDELMS DS    CL2                 MESSAGE STREAM DEL VALUE        @L2A
DCMCONMS DS    CL1                 MESSAGE STREAM CON VALUE        @L2A
DCMSEGMS DS    FL1                 MESSAGE STREAM SEG VALUE        @L2A
DCMRNUMM DS    FL1                 MESSAGE STREAM RNUM VALUE       @L2A
DCMRTMEM DS    H                   MESSAGE STREAM RTME VALUE       @L2A
         DS    H                   RESERVED                        @L2A
         DS    3F                  RESERVED                        @L2A
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        GENERAL EQUATED VALUES                                @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMPFKAL EQU   110                 SIZE OF THE PFK AREA        @G811PSS
         SPACE 1                                                   @L2M
***********************************************************************
*                                                                     *
*        MAPPING OF A SCREEN CONTROL TABLE (SCT) ENTRY         @G811PSS
*                                                                     *
*        FIRST BYTE OF AN SCT                                  @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMMSGR1 EQU   X'80'               RESERVED - WAS DCMMSGWR         @L1A
DCMMSGIN EQU   X'40'               MESSAGE DISPLAYED IN LINE
DCMMSGCN EQU   X'20'               MESSAGE CONTINUED ON NEXT LINE
DCMMSGJK EQU   X'10'               TO WRITE OUT-OF-LINE DISPLAY FROM
*                                  MAY CONTAIN JUNK (SDS INTERFACE 2)
DCMMSGAD EQU   X'08'               MESSAGE CAN BE DELETED AUTOMATICALLY
DCMMSGRD EQU   X'04'               REQUEST HAS SPECIFIED MSG BE REMOVED
DCMMSGIF EQU   X'02'               INFORMATIONAL MESSAGE IN LINE
DCMMSGST EQU   X'01'               END OF TABLE INDICATOR
         SPACE 1                                               @G811PSS
***********************************************************************
*                                                                     *
*        SECOND BYTE OF AN SCT                                 @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMMSGAC EQU   X'80'               ACTION MESSAGE
DCMMSGC7 EQU   X'40'               DESCRIPTOR CODE 7 MESSAGE
DCMMSGR2 EQU   X'20'               RESERVED - WAS DCMMSGDM         @L1A
DCMMSGUA EQU   X'10'               URGENT ATTENTION MESSAGE DISPLAYED  X
                                   IN LINE                         @L1A
.* BIT DCMMSGAR DELETED BY SUPPORT G811PSS                     @G811PSS
DCMMSGEA EQU   X'08'               EVENTUAL ACTION MESSAGE DISPLAYED   X
                                   IN LINE - WAS DCMMSGIR          @L1A
DCMMSGCT EQU   X'04'               CONTINUATION LINE
DCMMSGPP EQU   X'02'               ISSUED BY PROBLEM PROGRAM
DCMMSGCL EQU   X'01'               CONTROL LINE OF IN LINE MLWTO
         EJECT
***********************************************************************
*                                                                     *
*    MAPPING OF A SECONDARY SCREEN CONTROL TABLE (SSCT) ENTRY  @G811PSS
*                                                                     *
***********************************************************************
         SPACE 1                                               @G811PSS
DCMSECCL EQU   X'80'               CONTROL LINE OF OUT OF LINE DISPLAY
DCMSECLL EQU   X'40'               LABEL LINE OF OUT OF LINE DISPLAY
DCMSECDL EQU   X'20'               DATA LINE OF OUT OF LINE DISPLAY
DCMSECBL EQU   X'10'               THIS LINE IS BLANKED
DCMSECDD EQU   X'02'               LINE RESERVED FOR DYNAMIC DISPLAY
DCMSECST EQU   X'01'               END OF TABLE INDICATOR
DCMEND   DS    0C                  END OF TDCM
         MEND  , */
*%DCMPBSL  :  ;
*/********************************************************************/
*/*           WORK AND SAVE AREAS                                    */
*/********************************************************************/
*DECLARE
*  1 DCMSTRT  BASED(DCMSTPTR),
*   2 DCMOACRO    FIXED(31)  BDY(WORD), /* CNTL BLK ACRONYM 'TDCM' AFTER
*                                          OPEN              @G811PSS*/
*    3 *          FIXED(15),             /* TDCM LENGTH BEFORE OPEN
*                                                            @G811PSS*/
*    3 *          FIXED(15),             /* PADDING FOR LENGTH
*                                                            @G811PSS*/
*   2 DCMFLG1     CHAR(1),               /* TDCM AREA INDICATORS     */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMOUTPT BIT(1),                  /* TDCM UPDATED FOR OUTPUT
*                                           ONLY                     */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 DCMATI      CHAR(1),               /* SAVED UCB ATTN INDEX     */
*   2 *           CHAR(2),               /* RESERVED                 */
*   2 DCMWTINT    PTR(31),               /* DCMWTINT INITIAL VALUE   */
*   2 DCMLNCNT    FIXED(15),             /* NUMBER OF LINES TO BLANK */
*   2 DCMLNNUM    CHAR(1),               /* FIRST LINE TO BLANK      */
*   2 *           CHAR(1),               /* RESERVED                 */
*   2 DCMPACK     FIXED(31),             /* AREA TO PLACE NUMBER FOR
*                                           PACKING                  */
*   2 DCMCVBIN    FIXED(31),             /* AREA FOR CONVERSION TO
*                                           BINARY                   */
*@EJECT;                            /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           TIMER COMMUNICATION FIELD                      @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMTIMES    CHAR(1),               /* TIME RTNS INDICATOR BYTE */
*    3 DCMTIMER BIT(1),                  /* TIME ELAPSED FOR THIS
*                                           DISPLAY                  */
*    3 DCMOPTTI BIT(1),                  /* OPTIONS TO TI RTN        */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMOTTMM BIT(1),                  /* OPTIONS OR TI RTNS TO
*                                           MSG MODULE               */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMTASYN BIT(1),                  /* TIMER SET FOR ASYNC
*                                           ERROR MSG                */
*    3 DCMOCTTI BIT(1),                  /* OPEN-CLOSE TO TI RTN     */
*    3 DCMRMTTI BIT(1),                  /* ROLL MODE TO TIMER
*                                           ROUTINE                  */
* @SPACE(1);                             /*                  @G811PSS*/
*   2 *           CHAR(1),               /* RESERVED                 */
* @SPACE(1);                             /*                  @G811PSS*/
*   2 DCMELGN     FIXED(15),             /* ENTRY AREA LAST
*                                           CHARACTER POINTER        */
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           ADDRESS TABLE                                  @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMBUFAD    PTR(31),               /* POINTER TO BUFFER
*                                           ADDRESS TABLE            */
*   2 DCMDOMPK    PTR(31),               /* ADDRESS OF FIRST DOM
*                                           NUMBER                   */
*   2 DCMAMTAB    PTR(31),               /* ADDRESS OF FIRST SCT
*                                           ENTRY                    */
*   2 DCMADSEC    PTR(31),               /* ADDRESS OF FIRST SSCT
*                                           ENTRY                    */
*   2 DCMADDRL    PTR(31),               /* ADDRESS OF LAST SCT
*                                           ENTRY                    */
*   2 DCMASCRN    PTR(31),               /* POINTER TO SCREEN IMAGE
*                                           BUFFER                   */
*   2 DCMLSCRN    PTR(31),               /* POINTER TO LAST BUFFER
*                                           LINE                     */
*   2 DCMWTBUF    PTR(31),               /* SCREEN LENGTH POINTER    */
*   2 DCMAINS     PTR(31),               /* POINTER TO INSTRUCTION
*                                           LINE                     */
*   2 DCMAENTR    PTR(31),               /* POINTER TO ENTRY AREA    */
*   2 DCMAWARN    PTR(31),               /* POINTER TO WARNING LINE  */
*   2 DCMADCHP    PTR(31),               /* ADDRESS OF CHANNEL
*                                           PROGRAM AREA             */
*   2 DCMPFKLN    PTR(31),               /* POINTER TO PFK LINE      */
* @SPACE(1);                             /*                  @G811PSS*/
*   2 DCMCXSVE    FIXED(31),             /* CXSA SAVE AREA           */
*   2 DCMADOPN    PTR(31),               /* ADDRESS OF COMMAND
*                                           OPERAND                  */
* @SPACE(1);                             /*                  @G811PSS*/
*   2 DCMDSAV  (5) FIXED(31),            /* SAVE AND WORK AREA       */
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           INPUT BUFFER FOR ISSUING SVC 34 AND SVC 35             */
*/*           FIELDS DCMWQEXP THROUGH DCMINPUT MUST REMAIN IN ORDER  */
*/*                                                                  */
*/********************************************************************/
*   2 DCMWQEXP    FIXED(31),             /* ENSURE FULL WORD
*                                           BOUNDARY                 */
*    3 DCMINLGN    FIXED(15),            /* FIELD FOR INPUT LENGTH   */
*    3 DCMMCSFL    FIXED(15),            /* MCS FLAGS FIELD          */
*   2 DCMINPUT (32) FIXED(31),           /* INPUT MESSAGE TEXT       */
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           GENERAL LENGTH VALUES                          @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMLGNTH    FIXED(15),             /* LENGTH OF A LINE         */
*   2 DCMBAINC    FIXED(15),             /* ADDRESS TO INSERT CURSOR */
*   2 *           FIXED(15),             /* RESERVED - WAS DCMIRCTR
*                                                                @L1A*/
*   2 DCMBADLN    FIXED(15),             /* BUFFER ADDR TO BEGIN MSG
*                                           WRITE                    */
*   2 DCMBYTCT    FIXED(15),             /* NUMBER OF BYTES TO WRITE */
*   2 DCMADNUM    FIXED(15),             /* NEXT LINE NUMBER         */
*   2 DCMAXLGN    FIXED(15),             /* MAXIMUM LINE LENGTH      */
*   2 DCMMSGAL    FIXED(15),             /* NUMBER OF LINES IN
*                                           MESSAGE AREA             */
*   2 DCMRMINC    FIXED(15),             /* INCREMENT INTO RMI       */
*   2 DCMSCTCN    FIXED(15),             /* LENGTH OF ONE SCT ENTRY  */
*   2 DCMCORLN    FIXED(15),             /* LENGTH OF TDCM LINE IN
*                                           CORE                     */
*   2 *           FIXED(15),             /* TIME COUNTER             */
*   2 DCMPFKNM    CHAR(1),               /* NUMBER OF KEY BEING
*                                           PROCESSED                */
*   2 DCMPFKKN    CHAR(1),               /* LIST KEY NUMBER          */
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           VALUES FOR OPTIONS                             @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMDEL      CHAR(2),               /* DEL VALUE                */
*   2 DCMCON      CHAR(1),               /* CON VALUE                */
*   2 DCMSEG      PTR(8),                /* SEG VALUE                */
*   2 DCMDL       PTR(8),                /* DISPLAY AREA OPTION      */
*   2 DCMRNUM     PTR(8),                /* ROLL NUMBER VALUE        */
*   2 DCMRTME     FIXED(15),             /* ROLL TIME VALUE          */
* @EJECT;                                /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           DEFAULT VALUES FOR OPTIONS                             */
*/*                                                                  */
*/********************************************************************/
*   2 DCMSEGDF    PTR(8),                /* SEG DEFAULT              */
*   2 DCMRNUMD    PTR(8),                /* RNUM DEFAULT             */
*   2 DCMRTMED    FIXED(15),             /* RTME DEFAULT             */
* @SPACE(1);                             /*                  @G811PSS*/
*   2 *           CHAR(5),               /* RESERVED         @G811PSS*/
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           COMMUNICATIONS AREAS                                   */
*/*                                                                  */
*/********************************************************************/
*   2 DCMOPTST    CHAR(1),               /* STATUS OF SCREEN CONTROL
*                                           OPTIONS                  */
*    3 DCMOPTVR BIT(1),                  /* DELETE VERIFICATION
*                                           CON=(Y=1,N=0)            */
*    3 DCMOPTAD BIT(1),                  /* AUTOMATIC DELETION
*                                           DEL=(Y=1,N=0)            */
*    3 DCMOPTSG BIT(1),                  /* DEFAULT SEGMENT
*                                           SPECIFIED  SEG=(0=0)     */
*    3 DCMOPRLL BIT(1),                  /* ROLL MODE (Y=1,N=0)      */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 DCMCS       CHAR(1),               /* OPEN/CLOSE REQUEST       */
*    3 DCMCSC   BIT(1),                  /* CLOSE REQUEST            */
*    3 DCMCSO   BIT(1),                  /* OPEN REQUEST             */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 DCMUTILT    CHAR(1),               /* INTERNAL FLAGS   @G811PSS*/
*    3 DCMUTILA BIT(1),                  /* THESE BITS ARE           */
*    3 DCMUTILB BIT(1),                  /* INITIALIZED AND USED     */
*    3 DCMUTILC BIT(1),                  /* SOLELY WITHIN            */
*    3 DCMUTILD BIT(1),                  /* EACH MODULE              */
*    3 DCMUTILE BIT(1),                  /* THEY ARE NEVER           */
*    3 DCMUTILF BIT(1),                  /* USED FOR INTERFACE       */
*    3 DCMTEST1 BIT(1),                  /* FOR TESTING              */
*    3 DCMTEST2 BIT(1),                  /* FOR TESTING              */
*   2 DCMDSTAT    CHAR(1),               /* CURRENT DISPLAY STATUS   */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMDSTNM BIT(1),                  /* MESSAGES ARE NUMBERED    */
*    3 DCMDSTNH BIT(1),                  /* MSGS NUMBERED - HOLD
*                                           OPTION                   */
*    3 *        BIT(1),                  /* RESERVED - WAS DCMDSINR
*                                                                @L1A*/
*    3 DCMDSAUT BIT(1),                  /* AUTOMATIC DELETION TRIED */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           MCS INTERFACE FIELD                            @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMMCSST    CHAR(1),               /* MCS INTERFACE BYTE       */
*    3 DCMDUSE  BIT(1),                 /* DIDOCS IN CONTROL @G811PSS*/
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMOOMSS BIT(1),                  /* MESSAGE STREAM ENTRY     */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMOOSDS BIT(1),                  /* STATUS DISPLAY ENTRY     */
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           UNIQUE INTERFACE FIELD                         @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMIOUNQ    CHAR(1),               /* UNIQUE IO BYTE           */
*    3 DCMIO226 BIT(1),                  /* RMI PERFORMED            */
*    3 DCMRPCUR BIT(1),                  /* ADVANCE CURSOR TO BLANKS */
*    3 DCMFRSCN BIT(1),                  /* PUT OUTPUT IN HOLD MODE  */
*    3 DCMRDARM BIT(1),                  /* PERFORM READ AFTER RMI   */
*    3 DCMW2250 BIT(1),                  /* DEVICE HAS LIGHT PEN
*                                                            @G811PSS*/
*    3 DCMINNOR BIT(1),                  /* NORMAL INSTRUCTION LINE  */
*    3 DCMINERR BIT(1),                  /* ERROR INSTRUCTION LINE   */
*    3 DCMEWASP BIT(1),                  /* ERASE/WRITE ALTERNATE
*                                           COMMAND SUPPORTED
*                                                            @G811PSS*/
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           I/O COMMUNICATION FIELDS                       @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMIOCM1    CHAR(1),               /* IO COMMUNICATIONS BYTE 1 */
*    3 DCMDORMI BIT(1),                  /* ISSUE RMI                */
*    3 DCMSOUND BIT(1),                  /* SOUND ALARM              */
*    3 DCMWRWRN BIT(1),                  /* WRITE WARNING LINE       */
*    3 DCMWRMSG BIT(1),                  /* WRITE FULL MESSAGE AREA  */
*    3 DCMWRPAR BIT(1),                  /* WRITE PARTIAL MESSAGE
*                                           AREA                     */
*    3 DCMWRINS BIT(1),                  /* WRITE INSTRUCTION LINE   */
*    3 DCMWRENT BIT(1),                  /* WRITE ENTRY AREA         */
*    3 DCMINSC  BIT(1),                  /* INSERT CURSOR            */
*   2 DCMIOCM2    CHAR(1),               /* IO COMMUNICATIONS BYTE 2 */
*    3 DCMBLENT BIT(1),                  /* BLANK ENTRY AREA         */
*    3 DCMBLWRL BIT(1),                  /* BLANK LEFT HALF WARNING
*                                           LINE                     */
*    3 DCMBLWRR BIT(1),                  /* BLANK RIGHT HALF WARNING
*                                           LINE                     */
*    3 DCMINSSH BIT(1),                  /* INIT AND SHIFT
*                                           INSTRUCTION LINE         */
*    3 DCMWINFD BIT(1),                  /* WRITE INFORMATIONAL
*                                           DISPLAY                  */
*    3 DCMERASE BIT(1),                  /* PERFORM ERASE            */
*    3 DCMIOCRD BIT(1),                  /* PERFORM READ
*                                           (2250,22DOC)             */
*    3 DCMWRASY BIT(1),                  /* WRITE ASYNC ERROR MSG TO
*                                           MID-SCREEN               */
*   2 DCMIOCM3    CHAR(1),               /* IO COMMUNICATIONS BYTE 3 */
*    3 DCMOPRMI BIT(1),                  /* RMI AFTER OPEN TO UNLOCK
*                                           KEYBOARD                 */
*    3 DCMSSRG  BIT(1),                  /* SUPPRESS START
*                                           REGENERATION             */
*    3 DCMEWAND BIT(1),                  /* ERASE/WRITE ALTERNATE
*                                           COMMAND NEEDED   @G811PSS*/
*    3 DCMWRPFK BIT(1),                  /* TDCM WRITE PFK AREA      */
*    3 DCMPFKAT BIT(1),                  /* PFK ATTENTION            */
*    3 DCMRDPFK BIT(1),                  /* PFK AREA READ            */
*    3 DCMACPFK BIT(1),                  /* EXTINGUISH PFK LIGHTS
*                                                            @G811PSS*/
*    3 DCMLTPFK BIT(1),                  /* LIGHT ALL ALLOCATED PFK
*                                           LIGHTS           @G811PSS*/
* @SPACE(1);                             /*                  @G811PSS*/
*   2 DCMLINEN    CHAR(1),               /* LINE NUMBER TO BEGIN
*                                           WRITE                    */
*   2 DCMCULNO    CHAR(1),               /* LINE IN ENTRY AREA TO
*                                           INSERT CURSOR            */
*   2 DCMPOSCU    CHAR(1),               /* POSITION TO INSERT
*                                           CURSOR                   */
* @EJECT;                                /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           ASYNCHRONOUS ERROR COMMUNICATIONS FIELD        @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMASYNC    CHAR(1),               /* ASYN ERROR
*                                           COMMUNICATIONS/RETRY
*                                           BYTE                     */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMASDA  BIT(1),                  /* DATA CHECK RETRY BIT
*                                                            @G811PSS*/
*    3 DCMASIN  BIT(1),                  /* INVALID BUFFER ADDR CHECK
*                                           RETRY BIT        @G811PSS*/
*    3 DCMASBA  BIT(1),                  /* BUFFER ADDR PARITY CHECK
*                                           RETRY BIT        @G811PSS*/
*    3 DCMASEWA BIT(1),                  /* PERMANENT ERROR ON EWA
*                                           DEVICE RETRIED   @G811PSS*/
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*/********************************************************************/
*/*                                                                  */
*/*           COMMUNICATION FIELDS                           @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMCOM1     CHAR(1),               /* COMMUNICATIONS BYTE      */
*    3 DCMLPENT BIT(1),                  /* ENTER BY LP OR CURSOR    */
*    3 DCMIOPRD BIT(1),                  /* READ PERFORMED           */
*    3 DCMCOMRM BIT(1),                  /* RMI PERFORMED            */
*    3 DCMCOMAU BIT(1),                  /* PERFORM AUTO DELETE      */
*    3 DCMCOMRD BIT(1),                  /* PERFORM REGULAR DELETE   */
*    3 DCMCOMNM BIT(1),                  /* NUMBER MESSAGES          */
*    3 DCMCLEAR BIT(1),                  /* CLEAR KEY WAS PRESSED
*                                                            @G811PSS*/
*    3 DCMCANCL BIT(1),                  /* INDICATE CANCEL TO
*                                           COMMAND ROUTINE          */
*   2 DCMCOM2     CHAR(1),               /* COMMUNICATIONS BYTE      */
*    3 DCMCM2I  BIT(1),                  /* INPUT TO BE PROCESSED    */
*    3 DCMSPLIT BIT(1),                  /* MSG TO BE SPLIT          */
*    3 DCMCOMAR BIT(1),                  /* ACCEPTED REPLY           */
*    3 DCMREPLC BIT(1),                  /* REPEAT LAST COMMAND KEY
*                                           (PA1) PRESSED    @G811PSS*/
*    3 DCMERPF  BIT(1),                  /* ERASE PERF-PROC CAN NOW
*                                           CLOSE DEVICE             */
*    3 DCMCMIN5 BIT(1),                  /* RETURN TO INTER. 5 FOR
*                                           BLNK                     */
*    3 DCMCBLNK BIT(1),                  /* BLANKING REQUIRED        */
*    3 DCMAE    BIT(1),                  /* CLEANUP FOR ASY ERROR    */
*   2 DCMCOM3     CHAR(1),               /* COMMUNICATIONS BYTE      */
*    3 DCMCDSP3 BIT(1),                  /* DISPLAY 3 COMPLETED WORK */
*    3 DCMRTPFK BIT(1),                  /* RETURN TO PFK ROUTINE    */
*    3 DCMVLPFK BIT(1),                  /* VERIFYING LAST COMMAND   */
*    3 DCMXINT1 BIT(1),                  /* ENTRY FOR INTERFACE 1
*                                           ROUTINE                  */
*    3 DCMOLUNV BIT(1),                  /* O-O-L MSG CAUSED UNVIEW.
*                                           MSG.                     */
*    3 DCMPFKWR BIT(1),                  /* WRITE PFK UPDATES TO LIB */
*    3 DCMOLHLD BIT(1),                  /* OUT OF LINE MESSAGES HELD*/
*    3 DCMCMIN7 BIT(1),                  /* RETURN TO INTER. 7 FOR
*                                           BLANKING                 */
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           MESSAGE MODULES COMMUNICATION FIELDS           @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMCMSG1    CHAR(1),               /* MSG MODULE
*                                           COMMUNICATIONS BYTE 1    */
*    3 DCMMSGWT BIT(1),                  /* MOVE IN MESSAGE WAITING  */
*    3 DCMUNMSG BIT(1),                  /* MOVE IN UNVIEWABLE
*                                           MESSAGE                  */
*    3 DCMSTEX  BIT(1),                  /* MOVE IN STATUS EXISTS    */
*    3 DCMCHOPT BIT(1),                  /* MOVE IN CHANGE OPTIONS   */
*    3 DCMELONG BIT(1),                  /* MOVE IN ENTRY TOO LONG   */
*    3 DCMWRCDL BIT(1),                  /* MOVE IN CON=N,DEL=Y      */
*    3 DCMDELNT BIT(1),                  /* MOVE IN DEL UNCHANGED,
*                                           NO TIMER                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 DCMCMSG2    CHAR(1),               /* MSG MODULE
*                                           COMMUNICATIONS BYTE 2    */
*    3 DCMDLREQ BIT(1),                  /* MOVE IN DELETION
*                                           REQUESTED                */
*    3 DCMRQINC BIT(1),                  /* MOVE IN REQUEST
*                                           INCONSISTENT             */
*    3 DCMMSGCR BIT(1),                  /* MOVE IN INVALID CURSOR
*                                           OPERATION                */
*    3 DCMINVOP BIT(1),                  /* MOVE IN INVALID OPERAND  */
*    3 DCMCILLP BIT(1),                  /* MOVE IN ILLEGAL LP
*                                           OPERATION                */
*    3 DCMDELRI BIT(1),                  /* MOVE IN DELETE REQUEST
*                                           INCONSISTANT             */
*    3 DCMASYRT BIT(1),                  /* MOVE IN ASYN ERROR
*                                           RETRYABLE                */
*    3 DCMASYCD BIT(1),                  /* MOVE IN ASYN ERROR MAYBE
*                                           RETRYABLE                */
*   2 DCMCMSG3    CHAR(1),               /* MSG MODULE
*                                           COMMUNICATIONS BYTE 3    */
*    3 DCMCMRLL BIT(1),                  /* MOVE IN ROLL MODE
*                                           MESSAGE                  */
*    3 DCMCDLR1 BIT(1),                  /* NO DELETABLE MESSAGES    */
*    3 DCMCDLR2 BIT(1),                  /* INVALID RANGE            */
*    3 DCMCDLR3 BIT(1),                  /* SEG EQU TO ZERO          */
*    3 DCMCDLR4 BIT(1),                  /* DISPLAY NOT ON SCREEN    */
*    3 DCMCDLR5 BIT(1),                  /* INVALID OPERAND          */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 DCMDTBSY BIT(1),                  /* COMMAND REJECTED - TASK
*                                           BUSY                     */
*   2 DCMCMSG4    CHAR(1),               /* MSG MODULE
*                                           COMMUNICATIONS BYTE 4    */
*    3 DCMPFKNA BIT(1),                  /* MOVE IN PFK NOT
*                                           ALLOCATED FOR            */
*    3 DCMPFKND BIT(1),                  /* MOVE IN PFK NOT DEFINED  */
*    3 DCMPFKNO BIT(1),                  /* MOVE IN NO PFK
*                                           ALLOCATION               */
*    3 DCMPFKIP BIT(1),                  /* MOVE IN PFK IN PROCESS   */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           SVC 34 COMMUNICATIONS FIELD                    @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMSVC34    CHAR(1),               /* SVC 34 COMMUNICATION
*                                           BYTE                     */
*    3 DCMMYCMD BIT(1),                  /* COMMAND TO BE HANDLED BY
*                                           THIS CONS                */
*    3 DCMINVLD BIT(1),                  /* INVALID K COMMAND        */
*    3 DCMTYPE1 BIT(1),                  /* K COMMAND IS NOT
*                                           ROUTABLE                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
* @SPACE(1);                             /*                  @G811PSS*/
*   2 DCMCOM4     CHAR(1),               /* COMMUNICATION BYTE       */
*    3 DCMCNTRL   BIT(1),         /* CONTROL LINE INDICATOR  @ZA44483*/
*    3 *          BIT(7),                /* RESERVED         @ZA44483*/
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           INDEX FOR I/O ROUTINE                          @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMIONDX    CHAR(1),               /* INDEX FOR SELECTING THE
*                                           APPROPRIATE IO ROUTINE
*                                           X'04'=3066,IEECVETH
*                                           X'08'=2250,IEECVETP
*                                           X'0C'=2260,IEECVETR
*                                           X'10'=3277-TYPE-DEVICE,
*                                                   IEECVETU @G811PSS*/
* @SPACE(1);                             /*                  @G811PSS*/
*   2 DCMTEST     FIXED(15),             /* RESERVED FOR TESTING     */
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*           MODULE ADDRESSES                                       */
*/*                                                                  */
*/********************************************************************/
*   2 DCMIORTN    PTR(31),    /* IEECVETH,P,R,U - APPROPRIATE I/O
*                                ROUTINE                     @G811PSS*/
*   2 DCMNPRZ     PTR(31),    /* IEECVFT1 - PROCESSOR 0 LOAD ONE
*                                                            @G811PSS*/
*   2 DCMNPROC    PTR(31),    /* IEECVET1 - PROCESSOR ROUTINE LOAD
*                                           ONE              @G811PSS*/
*   2 DCMNDSP1    PTR(31),    /* IEECVET2 - DISPLAY ROUTINE 1
*                                                            @G811PSS*/
*   2 DCMNDSP2    PTR(31),    /* IEECVET3 - DISPLAY ROUTINE 2
*                                                            @G811PSS*/
*   2 DCMNDSP3    PTR(31),    /* IEECVFT2 - DISPLAY ROUTINE 3
*                                                            @G811PSS*/
*   2 DCMNCMD1    PTR(31),    /* IEECVET4 - COMMAND ROUTINE 1
*                                                            @G811PSS*/
*   2 DCMNDEL1    PTR(31),    /* IEECVET6 - DELETE ROUTINE 1 @G811PSS*/
*   2 DCMNDEL2    PTR(31),    /* IEECVET7 - DELETE ROUTINE 2 @G811PSS*/
*   2 DCMNDEL3    PTR(31),    /* IEECVET8 - DELETE ROUTINE 3 @G811PSS*/
*   2 DCMNDEL4    PTR(31),    /* IEECVET9 - DELETE ROUTINE 4 @G811PSS*/
*   2 DCMNOPT1    PTR(31),    /* IEECVETA - OPTIONS ROUTINE 1
*                                                            @G811PSS*/
*   2 DCMNPFK1    PTR(31),    /* IEECVFTA - PFK ROUTINE 1    @G811PSS*/
*   2 DCMNPFK2    PTR(31),    /* IEECVFTB - PFK ROUTINE 2    @G811PSS*/
*   2 DCMNERRO    PTR(31),    /* IEECVETC - ASYNCHRONOUS ERROR
*                                           ROUTINE          @G811PSS*/
*   2 DCMNMSG1    PTR(31),    /* IEECVETD - MESSAGE ROUTINE 1
*                                                            @G811PSS*/
*   2 DCMNMSG2    PTR(31),    /* IEECVETE - MESSAGE ROUTINE 2
*                                                            @G811PSS*/
*   2 DCMNMSG3    PTR(31),    /* IEECVFTD - MESSAGE ROUTINE 3
*                                                            @G811PSS*/
*   2 DCMNLPCR    PTR(31),    /* IEECVETF - LIGHT PEN/CURSOR SERVICE
*                                           ROUTINE          @G811PSS*/
*   2 DCMNOPCL    PTR(31),    /* IEECVETG - OPEN/CLOSE ROUTINE
*                                                            @G811PSS*/
*   2 DCMNCLN     PTR(31),    /* IEECVFTG - CLEANUP MODULE   @G811PSS*/
*   2 DCMNROLL    PTR(31),    /* IEECVETJ - ROLL MODE ROUTINE
*                                                            @G811PSS*/
*   2 DCMNTIMR    PTR(31),    /* IEECVETK - TIMER INTERPRETER
*                                           ROUTINE          @G811PSS*/
*   2 DCMNINT1    PTR(31),    /* IEECVFTL - INTERFACE 1 ROUTINE
*                                                            @G811PSS*/
*   2 DCMNINT2    PTR(31),    /* IEECVFTM - INTERFACE 2 ROUTINE
*                                                            @G811PSS*/
*   2 DCMNINT3    PTR(31),    /* IEECVFTN - INTERFACE 3 ROUTINE
*                                                            @G811PSS*/
*   2 DCMNINT4    PTR(31),    /* IEECVFTO - INTERFACE 4 ROUTINE
*                                                            @G811PSS*/
*   2 DCMNINT5    PTR(31),    /* IEECVFTP - INTERFACE 5 ROUTINE
*                                                            @G811PSS*/
*   2 DCMNINT6    PTR(31),    /* IEECVFTQ - INTERFACE 6 ROUTINE
*                                                            @G811PSS*/
*   2 DCMNINT7    PTR(31),    /* IEECVFTT - INTERFACE 7 ROUTINE
*                                                            @G811PSS*/
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           DIDOCS MODULE TRACE AREA                       @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*%DCL DCMTRLEN CHAR;                     /* TRACE MOVE LENGTH        */
*%DCMTRLEN='30';                         /* 2 LESS THAN WHOLE AREA   */
*   2 DCMTRACE CHAR(DCMTRLEN+2),         /* TO-AREA FOR TRACE MOVE
*                                                            @G811PSS*/
*    3 *        CHAR(2),                 /* OLDEST TRACE ENTRY       */
*    3 DCMTRAC2 CHAR(DCMTRLEN),          /* FROM-AREA FOR TRACE MOVE */
*     4 DCMTREN1 CHAR(1),                /* 1ST BYTE OF NEW ENTRY
*                                                            @G811PSS*/
*     4 DCMTREN2 CHAR(1),                /* 2ND BYTE OF NEW ENTRY
*                                                            @G811PSS*/
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           FOLLOWING GROUP OF BYTES ARE DEVICE DEPENDENT  @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMASKEN    CHAR(1),               /* ENTER MASK               */
*   2 DCMASKCN    CHAR(1),               /* CANCEL MASK              */
*   2 DCMASKCR    CHAR(1),               /* CURSOR MASK              */
*   2 DCMASKLP    CHAR(1),               /* LIGHT PEN MASK           */
*   2 DCMSKPF1    CHAR(1),              /* 1ST PFK TYPE MASK @G811PSS*/
*   2 DCMSKPF2    CHAR(1),              /* 2ND PFK TYPE MASK @G811PSS*/
*   2 DCMSKPF3    CHAR(1),              /* 3RD PFK TYPE MASK @G811PSS*/
*   2 DCMSKPF4    CHAR(1),              /* 4TH PFK TYPE MASK @G811PSS*/
*   2 DCMASKCL    CHAR(1),               /* CLEAR KEY MASK   @G811PSS*/
*   2 DCMSKPA1    CHAR(1),               /* PA1 KEY MASK     @G811PSS*/
*   2 DCMSKPA3    CHAR(1),               /* PA3 KEY MASK     @G811PSS*/
*   2 *           CHAR(5),               /* RESERVED         @G811PSS*/
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           ADDRESSES OF PARTS OF THE SCREEN IMAGE BUFFER  @G811PSS*/
*/*           WHEN IN FULL CAPABILITY MODE                   @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMSADCN PTR(31),             /* FIRST ADCON IN LIST   @G811PSS*/
*    3 DCMFLLA   PTR(31),           /* LAST LINE IN MSG AREA @G811PSS*/
*   2 DCMFLL1A  PTR(31),            /* LAST LINE IN MSG AREA + 1
*                                                            @G811PSS*/
*   2 DCMFLSCT PTR(31),             /* SCT FOR LAST LINE IN MSG AREA
*                                                            @G811PSS*/
*   2 DCMFSCT1  PTR(31),            /* SCT FOR LAST LINE IN MSG AREA
*                                      + 1                   @G811PSS*/
*   2 DCMFSSCT  PTR(31),            /* SSCT FOR LAST LINE IN MSG AREA
*                                      + 1                   @G811PSS*/
*   2 DCMFENT2  PTR(31),            /* 2ND LINE OF ENTRY AREA
*                                                            @G811PSS*/
*   2 *(6)      PTR(31),            /* RESERVED              @G811PSS*/
* @EJECT;
*/********************************************************************/
*/*                                                                  */
*/*           ADDRESSES OF PARTS OF THE SCREEN IMAGE BUFFER  @G811PSS*/
*/*           WHEN IN MESSAGE STREAM MODE                    @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMMLLA   PTR(31),            /* LAST LINE IN MSG AREA @G811PSS*/
*   2 DCMMLL1A  PTR(31),            /* LAST LINE IN MSG AREA + 1
*                                                            @G811PSS*/
*   2 DCMMLSCT  PTR(31),            /* SCT FOR LAST LINE IN MSG AREA
*                                                            @G811PSS*/
*   2 DCMMSCT1  PTR(31),            /* SCT FOR LAST LINE IN MSG AREA
*                                      + 1                   @G811PSS*/
*   2 DCMMSSCT  PTR(31),            /* SSCT FOR LAST LINE IN MSG AREA
*                                      + 1                   @G811PSS*/
*   2 *(2)      PTR(31),            /* RESERVED              @G811PSS*/
* @SPACE(1);
*/********************************************************************/
*/*                                                                  */
*/*           ADDRESSES OF PARTS OF THE SCREEN IMAGE BUFFER  @G811PSS*/
*/*           WHEN IN STATUS DISPLAY MODE                    @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMDLLA   PTR(31),            /* LAST LINE IN MSG AREA @G811PSS*/
*   2 DCMDLL1A  PTR(31),            /* LAST LINE IN MSG AREA + 1
*                                                            @G811PSS*/
*   2 DCMDLSCT  PTR(31),            /* SCT FOR LAST LINE IN MSG AREA
*                                                            @G811PSS*/
*   2 DCMDSCT1  PTR(31),            /* SCT FOR LAST LINE IN MSG AREA
*                                      + 1                   @G811PSS*/
*   2 DCMDSSCT  PTR(31),            /* SSCT FOR LAST LINE IN MSG AREA
*                                      + 1                   @G811PSS*/
*   2 *(2)      PTR(31),            /* RESERVED                  @L1A*/
* @SPACE(1);
*/********************************************************************/
*/*                                                                  */
*/*           ADDRESSES TO BE RESOLVED DURING OPEN               @L1A*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMLSSCT  PTR(31),            /* ADDRESS OF LAST SSCT      @L1A*/
*   2 *(8)      PTR(31),            /* RESERVED                  @L1A*/
*   2 *         PTR(31),            /* RESERVED                  @L1A*/
*    3 DCMLADCN PTR(31),            /* LAST ADCON IN LIST        @L1A*/
* @EJECT;
*/********************************************************************/
*/*                                                                  */
*/*           NUMBER OF LINES IN MESSAGE AREA AND ENTRY      @G811PSS*/
*/*           AREA VALUES                                    @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMFNLMA  FIXED(8),           /* MAX NUMBER LINES IN MSG AREA
*                                      WHEN IN FULL CAPABILITY MODE
*                                                            @G811PSS*/
*   2 DCMMNLMA  FIXED(8),           /* MAX NUMBER LINES IN MSG AREA
*                                      WHEN IN MESSAGE STREAM MODE
*                                                            @G811PSS*/
*   2 DCMDNLMA  FIXED(8),           /* MAX NUMBER LINES IN MSG AREA
*                                      WHEN IN STATUS DISPLAY MODE
*                                                            @G811PSS*/
*   2 DCMENTL1  FIXED(8),           /* LINE NUMBER -1 OF 1ST LINE
*                                      IN ENTRY AREA         @G811PSS*/
*   2 DCMENTL2  FIXED(8),           /* LINE NUMBER -1 OF 2ND LINE
*                                      IN ENTRY AREA         @G811PSS*/
*   2 *         FIXED(24),          /* RESERVED              @G811PSS*/
*   2 DCMFENRC  FIXED(15),          /* ADDR OF 2ND LINE IN ENTRY AREA
*                                      IN ROW-COLUMN FORMAT  @G811PSS*/
*   2 DCMENTPO  FIXED(15),          /* OFFSET OF 1ST CHAR IN ENTRY AREA
*                                                            @G811PSS*/
*   2 *(2)      FIXED(31),          /* RESERVED              @G811PSS*/
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           COMMAND BUFFER AREA FOR THE LAST COMMAND       @G811PSS*/
*/*           ENTERED                                        @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMCBUFA  CHAR(128),          /* COMMAND BUFFER AREA FOR LAST
*                                      COMMAND ENTERED       @G811PSS*/
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           SAVE AREAS                                     @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMMODAD    FIXED(31)  BDY(WORD), /* VIRT ADDR OF REAL TDCM AFTER
*                                          OPEN              @G811PSS*/
*     3 DCMCACRO  CHAR(4),          /* CNTL BLK ACRONYM 'TDCM' BEFORE
*                                      OPEN                  @G811PSS*/
*   2 DCMAIDSV  CHAR(6),            /* SAVE AREA FOR AID FROM RMI
*                                                            @G811PSS*/
*   2 *         FIXED(15),          /* RESERVED              @G811PSS*/
*   2 *(2)      FIXED(31),          /* RESERVED                  @L2C*/
*   2 *         FIXED(15),          /* RESERVED                  @L2A*/
*   2 DCMMFRMF  CHAR(1),            /* FULL CAPABILITY MFORM SAV @L2A*/
*   2 DCMDELFC  CHAR(2),            /* FULL CAPABILITY DEL SAVE  @L2A*/
*   2 DCMCONFC  CHAR(1),            /* FULL CAPABILITY CON SAVE  @L2A*/
*   2 DCMSEGFC  FIXED(8),           /* FULL CAPABILITY SEG SAVE  @L2A*/
*   2 DCMRNUMF  FIXED(8),           /* FULL CAPABILITY RNUM SAVE @L2A*/
*   2 DCMRTMEF  FIXED(16),          /* FULL CAPABILITY RTME SAVE @L2A*/
*   2 DCMMFRMM  CHAR(1),            /* MESSAGE STREAM MFORM SAVE @L2A*/
*   2 DCMDELMS  CHAR(2),            /* MESSAGE STREAM DEL SAVE   @L2A*/
*   2 DCMCONMS  CHAR(1),            /* MESSAGE STREAM CON SAVE   @L2A*/
*   2 DCMSEGMS  FIXED(8),           /* MESSAGE STREAM SEG SAVE   @L2A*/
*   2 DCMRNUMM  FIXED(8),           /* MESSAGE STREAM RNUM SAVE  @L2A*/
*   2 DCMRTMEM  FIXED(16),          /* MESSAGE STREAM RTME SAVE  @L2A*/
*   2 *         FIXED(15),          /* RESERVED                  @L2A*/
*   2 *(3)      FIXED(31);          /* RESERVED                  @L2A*/
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           GENERAL EQUATED VALUES                         @G811PSS*/
*/*                                                                  */
*/********************************************************************/
* DECLARE
*   DCMPFKAL    FIXED(31) CONSTANT(110); /* SIZE OF THE PFK AREA
*                                                            @G811PSS*/
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*           MAPPING OF A SCREEN CONTROL TABLE (SCT) ENTRY  @G811PSS*/
*/*                                                                  */
*/*           FIRST BYTE OF AN SCT                           @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  1 DCMSCTA CHAR(2) BASED(DCMSCTB),
*   2 DCMMSGR1 BIT(1),             /* RESERVED - WAS DCMMSGWR
*                                                                @L1A*/
*   2 DCMMSGIN BIT(1),             /* MESSAGE DISPLAYED IN LINE      */
*   2 DCMMSGCN BIT(1),             /* MESSAGE CONTINUED ON NEXT LINE */
*   2 DCMMSGJK BIT(1),             /* TO WRITE O-O-L DISPLAY FROM.
*                                     MAY CONTAIN JUNK (SDS INTERFACE
*                                     2)                             */
*   2 DCMMSGAD BIT(1),             /* MESSAGE CAN BE AUTO DELETED    */
*   2 DCMMSGRD BIT(1),             /* REQUEST HAS SPEC. MSG BE REMV. */
*   2 DCMMSGIF BIT(1),             /* INFORMATIONAL MESSAGE IN LINE  */
*   2 DCMMSGST BIT(1),             /* END OF TABLE INDICATOR         */
* @SPACE(1);                             /*                  @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/*           SECOND BYTE OF AN SCT                          @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*   2 DCMMSGAC BIT(1),             /* ACTION MESSAGE                 */
*   2 DCMMSGC7 BIT(1),             /* DESCRIPTOR CODE 7 MESSAGE      */
*   2 DCMMSGR2 BIT(1),             /* RESERVED - WAS DCMMSGDM
*                                                                @L1A*/
*   2 DCMMSGUA BIT(1),             /* URGENT ATTENTION MESSAGE
*                                     DISPLAYED IN LINE          @L1A*/
*   2 DCMMSGEA BIT(1),             /* EVENTUAL ACTION MESSAGE
*                                     DISPLAYED IN LINE - WAS
*                                     DCMMSGIR                   @L1A*/
*   2 DCMMSGCT BIT(1),             /* CONTINUATION LINE              */
*   2 DCMMSGPP BIT(1),             /* ISSUED BY PROBLEM PROGRAM      */
*   2 DCMMSGCL BIT(1);             /* CONTROL LINE OF IN LINE MLWTO  */
* @EJECT;                           /*                       @G811PSS*/
*/********************************************************************/
*/*                                                                  */
*/* MAPPING OF A SECONDARY SCREEN CONTROL TABLE (SSCT) ENTRY @G811PSS*/
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  1 DCMSCTC CHAR(1) BASED(DCMSCTD),
*   2 DCMSECCL BIT(1),             /* CONTROL LINE OF O-O-L DISPLAY  */
*   2 DCMSECLL BIT(1),             /* LABEL LINE OF O-O-L DISPLAY    */
*   2 DCMSECDL BIT(1),             /* DATA LINE OF O-O-L DISPLAY     */
*   2 DCMSECBL BIT(1),             /* THIS LINE IS BLANKED           */
*   2 *        BIT(1),             /* RESERVED - WAS DCMSECXX
*                                                            @G811PSS*/
*   2 *        BIT(1),             /* RESERVED - WAS DCMSECYY
*                                                            @G811PSS*/
*   2 DCMSECDD BIT(1),             /* LINE RESERVED FOR DYNAMIC DISPLAY
*                                                                    */
*   2 DCMSECST BIT(1);             /* END OF TABLE INDICATOR         */
* @SPACE(1);                             /*                  @G811PSS*/
*DECLARE DCMEND  (*) CHAR(1)   BASED
*  (ADDR(DCMSTRT )+LENGTH(DCMSTRT ));
*                                        /* END OF TDCM              */
./ ADD NAME=IEEUCDX
         MACRO
         IEEUCDX
*        7/21/71
*        11/4/74,OS/VS2 RELEASE 3                              @ZM30471
* D 008500                                                     @ZM30471
*              DATA MANAGEMENT AND I/O SUPERVISOR CONTROL
*              BLOCKS FOR VMS OPERATOR CONSOLE SUPPORT
*              FOR THE 1052 USING EXCP.
*
*              1052 DCB (EXCP) DEFINITION.
****************************************************************
         DS    0D            DOUBLE WORD ALIGNMENT
DMDCB    DCB DDNAME=IEECVTSK,MACRF=(E),DSORG=PS
****************************************************************
         ORG
         SPACE
*
*                            STATUS.
         DC    D'0'               WORK AREA.
         SPACE
*                            1052 IOB DEFINITION.
         DS    0D
         DC    BL1'01000010'      COMMAND CHAINING,UNRELATED(42).
         DC    X'00'              2ND FLAG BYTE
         DC    H'0'               TWO SENSE BYTES.
         DC    F'0'          (DYNAMIC) ECB CODE AND PTR.
         DC    D'0'               CHANNEL STATUS WORD.
         DC    F'0'          (DYNAMIC) CHANNEL PROGRAM ADDRESS
         DC    F'0'          (DYNAMIC) DCB PTR.
         DC    F'0'               RESTART POINTER.
         DC    H'0'               BLOCK COUNT (UNUSED)
         DC    H'0'               ERROR COUNT (UNUSED)
         SPACE
         DS    0D            1052 CCW DEFINITIONS.
*                            READ
         DC    X'0A'         READ CODE.
         DC    FL3'0'        DATA PTR.
         DC    BL1'01100000' CC,SLI.
         DC    X'00'
         DC    FL2'1'        COUNT FIELD.
*                            TRANSFER TO NOP.
         DC    X'08'         TRANSFER IN CHANNEL.
         DC    FL3'0'        (DYNAMIC) TO NOP.
         DC    F'0'          IGNORED.
*                            WRITE
         DC    X'09'         WRITE CODE.
         DC    FL3'0'        DATA PTR.
         DC    BL1'01100000' CC,SLI.
         DC    X'00'
         DC    FL2'1'             COUNT FIELD.
*                            NOP.
*                                 ACTIVE COMMANDS CHAINED TO NOP FORCES
*                                 DEVICE END AND CHANNEL END TO OCCUR
*                                 TOGETHER,AVOIDING FUTURE INTERCEPTS,
*                                 ALLOWING CURRENT ERROR CHECK.
         DC    X'03'              NOP CODE
         DC    FL3'0'             NO DATA
         DC    BL1'00100000'      SLI
         DC    X'00'
         DC    FL2'1'             NON-ZERO COUNT
*                            ALARM.
         DC    X'0B'              GONG CODE
         DC    FL3'0'             NO DATA
         DC    BL1'00100000'      SLI.
         DC    X'00'
         DC    FL2'1'             NON ZERO COUNT
DMLAST   EQU   *                  END.
DMCORE   EQU   *-DMDCB            CORE REQUIREMENT.
         IHADCB DSORG=XE
         ORG
         SPACE
*
*                            STATUS.
DMX      DC    D'0'               WORK AREA.
DMXR     EQU   0                  READ LAST.
DMXW     EQU   4                  WRITE LAST.
DMXE     EQU   8                  GOING LAST.
DMX4     EQU   DMX+4              TERMINAL FLAG BYTE
DMX4C    EQU   X'80'              CLOSE
DMXERR   EQU   DMX+6
         SPACE
*                            1052 IOB DEFINITION
DMIOB    DS    0D
DMIF1    DC    BL1'01000010'      COMMAND CHAINING,UNRELATED(42).
DMIF2    DC    X'00'              2ND FLAG BYTE
DMISNS   DC    H'0'               TWO SENSE BYTES.
DMIECBP  DC    F'0'          (DYNAMIC) ECB CODE AND PTR.
DMIECBK  EQU   X'7F'                         7F  ERROR FREE
DMIECBX  EQU   X'41'                         41  PERMANENT ERROR
DMIECBR  EQU   X'44'                         44  INTERCEPT RETRY
DMIUX    EQU   1                  CANCEL, UNIT EXCEPTION.
DMICSW   DC    D'0'               CHANNEL STATUS WORD.
DMISTUS  EQU   DMICSW+4           STATUS BYTE.
DMICPA   DC    A(DMCCW)      (DYNAMIC) CHANNEL PROGRAM ADDRESS.
DMIDCB   DC    F'0'          (DYNAMIC) DCB PTR.
DMIRST   DC    F'0'               RESTART POINTER.
DMIBLK   DC    H'0'               BLOCK COUNT (UNUSED)
DMIERR   DC    H'0'               ERROR COUNT (UNUSED)
         SPACE
DMCCW    DS    0D            1052 CCW DEFINITIONS.
*                            READ
DMCREAD  DC    X'0A'         READ CODE.
DMCRDATA DC    FL3'0'        DATA PTR.
DMCRFLAG DC    BL1'01100000' CC,SLI.
         DC    X'00'
DMCRNBR  DC    FL2'1'        COUNT FIELD.
*                            TRANSFER TO NOP.
DMCTRA   DC    X'08'         TRANSFER IN CHANNEL.
         DC    AL3(DMCNOP)   TO NOP.
         DC    F'0'          IGNORED.
*                            WRITE
DMCWRITE DC    X'09'         WRITE CODE.
DMCWDATA DC    FL3'0'        DATA PTR.
DMCWFLAG DC    BL1'01100000' CC,SLI.
         DC    X'00'
DMCWNBR  DC    FL2'1'             COUNT FIELD.
*                            NOP.
*                                 ACTIVE COMMANDS CHAINED TO NOP FORCES
*                                 DEVICE END AND CHANNEL END TO OCCUR
*                                 TOGETHER,AVOIDING FUTURE INTERCEPTS,
*                                 ALLOWING CURRENT ERROR CHECK.
DMCNOP   DC    X'03'              NOP CODE
         DC    FL3'0'             NO DATA
         DC    BL1'00100000'      SLI
         DC    X'00'
         DC    FL2'1'             NON-ZERO COUNT
*                            ALARM.
DMCGONG  DC    X'0B'              GONG CODE
         DC    FL3'0'             NO DATA
         DC    BL1'00100000'      SLI.
         DC    X'00'
         DC    FL2'1'             NON ZERO COUNT
         MEND
./ ADD NAME=IEEVC101
*%GOTO VC101PRO;    /*
         MACRO
         IEEVC101 &DSECT=YES
         SPACE 1    */
*%VC101PRO: ;
*/********************************************************************/
*/*                                                                  */
*/*                         IEEVC101                                 */
*/*                                                                  */
*/* COPYRIGHT                                                        */
*/*          5740-XYN COPYRIGHT IBM CORP. 1980,                      */
*/*          LICENSED MATERIAL-PROGRAM,                              */
*/*          PROPERTY OF IBM,                                        */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*                                                                  */
*/* STATUS     - OS/VS2 JBB1226                                      */
*/*                                                                  */
*/* INVOCATION -                                                     */
*/*          BAL  - SPECIFY: IEEVC101                                */
*/*                 UNLESS A DSECT IS NOT WANTED.  IN THAT CASE      */
*/*                 SPECIFY: IEEVC101 DSECT=NO                       */
*/*          PL/S - SPECIFY: %INCLUDE SYSLIB(IEEVC101)               */
*/*                 IF IT IS DESIRED THAT THE MAPPING BE BASED ON    */
*/*                 A POINTER, DEFINE A MACRO CHARACTER VARIABLE     */
*/*                 VC101BAS AND SET IT TO BE THE NAME OF THE        */
*/*                 POINTER TO USE.                                  */
*/*                   EX. %DCL VC101BAS CHAR                         */
*/*                       % VC101BAS = 'CV101PTR'                    */
*/*                                                                  */
*/*                 IF THE MAPPING IS NOT TO BE BASED AT ALL, DEFINE */
*/*                 A MACRO CHARACTER VARIABLE VC101BAS AND SET IT   */
*/*                 TO 'NONE'.                                       */
*/*                                                                  */
*/* FUNCTION   - THIS MACRO MAPS C101WORK, THE WORKAREA FOR THE      */
*/*              DISPLAY U  COMMAND MODULES: IEE20110, IEE21110,     */
*/*              IEE22110, IEE23110, AND IEE24110.                   */
*/*                                                                  */
*/* CHANGE ACTIVITY - G382P2I - NEW FOR THIS RELEASE                 */
*/*                                                                  */
*/********************************************************************/
*/* A 000000-999999                                          @G382P2I*/
* %GOTO VC101PLS;        %/*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').VC101B1
C101WORK DSECT           D U WORKAREA
         AGO   .VC101B2
.VC101B1 ANOP
         DS    0D
C101WORK EQU   *         D U WORKAREA
.VC101B2 ANOP
C101HDR  DS    CL4       IEEVC101 HEADER
UCBADDRA DS    7H        UCB ADDRESSES - HALFWORDS
UCBADDRB DS    H         FOUND BY IEE23110
SWORD    DS    3F        SAVE AREA ACROSS MODULES
         ORG   SWORD
SWORD1   DS    F         REGISTER 13 - SAVE AREA PTR
SWORD2   DS    F         REGISTER 14 - RETURN ADDRESS
SWORD3   DS    F         DEVICE NAME TABLE POINTER
UNIT1    DS    F         HOLD ADDRESS ONE -
LOW      EQU   UNIT1     THE LOW UNIT ADDRESS
UNIT2    DS    F         HOLD ADDRESS TWO -
CURRENT  EQU   UNIT2     THE CURRENT UNIT ADDRESS
UNIT3    DS    F         HOLD ADDRESS THREE -
HIGH     EQU   UNIT3     THE HIGH UNIT ADDRESS
         SPACE 2
***********************************************************************
*
* FLAG1 BYTE IS SET BY IEE20110 TO REFLECT THE DEVICE TYPE(S)
* REQUESTED BY THE D U COMMAND.  THE BITS SET CORRESPOND TO THE BIT
* SETTINGS IN BYTE 3 OF THE UCBTYP FIELD.
*
***********************************************************************
         SPACE 1
FLAG1    DS    XL1       *FLAG1 FIELD*
TATYPE   EQU   UCB3TAPE  TAPE DEVICE
TPTYPE   EQU   UCB3COMM  TELECOMMUNICATIONS DEVICES
DATYPE   EQU   UCB3DACC  DIRECT ACCESS DEVICES
GRTYPE   EQU   UCB3DISP  GRAPHICS DISPLAY DEVICES
URTYPE   EQU   UCB3UREC+UCB3CHAR  UNIT RECORD + CHAR RDR DEVICES
ALLTYPE  EQU   TATYPE+TPTYPE+DATYPE+GRTYPE+URTYPE    ALL DEVICE TYPES
CTCTYPE  EQU   X'41'     CHANNEL TO CHANNEL ADAPTOR TYPE
MOD1     EQU   X'09'     3330 MOD1
MOD11    EQU   X'0D'     3330 MOD11
VIRTUAL  EQU   X'08'     MSS
SUFFIX1  EQU   C'1'      MARK AS 3330 MOD11
SUFFIXV  EQU   C'V'      MARK AS 3330 MOD1 AND MSS
         SPACE 2
***********************************************************************
*
* FLAG2 BYTE IS SET BY IEE20110 TO REFLECT THE D U COMMAND REQUEST
*
***********************************************************************
         SPACE 1
FLAG2    DS    XL1       *DISPLAY FLAGS*
ONLINS   EQU   X'80'     DISPLAY ONLINE DEVICES
OFFLNS   EQU   X'40'     DISPLAY OFFLINE DEVICES
ALLS     EQU   X'20'     DISPLAY OFFLINE + ONLINE DEVICES
ALLOCS   EQU   X'10'     DISPLAY ALLOCATED DEVICES
SINGLE   EQU   X'08'     SINGLE DEVICE REQUEST
C101F25  EQU   X'04'     RESERVED
C101F26  EQU   X'02'     RESERVED
R13UCBNM EQU   X'01'     FLAG FOR COMPSET ROUTINE
         SPACE 2
***********************************************************************
*
* FLAG3 BYTE - COMMUNICATIONS FLAGS
*
***********************************************************************
         SPACE 1
FLAG3    DS    XL1       *COMMUNICATIONS FLAGS*
C101F30  EQU   X'80'     RESERVED
C101F31  EQU   X'40'     RESERVED
C101F32  EQU   X'20'     RESERVED
DEVDEF   EQU   X'10'     DEVICE ADDRESS DEFAULTED
HEADOUTF EQU   X'08'     HEADING AND LABELS ARE OUT
C101F35  EQU   X'04'     RESERVED
C101F36  EQU   X'02'     RESERVED
C101F37  EQU   X'01'     RESERVED
         SPACE 2
***********************************************************************
*
* FLAG4 BYTE IS USED FOR COMMUNICATING OUTPUT MESSAGES
*
***********************************************************************
         SPACE 1
FLAG4    DS    XL1       *MESSAGE INDEX FOR IEE22110*
EXITBIT  EQU   X'00'     NO MESSAGE - RETURN TO CALLER
MSG1     EQU   X'04'     NO DEVICE WITH REQUESTED ATTRIBUTES
MSG3     EQU   X'08'     INVALID OPERAND RE-ENTER
MSG4     EQU   X'0C'     INSUFFICIENT STORAGE
         SPACE 2
***********************************************************************
*
* FLAG5 BYTE - COMMUNICATIONS FLAGS
*
***********************************************************************
         SPACE 1
FLAG5    DS    XL1       *COMMUNICATIONS FLAGS*
NODEF    EQU   X'80'     LINE DEFAULT NOT TAKEN
INITENT  EQU   X'40'     INITIAL ENTRY TO IEE23110
INITUNT2 EQU   X'20'     NEED TO LOAD DEVICE NAME TABLE
CRTMSG2  EQU   X'10'     NO. OF UNITS REQUESTED EXCEEDS NO. AVAILABLE
C101F54  EQU   X'08'     RESERVED
DISPBIT  EQU   X'04'     VALID ADDRESS FOUND
DISPEND  EQU   X'02'     END OF DISPLAY
GOTSTOR  EQU   X'01'     TUCBLST STORAGE HAS BEEN OBTAINED
         SPACE 2
***********************************************************************
*
* FLAG6 BYTE - MESSAGE FLAGS FOR IEE24110
*
***********************************************************************
         SPACE 1
FLAG6    DS    XL1       *MESSAGE FLAGS FOR IEE24110*
FLG6MSG1 EQU   X'80'     DISPLAY TRUNCATED - INSUFFICIENT STORAGE
FLG6MSG2 EQU   X'40'     INCOMPLETE UNIT ALLOCATION STATUS
FLG6MSG3 EQU   X'20'     ALLOC STATUS UNAVAILABLE
C101F63  EQU   X'10'     RESERVED
C101F64  EQU   X'08'     RESERVED
C101F65  EQU   X'04'     RESERVED
C101F66  EQU   X'02'     RESERVED
C101F67  EQU   X'01'     RESERVED
         SPACE 2
***********************************************************************
*
* PARAMETER LIST FOR SVC 35
*
***********************************************************************
         SPACE 1
         DS    0F
WTOSET   DS    XL1       FOR ADDRESSABILITY
TEXTLEN  DS    XL1       OUTPUT LENGTH
FULLINE  EQU   76         FULL LINE - FOR TEXTLEN
MCSONE   DS    XL1       MCS FLAGS PART ONE
SETONE   EQU   X'E0'      ROUTING + DESCRIPTOR CODE EXIST,QUEUE BY ID,
*                         COMMAND RESPONSE - FOR MCSONE
MCSTWO   DS    XL1       MCS FLAGS PART TWO
SETTWO   EQU   X'40'      MLWTO - FOR MCSTWO
MSGT     DS    0C        BEGIN TEXT LINE
TEXT     DS    CL72      TEXT FOR SVC 35
         ORG   TEXT
TITLEID  DS    CL8       MESSAGE ID
TITLEDGH DS    CL3       HOURS.
TITLEDGM DS    CL3       MINUTES.
TITLEDGS DS    CL2       SECONDS
TITLENM  DS    CL11      DISPLAY NAME
         ORG   TEXT      REDEFINE TEXT FIELD
UCBN1    DS    CL5       UNIT ADDRESS
MODL1    DS    CL5       DEVICE TYPE (UND,CTC ,CTC1,CTCV)
USTAT1   DS    CL1       STATUS (O,A,S,C,OFFLINE)
USTAT2   DS    CL4       STAUS (-BSY,-MTP,-NRD,-RAL)
USTAT3   DS    CL3       STATUS (-R)
VOLID1   DS    CL7       VOLUME SERIAL NUMBER
VOST1A   DS    CL4       VOLUME STATE (PUB,PRIV,STRG)
VOST1B   DS    CL6       VOLUME STATE (-REMOV,-RSDNT,-RSERV)
         ORG   TEXT+72   ORG FOR WTO TAIL
         SPACE 1
DESCODE  DS    CL2       DESCRIPTOR CODES
RTECODE  DS    CL2       ROUTING CODES
TYPEFLAG DS    CL2       MESSAGE TYPES
AID      DS    CL1       AREA ID FIELD
LNUM     DS    CL1       NUMBER OF LINES
         SPACE 1
***********************************************************************
*
* END OF PARAMETER LIST FOR SVC 35
*
***********************************************************************
         SPACE 2
HOLD2    DS    F         MLWTO ID/CONSOLE ID FOR WTO
NODEVICS DS    H         NUMBER OF UNITS REQUESTED
NODEVDEF EQU   100       DEFAULT
IDFLD    DS    CL1       AREA ID SAVE AREA
C101RB   DS    CL1       RESERVED
         DS    0F        BOUNDARY FULLWORD
REGSAV   DS    16F       SAVEAREA FOR REGISTERS - USED IN IEE23110
DATAADDR DS    F         DATA AREA POINTER FOR IEE24110
SAVREG14 DS    F         REGISTER 14 SAVE AREA
C101RESV DS    CL40      RESERVED
WAL      EQU   *-C101WORK     LENGTH OF PARAMETER LIST - D U WORKAREA
         MEND            */;
*%VC101PLS: ;
*%IF VC101BAS ^= 'NONE' % THEN %GOTO VC101P1;
* DCL 1 C101WORK BDY(DWORD),     /* D U WORKAREA                     */
*%GOTO VC101P3;
*%VC101P1: ;
*%IF VC101BAS ^= '' %THEN %GOTO VC101P2;
* DCL 1 C101WORK BDY(DWORD) BASED, /* D U WORKAREA                   */
*%GOTO VC101P3;
*%VC101P2: ;
* DCL 1 C101WORK BDY(DWORD) BASED(VC101BAS), /* D U WORKAREA */
*%VC101P3: ;
*       3 C101HDR CHAR(4),      /* IEEVC101 HEADER                   */
*       3 UCBADDRA CHAR(14),    /* UCB ADDRESSES - HALFWORDS         */
*       3 UCBADDRB FIXED(15),   /* FOUND BY IEE23110                 */
*       3 SWORD,                /* SAVE AREA ACROSS MODULES          */
*         5 SWORD1 FIXED(31),   /* REGISTER 13 - SAVE AREA PTR       */
*         5 SWORD2 FIXED(31),   /* REGISTER 14 - RETURN ADDRESS      */
*         5 SWORD3 FIXED(31),   /* DEVICE NAME TABLE POINTER         */
*       3 UNIT1 FIXED(31),      /* HOLD ADDRESS ONE -                */
*         5 LOW FIXED(31),      /* THE LOW UNIT ADDRESS              */
*       3 UNIT2 FIXED(31),      /* HOLD ADDRESS TWO -                */
*         5 CURRENT FIXED(31),  /* THE CURRENT UNIT ADDRESS          */
*       3 UNIT3 FIXED(31),      /* HOLD ADDRESS THREE -              */
*         5 HIGH FIXED(31),     /* THE HIGH UNIT ADDRESS             */
* @EJECT ASM;
*/********************************************************************/
*/*                                                                  */
*/*    FLAG1 BYTE IS SET BY IEE20110 TO REFLECT THE DEVICE TYPE(S)   */
*/*    REQUESTED BY THE D U COMMAND.  THE BITS SET CORRESPOND TO THE */
*/*    BIT SETTINGS IN BYTE 3 OF THE UCBTYPE FIELD.                  */
*/*                                                                  */
*/********************************************************************/
*       3 FLAG1 BIT(8),
*         5 TATYPE BIT(1),      /* TAPE DEVICES                      */
*         5 TPTYPE BIT(1),      /* TELECOMMUNICATIONS DEVICES        */
*         5 DATYPE BIT(1),      /* DIRECT ACCESS DEVICES             */
*         5 GRTYPE BIT(1),      /* GRAPHICS DISPLAY DEVICES          */
*         5 URTYPE BIT(2),      /* UNIT RECORD + CHAR RDR DEVICES    */
*/********************************************************************/
*/*                                                                  */
*/*    FLAG2 BYTE IS SET BY IEE20110 TO REFLECT THE D U COMMAND      */
*/*    REQUEST.                                                      */
*/*                                                                  */
*/********************************************************************/
*       3 FLAG2 BIT(8),       /* **DISPLAY FLAGS **                */
*         5 ONLINS BIT(1),      /* DISPLAY ONLINE DEVICES            */
*         5 OFFLNS BIT(1),      /* DISPLAY OFFLINE DEVICES           */
*         5 ALLS   BIT(1),      /* DISPLAY OFFLINE + ONLINE DEVICES  */
*         5 ALLOCS BIT(1),      /* DISPLAY ALLOCATED DEVICES         */
*         5 SINGLE BIT(1),      /* SINGLE DEVICE REQUEST             */
*         5 C101F25 BIT(1),     /* RESERVED                          */
*         5 C101F26 BIT(1),     /* RESERVED                          */
*         5 R13UCBNM BIT(1),    /* FLAG FOR COMPSET ROUTINE          */
*/********************************************************************/
*/*                                                                  */
*/*    FLAG3 BYTE - COMMUNICATIONS FLAGS                             */
*/*                                                                  */
*/********************************************************************/
*       3 FLAG3 BIT(8),         /* ** COMMUNICATIONS FLAGS **        */
*         5 C101F30  BIT(1),    /* RESERVED                          */
*         5 C101F31  BIT(1),    /* RESERVED                          */
*         5 C101F32  BIT(1),    /* RESERVED                          */
*         5 DEVDEF   BIT(1),    /* DEVICE ADDRESS DEFAULTED          */
*         5 HEADOUTF BIT(1),    /* HEADING AND LABELS ARE OUT        */
*         5 C101F35  BIT(1),    /* RESERVED                          */
*         5 C101F36  BIT(1),    /* RESERVED                          */
*         5 C101F37  BIT(1),    /* RESERVED                          */
*/********************************************************************/
*/*                                                                  */
*/*         FLAG4 BYTE IS USED FOR COMMUNICATING OUTPUT MESSAGES     */
*/*                                                                  */
*/********************************************************************/
*       3 FLAG4 FIXED(8),       /* ** MESSAGE INDEX FOR IEE22110 **  */
* @EJECT ASM;
*/********************************************************************/
*/*                                                                  */
*/*         FLAG5 BYTE - COMMUNICATIONS FLAGS                        */
*/*                                                                  */
*/********************************************************************/
*       3 FLAG5 BIT(8),         /* ** COMMUNICATIONS FLAGS **        */
*         5 NODEF    BIT(1),    /* LINE DEFAULT NOT TAKEN            */
*         5 INITENT  BIT(1),    /* INITIAL ENTRY TO IEE23110         */
*         5 INITUNT2 BIT(1),    /* NEED TO LOAD DEVICE NAME TABLE    */
*         5 CRTMSG2  BIT(1),    /* NO. OF UNITS REQUESTED EXCEEDS NO.
*                                  AVAILABLE                         */
*         5 C101F54  BIT(1),    /* RESERVED                          */
*         5 DISPBIT  BIT(1),    /* VALID ADDRESS FOUND               */
*         5 DISPEND  BIT(1),    /* END OF DISPLAY                    */
*         5 GOTSTOR  BIT(1),    /* TUCBLST STORAGE HAS BEEN OBTAINED */
*/********************************************************************/
*/*                                                                  */
*/*         FLAG6 BYTE - MESSAGE FLAGS FOR IEE24110                  */
*/*                                                                  */
*/********************************************************************/
*       3 FLAG6 BIT(8),         /* ** MESSAGE FLAGS FOR IEE24110 **  */
*         5 FLG6MSG1 BIT(1),    /* DISPLAY TRUNCATED - INSUFFICIENT
*                                  STORAGE                           */
*         5 FLG6MSG2 BIT(1),    /* INCOMPLETE UNIT ALLOCATION STATUS */
*         5 FLG6MSG3 BIT(1),    /* ALLOC STATUS UNAVAILABLE          */
*         5 C101F63  BIT(1),    /* RESERVED                          */
*         5 C101F64  BIT(1),    /* RESERVED                          */
*         5 C101F65  BIT(1),    /* RESERVED                          */
*         5 C101F66  BIT(1),    /* RESERVED                          */
*         5 C101F67  BIT(1),    /* RESERVED                          */
*       3 * FIXED(16),          /* RESERVED                          */
* @EJECT ASM;
*/********************************************************************/
*/*                                                                  */
*/*    PARAMETER LIST FOR SVC 35                                     */
*/*                                                                  */
*/********************************************************************/
*       3 WTOSET FIXED(8) BDY(WORD),        /* FOR ADDRESSABILITY    */
*       3 TEXTLEN FIXED(8),     /* OUTPUT LENGTH                     */
*       3 MCSONE  FIXED(8),     /* MCS FLAGS PART ONE                */
*       3 MCSTWO  FIXED(8),     /* MCS FLAGS PART TWO                */
*       3 MSGT,                 /* BEGIN TEXT LINE                   */
*         5 TEXT CHAR(72),      /* TEXT FOR SVC 35                   */
*           7 TITLEID CHAR(8),  /* MESSAGE ID                        */
*           7 TITLEDGH CHAR(3), /* HOURS.                            */
*           7 TITLEDGM CHAR(3), /* MINUTES.                          */
*           7 TITLEDGS CHAR(2), /* SECONDS                           */
*           7 TITLENM  CHAR(11), /* DISPLAY NAME                     */
*         5 DESCODE CHAR(2),    /* DESCRIPTOR CODES                  */
*         5 RTECODE CHAR(2),    /* ROUTING CODES                     */
*         5 TYPEFLAG CHAR(2),   /* MESSAGE TYPES                     */
*         5 AID      CHAR(1),   /* AREA ID FIELD                     */
*         5 LNUM     CHAR(1),   /* NUMBER OF LINES                   */
*/********************************************************************/
*/*                                                                  */
*/*    END OF PARAMETER LIST FOR SVC 35                              */
*/*                                                                  */
*/********************************************************************/
*       3 HOLD2 FIXED(31),      /* MLWTO ID/CONSOLE ID FOR WTO       */
*       3 NODEVICS FIXED(16),   /* NUMBER OF UNITS REQUESTED         */
*       3 IDFLD CHAR(1),        /* AREA ID SAVE AREA                 */
*       3 C101RB CHAR(1),       /* RESERVED                          */
*       3 REGSAV CHAR(64),      /* SAVEAREA FOR REGISTERS - USED IN
*                                  IEE23110                          */
*       3 DATAADDR PTR(31),     /* DATA AREA POINTER FOR IEE24110    */
*       3 SAVREG14 PTR(31),     /* REGISTER 14 SAVE AREA             */
*       3 C101RESV CHAR(40) BDY(WORD); /* RESERVED                   */
* @EJECT ASM;                                                        */
*/********************************************************************/
*/*                                                                  */
*/*   REDEFINE TEXT FIELD OF SVC 35 PARAMETER LIST                   */
*/*                                                                  */
*/********************************************************************/
* DCL 1 DEFTEXT  DEFINED(TEXT), /* REDEFINE TEXT FIELD               */
*       3 UCBN1 CHAR(5),        /* UNIT ADDRESS                      */
*       3 MODL1 CHAR(5),        /* DEVICE TYPE (UND,CTC ,CTC1,CTCV)  */
*       3 USTAT1 CHAR(1),       /* STATUS (O,A,S,C,OFFLINE)          */
*       3 USTAT2 CHAR(4),       /* STATUS (-BSY,-MTP,-NRD,-RAL)      */
*       3 USTAT3 CHAR(3),       /* STATUS (-R)                       */
*       3 VOLID1 CHAR(7),       /* VOLUME SERIAL NUMBER              */
*       3 VOST1A CHAR(4),       /* VOLUME STATE (PUB,PRIV,STRG)      */
*       3 VOST1B CHAR(6);       /* VOLUME STATE (-REMOV,-RSDNT,-RSERV)
*                                                                    */
*/********************************************************************/
*/*                                                                  */
*/*         FOR FLAG1 MULTIPLE BIT CHECKS                            */
*/*                                                                  */
*/********************************************************************/
* DCL ALLTYPE BIT(8) CONSTANT('FC'X);   /* ALL DEVICE TYPES          */
* DCL CTCTYPE BIT(8) CONSTANT('41'X);   /* UNIT REC+CHAR RDR DEVICES */
* DCL MOD1    BIT(8) CONSTANT('09'X);   /* 3330 MOD1                 */
* DCL MOD11   BIT(8) CONSTANT('0D'X);   /* 3330 MOD11                */
* DCL VIRTUAL BIT(8) CONSTANT('08'X);   /* MSS                       */
* DCL SUFFIX1 CHAR(1) CONSTANT('1');    /* MARK AS 3330              */
* DCL SUFFIXV CHAR(1) CONSTANT('V');    /* MARK AS 3330 AND MSS      */
*/********************************************************************/
*/*                                                                  */
*/*         FLAG4 MESSAGE INDEXES                                    */
*/*                                                                  */
*/********************************************************************/
* DCL EXITBIT FIXED(8) CONSTANT(0); /* NO MESSAGE - RETURN TO CALLER */
* DCL MSG1    FIXED(8) CONSTANT(4); /* NO DEVICE WITH REQUESTED
*                                      ATTRIBUTES                    */
* DCL MSG3    FIXED(8) CONSTANT(8); /* INVALID OPERAND RE-ENTER      */
* DCL MSG4    FIXED(8) CONSTANT(12); /* INSUFFICIENT STORAGE         */
* @EJECT ASM;
*/********************************************************************/
*/*                                                                  */
*/*    PARAMETER LIST FOR SVC 35 CONSTANTS                           */
*/*                                                                  */
*/********************************************************************/
* DCL FULLINE FIXED(8) CONSTANT(76);    /* FULL LINE - FOR TEXTLEN   */
* DCL SETONE  BIT(8) CONSTANT('E0'X); /* ROUTING DESCRIPTOR CODE EXIST
*                                        QUEUE BY ID, COMMAND RESPONSE
*                                           - FOR MCSONE             */
* DCL SETTWO  BIT(8) CONSTANT('40'X);  /* MLWTO - FOR MCSTWO         */
* DCL NODEVDEF FIXED(16) CONSTANT(100);  /* DEFAULT - FOR NODEVICS   */
./ ADD NAME=IEEVCHWA
*        %GOTO CHKPTWA1;
         MACRO
         IEEVCHWA  &OWNWA,&VER=1
*        09/03/74  LEVEL=03                                    @Y30DSDT
.*       VERSION:
.*       1 = OS
.*       2 = AOS/1
.*       3 = AOS/2
         AIF   ('&VER' NE '2').LIB2XA1  TEST FOR AOS/1
         IEFQMIOP
QMLISTLN EQU   *-QMIOP             LENGTH OF PARM LIST
.LIB2XA1 ANOP
CHKWA    DSECT                     CHKPT WORK AREA
CKWAOFST DS    F                   OFFSET TO CHKMAIN'S & CHKDCB'S W.A.
CKBFOFST DS    F                   OFFSET TO CHKPT'S BUFFER
*        REGISTER EQUATES
R0       EQU   0
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
R6       EQU   6
R7       EQU   7
R8       EQU   8
R9       EQU   9
RA       EQU   10
RB       EQU   11
RC       EQU   12
RD       EQU   13
RE       EQU   14
RF       EQU   15
*
*             *********************************************************
*             *                                                       *
*             *   THE INFORMATION MAPPED BY THIS MACRO IS SHARED      *
*             *        BY ALL CHKPT ROUTINES (CHKPT, CHKDCB,          *
*             *   PRESERVE, CHKMAIN, IORESUME, AND RETURN)            *
*             *                                                       *
*             *********************************************************
CKWACL   DS    F                   LENGTH OF CHKWA
CKBUFL   DS    F                   LENGTH OF CHKPT'S BUFFER
CKTCBAD  DS    F                   POINTER TO TCB OF P/P
*        THE ORDER OF THE NEXT TWO CARDS MUST BE CKPPM, CKPPE.
CKPPM    DS    F                   LOW ADDRESS OF P.P. CORE
CKPPE    DS    F                   HIGH ADDRESS OF P.P. CORE
CKPPML   DS    F                   LOW ADDR OF SECONDARY PP CORE
CKPPEL   DS    F                   HIGH ADDR OF SECONDARY PP CORE
CKTIOLN  DS    F                   LENGTH OF TIOT
CKFLAG1  DS    CL1                 CHKPT HOUSEKEEPING FLAGS
CKTRKOV  EQU   64                  TRACK OVERFLOW SPECIFIED
CKTAPE   EQU   32                  CHKPT DATA SET ON TAPE
         AIF   ('&VER' NE '1').LIB1XA1  TEST FOR OS
CKMFT    EQU   16                  MFT SYSTEM
CKMVT    EQU   8                   MVT SYSTEM
.LIB1XA1 ANOP
CKCANCEL EQU   4                   REQUEST CANCELLED
CKOPEN   EQU   2                   CHKPT ISSUED OPEN
CKBPAM   EQU   1                   CHKPT DATA SET OPENED FOR BPAM
CKFLAG2  DS    CL1
CKEOV    EQU   32                  INDICATES EOV HAS OCCURRED
CKUSPCHD EQU   4                   INDICATES USER SUPPLIED CHECKID
CKFREEM  EQU   2                   FREEMAIN AND CLOSE CHKWA IN CER
CKON     EQU   1                   INDICATES PURGED I/O
         AIF   ('&VER' NE '3').LIB2XAA  TEST FOR AOS 1-2
CKDCBSI  DS    H                   SAVE AREA FOR USER BLKSIZE
.LIB2XAA ANOP
CKRETCOD DS    CL2                 CHKPT RETURN CODE
CKNORM   EQU   X'00'               CHKPT NORMAL
CKPGMERR EQU   X'08'               CHKPT PROGRAM ERROR
CKIOERR  EQU   X'0C'               INDICATES I/O ERROR
CKPSBERR EQU   X'10'               CHKPT POSSIBLE ERROR
CKMSGCOD DS    CL2                 CHKPT MESSAGE CODE
CKSSCR   DS    F                   ADDR OF 1ST SSCR FOR VSAM     Y02076
CKDECB1  DS    0F                  MAPPING OF FIRST DECB
CKECB1   DS    F
CKTYPE1  DS    H
CKLNGTH1 DS    H
CKDCBAD1 DS    0A
CKDCBAD  DS    A                   ADDR OF CHKPT DCB
CKAREA1  DS    F
CKIOBPT1 DS    F
CKDECB2  DS    0F                  MAPPING OF SECOND DECB
CKECB2   DS    F
CKTYPE2  DS    H
CKLNGTH2 DS    H
CKDCBAD2 DS    F
CKAREA2  DS    F
CKIOBPT2 DS    F
CKINT    DS    F                   DATA MANAGEMENT INTERFACE BYTE
CKSYNAD  DS    F                   SAVE AREA FOR DCBSYNAD FIELD
CKPARMAD DS    F                   ADDR OF PARM LIST
CKUNIT   DS    CL3                 UNIT FOR CHKPT D.S.
CKDDNAME DS    CL8                 CHKPT D.S. DDNAME
CKVOLSER DS    CL6                 VOL.SER.NO.FOR CHKPT D.S.
CKCHEKID DS    2F                  GENERATED CHECKID
CKTTR    DS    1F                  TTRZ FOR BPAM CHKPT DS
CKJCTMB  DS    2F                  MBBCCHHR OF JCT
         AIF   ('&VER' NE '2').LIB2XA2  TEST FOR AOS/2
CKDCBSI  DS    F
CKDSDIN  DS    F
CKDSDOUT DS    F
CKJCMIN  DS    F
CKJCMOUT DS    F
.LIB2XA2 ANOP
CKERAS00 DS    F                   ERASE AREA 00                 Y02076
CKERAS01 DS    F                   ERASE AREA 01                 Y02076
CKERAS02 DS    F                   ERASE AREA 02                 Y02076
CKERAS03 DS    F                   ERASE AREA 03                 Y02076
CKERAS04 DS    F                   ERASE AREA 04                 Y02076
CKERAS05 DS    F                   ERASE AREA 05                 Y02076
CKERAS06 DS    F                   ERASE AREA 06                 Y02076
CKERAS07 DS    F                   ERASE AREA 07                 Y02076
CKERAS08 DS    F                   ERASE AREA 08                 Y02076
CKERAS09 DS    F                   ERASE AREA 09                 Y02076
CKREGSAV DS    18F                 REGISTER SAVE AREA
         AIF   ('&VER' NE '2').LIB2XA3  TEST FOR AOS/2
         DS    0D
CKDER    EQU   *                   READ IN AREA FOR DER AND JCT
.LIB2XA3 ANOP
CKJCT    EQU   *
         IEFAJCTB
         ORG   INJMJCT+176
         DS    0D
         AIF   ('&VER' EQ '2').LIB2XA4  TEST FOR AOS/2
         DS    F
DXECB    DS    0CL4
         DC    X'00000000'
DXIOB    DS    0CL32
IOBFLAG1 DC    X'00'
IOBFLAG2 DC    X'00'
IOBSENSE DS    0H
IOBSENS0 DS    CL1
IOBSENS1 DS    CL1
IOBECBPT DS    XL1
         DC    AL3(DXECB)          ECB ADDRESS
IOBCSW   DS    0D
IOBCOMAD DC    X'00000000'
IOBSTAT0 DC    X'00'
IOBSTAT1 DC    X'00'
IOBCNT   DC    X'0000'
IOBSIOCC DS    XL1
IOBSTART DC    AL3(DXCCW)          CHANNEL PROGRAM ADDRESS
IOBWGHT  DS    XL1
IOBDCBPT DC    AL3(0)              DCB ADDRESS
         DS    XL1
         DS    XL3
IOBINCAM DC    X'0000'
IOBERRCT DS    XL2
DXDAADR  DS    D                   MBBCCHHR SEEK ADDRESS
         CNOP  0,8
DXCCW    DS    0CL24
DXCCW1   DS    D
DXCCW2   DS    D
DXCCW3   DS    D
.LIB2XA4 ANOP
         AIF   ('&VER' NE '2').LIB2XA5  TEST FOR AOS/2
CKQMLIST EQU   *
         DS    CL(QMLISTLN)        Q MGR PARM LIST AREA
         DS    0D
CKPCT    EQU   *                   PAGE CTL TABLE START
QMWKA    DS    CL256               Q MNGR WORK AREA
         IEFJFCBN
         ORG   INFMJFCB
         IEFASIOT
CKWAEND  EQU   *
* END OF CHECKPOINT COMMON WORK AREA AND BEGINNING OF SCRATCH
* SPACE.  VARIOUS SECTIONS (HOUSEKEEPING, CKDCB, CKMAIN, PRESERVE,
* RESIO, AND EXIT) DEFINE THE SCRATCH SPACE DIFFERENTLY.  THIS
* SPACE EXTENDS FROM THE SYMBOL CKWAEND TO THE 200-BYTE SUR
* BUFFER AT THE HIGH-ADDRESS END OF THE WORK AREA.
.LIB2XA5 ANOP
         MEND
 @EJECT;
*%CHKPTWA1:  ;
*                                        /* TEST FOR AOS/1   @Y30DSDT*/
*%IF VER ^='2'
* %THEN
*   %GOTO LIB2XA1 ;                                        /*@Y30DSDT*/
* /*******************************************************************/
* /*           REGISTER DECLARES                                     */
* /*******************************************************************/
*        DCL R0 REG(0)  PTR(31);
*        DCL R1 REG(1)  PTR(31);
*        DCL R2 REG(2)  PTR(31);
*        DCL R3 REG(3)  PTR(31);
*        DCL R4 REG(4)  PTR(31);
*        DCL R5 REG(5)  PTR(31);
*        DCL R6 REG(6)  PTR(31);
*        DCL R7 REG(7)  PTR(31);
*        DCL R8 REG(8)  PTR(31);
*        DCL R9 REG(9)  PTR(31);
*        DCL RA REG(10) PTR(31);
*        DCL RB REG(11) PTR(31);
*        DCL RC REG(12) PTR(31);
*        DCL RD REG(13) PTR(31);
*        DCL RE REG(14) PTR(31);
*        DCL RF REG(15) PTR(31);
*%INCLUDE SYSLIB(IEFQMIOP);              /* INCLUDE Q MANAGER DSECT */
*%LIB2XA1:  ;
*DECLARE
*  1 CHKWA    BASED,
*   2 CKWAOFST    FIXED(31),             /* OFFSET TO BEGINNING OF
*                                           CHKMAIN'S AND CHKDCB'S
*                                           W.A.                     */
*   2 CKBFOFST    FIXED(31),             /* OFFSET TO BEGINNING OF
*                                           CHKPT'S BUFFER REGISTER */
*/*                                                                  */
*/*           ****************************************************** */
*/*           *                                                      */
*/*           *   THE INFORMATION MAPPED BY THIS MACRO IS SHARED     */
*/*           *        BY ALL CHKPT ROUTINES (CHKPT, CHKDCB,         */
*/*           *    PRESERVE, CHKMAIN, IORESUME, AM/0, AND RETURN)    */
*/*           *                                                      */
*/*           ****************************************************** */
*   2 CKWACL      FIXED(31),             /* LENGTH OF CHKWA          */
*   2 CKBUFL      FIXED(31),             /* LENGTH OF CHKPT'S BUFFER */
*   2 CKTCBAD     PTR(31),               /* POINTER TO TCB OF P/P    */
* /* THE ORDER OF THE NEXT TWO CARDS MUST BE CKPPM, CKPPE.           */
*   2 CKPPM       PTR(31),               /* PTR TO LOW ORDER ADDRESS
*                                           OF P.P. CORE             */
*   2 CKPPE       PTR(31),               /* PTR TO HIGH ORDER
*                                           ADDRESS OF P.P. CORE     */
*   2 CKPPML      PTR(31),               /* LOW ORDER ADDR OF
*                                           SECONDARY PP CORE        */
*   2 CKPPEL      PTR(31),               /* HIGH ORDER ADDR OF
*                                           SECONDARY PP CORE        */
*   2 CKTIOLN     FIXED(31),             /* LENGTH OF TIOT           */
*   2 CKFLAG1     CHAR(1),               /* CHKPT HOUSEKEEPING FLAGS */
*%DCL CKTRKOV  CHAR;
*%CKTRKOV ='''40''X';                    /* TRACK OVERFLOW SPECIFIED */
*%DCL CKTAPE   CHAR;
*%CKTAPE  ='''20''X';                    /* CHKPT DATA SET ON TAPE.  */
*                                        /* TEST FOR OS              */
*%IF VER ^='1'
* %THEN
*   %GOTO LIB1XA1 ;
*%DCL CKMFT    CHAR;
*%CKMFT   ='''10''X';                    /* MFT SYSTEM               */
*%DCL CKMVT    CHAR;
*%CKMVT   ='''08''X';                    /* MVT SYSTEM               */
*%LIB1XA1:  ;
*%DCL CKCANCEL CHAR;
*%CKCANCEL='''04''X';                    /* REQUEST CANCELLED        */
*%DCL CKOPEN   CHAR;
*%CKOPEN  ='''02''X';                    /* CHKPT ISSUED OPEN        */
*%DCL CKBPAM   CHAR;
*%CKBPAM  ='''01''X';                    /* CHKPT DATA SET OPENED
*                                           FOR BPAM                 */
*   2 CKFLAG2     CHAR(1),
*%DCL CKEOV    CHAR;
*%CKEOV   ='''20''X';                    /* INDICATES EOV HAS
*                                           OCCURRED.                */
*%DCL CKUSPCHD CHAR;
*%CKUSPCHD='''04''X';                    /* INDICATES USER SUPPLIED
*                                           CHECKID                  */
*%DCL CKFREEM  CHAR;
*%CKFREEM ='''02''X';                    /* INDICATES TO ONLY
*                                           FREEMAIN AND CLOSE CHKWA
*                                           IN CER                   */
*%DCL CKON     CHAR;
*%CKON    ='''01''X';                    /* INDICATES PURGED I/O     */
*                                        /* TEST FOR AOS 1-2         */
*%IF VER ^='3'
* %THEN
*   %GOTO LIB2XAA ;
*   2 CKDCBSI     FIXED(15),             /* SAVE AREA FOR USER
*                                           BLKSIZE                  */
*%LIB2XAA:  ;
*   2 CKRETCOD    CHAR(2),               /* CHKPT RETURN CODE        */
*    3 CKRETCD1   CHAR(1),               /* FIRST BYTE CHKPT R.C.    */
*    3 CKRETCD2   CHAR(1),               /* SECOND BYTE CHKPT R.C.   */
*%DCL CKNORM   CHAR;
*%CKNORM  ='''00''X';                    /* CHKPT NORMAL             */
*%DCL CKPGMERR CHAR;
*%CKPGMERR='''08''X';                    /* CHKPT PROGRAM ERROR      */
*%DCL CKIOERR  CHAR;
*%CKIOERR ='''0C''X';                    /* INDICATES I/O ERROR      */
*%DCL CKPSBERR CHAR;
*%CKPSBERR='''10''X';                    /* CHKPT POSSIBLE ERROR     */
*   2 CKMSGCOD    CHAR(2),               /* CHKPT MESSAGE CODE       */
*    3 CKMSGCD1   CHAR(1),               /* FIRST BYTE MESSAGE CODE  */
*    3 CKMSGCD2   CHAR(1),               /* SECOND BYTE MESSAGE CODE */
*   2 CKSSCR      PTR(31),               /* ADDR OF 1ST VSAM SSCR    */
*   2 CKDECB1     CHAR(20) BDY(WORD),    /* MAPPING OF 1ST DECB      */
*    3 XCTLNAME   CHAR(8)  BDY(WORD),    /* XCTL MODULE NAME         */
*     4 CKECB1    FIXED(31),
*     4 CKTYPE1   FIXED(15),
*     4 CKLNGTH1  FIXED(15),
*    3 CKDCBAD1   PTR(31),               /* ADDR OF CHKPT DCB.       */
*     4 CKDCBAD   PTR(31),
*    3 CKAREA1    FIXED(31),
*    3 CKIOBPT1   FIXED(31),
*   2 CKDECB2     CHAR(20) BDY(WORD),    /* MAPPING OF SECOND DECB   */
*    3 CKECB2     FIXED(31),
*    3 CKTYPE2    FIXED(15),
*    3 CKLNGTH2   FIXED(15),
*    3 CKDCBAD2   PTR(31),
*    3 CKAREA2    FIXED(31),
*    3 CKIOBPT2   FIXED(31),
*   2 CKINT       FIXED(31),             /* DATA MANAGEMENT
*                                           INTERFACE BYTE           */
*   2 CKSYNAD     FIXED(31),             /* SAVE AREA FOR DCBSYNAD
*                                           FIELD                    */
*   2 CKPARMAD    PTR(31),               /* ADDR OF PARM LIST        */
*   2 CKUNIT      CHAR(3),               /* UNIT FOR CHKPT D.S.      */
*   2 CKDDNAME    CHAR(8),               /* CHKPT D.S. DDNAME        */
*   2 CKVOLSER    CHAR(6),               /* VOL.SER.NO.FOR CHKPT
*                                           D.S.                     */
*   2 CKCHEKID (2) CHAR(4),              /* GENERATED CHECKID.       */
*   2 CKTTR    (1) FIXED(31),            /* TTRZ FOR BPAM CHKPT D.S. */
*   2 CKJCTMB  (2) FIXED(31),            /* MBBCCHHR OF JCT.         */
*%IF VER ^='2'
* %THEN
*   %GOTO LIB2XA2 ;
*                                        /* TEST FOR AOS/2           */
*   2 CKDCBSI     FIXED(31),
*   2 CKDSDIN     FIXED(31),
*   2 CKDSDOUT    FIXED(31),
*   2 CKJCMIN     FIXED(31),
*   2 CKJCMOUT    FIXED(31),
*%LIB2XA2:  ;
*   2 CKERAS00      FIXED(31),           /* ERASE AREA 00            */
*   2 CKERAS01      FIXED(31),           /* ERASE AREA 01            */
*   2 CKERAS02      FIXED(31),           /* ERASE AREA 02            */
*   2 CKERAS03      FIXED(31),           /* ERASE AREA 03            */
*   2 CKERAS04      FIXED(31),           /* ERASE AREA 04            */
*   2 CKERAS05      FIXED(31),           /* ERASE AREA 05            */
*   2 CKERAS06      FIXED(31),           /* ERASE AREA 06            */
*   2 CKERAS07      FIXED(31),           /* ERASE AREA 07            */
*   2 CKERAS08      FIXED(31),           /* ERASE AREA 08            */
*   2 CKERAS09      FIXED(31),           /* ERASE AREA 09            */
*   2 CKREGSAV (18) FIXED(31),           /* REGISTER SAVE AREA       */
*                                        /* TEST FOR AOS/2           */
*%IF VER ^='2'
* %THEN
*   %GOTO LIB2XA3 ;
*   2 CKDER       CHAR(0) BDY(DWORD),    /* READ IN AREA FOR DER&JCT*/
*                                        /* IN AREA FOR DER AND JCT  */
*%LIB2XA3:  ;
*   2 CKJCT       CHAR(0) BDY(DWORD);    /* READIN AREA FOR DER, JCT*/
*%IF CKSHORT='YES'                       /* SHORT FORM OF    @Z30SSDT*/
* %THEN                                  /* THE WORKAREA TO  @Z30SSDT*/
*  %GOTO LIB2XA5 ;                       /* BE USED.         @Z30SSDT*/
*%INCLUDE SYSLIB(IEFAJCTB);              /* INCLUDE JCT             */
*%IF VER='2'
* %THEN
*   %GOTO LIB2XA4 ;
*DECLARE                                 /* DECLARE CHECKPOINT IOB  */
*  1 CHKPTIOB BASED(ADDR(INJMJCT)+176) BDY(DWORD), /* BASED JCT+176 */
*   2 *           CHAR(4),               /*                         */
*   2 DXECB       FIXED(31),             /* ECB                     */
*   2 DXIOB       CHAR(32) BDY(WORD),    /* IOB                     */
*     3 IOBFLAG1    BIT(8),              /* IOB FLAG BYTE ONE       */
*       4 IOBDATCH  BIT(1),              /* DATA CHAINING USED      */
*       4 IOBCMDCH  BIT(1),              /* COMMAND CHAINING USED   */
*       4 IOBERRTN  BIT(1),              /* ERROR RTN IN CONTROL    */
*       4 IOBDVREP  BIT(1),              /* DEV. TO BE REPOSITIONED */
*       4 IOBCYCCK  BIT(1),              /* CYCLEC REDUNDANCY CHECK */
*                                        /* NEEDED (TAPE ONLY)      */
*        5 IOBFCREX BIT(1),              /* FETCH COMMAND RETRY EXIT*/
*                                        /* (DIRECT ACCESS ONLY)    */
*       4 IOBIOERR  BIT(1),              /* I/O ERROR HAS OCCURRED  */
*       4 IOBUNREL  BIT(1),              /* THIS I/O REQUEST IS     */
*                                        /*UNRELATED (NON-SEQUENTIAL*/
*       4 IOBRSTRT  BIT(1),              /* RESTART ADDR IN IOB IS  */
*                                        /* TO BE USED              */
*     3 IOBFLAG2    CHAR(1),             /* IOB FLAG BYTE TWO       */
*       4 IOBHALT   BIT(1),              /* HALT I/O HAS BEEN ISSUED*/
*                                        /* BY SVC PURGE ROUTINE    */
*       4 IOBCENSE  BIT(1),              /*ISSUE SENSE COMMAND AFTER*/
*                                        /* DEVICE END OCCURS       */
*       4 IOBPURGE  BIT(1),              /*IOB HAS BEEN PURGED ALLOW*/
*                                        /* I/O TO QUIESCE          */
*       4 IOBRDHA0  BIT(1),              /* HOME ADDRESS TO BE READ */
*                                        /* NO SEEK NEEDED          */
*       4 IOBALTTR  BIT(1),              /*NO TEST FOR OUT-OF-EXTENT*/
*                                        /* ALTERNATE TRACK IN USE  */
*       4 IOBSKUPD  BIT(1),              /* SEEK ADDRESS IS BEING   */
*                                        /* UPDATED CYLINDER END OR */
*                                        /* FILE MASK VIOLATION HAS */
*                                        /* OCCURRED.               */
*       4 IOBSTAT   BIT(1),              /* DEVICE END STATUS HAS   */
*                                        /* BEEN ORED WITH CHANNEL  */
*                                        /* END STATUS,GRAPHICS DEV.*/
*       4 IOBPNCH   BIT(1),              /* TURNED ON BY QSAM WHEN  */
*                                        /* ERROR RECOVERY IS TO BE */
*                                        /* PROVIDED FOR THE 2540   */
*                                        /* CARD PUNCH.             */
*     3 IOBSENSE    CHAR(2),             /* IOB SENSE BYTES         */
*       4 IOBSENS0  CHAR(1),             /* FIRST IOB SENSE BYTE    */
*         5 IOBS0B0 BIT(1),              /* BIT 0 (DEVICE DEPENDENT)*/
*         5 IOBS0B1 BIT(1),              /* BIT 1 (DEVICE DEPENDENT)*/
*         5 IOBSOB2 BIT(1),              /* BIT 2 (DEVICE DEPENDENT)*/
*         5 IOBS0B3 BIT(1),              /* BIT 3 (DEVICE DEPENDENT)*/
*         5 IOBS0B4 BIT(1),              /* BIT 4 (DEVICE DEPENDENT)*/
*         5 IOBS0B5 BIT(1),              /* BIT 5 (DEVICE DEPENDENT)*/
*         5 IOBS0B6 BIT(1),              /* BIT 6 (DEVICE DEPENDENT)*/
*         5 IOBS0B7 BIT(1),              /* BIT 7 (DEVICE DEPENDENT)*/
*           6 IOBSNSC9 BIT(1),           /* CHANNEL NINE SENSED IN  */
*                                        /* CARRIAGE TAPE           */
*       4 IOBSENS1  CHAR(1),             /* SECOND IOB SENSE BYTE   */
*         5 IOBS1B0 BIT(1),              /* BIT 0 (DEVICE DEPENDENT)*/
*         5 IOBS1B1 BIT(1),              /* BIT 1 (DEVICE DEPENDENT)*/
*         5 IOBS1B2 BIT(1),              /* BIT 2 (DEVICE DEPENDENT)*/
*         5 IOBS1B3 BIT(1),              /* BIT 3 (DEVICE DEPENDENT)*/
*         5 IOBS1B4 BIT(1),              /* BIT 4 (DEVICE DEPENDENT)*/
*         5 IOBS1B6 BIT(1),              /* BIT 6 (DEVICE DEPENDENT)*/
*         5 IOBS1B7 BIT(1),              /* BIT 7 (DEVICE DEPENDENT)*/
*     3 IOBECBPT    PTR(31),             /* ADDR OF ECB TO BE POSTED*/
*                                        /* ON I/O COMPLETION       */
*       4 IOBECBCC  CHAR(1),             /* COMPLETION CODE FOR     */
*                                        /* THIS I/O REQUEST        */
*       4 IOBECBAD  PTR(24) BDY(BYTE),   /* ADDR OF ECB TO BE POSTED*/
*     3 IOBCSW      CHAR(0),             /* CSW                     */
*     3 IOBCOMAD    CHAR(4),             /* CSW COMMAND ADDRESS     */
*     3 IOBSTAT0    CHAR(1),             /* CSW STATUS BYTE ONE     */
*     3 IOBSTAT1    CHAR(1),             /* CSW STATUS BYTE TWO     */
*     3 IOBCNT      FIXED(15),           /* CSW BYTE COUNT          */
*     3 IOBSIOCC    CHAR(1),             /* IOB SIO COMPLETION CODE */
*     3 IOBSTART    PTR(24),             /* IOB CHANNEL PROGRAM ADDR*/
*     3 IOBWGHT     CHAR(1),             /* RESERVED                */
*     3 IOBDCBPT    PTR(24),             /* IOB DCB ADDRESS         */
*     3 *           CHAR(1),             /* NOT USED BY CHECKPOINT  */
*     3 *           CHAR(3),             /* NOT USED BY CHECKPOINT  */
*     3 IOBINCAM    FIXED(15),           /* QSAM,BSAM,EXCP A.M.     */
*     3 IOBERRCT    FIXED(15),           /* IOB ERROR COUNT, RETRIES*/
*   2 DXDAADDR      CHAR(8)  BDY(DWORD), /* MBBCCHHR SEEK ADDRESS   */
*   2 DXCCW         CHAR(24) BDY(DWORD), /* CHANNEL COMMAND WORDS   */
*     3 DXCCW1      CHAR(8)  BDY(DWORD), /* CHANNEL COMMAND WORDS 1 */
*     3 DXCCW2      CHAR(8)  BDY(DWORD), /* CHANNEL COMMAND WORDS2  */
*     3 DXCCW3      CHAR(8) BDY(DWORD); /* CHANNEL COMMAND WORD3    */
*%LIB2XA4: ;
*                                        /* TEST FOR AOS/2           */
*%IF VER ^='2'
* %THEN
*   %GOTO LIB2XA5;
*DECLARE CKQMLIST CHAR(LENGTH(QMIOP)) BASED(ADDR(ACTJNFLD)+156);
*DECLARE 1 QMWKA CHAR(256) BDY(DWORD) BASED,
*          2 CKPCT CHAR(0);
*        RESPECIFY QMWKA BASED(ADDR(CKQMLIST)+LENGTH(QMIOP));
*%INCLUDE SYSLIB(IEFJFCBN);              /* INCLUDE JFCB            */
*%INCLUDE SYSLIB(IEFASIOT);              /* INCLUDE SIOT            */
*DECLARE CKWAEND CHAR(1);
* /*                                                                */
*        RESPECIFY INDMSIOT BASED(ADDR(INFMJFCB)); /* RESPECIFY SIOT*/
* /*                                                                */
* /*     END OF CHECKPOINT COMMON WORK AREA AND BEGINNING OF SCRATCH */
* /*     SPACE. VARIOUS SECTIONS (HOUSEKEEPING, CKDCB, CKMAIN,       */
* /*     PRESERVE, RESIO, AM00, AND EXIT) DEFINE THE SCRATCH SPACE   */
* /*     DIFFERENTLY. THIS SPACE EXTENDS FROM THE SYSBOL CKWAEND TO  */
* /*     THE 200-BYTE SUR BUFFER AT THE HIGH-ADDRESS END OF THE W.A. */
*%LIB2XA5:  ;
*%DEACTIVATE CKSHORT;                                      /*@Z30SSDT*/
./ ADD NAME=IEEVMPRM
 /********************************************************************/
 /* A 000000-999999                                          @G878PPK*/
 /*                                                                  */
 /* NAME - IEEVMPRM                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - INTERFACE TO THE MESSAGE MODULE - IEEVMESS    */
 /*                                                                  */
 /* COPYRIGHT -                                                      */
 /*                                                                  */
 /*         5740-XYN COPYRIGHT IBM CORP 1981,                   @L1A */
 /*         LICENSED MATERIAL-PROGRAM,PROPERTY OF IBM,               */
 /*         REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   */
 /*                                                                  */
 /* STATUS - OS/VS2 JBB1329                                      @L2C*/
 /*                                                                  */
 /* FUNCTION - THIS MACRO PROVIDES A MAPPING OF THE FUNCTION         */
 /*            MAP FOR THE RECONFIGURATION MESSAGE MODULE.           */
 /*            IT ALSO MAPS A MESSAGE ENTRY WHICH IS ANOTHER         */
 /*            PART OF THE INTERFACE TO IEEVMESS.  ALSO INCLUDED     */
 /*            IS THE INDEX TABLE OF ALL MESSAGES CONTAINED          */
 /*            WITHIN IEEMTEXT, WHICH CONTAINS THE TEXT OF THE       */
 /*            MESSAGES AND THEIR ATTRIBUTES.                        */
 /*                                                                  */
 /* METHOD OF ACCESS -                                               */
 /*                                                                  */
 /*   %INCLUDE SYSLIB(IEEVMPRM) MUST BE CODED TO USE THIS MAPPING    */
 /*                             MACRO                                */
 /*     IF THE MACRO VARIABLE 'IEEVMNOB' CONTAINS 'NO' THE           */
 /*     DECLARATION OF IEEVMENT  AND IEEVMCML WILL NOT BE BASED.     */
 /*     OTHERWISE IEEVMPRM IS BASED ON IEEVMPTR, AND THE COMMAND     */
 /*     NAME ENTRY(IEEVMCML) IS BASED ON IEEVMCDP.                   */
 /*     MACRO VARIABLE 'IEEVMNOI' CONTAINS THE MAXIMUM NUMBER OF     */
 /*     INSERTS FOR IEEVMINS.  IF NONE IS SPECIFIED AND IEEVMINS IS  */
 /*     NOT BASED THE NUMBER USED IS 5.                              */
 /*     IF MACRO VARIABLE 'DCLIEE148T' CONTAINS THE VALUE 'YES'      */
 /*     THE TABLE INSERT VALUES FOR MESSAGE IEE148I WILL BE INCLUDED.*/
 /*                                                                  */
 /*   THE FUNCTION MAPS, 'IEEVMPRM', AND 'IEEVMENT' ARE SELF         */
 /*   DEFINING.                                                      */
 /*                                                                  */
 /* CHANGE ACTIVITY -                                                */
 /*       $L1=RAS,JBB1326,801208,PD22: - SP1.3                   @L1A*/
 /*       $L2=6872AU,JBB1329,810630,PD22: - SP1.3.3              @L2A*/
 /*                                                                  */
 /********************************************************************/
 @SPACE(3);
 % IF IEEVMNOB = 'NO'
 % THEN % GOTO LAB1;
 DCL 1 IEEVMPRM BASED(IEEVMPTR) BDY(WORD),
 % GOTO LAB2;
 % LAB1:     ;
 DCL 1 IEEVMPRM  BDY(WORD),
 % LAB2:   ;
       3 IEEVMFCC BIT(16),               /*  FUNCTION CODES          */
         5 IEEVMFST BIT(1),              /* START A NEW BUFFER       */
         5 IEEVMFSO BIT(1),              /* PUT MESSAGE IN BUFFER    */
         5 IEEVMFOL BIT(1),              /* OUTPUT BUFFER LAST, FIRST
                                            THEN FREE ALL BUFFERS    */
         5 IEEVMFFF BIT(1),              /* OUTPUT FIFO ORDER - THEN
                                            FREE ALL BUFFERS         */
         5 IEEVMFFR BIT(1),              /* FREE ALL BUFFERS         */
         5 IEEVMFWT BIT(1),              /* ISSUE WTOR WAIT ON ECB   */
         5 IEEVMFDT BIT(1),              /* ISSUE WTOR DONOT WAIT    */
         5 IEEVMFIM BIT(1),              /* ISSUE AS WTO IMMEDIATELY */
         5     *    BIT(8),              /* UNUSED AREA              */
       3 IEEVMCID BIN FIXED(15),         /*  CONSOLE ID              */
       3 IEEVMMBA PTR(31),               /*  MESSAGE BUFFER POINTER  */
       3 IEEVMMSG PTR(31),               /*  MESSAGE ENTRY POINTER   */
       3 IEEVMOPR BIN FIXED(31),         /*  OP. RESPONSE TO WTOR    */
       3 IEEVMECB PTR(31),               /*  ECB ADDRESS FOR WTOR    */
       3 IEEVMREP PTR(31),               /*  REPLY BUFFER ADDRESS    */
       3 IEEVMRLN BIN FIXED(31),         /*  MAXIMUM LENGTH OF REPLY */
       3 IEEVMCDP PTR(31),               /*  PTR TO COMMAND TEXT     */
       3 IEEVMDOM FIXED(31),             /*  DOM ID FROM WTOR        */
       3    *     CHAR(4);               /*  RESERVED                */
 @SPACE(3);
 % IF IEEVMNOB = 'NO'
 % THEN % GOTO LAB3;
 DCL 1 IEEVMENT BASED(IEEVMMSG),         /* MESSAGE ENTRY            */
 % GOTO LAB4;
 % LAB3: ;
 DCL 1 IEEVMENT ,                        /* MESSAGE ENTRY            */
 % LAB4: ;
       3 IEEVMNIN BIN FIXED(15),         /* NUMBER OF INSERTS        */
       3 IEEVMSGI BIN FIXED(15),         /* MESSAGE NUMBER           */
 % IF IEEVMNOI = ''
 % THEN % GOTO LAB5;

       3 IEEVMINS (IEEVMNOI),            /* INSERT INFORMATION       */
 % GOTO LAB6;
 % LAB5: ;
 % IF IEEVMNOB = 'NO'
 % THEN %GO TO LAB7;
       3 IEEVMINS (*),                   /* INSERT INFORMATION       */
 % GOTO LAB6;
 % LAB7: ;
       3 IEEVMINS (5),                   /* INSERT INFORMATION       */
 % LAB6: ;
         5 IEEVMLEN BIN FIXED(15),       /* INSERT LENGTH            */
         5  *       BIN FIXED(15),       /* UNUSED AREA              */
         5 IEEVMADD PTR(31);             /* INSERT TEXT ADDRESS      */
 % IF IEEVMNOB = 'NO'
 % THEN % GOTO LAB9;
 @SPACE;
 @SPACE;
 DCL 1 *              BASED(IEEVMCDP), /* COMMAND NAME ENTRY       */
       2 IEEVMCML BIN FIXED(15),       /* COMMAND NAME LENGTH      */
       2 IEEVMCMD CHAR(15);            /* COMMAND NAME TEXT        */
 % GOTO LAB20;
 % LAB9: ;
 @SPACE;
 @SPACE;
 DCL 1 *   ,                           /* COMMAND NAME ENTRY       */
       2 IEEVMCML BIN FIXED(15),       /* COMMAND NAME LENGTH      */
       2 IEEVMCMD CHAR(15);            /* COMMAND NAME TEXT        */
 % LAB20: ;
 @SPACE;
 DCL
   VMESSADR PTR(31) BASED(IEEVMMBA);   /* ADDRESS OF IEEVMESS      */
 @SPACE;
 DCL                                   /* INDEX INTO MESSAGE TABLE */
   IEE148I  BIN FIXED(15) CONSTANT(1),
   IEE345I  BIN FIXED(15) CONSTANT(3),
   IEE559I  BIN FIXED(15) CONSTANT(4),
   IEE560I  BIN FIXED(15) CONSTANT(5),
   IEE561I  BIN FIXED(15) CONSTANT(6),
   IEE712I  BIN FIXED(15) CONSTANT(7),
   IEE713I  BIN FIXED(15) CONSTANT(8),
   IEE715I  BIN FIXED(15) CONSTANT(9),
   IEE7601  BIN FIXED(15) CONSTANT(10),
   IEE562I  BIN FIXED(15) CONSTANT(11),
   IEE7602  BIN FIXED(15) CONSTANT(12),
   IEE517I  BIN FIXED(15) CONSTANT(13),
   IEE528I  BIN FIXED(15) CONSTANT(14),
   IEE766I  BIN FIXED(15) CONSTANT(15),
   IEE563I  BIN FIXED(15) CONSTANT(16),
   IEE564I  BIN FIXED(15) CONSTANT(17),
   IEE5241  BIN FIXED(15) CONSTANT(18),
   IEE5242  BIN FIXED(15) CONSTANT(19),
   IEE574I  BIN FIXED(15) CONSTANT(20),
   IEE073I  BIN FIXED(15) CONSTANT(22),
   IEE3451  BIN FIXED(15) CONSTANT(23),
   IEE502I  BIN FIXED(15) CONSTANT(24),
   IEE503I  BIN FIXED(15) CONSTANT(25),
   IEE504I  BIN FIXED(15) CONSTANT(26),
   IEE505I  BIN FIXED(15) CONSTANT(27),
   IEE7131  BIN FIXED(15) CONSTANT(28),
   IEE7151  BIN FIXED(15) CONSTANT(29),
   IEE100E  BIN FIXED(15) CONSTANT(30),
   IEE131D BIN FIXED(15) CONSTANT(31),
   IEE500I BIN FIXED(15) CONSTANT(32),
   IEE506I BIN FIXED(15) CONSTANT(33),
   IEE512I BIN FIXED(15) CONSTANT(34),
   IEE523I BIN FIXED(15) CONSTANT(35),
   IEE527I BIN FIXED(15) CONSTANT(36),
   IEE541I BIN FIXED(15) CONSTANT(37),
   IEE717D BIN FIXED(15) CONSTANT(38),
   IEE718I BIN FIXED(15) CONSTANT(39),
   IEE718D BIN FIXED(15) CONSTANT(40),
   IEE719I BIN FIXED(15) CONSTANT(41),
   IEE745I BIN FIXED(15) CONSTANT(42),
   IEE746I BIN FIXED(15) CONSTANT(43),
   IEE747I BIN FIXED(15) CONSTANT(44),
   IEE754I BIN FIXED(15) CONSTANT(45),
   IEE755I BIN FIXED(15) CONSTANT(46),
   IEE756I BIN FIXED(15) CONSTANT(47),
   IEE757I BIN FIXED(15) CONSTANT(48),
   IEE758I BIN FIXED(15) CONSTANT(49),
   IEE759I BIN FIXED(15) CONSTANT(50),
   IEE7603 BIN FIXED(15) CONSTANT(51),
   IEE761I BIN FIXED(15) CONSTANT(52),
   IEE762I BIN FIXED(15) CONSTANT(53),
   IEE763I BIN FIXED(15) CONSTANT(54),
   IEE771I BIN FIXED(15) CONSTANT(55),
   IEE772I BIN FIXED(15) CONSTANT(56),
   IEE773I BIN FIXED(15) CONSTANT(57),
   IEE774I BIN FIXED(15) CONSTANT(58),
   IEE099A BIN FIXED(15) CONSTANT(59),   /*                      @L2A*/
   IEE5591 BIN FIXED(15) CONSTANT(60),
   IEE582I BIN FIXED(15) CONSTANT(61),
   IEE1481 BIN FIXED(15) CONSTANT(63),
   IEEDUMMY BIN FIXED(15) CONSTANT(64),
   IEE5101  BIN FIXED(15) CONSTANT(79),
   IEE5102  BIN FIXED(15) CONSTANT(80),
   IEE575A  BIN FIXED(15) CONSTANT(81),
   IEE576I  BIN FIXED(15) CONSTANT(82),
   IEE5762  BIN FIXED(15) CONSTANT(83),
   IEE1482  BIN FIXED(15) CONSTANT(84),
   IEE577A  BIN FIXED(15) CONSTANT(85),
   IEE578I  BIN FIXED(15) CONSTANT(86),
   IEE5763  BIN FIXED(15) CONSTANT(87),
   IEE5764  BIN FIXED(15) CONSTANT(88),
   IEE507D  BIN FIXED(15) CONSTANT(89), /*                      @L1A */
   IEE508E  BIN FIXED(15) CONSTANT(90), /*                      @L1A */
   IEE511I  BIN FIXED(15) CONSTANT(91), /*                      @L1A */
   IEE514I  BIN FIXED(15) CONSTANT(92), /*                      @L1A */
   IEE516I  BIN FIXED(15) CONSTANT(93), /*                      @L1A */
   IEE518I  BIN FIXED(15) CONSTANT(94); /*                      @L1A */
 @SPACE(3);
 %IF DCLIEE148T ^= 'YES'
 %THEN
 %GO TO LAB23;
 DCL IEE148T(13) BIN FIXED(15) STATIC LOCAL /* TABLE ENTRIES FOR
                                    MESSAGE IEE148I.  THE POSITION
                                    IN THIS TABLE IS THE REJECT REASON
                                    CODE FROM THE MSF                */
   INIT(
         0,                     /* INVALID COMMAND CODE (01)         */
         0,                     /* INVALID CALLERS FLAG (02)         */
         5,                     /* INVALID ID (03)                   */
         7,                     /* ASSIGNED OTHER PARTITION (04)     */
         8,                     /* ASSIGNED S/M/R (05)               */
         9,                     /* NOT EXECUTABLE ON CONFIG (06)     */
         0,                     /* SOME SIDE NOT UNASSIGNED (07)     */
         9,                     /* NOT EXECUTABLE ON CONFIG (08)     */
         0,                     /* STARTING ADDRESS ERROR (09)       */
        10,                     /* CONTAINS HSA/ISA (0A)             */
        14,                     /* STORAGE KEYS NOT AVAILABLE (0B)   */
         0,                     /* ALL STORAGE ASSIGNED (0C)         */
         0   );                 /* I/O SIDE IN UNASSIGNED STATE (0D) */
 %LAB23: ;
./ ADD NAME=IEEVRSWA
*        %GOTO RSTWABSL;
         MACRO
         IEEVRSWA  &VER=1
*        03/15/73  LEVEL=01
.*       VERSION:
.*       1 = OS
.*       2 = AOS/1
.*       3 = AOS/2
RSTWA    DSECT                     RESTART WORK AREA
RSWAOFST DS    F                   OFFSET TO REPDCB'S W.A.
RSMWOFST DS    F                   OFFSET TO REPMAIN'S W&A.
RSBFOFST DS    F                   OFFSET TO RESTART'S BUFFER
*
*             *********************************************************
*             *                                                       *
*             *   THE INFORMATION MAPPED BY THIS MACRO IS SHARED      *
*             *        BY ALL RESTART ROUTINES (RESTART,              *
*             *   REPMAIN, REPDCB, AND RETURN)                        *
*             *                                                       *
*             *********************************************************
RSCKDCB  DS    F                   PTR TO OLD CHKPT DCB
RSWACL   DS    F                   LENGTH OF RSTWA
RSBUFL   DS    F                   LENGTH OF RESTART'S BUFFER
RSDCBFLG DS    0CL1
RSDCBL   DS    F                   LENGTH OF REPDCB'S W.A.
RSINT    DS    F                   DATA MANAGEMENT INTERFACE BYTE
RSTCBAD  DS    F                   POINTER TO RESTART'S TCB
RSPPM    DS    F                   LOW ADDRESS OF P.P. CORE
RSPPE    DS    F                   HIGH ADDRESS OF P.P. CORE
RSPPML   DS    F                   LOW ADDR OF SECONDARY PP CORE
RSPPEL   DS    F                   HIGH ADDR OF SECONDARY PP CORE
RSTIOTO  DS    F                   LENGTH OF OLD TIOT
RSTIOTAD DS    F                   POINTER TO OLD P/P TIOT
RSCIRTTR DS    F                   TTR OF FIRST CIR OF CHKPT DATA
*                                  SET (IF ON D.A. DEV)
RSSVRBN  DS    F                   ADDR OF RESTART'S SVRB
RSFLAG1  DS    CL1                 RESTART HOUSEKEEPING FLAGS
RSBPAM   EQU   1                   CHKPT DATA SET WAS OPENED FOR BPAM
RSOPEN   EQU   2                   CHKPT OPENED  DATA SET
         AIF   ('&VER' NE '1').LIB1YA1  TEST FOR OS
RSMVT    EQU   8                   INDICATES MVT SYSTEM
RSMFT    EQU   16                  MFT SYSTEM
.LIB1YA1 ANOP
RSTAPE   EQU   32                  RESTART DATA SET ON TAPE
RSFLAG2  DS    CL1
* RSFLAG2 BIT USAGE
*  X'08' - USER DID NOT SPECIFY CHECK POINT DATA SET BLOCKSIZE
*  X'04' - A TCAM DEB EXISTS FOR THIS JOB
RSDCBSI  DS    H                   SAVE AREA FOR USER BLKSIZE
RSRETCOD DS    H                   RETURN CODE AREA
RESTART  EQU   4                   RETURN CODE - RESTART HAS OCCURRED
RSIOERR  EQU   X'0C'               INDICATES I/O ERROR
RSSVRB   DS    F                   PCP - POINTS TO THE OLD CHKPT SVRB
*                                  MVT - FIELD NOT USED
RSNSTAE  DS    F                   ANCHOR FOR USER SCB CHAIN     Y02076
RSPIE    DS    F                   ANCHOR FOR USER PIE CHAIN     Y02076
RSSSCR   DS    F                   ADDR OF 1ST SSCR FOR VSAM/    Y02076
*                                  ADDR OF QMNGR WORKAREA FOR    Y02076
*                                  TAPE POSITIONING              Y02076
RSBDCB   DS    22F                 DCB FOR CHKPT DATA SET
RSDECB1  DS    0F                  MAPPING OF DECB
RSECB1   DS    F
RSTYPE1  DS    H
RSLNGTH1 DS    H
RSDCBAD1 DS    F
RSAREA1  DS    F
RSIOBPT1 DS    F
RSDCB    EQU   RSDCBAD1
RSIOBCP  DS    30F                 IOB AND CHANNEL PROGRAM       Y02076
*                                  RELOCATION AREA               Y02076
RSERAS00 DS    F                   ERASE AREA 00                 Y02076
RSERAS01 DS    F                   ERASE AREA 01                 Y02076
RSERAS02 DS    F                   ERASE AREA 02                 Y02076
RSERAS03 DS    F                   ERASE AREA 03                 Y02076
RSERAS04 DS    F                   ERASE AREA 04                 Y02076
RSERAS05 DS    F                   ERASE AREA 05                 Y02076
RSERAS06 DS    F                   ERASE AREA 06                 Y02076
RSERAS07 DS    F                   ERASE AREA 07                 Y02076
RSERAS08 DS    F                   ERASE AREA 08                 Y02076
RSERAS09 DS    F                   ERASE AREA 09                 Y02076
RSREGSAV DS    18F                 REGISTER SAVE AREA
         AIF   ('&VER' NE '2').LIB2YA1  TEST FOR AOS/2
         ORG   RSREGSAV+12         AOS WORKAREAS OVERLAP REGSAVE
RPMWA    DS    F                   REPMAIN WORKAREA
SIRPLIST DS    0F                  SIR PARAMETER LIST
SIRECB   DS    0F                  ECB FIELD
SIRTYPFG DS    XL1                 SIR TYPE
SIRFIX   EQU   X'50'               LOAD AND FIX
SIRFREE  EQU   X'20'               FREE
SIRCLEAR EQU   X'08'               CLEAR
SIRLNG   EQU   X'02'               LONG TERM
SIRSADD  DS    AL3                 START ADDRESS
SIRENDFG DS    XL1                 END FLAG
SIRLAST  EQU   X'80'               LAST ENTRY
SIRAPB   EQU   X'20'               REAL ADDRESS PASSBACK
SIREADD  DS    AL3                 END ADDRESS
         ORG   RSREGSAV+72         RESET LOCATION COUNTER
RSDSDIN  DS    F                   OLD DSD POINTERS
RSDSDOUT DS    F
RSJCMIN  DS    F                   OLD JCM POINTERS
RSJCMOUT DS    F
RSDSTEND DS    F                   END OF REPDCB'S DATA SET TBL
.LIB2YA1 ANOP
RSTIOTL  DS    F                   LENGTH OF TIOT SAVE AREA
         DS    0D
RSTIOT   EQU   *                   BEGINNING OF TIOT SAVE AREA
*                                  IN PCP THE NEW TIOT IS SAVED HERE
*                                  IN MVT THE OLD TIOT IS SAVED HERE
         MEND
         %EJECT;
*%RSTWABSL:  ;
*DECLARE
*  1 RSTWA  BOUNDARY(DWORD)  BASED,
*   2 RSWAOFST    FIXED(31),             /* OFFSET TO BEGINNING OF
*                                           REPDCB'S W.A.            */
*   2 RSMWOFST    FIXED(31),             /* OFFSET TO BEGINNING OF
*                                           REPMAIN'S W&A.           */
*   2 RSBFOFST    FIXED(31),             /* OFFSET TO BEGINNING OF
*                                           RESTART'S BUFFER        */
* /*                                                                */
* /*          *******************************************************/
* /*          *                                                     */
* /*          *   THE INFORMATION MAPPED BY THIS MACRO IS SHARED    */
* /*          *        BY ALL RESTART ROUTINES (RESTART,            */
* /*          *   REPMAIN, REPDCB, AND RETURN)                      */
* /*          *                                                     */
* /*          *******************************************************/
*   2 RSCKDCB     PTR(31),               /* PTR TO OLD CHKPT DCB,
*                                           FIELD IS FILLED IN BY
*                                           REPMAIN                  */
*   2 RSWACL      FIXED(31),             /* LENGTH OF RSTWA          */
*   2 RSBUFL      FIXED(31),             /* LENGTH OF RESTART'S
*                                           BUFFER                   */
*   2 RSDCBL      FIXED(31),             /* LENGTH OF REPDCB'S W.A.  */
*    3 RSDCBFLG    CHAR(1),
*   2 RSINT       FIXED(31),             /* DATA MANAGEMENT
*                                           INTERFACE BYTE           */
*   2 RSTCBAD     PTR(31),               /* POINTER TO RESTART'S TCB */
*   2 RSPPM       PTR(31),               /* PTR TO LOW ORDER ADDRESS
*                                           OF P.P. CORE             */
*   2 RSPPE       PTR(31),               /* PTR TO HIGH ORDER
*                                           ADDRESS OF P.P. CORE     */
*   2 RSPPML      PTR(31),               /* LOW ORDER ADDR OF
*                                           SECONDARY PP CORE        */
*   2 RSPPEL      PTR(31),               /* HIGH ORDER ADDR OF
*                                           SECONDARY PP CORE        */
*   2 RSTIOTO     FIXED(31),             /* LENGTH OF OLD TIOT       */
*   2 RSTIOTAD    PTR(31),               /* POINTER TO OLD P/P TIOT
*                                           FILLED IN BY REPMAIN     */
*   2 RSCIRTTR    CHAR(4),               /* TTR OF FIRST CIR OF
*                                           CHKPT DATA SET (IF ON
*                                           D.A. DEV)                */
*   2 RSSVRBN     PTR(31),               /* ADDR OF RESTART'S SVRB.  */
*   2 RSFLAG1     CHAR(1),               /* RESTART HOUSEKEEPING
*                                           FLAGS                    */
*%DCL RSBPAM   CHAR;
*%RSBPAM  ='''01''X';                    /* INDICATES CHKPT DATA SET
*                                           WAS OPENED FOR BPAM.     */
*%DCL RSOPEN   CHAR;
*%RSOPEN  ='''02''X';                    /* INDICATES CHKPT OPENED
*                                           DATA SET.                */
*%IF VER ^='1'
  %THEN
*   %GOTO LIB1YA1 ;
*                                        /* TEST FOR OS              */
*%DCL RSMVT    CHAR;
*%RSMVT   ='''08''X';                    /* INDICATES MVT SYSTEM.    */
*%DCL RSMFT    CHAR;
*%RSMFT   ='''10''X';                    /* MFT SYSTEM               */
*%LIB1YA1:  ;
*%DCL RSTAPE   CHAR;
*%RSTAPE  ='''20''X';                    /* RESTART DATA SET ON
*                                           TAPE.                    */
*   2 RSFLAG2     CHAR(1),
*/* RSFLAG2 BIT USAGE                                                */
*/* X'08' - USER DID NOT SPECIFY CHECK POINT DATA SET BLOCKSIZE      */
*/* X'04' - A TCAM DEB EXISTS FOR THIS JOB                           */
*   2 RSDCBSI     FIXED(15),             /* SAVE AREA FOR USER
*                                           BLKSIZE                  */
*   2 RSRETCOD    CHAR(2),               /* RETURN CODE AREA         */
     3 RSRETCD1   CHAR(1),               /* FIRST BYTE RESTART R.C.  */
     3 RSRETCD2   CHAR(1),               /* SECOND BYTE RESTART R.C. */
*%DCL RESTART  CHAR;
*%RESTART ='''04''X';                    /* RETURN CODE, INDICATES
*                                           RESTART HAS OCCURRED.    */
*%DCL RSIOERR  CHAR;
*%RSIOERR ='''0C''X';                    /* INDICATES I/O ERROR      */
*   2 *           CHAR(2),               /* RESERVED         @Y30DSDT*/
*   2 RSSVRB      PTR(31),               /* IN PCP THIS FIELD POINTS
*                                           TO THE OLD CHKPT SVRB.
*                                           IN MVT THIS FIELD DOES
*                                           NOT CONTAIN MEANINGFUL
*                                           INFO.                    */
*   2 RSNSTAE      PTR(31),              /* ANCHOR FOR USER SCB CHAIN*/
*   2 RSPIE        PTR(31),              /* ANCHOR FOR USER PIE CHAIN*/
*   2 RSSSCR       PTR(31),              /* ADDR OF 1ST SSCR FOR VSAM/
*                                           ADDR OF QMNGR WORKAREA FOR
*                                           TAPE POSITIONING         */
*   2 RSBDCB   (22) FIXED(31),           /* DCB FOR CHKPT DATA SET.  */
*   2 XCTLNAM1     CHAR(8) BDY(WORD),    /* XCTL PARM LIST (EXEC)   */
*    3 RSECB1      FIXED(31),
*     4 RSDECB1    FIXED(31),            /* MAPPING OF DECB         */
*    3 RSTYPE1     FIXED(15),
*    3 RSLNGTH1    FIXED(15),
*   2 RSDCB       PTR(31),
*    3 RSDCBAD1    PTR(31),
*   2 RSAREA1     FIXED(31),
*   2 RSIOBPT1    FIXED(31),
*   2 RSIOBCP  (30) FIXED(31),           /* IOB AND CHANNEL PROGRAM
*                                           RELOCATION AREA          */
*   2 RSERAS00    FIXED(31),             /* ERASE AREA 00            */
*   2 RSERAS01    FIXED(31),             /* ERASE AREA 01            */
*   2 RSERAS02    FIXED(31),             /* ERASE AREA 02            */
*   2 RSERAS03    FIXED(31),             /* ERASE AREA 03            */
*   2 RSERAS04    FIXED(31),             /* ERASE AREA 04            */
*   2 RSERAS05    FIXED(31),             /* ERASE AREA 05            */
*   2 RSERAS06    FIXED(31),             /* ERASE AREA 06            */
*   2 RSERAS07    FIXED(31),             /* ERASE AREA 07            */
*   2 RSERAS08    FIXED(31),             /* ERASE AREA 08            */
*   2 RSERAS09    FIXED(31),             /* ERASE AREA 09            */
*   2 RSREGSAV (18) FIXED(31),           /* REGISTER SAVE AREA       */
*%IF VER ^='2'                           /* TEST FOR AOS/2   @Y30DSDT*/
* %THEN
*   %GOTO LIB2YA1 ;
* 1 RSTWAS01 BASED(ADDR(RSREGSAV)+12),   /* AOS WORKAREAS    @Y30DSDT
*                                           OVERLAP REGSAVE  @Y30DSDT*/
*   2 RPMWA       PTR(31),               /* REPMAIN WORKAREA         */
*   2 SIRPLIST     CHAR(12) BDY(WORD),       /* SIR PARAMETER LIST  */
*     3 SIRECB     FIXED(31),                /* ECB FIELD           */
*     3 SIRTYPFG   CHAR(1),                  /* SIR TYPE FIELD      */
*%DCL    SIRFIX CHAR;                    /* LOAD AND FIX             */
*%SIRFIX     = '''50''X';
*%DCL    SIRFREE CHAR;                   /*    FREE                  */
*%SIRFREE    = '''20''X';
*%DCL    SIRCLEAR CHAR;                  /*    CLEAR                 */
*%SIRCLEAR   = '''08''X';
*%DCL    SIRLNG CHAR;                    /*    LONG TERM             */
*%SIRLNG     = '''02''X';
*     3 SIRSADD    PTR(24),                  /* START ADDRESS       */
*     3 SIRENDFG   CHAR(1),                  /* END FLAG            */
*%DCL    SIRLAST CHAR;                   /*    LAST ENTRY            */
*%SIRLAST    = '''80''X';
*%DCL    SIRAPB CHAR;                    /* REAL ADDRESS PASSBACK    */
*%SIRAPB     = '''20''X';
*     3 SIREADD    PTR(24);                  /* END ADDRESS         */
*DECLARE 1 RSTWAS02
*      BASED(ADDR(RSREGSAV)+72),         /* RESET LOCATION COUNTER
*                                           TO CONTINUE              */
*   2 RSDSDIN     PTR(31),               /* OLD DSD POINTERS         */
*   2 RSDSDOUT    FIXED(31),
*   2 RSJCMIN     PTR(31),               /* OLD JCM POINTERS         */
*   2 RSJCMOUT    FIXED(31),
*   2 RSDSTEND    FIXED(31),             /* END REPDCB'S DATA SET TBL*/
*%LIB2YA1:  ;                                              /*@Y30DSDT*/
*   2 RSTIOTL     FIXED(31),             /* LENGTH OF TIOT SAVE AREA */
*   2 RSTIOT   CHAR(*) BDY(DWORD);       /* START OF TIOT SAVE AREA  */
* /*                                                                 */
* /*           END OF IEEVRSWA, RESTART WORK AREA                    */
* /*                                                                 */
./ ADD NAME=IEEZB800
*        % GO TO STCPLS;          /*
         MACRO
         IEEZB800
*
*  STARTED TASK CONTROL INTERNAL PARAMETER AREA MAPPING
*    -MAPS INTERFACE BETWEEN IEEVSTAR OR IEEVMNT1 AND IEEVJCL
*
STCPARM  DSECT
STCBEGIN EQU   *
STCSPNUM DS    X                  SUBPOOL NUMBER OF THIS PARM AREA
STCLEN   DC    AL3(STCSIZE)       PARAMETER AREA LENGTH
STCASCB  DS    A                  ASCB POINTER                   Y02669
STCSDT   DS    A                  SDT POINTER
STCRESV  DS    F                  RESERVED
STCSIZE  EQU   *-STCBEGIN         PARAMETER AREA LENGTH
         MEND                     */
* % STCPLS:;
* /*                                                                 */
* /*  STARTED TASK CONTROL INTERNAL PARAMETER AREA MAPPING           */
* /*    -MAPS INTERFACE BETWEEN IEEVSTAR OR IEEVMNT1 AND IEEVJCL     */
* /*                                                                 */
*  DCL   1     STCPARM   BASED(STCPTR),
*          2   STCSPNUM  PTR(8),  /* SUBPOOL NUMBER OF THIS PARM AREA*/
*          2   STCLEN    PTR(24), /* PARAMETER AREA LENGTH           */
*          2   STCASCB   PTR(31), /* ASCB POINTER                    */
*          2   STCSDT    PTR(31), /* SDT POINTER                     */
*          2   STCRESV  FIXED(31);/* RESERVED                        */
./ ADD NAME=IEEZB801
*        % GO TO SWAEPLS;         /*
         MACRO
         IEEZB801
*
*  SWA ENVIRONMENT INITIALIZATION MAPPING
*
*        MAPS THE PARAMETER LIST PASSED TO ROUTINE IEESB601
*        FOR CREATING OR DELETING A SWA, TIOT, JSCB CONTROL
*        BLOCK ENVIRONMENT.
*
SWAE     DSECT
SWBEGIN  EQU   *
SWOPTION DS    X                  OPTIONS FIELD THAT INDICATES
*                                 THE SERVICES TO BE PERFORMED.
SWCREATE EQU   X'80'              BUILD A CONTROL BLOCK STRUCTURE.
*                                 THIS OPTION MAY NOT BE SET WITH
*                                 ANY OF THE FOLLOWING OPTIONS.
         SPACE
*
*  THE SETTING OF THE FOLLOWING 3 OPTIONS RESULT IN THE RESTORATION
*  OF THE ENVIRONMENT THAT EXISTED BEFORE IEESB601 WAS CALLED WITH
*  THE 'SWCREATE' OPTION.  ANY OR ALL OF THE FOLLOWING OPTIONS MAY
*  BE SET.
*
SWDELETE EQU   X'40'              DELETE THE SWA ENVIRONMENT
SWRSTIOT EQU   X'20'              RESET CURRENT TIOT STRUCTURE
SWRSJSCB EQU   X'10'              RESET CURRENT JSCB STRUCTURE
SWRESV1  EQU   X'0F'              RESERVED OPTIONS
SWRESV2  DS    3X                 RESERVED
SWJOBNAM DS    A                  POINTER TO JOBNAME IF 'SWCREATE'
*                                 OPTION - OTHERWISE ZEROS
SWSTEPNM DS    A                  POINTER TO STEPNAME IF 'SWCREATE'
*                                 OPTION - OTHERWISE ZEROS
SWTIOTPT DS    A                  POINTER TO WORD CONTAINING
*                                 THE TIOT POINTER
SWJSCBPT DS    A                  POINTER TO WORD CONTAINING
*                                 THE JSCB POINTER
SWSIZE   EQU   *-SWBEGIN          SWAE SIZE
         MEND                     */
*% SWAEPLS:;
*  /*                                                                */
*  /*  SWA ENVIRONMENT INITIALIZATION MAPPING -                      */
*  /*                                                                */
*  /*    MAPS THE PARAMETER LIST PASSED TO ROUTINE IEESB601          */
*  /*    FOR CREATING OR DELETING A SWA, TIOT, JSCB CONTROL          */
*  /*    BLOCK ENVIRONMENT.                                          */
*  /*                                                                */
*   DCL  1     SWAE     BASED(SWAEPTR),
*          2   SWOPTION BIT(8),   /* OPTIONS FIELD THAT INDICATES
*                                    THE SERVICES TO BE PERFORMED    */
*            3 SWCREATE BIT(1),   /* BUILD A CONTROL BLOCK STRUCTURE.
*                                    THIS OPTION MAY NOT BE SET WITH
*                                    ANY OF THE FOLLOWING OPTIONS.   */
*            /*  THE SETTING OF THE FOLLOWING 3 OPTIONS RESULT IN
*                THE RESTORATION OF THE ENVIRONMENT THAT EXISTED
*                BEFORE IEESB601 WAS CALLED WITH THE 'SWCREATE'
*                OPTION.  ANY OR ALL OF THE FOLLOWING OPTIONS MAY
*                BE SET.                                             */
*            3 SWDELETE BIT(1),   /* DELETE THE SWA ENVIRONMENT      */
*            3 SWRSTIOT BIT(1),   /* RESET CURRENT TIOT STRUCTURE    */
*            3 SWRSJSCB BIT(1),   /* RESET CURRENT JSCB STRUCTURE    */
*            3 *        BIT(4),   /* RESERVED OPTIONS                */
*          2   *        PTR(24),  /* RESERVED                        */
*          2   SWJOBNAM PTR(31),  /* POINTER TO JOBNAME IF 'SWCREATE'
*                                    OPTION - OTHERWISE ZEROS        */
*          2   SWSTEPNM PTR(31),  /* POINTER TO STEPNAME IF 'SWCREATE'
*                                    OPTION - OTHERWISE ZEROS        */
*          2   SWTIOTPT PTR(31),  /* POINTER TO WORD CONTAINING
*                                    THE TIOT POINTER                */
*          2   SWJSCBPT PTR(31);  /* POINTER TO WORD CONTAINING
*                                    THE JSCB POINTER                */
./ ADD NAME=IEEZB811
*         %GOTO CAST1;   /* BILINGUAL MAPPING
          MACRO
          IEEZB811   ,   */
*%CAST1: ;
*/********************************************************************/
*/*                                                                  */
*/* MACRO NAME=       IEEZB811                                       */
*/*                                                                  */
*/* MACDATE   =       11/22/80                                       */
*/*                                                                  */
*/* DESCRIPTIVE NAME= COMMAND ADDRESS SPACE TABLE                    */
*/*                                                                  */
*/* COPYRIGHT=                                                       */
*/*                   5740-XYN COPYRIGHT IBM CORP 1981,              */
*/*                   LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,  */
*/*                   REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER    */
*/*                   G120-2083.                                     */
*/*                                                                  */
*/* STATUS=           OS/VS2 JBB1326                                 */
*/*                                                                  */
*/* FUNCTION=         MAPS THE DATA AREA USED TO COMMUNICATE         */
*/*                   COMMAND SCHEDULING DATA TO MASTER SCHEDULER    */
*/*                                                                  */
*/* METHOD OF ACCESS=                                                */
*/*                   BAL  - SPECIFY IEEZB811                        */
*/*                          A LOAD FOR BACASTPT AND A               */
*/*                          USING ON CASHDRA GIVES ADDRESSABILITY   */
*/*                          TO THE CAST HEADER.                     */
*/*                          A LOAD FOR CASFEPT AND A                */
*/*                          USING ON CASENTRY GIVES ADDRESSABILITY  */
*/*                          TO THE FIRST ENTRY IN THE ARRAY.        */
*/*                                                                  */
*/*                   PL/S - %INCLUDE SYSLIB(IEEZB811)               */
*/*                                                                  */
*/* CREATED BY=       IEEVIPL                                        */
*/*                                                                  */
*/* POINTED TO BY=    BACASTPT FIELD OF BASEA                        */
*/*                                                                  */
*/* SUBPOOL=          241                                            */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/* $L0=XMCTASK,  JBB1326,  801031,  L02I:  NEW FOR OS/VS2 JBB1326   */
*/*                                                                  */
*/********************************************************************/
*%GOTO CAST2;
         EJECT
CASHDRA  DSECT   -       COMMAND ADDRESS SPACE TABLE HEADER AREA
         SPACE
CASHDR   DS    0F                 CAST HEADER
CASID    DS    CL4                CONTROL BLOCK ID - CAST
CASVERSN DS    FL1                VERSION LEVEL
CASSP13  EQU   1                  VERSION LEVEL OS/VS2 JBB1326
CASVERID EQU   CASSP13            VERSION LEVEL - UPDATED FOR SIZE OR  X
                                  INCOMPATIBLE CHANGE
CASRSV0  DS    CL1                RESERVED
CASNENT  DS    XL2                NUMBER OF ENTRIES
CASFEPT  DS    F                  POINTER TO FIRST ENTRY
CASRSV1  DS    F                  RESERVED
CASHDRLN EQU   *-CASHDR           LENGTH OF CAST HEADER
         SPACE 5
CASENTRY DSECT                    CAST ENTRY
         DS    0F
CASNUM   DS    XL2                ADDRESS SPACE WHERE COMMANDS MAY BE  X
                                  ATTACHED
CASMSAS  EQU   1                  MASTER SCHEDULER ADDRESS SPACE
CASCTAS  EQU   2                  COMM TASK ADDRESS SPACE
CASRSV2  DS    H                  RESERVED
CASECBLP DS    F                  POINTER TO ECBLIST
CASASCB  DS    F                  POINTER TO ASCB
CASCECB  DS    CL4                ECB WAITED ON BY IEEVWAIT EXECUTING  X
                                  IN ADDRESS SPACE INDICATED BY CASNUM
CASENTLN EQU   *-CASENTRY         LENGTH OF INDIVIDUAL CAST ENTRY
CASNMENT EQU   2                  NUMBER OF ENTRIES IN CAST
CASLEN   EQU   CASHDRLN+(CASNMENT*CASENTLN)  LENGTH OF CAST
CASSP    EQU   241                CAST SUBPOOL - 241
         MEND   , */
* %CAST2:  ;
*@EJECT;
*
* DCL 1 CASHDR   BDY(WORD)
*                BASED(BACASTPT),/*CAST HEADER                       */
*      2 CASID    CHAR(4),       /*CONTROL BLOCK ID - CAST           */
*      2 CASVERSN FIXED(8),      /*VERSION LEVEL                     */
*      2 CASRSV0  CHAR(1),       /*RESERVED                          */
*      2 CASNENT  FIXED(15),     /*NUMBER OF ENTRIES                 */
*      2 CASFEPT  PTR(31),       /*POINTER TO FIRST ENTRY            */
*      2 CASRSV1  FIXED(31);     /*RESERVED                          */
* DCL 1 CASENTRY BDY(WORD)
*                BASED(CASENTPT),/*CAST ENTRY                        */
*      2 CASNUM   FIXED(15),     /*ADDRESS SPACE WHERE COMMANDS MAY BE
*                                   ATTACHED                         */
*      2 CASRSV2  FIXED(15),     /*RESERVED                          */
*      2 CASECBLP PTR(31),       /*POINTER TO ECBLIST                */
*      2 CASASCB  PTR(31),       /*POINTER TO ASCB                   */
*      2 CASCECB  CHAR(4);       /*ECB WAITED ON BY IEEVWAIT EXECUTING
*                                  IN ADDRESS SPACE INDICATED BY CASNUM
*                                                                    */
* DCL CASENTPT PTR(31);          /*POINTER TO CAST ENTRY             */
*/********************************************************************/
*/*                                                                  */
*/*     CONSTANTS FOR VERSION LEVEL (CASVERSN)                       */
*/*                                                                  */
*/********************************************************************/
* DCL CASVERID FIXED(8) CONSTANT(CASSP13);/*VERSION LEVEL - UPDATED FOR
*                                  SIZE OR INCOMPATABLE CHANGE       */
* DCL CASSP13 FIXED(8) CONSTANT(1);/*VERSION LEVEL IS OS/VS2 JBB1326 */
*/********************************************************************/
*/*                                                                  */
*/*     CONSTANTS FOR CASNUM                                         */
*/*                                                                  */
*/********************************************************************/
* DCL CASMSAS FIXED(15) CONSTANT(1);/*MASTER SCHEDULER ADDRESS SPACE */
* DCL CASCTAS FIXED(15) CONSTANT(2);/*COMM TASK ADDRESS SPACE        */
*/********************************************************************/
*/*                                                                  */
*/*     GENERAL CONSTANTS                                            */
*/*                                                                  */
*/********************************************************************/
* DCL CASHDRLN FIXED(31) CONSTANT(LENGTH(CASHDR)); /* LENGTH OF CAST
*                                                     HEADER         */
* DCL CASENTLN FIXED(31) CONSTANT(LENGTH(CASENTRY));/* LENGTH OF
*                                         INDIVIDUAL CAST ENTRY      */
* DCL CASNMEN FIXED(31) CONSTANT(2); /* NUMBER OF ENTRIES IN CAST    */
* DCL CASLEN FIXED(31) CONSTANT(CASHDRLN+(CASNMEN*CASENTLN)); /*
*                                       LENGTH OF CAST               */
* DCL CASSP FIXED(8) CONSTANT(241);  /* CAST SUBPOOL - 241           */
./ ADD NAME=IEEZB812
*        %GOTO VSRIPRLG;     /*   BILINGUAL MAPPING
         MACRO
         IEEZB812    ,       */
*%VSRIPRLG : ;
*/********************************************************************/
*/*                                                                  */
*/*01* MACRO NAME=       IEEZB812                                    */
*/*                                                                  */
*/*01* DESCRIPTIVE NAME= VARY SERVICE ROUTINE INTERFACE LIST (VSRI)  */
*/*                                                                  */
*/*01* COPYRIGHT=      5740-XYN COPYRIGHT IBM CORP 1982,             */
*/*                    LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM, */
*/*                    REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER   */
*/*                    G120-2083.                                    */
*/*                                                                  */
*/*01* STATUS=         OS/VS2 JBB1329                                */
*/*                                                                  */
*/*01* METHOD OF ACCESS=                                             */
*/*                    BAL- SPECIFY IEEZB812                         */
*/*                         USING ON VSRI GIVES ADDRESSABILITY       */
*/*                         TO THE COMMON HEADER SECTION.            */
*/*                                                                  */
*/*                         LOAD A REGISTER WITH VSRFRSTP TO         */
*/*                         ADDRESS THE FIRST DEVICE ENTRY OR        */
*/*                         VSRSNGLP TO ADDRESS THE DEVICE           */
*/*                         ENTRY TO BE PROCESSED. A USING           */
*/*                         ON VSRENTRY GIVES ADDRESSABILITY         */
*/*                         FOR THE DEVICE ENTRY.                    */
*/*                                                                  */
*/*                         LOAD A REGISTER WITH VSRFPTR TO          */
*/*                         ADDRESS THE FOOTPRINTS. A USING          */
*/*                         ON VSRFPT GIVES ADDRESSABILITY           */
*/*                         FOR THE VARY FOOTPRINTS.                 */
*/*                                                                  */
*/*                   PL/S- %INCLUDE SYSLIB(IEEZB812)                */
*/*                         IF IT IS DESIRED THAT THE MAPPING BE     */
*/*                         BASED ON A POINTER, DEFINE A MACRO       */
*/*                         CHARACTER VARIABLE VSRIBASE AND SET IT   */
*/*                         TO BE THE NAME OF THE POINTER TO USE.    */
*/*                           EXAMPLE:                               */
*/*                                %DCL VSRIBASE CHAR                */
*/*                                % VSRIBASE = 'VSRIPARM'           */
*/*                                                                  */
*/*                         IF THE MAPPING IS NOT TO BE BASED AT ALL,*/
*/*                         DEFINE A MACRO CHARACTER VARIABLE        */
*/*                         VSRIBASE AND SET IT TO 'NONE'            */
*/*                                                                  */
*/*                         DCL VSRDVPTR PTR(31)   DEVICE ENTRY WORK */
*/*                                                PTR               */
*/*01* CREATED BY=     IEE3603D                                      */
*/*                                                                  */
*/*01* SUBPOOL=        229                                           */
*/*                                                                  */
*/*01* FUNCTION=       MAPS THE VARY COMMAND REQUESTS TO             */
*/*                    ASSIGN/UNASSIGN AND ASSOCIATE/DISASSOCIATE    */
*/*                    DYNAMIC PATHING FOR SPECIFIC DEVICES TO       */
*/*                    SINGLE OR MULTI-SYSTEMS.                      */
*/*                                                                  */
*/*                    THE VARY FOOTPRINTS MAP THE FLOW OF           */
*/*                    VARY ONLINE/OFFLINE/CONSOLE COMMAND           */
*/*                    PROCESSING AND SERVE AS A DEBUGGING           */
*/*                    AID.                                          */
*/*                                                                  */
*/*01* CHANGE ACTIVITY=                                              */
*/*   $H0=6872AU JBB1329 811201 PD2L: NEW MAPPING MACRO              */
*/*                                                                  */
*/********************************************************************/
*%GOTO PLSVSRI;     /*
         EJECT
VSRI     DSECT              VARY SERVICE ROUTINE INTERFACE LIST
         SPACE
***********************************************************************
*                                                                     *
*           THIS IS THE COMMON HEADER SECTION AND CONTAINS            *
*           THE ADDRESS OF THE DEVICE ENTRIES AND VARY                *
*           FOOTPRINTS.                                               *
*                                                                     *
***********************************************************************
         SPACE
VSRACRN  DS    CL4                ACRONYM - VSRI
VSRVERS  DS    CL1                VERSION LEVEL
VSRSP133 EQU   1                  VERSION LEVEL OS/VS2 JBB1329
VSRVERID EQU   VSRSP133           VERSION LEVEL - UPDATED FOR SIZE OR  X
                                   INCOMPATIBLE CHANGE
VSRNUM   DS    FL1                NUMBER OF DEVICE ENTRIES
VSRCNID  DS    CL1                CONSOLE ID
VSRFLGS  DS    BL1                FLAG BYTE
VSRMLSYS EQU   X'80'               SHR SPECIFIED ON VARY ONLINE
VSRRSV0  DS    H                  RESERVED
VSRRETCD DS    CL2                VARY RETURN CODE FOR DIRECT          X
                                   INVOCATION OF VARY
VSRFRSTP DS    A                  ADDRESS OF FIRST DEVICE ENTRY
VSRSNGLP DS    A                  ADDRESS OF A SINGLE DEVICE ENTRY TO  X
                                   BE PROCESSED
VSRTOKEN DS    A                  ESTAE TOKEN PTR FOR IEECB862
VSRFPTR  DS    A                  VARY FOOTPRINTS POINTER
VSRMODNM DS    CL8                ACTIVE MODULE NAME
VSRMODLV DS    CL16               FAILING MODULE LEVEL
VSRRSV1  DS    F                  RESERVED
VSRRSV2  DS    F                  RESERVED
VSRRSV3  DS    F                  RESERVED
VSRRSV4  DS    F                  RESERVED
VSRILEN  EQU   *-VSRI             LENGTH OF VSRI HEADER
         SPACE
***********************************************************************
*                                                                     *
*             THIS SECTION MAPS A DEVICE ENTRY                        *
*             THERE IS A MAXIMUM OF 28 DEVICE ENTRIES FOR             *
*             EACH VARY COMMAND.                                      *
*                                                                     *
***********************************************************************
         SPACE
VSRENTRY DSECT             DEVICE ENTRY DSECT
         SPACE
VSRINPUT DS    BL1                INPUT FLAGS
VSRADYNP EQU   X'80'               ASSOCIATE DYNAMIC PATHING
VSRASGN  EQU   X'40'               ASSIGN DEVICE
VSRDDYNP EQU   X'20'               DISASSOCIATE DYNAMIC PATHING
VSRUNASN EQU   X'10'               UNASSIGN DEVICE
VSRRSV5  EQU   X'08'               RESERVED
VSRRSV6  EQU   X'04'               RESERVED
VSRRSV7  EQU   X'02'               RESERVED
VSRRSV8  EQU   X'01'               RESERVED
         SPACE
VSRRSV9  DS    BL1                RESERVED
         SPACE
VSRSTAT  DS    BL1                STATUS FLAGS
VSRASSOC EQU   X'80'               DYNAMIC PATHING ASSOCIATED
VSRASSND EQU   X'40'               DEVICE ASSIGNED
VSRONLIN EQU   X'20'               DEVICE ONLINE
VSRPROB  EQU   X'10'               PROBLEM OCCURRED DURING IEECB809    X
                                     PROCESSING
VSRRSVA  EQU   X'08'               RESERVED
VSRRSVB  EQU   X'04'               RESERVED
VSRRSVC  EQU   X'02'               RESERVED
VSRRSVD  EQU   X'01'               RESERVED
         SPACE
VSRRSVE  DS    BL1                RESERVED
VSRUCBP  DS    A                  UCB ADDRESS
VSRIENLN EQU   *-VSRENTRY         LENGTH OF VSRI ENTRY
         SPACE
***********************************************************************
*                                                                     *
*      DEBUGGING FOOTPRINTS FOR VARY MODULES                          *
*                                                                     *
***********************************************************************
         SPACE
VSRFPT   DSECT              VARY FOOTPRINTS MAP
         SPACE
VSRNAME  DS    CL7                 ACRONYM - VARYFPT
         SPACE
VSRFPT1  DS    BL1                 FLAG BYTE 1
V3603DE  EQU   X'20'                IEE3603D WAS ENTERED
V3603DA  EQU   X'10'                IEE3603D IS ACTIVE
VCB904E  EQU   X'02'                IEECB904 WAS ENTERED
VCB904A  EQU   X'01'                IEECB904 IS ACTIVE
         SPACE
VSRFPT2  DS    BL1                 FLAG BYTE 2
V3303DE  EQU   X'20'                IEE3303D WAS ENTERED
V3303DA  EQU   X'10'                IEE3303D IS ACTIVE
V4403DE  EQU   X'02'                IEE4403D WAS ENTERED
V4403DA  EQU   X'01'                IEE4403D IS ACTIVE
         SPACE
VSRFPT3  DS    BL1                 FLAG BYTE 3
V4203DE  EQU   X'20'                IEE4203D WAS ENTERED
V4203DA  EQU   X'10'                IEE4203D IS ACTIVE
V4603DE  EQU   X'02'                IEE4603D WAS ENTERED
V4603DA  EQU   X'01'                IEE4603D IS ACTIVE
         SPACE
VSRFPT4  DS    BL1                 FLAG BYTE 4
V3103DE  EQU   X'20'                IEE3103D WAS ENTERED
V3103DA  EQU   X'10'                IEE3103D IS ACTIVE
V4903DE  EQU   X'02'                IEE4903D WAS ENTERED
V4903DA  EQU   X'01'                IEE4903D IS ACTIVE
         SPACE
VSRFPT5  DS    BL1                 FLAG BYTE 5
V4803DE  EQU   X'20'                IEE4803D WAS ENTERED
V4803DA  EQU   X'10'                IEE4803D IS ACTIVE
V7303DE  EQU   X'02'                IEE7303D WAS ENTERED
V7303DA  EQU   X'01'                IEE7303D IS ACTIVE
         SPACE
VSRFPT6  DS    BL1                 FLAG BYTE 6
VCB862E  EQU   X'20'                IEECB862 WAS ENTERED
VCB862A  EQU   X'10'                IEECB862 IS ACTIVE
VCB860C  EQU   X'02'                IEECB860 WAS CALLED BY IEE3603D
VCB860R  EQU   X'01'                RETURN FROM IEECB860
         SPACE
VSRFPT7  DS    BL1                 FLAG BYTE 7
VCB809C  EQU   X'20'                IEECB809 WAS CALLED BY IEE3103D    X
                                      OR IEECB862
VCB809A  EQU   X'10'                IEECB809 IS  ACTIVE
V2303DE  EQU   X'02'                IEE2303D WAS ENTERED
V2303DA  EQU   X'01'                IEE2303D IS ACTIVE
         SPACE
VSRFPT8  DS    BL1                 FLAG BYTE 8
VCVFDEVE EQU   X'20'                IECVFDEV WAS ENTERED (VARY FORCE)
VCVFDEVA EQU   X'10'                IECVFDEV IS ACTIVE
VENFMODE EQU   X'02'                IEFENFFX WAS ENTERED VIA IEE3103D
VENFMODA EQU   X'01'                IEFENFFX IS ACTIVE
         SPACE
VSRFPT9  DS    BL1                 FLAG BYTE 9
VVDEVE   EQU   X'20'                IEEVDEV WAS ENTERED VIA IEE3603D
VVDEVA   EQU   X'10'                IEEVDEV IS ACTIVE
V0503DE  EQU   X'02'                IEE0503D WAS ENTERED
V0503DA  EQU   X'01'                IEE0503D IS ACTIVE
         SPACE
VSRFPT10 DS    BL1                 FLAG BYTE 10
VMNTRE   EQU   X'20'                IEAVMNTR WAS ENTERED VIA IEE4603D
VMNTRA   EQU   X'10'                IEAVMNTR IS ACTIVE
*        EQU   X'02'                RESERVED
*        EQU   X'01'                RESERVED
VSRFPTLN EQU   *-VSRFPT             LENGTH OF FOOTPRINTS MAPPING
         MEND    , */
*%PLSVSRI: ;
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*         THIS IS THE COMMON HEADER SECTION AND CONTAINS           */
*/*         THE ADDRESS OF THE DEVICE ENTRIES AND VARY               */
*/*         FOOTPRINTS.                                              */
*/*                                                                  */
*/********************************************************************/
*%IF VSRIBASE ^= ''  %THEN %GOTO PLSVSRI1;
* DCL 1 VSRI BDY(WORD) BASED(VSRIPTR),/* VARY SERVICE ROUTINE
*                                         INTERFACE LIST             */
*%GOTO PLSVSRI3;
*%PLSVSRI1: ;
*   %IF VSRIBASE ^= 'NONE' %THEN %GOTO PLSVSRI2;
* DCL 1 VSRI BDY(WORD) ,              /* VARY SERVICE ROUTINE
*                                         INTERFACE LIST             */
*%GOTO PLSVSRI3;
*%PLSVSRI2: ;
* DCL 1 VSRI BDY(WORD) BASED(VSRIBASE),/* VARY SERVICE ROUTINE
*                                         INTERFACE LIST             */
*%PLSVSRI3: ;
*      3 VSRACRN CHAR(4),         /* ACRONYM - VSRI                  */
*      3 VSRVERS FIXED(8),        /* VERSION LEVEL                   */
*      3 VSRNUM  FIXED(8),        /* NUMBER OF DEVICE ENTRIES        */
*      3 VSRCNID CHAR(1),         /* CONSOLE ID                      */
*      3 VSRFLGS CHAR(1),         /* FLAG BYTE                       */
*       5 VSRMLSYS  BIT(1),       /*  SHR SPECIFIED ON VARY
*                                     ONLINE                         */
*      3 VSRRSV0 FIXED(16),       /* RESERVED                        */
*      3 VSRRETCD FIXED(16),      /* VARY RETURN CODE FOR DIRECT
*                                    INVOCATION OF VARY              */
*      3 VSRFRSTP PTR(31),        /* ADDRESS OF FIRST DEVICE ENTRY   */
*      3 VSRSNGLP PTR(31),        /* ADDRESS OF SINGLE DEVICE ENTRY
*                                     TO BE PROCESSED                */
*      3 VSRTOKEN PTR(31),        /* ESTAE TOKEN PTR FOR IEECB862    */
*      3 VSRFPTR  PTR(31),        /* VARY FOOTPRINTS POINTER         */
*      3 VSRMODNM CHAR(8),        /* ACTIVE MODULE NAME              */
*      3 VSRMODLV CHAR(16),       /* FAILING MODULE LEVEL            */
*      3 VSRRSV1 FIXED(31),       /* RESERVED                        */
*      3 VSRRSV2 FIXED(31),       /* RESERVED                        */
*      3 VSRRSV3 FIXED(31),       /* RESERVED                        */
*      3 VSRRSV4 FIXED(31);       /* RESERVED                        */
*@SPACE;
*/********************************************************************/
*/*                                                                  */
*/*           THIS SECTION MAPS A DEVICE ENTRY                       */
*/*           THERE IS A MAXIMUM OF 28 DEVICE ENTRIES                */
*/*           FOR EACH VARY COMMAND.                                 */
*/*           THE POINTER VSRDVPTR SHOULD BE SET EQUAL               */
*/*           TO EITHER VSRSNGLP OR VSRFRSTP.                        */
*/*                                                                  */
*/********************************************************************/
* DCL 1 VSRENTRY BDY(WORD) BASED(VSRDVPTR),/* DEVICE ENTRY           */
*      3 VSRINPUT CHAR(1),        /* INPUT FLAGS                     */
*       5 VSRADYNP  BIT(1),       /*  ASSOCIATE DYNAMIC PATHING      */
*       5 VSRASGN   BIT(1),       /*  ASSIGN DEVICE                  */
*       5 VSRDDYNP  BIT(1),       /*  DISASSOCIATE DYNAMIC PATHING   */
*       5 VSRUNASN  BIT(1),       /*  UNASSIGN DEVICE                */
*       5 VSRRSV5   BIT(1),       /*  RESERVED                       */
*       5 VSRRSV6   BIT(1),       /*  RESERVED                       */
*       5 VSRRSV7   BIT(1),       /*  RESERVED                       */
*       5 VSRRSV8   BIT(1),       /*  RESERVED                       */
*      3 VSRRSV9  CHAR(1),        /* RESERVED                        */
*      3 VSRSTAT  CHAR(1),        /* STATUS FLAGS                    */
*       5 VSRASSOC  BIT(1),       /*  DYNAMIC PATHING ASSOCIATED     */
*       5 VSRASSND  BIT(1),       /*  DEVICE ASSIGNED                */
*       5 VSRONLIN  BIT(1),       /*  DEVICE ONLINE                  */
*       5 VSRPROB   BIT(1),       /*  PROBLEM OCCURRED DURING
*                                      IEECB809 PROCESSING           */
*       5 VSRRSVA   BIT(1),       /*  RESERVED                       */
*       5 VSRRSVB   BIT(1),       /*  RESERVED                       */
*       5 VSRRSVC   BIT(1),       /*  RESERVED                       */
*       5 VSRRSVD   BIT(1),       /*  RESERVED                       */
*      3 VSRRSVE   CHAR(1),       /* RESERVED                        */
*      3 VSRUCBP   PTR(31);       /* UCB ADDRESS                     */
*@SPACE;
*/********************************************************************/
*/*    VALUES FOR VERSION LEVEL - PUT IN FIELD  VSRVERS              */
*/********************************************************************/
*  DCL VSRVERID FIXED(8) CONSTANT(VSRSP133);/* VERSION LEVEL - UPDATED
*                                     FOR SIZE OR INCOMPATIBLE CHANGE*/
*  DCL VSRSP133 FIXED(8) CONSTANT(1);/* VERSION LEVEL IS
*                                        OS/VS2 JBB1329              */
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*     DEBUGGING FOOTPRINTS FOR VARY MODULES                        */
*/*                                                                  */
*/********************************************************************/
*@SPACE;
* DCL 1 VSRFPT BDY(WORD) BASED(VSRFPTR),/* VARY FOOTPRINTS MAP       */
*      3 VSRNAME  CHAR(7),        /* ACRONYM - VARYFPT               */
*      3 VSRFPT1  BIT(8),         /* FLAG BYTE 1                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V3603DE BIT(1),         /*  IEE3603D WAS ENTERED           */
*       5 V3603DA BIT(1),         /*  IEE3603D IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VCB904E BIT(1),         /*  IEECB904 WAS ENTERED           */
*       5 VCB904A BIT(1),         /*  IEECB904 IS ACTIVE             */
*      3 VSRFPT2  BIT(8),         /* FLAG BYTE 2                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V3303DE BIT(1),         /*  IEE3303D WAS ENTERED           */
*       5 V3303DA BIT(1),         /*  IEE3303D IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V4403DE BIT(1),         /*  IEE4403D WAS ENTERED           */
*       5 V4403DA BIT(1),         /*  IEE4403D IS ACTIVE             */
*      3 VSRFPT3  BIT(8),         /* FLAG BYTE 3                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V4203DE BIT(1),         /*  IEE4203D WAS ENTERED           */
*       5 V4203DA BIT(1),         /*  IEE4203D IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V4603DE BIT(1),         /*  IEE4603D WAS ENTERED           */
*       5 V4603DA BIT(1),         /*  IEE4603D IS ACTIVE             */
*      3 VSRFPT4  BIT(8),         /* FLAG BYTE 4                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V3103DE BIT(1),         /*  IEE3103D WAS ENTERED           */
*       5 V3103DA BIT(1),         /*  IEE3103D IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V4903DE BIT(1),         /*  IEE4903D WAS ENTERED           */
*       5 V4903DA BIT(1),         /*  IEE4903D IS ACTIVE             */
*      3 VSRFPT5  BIT(8),         /* FLAG BYTE 5                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V4803DE BIT(1),         /*  IEE4803D WAS ENTERED           */
*       5 V4803DA BIT(1),         /*  IEE4803D IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V7303DE BIT(1),         /*  IEE7303D WAS ENTERED           */
*       5 V7303DA BIT(1),         /*  IEE7303D IS ACTIVE             */
*      3 VSRFPT6  BIT(8),         /* FLAG BYTE 6                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VCB862E BIT(1),         /*  IEECB862 WAS ENTERED           */
*       5 VCB862A BIT(1),         /*  IEECB862 IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VCB860C BIT(1),         /*  IEECB860 WAS CALLED BY IEE3603D*/
*       5 VCB860R BIT(1),         /*  RETURN FROM IEECB860           */
*      3 VSRFPT7  BIT(8),         /* FLAG BYTE 7                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VCB809C BIT(1),         /*  IEECB809 WAS CALLED BY IEE3103D
*                                        OR IEECB862                 */
*       5 VCB809A BIT(1),         /*  IEECB809 IS  ACTIVE            */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V2303DE BIT(1),         /*  IEE2303D WAS ENTERED           */
*       5 V2303DA BIT(1),         /*  IEE2303D IS ACTIVE             */
*      3 VSRFPT8  BIT(8),         /* FLAG BYTE 8                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VCVFDEVE BIT(1),        /*  IECVFDEV WAS ENTERED           */
*       5 VCVFDEVA BIT(1),        /*  IECVFDEV IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VENFMODE BIT(1),        /*  IEFENFFX WAS ENTERED           */
*       5 VENFMODA BIT(1),        /*  IEFENFFX IS ACTIVE             */
*      3 VSRFPT9  BIT(8),         /* FLAG BYTE 9                     */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VVDEVE  BIT(1),         /*  IEEVDEV WAS ENTERED VIA
*                                     IEE3603D                       */
*       5 VVDEVA  BIT(1),         /*  IEEVDEV IS ACTIVE              */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 V0503DE BIT(1),         /*  IEE0503D WAS ENTERED           */
*       5 V0503DA BIT(1),         /*  IEE0503D IS ACTIVE             */
*      3 VSRFPT10 BIT(8),         /* FLAG BYTE 10                    */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 VMNTRE  BIT(1),         /*  IEAVMNTR WAS ENTERED VIA IEE4603D
*                                                                    */
*       5 VMNTRA  BIT(1),         /*  IEAVMNTR IS ACTIVE             */
*       5 *       BIT(2),         /*  RESERVED                       */
*       5 *       BIT(1),         /*  RESERVED                       */
*       5 *       BIT(1);         /*  RESERVED                       */
./ ADD NAME=IEEZB813
          MACRO
          IEEZB813
*/********************************************************************/
*/*                                                                  */
*/* MACRO NAME=       IEEZB813                                       */
*/*                                                                  */
*/* MACDATE   =       11/22/80                                       */
*/*                                                                  */
*/* DESCRIPTIVE NAME= SCHEDULED COMMANDS TABLE MAPPING               */
*/*                                                                  */
*/* COPYRIGHT=                                                       */
*/*                   5740-XYN COPYRIGHT IBM CORP 1981,              */
*/*                   LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,  */
*/*                   REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER    */
*/*                   G120-2083.                                     */
*/*                                                                  */
*/* STATUS=           OS/VS2 JBB1326                                 */
*/*                                                                  */
*/* FUNCTION=         MAPS THE SCHEDULED COMMANDS TABLE IN IEEMB884  */
*/*                                                                  */
*/* METHOD OF ACCESS=                                                */
*/*                   SPECIFY IEEZB813                               */
*/*                   USING ON TABLEDEF MAPS ONE ENTRY IN THE SCT    */
*/*                   ARRAY IN IEEMB884.                             */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/* $L0=XMCTASK,  JBB1326,  801031,  L02I:  NEW FOR OS/VS2 JBB1326   */
*/*                                                                  */
*/********************************************************************/
         SPACE
TABLEDEF DSECT   -       DSECT TO MAP ONE ENTRY OF THE SCT IN IEEMB884
         SPACE
TABSTART EQU   *                  TABLE ENTRY START
VERBCODE DS    CL1                ONE BYTE VERB CODE COMPARAND
MODULEID DS    CL5                FIVE BYTE MODULE NAME COMPLETER
BRANCHID DS    CL1                ONE BYTE BRANCH INDEX
TEASNUM  DS    AL2                TARGET EXECUTION ADDRESS SPACE
TABEND   EQU   *                  TABLE ENTRY END
TABENT   EQU   TABEND-TABSTART    TABLE ENTRY SIZE
         MEND
./ ADD NAME=IEEZB906
 /********************************************************************/
 /* IEEZB906                                                         */
 /*           MACCOMP - SC1CM                                        */
 /*           MACSTAT - AG17SP2F                                     */
 /*           MACMEAN - INTERFACE TO IEECB906                        */
 /*                                                                  */
 /*      THIS MACRO MAPS THE INTERFACE TO IEECB906. IEECB906 IS THE  */
 /*      ESTAE ROUTINE FOR SLIP COMMAND PROCESSORS IEECB905 AND      */
 /*      IEECB907 (DISPLAY SLIP).                                    */
 /********************************************************************/
     DCL 1 SESTAE BASED(*),
           2 SESTFLG,
             3 SESTSLP BIT(1),        /* ESTAE COVERS SLIP COMMAND   */
             3 SESTDSLP BIT(1),       /* ESTAE COVERS DISPLAY SLIP   */
             3 SESTSEQ BIT(1),        /* SHDRSEQ BYTE HELD BY PROC   */
             3 SESTSET BIT(1),        /* SLIP SET COMMAND ENTERED    */
             3 SESTMOD BIT(1),        /* SLIP MOD COMMAND ENTERED    */
             3 SESTDEL BIT(1),        /* SLIP DEL COMMAND ENTERED    */
             3 SESTCHN BIT(1),        /* SCE CHAIN BEING SCANNED     */
             3 * BIT(1),
           2 SESTFLG2,
             3 SEST503D BIT(1),       /* IEE0503D MUST BE DELETED    */
             3 SESTVTSL BIT(1),       /* IEAVTSLP MUST BE DELETED    */
             3 *        BIT(6),       /* RESERVED                    */
           2 *          CHAR(2),      /* RESERVED                    */
           2 SESTCSCB   PTR(31),      /* ADDR OF CSCB TO BE FREED    */
           2 SESTSHDR   PTR(31),      /* ADDR OF SHDR TO BE FREED    */
           2 SESTSCE    PTR(31),      /* ADDR OF SCE TO BE FREED     */
           2 SESTWTOI   CHAR(4),      /* WTOID - ISSUE ENDLINE       */
           2 SESTSCAN   PTR(31);      /* ADDR OF SCE CURRENTLY BEING
                                         SCANNED WHILE SCANNING THE
                                         SCE CHAIN                   */
./ ADD NAME=IEFCIFP
*  %GOTO CIFPRO;                          /*
          MACRO
          IEFCIFP &COMP=
.*/ %CIFPRO: ;
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME = IEFCIFP                                            */
*/*                                                                  */
*/* DESCRIPTIVE NAME = CONVERTER/INTERPRETER FOOTPRINT AREA MAPPING  */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1982,1983,           @H2C*/
*/*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
*/*             REFER TO COPYRIGHT INSTRUCTION FORM NUMBER G120-2083.*/
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1329                                      @H2C*/
*/*                                                                  */
*/* FUNCTION = MAPS CONVERTER/INTERPRETER MODULES FOOTPRINT AREA     */
*/*                                                                  */
*/* MODULE TYPE = MACRO                                              */
*/*                                                                  */
*/* INVOCATION =                                                     */
*/*                                                                  */
*/*  BAL - IEFCONFP COMP=CON (FOR CONVERTER FOOTPRINT AREA MAPPING)  */
*/*                     OR                                           */
*/*                 COMP=INT (FOR INTERPRETER FOOTPRINT AREA MAPPING)*/
*/*                                                                  */
*/*                                                                  */
*/*  PL/S - % COMP='CON'    (FOR CONVERTER FOOTPRINT AREA MAPPING)   */
*/*                     OR                                           */
*/*         % COMP='INT'    (FOR INTERPRETER FOOTPRINT AREA MAPPING) */
*/*         %INCLUDE SYSLIB(IEFCIFP)                                 */
*/*                                                                  */
*/*                                                                  */
*/*      NOTE: IF THE COMP PARAMETER IS LEFT BLANK OR NOT SPECIFIED, */
*/*            THEN A MAPPING FOR THE COMMON CONVERTER/INTERPRETER   */
*/*            SERVICE ROUTINES ONLY IS GENERATED.                   */
*/*                                                                  */
*/* CHANGE ACTIVITY = H0,H1,H2                                   @H2C*/
*/*                                                                  */
*/*  $H0= EXTJCL JBB1328 811202 PD43: SUPPORT FOR EXTENDED JCL       */
*/*  $H1= EXTJCL JBB1328 820326 PD43: SUPPORT FOR EXTENDED JCL   @H1C*/
*/*  $H2= EXTJCL JBB1329 820611 PDE6: SUPPORT FOR EXTENDED JCL   @H2A*/
*/*                                                                  */
*/********************************************************************/
*/* A 000000-999999                                              @H0A*/
*/* R FOOTPRINT FOR A SUBROUTINE NO LONGER NEEDED IN IEFVJDTI    @H1A*/
*/* A FOOTPRINTS FOR CHECKSPF AND CHECKSPO IN IEFVJDTI           @H2A*/
*  %GOTO CIFPLS;                  /*
CIFPRNT   DSECT
          DS  0F
***********************************************************************
*      SERVICE ROUTINES COMMON TO CONVERTER AND INTERPRETER
***********************************************************************
FPVGM     DS  X                      FOOTPRINTS FOR IEFVGM
VGMUSE    EQU X'80'                  MODULE USED FLAG
VGMEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHQ     DS  X                      FOOTPRINTS FOR IEFVHQ
VHQUSE    EQU X'80'                  MODULE USED FLAG
VHQEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHR     DS  X                      FOOTPRINTS FOR IEFVHR
VHRUSE    EQU X'80'                  MODULE USED FLAG
VHREX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
          DS  XL2                    RESERVED
         AIF    ('&COMP' EQ '').ENDMAP
         AIF    ('&COMP' EQ 'CON').CONMAP
         AIF    ('&COMP' EQ 'INT').INTMAP
         MNOTE 8,'COMP=&COMP SPECIFICATION INVALID-MAPPING INCOMPLETE'
         MEXIT
.CONMAP  ANOP
***********************************************************************
*                 CONVERTER MAIN ROUTINES                             *
***********************************************************************
FPVFA     DS  X                      FOOTPRINTS FOR IEFVFA
VFAUSE    EQU X'80'                  MODULE USED FLAG
VFAEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVFB     DS  X                      FOOTPRINTS FOR IEFVFB
VFBUSE    EQU X'80'                  MODULE USED FLAG
VFBEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHA     DS  X                      FOOTPRINTS FOR IEFVHA
VHAUSE    EQU X'80'                  MODULE USED FLAG
VHAEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHC     DS  X                      FOOTPRINTS FOR IEFVHC
VHCUSE    EQU X'80'                  MODULE USED FLAG
VHCEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHCB    DS  X                      FOOTPRINTS FOR IEFVHCB
VHCBUSE   EQU X'80'                  MODULE USED FLAG
VHCBEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHEB    DS  X                      FOOTPRINTS FOR IEFVHEB
VHEBUSE   EQU X'80'                  MODULE USED FLAG
VHEBEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHEC    DS  X                      FOOTPRINTS FOR IEFVHEC
VHECUSE   EQU X'80'                  MODULE USED FLAG
VHECEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHF     DS  X                      FOOTPRINTS FOR IEFVHF
VHFUSE    EQU X'80'                  MODULE USED FLAG
VHFEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHL     DS  X                      FOOTPRINTS FOR IEFVHL
VHLUSE    EQU X'80'                  MODULE USED FLAG
VHLEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHM     DS  X                      FOOTPRINTS FOR IEFVHM
VHMUSE    EQU X'80'                  MODULE USED FLAG
VHMEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVH1     DS  X                      FOOTPRINTS FOR IEFVH1
VH1USE    EQU X'80'                  MODULE USED FLAG
VH1EX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVINA    DS  X                      FOOTPRINTS FOR IEFVINA
VINAUSE   EQU X'80'                  MODULE USED FLAG
VINAEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVINB    DS  X                      FOOTPRINTS FOR IEFVINB
VINBUSE   EQU X'80'                  MODULE USED FLAG
VINBEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVINC    DS  X                      FOOTPRINTS FOR IEFVINC
VINCUSE   EQU X'80'                  MODULE USED FLAG
VINCEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVIND    DS  X                      FOOTPRINTS FOR IEFVIND
VINDUSE   EQU X'80'                  MODULE USED FLAG
VINDEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVINE    DS  X                      FOOTPRINTS FOR IEFVINE
VINEUSE   EQU X'80'                  MODULE USED FLAG
VINEEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPDCODE   DS  X                      FOOTPRINTS FOR IEFDCODE
DCODEUSE  EQU X'80'                  MODULE USED FLAG
DCODEEX   EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPNCODE   DS  X                      FOOTPRINTS FOR IEFNCODE
NCODEUSE  EQU X'80'                  MODULE USED FLAG
NCODEEX   EQU X'40'                  MODULE ENTERED/EXITED FLAG
.ENDMAP   ANOP
          DS  0F                     END OF FOOTPRINT AREA
CIFPLNG   EQU (*-CIFPRNT)            LENGTH OF FOOTPRINT AREA
          AGO   .END
.INTMAP   ANOP
*********************************************************************
*                INTERPRETER SERVICE ROUTINES                       *
*********************************************************************
FPVGI     DS  X                      FOOTPRINTS FOR IEFVGI
VGIUSE    EQU X'80'                  MODULE USED FLAG
VGIEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVGK     DS  X                      FOOTPRINTS FOR IEFVGK
VGKUSE    EQU X'80'                  MODULE USED FLAG
VGKEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVGS     DS  X                      FOOTPRINTS FOR IEFVGS
VGSUSE    EQU X'80'                  MODULE USED FLAG
VGSEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVGT     DS  X                      FOOTPRINTS FOR IEFVGT
VGTUSE    EQU X'80'                  MODULE USED FLAG
VGTEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
*********************************************************************
*                INTERPRETER MAIN ROUTINES                          *
*********************************************************************
FPB901    DS  X                      FOOTPRINTS FOR IEFNB901
B901USE   EQU X'80'                  MODULE USED FLAG
B901EX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPB903    DS  X                      FOOTPRINTS FOR IEFNB903
B903USE   EQU X'80'                  MODULE USED FLAG
B903EX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVDA     DS  X                      FOOTPRINTS FOR IEFVDA
VDAUSE    EQU X'80'                  MODULE USED FLAG
VDAEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPDBSD    DS  X                      FOOTPRINTS FOR IEFVDBSD
DBSDUSE   EQU X'80'                  MODULE USED FLAG
DBSDEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVEA     DS  X                      FOOTPRINTS FOR IEFVEA
VEAUSE    EQU X'80'                  MODULE USED FLAG
VEAEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHE     DS  X                      FOOTPRINTS FOR IEFVHE
VHEUSE    EQU X'80'                  MODULE USED FLAG
VHEEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHH     DS  X                      FOOTPRINTS FOR IEFVHH
VHHUSE    EQU X'80'                  MODULE USED FLAG
VHHEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVHN     DS  X                      FOOTPRINTS FOR IEFVHN
VHNUSE    EQU X'80'                  MODULE USED FLAG
VHNEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPVJA     DS  X                      FOOTPRINTS FOR IEFVJA
VJAUSE    EQU X'80'                  MODULE USED FLAG
VJAEX     EQU X'40'                  MODULE ENTERED/EXITED FLAG
FPJDTI    DS  0CL3                   FOOTPRINTS FOR IEFVJDTI
FPJDTI1   DS  X
JDTIUSE   EQU X'80'                  MODULE USED FLAG
JDTIEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
INITVBEX  EQU X'20'                'INITVERB' SUBROUTINE ENTERED/EXITED
INITSBEX  EQU X'10'                'INITSUBP' SUBROUTINE ENTERED/EXITED
GJVRBEX   EQU X'08'                'GJVRBLBL' SUBROUTINE ENTERED/EXITED
GOVRBEX   EQU X'04'                'GOVRBLBL' SUBROUTINE ENTERED/EXITED
GETKWDEX  EQU X'02'                'GETKWRD' SUBROUTINE ENTERED/EXITED
GETSPAEX  EQU X'01'                'GETSPARM' SUBROUTINE ENTERED/EXITED
FPJDTI2   DS  X
BOLCONEX  EQU X'80'                'BOLCONV' SUBROUTINE ENTERED/EXITED
CHACONEX  EQU X'40'                'CHARCONV' SUBROUTINE ENTERED/EXITED
INTCONEX  EQU X'20'                'INTCONV' SUBROUTINE ENTERED/EXITED
HEXCONEX  EQU X'10'                'HEXCONV' SUBROUTINE ENTERED/EXITED
WSWBSTEX  EQU X'08'                'WSWBSTUP' SUBROUTINE ENTERED/EXITED
RESRVEX   EQU X'04'                  RESERVED
MSGBLDEX  EQU X'02'                'MSGBUILD' SUBROUTINE ENTERED/EXITED
RESEREX   EQU X'01'                'RESEREXT' SUBROUTINE ENTERED/EXITED
FPJDTI3   DS  X
REFRKEX   EQU X'80'                'REFRCONV' SUBROUTINE ENTERED/EXITED
INVKFEX   EQU X'40'                'INVKFIND' SUBROUTINE ENTERED/EXITED
INVKVEX   EQU X'20'                'INVKVGS' SUBROUTINE ENTERED/EXITED
RESRVEX2  EQU X'10'                  RESERVED                      @H1C
CHARTYEX  EQU X'08'                'CHARTYPE' SUBROUTINE ENTERED/EXITED
CHKSPFEX  EQU X'04'                'CHECKSPF' SUBROUTINE ENTERED/EXITED
*                                                                  @H2A
CHKSPOEX  EQU X'02'                'CHECKSPO' SUBROUTINE ENTERED/EXITED
*                                                                  @H2A
FPJDTV    DS  X                      FOOTPRINTS FOR IEFVJDTV
JDTVUSE   EQU X'80'                  MODULE USED FLAG
JDTVEX    EQU X'40'                  MODULE ENTERED/EXITED FLAG
          DS  0F
CIFPLNG   EQU (*-CIFPRNT)            LENGTH OF FOOTPRINT AREA
.END      ANOP
          MEND
.*/ %CIFPLS: ;
* DCL 1 CIFPRNT BASED(CIFTPRNT),
*/********************************************************************/
*/*       SERVICE ROUTINES COMMON TO CONVERTER AND INTERPRETER       */
*/********************************************************************/
*      2 FPVGM CHAR(1),            /* FOOTPRINTS FOR IEFVGM          */
*        3 VGMUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VGMEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHQ CHAR(1),            /* FOOTPRINTS FOR IEFVHQ          */
*        3 VHQUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHQEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHR CHAR(1),            /* FOOTPRINTS FOR IEFVHR          */
*        3 VHRUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHREX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 *     CHAR(2)             /* RESERVED                       */
* % IF COMP=' ' % THEN % GOTO ENDMAP; /* MAP JUST COMMON SERVICE RTNS*/
* % IF COMP='CON' % THEN % GOTO CONMAP; /* MAP CONVERTER RTNS        */
* % IF COMP='INT' % THEN % GOTO INTMAP; /* MAP INTERPRETER RTNS      */
* % GOTO INVPARM;                       /* INVALID PARM SPECIFIED    */
* %;  /***************************************************************/
* %;  /*                        MAP CONVERTER RTNS                   */
* %;  /***************************************************************/
* % CONMAP: ;
*                     ,
*/********************************************************************/
*/*               CONVERTER MAIN ROUTINES                            */
*/********************************************************************/
*      2 FPVFA CHAR(1),            /* FOOTPRINTS FOR IEFVFA          */
*        3 VFAUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VFAEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVFB CHAR(1),            /* FOOTPRINTS FOR IEFVFB          */
*        3 VFBUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VFBEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHA CHAR(1),            /* FOOTPRINTS FOR IEFVHA          */
*        3 VHAUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHAEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHC CHAR(1),            /* FOOTPRINTS FOR IEFVHC          */
*        3 VHCUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHCEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHCB CHAR(1),           /* FOOTPRINTS FOR IEFVHCB         */
*        3 VHCBUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VHCBEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHEB CHAR(1),           /* FOOTPRINTS FOR IEFVHEB         */
*        3 VHEBUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VHEBEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHEC CHAR(1),           /* FOOTPRINTS FOR IEFVHEC         */
*        3 VHECUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VHECEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHF CHAR(1),            /* FOOTPRINTS FOR IEFVHF          */
*        3 VHFUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHFEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHL CHAR(1),            /* FOOTPRINTS FOR IEFVHL          */
*        3 VHLUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHLEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHM CHAR(1),            /* FOOTPRINTS FOR IEFVHM          */
*        3 VHMUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHMEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVH1 CHAR(1),            /* FOOTPRINTS FOR IEFVH1          */
*        3 VH1USE BIT(1),          /* MODULE USED FLAG               */
*        3 VH1EX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVINA CHAR(1),           /* FOOTPRINTS FOR IEFVINA         */
*        3 VINAUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VINAEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVINB CHAR(1),           /* FOOTPRINTS FOR IEFVINB         */
*        3 VINBUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VINBEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVINC CHAR(1),           /* FOOTPRINTS FOR IEFVINC         */
*        3 VINCUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VINCEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVIND CHAR(1),           /* FOOTPRINTS FOR IEFVIND         */
*        3 VINDUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VINDEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVINE CHAR(1),           /* FOOTPRINTS FOR IEFVINE         */
*        3 VINEUSE BIT(1),         /* MODULE USED FLAG               */
*        3 VINEEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPDCODE CHAR(1),          /* FOOTPRINTS FOR IEFDCODE        */
*        3 DCODEUSE BIT(1),        /* MODULE USED FLAG               */
*        3 DCOEEEX  BIT(1),        /* MODULE ENTERED/EXITED FLAG     */
*      2 FPNCODE CHAR(1),          /* FOOTPRINTS FOR IEFNCODE        */
*        3 NCODEUSE BIT(1),        /* MODULE USED FLAG               */
*        3 NCOEEEX  BIT(1),        /* MODULE ENTERED/EXITED FLAG     */
*      2 *       CHAR(1)           /* RESERVED                       */
* % GOTO ENDMAP;                   /* END MAPPING                    */
* %;  /***************************************************************/
* %;  /*                        MAP INTERPRETER RTNS                 */
* %;  /***************************************************************/
* % INTMAP: ;
*                     ,
*/********************************************************************/
*/*              INTERPRETER SERVICE ROUTINES                        */
*/********************************************************************/
*      2 FPVGI CHAR(1),            /* FOOTPRINTS FOR IEFVGI          */
*        3 VGIUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VGIEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVGK CHAR(1),            /* FOOTPRINTS FOR IEFVGK          */
*        3 VGKUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VGKEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVGS CHAR(1),            /* FOOTPRINTS FOR IEFVGS          */
*        3 VGSUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VGSEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVGT CHAR(1),            /* FOOTPRINTS FOR IEFVGT          */
*        3 VGTUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VGTEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*/********************************************************************/
*/*              INTERPRETER MAIN ROUTINES                           */
*/********************************************************************/
*      2 FPB901 CHAR(1),           /* FOOTPRINTS FOR IEFNB901        */
*        3 B901USE BIT(1),         /* MODULE USED FLAG               */
*        3 B901EX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPB903 CHAR(1),           /* FOOTPRINTS FOR IEFNB903        */
*        3 B903USE BIT(1),         /* MODULE USED FLAG               */
*        3 B903EX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVDA CHAR(1),            /* FOOTPRINTS FOR IEFVDA          */
*        3 VDAUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VDAEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPDBSD CHAR(1),           /* FOOTPRINTS FOR IEFVDBSD        */
*        3 DBSDUSE BIT(1),         /* MODULE USED FLAG               */
*        3 DBSDEX  BIT(1),         /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVEA CHAR(1),            /* FOOTPRINTS FOR IEFVEA          */
*        3 VEAUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VEAEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHE CHAR(1),            /* FOOTPRINTS FOR IEFVHE          */
*        3 VHEUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHEEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHH CHAR(1),            /* FOOTPRINTS FOR IEFVHH          */
*        3 VHHUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHHEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVHN CHAR(1),            /* FOOTPRINTS FOR IEFVHN          */
*        3 VHNUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VHNEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPVJA CHAR(1),            /* FOOTPRINTS FOR IEFVJA          */
*        3 VJAUSE BIT(1),          /* MODULE USED FLAG               */
*        3 VJAEX  BIT(1),          /* MODULE ENTERED/EXITED FLAG     */
*      2 FPJDTI CHAR(3),           /* FOOTPRINTS FOR IEFVJDTI        */
*        3 FPJDTI1 CHAR(1),
*          4 JDTIUSE BIT(1),       /* MODULE USED FLAG               */
*          4 JDTIEX  BIT(1),       /* MODULE ENTERED/EXITED FLAG     */
*          4 INITVBEX BIT(1),/* -INITVERB- SUBROUTINE ENTERED/EXITED */
*          4 INITSBEX BIT(1),/* -INITSUBP- SUBROUTINE ENTERED/EXITED */
*          4 GJVRBEX  BIT(1),/* -GJVRBLBL- SUBROUTINE ENTERED/EXITED */
*          4 GOVRBEX  BIT(1),/* -GOVRBLBL- SUBROUTINE ENTERED/EXITED */
*          4 GETKWDEX BIT(1),/* -GETKWRD-  SUBROUTINE ENTERED/EXITED */
*          4 GETSPAEX BIT(1),/* -GETSPARM- SUBROUTINE ENTERED/EXITED */
*        3 FPJDTI2 CHAR(1),
*          4 BOLCONEX BIT(1),/* -BOLCONV-  SUBROUTINE ENTERED/EXITED */
*          4 CHACONEX BIT(1),/* -CHARCONV- SUBROUTINE ENTERED/EXITED */
*          4 INTCONEX BIT(1),/* -INTCONV-  SUBROUTINE ENTERED/EXITED */
*          4 HEXCONEX BIT(1),/* -HEXCONV-  SUBROUTINE ENTERED/EXITED */
*          4 WSWBSTEX BIT(1),/* -WSWBSTUP- SUBROUTINE ENTERED/EXITED */
*          4 RESRVEX  BIT(1),      /* RESERVED                       */
*          4 MSGBLDEX BIT(1),/* -MSGBUILD- SUBROUTINE ENTERED/EXITED */
*          4 RESEREX  BIT(1),/* -RESEREXT- SUBROUTINE ENTERED/EXITED */
*        3 FPJDTI3 CHAR(1),
*          4 REFRKEX  BIT(1),/* -REFRCONV- SUBROUTINE ENTERED/EXITED */
*          4 INVKFEX  BIT(1),/* -INVKFIND- SUBROUTINE ENTERED/EXITED */
*          4 INVKVEX  BIT(1),/* -INVKVGS - SUBROUTINE ENTERED/EXITED */
*          4 RESRVEX2 BIT(1),/*  RESERVED                        @H1C*/
*          4 CHARTYEX BIT(1),/* -CHARTYPE- SUBROUTINE ENTERED/EXITED */
*          4 CHKSPFEX BIT(1),/* -CHECKSPF- SUBROUTINE ENTERED/EXITED
*                                                                @H2A*/
*          4 CHKSPOEX BIT(1),/* -CHECKSPO- SUBROUTINE ENTERED/EXITED
*                                                                @H2A*/
*      2 FPJDTV CHAR(1),           /* FOOTPRINTS FOR IEFVJDTV        */
*        3 JDTVUSE BIT(1),         /* MODULE USED FLAG               */
*        3 JDTVEX  BIT(1)          /* MODULE ENTERED/EXITED FLAG     */
* % GOTO ENDMAP;                   /* END MAPPING                    */
* % INVPARM: ;                     /* INVALID PARAMETER SPECIFIED    */
* % IEFCIFPM: MACRO;
* ANS ('/*COMP PARAMETER SPECIFICATION INVALID---MAPPING INCOMPLETE*/')
*          NORESCAN;  /* ISSUES ERROR MESSAGE WITHIN MACRO EXPANSION */
*  ANS MSG('COMP PARAMETER SPECIFICATION INVALID---MAPPING INCOMPLETE')
*          NORESCAN;  /* ISSUES ERROR MESSAGE WITHIN MACRO SOURCE    */
* % END IEFCIFPM;
* ?IEFCIFPM;
* % ENDMAP: ;
*           ;
./ ADD NAME=IEFCVRWA
*%GOTO CNVPROLG;   /*
         MACRO
         IEFCVRWA ,
*
.*/ %CNVPROLG: ;
*/********************************************************************/
*/* MODULE NAME = IEFCVRWA                                       @H1A*/
*/*                                                                  */
*/* DESCRIPTIVE NAME = CONVERTER WORK AREA                       @H1C*/
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP., 1982               @H1A*/
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY                */
*/*             OF IBM, REFER TO COPYRIGHT INSTRUCTIONS              */
*/*             FORM NUMBER G120-2083                                */
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1328                                      @H1C*/
*/*                                                                  */
*/* MODULE TYPE = MACRO                                          @H1A*/
*/*                                                                  */
*/* INVOCATION =                                                 @H1A*/
*/*                                                                  */
*/*           PL/S - %INCLUDE SYSLIB(IEFCVRWA)                   @H1A*/
*/*                                                                  */
*/*           BAL  - NO DSECT IS GENERATED BY THIS MACRO         @H1A*/
*/*                                                                  */
*/* NOTES =                                                          */
*/*                                                                  */
*/*  IEFCVRWA MAPS DATA FIELDS AND SWITCHES UNIQUE TO THE CONVERTER. */
*/*  IT MUST BE INVOKED IMMEDIATELY FOLLOWING IEFCOMWA, TO INSURE    */
*/*  CORRECT ADDRESSABILITY. REGISTER 12 IS THE BASE REGISTER ACROSS */
*/*  THE ENTIRE WORK AREA MAPPED BY BOTH IEFCOMWA AND IEFCVRWA.      */
*/*  THEREFORE DISPLACEMENTS FOR THE CONVERTER WORK AREA MUST BE A   */
*/*  CONTINUATION OF THOSE FOR THE COMMON WORK AREA.                 */
*/*                                                                  */
*/*        WARNING: FOR MODULE IEFVFA, DISPLACEMENTS IN THE      @H1A*/
*/*                 SCAN WORK AREA (IEFVMSWA) ARE A CONTINUATION @H1A*/
*/*        OF THOSE FOR THE COMMON WORK AREA/CONVERTER WORK      @H1A*/
*/*        AREA.  THEREFORE ANY LENGTHENING OF THIS MACRO WILL   @H1A*/
*/*        REQUIRE A RECOMPILATION OF IEFVFA.                    @H1A*/
*/*                                                                  */
*/* CHANGE ACTIVITY = H1,R1,H2                                   @H2C*/
*/*  $H1= EXTJCL JBB1328 810316 PD2R: SUPPORT FOR EXTENDED JCL   @H1A*/
*/*  $R1= PPP0013 JBB1328 810702 PD2R: CAUSE CORRECT ERROR MSG       */
*/*                                    FOR NEW VERB STATEMENT OUT OF */
*/*                                    SEQUENCE IN PROCEDURE         */
*/*  $H2= EXTJCL JBB1328 811202 PD43: SUPPORT FOR EXTENDED JCL   @H2A*/
*/*                                                                  */
*/********************************************************************/
*/* A - EXEC PROC STATEMENT NUMBER FIELD                         @H2A*/
*/* A - STEP(EXEC) RECEIVED FLAG                                 @H2A*/
*/* A - CNTL/ENDCNTL FLAG                                        @H2A*/
*   %GOTO CNVWAPLS;  /*
*
CVRWA    DS    0F                  START OF CONVERTER WORK AREA. Y02668
*
*  POINTERS, WORK AND DATA AREAS.
*
PDCBP    DS    F                        PROCLIB DCB OR NOTED TTR
IWAINTS3 DS    F                   PTR TO EXIT LIST ACCT ENTRY     AABA
IWAINTS4 DS    F                   PTR TO BLOCKED PROCLIB BUFFER   AABA
CWABPROC EQU   IWAINTS4
IWAINTS5 DS    F                   PTR TO JOB MNGMT RECORD         AABA
CWATXTEX DS    F                   PTR TO TEXT EXIT RTNE ADDR.
RSTMT    DS    F                        PTR TO RDR STMT
         DS    CL1                      VERB #
*                                          NULL=0
*                                          JOB=1
*                                          EXEC=2
*                                          DD=4
*                                          PROC=8                  AAAA
JDVBCODE EQU   16                          JDT-DEFINED VERB=16     @H1A
SSE      EQU   128                         DD STMT SEQUENCE ERROR
CRE      EQU   64   BIT 1         MISPLACED SYSCHK DD STMT         AACA
         DS    CL1                      NAME LENGTH
         DS    CL1                      RELATIVE LIST PTR
         DS    CL1                      LENGTH OF VERB             @H1C
PSTMT    DS    2F                       SAME AS RDR PARM LIST
VERB     EQU   4                        OFFSET FOR VERB BYTE
NAMEL    EQU   5                        OFFSET FOR NAME LENGTH
LISTPTR  EQU   6                        OFFSET FOR REL LIST PTR
VERBLEN  EQU   7                        OFFSET FOR VERB LENGTH     @H1A
*                                  PROCLIB MERGE CONTROL DATA
PDNM     DS    CL8                      PROC DD NAME            YM02703
PSNM     DS    CL8                      PROC STEP NAME          YM02703
RDNM     DS    CL8                      RDR DD NAME             YM02703
RSNM     DS    CL8                      RDR STEP NAME           YM02703
PPSN     DS    CL8                      PREVIOUS PROC STEP NAME YM02703
IWAPARM  DS    F   ADDRESS OF THE PARAMETER LIST USED FOR          O106
*                     PROCESSING IN-LINE PROCEDURES                O106
*                     SET AND USED BY IEFVINA AND IEFVEA           O106
DREFB    DS    CL176        SYMBOLIC PARAMETER TABLE             Y02668
IWAJOBS5 DS    F                   CHKP/REST - PTR TO SYSCHK DD    AAAA
IWAWKBF  DS    F   ADDRESS OF THE WORK AREA GOTTEN BY IEFVHCB      O106
IWASTAPL DS    F         POINTER TO R/I STAE PARAMETER LIST      A39047
CWAJMRPT DS    F                   POINTER TO JMR.
IWANELJC DS    F         NEL JCL POINTER FIELD.                    I272
*                        STORED BY IEFVH1. USED BY IEFVFA FOR      I272
*                            INPUT TO POST SCAN ROUTINE            I272
TBEGP    DS    F                        TEXT BEGIN POINTER
TKEYP    DS    F                        TEXT KEY POINTER
TNUMP    DS    F                        TEXT NUMBER POINTER
TLENP    DS    F                        TEXT LENGTH POINTER
TENDP    DS    F                        TEXT END POINTER
AODSPCSA DS    F                   SAVE RETURN REGISTER IN VFA.  Y02668
AOFDTMP1 DS    F                   ADDR OF SPECIAL FIND ROUTINE. Y02668
AOKSCHSA DS    8F                  AOKSRCHR REG SAVE AREA.       Y02668
AOGACSA  EQU   AOKSCHSA            GET AND CLEAR RTNE SAVE AREA. Y02668
*                                                                Y02668
AOKSR1SA DS    2F                  AOKSR1 REG SAVE AREA.         Y02668
AOHEBSA  DS    F                   VHEB RETURN REG SAVE AREA.    Y02668
AODFLTSA DS    7F                  AODFAULT REG SAVE AREA.       Y02668
AOBSKSA  DS    F                   AOBASEKY REG SAVE AREA.       Y02668
CWASAVPT DS    F                   PTR TO SAVE AREA OF CVR'S     Y02668*
                                   CALLER - ALSO USED BY         Y02668*
                                   SUBSYSTEM AT TEXT EXIT.       Y02668
AOFDPCSV DS    CL8                 PROCEDURE NAME.               Y02668
AOSCHKYS DS    CL8                 LIST OF KEYS FOR AOKSRCHR.    Y02668
IWABPAM  DS    CL3                 BPAM ACCESS METHOD ADDRESS M3739O106
*                       SET AND USED BY IEFVEA FOR PROCESSING      O106
*                       IN-LINE PROCEDURES                         O106
*
AOKSRPRM DS    CL3                 AOKSR1 PARM LIST.             Y02668
AOKSRNBR EQU   AOKSRPRM            NUMBER OF PARAMS THIS KEYWORD.Y02668
AOKSRSCT EQU   AOKSRPRM+1          LENGTH OF PARAM OR SUBLIST CT.
AOKSRBY3 EQU   AOKSRPRM+2          LENGTH OF PARAM IF AOKSRCT IS Y02668*
                                   A SUBLIST COUNT.              Y02668
IWANLRC  DS    H                   NUMBER RECORDS (BLOCKED PROC)   AABA
CURLE    DS    H                        CURRENT LEVEL
LASLE    DS    H                        LAST LEVEL
AOSTRLTH DS    H                   LENGTH OF TEXT STRING.        Y02668
IWAWRNMS DS    CL1                 WARNING MESSAGE CODE.         Y02668
CWACHIDL DS    CL1                 CHECKID LENGTH.               Y02668
*
*  SWITCH BYTES.
*
IWAJMSGL DS    CL1                 MSGLEVEL VALUE.               Y02668
AOMSGLV0 EQU   X'00'               BIT SETTING FOR MSGLEVEL=1.   Y02668
AOMSGLV1 EQU   X'10'               BIT SETTING FOR MSGLEVEL=1.   Y02668
AOMSGLV2 EQU   X'20'               BIT SETTING FOR MSGLEVEL=2.   Y02668
*
AOSW2    DS    CL1                 SWITCH BYTE.
AOSWAWRT EQU   X'80'         SWA WRITE DONE FOR SYMBOLIC DICT  @ZA05366
AOPROCNM EQU   X'08'               PROCNAME POSITIONAL ON EXEC.  Y02668
AOSW3    DS    CL1                                               Y02668
AOBTCHSW EQU   X'01'               RETURN TO VHA FLAG.           Y02668
AOFDPCL  DS    CL1                 LENGTH OF PROCEDURE NAME.     Y02668
IWAEXTS  DS    CL1            SPECIAL CALLER EXITS                I171
IWASFIND EQU   2                        BIT-6 SPECIAL PROCLIB FINDI171
IWAFINDP DS    CL3                      ENTRY POINT FOR 'FIND' ISSI171
*                                       FOR SPECIAL PROCLIB ACCESSI171
OSW2     DS    CL1                 OPTION SWITCHES FROM PARM FIELD
CMAUTH   EQU   3                        BITS-6,7 COMMAND AUTHORIZATION
SWA      DS    CL1                 SWITCH A
JTOP     EQU   128                      BIT-0  JOB TO PROCESS
JHS      EQU   64                       BIT-1 JOB HAS A STEP
EOFR     EQU   2                        BIT-6 EOF RECEIVED
DLM      EQU   1                        BIT-7 DLM KWD SPECIFIED YM03459
SWB      DS    CL1                 SWITCH B
CXP      EQU   128                      BIT-0 CONTINUATION EXP BY SCAN
CXPN     EQU   64                       BIT-1 CONT EXP & NOT RECEIVED
CXPC     EQU   32                       BIT-2 CONT EXP & CANCELLED
CXPOP    EQU   16                       BIT-3 CONT EXP FOR
*                                       OPERAND FIELD          @ZA12458
FRCV     EQU   2                        BIT-6 1ST STMT RECEIVED
SWC      DS    CL1                 SWITCH C
IOERR    EQU   64                       BIT-1 I/O ERROR ON INPUT
NRCV     EQU   32                       BIT-2 RDR NULL RECEIVED
PEXP     EQU   16                       BIT-3 PROCEDURE EXEC STMT EXPEC
SWD      DS    CL1                 SWITCH D
FEXRCV   EQU   32                       BIT-2 1ST EXEC RCVD THIS JOB
SYMPRC   EQU   1                        BIT-7 FIRST ACCESS OF PROC AAAA
SWV      DS    CL1           SCAN SWITCHES     288               A24895
*                  THIS BYTE OF SWITCHES MOVED FROM SWA TO GIVE  A24895
*                            IT LIFE ACROSS CALLS OF IEFVFB.     A24895
OVKEYSWZ EQU   SWV           IF ON, THIS KEY OVERRIDDEN  187     A24895
OVKEYSW  EQU   128                                               A24895
PROCERRZ EQU   SWV           IF ON, ERROR THIS STATEMENT  187    A24895
PROCERR  EQU   64                                                A24895
VERBCSWZ EQU   SWV           187                                 A24895
VERBCSW  EQU   32                                                A24895
FBFLUSHZ EQU   SWV           SYMBOLIC PARM FLUSH INDICATOR       A24895
FBFLUSH  EQU   16                                                A24895
AMPSWZ   EQU   SWV           IF ON,TEXT DEFINES A SYMBOLIC PARM  A24895
AMPSW    EQU   8                                                 A24895
FBLITRLZ EQU   SWV    IF ON, TEXT IS LITERAL(ENCLOSED IN QUOTES) A24895
FBLITRL  EQU   4                                                 A24895
FPRNSWZ  EQU   SWV           IF ON, INDICATES LEFT PAREN         A24895
FPRNSW   EQU   2                                                 A24895
LPBYSWZ  EQU   SWV           IF ON, BYPASS LEFT PAREN CHECK      A24895
LPBYSW   EQU   1                                                 A24895
CLEARVZ  EQU   SWV           187                                 A24895
CLEARV   EQU   OVKEYSW+PROCERR+VERBCSW+FBFLUSH+AMPSW+FBLITRL+FPRNSW 895
*                                  PROC STATEMENT PARAM LIST
CRSW1    DS    CL1                CHECKPOINT RESTART SWITCHES      AACA
CPFLG    EQU   128  BIT 0         GET/FREE SYSCHK DD STMT CORE     AACA
CRRES1   EQU   16   BIT 3         RESERVED                         AACA
         DS    CL1                 RESERVED                      Y02668
SYMTTR   DS    F                   TTR OF FIRST SYMBUF
IWANELEN DS    CL1      LENGTH OF NEL,SET BY IEFVH1,USED BY
*                           IEFVH2,IEFVHN,ETC.
*
SWY      DS    CL1                 SCAN SWITCHES
SWZ      DS    CL1                 CONTROL AND SCAN JOINT SWITCHES
CMT      EQU   128                      COMMENT SWITCH
DDOV     EQU   64                       DD OVERRIDE SWITCH
ENDS     EQU   32                       END SCAN SWITCH
COLST    EQU   16                       COLUMN 72 SWITCH
JOBSW    EQU   8                        JOB SWITCH
EXECSW   EQU   4                        EXEC SWITCH
DDSW     EQU   2                        DD SWITCH
SNPSW    EQU   1                        STATEMENT SYSOUT SWITCH.
RCHAR1   DS    CL1                 RESERVED                     YM00373
CWALINK  DS    F                   PTR TO TEXT EXIT LINK AREA   YM00373
CWALINKL DS    F                   LTH OF LINK AREA             YM00373
CWAPSENM DS    CL8                 POST SCAN EXIT NAME          YM00373
CDAUTHWA DS    F                   COMD AUTH CONVERSION WK AREA.YM02718
SSNMWA   DS    F                   WORKAREA FOR SSNAME         @G29AN2E
EXSTMTNO DS    H                   EXEC PROC STATEMENT NUMBER      @H2A
         DS    H                   RESERVED                        @H2A
***********************************************************************
RBLOCK   DS    18F                 RESERVED                        @H2C
RFULLA   DS    F                   RESERVED                     YM02718
RFULLB   DS    F                   RESERVED                     YM02718
RFULLC   DS    F                   RESERVED                     YM02718
RFULLD   DS    F                   RESERVED                     YM02718
RFULLE   DS    F                   RESERVED                     YM02718
***********************************************************************
* THE FOLLOWING 132 BYTES OF STORAGE WERE ADDED FOR SUPPORT OF THE @H1A
* SCHEDULER JCL FACILITY                                           @H1A
***********************************************************************
CWASJEXP DS    AL4                 POINTER TO THE SJF EXTRACT      @H1A
*                                  PARAMETER LIST                  @H1A
SJFFLAG1 DS    CL1                 SJF FLAGS                       @H1A
JDJCL    EQU   X'80'               JDT-DEFINED JCL MAY APPEAR IN   @H1A
*                                  THIS JOB.                       @H1A
JDVBSW   EQU   X'40'               JDT-DEFINED VERB STATEMENT      @H1A
VERBSRCH EQU   X'20'               SEARCH ARGUMENT WAS VERB        @H1A
JDVTMSG  EQU   X'10'               JDVT_NOT_FOUND MESSAGE HAS BEEN @H1A
*                                  WRITTEN FOR THIS STATEMENT      @H1A
JDTDUPSW EQU   X'08'               DUPLICATE JDT KEYWORD SWITCH    @H1A
JDKWDSW  EQU   X'04'               CURRENT KEYWORD FIELD IS JDT-   @H1A
*                                  DEFINED                         @H1A
LASTJDSW EQU   X'02'               THE LAST TEXT RECORD WRITTEN    @H1A
*                                  WAS A JDT-DEFINED TEXT STRING   @H1A
DDSEQ    EQU   X'01'               DD SEQUENCE ERROR: A DD CARD    @H1A
*                                  WITH NO DDNAME FOLLOWS A NON-   @H1A
*                                  DD CARD                         @H1A
SJFFLAG2 DS    CL1                 SECOND BYTE OF SWITCHES         @H1A
MINORKWD EQU   X'80'               THE CURRENT KEYWORD FOLLOWS     @H1A
*                                  AN EQUAL SIGN                   @H1A
STEPRCVD EQU   X'40'               STEP(EXEC) RECEIVED FLAG        @H2A
CNTLSW   EQU   X'20'               CNTL/ENDCNTL FLAG=1 INDICATES   @H2A
*                                   CNTL GROUP IN PROCESS          @H2A
JDTKWDLN DS    XL1                 LENGTH OF KEYWORD               @H1A
VERBLGTH DS    XL1                 LENGTH OF VERB                  @H1A
VERBPTR  DS    AL4                 POINTER TO VERB                 @H1A
PVERB    DS    CL8                 VERB IN PROC STATEMENT          @H1A
RVERB    DS    CL8                 VERB IN READER STATEMENT        @H1A
TEMPBSYP DS    AL4                 TEMPORARY BEGIN_SYMBOL POINTER  @H1A
TEMPESYP DS    AL4                 TEMPORARY END_SYMBOL POINTER    @H1A
WADDRBA  DS    CL8                 RBA OF LATEST DD TEXT STRING    @H1A
*                                  WRITTEN                         @H1A
SJFSAVEP DS    AL4                 POINTER TO SAVE AREA FOR CALLS  @H1A
*                                  TO SJF                          @H1A
SJFSAVER DS    18F                 SAVE AREA FOR CALLS TO SJF      @H1A
NEXTKEY  DS    XL1                 TEMPORARY STORAGE USED DURING   @H1A
*                                  COMPATIBILITY PROCESSING IN VFA @H1A
PREVRBLN DS    XL1                 LENGTH OF PREVIOUS VERB         @H1A
PREVCODE DS    XL1                 CODE OF VERB FROM PREVIOUS CARD @R1A
SJFRES2  DS    CL1                 RESERVED                        @H1A
PREVVERB DS    CL8                 VERB FROM PREVIOUS STATEMENT    @H1A
*          ********************************************************
*          *                                                      *
*          *             END OF CONVERTER WORK AREA.              *
*          *                                                      *
*          ********************************************************
*
CVRWAEND DS    0C                                               YM00373
CVRWALTH EQU   CVRWAEND-CVRWA      LTH OF CVR WORK AREA.         Y02668
WALTH    EQU   CVRWAEND-COMWA      LTH OF CVR+COMMON WORK AREAS. Y02668
         MEND                */
   %CNVWAPLS:  ;
* DCL 1 CVRWA BASED(ADDR(COMWA)+LENGTH(COMWA)) BDY(WORD),   /*
*
*              POINTERS, WORK AND DATA AREAS
*                                                              Y02668*/
*   2 PDCBP    PTR(31),      /* PROCLIB DCB OR NOTED TTR       Y02668*/
*   2 IWAINTS3 PTR(31),      /* PTR TO EXIT LIST ACCT ENTRY    Y02668*/
*   2 IWAINTS4,              /*                                Y02668*/
*     3 CWABPROC PTR(31),    /* PTR TO BLOCKED PROCLIB BUFFER  Y02668*/
*   2 IWAINTS5 PTR(31),      /* PTR TO JOB MNGMT RECORD        Y02668*/
*   2 CWATXTEX PTR(31),      /* PTR TO TEXT EXIT RTNE ADDRESS  Y02668*/
*   2 RSTMT,                 /*                                Y02668*/
*     3 RSTMTPTR PTR(31),    /* PTR TO RDR STMT                Y02668*/
*     3 VERB,                /* VERB #                         Y02668*/
*       4 SSE      BIT(1),   /* DD STMT SEQUENCE ERROR         Y02668*/
*       4 CRE      BIT(1),   /* MISPLACED SYSCHECK DD STMT     Y02668*/
*       4 *        BIT(1),   /* RESERVED                         @H1A*/
*       4 JDVBCODE BIT(1),   /* JDVBCODE=16                      @H1A*/
*       4 *        BIT(4),   /* NULL=0 JOB=1 EXEC=2 DD=4 PROC=8  Y02668
*                                                                @H1C*/
*     3 NAMEL    FIXED(8),   /* LENGTH OF NAME                 Y02668*/
*     3 LISTPTR  FIXED(8),   /* RELATIVE LIST POINTER          Y02668*/
*     3 VERBLEN CHAR(1),     /* LENGTH OF VERB                   @H1C*/
*   2 PSTMT,                 /*                                Y02668*/
*     3 STMTPTRP PTR(31),    /* PTR TO RDR STMT                Y02668*/
*     3 VERBP,               /* VERB #                         Y02668*/
*       4 SSEP     BIT(1),   /* DD STMT SEQUENCE ERROR         Y02668*/
*       4 CREP     BIT(1),   /* MISPLACED SYSCHECK DD STMT     Y02668*/
*       4 *        BIT(1),   /* RESERVED                         @H1A*/
*       4 JDVBCODP BIT(1),   /* JDVBCODE=16                      @H1A*/
*       4 *        BIT(4),   /* NULL=0 JOB=1 EXEC=2 DD=4 PROC=8  Y02668
*                                                                @H1C*/
*     3 NAMELP   FIXED(8),   /* LENGTH OF NAME                 Y02668*/
*     3 LISTPTRP FIXED(8),   /* RELATIVE LIST POINTER          Y02668*/
*     3 VERBLENP CHAR(1),    /* LENGTH OF VERB                   @H1A*/
*
*/*  PROCLIB MERGE CONTROL DATA                                Y02668*/
*
*   2 PDNM     CHAR(8),      /* PROC DD NAME                   Y02668*/
*   2 PSNM     CHAR(8),      /* PROC STEP NAME                 Y02668*/
*   2 RDNM     CHAR(8),      /* RDR DD NAME                    Y02668*/
*   2 RSNM     CHAR(8),      /* RDR STEP NAME                  Y02668*/
*   2 PPSN     CHAR(8),      /* PREVIOUS PROC STEP NAME        Y02668*/
*   2 IWAPARM  PTR(31),      /* ADDRESS OF PARAMETER LIST USED Y02668*/
*                            /* FOR PROCESSING IN-LINE PROCS   Y02668*/
*   2 DREFB    CHAR(176) BDY(WORD), /* SYMBOLIC PARM TABLE     Y02668*/
*   2 IWAJOBS5 PTR(31),      /* CHKP/REST - PTR TO SYSCHK DD   Y02668*/
*   2 IWAWKBF  PTR(31),      /* PTR TO VHCB WORK AREA          Y02668*/
*   2 IWASTAPL PTR(31),      /* PTR TO STAE PARAMETER LIST     Y02668*/
*   2 CWAJMRPT PTR(31),      /* PTR TO JMR                     Y02668*/
*   2 IWANELJC PTR(31),      /* PTR TO NEL JCL FIELD. PST/SCAN Y02668*/
*   2 TBEGP    PTR(31),      /* TEXT BEGIN POINTER             Y02668*/
*   2 TKEYP    PTR(31),      /* TEXT KEY POINTER               Y02668*/
*   2 TNUMP    PTR(31),      /* TEXT NUMBER POINTER            Y02668*/
*   2 TLENP    PTR(31),      /* TEXT LENGTH POINTER            Y02668*/
*   2 TENDP    PTR(31),      /* TEXT END POINTER               Y02668*/
*   2 AODSPCSA PTR(31),      /* SAVE RETURN REGISTER IN VFA    Y02668*/
*   2 AOFDTMP1 PTR(31),      /* ADDR OF SPECIAL FIND ROUTINE   Y02668*/
*   2 AOKSCHSA,              /* AOKSRCHR REG SAVE AREA.        Y02668*/
*     3 AOGACSA  CHAR(32),   /* GET AND CLEAR RTNE SAVE AREA   Y02668*/
*   2 AOKSR1SA CHAR(8),      /* AOKSR1 REG SAVE AREA           Y02668*/
*   2 AOHEBSA  PTR(31),      /* VHEB RETURN REG SAVE AREA      Y02668*/
*   2 AODFLTSA CHAR(28),     /* AODFAULT REG SAVE AREA         Y02668*/
*   2 AOBSKSA  PTR(31),      /* AOBASEKY REG SAVE AREA         Y02668*/
*   2 CWASAVPT PTR(31),      /* PTR TO SAVE AREA OF CVR'S      Y02668*/
*                            /* CALLER - ALSO USED BY SUBSYSTEMY02668*/
*                            /* AT TEXT EXIT                   Y02668*/
*   2 AOFDPCSV CHAR(8),      /* PROCEDURE NAME                 Y02668*/
*   2 AOSCHKYS CHAR(8),      /* LIST OF KEYS FOR AOKSRCHR      Y02668*/
*   2 IWABPAM  CHAR(3),      /* BPAM ACCESS METHOD ADDRESS SET Y02668*/
*                            /* AND USED BY IEFVEA FOR         Y02668*/
*                            /* PROCESSING IN-LINE PROCEDURES  Y02668*/
*
*   2 AOKSRPRM,              /* AOKSR1 PARM LIST               Y02668*/
*     3 AOKSRNBR CHAR(1),    /* NUMBER OF PARMS IN KEYWORD     Y02668*/
*     3 AOKSRSCT CHAR(1),    /* LENGTH OF PARM OR SUBLIST CNT  Y02668*/
*     3 AOKSRBY3 CHAR(1),    /* LENGTH OF PARM IF AOKSRCT IS A Y02668*/
*                            /* SUBLIST COUNT                  Y02668*/
*   2 IWANLRC  FIXED(15),    /* NUMBER OF RECORDS (BLKED PROC) Y02668*/
*   2 CURLE    FIXED(15),    /* CURRENT LEVEL                  Y02668*/
*   2 LASLE    FIXED(15),    /* LAST LEVEL                     Y02668*/
*   2 AOSTRLTH FIXED(15),    /* LENGTH OF TEXT STRING          Y02668*/
*   2 IWAWRNMS CHAR(1),      /* WARNING MESSAGE CODE           Y02668*/
*   2 CWACHIDL CHAR(1),      /* CHECKID LENGTH                 Y02668*/
*
*/*  SWITCH BYTES                                              Y02668*/
*
*   2 IWAJMSGL CHAR(1),      /* MSGLEVEL VALUE                 Y02668*/
*                            /* '00'X FOR MSGLEVEL=1           Y02668*/
*                            /* '10'X FOR MSGLEVEL=1           Y02668*/
*                            /* '20'X FOR MSGLEVEL=2           Y02668*/
*   2 AOSW2,                 /* SWITCH BYTE                    Y02668*/
*     3 AOSWAWRT BIT(1),     /* SYMBOLIC DICTIONARY WRITTEN  @ZA05366*/
*     3 *        BIT(3),     /* UNUSED                       @ZA05366*/
*     3 AOPROCNM BIT(1),     /* PROCNAME POSITIONAL ON EXEC    Y02668*/
*     3 *        BIT(3),     /* UNUSED                         Y02668*/
*   2 AOSW3,                 /* SWITCH BYTE                    Y02668*/
*     3 *        BIT(7),     /* UNUSED                         Y02668*/
*     3 AOBTCHSW BIT(1),     /* RETURN TO VHA FLAG             Y02668*/
*   2 AOFDPCL  CHAR(1),      /* LENGTH OF PROCEEDURE NAME      Y02668*/
*   2 IWAEXTS,               /* SPECIAL CALLER EXITS           Y02668*/
*     3 *        BIT(6),     /* UNUSED                         Y02668*/
*     3 IWASFIND BIT(1),     /* BIT-6 SPECIAL PROCLIB FIND     Y02668*/
*     3 *        BIT(1),     /* UNUSED                         Y02668*/
*   2 IWAFINDP CHAR(3),      /* ENTRY POINT FOR 'FIND'FOR      Y02668*/
*                            /* SPECIAL PROCLIB ACCESS         Y02668*/
*   2 OSW2     CHAR(1),      /* OPTION SWITCHES FROM PARM FIELDY02668*/
*                            /* BITS-6,7 COMMAND AUTHORIZATION Y02668*/
*   2 SWA,                   /* SWITCH A                       Y02668*/
*     3 JTOP     BIT(1),     /* JOB TO PROCESS                 Y02668*/
*     3 JHS      BIT(1),     /* JOB HAS A STEP                 Y02668*/
*     3 *        BIT(4),     /* UNUSED                         Y02668*/
*     3 EOFR     BIT(1),     /* EOF RECIEVED                   Y02668*/
*     3 DLM      BIT(1),     /* DLM KEYWORD SPECIFIED         YM03459*/
*   2 SWB,                   /* SWITCH B                       Y02668*/
*     3 CXP      BIT(1),     /* CONTINUATION EXPECTED BY SCAN  Y02668*/
*     3 CXPN     BIT(1),     /* CONT EXP AND NOT RECEIVED      Y02668*/
*     3 CXPC     BIT(1),     /* CONT EXP AND CANCELLED         Y02668*/
*     3 CXPOP    BIT(1),     /* BIT-3 CONT EXP FOR
*                               OPERAND FIELD                    @H1A*/
*     3 *        BIT(2),     /* UNUSED                         Y02668*/
*     3 FRCV     BIT(1),     /* FIRST STATEMENT RECEIVED       Y02668*/
*     3 *        BIT(1),     /* UNUSED                         Y02668*/
*   2 SWC,                   /* SWITCH C                       Y02668*/
*     3 *        BIT(1),     /* UNUSED                         Y02668*/
*     3 IOERR    BIT(1),     /* I/O ERROR ON INPUT             Y02668*/
*     3 NRCV     BIT(1),     /* RDR NULL RECEIVED              Y02668*/
*     3 PEXP     BIT(1),     /* PROC EXEC STMT EXPECTED        Y02668*/
*     3 *        BIT(4),     /* UNUSED                         Y02668*/
*   2 SWD,                   /* SWITCH D                       Y02668*/
*     3 *        BIT(2),     /* UNUSED                         Y02668*/
*     3 FEXRCV   BIT(1),     /* FIRST EXEC RECEIVED            Y02668*/
*     3 *        BIT(4),     /* UNUSED                         Y02668*/
*     3 SYMPRC   BIT(1),     /* FIRST ACCESS OF PROC           Y02668*/
*   2 SWV,                   /* SCAN SWITCHES                  Y02668*/
*     3 OVKEYSW  BIT(1),     /* THIS KEY OVERRIDDEN            Y02668*/
*     3 PROCERR  BIT(1),     /* ERROR THIS STATEMENT           Y02668*/
*     3 VERBCSW  BIT(1),     /*                                Y02668*/
*     3 FBFLUSH  BIT(1),     /* SYMBOLIC PARM FLUSH INDICATOR  Y02668*/
*     3 AMPSW    BIT(1),     /* TEXT DEFINES A SYMBOLIC PARM   Y02668*/
*     3 FBLITRL  BIT(1),     /* TEXT IS LITERAL                Y02668*/
*     3 FPRNSW   BIT(1),     /* INDICATES LEFT PAREN           Y02668*/
*     3 LPBYSW   BIT(1),     /* BYPASS LEFT PAREN CHECK        Y02668*/
*   2 CRSW1,                 /* CHECKPOINT RESTART SWITCHES    Y02668*/
*     3 CPFLG    BIT(1),     /* GET/FREE SYSCHK DD STMT CORE   Y02668*/
*     3 *        BIT(2),     /* UNUSED                         Y02668*/
*     3 CRRES1   BIT(1),     /* RESERVED                       Y02668*/
*     3 *        BIT(4),     /* UNUSED                         Y02668*/
*   2 *        CHAR(1),      /* RESERVED                       Y02668*/
*   2 SYMTTR   PTR(31),      /* TTR OF FIRST SYMBUF            Y02668*/
*   2 IWANELEN FIXED(8),     /* LENGTH OF NEL                  Y02668*/
*   2 SWY      CHAR(1),      /* SCAN SWITCHES                  Y02668*/
*   2 SWZ,                   /* CONTROL AND SCAN SWITCHES      Y02668*/
*     3 CMT      BIT(1),     /* COMMENT SWITCH                 Y02668*/
*     3 DDOV     BIT(1),     /* DD OVERIDE SWITCH              Y02668*/
*     3 ENDS     BIT(1),     /* END SCAN SWITCH                Y02668*/
*     3 COLST    BIT(1),     /* COLUMN 72 SWITCH               Y02668*/
*     3 JOBSW    BIT(1),     /* JOB SWITCH                     Y02668*/
*     3 EXECSW   BIT(1),     /* EXEC SWITCH                    Y02668*/
*     3 DDSW     BIT(1),     /* DD SWITCH                      Y02668*/
*     3 SNPSW    BIT(1),     /* STATEMENT SYSOUT SWITCH        Y02668*/
*   2 RCHAR1   CHAR(1),      /* RESERVED                      YM00373*/
*   2 CWALINK  FIXED(31),    /* PTR TO TEXT EXIT LINK AREA    YM00373*/
*   2 CWALINKL FIXED(31),    /* LTH OF LINK AREA              YM00373*/
*   2 CWAPSENM CHAR(8),      /* POST SCAN EXIT NAME           YM02718*/
*   2 CDAUTHWA FIXED(32),    /* COMD AUTH CONVERSION WRK AREA YM02718*/
*   2 SSNMWA   CHAR(4),      /* WORKAREA FOR SSNAME          @G29AN2E*/
*   2 EXSTMTNO FIXED(15),    /* EXEC PROC STATEMENT NUMBER       @H2A*/
*   2 *        FIXED(15),    /* RESERVED                         @H2A*/
*/********************************************************************/
*   2 RBLOCK   CHAR(72),     /* RESERVED                         @H2C*/
*   2 RFULLA   FIXED(32),    /* RESERVED                      YM02718*/
*   2 RFULLB   FIXED(32),    /* RESERVED                      YM02718*/
*   2 RFULLC   FIXED(32),    /* RESERVED                      YM02718*/
*   2 RFULLD   FIXED(32),    /* RESERVED                      YM02718*/
*   2 RFULLE   FIXED(32),    /* RESERVED                      YM02718*/
*/********************************************************************/
*/* THE FOLLOWING 132 BYTES OF STORAGE WERE ADDED FOR SUPPORT OF @H1A*/
*/* THE SCHEDULER JCL FACILITY.                                  @H1A*/
*/********************************************************************/
*   2 CWASJEXP PTR(31),      /* POINTER TO THE SJF LOCATE
*                               KEYWORD PARAMETER LIST           @H1A*/
*   2 SJFFLAG1 BIT(8),       /* SJF FLAGS                        @H1A*/
*    3 JDJCL BIT(1),         /* JDT-DEFINED JCL MAY APPEAR IN
*                               THIS JOB.                        @H1A*/
*    3 JDVBSW BIT(1),        /* JDT-DEFINED VERB THIS STATEMENT  @H1A*/
*    3 VERBSRCH  BIT(1),     /* SEARCH ARGUMENT WAS THE VERB     @H1A*/
*    3 JDVTMSG  BIT(1),      /* JDVT_NOT_FOUND MESSAGE HAS BEEN
*                               WRITTEN FOR THIS STATEMENT       @H1A*/
*    3 JDTDUPSW BIT(1),      /* DUPLICATE JDT KEYWORD SWITCH     @H1A*/
*    3 JDKWDSW  BIT(1),      /* CURRENT KEYWORD FIELD IS JDT-DEF.@H1A*/
*    3 LASTJDSW BIT(1),      /* THE LAST TEXT STRING WRITTEN WAS
*                               A JDT-DEFINED VERB TEXT STRING   @H1A*/
*    3 DDSEQ   BIT(1),       /* DD SEQUENCE ERROR: DD CARD WITH
*                               NO NAME FOLLOWS A NON DD CARD    @H1A*/
*   2 SJFFLAG2 BIT(8),       /* SECOND BYTE OF SWITCHES          @H1A*/
*    3 MINORKWD BIT(1),      /* THE CURRENT KEYWORD FOLLOWS AN EQUAL
*                                                          SIGN  @H1A*/
*    3 STEPRCVD BIT(1),      /* STEP(EXEC) RECEIVED FLAG         @H2A*/
*    3 CNTLSW   BIT(1),      /* CNTL/ENDCNTL FLAG=1 INDICATES
*                               A CNTL GROUP IN PROCESS          @H2A*/
*    3 *        BIT(5),      /* RESERVED                         @H2C*/
*   2 JDTKWDLN FIXED(8),     /* LENGTH OF KEYWORD                @H1A*/
*   2 VERBLGTH FIXED(8),     /* LENGTH OF VERB                   @H1A*/
*   2 VERBPTR  PTR(31),      /* POINTER TO VERB                  @H1A*/
*   2 PVERB    CHAR(8),      /* VERB IN PROC STATEMENT           @H1A*/
*   2 RVERB    CHAR(8),      /* VERB IN READER STATEMENT         @H1A*/
*   2 TEMPBSYP PTR(31),      /* TEMPORARY BEGIN_SYMBOL POINTER   @H1A*/
*   2 TEMPESYP PTR(31),      /* TEMPORARY END_SYMBOL POINTER     @H1A*/
*   2 WADDRBA  CHAR(8),      /* RBA OF LATEST DD TEXT STRING WRITTEN
*                                                                @H1A*/
*   2 SJFSAVEP PTR(31),      /* POINTER TO SAVE AREA FOR CALLS TO SJF
*                                                                @H1A*/
*   2 SJFSAVER CHAR(72),     /* SAVE AREA FOR CALLS TO SJF       @H1A*/
*   2 NEXTKEY FIXED(8),      /* TEMPORARY STORAGE USED DURING
*                               COMPATIBILITY PROCESSING IN VFA  @H1A*/
*   2 PREVRBLN FIXED(8),     /* LENGTH OF PREVIOUS VERB          @H1A*/
*   2 PREVCODE FIXED(8),     /* CODE OF VERB FROM PREVIOUS CARD  @R1A*/
*   2 SJFRES2 CHAR(1),       /* RESERVED                         @H1A*/
*   2 PREVVERB CHAR(8);      /* VERB FROM PREVIOUS STATEMENT     @H1A*/
*/*                                                                  */
*/*************************************************************Y02668*/
*/*                                                            Y02668*/
*/*  END OF CONVERTER WORK AREA -                              Y02668*/
*/*  TO GET LENGTH OF CONVERTER WORK AREA USE THE LENGTH       Y02668*/
*/*  FUNCTION OF THE NAME  CVRWA                               Y02668*/
*/*                                                            Y02668*/
*/*************************************************************Y02668*/
./ ADD NAME=IEFENFCT
*  %GOTO ENFCTPRO;            /*
         MACRO
         IEFENFCT  &TYPE=DSECT
         LCLC  &NAM
*
.*/  %ENFCTPRO: ;
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME = IEFENFCT                                           */
*/*                                                                  */
*/* DESCRIPTIVE NAME = EVENT NOTIFICATION FACILITY CONTROL TABLE     */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1980, 1981           @D1C*/
*/*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM                 */
*/*             NUMBER G120-2083.                                    */
*/*                                                                  */
*/* STATUS = OS/VS2  JBB1326                                     @D1C*/
*/*                                                                  */
*/* MODULE TYPE = MACRO                                              */
*/*                                                                  */
*/* INVOCATION =                                                     */
*/*              BAL - IEFENFCT TYPE = DSECT                         */
*/*                                    DC                            */
*/*                                                                  */
*/*                    TYPE = DSECT IS THE DEFAULT                   */
*/*                    ADDRESSABILITY FROM CVT POINTER CVTENFCT      */
*/*                                                                  */
*/*              PL/S - %INCLUDE SYSLIB(IEFENFCT)                    */
*/*                                                                  */
*/*                     ENFCT IS BASED ON CVTENFCT                   */
*/*                                                                  */
*/* CHANGE ACTIVITY = G81FP2M,G38XP2Q                        @G38XP2Q*/
*/*  $D1 = DCR#121 JBB1326 800604 PD42 : CHANGED MAXIMUM NUMBER OF   */
*/*                                      EVENTS TO 12                */
*/* C - CHANGED MAXIMUM NUMBER OF EVENTS TO 5                @G38XP2Q*/
*/* A - 000000-999999                                        @G81FP2M*/
*/********************************************************************/
*  %GOTO ENFCTDCL;                                                   /*
&NAM     SETC  'ENFCT'             DEFAULT
         AIF   ('&TYPE' EQ 'DC').DC
.*                                 'DSECT' IS DEFAULT AND NOT CHECKED
&NAM     DSECT
&NAM     SETC  ''
.DC      ANOP
&NAM     DS    0F
ENFCTID  DC    CL4'ENFC'           ACRONYM: ENFC
ENFCFLGS DC    0H'0'               FLAG BYTES
ENFCFLG1 DC    X'00'               FLAG BYTE 1
ENFCAVAL EQU   X'80'               ENF INITIALIZED
ENFCOFF  EQU   X'40'               ENF NOT AVAILABLE
ENFCASYN EQU   X'20'               ASYNCHRONOUS PROC. NOT AVAILABLE
ENFCFRS4 EQU   X'10'               RESERVED
ENFCFRS5 EQU   X'08'               RESERVED
ENFCFRS6 EQU   X'04'               RESERVED
ENFCFRS7 EQU   X'02'               RESERVED
ENFCFRS8 EQU   X'01'               RESERVED
ENFCFLG2 DC    X'00'               RESERVED
ENFCRSV1 DC    H'0'                RESERVED
ENFCPMOD DC    A(0)                ADDRESS OF IEFENFNM
*                                  (USED FOR ENF INTERNAL PROCESSING)
ENFCFMOD DC    V(IEFENFFX)         ADDRESS OF ENF SERVICE ROUTER
*                                  (IEFENFFX)
ENFCASCB DC    V(IEAMASCB)         ADDRESS OF MASTER SCHEDULER ASCB
ENFCVT   DC    A(0)                ADDRESS OF ENF VECTOR TABLE
ENFCDS   DC    A(0)                ADDRESS OF ENF PROCESS TABLE
ENFCECB  DC    F'0'                EVENT NOTIFICATION FACILITY ECB
ENFCMAX  DC    F'12'               MAXIMUM NUMBER OF EVENTS        @D1C
ENFCRSV2 DC    F'0'                RESERVED
ENFCRSV3 DC    F'0'                RESERVED
         MEND   ,                                                    */
   %ENFCTDCL:  ;
   DECLARE
   1 ENFCT    BASED(CVTENFCT),
    2 ENFCTID  CHAR(4),       /* ACRONYM: ENFC                       */
    2 ENFCFLGS FIXED(15),     /* FLAG BYTES                          */
      3 ENFCFLG1 BIT(8),      /* FLAG BYTE 1                         */
        4 ENFCAVAL BIT(1),    /* ENF INITIALIZED                     */
        4 ENFCOFF  BIT(1),    /* ENF NOT AVAILABLE                   */
        4 ENFCASYN BIT(1),    /* ASYNCHRONOUS PROC. NOT AVAILABLE    */
        4 *        BIT(5),    /* RESERVED                            */
      3 ENFCFLG2 BIT(8),      /* RESERVED                            */
    2 ENFCRSV1 FIXED(15),     /* RESERVED                            */
    2 ENFCPMOD PTR(31),       /* ADDRESS OF IEFENFNM
                                 (USED FOR ENF INTERNAL PROCESSING)  */
    2 ENFCFMOD PTR(31),       /* ADDRESS OF ENF SERVICE ROUTER
                                 (IEFENFFX)                          */
    2 ENFCASCB PTR(31),       /* ADDRESS OF MASTER SCHEDULER ASCB    */
    2 ENFCVT   PTR(31),       /* ADDRESS OF ENF VECTOR TABLE         */
    2 ENFCDS   PTR(31),       /* ADDRESS OF ENF PROCESS TABLE        */
    2 ENFCECB  CHAR(4),       /* EVENT NOTIFICATION FACILITY ECB     */
    2 ENFCMAX  FIXED(31),     /* MAXIMUM NUMBER OF EVENTS            */
    2 ENFCRSV2 FIXED(31),     /* RESERVED                            */
    2 ENFCRSV3 FIXED(31);     /* RESERVED                            */
 /*                                                                  */
 %IF NMLABEL^='YES'  %THEN %GOTO SKIPNM;
   DECLARE IEFENFNM ENTRY OPTIONS(VLIST) BASED(ENFCPMOD) VALUERANGE(*)
      ;     /* TO CALL THE ENF PAGEABLE MODULE, ISSUE CALL IEFENFNM  */
 %SKIPNM: IF FXLABEL='NO'  %THEN %GOTO SKIPFX;
   DECLARE IEFENFFX ENTRY OPTIONS(VLIST) BASED(ENFCFMOD) VALUERANGE(*)
      ;     /* TO CALL THE ENF FIXED MODULE, ISSUE CALL IEFENFFX     */
 %SKIPFX:;
./ ADD NAME=IEFENFPM
*  %GOTO ENFPMPRO;               /*
         MACRO
         IEFENFPM &DSECT=YES
.*/  %ENFPMPRO: ;
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME = IEFENFPM                                           */
*/*                                                                  */
*/* DESCRIPTIVE NAME = EVENT NOTIFICATION FACILITY PARAMETER LIST    */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1980,1981            @D1C*/
*/*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM                 */
*/*             NUMBER G120-2083.                                    */
*/*                                                                  */
*/* STATUS = OS/VS2  JBB1326                                     @D1C*/
*/*                                                                  */
*/* MODULE TYPE = MACRO                                              */
*/*                                                                  */
*/* INVOCATION =                                                     */
*/*              BAL - IEFENFPM                                      */
*/*                                                                  */
*/*                    MAPPING ONLY UNLESS 'DSECT=NO' SPECIFIED      */
*/*                                                                  */
*/*              PL/S - %DCL ENFPDEF CHAR                            */
*/*                     %ENFPDEF = 'VALUE'                           */
*/*                        VALUE = BDY(WORD) OR BASED                */
*/*                     %INCLUDE SYSLIB(IEFENFPM)                    */
*/*                                                                  */
*/* CHANGE ACTIVITY = G81FP2M,G38XP2Q                        @G38XP2Q*/
*/*  $D2 = DCR#121 JBB1326  800604  PD42 : ADDED EVENT CODE 12 FOR   */
*/*                                        DEVICE PENDING OFFLINE    */
*/*  $D1 = DCR#1   JBB1326  800604  PD42 : ENFREQ MACRO AND FREE     */
*/*                                        SIGNAL PARAMETER LIST     */
*/*                                                                  */
*/* A - ENFPFKEY,ENFPFSPL,ENFPFLEN ADDED                         @D1A*/
*/* A - ADDED EVENT CODE 5, COMM TASK AND TOD INIT COMPLETE  @G38XP2Q*/
*/* A - 000000-999999                                        @G81FP2M*/
*/********************************************************************/
*  %GOTO ENFPMDCL;                                                   /*
         AIF   ('&DSECT' EQ 'NO').NODSECT
         DSECT
.NODSECT ANOP
ENFPM    DS    0F
ENFPLEN  DS    H                   LENGTH OF ENF PARAMETER LIST
ENFPACT  DS    0H                  REQUESTED ENF ACTION
ENFPACT1 DS    CL1                 RESERVED
ENFPACT2 DS    CL1                 DEFINITION BYTE
ENFPSIG  EQU   X'01'               SIGNAL AN EVENT
ENFPLIS  EQU   X'02'               LISTEN FOR AN EVENT
ENFPDEL  EQU   X'03'               DELETE A LISTENER
ENFPCODE DS    XL4                 EVENT CODE (RIGHT JUSTIFIED)
ENFPC001 EQU   1                   VARY DEVICE ONLINE
*                                  (NON-CONSOLE DEVICE)
ENFPC002 EQU   2                   VARY DEVICE OFFLINE
*                                  (NON-CONSOLE DEVICE)
ENFPC003 EQU   3                   VOLUME UNLOAD
ENFPC004 EQU   4                   FREE SQA
ENFPC005 EQU   5                   COMM TASK AND TOD INIT      @G38XP2Q
*                                  COMPLETE                    @G38XP2Q
ENFPC012 EQU   12                  DEVICE PENDING OFFLINE          @D2A
ENFPFLG  DS    XL1                 FLAG FIELD
ENFPASN  EQU   X'80'               ASYNCHRONOUS REQUEST
ENFPFREE EQU   X'08'               FREE SIGNAL PARAMETER LIST      @D1C
ENFPQMSK DS    XL1                 MASK FOR COMPARING QUALIFIERS
ENFPQMS1 EQU   X'08'               COMPARE CHARACTER 1
ENFPQMS2 EQU   X'04'               COMPARE CHARACTER 2
ENFPQMS3 EQU   X'02'               COMPARE CHARACTER 3
ENFPQMS4 EQU   X'01'               COMPARE CHARACTER 4
ENFPFATT DS    0H                  FREEMAIN ATTRIBUTES             @D1C
ENFPFKEY DS    XL1                 KEY FOR FREEMAIN AREA           @D1A
ENFPFSPL DS    XL1                 SUBPOOL FOR FREEMAIN AREA       @D1A
ENFPQUAL DS    XL4                 QUALIFIER
ENFPEADR DS    F                   LISTEN: LISTENER'S EXIT ROUTINE ADDR
*                                  SIGNAL: SIGNALER'S EXIT ROUTINE ADDR
ENFPSPRM DS    F                   ADDRESS OF SIGNALER'S PARAMETERS
ENFPTOK  DS    F                   LISTEN: TOKEN OF LISTENER'S ELEMENT
*                                  SIGNAL: ADDRESS OF ORIGINAL EPL
ENFPFLEN DS    F                   LENGTH OF AREA TO BE FREED      @D1A
ENFPLLEN EQU   *-ENFPM             ASSEMBLER LENGTH OF PARAMETER LIST
         MEND   ,                                                    */
   %ENFPMDCL:  ;
 @SPACE (3);
 /* ENF ACTION TYPES (ENFPACT)                                       */
   DECLARE ENFPSIG FIXED(8) CONSTANT(1);    /* SIGNAL AN EVENT       */
   DECLARE ENFPLIS FIXED(8) CONSTANT(2);    /* LISTEN FOR AN EVENT   */
   DECLARE ENFPDEL FIXED(8) CONSTANT(3);    /* DELETE A LISTENER     */
 @SPACE (3);
 /* ENF EVENT CODES  (ENFPCODE)                                      */
   DECLARE ENFPC001 FIXED(31) CONSTANT(1);  /* VARY DEVICE ONLINE
                                              (NON-CONSOLE DEVICE)   */
   DECLARE ENFPC002 FIXED(31) CONSTANT(2);  /* VARY DEVICE OFFLINE
                                              (NON-CONSOLE DEVICE)   */
   DECLARE ENFPC003 FIXED(31) CONSTANT(3);  /* VOLUME UNLOAD         */
   DECLARE ENFPC004 FIXED(31) CONSTANT(4);  /* FREE SQA              */
   DECLARE ENFPC005 FIXED(31) CONSTANT(5);  /* COMM TASK AND TOD INIT
                                               COMPLETE      @G38XP2Q*/
   DECLARE ENFPC012 FIXED(31) CONSTANT(12); /* DEVICE PENDING OFFLINE
                                                                 @D2A*/
 @SPACE (3);
   DECLARE
   1 ENFPM  ENFPDEF,
     2 ENFPLEN  FIXED(15),       /* LENGTH OF ENF PARAMETER LIST     */
     2 ENFPACT  FIXED(15),       /* REQUESTED ENF ACTION             */
       3 ENFPACT1 FIXED(8),      /* RESERVED                         */
       3 ENFPACT2 FIXED(8),      /* DEFINITION BYTE                  */
     2 ENFPCODE CHAR(4),         /* HEXADECIMAL EVENT CODE
                                    (RIGHT JUSTIFIED)                */
     2 ENFPFLG  BIT(8),          /* FLAG FIELD                       */
       3 ENFPASN  BIT(1),        /* ASYNCHRONOUS REQUEST             */
       3 *        BIT(3),        /* RESERVED                     @D1C*/
       3 ENFPFREE BIT(1),        /* FREE SIGNALLER PARM LIST     @D1A*/
       3 *        BIT(3),        /* RESERVED                     @D1A*/
     2 ENFPQMSK BIT(8),          /* MASK FOR COMPARING QUALIFIERS    */
       3 *        BIT(4),        /* RESERVED                         */
       3 ENFPQMS1 BIT(1),        /* COMPARE CHARACTER 1              */
       3 ENFPQMS2 BIT(1),        /* COMPARE CHARACTER 2              */
       3 ENFPQMS3 BIT(1),        /* COMPARE CHARACTER 3              */
       3 ENFPQMS4 BIT(1),        /* COMPARE CHARACTER 4              */
     2 ENFPFATT FIXED(16),       /* FREEMAIN ATRRIBUTES          @D1C*/
       3 ENFPFKEY FIXED(8),      /* KEY OF AREA TO BE FREED      @D1A*/
       3 ENFPFSPL FIXED(8),      /* SUBPOOL OF AREA              @D1A*/
     2 ENFPQUAL CHAR(4),         /* QUALIFIER                        */
     2 ENFPEADR PTR(31),              /* LISTEN: LISTENER'S EXIT
                                         ROUTINE ADDRESS.            */
                                      /* SIGNAL: SIGNALER'S EXIT
                                         ROUTINE ADDRESS.            */
     2 ENFPSPRM PTR(31),         /* ADDRESS OF SIGNALER'S PARAMETERS */
     2 ENFPTOK  CHAR(4),              /* LISTEN: TOKEN OF LISTENER'S
                                         ELEMENT.                    */
                                      /* SIGNAL: ADDRESS OF ORIGINAL
                                         EPL.                        */
     2 ENFPFLEN FIXED(32);       /* LENGTH OF FREEPRM AREA       @D1A*/
 DECLARE EXITRTN ENTRY BASED(ENFPEADR);   /* FOR USER                */
./ ADD NAME=IEFEVARY
*  %GOTO ENFEVPRO;
         MACRO
         IEFEVARY
.* %ENFEVPRO: ;
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME = IEFEVARY                                           */
*/*                                                                  */
*/* DESCRIPTIVE NAME = VARY PARAMETER LIST                           */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1980, 1981               */
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM         */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          */
*/*             G120-2083.                                           */
*/*                                                                  */
*/* STATUS = OS/VS2  JBB1326                                         */
*/*                                                                  */
*/* MODULE TYPE = MACRO                                              */
*/*                                                                  */
*/* INVOCATION =                                                     */
*/*              BAL - IEFEVARY                                      */
*/*                                                                  */
*/*              PL/S - %DCL ENFVDEF CHAR                            */
*/*                     %ENFVDEF = 'VALUE'                           */
*/*                        VALUE = BDY(WORD) OR BASED                */
*/*                     %INCLUDE SYSLIB(IEFEVARY)                    */
*/*                                                                  */
*/* CHANGE ACTIVITY = G81BP2Q                                        */
*/* $D1= DCR121 JBB1326 810130 PD2L: ADD EVAPND AND EVACSCB      @D1A*/
*/*                                                                  */
*/* A 000000-999999                                          @G81BP2Q*/
*/* A (EVAPND, EVACSCB)                                          @D1A*/
*/********************************************************************/
*  %GOTO ENFEVDCL;
EVARY    DSECT                     VARY PARAMETER LIST
EVAUCBA  DS    F                   UCB ADDRESS FOR DEVICE
EVACSID  DS    H                   CHANNEL SET ID ADDRESS
*                                  RIGHT JUSTIFIED 1 BYTE
*                                  HIGH ORDER BYTE X'00'
EVACHNO  DS    XL1                 CHANNEL NUMBER
EVARSV1  DS    CL1                 RESERVED
EVAFUNC  DS    XL1                 FUNCTION BYTE
EVAINT   EQU   X'01'               IOS INITIALIZATION
EVAVARY  EQU   X'02'               VARY REQUESTS
EVACHAN  EQU   X'03'               CHANNEL RECOVERY
EVABOXED EQU   X'04'               BOXED DEVICE
EVAFLGS  DS    XL1                 REQUEST TYPE FLAG
EVAONLI  EQU   X'80'               ONLINE REQUEST
EVAOFLI  EQU   X'40'               OFFLINE REQUEST
EVADEVC  EQU   X'20'               DEVICE REQUEST
EVAALL   EQU   X'10'               CHANNEL REQUEST
EVAPATH  EQU   X'08'               PATH REQUEST
EVAPND   EQU   X'04'               PENDING OFFLINE REQUEST         @D1C
EVAFRSV2 EQU   X'02'               RESERVED
EVAFRSV3 EQU   X'01'               RESERVED
EVALEN   DS    H                   LENGTH OF VARY PARAMETER LIST
EVACSCB  DS    A                   ADDRESS OF CSCB                 @D1C
EVALLEN  EQU   *-EVARY             LENGTH OF VARY PARAMETER LIST
         MEND   ,                                                    */
   %ENFEVDCL:  ;
 DECLARE EVAINT  BIT(8) CONSTANT('01'X);    /* IOS INITIALIZATION    */
 DECLARE EVAVARY BIT(8) CONSTANT('02'X);    /* VARY REQUEST          */
 DECLARE EVACHAN BIT(8) CONSTANT('03'X);    /* CHANNEL RECOVERY      */
 DECLARE EVABOXED BIT(8) CONSTANT('04'X);   /* BOXED DEVICE          */
   DECLARE
   1 EVARY  ENFVDEF,
     2 EVAUCBA  POINTER(31),     /* UCB ADDRESS FOR DEVICE           */
     2 EVACSID  FIXED(15),       /* CHANNEL SET ID ADDRESS
                                    RIGHT JUSTIFIED 1 BYTE
                                    HIGH ORDER BYTE X'00'            */
     2 EVACHNO  BIT(8),          /* CHANNEL NUMBER                   */
     2 EVARSV1  CHAR(1),         /* RESERVED                         */
     2 EVAFUNC  BIT(8),          /* FUNCTION BYTE                    */
     2 EVAFLGS    BIT(8),        /* REQUEST TYPE FLAG                */
       3 EVAONLI BIT(1),         /* ONLINE REQUEST                   */
       3 EVAOFLI BIT(1),         /* OFFLINE REQUEST                  */
       3 EVADEVC BIT(1),         /* DEVICE REQUEST                   */
       3 EVAALL  BIT(1),         /* CHANNEL REQUEST                  */
       3 EVAPATH BIT(1),         /* PATH REQUEST                     */
       3 EVAPND  BIT(1),         /* PENDING OFFLINE REQUEST      @D1A*/
       3 * BIT(2),               /* RESERVED                     @D1C*/
     2 EVALEN   FIXED(15),       /* LENGTH OF VARY PARAMETER LIST    */
     2 EVACSCB  PTR(31);         /* POINTER TO CSCB              @D1C*/
./ ADD NAME=IEFJCLS
*%        GO TO JCLSLAB1;
* /*******************************************************************/
* /*                                                                 */
* /* STATUS --                                                       */
* /*    RELEASE 20, MODIFICATION LEVEL 00                            */
* /*    0-999999                                               20029 */
* /*                                                                 */
* /* FUNCTION --                                                     */
* /*    DESCRIBE A JOB CONTROL LANGUAGE SET                          */
* /*                                                                 */
* /* ENTRY POINTS --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* INPUT --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /* OUTPUT --                                                       */
* /*    A BSL OR ASSEMBLER LANGUAGE DECLARATION A JOB CONTROL        */
* /*    LANGUAGE SET                                                 */
* /*                                                                 */
* /* EXTERNAL REFERENCES --                                          */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, NORMAL --                                                */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, ERROR --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* TABLE/WORK AREAS --                                             */
* /*         NONE                                                    */
* /*                                                                 */
* /* ATTRIBUTES --                                                   */
* /*         NOT APPLICABLE                                          */
* /*                                                                 */
* /* NOTES --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /*******************************************************************/
* /* START OF SPECIFICATIONS ****
*1MODULE-NAME = IEFJCLS
*  2PROCESSOR = ASSEMBLER, BSL
** THE RELEASE FOR WHICH THIS MODULE WAS MOST RECENTLY UPDATED
*1STATUS = 20
**********************************************************************/
* /********************************************************************
*1DESCRIPTIVE-NAME = JOB CONTROL LANGUAGE SET MAPPING
*1DESCRIPTION = PROVIDE A MAPPING OF THE CHAINED STRUCTURES USED BY  -
*THE SYSTEM TASK CONTROL ROUTINE AND TSO LOGON TO CONTAIN THE JOB    -
*CONTROL LANGUAGE REQUIRED TO PROCESS THE START AND MOUNT OPERATOR   -
*COMMANDS AND THE LOGON FOREGROUND COMMAND RESPECTIVELY.
*1FUNCTION = SEE DESCRIPTION
*1MODULE-TYPE = MACRO
*1GLOBAL-ARITHMETIC-VARIABLES = LENJCLS
*1MACRO-SIZE = 188 STATEMENTS
*1PARAMETER-RECEIVED = NONE
*1SYSTEM-MACROS = NONE
*1EXTERNAL-TABLE = JCLS
*  2PURPOSE = PROVIDE A MAPPING OF A JOB CONTROL LANGUAGE SET
*  2REMARKS-ON-USE = AS OF RELEASE 20 ALL NEW USERS OF THE JOB       -
*  CONTROL LANGUAGE SET SHOULD UTILIZE THIS MACRO-INSTRUCTION. IN    -
*  THE FOLLOWING DISCUSSION 'REFERENCE-TYPE' REFERS TO THE TREATMENT -
*  GIVEN EACH INDIVIDUAL FIELD BY IEEVRJCL, THE PSEUDO-ACCESS METHOD -
*  NORMALLY USED TO PASS EACH JCLS TO THE READER/INTERPRETER
*  2SCOPE = EXTERNAL
*  2TABLE-SIZE = 88 BYTES
*  2MAPPING-MACRO = IEFJCLS
*  *******************************************************************/
*  /*******************************************************************
*  2FIELD = JCLSHDR
*    3REFERENCE-TYPE = READ
*    3DISPLACEMENT = 0 BYTES
*    3TYPE = TABLE
*    3SCOPE = EXTERNAL
*    3TABLE-SIZE = 8 BYTES
*    3MAPPING-MACRO = IEFJCLS
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSJCLS
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 0 BYTES
*      4TYPE = ADDRESS
*      4ADDRESS-LENGTH = 32 BITS
*      4ADDRESS-OF = JCLS
*        5REFERENCE-TYPE = READ
*        5TYPE-ADDRESSED = TABLE
*        5PURPOSE = NEXT JCLS IN STREAM
*        5REMARKS-ON-USE = IF JCLSJCLS POINTER IS ZERO, THE END OF   -
*        THE CHAIN IS INDICATED.
*        5SCOPE = EXTERNAL
*        5MAPPING-MACRO = IEFJCLS
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = *
*      4DISPLACEMENT = 4 BYTES
*      4TYPE = RESERVED
*  *******************************************************************/
*  /*******************************************************************
*  2FIELD = JCLSCARD
*    3REFERENCE-TYPE = READ
*    3DISPLACEMENT = 8 BYTES
*    3TYPE = TABLE
*    3PURPOSE = CONTAIN ONE JCL CARD IMAGE
*    3SCOPE = EXTERNAL
*    3TABLE-SIZE = 80 BYTES
*    3MAPPING-MACRO = IEFJCLS
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSLASH
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 0 BYTES
*      4TYPE = CHARACTER STRING
*      4LENGTH+MODE = 2 CHARACTERS
*      4VALUE = '//' OR '/*'
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSLABL
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 2 BYTES
*      4TYPE = CHARACTER STRING
*      4LENGTH+MODE = 8 CHARACTERS
*      4VALUE = LABEL OF JCL CARD
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSTYPE
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 10 BYTES
*      4TYPE = CHARACTER STRING
*      4LENGTH+MODE = 5 CHARACTERS
*      4VALUE = 'JOB', 'EXEC', 'DD', ...
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSBODY
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 15 BYTES
*      4TYPE = CHARACTER STRING
*      4LENGTH+MODE = 56 CHARACTERS
*      4VALUE = BODY OF JCL CARD
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSCNTN
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 1 BYTE
*      4TYPE = CHARACTER STRING
*      4LENGTH+MODE = 71 CHARACTERS
*      4VALUE = CONTINUATION FIELD OF JCL CARD
*    *****************************************************************/
*    /*****************************************************************
*    3FIELD = JCLSSEQ
*      4REFERENCE-TYPE = READ
*      4DISPLACEMENT = 8 BYTES
*      4TYPE = CHARACTER STRING
*      4LENGTH+MODE = 72 CHARACTERS
*      4VALUE = SEQUENCE FIELD OF JCL CARD
*
**** END OF SPECIFICATIONS ***/
         MACRO
         IEFJCLS
JCLS     DS   CL88           DEFINE A JOB CONTROL LANGUAGE SET (JCLS)
         ORG  JCLS           MOVE BACK AND DEFINE THE FIELDS
JCLSHDR  DS   CL8            JCLS HEADER
         ORG  JCLSHDR        STRUCTURE THE HEADER
JCLSJCLS DS   AL4            POINTER TO NEXT JCLS
         DS   1F             RESERVED
JCLSCARD DS   CL80           JCL CARD IMAGE
         ORG  JCLSCARD       MOVE BACK AND STRUCTURE THE CARD
JCLSLASH DS   CL2            //
JCLSLABL DS   CL8            LABEL FIELD
JCLSTYPE DS   CL5            JOB, EXEC, DD, ...
JCLSBODY DS   CL56           BODY OF CARD IMAGE
JCLSCNTN DS   1C             CONTINUATION COLUMN
JCLSSEQ  DS   CL8            SEQUENCE NUMBER FIELD
         MEND
*%JCLSLAB1:;
* /********************************************************************
*         DEFINE A JOB CONTROL LANGUAGE SET
* ********************************************************************/
* DECLARE
*         1     JCLS BASED(JCLSPTR) BOUNDARY(DWORD),
*               /******************************************************
*                  JCLS HEADER
*               ******************************************************/
*               2  JCLSHDR,
*                  /***************************************************
*                     POINTER TO NEXT JCLS -- ZERO FOR LAST
*                  ***************************************************/
*                  3  JCLSJCLS POINTER(31),
*                  /***************************************************
*                     RESERVED
*                  ***************************************************/
*                  3  * FIXED(31),
*               /******************************************************
*                  JCL CARD IMAGE
*               ******************************************************/
*               2  JCLSCARD CHARACTER(80),
*                  /***************************************************
*                     // OR /*
*                  ***************************************************/
*                  3  JCLSLASH CHARACTER(2),
*                  /***************************************************
*                     LABEL FIELD
*                  ***************************************************/
*                  3    JCLSLABL CHARACTER(8),
*                  /***************************************************
*                     JOB, EXEC, DD, ...
*                  ***************************************************/
*                  3    JCLSTYPE CHARACTER(5),
*                  /***************************************************
*                     BODY OF CARD IMAGE
*                  ***************************************************/
*                  3    JCLSBODY CHARACTER(56),
*                  /***************************************************
*                     CONTINUATION COLUMN
*                  ***************************************************/
*                  3    JCLSCNTN CHARACTER(1),
*                  /***************************************************
*                     SEQUENCE NUMBER FIELD
*                  ***************************************************/
*                  3    JCLSSEQ CHARACTER(8);
*%/********************************************************************
*         DEFINE THE LENGTH OF A JOB CONTROL LANGUAGE SET
**********************************************************************/
*         DECLARE LENJCLS FIXED;
*%        LENJCLS = 88;
./ ADD NAME=IEFJDT
 /********************************************************************/
 /*                                                                  */
 /*    MODULE NAME = IEFJDT                                          */
 /*                                                                  */
 /*    DESCRIPTIVE NAME = JCL DEFINITION TABLE                       */
 /*                                                                  */
 /*    COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1982,1983,            */
 /*                LICENSED MATERIAL - PROGRAM,                      */
 /*                PROPERTY OF IBM, REFER TO COPYRIGHT               */
 /*                FORM NUMBER G120-2083.                            */
 /*                                                                  */
 /*    STATUS = OS/VS2 JBB1329                                       */
 /*                                                                  */
 /*    FUNCTION = THIS MACRO PROVIDES THE MAPPING FOR THE JCL        */
 /*               DEFINITION TABLES (JDT'S).                         */
 /*                                                                  */
 /*    MODULE TYPE = MACRO                                           */
 /*                                                                  */
 /*    INVOCATION =                                                  */
 /*                                                                  */
 /*        PL/S - %INCLUDE SYSLIB(IEFJDT)                            */
 /*                                                                  */
 /*               THE JDT HAS FOUR BASED STRUCTURES THAT REQUIRE     */
 /*               THE DECLARATION OF POINTER VARIABLES.              */
 /*                                                                  */
 /*    CHANGE ACTIVITY = H0,H1,H2,H3,H4                          @H4C*/
 /*  $H0= EXTJCL  JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL      */
 /*  $H1= EXTJCL  JBB1328 810702 PD2K: SUPPORT FOR EXTENDED JCL  @H1A*/
 /*  $H2= EXTJCL  JBB1328 811202 PDC5: SUPPORT FOR EXTENDED JCL  @H2A*/
 /*  $H3= EXTJCL  JBB1328 820330 PDC5: SUPPORT FOR EXTENDED JCL  @H3A*/
 /*  $H4= EXTJCL  JBB1329 820611 PDC5: SUPPORT FOR EXTENDED JCL  @H4A*/
 /*                                                                  */
 /********************************************************************/
 /* A 000000-999999          EXTENDED JCL SUPPORT                @H0A*/
 /* A ADDED SUPPORT FOR MODID IN JDT'S.                          @H1A*/
 /* A ADDED FIELDS FOR MODID DECLARE STRUCTURE.                  @H2A*/
 /* A ADDED SUPPORT FOR HEX CONVERSION, NAME CONVERSION, KEYWORD     */
 /*         REFERRAL, MORE USAGE SELECTIONS, CONTROL VERB STATEMENT  */
 /*         PROCESSING, AND MINIMUM LENGTH DEFINITION.           @H2A*/
 /* D DELETED NAME CONVERSION FLAG.                              @H3A*/
 /* A ADDED FLAGS FOR CONVERSION TYPE RULES.                     @H3A*/
 /* A ADDED CONVERSION TYPE OF REFERRAL TO JDPARM.               @H3A*/
 /* A ADDED FLAG BITS TO JDPARM TO INDICATE IT IS A LIST ITEM FOR    */
 /*         SUBPARAMETERS OR FOR SUBLIST ELEMENTS.               @H4A*/
 /* A ADDED SUPPORT FOR SPECIAL CHARACTERS TO JDPARM.            @H4A*/
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /*        JCL DEFINITION TABLE HEADER SECTION                       */
 /*                                                                  */
 /********************************************************************/
 DECLARE
  1 JDTMAC     BASED,              /* JDT DEFINITION MACRO MAPPING   */
    2 JDTACR     CHAR(4),          /* IDENTIFIER 'JDT '              */
    2 JDTALEN    FIXED(15),        /* LENGTH OF JDTMAC SECTION       */
    2 JDTAVER    FIXED(8),         /* VERSION NUMBER OF JDTMAC MACRO */
    2 JDTARSV    CHAR(1),          /* RESERVED                       */
    2 JDTAMID    CHAR(24),         /* MODID FIELD                @H1A*/
      3 JDTACST    CHAR(8),        /* CSECT NAME                 @H2A*/
      3 JDTADAT    CHAR(8),        /* DATE OF ASSEMBLY           @H2A*/
      3 JDTAPRO    CHAR(8);        /* PRODUCT ID                 @H2A*/
 /********************************************************************/
 /*                                                                  */
 /*        JCL DEFINITION TABLE VERB SECTION                         */
 /*                                                                  */
 /********************************************************************/
 DECLARE
  1 JDTVERB    BASED,              /* VERB SECTION MACRO MAPPING     */
    2 JDTVNME    CHAR(8),          /* VERB NAME                      */
    2 JDTVOFF    FIXED(15),        /* OFFSET TO NEXT VERB            */
    2 JDTVKOF    FIXED(15),        /* OFFSET TO KEYWORD          @H2A*/
    2 JDTVVER    FIXED(8),         /* VERSION NUMBER OF JDVERB MACRO */
    2 JDTVFLG    BIT(8),           /* FLAG BYTE                  @H2A*/
      3 JDTVCTL    BIT(1),         /* CONTROL STATEMENT: NON-JCL @H2A*/
      3 *          BIT(7),         /* RESERVED                   @H2A*/
    2 JDTVRSV    CHAR(2);          /* RESERVED                   @H2A*/
 /********************************************************************/
 /*                                                                  */
 /*        JCL DEFINITION TABLE KEYWORD SECTION                      */
 /*                                                                  */
 /********************************************************************/
 DECLARE
  1 JDTKEYW    BASED,              /* KEYWORD SECTION MACRO MAPPING  */
    2 JDTKNME    CHAR(8),          /* KEYWORD NAME                   */
    2 JDTKLEN    FIXED(15),        /* LENGTH OF KEYWORD SECTION      */
    2 JDTKOFF    FIXED(15),        /* OFFSET TO NEXT KEYWORD         */
    2 JDTKVER    FIXED(8),         /* VERSION NUMBER OF JDKEY MACRO  */
    2 JDTKFL1    BIT(8),           /* FLAG BYTE                      */
      3 JDTKSPL    BIT(1),         /* KEYWORD SPOOLED W/ SYSOUT DATA */
      3 *          BIT(7),         /* RESERVED                       */
    2 JDTKRSV    CHAR(1),          /* RESERVED                   @H2C*/
    2 JDTKFL2    BIT(8),           /* KEYWORD FLAG BYTE              */
      3 JDTKUSE    BIT(1),         /* USAGE OF THIS KEYWORD:
                                      IF ON = SYSTEM INTERFACE ONLY  */
      3 JDTKJOB    BIT(1),         /* KEYWORD BEFORE FIRST STEP  @H2A*/
      3 JDTKSTP    BIT(1),         /* KEYWORD AFTER EXEC ONLY    @H2A*/
      3 *          BIT(1),         /* RESERVED                   @H2C*/
      3 JDTKNDA    BIT(1),         /* REFERRAL DATA              @H2A*/
      3 *          BIT(3),         /* RESERVED                   @H2C*/
    2 JDTKSTM    CHAR(8);    /* STATEMENT TYPE FOR REFERRAL DATA @H2A*/
 @EJECT;
 /********************************************************************/
 /*                                                                  */
 /*        JCL DEFINITION TABLE PARAMETER SECTION                    */
 /*                                                                  */
 /********************************************************************/
 DECLARE
  1 JDTPARM    BASED,              /* PARAMETER SECTION MACRO MAPPING*/
    2 JDTPLEN    FIXED(15),        /* LENGTH OF SUBPARAMETER SECTION */
    2 JDTPOFF    FIXED(15),        /* OFFSET TO NEXT SUBPARAMETER    */
    2 JDTPBID    FIXED(15),        /* SWB BLOCK ID               @H2M*/
    2 JDTPKEY    FIXED(16),        /* KEY FOR THIS SUBPARAMETER      */
    2 JDTPFLT    FIXED(8),         /* DEFAULT CHOICE FOR KEY         */
    2 JDTPVER    FIXED(8),         /* VERSION NUMBER OF JDPARM MACRO */
    2 JDTPMAX    FIXED(8),         /* MAXIMUM LENGTH OF PARAMETER    */
    2 JDTPMIN    FIXED(8),         /* MINIMUM LENGTH OF PARM     @H2A*/
    2 JDTPCNL    FIXED(8),         /* LENGTH CONVERTED INTEGER DATA  */
    2 JDTPBYO    FIXED(8),         /* BYTE OFFSET INTO SWB           */
    2 JDTPFL1    BIT(8),           /* PARAMETER FLAG BYTE            */
      3 JDTPBOL    BIT(1),         /* CHOICE DATA                    */
      3 JDTPCHR    BIT(1),         /* CHARACTER DATA                 */
      3 JDTPINT    BIT(1),         /* INTEGER DATA                   */
      3 JDTPHEX    BIT(1),         /* HEX DATA                   @H2A*/
      3 JDTPREF    BIT(1),         /* REFERRAL DATA              @H3A*/
      3 *          BIT(3),         /* RESERVED                   @H2C*/
    2 JDTPFL2    BIT(8),           /* SUBLIST FLAG BYTE              */
      3 JDTPSUB    BIT(1),         /* SUBLIST DATA                   */
      3 JDTPSFR    BIT(1),         /* FIRST ELEMENT OF SUBLIST       */
      3 JDTPLST    BIT(1),         /* PARAMETER IS A LIST ITEM   @H4A*/
      3 JDTPSLL    BIT(1),         /* SUBLIST ELEMENT IS A LIST  @H4A*/
      3 *          BIT(4),         /* RESERVED                   @H4C*/
    2 JDTPFL3    BIT(8),           /* DEFAULT FLAG BYTE              */
      3 JDTPDDF    BIT(1),         /* KEY DEFAULT SPECIFIED          */
      3 *          BIT(7),         /* RESERVED                       */
    2 JDTPFL4    BIT(8),           /* FIRST CHARACTER TYPES      @H3A*/
      3 JDTPFALL   BIT(1),         /* ALL CHARACTERS ALLOWED     @H3A*/
      3 JDTPFALP   BIT(1),         /* ALPHABETIC CHARACTERS A-Z  @H3A*/
      3 JDTPFNUM   BIT(1),         /* NUMERIC CHARACTERS    0-9  @H3A*/
      3 JDTPFNAT   BIT(1),         /* NATIONAL CHARACTERS  @,$,# @H3A*/
      3 JDTPFSPE   BIT(1),         /* SPECIAL CHARACTERS ALLOWED @H4A*/
      3 *          BIT(3),         /* RESERVED                   @H4C*/
    2 JDTPFL5    BIT(8),           /* OTHER CHARACTER TYPES      @H3A*/
      3 JDTPOALL   BIT(1),         /* ALL CHARACTERS ALLOWED     @H3A*/
      3 JDTPOALP   BIT(1),         /* ALPHABETIC CHARACTERS A-Z  @H3A*/
      3 JDTPONUM   BIT(1),         /* NUMERIC CHARACTERS    0-9  @H3A*/
      3 JDTPONAT   BIT(1),         /* NATIONAL CHARACTERS  @,$,# @H3A*/
      3 JDTPOSPE   BIT(1),         /* SPECIAL CHARACTERS ALLOWED @H4A*/
      3 *          BIT(3),         /* RESERVED                   @H4C*/
    2 JDTPRSV    CHAR(1),          /* RESERVED                   @H3C*/
    2 JDTPVAR    CHAR(*) BDY(WORD);/* VARIABLE DATA DEPENDING ON
                                      JDTPFL1 FLAGS                  */
 @EJECT;
 /************************************************************** @H2A*/
 /*                                                            * @H2A*/
 /*        CHARACTER DATA CONVERSION AREA OF JDPARM MACRO.     * @H3C*/
 /*                                                            * @H2A*/
 /************************************************************** @H2A*/
 DECLARE                                                      /* @H2A*/
  1 JDTPCRC  DEFINED(JDTPVAR),     /* CHARACTER CONVERSION       @H3C*/
    2 JDTPLNM    FIXED(8),         /* MAXIMUM NUMBER OF LEVELS   @H2A*/
    2 JDTPLLN    FIXED(8),         /* LENGTH OF EACH LEVEL       @H2A*/
    2 JDTPRS1    CHAR(2),          /* RESERVED                   @H4C*/
    2 JDTPFSN    FIXED(8),         /* NUMBER OF SPECIAL CHARACTERS
                                      DEFINED FOR THE FIRST CHARACTER
                                                                 @H4A*/
    2 JDTPFSA    CHAR(16),         /* SPECIAL CHARACTERS DEFINED FOR
                                      THE FIRST CHARACTER        @H4A*/
    2 JDTPOSN    FIXED(8),         /* NUMBER OF SPECIAL CHARACTERS
                                      DEFINED FOR CHARACTERS OTHER
                                      THAN THE FIRST             @H4A*/
    2 JDTPOSA    CHAR(16),         /* SPECIAL CHARACTERS DEFINED FOR
                                      CHARACTERS OTHER THAN THE FIRST
                                                                 @H4A*/
    2 JDTPRS2    CHAR(2);          /* RESERVED                   @H4A*/
 /********************************************************************/
 /*                                                                  */
 /*        INTEGER OR HEX DATA CONVERSION AREA OF JDPARM MACRO.      */
 /*                                                                  */
 /********************************************************************/
 DECLARE
  1 JDTPINC  DEFINED(JDTPVAR),     /* INTEGER OR HEX CONVERSION      */
    2 JDTPHGH  FIXED(31),          /* HIGH RANGE OF DATA             */
    2 JDTPLOW  FIXED(31);          /* LOW  RANGE OF DATA             */
 /********************************************************************/
 /*                                                                  */
 /*        CHOICE DATA CONVERSION AREA OF JDPARM MACRO.              */
 /*                                                                  */
 /********************************************************************/
 DECLARE
  1 JDTPCHC DEFINED(JDTPVAR),      /* CHOICE CONVERSION MAPPINGS     */
    2 *(8),                        /* MAPPING FOR INDIVIDUAL CHOICES */
      3 JDTPCHO  CHAR(8),          /* CHOICE MAPPINGS                */
      3 JDTPVAL  FIXED(8);         /* VALUE OF THE CHOICE MAPPINGS   */
./ ADD NAME=IEFJDVT
 /********************************************************************/
 /*                                                                  */
 /*  MODULE NAME = IEFJDVT                                           */
 /*                                                                  */
 /*  DESCRIPTIVE NAME = JCL DEFINITION VECTOR TABLE                  */
 /*                                                                  */
 /*  COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,                  */
 /*              LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,         */
 /*              REFER TO COPYRIGHT INSTRUCTIONS                     */
 /*              FORM NUMBER G120-2083.                              */
 /*                                                                  */
 /*  STATUS =   OS/VS2 JBB1328                                       */
 /*                                                                  */
 /*  FUNCTION = THIS  MACRO  PROVIDES THE  MAPPING OF THE JCL        */
 /*             DEFINITION VECTOR TABLE (JDVT). MAPPED IN THE        */
 /*             JDVT  IS  A  VARIABLE  LENGTH  SECTION  THAT         */
 /*             CONTAINS  THE  NAMES  AND  ADDRESSES  OF  JCL        */
 /*             DEFINITION TABLES (JDT'S).  THE JDT'S CONTAIN        */
 /*             THE DEFINITIONS OF NEW JCL KEYWORDS OR VERBS.        */
 /*                                                                  */
 /*  INVOCATION =                                                    */
 /*             PL/S - %INCLUDE SYSLIB(IEFJDVT)                      */
 /*                                                                  */
 /*                    THE JDVT IS A BASED STRUCTURE WHICH REQUIRES  */
 /*                    THE DECLARATION OF A POINTER VARIABLE.        */
 /*                                                                  */
 /*  MODULE TYPE = MACRO                                             */
 /*                                                                  */
 /*  CHANGE ACTIVITY = H0                                            */
 /*   $H0 = EXT JCL JBB1328 810315 PDC6 : SUPPORT OF EXTENDED JCL    */
 /*                                                                  */
 /********************************************************************/
 /* A 000000-999999                                              @H0A*/
 DECLARE
   1 JDVT BASED,
     2 JDVTHDR,                    /* FIXED SECTION OF JDVT          */
       3 JDVTID   CHAR(4),         /* JDVT IDENTIFIER                */
       3 JDVTVER  FIXED(8),        /* CONTROL BLOCK VERSION NUMBER   */
       3 JDVTFLAG   BIT(8),        /* DEFINITION FLAG                */
         4 JDVTDFLT BIT(1),        /* DEFAULT JDVT                   */
         4 *        BIT(7),        /* RESERVED                       */
       3 JDVTLEN  FIXED(15),       /* LENGTH OF JDVT HEADER          */
       3 JDVTNEXT PTR(31),         /* ADDRESS OF NEXT JDVT           */
       3 JDVTNAME CHAR(8),         /* JDVT NAME                      */
       3 JDVTRSV1 FIXED(15),       /* RESERVED                       */
       3 JDVT#JDT FIXED(15),       /* NUMBER OF JDT'S                */
     2 JDVTJDTS (*),               /* VARIABLE SECTION-JDT ENTRIES   */
       3 JDVTJDTN CHAR(8),         /* JDT NAME                       */
       3 JDVTJDTA PTR(31);         /* JDT ADDRESS                    */

 DECLARE
   JDVTCID  CHAR(4)   CONSTANT('JDVT'), /* JDVT ACRONYM              */
   JDVTCVER FIXED(8)  CONSTANT(1); /* CURRENT VERSION LEVEL          */
./ ADD NAME=IEFNELDF
     % DCL (IAMEXIT,QEPEXIT,RTNEXIT,TXTEXIT,FAMEXIT,SMFEXIT) CHAR;
*/********************************************************************/
*/*  THIS MACRO, IEFNELDF DEFINES DEFAULT VALUES FOR THE PARMS PASSED*/
*/*  TO THE IEFNEL MACRO.   IN A PLS MODULE THIS MACRO MUST BE       */
*/*  INCLUDED PRIOR TO INCLUDING THE IEFNEL MACRO.   SINCE THERE     */
*/*  IS NO DEFAULT VALUE FOR THE 'SUBCOM' PARAMETER, IT MUST BE      */
*/*  GIVEN A VALUE FOLLOWING THE INCLUSION OF IEFNELDF BUT PRIOR     */
*/*  TO THE INCLUSION OF IEFNEL.                                     */
*/*      E.G.,     INCLUDE SYSLIB(IEFNELDF);                         */
*/*                %SUBCOM='C';                                      */
*/*                INCLUDE SYSLIB(IEFNEL);                           */
*/********************************************************************/
         % DCL SUBCOM CHAR;
         % DCL NELEXBAS CHAR;
         % NELEXBAS = 'NELEXLST';
         %IAMEXIT= ' ';
         %QEPEXIT= ' ';
         %RTNEXIT= ' ';
         %SMFEXIT= ' ';
         %TXTEXIT= ' ';
         %FAMEXIT= ' ';
         %SUBCOM='NO';
./ ADD NAME=IEFPTRS
*%GOTO TCBBSL;
     MACRO
     IEFPTRS
*
*MACMEAN TCBASCB MEANS TCB,ASCB POINTERS
*MACCOMP SC1B6/PZD11
*MACSTAT 72.285/16216
*     PURPOSE= TO STANDARDIZE THE CHAIN BETWEEN THE CVT TO TCB,
*              AND THE CVT TO ASCB.
*
TCBASCB  DSECT
TCBNEXT  DS    A                  POINTER TO THE NEXT TCB
TCBPTR   DS    A                  POINTER TO THE CURRENT TCB
ASCBNEXT DS    A                  POINTER TO THE NEXT ASCB
ASCBPTR  DS    A                  POINTER TO THE CURRENT ASCB
         MEND ,  */
*%TCBBSL:  ;
*/*                                                                 */
*/*MACMEAN TCBASCB MEANS TCB,ASCB POINTERS                          */
*/*MACCOMP SC1B6/PZD11                                              */
*/*MACSTAT 72.285/16216                                             */
*/*     PURPOSE= TO STANDARDIZE THE CHAIN BETWEEN THE CVT TO TCB,   */
*/*              AND THE CVT TO ASCB.                               */
*/*                                                                 */
*DECLARE
*   1  TCBASCB  BASED(CVTTCBP),    /* CVTTCBP POINTS TO THE 4 WORD
*                                     LIST DEFINED BELOW */
*     2  TCBNEXT  PTR(31),         /* POINTER TO THE NEXT TCB */
*     2  TCBPTR   PTR(31),         /* POINTER TO THE CURRENT TCB */
*     2  ASCBNEXT PTR(31),         /* POINTER TO THE NEXT ASCB */
*     2  ASCBPTR  PTR(31);         /* POINTER TO THE CURRENT ASCB */
./ ADD NAME=IEFRELSE
         MACRO
&LABEL   IEFRELSE    &P1
 AIF ('&LABEL' EQ '').A0
&LABEL   DS 0H
.A0 ANOP
         LR    1,13                     SET UP TO FREE AREA
         L     13,4(0,13)               RESTORE PTR TO PREV SAVE AREA
         AIF   ('&P1' EQ '').A
         ST    13,&P1                   PTR TO PREVIOUS SAVE AREA
.A       ANOP
         FREEMAIN R,LV=72,A=(1)         RELEASE OLD SAVE AREA
         MEND
./ ADD NAME=IEFSAVER
         MACRO
&LABEL   IEFSAVER    &P1
 AIF ('&LABEL' EQ '').A0
&LABEL   DS    0H
.A0      ANOP
         GETMAIN R,LV=72                GET NEW SAVE AREA
         XC    0(72,1),0(1)             ZERO SAVE AREA
         ST    13,4(0,1)                CHAIN SAVE AREAS TOGETHER
         ST    1,8(0,13)                CHAIN SAVE AREAS TOGETHER
         LR    13,1                     PTR TO SAVE AREA
         AIF   ('&P1' EQ '').A
         ST    13,&P1                   PTR TO CURRENT SAVE AREA
.A       ANOP
         MEND
./ ADD NAME=IEFSDBAR
         MACRO
         IEFSDBAR
*                                                                MAPMAC
*****************************************************************MAPMAC
*                                                                MAPMAC
*        THE FOLLOWING CONSISTS OF TABLES NEEDED WHEN USING      MAPMAC
*        EXCP. THESE ARE MADE BEFORE OPENING THE OUTPUT DATA     MAPMAC
*        SET. THIS DSECT IS CODED IN-LINE IN IEFSDXYZ AND        MAPMAC
*        IEFSD081. IF ANY CHANGES ARE MADE TO THIS MACRO,        MAPMAC
*        THEY MUST BE VALID FOR ALL MODULES CONTAINING THIS      MAPMAC
*        MACRO.                                                  MAPMAC
*                                                                MAPMAC
*****************************************************************MAPMAC
IOBAR    DSECT
IOLNGT   DS    CL4                 THE LENGTH OF THIS AREA       MAPMAC
IOSWT    DS    CL1                 SWITCHES                      MAPMAC
IOMCB    EQU   32                  MULTI-CHAINS TO BUILD         MAPMAC
IOTRN    EQU   16                  TRUNCATE                      MAPMAC
IOVAR    EQU   8                   VARIABLE REC FORMAT           MAPMAC
IOEN2    EQU   4                   REAL END 2                    MAPMAC
IOEN1    EQU   2                   REAL END 1                    MAPMAC
IOCLB    EQU   1                   NOT CLEAR BUFFER              MAPMAC
IOEXT    DS    CL1                 FINAL CCW FLAGS               MAPMAC
         DS    CL2                 BUFFER SIZE                   MAPMAC
IOEXU    DS    CL4                 RETURN ADDRESS                MAPMAC
IOCHA    DS    CL4                 INFORM. ABOUT CHAN END        MAPMAC
IOOFF    DS    CL4                 NEXT CCW CHAIN ADDRESS        MAPMAC
IOECB    DS    CL4                 THE ECB                       MAPMAC
*                                  IOB PROPER                    MAPMAC
IOBFLAG1 DS    CL1                 BIT 1 FOR COMMAND CHAIN       MAPMAC
*                                  BIT 6 FOR NOT REL IOB         MAPMAC
IOBFLAG2 DS    CL1                                               MAPMAC
IOSENSO  DS    CL1                                               MAPMAC
IOBSENS1 DS    CL1                                               MAPMAC
IOBECBCC DS    CL1                                               MAPMAC
IOBECBPT DS    CL3                 ADDR OF ECB. IS IOECB         MAPMAC
IOBFLAG3 DS    CL1                                               MAPMAC
IOBCSW   DS    CL7                                               MAPMAC
IOBSIOCC DS    CL1                                               MAPMAC
IOBSTART DS    CL3                 ADDR OF CHANNEL PROGRAM       MAPMAC
*                                  THIS ADDR MAY BE CHANGED      MAPMAC
         DS    CL1                                               MAPMAC
IOBDCBPT DS    CL3                 ADDRESS OF DCB                MAPMAC
         DS    CL1                                               MAPMAC
IOBRESTR DS    CL3                                               MAPMAC
IOBINCAM DS    CL2                                               MAPMAC
IOBERRCT DS    CL2                                               MAPMAC
*                 THE CHANNEL COMMAND WORDS GO HERE              MAPMAC
IOCCW    DS    CL8                                               MAPMAC
*                 THESE ARE FOLLOWED BY THE BUFFERS              MAPMAC
***********************************************************************
         MEND
./ ADD NAME=IEFSDDSB
          MACRO
          IEFSDDSB
*                                                                MAPMAC
*****************************************************************MAPMAC
*                                                                MAPMAC
*                THE FOLLOWING IS THE MACRO WHICH EXPANDS        MAPMAC
*                THE DATA SET BLOCK (DSB) IN THE SYSOUT          MAPMAC
*                WRITER MODULE IEFSD085.                         MAPMAC
*                                                                MAPMAC
*                ANY CHANGES TO THIS MACRO MUST BE VAILID        MAPMAC
*                FOR ALL MODULES CONTAINING THIS MACRO.          MAPMAC
*                                                                MAPMAC
*****************************************************************MAPMAC
DSB      DSECT
         DS    0F                                                MAPMAC
DSBDSKAD DS    XL3               TTR OF THIS DSB                 MAPMAC
DSBTABID DS    XL1               TABLE ID                        MAPMAC
DSBNXT   DS    XL3               TTR OF NEXT DSB                 MAPMAC
         DS    XL2               RESERVED                        MAPMAC
DSBPCCPY DS    XL1               NO. OF COPIES OF SYSOUT DS      MAPMAC
DSBPCPTN DS    H                 LAST TWO CHARS OF TEST          MAPMAC
*                                      PTRN.MEM.NAME             MAPMAC
         DS    XL1               RESERVED                        MAPMAC
DSBLGOUT DS    XL1               LOG OUT BITS                    MAPMAC
DSBFLAG  DC    X'FF'             STATUS BYTE TO DISTINGUISH      MAPMAC
*                                     FROM SMB                   MAPMAC
DSBWSMNT DS    XL1               WARM START INDICATIOR THAT      MAPMAC
*                                     VOLUME NOT MOUNTED         MAPMAC
DSBTIOLN DS    XL1               LNTH OF TIOT PORTION OF DSB     MAPMAC
DSBSTTA  DS    XL1               STATUS -A-                      MAPMAC
DSBRLOC  DS    H                 REL. LOCATION OF POOL           MAPMAC
DSBDDNAM DS    CL8               DDNAME OF SPOOLED OUTPUT DS     MAPMAC
DSBJFCB  DS    XL3               JFCB DISK ADDRESS               MAPMAC
DSBSTTC  DS    XL1               STATUS -C-                      MAPMAC
DSBSTTB  DS    XL1               STATUS -B-                      MAPMAC
DSBFSRT  DS    XL3               SRT ADDRESS                     MAPMAC
*                                                                MAPMAC
*  DISPLACEMENTS FROM THIS POINT ON MAY BE INCORRECT FOR TIOT    MAPMAC
*  ENTRIES LONGER THAN THE MINIMUM. DSBTIOLN SHOULD BE USED      MAPMAC
*  IN ESTABLISHING ADDRESSABILITY FOR THE REMAINDER OF THE DSB   MAPMAC
*                                                                MAPMAC
DSBBASE  EQU   DSBTIOLN-DSBDSKAD LENGTH OF DSB BASE              MAPMAC
DSBXXX   DS    XL1               RESERVED                        MAPMAC
DSBCLA   DS    CL1               OUTPUT CLASS                    MAPMAC
         DS    XL2                                               MAPMAC
DSBFOR   DS    F                 FORM TYPE TO BE USED            MAPMAC
*                                FROM SYSOUT DD                  MAPMAC
DSBPRG   DS    2F                NAME OF USER WRITER             MAPMAC
*                                FROM SYSOUT DD                  MAPMAC
DSBSMF   EQU   *                                                 MAPMAC
DSBCPUID DS    F                 SID AND MDL FROM SMCA           MAPMAC
DSBJOB   DS    2F                JOB NAME                        MAPMAC
DSBENTRY DS    F                 ENTRY TIME IN 1/100'S SEC       MAPMAC
DSBDATE  DS    F                 ENTRY DATE OOYYDDDF             MAPMAC
DSBUSEID DS    2F                USER ID - INIT BLK BY R/I       MAPMAC
*                                            EACH JOB            MAPMAC
DSBCLAS  DS    CL1               OUTPUT CLASS                    MAPMAC
         DS    0F                                                MAPMAC
DSBHOLD  DS    XL3               TTR IN INPUT DS AT POINT        MAPMAC
*                                    OF INTERRUPTION             MAPMAC
DSBVOL   DS    XL1               VOL AT PT OF INTERRUPTION       MAPMAC
DSBPAGE  DS    XL2               PAGE IN BLK AT PT OF INTERPT    MAPMAC
*                                                                MAPMAC
*****************************************************************MAPMAC
         MEND
./ ADD NAME=IEFSDPAR
         MACRO
         IEFSDPAR
IEFSDPAR DSECT
*                                                                MAPMAC
*          RELEASE 20 DELETIONS/CHANGES                          MAPMAC
*                                                          20202 MAPMAC
*005600-005800                                            A32047 MAPMAC
*                                                          20202 MAPMAC
*****************************************************************MAPMAC
*                THE FOLLOWING IS THE PARAMETER LIST             MAPMAC
*                COMMON TO ALL SYSOUT WRITER MODULES             MAPMAC
*                EXCEPT MODULES IEFSD070,IEFSD088,               MAPMAC
*                IEFSD095 AND IEFSDXXX.  ALSO INCLUDED           MAPMAC
*                IN THE FOLLOWING MACRO IS THE START             MAPMAC
*                PARAMETER LIST USED BY THE SYSOUT               MAPMAC
*                WRITER MODULES                                  MAPMAC
*                                                                MAPMAC
*                ANY CHANGES MADE TO THIS MACRO MUST             MAPMAC
*                BE VALID FOR ALL MODULES CONTAINING             MAPMAC
*                THIS MACRO                                      MAPMAC
*****************************************************************MAPMAC
PARLIST  DS    0F                                                MAPMAC
PARSPL   DS    A                                                 MAPMAC
PARDCB   DS    A                                                 MAPMAC
PARFORM  DS    A                                                 MAPMAC
PARECBL  DS    A                                                 MAPMAC
PARQMPAR DS    A                                                 MAPMAC
PARSMB   DS    A                                                 MAPMAC
PARSWCH  DS    A                   SWITCHES                      MAPMAC
PARDAT   EQU   1                   DATASET PAUSE SWITCH          MAPMAC
PARPUN   EQU   2                   PUNCH TYPE SWITCH             MAPMAC
PARTTE   EQU   4                   086 ENTRY TO TTE        20202 MAPMAC
PARDUMMY EQU   8                   DUMMY DATA SET SW     A32047  MAPMAC
PARTTE1  EQU   16                  078 ENTRY TO TTE        20202 MAPMAC
PARCHAR  EQU   PARSWCH+1           CONDITIONAL SWITCHES          MAPMAC
PARCPAU  EQU   1                   CONDITIONAL PAUSE SWITCH      MAPMAC
PARCDAT  EQU   2                   CONDITIONAL DS PAUSE SW       MAPMAC
PARCCLA  EQU   4                   CONDITIONAL CLASSES SW        MAPMAC
PARJBSEP DS    A                   JOB SEPARATION NAME PNTR.     MAPMAC
PARGCLN  DS    A                   CURRENT GOOD CLASS NAMES      MAPMAC
         DS    A                                                 MAPMAC
PAREXCP  DS    A                   FIRST 0 BYTE 0 = BUFF NO      MAPMAC
*                                    BYTE 1 = TTXXXCCX           MAPMAC
*                                      TT = RECORD TYPE          MAPMAC
*                                       01 = VARIABLE            MAPMAC
*                                      CC = CONTROL CHAR.        MAPMAC
*                                       00 = NO CNTRL CHAR.      MAPMAC
*                                    BYTES 2-3 = A BUF LNTH      MAPMAC
*                                  THEN 0 PTR TO CORE GOT        MAPMAC
*                                    FOR EXCP I/O TABLES         MAPMAC
PARJSNM  DS    A                   JOB                           MAPMAC
         DS    A                     SEPERATOR NAME              MAPMAC
PARXXX   DS    A                   LOCATION OF SPAN MODULE       MAPMAC
PARXXA   DS    A                   LOCATION OF SPAN CORE         MAPMAC
PARLRECL DS    A                   OUTPUT LRECL SIZE             MAPMAC
PARSMF   DS    1F                                                MAPMAC
PARWKLST DS    A                   ADDR. OF WORK SPACE (SIZE=B4) MAPMAC
PARCOMM  DS    A                   ADDR OF COMM AREA IN CSCB     MAPMAC
PARWKSOR DS    A                   WK AREA FOR STD & EXCP OUTPUT MAPMAC
ACTIVE   EQU   X'80'               COMMAND ACTIVE BIT            MAPMAC
PARUCSID DS    A                   UCS DEFAULT-ID          20202 MAPMAC
PARFCBID DS    A                   FCB DEFAULT-ID          20202 MAPMAC
PARUCB   DS    A                   UCB ADDRESS            A32047 MAPMAC
PARSAP   DS    A                        SAVE AREA POINTER        M359
PARSAV   DS    18F                      REGISTER SAVE AREA       M359
PARWORK  DS    F                   WORK AREA ADDRESS
PARALLOC DS    A                   ADDR. OF DYNALLOC PARM AREA CORE
PARNAMES DS    A                   ADDR. OF VALID NAMES TABLE    MAPMAC
PARWTRNM DS    CL3                 IDENTITY OF WRITER
PARDUM   DS    X                   BYTE OF WAIT SWITCHES
PARWAIT  EQU   X'80'               INDICATOR TO WRITE WAIT MSG.
PARMOD   EQU   X'40'               INDICATOR TO WAIT ON COMMAND ECB
PAREND   EQU   *              END OF PARAMETER LIST              MAPMAC
*                                                                MAPMAC
PARLENGT EQU   PAREND-PARLIST                                    MAPMAC
PARDSB   EQU   PARSMB                                            MAPMAC
PARWORK1 EQU   PARECBL                                           MAPMAC
PARWORK2 EQU   PARQMPAR                                          MAPMAC
*                                                                MAPMAC
*                                                                MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARSPL   -START PARAMETER LIST ADDRESS            /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARDCB   -OUTPUT DCB ADDRESS                      /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARFORM  -IDENTIFICATION OF DESIRED OUTPUT FORMS  /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARECBL  -ADDRESS OF CSCB ECB                     /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARQMPAR -QUEUE MANAGER PARAMETERS ADDRESS        /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARSMB   -SYSTEM MESSAGE BLOCK ADDRESS            /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARSWCH  -SWITCHES                                /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARJBSEP -JOB SEPERATION NAME POINTER             /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARGCLN  -CURRENT GOOD CLASS NAMES                /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        /     ( 1 MORE FULL WORD )                          /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PAREXCP  -INFORMATION FOR EXCP ROUTINE            /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARJSNM  -JOB SEPERATION NAME                     /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        /     ( 1 MORE FULL WORD )                          /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARXXX   -LOCATION OF SPANNING MODULE             /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARXXA   -LOCATION OF SPANNING CORE               /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARLRECL -OUTPUT LRECL SIZE (FIRST HALF WORD)     /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARSMF   -SYSTEM MANAGEMENT FACILITY              /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARWKLST -DSB & SMB WORKLIST (WORKLST) ADDRESS    /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARCOMM  -CSCB COMMUNICATION AREA ADDRESS         /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARWKSOR -STD & EXCP OUTPUT WORK AREA (WKSOR) ADDR/   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARUCSID -S WTR UCS IMAGE-ID USED FOR DEFAULT / 20202 MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARFCBID -S WTR FCB IMAGE-ID USED FOR DEFAULT / 20202 MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARUCB   -UCB ADDRESS                             /   MAPMAC
*        /----------------------------------------------/ A32047 MAPMAC
*        / PARSAP   -LOCATION OF LINKORS REG SAVE AREA   / 20202 MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARSAV   -REGISTER SAVE AREA                  / 20202 MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        /     ( 17 MORE FULL WORDS )                    / 20202 MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARWORK  -ADDR. OF JFCB, MSG. & SSOB WORK AREAS   /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARALLOC -ADDR. OF DYNAMIC ALLOCATE PARAMETER LIST/   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARNAMES -ADDR. OF VALID USER WRITER NAME TABLE   /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / PARWTRNM -IDENTITY OF THIS EXTERNAL WRITER        /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*                                                          20202 MAPMAC
*                                                          20202 MAPMAC
*                                                                MAPMAC
SPLAD    DSECT
SPLPAR   DS    A                   EXECUTE PARM                  MAPMAC
*                                                                MAPMAC
*****************************************************************MAPMAC
         MEND
./ ADD NAME=IEFSDSDR
         MACRO
         IEFSDSDR
IEFSDSDR DSECT
*                                                                MAPMAC
*****************************************************************MAPMAC
*                THE WORK AREA USED BY THE FOLLOWING             MAPMAC
*                SYSOUT WRITER MODULES - - IEFSD086,             MAPMAC
*                IEFSD087,IEFSD088,IEFSD089,IEFSD094,            MAPMAC
*                IEFSDXYZ,IEFSDXXX                               MAPMAC
*                                                                MAPMAC
*                ANY CHANGES MADE TO THIS MACRO MUST             MAPMAC
*                BE VALID FOR ALL MODULES CONTAINING             MAPMAC
*                THIS MACRO                                      MAPMAC
*****************************************************************MAPMAC
WKSOR    DS    0F                                                MAPMAC
SORS1    DS    C                  SWITCHES                       MAPMAC
OLDSW    EQU   128                OLD SWITCH                     MAPMAC
MACHS    EQU   64                 MACHINE SWITCH                 MAPMAC
INERS    EQU   32                 PERM IO INPUT ERROR            MAPMAC
LRERS    EQU   16                 LRECL FIELD ZERO               MAPMAC
SPASW    EQU   8                  SPANNED INPUT SWITCH           MAPMAC
CNTGE    EQU   4                  CANT GET CORE SWITCH           MAPMAC
OVERT    EQU   2                  OVER 32K SWITCH                MAPMAC
ERRSW    EQU   1                  ERROR SWITCH                   MAPMAC
CONCH    DS    C                  SAVE UNTRANSLATED CTR CHAR.    MAPMAC
SAVED    DS    C                  SAVE CHAR FOR NEXT RECORD      MAPMAC
SAVEC    DS    C                  SAVE CHAR FOR THIS RECORD      MAPMAC
LOCAT    DS    A                  LOC OF LAST CONTROL CHAR.      MAPMAC
INLSF    DS    F                  INPUT LNTH IN STAND FORM       MAPMAC
INLOC    DS    A                  INPUT RECORDS LOC              MAPMAC
OTLWR    DS    F                  OUTPUT LNTH WHOLE REC          MAPMAC
OTLSF    DS    F                  OUTPUT LNTH IN STAND FORM      MAPMAC
OTLOC    DS    A                  OUTPUT RECORDS LOC             MAPMAC
SRETR    DS    F                  SAVE RETURN REGISTER HERE      MAPMAC
SMSVA    DS    18F                SAVE AREA                      MAPMAC
BALRG    DS    F                  INFORMATION SAVE AREA          MAPMAC
BCTSW    DS    C                  BUFFER COUNT SWITCH            MAPMAC
SEGIN    DS    C                  SEGMENT FROM LAST INPUT        MAPMAC
SORS2    DS    C                  SWITCHES                       A35780
ASACC    EQU   128                ASA CONTROL CHARACTER SW       A35780
WKSOE    DS    0F            END OF LIST                         MAPMAC
*                                                                MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / SORS1 *    / CONCH *    / SAVED *    / SAVEC *    /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / LOCAT    -ADDR IN PREVIOUS RECORD FOR CNTRL CHAR  /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / INLSF    -LENGTH OF INPUT MESSAGE                 /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / INLOC    -LOCATION OF INPUT MESSAGE               /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / OTLWR    -LENGTH OF OUTPUT MESSAGE                /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / OTLSF    -UNUSED                                  /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / OTLOC    -UNUSED                                  /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / SRETR    -LOCATION OF LINKORS REGISTER SAVE AREA  /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / SMSVA    -REGISTER SAVE AREA                      /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        /     ( 17 MORE FULL WORDS )                        /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*               /            /            /            /         MAPMAC
*               /            /            /            /         MAPMAC
*               /            /            /            /         MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / BALRG    -RETURN REGISTER SAVED HERE              /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / BCTSW *    / SEGIN *    / SORS2 *    /            /   A35780
*        /------------/------------/------------/------------/   MAPMAC
*                                                                MAPMAC
*          * SORS1                                               MAPMAC
*          128 = OLDSW    - THE INITIAL WORK HAS BEEN DONE       MAPMAC
*                             ON THESE MESSAGES OR THIS          MAPMAC
*                             DATASET                            MAPMAC
*             64 = MACHS    - THE INPUT DATA HAS MACHINE         MAPMAC
*                             CONTROL CHARACTERS                 MAPMAC
*             32 = INERS    - AN INPUT ERROR, A BAD CONTROL      MAPMAC
*                             CHARACTER TO TRANSLATE OR          MAPMAC
*                             THE DATA SET WAS NEVER OPENED      MAPMAC
*             16 = LRERS    - THE DATA SET WAS NEVER OPENED      MAPMAC
*              8 = SPASW    - INPUT DATA SET IS SPANNED SW       MAPMAC
*              4 = CNTGE    - COMMUNICATION FOR MSG REQUIRED     MAPMAC
*                             CAN'T GET CORE SWITCH              MAPMAC
*              2 = OVERT    - COMMUNICATION FOR MSG REQUIRED     MAPMAC
*                             REC OVER 32K BYTES IN LNTH SW      MAPMAC
*                = ERRSW    - COMMUNICATION FOR MSG REQUIRED     MAPMAC
*                             BAD SEGMENT SWITCH                 MAPMAC
*                                                                MAPMAC
*                * CONCH                                         MAPMAC
*                  THE UNTRANSLATED CONTROL CHARACTER            MAPMAC
*                                                                MAPMAC
*                * SAVED                                         MAPMAC
*                  THE SAVE CHARACTER FOR NEXT RECORD            MAPMAC
*                                                                MAPMAC
*                * SAVEC                                         MAPMAC
*                  THE SAVE CHARACTER FOR THIS RECORD            MAPMAC
*                                                                MAPMAC
*                * BCTSW                                         MAPMAC
*                  THE NUMBER OF RECORDS TO PUT AT END OF        MAPMAC
*                  DATA SET OR MESSAGES                          MAPMAC
*                                                                MAPMAC
*                * SEGIN                                         MAPMAC
*                  VARIABLE SPANNED INPUT SEGMENT NUMBER         MAPMAC
*                                                                MAPMAC
*          * SORS2                                               A35780
*            128 = ASACC    - THE INPUT DATA HAS ASA             A35780
*                             CONTROL CHARACTERS                 A35780
*                                                                A35780
         MEND
./ ADD NAME=IEFSDSET
         MACRO
         IEFSDSET
SPLIST   DSECT
*DEFINE SETPRT LIST                                              MAPMAC
SPLDCBAD DS    AL4                      DCB ADDRESS              MAPMAC
SPLUCSID DS    AL4                      UCS IMAGE-ID             MAPMAC
SPLLMO   DS    XL1                      LOAD MODE OPTION         MAPMAC
SPLUCSV  DS    XL1                      VERIFY OPTION            MAPMAC
SPLDACK  DS    XL1                      DATA CHECK OPTION        MAPMAC
SPLFCBID DS    AL4                      FCB IMAGE-ID             MAPMAC
SPLFCBVA DS    XL1                      FCB ALIGN/VERIFY OPTION  MAPMAC
SPLWORK  DS    0CL4                     WORK AREA                MAPMAC
         DS    CL2                      NOT USED                 MAPMAC
SPLFCB   DS    CL1                      FCB RETURN CODE          MAPMAC
SPLUCS   DS    CL1                      UCS RETURN CODE          MAPMAC
SPLOP    DS    AL4           FLAG BYTE FOR TTE RET CODE TEST     MAPMAC
*                              AND ADDR OF 089 FOR MSG WRITE     MAPMAC
SPLEND   EQU   *                                                 MAPMAC
SPLLGN   EQU   SPLEND-SPLIST           LENGTH OF SETPRT LIST     MAPMAC
         MEND
./ ADD NAME=IEFSDSMF
         MACRO
         IEFSDSMF
IEFSDSMF DSECT
*                                                                MAPMAC
*****************************************************************MAPMAC
*                THE SMF WORK TABLE USED BY THE FOLLOWING        MAPMAC
*                SYSOUT WRITER MODULES - - IEFSD079,             MAPMAC
*                IEFSD085,IEFSD087,IEFSD089,IEFSD171             MAPMAC
*                                                                MAPMAC
*                ANY CHANGES MADE TO THIS MACRO MUST             MAPMAC
*                BE VALID FOR ALL MODULES CONTAINING             MAPMAC
*                THIS MACRO                                      MAPMAC
*****************************************************************MAPMAC
SMFREC   DS    0F                                                MAPMAC
SMFLLBB  DS    1F            SMF RECORD LENGTH                   MAPMAC
SMFCNT   DS    CL1           CONTINUATION BYTE USUALLY ZERO      MAPMAC
SMFRECTP DS    CL1           RECORD TYPE                         MAPMAC
SMFSPTM  DS    CL4           STOP TIME IN TIMER UNITS-/100THS    MAPMAC
SMFSPDT  DS    CL4           STOP DATE                           MAPMAC
SMFJOBLG DS    CL29          JOB LOG                             MAPMAC
SMFSTTM  DS    CL4           START TIME IN TIMER -/100THS        MAPMAC
SMFSTDT  DS    CL4           START DATE                          MAPMAC
SMFSOCTF DS    CL4           SYSOUT COUNT PER JOB PER FORM       MAPMAC
SMFERIN  DS    CL1           ERROR INDICATOR                     MAPMAC
SMFDSCTF DS    CL1           DATA SET COUNT PER JOB PER FORM     MAPMAC
SMFFORM  DS    CL4           FORM NUMBER                         MAPMAC
SMFENDFM EQU   *             END OF FORM RECORD                  MAPMAC
SMFWORKA DS    2F            WORK AREA                           MAPMAC
SMFWKLL  DS    1F            SMF WORK TABLE LENGTH               MAPMAC
SMFDYCNT DS    CL4           DUMMY SYSOUT CT FOR TRANSITION      MAPMAC
SMFERINJ DS    CL1           JOB ERROR INDICATOR                 MAPMAC
SMFRSV1  DS    CL1           RESERVED                            MAPMAC
SMFSSID  DS    CL2           SUBSYSTEM ID =X'0000' IN XWTR       MAPMAC
SMFLEN1  DS    CL2           LENGTH OF SECTION INCL. SS LENGTH   MAPMAC
SMFRSV2  DS    CL2           RESERVED                            MAPMAC
SMFJOBNO DS    CL4           JES ASSIGNED JOB NUMBER             MAPMAC
SMFRSV3  DS    CL8           RESERVED                            MAPMAC
SMFFCB   DS    CL4           FCB ID, IF APPLICABLE               MAPMAC
SMFUCS   DS    CL4           UCS ID, IF APPLICABLE               MAPMAC
SMFEND   EQU   *             END OF SMF WORK AREA                MAPMAC
         MEND
./ ADD NAME=IEFSDWKT
         MACRO
         IEFSDWKT
IEFSDWKT DSECT
*                                                                MAPMAC
*****************************************************************MAPMAC
*                THE WORK LIST USED BY THE FOLLOWING             MAPMAC
*                SYSOUT WRITER MODULES - - IEFSD070,             MAPMAC
*                IEFSD078,IEFSD085,IEFSD086,IEFSD087,            MAPMAC
*                IEFSD088,IEFSD089,IEFSD094,IEFSD171,            MAPMAC
*                IEFSDXYZ,IEFSDXXX                               MAPMAC
*                                                                MAPMAC
*                ANY CHANGES MADE TO THIS MACRO MUST             MAPMAC
*                BE VALID FOR ALL MODULES CONTAINING             MAPMAC
*                THIS MACRO.  THE FIRST 16 BYTES OF              MAPMAC
*                THE WORK LIST MUST REMAIN IN SEQUENCE           MAPMAC
*                AT THE BEGINNING OF THE LIST SINCE THESE        MAPMAC
*                ARE PASSED AS PARAMETERS TO THE USER            MAPMAC
*****************************************************************MAPMAC
WORKLST  DS    0F                                                MAPMAC
VARAR    DS    0F                       VARIABLE                 MAPMAC
VARBA    DS    C                        SWITCHES                 MAPMAC
FTFTW    EQU   128                      1442 SWITCH              MAPMAC
PUNSH    EQU   64                       PUNCH SWITCH             MAPMAC
UNRWR    EQU   32                       UNIT RECORD WTR SW       MAPMAC
         DS    0F                       FULL WORD ALIGNMENT      MAPMAC
DCBOT    DS    F                        OUTPUT DCB               MAPMAC
DCBIN    DS    F                        INPUT DCB OR MSG BUF     MAPMAC
WOTIQ    DS    F                        CANCEL ECB ADDR          MAPMAC
WOSPS    DS    F                        SAVE PARAMETER AREA      MAPMAC
WOSPT    DS    F                        SAVE PTR TO MESSAGE      MAPMAC
WOSAP    DS    F                        SAVE AREA POINTER        MAPMAC
WOSVA    DS    18F                      SAVE AREA                MAPMAC
WOWRN    DS    2F                       RTN USED TO WRITE DS     MAPMAC
WOTIO    DS    F                        TIOT PTR FOR OUTPUT      MAPMAC
WJFCB    DS    F                        SAVE JFCB ADDRESS        MAPMAC
WOXXX    DS    F                        ADDRESS OF SPAN MODULE   MAPMAC
WOXXA    DS    F                        LOC OF SPANNING CORE     MAPMAC
WOLCL    DS    F                        LNTH AND SEGMENT IND.    MAPMAC
WOSTA    DS    F                        STAE LIST ADDRESS        MAPMAC
WORKEND  EQU   *                                                 MAPMAC
*                                                                MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / VARBA *    /            /            /            /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / DCBOT    -OUTPUT DCB ADDRESS                      /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / DCBIN    -ADDRESS OF INPUT DCB OR MESSAGE BUFFER  /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOTIQ    -POINTER TO CANCEL ECB IN CSCB           /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOSPS *  -ADDRESS OF PARLIST                      /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOSPT *  -ADDRESS OF START OF MESSAGE             /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOSAP *  PASSED REGISTER SAVE AREA                /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOSVA    -REGISTER SAVE AREA                      /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        /     ( 17 MORE FULL WORDS )                        /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*               /            /            /            /         MAPMAC
*               /            /            /            /         MAPMAC
*               /            /            /            /         MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOWRN    -NAME OF SYSOUT PROGRAM TO WRITE DATA SET/   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        /     ( 1 MORE FULL WORD )                          /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOTIO    -ADDRESS OF PREVIOUSLY USED TIOT         /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WJFCB    -JFCB ADDRESS                            /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOXXX    -ADDRESS OF SPANNING MODULE              /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOXXA    -LOCATION OF SPANNING CONTROL            /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOLCL    -LENGTH AND SEGMENT INDICATION           /   MAPMAC
*        /---------------------------------------------------/   MAPMAC
*        / WOSTA    -STAE LIST ADDRESS                           MAPMAC
*        /------------/------------/------------/------------/-  MAPMAC
*                                                                MAPMAC
*                * VARBA                                         MAPMAC
*                  128 = FTFTW    - THE OUTPUT DEV IS A 1442     MAPMAC
*                   64 = PUNSH    - THE OUTPUT IS PUNCH TYPE     MAPMAC
*                   32 = UNRWR    - THE OUTPUT DEV IS UNIT REC   MAPMAC
*                                                                MAPMAC
*                * WOSPS                                         MAPMAC
*                  ADDRESS OF PARLIST, OR SIZE OF AREA           MAPMAC
*                  GOT FOR SCRATCHING A DATA SET                 MAPMAC
*                                                                MAPMAC
*                * WOSPT                                         MAPMAC
*                  ADDRESS OF START OF MESSAGE, OR LOCATION      MAPMAC
*                  OF AREA GOT FOR SCRATCHING A DATA SET         MAPMAC
*                                                                MAPMAC
*                * WOSAP                                         MAPMAC
*                  THE FIRST BYTE IS THE RETURN CODE GOT         MAPMAC
*                  FROM SCRATCHING A DATASET, THE REST IS THE    MAPMAC
*                  LOCATION OF THE REGISTER SAVE AREA GIVEN      MAPMAC
*                 TO THE MODULES BY IEFSD078.                    MAPMAC
*                                                                MAPMAC
         MEND
./ ADD NAME=IEFSDWKX
         MACRO
         IEFSDWKX
IEFSDWKX DSECT
*                                                                MAPMAC
*****************************************************************MAPMAC
*                THE CONTROL AREA FOR SPANNING USED IN           MAPMAC
*                THE FOLLOWING SYSOUT WRITER MODULES - -         MAPMAC
*                IEFSD078,IEFSD087,IEFSDXYZ,IEFSDXXX             MAPMAC
*                                                                MAPMAC
*                ANY CHANGES MADE TO THIS MACRO MUST             MAPMAC
*                BE VALID FOR ALL MODULES CONTAINING             MAPMAC
*                THIS MACRO                                      MAPMAC
*****************************************************************MAPMAC
WORKFXXX DS    0F                                                MAPMAC
ATENW    DS    18F                      SAVE AREA                MAPMAC
SWXXX    DS    C                        SWITCHES                 MAPMAC
WATPT    EQU   1                        WORK AREA TO BE PUT SW   MAPMAC
WABPT    EQU   2                        WORK AREA BEING PUT SW   MAPMAC
DTASW    EQU   4                        DATA SET SWITCH          MAPMAC
INSEG    DS    C                        INPUT SEG INDICATION     MAPMAC
INSEW    DS    C                        SAVE FOR ABOVE           MAPMAC
         DS    C                                                 MAPMAC
MAXI1    DS    F                        INITIAL: MAX. INPUT      MAPMAC
MAXO1    DS    F                                 MAX. OUTPUT     MAPMAC
MINO1    DS    F                                 MIN. OUTPUT     MAPMAC
MAXI2    DS    F                        WORKING: MAX. INPUT      MAPMAC
MAXO2    DS    F                                 MAX. OUTPUT     MAPMAC
MINO2    DS    F                                 MIN. OUTPUT     MAPMAC
MAXI3    DS    F                        SAVED:   MAX. INPUT      MAPMAC
MAXO3    DS    F                                 MAX. OUTPUT     MAPMAC
MINO3    DS    F                                 MIN. OUTPUT     MAPMAC
SOUTL    DS    F                        OUTPUT LENGTH            MAPMAC
         DS    F                        OUTPUT LOCATION          MAPMAC
INLSW    DS    F                        SAVE INPUT LENGTH        MAPMAC
INLOW    DS    F                        SAVE INPUT LOCATION      MAPMAC
LENLO    DS    F                        LOC OF LENGTH OUTPUT     MAPMAC
         DS    F                        LNTH OUTPUT (SOMETIMES)  MAPMAC
WOKRL    DS    F                        LENGTH OF WORK AREA      MAPMAC
WOKRA    DS    F                        LOCATION OF WORK AREA    MAPMAC
         DS    F                        PLACE FOR GETMAIN STUFF  MAPMAC
WORKEEND EQU   *                                                 MAPMAC
BSKWA    DS    168C                     WK AREA FOR NON DS'S     MAPMAC
WORKFEND EQU   *                                                 MAPMAC
*****************************************************************MAPMAC
*                                                                MAPMAC
         MEND
./ ADD NAME=IEFVJSEL
*%        GO TO JSELPLS;
* /*******************************************************************/
* /*                                                                 */
* /* STATUS --                                                       */
* /*    OS/VS2 RELEASE 2, MODIFICATION LEVEL 00                      */
* /*                                                                 */
* /* FUNCTION --                                                     */
* /*    DEFINE THE PARAMETER LIST WHICH MUST BE PASSED TO THE JOB    */
* /*    SCHEDULING SUBROUTINE, THE JOB SCHEDULING ENTRANCE LIST      */
* /*    (JSEL)                                                       */
* /*                                                                 */
* /* ENTRY POINTS --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* INPUT --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /* OUTPUT --                                                       */
* /*    DATA CONTANTS (ASSEMBLER) OR DECLARATIONS (PLS) DEFINING THE */
* /*    JSEL                                                         */
* /*                                                                 */
* /* EXTERNAL REFERENCES --                                          */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, NORMAL --                                                */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, ERROR --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* TABLE/WORK AREAS --                                             */
* /*         NONE                                                    */
* /*                                                                 */
* /* ATTRIBUTES --                                                   */
* /*         NOT APPLICABLE                                          */
* /*                                                                 */
* /* NOTES --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /*******************************************************************/
* /* START OF SPECIFICATIONS ****
*1MODULE-NAME = IEFVJSEL
*  2PROCESSOR = ASSEMBLER
**** END OF SPECIFICATIONS ***/
* /*******************************************************************/
         MACRO
&NAME    IEFVJSEL  &PREFIX=JSEL /*
&PREFIX.STRT DS   0F         ALIGN THE JSEL ON A FULLWORD BOUNDARY
             DC A(0)         RESERVED
&PREFIX.JSOL DC A(0)         ADDRESS OF JOB SCHEDULING OPTIONS LIST
&PREFIX.CSCB DC A(0)         ADDRESS OF CSCB FOR JOBS TO BE SCHEDULED
&PREFIX.JCL  DC A(0)         ADDRESS OF JOB CONTROL LANGUAGE SET (JCLS)
&PREFIX.JSXL DC A(0)         ADDRESS OF JOB SCHEDULING EXIT LIST
&PREFIX.ASCB DC A(0)              ASCB ADDRESS                   Y02669
&PREFIX.END  EQU   *         END OF JOB SCHEDULING ENTRANCE LIST
         ORG  &PREFIX.STRT
&PREFIX  DS   CL(&PREFIX.END-&PREFIX.STRT)
         MEND
**/ %    JSELPLS: ;
* /*******************************************************************/
* /*      DEFINE A JOB SCHEDULING ENTRANCE LIST                      */
* /*******************************************************************/
* DECLARE
* 1       JSEL BASED( JSELPTR),
*
*         /*    RESERVED                                             */
*         2     * POINTER(32),
*
*         /*    POINTER TO A JOB SCHEDULING OPTIONS LIST SPECIFYING  */
*         /*    OPTIONS OF THE JOB SCHEDULING SUBROUTINE             */
*         2     JSELJSOL POINTER(32),
*
*         /*    POINTER TO A CSCB TO BE USED DURING THE SCHEDULING   */
*         /*    OF THE JOB                                           */
*         2     JSELCSCB POINTER(32),
*
*         /*    POINTER TO JOB CONTROL LANGUAGE SET (JCLS)           */
*         /*    DESCRIBING THE JOB TO BE SCHEDULED                   */
*         2     JSELJCL POINTER(32),
*
*         /*    POINTER TO A JOB SCHEDULING EXIT LIST SPECIFYING ANY */
*         /*    SPECIAL EXIT ROUTINES WHICH ARE TO BE INVOKED DURING */
*         /*    JOB SCHEDULING SUBROUTINE PROCESSING.                */
*         2     JSELJSXL POINTER(32),
*         2     JSELASCB PTR(32), /* ASCB ADDRESS              Y02669*/
*
*               /* THIS IS A VARIABLE-LENGTH PARAMETER LIST, SO      */
*               /* THE HIGH-ORDER BIT OF THE LAST POINTER MUST       */
*               /* BE SET TO 1.                                      */
*               3  JSELEOL BIT(1);
*%        /*    DEFINE THE LENGTH OF THE JSEL                        */
*         DECLARE LENJSEL FIXED;
*%        LENJSEL = 24;
./ ADD NAME=IEFVJSOL
* %      GOTO JSOLPLS;
* /*******************************************************************/
* /*                                                                 */
* /* STATUS --                                                       */
* /*    RELEASE OS/VS2 RELEASE 4, MODIFICATION LEVEL 00              */
* /*                                                                 */
* /* FUNCTION --                                                     */
* /*    DEFINE THE STRUCTURE AND PROPER USE OF THE JOB SCHEDULING    */
* /*    OPTIONS LIST (JSOL)                                          */
* /*                                                                 */
* /* ENTRY POINTS --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* INPUT --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /* OUTPUT --                                                       */
* /*    DATA CONSTANTS (ASSEMBLER) OR DECLARATIONS OF THE VARIABLES  */
* /*    WHICH CONSTITUTE THE JSOL.                                   */
* /*                                                                 */
* /* EXTERNAL REFERENCES --                                          */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, NORMAL --                                                */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, ERROR --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* TABLE/WORK AREAS --                                             */
* /*         NONE                                                    */
* /*                                                                 */
* /* ATTRIBUTES --                                                   */
* /*         NOT APPLICABLE                                          */
* /*                                                                 */
* /* NOTES --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /*******************************************************************/
* /* START OF SPECIFICATIONS ****
*1MODULE-NAME = IEFVJSOL
*  2PROCESSOR = ASSEMBLER
**** END OF SPECIFICATIONS ***/
* /*******************************************************************/
         MACRO
&NAME    IEFVJSOL &PREFIX=JSOL /*
&NAME    DS   0D             ALIGN THE JSOL ON A DOUBLEWORD BOUNDARY
&PREFIX.LGTH DC AL2(&PREFIX.END-&PREFIX)    LENGTH OF THE JSOL
&PREFIX.FLAG DC   X'00'      FLAG BYTE
&PREFIX.NSYS EQU  X'80'           NO SYSTEM TASKS                Y02669
&PREFIX.RAC  EQU  X'40'      BYPASS RACINIT                    @Z40RPSQ
*            EQU  X'20'           RESERVED
*            EQU  X'10'           RESERVED
&PREFIX.SMS1 EQU  X'08'      SUPPRESS SYSTEM TASK CONTROL MESSAGES
*            EQU  X'04'           RESERVED
*            EQU  X'02'           RESERVED
*            EQU  X'01'           RESERVED
&PREFIX.OPTS DC AL1(0)       OPTIONS FOR THE JOB SCHEDULING SUBROUTINE
*                                                                 01012
&PREFIX.RCVY EQU X'80'       INDICATES ANY JOB REQUIRING ALLOCATION
*                            RECOVERY IS TO BE FAILED             01012
*            EQU X'40'            RESERVED
*            EQU X'20'            RESERVED
&PREFIX.ENQU EQU X'10'       INDICATES THE JOB IS TO BE FAILED IF THE
*                            DATA SETS WHICH ARE REQUIRED CANNOT BE
*                            OBTAINED IMMEDIATELY OR CANNOT BE OBTAINED
*                            AT ALL.                              01012
*            EQU  X'08'           RESERVED
*            EQU  X'04'           RESERVED
*            EQU  X'02'           RESERVED                        01018
*            EQU  X'01'           RESERVED                        01018
&PREFIX.RSV1 DC   F'0'            RESERVED
&PREFIX.DEST DC  CL8' '           DEFAULT USERID FOR SYSOUT      Y02664
*                                 DESTINATION                    Y02664
&PREFIX.TPR  DS CL24         TIOT PROLOGUE TO BE SUBSTITUTED FOR THE   *
                             PROLOGUE OF THE MODEL TIOT
         ORG  &PREFIX.TPR
&PREFIX.TJOB DC CL8' '       JOBNAME FIELD FOR TIOT PROLOGUE
&PREFIX.TSTE DC CL8' '       STEPNAME FIELD FOR TIOT PROLOGUE
&PREFIX.TPRO DC CL8' '       PROCSTEPNAME FIELD FOR TIOT PROLOGUE
&PREFIX.END EQU *            END OF JOB SCHEDULING OPTIONS LIST
         ORG  &PREFIX.LGTH
&PREFIX  DS   CL(&PREFIX.END-&PREFIX.LGTH)
         MEND
**/ %    JSOLPLS: ;
* /*******************************************************************/
* /*      DEFINE THE JOB SCHEDULING OPTIONS LIST                     */
* /*******************************************************************/
* DECLARE
* 1       IEFVJSOL BASED( JSOLPTR) BOUNDARY( DWORD),
*
*         /*    HALFWORD BINARY INTEGER FIELD PROVIDING THE LENGTH   */
*         /*    OF THE JSOL IN BYTES                                 */
*         2     JSOLLGTH FIXED(15),
*
*         /*    EIGHT-BIT BIT STRING FIELD                           */
*         2     JSOLFLAG BIT(8),
*
*               3 JSOLNSYS BIT(1),  /* NO SYSTEM TASKS        Y02669 */
*               3 JSOLRAC  BIT(1),  /* BYPASS RACINIT        @Z40RPSQ*/
*
*               3  *        BIT(2), /* RESERVED              @Z40RPSQ*/
*
*               /* BIT INDICATING THAT SYSTEM TASK CONTROL MESSAGES  */
*               /* ARE TO BE SUPPRESSED                              */
*               3  JSOLSMS1 BIT(1),
*
*               3  *        BIT(3), /* RESERVED                      */
*
*         /*    OPTIONS OF THE JOB SCHEDULING SUBROUTINE       01012 */
*         2     JSOLOPTS BIT(8),
*
*         /*    INDICATES ANY JOB WHICH ALLOCATION RECOVERY IN       */
*         /*       ORDER TO BE RUN IS TO BE FAILED.            01012 */
*               3 JSOLRCVY BIT(1),
*
*               3 *        BIT(2),  /* RESERVED                      */
*
*         /*    JOBS TO BE SCHEDULED BY THE JOB SCHEDULING SUBROUTINE*/
*         /*       ARE TO BE FAILED IF THE DATA SETS WHICH THEY      */
*         /*       REQUIRE CANNOT BE OBTAINED IMMEDIATELY      01012 */
*               3 JSOLENQU  BIT(1),
*
*               3 *         BIT(4), /* RESERVED                      */
*
*         2     *       FIXED(31),  /* RESERVED                      */
*
*         2     JSOLDEST CHAR(8), /* DEFAULT USER ID FOR       Y02664
*                                    SYSOUT DESTINATION        Y02664*/
*
*         /*    TIOT PROLOGUE FIELD                                  */
*         2     JSOLTPR CHARACTER(24),
*
*               /*   TIOT PROLOGUE JOBNAME FIELD                     */
*               3    JSOLTJOB CHARACTER(8),
*
*               /*   TIOT PROLOGUE STEPNAME FIELD                    */
*               3    JSOLTSTE CHARACTER(8),
*
*               /* TIOT PROLOGUE PROCSTEPNAME FIELD   */
*               3  JSOLTPRO CHARACTER(8);
*%        DECLARE
*         LENJSOL FIXED;
*%        LENJSOL = 40;
./ ADD NAME=IEFVJSWA
*        % GO TO JSWAPLS;         /*
         MACRO
         IEFVJSWA
*
*  JOB SCHEDULING WORK AREA (JSWA) -
*    USED AS A PARAMETER AREA BY THE JOB SCHEDULING SUBROUTINE
*
JSWA     DSECT
JSWABEGN EQU   *
JSWALGTH DC    AL2(JSWASIZE)      JSWA LENGTH
JSWAOPT  DS    X                  OPTIONS FLAGS
JSWASUBS EQU   X'80'              JOB SCHEDULING SUBROUTINE IS   Y02668
*                                 PROCESSING A START SUBSYSTEM   Y02668
JSWASMS1 EQU   X'40'              SUPPRESS STARTED TASK CONTROL
*                                 MESSAGES
*        EQU   X'20'              RESERVED
JSWARSV1 EQU   X'1F'              RESERVED FLAGS
JSWAJSSR DS    X                  JSS RESOURCES                  Y02653
JSWAJCLS EQU   X'80'              JCLS EXISTS                    Y02653
JSWASWA  EQU   X'40'              STC SWA EXISTS                 Y02653
JSWAIEL  EQU   X'20'              IEL EXISTS                     Y02653
JSWASSOB EQU   X'10'              SSOB EXISTS                    Y02653
JSWAJSOL EQU   X'08'              JSOL EXISTS                    Y02653
*        EQU   X'04'              RESERVED
*        EQU   X'02'              RESERVED
*        EQU   X'01'              RESERVED
JSWAJSEL DS    A                  JOB SCHEDULING ENTRANCE LIST
*                                 (JSEL) POINTER
JSWATIOT DS    A                  CURRENT TIOT POINTER           Y02670
JSWAJSCB DS    A                  CURRENT JSCB POINTER           Y02670
JSWAIELP DS    A                  IEL POINTER                    Y02653
JSWASOBP DS    A                  SSOB POINTER                   Y02653
JSWAB601 DS    A                  IEESB601 PARM AREA POINTER     Y02670
JSWAPARM DS    A                  JSS ESTAE PARM AREA POINTER    Y02653
JSWASWSP DS    X                  SWA SUBPOOL NUMBER             Y02668
JSWARSV2 DS    3X                 RESERVED
JSWASIBP DS    A                  SSIB PTR FROM JSCB OF CALLER OF JSS
JSWASIZE EQU   *-JSWABEGN         JSWA SIZE
         MEND                     */
*  % JSWAPLS:;
*  /*                                                                */
*  /*  JOB SCHEDULING WORK AREA (JSWA) -                             */
*  /*    USED AS A PARAMETER AREA BY THE JOB SCHEDULING SUBROUTINE   */
*  /*                                                                */
*   DCL  1     JSWA      BASED(JSWAPTR),
*          2   JSWALGTH  FIXED(15), /* JSWA LENGTH                   */
*          2   JSWAOPT   BIT(8),    /* OPTIONS FLAGS                 */
*            3 JSWASUBS  BIT(1),    /* JSS IS PROCESSING A
*                                      START SUBSYSTEM         Y02668*/
*            3 JSWASMS1  BIT(1),    /* SUPPRESS STARTED TASK CONTROL
*                                      MESSAGES                      */
*            3 *         BIT(6),    /* RESERVED FLAGS                */
*          2   JSWAJSSR  BIT(8),    /* JSS RESOURCES           Y02653*/
*            3 JSWAJCLS  BIT(1),    /* JCLS EXISTS             Y02653*/
*            3 JSWASWA   BIT(1),    /* STC SWA EXISTS          Y02653*/
*            3 JSWAIEL   BIT(1),    /* IEL EXISTS              Y02653*/
*            3 JSWASSOB  BIT(1),    /* SSOB EXISTS             Y02653*/
*            3 JSWAJSOL  BIT(1),    /* JSOL EXISTS             Y02653*/
*            3 *         BIT(3),    /* RESERVED                      */
*          2   JSWAJSEL  PTR(31),   /* JOB SCHEDULING ENTRANCE LIST
*                                      (JSEL) POINTER                */
*          2   JSWATIOT  PTR(31),   /* CURRENT TIOT POINTER    Y02670*/
*          2   JSWAJSCB  PTR(31),   /* CURRENT JSCB POINTER    Y02670*/
*          2   JSWAIELP  PTR(31),   /* IEL POINTER             Y02653*/
*          2   JSWASOBP  PTR(31),   /* SSOB POINTER            Y02653*/
*          2   JSWAB601  PTR(31),   /* IEESB601 PARM AREA PTR  Y02670*/
*          2   JSWAPARM  PTR(31),   /* JSS ESTAE PARM AREA PTR Y02653*/
*          2   *         FIXED(31),
*            3 JSWASWSP  PTR(8),   /* SWA SUBPOOL NUMBER       Y02668*/
*            3 *         FIXED(24),/* RESERVED                       */
*          2   JSWASIBP  PTR(31)   /* SSIB PTR FROM JSCB OF
                                      CALLER OF JSS                 */;
./ ADD NAME=IEFVJSXL
*%       GOTO JSXLPLS;
* /*******************************************************************/
* /*                                                                 */
* /* MACRO NAME = IEFVJSXL                                           */
* /*                                                                 */
* /* STATUS --                                                       */
* /*    OS/VS2 RELEASE 2, MODIFICATION LEVEL 00                      */
* /*                                                                 */
* /* FUNCTION --                                                     */
* /*    DEFINE THE JOB SCHEDULING EXIT LIST (JSXL) WHICH SPECIFIES   */
* /*    OPTIONAL EXITS TO BE GIVEN CONTROL DURING JOB SCHEDULING     */
* /*    SUBROUTINE PROCESSING                                        */
* /*                                                                 */
* /* ENTRY POINTS --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* INPUT --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /* OUTPUT --                                                       */
* /*    DATA CONSTANTS (ASSEMBLER) OR DECLARATIONS (PLS) DEFINING    */
* /*    THE JSXL                                                     */
* /*                                                                 */
* /* EXTERNAL REFERENCES --                                          */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, NORMAL --                                                */
* /*         NONE                                                    */
* /*                                                                 */
* /* EXITS, ERROR --                                                 */
* /*         NONE                                                    */
* /*                                                                 */
* /* TABLE/WORK AREAS --                                             */
* /*         NONE                                                    */
* /*                                                                 */
* /* ATTRIBUTES --                                                   */
* /*         NOT APPLICABLE                                          */
* /*                                                                 */
* /* NOTES --                                                        */
* /*    NONE                                                         */
* /*                                                                 */
* /*******************************************************************/
         MACRO
&NAME    IEFVJSXL &PREFIX,&COMM /*
         LCLA  &A,&B,&C,&D,&LENJSXL
         LCLB  &POST,&PRINI,&PTINI,&PRFRE                       YM00047
         LCLC  &P,&PL,&LINKAGE,&ROUTINE,&F1,&F2,&F3,&F4,&F5,&F6,&F7,&F8
         LCLC  &G1,&G2,&G3,&G4,&G5,&G6,&G7,&G8,&COMMUN
&NAME    DS    0D                 ALIGN JSXL
&LENJSXL SETA  8*N'&SYSLIST-8     COMPUTE LENGTH OF THIS JSXL
&P       SETC  'JSX'              ASSUME STANDARD PREFIX FOR LABELS
         AIF   (T'&PREFIX EQ 'O').JSX0010  TEST FOR SUPPLIED PREFIX
&P       SETC  '&PREFIX'          USE SUPPLIED PREFIX IF PRESENT
.JSX0010 ANOP
&PL      SETC  '&P.L'             SET EXTENDED PREFIX
&PL.BEGN EQU   *                                                 Y02939
&PL      DS    CL&LENJSXL         JOB SCHEDULING EXIT LIST (JSXL)
         ORG   &PL
&PL.LGTH DC    AL2(&PL.SIZE)      LENGTH
&PL.RCOD DC    AL1(0)             RETURN CODE
&PL.RNRM    EQU  X'00'               NORMAL COMPLETION
&PL.RAUT    EQU  X'04'               UNAUTHORIZED COMBINATION OF       *
                                     PROGRAMS REFERENCED
&PL.PERR EQU   36                 PROGRAM ERROR                  Y02668
&PL.RCXT DC    AL1(0)             ORIGIN OF RETURN CODE          Y02668
*                                 IN JSXLRCOD                    Y02668
*  RETURN CODE ORIGIN VALUES (JSXLRCXT)                          Y02668
*    SAME ORIGIN VALUES ARE DEFINED IN THE IEL MAPPING           Y02668
&PL.JSS  EQU   0                  JOB SCHEDULING SUBROUTINE      Y02668
&PL.RI   EQU   2                  CONVERTER/SWA CREATE           Y02668
&PL.INIT EQU   3                  INITIATOR
&PL.SSJS EQU   4                  SUBSYSTEM JOB SELECT           Y02668
&PL.SSI  EQU   5                  SUBSYSTEM INTERFACE            Y02668
&PL.SUBS EQU   6                  SUBSYSTEM                      Y02668
*        EQU   7-255              RESERVED                       Y02668
&COMMUN  SETC  '0'                ASSUME STANDARD VALUE FOR            *
                                  COMMUNICATIONS POINTER
         AIF  (T'&COMM EQ 'O').JSX0020 TEST FOR SUPPLIED COMMUNICATIONS*
                             POINTER
&COMMUN  SETC '&COMM'   USE SUPPLIED COMMUNICATIONS POINTER IF PRESENT
.JSX0020 ANOP
&PL.COMM DC   A(&COMMUN)     COMMUNICATIONS POINTER BETWEEN EXIT       *
                             ROUTINES
&PL.LDEF DS   1D             FIRST ELEMENT IN ARRAY OF EXIT DEFINITIONS
         ORG  &PL.LDEF
&PL.LINK DS   XL1            LINKAGE INFORMATION
&P.LNK   EQU  X'80'          CODE FOR LINKAGE TO NAME
&P.XCTL  EQU  X'C0'          CODE FOR XCTL TO NAME
&P.BR    EQU  X'40'          CODE FOR BRANCH TO ADDRESS
&P.NULL  EQU  X'00'          CODE FOR NO EXIT SPECIFICATION
&PL.ID   DS   XL1            EXIT IDENTIFICATION
&P.POST  EQU  X'80'          CODE FOR JOB SCHEDULING ROUTINE           *
                             POST-PROCESSING EXIT ROUTINE
&P.PRINI EQU  X'40'          CODE FOR INITIATOR PRE-INVOCATION EXIT    *
                             ROUTINE
&P.PTINI EQU  X'20'          CODE FOR INITIATOR POST-INVOCATION EXIT   *
                             ROUTINE
&P.PRFRE EQU  X'10'          INITIATOR PRE-FREEPART EXIT        YM00047
*        EQU  X'08'          RESERVED                            Y02939
*        EQU  X'04'          RESERVED. MUST BE ZERO TO ASSURE
*                            COMPATIBILITY WITH FUTURE EXTENSIONS
*                            TO THE EXIT LIST FACILITY.
*        EQU  X'02'          RESERVED. MUST BE ZERO TO ASSURE
*                            COMPATIBILITY WITH FUTURE EXTENSIONS
*                            TO THE EXIT LIST FACILITY.
*        EQU  X'01'          RESERVED. MUST BE ZERO TO ASSURE
*                            COMPATIBILITY WITH FUTURE EXTENSIONS
*                            TO THE EXIT LIST FACILITY.
&PL.DATA DS   CL6
.**********************************************************************
.*       GENERATE AN INITIALIZED EXIT LIST IMAGE IF REQUESTED         *
.**********************************************************************
         ORG  &PL.LDEF
         AIF  (N'&SYSLIST LT 3).J30 BY-PASS INITIALIZATION IF NOT      *
                        REQUESTED
&A       SETA 3         START SCAN AT THE THIRD POSITIONAL OPERAND
&C       SETA 1         START WITH THE FIRST POSITIONAL SUBOPERAND
.J1      ANOP
&LINKAGE SETC '&P.NULL' ASSUME NO LINKAGE HAS BEEN SPECIFIED
&B       SETA 3
&D       SETA 1
.*  MACRO VARIABLES USED TO GENERATE BYTE FOR EXIT TYPE
&F1      SETC ''
&F2      SETC ''
&F3      SETC ''
&F4      SETC ''
&F5      SETC ''
&F6      SETC ''
&F7      SETC ''
&F8      SETC ''
&G1      SETC ''
&G2      SETC ''
&G3      SETC ''
&G4      SETC ''
&G5      SETC ''
&G6      SETC ''
&G7      SETC ''
&G8      SETC ''
.*
.*  -IF A JSXL EXIT HAS BEEN SPECIFIED, DETERMINE
.*   THE TYPE OF EXIT LINKAGE.
.*  -GENERATE THE EXIT LINKAGE BYTE
.*
         AIF  (N'&SYSLIST(&A) LT 1).J6
         AIF  ('&SYSLIST(&A,1)' NE '').J2
         AGO  .J6
.J2      AIF  ('&SYSLIST(&A,1)' NE 'CALL').J3
&LINKAGE SETC '&P.BR'
         AGO  .J6
.J3      AIF  ('&SYSLIST(&A,1)' NE 'LINK').J4
&LINKAGE SETC '&P.LNK'
         AGO  .J6
.J4      AIF  ('&SYSLIST(&A,1)' NE 'XCTL').J5
&LINKAGE SETC '&P.XCTL'
         AGO  .J6
.J5      MNOTE *,'INVALID LINKAGE FOR EXIT(&C) IN LIST'
.J6      ANOP
&P.X&C   DC   AL1(&LINKAGE)       SPECIFY EXIT LINKAGE
.*
.*  -DETERMINE WHICH EXIT TYPE HAS BEEN SPECIFIED.
.*  -GENERATE EXIT TYPE BYTE.
.*
.J7      AIF  (N'&SYSLIST(&A) LT &B).J25
         AIF  ('&SYSLIST(&A,&B)' EQ '').J25
         AIF  ('&SYSLIST(&A,&B)' NE 'POST').J9
         AIF  (&POST EQ 0).J8
         MNOTE *,'POST-PROCESSING EXIT SPECIFIED BEFORE -- PROBABLE ERR*
               OR'
.J8      ANOP
&POST    SETB 1
&F1      SETC '+'
&G1      SETC '&P.POST'
         AGO  .J24
.J9      AIF  ('&SYSLIST(&A,&B)' NE 'PRINI').J11
         AIF  (&PRINI EQ 0).J10
         MNOTE *,'PRE-INVOCATION EXIT SPECIFIED BEFORE -- PROBABLE ERRO*
               R'
.J10     ANOP
&PRINI   SETB 1
&F2      SETC '+'
&G2      SETC '&P.PRINI'
         AGO  .J24
.J11     AIF  ('&SYSLIST(&A,&B)' NE 'PTINI').J13
         AIF  (&PTINI EQ 0).J12
         MNOTE *,'POST-INVOCATION EXIT SPECIFIED BEFORE -- PROBABLE ERR*
               OR'
.J12     ANOP
&PTINI   SETB 1
&F3      SETC '+'
&G3      SETC '&P.PTINI'
         AGO  .J24
.J13     ANOP                                                   YM00047
         AIF   ('&SYSLIST(&A,&B)' NE 'PRFRE').J17               YM00047
         AIF   (&PRFRE EQ 0).J14                                YM00047
         MNOTE *,'PRE-FREEPART EXIT SPECIFIED BEFORE -- PROBABLE ERROR'
.J14     ANOP                                                   YM00047
&PRFRE   SETB  1                                                YM00047
&F4      SETC  '+'                                              YM00047
&G4      SETC  '&P.PRFRE'                                       YM00047
         AGO   .J24                                             YM00047
.J17     ANOP                                                     M0759
.J23     MNOTE *,'EXIT CODE(&D) INVALID FOR EXIT(&C) IN LIST'
.J24     ANOP
&B       SETA &B+1
&D       SETA &D+1
         AGO  .J7
.J25     DC   AL1(0&F1&G1&F2&G2&F3&G3&F4&G4&F5&G5&F6&G6&F7&G7&F8&G8)   *
                             SPECIFY EXIT CODE
         AIF  ('&LINKAGE' NE '&P.NULL' AND                             *
               '&LINKAGE' NE '&P.BR').J27
&ROUTINE SETC '0'
         AIF  (N'&SYSLIST(&A) LT 2).J26
         AIF  ('&SYSLIST(&A,2)' EQ '').J26
&ROUTINE SETC '&SYSLIST(&A,2)'
.J26     DC   XL2'0000'
         DC   A(&ROUTINE)    ADDRESS OF EXIT ROUTINE
         AGO  .J29
.J27     ANOP
&ROUTINE SETC ''
         AIF  (N'&SYSLIST(&A) LT 2).J28
&ROUTINE SETC '&SYSLIST(&A,2)'
.J28     DC   CL6'&ROUTINE ' NAME OF EXIT ROUTINE
.J29     ANOP
&A       SETA &A+1
&C       SETA &C+1
         AIF  (&A LE N'&SYSLIST).J1
.J30     ANOP
&PL.SIZE EQU   *-&PL.BEGN         JSXL SIZE                      Y02939
         MEND
**/ %    JSXLPLS: ;
* /********************************************************************
*         DEFINE THE JOB SCHEDULING EXIT LIST
* ********************************************************************/
* DECLARE
* 1       JSXL BASED(JSXLPTR) BOUNDARY(WORD),
*      2     JSXLHDR,
*         3     JSXLLGTH FIXED(15),  /* LENGTH OF JSXL               */
*         3     JSXLRCOD POINTER(8), /* RETURN CODE                  */
*%     DECLARE
*      JSXLRNRM FIXED,
*      JSXLRAUT FIXED,
*      JSXLPERR FIXED;            /*                           Y02668*/
*%     JSXLRNRM = 0;              /* NORMAL COMPLETION               */
*%     JSXLRAUT = 4;              /* UNAUTHORIZED COMBINATION OF
*                                    PROGRAMS REFERENCED             */
*%     JSXLPERR = 36;             /* PROGRAM ERROR             Y02668*/
*         3     JSXLRCXT PTR(8),  /*ORIGIN OF RETURN CODE IN JSXLRCOD*/
*         3     JSXLCOMM PTR(32), /*EXIT ROUTINES COMMUNICATION AREA */
*         /***********************************************************/
*       2     JSXLLDEF(256),         /* ARRAY OF EXIT DEFINITIONS    */
*               /******************************************************
*                 DEFINITION OF LINKAGE TO BE USED - THE FOLLOWING
*                 VALUES MAY BE USED IN JSXLLINK:
*                   JSXNULL - NO EXIT SPECIFICATION
*                   JSXBR   - BRANCH TO ADDRESS
*                   JSXLNK  - LINK TO NAME
*                   JSXXCTL - XCTL TO NAME
*               ******************************************************/
*               3  JSXLLINK PTR(8),   /* METHOD OF EXIT              */
*               3  JSXLID BIT(8),     /* EXIT IDENTIFIER             */
*                  4  JSXPOST BIT(1), /* POST-PROCESSING EXIT  Y02939*/
*                  4  JSXPRINI BIT(1),/* PRE-INVOCATION EXIT   Y02939*/
*                  4  JSXPTINI BIT(1),/* POST-INVOCATION EXIT  Y02939*/
*                  4  JSXPRFRE BIT(1),/* PRE-FREEPART EXIT   @YM00047*/
*                  4  * BIT(4),       /* RESERVED              Y02939*/
*               /******************************************************
*                  LINKAGE DATA -- THE FOLLOWING VALUES MAY BE USED IN
*                  JSXLDATA:
*                  1. IF THE SPECIFIED LINKAGE IS 'LINK' OR 'XCTL',
*                     THEN THE 6-BYTE EBCDIC NAME OF THE ROUTINE TO BE
*                     GIVEN CONTROL SHOULD BE PLACED IN THIS FIELD,
*                     LEFT-JUSTIFIED AND PADDED WITH BLANKS IF
*                     NECESSARY.
*                  2. IF THE SPECIFIED LINKAGE IS A 'BRANCH', THEN THE
*                     ADDRESS OF THE ROUTINE TO RECEIVE CONTROL SHOULD
*                     BE PLACED IN THIS FIELD, AND THE HIGH-ORDER
*                     BYTES OF THIS FIELD SHOULD BE SET TO HEXIDECIMAL
*                     ZEROS.
*               ******************************************************/
*               3  JSXLDATA CHARACTER(6);
*%        DECLARE   /* JSXLLINK CODE INDICATING XCTL LINKAGE */
*         JSXXCTL FIXED;
*%        JSXXCTL = 192;
*%        DECLARE  /* JSXLLINK CODE INDICATING LINK LINKAGE */
*         JSXLNK FIXED;
*%        JSXLNK = 128;
*%        DECLARE  /* JSXLLINK CODE INDICATING CALL LINKAGE */
*         JSXBR FIXED;
*%        JSXBR = 64;
*%        DECLARE  /* JSXLLINK CODE INDICATING NO LINKAGE */
*         JSXNULL FIXED;
*%        JSXNULL = 0;
*%; /*  RETURN CODE ORIGIN VALUES (JSXLRCXT)                   Y02668*/
*%; /*    SAME ORIGIN VALUES ARE DEFINED IN THE IEL MAPPING    Y02668*/
*%  DCL  JSXLJSS  FIXED;          /* JOB SCHEDULING SUBROUTINE Y02668*/
*%       JSXLJSS  = 0;
*%  DCL  JSXLRI   FIXED;          /* CONVERTER/SWA CREATE      Y02668*/
*%       JSXLRI   = 2;
*%  DCL  JSXLINIT FIXED;          /* INITIATOR                 Y02668*/
*%       JSXLINIT = 3;
*%  DCL  JSXLSSJS FIXED;          /* SUBSYSTEM JOB SELECT      Y02668*/
*%       JSXLSSJS = 4;            /*                           Y02668*/
*%  DCL  JSXLSSI  FIXED;          /* SUBSYSTEM INTERFACE       Y02668*/
*%       JSXLSSI  = 5;            /*                           Y02668*/
*%  DCL  JSXLSUBS FIXED;          /* SUBSYSTEM                 Y02668*/
*%       JSXLSUBS = 6;            /*                           Y02668*/
./ ADD NAME=IEFVMAWA
* % GOTO AWAPRO;   /*                                            @H1A
         MACRO
         IEFVMAWA
.*/ %AWAPRO: ;     /*                                            @H1A*/
*/********************************************************************/
*/* MODULE NAME = IEFVMAWA                                       @H1A*/
*/*                                                                  */
*/* DESCRIPTIVE NAME = AUXILIARY WORK AREA                       @H1A*/
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP., 1982               @H1A*/
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY                */
*/*             OF IBM, REFER TO COPYRIGHT INSTRUCTIONS              */
*/*             FORM NUMBER G120-2083                                */
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1328                                      @H1A*/
*/*                                                                  */
*/* MODULE TYPE = MACRO                                          @H1A*/
*/*                                                                  */
*/* FUNCTION =                                                   @H1A*/
*/*             THE FOLLOWING INFORMATION IS USED BY THE             */
*/*             CONVERTER/INTERPRETER ROUTINES AND IF REQUIRED       */
*/*             MUST APPEAR AT THE BEGINNING OF THE LOCAL WORK       */
*/*             AREA IMMEDIATELY FOLLOWING THE LOCAL WORK AREA       */
*/*             LENGTH. THERE ARE TWO ALTERNATE MAPPINGS FOR         */
*/*             MUTUALLY-EXCLUSIVE AUXILIARY ROUTINES. THE           */
*/*             FIRST IS FOR THE MESSAGE ROUTINE AND THE SECOND      */
*/*             FOR THE GET PARAMETER AND TEST & STORE ROUTINES      */
*/*                                                                  */
*/*                WARNING: ANY LENGTHENING OF THIS                  */
*/*                         MACRO REQUIRES A RECOMPILATION           */
*/*                OF ALMOST ALL CONVERTER/INTERPRETER MODULES.      */
*/*                                                                  */
*/* INVOCATION =                                                 @H1A*/
*/*                                                                  */
*/*           PL/S - DCL AWAPTR PTR(31)                          @H1A*/
*/*                  %INCLUDE SYSLIB(IEFVMAWA)                   @H1A*/
*/*                                                                  */
*/*           BAL  - DSECT MUST HAVE BEEN PREVIOUSLY SPECIFIED   @H1A*/
*/*                                                                  */
*/* CHANGE ACTIVITY = H1, H2                                     @H2A*/
*/*  $H1= EXTJCL JBB1328 810315 PD2R: SUPPORT FOR EXTENDED JCL   @H1A*/
*/*  $H2= EXTJCL JBB1328 811202 PD2N: SUPPORT FOR EXTENDED JCL   @H2A*/
*/*                                                                  */
*/********************************************************************/
*/* A - MADE BILINGUAL FOR USE WITH NEW INTERPRETER MODULES      @H1A*/
*/* A - ADD FIELD TCLEANSA TO TEMPORARILY SAVE CLEAN UP ROUTINE  @H2A*/
*/*     ADDRESS                                                  @H2A*/
*  %GOTO AWAPLS;             /*                                  @H1A
QLINKWA  DS    CL40                WORK AREA FOR Q LINKAGE ROUTINE
DICTDD   EQU   QLINKWA+26        AREA USED TO BUILD DICT. ENTRY YM01882
         ORG   QLINKWA                                         @G29AN2E
SUBSYSWA DS    0CL40               USED BY SUBSYS KYWD RTNE    @G29AN2E
SSEPA    DS    4F                  EXTERNAL PARM AREA          @G29AN2E
*                                  THE EXTERNAL PARM AREA IS   @G29AN2E
*                                  MAPPED BY IEFZB505          @G29AN2E
LOCPLIST DS    0CL8                PARM LIST FOR SWA LOCATE    @G29AN2E
SSEPAPTR DS    F                   PTR TO EPA PTR              @G29AN2E
LOCFNCP  DS    F                   PTR TO FUNCTION BYTE        @G29AN2E
LOCFNCD  DS    CL2                 FUNCTION BYTE FOR SWA LOCATE@G29AN2E
SSPRMNO  DS    CL1                 NUMBER OF SSPARMS           @G29AN2E
SSNML    DS    CL1                 LENGTH OF SSNAME            @G29AN2E
SSNMPTR  DS    F                   PTR TO SSNAME IN INT. TEXT  @G29AN2E
SSPRMPTR DS    F                   PTR TO FIRST LEN-SSPARM PAIR@G29AN2E
*                                  IN INTERNAL TEXT            @G29AN2E
SSEPAP   DS    F                   EPA PTR                     @G29AN2E
MSGSEC   DS    CL1                 PRIMARY ERROR MSG NUMBER
MSGKEY   DS    CL1                 SECONDARY ERROR MSG NUMBER
         DS    0D                       ALLIGNMENT.
MSGWA    DS    CL128               WORK AREA FOR MESSAGE ROUTINE
         SPACE 2
         ORG   MSGWA
***********************************************************************
*                WORK AREA FOR GP AND T&S ROUTINES                    *
***********************************************************************
TRR1     DS    F                        TTR OF FIRST/NEXT SCAN BUFFER
TBEGPX   DS    F                        PTR TO START OF INTERNAL TEXT
TCLEANUP DS    F                        POINTER TO CLEANUP RETURN
TBRANCH  DS    F                        POINTER TO BRANCHING TABLE
TBASE    DS    CL1                      BASE KEY
TSUBPARM DS    CL1                      SUBPARAMETER FLAG FIELD
TSP1     DS    CL1                      RESERVED
TSP2     DS    CL1                      RESERVED
TKEYPX   DS    F                        POINTER TO CURRENT KEY
TNUMPX   DS    F                        PTR TO CURRENT NBR PARAMETERS
TLEN     DS    F                        CURRENT LENGTH
TLENPX   DS    F                        POINTER TO CURRENT LENGTH
TPDTSAVE DS    F                        GET SAVE PDT AREA
TNUM     DS    F                        TOTAL NMBR PARAMTRS THIS KEYWRD
TCT      DS    F                        NUMBER OF PARAMETERS PROCESSED
TNUM1    DS    F                        TOTAL NUMBER OF SUBPARAMETERS
TCT1     DS    F                        NMBR OF SUBPARAMETERS PROCESSED
TPDTP    DS    F                        PTR TO PDT FOR THIS/LAST KEY
TCPDTP   DS    F                        PTR TO CURRENT POSITION IN PDT
TWORK    DS    D                        INTERNAL GP/T&S WORK AREA
TCLEANSA DS    0F                       AREA TO TEMPORARILY SAVE  @H2A
*                                       CLEAN UP ROUTINE ADDRESS  @H2A
TSP3     DS    F                        WORK SPACE                @H2C
         EJECT
***********************************************************************
*                WORK AREA FOR SEARCHING DICTIONARY.                  *
***********************************************************************
SRCHSW1  DS    CL1                   SWITCHES                  @ZM30190
SRCHF1   EQU   128                      BIT0
*                                          0 = MATCH OR ERROR.
*                                          1 = MATCH W OR W/O QUALIFIER
SRCHF2   EQU   64                       BIT 1
*                                          0 = DDNAME SEARCH.
*                                          1 = SCT SEARCH.
SRCHF3   EQU   32                       BIT 2 - RETRY ON NOT FOUND.
SRCHF4   EQU   16                       BIT 3 - SEARCH FROM RELPROC.
SRCHF5   EQU   8                       BIT 4 - IF ON MEANS THAT  A37550
*                                      A SECOND SUBSTITUTION JCL A37550
*                                      MESSAGE IS NEEDED.USED BY A37550
*                                      MODULE IEFVFB.            A37550
SRCHF6   EQU   4                       BIT 5 - IF ON INDICATES @ZA26370
*                                      THAT DSN KEY FOUND ON   @ZA26370
*                                      DD STATEMENT.  USED BY  @ZA26370
*                                      IEFVFA TO DETERMINE IF  @ZA26370
*                                      DUMMY HAS BEEN OVER-    @ZA26370
*                                      RIDDEN BY DSN. IF IT    @ZA26370
*                                      HAS, DUMMY BIT IN TEXT  @ZA26370
*                                      PREFIX IS TURNED OFF.   @ZA26370
SRCHF7   EQU   2                       BIT 6 - RESERVED          A32730
SRCHF8   EQU   1                       BIT 7                     A32730
*                                      0 = ENTER SYMBOLIC TEXT   A32730
*                                      1 = DO NOT ENTER TEXT     A32730
*                                      BIT 7 SET BY IEFVFB TO    A32730
*                                      TELL IEFVFA NOT TO ENTER  A32730
*                                      SYMBOLIC TEXT INTO THE    A32730
*                                      INTERNAL TEXT BUFFER.     A32730
SRCHCLR  EQU   255              SUM OF SRCHF1 THROUGH SRCHF8   @ZM30190
*                                                                A32730
SRCHTTR  DS    CL3                 TTR OF DICT TO BE GOTTEN.
SRCHREL  DS    2F                  SAVE SPACE FOR RELPROC/RELPGM.
SRCHL1   DS    F                   LEVEL 1 RE SAVE AREA.
SRCHL2   DS    F                   LEVEL 2 RE SAVE AREA.
SRCHL3   DS    3F                  LEVEL 3 RE,RF & R0 SAVE AREA.
SRCHNBR  DS    CL1                 SLOT FOR NBR OF PARAMETERS.
         ORG   MSGWA+128
ENDAWA   DS    0D
*
*          ********************************************************
*          *                                                      *
*          *              END OF AUXILIARY WORK AREA              *
*          *                                                      *
*          ********************************************************
         MEND                */
*  %AWAPLS: ;                /*                                  @H1A*/
*/*                                                                  */
* DCL 1 VMAWA BASED(AWAPTR), /* AUXILIARY WORK AREA              @H1A*/
*      2 QLINKWA,            /* WORK AREA FOR Q LINKAGE ROUTINE  @H1A*/
*       3 * CHAR(26),        /* FILLER                           @H1A*/
*       3 DICTDD CHAR(14),   /* AREA USED FOR DICTIONARY ENTRY   @H1A*/
*      2 MSGSEC  FIXED(8),   /* PRIMARY ERROR MSG NUMBER         @H1A*/
*      2 MSGKEY  FIXED(8),   /* SECONDARY ERROR MSG NUMBER       @H1A*/
*      2 *       CHAR(6),    /* FILLER FOR ALIGNMENT             @H1A*/
*      2 MSGWA   CHAR(128);  /* WORK AREA FOR MESSAGE ROUTINE    @H1A*/
*/********************************************************************/
*/* THE FOLLOWING ALTERNATIVE MAPPING PUTS TO USE THE STORAGE    @H1A*/
*/* OBTAINED FOR QLINKWA AS A WORK AREA FOR THE SUBSYS KEYWORD   @H1A*/
*/* ROUTINE                                                      @H1A*/
*/********************************************************************/
*   DCL 1 SUBSYSWA DEFINED(QLINKWA), /* USED BY SUBSYS KYWD RTNE @H1A*/
*        2 SSEPA   CHAR(16),         /* EXTERNAL PARM AREA
*                                       THE EXTERNAL PARM AREA IS
*                                       MAPPED BY IEFZB505       @H1A*/
*        2 LOCPLIST,                 /* PARM LIST FOR SWA LOCATE @H1A*/
*         3 SSEPAPTR PTR(31) BDY(BYTE),        /* PTR TO EPA PTR @H1A*/
*         3 LOCFNCP PTR(31) BDY(BYTE),   /* PTR TO FUNCTION BYTE @H1A*/
*         3 LOCFNCD CHAR(2),    /* FUNCTION BYTE FOR SWA LOCATE  @H1A*/
*         3 SSPRNMO FIXED(8),        /* NUMBER OF SSPARMS        @H1A*/
*         3 SSNML FIXED(8),          /* LENGTH OF NAME LIST      @H1A*/
*         3 SSNMPTR PTR(31) BDY(BYTE),  /*PTR SSNAME IN INT.TEXT @H1A*/
*         3 SSPRMPTR PTR(31) BDY(BYTE), /* PTR TO FIRST LEN-SSPARM PAIR
*                                       IN INTERNAL TEXT         @H1A*/
*         3 SSEPAP PTR(31) BDY(BYTE);          /* EPA PTR        @H1A*/
*/*                                                                  */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*/* THE FOLLOWING ALTERNATIVE MAPPING PUTS TO USE THE STORAGE    @H1A*/
*/* OBTAINED FOR MSGWA AS WORK AREAS FOR THE GET_PARAMETER AND   @H1A*/
*/* TEST_AND_STORE ROUTINES IN THE INTERPRETER                   @H1A*/
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
* DCL 1 INTERPWA DEFINED(MSGWA), /* GET-PARAMETER AND
*                                   TEST&STORE WORK AREA         @H1A*/
*      2 TRR1 FIXED(32) BDY(BYTE), /* TTR OF FIRST/NEXT SCAN BUFFER
*                                                                @H1A*/
*      2 TBEGPX PTR(31) BDY(BYTE), /*  PTR TO STRT OF INT TEXT   @H1A*/
*      2 TCLEANUP PTR(31) BDY(BYTE),/*  POINTER TO CLENUP RETURN @H1A*/
*      2 TBRANCH  PTR(31) BDY(BYTE),/*  POINTER TO BRANCH TABLE  @H1A*/
*      2 TBASE    FIXED(8),  /*  BASE KEY                        @H1A*/
*      2 TSUBPARM BIT(8),    /*  SUBPARAMETER FLAG FIELD         @H1A*/
*      2 TSP1     CHAR(1),   /*  RESERVED                        @H1A*/
*      2 TSP2     CHAR(1),   /*  RESERVED                        @H1A*/
*      2 TKEYPX   PTR(31) BDY(BYTE), /*  POINTER TO CURRENT KEY  @H1A*/
*      2 TNUMPX   PTR(31) BDY(BYTE), /* PTR TO CURRENT NBR PARMS @H1A*/
*      2 TLEN     FIXED(32) BDY(BYTE),   /*  CURRENT LENGTH      @H1A*/
*      2 TLENPX   PTR(31) BDY(BYTE),  /*  PTR TO CURRENT LENGTH  @H1A*/
*      2 TPDTSAVE PTR(31) BDY(BYTE),    /* GET SAVE PDT AREA     @H1A*/
*      2 TNUM     FIXED(32) BDY(BYTE), /* TOT NR PARMS FOR KYWRD @H1A*/
*      2 TCT      FIXED(32) BDY(BYTE),   /*  NR PARMS PROCESSED  @H1A*/
*      2 TNUM1    FIXED(32) BDY(BYTE),  /*  TOT NR OF SUBPARMS   @H1A*/
*      2 TCT1     FIXED(32) BDY(BYTE), /*  NR SUBPARMS PROCESSED @H1A*/
*      2 TPDTP    PTR(31) BDY(BYTE),  /*  PTR TO PDT FOR THE KEY @H1A*/
*      2 TCPDTP   PTR(31) BDY(BYTE),   /* PTR TO POSITION IN PDT @H1A*/
*      2 TWORK    CHAR(8),   /*  INTERNAL GP/T&S WORK AREA       @H1A*/
*      2 TCLEANSA PTR(31) BDY(BYTE), /* AREA TO TEMPORARILY SAVE
*                                CLEAN UP ROUTINE ADDRESS        @H2A*/
*       3 TSP3 CHAR(4),      /*  WORK SPACE                      @H2C*/
*      2 SRCHSW1 BIT(8),     /*  SWITCHES                        @H1A*/
*       3 SRCHF1 BIT(1),     /*  0 = MATCH OR ERROR.
*                                1 = MATCH W OR W/O QUALIFIER    @H1A*/
*       3 SRCHF2 BIT(1),     /*  0 = DDNAME SEARCH.
*                                1 = SCT SEARCH.                 @H1A*/
*       3 SRCHF3 BIT(1),     /*  1 MEANS RETRY IF NOT FOUND      @H1A*/
*       3 SRCHF4 BIT(1),     /*  1 MEANS SEARCH FROM RELPROC.    @H1A*/
*       3 SRCHF5 BIT(1),     /*  1 MEANS THAT A SECOND SUBSTITUTION
*                                JCL MESSAGE IS NEEDED.  USED BY MODULE
*                                IEFVFB.                         @H1A*/
*       3 SRCHF6 BIT(1),     /*  RESERVED                        @H1A*/
*       3 SRCHF7 BIT(1),     /*  RESERVED                        @H1A*/
*       3 SRCHF8 BIT(1),     /*  0 = ENTER SYMBOLIC TEXT
*                                1 = DO NOT ENTER TEXT
*                                THIS BIT SET BY IEFVFB TO
*                                TELL IEFVFA NOT TO ENTER
*                                SYMBOLIC TEXT INTO THE
*                                INTERNAL TEXT BUFFER.           @H1A*/
*      2 SRCHTTR CHAR(3),    /*  TTR OF DICT TO BE GOTTEN.       @H1A*/
*      2 SRCHREL CHAR(8),    /*  SAVE SPACE FOR RELPROC/RELPGM.  @H1A*/
*      2 SRCHL1  FIXED(32) BDY(BYTE),  /*  LEVEL 1 RE SAVE AREA. @H1A*/
*      2 SRCHL2  FIXED(32) BDY(BYTE),  /*  LEVEL 2 RE SAVE AREA. @H1A*/
*      2 SRCHL3  CHAR(12),   /*  LEVEL 3 RE, RF & R0 SAVE AREA.  @H1A*/
*      2 SRCHNBR FIXED(8);   /*  SLOT FOR NBR OF PARAMETERS.     @H1A*/
*/*                                                                  */
* DCL SRCHCLR BIT(8) CONSTANT('11111111'B);   /* SUM OF SRCHF1
*                                                THROUGH SRCHF8  @H1A*/
*/********************************************************************/
*/*                                                                  */
*/*                END OF AUXILIARY WORK AREA                        */
*/*                                                                  */
*/********************************************************************/
./ ADD NAME=IEFVMCWA
         MACRO
         IEFVMCWA &X
*
*          ********************************************************
*          *                                                      *
*          *   THE INFORMATION MAPPED BY THIS MACRO IS USED ONLY  *
*          *     BY THE INTERPRETER CONTROL ROUTINE AND IS NOT    *
*          *        PRESERVED BY OTHER INTERPRETER ROUTINES       *
*          *                                                      *
*          ********************************************************
*
CWA      DSECT
         USING CWA,RA
         AIF   ('&X' EQ 'NA').SKIP
         IEFVMAWA
.SKIP    ANOP
DDWA1    DS    CL1
DDWA2    DS    CL1
DDWA3    DS    CL3
DDWA4    DS    CL3
DDWA5    DS    CL8
DDWA6    DS    CL1
DDWA61   DS    CL1
DDWA62   DS    CL1
DDWA63   DS    CL1
DDWA64   DS    F
DDWA7    DS    D
DDWA8    DS    0D
SIOT     DS    CL176
DDWA10   DS    0D
JFCB     DS    CL176
ENDCWA   DS    0D
LCWA     EQU   ENDCWA-CWA          LENGTH OF CONTROL ROUTINE WORK AREA
         MEND
./ ADD NAME=IEFVMDWA
         MACRO
         IEFVMDWA &X
*
* MACMEAN  DWA MEANS IEFVDA LOCAL WORK AREA                    @Z40MPTH
* MACCOMP Y-3 SC1B9/PZD83                                      @Z40MPTH
* MACSTAT Y-3 74305/Z40MPTH                                    @Z40MPTH
*         MERGE SU4,10,16 CODE TO REL 037 BASE PTF             @ZA28955
*          ********************************************************
*          *                                                      *
*          *   THE INFORMATION MAPPED BY THIS MACRO IS USED ONLY  *
*          *       BY THE INTERPRETER DD ROUTINE AND IS NOT       *
*          *        PRESERVED BY OTHER INTERPRETER ROUTINES       *
*          *                                                      *
*          ********************************************************
*
DWA      DSECT
         USING DWA,RA
         DS    0D
INAMDDWA EQU   *
         AIF   ('&X' EQ 'NA').SKIP
         IEFVMAWA
.SKIP    ANOP
TTRS     DS    F SAVE FOR TTR                               289
DDSWA    DS    CL1 DD SWITCHES                              289
DDWAA    DS    CL3
DDWAB    DS    0F ALIGNMENT
DDWA1    DS    CL1
DDWA2    DS    CL1
DDWA3    DS    CL3
DDWA4    DS    CL3
DDWA5    DS    CL8
DDWA6    DS    CL1
DDWA61   DS    CL1 *                   WORK AREA FOR BUFIN,BUFOUT 20002
DDWA62   DS    CL1
DDWA63   DS    CL1
DDWA64   DS    F
DDWA7    DS    D
DDWA8    DS    0D
SIOT     DS    CL176
DDWA10   DS    0D
JFCB     DS    CL176
DDWA12   DS    0D
JFCBX    DS    CL176
         DS    0D
JFCBEX   DS    CL176        JFCB EXTENSION FOR 3800 DATA       @Z40MPTH
         MEND
./ ADD NAME=IEFVMEWA
         MACRO
         IEFVMEWA &X
.* C 005750                                                      Y01029
.* A 003700-003740                                               Y01113
.* DEFINED BIT-EAFRSTEP-SET WHEN PROCESSING 1ST SCT FOR RSTRT  @ZA07749
         SPACE
*   MACMEAN   IEFVMEWA MEANS EXEC PROCESSOR WORK AREA           YM00368
*   MACCOMP   Y-2  SC1B9/PZD11                                  YM00368
*   MACSTAT   Y-2  73255/YM00368                                YM00368
         SPACE
*
*          ********************************************************
*          *                                                      *
*          *   THE INFORMATION MAPPED BY THIS MACRO IS USED ONLY  *
*          *      BY THE INTERPRETER EXEC ROUTINE AND IS NOT      *
*          *        PRESERVED BY OTHER INTERPRETER ROUTINES       *
*          *                                                      *
*          ********************************************************
*
EWA      DSECT
*                                                                A22206
*2362                                                              AACA
         USING EWA,RA
         AIF   ('&X' EQ 'NA').SKIP
         IEFVMAWA
.SKIP    ANOP
EATEMP1  DS    F                  TEMPORARY SAVE ONE.
EATEMP2  DS    F                  TEMPORARY SAVE TWO.
EATEMP3  DS    F                  TEMPROARY AREA FOR JOBCAT TTR  Y01113
*                                 USED WHEN READING IN COPIES OF Y01113
*                                 CONCATENATED JOBCAT SIOTS.     Y01113
*
EASW1    DS    CL1           FLAGS (INTERNAL).
EAPGMSDF EQU   128                PGM EQUAL *. FLAG.
EAPGMEF  EQU   64                 PGM EQUAL FLAG.
EAACTORF EQU   32                 PREVIOUS ACT O'RIDE FLAG INDICATION.
EACONORF EQU   16                 PREVIOUS COND O'RIDE INDICATION.
EACNDF1  EQU   8                  COND HSKPNG BIT 1.
EACNDF2  EQU   4                  COND HSKPNG BIT 2.
EAPARMF1 EQU   2                  PARM FIELD HSKPNG FLAG.
EAERLYER EQU   1                  EARLY ERROR FLAG. -OFF- FAKE SCT.
EASW2    DS    CL1           FLAGS 2 (INTERNAL).
EAREGION EQU   128                REGION ON EXEC STMT.
EAADDR   EQU   64                 ADDRSPC ON EXEC STMT.          Y01029
EAFONSTF EQU   32                 FOUND RESTARTING STEP.           AACA
EACLCOND EQU   16                CLEAR COND. CODES DEFERRED C/R    AACA
EAEACCTE EQU   08  ACCT=  ON EXEC PROC STATEMENT                 A22206
EAFRSTEP EQU   04                  FIRST STEP DEFERRED RESTART @ZA07749
*
EASNSVL  DS    C                  STEPNAME LENGTH.
EASNSV   DS    8C                 STEPNAME TEMPORARY SAVE.
EAPCSVL  DS    C                  PROCNAME LENGTH.
EAPCSV   DS    8C                 PROCNAME TEMPORARY SAVE.
EAPRSV   DS    8C                 OVERRIDDEN PROCSTEP TEMPORARY SAVE.
EAPRSVF  DS    C                  O'RIDE FLAG (USED BY EAORIDE).
EAPRSVF2 DS    C                   BYTE 2 OF O'RIDE FLAGS.      YM00368
EATTRSV  DS    F                  TEMPORARY TTR SAVE AREA.
*
EAREGSV  DS    10F                INTERNAL EXEC REG SAVE AND WORK AREA.
EAWKEND  EQU   *                  END OF EXECUTE WORK AREA.
***********************************************************************
         SPACE 2
*                                  TABLES
ACT      DS    CL176                     ACCOUNT CONTROL TABLE (ACT)
EAORTABL DS    CL176              O'RIDE TABLE WORK SPACE.
EAAUXWK  DS    CL176              AUXILIARY TABLE WORK SPACE.
ENDEWA   DS    0D
LEWA     EQU   ENDEWA-EWA          LENGTH OF EXEC ROUTINE WORK AREA
         MEND
./ ADD NAME=IEFVMIWA
*%GOTO INTPROLG;    /*
         MACRO
         IEFVMIWA
*
.*/      %INTPROLG:;  /*                                             */
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME - IEFVMIWA                                       @H1C*/
*/*                                                                  */
*/* DESCRIPTIVE NAME - INTERPRETER WORK AREA                 @G743P2E*/
*/*                                                          @G743P2E*/
*/* COPYRIGHT  -                                                     */
*/*              5740-XYN COPYRIGHT IBM CORP 1980,1983,          @H4C*/
*/*              LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,         */
*/*              REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER         */
*/*              G120-2083.                                          */
*/*                                                                  */
*/* STATUS     - OS/VS2 JBB1329                                  @H4C*/
*/*                                                                  */
*/* INVOCATION -                                             @G743P2E*/
*/*          BAL  - SPECIFY:  IEFVMIWA                       @G743P2E*/
*/*                                                          @G743P2E*/
*/*          PLS  - SPECIFY:  %INCLUDE SYSLIB(IEFVMIWA)      @G743P2E*/
*/*                                                          @G743P2E*/
*/*          NOTE:  IT MUST BE INVOKED IMMEDIATELY FOLLOWING @G743P2E*/
*/*          IEFCOMWA, TO INSURE CORRECT ADDRESSABILITY.     @G743P2E*/
*/*          REGISTER 12 IS THE BASE REGISTER ACROSS THE     @G743P2E*/
*/*          ENTIRE WORK AREA MAPPED BY BOTH IEFCOMMA AND    @G743P2E*/
*/*          IEFVMIWA.  THEREFORE DISPLACEMENTS FOR THE      @G743P2E*/
*/*          INTERPRETER WORK AREA MUST BE A CONTINUATION    @G743P2E*/
*/*          OF THOSE FOR THE COMMON WORK AREA.              @G743P2E*/
*/*                                                          @G743P2E*/
*/* FUNCTION -                                               @G743P2E*/
*/*          THIS MACRO MAPS DATA FIELDS AND SWITCHES UNIQUE @G743P2E*/
*/*          TO THE INTERPRETER.                             @G743P2E*/
*/*                                                                  */
*/* CHANGE ACTIVITY - G743P2E,H1,R1,H2,R2,H3,H4                  @H4C*/
*/*                                                                  */
*/* $H1= EXTJCL JBB1328 810316 PD43: SUPPORT FOR EXTENDED JCL    @H1A*/
*/* $R1= PPP0026 JBB1328 810508 PD43: INTEGER CONVERSION FIELD   @R1A*/
*/* $H2= EXTJCL JBB1328 811202 PD2N: SUPPORT FOR EXTENDED JCL    @H2A*/
*/* $R2= PPP0052 JBB1328 811217 PD43: SCONAR FIELD CHANGED       @R2A*/
*/* $H3= EXTJCL JBB1328 820326 PD43: SUPPORT FOR EXTENDED JCL    @H3A*/
*/* $H4= EXTJCL JBB1329 820611 PDE6: SUPPORT FOR EXTENDED JCL    @H4A*/
*/*                                                                  */
*/********************************************************************/
*/* C CONVERSION FIELD WAS ENLARGED TO ALLOW MAXIMUM INTEGER     @R1A*/
*/*   VALUE TO BE CONVERTED TO HEXADECIMAL.                      @R1A*/
*/* A FIELDS TO SUPPORT THE CONVERSION OF HEX AND NAME DATA,     @H2A*/
*/*   AND FOR PROCESSING COMPATABILITY KEYWORDS                  @H2A*/
*/* C THE MAPPING OF THE SCONAR FIELD IN THE ASSEMBLER EXPANSION @R2A*/
*/*   WAS CHANGED TO BE THE SAME AS THE MAPPING IN THE PLS       @R2A*/
*/*   EXPANSION.                                                 @R2A*/
*/* C FIELDS USED FOR JDT-DEFINED JCL COMPATIBILITY PROCESSING-  @H3A*/
*/*   FIELDS WERE MADE RESERVED SINCE COMPATIBILITY PROCESSING   @H3A*/
*/*   HAS BEEN DISCONTINUED.                                     @H3A*/
*/* A FIELD FOR SPECIAL CHARACTER INDICATION                     @H4A*/
*%GOTO INTWAPLS;
*/*
*
INTWA    DS    0F                  START OF INTRP WORK AREA.     Y02668
*
*  POINTERS, WORK AND DATA AREAS.
*
IWAINTS5 DS    F                   PTR TO JOB MNGMT RECORD         AABA
TSIOT    DS    F                        NEXT AVAIL SIOT TTR
*                                  TTR'S OF TABLES IN THE Q
TJOBLIB  DS    F                        TTR OF JOBLIB SIOT
TSREFB   DS    F                        TTR OF 1ST DICTIONARY
TACT     DS    F                        TTR OF O'RIDE ACT
TPROC    DS    F                        NEXT PROC STEP O'RIDE TABLE
RELPROC  DS    F                        OFFSET LAST PROC/ TTR DICT
RELPGM   DS    F                        OFFSET LAST PGM/ TTR DICT
DSENQTP  DS    F                   POINTER TO DSENQ TABLE (ZERO IN SSS)
IWAJOBS1 DS    2F                  CHKPT/REST - CALLING STEPNAME.  AAAA
IWAJOBS3 DS    2F                  CHKPT/REST - STEPNAME/PROCSTEP. AAAA
IWAJOBS6 DS    F                        REGION SIZE ON JOB STMT    AAAA
IWASTAPL DS    F         POINTER TO R/I STAE PARAMETER LIST      A39047
IWAEXPNO DS    F             EXEC PROC STMT NUMBER              YM02714
IWANXTSV DS    F                   SVA OF NEXT BLOCK IN CHAIN   YM02716
IWAJMRPT DS    F                   POINTER TO JMR.               Y02668
TSAVEP   DS    2F                  WORK AND REG SAVE AREA.
IWAJSIOT DS    F         TTR OF JOBCAT SIOT                      Y01113
IWASCTAD DS    F                   ADDRESS OF SCT.               Y02668
IWASIOTP DS    F                   ADDR OF SIOT.                 Y02668
IWAJFCBP DS    F                   ADDR OF JFCB.                 Y02668
DSNTPSA  DS    F                   DSNT PROCESSING RTNE REG SA.  Y02668
IWASAVPT DS    F                   PTR TO SAVEAREA OF INT CALLER.Y02668
AOJRNLEX DS    CL8                 JRNL/MERGE EXIT LIST ENTRY.   Y02668
ORIDSNM  DS    CL8                 NAME OF NEXT PROC STEP OVERRIDDEN
*                                  UNIQUE NAME QUALIFIER
UNQNAME  DS    CL23     SYSYYDDD.TTTTTTT.XYZZZ.JOBNAME.&NAME  OR   AADA
*                                                     .UNIQUE NO.  AADA
*                       SYSYYDDD - CONSTANT "SYS" FOLLOWED BY 5    AADA
*                                  NUMERIC CHARACTERS DENOTING DATEAADA
*                       TTTTTTT  - CONSTANT "T" FOLLOWED BY A 6    AADA
*                                  CHARACTER NUMERIC TIME STAMP    AADA
*                       XYZZZ      - X= ONE ALPHA CHARACTER        AADA
*                                      CURRENTLY SPECIFIED AS 'R'
*                                   -Y = ONE ALPHA CHARACTER       AADA
*        DENOTING SYSTEM VERSION. CURRENTLY SPECIFIED AS "A"
*                                      A = VS2/RELEASE 2
*                                  - ZZZ = 3 NUMERIC CHARACTERS    AADA
*                                          FOR UNIQUENESS          AADA
*                       JOBNAME - NAME OF JOB FOR WHICH THE DATA   AADA
*                                  SET WAS GENERATED               AADA
*                       &NAME - AN ALPHANUMERIC FIELD CONTAINING   AADA
*        THE "NAME" PORTION OF AN &NAME                            AADA
*                       UNIQUE NO. - A UNIQUE CHARACTER STRING BEGIN-
*        NING WITH "R" AND ENDING WITH A NUMERIC VALUE.
HEXNIBBL DS    X                        USED IN HEX CONVERSION     @H2C
UNNU     DS    H                        UNIQUE NAME SERIAL IN BINARY
JEDSWS   DS    H                        JOB, EXEC, OR DD SWITCHES (LWA)
JCTS     DS    H                        JCT POINTER (IWA)
SCTS     DS    H                        SCT POINTER (IWA)
JACTS    DS    H                        JACT POINTER (LWA)
SIOTS    DS    H                        SIOT POINTER (LWA)
JFCBS    DS    H                        JFCB POINTER (LWA)
JFCBXS   DS    H                        JFCBX POINTER (LWA)
DSNAMES  DS    H                        DSNAME POINTER (IWA)
SREFBS   DS    H                        DICTIONARY 1 PTR (IWA)
DREFBS   DS    H                        DICTIONARY 2 PTR (IWA)
POVRRDS  DS    H                        POVRRD POINTER (IWA)
ACTS     DS    H                        ACT POINTER (IWA)
JFCBES   DS    H                       POINTER TO JFCBE (DWA)  @Z40MPTH
JCTXS    DS    H                       JCTX PTR (IWA)          @Z40RPSM
*
DDINTNO  DS    H                   INTERNAL DD SEQUENCE NBR.     Y02668
IWACATCT DS    CL1  COUNT OF CONCATENATED PVT.CATS.             Y01113
DJBCLAS  DS    CL1                 MAXIMUM JOBCLASS.
DINBPLP1 DS    CL1                      BYPASS LABEL PROCESIONG DEFAULT
*
*  SWITCH BYTES.
*
IWAEXTS  DS    CL1            SPECIAL CALLER EXITS                I171
IWAQENTR EQU   1                        BIT-7 SPECIAL QMNGR ENTRY I171
SWA      DS    CL1                 SWITCH A
JHS      EQU   64                      BIT-1 JOB HAS STEP
JCTTQ    EQU   32                       BIT-2 JCT TO  PUT IN Q
SCTTQ    EQU   16                       BIT-3 SCT TO PUT IN Q
SWC      DS    CL1                 SWITCH C
DSNTQ    EQU   4                        BIT-5 DSN TABLE TO PUT IN Q
VOLREF   EQU   2                        BIT-6 DSN VOL REF SW   @ZA01890
IWAPERFM EQU   1                        BIT-7 PERFORM SPECIFIED ON
*                                             JOB STMT         @G743P2E
SWD      DS    CL1                 SWITCH D
JOBADDRF EQU   128                      BIT-0 ADDRSPC ON JOB STMTY01029
JOBREGNS EQU   64                       BIT-1 REGION ON JOB STMT.   354
FEXRCV   EQU   32                       BIT-2 1ST EXEC RCVD THIS JOB
FDDRCV   EQU   16                       BIT-3 FIRST DD RCVD THIS STEP
DBFST    EQU   8                        BIT-4 FIRST ENTRY TO DSENQ
DCTFST   EQU   2                        BIT-6 FIRST DICT ENTRY RCVD
TIMDFPRC EQU   1                       BIT-7 PROCESS TIME DEFAULT
SWF      DS    CL1                 SWITCH F  PROCEDURE SWITCHES
ORPARMOR EQU   128                      BIT-0 PARM OVERRIDE.
ORPARMBL EQU   64                       BIT-1 PARM BLOCK.
ORCONDOR EQU   32                       BIT-2 COND OVERRIDE.
ORTIMEOR EQU   16                       BIT-3 TIME OVERRIDE.
ORTIME0  EQU   8                        BIT-4 TIME ZERO.
ORACTOR  EQU   4                        BIT-5 ACCT OVERRIDE.
ORREGOR  EQU   2                        BIT-6 REGION OVERRIDE.
ORADDROR EQU   1                        BIT-7 ADDRSPC OVERRIDE.  Y01029
*                                  TABLE PTRS (S-CONS) IN T&S ID ORDER
SWG      DS    CL1                 ADDITIONAL PROCEDURE SWITCHES.  AAAA
ORRDOR   EQU   128                      RD O'RIDE.                 AAAA
ORSDPOR  EQU   64   STEP DISPATCHING PRIORITY OVERRIDE -SET AND    I241
*                        TESTED IN IEFVEA                          I241
ORFLG2SW EQU   1                       SET BIT IN ORFLAGS2
IWAINTS8 DS    CL1                 FLAGS FOR CKCKPT/RESTART.       AAAA
*                                       BITS 0 AND 1 MUST BE ZERO. AAAA
JOBRDNR  EQU   32                       BIT-2 RD=NR                AAAA
JOBRDNC  EQU   16                       BIT-3 RD=NC OR RD=RNC      AAAA
JOBRDR   EQU   8                        BIT-4 RD=R OR RD=RNC       AAAA
*                                       BITS 5 THRU 7 MUST BE ZERO AAAA
JBCONCAT DS    CL1                 NBR OF JOBLIB SIOTS.
IWAWRNMS DS    CL1                 WARNING MSG CODE.             Y02668
IWAJBADR DS    CL1                 ADDRSPC PARAM ON JOB STMT.    Y01029
CRSW1    DS    CL1                CHECKPOINT RESTART SWITCHES      AACA
CPDUM    EQU   32   BIT 2         DUMMY SCT REQUIRED-STEP FLUSH    AACA
IWANELEN DS    CL1                 LENGTH OF NEL.
DDINO    DS    CL1                 DD INTERNAL NO. FOR SIOT
DDSWX1   DS    CL1                DD SWITCHES                    Y01113
SDDNSWA  EQU   DDSWX1              SWITCH FOR SEARCH DDNAME REF TABLE
SDDNSW   EQU   X'80'
IWAJCAT  EQU   X'20'              JOB CAT SWITCH                 Y01113
IWASCAT  EQU   X'10'              STEP CAT SWITCH                Y01113
IWASCAT2 EQU   X'08'               STEPCAT FOUND SWITCH.
IWASNUMB DS    CL1                 NUMBER OF STEPS.              Y02668
*                                                                Y02668
AOSW2    DS    CL1                                               Y02668
AODFLTKW EQU   X'01'               DEFAULT OK THIS KEYWORD.      Y02668
AOMAXERR EQU   X'02'               STATIC DD MAX EXCEEDED.       Y02668
AONOREAD EQU   X'04'               BYPASS READ OF TEXT STRING.   Y02668
IWASJFFG DS    CL1         SCHEDULER JCL FACILITY ASSOCIATED FLAGS @H1C
JDTEXFLG EQU   X'80'             EXIT FLAG FOR IEFVJDTI            @H1A
JDTPRC   EQU   X'40'            JDT-DEFINED JCL PROCESSING ENABLED @H1A
JCLPLIM  EQU   X'20'            'JCL USAGE LIMITED' MESSAGE FLAG   @H1A
NIBBLE   EQU   X'10'            USED IN HEX CONVERSION             @H2A
ALPHASW  EQU   X'08'            INDICATE ALPHABETIC CHARACTER      @H2A
NATIONSW EQU   X'04'            INDICATE NATIONAL CHARACTER        @H2A
NUMERSW  EQU   X'02'            INDICATE NUMERIC CHARACTER         @H2A
SPECALSW EQU   X'01'            INDICATE SPECIAL CHARACTER         @H4A
*                               COMPATABILITY KEYWORDS             @H2A
         DS    0F                       ALLIGNMENT.
SREFB    DS    CL176                    DICTIONARY 1 (INPUT)
         DS    0F                       ALLIGNMENT.
DREFB    DS    CL176                    DICTIONARY 2 (SEARCH)
         DS    0F                       ALLIGNMENT.
JCT      DS    CL176                     JOB CONTROL TABLE (JCT)
         DS    0F
JCTX     DS    CL176     JOB CONTROL TABLE EXTENSION(JCTX).    @Z40RPSM
DNRT     DS    CL78                DDNAME REFERENCE TABLE
         DS    CL2                 RESERVED                      Y02668
         DS    0F                       ALLIGNMENT.
SCT      DS    CL176                     STEP CONTROL TABLE (SCT)
         DS    0F                       ALLIGNMENT.
DSNAME   DS    CL176                     DATA SET NAME TABLE (DSNAME)
SPSAV    DS    CL20                SPLIT PROCESSOR WORK AREA.   YM01325
IWASJFNP DS    F             PTR TO SJF FIND SWB PARM LIST         @H2A
SUBLSTPT DS    F             SUBLIST POINTER (FOR REFERRAL         @H2A
*                            PROCESSING)                           @H2A
         DS    F             RESERVED                              @H3C
IWASUBS2 DS    F             REG. 14 SAVE AREA FOR IEFVJDTI        @H2A
RBLOCK   DS    16F                 BLOCK OF UNNAMED RES WORDS.     @H2C
IWAJSCBF DS    F             PTR TO FIRST JSCB IN JSCB CHAIN.   YM04108
IWAJSCBA DS    F             PTR TO ACTIVE JSCB.                YM04108
IWALWLGN DS    F             LENGTH OF LWA FOR IEFVHN TO FREE  @Z40MPTH
IWAPRFMF DS    CL2           PERFORMANCE GROUP NUMBER          @G743P2E
IWARESV2 DS    XL2           RESERVED                          @G743P2E
AOQLOCEX DS    CL8           ALT SWA LOC EXIT LIST ENTRY       @G29AN2E
IWASJEXP DS    F             PTR TO SJF EXTRACT PARM LIST          @H1A
IWASJWRP DS    F             PTR TO SJF WRITE SWB PARM LIST        @H1A
ITEXTPTR DS    F             PTR TO INTERNAL TEXT STRINGS FOR      @H1A
*                            JDT-DEFINED JCL INTERNAL TEXT KEYS    @H1A
IWACRVRB DS    XL1           CURRENT VERB STATEMENT KEY            @H1A
IWAPOVRB DS    XL1           PREVIOUS OLD VERB KEY                 @H1A
ERRORCD  DS    XL2           ERROR CODE USED BY JDT-DEFINED JCL    @H1A
*                            PROCESSING                            @H1A
ITEXTLEN DS    XL1           INTERNAL TEXT STRING LENGTH           @H1A
COUNT    DS    0XL1          LOOP COUNTER                          @H1A
LEVNUM   DS    XL1           NUMBER OF LEVELS (FOR NAME DATA)      @H1A
CONLEN   DS    0XL1          CONVERSION LENGTH (FOR INTEGER AND    @H2C
*                            HEX DATA)                             @H2C
LEVLEN   DS    XL1           LEVEL LENGTH (FOR NAME DATA)          @H2A
INDX     DS    XL1           AN INDEX VALUE                        @H2C
HEXAREA  DS    XL4           AREA FOR CONVERTED HEX DATA           @H1A
SCONAR   DS    0CL16         CONVERSION AREA FOR TEXT STRING       @H2C
LEVELDC  DS    CL8           AREA TO CONVERT LEVEL DATA TO         @H2A
*                            DECIMAL FOR MESSAGE PROCESSING        @H2A
LEVELUN  DS    CL3           AREA TO UNPACK LEVEL DATA FOR         @H2A
*                            MESSAGE PROCESSING                    @H2A
         DS    CL5           REMAINDER OF CONVERSION AREA (SCONAR) @R2C
IWASJFLR DS    F             REG. 14 SAVE AREA WHEN CALLING SJF    @H1A
IWASJFSR DS    F             REG. 13 SAVE AREA WHEN CALLING SJF    @H1A
IWASUBSR DS    F             REG. 14 SAVE AREA FOR IEFVJDTI        @H1A
*                             SUBROUTINES                          @H1A
IWASJFSA DS    18F           REG. SAVE AREA WHEN CALLING SJF       @H1A
IWATEXT  DS    CL64          CHARACTER STRING DATA BUFFER FOR SJF  @H1A
*                            WRITE SWB REQUESTS                    @H1A
*
*          ********************************************************
*          *                                                      *
*          *             END OF INTERPRETER WORK AREA             *
*          *                                                      *
*          ********************************************************
*
INTWAEND DS    0D                                                Y02668
INTWALTH EQU   INTWAEND-INTWA      LTH OF INT WORK AREA.         Y02668
WALTH    EQU   INTWAEND-COMWA      LTH OF INT+COMMON WORK AREAS. Y02668
         MEND
**/
*%INTWAPLS:;
*DCL
* 1 INTWA BASED(ADDR(COMWA)+LENGTH(COMWA)) BDY(WORD),        /*Y02668*/
*   2 IWAINTS5 PTR(31),      /* PTR TO JOB MNGMT RECORD        Y02668*/
*   2 TSIOT    PTR(31),      /* NEXT AVAILIBLE SIOT TTR        Y02668*/
*
*/*  TTR'S OF TABLES IN THE QUEUE                              Y02668*/
*
*   2 TJOBLIB  PTR(31),      /* TTR OF JOBLIB SIOT             Y02668*/
*   2 TSREFB   PTR(31),      /* TTR OF FIRST DICTIONARY        Y02668*/
*   2 TACT     PTR(31),      /* TTR OF OVERRIDE ACT            Y02668*/
*   2 TPROC    PTR(31),      /* NEXT PROC OVERRIDE TABLE       Y02668*/
*   2 RELPROC  PTR(31),      /* OFFSET LAST PROC/ TTR DICT     Y02668*/
*   2 RELPGM   PTR(31),      /* OFFSET LAST PGM/ TTR DICT      Y02668*/
*   2 DSENQTP  PTR(31),      /* POINTER TO DSENQ TABLE         Y02668*/
*   2 IWAJOBS1 CHAR(8),      /* CHKPT/REST - CALLING STEPNAME  Y02668*/
*   2 IWAJOBS3 CHAR(8),      /* CHKPT/REST - STEPNAME/PROCSTEP Y02668*/
*   2 IWAJOBS6 FIXED(31),    /* REGION SIZE ON JOB STMT        Y02668*/
*   2 IWASTAPL PTR(31),      /* PTR TO C/I STAE PARM LIST      Y02668*/
*   2 IWAEXPNO FIXED(32),    /* EXEC PROC STMT NUMBER         YM02714*/
*   2 IWANXTSV FIXED(32),    /* SVA OF NEXT BLOCK IN CHAIN    YM02716*/
*   2 IWAJMRPT PTR(31),      /* POINTER TO JMR                 Y02668*/
*   2 TSAVEP   CHAR(8),      /* WORK AND REG SAVE AREA         Y02668*/
*   2 IWAJSIOT PTR(31),      /* TTR OF JOB CAT SIOT            Y02668*/
*   2 IWASCTAD PTR(31),      /* ADDRESS OF SCT                 Y02668*/
*   2 IWASIOTP PTR(31),      /* ADDRESS OF SIOT                Y02668*/
*   2 IWAJFCBP PTR(31),      /* ADDRESS OF JFCB                Y02668*/
*   2 DSNTPSA  PTR(31),      /* DSNT PROCESSING RTNE REG SA.   Y02668*/
*   2 IWASAVPT PTR(31),      /* SAVE AREA OF INT. CALLER       Y02668*/
*   2 AOJRNLEX CHAR(8),      /* JRNL/MERGE EXIT LIST ENTRY     Y02668*/
*   2 ORIDSNM  CHAR(8),      /* NAME OF NEXT PROC STEP O'RIDDENY02668*/
*   2 UNQNAME  CHAR(23),     /* UNIQUE NAME QUALIFIER          Y02668*/
*/*
* SYSYYDDD.TTTTTTT.XYZZZ.JOBNAME.&NAME OR .UNIQUE NO.
*
* SYSYYDDD - CONSTANT "SYS" FOLLOWED BY FIVE NUMERIC CHARACTERS
*            DENOTING DATE
* TTTTTTT  - CONSTANT "T" FOLLOWED BY A SIX CHARACTER NUMERIC
*            TIME STAMP
* XYZZZ    - X= ONE ALPHA CHARACTER
*            Y= ONE ALPHA CHARACTER DENOTING SYSTEM VERSION AS
*               "A" - A= VS2/RELEASE 2
*            ZZZ= THREE NUMERIC CHARACTERS FOR UNIQUENESS
* JOBNAME  - NAME OF JOB FOR WHICH THE DATA SET WAS GENERATED
* &NAME    - AN ALPHANUMERIC FIELD CONTAINING THE "NAME"
*            PORTION OF AN &NAME
* UNIQUE # - A UNIQUE CHARACTER STRING BEGINNING WITH "R" AND
*            ENDING WITH A NUMERIC VALUE                       Y02668*/
*   2 HEXNIBBL FIXED(8),     /* USED IN HEX CONVERSION           @H2C*/
*   2 UNNU     FIXED(16),    /* UNIQUE NAME SERIAL IN BINARY   Y02668*/
*   2 JEDSWS   FIXED(16),    /* JOB,EXEC, OR DD SWITCHES (LWA) Y02668*/
*   2 JCTS     FIXED(16),    /* JCT POINTER (IWA)              Y02668*/
*   2 SCTS     FIXED(16),    /* SCT POINTER (IWA)              Y02668*/
*   2 JACTS    FIXED(16),    /* JACT POINTER (LWA)             Y02668*/
*   2 SIOTS    FIXED(16),    /* SIOT POINTER (LWA)             Y02668*/
*   2 JFCBS    FIXED(16),    /* JFCB POINTER (LWA)             Y02668*/
*   2 JFCBXS   FIXED(16),    /* JFCBX POINTER (LWA)            Y02668*/
*   2 DSNAMES  FIXED(16),    /* DSNAME POINTER (IWA)           Y02668*/
*   2 SREFBS   FIXED(16),    /* DICTIONARY 1 PTR (IWA)         Y02668*/
*   2 DREFBS   FIXED(16),    /* DICTIONARY 2 PTR (IWA)         Y02668*/
*   2 POVRRDS  FIXED(16),    /* POVRRD POINTER (IWA)           Y02668*/
*   2 ACTS     FIXED(16),    /* ACT POINTER (IWA)              Y02668*/
*   2 JFCBES   FIXED(16),    /* JFCBE POINTER (LWA)          @Z40MPTH*/
*   2 JCTXS    FIXED(16),    /* JCTX PTR (IWA).              @Z40RPSM*/
*   2 DDINTNO  FIXED(15),    /* INTERNAL DD SEQUENCE NBR.      Y02668*/
*   2 IWACATCT FIXED(8),     /* COUNT OF CONCATENATED PVT.CATS.Y02668*/
*   2 DJBCLAS  FIXED(8),     /* MAXIMUM JOBCLASS               Y02668*/
*   2 DINBPLP1 FIXED(8),     /* BYPASS LABLE PROCESSING DEFLT  Y02668*/
*
*/*  SWITCH BYTES                                              Y02668*/
*
*   2 IWAEXTS,               /* SPECIAL CALLER EXIT            Y02668*/
*     3 *        BIT(7),     /* UNUSED                         Y02668*/
*     3 IWAQENTR BIT(1),     /* SPECIAL QMNGR ENTRY            Y02668*/
*
*   2 SWA,                   /* SWITCH A                       Y02668*/
*     3 *        BIT(1),     /* UNUSED                         Y02668*/
*     3 JHS      BIT(1),     /* JOB HAS STEP                   Y02668*/
*     3 JCTTQ    BIT(1),     /* JCT TO PUT IN QUEUE            Y02668*/
*     3 SCTTQ    BIT(1),     /* SCT TO PUT IN QUEUE            Y02668*/
*     3 *        BIT(4),     /* UNUSED                         Y02668*/
*   2 SWC,                   /* SWITCH C                       Y02668*/
*     3 *        BIT(5),     /* UNUSED                         Y02668*/
*     3 DSNTQ    BIT(1),     /* DSN TABLE TO PUT IN QUEUE      Y02668*/
*     3 VOLREF   BIT(1),     /* DSN VOL REF SW ON            @ZA01890*/
*     3 IWAPERFM BIT(1),     /* PERFORM SPECIFIED ON JOB STMT
*                                                            @G743P2E*/
*   2 SWD,                   /* SWITCH D                       Y02668*/
*     3 JOBADDRF BIT(1),     /* ADDRSPC ON JOB STMT            Y02668*/
*     3 JOBREGNS BIT(1),     /* REGION ON JOB STMT             Y02668*/
*     3 FEXRCV   BIT(1),     /* FIRST EXEC STMT RECEIVED       Y02668*/
*     3 FDDRCV   BIT(1),     /* FIRST DD STMT RCVD THIS STEP   Y02668*/
*     3 DBFST    BIT(1),     /* FIRST ENTRY TO DSENQ           Y02668*/
*     3 *        BIT(1),     /* UNUSED                       @ZA01890*/
*     3 DCTFST   BIT(1),     /* FIRST DICT ENTRY RCVD          Y02668*/
*     3 TIMDFPRC BIT(1),     /* PROCESS TIME DEFAULT           Y02668*/
*   2 SWF,                   /* SWITCH F                       Y02668*/
*     3 ORPARMOR BIT(1),     /* PARM OVERRIDE                  Y02668*/
*     3 ORPARMBL BIT(1),     /* PARM BLOCK                     Y02668*/
*     3 ORCONDOR BIT(1),     /* COND OVERRIDE                  Y02668*/
*     3 ORTIMEOR BIT(1),     /* TIME OVERRIDE                  Y02668*/
*     3 ORTIME0  BIT(1),     /* TIME ZERO                      Y02668*/
*     3 ORACTOR  BIT(1),     /* ACT OVERRIDE                   Y02668*/
*     3 ORREGOR  BIT(1),     /* REGION OVERRIDE                Y02668*/
*     3 ORADDROR BIT(1),     /* ADDRSPC OVERRIDE               Y02668*/
*   2 SWG,                   /* ADDITIONAL PROCEEDURE SWITCHES Y02668*/
*     3 ORRDOR   BIT(1),     /* RD OVERRIDE                    Y02668*/
*     3 ORSDPOR  BIT(1),     /* STEP DISP. PRIORITY OVERRIDE   Y02668*/
*     3 *        BIT(5),     /* UNUSED                         Y02668*/
*     3 ORFLG2SW BIT(1),     /* SET BIT IN ORFLAGS2            Y02668*/
*   2 IWAINTS8,              /* FLAGS FOR CHCKPT/RESTART       Y02668*/
*     3 *        BIT(2),     /* UNUSED - MUST BE ZERO          Y02668*/
*     3 JOBRDNR  BIT(1),     /* RD=NR                          Y02668*/
*     3 JOBRDNC  BIT(1),     /* RD=NC OR RD=RNC                Y02668*/
*     3 JOBRDR   BIT(1),     /* RD=R OR RD=RNC                 Y02668*/
*     3 *        BIT(3),     /* UNUSED - MUST BE ZERO          Y02668*/
*   2 JBCONCAT CHAR(1),      /* NBR OF JOBLIB SIOTS            Y02668*/
*   2 IWAWRNMS CHAR(1),      /* WARNING MSG CODE               Y02668*/
*   2 IWAJBADR CHAR(1),      /* ADDRSPC PARM ON JOB STMT       Y02668*/
*   2 CRSW1,                 /* CHECKPOINT/RESTART SWITCHES    Y02668*/
*     3 *        BIT(2),     /* UNUSED                         Y02668*/
*     3 CPDUM    BIT(1),     /* DUMMY SCT REQUIRED-STEP FLUSH  Y02668*/
*     3 *        BIT(5),     /* UNUSED                         Y02668*/
*   2 IWANELEN CHAR(1),      /* LENGTH OF NEL                  Y02668*/
*   2 DDINO    CHAR(1),      /* DD INTERNAL NO. FOR SIOT       Y02668*/
*   2 DDSWX1,                /* DD SWITCHES                    Y02668*/
*     3 SDDNSWA,             /* SW FOR SEARCH DDNAME REF TABLE Y02668*/
*       4 SDDNSW   BIT(1),   /*                                Y02668*/
*       4 *        BIT(1),   /* UNUSED                         Y02668*/
*       4 IWAJCAT  BIT(1),   /* JOB CAT SWITCH                 Y02668*/
*       4 IWASCAT  BIT(1),   /* STEP CAT SWITCH                Y02668*/
*       4 IWASCAT2 BIT(1),   /* STEP CAT FOUND SWITCH          Y02668*/
*       4 *        BIT(3),   /* UNUSED                         Y02668*/
*   2 IWASNUMB FIXED(8),     /* NUMBER OF STEPS                Y02668*/
*   2 AOSW2,                 /*                                Y02668*/
*     3 *        BIT(5),     /* UNUSED                         Y02668*/
*     3 AONOREAD BIT(1),     /* BYPASS READ OF TEXT STRING     Y02668*/
*     3 AOMAXERR BIT(1),     /* STATIC DD MAX EXCEEDED         Y02668*/
*     3 AODFLTKW BIT(1),     /* DEFAULT OK THIS KEY WORD       Y02668*/
*   2 IWASJFFG,           /* SCHEDULER JCL FACILITY ASSOC. FLAGS @H1C*/
*     3 JDTEXFLG BIT(1),     /* EXIT FLAG FOR IEFVJDTI           @H1A*/
*     3 JDTPRC   BIT(1),   /* JDT-DEFINED JCL PROCESSING ENABLED @H1A*/
*     3 JCLPLIM  BIT(1),  /* JCL PROCESSING LIMITED MESSAGE FLAG @H1A*/
*     3 NIBBLE   BIT(1),  /* USED IN HEX CONVERSION              @H2A*/
*     3 ALPHASW  BIT(1),  /* INDICATE ALPHABETIC CHARACTER       @H2A*/
*     3 NATIONSW BIT(1),  /* INDICATE NATIONAL CHARACTER         @H2A*/
*     3 NUMERSW  BIT(1),  /* INDICATE NUMERIC CHARACTER          @H2A*/
*     3 SPECALSW BIT(1),  /* INDICATE SPECIAL CHARACTER          @H4C*/
*   2 SREF     CHAR(176) BDY(WORD),  /* DICTIONARY 1 (INPUT)   Y02668*/
*   2 DREFB    CHAR(176) BDY(WORD),  /* DICTIONARY 2 (SEARCH)  Y02668*/
*   2 JCT      CHAR(176) BDY(WORD),  /* JOB CTL TABLE (JCT)    Y02668*/
*   2 JCTX     CHAR(176) BDY(WORD),  /*JOB CTL TBL EXT.(JCTX)@Z40RPSM*/
*   2 DNRT     CHAR(78),             /* DD REFERENCE TABLE     Y02668*/
*   2 *        CHAR(2),      /* RESERVED                       Y02668*/
*   2 SCT      CHAR(176) BDY(WORD),  /* STEP CTL TABLE (SCT)   Y02668*/
*   2 DSNAME   CHAR(176) BDY(WORD),  /* DS NAME TABLE (DSNAME)YM01325*/
*   2 SPSAV    CHAR(20)  BDY(WORD),  /* SPLIT PROCESSOR WA    YM01325*/
*   2 IWASJFNP PTR(31),              /* PTR TO SJF FIND SWB PARM LIST
*                                                                @H2A*/
*   2 SUBLSTPT PTR(31),     /* SUBLIST POINTER (FOR REFERRAL
*                              PROCESSING)                       @H2A*/
*   2 *        PTR(31),     /* RESERVED                          @H3C*/
*   2 IWASUBS2 PTR(31),     /* REG. 14 SAVE AREA FOR IEFVJDTI    @H2A*/
*   2 RBLOCK   CHAR(64)  BDY(WORD),  /* BLOCK OF RESERVED WDS    @H2C*/
*   2 IWAJSCBF   PTR(31),    /* PTR TO FIRST JSCB IN CHAIN    YM04108*/
*   2 IWAJSCBA   PTR(31),    /* PTR TO ACTIVE JSCB            YM04108*/
*   2 IWALWLGN FIXED(32),    /* LENGTH OF LWA FOR IEFVHN     @Z40MPTH*/
*   2 IWAPRFMF CHAR(2),      /* PERFORMANCE GROUP NUMBER     @G743P2E*/
*   2 IWARESV2 FIXED(16),    /* RESERVED                     @G743P2E*/
*   2 AOQLOCEX CHAR(8),      /* ALT SWA LOC EXIT LIST ENTRY  @G29AN2E*/
*   2 IWASJEXP PTR(31),      /* PTR TO SJF EXTRACT PARM LIST     @H1A*/
*   2 IWASJWRP PTR(31),      /* PTR TO SJF WRITE SWB PARM LIST   @H1A*/
*   2 ITEXTPTR PTR(31),      /* PTR TO INTERNAL TEXT STRINGS FOR
*                             JDT-DEFINED JCL INTERNAL TEXT KEYS @H1A*/
*   2 IWACRVRB FIXED(8),     /* CURRENT VERT STATEMENT KEY       @H1A*/
*   2 IWAPOVRB FIXED(8),     /* PREVIOUS OLD VERB STATEMENT KEY  @H1A*/
*   2 ERRORCD FIXED(16),    /* ERROR CODE WHEN PROCESSING JDT-DEFINED
*                               JCL                              @H1A*/
*   2 ITEXTLEN FIXED(8),     /* LENGTH OF INTERNAL TEXT STRING   @H1A*/
*   2 COUNT   FIXED(8),      /* LOOP COUNTER                     @H1A*/
*    3 LEVNUM FIXED(8),      /* NUMBER OF LEVELS (FOR NAME DATA) @H1A*/
*   2 CONLEN  FIXED(8),      /* CONVERSION LENGTH (FOR INTEGER AND HEX
*                               DATA)                            @H2C*/
*    3 LEVLEN FIXED(8),      /* LEVEL LENGTH (FOR NAME DATA)     @H2A*/
*   2 INDX    FIXED(8),      /* AN INDEX VALUE                   @H2C*/
*   2 HEXAREA FIXED(31),     /* AREA FOR CONVERTED HEX DATA      @H1A*/
*   2 SCONAR  CHAR(16), /* CONVERSION AREA FOR TEXT STRING       @R1C*/
*    3 LEVELDC  CHAR(8),   /* AREA TO CONVERT LEVEL DATA TO DECIMAL
*                             FOR MESSAGE PROCESSING             @H2A*/
*    3 LEVELUN  CHAR(3),   /* AREA TO UNPACK LEVEL DATA FOR MESSAGE
*                             PROCESSING                         @H2A*/
*   2 IWASJFLR PTR(31),    /* REG. 14 SAVE AREA WHEN CALLING SJF @H1A*/
*   2 IWASJFSR PTR(31),    /* REG. 13 SAVE AREA WHEN CALLING SJF @H1A*/
*   2 IWASUBSR FIXED(31),   /* REG. 14 SAVE AREA FOR IEFVJDTI
*                                      SUBROUTINES               @H1A*/
*   2 IWASJFSA(18) FIXED(31), /* REG SAVE AREA WHEN CALLING SJF  @H1A*/
*   2 IWATEXT CHAR(64);      /* CHARACTER STRING DATA BUFFER FOR
*                               SJF WRITE SWB REQUESTS           @H1A*/
*/*************************************************************Y02668*/
*/*                                                            Y02668*/
*/*  END OF INTERPRETER WORK AREA -                            Y02668*/
*/*  TO GET THE LENGTH OF THE INTERPRETER WORK AREA USE THE    Y02668*/
*/*  LENGTH FUNCTION OF THE NAME INTWA                         Y02668*/
*/*                                                            Y02668*/
*/*************************************************************Y02668*/
./ ADD NAME=IEFVMJWA
         MACRO
         IEFVMJWA &X
*
*          ********************************************************
*          *                                                      *
*          *   THE INFORMATION MAPPED BY THIS MACRO IS USED ONLY  *
*          *      BY THE INTERPRETER JOB ROUTINE AND IS NOT       *
*          *        PRESERVED BY OTHER INTERPRETER ROUTINES       *
*          *                                                      *
*          ********************************************************
*
JWA      DSECT
         USING JWA,RA
         AIF   ('&X' EQ 'NA').SKIP
         IEFVMAWA
.SKIP    ANOP
FF       EQU   X'FF'                 ALL ONES
JASW1    DS    CL1                   JOB ROUTINE SWITCHES
JANOJBNM EQU   128                      NO JOBNAME SWITCH
JANOPGNM EQU   64                       NO PROGRAMMER NAME SWITCH
JANOACTN EQU   32                       NO ACCOUNT NUMBER SWITCH
JAACTPUT EQU   16                       NO ACT TO PUT OUT SWITCH
JACONDER EQU   8                        CONDITION ERROR FLAG
JATEMP1  DS    CL2                   TEMP SAVE FOR PRTY/COND
JATEMP2  DS    CL2                   TEMP SAVE FOR OPERATOR (COND)
*                                  TABLES
JACT     DS    CL176                     JOB ACCOUNT CONTROL TBL (JACT)
ENDJWA   DS    0D
LJWA     EQU   ENDJWA-JWA          LENGTH OF JOB ROUTINE WORK AREA
         MEND
./ ADD NAME=IEFVMMWA
* % GOTO MWAPRO;   /*
         MACRO
         IEFVMMWA
.*/ %MWAPRO: ;     /*                                                */
*/********************************************************************/
*/* MODULE NAME = IEFVMMWA                                           */
*/*                                                                  */
*/* DESCRIPTIVE NAME = VARIABLE MESSAGE WORK AREA                    */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP., 1982                   */
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY                */
*/*             OF IBM, REFER TO COPYRIGHT INSTRUCTIONS              */
*/*             FORM NUMBER G120-2083                                */
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1328                                          */
*/*                                                                  */
*/* MODULE TYPE = MACRO                                              */
*/*                                                                  */
*/* FUNCTION =                                                       */
*/*                                                                  */
*/* MSGPARMS IS USED BY CONVERTER/INTERPRETER ROUTINES FOR BUILDING  */
*/* VARIABLE MESSAGES.  THE PARAMETERS ARE ARRANGED AS IN THIS       */
*/* PICTURE.                                                         */
*/*                                                                  */
*/*              <--------- PART 1 --------><---- PART 2 ---      */
*/*                                                                  */
*/* ___________________________________/ /___________________/       */
*/*      PART-          VAR-                              */
*/* FLAGSCONT  FIXEDKEY  LENTHVARSECT   FIXEDKEY   ETC.     */
*/* ____________________________/ /_______________/       */
*/*                                                                  */
*/*                                                                  */
*/* <--------------------- 80 BYTES TOTAL --------------------      */
*/*                                                                  */
*/*                                                                  */
*/*       FIELD        LENGTH/MASK    DESCRIPTION                    */
*/*       _____        ___________    ___________                    */
*/*                                                                  */
*/*                         80        MULTI-VARIABLE MESSAGE         */
*/*                                   PARAMETER AREA                 */
*/*        MSGFLAGS          1        FLAGS                          */
*/*          SSTMTNUM     X'80'       1 - DO NOT PRINT STATEMENT     */
*/*                                       NUMBER                     */
*/*                                   0 - PRINT STATEMENT NUMBER     */
*/*                                                                  */
*/*        PARTCONT          1        COUNT OF MESSAGE PARTS         */
*/*                                                                  */
*/*        PARTDATA         78        STORAGE FOR MESSAGE PARTS      */
*/*                                                                  */
*/*         MSGPART(*)       *        MESSAGE PARTS                  */
*/*          FIXEDKEY        2        KEY FOR FIXED SECTION OF       */
*/*                                   THIS MESSAGE PART              */
*/*          VARLENTH        1        LENGTH OF VARIABLE SECTION     */
*/*                                   OF THIS MESSAGE PART           */
*/*          VARSECT         *        VARIABLE SECTION OF THIS       */
*/*                                   MESSAGE PART                   */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/*  THE MESSAGE WRITER WILL CHECK PARTCONT, THE SECOND BYTE OF      */
*/*  MSGPARMS, FOR A NON-ZERO ENTRY BEFORE PROCESSING AN ERROR       */
*/*  MESSAGE.  A NON-ZERO ENTRY WILL CAUSE THE MESSAGE WRITER        */
*/*  (IEFVGM) TO IGNORE OTHER MESSAGE INDICATORS AND USE ONLY        */
*/*  THE INFORMATION IN THIS PARAMETER LIST.                         */
*/*                                                                  */
*/* INVOCATION =                                                     */
*/*                                                                  */
*/*        PL/S - DCL MSGPARMP PTR(31)                               */
*/*               %INCLUDE SYSLIB(IEFVMMWA)                          */
*/*                                                                  */
*/*        BAL  - DSECT IS GENERATED                                 */
*/*                                                                  */
*/* CHANGE ACTIVITY = H0, H1                                     @H1C*/
*/*  $H0= EXTJCL JBB1328 810316 PD2R: SUPPORT FOR EXTENDED JCL       */
*/*  $H1= EXTJCL JBB1328 811202 PD2N: SUPPORT FOR EXTENDED JCL   @H1A*/
*/*                                                                  */
*/********************************************************************/
*/* A 000000-999999                                              @H0A*/
*/* D SPECIFICATION OF SECONDARY MESSAGE PARTS                   @H1A*/
*/* A MSGPTR                                                     @H1A*/
*  %GOTO MWAPLS;             /*
MSGPARMS DSECT                     PARAMETER LIST FOR VARIABLE MESSAGE
MSGPARID DS    CL4                 IDENTIFIER 'CIMP' CONVERTER/
*                                   INTERPRETER MESSAGE PARAMETERS
MSGPRVER DS    XL1                 VERSION NUMBER
MSGPRLEN DS    CL1                 LENGTH OF PARAMETER AREA
MSGRSV1  DS    XL2                 RESERVED                      @H1A
MSGPTR   DS    A                   MESSAGE POINTER FOR BUILDING  @H1A
*                                  MESSAGE PARTS                 @H1A
MSGFLAGS DS    CL1                 FLAG BYTE
SSTMTNUM EQU   X'80'                 0 = PRINT STATEMENT NUMBER
*                                    1 = SUPPRESS PRINTING STMT NM
PARTCONT DS    XL1                 NUMBER OF MESSAGE PARTS
PARTDATA DS    CL78                MESSAGE PARTS
MSGEND   DS    0C                  END OF MSGPARMS
MSGPARML EQU   MSGEND-MSGPARMS     LENGTH OF MSGPARMS
*
***********************************************************************
*   THE FOLLOWING DECLARES DESCRIBE THE MAPPING FOR A SINGLE          *
*   MESSAGE PART.                                                     *
***********************************************************************
*
MSGPART  DSECT                     MAPPING FOR ONE MESSAGE PART
FIXEDKEY DS    H                   TWO-BYTE KEY FOR FIXED SECTION
VARLENTH DS    XL1                 LENGTH OF VARIABLE SECTION
VARSECT  DS    0C                  VARIABLE SECTION
         SPACE
***********************************************************************
*        CONSTANTS FOR USE WITH THE VARIABLE MESSAGE FACILITY         *
***********************************************************************
MSGPCVER EQU   1                   CURRENT VERSION NUMBER
ONEPART  EQU   1
TWOPART  EQU   2
THRPART  EQU   3
FOURPART EQU   4                                                   @H1A
         SPACE
***********************************************************************
*       END OF VARIABLE MESSAGE PARAMETER LIST                        *
***********************************************************************
         MEND                */
*  %MWAPLS: ;
*/*                                                                  */
* DCL 1 MSGPARMS BASED(MSGPARMP),  /*WORK AREA FOR VARIABLE MESSAGES */
*      2 MSGPARID CHAR(4),   /*  IDENTIFIER 'CIMP'--C/I MESSAGE
*                                                         PARAMETERS */
*      2 MSGPRVER FIXED(8),  /*  VERSION NUMBER                      */
*      2 MSGPRLEN  FIXED(8), /*  LENGTH OF PARAMETER LIST            */
*      2 MSGRSV1   CHAR(2),  /*  RESERVED                        @H1A*/
*      2 MSGPTR    PTR(31),  /*  MESSAGE POINTER FOR BUILDING MESSAGE
*                                PARTS                           @H1A*/
*      2 MSGFLAGS BIT(8),    /*  FLAG BYTE                           */
*       3 SSTMTNUM BIT(1),   /*  1 = SUPPRESS PRINTING STATEMENT
*                                    NUMBER
*                                0 = PRINT STATEMENT NUMBER          */
*       3 * BIT(7),          /*  RESERVED                            */
*      2 PARTCONT FIXED(8),  /*  NUMBER OF MESSAGE PARTS             */
*      2 PARTDATA CHAR(78);  /*  MESSAGE PARTS (MAPPING BELOW)       */
*/*                                                                  */
*/********************************************************************/
*/* THE FOLLOWING DECLARES DESCRIBE THE MAPPING FOR A SINGLE         */
*/* MESSAGE PART.                                                    */
*/********************************************************************/
*/*                                                                  */
* DCL 1 MSGPART BASED(ADDR(PARTDATA)), /* MESSAGE PART               */
*      2 FIXEDKEY FIXED(16), /*  KEY FOR FIXED SECTION OF PART       */
*      2 VARLENTH FIXED(8),  /*  LENGTH OF VARIABLE SECTION          */
*      2 VARSECT  CHAR(*);   /*  VARIABLE SECTION                    */
*/********************************************************************/
*/*    CONSTANTS FOR USE WITH THE VARIABLE MESSAGE FACILITY:         */
*/********************************************************************/
* DCL MSGPRCID CHAR(4) CONSTANT('CIMP'),  /* IDENTIFIER              */
*     MSGPCVER FIXED(8) CONSTANT(1),      /* CURRENT VERSION NUMBER  */
*     ONEPART  FIXED(8) CONSTANT(1),      /* ONE PART                */
*     TWOPART  FIXED(8) CONSTANT(2),      /* TWO PARTS               */
*     THRPART  FIXED(8) CONSTANT(3),      /* THREE PARTS         @H1C*/
*     FOURPART FIXED(8) CONSTANT(4);      /* FOUR PARTS          @H1A*/
*/********************************************************************/
*/*     END OF VARIABLE MESSAGE PARAMETER LIST                       */
*/********************************************************************/
./ ADD NAME=IEFVMSWA
         MACRO
         IEFVMSWA  &X,&DSECT=YES
***********************************************************************
*                                                                     *
* MODULE NAME = IEFVMSWA                                           @H1A
*                                                                     *
* DESCRIPTIVE NAME = CONVERTER SCAN WORK AREA                      @H1A
*                                                                     *
* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1982,                    @H1A
*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             *
*             REFER TO COPYRIGHT INSTRUCTION FORM NUMBER G120-2083.   *
*                                                                     *
* STATUS = OS/VS2 JBB1328                                          @H1A
*                                                                     *
* FUNCTION = MAPS THE WORK AREA USED BY THE CONVERTER SCANNER      @H1A
*            (IEFVFA)                                                 *
*                                                                     *
* MODULE TYPE = MACRO                                              @H1A
*                                                                     *
* INVOCATION =                                                     @H1A
*                 IEFVMSWA X,DSECT=YES OR NO                       @H1A
*                                                                     *
*                 A VALUE OF 'NA' FOR X MEANS THAT THE             @H1A
*                 AUXILIARY WORK AREA (IEFVMAWA) WILL NOT BE       @H1A
*                 INVOKED.  ANY OTHER VALUE, OR A NULL,            @H1A
*                 MEANS THE AUXILIARY WORK AREA WILL               @H1A
*                 BE INVOKED.                                      @H1A
*                                                                     *
*                 DSECT=YES IS THE DEFAULT VALUE FOR DSECT.        @H1A
*                 IF DSECT=YES IS SPECIFIED OR IMPLIED, AN         @H1A
*                 ADDITIONAL STATEMENT                             @H1A
*                          USING SCWA,R8                           @H1A
*                 IS GENERATED.                                    @H1A
*                                                                     *
* NOTES =                                                          @H1A
*      THE INFORMATION MAPPED BY THIS MACRO IS USED ONLY              *
*      BY THE CONVERTER SCAN ROUTINE AND IS NOT PRESERVED             *
*      BY OTHER CONVERTER/INTERPRETER ROUTINES.                       *
*                                                                     *
* CHANGE ACTIVITY =                                                @H1A
*  $H1= EXT JCL JBB1328 810315 PD2R: SUPPORT FOR EXTENDED JCL      @H1A
*                                                                     *
***********************************************************************
         EJECT
         AIF   ('&DSECT' EQ 'NO').NDSECT                           @H1A
SCWA     DSECT
         USING SCWA,R8
         AGO  .YESDST                                              @H1A
.NDSECT  ANOP                                                      @H1A
SCWA     DS    0F                                                  @H1A
.YESDST  ANOP                                                      @H1A
         AIF   ('&X' EQ 'NA').SKIP
         IEFVMAWA
.SKIP    ANOP
CBEGP    DS    F                  CHARACTER BEGIN POINTER.
CSTRP    DS    F                  CHARACTER STRING POINTER.
CBSYP    DS    F                  CHARACTER BEGIN SYMBOL POINTER.
CESYP    DS    F                  CHARACTER END SYMBOL POINTER.
CENDP    DS    F                  CHARACTER COLUMN 72 POINTER.
*
SAVEP    DS    F                   SAVE POINTER AREA.
WORK1    DS    F                   SAVE KEYWORD ENTRY ADDRESS     19874
*
TTRS1    DS    F                   TTRS FOR CHAINING O'FLOW
TTRS2    DS    F                        TEXT BUFFERS.
         DS    0D                                                 19874
DUPTAB   DS    CL32                DUPLICATE TABLE                19874
KEYTAB   DS    CL32                TABLE OF BITS FOR KEYWORDS     19874
SYMBUF   DS    CL176              SYMBOLIC PARAMETER TABLE BUFFER
FATRP    DS    F                  SCAN TRANSLATE TABLE POINTER
DELPTR   DS    F      POINTS TO EITHER 'RSTMT' OR 'PSTMT' IN IWA
FERRP    DS    F                  SCAN ERROR RTN PTR
         DS    H  RESERVED                                       A28667
MSGSVE   DS    CL1
FAWA1    DS    CL1 SCAN WORK AREA - SAVE FOR NON-BLANK COL 72    119
FAWA2    DS    CL1 SCAN WORK AREA
FAWA3    DS    CL1 SCAN WORK AREA
FAWA4    DS    CL1 FB WORK AREA FOR FIRST CHAR ALPHA CHECK
OVKEYSVE DS    CL1                 SAVE FOR O'RIDDEN KEY         288
ITBMSGL  EQU   27    LENGTH OF MESSAGE WHICH PRECEDES INTBUF     OCIP68
INTBUF   EQU   DREFB+ITBMSGL       INTERMEDIATE TEXT BUFFER
*
NOMORESW  DS  CL1  RESERVED  THIS REPLACES SWV, MOVED TO IWA     A24895
SYMPRCZ  EQU   SWD                BYTE FOR SW INDICATING ERROR DETECTED
PROCSWZ  EQU   SWH                BYTE FOR PROC STMT SW            AAAA
*
RPRSWW   EQU   SWY                 RIGHT PAREN SWITCH
RPRSW    EQU   128
PDELSWW  EQU   SWY                 PERIOD DELIMITER SWITCH
PDELSW   EQU   64
ASTSWW   EQU   SWY                 ASTERICK SWITCH
ASTSW    EQU   32
FLUSHSWW EQU   SWY                 FLUSH SWITCH
FLUSHSW  EQU   16
LDLX     EQU   SWY                 LAST DELIMITER SWITCH
LDL      EQU   8
DCBSWW   EQU   SWY                 DCB SWITCH.
DCBSW    EQU   4
JGCY     EQU   SWY
JGC      EQU   2
FERRORA  EQU   SWY                ERROR SWITCH.
FERROR   EQU   1
PDASSWW  EQU   SWY                 PERIOD AND ASTERICK SWITCH
PDASSW   EQU   PDELSW+ASTSW
RPASWW   EQU   SWY                 RT PAREN PERIOD AND AST SWITCH
RPASW    EQU   RPRSW+PDELSW+ASTSW
CLEARSWW EQU   SWY                 CLEAR SWITCH
CLEARSW  EQU   RPRSW+PDELSW+ASTSW+FLUSHSW+LDL+DCBSW+JGC+FERROR
*
CMTZ     EQU   SWZ                 COMMENT SWITCH
DDOVZ    EQU   SWZ                 DD OVER RIDE SWITCH
ENDSZ    EQU   SWZ                 END SCAN SWITCH
COLSTY   EQU   SWZ                 COLUMN 72 SWITCH
JOBSWY   EQU   SWZ                 JOB SWITCH
EXECSWY  EQU   SWZ                 EXEC SWITCH
DDSWY    EQU   SWZ                 DD SWITCH
VERBSWY  EQU   SWZ                 VERB SWITCH
VERBSW   EQU   JOBSW+EXECSW+DDSW
SNPSWZ   EQU   SWZ                 FOR DEGUG SNAP.
*
CXPZ     EQU   SWB                CONTINUATION EXP BY SCAN.
CXPNZ    EQU   SWB                CONT EXP & NOT RECEIVED BY INTERP.
CXPCZ    EQU   SWB                CON EXP & CANCELLED BY INTERP.
CXPOPZ   EQU   SWB                CONT EXP FOR OPERAND FIELD   @ZA12458
CANDDZ   EQU   SWB                CANNED DD * BY INTERP.
DDASTZ   EQU   SWB                DD * OR DD DATA BY INTERP.
DDATAZ   EQU   SWB                DD DATA BY INTERP.
CXPNC    EQU   CXPN+CXPC          BOTH CXPN & CXPC.
CXPNCZ   EQU   SWB                BOTH CXPNZ & CXPCZ.
POVRDZ   EQU   SWE                OVER RIDE PROC DD STMT.
SYOUTSW  EQU   SNPSW              SWITCH FOR SYSOUT THIS STATEMENT
SYOUTSWZ EQU   SNPSWZ             BYTE FOR SYSOUT SWITCH
ENDKYSWP EQU   TSP1 SWITCH TO INDICATE END OF KEYWORD'S PARAMETERS
ENDKYSW  EQU   8    AND FOLLOWING COMMA. NEXT DELIMITER SHOULD   A28668
*                   BE FOR NEW KEYWORD. (EQUAL, PERIOD OR AMPERSAND)
*
HSS      EQU   176                LENGTH OF TEXT BUFFERS.
SVO      EQU   71                 CARD LENGTH.
HONE     EQU   X'80'              HIGH ORDER ONE.
OVER     EQU   1                       OVER.
HIGH     EQU   2                       HIGH.
LOW      EQU   4                       LOW.
EQUAL    EQU  8                        EQUAL.
NOT      EQU  15                       NOT.
ZERO     EQU   8
*
ERMES01  EQU   X'01' IEF601I INVALID STATEMENT IN PROCEDURE       M4397
ERMES1   EQU   X'10' IEF616I SUBLIST WITHIN SUBLIST INCORRECT
ERMES2   EQU   X'34' IEF652I MUTUALLY EXCLUSIVE KEYWORDS
ERMES2B  EQU   X'35' SECOND PART OF MUTUALLY EXCLUSIVE MSG         AABA
ERMES3   EQU   X'28' EXCESSIVE NUMBER OF POSITIONAL PARAMS
ERMES4   EQU   X'17' IEF623I SOURCE TEXT CONTAINS UNDEFINED CHARACTERS
ERMES5   EQU   X'14' IEF62OI CONTINUATION INVALID ON DD*
ERMES6   EQU   X'12' IEF618I OPERAND FIELD NOT TERM. IN COMMA OR BLANK
ERMES7   EQU   X'16' IEF622I UNBALANCED PARENTHESIS
ERMES8   EQU   X'17' IEF623I SOURCE TEXT CONTAINS UNDEFINED CHARACTERS
ERMES9   EQU   X'13' IEF619I CONTIN INDICATED - COL 72 BLANK
ERMES10  EQU   X'18' IEF624I INCORRECT USE OF PERIOD
ERMES11  EQU   X'19' IEF625I INCORRECT USE OF LEFT PAREN
ERMES12  EQU   X'1A' IEF626I INCORRECT USE OF PLUS
ERMES13  EQU   X'1B' IEF627I INCORRECT USE OF AMPERSAND
ERMES14  EQU   X'1C' IEF628I INCORRECT USE OF ASTERISK
ERMES15  EQU   X'1D' IEF629I INCORRECT USE OF APOSTROPHE
ERMES16  EQU   X'1E' IEF630I UNIDENTIFIED KEYWORD
ERMES17  EQU   X'32' IEF650I INCORRECT USE OF SLASH
ERMES18  EQU   X'33' IEF651I INCORRECT USE OF MINUS
ERMES19  EQU   X'20'      FORMAT ERROR                             AACA
*
PSECMSG  EQU   INTKEY3 PROCVERB SECONDARY 'ON THE PROC STATEMENT' 19874
DLMFBYTE EQU  FAWA3 THIS BYTE IS USED TO SAVE DELIMITER FUNCTION   7821
*                  BYTES ENCOUNTERED IN SCANNING THE JCL STATE-    7821
*                  MENT(FB1 RTN).  EACH SUCCEEDING DELIMITER       7821
*                  FUNCTION BYTE OVERLAYS THE PREVIOUS ONE.        7821
EQDELSW  EQU   X'80' EQUAL SIGN DELIMITER SWITCH.  THE HIGH ORDER  7821
*                  BIT OF 'DLMFBYTE' WILL BE USED AS A SWITCH FOR  7821
*                  INDICATING 'KEYWORD=KEYWORD=' SITUATION ON THE  7821
*                  JCL STATEMENT.                                  7821
INITVAL  EQU   X'7F' THIS IS THE INITIAL VALUE OF DLMFBYTE.        7821
ENDSCWA  DS    0D
LSCWA    EQU   ENDSCWA-SCWA
         MEND
./ ADD NAME=IEFVORWA
         MACRO
         IEFVORWA
.* C-004700,008800                                               Y01029
* MACMEAN VORWA MEANS OVERRIDE TABLE
* MACCOMP Y-2 SC1B9/PZD11
* MACSTAT Y-2 73089/16251
*          ********************************************************
*          *                                                      *
*          *   OVERRIDE TABLE.                                    *
*          *                                                      *
*          ********************************************************
*
         SPACE
ORTTR    DS    CL3                TTR OF THIS O'RIDE TABLE.
ORID     DS    CL1                ID OF O'RIDE TABLE.
ORIDFLAG EQU   X'A'
ORCHAIN  DS    CL3                TTR OF NEXT O'RIDE TABLE.
ORNMNXST DS    CL8                NAME OF NEXT STEP TO BE OVERRIDDEN.
         SPACE
ORFLAGS  DS    CL1                O'RIDE FLAGS.
EATIMEOR EQU   X'01'                   TIME O'RIDE.
EAACCTOR EQU   X'02'                   ACT O'RIDE.
EACONDOR EQU   X'04'                   COND O'RIDE.
EAPARMOR EQU   X'08'                   PARM O'RIDE.
EAREGOR  EQU   X'10'                   REGION O'RIDE.
EAADDROR EQU   X'20'                   ADDRSPC O'RIDE.           Y01029
EARDOR   EQU   X'40'                   RD O'RIDE.                  AACA
EASDPOR  EQU   X'80'              STEP DISPATCHING PRIORITY        I241
*                                 OVERRIDE,SET AND TESTED          I241
*                                 IN IEFVEA                        I241
ORFLAGS2 DS    CL1                O'RIDE FLAGS                   Y02668
EAPRFMOR EQU   X'01'              PERFORM O'RIDE                 Y02668
EADYNMOR EQU   X'02'              DYNAMNBR O'RIDE                Y02668
         SPACE
ORMAXTIM DS    CL3                MAXIMUM STEP RUN TIME.
ORACTTTR DS    CL3                TTR OF ACT FOR THIS STEP.
         SPACE
ORCONDCD DS    CL2                CODE.
ORCONDOP DS    CL1                OPERATOR.
ORCONDS  DS    CL8                STEPNAME OR TTR OF RESOLVED SCT.
ORCONDSL DS    CL1                LENGTH OF STEPNAME. (0 IF TTR OF SCT)
ORCONDSF EQU   128                FLAG TO INDICATE THAT ORSTEP HAS BEEN
*                                      CONDITIONALLY SET UP AS THE
*                                      QUALIFYING STEPNAME.
         DS    CL84               ROOM FOR 7 MORE COND ENTRIES.
ORCNDEND DS    CL3                MUST BE ZERO - INDICATES END COND FLD
         SPACE
ORPARMSZ DS    CL2                PARM FIELD SIZE.
ORPARM   DS    CL3                PARM TTR                         AACA
ORREG    DS    CL4                REGION PARAMETER SAVE SPACE      AACA
ORSDP    DS    CL2    STEP DISPATCHING PRIORITY OVERRIDE-          I241
*                        INITIALIZED AND SET IN IEFVEA             I241
ORPRMVAL DS    CL1                PERFORM VALUE                  Y02668
ORDYNVAL DS    CL2                DYNAMNBR VALUE                 Y02668
         DS    CL29   RESERVED                                   Y02668
         SPACE
ORSTEPL  DS    CL1                LENGTH OF ORSTEP.
ORSTEP   DS    CL8                NAME OF STEP CALLING PROCEDURE.
         SPACE
ORADDR   DS    CL1                ADDRSPC FLAGS.                 Y01029
ORRD     DS    CL1                     RD FLAGS.                   AACA
ORTABEND EQU   *
         MEND
./ ADD NAME=IEFWKTAB
         MACRO
         IEFWKTAB
* 002800                                                         A24901
*                                                                 19200
         EJECT
*              MARCH 30,1965
         DS    0F
AWTCTROL DSECT
*                        ALLOCATE TABLES CONTROL
AWTCCLTB DS    F         CHANNEL LOAD TABLE
AWTCFEVS DS    F         FIRST EMPTY VOLUME SLOT IN AWT
AWTCPUDT DS    F         POTENTIAL USER ON DEVICE TABLE
AWTCWTST DS    F         START ADDRESS OF WORK TABLE
AWTCSTVB DS    F         START OF WORK TABLE VOL BLOCK
AWTCSCTV DS    F         START OF SCT VOL BLOCK
AWTCSBIT DS    F             POINTER TO RECOVERY BIT PATTERN     A24901
AWTCCALE DS    H         COUNT OF ALLOCATED ENTRIES
AWTCCUAE DS    H         COUNT OF UNALLOCATED ENTRIES
AWTCWTSZ DS    H         SIZE OF WORK TABLE ENTRY (BYTES)
AWTCNSEP DS    H         NO. WORK TABLE ENTRIES WITH SEP.
AWTCNBPW DS    H         NO. OF BIT PATTERN WORDS
AWTCNDDC DS    H         NO. OF DDS
AWTCNVAF DS    H        NUMBER OF VOL AFFINITY CHAINS
AWTCNDEV DS    H         NUMBER OF DEVICES IN SYSTEM
*   *    *    *    *    *    *    *    *    *    *    *    *    *    *
         EJECT
         DS    0F
AWT      EQU   *
*                        ALLOCATE WORK TABLE
AWTEPDEV DS    XL2       POSSIBLE NUMBER OF DEVICES IN PRIM BIT PAT000G
AWTEDPND DS    XL1       INTRASTEP SUBALLOCATE/POOL/SPLIT LINK
AWTERDEV DS    XL1       NUMBER OF REQUESTED DEVICES
AWTESTTA DS    XL1       STATUS A
*
AWTDUMMY EQU   128       BIT 0 DUMMY DATA SET
AWTSYSIN EQU   64        BIT 1 SYSIN DATA SET
AWTSPLTP EQU   32        BIT 2 SPLIT (PRIMARY)
AWTSPLTS EQU   16        BIT 3 SPLIT (SECONDARY)
AWTSBALC EQU   8         BIT 4 SUBALLOCATE
AWTPARMT EQU   4         BIT 5 PAR. MOUNT
AWTUNAFF EQU   2         BIT 6 UNIT AFFINITY
AWTUNSEP EQU   1         BIT 7 UNIT SEPARATION
*
AWTESTTB DS    XL1       STATUS B
*
AWTCHAFF EQU   128       BIT 0 CHANNEL AFFINITY
AWTCHSEP EQU   64        BIT 1 CHANNEL SEPARATION
AWTVOLAF EQU   32        BIT 2 VOLUME AFFINITY
AWTJOBLB EQU   16        BIT 3 JOBLIB DD STMNT
AWTUNLBD EQU   8         BIT 4 UNLABELED
AWTLABEL EQU   4         BIT 5 NON STANDARD LABEL                  000D
AWTDEFER EQU   2         BIT 6 DEFER MOUNTING
AWTRECVD EQU   1         BIT 7 RECEIVED DATA SET
*
AWTESTTC DS    XL1       STATUS C
*
AWTEBIT1 EQU   128       BIT 0 WORK
AWTRETAI EQU   64        BIT 1 RETAIN
AWTPRIV  EQU   32        BIT 2 PRIVATE
AWTPASS  EQU   16        BIT 3 PASS
AWTPOOLR EQU   8         BIT 4 POOL REFERENCE
AWTDADSM EQU   4         BIT 5 DADSM REQUIRED
AWTEBIT2 EQU   2         BIT 6 WORK
AWTEBIT3 EQU   1         BIT 7 WORK
*
AWTESTTD DS    XL1       STATUS D
*
AWTAVR0  EQU   128                 STORAGE VOLUME REQUESTED.
* NO STORAGE VOLUMES.  VOLUME=PRIVATE ASSUMED.
AWTAVR1  EQU   64        BIT 1 PRIV. VOL. D.A.  NO.VOL SER (AVR)
AWTAVR2  EQU   32        BIT 2 SCRATCH TAPE REQUEST (AVR)
AWTEALOC EQU   16        BIT 3 ALLOCATED
AWTESYSO EQU   8         BIT 4 SYSOUT
AWTEISSA EQU   2         BIT 6 INTRASTEP SUBALLOCATE
*
AWTENVOL DS    XL1       NUMBER OF VOLUMES                         000G
AWTEADEV DS    XL1       NUMBER OF DEVICES ALLOCATED
AWTESHDV DS    XL1       NUMBER OF DEVICES SHARED
AWTEUDEV DS    XL1       NUMBER OF DEVICES USED
AWTELINK DS    XL1       UNIT AFFINITY LINK
AWTESTT1 DS    XL1                     STATUS BYTE 1              19200
AWTSASCI EQU   128                     USASI LABEL BIT           19200
AWTRECOV EQU   64                  HAVE RECOVERED BIT            A24901
AWTEFVOL DS    XL2       RELATIVE POINTER TO VOL BLOCK
AWTESDEV DS    XL2       POSSIBLE NUMBER OF DEVICES IN SEC. BIT PAT000G
AWTEDDNM DS    XL1      INTERNAL DATA SET NUMBER
         DS    XL1       RESERVED
AWTETYPE DS    XL4       DEVICE TYPE CODE
AWTESRTS DS    XL4       PRIMARY BIT PATTERN
AWTESBIT DS    XL4       SECONDARY BIT PATTERN
*   *    *    *    *    *    *    *    *    *    *    *    *    *    *
         DS    0F
AVT      EQU   *                             START OF VOL BLOCK ENTRIES
*                        ALLOCATE VOLUME TABLE
AVTEDDNM DS    XL1       INTERNAL DD NUMBER
AVTESTTE DS    XL1       STATUS E
*
AVTNOVID EQU   16        BIT 3 NO VOL ID IN SCT VOL BLOCK
AVTVOLAF EQU   1         BIT 7 VOL AFF - NO VOL ID IN SCT
*
AVTERSRT DS    XL2       RELATIVE SRT POINTER
AVTEVPTR DS    XL2       RELATIVE VOL. SER. PTR.
AVTEVAFL DS    XL2       RELATIVE VOL. AFF. PTR
AVTESERP EQU   AVTEVPTR
AVTEVOLK EQU   AVTEVAFL
*   *    *    *    *    *    *    *    *    *    *    *    *    *    *
         MEND
./ ADD NAME=IEFWTPCB
* % GO TO BSLWTPCB; /*
         MACRO
         IEFWTPCB
         DS    0F
.*
.*       THE WTPCB IS USED BY MODULES IN RELEASE 19 FOR I/I 254
.*
*/*                                                  Y010001 02/16/72*/
***********************************************************************
*
*              FORMAT OF WTP CONTROL BLOCK
*
*                         *********************************************
*                         *                                *          *
*                         *                                *          *
*                         * WTPSMB                         * WTPFLGSA *
*                         *                                *          *
*                         *                              3 *        1 *
*                       0 *********************************************
*                         *          *                                *
*                         *          *                                *
*                         * WTPBYTES * WTPQMPA                        *
*                         *          *                                *
*                         *         1*                               3*
*                       4 *********************************************
*                         *                                *          *
*                         *                                *          *
*                         * WTPCRSMB                       * WTPCRCNT *
*                         *                                *          *
*                         *                              3 *        1 *
*                       8 *********************************************
*                         *          *                                *
*                         *          *                                *
*                         * WTPLIMIT * WTPRSMBS                       *
*                         *          *                                *
*                         *        1 *                              3 *
*                      12 *********************************************
*
**********************************************************************
*
WTPCB    DSECT
WTPDSECT EQU   WTPCB
*
WTPSMB   DS    CL3                     TTR USED BY WTP
*
WTPFLGSA DS    CL1                     WTP FLAGS
*
WTPIOERR EQU   X'80'         BIT 0 ON= SYSTEM LIMIT MSG PROCESSED  R384
*
WTPLMSGP EQU   X'40'         BIT 1 ON= LIMIT MESSAGE PROCESSED
*
WTPSSOUT EQU   X'20'         BIT 2 ON= STEP CONTAINS SYSOUT
*
WTPASGN  EQU   X'10'         BIT 3 ON= RETURN FROM 3RD LOAD OF WTP
*                                      TO 2ND LOAD OF WTP.
*
WTPNRMSG EQU   X'08'         BIT 4 ON= NO RECORD MSG PROCESSED
*
WTPSYSMB EQU   X'04'         BIT 5 ON= LAST SMB USED FOR JOB
*
WTPINVKD EQU   X'02'         BIT 6 ON= WTP INVOKED FOR THIS STEP
*
WTPTOWTO EQU   X'01'         BIT 7 ON= WTOR OR WTO WITH ADDITIONAL
*                                      ROUTING CODE
*
WTPBYTES DS    CL1                     REMAINING BYTES IN WTP SMB
*                                      AVAILABLE FOR A WTP MESSAGE
*
WTPQMPAD DS    CL3                     ADDR OF MSGCLASS QMPA
*
WTPQMPA  EQU   WTPBYTES
*
WTPCRSMB DS    CL3                     TTR OF 1ST WTP SMB. NEEDED
*                                      FOR AUTOMATIC CHECKPOINT
*                                      RESTART.
*
WTPCRCNT DS    CL1                     NUMBER OF WTP SMBS USED IN STEP
*
WTPLIMIT DS    CL1                     WTP RECORD LIMIT COUNTER
*
WTPRSMBS DS    CL3                     TTR OF RESERVED WTP SMBS
*
WTPCBSIZ EQU   *-WTPCB                 SYMBOL USED FOR WTP CONTROL
*                                      BLOCK SIZE.
*
**********************************************************************
         MEND
 */ % BSLWTPCB: ;
*/*                                                  Y010001 02/16/72*/
          DCL 1 WTPCB BASED(WTPCBPTR),
              2 WTPDSECT,
              3 WTPSMB PTR(24) BDY(WORD), /*TTR USED BY WTP*/
              3 WTPFLGSA BIT(8), /*WTP FLAGS*/
                  4 WTPIOERR BIT(1), /*BIT0 ON-SYSTEM LIMIT MESSAGE*/
                                         /*PROCESSED           R384*/
                  4 WTPLMSGP BIT(1), /*BIT1 ON-LIMIT MSG PROCESSED*/
                  4 WTPSSOUT BIT(1), /*BIT2 ON-STEP CONTAINS SYSOUT*/
                  4 WTPASGN BIT(1), /*BIT3 ON-RETURN FROM 3RD LOAD OF*/
                                         /*WTP TO 2ND LOAD OF WTP*/
                  4 WTPNRMSG BIT(1), /*BIT4 ON-NO REC MSG PROCESSED*/
                  4 WTPSYSMB BIT(1), /*BIT5 ON-LAST SMB USED FOR JOB*/
                  4 WTPINVKD BIT(1), /*BIT6 ON-WTP INVOKED FOR STEP*/
                  4 WTPTOWTO BIT(1), /*BIT7 ON-WTO OR WTOR WITH*/
                                         /*ADDITIONAL ROUTING CODE*/
              3 WTPBYTES PTR(8), /*REMAINING BYTES IN WTP SMB */
                                     /*AVAILABLE FOR WTP MESSAGE*/
                  4 WTPQMPA PTR(8),
              3 WTPQMPAD PTR(24) BDY(BYTE), /*ADDR OF MSGCLASS QMPA*/
              3 WTPCRSMB PTR(24) BDY(WORD), /*TTR OF 1ST SMB NEEDED*/
                                                /*FOR CHKPT/RESTART*/
              3 WTPCRCNT PTR(8), /*NUMBER OF WTP SMBS USED IN STEP*/
              3 WTPLIMIT PTR(8), /*WTP RECORD LIMIT COUNTER*/
              3 WTPRSMBS PTR(24) BDY(BYTE); /*TTR OF RESERVED WTP*/
                                                /*SMBS*/
./ ADD NAME=IEFWTPST
* % GO TO BSLWTPST; /*
         MACRO
          IEFWTPST
         DS    0F
MAINSTG  DSECT
WTPCORAD DS    CL4
WTPTTRAD DS    CL3
         DS    CL1
WTPSMBIO DS    CL176
WTPSMBID EQU   WTPSMBIO+3
WTPSMBPT EQU   WTPSMBIO+4
WORKSIZE DS    CL4
CORESIZE EQU   WORKSIZE+3
WTPEIA   DS    CL4
         DS    CL40
         DS    CL32  CCW'S                                       S20201
         DS    CL8   SECTOR AREA ADDRESS                         S20201
PCPQMPA  EQU   WTPEIA
         MEND
 */ % BSLWTPST: ;
          DCL 1 MAINSTG BASED(MNSTGPTR), /*WTP WORKAREA*/
              2 WTPCORAD PTR(31), /*PTR TO SMB CORE ADDR FOR Q-MGR*/
              2 WTPTTRAD PTR(24) BDY(WORD), /*TTR OF SMB FOR Q-MGR*/
              2 * CHAR(1),
              2 WTPSMBIO, /*SMB READ/WRITE AREA*/
                  3 * PTR(24) BDY(WORD), /*ADDR OF THIS SMB*/
                  3 WTPSMBID BIT(8), /*SMB IDENTIFIER*/
                  3 WTPSMBPT PTR(24) BDY(WORD), /*ADDR OF NEXT SMB*/
                  3 * CHAR(5), /*RESERVED*/
                  3 * BIT(8), /*LOGOUT BITS*/
                  3 * PTR(8), /*PTR TO NEXT AVAILABLE BYTE*/
                  3 * PTR(8), /*WTP MESSAGE LENGTH*/
                  3 * CHAR(161), /*SPACE FOR WTP MESSAGE TEXT*/
              2 WORKSIZE, /*WORKAREA SIZE*/
                  3 * CHAR(3),
                  3 CORESIZE CHAR(1),
              2 WTPEIA, /*ECB*/
                  3 * BIT(8),
                  3 * PTR(24),
              2 WTPIOB, /*IOB*/
                  3 * BIT(8),
                  3 * PTR(24),
                  3 * CHAR(1),
                  3 * PTR(24),
                  3 * BIT(8),
                  3 * BIT(8),
                  3 * CHAR(1),
                  3 * CHAR(1),
                  3 * CHAR(1),
                  3 * PTR(24),
                  3 * BIT(8),
                  3 * PTR(24),
                  3 * BIT(16),
                  3 * FIXED(15),
                  3 * CHAR(1),
                  3 * PTR(24),
                  3 * CHAR(1),
                  3 * PTR(24),
                  3 * CHAR(1),
                  3 * PTR(24),
                  3 * FIXED(15),
                  3 * FIXED(15),
              2 WTPCCWS, /*CCWS*/
                  3 * BIT(8),
                  3 * PTR(24),
                  3 * BIT(8),
                  3 * CHAR(1),
                  3 * FIXED(15),
                  3 * BIT(8),
                  3 * PTR(24),
                  3 * BIT(8),
                  3 * CHAR(1),
                  3 * FIXED(15),
                  3 * BIT(8),
                  3 * PTR(24),
                  3 * BIT(8),
                  3 * CHAR(1),
                  3 * FIXED(15),
                  3 * BIT(8),
                  3 * PTR(24),
                  3 * BIT(8),
                  3 * CHAR(1),
                  3 * FIXED(15),
              2 WTPSECT CHAR(8);
         %DCL PCPQMPA CHAR;
         %DCL WTPQMERR CHAR;
         %DCL WTPCBSIZ CHAR;
         %PCPQMPA=WTPEIA;
         %WTPQMERR='''81''X'; /*USED BY WTP Q-MGR ERROR ROUTINE*/
         %WTPCBSIZ='LENGTH(WTPCB)'; /*SYMBOL USED FOR WTP CONTROL*/
                                      /*BLOCK SIZE*/
./ ADD NAME=IEFZB429
*/********************************************************************/
*/* MACMEAN GDGNT MEANS GENERATION DATA GROUP NAME TABLE             */
*/* MACCOMP Y-2 SCIB4/PZD82                                          */
*/* MACSTAT Y-2 72145/016138                                         */
*/********************************************************************/
*        %GOTO GDGNTBSL;               /*
*
         MACRO
         IEFZB429
GDGNT    DSECT                         GDG NAME TABLE
GNTNEXTP DS    AL3                     POINTER TO RECORD PREFIX OF
*                                      NEXT GDGNT
GNTID    DS    X                       GDG NAME TABLE ID
GNTNEXTR DS    A                       POINTER TO RECORD OF NEXT GDGNT
GNTNAME  DS    CL35                    GDG GROUP NAME
GNTBASE  DS    CL4                     GENERATION BASE NUMBER
         DS    CL117                   THREE MORE ENTRIES FOR THE GDG
*                                      GROUP NAME AND GENERATION BASE
*                                      NUMBER
GNTENT   DS    X                       NUMBER OF ENTRIES IN GDGNT
         DS    XL11                    RESERVED
         MEND  */
        %GDGNTBSL: ;
  DCL 1 GDGNT BASED(GDGNTPTR),         /* GDG NAME TABLE             */
       2 GNTNEXTP PTR(24)BDY(WORD) ,  /* POINTER TO RECORD PREFIX   */
                                       /* OF NEXT GDGNT              */
       2 GNTID CHAR(1),                /* GDG NAME TABLE ID          */
       2 GNTNEXTR PTR(31),             /* POINTER TO RECORD OF NEXT  */
                                       /* GDGNT                      */
       2 GNTGRPEN(4) CHAR(39),         /* GDG NAME TABLE ENTRIES     */
        3 GNTNAME CHAR(35),            /* GDG GROUP NAME             */
        3 GNTBASE CHAR(4),             /* GENERATION BASE NUMBER     */
       2 GNTENT FIXED(8),              /* NUMBER OF OF ENTRIES IN    */
                                       /* GDGNT                      */
       2 * CHAR(11);                   /* RESERVED                   */
./ ADD NAME=IEFZB432
 /********************************************************************/
 /*                                                                  */
 /* NAME - IEFZB432                                                  */
 /*                                                                  */
 /* DESCRIPTIVE NAME - ALLOCATION COMMUNICATION AREA                 */
 /*                                                                  */
 /* SUPPORT CODE - YO2670                                            */
 /*                                                                  */
 /* FUNCTION -                                                       */
 /*   THIS STRUCTURE MAPS THE NUCLEUS RESIDENT CSECT, QMWR (ASSEMBLY */
 /*   MODULE IEFATECB), WHICH CONTAINS UNIVERSAL INFORMATION FOR ALL */
 /*   ALLOCATIONS IN THE SYSTEM. SPECIFICALLY, IT IS USED BY THE     */
 /*   VOLUME MOUNT AND VERIFY ROUTINES TO LOCATE THE MVCA CHAIN, AND */
 /*   BY IEFAB424 (BUILD EDL) TO LOCATE THE NUCLEUS RESIDENT ROUTINE,*/
 /*   IEFAB438 (DDR COUNT ROUTINE). THE CVT CONTAINS THE ADDRESS OF  */
 /*   THE QMWR CSECT.                                                */
 /*   NOTE: THIS STRUCTURE REPLACES THE ALLOCATION/TERMINATION       */
 /*   COMMUNICATION AREA OF OS/VS2 RELEASE 1.                        */
 /*                                                                  */
 /* METHOD OF ACCESS                                                 */
 /*   PL/S - DCL ACTAPTR PTR(31)                                     */
 /*          OR RFY ATCA BASED(CVTQMWR)                              */
 /*                                                                  */
 /********************************************************************/
 DCL
   1 ATCA BASED(ATCAPTR) BDY(WORD),    /*ATCA                        */
     2 ATCA438P PTR(31),               /*PTR TO DDR COUNT ROUTINE    */
     2 *        FIXED(31),             /*RESERVED                    */
     2 *        PTR(31),               /*RESERVED                    */
     2 ATCAMVCP PTR(31);               /*PTR TO FIRST MVCA ON CHAIN  */
 DCL
   IEFAB438 ENTRY BASED(ATCA438P);
./ ADD NAME=IEFZB435
*   %GOTO PDIBSL;       /* BILINGUAL MAPPING
         MACRO
         IEFZB435
*
*        PASSED DATA SET INFORMATION
*
*        OS/VS2 REL.2     DATE: SEPTEMBER 12, 1972    VERSION: 001
*
PDI      DSECT
*
*        PDI BLOCK(PDIB) - ID=21(HEX)
*
PDIBLOCK DS    0F
PDINPDIP DS    CL3      DA ADDR OF NEXT PDQ DIRECTORY BLOCK,0 IF LAST
PDICTR   DS    1X       NUMBER OF PDI ENTRIES IN THIS PDI BLOCK
PDIBNXTP DS    1F       SVAB CHAIN POINTER
PDIENTRY DS    CL168    FROM 1 TO 3 PDI ENTRIES
PDIE     DSECT
PDIDSNAM DS    CL44     DATA SET NAME
PDIUNWA  DS    CL1      STATUS BYTE
PDIISTAT EQU   128      INITIAL STATUS IS OLD
PDICSTAT EQU   64       CURRENT STATUS IS OLD
PDIPASIN EQU   32       PASS SATISFIED
PDIJOBLB EQU   2        DD THAT PASSED IS JOBLIB
         DS    CL1      RESERVED
PDISTPNO DS    CL2      CURRENT STEP NUMBER
PDISIOTA DS    CL3      PASS/RECEIVE SIOT SVA,DEPENDING ON PASS IND.
         DS    CL1      RESERVED
PDISIOTP DS    CL4      PASS SIOT SVAB, DURING UNALLOCATION.
PDIBLKID EQU   33       SWA BLOCK ID FOR PDIB
PDIBLKLN EQU   176      PDIB LENGTH IN SWA
         MEND           */
*%PDIBSL:;
*/*      PASSED DATA SET INFORMATION.                                */
*/*                                                                  */
*/*      OS/VS2 REL.2    DATE: SEPTEMBER 12,1972     VERSION: 001    */
*/*                                                                  */
*/*      PDI BLOCK(PDIB) - ID = 21(HEX)                              */
*/*                                                                  */
*   DCL 1 PDIBLOCK BASED(PDIBLPTR),    /* PDI BLOCK (PDIB)           */
*         2 PDINPDIP FIXED(24) BDY(WORD), /* SVA CHAIN POINTER.      */
*         2 PDICTR FIXED(8),           /* N0. OF PDIES IN THIS PDIB  */
*         2 PDIBNXTP PTR(31),          /* SVAB CHAIN POINTER         */
*         2 PDIENTRY CHAR(168);        /* FROM 1 TO 3 PDI ENTRIES    */
*/*                                                                  */
*   DCL 1 PDIE(3) BASED(ADDR(PDIENTRY)), /* PDI ENTRY                */
*         2 PDIDSNAM CHAR(44),         /* PASSED DATA SET NAME.      */
*         2 PDIUNWA CHAR(1),           /* STATUS BYTE                */
*           3 PDIISTAT BIT(1),         /* INITIAL STATUS IF ON=OLD   */
*           3 PDICSTAT BIT(1),         /* CURRENT STATUS IF ON=OLD   */
*           3 PDIPASIN BIT(1),         /* PASS INDICATOR 1=PASS,0=REC*/
*           3 * BIT(3),                /* RESERVED                   */
*           3 PDIJOBLB BIT(1),         /* DD THAT PASSED IS JOBLIB.  */
*           3 * BIT(1),                /* RESERVED                   */
*         2 * CHAR(1),                 /* RESERVED                   */
*         2 PDISTPNO FIXED(15),        /* STEP NUMBER THAT PASSED.   */
*         2 PDISIOTA FIXED(24) BDY(WORD), /* PASS/RECEIVE SIOT SVA,
*                                         DEPENDING ON PASS IND.     */
*         2 * CHAR(1),                 /* RESERVED                   */
*         2 PDISIOTP PTR(31);          /* SVAB OF PASS SIOT,
*                                         DURING UNALLOCATION.       */
*   DCL PDIBLKID FIXED(8) CONSTANT(33); /* SWA PDIB IDENTIFIER.      */
*   DCL PDIBLKLN FIXED(31) CONSTANT(176);/* PDIB LENGTH IN SWA.      */
* /*                  END OF PDI                                     */
./ ADD NAME=IEFZB4D5
         MACRO
         IEFZB4D5 &DSECT=YES
.*  FROM DATA AREAS, VOL. 2
         AIF ('DSECT' EQ 'NO').DSQDS
DSABQDB  DSECT ,
         AGO   .DSQCOM
.DSQDS    ANOP
DSABQDB  DS    0D
.DSQCOM  ANOP
DSQDBID  DC    CL4'DSAB'     ACRONYM IN EBCDIC -DSAB-
DSQATTRS DS    XL2           QUEUE ATTRIBUTES
DSQRIURB EQU   X'80'           REBUILD RIU TABLE
DSQDBLN  DS    H             QDB LENGTH
DSQNELMS DS    F             NUMBER OF ELEMENTS ON QUEUE
DSQFRSTP DS    A             POINTER TO FIRST ELEMENT
DSQBADBC EQU   X'80'           BACKWARD CHAIN IS INCORRECT
DSQLASTP DS    A             POINTER TO LAST ELEMENT
DSQBADFC EQU   X'80'           FORWARD CHAIN IS INCORRECT
DSQFDSP  DS    H             FORWARD POINTER DISPLACEMENT
DSQBDSP  DS    H             BACKWARD POINTER DISPLACEMENT
DSQPCPID DS    XL4           CELL POOL ID
DSQRIUTP DS    A             RIU TABLE ADDRESS
         MEND  ,
./ ADD NAME=IEFZB506
* /*     05/10/72                                                   */
*   %GOTO ZB506PLS;                                                 /*
         MACRO
         IEFZB506
ZB506    DSECT
SWBUFPTR DS    0F                  FOR READ OR WRITE - BUFFER ADDRESS
SWASNVA  DS    CL3                 FOR ASSIGNS (SVA)
SWASNZO  DS    CL1                 4TH BYTE OF SVA0 - FOR ASSIGNS
*                                  REMAINDER NOT USED FOR ASSIGNS
SWROWVA  DS    CL3                 SVA FOR READ OR WRITE
SWWRTID  DS    CL1                 BLOCK ID FOR WRITE
         MEND                                                       */
*%ZB506PLS:;
*   DCL
*         1 SWAMMEPA BASED(EPAPTR),        /* MOVE MODE EPA MAPPING */
*           2 SWBUFPTR PTR(31),            /* BUFFER ADDRESS FOR    */
*                                          /* READ OR WRITE         */
*             3 SWASNVA PTR(24) BDY(BYTE), /* 3 BYTE SVA FOR ASSIGN */
*             3 SWASNZO PTR(8),            /* SET TO 0 BY ASSIGN    */
*                                          /* REMAINDER NOT USED    */
*                                          /* FOR ASSIGNS           */
*           2 SWROWVA PTR(24) BDY(BYTE),   /* SVA FOR READ OR WRITE */
*           2 SWWRTID CHAR(1);             /* BLOCK ID FOR WRITE    */
./ ADD NAME=IEFZB507
* % GOTO   JNLPRO;     /*                                        @H1A
           MACRO
           IEFZB507
.*/ %JNLPRO: ;         /*                                        @H1A*/
*/********************************************************************/
*/* MODULE NAME = IEFZB507                                       @H1A*/
*/*                                                                  */
*/* DESCRIPTIVE NAME = JOURNAL WRITE PARAMETER LIST                  */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP., 1982               @H1A*/
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY                */
*/*             OF IBM, REFER TO COPYRIGHT INSTRUCTIONS              */
*/*             FORM NUMBER G120-2083                                */
*/*                                                                  */
*/*  STATUS = OS/VS2 JBB1328                                     @H1C*/
*/*                                                                  */
*/*  MODULE TYPE = MACRO                                         @H1A*/
*/*                                                                  */
*/*  FUNCTION =                                                  @H1A*/
*/*                                                                  */
*/*              THE FOLLOWING INFORMATION IS USED AS INPUT          */
*/*              TO THE JOURNAL/WRITE ROUTINE (IEFXB500)             */
*/*                                                                  */
*/*  INVOCATION =                                                @H1A*/
*/*                                                                  */
*/*               PL/S - DCL JNLPTR PTR(31)                      @H1A*/
*/*                        OR                                    @H1A*/
*/*                      %DCL JNLATTR CHAR                       @H1A*/
*/*                      %JNLATTR='BDY(WORD)'                    @H1A*/
*/*                      (IF JNLATTR IS NOT DECLARED, THEN       @H1A*/
*/*                       JNLPARM IS BASED ON JNLPTR.)           @H1A*/
*/*                                                              @H1A*/
*/*                        AND                                   @H1A*/
*/*                                                              @H1A*/
*/*                      %DCL JNLXATR CHAR                       @H1A*/
*/*                      %JNLXATR='BDY(WORD)'                    @H1A*/
*/*                      (IF JNLXATR IS NOT DECLARED, THEN       @H1A*/
*/*                       THE EXTENSION IS BASED ON JNLPPTRX.)   @H1A*/
*/*                                                                  */
*/*                      %INCLUDE SYSLIB(IEFZB507)               @H1A*/
*/*                                                                  */
*/*               BAL  - DSECT IS GENERATED                      @H1A*/
*/*                                                                  */
*/*  CHANGE ACTIVITY = Z40FPPJ,H1                                @H1C*/
*/*   $H1= EXTJCL JBB1328 811202 PD2R: SUPPORT FOR EXTENDED JCL  @H1A*/
*/*                                                                  */
*/********************************************************************/
*/* A - ADDED EXTENSION BLOCK                                @Z40FPPJ*/
*/* A - ADDED BIT TO INDICATE CALLER IS SJF                      @H1A*/
*/* C - CHANGED COMMENT FIELD WITH JNLBLKAD                      @H1A*/
*    %GO TO JNLPLS;                /* BILINGUAL MAPPING
JNLPARM   DSECT
JNLPCALL  DS      CL1              CALLER INDICATOR
JNLSWAMI  EQU     X'80'            SWA MOVE
JNLSWALI  EQU     X'40'            SWA LOCATE
JNLINIT   EQU     X'20'            INITIATOR CALL AFTER ALLOCATION
JNLDRCT   EQU     X'10'            DIRECT WRITE TO JOURNAL
JNLSJF    EQU     X'08'            CALL FROM SJF                   @H1A
JNLPRTCD  DS      CL1              RETURN CODE FIELD
JNLERR    EQU     X'80'            JOURNAL ERROR RETURN CODE
JNLABSNT  EQU     X'40'            NO JOURNAL RETURN CODE
          DS      CL2              RESERVED
JNLPPTRX  DS      CL4              PTR TO EXTENSION BLOCK      @Z40FPPJ
JNLPARMX DSECT                                                 @Z40FPPJ
JNLBLKAD DS    F          SVA OF SWA BLOCK OR                      @H1C
*                         PTR TO NON-SWA BLOCK TO BE JOURNALED OR  @H1A
*                         PTR TO THE QMPA                          @H1A
JNLPID   DS    CL1        NON-SWA BLOCK ID                     @Z40FPPJ
JNLPRLNG DS    CL3        LENGTH OF BLOCK                      @Z40FPPJ
JNLRBN   DS    CL4         NON-SWA BLOCK RBN OR ZERO           @Z40FPPJ
JNLNBLK  DS    F           PTR TO NEXT PARMLIST EXTENSION OR ZERO
         MEND  */
*%JNLPLS:;
* %IF JNLATTR='' %THEN %JNLATTR = 'BASED(JNLPTR)';
* DCL 1 JNLPARM JNLATTR,        /*                               @H1C*/
*       2 JNLPCALL PTR(8),      /* CALLER INDICATOR                  */
*         3 JNLSWAMI BIT(1),    /* SWA MOVE                          */
*         3 JNLSWALI BIT(1),    /* SWA LOCATE                        */
*         3 JNLINIT BIT(1),     /* INITIATOR CALL AFTER ALLOCATION   */
*         3 JNLDRCT BIT(1),     /* DIRECT WRITE TO JOURNAL           */
*         3 JNLSJF  BIT(1),     /* CALL FROM SJF                 @H1A*/
*         3 * BIT(3),           /* RESERVED                      @H1C*/
*       2 JNLPRTCD PTR(8),      /* RETURN CODE FIELD                 */
*         3 JNLERR BIT(1),      /* JOURNAL ERROR RETURN CODE         */
*         3 JNLABSNT BIT(1),    /* NO JOURNAL RETURN CODE            */
*         3 * BIT(6),           /* RESERVED                          */
*       2 * CHAR(2),            /* RESERVED                          */
*       2 JNLPPTRX PTR(31);     /* PTR TO EXTENSION BLOCK    @Z40FPPJ*/
* %IF JNLXATR='' %THEN %JNLXATR = 'BASED(JNLPPTRX)';
* DCL 1 JNLPARMX JNLXATR,                               /*       @H1C*/
*      2 JNLBLKAD PTR(31),   /* SVA OF SWA BLOCK OR
*                               PTR TO NON-SWA BLOCK TO BE JOURNALED OR
*                               PTR TO QMPA                      @H1C*/
*      2 JNLPID PTR(8),      /* NON-SWA BLOCK ID             @Z40FPPJ*/
*      2 JNLPRLNG PTR(24),   /* BLOCK LENGTH                 @Z40FPPJ*/
*      2 JNLRBN CHAR(4),     /* NON-SWA BLOCK RBN OR ZERO    @Z40FPPJ*/
*      2 JNLNBLK PTR(31);    /* NEXT BLOCK ADDR/ZERO         @Z40FPPJ*/
*/*                                                                  */
*/*                 END JNLPARM                                      */
./ ADD NAME=IEFZB600
*   %GOTO GPBSL;
*                                  /*
         MACRO
         IEFZB600
*                                                                    */
* /* MACMEAN GETPTWT MEANS GETPART WORK TABLE                        */
* /* MACCOMP Y-2 SC1B6/PZD90                                         */
* /* MACSTAT Y-2 72339/013400                                        */
* /*
GETPTWT  DSECT
GPSIZEA  DS    F -     ADDR OF REGION SIZE LIST
GPADDLT  DS    F -     ADDR OF REGION ADDRESS LIST
GPCODE   DS    X -     GETMAIN CODE FOR SUPERVISOR
GPECBMOD EQU   X'81' - INDICATES ECB MODE
GPSUBP   DS    X -     SUBPOOL
GPREAL   EQU   242 -   V=R SUBPOOL
GPVIRT   EQU   247 -   V=V SUBPOOL
         DS    H -     RESERVED
GPADDH0  DS    0F
GPHIARC0 DS    X'00' - INDICATES H0
GPH0ADD  DS    AL3 -   SPECIFIC ADDRESS OR 0
GPSIZEH0  DS   F -     REGION SIZE
GPENDLST EQU   X'80' - INDICATES END OF LIST
GPFLGS   DS    X
GPMSG    EQU   X'80' - CURRENT MODULE HAS ISSUED MSG IEF092I
GPREGION EQU   X'40' - A SPECIAL REGION IS REQUIRED              Y02669
GPERROR  DS    C     - RETURN CODE OR POST CODE FROM GETPART     Y02669
         DS    XL2 -                                             Y02669
GPECBLST DS    0F -    ECB LIST
GPGPECBP DS    F -     POINTER TO GETPART ECB                    Y02652
GPCECBP  DS    F -     POINTER TO CANCEL ECB
GPBIT    EQU   X'80'   TO MARK END OF ECB LIST
GPSIZE   EQU   *-GETPTWT - SIZE OF GWT
         MEND  , */
*%GPBSL:
*   ;
* /* MACMEAN GWT MEANS GETPART WORK TABLE                            */
* /* MACCOMP Y-2 SC1B6/PZD90                                         */
* /* MACSTAT Y-2 72339/013400                                        */
*   DECLARE
*         1 GWT BASED(GWTPTR),
*           2 GPSIZEA PTR(31),      /* ADDR OF REGION SIZE LIST      */
*           2 GPADDLT PTR(31),      /* ADDR OF REGION ADDRESS LIST   */
*           2 GPCODE PTR(8),        /* X'01' INDICATES ECB MODE      */
*           2 GPSUBP PTR(8),        /* SUBPOOL 247 OR 242            */
*           2 * PTR(16),            /* RESERVED                      */
*           2 GPADDH0 PTR(31),
*             3 GPHIARC0 PTR(8),    /* INDICATES H0                  */
*             3 GPH0ADD PTR(24),    /* SPECIFIC ADDRESS OR 0         */
*           2 GPSIZEH0 PTR(31),     /* REGION SIZE                   */
*             3 GPENDLST BIT(1),    /* INDICATES END OF LIST         */
*           2 * PTR(31),
*             3 GPFLGS CHAR(1),
*               4 GPMSG BIT(1),     /* CURRENT MODULE HAS ISSUED
*                                      IEF092I                       */
*               4 GPREGION BIT(1),  /* A SPECIAL REGION IS
*                                      REQUIRED                Y02669*/
*             3 GPERROR CHAR(1),    /* A RETURN CODE OR POST CODE
*                                      FROM GETPART            Y02669*/
*           2 GPECBLST CHAR(8) BDY (WORD), /* ECB LIST               */
*             3 GPGPECBP PTR(31),   /* POINTER TO GETPART ECB  Y02652*/
*             3 GPCECBP PTR(31),    /* POINTER TO CANCEL ECB         */
*               4 GPBIT BIT(1);     /* TO MARK END OF ECB LIST       */
./ ADD NAME=IEFZB622
*        %GOTO STEPLBSL;           /*
         MACRO
         IEFZB622
STEPL    DSECT
*                                                                    */
* /* MACMEAN STEPL MEANS STAE EXIT PARAMETER LIST                    */
* /* MACCOMP Y-2 SC1B6/PZD90                                         */
* /* MACSTAT Y-2 72339/013400                                        */
* /*     THIS MACRO CONTAINS INFORMATION REQUIRED BY THE         Y02653
*        INITIATOR TASK RECOVERY ROUTINE.                        Y02653
STELCT   DS    F -   POINTER TO LCT
STEPARAM DS    F -   POINTER TO IEFPARAM
STEFLAGS DS    B -   FLAGS
STERETRY EQU   X'80' RETRY IS BEING ATTEMPTED. NEXT JOB MUST RUN.
STETJMR  EQU   X'40' RETRY IN PROGRESS. THIS JOB MUST RUN.
STEJOBLB EQU   X'20' JOBLIB WAS LAST LIB. OPENED
STESTPLB EQU   X'10' STEPLIB WAS LAST LIB. OPENED
STEFCHLB EQU   X'08' FETCHLIB WAS LAST LIB. OPENED
         DS    XL3 - RESERVED
         DS    F -   RESERVED
STELEN   EQU   *-STEPL SIZE OF STEPL
         MEND , */
*%STEPLBSL: ;
* /* MACMEAN STEPL MEANS STAE EXIT PARAMETER LIST                    */
* /* MACCOMP Y-2 SC1B6/PZD90                                         */
* /* MACSTAT Y-2 72339/013400                                        */
*   DECLARE
*         1 STEPL BASED(STEPLPTR),
*        /*THE STEPL CONTAINS INFORMATION REQUIRED BY THE      Y02653
*          INITIATOR TASK RECOVERY ROUTINE.                    Y02653*/
*           2 STELCT PTR(31),      /*POINTER TO LCT                  */
*           2 STEPARAM PTR(31),    /*POINTER TO IEFPARAM             */
*           2 *        PTR(31),
*             3 STEFLAGS BIT(8),
*               4 STERETRY BIT(1), /*RETRY IS BEING ATTEMPTED.
*                                    NEXT JOB MUST RUN.              */
*               4 STETJMR BIT(1),  /*RETRY IN PROGRESS. THIS
*                                    JOB MUST RUN.                   */
*               4 STEJOBLB BIT(1), /* JOBLIB WAS LAST LIB. OPENED    */
*               4 STESTPLB BIT(1), /* STEPLIB WAS LAST LIB. OPENED   */
*               4 STEFCHLB BIT(1), /* FETCHLIB WAS LAST LIB. OPENED  */
*           2 *        PTR(31);
./ ADD NAME=IEFZB630
*   %GOTO PARBSL; /*
         MACRO
         IEFZB630
IEFPARAM DSECT
*                                                                    */
* /* MACMEAN IEFPARAM MEANS INTERNAL INITIATOR PARAMETER LIST        */
* /* MACCOMP Y-2 SC1B6/PZD11                                         */
* /* MACSTAT Y-2 73239/013400                                        */
* /*
*        THIS MACRO REPRESENTS A PARAMETER LIST PASSED BETWEEN
*        SEVERAL INITIATOR MODULES. IT IS GOTTEN BY IEFSD162 AND
*        FREED BY IEFSD164.
IEFUSADD DS    0F                 ADDRESS OF USER PARMETERS
LCTADDR  DS    0F                 ADDR OF LCT FOR IEFSD164        M0138
JOBSTCB  DS    1F                 ADDRESS OF JOB STEP TCB
IEFDCBAD DS    0F                 ADDRESS OF FETCHLIB DCB
COMPCODE DS    1F                 COMPLETION CODE FOR SVC 34
IEFREMLS DS    F                  ADDRESS OF ATTACH LIST
IEFLCTAD DS    F                  ADDRESS OF LCT
IEFTCBAD DS    0A                 INITIATOR TCB ADDRESS
         DS    B                  RESERVED                       Y02652
INITTCB  DS    AL3                ADDRESS OF INIT TCB
IEFTIOTA DS    F                  ADDRESS OF WORD WHICH POINTS   Y02669
*                                 TO JOB STEP'S TIOT             Y02669
IEFECBLT DS    0F                 ECB LIST
ATTECBAD DS    F                  ADDRESS OF ATTACH ECB
CANECBAD DS    F                  ADDRESS OF CANCEL ECB
PAROMEMP DS    C                  INITIATOR MEMORY PRIORITY      Y02669
PARNMEMP DS    C                  STEP MEMORY PRIORITY           Y02669
PARPRFMF DS    C                  PERFORMANCE GROUP (FROM SCT)   Y02655
         DS    C                  RESERVED                       Y02652
IEFAECB  DS    F                  ATTACH ECB
PARTIOTB DS    F                  ADDRESS OF INIT'S TIOT         Y02653
PARSRMEC DS    F                  ECB TO COMMUNICATE WITH SRM   YM03531
IEFPLEND EQU   *                                                   I270
IEFPSIZE EQU   IEFPLEND-IEFPARAM                                   I270
         MEND  , */
*%PARBSL: ;
* /* MACMEAN IEFPARAM MEANS INTERNAL INITIATOR PARAMETER LIST        */
* /* MACCOMP Y-2 SC1B6/PZD11                                         */
* /* MACSTAT Y-2 73239/013400                                        */
*   DECLARE
*         1 IEFPARAM BASED(PARPTR),
*        /*IEFPARAM REPRESENTS A PARAMETER LIST PASSED BETWEEN
*          SEVERAL INITIATOR MODULES. IT IS GOTTEN BY IEFSD162
*          AND FREED BY IEFSD164.                                    */
*           2 IEFUSADD PTR(31),    /*ADDR OF USER PARMS              */
*           2 IEFDCBAD PTR(31),    /*ADDR OF FETCHLIB DCB            */
*           2 IEFREMLS PTR(31),    /*ADDR OF ATTACH LIST             */
*           2 IEFLCTAD PTR(31),    /*ADDR OF LCT                     */
*           2 IEFTCBAD PTR(31),    /*INITIATOR TCB ADDR              */
*             3 *        BIT(8),   /*RESERVED                  Y02652*/
*             3 INITTCB PTR(24),   /*ADDR OF INITIATOR TCB           */
*           2 IEFTIOTA PTR(31),    /*ADDR OF WORD WHICH POINTS
                                     TO JOB STEP'S TIOT        Y02669*/
*           2 IEFECBLT CHAR(8) BDY(WORD),  /*ECB LIST                */
*             3 ATTECBAD PTR(31),  /*ADDR OF ATTACH ECB              */
*             3 CANECBAD PTR(31),  /*ADDR OF CANCEL ECB              */
*
*           2 * PTR(31),
*             3 PAROMEMP PTR(8),   /*INIT. MEMORY PRIORITY    Y02669*/
*             3 PARNMEMP PTR(8),   /*STEP MEMORY PRIORITY     Y02669*/
*             3 PARPRFMF PTR(8),   /*PERFORMANCE GROUP (FROM SCT)
*                                                              Y02655*/
*           2 IEFAECB PTR(31),     /*ATTACH ECB                      */
*           2 PARTIOTB PTR(31),    /*ADDR OF INITIATOR TIOT    Y02653*/
*           2 PARSRMEC PTR(31);    /*ECB TO COMMUNICATE WITH SRM
                                                              YM03531*/
*   DECLARE                        /*OVERLAY FIELDS IN IEFPARAM      */
*         JOBSTCB  DEFINED(IEFUSADD), /*ADDR OF JOB STEP TCB         */
*         LCTADDR DEFINED(IEFUSADD), /*ADDR OF LCT FOR IEFSD164      */
*         COMPCODE DEFINED(IEFDCBAD); /*COMP CODE FOR SVC 34         */
./ ADD NAME=IEFZB9RD
* % GOTO EREPLPRO;   /*                                          @H1C
         MACRO
         IEFZB9RD
.*/ %EREPLPRO: ;     /*                                          @H1A*/
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME = IEFZB9RD                                       @H1A*/
*/*                                                                  */
*/* DESCRIPTIVE NAME = CONVERTER/INTERPRETER ESTAE RECOVERY      @H1A*/
*/*                    PARAMETER LIST                            @H1A*/
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP., 1982               @H1A*/
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY            @H1A*/
*/*             OF IBM, REFER TO COPYRIGHT INSTRUCTIONS          @H1A*/
*/*             FORM NUMBER G120-2083                            @H1A*/
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1328                                      @H1A*/
*/*                                                                  */
*/* MODULE TYPE = MACRO                                          @H1A*/
*/*                                                                  */
*/* INVOCATION =                                                 @H1A*/
*/*                                                                  */
*/*           PL/S - DCL EREPLPTR PTR(31)                        @H1A*/
*/*                  %INCLUDE SYSLIB(IEFZB9RD)                   @H1A*/
*/*                                                                  */
*/*           BAL  - DSECT IS GENERATED                          @H1A*/
*/*                                                                  */
*/* NOTES =                                                      @H1A*/
*/*                                                                  */
*/*  THIS MACRO CONTAINS INFORMATION REQUIRED BY THE CONVERTER       */
*/*  AND INTERPRETER ESTAE RECOVERY ROUTINES.                        */
*/*                                                                  */
*/* CHANGE ACTIVITY = H1                                         @H1A*/
*/*                                                                  */
*/* $H1= EXTJCL  JBB1328 811202 PD43: SUPPORT FOR EXTENDED JCL   @H1A*/
*/*                                                                  */
*/********************************************************************/
*/* A - FIELDS ADDED TO SUPPORT DUMP TITLE                       @H1A*/
*/* A - FIELDS ADDED TO SUPPORT REASON CODE IN MESSAGE           @H1A*/
*/*                                                                  */
*        %GOTO EREPLBSL; /*
EREPL    DSECT
*
EREPLCWA DS    F     POINTER TO CWA FOR CONVERTER ESTAE EXIT.
EREPLIWA DS    F     POINTER TO IWA FOR INTERPRETER ESTAE EXIT.
EREPLRSV DS    F     ADDRESS OF CALLER'S SAVEAREA
EREPFLGS EQU   *     BEGINNING OF INDICATOR FLAGS.
EREPFLG1 DS    B     FLAGS
EREPRCUR EQU   X'80' RECURSION BIT.IF ENTRY TO EXIT ROUTINE IS MADE
*                    WITH THIS BIT ON,THEN AN ABEND DURING RECOVERY
*                    ATTEMPT OCCURRED.
EREPRES1 DS    XL3   RESERVED                                     @H1A
EREPRES2 DS    F     RESERVED                                     @H1A
EREPCMPC DS    CL3   ABEND CODE PASSED BY RTM                     @H1A
EREPUNCC DS    CL5   UNPACKED ABEND CODE                          @H1A
         ORG   EREPUNCC                                           @H1A
EREPTRCC DS    CL3   TRANSLATED ABEND CODE                        @H1A
         ORG   EREPUNCC+5                                         @H1A
EREPDTLE DS    CL58  DYNAMIC DUMP TITLE                           @H1A
         ORG   EREPDTLE+7                                         @H1A
EREPABCD DS    CL3   ABEND CODE                                   @H1A
         ORG   EREPDTLE+58                                        @H1A
EREPRES3 DS    CL18  RESERVED                                     @H1A
EREPLEN  EQU   *-EREPL  LENGTH OF PARAMETER LIST.
         MEND  */
*%EREPLBSL: ;
*        DECLARE
*        1 EREPL BASED(EREPLPTR),
*          2 EREPLCWA PTR(31),    /*POINTER TO CWA-CONVERTER*/
*          2 EREPLIWA PTR(31),    /*POINTER TO IWA-INTERPRETER*/
*          2 EREPLRSV PTR(31),    /*ADDRESS OF CALLER'S SAVEAREA*/
*          2 EREPFLGS,            /*BEGINNING OF FLAG FIELD  */
*            3 EREPFLG1 BIT(8),   /*FIRST FLAG FIELD */
*              4 EREPRCUR BIT(1), /*RECURSION BIT-IF ENTRY IS
*                                   MADE TO EXIT ROUTINE WITH
*                                   THIS BIT ON,THEN ABEND OCCURRED
*                                   DURING RECOVERY PROCESSING. */
*              4 *        BIT(7), /*RESERVED*/
*            3 EREPRES1  BIT(24), /*RESERVED*/
*          2 EREPRES2 FIXED(31),  /*RESERVED*/
*          2 EREPCMPC CHAR(3),    /*ABEND CODE FROM RTM      @H1A*/
*          2 EREPUNCC CHAR(5),    /*UNPACKED ABEND CODE      @H1A*/
*           3 EREPTRCC CHAR(3),   /*TRANSLATED CODE          @H1A*/
*           3 *        CHAR(2),   /*                         @H1A*/
*          2 EREPDTLE CHAR(58),   /*DYNAMIC DUMP TITLE       @H1A*/
*            3 * CHAR(7),         /*TITLE LENGTH + ABEND=    @H1A*/
*            3 EREPABCD CHAR(3),  /*ABEND CODE               @H1A*/
*            3 * CHAR(48),        /*                         @H1A*/
*          2 EREPRES3 CHAR(18);   /*RESERVED                 @H1A*/
./ ADD NAME=IEFZGTWA
         MACRO
         IEFZGTWA
* 630000-639000                                                   M3759
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * O77
*                                                                   O77
*              TERMINATION WORK AREA                                O77
*                                                                   O77
* THIS MACRO IS USED IN TERMINATION BY:                             O77
*              IEFZGST1  STEP DISPOSITION PROCESSING                O77
*              IEFZGST2  STEP UNALLOCATION PROCESSING               O77
*              IEFZHMSG  DISPOSITION/UNALLOCATION MSG RTN           O77
*              IEFZGJB1  JOB DISPOSITION/UNALLOCATION PROC          O77
*                                                                   O77
*  CORE IS GOTTEN FOR:                                              O77
*              STEP TERMINATION BY IEFYPJB3                         O77
*              JOB TERMINATION BY IEFZAJB3                          O77
*                                                                   O77
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * O77
         DS    0D
*                                  LCT SAVE AREA                    O77
WLCT1    DS    1F                                                   O77
CBDASW   EQU   32                  DIRECT ACCESS MASK               O77
UNALLOC  EQU   16                  IND FOR PASS THRU UNALLOC        O77
WLCT2    DS    1F                                                   O77
WLCT3    DS    1F                                                   O77
WLCT4    DS    1F                                                   O77
WQMPCA   DS    CL4                 Q-MGR PARM - CORE ADDR OF RCD TO O77
*                                  BE READ OR WRITTEN (R/W)         O77
WQMPEX   DS    CL4                 Q-MGR PARM - TTR OF RCD TO BE R/WO77
WVOLISTA DS    CL4                 STARTING ADDR OF VOLSER PARMLIST O77
WREGSAVE DS    15F                 IEFZHMSG'S REG SAVE AREA         O77
WR1      DS    3F                  REG SAVE AREA FOR S/R            O77
WR13     DS    1F                  SAVE AREA FOR R13                O77
WR14     DS    1F                  SAVE AREA FOR R14                O77
WPDQR0   DS    1F                  PDQ COUNTER SAVE AREA            O77
WPDQR5   DS    1F                  PDQ INDEX SAVE AREA              O77
WR2      DS    1F                  SAVE AREA FOR IEFZHMSG           O77
WPLISTSZ DS    CL2                 SIZE OF VOLSER PARM LIST         O77
WSWITCH1 DS    CL1                                                  O77
*                                                                   O77
*        BITS  0,4, AND 7 ARE STILL AVAILABLE                       O77
*                                                                   O77
CBREWIND EQU   64                  REWIND (DELETE RTN)              O77
CBTIOTSW EQU   32                  TIOT-FIRST                       O77
CBPDQFSW EQU   16                  PDQ-FIRST                        O77
CBNOVOLS EQU   4                   NO VOLUMES SWITCH                O77
CBMNTDSW EQU   1                   MOUNTED SWITCH                   O77
WSWITCH2 DS    CL1                                                  O77
*                                                                   O77
*        BITS  4, AND 7 ARE STILL AVAILABLE                         O77
*                                                                   O77
CBOVFLSW EQU   128                 OVERFLOW                         O77
CBPDQEND EQU   64                  PDQ END                          O77
CTIOTEND EQU   64                  TIOT END SWITCH                  O77
CNOCORE  EQU   32                  NO CORE SWITCH (P-LIST RTN)      O77
CJFCB1   EQU   16                  FIRST PASS SWITCH IN MOUNT       O77
CUCBSW   EQU   4                   UCB-FOUND                        O77
CBWTOSW  EQU   2                   WTO-ALSO                         O77
WSWITCH3 DS    CL1                 SWITCHES FOR SYSOUT              O77
*                                                                   O77
*                                                                   O77
CBMODIFY EQU   128                 FIRST LINE MODIFY SW             O77
CBNOTDEL EQU   64                  NOT DEL-PRINT RTN CODE           O77
CBPRIVAT EQU   32                  PRIVATE - DELETE RTN             O77
CBUNCAT  EQU   8                   UNCATLOG                         O77
CBZRTNCD EQU   4                   PRINT ZERO RTN CODES ONLY        O77
CBUNAL   EQU   2                   FIRST PASS SWITCH FOR UNALLOC    O77
CBMSGDUN EQU   2                   JOB TERM MSG SW                  O77
CBFAIL   EQU   1                   JOB FAILED FROM YPJB3         A47551
WSWITCH4 DS    CL1                                                  O77
CSIOTIN  EQU   128                 JOB TERMINATION BIT SIOT IN CORE O77
NONSUP   EQU   64                      MSG IS NON-SUPPRESSABLE    M3759
MSGABEND EQU   32                      MSGLEVEL=(X,1) OR ABEND    M3759
QMOPWRTE EQU   16                  WRITE INDICATOR FOR Q-MGR        O77
STASWTCH EQU   8                   PRESENCE OF DISPLAY STATUS       O77
ENQUCBQ5 EQU   4                   TERMINATION ENQ'ED ON Q5         O77
ENQINZH  EQU   2                   IEFZHMSG ENQ'ED ON Q5 ON ENTRY   O77
VOLBLKSW EQU   1                   CORE FOR EXT BLK OF JFCB GT 5 VOLO77
WVOLSAVE DS    CL2          SERIAL NUMBER                           O77
WPDQR7   DS    F             EXCHANGE AREA                          O77
*                                                                   O77
*                                  MACRO PARAMETER LIST             O77
WMACRPM1 DS    1F                  SPECIFIC MACRO PARM              O77
WMACRPM2 DS    AL4                 PTR TO DS NAME                   O77
WMACRPM3 DS    1F                  NOT USSED                        O77
WMACRPM4 DS    AL4                 PTR TO VOLUME PARM LIST          O77
WMACRPM5 DS    1F                  PTR TO DSCB TTR FOR CATLOG     M1836
*                                                                   O77
*                                  WTO PARAMETER AREA               O77
WPRIPARM DS    CL3                 HEADING FOR WTO                  O77
WPRINT   DS    CL121               BUFFER - STARTS AT WPRINT+1      O77
WJOBID   DS    CL1                 JOB ID SAVE AREA                 O77
WMVERBAS DS    1F                  MOUNT VERIFY BASE SAVE AREA      O77
WRETURNA DS    1F                  CALLER'S ADDR IN ZGLINK          O77
WREGADDR DS    1F                  ADDR OF REG SAVE AREA FOR ZHMSG  O77
WCOREMIN DS    1F                  MINIMUM AMOUNT WANTED            O77
WCOREMAX DS    1F                  MAXIMUM AMOUNT WANTED            O77
WCOREADR DS    1F                  ADDR OF SECONDARY CORE           O77
WGETCORE DS    1F                  AMOUNT ORE CORE OBTAINED         O77
WRWDR0   DS    2F                  REGISTER SAVE AREA               O77
DCELSAV1 EQU   WRWDR0              SAVE REG 6 FOR DATA CELL         O77
DCELSAV2 EQU   WRWDR0+4            SAVE REG 7 FOR DATA CELL         O77
WRWDR14  DS    2F                     FOR EXCP                      O77
DCELSAV3 EQU   WRWDR14             SAVE REG14                       O77
DCELNO   DS    X                                                    O77
DCELSW   DS    X                                                    O77
WSIOTCOR DS    1F                  ADDR OF SIOT FOR JOB TERM        O77
DISMOUNT DS    1F                  MULTIVOLUME UCB PTR              O77
PDQLOAD  EQU   *                   PDQ LOAD POINT (MUST BE LAST     O77
*                                    CARD OF THE WORKAREA)          O77
*              END  OF   WORKAREA  DSECT                            O77
         MEND
./ ADD NAME=IEHDBLKS
         MACRO
         IEHDBLKS
         COPY  LCGASMSW                                          SM4351
*A 284500 THIS MACRO CHANGES IS ONLY FOR MVS YA10594= XA10957= @ZA06543
*
*A 496000                           @YA09679=@SA74485=@XA10384=@ZA04411
*
*A273995,282500-283000,424020,483500                           @ZM40305
*A 215500,273991                                      @XA10378=@ZA04403
*D 217000,358100,359500,423000-700,493480                      @ZM42083
*C 424100                                                      @ZM42083
*                                                                  O122
*                                                              @ZM40033
*020000,280000                                                     O122
*
*    08/14/72           LEVEL=01
*
FUNCBLK  DSECT                         GENERAL FUNCTION BLOCK.
DDNAME1  DS    CL8                     FROMDD OR IPLDD DDNAME.
DDNAME2  DS    CL8                     TODD DDNAME.
FUNCSW   DS    CL1                     COMMAND INDICATOR SWITCH.
DUMP     EQU   X'10'                   DUMP CODE.
RESTORE  EQU   X'20'                   RESTORE CODE.
GETALT   EQU   X'30'                   GETALT CODE.
LABEL    EQU   X'40'                   LABEL CODE.
ANALYSIS EQU   X'50'                   ANALYSIS CODE.
FORMAT   EQU   X'60'                   FORMAT CODE.
IPLPROG  EQU   X'70'                   IPLPROG CODE.
         SPACE
SEQSW    DS    CL2                     KEYWORD INDICATOR SWITCHES.
FROMDD   EQU   X'80'                   FROMDD INDICATOR.
TODD     EQU   X'40'                   TODD INDICATOR.
CPYVOLID EQU   X'20'
BEGIN    EQU   X'10'                   BEGINNING ADDRESS INDICATOR
END      EQU   X'08'                   ENDING ADDRESS INDICATOR
FEATURE1 EQU   X'04'               RPS ON FROM DEVICE
FLAGTEST EQU   X'02'                   FLAG TEST INDICATOR.
PASSES   EQU   X'01'                   NUMBER OF PASSES INDICATOR.
*        SECOND BYTE OF 'SEQSW'                                 XL03145
NEWVOLID EQU   X'80'                   NEW VOLID INDICATOR.
FEATURE  EQU   X'40'               RPS ON TO DEVICE
VTOC     EQU   X'10'                   VTOC INDICATOR.
EXTENT   EQU   X'20'                   EXTENT INDICATOR.
IPLDD    EQU   X'08'                   IPL DDNAME INDICATOR.
TRACK    EQU   X'80'                   TRACK INDICATOR.
OWNERID  EQU   X'04'                   OWNER IDENTIFICATION INDICATOR.
PURGE    EQU   X'80'                   PURGE INDICATOR.
MSSFLG   EQU   X'01'                   INDICATES MSS CONVERT   @ZA04403
         SPACE
DEVSW    DS    CL1                     'FF' FOR DA,'00' FOR TAPE.
*                                        'F0' FOR LIST TYPE DEVICE.
COPYPTR  DS    1F                      ADDRESS OF COPY BLOCK, IF ANY.
FRTNPTR  DS    1F                      RETURN POINTER TO FUNCTION.
IODEVCON DS    1F                      POINTER TO DEVICE CONSTANTS.
FUCBPTR  DS    1F                      POINTER TO UCB FOR DEVICE BEING
*                                        READ.
FSIZE    DS    CL2                     SIZE OF THIS FUNCTION BLOCK.
IDEVMOD  DS    CL1                     WINCHESTER I/P MODEL NO. XL03130
ODEVMOD  DS    CL1                     WINCHESTER O/P MODEL NO. XL03130
FLGBYT1  DS    CL1                      FLAG BYTE               XL03130
*                                       X'01' = 1ST TIME THRU   XL03130
*                                       X'02' = SET DOS BIT     XL03130
EMU      EQU   X'10'                    DEVICE EMUL. ACTIVE    @Z30RSAG
FLGBYT2  DS    CL1                      FLAG BYTE 2            @ZA03356
MSSMOD   EQU   X'01'                   X'01' = MSS ALT TRK FLG @ZA04403
CPYREJEC EQU   X'04'                   RACF DISALLOWS CPYVOLID @G32DSPD
AOUTSW   DS    CL1                     SWITCH FOR IEHDAOUT         O122
*    IEHDAOUT MUST BE CHANGED IF NEW SWITCH SETTINGS ARE DEFINED.  O122
FMTTRK   EQU   X'00'                   FORMAT TRACK                O122
FMTCNT   EQU   X'01'                   FORMAT COUNT FIELDS ONLY    O122
NOFMT    EQU   X'02'                   DO NOT FORMAT DATA          O122
RECNUM   DS    CL1                     HIGHEST REC. NO. IN ERROR.  O122
TUCBPTR  DS    1F                      POINTER TO UCB FOR DEVICE BEING
*                                        WRITTEN ON.
PAD2     DS    1F                       RESERVED USE AS NEEDED @ZM40305
ERPSAREA DS    6F                       ERP SENSEBYTE AREA     @ZA06543
         SPACE
UNIQUE   EQU   *                       FUNCTION DEPENDENT FROM HERE ON.
*   THIS PORTION APPLIES TO DUMP AND RESTORE.
UCBSEEK  DS    1F                       COPY OF OLD UCBSKA      YM01098
CONTROL  DS    0F                      CONTROL RECORD ON RESTORE TAPE.
CCHHBEG  DS    1F                      CCHH OF FIRST TRACK.
CCHHEND  DS    1F                      CCHH+1 OF LAST TRACK.
CCHHONE  DS    1F                      CCHH OF FIRST TRACK/THIS VOLUME.
CODE     DS    2F                      CODE TO IDENTIFY RESTORE TAPE.
DUMPSW   DS    CL1                     'F0'=FULL DUMP,'00'=PARTIAL.
DEVCODE  DS    CL1                     DEVICE TYPE CODE.
DEVMOD   DS    CL1                     WINCHESTER MODEL NUMBER. XL03130
BRCHVAL  DS    CL1                      IEHDDOIO/IEHDEXCP BRCH  SA53223
*                                       TABLE VALUE INTERFACE   SA53223
REELCK   DS    1F                      TRAILER LABEL CONTROL.
IMOVSW   DS    CL1
ALTDATA  DS    CL6                     ALTERNATE TRACK INFORMATION.
SWITCH   DS    CL1                     DUMP INFORMATION SWITCH.
TRKOVFL  EQU   X'10'                   TRACK OVERFLOW INDICATOR.
DUMPALL  EQU   X'20'                   DUMP ALL TRACKS INDICATOR.
R2EOF    EQU   X'40'                   REC 2 THIS TRK (MVM)    @ZA06534
CCWSOUT  EQU   X'80'                   SET WHEN WRTING CCW RECORD.
PASSSW   EQU   X'08'                   PASSWORD PARAMETER SPECIFIED.
TAPENL   EQU   X'04'                   SET IF OUTPUT TAPE(S) NON-LABEL
EOV      EQU   X'02'                   SET WHEN EOV HIT ON TAPE.
STDLABEL EQU   X'01'                   TAPE HAS STANDARD LABEL.
RCODE    DS    CL1                     SET TO 'FF' IF FORMAT 5 BAD.
BLOCKS   DS    0D
DBLKSIZE EQU   256                     SIZE OF I/O BLOCKS.
         ORG   BLOCKS+DBLKSIZE
         SPACE
*   THIS PORTION APPLIES TO RESTORE ONLY.
BUFFPTR1 DS    1F                      POINTER TO FIRST BUFFER.
BUFFSW   EQU   BUFFPTR1                'FF' INDICATES DOUBLE BUFFERED.
BUFFPTR2 DS    1F                      POINTER TO SECOND BUFFER.
TAPEOP1  EQU   BUFFPTR2                 TAPE CCW OPCODE         YM01031
IDSAVE   DS    CL6                      VOLID SAVE AREA
FIRSTSW  DS    CL1                      BYTE = X'01', 1ST ENTRY  XM6320
DOSBIT   EQU   X'02'                    INDICATES FORMAT 4 DSCB XL02145
*                                       DOS-BIT MUST BE SET     XL02145
VOLNUMB  DS    CL1                      CONTAINS JFCBNVOL VALUE  XM6320
REND     DS    0D                      END OF RESTORE FUNCTION BLOCK.
         SPACE
*   THIS PORTION APPLIES TO DUMP ONLY.
         ORG   BUFFPTR1
RPSBUFPT DS    1F                      POINTER TO RPS CCWS
CCWBUFPT DS    1F                      POINTER TO RD CNT, RD CKD CCWS.
WRTBUFPT DS    1F                      POINTER TO WRT-RD CCWS
CNTBUFPT DS    1F                      POINTER TO COUNT FIELD BUFFER.
DATBUFPT DS    1F                      POINTER TO DATA BUFFER.
FORM5FPT DS    1F                      POINTER TO FORMAT 5 SAVE AREA.
DUMPWORK DS    1F                      USED BY END-OF-EXTENT APPENDAGE
TRACKPT  DS    1F                      PTR. TO POSITION IN DATA BUFFER
TIMESTMP DS    1F                       CONTAINS CCHH OF F4 DSCB Y02113
TIMESET  DS    1C                       MEANS TIMESTAMP SAVED    Y02113
         DS    3C                       UNUSED                   Y02113
RDVTOC   DS    1C                      USED TO GET OK DEBENDCC @ZA04411
DEND     DS    0D                      END OF DUMP    FUNCTION BLOCK.
         SPACE
*   THIS PORTION APPLIES TO FORMAT AND ANALYZE.
         ORG   UNIQUE
FOWNID   DS    CL10                    OWNER INFORMATION
FSERNO   DS    CL6                     VOLUME/SERIAL INFORMATION.
FALTDATA DS    CL6                     ALTERNATE TRACK INFORMATION
FVTOCPTR DS    CL5                     BEGINNING OF VTOC/RELATIVE TRACK
FEXTENT  DS    CL5                     NUMBER OF TRACKS IN VTOC.
FBUFFPTR DS    CL4                     POINTER TO BUFFER
FIPLPTR  DS    CL4                     POINTER TO IPL TEXT IF IN CORE.
TRACKCTL DS    CL4                     RELATIVE TRACK STOPPING FACTOR.
PASSCNT  DS    CL2                     NUMBER OF PASSES REQUESTED.
COUNT    DS    CL2                     CURRENT PASS COUNT.
FLAGREAD DS    CL5                     HOME ADDRESS READ AREA/FLAG TEST
ERRSW    DS    CL1                     ERROR ENCOUNTERED ON A TRACK.
BADTRACK EQU   80                      BAD TRACK INDICATOR
BADHAR0  EQU   40                      BAD HOME ADDRESS OR RECORD ZERO
BLANKTRK EQU   20                      BLANK TRACK INDICATOR
RETRYCNT DS    CL2                     COUNT OF RETRIES AFTER FAILURE.
SAVEPTR  DS    1F                      POINTER TO SAVE AREA.
         DS    0D
FBLOCKS  DS    CL116                   I/O CONTROL BLOCKS
         DS    0D
FCCWS    DS    CL136               ANAL/FORMAT CHANNEL PROG
SDCCWS   DS    7D                      SKIP DISPLACEMENT CCW.    XM5465
MADCCWS  DS    6D                      CONVERSION CCWS         @Z30RSAG
AEND     DS    0D                      END OF ANALYZE FUNCTION BLOCK.
FEND     DS    0D                      END OF FORMAT  FUNCTION BLOCK.
         SPACE
*   THIS PORTION APPLIES TO LABEL.
         ORG   UNIQUE
OWNID    DS    CL10                    OWNER NAME FIELD
SERNO    DS    CL6                     SERIAL NUMBER FIELD.
RDAREA   DS    CL176                   WORKAREA FOR LABEL FUNCTION.
LEND     DS    0D                      END OF LABEL   FUNCTION BLOCK.
         SPACE
*   THIS PORTION APPLIES TO GETALT.
         ORG   UNIQUE
GTRACK   DS    CL4                     DEFECTIVE TRACK ADDRESS.
         DS    CL8
BUFFADR  DS    F                       DATA ADDRESS POINTER    @ZM40034
GETAREA  DS    CL176                   WORKAREA FOR GETALT FUNCTION.
GEND     DS    0D                      END OF GETALT  FUNCTION BLOCK.
         SPACE
*   THIS PORTION APPLIES TO IPLIPROG
         ORG   UNIQUE
RDBUFF   DS    CL176                   WORKAREA FOR JFCB
LARGREC  DS    CL1                     INDICATES RECORD READ IS MORE
*                                      THAN 2048 BYTES LONG.
IEND     DS    0D                      END OF IPLIPROG FUNCTION BLOCK.
         SPACE
*   SIZE OF FUNCTION BLOCKS FOR EACH FUNCTION.
DFUNSIZE EQU   DEND-FUNCBLK            DUMP FUNCTION.
RFUNSIZE EQU   REND-FUNCBLK            RESTORE FUNCTION.
AFUNSIZE EQU   AEND-FUNCBLK            ANALYZE FUNCTION.
FFUNSIZE EQU   FEND-FUNCBLK            FORMAT FUNCTION.
LFUNSIZE EQU   LEND-FUNCBLK            LABEL FUNCTION.
GFUNSIZE EQU   GEND-FUNCBLK            GETALT FUNCTION.
IFUNSIZE EQU   IEND-FUNCBLK            IPLIPROG FUNCTION.
         SPACE 1
         EJECT
COPYBLK  DSECT                         GENERAL COPY BLOCK.
DDNAME3  DS    CL8                     MULTIPLE UNIT DDNAME.
CFUNPTR  DS    CL4                     POINTER TO FUNCTION BLOCK.
CCOPYPTR DS    CL4                     POINTER TO COPY BLOCK, IF ANY.
CUCBPTR  DS    CL4                     POINTER TO UCB FOR COPY VOLUME
CREELCK  DS    1F                      TRAILER LABEL CONTROL.
CRTRYCNT DS    CL2                     NUMBER OF ERROR RETRIES.
CERRSW   DS    CL1                     ERROR AT ANALYZE TIME
CVTOCAD  DS    1F
CALTDATA DS    CL6                     ALTERNATE TRACK INFORMATION.
CFLGREAD DS    CL5                     HOME ADDRESS READ AREA/FLAG TEST
CDEVMOD  DS    CL1                     WINCHESTER MODEL NO.     XL03130
         DS    CL1
         DS    0D
CIOBLOCK DS    CL116                   I/O CONTROL BLOCKS
         DS    0D
COPYCCWS DS    CL136               CHAN PROGRAM FOR COPY DEV
CSDCCWS  DS    7D                      SKIP DISPLACEMENT CCWS.   XM5465
COPYEND  DS    0H
CDISP    EQU   CCOPYPTR-DDNAME3        DISPLACEMENT TO COPY POINTER.
COPYSIZE EQU   COPYEND-DDNAME3         SIZE OF COPY BLOCK.
         EJECT
CONSTANT DSECT
LASTALT  DS    CL4                     CCHH OF LAST ALTERNATE.
CONVCYL  DS    CL4                     CONVERSION TO CHANGE CYLINDERS.
CONV1    DS    CL4                     CONVERSION TO GIVE CC-1,HH+XX.
MAXREC   DS    1H                      MAXIMUM RECORDS PER TRACK.
SACAP    DS    1H                      SURFACE ANALYSIS TRACK CAPACITY.
LASTORIG DS    CL4                     CCHH OF LAST PRIMARY TRACK.
TOTALALT DS    1H                      NUMBER OF ALTERNATES.
CYLNO    DS    1H                      NUMBER OF CYLINDERS.
TRKCYL   DS    1H                      TRACKS PER CYLINDER.
TRKCAP   DS    1H                      TRACK CAPACITY.
ROVRHD   DS    CL3                     RECORD OVERHEAD.
FLAG     DS    CL1                     FLAG BYTE.
MSG66    EQU   66                          MESSAGE NUMBER.
TOLER    DS    1H                      TOLERANCE FACTOR.
D107     EQU   107                     DISPLACEMENT INTO FMT4 DSCB
VTOCON   EQU   X'01'
DSCBTRK  DS    CL1                     DSCBS PER TRACK.
DIRBTRK  DS    CL1                     DIRECTORY BLOCKS PER TRACK.
TOTALPRM DS    1H                      NUMBER OF PRIMARY TRACKS.
RBUFSIZE DS    1H                      RESTORE BUFFER SIZE.
WRTSIZE  DS    1H                      SIZE OF D/R WRT/RD CKD CCWS.
CCWSIZE  EQU   WRTSIZE
DATASIZE DS    1H                      SIZE OF DATA BUFFER.
RCCWSIZE DS    1H                      SIZE OF READ COUNT CCWS.
CNTSIZE  DS    1H                      SIZE OF COUNT FIELD BUFFER.
BUFFSIZE DS    1H                      TOTAL DUMP BUFFER SIZE.
         DS    1H                      PADDED TO FULL WORD BOUNDARY.
LASTK    DS    0H                      END OF CONSTANTS.
KDEVSIZE EQU   LASTK-CONSTANT          TABLE SIZE PER DEVICE.
         MEND
         END
./ ADD NAME=IEHDCBXL
         MACRO
         IEHDCBXL
*                                                                  UL0H
*                   USER LABEL DCB EXIT LIST AND CORE ADDRESSES    UL0H
*                                                                  UL0H
UDCBIHLE DS    0BL1                USER INPUT HEADER LABEL EXIT    UL0H
         DS    A                                                   UL0H
UDCBOHLE DS    0BL1                USER OUTPUT HEADER LABEL EXIT   UL0H
         DS    A                                                   UL0H
UDCBITLE DS    0BL1                USER INPUT TRAILER LABEL EXIT   UL0H
         DS    A                                                   UL0H
UDCBOTLE DS    0BL1                USER OUTPUT TRAILER LABEL EXIT  UL0H
         DS    A                                                   UL0H
UDCBDCBE DS    0BL1                DCB EXIT                        UL0H
         DS    A                                                   UL0H
UDCBCKPT DS    0BL1                CHECK POINT                     UL0H
         DS    A                                                   UL0H
UDCBJFCB DS    0BL1                OPENJ JFCB EXIT                 UL0H
         DS    A                                                   UL0H
         MEND
./ ADD NAME=IEHDWORK
*%       GOTO  IEHDWORX ;               /* PL-S BILINGUAL BRCH      */
         MACRO
         IEHDWORK
         COPY  LCGASMSW                                          SM4351
*A 683500                           @SA69914=@XA05792=@YA04806=@ZA01201
*
*   THIS VERSION WAS CHANGED ON 02/13/73
*  ADDITIONS MADE TO THE END OF MODULE ON 02/13/73
*
WORK     DSECT
MSGWTR   DS    0CL128                  OUTPUT MESSAGE BUFFER.
CC       DS    CL1                     CONTROL CHARACTER.
MESS     DS    CL90                    MESSAGE BODY.
NOTHER   DS    CL15                    PAGE.
NUMB     DS    CL15                    PAGE NUMBER.
MSGSW1   DS    CL1                     FIRST ENTRY SWITCH.
PAGENO   DS    CL2                     CURRENT PAGE NUMBER.
LINECNT  DS    CL2                     LINE COUNT FIXED.
LINECNT1 DS    CL2                     CURRENT LINE COUNT.
         SPACE
SWITCHRD DS    35F                     INPUT BUFFER AND SWITCHES.
         SPACE
ERROR    EQU   X'80'                   SYNTAX ERROR.
BYPASS   EQU   X'40'                   SCAN COMPLETE.
EOF      EQU   X'20'                   EOF ENCOUNTERED.
FIRST    EQU   X'10'                   FIRST ENTRY/THIS CARD.
COMD     EQU   X'08'                   COMMAND ENCOUNTERED.
KEY      EQU   X'04'                   KEYWORD ENCOUNTERED.
PARM     EQU   X'02'                   PARAMETER ENCOUNTERED.
CARDBUFF EQU   SWITCHRD+1              CARD READ IN AREA.
LASTCOLM EQU   SWITCHRD+71             LAST COLUMN.
SAVEPAPR EQU   SWITCHRD+81             SAVE AREA FOR PARTIAL PARAMETERS
COL72LG  EQU   SWITCHRD+125            COLUMN 72 SWITCH AND LENGTH SW.
STORGR3  EQU   SWITCHRD+128            SAVE AREA FOR SCAN POINTER(GR3)
PARAMSW  EQU   SWITCHRD+132            PARAMETER FOLLOWS,CONTINUATION
PRNTSW   EQU   SWITCHRD+133            CONTROL PRINTING OF CARD IMAGE
PARENCTR EQU   SWITCHRD+134            PARENTHESIS COUNTER.
DELIMIN  EQU   SWITCHRD+136            DELIMITER INDICATORS.
DELIMIN2 EQU   SWITCHRD+137            DELIMITER INDICATORS.
RESERVE1 EQU   SWITCHRD+138            COMMA COUNT.
RESERVE2 EQU   SWITCHRD+139            COMMA/LEFT PAREN. SWITCH
         SPACE
CTRLLIST DS    0F                      FUNCTION QUEUE//CONTROL LIST.
CSIZE    EQU   4                       BYTES/ENTRY IN CONTROL LIST.
PTRCFUNC DS    CL4                     POINTER TO CURRENT FUNCTION.
SW1      EQU   PTRCFUNC                SHOWS WHAT STATE FUNCTION IS IN
PARMXY   EQU   X'40'                   PARAMETER PROCESSED.
DD1OK    EQU   X'20'                   COPY CONTROL SWITCH.
SPEC1    EQU   X'04'                   WORKING WITH CUU'S FOR DDNAMES.
MULTIPLE EQU   X'02'                   MORE THAN ONE FUNCTION.
TEXTIN   EQU   X'10'                   LOOKING FOR IPL TEXT.
COMMAND  EQU   X'01'                   LOOKING FOR COMMAND.
PTRFUNC1 DS    CL4                     FIRST SLOT ON QUEUE.
ACTIVE   EQU   X'80'                   SLOT TAKEN ON CONTROL LIST
COMPLETE EQU   X'40'                   FUNCTION COMPLETE.
COPIES   EQU   X'20'                   COPIES INVOLVED.
WAITING  EQU   X'10'                   FUNCTION IN WAIT STATE.
PROCESS  EQU   X'08'                   FUNCTION IS PROCESSING.
NOCORE   EQU   X'01'                   NO CORE AVAILABLE.
MOREFUNC DS    CL20                    UP TO 5 MORE FUNCTIONS(TOTAL=6).
ENDCLIST DS    CL4                     =A(PTRFUNC1)+N X 4
*                                        WHERE N IS 6 OR LESS AND
*                                        DEFAULT IS N=6.
         SPACE
PAGESW   DS    CL1                     X'FF' INDICATES PAGE NO. PASSED.
         DS    CL1                     RESERVED.
QCOUNT   DS    CL2                     NUMBER OF FUNCTIONS ON QUEUE
WIPLPTR  DS    CL4                     POINTER TO IPL TEXT IN CORE.
PRINT1   DS    1F                      ADDRESS OF SYSOUT DCB.
READ1    DS    1F                      ADDRESS OF SYSIN.
SYSINDD  DS    CL8                     DDNAME FOR INPUT DATA SET.
SYSOUTDD DS    CL8                     DDNAME FOR SYSOUT DATA SET.
WURK     DS  1D                         WORK AREA
WORKD8   DS  1D                         USED FOR PACK INSTRUCTION
GOTOBR   DS  1F                         GO TO BRANCH VALUE
GOVAL    EQU GOTOBR+3                   GO TO VALUE
HOLD4    DS  1F                         SAVE CONTENTS OF GR4
HOLD9    DS  1F                         SAVE CONTENTS OF GR9
           DS  1F                       RESERVED FOR EXPANSION
           DS  2D                       RESERVED FOR EXPANSION
IOBPTR   DS    1F                 ACTIVE IOB ADR IF I/O ERROR  @ZA01201
LAST     DS    0H
WORKSIZE EQU   LAST-MSGWTR             SIZE OF WORK AREA.
*%IEHDWORX: ;                           /* PL-S BRANCH POINT       */
* DCL    1 WORK  BASED,                 /* PLS VERSION OF IEHDWORK  */
*          5 MSGWTR,                    /* OUTPUT MESSAGE BUFFER    */
*            10 CC       CHAR(1),       /* CONTROL CHARACYER        */
*            10 MESS     CHAR(90),      /* MESSAGE BODY             */
*            10 NOTHER   CHAR(15),      /* PAGE.                    */
*            10 NUMB     CHAR(15),      /* PAGE NO.                 */
*            10 MSGSW1   CHAR(1),       /* 1ST ENTRY SWITCH         */
*        10 PAGENO       FIXED(15),     /* CURRENT PAGE NO.         */
*            10 LINECNT  FIXED(15),     /* LINE COUNT FIXED         */
*            10 LINECNT1 FIXED(15),     /* CURRENT LINE COUNT       */
*          5 SWITCHRD,                  /* INPUT BUFFER AND SWITCHES*/
*            10 ERROR         BIT (1),  /* SYNTAX ERROR             */
*            10 BYPASS        BIT (1),  /* SCAN COMPLETE            */
*            10 EOF           BIT (1),  /* EOF ENCOUNTERED          */
*            10 FIRST         BIT (1),  /* 1ST ENTRY THIS CARD      */
*            10 COMD          BIT (1),  /* CMD ENCOUNTERED          */
*            10 KEY           BIT (1),  /* KEYWORD ENCOUNTERED      */
*            10 PARM          BIT (1),  /* PARAMETER ENCTRED        */
*            10 NEXTBIT       BIT (1),  /* UNUSED                   */
*            10 CARDBUFF      CHAR (1), /* CARD READ IN AREA        */
*            10 *             CHAR (69),/*                          */
*            10 LASTCOLM      CHAR (1), /* LAST COLUMN              */
*            10 *             CHAR (10),/*                          */
*            10 SAVEPAPR      CHAR (44),/* SAVEAREA FOR PARTIAL PARM*/
*            10 COL72LG       CHAR (4)  /* COL 72 SWT + LENGTH SWT  */
*            10 STORGR3       FIXED(31),/* SCAN PTR SAVEAREA (GR3)  */
*            10 PARAMSW       CHAR (1), /* PARAM. FOLLOWS CONTINUATN*/
*            10 PRNTSW        PTR  (8), /* CTL CARD IMAGE PRINTING  */
*            10 PARENCTR      FIXED(15),/* PARENTHESIS CTR.         */
*            10 DELIMIN       CHAR (1), /* DELIMINTER INDIC.        */
*            10 DELIMIN2      CHAR (1), /*                          */
*            10 RESERVE1      CHAR (1), /* COMMA COUNTER            */
*            10 RESERVE2      CHAR (1), /* COMMA/LEFT-PAREN SWITCH  */
*          5 CTRLLIST ,                 /* FUNCTION QUEUE//CTL LIST */
*            10 PTRCFUNC      PTR (31), /* PTR TO CURRENT FUNCTION  */
*              15 SW1         PTR  (8), /* FUNCTION STATE           */
*                20 PARMXY    BIT  (1), /* PARAMETER PROCESSED      */
*                20 DD10K     BIT  (1), /* COPY CTL SWT.            */
*                20 TEXTIN    BIT  (1), /* LOOKING FOR IPLTXT       */
*                20 SPEC1     BIT  (1), /* WORKING WITH CUU FOR DDN */
*                20 SPEC1     BIT  (1), /* MULTI-FUNCTION REQ.      */
*                20 COMMAND   BIT  (1), /* LOOKING FOR CMD.         */
*            10 PTRFUNC1 ,              /* 1ST FUNCTION SLOT        */
*              15 *           CHAR (1), /*                          */
*                20 ACTIVE    BIT  (1), /* SLOT ACTIVE              */
*                20 COMPLETE  BIT  (1), /* FUNCTION COMPLTE         */
*                20 COPIESTE  BIT  (1), /* COPIES INVOLVED          */
*              20 WAWAITING   BIT  (1), /* FUNCTION WAITING         */
*              20 PROCESS     BIT  (1), /* FUNCTION IS PROCESSING   */
*              20 NOCORE      BIT  (1), /* NO CORE AVAILABLE        */
*            10 MOREFUNC  (5),          /* FIVE ADDITIONAL FUNCTIONS*/
*              15 *           PTR (8),  /*                          */
*              15 *           PTR (24), /*                          */
*            10 ENDCLIST,               /* PTR TO LAST FUNCTION SLOT*/
*              15 *           PTR (8),  /*                          */
*              15 *           PTR (24), /*                          */
*            10 PAGESW        CHAR(1),  /* X'FF' MEANS PAGE NO. PROC*/
*            10 *             CHAR(1),  /* UNUSED/RESERVED          */
*            10 QCOUNT       FIXED(31), /* FUNCTION COUNT           */
*            10 WIPLPTR       PTR (31), /* IPLTEXT ADDRESS          */
*            10 PRINT1        PTR (31), /* SYSOUT DCB ADDR.         */
*            10 READ1         PTR (31), /* SYSIN DCB ADDR.          */
*            10 SYSINDD      CHAR  (8), /* SYSIN DDNAME             */
*            10 SYSOUTDD     CHAR  (8), /* SYSOUT DDNAME            */
*            10 WURK         CHAR  (8), /* SCAN WORK AREA           */
*            10 WORKD8       FIXED (64),/* SCAN/DASDS WORK AREA     */
*            10 GOTOBR       FIXED (31),/* SCAN/DASDS               */
*              15 *          CHAR   (3),/*      BRANCH-TABLE        */
*              15 GOVAL      PTR    (8),/*              VALUE.      */
*            10 HOLD4        FIXED (31),/* SCAN REG4 SAVEAREA       */
*            10 HOLD9        FIXED (31),/* SCAN REG9 SAVEAREA       */
*            10 *            FIXED (31),/* RESERVED                 */
*            10 *            PTR   (31),/* RESERVED                 */
*            10 *            PTR   (31);/* RESERVED                 */
         MEND
./ ADD NAME=IEHMVV
         MACRO
         IEHMVV
         EJECT
IEHMVV   DSECT
*C026991-026995                                                @ZA03372
*A026991-026995                                                @ZA00101
*D026991                                                       @ZA00101
*C026970-026977                                                 YA01193
*A026984-026991                                                 YA01193
.*A003724,012300                                                 A44334
.*C012200                                                        A44334
.*A012120                                                        A43752
.*A026950                                                        A41754
.*A012140                                                        A37919
.*A003000,003600,012000,026900                                   I276
.*                                                             @G32DSFS
.*C012280,A012300,C012340                                      @Z40CSJH
*
*              SEPTEMBER 15, 1976                              @G32DSFS
*
*              THIS DSECT DEFINES THE COMMUNICATION AREA TO BE
*              USED WITH THE MOVE/COPY PROGRAM
*              REGISTER 12 WILL POINT TO THIS AREA AT EVERY CALL
*              OF A SEGMENT OR SUBROUTINE
*
*                    UNCONTROLLED VOLATILE WORK AREA
*
IEHMVV00 DS    64D            VOLATILE WORK AREA
*IEHMVV00+400  X'00'          INDICATOR BYTE FOR VOLMOUNT          I276
*
*                    PERMANENT WORK AREA CONTROL
*
*IEHMVV10-5    '00'           MESSAGE NUMBER INDICATOR             I276
*IEHMVV10-4    '80'           INDICATES 'FROM' DCB IS OPEN         I276
*              '40'           INDICATES 'TO' DCB IS OPEN           I276
*              '20'           INDICATES FIXED BLOCK REBLOCKING     I276
*              '10'           INDICATES VARIABLE BLOCK REBLOCKING  I276
*              '08'           INDICATES DATA SET IS UNMOVABLE      I276
*              '04'           INDICATES DEFAULT SPACE RELEASE    A44334
*IEHMVV10-2    H              LOGICAL RECORD LENGTH                I276
IEHMVV10 DS    F              ADDRESS OF PERMANENT WORK AREA
         DS    F              ADDRESS OF END OF PERMANENT WORK AREA
*
*                    CONTROL CARD INFORMATION CONTROL
*
IEHMVV20 DS    0F             CONTROL CARD SWITCH DEFINITIONS
         DC    0X'80'         MOVE
         DC    0X'40'         COPY
         DC    0X'20'         DSNAME
         DC    0X'10'         DSGROUP
         DC    0X'08'         PDS
         DC    0X'04'         CATALOG
         DC    0X'02'         VOLUME
         DC    1X'01'         FROM
         DC    0X'80'         TO
         DC    0X'40'         CVOL
         DC    0X'20'         UNCATLG
         DC    0X'10'         CATLG
         DC    0X'08'         SECURITY
         DC    0X'04'         EXPAND
         DC    0X'02'         LOAD
         DC    1X'01'         UNLOAD
         DC    0X'80'         ANY ALIAS
         DC    0X'40'         MID-ABORT
         DC    0X'20'         END OF INPUT
         DC    0X'10'         PHONY 'TO' NAME
         DC    0X'08'         ANY INC-REP
         DC    0X'04'         ANY EXC-REP
         DC    0X'02'         ANY SELECT
         DC    1X'01'         PERM ABORT
         DC    0X'80'         FIRST TIME VOLUME
         DC    0X'40'         TODD
         DC    0X'20'         CARD PRINT
         DC    0X'10'         CARD PRINT
         DC    0X'08'         PREALLOCATED DATASET
         DC    0X'04'         RENAME
         DC    0X'02'         FROMDD
         DC    1X'01'         ****DUMP****
         DS    0X'80'         FIRST TIME SWITCH FOR SZ
         DS    0X'40'         COPY POD MODULE - 00 = TJ
         DS    0X'20'         40 = SL  20 = SM
         DS    0X'10'         SYSCATLG ON VOLUME
         DS    0X'08'         MODEL DSCB                           I276
         DS    0X'04'         RECORD READY DEVICE                  I276
         DS    0X'02'         MULTIVOLUMESWITCH                  A43752
         DS    1X'01' SYSCTLG ON VOLUME                          A37919
         DS    0X'80' RLSE-KEYWORD SPECIFIED                     A44334
         DS    0X'40' SWITCH FOR UNLOAD REQUEST                @Z40CSJH
         DS    0X'20' SWITCH FOR NAME GIVEN WITH DSGROUP       @Z40CSJH
         DS    0X'10' COPYAUTH-KEYWORD SPECIFIED               @G32DSFS
         DS    0X'08' AS YET UNUSED                            @G32DSFS
         DS    0X'04' AS YET UNUSED                            @G32DSFS
         DS    1X'00' AS YET UNUSED                            @Z40CSJH
IEHMVV21 DS    F              ADDRESS OF 'FROM' DATASET NAME
         DS    F              ADDRESS OF 'TO' DATASET NAME
IEHMVV22 DS    0F             'FROM VOL' LIST
         DS    FL1            NUMBER OF ENTRIES IN FROM VOL LIST
         DS    FL3            ADDRESS OF FROM VOL LIST
         DS    F              ADDRESS OF ACTIVE 'FROM VOL'
IEHMVV23 DS    0F             'TO VOL' LIST
         DS    FL1            NUMBER OF ENTRIES IN TO VOL LIST
         DS    FL3            ADDRESS OF TO VOL LIST
         DS    F              ADDRESS OF ACTIVE 'TO VOL'
IEHMVV24 DS    0F             'CVOL' LIST
         DS    FL1            NUMBER OF ENTRIES IN CVOL LIST
         DS    FL3            ADDRESS OF CVOL LIST
IEHMVV25 DS    H              DIRECTORY COUNT
         DS    H              EXPAND VALUE
IEHMVV26 DS    0F             'INC-EXC-REP' LIST
         DS    FL1            NUMBER OF ENTRIES IN INC-EXC-REP LIST
         DS    FL3            ADDRESS OF INC-EXC-REP LIST
IEHMVV28 DS    F              ADDRESS OF FROMDD
         DS    F              ADDRESS OF TODD
IEHMVV27 DS    10F            WORK SPACE FOR CONTROL CARD ANALYZER
*
*                    DATA SET CONTROL
*
IEHMVV30 DS    F              ADDRESS OF 'FROM' DCB
         DS    F              ADDRESS OF 'FROM' DECB
         DS    F              ADDRESS OF 'FROM' DSCB
         DS    F              ADDRESS OF 'FROM' DDNAME
IEHMVV31 DS    F              ADDRESS OF 'TO' DCB
         DS    F              ADDRESS OF 'TO' DECB
         DS    F              ADDRESS OF 'TO' DDNAME
IEHMVV32 DS    F              ADDRESS OF 'SYSIN' DCB
         DS    F              ADDRESS OF 'SYSIN' DECB
IEHMVV33 DS    F              ADDRESS OF 'SYSPRINT' DCB
         DS    F              ADDRESS OF 'SYSPRINT' DECB
*
*                    WORK FILE CONTROL
*
IEHMVV39 DS    FL5                 CCHHR OF END OF SYSUT1
         DS    FL1            * COUNTER FOR SYSUT1
         DS    FL1            * COUNTER FOR SYSUT2
         DS    FL1            * COUNTER FOR SYSUT3
         DS    F              TTR OF BEGINNING OF CATALOG ON SYSUT1
IEHMVV40 DS    F              ADDRESS OF 'SYSUT1' DCB
         DS    F              ADDRESS OF 'SYSUT1' DECB
IEHMVV41 DS    F              ADDRESS OF 'SYSUT2' DCB
         DS    F              ADDRESS OF 'SYSUT2' DECB
         DS    FL5                 CCHHR OF END OF SYSUT2
         DS    FL1            RETURN CODE BYTE
IEHMVV42 DS    F              ADDRESS OF 'SYSUT3' DCB
         DS    F              ADDRESS OF 'SYSUT3' DECB
         DS    FL5                 CCHHR OF END OF SYSUT3
IEHMVV43 DS    2F             2 WORDS REQUIRED BY GET MEMBER
*
*                    STEM SUBROUTINE CONTROL
*
IEHMVV50 DS    F              ADDRESS OF VOLUME MOUNT ROUTINE
         DS    F               USED BY VOLUME MOUNT
IEHMVV51 DS    F              ADDRESS OF MESSAGE WRITER
         DS    F               USED BY MESSAGE WRITER
         DS    H              LINES PER PAGE
         DS    H              LINES TO GO ON CURRENT PAGE
         DS    H              CURRENT PAGE NUMBER
*
*                   MULTIPLE USE AREA
*
IEHMVV60 DS    2F             LOAD/UNLOAD AREA
IEHMVV61 DS    1F      FOR THE EXCLUSIVE USE OF INC/REP RTN
IEHMVV62 DS    1F         POINTER TO PDS COPY RTN PERM WKAREA
*
*                   USER LABEL DCB EXIT LIST AND CORE ADDRESSES    UL0H
IEHMVV70 DS    F   01    INPUT HEADER LABEL EXIT                   UL0H
         DS    F   02    OUTPUT HEADER LABEL EXIT                  UL0H
         DS    F   03    INPUT TRAILER LABEL EXIT                  UL0H
         DS    F   04    OUTPUT TRAILER LABEL EXIT                 UL0H
         DS    F   05    DCB EXIT                                  UL0H
         DS    F   06    CHECK/POINT                               UL0H
         DS    F   07    JFCB EXIT                                 UL0H
         DS    3F                                                  UL0H
IEHMVV72 DS    F   ADDRESS OF GOTTEN CORE                          UL0H
         DS    F   ADDRESS OF CURRENT LABEL SAVE AREA              UL0H
         DS    F   1ST LABEL SW - - DA/NLT FLAG**NO LABEL TRACK    UL0H
         DS    F   LABEL COUNT                                     UL0H
         DS    F   FLAG FOR NO M/C MESSAGE                         UL0H
IEHMVV74 DS    4F ULOH                                             I276
*IEHMVV74+4    'FF'           I/O ERROR IN USERS LABELS            I276
*IEHMVV74+12   'FF'           OUTPUT TO NL TAPES                   I276
IEHMVV80 DS    F              ADDRESS OF DEVICE NAME TABLE         I276
IEHMVV82 DS    4F DSCBTTR SAVE AREA FOR CATALOG MANAGEMENT       S21042
IEHMVV84 DS    2F            ADDRESS AND LENGTH OF BDAM-WORKAREYA011934
*                              USED IN IEHMVSTL - FREED IEHMVESNYA01193
IEHMVV85 DS    F             PTR TO INFO ABOUT SIZE OF DATA SET YA01193
IEHMVV86 DS    1F                                              @ZA03372
IEHMVV87 DS    2F            SAVE AREA FOR TIME                @ZA03372
*
*                    PERMANENT WORK AREA
*
IEHMVV90 DS    0F             PERMANENT WORK AREA
IEHMVV99 DS    0C
         EJECT
         MEXIT
         MEND
./ ADD NAME=IEHPOST
         MACRO
&LABEL   IEHPOST &REG,&OPTION,&USED
         LCLA  &SAVE,&DIFF,&WORK
         AIF   ('&OPTION' EQ '').SEQ0A
&WORK    SETA  0
.SEQ0    ANOP
&WORK    SETA  &WORK+1
         AIF   (&WORK GT K'&OPTION).SEQ0A
         AIF   ('&OPTION'(&WORK,1) NE 'C').SEQ0
*
*              THIS MACRO IS USED WITH THE IEHPRE MACRO IN THE
*              MOVE/COPY PROGRAM TO RESTORE THE SAVE AREAS
*              AFTER CALLING A SUBROUTINE
*
.SEQ0A   ANOP
&SAVE    SETA  72
         AIF   ('&USED' EQ '').SEQ1
         AIF   ((T'&USED NE 'N') OR ('&USED'(1,1) LT '0') OR ('&USED'(1X
               ,1) GT '9')).ERR3
&DIFF    SETA  (&USED/4)*4
         AIF   (&DIFF NE &USED).ERR3
&SAVE    SETA  &USED
.SEQ1    ANOP
&LABEL   L     13,4(0,13)
         AIF   ('&REG(1)' EQ '').SEQ3
         AIF   (('&REG(1)' NE '14') AND ('&REG(1)' NE '15') AND ('&REG(X
               1)' NE '0') AND ('&REG(1)' NE '1')).ERR1
         AIF   (N'&REG NE 1).SEQ2
         L     &REG(1),&SAVE.(0,13)
         AGO   .SEQ3
.SEQ2    AIF   (('&REG(2)' NE '14') AND ('&REG(2)' NE '15') AND ('&REG(X
               2)' NE '0') AND ('&REG(2)' NE '1')).ERR1
&DIFF    SETA  &REG(2)-&REG(1)
         AIF   ((&DIFF NE 1) AND (&DIFF NE 0-13) AND (&DIFF NE 0-14) ANX
               D (&DIFF NE 0-15)).ERR1
         LM    &REG(1),&REG(2),&SAVE.(13)
.SEQ3    AIF   ('&OPTION' EQ '').EXIT
&WORK    SETA  0
.SEQ4    ANOP
&WORK    SETA  &WORK+1
         AIF   (&WORK GT K'&OPTION).EXIT
         AIF   ('&OPTION'(&WORK,1) NE 'T').SEQ4
         MVI   12(13),X'FF'
.EXIT    MEXIT
.ERR1    MNOTE 1,'** REGISTER OPERAND IN ERROR'
         MEXIT
.ERR3    MNOTE 1,'** USED OPERAND IN ERROR'
         MEXIT
         MEND
./ ADD NAME=IEHPRE
         MACRO
&LABEL   IEHPRE &REG,&OPTION,&USED
         LCLA  &NEW,&SAVE,&ADDRS,&DIFF,&WORK
         AIF   ('&OPTION' EQ '').SEQ0A
&WORK    SETA  0
.SEQ0    ANOP
&WORK    SETA  &WORK+1
         AIF   (&WORK GT K'&OPTION).SEQ0A
         AIF   ('&OPTION'(&WORK,1) NE 'C').SEQ0
*
*              THIS MACRO IS USED IN THE MOVE/COPY PRPGRAM TO LINK
*              SAVE AREAS TOGETHER PRIOR TO CALLING A SUBROUTINE
*              IN ADDITION, ANY OF THE REGISTERS NORMALLY DESTROYED
*              DURING A CALL (14-1) MAY BE SAVED, CERTAIN TRACE-BACK
*              FLAGS MAY BE SET, AND A PRIVATE STORAGE AREA MAY BE
*              MAINTAINED
*
.SEQ0A   ANOP
&WORK    SETA  0
&SAVE    SETA  72
         AIF   ('&USED' EQ '').SEQ1
         AIF   ((T'&USED NE 'N') OR ('&USED'(1,1) LT '0') OR ('&USED'(1X
               ,1) GT '9')).ERR3
&DIFF    SETA  (&USED/4)*4
         AIF   (&DIFF NE &USED).ERR3
&SAVE    SETA  &USED
.SEQ1    AIF   ('&REG(1)' NE '').SEQ2
&ADDRS   SETA  1
&NEW     SETA  &SAVE
&LABEL   ST    1,&SAVE.(0,13)
         AGO   .LA
.SEQ2    AIF   (('&REG(1)' NE '14') AND ('&REG(1)' NE '15') AND ('&REG(X
               1)' NE '0') AND ('&REG(1)' NE '1')).ERR1
         AIF   (N'&REG NE 1).SEQ4
         AIF   ('&REG(1)' NE '15').SEQ3
&ADDRS   SETA  1
&NEW     SETA  &SAVE+4
&WORK    SETA  4
&LABEL   STM   15,1,&SAVE.(13)
         AGO   .LA
.SEQ3    ANOP
&ADDRS   SETA  &REG(1)+1
&NEW     SETA  &SAVE+4
&LABEL   STM   &REG(1),&ADDRS,&SAVE.(13)
         AGO   .LA
.SEQ4    AIF   (('&REG(2)' NE '14') AND ('&REG(2)' NE '15') AND ('&REG(X
               2)' NE '0') AND ('&REG(2)' NE '1')).ERR1
&DIFF    SETA  &REG(2)-&REG(1)
         AIF   ((&DIFF NE 1) AND (&DIFF NE 0-13) AND (&DIFF NE 0-14) ANX
               D (&DIFF NE 0-15)).ERR1
         AIF   (&DIFF GE 0).SEQ5
&DIFF    SETA  &DIFF+16
.SEQ5    ANOP
&NEW     SETA  &SAVE+&DIFF*4+4
         AIF   ('&REG(2)' NE '15').SEQ6
&ADDRS   SETA  1
&WORK    SETA  4
&LABEL   STM   14,1,&SAVE.(13)
         AGO   .LA
.SEQ6    ANOP
&ADDRS   SETA  &REG(2)+1
&LABEL   STM   &REG(1),&ADDRS,&SAVE.(13)
.LA      LA    &ADDRS,&NEW.(0,13)
         ST    13,4(0,&ADDRS.)
         ST    &ADDRS,8(0,13)
         LR    13,&ADDRS
         L     &ADDRS,&WORK.(0,13)
         AIF   ('&OPTION' EQ '').EXIT
&WORK    SETA  0
.SEQ7    ANOP
&WORK    SETA  &WORK+1
         AIF   (&WORK GT K'&OPTION).SEQ8
         AIF   ('&OPTION'(&WORK,1) NE 'T').SEQ7
         MVI   12(13),X'00'
.SEQ8    ANOP
&WORK    SETA  0
.SEQ9    ANOP
&WORK    SETA  &WORK+1
         AIF   (&WORK GT K'&OPTION).EXIT
         AIF   ('&OPTION'(&WORK,1) NE 'F').SEQ9
         MVI   8(13),X'FF'
.EXIT    MEXIT
.ERR1    MNOTE 1,'** REGISTER OPERAND IN ERROR'
         MEXIT
.ERR3    MNOTE 1,'** USED OPERAND IN ERROR'
         MEXIT
         MEND
./ ADD NAME=IEWFTNIP
         TITLE 'PROGRAM FETCH    IEWFTMIN'
*
*2356 041400-041600                                                2125
*     093000,095800                                                3625
*0931095260                                                      A31918
*0931065000                                                      M6119
*058600-059299                                                   XM6366
*044420-044784,087020-087100                                     XM5009
*STATUS CHANGE LEVEL 003
*
*FUNCTION/OPERATION  PROGRAM FETCH IS PART OF THE RESIDENT NUCLEUS. ITS
*     FUNCTION IS THE LOADING AND RELOCATING OF EXECUTABLE MODULES INTO
*     CORE STORAGE.
*
*ENTRY POINTS  THE ENTRY POINT FOR FINCH (SUPERVISOR) IS IEWMSEPT.  THE
*     ENTRY POINT FOR OVERLAY SUPERVISOR IS IEWFBOSV. BOTH THESE
*     ROUTINES ENTER PROGRAM FETCH VIA A BRANCH AND LINK
*
*INPUT  SEE NOTES
*
*OUTPUT  SEE NOTES
*
*EXTERNAL ROUTINES  SEE NOTES
*
*EXITS  SEE NOTES
*
*TABLES/WORK AREAS  PROGRAM FETCH USES A WORK AREA THAT IS ALLOCATED AS
*     FOLLOWS  56 BYTES   CHANNEL PROGRAM
*               4 BYTES   ECB
*              32 BYTES   IOB
*               8 BYTES   I/O SEEK ADDRESS
*              12 BYTES   FETCH SEEK BUFFER
*              40 BYTES   REGISTER SAVE AREA
*             256 BYTES   RLD BUFFER
*
*ATTRIBUTES  READ ONLY - REENTRANT - PRIVELEGED - ENABLED - RESIDENT
*
*NOTES
*
*              ON ENTERING FETCH FINCH WILL PROVIDE THE FOLLOWING
*              PARAMETERS
*
*                         ADDRESS OF FETCH WORK CORE IN REG 3
*                         ADDRESS OF FETCH PARAMETER LIST IN REG 1
*                         RETURN ADDRESS IN REG 14
*
         EJECT
*              WHEN RETURNING TO FINCH FETCH WILL PROVIDE THE
*              FOLLOWING PARAMETERS
*
*                         REG 6 WILL BE SAVED ACROSS FETCH
*                         RELOCATED ENTRY POINT
*                             (LAST ENTRY IN FETCH PARAMETER LIST)
*                         RETURN CONDITION CODE IN REG 15
*                         IF PROGRAM IS IN OVEFLAY SEGTAB WILL BE
*                         INITIALIZED WITH DCB AND NOTE LIST
*                         ADDRESS AND THE TESTRAN BIT WILL BE SET
*                         IF REQUIRED
*
*
*
*                             FETCH PARAMETER LIST
*
*                   ****************************************
*                   *                                      *
*                0  *           DCB  ADDRESS               *
*                   *                                      *
*                   ****************************************
*                   *                                      *
*                4  *        CORE ADDRESS OF NOTE LIST     *
*                   *                                      *
*                   ****************************************
*                   *                                      *
*                8  *         ADDRESS OF BLDL ENTRY        *
*                   *                                      *
*                   ****************************************
*                   *                                      *
*               12  *       NUMBER OF RELOCATION FACTORS   *
*                   *                                      *
*                   ****************************************
*                   *                                      *
*               16  *       ADDRESS OF PROB PROG CORE      *
*                   *                                      *
*                   ****************************************
*                   *                                      *
*               20  *         RELOCATED ENTRY POINT        *
*                   *                                      *
*                   ****************************************
*
*
         EJECT
*
*
*
*              DURING THE EXECTION OF FETCH THE FOLLOWING ROUTINES
*              ARE REFERENCED
*
*                         TTR CONVERT ROUTINE
*                            CONVERT RELATIVE TRACK ADDRESS
*                            TO ABSOLUTE TRACK ADDRESS
*
*                         SUPERVISOR VALIDITY CHECK ROUTINE
*                            VALIDITY CHECK ADDRESS INTO
*                            WHICH FETCH LOADS A MODULE
*
*                         GETMAIN
*
*                         FREEMAIN
*
*                         EXCP  EXECUTE CHANNEL PROGRAM
*
*                         WAIT
*
*
*
*              THE FOLLOWING TERMINATION CODES ARE RETURNED BY
*              FETCH TO CONTENTS SUPERVISOR AND OVERLAY
*              SUPERVISOR IN REG 15  (LOW ORDER BYTE)
*
*                         X'00'  SUCCESSFUL LOAD
*                         X'0F'  PERMANENT IO ERROR
*                         X'0E'  INVALID ADDRESS
*                         X'0D'  INVALID RECORD TYPE
         EJECT
*              AN ERROR CODE RETURNED BY FETCH TO EITHER THE SUPERVISOR
*              OR OVERLAY SUPERVISOR RESULTS IN AN ABEND. IN THE CASE
*              OF A PERMANENT IO ERROR THE EXACT NATURE OF THE ERROR
*              CAN BE DETERMINED AS FOLLOWS
*
*                         REG 3 OF THE ABEND DUMP WILL CONTAIN THE
*                         ADDRESS OF THE WORK CORE USED BY FETCH
*
*                         60 BYTES FROM THE START OF THIS WORK CORE IS
*                         THE IOB USED BY FETCH
*
*                         IN THE IOB PLUS 8 BYTES IS THE CHANNEL STATUS
*                         WORD STORED BY IOS. AN ANALYSIS OF THE TWO
*                         BYTES OF STATUS INFORMATION WILL REVEAL
*                         THE EXACT NATURE OF THE IO ERROR
*
         EJECT
*
*
WKREGF   EQU   0                             WORK REG
ENDREG EQU   0
WKREGA   EQU   1                             WORK REG
PTRREG   EQU   1
WKREGB   EQU   2                             WORK REG
*MINBASE2 EQU   3                             BASE FOR DSECT
GREG3    EQU   3                       GENERAL REGISTER 3        PREMVM
MINBASE2 EQU   5                             BASE FOR DSECT      PREMVM
MINBASE1 EQU   4                             FETCH BASE REG
*PARREG   EQU   5                             PARAM. LIST ADDR
RELFACRG EQU   7
DCBREG   EQU   7                             DCB ADDR
NOTEREG  EQU   8                             NOTE LIST
PDSREG   EQU   9                             PARTITIONED DATA SET ADDR
CDEREG   EQU   9                       PTR TO CDE (ADDR IS IN    PREMVM
*                                      COMPLIMENT FORM ON ENTRY  PREMVM
*                                      FROM PROGRAM MANAGER)     PREMVM
WKREGD   EQU   10                            WORK REG
WKREGC   EQU   11                            WORK REG
WKREGE   EQU   12                            WORK REG
SEGREG   EQU   13                            SEGMENT NUMBER REG
LINKREG  EQU   14                            LINK/RETURN
CODEREG  EQU   15                            ERROR/TERMINATION CODE
RECONE   EQU   1                       REC NU FOR MBBCCHHR FLD   A31918
RECZERO  EQU   0                       REC NU FOR MBBCCHHR FLD  OS57172
EXCP     EQU   0
* CVTPTR   EQU   16                      LOC OF CVT POINTER     ZA00857
* CVTTCBP  EQU   0                     OFSET FRM TCB TO TCB PTR ZA00857
CURRENT  EQU   4                       OFFSET FROM TCB PTR TO CURRENT
*                                       TCB POINTER
VEQR     EQU   X'80'                   VIRTUAL=REAL SWITCH
PRIVDCB  EQU   X'40'                    PRIV DCB IN USE SW.
KEYZERO  EQU   X'0F'                   MASK FOR DEB KEY ZERO     PREMVM
ADDR     EQU   B'0111'                  ADDR PART OF REG MASK
*
*
******   FETCH COMPLETION CODE DEFINITIONS                       PREMVM
*
SUCCESS  EQU   X'00'                   SUCCESSFUL FETCH          PREMVM
GMFAIL   EQU   X'0C'                   GETMAIN FAILED            PREMVM
INVREC   EQU   X'0D'                   INVALID CTL/RLD RECORD    PREMVM
INVADDR  EQU   X'0E'                   INVALID ADDRESS           PREMVM
*                  ABOVE RETURN CODE NOT SUPPORTED IN THIS VERSION
PERMIO   EQU   X'0F'                   PERMANENT I/O ERROR       PREMVM
*
         EJECT
*
*        INITIALIZATION ROUTINE
*
* IEWFTMIN CSECT                                                ZA00857
         ENTRY IEWFTMIN
         ENTRY IEWMSEPT
         ENTRY MINAPNDG                      APPENDAGE TABLE ENTRY PT
         SPACE
         SPACE
*IEWMSEPT LR    WKREGB,MINBASE1     CURRENT TCB ADDRESS
IEWMSEPT EQU   *                                                 PREMVM
IEWFTMIN EQU   *                                                ZA00857
         BALR  MINBASE1,0          FINCH (SUPERVISOR) ENTRY POINT
         USING MIN004,MINBASE1               FETCH BASE
*        USING WKCORE,MINBASE2               DSECT BASE
         USING WKAREA,MINBASE2               DSECT BASE          PREMVM
*MIN004  LR    PARREG,WKREGA                 PARAM ADDR TO PERM REG
*        LM    DCBREG,PDSREG,0(PARREG)       SET DCB,NOTE LIST + BLDL
MIN004   EQU   *                                                 PREMVM
         LR    MINBASE2,SEGREG         SET WORKAREA BASE         PREMVM
******   GETMAIN FOR EXTENT LIST/NOTE LIST AND PROB PROG SPACE
         LA    WKREGC,EXLSIZE          LENGTH OF EXTENT LIST     PREMVM
         LCR   WKREGB,CDEREG           ADDRESS OF CDE            PREMVM
         USING CDENTRY,WKREGB                                    PREMVM
         TM    CDATTR,X'04'            MINOR CDE?               ZA00857
         BZ    MIN004B                 BRANCH IF NOT             PREMVM
         L     WKREGB,CDXLMJP          ADDRESS OF MAJOR CDE      PREMVM
MIN004B  EQU   *                                                 PREMVM
         LA    WKREGB,CDXLMJP          PTR TO EXTENT LIST PTR    PREMVM
         DROP  WKREGB                                            PREMVM
         LA    1,XGMLIST               POINT TO GETMAIN PARMLIST PREMVM
         GETMAIN  EC,LV=(WKREGC),A=(WKREGB),SP=255,MF=(E,(1))    PREMVM
         LTR   CODEREG,CODEREG         TEST RETURN CODE          PREMVM
         BZ    MIN004C                 BRANCH IF SUCCESSFUL      PREMVM
         LA    CODEREG,GMFAIL          SET ERROR CODE            PREMVM
         BR    LINKREG                 RETURN                    PREMVM
MIN004C  EQU   *                                                 PREMVM
         L     WKREGB,0(WKREGB)        GET ADDR OF XLIST/NLIST   PREMVM
         USING EXLNL,WKREGB                                      PREMVM
         ST    WKREGC,EXLLNTH          STORE TOTAL LIST LENGTH   PREMVM
         LA    WKREGC,1                NO. OF REL. FACTORS       PREMVM
         ST    WKREGC,EXLRELFC         STORE NO. OF BLOCKS       PREMVM
         SPACE
*    OBTAIN MAIN STORAGE FOR LOAD MODULE
         SPACE
         L     WKREGC,WKLNTH           MODULE LENGTH             PREMVM
         SRL   WKREGC,8                SHIFT OUT EXTRANEOUS BYTE PREMVM
         ST    WKREGC,EXLCORSZ         STORE MODULE SIZE         PREMVM
         MVI   EXLSZIND,SZIND          INDICATE A SIZE FIELD     PREMVM
         NC    WKIOADDR,WKIOADDR       TEST FOR PROBLEM PROGRAM  PREMVM
*                                      SPACE ALREADY ALLOCATED   PREMVM
         BNZ   MIN004D                 IF SO, BRANCH             PREMVM
         LA    WKREGE,EXLCORAD         POINT TO ADDR FIELD       PREMVM
         LA    1,XGMLIST               POINT TO GETMAIN PARMLIST PREMVM
         SPACE
*    TEST IF GETMAIN IS REQUIRED ON A PAGE BOUNDARY
         SPACE
         TM    WKATTR+1,PDS2ORG0       TEXT ORG'ED AT ZERO?      YM4612
         BZ    MIN004C5                NO, SKIP ALIGN TEST       YM4612
         TM    WKTXORG,PDS2PAGA        PAGE ALIGN REQD?          YM4612
         BZ    MIN004C5                GO IF NO                  YM4612
*                                      ELSE ISSUE GM ON PAGE BDY YM4612
         SPACE
         GETMAIN  EC,LV=(WKREGC),A=(WKREGE),SP=(WKREGD),MF=(E,(1)),    X
               BNDRY=PAGE                                        YM4612
         SPACE
         B     MIN004C7                AND CONTINUE              YM4612
         SPACE
MIN004C5 EQU   *
         SPACE
         GETMAIN  EC,LV=(WKREGC),A=(WKREGE),SP=(WKREGD),MF=(E,(1))
         SPACE
MIN004C7 EQU   *
         L     WKREGE,0(WKREGE)        GET P/P RELOC FACTOR      PREMVM
         LTR   CODEREG,CODEREG         TEST RETURN CODE          PREMVM
         BZ    MIN004E                 BRANCH IF SUCCESSFUL      PREMVM
         LA    CODEREG,GMFAIL          SET ERROR CODE            PREMVM
         BR    LINKREG                 RETURN                    PREMVM
MIN004D  EQU   *                                                 PREMVM
         L     WKREGE,WKIOADDR         GET ADDR OF P/P SPACE     PREMVM
         ST    WKREGE,EXLCORAD         STORE IT IN EXTENT LIST   PREMVM
MIN004E  EQU   *                                                 PREMVM
         ST    WKREGE,PPADDR           SAVE P/P RELOC FACTOR     PREMVM
         MVI   EXLADIND,ADIND          INDICATE AN ADDR FIELD    PREMVM
         LA    NOTEREG,NOTELIST        SET NOTELIST POINTER      PREMVM
         ST    NOTEREG,NOTESAVE        SAVE NOTELIST ADDRESS     PREMVM
         DROP  WKREGB                                            PREMVM
         LCR   WKREGB,CDEREG           GET CDE ADDR              PREMVM
         USING CDENTRY,WKREGB                                    PREMVM
         OI    CDATTR2,X'20'          INDICATE EXTENT LIST BILT ZA00857
         DROP  WKREGB                                            PREMVM
         LA    PDSREG,WKNAME           SET PTR TO BLDL ENTRY     PREMVM
         LA    SEGREG,1                      SET SEG NO. TO 1
*        TM    31(WKREGB),X'02'    TEST XCTL TO PROBLEM PROGRAM
*        BZ    MIN005
*        NI    31(WKREGB),X'FD'    CLEAR FLAG
         BC    15,MIN005
         EJECT
MIN005   BALR  MINBASE1,0                    RESET BASE
         USING *,MINBASE1
         OI    IOB,X'03'                     INIT IOB FLAGS
         ST    MINBASE2,IOB+16               INIT IOB CHAN PRG POINTER
         ST    DCBREG,IOB+20                 DCB ADDR INIOB
         ST    DCBREG,DCBSAVE          SAVE DCB ADDRESS          PREMVM
         NI    SWITCH,X'00'            INITIALIZE SWITCH TO ZERO PREMVM
MIN0053  L     WKREGA,44(DCBREG)        POINT TO DEB
MIN0053A EQU   *                                                 PREMVM
         USING DEBBASIC,WKREGA         ESTABLISH DSECT BASE      PREMVM
         TM    DEBFLGS1,X'02'          AUTHORIZED LIBRARY?      ZA00857
         BZ    MIN0053B                IF NOT, BRANCH            PREMVM
         OI    WKFLG1,WKAUTH           SET AUTH. LIBRARY SWITCH  PREMVM
         DROP  WKREGA                  DROP DSECT BASE           PREMVM
MIN0053B EQU   *                                                 PREMVM
*        LA    WKREGB,MINAPNDG               GET APENDG. ADDR   ZA00857
         L     WKREGB,MINAPTAB         LOAD APPG ADDRESS        ZA00857
         O     WKREGB,MINDBMSK         SET DEBEXSCL TO 04 IN REG 22125
         ST    WKREGB,28(WKREGA)       STOR APNDG ADDR IN DEB    22125
         LA    WKREGA,ECB                    ADDR OF ECB
         ST    WKREGA,IOB+4                  ECB ADDR IN IOB
         XC    IOB+28(2),IOB+28              CLEAR IOB BLOCK COUNT
         LA    WKREGA,IOBSKBUF+3             TO SET  SEARCH ADDR
         ST    WKREGA,CHPG1
         MVI   CHPG1,X'31'                   RESET OP CODE
         ST    MINBASE2,CHPG1+8              SET TIC TO ADDR
         MVC   CHPG1+4(5),CPROG1             SET SRCH FLGS+CNT & TIC OP
         MVC   CHPG1+40(16),CPROG2           SET READ COUNT AND DATA
         MVC   CHPG1+20(4),CHPG1+4            SET CC&COUNT IN T/N
         LA    WKREGA,SEEKBUF+3
         ST    WKREGA,CHPG1+40
         MVI   CHPG1+40,X'9E'
         MVC   CHPG1+24(8),CHPG1+40
MIN0055  LR    WKREGA,SEGREG                 SEG NO. TO WORK REG
*        L     RELFACRG,16(PARREG)           GET REL FAC NON-OVER
         L     RELFACRG,PPADDR         GET REL FAC FOR 1ST LOAD  PREMVM
         LA    RELFACRG,0(RELFACRG)
MIN009   LM    WKREGF,WKREGA,12(PDSREG)      GET TTR FOR TEXT
         SLDL  WKREGF,16                     SET TTR IN REG
         IC    WKREGF,11(PDSREG)             CONCAT. FACTOR
         BAL   WKREGE,MIN0201                TO CONVERT RTN SET UP
         EJECT
*
*        FETCH LOADING ROUTINE
*
         LA    WKREGC,CHPG1+32               ADDR OF TIC TO LOC
         BAL   WKREGE,MIN020+4
         TM    23(PDSREG),X'40'              ED ASSIG ORIGIN IS ZERO
         BC    8,MIN0091
         ST    RELFACRG,CHPG1+32             STOR ADDR FOR FIRST TXT
         BC    15,MIN0092
MIN0091  L     WKREGA,32(PDSREG)             ORIGIN OF FIRST TXT
         SRL   WKREGA,8
         AR    WKREGA,RELFACRG               ADD RELOCATION FAC
         ST    WKREGA,CHPG1+32               STOR IN CHAN PROG
MIN0092  MVI   CHPG1+32,X'06'                RESTOR OP CODE
         MVC   CHPG1+38(2),27(PDSREG)        SET COUNT IN TEXT CCW
         TM    22(PDSREG),X'01'              TEST 1TXT (3 RLD
         BC    8,MIN010
         MVI   CHPG1+36,X'00'                CLEAR CHAIN FLAG
         MVI   RLDBUF,X'FF'                  SET FETCH LAST INDIC
         BC    15,MIN0101
MIN010   MVI   CHPG1+36,X'40'                SET CC BIT IN RD TEXT CCW
         LA    WKREGA,RLDBUF                 ADDR OF RLD BUF
         ST    WKREGA,CHPG1+48               STOR ADDR IN CHAN PROG
         MVI   CHPG1+48,X'06'                RESTOR OP CODE
         MVC   CHPG1+53(3),CPROG3+5          RESET RD DATA COUNT CCW
MIN0101  LA    WKREGE,MIN014                 SET RET FOR EXCP
MIN011   MVC   IOBSKBUF+1(7),SEEKBUF+1       SEEK ADDR TO IOB SEEK BUFF
         MVI   ECB,X'00'                     CLEAR ECB FLAGS
MIN01015 LA    WKREGA,IOB                    SET FOR EXCP
         SVC   EXCP
MIN0121  WAIT  1,ECB=ECB
MIN013   TM    ECB,X'20'                     TEST PERM IO ERROR
         BCR   1,WKREGE                      BRANCH X'20' NO ERROR
         LA    CODEREG,X'0F'
         B     MIN0320                       RETURN IO ERROR
MIN014   TM    RLDBUF,X'FF'                  TEST FETCH LAST INDIC
         BC    1,MIN032                      TO TERM
         BAL   WKREGE,MIN018                 CHK CORR LENGTH
         MVC   CHPG1+52(4),CPROG3+4          RESET CCW
         TM    RLDBUF,X'02'                  TEST FOR RLD TYPE REC
         BC    1,MIN021                      BRANCH RLD TYPE
         TM    RLDBUF,X'01'                  TEST CCW TYPE
         BC    1,MIN016                      BRANCH CCW
         LA    CODEREG,X'0D'
         B     MIN0320                       RETURN INVALID RLD
MIN016   TM    RLDBUF,X'04'                  TEST NEXT REC LAST
         BC    8,MIN017                      BRANCH NEXT NOT LAST
         MVI   CHPG1+36,X'00'                PULL CC BIT
         MVI   RLDBUF,X'FF'                  SET FETCH LAST INDIC
MIN017   L     WKREGA,RLDBUF+8               GET CCW DATA ADDR
         LA    WKREGA,0(RELFACRG,WKREGA)     RELOCATE DATA ADDR
         LR    WKREGB,WKREGA                 SET ADDR TO VAL CHK
         BAL   WKREGE,MIN0202                TO VAL CHK SET-UP
         AH    WKREGB,RLDBUF+14              VAL CHK END TXT ADDR
         BCTR  WKREGB,0            ADJ TO ADDRESS LAST TXT BYTE
         BAL   WKREGE,MIN0202                TO VAL CHK SET-UP
         ST    WKREGA,CHPG1+32               STOR CHKED ADDR IN CCW
         MVI   CHPG1+32,X'06'                RESTOR OP CODE
         MVC   CHPG1+37(3),RLDBUF+13         COUNT TO RD TEXT CCW
         LA    WKREGC,CHPG1+24          TIC TO FIRST '9E'        M6119
         BAL   WKREGE,MIN020+4          IN C. P. CHAIN.          M6119
         BC    15,MIN0101
MIN018   LH    WKREGA,IOB+14                 GET RESID CT FROM IOB
         LTR   WKREGA,WKREGA                 TEST FOR ZERO CT
         BCR   8,WKREGE
         LA    WKREGB,256                    GET MAX COUNT
         SR    WKREGB,WKREGA                 SUB RESID COUNT
         LA    WKREGA,16
         AH    WKREGA,RLDBUF+6               CALC CORR LENGTH
         AH    WKREGA,RLDBUF+4               ADD NO. OF BYTES OF ESDID
         CR    WKREGA,WKREGB                 DO BYTES READ=CALC COUNT
         BCR   8,WKREGE                      READ OK
         LA    WKREGA,0(WKREGA)
         ST    WKREGA,CHPG1+52               PULL SILI+SET EX CNT
         BAL   WKREGE,MIN020                 TO SET CHAN PROG
         BC    15,MIN0101
MIN019   TM    RLDBUF,X'01'                  TEST REC FOR RLD+CCW
         BC    1,MIN016                      BRANCH YES
         TM    RLDBUF,X'04'                  THIS REC LAST
         BC    1,MIN032                      LAST-TO NORMAL TERM
         LA    WKREGC,CHPG1+40
         BAL   WKREGE,MIN020+4
         BC    15,MIN0101
         EJECT
*
*        THIS IS THE SET CHANNEL PROGRAM SUBROUTINE
*
MIN020   LA    WKREGC,CHPG1+48               GET ADDR RD DATA CCW
         ST    WKREGC,CHPG1+16               SET TIC ADDR
         MVI   CHPG1+16,X'08'                RESTOR OP CODE
         BCR   15,WKREGE                     RETURN
*
*        THIS IS THE SUBROUTINE THAT SETS PARAMS. FOR TTR CONVERT RTN
*
MIN0201  STM   PDSREG,CODEREG,REGSAVE+12     SAVE REG 9-15
*   VALIDITY CHECK THE DEB AS WE DIDN'T COPY IT
*        L     WKREGA,44(DCBREG)        R1=DEB FOR TTR CONV
         L     WKREGA,DCBSAVE          GET DCB ADDRESS           PREMVM
         L     WKREGA,44(WKREGA)       GET DEB ADDRESS IN R1     PREMVM
         TM    SWITCH,PRIVDCB           IS IT A PRIVATE DCB?
         BZ    MIN02015                 GO IF NO
*        ST    WKREGF,REGSAVE+4         SAVE R0
*VALIDAT DEBCHK (LINKREG),TYPE=VERIFY        DEBPTR IS RETD IN R1
*        L     WKREGF,REGSAVE+4         RESTORE R0
         L     WKREGA,DEBSAVE          USE VALIDATED DEB PTR     PREMVM
MIN02015 LA    WKREGB,SEEKBUF                ADDR OF SEEK BUF
         L     CODEREG,CVTRTN                ADDR OF CONVERT RTN
         BALR  LINKREG,CODEREG
         MVC   IOBSKBUF(1),SEEKBUF           M TO IOB
         LM    PDSREG,CODEREG,REGSAVE+12     RESTOR REG
         BCR   15,WKREGE                     RETURN
CVTRTN   DC    V(IECPCNVT)
MINDBMSK DC    X'04000000'             MASK FOR DEBEXSCL         22125
*
*        VALIDITY CHECK SET UP ROUTINE
*
*        THIS ROUTINE SAVES AND RESTORES THE REGISTERS USED
*        BY THE VALIDITY CHECK ROUTINE. IT ALSO SETS UP THE
*        REQUIRED PARAMETERS AND TESTS THE CONDITION CODE
*        RETURNED BY THE VALIDITY CHECK ROUTINE
*
*MIN0202 LR    WKREGD,SEGREG                 TEST FOR OVERLAY
*        BCT   WKREGD,MIN02021               OVERLAY VAL CHK
*  TM  16(PARREG),X'FF'           TEST FOR PROG TO PP CORE
*        BCR   8,WKREGE                      NOT PP CORE SKIP VAL CHK
*MIN02021 STM   7,10,REGSAVE+12               SAVE REGS FOR VAL CHK
*        LR    7,WKREGB                      ADDR TO BE VAL CHK'D
*        L     8,16                          ADDR OF CVT
*        L     8,24(8)                       ADDR OF VAL CHK RTN
*        SR    9,9                           NO TCB ADDR
*        BALR  10,8                          TO VAL CHK RTN
*        BC    8,MIN0203                     BRANCH ADDRESS VALID
*        LA    CODEREG,X'0E'
*        B     MIN0320                       RETURN
*MIN0203 LM    7,10,REGSAVE+12               RESTOR REGS
MIN0202  EQU   *                                                 PREMVM
         BCR   15,WKREGE                     RETURN
         EJECT
*
*        FETCH RELOCATION ROUTINE
*
MIN021   LA    PTRREG,RLDBUF+16              SET PTR TO FIRST RPFA
         LR    ENDREG,PTRREG
         AH    ENDREG,RLDBUF+6               CALC SIZE OF BUFF
MIN022 LA    PTRREG,4(PTRREG)              SKIP R+P POINTERS
MIN023 TM    0(PTRREG),X'E0'               TEST RELOCATION REQUIRED
       BC    7,MIN026                      BRANCH NOT REQUIRED
       L     WKREGB,0(PTRREG)              ADDR OF LOAD CONSTANT
         LA    WKREGB,0(RELFACRG,WKREGB)     ADD RELOCATION
         BAL   WKREGE,MIN0202                TO VAL CHK SET-UP
         SR    WKREGD,WKREGD                 CLEAR REG
       ST    WKREGD,REGSAVE                CLEAR REG SAVE AREA
       NI    0(PTRREG),X'0F'               CLEAR UNWANTED FLAGS
       IC    WKREGD,0(PTRREG)              COUNT INTO REG
       SRL   WKREGD,2
       LA    WKREGC,REGSAVE+3              SET ADDR OF BOUNDARY WORD
       SR    WKREGC,WKREGD                 SET BOUND. WORD TO ' BYTES
       EX    WKREGD,MIN027                 MOVE ADCON TO BOUND WRD
       L     WKREGE,REGSAVE                LOAD FROM BUND WRD
         TM    0(PTRREG),X'02'               ADD OR SUB RELOC FACTOR
         BC    8,MIN024                      BRANCH TO ADD
       SR    WKREGE,RELFACRG               SUB RELOCATION FACTOR
         BC    15,MIN025
MIN024   AR    WKREGE,RELFACRG               ADD RELOC FACTOR
MIN025 ST    WKREGE,REGSAVE                RET TO BOUNDARY WORD
       EX    WKREGD,MIN028                 RET ADCON
MIN026 LR    WKREGC,PTRREG                 SAVE POINTER
       LA    PTRREG,4(PTRREG)              ADD 4 TO COUNT
       CR    PTRREG,ENDREG                 DOES PTR =END
       BC    8,MIN019                      COMPLETE  BRANCH OUT
       TM    0(WKREGC),X'01'               TEST TERM FLAG
       BC    1,MIN023                      SAME R++
       BC    15,MIN022                     DIFF R+P POINTERS  INDEX+4
         SPACE
MIN027 MVC   0(1,WKREGC),0(WKREGB)
MIN028 MVC   0(1,WKREGB),0(WKREGC)
         EJECT
*
*        FETCH TERMINATION
*
MIN032   SR    CODEREG,CODEREG               SET SUCCESSFUL LOAD CODE
MIN0320  EQU   *                                                 PREMVM
MIN0320A EQU   *                                                 PREMVM
         LTR   CODEREG,CODEREG          TEST IF ERROR IN FETCH   PREMVM
         BCR   7,LINKREG                AND BR IF YES            XM5009
MIN0321  TM    23(PDSREG),X'20'              ED ASIGN ENT PT = ZERO
         BC    1,MIN033
         L     WKREGA,28(PDSREG)             GET ENTRY POINT
         LA    RELFACRG,0(RELFACRG,WKREGA)   GET RELOCATED EP    PREMVM
*MIN033   ST    RELFACRG,20(PARREG)           REL ENT PT TO FETCH LIST
MIN033   LR    WKREGE,RELFACRG               PASS RELOCATED EP   PREMVM
         BCR   15,LINKREG                    RETURN
         EJECT
*
*    PAGE FIX LIST
*
         CNOP  0,8                     INSURE DBL WRD BOUNDARY   M6455
FIXLIST  DC    X'00'
         DC    AL3(MINAPNDG)           BEGINNING OF FIX AREA
         DC    X'80'                   LAST OF LIST INDICATOR
         DC    AL3(MINAPG02+2)         END OF FIX AREA
*
         SPACE
         SPACE
*
*        END OF EXTENT APPENDAGE
*
*        THIS ROUTINE WILL RECEIVE CONTROL FROM IOS WHEN
*        IOS DETECTS AN END OF EXTENT CONDITION ON AN EXCP
*        BY FETCH. THE FUNCTION OF THIS ROUTINE IS TO UPDATE
*        THE SEEK ADDRESS IN THE IOB AND UCB WITH THE
*        NEXT EXTENT ADDRESS FROM THE DEB.
*
         SPACE
MINAPTAB DC    A(MINAPNDG)             ADDRESS OF APPENDAGES    ZA00857
MINAPNDG DC    A(MINAPG00)                   END OF EXTENT
         DC    A(MINAPG02)                   RETURN
         DC    A(MINAPG02)                   RETURN
         DC    A(MINAPG02)             C.E.                      23625
         DC    A(MINAPG02)                   RETURN
         SPACE
MINAPG00 SR    WKREGE,WKREGE                 CLEAR REG FOR M
*        IC    WKREGE,48(7)                  GET M FROM UCB
         IC    WKREGE,0(6)                   GET M FROM MBBCCHHR PREMVM
         LA    WKREGE,1(WKREGE)              INDEX M BY 1
*        STC   WKREGE,48(7)                  STOR NEW M IN UCB
         STC   WKREGE,0(6)                   STOR NEW M IN SEEK@ PREMVM
*        CLC   16(1,3),48(7)                 CHK FOR LAST EXTENT
         CLC   16(1,3),0(6)                  CHK FOR LAST EXTENT PREMVM
         BCR   12,LINKREG                    ERROR RETURN
         SLL   WKREGE,4                      USE M AS INDEX FACTOR
         LA    WKREGE,32(WKREGE,3)           CALC PTR TO NEW EXTENT
*        MVC   49(6,7),4(WKREGE)             BBCCHH TO UCB
         MVC   1(6,6),4(WKREGE)              BBCCHH TO SEEK FLD  PREMVM
*        MVI   55(7),RECONE             R IN CCHHR IN UCB TO ONE A31918
         MVI   7(6),RECZERO          SET R IN CCHHR IN   PREMVM,OS57172
*                                    SEEK ADDR TO ZERO   PREMVM,OS57172
*        MVC   32(8,2),48(7)           SET IOBSEEK = UCB         23625
         MVC   32(8,2),0(6)            SET IOBSEEK = SEEK FIELD  PREMVM
         SPACE
****************
*  SET THE 2ND TIC FOLLOWING THE SEARCH-ID CCW TO POINT TO THE
*  CORRECT READ COUNT CCW IN CASE THE CHANNEL PROGRAM IS RESTARTED
*  BY THE DASD ERP AFTER A CORRECTABLE I/O ERROR ON THE 1ST RECORD
*  OF THE NEW EXTENT. THIS PREVENTS RECROSSING THE END-OF-EXTENT
*  AND TRYING TO UPDATE TO THE NEXT EXTENT PREMATURELY, WHICH
*  WOULD BE DISASTROUS.                                         OS57172
****************
         SPACE
         LR    WKREGE,WKREGB           POINT TO THE IOB         OS57172
         LA    WKREGC,IOB-(CHPG1+17)   OFFSET FROM TIC ADDR FLD OS57172
*                                      TO START OF IOB          OS57172
         SR    WKREGE,WKREGC           POINT TO TIC ADDR FLD    OS57172
         L     WKREGC,8(WKREGB)        GET CURRENT CCW POINTER  OS57172
*                                      FROM CSW IN IOB          OS57172
         LA    WKREGD,8                WIDTH OF ONE CCW         OS57172
         SR    WKREGC,WKREGD           BACK UP CSW PTR TO POINT OS57172
*                                      TO START OF LAST CCW     OS57172
*                                      EXECUTED                 OS57172
         STCM  WKREGC,ADDR,0(WKREGE)   SET TIC-TO ADDRESS       OS57172
         BC    15,8(LINKREG)                 RETURN
         SPACE
         SPACE
MINAPG02 BCR   15,LINKREG                    NORMAL RETURN
MINAPEND DS    0H                                               ZA00857
         EJECT
*
*        FETCH CHANNEL PROGRAM
*
CPROG1   DC    XL1'60'
         DC    XL3'05'
         DC    XL1'08'
*
*
*
CPROG2   DC    XL1'9E'
         DC    AL3(0)
         DC    XL1'A0'
         DC    XL3'08'
*
*
*
CPROG3   DC    XL1'06'
         DC    XL3'0'
         DC    XL1'20'
         DC    XL3'100'
*
*
*
*        FETCH CONSTANTS
LINKDCB  DC    V(IEFLINK)
SVCDCB   DC    V(IEASVDCB)
         EJECT
*        IKJTCB   SYS=AOS1                                      ZA00857
*        IKJTCB   SYS=AOS2                                      ZA00857
         EJECT
**************************************************************** PREMVM
*
*     COMBINED EXTENT LIST / NOTE LIST CONSTRUCTED BY FETCH
*     WHEN INVOKED BY CONTENTS SUPERVISOR. THE NOTE LIST
*     PORTION EXISTS ONLY FOR MODULES IN OVERLAY STRUCTURE.
*
EXLNL    DSECT
EXLIST   DS    0F        START OF EXTENT LIST
EXLLNTH  DS    F              LENGTH OF EXTENT (PLUS NOTE) LIST
EXLRELFC DS    F              NUMBER OF CORE BLKS FOR MODULE
EXLCORSZ DS    0F             SIZE OF CORE BLK ALLOC TO MODULE
EXLSZIND DS    XL1              - FLAG TO IND A SIZE FIELD
EXLSZBLK DS    FL3              - SIZE IN BYTES
EXLCORAD DS    0F             ADDRESS OF CORE BLOCK ALLOCATED
EXLADIND DS    XL1              - FLAG TO IND AN ADDRESS FIELD
EXLADBLK DS    AL3              - ADDRESS OF FIRST BYTE
*
SZIND    EQU   X'80'          SIZE INDICATOR
ADIND    EQU   X'00'          ADDR INDICATOR
EXLSIZE  EQU   *-EXLIST       LENGTH OF XTENT LIST PORTION
*
*        NOTE LIST FOR OVERLAY MODULES.
*
NOTELIST DS    0F        BEGINNING OF NOTELIST
NLRELFAC DS    F         RELOCATION FACTOR FOR THE MODULE
*                        (ALSO, THE ADDRESSS OF THE SEGTAB)
NLCORSIZ DS    XL3       MS CORE REQUIREMENT OF THE MODULE
NLCONCAT DS    XL1       CONCATENATION NUMBER OF MODULE DATA SET
NLENTRYS DS    0F        NOTELIST ENTRIES(ONE/SEGMENT)...
NLSEGTTR DS    XL3            TTR FOR READING THE SEGMENT
NLZERO   DC    X'00'          ZERO
*--------
NLENTSZ  EQU   2         ENTRY SIZE (FOR SHIFT-MULTIPLY)
NLPFXSZ EQU   8          LENGTH OF NL PREFIX PORTION
         EJECT
*        IHACDE                                                 ZA00857
         EJECT
*        IEZDEB                                                 ZA00857
**************************************************************** PREMVM
         EJECT
         IHAFETWK
         SPACE
*
*
         ORG   WKFETCH                                           PREMVM
*WKCORE   DSECT
WKCORE   EQU   *                                                 PREMVM
CHPG1    DS    7D                            CHANNEL PROG
ECB      DS    1F                            EVENT CONTROL BLOCK
IOB      DS    8F                            IO BLOCK
IOBSKBUF DS    2F                            IOB SEEK BUFFER
SEEKBUF  DS    3F                            SEEK BUFFER
REGSAVE  DS    10F                           REG SAVE AREA
RLDBUF   DS    64F                           RLD BUFFER
DCBSAVE  DS    1F                      SAVE DCB ADDRESS          PREMVM
NOTESAVE DS    1F                      SAVE NOTELIST ADDRESS     PREMVM
PPADDR   DS    1F                      SAVE P/P RELOC FACTOR     PREMVM
PSDCB    EQU   *-44                    PSEUDO DCB TO LOCATE DEB  PREMVM
*                                      COPY AFTER VALIDATION     PREMVM
DEBSAVE  DS    1F                      ADDRESS OF DEB COPY       PREMVM
DEBLEN   DS    1F                      SIZE OF COPIED DEB        PREMVM
*
*
SWITCH   EQU   CHPG1+13                SWITCH BYTE
*                                       X'80' TASK IS RUNNING V=R
PGFIXECB EQU   REGSAVE                 ECB USED TO FIX THE AVT
*                                       AND EOX APPENDAGE
*
*
*        REGSAVE
*           1-4  BOUNDARY WORD FOR RELOCATION RTN
*           5-8
*           9-12
*          13-40 REG SAVE AREA  9-15
*
         SPACE 3
         ORG   WKNAME                                            PREMVM
         IHAPDS  DSECT=NO                                        PREMVM
./ ADD NAME=IEZABP
*/*********************************************************************
*                                                                     *
*   THIS MACRO DESCRIBES THE COMMUNICATION AREA OF THE I/O MANAGER.   *
*   IT IS LOCATED IN THE NUCLEUS AND IS ADDRESSED BY THE CVT          *
*   (CVTIOBP).  IT CONTAINS THE ADDRESSES OF I/O MANAGER MODULES      *
*   LOCATED IN THE NUCLEUS.  THESE ARE NEEDED BY I/O MANAGER AND ITS  *
*   USERS.                                                            *
*                                                                     *
*    03/09/73          LEVEL=00                                       *
*                                                                     *
**********************************************************************/
* %      GO TO ABPPLS;              /* GO TO THE PLS VERSION         */
         MACRO
         IEZABP
ABP      DSECT
         SPACE 1
         DS    0F
ABPID    DS    BL1                  ABP CONTROL BLOCK IDENTIFIER
ABPLEN   DS    BL1                  LENGTH OF IEZABP
ABPBR14  DS    H                    BRANCH ON REGISTER 14
ABPSIOD  DS    F                    SUPERVISOR STATE I/O DRIVER ADDRESS
ABPABP   DS    F                    ACTUAL BLOCK PROCESSOR ADDRESS
ABPNE    DS    F                    NORMAL END ROUTINE ADDRESS
ABPAE    DS    F                    ABNORMAL END ROUTINE ADDRESS
         MEND
         EJECT
*%ABPPLS: ;
* /* ABP (ACTUAL BLOCK PROCESSOR) DECLARATION                        */
* /*                                                                 */
* /*                                                                 */
*%GO TO ABPPLS1;
* /*    ABP DIAGRAM                                                  */
* /*                                                                 */
* /*  0  ________________________________________________            */
* /*                                                             */
* /*       ABPID     ABPLEN          ABPBR14                     */
* /*  4 ______________________________________________           */
* /*                                                               */
* /*                       ABPSIOD                                 */
* /*  8 ________________________________________________           */
* /*                                                               */
* /*                       ABPABP                                  */
* /* 12 ________________________________________________           */
* /*                                                               */
* /*                       ABPNE                                   */
* /* 16 ________________________________________________           */
* /*                                                               */
* /*                       ABPAE                                   */
* /* 20 ________________________________________________           */
* /*                                                                 */
* /*    ABP DECLARATION                                              */
* /*                                                                 */
*%ABPPLS1:;
*/*                                                                  */
*  DCL 1 IEZABP BDY(WORD) BASED(CVTIOBP),
*        2 ABPID    CHAR(1),        /* ABP CONTROL BLOCK IDENTIFIER  */
*        2 ABPLEN   PTR(8),         /* LENGTH OF IEZABP              */
*        2 ABPBR14  CHAR(2),        /* BRANCH ON REGISTER 14         */
*        2 ABPSIOD  PTR(31),        /* SUPERVISOR STATE I/O DRVR ADDR*/
*        2 ABPABP   PTR(31),        /* ACTUAL BLOCK PROCESSOR ADDRESS*/
*        2 ABPNE    PTR(31),        /* NORMAL END ROUTINE ADDRESS    */
*        2 ABPAE    PTR(31);        /* ABNORMAL END ROUTINE ADDRESS  */
./ ADD NAME=IEZBASEV
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/192/341040         @Y30LB22*/
 /*                                                                  */
 /*          NAME: IEZBASEV                                  @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION:                                       @Y30LB22*/
 /*          A BASE VOLUME RECORD IS CONTAINED IN THE MSVI   @Y30LB22*/
 /*          DATA SET FOR EACH MASS STORAGE VOL (EXCLUDING   @Y30LB22*/
 /*          COPY VOLUMES AND DUPLICATE VOLUME SERIAL        @Y30LB22*/
 /*          NUMBER VOLUMES) CONTAINED IN THE MASS STORAGE   @Y30LB22*/
 /*          FACILITY                                        @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  CHANGE LEVEL = 1                       @ZA11665*/
 /*                                                          #Y30LB22*/
 /*     CHANGE 01 07/12/76  FIX TO EXPIR DATE                @ZA11665*/
 /*                                                          #Y30LB22*/
 /********************************************************************/
 DCL  1         BASEV BASED(BASEVPTR) BDY(WORD),           /*@Y30LB22*/
         2      BASNAME   CHAR(13),  /*KEY  OF VOL           @Y30LB22*/
           3    BASEVKEY  CHAR(5),   /*LETTER V AND 4 BLANKS @Y30LB22*/
           3    BASSERNO  CHAR(6),   /*VOLUME SER. NO.       @Y30LB22*/
           3    BASID     CHAR(2),   /*RECORD ID             @Y30LB22*/
             4  BASBLANK  CHAR(1),   /*BLANK                 @Y30LB22*/
             4  BASZERO   FIXED(8),  /*BINARY ZEROS          @Y30LB22*/
         2      BASRES7   CHAR(1),   /*RESERVED              @Y30LB22*/
         2      BASFLAGA  BIT(32),   /*FIELD INDICATOR FLGS  @Y30LB22*/
           3    BASTYPE   BIT(16),   /*RECORD TYPE FLAGS     @Y30LB22*/
             4  BASRES1   BIT(2),    /*RESERVED              @Y30LB22*/
             4  BASBASVR  BIT(1),    /*BASE VOLUME RECORD    @Y30LB22*/
             4  BASRES2   BIT(13),   /*RESERVED              @Y30LB22*/
           3    BASDLSF   BIT(1),    /*DOWN LEVEL SPACE FLAG @Y30LB22*/
           3    BASNOCPY  BIT(1),    /*IF ON-NO COPY         @Y30LB22*/
           3    BASGRPV   BIT(1),    /*VOL BELONGS TO GROUP  @Y30LB22*/
           3    BASGENUS  BIT(1),    /*GENERAL USE TYPE VOL  @Y30LB22*/
           3    BASRSTD   BIT(1),    /*RESTRICTED TYPE VOL   @Y30LB22*/
           3    BASINAC   BIT(1),    /*INACTIVE TYPE VOLUME  @Y30LB22*/
           3    BASBIND   BIT(1),    /*ATTR FOR VOL IS BIND  @Y30LB22*/
           3    BASEXCL   BIT(1),    /*ATTRIB IS EXCLUSIVE   @Y30LB22*/
           3    BASDAERA  BIT(1),    /*ATTRIB IS DASDERASE   @Y30LB22*/
           3    BASRONLY  BIT(1),    /*ATTRIB IS READ ONLY   @Y30LB22*/
           3    BASREASS  BIT(1),    /*CARTRIDGES REASSIGNED @Y30LB22*/
           3    BASFIRST  BIT(1),    /*FIRST VOL IN CHAIN    @Y30LB22*/
           3    BASLAST   BIT(1),    /*LAST VOL IN CHAIN     @Y30LB22*/
           3    *         BIT(3),    /*UNUSED                @Y30LB22*/
         2      BASCPUID  BIT(16),   /*CPU ASSOCIATION MAP   @Y30LB22*/
         2      BASRCVYF  BIT(32),   /*RECOVERY FIELDS       @Y30LB22*/
           3    BASSATIA  BIT(16),   /*STATUS INDICATOR AREA @Y30LB22*/
             4  BASIVCRE  BIT(1),    /*INCOMPLETE VOL CREATE @Y30LB22*/
             4  BASIVCPY  BIT(1),    /*INCOMPLETE VOL. COPY  @Y30LB22*/
             4  BASVSMIS  BIT(1),    /*VOL. SER. MISMATCH    @Y30LB22*/
             4  BASRES8   BIT(13),   /*RESERVED              @Y30LB22*/
           3    BASMISCF  BIT(16),   /*MISCL. FLAGS          @Y30LB22*/
             4  BASHOLD   BIT(1),    /*PLACEHOLDER RECORD    @Y30LB22*/
             4  BASRES3   BIT(15),   /*RESERVED              @Y30LB22*/
         2      BASCSN1   CHAR(12),  /*SER # - 1ST CARTRIDGE @Y30LB22*/
         2      BASLIB1   FIXED(8),  /*ID OF LIB FOR CSN1    @Y30LB22*/
           3    BASRES4   BIT(6),    /*RESERVED              @Y30LB22*/
           3    BASLID1   BIT(2),    /*LIBRARY ID 1          @Y30LB22*/
             4  BAS1BIT1  BIT(1),    /*LIBRARY NO.           @Y30LB22*/
             4  BAS1BIT2  BIT(1),    /*LIBRARY NO.           @Y30LB22*/
         2      BASCSN2   CHAR(12),  /*SER # - 2ND CARTRIDGE @Y30LB22*/
         2      BASLIB2   FIXED(8),  /*LIBRARY ID FOR CSN2   @Y30LB22*/
           3    BASRES5   BIT(6),    /*RESERVED              @Y30LB22*/
           3    BASLID2   BIT(2),    /*LIBRARY ID 2          @Y30LB22*/
             4  BAS2BIT1  BIT(1),    /*LIBRARY NO.           @Y30LB22*/
             4  BAS2BIT2  BIT(1),    /*LIBRARY NO.           @Y30LB22*/
         2      BASPREV   CHAR(6),   /*VOL SER OF PREV VOL   @Y30LB22*/
         2      BASNEXTV  CHAR(6),   /*VOL SER OF NEXT VOL   @Y30LB22*/
         2      BASNCOPY  FIXED(8),  /*# COPIES OF THIS VOL  @Y30LB22*/
         2      BASNBKUP  FIXED(8),  /*# BKUP COPYIES OF VOL @Y30LB22*/
         2      BASBKLMT  FIXED(8),  /*MAX # - BACKUP COPIES @Y30LB22*/
         2      *         CHAR(3),   /*UNUSED                @Y30LB22*/
         2      BASFRESP  FIXED(16), /*NO. OF FREE CYLINDERS @Y30LB22*/
         2      BASLEXT   FIXED(16), /*CYL LARGEST FREE EXT  @Y30LB22*/
         2      BASFREXT  FIXED(32), /*FREE EXTENTS ON VOL   @Y30LB22*/
         2      BASKLCPY  CHAR(13),  /*LAST COPY OF VOL KEY  @Y30LB22*/
           3    BASCOPV   CHAR(5),   /* LETTER V & 4 BLANKS  @Y30LB22*/
           3    BASCOPSN  CHAR(6),   /* SER NO OF COPIED VOL @Y30LB22*/
           3    BASCOPID  CHAR(2),   /* RECORD NUMBER ID     @Y30LB22*/
             4  BASCOPBK  CHAR(1),   /* BLANK                @Y30LB22*/
             4  BASCOPNO  FIXED(8),  /* BIN NO OF COPIED REC @Y30LB22*/
         2      BASRES6   CHAR(3),   /*RESERVED              @Y30LB22*/
         2      BASDLMTD  CHAR(4),   /*DATE WHEN LAST MTD    @Y30LB22*/
         2      BASEXPDT  CHAR(4),   /*EXP DATE FOR VOL      @Y30LB22*/
         2      BASDTREM  CHAR(4),   /*DATE VOL WAS EJECTED  @Y30LB22*/
         2      BASDESCR  CHAR(30),  /*DESCR INFO ABOUT VOL  @Y30LB22*/
         2      BASOWNER  CHAR(10),  /*NAME/ID OF VOL OWNER  @Y30LB22*/
         2      BASDEST   CHAR(30),  /*DEST AFTER EJECTION   @Y30LB22*/
         2      BASRECOV  CHAR(6),   /*SER # FOR RECOVERY    @Y30LB22*/
         2      BASGROUP  CHAR(8),   /*GROUP VOL BELONGS TO  @Y30LB22*/
         2      BASXPDT2  CHAR(4),   /*OLD EXPIRATION DATE   @ZA11665*/
         2      *         CHAR(32);  /*UNUSED                @ZA11665*/
./ ADD NAME=IEZBCDV
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/192/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZBCDV                                   @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          THIS MACRO MAPS THE COMMON PARTS OF THE BASE,   @Y30LB22*/
 /*          COPY, AND DUPLICATE VOLUME RECORDS.             @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                                   */
 /********************************************************************/
     DCL
       1        BCDV BASED(BCDVPTR) BDY(WORD),             /*@Y30LB22*/
         2      BCDNAME   CHAR(13),  /* KEY OF VOLUME        @Y30LB22*/
           3    BCDPREFX  CHAR(5),   /* A LETTER & 4 BLANKS  @Y30LB22*/
             4  BCDALPHA  CHAR(1),   /* ALPHA CHARACTER      @Y30LB22*/
             4  BCDBLNK1  CHAR(4),   /* BLANK                @Y30LB22*/
           3    BCDSERNO  CHAR(6),   /* VOL SER NUMBER       @Y30LB22*/
           3    BCDID     CHAR(2),   /* RECORD ID            @Y30LB22*/
             4  BCDBLNK2  CHAR(1),   /* BLANK                @Y30LB22*/
             4  BCDINDEX  FIXED(8),  /* RECORD INDEX NO.     @Y30LB22*/
         2      BCDRES9   CHAR(1),   /* RESERVED             @Y30LB22*/
         2      BCDFLAGA  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    BCDTYPE   BIT(16),   /* RECORD TYPE FLAGS    @Y30LB22*/
             4  BCDRES1   BIT(2),    /* RESERVED             @Y30LB22*/
             4  BCDBASE   BIT(1),    /* BASE VOLUME RECORD   @Y30LB22*/
             4  BCDCOPY   BIT(1),    /* COPY VOLUME RECORD   @Y30LB22*/
             4  BCDRES2   BIT(1),    /* RESERVED             @Y30LB22*/
             4  BCDDUP    BIT(1),    /* DUPLICATE VOL RECORD @Y30LB22*/
             4  BCDRES3   BIT(10),   /* RESERVED             @Y30LB22*/
           3    BCDFLAGB  BIT(16),   /* SCRATCH FLAGS        @Y30LB22*/
             4  BCDRES4   BIT(10),   /* RESERVED             @Y30LB22*/
             4  BCDREASS  BIT(1),    /* CARTRIDGE REASSIGNED @Y30LB22*/
             4  BCDRES5   BIT(5),    /* RESERVED             @Y30LB22*/
         2      BCDCPUID  BIT(16),   /* CPU ASSOC BIT MAP    @Y30LB22*/
         2      BCDRCVYF  BIT(32),   /* RECOVERY FIELDS      @Y30LB22*/
           3    BCDSATIA  BIT(16),   /* STATUS INDICATOR     @Y30LB22*/
             4  BCDIVCRE  BIT(1),    /* INCOMPLETE VOL CREAT @Y30LB22*/
             4  BCDIVCPY  BIT(1),    /* INCOMPLETE VOL COPY  @Y30LB22*/
             4  BCDVSMIS  BIT(1),    /* VOL SER MISMATCH     @Y30LB22*/
             4  BCDRES7   BIT(13),   /* RESERVED             @Y30LB22*/
           3    BCDMISCF  BIT(16),   /* MISCL. FLAGS         @Y30LB22*/
             4  BCDHOLD   BIT(1),    /* PLACEHOLDER RECORD   @Y30LB22*/
             4  BCDRES7A  BIT(15),   /* RESERVED             @Y30LB22*/
         2      BCDCSN1   CHAR(12),  /* SER NO OF 1ST CART.  @Y30LB22*/
         2      BCDLIB1   FIXED(8),  /* ID OF LIB FOR CSN1   @Y30LB22*/
           3    BCDRE10   BIT(6),    /* RESERVED             @Y30LB22*/
           3    BCDLID1   BIT(2),    /* LIBRARY ID 1         @Y30LB22*/
             4  BCD1BIT1  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
             4  BCD1BIT2  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
         2      BCDCSN2   CHAR(12),  /* SER NO OF 2ND CART.  @Y30LB22*/
         2      BCDLIB2   FIXED(8),  /* ID OF LIB FOR CSN2   @Y30LB22*/
           3    BCDRES8   BIT(6),    /* RESERVED             @Y30LB22*/
           3    BCDLID2   BIT(2),    /* LIBRARY ID 2         @Y30LB22*/
             4  BCD2BIT1  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
             4  BCD2BIT2  BIT(1);    /* LIBRARY NO.          @Y30LB22*/
./ ADD NAME=IEZBFTBL
 /*********************************************************  @G24LB26*/
 /*                                                          @G24LB26*/
 /*  NAME:  IEZBFTBL (VOLUME BEST FIT TABLE)                 @G24LB26*/
 /*                                                          @G24LB26*/
 /*  FUNCTION - MAPPING MACRO (ALLOCATE TO MOUNTED VOLUMES)  @G24LB26*/
 /*             TABLE HOLDING ALL VOLUMES IN A SPECIFIC      @G24LB26*/
 /*             GROUP ELIGIBLE TO BE SELECTED FOR A          @G24LB26*/
 /*             PARTICULAR REQUEST.  CERTAIN FIELDS WILL BE  @G24LB26*/
 /*             SORTED WHEN THE LIST IS COMPLETE IN ORDER    @G24LB26*/
 /*             OF THEIR FITNESS FOR THE REQUEST. ALSO IS    @G24LB26*/
 /*             PASSED TO THE TABLE PROCESSOR ROUTINE TO     @G24LB26*/
 /*             OBTAIN ADDITIONAL INFORMATION ON THE         @G24LB26*/
 /*             VOLUMES.                                     @G24LB26*/
 /*                                                          @G24LB26*/
 /*  STATUS:  MVS/VS1                                        @G24LB26*/
 /*                                                          @G24LB26*/
 /*  CHANGE ACTIVITY -                                       @ZA28479*/
 /*         CHANGE 1 10/21/77 SPACE ACCOUNTING. ADD FIELD    @ZA28479*/
 /*                           BFMTDOHT.                      @ZA28479*/
 /*                                                          @ZA28479*/
 /*********************************************************  @G24LB26*/
 DCL 1 BFTBL BASED   BDY(WORD),                            /*@G24LB26*/
       2 BFHEADER,                  /*HEADER SECTION         @G24LB26*/
         3 BFLEN       FIXED(15),   /*LENGTH OF TABLE        @G24LB26*/
         3 BFGROUP     CHAR(8),     /*GROUP NAME             @G24LB26*/
         3 BFTOTIDX    FIXED(15),   /*# ELEMENTS IN ARRAY    @G24LB26*/
         3 BFDEVTP     FIXED(31),   /*INTERNAL DEVICE TYPE   @G24LB26*/
                                    /*OR UCB ADDRESS         @G24LB26*/
         3 BFJOBID     FIXED(31),   /*TCB ADDRESS (VS1) OR   @G24LB26*/
                                    /*ASID (VS2)             @G24LB26*/
         3 BFREQFLS    BIT(8),      /*REQUEST FLAGS          @G24LB26*/
           4 BFNSHRFL  BIT(1),      /*REQUEST IS NON-SHARE   @G24LB26*/
           4 *         BIT(7),      /*UNUSED                 @G24LB26*/
       2 BFENTRY(*),                /*START OF ARRAY         @G24LB26*/
         3 BFSLOT,                  /*SLOT SECTION           @G24LB26*/
           4 BFVOLID   CHAR(6),     /*SERIAL NUM OF VOL      @G24LB26*/
           4 BFGRPIDX  FIXED(8),    /*EXTENSION INDEX NUM    @G24LB26*/
           4 BFGRPSLT  FIXED(8),    /*EXTENSION SLOT NUM     @G24LB26*/
           4 BFHPFLGS  BIT(8),      /*HIGH PRIORITY SORTING  @G24LB26*/
                                    /*FLAGS                  @G24LB26*/
             5 BFHRSKFL BIT(1),     /*VOL IS HIGH RISK       @G24LB26*/
             5 BFWAITFL BIT(1),     /*WAIT OR ENQUEUED       @G24LB26*/
                                    /*VOLUME                 @G24LB26*/
             5 *        BIT(6),     /*THESE 6 BITS MUST      @G24LB26*/
                                    /*REMAIN UNUSED          @G24LB26*/
           4 BFOVERUS  FIXED(8),    /*CON USERS IF OVER MAX  @G24LB26*/
           4 BFVOLEXP  CHAR(4),     /*VOL EXPIRATION DATE    @G24LB26*/
           4 BFLPFLGS  BIT(8),      /*LOW PRIORITY SORTING   @G24LB26*/
                                    /*FLAGS                  @G24LB26*/
             5 BFSHCNFL BIT(1),     /*SHAREABILITY           @G24LB26*/
                                    /*CONSIDERATION          @G24LB26*/
             5 BFNMTDFL BIT(1),     /*VOL NOT MOUNTED OR     @G24LB26*/
                                    /*SCHEDULED TO BE        @G24LB26*/
                                    /*MOUNTED                @G24LB26*/
             5 BFMTDOHF BIT(1),     /*VOL MOUNTED OTHER HOST @G24LB26*/
                                    /*AND NOT SCHEDULED TO   @G24LB26*/
                                    /*BE MOUNTED THIS HOST   @G24LB26*/
             5 *        BIT(5),     /*UNUSED                 @G24LB26*/
           4 BFCONUSE   FIXED(8),   /*NUM CONCURRENT USERS   @G24LB26*/
           4 BFMISCFL   BIT(16),    /*MISCELLANEOUS FLAGS    @G24LB26*/
             5 BFBADPRI BIT(1),     /*NOT FOR PRIMARY SEL    @G24LB26*/
             5 BFBADSEC BIT(1),     /*NOT FOR SECONDARY SEL  @G24LB26*/
             5 BFSELPRI BIT(1),     /*VOL SELECTED FOR       @G24LB26*/
                                    /*PRIMARY                @G24LB26*/
             5 BFSELSEC BIT(1),     /*VOL SELECTED FOR       @G24LB26*/
                                    /*SECONDARY              @G24LB26*/
             5 BFJESOK  BIT(1),     /*JES3 VERIFIED VOL,     @G24LB26*/
                                    /*VS/2 ONLY              @G24LB26*/
             5 BFVOLREJ BIT(1),     /*JES3 REJECTED VOL,     @G24LB26*/
                                    /*OR TEST ENQ FAILED OR  @G24LB26*/
                                    /*VOL WAIT AND DYN ALLOC @G24LB26*/
             5 BFNOENQ  BIT(1),     /*VOL NOT ENQUEUED,      @G24LB26*/
                                    /*VS/2 ONLY              @G24LB26*/
             5 BFENQUED BIT(1),     /*VOL ENQUEUED,          @G24LB26*/
                                    /*VS/2 ONLY              @G24LB26*/
             5 BFNOTMTD BIT(1),     /*VOL NOT MOUNTED        @G24LB26*/
             5 BFMTDOTH BIT(1),     /*VOL MOUNTED OTHER HOST @G24LB26*/
             5 BFMTDOHT BIT(1),     /*VOL MTD OTHER HOST,    @ZA28479*/
                                    /*MAY OR MAY NOT BE      @ZA28479*/
                                    /*EXCLUSIVE OTHER HOST   @ZA28479*/
             5 *        BIT(5);     /*UNUSED                 @ZA28479*/
./ ADD NAME=IEZCOM
*        %GOTO COMBSL;        /* BILINGUAL MAPPING                   /*
         MACRO
         IEZCOM
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*        COMMUNICATIONS PARAMETER LIST
*              MAPPING MACRO
*
*    AOS/1 RELEASE 1, 10/19/71, LEVEL=1
*
         DS    0D
COMLIST  EQU   * COMPTR ->    COMMUNICATIONS PARAMETER LIST
*
COMECBPT DS    A -            PTR TO ECB FOR STOP OR MODIFY COMMAND
COMLAST  DS    0A -           LAST POINTER IN PARAMETER LIST
COMEND   EQU   X'80' -        HIGH ORDER BIT OF LAST PARAMETER POINTER
COMCIBPT DS    A -            PTR TO COMMAND INPUT BUFFER (CIB)
*                               MAPPED BY THE MACRO IEZCIB
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
         MEND  , */
* %COMBSL  :  ;
*
* /*  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  */
*
* /*     COMMUNICATIONS PARAMETER LIST                               */
* /*           MAPPING MACRO                                         */
*
* /* AOS/1 RELEASE 1, 10/19/71, LEVEL=1                              */
*
* DECLARE
*   1 COMLIST  BASED(COMPTR),
*
*    2 COMECBPT PTR(31),             /* PTR TO ECB FOR STOP OR
*                                       MODIFY COMMAND               */
*    2 COMCIBPT PTR(31),             /* PTR TO COMMAND INPUT BUFFER
*                                       (CIB) MAPPED BY THE MACRO
*                                       IEZCIB                       */
*
* /*  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  */
*
*     3 COMLAST  PTR(31),            /* LAST POINTER IN PARAMETER
*                                       LIST                         */
*      4 COMEND   BIT(1),            /* HIGH ORDER BIT OF LAST
*                                       PARAMETER POINTER            */
*      4 *        BIT(1),            /* RESERVED                     */
*      4 *        BIT(1),            /* RESERVED                     */
*      4 *        BIT(1),            /* RESERVED                     */
*      4 *        BIT(1),            /* RESERVED                     */
*      4 *        BIT(1),            /* RESERVED                     */
*      4 *        BIT(1),            /* RESERVED                     */
*      4 *        BIT(1);            /* RESERVED                     */
./ ADD NAME=IEZCOPYV
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/192/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZCOPYV                                  @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          A COPY VOL RECORD IS  CONTAINED IN THE MSVI     @Y30LB22*/
 /*          DATA SET FOR EACH COPY VOLUME  CONTAINED        @Y30LB22*/
 /*          IN THE MASS STORAGE FACILITY                    @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                                   */
 /********************************************************************/
     DCL
       1        COPYV BASED(COPYVPTR) BDY(WORD),           /*@Y30LB22*/
         2      COPNAME   CHAR(13),  /* KEY OF VOLUME        @Y30LB22*/
           3    COPV      CHAR(5),   /* LETTER V & 4 BLANKS  @Y30LB22*/
           3    COPSERNO  CHAR(6),   /* SER NO OF COPIED VOL @Y30LB22*/
           3    COPID     CHAR(2),   /* RECORD NUMBER ID     @Y30LB22*/
             4  COPBLANK  CHAR(1),   /* BLANK                @Y30LB22*/
             4  COPNO     FIXED(8),  /* BIN NO OF COPIED REC @Y30LB22*/
         2      COPRES6   CHAR(1),   /* RESERVED             @Y30LB22*/
         2      COPFLAGA  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    COPTYPE   BIT(16),   /* RECORD TYPE FLAGS    @Y30LB22*/
             4  COPRES1   BIT(3),    /* RESERVED             @Y30LB22*/
             4  COPCOPYV  BIT(1),    /* COPY VOL RECORD      @Y30LB22*/
             4  COPRES2   BIT(12),   /* RESERVED             @Y30LB22*/
           3    COPGROUP  BIT(1),    /* VOL BELONGS TO GROUP @Y30LB22*/
           3    COPVSAM   BIT(1),    /* BELONGS TO VSAM CAT  @Y30LB22*/
           3    COPGENUS  BIT(1),    /* GENERAL USE TYPE VOL @Y30LB22*/
           3    COPRSTD   BIT(1),    /* RESTRICTED TYPE VOL  @Y30LB22*/
           3    COPBKUP   BIT(1),    /* COPY IS A BKUP COPY  @Y30LB22*/
           3    COPBIND   BIT(1),    /* ATTRIBUTE WAS BIND   @Y30LB22*/
           3    COPEXCL   BIT(1),    /* ATTRIBUTE-EXCLUSIVE  @Y30LB22*/
           3    COPDAERA  BIT(1),    /* ATTRIBUTE DASDERASE  @Y30LB22*/
           3    COPRONLY  BIT(1),    /* ATTRIBUTE-READ ONLY  @Y30LB22*/
           3    COPDLSPF  BIT(1),    /* DOWN LEVEL SPACE FLG @Y30LB22*/
           3    *         BIT(6),    /* UNUSED               @Y30LB22*/
         2      *         BIT(16),   /* UNUSED               @Y30LB22*/
         2      COPRCVYF  BIT(32),   /* RECOVERY FIELDS      @Y30LB22*/
           3    COPSATIA  BIT(16),   /* STATUS INDICATOR     @Y30LB22*/
             4  COPIVCRE  BIT(1),    /* INCOMPLETE CREATE    @Y30LB22*/
             4  COPIVCPY  BIT(1),    /* INCOMPLETE VOL. COPY @Y30LB22*/
             4  COPVSMIS  BIT(1),    /* VOL SER. MISMATCH    @Y30LB22*/
             4  COPRES3   BIT(13),   /* RESERVED             @Y30LB22*/
           3    COPMISCF  BIT(16),   /* MISCL. FLAG          @Y30LB22*/
             4  COPHOLD   BIT(1),    /* COPY PLACEHOLDER     @Y30LB22*/
             4  *         BIT(15),   /* UNUSED               @Y30LB22*/
         2      COPCSN1   CHAR(12),  /* SER NO OF 1ST CART.  @Y30LB22*/
         2      COPLIB1   FIXED(8),  /* ID OF LIB FOR CSN1   @Y30LB22*/
           3    COPRES4   BIT(6),    /* RESERVED             @Y30LB22*/
           3    COPLID1   BIT(2),    /* LIBRARY ID 1         @Y30LB22*/
             4  COP1BIT1  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
             4  COP1BIT2  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
         2      COPCSN2   CHAR(12),  /* SER NO OF 2ND CART.  @Y30LB22*/
         2      COPLIB2   FIXED(8),  /* ID OF LIB FOR CSN2   @Y30LB22*/
           3    COPRES5   BIT(6),    /* RESERVED             @Y30LB22*/
           3    COPLID2   BIT(2),    /* LIBRARY ID 2         @Y30LB22*/
             4  COP2BIT1  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
             4  COP2BIT2  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
         2      COPDATE   CHAR(4),   /* DATE COPY WAS MADE   @Y30LB22*/
         2      COPDTREM  CHAR(4),   /* DATE VOL WAS EJECTED @Y30LB22*/
         2      COPDESCR  CHAR(30),  /* DESCRIPTIVE INFO     @Y30LB22*/
         2      COPDEST   CHAR(30),  /* DEST. AFTER EJECTED  @Y30LB22*/
         2      COPOWNER  CHAR(10),  /* NAME/ID OF OWNER     @Y30LB22*/
         2      COPFRESP  FIXED(15), /* NO OF FREE CYL ON    @Y30LB22
                                        VOL AT TIME OF COPY  @Y30LB22*/
         2      COPLEXT   FIXED(15), /* NO. CYL IN LARGEST   @Y30LB22
                                        FREE EXTENT AT TIME  @Y30LB22
                                        OF COPY              @Y30LB22*/
         2      COPFREXT  FIXED(31), /* NO. OF FREE EXTENTS  @Y30LB22
                                        AT TIME OF COPY      @Y30LB22*/
         2      *         CHAR(28);  /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZCOVCE
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZCOVCE                                  @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION:                                       @Y30LB22*/
 /*          MAPS THE REQUEST BLOCK EXTENSION WHICH          @Y30LB22*/
 /*          IS USED TO PASS ADDITIONAL INFORMATION TO MASS  @Y30LB22*/
 /*          STORAGE VOLUME CONTROL DURING AN COPY           @Y30LB22*/
 /*          CARTRIDGE OR COPY VOLUME REQUEST.               @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                                   */
 /********************************************************************/
    /* CONSTANTS FOR IEZCOVCE                                @Y30LB22*/
     DCL  COVLEN  FIXED(15) INIT(LENGTH(COVCE)); /* LENGTH   @Y30LB22
                                            OF EXTENSION     @Y30LB22*/
     DCL
       1        COVCE BASED(COVCEPTR) BDY(WORD),
         2      COVLNGTH  FIXED(31), /* LENGTH OF EXTENSION  @Y30LB22*/
         2      COVDESCR  CHAR(30),  /* DESCRIPTIVE INFO     @Y30LB22*/
         2      COVFLAGA  BIT(8),    /* SPECIFICATION FLAG   @Y30LB22*/
           3    COVSPDES  BIT(1),    /* COVDESCR SPECIFIED   @Y30LB22*/
           3    *         BIT(7),    /* UNUSED               @Y30LB22*/
         2      COVFLAGB  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    COVSETFL  BIT(8),    /* RECOVERY FLAGS       @Y30LB22
                                        INDICATORS           @Y30LB22*/
             4  COVSRCVY  BIT(1),    /* SET RECOVERY FLAGS   @Y30LB22*/
             4  COVCRCVY  BIT(1),    /* CLEAR RECOVERY FLAGS @Y30LB22*/
             4  *         BIT(6),    /* UNUSED               @Y30LB22*/
           3    COVRECFL  BIT(8),    /* RECOVERY FLAGS       @Y30LB22*/
             4  COVICOPY  BIT(1),    /* INCOMPLETE COPY OPER @Y30LB22*/
             4  COVCREAT  BIT(1),    /* INCOMPLETE CREATION  @Y30LB22*/
             4  COVLAMIS  BIT(1),    /* VOL LABEL MISMATCH   @Y30LB22*/
             4  *         BIT(5),    /* UNUSED               @Y30LB22*/
           3    COVTYPE   BIT(8),    /* VOLUME TYPE FLAG     @Y30LB22*/
             4  COVSAM    BIT(1),    /* VSAM TYPE VOLUME     @Y30LB22*/
             4  COVREUSE  BIT(1),    /* REUSE OLD COPY REC.  @Y30LB22*/
             4  *         BIT(6),    /* UNUSED               @Y30LB22*/
           3    *         BIT(8),    /* UNUSED               @Y30LB22*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZCPUID
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/213/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZCPUID                                  @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          A CPU RECORD IS MAINTAINED  IN THE MSVI DATA    @Y30LB22*/
 /*          SET TO RECORD CPU AFFINITY FOR THE MP AND JES3  @Y30LB22*/
 /*          ENVIRONMENTS.                                   @Y30LB22*/
 /*                                                                  */
 /*          STATUS:  CHANGE LEVEL = 1                       @YM31134*/
 /*                                                          @YM31134*/
 /*   CHANGE-ACTIVITY = AS FOLLOWS                           @YM31134*/
 /*      CHANGE 01 10/14/75 MSVI MULTI-HOST SHARABILITY      @YM31134*/
 /*                                                          @YM31134*/
 /********************************************************************/
     DCL
       1        CPUID BASED(CPUIDPTR) BDY(WORD),           /*@Y30LB22*/
         2      CPUNAME   CHAR(13),  /* KEY-CPU RECORD       @Y30LB22*/
         2      *         CHAR(1),   /* UNASSIGNED           @YM31134*/
         2      CPUINEXT  FIXED(15), /* MSVI INDEX  EXTS     @YM31134*/
         2      CPUDNEXT  FIXED(15), /* MSVI DATA   EXTS     @YM31134*/
         2      CPUTYPE   BIT(16),   /* RECORD TYPE FLAG     @Y30LB22*/
           3    CPURES1   BIT(6),    /* RESERVED             @Y30LB22*/
           3    CPUASSOC  BIT(1),    /* CPU REAORD           @Y30LB22*/
           3    CPURES2   BIT(9),    /* RESERVED             @Y30LB22*/
         2      CPUMAP (16) CHAR(8), /* ARRAY WITH 16 SLOTS  @Y30LB22*/
           3    CPUIDREC  CHAR(5),   /* ID OF CPU  RECORDED  @Y30LB22*/
           3    *         CHAR(1),   /* UNASSIGNED           @Y30LB22*/
           3    CPUMASK   BIT(16),   /* ASSOC MASK OF CPU    @Y30LB22*/
         2      CPUPURGE  BIT(16),   /* CPU PURGE REQ'ED MAP @Y30LB22*/
         2      *         CHAR(1);   /* UNASSIGNED           @Y30LB22*/
./ ADD NAME=IEZCTGCV
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IEZCTGCV                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG CONTROL VOLUME LIST            */
 /*                                                                  */
 /*   FUNCTION = MAPPING FOR THE OS/VS SYSTEM CATALOG CVOL ENTRY     */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = IF THE REQUEST IS 'SUPERLOCATE',     */
 /*                             THE CTGCV IS POINTED TO BY THE       */
 /*                             CTGPL (CTGCVOL).                     */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 17 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
 %DECLARE (CTGCVLEN, CTGCV999, CTGCVLVL) CHAR;
*%CTGCVLEN = 'LENGTH(CTGCV)';       /* LENGTH OF CTGCV               */
*%IF CTGCV999 ^= ','                /* IF BLOCK NOT CONTINUED,       */
*  %THEN %CTGCV999 = ';';           /*   THEN CLOSE DECLARE STMNT    */
*%IF CTGCVLVL  = ''                 /* IF BLOCK NOT CONCATENATED,    */
*  %THEN %GOTO CTGCV001;            /*   THEN GENERATE DECLARE       */
*%CTGCVDUM = CTGCVLVL' CTGCV';    /* SET MINOR LEVEL NUMBER        */
*   CTGCVDUM                        /* CTGCV CONCATENATED LEVEL      */
*%GOTO CTGCV002;                    /* SKIP DECLARE                  */
*%CTGCV001:;                        /* DECLARE                       */
*   DECLARE
*     1 CTGCV BASED(CTGCVOL)        /* DECLARE CTGCV LEVEL ONE       */
*%CTGCV002:;                        /* SKIP DECLARE                  */
*        BDY(WORD),                 /* WORD BOUNDARY                 */
*       5 CTGCVVOL CHAR(6),         /* CVOL VOLUME SERIAL            */
*                                   /* VOLUME SER OF CATALOG   Y02020*/
*       5 CTGCVDSN CHAR(44),        /* CATALOG NAME            Y02020*/
*         10 CTGCVDEV CHAR(4),      /* CVOL DEVICE TYPE        Y02020*/
*       5 CTGCVCC CHAR(44) CTGCV999 /* ALIAS NAME OR CONNECTOR Y02020*/
./ ADD NAME=IEZCTGFL
*  %GO TO CTGFLX01;
*  /*
         MACRO
         IEZCTGFL ,
CTGFL    DSECT ,                        */
*%CTGFLX01:;
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IEZCTGFL                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = CATALOG FIELD PARAMETER LIST                */
*/*                                                                  */
*/*   FUNCTION = THE FIELD PARAMETER LIST (CTGFL) DEFINES ONE OF     */
*/*              THE CATALOG RECORD'S FIELDS OR A GROUP OF           */
*/*              LOGICALLY RELATED FIELDS.  THE CTGFL IS BUILT       */
*/*              BEFORE AN OS/VS COMPONENT ISSUES THE CATLG          */
*/*              MACRO INSTRUCTION (SVC 26) TO PROCESS A             */
*/*              CATALOG RECORD.  THE CTGFL IS USED IN TWO           */
*/*              SITUATIONS:                                         */
*/*                (1)  IT IDENTIFIES CATALOG RECORD INFORMATION     */
*/*                     TO RETRIEVE OR UPDATE.  THE CTGPL CONTAINS   */
*/*                     THE ADDRESS OF EACH CTGFL USED IN THIS WAY.  */
*/*                (2)  IT IDENTIFIES CATALOG RECORD INFORMATION     */
*/*                     TO COMPARE AGAINST CALLER-SUPPLIED DATA.     */
*/*                     THIS IS A "TEST" CTGFL AND IS ADDRESSED BY   */
*/*                     ANOTHER CTGFL.                               */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE CTGFL IS POINTED TO BY THE       */
*/*                             CCA ('CCAFLPT' OR 'CCATEST').        */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 17 JUL 74                                */
*/*                                                                  */
*/********************************************************************/
*%DECLARE (CTGFLLEN, CTGFL999, CTGFLLVL) CHAR;
*%CTGFLLEN = 'LENGTH(CTGFL)';       /* LENGTH OF CTGFL               */
*%GOTO CTGFLX03;
* /*
         AGO   .CTGFL01                 */
*%CTGFLX03:;
*%IF CTGFL999 ^= ','                /* IF BLOCK NOT CONTINUED,       */
*  %THEN %CTGFL999 = ';';           /*   THEN CLOSE DECLARE STMNT    */
*%IF CTGFLLVL  = ''                 /* IF BLOCK NOT CONCATENATED,    */
*  %THEN %GOTO CTGFL001;            /*   THEN GENERATE DECLARE       */
*%CTGFLDUM = CTGFLLVL' CTGFL';    /* SET MINOR LEVEL NUMBER        */
*   CTGFLDUM                        /* CTGFL CONCATENATED LEVEL      */
*%GOTO CTGFL002;                    /* SKIP DECLARE                  */
*%CTGFL001:;                        /* DECLARE                       */
    DECLARE
*     1 CTGFL BASED(CTGFLPTR)       /* DECLARE CTGFL LEVEL ONE       */
*%CTGFL002:;                        /* SKIP DECLARE                  */
*        BDY(WORD),                 /* WORD BOUNDARY                 */
*       5 CTGFLDNO PTR(8),          /* NO. PAIRS DATA LENGTH/ADDR    */
*       5 CTGFLDCD BIT(8),          /* TEST CONDITION                */
*       5 CTGFLDGC PTR(8),          /* GROUP CODE NUMBER             */
*       5 CTGFLDRE BIT(8),          /* TEST RESULT                   */
*         10 *        BIT(7),       /* RESERVED                      */
*         10 CTGFLDTS BIT(1),       /* 0 = SUCCESSFUL TEST,          */
*                                   /* 1 = TEST FAILED               */
*       5 CTGFLDWA BIT(32),         /* CATALOG WORK AREA             */
*       5 CTGFLDNM PTR(31),         /* FIELD NAME ADDRESS            */
*       5 CTGFLCHN PTR(31),         /* ADDR OF NEXT FIELD MACRO      */
*                                   /* OR ZERO                       */
*       5 CTGFLDAT(*),              /* PAIRS OF DATA LENGTH/ADDR     */
*         10 CTGFLNG FIXED(31),     /* DATA LENGTH                   */
*         10 CTGFLPT  PTR(31) CTGFL999 /* DATA ADDRESS               */
*/********************************************************************/
*/*     CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE      */
*/********************************************************************/
    DECLARE                         /* TEST CONDITION - CTGFLDCD     */
      CTGFLDEQ BIT(8) CONSTANT('80'X), /* EQUAL                      */
      CTGFLDNE BIT(8) CONSTANT('60'X), /* NOT EQUAL                  */
      CTGFLDGT BIT(8) CONSTANT('20'X), /* GREATER THAN               */
      CTGFLDLT BIT(8) CONSTANT('40'X), /* LESS THAN                  */
      CTGFLDGE BIT(8) CONSTANT('A0'X), /* GREATER THAN OR EQUAL      */
      CTGFLDLE BIT(8) CONSTANT('C0'X), /* LESS THAN OR EQUAL         */
      CTGFLDZ  BIT(8) CONSTANT('80'X), /* TEST UNDER MASK FOR ZEROES */
      CTGFLDON BIT(8) CONSTANT('10'X), /* TEST UNDER MASK FOR ONES   */
      CTGFLDMX BIT(8) CONSTANT('40'X); /* TEST UNDER MASK FOR MIXED  */
* %GO TO CTGFLX02;
*/*
.CTGFL01 ANOP
*
CTGFLDNO DS    XL1                      NUMBER PAIRS DATA LNG/ADDR
*
CTGFLDCD DS    XL1                      TEST CONDITION
CTGFLDEQ EQU   X'80'                    EQUAL
CTGFLDNE EQU   X'60'                    NOT EQUAL
CTGFLDGT EQU   X'20'                    GREATER THAN
CTGFLDLT EQU   X'40'                    LESS THAN
CTGFLDGE EQU   X'A0'                    GREATER THAN OR EQUAL
CTGFLDLE EQU   X'C0'                    LESS THAN OR EQUAL
CTGFLDZ  EQU   X'80'                    TEST UNDER MASK FOR ZEROES
CTGFLDON EQU   X'10'                    TEST UNDER MASK FOR ONES
CTGFLDMX EQU   X'40'                    TEST UNDER MASK FOR MIXED
*
CTGFLDGC DS    XL1                      GROUP CODE NUMBER
*
CTGFLDRE DS    XL1                      TEST RESULT
CTGFLDTS EQU   X'01'                    TEST MASK - CTGFLDRE
*                                       = 0 - SUCCESSFUL TEST,
*                                       = 1 - TEST FAILED
*
CTGFLDWA DS    F                        CATALOG WORK AREA
*
CTGFLDNM DS    A                        FIELD NAME ADDRESS
*
CTGFLCHN DS    A                        ADDRESS OF NEXT FIELD
*
*
CTGFLDAT DS    0CL8                     PAIRS OF DATA LENGTH/ADDRESS
CTGFLNG  DS    F                        DATA LENGTH
CTGFLPT  DS    A                        DATA ADDRESS
*
*
         MEND  ,                        */
* %CTGFLX02:;
./ ADD NAME=IEZCTGFV
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IEZCTGFV                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = CATALOG FIELD VECTOR TABLE                  */
 /*                                                                  */
 /*   FUNCTION = THE CATALOG FIELD VECTOR TABLE (CTGFV) IS BUILT     */
 /*              BY THE ACCESS METHOD SERVICES (AMS) UTILITY         */
 /*              PROGRAMS (WHEN THE USER ISSUES A 'DEFINE' OR        */
 /*              'ALTER' COMMAND) AND CONTAINS ADDRESSES OF          */
 /*              USER-SUPPLIED INFORMATION FIELDS AND LISTS.         */
 /*              IF THE USER IS CREATING A CLUSTER, A CTGFV          */
 /*              IS BUILT FOR EACH CATALOG RECORD THAT WILL BE       */
 /*              BUILT TO DESCRIBE THE CLUSTER.                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE CLUSTER CTGFV IS POINTED TO BY   */
 /*                             THE CTGPL (CTGFVT) AND THE DATA      */
 /*                             AND INDEX CTGFV'S ARE POINTED TO     */
 /*                             BY THE CLUSTER CTGFV.                */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 4   (CHANGE FLAG @Z40RSXX)       @Z40RSRC*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 9 MAY 75                         @Z40RSRC*/
 /*                                                                  */
 /********************************************************************/
 %DECLARE (CTGFVLEN, CTGFV999, CTGFVLVL) CHAR;             /*@X04SVDW*/
 %CTGFVLEN = 'LENGTH(CTGFV)';       /* LENGTH OF CTGFV       @X04SVDW*/
*%IF CTGFV999 ^= ','                /* IF BLOCK NOT CONTINUED,       */
*  %THEN %CTGFV999 = ';';           /*   THEN CLOSE DECLARE STMNT    */
*%IF CTGFVLVL = ''                  /* IF BLOCK NOT CONCATENATED,    */
*  %THEN %GOTO CTGFV001;            /*   THEN GENERATE THE DECLARE   */
*%CTGFVDUM = CTGFVLVL' CTGFV';    /* SET MINOR LEVEL NUMBER        */
*  CTGFVDUM                         /* CTGFV CONCATENATED LEVEL      */
*%GOTO CTGFV002;                    /* SKIP THE DECLARE STATEMENT    */
*%CTGFV001:;                        /* DECLARE                       */
    DECLARE
*     1 CTGFV BASED(CTGFVT)         /* DECLARE CTGFV LEVEL ONE       */
*%CTGFV002:;                        /* SKIPPED DECLARE               */
*        BDY(WORD),                 /* WORD BOUNDARY                 */
*       5 CTGFVTYP CHAR(1),         /* ENTRY TYPE (DEFINE)           */
*       5 CTGFVPRO BIT(8),          /* CMS PROCESSING OPTIONS        */
*         10 CTGFVAVL BIT(1),       /* ADD VOLUMES (ALTER)           */
*         10 CTGFVRVL BIT(1),       /* REMOVE VOLUMES (ALTER)        */
*         10 CTGFVNDC BIT(1),       /* NO DEVICE TYPE CONVERSION
*                                                              Y02020*/
*         10 CTGFVDRC BIT(1),       /* DEFINE RECOVERY CATLG @Y30SSDW*/
*         10 CTGFVRON BIT(1),       /* SET RACF INDICATOR ON @Z40RSRC*/
*         10 CTGFVROF BIT(1),       /* ALTER - SET RACF INDICATOR
*                                      OFF                   @Z40RSRC*/
*         10 *        BIT(2),       /* RESERVED              @Z40RSRC*/
*       5 CTGFVELM PTR(8),          /* ELEMENT NO. OF FIELD CMSPCATR */
*                                   /* IN IGGMCMWA MAPPING           */
*       5 *        CHAR(1),         /* RESERVED                      */
*       5 CTGFVDCH PTR(31),         /* DATA VECTOR TABLE ADDRESS     */
*       5 CTGFVICH PTR(31),         /* INDEX VECTOR TABLE ADDRESS    */
*       5 CTGFVVCH PTR(31),         /* SPACE VECTOR TABLE ADDRESS    */
*       5 CTGFVIND PTR(31),         /* JCL STMNT NAME ADDRESS        */
*       5 CTGFVENT PTR(31),         /* ENTRY NAME FIELD ADDRESS      */
*       5 CTGFVSTY PTR(31),         /* SECURITY COMBINATION FPL ADDR */
*       5 CTGFVOWN PTR(31),         /* OWNER ID FPL ADDRESS          */
*       5 CTGFVEXP PTR(31),         /* EXPIRATION DATE FPL ADDRESS   */
*       5 CTGFVCRE PTR(31),         /* CREATION DATE FPL ADDRESS     */
*       5 CTGFVVLT PTR(31),         /* VOLUME SERIAL LIST ADDRESS    */
*       5 CTGFVRNG PTR(31),         /* KEY RANGES LIST ADDRESS       */
*       5 CTGFVDVT PTR(31),         /* ALIEN DEVICE TYPE FPL ADDRESS */
*       5 CTGFVSPC PTR(31),         /* SPACE PARM COMBO FPL ADDRESS  */
*         10 CTGFVTTR PTR(31),      /* PTR TO NONVSAM DSCB TTR Y02020*/
*       5 CTGFVAMD PTR(31),         /* AMDSB FPL ADDRESS             */
          10 CTGFVFSN PTR(31),      /* ALIEN DATA SET SEQUENCE       */
                                    /*   NUMBER FPL ADDRESS          */
*       5 CTGFVATR PTR(31),         /* DATA SET ATTRIBUTES FPL ADDR  */
*       5 CTGFVBUF PTR(31),         /* BUFFER SIZE FPL ADDRESS       */
*       5 CTGFVLRS PTR(31),         /* AVERAGE RECORD SIZE FPL ADDR  */
*       5 CTGFVLMT PTR(31),         /* ADDRS OF GDG LIMIT      Y02020*/
*         6 CTGFVEXT PTR(31),       /* ADDRESS OF EXCEPTION  @Y30SSRS*/
*                                   /*   EXIT FPL            @Y30SSRS*/
        5 CTGFVGAT PTR(31),         /* ADDRS OF GDG ATTRIBUTES Y02020*/
*         6 CTGFVUPG PTR(31),       /* ADDR OF PATH/AIX      @Y30SSRS*/
*                                   /* ATTRIBUTES FPL        @Y30SSRS*/
*       5 CTGFVNAM PTR(31),         /* ADDRESS OF TRUE NAME    Y02020*/
                                    /*   OR RELATED NAME     @Y30SSRS*/
*       5 CTGFVPWD PTR(31),         /* ADDR OF 8-BYTE        @Y30SSRS*/
*                                   /* REL OBJ PASSWORD      @Y30SSRS*/
*         6 CTGFVCPP PTR(31),       /* ADDR OF TSO COMMAND PROCESSOR
*                                      PARAMETER LIST (CPPL --
*                                      TSO COMMAND CALLERS ONLY).
*                                      IF ZERO, DAIRFAIL MESSAGES
*                                      WILL BE WTP'S.        @Z40RSRC*/
*       5 CTGFVWKA PTR(31) CTGFV999 /*CRA FEEDBACK AREA ADDR @Y30SSRS*/
 /********************************************************************/
 /*     CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE      */
 /********************************************************************/
    DECLARE                           /* ENTRY TYPE - CTGFVTYP       */
      CTGFVDTA CHAR(1) CONSTANT('D'), /* DATA                        */
      CTGFVCL  CHAR(1) CONSTANT('C'), /* CLUSTER                     */
      CTGFVIDX CHAR(1) CONSTANT('I'), /* INDEX                       */
      CTGFVVOL CHAR(1) CONSTANT('V'), /* VOLUME (SPACE)              */
      CTGFVALN CHAR(1) CONSTANT('A'), /* ALIEN                       */
      CTGFVGBS CHAR(1) CONSTANT('B'), /* GDG BASE              Y02020*/
      CTGFVANM CHAR(1) CONSTANT('X'), /* ALIAS NAME            Y02020*/
      CTGFVPTH CHAR(1) CONSTANT('R'), /* PATH                @Y30SSRS*/
      CTGFVAIX CHAR(1) CONSTANT('G'); /* ALTERNATE INDEX     @Y30SSRS*/
./ ADD NAME=IEZCTGPL
* %GOTO CTGPLX01; /*
         MACRO
         IEZCTGPL ,
         DSECT ,                        */
* %CTGPLX01:;
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IEZCTGPL                                          */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = CATALOG PARAMETER LIST                      */
*/*                                                                  */
*/*   FUNCTION = THE CATALOG PARAMETER LIST (CTGPL) DEFINES THE      */
*/*              CATALOG MANAGEMENT REQUEST AND ITS OPTIONS, THE     */
*/*              CATALOG RECORD TO BE PROCESSED, AND THE VSAM        */
*/*              CATALOG THAT CONTAINES THE RECORD.  THE CTGPL IS    */
*/*              BUILT BEFORE AN OS/VS COMPONENT ISSUES THE CATLG    */
*/*              MACRO INSTRUCTION (SVC 26) TO PROCESS A CATALOG     */
*/*              RECORD.  WHEN THE CATALOG MANAGEMENT ROUTINES       */
*/*              BUILD A CCA TO SUPPORT THE REQUEST, THE ADDRESS     */
*/*              OF THE CTGPL IS PUT INTO THE CCA (CCACPL).          */
*/*                                                                  */
*/*   CONTROL BLOCK STRUCTURE = THE CTGPL IS POINTED TO BY           */
*/*                             REGISTER 1.                          */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 4   (CHANGE FLAG @Z40WSXX)       @Z40WSSG*/
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 16 AUG 77                        @ZA20773*/
*/*                                                                  */
*/********************************************************************/
*%GOTO CTGPLX03;
*/*
         AGO   .CTGPL01                 */
*%CTGPLX03:;
*%DECLARE (CTGPLLEN, CTGPL999, CTGPLLVL) CHAR;
*%CTGPLLEN = 'LENGTH(CTGPL)';       /* LENGTH OF CTGPL               */
*%IF CTGPL999 ^= ','                /* IF BLOCK NOT CONTINUED,       */
*   %THEN %CTGPL999 = ';';          /*   THEN CLOSE DCL STATEMENT    */
*%IF CTGPLLVL  = ''                 /* IF BLOCK NOT CONCATENATED,    */
*   %THEN %GOTO CTGPL001;           /*   THEN GENERATE DCL           */
*%CTGPLDUM = CTGPLLVL' CTGPL';    /* SET MINOR LEVEL NUMBER        */
*        CTGPLDUM                   /* CTGPL CONCATENATED LEVEL      */
*%GOTO CTGPL002;                    /* SKIP DECLARE                  */
*%CTGPL001:;                        /* DECLARE                       */
*   DECLARE
*     1 CTGPL BASED(CTGPLPTR)       /* DECLARE CTGPL LEVEL ONE       */
*%CTGPL002:;                        /* SKIP DECLARE                  */
*        BDY(WORD),                 /* WORD BOUNDARY                 */
*       5 CTGOPTN1 BIT(8),          /* FIRST OPTION INDICATOR        */
*         10 CTGBYPSS BIT(1),       /* BYPASS                        */
*         10 CTGMAST  BIT(1),       /* VERIFY MASTER PASSWORD        */
*         10 CTGCI    BIT(1),       /* VERIFY CONTROL INTERVAL       */
*         10 CTGUPD   BIT(1),       /* VERIFY UPDATE                 */
*         10 CTGREAD  BIT(1),       /* VERIFY READ                   */
*         10 CTGNAME  BIT(1),       /* 1 = 44-BYTE NAME OR VOL SER,  */
*                                   /* 0 = ENTRY ID NUMBER           */
*         10 CTGCNAME BIT(1),       /* 1 = 44-BYTE NAME,             */
*                                   /* 0 = ACB ADDRESS               */
*         10 CTGGENLD BIT(1),       /* GENERIC LOCATE REQUEST  Y02020*/
*       5 CTGOPTN2 BIT(8),          /* SECOND OPTION INDICATOR       */
*         10 CTGEXT   BIT(1),       /* EXTEND       (UPDATE)         */
*            15 CTGNSVS BIT(1),     /* CATLG CLEANUP REQUEST @ZA00605*/
*         10 CTGERASE BIT(1),       /* ERASE        (DELETE)         */
*            15 CTGSMF   BIT(1),    /* WRITE SMF    (LSPACE)         */
*               20 CTGREL   BIT(1), /* RELEASE      (UPDATE)         */
*                  25 CTGGTALL BIT(1),/* CONCAT SEARCH  FOR    Y02020*/
*                                   /* (LISTCAT)               Y02020*/
*         10 CTGPURG  BIT(1),       /* PURGE        (DELETE)         */
*           15 CTGVMNT BIT(1),      /* VOLUME MOUNT CALLER           */
*              20 CTGRCATN BIT(1),  /* RTN CATLG NAME(GLOC)    Y02020*/
*                 25 CTGSWAP BIT(1),/* SWAPSPACE (DEFINE)    @Z40WSSG*/
*         10 CTGGTNXT BIT(1),       /* GET NEXT     (LIST CATALOG)   */
*         10 CTGDISC BIT(1),        /* DISCONNECT   (DELETE)         */
*         10 CTGOVRID BIT(1),       /* ERASE OVERRIDE (DELETE)       */
*         10 CTGSCR   BIT(1),       /* SCRATCH SPACE (DELETE)        */
*         10 *        BIT(1),       /* RESERVED                      */
*       5 CTGOPTN3 BIT(8),          /* THIRD OPTION INDICATOR        */
*         10 CTGFUNC  BIT(3),       /* CATALOG FUNCTION              */
*         10 CTGSUPLT BIT(1),       /* SUPER LOCATE                  */
*         10 CTGGDGL  BIT(1),       /* GDG LOCATE REQUEST      Y02020*/
*                                   /* WITH BASE LEVEL GIVEN   Y02020*/
*                                   /* (CTGWAGB IN CTGWA)      Y02020*/
*         10 CTGSRH   BIT(1),       /* 0 = SEARCH MASTER CATLG Y02020*/
*                                   /*     ONLY                Y02020*/
*                                   /* 1 = SEARCH OS CATALOG FIRST   */
*         10 CTGNUM   BIT(1),       /* 0 = SEARCH BOTH CATALOGS,     */
*                                   /* 1 = SEARCH ONE CATALOG        */
*         10 CTGAM0   BIT(1),       /* VSAM REQ VERSUS NONVSAM       */
*       5 CTGOPTN4 BIT(8),          /* GDG FLAGS                     */
*         10 CTGLBASE BIT(1),       /* LOCATE GDG BASE ONLY Y02020   */
*         10 CTGDOCAT BIT(1),       /* DO NOT OPEN NEEDED CATALOG    */
*         10 CTGNPROF BIT(1),       /* NO (RAC) PROFILE SHOULD BE
*                                      DEFINED OR DELETED    @Z40RSRC*/
*         10 CTGCOIN  BIT(1),       /* CONTROLLER INTERCEPT REQUESTED
*                                                            @ZA20773*/
*         10 CTGBYPMT BIT(1),       /* BYPASS SECURITY PROMPTING
*                                       TO SYSTEM OPERATOR   @ZA07531*/
*         10 CTGTIOT  BIT(1),       /* CALLER OWNS SYSZTIOT EXCLUSIVE
*                                                            @ZA20773*/
*         10 *        BIT(2),       /* RESERVED              @ZA20773*/
*       5 CTGENT   PTR(31),         /* USER ENTRY ADDR OR PTR TO VOLUME
*                                        SERIAL NUMBER (LSPACE)      */
*         10 CTGFVT   PTR(31),      /* FVT ADDRESS (DEFINE, ALTER)   */
*       5 CTGCAT   PTR(31),         /* CATALOG POINTER               */
*         10 CTGCVOL PTR(31),       /* CVOL PTR (SUPER LOCATE)       */
*       5 CTGWKA  PTR(31),          /* WORKAREA ADDR                 */
*       5 CTGDSORG CHAR(2),         /* DATA SET ORG - SUPERLOCATE    */
*         10 CTGOPTNS BIT(5),       /* CMS OPTIONS                   */
*         10 *        BIT(11),      /* RESERVED                      */
*       5 CTGTYPE  CHAR(1),         /* ENTRY TYPE - LISTCAT, DELETE  */
*       5 CTGNOFLD PTR(8),          /* NUMBER OF FIELD POINTERS      */
*       5 CTGDDNM PTR(31),          /* DD NAME ADDR                  */
*         10 CTGNEWNM PTR(31),      /* NEWNAME ADDRESS - ALTER       */
*            15 CTGFDBK  PTR(16),   /* SUPER LOCATE FEEDBACK         */
*            15 CTGFBFLG BIT(16),   /* SUPER LOCATE FLAGS            */
*               20 CTGPAR   BIT(1), /* PARALLEL MOUNT -SUPERLOCATE   */
*               20 CTGKEEP  BIT(1), /* FORCED KEEP - SUPERLOCATE     */
*               20 CTGGDGB  BIT(1), /* GDG BASE LOCATE         Y02020*/
*               20 CTGNGDSN BIT(1), /* GDG NAME GENERATED      Y02020*/
*               20 *        BIT(12), /* RESERVED               Y02020*/
*       5 CTGJSCB  PTR(31),         /* JSCB ADDR                     */
*         10 CTGPSWD  PTR(31),      /* PASSWORD ADDR                 */
*       5 CTGFIELD(*) PTR(31) CTGPL999 /* FIELD POINTERS             */
*/********************************************************************/
*/*     CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE      */
*/********************************************************************/
*   DECLARE                         /* CATALOG FUNCTION - CTGFUNC    */
*     CTGLOC   BIT(3) CONSTANT('001'B), /* LOCATE                    */
*     CTGLSP   BIT(3) CONSTANT('010'B), /* LSPACE                    */
*     CTGUPDAT BIT(3) CONSTANT('011'B), /* UPDATE                    */
*     CTGCMS   BIT(3) CONSTANT('100'B); /* CMS FUNCTION              */
*   DECLARE                         /* CMS OPTIONS - CTGOPTNS        */
*     CTGDEFIN BIT(5) CONSTANT('00001'B), /* DEFINE                  */
*     CTGALTER BIT(5) CONSTANT('00010'B), /* ALTER                   */
*     CTGDELET BIT(5) CONSTANT('00011'B), /* DELETE                  */
*     CTGLTCAT BIT(5) CONSTANT('00100'B), /* LIST CATALOG            */
*     CTGCNVTV BIT(5) CONSTANT('00110'B); /* CONVERTV        @Y30LSPS*/
*   DECLARE                           /* RECORD ENTRY TYPE - CTGTYPE */
*     CTGTDATA CHAR(1) CONSTANT('D'), /* DATA                        */
*     CTGTINDX CHAR(1) CONSTANT('I'), /* INDEX                       */
*     CTGTALIN CHAR(1) CONSTANT('A'), /* ALIEN                       */
*     CTGTUCAT CHAR(1) CONSTANT('U'), /* USER CATALOG                */
*     CTGTVOL  CHAR(1) CONSTANT('V'), /* VOLUME                      */
*     CTGTCL   CHAR(1) CONSTANT('C'), /* CLUSTER                     */
*     CTGTAIX  CHAR(1) CONSTANT('G'), /* ALTERNATE INDEX     @Y30SSPJ*/
*     CTGTPATH CHAR(1) CONSTANT('R'), /* PATH                @Y30SSPJ*/
*     CTGTFREE CHAR(1) CONSTANT('F'), /* FREE                @Y30SSPJ*/
*     CTGTPTH  CHAR(1) CONSTANT('R'), /* PATH                @Y30SSSB*/
*     CTGTUPG  CHAR(1) CONSTANT('Y'), /* UPGRADE             @Y30SSSB*/
*     CTGTGBS  CHAR(1) CONSTANT('B'), /* GDG BASE              Y02020*/
*     CTGTANM  CHAR(1) CONSTANT('X'), /* ALIAS NAME            Y02020*/
*     CTGTPGSP CHAR(1) CONSTANT('P'), /* PAGE SPACE            Y02020*/
*     CTGTMCAT CHAR(1) CONSTANT('M'); /* MASTER CATALOG              */
*/********************************************************************/
*/*                 PROBLEM  DETERMINATION  FIELDS                   */
*/********************************************************************/
*   DECLARE
*     1 * DEF(CTGDDNM),             /* PROBLEM DETERMINATION @Y30SSJG*/
*       2 CTGPROB CHAR(4),          /* PROBLEM DETERMINATION @Y30SSJG*/
*         3 CTGMODID CHAR(2),       /* MODULE IDENTIFICATION @Y30SSJG*/
*         3 CTGREASN CHAR(2),       /* REASON CODE           @Y30SSJG*/
*           4 CTGREAS1 CHAR(1),     /* HIGH ORDER BYTE ZERO  @Y30SSJG*/
*           4 CTGREAS2 CHAR(1);     /* REASON CODE LOW BYTE  @Y30SSJG*/
* %GOTO CTGPLX02;                                                   /*
.CTGPL01 ANOP
*
CTGPL    DS    0H
*
CTGOPTN1 DS    XL1                      FIRST OPTION INDICATOR
CTGBYPSS EQU   X'80'                    BYPASS
CTGMAST  EQU   X'40'                    VERIFY MASTER PASSWORD
CTGCI    EQU   X'20'                    VERIFY CONTROL INDICATOR
CTGUPD   EQU   X'10'                    VERIFY UPDATE
CTGREAD  EQU   X'08'                    VERIFY READ
CTGNAME  EQU   X'04'                    1 - 44-BYTE NAME OR VOLSER
*                                       0 - ENTRY ID NUMBER
CTGCNAME EQU   X'02'                    1 - 44-BYTE NAME
*                                       0 - ACB ADDRESS
CTGGENLD EQU   X'01'                    GENERIC LOCATE REQUEST
*
CTGOPTN2 DS    XL1                      SECOND OPTION INDICATOR
CTGEXT   EQU   X'80'                    EXTEND(UPDATE)
CTGERASE EQU   X'40'                    ERASE(DELETE)
CTGSMF   EQU   X'40'                    WRITE SMF(LSPACE)
CTGREL   EQU   X'40'                    RELEASE(UPDATE)
CTGGTALL EQU   X'40'                    CONCAT SEARCH (LISTCAT) Y02020
CTGPURG  EQU   X'20'                    PURGE (DELETE)
CTGVMNT  EQU   X'20'                    VOLUME MOUNT CALLER
CTGRCATN EQU   X'20'                    RTN CAT NAME(GLOC)      Y02020
CTGGTNXT EQU   X'10'                    GET NEXT (LIST CTLG)
CTGDISC  EQU   X'08'                    DISCONNECT (DELETE)
CTGOVRID EQU   X'04'                    ERASE OVERRIDE (DELETE)
CTGSCR   EQU   X'02'                    SCRATCH SPACE (DELETE)
*    X'01' - RESERVED
*
CTGOPTN3 DS    XL1                      THIRD OPTION INDICATOR
CTGFUNC  EQU   X'E0'                    HIGH ORDER THREE BITS DEFINE
*                                       FUNCTION
*   LOCATE     -   001* ****
CTGLOC   EQU   X'20'                    LOCATE - BITS ON
*   LSPACE     -   010* ****
CTGLSP   EQU   X'40'                    LSPACE - BITS ON
*   UPDATE     -   011* ****
CTGUPDAT EQU   X'60'                    UPDATE - BITS ON
*   CMS FUNCTION - 100* ****
CTGCMS   EQU   X'80'                    CMS FUNCTION - BITS ON
*
CTGSUPLT EQU   X'10'                    SUPER LOCATE
CTGGDGL  EQU   X'08'                    GDG LOCATE FUNCTION (CTGWAGB IN
*                                       CTGWA)
CTGSRH   EQU   X'04'                    0 - SEARCH MASTER CAT ONLY
*                                       1 - SEARCH OS CAT FIRST
CTGNUM   EQU   X'02'                    0 - SEARCH BOTH CATALOGS
*                                       1 - SEARCH ONE CATALOG
CTGAM0   EQU   X'01'                    VSAM REQ VERSUS NONVSAM
*
CTGOPTN4 DS    XL1                      FOURTH OPTION INDICATOR  Y02020
CTGLBASE EQU   X'80'                    LOCATE GDG BASE ONLY
CTGDOCAT EQU   X'40'                    DO NOT OPEN NEEDED CATLG
CTGNPROF EQU   X'20'                    NO (RAC) PROFILE SHOULD BE
*                                       DEFINED OR DELETED     @Z40RSRC
CTGCOIN  EQU   X'10'                    CONTROLLER INTERCEPT REQUESTED
*                                                              @ZA20773
CTGBYPMT EQU   X'08'                    BYPASS SECURITY PROMPTING TO
*                                       SYSTEM OPERATOR        @ZA07531
CTGTIOT  EQU   X'04'                    CALLER OWNS SYSZTIOT EXCLUSIVE
*                                                              @ZA20773
*        BITS 7-8 RESERVED                                     @ZA20773
CTGENT   DS    0A                       USER ENTRY ADDRESS OR POINTER
*                                       TO VOLUME SERIAL NUMBER(LSPACE)
CTGFVT   DS    A                        FVT ADDRESS (DEFINE, ALTER)
CTGCAT   DS    0A                       CATALOG POINTER
*
CTGCVOL  DS    A                        CVOL PTR (SUPER LOCATE)
*
CTGWKA   DS    A                        WORKAREA ADDRESS
*
CTGDSORG DS    CL2                      DATA SET ORG (SUPER LOCATE)
*   BITS 0-4 DEFINE ORGANIZATION
CTGOPTNS EQU   X'F8'                    TOP 5 BITS
*   DEFINE          - 0000 1*** **** ****
CTGDEFIN EQU   X'08'                    DEFINE
*   ALTER           - 0001 0*** **** ****
CTGALTER EQU   X'10'                    ALTER
*   DELETE          - 0001 1*** **** ****
CTGDELET EQU   X'18'                    DELETE
*   LIST CATALOG    - 0010 0*** **** ****
CTGLTCAT EQU   X'20'                    LIST CATALOG
*   CONVERTV        - 0011 0*** **** ****
CTGCNVTV EQU   X'30'                    CONVERTV
*   BITS 6-16 RESERVED
*
CTGTYPE  DS    CL1                      ENTRY TYPE-LISTCAT,DELETE
CTGTDATA EQU   C'D'                     DATA - D
CTGTINDX EQU   C'I'                     INDEX - I
CTGTALIN EQU   C'A'                     ALIEN - A
CTGTUCAT EQU   C'U'                     USER CATALOG - U
CTGTVOL  EQU   C'V'                     VOLUME - V
CTGTCL   EQU   C'C'                     CLUSTER - C
CTGTMCAT EQU   C'M'                     MASTER CATALOG - M
CTGTGBS  EQU   C'B'                     GDG BASE - B
CTGTANM  EQU   C'X'                     ALIAS BASE -X
CTGTPGSP EQU   C'P'                     PAGE SPACE - P
*
CTGNOFLD DS    XL1                      NUMBER FIELD POINTERS
CTGDDNM  DS    0A                       DD NAME ADDRESS
CTGNEWNM DS    0A                       NEWNAME ADDRESS - ALTER
CTGFDBK  DS    XL2                      SUPER LOCATE FEEDBACK
CTGFBFLG DS    XL2                      SUPER LOCATE FLAGS
CTGPAR   EQU   X'80'                    PARALLEL MOUNT - SUPER LOC
CTGKEEP  EQU   X'40'                    FORCED KEEP = SUPER LOCATE
CTGGDGB  EQU   X'20'                    GDG BASE LOCATED
CTGNGDSN EQU   X'10'                    GDG NAME GENERATED
*   BITS 5-16 RESERVED
*
CTGJSCB  DS    0A                       JSCB ADDRESS
CTGPSWD  DS    A                        PASSWORD ADDRESS
CTGFIELD DS    A                        FIELD POINTERS - MAY BE MORE
*                                       THAN ONE
CTGPLLEN EQU   *-CTGPL                  LENGTH OF CTG WITH ONE FIELD
*                                       POINTER
         MEND
* */ %CTGPLX02:;
./ ADD NAME=IEZCTGVL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IEZCTGVL                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG VOLUME LIST AND EXTENSION      */
 /*                                                                  */
 /*   FUNCTION = MAPPING MACRO FOR THE CATALOG VOLUME LIST           */
 /*              AND THE VOLUME LIST EXTENSION.                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE CTGVL IS POINTED TO BY THE       */
 /*                             CTGWA (CTGWAVL).                     */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 18 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
 %DECLARE (CTGVLLEN, CTGVLXLN, CTGVL999, CTGVLLVL) CHAR;
*%CTGVLLEN = 'LENGTH(CTGVL)';       /* LENGTH OF CTGVL               */
*%CTGVLXLN = 'LENGTH(CTGVLX)';      /* LENGTH OF CTGVLX              */
*%IF CTGVL999 ^= ','                /* IF BLOCK NOT CONTINUED,       */
*  %THEN %CTGVL999 = ';';           /*   THEN CLOSE DECLARE STMNT    */
*%IF CTGVLLVL  = ''                 /* IF BLOCK NOT CONCATENATED,    */
*  %THEN %GOTO CTGVL001;            /*   THEN GENERATE DECLARE       */
*%CTGVLDUM = CTGVLLVL' CTGVL(*)'; /* SET MINOR LEVEL NUMBER        */
*   CTGVLDUM                        /* CTGVL CONCATENATED LEVEL      */
*%GOTO CTGVL002;                    /* SKIP DECLARE                  */
*%CTGVL001:;                        /* DECLARE                       */
 /********************************************************************/
 /*                     CATALOG  VOLUME  LIST                        */
 /********************************************************************/
    DECLARE
*     1 CTGVL(*) BASED(CTGWAVL)     /* DECLARE CTGVL LEVEL ONE       */
*%CTGVL002:;                        /* SKIP DECLARE                  */
*                   BDY(WORD),      /* WORD BOUNDARY                 */
*       5 CTGVLVOL CHAR(6),         /* VOLUME SERIAL NUMBER          */
*       5 CTGVLDEV CHAR(4),         /* DEVICE TYPE                   */
*       5 CTGVLSEQ FIXED(15);       /* FILE SEQUENCE NUMBER          */
 /********************************************************************/
 /*                     VOLUME  LIST  EXTENSION                      */
 /********************************************************************/
    DECLARE
*     1 CTGVLX BASED(ADDR(CTGVL))   /* VOLUME LIST EXTENSION         */
*                BDY(WORD),         /* WORD BOUNDARY                 */
*       5 *        CHAR(LENGTH(CTGVL)), /* VOLUME LIST BASE          */
*       5 CTGVLTTR CHAR(3) CTGVL999 /* FORMAT 1 DSCB TTR             */
./ ADD NAME=IEZCTGWA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IEZCTGWA                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG SCHEDULER WORKAREA             */
 /*                                                                  */
 /*   FUNCTION = MAPPING MACRO FOR THE VSAM CATALOG                  */
 /*              SCHEDULER WORKAREA.                                 */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE CTGWA IS POINTED TO BY THE       */
 /*                             CTGPL (CTGWKA).                      */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 18 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
 %DECLARE (CTGWALEN, CTGWA999, CTGWALVL) CHAR;
*%CTGWALEN = 'LENGTH(CTGWA)';       /* LENGTH OF CTGWA               */
*%IF CTGWA999 ^= ','                /* IF BLOCK NOT CONTINUED,       */
*  %THEN %CTGWA999 = ';';           /*   THEN CLOSE DECLARE STMNT    */
*%IF CTGWALVL  = ''                 /* IF BLOCK NOT CONCATENATED,    */
*  %THEN %GOTO CTGWA001;            /*   THEN GENERATE DECLARE       */
*%CTGWADUM = CTGWALVL' CTGWA';    /* SET MINOR LEVEL NUMBER        */
*   CTGWADUM                        /* CTGWA CONCATENATED LEVEL      */
*%GOTO CTGWA002;                    /* SKIP DECLARE                  */
*%CTGWA001:;                        /* DECLARE                       */
    DECLARE
*     1 CTGWA BASED(CTGWKA)         /* DECLARE CTGWA LEVEL ONE       */
*%CTGWA002:;                        /* SKIP DECLARE                  */
*               BDY(WORD),          /* WORD BOUNDARY                 */
*       5 CTGWAVL  PTR(31),         /* VOLUME LIST ADDRESS           */
*       5 CTGWALV  FIXED(15),       /* VOLUME LIST LENGTH            */
*       5 CTGWAVCT FIXED(15),       /* NUMBER OF VOLUME ENTRIES IN   */
*                                   /*   VOLUME LIST                 */
*       5 CTGWAUCT FIXED(15),       /* MINIMUM UNIT COUNT            */
*       5 CTGWAGCT FIXED(15),       /* COUNT OF GENERATIONS    Y02020*/
*       5 CTGWAGB  PTR(31) CTGWA999 /* POINTER TO G0000V00     Y02020*/
./ ADD NAME=IEZCWB
*%GOTO   CWBPLS2;     /* MAPPING MACRO                       @Y30LB01
         MACRO
         IEZCWB
************************************************************  @Y30LB01
*              ****** MAPPING MACRO *****                     @Y30LB01
* MACRO NAME = IEZCWB(VS1-VS2)                                @Y30LB01
*                                                             @Y30LB01
* DESCRIPTIVE NAME = COMMAND WORK BUFFER FOR MSSC SUPPORT     @Y30LB01
*                                                             @Y30LB01
* COPYRIGHT = NONE                                            @Y30LB01
*                                                             @Y30LB01
* CHANGE-ACTIVITY = X04AC01,Y30LB01,Z40LB01                   @Z40LB01
************************************************************  @Y30LB01
CWB      DSECT                                                @Y30LB01
CWBCHAIN DS    F   CHAIN AHEAD POINTER                        @Y30LB01
CWBFREE  DS    0F                      SUBPOOL - LENGTH       @Y30LB01
CWBSBPOL DS    C                       SUBPOOL                @Y30LB01
CWBFLGTH DS    AL3                     LENGTH                 @Y30LB01
CWBVBCDE DS    C                       COMMAND VERB CODE      @Y30LB01
CWBVBVRY EQU   40                      VARY                   @Y30LB01
CWBVBHLT EQU   60                      HALT                   @Y30LB01
CWBVBDSP EQU   104                     DISPLAY                @Z40LB01
CWBVBPRG EQU   164                     PURGE                  @Y30LB01
CWBVBASN EQU   140                     ASSIGN                 @Y30LB01
CWBCMND  DS    CL126                   OPERAND IMAGE          @Y30LB01
CWBCOMQ  DS    C                       SYNTAX INDICATOR       @Y30LB01
CWBUCMID DS    C                       CONSOLE ID             @Y30LB01
CWBAUTH  DS    CL2                     CMD AUTHORIZATION      @Y30LB01
CWBLCC   DS    C                       TARGET CONSOLE         @Z40LB01
CWBLA    DS    C                       TARGET DISPLAY AREA    @Z40LB01
CWBRESV  DS    CL3                     RESERVED               @Z40LB01
CWBLGTH  EQU   *-CWB                   LENGTH OF BLOCK        @Y30LB01
         MEND                                                @Y30LB01*/
 %CWBPLS2:;                                                /*@Y30LB01*/
 /********************************************************** @Y30LB01*/
 /*             ****** MAPPING MACRO *****                   @Y30LB01*/
 /* MACRO NAME = IEZCWB(VS1-VS2)                             @Y30LB01*/
 /*                                                          @Y30LB01*/
 /* DESCRIPTIVE NAME = COMMAND WORK BUFFER FOR MSSC SUPPORT  @Y30LB01*/
 /*                                                          @Y30LB01*/
 /* COPYRIGHT = NONE                                         @Y30LB01*/
 /*                                                          @Y30LB01*/
 /* CHANGE-ACTIVITY = X04AC01,Y30LB01,Z40LB01                @Z40LB01*/
 /********************************************************** @Y30LB01*/
     DCL 1 CWB BASED(CWBPTR) BDY(WORD),  /* BEGIN BLOCK      @Y30LB01*/
           2 CWBCHAIN  FIXED(31),      /* CHAIN AHEAD PTR    @Y30LB01*/
           2 CWBFREE   BDY(WORD) CHAR(4), /*SUBPOOL-LENGTH   @Y30LB01*/
             3 CWBSBPOL CHAR(1),         /* SUBPOOL          @Y30LB01*/
             3 CWBFLGTH FIXED(24),       /* LENGTH           @Y30LB01*/
           2 CWBVBCDE  CHAR(1),          /* CMD VERB CODE    @Y30LB01*/
           2 CWBCMND   CHAR(126),        /* OPERAND IMAGE    @Y30LB01*/
           2 CWBCOMQ   FIXED(8),         /* SYNTAX IND       @Y30LB01*/
           2 CWBUCMID  FIXED(8),         /* CONSOLE ID       @Y30LB01*/
           2 CWBAUTH   CHAR(2),          /* CMD AUTH         @Y30LB01*/
           2 CWBLCC    CHAR(1),          /* TARGET CONSOLE   @Z40LB01*/
           2 CWBLA     CHAR(1),          /* TARGET AREA      @Z40LB01*/
           2 CWBRESV   CHAR(3);          /* RESERVED         @Z40LB01*/
 %CWBLGTH='LENGTH(CWB)';                 /* CWB LENGTH       @Y30LB01*/
 %CWBVBVRY='40';                         /* VARY             @Y30LB01*/
 %CWBVBHLT='60';                         /* HALT             @Y30LB01*/
 %CWBVBDSP='104';                        /* DISPLAY          @Z40LB01*/
 %CWBVBPRG='164';                        /* PURGE            @Y30LB01*/
 %CWBVBASN='140';                        /* ASSIGN           @Y30LB01*/
./ ADD NAME=IEZDEFVE
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/317/341040         @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          NAME: IEZDEFVE                                  @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          FUNCTION:                                       @Y30LB22*/
 /*          MAPS THE REQUEST BLOCK EXTENSION                @Y30LB22*/
 /*          WHICH IS USED TO PASS ADDITIONAL INFORMATION    @Y30LB22*/
 /*          TO MSVC DURING AN DEFINE VOLUME MASS STORAGE REQUEST.   */
 /*                                                          @Y30LB22*/
 /*          STATUS: CHANGE LEVEL = 0                        @Y30LB22*/
 /*                                                          @Y30LB22*/
 /********************************************************************/
    /* CONSTANTS FOR IEZDEFVE                                @Y30LB22*/
     DCL  DEFLEN  FIXED(15) INIT(LENGTH(DEFVE)); /* LENGTH   @Y30LB22
                                           OF EXTENSION      @Y30LB22*/
     DCL
       1        DEFVE BASED(DEFVEPTR) BDY(WORD),           /*@Y30LB22*/
         2      DEFLNGTH  FIXED(31), /* LENGTH OF EXTENSION  @Y30LB22*/
         2      DEFGROUP  CHAR(8),   /* NAME OF USER MSVGP   @Y30LB22*/
         2      DEFDESCR  CHAR(30),  /* DESCRIPTIVE INFO     @Y30LB22*/
         2      DEFTO     CHAR(4),   /* EXPIRATION DATE      @Y30LB22*/
         2      DEFFOR    FIXED(15), /* NO DAYS USED IN CAL- @Y30LB22
                                        CULATING EXP. DATE   @Y30LB22*/
         2      DEFBKUPN  FIXED(8),  /* MAX. NO. BKUP COPIES @Y30LB22*/
         2      DEFLABEL  CHAR(6),   /* SER. NO IN SOFTWARE  @Y30LB22
                                        LABEL                @Y30LB22*/
         2      DEFFLAGA  BIT(8),    /* INDICATOR FLAGS      @Y30LB22*/
           3    DEFPFOR   BIT(1),    /* DEFFOR IS SPECIFIED  @Y30LB22*/
           3    DEFPVLAB  BIT(1),    /* DEFLABEL SPECIFIED   @Y30LB22*/
           3    DEFPGRO   BIT(1),    /* DEFGROUP SPECIFIED   @Y30LB22*/
           3    DEFPDESC  BIT(1),    /* DEFDESCR SPECIFIED   @Y30LB22*/
           3    DEFPTO    BIT(1),    /* DEFTO IS SPECIFIED   @Y30LB22*/
           3    DEFPBKUP  BIT(1),    /* DEFBKUPN SPECIFIED   @Y30LB22*/
           3    *         BIT(2),    /* UNUSED               @Y30LB22*/
         2      DEFFLAGB  CHAR(4),   /* STATUS FLAGS         @Y30LB22*/
           3    DEFSETFL  BIT(8),    /* RECOVERY FLAGS       @Y30LB22
                                        INDICATORS           @Y30LB22*/
             4  DEFSRCVY  BIT(1),    /* SET RECOVERY FLAGS   @Y30LB22*/
             4  DEFCRCVY  BIT(1),    /* CLEAR RECOVERY FLAGS @Y30LB22*/
             4  *         BIT(6),    /* UNUSED               @Y30LB22*/
           3    DEFRECFL  BIT(8),    /* RECOVERY FLAGS       @Y30LB22*/
             4  DEFICOPY  BIT(1),    /* INCOMPLETE COPY OPER @Y30LB22*/
             4  DEFCREAT  BIT(1),    /* INCOMPLETE CREATION  @Y30LB22*/
             4  DEFLAMIS  BIT(1),    /* VOL LABEL MISMATCH   @Y30LB22*/
             4  *         BIT(5),    /* UNUSED               @Y30LB22*/
           3    DEFTYPFL  BIT(8),    /* VOLUME TYPE FLAGS    @Y30LB22*/
             4  DEFGENUS  BIT(1),    /* GENERAL USE TYPE VOL @Y30LB22*/
             4  DEFRSTD   BIT(1),    /* RESTRICTED TYPE VOL  @Y30LB22*/
             4  DEFDUP    BIT(1),    /* DUPLICATE TYPE VOL   @Y30LB22*/
             4  DEFCOPY   BIT(1),    /* COPY TYPE VOLUME     @Y30LB22*/
             4  *         BIT(4),    /* UNUSED               @Y30LB22*/
           3    DEFNULFL  BIT(8),    /* NULLIFY FLAGS        @Y30LB22*/
             4  DEFNGRP   BIT(1),    /* CHANGE TO NONGROUP   @Y30LB22*/
             4  DEFNDESC  BIT(1),    /* NULLIFY THE DESCR    @Y30LB22*/
             4  DEFNEXPD  BIT(1),    /* NULLIFY THE EXP DATE @Y30LB22*/
             4  *         BIT(5),    /* UNUSED               @Y30LB22*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZDUPV
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/192/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZDUPV                                   @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          A DUPLICATE VOLUME RECORD EXISTS FOR EACH       @Y30LB22*/
 /*          VOLUME ENTERED INTO THE MASS STORAGE FACILITY   @Y30LB22*/
 /*          AT THE CARTRIDGE ACCESS STATION, PROVIDED       @Y30LB22*/
 /*          THE VOLUME SERIAL NUMBER OF THE VOLUME          @Y30LB22*/
 /*          BEING ENTERED IS DUPLICATED BY AN EXISTING      @Y30LB22*/
 /*          VOLUME ALREADY REPRESENTED IN THE MSVI DATA SET @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                                   */
 /********************************************************************/
     DCL
       1        DUPV BASED(DUPVPTR) BDY(WORD),             /*@Y30LB22*/
         2      DUPNAME   CHAR(13),  /* KEY OF VOLUME        @Y30LB22*/
           3    DUPD      CHAR(5),   /* 'D' AND 4 BLANKS     @Y30LB22*/
           3    DUPSERNO  CHAR(6),   /* VOLUME SER. NO.      @Y30LB22*/
           3    DUPID     CHAR(2),   /* RECORD ID FOR VOLUME @Y30LB22*/
             4  DUPBLANK  CHAR(1),   /* BLANK                @Y30LB22*/
             4  DUPNO     FIXED(8),  /* BIN NO OF DUPLICATE  @Y30LB22*/
         2      DUPRES5   CHAR(1),   /* RESERVED             @Y30LB22*/
         2      DUPFLAGA  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    DUPTYPE   BIT(16),   /* RECORD TYPE FLAGS    @Y30LB22*/
             4  DUPRES1   BIT(5),    /* RESERVED             @Y30LB22*/
             4  DUPDUPLR  BIT(1),    /* DUPL. VOL SER NO REC @Y30LB22*/
             4  DUPRES2   BIT(10),   /* RESERVED             @Y30LB22*/
           3    *         BIT(16),   /* RESERVED             @Y30LB22*/
         2      *         BIT(16),   /* UNASSIGNED           @Y30LB22*/
         2      DUPRCVYF  BIT(32),   /* RECOVERY FIELDS      @Y30LB22*/
           3    DUPSATIA  BIT(16),   /* STATUS INDICATOR     @Y30LB22*/
           3    DUPMISCF  BIT(16),   /* MISCL. FLAGS         @Y30LB22*/
         2      DUPCSN1   CHAR(12),  /* SER NO. OF 1ST CART. @Y30LB22*/
         2      DUPLIB1   FIXED(8),  /* ID OF LIB FOR CSN1   @Y30LB22*/
           3    DUPRES3   BIT(6),    /* RESERVED             @Y30LB22*/
           3    DUPLID1   BIT(2),    /* LIBRARY ID 1         @Y30LB22*/
             4  DUP1BIT1  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
             4  DUP1BIT2  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
         2      DUPCSN2   CHAR(12),  /* SER NO. OF 2ND CART. @Y30LB22*/
         2      DUPLIB2   FIXED(8),  /* ID OF LIB FOR CSN2   @Y30LB22*/
           3    DUPRES4   BIT(6),    /* RESERVED             @Y30LB22*/
           3    DUPLID2   BIT(2),    /* LIBRARY ID 2         @Y30LB22*/
             4  DUP2BIT1  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
             4  DUP2BIT2  BIT(1),    /* LIBRARY NO.          @Y30LB22*/
         2      *         CHAR(15);  /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZEUNLD
*  %GOTO ENFEUPRO;                 /*
         MACRO
         IEZEUNLD
.*/  %ENFEUPRO: ;
*/********************************************************************/
*/*                                                                  */
*/* MODULE NAME = IEZEUNLD                                           */
*/*                                                                  */
*/* DESCRIPTIVE NAME = UNLOAD PARAMETER LIST                         */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP 1980,                    */
*/*             LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM         */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          */
*/*             G120-2083.                                           */
*/*                                                                  */
*/* STATUS = OS/VS2   JBB1126                                        */
*/*                                                                  */
*/* MODULE TYPE = MACRO                                              */
*/*                                                                  */
*/* INVOCATION =                                                     */
*/*              BAL - IEZEUNLD                                      */
*/*                                                                  */
*/*              PL/S - %DCL ENFUDEF CHAR                            */
*/*                     %ENFUDEF = 'VALUE'                           */
*/*                        VALUE = "BDY(WORD)" OR "BASED"            */
*/*                     %INCLUDE SYSLIB(IEZEUNLD)                    */
*/*                                                                  */
*/*                 NOTE: DEFAULT VALUE FOR ENFUDEF IS "BDY WORD"    */
*/*                                                                  */
*/* CHANGE ACTIVITY: G81OP2S                                 @G81OP2S*/
*/*                                                                  */
*/* A 000000-999999                                          @G81OP2S*/
*/********************************************************************/
*  %GOTO ENFEUDCL;
EUNLD    DSECT                     UNLOAD PARAMETER LIST
EUNLEN   DS    H                   LENGTH OF PARAMETER LIST
EUNFLGS  DS    XL1                 UNLOAD EVENT FLAGS (BYTE 1)
EUNPRIV  EQU   X'80'               VOLUME IS PRIVATE IF ON
EUNPUB   EQU   X'40'               VOLUME IS PUBLIC IF ON
EUNSTOR  EQU   X'20'               VOLUME IS STORAGE IF ON
EUNLSPAC EQU   X'10'               LSPACE BUFFER IS PRESENT IF ON
         DS    XL1                 UNLOAD EVENT FLAGS (BYTE 2)
EUNUCBP  DS    F                   ADDRESS OF UCB
EUNLSPCP DS    F                   ADDRESS OF BUFFER RETURNED BY LSPACE
EUNVOLS  DS    CL6                 VOLSER OF VOLUME TO BE UNLOADED
EUNRSVD  DS    XL2                 -- RESERVED --
EUNLLEN  EQU   *-EUNLD             LENGTH OF UNLOAD PARAMETER LIST
         MEND   ,                                                    */
*  %ENFEUDCL:  ;
*%IF ENFUDEF = '' %THEN            /* DEFAULT ATTRIBUTE FOR EUNLD    */
*  %ENFUDEF = 'BDY(WORD)';
*DECLARE
*  1 EUNLD  ENFUDEF,
*    3 EUNLEN   FIXED(15),         /* LENGTH OF PARAMETER LIST       */
*    3 EUNFLGS    BIT(16),         /* UNLOAD EVENT FLAGS             */
*      5 EUNPRIV  BIT(1),          /* VOLUME IS PRIVATE IF ON        */
*      5 EUNPUB   BIT(1),          /* VOLUME IS PUBLIC IF ON         */
*      5 EUNSTOR  BIT(1),          /* VOLUME IS STORAGE IF ON        */
*      5 EUNLSPAC BIT(1),          /* LSPACE BUFFER PRESENT IF ON    */
*      5 * BIT(12),                /* -- RESERVED --                 */
*    3 EUNUCBP  PTR(31),           /* ADDRESS OF UCB                 */
*    3 EUNLSPCP PTR(31),           /* ADDRESS OF LSPACE BUFFER       */
*    3 EUNVOLS  CHAR(6),           /* VOLSER OF VOLUME TO UNLOAD     */
*    2 EUNRSVD  CHAR(2);           /* -- RESERVED --                 */
./ ADD NAME=IEZFMSWA
 /********************************************************************/
 /*     MACCOMP  Z40LB02                                             */
 /*     MACSTAT  Z40LB02                                             */
 /*                                                                  */
 /*     NAME     IEZFMSWA                                            */
 /*                                                                  */
 /*     FUNCTION-MAPS THE FORMAT SENSE WORK AREA(TRANSLATE AREAS FOR */
 /*              X,Y,Z,MSF,CYLINDER AND SSID VALUES.                 */
 /*                                                                  */
 /*     STATUS CHANGE LEVEL=0                                        */
 /********************************************************************/
     /*FORMAT SENSE WORK AREA #1 CONTAINS SWITCHES USED IN   @Z40LB02*/
     /*FORMAT LOAD MODULES, THE MESSAGE INDEX, AND THE       @Z40LB02*/
     /*ALTERNATE CONSOLE VALUE AND TRANSLATE SAVE AREA.      @Z40LB02*/
 DCL 1 FMTSNWA1 CHAR(160) BDY(WORD) BASED(FSWAPTR),
       2 FMTSWTCH BIT(8),              /*1 BYTE FOR SWITCHES @Z40LB02*/
         3 FSEXIT BIT(1),              /*EXIT SWITCH         @Z40LB02*/
         3 MSGBLT BIT(1),              /*MESSAGE SWITCH      @Z40LB02*/
       2 MSGNUM FIXED(8),              /*MESSAGE INDEX       @Z40LB02
                                         USED TO NOTE MSG    @Z40LB02
                                         TO BE BUILT         @Z40LB02*/
       2 ALTCON BIT(16),               /*ALTCON VALUE        @Z40LB02*/
       2 FMTWORK CHAR(11),             /*WORK AREA           @Z40LB02*/
         3 YVAL CHAR(2),               /*DECIMAL Y VALUE     @Z40LB02*/
         3 ZVAL CHAR(1),               /*DECIMAL Z VALUE     @Z40LB02*/
         3 MSFVAL CHAR(1),             /*DECIMAL MSF VALUE   @Z40LB02*/
         3 XVAL CHAR(3),               /*DECIMAL X VALUE     @Z40LB02*/
         3 SSIDAREA CHAR(3),           /*PRNTLE SSID VALUE   @Z40LB02*/
         3 *    CHAR(1),               /*1 BYTE  UNUSED      @Z40LB02*/
     /*FORMAT SENSE WORK AREA #3 IS AN 87 BYTE REPRESENTA    @Z40LB02*/
     /*TION OF THE WTO LIST FORM MACRO.  FIELDS SET IN THE   @Z40LB02*/
     /*LIST FORM WILL APPLY HERE                             @Z40LB02*/
       2 FMTSNWA3 CHAR(87) ,           /*WTO LIST FORM       @Z40LB02*/
         3 FMTWT01 FIXED(15),          /*TEXT LENGTH         @Z40LB02*/
         3 FMTWT02 BIT(16),            /*MCS FLAG            @Z40LB02*/
         3 FMTWT03 CHAR(79),           /*MESSAGE TEXT        @Z40LB02*/
         3 FMTWT04 BIT(16),            /*DESCRIPTOR CODES    @Z40LB02*/
         3 FMTWT05 BIT(16),            /*ROUTING CODES       @Z40LB02*/
       2 FSWSAVE CHAR(58),             /*SAVE & TRANSL AREA  @Z40LB02*/
         3 SAVER1 PTR(31),             /*R1 SAVE AREA        @Z40LB02*/
         3 SAVR12 PTR(31),             /*REG 12 SAVE AREA    @Z40LB02*/
         3 VVIPTR PTR(31),             /*MSVC CNTL BLK PTR   @Z40LB02*/
         3 SRBPTR PTR(31),             /*SRB POINTER         @Z40LB02*/
     /*CONVERSION AREA FOR SENSE DATA                        @Z40LB02*/
         3 FMTRANL CHAR(9) ,       /*9 CHAR TRANSL AREA      @Z40LB02*/
           4 FMTTRSN CHAR(8),      /*8 CHARS OF TRANSLD SNS  @Z40LB02*/
             5 FMTRAN CHAR(5),    /*SNS AREA & 1 BYTE FILL   @Z40LB02*/
               6 FMTRES1 CHAR(4), /*4 BYTES OF SENSE         @Z40LB02*/
               6 *       CHAR(1), /*1 BYTE FILL FOR UNPK     @Z40LB02*/
             5 *   CHAR(3),       /*UNPACK AREA              @Z40LB02*/
           4 *    CHAR(1),         /*UNPACK AREA             @Z40LB02*/
     /*CYLINDER CONVERSION WORKAREA                          @Z40LB02*/
         3 CYLINDER CHAR(5) ,      /*5 CHAR CYL TRANSL       @Z40LB02*/
           4 CYLTRAN CHAR(4),      /*4 BYTE CYL VALUE        @Z40LB02*/
             5 *    CHAR(1),       /*UNPACK AREA             @Z40LB02*/
             5 CYLIND CHAR(3),     /*UNPACK AREA             @Z40LB02*/
              6 CYLIND1 CHAR(2),   /*2 BYTE CYL VALUE        @Z40LB02*/
              6 *       CHAR(1),
           4 CYLFILL CHAR(1) ,     /*SIGN BYTE FOR UNPK      @Z40LB02*/
     /*GENERAL CONVERSION WORKAREA                           @Z40LB02*/
         3 GENTRAN CHAR(5) ,       /*5 CHAR GEN TRANSL       @Z40LB02*/
           4 TRVAL3CH CHAR(3),     /*3 CHAR TRANSLATE        @Z40LB02*/
             5 CHAR2INP CHAR(2),      /*2 BYTE INPUT/VAL     @Z40LB02*/
               6 CHAR2FIX FIXED(16),  /*FIXED REPRESENT      @Z40LB02*/
                 7 CHAR1INP FIXED(8), /*1 BYTE INPUT AREA    @Z40LB02*/
                 7 CHAR1VAL CHAR(1),  /*1 BYTE VALUE AREA    @Z40LB02*/
                   8 FIXVAL FIXED(8), /*1 BYTE FIXED REP     @Z40LB02*/
             5 *      CHAR(1),        /*UNPACK AREA          @Z40LB02*/
           4 *       CHAR(1) ,        /*SIGN BYTE FOR UNPK   @Z40LB02*/
           4 *       CHAR(1) ,        /*SIGN BYTE FOR UNPK   @Z40LB02*/
         3 CONVERT CHAR(2),           /*2 CHA CONVERSION FLD @Z40LB02*/
         3 I FIXED (8),               /*LOOP CONTROL         @Z40LB02*/
         3 DATASTOR CHAR(20);        /*DATA AREA             @Z40LB02*/
./ ADD NAME=IEZGROUP
 /********************************************************************/
 /*                                                                  */
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                          @G24LB37*/
 /*          NAME: IEZGROUP                                  @Y30LB22*/
 /*                                                          @G24LB37*/
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          A GROUP RECORD IS CONTAINED IN THE MSVI         @Y30LB22*/
 /*          DATA SET FOR EACH VOLUME GROUP AND FOR THE      @Y30LB22*/
 /*          DEFAULT GROUP 'SYSGROUP'.                       @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  MVS                                    @G24LB37*/
 /*                                                          @Y30LB22*/
 /*          CHANGE LEVEL:                                   @G24LB37*/
 /*          @G24LB37  ALLOCATE TO MOUNTED VOLUMES  06/07/76 @G24LB37*/
 /*                                                                  */
 /********************************************************************/
  DCL
   1    GROUP BASED(GROUPPTR) BDY(WORD),                   /*@Y30LB22*/
       2   GRONAME        CHAR(13),  /* MSVGP RECORD KEY     @Y30LB22*/
        3  GROG           CHAR(3),   /* 'G' AND TWO BLANKS   @Y30LB22*/
        3  GROVVGRP       CHAR(8),   /* ACTUAL GROUP NAME    @Y30LB22*/
        3  GROID          CHAR(2),   /* RECORD ID            @Y30LB22*/
         4 GROBLANK       CHAR(1),   /* THIS FIELD IS BLANK  @Y30LB22*/
         4 GROZERO        FIXED(8),  /* FIELD OF BIN ZEROS   @Y30LB22*/
       2   GROFLAGA       BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
        3  GROTYPE        BIT(16),   /* RECORD TYPE FLAGS    @Y30LB22*/
         4 GROGVR         BIT(1),    /* GROUP RECORD         @Y30LB22*/
         4 GRORES1        BIT(15),   /* RESERVED             @Y30LB22*/
        3  GROBIND        BIT(1),    /* ATTRIBUTE IS BIND    @Y30LB22*/
        3  GROEXCL        BIT(1),    /* ATTRIBUTE-EXCLUSIVE  @Y30LB22*/
        3  GRODAERA       BIT(1),    /* ATTRIBUTE-DASDERASE  @Y30LB22*/
        3  GRORONLY       BIT(1),    /* ATTRIBUTE-READ ONLY  @Y30LB22*/
        3  GRORLSE        BIT(1),    /* RLSE SPACE OPTION    @Y30LB22*/
        3  GRORETN        BIT(1),    /* RET DATE SPECIFIED   @Y30LB22*/
        3  GROMSG1        BIT(1),    /* MSG. SENT TO OP/LIB  @Y30LB22
                                        FLAG CONCERNING GRP. @Y30LB22
                                        SPACE THRESHOLD      @Y30LB22*/
        3  *              BIT(9),    /* UNUSED               @Y30LB22*/
       2   GROFSN         CHAR(6),   /* SER NO. OF 1ST VOL   @Y30LB22*/
       2   GROLSN         CHAR(6),   /* SER NO. OF LAST VOL  @Y30LB22*/
       2   GROPCENT       FIXED(8),  /* THRESHOLD PERCENT    @Y30LB22*/
       2   GRONGEN        FIXED(15), /*NO. OF GEN USE VOL    @Y30LB22*/
       2   GRONRSTD       FIXED(15), /*NO. OF RSTD VOLS.     @Y30LB22*/
       2   GRONINAC       FIXED(15), /*NO. OF INACTIVE VOLS  @Y30LB22*/
       2   GROPSPD        FIXED(15), /*PRIMARY SPACE DEFAULT @Y30LB22*/
       2   GROSSPD        FIXED(15), /*SECONDARY SPACE       @Y30LB22
                                       DEFAULT               @Y30LB22*/
       2   GROSTRSH       FIXED(31), /*GROUP SPACE THRESHOLD @Y30LB22*/
       2   GROFRESP       FIXED(31), /*GROUP FREE SPACE      @Y30LB22*/
       2   GROFREXT       FIXED(31), /*GROUP FREE EXTENTS    @Y30LB22*/
       2   GRORETPD       FIXED(31), /*GRP RETENTION PERIOD  @Y30LB22*/
       2   GROERRTS       CHAR(8),   /*GRP ERROR TIME STAMP  @Y30LB22*/
         3 GROERRDT       CHAR(4),   /*TIME STAMP DATE       @Y30LB22*/
         3 GROERRTM       CHAR(4),   /*TIME STAMP TIME       @Y30LB22*/
       2   GRODESCR       CHAR(30),  /*GRP DESCRIPTIVE INFO  @Y30LB22*/
       2   GROCONUS       FIXED(8),  /*MAXIMUM NUMBER        @G24LB37
                                       OF CONCURRENT USERS   @G24LB37
                                       PER HOST TO A VOLUME  @G24LB37
                                       FOR THIS GROUP        @G24LB37*/
       2   GRORESSP       FIXED(8),  /*PERCENT OF RESERVED   @G24LB37
                                       SPACE PER VOLUME      @G24LB37
                                       FOR THIS GROUP        @G24LB37*/
       2   GROOWNER       CHAR(10),  /*NAME/ID OF GRP OWNER  @Y30LB22*/
       2   GROADDR        CHAR(30),  /*ADDR OF GROUP OWNER   @Y30LB22*/
       2   *              CHAR(28);  /*UNUSED                @Y30LB22*/
./ ADD NAME=IEZGRPPR
 /*********************************************************  @G24LB18*/
 /*                                                          @G24LB18*/
 /* NAME - IEZGRPPR (MSVC GROUP PARAMETERS MAPPING MACRO)    @G24LB18*/
 /*                                                          @G24LB18*/
 /* STATUS - MVS                                             @G24LB18*/
 /*                                                          @G24LB18*/
 /* FUNCTION - MAPPING MACRO FOR THE MSVC GROUP PARAMETERS   @G24LB18*/
 /*            AREA. THIS AREA IS INCLUDED IN THE RPLV FOR   @G24LB18*/
 /*            SELECT REQUESTS WHICH ARE PROCESSED BY THE    @G24LB18*/
 /*            MSVC SELECTOR (ICBVSL00). THE AREA SERVES AS  @G24LB18*/
 /*            A MEANS OF COMMUNICATING THE GROUP PARAMETERS @G24LB18*/
 /*            ASSOCIATED WITH THE REQUEST BETWEEN THE MSVC  @G24LB18*/
 /*            SELECTOR, WHICH STORES THE PARAMETERS INTO    @G24LB18*/
 /*            THE AREA, AND THE MSVC TABLE PROCESSOR        @G24LB18*/
 /*            (ICBVTP00), WHICH INCLUDES THE PARAMETERS     @G24LB18*/
 /*            IN THE DD ENTRY FOR THE REQUEST.              @G24LB18*/
 /*                                                          @G24LB18*/
 /*********************************************************  @G24LB18*/
 DCL
    1  GRPPR  BDY(WORD) BASED(SELGRPPR), /* MSVC GROUP PARM  @G24LB18*/
       2  GRPNAME  CHAR(8),         /* GROUP NAME            @G24LB18*/
       2  GRPEXTIN FIXED(8),        /* GROUP EXTENSION INDEX @G24LB18*/
       2  GRPSLOTN FIXED(8),        /* GROUP EXT SLOT NO.    @G24LB18*/
       2  GRPPRMSP FIXED(15);       /* PRIMARY SPACE IN CYL  @G24LB18*/
./ ADD NAME=IEZGVSNE
 /********************************************************************/
 /*                                                                  */
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          NAME: IEZGVSNE                                  @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          THE GROUP EXTENSION RECORD PROVIDES MOUNT AND   @Y30LB22*/
 /*          SPACE INFORMATION FOR THE 'GENERAL' USE         @Y30LB22*/
 /*          VOLUMES IN THE GROUP                            @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS: MVS                                     @G24LB37*/
 /*                                                          @Y30LB22*/
 /*          CHANGE LEVEL:                                   @G24LB37*/
 /*          @G24LB37  ALLOCATE TO MOUNTED VOLUMES  06/07/76 @G24LB37*/
 /*                                                                  */
 /********************************************************************/
 DCL    GVSNSLOT FIXED(31) CONSTANT(48); /* NO. OF SLOTS     @Y30LB22*/
 /********************************************************************/
 DCL    1          GVSNE BASED(GVSNEPTR) BDY(WORD),        /*@Y30LB22*/
          2        GVSHDR,              /* HEADER FIELD      @Y30LB22*/
            3      GVSNAME   CHAR(13),  /* KEY FOR GVSNE     @Y30LB22
                                           RECORD            @Y30LB22*/
              4    GVSG      CHAR(3),   /* G AND 2 BLANKS    @Y30LB22*/
              4    GVSVVGRP  CHAR(8),   /* MSVGP NAME        @Y30LB22*/
              4    GVSID     CHAR(2),   /* EXTENSION RCD ID  @Y30LB22*/
                5  GVSRES1   CHAR(1),   /* RESERVED          @G24LB37*/
                5  GVSNO     FIXED(8),  /* BINARY NO FOR THE @Y30LB22
                                           EXTENSION RECORD  @Y30LB22*/
            3      GVSFLAGA  BIT(32),   /* INDICATOR FLAGS   @Y30LB22*/
              4    GVSTYPE   BIT(16),   /* RECORD TYPE       @Y30LB22*/
                5  *         BIT(1),    /* UNUSED            @G24LB37*/
                5  GVSGVSEX  BIT(1),    /* VOL SER EXTENSION @Y30LB22*/
                5  *         BIT(14),   /* UNUSED            @G24LB37*/
              4    GVSEX     BIT(1),    /* ANOTHER EXTENSION @Y30LB22
                                           RECORD EXISTS     @Y30LB22*/
              4    *         BIT(15),   /* UNUSED            @Y30LB22*/
            3      *         CHAR(1),   /* UNUSED            @Y30LB22*/
            3      GVSESIND  FIXED(15), /* NEXT EMPTY SLOT   @Y30LB22
                                           INDEX             @Y30LB22*/
            3      *         CHAR(8),   /* UNUSED            @Y30LB22*/
          2        GVSSLOTS (GVSNSLOT) BDY(HWORD),         /*@Y30LB22
                                           SLOT ARRAY        @Y30LB22*/
            3      GVSVOLID  CHAR(6),   /* SER NO OF VOL IN  @Y30LB22
                                           THIS SLOT         @Y30LB22*/
            3      GVSVOLFL  BIT(32),   /* INDICATOR FLAGS   @Y30LB22*/
              4    GVSCPUBM  BIT(16),   /* CPU ASSOC BIT MAP @Y30LB22*/
              4    GVSRCFSI  BIT(1),    /* RUNNING COUNT     @G24LB37
                                           (GVSMTDSP) IS     @G24LB37
                                           INVALID           @G24LB37*/
              4    GVSMTNSH  BIT(1),    /* MOUNTED TO HOST   @G24LB37
                                           NON-SHARED        @G24LB37*/
              4    *         BIT(14),   /* UNUSED            @G24LB37*/
            3      GVSFRESP  FIXED(15), /* NO OF FREE CYL    @Y30LB22*/
            3      GVSLEXT  FIXED(15),  /* NO OF CYL IN THE  @Y30LB22
                                           LARGEST FREE EXT  @Y30LB22*/
            3      GVSEXPDT  CHAR(4),   /* EXPIRATION DATE   @Y30LB22*/
            3      GVSMTDSP  FIXED(15); /* RUNNING COUNT OF  @G24LB37
                                           AVAILABLE SPACE   @G24LB37
                                           REMAINING ON VOL  @G24LB37
                                           IN CYLINDERS      @G24LB37*/
./ ADD NAME=IEZIELDF
* % DCL (RTNEXIT,PREEXIT,PSTEXIT,PRFEXIT) CHAR;
* % DCL IELOPBAS CHAR;
* % IELOPBAS = 'IELOPLST';
* % DCL IELEXBAS CHAR;
* % IELEXBAS = 'IELEXIT';
* % RTNEXIT = ' ';
* % PREEXIT = ' ';
* % PSTEXIT = ' ';
* % PRFEXIT = ' ';       /* @YM00047 */
./ ADD NAME=IEZIEL
*        %GOTO IELBSL;    /*
         MACRO
         IEZIEL &EXITS=
         LCLA  &N,&IELDUM
.*  COMPUTE LENGTH OF NEL EXIT LIST
&IELDUM  SETA  N'&EXITS
&IELDUM  SETA  8*&IELDUM
         AIF   (&IELDUM EQ 0).IELSTRT
&IELDUM  SETA  &IELDUM+8
.IELSTRT ANOP
***********************************************************************
*                                                                     *
*              INITIATOR CONTROL INTERFACE                            *
*                                                                     *
*    AOS/2 RELEASE 4, 09/13/74, LEVEL=1                       @Z40RPPJ*
***********************************************************************
         SPACE
***********************************************************************
*                                                                     *
*                 INITIATOR ENTRANCE LIST (IEL)                       *
*                                                                     *
***********************************************************************
IELLIST  DS    0D
         SPACE
IELSSOBA DS    A         ADDRESS OF SSOB HEADER
IELCSCB  DS    A ------- ADDRESS OF CSCB
IELOPLST DS    A ------- ADDRESS OF INITIATOR OPTION LIST
IELRTNA  DS    A         RETURN ADDRESS FOR INITIATOR
IELSTEPL DS    A         ADDR OF INITS STAE EXIT PARM LIST
IELLAST  DS    0A ------ SYMBOL USED TO SET HIGH-ORDER BIT INDICATING
*                        END OF LIST
IELEXIT  DS    A ------- ADDRESS OF INITIATOR EXIT LIST
         SPACE
IELEND   EQU   X'80' -   SYMBOL TO SET HIGH-ORDER BIT OF IELLAST
IELLEND  EQU   *
IELLEN   EQU   IELLEND-IELLIST LENGTH OF IEL
         SPACE
***********************************************************************
*                                                                     *
*                     INITIATOR OPTION LIST                           *
*                                                                     *
***********************************************************************
IELOPTS  DS    0D
         SPACE
IELOPLEN DS    H ------- LENGTH OF OPTION LIST
IELOPSW1 DS    B ------- OPTION SWITCH ONE
IELDPSWA EQU   X'80'     DON'T SHARE SWA OPTION ON ATTACH
IELDWFF  EQU   X'40' --- BYPASS USE OF DEDICATED WORK FILES
IELCANF  EQU   X'08' --- SUPPRESS CANCEL EXCEPT DURING ALLOCATION
IELONEJF EQU   X'04' --- PROCESS ONLY ONE JOB
IELICMDF EQU   X'02' --- INITIATOR TASK INDICATOR
         SPACE
IELOPSW2 DS    B ------- OPTION SWITCH TWO
IELTIMEF EQU   X'80' --- DO NOT TIME STEPS
IELCRF   EQU   X'40' --- DO NOT PROCESS CHECKPOINT/RESTART
IELBPRAC EQU   X'04' --- BYPASS RACINIT                        @Z40RPPJ
IELONORC EQU   X'02' --- BYPASS ALLOCATION RECOVERY
IELOENQU EQU   X'01' --- DO NOT WAIT FOR DATA SETS
         SPACE
IELTSIZ  DS    XL1       SIZE OF MASTER'S TIOT
         SPACE
IELOPSW3 DS    B ------- OPTION SWITCH THREE
IELNSYS  EQU   32        DO NOT ASSIGN SPECIAL PROPERTIES
         SPACE
IELSWAS  DS    XL1       SWA SUBPOOL NO. FOR SUBTASKS
         DS    CL1 ----- RESERVED
IELOPEND EQU   *         END OF OPTIONS LIST
IELOPTLN EQU   IELOPEND-IELOPTS LENGTH OF OPTIONS LIST
         SPACE
***********************************************************************
*                                                                     *
*                        INITIATOR EXIT LIST                          *
*                                                                     *
***********************************************************************
IELEXITS DS    0D
IELEXTLN EQU   &IELDUM - SYMBOLIC LENGTH OF EXIT LIST
***********************************************************************
*   LINKAGE IDENTIFIERS                                               *
***********************************************************************
IELEXNOP EQU   X'00' --- EXIT IS NO-OPED
IELEXADD EQU   X'40' --- BRANCH TO ADDRESS
IELEXLNK EQU   X'80' --- LINK TO NAME
IELEXXTL EQU   X'C0' --- XCTL TO NAME
***********************************************************************
*   EXIT IDENTIFIERS                                                  *
***********************************************************************
IELRTNEX EQU   X'80' --- RETURN EXIT AFTER TERMINATION
IELPREIN EQU   X'40' --- PREINVOCATION EXIT
IELPSTIN EQU   X'20' --- POSTINVOCATION EXIT
IELPRFRE EQU   X'10' --- PRE FREEPART EXIT                      YM00047
***********************************************************************
         SPACE
&N       SETA  1
         AIF   (N'&EXITS EQ 0).GENCON
         SPACE
***********************************************************************
*   EXIT LIST HEADER                                                  *
***********************************************************************
IELXTLEN DS    H ------- LENGTH OF EXIT LIST
IELRTNCD DS    CL1 ----- RETURN CODE
IELRTGD  EQU   X'00' --- GOOD RETURN CODE
IELRTALC EQU   X'04' --- ALLOCATION UNSUCCESSFUL
IELRTJCL EQU   X'04'   JCL ERROR FROM CONVERTER/INTERPRETER
IELRTJBQ EQU   X'08' --- I/O ERROR ON PROCLIB
IELRTDSI EQU   X'0C' --- DATA SET INTEGRITY CANCELLED JOB
IELRTPRI EQU   X'10' --- PRE-INVOCATION EXIT ROUTINE REQUESTED
*                        JOB FLUSH
IELRTPTI EQU   X'14' --- POST-INVOCATION EXIT ROUTINE REQUESTED
*                        JOB FLUSH
IELRTJLB EQU   X'18' --- JOBLIB CANNOT BE OPENED
IELRTSLB EQU   X'1C' --- STEPLIB CANNOT BE OPENED
IELRTFLB EQU   X'20' --- FETCHLIB CANNOT BE OPENED
IELPERR  EQU   X'24'   PROGRAM ERROR
IELRCXT  DS    XL1       CONTAINS RETURN CODE ORIGIN VALUE
* NOTE: THE FOLLOWING RETURN CODE ORIGINS HAVE THE SAME VALUE IN THE
* JSXL
IELCI    EQU   2       CONVERTER,SWA CREATE
IELINIT  EQU   3       INITIATOR
IELSSJS  EQU   4       SUBSYSTEM JOB SELECT
IELSSI   EQU   5       SUBSYSTEM INTERFACE
IELSUBS  EQU   6       SUBSYSTEM
*
IELCOM   DS    A ------- ADDRESS OF COMMUNICATION LIST
***********************************************************************
         SPACE
.NEXT    ANOP
.*  EXIT ENTRY NUMBER &N
         AIF   ('&EXITS(&N)' EQ 'RTN').GENENTY
         AIF   ('&EXITS(&N)' EQ 'PRE').GENENTY
         AIF   ('&EXITS(&N)' EQ 'PST').GENENTY
         AIF   ('&EXITS(&N)' EQ 'PRF').GENENTY                  YM00047
         MNOTE ,'INVALID IEL EXIT SPECIFIED'
         MEXIT
.GENENTY ANOP
***********************************************************************
&EXITS(&N).EXIT  DS    0CL8
&EXITS(&N).EXLK  DS    XL1 ----- LINKAGE DEFINITION
&EXITS(&N).EXID  DS    XL1 ----- EXIT DEFINITION
&EXITS(&N).EXNM  DS    CL6 ----- EXIT NAME
         ORG   *-4
&EXITS(&N).EXAD  DS    A ------- EXIT ADDRESS
***********************************************************************
         SPACE
         AIF   (N'&EXITS EQ &N).GENCON
&N       SETA  &N+1
         AGO   .NEXT
.GENCON  ANOP
         MEND  , */
***********************************************************************
***********************************************************************
*%IELBSL:;
*/*
*  USE OF THIS MAPPING MACRO IN BSL CAN BE FACILITATED BY USING
*     MACRO IEZIELDF WHICH DECLARES THE DEFAULT VALUES FOR THE IEL
*     EXITS.  THE CALLING SEQUENCE FOR IEZIELDF AND IEZIEL IS:
*            % INCLUDE SYSLIB(IEZIELDF),
*       (SPECIFY EXIT LISTS TO BE GENERATED LEAVING OUT REFERENCES TO
*        EXITS WHICH ARE NOT TO BE GENERATED)
*            % RTNEXIT = 'Y',   -  RETURN EXIT
*            % PREEXIT = 'Y',   -  PRE INITIATION EXIT
*            % PSTEXIT = 'Y',   -  POST INITIATION EXIT
*            % PRFEXIT = 'Y',   -  PRE FREEPART EXIT            YM00047
*            % INCLUDE SYSLIB(IEZIEL),
*                                                                    */
*/* **************************************************************** */
*/*                                                                  */
*/*                 INITIATOR CONTROL INTERFACE                      */
*/*                                                                  */
*/*  AOS/2 RELEASE 4, 09/13/74, LEVEL=1                      @Z40RPPJ*/
*/* **************************************************************** */
*   % DCL IELLEN CHAR;    /*LENGTH OF ENTRANCE LIST*/
*   % IELLEN = 'LENGTH(IELLIST)';
* DECLARE
* 1 IEL BASED (IELPTR) BDY(DWORD),
*  2 IELLIST CHAR(24) BDY(DWORD),
*/* **************************************************************** */
*/*                                                                  */
*/*                     INITIATOR ENTRANCE LIST                      */
*/*                                                                  */
*/* **************************************************************** */
*   3 IELSSOBA PTR (31),     /* ADDRESS OF SSOB HEADER*/
*   3 IELCSCB PTR (31),      /* ADDRESS OF START COMMAND CSCB */
*   3 IELOPLST PTR (31),     /*ADDRESS OF INITIATOR OPTION LIST*/
*   3 IELRTNA PTR (31),      /* RETURN ADDRESS FOR INITIATOR*/
*   3 IELSTEPL PTR (31),     /* ADDR OF INITS STAE EXIT PARM LIST*/
*   3 IELEXIT PTR (31),      /*ADDRESS OF INITIATOR EXIT LIST*/
*    4 IELLAST CHAR (1),     /*SYMBOL USED TO SET HIGH ORDER BIT
*                              INDICATING END OF LIST*/
*     5 IELEND BIT (1),      /*HIGH ORDER BIT*/
*     5 * BIT (7);
*/* **************************************************************** */
*/*                                                                  */
*/*                  INITIATOR OPTION LIST                           */
*/*                                                                  */
*/* **************************************************************** */
*   % DCL IELOPTLN CHAR;
*   % IELOPTLN = '8';        /*SYMBOLIC LENGTH OF OPTION LIST*/
* DECLARE
* 1 IELOPTS CHAR (8) BASED (IELOPBAS) BDY (DWORD),
*   3 IELOPLEN FIXED (15),   /*LENGTH OF OPTION LIST*/
*   3 IELOPSW1 CHAR (1),     /*OPTION SWITCH ONE*/
*    4 IELDPSWA BIT (1),     /* DON'T SHARE SWA OPTION ON ATTACH*/
*    4 IELDWFF BIT (1),      /*DO NOT USE DEDICATED WORK FILES*/
*    4 * BIT (1),            /* RESERVED*/
*    4 * BIT (1),            /* RESERVED*/
*    4 IELCANF BIT (1),      /*SUPPRESS CANCEL EXCEPT DURING ALLOCATE*/
*    4 IELONEJF BIT (1),     /*PROCESS ONLY ONE JOB*/
*    4 IELICMDF BIT (1),     /* INITIATOR TASK INDICATOR */
*    4 * BIT (1),            /* RESERVED*/
*
*   3 IELOPSW2 CHAR (1),     /*OPTION SWITCH TWO*/
*    4 IELTIMEF BIT (1),     /*DO NOT TIME STEPS*/
*    4 IELCRF BIT (1),       /*DO NOT PROCESS CHECKPOINT/RESTART*/
*    4 * BIT (1),            /* RESERVED*/
*    4 * BIT (1),            /* RESERVED*/
*    4 * BIT (1),            /* RESERVED*/
*    4 IELBPRAC BIT (1),     /* BYPASS RACINIT               @Z40RPPJ*/
*    4 IELONORC BIT (1),     /*BYPASS ALLOCATION RECOVERY*/
*    4 IELOENQU BIT (1),     /*DO NOT WAIT FOR DATA SETS*/
*
*   3 IELTSIZ PTR (8),       /* SIZE OF MASTER'S TIOT*/
*
*   3 IELOPSW3 CHAR (1),     /*OPTION SWITCH THREE*/
*        4 * BIT (1),        /*RESERVED*/
*        4 * BIT (1),        /*RESERVED*/
*        4 IELNSYS BIT (1),  /*DO NOT ASSIGN SPECIAL PROPERTIES*/
*
*   3 IELSWAS PTR (8),       /*SWA SUBPOOL NO. FOR SUBTASK*/
*   3 * CHAR (1);            /*RESERVED*/
*/* **************************************************************** */
*/*                                                                  */
*/*                  INITIATOR EXIT LIST                             */
*/*                                                                  */
*/* **************************************************************** */
*/* **************************************************************** */
*/*    LINKAGE IDENTIFIERS                                           */
*/* **************************************************************** */
*  % DCL IELEXNOP CHAR;
*  % IELEXNOP = '''00''X';   /*EXIT IS N0-0PED*/
*  % DCL IELEXADD CHAR;
*  % IELEXADD = '''40''X';   /*BRANCH TO ADDRESS*/
*  % DCL IELEXLNK CHAR;
*  % IELEXLNK = '''80''X';   /*LINK TO NAME*/
*  % DCL IELEXXTL CHAR;
*  % IELEXXTL = '''C0''X';   /*XCTL TO NAME*/
*/* **************************************************************** */
*/*    EXIT IDENTIFIERS                                              */
*/* **************************************************************** */
*  % DCL IELRTNEX CHAR;
*  % IELRTNEX = '''80''X';   /*RETURN EXIT AFTER TERMINATION*/
*  % DCL IELPREIN CHAR;
*  % IELPREIN = '''40''X';   /*PREINVOCATION EXIT*/
*  % DCL IELPSTIN CHAR;
*  % IELPSTIN = '''20''X';   /*POST INVOCATION EXIT*/
*  % DCL IELPRFIN CHAR;      /*                              @YM00047*/
*  % IELPRFIN = '''10''X';   /* PRE FREEPART EXIT  @YM00047 */
*/* **************************************************************** */
*  % DCL IELDUM FIXED;
*  % IELDUM=0;
*  % IF RTNEXIT ^= ' ' %THEN % IELDUM = IELDUM + 1;
*  % IF PREEXIT ^= ' ' %THEN % IELDUM = IELDUM + 1;
*  % IF PSTEXIT ^= ' ' %THEN % IELDUM = IELDUM + 1;
*  % IF PRFEXIT ^= ' ' %THEN % IELDUM = IELDUM + 1;  /* @YM00047*/
*  % IELDUM = 8*IELDUM;   /*8 BYTES PER EXIT ENTRY*/
*  % IF IELDUM = 0 % THEN % GO TO ENDIEL; /* IF NO EXITS SPECIFIED,
*                                            DONT ADD HEADER LENGTH*/
*  % IELDUM = IELDUM + 8;    /* ADD HEADER LENGTH */
*/* **************************************************************** */
* DECLARE
* 1 IELEXITS BDY(DWORD) BASED(IELEXBAS),
*  2 IELEXHDR  BDY (WORD),   /*EXIT LIST HEADER*/
*   3 IELXTLEN FIXED (15),   /*EXIT LIST LENGTH*/
*   3 IELRTNCD PTR (8),      /*RETURN CODE*/
*  %DCL IELRTGD CHAR;
*  %IELRTGD='''00''X';       /* GOOD RETURN CODE                     */
*  %DCL IELRTALC CHAR;
*  %IELRTALC='''04''X';      /* ALLOCATION UNSUCCESSFUL              */
* %DCL IELRTJCL CHAR;
* %IELRTJCL='''04''X';        /* JCL ERROR FROM CONVERTER/INTERPRETER*/
*  %DCL IELRTJBQ CHAR;
*  %IELRTJBQ='''08''X';      /* I/O ERROR ON PROCLIB                 */
*  %DCL IELRTDSI CHAR;
*  %IELRTDSI='''0C''X';      /* DATA SET INTEGRITY CANCELLED JOB     */
*  %DCL IELRTPRI CHAR;       /* PRE-INVOCATION EXIT ROUTINE          */
*  %IELRTPRI='''10''X';      /* REQUESTED JOB FLUSH                  */
*  %DCL IELRTPTI CHAR;       /* POST-INVOCATION EXIT ROUTINE         */
*  %IELRTPTI='''14''X';      /* REQUESTED JOB FLUSH                  */
*  %DCL IELRTJLB CHAR;
*  %IELRTJLB='''18''X';      /* JOBLIB CANNOT BE OPENED              */
*  %DCL IELRTSLB CHAR;
*  %IELRTSLB='''1C''X';      /* STEPLIB CANNOT BE OPENED             */
*  %DCL IELRTFLB CHAR;
*  %IELRTFLB='''20''X';      /* FETCHLIB CANNOT BE OPENED            */
*  %DCL IELPERR CHAR;
*  %IELPERR='''24''X';        /* PROGRAM ERROR                       */
* 3 IELRCXT PTR(8),            /* CONTAINS RETURN CODE ORIGIN VALUE */
*/* NOTE: THE FOLLOWING CODE ORIGINS HAVE THE SAME VALUE IN THE JSXL */
* %DCL IELCI CHAR;
* %IELCI='''02''X';            /* CONVERTER SWA CREATE              */
* %DCL IELINIT CHAR;
* %IELINIT='''03''X';          /* INITIATOR                         */
* %DCL IELSSJS CHAR;
* %IELSSJS='''04''X';          /* SUBSYSTEM JOB SELECT              */
* %DCL IELSSI CHAR;
* %IELSSI='''05''X';           /* SUBSYSTEM INTERFACE               */
* %DCL IELSUBS CHAR;
* %IELSUBS='''06''X';          /* SUBSYSTEM                         */
*   3 IELCOM PTR (31),       /*ADDRESS OF COMM LIST                */
*/* **************************************************************** */
*  % IF RTNEXIT = ' ' % THEN % GO TO IELEX1;
*/* **************************************************************** */
*  2 RTNEXT CHAR (8) BDY (WORD)  ,
*   3 RTNEXLK CHAR (1),            /*LINKAGE DEFINITION*/
*   3 RTNEXID CHAR (1),            /*EXIT DEFINITION*/
*   3 RTNEXNM CHAR (6)BDY(WORD,3), /*EXIT NAME*/
*    4 * CHAR (2),
*    4 RTNEXAD PTR (31),           /*EXIT ADDRESS*/
*/* **************************************************************** */
*  % IELEX1:;
*  % IF PREEXIT = ' ' % THEN % GO TO IELEX2;
*/* **************************************************************** */
*  2 PREEXT CHAR (8) BDY (WORD),
*   3 PREEXLK CHAR (1),            /*LINKAGE DEFINITION*/
*   3 PREEXID CHAR (1),            /*EXIT DEFINITION*/
*   3 PREEXNM CHAR (6)BDY(WORD,3), /*EXIT NAME*/
*    4 * CHAR (2),
*    4 PREEXAD PTR (31),           /*EXIT ADDRESS*/
*/* **************************************************************** */
*  % IELEX2:;
*  % IF PSTEXIT = ' ' % THEN % GO TO IELEX3;
*/* **************************************************************** */
*  2 PSTEXT CHAR (8) BDY (WORD),
*   3 PSTEXLK CHAR (1),            /*LINKAGE DEFINITION*/
*   3 PSTEXID CHAR (1),            /*EXIT DEFINITION*/
*   3 PSTEXNM CHAR (6)BDY(WORD,3), /*EXIT NAME*/
*    4 * CHAR (2),
*    4 PSTEXAD PTR (31),           /*EXIT ADDRESS*/
*/* **************************************************************** */
*  % IELEX3:;
*  % IF PRFEXIT = ' ' % THEN % GO TO IELEX4;  /* @YM00047 */
*/* ***************************************************************  */
*  2  PRFEXT CHAR(8) BDY (WORD),    /* @YM00047*/
*        3 PRFEXLK CHAR(1),  /* LINKAGE DEFINITION @YM00047*/
*        3 PRFEXID CHAR(1),  /* EXIT DEFINITION @YM00047*/
*        3 PRFEXNM CHAR(6),  /* EXIT NAME @YM00047*/
*          4 * CHAR(2),      /* @YM00047*/
*          4 PRFEXAD PTR(31), /* EXIT ADDRESS @YM00047*/
*/* **************************************************************** */
* % IELEX4:;    /* @YM00047*/
*         10 * CHAR(1);
*  % ENDIEL:;
./ ADD NAME=IEZINDEX
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZINDEX                                  @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*          CARTRIDGE RECORDS PROVIDE A PATH TO             @Y30LB22*/
 /*          VOLUME RECORDS WHEN ONLY A CARTRIDGE(S) IS      @Y30LB22*/
 /*          KNOWN.                                          @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                                   */
 /********************************************************************/
     DCL
       1        INDEX BASED(INDEXPTR) BDY(WORD),           /*@Y30LB22*/
         2      INDNAME   CHAR(13),  /* KEY OF CARTRIDGE     @Y30LB22*/
           3    INDI      CHAR(1),   /* LETTER I             @Y30LB22*/
           3    INDSERNO  CHAR(12),  /* SER NO. OF CARTRIDGE @Y30LB22*/
         2      INDTYPE   BIT(16),   /* RECORD TYPE FLAG     @Y30LB22*/
           3    INDRES1   BIT(4),    /* RESERVED             @Y30LB22*/
           3    INDINDEX  BIT(1),    /* CARTRIDGE RECORD     @Y30LB22*/
           3    INDRES2   BIT(11),   /* RESERVED             @Y30LB22*/
         2      INDRECKY  CHAR(13),  /* RECORD KEY OF VOLUME @Y30LB22
                                        TO WHICH THIS CART.  @Y30LB22
                                        BELONGS              @Y30LB22*/
           3    INDPREFX  CHAR(5),   /* A LETTER & 4 BLANKS  @Y30LB22*/
             4  INDALPHA  CHAR(1),   /* ALPHA CHARACTER      @Y30LB22*/
             4  INDBLNK1  CHAR(4),   /* BLANKS               @Y30LB22*/
           3    INDVSRNO  CHAR(6),   /* VOL SER NUMBER       @Y30LB22*/
           3    INDRECID  CHAR(2),   /* RECORD ID            @Y30LB22*/
             4  INDBLNK2  CHAR(1),   /* BLANK                @Y30LB22*/
             4  INDEXREC  BIT(8),    /* RECORD INDEX NO.     @Y30LB22*/
         2      *         CHAR(8);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZINIT
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/178/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZINIT                                   @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION:                                       @Y30LB22*/
 /*                  A MAPPING MACRO THAT ENABLES THE USER   @Y30LB22*/
 /*                  TO ISSUE SVC 126 TO INITIALIZE, ENABLE  @Y30LB22*/
 /*                  AND DISABLE MSVC.                       @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 1                       @Z37LB26*/
 /*                                                                   */
    /* CONSTANTS                                             @Y30LB22*/
     DCL  INICODE  BIT(8) CONSTANT('88'X); /* OP CODE        @Y30LB22*/
     DCL  INILEN  FIXED(15) INIT(LENGTH(INITVVI)); /* LENGTH @Y30LB22
                                           OF REQUEST BLOCK  @Y30LB22*/
     /* MAPPING MACRO                                        @Y30LB22*/
 DCL  1         INITVVI   BASED(INITPTR) BDY(WORD),        /*@Y30LB22*/
         2      INILNGTH  FIXED(31), /* LEN OF PARM LIST     @Y30LB22*/
         2      INITOPCD  CHAR(1),   /* OP CODE ID           @Y30LB22*/
         2      INIFLAGA  CHAR(1),   /* OPERATION FLAGS      @Y30LB22*/
           3    ININIT    BIT(1),    /* INIT OPERATION       @Y30LB22*/
           3    INIENABL  BIT(1),    /* ENABLE OPERATION     @Y30LB22*/
           3    INIDISAB  BIT(1),    /* DISABLE OPERATION    @Y30LB22*/
           3    *         BIT(5),    /* UNUSED               @Y30LB22*/
         2      INIFLAGB  CHAR(1),   /* VERIFICATION FLAGS   @Y30LB22*/
           3    INIVERFY  BIT(1),    /* BIT 0=0, NO VERIFI-  @Y30LB22
                                        CATION REQUIRED      @Y30LB22
                                        BIT 0=1, OPERATOR    @Y30LB22
                                        VERIFICATION OF PARM @Y30LB22
                                        LIB KEYWORD OR       @Y30LB22
                                        REQUIRED DEFAULT     @Y30LB22*/
           3    INIJRNL   BIT(1),    /* BIT 1=1, JRNL IS     @Y30LB22
                                        TO BE ENABLED        @Y30LB22*/
           3    INIABLE   BIT(1),    /* BIT 2=1, MSVC IS     @Y30LB22
                                        TO BE ENABLED        @Y30LB22*/
           3    INIRESTR  BIT(1),    /* BIT 3=1, MSVI WAS    @Z37LB26
                                        RESTORED             @Z37LB26*/
           3    *         BIT(4),    /* UNUSED               @Z37LB26*/
         2      INIVCODE  CHAR(1),   /* VERIFICATION CODE    @Y30LB22*/
         2      INIUCAT   CHAR(8),   /* USER CATALOG NAME    @Y30LB22*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZMCRTE
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZMCRTE                                  @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION:                                       @Y30LB22*/
 /*                  MAPS THE REQUEST BLOCK                  @Y30LB22*/
 /*                  EXTENSION WHICH IS USED TO PASS         @Y30LB22*/
 /*                  ADDITIONAL INFORMATION TO MASS          @Y30LB22*/
 /*                  STORAGE VOLUME  CONTROL DURING          @Y30LB22*/
 /*                  AN MOVE CARTRIDGE REQUEST.              @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                       #Y30LB22*/
 /*                                                          @Y30LB22*/
 /********************************************************************/
    /* CONSTANTS FOR IEZMCRTE                                @Y30LB22*/
     DCL  MCRLEN  FIXED(15) INIT(LENGTH(MCRTE)); /* LENGTH   @Y30LB22
                                            OF EXTENSION     @Y30LB22*/
    /* MAPPING MACRO DECLARES                                @Y30LB22*/
     DCL
       1        MCRTE BASED(MCRTEPTR) BDY(WORD),
         2      MCRLNGTH  FIXED(31), /* LENGTH OF EXTENSION  @Y30LB22*/
         2      MCRLOC    CHAR(30),  /* LOCATION/DESTINATION OF
                                        VOL AFTER EJECTION   @Y30LB22*/
         2      MCRFLAGA  BIT(8),    /* SPECIFICATION FLAGS  @Y30LB22*/
           3    MCRSPLOC  BIT(1),    /* MCRLOC IS SPECIFIED  @Y30LB22*/
           3    *         BIT(7),    /* UNUSED               @Y30LB22*/
         2      MCRBLNK1  CHAR(1),   /* BLANK                @Y30LB22*/
         2      MCRFLAGB  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    *         BIT(8),    /* UNUSED               @Y30LB22*/
           3    *         BIT(8),    /* UNUSED               @Y30LB22*/
           3    MCRTYPE   BIT(8),    /* MOVE CART. TYPE FLAG @Y30LB22*/
             4  MCRREC    BIT(1),    /* BIT 0=1, REC RETAIN  @Y30LB22
                                        BIT 0=0, REC DELETE  @Y30LB22*/
             4  *         BIT(7),    /* UNUSED               @Y30LB22*/
           3    *         BIT(8),    /* UNUSED               @Y30LB22*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZMESG
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          NAME: IEZMESG                                   @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          FUNCTION:                                       @Y30LB22*/
 /*          MAPS THE REQUEST BLOCK FOR A REQUEST            @Y30LB22*/
 /*          TO UPDATE INVENTORY RECORDS BASED ON A          @Y30LB22*/
 /*          PARTICULAR SOLICITED OR UNSOLICITED MESSAGE.    @Y30LB22*/
 /*          REGISTER 1 MUST POINT TO THE REQUEST BLOCK      @Y30LB22*/
 /*          WHEN THE REQUEST IS EXECUTED                    @Y30LB22*/
 /*          (MACRO ICBMESG - SVC 126).                      @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                          @Y30LB22*/
 /********************************************************************/
    /* CONSTANTS FOR IEZMESG                                 @Y30LB22*/
     DCL           MESLEN  FIXED(15) INIT(LENGTH(MESG));   /*@Y30LB22
                                   LENGTH OF REQUEST BLOCK   @Y30LB22*/
     DCL           MESOP   BIT(8) CONSTANT('86'X);         /*@Y30LB22*/
                                      /* OP CODE             @Y30LB22*/
    /* MAPPING MACRO DECLARES                                @Y30LB22*/
     DCL
       1        MESG  BASED(MESGPTR) BDY(WORD),            /*@Y30LB22*/
         2      MESLNGTH  FIXED(31), /* LENGTH OF REQ BLK    @Y30LB22*/
         2      MESCODE   CHAR(4),   /* OPERATION IDENTIFIER @Y30LB22*/
           3    MESOPCD   BIT (8),   /* OP CODE              @Y30LB22*/
           3    *         CHAR(3),   /* UNUSED               @Y30LB22*/
         2      MESGBUF   CHAR(60);  /* MSC MESSAGE          @Y30LB22*/
./ ADD NAME=IEZMGP
 /********************************************************************/
 /*                                                                  */
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/172/341040         @Y30LB22*/
 /*                                                          @G24LB37*/
 /*          NAME: IEZMGP                                    @G24LB37*/
 /*                                                          @G24LB37*/
 /*          FUNCTION:                                       @Y30LB22*/
 /*          MAPS THE REQUEST BLOCK FOR A CREATE OR MODIFY   @Y30LB22*/
 /*          GROUP RECORD REQUEST.  REGISTER 1 MUST          @Y30LB22*/
 /*          POINT TO THE REQUEST BLOCK WHEN THE REQUEST IS  @Y30LB22*/
 /*          EXECUTED  (MACRO ICBVVIC - SVC 126).            @G24LB37*/
 /*                                                          @G24LB37*/
 /*          STATUS:  MVS                                    @G24LB37*/
 /*                                                          @G24LB37*/
 /*          CHANGE LEVEL:                                   @G24LB37*/
 /*          @G24LB37  ALLOCATE TO MOUNTED VOLUMES  06/07/76 @G24LB37*/
 /*                                                                  */
 /********************************************************************/
    /*  CONSTANTS                                            @Y30LB22*/
     DCL   MGPCGOP  BIT(8)    CONSTANT('82'X);             /*@Y30LB22*/
                              /* CREATE GRP REQ. OP CODE     @Y30LB22*/
     DCL   MGPMGOP  BIT(8)    CONSTANT('83'X);             /*@Y30LB22*/
                              /* MODIFY GRP REQ. OP CODE     @Y30LB22*/
     DCL   MGPLEN   FIXED(15) INIT (LENGTH(MGP));          /*@Y30LB22*/
                              /* REQUEST BLOCK LENGTH        @Y30LB22*/
     DCL
       1        MGP BASED(MGPPTR) BDY(WORD),               /*@Y30LB22*/
         2      MGPLNGTH  FIXED(31), /* REQ BLK LENGTH       @Y30LB22*/
         2      MGPCODE   CHAR(4),   /* OPERATION ID         @Y30LB22*/
           3    MGPOPCD   BIT(8),    /* OP CODE              @Y30LB22*/
           3    *         CHAR(3),   /* UNUSED               @Y30LB22*/
         2      MGPGROUP  CHAR(8),   /* USER DEFINED MSVGP   @Y30LB22*/
         2      MGPOWNER  CHAR(10),  /* NAME/ID OF OWNER     @Y30LB22*/
         2      MGPRI     FIXED(15), /* PRIM SPACE DEFAULT   @Y30LB22*/
         2      MGPSEC    FIXED(15), /* SEC SPACE DEFAULT    @Y30LB22*/
         2      MGPRETPD  FIXED(15), /* GRP RETENTION PERIOD @Y30LB22*/
         2      MGPTHOLD  FIXED(8),  /* GRP THREHOLD PERCENT @Y30LB22*/
         2      MGPCONUS  FIXED(8),  /* MAXIMUM NUMBER       @G24LB37
                                        OF CONCURRENT USERS  @G24LB37
                                        PER HOST TO A VOLUME @G24LB37
                                        WITHIN A GROUP       @G24LB37*/
         2      MGPRESSP  FIXED(8),  /* PERCENT OF RESERVED  @G24LB37
                                        SPACE PER VOLUME     @G24LB37
                                        WITHIN A  GROUP      @G24LB37*/
         2      *         CHAR(1),   /* UNUSED               @G24LB37*/
         2      MGPDESCR  CHAR(30),  /* DESCRIPTIVE INFO     @Y30LB22*/
         2      MGPADDR   CHAR(30),  /* MAILING ADDRESS      @Y30LB22*/
         2      MGPFLAGA  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    MGPRLSE   BIT(1),    /* UNUSED SPACE TO BE   @Y30LB22
                                        RELEASED             @Y30LB22*/
           3    MGPNRLSE  BIT(1),    /* UNUSED SPACE NOT TO  @Y30LB22
                                        BE RELEASED          @Y30LB22*/
           3    MGPBIND   BIT(1),    /* RESERVE ENTIRE VOL   @Y30LB22*/
           3    MGPNBIND  BIT(1),    /* VOL WILL NOT BE      @Y30LB22
                                        BOUND TO THE         @Y30LB22
                                        STAGING VOLUME       @Y30LB22*/
           3    MGPEXCL   BIT(1),    /* EXCLUSIVE USE        @Y30LB22*/
           3    MGPSHARE  BIT(1),    /* SHAREABLE            @Y30LB22*/
           3    MGPRONLY  BIT(1),    /* READ ONLY            @Y30LB22*/
           3    MGPRW     BIT(1),    /* VOL IS READ/WRITE    @Y30LB22*/
           3    MGPDERAS  BIT(1),    /* MSS HDWR WILL ERASE  @Y30LB22
                                        DATA ON DESTAGED VOL @Y30LB22*/
           3    MGPNDERA  BIT(1),    /* MSS HDWR WILL NOT    @Y30LB22
                                        ERASE DATA  ON       @Y30LB22
                                        DESTAGED VOLUME      @Y30LB22*/
           3    MGPFLGRO  BIT(1),    /* MGPGROUP  SPECIFIED  @Y30LB22*/
           3    MGPFLOWN  BIT(1),    /* MGPOWNER  SPECIFIED  @Y30LB22*/
           3    MGPFLPRI  BIT(1),    /* MGPPRI IS SPECIFIED  @Y30LB22*/
           3    MGPFLSEC  BIT(1),    /* MGPSEC IS SPECIFIED  @Y30LB22*/
           3    MGPFLTHO  BIT(1),    /* MGPTHOLD  SPECIFIED  @Y30LB22*/
           3    MGPFLRET  BIT(1),    /* MGPRETPD  SPECIFIED  @Y30LB22*/
           3    MGPFLDES  BIT(1),    /* MGPDESCR  SPECIFIED  @Y30LB22*/
           3    MGPFLADD  BIT(1),    /* MGPADDR IS SPECIFIED @Y30LB22*/
           3    MGPNTHLD  BIT(1),    /* NULLIFY THRESHOLD    @Y30LB22
                                        PERCENT              @Y30LB22*/
           3    MGPNOWNR  BIT(1),    /* NULLIFY OWNER        @Y30LB22*/
           3    MGPNRETP  BIT(1),    /* NULLIFY RETEN PERIOD @Y30LB22*/
           3    MGPNDESC  BIT(1),    /* NULLIFY DESCRIPTION  @Y30LB22*/
           3    MGPNADDR  BIT(1),    /* NULLIFY ADDRESS      @Y30LB22*/
           3    MGPFLCON  BIT(1),    /* MGPCONUS SPECIFIED   @G24LB37*/
           3    MGPFLRES  BIT(1),    /* MGPRESSP SPECIFIED   @G24LB37*/
           3    *         BIT(7),    /* UNUSED               @G24LB37*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZMNTXT
*%GOTO   MNXPLS2;       /* MSSC MOUNT LIST EXTENSION MAP     @ZDR2048
         MACRO
         IEZMNTXT
**************************************************************@ZDR2048
*                                                             @ZDR2048
*      MACCOMP @ZDR2048       SC1DP/BL0019                    @ZDR2048
*      MACSTAT @ZDR2048       76.113                          @ZDR2048
*                                                             @ZDR2048
*     NAME -- MNTXT -- MSSC MOUNT PARAMETER LIST EXTENSION    @ZDR2048
*                                                             @ZDR2048
*     FUNCTION -- THIS IS A MAPPING MACRO FOR THE EXTENSION   @ZDR2048
*        TO THE MOUNT PARAMETER LIST WHICH MAY ACCOMPANY A    @ZDR2048
*        NONSPECIFIC MOUNT REQUEST TO THE MSSC SVC.           @ZDR2048
*        THE EXTENSION IS ADDRESSED FROM A FIELD IN THE       @ZDR2048
*        MOUNT PARAMETER LIST.                                @ZDR2048
*                                                             @ZDR2048
*     STATUS -- CHANGE LEVEL 0                                @ZDR2048
*                                                             @ZDR2048
**************************************************************@ZDR2048
MNTXT    DSECT               MOUNT PARAMETER LIST EXTENSION   @ZDR2048
MNTXJFCB DS    F             ADDRESS OF THE JFCB              @ZDR2048
MNTXJOBN DS    F             ADDRESS OF THE JOB NAME          @ZDR2048
MNTXSTEP DS    F             ADDRESS OF THE STEP NUMBER       @ZDR2048
MNTXREJT DS    F             COUNT OF VOLUME REJECTS          @ZDR2048
MNTXLGTH EQU   *-MNTXT       LENGTH OF EXTENSION              @ZDR2048
         MEND
**/
*%MNXPLS2:;                                              /*  @ZDR2048*/
*/***********************************************************@ZDR2048*/
*/*                                                          @ZDR2048*/
*/*   MACCOMP @ZDR2048     SC1DP/BL0019                      @ZDR2048*/
*/*   MACSTAT @ZDR2048     76.113                            @ZDR2048*/
*/*                                                          @ZDR2048*/
*/*   NAME -- MNTXT -- MSSC MOUNT PARAMETER LIST EXTENSION   @ZDR2048*/
*/*                                                          @ZDR2048*/
*/*   FUNCTION -- THIS IS A MAPPING MACRO FOR THE EXTENSION  @ZDR2048*/
*/*      TO THE MOUNT PARAMETER LIST WHICH MAY ACCOMPANY A   @ZDR2048*/
*/*      NONSPECIFIC MOUNT REQUEST TO THE MSSC SVC.          @ZDR2048*/
*/*      THE EXTENSION IS ADDRESSED FROM A FIELD IN THE      @ZDR2048*/
*/*      MOUNT PARAMETER LIST.                               @ZDR2048*/
*/*                                                          @ZDR2048*/
*/*   STATUS -- CHANGE LEVEL 0                               @ZDR2048*/
*/*                                                          @ZDR2048*/
*/***********************************************************@ZDR2048*/
*    DCL 1 MNTXT BASED,     /*MOUNT PARAMETER LIST EXTENSION @ZDR2048*/
*          2 MNTXJFCB PTR(31),    /* ADDRESS OF THE JFCB     @ZDR2048*/
*          2 MNTXJOBN PTR(31),    /* ADDRESS OF THE JOB NAME @ZDR2048*/
*          2 MNTXSTEP PTR(31),    /* ADDRESS OF STEP NUMBER  @ZDR2048*/
*          2 MNTXREJT FIXED(31);  /* COUNT OF VOLUME REJECTS @ZDR2048*/
*%MNTXLGTH='LENGTH(MNTXT)';       /* LENGTH OF EXTENSION     @ZDR2048*/
./ ADD NAME=IEZMPL
*        %GOTO MPLL1;         /* BILINGUAL MAPPING
         MACRO
         IEZMPL &DSECT=YES                                           */
*%MPLL1: ;
* /*******************************************************************/
* /*                                                                 */
* /* MACMEAN MPL MEANS MONITOR PARAMETER LIST                        */
* /*                                                                 */
* /* MACCOMP Y-2 SC1C5/PZD81                                         */
* /*                                                                 */
* /* MACSTAT Y-2 72245/TU015156                                      */
* /*                                                                 */
* /* METHOD OF ACCESS                                                */
* /*     PL/S - DCL MPLPTR PTR                                       */
* /*     BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
* /*            USING ON DSECT NAME GIVES ADDRESSABILITY FOR ALL     */
* /*            SYMBOLS IN THAT DSECT.                               */
* /*                                                                 */
* /* USAGE                                                           */
* /*     PL/S - A STRUCTURE LEVEL NUMBER MAY BE SPECIFIED BY SETTING */
* /*            THE COMPILE-TIME VARIABLE %MPLLEVEL. IN THAT CASE,   */
* /*            NO DECLARE STATEMENT IS PRODUCED.  THE STRUCTURE     */
* /*            LEVEL NUMBER MUST BE LESS THAT 10.  THE DECLARE      */
* /*            STATEMENT MAY BE LEFT OPENED BY SETTING              */
* /*            %MPL9999=','.  OTHERWISE, IT IS CLOSED.              */
* /*                                                                 */
* /*******************************************************************/
*%GOTO MPLL2; /*
         SPACE
         IEZBITS , -          SYMBOLIC BIT DEFINITIONS
         SPACE
         AIF    ('&DSECT' EQ 'NO').MPL0000
MPL      DSECT
         AGO   .MPL0020
.MPL0000 ANOP
         DS    0D
MPL      EQU   *
.MPL0020 ANOP
         SPACE
MPLPROC  DS    0H             PROCESSING FLAGS
MPLPROC1 DS    B              FIRST BYTE OF PROCESSING FLAGS
MPLCONS  EQU   BIT0           MPLID IS A CONSOLE ID
MPLTERM  EQU   BIT1           MPLID IS AN ASID FOR A TSO USER
MPLSTRT  EQU   BIT2           START MONITOR
MPLSTOP  EQU   BIT3           STOP MONITOR
MPLRSV01 EQU   BIT4,,C'X' -   RESERVED
MPLRSV02 EQU   BIT5,,C'X' -   RESERVED
MPLRSV03 EQU   BIT6,,C'X' -   RESERVED
MPLRSV04 EQU   BIT7,,C'X' -   RESERVED
         SPACE
MPLPROC2 DS    B              SECOND BYTE OF PROCESSING FLAGS
         SPACE
MPLID    DS    CL2            CONSOLE ID OR ASID
         SPACE
MPLTYPE  DS    0H -           MONITOR TYPE FLAGS
MPLTYPE1 DS    B -            FIRST BYTE OF MONITOR TYPE FLAGS
MPLJBNM  EQU   BIT0 -         MONITOR JOBNAMES
MPLSTAT  EQU   BIT1 -         MONITOR STATUS
MPLRSV05 EQU   BIT2,,C'X' -   RESERVED
MPLRSV06 EQU   BIT3,,C'X' -   RESERVED
MPLRSV07 EQU   BIT4,,C'X' -   RESERVED
MPLSESS  EQU   BIT5 -         MONITOR SESSIONS
MPLRSV08 EQU   BIT6,,C'X' -   RESERVED
MPLRSV09 EQU   BIT7,,C'X' -   RESERVED
         SPACE
MPLTYPE2 DS    B              SECOND BYTE OF MONITOR TYPE FLAGS
         SPACE
MPLALL   EQU   MPLJBNM+MPLSTAT+MPLSESS ALL MONITOR FUNCTIONS
         SPACE
MPLRSV10 DS    CL2            RESERVED
         SPACE
MPLSIZE  EQU   *-MPL -        LENGTH OF MPL
         MEND  , -               */
*%MPLL2: ;                               /* PL/S COMPILE-TIME TARGET */
*        % IF MPL9999^=','               /* IF THIS IS THE LAST BLOCK*/
*          % THEN %MPL9999=';';          /* THEN CLOSE DECLARE
*                                           STATEMENT                */
*        % IF MPLLEVEL^=''               /* IF THIS IS A CONCATENATED
*                                           BLOCK                    */
*          % THEN %GOTO MPLL3;           /* THEN SKIP DECLARE
*                                           STATEMENT                */
*
*DECLARE
*  1 MPL BASED(MPLPTR)                   /* DECLARE MPL LEVEL ONE    */
*        % GOTO MPLL4;                   /* SKIP LEVEL N DECLARE     */
*%MPLL3:  MPLDUM=MPLLEVEL' MPL';       /* SET LEVEL FOR MINOR
*                                           STRUCTURE                */
*        MPLDUM                          /* MINOR STRUCTURE NAME     */
*%MPLL4:;
*          BDY(WORD),
*   10 MPLPROC      CHAR(2) BDY(WORD),   /* PROCESSING FLAGS         */
*     15 MPLPROC1    BIT(8),             /* FIRST BYTE OF PROCESSING
*                                           FLAGS                    */
*      20 MPLCONS  BIT(1),               /* MPLID IS A CONSOLE ID    */
*      20 MPLTERM  BIT(1),               /* MPLID IS AN ASID FOR A
*                                           TSO USER                 */
*      20 MPLSTRT  BIT(1),               /* START MONITOR            */
*      20 MPLSTOP  BIT(1),               /* STOP MONITOR             */
*      20 MPLRSV01 BIT(1),               /* RESERVED                 */
*      20 MPLRSV02 BIT(1),               /* RESERVED                 */
*      20 MPLRSV03 BIT(1),               /* RESERVED                 */
*      20 MPLRSV04 BIT(1),               /* RESERVED                 */
*
*     15 MPLPROC2    BIT(8),             /* SECOND BYTE OF PROCESSING
*                                           FLAGS                    */
*
*   10 MPLID CHAR(2),                    /* CONSOLE ID OR ASID       */
*
*   10 MPLTYPE      CHAR(2) BDY(WORD),   /* MONITOR TYPE FLAGS       */
*     15 MPLTYPE1    BIT(8),             /* FIRST BYTE OF MONITOR
*                                           TYPE FLAGS               */
*      20 MPLJBNM  BIT(1),               /* MONITOR JOBNAMES         */
*      20 MPLSTAT  BIT(1),               /* MONITOR STATUS           */
*      20 MPLRSV05 BIT(1),               /* RESERVED                 */
*      20 MPLRSV06 BIT(1),               /* RESERVED                 */
*      20 MPLRSV07 BIT(1),               /* RESERVED                 */
*      20 MPLSESS  BIT(1),               /* MONITOR SESSIONS         */
*      20 MPLRSV08 BIT(1),               /* RESERVED                 */
*      20 MPLRSV09 BIT(1),               /* RESERVED                 */
*
*     15 MPLTYPE2    BIT(8),             /* RESERVED                 */
*
*   10 MPLRSV10     CHAR(2) MPL9999      /* RESERVED                 */
*
*%MPLALL = '''11000100''B';              /* BIT MASK FOR ALL MONITOR
*                                           FUNCTIONS                */
*
*%MPLSIZE = 'LENGTH(MPL)';               /* GET SIZE OF MPL          */
./ ADD NAME=IEZMSGRQ
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/171/341040         @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          NAME: IEZMSGRQ                                  @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          FUNCTION:                                       @Y30LB22*/
 /*          MESSAGE DEFINITION PARAMETER LIST.  THIS LIST   @Y30LB22*/
 /*          IS PASSED TO ICBVOP00 TO REQUEST THE PRINTING   @Y30LB22*/
 /*          OF A MESSAGE.                                   @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  CHANGE LEVEL = 0                       #Y30LB22*/
 /*                                                          #Y30LB22*/
 /********************************************************************/

 /********************************************************************/
  DCL 1 MSGRQ BDY(WORD),      /* MSG REQ PARM LIST           @Y30LB22*/
         2 MSGID FIXED(31),   /* MESSAGE ID IN BINARY        @Y30LB22*/
         2 MSGRPLV PTR(31),   /* ADDRESS OF THE RPLV         @Y30LB22*/
         2 MSGRLEN BIT(8),    /* LENGTH OF OPERATOR REPLY    @Y30LB22*/
         2 MSGREPLY PTR(24),  /* ADDR OF AREA FOR OP. REPLY  @Y30LB22*/
         2 MSGLEN1 BIT(8),    /* LENGTH OF FIRST COMPLETION  @Y30LB22
                                 INFORMATION                 @Y30LB22*/
         2 MSGTEXT1 PTR(24),  /* ADDR OF FIRST COMP. INF     @Y30LB22*/
         2 MSGLEN2 BIT(8),    /* LENGTH OF SECOND COMP. INF  @Y30LB22*/
         2 MSGTEXT2 PTR(24),  /* ADDR OF SECOND COMP. INF    @Y30LB22*/
         2 MSGLEN3 BIT(8),    /* LENGTH OF THIRD COMP. INF   @Y30LB22*/
         2 MSGTEXT3 PTR(24),  /* ADDR OF THIRD COMP. INF     @Y30LB22*/
         2 MSGLEN4 BIT(8),    /* LENGTH OF FOURTH COMP. INF  @Y30LB22*/
         2 MSGTEXT4 PTR(24),  /* ADDR OF FOURTH COMP. INF    @Y30LB22*/
         2 MSGLEN5 BIT(8),    /* LENGTH OF FIFTH COMP. INF   @Y30LB22*/
         2 MSGTEXT5 PTR(24);  /* ADDR OF FIFTH COMP. INF     @Y30LB22*/
./ ADD NAME=IEZMVR
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          NAME: IEZMVR                                    @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          FUNCTION:                                       @Y30LB22*/
 /*                  MAPS THE REQUEST BLOCK FOR A MODIFY     @Y30LB22*/
 /*                  BASE OR COPY VOLUME RECORD REQUEST.     @Y30LB22*/
 /*                  REGISTER 1 MUST POINT TO THE REQUEST    @Y30LB22*/
 /*                  BLOCK WHEN THE REQUEST IS EXECUTED      @Y30LB22*/
 /*                  (MACRO ICBVVIC - SVC 126).              @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                          @Y30LB22*/
 /********************************************************************/
   /* CONSTANTS                                              @Y30LB22*/
    DCL MVRLEN FIXED(15) INIT (LENGTH(MVR)); /* LENGTH       @Y30LB22
                                           OF REQUEST BLOCK  @Y30LB22*/
    DCL MVROP  BIT(8) CONSTANT('85'X); /* REQUEST OP CODE    @Y30LB22*/
   /* MAPPING MACRO                                          @Y30LB22*/
     DCL
       1        MVR BASED(MVRPTR) BDY(WORD),               /*@Y30LB22*/
         2      MVRLNGTH  FIXED(31), /* LENGTH OF REQ. BLK   @Y30LB22*/
         2      MVRCODE   CHAR(4),   /* OPERATION IDENTIFIER @Y30LB22*/
           3    MVROPCD   BIT(8),    /* OP CODE              @Y30LB22*/
           3    *         CHAR(3),   /* UNUSED               @Y30LB22*/
         2      MVRFLAGA  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    MVRFLFOR  BIT(1),    /* MVRFOR IS SPECIFIED  @Y30LB22*/
           3    MVRFLGRO  BIT(1),    /* MVRGROUP  SPECIFIED  @Y30LB22*/
           3    MVRFLBAS  BIT(1),    /* MVRBVOL IS SPECIFIED @Y30LB22*/
           3    MVRFLDES  BIT(1),    /* MVRDES IS SPECIFIED  @Y30LB22*/
           3    MVRFLTO   BIT(1),    /* MVRTO IS SPECIFIED   @Y30LB22*/
           3    MVRFLCSN  BIT(1),    /* MVRCSN IS SPECIFIED  @Y30LB22*/
           3    MVRFLBK   BIT(1),    /* MVRBKUPN SPECIFIED   @Y30LB22*/
           3    MVRFLLAB  BIT(1),    /* MVRLABEL SPECIFIED   @Y30LB22*/
           3    MVRGEN    BIT(1),    /* GENERAL VOLUME       @Y30LB22*/
           3    MVRRSTD   BIT(1),    /* RESTRICTED VOLUME    @Y30LB22*/
           3    MVRNGRP   BIT(1),    /* CHANGE VOL TO NON-   @Y30LB22
                                        GROUPED              @Y30LB22*/
           3    MVRBKUP   BIT(1),    /* CHANGE COPY TO BCKUP @Y30LB22*/
           3    MVRNDESC  BIT(1),    /* NULLIFY DESCRIPTION  @Y30LB22*/
           3    MVRNEXPD  BIT(1),    /* NULLIFY EXP. DATE    @Y30LB22*/
           3    MVRSLMIS  BIT(1),    /* SET VOL. LABEL       @Y30LB22
                                        MISMATCH FLAG        @Y30LB22*/
           3    MVRCLMIS  BIT(1),    /* CLEAR VOL. LABEL     @Y30LB22
                                        MISMATCH FLAG        @Y30LB22*/
           3    MVRCIVCF  BIT(1),    /* CLEAR INCOMPLETE VOL @Y30LB22
                                        CREATION FLAG        @Y30LB22*/
           3    MVRCICPY  BIT(1),    /* CLEAR INCOMPLETE VOL @Y30LB22
                                        COPY FLAG            @Y30LB22*/
           3    *         BIT(14),   /* UNUSED               @Y30LB22*/
         2      MVRBVOL   CHAR(6),   /* VOLID OF BASE OR     @Y30LB22
                                        COPY RECORD          @Y30LB22
                                        TO BE MODIFIED       @Y30LB22*/
         2      MVRFOR    FIXED(15), /* NO. OF DAYS USED IN  @Y30LB22
                                        CALCULATING EXP DATE @Y30LB22*/
         2      MVRGROUP  CHAR(8),   /* USER SPECIFIED MSVGP @Y30LB22*/
         2      MVRDES    CHAR(30),  /* DESCRIPTIVE INFO     @Y30LB22*/
         2      MVRTO     CHAR(4),   /* JULIAN EXP. DATE     @Y30LB22*/
         2      MVRCSN    CHAR(12),  /* CARTRIDGE SERIAL     @Y30LB22
                                        NUMBER OF THE VOL    @Y30LB22*/
         2      MVRBKUPN  FIXED(8),  /* MAX NO. OF ALLOWED   @Y30LB22
                                        BACKUP COPIES        @Y30LB22*/
         2      MVRBLNK1  CHAR(1),   /* BLANK                @Y30LB22*/
         2      MVRLABEL  CHAR(6),   /* SER. NO IN SOFTWARE  @Y30LB22*/
                                     /* LABEL                @Y30LB22*/
         2      *         CHAR(6);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZNGVR
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZNGVR                                   @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION: MAPPING MACRO                         @Y30LB22*/
 /*                  THE NONGROUP RECORD PROVIDES A MEANS OF ACCESS   */
 /*                  TO THE BASE VOLUME RECORDS OF THE FIRST AND LAST */
 /*                  MASS STORAGE VOLUMES IN THE NON-GROUPED CHAIN.   */
 /*                                                          @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                                   */
 /********************************************************************/
     DCL
       1        NGVR BASED(NGVRPTR) BDY(WORD),
         2      NGVNAME   CHAR(13),  /* KEY FOR THE NONGROUP
                                        RECORD               @Y30LB22*/
         2      NGVRTYPE  BIT(16),   /* RECORD TYPE INDICATOR
                                        FLAGS                @Y30LB22*/
           3    NGVRES1   BIT(7),    /* RESERVED             @Y30LB22*/
           3    NGVHDR    BIT(1),    /* NONGROUP RECORD      @Y30LB22*/
           3    NGVRES2   BIT(8),    /* RESERVED             @Y30LB22*/
         2      *         CHAR(2),   /* UNUSED               @Y30LB2 */
         2      NGVFVOL   CHAR(6),   /* VOL SER OF 1ST VOL   @Y30LB22*/
         2      NGVLVOL   CHAR(6),   /* VOL SER OF LAST VOL  @Y30LB22*/
         2      *         CHAR(1),   /* UNUSED               @Y30LB22*/
         2      NGVNOVOL  FIXED(15), /* NUMBER OF VOLUMES IN @Y30LB22
                                        NONGROUP CHAIN       @Y30LB22*/
         2      *         CHAR(8);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZRPLV
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZRPLV                                   @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION:                                                */
 /*          A MSVC REQUEST PARAMETER LIST IS CREATED BY     @Y30LB22*/
 /*          ICBVPI00, ICBVIN01, ICBVIN02, OR ICBVQM00       @Y30LB22*/
 /*          TO HAVE A SERVICE FUNCTION PROCESSED BY         @Y30LB22*/
 /*          THE MSVC SUBTASK                                @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 2                       @OZ09545*/
 /*      CHANGE 01 04/14/76 ADD NEW FIELD TO SAVE RCODE      @OZ09545*/
 /*      CHANGE 02 08/25/76 RECORD THE DATE THE RPLV WAS     @ZA13484*/
 /*                         CREATED BY ICBVQM00 FOR RECOVERY @ZA13484*/
 /*                                                          @Y30LB22*/
 /********************************************************************/
    /* CONSTANTS                                             @Y30LB22*/
 DCL RPLVREAD  FIXED(8) CONSTANT(0); /* READ REQUEST         @Y30LB22*/
 DCL RPLVPUT   FIXED(8) CONSTANT(1); /* PUT REQUEST          @Y30LB22*/
 DCL RPLVDEL   FIXED(8) CONSTANT(5); /* DELETE REQUEST       @Y30LB22*/
 DCL RPLVENDR  FIXED(8) CONSTANT(4); /* END REQUEST          @Y30LB22*/
    /* MAPPING MACRO                                         @Y30LB22*/
 DCL  1        RPLV      BASED(RPLVPTR) BDY(WORD),         /*@Y30LB22*/
        2      RPLVQPTR  PTR(31),   /* CHAIN AHEAD POINTER   @Y30LB22*/
        2      RPLVECB   PTR(31),   /* ECB                   @Y30LB22*/
        2      RPLTCBPR  PTR(31),   /* VS/1 TCB POINTER      @Y30LB22*/
          3    RPLASCBP  PTR(31),   /* VS/2 ASCB POINTER     @Y30LB22*/
        2      RPLVVICB  PTR(31),   /* VVICB POINTER         @Y30LB22*/
        2      RPLVRSV1  PTR(31),   /* RESERVED FOR SUBTASK  @Y30LB22
                                       POST                  @Y30LB22*/
        2      RPLVRSV2  PTR(31),   /* RESERVED FOR SUBTASK  @Y30LB22
                                       POST                  @Y30LB22*/
        2      RPLVRSV3  PTR(31),   /* RESERVED FOR SUBTASK  @Y30LB22
                                       POST                  @Y30LB22*/
        2      RPLFLAGA  CHAR(2),   /* STATUS FLAGS          @Y30LB22*/
          3    RPLFTIME  BIT(1),    /* 1ST TIME FOR THIS REQ @Y30LB22
                                       IF BIT 0=0 (OFF)      @Y30LB22
                                       2ND TIME FOR THIS REQ @Y30LB22
                                       IF BIT 0=1 (ON)       @Y30LB22*/
          3    RPLVPOST  BIT(1),    /* ECB TO BE POSTED      @Y30LB22*/
          3    RPLVPROG  BIT(1),    /* REQUEST IN PROGRESS   @Y30LB22*/
          3    RPLVCOMP  BIT(1),    /* REQUEST LST COMPLETED @Y30LB22*/
          3    RPLVVIN   BIT(1),    /* VIN CALL TO VSP       @Y30LB22*/
          3    RPLVVOP   BIT(1),    /* VOP CALL TO VJL       @Y30LB22*/
          3    RPLJRCVY  BIT(1),    /* JRNL RECOVERY RPLV    @Y30LB22*/
          3    RPLVJRNL  BIT(1),    /* RPLV JOURNALLED       @Y30LB22*/
          3    RPLVRES1  BIT(8),    /* RESERVED              @Y30LB22*/
        2      RPLVTLEN  FIXED(15), /* TOTAL RPLV LENGTH     @Y30LB22*/
        2      RPLRCODE  BIT(16),   /* REASON CODE           @Y30LB22*/
        2      RPLVRETC  BIT(16),   /* RETURN CODE           @Y30LB22*/
        2      RPLRMSCC  BIT(16),   /* REASON CODE           @OZ09545*/
        2      RPLVDATE  CHAR(4),   /* DATE RPLV CREATED     @ZA13484*/
        2      *         CHAR(14),  /* UNUSED                @OZ09545*/
        2      RPLVSAM   CHAR(76)  BDY(WORD), /*VSAM I/O RPL @Y30LB22*/
          3    *         CHAR(2),   /* RESERVED              @Y30LB22*/
          3    RPLVTYP   PTR(8),    /* I/O TYPE              @Y30LB22*/
          3    *         CHAR(21),  /* RESERVED              @Y30LB22*/
          3    RPLVACB   PTR(31),   /* ACB POINTER           @Y30LB22*/
          3    *         CHAR(4),   /* RESERVED              @Y30LB22*/
          3    RPLVBUF   PTR(31),   /* DATA BUFFER PTR       @Y30LB22*/
          3    RPLVKEY   PTR(31),   /* KEY POINTER           @Y30LB22*/
          3    RPLVOPT   CHAR(4),   /* I/O OPTIONS           @Y30LB22*/
            4  RPLVLOC   BIT(1),    /* MOVE MODE IF OFF      @Y30LB22
                                       LOCATE MODE IF ON     @Y30LB22*/
            4  RPLVDIR   BIT(1),    /* DIRECT KEY PROCESSING #Y30LB22*/
            4  RPLVNEXT  BIT(1),    /* NEXT SEQUENTIAL KEY   #Y30LB22
                                       PROCESSING            @Y30LB22*/
            4  *         BIT(2),    /* RESERVED              @Y30LB22*/
            4  RPLVKGE   BIT(1),    /* SEARCH KEY GT/EQ      @Y30LB22
                                       SEARCH KEY EQ IF OFF  @Y30LB22*/
            4  *         BIT(8),    /* RESERVED              @Y30LB22*/
            4  RPLVUPD   BIT(1),    /* READ/PUT UPDATE MODE  @Y30LB22
                                       RETRIEVAL-READ OR     @Y30LB22
                                       NEW-PUT IF OFF        @Y30LB22*/
          3    *         CHAR(4),   /* RESERVED              @Y30LB22*/
          3    RPLVRLN   FIXED(31), /* LENGTH OF RECORD      @Y30LB22*/
          3    RPLVBLN   FIXED(31), /* LENGTH OF DATA BUFFER @Y30LB22*/
        2      RPLVUTIL  CHAR(*) BDY(WORD);/* SVC 126 REQUEST BLOCK
                                              AND POSSIBLY REQUEST
                                              BLOCK EXTENSION OR
                                              JFCB.          @Y30LB22*/
./ ADD NAME=IEZRVR
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          NAME: IEZRVR                                    @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          FUNCTION:                                       @Y30LB22*/
 /*                  MAPS THE REQUEST BLOCK FOR A REMOVE     @Y30LB22*/
 /*                  BASE OR COPY VOLUME RECORD REQUEST      @Y30LB22*/
 /*                  REGISTER 1 MUST POINT TO THE REQUEST    @Y30LB22*/
 /*                  BLOCK WHEN THE REQUEST IS EXECUTED      @Y30LB22*/
 /*                  (MACRO ICBVVIC - SVC 126).              @Y30LB22*/
 /*                                                          @Y30LB22*/
 /*          STATUS:  CHANGE LEVEL = 0                       @Y30LB22*/
 /*                                                          @Y30LB22*/
 /********************************************************************/
    /*                CONSTANTS                              @Y30LB22*/
     DCL  RVRLEN  FIXED(15) INIT (LENGTH(RVR)); /* LENGTH OF @Y30LB22
                                              REQUEST BLOCK  @Y30LB22*/
     DCL  RVROP   BIT(8) CONSTANT('81'X); /*REQUEST OP CODE  @Y30LB22*/
 /********************************************************************/
    /*               MAPPING MACRO                           @Y30LB22*/
 /********************************************************************/
     DCL
       1        RVR BASED(RVRPTR) BDY(WORD),               /*@Y30LB22*/
         2      RVRLNGTH  FIXED(31), /* LENGTH OF REQ BLK    @Y30LB22*/
         2      RVRCODE   CHAR(4),   /* OPERATION IDENTIFIER @Y30LB22*/
           3    RVROPCD   BIT(8),    /* OPCODE               @Y30LB22*/
           3    *         CHAR(3),   /* UNUSED               @Y30LB22*/
         2      RVRVOLID  CHAR(6),   /* SER NO OF VOL WHOSE  @Y30LB22
                                        REC IS TO BE REMOVED @Y30LB22*/
         2      RVRBLNK1  CHAR(1),   /* BLANK                @Y30LB22*/
         2      RVRCPYID  FIXED(8),  /* ID OF A COPY RECORD  @Y30LB22*/
         2      RVRFLAGA  BIT(32),   /* INDICATOR FLAGS      @Y30LB22*/
           3    RVRBASEV  BIT(1),    /* THE BASE VOLUME REC  @Y30LB22
                                        IS TO BE REMOVED     @Y30LB22*/
           3    RVRCOPYV  BIT(1),    /* THE COPY VOLUME REC  @Y30LB22
                                        IS TO BE REMOVED     @Y30LB22*/
           3    *         BIT(30),   /* UNUSED               @Y30LB22*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZRVVI
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/171/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZRVVI                                   @Y30LB22*/
 /*                                                                   */
 /*          FUNCTION:                                       @Y30LB22*/
 /*          MAPS THE REQUEST BLOCK FOR A READ  RECORD       @Y30LB22*/
 /*          REQUEST.  REGISTER 1 MUST POINT TO THE REQUEST  @Y30LB22*/
 /*          BLOCK WHEN THE REQUEST IS EXECUTED              @Y30LB22*/
 /*          (MACRO ICBVVIC - SVC 126).                      @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 03                      @ZDR2053*/
 /*                                                          @Z40LB66*/
 /* CHANGE 01  2/14/75  ADD RVVCIRCD FLAG                    @Z40LB66*/
 /* CHANGE 02  4/16/75  ADD RVVCPURC FLAG                    @Z40LB66*/
 /* CHANGE 03  7/4/76   ADD PLACE HOLDER FLAGS               @ZDR2053*/
 /*                                                                   */
 /********************************************************************/
     /* CONSTANTS                                            @Y30LB22*/
     DCL    RVVLEN   FIXED(15) INIT(LENGTH(RVVI)); /*        @Y30LB22
                                        REQUEST BLOCK LENGTH @Y30LB22*/
     DCL    RVVOP    BIT(8)    CONSTANT('87'X); /* REQUEST   @Y30LB22
                                                   OP CODE   @Y30LB22*/
     /* MAPPING MACRO                                        @Y30LB22*/
     DCL
       1        RVVI BASED(RVVIPTR) BDY(WORD),             /*@Y30LB22*/
         2      RVVLNGTH  FIXED(31), /* LENGTH OF REQ. BLK   @Y30LB22*/
         2      RVVOPCOD  CHAR(4),   /* OPERATION IDENTIFIER @Y30LB22*/
           3    RVVCODE   BIT(8),    /* OPCODE               @Y30LB22*/
           3    *         CHAR(3),   /* UNUSED               @Y30LB22*/
         2      RVVOLUME  CHAR(6),   /* VOLID OF RECORD TO   @Y30LB22
                                         BE RETRIEVED        @Y30LB22*/
         2      RVVGROUP  CHAR(8),   /* GROUP NAME OF GRP    @Y30LB22
                                        REC. TO BE RETRIEVED @Y30LB22*/
         2      RVVARLN   FIXED(15), /* RESERVED FOR SUBTASK @Y30LB22*/
         2      RVVAREA   PTR(31),   /* RESERVED FOR SUBTASK @Y30LB22*/
         2      *         CHAR(2),   /* UNUSED               @Y30LB22*/
         2      RVVBUFLN  FIXED(15), /* LENGTH OF CALLER     @Y30LB22
                                        PROVIDED REC BUFFER  @Y30LB22*/
         2      RVVRTBUF  PTR(31),   /* PTR TO THE CALLER    @Y30LB22
                                        PROVIDED REC BUFFER  @Y30LB22*/
         2      RVVEXPIR  FIXED(15), /* SPECIFIED NO OF DAYS @Y30LB22*/
         2      RVVCDATE  CHAR(4),   /* DATE VOL WAS COPIED  @Y30LB22*/
         2      RVVBLNK1  CHAR(1),   /* BLANK                @Y30LB22*/
         2      RVVRDSEQ  FIXED(8),  /* SEQ. NO. OF THE COPY @Y30LB22*/
         2      RVVRDCSN  CHAR(12),  /* SER. NO. OF CART.    @Y30LB22*/
         2      RVVCPYID  FIXED(8),  /* COPY RECORD ID       @Y30LB22*/
         2      RVVDUPID  FIXED(8),  /* DUPLICATE RECORD ID  @Y30LB22*/
         2      RVVFLAGA  BIT(48),   /* INDICATOR FLAGS      @Y30LB22*/
           3    RVVRMODE  BIT(8),    /* TYPE OF LOCATE       @Y30LB22
                                        TO PERFORM           @Y30LB22*/
             4  RVVRDR    BIT(1),    /* READ RECORD DIRECT   @Y30LB22*/
             4  RVVRDNR   BIT(1),    /* READ NEXT RECORD     @Y30LB22*/
             4  RVVRDCH   BIT(1),    /* READ RECORD CHAIN    @Y30LB22*/
             4  *         BIT(5),    /* UNUSED               @Y30LB22*/
           3    RVVCHAIN  BIT(8),    /* INDICATES TYPE CHAIN @Y30LB22*/
             4  RVVGPVOL  BIT(1),    /* LOC A GROUP RECORD   @Y30LB22*/
             4  RVVNGVOL  BIT(1),    /* LOC NONGROUP RECORD  @Y30LB22*/
             4  *         BIT(6),    /* UNUSED               @Y30LB22*/
           3    RVVRDRCD  BIT(8),    /* INDICATE TYPE RECORD @Y30LB22*/
             4  RVVBVRCD  BIT(1),    /* LOC. A BASE VOL REC. @Y30LB22*/
             4  RVVGRPRC  BIT(1),    /* LOC A GROUP RECORD   @Y30LB22*/
             4  RVVCPYRC  BIT(1),    /* LOC A COPY VOL REC.  @Y30LB22*/
             4  RVVDUPRC  BIT(1),    /* LOC A DUPL VOL REC.  @Y30LB22*/
             4  RVVRUNKN  BIT(1),    /* READ AN UNKNOWN REC  @Y30LB22*/
             4  RVVCIRCD  BIT(1),    /* READ CART INDEX REC. @Z40LB66*/
             4  RVVCPURC  BIT(1),    /* READ CPU RECORD      @Z40LB66*/
             4  RVVALL    BIT(1),    /* READ VOLUME & PLACE  @ZDR2053*/
                                     /* HOLDER RECORDS       @ZDR2053*/
           3    RVVRTEST  BIT(8),    /* TEST TO MAKE         @Y30LB22*/
             4  RVVEXPDT  BIT(1),    /* EXP DATE SPECIFIED   @Y30LB22*/
             4  RVVTHOLD  BIT(1),    /* PAST THRESHOLD REQ'D @Y30LB22*/
             4  RVVGSVOL  BIT(1),    /* GENERAL USE VOL REQ  @Y30LB22*/
             4  RVVRSTD   BIT(1),    /* RESTRICTED VOL REQ'D @Y30LB22*/
             4  RVVINACT  BIT(1),    /* INACTIVE VOL REQ'D   @Y30LB22*/
             4  RVVACTV   BIT(1),    /* ACTIVE VOLUME REQ'D  @Y30LB22*/
             4  RVVDVOL   BIT(1),    /* DUP VOLID ONLY       @Y30LB22
                                        SPECIFIED            @Y30LB22*/
             4  RVVBPLHD  BIT(1),    /* BASE PLACE HOLDER    @ZDR2053*/
           3    RVVCPYTP  BIT(8),    /* TYPE OF COPY RECORD  @Y30LB22
                                         TO BE RETURNED      @Y30LB22*/
             4  RVVLBKUP  BIT(1),    /* LATEST BKUP REC REQ  @Y30LB22*/
             4  RVVOBKUP  BIT(1),    /* OLDEST BKUP REC REQ  @Y30LB22*/
             4  RVVLCOPY  BIT(1),    /* LATEST COPY REC REQ  @Y30LB22*/
             4  RVVCPLHD  BIT(1),    /* COPY PLACE HOLDER    @ZDR2053*/
             4  *         BIT(4),    /* UNUSED               @ZDR2053*/
           3    RVVSPEC   BIT(8),    /* SPECIFICATION FIELD  @Y30LB22*/
             4  RVVSGRP   BIT(1),    /* RVVGROUP SPECIFIED   @Y30LB22*/
             4  RVVSEXP   BIT(1),    /* RVVEXPIR SPECIFIED   @Y30LB22*/
             4  RVVSDTE   BIT(1),    /* RVVCDATE SPECIFIED   @Y30LB22*/
             4  RVVSSEQ   BIT(1),    /* RVVRDSEQ SPECIFIED   @Y30LB22*/
             4  RVVSCSN   BIT(1),    /* RVVRDCSN SPECIFIED   @Y30LB22*/
             4  RVVSCPY   BIT(1),    /* RVVCPYID SPECIFIED   @Y30LB22*/
             4  RVVSDUP   BIT(1),    /* RVVDUPID SPECIFIED   @Y30LB22*/
             4  RVVSVOL   BIT(1),    /* RVVOLUME SPECIFIED   @Y30LB22*/
         2      *         CHAR(4);   /* UNUSED               @Y30LB22*/
./ ADD NAME=IEZSDGLS
*%GOTO  SDGPLS2;           /* MSSC STAGING DRIVE GROUP MACRO   @G18MB04
        MACRO
        IEZSDGLS
***************************************************************@G18MB04
*                                                              @G18MB04
*     MACCOMP        @G18MB04    SC1DP/BLOO19                  @G18MB04
*     MACSTAT        @G18MB04    75.344                        @G18MB04
*                                                              @G18MB04
*                 *****MAPPING MACRO *****                     @G18MB04
*                                                              @G18MB04
*       NAME     SDGLS    MSSC STAGING DRIVE GROUP LIST        @G18MB04
*                                                              @G18MB04
*     FUNCTION - THIS IS A LIST OF UNIT NAMES, ONE FOR EACH    @G18MB04
*                POSSIBLE STAGING DRIVE GROUP THAT COULD EXIST @G18MB04
*                IN A MASS STORAGE SYSTEM.                     @G18MB04
*                THESE ARE SORTED IN ORDER OF BEST CHOICE      @G18MB04
*                (LEAST BUSY) TO WORST CHOICE.                 @G18MB04
*                                                              @G18MB04
*     STATUS   - CHANGE LEVEL = 0                              @G18MB04
*                                                              @G18MB04
***************************************************************@G18MB04
SDGLS    DSECT               MSSC STAGING DRIVE GROUP LIST     @G18MB04
SDGNNBBB DS    30CL8         UNIT NAMES FOR SDGS               @G18MB04
SDGLGTH  EQU   *-SDGLS                                         @G18MB04
         ORG   SDGNNBBB                                        @G18MB04
SDG      DS    CL3           EBCDIC LITERALS SDG               @G18MB04
SDGNN    DS    CL2           EBCDIC NUMBER OF SDG              @G18MB04
SDGBBB   DS    CL3           EBCDIC BLANKS                     @G18MB04
         ORG   SDGBBB                                          @G18MB04
SDGIX    DS    AL3           FOR USE IN MSSC SORT              @G18MB04
         MEND                                                  @G18MB04
**/
*%SDGPLS2:;                                                /*@G18MB04*/
*/***********************************************************@G18MB04*/
*/*   MACCOMP        @G18MB04    SC1DP/BL0019                @G18MB04*/
*/*   MACSTAT        @G18MB04    75.344                      @G18MB04*/
*/*                                                          @G18MB04*/
*/*           ***** MAPPING MACRO *****                      @G18MB04*/
*/*                                                          @G18MB04*/
*/*   NAME    SDGLS     MSSC STAGING DRIVE GROUP LIST        @G18MB04*/
*/*                                                          @G18MB04*/
*/*  FUNCTION -  THIS IS A LIST OF UNIT NAMES, ONE FOR EACH  @G18MB04*/
*/*           POSSIBLE STAGING DRIVE GROUP THAT COULD EXIST  @G18MB04*/
*/*           IN A MASS STORAGE SYSTEM.                      @G18MB04*/
*/*           THESE ARE SORTED IN ORDER OF BEST CHOICE       @G18MB04*/
*/*           (LEAST BUSY) TO WORST CHOICE.                  @G18MB04*/
*/*                                                          @G18MB04*/
*/*   STATUS - CHANGE LEVEL = 0                              @G18MB04*/
*/*                                                          @G18MB04*/
*/***********************************************************@G18MB04*/
*    DCL 1 SDGLS BASED,           /*STAGING DRIVE GROUP LIST @G18MB04*/
*          2 SDGNNBBB(30) CHAR(8), /* UNIT NAMES FOR SDGS    @G18MB04*/
*            3 SDG CHAR(3),        /* EBCDIC LITERALS SDG    @G18MB04*/
*            3 SDGNN CHAR(2),      /* EBCDIC NUMBER OF SDG   @G18MB04*/
*            3 SDGBBB CHAR(3),     /* EBCDIC BLANKS          @G18MB04*/
*              4 SDGIX FIXED(24);  /* FOR USE IN MSSC SORT   @G18MB04*/
*%SDGLGTH='LENGTH(SDGLS)';         /* SDG LIST LENGTH        @G18MB04*/
./ ADD NAME=IEZSENSE
 /********************************************************************/
 /*     MACCOMP  Z40LB02                                             */
 /*     MACSTAT  Z40LB02                                             */
 /*                                                                  */
 /*     NAME     IEZSENSE                                            */
 /*                                                                  */
 /*     FUNCTION-MAPS THE SENSE DATA AS IT APPEARS IN STORAGE        */
 /*                                                                  */
 /*     STATUS CHANGE LEVEL=0                                        */
 /********************************************************************/
     /*SENSE DATA MAPPING                                    @Z40LB02*/
 DCL 1  EWOSNS BASED(SNSPTR),          /*STRUCTURE FOR 32    @Z40LB02
                                        BYTES OF SENSE DATA  @Z40LB02*/
         2 EWOSNS0 BIT(8),             /*SENSE BYTE 0        @Z40LB02*/
           3 CREJ BIT(1),              /*COMMAND REJECT      @Z40LB02*/
           3 INTV BIT(1),              /*INTERVENTION REQD   @Z40LB02*/
           3 BUSO BIT(1),              /*BUS OUT PARITY      @Z40LB02*/
           3 EQU BIT(1),               /*EQUIPMENT CHECK     @Z40LB02*/
           3 *   BIT(1),               /*NOT USED            @Z40LB02*/
           3 HRET BIT(1),              /*HOST RETRY          @Z40LB02*/
           3 PERR BIT(1),              /*PERMANENT ERROR     @Z40LB02*/
           3 ENV BIT(1),               /*ENVIRONMENTAL DATA  @Z40LB02*/
         2 EWOSSID BIT(16),            /*SSID FIELD          @Z40LB02*/
           3 EWOSNS1 BIT(8),           /*SENSE BYTE 1        @Z40LB02*/
             4 CEM BIT(1),             /*CE MESSAGE          @Z40LB02*/
             4 SUU BIT(1),             /*SUBSYSTEM UNIT      @Z40LB02
                                         UNUSABLE            @Z40LB02*/
             4  *   BIT(2),            /*MSG TYPE ETC        @Z40LB02*/
             4  EWOSSID1  BIT(4),      /*1ST CHAR OF SSID    @Z40LB02*/
           3 EWOSNS2 BIT(8),           /*SENSE BYTE 2        @Z40LB02*/
             4  EWOSSID2  BIT(8),      /*2-3 CHARS OF SSID   @Z40LB02*/
         2 EWOSNS3 BIT(8),             /*SENSE BYTE 3        @Z40LB02*/
           3 FORMAT0 BIT(1),           /*FORMAT 0 - '80'X    @Z40LB02*/
           3 FORMAT1 BIT(1),           /*FORMAT 1 - '40'X    @Z40LB02*/
           3 FORMAT2 BIT(1),           /*FORMAT 2 - '20'X    @Z40LB02*/
           3 FORMAT3 BIT(1),           /*FORMAT 3 - '10'X    @Z40LB02*/
           3 FORMAT4 BIT(1),           /*FORMAT 4 - '08'X    @Z40LB02*/
           3 FORMAT5 BIT(1),           /*FORMAT 5 - '04'X    @Z40LB02*/
         2 EWOVOLID CHAR(6),           /*BYTES 4-9 -VOLID    @Z40LB02*/
           3 EWOSNS4 BIT(8),           /*SENSE BYTE 4        @Z40LB02*/
             4 *    BIT(1),            /*NOT USED            @Z40LB02*/
             4 INTVREQ BIT(1),         /*INTERVENTION REQD   @Z40LB02*/
             4 CHBOPAR BIT(1),         /*BUS OUT PAR         @Z40LB02*/
             4 EQCHK BIT(1),           /*EQUIPMENT CHECK     @Z40LB02*/
             4 DATACHK BIT(1),         /*DATA CHECK          @Z40LB02*/
           3 EWOSNS5 BIT(8),           /*SENSE BYTE 5        @Z40LB02*/
             4 *     BIT(1),           /*BIT NOT USED        @Z40LB02*/
             4 RECON BIT(1),           /*RECONFIGURATION BIT @Z40LB02*/
           3 EWOSNS6 BIT(8),           /*SENSE BYTE 6        @Z40LB02*/
           3 EWOSNS7 BIT(8),           /*SENSE BYTE 7        @Z40LB02*/
           3 EWOSNS8 BIT(8),           /*SENSE BYTE 8        @Z40LB02*/
           3 EWOSNS9 BIT(8),           /*SENSE BYTE 9        @Z40LB02*/
         2 EWOSNS10 BIT(8),            /*TABLE 10 IF AVAIL   @Z40LB02*/
         2 EWOSNS11 BIT(8),            /*SENSE BYTE 11       @Z40LB02*/
           3 EWOCHECK BIT(8),          /*EQ OR DATA CHECK    @Z40LB02*/
             4 EWOMSGCD BIT(8),        /*MESSAGE CODE        @Z40LB02*/
         2 EWOSNS12 BIT(8),            /*TERMINATION CODE    @Z40LB02*/
           3 EWOCCOND BIT(4),          /*THIS VALUE MAY BE   @Z40LB02
                                         0, A, OR C          @Z40LB02*/
           3 EWOCNUM BIT(4),           /*CASE NUMBER         @Z40LB02*/
         2 EWOSNS13 BIT(8),            /*SENSE BYTE 13       @Z40LB02*/
         2 EWOLZYX FIXED(16),          /*LZYX VALUE          @Z40LB02*/
           3 EWOLZYX1 BIT(8),          /*MSF/ZY VALUE        @Z40LB02*/
             4 MSFVALUE BIT(2),        /*MSF VALUE           @Z40LB02*/
             4 ZVALUE BIT(1),          /*Z VALUE             @Z40LB02*/
             4 YVALUE BIT(5),          /*Y VALUE             @Z40LB02*/
           3 XVALUE BIT(8),            /*X VALUE             @Z40LB02*/
         2 EWOCSN CHAR(12),            /*CARTRIDGE SERIAL    @Z40LB02
                                         NUMBER-BYTES 16
                                         THRU 27             @Z40LB02*/
           3 EWOSNS16 CHAR(1),         /*SENSE BYTE 16       @Z40LB02*/
           3 EWOSNS17 CHAR(1),         /*SENSE BYTE 17       @Z40LB02*/
           3 EWOSNS18 CHAR(1),         /*SENSE BYTE 18       @Z40LB02*/
           3 EWOSNS19 CHAR(1),         /*SENSE BYTE 19       @Z40LB02*/
           3 EWOSNS20 CHAR(1),         /*SENSE BYTE 20       @Z40LB02*/
           3 EWOSNS21 CHAR(1),         /*SENSE BYTE 21       @Z40LB02*/
           3 EWOSNS22 CHAR(1),         /*SENSE BYTE 22       @Z40LB02*/
           3 EWOSNS23 CHAR(1),         /*SENSE BYTE 23       @Z40LB02*/
           3 EWOSNS24 CHAR(1),         /*SENSE BYTE 24       @Z40LB02*/
           3 EWOSNS25 CHAR(1),         /*SENSE BYTE 25       @Z40LB02*/
           3 EWOFSC CHAR(2),           /*FAULT SYMP CODE     @Z40LB02*/
             4 EWOSNS26 CHAR(1),       /*SENSE BYTE 26       @Z40LB02*/
             4 EWOSNS27 CHAR(1),       /*SENSE BYTE 27       @Z40LB02*/
         2 EWOCYL CHAR(4),             /*SENSE BYTES 28-31   @Z40LB02
                                         WILL CONTAIN CYL    @Z40LB02
                                         IF AVAILABLE        @Z40LB02*/
           3 CCHHR CHAR(4),            /*CCHHR VALUE         @Z40LB02*/
             4 EWOCC CHAR(2);          /*CYLINDER INFO       @Z40LB02*/
./ ADD NAME=IEZSGP
 /********************************************************************/
 /*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
 /*          MACSTAT  Y30LB22          74/170/341040         @Y30LB22*/
 /*                                                                   */
 /*          NAME: IEZSGP                                             */
 /*                                                                   */
 /*          FUNCTION:                                                */
 /*                  MAPS THE REQUEST BLOCK FOR A SCRATCH    @Y30LB22*/
 /*                  GROUP RECORD REQUEST.  REGISTER         @Y30LB22*/
 /*                  1 MUST POINT TO THE REQUEST BLOCK WHEN  @Y30LB22*/
 /*                  THE REQUEST IS EXECUTED (MACRO ICBVVIC  @Y30LB22*/
 /*                  - SVC 126).                             @Y30LB22*/
 /*                                                                   */
 /*          STATUS:  CHANGE LEVEL = 0                                */
 /*                                                                   */
 /********************************************************************/
    /*                 CONSTANTS                             @Y30LB22*/
     DCL  SGPLEN  FIXED(15) INIT (LENGTH(SGP)); /* LENGTH OF @Y30LB22
                                           REQUEST BLOCK     @Y30LB22*/
     DCL  SGPOP BIT(8) CONSTANT('84'X);   /*REQ. OP CODE     @Y30LB22*/
    /*                MAPPING MACRO                          @Y30LB22*/
 DCL
    1        SGP BASED(SGPPTR) BDY(WORD),                  /*@Y30LB22*/
       2     SGPLNGTH  FIXED(31), /* LENGTH OF REQUEST BLOCK @Y30LB22*/
       2     SGPCODE   CHAR(4),   /* OPERATION IDENTIFIER    @Y30LB22*/
          3  SGPOPCD   BIT(8),    /* OP CODE                 @Y30LB22*/
          3  *         CHAR(3),   /* UNUSED                  @Y30LB22*/
       2      SGPGROUP  CHAR(8),  /* NAME OF USER DEFINED    @Y30LB22
                                     GROUP                   @Y30LB22*/
       2      *         CHAR(4);  /* UNUSED                  @Y30LB22*/
./ ADD NAME=IEZSSC
*%GOTO   ICBPLS2;     /* MAPPING MACRO                         @Y30LB04
         MACRO
         IEZSSC
************************************************************   @Y30LB04
*              ****** MAPPING MACRO *****                      @Y30LB04
*        IEZSSC - CONTROL BLOCK FOR MSSC                       @Y30LB04
*                                                              @Y30LB04
*        CHANGE ACTIVITY - ZD00046                             @ZD00046
*                          G24LB02                             @G24LB02
*          CHANGE 02 09/15/77 ADD ICBVSCRA AND ICBRESV FIELDS  @ZA24770
*          CHANGE 03 10/10/77 ADD ICBVVOLST TO ELIM AQR        @ZA27588
*                                                              @ZD00046
************************************************************   @Y30LB04
ICB2SSCB DSECT                                                 @Y30LB04
ICBSSNAM DS    CL8           CONTROL BLOCK ACRONYM             @ZM30190
ICBECB   DS    F             MSC ATTENTION ECB                 @Y30LB04
ICBACTV  DS    F             MSC ACTIVITY ECB                  @Y30LB04
ICBCOM   DS    F             MSC COMTASK ECB                   @Y30LB04
ICBIOR   DS    F             ECB FOR I/O RESTART               @Y30LB04
ICBCOMQ  DS    F             MSC COMTASK QUEUE PTR             @Y30LB04
ICBPUCB  DS    F             MSC PRIMARY UCB PTR               @Y30LB04
ICBAUCB  DS    F             MSC ALTERNATE UCB PTR             @Y30LB04
ICBQHEAD DS    F             MSSC RESPONSE QUEUE PTR           @Y30LB04
ICBTCB   DS    F             MSSC TASK TCB PTR                 @Y30LB04
ICBVN02P DS    F             PTR TO MSVC INITIALIZATION RTNE   @Y30LB04
ICBOPT   DS    0F            MSS ACTIVITY BFFR PTR AFTER NIP   @Y30LB04
ICBNVT   DS    F             DURING NIP, ADDRESS OF THE NVT    @Y30LB04
ICBFLG   DS    0F            MSS FLAG WORD                     @Y30LB04
ICBFG1   DS    XL1           MSS FLAG BYTE 1                   @Y30LB04
ICBI     EQU   X'80'         MSS INITIALIZED                   @Y30LB04
ICBR     EQU   X'40'         MSS READY                         @Y30LB04
ICBV     EQU   X'20'         MSVC INITIALIZED                  @Y30LB04
ICBB     EQU   X'10'         MSS BROKEN BOX                    @G24LB02
ICBS     EQU   X'08'         MSSC SUSPENDED                    @G24LB02
ICBMSCMP EQU   X'04'         MSC MP OPERATION                  @G24LB05
ICBMSCA  EQU   X'02'         MSC ASYMMETRIC OPERATION          @G24LB05
ICBFG2   DS    XL1           MSSC FLAG BYTE 2                  @Y30LB04
ICBFG3   DS    CL2           MSSC RESERVED FOR FLAGS           @ZA24770
ICB2ACTP DS    F             MSSC ACTIVITY RTN PTR             @Y30LB04
ICBIORCI DS    F             PTR TO MSSC I/O RESTART ROUTINE   @Y30LB04
ICBMEP   DS    F             PTR TO MSSC MOUNT EQUALZN RTNE    @Y30LB04
ICBSIOP  DS    F             PTR TO MSSC I/O DRIVER FRONT END  @Y30LB04
ICBVVIC  DS    F             MSSC MSVC PTR                     @Y30LB04
ICBVVICB DS    F             ADDR OF MSVC CONTROL BLOCK        @Y30LB04
ICBSRBP  DS    F             POINTER TO SRB FOR MSSC           @Y30LB04
ICBIPRGA DS    F             PTR TO MSSC I/O DRVR PRGE RTNE    @Y30LB04
ICBIATNA DS    F             PTR TO MSSC ATTENTION ROUTINE     @Y30LB04
ICBSIOBP DS    F             PTR TO MSSC I/O DRVR BACK END     @Y30LB04
ICBAEAP  DS    F             PTR TO MSSC ABE ROUTINE           @Y30LB04
ICBRSVP  DS    F             RESERVED POINTER FIELD            @Y30LB04
ICBMSSC  DS    F             MSSC INTERNAL USE                 @G24LB02
ICBFAB   DS    F             PTR TO ALLOCATN SERVICE RTNE      @Y30LB04
ICBCPUID DS  CL5             MSC CPUID                         @ZA24770
ICBRESVD DS  CL1             RESERVED FOR FUTURE USE           @ZA24770
ICBSAMP  DS  CL2             MSSC SAMPLE TIME                  @ZA24770
ICBVSCRA DS    F             PTR TO VVIC SCREEN ROUTINE        @ZA24770
ICBVOLST DS    F             PTR TO VVIC TRACK ROUTINE         @ZA27588
ICBRESV  DS  CL20            RESERVED AREA FOR FUTURE USE      @ZA27588
ICBOTRC  DS  64F             MSSC ORDER TRACE AREA             @ZD00046
ICBLORD  DS  32F             LATEST MSSC ORDER                 @ZD00046
ICBLGTH  EQU   *-ICB2SSCB    LENGTH OF CONTROL BLOCK           @Y30LB04
         MEND                                                @Y30LB04*/
*%ICBPLS2:;                                                /*@Y30LB04*/
*/***********************************************************@Y30LB04*/
*/*           ***** MAPPING MACRO *****                      @Y30LB04*/
*/*     IEZSSC - CONTROL BLOCK FOR MSSC                      @Y30LB04*/
*/*                                                          @Y30LB04*/
*/*     CHANGE ACTIVITY - ZD00046                            @ZD00046*/
*/*                       G24LB02 RELEASE 3                  @G24LB02*/
*/*   CHANGE 02 09/30/77  ADD ICBVSCRA & ICBFG3 & ICBRESVD   @ZA24770*/
*/*   CHANGE 03 10/10/77  ADD ICBVVOLST TO ELIM AQR          @ZA27588*/
*/***********************************************************@Y30LB04*/
*    DCL 1 ICB2SSCB BASED(CVTICB) BDY(DWORD),              /*@Y30LB04*/
*          2 ICBSSNAM  CHAR(8),     /* CONTROL BLOCK ACRONYM @ZM30190*/
*          2 ICBECB    FIXED(31),   /*MSC ATTENTION ECB      @Y30LB04*/
*          2 ICBACTV   FIXED(31),   /*MSC ACTIVITY ECB       @Y30LB04*/
*          2 ICBCOM    FIXED(31),   /*MSC COMTASK ECB        @Y30LB04*/
*          2 ICBIOR    FIXED(31),   /*ECB FOR I/O RESTART    @Y30LB04*/
*          2 ICBCOMQ   POINTER(31), /*MSC COMTASK QUEUE PTR  @Y30LB04*/
*          2 ICBPUCB   POINTER(31), /*MSC PRIMARY UCB PTR    @Y30LB04*/
*          2 ICBAUCB   POINTER(31), /*MSC ALTERNATE UCB PTR  @Y30LB04*/
*          2 ICBQHEAD  POINTER(31), /*MSSC RESPONSE QUEUE    @Y30LB04*/
*                                   /*POINTER                @Y30LB04*/
*          2 ICBTCB    POINTER(31), /*MSSC TASK TCB PTR      @Y30LB04*/
*          2 ICBVN02P  POINTER(31), /*MSVC INITIALIZATION    @Y30LB04*/
*                                   /*POINTER                @Y30LB04*/
*          2 ICBOPT    POINTER(31), /*DUAL USE FIELD --      @Y30LB04*/
*                                   /* AFTER NIP TIME,       @Y30LB04*/
*                                   /*MSS ACTIVITY BUFFER    @Y30LB04*/
*                                   /*POINTER                @Y30LB04*/
*            3 ICBNVT  POINTER(31), /*DURING NIP, PTR TO NVT @Y30LB04*/
*          2 ICBFLG,                /*MSSC FLAG WORD         @Y30LB04*/
*            3 ICBFG1 CHAR(1),      /* FLAG BYTE 1           @Y30LB04*/
*              4 ICBI BIT(1),       /*BIT0=1 FOR INITIALIZED @Y30LB04*/
*              4 ICBR BIT(1),       /*BIT1=1 FOR READY       @Y30LB04*/
*              4 ICBV BIT(1),       /*BIT2=1 FOR MSVC        @Y30LB04*/
*                                   /*INITIALIZED            @Y30LB04*/
*              4 ICBB BIT(1),       /*BIT3=1 FOR BROKEN BOX  @G24LB02*/
*              4 ICBS BIT(1),       /*BIT4=1 FOR MSSC HAS    @G24LB02*/
*                                   /*BEEN SUSPENDED         @G24LB02*/
*              4 ICBMSCMP BIT(1),   /*MSC MP OPERATION       @G24LB05*/
*              4 ICBMSCA BIT(1),    /*MSC ASYMMETRIC OPER.   @G24LB05*/
*              4 *    BIT(1),       /* RESERVED              @G24LB05*/
*            3 ICBFG2 CHAR(1),      /* FLAG BYTE 2           @Y30LB04*/
*            3 ICBFG3 CHAR(2),     /* FLAGS FOR FUTURE USE   @ZA24770*/
*          2 ICB2ACTP POINTER(31),  /* MSS ACTIVITY RTNE PTR @Y30LB04*/
*          2 ICBIORCI POINTER(31),  /*PTR TO MSSC I/O        @Y30LB04*/
*                                   /*RESTART ROUTINE        @Y30LB04*/
*          2 ICBMEP   POINTER(31),  /*PTR TO MSSC MOUNT      @Y30LB04*/
*                                   /*EQUALIZATION RTNE      @Y30LB04*/
*          2 ICBSIOP  POINTER(31),  /*PTR TO MSSC I/O DRIVER @Y30LB04*/
*                                   /*FRONT END              @Y30LB04*/
*          2 ICBVVIC  POINTER(31),  /*PTR TO MSVC ROUTINE    @Y30LB04*/
*          2 ICBVVICB POINTER(31),  /*PTR TO MSVC CTL BLOCK  @Y30LB04*/
*          2 ICBSRBP  POINTER(31),  /*PTR TO MSSC SRB        @Y30LB04*/
*          2 ICBIPRGA POINTER(31),  /*PTR TO MSSC I/O DRVR   @Y30LB04*/
*                                   /*PURGE ROUTINE          @Y30LB04*/
*          2 ICBIATNA POINTER(31),  /*PTR TO MSSC ATTENTION  @Y30LB04*/
*                                   /* ROUTINE               @Y30LB04*/
*          2 ICBSIOBP POINTER(31),  /*PTR TO MSSC I/O DRIVR  @Y30LB04*/
*                                   /*BACK END               @Y30LB04*/
*          2 ICBAEAP  POINTER(31),  /*PTR TO MSSC ABE RTNE   @Y30LB04*/
*          2 ICBRSVP  POINTER(31),  /*RESERVED               @Y30LB04*/
*          2 ICBMSSC  POINTER(31),  /*MSSC INTERNAL USE      @G24LB02*/
*          2 ICBFAB   POINTER(31),  /*PTR TO ALLOCATION      @Y30LB04*/
*                                   /*SERVICE ROUTINE        @Y30LB04*/
*          2 ICBCPUID CHAR(5),      /*MSC CPUID              @ZA24770*/
*          2 ICBRESVD CHAR(1),      /* RESVERED              @ZA24770*/
*          2 ICBSAMP  CHAR(2),      /* MSC ACTIV SAMP TIME   @ZA24770*/
*          2 ICBVSCRA POINTER(31),  /* PTR TO MSVC RTNE      @ZA24770*/
*          2 ICBVOLST POINTER(31),  /* PTR TO TRACK RTNE     @ZA27588*/
*          2 ICBRESV  CHAR(20),     /*RESERVED FIELD         @ZA27588*/
*          2 ICBTRACE  CHAR(384),   /*MSSC TRACE AREA        @ZD00046*/
*            3 ICBOTRC CHAR(256),   /*MSSC ORDER TRACE       @ZD00046*/
*            3 ICBLORD CHAR(128);   /*LATEST MSSC ORDER      @ZD00046*/
*%ICBLGTH='LENGTH(ICB2SSCB)';       /*ICB2SSCB LENGTH        @Y30LB04*/
./ ADD NAME=IEZSTPTB
 /*********************************************************  @G24LB18*/
 /*                                                          @G24LB18*/
 /* NAME - IEZSTPTB (MSVC STEP TABLE MAPPING MACRO)          @G24LB18*/
 /*                                                          @G24LB18*/
 /* STATUS - MVS                                             @G24LB18*/
 /*                                                          @G24LB18*/
 /* FUNCTION - MAPPING MACRO FOR THE MSVC STEP TABLES BUILT  @G24LB18*/
 /*            AND MAINTAINED BY THE MSVC TABLE PROCESSOR    @G24LB18*/
 /*            (ICBVTP00). THESE TABLES CONTAIN DD           @G24LB18*/
 /*            INFORMATION ON A JOB STEP BASIS WHICH MSVC    @G24LB18*/
 /*            USES IN SELECTING VOLUMES TO SATISFY MSVGP    @G24LB18*/
 /*            REQUESTS AND IN KEEPING TRACK OF AVAILABLE    @G24LB18*/
 /*            SPACE ON GENERAL-USE GROUP VOLUMES. EACH STEP @G24LB18*/
 /*            TABLE CONSISTS OF A HEADER (STPTB) FOR THE    @G24LB18*/
 /*            STEP AND A DD ENTRY (STPDDENT) FOR EACH       @G24LB18*/
 /*            VIRTUAL DD IN THE STEP.                       @G24LB18*/
 /*                                                          @G24LB18*/
 /*********************************************************  @G24LB18*/
 DCL
    1  STPTB  BDY(WORD) BASED,      /* MSVC STEP TABLE       @G24LB18*/
                                    /* HEADER                @G24LB18*/
       2  STPNXTTB PTR(31),         /* NEXT STEP TABLE PTR   @G24LB18*/
       2  STPPRVTB PTR(31),         /* PREVIOUS STEP TABLE   @G24LB18*/
                                    /* PTR                   @G24LB18*/
       2  STPJOBID FIXED(31),       /* TCB ADDR(VS1) OR      @G24LB18*/
                                    /* ASID(MVS)             @G24LB18*/
       2  STPHDRLN FIXED(15),       /* LENGTH OF HEADER      @G24LB18*/
       2  STPFLAGS,                 /* STEP FLAGS            @G24LB18*/
          3  STPINVAL BIT(1),       /* STEP TABLE INVALID    @G24LB18*/
          3  STPNOFRE BIT(1),       /* DON'T FREE STEP TABLE @G24LB18*/
          3  *        BIT(6),       /* UNUSED                @G24LB18*/
       2  STPICCGR FIXED(8),        /* INITIAL CALL COUNTER  @G24LB18*/
       2  STPDDPTR PTR(31);         /* 1ST DD ENTRY PTR      @G24LB18*/
 DCL
    1  STPDDENT BASED,              /* DD ENTRY              @G24LB18*/
       2  STPDDNXT PTR(31),         /* NEXT DD ENTRY PTR     @G24LB18*/
       2  STPDDLEN FIXED(15),       /* LENGTH OF ENTRY       @G24LB18*/
       2  STPDDNUM FIXED(15),        /* INTERNAL DD NUMBER    @G24LB18*/
       2  STPDDDVT CHAR(4),         /* INTERNAL DEVICE TYPE  @G24LB18*/
                                    /* OR UCB ADDR IF        @G24LB18*/
                                    /* SPECIFIC UNIT ADDR    @G24LB18*/
                                    /* REQUEST               @G24LB18*/
       2  STPDDGPN CHAR(8),         /* GROUP NAME            @G24LB18*/
       2  STPDDGPI FIXED(8),        /* GROUP EXTENSION INDEX @G24LB18*/
       2  STPDDGPS FIXED(8),        /* GROUP EXTENSION SLOT  @G24LB18*/
                                    /* NUMBER                @G24LB18*/
       2  STPDDPRM FIXED(15),       /* PRIMARY SPACE IN CYL  @G24LB18*/
       2  STPDDFLG,                 /* DD FLAGS              @G24LB18*/
          3  STPDDEXC BIT(1),       /* EXCLUSIVE USE REQUEST @G24LB18*/
          3  STPDDSPL BIT(1),       /* PRIMARY OR SECONDARY  @G24LB18*/
                                    /* SPLIT                 @G24LB18*/
          3  *        BIT(6),       /* UNUSED                @G24LB18*/
       2  STPDDNVL FIXED(8),        /* NO. OF VOL SERS       @G24LB18*/
       2  STPDDVOL(*) CHAR(6);      /* VOL SER(S)            @G24LB18*/
./ ADD NAME=IEZTABP
 /*********************************************************  @G24LB18*/
 /*                                                          @G24LB18*/
 /* NAME - IEZTABP (TABLE PROCESSOR PARAMETER LIST MAPPING   @G24LB18*/
 /*                 MACRO)                                   @G24LB18*/
 /*                                                          @G24LB18*/
 /* STATUS - MVS                                             @G24LB18*/
 /*                                                          @G24LB18*/
 /* FUNCTION - MAPPING MACRO FOR THE MSVC TABLE PROCESSOR    @G24LB18*/
 /*            (ICBVTP00) PARAMETER LIST. THIS LIST DEFINES  @G24LB18*/
 /*            THE FUNCTION TO BE PERFORMED BY THE TABLE     @G24LB18*/
 /*            PROCESSOR AND CONTAINS THE INPUTS TO THE      @G24LB18*/
 /*            TABLE PROCESSOR AND THE OUTPUTS FROM THE      @G24LB18*/
 /*            TABLE PROCESSOR.                              @G24LB18*/
 /*                                                          @G24LB18*/
 /*********************************************************  @G24LB18*/
 DCL
    1 TABP  BDY(WORD) BASED,        /* TABLE PROCESSOR REQ   @G24LB18*/
                                    /* PARM LIST             @G24LB18*/
      2  TABFLAGS,                  /* TABLE PROCESSOR FUNC  @G24LB18*/
         3  TABFBLDE BIT(1),        /* BUILD DD ENTRY FUNC   @G24LB18*/
         3  TABFSRCD BIT(1),        /* SEARCH FOR DD ENTRY   @G24LB18*/
                                    /* FUNC                  @G24LB18*/
         3  TABFBFIT BIT(1),        /* UPDATE BEST FIT TABLE @G24LB18*/
                                    /* FUNC                  @G24LB18*/
         3  TABFTSPC BIT(1),        /* GET TOTAL SPACE FOR   @G24LB18*/
                                    /* VOLSER FUNC           @G24LB18*/
         3  TABFUTRM BIT(1),        /* UNSUCCESSFUL          @G24LB18*/
                                    /* TERMINATION FUNC      @G24LB18*/
         3  TABFFREE BIT(1),        /* FREE STEP TABLE FUNC  @G24LB18*/
         3  *        BIT(2),        /* UNUSED                @G24LB18*/
      2  *        CHAR(1),          /* UNUSED                @G24LB18*/
      2  TABVOLID CHAR(6),          /* VOL SER FOR SEARCH    @G24LB18*/
         3  TABDDNUM FIXED(15),     /* DD # FOR SEARCH       @G24LB18*/
         3  TABSELRB PTR(31),       /* SELECT REQ BLOCK ADDR @G24LB18*/
            4  TABJOBID FIXED(31),  /* TCB ADDR(VS1) OR      @G24LB18*/
                                    /* ASID(MVS)             @G24LB18*/
               5  TABBFTBL PTR(31), /* BEST FIT TABLE ADDR   @G24LB18*/
      2  TABDDRET PTR(31),          /* DD ENTRY ADDR RET     @G24LB18*/
                                    /* AREA                  @G24LB18*/
         3  TABHDRET PTR(31),       /* STEP TABLE HEADER     @G24LB18*/
                                    /* ENTRY ADDR RETURN     @G24LB18*/
                                    /* AREA                  @G24LB18*/
            4  TABSPRET FIXED(15),  /* SELECTED SPACE RET    @G24LB18*/
                                    /* AREA                  @G24LB18*/
            4  *        CHAR(2);    /* UNUSED                @G24LB18*/
./ ADD NAME=IEZUNITP
 /********************************************************************/
 /*                                                          @G24LB37*/
 /*          NAME:  IEZUNITP                                 @G24LB37*/
 /*                                                          @G24LB37*/
 /*          FUNCTION:                                       @G24LB37*/
 /*          MAPS THE REQUEST PARAMETER LIST FOR THE UNIT    @G24LB37*/
 /*          PROCESSOR FUNCTION.  REGISTER 1 MUST POINT TO   @G24LB37*/
 /*          THIS PARAMETER LIST WHEN THE REQUEST IS         @G24LB37*/
 /*          EXECUTED.                                       @G24LB37*/
 /*                                                          @G24LB37*/
 /*          STATUS:  MVS                                    @G24LB37*/
 /*                                                          @G24LB37*/
 /*          CHANGE LEVEL:  NONE                             @G24LB37*/
 /*                                                          @G24LB37*/
 /********************************************************************/
     DCL 1 UNITP BDY(WORD) BASED,    /* UNIT PROCESSOR RPL   @G24LB37*/
           2 UNIDEVTP CHAR(4),       /* DEVICE TYPE          @G24LB37*/
           2 UNIVOL   CHAR(6),       /* VOLUME SERIAL        @G24LB37*/
           2 *        CHAR(2),       /* UNUSED               @G24LB37*/
           2 UNIUCBP  PTR(31),       /* UCB ADDRESS          @G24LB37*/
           2 UNIFLAGS,               /* REQUEST FLAGS        @G24LB37*/
             3 UNIFMTD  BIT(1),      /* VOLUME MOUNTED       @G24LB37*/
             3 UNIFINCL BIT(1),      /* UNIT INCLUDED        @G24LB37*/
             3 UNIFALLV BIT(1),      /* UNITS ALL 3330V      @G24LB37*/
             3 *        BIT(5);      /* UNUSED               @G24LB37*/
./ ADD NAME=IEZVC100
*%GOTO VC100PRO;  /*
         MACRO
         IEZVC100 &DSECT=YES
         SPACE 1  */
*%VC100PRO: ;
*/********************************************************************/
*/*                                                                  */
*/*                         IEZVC100                                 */
*/*                                                                  */
*/* COPYRIGHT  -                                                 @L1C*/
*/*               5740-XYN COPYRIGHT IBM CORP 1979, 1981,            */
*/*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        */
*/*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER        */
*/*               G120-2083.                                         */
*/*                                                                  */
*/* STATUS     -  OS/VS2 JBB1326                                 @L1C*/
*/*               11/07/80    LEVEL=3                            @L1C*/
*/*                                                                  */
*/* INVOCATION -                                                     */
*/*          BAL  - SPECIFY: IEZVC100                                */
*/*                 UNLESS A DSECT IS NOT WANTED. IN THAT CASE       */
*/*                 SPECIFY: IEZVC100 DSECT=NO                       */
*/*          PL/S - SPECIFY: %INCLUDE SYSLIB(IEZVC100)               */
*/*                 IF IT IS DESIRED THAT THE MAPPING BE BASED ON    */
*/*                 A POINTER, DEFINE A MACRO CHARACTER VARIABLE     */
*/*                 VC100BAS AND SET IT TO BE THE NAME OF THE        */
*/*                 POINTER TO USE.                                  */
*/*                   EX. %DCL VC100BAS CHAR                         */
*/*                       % VC100BAS = 'VC100PTR'                    */
*/*                                                                  */
*/*                 IF THE MAPPING IS NOT TO BE BASED AT ALL, DEFINE */
*/*                 A MACRO CHARACTER VARIABLE VC100BAS AND SET IT   */
*/*                 TO 'NONE'.                                       */
*/*                                                                  */
*/* FUNCTION -                                                       */
*/*          THIS MACRO MAPS THE PARAMETER LIST FOR THE COMM TASK    */
*/*          COMMAND QUEUER MODULE IEAVC700.                         */
*/*                                                                  */
*/* CHANGE ACTIVITY -                                                */
*/*          G741PSS - NEW FOR THIS SUPPORT                  @G741PSS*/
*/*          G81LPSS - NO CODE CHANGES                       @G81LPSS*/
*/* $L1=XMCTASK,  JBB1326,  801107,  L1SJ: ADD TOKEN SUPPORT     @L1A*/
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
* %GOTO VC100PLS;        %/*
         SPACE 1
         IEZBITS ,       SYMBOLIC BIT DEFINITIONS
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').VC100B1
C100PARM DSECT           IEAVC700 PARM LIST
         AGO   .VC100B2
.VC100B1 ANOP
         DS    0F
C100PARM EQU   *         IEAVC700 PARM LIST
.VC100B2 ANOP
C100FLGS DS    0F        COMMAND FLAGS
         SPACE 1
C100FLGA DS    0H        PART 1 OF COMMAND FLAGS
C100FLG1 DS    XL1       1ST FLAG BYTE
C100F11  EQU   BIT0      RESERVED
C100F12  EQU   BIT1      RESERVED
C100F13  EQU   BIT2      RESERVED
C100F14  EQU   BIT3      COMMAND SHOULD NOT BE HARDCOPIED
C100F15  EQU   BIT4      INPUT TOKEN IS PRESENT                    @L1C
C100F16  EQU   BIT5      RESERVED
C100F17  EQU   BIT6      RESERVED
C100F18  EQU   BIT7      RESERVED
         SPACE 1
C100FLG2 DS    XL1       2ND FLAG BYTE - RESERVED
C100FLGB DS    0H        PART 2 OF COMMAND FLAGS
C100FLG3 DS    XL1       3RD FLAG BYTE
C100F31  EQU   BIT0      QUEUE CMD TO BE ISSUED
C100F32  EQU   BIT1      DELETE CMD BUFFER
C100F33  EQU   BIT2      RESERVED
C100F34  EQU   BIT3      RESERVED
C100F35  EQU   BIT4      RESERVED
C100F36  EQU   BIT5      RESERVED
C100F37  EQU   BIT6      RESERVED
C100F38  EQU   BIT7      RESERVED
         SPACE 1
C100FLG4 DS    XL1       4TH FLAG BYTE - RESERVED
C100SRC  DS    F         CONTENTS OF REGISTER 0 WHEN THE CMD IS        X
                         RE-ISSUED (SOURCE CONSOLE ID)
C100BUFP DS    A         PTR TO LENGTH OF CMD AND CMD TEXT
C100DELE DS    A         PTR TO BUFFER TO DELETE
C100TOKN DS    CL4       INPUT TOKEN                               @L1A
C100SIZE EQU   *-C100PARM LENGTH OF PARAMETER LIST
         SPACE 2
***********************************************************************
*                                                                     *
*        MAPPING OF COMMAND TEXT FOR IEAVC700                         *
*                                                                     *
***********************************************************************
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').VC100B3
C100CMD  DSECT           CMD TEXT FOR IEAVC700
         AGO   .VC100B4
.VC100B3 ANOP
         DS    0F
C100CMD  EQU   *         CMD TEXT FOR IEAVC700
.VC100B4 ANOP
C100CHED DS    0CL4      TEXT HEADER
C100CLEN DS    H         LENGTH OF TEXT + HEADER
C100CRSV DS    H         RESERVED
         SPACE 1
C100CTXT DS    CL126     CMD TEXT. MAX OF 126 CHARS
C100CTKN DS    CL4       INPUT TOKEN                               @L1A
C100CSZE EQU   *-C100CMD LENGTH OF COMMAND TEXT MAPPING
         MEND            */;
*%VC100PLS: ;
*%IF VC100BAS ^= 'NONE' %THEN %GOTO VC100P1;
* DCL 1 C100PARM          BDY(WORD),/* IEAVC700 PARM LIST            */
*%GOTO VC100P3;
*%VC100P1: ;
*%IF VC100BAS ^= '' %THEN %GOTO VC100P2;
* DCL 1 C100PARM          BDY(WORD) BASED,/* IEAVC700 PARM LIST      */
*%GOTO VC100P3;
*%VC100P2: ;
* DCL 1 C100PARM       BDY(WORD) BASED(VC100BAS),/* IEAVC700 PARM
*                                       LIST                         */
*%VC100P3: ;
*       3 C100FLGS      FIXED(32),  /* COMMAND FLAGS                 */
*         5 C100FLGA    FIXED(16),  /* PART 1 OF COMMAND FLAGS       */
*           7 C100FLG1  BIT(8),     /* 1ST FLAG BYTE                 */
*             9 C100F11 BIT(1),     /* RESERVED                      */
*             9 C100F12 BIT(1),     /* RESERVED                      */
*             9 C100F13 BIT(1),     /* RESERVED                      */
*             9 C100F14 BIT(1),     /* COMMAND SHOULD NOT BE
*                                      HARDCOPIED                    */
*             9 C100F15 BIT(1),     /* INPUT TOKEN IS PRESENT    @L1C*/
*             9 C100F16 BIT(1),     /* RESERVED                      */
*             9 C100F17 BIT(1),     /* RESERVED                      */
*             9 C100F18 BIT(1),     /* RESERVED                      */
*           7 C100FLG2  BIT(8),     /* 2ND FLAG BYTE - RESERVED      */
*         5 C100FLGB    FIXED(16),  /* PART 2 OF COMMAND FLAGS       */
*           7 C100FLG3  BIT(8),     /* 3RD FLAG BYTE                 */
*             9 C100F31 BIT(1),     /* QUEUE CMD TO BE ISSUED        */
*             9 C100F32 BIT(1),     /* DELETE CMD BUFFER             */
*             9 C100F33 BIT(1),     /* RESERVED                      */
*             9 C100F34 BIT(1),     /* RESERVED                      */
*             9 C100F35 BIT(1),     /* RESERVED                      */
*             9 C100F36 BIT(1),     /* RESERVED                      */
*             9 C100F37 BIT(1),     /* RESERVED                      */
*             9 C100F38 BIT(1),     /* RESERVED                      */
*           7 C100FLG4  BIT(8),     /* 4TH FLAG BYTE - RESERVED      */
*       3 C100SRC       FIXED(31),  /* CONTENTS OF REGISTER 0 WHEN THE
*                                      CMD IS RE-ISSUED (SOURCE
*                                      CONSOLE ID)                   */
*       3 C100BUFP      PTR(31),    /* PTR TO LENGTH OF CMD AND CMD
*                                      TEXT                          */
*       3 C100DELE      PTR(31),    /* PTR TO BUFFER TO DELETE   @L1C*/
*       3 C100TOKN      CHAR(4);    /* INPUT TOKEN               @L1A*/
*@SPACE(2);
*/********************************************************************/
*/*                                                                  */
*/*      MAPPING OF COMMAND TEXT FOR IEAVC700                        */
*/*                                                                  */
*/********************************************************************/
*%IF VC100BAS ^= 'NONE' %THEN %GOTO VC100P5;
* DCL 1 C100CMD    BDY(WORD),       /* CMD TEXT FOR IEAVC700         */
*%GOTO VC100P6;
*%VC100P5: ;
* DCL 1 C100CMD    BDY(WORD) BASED(C100BUFP),/* CMD TEXT FOR IEAVC700
*                                                                    */
*%VC100P6: ;
*       3 C100CHED,                 /* TEXT HEADER                   */
*         5 C100CLEN FIXED(15),     /* LENGTH OF TEXT + HEADER       */
*         5 C100CRSV FIXED(15),     /* RESERVED                      */
*       3 C100CTXT CHAR(126),       /* CMD TEXT MAX OF 126 CHARS @L1C*/
*       3 C100CTKN CHAR(4);         /* INPUT TOKEN               @L1A*/
./ ADD NAME=IEZVOLRT
 /*********************************************************  @G24LB18*/
 /*                                                          @G24LB18*/
 /* NAME - IEZVOLRT (VOL SER RETURN AREA MAPPING MACRO)      @G24LB18*/
 /*                                                          @G24LB18*/
 /* STATUS - MVS                                             @G24LB18*/
 /*                                                          @G24LB18*/
 /* FUNCTION - MAPPING MACRO FOR THE VOL SER RETURN AREA.    @G24LB18*/
 /*            THIS AREA IS PASSED TO MSVC BY ALLOCATION     @G24LB18*/
 /*            FOR EACH MSVGP DD WHICH REQUIRES SELECTION    @G24LB18*/
 /*            OF VOLUMES BY MSVC. MSVC PLACES THE VOL SERS  @G24LB18*/
 /*            OF THE SELECTED VOLUMES IN THIS AREA AND      @G24LB18*/
 /*            RETURNS IT TO ALLOCATION. THE AREA IS POINTED @G24LB18*/
 /*            TO BY THE SELECT REQUEST BLOCK (FIELD         @G24LB18*/
 /*            SELVLRET). ALLOCATION FILLS IN THE LENGTH OF  @G24LB18*/
 /*            THE AREA AND MSVC FILLS IN THE NUMBER OF      @G24LB18*/
 /*            VOLUMES SELECTED AND THE SELECTED VOL SERS.   @G24LB18*/
 /*                                                          @G24LB18*/
 /*********************************************************  @G24LB18*/
 DCL
    1  VOLRT  BDY(WORD) BASED(SELVLRET), /* VOL SER RETURN   @G24LB18*/
                                    /*AREA                   @G24LB18*/
       2  VOLLEN   FIXED(15),       /* LENGTH OF RET AREA    @G24LB18*/
       2  VOLNUM   FIXED(15),       /* NO. OF VOL SERS       @G24LB18*/
       2  VOLSER(*) CHAR(6);        /* VOL SER(S)            @G24LB18*/
./ ADD NAME=IEZVQ100
*%GOTO VQ100PRO;  /*
         MACRO
         IEZVQ100 &DSECT=YES
         SPACE 1  */
*%VQ100PRO: ;
*/********************************************************************/
*/*                                                                  */
*/*                         IEZVQ100                                 */
*/*                                                                  */
*/* COPYRIGHT  -                                             @G81LPSS*/
*/*               5740-XYN COPYRIGHT IBM CORP 1979, 1980,            */
*/*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        */
*/*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER        */
*/*               G120-2-83.                                         */
*/*                                                                  */
*/* STATUS     -  OS/VS2 JBB1126                             @G81LPSS*/
*/*               08/03/79    LEVEL=2                        @G81LPSS*/
*/*                                                                  */
*/* INVOCATION -                                                     */
*/*          BAL  - SPECIFY: IEZVQ100                                */
*/*                 UNLESS A DSECT IS NOT WANTED. IN THAT CASE       */
*/*                 SPECIFY: IEZVQ100 DSECT=NO                       */
*/*          PL/S - SPECIFY: %INCLUDE SYSLIB(IEZVQ100)               */
*/*                 IF IT IS DESIRED THAT THE MAPPING BE BASED       */
*/*                 ON A POINTER, DEFINE A MACRO CHARACTER           */
*/*                 VARIABLE VQ100BAS AND SET IT TO BE THE NAME      */
*/*                 OF THE POINTER TO USE.                           */
*/*                   EX. %DCL VQ100BAS CHAR                         */
*/*                       % VQ100BAS = 'VQ100PTR'                    */
*/*                                                                  */
*/*                 IF THE MAPPING IS NOT TO BE BASED AT ALL,        */
*/*                 DEFINE A MACRO CHARACTER VARIABLE VQ100BAS       */
*/*                 AND SET IT TO 'NONE'.                            */
*/*                                                                  */
*/* FUNCTION -                                                       */
*/*          THIS MACRO MAPS THE PARAMETER LIST FOR THE COMM         */
*/*          TASK QUEUE SCANNER MODULE IEAVQ700                      */
*/*                                                                  */
*/* CHANGE ACTIVITY -                                                */
*/*          G741PSS - NEW FOR THIS SUPPORT                  @G741PSS*/
*/*          G741P2L - CHG WORKAREA SIZE                     @G741P2L*/
*/*          G81LPSS - NO CODE CHANGE                        @G81LPSS*/
*/*                                                                  */
*/********************************************************************/
* %GOTO VQ100PLS;                  %/*
         SPACE 1
         IEZBITS ,       SYMBOLIC BIT DEFINITIONS
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').VQ100B1
SCANPARM DSECT           IEAVQ700 PARM LIST
         AGO   .VQ100B2
.VQ100B1 ANOP
         DS    0F
SCANPARM EQU   *         IEAVQ700 PARM LIST
.VQ100B2 ANOP
SCANFUNC DS    0XL3      SEARCH FUNCTION
SCANFC1  DS    XL1       1ST BYTE OF SEARCH FUNCTIONS
SCANMDSC EQU   BIT0      DESCRIPTOR CODE MATCH
SCANMASD EQU   BIT1      ASID MATCH
SCANMTCB EQU   BIT2      JOB STEP TCB MATCH
SCANMMID EQU   BIT3      MSG SEQ ID MATCH
SCANMIDR EQU   BIT4      MSG SEQ ID RANGE MATCH
SCANMTXT EQU   BIT5      MSG TEXT MATCH
SCANRSV1 EQU   BIT6      RESERVED
SCANRSV2 EQU   BIT7      RESERVED
SCANFC2  DS    XL1       2ND BYTE OF SEARCH FUNCTION - RESERVED
SCANFC3  DS    XL1       3RD BYTE OF SEARCH FUNCTION - RESERVED
SCANQUE  DS    XL1       CODE OF QUEUE TO SEARCH
SCANDESC DS    0H        DESCRIPTOR CODES TO MATCH
SCANDBY1 DS    XL1       1ST BYTE OF DESCRIPTOR CODES
SCANDC1  EQU   BIT0      DESCRIPTOR CODE 1
SCANDC2  EQU   BIT1      DESCRIPTOR CODE 2
SCANDC3  EQU   BIT2      DESCRIPTOR CODE 3
SCANDC4  EQU   BIT3      DESCRIPTOR CODE 4
SCANDC5  EQU   BIT4      DESCRIPTOR CODE 5
SCANDC6  EQU   BIT5      DESCRIPTOR CODE 6
SCANDC7  EQU   BIT6      DESCRIPTOR CODE 7
SCANDC8  EQU   BIT7      DESCRIPTOR CODE 8
SCANDBY2 DS    XL1       2ND BYTE OF DESCRIPTOR CODES
SCANDC9  EQU   BIT0      DESCRIPTOR CODE 9
SCANDC10 EQU   BIT1      DESCRIPTOR CODE 10
SCANDC11 EQU   BIT2      DESCRIPTOR CODE 11
SCANDC12 EQU   BIT3      DESCRIPTOR CODE 12 - RESERVED
SCANDC13 EQU   BIT4      DESCRIPTOR CODE 13 - RESERVED
SCANDC14 EQU   BIT5      DESCRIPTOR CODE 14 - RESERVED
SCANDC15 EQU   BIT6      DESCRIPTOR CODE 15 - RESERVED
SCANDC16 EQU   BIT7      DESCRIPTOR CODE 16 - RESERVED
SCANRSV3 DS    CL4       RESERVED
SCANASID DS    CL2       ASID TO MATCH
SCANTCBP DS    A         TCB TO MATCH
SCANMID  DS    F         MSG SEQ ID TO MATCH OR LOW END OF ID RANGE TO X
                         MATCH
SCANMRID DS    F         HIGH END OF ID RANGE TO MATCH
SCANCENT DS    A         ADDR OF ENTRY FOUND OR ZERO
SCANPENT DS    A         ADDR OF PRECEDING ENTRY OR ZERO. IF ENTRY IS  X
                         FOUND AND THIS IS ZERO, ENTRY FOUND IS 1ST    X
                         ON QUEUE
SCANWKPT DS    A         ADDR OF WORK AREA FOR IEAVQ700
SCANLGTH DS    FL1       LENGTH OF TEXT TO MATCH
SCANTEXT DS    CL8       TEXT TO MATCH
SCANRSV4 DS    CL19      RESERVED
         SPACE 1
SCANPMSZ EQU   *-SCANPARM SIZE OF IEAVQ700 PARAMETER LIST
         SPACE 2
***********************************************************************
*                                                                     *
*        WORK AREA FOR IEAVQ700                                       *
*                                                                     *
***********************************************************************
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').VQ100B3
SCANWRK  DSECT
         DS    CL96      WORK AREA FOR IEAVQ700                @G741P2L
         AGO   .VQ100B4
.VQ100B3 ANOP
         DS    0F
SCANWRK  DS    CL96      WORK AREA FOR IEAVQ700                @G741P2L
.VQ100B4 ANOP
         SPACE 1
SCANWKSZ EQU   *-SCANWRK SIZE OR WORK AREA FOR IEAVQ700
SCANSIZE EQU   SCANPMSZ+SCANWKSZ SIZE OF TOTAL IEAVQ700 PARAMETER LIST
         SPACE 3
***********************************************************************
*                                                                     *
*        CODES FOR QUEUES TO BE SEARCHED                              *
*                                                                     *
***********************************************************************
         SPACE 1
SCANORE  EQU   1         ORE QUEUE
SCANWQE  EQU   2         WQE QUEUE
SCANRMSG EQU   3         RETAINED MSG QUEUE
SCANRIAM EQU   4         RETAINED IMMEDIATE ACTION MSG QUEUE
SCANREAM EQU   5         RETAINED EVENTUAL ACTION MSG QUEUE
SCANMINQ EQU   1         MINIMUM QUEUE NUMBER
SCANMAXQ EQU   5         MAXIMUM QUEUE NUMBER
         MEND            */;
*%VQ100PLS: ;
*   %IF VQ100BAS ^= '' %THEN %GOTO VQ100P1;
*  DCL 1 SCANPARM       BDY(WORD) BASED,/* IEAVQ700 PARM LIST        */
*   %GOTO VQ100P3;
*%VQ100P1: ;
*   %IF VQ100BAS ^= 'NONE' %THEN %GOTO VQ100P2;
*  DCL 1 SCANPARM       BDY(WORD),  /* IEAVA700 PARM LIST            */
*   %GOTO VQ100P3;
*%VQ100P2: ;
*  DCL 1 SCANPARM       BDY(WORD) BASED(VQ100BAS),/* IEAVQ700 PARM LIST
*                                                                    */
*%VQ100P3: ;
*        3 SCANFUNC     BIT(24),    /* SEARCH FUNCTIONS              */
*          5 SCANFC1    BIT(8),     /* 1ST BYTE OF SEARCH FUNCTIONS  */
*            7 SCANMDSC BIT(1),     /* DESCRIPTOR CODE MATCH         */
*            7 SCANMASD BIT(1),     /* ASID MATCH                    */
*            7 SCANMTCB BIT(1),     /* JOB STEP TCB MATCH            */
*            7 SCANMMID BIT(1),     /* MSG SEQ ID MATCH              */
*            7 SCANMIDR BIT(1),     /* MSG SEQ ID RANGE MATCH        */
*            7 SCANMTXT BIT(1),     /* MSG TEXT MATCH                */
*            7 SCANRSV1 BIT(1),     /* RESERVED                      */
*            7 SCANRSV2 BIT(1),     /* RESERVED                      */
*          5 SCANFC2    BIT(8),     /* 2ND BYTE OF SEARCH FUNCTIONS -
*                                      RESERVED                      */
*          5 SCANFC3    BIT(8),     /* 3RD BYTE OF SEARCH FUNCTIONS -
*                                      RESERVED                      */
*        3 SCANQUE      FIXED(8),   /* CODE OF QUEUE TO SEARCH       */
*        3 SCANDESC     BIT(16) BDY(WORD), /* DESCRIPTOR CODES
*                                      TO MATCH                      */
*          5 SCANDBY1   BIT(8),     /* 1ST BYTE OF DESCRIPTOR CODES  */
*            7 SCANDC1  BIT(1),     /* DESCRIPTOR CODE 1             */
*            7 SCANDC2  BIT(1),     /* DESCRIPTOR CODE 2             */
*            7 SCANDC3  BIT(1),     /* DESCRIPTOR CODE 3             */
*            7 SCANDC4  BIT(1),     /* DESCRIPTOR CODE 4             */
*            7 SCANDC5  BIT(1),     /* DESCRIPTOR CODE 5             */
*            7 SCANDC6  BIT(1),     /* DESCRIPTOR CODE 6             */
*            7 SCANDC7  BIT(1),     /* DESCRIPTOR CODE 7             */
*            7 SCANDC8  BIT(1),     /* DESCRIPTOR CODE 8             */
*          5 SCANDBY2   BIT(8),     /* 2ND BYTE OF DESCRIPTOR CODES  */
*            7 SCANDC9  BIT(1),     /* DESCRIPTOR CODE 9             */
*            7 SCANDC10 BIT(1),     /* DESCRIPTOR CODE 10            */
*            7 SCANDC11 BIT(1),     /* DESCRIPTOR CODE 11            */
*            7 SCANDC12 BIT(1),     /* DESCRIPTOR CODE 12 - RESERVED */
*            7 SCANDC13 BIT(1),     /* DESCRIPTOR CODE 13 - RESERVED */
*            7 SCANDC14 BIT(1),     /* DESCRIPTOR CODE 14 - RESERVED */
*            7 SCANDC15 BIT(1),     /* DESCRIPTOR CODE 15 - RESERVED */
*            7 SCANDC16 BIT(1),     /* DESCRIPTOR CODE 16 - RESERVED */
*        3 SCANRSV3     CHAR(4),    /* RESERVED                      */
*        3 SCANASID     CHAR(2),    /* ASID TO MATCH                 */
*        3 SCANTCBP     PTR(31),    /* TCB TO MATCH                  */
*        3 SCANMID      FIXED(31),  /* MSG SEQ ID TO MATCH OR LOW END
*                                      OF ID RANGE TO MATCH          */
*        3 SCANMRID     FIXED(31),  /* HIGH END OF ID RANGE TO MATCH */
*        3 SCANCENT     PTR(31),    /* ADDR OF ENTRY FOUND OR ZERO   */
*        3 SCANPENT     PTR(31),    /* ADDR OF PRECEDING ENTRY OR ZERO.
*                                      IF ENTRY IS FOUND AND THIS IS
*                                      ZERO, ENTRY FOUND IS 1ST
*                                      ON QUEUE                      */
*        3 SCANWKPT     PTR(31),    /* ADDR OF WORK AREA FOR IEAVQ700
*                                                                    */
*        3 SCANLGTH     FIXED(8),   /* LENGTH OF TEXT TO MATCH       */
*        3 SCANTEXT     CHAR(8),    /* TEXT TO MATCH                 */
*        3 SCANRSV4     CHAR(19);   /* RESERVED                      */
*@SPACE(2);
*/********************************************************************/
*/*                                                                  */
*/*      WORK AREA FOR IEAVQ700                                      */
*/*                                                                  */
*/********************************************************************/
* %IF VQ100BAS ^= 'NONE' %THEN %GOTO VQ100P4;
*  DCL SCANWRK CHAR(96) BDY(WORD);  /* WORK AREA FOR IEAVQ700
                                                             @G741P2L*/
* %GOTO VQ100P5;
* %VQ100P4: ;
*  DCL SCANWRK CHAR(96) BDY(WORD) BASED(SCANWKPT); /* WORK AREA FOR
*                                      IEAVQ700              @G741P2L*/
* %VQ100P5: ;
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*      CODES FOR QUEUES TO BE SEARCHED                             */
*/*                                                                  */
*/********************************************************************/
*  DCL SCANORE   FIXED(8)  CONSTANT(1);/* ORE QUEUE                  */
*  DCL SCANWQE   FIXED(8)  CONSTANT(2);/* WQE QUEUE                  */
*  DCL SCANRMSG  FIXED(8)  CONSTANT(3);/* RETAINED MSG QUEUE         */
*  DCL SCANRIAM  FIXED(8)  CONSTANT(4);/* RETAINED IMMEDIATE ACTION MSG
*                                         QUEUE                      */
*  DCL SCANREAM  FIXED(8)  CONSTANT(5);/* RETAINED EVENTUAL ACTION MSG
*                                         QUEUE                      */
*  DCL SCANMINQ  FIXED(8)  CONSTANT(1);/* MINIMUM QUEUE NUMBER       */
*  DCL SCANMAXQ  FIXED(8)  CONSTANT(5);/* MAXIMUM QUEUE NUMBER       */
./ ADD NAME=IEZVVICB
*/********************************************************************/
*/*          MACCOMP  Y30LB22          SC1DR/BL0019          @Y30LB22*/
*/*          MACSTAT  Y30LB22          74/213/341040         @Y30LB22*/
*/*                                                          @Y30LB22*/
*/*          NAME: IEZVVICB                                  @Y30LB22*/
*/*                                                          @Y30LB22*/
*/*          FUNCTION:                                       @Y30LB22*/
*/*                  MAPS THE MSSC VOLUME CONTROL BLOCK      @Y30LB22*/
*/*                                                          @Y30LB22*/
*/*          STATUS:  MVS                                    @G24LB04*/
*/*                                                          @Y30LB22*/
*/*   CHANGE-ACTIVITY = AS FOLLOWS                           @YM31134*/
*/*      CHANGE 01 10/14/75 MSVI MULTI-HOST SHARABILITY      @YM31134*/
*/*      CHANGE 02 05/13/76 ALLOCATE TO MOUNTED VOLUMES      @G24LB04*/
*/*      CHANGE 03 07/14/77 SAVE AREA FOR OPCODE             @ZA26243*/
*/*      CHANGE 04 10/20/77 ELIMINATE REDUN ACQUIRE          @ZA27588*/
*/*                                                          @YM31134*/
*/********************************************************************/
*DCL
*  1   VVICB     BASED (VVIPTR) BDY(WORD),                 /*@Y30LB22*/
*     2   VVICID        CHAR(4),    /* CTL BLOCK ID  'MSVC'  @Y30LB22*/
*     2   VVIUCAT       CHAR(8),    /* USER CATALOG NAME     @Y30LB22*/
*     2   VVICPUID      CHAR(2),    /* CPU ASSOCIATION MASK  @Y30LB22*/
*     2   VVIALCON      CHAR(1),    /* LIB ALTERNATE CONSOLE @Y30LB22*/
*     2   VVIFLGA       CHAR(1),    /* STATUS FLAG           @Y30LB22*/
*       3   VVIFLG0       BIT(1),   /* BIT 0=1 TOTAL DISABLE @Y30LB22*/
*       3   VVIFLG1       BIT(1),   /* BIT 1=1 INTERNAL      @YM31134
                                       DISABLE               @YM31134*/
*       3   VVIFLG2       BIT(1),   /* BIT 2=1 JRNL. DISABLE @Y30LB22*/
*       3   VVIFLG3       BIT(1),   /* BIT 3=1 MSGS JRNL.    @Y30LB22*/
*       3   VVIFLG4       BIT(1),   /* BIT 4=1 DEQ REQ'D     @Y30LB22
                                       FOR INVENTORY         @Y30LB22*/
*       3   VVIFLG5       BIT(1),   /* BIT 5=1 DEQ REQ'D     @Y30LB22
                                       FOR JOURNAL           @Y30LB22*/
*       3   VVIFLG6       BIT(1),   /* BIT 6=1 WHEN SUBTASK  @G24LB04
                                       HOLDS LOCAL LOCK      @G24LB04*/
*       3   VVIFLG7       BIT(1),   /* BIT 7=1 WHEN SUBTASK  @G24LB04
                                       HOLDS CMS LOCK        @G24LB04*/
*     2   VVIACBAD      PTR(31),    /* USERCAT ACB ADDR      @Y30LB22*/
*     2   VVIDCBAD      PTR(31),    /* USERCAT JRNL DCB ADDR @Y30LB22*/
*     2   VVICATAD      PTR(31),    /* USER CATALOG ACB ADDR @Y30LB22*/
*     2   VVIECB1       PTR(31),    /* ICBVVI00 ECB          @Y30LB22*/
*     2   VVIVQMP       PTR(31),    /* QUEUE MANAGER POINTER @Y30LB22*/
*     2   VVIOPCD       CHAR(1),    /* SAVE AREA FOR OPCODE  @ZA26243*/
*     2   VVIVTRK       CHAR(3),    /* VOL TRKING COUNT      @ZA27588*/
*     2   VVIQRPL1      PTR(31),    /* HIGH PRI RPLV QUE PTR @Y30LB22*/
*     2   VVIQRPL2      PTR(31),    /* LOW PRI RPLV QUE PTR  @Y30LB22*/
*     2   VVIQLSPL      PTR(31),    /* DEMOUNT LSPACE        @Y30LB22
*                                      PARAMETER LIST        @Y30LB22*/
*     2   VVIVRR        PTR(31),    /* RES/REL W/AREA PTR    @Y30LB22*/
*     2   VVIVJL        PTR(31),    /* JRNL PROC W/AREA PTR  @Y30LB22*/
*     2   VVIUCB        PTR(31),    /* UCB ADDR TABLE PTR    @Y30LB22*/
*     2   VVIRES4       PTR(31),    /* RES - USER TASK POST  @Y30LB22*/
*     2   VVIRES5       PTR(31),    /* RES - USER TASK POST  @Y30LB22*/
*     2   VVIRES6       PTR(31),    /* RES - USER TASK POST  @Y30LB22*/
*     2   VVIIUCB       PTR(31),    /* MSVI UCB PTR          @YM31134*/
*     2   VVIJUCB       PTR(31),    /* JRNL UCB PTR          @YM31134*/
*     2   VVIDVMTA      PTR(31),    /* DEVICE MASK TABLE     @G24LB04
                                       ADDRESS               @G24LB04*/
*     2   VVISTPTB      PTR(31),    /* MSVC STEP TABLE ADDR  @G24LB04*/
*     2   VVIVSCRA      PTR(31),    /* MSVC SCREENING MODULE @G24LB04
                                       ADDRESS               @G24LB04*/
*     2   VVISSOBA      PTR(31),    /* ADDR OF SSOB FOR      @G24LB04
                                        ALLOCATE TO MTD VOL  @G24LB04*/
*     2   VVIVBSTF      PTR(31),    /* ADDR OF EXTRA STORAGE @G24LB04
                                      FOR VOL BEST FIT TABLE @G24LB04*/
*     2   VVIDVMEL      FIXED(31),  /* LENGTH OF MASK IN DEV @G24LB04
                                       MASK TABLE ENTRY      @G24LB04*/
*     2   VVITPFCH      PTR(31),    /* MSVC FREE CHAIN PTR   @G24LB04*/
*     2   VVINUSDC      CHAR(4),    /* UNUSED                @G24LB04*/
*     2   VVIUNUSD      FIXED(31);  /* UNUSED                @G24LB04*/
./ ADD NAME=IFACOPY1
*%GOTO PLSMACRO; /*
         MACRO
         IFACOPY1 &OBJ
         AIF ('&OBJ' EQ 'OBJ').OBJDC
         AIF ('&OBJ' EQ '').COMMENT
         MNOTE 8,'INVALID INPUT PARAMETER'
         MEXIT
.COMMENT ANOP
*                                                                     *
*   COPYRIGHT =                                                       *
*            5740-XYN COPYRIGHT IBM CORP. 1979, 1980,         @G81LP26*
*            LICENSED MATERIAL - PROGRAM, PROPERTY OF IBM,            *
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.   *
*                                                                     *
*   STATUS =                                                          *
*        OS/VS2 JBB1126                                       @G81LP26*
*                                                                     *
         MEXIT
.OBJDC   ANOP
         MEND      */
*%PLSMACRO: ;
*/* A-000000-999999                                          @G741PLS*/
*/********************************************************************/
*/*                                                                  */
*/*                PL/S VERSION OF THE IFACOPY1 MACRO                */
*/*                                                                  */
*/* MACRO NAME = IFACOPY1                                            */
*/*                                                                  */
*/* COPYRIGHT =                                                      */
*/*             5740-XYN COPYRIGHT IBM CORP. 1979, 1980,     @G81LP26*/
*/*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083*/
*/*                                                                  */
*/* STATUS =  OS/VS2 JBB1126                                 @G81LP26*/
*/*                                                                  */
*/* FUNCTION = THE IFACOPY1 MACRO GENERATES THE REQUIRED             */
*/*            COPYRIGHT INFORMATION FOR SMF MODULES.                */
*/*            THE MACRO, GIVEN THE APPROPRIATE OPTIONS, WILL       */
*/*            EITHER GENERATE THE NECESSARY PROLOG COMMENT (NO     */
*/*            PARAMETERS).  IF THE OBJ PARAMTER IS INCLUDED, THE   */
*/*            ENTIRE REQUEST WILL BE IGNORED.              @G81LP26*/
*/*                                                                  */
*/* NOTES = NONE                                                     */
*/*                                                                  */
*/*   DEPENDENCIES = NONE                                            */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/*     A000000-999999                                       @G741PLS*/
*/*     UPDATE COPYRIGHT INFORMATION FOR JBB1126             @G81LP26*/
*/*                                                                  */
*/********************************************************************/
*
*% IFACOPY1:
*    MACRO                          /*                               */
*      KEYS(OBJ);                   /*                               */
*
*/********************************************************************/
*/*    DEFINE MACRO VARIABLES                                        */
*/********************************************************************/
*
*   DECLARE
*     EHARC     FIXED EXT;          /* HIGHEST MSG ISSUED BY         */
*                                   /* THIS MACRO                    */
*
*/********************************************************************/
*/*    INITIALIZE MACRO VARIABLES                                    */
*/********************************************************************/
*
*   EHARC=0;                        /* INIT MACRO RETURN CODE        */
*/********************************************************************/
*/*    WRITE WARNING MESSAGE IF MACLIST IS SUPPLIED                  */
*/********************************************************************/
*
*   IF MACLIST ^= '' THEN           /* MACLIST SUPPLIED ?            */
*     DO;                           /* YES - ERROR                   */
*       EHARC = 4;                  /* SET RETURN CODE               */
*       ANS MSG('AHA0051 THE MACLIST 'QUOTE(MACLIST)
*         ' IS NOT ALLOWED. IT IS IGNORED.');
*     END;
*/********************************************************************/
*/*    PROCESS OBJ KEYWORD                                           */
*/********************************************************************/
*   IF OBJ='' THEN                  /* IF COPYRIGHT FOR PROLOG       */
*     DO;                           /* GENERATE PROLOG COMMENT       */
*       ANS(COMMENT(
* '                                                                  '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* ' COPYRIGHT =                                                      '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '             5740-XYN COPYRIGHT IBM CORP. 1979, 1980,             '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '             LICENSED MATERIAL-PROGRAM,                           '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '             PROPERTY OF IBM,                                     '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083'
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '                                                                  '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* ' STATUS =                                                         '
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '             OS/VS2 JBB1126'
*         )) COL(MACLMAR);
*       ANS(COMMENT(
* '                                                                  '
*         )) COL(MACLMAR);
*     END;
*   ELSE                            /* COPYRIGHT DCL NOT REQ @G81LP26*/
*     DO;                           /* IGNORE OBJ PARAMETER  @G81LP26*/
*     END;
*
*
*/********************************************************************/
*/*    RETURN TO INVOKER                                             */
*/********************************************************************/
*
*LHA01200:
*   RETURN CODE(EHARC);             /* RETURN ERROR CODE             */
*% END;
./ ADD NAME=IFDCOM
         MACRO
&NAME    IFDCOM &RELEASE=MVM22                                   Y02008
         LCLC  &V,&X,&Z,&S                                      X01906
&S       SETC  '&RELEASE'                                       X01906
&V       SETC  'DS'
&X       SETC  'C'
&Z       SETC  ' '
         IFDPATCH
         EJECT
         AIF   (T'&NAME EQ 'O').SKP1
&NAME    DSECT
         IFDPF1 &V,&X,&Z,&S                                     X01906
         EJECT
         CSECT
         MEXIT
.SKP1    ANOP
         MNOTE 8,'NAME FIELD MISSING, NO STATEMENTS GENERATED'
         MEND
./ ADD NAME=IFDEVTAB
*% GO TO DEVTAB1;                      /*
         MACRO
         IFDEVTAB
DEVTABMP DSECT
.CONT    ANOP  .                */
*%DEVTAB1 : ;
*
*/*************************************************************Y02906*/
*/*                 DEVTAB                                     Y02906*/
*/*      DEVICE TABLE ENTRY MAP FOR OLTEP                      Y02906*/
*/*                                                            Y02906*/
*/* OLTEP/VS2 RELEASE 2                                        Y02906*/
*/*                                                            Y02906*/
*/* METHOD OF ACCESS                                           Y02906*/
*/*    BAL - DSECT NAMED 'DEVTAB' IS PRODUCED                  Y02906*/
*/*          A 'USING' ON SYMBOL 'DEVTAB' GIVES ADDRESSABILITY Y02906*/
*/*           FOR ALL SYMBOLS.                                 Y02906*/
*/*                                                            Y02906*/
*/*    PL/S -   DECLARE DEVTABPT PTR,  IS NECESSARY FOR ADDRESSY02906*/
*/*              ABILITY                                       Y02906*/
*/*                                                                  */
*/*      $H1=6872AU,JBB1329,820980.PDLW: ASSIGN/UNASSIGN SUPPORT     */
*/*                                                                  */
*/*************************************************************Y02906*/
*        %GOTO DEVTAB2; /*                                     Y02906
         SPACE 2
         DS    0D                                              @ZA07949
         DS    0CL56                                           @ZA07949
DEVEBCAD DS    0CL8               EBCDIC DEVICE ADDRESS        @ZA52963
         DS    CL7                EBCDIC DEVICE ADDRESS        @ZA52963
EBCCHAR  DS    CL1                EBCDIC DEVICE CHARACTER      @ZA52963
DEVUCBAD DS    F                  UCB ADDRESS FOR THIS DEVICE
         SPACE 1
DEVFLAG1 DS    CL1                FIRST FLAG BYTE
ONLINE   EQU   X'80'              DEVICE IS ONLINE IF BIT = 1
PRIMARY  EQU   X'40'              DEVICE IS PRIMARY IF BIT =1
DPDONE   EQU   X'20'              DATA PROTECTION HAS BEEN DONE IF 1
ACTIVE   EQU   X'10'              DEVICE IS ACTIVE
ALOCATED EQU   X'08'              DEVICE HAS HAD ALLOCATION
GRABED   EQU   X'04'              DEVICE IS A SECONDARY DEVICE
FILEPRT  EQU   X'02'              DEVICE IS FILE PROTECTED
SYMBSSID EQU   X'01'               SSID IN SYMBOLIC NAME FIELD @Y30LPAW
         SPACE 1
DEVFLAG2 DS    CL1                2ND DEVICE FLAG
DSNAME   EQU   X'80'              DATA SET NAME FLIP-FLOP
SHARED   EQU   X'40'              DEVICE IS SHARED IF = 1
CEVOLUMN EQU   X'20'              A CE VOLUME IS MOUNTED ON THIS DEVICE
STANDLBL EQU   X'10'              DEVICE (TAPE) HAS A STANDARD LABEL
HIODONE  EQU   X'08'              DIO/HIO DONE TO THIS DEVICE
EXIOLVL3 EQU   X'04'              EXIO CALL FROM A LEVEL 3 MACRO
PCIIND   EQU   X'02'              A PCI EVENT HAS BEEN POSTED IN TECB
UNUSED1  EQU   X'01'               UNUSED                      @ZM00190
         SPACE 1
DEVFLAG3 DS    CL1                3RD DEVICE FLAG BYTE
ANRNOTST EQU   X'80'              BYPASS ANR                   @ZA07949
UNUSED2  EQU   X'40'               UNUSED                      @ZM00190
UNUSED3  EQU   X'20'               UNUSED                      @ZM00190
TAPEBIT  EQU   X'10'              RESET UCB NOT READY BIT (TAPE)
NOTEST   EQU   X'08'              DEVICE NOT TESTABLE BY OLTEP @ZA07949
DEVALC   EQU   X'04'              DEVICE ALLOCATED IN OP SYS   @ZA07949
WAITPOST EQU   X'02'              WAITIO POSTING THIS EVENT    @ZA07949
REIPSEUD EQU   X'01'              PSEUDO DEVICE TABLE FOR REI  @ZA07949
         SPACE 1
DEVFLAG4 DS    CL1                4TH DEVICE FLAG BYTE
DEVREMDA EQU   X'80'              REMOTE DEVICE DISABLED BY OLTEP
DEVREMEA EQU   X'40'              REMOTE DEVICE ENABLED BY OLTEP
RESERVD1 EQU   X'20'              UNUSED                       @ZA52963
DEVOPVAR EQU   X'10'              OP VARY OFFLINE REQUIRED     @ZA52963
DEVVAR   EQU   X'08'              UCB SET OFFLINE BY OLTEP     @ZA52963
DEVENQNG EQU   X'04'              DEVICE ENQUEUE UNSUCCESSFUL  @ZA52963
DEVASGN  EQU   X'02'              ASSIGN FAILED FOR DEVICE         @H1A
UNUSED7  EQU   X'01'               UNUSED                      @ZM00190
         SPACE 1
DEVLOEXT DS    0CL6               LOW EXTENT ADDRESS FOR DASD
LOEXTBB  DS    CL2                LOW EXTENT BIN NUMBER
LOEXTCC  DS    CL2                LOW EXTENT CYLINDER NUMBER
LOEXTHH  DS    CL2                LOW EXTENT HEAD NUMBER
DEVHIEXT DS    0CL6               HIGH EXTENT ADDRESS FOR DASD
HIEXTBB  DS    CL2                HIGH EXTENT BIN NUMBER
HIEXTCC  DS    CL2                HIGH EXTENT CYLINDER NUMBER
HIEXTHH  DS    CL2                HIGH EXTENT HEAD NUMBER
         SPACE 1
TAPELABL DS    CL1                DATA BYTE FOR TAPE LABEL SAVE
UNUSEDX  DS    CL1                UNUSED
DEVMODE  DS    CL1                MODE SET SAVE AREA FOR TAPE
         SPACE 1
DEVEXPOS DS    CL1                EXPOSURE NUMBER FOR MULTI-EXPOSURE
*                                  TYPE DEVICE-2305.
DEVHEXAD DS    0F                 HEX DEVICE ADDRESS
DEVADPAD DS    CL2                PADDING FOR 2 BYTES
DEVAD    DS    0CL2               DEVICE ADDRESS               @ZA52963
DEVCHA   DS    CL1                CHANNEL ADDRESS              @ZA52963
DEVCHAU  EQU   X'F0'              CHANNEL ADDRESS              @ZA52963
DEVCHANL EQU   X'0F'              CHANNEL ADDRESS              @ZA52963
DEVUA    DS    CL1                UNIT ADDRESS                 @ZA52963
DEVCTRLU EQU   X'F0'              UNIT ADDRESS                 @ZA52963
DEVADDR  EQU   X'0F'              UNIT ADDRESS                 @ZA52963
         SPACE 1
DEVDESCR DS    0F                 DEVICE DESCRIPTORS FROM CDS
DEVMODEL DS    CL1                DEVICE MODEL
DEVFEATR DS    CL1                DEVICE FEATURES FLAG
DEVCLASS DS    CL1                DEVICE CLASS
DEVUNTYP DS    CL1                DEVICE UNIT TYPE
DEVCDSCT DS    CL1                DEVICE CDS BYTE COUNT
         SPACE 1
DEVCDSFG DS    0CL2               FLAG BYTES FROM CDS
CDSFLAG1 DS    CL1                CDS FLAG BYTE 1
CDSFILPT EQU   X'80'              RUN FILE PROTECT MODE IF 1
CDSSHRED EQU   X'40'              DEVICE IS SHARED IF 1
CDSCEMNT EQU   X'20'              CE VOLUME IS MOUNTED IF 1
CDSEXMSK EQU   X'10'              EXTERNAL SIGNAL MASK IN CDS BYTE
*                                   11 IF 1
CDSYMBLC EQU   X'08'              SYMBOLIC NAME IN CDS BYTES 12-19
*                                   IF 1
CDS2CHSW EQU   X'04'              2 CHANNEL SWITCH ON THIS DEVICE IF 1
CDSREMDV EQU   X'02'              THIS CDS FOR A REMOTE DEVICE IF 1
CDSLNCON EQU   X'01'              LINE CONNECTION REQUIRED FOR THIS
*                                   DEVICE IF 1
CDSFLAG2 DS    CL1                CDS FLAG BYTE 2
CDSNOPRI EQU   X'80'              DON'T ASSIGN THIS DEVICE AS PRIMARY
*                                   IF 1
UNUSED8  EQU   X'40'               UNUSED                      @ZM00190
UNUSED9  EQU   X'20'               UNUSED                      @ZM00190
UNUSED10 EQU   X'10'               UNUSED                      @ZM00190
UNUSED11 EQU   X'08'               UNUSED                      @ZM00190
UNUSED12 EQU   X'04'               UNUSED                      @ZM00190
UNUSED13 EQU   X'02'               UNUSED                      @ZM00190
UNUSED14 EQU   X'01'               UNUSED                      @ZM00190
         SPACE 1
CDSEXTSG DS    CL1                DEVICE EXTERNAL SIGNAL MASK
DEVSYMAM DS    CL8                DEVICE SYMBOLIC NAME
SAVMDMSK DS    CL1                SAVED MODESET/FILEMASK
DEVINTPT DS    CL1                COUNT OF INTERRUPTS POSTED FROM OECB
*                                  TO THIS POINT. USED TO SYNCHRONIZE
*                                  WAITIO-POLL POSTING AND THIS MODULE.
ALCINDEX DS    CL1                INDEX FOR DRUM ALLOC         @ZA07949
DEVEXPAN DS    CL1                UNUSED                       @ZA07949
DVTABEND DS    0C                 END OF DEVICE TABLE          @ZA07949
         MEND  . */
*%DEVTAB2 : ;
*
* DECLARE
*   1 DEVTABMP CHAR(56) BASED(DEVTABPT) BDY(WORD),
*     3 DEVEBCAD CHAR(8),         /* EBCDIC DEVICE ADDRESS           */
*       5 * CHAR(7),              /* EBCDIC DEVICE ADDRESS   @ZA52963*/
*       5 ECBCHAR CHAR(1),        /* EBCDIC DEVICE CHARACTER @ZA52963*/
*     3 DEVUCBAD PTR(31),         /* UCB POINTER FOR THIS DEVICE     */
*     3 DEVFLAG1 CHAR(1),         /* DEVICE FLAG BYTE 1              */
*       5 ONLINE BIT(1),          /* IF 1- DEVICE IS ONLINE          */
*       5 PRIMARY BIT(1),         /* IF 1- DEVICE IS PRIMARY         */
*       5 DPDONE BIT(1),          /* IF 1- DEVICE IS DATA PROTECTED  */
*       5 ACTIVE BIT(1),          /* IF 1- DEVICE IS ACTIVE          */
*       5 ALOCATED BIT(1),        /* IF 1- DEVICE IS ALOCATED        */
*       5 GRABED BIT(1),          /* IF 1- DEVICE IS GRABBED 2NDARY  */
*       5 FILEPRT BIT(1),         /* IF 1- DEVICE IS FILE PROTECTED  */
*        5 SYMBSSID BIT(1),        /* SSID IN SYMB NAME FLD  @Y30LPAW*/
*     3 DEVFLAG2 CHAR(1),         /* DEVICE FLAG BYTE 2              */
*       5 DSNAME BIT(1),          /* IF 0 AND ALOCATED=1-DATA SET
*                                     NAME IS OSOLTEP1.
*                                    IF 1 AND ALOCATED=1-DATA SET
*                                     NAME IS OSOLTEP2.              */
*       5 SHARED BIT(1),          /* IF 1-DEVICE IS SHARED           */
*       5 CEVOLUMN BIT(1),        /* IF 1-DASD   HAS A CE VOLUME ON  */
*       5 STANDLBL BIT(1),        /* IF 1-TAPE   HAS A STANDARD LABLE*/
*       5 HIODONE BIT(1),         /* IF 1-HALT I/O DONE TO THIS DEV  */
*       5 EXIOLVL3 BIT(1),        /* IF 1-EXIO MACRO WAS A LEVEL 3   */
*       5 PCIIND BIT(1),          /* IF 1-A PCI INTERRUPT OCCURRED   */
*       5 *        BIT(1),        /* UNUSED                          */
*     3 DEVFLAG3 CHAR(1),         /* DEVICE FLAG BYTE 3              */
*       5 ANRNOTST BIT(1),        /*                                 */
*       5 *        BIT(1),        /* UNUSED                          */
*       5 *        BIT(1),        /* UNUSED                          */
*       5 TAPEBIT  BIT(1),        /* UNUSED                          */
*       5 NOTEST   BIT(1),        /* NOT TESTABLE                    */
*       5 DEVALC   BIT(1),        /* ALLOCATED                       */
*       5 WAITPOST BIT(1),        /* WAITIO IS POSTING               */
*       5 REISPEUD BIT(1),        /* REI PSEUDO DEV TAB              */
*     3 DEVFLAG4 CHAR(1),         /* DEVICE FLAG BYTE 4              */
*       5 DEVREMDA BIT(1),        /* DEV DISABLED BY OLTEP           */
*       5 DEVREMEA BIT(1),        /* DEV ENABLED BY OLTEP            */
*       5 RESERVD1 BIT(1),        /* UNUSED                          */
*       5 DEVOPVAR BIT(1),        /* OP VARY OFFLINE REQ.    @ZA52963*/
*       5 DEVVAR   BIT(1),        /* SET OFFLINE BY OLTEP    @ZA52963*/
*       5 DEVENQNG BIT(1),        /* DEVICE ENQUEUE UNSUCC.  @ZA52963*/
*       5 DEVASGN  BIT(1),        /* ASSIGN FAILED FOR DEVICE    @H1A*/
*       5 *        BIT(1),        /* UNUSED                          */
*     3 DEVLOEXT CHAR(6),         /* LOW EXTENT FOR THIS DEVICE      */
*       5 LOEXTBB CHAR(2),        /* LOW EXTENT BB                   */
*       5 LOEXTCC CHAR(2),        /* LOW EXTENT CC                   */
*       5 LOEXTHH CHAR(2),        /* LOW EXTENT HH                   */
*     3 DEVHIEXT CHAR(6),         /* HIGH EXTENT FOR THIS DEVICE     */
*       5 HIEXTBB CHAR(2),        /* HIGH EXTENT BB                  */
*       5 HIEXTCC CHAR(2),        /* HIGH EXTENT CC                  */
*       5 HIEXTHH CHAR(2),        /* HIGH EXTENT BB                  */
*     3 TAPELABL CHAR(1),         /* DATA BYTE FOR TAPE LABEL SAVE   */
*     3 *        CHAR(1),         /* UNUSED                          */
*     3 DEVMODE CHAR(1),          /* MODE SET SAVE AREA FOR TAPE     */
*     3 DEVEXPOS CHAR(1),         /* EXPOSURE NUMBER FOR MULTI-EXPO-
*                                     SURE TYPE DEVICE-2305.         */
*     3 DEVHEXAD CHAR(4),         /* DEVICE ADDRESS IN HEX           */
*       5 DEVADPAD CHAR(2),       /* 2 BYTES PADDING                 */
*       5 DEVAD    CHAR(2),       /* 2 BYTE HEX DEVICE ADDRESS       */
*         7 *        BIT(4),      /* NOT APPLICABLE                  */
*         7 DEVCHANL BIT(4),      /* DEVICE CHANNEL ADDRESS          */
*         7 DEVCTRLU BIT(4),      /* DEVICE CONTROL UNIT ADDRESS     */
*         7 DEVADDR  BIT(4),      /* DEVICE ADDRESS                  */
*     3 DEVDESCR CHAR(4),         /* DEVICE DESCRIPTORS              */
*       5 DEVMODEL CHAR(1),       /* DEVICE MODEL NUMBER             */
*       5 DEVFEATR CHAR(1),       /* DEVICE FEATURES                 */
*       5 DEVCLASS CHAR(1),       /* DEVICE CLASS                    */
*       5 DEVUNTYP CHAR(1),       /* DEVICE UNIT TYPE                */
*     3 DEVCDSCT CHAR(1),         /* ACTUAL CDS INFORMATION BYTE CNT */
*     3 DEVCDSFG CHAR(2),         /* FLAG BYTES FROM CDS             */
*       5 CDSFLAG1 CHAR(1),       /* CDS FLAG BYTE 1                 */
*         7 CDSFILPT BIT(1),      /* RUN FILE PROTECT MODE IF 1      */
*         7 CDSSHRED BIT(1),      /* DEVICE IS SHARED IF 1           */
*         7 CDSCEMNT BIT(1),      /* CE VOLUME IS MOUNTED IF 1       */
*         7 CDSEXMSK BIT(1),      /* EXTERNAL SIGNAL MASK IN CDS BYTE
*                                     11 IF 1                        */
*         7 CDSYMBLC BIT(1),      /* SYMBOLIC NAME IN CDS BYTES 12-19
*                                     IF 1                           */
*         7 CDS2CHSW BIT(1),      /* 2 CHANNEL SWITCH ON THIS DEVICE
*                                     IF 1                           */
*         7 CDSREMDV BIT(1),      /* THIS CDS FOR A REMOTE DEVICE
*                                     IF 1                           */
*         7 CDSLNCON BIT(1),      /* LINE CONNECTION REQUIRED FOR
*                                     THIS DEVICE IF 1               */
*       5 CDSFLAG2 CHAR(1),       /* CDS FLAG BYTE 2                 */
*         7 CDSNOPRI BIT(1),      /* DON'T ASSIGN THIS DEVICE AS
*                                     PRIMARY IF 1                   */
*         7 *        BIT(1),      /* UNDEFINED                       */
*         7 *        BIT(1),      /* UNDEFINED                       */
*         7 *        BIT(1),      /* UNDEFINED                       */
*         7 *        BIT(1),      /* UNDEFINED                       */
*         7 *        BIT(1),      /* UNDEFINED                       */
*         7 *        BIT(1),      /* UNDEFINED                       */
*         7 *        BIT(1),      /* UNDEFINED                       */
*     3 CDSEXTSG CHAR(1),         /* CDS EXTERNAL SIGNAL MASK IF FLAG
*                                     1 BIT 3 IS 1                   */
*     3 CDSYMNAM CHAR(8),         /* SYMBOLIC NAME FOR THIS DEVICE
*                                     IF FLAG 1 BIT 4 IS ON          */
*     3 SAVMDMSK CHAR(1),         /* SAVED MODESET/FILEMASK          */
*     3 DEVINTPT CHAR(1),         /* COUNT OF INTERRUPTS POSTED IN
*                                     OECB TO THIS POINT. USED TO
*                                     SYNCHRONIZE WAITIO-POLL POSTING
*                                     AND NAPA-IFDOLT58              */
*     3 ALCINDEX CHAR(1),         /* INDEX FOR DRUM ALLOC    @ZA07949*/
*     3 DEVEXPAN CHAR(1),         /* 1 CHAR FOR EXPANSION            */
*     3 DVTABEND CHAR(0);         /* END OF DEVICE TABLE             */
./ ADD NAME=IFDMOD
         MACRO
&NAME    IFDMOD &LOAD=,&CALL=,&DELETE=,&LIST=,&C=2
*/***********************************************************@ZM00952*/
*/*           IFDMOD                                         @ZM00952*/
*/*OLTEP VS2                                                 @ZM00952*/
*/*                                                          @ZM00952*/
&NAME    BRING LOAD=&LOAD,CALL=&CALL,DELETE=&DELETE,LIST=&LIST,C=&C
         MEND
./ ADD NAME=IFDPATCH
         MACRO
         IFDPATCH
         LCLA  &L
         LCLC  &MOD,&N
&N       SETC  '&SYSECT'
&L       SETA  K'&N-1
&MOD     SETC  '&SYSECT'(&L,2)
**********************************************************************
*                                                                     *
* THIS MACRO IS USED TO PROVIDE UNIFORM PATCH AREAS FOR OLTEP         *
* IT WILL PROVIDE THE GREATER OF 50 BYTES OR FIVE PERCENT OF CODE     *
* THIS MACRO HAS BEEN UPDATED 7/10/73 TO PROVIDE IMPROVED FLEXIBILITY *
* THIS MACRO IS NEW FOR MVM                                           *
*                                                                     *
**********************************************************************
PATCH&MOD DC    ((*-&SYSECT)/40)S(*)         .   PATCH AREA
         ORG   PATCH&MOD           RETURN TO START OF PATCH AREA
         DC    24S(*)              AT LEAST 50 BYTES
         ORG
         DC    S(*)                LAST 2 BYTES OF PATCH AREA
         MEND
./ ADD NAME=IFDPF1
*
*        %GOTO LABEL1;                  /*
         MACRO
         IFDPF1 &V,&X,&Z,&S                                     X01906
         AIF   ('&V' EQ 'DS').SKP1
CHASCT   &V    F&Z .                    SECTION CONTROL TABLE
         DC    H'00' .                  ROUTINE MASKS
         AIF   ('&S' NE 'AOS12').SK0                            X01906
.SK01    ANOP
         DC    X'8601' .                OS DRIVER AND SCT LEVEL X01906
         &V    7F&Z .                   SCT WORD 2 THRU 8       X01906
         DC    X'08000000' .            SCT WORD 9             X02008
         &V    10F&Z .                  SCT WORD 10 THRU 19     X01906
         AGO   .SK0A                                            X01906
.SK0     ANOP                                                   X01906
         AIF   ('&S' EQ 'MVM22').SK01
         DC    X'8600' .                OS DRIVER               X01906
         &V    18F&Z .                  SCT CONTINUED
.SK0A    ANOP                                                   X01906
         DC    A(OLTTAB) .              LINK TABLE ADDRESS
         DC    A(UTCOM) .               UNIT TEST PASSON AREA POINTER
         DC    A(EXTBUF) .              EXT BUFFER POINTER
         AIF   ('&S' NE 'AOS12').SKP2
.SK0B    ANOP
         DC    V(IFDOLT00) .            INITIALIZATION MODULE  X02008
LGWRTCT  DC    10F'00' .                LAST SCT WORDS         X02008
         AGO   .SK1
.SKP1    ANOP
CHASCT   &V    23F&Z .                  SECTION CONTROL TABLE
.SKP2    ANOP
         AIF   ('&S' EQ 'MVM22').SK0B
         &V    F&Z .                    POINTER FOR FUTURE EXPANSION
         AIF   ('&S' NE 'AOS12').SK1                            X01906
LGWRTCT  &V    10F&Z .                  LAST SCT WORDS         X02008
.SK1     ANOP                                                   X01906
INBUFPTR &V    F&Z .                    ADDRESS OF ITEM IN BUFFER
INBUFR   &V    72&X&Z .                 INPUT BUFFER
PRTBUFR  &V    124&X&Z .                PRINTING BUFFER
SECPTR   &V    F&Z .                    ACTIVE SECTION ENTRY POINT
UTENT    &V    F&Z .                    FIRST UTS INSTRUCTION
         AIF   ('&V' EQ 'DS').SKP6
DATPTR   DC    V(IFDOLT52) .            PTR TO DP ROOT MODULE
DATIND   DC    X'A404' .                OLTEP DATA INDICATOR
         AGO   .SKP7
.SKP6    ANOP
DATPTR   DS    F .                      PTR TO DP ROOT MODULE
DATIND   DS    2C .                     OLTEP DATA INDICATOR
.SKP7    ANOP
PGMTAB   &V    8&X&Z .                  ACTIVE PROGRAM ID
SECLST   &V    138&X&Z .                SECTION LIST
APPTRS   DS    0CL12 .                  APPENDAGE POINTERS       Y02008
PCIEXIT  &V    F&Z .                    PTR TO PCI EXIT          Y02008
NORMEXIT &V    F&Z .                    PTR TO NORMAL EXIT RTN   Y02008
ABNMEXIT &V    F&Z .                    PTR TO ABNORMAL EXIT RTN Y02008
DIEPTR   &V    F&Z .                    PTR TO DIS INT EXIT      Y02008
IOSCB    DS    0CL136 .                 IOS CONTROL BLOCK        Y02008
MODIOSB  DS    0CL108 .                 MODEL OF IOSB            Y02008
         &V    108&X&Z .                                         Y02008
MODUSECB DS    0CL24 .                  MODEL OF USE CONTROL BLK Y02008
         &V    24&X&Z .                                          Y02008
OECBWRD1 DS    0F .                     OECB WORD 1              Y02008
OECBSNSC &V    &X&Z .                   OECB SENSE COUNT         Y02008
OECBINCT &V    &X&Z .                   OECB INTERRUPT COUNT     Y02008
OECBX    &V    2&X&Z .                                           Y02008
EFCTRCB  DS    0CL20 .                  IO EFFECTOR CONTROL BLK  Y02008
CCWPTR   &V    F&Z .                    CCW PTR                  Y02008
DVTPTR   &V    F&Z .                    DEVICE TABLE PTR         Y02008
FLGA     &V    &X&Z .                   FLAG BYTE A              Y02008
BYPASPFX EQU   X'80' .                  BYPASS FUNCTION          Y02008
CEDEPOST EQU   X'40' .                  CE-DE SEPARATION         Y02008
GDP      EQU   X'20' .                  GUARANTEED DEVICE PATH   Y02008
SPEXPOS  EQU   X'10' .                  SPECIFIC EXPOSURE        Y02008
FLGB     &V    &X&Z .                   FLAG BYTE B              Y02008
INTERNAL EQU   X'80' .                  INTERNAL CALL FOR IO     Y02008
ATTNIN   EQU   X'40' .                  ATTENTION FUNCTION       Y02008
VIRTCCWS EQU   X'20' .                  VIRTUAL CCW CHAIN        Y02008
OLDTECBX EQU   X'10' .                  OLD TECB IS IN USE       Y02008
FILEMSK  &V    &X&Z .                   FILE M ASK               Y02008
SNSCNT   &V    &X&Z .                   SENSE COUNT              Y02008
TECBPTRX &V    F&Z .                    TECB POINTER             Y02008
SEEKPTR  &V    F&Z .                    PTR TO OLD OLT SEEK ADDR Y02008
         AIF   ('&V' EQ 'DS').SKP7A
IORTNADR DC    V(IOEFFCTR) .            PTR TO IO EFFECTOR       Y02008
         AGO   .SKP7B
.SKP7A   ANOP
IORTNADR &V    F&Z .                    PTR TO IO EFFECTOR       Y02008
.SKP7B   ANOP
IODEVTAB DS    0CL36 .                  IO DEVICE TABLE          Y02008
IOENTRY1 DS    0CL12 .                  FIRST IO ENTRY           Y02008
IODEV1   &V    F&Z .                    PTR TO 1ST DEVICE        Y02008
IOSBPTR1 &V    F&Z .                    PTR TO IOSB FOR DEVICE 1 Y02008
IOECB1   &V    F&Z .                    ECB FOR DEVICE 1         Y02008
IOENTRY2 DS    0CL12 .                  SECOND IO ENTRY          Y02008
IODEV2   &V    F&Z .                    PTR TO 2ND DEVICE        Y02008
IOSBPTR2 &V    F&Z .                    PTR TO IOSB FOR DEVICE 2 Y02008
IOECB2   &V    F&Z .                    ECB FOR DEVICE 2         Y02008
IOENTRY3 DS    0CL12 .                  THIRD IO ENTRY           Y02008
IODEV3   &V    F&Z .                    PTR TO 3RD DEVICE        Y02008
IOSBPTR3 &V    F&Z .                    PTR TO IOSB FOR DEVICE 3 Y02008
IOECB3   &V    F&Z .                    ECB FOR DEVICE 3         Y02008
SELAFFN  &V    2&X&Z .                  SELECTED AFFN            Y02008
CHARAFFN &V    2&X&Z .                  CHAR REP OF SEL AFFN     Y02008
XXXXXXXX &V    36F&Z .                  NOT USED AT PRESENT      Y02008
         AIF   ('&V' EQ 'DS').SKP3
DEVTBPTR DC    A(DEVTAB) .              POINTER TO DEVICE TABLES 21050
TABLNGTH DC    AL2(56) .                LENGTH OF EACH DEVTABLE  21050
CESWT9   DC    X'00' .                  OLTEP SWITCHES
CESWT10  DC    X'00' .                  OLTEP SWITCHES           Y02008
         AIF   ('&S' NE 'AOS12').SK2                            X01906
.SK1A    ANOP
OPEN2    DC    F'0' .                   WAS PTR TO IOS MOD
OPEN3    DC    F'0' .                   WAS PTR TO APP. VECTOR TABLE
         AGO   .SK2A                                            X01906
.SK2     ANOP                                                   X01906
         AIF   ('&S' EQ 'MVM22').SK1A
OPEN2    DC    F'0' .                   WAS PTR TO IOS MOD
OPEN3    DC    F'0' .                   WAS PTR TO APP. VECTOR TABLE
.SK2A    ANOP                                                   X01906
PSCT     DC    A(CHASCT) .              ADDRESS OF CHASCT
DEVDEPAD &V    A(CHASCT+12) .           ACTIVE CHASCT ENTRY POINTER
TABAD    DC    A(OLTTAB) .              UNIT TEST LINK TABLE POINTER
#TABLE   EQU   TABAD .                  LABEL IN OLTEP MACROS
UTCOMAD  DC    A(UTCOM) .               UNIT TEST PASSON AREA POINTER
MCT      &V    C'1MCT' .                MODULE CONTROL TABLE
         AIF   ('&S' EQ 'MVM22').SK2A1
         DC    F'00' .                  PTR TO NEXT MCT
         AGO   .SK2A2
.SK2A1   ANOP
         DC    A(NEXTMCT) .             PTR TO NEXT MCT          X03008
.SK2A2   ANOP
         DC    X'8000' .                ROOT MODULE INDICATOR
         DC    C'00' .                  OLTEP ROOT
         DC    XL2'00' .                MODULE LENGTH
         AIF   ('&S' EQ 'AOS12').SK3A
         AIF   ('&S' EQ 'MVM22').SK3A
         DC    X'8000' .                ROOT MODULE INDICATOR
         DC    C'01' .                  TRANSIENT MANAGER ID
         DC    XL2'00' .                MODULE LENGTH
.SK3A    ANOP
         AIF   ('&S' NE 'MVM22').SK3C
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'05' .                  OLD EXIO ID              X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'06' .                  OLD WAITIO ID            X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'08' .                  OLD DPRINT ID            X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'09' .                  COMPARE ID               X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'10' .                  OLD CONVERT ID           X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'11' .                  RANDOM DATA ID           X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         AGO   .SK3E
.SK3C    ANOP
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'05' .                  OLD EXIO ID
         DC    XL2'00' .                MODULE LENGTH
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'06' .                  OLD WAITIO ID
         DC    XL2'00' .                MODULE LENGTH
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'08' .                  OLD DPRINT ID
         DC    XL2'00' .                MODULE LENGTH
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'09' .                  OLD COMPARE ID
         DC    XL2'00' .                MODULE LENGTH
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'10' .                  OLD CONVERT ID
         DC    XL2'00' .                MODULE LENGTH
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'11' .                  OLD RDATA ID
         DC    XL2'00' .                MODULE LENGTH
         AIF   ('&S' NE 'AOS12').SK3G
.SK3E    ANOP
         DC    X'8000' .                ROOT MODULE INDICATOR  X02008
         DC    C'12' .                  UTS LOADER ID          X02008
         DC    XL2'00' .                MODULE LENGTH          X02008
         AGO   .SK3H
.SK3G    ANOP
         AIF   ('&S' EQ 'MVM22').SK3E
.SK3H    ANOP
         AIF   ('&S' NE 'MVM22').SK3J
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'13' .                  OLD CECOM ID             X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'39' .                  NEW DPRINT ID            X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'16' .                  GETCONFG ID              X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'21' .                  GRAB ID                  X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'22' .                  ALLOCATE ID              X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'24' .                  READD ID                 X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'26' .                  LOGSCAN ID               X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'28' .                  PLINK ID                 X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'35' .                  NEW EXIO ID              X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'36' .                  NEW WAITIO ID            X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'37' .                  NEW CECOM ID             X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         AGO   .SK3K
.SK3J    ANOP
         DC    X'0100' .                OLD MODULE INDICATOR
         DC    C'13' .                  OLD CECOM ID
         DC    XL2'00' .                MODULE LENGTH
         DC    X'8000' .                ROOT MODULE INDICATOR
         DC    C'39' .                  DPRINT MODULE ID
         DC    XL2'00' .                MODULE LENGTH
.SK3K    ANOP
         AIF   ('&S' NE 'MVM22').SK3M
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'41' .                  NEW CONVERT ID           X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    V(IFDOLT00) .            OLTEP ADDRESS            X03008
         DC    V(IFDOLT05) .            OLD EXIO ADDRESS         X03008
         DC    V(IFDOLT06) .            OLD WAITIO ADDRESS       X03008
         DC    V(IFDOLT08) .            OLD DPRINT ADDRESS       X03008
         DC    V(IFDOLT09) .            COMPARE ADDRESS          X03008
         DC    V(IFDOLT10) .            OLD CONVERT ADDRESS      X03008
         DC    V(IFDOLT11) .            RANDOM DATA ADDRESS      X03008
         DC    V(IFDOLT12) .            LOADER ADDRESS           X03008
         DC    V(IFDOLT13) .            OLD CECOM ADDRESS        X03008
PARPRADR DC    V(IFDOLT39) .            NEW DPRINT ADDRESS       X03008
         DC    V(IFDOLT16) .            GETCONFG ADDRESS         X03008
         DC    V(IFDOLT21) .            GRAB ADDRESS             X03008
         DC    V(IFDOLT22) .            ALLOCATE ADDRESS         X03008
         DC    V(IFDOLT24) .            READD ADDRESS            X03008
         DC    V(IFDOLT26) .            LOGSCAN ADDRESS          X03008
         DC    V(IFDOLT28) .            PLINK ADDRESS            X03008
         DC    V(IFDOLT35) .            NEW EXIO ADDRESS         X03008
         DC    V(IFDOLT36) .            NEW WAITIO ADDRESS       X03008
         DC    V(IFDOLT37) .            NEW CECOM ADDRESS        X03008
         DC    V(IFDOLT41) .            NEW CONVERT ADDRESS      X03008
MCT1ADR  DC    A(MCT) .                 MCT ADDRESS              X03008
         AGO   .SKP4
.SK3M    ANOP
         DC    10XL6'00' .              REST OF MCT
         DC    V(IFDOLT00) .            OLTEP ADDRESS
         AIF   ('&S' NE 'AOS12').SK4                            X01906
         DC    6F'00' .                 MODULE ADDRESSES       X02008
         DC    V(IFDOLT12) .            UTS LOADER              X01906
         DC    F'00' .                  MODULE ADDRESS         X02008
         AGO   .SK4A                                            X01906
.SK4     ANOP                                                   X01906
         DC    8F'00' .                 MODULE ADDRESSES
.SK4A    ANOP                                                   X01906
PARPRADR DC    V(IFDOLT39) .            DPRINT MODULE ADDRESS
         DC    10F'00' .                MODULE ADDRESSES
MCT1ADR  DC    A(MCT) .                 MCT ADDRESS
         AGO   .SKP4
.SKP3    ANOP
DEVTBPTR DS    F .                      POINTER TO DEVICE TABLES 21050
TABLNGTH DS    2C .                     LENGTH OF EACH DEVTABLE  21050
CESWT9   DS    C .                      OLTEP SWITCHES
CESWT10  DS    C .                      OLTEP SWITCHES           Y02008
OPEN2    DS    F .                      WAS PTR TO IOS MOD       Y02008
OPEN3    DS    F .                      WAS PTR TO APP. VECTOR TABLE
PSCT     DS    F .                      ADDRESS OF CHASCT
DEVDEPAD DS    F .                      ACTIVE CHASCT ENTRY POINTER
TABAD    DS    F .                      UNIT TEST LINK TABLE POINTER
#TABLE   EQU   TABAD .                  LABEL IN OLTEP MACROS
UTCOMAD  DS    F .                      UNIT TEST PASSON AREA POINTER
MCT      DS    208C .                   MODULE CONTROL TABLE
PARPRADR EQU   MCT+164 .                DPRINT MODULE ADDRESS
MCT1ADR  DS    F .                      MCT ADDRESS
.SKP4    ANOP
WKSVC    &V    4F&Z .                   SVC WORK AREA
ROPT     EQU   MCT1ADR+8 .              SVC PARAMETER LIST
OLTTAB   &V    10F&Z .                  LINK TABLE
TAB28    EQU   OLTTAB+28 .              NEW MACRO ENTRY POINT
LOGADR   &V    F&Z .                    POINTER TO LOGSCAN MODULE
SCHEDSA  &V    F&Z .                    SAVE AREA IN SCHEDULER
SATAB    &V    3F&Z .                   SYSTEM ASSIGNMENT TABLE
PLKMOR   &V    4F&Z .                   PLINK AND MORECORE MANAGEMENT
REGX     &V    F&Z .                    ACTIVE UCB ADDRESS POINTER
TUCBAD1  &V    F&Z .                    FIRST ACTIVE UCB ADDRESS
TUCBAD2  &V    F&Z .                    SECOND ACTIVE UCB ADDRESS
TSTDEBAD &V    F&Z .                    TEST DEB ADDRESS
ECB3     &V    F&Z .                    ECB FOR DYN COMMUNICATIONS
UTCOM    &V    16F&Z .                  UNIT TEST PASSON AREA
EXTBUF   &V    14F&Z .                  EXT BUFFER
DPRDEBAD &V    F&Z .                    DPRINT MODULE DEB ADDRESS
PRIDVPTR &V    F&Z .                    ACTIVE PRIME DEVTAB
SECDVPTR &V    F&Z .                    LAST GRAB DEVICE
         AIF   ('&V' EQ 'DS').SKP9
REDEFINE DC    V(CECINP03) .            CE COMM ENTRY IN IFDOLT30Y02906
COMMINT  DC    V(FISTERR) .             DYN COMM ENTRY - IFDOLT30Y02906
NEXTREC  DC    V(CECINP02) .            NEXT INPUT REC-IFDOLT30  Y02906
         AGO   .SK10
.SKP9    ANOP
REDEFINE &V    F&Z .                    CE COMM ENTRY IN IFDOLT30Y02906
COMMINT  &V    F&Z .                    DYN COMM ENTRY - IFDOLT30Y02906
NEXTREC  &V    F&Z .                    NEXT INPUT REC-IFDOLT30  Y02906
.SK10    ANOP
ADSVAREA &V    F&Z .                 IFDOLT30 1ST SAVE ADDRESS
ECB37    &V    F&Z .                    CECOM ECB
REPLY37  &V    18F&Z .                  CECOM INPUT BUFFER
MSGAD37  &V    F&Z .                    OLTS BUFFER ADDRESS
TPSAVE   &V    4&X&Z .                  TEST ID
TLCOUNT  &V    H&Z .                    TEST LOOP COUNT
HRTSEL   &V    2&X&Z .                  HIGHEST ROUTINE SELECTED
SAVECNT &V     H&Z .                    COUNTER FOR DEVICE DECODERS
         &V    H&Z .                    TEST LOOP RUN           X01906
SAVENT   &V    F&Z .                    LAST INCLUSIVE SERIES ENTRY
CESWT    &V    9&X&Z .                  OLTEP SWITCHES GROUPED
CESWT1   EQU   CESWT+1 .                OLTEP SWITCHES
CESWT2   EQU   CESWT+2 .                OLTEP SWITCHES
CESWT3   EQU   CESWT+3 .                OLTEP SWITCHES
CESWT4   EQU   CESWT+4 .                OLTEP SWITCHES
CESWT5   EQU   CESWT+5 .                OLTEP SWITCHES
CESWT6   EQU   CESWT+6 .                OLTEP SWITCHES
CESWT7   EQU   CESWT+7 .                OLTEP SWITCHES
CESWT8   EQU   CESWT+8 .                OLTEP SWITCHES
DYNCOM   &V    &X&Z .                   RESPONSE BUFFER DYN MSG
SECTUSE  &V    &X&Z .                   NUMBER OF SECTIONS RUN
UNICTR   &V    &X&Z .                   NUMBER OF UNITS TO RUN
UNITUSE  &V    &X&Z .                   NUMBER OF UNITS RUN
DPLEVEL  &V    &X&Z .                   MESSAGE PRINTING LEVEL
CNT37    &V    &X&Z .                   LENGTH OF CECOM REPLY
READDSV  &V    6&X&Z .                  READD SAVE AREA
         &V    3&X&Z .                  NA                      X01906
         AIF   ('&V' EQ 'DS').SKP5
READDMOD &V    V(IFDOLT51) .            READD MODULE ADDRESS
RDCBPTR  &V    V(READDCB) .             READD DCB IN IFDOLT51    Y02906
MSGMOD   &V    V(IFDMSG00) .            RESIDENT MESSAGE MODULE
ENDJOB   &V    F&Z .                    INITIALIZATION SAVE AREA
MHRPTR   DC    V(IFDOLT55) .            POINTER TO MESSAGE HANDLER
RTALKBUF DC    V(DEDBUF) .              PTR TO DED BUFR-IFDOLT55 Y02906
RINBUF   DC    V(REMINBUF) .            PTR REMOTE INBUFRIFDOLT55Y02906
REIDCBPT DC    V(REIDCB) .              PTR TO REI DCB-IFDOLT55  Y02906
REIOBPTR DC    V(REIOB) .               PTR TO REI IOB-IFDOLT55  Y02906
         AGO   .SKP8
.SKP5    ANOP
READDMOD &V    F .                      READD MODULE ADDRESS
RDCBPTR  &V    F .                      READD DCB IN IFDOLT51    Y02906
MSGMOD   &V    F .                      RESIDENT MESSAGE MODULE
ENDJOB   &V    F&Z .                    INITIALIZATION SAVE AREA
MHRPTR   &V    F .
RTALKBUF &V    F .                      PTR TO DED BUFR-IFDOLT55 Y02906
RINBUF   &V    F .                      PTR REMOTE INBUFRIFDOLT55Y02906
REIDCBPT &V    F .                      PTR TO REI DCB-IFDOLT55  Y02906
REIOBPTR &V    F .                      PTR TO REI IOB-IFDOLT55  Y02906
.SKP8    ANOP
REIECB   &V    F&Z .                    ECB FOR REMOTE COMMUNICATIONS
TALKECB  &V    F&Z .                    ECB FOR ONSITE COMMUNICATIONS
RESPBUF  &V    F&Z .                    POINTER TO REPLY BUFFER
REIUCB   &V    F&Z .                    UCB ADDRESS FOR 2955
CESWTR   &V    &X&Z .                   RETAIN 370 SWITCHES
CESWTR1  &V    &X&Z .
CESWTR2  &V    &X&Z .
CESWTR3  &V    &X&Z .
ZUESUCB  &V    H&Z . ACTIVE SPECIFIC EXPOSURE  BASE  UCB ADDRESS 2 BYTE
         &V    H&Z .                    NA                      X01906
EXPAND1  &V    F&Z .                    EXPANSION BYTES          21050
         AIF   ('&V' EQ 'DS').SK21
SYMPTR   &V    V(SYMLIB) .              SYMBOLIC LIB DCB-IFDOLT30Y02906
         AGO   .SK22
.SK21    ANOP
SYMPTR   &V    F .                      SYMBOLIC LIB DCB-IFDOLT30Y02906
.SK22    ANOP
PGFXLIST &V   4F&Z .               PAGE FIX LIST                 X01019
         AIF   ('&S' NE 'AOS12').SK5                            X01906
.SK5A    ANOP
PARTITEM &V    3F&Z .                   PARTITION ITEMS         X01906
PGFXOLT  &V    2F&Z .                   OLT PAGE FIX LIST        X03008
CORERSLT &V    2F&Z .                   GETMAIN CORE RESULTS     X03008
VRSIZE   &V    F&Z .                    REAL CORE AREA SIZE      X03008
         &V    2F&Z .                   NA                       X03008
         AGO   .SK5B
.SK5     ANOP                                                   X01906
         AIF   ('&S' EQ 'MVM22').SK5A
.SK5B    ANOP
         AIF   ('&S' NE 'MVM22').SK5D
         AIF   ('&V' EQ 'DS').SK5C
NEXTMCT  DC    A(MCT) .                 PTR TO PREVIOUS MCT      X03008
         DC    A(THIRDMCT) .            PTR TO NEXT MCT
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'42' .                  MORECORE ID              X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'43' .                  FREECORE ID              X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'44' .                  DIO ID                   X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'46' .                  EXTRACTOR ID             X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'AA' .                  DDATE ID                 X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'AB' .                  DTIME ID                 X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'8000' .                ROOT MODULE INDICATOR    X03008
         DC    C'AJ' .                  CUTEST ID                X03008
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    V(IFDOLT42) .            MORECORE ADDRESS         X03008
         DC    V(IFDOLT43) .            FREECORE ADDRESSC        X03008
         DC    V(IFDOLT44) .            DIO ADDRESS              X03008
         DC    V(IFDOLT46) .            EXTRACTOR ADDRESS        X03008
         DC    V(IFDOLTAA) .            DDATE ADDRESS            X03008
         DC    V(IFDOLTAB) .            DTIME ADDRESS            X03008
         DC    V(IFDOLTAJ) .            CUTEST ADDRESS           X03008
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
THIRDMCT DC    A(NEXTMCT) .             PTR TO PREVIOUS MCT
         DC    F'0' .                   PTR TO NEXT MCT          X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    X'0000' .                TRANSIENT MODULE         X03008
         DC    X'0000' .                MODULE ID                YM4982
         DC    XL2'00' .                MODULE LENGTH            X03008
         DC    13XL6'00' .              REST OF MCT              X03008
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    A(0) .                   MODULE ADDRESS           YM4982
         DC    13F'0' .                 MODULE ADDRESSES         X03008
         AGO   .SK5D
.SK5C    ANOP
NEXTMCT  &V    208C .                   NEXT MCT                 X03008
THIRDMCT &V    208C .                   THIRD MCT
.SK5D    ANOP
DEVTAB   &V    224F&Z .                 START OF DEVICE TABLES   21050
ENDCOM   EQU   * .                      END OF COMMON AREA
         MEND
                                        */
*%LABEL1:  ;
*/********************************************************************/
*/*      COMMON AREA MAP                                             */
*/********************************************************************/
* DECLARE
*  1 COMMAP BASED(COMMAPT) BDY(WORD),
*    3 CHASCT CHAR(92),                 /* SECTION CONTROL TABLE     */
*    3 DOLT00PT PTR(31),                /* INITIALIZATION MODULE     */
*    3 LGWRTCT CHAR(40),                /* LAST SCT WORDS            */
*    3 INBUFPTR PTR(31),                /* ADDR OF ITEM IN BUFFER    */
*    3 INBUFR CHAR(72),                 /* INPUT BUFFER              */
*    3 PRTBUFR CHAR(124),               /* PRINTING BUFFER           */
*    3 SECPTR PTR(31),                  /* ACTIVE SECTION ENTRY POINT*/
*    3 UTENT PTR(31),                   /* 1ST UT INSTRUCTION        */
*    3 DATPTR PTR(31),                  /* PTR TO DP ROOT MODULE     */
*    3 DATIND CHAR(2),                  /* OLTEP DATA INDICATOR      */
*    3 PGMTAB CHAR(8),                  /* ACTIVE PGM ID             */
*    3 SECLST CHAR(138),                /* SECTION LIST              */
*    3 PCIEXIT PTR(31),                 /* PTR TO PCI EXIT           */
*    3 NORMEXIT PTR(31),                /* PTR TO NORMAL EXIT        */
*    3 ABNMEXIT PTR(31),                /* PTR TO ABNORMAL EXIT      */
*    3 DIEPTR PTR(31),                  /* PTR TO DISABLED INT HNDLR */
*    3 IOSCB CHAR(136),                 /* CTRL BLK SET FOR IOS      */
*      5 MODIOSB CHAR(108),             /* MODEL IOSB                */
*      5 MODUSECB CHAR(24),             /* MODEL USE CONTROL BLOCK   */
*      5 OECBWRD1 CHAR(4),              /* 1ST WORD OF OECB          */
*        7 OECBSNSC CHAR(1),            /* SENSE COUNT FOR THIS REQ  */
*        7 OECBINCT CHAR(1),            /* INTERRUPT COUNT FLD       */
*        7 OECBX CHAR(2),               /* NOT USED                  */
*    3 EFCTRCB CHAR(20) BDY(WORD),      /* IOEFFECTOR CNTRL BLOCK    */
*      5 CCWPTR PTR(31),                /* PTR TO CCW LIST           */
*      5 DVTPTR PTR(31),                /* PTR TO DEVTBLE ENTRY      */
*      5 FLGA CHAR(1),                  /* FLAGS:                    */
*        7 BYPASPFX BIT(1),             /*   BYPASS PREFIX           */
*        7 CEDEPOST BIT(1),             /*   CE DE SEPERATION        */
*        7 GDP BIT(1),                  /*   GUARANTEED DEV PATH     */
*        7 SPEXPOS BIT(1),              /*   SPECIFIC EXPOSURE       */
*        7 * BIT(1),                    /*   NOT USED                */
*        7 * BIT(1),                    /*   NOT USED                */
*        7 * BIT(1),                    /*   NOT USED                */
*        7 * BIT(1),                    /*   NOT USED                */
*      5 FLGB CHAR(1),                  /* FLAGS:                    */
*        7 INTIRNAL BIT(1),             /*   INTERNAL CALL BY DP ETC.*/
*        7 ATTNIN BIT(1),               /*   ATTENTION FUNCTION      */
*        7 VIRTCCWS BIT(1),             /*   CCWS ARE VIRTUAL        */
*        7 OLDTECBX BIT(1),             /*   P3116 TECB              */
*        7 * BIT(1),                    /*   NOT USED                */
*        7 * BIT(1),                    /*   NOT USED                */
*        7 * BIT(1),                    /*   NOT USED                */
*        7 * BIT(1),                    /*   NOT USED                */
*      5 FILEMSK CHAR(1),               /*   FILEMASK OR MODE SET    */
*      5 SNSCNT CHAR(1),                /*   SENSE BYTE COUNT        */
*      5 TECBPTRX PTR(31),              /*   PTR TO TECB             */
*      5 SEEKPTR PTR(31),               /*   PTR TO SEEK ADDR        */
*    3 IOEFTRAD PTR(31),                /*   PTR TO IO EFFECTOR      */
*    3 IODEVTAB(3) CHAR(12) BDY(WORD),  /* IO DEVICE TABLES          */
*      5 IODEV1 PTR(31),                /*      PTR TO DEV TBLE NTRY */
*      5 IOSBPTR1 PTR(31),              /*      PTR TO IOSB          */
*      5 IOECB1 CHAR(4),                /*      ECB                  */
*        7 CMPLT CHAR(1),               /*                           */
*          9 WAITBIT BIT(1),            /* ECB WAITED ON             */
*          9 POSTBIT BIT(1),            /* ECB POSTED                */
*          9 CMPLCODE BIT(6),           /* SYSTEM COMPLETION CODE    */
*        7 * CHAR(1),                   /* NOT USED                  */
*        7 * CHAR(2),                   /*                           */
*          9 PSUDPOST BIT(1),           /* SET BY NAPA               */
*          9 * BIT(3),                  /* NOT USED                  */
*          9 WTCMPCD BIT(12),           /* SET BY WAITIO ON TMOUT    */
*    3 SELAFFN CHAR(2),                 /* SELECTED AFFN             */
*    3 CHARAFFN CHAR(2),                /* CHAR REP OF SEL AFFN      */
*    3 XXXXXXXX CHAR(144),              /* NOT USED                  */
*    3 DEVTBPTR PTR(31),                /* PTR TO DEVICE TABLES      */
*    3 TABLNGTH FIXED(15),              /* LENGTH OF EACH TABLE      */
*    3 CESWT9 CHAR(1),                  /* SWITCHES:                 */
*      5 CDSEQU BIT(1),                 /*   CDS EQUATE REQ          */
*      5 RESTBENT BIT(1),               /*   RESIDENT TBL ENTRY      */
*      5 VRCAP BIT(1),                  /*   VIRTUAL OR REAL OLT     */
*      5 *  BIT(4),                     /*   NOT USED                */
*    3 CESWT10 CHAR(1),                 /* SWITCHES OR FLAGS         */
*      5 MPSYS BIT(1),                  /* MP SYSTEM                 */
*      5 AFFNSET BIT(1),                /* AFFN SET                  */
*      5 VERBCALL BIT(1),               /* VERB SELECTED             */
*    3 OPEN2 PTR(31),                   /* NOT USED                  */
*    3 OPEN3 PTR(31),                   /* NOT USED                  */
*    3 PSCT PTR(31),                    /* PTR TO SCT                */
*    3 DEVDEPAD PTR(31),                /* ACTIVE SCT ENTRY PTR      */
*    3 TABAD PTR(31),                   /* UNIT TESTING TBLE PTR     */
*    3 UTCOMAD PTR(31),                 /* POINTER TO PASSON AREA    */
*    3 MCT CHAR(208) BDY(WORD),         /* MODULE CONTROL TABLE      */
*      5 * CHAR(164),                   /*                           */
*      5 PARPRADR PTR(31),              /* DPRINT MODULE ADDR        */
*      5 * CHAR(40),                    /*                           */
*    3 MCT1ADR PTR(31),                 /* PTR TO MCT                */
*    3 WKSVC CHAR(16) BDY(WORD),        /* SVC WORK AREA             */
*      5 * CHAR(4),                     /*                           */
*      5 ROPT PTR(31),                  /* SVC PARM LIST             */
*      5 * CHAR(8),                     /*                           */
*    3 OLTTAB CHAR(40) BDY(WORD),       /* LINK TABLE                */
*      5 * CHAR(28),                    /*                           */
*      5 TAB28 PTR(31),                 /* NEW MACRO ENTRY POINT     */
*      5 * CHAR(8),                     /*                           */
*    3 LOGADR PTR(31),                  /* PTR TO LOGSCAN MODULE     */
*    3 SCHEDSA PTR(31),                 /* PTR TO SCHEDULER SVAREA   */
*    3 SATAB CHAR(12),                  /* SYSTEM ASSIGNMENT TABLE   */
*    3 PLKMOR CHAR(16),                 /* PLINK AND MORECORE MNGMT  */
*    3 REGX PTR(31),                    /* ACTIVE UCB ADDR PTR       */
*    3 TUCBAD1 PTR(31),                 /* 1ST ACTIVE UCB ADDR       */
*    3 TUCBAD2 PTR(31),                 /* 2ND ACTIVE UCB ADDR       */
*    3 TSTDEBAD PTR(31),                /* TEST DEB ADDR             */
*    3 ECB3 CHAR(4),                    /* DYNAMIC COMMUNICATION ECB */
*    3 UTCOM CHAR(64),                  /* PASSON AREA               */
*    3 EXTBUF CHAR(56),                 /* EXTERNAL BUFFER           */
*    3 DPRDEBAD PTR(31),                /* PTR TO DPRINT DEB         */
*    3 PRIDVPTR PTR(31),                /* PTR TO ACTIVE PRIME DEVTAB*/
*    3 SECDVPTR PTR(31),                /* PTR TO LAST GRAB DEVICE   */
*    3 REDEFINE PTR(31),                /* CE COMM ENTRY IN    Y02906*/
*                                       /* IFDOLT30            Y02906*/
*    3 COMMINT PTR(31),                 /* DYN COMM ENTRY IN   Y02906*/
*                                       /* IFDOLT30            Y02906*/
*    3 NEXTREC PTR(31),                 /* NEXT INPUT RECORD   Y02906*/
*                                       /* ENTRY IN IFDOLT30   Y02906*/
*    3 ADSVAREA PTR(31),                /* IFDOLT30 1ST SVAREA ADDR  */
*    3 ECB37 CHAR(4),                   /* CECOM ECB                 */
*    3 REPLY37 CHAR(72),                /* CECOM INPUT BUFFER        */
*    3 MSGAD37 PTR(31),                 /* OLTS BUFFER ADDR          */
*    3 TPSAVE CHAR(4),                  /* TEST ID                   */
*    3 TLCOUNT FIXED(15),               /* TEST LOOP COUNT           */
*    3 HRTSEL FIXED(15),                /* HIGHEST ROUTINE SELECTED  */
*    3 SAVECNT CHAR(2),                 /* COUNTER FOR DEVICE DELODE */
*    3 * CHAR(2),                       /* TEST LOOP RUN             */
*    3 SAVENT CHAR(4),                  /* LAST INCLUSIVE SERIES     */
*    3 CESWITCH CHAR(9),                /* OLTEP SWITCHES            */
*      5 CESWT CHAR(1),                 /* CE SWITCH                 */
*        7 LEGALTST BIT(1),             /* LEGAL TEST ENTRY          */
*        7 SECDEV BIT(1),               /* DO DP FOR SEC DEV         */
*        7 OUTS BIT(1),                 /* OLD OLT LOADED            */
*        7 NUTS BIT(1),                 /* NEW OLT LOADED            */
*        7 LEGALDEV BIT(1),             /* LEGAL DEVICE ENTRY        */
*        7 REINT BIT(1),                /* NEW D/T/O/ ENTRY          */
*        7 FERINT BIT(1),               /* COMMUNICATION INTERVAL    */
*        7 * BIT(1),                    /*                           */
*      5 CESWT1 CHAR(1),                /* SWITCH 1:                 */
*        7 RTNFLD BIT(1),               /* ROUTINES SELECTED         */
*        7 SKTST BIT(1),                /*                           */
*        7 * BIT(1),                    /*                           */
*        7 WAITFG BIT(1),               /* WAITIO NEEDED             */
*        7 FILMSK BIT(1),               /* ALLOW MODESET CHANGE      */
*        7 * BIT(1),                    /*                           */
*        7 ONLINEOK BIT(1),             /* ONLINE TESTING OK         */
*        7 TPFLAG BIT(1),               /* UNITS COUNTER GTR THEN 1  */
*      5 CESWT2 CHAR(1),                /* SWITCH 2:                 */
*        7 NDCFO BIT(1),                /* NO DYN COMM FOR OLTEP     */
*        7 * BIT(1),                    /*                           */
*        7 FECOND BIT(1),               /* FIRST ERROR CONDITION     */
*        7 * BIT(1),                    /*                           */
*        7 INITENT BIT(1),              /* OPTION ENTRY DECODED      */
*        7 NDR BIT(1),                  /* NDR ENTRY                 */
*        7 TAPEHDR BIT(1),              /* TAPE LABEL TO RESTORE     */
*        7 * BIT(1),                    /*                           */
*      5 CESWT3 CHAR(1),                /* SWITCH 3:                 */
*        7 TALKVERB BIT(1),             /* TALK REQUESTED            */
*        7 BYPALDEV BIT(1),             /* STOP SCHEDULING DEVICES   */
*        7 BYPDEV BIT(1),               /* STOP TESTING CURRENT DEV  */
*        7 GRBCNTL BIT(1),              /* GRAB MACRO ISSUED         */
*        7 SUSDEL BIT(1),               /* MODULE CAN BE DELETED     */
*        7 TP1419 BIT(1),               /* TP DEVICES IN SYSTEM      */
*        7 CDEXIST BIT(1),              /* CDS LIBRARY EXISTS        */
*        7 NODP BIT(1),                 /* CANT DO DATA PROJECT      */
*      5 CESWT4 CHAR(1),                /* SWITCH 4:                 */
*        7 RSTRFLG BIT(1),              /* PAGE RESTORE -BYPASS WTO  */
*        7 DPRFLG BIT(1),               /* USE DPRINT 2ND SVAREA     */
*        7 WAITFLG BIT(1),              /* BYPASS DPRINT INTRNL WAIT */
*        7 WRTFLG BIT(1),               /* DPRINT WRITE REQUEST      */
*        7 * BIT(1),                    /* NOT USED                  */
*        7 WTORFLG BIT(1),              /* DPRINT WTOR REQUEST       */
*        7 RPLYFLG BIT(1),              /* REPLY EXPECTED            */
*        7 WTOFLG BIT(1),               /* DPRINT WTO REQUEST        */
*      5 CESWT5 CHAR(1),                /* SWITCH 5:                 */
*        7 HDRFLG BIT(1),               /* PRINT HEADER LINE         */
*        7 RSLTFLG BIT(1),              /* PRINT RESULTS             */
*        7 FFEFLG BIT(1),               /* 1ST ERROR HAS OCCURRED    */
*        7 FCEFLG BIT(1),               /* 1ST CAT ERROR HAS OCCURRED*/
*        7 PFEMSG BIT(1),               /* PRINT 1ST ERROR MSG       */
*        7 PCEMSG BIT(1),               /* PRINT CAT ERROR MSG       */
*        7 SYMBFLG BIT(1),              /* SYMBOLIC NAME IN HEADER   */
*        7 PRNTOPTN BIT(1),             /* PRINT PRIOR OPTIONS MSG   */
*      5 CESWT6 CHAR(1),                /* SWITCH 6:                 */
*        7 UTSCAL BIT(1),               /* UNIT TEST MACRO CALL      */
*        7 ATM BIT(1),                  /* PRINT * ON TERM MSG       */
*        7 EOFBIT BIT(1),               /* RESET INTERNAL SWITCHES   */
*        7 PFPMSG BIT(1),               /* PRINT FP MSG-CANCEL OLT   */
*        7 CODE5 BIT(1),                /* REPEAT TESTS              */
*        7 NORUN BIT(1),                /* DONT RUN SCHEDULED TEST   */
*        7 SECRUN BIT(1),               /* SCHEDULED TEST DONE       */
*        7 RTSTAE BIT(1),               /* ENTRY TO STAE             */
*      5 CESWT7 CHAR(1),                /* SWITCH 7:                 */
*        7 INCLST BIT(1),               /* INCLUSIVE DEVICE ENTRY    */
*        7 RETTO31 BIT(1),              /* NOT ALL DEVICES VALID     */
*       7 REMOTE BIT(1),                /* REMOTE TERM IN DEV ENTRY  */
*        7 * BIT(1),                    /* NOT USED                  */
*        7 * BIT(1),                    /* NOT USED                  */
*        7 * BIT(1),                    /* NOT USED                  */
*        7 VIRTUAL BIT(1),              /* RUNNING IN VIRTUAL        */
*        7 GOTINPUT BIT(1),             /* ENTRY TO D/T/O            */
*      5 CESWT8 CHAR(1),                /* SWITCH 8:                 */
*        7 LISTFIX BIT(1),              /* PARMLIST FIXED            */
*        7 * BIT(1),                    /* NOT USED                  */
*        7 * BIT(1),                    /* NOT USED                  */
*        7 READDCHK BIT(1),             /* READD ENTERED             */
*        7 OLTINVV BIT(1),              /* OLT IN VIRTUAL            */
*        7 SUTMSG BIT(1),               /* MSG 158I ISSUED           */
*        7 SNEWRUN BIT(1),              /* NEW TEST RUN              */
*        7 TALKHERE BIT(1),             /* TALK VERB ENTERED         */
*    3 DYNCOM CHAR(1),                  /* RESPONSE BUFFER DYN MSG   */
*    3 SECTUSE  CHAR(1),                /* NO. OF SECTIONS RUNYM03331*/
*    3 UNICTR  CHAR(1),                 /* NO. OF UNITS TO RUNYM03331*/
*    3 UNITUSE  CHAR(1),                /* NO.   OF UNITS RUN YM03331*/
*    3 DPLEVEL CHAR(1),                 /* MSG PRINTING LEVEL        */
*    3 CNT37  CHAR(1),                  /* CECOM REPLY LENGTH YM03331*/
*    3 READDSV CHAR(6),                 /* READD SVAREA              */
*    3 * CHAR(3),                       /* NOT USED                  */
*    3 READDMOD PTR(31),                /* PTR TO READD MODULE       */
*    3 RDCBPTR PTR(31),                 /* READD DCB PTRPTR -  Y02906*/
*                                       /* DCB IN IFDOLT51     Y02906*/
*    3 MSGMOD PTR(31),                  /* PTR TO RESIDENT MSG MODULE*/
*    3 ENDJOB PTR(31),                  /* PTR TO INIT SVAREA        */
*    3 MHRPTR PTR(31),                  /*                           */
*    3 RTALKBUF PTR(31),                /* PTR TO TALK BUFFER- Y02906*/
*                                       /* BUFFER IN IFDOLT55  Y02906*/
*    3 RINBUF PTR(31),                  /* PTR TO REMOTE INBUFRY02906*/
*                                       /* BUFR IN IFDOLT55    Y02906*/
*    3 REIDCBPT PTR(31),                /* PTR TO REI DCB-     Y02906*/
*                                       /* DCB IN IFDOLT55     Y02906*/
*    3 REIOBPTR PTR(31),                /* PTR TO REI IOB-     Y02906*/
*                                       /* IOB IN IFDOLT55     Y02906*/
*    3 REIECB CHAR(4),                  /* REMOTE COMM ECB           */
*    3 TALKECB CHAR(4),                 /* ONSITE COMM ECB           */
*    3 RESPBUF PTR(31),                 /* PTR TO REPLY BUFR         */
*    3 REIUCB PTR(31),                  /* 2955 UCB ADDR             */
*    3 CESWTR CHAR(1),                  /* RETAIN SWITCHES:          */
*      5 RETAINAC BIT(1),               /* RETAIN ACTIVE             */
*      5 REMERR BIT(1),                 /* REMOTE ERROR              */
*      5 REMONMSG BIT(1),               /* DONT SEND TO REMOTE       */
*      5 CENOMSG BIT(1),                /* DONT SEND TO CONSOLE      */
*      5 TRANSMSG BIT(1),               /* TRANSLATE MSG             */
*      5 IMRESP BIT(1),                 /*  ATTACH 04 REPLY CODE     */
*      5 EXECOUT BIT(1),                /*  SCCEPT 00 REPLY CODE     */
*      5 * BIT(1),                      /*  NOT USED                 */
*    3 CESWTR1 CHAR(1),                 /*  REMOTE SWITCH1:          */
*      5 ILLRESP BIT(1),                /*  INVALID RESP BY REMOTE   */
*      5 EXECANS BIT(1),                /*  REMOTE REPLIED TO 104E   */
*      5 CECOMANS BIT(1),               /*  REMOTE REPLIED TO OUTSMSG*/
*      5 INFOMSG BIT(1),                /*   3 MSG RCVD FROM REMOTE  */
*      5 RETRIEVE BIT(1),               /*  REIECB POSTED            */
*      5 REMANS BIT(1),                 /*  REMOTE CAN REPLY         */
*      5 EDOTMSG BIT(1),                /*  ATTACH 01 REPLY CODE     */
*      5 REIENTRY BIT(1),               /*  ENTRY FROM REI           */
*    3 CESWTR2 CHAR(1),                 /*  REMOTE SWITCH2:          */
*      5 REPLY00 BIT(1),                /*  ATTACH 00 REPLY CODE     */
*      5 * BIT(1),                      /*  NOT USED                 */
*      5 ONCOMM BIT(1),                 /*  ONSITE REPLIED           */
*      5 COMLOOP BIT(1),                /*  105D ISSUED - TALK REPLY */
*      5 WAIT BIT(1),                   /*  ISSUE WTOR               */
*      5 OPTERR BIT(1),                 /*  RE AND MI OPTIONS SELECT */
*      5 * BIT(1),                      /*  NOT USED                 */
*      5 DPMSGREI BIT(1),               /* REI REPLY NOT ALLOWED     */
*    3 CESWTR3 CHAR(1),                 /*  REMOTE SWITCH3           */
*    3 ZUESUCB FIXED(15),               /*  SPEC EXP BASE UCB ADDR   */
*    3 * CHAR(2),                       /*  NOT USED                 */
*    3 EXPAND1 CHAR(4),                 /* EXPANSION BYTES           */
*    3 SYMPTR PTR(31),                  /* SYMBOLIC LIB DCB PTRY02906*/
*                                       /* DCB IN IFDOLT30     Y02906*/
*    3 PGFXLIST CHAR(16),               /* PAGEFIX LIST              */
*    3 PARTITEM CHAR(12),               /* PARTITION ITEMS           */
*    3 PGFXOLT CHAR(8),                 /* OLT PAGEFIX LIST          */
*    3 CORERSLT CHAR(8),                /* GETMAIN CORE RESULTS      */
*    3 VRSIZE FIXED(31),                /* REAL CORE AREA SIZE       */
*    3 * CHAR(8),                       /* NOT USED                  */
*    3 NEXTMCT CHAR(208),               /* NEXT MCT                  */
*    3 THIRDMCT CHAR(208),              /* THIRD MCT                 */
*    3 DEVTAB CHAR(896);                /* START OF DEVICE TABLES    */
./ ADD NAME=IFGJCICB
*
*        % GO TO CICBL1;                /*
         MACRO
         IFGJCICB
IFGJCICB DSECT  ,                                                   */
*%CICBL1: ;
* /******************************************************************/
* /*                                                                */
* /*       ***** COMPATIBILITY INTERFACE CONTROL BLOCK *****        */
* /*                                                                */
* /* OS/VS2 RELEASE 02, 01/22/73, LEVEL=1                           */
* /* MACCOMP Y-2 SC1DB/SJD48                                        */
* /* MACSTAT Y-2 73022/DC20762                                      */
* /*                                                                */
* /* METHOD OF ACCESS                                               */
* /*     PL/S- %INCLUDE SYSLIB(IFGJCICB)                            */
* /*           REG = DCBCICB                                        */
* /*           RESPECIFY IFGJCICB BASED (REG)                       */
* /*     BAL-  IFGJCICB   ....NO MACRO OPERANDS                     */
* /*           L     REG,DCBCICB                                    */
* /*           USING IFGJCICB,REG                                   */
* /*                                                                */
* /*       NOTE: REG IS ANY GENERAL REGISTER OTHER THAN ZERO.       */
* /*             CICB EXISTS FOR EACH DCB OPEN TO A SPOOLED         */
* /*             (SYSIN/SYSOUT) DATA SET.                           */
* /*                                                                */
* /* FUNCTION                                                       */
* /*     CONTAINS INTERNAL WORK AREAS AND CONTROL BLOCKS USED BY    */
* /*     SAM SUBSYSTEM INTERFACE TO PROVIDE COMPATIBLE MAPPING      */
* /*     OF SAM REQUESTS INTO EQUIVALENT JOB ENTRY SUBSYSTEM        */
* /*     REQUESTS FOR ACCESS TO SPOOLED DATA STREAMS.               */
* /*                                                                */
* /******************************************************************/
*
*        % GO TO CICBL2;                /*
*
CIDUMIOB DS    0D        PSEUDO IOB - PROVIDES COMPATIBILITY
*                        WITH SAM USAGE. NOT USED BY SAM-SI.
CINXTIOB DS    A         POINTER TO NEXT IOB. ALWAYS INITIALIZED
*                        TO POINT TO ITSELF(IE LAST IN CHAIN).
CIECBCD  DS    XL4       PSEUDO ECB, ALWAYS MARKED 'POSTED'
CIIOB    DS    0F        START OF BASIC IOB SECTION
         DS    XL4       NOT USED
CIECBPTR DS    A         ADDRESS OF THE PSEUDO ECB IN PREFIX
         DS    XL4       NOT USED
CIRESID  DS    F         RESIDUAL COUNT (CSW). SET PRIOR TO EACH
*                        ENTRY TO SYNAD.
         DS    XL4       NOT USED
CIDCBPTR DS    A         ADDRESS OF THE DCB
*---------------------------------------------------------------------*
CIACBD   DS    CL56      DATA ACB
CIACBED  DS    CL20      ACB EXTENSION
*---------------------------------------------------------------------*
CISYNNAM DS    CL8       MODULE NAME OF SYNAD EXECUTOR
*---------------------------------------------------------------------*
CIREGSAV DS    0F        REGISTER SAVE AREA FOR SAM-SI
         DS    F         FIRST WORD - NOT USED
CIREGBC  DS    F         BACKWARD CHAIN POINTER (HSA)
CIREGFC  DS    F         FORWARD CHAIN POINTER (LSA)
CIREGS   DS    15F       REGISTERS - 14 THROUGH 12
*---------------------------------------------------------------------*
CIFLAGS  DS    0BL4      SAM SUBSYSTEM INTERFACE FLAGS
CIFLAG1  DS    B         RESERVED
CIFLAG2  DS    B         DCB DEFAULT FLAGS -
CIFMDSOR EQU   X'80'      DSORG DEFAULTED IN DCB
CIFMDEVT EQU   X'60'      DEVTYPE BEFORE OPEN
CIFLAG3  DS    B         CONTROL FLAGS -
CIFFSTP  EQU   X'80'      PUT LOCATE FIRST PASS COMPLETED
CIFCLOSE EQU   X'40'      CLOSE IS PROCESSING DCB
CIFRAGM  EQU   X'20'      RECORD AREA OBTAINED FOR BSAM VS
CIFVSRI  EQU   X'10'      VS RECORD IS INCOMPLETE
CIFVSEOB EQU   X'08'      END OF BLOCK FOR VBS RECORD
CIFERROR EQU   X'04'      SYNAD ENTERED FOR ERROR
CIFPOINT EQU   X'02'      INVALID POINT REQUEST
CIFLAG4  DS    B         RESERVED
*---------------------------------------------------------------------*
CIRPL    DS    CL76      REQUEST PARAMETER LIST (RPL)
CIRPLEXT DS    CL16      RPL EXTENSION
CIFDBCK  DS    CL20      FEEDBACK AREA FOR RPL
*---------------------------------------------------------------------*
CILWAREA DS    F         WORK AREA FOR SPANNED RECORDS-
*                         BSAM: SIZE OF RECORD AREA OBTAINED
*                         QSAM: RDW SAVE LOCATION
CIIOCNT  DS    0F        I/O COUNT FOR BSAM BLOCKED RECORDS
CISEGLEN DS    F         SEGMENT LENGTH FOR SPANNED RECORDS
CIBLKPTR DS    A         BSAM SPANNED BLOCK CURRENT ADDRESS
CIRAREA  DS    A         ADDRESS OF SPANNED RECORD AREA
CIRECPTR DS    A         SPANNED RECORD POINTER-
*                         BSAM: CURRENT LOCATION IN RECORD AREA
*                         QSAM: ADDRESS OF SPANNED SEGMENT
CISAMWA  DS    F         SAM-SI WORK AREA
CIWK1    DS    F         SAM-SI WORK AREA
CIWK2    DS    F         SAM-SI WORK AREA
*---------------------------------------------------------------------*
CISVCLST DS    0F        SVC CONTROL EXIT LIST
CISYNRC  DS    0XL1      SYNADAF RETURN CODE
CISYNADA DS    A         SYNADAF SUBROUTINE ADDRESS
CIBLDLRC DS    0XL1      BLDL RETURN CODE
CIBLDL   DS    A         BLDL SUBROUTINE ADDRESS
CIBSPRC  DS    0XL1      BSP RETURN CODE
CIBSP    DS    A         BSP SUBROUTINE ADDRESS
CIFEOVRC DS    0XL1      FEOV RETURN CODE
CIFEOV   DS    A         FEOV SUBROUTINE ADDRESS
CISTOWRC DS    0XL1      STOW RETURN CODE
CISTOW   DS    A         STOW SUBROUTINE ADDRESS
         SPACE
**********************************************************************
*                      END OF IFGJCICB                               *
**********************************************************************
         MEND  ,                                                    */
*%CICBL2: ;
*       DCL  1  IFGJCICB BDY (DWORD) BASED, /* JCICB DEFINITION      */
*              2 CIDUMIOB,                  /* PSEUDO IOB            */
*
*              /* TO PROVIDE COMPATIBILITY WITH SAM USAGE,THE FIRST
*                 SECTION OF THE CICB CONTAINS A DUMMY IOB.  THE
*                 IOB IS PROVIDED WITH A POSTED ECB AND THE CHAIN
*                 FIELD POINTING TO ITSELF. THE CSW RESIDUAL COUNT
*                 IS SET PRIOR TO ENTRY TO USER'S SYNAD ROUTINE.     */
*
*                3 CINXTIOB  PTR   (31),    /* PREFIX-NEXT IOB       */
*                3 CIECBCD   CHAR  (01),    /* PREFIX-ECB CODE       */
*                3 *         CHAR  (03),    /* PREFIX-NOT USED       */
*                3 CIIOB     CHAR  (04),    /* START BASIC IOB       */
*                3 CIECBPTR  PTR   (31),    /* ADDR OF ECB           */
*                3 *         CHAR  (04),    /* NOT USED              */
*                3 CIRESID   PTR   (31),    /* RESIDUAL COUNT        */
*                3 *         CHAR  (04),    /* NOT USED              */
*                3 CIDCBPTR  PTR   (31),    /* ADDR OF DCB           */
*
*              2 CIACBD      CHAR  (56),    /* DATA ACB             */
*              2 CIACBED     CHAR  (20),    /* ACB EXTENSION        */
*              2 CISYNNAM    CHAR  (08)     /* SYNAD MODULE NAME    */
*                            BDY (WORD),
*              2 CIREGSAV              ,    /* REGISTER SAVE AREA   */
*               3 *          PTR   (31),    /* NOT USED             */
*               3 CIREGBC    PTR   (31),    /* BACKCHAIN PTR        */
*               3 CIREGFC    PTR   (31),    /* FORWARD CHAIN PTR    */
*               3 CIREGS     CHAR  (60),    /* REGISTERS 14-12      */
*              2 CIFLAGS     BIT   (32),    /* SAM-SI FLAGS          */
*                3 CIFLAG1   BIT   (08),    /* RESERVED              */
*                3 CIFLAG2   BIT   (08),    /* DCB DEFAULT FLAGS     */
*                  4 CIFMDSOR BIT  (01),    /* DATA SET ORGANIZATION */
*                  4 CIFMDEVT BIT  (02),    /* DEVTYPE BEFORE OPEN   */
*                  4 *        BIT  (05),    /* RESERVED              */
*                3 CIFLAG3   BIT   (08),    /* CONTROL FLAGS         */
*                  4 CIFFSTP   BIT (01),    /* PUT LOCATE - 1ST PASS */
*                  4 CIFCLOSE  BIT (01),    /* CLOSE IS PROCESSING   */
*                  4 CIFRAGM   BIT (01),    /* RCD AREA/GETMAIN FLAG */
*                  4 CIFVSRI   BIT (01),    /* VS RECORD INCOMPLETE  */
*                  4 CIFVSEOB  BIT (01),    /* VBS END OF BLOCK      */
*                  4 CIFERROR  BIT (01),    /* SYNAD ENTERED FLAG    */
*                  4 CIFPOINT  BIT (01),    /* INVALID POINT REQUEST */
*                  4 *         BIT (01),    /* RESERVED              */
*                3 CIFLAG4   BIT   (08),    /* NOT USED              */
*              2 CIRPL       CHAR  (76),    /* REQUEST PARAMETER LST*/
*              2 CIRPLEXT    CHAR  (16),    /* RPL EXTENSION        */
*              2 CIFDBCK     CHAR  (20),    /* FEEDBACK AREA FOR RPL*/
*              2 CILWAREA    PTR   (31),    /* SAVE AREA FOR  XO1942*/
*                                           /* SPANNED RECORD USE   */
*                                           /* QSAM: RDW SAVE AREA  */
*                                           /* BSAM: REC AREA SIZE  */
*              2 CIIOCNT     PTR   (31),    /* I/O COUNT FOR BSAM
*                                              BLOCKED RECORDS.      */
*               3 CISEGLEN   PTR   (31),    /* SPANNED RECORD SEGMT
*                                              LENGTH                */
*              2 CIBLKPTR    PTR   (31),    /* SPANNED RECORD BLOCK
*                                              POINTER               */
*              2 CIRAREA     PTR   (31),    /* SPANNED RECORD AREA   */
*              2 CIRECPTR    PTR   (31),    /* SPANNED RECORD PTR-
*                                              BSAM:LOC IN REC AREA
*                                              QSAM:ADDR OF SEGMENT  */
*              2 CISAMWA     PTR   (31),    /* CI WORK AREA         */
*              2 CIWK1       PTR   (31),    /* CI WORK AREA         */
*              2 CIWK2       PTR   (31),    /* CI WORK AREA         */
*              2 CISVCLST              ,    /* SVC CONTROL EXIT LIST*/
*               3 CISYNADA   PTR   (31),    /* SYNADAF EXIT         */
*                4 CISYNRC   BIT   (08),    /* SYNADAF RETURN CODE  */
*               3 CIBLDL     PTR   (31),    /* BLDL EXIT            */
*                4 CIBLDLRC  BIT   (08),    /* BLDL RETURN CODE     */
*               3 CIBSP      PTR   (31),    /* BSP EXIT             */
*                4 CIBSPRC   BIT   (08),    /* BSP RETURN CODE      */
*               3 CIFEOV     PTR   (31),    /* FEOV EXIT            */
*                4 CIFEOVRC  BIT   (08),    /* FEOV RETURN CODE     */
*               3 CISTOW     PTR   (31),    /* STOW EXIT            */
*                4 CISTOWRC  BIT   (08);    /* STOW RETURN CODE     */
* /*                                                                */
*        %DCL  ON            CHAR,          /* SWITCH SET ON        */
*              OFF           CHAR,          /* SWITCH SET OFF       */
*              CIFDMASK      CHAR,
*              CIFMDVDA      CHAR,
*              CIFMDVUR      CHAR,
*              CIFMDVNL      CHAR;
* /*                                                                */
*        %ON  = '''1''B';
*        %OFF = '''0''B';
*        %CIFDMASK = '''01100000''B';       /* DEVTYPE SPECIFIED    */
*        %CIFMDVDA = '''01''B';             /* DIRECT ACCESS        */
*        %CIFMDVUR = '''10''B';             /* UNIT RECORD          */
*        %CIFMDVNL = '''00''B';             /* NONE SPECIFIED       */
* /******************************************************************/
* /*                                                                */
* /*     END OF IFGJCICB                                            */
* /*                                                                */
* /******************************************************************/
./ ADD NAME=IFGSDCB
* /*                                                                */
* /*                                                                */
* /******************************************************************/
* /*                                                                */
* /*                           SAM DCB                              */
* /*                                                                */
* /******************************************************************/
* /*                                                                */
* /*     CHANGE LEVEL = 16                                          */
* /*     DATE OF LAST CHANGE = 24 OCTOBER 75 ( 75*297 )             */
* /*     VS2 REL 030 CHANGES                                        */
* /*     C010500,025500,035000                              @ZA07578*/
* /*     C036000,036500,037000,037500                       @ZA05626*/
* /*                                                                */
* /* IFGSDCB (SAM DATA CONTROL BLOCK) DECLARATION                   */
* /*                                                                */
* /*                                                                */
*        DCL 1 IFGSDCB BASED,           /* SAM DCB DEFINITION       */
* /*                                                                */
*              2 *           CHAR  (16),    /* NOT USED BY JES-CI   */
*              2 *           FIXED (31),    /* NOT USED BY JES-CI   */
*              2 DCBBUFCB    PTR   (31),    /* BUFFER CONTROL BLOCK */
*               3 DCBBUFNO   PTR   (08),    /* NUMBER OF BUFFERS    */
*              2 DCBBUFL     FIXED (16),    /* BUFFER LNGTH @ZA07578*/
*              2 DCBDSORG    BIT   (16),    /* DATA SET ORGANIZATION*/
*              2 DCBIOBAD    PTR   (31),    /* IOB ADDR             */
*               3 DCBSVCXL   PTR   (31),    /* SVC EXIT LIST ADDR   */
*              2 *           BIT   (08),    /* NOT DEFINED          */
*               3 DCBHIARC   BIT   (08),    /* STORAGE HIERARCHY    */
*                4 DCBBFTEK  BIT   (08),    /* BUFFERING TECHNIQUE  */
*                 5 DCBBFALN BIT   (08),    /* BUFFER ALIGNMENT     */
*              2 DCBEODAD    PTR   (24),    /* END OF DATA EXIT ADDR*/
*              2 DCBRECFM    BIT   (08),    /* RECORD FORMAT        */
*              2 DCBEXLST    PTR   (24),    /* EXIT LIST ADDR       */
*              2 DCBDDNAM    CHAR(8)BDY(WORD), /* DDNAME FOR DCB    */
*               3 DCBTIOT    FIXED (15),    /* TIOT OFFSET          */
*               3 DCBMACRF   BIT   (16),    /* MACRO FORM           */
*               3 DCBIFLGS   BIT   (08),    /* I/O FLAGS            */
*               3 DCBDEBAD   PTR   (24),    /* DEB ADDRESS          */
*              2 DCBOFLGS    BIT   (08),    /* OPEN FLAGS           */
*              2 DCBREAD     PTR   (24),    /* ADDR OF READ MODULE  */
*               3 DCBWRITE   PTR   (24),    /* ADDR OF WRITE MODULE */
*                4 DCBGET    PTR   (24),    /* ADDR OF GET MODULE   */
*                 5 DCBPUT   PTR   (24),    /* ADDR OF PUT MODULE   */
*                  6 DCBIFLG BIT   (08),    /* IOS ERROR FLAGS      */
*                  6 DCBMACR BIT   (16),    /* MACRO FORM           */
*              2 DCBOPTCD    BIT   (08),    /* OPTION CODES         */
*              2 DCBCHECK    PTR   (24),    /* ADDR OF CHECK MODULE */
*               3 DCBGERR    PTR   (24),    /* ADDR OF GET SYNCH RTN*/
*                4 DCBPERR   PTR   (24),    /* ADDR OF PUT SYNCH RTN*/
*              2 DCBIOBL     BIT   (08),    /* IOB LENGTH IN DBL WDS*/
*              2 DCBSYNAD    PTR   (24),    /* ADDR OF ERROR ROUTINE*/
*              2 DCBCIND1    BIT   (08),    /* CONDITION INDICATOR  */
*              2 DCBCIND2    BIT   (08),    /* CONDITION INDICATOR  */
*              2 DCBBLKSI    FIXED (16),    /* MAX BLK SIZE @ZA07578*/
*              2 DCBWCPO     PTR   (08),    /* WCP OFFSET FROM IOB  */
*              2 DCBWCPL     PTR   (08),    /* LENGTH OF WCP        */
*              2 DCBOFFSR    PTR   (08),    /* OFFSET OF READ CCW   */
*              2 DCBOFFSW    PTR   (08),    /* OFFSET OF WRITE CCW  */
*              2 DCBIOBA     PTR   (31),    /* ADDR OF BSAM OR QSAM
*                                              OR BPAM IOB PREFIX   */
*               3 DCBCICB    PTR   (31),    /* ADDRESS OF JCICB     */
*              2 DCBEOBAD    PTR   (31),    /* END OF BUFFER ADDRESS*/
*               3 DCBLCCW    PTR   (31),    /* ADDRESS OF LAST CCW  */
*                4 DCBEOBR   PTR   (31),    /* ADDR OF EOB MODULE   */
*                  5 DCBNCP  PTR   (08),    /* NUMBER OF CHANNEL PGM*/
*              2 *           FIXED (31),    /* NOT DEFINED          */
*               3 DCBEOBW    PTR   (31),    /* ADDR OF EOB MODULE   */
*                4 DCBRECAD  PTR   (31),    /* ADDR OF LOGICAL RCD  */
*                 5 DCBCCCW  PTR   (31),    /* ADDR OF CCW          */
*              2 DCBDIRCT    FIXED (15),    /* BPAM DIRECTORY COUNT */
*               3 DCBQSWS    BIT   (08),    /* FLAGS                */
*              2 DCBLRECL    FIXED (16),    /* LRECL        @ZA07578*/
*              2 *           FIXED (31),    /* NOT DEFINED          */
*               3 DCBEROPT   BIT   (08),    /* ERROR OPTIONS@ZA05626*/
*               3 DCBCNTRL   PTR   (24),    /* ADDR OF CNTRL@ZA05626*/
*                4 DCBNOTE   PTR   (24),    /* ADDR OF NOTE @ZA05626*/
*                 5 DCBPOINT PTR   (24),    /* ADDR OF POINT@ZA05626*/
*              2 *           CHAR  (02),    /* RESERVED             */
*              2 DCBPRECL    FIXED (15),    /* PHYSICAL RECORD LNGTH*/
*              2 DCBEOB      PTR   (31);    /* ADDR OF EOB MODULE   */
* /*                                                                */
* /*  MACRO VARIABLES FOR THE SAM DCB                               */
*        %DCL  DCBMGET       CHAR,          /* QSAM GET             */
*              DCBMPUT       CHAR,          /* QSAM PUT             */
*              DCBOPEN       CHAR,          /* DCB IS OPEN          */
*              DCBNOPEN      CHAR,          /* DCB IS NOT OPEN      */
*              DCBNBUSY      CHAR,          /* DCB IS NOT BUSY      */
*              DCBNLOCK      CHAR,          /* DCB IS NOT LOCKED    */
*              DCBINPUT      CHAR,          /* SAM READ OR GET      */
*              DCBOUTPT      CHAR,          /* SAM WRITE OR PUT     */
*              DCBMREAD      CHAR,          /* BSAM READ            */
*              DCBMGLOC      CHAR,          /* GET LOCATE MODE      */
*              DCBMGMOV      CHAR,          /* GET MOVE MODE        */
*              DCBMPLOC      CHAR,          /* PUT LOCATE MODE      */
*              DCBMPMOV      CHAR,          /* PUT MOVE MODE        */
*              DCBMPSUB      CHAR,          /*                      */
*              DCBMGSUB      CHAR,          /*                      */
*              DCBQSLOC      CHAR,          /* QSAM LOCATE MODE     */
*              DCBQSMOV      CHAR,          /* QSAM MOVE MODE       */
*              DCBCINCI      CHAR,          /* CI MODE              */
*              DCBCINNC      CHAR,          /* NOT CI MODE          */
*              DCBRECB       CHAR,          /* BLOCKED RECORDS      */
*              DCBRECF       CHAR,          /* RECFM=FIXED          */
*              DCBRECU       CHAR,          /* RECFM=UNDEFINED      */
*              DCBRECV       CHAR,          /* RECFM=VARIABLE       */
*              DCBRECS       CHAR,          /* RECFM=SPANNED        */
*              DCBMWRIT      CHAR,          /* BSAM WRITE           */
*              DCBSKIP       CHAR;          /* SKIP ERROR OPTION TST*/
*
          /* MACRO ASSIGNMENTS FOR THE SAM DCB                      */
          %DCBMGET  = 'DCBMACRF(2)   = ''1''B';
          %DCBMPUT  = 'DCBMACRF(10)  = ''1''B';
          %DCBOPEN  = 'DCBOFLGS(4)   = ''1''B';
          %DCBNOPEN = 'DCBOFLGS(4)   = ''0''B';
          %DCBNBUSY = 'DCBOFLGS(8)   = ''0''B';
          %DCBNLOCK = 'DCBOFLGS(7)   = ''1''B';
          %DCBINPUT = 'DCBMREAD OR DCBMGET';
          %DCBOUTPT = 'DCBMWRIT OR DCBMPUT';
          %DCBMREAD = 'DCBMACRF(3)   = ''1''B';
          %DCBMWRIT = 'DCBMACRF(11)  = ''1''B';
          %DCBMGLOC = 'DCBMACRF(5)   = ''1''B';
          %DCBMGMOV = 'DCBMACRF(4)   = ''1''B';
          %DCBMPMOV = 'DCBMACRF(12)  = ''1''B';
          %DCBMPLOC = 'DCBMACRF(13)  = ''1''B';
          %DCBMPSUB = 'DCBMACRF(14)  = ''1''B';
          %DCBMGSUB = 'DCBMACRF(6)   = ''1''B';
          %DCBQSLOC = 'DCBMGLOC OR DCBMPLOC';
          %DCBQSMOV = 'DCBMGMOV OR DCBMPMOV';
          %DCBCINCI = 'DCBCIND1(5)   = ''1''B';
          %DCBCINNC = 'DCBCIND1(5)   = ''0''B';
          %DCBRECB  = 'DCBRECFM(4)   = ''1''B';
          %DCBRECF  = 'DCBRECFM(1:2) = ''10''B';
          %DCBRECU  = 'DCBRECFM(1:2) = ''11''B';
          %DCBRECV  = 'DCBRECFM(1:2) = ''01''B';
          %DCBRECS  = 'DCBRECFM(5)   = ''1''B';
          %DCBSKIP  = 'DCBEROPT(2)   = ''1''B';
* /******************************************************************/
* /*                                                                */
* /*            END OF IFGSDCB                                      */
* /*                                                                */
* /******************************************************************/
./ ADD NAME=IGFCDA
*         %GOTO CDA1;              /* BILINGUAL MAPPING MACRO
          MACRO
          IGFCDA  &DSECT=YES         */
*%CDA1:   ;
*/*******************************************************************
*
*         CHANNEL CHECK HANDLER DATA AREA
*
*********************************************************************
*
*    STATUS
*         OS/VS2 RELEASE 3.7, SU51
*
*    METHOD OF ACCESS
*
*         PL/S - DCL CDAPTR PTR
*
*         BAL  - IGFCDA   (MACRO CALL)
*                DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED
*                USING CDA,REG
*                LOAD REG WITH CDA ADDRESS
*
********************************************************************/
*%GOTO CDA2;                       /*
          SPACE 1
          AIF   ('&DSECT' EQ 'NO').CDA001
CDA       DSECT
          AGO   .CDA002
.CDA001   ANOP
CDA       DS    0F
.CDA002   ANOP
CDACCH6A  DC    AL4(0)             ADDRESS OF IGFC60           @YM6840
CDACCH7A  DC    AL4(0)             ADDRESS OF IGFC70           @YM6840
CDACCH8A  DC    AL4(0)             ADDRESS OF IGFC80           @YM6840
CDACCHIA  DC    AL4(0)             ADDRESS OF IGFCIC           @YM6840
CDACCHSL  DS    CL1                RELEASE LEVEL FROM CVT
          DS    CL7                RESERVED
          DS    0D
          AIF   ('&DSECT' EQ 'NO').CDA003
CDACCHM1  DS    CL64               MESSAGE BUFFER FORMAT       @G51BPLC
          AGO   .CDA007
.CDA003   ANOP
CDACCHM1  DS    0XL64
          DC    X'0039'        MESSAGE LENGTH
          DC    X'8000'        MCS FLAG FIELD
          DC    C'IGF002I '    MESSAGE ID
          DC    C'CHANNEL DETECTED ERROR ON '
          DC    C'   '         UNIT ADDRESS
          DC    C','
          DC    C'  '          PROCESSOR ADDRESS
          DC    C','
          DC    C'    '        BLAME FIELD
          DC    C','
          DC    C'  '          CCW COMMAND CODE
          DC    C','
          DC    C'    '        CSW UNIT AND CHANNEL STATUS
          DC    X'1000'        DESCRIPTOR CODES
          DC    X'4000'        ROUTING CODES
          DC    X'000000'      RESERVED
.CDA007   ANOP
*
*    END OF CHANNEL CHECK HANDLER DATA AREA
*
          MEND
*                                  */
*%CDA2:   ;
*
   DCL 1  CDA BASED(CDAPTR),
         2 CDACCH6A PTR(31),       /* ADDRESS OF IGFC60               */
         2 CDACCH7A PTR(31),       /* ADDRESS OF IGFC70               */
         2 CDACCH8A PTR(31),       /* ADDRESS OF IGFC80               */
         2 CDACCHIA PTR(31),       /* ADDRESS OF IGFCIC               */
         2 CDACCHSL CHAR(1),       /* RELEASE LEVEL FROM CVT          */
         2 CDACCHRS CHAR(7),       /* RESERVED                        */
         2 CDACCHM1 CHAR(64);      /* MESSAGE BUFFER FORMAT   @G51BPLC*/
          /* END OF CHANNEL CHECK HANDLER DATA AREA       */
./ ADD NAME=IGFDDPRM
*        %GOTO IGF010;  /*
         MACRO
         IGFDDPRM ,
*  5740-XYN COPYRIGHT IBM CORP 1980, 1983,
*  LICENSED MATERIAL-PROGRAM,
*  PROPERTY OF IBM,
*  REFER TO COPYRIGHT INSTRUCTIONS FORM G120-2083 */
*%IGF010: ;
* /* START OF SPECIFICATIONS ****
*
*01*  MODULE-NAME = IGFDDPRM
*
*01*  DESCRIPTIVE-NAME = DDR EXIT PARAMETER LIST
*
*01*  STATUS = OS/VS2 JBB1329
*
*01*  FUNCTION = MAPS THE PARAMETER LIST PASSED BY DDR TO THE
*                DDR EXIT
*
*01*  MODULE-TYPE = MACRO
*
*02*    PROCESSOR = ASSEMBLER AND PLS
*
*01*  NOTES
*
*       PLS - THIS MACRO WILL NOT EXPAND AS BASED UNLESS %IGFPLBS='YES'
*             IS SET PRIOR TO THE INCLUDE FOR THIS MACRO.
*             IF %IGFPLBS='YES' IS SPECIFIED, THIS CONTROL
*             BLOCK WILL EXPAND WITH  THE BASED ATTRIBUTE.     @ZMB0320
*       BAL - A DSECT WILL ALWAYS BE PRODUCED
*
*01*  DEPENDENCIES = THE DDR EXIT MUST NOT CHANGE ANY FIELDS IN
*                    THIS PARAMETER LIST EXCEPT FOR DDPEXITD AND
*                    DDPVFMSK.
*
*01*  CHANGE ACTIVITY =
*        A-000000-999999                                       @G384PLT
*        OZ60625                  PUT OUT WARNING MESSAGE IF DENSITIES
*                                 OF 'TO' AND 'FROM' DEVICES ARE
*                                 DIFFERENT
*
* PN  REASON RLSE    DATE   ORG   COMMENTS
* $H1=6872   JBB1329 811129 PDLT: INCLUDE IOSB ADDRESS IN DDR EXIT
*                                 PARAMETER LIST ON FROM VALIDATION
*                                 IF THIS IS A SYSTEM SWAP
* $P1=PPP6260 JBB1329 820730 PDLT: ALLOW EXIT TO BYPASS I/O ERROR TYPE
*                                  CHECKS
*
****END OF SPECIFICATIONS ****/
*%GOTO IGF020; /*
DDPLIST  DSECT
DDPID    DS    CL4                 ACRONYM 'DDP'
DDPENTRY DS    XL1                 INDICATES SWAP PROCESSING FROM WHICH
*                                  THE DDR EXIT IS BEING ENTERED
DDPVFRM  EQU   X'01'               THIS ENTRY IS MADE PRIOR TO DEVICE
*                                  DEPENDENT 'FROM' VALIDATION.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - DO DDR 'FROM' VALIDATION.
*                                         IF THIS RETURN CODE IS USED,
*                                         THE DDR EXIT CAN ELECT
*                                         TO BYPASS CERTAIN 'FROM'
*                                         VALIDATIONS CHECKS BY SETTING
*                                         DDPVFMSK (SEE BELOW FOR
*                                         A DESCRIPTION OF THIS FIELD.
*                                     4 - DDR EXIT COMPLETED FROM
*                                         VALIDATION AND THE DEVICE
*                                         CAN BE SWAPPED. DO NOT DO
*                                         DDR'S 'FROM' VALIDATION
*                                         CHECKS.
*                                    16 - DDR EXIT DETERMINED THAT
*                                         THE SWAP SHOULD BE CANCELLED.
DDPVTO   EQU   X'02'               THIS ENTRY IS MADE PRIOR TO DEVICE
*                                  DEPENDENT 'TO' COMPATIBILITY
*                                  VALIDATION.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - DO DDR 'TO' VALIDATION.
*                                     4 - DDR EXIT COMPLETED 'TO'
*                                         VALIDATION AND THE DEVICE
*                                         CAN BE SWAPPED TO. DO NOT
*                                         DO DDR'S 'TO' VALIDATION
*                                     8 - THE DDR EXIT DETERMINED
*                                         THAT THIS DEVICE COULD NOT
*                                         BE USED TO SWAP TO.
DDPOPREJ EQU   X'03'               THIS ENTRY IS MADE WHEN THE OPERATOR
*                                  REJECTS A VALIDATED 'TO' DEVICE.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO.
DDPPRSW  EQU   X'04'               THIS ENTRY IS MADE AFTER DDR HAS
*                                  TAKEN CONTROL OF THE DEVICE (I.E.,
*                                  UCBDDRSW AND QUIESCE TURNED ON)
*                                  AND BEFORE THE 'REWIND/UNLOAD' IF
*                                  TAPE AND PRIOR TO SWAPPING UCBS.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - CONTINUE SWAP.
*                                    16 - DDR EXIT ENCOUNTERED
*                                         UNRECOVERABLE ERRORS,
*                                         CANCEL SWAP.
DDPMOUNT EQU   X'05'               THIS ENTRY IS MADE PRIOR TO THE I/O
*                                  TO VERIFY MOUNT FOR TAPE DEVICES.
*                                  THE DDR EXIT MAY ELECT TO DO ITS
*                                  OWN LABEL VERIFICATION AND DATA
*                                  REPOSITIONING WHEN CALLED WITH THIS
*                                  CODE SET.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - EXIT DID NOT DO VOLUME
*                                         VERIFICATION OR DATA
*                                         POSITIONING, SWAP SHOULD BE
*                                         CONTINUED. IF THIS RETURN
*                                         CODE IS SET DDR WILL PROCEED
*                                         WITH ITS OWN ROUTINES FOR
*                                         VOLUME VERIFICATION.
*                                         NOTE: THIS RETURN CODE CAN
*                                         BE USED ONLY IF RETURN CODE
*                                         0 WAS USED WHEN ENTERED FOR
*                                         'FROM' VALIDATION AND
*                                         THE DDR EXIT DID NOT SET
*                                         DDPMILBL, DDPMERP, DDRMMTPD
*                                         OR DDPMOCEV.
*                                     4 - DDR EXIT DID VOLUME
*                                         VERIFICATION AND DATA
*                                         POSITIONING SUCCESSFULLY.
*                                     8 - DURING DDR EXIT PROCESSING,
*                                         THE EXIT DETERMINED THAT THE
*                                         VOLUME COULD NOT BE SWAPPED
*                                         TO THE SELECTED 'TO' DEVICE
*                                         BECAUSE OF DEVICE ERRORS
*                                         (E.G. I/O ERRORS) AND
*                                         ANOTHER 'TO' DEVICE SHOULD
*                                         BE SELECTED. IF THIS RETURN
*                                         CODE IS SET, DDR WILL
*                                         CONTINUE BY PUTTING OUT A
*                                         MESSAGE TO THE OPERATOR
*                                         'ERROR ON XXX, SELECT A NEW
*                                         DEVICE'.
*                                    12 - DURING DDR EXIT PROCESSING,
*                                         THE EXIT DID NOT READ THE
*                                         CORRECT VOL SER AFTER FIVE
*                                         ATTEMPTS TO DO SO. IF THIS
*                                         RETURN CODE IS SET, DDR
*                                         WILL CONTINUE WITH
*                                         REQUESTING THE OPERATOR
*                                         TO SELECT A NEW 'TO' DEVICE.
*                                    16 - THE EXIT ENCOUNTERED AN
*                                         UNRECOVERABLE ERROR WHICH
*                                         CANNOT BE CORRECTED BY
*                                         TRYING A NEW 'TO' DEVICE.
*                                         FORCE A PERMANENT ERROR ON
*                                         THE DEVICE BEING SWAPPED.
DDPREMNT EQU   X'06'               THIS ENTRY IS MADE WHEN DDR REQUESTS
*                                  A REMOUNT FOR TAPE DEVICES DUE TO A
*                                  WRONG VOLSER BEING MOUNTED.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO.
DDPREPOS EQU   X'07'               THIS ENTRY IS MADE AFTER VOLUME
*                                  VERIFICATION BY DDR AND PRIOR TO
*                                  DATA REPOSITIONING. THE EXIT CAN
*                                  ELECT TO DO ITS OWN DATA RE-
*                                  REPOSITIONING HERE.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - EXIT DID NOT DO
*                                         REPOSITIONING. SWAP SHOULD
*                                         BE CONTINUED. IF THIS RETURN
*                                         CODE IS SET DDR WILL PROCEED
*                                         WITH ITS OWN ROUTINES FOR
*                                         DATA POSITIONING.
*                                         NOTE: THIS RETURN CODE CAN
*                                         BE USED ONLY IF RETURN CODE
*                                         0 WAS USED WHEN ENTERED FOR
*                                         'FROM' VALIDATION AND
*                                         THE DDR EXIT DID NOT SET
*                                         ANY FIELDS IN DDPVFMSK.
*                                     4 - DDR EXIT DID DATA
*                                         POSITIONING SUCCESSFULLY.
*                                     8 - DURING DDR EXIT PROCESSING,
*                                         THE EXIT DETERMINED THAT THE
*                                         VOLUME COULD NOT BE SWAPPED
*                                         TO THE SELECTED 'TO' DEVICE
*                                         BECAUSE OF DEVICE ERRORS
*                                         (E.G. I/O ERRORS) AND
*                                         ANOTHER 'TO' DEVICE SHOULD
*                                         BE SELECTED. IF THIS RETURN
*                                         CODE IS SET, DDR WILL
*                                         CONTINUE BY PUTTING OUT A
*                                         MESSAGE TO THE OPERATOR
*                                         'ERROR ON XXX, SELECT A NEW
*                                         DEVICE'.
*                                    16 - THE EXIT ENCOUNTERED AN
*                                         UNRECOVERABLE ERROR WHICH
*                                         CANNOT BE CORRECTED BY
*                                         TRYING A NEW 'TO' DEVICE.
*                                         FORCE A PERMANENT ERROR ON
*                                         THE DEVICE BEING SWAPPED.
DDPUCLN  EQU   X'08'               THIS INDICATES THE EXIT IS BEING
*                                  ENTERED FOR CLEANUP OF AN
*                                  UNSUCCESSFUL SWAP OR DUE TO AN
*                                  ABNORMAL TERMINATION. RESOURCES
*                                  OBTAINED BY THE EXIT SHOULD BE
*                                  FREED.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO.
DDPSCLN  EQU   X'09'               THIS INDICATES THE EXIT IS BEING
*                                  ENTERED FOR CLEANUP OF A SUCCESSFUL
*                                  SWAP. ANY RESOURCES OBTAINED BY THE
*                                  EXIT SHOULD BE FREED.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO.
DDPVFMSK DS    XL1                 THIS FIELD CAN BE SET BY THE EXIT
*                                  WHEN CALLED WITH DDPENTRY=DDPVFRM
*                                  TO INDICATE TO DDR WHICH OF DDR'S
*                                  'FROM' VALIDATION CHECKS ARE NOT TO
*                                  BE DONE. (ONLY VALID IF RC=0 IS USED
*                                  WHEN DDPENTRY=DDPVFRM.) INITIALIZED
*                                  TO ZERO BY DDR. IF LEFT ZERO, ALL OF
*                                  DDR'S FROM VALIDATION CHECKS
*                                  ARE DONE.
DDPMOCEV EQU   X'80'             FOR TAPE, BYPASS OPEN, CLOSE, EOV CHKS
DDPMERP  EQU   X'40'             FOR TAPE, BYPASS ERP IN PROGRESS CHKS
DDPMMTPD EQU   X'20'             FOR TAPE, BYPASS MOUNT PENDING CHECKS
DDPMILBL EQU   X'10'             FOR TAPE, BYPASS LABEL TYPE VALIDATION
DDPMBLCT EQU   X'08'             FOR TAPE, BYPASS BLOCK COUNT CHECKS
DDPMRSV  EQU   X'07'             RESERVED MASK BITS
DDPXFLGS DS    XL1               FLAGS SET BY DDR EXIT ROUTINE. ZEROED
*                                BY DDR PRIOR TO EACH CALL TO THE EXIT
*                                                              @ZA60625
DDPDENDF EQU   X'80'             DENSITY OF TO AND FROM DEVICES ARE
*                                COMPATIBLE BUT DIFFERENT. DURING 'TO'
*                                VALIDATION (DDPENTRY=DDPVTO), IF THE
*                                DDR DEVICE DEPENDENT EXIT DETERMINES
*                                THAT THE 'TO' DEVICE CAN BE SWAPPED
*                                TO (RETURN CODE=4) BUT THE DENSITY IF
*                                THE 'TO' DEVICE IS DIFFERENT THAN THE
*                                'FROM' DEVICE, THE EXIT MUST TURN THIS
*                                BIT ON. THIS WILL RESULT IN THE
*                                ISSUING OF MESSAGE IGF501I (WARNING
*                                TO OPERATOR THAT DIFFERENT DENSITIES
*                                ARE BEING USED).              @ZA60625
DDPRSV1  DS    XL1                 RESERVED                    @ZA60625
DDPEXITD DS    XL4                 EXIT DATA. THIS FIELD IS FOR USE BY
*                                  THE EXIT AND WILL BE MAINTAINED
*                                  ACROSS ENTRIES BY DDR. THIS FIELD IS
*                                  INITIALLY SET TO ZERO BY DDR.
DDPFMUCB DS    A                   FROM UCB ADDRESS
DDPTOUCB DS    A                   TO UCB ADDRESS
DDPUTAPE DS    0XL14               USER INFORMATION - VALID ONLY IF
*                                  SWAP IS FOR TAPE
DDPUTCB  DS    A                   USER'S TCB ADDRESS
DDPUDEB  DS    A                   USER'S DEB ADDRESS
DDPUDCB  DS    A                   USER'S DCB ADDRESS NOTE: SINCE THIS
*                                  IS THE USER'S DCB AND CAN CHANGE AT
*                                  ANY TIME DURING THE SWAP THE EXIT
*                                  MUST VALIDATE THE DCB BEFORE USING
*                                  IT.
DDPUASID DS    XL2                 USER'S ASID. NOTE THAT DDR MAY
*                                  NOT BE RUNNING IN THE ADDRESS SPACE
*                                  ASSOCIATED WITH THE I/O ERROR AND
*                                  THAT IF USER INFORMATION IS
*                                  REQUIRED, IT MUST BE OBTAINED FROM
*                                  THE ADDRESS SPACE ASSOCIATED WITH
*                                  THE ASID INDICATED HERE.
DDPMSG   DS    0XL38
DDPMSGLN DS    XL1                 MESSAGE LENGTH (EXCLUDING ANY
*                                  TRAILING BLANKS). MAXIMUM LENGTH
*                                  IS 37.
DDPMSGTX DS    CL37                MESSAGE TEXT. TERMINATION REASON
*                                  TO BE USED IN IGF512I MESSAGE.
*                                  ONLY APPLICABLE IF EXIT CANCELLED
*                                  SWAP.
DDPIOSB  DS    A                   USER'S IOSB ADDRESS OR ZERO.
*                                  VALID ONLY ON FROM VALIDATION CALL
*                                  (DDPENTRY=DDRVFRM).
*                                  ON THE FROM VALIDATION CALL: IF THE
*                                  SWAP IS AN OPERATOR SWAP THIS FIELD
*                                  WILL BE ZERO, OTHERWISE, THE SWAP IS
*                                  IS A SYSTEM SWAP AND THIS FIELD
*                                  WILL CONTAIN THE USER'S IOSB ADDRESS
*                                                                  @H1A
DDPRSV2  DS    XL8                 RESERVED                        @H1A
         MEND       */
*%IGF020: ;
*DECLARE
*%IF IGFPLBS^='YES'  %THEN
*    %GOTO IGF030;
*    1  DDPLIST     BASED ,               /* PARAMETER LIST PASSED
*                                           TO THE DDR EXIT          */
*%GOTO IGF040;
*%IGF030: ;
*    1  DDPLIST     BDY(WORD),           /* PARAMETER LIST PASSED
*                                           TO THE DDR EXIT          */
*%IGF040: ;
*       3  DDPID    CHAR(4),       /* ACRONYM 'DDP '                 */
*       3  DDPENTRY FIXED(8),      /* INDICATES SWAP PROCESSING FROM
*                                     WHICH THE DDR EXIT IS BEING
*                                     ENTERED.                       */
*       3  DDPVFMSK,               /* THIS FIELD CAN BE SET BY THE EXIT
*                                     WHEN CALLED WITH DDPENTRY=DDPVFRM
*                                     TO INDICATE TO DDR WHICH OF DDR'S
*                                     'FROM' VALIDATION CHECKS ARE NOT
*                                     TO BE DONE. (ONLY VALID IF RC=0
*                                     IS USED WHEN DDPENTRY = DDPVFRM.)
*                                     INITIALIZED TO ZERO BY DDR.
*                                     IF LEFT ZERO, ALL OF DDR'S
*                                     VALIDATION ROUTINES ARE DONE.  */
*       5 DDPMOCEV BIT(1),/* FOR TAPE,BYPASS OPEN, CLOSE, EOV CHECKS */
*       5 DDPMERP  BIT(1),/* FOR TAPE,BYPASS ERP IN PROGRESS CHECKS */
*       5 DDPMMTPD BIT(1),/* FOR TAPE,BYPASS MOUNT PENDING CHECKS */
*       5 DDPMILBL BIT(1),/* FOR TAPE,BYPASS LABEL TYPE VALIDATION */
*       5 DDPMBLCT BIT(1),/* FOR TAPE,BYPASS BLOCK COUNT CHECKS
*                                     VALIDATION                     */
*        5 DDPMERTP BIT(1),     /* FOR TAPE, BYPASS I/O ERROR TYPE
*                                  CHECKS DONE FOR SYSTEM INITIATED
*                                  SWAP                          @P1A*/
*        5 DDPMRSV  BIT(2),     /* RESERVED MASK BITS             */
*       3  DDPXFLGS BIT(8),     /* FLAGS SET BY DDR EXIT ROUTINE.
*                                  ZEROED BY DDR PRIOR TO EACH CALL TO
*                                  THE EXIT.                 @ZA60625*/
*        5 DDPDENDF BIT(1),     /* DENSITY OF TO AND FROM DEVICES ARE
*                                  COMPATIBLE BUT DIFFERENT. DURING
*                                  'TO' VALIDATION (DDPENTRY=DDPVTO),
*                                  IF THE DDR DEVICE DEPENDENT EXIT
*                                  DETERMINES THAT THE 'TO' DEVICE CAN
*                                  BE SWAPPED TO (RETURN CODE=4) BUT
*                                  THE DENSITY IF THE 'TO' DEVICE IS
*                                  DIFFERENT THAN THE 'FROM' DEVICE,
*                                  THE EXIT MUST TURN THIS BIT ON.
*                                  THIS WILL RESULT IN THE ISSUING OF
*                                  MESSAGE IGF501I (WARNING TO OPERATOR
*                                  THAT DIFFERENT DENSITIES ARE BEING
*                                  USED).                    @ZA60625*/
*        5 *   BIT(7),          /* RESERVED                  @ZA60625*/
*       3  DDPRSV1  CHAR(1),       /* RESERVED               @ZA60625*/
*       3  DDPEXITD PTR(31),       /* EXIT DATA. THIS FIELD IS FOR
*                                     USE BY THE EXIT AND WILL BE
*                                     MAINTAINED ACROSS ENTRIES BY
*                                     DDR. THIS FIELD IS INITIALLY
*                                     SET TO ZERO BY DDR.            */
*       3  DDPFMUCB PTR(31),       /* FROM UCB ADDRESS               */
*       3  DDPTOUCB PTR(31),       /* TO UCB ADDRESS                 */
*       3  DDPUTAPE,               /* USER INFORMATION - VALID ONLY
*                                     IF SWAP IS FOR TAPE            */
*          5  DDPUTCB    PTR(31),  /* USER'S TCB ADDRESS             */
*          5  DDPUDEB    PTR(31),  /* USER'S DEB ADDRESS             */
*          5  DDPUDCB    PTR(31),  /* USER'S DCB ADDRESS. NOTE: SINCE
*                                     THIS IS THE USER'S DCB AND CAN
*                                     CHANGE AT ANY TIME DURING THE
*                                     SWAP THE EXIT MUST VALIDATE THE
*                                     DCB BEFORE USING IT.           */
*          5  DDPUASID  FIXED(15), /* USER'S ASID. NOTE THAT DDR MAY
*                                  NOT BE RUNNING IN THE ADDRESS SPACE
*                                  ASSOCIATED WITH THE I/O ERROR AND
*                                  THAT IF USER INFORMATION IS
*                                  REQUIRED, IT MUST BE OBTAINED FROM
*                                  THE ADDRESS SPACE ASSOCIATED WITH
*                                  THE ASID INDICATED HERE. */
*       3  DDPMSG,
*          5  DDPMSGLN  FIXED(8),  /* MESSAGE LENGTH (EXCLUDING ANY
*                                     TRAILING BLANKS). MAXIMUM LENGTH
*                                     IS 37.                         */
*          5  DDPMSGTX  CHAR(37),  /* MESSAGE TEXT. TERMINATION REASON
*                                     TO BE USED IN IGF512I MESSAGE.
*                                     ONLY APPLICABLE IF EXIT CANCELLED
*                                     SWAP (RETURN CODES 16 OR 20). */
*       3  DDPIOSB  PTR(31),       /* USER'S IOSB ADDRESS OR ZERO.
*                                  VALID ONLY ON FROM VALIDATION CALL
*                                  (DDPENTRY=DDRVFRM).
*                                  ON THE FROM VALIDATION CALL: IF THE
*                                  SWAP IS AN OPERATOR SWAP THIS FIELD
*                                  WILL BE ZERO, OTHERWISE, THE SWAP IS
*                                  IS A SYSTEM SWAP AND THIS FIELD
*                                  WILL CONTAIN THE USER'S IOSB
*                                  ADDRESS                       @H1A*/
*       3  DDPRSV2  CHAR(8);       /* RESERVED                   @H1A*/
* /*******************************************************************/
* /*                                                                 */
* /*     CONSTANTS FOR DDPENTRY                                      */
* /*                                                                 */
* /*******************************************************************/
*  DCL DDPVFRM  FIXED(8) CONSTANT(01); /* THIS ENTRY IS MADE PRIOR
*                                           TO DEVICE DEPENDENT 'FROM'
*                                           VALIDATION.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - DO DDR 'FROM' VALIDATION.
*                                         IF THIS RETURN CODE IS USED,
*                                         THE DDR EXIT CAN ELECT
*                                         TO BYPASS CERTAIN 'FROM'
*                                         VALIDATIONS CHECKS BY SETTING
*                                         DDPVFMSK (SEE ABOVE FOR
*                                         A DESCRIPTION OF THIS FIELD).
*                                     4 - DDR EXIT COMPLETED FROM
*                                         VALIDATION AND THE DEVICE
*                                         CAN BE SWAPPED. DO NOT DO
*                                         DDR'S 'FROM' VALIDATION
*                                         CHECKS.
*                                    16 - DDR EXIT DETERMINED THAT
*                                         THE SWAP SHOULD BE CANCELLED.
*                                                                    */
*  DCL DDPVTO   FIXED(8) CONSTANT(02); /* THIS ENTRY IS MADE PRIOR
*                                           TO DEVICE DEPENDENT 'TO'
*                                           COMPATIBILITY VALIDATION
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - DO DDR 'TO' VALIDATION.
*                                     4 - DDR EXIT COMPLETED 'TO'
*                                         VALIDATION AND THE DEVICE
*                                         CAN BE SWAPPED TO. DO NOT
*                                         DO DDR'S 'TO' VALIDATION
*                                     8 - THE DDR EXIT DETERMINED
*                                         THAT THIS DEVICE COULD NOT
*                                         BE USED TO SWAP TO. */
*  DCL DDPOPREJ FIXED(8) CONSTANT(03); /* THIS ENTRY IS MADE WHEN
*                                           THE OPERATOR REJECTS A
*                                           VALIDATED 'TO' DEVICE.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO. */
*  DCL DDPPRSW  FIXED(8) CONSTANT(04); /* THIS ENTRY IS MADE AFTER
*                                           DDR HAS TAKEN CONTROL OF
*                                           THE DEVICE (I.E., UCBDDRSW
*                                           AND QUIESCE TURNED ON)
*                                           AND BEFORE THE 'REWIND/
*                                           UNLOAD' IF TAPE AND PRIOR
*                                           TO SWAPPING UCBS.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - CONTINUE SWAP.
*                                    16 - DDR EXIT ENCOUNTERED
*                                         UNRECOVERABLE ERRORS,
*                                         CANCEL SWAP.
*                                    20 - DDR EXIT ENCOUNTERED ERRORS
*                                         WHICH WOULD RESULT IN LOSS
*                                         OF DATA OR DATA INTEGRITY.
*                                         CANCEL SWAP AND BOX THE
*                                         DEVICE. NOTE: THIS RETURN
*                                         CODE SHOULD ONLY BE USED ON
*                                         OPERATOR INITIATED SWAPS
*                                         (SINCE ON SYSTEM INITIATED
*                                         SWAPS, THE USER IS NOTIFIED
*                                         OF A PERMANENT ERROR IF THE
*                                         SWAP FAILS). IF THE EXIT
*                                         USES THIS RETURN CODE, IT
*                                         MUST ALSO SUPPLY THE MESSAGE
*                                         TEXT IN DDPMSG.            */
*  DCL DDPMOUNT FIXED(8) CONSTANT(05); /* THIS ENTRY IS MADE PRIOR
*                                           TO THE I/O TO VERIFY MOUNT
*                                           FOR TAPE DEVICES. THE DDR
*                                           EXIT MAY ELECT TO DO ITS
*                                           OWN LABEL VERIFICATION
*                                           AND DATA REPOSITIONING
*                                           WHEN CALLED WITH THIS CODE
*                                           SET.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - EXIT DID NOT DO VOLUME
*                                         VERIFICATION OR DATA
*                                         POSITIONING, SWAP SHOULD BE
*                                         CONTINUED. IF THIS RETURN
*                                         CODE IS SET DDR WILL PROCEED
*                                         WITH ITS OWN ROUTINES FOR
*                                         VOLUME VERIFICATION.
*                                         NOTE: THIS RETURN CODE CAN
*                                         BE USED ONLY IF RETURN CODE
*                                         0 WAS USED WHEN ENTERED FOR
*                                         'FROM' VALIDATION AND
*                                         THE DDR EXIT DID NOT SET
*                                         DDPMILBL, DDPMERP, DDRMMTPD
*                                         OR DDPMOCEV.
*                                     4 - DDR EXIT DID VOLUME
*                                         VERIFICATION AND DATA
*                                         POSITIONING SUCCESSFULLY.
*                                     8 - DURING DDR EXIT PROCESSING,
*                                         THE EXIT DETERMINED THAT THE
*                                         VOLUME COULD NOT BE SWAPPED
*                                         TO THE SELECTED 'TO' DEVICE
*                                         BECAUSE OF DEVICE ERRORS
*                                         (E.G. I/O ERRORS) AND
*                                         ANOTHER 'TO' DEVICE SHOULD
*                                         BE SELECTED. IF THIS RETURN
*                                         CODE IS SET, DDR WILL
*                                         CONTINUE BY PUTTING OUT A
*                                         MESSAGE TO THE OPERATOR
*                                         'ERROR ON XXX, SELECT A NEW
*                                         DEVICE'.
*                                    12 - DURING DDR EXIT PROCESSING,
*                                         THE EXIT DID NOT READ THE
*                                         CORRECT VOL SER AFTER FIVE
*                                         ATTEMPTS TO DO SO. IF THIS
*                                         RETURN CODE IS SET, DDR
*                                         WILL CONTINUE WITH
*                                         REQUESTING THE OPERATOR
*                                         TO SELECT A NEW 'TO' DEVICE.
*                                    16 - THE EXIT ENCOUNTERED AN
*                                         UNRECOVERABLE ERROR WHICH
*                                         CANNOT BE CORRECTED BY
*                                         TRYING A NEW 'TO' DEVICE.
*                                         FORCE A PERMANENT ERROR ON
*                                         THE DEVICE BEING SWAPPED.
*                                    20 - DDR EXIT ENCOUNTERED ERRORS
*                                         WHICH WOULD RESULT IN LOSS
*                                         OF DATA OR DATA INTEGRITY.
*                                         CANCEL SWAP AND BOX THE
*                                         DEVICE. NOTE: THIS RETURN
*                                         CODE SHOULD ONLY BE USED ON
*                                         OPERATOR INITIATED SWAPS
*                                         (SINCE ON SYSTEM INITIATED
*                                         SWAPS, THE USER IS NOTIFIED
*                                         OF A PERMANENT ERROR IF THE
*                                         SWAP FAILS). IF THE EXIT
*                                         USES THIS RETURN CODE, IT
*                                         MUST ALSO SUPPLY THE MESSAGE
*                                         TEXT IN DDPMSG.            */
*  DCL DDPREMNT FIXED(8) CONSTANT(06); /* THIS ENTRY IS MADE WHEN DDR
*                                           REQUESTS A REMOUNT FOR TAPE
*                                           DEVICES DUE TO A WRONG
*                                           VOLSER BEING MOUNTED.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO. */
*  DCL DDPREPOS FIXED(8) CONSTANT(07); /* THIS ENTRY IS MADE AFTER
*                                           VOLUME VERIFICATION BY
*                                           DDR AND PRIOR TO DATA
*                                           REPOSITIONING. THE EXIT
*                                           CAN ELECT TO DO ITS OWN
*                                           DATA REPOSITIONING HERE.
*                                  VALID RETURN CODES FOR THIS ENTRY
*                                  ARE:
*                                     0 - EXIT DID NOT DO
*                                         REPOSITIONING. SWAP SHOULD
*                                         BE CONTINUED. IF THIS RETURN
*                                         CODE IS SET DDR WILL PROCEED
*                                         WITH ITS OWN ROUTINES FOR
*                                         DATA POSITIONING.
*                                         NOTE: THIS RETURN CODE CAN
*                                         BE USED ONLY IF RETURN CODE
*                                         0 WAS USED WHEN ENTERED FOR
*                                         'FROM' VALIDATION AND
*                                         THE DDR EXIT DID NOT SET
*                                         ANY FIELDS IN DDPVFMSK.
*                                     4 - DDR EXIT DID DATA
*                                         POSITIONING SUCCESSFULLY.
*                                     8 - DURING DDR EXIT PROCESSING,
*                                         THE EXIT DETERMINED THAT THE
*                                         VOLUME COULD NOT BE SWAPPED
*                                         TO THE SELECTED 'TO' DEVICE
*                                         BECAUSE OF DEVICE ERRORS
*                                         (E.G. I/O ERRORS) AND
*                                         ANOTHER 'TO' DEVICE SHOULD
*                                         BE SELECTED. IF THIS RETURN
*                                         CODE IS SET, DDR WILL
*                                         CONTINUE BY PUTTING OUT A
*                                         MESSAGE TO THE OPERATOR
*                                         'ERROR ON XXX, SELECT A NEW
*                                         DEVICE'.
*                                    16 - THE EXIT ENCOUNTERED AN
*                                         UNRECOVERABLE ERROR WHICH
*                                         CANNOT BE CORRECTED BY
*                                         TRYING A NEW 'TO' DEVICE.
*                                         FORCE A PERMANENT ERROR ON
*                                         THE DEVICE BEING SWAPPED.
*                                    20 - DDR EXIT ENCOUNTERED ERRORS
*                                         WHICH WOULD RESULT IN LOSS
*                                         OF DATA OR DATA INTEGRITY.
*                                         CANCEL SWAP AND BOX THE
*                                         DEVICE. NOTE: THIS RETURN
*                                         CODE SHOULD ONLY BE USED ON
*                                         OPERATOR INITIATED SWAPS
*                                         (SINCE ON SYSTEM INITIATED
*                                         SWAPS, THE USER IS NOTIFIED
*                                         OF A PERMANENT ERROR IF THE
*                                         SWAP FAILS). IF THE EXIT
*                                         USES THIS RETURN CODE, IT
*                                         MUST ALSO SUPPLY THE MESSAGE
*                                         TEXT IN DDPMSG.            */
*  DCL DDPUCLN  FIXED(8) CONSTANT(08); /* THIS INDICATES THE EXIT    IS
*                                           BEING ENTERED FOR CLEANUP
*                                           OF AN UNSUCCESSFUL SWAP
*                                           OR DUE TO AN ABNORMAL
*                                           TERMINATION.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO. */
*  DCL DDPSCLN  FIXED(8) CONSTANT(09); /* THIS INDICATES THE EXIT    IS
*                                           BEING ENTERED FOR CLEANUP
*                                           OF A SUCCESSFUL SWAP. ANY
*                                           RESOURCES OBTAINED BY THE
*                                           EXIT SHOULD BE FREED.
*                                  THE ONLY VALID RETURN CODE FOR THIS
*                                  ENTRY IS ZERO. */
* %DEACT IGFPLBS;
./ ADD NAME=IGFDMIHW
* /***************************************************************** */
* /*                                                                 */
* /*     MODULE NAME - IGFDMIHW                                      */
* /*                                                                 */
* /*     MIHW - Missing Interruption Handler Work Area DSECT         */
* /*                                                                 */
* ?CPYRIGHT DATE(JBB1326);
* /*                                                                 */
* /*     FUNCTION - This mapping macro describes the MIH             */
* /*                work area used by both the IGFTMCHK              */
* /*                and IGFTMC00 modules. The macro describes        */
* /*                the MIH message block, provides equates          */
* /*                for the MIH condition codes and ECB              */
* /*                completion codes, and provides a                 */
* /*                PLS mapping of the IGFINTVL CSECT.               */
* /*                                                                 */
* /*     DEPENDENCIES - None                                         */
* /*                                                                 */
* /*     RESTRICTIONS - None                                         */
* /*                                                                 */
* /*     MODULE TYPE - Control block                                 */
* /*                                                                 */
* /*     PROCESSOR - PLS3 compiler                               @L3C*/
* /*                                                                 */
* /*     CHANGE ACTIVITY -                                           */
* /*A000000-999999                                           @ZA31032*/
* /*PTM VS49698 ADDED FOR SU64                               @G64JPLE*/
* /*                                                                 */
* /* $MOD(IGFDMIHW),COMP(SC1CE),PROD(MIH): MIH DSECT             @L3A*/
* /* $L3=RAS,JBB1326,800801,PDLE: RAS enhancements                   */
* /* $D1=DCR35,JBB1326,800801,PDLE: Provide DOM facility             */
* /* $D2=DCR97,JBB1326,800801,PDLE: LRB macro updates                */
* /*                                                                 */
* /***************************************************************** */
*DECLARE
*  1 MIHWORK  BASED(WORKREG)         BDY(DWORD),
*   2 MIHIDFLD CHAR(16),             /* MIH WORK AREA IDENTIFICATION */
*   2 MIHAREA1                                 ,
*    4 MIHTQE  CHAR(LENGTH(TQE))      BDY(DWORD), /* TQE BLOCK       */
*    4 MIHSRB  CHAR(LENGTH(SRBSECT))  BDY(DWORD), /* SRB BLOCK       */
*    4 MIHECB       FIXED(32),       /* MIH ECB FOR POST AND WAIT    */
*     6 ECBCODE      BIT(8),         /* ECB COMPLETION CODE          */
*     6 COMPCODE     PTR(24),        /* ECB COMPLETION CODE          */
*    4 MIHRCNT             ,         /* MIH FRR RETRY COUNTERS       */
*     6 MIHKRETY  FIXED(15),         /* MCHK RETRY COUNT             */
*     6 MIH1RETY  FIXED(15),         /* MC01 RETRY COUNT             */
*    4 MIHMCHKF     CHAR(3),         /* IGFTMCHK FLAG BYTES----------
*                                                                @L3A*/
*     6 MIHFLAG1     BIT(8),         /* MIH MCHK FLAG BYTE 1------   */
*      8 MIHESTAA    BIT(1),         /* -ESTAE ACTIVE                */
*      8 MIHIPLRA    BIT(1),         /* -SVC76, IPL RCD ACT          */
*      8 MIHIPLOK    BIT(1),         /* -SVC76, IPL RCD WRITTEN      */
*      8 MIHUCBSK    BIT(1),         /* -UCB SCAN ACTIVE             */
*      8 MIHINITC    BIT(1),         /* -MCHK INIT COMPLETE          */
*      8 MIHSDIEA    BIT(1),         /* -SET DIE SUCCESSFUL          */
*      8 MIHRDEA     BIT(1),         /* -SVC76- RDE ACTIVE,
*                                         UPD TIME/DATE STAMP        */
*      8 *           BIT(1),         /*                              */
*     6 MIHFLAG2     BIT(8),         /* MIH MCHK FLAG BYTE 2-----    */
*      8 MIHLGRCA    BIT(1),         /* -LOGREC PROCESSING ACTIVE    */
*      8 MIHTIMEA    BIT(1),         /* -SVC 11 TIME MACRO ACTIVE    */
*      8 MIHRECDA    BIT(1),         /* -RECORD LOGREC ACTIVE        */
*      8 *           BIT(1),         /* -                            */
*      8 *           BIT(1),         /* -                            */
*      8 *           BIT(1),         /* -                            */
*      8 *           BIT(1),         /* -                            */
*      8 MIHNSDWA    BIT(1),         /* -IN ESTAE, NO SDWA PROVIDED  */
*     6 MIHFLAG3     BIT(8),         /* MIH MCHK FLAG BYTE 3-----    */
*      8 MIHMSGPA    BIT(1),         /* -MESSAGE PROCESSING ACTIVE   */
*      8 MIHMSGBA    BIT(1),         /* -MESSAGE BUILD ACTIVE        */
*      8 MIHMBLDA    BIT(1),         /* -MESSAGE BUILD ROUTINE ACTIVE
*                                                                @L3C*/
*      8 MIHWTOA     BIT(1),         /* -SVC35- WTO MESSAGE ACTIVE   */
*      8 MIHACTNF    BIT(1),         /* -Action message requires
*                                        DOMing processing flag  @D1C*/
*      8 MIHDMSET    BIT(1),         /* -DOM table search flag   @D1C*/
*      8 *           BIT(1),         /* -Reserved                    */
*      8 *           BIT(1),         /* -Reserved                    */
*    4 MIHMC01F     CHAR(3),         /* IGFTMC01 FLAG BYTES----------*/
*     6 MIHFLAG4     BIT(8),         /* MIH MC01 FLAG BYTE 1-----
*                                                                @L3C*/
*      8 MIHFRRA     BIT(1),         /* - FRR ACTIVE                 */
*      8 MIHEXT1A    BIT(1),         /* - MIH EXIT 1 ACTIVE          */
*      8 MIHUCBSA    BIT(1),         /* - UCB SCAN ACTIVE            */
*      8 MIHUCBVA    BIT(1),         /* - VALID UCB PROCESSING       */
*      8 MIHEXT2A    BIT(1),         /* - MIH EXIT 2 ACTIVE          */
*      8 MIHTQEA     BIT(1),         /* - MIH TQE ENQ ACTIVE         */
*      8 MIHEXITE    BIT(1),         /* - MIH PERM ERR IN EXIT       */
*      8 MIH01RTY    BIT(1),         /* - MIH FRR RETRY ACTIVE       */
*     6 MIHFLAG5     BIT(8),         /* MIH MC01 FLAG BYTE 2-----    */
*      8 *           BIT(8),         /*                              */
*     6 MIHPOSTF     BIT(8),         /* MIH POST FLAG BYTE ------    */
*      8 MIHPOST     BIT(1),         /* - MIH POSTING ACTIVE     @L3C*/
*      8 *           BIT(7),         /* - TS INST IS USED TO
*                                         SERIALIZE POSTING      @L3C*/
*    4 MIHFRRSA     CHAR(2),         /* MIH MC01 FRR FLAGS SAVE AREA */
*     6 MIHFLAG7     BIT(8),         /* MIH MC01 FRR FLAG BYTE 1--   */
*     6 MIHFLAG8     BIT(8),         /* MIH MC01 FRR FLAG BYTE 2--   */
*    4 MIHCODE      CHAR(1),         /* MIHCOND TRANSLATION CODE     */
*    4 MIHPSTCD     CHAR(1),         /* MIH POST CODE                */
*    4 MIHUCBTI     CHAR(1),         /* MIH EXIT INDEX IN ERROR      */
*    4 MIHRSV01     CHAR(1),         /* RESERVED                     */
*    4 MIHLRB              ,         /* LOGREC BUFFER                */
*     6 *      CHAR(LENGTH(LRB)),    /* LOGREC HEADER                */
*     6 *      CHAR(LENGTH(LRBNMIH)), /* MIH SECTION                 */
*    4 MIHWTO       CHAR(76),        /* WTO BUFFER                   */
*     6 MIHWTO1             ,        /*                              */
*      8 WTOLNTH    CHAR(02),        /* - MSG LNTH                   */
*      8 WTOMCSF    CHAR(02),        /* - MCS FLAGS                  */
*      8 WTOMSGID   CHAR(09),        /* - MSG ID                     */
*      8 MIHMSGV    CHAR(63),        /* - MSG TEXT                   */
*    4 MIHESTAE          BDY(DWORD), /* ESTAE PARAMETER LIST         */
*     6 ESTAFLG1    CHAR(1) ,        /*   - FLAGS                    */
*     6 ESTARETA     PTR(24),        /*   - EXIT ROUTINE ADDR        */
*     6 ESTAPARM     PTR(31),        /*   - PARAMETER LIST ADDR      */
*     6 ESTATCB      PTR(31),        /*   - TCB ADDRESS              */
*     6 ESTAFLG2    CHAR(1) ,        /*   - FLAGS                    */
*     6 ESTARSVD     PTR(24),        /*   - RESERVED                 */
*   2 MIHAREA2           BDY(DWORD), /* MIH WORK AREA                */
*    4 MIHTIMEP  BIT(64) BDY(DWORD), /* MIH TIME INTERVAL VALUE - PRI*/
*     6 MIHTMEPS FIXED(32) UNSIGNED, /* MIH TIME IN SECONDS          */
*     6 *        FIXED(32) UNSIGNED, /* MIH TIME IN MICRO SECONDS    */
*    4 MIHTIMES  BIT(64) BDY(DWORD), /* MIH TIME INTERVAL VALUE - SEC*/
*     6 MIHTMESS FIXED(32) UNSIGNED, /* MIH TIME IN SECONDS          */
*     6 *        FIXED(32) UNSIGNED, /* MIH TIME IN MICRO-SECONDS    */
*    4 MIHTACCM  BIT(64) BDY(DWORD), /* MIH ACCUMULATED SECONDARY TME*/
*     6 MIHTACMS FIXED(32) UNSIGNED, /* ACCUMULATED TIME IN SECONDS  */
*     6 *        FIXED(32) UNSIGNED, /* ACCUMULATED TIME IN MICRO-SEC*/
*    4 MIHTOD    BIT(64) BDY(DWORD), /* MIH CURRENT TOD VALUE        */
*     6 MIHTODS  FIXED(32) UNSIGNED, /* TOD TIME IN SECONDS          */
*     6 *        FIXED(32) UNSIGNED, /* TOD TIME IN MICRO-SECONDS    */
*    4 MIHTMCT CHAR(8) BDY(DWORD),   /* MIH TIME INTERVAL WA         */
*     6 TMCHR  CHAR(2),              /* MIH TIME INTERVAL- HOURS     */
*     6 TMCMM  CHAR(2),              /* MIH TIME INTERVAL - MINUTES  */
*     6 TMCSS  CHAR(2),              /* MIH TIME INTERVAL - SECONDS  */
*     6 TMCTH  CHAR(2),              /* MIH TIME INTERVAL - IGNORED  */
*    4 MIHWK1  CHAR(8) BDY(DWORD),   /* MIH WORK AREA #1-----------  */
*     6 PKWORK         CHAR(08),     /* CONVERT EBCDIC TO HEX WA     */
*      8 UPKWRK        CHAR(08),     /* CONVERT HEX TO EBCDIC WA     */
*       10 *           CHAR(06),     /*                              */
*       10 MIHOUR      CHAR(02),     /* MIH TIME INTVL IN DEC HOURS  */
*         12 MIHMIN    CHAR(02),     /* MIH TIME INTVL IN DEC MINUTES*/
*           14 MIHSEC  CHAR(02),     /* MIH TIME INTVL IN DEC SECONDS*/
*    4 MIHWK2,                       /* MIH WORK AREA #2-----------  */
*     6 MIHTMWK2,                    /*.MIH TIME INTERVAL IN BINARY  */
*      8 HR    FIXED(31),            /*  -INTERVAL IN BINARY HOURS   */
*      8 MM    FIXED(31),            /*  -INTERVAL IN BINARY HOURS   */
*      8 SS    FIXED(31),            /*  -INTERVAL IN BINARY SECONDS */
*    4 MIHREMDR CHAR(04),            /* MIH REMAINDER                */
*    4 MIHWK3   CHAR(08),            /* MIH WORK AREA #3 ----------  */
*     6 PKSERNO,                     /*.CPU SERIAL NUMBER BEING      */
*      8 SERNO  CHAR(6),             /*  PACKED FOR LOG-REC BFR      */
*      8 *      CHAR(1),             /*                              */
*     6 MIHWK3A CHAR(1),             /* WORK BYTE                    */
*    4 MIHMSGPR  PTR(31),            /* MIH MESSAGE CHAIN PTR        */
*    4 MIHR13SV  PTR(31),            /* REG 13 SAVE AREA             */
*    4 MIHR14SV  PTR(31),            /* REG 14 SAVE - CALLER ADDR    */
*    4 MIHR14SA  PTR(31),            /* REG 14 SAVE - MIHDR0 RTN     */
*    4 MIHR14SB  PTR(31),            /* REG 14 SAVE - MC01TQE RTN    */
*    4 MIHR14SC  PTR(31),            /* REG 14 SAVE - IGFTMFRR RTN   */
*    4 MIHINTVP  PTR(31),            /* MIH INTVL CSECT ADDRESS      */
*    4 MIHUCBLA CHAR(04),            /* UCB LOCK ADDRESS SAVE AREA   */
*    4 MIHR14SD  PTR(31),            /* REG 14 SAVE - IGFTMCHS RTN   */
*    4 MIHRSV02 CHAR(04),            /* RESERVED                     */
*    4 MIHEXT1P,                     /* MIH EXIT 1 PARM AREA-------  */
*     6 MIHINTVL    CHAR(8),         /* MIH TIME INTERVAL-EBCDIC     */
*      8 MIHINTHR   CHAR(2),         /* MIH TIME INTERVAL - HOURS    */
*      8 MIHINTMM   CHAR(2),         /* MIH TIME INTERVAL - MINUTES  */
*      8 MIHINTSS   CHAR(2),         /* MIH TIME INTERVAL - SECONDS  */
*      8 MIHINTTT   CHAR(2),         /* MIH TIME INTERVAL - IGNORED  */
*     6 MIHEXCON    CHAR(4),         /* MIH EXIT CONSTANTS           */
*      8 MIHCON1    CHAR(2),         /* MIH EXIT CONSTANT 1          */
*      8 MIHCON2    CHAR(2),         /* MIH EXIT CONSTANT 2          */
*     6 MIHRSV03    CHAR(4),         /* RESERVED                     */
*    4 MIHEXT2P,                     /* MIH EXIT 2 PARM AREA-------  */
*     6 MIHEXFLG     BIT(8),         /* MIH EXIT 2 FLAG BYTE         */
*      8 MIHIOR      BIT(1),         /* IF ON, IORESTART REQD        */
*      8 *           BIT(7),         /* RESERVED BITS                */
*     6 MIHRSV04    CHAR(2),         /* RESERVED                     */
*     6 MIHCOND      BIT(8),         /* MIH CONDITION BYTE           */
*      8 *           BIT(4),         /* RESERVED BITS                */
*      8 MIHSW       BIT(1),         /* MISSING SWAP CONDITION       */
*      8 MIHMT       BIT(1),         /* MISSING MOUNT CONDITION      */
*      8 MIHCE       BIT(1),         /* MISSING CHANNEL END INTERRUPT*/
*      8 MIHDE       BIT(1),         /* MISSING DEVICE END INTERRUPT */
*     6 MIHEX1PP     PTR(31),        /* MIH EXIT 1 PARM AREA POINTER */
*    4 MIHINDEX            ,         /* MIH INDEX CONSTANTS          */
*     6 I         FIXED(15),         /*  I                           */
*     6 J         FIXED(15),         /*  J                           */
*    4 MIHUASCB     CHAR(4),         /* MIH USER ASCB PTR            */
*    4 TMC01SAV     CHAR(72),        /* MC01 18 WORD SAVE AREA       */
*    4 TMCHKSAV     CHAR(72),        /* MCHK 18 WORD SAVE AREA       */
*    4 MIHFRRSV     CHAR(64),        /* MC01 FRR 16 WORD SAVE AREA   */
*    4 MIHPSTSV     CHAR(64),        /* MC01 POST routine 16 word
*                                            save area           @L3C*/
*    4 MIHDMCTR     CHAR(04),        /* MIH DOM table - Count of
*                                       active DOM entries       @D1A*/
*    4 MIHDMTBL(30) CHAR(06),        /* MIH DOM table - contains action
*                                       message number ids that
*                                       that have to be DOMed.   @D1A*/
*      6 MIHDMUCB   CHAR(02),        /* - UCB address            @D1A*/
*      6 MIHMSGWD   CHAR(04),        /* - FLags and message ID   @D1A*/
*        8 MIHDMFLG  BIT(08),        /* - DOM table flag byte    @D1A*/
*          10 MIHDOMF BIT(1),        /* - Indicates that this DOM
*                                         entry is to be DOMed.  @D1A*/
*          10 *       BIT(7),        /* - Reserved               @D1A*/
*        8 MIHMSGNM  BIT(24),        /* - Message number field   @D1A*/
*    4 MIHSCTNM     CHAR(02),        /* Number of secondary table
*                                       entries.                 @L3A*/
*    4 MIHULKTB(48) CHAR(02),        /* MIH secondary look-up table-
*                                       minimum size of table.
*                                                                @L3C*/
*    4 MIHULKTE     CHAR(*) ;        /* MIH secondary look-up table
*                                       extension (equal in size of
*                                       the installation device table
*                                       in IGFINTVL)             @L3C*/
*/*                                                                  */
*/* **************************************************************** */
*/* *                                                              * */
*/* *    Mapping of message block that contains data for           * */
*/* *    generating the IGF99X messages.                         @L3C*/
*/* *    - MC01 chains the messages that have to be written.       * */
*/* *    - MCHK removes the message block and generates the        * */
*/* *      appropriate IGF99X message.                           @L3C*/
*/* *                                                              * */
*/* **************************************************************** */
*DECLARE
*  1 MIHMSGBK  BASED(MSGPTR),        /* MESSAGE BLOCK                */
*   2 NEXTMSG    PTR(31),            /* PTR TO NEXT MESSAGE          */
*   2 EMIHCODE  CHAR(1),             /* MIH PENDING CONDITION CODE   */
*   2 EMIHCOND   BIT(8),             /* MIH PENDING CONDITION        */
*   2 EUCBMIHT   BIT(8),             /* UCB MIH BYTE             @L3C*/
*   2 ERRMSGFL   BIT(8),             /* ERROR MESSAGE FLAGS          */
*    4 MSGPSCAN  BIT(1),             /* .PRIMARY TIME SCAN ACTIVE    */
*    4 MSGIOR    BIT(1),             /* .I/O RESTART SCH     @ZM49689*/
*    4 *         BIT(6),             /* RESERVED                     */
*   2 ERRTIME   CHAR(8),             /* ERROR TIME STAMP             */
*    4 ERRTIMEL CHAR(4),             /* . 1ST FOUR BYTES             */
*    4 ERRTIMEU CHAR(4),             /* . 2ND FOUR BYTES             */
*   2 EJOBNAME  CHAR(8),             /* JOBNAME                      */
*   2 ERRASID   CHAR(2),             /* ASID FIELD                   */
*   2 ECSTCPU   CHAR(2),             /* CPU NUMBER-CST           @L3C*/
*   2 EUCBIOQ   CHAR(4),             /* UCBIOQ FIELD                 */
*   2 ERRUCB    CHAR(48),            /* UCB COMMON AND DEV DPT SECT  */
*    4 EUCBCOM  CHAR(24),            /* . UCB COMMON SECTION         */
*    4 EUCBDPT  CHAR(24),            /* . UCB DEVICE DEPENDENT SECT  */
*   2 ERRUCBPT   PTR(31),            /* UCB Address word         @L3C*/
*    4 *         PTR(16),            /* . Reserved               @L3A*/
*    4 ERRUCBAD  PTR(16),            /* . UCB common address ptr @L3A*/
*   2 ERRMSGNM  CHAR(4);             /* Message ID number field  @D1C*/
*/* **************************************************************** */
*/* *      Remap the UCBMIHDF bit in UCBFL7                        * */
*/* *      to force a Compare and Swap (CS) when setting           * */
*/* *      or resetting this bit.                                  * */
*/* *                                                            @D1A*/
*/* **************************************************************** */
*DECLARE
*  1 UCBFL7#    BIT(8)   DEF(UCBFL7), /* Remap the UCBFL7 byte   @D1A*/
*   2 *         BIT(2),               /*                         @D1A*/
*   2 UCBMIHD#  BIT(1)   ABNORMAL,    /* Action message to be DOMed
*                                        indication flag         @D1A*/
*   2 *         BIT(5);               /*                         @D1A*/
*/* **************************************************************** */
*/* *                                                              * */
*/* *      MIH condition code equates                              * */
*/* *                                                              * */
*/* **************************************************************** */
*DECLARE MIHCODE1 FIXED(8) CONSTANT(01); /* 01- SWAP PENDING         */
*DECLARE MIHCODE2 FIXED(8) CONSTANT(02); /* 02- DEVICE END MISSING   */
*DECLARE MIHCODE3 FIXED(8) CONSTANT(03); /* 03- CHANNEL END MISSING  */
*DECLARE MIHCODE4 FIXED(8) CONSTANT(04); /* 04- DE AND CE MISSING    */
*DECLARE MIHCODE5 FIXED(8) CONSTANT(05); /* 05- MOUNT PENDING        */
*DECLARE MIHCODE6 FIXED(8) CONSTANT(06); /* 06- I/O REQUEST PENDING
*                                                                @L3A*/
*/* **************************************************************** */
*/* *                                                                */
*/* *    MIH ECB completion code equates                             */
*/* *                                                                */
*/* **************************************************************** */
*DECLARE MECBPOST   BIT(8) CONSTANT('40'X); /* ECB HAS BEEN POSTED
*                                                                @L3C*/
*DECLARE MERREXIT   BIT(8) CONSTANT('44'X); /* MIH EXIT IN ERROR
*                                                                @L3C*/
*DECLARE MERRCOMP   BIT(8) CONSTANT('45'X); /* MIH MC01 IN ERROR
*                                                                @L3C*/
*/* **************************************************************** */
*/* *                                                                */
*/* *    PLS mapping of the IGFINTVL CSECT                       @L3C*/
*/* *                                                                */
*/* **************************************************************** */
*DECLARE
*  1 INTVLCST  CHAR(80)  BDY(DWORD) BASED(INTVLREG),
*   2 INTVLPRI CHAR(08),           /* EBCDIC TIME INTERVAL - PRIMARY */
*   2 INTVLSEC CHAR(08),           /* EBCDIC TIME INT - SECONDARY    */
*   2 INTVLCNT CHAR(01),           /* NUMBER OF INDEXED ENTRIES      */
*   2 INTVFLG1  BIT(08),           /* MIH STATUS FLAGS               */
*    3 MIHACTVE BIT(01),           /* .MIH ACTIVATED                 */
*    3 MIHMCHKW BIT(01),           /* .MCHK WAITING                  */
*    3 MIHMCHKT BIT(01),           /* .MCHK ESTAE RETRY TERMINATION  */
*    3 MIHGTMT  BIT(01),           /* .MIH WORK AREA GETMAIN TERMIN  */
*    3 MIHSETDT BIT(01),           /* .SETDIE TERMINATION            */
*    3 MIHESTAT BIT(01),           /* .ESTAE TERMINATION             */
*    3 MIHPOSTT BIT(01),           /* .POST TERMINATION              */
*    3 MIHFRRT  BIT(01),           /* .MC01 FRR TERMINATION          */
*   2 INTVFLG2  BIT(08),           /* MIH STATUS FLAGS               */
*    3 MIHTMERR BIT(01),           /* .MCHK TIME INTERVAL ERROR      */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*   2 INTVFLG3  BIT(08),           /* MIH STATUS FLAGS               */
*    3 MIHPSCAN BIT(01),           /* .MC01- SCANNING CVTILK2 TABLE  */
*    3 MIHDOMID BIT(01),           /* .MC01- Insure that MCHK is posted
*                                            to DOM message IDs  @L3C*/
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*    3 *        BIT(01),           /*                                */
*   2 INTVMC00 CHAR(04),           /* IGFTMC00 ADDRESS               */
*   2 INTVMC01 CHAR(04),           /* IGFTMC01 ADDRESS               */
*   2 INTVWRKA CHAR(04),           /* MIH GETMAINED WORK AREA        */
*   2 INTVLEXT CHAR(16),           /* MIH INDEX TABLE - SET FOR ONE
*                                     INDEX ENTRY                @L3C*/
*   2 INTVLTNB CHAR(02),           /* TOTAL NUMBER OF DEV ENTRIES
*                                                                @L3A*/
*   2 INTVLTBL CHAR(*);            /* INSTALLATION DEFINED DEVICE
*                                     ADDRESS TABLE              @L3C*/
*/* **************************************************************** */
*/* *                                                                */
*/* *    Mapping of an MIH index entry in the IGFINTVL CSECT         */
*/* *                                                                */
*/* **************************************************************** */
*DECLARE
*  1 INTVEXIT  CHAR(16) BDY(WORD) BASED(EXITPTR),
*   2 INTVEXT1 PTR(31)  BDY(WORD), /* MIH 1ST EXIT ADDR              */
*   2 INTVEXT2 PTR(31)  BDY(WORD), /* MIH 2ND EXIT ADDR              */
*   2 INTVCNST CHAR(04),           /* EXIT CONSTANTS                 */
*    4 INTVCON1 CHAR(02),          /* . EXIT CONSTANT FIELD #1       */
*    4 INTVCON2 CHAR(02),          /* . EXIT CONSTANT FIELD #2       */
*   2 INTVRSVD CHAR(02),           /* RESERVED                       */
*   2 INTVRTY1 CHAR(01),           /* 1ST EXIT RETRY COUNTER         */
*   2 INTVRTY2 CHAR(01);           /* 2ND EXIT RETRY COUNTER         */
./ ADD NAME=IGFENV
 % DEACTIVATE IGFENVATTRS;
 ? DOCUMENT TITLE(DEFINE) POSITION(BEGIN) TEXT(THE ENV);
 ? DOCUMENT TITLE(STATUS)
   TEXT(OS/VS2 JBB1226);
 ? DOCUMENT TITLE(COPYRIGHT)
   TEXT(5740-XYN COPYRIGHT IBM CORP 1980
        LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
        REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.);
 ? DOCUMENT TITLE(PURPOSE)
   TEXT(THIS IS A DESCRIPTION OF THE INPUT TO IGFPEXIT.
     IT IS POINTED TO BY REGISTER 1.);
 ? DOCUMENT
   TEXT(ALL INVOKERS OF IGFPEXIT MUST CONSTRUCT AN ENV SOMEWHERE.);
 ? DOCUMENT TITLE(USAGE)
   TEXT(INCLUDE IGFENV.
     SET THE MACRO PHASE VARIABLE
     IGFENVATTRS TO THE DESIRED ATTRIBUTES.
     THE DEFAULT ATTRIBUTES PRODUCE A BASED VERSION OF THE ENV.);
 ? DOCUMENT TITLE(PWA VERSION)
   TEXT(THE PWA CONTAINS A POINTER TO AN ENV.
     THIS PWA VERSION OF THE ENV IS USED BY IGFPBUCR AND
     IGFPEXI2, A SECONDARY ENTRY POINT IF IGFPEXIT.);
 ? DOCUMENT TITLE(CPU WORK/SAVEAREA VERSION)
   TEXT(THE RTM/MCH CPU WSA VERSION OF THE ENV IS USED
     BY IEAVTRTH.);
 ? DOCUMENT TITLE(OTHER VERSIONS)
   TEXT(IGF2603D ALSO INVOKES IGFPEXIT AND THEREFORE MUST BUILD
     AN ENV.
     IN THIS CASE THE ENV IS LOCATED IN THE THE AUTOMATIC AREA
     BELONGING TO IGF2603D.);
 ? DOCUMENT TITLE(CHANGE ACTIVITY);
 ? DOCUMENT TITLE(#05: @G381P2O)
   TEXT(NEW FOR JBB1226)
   POSITION(END);
*/*A000000-999999                                           @G381P2O */
 ? DOCUMENT TITLE(DEFINE) POSITION(BOTH) TEXT(THE ENV);
                                                          @SPACE(2);
 % ACTIVATE IGFENVATTRS;
 DECLARE
                                                          @SPACE(1);
   1 ENV  IGFENVATTRS                /* IGFPEXIT INPUT               */
          BDY(DWORD),
                                                          @SPACE(1);
     2 ENVID     CHAR(4),            /* = 'ENV '                     */
                                                          @SPACE(1);
     2 *         CHAR(4),            /*                              */
                                                          @SPACE(2);
     2 ENVGREGS  CHAR(64) BDY(WORD), /* THE 16 GENERAL PURPOSE REGS. */
                                     /* THESE REGISTERS ARE LOADED   */
                                     /* AT THE END OF IGFPEXIT       */
                                     /* PROCESSING.                  */
                                                          @SPACE(1);
       3 ENVGREG(0:15) PTR(31),      /* THE SUBSCRIPT IS EQUIVALENT  */
                                     /* TO THE REGISTER NUMBER.      */
                                                          @SPACE(2);
     2 ENVXM     CHAR(8) BDY(WORD),  /* CONTROL REGISTER(3,4).       */
                                     /* THESE TWO CONTROL REGISTERS  */
                                     /* ARE USED BY THE CMSET RESET  */
                                     /* THAT IS ISSUED AT THE END OF */
                                     /* IGFPEXIT PROCESSING.         */
                                                          @SPACE(1);
       3 ENVXMCR3 PTR(31),           /* CONTROL REGISTER(3)          */
       3 ENVXMCR4 PTR(31),           /* CONTROL REGISTER(4)          */
                                                          @SPACE(2);
     2 ENVPSW   CHAR(8) BDY(DWORD),  /* THIS IS THE PSW THAT IS      */
                                     /* LOADED AT THE END OF         */
                                     /* IGFPEXIT PROCESSING          */
                                                          @SPACE(1);
      3 ENVPSWFG CHAR(4),
        4 ENVPSWSM CHAR(1),          /* THE SYSTEM MASK              */
        4 ENVPSWKM CHAR(1),          /* THE KEY MASK                 */
        4 ENVPSWPM CHAR(1),          /* THE PROGRAM MASK             */
        4 *        CHAR(1),          /* RESERVED                     */
                                                          @SPACE(1);
      3 *        PTR(31),            /*                              */
        4 *        CHAR(1),          /*                              */
        4 ENVPSWIA PTR(24);          /* INSTRUCTION ADDRESS          */
./ ADD NAME=IGFERPIB
         MACRO
         IGFERPIB &WORK
IGFERPIB DSECT
*
*
*        ERROR RECOVERY PROCEDURE INFORMATION BLOCK (ERPIB)
*        DEFINITION
*
*
IGUCB    DS    A .                 UCB FIELD
IGPRGFLG DS    CL1 .               PROGRAM FLAG BITS
IGBLAME  DS    CL1 .               PROBABLE SOURCE OF ERROR
IGVALIDB DS    CL1 .               VALIDITY INDICATOR BITS
IGTERMSQ DS    CL1 .               TERMINATION/SEQUENCE CODE BITS
         AIF   ('&WORK' EQ '1').A1
         MEXIT
.A1      ANOP
*
*        CCH WORK AREA AND INTERNAL SWITCHES
*        AREA IMMEDIATELY FOLLOWS THE WORK ERPIB
*
CCHSW1   DS    CL1 .               INTERNAL CCH SWITCH - BYTE 1
CCHSW2   DS    CL1 .               INTERNAL CCH SWITCH - BYTE 2
RECBYTE  DS    CL1 .               RECORD BYTE
*
*        ERPIB DEFINITION MASKS
*
         SPACE 2
*
*        PROGRAM FLAG BITS -- BYTE 4
*
CCHSIOB  EQU   X'80' .                  SIO BIT
CCHINTB  EQU   X'40' .                  INTERRUPT BIT
CCHTIOB  EQU   X'20' .                  TIO BIT
CCHHIOB  EQU   X'10' .                  HIO BIT
CCHSNSB  EQU   X'04' .                  SENSE DATA STORED BIT
CCHCNTB  EQU   X'02' .                  COUNT VALID BIT
CCHNRYB  EQU   X'01' .                  NO RETRY BIT
         SPACE 2
*
*        PROBABLE SOURCE OF ERROR BITS -- BYTE 5
*
CCHCPU   EQU   X'80' .             CPU IS SOURCE OF ERROR
CCHCHNL  EQU   X'40' .             CHANNEL IS SOURCE OF ERROR
CCHSCUB  EQU   X'20' .             STORAGE CONTROL UNIT SOURCE OF ERROR
CCHSTG   EQU   X'10' .             STORAGE IS SOURCE OF ERROR
CCHINTFC EQU   X'08' .             I/O INTERFACE IS SOURCE OF ERROR
         SPACE 2
*
*       VALIDITY BITS -- BYTE 6
*
CCHRCV   EQU   X'10' .                  RETRY CODE VALID
CCHUSV   EQU   X'08' .                  UNIT STATUS VALID
CCHCMDV  EQU   X'04' .                  COMMAND ADDRESS VALID
CCHCAV   EQU   X'02' .                  CHANNEL ADDRESS VALID
CCHDAV   EQU   X'01' .                  DEVICE ADDRESS VALID
         SPACE 2
*
*        TERMINATION CODE BITS -- BYTE 7
*
COMPSYS  EQU   X'C0' .                  SYSTEM RESET
COMPSEL  EQU   X'80' .                  SELECTIVE RESET
COMPFES  EQU   X'40' .                  FORCED ENDING SEQUENCE
COMPID   EQU   X'00' .                  INTERFACE DISCONNECT
CCHDI    EQU   X'08' .             * DISCONNECT IN
         SPACE 2
*
*        SEQUENCE CODE BITS -- BYTE 7
*
RTCODE0  EQU   X'00' .           *      RETRY
RTCODE1  EQU   X'01' .           *           CODE
RTCODE2  EQU   X'02' .           *               VALUES
RTCODE3  EQU   X'03' .           *                     FOR
RTCODE4  EQU   X'04' .           *                        ERPIB
RTCODE5  EQU   X'05' .           *
RTCODE6  EQU   X'06' .           *
RTCODE7  EQU   X'07' .           *
         SPACE 1
*
*******************      CCH INTERNAL SWITCHES     ***************
*              SWITCH BYTE 1
*
CCHCMDRG EQU   X'80' .                  COMMAND REG PARITY VALID
CCHNORE  EQU   X'40' .                  NO RECORD ENTRY AVAILABLE
CCHERFRE EQU   X'20' .               ERQIB FREED FROM ACTIVE LIST
CCHNOLST EQU   X'10' .               RECORD ONLY-NO ERPIB TO LIST
*                                  DEVICE END OR
CCHHAND  EQU   X'08' .               ATTENTION PRESENTED
CCHIBC   EQU   X'04' .               ERPIB ALREADY CREATED
UCBNVBIT EQU   X'02' .               UCB INVALID
*
*
*        SWITCH BYTE 2
*
SYSTERM  EQU   X'80' .               SIGNAL FOR SYSTEM TERMINATION
INTRN2   EQU   X'40' .               ALTERNATE RETURN SWITCH
NOMODEL  EQU   X'20' .               NO MODEL FOUND FOR LOGOUT
NOLOG    EQU   X'10' .                   MASK FOR NO CHANNEL LOGOUT
*
         MEND
./ ADD NAME=IGFMSG
*        %GOTO MSG1;               /* BILINGUAL MAPPING MACRO
         MACRO
         IGFMSG
*                                  */
*%MSG1: ;
*/*********************************************************************
*
*  MCH MESSAGE CONTENT BLOCK
*
*  OS/VS2 RELEASE 2, 11/20/72
*
*  METHOD OF ACCESS:
*                    BAL - DSECT ONLY.  USING ON 'MSG' ESTABLISHES
*                          ADDRESSABILITY.
*
*                    PL/S - DCL MSGPTR PTR
*
**********************************************************************/
*%GOTO MSG2; /*
         SPACE 1
MSG      DSECT
MSGCTL   DS    XL1 .               CONTROL BYTE USED BY IGFPMMSG TO
*                                    RESERVE MCH MSG BUFFER
MSGNUM   DS    XL1 .               MSG NUMBER TO BE CONVERTED TO
*                                    DECIMAL CHARACTERS TO REPLACE 'XX'
*                                    IN THE MSG PREFIX IGF9XXI (THE
*                                    VALUE X'00' INDICATES THAT THE MSG
*                                    BUFFER IS NOT READY FOR RECORDING)
MSGTAB1  DS    XL1 .               CODE USED TO LOCATE DATA FOR A 1ST
*                                    TABLE SUBSTITUTION INTO A MSG
MSGTAB2  DS    XL1 .               CODE USED TO LOCATE DATA FOR A 2ND
*                                    TABLE SUBSTITUTION INTO A MSG
MSGCHAR  DS    0XL8 .              EIGHT-BYTE FIELD OF CHARACTER DATA
*                                    TO BE MOVED INTO MSG FOR A
*                                    CHARACTER SUBSTITUTION
MSGVAR1  DS    XL4 .               FOUR-BYTE FIELD OF BINARY DATA TO BE
*                                    CONVERTED TO DECIMAL OR HEX
*                                    CHARACTERS AND TO BE MOVED INTO
*                                    MSG FOR 1ST DECIMAL OR HEX
*                                    SUBSTITUTION INTO A MSG
MSGVAR2  DS    XL4 .               FOUR-BYTE FIELD OF BINARY DATA TO BE
*                                    CONVERTED TO DECIMAL OR HEX
*                                    CHARACTERS AND TO BE MOVED INTO
*                                    MSG FOR 2ND DECIMAL OR HEX
*                                    SUBSTITUTION INTO A MSG
*                                                                     *
*    END OF MCH MESSAGE CONTENT BLOCK                                 *
*                                                                     *
         MEND
*        */
*%MSG2: ;
*
* DECLARE
*  1 MSG BASED (MSGPTR),
*   2 MSGCTL CHAR (1),             /* CONTROL BYTE USED BY IGFPMMSG
*                                     TO RESERVE MCH MSG BUFFER      */
*   2 MSGNUM CHAR(1),              /* MSG NUMBER TO BE CONVERTED TO
*                                     DECIMAL CHARACTERS TO REPLACE
*                                     'XX' IN THE MSG PREFIX IGF9XXI
*                                     (THE VALUE X'00' INDICATES THAT
*                                     THE MSG BUFFER IS NOT READY FOR
*                                     RECORDING)                     */
*   2 MSGTAB1 CHAR(1),             /* CODE USED TO LOCATE DATA FOR A
*                                     1ST TABLE SUBSTITUTION INTO A
*                                     MSG                            */
*   2 MSGTAB2 CHAR(1),             /* CODE USED TO LOCATE DATA FOR A
*                                     2ND TABLE SUBSTITUTION INTO A
*                                     MSG                            */
*   2 MSGCHAR CHAR(8),             /* EIGHT-BYTE FIELD OF CHARACTER
*                                     DATA TO BE MOVED INTO MSG FOR A
*                                     CHARACTER SUBSTITUTION         */
*    3 MSGVAR1 CHAR(4),            /* FOUR-BYTE FIELD OF BINARY DATA TO
*                                     BE CONVERTED TO DECIMAL OR HEX
*                                     CHARACTERS AND TO BE MOVED INTO
*                                     MSG FOR 1ST DECIMAL OR HEX
*                                     SUBSTITUTION INTO A MSG        */
*    3 MSGVAR2 CHAR(4);            /* FOUR-BYTE FIELD OF BINARY DATA TO
*                                     BE CONVERTED TO DECIMAL OR HEX
*                                     CHARACTERS AND TO BE MOVED INTO
*                                     MSG FOR 2ND DECIMAL OR HEX
*                                     SUBSTITUTION INTO A MSG        */
*/*
*  END OF MCH MESSAGE CONTENT BLOCK
**/
./ ADD NAME=IGFPWA
*        %GOTO PWA1;             /*  BILINGUAL MAPPING MACRO
         MACRO
         IGFPWA
*                                */
*%PWA1: ;
*/*********************************************************************
*
*  MCH PROCESSOR WORK AREA
*
*  OS/VS2 RELEASE 2, 3/29/73
*
*  METHOD OF ACCESS:
*                    BAL - DSECT ONLY.  USING ON 'PWA' ESTABLISHES
*                          ADDRESSABILITY.
*
*                    PL/S - DCL PWAPTR PTR
*
**********************************************************************/
*%GOTO PWA2; /*
         SPACE 1
PWA      DSECT
PWASA1   DS    XL72 .              STANDARD REGISTER SAVE AREA 1
PWASA2   DS    XL72 .              STANDARD REGISTER SAVE AREA 2
PWASA3   DS    XL72 .              STANDARD REGISTER SAVE AREA 3
PWASA4   DS    XL72 .              STANDARD REGISTER SAVE AREA 4
PWAESA   DS    XL72 .              EXTRA REGISTER SAVE AREA (FOR
*                                    IGFPEXIT)
PWASRTHB DS    D .                 THRESHOLD BLOCK FOR SYSTEM RECOVERY
*                                    (SR) EVENTS
PWADGTHB DS    D .                 THRESHOLD BLOCK FOR DEGRADATION
*                                    (DG) EVENTS
PWAFRRCD DS    F .                 FRR ERROR CODE FIELD
PWAFRRCT DS    F .                 FRR STACK INDEX
*
PWAFRR1  DS    0XL16 .             FRR STACK ENTRY 1
PWAFRR12 DS    F .                 FRR STACK REGISTER 12 FIELD
PWAFRR13 DS    F .                 FRR STACK REGISTER 13 FIELD
PWAFRR15 DS    F .                 FRR STACK REGISTER 15 FIELD
PWAFRR10 DS    F .                 FRR STACK REGISTER 0 FIELD
*
PWAFRR2  DS    0XL16 .             FRR STACK ENTRY 2
PWAFRR22 DS    F .                 FRR STACK REGISTER 12 FIELD
PWAFRR23 DS    F .                 FRR STACK REGISTER 13 FIELD
PWAFRR25 DS    F .                 FRR STACK REGISTER 15 FIELD
PWAFRR20 DS    F .                 FRR STACK REGISTER 0 FIELD
*
PWAFRR3  DS    0XL16 .             FRR STACK ENTRY 3
PWAFRR32 DS    F .                 FRR STACK REGISTER 12 FIELD
PWAFRR33 DS    F .                 FRR STACK REGISTER 13 FIELD
PWAFRR35 DS    F .                 FRR STACK REGISTER 15 FIELD
PWAFRR30 DS    F .                 FRR STACK REGISTER 0 FIELD
*
PWAFRR4  DS    0XL16 .             FRR STACK ENTRY 4
PWAFRR42 DS    F .                 FRR STACK REGISTER 12 FIELD
PWAFRR43 DS    F .                 FRR STACK REGISTER 13 FIELD
PWAFRR45 DS    F .                 FRR STACK REGISTER 15 FIELD
PWAFRR40 DS    F .                 FRR STACK REGISTER 0 FIELD
*
PWASOSW  DS    XL8 .               AREA TO SAVE RECURSIVE OLD PSW IF
*                                    MACHINE CHECK, PROGRAM CHECK, OR
*                                    RESTART INTERRUPTION OCCURS IN MCH
PWAINTC  DS    XL8 .               AREA TO SAVE INTERRUPT CODE FROM
*                                    RECURSIVE MACHINE CHECK OR PROGRAM
*                                    CHECK IN MCH
PWASFLC  DS    XL232 .             AREA TO SAVE FIXED LOGOUT AREA (FLC
*                                    LOCATIONS 0-231) FROM THE ORIGINAL
*                                    (NOT RECURSIVE) MACHINE CHECK
*                                    INTERRUPTION
PWACR14  DS    F .                 RESUME CONTROL REG 14 IMAGE (INPUT
*                                    TO AND OUTPUT FROM MODEL DEPENDENT
*                                    CR MAINTENANCE RTN, IGF01MMM)
PWACR15  DS    F .                 RESUME CONTROL REG 15 IMAGE (INPUT
*                                    TO AND OUTPUT FROM MODEL DEPENDENT
*                                    CR MAINTENANCE RTN, IGF01MMM)
PWARGPR  DS    XL64 .              RESUME GPR'S (USED AT ENTRY POINT
*                                    IGFPEXI2 TO ACCOMPLISH RETURN FROM
*                                    IGFPEXIT)
PWARPSW  DS    XL8 .               RESUME PSW (USED AT ENTRY POINT
*                                    IGFPEXI2 TO ACCOMPLISH RETURN FROM
*                                    IGFPEXIT)
PWAMFAFL DS    XL1 .               MALFUNCTION ALERT RECEIVED FLAGS
PWAINIT  DS    XL1 .               CPU INITIALIZATION COMPLETE FLAGS
*                                    (INDICATES STIDC'S AND STIDP HAVE
*                                    BEEN EXECUTED ON THIS CPU)
PWAFLAGS DS    XL1 .               PROCESSOR FLAGS
*
PWAREST  EQU   X'80' .             RESTART INTERRUPTION QUEUED
PWACCHED EQU   X'40' .             IGFPMSCA CALLED IGFCCHED,   @G552PLM
*                                  TURNED OFF ON RET           @G552PLM
*                                  BITS 2-7 RESERVED           @G552PLM
PWANRHED EQU X'20' .               IGFPNRFH SCHEDULED.         @G559P2L
PWAENABL EQU X'10' .               BUFFER/TLB  RESTORE         @G556P2P
*                                  REQUESTED                   @G556P2P
*                                  BITS 4-7 RESERVED           @G556P2P
*
PWAEDSRB DS    XL1 .               IGFCCHED SRB LOCK BYTE      @G552PLM
PWACNTR  DS    XL1 .               RECURSIVE MACHINE CHK COUNT @G551P2M
         DS    XL1 .               RESERVED FOR FUTURE USE     @G552PLM
PWACPUAD DS    H .                 AREA FOR IGFPTERM TO SAVE CPU ADDR
*                                    OF SIGNALLED CPU DURING PROCESSOR
*                                    TERMINATION
         DS    0F
PWATEST  DS    XL8 .               RESERVED FOR TESTING
         DS    0D
PWAWRK   DS    XL32 .              WORK AREA FOR TEMPORARY USE
PWACCSRB DS    XL44 .              IGFCCHED SRB                @G552PLM
PWANRSRB DS    XL44 .              IGFPNRFH SRB                @G559P2L
         DS    0D   .                                          @G55CP2P
PWAPDTHB DS    XL16 .              THRESHOLD BLOCK FOR         @G55CP2P
*                                  INSTRUCTION PROCESSING      @G55CP2P
*                                  DAMAGE   EVENTS             @G55CP2P
PWASDTHB DS    XL16 .              THRESHOLD BLOCK FOR         @G55CP2P
*                                  SYSTEM DAMAGE               @G55CP2P
*                                           EVENTS             @G55CP2P
PWAIVTHB DS    XL16 .              THRESHOLD BLOCK FOR         @G55CP2P
*                                  INVALID REGISTER OR PSW     @G55CP2P
*                                           EVENTS             @G55CP2P
PWATCTHB DS    XL16 .              THRESHOLD BLOCK FOR         @G55CP2P
*                                  TOD CLOCK DAMAGE EVENTS     @G55CP2P
PWAPTTHB DS    XL16 .              THRESHOLD BLOCK FOR         @G55CP2P
*                                  CPU TIMER DAMAGE EVENTS     @G55CP2P
PWACCTHB DS    XL16 .              THRESHOLD BLOCK FOR         @G55CP2P
*                                  CLOCK COMPARATOR DMG        @G55CP2P
*                                           EVENTS             @G55CP2P
*                                                                     *
*    END OF MCH PROCESSOR WORK AREA                                   *
*                                                                     *
         MEND
*        */
*%PWA2: ;
*
* DECLARE
*  1 PWA BASED(PWAPTR) BDY(DWORD),
*   2 PWASA1 (18) FIXED(31),       /* STANDARD REGISTER SAVE AREA 1  */
*   2 PWASA2 (18) FIXED(31),       /* STANDARD REGISTER SAVE AREA 2  */
*   2 PWASA3 (18) FIXED(31),       /* STANDARD REGISTER SAVE AREA 3  */
*   2 PWASA4 (18) FIXED(31),       /* STANDARD REGISTER SAVE AREA 4  */
*   2 PWAESA (18) FIXED(31),       /* EXTRA REGISTER SAVE AREA (FOR
*                                     IGFPEXIT                       */
*   2 PWASRTHB CHAR(8) BDY(DWORD), /* THRESHOLD BLOCK FOR SYSTEM
*                                     RECOVERY (SR) EVENTS           */
*   2 PWADGTHB CHAR(8) BDY(DWORD), /* THRESHOLD BLOCK FOR DEGRADATION
*                                     (DG) EVENTS                    */
*   2 PWAFRRCD FIXED(31),          /* FRR ERROR CODE FIELD           */
*   2 PWAFRRCT FIXED(31),          /* FRR STACK INDEX                */
*   2 PWAFRR (4),                  /* FRR STACK ENTRIES              */
*    3 PWAFRR12 FIXED(31),         /* FRR STACK REGISTER FIELD 12    */
*    3 PWAFRR13 FIXED(31),         /* FRR STACK REGISTER FIELD 13    */
*    3 PWAFRR15 FIXED(31),         /* FRR STACK REGISTER FIELD 15    */
*    3 PWAFRR00 FIXED(31),         /* FRR STACK REGISTER FIELD 0     */
*   2 PWASOSW CHAR(8) BDY(WORD),   /* AREA TO SAVE RECURSIVE OLD PSW IF
*                                     MACHINE CHECK, PROGRAM CHECH, OR
*                                     RESTART INTERRUPTION OCCURS IN
*                                     MCH                            */
*   2 PWAINTC CHAR(8) BDY(WORD),   /* AREA TO SAVE INTERRUPT CODE FROM
*                                     RECURSIVE MACHINE CHECK OR
*                                     PROGRAM CHECK IN MCH           */
*   2 PWASFLC CHAR(232) BDY(WORD), /* AREA TO SAVE FIXED LOGOUT AREA
*                                     (FLC LOCATIONS 0-231) FROM THE
*                                     ORIGINAL (NOT RECURSIVE) MACHINE
*                                     CHECK INTERRUPTION             */
*   2 PWACR14 BIT(32) BDY(WORD),   /* RESUME CONTROL REG 14 IMAGE
*                                     (INPUT TO AND OUTPUT FROM MODEL
*                                     DEPENDENT CR MAINTENANCE RTN,
*                                     IGF01MMM)                      */
*   2 PWACR15 BIT(32) BDY(WORD),   /* RESUME CONTROL REG 15 IMAGE
*                                     (INPUT TO AND OUTPUT FROM MODEL
*                                     DEPENDENT CR MAINTENANCE RTN,
*                                     IGF01MMM)                      */
*   2 PWARGPR (16) FIXED(31),      /* RESUME GRP'S (USED AT ENTRY POINT
*                                     IGFPEXI2 TO ACCOMPLISH RETURN
*                                     FROM IGFPEXIT)                 */
*   2 PWARPSW CHAR(8) BDY(WORD),   /* RESUME PSW (USED AT ENTRY POINT
*                                     IGFPEXI2 TO ACCOMPLISH RETURN
*                                     FROM IGFPEXIT)                 */
*   2 PWAMFAFL CHAR(1),            /* MALFUNCTION ALERT RECEIVED
*                                     FLAGS                          */
*   2 PWAINIT CHAR(1),             /* CPU INITIALIZATION COMPLETE FLAGS
*                                     (INDICATES STIDC'S AND STIDP HAVE
*                                     BEEN EXECUTED ON THIS CPU)     */
*   2 PWAFLAGS BIT(8),             /* PROCESSOR FLAGS                */
*    3 PWAREST BIT(1),             /* RESTART INTERRUPTION QUEUED    */
*    3 PWACCHED BIT(1),            /* IGFPMSCA CALLED IGFCCHED
*                                     TURNED OF ON RETURN    @G552PLM*/
*    3 PWANRHED BIT(1),            /* ON -IGFPNRFH SCHEDULED.@G559P2L*/
*    3 PWAENABL BIT(1),            /* ON - BUFFER/TLB
*                                     RESTORE REQUESTED      @G556P2P*/
*    3 * BIT(4),                   /* RESERVD FOR FUTURE USE @G556P2P*/
*   2 PWAEDSRB CHAR(1),            /* IGFCCHED SRB LOCK BYTE @G552PLM*/
*   2 PWACNTR BIT(8),              /* RECURSIVE MCH CHK COUNT@G551P2M*/
*   2 * CHAR(1),                   /* RESERVED FOR FUTURE USE        */
*   2 PWACPUAD CHAR(2) BDY(HWORD), /* AREA FOR IGFPTERM TO SAVE CPU
*                                     ADDR OF SIGNALLED CPU DURING
*                                     PROCESSOR TERMINATION          */
*   2 PWATEST CHAR(8) BDY(WORD),   /* RESERVED FOR TESTING           */
*   2 PWAWRK CHAR (32) BDY(DWORD), /* WORK AREA FOR TEMP USE @G552PLM*/
*   2 PWACCSRB CHAR(44),           /* IGFCCHED SRB           @G552PLM*/
*   2 PWANRSRB CHAR(44),           /* IGFPNRFH SRB           @G559P2L*/
*   2 PWAPDTHB CHAR(16) BDY(DWORD),/* THRESHOLD BLOCK FOR INSTRUCTION
*                                     PROCESSING      EVENTS @G55CP2P*/
*   2 PWASDTHB CHAR(16) BDY(DWORD),/* THRESHOLD BLOCK FOR SYSTEM
*                                     DAMAGE     EVENTS      @G55CP2P*/
*   2 PWAIVTHB CHAR(16) BDY(DWORD),/* THRESHOLD BLOCK INVALID PSW OR
*                                     REGISTER       EVENTS  @G55CP2P*/
*   2 PWATCTHB CHAR(16) BDY(DWORD),/* THRESHOLD BLOCK FOR TOD CLOCK
*                                     DAMAGE EVENTS          @G55CP2P*/
*   2 PWAPTTHB CHAR(16) BDY(DWORD),/* THRESHOLD BLOCK FOR CPU TIMER
*                                     DAMAGE EVENTS          @G55CP2P*/
*   2 PWACCTHB CHAR(16) BDY(DWORD);/* THRESHOLD BLOCK CLOCK COM-
*                                     PARATOR DMG EVENTS     @G55CP2P*/
*/*
*  END OF MCH PROCESSOR WORK AREA
**/
./ ADD NAME=IGFRMS
*        %GOTO RMSPL0;       /* BILINGUAL RMSPL MACRO
         MACRO
         IGFRMS  &LIST=NO
         PUSH PRINT                                                 */
*%RMSPL0:  ;
*/********************************************************************
*                                                                    *
*        RMS PARAMETER LIST MACRO                                    *
*                                                                    *
**********************************************************************
*                                                                    *
*    STATUS                                                          *
*        MVM RELEASE 1, LEVEL = 0                                    *
*                                                                    *
*    METHOD OF ACCESS                                                *
*                                                                    *
*        PL/S - DCL RMSPLPTR PTR                                     *
*                                                                    *
*        BAL  - IGFRMS  (MACRO CALL)                                 *
*        USING RMSPL,REG                                             *
*        LOAD REG WITH RMSPL ADDRESS                                 *
*                                                                    *
*    F.E.'S                                                          *
*        MICROFICHE LISTINGS - IGFRMS                                *
*                                                                    *
*    DEVELOPERS                                                      *
*        PL/S LISTING - SPECIFY %IHALIST='YES' BEFORE INCLUDE        *
*        BAL LISTING  - SPECIFY LIST=YES ON MACRO CALL               *
*                                                                    *
*        FOR INTEGRATION, A LIST MUST NOT BE REQUESTED UNLESS        *
*        YOUR MODULE CREATES THE MACRO                               *
*********************************************************************/
*
*
*%GOTO RMSPL1;               /*
         AIF ('&LIST' EQ 'YES').RMSPL1A
         PRINT OFF
.RMSPL1A ANOP
RMSPL    DSECT
*
**********************************************************************
*                                                                    *
*              RMS PARAMETER LIST                                    *
*                                                                    *
**********************************************************************
*
RMSCID   DS    XL1           ID OF USER
*  EQUATES FOR RMSCID
RMSNIP   EQU   X'80'         SET BY IGFRINIT
RMSVCPU  EQU   X'40'         SET BY VARY CPU
RMSMCH   EQU   X'20'         SET BY MCH
RMSACT   DS    XL1           ACTION REQUESTED
*  EQUATES FOR RMSACT
RMSBLDL  EQU   X'80'         SET BY IGFRINIT, BUILD BLDL
RMSLOAD  EQU   X'40'         SET BY IGFRINIT, LOAD
RMSSINIT EQU   X'10'         SET BY IGFRINIT, SYSTEM INITIALIZATION
RMSALLOC EQU   X'08'         SET BY LOGICAL VARY, ALLOCATE MCEL/IOEL
RMSDALOC EQU   X'04'         SET BY LOGICAL VARY, DEALLOCATE MCEL/IOEL
RMSREGI  EQU   X'02'         SET BY LOGICAL VARY, INITIALIZE CONTROL
*                            REGISTERS
RMSREGD  EQU   X'01'         SET BY LOGICAL VARY, RESET CONTROL REGS.
*
*      NOTE:  LOGICAL VARY IS A NIP FUNCTION SIMILIAR TO VARY CPU
*
RMSPA    DS    XL2           PROCESSOR ADDRESS FOR WHICH ACTION IS
*                            REQUESTED (0000-003F)
*            END OF RMS PARAMETER LIST
*
         POP  PRINT
         MEND
         EJECT
*                                                                   */
*%RMSPL1:  ;
*%DEACTIVATE   PUSH,POP,OFF;
*%IHALPUSH='@LIST PUSH';
*%IHALPOP='@LIST POP';
*%IHALOFF='@LIST OFF';
*IHALPUSH;
*%IF IHALIST='YES'  %THEN
*            %GOTO RMSPL2;
*IHALOFF;
*%RMSPL2:  ;
*/********************************************************************
*                                                                    *
*              RMS PARAMETER LIST                                    *
*                                                                    *
**********************************************************************
*                                                                   */
     DCL 1 RMSPL BASED (RMSPLPTR) BDY (WORD),
         2 RMSCID CHAR(1),        /* ID OF USER                     */
           3 RMSNIP BIT(1),       /* SET BY IGFRINIT                */
           3 RMSVCPU BIT(1),      /* SET BY VARY CPU                */
           3 RMSMCH BIT(1),       /* SET BY MCH                     */
           3 RMSRES1 BIT(5),      /* RESERVED                       */
         2 RMSACT CHAR(1),        /* ACTION REQUESTED               */
           3 RMSBLDL BIT(1),      /* SET BY IGFRINIT, BUILD BLDL    */
           3 RMSLOAD BIT(1),      /* SET BY IGFRINIT, LOAD          */
           3 RMSRES2 BIT(1),      /* RESERVED                       */
           3 RMSSINIT BIT(1),     /* SET BY IGFRINIT, SYSTEM
                                     INITIALIZATION                 */
           3 RMSALLOC BIT(1),     /* SET BY LOGICAL VARY, ALLOCATE
                                     MCEL/IOEL BUFFERS              */
           3 RMSDALOC BIT(1),     /* SET BY LOGICAL VARY, DEALLOCATE
                                     MCEL/IOEL BUFFERS              */
           3 RMSREGI BIT(1),      /* SET BY LOGICAL VARY, INITIALIZE
                                     CONTROL REGISTERS              */
           3 RMSREGD BIT(1),      /* SET BY LOGICAL VARY, RESET
                                     CONTROL REGISTERS              */
 /*       NOTE: LOGICAL VARY IS A NIP FUNCTION SIMILIAR TO VARY CPU */
         2 RMSPA CHAR(2);         /* PROCESSOR ADDRESS FOR WHICH
                                     ACTION IS REQUESTED (0000-003F)*/
 /*    END OF RMS PARAMETER LIST                                    */
*IHALPOP;
*%ACTIVATE PUSH,POP,OFF;
./ ADD NAME=IGFRWA
*        %GOTO RWA1;                     /* BILINGUAL MAPPING MACRO
         MACRO
         IGFRWA  &DSECT=YES
.*A026100-026400,043600-043900                                 @YM05666
.*C026500,044000                                               @YM05666
.*A027100-027200,044600-044700                                 @YM00964
.*                                       */
*%RWA1: ;
*/*********************************************************************
*
*  MCH RECOVERY WORK AREA
*
*  OS/VS2 RELEASE 2, 12/13/73
*
*  METHOD OF ACCESS:
*                    BAL - DSECT IS PRODUCED UNLESS DSECT=NO IS
*                          SPECIFIED. USING ON 'RWA' ESTABLISHES
*                          ADDRESSABILITY.
*
*                    PL/S - DCL RWAPTR PTR
*
**********************************************************************/
*%GOTO RWA2; /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RWA001
RWA      DSECT
         AGO   .RWA002
.RWA001  ANOP
RWA      DS    0D
.RWA002  ANOP
RWATERM  DC    D'0' .              SYSTEM TERMINATION PARAMETERS
*                                    (A NON-ZERO VALUE INDICATES THAT
*                                    SYSTEM TERMINATION IS IN PROGRESS)
         ORG   RWATERM
RWATWTO  DS    F .                 ADDR OF WTO PARM FOR SYSTEM TERM
RWATLRB  DS    F .                 ADDR OF LRB FOR SYSTEM TERM
RWASRDF  DC    XL8'2000000000000004' DEFAULT THRESHOLD BLOCK FOR SYSTEM
*                                      RECOVERY EVENTS
RWADGDF  DC    XL8'2000000003000004' DEFAULT THRESHOLD BLOCK FOR
*                                      DEGRADATION EVENTS
RWACWRFL DC    X'00' .             CONSOLE WRITE IN PROGRESS FLAGS
RWAEMRFL DC    X'00' .             EMERGENCY RECORDING IN PROGRESS FLGS
RWAFLCFL DC    X'00' .             FIXED LOW CORE IN USE FLAGS
RWAMSGFL DC    X'00' .             LOST MESSAGE SUMMARY FLAGS
*
RWAMSG31 EQU   X'80' .             AT LEAST ONE IGF931I MSG LOST DUE TO
*                                    LACK OF MSG BUFFER SPACE
RWAMSG71 EQU   X'40' .             AT LEAST ONE IGF971I MSG LOST DUE TO
*                                    LACK OF MSG BUFFER SPACE
RWAMSG72 EQU   X'20' .             AT LEAST ONE IGF972I MSG LOST DUE TO
*                                    LACK OF MSG BUFFER SPACE
RWAMSG21 EQU   X'10' .             INDICATES ERROR IN THRESHOLD
*                                    ANALYSIS RTN
RWAMSG56 EQU   X'08' .             AT LEAST ONE IGF956I MSG LOST DUE TO
*                                    LACK OF MSG BUFFER SPACE  @G556P2P
*                                  BITS 5-7 RESERVED FOR FUTURE USE
*
RWAFLAGS DC    X'00' .             MCH SYSTEM-WIDE FLAGS       @YM05666
*
RWAWNGQI EQU   X'80' .             WARNINGS TO BE DISABLED     @YM05666
*                                  BITS 1-7 RESERVED FOR       @YM05666
*                                    FUTURE USE                @YM05666
*
         DC    XL3'000000' .       RESERVED FOR FUTURE USE     @YM05666
RWATEST  DC    XL8'0000000000000000' RESERVED FOR TESTING
RWAPCCAR DC    2F'0' .             REAL ADDRESSES OF PCCA'S    @YM00964
*                                    FOR CPU 0 - CPU 1         @YM00964
RWAPDDF  DS    0XL16                 DEFAULT THRESHOLD         @G55CP2P
         DC    XL8'3000000000000005' BLOCK FOR INSTRUCTION     @G55CP2P
         DC    XL8'000000000000012C' PROCESSING DAMAGE EVENTS  @G55CP2P
RWASDDF  DS    0XL16                 DEFAULT THRESHOLD         @G55CP2P
         DC    XL8'3000000000000005' BLOCK FOR SYSTEM          @G55CP2P
         DC    XL8'000000000000012C' DAMAGE EVENTS             @G55CP2P
RWAIVDF  DS    0XL16                 DEFAULT THRESHOLD         @G55CP2P
         DC    XL8'3000000000000005' BLOCK FOR INVALID PSW OR  @G55CP2P
         DC    XL8'000000000000012C' REGISTER EVENTS           @G55CP2P
RWATCDF  DS    0XL16                 DEFAULT THRESHOLD         @G55CP2P
         DC    XL8'3000000000000005' BLOCK FOR TOD CLOCK       @G55CP2P
         DC    XL8'000000000000012C' DAMAGE EVENTS             @G55CP2P
RWAPTDF  DS    0XL16                 DEFAULT THRESHOLD         @G55CP2P
         DC    XL8'3000000000000005' BLOCK FOR CPU TIMER       @G55CP2P
         DC    XL8'000000000000012C' DAMAGE EVENTS             @G55CP2P
RWACCDF  DS    0XL16                 DEFAULT THRESHOLD         @G55CP2P
         DC    XL8'3000000000000005' BLOCK FOR  CLOCK          @G55CP2P
         DC    XL8'000000000000012C' COMPARATOR DAMAGE EVENTS  @G55CP2P
*                                                                     *
*    END OF MCH RECOVERY WORK AREA                                    *
*                                                                     *
         MEND
*        */
*%RWA2: ;
*
* DECLARE
*  1 RWA BASED(RWAPTR) BDY(DWORD),
*   2 RWATERM CHAR(8) BDY(DWORD),  /* SYSTEM TERMINATION PARAMETERS
*                                     (A NON-ZERO VALUE INDICATES THAT
*                                     SYSTEM TERMINATION IS IN
*                                     PROGRESS)                      */
*    3 RWATWTO PTR(31),            /* ADDR OF WTO PARM FOR SYS TERM  */
*    3 RWATLRB PTR(31),            /* ADDR OF LRB FOR SYS TERM       */
*   2 RWASRDF CHAR(8) BDY(WORD),   /* DEFAULT THRESHOLD BLOCK FOR
*                                     SYSTEM RECOVERY EVENTS         */
*   2 RWADGDF CHAR(8) BDY(WORD),   /* DEFAULT THRESHOLD BLOCK FOR
*                                     DEGRADATION EVENTS             */
*   2 RWACWRFL CHAR(1),            /* CONSOLE WRITE IN PROGRESS FLAGS*/
*   2 RWAEMRFL CHAR(1),            /* EMERGENCY RECORDING IN PROGRESS
*                                     FLAGS                          */
*   2 RWAFLCFL CHAR(1),            /* FIXED LOW CORE IN USE FLAGS    */
*   2 RWAMSGFL BIT(8),             /* LOST MESSAGE SUMMARY FLAGS     */
*    3 RWAMSG31 BIT(1),            /* AT LEAST ONE IGF931I MSG LOST DUE
*                                     TO LACK OF MSG BUFFER SPACE    */
*    3 RWAMSG71 BIT(1),            /* AT LEAST ONE IGF971I MSG LOST DUE
*                                     TO LACK OF MSG BUFFER SPACE    */
*    3 RWAMSG72 BIT(1),            /* AT LEAST ONE IGF972I MSG LOST DUE
*                                     TO LACK OF MSG BUFFER SPACE    */
*    3 RWAMSG21 BIT(1),            /* INDICATES ERROR IN THRESHOLD
*                                     ANALYSIS RTN                   */
*    3 RWAMSG56 BIT(1),            /* AT LEAST ONE IGF956I MSG LOST DUE
*                                     TO LACK OF MSG BUFFER SPACE
*                                                            @G556P2P*/
*    3 *        BIT(3),            /* RESERVED FOR FUTURE USE        */
*   2 RWAFLAGS BIT(8) ABNORMAL,    /* MCH SYSTEM-WIDE FLAGS  @YM05666*/
*    3 RWAWNGQI BIT(1),            /* WARNINGS TO BE DISABLED
*                                                            @YM05666*/
*    3 *        BIT(7),            /* RESERVED FOR FUTURE USE
*                                                            @YM05666*/
*   2 * CHAR(3),                   /* RESERVED FOR FUTURE USE
*                                                            @YM05666*/
*   2 RWATEST CHAR(8) BDY(WORD),   /* RESERVED FOR TESTING           */
*   2 RWAPCCAR (2)PTR(31),         /* REAL ADDRESSES OF PCCA'S FOR
*                                     CPU 0 - CPU 1          @YM00964*/
*   2 RWAPDDF CHAR(16) BDY(WORD),  /* DEFAULT THRESHOLD BLOCK
*                                     FOR INSTRUCTION PROCESSING
*                                     DAMAGE EVENTS          @G55CP2P*/
*   2 RWASDDF CHAR(16) BDY(WORD),  /* DEFAULT THRESHOLD BLOCK
*                                     FOR SYSTEM
*                                     DAMAGE EVENTS          @G55CP2P*/
*   2 RWAIVDF CHAR(16) BDY(WORD),  /* DEFAULT THRESHOLD BLOCK
*                                     FOR INVALID PSW OR
*                                     REGISTER EVENTS        @G55CP2P*/
*   2 RWATCDF CHAR(16) BDY(WORD),  /* DEFAULT THRESHOLD BLOCK
*                                     FOR TOD CLOCK DAMAGE
*                                                    EVENTS  @G55CP2P*/
*   2 RWAPTDF CHAR(16) BDY(WORD),  /* DEFAULT THRESHOLD BLOCK
*                                     FOR CPU TIMER DAMAGE
*                                                    EVENTS  @G55CP2P*/
*   2 RWACCDF CHAR(16) BDY(WORD);  /* DEFAULT THRESHOLD BLOCK
*                                     FOR CLOCK
*                                     COMPARATOR DMG EVENTS  @G55CP2P*/
*/*
*  END OF MCH RECOVERY WORK AREA
**/
./ ADD NAME=IGFTHB
*        %GOTO THB1;          /* BILINGUAL MAPPING MACRO
         MACRO
         IGFTHB
*                             */
*%THB1: ;
*/*********************************************************************
*
*  MCH THRESHOLD BLOCK
*
*  OS/VS2 RELEASE 2, 11/20/72
*
*  METHOD OF ACCESS:
*                    BAL - DSECT ONLY.  USING ON 'THB' ESTABLISHES
*                          ADDRESSABILITY.
*
*                    PL/S - DCL THBPTR PTR
*
**********************************************************************/
*%GOTO THB2; /*
         SPACE 1
THB      DSECT
THBBASE  DS    0CL8 .              BADSE THRESHOLD BLOCK       @G55CP2P
THBMODE  DS    XL1 .               MODE SWITCHES
*
THBQUI   EQU   X'80' .             QUIET MODE FLAG
THBREC   EQU   X'40' .             RECORD=ALL MODE FLAG
THBRCT   EQU   X'20' .             RECORD=N MODE FLAG
THBEXT   EQU   X'10' .             EXTENDED THB FLAG           @G55CP2P
*                                  BITS 4-7 RESERVED FOR FUTURE USE
*
THBCNT   DS    XL3 .               EVENT COUNT FIELD
THBENABL DS    XL1 .               BUFFER ENABLE THRESHOLD CT  @G556P2P
THBTHR   DS    XL3 .               THRESHOLD COUNT FIELD
*                                                                     *
THBEXTND DS    0CL8 .              THB ENTENSION (FOR HARD     @G55C52P
*                                  MACHINE CHECK THRESHOLDS)   @G55C52P
THBOTIME DS    XL4 .               BEGINNING OF TIMING INTERVL @G55C52P
         DS    XL1 .               RESERVED FOR FUTURE USE     @G55C52P
THBNTRVL DS    XL3 .               TIMING INTERVAL LENGTH      @G55C52P
*
*    END OF MCH THRESHOLD BLOCK                                       *
*                                                                     *
         MEND
*        */
*%THB2: ;
*
* DECLARE
*  1 THB BASED(THBPTR) BDY(DWORD),
*  2 THBBASE CHAR(8) BDY(DWORD),   /* BASE THRESHOLD BLOCK   @G55CP2P*/
*   3 THBMODE BIT(8),              /* MODE SWITCHES                  */
*    4 THBQUI BIT(1),              /* QUIET MODE FLAG                */
*    4 THBREC BIT(1),              /* RECORD=ALL MODE FLAG           */
*    4 THBRCT BIT(1),              /* RECORD=N MODE FLAG             */
*    4 THBEXT BIT(1),              /* THB EXTENDED FLAG      @G55CP2P*/
*    4 *      BIT(4),              /* RESERVED FOR FUTURE USE        */
*   3 THBCNT FIXED(24),            /* EVENT COUNT FIELD              */
*   3 THBENABL FIXED(8),           /* BUFFER ENABLE THRESHOLD COUNT
*                                                            @G556P2P*/
*   3 THBTHR FIXED(24),            /* THRESHOLD COUNT FIELD  @G55CP2P*/
*   2 THBEXTND CHAR(8) BDY(DWORD), /* THB EXTENSION          @G55CP2P*/
*     3 THBOTIME CHAR(4),          /* BEGINNING OF TIMING
*                                     INTERVAL               @G55CP2P*/
*     3 * CHAR(1),                 /* RESERVED FOR FUTURE USE@G55CP2P*/
*     3 THBNTRVL FIXED(24);        /* TIMING INTERVAL LENGTH @G55CP2P*/
*/*
*  END OF MCH THRESHOLD BLOCK
**/
./ ADD NAME=IGGBCB
*%;/*
         MACRO
         IGGBCB    &TYPE=BOTH
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGBCB
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = CHANGE LEVEL 01
.*
.*01  DESCRIPTIVE-NAME = BUFFER CONTROL BLOCK FORMAT
.*
.*01  FUNCTION = FORMATS THE SAM/DAM BUFFER CONTROL BLOCKS AND LRI
.*
.*01  NOTES = NONE
.*
.*02    DEPENDENCIES = NA
.*
.*02    PERFORMANCE = NA
.*
.*02    RESTRICTIONS = NA
.*
.*02    REGISTER-CONVENTIONS = NA
.*
.*02    PATCH-LABEL = NA
.*
.*01  MODULE-TYPE = MACRO
.*
.*02  MACRO-SIZE =  NA
.*
.*02  EXTERNAL-REFERENCES = NA
.*
.*01INNER-MACROS = NONE
.*
.*01SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*
.*             VS2 RELEASE 2
.*
.**** END OF SPECIFICATIONS ***/
*/* MACCOMP Y-2 SC1D7/SJD48                                          */
*/* MACSTAT Y-2 73122/021160                                         */
*/********************************************************************/
*/*THE BUFFER POOL CONTROL BLOCK DSECTS APPLY TO BOTH SAM AND BDAM   */
*/*PROCESSING. TO GET THE MACRO EXPANSION FOR SAM DSECTS ONLY,INCLUDE*/
*/*KEYWORDS 'TYPE=SAM' WITH THE MACRO CALL. IF THE  MACRO EXPANSION  */
*/*FOR BDAM IS REQUIRED, INCLUDE KEYWORDS 'TYPE=DAM' WITH THE MACRO. */
*/*FOR BOTH SETS OF DSECTS INCLUDE THE KEYWORDS 'TYPE=BOTH' WITH THE */
*/*MACRO CALL. WHEN THE KEYWORDS ARE UNSPECIFIED,DEFAULT IS 'BOTH'.  */
*/*THE BDAM EXPANSION OF THE MACRO PROVIDES DSECTS FOR A) BCB WHEN   */
*/*ADDRESS SPACE = REAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED,    */
*/*B) BCB WHEN ADDRESS SPACE = VIRTUAL AND DYNAMIC BUFFERING HAS     */
*/*BEEN SPECIFIED, AND C) BCB FOR VARIABLE SPANNED RECORDS WHEN      */
*/*DYNAMIC BUFFERING WAS NOT SPECIFIED.  THE SAM EXPANSION OF THE    */
*/*MACRO PROVIDES A DSECT FOR THE STANDARD BCB AND THE USERS         */
*/*LOGICAL RECORD INTERFACE AREA. THE PLS2 MACRO FORMATS A COMPLETE  */
*/*SAM BCB AND LRI AND COMPLETE BDAM BCBS.                           */
*/********************************************************************/
*%GOTO BCBPLS1;                         /*                     Y02072*/
         AIF   ('&TYPE' EQ 'DAM').DAM
*/********************************************************************/
*/*THE FOLLOWING DSECT IS USED FOR SAM DATA SETS. THE DSECT IS FOR   */
*/*MAPPING TO A BUFFER POOL CONTROL BLOCK.                           */
*/********************************************************************/
BCBLK    DSECT
BCBBUFPT DS    0A                       SAME AS BCBBUFAD BELOW
         DS    X                        FILLER
BCBBUFAD DS    AL3                      ADDRESS OF FIRST BUFFER
BCBFLGS  DS    B                        FLAG BYTE
BCBLRI   EQU   X'80'                    LOG REC INTERFACE PRESENT
BCBEXTND EQU   X'40'                    BUFCB EXTENDED AREA PRESENT
BCBBUFNO DS    X                        NUMBER OF BUFFERS
BCBBUFSZ DS    H                        SIZE OF EACH BUFFER
BCBLRIAR DS    0A                       SAME AS BCBLRIAD BELOW
         DS    X                        FILLER
BCBLRIAD DS    AL3                      ADDRESS OF LOG REC AREA
BCBPAD   DS    F                        PADDING FOR DBL WD ALLIGN
BCBNLN   EQU   8                        LENGTH OF NORMFAL BCB
BCBEXLN  EQU   8                        ADD TO GET TOTAL LENGTH IF
*                                       BCB EXTENDED
*
* DSECT FOR REFERENCING USERS LOGICAL RECORD INTERFACE AREA IF PRESENT.
* THE DSECT IS USED ONLY FOR SAM DATA SETS.
*
LRIAREA  DSECT
LRILOC   DS    0D                       LOCATION OF LRI AREA
LRILGTH  DS    0A                       SAME AS LRILNGTH BELOW
LRIFLG1  DS    B                        FLAGS
LRIEOD   EQU   X'80'                    END OF DATA REACHED
LRICOB   EQU   X'40'                    COBOL DATA SET
LRIEOB   EQU   X'20'                    EOD AFTER FIRST END OF BLK
LRILNGTH DS    AL3                      LENGTH OF LRI AREA (LRECL + 32)
LRIFLAG2 DS    B                        FLAGS
LRIRELSE EQU   X'40'                    RELEASE HAS BEEN ISSUED
LRISEG   EQU   X'10'                    SEGMENTING IN PROGRESS
LRINTSPN EQU   X'04'                    NON-SPANNED RECORD
LRIASSEM EQU   X'01'                    ASSEMBLING IN PROGRESS
LRIINDEX DS    X                        INDEX TO BEGINNING OF DATA
LRIPOS   DS    H                        POSITION OF RECORD IN BLOCK
LRITRKAD DS    0D                       TRACK ADDRESS OF BEGINNING
*                                         SEGMENT OF RECORD
LRIMBBCC DS    XL5                      MBBCC OF TRACK ADDR (NOT USED
*                                         IF DCB IS FOR OUTPUT)
LRIRECAD DS    XL3                      RECAD WHEN RECORD TO BE WRITTEN
*                                         REQUIRES SEGMENTATION
LRINIOB  DS    0A                       SAME AS LRINXIOB BELOW
         DS    X                        FILLER
LRINXIOB DS    AL3                      NEXT IOB ADDRESS
LRICOUNT DS    XL2                      COUNT FIELD OF NUMBER OF BYTES
*                                         MOVED
         DS    XL2                      FILLER
LRIALIGN DS    0XL8                     FLOATING ALIGNMENT AREA
LRIDATA  DS    0C                       DATA
*
* THE FOLLOWING DSECT IS FOR REFRENCING A BUFFER.
*
BUFFER   DSECT                          BEGINNING OF BUFFER
BUFNXPTA DS    0F                       SAME AS BUFNXPTB BELOW
         DS    XL1                      FILLER
BUFNXPTB DS    XL3                      ADDR OF NEXT BUFFER OR 0 IF
*                                         LAST BUFFER. (THIS FIELD
*                                         IS PART OF BUFFER AND THUS
*                                         GETS DESTROYED BY RECORDS)
BUFER    DS    C                        FIRST BYTE OF BUFFER AFTER
*                                         POINTER TO NEXT
.DAM     AIF   ('&TYPE' EQ 'SAM').MEND
*/********************************************************************/
*/*THE FOLLOWING DSECT FORMATS A BDAM BUFFER POOL CONTROL BLOCK WHEN */
*/*ADDRESS SPACE = REAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED AS  */
*/*OPTION IN THE DCB.                                                */
*/********************************************************************/
BCBDEFR  DSECT                          BCB FOR BDAM ADDRSPAC=REAL
BCBIOBS  DS    0CL8                     IOB QUEUE PTRS--INITIALLY 0
BCBFRQT  DS    A                        ADDRESS OF FIRST IOB WAITING
*                                       FOR A BUFFER
BCBFRQB  DS    A                        ADDRESS OF LAST IOB WAITING
*                                       FOR A BUFFER
BCBNABFR DS    A                        ADDRESS OF THE NEXT AVAILABLE
*                                       BUFFER
BCBTBRS  DS    F                        SIZE OF BCB AND BUFFER POOL
*                                       IN BYTES
BCBLENTH EQU   *-BCBDEFR                SIZE OF BCB FOR REAL ADDRSPACE
*/********************************************************************/
*/*THE FOLLOWING DSECT FORMATS A BDAM BUFFER POOL CONTROL BLOCK WHEN */
*/*ADDRESS SPACE = VIRTUAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED  */
*/*AS OPTION IN THE DCB.                                             */
*/********************************************************************/
BCBDEFV  DSECT                          BCB FOR BDAM ADDRSPACE=VIRTUAL
BCBBUF1  DS    A                        ADDRESS OF FIRST BUFFER IN POOL
BCBBUFL  DS    F                        LENGTH OF EACH BUFFER, IN BYTES
BCBBFAVL DS    FL1                      BUFFER NUMBER OF FIRST AVAIL-
*                                       ABLE BUFFER
BCBRAOFS DS    FL3                      OFFSET OF RECORD AREA IN BUFFER
*                                       (VARIABLE SPANNED ONLY)
BCBTBRS1 DS    F                        SIZE OF BCB (+ SUFFIX) BUFFER
*                                       POOL, AND 1ST UNSCHEDULED LIST
BCBSUFFX DS    0F                       BUFFER SUFFIX, 1 BYTE/BUFFER,
*                                       USED AS AVAILABLE CHAIN
BCBLNTHV EQU   *-BCBDEFV                SIZE OF BCB FOR VIRTUAL ADDRSP
*/********************************************************************/
*/*THE FOLLOWING DSECT FORMATS A BDAM BUFFER POOL CONTROL BLOCK WHEN */
*/*VARIABLE SPANNED RECORDS WAS SPECIFIED AND DYNAMIC BUFFERING WAS  */
*/*NOT SPECIFIED.  ITS ADDRESS IS STORED IN DCBDYNB.                 */
*/********************************************************************/
BCBDEFS  DSECT                          BCB FOR SPANNED,NO DYN BUF
BCBNXBUF DS    F                        ADDRESS OF NEXT AVAILABLE
*                                       BUFFER (SEGMENT WORKAREA)
BCBFLAG  EQU   BCBNXBUF                 FLAG INDICATING IF THIS
*                                       BUFFER (SWA) IS IN USE
BUFINUSE EQU   X'FF'                    BUFFER (SWA) IS BEING USED
BUFAVAIL EQU   X'00'                    BUFFER (SWA) IS AVAILABLE
BCBBFNUM DS    H                        NUMBER OF BUFFERS (SWA)
BCBBFLG  DS    H                        BUFFER LENGTH
BCBLNTHS EQU   *-BCBDEFS                LENGTH OF THIS BUFFER CNTRL BLK
.MEND    MEND
*%BCBPLS1: ;                            /*                     Y02072*/
*/*                                                            Y02072*/
*/*THE FOLLOWING STRUCTURE IS USED FOR SAM DATA SETS. THE      Y02072*/
*/*STRUCTURE IS USED FOR MAPPING TO A BUFFER POOL CONTROL BLK. Y02072*/
*/*                                                            Y02072*/
*DCL 1 BCBLK CHAR(16) BDY(WORD) BASED,  /*BCB FOR SAM          Y02072*/
*      2 BCBBUFPT PTR(31),              /*SAME AS BCBBUFAD     Y02072*/
*        3 * CHAR(1),                   /*FILLER               Y02072*/
*        3 BCBBUFAD PTR(24),            /*ADDR OF FIRST BUFFER Y02072*/
*      2 BCBFLGS BIT(8),                /*FLAG BYTE            Y02072*/
*        3 BCBLRI BIT(1),               /*LOG REC INTER PRES   Y02072*/
*        3 BCBEXTND BIT(1),             /*BUFCB EXTENDED AREA  Y02072
*                                           PRESENT            Y02072*/
*      2 BCBBUFNO CHAR(1),              /*NUMBER OF BUFFERS    Y02072*/
*      2 BCBBUFSZ CHAR(2),              /*SIZE OF EACH BUFFER  Y02072*/
*      2 BCBLRIAR PTR(31),              /*SAME AS BCBLRIAD     Y02072*/
*        3 * CHAR(1),                   /*FILLER               Y02072*/
*        3 BCBLRIAD PTR(24),            /*ADDR OF LOG REC AREA Y02072*/
*      2 BCBPAD CHAR(4);                /*PADD TO DBL WD LEN   Y02072*/
*DCL  BCBNLN CONSTANT (8);              /*LEN OF NORMAL BCB    Y02072*/
*DCL  BCBEXLN CONSTANT (8);             /*ADD TO GET TOTAL LEN Y02072
*                                           IF BCB EXTENDED    Y02072*/
*/*                                                            Y02072*/
*/*STRUCTURE FOR REFERENCING USER LOGICAL RECORD INTERFACE ARE Y02072*/
*/*IF PRESENT. THE STRUCTURE IS USED ONLY FOR SAM DATA SETS.   Y02072*/
*/*                                                            Y02072*/
*DCL 1 LRIAREA CHAR(24) BDY(DWORD) BASED,  /*LRI AREA          Y02072*/
*      2 LRILOC CHAR(8),                /*LOC OF LRI AREA      Y02072*/
*        3 LRILGTH CHAR(4),             /*SAME AS LRILNGTH     Y02072*/
*          4 LRIFLG1 BIT(8),            /*FLAG BYTE 1          Y02072*/
*            5 LRIEOD BIT(1),           /*END OF DATA REACHED  Y02072*/
*            5 LRICOD BIT(1),           /*COBOL DATA SET       Y02072*/
*            5 LRIEOB BIT(1),           /*EOB AFTER FIRST EOB  Y02072*/
*          4 LRILNGTH CHAR(3),          /*LEN OF LRI AREA      Y02072
*                                           (LRECL + 32)       Y02072*/
*        3 LRIFLG2 BIT(8),              /*FLAG BYTE 2          Y02072*/
*          4 * BIT(1),                  /*NOT USED             Y02072*/
*          4 LRIRELSE BIT(1),           /*RELE HAS BEEN ISSUED Y02072*/
*          4 * BIT(1),                  /*NOT USED             Y02072*/
*          4 LRISEG BIT(1),             /*SEGMENTING IN PROG   Y02072*/
*          4 * BIT(1),                  /*NOT USED             Y02072*/
*          4 LRINTSPN BIT(1),           /*NON-SPAN RECS        Y02072*/
*          4 * BIT(1),                  /*NOT USED             Y02072*/
*          4 LRIASSEM BIT(1),           /*ASSEMBLING IN PROG   Y02072*/
*        3 LRIINDEX CHAR(1),            /*INDEX TO BEG OF DATA Y02072*/
*        3 LRIPOS CHAR(2),              /*POS OF REC IN BLK    Y02072*/
*      2 LRITRKAD CHAR(8),              /*TRK ADDR OF BEG      Y02072
*                                           SEGMENT OF REC     Y02072*/
*        3 LRIMBBCC CHAR(5),            /*MBBCC OF TRK ADDR    Y02072
*                                           (NOT IF DCB IS     Y02072
*                                           FOR OUTPUT)        Y02072*/
*        3 LRIRECAD CHAR(3),            /*RECAD WHEN REC TO BE Y02072
*                                           WRITTEN REQUIRES   Y02072
*                                           SEGMENTATION       Y02072*/
*      2 LRINIOB PTR(31),               /*SAME AS LRINXIOB     Y02072*/
*        3 * CHAR(1),                   /*FILLER               Y02072*/
*        3 LRINXIOB PTR(24),            /*NEXT IOB ADDR        Y02072*/
*      2 LRICOUNT CHAR(2),              /*COUNT FIELD OF NUM OFY02072
*                                           BYTES MOVED        Y02072*/
*      2 * CHAR(2);                     /*NOT USED             Y02072*/
*/*                                                            Y02072*/
*/*STRUCTURE USED FOR REFERENCING THE USERS FLOATING ALIGNMENT Y02072*/
*/*AREA.                                                       Y02072*/
*/*                                                            Y02072*/
*DCL 1 LRIALIGN BDY(WORD) BASED,        /*FLOATING ALIGN AREA  Y02072*/
*      2 LRIDATA CHAR;                  /*DATA                 Y02072*/
*/*                                                                  */
*/*THE FOLLOWING STRUCTURES ARE USED FOR REFRENCING BUFFERS.         */
*/*                                                                  */
*DCL BUFFER CHAR(*) BDY(WORD) BASED;    /*BEGINNING OF BUFFER        */
*/*                                                                  */
*DCL 1 BUFNXPTA PTR(31) BDY(WORD) DEF(BUFFER),  /*NEXT BUFFER POINTER*/
*      2 * FIXED(8),                    /*FILLER                     */
*      2 BUFNXPTB PTR(24);              /*NEXT BUFFER POINTER. (VALID*/
*                                       /* ONLY UNTIL FIRST RECORD   */
*                                       /* IS MOVED INTO BUFFER).    */
*/*                                                                  */
*/*STRUCTURE FOR A BDAM BUFFER POOL CONTROL BLOCK WHEN ADDRESS       */
*/*SPACE = VIRTUAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED.         */
*/*                                                                  */
*DCL 1 BCBDEFV CHAR(16) BDY(WORD) BASED, /* BCB FOR ADDRSPACE=VIRTUAL*/
*      2 BCBBUF1 PTR(31),               /* ADDR OF FIRST BUFFER      */
*      2 BCBBUFL FIXED(31),             /* LENGTH OF EACH BUFFER     */
*      2 BCBBFAVL FIXED(8),             /* BUFF NO OF 1ST AVAIL BUF  */
*      2 BCBRAOFS FIXED(24),            /* OFFSET OF RECORD AREA     */
*      2 BCBTBRS1 FIXED(31);            /* SIZE OF BCB,SUFFX,BUF POOL*/
*/*                                                                  */
*/*STRUCTURE FOR A BDAM BUFFER POOL CONTROL BLOCK WHEN ADDRESS       */
*/*SPACE = REAL AND DYNAMIC BUFFERING HAS BEEN SPECIFIED.            */
*/*                                                                  */
*DCL 1 BCBDEFR CHAR(16) BDY(WORD) BASED,  /* BCB - BDAM REAL ADRSPACE*/
*      2 BCBIOBS CHAR(8) BDY(WORD),     /* IOB QUEUE PTR-1ST & LAST  */
*        3 BCBFRQT PTR(31),             /* 1ST IOB WAITING FOR BUFFER*/
*        3 BCBFRQB PTR(31),             /* LAST IOB WAITING FOR BUFR */
*      2 BCBNABFR PTR(31),              /* NEXT AVAILABLE BUF ADDRESS*/
*      2 BCBTBRS FIXED(31);             /* SIZE OF BCB & BUFFER POOL */
*/*                                                                  */
*/*STRUCTURE FOR A BDAM BUFFER POOL CONTROL BLOCK FOR VARIABLE       */
*/*SPANNED RECORDS (N0N-DYNAMIC BUFFERING). ADDRESS IS STORED IN     */
*/*DCBDYNB.                                                          */
*/*                                                                  */
*DCL 1 BCBDEFS CHAR(8) BASED,           /* BCB FOR SPANNED, NO DYNBUF*/
*      2 BCBNXBUF CHAR(4),              /* ADDR OF NEXT AVAIL BUFFER */
*      2 BCBBFNUM CHAR(2),              /* NUMBER OF BUFFERS         */
*      2 BCBBFLG CHAR(2);               /* BUFFER LENGTH             */
./ ADD NAME=IGGBISAM
         MACRO
&NAME    IGGBISAM &OPTCD=
         GBLB   &CPOPS
         GBLC  &LIB
*    01/05/73          LEVEL=01
.*         RELEASE OS/VS2-02 DELETIONS/CHANGES
         AIF    (&CPOPS).NOCPOPS
&CPOPS   SETB   1
         IGGCPOPS
.NOCPOPS ANOP
&NAME    DSECT
DCWFCP4  DS    A                        ADDRESS FIRST AVAILABLE CP4-5-6
DCWFCP7  DS    A                        ADDRESS FIRST AVAILABLE CP7
DCWNUCPS DS    CL1                      NO. UNSCHED IOBS FOR HI LVL IX
DCWNUCP4 DS    CL1                      NO. UNSCHED IOBS FOR CP4-5-6
DCWNUCP7 DS    CL1                      NO. UNSCHED IOBS FOR CP7
DCWNLSD  DS    CL1                      NO.HI LVL INDEXES SRCHED ON DEV
DCWFIOBU DS    A                        A(FIRST UNSCHED IOB)
DCWLIOBU DS    A                        A(LAST UNSCHED IOB)
DCWFUPDI DS    A                        A(FIRST IOB ON UPDATE Q)
DCWLUPDI DS    A                        A(LAST IOB ON UPDATE Q)
DCWHIAV  DS    CL1                      B0 ON MEANS HI LVL IND CP AVAIL
*                                       B1 ON MEANS HI LVL IND IN CORE
DCWWKNI  DS    CL1                      BO ON MEANS WRITE KN IN PROCESS
*                                       B1 FIRST TIME SWITCH
*                                       B2 SAME MODULE SWITCH
*                                       B3 ADD TO END USE - CP11,13
*                                       B4 END BECAUSE OF EOF - CP12,13
*                                       B5 CP11 - 1ST USE BY GIVEN WKN
*
DCWNLEVC DS    CL1                      COUNTER USED BY WRITE KN APP
DCWNUWKN DS    CL1                      NO. OF IOBS AWAITING W KN CP
DCWMSHIL DS    A                        LAST ACTIVE ENTRY HI IND W KN
DCWHIRPS DS    CL1                      DCBHIRPD OR DCBHIRSH
DCWNACT  DS    CL1                      NO. NON-W KN MACROS BEFORE W KN
DCWSIZE  DS    CL2                      SIZE OF DCB WA+ CP'S+ WKN WA
DCWOPCLS DS    CL8                      DATA SAVED BY COMMON OPEN
DCWFIOBE DS    0CL4
DCWERRCT DS    1C                       NO. OF SLOTS ON ERROR Q
         DS    3C                       A(FIRST IOB ON ERRORQ)
DCWLIOBE DS    A                        A(LAST IOB ON ERROR Q)
DCWSIOA  DS    A                        SECOND SIO APPENDAGE (RPS ONLY)
DCWDCBFA DS    F                        DCB FIELD AREA PTR
DCWIPG   DS    H                        (VLR) PRIME RCD OVHD - NON LAST
DCWLPG   DS    H                        (VLR) PRIME RCD OVHD - LAST
DCWIOG   DS    H                        (VLR) OVFLO RCD OVHD - NON LAST
DCWLOG   DS    H                        (VLR) OVFLO RCD OVHD - LAST
DCWLEN   EQU   *-&NAME                 LENGTH OF W.A. IN BYTES
         MEND
./ ADD NAME=IGGBISAV
         MACRO
&NAME    IGGBISAV
&NAME    DSECT
*    02/20/73          LEVEL=00
**********************************************************************
*    SAVE AREA FOR BISAM ASYNCHRONOUS AND PRIVILEGED ROUTINES.       *
**********************************************************************
IGGRETRN DS    A                        RETURN ADDRESS
IGGPDEB  DS    A                        VALIDATED DEB ADDRESS
IGGUKEY  DS    X                        USER STORAGE PROTECT KEY
IGGRESRV DS    XL3                      RESERVED
IGGREGS  DS    16F                      PROTECTED REGISTER SAVE AREA
IGGSIZE  EQU   *-IGGRETRN               SIZE OF PROTECTED SAVE AREA
         MEND
./ ADD NAME=IGGCAXWA
         MACRO ,                                                 90359
         IGGCAXWA ,                                              90359
.*                                                               90359
.*       THE IBM DISTRIBUTED MACRO IS PL/S ONLY, HENCE THIS      90359
.*       HAND-COBBLED VERSION.                                   90359
.*                                                               90359
IGGCAXWA DSECT ,
CAXID    DS    C             X'CA' - ID
CAXFLG4  DS    X             FLAGS
CAXF4CSO EQU   X'80'           CA SPLIT OCCURRED
CAXF4CRO EQU   X'40'           CTL BLK REFRESH OCCURRED
CAXF4VFY EQU   X'20'           BCS VERIFY
CAXF4PUT EQU   X'10'           BCS PUT
CAXF4DSC EQU   X'08'           CAT DISCONNECTED
         DS    XL2           RESERVED
CAXCHN   DS    A             CAXWA CHAIN PTR
CAXFLGS  DS    X             FLAGS
CAXBLD   EQU   X'80'           BUILD REQUEST
CAXOPN   EQU   X'40'           OPENING
CAXCLS   EQU   X'20'           CLOSING
CAXEOV   EQU   X'10'           EOV IN CONTROL
CAXCMP   EQU   X'08'           I/O COMPLETE
CAXMCT   EQU   X'04'           MASTER IF ON; USER CAT IF OFF
CAXCMR   EQU   X'02'           CAT MGMNT INVOKED
CAXSCR   EQU   X'01'           SCHEDULER INVOKED
CAXFLG2  DS    X             MORE FLAGS
CAXF2DT  EQU   X'80'           CAT DELETED
CAXF2NDD EQU   X'40'           NO DDN
CAXF2NCR EQU   X'20'           UNABLE TO GET CORE (ON 30XX?)
CAXF2IOE EQU   X'10'           I/O ERR
CAXF2CLR EQU   X'08'           RPL CLEAN-UP REQUIRED
CAXF2CA  EQU   X'04'           FREE CAXWA ON ERROR
CAXF2REC EQU   X'02'           RECOVERABLE CAT
CAXF2VTU EQU   X'01'           VOLUME T.S. UPDATED
CAXFLG3  DS    X             STILL MORE FLAGS
CAXF3AT  EQU   X'80'           CRA ALT TIOT
CAXF3ANE EQU   X'40'           NO CRA
CAXF3ICF EQU   X'20'           ICF CAT
CAXRAC   EQU   X'10'           RACF DEFINED CAT
CAXF3B5  EQU   X'08'           NO PSWD
CAXF3B6  EQU   X'04'           ?  UPD
CAXF3SO4 EQU   X'02'           ICF SHARE OPT 3/4
CAXF3SHD EQU   X'01'           ICF ON SHARED DASD
CAXACT   DS    X             ACTIVITY COUNT
CAXATIOT DS    A             ALT. TIOT
CAXSCHWA DS    A             SCHEDULER W/A
CAXDRWP  DS    0A            DRWA
CAXVDSPM DS    A             VVDS PARM LIST
CAXACB   DS    A             ACB
CAXUCB   DS    A             UCB
CAXCCR   DS    0XL12         CAT CONTROL RECORD
CAXHACI  DS    XL3           HI ALLOC CI
CAXNFCI  DS    XL3           NEXT FREE CI
CAXCDCI  DS    CL3           DELETED CI COUNT
CAXFDCI  DS    XL3           FIRST DELETED CI
CAXASID  DS    H             ASID FOR UCRA
CAXRPLCT DS    H             RPL COUNT
CAXRPL   DS    A             RPL CHAIN
CAXCNAM  DS    0CL44         CATALOG NAME
CAXVOLID DS    CL6           VOL-SER
CAXRACTS DS    XL4           CRA CREATION TIME
CAXRATEP DS    A             TIOT FOR CRA
CAXRADDN DS    CL8           DDN
         DS    XL22          RESERVED
CAXOPLST DS    A             OPEN LIST
CAXOPEWA DS    A             O/C/EOV W/A
CAXCCA   DS    0A            CCA
CAXPLOCK DS    A             RPL POST LOCK
CAXJDE   DS    A             JDE
CAXCRACB DS    A             CRA ACB
CAXRACP  DS    A             RACF PROFILE
CAXECB   DS    A             ECB
CAXASCBP DS    A             ASCB
CAXHRPLW DS    0A            HUNG RPL
CAXHRPLC DS    H             HUNG RPL COUNT
CAXWNQID DS    H             RPL WAIT ENQ ID
CAXLRECL DS    F             ICF MAX RECORD SIZE
CAXSRATS DS    0XL8          ICF TIMESTAMP
CAXTMSTP DS    XL8           CREATION TIMESTAMP
         MEND  ,
./ ADD NAME=IGGCCA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGCCA                                            */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = CATALOG COMMUNICATIONS AREA                 */
 /*                                                                  */
 /*   FUNCTION = THE CCA IS USED BY CATALOG MANAGEMENT TO PASS       */
 /*              INFORMATION BETWEEN ITS PROCEDURES.  THE CCA IS     */
 /*              BUILT EACH TIME AN OS/VS COMPONENT ISSUES THE CATLG */
 /*              MACRO INSTRUCTION (SVC 26) TO PROCESS A CATALOG     */
 /*              RECORD.  THE CCA CONTAINS INFORMATION ABOUT THE     */
 /*              CATALOG BEING PROCESSED, AND ABOUT THE CATALOG      */
 /*              RECORD AND ITS EXTENSIONS CONTAINED IN EACH OF      */
 /*              THE SIX BUFFERS AVAILABLE TO PROCESS THE USER'S     */
 /*              REQUEST.                                            */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE CCA IS POINTED TO BY REGISTER 11 */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: CSECT IGG0CLC9 IN LOAD MODULE IGG0CLC9             */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 15 MAY 78                        @Y30SSPJ*/
 /*   C 572000                                               @ZA24944*/
 /*   I 692260-692268, 692929                                @ZA27024*/
 /*   I 691305-330                                           @ZA30975*/
 /*   C 514000,690826,693355                                 @ZA29164*/
 /*   I 514300-515600,690827-690828,693256                   @ZA29164*/
 /*   I                                                      @ZA29164*/
 /*                                                                  */
 /********************************************************************/
    DECLARE
*     1 IGGCCA BASED(CCAPTR),       /* SET BASE TO CCA               */
*       2 CCAID FIXED(15),          /* CCA ID = 'ACCA'X      @Y30SSPJ*/
*       2 CCASZ FIXED(15),          /* SIZE OF CCA           @Y30SSPJ*/
*       2 CCAPROB FIXED(31),        /* PROBLEM DETERMINATION WORD
*                                                            @Y30SSPJ*/
*         3 CCAMODID CHAR(2),       /* ERROR MODULE ID       @Y30SSPJ*/
*         3 CCAERRCD FIXED(15)      /* ERROR CODES           @Y30SSPJ*/
                   BDY(BYTE),
*           4 CCAREASN CHAR(1),     /* SET REASON CODE       @Y30SSPJ*/
*             5 CCACDR CHAR(1),     /* REFER REASON CODE     @Y30SSPJ*/
*           4 CCARETRN CHAR(1),     /* SET RETURN CODE       @Y30SSPJ*/
*             5 CCACD1 CHAR(1),     /* REFER RETURN CODE     @Y30SSPJ*/
*       2 * CHAR(5),                /* RESERVED              @Y30SSPJ*/
*       2 CCACD2 PTR(8),            /* RETURN CODE 2                 */
*       2 CCAFLG1 PTR(8),           /* FLAGS                         */
*         3 CCAF1LPS BIT(1),        /* STOP LOOP IF ON               */
*         3 CCAF1CNS BIT(1),        /* CATALOG NAME SEARCH     Y02020*/
*         3 CCAF1LRD BIT(1),        /* CCR READ INTO CORE            */
*         3 CCAF1KEY BIT(1),        /* GET BY TRUE NAME              */
*         3 CCAF1KGE BIT(1),        /* GET NEXT                      */
*         3 CCAF1CR BIT(1),         /* CHKPT CCR REQ                 */
*         3 CCAF1UP BIT(1),         /* GET FOR UPDATE                */
*         3 CCAF1DK BIT(1),         /* DELETE, KEEP CI               */
*       2 CCAFLG2 PTR(8),           /* FLAGS                         */
*         3 CCAF2SYS BIT(1),        /* SYSTEM CALLER                 */
*         3 CCAF2NVC BIT(1),        /* NO VALIDITY CHECK             */
*         3 CCAF2CCT BIT(1),        /* 0 = CONCAT CTLG SEARCH,       */
*                                   /* 1 = SINGLE CTLG SEARCH        */
          3 CCAF2XEQ BIT(1),        /* 0 = SHARED ENQ,               */
                                    /* 1 = EXCLUSIVE ENQ             */
          3 CCAF2RHS BIT(1),        /* RECURSIVE CALL TO CATLG       */
          3 CCAF2COB BIT(2),        /* COMB. OF CATLG OPEN/BUILD     */
            4 CCAF2CO BIT(1),       /* CATLG BEING OPENED            */
            4 CCAF2CB BIT(1),       /* CATLG OPEN DURING BUILD       */
*         3 CCAF2SMO BIT(1),        /* SEARCH MASTER CATLG ONLY      */
*       2 CCAFLG3 PTR(8),           /* FLAGS                         */
*         3 CCAEXGR1 BIT(1),        /* EXIT INDICATOR                */
*         3 CCAGC4   BIT(1),        /* GROUP CODE 4 IN SCNC          */
*         3 CCAGDSP  BIT(1),        /* GENDSP                        */
*         3 CCAEXGR2 BIT(1),        /* EXIT INDICATOR                */
*         3 CCANF    BIT(1),        /* NOT FOUND CONDITION           */
*         3 CCAELC2  BIT(1),        /* EXIT INDICATOR                */
*         3 CCALFT   BIT(1),        /* FIRST TIME                    */
*         3 CCAEGREC BIT(1),        /* EXIT INDICATOR                */
*       2 CCAFLG4 PTR(8),           /* FLAGS                         */
*         3 CCAF4DRQ BIT(1),        /* DEQ REQD                      */
*         3 CCAF4BYS BIT(1),        /* BYPASS SECURITY               */
*         3 CCAGVNC  BIT(1),        /* NOT COMPLETE                  */
*         3 CCAGVNF  BIT(1),        /* RELREPNO NOT FOUND            */
*         3 CCAGVNBS BIT(1),        /* NO BUFFER SPACE               */
*         3 CCAGVEX  BIT(1),        /* EXIT BIT                      */
*         3 CCAGVNE BIT(1),         /* NON-EXISTENT FIELD            */
*         3 CCATCOMP BIT(1),        /* TEST COMPLETE                 */
*       2 CCAFLG5 PTR(8),           /* FLAGS                         */
*         3 CCAMEX2  BIT(1),        /* EXIT INDICATOR                */
*         3 CCAMEX   BIT(1),        /* EXIT BIT                      */
*         3 CCAMEX1  BIT(1),        /* EXIT BIT                      */
*         3 CCAMODPA BIT(1),        /* PUT-ADD                       */
*         3 CCATHIT BIT(1),         /* SUCCESSFUL TEST               */
*         3 CCATEX BIT(1),          /* EXIT INDICATOR                */
*         3 CCATEX1 BIT(1),         /* EXIT INDICATOR                */
*         3 CCATEX2 BIT(1),         /* EXIT INDICATOR                */
*       2 CCAFLG6  PTR(8),          /* FLAGS                         */
*         3 CCAMCODR BIT(1),        /* DEQ REQ SW                    */
*         3 CCADELP BIT(1),         /* DELETED GOP                   */
*         3 CCAMNOSP BIT(1),        /* NO SPACE IN MOVE OCCUR        */
*         3 CCAINIT  BIT(1),        /* INSERT INIT SW FOR VAR FIELD  */
*         3 CCASUPFD BIT(1),        /* SUPPRESS FIELD INFO           */
*         3 CCAREUSE BIT(1),        /* RE-USE RECORD AREAS           */
*         3 CCAEXT   BIT(1),        /* EXTRACT IN PROCESS            */
*         3 CCAMOD   BIT(1),        /* MODIFY IN PROCESS             */
*       2 CCATCB PTR(31),           /* PTR TO TCB                    */
*         3 CCALBCYL PTR(31),       /* LABEL CYLINDER DATA PTR       */
*       2 CCARB  PTR(31),           /* PTR TO RB                     */
*         3 CCADPL PTR(31),         /* DADSM PARMETER LIST PTR       */
*       2 CCACPL PTR(31),           /* PTR TO CPL                    */
*       2 CCAACB PTR(31),           /* PTR TO CATALOG ACB            */
*       2 CCANPCCB PTR(31),         /* PTR TO NEXT PCCB IN CHAIN     */
*       2 CCAURAB  PTR(31),         /* PTR TO RAB TO USE             */
*       2 CCASRCH  CHAR(44),        /* SEARCH ARGUMENT               */
*         3 CCASRID CHAR(3),        /* CI NUMBER                     */
*           4 CCASRCIN PTR(24) BDY(BYTE), /* CI NUMBER               */
*         3 *       CHAR(41),       /* RESERVED                      */
*       2 CCARAB0,                  /* RECORD AREA BLOCK 0           */
*         3 CCAR0FLG PTR(8),        /* CCARAB0 FLAGS                 */
*           4 CCAR0UR BIT(1),       /* RAB IN-USE EXT, MOD           */
*           4 CCAR0U1 BIT(1),       /* RAB IN-USE TESTS              */
*           4 CCAR0U2 BIT(1),       /* RAB IN-USE TESTS              */
*           4 CCAR0WR BIT(1),       /* WRITE IT BEFORE READ          */
*           4 CCAR0PA BIT(1),       /* PUT-ADD WRITE                 */
*           4 *       BIT(2),       /* RESERVED                      */
*           4 CCAR0UPD BIT(1),      /* UPDATE BUFFER NOT REUSED      */
*         3 CCAR0RPL PTR(8),        /* LAST ASSIGN, RPL INDEX        */
*         3 * CHAR(2),              /* RESERVED                      */
*         3 CCAR0REC PTR(31),       /* PTR TO RECORD AREA            */
*         3 CCAR0SEG,               /* SEGMENT PTRS                  */
*           4 CCACPE20 PTR(31),     /* PTR REPEATING CONTROL INFO    */
*           4 CCACPE30 PTR(31),     /* PTR TO FIRST OCCURRENCE       */
*           4 CCACPE40 PTR(31),     /* PTR TO END OF RECORD          */
*       2 CCARAB1,                  /* RECORD AREA BLOCK 1           */
*         3 CCAR1FLG PTR(8),        /* FLAGS                         */
*           4 CCAR1UR BIT(1),       /* SAME AS CCAR0UR               */
*           4 CCAR1U1 BIT(1),       /* SAME AS CCAR0U1               */
*           4 CCAR1U2 BIT(1),       /* SAME AS CCAR0U2               */
*           4 CCAR1WR BIT(1),       /* SAME AS CCAR0WR               */
*           4 CCAR1PA BIT(1),       /* SAME AS CCAROPA               */
*           4 *       BIT(2),       /* RESERVED                      */
*           4 CCAR1UPD BIT(1),      /* SAME AS CCAR0UPD              */
*         3 CCAR1RPL PTR(8),        /* SAME AS CCAR0RPL              */
*         3 * CHAR(2),              /* RESERVED                      */
*         3 CCAR1REC PTR(31),       /* SAME AS CCAR0REC              */
*         3 CCAR1SEG,               /* SAME AS CCAR0SEG              */
*           4 CCACPE21 PTR(31),     /* SAME AS CCACPE20              */
*           4 CCACPE31 PTR(31),     /* SAME AS CCACPE30              */
*           4 CCACPE41 PTR(31),     /* SAME AS CCACPE40              */
*       2 CCARAB2,                  /* RECORD AREA BLOCK 2           */
*         3 CCAR2FLG PTR(8),        /* FLAGS                         */
*           4 CCAR2UR BIT(1),       /* SAME AS CCAR0UR               */
*           4 CCAR2U1 BIT(1),       /* SAME AS CCAR0U1               */
*           4 CCAR2U2 BIT(1),       /* SAME AS CCAR0U2               */
*           4 CCAR2WR BIT(1),       /* SAME AS CCAR0WR               */
*           4 CCAR2PA  BIT(1),      /* SAME AS CCAROPA               */
*           4 *        BIT(2),      /* RESERVED                      */
*           4 CCAR2UPD BIT(1),      /* SAME AS CCAR0UPD              */
*         3 CCAR2RPL PTR(8),        /* SAME AS CCAR0RPL              */
*         3 * CHAR(2),              /* RESERVED                      */
*         3 CCAR2REC PTR(31),       /* SAME AS CCAR0REC              */
*         3 CCAR2SEG,               /* SAME AS CCAR0SEG              */
*           4 CCACPE22 PTR(31),     /* SAME AS CCACPE20              */
*           4 CCACPE32 PTR(31),     /* SAME AS CCACPE30              */
*           4 CCACPE42 PTR(31),     /* SAME AS CCACPE40              */
*       2 CCARAB3,                  /* RECORD AREA BLOCK 3           */
*         3 CCAR3FLG PTR(8),        /* FLAGS                         */
*           4 CCAR3UR BIT(1),       /* SAME AS CCAR0UR               */
*           4 CCAR3U1 BIT(1),       /* SAME AS CCAR0U1               */
*           4 CCAR3U2 BIT(1),       /* SAME AS CCAR0U2               */
*           4 CCAR3WR BIT(1),       /* SAME AS CCAR0WR               */
*           4 CCAR3PA BIT(1),       /* SAME AS CCAROPA               */
*           4 *       BIT(2),       /* RESERVED                      */
*           4 CCAR3UPD BIT(1),      /* SAME AS CCAR0UPD              */
*         3 CCAR3RPL PTR(8),        /* SAME AS CCAR0RPL              */
*         3 * CHAR(2),              /* RESERVED                      */
*         3 CCAR3REC PTR(31),       /* SAME AS CCAR0REC              */
*         3 CCAR3SEG,               /* SAME AS CCAR0SEG              */
*           4 CCACPE23 PTR(31),     /* SAME AS CCACPE20              */
*           4 CCACPE33 PTR(31),     /* SAME AS CCACPE30              */
*           4 CCACPE43 PTR(31),     /* SAME AS CCACPE40              */
        2 CCARAB4,                  /* RECORD AREA BLOCK 4           */
          3 CCAR4FLG PTR(8),        /* FLAGS                         */
            4 CCAR4UR BIT(1),       /* SAME AS CCAR0UR               */
            4 CCAR4U1 BIT(1),       /* SAME AS CCAR0U1               */
            4 CCAR4U2 BIT(1),       /* SAME AS CCAR0U2               */
            4 CCAR4WR BIT(1),       /* SAME AS CCAR0WR               */
*           4 CCAR4PA  BIT(1),      /* SAME AS CCAROPA               */
*           4 *        BIT(2),      /* RESERVED                      */
            4 CCAR4UPD BIT(1),      /* SAME AS CCAR0UPD              */
          3 CCAR4RPL   PTR(8),      /* SAME AS CCAR0RPL              */
          3 *          CHAR(2),     /* RESERVED                      */
          3 CCAR4REC PTR(31),       /* SAME AS CCAR0REC              */
          3 CCAR4SEG,               /* SAME AS CCAR0SEG              */
            4 CCACPE24 PTR(31),     /* SAME AS CCACPE20              */
            4 CCACPE34 PTR(31),     /* SAME AS CCACPE30              */
            4 CCACPE44 PTR(31),     /* SAME AS CCACPE40              */
        2 CCARAB5,                  /* RECORD AREA BLOCK 5           */
          3 CCAR5FLG PTR(8),        /* FLAGS                         */
            4 CCAR5UR BIT(1),       /* SAME AS CCAR0UR               */
            4 CCAR5U1 BIT(1),       /* SAME AS CCAR0U1               */
            4 CCAR5U2 BIT(1),       /* SAME AS CCAR0U2               */
            4 CCAR5WR BIT(1),       /* SAME AS CCAR0WR               */
*           4 CCAR5PA BIT(1),       /* SAME AS CCAROPA               */
*           4 *       BIT(2),       /* RESERVED                      */
            4 CCAR5UPD BIT(1),      /* SAME AS CCAR0UPD              */
          3 CCAR5RPL PTR(8),        /* SAME AS CCAR0RPL              */
          3 *        CHAR(2),       /* RESERVED                      */
          3 CCAR5REC PTR(31),       /* SAME AS CCAR0REC              */
          3 CCAR5SEG,               /* SAME AS CCAR0SEG              */
            4 CCACPE25 PTR(31),     /* SAME AS CCACPE20              */
            4 CCACPE35 PTR(31),     /* SAME AS CCACPE30              */
            4 CCACPE45 PTR(31),     /* SAME AS CCACPE40              */
        2 CCARPLK PTR(8),           /* ASSIGNED RPL COUNT            */
        2 CCARPLF PTR(8),           /* INDEX TO FOUND RPL            */
        2 CCARPLX PTR(8),           /* WORK BYTE FOR SUBFUNCTION     */
                                    /* IGGPRPLM                      */
        2 CCARPLT PTR(8),           /* WORK BYTE FOR SUBFUNCTION     */
                                    /* IGGPRPLM                      */
        2 CCATIQRN CHAR(6),         /* TIOT ENQ MINOR NAME   @Y30SSPJ*/
          3 CCATASID CHAR(2),       /* ASID                  @Y30SSPJ*/
          3 CCATQDB PTR(31)BDY(BYTE),/* QDB ADDRESS          @Y30SSPJ*/
        2 CCASC PTR(8),             /* SEARCH CODE             Y02020*/
        2 CCAQLEN PTR(8),           /* QUALIFIER LENGTH  0    Y02020*/
        2 CCARPL1 PTR(31),          /* PTR TO RPL IN USE             */
*       2 CCADESA CHAR(44),         /* DADSM EXTENTS SAVEAREA        */
*         3 CCANDEXT PTR(8),        /* COUNT OF EXTENTS              */
*         3 CCAIXEXT PTR(8),        /* EXTENT INDEX VALUE            */
*         3 CCASSVOL FIXED(15) BDY(BYTE), /* DATA SET DIR SEQ. NO.   */
*         3 CCAEXTDE(5) CHAR(8),    /* EXTENT DESCRIPTORS            */
*           4 CCAEXTSS CHAR(2),     /* DESCRIPTOR SPACE SEQ. NO.     */
*           4 CCAEXTAD CHAR(4),     /* EXTENT STARTING CCHH          */
*             5 CCAEXTCC FIXED(15) BDY(BYTE), /* STARTING CYLINDER   */
              5 CCAEXTHH FIXED(15) BDY(BYTE), /* STARTING TRACK      */
*           4 CCAEXTTH FIXED(15) BDY(BYTE), /* NO. TRACKS IN EXTENT  */
*       2 CCAASCIK PTR(8),          /* COUNT OF CI'S REQD            */
*       2 CCACRRP PTR(8),           /* RPL USED TO READ CCR          */
*       2 CCAASCIX PTR(8),          /* ASSIGNED CI ARRAY INDEX       */
*       2 CCAASCI(3) PTR(24) BDY(BYTE), /* ASSIGNED CI NUMBERS       */
*       2 CCAEQDQ CHAR(16) BDY(WORD), /* ENQ/DEQ PARAMETER LIST      */
*         3 CCAEDXFF PTR(8),        /* END OF PL IND BYTE - X'FF'    */
*         3 CCAEDRLN PTR(8),        /* LENGTH OF MINOR NAME          */
*         3 CCAEDOPT PTR(8),        /* ENQ-DEQ OPTIONS               */
*           4 CCAEDSHR BIT(1),      /* 1=SHARED, 0=EXCLUSIVE         */
*           4 *        BIT(7),      /* OTHER OPT. (SET BY MACRO)     */
*         3 CCAEDRCD PTR(8),        /* ENQ/DEQ RETURN CODE           */
*         3 CCAEDQNM PTR(31),       /* MAJOR NAME PTR                */
*         3 CCAEDRNM PTR(31),       /* MINOR NAME PTR                */
*         3 CCAEDUCB PTR(31),       /* UCB PTR                       */
*       2 CCAMLRET PTR(31),         /* MAIN LINE RTN SAVE AREA PTR   */
        2 CCAMSSPL CHAR(12) BDY(WORD), /* STORAGE MGMT WORKAREA      */
          3 CCAMNLLP PTR(31),       /* LENGTH OF LIST POINTER  Y02020*/
*         3 CCAMNPTR PTR(31),       /* ADDRESS OF RETURN ADDRESS     */
          3 *        FIXED(8),      /* STORAGE MANAGEMENT BYTE       */
          3 CCAMNSPL FIXED(8),      /* REQUIRED SUBPOOL              */
          3 *        FIXED(15),     /* STORAGE MANAGEMENT AREA       */
*       2 CCARPRM CHAR(4),          /* RETURN PARMS                  */
*       2 CCACMS CHAR(8) BDY(WORD), /* CMS AREA                      */
*         3 CCACMSWA PTR(31),       /* PTR TO CMS WORK AREA          */
*         3 CCAEXCMS PTR(31),       /* SECONDARY CMS WORK AREA ADDR  */
*       2 CCALUME CHAR(0),          /* START OF FIELD MGMT WORK AREA */
*                                   /* AND INTERFACE VARIABLES FOR   */
*                                   /* LOCATE, UPDATE, MODIFY, AND   */
*                                   /* EXTRACT ROUTINES              */
*       2 CCACPE5 PTR(31),          /* ADDR OF OCCURRENCE PTR        */
*       2 CCACPE51 PTR(31),         /* ALTERNATE PTR TO GOP          */
*       2 CCACPE52 PTR(31),         /* ALT GOP PTR                   */
*       2 CCACPE53 PTR(31),         /* ALT GOP PTR                   */
*       2 CCACPE6 PTR(31),          /* ADDR OF OCCURRENCE            */
*       2 CCACPE61 PTR(31),         /* ALT PTR TO OCCURRENCE         */
*         3 CCARABSE PTR(31),       /* SAVE EXTRACT CALLER URAB      */
*       2 CCACPE7 PTR(31),          /* ADDR OF FIELD VALUE           */
*         3 CCAIDPT PTR(31),        /* INSERT DATA ADDR              */
*       2 CCACPE71 PTR(31),         /* ALT PTR TO FIELD VALUE        */
*       2 CCAGOPLN FIXED(15),       /* GROUP OCCURRENCE PTR LENGTH   */
*       2 CCASL    FIXED(15),       /* SEQUENCE NUMBER LENGTH        */
*       2 CCAILNG PTR(31),          /* INSERT LENGTH                 */
*       2 CCAFLPT  PTR(31),         /* FIELD LIST POINTER            */
*         3 CCATFLPT PTR(31),       /* FIELD LIST PTR FOR TESTS      */
*       2 CCARABPT PTR(31),         /* RAB PTR                       */
*       2 CCADICT  CHAR(4),         /* DICTIONARY INFO               */
*       2 CCAXCPL  PTR(31),         /* EXTRACT CPL PTR               */
*         3 CCAMCPL PTR(31),        /* MODIFY CPL PTR                */
*       2 CCARABB PTR(31),          /* BASE RAB PTR                  */
*       2 CCARABF PTR(31),          /* FIRST RAB PTR                 */
*       2 CCARABL PTR(31),          /* LAST RAB PTR                  */
*       2 CCACBASE CHAR(3),         /* BASE CI NUMBER                */
*       2 CCAGC    PTR(8),          /* GROUP CODE                    */
*       2 CCALREL  FIXED(15),       /* LOGICAL RELREPNO              */
*         3 CCALREL1 CHAR(2),       /* LOGICAL RELREPNO              */
*       2 CCASN   FIXED(15),        /* SEQUENCE NO.                  */
*         3 CCASN1  CHAR(2),        /* SEQUENCE NO.                  */
*       2 CCAUSKEY BIT(8),          /* USER KEY              @ZA29164*/
*       2 CCAMSFLG BIT(8),          /* MISC. FLAGS           @ZA29164*/
*         3 CCACICIN BIT(1),        /* INTEGRITY CHECK INCOMPLETE
*                                                            @ZA29164*/
*         3 CCACPLOK BIT(1),        /* CPL IS VALID          @ZA29164*/
*         3 CCASKYSS BIT(1),        /* CALLER HAS SYSTEM KEY OR IS IN
*                                      SUPERVISOR STATE      @ZA29164*/
*         3 CCAGDGUY BIT(1),        /* AUTHORIZED CALLER     @ZA29164*/
*         3 *        BIT(4),        /* RESERVED              @ZA29164*/
*       2 CCAIXFPL FIXED(15),       /* FIELD ARRAY INDEX             */
*       2 CCAIXREL FIXED(15),       /* INDEX RELREPNO                */
*       2 CCATNREL FIXED(15),       /* NEXT RELREPNO                 */
*       2 CCATNUM FIXED(15),        /* NO. OF SUCCESSFUL RELREPNOS   */
*       2 CCATREL(16) FIXED(15),    /* SUCCESSFUL REL REPNOS         */
*       2 CCATNO FIXED(15),         /* TOTAL NO. SUCCESSFUL RELREPNOS*/
*       2 CCATEST PTR(31),          /* TEST FIELD PTR                */
*       2 CCARBA CHAR(20),          /* EXTENT HOLDER FIELD           */
*         3 CCACRAVL BDY(BYTE),     /* CRA VOLSER            @Y30SSRS*/
*           4 CCASS FIXED(15) BDY(BYTE), /* SPACE DESCRIPTOR @Y30SSRS*/
*                                   /* SEQUENCE NO.          @Y30SSRS*/
*           4 CCACCHH1 CHAR(4),     /* CCHH-LOW              @Y30SSRS*/
*         3 CCACRADT BDY(BYTE),     /* CRA DEVICE TYPE       @Y30SSRS*/
*           4 CCACCHH2 CHAR(4),     /* CCHH-HIGH             @Y30SSRS*/
*         3 CCATT FIXED(15) BDY(BYTE), /* TT-NO. TRACKS              */
*         3 CCARBA1 CHAR(4),        /* RBA-LOW                       */
*         3 CCARBA2 CHAR(4),        /* RBA-HIGH                      */
*       2 CCATLNG FIXED(15),        /* TESTED EXTENT LENGTH          */
*         3 CCATLEN  FIXED(15),     /* MODIFIED VAR LENGTH           */
*       2 CCARBAL FIXED(15),        /* RBA EXTENT BALANCE            */
*       2 CCACNIX FIXED(15),        /* COMBINATION NAME INDEX        */
*       2 CCASMFIX FIXED(15),       /* DEFINE CATALOG SMF INDEX      */
*       2 CCAIDPT2 PTR(31),         /* AVAILABLE SPACE IN WORK AREA  */
*       2 CCAIDPT3 PTR(31),         /* INCOMPLETE VAR FIELDS         */
*         3 CCARABSM PTR(31),       /* SAVE MODIFY CALLER URAB       */
*       2 CCAGVCT FIXED(15),        /* COUNTER                       */
*       2 CCANEVV CHAR(2),          /* NON-EXISTENT VARIABLE         */
*                                   /* VALUE LENGTH                  */
*       2 CCAGVEXT CHAR(3),         /* EXTENSION RCD POINTER         */
*       2 CCANEFV CHAR(1),          /* NON-EXISTENT FIXED VALUE      */
*       2 CCASAVID CHAR(1),         /* SAVE RECORD ID        @ZA24944*/
*       2 CCAGRGC  BIT(8),          /* GROUP CODE                    */
*         3 CCARCDID CHAR(1),       /* RECORD ID             @Y30SSRS*/
*       2 CCAGRHI  FIXED(15),       /* HIGH RELREPNO         @Y30SSRS*/
*         3 CCASSEQ  FIXED(15),     /* SAVE SEQ. NO.         @Y30SSRS*/
*           4 CCAGRHI1 CHAR(2),     /* HIGH RELREPNO         @Y30SSRS*/
*       2 CCAIXTPL FIXED(15),       /* INDEX TO TEST FPL             */
*       2 CCADLEN  FIXED(15),       /* MODIFY DELETE LENGTH          */
*       2 CCADIFF FIXED(15),        /* SPACE DIFFERENCE              */
*       2 CCAREPCT FIXED(15),       /* RELREPNO COUNT                */
*       2 CCADISP FIXED(15),        /* DISPLACEMENT INTO VAR FIELD   */
*       2 CCASVCI  CHAR(3),         /* SAVE CI OF BASE               */
*       2 CCASVCI1 CHAR(3),         /* SAVE SPACE CI                 */
*       2 CCADTA   PTR(31),         /* DICTIONARY PTR                */
*       2 CCACDTA  PTR(31),         /* INDEX COMBO TABLE PTR         */
*       2 CCADTCT  FIXED(15),       /* COUNT DICT ENTRIES            */
*       2 CCACDTCT FIXED(15),       /* COUNT INDEX COMB TABLE        */
*       2 CCACWAP  PTR(31),         /* CONTROLLER WORK AREA          */
*       2 CCASDWAP PTR(31),         /* POINTER TO SDWA         Y02020*/
*       2 CCAILNG3 FIXED(31),       /* MODIFY LENGTH                 */
*       2 CCAILNG2 FIXED(31),       /* MODIFY LENGTH                 */
*       2 CCAALPTR PTR(31),         /* SPACE MNGMT SUB-FUNCTION WA   */
        2 CCASMFPT PTR(31),         /* SMF DATA PTR                  */
        2 CCALCPL PTR(31),          /* LSPACE CPL PTR - INTERNAL CALL*/
        2 CCAFLG7 PTR(8),           /* FLAGS                         */
          3 CCALSP   BIT(1),        /* LSPACE INTERNAL CALL          */
          3 CCASMFEX BIT(1),        /* SMF EXIT INDICATOR            */
          3 CCASMFA  BIT(1),        /* DO SMF IN MODIFY              */
          3 CCASMFBR BIT(1),        /* DO GET FOR BASE RECORD        */
          3 CCAONCE  BIT(1),        /* MOVE ONLY ONE OCCURRENCE      */
          3 CCAROREQ BIT(1),        /* READ-ONLY REQUEST             */
          3 CCAFEOV  BIT(1),        /* FORCE EOV                     */
          3 CCACRABU BIT(1),        /* CRA BEING BUILT       @Y30SSPJ*/
        2 CCAFLG8 BIT(8),           /* FLAGS                 @Y30SSPJ*/
          3 CCADSRCL BIT(1),        /* DEFINE SPACE          @Y30SSPJ*/
                                    /*   RECURSIVE CALL      @Y30SSPJ*/
          3 CCAVBUFI BIT(1),        /* VOL RECORDS BUFFERED  @Y30SSPJ*/
          3 CCASCRA  BIT(1),        /* SUPPRESS CRA UPDATES  @Y30SSPJ*/
          3 CCASCICK BIT(1),        /* SUPPRESS CRA CI CHECK @Y30SSSB*/
          3 CCALPIND BIT(1),        /* LOOP CONTROL IN BUFFER        */
                                    /*   SCAN FOR GETS       @Y30SSSB*/
          3 CCAVRIND BIT(1),        /* VOLUME RECORD BUFFER CHAIN    */
                                    /*   TO BE CHECKED       @Y30SSSB*/
          3 CCALEOD  BIT(1),        /* EOF ON LOW KEYS       @Y30SSSB*/
          3 CCAAUCAT BIT(1),        /* VOLUME HAS UCAT       @Y30LSPS*/
        2 CCAFLG9 BIT(8),           /* FLAGS                 @Y30SSSB*/
          3 CCARABYC BIT(1),        /* BYPASS CAT I/O        @Y30SSSB*/
          3 CCARAEOV BIT(1),        /* CRA EOV               @Y30SSSB*/
          3 CCARALRD BIT(1),        /* CRA CCR HAS BEEN READ @Y30SSSB*/
          3 CCARACR  BIT(1),        /* CRA CCR CHK PT REQD   @Y30SSSB*/
          3 CCAUCRA  BIT(1),        /* USE UCRA TRANS TAB    @Y30SSSB*/
          3 CCARAACT BIT(1),        /* CRA ACTIVE            @Y30SSSB*/
          3 CCARAICI BIT(1),        /* INHIBIT CAT I/O       @Y30SSSB*/
          3 CCARESUM BIT(1),        /* ON = REPLACE SUM,ELSE @Y30SSSB*/
                                    /* OFF = INCREMENT SUM   @Y30SSSB*/
        2 CCANORBA PTR(8),          /* NO. OF RBA'S THAT ARE         */
                                    /* NEEDED IN CB STRT     @Y30SSSB*/
        2 CCASMFRD PTR(31),         /* SMF RECORD POINTER            */
        2 CCASMFCT FIXED(15),       /* COUNT OF SMF RECORDS          */
        2 CCASMFLG BIT(16),         /* SMF RECORD FLAGS              */
          3 CCASMFG1 BIT(8),        /* SMF FLAGS                     */
            4 CCASMFUC BIT(1),      /* UNCATALOG - SMF RCD 67        */
                                    /* (ALWAYS SET ON)               */
              5 CCASMFDF BIT(1),    /* DEFINE - SMF RCD 63           */
            4 CCASMFSR BIT(1),      /* SCRATCH - SMF RCD 67. SET ON  */
                                    /* ONLY IF RECORD ID IS D, I OR A*/
              5 CCASMFAL  BIT(1),   /* ALTER - SMF RCD 63            */
            4 *        BIT(6),      /* RESERVED                      */
          3 CCASMFG2 BIT(8),        /* SMF FLAGS                     */
        2 CCASMFLN FIXED(15),       /* SMF RECORD LENGTH             */
        2 CCACHAIN CHAR(3),         /* CHAIN CI NO. - START OF VOLUME*/
                                    /* ENTRY TRANSLATION WORKAREA    */
        2 CCACI1   CHAR(3),         /* SAVE CI AREA                  */
        2 CCACI2   CHAR(3),         /* SAVE CI AREA                  */
        2 CCACI3   CHAR(3),         /* SAVE CI AREA                  */
        2 CCAVARLN FIXED(15),       /* INSERT LENGTH                 */
        2 CCARRAB PTR(31),          /* RELATIVE BASE RAB ADDR        */
        2 CCARBASE PTR(31),         /* RELATIVE BASE RAB ADDR        */
        2 CCAVARPT PTR(31),         /* POINTER TO INSERT INFO        */
        2 CCADELN FIXED(15),        /* DELETE LENGTH                 */
        2 CCAVAR   CHAR(20),        /* INSERT INFO SAVE AREA         */
        2 CCAVAR1  CHAR(20),        /* INSERT INFO SAVE AREA         */
        2 CCADEL1  CHAR(3),         /* START DELETE CI               */
        2 CCADEL2  CHAR(3),         /* END DELETE CI                 */
        2 CCAXLATE CHAR(40),        /* TRANSLATION WORK AREA         */
        2 CCAR14S  PTR(31),         /* CLC9 REG 14 SAVE AREA         */
        2 CCABMINP,                 /* INPUT PARAMETERS              */
          3 CCABMTRK FIXED(15),     /* STARTING TRACK                */
          3 CCABMLIM FIXED(15),     /* CHECK LIMIT, NN FOR SET       */
          3 CCABMMIN FIXED(15),     /* COND CHECK MINIMUM            */
          3 CCABMFLG BIT(8),        /* STATE AND FUNCTION CODE       */
            4 CCABMST  BIT(1),      /* STATE TO SET/COND. CHECK      */
            4 CCABMCHK BIT(1),      /* ON = PERFORM CHECK            */
            4 CCABMSET BIT(1),      /* ON = PERFORM SET              */
            4 CCABMCCK BIT(1),      /* ON = PERFORM COND. CHECK      */
            4 CCABMLST BIT(1),      /* ON = LAST SET REQ (WRITE)     */
          3 *        PTR(8),        /* RESERVED                      */
        2 CCABMOUT,                 /* OUTPUT PARAMETERS             */
          3 CCABMONN FIXED(15),     /* TRK NUMBER (CK/COND.CK)       */
          3 CCABMOTR FIXED(15),     /* STARTING TRK(COND.CHK.)       */
          3 CCABMOFG BIT(8),        /* OUTPUT FLAGS                  */
            4 CCABMOST BIT(1),      /* STATE OF BITS (CHECK)         */
        2 *      CHAR(2),           /* RESERVED                      */
        2 CCABMPAD CHAR(1),         /* PADDING CHARACTER             */
        2 CCABMGOP PTR(31),         /* CURRENT BIT MASK GOP          */
        2 CCABMPTR PTR(31),         /* CURRENT BIT MASK BYTE         */
        2 CCABMEND PTR(31),         /* END OF CURRENT BIT MASK       */
        2 CCABMBT1 FIXED(15),       /* BIT COUNT - FIRST BYTE        */
        2 CCABMBTL FIXED(15),       /* BIT COUNT - LAST BYTE         */
        2 CCABMBYT FIXED(15),       /* NUMBER OF FULL BYTES          */
        2 CCABMSTR FIXED(15),       /* CURRENT BIT MASK START TRACK  */
        2 CCABMWK1 PTR(31),         /* WORK FIELD                    */
        2 CCABMWK2 PTR(31),         /* WORK FIELD                    */
        2 CCABMWK3 PTR(31),         /* WORK FIELD                    */
        2 CCABMWK4 PTR(31),         /* WORK FIELD                    */
        2 CCABMRB1 PTR(31),         /* FIRST BIT MAP RAB PTR         */
        2 CCABMRB2 PTR(31),         /* SECOND RAB POINTER            */
        2 CCATEMPS CHAR(40),        /* PL/S TEMP AREA                */
        2 CCAMNCAT CHAR(256) BDY(WORD),/* CONTIGUOUS AREA FOR
                                           TRACKING            Y02020*/
          3 CCAMNAT CHAR(248) BDY(WORD),/* TRACKING BUFFER     Y02020*/
            4 MNATTOP BIT(8),       /* TOP ENTRY - 1ST BYTE    Y02020*/
              5 MNATFULL BIT(1),    /* BUFFER FULL             Y02020*/
              5 *        BIT(7),    /* RESERVED                Y02020*/
            4 * CHAR(239),          /* BODY OF BUFFER          Y02020*/
            4 MNATFLGS BIT(8),      /* MOST RECENT ENTRY-1ST BYTE
                                                               Y02020*/
              5 MNATVAL BIT(1),     /* VALID ENTRY BIT         Y02020*/
              5 *       BIT(2),     /* RESERVED              @ZA29164*/
              5 MNATFCLS BIT(1),    /* CLASS 'F' CORE IF OFF @ZA29164*/
              5 *       BIT(3),     /* RESERVED              @ZA29164*/
              5 MNATSCLS BIT(1),    /* CLASS 'S' CORE          Y02020*/
            4 MNATARG1 PTR(24) BDY(BYTE),/* REMAINDER OF 1ST WD
                                                               Y02020*/
            4 MNATARG2 PTR(32),     /* MOST RECENT ENTRY-2ND WD
                                                               Y02020*/
          3 CCAMNLL PTR(8),         /* G/F MAIN LEN LIST-EOL BYTE
                                                               Y02020*/
          3 CCAMNLEN PTR(24) BDY(BYTE),/* G/F MAIN LENGTH      Y02020*/
          3 CCAMNADR PTR(31),       /* G/F MAIN ADDRESS        Y02020*/
        2 CCAARFWA CHAR(16) BDY(WORD),/* SPILL RTN WORK AREA   Y02020*/
          3 ARFGMLEN PTR(31),       /* LEN LIST FOR GETMAIN    Y02020*/
            4 ARFGMLP PTR(8),       /* END-OF-LIST BYTE        Y02020*/
            4 ARFLEN PTR(24) BDY(BYTE),/* LENGTH               Y02020*/
          3 ARFGMADR PTR(31),       /* ADDRESS FOR GETMAIN     Y02020*/
          3 ARFSBSCH PTR(31),       /* PTR TO 1ST SPILL BLOCK  Y02020*/
          3 ARFSBECH PTR(31),       /* PTR TO LAST SPILL BLOCK Y02020*/
        2 CCARVFG1 BIT(8),          /* RECOVERY FLAGS          Y02020*/
          3 RVCCAV BIT(1),          /* CCA VALID               Y02020*/
          3 RVARFI BIT(1),          /* TRACKING DATA INCOMPLETE
                                                               Y02020*/
          3 RVCMSFG BIT(1),         /* CMS FUNCTION GATE       Y02020*/
          3 RVESBO BIT(1),          /* ESTAE BACKOUT IN CONTROL
                                                               Y02020*/
          3 RVESBOR BIT(1),         /* ESTAE BACKOUT REGISTER  Y02020*/
          3 * BIT(3),               /* RESERVED                Y02020*/
        2 * CHAR(2),                /* RESERVED                Y02020*/
        2 CCAFLG11 BIT(8),          /*                       @ZA30975*/
          3 * BIT(4),               /* RESERVED              @ZA30975*/
          3 CCAF11B5 BIT(1),        /* B5 AND B6 ON - NO CATLG PASSWORD
                                                             @ZA30975*/
          3 CCAF11B6 BIT(1),        /* B5 AND B6 EQUAL TO 01, NO UPDATE
                 PASSWORD, EQUAL TO 10, THERE IS UPDATE PW   @ZA30975*/
          3 * BIT(2),               /* RESERVED              @ZA30975*/
        2 CCAREGS CHAR(348),        /* REGISTER SAVE AREA      Y02020*/
          3 *        CHAR(4),       /* USER SAVE AREA ADDR     Y02020*/
          3 CCAMODNM CHAR(8),       /* LOAD MODULE NAME      @Y30SSSB*/
        2 CCABZSAV   PTR(31),       /* SAVE AREA FOR CLBZ    @Y30SSSB*/
          3 CCADSPWA PTR(31),       /* DEF SPACE W.A. PTR    @Y30SSDW*/
        2 CCACUMPL PTR(31),         /* CATLG UPGRADE MGMNT   @Y30SSPJ*/
                                    /* PARM LIST PTR         @Y30SSPJ*/
        2 CCATNQCT PTR(8),          /* TIOT ENQ COUNT        @Y30SSPJ*/
        2 CCASBASE PTR(24),         /* SAVE BASE CI          @Y30SSPJ*/
                                    /* FOR UPGD PROCESS      @Y30SSPJ*/
        2 CCACRACI PTR(31),         /* CRA REC PTR ARRAY AD  @Y30SSSB*/
        2 CCARAACB PTR(31),         /* CRA ACB ADDRESS       @Y30SSSB*/
        2 CCARARPL PTR(31),         /* CRA RPL ADDRESS       @Y30SSSB*/
        2 CCARARBA PTR(31),         /* CRA RBA               @Y30SSSB*/
        2 CCARAREC PTR(31),         /* RECORD POINTER        @Y30SSSB*/
        2 CCARALSA PTR(31),         /* CRA LOCAL SAVE AREA   @Y30SSSB*/
          3 CCACRABT FIXED(15),     /* BLOCKS/TRACK FOR CRA RECORD
                                       CONSTRUCTION (CLB4)   @Y30SSDW*/
          3 *        CHAR(2),       /* RESERVED              @Y30SSDW*/
        2 CCAFLG10 BIT(8),          /* FLAG BYTE             @Y30SSSB*/
          3 CCAINCPL BIT(1),        /* INVALID CPL, VAL CK   @Y30SSSB*/
          3 CCAPDMW  BIT(1),        /* PROB DET MSG PUT      @Y30SSSB*/
          3 CCACATAC BIT(1),        /* CAT ACTIVE, CRA       @Y30SSSB*/
          3 CCARAFEV BIT(1),        /* CRA FORCED EOV CH     @Y30SSSB*/
          3 CCARARTC BIT(1),        /* RECOVERY EXIT, RETURN TO      */
                                    /*   CALLER              @Y30SSSB*/
          3 CCAPRANX BIT(1),        /* PRIME CRA GONE        @Y30SSRG*/
          3 CCADEFUN BIT(1),        /* DEFINE UNIQUE SAVE    @ZA27024*/
          3 *        BIT(1),        /* RESERVED              @ZA27024*/
        2 CCASUMTT PTR(24) BDY(BYTE), /* CRA SUM TT VALUE    @Y30SSSB*/
        2 CCADICTS CHAR(4),         /* DATA/INDEX ID TS      @Y30SSSB*/
        2 CCARANCA (2) PTR(31),     /* NORMAL RECORD BUFFER CHAIN    */
                                    /*  START, END ADDRS     @Y30SSSB*/
        2 CCARAVCA (2) PTR(31),     /* VOLUME RECORD BUFFER CHAIN    */
                                    /*  START, END ADDRS     @Y30SSSB*/
        2 CCAVTS   CHAR(8),         /* VOLUME TIMESTAMP      @Y30SSSB*/
        2 CCAREWKA PTR(31),         /* REUSE WORKAREA ADDR   @Y30SSSB*/
*       2 CCASMFP,                  /* SMF SAVE AREA         @Y30SSSB*/
                                    /* FOR PROB DETER        @Y30SSSB*/
          3 CCASMFMD CHAR(2),       /* MODULE ID             @Y30SSSB*/
          3 CCASMFRC CHAR(1),       /* REASON CODE           @Y30SSSB*/
          3 CCASMFCD CHAR(1),       /* RETURN CODE           @Y30SSSB*/
*       2 CCAPROBX FIXED(31),       /* AUXILLARY SAVE AREA   @Y30SSSB*/
                                    /* FOR CCAPROB           @Y30SSSB*/
*         3 CCAMODDX CHAR(2),       /* ERROR MODULE ID       @Y30SSSB*/
          3 CCAERCDX FIXED(15) BDY(BYTE), /* ERROR CODES     @Y30SSSB*/
            4 CCARESNX CHAR(1),     /* REASON CODE           @Y30SSSB*/
            4 CCARETRX CHAR(1),     /* RETURN CODE           @Y30SSSB*/
*       2 CCADGDGA PTR(31),         /* DEL FULL GDG WA       @Y30SSSB*/
          3 CCASAVMN PTR(31),       /* SAVE GOTTEN CORE ADDR @ZA27024*/
*       2 CCAOCPL PTR(31),          /* ORIGINAL CPL ADDRESS  @ZA29164*/
*       2 * CHAR(40),               /* RESERVED              @ZA29164*/
        2 CCAEND  CHAR(0);          /* END CCA - MUST END ON         */
                                    /*   FULLWORD BOUNDARY   @Y30SSSB*/
                                    /*   FULLWORD BOUNDARY   @Y30SSSB*/
./ ADD NAME=IGGCICB
*/********************************************************************/
*/*                                                                  */
*/*   MACRO NAME = IGGCICB                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME = CATALOG INTEGRITY CONTROL BLOCK             */
*/*                                                                  */
*/*   FUNCTION = USED TO CONTROL VSAM CATALOGS PROCESS OF            */
*/*              MOVING THE NON-AUTHORIZED USERS INTERFACE           */
*/*              CONTROL BLOCK STRUCTURE TO KEY 0 FETCH              */
*/*              PROTECTED CORE TO ASSURE SYSTEM INTEGRITY           */
*/*              DURING THE CATALOG SVC REQUEST PROCESS.             */
*/*                                                                  */
*/*   INCLUDED MACROS = NONE                                         */
*/*                                                                  */
*/*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
*/*                                                                  */
*/*   CREATED BY: VSAM CATALOG FIRST LOAD IGG0CLC9                   */
*/*                                                                  */
*/*   STATUS = VS/2 RELEASE 3.7-SU7  (CHANGE FLAG @ZA29164)          */
*/*                                                                  */
*/*   DATE OF LAST CHANGE = 8 MAY 78                                 */
*/*                                                                  */
*/********************************************************************/
*
*    DCL 1 IGGCICB BASED,           /* CATALAG INTEGRITY CB          */
*          2 CICBID CHAR(4),        /* CICB ID C'CICB'               */
*          2 CICFLAGS BIT(8),       /* PROCESSING CONTROL FLAGS      */
*            3 CICCOUNT BIT(1),     /* COUNT MODE                    */
*            3 CICPTRSW BIT(1),     /* WORKAREA POINTER IS SWITCHED  */
*            3 CICFPLOP BIT(1),     /* TEST FPL LOOP ERROR           */
*            3 CICPASWD BIT(1),     /* PASSWORD IS TO BE MOVED       */
*            3 *        BIT(4),     /* RESERVED                      */
*          2 CICUSKEY BIT(8),       /* USER KEY                      */
*          2 *          CHAR(2),    /* RESERVED                      */
*          2 CICGEOPR FIXED(31),    /* GEOMETRIC PROGRESSION COUNTER */
*          2 CICINCRM FIXED(31),    /* INCREMENTAL COUNTER           */
*          2 CICFVTCN FIXED(31),    /* FVT INCREMENTAL COUNTER       */
*          2 CICFVTDX FIXED(31),    /* FVT INDEX                     */
*          2 CICSVADR PTR(31),      /* SAVED FPL ADDRESS             */
*          2 CICFPLDI FIXED(31),    /* FPL DATA INDEX                */
*          2 CICFPLLP PTR(31),      /* FPL ADDRESS FOR LOOP CHECK    */
*          2 CICFVTPR PTR(31),      /* FVT ADDRESS                   */
*          2 CICBKPTR PTR(31),      /* POINTER TO BLOCK TO MOVE      */
*          2 CICBKLNG FIXED(31),    /* LENGTH OF BLOCK TO MOVE       */
*          2 CICNXTBK PTR(31),      /* POINTER TO NEXT AVAILABLE AREA*/
*          2 CICRMBYT FIXED(31),    /* REMAINING BYTES IN CISA       */
*          2 CICGMCNT FIXED(31),    /* COUNT FOR GETMAIN             */
*          2 CICRAREA PTR(31),      /* POINTER TO USER RETURN AREA   */
*          2 CICCISAP PTR(31),      /* POINTER TO BEGINNING OF CISA  */
*          2 CICCISSP PTR(31),      /* POINTER TO SECONDARY CISA     */
*          2 CICSABYT FIXED(31),    /* BYTES IN SECONDARY CISA       */
*          2 CICCICAB FIXED(31),    /* BYTES IN PRIMARY CISA         */
*          2 CICPRFPL PTR(31),      /* PRELIMINARY FPL ADDR          */
*          2 CICREGSV FIXED(31),    /* REGISTER SAVE AREA            */
*          2 CICMRGSV CHAR(40);     /* MULTIPLE REGISTER SAVE AREA   */
./ ADD NAME=IGGCOWA
*    /*                                                             */
*    /*  COWA - CATLG OPEN WORK AREA   DUMMY FOR DR2                */
*    /*                                                             */
* /*                                                                */
* /* MACCOMP Y-2 SC1DE/SJE92                                        */
* /* MACSTAT Y-2 72335/Y02020                                       */
* /*                                                                */
*        DCL 1  COWA  BASED (COWAPTR),
*          2 FLGS  BIT(8)             , /* FLAGS                    */
*          2 *     PTR(24)            , /* RESERVED                 */
*          2 OPLST                    , /* OPEN PARM LIST           */
*            3 OPTS  BIT(8)           , /* OPTIONS                  */
*              4 ENLST BIT(1)         , /* END OF LIST IND          */
*              4 OPT   BIT(7)         , /* OPTION FLAGS             */
*            3 OPDCB PTR(24)          , /* PTR TO DCB               */
*          2 OPEWA   PTR(31)          , /* PTR TO OPEN WORKAREA     */
*          2 COWCCA  PTR(31)          , /* PTR TO CCA               */
*          2 COWDRWP PTR(31)          , /* PTR TO DRWA              */
*          2 COWDECB                  , /* DECB AREA.               */
*            3 DECSDECB PTR(31)       , /* ECB                      */
*            3 DECTYPE  PTR(15)       , /* TYPE OF I/O REQUEST      */
*            3 DECLNGTH PTR(15)       , /* LENGTH OF KEY & DATA     */
*            3 DECDCB   PTR(31)       , /* ADDR OF DCB              */
*            3 DECAREA  PTR(31)       , /* ADDR OF DATA             */
*            3 DECIOBPT PTR(31)       , /* ADDR OF IOB              */
*            3 DECNEXT  PTR(31)       , /* ADDR OF NEXT ADDR FEEDBK */
*          2 COWNOTE(64) PTR(31)      , /* NOTE LIST                */
*          2 COWDCB  CHAR(88)  ,        /* DCB AREA                 */
*          2 COWRSAVE CHAR(72);         /* REG SAVE AREA            */
./ ADD NAME=IGGCP10A
         MACRO
         IGGCP10A &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP10A  WRITES A RECORD OR BLOCK TO REPLACE AN EOF MARK
CB46     CCW   SIDEQ,0,CC,5             SEARCH FOR LAST DATA REC
CB47     CCW   TIC,CB46-CB1,0,0
CB48     CCW   WCKD,CB51-CB1,DC,8       WRITE REC OR BLOCK OVER EOF MRK
CB49     CCW   0,0,DC,0
         AIF   ('&OPTCD' NE 'W').SWC
CB50     CCW   0,0,CC,0
         AGO   .TWC
.SWC     ANOP
CB50     CCW   0,0,0,0
.TWC     ANOP
SZ10A    EQU   (CB50+8-CB46)+8
         AIF   ('&OPTCD' NE 'W').CCHH
* 10AW   WRITE VALIDITY CHECK
CB500    CCW   NOP,0,CC+SILI,1
CB50A    CCW   SIDEQ,0,CC,5           SEARCH FOR REC AGAIN
CB50B    CCW   TIC,CB50A-CB1,0,0
CB50C    CCW   RCKD,0,SKIP,0          READ IT BACK
SZ10AW   EQU   CB50C+8-CB500+SZ10A
.CCHH    ANOP
CB51     DC    2F'00'                   C C H H R KL DL DL
         MEND
./ ADD NAME=IGGCP10B
         MACRO
         IGGCP10B &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP10B  WRITES EOF MARK
CB52     CCW   SIDEQ,0,CC,5              SEARCH FOR LAST DATA REC
CB53     CCW   TIC,CB52-CB1,0,0
         AIF   ('&OPTCD' NE 'W').SWC
CB54     CCW   WCKD,CB55-CB1,CC,8       WRITE EOF MARK
         AGO   .TWC
.SWC     ANOP
CB54      CCW   WCKD,CB55-CB1,0,8       WRITE EOF MARK
.TWC     ANOP
SZ10B    EQU   (CB54+8-CB52)+8       SIZE OF COMMON
         AIF   ('&OPTCD' NE 'W').CCHH
* 10BW   WRITE VALIDITY CHECK
CB540    CCW   NOP,0,CC+SILI,1
CB54A    CCW   SIDEQ,0,CC,5              SEARCH FOR EOF MARK
CB54B    CCW   TIC,CB54A-CB1,0,0
CB54C    CCW   RCKD,0,SKIP,8            READ IT BACK
LCB54C   EQU   CB54C+8-CB540
SZ10BW   EQU   LCB54C+SZ10B
.CCHH    ANOP
CB55     DC    2F'00'                   C C H R R 0 0 0
         MEND
./ ADD NAME=IGGCP11A
         MACRO
         IGGCP11A
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*        CP11A--READ A BLOCK TO BE BUMPED
CC1      CCW   SIDEQ,0,CC,5             SEARCH FOR BLOCK TO BE BUMPED
CC2      CCW   TIC,CC1-CB1,X'00',0
CC2A     CCW   RKD,0,DC,0               READ IN BLOCK
CC3      CCW   X'00',0,X'00',0
SZ11A    EQU   CC3+8-CC1
         MEND
./ ADD NAME=IGGCP11B
         MACRO
         IGGCP11B &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP11B  WRITES A RE-ARRANGED BLOCK BACK ONTO PRIME DATA TRACK
CC4      CCW   SIDEQ,0,CC,5          SEARCH FOR INSERTION POINT
CC5      CCW   TIC,CC4-CB1,0,0
         AIF   ('&OPTCD' NE 'W').SWC
CC6      CCW   WKD,0,CC,0            WRITE BLOCK
         AGO   .WC
.SWC     ANOP
CC6      CCW   WKD,0,0,0                WRITE BLOCK
.WC      ANOP
SZ11B    EQU   CC6+8-CC4
         AIF   ('&OPTCD' NE 'W').END
* 11BW   WRITE VALIDITY CHECK
CC60     CCW   NOP,0,CC+SILI,1
CC6A     CCW   SIDEQ,0,CC,5             SEARCH FOR BLOCK AGAIN
CC6B     CCW   TIC,CC6A-CB1,0,0
CC6C     CCW   RKD,0,SKIP,0             READ IT BACK
SZ11BW   EQU   CC6C+8-CC60+SZ11B
.END     MEND
./ ADD NAME=IGGCP123
         MACRO
         IGGCP123 &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
         AIF   ('&OPTCD' EQ 'V').VLR
* 123W   ADDENDUM TO CP12A AND CP12B OR TO CP13A AND CP13B WHEN WRITE
*        CHECKING IS SPECIFIED.
CEA00    CCW   NOP,0,CC+SILI,1
CEA      CCW   SIDEQ,0,CC,5              SEARCH FOR REC OR BLOCK AGAIN
CEB      CCW   TIC,CEA-CEA00,0,0
CEE      CCW   RCKD,0,SKIP,0             READ IT BACK
SZ123    EQU   CEE+8-CEA00
         AGO   .END
.VLR     ANOP
* 123WV  ADDENDUM TO CP12AV AND 12BV WHEN WRITE CHECKING IS SPECIFIED
CEA00    CCW   NOP,CEA00+5-CEA00,CC+SILI,1
CEA0     CCW   SIDEQ,CD0-CB1,CC,5        SEARCH FOR TRACK CAPACITY
CEA05    CCW   TIC,CEA0-CEA00,0,0        RECORD (R0)
CEA1     CCW   RDATA,0,CC+SILI+SKIP,3       READ CAPACITY RECORD
CEA2     CCW   TIC,CEA-CB1,0,0           TIC TO CED IF THE FULL TRACK
*                                        IS BEING CHECKED
CEA3     CCW   NOP,0,CC,1
CEA      CCW   SIDEQ,0,CC,5              SEARCH FOR FIRST DATA RECORD
CEB      CCW   TIC,CEA-CEA00,0,0         AGAIN
CED      CCW   RCKD,0,DC+SKIP+SILI,8     READ RECORD BACK
CEE      CCW   RKD,0,CC+SKIP+SILI,0      THE NUMBER OF CEE-CEF SETS
CEF      CCW   RCKD,0,CC+SKIP+SILI,0     EQUALS DCBHIRPD
SZ123V   EQU   CEF+8-CEA00
.END     MEND
./ ADD NAME=IGGCP12A
         MACRO
         IGGCP12A &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP12A(V) READS DATA RECORDS FOLLOWING SLOT IN WHICH NEW RECORD IS
*        TO BE INSERTED.
V12A     EQU    CB1
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').CD1
CD0      DC    C'CCHHR',X'000008'   CAPACITY RECORD FOR
CD0A     DC    C'YYR',X'0000000000' PRIME DATA TRK
CD0A1    CCW   SIDEQ,CD0-V12A,CC,5  SEARCH FOR R0(TRK CAP RCD)
CD0A2    CCW   TIC,CD0A1-V12A,0,0
CD0B     CCW   RDATA,CD0A-V12A,CC+SILI,3  READ TRK CAP RCD
CD0C     CCW   TIC,0,0,0
CD0D     CCW   NOP,0,CC+SILI,1   SET SECTOR IF RPS
.CD1     ANOP
CD1      CCW   SIDEQ,0,CC,5  SCH FOR RCD PRIOR TO INSERT POINT
CD2      CCW   TIC,CD1-V12A,0,0
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').CD3
CD2A     CCW   TIC,0,0,0
CD2B     CCW   RKD,0,CC+SILI,0   READ KEY OF RCD PRIOR TO INSERT POINT
CD3      CCW   RDATA,0,CC+SILI,0 READ DATA OF RECORD
SZ12AVW  EQU   CD3+8-CD0
         AGO   .END
.CD3     ANOP
CD3      CCW   RKD,0,0,0         READ RECORD
SZ12A    EQU   CD3+8-CD1
.END     MEND
./ ADD NAME=IGGCP12B
         MACRO
         IGGCP12B &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP12B(V) WRITES BACK PRIME DATA RECORDS.
V12B     EQU   *
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').CE1
CE0      CCW   SIDEQ,CD0-CB1,CC,5   SEARCH FOR R0
CE0A     CCW   TIC,0,0,0
CE0B     CCW   WD,CD0A-CB1,CC+SILI,3  WRT UPDTD TRK CAP RCD
CE0C     CCW   NOP,0,CC+SILI,1         NOP/SETSECT SWITCH
.CE1     ANOP
CE1      CCW   SIDEQ,0,CC,5  SCH FOR RCD PRIOR TO INSERT POINT
CE2      CCW   TIC,CE1-V12B,0,0
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').CE3
CE3      CCW   TIC,CE4-CE0,0,0    TO CE4 TO WRT PARTIAL TRK
CE3A     CCW   SHAEQ,CD0-CB1,CC,4  SCH FOR START OF TRK
CE3B     CCW   TIC,CE3A-CE0,0,0
CE3C     CCW   WR0,CD0-CB1,CC+SILI,11 WRT UPDTD TRK CAP RCD AGAIN
CE4      CCW   WCKD,0,DC,8            PRIME DATA COUNT
CE5      CCW   0,0,DC,0               PRIME DATA KEY
CE6      CCW   0,0,CC,0               PRIME DATA DATA
SZ12BVW  EQU   *-V12B
         AGO   .END
.CE3     ANOP
CE3      CCW   WCKD,0,DC,8            PRIME DATA COUNT
CE4      CCW   0,0,DC,0               PRIME DATA KEY
CE5      CCW   0,0,0,0                PRIME DATA DATA
SZ12B    EQU   *-V12B
.END     MEND
./ ADD NAME=IGGCP12C
         MACRO
         IGGCP12C &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP12C  WRITES A NEW RECORD WHICH HAS REPLACED A DELETED RECORD
CL1      CCW   SIDEQ,0,CC,5              SEARCH FOR DELETED RECORD
CL2      CCW   TIC,CL1-CB1,0,0
         AIF   ('&OPTCD' NE 'W').VLR
CL3      CCW   WD,0,CC,0                 REPLACE DELETED RECORD
         AGO   .SVLR
.VLR     ANOP
CL3      CCW   WD,0,0,0
.SVLR    ANOP
SZ12C    EQU   CL3+8-CL1
    AIF   ('&OPTCD' NE 'W').END
* 12CW   WRITE VALIDITY CHECK
CL30     CCW   NOP,0,CC+SILI,1
CL3A     CCW   SIDEQ,0,CC,5              SEARCH FOR RECORD AGAIN
CL3B     CCW   TIC,CL3A-CB1,0,0
CL3C     CCW   RDATA,0,SKIP,0               READ IT BACK
SZ12CW   EQU   CL3C+8-CL30+SZ12C
.END     MEND
./ ADD NAME=IGGCP13A
         MACRO
         IGGCP13A
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*        CP13A--READ INSERT SLOT AND THE FOLLOWING BLOCKS
CF1      CCW   SIDEQ,0,CC,5             SEARCH FOR FIRST RECORD TO READ
CF2      CCW   TIC,CF1-CB1,X'00',0
CF3      CCW   RDATA,0,X'00',0          FIRST PRIME DATA BLOCK
CF4      CCW   RDCNT,0,CC,8             READ NEXT BLOCK
CF5      CCW   RDATA,0,X'00',0
SZ13A    EQU   CF5+8-CF1                SIZE OF CP13A
         MEND
./ ADD NAME=IGGCP13B
         MACRO
         IGGCP13B
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*        CP13B--WRITE BACK THE REARRANGED BLOCKS READ BY CP13A
RP0      EQU   0
CG1      CCW   SIDEQ,0,CC,5             SEARCH FOR REC PRIOR TO INSERT
CG2      CCW   TIC,RP0,X'00',0
CG3      CCW   WCKD,0,DC,8              WRITE BACK PRIME DATA BLOCK
CG4      CCW   X'00',0,DC,0             KEY
CG5      CCW   X'00',0,X'00',0          DATA
SZ13B    EQU   CG5+8-CG1
         MEND
./ ADD NAME=IGGCP13C
         MACRO
         IGGCP13C &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP13C  WRITES BACK BLOCK IF THE INSERTION IS A RECORD WITH A KEY
*        IDENTICAL TO THAT OF A RECORD, WHICH ALTHOUGH LOGICALLY
*        DELETED,IS STILL PHYSICAL PRESENT WITHIN THE BLOCK.
CL5      CCW   SIDEQ,0,CC,5              SEARCH FOR BLOCK INSERTION
CL6      CCW   TIC,CL5-CB1,0,0            POINT
         AIF   ('&OPTCD' NE 'W').SWC
CL7      CCW   WD,0,CC,0                 REPLACE BLOCK
         AGO   .WC
.SWC     ANOP
CL7      CCW   WD,0,0,0                 REPLACE BLOCK
.WC      ANOP
SZ13C    EQU   CL7+8-CL5
         AIF   ('&OPTCD' NE 'W').END
* 13CW   WRITE VALIDITY CHECK
CL70     CCW   NOP,0,CC+SILI,1
CL7A     CCW   SIDEQ,0,CC,5              FIND RECORD AGAIN
CL7B     CCW   TIC,CL7A-CB1,0,0
CL7C     CCW   RDATA,0,SKIP,0               READ IT BACK
SZ13CW   EQU   CL7C+8-CL70+SZ13C
.END     MEND
./ ADD NAME=IGGCP14
        MACRO
         IGGCP14  &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*  CP14--PART TWO--REWRITE COCR AND TRACK INDEX
CH1      CCW   SIDEQ,0,CC,5             SEARCH FOR COCR
CH2      CCW   TIC,CH1-CB1,X'00',0
CH3      CCW   WD,CB22-CB1,CC+SILI,6    WRITE NEW COCR FROM CP8
LCH3     EQU   CH3+8-CH1                LENGTH OF COMMON SEGMENT
         AIF  ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SKIP1
CH3A1    CCW   NOP,CH3A1+5-CB1,CC+SILI,1 SET SECTOR TO ZERO IF RPS
CH3A     CCW   SIDEQ,0,CC,5             SEARCH FOR COCR AGAIN
CH3B     CCW   TIC,CH3A-CB1,X'00',0
CH3C     CCW   RDATA,0,CC+SILI+SKIP,8   READ IT BACK
LCH3C    EQU   CH3C+8-CH3A1             LENGTH OF WRT CHK SEGMENT
.SKIP1   ANOP
         AIF  ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').SK1
CH4      CCW   TIC,0,0,0                CH5, CH8G, OR CH14
         AGO   .SK12
.SK1     ANOP
CH4      CCW   TIC,0,X'00',0            CH5, CH8D, CH9, OR CH14
.SK12    ANOP
CH5      CCW   NOP,0,CC+SILI,6          SEARCH FOR PRIME IX ENTRY
CH55     CCW   SIDEQ,CB22+6-CB1,CC,5    (ENTRY POINT FOR SETUPS 1/2)
CH6      CCW   TIC,CH55-CB1,0,0
CH7      CCW   WKD,0,DC,0               WRITE NEW PRIME IX KEY
CH8      CCW   X'00',CB10+7-CB1,CC,10   AND DATA
LCH8     EQU   CH8+8-CH4                LENGTH OF COMMON
         AIF  ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SKIP2
CH80     CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH8A     CCW   SIDEQ,CB22+6-CB1,CC,5    SEARCH FOR ENTRY AGAIN
CH8B     CCW   TIC,CH8A-CB1,X'00',0
CH8C     CCW   RKD,0,CC+SKIP,0          READ IT BACK
LCH8C    EQU   CH8C+8-CH80              LENGTH OF WRITE CHK
.SKIP2   ANOP
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').SK3
CH8D     CCW   TIC,CH8G5-CB1,0,0        TIC TO CH8G5
CH8E     DC    D'0'                     THIS CCW NOT USED
CH8F     DC    D'0'                     THIS CCW NOT USED
CH8G     CCW   NOP,0,CC+SILI,1          SET SECTOR FOR RPS
CH8G5    CCW   SIDEQ,CB24-CB1,CC,5      SRCH FOR OVERFLOW TRK IX ENTRY
CH9      CCW   TIC,CH8G5-CB1,0,0
CH10     CCW   TIC,0,0,0                TIC TO CH12 OR CH13
         AGO   .SK35
.SK3     ANOP
CH8D     CCW   SIDEQ,CB24-CB1,CC,5      SEARCH FOR OVERFLOW TRACK
CH8E     CCW   TIC,CH8D-CB1,X'00',0     INDEX ENTRY
CH8F     CCW   WD,CB25-CB1,CC,10        WRITE NEW DATA ONLY
CH8G     CCW   TIC,CH13+8-CB1,X'00',0
CH9      CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH95     CCW   SIDEQ,CB24-CB1,CC,5      SEARCH OVERFLOW TRACK
CH10     CCW   TIC,CH95-CB1,X'00',0     INDEX ENTRY
.SK35    ANOP
CH12     CCW   WKD,0,DC,0
CH13     CCW   WD,CB25-CB1,CC,10        WRITE OVERFLOW INDEX ENTRY
LCH13    EQU   CH13+8-CH8D              LENGTH OF COMMON SEGMENT
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SKIP3
CH130    CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH13A    CCW   SIDEQ,CB24-CB1,CC,5      SEARCH FOR ENTRY AGAIN
CH13B    CCW   TIC,CH13A-CB1,X'00',0
CH13C    CCW   RKD,0,CC+SKIP,0          READ IT BACK
LCH13C   EQU   CH13C+8-CH130            LENGTH OF WRITE CHK CCWS
.SKIP3   ANOP
         AIF   ('&OPTCD' EQ 'V' OR  '&OPTCD' EQ 'VW').SKIP4
CH14     CCW   X'00',CH23+1-CB1,CC,6    SEEK NEW OVERFLOW RECORD
*        SEEK SET BY APPENDAGE. FOR USER WORKAREA THIS CCW IS A NOP.
         AGO   .SKIP45
.SKIP4   ANOP
CH14     CCW   NOP,0,SILI,1          STOPPING CCW
.SKIP45  ANOP
*  CP14--PART ONE--WRITE OVERFLOW RECORD
CH150    CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH15     CCW   SIDEQ,CH23+3-CB1,CC,5    SEARCH FOR OVERFLOW SLOT
CH15A    CCW   TIC,CH15-CB1,X'00',0
CH16     CCW   WCKD,CH24-CB1,DC,8       WRITE NEW OVERFLOW RECORD
CH17     CCW   X'00',0,DC,0
CH18     CCW   X'00',0,CC,0
LCH18    EQU   CH18+8-CH14              LENGTH OF COMMON SEGMENT
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SKIP5
CH180    CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH18A    CCW   SIDEQ,CH23+3-CB1,CC,5    SEARCH FOR NEW OVERFLOW RECORD
CH18B    CCW   TIC,CH18A-CB1,X'00',0
CH18C    CCW   RCKD,0,SKIP,0            READ IT BACK
LCH18C   EQU   CH18C+8-CH180            LENGTH OF WRITE CHK
.SKIP5   ANOP
*        TERMINATION FOR SETUPS 1,2,5, AND 6
CH19     CCW   X'00',CJ11+1-CB1,CC,6    SEEK PRIOR OVERFLOW RECORD
CH200    CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH20     CCW   SIDEQ,CJ11+3-CB1,CC,5    SEARCH FOR RECORD
CH21     CCW   TIC,CH20-CB1,00,0
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').NOCC22
CH22     CCW   WD,0,CC,0                WRITE BACK PRIOR OFLOW REC
         AGO   .REJOIN
.NOCC22  ANOP
CH22     CCW   WD,0,00,0                WRITE BACK PRIOR OFLOW REC
.REJOIN  ANOP
LCH22    EQU   CH22+8-CH19              LENGTH OF COMMON SEGMENT
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SKIP6
CH220    CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH22A    CCW   SIDEQ,CJ11+3-CB1,CC,5    SEARCH FOR PRIOR OFLOW AGAIN
CH22B    CCW   TIC,CH22A-CB1,0,0
CH22C    CCW   RDATA,0,SKIP,0           READ IT BACK
LCH22C   EQU   CH22C+8-CH220            LENGTH OF WRITE CHK
.SKIP6   ANOP
*        TERMINATION FOR SETUPS 3 AND 4
CH23     DC    D'0'                     M B B C C H H R
CH24     DC    D'0'                     C C H H R KL DL DL
LCH24    EQU   CH24+8-CH23
SZ14     EQU   LCH3+LCH8+LCH13+LCH18+LCH22+LCH24
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SKIP7
SZ14W    EQU   SZ14+LCH3C+LCH8C+LCH13C+LCH18C+LCH22C
.SKIP7   ANOP
         AIF   ('&OPTCD' EQ 'V' OR '&OPTCD' EQ 'VW').EOFX
         MEXIT
.EOFX    ANOP
*        EOF EXTENSION
CH25     CCW   SIDEQ,CH31+3-CB1,CC,5    SEARCH FOR LAST OFLOW REC
CH26     CCW   TIC,CH25-CB1,0,0
CH27     CCW   WCKD,CH32-CB1,CC,8       WRITE EOF
LCH27    EQU   CH27+8-CH23              LENGTH OF COMMON SEGMENT
         AIF   ('&OPTCD' NE 'VW').SK4
CH280    CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CH28     CCW   SIDEQ,CH31+3-CB1,CC,5    SEARCH FOR EOF AGAIN
CH29     CCW   TIC,CH28-CB1,0,0
CH30     CCW   RCKD,0,SKIP,8            READ IT BACK
LCH30    EQU   CH30+8-CH280             LENGTH OF WRITE CHK
.SK4     ANOP
CH31     DC    D'0'                     M B B C C H H R OF LAST OFLOW
CH32     DC    D'0'                     C C H H R KL DL DL OF EOF
LCH32    EQU   CH32+8-CH31
SZ14VW   EQU   SZ14W+LCH27+LCH30+LCH32
         MEND
./ ADD NAME=IGGCP15
               MACRO
         IGGCP15
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*        CP15--READ COCR AND OVERFLOW INDEX ENTRY FOR ADD-TO-END
CI1      CCW   SIDEQ,0,CC,5             SEARCH FOR COCR
CI1A     CCW   TIC,CI1-CB1,0,0
CI1B     CCW   RDATA,CB22-CB1,CC+SILI,6    READ COCR INTO CP8
CI1C     CCW   SEEKHH,CI5-CB1,CC,6      FIND LAST ACTIVE INDEX TRACK
CI1D     CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CI1E     CCW   SIDEQ,CI5+2-CB1,CC,5     SEARCH FOR INDEX ENTRY'S ID
CI2      CCW   TIC,CI1E-CB1,0,0
CI3      CCW   RDCNT+MT,CB24-CB1,CC,8   READ COUNT AND DATA OF LAST
CI4      CCW   RDATA,CB25-CB1,X'00',10  OVERFLOW ENTRY INTO CP8
CI5      DC    D'0'                     B B C C H H R OF LAST NORMAL IX
SZ15     EQU   CI5+8-CI1
         MEND
./ ADD NAME=IGGCP16
         MACRO
         IGGCP16   &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*  CP16--SEARCH AN OVERFLOW CHAIN FOR LAST RECORD OR FOR THE RECORD
*        PRECEDING THE NEW RECORD TO BE ADDED.
CJ1      CCW   SIDEQ,0,CC,5             SEARCH FOR NEXT OFLOW IN CHAIN
CJ2      CCW   TIC,CJ1-CB1,0,0
CJ3      CCW   SKEQHI,0,CC,0            SEE IF DESIRED RECORD
CJ4      CCW   TIC,CJ10-CB1,X'00',0     NO, READ LINK FIELD
CJ4A     CCW   NOP,0,CC+SILI,1          SET SECTOR IF RPS
CJ5      CCW   SIDEQ,0,CC,5             SEARCH FOR OVERFLOW REC AGAIN
CJ6      CCW   TIC,CJ5-CB1,X'00',0
CJ7      CCW   SKEQ,0,CC,0              TEST IF KEY = USER KEY
CJ8      CCW   NOP,0,SILI,1             NO, STOP HERE
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').NOTVLR
CJ9      CCW   RDATA,0,SILI,19          RD LINK, BDW, RDW, AND DEL BYTE
CJ10     CCW   RDATA,0,SILI,0           READ DATA
         AGO   .OUT
.NOTVLR  ANOP
CJ9      CCW   RDATA,0,SILI,11          RD LINK FIELD AND DELETE BYTE
CJ10     CCW   RDATA,0,X'00',0          READ DATA
.OUT     ANOP
CJ11     DC    D'0'                     M B B C C H H R OF PRIOR RECORD
SZ16     EQU   CJ11+8-CJ1
SZ16V    EQU   SZ16
         MEND
./ ADD NAME=IGGCP17
         MACRO
         IGGCP17  &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP17   CHANGES THE KEY IN A RECORD OR OVERFLOW TRACK INDEX ENTRY OR
*        IN A HIGHER LEVEL INDEX ENTRY
CK1      CCW   SIDEQ,0,CC,5              SEARCH FOR LAST INDEX ENTRY
CK2      CCW   TIC,CK1-CB1,0,0
CK3      CCW   RDATA,CK8-CB1,CC,10          READ DATA OF LAST ENTRY
CK30     CCW   NOP,0,CC+SILI,1
CK4      CCW   SIDEQ,0,CC,5              SEARCH FOR ENTRY AGAIN
CK5      CCW   TIC,CK4-CB1,0,0
CK6      CCW   WKD,0,DC,0               WRITE NEW HIGH KEY AND REWRITE
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').SWC
CK7      CCW   X'00',CK8-CB1,CC,10      DATA 0F ENTRY
         AGO   .TWC
.SWC     ANOP
CK7      CCW   X'00',CK8-CB1,0,10       DATA OF ENTRY
.TWC     ANOP
SZ17     EQU   (CK7+8-CK1)+16            L'(CK1 - CK7) + L'(CK8 - CK9)
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').CKNOP
* 17W    WRITE VALIDITY CHECK
CK70     CCW   NOP,0,CC+SILI,1
CK7A     CCW   SIDEQ,0,CC,5            SEARCH FOR UPDATED ENTRY
CK7B     CCW   TIC,CK7A-CB1,0,0
CK7C     CCW   RKD,0,SKIP,0            READ IT BACK
SZ17W    EQU   CK7C+8-CK70+SZ17     L'(CK70 - CK7C) + SZ17
.CKNOP   ANOP
CK8      DC    2F'00'                   M B B C C H H R
CK9      DC    2F'00'                   F P _ _ _ _ _ _
         MEND
./ ADD NAME=IGGCP1
         MACRO
         IGGCP1
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP1    SEARCHES CYLINDER AND MASTER INDEXES.
C01      CCW   SIDEQ,0,CC+SILI,4   SEARCH TO VERIFY SEEK
C02      CCW   TIC,C01-V1,0,0
C1       CCW   SKEQHI,0,CC+SILI,0   Q. TOO FAR ALONG INDEX
C2       CCW   TIC,C4-V1,0,0    A. NO, CONTINUE SCH
C2B      CCW   NOP,C2B+5-V1,CC+SILI,1     NOP/SS SWITCH
C3       CCW   RHA,C8-V1,CC+SKIP,5  A. YES, FIND START OF TRK
C4       CCW   SKEQHI+MT,0,CC,0    SEARCH FOR ENTRY
C5       CCW   TIC,C4-V1,0,0
C6       CCW   RDATA,C8+7-V1,0,10    READ MASTER INDEX ENTRY
C7       CCW   TIC,C10-V1,0,0  GO SCH CYLINDER INDEX
C8       DC    C'-------M'         MASTER
C9       DC    C'BBCCHHRF'         INDEX ENTRY
C10      CCW   C'P',C9-V1,CC,6  SEEK CYL INDEX
C10A     CCW   SIDEQ,C9+2-V1,CC+SILI,4  SEARCH TO VERIFY SEEK
C10B     CCW   TIC,C10A-V1,0,0
C11      CCW   SKEQHI,0,CC+SILI,0    Q. TOO FAR ALONG INDEX
C12      CCW   TIC,C14-V1,0,0   A. NO, CONTINUE SCH
C12B     CCW   NOP,C12B+5-V1,CC+SILI,1    NOP/SS SWITCH
C13      CCW   RHA,C8-V1,CC+SKIP,5   A. YES, FIND START OF TRK
C14      CCW   SKEQHI+MT,0,CC,0    SEARCH FOR ENTRY
C15      CCW   TIC,C14-V1,0,0
C16      CCW   RDATA,C17-V1,0,10    READ CYL INDEX ENTRY
C17      DC    C'MBBCCHHR'       CYL INDEX ENTRY
C18      DC    C'FP------'
V1       EQU   C01
SZCP1    EQU   C18+8-C01
         MEND
./ ADD NAME=IGGCP22
         MACRO
         IGGCP22
*    03/20/73          LEVEL=01
*                                  **** CHANNEL PROGRAM 22A ****
CN1      CCW   SIDEQ+MT,CN6-CN1+3,CC,5  FIND RECORD
CN2      CCW   TIC,CN1-CN1,0,0
CN2FLGS  EQU   CN2+4                    CCW FLAGS FIELD
CN2CNT   EQU   CN2+6                    CCW BYTE COUNT FIELD
CN3      CCW   RKD,CN4-CN1,DC,0         READ IN KEY (TIC IF DATA ONLY)
CN3KEY   EQU   CN3+6                    KEY LENGTH
CN4      CCW   RDATA,0,CC,0             READ IN DATA
CN4FLGS  EQU   CN4+4                    CCW FLAGS FIELD
CN4DL    EQU   CN4+6                    DATA LENGTH
CN5      CCW   TIC,0,0,0                TIC TO NEXT CP
CN6      DC    D'0'                     MBBCCHHR
CN6HHR   EQU   CN6+5                    HHR FROM MBBCCHHR
CN6HR    EQU   CN6+6                    HR FROM MBBCCHHR
CN6R     EQU   CN6+7                    RECORD NO. FROM MBBCCHHR
CN7      DC    D'0'                     BUFFER ADDRESS + OFFSET
CP22LEN  EQU   CN7+8-CN1
         MEND
./ ADD NAME=IGGCP23
         MACRO
         IGGCP23
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*                                  **** CHANNEL PROGRAM 23 ****
CS1      CCW   SIDEQ,0,CC+SILI,4        VALIDATE SEEK
CS1A     CCW   TIC,CS1-CS1,0,0
CS1B     CCW   SKEQHI,0,CC+SILI,0       TOO FAR ALONG INDEX
CS1C     CCW   TIC,CS2-CS1,0,0
CS1D     CCW   NOP,CS1D-CS1+5,CC+SILI,1 SET SECTOR SLOT FOR RPS
CS1E     CCW   RHA,0,CC+SKIP,5          POSITION TO HOME ADDRESS
CS2      CCW   SKEQHI+MT,0,CC,0         SEARCH INDEX ON KEY
CS3      CCW   TIC,CS2-CS1,0,0
CS4      CCW   RDATA,CS6-CS1+7,CC,10    READ CURRENT INDEX ENTRY
CS5      CCW   TIC,CS8-CS1,0,0
CS6      DC    C'        '              -------M
CS7      DC    C'        '              BBCCHHRF
CS8      CCW   0,CS7-CS1,CC,6           SEEK TRACK INDEX
CS80     CCW   NOP,CS80-CS1+5,CC+SILI,1 SLOT FOR SET SECTOR - RPS
CS9      CCW   SIDEQ,0,CC,5             POSITION TO TRACK INDEX
CS9A     CCW   TIC,CS9-CS1,0,0
CS10     CCW   RDCNT+MT,0,CC,8          COUNT OF CURRENT INDEX ENTRY
CS11     CCW   SKEQHI,0,CC,0            SEARCH ON KEY
CS12     CCW   TIC,CS10-CS1,0,0
CS13     CCW   RDATA,CS17+7-CS1,CC,10    DATA OF CURRENT INDEX ENTRY
CS14     CCW   RDCNT+MT,0,CC,8           COUNT OF NEXT INDEX ENTRY
CS15     CCW   RDATA,0,CC+SILI,10        DATA OF NEXT INDEX ENTRY
CS16     CCW   TIC,CS19-CS1,0,0
CS17     DC    C'        '              -------M
CS18     DC    C'        '              BBCCHHRF
CS19     CCW   0,CS18-CS1,CC,6          SEEK PRIME TRACK
CS19A    CCW   NOP,CS19A+5-CS1,CC+SILI,1 SLOT FOR SET SECTOR - RPS
CS20     CCW   SIDEQ,CS18+2-CS1,CC,5    SEARCH FIRST DATA RECORD
CS21     CCW   TIC,CS20-CS1,0,0
CS26     CCW   TIC,CS22-CS1,0,0        TIC TO CS22
CS25     CCW   RDCNT,0,CC+SILI,5        READ COUNT OF RECORD
CS22     CCW   SKEQ,0,CC+SILI,0         SEARCH FOR DESIRED BLOCK
CS23     CCW   TIC,CS25-CS1,0,0
CS24     CCW   NOP,0,SILI,1             EXIT WHEN RECORD FOUND
*                                       *  OR READ SECTOR
CP23LEN  EQU   CS24+8-CS1
         MEND
./ ADD NAME=IGGCP24
         MACRO
         IGGCP24
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
.*         RELEASE 20 DELETIONS/CHANGES
*                                  **** CHANNEL PROGRAM 24 ****
W1CN8    DS    0D
CN8      CCW   SIDEQ,0,CC,5             FIND NEXT INDEX ENTRY
W1CN9    DS    0D
CN9      CCW   TIC,0,0,0
W1CN10   DS    0D
CN10     CCW   RDATA,0,CC,10            READ CURRENT ENTRY
W1CN11   DS    0D
CN11     CCW   RDATA+MT,0,CC,10         READ CURRENT OVERFLOW ENTRY
W1CN12   DS    0D
CN12     CCW   RDCNT+MT,0,CC,8          READ NEXT ENTRY
W1CN13   DS    0D
CN13     CCW   RDATA,0,CC,10            READ DATA NEXT ENTRY
W1CN14   DS    0D
CN14     CCW   SEEKHH,0,CC,6            SEEK TO NEXT TRACK
W1CN14A  DS    0D
CN14A    CCW   NOP,CN14A+5-CN8,CC+SILI,1  SET SECTOR IF RPS
W1CN15   DS    0D
CN15     CCW   TIC,0,0,0         TRANSFER TO READ OR WRITE THE RECORD
CP24LEN  EQU   CN15+8-CN8
         MEND
./ ADD NAME=IGGCP25
         MACRO
         IGGCP25
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*                                 **** CHANNEL PROGRAM 25 ****
CN20     CCW   SIDEQ,0,CC,5             SEARCH FOR CORRECT RECORD
CN21     CCW   TIC,CN20-CN20,0,0
CN22     CCW   RKD,0,CC+SILI,0          READ RECORD IN
CN23     CCW   SEEKHH,CN31+1-CN20,CC,6  SEEK TO BEGINNING TRACK INDEX
CN23A    CCW   NOP,CN23A+5-CN20,CC+SILI,1 SLOT FOR RPS INSTRUCTION
CN24     CCW   RHA,CN31-CN20,CC+SKIP,5  POSITION TO START OF TRACK
CN25     CCW   SKEQHI+MT,0,CC,0         SEARCH FOR TRK IX ENTRY
CN26     CCW   TIC,CN25-CN20,0,0
CN27     CCW   RDATA,0,CC,10            READ CURRENT INDEX ENTRY
CN28     CCW   RDATA+MT,0,CC,10         READ CURRENT OVERFLOW ENTRY
CN29     CCW   RDCNT+MT,0,CC,8          READ NEXT COUNT
CN30     CCW   RDATA,0,0,10             READ NEXT DATA OR DUMMY ENTRY
CN31     DC    C'        '              MBBCCHR - ADDRESS TRACK INDEX
CP25LEN  EQU   CN31+8-CN20
         MEND
./ ADD NAME=IGGCP26
         MACRO
         IGGCP26
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
.*         RELEASE 20 DELETIONS/CHANGES
*                                  **** CHANNEL PROGRAM 26 ****
CS27     CCW   SIDEQ,0,CC,5             SRCH 1ST REC OVERFLOW CHAIN
CS28     CCW   TIC,CS27-CS1,0,0
CS29     CCW   SKEQHI,0,CC,0            PAST KEY YET
CS30     CCW   TIC,CS32-CS1,0,0
CS31     CCW   NOP,0,SILI,1             STOP IF PAST
CS32     CCW   RDATA,CS34+7-CS1,CC+SILI,10 READ IN NEXT OVERFLOW CHAIN
CS33     CCW   TIC,CS36-CS1,0,0
CS34     DC    C'        '              -------M  ADDRESS OF OVERFLOW
CS35     DC    C'        '              BBCCHHRF    RECORD
CS36     CCW   0,CS35-CS1,CC,6          SEEK OVERFLOW TRACK
CS37     CCW   SIDEQ,CS35-CS1+2,CC,5      SRCH NEXT OVERFLOW RECORD
CS38     CCW   TIC,CS37-CS1,0,0
CS39     CCW   TIC,CS29-CS1,0,0         FOUND BR TO CHECK FOR KEY
CP26LEN  EQU   CS39+8-CS27
         MEND
./ ADD NAME=IGGCP2
         MACRO
         IGGCP2
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP2    SEARCHES A CYLINDER INDEX WHEN IT IS THE HIGHEST LEVEL
*        SEARCHED ON THE DEVICE.
C28      CCW   SIDEQ,0,CC+SILI,4  SEARCH TO VERIFY SEEK
C29      CCW   TIC,C28-V2,0,0
C30      CCW   SKEQHI,0,CC+SILI,0      Q. TOO FAR ALONG INDEX
C31      CCW   TIC,C33-V2,0,0          A. NO, CONTINUE SEARCH
C31B     CCW   NOP,C31B+5-V2,CC+SILI,1    NOP/SS SWITCH
C32      CCW   RHA,C37-V2,CC+SKIP,5    A. YES,FIND START OF TRK
C33      CCW   SKEQHI+MT,0,CC,0      SEARCH FOR ENTRY
C34      CCW   TIC,C33-V2,0,0
C35      CCW   RDATA,C36-V2,0,10             READ CYL INDEX
C36      DC    C'MBBCCHHR'      CYL INDEX ENTRY
C37      DC    C'FP------'
V2       EQU   C28
SZCP2    EQU   C37+8-C28
         MEND
./ ADD NAME=IGGCP47
         MACRO
&NAME    IGGCP47 &OPTCD=
         GBLB    &CPOPS
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
         AIF     (&CPOPS).NOCPOPS
&CPOPS   SETB    1
         IGGCPOPS
.NOCPOPS ANOP
&NAME    DSECT
CP4      DS    0D
         IGGCP4
CP5      DS    0D
         IGGCP5  OPTCD=&OPTCD
CP6      DS    0D
         IGGCP6  OPTCD=&OPTCD
CP7      DS    0D
         IGGCP7  OPTCD=&OPTCD
         MEND
./ ADD NAME=IGGCP4
         MACRO
         IGGCP4
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP4    SEARCHES A TRACK INDEX
CA01     CCW   SIDEQ,0,CC+SILI,4    SEARCH TO VERIFY SEEK
CA02     CCW   TIC,CA01-V4,0,0
CA03     CCW   TIC,CA5-V4,0,0        TIC CA1 IF 1ST TRK SHRD.
CA1      CCW   SIDEQHI,0,CC,5 Q. IN THE PRIME DATA PART OF TRK
CA2      CCW   TIC,CA5-V4,0,0 A. NO, CONTINUE SEARCH
CA4      CCW   TIC,CA6B-V4,0,0 A. YES, GO TO RE-ORIENT
CA5      CCW   SKEQHI,0,CC+SILI,0 Q. TOO FAR ALONG INDEX
CA6      CCW   TIC,CA8-V4,0,0     A. NO, CONTINUE SEARCH
CA6B     CCW   NOP,CA6B+5-V4,CC+SILI,1 NOP/SS SWITCH
CA7      CCW   RHA,CA12-V4,CC+SKIP,5 A. YES, FIND START OF TRK
CA8      CCW   SKEQHI+MT,0,CC,0   SEARCH FOR ENTRY
CA9      CCW   TIC,CA8-V4,0,0
CA10     CCW   RDATA,CA12+7-V4,CC,10   READ INDEX ENTRY
CA11     CCW   TIC,CA14-V4,0,0
CA12     DC    C'-------M'         TRACK INDEX
CA13     DC    C'BBCCHHRF'
CA14     CCW   C'P',CA13-V4,CC,6   SEEK PRIME DATA TRK
V4       EQU   CA01
SZ4      EQU  CA14+8-CA01
         MEND
./ ADD NAME=IGGCP5
         MACRO
         IGGCP5 &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP5    SEARCHES PRIME DATA TRACKS AND READS OR WRITES PRIME DATA
*        RECORDS.
CA15     CCW   NOP,CA15+5-V5,CC+SILI,1 NOP/SETSECT SWITCH
*              SET SECTOR TO BEGINNING OF TRACK (BOT) IF RPS DEVICE.
CA16A    CCW   SIDEQ,CA13+2-V5,CC,5  SHRD TRK-SCH PAST IX
*                                    NORMAL TRK-SCH PAST R0
CA16B    CCW   TIC,CA16A-V5,0,0
CA16C    CCW   TIC,CA21-V5,0,0  AVOID RD CNT OF FIRSH+1
CA20     CCW   RDCNT,CA25+3-V5,CC+SILI,5 RD CNT OF RCD(SEE CA25)
CA21     CCW   SKEQ,0,CC+SILI,0 SKEQ IF READ- UNBLKD, OR WRITE
*                               SKEQHI IF READ-BLOCKED
CA22     CCW   TIC,CA20-V5,0,0
CA23     CCW   RDATA,0,CC,0 READ OR WRITE PRIME DATA
CA24     CCW   NOP,0,SILI,1             NOP/RDSECT SWITCH
*              RDSECT FOR THETA OF RCD JUST READ OR WRITTEN
SZ5      EQU   (CA24+8-CA15)+8  SIZE OF COMMON
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').CCHH
* CP5W   VALIDITY CHECK PRIME DATA RECORDS.
CA240    CCW   NOP,0,CC+SILI,1              NOP/SETSECT SWITCH
CA24A    CCW   SIDEQ,CA25+3-V5,CC,5
CA24B    CCW   TIC,CA24A-V5,0,0
CA24C    CCW   RDATA,0,SKIP,0
CA24D    CCW   SIDEQ,0,CC,5
CA24E    CCW   TIC,CA24D-V5,0,0
CA24F    CCW   WD,0,CC,0
CA24G    CCW   TIC,CA240-V5,0,0
SZ5W     EQU   CA24G+8-CA240+SZ5
.CCHH    ANOP
CA25     DC    C'---CCHHR'
V5       EQU   V4
         MEND
./ ADD NAME=IGGCP6
         MACRO
         IGGCP6 &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP6    SEARCHES AN OVERFLOW CHAIN TO READ OR WRITE OFLO RECORDS
CA26     CCW   SIDEQ,0,CC,5  SCH FOR 1ST RCD IN OVFLO CHAIN
CA27     CCW   TIC,CA26-V6,0,0
CA28     CCW   SKEQ,0,CC,0  CHECK KEY IN OVFLO RCD
CA29     CCW   TIC,CA32-V6,0,0  NOT EQ.- GO TO NEXT IN CHAIN
CA30     CCW   TIC,CA31-V6,0,0 EQ-READ(CA31) OR WRT(CA40) RCD
CA31     CCW   RDATA,0,0,0  READ THE OVFLO RCD
CA31B    CCW   RDSECT,0,0,1  END OF CP
CA32     CCW   RDATA,CA34+7-V6,CC+SILI,10 RD LINK FLD TO NXT
CA33     CCW   TIC,CA36-V6,0,0
CA34     DC    C'-------M'       LINK FIELD
CA35     DC    C'BBCCHHRF'       LINK FIELD
CA36     CCW   C'P',CA35-V6,CC,6 SEEK NEXT RCD IN OVFLO
CA37     CCW   SIDEQ,CA35+2-V6,CC,5 SCH FOR OVFLO RCD
CA38     CCW   TIC,CA37-V6,0,0
CA39     CCW   TIC,CA28-V6,0,0  FOUND- CHECK KEY
CA40     CCW   RDATA,0,CC+SILI,10   READ LINK FLD
CA40A    CCW   TIC,CA41-V6,CC,1      TIC/RDSECT SWITCH
CA40B    CCW   SETSECT,0,CC,1  POSITION TO RCD AGAIN
CA41     CCW   SIDEQ,CA35+2-V6,CC,5   SCH FOR IT
CA42     CCW   TIC,CA41-V6,0,0
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').NOCC
CA43     CCW   WD,0,CC,0     WRITE THE RECORD
SZ6      EQU   CA43+8-CA26
         AGO   .COMMON
.NOCC    ANOP
CA43     CCW   WD,0,0,0                 WRITE THE RECORD
.COMMON  ANOP
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').END
* CP6W   VALIDITY CHECKS OVERFLOW RECORDS.
CA430    CCW   NOP,CA42+4-V6,CC+SILI,1 NOP/SETSECT SWITCH
CA43A    CCW   SIDEQ,CA35+2-V6,CC,5   FIND RCD AGAIN
CA43B    CCW   TIC,CA43A-V6,0,0
CA43C    CCW   RDATA,0,SKIP,0    READ IT BACK
SZ6W     EQU   SZ6+CA43C+8-CA430
.END     ANOP
V6       EQU   V4
         MEND
./ ADD NAME=IGGCP7
         MACRO
         IGGCP7 &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
* CP7    WRITES DATA RECORDS WHEN WRITE K IS ASSOCIATED WITH READ KU.
CA44     CCW   SIDEQ,0,CC,5   SCH FOR RECORD TO BE UPDATED
CA45     CCW   TIC,CA44-V7,0,0
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').NOCC
CA46     CCW   WD,0,CC,0    WRITE UPDATED RECORD
         AGO   .ON
.NOCC    ANOP
CA46     CCW   WD,0,0,0       WRITE UPDATED RECORD
.ON      ANOP
SZ7      EQU   CA46+8-CA44
V7       EQU   CA44
         AIF   ('&OPTCD' NE 'W' AND '&OPTCD' NE 'VW').END
* CP7W   VALIDITY CHECKS THE UPDATED DATA RECORDS.
CA460    CCW   NOP,0,CC+SILI,1         NOP/SETSECT SWITCH
CA46A    CCW   SIDEQ,0,CC,5        FIND RECORD AGAIN
CA46B    CCW   TIC,CA46A-V7,0,0
CA46C    CCW   RDATA,0,SKIP,0     READ IT BACK
SZ7W     EQU   CA46C+8-CA460+SZ7
.END     MEND
./ ADD NAME=IGGCP8
         MACRO
      IGGCP8   &OPTCD=
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*              CP8--SRCH TRK IX AND PRIME DATA TRACK
CB1      CCW   SIDEQ,0,CC,5             READ R0 WHICH MAY BE
CB2      CCW   TIC,CB1-CB1,0,0          CYLINDER OVERFLOW CONTROL
CB3      CCW   RDATA,CB22-CB1,CC+SILI,6    RECORD
CB4      CCW   RDCNT+MT,CB22+6-CB1,CC+SILI,5     READ COUNT OF IX ENTRY
CB5      CCW   SKEQHI,0,CC,0            SEARCH FOR CORRECT ENTRY
CB6      CCW   TIC,CB4-CB1,X'00',0
CB7      CCW   RDATA,CB10+7-CB1,CC,10   READ TRACK INDEX ENTRY
CB8      CCW   RDCNT+MT,CB24-CB1,CC,8   READ COUNT OF NEXT ENTRY
CB8A     CCW   RDATA,CB25-CB1,CC,10     READ DATA OF NEXT ENTRY
CB9      CCW   TIC,CB12-CB1,0,0
CB10     DC    2F'0'                    - - - - - - - M
CB11     DC    2F'0'                    B B C C H H R F
CB12     CCW   X'00',CB11-CB1,CC,6      P SEEK TO PRIME DATA TRK
CB16     CCW   NOP,CB16+5-CB1,CC+SILI,1     SET SECTOR 0 IF RPS
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').FIXED
CB17     CCW   RHA,0,CC+SILI+SKIP,1     ORIENT TO H.A.
CB18     CCW   TIC,CB18B-CB1,X'00',0    AVOID SKIPPING FIRST RECORD
CB18A    CCW   RDATA,0,CC+SILI,0        READ IN BLOCK PRIOR TO INS BLK
CB18B    CCW   RDCNT,CB23+3-CB1,CC+SILI,5  GET PROBABLE INS BLK COUNT
CB19     CCW   SKEQHI,0,CC,0            SEARCH FOR PROBABLE INSERT BLK
CB20     CCW   TIC,CB18A-CB1,X'00',0
         AGO   .COMMON
.FIXED   ANOP
CB17     CCW   SIDEQ,CB11+2-CB1,CC,5    SEARCH FOR PRIME RECORD
CB18     CCW   TIC,CB17-CB1,X'00',0
CB18A    CCW   TIC,CB19-CB1,X'00',0     AVOID SKIPPING FIRST RECORD
CB18B    CCW   RDCNT,CB23+3-CB1,CC+SILI,5  GET COUNT OF INSERT RECORD
CB19     CCW   SKEQHI,0,CC+SILI,0       SEARCH TRK FOR INSERT BLOCK
CB20     CCW   TIC,CB18B-CB1,X'00',0
.COMMON  ANOP
CB21     CCW   NOP,0,SILI,1             READ INSERT BLK SECTOR IF RPS
CB22     DC    D'0'                     H H R Y Y T C C
CB23     DC    D'0'                     H H R C C H H R
CB24     DC    D'0'                     C C H H R KL DL DL
CB25     DC    D'0'                     M B B C C H H R
CB26     DC    D'0'                     F P - - - - - -
SZ8      EQU   CB26+8-CB1
         AIF   ('&OPTCD' NE 'V' AND '&OPTCD' NE 'VW').END
SZ8VW    EQU   SZ8+0
.END     ANOP
         MEND
./ ADD NAME=IGGCP9A
         MACRO
         IGGCP9A
.*         RELEASE 23 DELETIONS/CHANGES
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
*        CP9A--READ A RECORD TO BE BUMPED INTO THE WORKAREA
CB30     CCW   SIDEQ,0,CC,5             SRCH FOR RECORD TO BUMP
CB31     CCW   TIC,CB30-CB1,0,0
CB32     CCW   RKD,0,DC,0               READ IN THE RECORD TO BE BUMPED
CB33     CCW   X'00',0,0,0
SZ9A     EQU   CB33+8-CB30
         MEND
./ ADD NAME=IGGCP9B
         MACRO
         IGGCP9B &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP9B   READS AN EVEN NUMBERED RECORD AFTER WRITING A RECORD INTO THE
*        PREVIOUS SLOT AND WRITES BACK THE LAST RECORD OF A NON-EOF
*        TRACK WHEN THE NUMBER OF RECORDS BUMPED IS ODD
CB34     CCW   SIDEQ,0,CC,5        SEARCH FOR RECORD
CB35     CCW   TIC,CB34-CB1,0,0
CB36     CCW   WKD,0,DC,0           WRITE NEW RECORD OR RECORD
CB37     CCW   0,0,CC,0               POINTED TO BY DECB
SZ9B     EQU   (CB37+8-CB34)+16      SIZE OF COMMON
         AIF   ('&OPTCD' NE 'W').CBNOP
* 9BW    WRITE VALIDITY CHECK
CB370    CCW   NOP,0,CC+SILI,1
CB37A    CCW   SIDEQ,0,CC,5         SEARCH FOR RECORD AGAIN
CB37B    CCW   TIC,CB37A-CB1,0,0
CB37C    CCW   RKD,0,SKIP,0          READ IT BACK
SZ9BW    EQU   CB37C+8-CB370+SZ9B
.CBNOP   ANOP
CB38     CCW   RKD,0,DC,0          READ NEXT RECORD
CB39     CCW   0,0,0,0
         MEND
./ ADD NAME=IGGCP9C
         MACRO
         IGGCP9C &OPTCD=
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
* CP9C   READS AN EVEN NUMBERED RECORD AFTER WRITING A RECORD INTO THE
*        PREVIOUS SLOT AND WRITES BACK THE LAST RECORD OF A NON-EOF
*        TRACK WHEN THE NUMBER OF RECORDS BUMPED IS EVEN
CB40     CCW   SIDEQ,0,CC,5           SEARCH FOR RECORD
CB41     CCW   TIC,CB40-CB1,0,0
CB42     CCW   WKD,0,DC,0              WRITE RECORD INTO WORK AREA
CB43     CCW   0,0,CC,0
SZ9C     EQU   (CB43+8-CB40)+16        SIZE OF COMMON
         AIF   ('&OPTCD' NE 'W').CBNOP
* 9CW    WRITE VALIDITY CHECK
CB430    CCW   NOP,0,CC+SILI,1
CB43A    CCW   SIDEQ,0,CC,5            SEARCH FOR RECORD AGAIN
CB43B    CCW   TIC,CB43A-CB1,0,0
CB43C    CCW   RKD,0,SKIP,0            READ IT BACK
SZ9CW    EQU   CB43C+8-CB430+SZ9C
.CBNOP   ANOP
CB44     CCW   RKD,0,DC,0         READ RECORD AND POINT DECB TO
CB45     CCW   0,0,0,0             THAT AREA
         MEND
./ ADD NAME=IGGCPOPS
         MACRO
         IGGCPOPS
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
.*         RELEASE 20 DELETIONS/CHANGES
* CONTROL
NOP      EQU   X'03'
SEEK     EQU   X'07'
SEEKCC   EQU   X'0B'
SEEKHH   EQU   X'1B'
SFM      EQU   X'1F'
SPACE    EQU   X'0F'
TIC      EQU   X'08'
*SEARCH  OPS
MT       EQU   X'80'
SHAEQ    EQU   X'39'
SIDEQ    EQU   X'31'
SIDHI    EQU   X'51'
SIDEQHI  EQU   X'71'
SKEQ     EQU   X'29'
SKHI     EQU   X'49'
SKEQHI   EQU   X'69'
SETSECT  EQU   X'23'
* READ   OPS
RHA      EQU   X'1A'
RDCNT    EQU   X'12'
RR0      EQU   X'16'
RDATA    EQU   X'06'
RKD      EQU   X'0E'
RCKD     EQU   X'1E'
RDSECT   EQU   X'22'
* WRITE  OPS
WCKD     EQU   X'1D'
WSCKD    EQU   X'01'
WD       EQU   X'05'
WKD      EQU   X'0D'
WR0      EQU   X'15'
* FLAGS
DC       EQU   X'80'
CC       EQU   X'40'
SILI     EQU   X'20'
SKIP     EQU   X'10'
PCI      EQU   X'08'
         MEND
./ ADD NAME=IGGDCBFA
         MACRO
&NAME    IGGDCBFA
&NAME    DSECT
*    03/20/73          LEVEL=01
*****************************************************************
*    ISAM DCB FIELD AREA - CONTROL BLOCK FOR SHARED DATA SETS   *
*****************************************************************
DFARORG3 DS    F                        NO. ACCESSES TO OVRFLOW RCDS
*                                       OTHER THAN FIRST RCD IN CHAIN
DFANREC  DS    F                        NO. RCDS IN PRIME AREA
DFAST    DS    BL1                      DCB STATUS INDICATORS
*                                       B0 SINGLE SCHEDULE MODE
*                                       B1 KEY SEQ. TO BE CHECKED
*                                       B2 INITIAL LOAD COMPLETED
*                                       B3 RESUME LOAD ON NEW CYL
*                                       B4 RESERVED
*                                       B5 FIRST MACRO NOT RCVD
*                                       B6 LAST BLOCK FULL
*                                       B7 LAST TRACK FULL
DFARESER DS    XL1                      RESERVED
DFAUSE   DS    H                        NO. DCBS OPENED ON DATA SET,
*                                       TOTAL OF ASID USE COUNTS
DFANBOV  DS    H                        VLR, NO. BYTES LEFT ON
*                                       CURRENT OVRFLOW TRACK
DFANOREC DS    H                        NO. RCDS IN OVERFLOW AREA
DFALIOV  DS    XL8                      ADDR LAST IND OVRFLOW RCD
DFARORG1 DS    H                        NO. FULL CYL OVRFLOW AREAS
DFARORG2 DS    H                        NO. OF TRKS REMAINING IN
*                                       IND. OVERFLOW AREAS
DFALPDA  DS    XL8                      LAST PRIME DATA RCD ADDR
DFAID    DS    XL8                      IDENTIFIER FOR DATA SET
DFACHAIN DS    A                        ADDR OF NEXT FA IN CHAIN
DFAASID1 DS    H                        ASID OF USER
DFAUSE1  DS    H                        USE COUNT FOR AISD1
DFAASID2 DS    H                        ASID OF USER
DFAUSE2  DS    H                        USE COUNT FOR AISD2
DFAASID3 DS    H                        ASID OF USER
DFAUSE3  DS    H                        USE COUNT FOR ASID3
DFAASID4 DS    H                        ASID OF USER
DFAUSE4  DS    H                        USE COUNT FOR AISD4
DFAASIDN DS    A                        ADDR OF NEXT FAEX IN CHAIN
DFASIZE  EQU   *-DFARORG3               SIZE OF FILED AREA
         SPACE 4
DCBFAEX  DSECT
*****************************************************************
*    DCB FIELD AREA EXTENSION - CONTAINS USE COUNTS FOR FOUR     *
*    ADDRESS SPACES AND A POINTER TO NEXT FIELD AREA EXTENSION    *
*******************************************************************
DFAXSID1 DS    H                        ASID OF USER
DFAUSE1X DS    H                        USE COUNT FOR XSID1
DFAXSID2 DS    H                        ASID OF USER
DFAUSE2X DS    H                        USE COUNT FOR XSID2
DFAXSID3 DS    H                        ASID OF USER
DFAUSE3X DS    H                        USE COUNT FOR XSID3
DFAXSID4 DS    H                        ASID OF USER
DFAUSE4X DS    H                        USE COUNT FOR XSID4
DFAEXN   DS    A                        ADDR OF NEXT FAEX ON CHAIN
DFEXSIZE EQU   *-DCBFAEX                SIZE OF EXTENSION
         SPACE 4
DFAASID  DSECT
DFANXPTR EQU   4                        OFFSET TO NEXT ASID FIELD
DFANOIDS EQU   4                        NO. OF ASID'S AND USE COUNTS
*                                       IN DCBFA AND EXTENSIONS
DFAINCR  EQU   1                        INCREMENT USE COUNTS
         SPACE
*******************************************************************
*    DSECT FOR SEARCHING FOR ADDRESS SPACE ID                     *
*******************************************************************
         SPACE
DFAASIDX DS    H                        ADDRESS SPACE ID
DFAUSEX  DS    H                        ASID USE COUNT
DFAPTR   DS    A                        ADDR OF DCBFA EXTENSION
         MEND
./ ADD NAME=IGGDEBD
         MACRO
&NAME    IGGDEBD
*    03/20/73          LEVEL=01
DEBAVT   DSECT
**********************************************************************
*   APPENDAGE VECTOR TABLE FOR DEB. CONTAINS PTRS TO THE APPENDAGES  *
*   USED BY IOS.                                                     *
**********************************************************************
         SPACE 3
DEBEOEA  DS    A                        END OF EXTENT APPENDAGE
DEBSIOA  DS    A                        START I/O APPENDAGE
DEBPCIA  DS    A                        PROGRAM CONTROLLED INTERRUPT
DEBCEA   DS    A                        CHANNEL END APPENDAGE
DEBXCEA  DS    A                        ABNORMAL END APPENDAGE
         SPACE 5
*******************************************************
DEBEXT   DSECT
*                                       EXTENTION CONTAINS POINTERS
*                                       TO BE PROTECTED FROM PROBLEM
*                                       PROGRAM
DEBDCBFA DS    A                        DCB FIELD AREA ADDRESS
DEBPUT   DS    0A                       ADDR OF PUT MODULE
DEBGET   DS    0A                       ADDR OF GET MODULE
DEBDISAD DS    A                        ADDR OF PRIV MACRO MODULE
DEBRPSL  DS    0A                       ADDRESS OF RPS SIO MODULE
LOADEXT  EQU   *+4-DEBEXT               LENGTH OF LOAD EXTENSION
DEBWKPT4 DS    A                        SAME AS DCBWKPT4
DEBWKPT5 DS    A                        SAME AS DCBWKPT5
DEBFREED DS    0A                       ADDR OF DYN BUFF MODULE
DEBCEVEC DS    0BL24                    CHAN END VECT TBL CONSISTING OF
DEBCREAD DS    A                        READ
DEBRPSIO DS    0A                       ADDR OF SECONDARY RPS SIO APP
DEBCSETL DS    A                        SETL
DEBSIOA2 DS    0A                       ADDR OF SECONDARY SIO APP
BISAMEXT EQU   *+4-DEBEXT               EXTENSION LENGTH OF BISAM
DEBCWRIT DS    A                        WRITE
DEBCCHK  DS    A                        WRITE VAL. CHECK
DEBCREWT DS    A                        RE-WRITE
DEBCRECK DS    A                        RE-CHECK
DEBABVEC DS    0BL24                    ABNORMAL END VECT TBL CONSISTS
*                                       OF THE FOLLOWING-
DEBAREAD DS    A                        READ
DEBASETL DS    A                        SETL
DEBAWRIT DS    A                        WRITE
DEBACHK  DS    A                        WRITE VAL. CHECK
DEBAREWT DS    A                        RE-WRITE
DEBARECK DS    A                        RE-CHECK
DEBRPSS  DS    A                        SECONDARY SCAN SIO APP
SCANEXT  EQU   *-DEBEXT
W1CEVECT EQU   DEBCEVEC
W1CEREAD EQU   DEBCREAD
W1CESETL EQU   DEBCSETL
W1CEWRIT EQU   DEBCWRIT
W1CECHK  EQU   DEBCCHK
W1CEREWT EQU   DEBCREWT
W1CERECK EQU   DEBCRECK
W1ABVECT EQU   DEBABVEC
W1ABREAD EQU   DEBAREAD
W1ABSETL EQU   DEBASETL
W1ABWRIT EQU   DEBAWRIT
W1ABCHK  EQU   DEBACHK
W1ABREWT EQU   DEBAREWT
W1ABRECK EQU   DEBARECK
&NAME    DSECT
DEBNMSUB DS    0BL1                    = SUBRTNS LOADED BY OPEN
DEBTCBAD DS    A                       TCB POINTER
DEBAMLNG DS    0BL1                    LENGTH OF ACCESS METHOD SECTION
DEBDEBAD DS    A                       POINTER TO NEXT DEB IN TASK
DEBOFLGS DS    0BL1                    DATA SET STATUS FLAGS
*                                      B0.B1 01=DISP=OLD
*                                            10=DISP=MOD
*                                            11=DISP=NEW
*                                      B2 EOV OR EOF
*                                      B3 PARTIAL RELEASE
*                                      B4 DCB MODIFICATION
*                                      B5 SPLIT CYLINDER
*                                      B6 NON STANDARD LABELS
*                                      B7 MAG TAPE- USE REDUCED ERP
DEBIRBAD DS    A                       POINTER TO IRB FOR ASYNC EXIT
DEBOPATB DS    0BL1                    TYPE OF I/O
*                                      B0 SYSABEND OR SYSUDUMP DS
*                                      B1 0 (ALWAYS)
*                                      B2.B3 01=REREAD
*                                            11=LEAVE
*                                      B4.B5.B6.B7 0000=INPUT
*                                                  1111=OUTPUT
*                                                  0011=INOUT
*                                                  0111=OUTIN
*                                                  0001=RDBACK
*                                                  0100=UPDATE
DEBQSCNT DS    BL1                     PURGE QUIESCE COUNT
         DS    H                       RESERVED
DEBNMEXT DS    0BL1                    NUMBER OF EXTENTS CONSTRUCTED
DEBUSRPG DS    A                       AD OF 1ST IOB IN USR PURGE CHAIN
DEBPRIOR DS    0BL1                    DISPATCHING PRIORITY
DEBEDBAD DS    A                       POINTER TO PARMLIST OF PURGE ECB
DEBPROTG DS    0BL.4                   TASK PROTECTION FLAG
DEBDEBID DS    0BL.4'1111'             X'F' TO IDENTIFY AS A DEB
DEBDCBAD DS    A                       POINTER TO CORRESPONDING DCB
DEBEXSCL DS    0BL1                    SCALE FOR SIZE OF DEV SECTION
DEBAPPAD DS    A                       POINTER TO APPENDAGE VECTOR TBL
* ISAM DEPENDENT SECTION   (M=0 EXTENT NUMBER)
DEBNIEE  DS    0BL1                    = INDEX EXTENTS
DEBFIEAD DS    A                       ADDR OF 1ST INDEX EXTENT
DEBNPEE  DS    0BL1                    = PRIME DATA EXTENTS
DEBFPEAD DS    A                       ADDR OF 1ST PRIME DATA EXTENT
DEBNOEE  DS    0BL1                    = OVERFLOW EXTENTS
DEBFOEAD DS    A                       ADDR OF 1ST OVERFLOW EXTENT
DEBRPSID DS    0BL1                    RPS IDENTIFIERS FOR PRI,IX,OVFLO
*                                      B0 PRIME ON RPS
*                                      B1 INDEX ON RPS
*                                      B2 OVFLO ON RPS
*                                      B3 SIO APPENDAGE LOADED
*                                      B4-7 RESERVED
DEBEXPTR DS    A                        POINTER TO DEB EXTENTION
         ORG   &NAME+32
* DIRECT ACCESS DEVICE DEPENDENT SECTION
*        ADDRESS BY DEBAD + (M X (4 X EXSCL))
DEBDVMOD DS    0BL1                    DEVICE MODIFIER (FILE MASK)
DEBUCBAD DS    A                       POINTER TO UCB
DEBBINUM DS    BL2                     BB OF EXTENT
DEBSTRCC DS    BL2                     CYLINDER ADDR FOR START OF EXT
DEBSTRHH DS    BL2                     HEAD NUMBER FOR START OF EXTENT
DEBENDCC DS    BL2                     CYLINDER ADDR FOR END OF EXTENT
DEBENDHH DS    BL2                     HEAD NUMBER FOR END OF EXTENT
DEBNMTRK DS    BL2                     NUMBER OF TRACKS IN EXTENT
*                                      ********************************
         MEND
./ ADD NAME=IGGFRWKA
*%;/*
         MACRO
         IGGFRWKA
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGFRWKA
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = CHANGE LEVEL 01
.*
.*01  DESCRIPTIVE-NAME = FREEDBUF SVRB EXTENDED SAVEAREA(WORKAREA)
.*
.*01  FUNCTION = FORMATS THE SVRB EXTENDED SAVEAREA WHICH IS USED
.*               AS WORKAREA FOR FREEDBUF SVC AND ESTAE
.*
.*01  NOTES = NONE
.*
.*02    DEPENDENCIES = NA
.*
.*02    PERFORMANCE = NA
.*
.*02    RESTRICTIONS = NA
.*
.*02    REGISTER-CONVENTIONS = NA
.*
.*02    PATCH-LABEL = NA
.*
.*01  MODULE-TYPE = MACRO
.*
.*02  MACRO-SIZE =  NA
.*
.*02  EXTERNAL-REFERENCES = NA
.*
.*01INNER-MACROS = NONE
.*
.*01SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*
.*             VS2 RELEASE 2
.*
.**** END OF SPECIFICATIONS ***/
*/* MACCOMP Y-2 SC1D7/SJD48                                          */
*/* MACSTAT Y-2 73122/021160                                         */
*/********************************************************************/
*/*THE FOLLOWING DSECT FORMATS THE WORKAREA USED BY FREEDBUF SVC (57)*/
*/*AND THOSE BDAM MODULES TO WHICH FREEDBUF PASSES CONTROL.  THIS    */
*/*WORKAREA IS LOCATED IN THE SVRB EXTENDED SAVEAREA AND MUST FOLLOW */
*/*THE RB DSECT MACRO CALL.                                          */
*/********************************************************************/
*%GOTO WKAPLS2;
         ORG   RBEXSAVE
WKAREA   DS    0CL48                    SVRB SVC WORKAREA
WKATRAIL DS    BL1                      AUDIT TRAIL BIT SAVED HERE
*  THE FOLLOWING ARE AUDIT TRAIL BITS SET AFTER CERTAIN FUNCTIONS ARE *
*  COMPLETED IN THE FBUFRTNE ROUTINE. THESE BITS WILL BE INTERROGATED *
*  BY THE FREEDBUF ESTAE ROUTINE DURING CLEANUP.                      *
WKAIOBQ  EQU   X'80'                    NEXT IOB HAS BEEN TAKEN FROM
*                                       IOB QUEUE BUT CHAN PGM NOT
*                                       INITIALIZED YET
WKABUFAS EQU   X'40'                    BUFFER HAS BEEN ASSIGNED TO
*                                       NEXT IOB AND CHAN PGM INIT-
*                                       IALIZED BUT EXCP NOT ISSUED
WKAEXCP  EQU   X'20'                    BUFFER HAS BEEN FREED AND
*                                       GIVEN TO NEW IOB FOR WHICH
*                                       EXCP WAS ISSUED
WKABUFQ  EQU   X'10'                    BUFFER HAS BEEN FREED AND
*                                       PUT BACK ON AVAILABLE QUEUE
WKASVKEY DS    BL1                      USER KEY SAVED
WKACLEAN DS    BL1                      RET CODE FROM ESTAE CLEANUP
WKADUMP  DS    BL1                      RET CODE FROM ESTAE SDUMP
WKASVC14 DS    A                        REG14 RETURN FROM SVC 57
WKAREG14 DS    0A                       REG14 RETURN TO FREEDBUF
WKADEBRC DS    BL1                      RET CODE FROM ESTAE DEBCHK
WKADEB   DS    AL3                      DEB ADDR AFTER ESTAE DEBCHK
WKABUFRG DS    A                        BUFFER PTR SAVED FOR ESTAE
WKAIOBRG DS    A                        IOB PTR SAVED FOR ESTAE
WKASAVE  DS    A                        USLBFRQT+1/BCBFRQT SAVED
WKASAVE2 DS    A                        BCBNABFR(4)/BCBBFAVL(1) SAVED
WKAESTAE ESTAE MF=L                     ESTAE PARAMETER LIST (20 BYTES)
WKALENG  EQU   *-WKAREA                 LENGTH OF WORKAREA
         MEND
*%WKAPLS2: ;
*DCL 1 WKAREA CHAR(48) BDY(WORD) DEF(RBEXSAVE),   /* SVRB WORKAREA   */
*      2 WKATRAIL FIXED(8),             /* AUDIT TRAIL BIT SET BY SVC*/
*/* THE FOLLOWING EQUATES ARE AUDIT TRAIL BITS SET AFTER CERTAIN     */
*/* FUNCTIONS ARE COMPLETED IN THE DYN BUF RTN. THESE BITS ARE TESTED*/
*/* BY THE FREEDBUF ESTAE ROUTINE DURING CLEANUP.                    */
*        3 WKAIOBQ BIT(1),              /* NEXT IOB HAS BEEN TAKEN
*                                          FROM IOB QUE BUT CHAN PGM
*                                          NOT INITIALIZED YET       */
*        3 WKABUFAS BIT(1),             /* BUFFER HAS BEEN ASSIGNED
*                                          TO NEXT IOB AND CHAN PGM
*                                          INITIALIZED BUT NO EXCP   */
*        3 WKAEXCP BIT(1),              /* BUFFER HAS BEEN FREED AND
*                                          GIVEN TO NEW IOB FOR WHICH
*                                          EXCP WAS ISSUED           */
*        3 WKABUFQ BIT(1),              /* BUFFER HAS BEEN FREED AND
*                                          PUT BACK ON AVAILABLE QUE */
*        3 *    BIT(3),
*        3 WKALOCK BIT(1),              /* TELLS DEBCHECK NOT TO FREE
*                                       THE LOCAL LOCK BEFORE RETURN */
*      2 WKASVKEY FIXED(8),             /* USER KEY USED BY SVC 57   */
*      2 WKACLEAN FIXED(8),             /* RET CODE FROM ESTAE CLEAN */
*      2 WKADUMP FIXED(8),              /* RET CODE FROM ESTAE SDUMP */
*      2 WKASVC14 FIXED(31),            /* REG14 RETURN FROM SVC 57  */
*      2 WKAREG14 PTR(31),              /* REG14 RET TO SVC OR ESTAE */
*        3 WKADEBRC FIXED(8),           /* ESTAE DEBCHK RETURN CODE  */
*        3 WKADEB PTR(24),              /* KEEPS VALID DEB PTR-ESTAE */
*      2 WKABUFRG PTR(31),              /* BUFFER PTR SAVED FOR ESTAE*/
*      2 WKAIOBRG PTR(31),              /* IOB PTR SAVED FOR ESTAE   */
*      2 WKASAVE FIXED(31),             /* USLBFRQT+1/BCBFRQT SAVED  */
*      2 WKASAVE2 FIXED(31),            /* BCBNABFR(4)/BCBBFAVL(1) SV*/
*      2 WKAESTAE CHAR(20) BDY(WORD),   /* LIST FORM FOR ESTAE MACRO */
*        3 WKATRACE CHAR(8) BDY(WORD),  /* LIST FORM FOR GTRACE MACRO*/
*          4 WKARETRN PTR(31),          /* RET FROM ESTAE CLEANUP RTN*/
*          4 WKASVREG FIXED(31),        /* RTM SAVE ADDR -CLEANUP RTN*/
*        3 WKATRCLG FIXED(8),           /* SAVES GTRACE RECORD LENGTH*/
*        3 *        CHAR(11);           /* UNUSED OUTSIDE ESTAE LIST */
./ ADD NAME=IGGIFF02
         MACRO
&LABEL   IGGIFF02 &DEB,&REG,&DEBD,&UCBD,&LANG
         EJECT
* STATUS -- CHANGE LEVEL 0
*
* FUNCTION -- GAM FORCE CLOSE MACRO
*     PURPOSE IS TO CLEAN UP IF A CLOSE FOR A GRAPHIC DEVICE
*     FAILS SO THAT THE DEVICE CAN BE USED AGAIN
*     1) NOP IF DEB IS NOT A GAM DEB
*     2) IF A GAM DEB
*        A. CLEAN UP THE UCBS FOR THE DEB (ZEROS THE
*        USE COUNT BYTE, GRAPHIC CONTROL BYTE, AND TASK ENTRY
*        BLOCK POINTER)
*        B. FREE THE TASK ENTRY BLOCK (TEB)
*
* ENTRY POINT -- NONE - GENERATED AS INLINE CODE
*
* INPUT
*     EXECUTION
*     1) DEB POINTER
*
*     MACRO OPERANDS (POSITIONAL)
*     1) SYMBOL OR NUMBER OF A REGISTER CONTAINING THE DEB
*        POINTER (2-13)
*     2) SYMBOL OR NUMBER OF A REGISTER THAT CAN BE USED BY
*        THE MACRO AS A WORK REGISTER (2-13)
*     3) Y OR N (N IS THE DEFAULT)
*        Y, THE CALLER'S CODE CONTAINS THE DEB DSECT
*        N, MACRO WILL GENERATE THE DEB DSECT
*     4) Y OR N (N IS THE DEFAULT)
*        Y, THE CALLER'S CODE CONTAINS THE UCB DSECT
*        N, MACRO WILL GENERATE THE UCB DSECT
*     5) PLS OR BAL (BAL IS THE DEFAULT)
*        PLS, THE CALLER IS CODED IN PLS
*        BAL, THE CALLER IS CODED IN BAL
*
* OUTPUT
*     1) CLEANED UP UCB
*     2) TEB FREED
*     3) DEB POINTER IN INPUT REG
*     4) CONTENTS OF REGS 0,1,14,15, WORK REG DESTROYED
*
* EXTERNAL REFERENCES -- FREEMAIN
*
* EXITS -- FALL OUT OF INLINE CODE
*
* TABLES/WORK AREAS -- DEB(READ-ONLY), UCB
*
* ATTRIBUTES -- REFRESHABLE
*
* NOTES
.*    -) THE METHOD OF ADDRESSING THE DEB AND UCB CONTROL
.*       BLOCKS WAS CHOSEN TO ENABLE GENERATION OF THE SAME
.*       CODE IN A BAL, PLS/1, OR PLS/2 PROGRAM, AS MUCH
.*       AS POSSIBLE
*     1) IF ANY DSECT IS GENERATED BY THIS MACRO, THE CALLER
*        MUST REESTABLISH HIS CSECT AFTER THE MACRO
         SPACE 3
* REGISTER EQUATES
IGGR0    EQU   0 -                 REGISTER 0
IGGR1    EQU   1 -                 REGISTER 1
IGGUCB   EQU   1 -                 UCB POINTER
IGGR14   EQU   14 -                REGISTER 14
IGGDEBAP EQU   14 -                DEB APPENDAGE POINTER
IGGDEBIN EQU   14 -                DEB INDEX
IGGTEBUC EQU   14 -                TEB USE COUNT
IGGR15   EQU   15 -                REGISTER 15
IGGTEB   EQU   15 -                TEB POINTER
         SPACE 2
.TSTGDEB ANOP
* IF THE DEB IS NOT A GRAPHIC DEB, CONTROL IS RETURNED TO THE
* CALLER
&LABEL   L     IGGDEBAP,DEBAPPAD-DEBBASIC(&DEB)  GET ADDRESS OF
*                                       DEB APPENDAGE VECTOR
*                                       TABLE
         CLI   DEBAMTYP-DEBAVT(IGGDEBAP),IGGGAM  Q. GAM
         BNE   IGGOUT -            NO, RETURN TO CALLER
         SPACE 3
* CLEAN UP ALL UCB'S ASSOCIATED WITH THE DEB
* FREE UP ANY TEB'S NO LONGER IN USE
         SR    &REG,&REG -         CLEAR REG
         IC    &REG,DEBNMEXT-DEBBASIC(&DEB) GET THE NUMBER OF
*                                       UCB(S) ASSOCIATED WITH
*                                       THE DEB
         SPACE
IGGNXUCB EQU   *                   LOOP THROUGH UCB'S
* THE ADDRESSES OF THE UCB'S TO BE RESET ARE PICKED UP FROM THE
* EXTENTS IN THE GAM DEPENDENT SECTION OF THE DEB
* (THE LOOP STARTS WITH THE LAST EXTENT AND WORKS BACK)
         LR    IGGDEBIN,&REG -     ESTABLISH ADDRESS OF A UCB
         BCTR  IGGDEBIN,IGG0 -          TO BE RESET FROM THE
         SLL   IGGDEBIN,IGGEXSCL -      NEXT EXTENT IN THE
         L     IGGUCB,DEBBASND-DEBBASIC(IGGDEBIN,&DEB)  DEB
         AIF   ('&LANG' EQ 'BAL' OR T'&LANG EQ 'O').BALCODE  IF
.*                                      &LANG IS OMITTED OR BAL
.*                                      GENERATE CODE FOR BAL
         AIF   ('&LANG' NE 'PLS').ERRLANG  IF &LANG IS NOT PLS
.*                                      GENERATE ERROR MSG
.PLSCODE ANOP
         L     IGGTEB,UCBTEB-UCBOBS04+UCBDEV(IGGUCB)  GET TEB ADDRESS
         XC    UCBOPEN-UCBOBS04+UCBDEV(IGG6,IGGUCB),UCBOPEN-UCBOBS04+UC*
               BDEV(IGGUCB) -      CLEAR UCBOPEN, UCBGCB, AND          *
                                        UCBTEB FIELDS
         AGO   .CONT
.BALCODE ANOP
         L     IGGTEB,UCBTEB-UCBOB(IGGUCB)  GET TEB ADDRESS
         XC    UCBOPEN-UCBOB(IGG6,IGGUCB),UCBOPEN-UCBOB(IGGUCB)
*                                       CLEAR UCBOPEN,UCBGCB,
*                                       AND UCBTEB FIELDS
.CONT    ANOP
         LTR   IGGTEB,IGGTEB -     Q. DOES TEB EXIST
         BZ    IGGENDLP -          NO TEB, BRANCH OVER
*                                       FREEMAIN
         L     IGGTEBUC,IGGUSECT(IGGTEB)  GET TEB USE COUNT
         BCTR  IGGTEBUC,IGG0 -     DECREMENT TEB USE COUNT
         LTR   IGGTEBUC,IGGTEBUC - Q. IS USE COUNT ZERO
         BNZ   IGGENDLP -          NO, BRANCH OVER FREEMAIN
IGGFRTEB EQU   *                   ISSUE FREEMAIN FOR TEB
         LR    IGGR1,IGGTEB -      LOAD TEB ADDRESS
         L     IGGR0,IGGTEBLN -    LOAD LENGTH AND SP
         FREEMAIN R,LV=(0),A=(1) - FREE TEB CORE
IGGENDLP EQU   *
         BCT   &REG,IGGNXUCB -     LOOP THROUGH UCBS
         B     IGGOUT -            EXIT
         SPACE 3
* CONSTANTS
         DS    0F
IGGTEBLN DC    AL1(235) -          TEB SUBPOOL
         DC    AL3(32) -           TEB LENGTH
IGG0     EQU   0 -                 ZERO
IGG6     EQU   6 -                 LENGTH OF UCBOPEN+UCBGCB+UCBTEB
IGGGAM   EQU   X'08' -             ACCESS METHOD CODE FOR GAM
IGGEXSCL EQU   X'02' -             EXTENT SCALE VALUE FOR
*                                       GRAPHIC DEB'S
IGGUSECT EQU   16 -                OFFSET OF TEB USE COUNT
         SPACE 2
* EXIT
IGGOUT EQU *
         AIF   (T'&DEBD EQ 'O').DEBD  IF &DEBD IS OMITTED OR N
.*                                      GENERATE DEB DSECT
         AIF   ('&DEBD' EQ 'Y').TSTUCBD  IF &DEBD = Y, DEB DSECT
.*                                      IS IN CALLER
         AIF   ('&DEBD' NE 'N').ERRDEBD  ANYTHING OTHER THAN Y
.*                                      OR N IS AN ERROR
.DEBD    ANOP
         EJECT
IGGDEBD  IEZDEB
.TSTUCBD ANOP
         AIF   (T'&UCBD EQ 'O').UCBD  IF &UCBD IS OMITTED OR N
.*                                      GENERATE UCB DSECT
         AIF   ('&UCBD' EQ 'Y').OUT  IF &UCBD = Y, UCB DSECT
.*                                      IS IN CALLER
         AIF   ('&UCBD' NE 'N').ERRUCBD  ANYTHING OTHER THAN Y
.*                                      OR N IS AN ERROR
.UCBD    ANOP
         EJECT
IGGUCBD  DSECT
         IEFUCBOB
         AGO   .OUT
.* ERROR MESSAGES
.ERRLANG ANOP
         SPACE 3
         MNOTE 1,'INVALID LANGUAGE OPERAND'
         SPACE 3
         AGO   .BALCODE
.ERRDEBD ANOP
         SPACE 3
         MNOTE 1,'INVALID DEB DSECT OPERAND'
         AGO   .TSTUCBD
.ERRUCBD ANOP
         SPACE 3
         MNOTE 1,'INVALID UCB DSECT OPERAND'
.OUT     ANOP
         EJECT
         MEND
./ ADD NAME=IGGIOBD
         MACRO
&NAME    IGGIOBD
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
.*          RELEASE 20 DELETIONS/CHANGES
*    02/06/73          LEVEL=01
&NAME    DSECT
         DS    0F             STANDARD IOB
IOBFLAG1 DS    CL1
IOBFLAG2 DS    CL1
IOBSENSE DS    0XL2
IOBSENS0 DS    XL1                      SENSE BYTE 0
IOBSENS1 DS    XL1                      SENSE BYTE 1
IOBECBAD DS    A
IOBCSW   DS    CL8
IOBSIOCC DS    CL1
IOBSTART DS    AL3
IOBWGHT  DS    CL1
IOBDCBAD  DS    AL3
IOBRESTA DS    A
IOBBCTIN DS    CL2
IOBERRCT DS    CL2
IOBDADAD DS    CL8
*                             BISAM IOB EXTENSION
IOBCCWAD DS    A                        ADDRESS FIRST CHAN PROGRAM
IOBINDCT DS    CL1                      INDICATORS B0 REMOVE CP FROM Q
*                                                  B1 UNSCHEDULED BIT
*                                                  B2 OVFLO RCD IN W
IOBUNSQR DS    CL1                      UNSCHED REASON B0 CP1 OR 2 BUSY
*                                                        B1 NO CP4-5-6
*                                                      B3 WKN IN EFFECT
IOBAPP   DS    CL1                      APPENDAGE CODE 0 READ CP4-5
*                                                      1 WRITE CP4-5
*                                                      2 CP7
*                                                      3 CP1 OR CP2
*                                                      5 CP6
*                                                      6 WRITE CHECK
*                                                 WKN  7 CP1 OR CP2
*                                                      8 CP8
*                                                      9 CP10A
*                                                     10 CP10B
*                                                     11 CP10B
*                                                     12 CP14
*                                                     13 CP14
*                                                     14 CP15
*                                                     15 CP16
*                                                     16 CP16
*                                                     17 CP17
*                                                     18 CP17
*                                                     19 CP17
*                                                     20 CP9/12/11/13A
*                                                     21 CP9/12/11/13B
*                                                     22 CP9C/CP/23W
*                                                     23 CP10A
*                                                     24 X/CP12C/X/13C
IOBASYN  DS    CL1                      ASYNCHRONOUS   0 END CP456 OK
*                                                      1 DO AN EXCP
*                                                      2 END CP7 OK
*                                                      3 END CP1-2 OK
*                                                      4 END CP456 ERR
*                                                      6 END CP7 ERR
*                                                      7 END CP1-2 ERR
*                                                 WKN  8 COMPLETION
*                                                      9 CP14, SETUP 1
*                                                     10 CP14, SETUP 2
*                                                     11 CP14, SETUP 3
*                                                     12 CP14, SETUP 4
*                                                     13 CP14, SETUP 5
*                                                     14 CP14, SETUP 6
IOBCOUNT DS    0CL1                     WRITE CHECK ERROR COUNTER
IOBFCHAD DS    A                        FORWARD CHAIN ADDRESS
IOBBCHAD DS    A                        BACKWARD CHAIN ADDRESS
IOBCCW1  DS    D                        SETSECTOR FOR RPS
IOBCCW2  DS    D                        TIC TO CHANNEL PGM
IOBSECT  EQU   IOBCCW2+4                TEMP STORAGE FOR SECTOR VALUES
         ORG   IOBCCWAD
*                             QISAM IOB EXTENSION
         DS    C              W1EXTEN   APPENDAGE CODE
         DS    C              W1OEXTEN  APPENDAGE CODE
         MEND
./ ADD NAME=IGGLDCP
         MACRO
&LABEL   IGGLDCP &OPTCD=N,&RECFM=F
         GBLB  &CPOPS
         LCLC  &C
         AIF   (&CPOPS).NOCPOPS
&CPOPS   SETB  1
         IGGCPOPS
.NOCPOPS ANOP
&C       SETC  '8'
&LABEL   DS    0D
.*
.*   FUNCTION - MACRO CREATES ALL THE SKELETON CHANNEL PROGRAMS
.*        REQUIRED FOR LOAD MODE, ACCORDING TO THE RECORD FORMAT
.*        AND WHETHER WRITE CHECKING HAS BEEN SPECIFIED.
.*
.*   INPUT -
.*        RECFM = F   (DEFAULT)   FIXED LENGTH RECORDS
.*              = V   VARIABLE LENGTH RECORDS
.*        OPTCD = N   (DEFAULT)   NO WRITE CHECKING
.*              = W   WRITE CHECKING
.*
         SPACE 5
***************************
* CP18 - WRITE DATA RECORDS
***************************
*
CL0      CCW   SETSECT,0,SILI+CC,1 *    SETSECTOR
CL1      CCW   SIDEQ,0,CC,5 *           SEARCH ID EQUAL
CL2      CCW   TIC,0,0,0 *              TIC
CL3      CCW   TIC,0,0,0 *              TIC
CL4      CCW   WCKD,0,CC,8 *            WRITE COUNT KEY DATA
*
* N ENTRIES WILL BE GENERATED, ONE FOR EACH BUFFER
*
CL5      CCW   TIC,0,0,0 *              TIC
*
*
CL6      CCW   WCKD,0,DC,8 *            WRITE COUNT,
CL7      CCW   0,0,DC,0 *               KEY AND
CL8      CCW   0,0,CC,0 *               DATA
         AIF   ('&OPTCD' EQ 'N').CP19
&C       SETC  '9'
*
*  CP18- EXTENSION FOR WRITE CHECK
*
CL9      CCW   RCKD,0,CC+SKIP,0 *       READ COUNT KEY AND DATA
*
.CP19    ANOP
CP18LEN  EQU   (CL&C+8-CL0)             LENGTH OF CP18
         SPACE 5
**************************************************************
* CP19 - PREFORMAT SHARED TRACK AND/OR WRITE CYL OVFL CTRL RCD
**************************************************************
*
CM0      CCW   SETSECT,0,CC+SILI,1 *    SET SECTOR
CM1      CCW   SIDEQ,0,CC,5 *           SEARCH ID EQUAL
CM2      CCW   TIC,0,0,0 *              TIC
CM3      CCW   WD,0,SILI+CC,6 *         WRITE DATA
*
CM4      CCW   SEEKHH,0,CC,6 *          SEEK HEAD
CM40     CCW   NOP,0,CC+SILI,1 *        NOP - SETSECTOR SLOT
*
CM5      CCW   SIDEQ,0,CC,5 *           SEARCH ID EQUAL
CM6      CCW   TIC,0,0,0 *              TIC
*
CM7      CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM8      CCW   0,0,CC,0 *               KEY AND DATA
CM9      CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM10     CCW   0,0,CC,0 *               KEY AND DATA
CM11     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM12     CCW   0,0,CC,0 *               KEY AND DATA
CM13     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM14     CCW   0,0,CC,0 *               KEY AND DATA
CM15     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM16     CCW   0,0,CC,0 *               KEY AND DATA
CM17     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM18     CCW   0,0,CC,0 *               KEY AND DATA
CM19     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM20     CCW   0,0,CC,0 *               KEY AND DATA
CM21     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM22     CCW   0,0,CC,0 *               KEY AND DATA
CM23     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM24     CCW   0,0,CC,0 *               KEY AND DATA
CM25     CCW   WCKD,0,DC,8 *            WRITE COUNT,
CM26     CCW   0,0,00,0 *               KEY AND DATA
*
CM27     DC    X'0000000000000000'
*
CP19LEN  EQU   (CM27+8-CM0)             LENGTH OF CP19
*
         AIF   ('&RECFM' EQ 'V').VAR
         SPACE 5
**********************************
* CP20 - WRITE TRACK INDEX ENTRIES
**********************************
*
CQ0      CCW   SETSECT,0,CC+SILI,1 *    SET SECTOR
CQ1      CCW   SIDEQ,0,CC,5 *           SEARCH ID EQUAL
CQ2      CCW   TIC,0,0,0 *              TIC
CQ3      CCW   WKD,0,DC,0 *             WRITE KEY
CQ4      CCW   0,0,CC,10 *              AND DATA
CQ5      CCW   SIDEQ+MT,0,CC,5 *        SEARCH MULTI TRACK HOME ADDRESS
CQ6      CCW   TIC,0,0,0 *              TIC
CQ7      CCW   WKD,0,DC,0 *             WRITE KEY
CQ8      CCW   0,0,CC,10 *              AND DATA
CQ9      CCW   TIC,0,0,0 *              TIC
CQ10     CCW   SIDEQ+MT,0,CC,5 *        SEARCH ID EQUAL
CQ11     CCW   TIC,0,0,0 *              TIC
CQ12     CCW   WKD,0,CC,0 *             WRITE KEY AND DATA
         AGO   .CP20COM
.VAR     ANOP
         SPACE 5
**********************************
* CP20 - WRITE TRACK INDEX ENTRIES
**********************************
CQ0      CCW   SETSECT,0,SILI+CC,1      SETSECTOR
CQ1      CCW   SIDEQ,0,CC,5             SEARCH ID EQUAL
CQ2      CCW   TIC,0,0,0                TIC
CQ3      CCW   WD,0,CC+SILI,3           WRITE TRK CAPACITY RECORD
CQ4      CCW   TIC,0,SILI,5             TIC CL1,CQ3
CQ5      DC    XL8'00'                 MAX REX LENGTH,CCHHR
CQ6      DC    XL8'00'                 AVAILABLE
CQ7      DC    XL4'00'
         DC    XL4'00000008'
CQ8      DC    XL8'00'                 AVAILABLE
CQ9      DC    XL8'00'                 LST SCD REC RR,CUR CAP
CQ10     DC    XL8'00'                 AVAILABLE
CQ11     DC    XL8'00'                 PTR-CP18,STAT LRECL
CQ12     DC    XL8'00'                 AVAILABLE
***********************************************************************
.CP20COM ANOP
CQ13     CCW   X'1B',0,X'40',6          CTL SEEK HH -  COMMON EXIT
CQ14     CCW   X'08',0,X'20',5          TIC, NOP DURING CLOSE
CQ14A    DC    X'0000000000000000'      MBBCCHHR
*
*
CQ14B    CCW   SETSECT,0,SILI+CC,1      SETSECTOR
CQ15     CCW   SIDEQ,0,CC,5             SEARCH ID EQUAL
CQ16     CCW   TIC,0,0,0                TIC
CQ17     CCW   WCKD,0,DC,8              WRITE COUNT,
CQ18     CCW   0,0,DC,0                 KEY
CQ19     CCW   0,0,CC,10                AND DATA
CQ20     CCW   X'08',0,X'00',0          TIC
CQ21     CCW   WCKD,0,DC,8              WRITE COUNT,
CQ22     CCW   0,0,DC,0                 KEY
CQ23     CCW   0,0,CC,10                AND DATA
CQ24     CCW   TIC,0,0,0                TIC
CQ25     CCW   WCKD,0,CC,0              WRITE COUNT KEY AND DATA
CQ26     CCW   TIC,0,0,0                TIC
CQ27     CCW   SIDEQ+MT,0,CC,5          SEARCH ID EQUAL - MT
CQ28     CCW   TIC,0,0,0                TIC
CQ29     CCW   TIC,0,0,0                TIC
CQ30     DC    X'0000000000000000'      MBBCCHHR
*
CP20LEN  EQU   (CQ30+8-CQ0)             LENGTH OF CP20
*
         AIF   ('&OPTCD' NE 'W').CP21
*
* CP20 - EXTENTION FOR WR CHK
*
CQT0     CCW   NOP,0,SILI+CC,1          NOP/ SETSECTOR
CQT1     CCW   SIDEQ,0,CC,5             SEARCH ID EQUAL
CQT2     CCW   TIC,0,0,0                TIC
CQT3     CCW   RKD,0,CC+SKIP,0 *        READ NORMAL INDEX
CQT4     CCW   SIDEQ+MT,0,CC,5 *        SEARCH FOR OVERFLOW ENTRY
CQT4A    CCW   TIC,0,0,0 *              TIC TO CQT4
CQT5     CCW   RKD,0,CC+SKIP,0 *        READ OVERFLOW INDEX
*   THIS SLOT CHANGED DEPENDING ON WHETHER INACTIVE ENTRY WAS WRITTEN.
CQT5A    CCW   TIC,0,CC+SILI,1 *        TIC TO CQT7 NO INACTIVE
*        CCW   TIC,0,CC+SILI,1          NOP IF INACTIVE ENTRY.
*
CQT5B    CCW   SIDEQ+MT,0,CC,5 *        SEARCH FOR INACTIVE ENTRY
CQT5C    CCW   TIC,0,0,0 *              TIC TO CQT5B
CQT6     CCW   RKD,0,CC+SKIP,0 *        READ INACTIVE ENTRY
CQT7     CCW   SEEKHH,0,CC,6            SEEK HEAD
CQT8     CCW   TIC,0,SILI,5             TIC - NOP DURING CLOSE
*
CP20WRCK EQU   (CQT8+8-CQT0)            LENGTH OF CP20
*                                       *    WRITE EXTENSION
.CP21    ANOP
         SPACE 5
*************************************
* CP21 - WRITE HIGH LEVEL INDEX ENTRY
*************************************
*
CQ39A    CCW   SETSECT,0,SILI+CC,1      SETSECTOR
CQ40     CCW   SIDEQ,0,CC,5             SEARCH ID EQUAL
CQ41     CCW   TIC,0,0,0                TIC
CQ42     CCW   WCKD,0,DC,8              WRITE COUNT,
CQ43     CCW   0,0,DC,0                 KEY
         AIF   ('&OPTCD' EQ 'W').ACQ44
CQ44     CCW   0,0,0,10                 DATA
         AGO   .BCQ44
.ACQ44   ANOP
CQ44     CCW   0,0,CC,10                DATA
.BCQ44   ANOP
*
CP21LEN  EQU   (CQ44+8-CQ39A)           LENGTH OF CP21
*
         AIF   ('&OPTCD' NE 'W').END
*
* CP21 - EXTENTION FOR WR CHK
*
CQ44A    CCW   NOP,0,CC+SILI,1          NOP/SET SECTOR SLOT
CQ45     CCW   SIDEQ,0,CC,5             SEARCH ID EQUAL
CQ46     CCW   TIC,0,0,0                TIC
CQ47     CCW   RCKD,0,SKIP,0            READ COUNT KEY AND DATA
*
CP21WRCK EQU   (CQ47+8-CQ44A)           LENGTH OF CP21 WRITE
*                                       *    CHECK EXTENSION
.END     ANOP
         MEND
./ ADD NAME=IGGLOAD
         MACRO
&NAME    IGGLOAD
*    12/19/72          LEVEL=02
.*         RELEASE 22 DELETIONS/CHANGES
.*         RELEASE 21 DELETIONS/CHANGES
.*         RELEASE 20 DELETIONS/CHANGES
***********************************************************************
* ISLCOMON REFERENCE  C(DCBWKPT1)=A(ISLCOMON)                         *
***********************************************************************
*
&NAME    DSECT
         DS    0D
ISLECBA  DS    A                        FOR CP18 AND CP20
ISLIOBA  DS    CL40
ISLECBB  DS    A                        FOR CP21
ISLIOBB  DS    CL40
ISLECBC  DS    A                        FOR CP19
ISLIOBC  DS    CL40
ISLAREAZ DS    CL88                     FOR CP19
ISLIXLT  DS    CL104                    INDEX LOCATION TABLE
ISLNIRT  DS    CL3                      HHR OF DUMMY TRACK INDEX
ISLHIRT  DS    CL1                      NO INDX ENT ON PRIM DATA TRACK
ISLCBF   DS    F                        BUF CTRL PTR (RCD WITHIN BUF)
ISLBMPR  DS    F                        USED TO BUMP CBF TO NEXT RCD
ISLFBW   DS    F                        NO OF BUFS SCHED TO WRITE
ISLEOB   DS    F                        END OF BUFFR ADR
ISLNCNT  DS    CL8                      NORMAL IX COUNT, CCHHRKDD
ISLOCNT  DS    CL8                      OVFLOW IX COUNT, CCHHRKDD
ISLDCNT  DS    CL8                      DUMMY IX COUNT, CCHHRKDD
ISLNDAT  DS    CL10                     NORMAL IX DATA, MBBCCHHRFP
         DS    CL2
ISLODAT  DS    CL10                     OVFLOW IX DATA, MBBCCHHRFP
         DS    CL1
ISLBUFNO DS    CL1                      DCBBUFNO OR 2
ISLBUFN  DS    F                        ADDR OF SLOT N IN BCT
ISLMVC   DS    F                        COUNT OF EXECUTED MOVE (N-1)
ISLMVCT  DS    F                        NOMBR OF 255 BYTE MOVES (N+1)
ISLVRSAV DS    18F                      ISL SAVE AREA
ISLAPSAV DS    10F                      APPENDAGE SAVE AREA
ISLWRSAV DS    16F                      ISL SAVE AREA FOR CLOSE
*
TSTWK1C  DS    F                        RESERVED AREA
TSTWK2C  DS    F                        RESERVED AREA
TSTWK3C  DS    F
ISLNOENT DS    F                        NO ENTRIES REMAINING ON TRACK
ISLOFFST DS    F                        SIZE OF WR CKD INSTR IN BYTES
ISLD     DS    F                        DISPLACEMENT FROM CP18 START
ISLFSTBF DS    F                        ADDR OF 1ST SCHED BUF (REL)
ISLLSTBF DS    F                        ADDR OF LAST SCHED BUF (REL)
ISLCCFAD DS    F                        ADDR OF CC FLAG IN CP18
ISLKEYAD DS    F                        ADDR OF KEY OF LAST RCD ON TRK
*
CL1AD    DS    0F                       ADDR OF CP18 SKELETON (OPEN)
ISLF8AD  DS    F                        ADDR OF PUT ISLF800 (CLOSE)
CM1AD    DS    0F                       ADDR OF CP19 SKELETON (OPEN)
ISLFXAD  DS    F                        ADDR OF PJT ISLFY01 (CLOSE)
CQ1AD    DS    0F                       ADDR OF CP20 SKELETON (OPEN)
ISLFYAD  DS    F                        ADDR OF PUT ADDR OF PUT ISLFZ01
CQT1AD   DS    0F                       ADDR CP20 WC SKELETON (OPEN)
ISLFZAD  DS    F                        ADDR OF PUT ISLPA01 (CLOSE)
CQ40AD   DS    0F                       ADDR OF CP21 SKELETON (OPEN)
ISLPAAD  DS    F                        ADDR OF APP ISLPA01 (CLOSE)
CQ45AD   DS    0F                       ADDR CP21 WC SKELETON (OPEN)
ISLF1AD  DS    F                        ADDR OF APP ISLF110 (CLOSE)
* ISLVPTRS REFERENCE  C(DCBWKPT6)=A(ISLVPTRS)
*
ISLVPTRS EQU   *
ISLVPTR1 DS    A                        A(AREA Y)
ISLVPTR2 DS    A                        A(KEYSAVE)
ISLVPTR3 DS    A                        A(IOBBCT) BUF CTRL TBL ADR
ISLVPTR4 DS    A                        A(CP18)
ISLVPTR5 DS    A                        A(CP19)
ISLVPTR6 DS    A                        A(CP20)
ISLVPTR7 DS    A                        A(CP21)
ISLVPTR8 DS    A                        SIZE OF ISLCOMON AREA
ISLVPTR9 DS    A                        SIZE OF CHAN PROG AREA
ISLVPTRA DS    A                        A(TRACK INDEX SAVE AREA)
*                                       BIT 0--FULL TRK INDX WRITE
*                                       BIT 1--SUCCESSFUL GETMAIN
ISLVPTRB DS    A                        A(CP20B)--FULL TRK INDX WR
ISLVPTRC DS    A                        A(CP20C)--FULL TRK INDX WR
ISLFXWK1 DS    F                        WORK AREA
ISLFXWK2 DS    F                        WORK AREA
ISLF9WK1 DS    F                        WORK AREA
*
ISLIGAP  DS    H                        NON LAST RCD OVHD
ISLLGAP  DS    H                        LAST RCD OVHD
ISLRPSSS DS    F                        SECTORS FOR CP18,19,20,21
ISLCSIZE EQU   *-&NAME                  SIZE OF COMMON WORK AREA
         MEND
./ ADD NAME=IGGMCDCL
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMCDCL                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG COMMON DECLARATIONS            */
 /*                                                                  */
 /*   FUNCTION = CONTAINS THE COMMONLY USED CONTROL BLOCK FORMATS,   */
 /*              CONSTANTS, FUNDAMENTAL MAPPINGS, AND INTERFACE      */
 /*              MACROS FOR VSAM CATALOG MANAGEMENT PROCESSING.      */
 /*                                                                  */
 /*   INCLUDED MACROS = IGGMCTRC      IKJTCB       IEZCTGWA          */
 /*                     IGGCCA        IFGACB       IEZCTGVL          */
 /*                     IEZCTGPL      AMCBS        IEZCTGCV          */
 /*                     IEZCTGFL      IGGCAXWA                       */
 /*                     CVT           IEZCTGFV                       */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY A BASE FOR SOME STRUCTURES */
 /*                                                                  */
* /* MACSTAT Y-2 74218/ZA00964                              @ZA00964*/
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 17 JAN 75                        @Y30SSPJ*/
 /*                                                                  */
 /********************************************************************/
 % EXECPARM:
           MACRO;                   /* SETS MACRO VARIABLES IN       */
                                    /* ACCORDANCE WITH EXEC STMT     */
                                    /* MACPARM VALUES                */
           DCL SYSTEM CHAR EXT ;    /* TYPE OF SYSTEM INDICATOR      */
           IF MACPARM = 'DOS'       /* COMPILE FOR DOS SYSTEM?       */
             THEN SYSTEM = 'DOS';   /* YES - INDICATE DOS            */
             ELSE SYSTEM = 'AOS';   /* NO  - DEFAULT TO AOS          */
 % END;
           %DCL SYSTEM CHAR EXT;    /* TYPE OF SYSTEM INDICATOR      */
           ?EXECPARM;
 /********************************************************************/
 /*                    DECLARATION  OF  CONSTANTS                    */
 /********************************************************************/
    DECLARE
      ON       BIT(1)    CONSTANT('1'B), /* ON - A '1' BIT           */
      OFF      BIT(1)    CONSTANT('0'B), /* OFF - A '0' BIT          */
      TRUEGC   BIT(8)    CONSTANT('3F'X), /* TO GET TRUE GROUP CODE  */
      LOWKEYTY BIT(8)    CONSTANT('00'X), /* LOW KEY TYPE            */
      CATEXTID CHAR(1)   CONSTANT('E'), /* CATALOG EXTENSION RECRD ID*/
      VOLEXTID CHAR(1)   CONSTANT('W'), /* VOLUME EXTENSION RECRD ID */
      VOLGOPLN FIXED(31) CONSTANT(6), /* VOLUME GOP LENGTH           */
      CATGOPLN FIXED(31) CONSTANT(5), /* CATALOG GOP LENGTH          */
      VOLSNLN  FIXED(31) CONSTANT(2), /* VOLUME SEQUENCE NO. LENGTH  */
      CATSNLN  FIXED(31) CONSTANT(1), /* CATALOG SEQUENCE NO. LENGTH */
      PSWDGC   FIXED(31) CONSTANT(4), /* SECURITY GROUP CODE         */
      K256     FIXED(31) CONSTANT(256),/* CONSTANT OF 256    @Y30SSPJ*/
      IGNOREIT FIXED(31) CONSTANT(0),  /* CLEAR ERROR CODE   @Y30SSPJ*/
      NOGETMSE FIXED(31) CONSTANT(0),  /* NO GETMAIN ERROR CODE
                                                             @Y30SSPJ*/
      VSRELID1 PTR(8) CONSTANT(0),  /* VSAM REL 1 ID         @Y30SSPJ*/
      VSRELID2 PTR(8) CONSTANT(1),  /* VSAM REL 2 ID         @Y30SSPJ*/
      CURELID  PTR(8) CONSTANT(1),  /* CURRENT VSAM REL ID   @Y30SSPJ*/
      SSUBPOOL FIXED(8) CONSTANT(241), /* SYSTEM SUBPOOL NO. @Y30SSDW*/
      FSUBPOOL FIXED(8) CONSTANT(229), /* FETCH PROTECTED SP @ZA29164*/
      USUBPOOL FIXED(8) CONSTANT(252),/* USER SUBPOOL NUMBER @Y30SSDW*/
      SASIZ    FIXED(31) CONSTANT(12); /* SAVE AREA SIZE             */
 /********************************************************************/
 /*                   DECLARATION  OF  REGISTERS                     */
 /********************************************************************/
    DECLARE                         /* GENERAL REGISTERS             */
      (RP0 REG(0),                  /* PARAMETER REG 0               */
       RP1 REG(1),                  /* PARAMETER REG 1               */
       WKR2 REG(2),                 /* WORK REGISTER                 */
       WKR3 REG(3),                 /* WORK REGISTER                 */
       WKR4 REG(4),                 /* WORK REGISTER                 */
       RSAVE REG(13),               /* SAVE AREA REGISTER 13         */
       RET   REG(14),               /* RETURN REGISTER               */
       RGO   REG(15)) PTR(31);      /* ENTRY POINT REGISTER          */
 /********************************************************************/
 /*                   DECLARATION  OF  REGISTERS                     */
 /********************************************************************/
    DECLARE                         /* GENERAL REGISTERS             */
      (RZERO REG(0),                /* GR 0 FOR GETMAIN USAGE        */
       RWA  REG(2),                 /* GR 2 POINTS TO WORK AREA      */
       RNDX REG(3),                 /* GR 3 FOR INDEX                */
       RFLD REG(4),                 /* GR 4 POINTS TO FIELD          */
       RWK1 REG(6),                 /* GR 6 IS WORK REGISTER         */
       RWK2 REG(7),                 /* GR 7 IS WORK REGISTER         */
       RWK3 REG(8),                 /* GR 8 IS WORK REGISTER         */
       RWK4 REG(9)) PTR(31);        /* GR 9 IS WORK REGISTER         */
 /********************************************************************/
 /*                   DECLARATION  OF  REGISTERS                     */
 /********************************************************************/
    DECLARE                         /* GENERAL REGISTERS             */
      R0  REG(0)  PTR(31),          /* STANDARD REGISTER             */
      R1  REG(1)  PTR(31),          /* STANDARD REGISTER             */
      R2  REG(2)  PTR(31) RSTD,     /* LOCAL WORK REGISTER           */
      R3  REG(3)  PTR(31) RSTD,     /* LOCAL WORK REGISTER           */
      R4  REG(4)  PTR(31) RSTD,     /* LOCAL WORK REGISTER           */
      R5  REG(5)  PTR(31),          /* WORK REGISTER                 */
      R6  REG(6)  PTR(31),          /* WORK REGISTER                 */
      R7  REG(7)  PTR(31),          /* WORK REGISTER                 */
      R8  REG(8)  PTR(31),          /* WORK REGISTER                 */
      R9  REG(9)  PTR(31),          /* WORK REGISTER                 */
      R10 REG(10) PTR(31),          /* WORK REGISTER                 */
      R11 REG(11) PTR(31) RSTD,     /* CCA BASE REGISTER             */
      R12 REG(12) PTR(31) RSTD,     /* ASSEMBLER CODE BASE REGISTER  */
      R13 REG(13) PTR(31),          /* SAVE AREA REGISTER            */
      R14 REG(14) PTR(31),          /* RETURN REGISTER               */
      R15 REG(15) PTR(31);          /* ENTRY POINT REGISTER          */
 @EJECT;
 %INCLUDE SYSLIB(IGGMCTRC);         /* CATALOG RETURN CODES          */
 @EJECT;
 %CCAPTR   = 'R11';                 /* NEW CCA BASE VARIABLE         */
 %INCLUDE SYSLIB(IGGCCA);           /* CATALOG COMMUNICATIONS AREA   */
 %DCL IGGMODID CHAR EXT;            /* GLOBAL MODULE ID      @Y30SSPJ*/
 @EJECT;
 %CTGPLPTR = 'CCACPL';              /* NEW IEZCTGPL BASE             */
 %INCLUDE SYSLIB(IEZCTGPL);         /* CATALOG PARAMETER LIST        */
 @EJECT;
 %CTGFLPTR = 'CCAFLPT';             /* TEMPORARY IEZCTGFL BASE       */
 %INCLUDE SYSLIB(IEZCTGFL);         /* FIELD PARAMETER LIST          */
 @EJECT;
 /********************************************************************/
 /*                  USER  WORKAREA  DECLARATION                     */
 /********************************************************************/
    DECLARE
      1 USERWKA  BASED(CTGWKA),     /* USER WORK AREA                */
        2 WKALEN1  FIXED(15),       /* LENGTH OF USER WORK AREA      */
        2 WKALEN2  FIXED(15),       /* REQUIRED LENGTH FOR USER AREA */
        2 WKA      CHAR(0),         /* SPACE FOR RETRIEVED INFO      */
          3 ENTNAMES(*),            /* ENTRYNAME SET ARRAY           */
            4 ENTNAMET CHAR(1),     /* ENTRYNAME TYPE CODE           */
            4 ENTNAMEV CHAR(44);    /* ENTRYNAME VALUE               */
    DCL CTGVLDSP FIXED(15) BASED(ADDR(CTGFLDGC)); /* PARTIAL EXTRACT */
 /********************************************************************/
 /*                DECLARATION  OF  FIELD  NAME                      */
 /********************************************************************/
    DECLARE FIELDNM CHAR(8) BASED(CTGFLDNM); /* FIELD NAME           */
 /********************************************************************/
 /*      CATALOG  FIELD  DICTIONARY  INFORMATION  DECLARATION        */
 /********************************************************************/
    DECLARE
      1 DICTENT BASED(ADDR(CTGFLDWA)), /* DICTIONARY ENTRY           */
        2 DICTFLGS BIT(8),          /* FIELD FLAGS                   */
          3 DICTVAR  BIT(1),        /* VARIABLE OR FIXED             */
          3 DICTREP  BIT(1),        /* REPEATING OR NON-REPEATING    */
          3 DICTCOMB BIT(1),        /* COMBINATION/SPECIAL OR NOT    */
          3 DICTFLG  BIT(1),        /* FLAG FIELD OR NOT             */
          3 DICTMV   BIT(1),        /* MULTI-VALUED OR NOT           */
          3 DICTSCRA BIT(1),        /* SUPPRESS CRA UPDATES  @Y30SSPJ*/
          3 DICTUPGD BIT(1),        /* UPGRADE ENTRY NAME    @Y30SSPJ*/
          3 *        BIT(1),        /* RESERVED              @Y30SSPJ*/
        2 DICTST   PTR(8),          /* STARTING POINT                */
        2 DICTLC   PTR(8),          /* LENGTH OR COUNT               */
        2 DICTGC   PTR(8);          /* GROUP CODE                    */
    DECLARE
      DTCMBMK BIT(8) CONSTANT('F0'X), /* COMBINATION MASK    @Y30SSPJ*/
                                      /* A FIELD IS A COMBINATION    */
                                      /* FIELD IF DICTFLGS&DTCMBMK = */
                                      /* DTCMB                       */
      /* THE FOLLOWING DICTIONARY ENTRY FLAGS ARE USED TO IDENTIFY   */
      /*   SPECIAL FIELD NAMES                                       */
      DTCMB   BIT(8) CONSTANT('20'X), /* COMBINATION FIELD NAME      */
      DTSRR   BIT(8) CONSTANT('60'X), /* RELREPNO, REPNO FIELD NAME  */
      DTSTR   BIT(8) CONSTANT('E8'X), /* TRBAEXT FIELD NAME          */
      DTSCC   BIT(8) CONSTANT('60'X); /* CATACB, CNTREPNO, GENDSP    */
                                      /* FIELD NAMES                 */
    /* THE FOLLOWING DICTIONARY ENTRY VALUES ARE USED TO IDENTIFY    */
    /*    SPECIFIC SPECIAL FIELD NAMES                               */
    DECLARE
      DTREL   BIT(8) CONSTANT('03'X), /* RELREPNO - CTGFLDWA(2)      */
      DTREP   BIT(8) CONSTANT('04'X), /* REPNO    - CTGFLDWA(2)      */
      DTCNT   BIT(8) CONSTANT('02'X), /* CNTREPNO - CTGFLDWA(2)      */
      DTCAT   BIT(8) CONSTANT('01'X), /* CATACB   - CTGFLDWA(2)      */
      DTGDP   BIT(8) CONSTANT('05'X); /* GENDSP   - CTGFLDWA(2)      */
 /********************************************************************/
 /*      CATALOG  FIELD  DICTIONARY  INFORMATION  DECLARATION        */
 /********************************************************************/
    DECLARE
      1 DIC2ENT BASED(ADDR(CCADICT)), /* DICTIONARY ENTRY            */
        2 DIC2FLGS BIT(8),          /* FIELD FLAGS                   */
          3 DIC2VAR  BIT(1),        /* VARIABLE OR FIXED             */
          3 DIC2REP  BIT(1),        /* REPEATING OR NON-REPEATING    */
          3 DIC2COMB BIT(1),        /* COMB/SPECIAL OR NOT           */
          3 DIC2FLG  BIT(1),        /* FLAG FIELD OR NOT             */
          3 DIC2MV   BIT(1),        /* MULTI-VALUED OR NOT           */
          3 DIC2SCRA BIT(1),        /* SUPPRESS CRA UPDATES  @Y30SSPJ*/
          3 DIC2UPGD BIT(1),        /* UPGRADE ENTRY NAME    @Y30SSPJ*/
          3 *        BIT(1),        /* RESERVED              @Y30SSPJ*/
        2 DIC2ST   PTR(8),          /* STARTING POINT                */
        2 DIC2LC   PTR(8),          /* LENGTH OR COUNT               */
        2 DIC2GC   PTR(8);          /* GROUP CODE                    */
 /********************************************************************/
 /*              CATALOG  ENTRY  POINTERS  DECLARATION               */
 /********************************************************************/
    DECLARE
      1 CCARAB BASED(CCAURAB),      /* CATALOG RAB POINTERS          */
        2 CCARABFL PTR(8),          /* RAB FLAGS                     */
          3 CCARBUR BIT(1),         /* RAB IN-USE MODIFY, EXTRACT    */
          3 CCARBU1 BIT(1),         /* RAB IN-USE TESTS              */
          3 CCARBU2 BIT(1),         /* RAB IN-USE TESTS              */
          3 CCARBWR BIT(1),         /* WRITE IT BEFORE READ          */
          3 CCARBPA BIT(1),         /* PUT-ADD WRITE                 */
          3 *       BIT(2),         /* RESERVED                      */
          3 CCARBUPD BIT(1),        /* UPDATE BUFFER NOT REUSED      */
        2 CCARABRI PTR(8),          /* LAST ASSIGNED RPL INDEX       */
        2 * CHAR(2),                /* RESERVED                      */
        2 CCACPE1 PTR(31),          /* START ENTRY RECORD PTR        */
        2 CCACPE2 PTR(31),          /* PTR TO REPEATING FIELD        */
                                    /* CONTROL INFORMATION           */
        2 CCACPE3 PTR(31),          /* PTR TO FIRST GROUP OCCURRENCE */
        2 CCACPE4 PTR(31);          /* PTR TO END OF RECORD ENTRY    */
 /********************************************************************/
 /*             GROUP  OCCURRENCE  POINTER  DECLARATION              */
 /********************************************************************/
    DECLARE
      1 CATGOPT BASED(CCACPE5),     /* GROUP OCCURRENCE POINTER      */
        2 CATGOCI CHAR(3),          /* CI NUMBER OR                  */
          3 CATGOFLG BIT(8),        /* GROUP OCCURRENCE FLAG         */
            4 *      BIT(8),        /* RESERVED                      */
          3 CATGODSP FIXED(15)      /* DISPLACEMENT TO GROUP         */
                     BDY(BYTE),     /*   OCCURRENCE                  */
        2 CATGOGC1 PTR(8),          /* GROUP CODE INFORMATION        */
          3 CATGOEXT BIT(1),        /* GROUP OCCURRENCE OUTSIDE RECD */
          3 CATGODEL BIT(1),        /* DELETED GROUP OCCURRENCE PTR  */
          3 CATGOGC  BIT(6),        /* TRUE GROUP CODE               */
        2 CATGOSEQ PTR(8);          /* (HIGH) SEQUENCE NUMBER        */
 /********************************************************************/
 /*       DECLARATION  OF  VARIABLE  LENGTH  SEQUENCE  NUMBER        */
 /********************************************************************/
    DECLARE CATSN CHAR(2) BASED(ADDR(CATGOSEQ)); /* SEQUENCE NUMBER  */
 /********************************************************************/
 /*        DECLARATION  OF  CATALOG  RECORD  KEY  INFORMATION        */
 /********************************************************************/
    DECLARE
      1 CATRCD   BASED(CCACPE1),    /* CATALOG RECORD                */
        2 RCDKEYTY CHAR(1),         /* KEY TYPE                      */
        2 RCDCINO  PTR(24),         /* RECORD CI NUMBER              */
        2 RCDRELID PTR(8),          /* RELEASE INDICATOR     @Y30SSPJ*/
        2 RCDCRAVL CHAR(6),         /* CRA VOLUME SERIAL     @Y30SSPJ*/
        2 RCDCRACI PTR(24) BDY(BYTE), /* CRA CI NUMBER       @Y30SSPJ*/
        2 RCDCRADT CHAR(4),         /* CRA DEVICE TYPE       @Y30SSPJ*/
        2 RCDRACTS CHAR(4),         /* CRA CREATION TIME STAMP
                                                             @Y30SSSB*/
        2 RCDDICTS CHAR(4),         /* D/I IDENTIFIER TIME STAMP
                                                             @Y30SSSB*/
        2 *        CHAR(18),        /* RESERVED              @Y30SSSB*/
        2 RCDID    CHAR(1),         /* RECORD ID                     */
        2 RCDSIZ   FIXED(15) BDY(BYTE), /* RECORD SIZE               */
        2 NREPCV   PTR(8),          /* COUNT OF VARIABLE FIELDS      */
        2 NREPLF   PTR(8);          /* LENGTH OF FIXED FIELDS        */
 /********************************************************************/
 /*     DECLARATION OF CONTROL INFORMATION FOR REPEATING FIELDS      */
 /********************************************************************/
    DECLARE
      1 REPCNTRL BASED(CCACPE2),    /* CONTROL INFORMATION           */
        2 EXTRCDPT CHAR(5),         /* EXTENSION RECORD POINTER      */
          3 EXTGOCI  CHAR(3),       /* CI NUMBER OF EXTENSION RECORD */
          3 *        CHAR(2),       /* RESERVED                      */
        2 REPCNT   PTR(8),          /* COUNT OF GROUP OCCURRENCE PTRS*/
        2 REPGOPT(*) CHAR(5);       /* VARIABLE NUMBER OF GROUP      */
                                    /*   OCCURRENCE POINTERS         */
 /********************************************************************/
 /*             DECLARATION  OF  VARIABLE  LENGTH  FIELD             */
 /********************************************************************/
    DECLARE
      1 VARFIELD BASED(CCACPE7),    /* VARIABLE FIELD                */
        2 VARLEN  FIXED(15) BDY(BYTE), /* LENGTH OF FIELD            */
        2 VARINFO CHAR(512);        /* FIELD INFORMATION             */
 /********************************************************************/
 /*              DECLARATION  OF  CONTROL  INFORMATION               */
 /********************************************************************/
    DECLARE
      1 CNTRLINF BASED(CCACPE6),    /* CONTROL INFORMATION           */
        2 CNTVAR  PTR(8),           /* COUNT OF VARIABLE FIELDS      */
        2 LENFIX  PTR(8);           /* LENGTH OF FIXED FIELDS        */
 @EJECT;
 /********************************************************************/
 /*               DECLARATION  OF  CVT  BASE  POINTER                */
 /********************************************************************/
    DECLARE CVTPTR PTR(31) LOCATION(16); /* BASE FOR CVT             */
 %INCLUDE SYSLIB(CVT);              /* COMMUNICATIONS VECTOR TABLE   */
 %DEACT OFF;
 @EJECT;
 /********************************************************************/
 /*             POINTERS  TO  NEXT  AND  CURRENT  TCB'S              */
 /********************************************************************/
    DECLARE
      1 TCBWORDS BASED(CVTTCBP),    /* TCB LIST                      */
        2 NEXTTCB PTR(31),          /* POINTER TO NEXT TCB           */
        2 TCBPTR  PTR(31);          /* POINTER TO CURRENT TCB        */
 %INCLUDE SYSLIB(IKJTCB);           /* TASK CONTROL BLOCK            */
 @EJECT;
 %INCLUDE SYSLIB(IHAPSA);
 @EJECT;
 %INCLUDE SYSLIB(IFGACB);
 RFY IFGACB BASED(CCAACB);          /* ACB BASE IN CCA               */
 @EJECT;
 /********************************************************************/
 /*                    ACCESS  METHOD  FLAGS                         */
 /********************************************************************/
    DECLARE
      1 MCATDSTR PTR(31) BDY(BYTE) DEF(CVTAMFF), /* FLAGS ARE IN CVT */
        2 CVTAMF1 BIT(8),           /* VSAM CVT FLAGS        @Y30SSPJ*/
          3 AMF1OPEN BIT(1),        /* MASTER CATALOG OPEN           */
          3 AMF1NONX BIT(1),        /* MASTER CATALOG NON-EXISTENT   */
          3 * BIT(6),               /* RESERVED                      */
        2 * PTR(24) BDY(BYTE);      /* RESERVED                      */
 %DECLARE MCATOPEN CHAR,            /* MASTER CATALOG OPEN           */
          MCATNONX CHAR,            /* MASTER CATALOG NON-EXISTENT   */
          CBSPTR   CHAR;            /* ADDRESS OF THE AMCBS          */
 %MCATOPEN = 'AMF1OPEN';            /* MASTER CATALOG OPEN           */
 %MCATNONX = 'AMF1NONX';            /* MASTER CATALOG NON-EXISTENT   */
 %CBSPTR = 'CVTCBSP';               /* ADDRESS OF THE AMCBS          */
 @EJECT;
 %INCLUDE SYSLIB(AMCBS);            /* ACCESS METHOD CNTRL BLK STRUC */
 @EJECT;
 /********************************************************************/
 /*              D U M M Y     D E C L A R A T I O N S               */
 /********************************************************************/
    DECLARE CI CHAR(3) BASED;       /* DUMMY CI NUMBER               */
    DECLARE TNAM CHAR(44) BASED;    /* DUMMY TRUE NAME               */
 @EJECT;
 %CAXWAPTR = 'ACBUAPTR';
 %INCLUDE SYSLIB(IGGCAXWA);         /* CATALOG AUXILIARY WORKAREA    */
 @EJECT;
 %INCLUDE SYSLIB(IEZCTGFV);         /* FIELD VECTOR TABLE            */
 @EJECT;
 %INCLUDE SYSLIB(IEZCTGWA);         /* SCHEDULER WORK AREA           */
 @EJECT;
 %INCLUDE SYSLIB(IEZCTGVL);         /* CATALOG VOLUME LIST           */
 @EJECT;
 %INCLUDE SYSLIB(IEZCTGCV);         /* CONTROL VOLUME LIST           */
 @EJECT;
 /********************************************************************/
 /*                WORK  AREA  FOR  OS/VS  LOCATE                    */
 /********************************************************************/
    DECLARE
      1 MWA BASED(RWA),             /* WORK AREA FOR OS/VS LOCATE    */
        3 VOLENTCT FIXED(15),       /* VOLUME ENTRY COUNT            */
        3 VLST(20) BDY(HWORD),      /* VOLUME LIST                   */
          5 DEVTYP CHAR(4),         /* DEVICE TYPE                   */
          5 VOLSER CHAR(6),         /* VOLUME SERIAL NUMBER          */
          5 FSN PTR(16) BDY(BYTE),  /* FILE SEQUENCE NUMBER          */
        3 * CHAR(10),               /* BINARY ZEROS                  */
        3 CVOLIND BDY(BYTE),        /* CAN BE DEVICE TYPE            */
          5 TTR1 CHAR(3),           /* TTR - NEXT BLOCK(OVER 20 VOL) */
          5 BIN0 BIT(8),            /* BINARY ZEROS                  */
        3 TTR2 CHAR(3),             /* TTR FOR NEXT BLOCK READ       */
        3 CVLSER CHAR(6);           /* VOLUME SERIAL OF REQ CVOL     */
 % CALLSF: MACRO ;                      /*GENERATES LABELED CALLS   */
     DCL IGGMODID EXT;              /* GLOBAL MODULE ID      @Y30SSPJ*/
     DCL IGGBASE2 EXT;              /* SECONDARY BASE REG    @ZA29164*/
     DCL (XMODTBL,XMODTBLB,WARG) CHAR;  /* WORK VARIABLES    @Y30SSPJ*/
     DCL (HIT1,HIT2) FIXED;         /* WORK VARIABLES        @Y30SSPJ*/
     XMODTBL='-SLEN-SLIV-AA;-ACDV-AB;-MCO-AC;-MCO2-TINQ' /*@Y30SSPJ*/
  '-TIDQ-RAOP-AD;-DCME-MEBM-AE;-DELC-EMSG-EMIO-AF;-IORA' /*@Y30SSPJ*/
       '-ISCI-PUPC-PDE-PDEC-PAD-PADC-AOCI-AXCI-RCCR'     /*@Y30SSPJ*/
       '-CCCR-XIO-AG;-SCAT-QNQC-AH;-FDSP-DFM1-AI;-DBDI'  /*@Y30SSPJ*/
       '-AJ;-DCMB-AK;-DTIM-DEF-AL;-DBVC-SLOC-SLEI-SLEL'  /*@Y30SSPJ*/
  '-AM;-DRDA-DSCB-DCCE-PSEM-AN;-DEFB-DEFX-AO;-DCDA-AP;'  /*@Y30SSPJ*/
  '-DEFS-AQ;-SALL-AR;-DCRC-DEFC-AS;-CDVR-ARFS-AT;-SALS'  /*@Y30SSPJ*/
       '-AU;-MOD-UPD-DEL2-SGOP-AV;-ADGO-GNEX-GREL-IGOP'  /*@Y30SSPJ*/
       '-PREC-AW;-ALT2-EXPD-SHNK-MGO-DGO-DGOP-AX;-SCNC'  /*@Y30SSPJ*/
       '-AY;-EXT-LOC-AZ;-GLOC-GDGL-A2;-SC2-GRE-RPLM'     /*@Y30SSPJ*/
       '-RPLF-A3;-DGDS-ERUG-A4;-DELX-DALL-DELB'          /*@Y30SSPJ*/
     '-A5;-DFS2-BJFB-CBPT-CRTC-A6;-VMSC-DEMV-DVMV-DUSC'  /*@Y30SSDW*/
       '-MCRA-DF4T-A7;-DFRS-A8;-CMRR-CCBC-A9;' ;           /*@Y30SSPJ*/
     XMODTBLB='-TSTS-GVAL-GREC-BA;-UPDE-BB;-INIT-SVOL'   /*@Y30SSPJ*/
       '-BC;-ALT-BD;-ALVL-ALEC-ANVV-BE;-SSCR-BF;-DEL'    /*@Y30SSPJ*/
       '-DOPN-DEXA-DLXT-BG;-DEFA-DAVO-BH;-GET-GETC-TNXO' /*@Y30SSPJ*/
       '-UCRS-TXO-BI;-GDSP-BJ;-LSP-LDCS-BK;-DELS-DUCB'   /*@Y30SSPJ*/
       '-DLVM-DLET-BL;-CKAU-BM;-ALVR-VRD-ALMD-ALSV-BN;'  /*@Y30SSPJ*/
       '-RAPA-RAPU-RAG-RAPD-RARC-XRIO-RASC-BO;-SPAC-RET1'/*@Y30SSPJ*/
       '-BP;-LSTC-BQ;-BMR-BR;-XVAL-XEXT-BS;-XMOD-XLT2'   /*@Y30SSPJ*/
       '-XEL2-XDGO-BT;-F4RD-F4WR-F4DQ-BU;-SMFA-SMFF-SMFS'/*@Y30SSPJ*/
       '-SMFL-SMFR-SMFZ-BV;-DEIN-BW;-DSPC-BX;-DRSP-BY;'  /*@Y30SSPJ*/
       '-CONV-GALO-VALI-BZ;'                             /*@Y30SSSG*/
       '-DCNV-ITER-CMKY-DPBI-DCCO-FPDA-B0;'              /*@Y30SSSG*/
       '-UADD-UDEL-B1;-AUPG-B2;'                         /*@Y30SSDW*/
       '-SMF-SMFG-B3;-DCRA-B4;-DEAX-DIAX-DEPT-DIPT'      /*@Y30SSDW*/
       '-DCLS-DUPG-B5;-WTSO-SPSC-INMD-B6;-RUS-B7;-DFBO'  /*@Y30SSPJ*/
       '-DUND-CNBO-B8;-PAIX-PATH-B9;'                    /*@Y30SSDW*/
       '-RAPV-MODI-WCRA-WCAT-DA;' ;                        /*@Y30SSDW*/
     WARG='-'MACLIST(1)'-';     /* SEARCH AGUMENT        @Y30SSPJ*/
     HIT1=INDEX(XMODTBL,WARG);      /* SEARCH TABLE A        @Y30SSPJ*/
     IF HIT1=0 THEN                 /* NAME FOUND TABLE A?   @Y30SSPJ*/
       DO;                          /* NO-NOT FOUND IN TBL A @Y30SSPJ*/
         XMODTBL=XMODTBLB;          /* SET-UP TABLE A WITH B @Y30SSPJ*/
         HIT1=INDEX(XMODTBL,WARG);  /* SEARCH TABLE B        @Y30SSPJ*/
       END;                                                /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     IF HIT1^=0 THEN                /* NAME FOUND TABLES?    @Y30SSPJ*/
       DO;                          /* YES-NAME FOUND        @Y30SSPJ*/
         HIT2=INDEX(XMODTBL(HIT1:LENGTH(XMODTBL)),';')+HIT1-1;
                                    /* SEARCH FOR MOD NAME   @Y30SSPJ*/
         IF IGGMODID(2:3) ^= XMODTBL(HIT2-2:HIT2-1) THEN
           DO;                                             /*@Y30SSPJ*/
             ANS ('/') SKIP COL(MACCOL);                   /*@Y30SSPJ*/
             ANS ('*') COL(MACCOL+1);                      /*@Y30SSPJ*/
             ANS(' CALL TO MODULE IGG0CL'                /*@Y30SSPJ*/
                       XMODTBL(HIT2-2:HIT2-1)  ' ')
                         COL(MACCOL+2);                    /*@Y30SSPJ*/
             ANS('*') COL(70);      /*GENERATE COMMENT       @Y30SSPJ*/
             ANS('/') COL(71);      /*GENERATE COMMENT       @Y30SSPJ*/
           END;                                            /*@Y30SSPJ*/
         ELSE;                                             /*@Y30SSPJ*/
       END;                             /*                   @Y30SSPJ*/
     ANS ('Z'  MACINDEX(2:4)  MACLIST(1)  ':') SKIP COL(2);
     IF IGGBASE2 ^= '' THEN         /* BASE REG 2 SPECIFIED? @ZA29164*/
       DO;                          /* YES                   @ZA29164*/
         ANS('DO;') COL(MACCOL);    /*                       @ZA29164*/
         ANS('CALL IGGP'MACLIST(1)';') COL(MACCOL+2);/*  @ZA29164*/
         ANS('GEN(RLDSBREG IGGP'MACLIST(1)');') COL(MACCOL+2);
         ANS('/* RELOAD SECONDARY BASE REG */') COL(37);/*   @ZA29164*/
         ANS('END;') COL(MACCOL);   /*                       @ZA29164*/
       END;                         /*                       @ZA29164*/
     ELSE                           /* NO BASE REG 2         @ZA29164*/
       ANS ('CALL IGGP'  MACLIST(1)  ';') COL(MACCOL); /*@Y30SSPJ*/
     ANS (' ') SKIP COL(MACCOL+LENGTH(MACLIST)+7);         /*@Y30SSPJ*/
 % END ;
 % CATPROB:                         /* PROBLEM DETERMINATION @Y30SSPJ*/
     MACRO KEYS(MODID,ECD,RCD);     /* MACRO                 @Y30SSPJ*/
     DCL IGGMODID CHAR EXT;         /* EBCDIC MODULE ID      @Y30SSPJ*/
     DCL (ERROR,REASON,ERRCOM) CHAR;/* WORK VARIABLES        @Y30SSPJ*/
     DCL (RSNTBL,RNUM,CARG) CHAR;   /* WORK VARIABLES        @Y30SSPJ*/
     DCL (HIT1,HIT2,RCODE) FIXED;   /* WORK VARIABLES        @Y30SSPJ*/
     RCODE = 0;                     /* INTERNAL RETURN CODE  @Y30SSPJ*/
     RNUM = '0,1,2,3,4,5,6,7,8,9,'; /* NUMERIC SEARCH TABLE  @Y30SSPJ*/
     RSNTBL = '0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,'
              '30,32,34,36,38,40,42,44,46,48,50,52,54,' 
              '56,58,60,62,64,66,68,70,72,74,76,78,80,' 
              '82,84,86,88,90,92,94,96,98,100,102,104,' 
              '106,108,110,112,114,116,118,120,122,124,'
              '126,' ;              /* REASON SEARCH TABLE   @Y30SSPJ*/
     IF MODID(1) = '*' THEN         /* MODULE ID ONLY?       @Y30SSPJ*/
       DO;                          /* YES-MODULE ID ONLY    @Y30SSPJ*/
         ANS('/') SKIP COL(MACCOL);                        /*@Y30SSPJ*/
         ANS('*') COL(MACCOL+1);                           /*@Y30SSPJ*/
         ANS(' SET CCAMODID='  IGGMODID 
          ', CCAREASN=RSN0, CCARETRN=RCS ' ) COL(MACCOL+2);/*@Y30SSPJ*/
         ANS('*') COL(70);                                 /*@Y30SSPJ*/
         ANS('/') COL(71);                                 /*@Y30SSPJ*/
         ANS('CCAPROB=IGGSEGID;') SKIP COL(MACCOL);        /*@Y30SSPJ*/
         ANS(' ') COL(MACCOL+LENGTH(MACKEYS)+8);           /*@Y30SSPJ*/
         RETURN CODE(RCODE);        /* RETURN                @Y30SSPJ*/
       END;                                                /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     ERROR = ECD(1);                /* PICK-UP ERROR CODE    @Y30SSPJ*/
     IF RCD(1) = '' THEN            /*REASON CODE SPECIFIED? @Y30SSPJ*/
       IF MODID(1) ^= 'NO' THEN     /*NO-MODID = NO?         @Y30SSPJ*/
         REASON = '0';              /*DEFAULT REASON         @Y30SSPJ*/
       ELSE;                                               /*@Y30SSPJ*/
     ELSE                           /*YES-REASON SPECIFIED   @Y30SSPJ*/
       REASON = RCD(1);             /*USER SPECIFIED REASON  @Y30SSPJ*/
     IF REASON ^= '' THEN           /*REASON SPECIFIED?      @Y30SSPJ*/
       IF REASON(1:1) ^= '(' THEN   /*YES-IS IT IN A FIELD?  @Y30SSPJ*/
         DO;                        /*NO-NOT IN A FIELD      @Y30SSPJ*/
           CARG = REASON(1:1)','; /*FORM SEARCH ARGUMENT   @Y30SSPJ*/
           HIT1 = INDEX(RNUM,CARG); /*SEARCH FOR NUMERIC     @Y30SSPJ*/
           IF HIT1 = 0 THEN         /*1ST CHAR NUMERIC?      @Y30SSPJ*/
             DO;                    /*NO-INVALID SPECIFIED   @Y30SSPJ*/
               RCODE = 12;          /*SET RETURN CODE        @Y30SSPJ*/
               ERRCOM = '   ***ERROR***   RCD('  REASON 
                 ') IS NOT AN VALID NUMERIC REASON CODE.'; /*@Y30SSPJ*/
               ANS(COMMENT(ERRCOM)) SKIP COL(2);           /*@Y30SSPJ*/
               REASON = '('  REASON  ')';              /*@Y30SSPJ*/
               GO TO BV;            /*BYPASS FURTHER TESTS   @Y30SSPJ*/
             END;                                          /*@Y30SSPJ*/
           ELSE;                                           /*@Y30SSPJ*/
 BU:       HIT2=HIT2+1;             /*REASON CHAR POINTER    @Y30SSPJ*/
           IF REASON(HIT2:HIT2)='0' THEN /*REASON CHAR = 0?  @Y30SSPJ*/
             IF HIT2<LENGTH(REASON)THEN /*FINISHED ?         @Y30SSPJ*/
               GO TO BU;            /*NO-LOOP TIL DONE       @Y30SSPJ*/
             ELSE;                                         /*@Y30SSPJ*/
           ELSE;                                           /*@Y30SSPJ*/
           CARG = REASON(HIT2:LENGTH(REASON))  ',';      /*@Y30SSPJ*/
           HIT1 = INDEX(RSNTBL,CARG); /*SEARCH FOR REASON    @Y30SSPJ*/
           IF HIT1 = 0 THEN         /*VALID REASON CODE?     @Y30SSPJ*/
             DO;                    /*NO-NONE FOUND          @Y30SSPJ*/
               RCODE = 12;          /*SET RETURN CODE        @Y30SSPJ*/
               ERRCOM = '   ***ERROR***   RCD('  REASON 
                 ') IS NOT A VALID REASON CODE.';          /*@Y30SSPJ*/
               ANS(COMMENT(ERRCOM)) SKIP COL(2);           /*@Y30SSPJ*/
               REASON = '('  REASON  ')';              /*@Y30SSPJ*/
               GO TO BV;            /*SKIP FURTHER TESTS     @Y30SSPJ*/
             END;                                          /*@Y30SSPJ*/
           ELSE;                                           /*@Y30SSPJ*/
           REASON = 'RSN'REASON(HIT2:LENGTH(REASON));    /*@Y30SSPJ*/
         END;                                              /*@Y30SSPJ*/
       ELSE;                                               /*@Y30SSPJ*/
     ELSE                           /*NO-NO REASON CODE      @Y30SSPJ*/
       IF ERROR = '' THEN           /*ERROR CODE SPECIFIED?  @Y30SSPJ*/
         IF MODID(1) = 'NO' THEN    /*NO-MODID = NO?         @Y30SSPJ*/
           DO;                      /*YES-DEFAULT TO 0       @Y30SSPJ*/
             ERROR = 'RCS';         /*SET ERROR TO 0         @Y30SSPJ*/
             REASON = 'RSN0';       /*SET REASON TO 0        @Y30SSPJ*/
           END;                                            /*@Y30SSPJ*/
         ELSE;                                             /*@Y30SSPJ*/
       ELSE;                                               /*@Y30SSPJ*/
 BV: IF ERROR ^= 'RCS' THEN         /*REASON NOT RCS?        @Y30SSPJ*/
       IF REASON ^= '' THEN         /*YES-REASON NOT NULL?   @Y30SSPJ*/
         IF REASON(1:1) ^= '(' THEN /*YES-REASON NOT FIELD?  @Y30SSPJ*/
           IF MODID(1) ^= 'NO' THEN /*YES-MODID NOT NO?      @Y30SSPJ*/
             DO;                    /*YES-ALL TRUE           @Y30SSPJ*/
               ANS('/') SKIP COL(MACCOL);                  /*@Y30SSPJ*/
               ANS('*') COL(MACCOL+1);                     /*@Y30SSPJ*/
               ANS(' SET CCAMODID='  IGGMODID 
                 ', CCAREASN='  REASON  ', CCARETRN='
                 ERROR ) COL(MACCOL+2);                    /*@Y30SSPJ*/
               ANS('*') COL(70);                           /*@Y30SSPJ*/
               ANS('/') COL(71);                           /*@Y30SSPJ*/
               ANS('CCAPROB=IGGSEGID+('REASON'*K256)+'ERROR';')
                  COL(MACCOL);                             /*@Y30SSPJ*/
               ANS(' ') COL(MACCOL+LENGTH(MACKEYS)+8);     /*@Y30SSPJ*/
               RETURN CODE(RCODE);  /* RETURN                @Y30SSPJ*/
             END;                                          /*@Y30SSPJ*/
           ELSE;                                           /*@Y30SSPJ*/
         ELSE;                                             /*@Y30SSPJ*/
       ELSE;                                               /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     IF MODID(1) ^= 'NO' THEN       /*MODID NOT NO?          @Y30SSPJ*/
       IF ERROR = 'RCS' THEN        /*YES-ERROR CODE RCS?    @Y30SSPJ*/
         IF REASON(1:1) ^= '(' THEN /*YES-REASON NOT FIELD?  @Y30SSPJ*/
           DO;                      /*YES-ALL TRUE           @Y30SSPJ*/
             ANS(COMMENT(' CLEAR CCAMODID, CCAREASN, AND CCARETRN'))
               COL(MACCOL+2);                              /*@Y30SSPJ*/
             ANS('CCAPROB=IGNOREIT;') SKIP COL(MACCOL);    /*@Y30SSPJ*/
             ANS(' ') COL(MACCOL+LENGTH(MACKEYS)+8);       /*@Y30SSPJ*/
             RETURN CODE(RCODE);    /* RETURN                @Y30SSPJ*/
           END;                                            /*@Y30SSPJ*/
         ELSE;                                             /*@Y30SSPJ*/
       ELSE;                                               /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     ANS('DO;') COL(MACCOL);                               /*@Y30SSPJ*/
     IF MODID(1) ^= 'NO' THEN       /*MODID NOT NO?          @Y30SSPJ*/
       DO;                          /*YES-GENERATE MODULE ID @Y30SSPJ*/
         ANS('CCAMODID='IGGMODID';')SKIP COL(MACCOL+2);/*@Y30SSPJ*/
         ANS(COMMENT('SET MODULE ID')) COL(MACCOL+17);     /*@Y30SSPJ*/
       END;                                                /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     IF REASON ^= '' THEN           /*REASON NOT NULL?       @Y30SSPJ*/
       DO;                          /*YES-GENTERATE REASON   @Y30SSPJ*/
         IF REASON(1:1) = '(' THEN  /*REASON IN A FIELD/REG? @Y30SSPJ*/
           REASON=REASON(2:LENGTH(REASON)-1);/*YES-DEL PAREN @Y30SSPJ*/
         ELSE;                                             /*@Y30SSPJ*/
         ANS('CCAREASN='REASON';') SKIP COL(MACCOL+2); /*@Y30SSPJ*/
         ANS(COMMENT('SET REASON CODE')) COL(MACCOL+LENGTH(REASON)+13);
       END;                                                /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     IF ERROR ^= '' THEN            /*ERROR NOT NULL?        @Y30SSPJ*/
       DO;                          /*YES-GENERATE ERROR     @Y30SSPJ*/
         ANS('CCARETRN='ERROR';') COL(MACCOL+2);       /*@Y30SSPJ*/
         ANS(COMMENT('SET RETURN CODE')) COL(MACCOL+LENGTH(ERROR)+13);
       END;                                                /*@Y30SSPJ*/
     ELSE;                                                 /*@Y30SSPJ*/
     ANS('END;') SKIP COL(MACCOL);                         /*@Y30SSPJ*/
     ANS(' ') COL(MACCOL+LENGTH(MACKEYS)+8);               /*@Y30SSPJ*/
     RETURN CODE(RCODE);            /* RETURN                @Y30SSPJ*/
 % END;                                                    /*@Y30SSPJ*/
 % SPAT:   MACRO;                       /*SPILL,PUSH & TRACK   Y02020*/
           ANS ('DO;') SKIP COL(MACCOL);                    /* Y02020*/
           ANS ('IF MNATFULL=ON THEN') SKIP COL(MACCOL+2);  /* Y02020*/
           ANS ('/*TRACKING TABLE FULL       */') COL(41);  /* Y02020*/
           ANS ('?CALLSF (ARFS);') SKIP RESCAN COL(MACCOL+2);
                                                            /* Y02020*/
           ANS ('/*YES,CALL SPILL ROUTINE    */') COL(41);  /* Y02020*/
           ANS ('GEN REFS(CCAMNAT)') SKIP COL(MACCOL+2);    /* Y02020*/
              ANS ('(MVC CCAMNAT(248,11),CCAMNAT+8(11));')
                 SKIP COL(MACCOL+5);                        /* Y02020*/
           ANS ('/*PUSH AND TRACK            */') COL(41);
                                                            /* Y02020*/
           ANS ('END;') SKIP COL(MACCOL);                   /* Y02020*/
 % END ;                                                    /* Y02020*/
 % GETREC: ADDREC: UPDREC: DELREC:
           MACRO KEYS(BY,FOR,RAB);
           DCL(IOI1,IOI2,IOI3,IOI4) CHAR;
           DCL OP(1) CHAR;
           OP(1) = MACNAME(1:1);
           ANS ('DO;') SKIP COL(MACCOL);
           IF    OP(1) ^= 'G'
             THEN GOTO IOIJ ;
           IF BY(1) = '*'
            THEN GOTO IOIB ;
           IF BY(1) = 'KEY' THEN
             DO;
     ANS ('CCAF1KEY = ON;     /* TRUE NAME GET*/')        /* @Y30SSDW*/
         SKIP COL(MACCOL);                                /* @Y30SSDW*/
     ANS ('CCAF1KGE = OFF;    /*NOT GET NEXT */')         /* @Y30SSDW*/
         SKIP COL(MACCOL);                                /* @Y30SSDW*/
               GOTO IOIB ;
             END;
           IF BY(1) = 'KGE' THEN
             DO;
     ANS ('CCAF1KEY = ON;     /*TRUE NAME GET*/')         /* @Y30SSDW*/
         SKIP COL(MACCOL);                                /* @Y30SSDW*/
     ANS ('CCAF1KGE = ON;     /* GET NEXT    */')         /* @Y30SSDW*/
         SKIP COL(MACCOL);                                /* @Y30SSDW*/
               GOTO IOIB ;
             END;
     ANS ('CCAF1KEY = OFF;    /*GET BY CI NO. */')        /* @Y30SSDW*/
         SKIP COL(MACCOL);                                /* @Y30SSDW*/
     ANS ('CCAF1KGE = OFF;    /*NOT GET NEXT */')         /* @Y30SSDW*/
         SKIP COL(MACCOL);                                /* @Y30SSDW*/
 IOIB:     IF FOR(1) = '*'
             THEN GOTO IOIJ ;
             IF FOR(1) = 'NUP'
             THEN
     ANS ('CCAF1UP = OFF;     /*NOT GET UPD  */') SKIP COL(MACCOL);
             ELSE
     ANS ('CCAF1UP = ON;      /*GET FOR UPD  */') SKIP COL(MACCOL);
 IOIJ:     IF RAB(1) = ''
             THEN GOTO IOIM ;
           IOI1 = RAB(1) ;
           IF LENGTH(IOI1) = 1
             THEN IOI1 = 'CCARAB'  RAB(1) ;
     ANS ('CCAURAB = ADDR( IOI1 ) ; /*SET RAB PTR*/')
             SKIP RESCAN COL(MACCOL) ;
 IOIM:
           IF OP(1) = 'G' THEN          /* GETREC ?                 */
             DO;                        /* YES                      */
               ANS ('?CALLSF (GET);') SKIP RESCAN COL(MACCOL+2);
               ANS ('/* GET RECORD             */') COL(41);
               GOTO IOIP;
             END;
           IF OP(1) = 'A' THEN          /* ADDREC ?                 */
             DO;                        /* YES                      */
               ANS ('?CALLSF (PAD);') SKIP RESCAN COL(MACCOL+2);
               ANS ('/* PUT-ADD RECORD         */') COL(41);
               GOTO IOIP;
             END;
           IF OP(1) = 'U' THEN          /* UPDREC ?                 */
             DO;                        /* YES                      */
               ANS ('?CALLSF (PUPC);') SKIP RESCAN COL(MACCOL+2);
               ANS ('/* PUT-UPDATE RECORD      */') COL(41);
               GOTO IOIP;
             END;
                                        /* DELREC                   */
           ANS ('?CALLSF (PDE);') SKIP RESCAN COL(MACCOL+2);
           ANS ('/* PUT-DELETE RECORD        */') COL(41);
 IOIP: ANS ('END;') SKIP COL(MACCOL);
 % END ;
 % GETMS: FREEMS:
           MACRO KEYS(CLASS,RFR);                           /* Y02020*/
           DCL (SPL, POOLTYPE) CHAR;    /*SUBPOOL VARIABLES  @Y30SSDW*/
           IF CLASS(1) = 'S' THEN                         /* @Y30SSDW*/
             DO;                                          /* @Y30SSDW*/
               SPL = 'SSUBPOOL';                          /* @Y30SSDW*/
               POOLTYPE = 'SYSTEM SUBPOOL 241';           /* @Y30SSDW*/
             END;                                         /* @Y30SSDW*/
           ELSE;                                          /* @Y30SSDW*/
           IF CLASS(1) = 'U' THEN                         /* @Y30SSDW*/
             DO;                                          /* @Y30SSDW*/
               SPL  = 'USUBPOOL';                         /* @Y30SSDW*/
               POOLTYPE = 'USER SUBPOOL 252';             /* @Y30SSDW*/
             END;                                         /* @Y30SSDW*/
           ELSE;                                          /* @Y30SSDW*/
           IF CLASS(1) = 'F' THEN                         /* @ZA29164*/
             DO;                                          /* @ZA29164*/
               SPL = 'FSUBPOOL';                          /* @ZA29164*/
               POOLTYPE = 'SYSTEM SUBPOOL 229';           /* @ZA29164*/
             END;                                         /* @ZA29164*/
           ELSE;                                          /* @ZA29164*/
           ANS ('R1 = ADDR(CCAMSSPL);') SKIP COL(MACCOL); /* @Y30SSDW*/
           ANS ('/* POINT TO STRG MGMT P.L.  */') COL(41);/* @Y30SSDW*/
           IF SPL ^= '' THEN
             DO;
               ANS ('CCAMNSPL = SPL;') SKIP COL(MACCOL);  /* @Y30SSDW*/
               ANS ('/* STORE SUBPOOL VALUE      */') COL(41);
             END;
           IF MACNAME = 'FREEMS' THEN
             DO;
               IF RFR(1)^='NO' THEN     /*RFR ALLOWED          Y02020*/
                 ANS ('?SPAT;') SKIP RESCAN COL(MACCOL);
                                        /*GEN SPILL,PUSH,TRK   Y02020*/
               ANS ('/') SKIP COL(MACCOL);                /* @Y30SSDW*/
               ANS ('*') COL(MACCOL+1);                   /* @Y30SSDW*/
               ANS (' RELEASE MAIN STORAGE FROM '  POOLTYPE)
                   COL(MACCOL+3);                         /* @Y30SSDW*/
               ANS ('*') COL(70);                         /* @Y30SSDW*/
               ANS ('/') COL(71);                         /* @Y30SSDW*/
               ANS ('GEN(FREEMAIN L,MF=(E,(1))) ;') SKIP COL(MACCOL);
                                                            /* Y02020*/
             END;
           ELSE
             DO;
               ANS ('/') SKIP COL(MACCOL);                /* @Y30SSDW*/
               ANS ('*') COL(MACCOL+1);                   /* @Y30SSDW*/
               ANS (' ALLOCATE MAIN STORAGE FROM '  POOLTYPE)
                   COL(MACCOL+3);                         /* @Y30SSDW*/
               ANS ('*') COL(70);                         /* @Y30SSDW*/
               ANS ('/') COL(71);                         /* @Y30SSDW*/
               ANS ('GEN(GETMAIN LC,MF=(E,(1)));') SKIP COL(MACCOL);
                                                            /* Y02020*/
               ANS ('/* GET MAIN STORAGE SPACE   */') COL(41);
               ANS ('GEN(LR R1,R15);')  SKIP COL(MACCOL);
               ANS ('/* PICK UP RETURN CODE      */') COL(41);
               ANS ('IF R1 ^= NOGETMSE THEN') SKIP COL(MACCOL);
               ANS ('/* CHECK FOR ERROR RETURN   */') COL(41);
               ANS ('?CATPROB ECD(RCINSSWA) RCD(2);')      /*@Y30SSPJ*/
                    SKIP RESCAN COL(MACCOL);               /*@Y30SSPJ*/
               ANS ('/* INSUFFICIENT CORE ERROR  */')      /*@Y30SSPJ*/
                   COL(41);                                /*@Y30SSPJ*/
               ANS(' ') COL(MACCOL+LENGTH(MACKEYS)+6);     /*@Y30SSPJ*/
               IF RFR(1)^='NO' THEN     /*RFR ALLOWED          Y02020*/
                 DO;                                        /* Y02020*/
                   ANS ('ELSE') SKIP COL(MACCOL);           /* Y02020*/
                   ANS ('/* GETMAIN SUCCESSFUL            */')
                       COL(37);                           /* @Y30SSDW*/
                   ANS ('DO;') SKIP COL(MACCOL+2);          /* Y02020*/
                   ANS ('?SPAT;') SKIP RESCAN COL(MACCOL+4);/* Y02020*/
                   IF CLASS(1)='S' THEN /*CLASS S CORE         Y02020*/
                     DO;                                    /* Y02020*/
                       ANS ('MNATSCLS=ON;') SKIP COL(MACCOL+4);
                                                            /* Y02020*/
                       ANS ('/*INDICATE CLASS S CORE     */')
                            COL(41);                        /* Y02020*/
                     END;                                   /* Y02020*/
                   ANS ('END;') SKIP COL(MACCOL+2);         /* Y02020*/
                 END;                                       /* Y02020*/
             END;
 % END;
 % CKADD:
         MACRO KEYS(START,LENG);
         DCL SYSTEM CHAR EXTERNAL;
         DCL (STADD,EDADD) CHAR;
         STADD=START(1);
         EDADD=LENG(1);
 CKN1:   VALC2 = 'V1'  MACINDEX;
         ANS('RFY (R7,R8,R9,R10,R13,R14,R15) RESTRICTED;')  /* Y02020*/
               SKIP COL(MACCOL);                            /* Y02020*/
         ANS('R7=R4;') SKIP COL(MACCOL);                    /* Y02020*/
         ANS('/* SAVE REGISTERS */') COL(41);               /* Y02020*/
         ANS('R8=R11;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('R9=R12;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('R10=R13;') SKIP COL(MACCOL);                  /* Y02020*/
         ANS('GEN REFS(PSALITA,FLC)                         /* Y02020*/
               SETS(R11,R12,R13,R14,R15)                    /* Y02020*/
               SEQFLOW;') SKIP COL(MACCOL);                 /* Y02020*/
         ANS('SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,')      /* Y02020*/
               SKIP COL(10);                                /* Y02020*/
         ANS('X') COL(72);                                  /* Y02020*/
         ANS('RELATED=(''AFTER VALIDITY CHECK ROUTINE'')')  /* Y02020*/
               COL(16);                                     /* Y02020*/
         ANS('@ENDGEN;') SKIP COL(MACCOL);                  /* Y02020*/
         ANS('R11=R8;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('/* RESTORE CCA BASE */') COL(41);             /* Y02020*/
         ANS('R12=R9;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('/* RESTORE MODULE BASE */') COL(41);          /* Y02020*/
         ANS('RFY (R14,R15) UNRESTRICTED;')                 /* Y02020*/
               SKIP COL(MACCOL);                            /* Y02020*/
         ANS('RFY (R1) RESTRICTED;') SKIP COL(MACCOL);      /* Y02020*/
         IF STADD^='R1' THEN ANS('R1=STADD;')               /* Y02020*/
               SKIP COL(MACCOL);                            /* Y02020*/
         ANS('R13=R2;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('R2=STADD+EDADD-1;') SKIP COL(MACCOL);         /* Y02020*/
         ANS('/* ENDING ADDRESS TO CHECK */') COL(41);      /* Y02020*/
         ANS('R4=CCATCB;') SKIP COL(MACCOL);                /* Y02020*/
         ANS('CALL CVT0VL00;') SKIP COL(MACCOL);            /* Y02020*/
         ANS('/* INVOKE VALIDITY CHK RTN */') COL(41);      /* Y02020*/
         ANS('R2=R13;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('RFY (R1) UNRESTRICTED;') SKIP COL(MACCOL);    /* Y02020*/
         ANS('BC (8,VL'MACINDEX');') SKIP COL(MACCOL);  /* Y02020*/
         ANS('/* SKIP IF AREA VALID */') COL(41);           /* Y02020*/
         ANS('?CATPROB ECD(RCBLKVCK) RCD(2);') SKIP COL(MACCOL);
                                        /*USE PROB DET MACRO @Y30SSPJ*/
         ANS('/* SET RETURN CODE */') COL(41);              /* Y02020*/
         ANS('VL'MACINDEX':') SKIP COL(MACCOL);         /* Y02020*/
         ANS('RFY (R14,R15) RESTRICTED;') SKIP COL(MACCOL); /* Y02020*/
         ANS('GEN REFS(PSALITA,FLC)                         /* Y02020*/
               SETS(R11,R12,R13,R14,R15)                    /* Y02020*/
               SEQFLOW;') SKIP COL(MACCOL);                 /* Y02020*/
         ANS('SETLOCK RELEASE,TYPE=LOCAL,') SKIP COL(10);   /* Y02020*/
         ANS('X') COL(72);                                  /* Y02020*/
         ANS('RELATED=(''BEFORE VALIDITY CHECK ROUTINE'')') /* Y02020*/
               COL(16);                                     /* Y02020*/
         ANS('@ENDGEN;') SKIP COL(MACCOL);                  /* Y02020*/
         ANS('R4=R7;') SKIP COL(MACCOL);                    /* Y02020*/
         ANS('/* RESTORE REGISTERS */') COL(41);            /* Y02020*/
         ANS('R11=R8;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('R12=R9;') SKIP COL(MACCOL);                   /* Y02020*/
         ANS('R13=R10;') SKIP COL(MACCOL);                  /* Y02020*/
         ANS('RFY (R13,R14,R15) UNRESTRICTED;')             /* Y02020*/
               SKIP COL(MACCOL);                            /* Y02020*/
         ANS('RFY (R7,R8,R9,R10) UNRSTD;') SKIP COL(MACCOL);
 %END;
 % RECID   ='CCASRID' ;
 % RECKY    = 'CCASRCH' ;
 % VOLKY ='CCASRCH = CCASRCH  && CCASRCH; /*CLEAR SRCH ARG FLD*/
           CCASRCH(1:6)' ;
 % IDCOUNT = 'CCAASCIK' ;
 % INVOKE = 'RFY (R5,R6,R7,R8,R9,R10) RSTD;
             RFY (R5,R6,R7,R8,R9,R10) UNRSTD;
             CALL';

 % CATERR: MACRO KEYS(TYPE,REASON,CCHN,R); /*CATALOG ERROR MACRO    */
           IF R(1)^='' THEN
             DO;
               ANS ('/****************************/') SKIP COL(41);
               ANS ('/'  '*'  R(1) ) SKIP COL(41);
               ANS ('*'  '/') COL(69);
               ANS ('/****************************/') SKIP COL(41);
             END;
           ANS ('DO;') SKIP COL(MACCOL);
           IF TYPE(1)= '' THEN
             GOTO CB;
           IF TYPE(1) ^= '*' THEN
             DO;
               ANS ('CCACD1=' TYPE(1) ';') SKIP COL(MACCOL+2);
               ANS ('/*STORE ERROR TYPE CODE     */') COL(41);
             END;
 CB:       IF REASON(1) = '' THEN
             GOTO CC;
           IF REASON(1) ^= '*' THEN
             DO;
               ANS ('CCACD2=' REASON(1) ';') SKIP COL(MACCOL+2);
               ANS ('/* STORE REASON CODE        */') COL(41);
             END;
 CC:       IF CCHN(1) = 'YES' THEN
             DO;
               ANS ('CCACRRP=128;') SKIP COL(MACCOL+2);
               ANS ('/*INCLUDE CALLER CHN IN MSG */') COL(41);
             END;
           ANS ('?CALLSF (EMSG);') SKIP RESCAN COL(MACCOL+2);
           ANS ('/*ISSUE WTP ERROR MSG       */') COL(41);
           ANS ('END;') SKIP COL(MACCOL);
 % END;

 @LIST ON;
./ ADD NAME=IGGMCMDM
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMCMDM                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG MANAGEMENT COMMONLY-USED       */
 /*                      RECORD STRUCTURES                           */
 /*                                                                  */
 /*   FUNCTION = CONTAINING MACRO FOR MANY COMMON RECORD STRUCTURE   */
 /*              DECLARATIONS USED BY VSAM CATALOG MANAGEMENT        */
 /*              ROUTINES.                                           */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY BASE FOR SOME STRUCTURES   */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 4   (CHANGE FLAG @Z40WSXX)       @Z40WSSG*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 23 MAY 75                        @Z40WSSG*/
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /*        STRUCTURE FOR THE FIXED INFORMATION IN THE RECORDS        */
 /********************************************************************/
    DECLARE
      1 CTGRBASE DEF(NREPLF) POSITION(2), /* BASE FIXED INFO @Y30SSPJ*/
        2 CNAME    CHAR(44),        /* ENTRY NAME                    */
        2 COWNID   CHAR(8),         /* OWNER ID                      */
        2 CCRE     CHAR(3),         /* CREATION DATE                 */
        2 CEXP     CHAR(3),         /* EXPIRATION DATE               */
        2 CATTR    BIT(16),         /* DATA ATTRIBUTES               */
          3 CATTR1  BIT(8),         /*NON-SHARING ATTRIBUTES @Y30SSPJ*/
            4 CSP   BIT(1),         /* SPEED                 @Y30SSPJ*/
            4 CUNIQ BIT(1),         /* UNIQUE DATA SET       @Y30SSPJ*/
            4 CREUSE BIT(1),        /* REUSABLE              @Y30SSPJ*/
            4 CERASE BIT(1),        /* ERASE                 @Y30SSPJ*/
            4 CRECOV BIT(1),        /* RECOVERABLE CATALOG   @Y30SSPJ*/
            4 CINHIB BIT(1),        /* INHIBIT UPDATE        @Y30SSPJ*/
            4 CTEMP  BIT(1),        /* TEMPORARY EXPORT      @Y30SSPJ*/
            4 CTRKOV BIT(1),        /* TRACK OVERFLOW        @Y30SSPJ*/
          3 CATTR2   BIT(8),        /* SHARE OPTIONS                 */
            4 CATTRISH BIT(2),      /* CROSS REGION SHARE OPTIONS    */
            4 CATTRSSH BIT(2),      /* CROSS SYSTEM SHARE OPTIONS    */
            4 *        BIT(2),      /* RESERVED              @Z40WSSG*/
            4 CATTISDS BIT(1),      /* INTERNAL SYSTEM D.S.  @Z40WSSG*/
            4 CNUS     BIT(1),      /* DS NOT REUSABLE       @Y30SSPJ*/
        2 COPEN BIT(8),             /* OPEN INDICATOR                */
          3 COPENDS  BIT(1),        /* OPEN DATA SET                 */
          3 *        BIT(7),        /* RESERVED                      */
        2 CBUF     FIXED(31) BDY(BYTE), /* MINIMUM BUFFER SIZE       */
        2 CSPACPRM CHAR(7),         /* SPACE PARAMETERS              */
          3 CPRIM PTR(24) BDY(BYTE),/* PRIMARY SPACE QUANTITY        */
          3 CSEC  PTR(24) BDY(BYTE),/* SECONDARY SPACE QUANTITY      */
          3 CSORT BIT(8),           /* SPACE OPTIONS                 */
        2 CHIU PTR(32)   BDY(BYTE), /* HI-USED RBA                   */
        2 CHIA PTR(32)   BDY(BYTE), /* HI-ALLOCATED RBA              */
        2 CLRECL PTR(32) BDY(BYTE), /* AVERAGE LOGICAL RECORD SIZE   */
        2 CDOSUINF CHAR(2),         /* DOS USER INFORMATION  @Y30SSPJ*/
        2 CEXT CHAR(8);             /* EXCEPTION EXIT NAME   @Y30SSPJ*/
 /********************************************************************/
 /*     CLUSTER ATTRIBUTES FIELD: CREATED IN VS/2-2.6.  ALL          */
 /*     RELEASE 2 CLUSTERS ARE CREATED WITH THIS FIELD.              */
 /********************************************************************/
    DECLARE
      1 * DEFINED(CATTR1),          /* CATALOG ATTRIBUTES    @Y30SSPJ*/
        2 CCATTR PTR(8),            /* CATALOG ATTRIBUTES    @Y30SSPJ*/
          3 * BIT(8),               /* CATALOG ATTRIBUTES    @Y30SSPJ*/
            4 * BIT(6),             /* RESERVED              @Z40WSSG*/
            4 CSWAPSPC BIT(1),      /* SWAPSPACE             @Z40WSSG*/
            4 CPGSP BIT(1);         /* PAGE SPACE            @Y30SSPJ*/
 /********************************************************************/
 /*         ALTERNATE INDEX AND PATH ATTRIBUTES                      */
 /********************************************************************/
    DECLARE
      1 * DEFINED(CATTR1),          /* PATH/AIX ATTRIBUTES   @Y30SSPJ*/
        2 CRGATTR PTR(8),           /* PATH/AIX ATTRIBUTES   @Y30SSPJ*/
          3 CUPG BIT(1),            /* AIX UPGRADE           @Y30SSPJ*/
            4 CUPD BIT(1),          /* PATH UPDATE           @Y30SSPJ*/
          3 * BIT(7);               /* RESERVED              @Y30SSPJ*/
 /********************************************************************/
 /*        DECLARATION OF CONSTANT VALUES USED IN CMS DEFINE         */
 /********************************************************************/
    DECLARE
       CLNOVARC PTR(8) CONSTANT(0); /* NUMBER OF VARIABLE LENGTH
                                       FIELDS IN CLUSTER ENTRY       */
 /********************************************************************/
 /*        DECLARATION OF COUNT OF CI'S REQUIRED FOR CLUSTER         */
 /********************************************************************/
    DECLARE
       IXCLCICT PTR(8) CONSTANT(3), /* NO. OF CI'S FOR INDEX CLUSTER */
       NXCLCICT PTR(8) CONSTANT(2); /* NO. OF CI'S FOR NON-IND. CLUS */
 /********************************************************************/
 /*                DECLARATION OF MASTER CATALOG NAME                */
 /********************************************************************/
     DECLARE MCATNAME CHAR(44)
         CONSTANT('AMASTCAT                                    ');
 /********************************************************************/
 /*            DECLARATION OF CATALOG ENTRY RECORD AREA              */
 /********************************************************************/
     DECLARE CATRECRD(2) CHAR(256) BASED(CCACPE1);
 /********************************************************************/
 /*           DECLARATION OF ASSOCIATION GROUP OCCURRENCE            */
 /********************************************************************/
    DECLARE
      1 ASGO BASED(ADDR(LENFIX)) POS(2),
        2 ASTYPE PTR(8),            /* TYPE OF ENTRY ASSOCIATED      */
        2 ASCI   PTR(24);           /* CI NO. OF ENTRY ASSOCIATED    */
 /********************************************************************/
 /*           DECLARATION OF GROUP CODE OF ASSOCIATIONS              */
 /********************************************************************/
    DECLARE ASGC PTR(8)CONSTANT(2); /* ASSOCIATION GROUP CODE        */
 /********************************************************************/
 /*      DECLARATION OF ASSOCIATION GROUP CODE SEQUENCE NUMBERS      */
 /********************************************************************/
    DECLARE
      DASQN PTR(8) CONSTANT(1),     /* SEQUENCE NUMBER OF DATA       */
      IXSQN PTR(8) CONSTANT(2);     /* SEQUENCE NUMBER OF INDEX      */
 /********************************************************************/
 /*    DECLARATION OF MINIMUM NUMBER OF ASSOCIATIONS WITH CLUSTER    */
 /********************************************************************/
    DECLARE MINAS PTR(8) CONSTANT(1); /* MIN NO. OF ASSOCIATIONS     */
 /********************************************************************/
 /*            DECLARATION OF PASSWORD GROUP OCCURRENCE              */
 /********************************************************************/
    DECLARE
      1 PASSGO BASED(ADDR(LENFIX))  /* PASSWORD GROUP                */
               POS(2) BDY(WORD),    /* GROUP OCCURRENCE              */
        2 PASSWORD CHAR(32),        /* PASSWORD SET                  */
          3 MASTERPW CHAR(8),       /* MASTER                        */
          3 CIPW     CHAR(8),       /* CONTROL INTERVAL PROCESS      */
          3 UPDATEPW CHAR(8),       /* UPDATE                        */
          3 READPW   CHAR(8),       /* READ                          */
        2 PASSPRMT CHAR(8),         /* PROMPTING CODE NAME           */
        2 PASSATMP FIXED(15),       /* MAXIMUM NUMBER OF ATTEMPTS TO */
                                    /*   GIVE CORRECT PASSWORD       */
        2 USVRMDUL CHAR(8),         /* USER SECURITY VERIFICATON     */
                                    /* MODULE NAME                   */
        2 USERAREC,                 /* USER AUTHORIZATION RECORD     */
          3 USERAREL FIXED(15),     /* LENGTH OF USER AUTH. REC.     */
          3 USERAREV CHAR(256);     /* USER AUTH. REC. AREA          */
 /********************************************************************/
 /*               DEFINITION OF PASSWORD GROUP CODE                  */
 /********************************************************************/
    DECLARE PASSGC PTR(8) CONSTANT(4); /* PASSWORD GROUP CODE        */
 /********************************************************************/
 /*      DEFINITION OF PASSWORD GROUP OCCURRENCE SEQUENCE NUMBER     */
 /********************************************************************/
    DECLARE PASSSQN PTR(8) CONSTANT(1); /* PASSWORD G.O. SEQ.NUMBER  */
 /********************************************************************/
 /*     VOLUME SERIAL NUMBER LIST AS PASSED BY THE CALLER            */
 /********************************************************************/
    DECLARE
      1 USERLIST BASED,             /* VOLUME SERIAL NUMBER LIST     */
         2 LTLENGTH FIXED(15),      /* LENGTH OF VOLUME SERIAL LIST  */
         2 LTENTRY(*) CHAR(8) BDY(HWORD), /* 1 ENTRY PER VOLUME      */
           3 LTRETCOD FIXED(15),    /* FEEDBACK, RETURN CODES        */
             4 LTRETCD1 PTR(8),     /* NORMAL RETURN CODE            */
             4 LTRETCD2 PTR(8),     /* RESERVED                      */
           3 LTVOLSER CHAR(6);      /* VOLUME SERIAL NUMBER          */
 /********************************************************************/
 /*             DECLARATION OF SPACE PARAMETERS FIELDS               */
 /********************************************************************/
    DECLARE
      1 SPACEPRM CHAR(7) BASED,     /* SPACE PARAMETERS              */
         2 SPCPRIMQ PTR(24) BDY(BYTE), /* PRIMARY SPACE QUANTITY     */
         2 SPCSECDQ PTR(24) BDY(BYTE), /* SECONDARY SPACE QUANTITY   */
         2 SPCOPTNS BIT(8),          /* SPACE OPTIONS                */
           3 SPCRQTYP BIT(2),        /* REQUEST TYPE                 */
           3 *        BIT(2),        /* RESERVED                     */
           3 SPCCNTIG BIT(1),        /* CONTIGUOUS SPACE REQUEST     */
           3 SPCMXIGR BIT(1),        /* MAXIMUM CONTIG SPACE REQ     */
           3 SPCALXRQ BIT(1),        /* ALL EXTENTS SPACE REQ        */
           3 SPCROUND BIT(1);        /* ROUND UP TO CYL BOUNDARY     */
 /********************************************************************/
 /*             DECLARATION OF DATA SET ATTRIBUTES FIELD             */
 /********************************************************************/
    DECLARE
      1 CTGDSATR BIT(16) BASED(CTGFLPT), /* DATA SET ATTRIBUTES      */
        2 CTGATR1  BIT(8),          /* NON-SHARING ATTRIBUTES        */
          3 CTGDSSPD BIT(1),        /* SPEED                         */
          3 CTGDSUNQ BIT(1),        /* UNIQUE                        */
          3 CTGDSREU BIT(1),        /* REUSABLE              @Y30SSPJ*/
          3 CTGDSERA BIT(1),        /* ERASE                         */
          3 CTGDSREC BIT(1),        /* RECOVERABLE CATALOG   @Y30SSPJ*/
          3 CTGDSINH BIT(1),        /* INHIBIT UPDATE                */
          3 CTGDSTPX BIT(1),        /* TEMPORARY EXPORT              */
          3 CTGTRKOV BIT(1),        /* TRACK OVERFLOW          Y02020*/
        2 CTGATR2  BIT(8),          /* SHARE OPTIONS                 */
          3 CTGDSISH BIT(2),        /* CROSS REGION SHARE OPTIONS    */
          3 CTGDSSSH BIT(2),        /* CROSS SYSTEM SHARE OPTIONS    */
          3 *        BIT(3),        /* RESERVED              @Y30SSPJ*/
          3 CTGDSNUS BIT(1);        /* D.S. NOT REUSABLE     @Y30SSPJ*/
 /********************************************************************/
 /*         DECLARATION OF PATH/AIX ATTRIBUTE FIELD                  */
 /********************************************************************/
    DECLARE
      1 RGATTRFL CHAR(2) BASED(CTGFLPT(1)), /*               @Y30SSPJ*/
        2 RGATTR1 BIT(8),           /* PATH/AIX ATTRIBUTE    @Y30SSPJ*/
          3 RGATTUPG BIT(1),        /* UPDATE OR UPGRADE BIT @Y30SSPJ*/
          3 * BIT(7),               /* RESERVED              @Y30SSPJ*/
        2 RGATTSG1 BIT(8),          /* SIGNIFICANT MASK      @Y30SSPJ*/
          3 RGATSUP1 BIT(1),        /* UPDATE OR UPGRADE BIT @Y30SSPJ*/
          3 * BIT(7);               /* RESERVED              @Y30SSPJ*/
 /********************************************************************/
 /*                DECLARATION OF ENTRYNAME FIELD                    */
 /********************************************************************/
    DECLARE ENTRYNAM CHAR(44) BASED(CTGFLPT); /* ENTRYNAME FIELD     */
 /********************************************************************/
 /*         DECLARATION OF CREATION OR EXPIRATION DATE FIELD         */
 /********************************************************************/
    DECLARE DATEFLD PTR(24) BASED(CTGFLPT); /* DATE FIELD 'YDD' FORM */
                                            /* OF 'YYDDDF'X          */
 /********************************************************************/
 /*                DECLARATION OF OWNER ID FIELD                     */
 /********************************************************************/
    DECLARE OWNIDFLD CHAR(8) BASED(CTGFLPT); /* OWNER ID FIELD       */
 /********************************************************************/
 /*             DECLARATION OF MINIMUM BUFFER SIZE FIELD             */
 /********************************************************************/
    DECLARE BUFSIZE  PTR(31) BASED(CTGFLPT); /* MINIMUM BUFFER SIZE  */
 /********************************************************************/
 /*            DECLARATION OF AVERAGE LOGICAL RECORD SIZE            */
 /********************************************************************/
    DECLARE LRECL PTR(31) BASED(CTGFLPT); /* AVERAGE LOGICAL REC SIZE*/
 /********************************************************************/
 /*         DECLARATION OF EXCEPTION EXIT NAME                       */
 /********************************************************************/
    DECLARE EXCPNAME CHAR(8)BASED(CTGFLPT); /*EXCP EXIT NAME @Y30SSPJ*/
 /********************************************************************/
 /*     DEVICE CHARACTERISTICS OVERLAY STRUCTURE FOR RETURNED INFO   */
 /********************************************************************/
    DECLARE
      1 DEVCHARS BASED(ADDR(CCADESA)), /* DEVICE CHARACTERISTICS     */
        2 RTDEVUCB CHAR(4),         /* UCB DEVICE TYPE               */
          3 *        CHAR(2),       /* RESERVED               @XM4334*/
          3 RTCLSTYP CHAR(2),       /* DEV CLASS & TYPE       @XM4334*/
        2 RTMXDBLK PTR(31),         /* MAXIMUM DEVICE BLOCK SIZE     */
        2 RTNOCYLS FIXED(15),       /* NO. CYLINDERS ON DEVICE       */
        2 RTNOTRKS FIXED(15),       /* NO. TRACKS PER CYLINDER       */
        2 RTTRKSIZ FIXED(15),       /* BYTES PER TRACK               */
        2 RTBOKAB  PTR(16),         /* BLOCK OVERHEAD, KEYED ALL BLK */
          3 RTBOKNLB PTR(8),        /* BLOCK OVERHEAD, KEYED NOT LAST*/
          3 RTBOKLB  PTR(8),        /* BLOCK OVERHEAD, KEYED LAST    */
        2 RTBONK   PTR(8),          /* BLOCK OVERHEAD, NOT KEYED     */
        2 RTDVFLGS BIT(8),          /* FLAG BYTE             @Y30SSPJ*/
          3 *        BIT(4),        /* RESERVED              @Y30SSPJ*/
          3 RTKABFLG BIT(1),        /* IF ON, USE ALL BLOCK OVERHEAD */
                                    /*   VALUE 'RTBOKAB'     @Y30SSPJ*/
          3 *        BIT(2),        /* RESERVED              @Y30SSPJ*/
          3 RTTOLFLG BIT(1),        /* IF ON, USE TOLERANCE FACTOR   */
                                    /*   TO ALL BLOCKS EXCEPT LAST   */
        2 RTTOLFCT FIXED(15);       /* TOLERANCE FACTOR      @Y30SSPJ*/
 /********************************************************************/
 /*     CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE      */
 /********************************************************************/
   %DCL CLFXFALN CHAR;              /* FIXED LENGTH FIELDS   @Y30SSPJ*/
   %DCL CLFXFAR1 CHAR;              /* FIXED LENGTH FIELDS   @Y30SSPJ*/
   %DCL CLFXFADI CHAR;              /* FIXED LENGTH FIELDS   @Y30SSPJ*/
   %DCL PASSFIXD CHAR;              /* LENGTH OF FIXED FOR PASSWORD
                                       GROUP OCCURRENCE      @Y30SSPJ*/
   %CLFXFALN = 'LENGTH(CATRCD)+LENGTH(CNAME)+LENGTH(COWNID)+
        LENGTH(CCRE)+LENGTH(CEXP)+LENGTH(CCATTR)'; /* RELEASE 2
                                       CLUSTER, AIX, OR PATH
                                       FIXED LENGTH FIELDS   @Y30SSPJ*/
   %CLFXFAR1 = 'LENGTH(CATRCD)+LENGTH(CNAME)+LENGTH(COWNID)+
        LENGTH(CCRE)+LENGTH(CEXP)'; /* REL 1 CLUSTER OR REL 2 ALIEN
                                       FIXED LENGTH FIELDS   @Y30SSPJ*/
   %CLFXFADI = 'LENGTH(CATRCD)+LENGTH(CTGRBASE)'; /* REL 2 DATA/INDEX
                                       FIXED LENGTH FIELDS   @Y30SSPJ*/
   %PASSFIXD ='LENGTH(PASSWORD)+LENGTH(PASSPRMT)+LENGTH(PASSATMP)+
        LENGTH(USVRMDUL)';          /* LENGTH OF FIXED FOR PASSWORD
                                       GROUP OCCURRENCE      @Y30SSPJ*/
    DECLARE                         /* CROSS REGION SHARE OPTIONS    */
      CRRGOPT1 BIT(2) CONSTANT('00'B), /* ALL READ OR ONE UPD/OUTPUT */
      CRRGOPT2 BIT(2) CONSTANT('01'B), /* ALL READ AND ONE UPD/OUTPUT*/
      CRRGOPT3 BIT(2) CONSTANT('10'B), /* FULL SHARE                 */
      CRRGOPT4 BIT(2) CONSTANT('11'B); /* FULL SHARE WITH AM ASSIST  */
    DECLARE                         /* CROSS SYSTEM SHARE OPTIONS    */
      CRSYOPT3 BIT(2) CONSTANT('10'B), /* FULL SHARE                 */
      CRSYOPT4 BIT(2) CONSTANT('11'B); /* FULL SHARE WITH AM ASSIST  */
    DECLARE                         /* SPACE OPTIONS REQUEST TYPE    */
      CMSALCAN BIT(2) CONSTANT('00'B), /* CANDIDATE REQUEST          */
      CMSALTRK BIT(2) CONSTANT('10'B), /* TRACK REQUEST              */
      CMSALREC BIT(2) CONSTANT('01'B), /* RECORDS REQUEST            */
      CMSALCYL BIT(2) CONSTANT('11'B); /* CYLINDER REQUEST           */
    DECLARE                         /* DATA SET ATTRIBUTES           */
      DSUNQ    BIT(1) CONSTANT('1'B), /* UNIQUE DATA SET             */
      DSSPD    BIT(1) CONSTANT('1'B), /* SPEED SELECTED              */
      DSERA    BIT(1) CONSTANT('1'B), /* ERASE SPECIFIED             */
      DSINH    BIT(1) CONSTANT('1'B), /* INHIBIT UPDATE              */
      DSTPX    BIT(1) CONSTANT('1'B); /* TEMPORARILY EXPORTED        */
./ ADD NAME=IGGMCMWA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMCMWA                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG MANAGEMENT SERVICES WORK AREAS */
 /*                                                                  */
 /*   FUNCTION = CONTAINS MAPPING STRUCTURES FOR THE CMS EXTENSION   */
 /*              WORK AREA, THE CMS DELETE WORK AREA, THE CMS        */
 /*              DELETE-ERASE WORK AREA, THE ENQUEUE PARAMETER       */
 /*              LIST, AND THE CATALOG UPGRADE MANAGEMENT PARAMETER  */
 /*              LIST AND ASSOCIATED WORK AREA.                      */
 /*                                                                  */
 /*   CONTROL BLOCK STRUCTURE = THE CMSWA AND THE DELWKA ARE POINTED */
 /*                             TO BY THE CCA (CCACMSWA).  THE       */
 /*                             CUMPLWA IS ALSO POINTED TO BY THE    */
 /*                             CCA (CCACUMPL).                      */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: CORE OBTAINED AND FREED BY IGG0CLAT (IGGPCDVR)     */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 4   (CHANGE FLAG @Z40RSXX)       @Z40RSRC*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 23 FEB 78                        @ZA30382*/
 /*                                                                  */
 /*   A 871322,871324                                        @ZA30382*/
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /* DECLARATION OF BASE REGISTER FOR DEFINE SIZE PARAMETER TABLE MAP */
 /********************************************************************/
    DECLARE DCWABASE REG(4) PTR(31); /* ADDR OF DEVICE CHARACTERISTICS
                                        AND WORKAREA ARRAY ELEMENT   */
 /********************************************************************/
 /*          DECLARATION OF DEFINE SIZE PARAMETER TABLE MAP          */
 /********************************************************************/
    DECLARE
      1 DSPTBL BASED(DCWABASE),     /* DEFINE SIZE PARAMETER TABLE   */
        2 DSDEVCHA CHAR(20),        /* DEVICE CHARACTERISTICS AREA   */
        2 DSMPHYBS FIXED(15),       /* MAXIMUM ALLOWABLE PHYSICAL BLOCK
                                       SIZE FOR THIS DEVICE TYPE     */
        2 DSPHYBPT (4) FIXED(15),   /* ARRAY OF PHYSICAL BLOCKS PER
                                       TRACK FOR 512, 1024, 2048, AND
                                       4096 BYTE BLOCKS RESPECTIVELY */
        2 DSNPHYBS FIXED(15);       /* NUMBER OF ALLOWABLE PHYSICAL
                                       BLOCK SIZES FOR THIS DEVICE   */
 /********************************************************************/
 /*        DECLARATION  FOR  THE  CMS  EXTENSION  WORK  AREA         */
 /********************************************************************/
    DECLARE
      1 CMSWA BASED(CCACMSWA),      /* CMS EXTENSION WORKAREA        */
        2 CMWFLAGS BIT(8),          /* OPTION & PROCESS INDICATE     */
          3 CMFGDLSC BIT(1),        /* TEMP SECURITY DELETE          */
          3 CMPROCM  BIT(1),        /* PROCESSING CONTROL - DSPC     */
          3 CMPROC   BIT(1),        /* PROCESSING CONTROL - DSPC     */
          3 CMSRACDL BIT(1),        /* RAC-INDICATED DELETE  @Z40RSTC*/
          3 CMSUALOC BIT(1),        /* UNALLOC REQUIRED      @Z40RSRC*/
        2 CMCISREQ PTR(8),          /* CI'S ORIGINALLY OBTAINED      */
                                    /*   FOR DEFINE ONLY             */
        2 CMCISUSE PTR(8),          /* NO. OF CI'S PROCESSED         */
          3 CMWRKATR BIT(8),        /* AMDSB DATA ATTRIBUTES         */
            4 CMAMDDST BIT(1),      /* KEY, CHRONOLOGIC              */
            4 CMAMDWCK BIT(1),      /* WRITE CHECK                   */
            4 CMAMDSDT BIT(1),      /* SEQUENCE SET WITH DATA        */
            4 CMAMDRPL BIT(1),      /* REPLICATION                   */
            4 CMAMDORD BIT(1),      /* USE VOLUMES IN LIST ORDER     */
            4 CMAMDRNG BIT(1),      /* KEY RANGE DATA SET            */
        2 CMWACI (3) PTR(24) BDY(BYTE), /* CI'S FOR DEFINE USAGE ONLY*/
 /*                                                          @Z40RSTC*/
 /*   END OF NON-OVERLAID FIELDS IN CMS WORK AREA            @Z40RSRC*/
 /*                                                          @Z40RSRC*/
        2 CMWFVTPT PTR(31),         /* SECONDARY FVT BASE            */
        2 CMASCFPL PTR(31),         /* ADDRESS OF ASSOCIATION FPL    */
        2 CMCPLFVT PTR(31),         /* ADDRESS OF CALLER FVT-SAVED   */
          3 CMEXTFLS PTR(31),       /* EXTRACT CORE REFERENCE        */
        2 CMNRMEXT PTR(31),         /* ADDRESS OF NORMAL EXTENT LIST */
          3 CMLDTFPL PTR(31),       /* LOW DATA FPL ADDRESS - DEFC   */
            4 CMRNMLST PTR(31),     /* RENAME PARAMETER LIST REFER   */
        2 CMSSEXTS PTR(31),         /* ADDRESS OF SS W/DATA EXT LIST */
          3 CMHDTFPL PTR(31),       /* HIGH DATA FPL ADDRESS - DEFC  */
            4 CMTSTFPL PTR(31),     /* TEST FPL ADDRESS              */
        2 CMCANVOL PTR(31),         /* ADDRESS OF CANDIDATE VOL LIST */
          3 CMHIXFPL PTR(31),       /* HIGH INDEX FPL ADDRESS - DEFC */
            4 CMDTAFPL PTR(31),     /* DATA FPL ADDRESS              */
        2 PROCESS  CHAR(2),         /* LOOP CONTROL CHARACTERS       */
        2 SPACINDC CHAR(2),         /* SPACE OBTAINED INDICATOR      */
        2 CMRNGCTR FIXED(15),       /* RELATIVE SEQUENCE NUMBER FOR  */
                                    /*   RANGE BEING PROCESSED       */
          3 CMADDVOL FIXED(15),     /* COUNT OF VOLS TO ADD - ALTER  */
        2 CMVOLCTR FIXED(15),       /* RELATIVE SEQUENCE NO. FOR VOL */
                                    /*   ENTRY BEING PROCESSED       */
          3 CMRMVVOL FIXED(15),     /* REMOVE VOLUME COUNT - ALTER   */
        2 CMSPCFVT PTR(31),         /* REFERENCE TO A SPACE FVT      */
        2 CMSDFSPC PTR(32),         /* DEFINE - DEFINE SPACE FEEDBACK*/
          3 CMSWAFLG BIT(8),        /* INTERFACE FLAGS - PASSED      */
          3 CMSDEFCI PTR(24) BDY(BYTE), /* CI OF UNIQUE ENTRY - PASS */
        2 CMSCRAVI CHAR(6),         /* CRA VOLID             @Y30SSSG*/
        2 CMSCRADT CHAR(4),         /* CRA DEVTYPE           @Y30SSSG*/
        2 * CHAR(2),                /* RESERVED              @Y30SSSG*/
        2 CMVLLIST,                 /* SINGLE ENTRY VOLUME LIST      */
          3 CMVLLTLN FIXED(15),     /* LENGTH OF VOLUME LIST         */
          3 CMVLRTCD FIXED(15),     /* RETURN CODE FIELDS            */
            4 CMVLRT1 PTR(8),       /* NORMAL RETURN CODE            */
            4 CMVLRT2 PTR(8),       /* RESERVED                      */
          3 CMVLVOL CHAR(6),        /* VOLUME SERIAL NUMBER          */
        2 CMTOTVOL FIXED(15) BDY(BYTE), /* TOTAL NO. OF VOL SERS     */
        2 CMSPCATR (2) CHAR(16) BDY(WORD), /* SPACE ATTRIBUTES       */
          3 CMPHYBLK PTR(32),       /* PHYSICAL BLOCK SIZE           */
          3 CMSWADTY PTR(32),       /* DEVICE TYPE                   */
          3 CMBLKTRK FIXED(15),     /* BLOCKS PER TRACK              */
          3 CMTRKPCA FIXED(15),     /* TRACKS PER CONTROL AREA       */
          3 CMTRKCYL FIXED(15),     /* TRACKS PER CYLINDER           */
        2 CMCNVLEN FIXED(15),       /* SIZE OF CANDIDATE VOLUME LIST */
        2 CMCNVNO  FIXED(15),       /* NO. OF CANDIDATE VOLUMES      */
        2 CMFPLIDX PTR(31),         /* ADDRESS OF FPL INDEX          */
        2 *        CHAR(2),         /* UNUSED - PRESERVE ALIGNMENT   */
        2 WORKPROC CHAR(2),         /* LOOP CONTROL - IGGPDEXD       */
        2 CMEXTLST PTR(31),         /* EXTENT LIST REFERENCE IN FPL  */
        2 CMSRCCOR PTR(31),         /* CATALOG DEFINE RECORD CORE PTR*/
        2 CMDEFSWA PTR(31),         /* PTR TO DEFINE SPACE WORKAREA  */
        2 CMWASTOR CHAR(8) BDY(WORD), /* TIME WORKAREA               */
          3 CMPOT    FIXED(31),     /* WORKAREA - POWER-2 - DSPC     */
            4 CMDCONV    FIXED(31), /* VALUE TO CONVERT   - DSPC     */
              5 CMIXFANO FIXED(31), /* INDEX CI FANOUT    - DSPC     */
                6 CMWT FIXED(31),   /* TIME WORKAREA                 */
          3 CMPOTX   FIXED(31),     /* WORKAREA - POWER-2 - DSPC     */
            4 CMPBI  FIXED(31),     /* BLOCK SIZE INDEX   - DSPC     */
              5 CMIXFANS FIXED(31), /* SQUARE ROOT OF CMIXFANO       */
                6 CMNCITL FIXED(31), /* NO. CI THIS INDEX LEVEL-DSPC */
        2 CMWABYTB CHAR(4) BDY(WORD), /* DATE WORKAREA               */
          3 CMPBIX   FIXED(31),     /* BLOCK SIZE CONTROL - DSPC     */
            4 CMNEST   FIXED(31),   /* NO. OF INDEX SECTIONS - DSPC  */
              5 CMFANT   FIXED(31), /* WORKAREA FOR CMIXFANS         */
                6 CMSPCQTY FIXED(31),  /* WORKAREA FOR SPCQTY - DSPC */
                  7 CMNCILL FIXED(31), /* NO. CI LAST IX LEVEL- DSPC */
        2 CMWGENAM CHAR(44),        /* GENERATED ENTRYNAME           */
          3 CMWFIXID CHAR(12),      /* FIXED IDENTIFIER              */
          3 CMWDATE,                /* DATE                          */
            4 CMWYEAR CHAR(2),      /* YEAR                          */
            4 CMWDAY CHAR(3),       /* DAY                           */
          3 CMWTIME,                /* TIME                          */
            4 CMWDELM1 CHAR(2),     /* DELIMITER .T                  */
            4 CMWTIME1 CHAR(7),     /* FIRST 7 DIGITS                */
            4 CMWDELM2 CHAR(2),     /* DELIMITER                     */
            4 CMWTIME2 CHAR(7),     /* SECOND 7 DIGITS               */
          3 CMWPAD CHAR(9),         /* PAD OF BLANKS                 */
 /********************************************************************/
 /*         DECLARATION OF CMS DEFINE WORKAREA USED FOR FPL'S        */
 /*         AND FIELD VALUES                                         */
 /********************************************************************/
        2 DCWIX    PTR(15) BDY(WORD), /* WORKAREA INDEX              */
        2 *        PTR(15),         /* RESERVED                      */
        2 DCWAREPT PTR(31),         /* POINTER TO ARRAY ELEMENT TO   */
                                    /*   BE PROCESSED                */
        2 DCWFPLPT PTR(31),         /* PTR TO FPL TO BE PROCESSED    */
                                    /*   IN ARRAY ELEMENT            */
        2 DCWPLSPS,                 /* SET OF SPACE PARAMETERS       */
                                    /*   FPL AND FIELD VALUE         */
          3 DCWPLSPL,               /* SPACE PARAMETER FPL           */
            4 DCWPLSPH CHAR(LENGTH(CTGFL)), /* FPL HEADER            */
            4 DCWPLSPA CHAR(LENGTH(CTGFLDAT)), /* FPL FIELD PAIR     */
          3 DCWPLSPV CHAR(7),       /* SPACE PARAMETER FIELD VALUE   */
          3 *        CHAR(1),       /* RESERVED                      */
        2 DCWPLBFS,                 /* SET OF BUFFER SIZE FPL        */
                                    /*   AND FIELD VALUE             */
          3 DCWPLBFL,               /* BUFFER SIZE FPL               */
            4 DCWPLBFH CHAR(LENGTH(CTGFL)), /* FPL HEADER            */
            4 DCWPLBFA CHAR(LENGTH(CTGFLDAT)), /* FPL FIELD PAIR     */
          3 DCWPLBFV CHAR(4),       /* BUFFER SIZE FIELD VALUE       */
        2 DCWPLEDS,                 /* EXPIRATION DATE SET OF        */
                                    /*   FPL AND FIELD               */
          3 DCWPLEDL,               /* EXPIRATION DATE FPL           */
            4 DCWPLEDH CHAR(LENGTH(CTGFL)),   /* FPL HEADER          */
            4 DCWPLEDA CHAR(LENGTH(CTGFLDAT)), /* FPL FIELD PAIR     */
          3 DCWPLEDV CHAR(3),       /* EXPIRATION DATE FIELD         */
          3 *        CHAR(1),       /* RESERVED                      */
        2 DCWPLARS,                 /* SET OF AVG LOGICAL RECRD SIZE */
                                    /*   FPL AND FIELD VALUE         */
          3 DCWPLARL,               /* AVG LOGICAL RECORD SIZE FPL   */
            4 DCWPLARH CHAR(LENGTH(CTGFL)), /* FPL HEADER            */
            4  DCWPLARA CHAR(LENGTH(CTGFLDAT)), /* FPL FIELD PAIR    */
          3 DCWPLARV PTR(31),       /* AVG LOGICAL RECORD SIZE VALUE */
        2 DCWPLCDS,                 /* CREATION DATE SET OF FPL      */
                                    /*   AND FIELD                   */
          3 DCWPLCDL,               /* CREATION DATE FPL             */
            4 DCWPLCDH CHAR(LENGTH(CTGFL)), /* FPL HEADER            */
            4 DCWPLCDA CHAR(LENGTH(CTGFLDAT)), /* FPL FIELD PAIR     */
          3 DCWPLCDV CHAR(3),       /* CREATION DATE FIELD           */
          3 *        CHAR(1),       /* RESERVED                      */
        2 CMSDSPTB (2) CHAR(LENGTH(DSPTBL)), /* ARRAY FOR DATA AND
                                       INDEX DEVICE CHARACTERISTICS
                                       AND WORK VALUES               */
        2 CMBLPTKS FIXED(15),       /* BLOCKS PER TRACK FOR          */
                                    /*   SEQUENCE SET ON DATA DEVICE */
        2 CMUCATCI CHAR(3),         /* UCAT ENTRY CI NUMBER          */
          3 CMDEFACI CHAR(3),       /* ALIEN ENTRY CI NUMBER         */
        2 *       CHAR(3),          /* RESERVED                      */
        2 CMSCTREC(20) PTR(31),     /* CATALOG RECORD ADDRESS ARRAY
                                                               Y02020*/
        2 CMBYTTRK FIXED(31),       /* BYTES PER TRACK         Y02020*/
        2 CMBYTAU FIXED(31),        /* BYTES PER ALLOC UNIT  @Z40RSTC*/
 /*                                                          @Z40RSRC*/
 /*   RAC-RELATED FIELDS                                     @Z40RSRC*/
 /*                                                          @Z40RSRC*/
        2 CMSRACBF(3) PTR(31),      /* BUFFER TO PREVENT     @Z40RSTC
                                  OVERLAY BY DELETE WRK AREA @Z40RSTC*/
        2 CMSRAC,                   /* RAC FIELDS            @Z40RSRC*/
          3 CMSRETCD PTR(8),        /* RAC RETURN CODE       @Z40RSRC*/
          3 CMSREACD PTR(8),        /* RAC REASON CODE       @Z40RSRC*/
          3 * CHAR(2),              /* RESERVED              @Z40RSRC*/
          3 CMSRDSNA PTR(31),       /* DSNAME ADDR FOR RAC   @Z40RSRC*/
          3 CMSRDSVL PTR(31),       /* VOLSER ADDR FOR RAC   @Z40RSTC*/
          3 CMSWARFV PTR(31),       /* CURRENT FVT FOR RAC   @Z40RSRC
                                       DEFINITION PURPOSES   @Z40RSRC*/
          3 CMSWRMAC PTR(31),       /* ADDR OF RDDFLIST      @ZA30382*/
          3 * CHAR(12),             /* RESERVED              @ZA30382*/
          3 CMSROBJA,               /* RAC ARRAY NAME        @Z40RSTC*/
            4 CMSROBJN(3) CHAR(44), /* RAC OBJECT NAME ARRAY @Z40RSTC*/
                5 CMSROBJI CHAR(1), /* INITIAL CHAR STATE ID @Z40RSTC*/
                5 * CHAR(43),       /* OBJECT NAME (LOW      @Z40RSTC
                                       ORDER 43 CHARACTERS)  @Z40RSTC*/
          3 CMSDYNAL PTR(31);       /* ADDR OF DYNAMIC ALLOCATION
                                       WORK AREA             @Z40RSRC*/
 /********************************************************************/
 /*     CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE      */
 /********************************************************************/
    DECLARE                         /* CHARACTER CONSTANTS           */
      CMWENTPD CHAR(10) CONSTANT('          '), /* ENTRYNAME PAD OF
                                                   BLANKS            */
      CMWENTDL CHAR(2)  CONSTANT('.T'), /* DELIMITER OF TIME FIELD   */
      CMWENTCD CHAR(12) CONSTANT('VSAMDSET.DFD'), /* FIXED PORTION OF
                                                   ENTRYNAME         */
      EDNULVAL BIT(24) CONSTANT('00000F'X); /* EXPIRATION DATE
                                               NULLVALUE             */
    %IF DELWKA99 = ''               /*IF DELWKA NOT REQUIRED @Y30SSPJ*/
      %THEN %GOTO DELWKA01;         /* THEN DONT GENERATE IT @Y30SSPJ*/
    %STOPFMT1:;                     /* SHOW NEXT COMMENT     @Y30SSPJ*/
 /********************************************************************/
 /*          DECLARATION OF THE CMS DELETE WORK AREA                 */
 /********************************************************************/
    DECLARE
      1 DELWKA CHAR(516) BDY(WORD) BASED(CCACMSWA), /* CMS   @Z40RSTC*/
                                    /* DELETE AREA           @Z40RSTC*/
                                    /* OVERLAPS CMSWA        @Y30SSPJ*/
       2 * CHAR(12),                /* DO NOT USE THIS FIELD @Z40RSRC*/
       2 DELNMOBJ PTR(8),           /* NUM OF ASSOCIATED OBJ @Y30SSPJ*/
       2 DELR3SAV PTR(8),           /* R3 SAVE AREA          @Y30SSPJ*/
       2 DELRTYPE CHAR(1),          /* CTGTYPE SAVE AREA     @Y30SSPJ*/
       2 DELERRIX PTR(8),           /* INDEX TO ERR ARRAY    @Y30SSPJ*/
       2 * CHAR(1),                 /* DELETE FLAGS          @Y30SSPJ*/
        3 DELCODE BIT(1),           /* ERROR CODE FLAG1      @Y30SSPJ*/
        3 DELCODE2 BIT(1),          /* ERROR CODE FLAG2      @Y30SSPJ*/
        3 DELKYRNG BIT(1),          /* KEY RANGE DATA SET    @Y30SSPJ*/
        3 DELCAT BIT(1),            /* DELETE COPIED CATALOG @Y30SSPJ*/
        3 DELGNMR BIT(1),           /* GET NUM OF PATHS      @Y30SSPJ*/
        3 DELCODE3 BIT(1),          /* ERROR CODE FLAG3      @Y30SSPJ*/
        3 DELCODE4 BIT(1),          /* ERROR CODE FLAG4      @Y30SSPJ*/
        3 DELCODE5 BIT(1),          /* ERROR CODE FLAG5      @Y30SSPJ*/
          4 DELSPSCR BIT(1),        /* VTOC MODIFIED         @Y30SSPJ*/
       2 DELSGRRN FIXED(15)BDY(BYTE),/* SPACE GRP RELREPNO   @Y30SSPJ*/
        3 DELI PTR(8),              /* DO LOOP COUNTER I     @Y30SSPJ*/
         4 DELSPFLG BIT(8),         /* DELETE SPACE FLAG     @Y30SSPJ*/
          5 DELNONVS BIT(1),        /* NON-VSAM FOUND IN CRA @Y30SSPJ*/
          5 * BIT(7),               /* RESERVED              @Y30SSPJ*/
        3 DELE PTR(8),              /* DO LOOP COUNTER E     @Y30SSPJ*/
       2 DELC PTR(8),               /* DO LOOP COUNTER C     @Y30SSPJ*/
       2 DELVRRN CHAR(2) BDY(WORD), /* RELREPNO VALUE        @Y30SSPJ*/
        3 TSTRELSP CHAR(2),         /* SPACE HEADER GROUP    @Y30SSPJ*/
                                    /* RELREPNO VALUE        @Y30SSPJ*/
       2 DELVCRN CHAR(2),           /* CNTREPNO VALUE        @Y30SSPJ*/
        3 TSTCNTRN CHAR(2),         /* TEST VAL FOR CNTREPNO @Y30SSPJ*/
       2 DELXTNWA BDY(WORD),        /* IF INSUFF. WA FOR VGO @Y30SSPJ*/
        3 DELXLOC PTR(31),          /* LOCATION OF GVO WA    @Y30SSPJ*/
         4 DELTSFPL PTR(31),        /* TEST FPL REFERENCE    @Y30SSPJ*/
        3 DELXLEN PTR(31),          /* LENGTH OF EXT'N WKA   @Y30SSPJ*/
         4 TSTSPDUU FIXED(15),      /* UNITS USED IN DATA SPACE
                                                             @Y30SSPJ*/
         4 * CHAR(1)BDY(BYTE),      /* RESERVED              @Z40RSRC*/
         4 DELRACF  BIT(8),         /* RAC FLAG BYTE         @Z40RSRC*/
          5 DELINDC BIT(1),         /* RAC-INDICATED CLUSTER @Z40RSRC
                                       OR AIX                @Z40RSRC*/
          5 DELINDD BIT(1),         /* RAC-INDICATED DATA    @Z40RSRC*/
          5 DELINDI BIT(1),         /* RAC-INDICATED INDEX   @Z40RSRC*/
          5 *       BIT(5),         /* RESERVED              @Z40RSRC*/
       2 DELERRSX BDY(BYTE),        /* ERROR RET CODE ARRAY  @Y30SSPJ*/
        3 DELERRS(5)CHAR(4),        /* ERR RET CODE ARRAY    @Y30SSPJ*/
         4 DELMODID CHAR(2),        /* ERROR MODULE ID       @Y30SSPJ*/
         4 DELREASN CHAR(1),        /* ERROR REASON CODE     @Y30SSPJ*/
         4 DELRETCD CHAR(1),        /* ERROR RETURN CODE     @Y30SSPJ*/
 /********************************************************************/
 /*   WORK AREA INTERFACE FOR EXTRACT/MODIFY SUBFUNCTIONS    @Y30SSPJ*/
 /********************************************************************/
       2 DELEXTWA,                  /*WORKAREA FOR INTERFACE @Y30SSPJ*/
        3 DELCPL CHAR(LENGTH(CTGPL)),/* CPL FOR EXTRACT AND  @Y30SSPJ*/
         4 DELCPLST CHAR(LENGTH(CTGPL)),/* INTERNAL CPL      @Y30SSPJ*/
        3 * CHAR(LENGTH(CTGFIELD)), /*        MODIFY         @Y30SSPJ*/
         4 DELCPLFL CHAR(LENGTH(CTGFIELD)),/* CPL FPL PTR    @Y30SSPJ*/
        3 DELFPLR CHAR(LENGTH(CTGFL)),/* FPL FOR EXTRACT AND @Y30SSPJ*/
         4 DELFPLDT CHAR(LENGTH(CTGFL)),/* DATA RETRIEVE FPL @Y30SSPJ*/
        3 * CHAR(LENGTH(CTGFLDAT)), /*        MODIFY         @Y30SSPJ*/
         4 DELFL1DT CHAR(LENGTH(CTGFLDAT)),/* FPL DATA LENGTH/ADDR
                                                             @Y30SSPJ*/
        3 DELNMR CHAR(8),           /* FIELD NAME            @Y30SSPJ*/
         4 DELFL1NM CHAR(8),        /* FIELD NAME VALUE      @Y30SSPJ*/
        3 DELFPLT CHAR(LENGTH(CTGFL)),/* 1ST TEST FPL FOR    @Y30SSPJ*/
         4 DELFPLT1 CHAR(LENGTH(CTGFL)),/* TEST FPL ONE      @Y30SSPJ*/
        3 * CHAR(LENGTH(CTGFLDAT)), /* EXTRACT AND MODIFY    @Y30SSPJ*/
         4 DELT1DT CHAR(LENGTH(CTGFLDAT)),/* FPL DATA LENGTH/ADDR
                                                             @Y30SSPJ*/
        3 DELNMT CHAR(8),           /* FIELD NAME            @Y30SSPJ*/
         4 DELT1NM CHAR(8),         /* FIELD NAME VALUE      @Y30SSPJ*/
        3 DELFPLT2 CHAR(LENGTH(CTGFL)),/*2ND TEST FPL AND    @Y30SSPJ*/
        3 * CHAR(LENGTH(CTGFLDAT)), /* EXTRACT AND MODIFY    @Y30SSPJ*/
         4 DELT2DT CHAR(LENGTH(CTGFLDAT)),/* FPL DATA LENGTH/ADDR
                                                             @Y30SSPJ*/
        3 DELNMT2 CHAR(8),          /* FIELD NAME            @Y30SSPJ*/
         4 DELT2NM CHAR(8),         /* FIELD NAME VALUE      @Y30SSPJ*/
       2 DELNCOBJ PTR(8) BDY(BYTE), /*NUM OF CLUSTER OBJECTS @Y30SSPJ*/
       2 DELNGOBJ PTR(8),           /* NUMBER OF AIX'S       @Y30SSPJ*/
       2 DELNROBJ PTR(8),           /* NUMBER OF PATH'S      @Y30SSPJ*/
       2 DELUSINX PTR(8),           /* CURR ENTRY IN USERWKA @Y30SSPJ*/
       2 DELR13SA FIXED(31) BDY(WORD), /* REG 13 SAVEAREA    @Y30SSPJ*/
       2 DELDIV BDY(WORD),          /* WA FOR ASSOCIATIONS   @Y30SSPJ*/
 /********************************************************************/
 /*       EXTRACT ASSOCIATION WORK AREA FOR GENERAL USE      @Y30SSPJ*/
 /********************************************************************/
        3 DELASCWA BDY(WORD),       /* ASSOCIATION FIELD WKA @Y30SSPJ*/
         4 DELALNG FIXED(15),       /* WORK AREA LENGTH      @Y30SSPJ*/
         4 DELARLNG FIXED(15),      /* REQUIRED WICA LENGTH  @Y30SSPJ*/
         4 DELASSO(3)CHAR(4)BDY(BYTE),/* ARRAY ASSOCIATIONS  @Y30SSPJ*/
          5 DELATYPE CHAR(1),       /* ASSOC OBJECT TYPE     @Y30SSPJ*/
          5 DELACI PTR(24)BDY(BYTE),/* ASSOC OBJECT CI NUM   @Y30SSPJ*/
 /********************************************************************/
 /*        EXTRACT ASSOCIATION SAVE AREA FOR CLUSTER USE     @Y30SSPJ*/
 /********************************************************************/
        3 DELCASWA BDY(WORD),       /* CLUSTER ASSOC WKA     @Y30SSPJ*/
         4 DELCALNG FIXED(15),      /* WORK AREA LENGTH      @Y30SSPJ*/
         4 DELCRLNG FIXED(15),      /* REQUIRED WICA LENGTH  @Y30SSPJ*/
         4 DELCASSO(3)CHAR(4)BDY(BYTE),/* ASSOCIATIONS ARRAY @Y30SSPJ*/
          5 DELCTYPE CHAR(1),       /* ASSOC OBJECT TYPE     @Y30SSPJ*/
          5 DELCCI PTR(24)BDY(BYTE),/* ASSOC OBJECT CI NUM   @Y30SSPJ*/
 /********************************************************************/
 /*        EXTRACT ASSOCIATION SAVE AREA FOR AIX USE         @Y30SSPJ*/
 /********************************************************************/
        3 DELGASWA BDY(WORD),       /* AIX ASSOC WKA         @Y30SSPJ*/
         4 DELGALNG FIXED(15),      /* WORK AREA LENGTH      @Y30SSPJ*/
         4 DELGRLNG FIXED(15),      /* REQUIRED WICA LENGTH  @Y30SSPJ*/
         4 DELGASSO(3)CHAR(4)BDY(BYTE),/* ASSOCIATIONS ARRAY @Y30SSPJ*/
          5 DELGTYPE CHAR(1),       /* ASSOC OBJECT TYPE     @Y30SSPJ*/
          5 DELGCI PTR(24)BDY(BYTE),/* ASSOC OBJECT CI NUM   @Y30SSPJ*/
 /********************************************************************/
 /*        EXTRACT ASSOCIATION SAVE AREA FOR PATH USE        @Y30SSPJ*/
 /********************************************************************/
        3 DELRASWA BDY(WORD),       /* PATH ASSOC WKA        @Y30SSPJ*/
         4 DELRALNG FIXED(15),      /* WORK AREA LENGTH      @Y30SSPJ*/
         4 DELRRLNG FIXED(15),      /* REQUIRED WICA LENGTH  @Y30SSPJ*/
         4 DELRASSO(5)CHAR(4)BDY(BYTE),/* ASSOCIATIONS ARRAY @Y30SSPJ*/
          5 DELRTYP CHAR(1),        /* ASSOC OBJECT TYPE     @Y30SSPJ*/
          5 DELRCI PTR(24)BDY(BYTE),/* ASSOC OBJECT CI NUM   @Y30SSPJ*/
 /********************************************************************/
 /*   WORK AREA FOR EXTRACTING A SPECIFIC TYPE ASSOCIATION   @Y30SSPJ*/
 /********************************************************************/
        3 DELXASWA BDY(WORD),       /* SPECIFIC TYPE ASC WA  @Y30SSPJ*/
         4 DELXALNG FIXED(15),      /* WORK AREA LENGTH      @Y30SSPJ*/
         4 DELXRLNG FIXED(15),      /* REQUIRED WICA LENGTH  @Y30SSPJ*/
         4 DELXASSO(1)CHAR(4)BDY(BYTE),/* ASSOCIATIONS ARRAY @Y30SSPJ*/
          5 DELXTYPE CHAR(1),       /* ASSOC OBJECT TYPE     @Y30SSPJ*/
          5 DELXCI PTR(24)BDY(BYTE),/* ASSOC OBJECT CI NUM   @Y30SSPJ*/
 /********************************************************************/
 /*     WORK AREA FOR EXTRACTING VOLUME GROUP OCCURENCES     @Y30SSPJ*/
 /********************************************************************/
        3 DELVGOWA BDY(BYTE),       /* WORK AREA FOR VGO     @Y30SSPJ*/
         4 DELVLNG CHAR(2),         /* LENGTH OF WORK AREA   @Y30SSPJ*/
         4 DELVRLNG CHAR(2),        /* WA REQUIRED LENGTH    @Y30SSPJ*/
         4 DELTVRRN CHAR(2),        /* RELREPNO RETURN       @Y30SSPJ*/
         4 DELVGO CHAR(LENGTH(GVO)),/*VOLUME GROUP OCCURANCE @Y30SSPJ*/
 /********************************************************************/
 /*        WORK AREA FOR EXTRACTING DATA SPACE GROUP         @Y30SSPJ*/
 /********************************************************************/
        3 DELSHWA BDY(BYTE),        /* DATA SPACE GROUP WA   @Y30SSPJ*/
         4 DELSLNG CHAR(2),         /* LENGTH OF WORK AREA   @Y30SSPJ*/
         4 DELSRLNG CHAR(2),        /* WA REQUIRED LENGTH    @Y30SSPJ*/
         4 DELDSGRP CHAR(LENGTH(CTVDSPAC)),/* DATA SPACE GRP @Y30SSPJ*/
 /********************************************************************/
 /*        WORK AREA FOR EXTRACTING DATA SET DIRECTORIES     @Y30SSPJ*/
 /********************************************************************/
        3 DELDSDWA BDY(BYTE),       /* WORK AREA FOR DS DIR  @Y30SSPJ*/
         4 DELDLNG CHAR(2),         /* LENGTH OF WORK AREA   @Y30SSPJ*/
         4 DELDRLNG CHAR(2),        /* WA REQUIRED LENGTH    @Y30SSPJ*/
         4 DELDIRCT CHAR(LENGTH(CTVDIR)),/* DS DIRECTORY     @Y30SSPJ*/
          5 DELDRRN CHAR(2),        /* DS DIRECTORY RELREPNO @Y30SSPJ*/
         4 * CHAR(1),               /* NOT USED              @Y30SSPJ*/
 /********************************************************************/
 /*            WORK AREA FOR SCRATCH FUNCTION                @Y30SSPJ*/
 /********************************************************************/
       2 DELSCRWA BDY(WORD),        /* SCRATCH WORK AREA     @Y30SSPJ*/
 /********************************************************************/
 /*                    SCRATCH PARAMETER LIST                @Y30SSPJ*/
 /********************************************************************/
        3 DELSCRTH CHAR(16)BDY(WORD),/* SCRATCH PARAM LIST   @Y30SSPJ*/
         4 DELSCRFL FIXED(31)BDY(WORD), /* SCRATCH OPT BYTES @Y30SSPJ*/
         4 DELSDSNM PTR(31),        /*DATA SET NAME TO SCRTH @Y30SSPJ*/
         4 DELSNUSE PTR(31),        /*UNUSED                 @Y30SSPJ*/
         4 DELSVLST PTR(31),        /*VOLUME LIST REFERENCE  @Y30SSPJ*/
 /********************************************************************/
 /*                     SCRATCH VOLUME LIST                  @Y30SSPJ*/
 /********************************************************************/
        3 DELSVOL,                  /*SCRATCH VOLUME LIST    @Y30SSPJ*/
         4 DELSNVLS FIXED(15),      /*NUM VOL LIST ENTRIES   @Y30SSPJ*/
         4 DELSDEVT CHAR(4),        /*VOL DEV TYPE CODE      @Y30SSPJ*/
         4 DELSVLID CHAR(6),        /*VOL SERIAL NUMBER      @Y30SSPJ*/
         4 DELSRCD1 PTR(8),         /*UNUSED RTN CODE        @Y30SSPJ*/
         4 DELSRCD2 PTR(8),         /*LIST ENTRY RTN CODE    @Y30SSPJ*/
       2 DELVOLL CHAR(LENGTH(IDAVVOLL)), /*VOLUME LIST       @Y30SSPJ*/
        3 DELSVMTL CHAR(LENGTH(IDAVVOLL)),/*VOLUME LIST      @Y30SSPJ*/
       2 DELSVTET CHAR(LENGTH(VVOLLENT)),/*VOLUME MNT ENTRY  @Y30SSPJ*/
       2 DELPROC CHAR(2),           /* PROCESS LOOP CONTROL  @Y30SSPJ*/
       2 DELTIOPT PTR(31),          /* TIOT PTR FOR VOLUME MOUNT
                                                             @Y30SSPJ*/
         3 * CHAR(1),               /* NOT USED              @Y30SSPJ*/
         3 DELHECIN PTR(24),        /* HORIZONTAL EXTENSION CI NUMBER
                                                             @Y30SSPJ*/
       2 DELOPNPL PTR(31)BDY(WORD), /* PARAM LIST FOR OPEN   @Y30SSPJ*/
        3 DELOPOPT CHAR(1)BDY(BYTE),/* OPEN OPTIONS          @Y30SSPJ*/
         4 DELOPEND BIT(1),         /* MARK END OF PARAM LST @Y30SSPJ*/
         4 * BIT(7),                /* USED BY OPEN          @Y30SSPJ*/
        3 DELACBPT PTR(24)BDY(BYTE),/* PTR TO ACB TO OPEN    @Y30SSPJ*/
       2 * CHAR(2),                 /* RESERVED              @Y30SSPJ*/
       2 F FIXED(15) BDY(BYTE);     /* ERASE LOOP COUNTER    @Y30SSPJ*/
 /********************************************************************/
 /*      DECLARATION FOR PASSWORD BASE REFERENCE FIELD       @Y30SSPJ*/
 /********************************************************************/
    DECLARE PASSSTRT CHAR(8) BASED; /* PASSWORD BASE REF FLD @Y30SSPJ*/
 /********************************************************************/
 /*        DECLARATION FOR CMS DELETE-ERASE WORK AREA        @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 DELERASE BDY(WORD)BASED(CCAR5REC),/* ERASE WORK AREA @Y30SSPJ*/
       2 DELACB CHAR(LENGTH(IFGACB)),/* ACB FOR ERASE        @Y30SSPJ*/
       2 DELRPL CHAR(LENGTH(IFGRPL)),/* RPL FOR ERASE        @Y30SSPJ*/
       2 DELRCPTR PTR(31),          /* RECORD AREA POINTER   @Y30SSPJ*/
       2 DELPASSW,                  /* PASSWORD STRUCTURE    @Y30SSPJ*/
        3 DELPASLN BDY(BYTE)FIXED(8),/* PASSWORD LENGTH      @Y30SSPJ*/
        3 DELPASWD CHAR(8);         /* PASSWORD VALUE        @Y30SSPJ*/
 /********************************************************************/
 /*           DECLARATION FOR ENQUEUE PARAMETER LIST         @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 DELENQ BDY(WORD)BASED(CCAR5REC),/*ENQ PARAMETER LIST @Y30SSPJ*/
       2 ENQPROPR,                  /* ENQ MAIN SECTION LBL  @Y30SSPJ*/
        3 ENQOPT1 BIT(8),           /* OPTION BYTE 1         @Y30SSPJ*/
         4 ENQEND BIT(1),           /* ON FOR END OF LIST    @Y30SSPJ*/
         4 ENQNEW BIT(1),           /* OFF FOR NES FORM      @Y30SSPJ*/
         4 * BIT(5),                /* RESERVED              @Y30SSPJ*/
         4 ENQDIR BIT(1),           /* ON FOR DIRECTED FORM  @Y30SSPJ*/
        3 ENQRLEN FIXED(8),         /* RNAME LENGTH          @Y30SSPJ*/
        3 ENQOPT2 BIT(8),           /* OPTION BYTE 2         @Y30SSPJ*/
         4 ENQSHR BIT(1),           /* ENQ FOR SHARED CONTRL @Y30SSPJ*/
         4 * BIT(7),                /* RESERVED              @Y30SSPJ*/
          3 ENQRETC FIXED(8),       /* ENQ/DEQ RETURN CODE   @Y30SSPJ*/
          3 ENQQNADR PTR(31),       /* QNAME ADDRESS         @Y30SSPJ*/
          3 ENQRNADR PTR(31),       /* RNAME ADDRESS         @Y30SSPJ*/
       2 RNAME CHAR(8),             /* RNAME FOR ENQ         @Y30SSPJ*/
        3 RNAMECI CHAR(3),          /* CONTROL INTERVAL NO.  @Y30SSPJ*/
        3 RNAMECA CHAR(4),          /* CATALOG ACB POINTER   @Y30SSPJ*/
        3 RNAMEID CHAR(1);          /* ALPHA ID TYPE         @Y30SSPJ*/

    %IF DELWKA98 = ''               /*IF OBTAIN WORK AREA NOT REQUIRED
                                                             @Y30SSPJ*/
      %THEN %GOTO DELWKA01;         /* THEN DONT GENERATE IT @Y30SSPJ*/
    %STOPFMT2:;                     /* SHOW NEXT COMMENT     @Y30SSPJ*/
 /********************************************************************/
 /*         OBTAIN PARAMETER LIST - IN RECORD AREA 4         @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 DELOCAM BASED(CCAR4REC),    /* OBTAIN CAM LIST       @Y30SSPJ*/
        2 DELOPT CHAR(4),           /* OBTAIN OPTIONS        @Y30SSPJ*/
        2 DELODSN PTR(31),          /* ADDRESS OF FORMAT 1 DSCB CCHHR
                                                             @Y30SSPJ*/
        2 DELOVOL PTR(31),          /* ADDR OF VOLUME SERIAL @Y30SSPJ*/
        2 DELOBUF PTR(31),          /* ADDR OF DSCB BUFFER   @Y30SSPJ*/
        2 DELDBUF CHAR(148);        /* BUFFER FOR DSCB       @Y30SSPJ*/
    DECLARE
      DELOSEK BIT(32) CONSTANT('C0800000'X); /* SEEK OPTION  @Y30SSPJ*/
 /********************************************************************/
 /*          DISK ADDRESS OF DSCB - IN RECORD AREA 4         @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 DELDSADR DEF(DELDBUF)POS(149),/* DSCB DISK ADDRESS   @Y30SSPJ*/
        2 DELDSCC FIXED(15)BDY(BYTE),/* DSCB CYLINDER ADDR   @Y30SSPJ*/
        2 DELDSHH FIXED(15)BDY(BYTE),/* DSCB HEAD ADDRESS    @Y30SSPJ*/
        2 DELDSREC PTR(8)BDY(BYTE); /* DSCB RECORD NUMBER    @Y30SSPJ*/
 /********************************************************************/
 /*               FORMAT 4 EXTENT DESCRIPTION                @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 DELVTOCE DEF(DS4VTOCE),     /* FORMAT 4 EXTENT DESCRIPTION
                                                             @Y30SSPJ*/
        2 * CHAR(2),                /* NOT USED              @Y30SSPJ*/
        2 DELDS4BG CHAR(4),         /* VTOC START CCHH       @Y30SSPJ*/
        2 DELDS4EN CHAR(4);         /* VTOC END CCHH         @Y30SSPJ*/
 /********************************************************************/
 /*      VOLUME INFORMATION SAVE AREA - IN RECORD AREA 4     @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 * DEF(DELDSREC) POS(2),     /* VOL ENTRY SAVE AREA   @Y30SSPJ*/
        2 * CHAR(1) BDY(BYTE),      /* RESERVED              @Y30SSPJ*/
        2 DELVLSER CHAR(6),         /* VOLUME SERIAL         @Y30SSPJ*/
        2 DELDEVT CHAR(4),          /* VOLUME DEVICE TYPE    @Y30SSPJ*/
        2 DELUCB FIXED(31) BDY(BYTE), /* VOLUME UCB ADDRESS  @Y30SSPJ*/
        2 DELNOTRK FIXED(15) BDY(BYTE); /* TRACKS PER CYL    @Y30SSPJ*/
 %DELWKA01:;                                               /*@Y30SSPJ*/
 /********************************************************************/
 /*       THE FOLLOWING STRUCTURE DESCRIBES THE CATALOG      @Y30SSPJ*/
 /*         UPGRADE INTERFACE PARAMETER LIST AND ALSO ITS    @Y30SSPJ*/
 /*         ASSOCIATED WORKAREA.  THE CALLER MUST SUPPLY     @Y30SSPJ*/
 /*         CORE FOR BOTH AND INITIALIZE CUMPL TO DELETE OR  @Y30SSPJ*/
 /*         ADD AN UPGRADE ASSOCIATION.  CCACUMPL MUST BE    @Y30SSPJ*/
 /*         INITIALIZED TO POINT TO CUMPLWA.                 @Y30SSPJ*/
 /********************************************************************/
    DECLARE
      1 CUMPLWA BASED(CCACUMPL),    /* UPGRADE MGMNT PL/WA   @Y30SSPJ*/
        2 CUMPL,                    /* INTERFACE PARM LIST   @Y30SSPJ*/
          3 CUMIN BIT(8),           /* INPUT FLAGS           @Y30SSPJ*/
            4 CUMFDEL BIT(1),       /* FORCE DELETE Y ENTRY  @Y30SSPJ*/
            4 CUMNRG  BIT(1),       /* NO RE-GET BASE RCD    @Y30SSPJ*/
            4 CUMFUNC BIT(1),       /* SET INTERNALLY:       @Y30SSPJ*/
                                    /*   0 - DELETE, 1 - ADD @Y30SSPJ*/
            4 *       BIT(5),       /* RESERVED              @Y30SSPJ*/
          3 CUMOUT BIT(8),          /* OUTPUT FLAGS          @Y30SSPJ*/
            4 CUMDUP  BIT(1),       /* DUPLICATE UPGRD ASSOC @Y30SSPJ*/
            4 CUMNE   BIT(1),       /* NON-EXISTENT Y ENTRY  @Y30SSPJ*/
                                    /*   OR UPGRADE ASSOC    @Y30SSPJ*/
            4 *       BIT(6),       /* RESERVED              @Y30SSPJ*/
          3 CUMDCI PTR(24) BDY(BYTE), /* AIX DATA CI         @Y30SSPJ*/
          3 CUMICI PTR(24) BDY(BYTE), /* AIX INDEX CI        @Y30SSPJ*/
        2 CUMWA CHAR(152) BDY(WORD), /* UPGRD MGMNT WRK AREA @Y30SSPJ*/
          3 CUMFLAG  BIT(8),        /* UPGRADE MGMNT FLAGS   @Y30SSPJ*/
            4 CUMEXIT BIT(1),       /* FORCE DELETE EXIT IND @Y30SSPJ*/
            4 *       BIT(7),       /* RESERVED              @Y30SSPJ*/
          3 CUMBCI  PTR(24),        /* CALLER'S BASE RECORD CI
                                         NUMBER              @Y30SSPJ*/
          3 CUMURAB PTR(31),        /* SAVE CALLER'S CCAURAB @Y30SSPJ*/
          3 CUMRABB PTR(31),        /* SAVE CALLER'S CCARABB @Y30SSPJ*/
          3 CUMRAB1 PTR(31),        /* FIRST FREE RAB ADDR   @Y30SSPJ*/
          3 CUMRAB2 PTR(31),        /* SECOND FREE RAB ADDR  @Y30SSPJ*/
          3 CUMRABD PTR(31),        /* DATA RAB ADDRESS      @Y30SSPJ*/
          3 *       CHAR(1),        /* RESERVED              @Y30SSPJ*/
          3 CUMSRID PTR(24),        /* SRCH ARG OF NEXT RCD  @Y30SSPJ*/
          3 *       PTR(8),         /* RESERVED              @Y30SSPJ*/
          3 CUMDY   PTR(24),        /* DATA RECORD CI NO.    @Y30SSPJ*/
          3 CUMFN1  CHAR(8),        /* FIELD NAME            @Y30SSPJ*/
          3 CUMFN2  CHAR(8),        /* TEST FIELD NAME       @Y30SSPJ*/
          3 CUMWASS2,               /* ASSOCIATION WORK AREA @Y30SSPJ*/
            4 CUMWREL FIXED(15),    /* RELREPNO              @Y30SSPJ*/
            4 CUMWASS,              /* SINGLE ASSOCIATION    @Y30SSPJ*/
              5 CUMWTYP CHAR(1),    /* TYPE D ENTRY          @Y30SSPJ*/
                6 CUMTYPE CHAR(1),  /* NEXT RECORD TYPE GET  @Y30SSPJ*/
              5 CUMWCI  PTR(24)     /* D ENTRY CI NO.        @Y30SSPJ*/
                      BDY(BYTE),    /*                       @Y30SSPJ*/
            4 CUMWTYP2  CHAR(1),    /* TYPE I ENTRY          @Y30SSPJ*/
            4 CUMWCI2   PTR(24)     /* I ENTRY CI NO.        @Y30SSPJ*/
                      BDY(BYTE),    /*                       @Y30SSPJ*/
          3 CUMFMWA CHAR(88),       /* FIELD MGMNT WORK AREA @Y30SSPJ*/
          3 *       CHAR(2),        /* RESERVED              @Y30SSPJ*/
          3 CUMRC   CHAR(4);        /* SAVE RETURN CODE      @Y30SSPJ*/
./ ADD NAME=IGGMCTRC
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMCTRC                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VSAM CATALOG MANAGEMENT RETURN CODES        */
 /*                                                                  */
 /*   FUNCTION = VSAM CATALOG MANAGEMENT ERROR RETURN AND            */
 /*              REASON CODES USED FOR PROBLEM DETERMINATION.        */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 4   (CHANGE FLAG @Z40RSXX)       @Z40RSRC*/
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 13 MAY 75                        @Z40RSRC*/
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /*             VSAM  CATALOG  MANAGEMENT  ERROR  CODES              */
 /********************************************************************/
    DECLARE                          /* DECLARATION                  */
      RCS      PTR(8) CONSTANT(  0), /* SUCCESSFUL - NO ERRORS       */
      RCCAT    PTR(8) CONSTANT(  4), /* CATALOG NON-EXISTENT OR NOT  */
                                     /*   OPENED                     */
      COCECOMP PTR(8) CONSTANT(  4), /* OPEN COMPLETE                */
      RCENT    PTR(8) CONSTANT(  8), /* ENTRY NOT EXIST (NON-DEF),   */
                                     /* ENTRY EXISTS (DEFINE)        */
      RCINSP   PTR(8) CONSTANT( 20), /* INSUFF SPACE CAT D.S.        */
      RCIOL    PTR(8) CONSTANT( 24), /* I/O ERROR CAT D.S. LOCATE    */
      RCIONL   PTR(8) CONSTANT( 28), /* I/O ERROR CAT D.S. NOT LOCATE*/
      RCINCPL  PTR(8) CONSTANT( 32), /* INVALID CPL OR USER WORK     */
                                     /* AREA OUTSIDE USER REGION     */
      RCDSNF   PTR(8) CONSTANT( 36), /* DATA SET NOT FOUND           */
      RCVLSZ   PTR(8) CONSTANT( 40), /* VOLUME LIST OR WORKAREA TOO  */
                                     /* SMALL, CORRECT SIZE IN       */
                                     /* FEEDBACK FIELD               */
      RCVLSM   PTR(8) CONSTANT( 44), /* WORKAREA TOO SMALL, UNABLE   */
                                     /* TO RETURN REQUIRED SIZE      */
      RCINFUNC PTR(8) CONSTANT( 48), /* INVALID FUNCTION             */
      RCIOU    PTR(8) CONSTANT( 52), /* I/O ERROR USER VOLUME        */
      RCSEC    PTR(8) CONSTANT( 56), /* SECURITY VERIFICATION        */
      RCINENT  PTR(8) CONSTANT( 60), /* INVALID ENTRY TYPE           */
      RCNAME   PTR(8) CONSTANT( 64), /* ASSOCIATION NAME NOT EXIST   */
      RCNOSP   PTR(8) CONSTANT( 68), /* NO SPACE ON USER VOLUME      */
      RCNMNTD  PTR(8) CONSTANT( 72), /* USER VOLUME NOT MOUNTED      */
      RCNUNIT  PTR(8) CONSTANT( 76), /* UNIT NOT AVAILABLE FOR       */
                                     /*   MOUNTING                   */
      RCRELOP  PTR(8) CONSTANT( 80), /* INVALID OPERATION FOR
                                          RELATIONSHIP       @Y30SSPJ*/
      RCDATE   PTR(8) CONSTANT( 84), /* UNEXPIRED PURGE DATE         */
      RCCRAOP  PTR(8) CONSTANT( 88), /* ERROR WITH CRA OPERATION
                                                             @Y30SSPJ*/
      RCDSEXT  PTR(8) CONSTANT( 92), /* D.S. MAX NO. OF EXTENTS      */
      RCOBTAIN PTR(8) CONSTANT( 94), /* OS/VS DADSM OBTAIN ERROR
                                                             @Y30SSSM*/
      RCSPANCK PTR(8) CONSTANT( 96), /* SPANNED RECORD VALIDITY
                                           CHECK FAILED      @Y30SSPJ*/
      RCRENAME PTR(8) CONSTANT( 98), /* DADSM RENAME ERROR   @Y30SSPJ*/
      RCSCRTCH PTR(8) CONSTANT(102), /* DADSM SCRATCH I/0 ERROR
                                                             @Y30SSPJ*/
      RCCATEX  PTR(8) CONSTANT(104), /* CATALOG EXISTS               */
      RCNTFMT4 PTR(8) CONSTANT(106), /* INVALID FORMAT 4 DSCB
                                           READ FROM VOLUME  @Y30SSPJ*/
      RCINFNAM PTR(8) CONSTANT(108), /* INVALID FIELDNAME            */
      RCPRFNDL PTR(8) CONSTANT(110), /* PROFILE NOT DELETED  @Z40RSRC*/
      RCINFPL  PTR(8) CONSTANT(112), /* INVALID FPL                  */
      RCDUPROF PTR(8) CONSTANT(114), /* DUPLICATE PROFILE    @Z40RSRC*/
      RCCATBAL PTR(8) CONSTANT(116), /* CATALOG OUT-OF-BALANCE       */
      RCNDEFSS PTR(8) CONSTANT(118), /* ENTITY CANNOT BE DEFINED
                                        TO SECURITY SUB SYS  @Z40RSRC*/
      RCSYSFLD PTR(8) CONSTANT(120), /* ATTEMPTED TO MODIFY SYSTEM   */
                                     /* FIELD OR NON-EXISTENT FIELD  */
      RCINCI   PTR(8) CONSTANT(124), /* INVALID CI NUMBER            */
      RCBLKVCK PTR(8) CONSTANT(128), /* VALIDITY CHECK ON USER BLOCK */
      RCINPTR  PTR(8) CONSTANT(132), /* INVALID POINTER              */
      RCMISPAR PTR(8) CONSTANT(136), /* MISSING REQUIRED PARAMETER   */
      RCINCNPM PTR(8) CONSTANT(140), /* INCONSISTENT PARAMETERS      */
      RCINENTN PTR(8) CONSTANT(144), /* INVALID ENTRYNAME            */
      RCVOLOWN PTR(8) CONSTANT(148), /* VOLUME ALREADY OWNED         */
      RCDNECAT PTR(8) CONSTANT(152), /* DELETE OF NON-EMPTY CATALOG  */
      RCNOSPSA PTR(8) CONSTANT(156), /* NO SPACE TO SUBALLOCATE      */
      RCVNDSPD PTR(8) CONSTANT(160), /* VOL NOT DELETED (SPACE DEL)  */
      RCINSSWA PTR(8) CONSTANT(164), /* INSUFF STORAGE FOR WORKAREA  */
      RCINVDTY PTR(8) CONSTANT(168), /* UNSUPPORTED DEVICE TYPE      */
      RCDUPNVL PTR(8) CONSTANT(172), /* DUPLICATE NAME ON VOLUME     */
      RCNSPVTC PTR(8) CONSTANT(176), /* NO SPACE ON VTOC             */
      RCDSNFND PTR(8) CONSTANT(180), /* DATA SPACE NOT FOUND         */
      RCDSO    PTR(8) CONSTANT(184), /* DATA SET OPEN - CANNOT       */
                                     /*   DELETE             @Y30SSSB*/
      RCCATUNA PTR(8) CONSTANT(188), /* CATALOG UNAVAILABLE          */
      RCMLRSZ  PTR(8) CONSTANT(192), /* MAX. LOG. REC. SIZE EXCEEDED */
      RCMCISZD PTR(8) CONSTANT(196), /* MAX CI SIZE EXCEEDED - DATA  */
      RCMCISZI PTR(8) CONSTANT(200), /* MAX CI SIZE EXCEEDED - INDEX */
      RCKEYINC PTR(8) CONSTANT(204), /* KEY EXTENDS BEYOND END OF    */
                                     /*   MAXIMUM LOGICAL RECORD     */
      RCBUFSIZ PTR(8) CONSTANT(208), /* BUFFER SIZE TOO SMALL        */
      RCSIZCAL PTR(8) CONSTANT(212), /* SIZE CALCULATIONS UNSOLVABLE */
      RCVTCBAL PTR(8) CONSTANT(216), /* VTOC OF VOLUME OUT-OF-BALANCE*/
      RCDOSVTC PTR(8) CONSTANT(220), /* DOS VTOC CANNOT BE CONVERTED */
                                     /*   TO OS VTOC                 */
      RCMXGRP  PTR(8) CONSTANT(224), /* CATALOG ENTRY HAS EXCEEDED MAX.
                                          NUMBER OF OCCURRENCES      */
      RCTSAUTH PTR(8) CONSTANT(226), /* TESTAUTH MACRO FAILED
                                                             @Y30SSJG*/
      RCLOCKER PTR(8) CONSTANT(228), /* TIME-OF-DAY CLOCK ERROR      */
      RCHIGH   PTR(8) CONSTANT(230), /* NOT LOW RANGE RECORD ON
                                           CI GET            @Y30SSJG*/
      RCSMFER  PTR(8) CONSTANT(232), /* SMF PROCESSING ERROR         */
      RCLEOD   PTR(8) CONSTANT(234), /* EOD ENCOUNTERED WHILE
                                           READING CATALOG LOW DATA
                                           KEY RANGE         @Y30SSJG*/
      RCSPMAPE PTR(8) CONSTANT(236), /* SPACE MAP SCAN ERROR         */
      RCNOUCEN PTR(8) CONSTANT(238), /* NO USER CATALOG ENTRY IN
                                           MASTER CATALOG FOR
                                           CONVERTV          @Y30SSJG*/
      RCINDER  PTR(8) CONSTANT(240), /* NO DDNAME ERROR      @Y30SSDW*/
      RCEFRMPH PTR(8) CONSTANT(242), /* PHYSICAL ERROR FROM RECORD
                                           MANAGEMENT DURING DELETE
                                           WITH ERASE OPTION @Y30SSPJ*/
      RCEF     PTR(8) CONSTANT(244), /* ERASE FAILED - DELETE NOT    */
                                     /*   PERFORMED                  */
      RCVOLENT PTR(8) CONSTANT(248), /* VOLUME ENTRY DOES NOT EXIST  */
      RCEFRM   PTR(8) CONSTANT(250), /* LOGICAL ERROR FROM RECORD
                                           MANAGEMENT DURING DELETE
                                           WITH ERASE OPTION @Y30SSPJ*/
      RCEE     PTR(8) CONSTANT(252); /* EARLY EXIT CODE              */

 /********************************************************************/
 /*             VSAM  CATALOG  MANAGEMENT  REASON  CODES             */
 /********************************************************************/
    DECLARE                         /* DECLARATION           @Y30SSPJ*/
      RSN0   PTR(31) CONSTANT(  0), /* REASON CODE 0         @Y30SSPJ*/
      RSN2   PTR(31) CONSTANT(  2), /* REASON CODE 2         @Y30SSPJ*/
      RSN4   PTR(31) CONSTANT(  4), /* REASON CODE 4         @Y30SSPJ*/
      RSN6   PTR(31) CONSTANT(  6), /* REASON CODE 6         @Y30SSPJ*/
      RSN8   PTR(31) CONSTANT(  8), /* REASON CODE 8         @Y30SSPJ*/
      RSN10  PTR(31) CONSTANT( 10), /* REASON CODE 10        @Y30SSPJ*/
      RSN12  PTR(31) CONSTANT( 12), /* REASON CODE 12        @Y30SSPJ*/
      RSN14  PTR(31) CONSTANT( 14), /* REASON CODE 14        @Y30SSPJ*/
      RSN16  PTR(31) CONSTANT( 16), /* REASON CODE 16        @Y30SSPJ*/
      RSN18  PTR(31) CONSTANT( 18), /* REASON CODE 18        @Y30SSPJ*/
      RSN20  PTR(31) CONSTANT( 20), /* REASON CODE 20        @Y30SSPJ*/
      RSN22  PTR(31) CONSTANT( 22), /* REASON CODE 22        @Y30SSPJ*/
      RSN24  PTR(31) CONSTANT( 24), /* REASON CODE 24        @Y30SSPJ*/
      RSN26  PTR(31) CONSTANT( 26), /* REASON CODE 26        @Y30SSPJ*/
      RSN28  PTR(31) CONSTANT( 28), /* REASON CODE 28        @Y30SSPJ*/
      RSN30  PTR(31) CONSTANT( 30), /* REASON CODE 30        @Y30SSPJ*/
      RSN32  PTR(31) CONSTANT( 32), /* REASON CODE 32        @Y30SSPJ*/
      RSN34  PTR(31) CONSTANT( 34), /* REASON CODE 34        @Y30SSPJ*/
      RSN36  PTR(31) CONSTANT( 36), /* REASON CODE 36        @Y30SSPJ*/
      RSN38  PTR(31) CONSTANT( 38), /* REASON CODE 38        @Y30SSPJ*/
      RSN40  PTR(31) CONSTANT( 40), /* REASON CODE 40        @Y30SSPJ*/
      RSN42  PTR(31) CONSTANT( 42), /* REASON CODE 42        @Y30SSPJ*/
      RSN44  PTR(31) CONSTANT( 44), /* REASON CODE 44        @Y30SSPJ*/
      RSN46  PTR(31) CONSTANT( 46), /* REASON CODE 46        @Y30SSPJ*/
      RSN48  PTR(31) CONSTANT( 48), /* REASON CODE 48        @Y30SSPJ*/
      RSN50  PTR(31) CONSTANT( 50), /* REASON CODE 50        @Y30SSPJ*/
      RSN52  PTR(31) CONSTANT( 52), /* REASON CODE 52        @Y30SSPJ*/
      RSN54  PTR(31) CONSTANT( 54), /* REASON CODE 54        @Y30SSPJ*/
      RSN56  PTR(31) CONSTANT( 56), /* REASON CODE 56        @Y30SSPJ*/
      RSN58  PTR(31) CONSTANT( 58), /* REASON CODE 58        @Y30SSPJ*/
      RSN60  PTR(31) CONSTANT( 60), /* REASON CODE 60        @Y30SSPJ*/
      RSN62  PTR(31) CONSTANT( 62), /* REASON CODE 62        @Y30SSPJ*/
      RSN64  PTR(31) CONSTANT( 64), /* REASON CODE 64        @Y30SSPJ*/
      RSN66  PTR(31) CONSTANT( 66), /* REASON CODE 66        @Y30SSPJ*/
      RSN68  PTR(31) CONSTANT( 68), /* REASON CODE 68        @Y30SSPJ*/
      RSN70  PTR(31) CONSTANT( 70), /* REASON CODE 70        @Y30SSPJ*/
      RSN72  PTR(31) CONSTANT( 72), /* REASON CODE 72        @Y30SSPJ*/
      RSN74  PTR(31) CONSTANT( 74), /* REASON CODE 74        @Y30SSPJ*/
      RSN76  PTR(31) CONSTANT( 76), /* REASON CODE 76        @Y30SSPJ*/
      RSN78  PTR(31) CONSTANT( 78), /* REASON CODE 78        @Y30SSPJ*/
      RSN80  PTR(31) CONSTANT( 80), /* REASON CODE 80        @Y30SSPJ*/
      RSN82  PTR(31) CONSTANT( 82), /* REASON CODE 82        @Y30SSPJ*/
      RSN84  PTR(31) CONSTANT( 84), /* REASON CODE 84        @Y30SSPJ*/
      RSN86  PTR(31) CONSTANT( 86), /* REASON CODE 86        @Y30SSPJ*/
      RSN88  PTR(31) CONSTANT( 88), /* REASON CODE 88        @Y30SSPJ*/
      RSN90  PTR(31) CONSTANT( 90), /* REASON CODE 90        @Y30SSPJ*/
      RSN92  PTR(31) CONSTANT( 92), /* REASON CODE 92        @Y30SSPJ*/
      RSN94  PTR(31) CONSTANT( 94), /* REASON CODE 94        @Y30SSPJ*/
      RSN96  PTR(31) CONSTANT( 96), /* REASON CODE 96        @Y30SSPJ*/
      RSN98  PTR(31) CONSTANT( 98), /* REASON CODE 98        @Y30SSPJ*/
      RSN100 PTR(31) CONSTANT(100), /* REASON CODE 100       @Y30SSPJ*/
      RSN102 PTR(31) CONSTANT(102), /* REASON CODE 102       @Y30SSPJ*/
      RSN104 PTR(31) CONSTANT(104), /* REASON CODE 104       @Y30SSPJ*/
      RSN106 PTR(31) CONSTANT(106), /* REASON CODE 106       @Y30SSPJ*/
      RSN108 PTR(31) CONSTANT(108), /* REASON CODE 108       @Y30SSPJ*/
      RSN110 PTR(31) CONSTANT(110), /* REASON CODE 110       @Y30SSPJ*/
      RSN112 PTR(31) CONSTANT(112), /* REASON CODE 112       @Y30SSPJ*/
      RSN114 PTR(31) CONSTANT(114), /* REASON CODE 114       @Y30SSPJ*/
      RSN116 PTR(31) CONSTANT(116), /* REASON CODE 116       @Y30SSPJ*/
      RSN118 PTR(31) CONSTANT(118), /* REASON CODE 118       @Y30SSPJ*/
      RSN120 PTR(31) CONSTANT(120), /* REASON CODE 120       @Y30SSPJ*/
      RSN122 PTR(31) CONSTANT(122), /* REASON CODE 122       @Y30SSPJ*/
      RSN124 PTR(31) CONSTANT(124), /* REASON CODE 124       @Y30SSPJ*/
      RSN126 PTR(31) CONSTANT(126); /* REASON CODE 126       @Y30SSPJ*/
./ ADD NAME=IGGMDCRA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMDCRA                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = DECLARATIONS FOR DEFINE CATALOG             */
 /*                      RECOVERY AREA PROCESSING                    */
 /*                                                                  */
 /*   FUNCTION = CONTAINS THE MAPPING STRUCTURE FOR THE DEFINE       */
 /*              CATALOG RECOVERY AREA WORKAREA, RECORD MAPPING      */
 /*              STRUCTURES, AND CONSTANTS AND REGISTER              */
 /*              DECLARATIONS USED IN DEFINE CRA PROCESSING.         */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY A BASE FOR SOME STRUCTURES */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 3 SEPT 75    @ZA05914                    */
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /*     DECLARE  BASE  REGISTER  FOR  THE  DEFINE  CRA  WORKAREA     */
 /********************************************************************/
    DECLARE
      DCRAWAPR PTR(31) REG(3) RSTD; /* POINTER TO DEFINE CRA WORKAREA*/
 /********************************************************************/
 /*            D E F I N E     C R A     W O R K A R E A             */
 /********************************************************************/
    DECLARE
      1 DCRAWKA BASED(DCRAWAPR),    /* DEFINE CRA WORKAREA MAPPING   */
        2 DCRACIPT (6) PTR(31),     /* ARRAY OF PTRS TO CRA CI'S 0-5 */
        2 DCRADSWA PTR(31),         /* SAVE ADDR OF CLAQ'S WORKAREA  */
        2 DCRADSUL PTR(31),         /* SAVE ADDR OF CLAQ'S VOLUME    */
                                    /*   SERIAL LIST                 */
        2 DCRADSAF PTR(31),         /* SAVE ADDR OF CLAQ'S DATA SET  */
                                    /*   ATTRIBUTES FPL              */
        2 DCRAOFPL PTR(31),         /* SAVE ADDR OF CLAQ'S SPACE     */
                                    /*   ALLOCATION FPL              */
        2 DCRAFVEN PTR(31),         /* CLAQ'S SPACE FVT     @ZA05914 */
                                    /* ENTRY NAME ADDRESS   @ZA05914 */
        2 DCRAR1PT PTR(31),         /* SAVE CCAR1REC RECORD POINTER  */
        2 DCRAR2PT PTR(31),         /* SAVE CCAR2REC RECORD POINTER  */
        2 DCRACHIU PTR(32),         /* HIGH USED RBA OF CRA          */
        2 DCRACHIA PTR(32),         /* HIGH ALLOCATED RBA OF CRA     */
        2 DCRAMNLN FIXED(31),       /* GETMAIN CORE LENGTH           */
        2 DCRATRCY FIXED(15),       /* NO. OF TRACKS PER CYLINDER    */
        2 DCRABTRK FIXED(15),       /* NO. OF BLOCKS PER TRACK       */
        2 DCRADESA                  /* DADSM EXTENT INFO SAVE AREA   */
             CHAR(LENGTH(CCADESA)),
        2 DCRAMCPL,                 /* CPL FOR MODIFY FUNCTION       */
          3 * CHAR(LENGTH(CTGPL)),  /* MAIN BODY OF CPL              */
          3 * CHAR(LENGTH(CTGFIELD)), /* POINTER TO AMDSB FPL        */
          3 * CHAR(LENGTH(CTGFIELD)), /* POINTER TO ASSOCIATION FPL  */
          3 * CHAR(LENGTH(CTGFIELD)), /* POINTER TO VOLUME G.O. FPL  */
        2 DCRAMFPL,                 /* AMDSB FPL FOR MODIFY FUNCTION */
          3 * CHAR(LENGTH(CTGFL)),  /* MAIN BODY OF FPL              */
          3 * CHAR(LENGTH(CTGFLDAT)), /* POINTER TO AMDSB            */
        2 DCRAMDSB CHAR(LENGTH(IDAAMDSB)), /* AMDSB SET OF FIELDS    */
        2 DCRASFPL,                 /* IN-CORE FPL FOR ASSOCIATION   */
          3 * CHAR(LENGTH(CTGFL)),  /* FIELD PARAMETER LIST (FPL)    */
          3 * CHAR(LENGTH(CTGFLDAT)), /* DATA LENGTH & DATA ADDR PAIR*/
        2 DCRASSOC,                 /* ASSOCIATION SET OF FIELDS     */
          3 DCRATYPE CHAR(1),       /* ASSOCIATION OBJECT TYPE       */
          3 DCRANAME PTR(24) BDY(BYTE), /* ASSOCIATION OBJECT NAME   */
        2 DCRAVFPL,                 /* VOLUME G.O. FPL FOR MODIFY    */
          3 * CHAR(LENGTH(CTGFL)),  /* MAIN BODY OF FPL              */
          3 * CHAR(LENGTH(CTGFLDAT)), /* POINTER TO VOLUME GRP OCCUR */
        2 DCRAVGO,                  /* VOLUME GROUP OCCURRENCE FIELDS*/
          3 * CHAR(LENGTH(CNTRLINF)), /* VGO CONTROL INFORMATION     */
          3 DCRAVGOM CHAR(LENGTH(GVO)), /* MAIN BODY OF VOL G.O.     */
          3 * CHAR(LENGTH(CMFXECTS)), /* VOLUME EXTENT STRUCTURE     */
        2 DCRARACI CHAR(3072) BDY(DWORD), /* CRA CI'S 0-5 BUILD AREA */
          3 DCRACI0  CHAR(512),     /* BUILD AREA FOR CRA CI 0       */
            4 DCRASALP CHAR(LENGTH(SALPARL)), /* SUBALLOC PARM LIST  */
              5 DCRASPRM CHAR(LENGTH(SPACEPRM)),
                                    /* SPACE ALLOCATION PARAMETERS   */
              5 DCRADSVL,           /* DEFINE SPACE VOLUME LIST      */
                6 * CHAR(LENGTH(USERLIST)), /* VOLUME LIST MAIN BODY */
                6 * CHAR(LENGTH(LTENTRY)), /* ONE VOLUME LIST ENTRY  */
          3 DCRACI15 CHAR(2560),    /* BUILD AREA FOR CRA CI'S 1-5   */
            4 * CHAR(2048),         /* BUILD AREA FOR CRA CI'S 1-4   */
            4 DCRACI5 CHAR(512),    /* CRA CI 5 - EXTENSION RECORD   */
              5 * CHAR(LENGTH(CATRCD)), /* NON-REPEATING FIELDS      */
              5 * CHAR(LENGTH(REPCNTRL)), /* REPEATING FIELD CONTROL
                                             INFORMATION             */
              5 * CHAR(LENGTH(CATGOPT)), /* GROUP OCCURRENCE POINTER */
              5 * CHAR(LENGTH(CNTRLINF)), /* VGO CONTROL INFORMATION */
              5 DCRA5VGO CHAR(LENGTH(GVO)), /* VOLUME INFORMATION
                                               SET-OF-FIELDS         */
        2 DCRAEND CHAR(0);          /* END OF DEFINE CRA WORKAREA    */
 /********************************************************************/
 /*     SAVE AREA FOR RECORD AREA BLOCK 3 AND RECORD AREA 3.         */
 /*     THIS AREA IS OBTAINED AND ATTACHED TO THE END OF THE         */
 /*     REGULAR DEFINE CRA WORKAREA ONLY IF THE CALLER OF DEFINE     */
 /*     CRA IS DEFINE CATALOG (IGG0CLAS).                            */
 /********************************************************************/
    DECLARE
      1 DCRARABS BASED(ADDR(DCRAEND)), /* ATTACH TO WORKAREA END     */
        2 DCRARAB3 CHAR(LENGTH(CCARAB)), /* SAVE AREA FOR RAB 3      */
        2 DCRARA3(2) CHAR(256);     /* SAVE AREA FOR RECORD AREA 3   */
 /********************************************************************/
 /*           CRA  CONTROL  RECORD  (CI 3)  INFORMATION              */
 /********************************************************************/
    DECLARE
      1 CCRCNTRL BASED(ADDR(RCDID)) POSITION(2),
        2 CCRHACI PTR(24) BDY(BYTE), /* NO. OF THE HIGH ALLOCATED CI */
        2 CCRNFCI PTR(24) BDY(BYTE); /* NO. OF THE NEXT FREE CI      */
 /********************************************************************/
 /*           STRUCTURE  FOR  A  BUFFERED  VOLUME  RECORD            */
 /********************************************************************/
    DECLARE
      1 BUFVOLRD BASED,             /* BUFFERED RECORD STRUCTURE     */
        2 BUFRECRD CHAR(508),       /* ACTUAL VOLUME RECORD          */
        2 BUFNEXTB PTR(31);         /* ADDR OF NEXT BUFFERED RECORD  */
 /********************************************************************/
 /*         C O N S T A N T     D E C L A R A T I O N S              */
 /********************************************************************/
    DECLARE
      BLANK    FIXED(31) CONSTANT(0),    /* A ZERO-VALUE COMPARATOR  */
      DCRACISZ FIXED(31) CONSTANT(512),  /* CONTROL INTERVAL SIZE    */
      DCRARCSZ FIXED(31) CONSTANT(505),  /* MAXIMUM RECORD SIZE      */
      DCRABRSZ FIXED(31) CONSTANT(2048), /* MINIMUM BUFFER SIZE (2K) */
      LEN10CIS FIXED(31) CONSTANT(5120), /* LENGTH OF 10 CRA CI'S    */
      ACTCOUNT FIXED(8)  CONSTANT(1), /* CATALOG ACTIVITY COUNT      */
      GOSEQNUM FIXED(8)  CONSTANT(1), /* GROUP OCCUR SEQUENCE NO.    */
      NUMLAPRS FIXED(8)  CONSTANT(1), /* NO. LENG/ADDR PAIRS IN FPL  */
      NUMGOPTR FIXED(8)  CONSTANT(1), /* NO. OF GROUP OCCURRENCE PTRS*/
      FREECI1  FIXED(8)  CONSTANT(1), /* FREE RECORD CI NUMBER       */
      STRINGNO FIXED(8)  CONSTANT(1), /* NUMBER OF STRINGS (ACB)     */
      NUMEXTS  FIXED(8)  CONSTANT(1), /* NUMBER OF EXTENTS FOR CRA   */
      CNTGOPTR FIXED(8)  CONSTANT(2), /* COUNT OF GROUP OCCUR PTRS   */
      CLUSTRCI FIXED(8)  CONSTANT(2), /* CLUSTER RECORD CI NUMBER    */
      DATBUFNO FIXED(8)  CONSTANT(2), /* NO. OF DATA BUFFERS (ACB)   */
      LNCATTR1 FIXED(8)  CONSTANT(1), /* LENGTH OF 'CATTR1' FLAG BYTE*/
      INCR1    FIXED(8)  CONSTANT(1), /* INCREMENTING VALUE          */
      INCR2    FIXED(8)  CONSTANT(2), /* CONSTANT 2                  */
      NUMFPLS  FIXED(8)  CONSTANT(3), /* NUMBER OF FPL'S FOR MODIFY  */
      CCRCINO  FIXED(8)  CONSTANT(3), /* CRA CONTROL RECORD CI NO.   */
      FREECI4  FIXED(8)  CONSTANT(4), /* FREE RECORD CI NUMBER       */
      EXTCINO  FIXED(8)  CONSTANT(5), /* DATA EXTENTION RECORD CI NO.*/
      CNTRLENG FIXED(8)  CONSTANT(6), /* TOTAL LENGTH OF CNTRL INFO  */
      SYSMASK  BIT(32) CONSTANT('FFDFFFFF'X), /* MASK FOR TURNING OFF
                                            CPU-SHARE BIT IN DEVICE
                                            TYPE OPTIONS FIELD       */
      NULLDATE BIT(24) CONSTANT('00000F'X), /* NULL EXPIRATION DATE  */
      CI2ASSOC BIT(24) CONSTANT('0006C4'X), /* CI 2 ASSOCIATION      */
      XIOPTNS  BIT(8)  CONSTANT('09'X), /* IGGPXIO OPTION CODES      */
      AMDIDVAL BIT(8)  CONSTANT('60'X), /* AMDSB ID CHARACTER        */
      SHROPTNS BIT(8)  CONSTANT('A0'X), /* REGION/SYSTEM SHARE OPTNS */
      FREERCID CHAR(1) CONSTANT('F'), /* FREE RECORD ID CHARACTER    */
      CCRRECID CHAR(1) CONSTANT('L'), /* CRA CONTROL RECORD ID CHAR  */
      STOP     CHAR(2) CONSTANT('NG'), /* LOOP CONTROL - HALT        */
      GO       CHAR(2) CONSTANT('GO'), /* LOOP CONTROL - PROCEED     */
      NAMEDS   CHAR(8) CONSTANT('NAMEDS  '), /* COMBINATION NAME
                                                     AND TYPE FIELDS */
      NULLDWRD BIT(64)                /* 8-BYTE NULL OWNER ID FIELD  */
               CONSTANT('FFFFFFFFFFFFFFFF'X);
 /********************************************************************/
 /*             O T H E R     D E C L A R A T I O N S                */
 /********************************************************************/
    DECLARE
      DCRACI2A PTR(24) BASED(CCACPE3); /* ASSOCIATION FIELDS IN CI 2 */
    DECLARE
      DCRADDNM CHAR(8) BASED;       /* DUMMY DDNAME FOR CRA ACB      */
    DECLARE
      DCRARCTR FIXED(31) REG(4) RSTD; /* RECORD CI COUNTER           */
./ ADD NAME=IGGMDRWA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMDRWA                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = DSCB READ WORKAREA                          */
 /*                                                                  */
 /*   FUNCTION = USED TO READ FORMAT 1 DSCB FOR CATALOGS AND         */
 /*              CLUSTER RECORD OF CATALOGS DURING OPEN OF A         */
 /*              CATALOG (NON-BUILD CASE).                           */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   CREATED BY: VSAM CATALOG OPEN ACB PROCESSOR (IFG0191X)         */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 17 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
 %IF SYSTEM ='DOS' %THEN %GOTO DRWAWP1;
    DECLARE
      1 IGGMDRWA BASED(CAXDRWP),    /* BASE IS IN CAXWA              */
        2 DRWDEB CHAR(48) BDY(WORD), /* DEB AREA                     */
          3 * CHAR(16),             /* FILLER                        */
          3 DRWDEXT PTR(8),         /* DEB EXTENT COUNT              */
          3 * CHAR(7),              /* FILLER                        */
          3 DRWDID PTR(8),          /* DEB ID                        */
          3 DRWDDCB PTR(24),        /* DCB PTR                       */
          3 DRWDEXS PTR(8),         /* EXTENT SCALE                  */
          3 DRWDAPP PTR(24),        /* IOS APP. TABLE ADDR           */
          3 DRWDMOD PTR(8),         /* DEVICE MOD.                   */
          3 DRWDUCB PTR(24),        /* UCB ADDR                      */
          3 DRWDBB  PTR(15),        /* BB FROM SEEK                  */
          3 DRWSCC  CHAR(4),        /* START CCHH OF EXTENT          */
          3 DRWECC  CHAR(4),        /* END CCHH OF EXTENT            */
          3 DRWNTK  CHAR(2),        /* NO. TRACKS IN EXTENT          */
        2 DRWDEBP PTR(31),          /* DCB DEB PTR                   */
        2 DRWECB PTR(31),           /* ECB                           */
          3 DRWECMP PTR(8),         /* ECB COMP CODE                 */
          3 *       PTR(24),        /* RESERVED                      */
        2 DRWIOB CHAR(32) BDY(WORD), /* IOB AREA                     */
          3 *  CHAR(2),             /* FILLER                @XA03929*/
          3 DRWISN0 CHAR(1),        /* SENSE BYTE ZERO       @XA03929*/
          3 DRWISN1 CHAR(1),        /* SENSE BYTE ONE        @XA03929*/
          3 DRWIECB PTR(31),        /* ECB PTR                       */
          3 *       CHAR(8),        /* FILLER                        */
          3 DRWSCP  PTR(31),        /* CHANNEL PROG START ADDR       */
          3 DRWIDCB PTR(31),        /* IOB DCB PTR                   */
          3 *       CHAR(8),        /* FILLER                        */
        2 DRWSEEK CHAR(8),          /* IOB SEEK FIELD                */
          3 * CHAR(3),              /* M B B   AREA          @XA03929*/
          3 DRWSECC CHAR(2),        /* C C OF SEEK           @XA03929*/
          3 DRWSEHH CHAR(2),        /* H H OF SEEK           @XA03929*/
          3 DRWSER  CHAR(1),        /* R OF SEEK             @XA03929*/
        2 DRWCCW CHAR(104) BDY(DWORD), /* CCW AREA                   */
          3 DRWCCW0 CHAR(8),        /* SET SECTOR CCW                */
          3 DRWCCW1 CHAR(8),        /* SEARCH ID EQUAL               */
          3 DRWCCW2 CHAR(8),        /* TIC  CCW1                     */
          3 DRWCCW3 CHAR(8),        /* READ DATA                     */
          3 DRWCCW4 CHAR(8),        /* SEARCH EQ OR HI               */
          3 DRWCCW5 CHAR(8),        /* TIC CCW9                      */
          3 DRWCCW6 CHAR(8),        /* SEARCH EQ/HI KEY              */
          3 DRWCCW7 CHAR(8),        /* READ COUNT                    */
          3 DRWCCW8 CHAR(8),        /* TIC CCW11                     */
          3 DRWCCW9 CHAR(8),        /* SEARCH EQ/HI KEY              */
          3 DRWCCW10 CHAR(8),       /* TIC CCW4                      */
          3 DRWCCW11 CHAR(8),       /* READ DATA                     */
          3 DRWCCW12 CHAR(8),       /* READ COUNT                    */
        2 DRWTHETA PTR(8),          /* SET SECTOR THETA              */
        2 *        PTR(8),          /* RESERVED              @XA03929*/
        2 DRWF4TC CHAR(2),          /* TRACKS PER CYLINDER   @XA03929*/
        2 DRWRIA  CHAR(512),        /* READ IN AREA                  */
          3 DRWSKEY CHAR(44),       /* SEARCH KEY ARG                */
          3 DRWDSCB CHAR(140),      /* DSCB AREA F4 OR F1            */
          3 DRWCNT CHAR(5),         /* COUNT FIELD FOR RESEEK        */
          3 DRWHPCHR CHAR(5);       /* HI WATER MARK CCHHR           */
    DECLARE
      DRWDCB CHAR(44) DEF(DRWDEB) POS(5) BDY(WORD); /* DCB           */
 %IF SYSTEM ^='DOS' %THEN %GOTO DRWAWP2;
 %DRWAWP1:;
    DECLARE
      1 IGGMDRWA BASED(CAXDRWP),    /* BASE IS IN CAXWA              */
        2 DRWCCB CHAR(16) BDY(DWORD), /* DOS CCB FOR PIOCS           */
          3 DRWRCNT FIXED(15),      /* RESIDUAL COUNT                */
          3 DRWTRINF CHAR(2),       /* TRANSMISSION INFORMATION      */
            4 DRWBYTE2 CHAR(1),     /* CCB-BYTE 2                    */
            4 DRWBYTE3 CHAR(1),     /* CCB-BYTE 3                    */
          3 DRWCSWSB BIT(16),       /* CSW STATUS BITS               */
          3 DRWSUAD CHAR(2),        /* SYMBOLIC UNIT ADDRESS         */
          3 * CHAR(1),              /* RESERVED FOR LIOCS            */
          3 DRWSCP PTR(24),         /* A(CHANNEL PROGRAM)            */
          3 * CHAR(1),              /* RESERVED FOR PIOCS            */
          3 * PTR(24),              /* CCW ADDRESS IN CSW            */
        2 DRWSEEK CHAR(8),          /* IOB SEEK FIELD                */
        2 DRWCCW  CHAR(104) BDY(DWORD), /* CCW AREA                  */
          3 DRWCCW0 CHAR(8),        /* SET SECTOR CCW                */
          3 DRWCCW1 CHAR(8),        /* SEARCH ID EQUAL               */
          3 DRWCCW2 CHAR(8),        /* TIC  CCW1                     */
          3 DRWCCW3 CHAR(8),        /* READ DATA                     */
          3 DRWCCW4 CHAR(8),        /* SEARCH EQ OR HI               */
          3 DRWCCW5 CHAR(8),        /* TIC CCW9                      */
          3 DRWCCW6 CHAR(8),        /* SEARCH EQ/HI KEY              */
          3 DRWCCW7 CHAR(8),        /* READ COUNT                    */
          3 DRWCCW8 CHAR(8),        /* TIC CCW11                     */
          3 DRWCCW9 CHAR(8),        /* SEARCH EQ/HI KEY              */
          3 DRWCCW10 CHAR(8),       /* TIC CCW4                      */
          3 DRWCCW11 CHAR(8),       /* READ DATA                     */
          3 DRWCCW12 CHAR(8),       /* READ COUNT                    */
        2 DRWTHETA PTR(8),          /* SET SECTOR THETA              */
        2 *        PTR(24),         /* RESERVED                      */
        2 DRWRIA  CHAR(512),        /* READ IN AREA                  */
          3 DRWSKEY CHAR(44),       /* SEARCH KEY ARG                */
          3 DRWDSCB CHAR(140);      /* DSCB AREA F4 OR F1            */
 %DRWAWP2:;
./ ADD NAME=IGGMEND
 % IGGMEND:
           MACRO ;
           DCL IGGGVCCT CHAR EXT ;  /* PROCESSING CONTROL VARIABLE   */
           DCL (BLANKS,ASTERICS) CHAR;  /* COMMENT VARIABLES @Y30SSDW*/
           BLANKS = REPEAT(' ',65); /* PADDING - 66 BLANKS   @Y30SSDW*/
           ASTERICS = REPEAT('*',65); /* A ROW OF ASTERISKS  @Y30SSDW*/
           ANS ('CALL EXIT;') SKIP COL(12);
           ANS ('/* RETURN TO CALLER         */') COL(37);/* @Y30SSDW*/
           IF IGGGVCCT = '3' THEN       /*ANY INNER PROCS           */
             DO;                        /* YES-CLOSE LAST INNER PROC*/
               ANS ('END ;') SKIP COL(12);
               ANS ('/* END OF INNER PROCEDURE   */') COL(37);
             END;
           ANS ('@EJECT ASSEMBLE;') SKIP COL(2);           /*@ZA29164*/
           ANS (COMMENT(ASTERICS)) COL(2);                /* @Y30SSDW*/
           ANS (COMMENT(BLANKS)) COL(2);                  /* @Y30SSDW*/
           ANS ('/') COL(2);                              /* @Y30SSDW*/
           ANS ('*') COL(3);                              /* @Y30SSDW*/
           ANS ('RETURN-TO-CALLER  PROCEDURE-EXITING  SUBFUNCTION')
               COL(13);                                   /* @Y30SSDW*/
           ANS ('*') COL(70);                             /* @Y30SSDW*/
           ANS ('/') COL(71);                             /* @Y30SSDW*/
           ANS (COMMENT(BLANKS)) COL(2);                  /* @Y30SSDW*/
           ANS (COMMENT(ASTERICS)) COL(2);                /* @Y30SSDW*/
           ANS ('EXIT:     PROC OPTIONS(NOSAVEAREA,NOSAVE);')
              SKIP COL(2);
           ANS ('/* SPECIFY PROCEDURE OPTIONS     */')
               COL(37);                                   /* @Y30SSDW*/
           ANS ('GEN(LM 12,14,0(13));') SKIP COL(12);
           ANS ('/* RESTORE REGISTERS OF CALLER */')
                COL(37);                                  /* @Y30SSDW*/
           ANS ('GEN(MVI 12(13),255);') SKIP COL(12);       /* Y02020*/
           ANS ('/* MARK END OF PDL          */') COL(37);  /* Y02020*/
           ANS ('GEN(BR 14);') SKIP COL(12);
           ANS ('/* RETURN TO CALLER         */') COL(37);
           ANS ('PATCH:    GEN(DC (12+((*+139-@MAINENT)/140))A(0));')
             SKIP COL(2);
           ANS ('/* PATCH AREA               */') COL(41);
           ANS ('END ;') SKIP COL(12);
           ANS ('/* END OF EXIT PROCEDURE   */') COL(37); /* @Y30SSDW*/
           ANS ('END ;') SKIP COL(12);  /*END OF OUTER PROCEDURE    */
 % END ;
./ ADD NAME=IGGMF4WA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMF4WA                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = READ/WRITE FORMAT 4 DSCB WORKAREA           */
 /*                                                                  */
 /*   FUNCTION = MAPPING MACRO FOR THE FORMAT 4 DSCB AND A           */
 /*              RELATED BUFFER/WORKAREA.                            */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY A BASE FOR IGGMF4WA        */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 17 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
    DECLARE
      1 IGGMF4WA BDY(DWORD) BASED,  /* FORMAT 4 DSCB WORKAREA        */
        2 F4WDEB CHAR(48) BDY(DWORD), /* DEB AREA                    */
          3 *  CHAR(16),            /* FILLER                        */
          3 F4WEXT PTR(8),          /* EXTENT COUNT                  */
          3 *  CHAR(7),             /* FILLER                        */
          3 F4WDID PTR(8),          /* DEB ID                        */
          3 F4WDDCB PTR(24),        /* DCB PTR                       */
          3 F4WDEXS PTR(8),         /* EXTENT SCALE                  */
          3 F4WDAPP PTR(24),        /* IOS APP. TABLE ADDRESS        */
          3 F4WDMOD PTR(8),         /* DEVICE MODIFIER               */
          3 F4WDUCB PTR(24),        /* UCB ADDRESS                   */
          3 F4WDBB  PTR(15),        /* BB FROM SEEK                  */
          3 F4WSCC  CHAR(4),        /* START CCHH OF EXTENT          */
          3 F4WECC  CHAR(4),        /* END CCHH OF EXTENT            */
          3 F4WNTK  CHAR(2),        /* NO. OF TRACKS IN EXTENT       */
        2 F4WDEBP   PTR(31),        /* DCB DEB PTR                   */
        2 F4WECB    PTR(31),        /* ECB                           */
          3 F4WECMP PTR(8),         /* ECB COMPLETION CODE           */
          3  *      PTR(24),        /* RESERVED                      */
        2 F4WIOB CHAR(32) BDY(WORD), /* IOB                          */
          3 *       PTR(31),        /* FILLER                        */
          3 F4WIECB PTR(31),        /* PTR TO ECB                    */
          3 *       CHAR(8),        /* FILLER                        */
          3 F4WSCP  PTR(31),        /* PTR TO CHANNEL PROGRAM START  */
          3 F4WIDCB PTR(31),        /* PTR TO DCB                    */
          3 *       CHAR(8),        /* FILLER                        */
        2 F4WSEEK   CHAR(8),        /* SEEK FIELD                    */
        2 F4WCCW CHAR(24) BDY(DWORD), /* CHANNEL PROGRAM AREA        */
          3 F4WCCW1 CHAR(8),        /* SEARCH ID EQUAL               */
          3 F4WCCW2 CHAR(8),        /* TIC CCW1                      */
          3 F4WCCW3 CHAR(8),        /* READ OR WRITE DATA            */
        2 F4WBUF    CHAR(140);      /* BUFFER AREA                   */
    DECLARE
      F4WDCB CHAR(44) DEF(F4WDEB) POS(5); /* DCB                     */
./ ADD NAME=IGGMGVO
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMGVO                                           */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = VOLUME INFORMATION SET OF FIELDS            */
 /*                                                                  */
 /*   FUNCTION = MAPPING FOR THE VOLUME OCCURRENCE FIELDS AS THEY    */
 /*              APPEAR IN THE RECORDS.  ALSO, A MAPPING OF THE      */
 /*              EXTENT STRUCTURE IN THE VOLUME OCCURRENCES.         */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY A BASE FOR GVO             */
 /*                             AND/OR CMFXECTS(*)                   */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 17 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /*         VOLUME  GROUP  OCCURRENCE  AS  IN  THE  RECORDS          */
 /********************************************************************/
    DECLARE
      1 GVO BASED,                   /* VOLUME OCCURRENCE STRUCTURE  */
        2 CMFLDEVT PTR(32) BDY(BYTE),/* DEVICE TYPE                  */
        2 CMFLVOL  CHAR(6),          /* VOLUME SERIAL NUMBER         */
        2 CMFLFLSQ FIXED(15),        /* FILE SEQUENCE NUMBER         */
        2 CMFLVLFL BIT(8),           /* VOLUME FLAGS                 */
          3 CMFLVLPR BIT(1),         /* PRIME VOLUME                 */
          3 CMFLVLCN BIT(1),         /* CANDIDATE VOLUME             */
          3 CMFLVLOV BIT(1),         /* OVERFLOW VOLUME              */
          3 *        BIT(5),         /* RESERVED                     */
        2 CMFLNOEX PTR(8),           /* NO. OF EXTENTS               */
        2 CMFLHKBA PTR(32) BDY(BYTE),/* HIGH KEY CI VALUE, RANGE     */
        2 CMFLHUBA PTR(32) BDY(BYTE),/* HIGH USED RBA                */
        2 CMFLHABA PTR(32) BDY(BYTE),/* HIGH ALLOCATED RBA           */
        2 CMFLPHYB PTR(32) BDY(BYTE),/* PHYSICAL BLOCKSIZE           */
        2 CMFLNBTK FIXED(15),        /* BLOCKS PER TRACK             */
        2 CMFLNTKA FIXED(15),        /* TRACKS PER CONTROL AREA      */
        2 CMFLITEX BIT(8),           /* TYPE OF EXTENT               */
          3 CMFLSSDT BIT(1),         /* SEQUENCE SET WITH DATA       */
          3 CMFLNOPF BIT(1),         /* NOT PREFORMATTED SPACE       */
          3 *        BIT(6),         /* RESERVED                     */
        2 CMFLSSDS FIXED(15) BDY(BYTE),/* SS NO. OF DATA SET DIRCTRY */
        2 CMFOVERL CHAR(14);         /* STRUCTURE END INDICATION
                                                               Y02020*/
 /********************************************************************/
 /*                TRACK  OVERFLOW   (PAGE SPACE)              Y02020*/
 /********************************************************************/
    DECLARE
      1 CMFOVLAY BASED (ADDR(CMFOVERL)-8),                  /* Y02020*/
        2 CMFBYTRK FIXED(31) BDY(BYTE),/* BYTES PER TRACK (PAGE SPACE)
                                                               Y02020*/
        2 CMFBYTAU FIXED(31) BDY(BYTE),/* BYTES PER ALLOCATION UNIT
                                                               Y02020*/
        2 CMFLLKLN FIXED(15) BDY(BYTE),/* LOW KEY VALUE LENGTH       */
        2 CMFLHKLN FIXED(15) BDY(BYTE),/* HIGH KEY VALUE LENGTH      */
        2 CMFLEXLN FIXED(15) BDY(BYTE),/* LENGTH OF EXTENTS          */
        2 CMFLEND CHAR(0);          /* END OF VOLUME OCCUR FIELDS    */
 /********************************************************************/
 /*            EXTENT  STRUCTURE  IN  VOLUME  OCCURRENCES            */
 /********************************************************************/
    DECLARE
      1 CMFXECTS (*) CHAR(20) BASED, /* EXTENT STRUCTURE             */
        2 CMFXEXSS FIXED(15) BDY(BYTE),/* SPACE SEQUENCE NO.         */
        2 CMFXEXST CHAR(4),          /* STARTING CCHH                */
          3 CMFXSTA PTR(31) BDY(BYTE),/* ARITHMETIC FORM - CCHH      */
            4 CMFXSTCC FIXED(15) BDY(BYTE),/* CYLINDER START         */
            4 CMFXSTHH FIXED(15) BDY(BYTE),/* TRACK START            */
        2 CMFXEXED CHAR(4),          /* ENDING CCHH                  */
          3 CMFXEDA PTR(31) BDY(BYTE),/* ARITHMETIC FORM - CCHH      */
            4 CMFXEDCC FIXED(15) BDY(BYTE),/* CYLINDER END           */
            4 CMFXEDHH FIXED(15) BDY(BYTE),/* TRACK END              */
        2 CMFXNOTT FIXED(15) BDY(BYTE),/* NO. TRACKS IN EXTENT       */
        2 CMFXLRBA PTR(32) BDY(BYTE),/* STARTING DDDD IN EXTENT      */
        2 CMFXHRBA PTR(32) BDY(BYTE);/* ENDING DDDD IN EXTENT        */
./ ADD NAME=IGGMODUL
 %IGGMODUL:
           MACRO KEYS(NOPR,MNAME,BASE2);/*GENERATES OUTER PROC STMTS*/
                                        /*AS MODULE HEADERS         */
           DCL IGGGVCCT CHAR EXT;       /*OUTER-INNER PROC CTRL VAR */
           DCL IGGBASE2 CHAR EXT;   /* BASE REG 2 VARIABLE   @ZA29164*/
           DCL IGGMODID CHAR EXT;       /*MODULE ID          @Y30SSPJ*/
           DCL (MODNAME,RID1,RID2,CVAL) CHAR;              /*@Y30SSPJ*/
           DCL (NUMID1,NUMID2,NVAL) FIXED;                 /*@Y30SSPJ*/
           DCL (DEFTY,UNDEF) CHAR;  /*                       @ZA29164*/
           DEFTY = 'T''';           /*                       @ZA29164*/
           UNDEF = 'U';             /*                       @ZA29164*/
           IGGBASE2 = BASE2(1);     /* SET SECOND BASE REG   @ZA29164*/
           MODNAME = MNAME(1);          /* SET MODULE NAME   @Y30SSPJ*/
           IGGMODID=QUOTE(MODNAME(7:8));/* SET MODULE ID     @Y30SSPJ*/
           RID1 = MODNAME(7:7);         /* 1ST BYTE MODID    @Y30SSPJ*/
           RID2 = MODNAME(8:8);         /* 2ND BYTE MODID    @Y30SSPJ*/
          NUMID1=INDEX(EBCDIC,RID1);/*NUMERIC REPRESENTATION @Y30SSPJ*/
          NUMID2=INDEX(EBCDIC,RID2);/*NUMERIC REPRESENTATION @Y30SSPJ*/
       NUMID1=16777216*(NUMID1-128);/*POSITIVE ID1 IN BYTE 1 @Y30SSPJ*/
           NUMID2=(65536*NUMID2)-1; /*SET ID2 IN NEXT BYTE   @Y30SSPJ*/
           NVAL=-2147483647+NUMID1+NUMID2; /*SUM ID1, ID2,   @Y30SSPJ*/
           CVAL = CHAR(NVAL);       /*CONVERT TO CHAR STRING @Y30SSPJ*/
           IF NOPR(1) ^= '*' THEN   /* SHORT FORM MACRO      @Y30SSPJ*/
             DO;                    /* YES-SHORT FORM        @Y30SSPJ*/
               IF IGGBASE2 ^= '' THEN/* BASE 2 SPECIFIED?    @ZA29164*/
                 DO;                /*  YES                  @ZA29164*/
                   ANS('GEN;') SKIP COL(10);/*               @ZA29164*/
                   ANS('MACRO') SKIP COL(10);/*              @ZA29164*/
                   ANS('RLDSBREG &NAME') SKIP COL(10);/*     @ZA29164*/
                   ANS('AIF ('DEFTY'&NAME NE '
                     QUOTE(UNDEF)').SKIP') NORESCAN SKIP COL(10);
                   ANS('LA 'IGGBASE2',4095(0,12)') COL(10);
                   ANS('RELOAD BASE REG 2') COL(40);/*       @ZA29164*/
                   ANS('.SKIP    MEND') COL(1);/*            @ZA29164*/
                   ANS('@ENDGEN;') COL(2); /*                @ZA29164*/
                 END;               /*                       @ZA29164*/
               ELSE;                /*                       @ZA29164*/
               ANS (MNAME(1)  ': PROC OPTIONS') SKIP COL(2);
               ANS ('(REENTRANT,NOSAVEAREA,NOSAVE,NOCODEREG,NODATAREG,
                  ID);') SKIP COL(18);
               IGGGVCCT = '1';      /*INDICATE OUTER PROC DEFIND*/
               ANS ('DECLARE IGGSEGBR REG(12) PTR(31) RSTD;')
                   SKIP COL(12);                          /* @Y30SSDW*/
               ANS ('/* MODULE BASE REGISTER     */') COL(41);
               IF IGGBASE2 ^= '' THEN/*BASE 2 REG SPECIFIED? @ZA29164*/
                 DO;                /* YES                   @ZA29164*/
                ANS('DECLARE IGGSEGB2 REG('IGGBASE2')PTR(31)RSTD;')
                 SKIP COL(12);      /*                       @ZA29164*/
                ANS('/* MODULE BASE 2 REGISTER */')COL(41);/*@ZA29164*/
                 END;               /*                       @ZA29164*/
               ELSE;                /*                       @ZA29164*/
             END;                                          /*@Y30SSPJ*/
           ELSE;                                           /*@Y30SSPJ*/
           ANS ('/*    NUMERIC MODULE ID VALUE USED FOR PROBLEM ' 
                'DETERMINATION */') SKIP COL(12);          /*@Y30SSPJ*/
          ANS ('DECLARE IGGSEGID FIXED(31) CONSTANT(-'  CVAL  ');')
             SKIP COL(12);                                 /*@Y30SSDW*/
           ANS ('/* MODULE ID VALUE */') COL(56);          /*@Y30SSPJ*/
           ANS ('@EJECT ASSEMBLE;') SKIP COL(2);           /*@ZA29164*/
 % END ;
./ ADD NAME=IGGMPROC
 % IGGMPROC:
           MACRO KEYS(PNAME,TYPE,CALLED);
           DCL IGGGVCCT CHAR EXT ;       /*CONTROL VARIABLE         */
           DCL IGGFPINT CHAR EXT;   /* INT PROC GLOBAL SW    @ZA29164*/
           DCL IGGBASE2 CHAR EXT;        /* BASE REGISTER    @ZA95164*/
           DCL PROCNAME CHAR ;           /* PROCEDURE NAME          */
           DCL (CBSW,NUSW,IESW) CHAR ;   /*PROCESSING CONTROL SW.   */
           DCL (TITLEC,TITLET) CHAR ;    /*TITLE WORK VAR.          */
           DCL BEGLABEL CHAR;       /* LABEL VARIABLE        @ZA29164*/
           DCL SFIDNAMELOVAR CHAR;
           DCL (BLANKS,ASTERICS) CHAR;   /*COMMENT VARIABLES @Y30SSPJ*/
           DCL (RX5,RX6,RX7,RX8,RX9,RX10)CHAR;/* REG VAR     @ZA95164*/
           IF IGGBASE2^='5' THEN    /* IS 2ND BASE REG 5?    @ZA95164*/
             RX5 = 'R5,';           /* NO                    @ZA95164*/
           ELSE;                    /*                       @ZA95164*/
           IF IGGBASE2^='6' THEN    /* IS 2ND BASE REG 6?    @ZA95164*/
             RX6 = 'R6,';           /* NO                    @ZA95164*/
           ELSE;                    /*                       @ZA95164*/
           IF IGGBASE2^='7' THEN    /* IS 2ND BASE REG 7?    @ZA95164*/
             RX7 = 'R7,';           /* NO                    @ZA95164*/
           ELSE;                    /*                       @ZA95164*/
           IF IGGBASE2^='8' THEN    /* IS 2ND BASE REG 8?    @ZA95164*/
             RX8 = 'R8,';           /* NO                    @ZA95164*/
           ELSE;                    /*                       @ZA95164*/
           IF IGGBASE2^='9' THEN    /* IS 2ND BASE REG 9?    @ZA95164*/
             RX9 = 'R9,';           /* NO                    @ZA95164*/
           ELSE;                    /*                       @ZA95164*/
           IF IGGBASE2^='10' THEN   /* IS 2ND BASE REG 10?   @ZA95164*/
             RX10 = 'R10';          /* NO                    @ZA95164*/
           ELSE                     /*                       @ZA95164*/
             RX9 = 'R9';            /* YES                   @ZA95164*/
           BLANKS = REPEAT(' ',65);      /* SET 66 BLANKS    @Y30SSPJ*/
           ASTERICS = REPEAT('*',65);    /* SET 66 ASTERICS  @Y30SSPJ*/
           CBSW = '2' ;                 /*PRESET TO IND. OUTER PROC */
           PROCNAME = PNAME(1) ;         /*SET PROC NAME VAR        */
           IF CALLED(1) = ''             /*IF NOT SPEC              */
             THEN IESW = 'INT' ;         /*SUPPLY DEFAULT           */
             ELSE IESW = CALLED(1) ;
           IF TYPE(1) = ''               /*IF NOT SPEC.             */
             THEN NUSW = 'NES' ;         /*SUPPLY DEFAULT           */
             ELSE NUSW = TYPE(1) ;
           TITLEC = IESW  'ERNALLY' ;  /*INITIALIZE TITLE VARS.   */
           IF NUSW = 'NES'
             THEN TITLET = NUSW  'TED' ;
             ELSE TITLET = NUSW  'ESTED' ;
           IF IGGGVCCT = '' THEN         /*1ST TIME INVOKED  @Y30SSPJ*/
             DO;                         /* YES-FIRST TIME   @Y30SSPJ*/
               ANS ( COMMENT(ASTERICS) ) COL(2);           /*@Y30SSPJ*/
               ANS ( COMMENT(BLANKS) ) COL(2);             /*@Y30SSPJ*/
               ANS ('/') COL(2);                           /*@Y30SSPJ*/
               ANS ('*') COL(3);                           /*@Y30SSPJ*/
               ANS ('PROCNAME  -  PROCEDURE  TITLEC  CALLED  TITLET')
                  RESCAN COL(12);                          /*@Y30SSDW*/
               ANS ('*') COL(70);                          /*@Y30SSPJ*/
               ANS ('/') COL(71);                          /*@Y30SSPJ*/
               ANS ( COMMENT(BLANKS) ) COL(2);             /*@Y30SSPJ*/
               ANS ( COMMENT(ASTERICS) ) COL(2);           /*@Y30SSPJ*/
               GOTO PO ;            /*GO BUILD OUTER PROC    @Y30SSPJ*/
             END;                                          /*@Y30SSPJ*/
           SFIDNAMELOVAR = 'CL8'  QUOTE(PROCNAME);
           IF IGGGVCCT ^= '1' THEN      /*NOT 1ST PROC              */
             DO;
               ANS ('CALL EXIT;') SKIP COL(12);
               ANS ('/* RETURN TO CALLER         */') COL(41);
             END;
           ELSE
             DO;
               ANS ('GEN(USING @MAINENT,@15);') SKIP COL(12);
               ANS ('/* INDICATE AVAILABLE BASE REG  */')
                   COL(37);                               /* @Y30SSDW*/
      ANS ('GEN REFS(CCATEMPS) (USING @DATD-(CCATEMPS-IGGCCA),R11);')
                  SKIP COL(12);
               IF IESW='INT' THEN   /* INTERNAL PROCEDURE    @ZA29164*/
                 IGGFPINT='1';      /* SET GLOBAL SWITCH     @ZA29164*/
               ELSE;                /* NO                    @ZA29164*/
             END;
           ANS ('GEN(DS 0F);') SKIP COL(12);
           ANS ('/* FULLWORD BOUNDARY ALIGNMENT */')
               COL(37);                                   /* @Y30SSDW*/
           ANS ('GEN(DC SFIDNAMELOVAR);') SKIP COL(12);
           ANS ('/* NAME OF FOLLOWING PROCEDURE */')
                COL(37);                                  /* @Y30SSDW*/
           IF   IGGGVCCT = '3' THEN     /*INNER PROC (NOT 1ST)      */
             DO;
               ANS ('END;') SKIP COL(12);
               ANS ('/* END OF INNER PROCEDURE   */') COL(41);
             END;
           CBSW = '3' ;                 /*INDICATE INNER PROC       */
           ANS ('@EJECT ASSEMBLE;') SKIP COL(2) ;          /*@ZA95164*/
           ANS ( COMMENT(ASTERICS) ) COL(2);               /*@Y30SSPJ*/
           ANS ( COMMENT(BLANKS) ) COL(2);                 /*@Y30SSPJ*/
           ANS ('/') COL(2);                               /*@Y30SSPJ*/
           ANS ('*') COL(3);                               /*@Y30SSPJ*/
           ANS ('PROCNAME  -  PROCEDURE  TITLEC  CALLED  TITLET')
              RESCAN COL(12);                              /*@Y30SSDW*/
           ANS ('*') COL(70);                              /*@Y30SSPJ*/
           ANS ('/') COL(71);                              /*@Y30SSPJ*/
           ANS ( COMMENT(BLANKS) ) COL(2);                 /*@Y30SSPJ*/
           ANS ( COMMENT(ASTERICS) ) COL(2);               /*@Y30SSPJ*/
           ANS (PROCNAME  ':') SKIP RESCAN COL(2);
           ANS ('PROC OPTIONS(NOSAVEAREA,NOSAVE);') COL(12);
           ANS ('/* SPECIFY PROCEDURE OPTIONS */') COL(37);/*@Y30SSDW*/
           IF IESW = 'EXT' THEN
             DO;
               ANS ('GEN(ENTRY PROCNAME );') SKIP RESCAN COL(12);
               ANS ('/* IDENTIFY ENTRY-POINT SYMBOL */')
                   COL(37);                                /*@Y30SSDW*/
             END;
           IF IGGGVCCT = '1' THEN
             DO;                                          /* @Y30SSDW*/
               ANS ('GEN(DROP @15);') SKIP COL(12);       /* @Y30SSDW*/
               ANS ('/* DROP AVAILABLE BASE REGISTER */')
                   COL(37);                               /* @Y30SSDW*/
             END;                                         /* @Y30SSDW*/
           GOTO PP;
 PO:       ANS (PROCNAME  ':') SKIP COL(2);
           ANS ('PROC OPTIONS') COL(12);
           ANS ('(REENTRANT,NOSAVEAREA,NOSAVE,NOCODEREG,NODATAREG,
                  ID);') SKIP COL(18);
           IGGGVCCT = '1';              /*IND. OUTER PROC DEFINED   */
           ANS ('DECLARE IGGSEGBR REG(12) PTR(31) RSTD;') SKIP COL(12);
           ANS ('/* MODULE BASE REGISTER     */') COL(41);
           IF IGGBASE2 ^= '' THEN   /* BASE REG 2 SPECIFIED? @ZA95164*/
             DO;                    /* YES                   @ZA95164*/
               ANS('DECLARE IGGSEGB2 REG('IGGBASE2')PTR(31)RSTD;')
               SKIP COL(12);        /* GEN 2ND BASE DECLARE  @ZA95164*/
               ANS('/* BASE 2 REGISTER */') COL(41);       /*@ZA95164*/
             END;                   /*                       @ZA95164*/
           ELSE;                    /*                       @ZA95164*/
 PP:       ANS ('Z'  MACINDEX(2:4)  ':') SKIP COL(2);  /*@Y30SSPJ*/
           ANS ('/* LABEL FOR PROCEDURE TRACKING  */')
               COL(37);                                   /* @Y30SSDW*/
           ANS ('Z'  MACINDEX(2:4)  PROCNAME(5:LENGTH(PROCNAME))
               ':') SKIP COL(2);
           ANS ('/* LABEL FOR PROCEDURE TRACKING  */')
               COL(37);                                   /* @Y30SSDW*/
           ANS ('RFY ('RX5RX6RX7RX8RX9RX10') UNRSTD;')
             SKIP COL(12);          /*                       @ZA95164*/
           ANS ( '/* PL/S COMPILER WORK REGISTERS */')
              COL(37);                                    /* @Y30SSDW*/
           ANS ('RFY (R2,R3,R4) RSTD;') SKIP COL(12);
           ANS ('/* RESTRICT LOCAL WORK REGISTERS */')
              COL(37);                                    /* @Y30SSDW*/
           IF NUSW = 'NES' THEN         /*TYPE = NESTED             */
             DO;
               ANS ('GEN(STM 12,14,12(13));') SKIP COL(12);
               ANS ('/* SAVE REGISTERS OF CALLER */') COL(41);
               ANS ('GEN(LA 13,12(13));') SKIP COL(12);
               ANS ('/* POINT TO NEXT SAVE AREA  */') COL(41);
             END;
           IF IESW = 'EXT' THEN         /*EXTERNALLY CALLED         */
             DO;
               ANS ('GEN(BALR 12,0);') SKIP COL(12);
               ANS ('/* ESTABLISH ADDRESSABILITY */') COL(41);
             END;
           IF IGGGVCCT = '1' THEN       /*FIRST PROC                */
             IF IESW = 'EXT' THEN       /*EXTERNALLY CALLED @ZA95164*/
             DO;
               ANS ('IGGSEGST: GEN(DS 0H);') SKIP COL(2);
               ANS ('/* HALFWORD BOUNDARY ALIGNMENT  */')
                   COL(37);                               /* @Y30SSDW*/
               ANS ('GEN(USING *,12);') SKIP COL(12);
               ANS ('/* INDICATE AVAILABLE BASE REG */')
                   COL(37);                               /* @Y30SSDW*/
               IF IGGBASE2 ^= '' THEN/*BASE REG 2 SPECIFIED? @ZA95164*/
                 DO;                /* YES                   @ZA95164*/
                   ANS ('GEN(USING *+4095,'IGGBASE2');')
                     SKIP COL(12);  /*GEN USING FOR 2ND BASE @ZA95164*/
                   ANS('/* INDICATE AVAILABLE BASE REGS */') COL(37);
                   ANS('GEN(LA 'IGGBASE2',4095(0,12));') COL(37);
                   ANS('/* LOAD BAS 2 REG */') COL(37);/*    @ZA95164*/
                 END;               /*                       @ZA95164*/
               ELSE;                /*                       @ZA95164*/
 PQ:           IGGGVCCT = CBSW ;        /*IND. OUTER OR INNER PROC  */
               RETURN;
             END;
           ELSE                     /* INTERNALLY CALLED     @ZA95164*/
             GOTO PQ;               /* ALL FINISHED          @ZA95164*/
           IF IESW = 'EXT' THEN         /*EXTERNALLY CALLED         */
            DO;                     /* YES                   @ZA29164*/
            IF IGGFPINT='1' THEN    /* FIRST PROC INTERNAL   @ZA29164*/
             BEGLABEL='@MAINENT';   /* SET LABEL             @ZA29164*/
            ELSE                    /* FIRST PROC EXTERNAL   @ZA29164*/
             BEGLABEL='IGGSEGST';   /* SET LABEL             @ZA29164*/
             IF IGGBASE2 = '' THEN  /*EXTERNALLY CALLED?     @ZA95164*/
               DO;                  /* NO, ONLY 1 BASE REG   @ZA95164*/
                 ANS ('GEN(LA 15,*-'BEGLABEL'(0,0));')
                   SKIP COL(12);    /*                       @ZA95164*/
                 ANS ('/* COMPUTE MODULE BASE      */')
                   COL(41);         /*                       @ZA95164*/
                 ANS ('GEN(SR 12,15);') SKIP COL(12);      /*@ZA95164*/
                 ANS ('/* SET BASE TO MODULE BASE  */')
                   COL(41);         /*                       @ZA95164*/
               END;                                        /*@ZA95164*/
             ELSE                   /* YES,BASE 2 REG SPEC   @ZA95164*/
               DO;                  /*                       @ZA95164*/
                 ANS ('GEN(USING *,12);') SKIP COL(12);/*    @ZA95164*/
                 ANS ('/* INDICATE AVAILABLE BASE REG */')
                   COL(37);         /*                       @ZA95164*/
                 ANS('GEN(B *+6);') SKIP COL(12); /*         @ZA95164*/
               ANS('/* BRANCH AROUND CONSTANT */')COL(37); /*@ZA95164*/
                 ANS('GEN(DC AL2(*-'BEGLABEL'-4));')  /* @ZA95164*/
                   COL(12);         /*                       @ZA29164*/
                ANS('/* OFFSET TO MODULE BASE 1*/')COL(37);/*@ZA95164*/
                 ANS('GEN(SH 12,*-2);') COL(12);           /*@ZA95164*/
                 ANS('/* COMPUTE MODULE BASE 1 */')COL(37);/*@ZA95164*/
                 ANS('GEN(LA 'IGGBASE2',4095(0,12));')
                   COL(12);         /*                       @ZA95164*/
             ANS('/* LOAD BASE 2 REG WITH 4095 */')COL(37);/*@ZA95164*/
               ANS('GEN(USING 'BEGLABEL',12);') SKIP   /*@ZA95164*/
                   COL(12);         /*                       @ZA29164*/
                 ANS('/* INDICATE AVAILABLE BASE REG1 */')
                 COL(41);           /*                       @ZA95164*/
                 ANS('GEN(USING 'BEGLABEL'+4095,'IGGBASE2');')
                   SKIP COL(12);    /*                       @ZA95164*/
                 ANS('/* INDICATE AVAILABLE BASE REG2 */')
                   COL(37);         /*                       @ZA95164*/
               END;                 /*                       @ZA95164*/
           IGGGVCCT = '3' ;             /*IND. NOT 1ST INNER PROC   */
          END;                      /*                       @ZA29164*/
 % END ;
./ ADD NAME=IGGMSAWA
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMSAWA                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = SUBALLOCATE INTERFACE                       */
 /*                                                                  */
 /*   FUNCTION = SUBALLOCATE INTERFACE PARAMETER LIST                */
 /*              AND WORKAREA MAPPING MACRO.                         */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - NO DECLARES NECESSARY                */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 17 JUL 74                                */
 /*                                                                  */
 /********************************************************************/
    DECLARE
      1 SALPARL BASED(CCAALPTR),    /* BASE IS IN IGGCCA             */
        3 SALOPTNS PTR(8),          /* ALLOCATION OPTIONS            */
        3 *        BIT(8),          /* RESERVED                      */
        3 SALSOURC PTR(8),          /* RECORD SOURCE INDICATOR       */
        3 SALDSCIN PTR(24) BDY(BYTE), /* OBJECT DATA SET CI NUMBER   */
        3 SALPARMS CHAR(8),         /* ALLOCATION PARAMETERS         */
          5 SALCALN  FIXED(15) BDY(BYTE), /* CONTROL AREA LENGTH     */
          5 SALBLKLN FIXED(15) BDY(BYTE), /* RECORD BLOCK LENGTH     */
          5 SALUNITS FIXED(15) BDY(BYTE), /* NUMBER OF UNITS REQUSTED*/
          5 SALMXEXT PTR(8),        /* MAX NO. EXTENTS ALLOWED       */
          5 *        PTR(8),        /* RESERVED FOR ALIGNMENT        */
        3 SALRLIST PTR(32) BDY(BYTE), /* PTR TO RESPONSE LIST        */
        3 SALVLIST PTR(32) BDY(BYTE), /* PTR TO USERLIST             */
        3 SALAXWA  CHAR(490);       /* IGGPSALL WORK AREA            */
 /********************************************************************/
 /*         PRLIST - SUBALLOCATE PROCESSING RESPONSE LIST            */
 /*                  ENTRIES PARALLEL USERLIST ENTRIES               */
 /********************************************************************/
    DECLARE
      1 PRLIST BASED(SALRLIST),     /* BASE IS IN SALPARL            */
        3 PRLLN PTR(8),             /* PRL VOL COUNT                 */
        3 PRLENT (*) CHAR(2) BDY(BYTE), /* RESPONSE ENTRY            */
          5 PRELENTF  FIXED(15) BDY(BYTE), /* SEQUENCE NO. OF DATA   */
                                    /* SET DIRECTORY ENTRY           */
            7 PRLPAR1 PTR(8),       /* RESPONSE PARAMENTER           */
            7 PRLPAR2 PTR(8);       /* RESPONSE PARAMETER            */
 /********************************************************************/
 /*     CONSTANTS USED TO SET AND/OR TEST FIELDS DECLARED ABOVE      */
 /********************************************************************/
    DECLARE                         /* ALLOCATION OPTIONS - SALOPTNS */
      SACYLOPT BIT(8) CONSTANT('C0'X), /* CYLINDER REQUEST           */
      SATRKOPT BIT(8) CONSTANT('80'X), /* TRACK REQUEST              */
      SARECOPT BIT(8) CONSTANT('40'X), /* RECORD REQUEST (RESERVED)  */
      SACANOPT BIT(8) CONSTANT('00'X); /* CANDIDATE REQUEST          */
    DECLARE                         /* RECORD SOURCE INDICATOR       */
      SARABS   BIT(8) CONSTANT('01'X), /* FIRST VER IN USERLIST IS
                                          IN RAB 3                   */
      SAVRLIST BIT(8) CONSTANT('02'X); /* FIRST VER IN USERLIST IS
                                          NOT IN RAB'S               */
./ ADD NAME=IGGMSG
*
*        % GOTO MSGL1; /*
         MACRO
         IGGMSG
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGMSG
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = OS/VS2 RELEASE 2, LEVEL 0
.*
.*01  CHANGE-ACTIVITY = NONE
.*
.*01  DESCRIPTIVE-NAME = MESSAGE CSECT MAPPING
.*
.*01  FUNCTION = MAP S/P/D MESSAGE CSECTS
.*
.*01  NOTES = NONE
.*
.*01  MODULE-TYPE = MACRO
.*02    PROCESSOR = ASSEMBLER-370R  PLS
.*
.*02    EXTERNAL-REFERENCES = N/A
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*
.**** END OF SPECIFICATIONS ***/
*% MSGL1:;
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73040/021160                                        */
*/*                                                                  */
*/* **************************************************************** */
*/*                                                                  */
*/*            ****** MESSAGE CSECT ******                           */
*/*                                                                  */
*/*  OS/VS2 RELEASE 2                                                */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*     PL/S - RFY MSGINDEX BASED ON A PTR                           */
*/*          - DECLARE 'MSGNO' AS NUMBER OF DESIRED MESSAGE          */
*/*              OR VARIABLE CONTAINING MESSAGE NUMBER               */
*/*     BAL  - FOUR DSECTS ARE PRODUCED.  USING ON A DSECT NAME      */
*/*            GIVES ADDRESSABILITY FOR ALL SYMBOLS WITHIN THAT      */
*/*            DSECT.  THE DSECT NAMES AND SYMBOLS WITHIN EACH ARE:  */
*/*              MSGINDEX - MSGINDLN, MSGINDOF                       */
*/*              MSGENTRY - MSGOFF, MSGLNG, MSGOFF1, MSGOFF2,        */
*/*                         MSGOFF3, MSGOFF4, MSGOFF5                */
*/*              MSGTXTD  - MSGTXT                                   */
*/*              MSGTXTFD - MSGLNGF, MSGTXTF                         */
*/*                                                                  */
*/*  FUNCTION                                                        */
*/*     THE MESSAGE CSECT CONTAINS MESSAGES FROM SAM/PAM/DAM CODE.   */
*/*      THIS DSECT IS USED TO MAP THOSE MESSAGES.                   */
*/*                                                                  */
*/* **************************************************************** */
*
*% GOTO MSGL2; /*
*        THIS DSECT IS TO COVER THE MESSAGE CSECT.  THE MESSAGE
*        CSECT IS DIVIDED INTO TWO PARTS
*
*        THE FIRST IS THE INDEX.  TO FIND THE OFFSET TO A GIVEN
*        MESSAGE THE FOLLOWING SEQUENCE OF INSTRUCTIONS
*        MAY BE USED.
*              USING MSGINDEX,MSGBASE
*        MXXX  EQU   MSGNO*2
*              LH    RWK1,MSGINDOF+MXXX
*        AT THIS POINT RWK1 HAS THE OFFSET TO THE MESSAGE ENTRY
*        FROM THE BEGINNING OF THE CSECT.
*
MSGINDEX DSECT
MSGINDLN DS    H                        LENGTH OF INDEX
MSGINDOF DS    H                        OFFSET TO MESSAGE ENTRY
*
*        ONCE THE MESSAGE ENTRY IS FOUND THE MESSAGE ITSELF IS FOUND
*        BY ADDING THE MSGOFF FIELD TO THE BEGINNING OF THE ENTRY.
*        THE OFFSET TO ANY VARIABLE FIELDS THAT MUST BE FILLED IN ARE
*        CONTAINED IN MSGOFF1 THROUGH MSGOFF5.  MSGLNG CONTAINS THE
*        LENGTH OF THIS PARTICULAR MESSAGE MINUS ONE.  THE LENGTH IS
*        ONE LESS TO ALLOW IT TO BE USED IN AN EXECUTE OF A MOVE.
*
MSGENTRY DSECT
MSGOFF   DS    FL1                      OFFSET TO MESSAGE TEXT FROM
*                                       BEGINNING OF ENTRY
MSGLNG   DS    FL1                      LENGTH OF MESSAGE TEXT - 1
MSGOFF1  DS    FL1                      OFFSET TO FIRST VARIABLE
MSGOFF2  DS    FL1                      OFFSET TO SECOND VARIABLE
MSGOFF3  DS    FL1                      OFFSET TO THIRD VARIABLE
MSGOFF4  DS    FL1                      OFFSET TO FOURTH VARIABLE
MSGOFF5  DS    FL1                      OFFSET TO FIFTH VARIABLE
MSGOFF6  DS    FL1                      OFFSET TO SIXTH VARIABLE
MSGOFF7  DS    FL1                      OFFSET TO SEVENTH VARIABLE
*
*        THIS IS USED TO CREATE A LABEL THAT MAY BE USED IN THE
*        OBJECT OF AN EXECUTE INSTRUCTION.
*
MSGTXTD  DSECT
MSGTXT   DS    CL1                      MESSAGE TEXT
*
*        THIS SECTION OF THE DSECT DESCRIBES THE NO VARIABLE MESSAGES
*        SUCH AS THOSE USED IN SYNADAF..
*
MSGTXTFD DSECT
MSGLNGF  DS    AL1                      LENGTH OF MESSAGE TEXT
MSGTXTF  DS    CL1                      MESSAGE TEXT
         MEND  , */
*        % MSGL2:;
* /* *************************************************************** */
* /*                     MESSAGE INDEX SECTION                       */
* /* *************************************************************** */
*
*  DECLARE
*  1 MSGINDEX BASED BDY(WORD),
*     2 MSGINDLN PTR (15),              /* LENGTH OF INDEX SECTION   */
*     2 MSGINDOF(*) PTR (15),           /* OFFSET TO MESSAGE ENTRY   */
*
* /* *************************************************************** */
* /*                     MESSAGE ENTRY SECTION                       */
* /* *************************************************************** */
*
*  1 MSGENTRY BASED(ADDR(MSGINDEX) + MSGINDOF(MSGNO+1)) BDY(HWORD),
*     2 MSGOFF PTR (8),                 /*OFFSET TO MESSAGE TEXT     */
*     2 MSGLNG PTR (8),                 /*LENGTH OF MESSAGE TEXT - 1 */
*     2 MSGOFF1 PTR (8),                /*OFFSET TO FIRST VARIABLE   */
*     2 MSGOFF2 PTR (8),                /*OFFSET TO SECOND VARIABLE  */
*     2 MSGOFF3 PTR (8),                /*OFFSET TO THIRD VARIABLE   */
*     2 MSGOFF4 PTR (8),                /*OFFSET TO FOURTH VARIABLE  */
*     2 MSGOFF5 PTR (8),                /*OFFSET TO FIFTH VARIABLE   */
*     2 MSGOFF6 PTR (8),                /*OFFSET TO SIXTH VARIABLE   */
*     2 MSGOFF7 PTR (8),                /*OFFSET TO SEVENTH VARIABLE */
*
* /* *************************************************************** */
* /*                     MESSAGE TEXT                                */
* /* *************************************************************** */
*
*  1 MSGTXTD BASED(ADDR(MSGENTRY) + MSGOFF) BDY(BYTE),
*     2 MSGTXT CHAR(*),                 /* MESSAGE TEXT              */
* /* *************************************************************** */
* /*                     MESSAGE ENTRY NO VARIABLES                  */
* /* *************************************************************** */
*
* 1 MSGTXTFD BASED(ADDR(MSGINDEX) + MSGINDOF(MSGNO+1)) BDY(BYTE),
*    2 MSGLNGF PTR(8),                  /*LENGTH OF ENTRY            */
*    2 MSGTXTF CHAR(*);                 /*MESSAGE TEXT               */
*
./ ADD NAME=IGGMUPDE
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMUPDE                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = UPDATE-EXTEND COMMON DECLARATIONS           */
 /*                                                                  */
 /*   FUNCTION = COMMON DECLARATIONS FOR VSAM UPDATE-EXTEND          */
 /*                MODULES IGG0CLBB, IGG0CLBC, AND IGG0CLBP,         */
 /*                AND FOR DEFINE CRA MODULE IGG0CLB4.               */
 /*              CONTAINS COMMON WORK AREA MAPPINGS AND INTERFACE    */
 /*                PARAMETER LISTS FOR EXTERNALLY CALLED SUB-        */
 /*                FUNCTIONS USED WITHIN THE VSAM UPDATE-EXTEND      */
 /*                AND DEFINE CRA FUNCTIONS.                         */
 /*                                                                  */
 /*   INCLUDED MACROS = IGGMVEDC                                     */
 /*                     IGGMCDCL                                     */
 /*                     IGGMCMDM                                     */
 /*                     IDAAMDSB                                     */
 /*                     IGGMSAWA                                     */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY A BASE FOR SOME STRUCTURES */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 02 JUL 74                                */
 /*                         27 APR 76                        @ZA07574*/
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /*           C O N S T A N T     D E C L A R A T I O N S            */
 /********************************************************************/
    DECLARE
      KEYLENSP FIXED(31) CONSTANT(128), /* MAX KEY LENGTH INFO       */
      MXEXT  FIXED(31)  CONSTANT(123), /* MAX EXTENTS        @XA02392*/
      UPDVOL   CHAR(8) CONSTANT('UPDVOL  '), /* UPDATE VOLUME        */
                                        /* OCCURRENCE                */
      NOAVFPL  FIXED(31)  CONSTANT(2), /* NO. OF MODIFY FPL'S        */
      CATDSBGC FIXED(31) CONSTANT(1), /* AMDSB GROUP CODE            */
      NOVOLENT FIXED(31) CONSTANT(1), /* NO. OF VOLUME ENTRIES       */
      MXALEX   FIXED(31) CONSTANT(5), /* MAX EXTENTS SUBALLOCATE     */
      PRENTNO  FIXED(31) CONSTANT(1), /* NO. OF PRLIST ENTRIES       */
      MXM      FIXED(31) CONSTANT(256), /* MAX CLEAR                 */
      MXEXTC   FIXED(31) CONSTANT(16), /* CATALOG MAX EXTENTS        */
      UPWALEN FIXED(31) CONSTANT(512), /* UPDATE WORK AREA LENGTH    */
      NOEXTFPL FIXED(31) CONSTANT(1), /* NO. OF MODIFY FPL'S         */
      EXTENT   CHAR(8) CONSTANT('EXTENT  '), /* EXTENT NAME          */
      CATVOLGC  FIXED(31) CONSTANT(3), /* VOLUME GROUP CODE          */
      ITYPEXT CHAR(8) CONSTANT('ITYPEXT '), /* INDICATOR     @Y30SSRS*/
                                        /* TYPE OF EXTENT    @Y30SSRS*/
      CNTREPNO CHAR(8) CONSTANT('CNTREPNO'), /* MAXIMUM      @Y30SSRS*/
                                        /* COUNT OF OCCURR   @Y30SSRS*/
      RELREPNO CHAR(8) CONSTANT('RELREPNO'), /* RELATIVE     @Y30SSRS*/
                                        /* REPETITION NUMBER @Y30SSRS*/
      ENTVOL   CHAR(8) CONSTANT('ENTVOL  '), /* ENTIRE       @Y30SSRS*/
                                        /* VOLUME OCCURRENCE @Y30SSRS*/
      AMDSBCAT CHAR(8) CONSTANT('AMDSBCAT'), /* AMDSB        @Y30SSRS*/
      NODAT    FIXED(31) CONSTANT(1), /* NO. FPL DATA/RNG PAIR       */
      NOFPLS   FIXED(31) CONSTANT(2), /* NO. OF FPL'S                */
      NAME     CHAR(8) CONSTANT('NAME    '), /* CI NO.       @Y30SSRS*/
      TYPE     CHAR(8) CONSTANT('TYPE    '), /* ENTRY TYPE           */
      CATCLSID CHAR(1) CONSTANT('C'),  /* CLUSTER ID                 */
      CATDATID CHAR(1) CONSTANT('D'), /* DATA ID                     */
      CATIXID  CHAR(1) CONSTANT('I'), /* INDEX ID                    */
      NOKEYFPL  FIXED(31) CONSTANT(3), /* KEY RANGE EXTEND NO.       */
      NONKYFPL  FIXED(31) CONSTANT(1), /* NON-KEY RANGE EXTEND NO.   */
      UPEVOL    CHAR(6)   BASED(CTGFLPT(1)); /* MAP VOLSER INPUT     */
 /********************************************************************/
 /*             WORK AREA FOR SEARCH VOLUME SUB-FUNCTION             */
 /********************************************************************/
    DECLARE
      1 UPSVOL BASED(ADDR(IDAAMDSB)+LENGTH(IDAAMDSB)), /* PARAMETERS */
        2 UPLKEYLN  FIXED(15),      /* LOW KEY LENGTH                */
        2 UPHKEYLN  FIXED(15),      /* HIGH KEY LENGTH               */
        2 UPLKEYPT  PTR(31),        /* LOW KEY POINTER               */
        2 UPHKEYPT  PTR(31),        /* HIGH KEY POINTER              */
        2 UPVOLSER  CHAR(6),        /* VOLUME SERIAL NUMBER          */
        2 UPSREL    FIXED(15),      /* RELATIVE REPETITION   @Y30SSRS*/
                                    /* NO. (RELREPNO)        @Y30SSRS*/
        2 UPSCNT    FIXED(15),      /* MAX NO. OF REPETITION @Y30SSRS*/
                                    /* NOS. FOR PROCESSING   @Y30SSRS*/
        2 UPSEND    CHAR(0);        /* WORKAREA END                  */
    DECLARE KEYINFO CHAR(1) BASED(R2+UPLKEYPT); /* MAP LOW KEY AREA  */
    DECLARE ENTVOL1 CHAR(256) BASED(ADDR(UPREND)); /* MAP VOL OCCURR */
    DECLARE ENTVOL2 CHAR(256) BASED(CTGFLPT(1)); /* MAP VOL OCCURR   */
 /********************************************************************/
 /*              MAPPING  FOR  'RELREPNO'  INFORMATION               */
 /********************************************************************/
    DECLARE
      1 RELINFO BASED(R3),          /* RELREPNO INFORMATION          */
        2 RELREP FIXED(15),         /* RELREPNO                      */
        2 *      CHAR(2);           /* ALIGNMENT                     */
 /********************************************************************/
 /*                MAPPING  FOR  EXTENT  INFORMATION                 */
 /********************************************************************/
    DECLARE
      1 UPEXT1 BASED(R4),           /* EXTENT INFORMATION            */
        2 UPEXTLN1 FIXED(15),       /* EXTENT LENGTH                 */
        2 UPEXTD2  CHAR(256);       /* EXTENT DATA                   */
 /********************************************************************/
 /*                     MAPPING  FOR  KEY  AREA                      */
 /********************************************************************/
    DECLARE
      1 UPKEY1  BASED(UPLKEYPT),    /* MAP KEY AREA                  */
        2 UPKEYD1  CHAR(64);        /* KEY                           */
 /********************************************************************/
 /*                     MAPPING  FOR  KEY  AREA                      */
 /********************************************************************/
    DECLARE
      1 UPKEY BASED(R4),            /* MAP KEY AREA                  */
        2 UPKEYLN  FIXED(15),       /* KEY LENGTH                    */
        2 UPKEYD   CHAR(64);        /* KEY DATA                      */
    DECLARE CLSCINO CHAR(3) BASED(CTGFLPT(1)); /* CLUSTER CI NO.     */
 /********************************************************************/
 /*             MAPPING  FOR  USER  RETURN  INFORMATION              */
 /********************************************************************/
    DECLARE
      1 WKAINFO BASED(CTGWKA),      /* MAP USER RETURN INFORMATION   */
        2 *       CHAR(4),          /* WORK AREA LENGTHS             */
        2 WKARETN,                  /* RETURN INFORMATION            */
          3 WKAREL   FIXED(15),     /* OBJECT RELREPNO               */
          3 WKARELSS FIXED(15),     /* SEQUENCE SET RELREPNO         */
          3 WKAEXT   FIXED(15),     /* NO. OF OLD EXTENTS            */
          3 WKAEXTSS FIXED(15);     /* NO. OF OLD SEQ. SET EXTENTS   */
 /********************************************************************/
 /*                   MAPPING  FOR  EXTEND  INPUT                    */
 /********************************************************************/
    DECLARE
      1 WKAINPUT DEFINED(WKARETN),  /* MAP EXTEND INPUT      @XA02392*/
        2 WKAIEXT FIXED(15),        /* INDEX NUMBER OF EXTENTS
                                                             @XA02392*/
        2 WKAICI  CHAR(3);          /* INDEX CI NO.          @XA02392*/
 @EJECT;
 %INCLUDE SYSLIB(IGGMVEDC);         /* VOLUME ENTRY DECLARES         */
 @EJECT;
 /********************************************************************/
 /*         DECLARATION  OF  UPDATE  PARAMETER  INFORMATION          */
 /********************************************************************/
    DECLARE
      1 UPREPARM  BASED(CCAR2REC),  /* UPDATE EXTEND/RELEASE         */
        2 UPNTCYL  FIXED(15),       /* NO. TRACKS/CYLINDER           */
          3 UPNIEXT FIXED(15),      /* INDEX NO. OF EXTENTS          */
        2 UPICINO  CHAR(3),         /* INDEX CI NO.          @Y30SSRS*/
        2 UPVCINO  CHAR(3),         /* VOLUME CI NO.                 */
        2 UPFLGS   BIT(8),          /* FLAGS                         */
          3 UPKEYDS  BIT(1),        /* KEYED DATA SET                */
          3 *        BIT(1),        /* RESERVED                      */
          3 UPSSWD   BIT(1),        /* SEQUENCE SET WITH DATA        */
          3 UPREPL   BIT(1),        /* REPLICATION                   */
          3 *        BIT(1),        /* RESERVED                      */
          3 UPKRAN   BIT(1),        /* KEY RANGE                     */
          3 *        BIT(1),        /* RESERVED                      */
          3 *        BIT(1),        /* RESERVED                      */
        2 UPFLG2S   BIT(16),        /* UPDATE FLAGS                  */
          3 UPUSSWD BIT(1),         /* EXTEND REQUEST                */
          3 UPKREQ  BIT(1),         /* KEYS EQUAL                    */
          3 UPSRCH  BIT(1),         /* SEARCH FOR VOLUME             */
          3 UPKSET  BIT(1),         /* KEY RANGE SET                 */
          3 UPEXIT  BIT(1),         /* SEARCH EXIT INDICATOR         */
          3 UPSMFL  BIT(1),         /* WRITE LSPACE SMF RECORD 69    */
        2 *       CHAR(1),          /* RESERVED              @Y30SSRS*/
        2 UPCHIA  PTR(32),          /* SAVE HI-ALLOCATED RBA         */
        2 UPEXTLN FIXED(15),        /* EXTENT LENGTH (EXISTING)      */
        2 UPREND  CHAR(0);          /* END UPREPARM                  */
 /********************************************************************/
 /*                 MAPPING  FOR  VOLUME  OCCURRENCE                 */
 /********************************************************************/
    DECLARE
      1 UPENTVOL BASED(ADDR(UPREND)), /* VOLUME OCCURRENCE           */
        2 UPVOLFIX,                 /* FIXED INFO OF VOLUME          */
          3 UPRLRP   FIXED(15),     /* RELREPNO                      */
          3 UPDEVT   CHAR(4),       /* DEVICE TYPE                   */
          3 UPVOL    CHAR(6),       /* VOLUME SERIAL                 */
          3 UPFLSQ   FIXED(15),     /* FILE SEQUENCE NUMBER          */
          3 UPVLFLG  BIT(8),        /* VOLUME FLAGS                  */
            4 UPVLPR   BIT(1),      /* PRIME VOLUME                  */
            4 UPVLCN   BIT(1),      /* CANDIDATE VOLUME              */
            4 UPVLOV   BIT(1),      /* OVERFLOW VOLUME               */
            4 *        BIT(5),      /* RESERVED                      */
          3 UPNOEXT  PTR(8),        /* NO. OF EXTENTS                */
          3 UPHKBA   PTR(32) BDY(BYTE), /* HI KEY CI VALUE           */
          3 UPHUBA   PTR(32) BDY(BYTE), /* HI USED RBA               */
          3 UPHABA   PTR(32) BDY(BYTE), /* HI ALLOCATED RBA          */
          3 UPPHYB   PTR(32) BDY(BYTE), /* PHYSICAL BLOCK SIZE       */
          3 UPNBTK   FIXED(15),     /* BLOCKS PER TRACK              */
          3 UPNTKA   FIXED(15),     /* TRACKS ALLOCATION UNIT        */
          3 UPITEX   BIT(8),        /* TYPE OF EXTENT                */
            4 UPSSDT   BIT(1),      /* SEQUENCE SET WITH DATA        */
            4 UPEXTNP  BIT(1),      /* EXTENTS NOT PRE-FORMATTED     */
            4 *        BIT(6),      /* RESERVED                      */
          3 UPSSDS   FIXED(15) BDY(BYTE), /* SS NO. OF DIRECTORY     */
        2 UPVOLVAR,                 /* VARIABLE VOLUME INFO          */
          3 UPLKLN   FIXED(15) BDY(BYTE), /* LOW KEY LENGTH          */
          3 *        CHAR(64),      /* KEY SPACE                     */
          3 UPHKLN   FIXED(15) BDY(BYTE), /* HI KEY LENGTH           */
          3 *        CHAR(64),      /* KEY SPACE                     */
          3 UPEXLN   FIXED(15) BDY(BYTE), /* EXTENT LENGTH           */
          3 *        CHAR(3),       /* ALIGNMENT                     */
        2 UPEND    CHAR(0);         /* END OF VOLUME OCCURRENCE      */
    DECLARE CLEAR CHAR(256) BASED(CCAALPTR); /* MAP SUBALL WORK AREA */
 /********************************************************************/
 /*                MAPPING  FOR  EXTENT  INFORMATION                 */
 /********************************************************************/
    DECLARE
      1 EXTINF1 BASED,              /* EXTENT INFORMATION            */
        2 EXTILEN  FIXED(15),       /* EXTENT INSERT LENGTH          */
        2 EXTINFO(*) BDY(HWORD),    /* EXTENT DESCRIPTORS            */
          3 EXTSS    FIXED(15),     /* SPACE SEQUENCE NUMBER         */
          3 EXTST,                  /* START CCHH                    */
            4 EXTCC1   FIXED(15),   /* START CYLINDER                */
            4 EXTHH1   FIXED(15),   /* START HEAD                    */
          3 EXTEND,                 /* END CCHH                      */
            4 EXTCC2   FIXED(15),   /* END CYLINDER                  */
            4 EXTHH2   FIXED(15),   /* END HEAD                      */
          3 EXTTT    FIXED(15),     /* TOTAL TRACKS                  */
          3 EXTDDDD1 PTR(32) BDY(HWORD), /* LOW DDDD                 */
          3 EXTDDDD2 PTR(32) BDY(HWORD); /* HIGH DDDD                */
 /********************************************************************/
 /*          MAPPING  FOR  UPDATE-EXTEND  SPACE  WORK  AREA          */
 /********************************************************************/
    DECLARE
      1 UPSPARM BASED(CCAR3REC-LENGTH(UPSPARM)), /* SPACE WORKAREA   */
        2 UPSOPT   CHAR(1),         /* SPACE OPTIONS                 */
        2 UPSPQTY  CHAR(3),         /* SPACE QUANTITY                */
        2 UPSFLG   BIT(8),          /* SPACE FLAGS                   */
          3 UPSUNIQ  BIT(1),        /* UNIQUE DATA SET               */
          3 UPSEXIT  BIT(1),        /* SPACE EXIT INDICATOR          */
          3 *        BIT(6),        /* RESERVED                      */
        2 UPDSDIR  CHAR(3),         /* DATA SET DIRECTORY NUMBER     */
        2 UPUDSNPT PTR(31),         /* UNIQUE DATA SET NAME PTR      */
        2 UPMXBLK  FIXED(15),       /* MAXIMUM BLOCK SIZE            */
          3 UPUCB   CHAR(2),        /* UCB ADDR OF VOLUME    @Y30SSRS*/
        2 UPCNT    FIXED(15),       /* MAX NO. OF REPETITION NOS.    */
                                    /* TO BE PROCESSED (CNTREPNO)    */
        2 UPREL    FIXED(15),       /* RELATIVE REPETITION NUMBER    */
                                    /* (RELREPNO)                    */
        2 UPNODSP  FIXED(15),       /* DATA SPACE COUNT              */
        2 UPSPACE  CHAR(3),         /* SPACE QUANTITY                */
        2 UPSOPT1  CHAR(1),         /* SPACE OPTIONS                 */
        2 UPCRDT1,                  /* CREATION DATE                 */
          3 UPCRDT,                 /* YEAR AND DAY                  */
            4 UPCRDTY   PTR(8),     /* YEAR                          */
            4 UPCRDTDD FIXED(15) BDY(BYTE), /* DAY                   */
          3 UPCRDTF  PTR(8),        /* SIGN CHARACTER                */
        2 UPSPHDR,                  /* SPACE HEADER AREA             */
          3 UPSHREL  FIXED(15) BDY(BYTE), /* RELREPNO                */
          3 *        CHAR(21),      /* RESERVED                      */
        2 UPDIRSP  CHAR(12),        /* DATA SET DIRECTORY AREA       */
          3 UPDDREL  FIXED(15) BDY(BYTE), /* RELREPNO                */
          3 *        CHAR(10),      /* RESERVED                      */
        2 UPSPWA   CHAR(135),       /* EXTRACT/MODIFY CPL/FPL AREA   */
          3 UPSTIME CHAR(8),        /* S/370 TOD FOR         @Y30SSRS*/
                                    /* FORMAT-4 UPDATE       @Y30SSRS*/
        2 UPSPD,                    /* SPACE DESCRIPTOR AREA         */
          3 UPSDREL  FIXED(15) BDY(BYTE), /* RELREPNO                */
          3 *        CHAR(16),      /* RESERVED              @ZA07574*/
        2 *        CHAR(1),         /* FREE BYTE             @ZA07574*/
        2 UPSECQTY CHAR(3);         /* UNIQ SEC ALLOC        @ZA07574*/
 @EJECT;
 %INCLUDE SYSLIB(IGGMCDCL);         /* CATALOG COMMON DECLARES       */
 @EJECT;
 %INCLUDE SYSLIB(IGGMCMDM);         /* CATALOG RECORD DECLARES       */
 @EJECT;
 %INCLUDE SYSLIB(IDAAMDSB);         /* AMDSB                         */
 @EJECT;
 %INCLUDE SYSLIB(IGGMSAWA);         /* SUBALLOCATE WORK AREA         */
     DCL IDAAMDS1 CHAR(256) BASED(CTGFLPT(1)); /* MOVE AMDSB         */
     RFY IDAAMDSB BASED(ADDR(UPREND)+LENGTH(UPENTVOL)); /* MAP AMDSB */
./ ADD NAME=IGGMVEDC
 /********************************************************************/
 /*                                                                  */
 /*   MACRO NAME = IGGMVEDC                                          */
 /*                                                                  */
 /*   DESCRIPTIVE NAME = CATALOG VOLUME ENTRY RECORD                 */
 /*                                                                  */
 /*   FUNCTION = THESE ARE THE MAPPING STRUCTURE DECLARATIONS FOR    */
 /*              THE DERIVED VOLUME ENTRY RECORD AND THE NEW         */
 /*              VOLUME ENTRY RECORD.  THIS INCLUDES STRUCTURES      */
 /*              FOR THE FIXED HEADER INFORMATION, THE DERIVED       */
 /*              SPACE HEADER GROUP, THE DERIVED SPACE DESCRIPTOR    */
 /*              GROUP, AND THE DERIVED DATA SET DIRECTORY GROUP.    */
 /*              ALSO CONTAINED ARE THE NEW DATA SPACE GROUP, THE    */
 /*              NEW DATA SET DIRECTORY GROUP, THE NEW DATA SET      */
 /*              DIRECTORY EXTENSION GROUP, AND THE NEW SPACE MAP    */
 /*              GROUP.                                              */
 /*                                                                  */
 /*   INCLUDED MACROS = NONE                                         */
 /*                                                                  */
 /*   METHOD OF ACCESS = PL/S - RESPECIFY A BASE FOR SOME STRUCTURES */
 /*                                                                  */
 /*   STATUS = VS/2 RELEASE 3   (CHANGE FLAG @Y30SSXX)               */
 /*                                                                  */
 /*   DATE OF LAST CHANGE = 21 JUN 74                                */
 /*                                                                  */
 /********************************************************************/
 /********************************************************************/
 /*     DECLARATION OF THE FIXED INFORMATION IN THE VOLUME RECORD    */
 /********************************************************************/
    DECLARE
      1 CTVOLRCD BASED(ADDR(NREPLF)) POSITION(2), /* VOLUME RECORD   */
        2 CTVOLNME CHAR(44),        /* ENTRY NAME - 6 BYTES FOR      */
                                    /*   VOLUME SERIAL NUMBER AND    */
                                    /*   38 BYTES OF BINARY ZERO     */
                                    /*   PADDING ON RIGHT            */
        2 CTVOLTIM CHAR(8),         /* VOLUME TIME STAMP             */
        2 CTVDVCHR CHAR(20),        /* DEVICE CHARACTERISTICS        */
          3 CTVDEVTY CHAR(4),       /* VOLUME DEVICE TYPE            */
          3 CTVMXBLK PTR(31)BDY(BYTE), /* MAXIMUM DEVICE BLOCK SIZE  */
          3 CTVNOCYL FIXED(15) BDY(BYTE), /* CYLINDERS THIS DEVICE   */
          3 CTVNOTRK FIXED(15) BDY(BYTE), /* TRACKS PER CYLINDER     */
          3 CTVTRKSZ FIXED(15) BDY(BYTE),/* BYTES PER TRACK          */
          3 CTVBKNLB PTR(8),        /* BLOCK OVERHEAD, KEYED NOT LAST*/
          3 CTVBKLB  PTR(8),        /* BLOCK OVERHEAD, KEYED LAST    */
          3 CTVBONK  PTR(8),        /* BLOCK OVERHEAD, NOT KEYED     */
          3 CTVDVFLG BIT(8),        /* FLAGS                         */
            4 *        BIT(7),      /* RESERVED                      */
            4 CTVTLFLG BIT(1),      /* IF ON, USE TOLERANCE FACTOR   */
                                    /* ON ALL BLOCKS EXCEPT LAST     */
          3 CTVTLFAC FIXED(15) BDY(BYTE), /* TOLERANCE FACTOR        */
        2 CTVOLFLG BIT(8),          /* VOLUME RECORD FLAGS           */
        2 CTVSYEDS PTR(8),          /* SYSTEM ALLOWED DS EXTENTS     */
                                    /*   PER SUBALLOCATION           */
        2 *        CHAR(4);         /* RESERVED                      */
 /********************************************************************/
 /*     DECLARATION OF THE SPACE HEADER GROUP STRUCTURE THAT CAN     */
 /*       BE DERIVED FOR EACH DATA SPACE ON THE VOLUME.  NOTE:       */
 /*       IF ALL DATA SET DIRECTORIES ON THE VOLUME ARE NOT          */
 /*       RETRIEVED IN THE SAME EXTRACT CALL, THE BITS CTVSPUCT      */
 /*       AND CTVSPMCT, AND THE FIELD CTVSPNDS MAY BE INCORRECT.     */
 /********************************************************************/
    DECLARE
      1 CTVSPHDR BASED,             /* SPACE HEADER GROUP            */
        2 CTVSPHCV PTR(8),          /* COUNT OF VARIABLE FIELDS      */
        2 CTVSPHLF PTR(8),          /* LENGTH OF FIXED INFORMATION   */
        2 CTVF1TIM CHAR (8),        /* FORMAT 1 DSCB TIME STAMP      */
        2 CTVF1ADR CHAR(5),         /* CCHHR OF THE FORMAT 1 DSCB    */
        2 CTVSPFLG BIT(8),          /* DATA SPACE FLAGS              */
          3 CTVSPUNQ BIT(1),        /* UNIQUE DATA SPACE             */
          3 CTVSPAUT BIT(1),        /* AUTOMATICALLY BUILT DATA SPACE*/
          3 CTVSPUCT BIT(1),        /* USER CATALOG IN DATA SPACE    */
          3 CTVSPMCT BIT(1),        /* MASTER CATALOG IN DATA SPACE  */
          3 CTVSPCDF BIT(1),        /* DATA SPACE BUILT BY CATLG DEF */
          3 *        BIT(3),        /* RESERVED                      */
        2 CTVSPNDS FIXED(15) BDY(BYTE), /* NO. DATA SETS IN DATA SPC */
        2 CTVSPNEX PTR(8),          /* NO. DATA SPACE EXTENTS        */
        2 CTVSPSPO PTR(8),          /* DATA SPACE CREATION SPACE OPTS*/
        2 CTVSPSQT PTR(24) BDY(BYTE); /* SECONDARY SPACE QUANTITY    */
 /********************************************************************/
 /*     DECLARATION OF THE SPACE DESCRIPTOR GROUP STRUCTURE THAT     */
 /*       CAN BE DERIVED FOR EACH EXTENT OF EVERY DATA SPACE.        */
 /********************************************************************/
    DECLARE
      1 CTVDESGP BASED,             /* SPACE DESCRIPTOR GROUP        */
        2 CTVDESCV PTR(8),          /* COUNT OF VARIABLE FIELDS      */
        2 CTVDESLF PTR(8),          /* LENGTH OF FIXED INFORMATION   */
        2 CTVDESUU FIXED(15),       /* ALLOCATION UNITS USED         */
        2 CTVEXTST CHAR(4),         /* EXTENT STARTING CCHH ADDRESS  */
          3 CTVSTDES PTR(31) BDY(BYTE), /* CALCULATING CCHH FORM     */
            4 CTVSTCC FIXED(15) BDY(BYTE), /* CYLINDER START         */
            4 CTVSTHH FIXED(15) BDY(BYTE), /* TRACK START            */
        2 CTVDESTK FIXED(15) BDY(BYTE), /* NO. OF TRACKS IN EXTENT   */
        2 CTVDESHD FIXED(15) BDY(BYTE), /* SEQUENCE NUMBER OF THE    */
                                    /* ASSOCIATED SPACE HEADER GROUP */
        2 CTVMAPLN PTR(15) BDY(BYTE), /* SPACE MAP LENGTH            */
        2 CTVMAP (*) PTR(8);        /* SPACE MAP-RUN LENGTH CODE     */
 /********************************************************************/
 /*     DECLARATION OF THE DATA SET DIRECTORY GROUP THAT CAN BE      */
 /*       DERIVED FOR EACH DATA SET ON THE VOLUME.                   */
 /********************************************************************/
    DECLARE
      1 CTVDSGRP BASED,             /* DATA SET DIRECTORY GROUP      */
        2 CTVDSGCV PTR(8),          /* COUNT OF VARIABLE FIELDS      */
        2 CTVDSGLF PTR(8),          /* LENGTH OF FIXED INFORMATION   */
        2 CTVDSNEX PTR(8),          /* NO. OF DATA SET EXTENTS       */
        2 CTVDSCID PTR(24) BDY(BYTE), /* DATA SET CI ID VALUE        */
        2 CTVDSDFL BIT(8),          /* DATA SET FLAGS                */
          3 CTVDSDCN BIT(1),        /* CANDIDATE ON VOL - NO SPACE   */
          3 *        BIT(7),        /* RESERVED                      */
        2 CTVDSXCT PTR(15) BDY(BYTE), /* SPACE HDR DIRECTORY LENGTH  */
        2 CTVDSDIR (*) CHAR(3) BDY(BYTE), /* SPACE HDR SSN ENTRIES   */
          3 CTVSPSSN FIXED(15) BDY(BYTE), /* SPACE HDR GROUP SEQ NO. */
          3 CTVSPSXC PTR(8);        /* NO. OF DS EXT'S IN THE SPACE  */
 /********************************************************************/
 /*    DECLARATION OF THE VOLUME RECORD GROUP OCCURRENCE POINTERS    */
 /********************************************************************/
    DECLARE
      1 CTVGOPT BASED,              /* GROUP OCCURRENCE POINTERS     */
        2 CTVGOCI CHAR(3),          /* CI NUMBER OR                  */
          3 CTVGOFLG BIT(8),        /*   GROUP OCCURRENCE FLAG       */
          3 CTVGODSP FIXED(15)      /* DISPLACEMENT TO GROUP         */
                     BDY(BYTE),     /*   OCCURRENCE                  */
        2 CTVGOGCI PTR(8),          /* GROUP CODE INFORMATION        */
          3 CTVGOEXT BIT(1),        /* GROUP OCCURRENCE OUTSIDE RECRD*/
          3 CTVGODEL BIT(1),        /* DELETED GROUP OCCURRENCE      */
          3 CTVGOGC  BIT(6),        /* TRUE GROUP CODE               */
        2 CTVGOSEQ FIXED(15) BDY(BYTE); /* (HIGH) SEQUENCE NUMBER    */
 /********************************************************************/
 /*         DECLARATION OF THE TRUE GROUP CODES IN THE GROUP         */
 /*         OCCURRENCE POINTERS (CTVGOGCI)                           */
 /********************************************************************/
    DECLARE                         /* TRUE GROUP CODES IN G.O.P.'S  */
      CTVDSPHC BIT(8) CONSTANT('06'X), /* DATA SPACE HEADER CODE     */
      CTVDSDGC BIT(8) CONSTANT('08'X), /* DATA SPACE DIRECTORY CODE  */
      CTVDSPDC BIT(8) CONSTANT('07'X); /* DATA SPACE DESCRIPTOR CODE */
 /********************************************************************/
 /*     DECLARATION OF CONTROL INFORMATION FOR REPEATING FIELDS      */
 /********************************************************************/
    DECLARE
      1 CTVRCTRL BASED(CCACPE2),    /* CONTROL INFORMATION           */
        2 CTVEXRPT CHAR(5),         /* REPEATING CONTROL INFORMATION */
          3 CTVEXGCI CHAR(3),       /* CI NUMBER OF EXTENSION RECORD */
          3 *        CHAR(2),       /* RESERVED                      */
        2 CTVEXRCT PTR(8),          /* COUNT OF GROUP OCCUR PTRS     */
        2 CTVEGOPT (*) CHAR(6);     /* VARIABLE NO. OF GOP'S         */
 /********************************************************************/
 /*          DECLARATION OF VOLUME ENTRY GROUP CODES (NEW)           */
 /********************************************************************/
    DECLARE
      SMGC    FIXED(8) CONSTANT(5), /* SPACE MAP GROUP CODE          */
      DSPGC   FIXED(8) CONSTANT(6), /* DATA SPACE GROUP CODE         */
      DIRGC   FIXED(8) CONSTANT(8); /* DATA SET DIRECTORY GROUP CODE */
 /********************************************************************/
 /*     DECLARATION OF THE SPACE MAP GROUP USED TO SUBALLOCATE       */
 /*       VSAM DATA SPACE FOR THE ENTIRE VOLUME. THERE EXIST         */
 /*       AS MANY MAXIMUM LENGTH OCCURRENCES AS ARE NECESSARY        */
 /*       TO CONTAIN THE ENTIRE MAP.                                 */
 /********************************************************************/
    DECLARE
      1 CTVSPMAP BASED,             /* SPACE MAP GROUP               */
        2 CTVSMSN  FIXED(15),       /* SPACE MAP GROUP SEQUENCE NO.  */
          3 CTVSMCV  PTR(8),        /* COUNT OF VARIABLE FIELDS      */
          3 CTVSMLF  PTR(8),        /* LENGTH OF FIXED INFORMATION   */
        2 CTVSMLEN FIXED(15),       /* BIT MAP LENGTH                */
        2 CTVSMBIT CHAR(*);         /* VARIABLE LENGTH SPACE BIT MAP */
 /********************************************************************/
 /*     DECLARATION OF DATA SPACE GROUP STRUCTURE THAT EXISTS        */
 /*     FOR EACH VSAM DATA SPACE ON THE VOLUME                       */
 /********************************************************************/
    DECLARE
      1 CTVDSPAC BASED,             /* DATA SPACE GROUP MAPPING      */
        2 CTVDSPSN  FIXED(15),      /* DATA SPACE GROUP SEQUENCE NO. */
          3 CTVDSPCV PTR(8),        /* COUNT OF VARIABLE FIELDS      */
          3 CTVDSPLF PTR(8),        /* LENGTH FIXED INFORMATION      */
        2 CTVF1TME CHAR(8),         /* FORMAT 1 DSCB TIME STAMP      */
        2 CTVF1PTR CHAR(5),         /* CCHHR OF THE FORMAT 1 DSCB    */
        2 CTVDSPFG BIT(8),          /* DATA SPACE FLAGS              */
          3 CTVUNIQ  BIT(1),        /* UNIQUE DATA SPACE             */
          3 CTVAUTO  BIT(1),        /* AUTOMATICALLY BUILT SPACE     */
          3 *        BIT(2),        /* RESERVED                      */
          3 CTVCATDF BIT(1),        /* DATA SPACE BUILT BY CATLG DEF */
          3 *        BIT(3),        /* RESERVED                      */
        2 CTVNOEXT PTR(8),          /* NO. OF DATA SPACE EXTENTS     */
        2 CTVSPOPT BIT(8),          /* DATA SPACE CREATION SPACE OPTS*/
        2 CTVSQT PTR(24) BDY(BYTE), /* SECONDARY SPACE QUANTITY      */
        2 CTVSPEXT CHAR(64),        /* DATA SPACE EXTENT DESCRIPTOR  */
                                    /*   AREA                        */
          3 CTVEXTNT(16) CHAR(4)    /* EXTENT DESCRIPTORS            */
                         BDY(BYTE),
            4 CTVEXTT FIXED(15)     /* RELATIVE TRACK NO. OF THE     */
                      BDY(BYTE),    /*   EXTENT                      */
            4 CTVEXTNN FIXED(15)    /* NO. OF TRACKS IN THE EXTENT   */
                       BDY(BYTE);
 /********************************************************************/
 /*     DECLARATION OF DATA SET DIRECTORY GROUP THAT EXISTS FOR      */
 /*       EACH DATA SET ON THE VOLUME                                */
 /********************************************************************/
    DECLARE
      1 CTVDIR BASED,               /* DATA SET DIRECTORY            */
        2 CTVDSDSN FIXED(15),       /* DATA SET DIRECTORY SEQ. NO.   */
          3 CTVDSDCV PTR(8),        /* COUNT OF VARIABLE FIELDS      */
          3 CTVDSDLF PTR(8),        /* LENGTH OF FIXED FIELDS        */
        2 CTVDSDCI PTR(24) BDY(BYTE); /* ASSOCIATED DATA SET CI NO.  */
 /********************************************************************/
 /*     DECLARATION OF DATA SET DIRECTORY GROUP EXTENSION THAT       */
 /*     EXISTS FOR VOLUMES OWNED BY RECOVERABLE CATALOGS.            */
 /********************************************************************/
    DECLARE
      1 CTVDEXTN BASED(ADDR(CTVDIR) + LENGTH(CTVDIR)),/* DATA  SET   */
                                    /* DIRECTORY EXTENSION   @Y30SSJG*/
        2 CTVDIRTS CHAR(4),         /* TIME STAMP            @Y30SSJG*/
        2 CTVDRSTT PTR(24) BDY(BYTE); /* DATA SET SUM TT     @Y30SSJG*/
./ ADD NAME=IGGMZLOC
 @EJECT ;
 /*******************************************************************/
 /********************************************************************/
 /*********************  IGGMZLOC   **********************************/
 /******************** 16 SEPT 72  2000 DB  **************************/
 /*20SET72,0900. ADD ZSDRC TO ZZRC                                   */
 /*20SEP72,0900. CHANGE ZTCIH DIM & LENGTH                           */
 /*26SEP72,1800.CHANGE LEVEL OF ZSTATE                               */
 /*26SEP72,1800.ENCLOSE ZCPSET IN STRUCTURE,RESOLVE LENGTH OF ZCPSET */
 /*30SEP72,1200.ZMCX9 ADD SUBSTRUCTURE                               */
 /*30SEP72,1200.ZPS0.DROPPED DURING LAST EDIT                        */
 /*17OCT72.1200.ADD DEBUG NAME HOLDERS                               */
 /*******************************************************************/
 /*                                                                 */
 /*  IGGMZLOC: SUBALLOCATE DECLARATIONS                             */
 /*                                                                 */
 /*******************************************************************/
* /*                                                                */
* /* MACCOMP Y-2 SC1DE/SJE92                                        */
* /* MACSTAT Y-2 72335/Y02020                                       */
* /*                                                                */
 /*******************************************************************/
     GEN REFS(CCATEMPS)(USING @DATD-(CCATEMPS-IGGCCA),11);
 %INCLUDE  SYSLIB(IGGMSAWA);
 %INCLUDE  SYSLIB(IGGMVEDC);
 @LIST OFF;
 %INCLUDE  SYSLIB(IGGMCDCL);
 %INCLUDE  SYSLIB(IGGMCMDM);

 /*******************************************************************/
 /*******************************************************************/

       %MXRCD ='497';                  /*MAX RECORD SIZE            */
       %MXRCDA = '430';                /*MAX # BYTES IN VAR SECTION */
       %ZVWN  ='10';                   /*SMALLEST W-TYPE RECORD CI# */
       %ZMXNDS='32767';                /*MAX # DATA SETS ON A VOLUME*/
       %ZMXDSX='255';                  /*MAX # DATA SET EXTENTS     */

 /*******************************************************************/

       %ZINIT ='1';                    /*INITIAL                    */
       %ZCONT ='0';                    /*CONTINUE                   */
       %ZEQ   ='''E''';                /*EQUAL                      */
       %ZNEQ  ='''N''';                /*NOT EQUAL                  */
       %ZEOF  ='''F''';                /*END OF FILE                */
       %ZEOR  ='''R''';                /*END OF RECORD              */
       %ZERR  ='''X''';                /*ERROR                      */
       %ZINSP = '''Y''';               /*EXISTS IN THE SPACE        */

        %ZAV  ='1';                    /*RLC STATE AVAILABLE        */
       %ZUN = '-1';                    /*RLC STATE,UNAVAILABLE       */

       %ZDSGC ='CTVDSDGC';
       %ZSDGC ='CTVDSPDC';
       %ZSHGC ='CTVDSPHC';
       %ZGCMSK='TRUEGC';
       %ZDSONV='ZVNDS';

 /*******************************************************************/
 /******************************************************************/
 /******************************************************************/
 DCL   ZLOCBASE   PTR(32) BDY(BYTE) BASED;
 DCL   ZADDR      PTR(32) BDY(BYTE) BASED;
 DCL   ZID     CHAR(8) BDY(BYTE) BASED;
 DCL   ZFLAG   PTR(32) BDY(BYTE);      /*DEBUG ZAP FLAG              */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                                    /*Z-TEMPS,GENERAL USE      */
  1     ZTEMP    BASED                 ,/*WORKING LOCS-VOLATELE    */
   3     ZTNDS    FIXED(15) BDY(BYTE)  ,/*DS SCAN TALLY            */
   3     ZTNDSA   FIXED(15) BDY(BYTE)  ,/*DS IN SPACE SCAN TALLY   */
   3     ZNT      FIXED(15) BDY(BYTE)  ,/*WORKING REG,ZTNT         */
   3     ZTC      FIXED(15) BDY(BYTE)  ,/*TRACK TALLY IN MAP SCAN  */
   3     ZSTATE   FIXED(15) BDY(BYTE)  ,/*RLC STATE,MAP SCAN       */
   3     ZTN      FIXED(15) BDY(BYTE) ,
   3     ZTNA     FIXED(15) BDY(BYTE) ,/*CONTENDER TRK #            */
   3     ZTN1     FIXED(15) BDY(BYTE) ,/* TEMP IN                   */
   3     ZTN2     FIXED(15) BDY(BYTE) ,/* TEMP TN                   */
   3     ZNT1     FIXED(15) BDY(BYTE) ,/* TEMP NT                   */
   3     ZNT2     FIXED(15) BDY(BYTE) ,/* TEMP NT                   */
   3     ZTNT     FIXED(15) BDY(BYTE)  ,/*TEMP, ZSDXNT             */
   3     ZNTA     FIXED(15) BDY(BYTE) ,/*TEMP ZNT ALTERNATE         */
   3     ZTLL     PTR(24)   BDY(BYTE)  ,/*TEMP, ZSDXLL             */
    5    ZTEMPP24 PTR(24)   BDY(BYTE)  ,/*WORKING CI,GENERAL       */
   3     ZTCIX    FIXED(15) BDY(BYTE) ,/* ZTCI TALLY                */
   3     ZTCIH(25) CHAR(4) BDY(BYTE) ,/*PUT/ADD CHAIN HISTORY        */
    5    ZTCEV    CHAR(4)   BDY(BYTE) ,/* CI EVENT                  */
     7   ZTCIPA   CHAR(1)             ,/*@ FROM ?@XXREC,X='ASSGN CI'*/
     7   ZTCI     PTR(24)   BDY(BYTE),/* RECORD CI #                */
   3     ZTPC     PTR(8)               ,/*TEMP, ZSDXPC             */
   3     ZTTNA    FIXED(15) BDY(BYTE)  ,/*TEMP, ZSDXTNA            */
   3     ZTFA     FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZTFB     FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZTFC     FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZTFD     FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZRA      FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZRB      FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZRC      FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZTF0     FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZTF1     FIXED(15) BDY(BYTE) ,/*TEMP, USED IN MAP SHIFT    */
   3     ZTEMPP8  PTR(8)    BDY(BYTE)  ,
   3     ZTEMPP15 PTR(15)   BDY(BYTE)  ,
   3     ZTEMPP31 PTR(31)   BDY(BYTE)  ,
   3     ZTEMPF15 FIXED(15) BDY(BYTE)  ,
   3     ZTEMPF31 FIXED(31) BDY(BYTE)  ,
   3     ZTEMPB16 BIT(16)   BDY(BYTE)  ,
    5    ZTP16    PTR(16)   BDY(BYTE)  ,
     7   ZTP8     PTR(8)               ,
      9  ZTB8     BIT(8)               ,
     7   ZTP8A    PTR(8)               ,
      9  ZTB8A    BIT(8)               ;
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DECLARE
  1     ZZCTLS    BASED                ,/*OVERALL CONTROL VARIABLES*/
   3     ZCPBASE  PTR(31)   BDY(BYTE)  ,/*CURRENT BASE FOR ZCPE'S. */
   3     ZPBASE   PTR(31)   BDY(BYTE)  ,/*WORKING BASE,GENERAL     */
   3     ZPLOC    PTR(31)   BDY(BYTE)  ,/*UZIP & ZZIP START OF AREA */
   3     ZPBASEA  PTR(31)   BDY(BYTE)  ,/*WORKING BASE-ALTERNATIVE */
   3     ZPBASEB  PTR(31)   BDY(BYTE)  ,/*WORKING BASE-VOLATILE    */
   3     ZPBASE3  PTR(31)   BDY(BYTE)  ,/*ZCP SET FOR RAB3         */
   3     ZPBASE4  PTR(31)   BDY(BYTE)  ,/*ZCP SET FOR RAB4         */
   3     ZPBASE5  PTR(31)   BDY(BYTE)  ,/*ZCP SET FOR RAB5         */
   3     ZPL      PTR(31)   BDY(BYTE) ,/*-> LEFT RLC                */
   3     ZP       PTR(31)   BDY(BYTE) ,/*-> TARGET RLC              */
   3     ZPR      PTR(31)   BDY(BYTE) ,/*-> RIGHT RLC               */
   3     ZP1      PTR(31)   BDY(BYTE) ,/*SAVE ZPBASE                */
   3     ZP2      PTR(31)   BDY(BYTE) ,/*SAVE ZPBASEA               */
   3     ZP3      PTR(31)   BDY(BYTE) ,/*SAVE ZPBASEB               */
   3     ZSALOOP  FIXED(15) BDY(BYTE)  ,/*SALL LOOP COUNT          */
   3     ZLOOP    PTR(8)               ,/*SECONDARY LOOP CTL,GEN'L */
   3     ZPASS    FIXED(15) BDY(BYTE)  ,/*BYPASS PROCESS UNDER WAY */
   3     ZPASSZ   CHAR(4)   BDY(BYTE)  ,/*EXIT CODE CONTROL        */
    5    ZPASSA   CHAR(2)   BDY(BYTE)  ,
     7   ZPASSA1  CHAR(1)   BDY(BYTE)  ,
     7   ZPASSA2  CHAR(1)   BDY(BYTE)  ,
    5    ZPASSB   CHAR(2)   BDY(BYTE)  ,
     7   ZPASSB1  CHAR(1)              ,
     7   ZPASSB2  CHAR(1)              ,
   3     ZRUSE    CHAR(16)  BDY(BYTE)  ,/* RAB USAGE               */
    5    ZUSED3    PTR(8)              ,/*USED 3                   */
    5    ZUSED4    PTR(8)              ,/*USED 4                   */
    5    ZUSED5    PTR(8)              ,/*USED 5                   */
    5    ZBUILT3   PTR(8)              ,/*BUILT 3                  */
    5    ZBUILT4   PTR(8)              ,/*BUILT 4                  */
    5    ZBUILT5   PTR(8)              ,/*BUILT 5                  */
    5    ZALTER3   PTR(8)              ,/*ALTERED 3                */
    5    ZALTER4   PTR(8)              ,/*ALTERED 4                */
    5    ZALTER5   PTR(8)              ,/*ALTERED 5                */
   3     ZRTYPE   CHAR(1)              ,/*BUILD RECORD TYPE        */
   3     ZRECCI   PTR(24)   BDY(BYTE)  ,/*RECORD CI, GET/ADD/PUT   */
   3     ZMANX    PTR(8)               ,/*Z-MAIN MASTER EXIT CTL   */
   3     ZMANZ    PTR(8)               ,/*Z-MAIN RC-EXIT CTL       */
   3     ZMODE    PTR(8)               ,/*CONVERSION TYPE          */
   3     ZFUNC    PTR(8)               ,/*INDEX TO ZFC             */
   3     ZPLN     FIXED(15) BDY(BYTE)  ;/*ZIPPER LENGTH            */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 /* ZCPSET IS USED TO INDICATE WHICH RECORD POINTERS ARE USED.     */
 /*                                                                */
 DECLARE
  1     ZCPS            BASED         ,
   3     ZCPSET (3)PTR(8)             ;/*Z-PTR SET TO USE            */
       %ZPS0 = '0';                    /*PER ZCPBASE OR PER TGT CI#  */
        %ZPS3 = '3'                    ;/*PTRS TO REC IN BLOCK 3   */
        %ZPS4 = '4'                    ;/*PTRS TO REC IN BLOCK 4   */
        %ZPS5 = '5'                    ;/*PTRS TO REC IN BLOCK 5   */
        %ZPSX = '''FF''X'              ;/*PTRS NOT VALID           */
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
 /*  FUNCTIONAL PARAMETERS                                         */
 /*                                                                */
 DECLARE
  1      ZFPS     BASED                ,
   3     ZCCHH    CHAR(4)   BDY(BYTE)  ,/* LO-EXTENT CCHH          */
    5    ZCC      FIXED(15) BDY(BYTE)  ,/* LO-CC                   */
    5    ZHH      FIXED(15) BDY(BYTE)  ,/* LO-HH                   */
   3     ZCCHHX   CHAR(4)   BDY(BYTE)  ,/* HI-EXTENT CCHH          */
    5    ZCCX     FIXED(15) BDY(BYTE)  ,/* HI-CC                   */
     7   ZSUU     FIXED(15) BDY(BYTE)  ,/* # TRKS USED             */
    5    ZHHX     FIXED(15) BDY(BYTE)  ,/* HI-HH                   */
   3     ZBOHD    PTR(8)    BDY(BYTE)  ,/* BLOCK OVERHEAD          */
   3     ZCIND    FIXED(15) BDY(BYTE)  ,/* NO.OF CYL'S IN DEVICE   */
   3     ZTINC    FIXED(15) BDY(BYTE)  ,/* NO.OF TRK'S IN CYL      */
   3     ZBINT    FIXED(15) BDY(BYTE)  ,/* NO.OF BYTES IN TRK      */
   3     ZNCYL    FIXED(15) BDY(BYTE)  ,/* NO.OF CYL'S             */
   3     ZNREC    FIXED(15) BDY(BYTE)  ,/* NO.OF REC'S             */
   3     ZNBIR    FIXED(15) BDY(BYTE)  ,/* NO.OF BYTES IN REC      */
   3     ZNTRK    FIXED(15) BDY(BYTE)  ,/* NO.OF TRACKS            */
   3     ZTRKN    FIXED(15) BDY(BYTE)  ,/* TRACK NUMBER            */
   3     ZACALN   FIXED(15) BDY(BYTE)  ,/*ADJUSTED CA LENGTH       */
   3     ZNCAA    FIXED(15) BDY(BYTE)  ,/*CA TEST                  */
   3     ZSHSSN   FIXED(15) BDY(BYTE)  ;/*SPHDR SSN                */
 /*                                                                */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 /* VARIABLES USED IN MANIPULATIONS AND MOVES                       */
 DCL    ZYRLC     FIXED(31) BASED     ;

 /******************************************************************/
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZA    CHAR(MXRCD)        BASED,
   3     ZA   (*) CHAR(1)              ;
 /******************************************************************/
 DCL    ZARRAY (*) PTR(8)  BASED       ;/*ADDRESSING OVERLAY       */
 /******************************************************************/
 DCL    ZARRY1 (*) PTR(8)  BASED       ;/*ADDRESSING OVERLAY       */
 /******************************************************************/
 DCL    ZARRY  (*) PTR(8) BASED        ;/*ADDRESSING OVERLAY       */
 /******************************************************************/
 DCL    ZB        PTR(8)    BASED     ;/*ADDRESSING OVERLAY         */
 DCL    ZC        PTR(8)    BASED     ;/* ADDRESSINGOVERLAY         */
 DCL    ZD        PTR(24)   BASED     ;/*ADDRESSING OVERLAY         */
 DCL    ZE        FIXED(31) BASED     ;/*ADDRESSING OVERLAY         */
 DCL    ZF        FIXED(15) BASED     ;/*ADDRESSING OVERLAY         */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 /* ZCPTR CONTAINS THE DECLARATIONS THAT ARE USED TO ADDRESS       */
 /* RECORDS.THE STRUCTURE IS AN OVERLAY ON ZCPARRAY WHICH PROVIDES */
 /* STORAGE SPACE WITHIN THE SUBALLOCATE WORKAREA.                 */
 /*                                                                */
 DECLARE
  1     ZCPTR   BASED(ZCPBASE)         ,/*ZCPBASE IS IN ZZCTLS     */
   3     ZCPE1    PTR(31)   BDY(BYTE)  ,/*-> CATRCD                */
   3     ZCPE2    PTR(31)   BDY(BYTE)  ,/*-> CTVRCTRL              */
   3     ZCPE3    PTR(31)   BDY(BYTE)  ,/*-> NEXT BYTE BEYOND GOP'S*/
   3     ZCPE4    PTR(31)   BDY(BYTE)  ,/*-> NEXT UNUSED BYTE      */
   3     ZCPE5    PTR(31)   BDY(BYTE)  ,/*-> CTVGOPT               */
   3     ZCPE6    PTR(31)   BDY(BYTE)  ,/*-> CTVSPHDR-DESGP-DSGRP  */
   3     ZCPE6A   PTR(31)   BDY(BYTE)  ,/*->GROUP VAR FIELD LENGTH  */
   3     ZCPE7    PTR(31)   BDY(BYTE)  ,/*->CURRENT FIELD IN GROUP */
   3     ZCPE7L   PTR(31)   BDY(BYTE)  ,/*PREVIOUS FLD IN GRP      */
   3     ZCPE7R   PTR(31)   BDY(BYTE)  ,/*NEXT FIELD IN GRP        */
   3     ZCPE7A   PTR(31)   BDY(BYTE)  ,/*->FIRST FIELD IN RUN      */
   3     ZCPE7X   PTR(31)   BDY(BYTE)  ,/*->,RUN SCAN LIMIT         */
   3     ZGOSEQ   FIXED(15) BDY(BYTE)  ,/*TARGET GOP SEQNO.        */
   3     ZGODSP   PTR(16)   BDY(BYTE)  ,/*DISP TO TARGET GROUP     */
   3     ZGOCI    CHAR(3)   BDY(BYTE)  ,/*CI FOR TARGET GROUP'S REC*/
   3     ZGOGC    PTR(8)    BDY(BYTE)  ,/*TARGET GOGC               */
   3     ZNTOGO   PTR(8)    BDY(BYTE)  ,/*SCAN CTL,GOP'S YET TO SEE*/
   3     ZNDONE   PTR(8)               ,/*SCAN CONTROL,GOPS PASSED  */
   3     ZNSEEN   PTR(8)    BDY(BYTE)  ;/*SCAN CTL,GOP'S SEEN      */
 /*******************************************************************/
 DCL                                    /*ADDRESSING OVERLAY        */
  1     ZGRPF    BASED                 ,/*GROUP FORMAT FIELDS       */
   3     ZCV      PTR(8)               ,/*CTVDESCV OR CTVDSGCV      */
   3     ZLF      PTR(8)               ;/*CTVDESLF OR CTVDSGLF      */
 /*******************************************************************/
 DCL                                    /*ADDRESSING OVERLAY        */
  1     ZGRPV    BASED                 ,/*GROUP VARIABLE FIELD LN   */
  3      ZLN      FIXED(15) BDY(BYTE)  ;/*CTVMAPLN OR CTVDSXCT      */
 /******************************************************************/
 DCL
  1     ZDSDIR   BASED(ZCPE7)          ,/*CURRENT DS-DIRECTORY SLOT*/
   3     ZDSX     FIXED(15) BDY(BYTE)  ,/*SH SEQ NO.               */
   3     ZDSXC    PTR(8)               ;/*#DS EXTENTS IN THIS SPACE*/
 /******************************************************************/
 DCL
  1     ZMAPRLC  BASED(ZCPE7)          ,/*CURRENT RLC              */
   3     ZMC      PTR(8)               ,/*RLC CODE                 */
  3      ZMCX     FIXED(15) BDY(BYTE) ,/* OFFSET VALUE               */
   5     ZMCX1    PTR(8)              ,
   5     ZMCX2    PTR(8)              ;
 /******************************************************************/
 DCL
  1     ZMAPRLCA BASED(ZCPE7A)         ,/*NEXT RLC                 */
   3     ZMCA     PTR(8)               ,/* RLC CODE                */
   3     ZMCXA    FIXED(15) BDY(BYTE)  ;/* OFFSET VALUE            */
 /******************************************************************/
 DCL                                    /*PRECEDING RLC            */
  1     ZMAPRLCL   BASED(ZCPE7L)       ,
   3     ZMCL     PTR(8)               ,
   3     ZMCXL    FIXED(15) BDY(BYTE)  ;
 /******************************************************************/
 DCL                                    /*NEXT RLC                 */
  1     ZMAPRLCR   BASED(ZCPE7R)       ,
   3     ZMCR     PTR(8)               ,
   3     ZMCXR    FIXED(15) BDY(BYTE)  ;
 /******************************************************************/
 DCL
  1     ZXRLC    BASED                ,/*MAP MANIPULATION WORK AREA */
   3     ZXRLCL   CHAR(15)  BDY(BYTE) ,/* EXTENSION FIELD            */
    5    ZXUL     CHAR(3)   BDY(BYTE) ,/*RLC @ TGT LEFT,UNAVAIL     */
     7   ZXULC    PTR(8)    BDY(BYTE) ,/*    CODE FIELD             */
     7   ZXULF    FIXED(15) BDY(BYTE) ,/*    EXTENSION FIELD        */
    5    ZXAXL    CHAR(3)   BDY(BYTE) ,/*RLC INSERT @ TGT LFT,AVAIL.*/
     7   ZXAXLC   PTR(8)    BDY(BYTE) ,/*    CODE FIELD             */
     7   ZXAXLF   FIXED(15) BDY(BYTE) ,/*    EXTENSION FIELD        */
    5    ZXUXL    CHAR(3)   BDY(BYTE) ,/*RLC INSERT @ TGT LFT,UNAV. */
     7   ZXUXLC   PTR(8)    BDY(BYTE) ,/*    CODE FIELD             */
     7   ZXUXLF   FIXED(15) BDY(BYTE) ,/*    EXTENSION FIELD        */
    5    ZXA0     CHAR(3)   BDY(BYTE) ,/*TARGET RLC,AVAILABLE SPACE */
     7   ZXA0C    PTR(8)    BDY(BYTE) ,/*    CODE FIELD             */
     7   ZXA0F    FIXED(15) BDY(BYTE) ,/*    EXTENSION FIELD        */
    5    ZXUR     CHAR(3)   BDY(BYTE) ,/*RLC @ TGT RIGHT,UNAVAIL.   */
     7   ZXURC    PTR(8)    BDY(BYTE) ,/*    CODE FIELD             */
     7   ZXURF    FIXED(15) BDY(BYTE) ;/* EXTENSION FIELD            */

 /*******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                          /*EXTENT CONTROL TABLE               */
  1     ZXCTL  BASED(ZRCBASE)          ,/*USED IN ALLOCATING EXTENT*/
                                        /*CONTAINS PTR TO SMALLEST */
                                        /* EXTENT CONTRIBUTED & MAX*/
                                        /* NO.OF EXTENTS ALLOWED.  */
   3     ZMINX    PTR(31)   BDY(BYTE)  ,/*->MIN EXT.IN ZSDXRC SET  */
   3     ZMAXX    PTR(8)               ,/*NO.OF EXTENTS ALLOWED    */
   3     ZXTOGO   PTR(8)               ,/*EXT CAPACITY REMAINING   */
   3     ZNTREQD  FIXED(15) BDY(BYTE)  ,/*NO.OF TRKS REQUESTED     */
   3     ZNTTOGO  FIXED(15) BDY(BYTE)  ,/*NO.OF TRKS YET NEEDED    */
   3     ZCAREQD  FIXED(15) BDY(BYTE)  ,/*NO.OF CA REQUIRED        */
   3     ZCATOGO  FIXED(15) BDY(BYTE)  ;/*NO.OF CA YET NEEDED      */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                          /* BASE VER RECALL INFORMATION       */
  1     ZVRC    BASED(ZRBASE0)         ,/*                         */
   3     ZVRCI    PTR(24)   BDY(BYTE)  ,/*BASE VER-CI              */
   3     ZVNDS    FIXED(15) BDY(BYTE)  ,/* CTVNDSET                */
   3     ZVNDSP   FIXED(15) BDY(BYTE)  ,/* # SH THIS VOLUME        */
   3     ZVSHSEEN FIXED(15) BDY(BYTE)  ,/* # SH SEEN               */
   3     ZGADSS   FIXED(15) BDY(BYTE)  ,/*POTENTIAL INSERT SLOT-SSN*/
   3     ZGADSSX  FIXED(15) BDY(BYTE)  ,/*POTENTIAL INSERT SLOT-SSN*/
   3     ZGADLN   FIXED(15) BDY(BYTE)  ,/*POTENTIAL INSERT SLOT-SIZE*/
   3     ZGADLNX  FIXED(15) BDY(BYTE)  ,/*POTENTIAL INSERT SLOT-SIZE*/
   3     ZGADCI   CHAR(3)   BDY(BYTE)  ,/*POTENTIAL INSERT SLOT-CI */
   3     ZGADCIX  CHAR(3)   BDY(BYTE)  ;/*POTENTIAL INSERT SLOT-CI */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                          /*DATA SET DIRECTORY RECALL INFO.    */
  1     ZDSRC   BASED(ZRBASEA)         ,/*                         */
   3     ZDSGET  PTR(8)               ,/*GET DSD DONE FLAG,1=DONE   */
   3     ZDSCI    PTR(24)   BDY(BYTE)  ,/*CI FOR DS-GOP            */
   3     ZDSNEX   PTR(8)               ,/* # DS EXTENTS            */
   3     ZDSINSP  PTR(8)              ,/* 1=DS IN SPACE,0=NOT IN SP.*/
   3     ZDSXINSP PTR(8)              ,/*#DS EXTENTS IN THE SPACE   */
   3     ZDSXCI   PTR(24)   BDY(BYTE)  ,/*CI FOR TARGET CTVDSDIR   */
   3     ZDSGOP   CHAR(6)   BDY(BYTE)  ,/*OVERLAY,LIKE 'CTVGOPT'   */
    5    ZDSOCI   CHAR(3)   BDY(BYTE)  ,/*   CTVGOCI               */
     7   ZDSFLG   BIT(8)               ,/*   CTVGOFLG              */
     7   ZDSDSP   FIXED(15) BDY(BYTE)  ,/*   CTVGODSP              */
    5    ZDSGCI   PTR(8)               ,/*   CTVGOGCI              */
     7   ZDSEXT   BIT(1)               ,/*   CTVGOEXT              */
     7   ZDSDEL   BIT(1)               ,/*   CTVGODEL              */
     7   ZDSOGC   BIT(6)               ,/*   CTVGOGC               */
    5    ZDSSEQ   FIXED(15) BDY(BYTE)  ;/*   CTVGOSEQ              */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                          /*SPACE HEADER RECALL CONTROL INFO.  */
  1     ZSHRC    BASED(ZRBASEB)        ,/*                         */
   3     ZSHCI    PTR(24)   BDY(BYTE)  ,/*CI FOR SH-GOP            */
   3     ZSHGOP   CHAR(6)   BDY(BYTE)  ,/*OVERLAY,LIKE CTVGOPT     */
    5    ZSHOCI   CHAR(3)   BDY(BYTE)  ,/*   CTVGOCI               */
     7   ZSHFLG   BIT(8)               ,/*   CTVGOFLG              */
     7   ZSHDSP   FIXED(15) BDY(BYTE)  ,/*   CTVGODSP              */
    5    ZSHGCI   PTR(8)               ,/*   CTVGOGCI              */
     7   ZSHEXT   BIT(1)               ,/*   CTVGOEXT              */
     7   ZSHDEL   BIT(1)               ,/*   CTVGODEL              */
     7   ZSHOGC   BIT(6)               ,/*   CTVGOGC               */
    5    ZSHSEQ   FIXED(15) BDY(BYTE)  ,/*   CTVGOSEQ              */
   3     ZSHNDS   FIXED(15) BDY(BYTE)  ,/*NO.DS IN SPACE           */
   3     ZSHNEX   PTR(8)               ,/*NO.EXT IN SPACE          */
   3     ZSHSPFLG BIT(8)               ,/*SH FLAGS                 */
    5    ZSHUNQ   BIT(1)               ,/*  UNIQUE                 */
    5    ZSHAUT   BIT(1)               ,/*  AUTOMATICLY BUILT      */
    5    ZSHUCT   BIT(1)               ,/*  USER CAT IN SPACE      */
    5    ZSHMCT   BIT(1)               ,/*MASTER CATALOG IN SPACE  */
    5    *        BIT(4)               ,/*RESERVED                 */
   3     ZSHNX    PTR(8)               ,/*NO.OF EXTS SO FAR        */
   3     ZSHNSD   PTR(8)               ,/*NO.OF SD THIS PASS       */
   3     ZSHTOGO  PTR(8)               ,/*SCAN PARM SAVE ZNTOGO    */
   3     ZSHSEEN  PTR(8)               ,/*SCAN PARM SAVE ZNSEEN    */
   3     ZSHCPE5  PTR(31)   BDY(BYTE)  ;/*SCAN PARM SAVE ZCPE5     */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                          /*SPACE DESCRIPTOR RECALL INFORMATION*/
  1     ZSDRC   BASED(ZRBASEC)         ,/*                         */
   3     ZSDCI    PTR(24)   BDY(BYTE)  ,/*CI FOR SD GOP            */
   3     ZSDOCI1  PTR(24)   BDY(BYTE) ,/*SPACE MAP EXTN FIRST REC CI*/
   3     ZSDOCI2  PTR(24)   BDY(BYTE) ,/*SPACE MAP EXTN LAST REC CI */
   3     ZSDGOP   CHAR(6)   BDY(BYTE)  ,/*OVERLAY,LIKE CTVGOPT     */
    5    ZSDOCI   CHAR(3)   BDY(BYTE)  ,/*   CTGOCI                */
     7   ZSDFLG   BIT(8)               ,/*   CTVGOFLG              */
     7   ZSDDSP   FIXED(15) BDY(BYTE)  ,/*   CTVGODSP              */
    5    ZSDGCI   PTR(8)               ,/*   CTVGOGCI              */
     7   ZSDEXT   BIT(1)               ,/*   CTVGOEXT              */
     7   ZSDDEL   BIT(1)               ,/*   CTVGODEL              */
     7   ZSDOGC   BIT(6)               ,/*   CTVGOGC               */
    5    ZSDSEQ   FIXED(15) BDY(BYTE)  ,/*   CTVGOSEQ              */
   3     ZSDUU    FIXED(15) BDY(BYTE) ,/*#ALLOC UNITS USED          */
   3     ZSDTN    FIXED(15) BDY(BYTE)  ,/*FIRST TRK NO. OF EXTENT  */
   3     ZSDTNA   FIXED(15) BDY(BYTE)  ,/*FIRST AVAILABLE TRACK */
   3     ZSDNT    FIXED(15) BDY(BYTE)  ,/*NO.OF TRKS IN EXTENT     */
   3     ZSDTC    FIXED(15) BDY(BYTE)  ,/* #TRKS DURING RLC SCAN  */
   3     ZSDNX    PTR(8)               ,/*NO.EXT THIS SD SO FAR    */
   3     ZSDCT    FIXED(15) BDY(BYTE) ,/* FREE SPACE IN GROUP,TALLY  */
   3     ZSDTOGO  PTR(8)               ,/*SCAN PARM ZNTOGO         */
   3     ZSDSEEN  PTR(8)               ,/*SCAN PARM ZNSEEN         */
   3     ZSDCPE5  PTR(31)   BDY(BYTE)  ;/*SCAN PARM ZCPE5          */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                          /*SD EXTENT CONTRIBUTED RECALL INFO  */
  1     ZSDXRC   BASED(ZRBASED)        ,/*                         */
   3     ZSDXSS   FIXED(15) BDY(BYTE)  ,/*SPACE DESCRIPTOR SEQ NUMB */
   3     ZSDXCI   PTR(24)   BDY(BYTE)  ,/*CI OF SD GROUP MAP-EXT   */
   3     ZSDXOCI  PTR(24)   BDY(BYTE) ,/*ZSDOCI OF PARENT           */
   3     ZSDXOCI1 PTR(24)   BDY(BYTE) ,/*ZSDOCI1 OF PARENT          */
   3     ZSDXOCI2 PTR(24)   BDY(BYTE) ,/*ZSDOCI2 OF PARENT          */
   3     ZSDXTN   FIXED(15) BDY(BYTE)  ,/*CONTRIBUTOR TRACK NO.    */
   3     ZSDXNT   FIXED(15) BDY(BYTE)  ,/*NO.OF TRACKS CONTRIBUTED */
   3     ZSDXSP   FIXED(15) BDY(BYTE) ,/*REC SPACE IN RELATED SD    */
   3     ZSDXTNA  FIXED(15) BDY(BYTE) ;/*BASE TRACK# @ MAP IX LOC   */
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                                    /*                         */
  1     ZRCPTR  BASED                  ,/*PTRS TO ZRCARRAY SECTIONS*/
   3     ZRCBASE  PTR(31)   BDY(BYTE)  ,/*ZXCTL &BASE FOR ZRCARRAY */
   3     ZRBASE0  PTR(31)   BDY(BYTE)  ,/*ZVRC                     */
   3     ZRBASEA  PTR(31)   BDY(BYTE)  ,/*ZDSRC                    */
   3     ZRBASEB  PTR(31)   BDY(BYTE)  ,/*ZSHRC                    */
   3     ZRBASEC  PTR(31)   BDY(BYTE)  ,/*ZSDRC                    */
   3     ZRBASED  PTR(31)   BDY(BYTE)  ,/*ZSDXRC                   */
   3     ZRPSAVE  PTR(31)   BDY(BYTE)  ;/*WORKING BASE             */
 /*                                                                 */
 /******************************************************************/
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZCP   BASED                   ,
   3     *        CHAR(LENGTH(ZCPTR))  ,
   3     *        CHAR(LENGTH(ZCPTR))  ,
   3     *        CHAR(LENGTH(ZCPTR))  ;
 /******************************************************************/
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZCPA           BASED          ,
   3     *        CHAR(LENGTH(ZZCP))   ,
    5    ZCPARRAY (*) CHAR(1)          ;
 /******************************************************************/
 /*                                                                 */
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZRC                BASED      ,
   3     *        CHAR(LENGTH(ZXCTL))  ,
   3     *        CHAR(LENGTH(ZVRC))   ,
   3     *        CHAR(LENGTH(ZDSRC))  ,
   3     *        CHAR(LENGTH(ZSHRC))  ,
   3     *        CHAR(LENGTH(ZSDRC)) ,
   3     *   (5)  CHAR(LENGTH(ZSDXRC)) ;
 /*                                                                 */
 /******************************************************************/
 /******************************************************************/
 /*                                                                 */
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZRCA           BASED          ,
    3    *        CHAR(LENGTH(ZZRC))  ,
    5    ZRCARRAY (*) CHAR(1)          ;
 /*                                                                */
 /******************************************************************/
 /******************************************************************/
 /*                                                                */
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZLOC               BASED      ,
   3     *        CHAR(LENGTH(ZTEMP))  ,
   3     *        CHAR(LENGTH(ZZCTLS)) ,
   3     *        CHAR(LENGTH(ZCPS))  ,
   3     *       CHAR(LENGTH(ZFPS))    ,
   3     *        CHAR(LENGTH(ZZCP))   ,
   3     *        CHAR(LENGTH(ZZRC))   ,
   3     *        CHAR(LENGTH(ZRCPTR)) ;
 /******************************************************************/
 DCL                                    /*ADDRESSING OVERLAY       */
  1     ZZLOCA          BASED          ,
   3     *        CHAR(LENGTH(ZZLOC))  ,
    5    ZLOC     (*) CHAR(1)          ;
 /******************************************************************/
 /*                                                                 */
 /******************************************************************/
 /*******************************************************************/
 /*******************************************************************/

 RFY  CATRCD   BASED(ZCPE1);
 RFY  CTVRCTRL BASED(ZCPE2);
 RFY  CTVGOPT  BASED(ZCPE5);
 RFY  CTVSPHDR BASED(ZCPE6);
 RFY  CTVDSGRP BASED(ZCPE6);
 RFY  CTVDESGP BASED(ZCPE6);
 RFY  USERLIST BASED(SALVLIST);

 /*******************************************************************/

 RFY  ZLOCBASE BASED(ADDR(SALAXWA));
 RFY  ZTEMP    BASED(ADDR(ZLOCBASE)+LENGTH(ZLOCBASE));
 RFY  ZZCTLS   BASED(ADDR(ZTEMP)   +LENGTH(ZTEMP));
 RFY ZCPS BASED(ADDR(ZZCTLS)+LENGTH(ZZCTLS));
 RFY ZFPS BASED(ADDR(ZCPS) + LENGTH(ZCPS));
 RFY  ZZCPA    BASED(ADDR(ZFPS)    +LENGTH(ZFPS));
 RFY  ZADDR    BASED(CCAMNADR);
 RFY   ZID     BASED(ADDR(ZADDR)+ LENGTH(ZADDR));
 RFY   ZRCPTR BASED(ADDR(ZID)  +  LENGTH(ZID));
 RFY  ZZRCA    BASED(ADDR(ZRCPTR)  +LENGTH(ZRCPTR));

 RFY   ZXRLC   BASED(ADDR(ZZRCA)  +LENGTH(ZZRCA));
 RFY   ZYRLC   BASED(ADDR(ZXRLC)  +LENGTH(ZXRLC));
 /*******************************************************************/
./ ADD NAME=IGGPARML
         MACRO
         IGGPARML
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73124/021160           */
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGPARML
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  DESCRIPTIVE-NAME = OPEN/CLOSE EXECUTOR PARAMETER LIST
.*
.*01  FUNCTION = DESCRIBES PARAMETER LIST PASSED TO OPEN/CLOSE EXECS
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = NONE
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 REL 2
.*       MACRO CREATED
.*
.*
.**** END OF SPECIFICATIONS ***/
*
* THIS DSECT EXPANDS THE ONE WORD PARAMETER LIST PASSED TO THE
* OPEN/CLOSE EXECUTORS FROM COMMON OPEN/CLOSE.
*
* DESCRIPTIVE LAYOUT
*           +0        +1
*              ________________________________________
*                                                   
*               OPTION    DCB ADDRESS               
*              _____________________________________
*
         SPACE 2
PARML    DSECT
PARDCBAD DS    0A                       SAME AS PARDCBAB BELOW
PAROPT   DS    X                        OPEN/CLOSE OPTIONS
PARENLST EQU   X'80'                    INDICATES END OF LIST
*
* CLOSE OPTIONS
*
PARREWND EQU   X'40'                    REWIND
PARLEAVE EQU   X'30'                    LEAVE
PARFREE  EQU   X'20'                    UNALLOCATE DURING CLOSE
PARRREAD EQU   X'10'                    REREAD
*
* OPEN OPTIONS
*
PAROUTPT EQU   X'0F'                    OUTPUT
PAROUTIN EQU   X'07'                    OUTIN
PARUPDAT EQU   X'04'                    UPDATE
PARINOUT EQU   X'03'                    INOUT
PARRDBCK EQU   X'01'                    READBACK
PARINPUT EQU   X'00'                    INPUT
PARDCBAB DS    AL3                      ADDRESS OF DCB
         MEND
./ ADD NAME=IGGRDX
*%;/*
         MACRO
         IGGRDX
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGRDX
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = CHANGE LEVEL 01
.*
.*01  DESCRIPTIVE-NAME = READX EXCLUSIVE LIST FORMAT
.*
.*01  FUNCTION = FORMATS THE LIST CONTAINING IOBS WAITING FOR EXCLUSIVE
.*               CONTROL OF BLOCKS WHOSE IDS(UCB+CCHHR) ARE IDENTIFIED
.*               IN THE SAME READ EXCLUSIVE LIST ENTRY AND ARE AT THAT
.*               TIME UNDER THE CONTROL OF ANOTHER REQUEST.
.*
.*01  NOTES = NONE
.*
.*02    DEPENDENCIES = NA
.*
.*02    PERFORMANCE = NA
.*
.*02    RESTRICTIONS = NA
.*
.*02    REGISTER-CONVENTIONS = NA
.*
.*02    PATCH-LABEL = NA
.*
.*01  MODULE-TYPE = MACRO
.*
.*02  MACRO-SIZE =  NA
.*
.*02  EXTERNAL-REFERENCES = NA
.*
.*01INNER-MACROS = NONE
.*
.*01SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*
.*             VS2 RELEASE 2
.*
.**** END OF SPECIFICATIONS ***/
* /* MACCOMP Y-2 SC1D7/SJD48                                   Y02072*/
* /* MACSTAT Y-2 73122/021160                                  Y02072*/
*/********************************************************************/
*/*THE FOLLOWING DSECT FORMATS A BDAM READ EXCLUSIVE LIST SEGMENT,   */
*/*WITH NINE 16-BYTE ENTRIES,EACH ENTRY ASSOCIATED WITH A BLOCK UNDER*/
*/*EXCLUSIVE CONTROL.EACH ENTRY CONTAINS AN 8-BYTE BLOCK ID (UCB ADDR*/
*/*+CCHHR) AND THE FIRST AND LAST IOB ADDRESS IN A CHAIN OF IOBS     */
*/*WAITING FOR EXCLUSIVE CONTROL OF THE BLOCK. EACH IOB CONTAINS THE */
*/*ADDR OF THE NEXT WAITING IOB IN FIELD,IOBDQPTR.THE LIST IS MADE UP*/
*/*OF 152-BYTE SEGMENTS(9 ENTRIES/SEG) CHAINED TOGETHER. NEW SEGMENTS*/
*/*ARE GOTTEN DYNAMICALLY WHEN THE PREVIOUS SEGMENT IS FULL. THE ADDR*/
*/*OF THE NEXT SEGMENT IS STORED IN THE SECOND WORD OF THE PREVIOUS  */
*/*SEGMENT.                                                          */
*/********************************************************************/
*%GOTO RDXPLS2;                         /*                     Y02072*/
RDXLIST  DSECT
RDXRSV01 DS    XL4                      UNUSED                   Y02072
RDXMAXCT EQU   X'09'                    NUMBER OF ENTRIES PER SEGMENT
RDXNEXT  DS    A                        POINTER TO NEXT SEGMENT IF ONE
*                                       EXISTS, OTHERWISE ZEROES
RDXENT   EQU   *                        READX ENTRY (SEE BELOW)
RDXLSTLG EQU   152                      LENGTH OF LIST SEGMENT   Y02072
*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
*                FORMAT OF ONE ENTRY IN THE LIST
*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
RDXENTRY DSECT
RDXNQARG DS    XL8                      UCB/CCHHR FOR BLOCK      Y02072
RDXIOBUQ DS    A                        ADDR OF FIRST IOB ON     Y02072
*                                       UNPOSTED QUEUE (OR 0 )   Y02072
RDXUQND  DS    A                        ADDR LAST IOB ON QUEUE   Y02072
RDXENTLN EQU   *-RDXENTRY               LENGTH OF EACH ENTRY     Y02072
         MEND
*%RDXPLS2: ;                            /*                     Y02072*/
*DCL 1 RDXLIST CHAR(152) BDY(WORD) BASED,/* READ EXCLUSIVE LIST DSECT*/
*      2 RDXRSV01 CHAR(4) BDY(WORD),    /* UNUSED                    */
*      2 RDXNEXT PTR(31),               /* ADDRESS OF NEXT SEGMENT   */
*      2 RDXENT CHAR(16);               /* ENTRY IN READX LIST, DES-
*                                          CRIBED BELOW IN RDXENTRY  */
*DCL RDXMAXCT FIXED(8) CONSTANT(9),     /* NUMBER OF ENTRIES/SEGMENT */
*    RDXLSTLG FIXED(8) CONSTANT(152);   /* LENGTH OF 1 READX SEGMENT */
*/*                                                                  */
*/*   THE FOLLOWING FORMATS ONE ENTRY IN THE READ EXCLUSIVE LIST     */
*/*                                                                  */
*DCL 1 RDXENTRY CHAR(16) BDY(WORD) BASED, /* FORMAT OF 1 ENTRY       */
*      2 RDXNQARG CHAR(8),              /* ENQ/DEQ MINOR QNAME-
*                                          UCB + CCHHR OF BLOCK      */
*      2 RDXIOBUQ PTR(31),              /* ADDR OF FIRST IOB ON
*                                          UNPOSTED QUEUE (OR ZERO)  */
*      2 RDXUQND PTR(31);               /* ADDR OF LAST IOB ON QUEUE */
./ ADD NAME=IGGSCAN
         MACRO
&NAME    IGGSCAN  &OPTCD=
         GBLC  &LIB
         GBLB  &CPOPS
.*         RELEASE OS/VS2-02 DELETIONS/CHANGES
*    01/10/73          LEVEL=01
         AIF   (&CPOPS).NOCPOPS
&CPOPS   SETB  1
         IGGCPOPS
.NOCPOPS ANOP
&NAME    DSECT                          SCAN MODE WORK AREA
W1ECBI   DS    F                        ECBI-INPUT CONTROL BLOCK
W1IOBI   DS    0BL44                    LAYOUT OF IOBI
W1IF1    DS    BL1                      FLAGS1 BYTE
W1IF2    DS    BL1                      FLAGS2 BYTE
W1ISENSE DS    BL2                      SENSE INFO. FROM IOS
W1IECBAD DS    A                        ECB POINTER
W1ICSW   DS    0BL8                     CSW FROM IOS
W1KEY    DS    0BL1
W1COMAD  DS    A                        ADDR LAST CCW EXECUTED + 8
W1STATUS DS    BL2                      STATUS
W1COUNT  DS    BL2                      RESIDUAL COUNT
W1ISIOCC DS    0BL1                     SIO CONDITION CODE
W1ICPS   DS    A                        ADDRESS 1ST CP TO BE EXECUTED
W1IWGHT  DS    0BL1                     WEIGHT
W1IDCBAD DS    A                        DCB POINTER
W1ICPRES DS    A                        CP RESTART ADDRESS
W1IBLKCT DS    BL2                      BLK COUNT
W1IERRCT DS    BL2                      ERROR COUNT (RETRIES)
W1IDAD   DS    0BL8                     IOBI DIR.ACCESS DEVICE ADDRESS.
W1IMBBCC DS    BL5                      MBBCC
W1IHHR   DS    BL3                      HHR
W1IEXTEN DS    BL2                      INPUT APPENDAGE CODE
W1CPNUM  DS    BL2                      USED AS SAVE AREA BY SCHED RTN
         DS    0F                       TO RELOC ON FULL WORD
W1ECBO   DS    F                        ECBO-OUTPUT EVENT CONTROL BLOCK
W1IOBO   DS    0BL44                    LAYOUT OF IOBO
W1OF1    DS    BL1                      FLAGS 1 BYTE
W1OF2    DS    BL1                      FLAGS 2 BYTE
W1OSENSE DS    BL2                      SENSE INFO. FROM IOS
W1OECBAD DS    A                        ECB POINTER
W1OCSW   DS    0BL8                     CSW FROM IOS
W1KEYO   DS    0BL1
W1COMADO DS    A                        ADDR LAST CCW EXECUTED&8
W1STATO  DS    BL2                      STATUS BYTES
W1COUNTO DS    BL2                      RESIDUAL COUNT
W1OSIOCC DS    0BL1                     SIO CONDITION CODE
W1OCPS   DS    A                        ADDRESS 1ST CCW TO BE EXECUTED
W1OWGHT  DS    0BL1                     WEIGHT
W1ODCBAD DS    A                        DCB POINTER
W1OCPRES DS    A                        CP RESTART ADDRESS
W1OBLKCT DS    BL2                      BLK CNT
W1OERRCT DS    BL2                      ERROR COUNT (RETRIES)
W1ODAD   DS    0BL8                     IOBO DIR. ACCESS DEVICE ADDRESS
W1OMBBCC DS    BL5                      MBBCC
W1OHHR   DS    BL3                      HHR
W1OEXTEN DS    BL2                      OUTPUT APPENDAGE CODE
W1SAV7   DS    BL2                      USED AS SAVE AREA BY SCHED RTN
W1OSBIT1 DS    BL1                      OVERALL STATUS BYTE 1
W1OSBIT2 DS    BL1                      OVERALL STATUS BYTE 2
W1OSBIT3 DS    BL1                      OVERALL STATUS BYTE 3
W1ICNOT  DS    BL1                      BUFNO/2(USED TO SCHEDULE IP-OP)
W1KEYBLK DS    BL4                      USED BY SETL < FOR ADDR WITHIN
*                                       BLOCK OF THE REQUESTED RECORD
W1LPDR   DS    0BL8                     LAST PRIME DATA RCD READ.
W1LMBBCC DS    BL5                      LPDR MBBCC
W1LHH    DS    BL2                      LPDR HH
W1LR     DS    BL1                      LPDR R
W1CBF    DS    A                        CURRENT BUFFER ADDRESS
W1EOB    DS    A                        END OF BUFFER ADDRESS
W1COUNTR DS    BL2                      CTR OF RETRIES IN WRITE CHECK
PRIMEIND DS    BL1                      SWITCH FOR TESTING SAME DEVICE
FIXIND   DS    BL1                      TEMPORARY STORAGE
W1FCPS   DS    A                        1ST CP SCHEDULED (WRITE)
W1QTABLE DS    0BL60                    QTABLE
W1FR1ST  DS    A                        POINTER TO 1ST CP ON FREE Q
W1FRLAST DS    A                        POINTER TO LAST CP ON FREE Q
         DS    BL2                      (MUST BE ZERO)
W1FREEC  DS    BL2                      NO. BUFFERS ON FREE Q
W1RD1ST  DS    A                        POINTER TO 1ST CP ON READ Q
W1RDLAST DS    A                        POINTER TO LAST CP ON READ Q
W1READR  DS    BL2                      RESIDUE BUFS ON READ Q -UNUSED
W1READC  DS    BL2                      NO. OF BUFS ON READ Q
W1US1ST  DS    A                        POINTER OT 1ST CP ON USER Q
W1USLAST DS    A                        POINTER TO LAST CP ON USER Q
         DS    BL2                      (MUST BE ZERO)
W1USERC  DS    BL2                      NO. OF BUFS ON USER Q
W1PX1ST  DS    A                        POINTER TO 1ST CP ON PUTX Q
W1PXLAST DS    A                        POINTER TO LAST CP ON PUTX Q
         DS    BL2                      (MUST BE ZERO)
W1PUTXC  DS    BL2                      NO. OF BUFFERS ON PUTX QUEUE
W1WR1ST  DS    A                        POINTER TO 1ST CP ON WRITE Q
W1WRLAST DS    A                        POINTER TO LAST CP ON WRITE Q
         DS    BL2                      (MUST BE ZERO)
W1WRITEC DS    BL2                      NO. OF BUFFERS ON WRITE QUEUE
W1WAREA  DS    0BL36                    AREA FOR TRACK INDEX ENTRIES
W1WCOUNT DS    BL8                      COUNT OF CURRENT INDEX ENTRY
W1WCNXDM DS    BL8                      COUNT OF NEXT NORMAL OR DUMMY
W1WOVFL  DS    BL10                     DATA OF CURRENT OVERFLOW ENTRY
W1WDNXDM DS    BL10                     DATA OF NEXT NORMAL OR DUMMY
W1WPLEN  DS    BL2                      BYTE LENGTH OF WORKAREA
W1CURLEN DS    BL2                      LENGTH OF CURRENT LOGICAL REC
W1TEMPSA DS    BL4                      TEMPORARY STORAGE
W1REGSV2 DS    BL4                      AREA TO SAVE CONTENTS OF A REG
W1REGSAV DS    BL4                      AREA TO SAVE CONTENTS OF A REG
W1REGSV3 DS    BL4                      TEMPORARY STORAGE
W1CP23PT DS    A                        ADDRESS OF CP 23
W1CP26PT DS    A                        ADDRESS OF CP 26
W1CP25PT DS    A                        ADDRESS OF CP 25
         DS    0D
W1CP24   DS    0BL72                    CHAN PROG 24 READ TRACK INDEXES
         IGGCP24
         DS    0D                       ROUND TO DOUBLE WORD BDY
W1WDCXDM DS    CL10                     VLR DATA FOR CURR NORMAL IX
W1ISECT  DS    1C                       CURRENT INPUT SECTOR VALUE
W1OSECT  DS    1C                       CURRENT OUTPUT SECTOR VALUE
W1DCBFA  DS    1F                       DCB FIELD AREA PTR
         DS    0D                       ROUND TO NEXT DBL WD.
W1VLRLN  EQU   *-&NAME                  LENGTH OF BASIC SECTION.
*
W1ICPEXT CCW   SETSECT,0,CC,1           RPS CP EXT. FOR INPUT
W1ICPTIC CCW   TIC,0,0,0                SET SECTOR AND TIC
*
W1OCPEXT CCW   SETSECT,0,CC,1           RPS CP EXT. FOR OUTPUT
W1OCPTIC CCW   TIC,0,0,0                SET SECTOR AND TIC
*
W1RDCNT  CCW   RDCNT,0,CC+SKIP,0        POSITION TO NEXT RECORD
W1RDSECT CCW   RDSECT,0,0,0             GET SECTOR FOR NEXT GET
*
W1CN5SAV DS    A                        SAVE AREA TO RESTORE TIC
W1RPSSA  DS    4F                       WORK AREA (SIO APPENDAGES)
W1TOTAL  DS    H                        RUNNING TRACK BALANCE
W1RECLEN DS    H                        MINIMUM LENGTH PRIME RECORDS
W1OVLEN  DS    H                        MINIMUM LENGTH OVERFLOW RECORDS
W1FSTSH  DS    H                        RUNNING BALANCE TO FIRST SHARED
*   LIMITS FOR OVERFLOW SECTOR GUESSES VARIABLE
W1RPSC1  DS    FL1                      LOWER LIMIT CYLINDER OVERFLOW
W1RPSC2  DS    FL1                      UPPER LIMIT CYLINDER OVERFLOW
W1RPSI1  DS    FL1                      LOWER LIMIT IND OVERFLOW
W1RPSI2  DS    FL1                      UPPER LIMIT IND OVERFLOW
*
W1RPSLN  EQU   *-&NAME                  LENGTH INCLUDING RPS FIELDS.
         MEND
./ ADD NAME=IGGSCW
         MACRO
         IGGSCW
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73124/021160           */
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGSCW
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  DESCRIPTIVE-NAME = OPEN/CLOSE WORKAREA LABELS.
.*
.*01  FUNCTION = PROVIDE DESCRIPTIVE LABELS FOR FIELDS IN THE OPEN
.*               AND CLOSE WORKAREAS.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING DSECT
.*
.*02    PARAMETER-RECEIVED = NONE
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 REL 2
.*       MACRO CREATED
.*
.*
.**** END OF SPECIFICATIONS ***/
*
* THE FOLLOWING LABELS ARE USED BY THE SAM/PAM ACCESS METHOD OPEN/CLOSE
* EXECUTORS WHEN USING FIELDS IN THE O/C WORKAREAS FOR PURPOSES
* OTHER THAN THOSE INTENDED BY COMMON O/C.
* THE COMMENTS FOR EACH LABEL INDICATE WHEATHER THE LABEL IS
* USED BY THE OPEN EXECS (-O) OR THE CLOSE EXECS (-C).
*
FORCORE  DSECT
         ORG   DXCCW1
DXCCWOP  DS    X                        CCW OP CODE -O
DXCCWADR DS    AL3                      BUFFER ADDRESS -O
DXCCWFLG DS    AL2                      CCW FLAGS -O
DXCCWBYT DS    AL2                      CCW BYTE COUNT -O
         ORG   DXCCW1
SCWGETMA DS    0F                       REG SAVE AREA FOR ACCESS
*                                         METHOD ROUTINES -C
SCWSAVCD DS    X                        PROBLEM DETERMINATION CODE -C
SCWGETMB DS    XL3                      SAME AS SCWGETMA ABOVE -C
         ORG   DXCCW1
DXBLDL   DS    0F                       BLDL PARM LIST -O
DXUCSUCB DS    X                        UCB UCS OPTIONS -O
         DS    3X
DXBLDLIM DS    F                        IMAGE NAME FOR BLDL -O
         ORG   DXCCW2
DXIMGNAM DS    F                        IMAGE NAME -O
         ORG   DXCCW2
SCWRALL  DS    0F                       SAVE AREA FOR ALL REGS -C
         ORG   DXCCW6
DXSAVUCS DS    D                        AREA TO SAVE UCS NAME -O
         ORG   DXCCW8
DXIMGDCB DS    F                        ADDRESS OF IMGLIB DCB -O
         ORG   DXCCW9
DXSAVFCB DS    D                        AREA TO SAVE FCB NAME -O
         ORG   DXCCW10
DXFCBUCS DS    0XL16                    UCS AND FCB PARM FIELDS -O
DXFCBP   DS    0XL8                     TO CLEAR FCB PARM FIELD -O
DXFCBSW1 DS    X                        SWITCH FOR FCB PARMS -O
DXABEND  DS    0X                       INDICATES ABEND TO BE ISSUED -O
DXFLAG1  DS    X                        FCB FLAG BYTE -O
DXSTAGE2 DS    X                        FOR STAGE 2 OPEN EXEC DETER -O
DXFCBOPT DS    X                        JFCB FCB OPTIONS -O
DXFCBID  DS    F                        FCB IMAGE ID -O
         ORG   DXCCW11
DXUCSP   DS    0XL8                     PARM LIST FOR UCS -O
DXUCSSW1 DS    0X                       SWITCH FOR UCS PARMS -O
DXABRETC DS    X                        INTERNAL RET CD FOR PROB DET -O
DXEROPT  DS    X                        TO SAVE DCBEROPT -O
DXNABEND DS    X                        INDIC ABEND IN CONTROL -O
DXUCSOPT DS    X                        JFCB UCS OPTIONS -O
DXUCSID  DS    F                        UCS IMAGE ID -O
         ORG   DXCCW12
SCWXCTLP DS    D                        SUP PARM LIST FOR XCTL -O/C
         MEND
./ ADD NAME=IGGSPD
*  %GOTO SPDL1;
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGSPD
.*
.*01  DESCRIPTIVE-NAME = SAM/PAM/DAM GTRACE BUFFER
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 0
.*
.*01  FUNCTION = DEFINES THE STRUCTURE OF THE GTRACE BUFFER
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = N/A FOR A MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = NONE
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 RELEASE 2 DELETIONS
.*
.**** END OF SPECIFICATIONS ***/
* %SPDL1: ;
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73141/021160                                        */
 /********************************************************************/
 /*                                                                  */
 /*      THIS MACRO DEFINES THE STRUCTURE OF A GTRACE BUFFER.        */
 /*                                                                  */
 /*      VS2 RELEASE 2, 5/21/73, LEVEL=0                             */
 /*                                                                  */
 /*      METHOD OF ACCESS - IF SPDBASE IS NOT OTHERWISE DECLARED IT  */
 /*                         WILL DEFAULT TO %SPDBASE = 'BASED'.      */
 /*                                                                  */
 /********************************************************************/
         %IF SPDBASE = ''               /* WAS SPDBASE DECLARED      */
           %THEN %SPDBASE = 'BASED';    /* USE DEFAULT VALUE IF NOT  */
 DCL 1 SPDBFR SPDBASE BDY(BYTE),
       2 SPDHDR,                        /* BUFFER HEADER             */
         3 SPDDDNAM CHAR(8),            /* DDNAME FROM TIOT          */
         3 SPDABCCD FIXED(8),           /* ABEND CONDITION CODE      */
       2 SPDTRACE CHAR(247);            /* TRACE RECORD AREA         */

 /********************************************************************/
 /*    THE FOLLOWING DEFINES THE STRUCTURE OF THE TRACE RECORD AREA  */
 /********************************************************************/
 DCL 1 SPDTRRCD BASED BDY(BYTE),
       2 SPDRCDHD,                      /* RECORD HEADER             */
         3 SPDRCDLN FIXED(8),           /* LENGTH OF THIS TRACE RCD  */
         3 SPDBLKID FIXED(8),           /* ID OF TRACED BLOCK        */
           4 SPDPTRSW BIT(1),           /* ADDR REQD WITH TRACE RCD  */
       2 SPDDATA1,                      /* AREA TO BE TRACED         */
         3 SPDBLKAD PTR(31) BDY(BYTE),  /* ADDR OF BLOCK (NOT PRESENT
                                           FOR ALL TRACE RECORDS)    */
         3 SPDDATA2 CHAR(*);            /* BLOCK TO BE TRACED        */

 /********************************************************************/
 /*   THE FOLLOWING DEFINES THE STRUCTURE OF THE TRACE RCD DATA AREA */
 /********************************************************************/
 DCL SPDRDATA CHAR(*) BASED BDY(BYTE);

 /********************************************************************/
 /* THE FOLLLOWING CONSTANTS IDENTIFY THE VARIOUS AREAS WHICH ARE    */
 /* TRACED. CONSTANTS 1 THROUGH 127 IDENTIFY AREAS WHOSE ADDRESSES   */
 /* ARE NOT TO BE TRACED.  CONSTANTS 129 THROUGH 255 IDENTIFY AREAS  */
 /* WHOSE ADDRESSES ARE TO BE TRACED.                                */
 /********************************************************************/
 DCL SPDONEXT FIXED(8) CONSTANT(1);     /* CURRENT DEB EXTENT ID     */
 DCL SPDALLXT FIXED(8) CONSTANT(2);     /* ALL DEB EXTENTS ID        */
 DCL SPDIOSEK FIXED(8) CONSTANT(3);     /* IOB OR ICB SEEK FIELD ID  */
 DCL SPDMAXBK FIXED(8) CONSTANT(4);     /* MAX BLOCK SIZE FIELD ID   */
 DCL SPDBCB   FIXED(8) CONSTANT(129);   /* BCB ID                    */
 DCL SPDDCB   FIXED(8) CONSTANT(130);   /* DCB ID                    */
 DCL SPDDECB  FIXED(8) CONSTANT(131);   /* DECB ID                   */
 DCL SPDECB   FIXED(8) CONSTANT(132);   /* ECB ID                    */
 DCL SPDIOB   FIXED(8) CONSTANT(133);   /* NORMAL SCHEDULING IOB ID  */
 DCL SPDCSIOB FIXED(8) CONSTANT(134);   /* CHAINED SCHEDULING IOB ID */
 DCL SPDICB   FIXED(8) CONSTANT(135);   /* CHAINED SCHEDULING ICB ID */
 DCL SPDBLOCK FIXED(8) CONSTANT(136);   /* USERS BDW AND BLOCK ID    */
 DCL SPDRECRD FIXED(8) CONSTANT(137);   /* USERS RDW AND RECORD ID   */
 DCL SPDEXLST FIXED(8) CONSTANT(138);   /* DCB EXIT LIST ENTRY ID    */
 DCL SPDSETPR FIXED(8) CONSTANT(139);   /* SETPRINT PARAMETER LIST   */
 DCL SPDREADX FIXED(8) CONSTANT(140);   /* READ EXCLUSIVE LIST ENTRY */
 DCL SPDFCBIM FIXED(8) CONSTANT(141);   /* 1ST 6 BYTES OF FCB IMAGE  */
 SPDFID: GEN(EQU   X'FE');              /* ID OF SAM/PAM/DAM GTRACE
                                           FORMAT ROUTINE            */
./ ADD NAME=IGGSPW
*/*********************************************************************
**                                                                   **
**    MACRO-NAME = IGGSPW                                            **
**                                                                   **
**    COPYRIGHT = NONE                                               **
**                                                                   **
**    STATUS = VS2 RELEASE 3.7 LEVEL 2                               **
**                                                                   **
**    DESCRIPTIVE-NAME = SET PRINT WORKAREA                          **
**                                                                   **
**    FUNCTION = USED BY SET PRINT MODULES TO MAP                    **
**               THE SET PRINT WORKAREA                              **
**                                                                   **
**    MODULE-TYPE = MACRO                                            **
**                                                                   **
**      MACRO-SIZE = N/A FOR MAPPING MACRO.                          **
**                                                                   **
**      PARAMETER-RECEIVED = IF THIS MACRO IS TO BE USED FOR THE     **
**                           3800 DEVICE, MAKE THE FOLLOWING         **
**                           PLS MACRO STATEMENT BEFORE CALLING      **
**                           THIS MACRO:                             **
**                                %SPW3800 = 'YES'                   **
**                                                                   **
**    TABLES = NONE                                                  **
**                                                                   **
**    INNER-MACROS = NONE                                            **
**                                                                   **
**    SYSTEM-MACROS = IF SPW3800 ='YES', THE FOLLOWING SYSTEM        **
**                    MACROS WILL BE CALLED:                         **
**                                                                   **
**                           IHADCBDF                                **
**                           IHADCB                                  **
**                           IEZDEB                                  **
**                           IEZIOB                                  **
**                           IEFUCBOB                                **
**                           IHASPP                                  **
**                                                                   **
**    CHANGE-ACTIVITY = NONE                                         **
**                                                                   **
**********************************************************************/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*%GOTO SPW001;                          /* BYPASS ASSY MACRO @Z40MSAP*/
*                                       /* STATEMENTS        @Z40MSAP*/
         MACRO
         IGGSPW
***********************************************************************
*                                                                     *
*     MACRO-NAME = IGGSPW                                             *
*                                                                     *
*     COPYRIGHT = NONE                                                *
*                                                                     *
*     STATUS = VS2 RELEASE 3.7 LEVEL 2                                *
*                                                                     *
*     DESCRIPTIVE-NAME = SET PRINT WORKAREA                           *
*                                                                     *
*     FUNCTION = USED BY SET PRINT MODULES TO MAP                     *
*                THE SET PRINT WORKAREA                               *
*                                                                     *
*     MODULE-TYPE = MACRO                                             *
*                                                                     *
*       MACRO-SIZE = N/A FOR MAPPING MACRO.                           *
*                                                                     *
*       PARAMETER-RECEIVED = NONE                                     *
*                                                                     *
*     TABLES = NONE                                                   *
*                                                                     *
*     INNER-MACROS = NONE                                             *
*                                                                     *
*     SYSTEM-MACROS = NONE                                            *
*                                                                     *
*     CHANGE-ACTIVITY = NONE                                          *
*                                                                     *
***********************************************************************
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGSPW
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 3.7 LEVEL 2
.*
.*01  DESCRIPTIVE-NAME = SETPRINT WORKAREA
.*
.*01  FUNCTION = USED BY SETPRINT MODULES TO MAP THE WORKAREA,
.*               SVRB EXTENDED SAVE AREA, AND THE BLDL PARAMETER LIST.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = NONE
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = ESTAE (LIST FORM)
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 REL 2
.*       MACRO CREATED
.*                                                               YM5703
.*    VS2 REL 4                                                @Z40MSAP
.*       MACRO MODIFIED FOR 3800 PRINTER SUPPORT               @Z40MSAP
.*
.**** END OF SPECIFICATIONS ***/
*%SPW001:;                              /*                   @Z40MSAP*/
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73124/021160           */
*%GOTO SPW002;                                             /*@Z40MSAP*/
*
* THE FOLLOWING THREE DSECTS (SPW, SPW5, SPRBXSV) ARE USED BY
* THE SETPRT ROUTINES.
*
         EJECT                                                 @Z40MSAP
***********************************************************************
*    THIS IS THE DSECT FOR THAT PORTION OF THE SET PRINT WORK         *
*    AREA GOTTEN IN USER KEY.                                         *
***********************************************************************
         SPACE 2                                               @Z40MSAP
SPW      DSECT
         SPACE 1                                               @Z40MSAP
***********************************************************************
* BASIC SECTION                                                       *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWOPTSA DS    B                        SAVE AREA FOR OPTCD BYTE Y02072
*
SPWPARM1 DS    B                        SAVED REPLY FLAGS        Y02072
*                                       (SEE BELOW FOR BITS)
SPWFLG1  DS    B                        REPLY FLAGS              Y02072
*
SPWVRFCB EQU   X'80'                    VERIFY FCB
SPWALIGN EQU   X'01'                    ALIGN FORMS
*
SPWFLG2  DS    B                        ENTRY ID FOR 8101, 8102  Y02072
*
SPWFLG3  DS    B                        TO SAVE LINE/INCH INDIC  Y02072
*                                                              @Z40MSAP
SPW120RQ EQU   X'10'                    IEC120 MESSAGE REQUIRED
*
SPWFLG4  DS    0B                       FLAG BYTE                Y02072
SPWFLG5  DS    B                        FLAG BYTE                Y02072
SPWFCBDE EQU   X'80'                    FCB IMAGE LOADED AND     Y02072
*                                         MUST BE DELETED        Y02072
SPWECPAM EQU   X'40'                    INDICATES EXCP DCB WITH  YM3920
*                                         ACC METH SECT PRESENT  YM3920
*        EQU   X'20'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'10'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'08'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'04'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'02'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'01'                    UNUSED FLAG BIT        @Z40MSAP
SPWFLG8  DS    B                        FLAG BYTE                Y02072
*              THE FOLLOWING BITS USED BY IGG08104
SPWRETRY EQU   X'80'                    RETRY IN PROGRESS        Y02072
SPWVREND EQU   X'40'                    LAST VERIF LINE PRINTING Y02072
SPWNOMOV EQU   X'20'                    DO NOT MOVE RQSTD MSG    Y02072
SPWFCBOP EQU   X'10'                    FILL FCBOP AS WELL AS    Y02072
*                                       FCBID INTO UCB           Y02072
*        EQU   X'08'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'04'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'02'                    UNUSED FLAG BIT        @Z40MSAP
*        EQU   X'01'                    UNUSED FLAG BIT        @Z40MSAP
         DS    XL1                      UNUSED BYTE FOR ALIGN  @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
* WTOR PREFIX SECTION (MUST IMMEDIATELY PRECEED MESSAGE SECTION)      *
*        THIS PREFIX IS PART OF THE LIST FORM OF WTOR                 *
*        WHEN A WTO MESSAGE IS PLACED IN SPWMSGTX,                    *
*        THE COMBINATION MAKES A VALID WTOR PARAMETER LIST            *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWRPLYA DS    0A                       ADDRESS OF REPLY AREA
SPWMSGLB DS    FL1                      LENGTH OF REPLY AREA
SPWRPLYB DS    AL3                      ADDRESS OF REPLY AREA
SPWECBPA DS    A                        ADDRESS OF REPLY ECB
         SPACE 1                                               @Z40MSAP
***********************************************************************
* MESSAGE SECTION                                                     *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWMSGTX DS    CL64                     MESSAGE AND PRINT LINE   Y02072
         SPACE 1                                               @Z40MSAP
***********************************************************************
* WTOR REPLY AREA AND ASSOCIATED FIELDS                               *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWREPLY DS    0CL16                    OPERATOR REPLY AREA
         DS    X
SPWFCBOR DS    0CL15                    OFFSET OF 1 USED WHEN
*                                         INCREMENTING THROUGH OPER REP
SPWREPC1 DS    CL15                     OFFSET OF 1 USED TO CLEAR FIELD
*
SPWRPECB DS    F                        REPLY ECB FOR WTOR
SPWREPID DS    F                        UCS/FCB ID REPLIED BY OPERATOR
SPWFCBIM DS    0CL8                     FCBXXXXX - NAME OF FCB IMAGE
SPWUCSIM DS    0CL8                     UCSXXXXX - NAME OF UCS IMAGE
         DS    F                        FIRST HALF OF NAME
SPWUCS2H DS    0F                       SECOND HALF OF UCS NAME
SPWFCB2H DS    F                        SECOND HALF OF FCB NAME
         EJECT                                                 @Z40MSAP
***********************************************************************
* IOB FOR EXCP USERS
***********************************************************************
         SPACE 1                                               @Z40MSAP
         DS    0F                       FOR ALIGNMENT
SPWIOB   DS    0CL40                    TO CLEAR IOB
SPWLINK  DS    F                        LINK ADDRESS
SPWECB   DS    F                        ECB
SPWIOS   DS    F                        BEGINNING OF IOS IOB
SPWECBPT DS    F                        POINTER TO ECB
SPWCSW   DS    2F                       CHAN STATUS WORD
SPWCPPTR DS    F                        CHANNEL PROGRAM POINTER
SPWDCB   DS    F                        ADDR OF DCB
         DS    2F                       NOT USED
         SPACE 1                                               @Z40MSAP
***********************************************************************
* AREA TO SAVE FIELDS OF USERS IOB                             @Z40MSAP
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWFLGSV DS    F                        IOB FIRST WORD
SPWSTRSV DS    F                        IOBSTART
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        THE FOLLOWING STRUCTURE MAPS THE CHANNEL PROGRAM             *
*        SECTION OF THE SET PRINT WORKAREA.                           *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPWCCW1  DS    0D                       FIRST CCW              @Z40MSAP
SPWADD1A DS    0A                       BUFFER ADDRESS         @Z40MSAP
SPWOPCD1 DS    XL1                      OP CODE                @Z40MSAP
SPWADD1B DS    AL3                      BUFFER ADDRESS         @Z40MSAP
SPWCCWF1 DS    XL1                      CCW FLAGS              @Z40MSAP
SPWCC1   EQU   X'40'                    COMMAND CHAINING       @Z40MSAP
SPWSILI1 EQU   X'20'                    SILI BIT               @Z40MSAP
         DS    XL1                      FILLER                 @Z40MSAP
SPWBYTE1 DS    XL2                      BYTE COUNT             @Z40MSAP
SPWCCW2  DS    0D                       SECOND CCW             @Z40MSAP
SPWADD2A DS    0A                       BUFFER ADDRESS         @Z40MSAP
SPWOPCD2 DS    XL1                      OP CODE                @Z40MSAP
SPWADD2B DS    AL3                      BUFFER ADDRESS         @Z40MSAP
SPWCCWF2 DS    XL1                      CCW FLAGS              @Z40MSAP
SPWCC2   EQU   X'40'                    COMMAND CHAINING       @Z40MSAP
SPWSILI2 EQU   X'20'                    SILI BIT               @Z40MSAP
         DS    XL1                      FILLER                 @Z40MSAP
SPWBYTE2 DS    XL2                      BYTE COUNT             @Z40MSAP
SPWCCW3  DS    0D                       THIRD CCW              @Z40MSAP
SPWADD3A DS    0A                       BUFFER ADDRESS         @Z40MSAP
SPWOPCD3 DS    XL1                      OP CODE                @Z40MSAP
SPWADD3B DS    AL3                      BUFFER ADDRESS         @Z40MSAP
SPWCCWF3 DS    XL1                      CCW FLAGS              @Z40MSAP
SPWCC3   EQU   X'40'                    COMMAND CHAINING       @Z40MSAP
SPWSILI3 EQU   X'20'                    SILI BIT               @Z40MSAP
         DS    XL1                      FILLER                 @Z40MSAP
SPWBYTE3 DS    XL2                      BYTE COUNT             @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
* WORKAREA FOR UNPACKING LINE NUMBERS BEFORE VERIFYING IMAGES.
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWUNPKA DS    0F                       ADDR TO UNPACK INTO
         DS    C                        FILLER
SPWWKAR  DS    CL2                      FOR FINAL RESULT
SPWZONE  DS    X                        ZONE FOR LOW ORDER DIGIT
         DS    H                        FILLER
SPWLNENO DS    H                        FIELD STORED INTO BY CVD INST
         SPACE 2                                               @Z40MSAP
SPWFFSB  DS    F                        FIRST FOUR SENSE
*                                       BYTES FOR THE 3800
*                                       PRINTER
         SPACE 1                                               @Z40MSAP
***********************************************************************
* END OF USER KEY SET PRINT WORK AREA DSECT                    @Z40MSAP
***********************************************************************
         SPACE 1                                               @Z40MSAP
         ORG
SPWLNGTH EQU   *-SPW                    LENGTH OF WORK AREA
         EJECT
***********************************************************************
*                                                                     *
*    THIS IS THE DSECT FOR THAT PORTION OF THE SET PRINT WORK         *
*    AREA GOTTEN IN KEY 5.                                            *
*                                                                     *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPW5     DSECT                                                 @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
*
*  THE FOLLOWING IS THE BLDL PARAMETER LIST. IT IS GOTTEN FROM KEY 5
*  CORE AS IT MUST BE IN THE SAME KEY AS THE SYS1.IMAGELIB DCB.
*
***********************************************************************
         SPACE 2                                               @Z40MSAP
SPWBLDLA DS    0F                       BLDL LIST AREA         @Z40MSAP
SPWBLDLC DS    0F                       COUNT & LENGTH FIELDS FOR BLDL
SPWBLDCT DS    XL2                      COUNT FIELD            @Z40MSAP
SPWBLDLL DS    XL2                      LENGTH FIELD           @Z40MSAP
*              THE ABOVE FIELD SHOULD BE FILLED WITH
*              AL2(1,SPWBLDLN)          ONE ENTRY, LENGTH AVAILABLE
SPWBLNAM DS    0CL8                     IMAGE NAME FIELD       @Z40MSAP
SPWUCSMB DS    0CL4                     UCS IMAGE MEMBER NAME  'UCS1'
SPWFCBMB DS    CL4                      FCB IMAGE MEMBER NAME
         ORG   *-1                      REDEFINE FOURTH BYTE OF NAME
SPWFCB2  DS    0C
SPWUCS2  DS    C                        UCS IMAGE MEMBER NAME  'UCS2'
SPWBLFCB DS    0CL4                     FCBID FOR BLDL
SPWBLUCS DS    CL4                      USCID FOR BLDL
         DS    CL52                     FILLED BY BLDL FOR LOAD  Y02072
SPWBLDLN EQU   *-SPWUCSMB               LENGTH OF BLDL ENTRY     Y02072
SPWWKADR DS    A                        ADDRESS OF SETPRT WORKAREA
*                                         SAVED FOR ESTAE
         EJECT                                                 @Z40MSAP
***********************************************************************
* WTOR PREFIX SECTION (MUST IMMEDIATELY PRECEED MESSAGE SECTION)      *
*        THIS PREFIX IS PART OF THE LIST FORM OF WTOR                 *
*        WHEN A WTO MESSAGE IS PLACED IN SPWMSGTX,                    *
*        THE COMBINATION MAKES A VALID WTOR PARAMETER LIST            *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWMSGHS DS    0F                       HEADER SECTION FOR     @Z40MSAP
*                                       MESSAGE AREA           @Z40MSAP
SPWARPLA DS    0A                       ADDRESS OF THE         @Z40MSAP
*                                       REPLY AREA             @Z40MSAP
SPWLRPLA DS    XL1                      LENGTH OF THE REPLY    @Z40MSAP
*                                       AREA                   @Z40MSAP
SPWARPLB DS    AL3                      ADDRESS OF THE REPLY   @Z40MSAP
*                                       AREA                   @Z40MSAP
SPWARECB DS    A                        ADDRESS OF THE REPLY   @Z40MSAP
*                                       ECB                    @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
* MESSAGE SECTION                                                     *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWMSGA  DS    0CL52                    SPW MESSAGE AREA       @Z40MSAP
SPWMSGLN DS    F                        MESSAGE LENGTH         @Z40MSAP
SPWTXMSG DS    CL80                     MESSAGE TEXT           @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
* WTOR REPLY AREA AND ASSOCIATED FIELDS                               *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWORPLY DS    CL16                     OPERATOR REPLY AREA    @Z40MSAP
*                                       (16 BYTES)             @Z40MSAP
SPWMRECB DS    F                        REPLY ECB FOR WTOR     @Z40MSAP
SPWIMAGE DS    0CL8                     IMAGE NAME REQUESTED   @Z40MSAP
SPWFCBNM DS    0CL8                     NAME FCB IMAGE         @Z40MSAP
SPWFCBPF DS    CL4                      FIRST 1/2 OF NAME      @Z40MSAP
SPWFCBID DS    CL4                      2ND HALF FCB NAME      @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        THIS SECTION OF THE SET PRINT MAPPING MACRO HAS BEEN         *
*        ADDED FOR THE 3800 DEVICE.                                   *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPWEXTON DS    0F                       3800 AREA IN SET PRINT @Z40MSAP
*                                       WORKAREA               @Z40MSAP
SPWSPRB  DS    A                        POINTER TO SVRB        @Z40MSAP
*                                       EXTENDED SAVE AREA     @Z40MSAP
SPWTWAD1 DS    A                        TRANSLATE 1 WORKAREA   @Z40MSAP
*                                       ADDRESS                @Z40MSAP
SPWTWL1  DS    0F                       TRANSLATE 1 WORKAREA   @Z40MSAP
*                                       LENGTH AND SUBPOOL #   @Z40MSAP
SPWTWSP1 DS    XL1                      TRANSLATE 1 WORKAREA   @Z40MSAP
*                                       SUBPOOL NUMBER         @Z40MSAP
SPWTWLN1 DS    XL3                      TRANSLATE 1 WORKAREA   @Z40MSAP
*                                       LENGTH                 @Z40MSAP
SPWFLAG1 DS    XL1                      FIRST BYTE OF FLAGS    @Z40MSAP
SPWT3800 EQU   X'80'                    THIS SET PRINT REQUEST @Z40MSAP
*                                       IS FOR A 3800          @Z40MSAP
*                                       TYPE OF DEVICE         @Z40MSAP
SPWFCBUA EQU   X'40'                    FCB IMAGE IN USER AREA @Z40MSAP
SPWENDXL EQU   X'20'                    END OF DCB EXIT LIST   @Z40MSAP
SPWEXFLD EQU   X'10'                    EXCP FOR FCB LOAD      @Z40MSAP
SPWEXWPR EQU   X'08'                    EXCP FOR WRITING ON    @Z40MSAP
*                                       THE PRINTER            @Z40MSAP
SPWENDM  EQU   X'04'                    END SECTION IN         @Z40MSAP
*                                       MESSAGE AREA           @Z40MSAP
SPWEFCBP EQU   X'02'                    END OF FCB IMAGE       @Z40MSAP
*                                       PRINT FUNCTION         @Z40MSAP
SPWM128L EQU   X'01'                    MESSAGE IEC128D IN     @Z40MSAP
*                                       MESSAGE AREA           @Z40MSAP
SPWFLAG2 DS    XL1                      SECOND BYTE OF FLAGS   @Z40MSAP
SPWRVMSG EQU   X'80'                    REISSUE VERIFY         @Z40MSAP
*                                       MESSAGE TO 3800        @Z40MSAP
SPWVMHD  EQU   X'40'                    HEADER SECTION IN      @Z40MSAP
*                                       MESSAGE AREA           @Z40MSAP
SPWVMCH  EQU   X'20'                    'CHANNEL' IN           @Z40MSAP
*                                       MESSAGE AREA           @Z40MSAP
SPWBLIOB EQU   X'10'                    BUILD DUMMY IOB        @Z40MSAP
SPWM163L EQU   X'08'                    MESSAGE IEC163A        @Z40MSAP
*                                       IS BEING ISSUED        @Z40MSAP
SPWM164L EQU   X'04'                    MESSAGE IEC164A        @Z40MSAP
*                                       IS BEING ISSUED        @Z40MSAP
SPWNSTOR EQU   X'02'                    DETERMINES IF SPWN     @Z40MSAP
*                                       HAS BEEN STORED        @Z40MSAP
SPWNESOI EQU   X'01'                    NOT ENOUGH SPACE TO    @Z40MSAP
*                                       OPEN IMAGELIB          @Z40MSAP
SPWFLAG3 DS    XL1                      THIRD BYTE OF FLAGS    @Z40MSAP
SPWPLCPY EQU   X'80'                    THE SET PRINT PARM     @Z40MSAP
*                                       LIST HAS BEEN COPIED   @Z40MSAP
*                                       FROM THE CALLERS       @Z40MSAP
*                                       AREA TO KEY 5 SET      @Z40MSAP
*                                       PRINT WORK AREA        @Z40MSAP
SPWIMGLD EQU   X'40'                    IMAGE LOADED INTO CORE @Z40MSAP
*        EQU   X'20'                    UNUSED FLAG/SWITCH     @Z40MSAP
*        EQU   X'10'                    UNUSED FLAG/SWITCH     @Z40MSAP
*        EQU   X'08'                    UNUSED FLAG/SWITCH     @Z40MSAP
*        EQU   X'04'                    UNUSED FLAG/SWITCH     @Z40MSAP
*        EQU   X'02'                    UNUSED FLAG/SWITCH     @Z40MSAP
*        EQU   X'01'                    UNUSED FLAG/SWITCH     @Z40MSAP
SPWREASN DS    XL1                      REASON CODE            @Z40MSAP
SPWRETCD DS    0F                       RETURN CODE            @Z40MSAP
SPWRET0  DS    XL1                      BYTE 0 OF RETURN CODE  @Z40MSAP
SPWRET1  DS    XL1                      BYTE 1 OF RETURN CODE  @Z40MSAP
SPWRET2  DS    XL1                      BYTE 2 OF RETURN CODE  @Z40MSAP
SPWRET3  DS    XL1                      BYTE 3 OF RETURN CODE  @Z40MSAP
SPWIOBST DS    A                        POINTER IOB STANDARD   @Z40MSAP
*                                       SECTION                @Z40MSAP
SPWLNCNT DS    XL2                      FCB IMAGE LINE         @Z40MSAP
*                                       COUNTER                @Z40MSAP
SPWFCBIL DS    XL2                      LENGTH FCB IMAGE       @Z40MSAP
SPWCAVTA DS    A                        ADDRESS CALLERS AVT    @Z40MSAP
SPWWKBTS DS    0XL2                     WORK BYTES TO TEST     @Z40MSAP
*                                       FLAGS                  @Z40MSAP
SPWWKBT1 DS    XL1                      FIRST WORK BYTE        @Z40MSAP
SPWWKBT2 DS    XL1                      SECOND WORK BYTE       @Z40MSAP
SPWI     DS    XL1                      TOTAL NUMBER OF        @Z40MSAP
*                                       TRANSLATE TABLES       @Z40MSAP
SPWJ     DS    XL1                      TRANSLATE TABLE INDEX  @Z40MSAP
SPWK     DS    XL1                      INDEX OF CGM IN        @Z40MSAP
*                                       TRANSLATE TABLES       @Z40MSAP
SPWL     DS    XL1                                             @Z40MSAP
SPWM     DS    XL1                      INDEX IN CGM RECORD    @Z40MSAP
SPWN     DS    XL1                      INDEX IN CGM RECORD    @Z40MSAP
SPWP     DS    XL2                      TRANSLATE TABLE        @Z40MSAP
*                                       POSITION INDEX         @Z40MSAP
SPWMAX   DS    XL1                      NUMBER OF CGMS         @Z40MSAP
*                                       INSTALLED ON DEVICE    @Z40MSAP
SPWTCBKY DS    XL1                      TCB PROTECTION KEY     @Z40MSAP
SPWCGMID DS    F                        AREA TO BUILD          @Z40MSAP
*                                       LOAD CGM RECORD        @Z40MSAP
         ORG   SPWCGMID                                        @Z40MSAP
SPWCGMRC DS    XL1                      ARRAY OF CGM IDS       @Z40MSAP
         ORG   SPWCGMID+4                                      @Z40MSAP
SPWMEXIT DS    5F                       SETPRT MODULES         @Z40MSAP
*                                       EXIT LIST              @Z40MSAP
SPWMEIND DS    XL1                      INDEX FOR MODULE       @Z40MSAP
*                                       EXIT LIST              @Z40MSAP
SPWERIND DS    XL1                      ERROR EXIT IN THE      @Z40MSAP
*                                       MODULE EXIT LIST       @Z40MSAP
SPWRXIND DS    XL1                      INDEX INTO THE MODULE  @Z40MSAP
*                                       EXIT LIST FOR A        @Z40MSAP
*                                       MODULE TO PASS         @Z40MSAP
*                                       CONTROL TO IF          @Z40MSAP
*                                       RETRANSMIT IS          @Z40MSAP
*                                       SPECIFIED              @Z40MSAP
SPWPLNTH DS    XL1                      LENGTH OF SET PRINT    @Z40MSAP
*                                       PARAMETER LIST         @Z40MSAP
SPWADDCB DS    A                        ADDRESS OF THE         @Z40MSAP
*                                       CALLERS DCB            @Z40MSAP
SPWADDEB DS    A                        ADDRESS OF THE         @Z40MSAP
*                                       CALLERS DEB            @Z40MSAP
SPWADIOB DS    A                        ADDRESS OF THE IOB     @Z40MSAP
*                                       PREFIX SECTION         @Z40MSAP
SPWADUCB DS    A                        ADDRESS OF THE UCB     @Z40MSAP
SPWCFHIT DS    XL1                      COUNTER FOR FCB IMAGE  @Z48MSAP
*                                       HALF INCH TEST         @Z48MSAP
SPWCFB   DS    XL1                      CURRENT FCB BYTE       @Z48MSAP
*                                       BEING USED FOR HALF    @Z48MSAP
*                                       INCH TEST              @Z48MSAP
         DS    XL2                      UNUSED TWO BYTES       @Z48MSAP
         DS    A                        UNUSED FOUR BYTES      @Z48MSAP
SPWSAVE  DS    0F                       SET PRINT WORK AREA    @Z40MSAP
*                                       REGISTER SAVE AREA     @Z40MSAP
SPWSAV01 DS    F                        SAVE AREA NUMBER  1    @Z40MSAP
SPWSAV02 DS    F                        SAVE AREA NUMBER  2    @Z40MSAP
SPWSAV03 DS    F                        SAVE AREA NUMBER  3    @Z40MSAP
SPWSAV04 DS    F                        SAVE AREA NUMBER  4    @Z40MSAP
SPWSAV05 DS    F                        SAVE AREA NUMBER  5    @Z40MSAP
SPWSAV06 DS    F                        SAVE AREA NUMBER  6    @Z40MSAP
SPWSAV07 DS    F                        SAVE AREA NUMBER  7    @Z40MSAP
SPWSAV08 DS    F                        SAVE AREA NUMBER  8    @Z40MSAP
SPWSAV09 DS    F                        SAVE AREA NUMBER  9    @Z40MSAP
SPWSAV10 DS    F                        SAVE AREA NUMBER 10    @Z40MSAP
SPWSAV11 DS    F                        SAVE AREA NUMBER 11    @Z40MSAP
SPWSAV12 DS    F                        SAVE AREA NUMBER 12    @Z40MSAP
SPWSAV13 DS    F                        SAVE AREA NUMBER 13    @Z40MSAP
SPWSAV14 DS    F                        SAVE AREA NUMBER 14    @Z40MSAP
SPWSAV15 DS    F                        SAVE AREA NUMBER 15    @Z40MSAP
*                                                              @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*        THIS IS A RECEIVING FIELD FOR A CVD INSTRUCTION, AND         *
*        THEREFORE IS ALIGNED ON A DOUBLE WORD BOUNDARY.              *
***********************************************************************
*                                                              @Z40MSAP
SPWFLINU DS    0D                       FCB IMAGE LINE NUMBER  @Z40MSAP
SPWFCHNU DS    0D                       FCB IMAGE CHANNEL      @Z40MSAP
         DS    XL6                      FILLER                 @Z40MSAP
SPWFPAKL DS    0XL2                     FCB LINE NUMBER        @Z40MSAP
*                                       IN PACKED FORMAT       @Z40MSAP
SPWFPAKC DS    0XL2                     FCB CHANNEL NUMBER     @Z40MSAP
*                                       IN PACKED FORMAT       @Z40MSAP
         DS    XL1                      1ST HALF FCB           @Z40MSAP
*                                       IMAGE ENTRY            @Z40MSAP
SPWFSNUM DS    XL1                      SIGN PORTION OF        @Z40MSAP
*                                       FCB IMAGE ENTRY        @Z40MSAP
         EJECT
***********************************************************************
*        AREA FOR THE COPY OF THE CALLERS SET PRINT PARAMETER LIST.   *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWSPP   DS    XL48                     COPY SPP IN KEY 5      @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
*        SUBPOOL NUMBER AND LENGTH FOR USER KEY SECTION OF THE        *
*        SET PRINT WORKAREA GOTTEN IN USER KEY. THIS INFORMATION      *
*        WILL BE USED TO FREEMAIN THIS AREA AT THE PROPER TIME.       *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWUKSNL DS    0F                                              @Z40MSAP
SPWUKSN  DS    XL1                      SUBPOOL NUMBER         @Z40MSAP
SPWUKLTH DS    XL3                      LENGTH                 @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
*        SUBPOOL NUMBER AND LENGTH FOR KEY 5 SECTION OF THE SET       *
*        PRINT WORKAREA GOTTEN IN KEY 5. THIS INFORMATION WILL        *
*        BE USED TO FREEMAIN THIS AREA AT THE PROPER TIME.            *
***********************************************************************
         SPACE 1                                               @Z40MSAP
SPWK5SNL DS    0F                                              @Z40MSAP
SPWK5SN  DS    XL1                      SUBPOOL NUMBER         @Z40MSAP
SPWK5LTH DS    XL3                      LENGTH                 @Z40MSAP
         SPACE 1                                               @Z40MSAP
***********************************************************************
*       PUT ANY NEW REQUIREMENTS FOR SPACE IN FRONT OF THIS MESSAGE   *
***********************************************************************
*                                                              @Z40MSAP
SPWMODWK DS    XL20                     WORK AREA FOR THE      @Z40MSAP
*                                       COMPILER               @Z40MSAP
SPW5LNTH EQU   *-SPW5                   LENGTH OF BLDL LIST    @Z40MSAP
*                                       AND 3800 PRINTER       @Z40MSAP
*                                       WORK AREA IN KEY 5     @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        PRINTER CCW OP-CODES                                         *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPWNOP   EQU   X'03'                    NO OPERATION           @Z40MSAP
SPWSENSE EQU   X'04'                    SENSE I/O              @Z40MSAP
SPWWRTSP EQU   X'09'                    PRINT, SPACE 1         @Z40MSAP
SPWWRITE EQU   X'11'                    WRITE COMMAND          @Z40MSAP
SPWUNFLD EQU   X'23'                    UNFOLD COMMAND         @Z40MSAP
SPWFLDCD EQU   X'43'                    FOLD COMMAND           @Z40MSAP
SPWFCBLD EQU   X'63'                    LOAD FCB IMAGE         @Z40MSAP
SPWBLDC  EQU   X'73'                    BLOCK DATA CHECK       @Z40MSAP
SPWSKIP0 EQU   X'83'                    SKIP TO CHANNEL 0      @Z40MSAP
SPWSKIP  EQU   X'8B'                    SKIP COMMAND           @Z40MSAP
SPWCNTRL EQU   X'EB'                    CONTROL OP CODE        @Z40MSAP
SPWLDFLD EQU   X'F3'                    LOAD FOLD COMMAND      @Z40MSAP
SPWLDUCS EQU   X'FB'                    LOAD UCS COMMAND       @Z40MSAP
*                                                              @Z40MSAP
*                                                              @Z40MSAP
***********************************************************************
*                                                                     *
*        3800 PRINTER CCW OP-CODES                                    *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPWSTCNR EQU   X'23'                    LOAD STARTING COPY     @Z40MSAP
*                                       NUMBER                 @Z40MSAP
SPWLGCM  EQU   X'25'                    LOAD GRAPHIC           @Z40MSAP
*                                       CHARACTER MODULE       @Z40MSAP
SPWLCMOD EQU   X'35'                    LOAD COPY              @Z40MSAP
*                                       MODIFY RECORD          @Z40MSAP
SPWINIT  EQU   X'37'                    INITALIZE PRINTER      @Z40MSAP
*                                       OP CODE                @Z40MSAP
SPWLFOVL EQU   X'43'                    LOAD FORMS OVERLAY     @Z40MSAP
*                                       OP CODE                @Z40MSAP
SPWSLTT0 EQU   X'47'                    SELECT TRANSLATE       @Z40MSAP
*                                       TABLE 0                @Z40MSAP
SPWLWCGM EQU   X'53'                    LOAD WCGM OP CODE      @Z40MSAP
SPWSLTT1 EQU   X'57'                    SELECT TRANSLATE       @Z40MSAP
*                                       TABLE 1                @Z40MSAP
SPWSLTT2 EQU   X'67'                    SELECT TRANSLATE       @Z40MSAP
*                                       TABLE 2                @Z40MSAP
SPWSLTT3 EQU   X'77'                    SELECT TRANSLATE       @Z40MSAP
*                                       TABEL 3                @Z40MSAP
SPWTTLOD EQU   X'83'                    LOAD TRANSLATE TABLE   @Z40MSAP
*                                       OP CODE                @Z40MSAP
SPWCLRPT EQU   X'87'                    CLEAR PRINT OP CODE    @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        SET PRINT ERROR RETURN CODES. THESE CODES WILL BE            *
*        PLACED IN THE PROPER LOCATION IN REGISTER 15, TO             *
*        INDICATE THE ERROR CONDITION THAT HAS OCCURED.               *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPWSUCCP EQU   X'00'                    SUCCESSFUL COMPLETION  @Z40MSAP
SPWIMNO  EQU   X'04'                    IMAGE NOT FOUND        @Z40MSAP
SPWBLDLP EQU   X'08'                    BLDL PERMANENT         @Z40MSAP
*                                       I/O ERROR              @Z40MSAP
SPWLOADP EQU   X'0C'                    LOAD PERMANENT         @Z40MSAP
*                                       I/O ERROR              @Z40MSAP
SPWREADP EQU   X'10'                    READ PERMANENT         @Z40MSAP
*                                       I/O ERROR              @Z40MSAP
SPWFCBV  EQU   X'14'                    WRONG FCB IMAGE        @Z40MSAP
SPWNOOP  EQU   X'18'                    NO OPERATION PERFORMED @Z40MSAP
SPWUCERR EQU   X'1C'                    NOP, PREVIOUS          @Z40MSAP
*                                       UNCORRECTIABLE ERROR   @Z40MSAP
SPWSPACE EQU   X'20'                    INSUFFICIENT SPACE     @Z40MSAP
SPWIMLIB EQU   X'24'                    IMAGE LIBRARY CAN      @Z40MSAP
*                                       NOT BE OPENED          @Z40MSAP
SPWFOVLF EQU   X'28'                    CAN NOT LOAD FORMS     @Z40MSAP
*                                       OVERLAY FRAME          @Z40MSAP
SPWCANCL EQU   X'2C'                    OPERATOR CANCELED      @Z40MSAP
SPWMCGM  EQU   X'30'                    TOO MANY CGMS          @Z40MSAP
*                                       REQUESTED              @Z40MSAP
SPWTRCIN EQU   X'34'                    COPY MOD TRC           @Z40MSAP
*                                       FIELD INVALID          @Z40MSAP
SPWEODSR EQU   X'38'                    ERROR WHILE            @Z40MSAP
*                                       ISSUING EODS           @Z40MSAP
SPWNOBR  EQU   X'3C'                    NO BURSTER/SHEET       @Z40MSAP
*                                       STACKERFEATURE         @Z40MSAP
*                                       INSTALLED              @Z40MSAP
SPWPIOER EQU   X'40'                    A PERMENT I/O ERROR    @Z40MSAP
*                                       HAS OCCURED            @Z40MSAP
SPWNOCGM EQU   X'44'                    CGM NOT SPECIFIED IN   @Z40MSAP
*                                       CHARACTER ARRANGEMENT  @Z40MSAP
*                                       TABLE TRAILER          @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        SET PRINT 3800 REASON CODES. THESE CODES WILL APPEAR IN      *
*        REGISTER 0, WHEN AN ERROR CONDITION IS RETURNED.             *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPWTRTBL EQU   X'04'                    TRANSLATE TABLE        @Z40MSAP
SPWCPMOD EQU   X'08'                    COPY MODIFY RECORD     @Z40MSAP
SPWCPNR  EQU   X'0C'                    COPY NUMBER            @Z40MSAP
SPWGCMR  EQU   X'10'                    GRAPHIC CHARACTER      @Z40MSAP
*                                       MODULE RECORD          @Z40MSAP
SPWFOSEQ EQU   X'14'                    FORMS OVERLAY          @Z40MSAP
*                                       SEQUENCE CONTROL       @Z40MSAP
*                                       RECORD                 @Z40MSAP
SPWFOVL  EQU   X'18'                    FORMS OVERLAY FEATURE  @Z40MSAP
SPWCGMR  EQU   X'1C'                    CHARACTER GENERATION   @Z40MSAP
*                                       MODULE                 @Z40MSAP
SPWFCBRC EQU   X'20'                    FORMS CONTROL BUFFER   @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        COMMON SET PRINT CONSTANTS                                   *
*                                                                     *
***********************************************************************
SPWALG   EQU   X'FF'                    ALIGN MESSAGE RETRY    @Z40MSAP
SPWCC    EQU   X'40'                    COMMAND CHAINING BIT   @Z40MSAP
SPWCCWVR EQU   X'0F'                    VERIFY ONLY            @Z40MSAP
SPWDEIB1 EQU   X'01'                    USED TO DECREMENT      @Z40MSAP
*                                       INDEXES BY 1           @Z40MSAP
SPWENTVR EQU   X'1F'                    ENTRY FOR VERIFY       @Z40MSAP
SPWFOLD  EQU   X'40'                    FOLD SPECIFIED         @Z40MSAP
SPWIMCLO EQU   X'FF'                    IMAGELIB NOT OPEN      @Z40MSAP
SPWINIB1 EQU   X'01'                    USED TO INCREMENT      @Z40MSAP
*                                       INDEXES BY 1           @Z40MSAP
SPWMAXCH EQU   4                        MAX NUMBER OF          @Z40MSAP
*                                       TRANSLATE TABLES       @Z40MSAP
SPWNFCBL EQU   X'40'                    NO FCB LOAD            @Z40MSAP
SPWOKCC  EQU   X'7F'                    I/O COMPLETED OK       @Z40MSAP
SPWOVLAP EQU   X'20'                    LOAD OVERLAPPED        @Z40MSAP
SPWPOOL  EQU   230                      SUBPOOL FOR            @Z40MSAP
*                                       USER KEY CORE          @Z40MSAP
SPWRDLN  EQU   8                        FIELD FOR RECORDS      @Z40MSAP
*                                       PASSED IN CORE         @Z40MSAP
SPWRPVER EQU   X'10'                    OPERATOR REQUESTED     @Z40MSAP
*                                       VERIFY                 @Z40MSAP
SPWSILI  EQU   X'20'                    SILI BIT               @Z40MSAP
SPWUCS2C EQU   C'2'                     CHARACTER '2' FOR      @Z40MSAP
*                                       UCS2 MEMBER NAME       @Z40MSAP
SPWVERIF EQU   X'10'                    VERIFY SPECIFIED       @Z40MSAP
SPW5POOL EQU   230                      SUBPOOL FOR            @Z40MSAP
*                                       KEY 5 CORE             @Z40MSAP
SPW6LINE EQU   C'6'                     SIX LINES/INCH         @Z40MSAP
SPW8LINE EQU   C'8'                     EIGHT LINES/INCH       @Z40MSAP
         EJECT                                                 @Z40MSAP
***********************************************************************
*                                                                     *
*        THE FOLLOWING STRUCTURE MAPS THE SVRB EXTENDED SAVE          *
*        AREA AS SET PRINT USES IT.                                   *
*                                                                     *
***********************************************************************
*                                                              @Z40MSAP
SPRBXSV  DSECT                                                 @Z40MSAP
SPRMSG   DS    A                        ADDR OF MSG CSECT      @Z40MSAP
SPRIDCBA DS    A                        ADDRESS OF IMGLIB DCB  @Z40MSAP
SPREXIT  DS    A                        RETURN TO EXIT PROLOG  @Z40MSAP
SPRKEY   DS    X                        CALLER KEY FOR MODESET @Z40MSAP
*                                       KEY IS IN BITS 0-3     @Z40MSAP
SPRUSKEY EQU   X'80'                    BIT 0 IS ON IF KEY 8-F @Z40MSAP
*                                       (USER KEY, NOT SYSTEM) @Z40MSAP
SPRINDIC DS    B                        INDICATOR BYTE         @Z40MSAP
SPRNIOBS DS    X                        NO. OF IOBS - USED     @Z40MSAP
*                                         BY SETPRT ESTAE      @Z40MSAP
         DS    X                        RESERVED               @Z40MSAP
SPRBLDLA DS    A                        ADDRESS OF BLDL        @Z40MSAP
*                                       PARAMETER LIST         @Z40MSAP
SPRIOBSV DS    A                        ADDR OF IOB ALTERED    @Z40MSAP
*                                         BY IGC0008A          @Z40MSAP
         DS    A                        RESERVED               @Z40MSAP
SPRGETMN DS    A                        ADDR OF GTRACE BUFFER  @Z40MSAP
*                                         USED BY SETPRT ESTAE @Z40MSAP
         ORG   SPRGETMN                 REUSE SPACE            @Z40MSAP
*SPRELIST ESTAE MF=L                    SPACE FOR ESTAE LIST   @Z40MSAP
SPRELIST ESTAE MF=L                     INVOKE MACRO           @Z40MSAP
         ORG   SPRGETMN                 REUSE SPACE            @Z40MSAP
SPRSAVE  DS    5F                       REG SAVE AREA          @Z40MSAP
         ORG   ,                                               @Z40MSAP
SPRLEN   EQU   *-SPRBXSV,48-(*-SPRBXSV) SPRLEN IS BYTES USED   @Z40MSAP
*                                       IN EXTENDED SAVE AREA  @Z40MSAP
*                                       LTH (SPRLEN), BYTES    @Z40MSAP
*                                       REMAIN (ERROR MEANS    @Z40MSAP
*                                       TOO LARGE)             @Z40MSAP
         EJECT
         MEND                                                  @Z40MSAP
*%SPW002:;                              /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS IS THE MAPPING MACRO FOR THE SET PRINT WORK AREA       **
**                                                                   **
**********************************************************************/
*
*
*
*/*********************************************************************
**                                                                   **
**       THIS IS THE MAPPING MACRO FOR THAT PORTION OF THE SET       **
**       PRINT WORK AREA GOTTEN IN USER KEY.                         **
**                                                                   **
**********************************************************************/
*
*    DECLARE
*        1 SPW      BASED(SPWUCORE)     /*                   @Z40MSAP*/
*                   BDY(DWORD),         /*                   @Z40MSAP*/
*          2 SPWOPTSA PTR(8),           /* SAVE AREA FOR     @Z40MSAP*/
*                                       /* OP-CODE FOR       @Z40MSAP*/
*          2 SPWPARM1 BIT(8),           /* SAVED REPLY FLAGS @Z40MSAP*/
*          2 SPWFLG1  BIT(8),           /* REPLY FLAGS       @Z40MSAP*/
*            3 SPWVRFCB BIT(1),         /* VERIFY FCB        @Z40MSAP*/
*            3 *        BIT(6),         /*                   @Z40MSAP*/
*            3 SPWALIGN BIT(1),         /* ALIGN FORMS       @Z40MSAP*/
*          2 SPWFLG2  BIT(8),           /* ENTRY FOR MODULES @Z40MSAP*/
*                                       /* IGG08101 AND      @Z40MSAP*/
*                                       /* IGG08102          @Z40MSAP*/
*          2 SPWFLG3  BIT(8),           /* TO SAVE LINE/     @Z40MSAP*/
*                                       /* INCH INDICATOR    @Z40MSAP*/
*            3 *        BIT(3),         /*                   @Z40MSAP*/
*            3 SPW120RQ BIT(1),         /* IEC120 MESSAGE    @Z40MSAP*/
*                                       /* REQUIRED          @Z40MSAP*/
*            3 *        BIT(4),         /*                   @Z40MSAP*/
*          2 SPWFLG4  BIT(8),           /* FLAG BYTE         @Z40MSAP*/
*            3 SPWFLG5  BIT(8),         /* FLAG BYTE         @Z40MSAP*/
*              4 SPWFCBDE BIT(1),       /* FCB IMAGE LOADED  @Z40MSAP*/
*                                       /* AND MUST BE       @Z40MSAP*/
*                                       /* DELETED           @Z40MSAP*/
*              4 SPWECPAM BIT(1),       /* INDICATES EXCP    @Z40MSAP*/
*                                       /* DCB WITH ACCESS   @Z40MSAP*/
*                                       /* METHOD SECTION    @Z40MSAP*/
*                                       /* PRESENT           @Z40MSAP*/
*              4 *        BIT(1),       /* UNUSED FLAG BIT   @Z40MSAP*/
*              4 *        BIT(1),       /* UNUSED FLAG BIT   @Z40MSAP*/
*              4 *        BIT(1),       /* UNUSED FLAG BIT   @Z40MSAP*/
*              4 *        BIT(1),       /* UNUSED FLAG BIT   @Z40MSAP*/
*              4 *        BIT(1),       /* UNUSED FLAG BIT   @Z40MSAP*/
*              4 *        BIT(1),       /* UNUSED FLAG BIT   @Z40MSAP*/
*          2 SPWFLG8  BIT(8),           /* FLAG BYTE         @Z40MSAP*/
*            3 SPWRETRY BIT(1),         /* RETRY IN PROGRESS @Z40MSAP*/
*            3 SPWVREND BIT(1),         /* LAST VERIFY LINE  @Z40MSAP*/
*                                       /* IS PRINTING       @Z40MSAP*/
*            3 SPWNOMOV BIT(1),         /* DO NOT MOVE       @Z40MSAP*/
*                                       /* REQUESTED MESSAGE @Z40MSAP*/
*            3 SPWFCBOP BIT(1),         /* FILL FCBOP AS     @Z40MSAP*/
*
*                                       /* WELL AS FCBID     @Z40MSAP*/
*                                       /* INTO UCB          @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*          2 *        CHAR(1),          /* UNUSED BYTE       @Z40MSAP*/
*          2 SPWMSGHD CHAR(8)           /* HEADER SECTON     @Z40MSAP*/
*                     BDY(WORD),        /* FOR MESSAGE AREA  @Z40MSAP*/
*            3 SPWRPLYA PTR(31),        /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* REPLY AREA        @Z40MSAP*/
*              4 SPWMSGLB PTR(8),       /* LENGTH OF THE     @Z40MSAP*/
*                                       /* REPLY AREA        @Z40MSAP*/
*              4 SPWRPLYB PTR(24),      /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* REPLY AREA        @Z40MSAP*/
*            3 SPWECBPA PTR(31),        /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* REPLY ECB         @Z40MSAP*/
*          2 SPWMSGAR,                  /* SPW MESSAGE AREA  @Z40MSAP*/
*            3 SPWMSGTX CHAR(64),       /* MESSAGE TEXT      @Z40MSAP*/
*            3 SPWREPLY CHAR(16),       /* OPERATOR REPLY    @Z40MSAP*/
*                                       /* AREA (16 BYTES)   @Z40MSAP*/
*              4 *        CHAR(1),      /*                   @Z40MSAP*/
*              4 SPWFCBOR CHAR(15),     /* OFFSET OF 1 USED  @Z40MSAP*/
*                                       /* WHEN INCREMENTING @Z40MSAP*/
*                                       /* THROUGH THE       @Z40MSAP*/
*                                       /* OPERATOR REPLY    @Z40MSAP*/
*                5 SPWREPC1 CHAR(15),   /* OFFSET OF 1 USED  @Z40MSAP*/
*                                       /* TO CLEAR FIELD    @Z40MSAP*/
*          2 SPWRPECB PTR(31),          /* REPLY ECB FOR     @Z40MSAP*/
*                                       /* WTOR              @Z40MSAP*/
*          2 SPWREPID CHAR(4),          /* REPLIED ID        @Z40MSAP*/
*          2 SPWFCBIM CHAR(8)           /* NAME FCB IMAGE    @Z40MSAP*/
*                     BDY(WORD),        /*                   @Z40MSAP*/
*            3 SPWUCSIM CHAR(8),        /* NAME OF UCS IMAGE @Z40MSAP*/
*              4 *        CHAR(4),      /* FIRST 1/2 OF NAME @Z40MSAP*/
*              4 SPWUCS2H CHAR(4),      /* 2ND HALF UCS NAME @Z40MSAP*/
*                5 SPWFCB2H CHAR(4),    /* 2ND HALF OF NAME  @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**     THE FOLLOWING IOB WILL BE BUILT FOR EXCP USERS, AND           **
**     IF  THERE IS A NON-OPEN DCB IN KEY 5 FOR A 3800 PRINTER.      **
**                                                                   **
**********************************************************************/
*
*          2 SPWIOB   CHAR(40),         /*                   @Z40MSAP*/
*
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING INFORMATION WAS SAVED FROM THE USERS IOB.     **
**                                                                   **
**********************************************************************/
*
*          2 SPWFLGSV PTR(31),          /* IOB FIRST WORD    @Z40MSAP*/
*          2 SPWSTRSV PTR(31),          /* IOB START         @Z40MSAP*/
*    @ EJECT ASSEMBLE;                                     /*@Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING SECTION MAPS THE CHANNEL PROGRAM              **
**       SECTION OF THE SET PRINT WORKAREA.                          **
**                                                                   **
**********************************************************************/
*
*          2 SPWCCW1  CHAR(8)           /* FIRST CCW         @Z40MSAP*/
*                     BDY(DWORD),       /*                   @Z40MSAP*/
*            3 SPWADD1A PTR(31),        /* BUFFER ADDRESS    @Z40MSAP*/
*              4 SPWOPCD1 PTR(8),       /* OP CODE           @Z40MSAP*/
*              4 SPWADD1B PTR(24),      /* BUFFER ADDRESS    @Z40MSAP*/
*            3 SPWCCWF1 PTR(16),        /* CCW FLAGS         @Z40MSAP*/
*              4 *        BIT(1),       /* FILLER            @Z40MSAP*/
*              4 SPWCC1   BIT(1),       /* COMMAND CHAINING  @Z40MSAP*/
*              4 SPWSILI1 BIT(1),       /* SILI BIT          @Z40MSAP*/
*              4 *        BIT(13),      /* FILLER            @Z40MSAP*/
*            3 SPWBYTE1 PTR(16),        /* BYTE COUNT        @Z40MSAP*/
*          2 SPWCCW2  CHAR(8)           /* SECOND CCW        @Z40MSAP*/
*                     BDY(DWORD),       /*                   @Z40MSAP*/
*            3 SPWADD2A PTR(31),        /* BUFFER ADDRESS    @Z40MSAP*/
*              4 SPWOPCD2 PTR(8),       /* OP CODE           @Z40MSAP*/
*              4 SPWADD2B PTR(24),      /* BUFFER ADDRESS    @Z40MSAP*/
*            3 SPWCCWF2 PTR(16),        /* CCW FLAGS         @Z40MSAP*/
*              4 *        BIT(1),       /* FILLER            @Z40MSAP*/
*              4 SPWCC2   BIT(1),       /* COMMAND CHAINING  @Z40MSAP*/
*              4 SPWSILI2 BIT(1),       /* SILI BIT          @Z40MSAP*/
*              4 *        BIT(13),      /* FILLER            @Z40MSAP*/
*            3 SPWBYTE2 PTR(16),        /* BYTE COUNT        @Z40MSAP*/
*          2 SPWCCW3  CHAR(8)           /* THIRD CCW         @Z40MSAP*/
*                     BDY(DWORD),       /*                   @Z40MSAP*/
*            3 SPWADD3A PTR(31),        /* BUFFER ADDRESS    @Z40MSAP*/
*              4 SPWOPCD3 PTR(8),       /* OP CODE           @Z40MSAP*/
*              4 SPWADD3B PTR(24),      /* BUFFER ADDRESS    @Z40MSAP*/
*            3 SPWCCWF3 PTR(16),        /* CCW FLAGS         @Z40MSAP*/
*              4 *        BIT(1),       /* FILLER            @Z40MSAP*/
*              4 SPWCC3   BIT(1),       /* COMMAND CHAINING  @Z40MSAP*/
*              4 SPWSILI3 BIT(1),       /* SILI BIT          @Z40MSAP*/
*              4 *        BIT(13),      /* FILLER            @Z40MSAP*/
*            3 SPWBYTE3 PTR(16),        /* BYTE COUNT        @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*          2 SPWUNPKA PTR(31),          /* UNPACK AREA       @Z40MSAP*/
*            3 *        CHAR(1),        /* FILLER            @Z40MSAP*/
*            3 SPWKAR   CHAR(2),        /* FINAL RESULT      @Z40MSAP*/
*            3 SPWZONE  PTR(8),         /* ZONE FOR          @Z40MSAP*/
*                                       /* LOW ORDER         @Z40MSAP*/
*          2 *        PTR(16),          /* FILLER            @Z40MSAP*/
*          2 SPWLNENO PTR(16),          /* USED BY CONVERT   @Z40MSAP*/
*                                       /* INSTRUCTION       @Z40MSAP*/
*          2 SPWFFSB  FIXED(32);        /* FIRST FOUR SENSE  @Z40MSAP*/
*                                       /* BYTES FOR THE     @Z40MSAP*/
*                                       /* 3800 PRINTER      @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS IS THE MAPPING MACRO FOR THAT PORTION OF THE SET       **
**       PRINT WORK AREA GOTTEN IN KEY 5.                            **
**                                                                   **
**********************************************************************/
*
*
*
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING SECTION MAPS THE BLDL WORKAREA FOR            **
**       SET PRINT.                                                  **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        1 SPW5     BASED(SPW5CORE),    /*                   @Z40MSAP*/
*          2 SPWBLDLA CHAR(64)          /* BLDL LIST AREA    @Z40MSAP*/
*                     BDY(WORD),        /*                   @Z40MSAP*/
*            3 SPWBLDLC PTR(32),        /* COUNT AND LENGTH  @Z40MSAP*/
*              4 SPWBLDCT PTR(16),      /* COUNT             @Z40MSAP*/
*              4 SPWBLDLL PTR(16),      /* LENGTH            @Z40MSAP*/
*            3 SPWBLNAM CHAR(8),        /* IMAGE NAME FIELD  @Z40MSAP*/
*              4 SPWUCSMB CHAR(4),      /* UCS IMAGE MEMBER  @Z40MSAP*/
*                5 SPWFCBMB CHAR(4),    /* FCB IMAGE MEMBER  @Z40MSAP*/
*                  6 *        CHAR(3),  /* FILLER            @Z40MSAP*/
*                  6 SPWFCB2  CHAR(1),  /* FCB IMAGE NAME    @Z40MSAP*/
*                    7 SPWUCS2  CHAR(1),/* UCS IMAGE NAME    @Z40MSAP*/
*              4 SPWBLFCB CHAR(4),      /* FCB ID FOR BLDS   @Z40MSAP*/
*                5 SPWBLUCS CHAR(4),    /* UCS ID FOR BLDL   @Z40MSAP*/
*            3 *        CHAR(52),       /* FILLER            @Z40MSAP*/
*          2 SPWWKADR PTR(32),          /* ADDRESS OF SET    @Z40MSAP*/
*                                       /* PRINT WORKAREA    @Z40MSAP*/
*                                       /* (IN USER KEY)     @Z40MSAP*/
*                                       /* SAVED FOR ESTAE   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING SECTION MAPS THE MESSAGE AREA FOR THE KEY     **
**       5 SEGMENT OF THE SET PRINT WORK AREA.                       **
**                                                                   **
**********************************************************************/
*
*          2 SPWMSGHS CHAR(8)           /* HEADER SECTON     @Z40MSAP*/
*                     BDY(WORD),        /* FOR MESSAGE AREA  @Z40MSAP*/
*            3 SPWARPLA PTR(31),        /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* REPLY AREA        @Z40MSAP*/
*              4 SPWLRPLA PTR(8),       /* LENGTH OF THE     @Z40MSAP*/
*                                       /* REPLY AREA        @Z40MSAP*/
*              4 SPWARPLB PTR(24),      /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* REPLY AREA        @Z40MSAP*/
*            3 SPWARECB PTR(31),        /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* REPLY ECB         @Z40MSAP*/
*          2 SPWMSGA,                   /* SPW MESSAGE AREA  @Z40MSAP*/
*            3 SPWMSGLN BIT(32),        /* MESSAGE LENGTH    @Z40MSAP*/
*            3 SPWTXMSG CHAR(80),       /* MESSAGE TEXT      @Z40MSAP*/
*            3 SPWORPLY CHAR(16),       /* OPERATOR REPLY    @Z40MSAP*/
*                                       /* AREA (16 BYTES)   @Z40MSAP*/
*          2 SPWMRECB PTR(31),          /* REPLY ECB FOR     @Z40MSAP*/
*                                       /* WTOR              @Z40MSAP*/
*          2 SPWIMAGE CHAR(8)           /* NAME IMAGE        @Z40MSAP*/
*                     BDY(WORD),        /* REQUESTED         @Z40MSAP*/
*            3 SPWFCBNM CHAR(8),        /* NAME FCB IMAGE    @Z40MSAP*/
*              4 SPWFCBPF CHAR(4),      /* FIRST 1/2 OF NAME @Z40MSAP*/
*              4 SPWFCBID CHAR(4),      /* 2ND HALF FCB NAME @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS SECTION OF THE SET PRINT MAPPING MACRO HAS BEEN        **
**       ADDED FOR THE 3800 DEVICE.                                  **
**                                                                   **
**********************************************************************/
*
*          2 SPWSPRB  PTR(31),          /* POINTER TO SVRB   @Z40MSAP*/
*                                       /* EXTENDED SAVE     @Z40MSAP*/
*                                       /* AREA              @Z40MSAP*/
*          2 SPWTWAD1 PTR(31),          /* TRANSLATE 1       @Z40MSAP*/
*                                       /* WORKAREA ADDRESS  @Z40MSAP*/
*          2 SPWTWL1  PTR(32),          /* TRANSLATE 1       @Z40MSAP*/
*                                       /* WORKAREA LENGTH   @Z40MSAP*/
*                                       /* AND SUBPOOL #     @Z40MSAP*/
*            3 SPWTWSP1 PTR(8),         /* TRANSLATE 1       @Z40MSAP*/
*                                       /* WORKAREA          @Z40MSAP*/
*                                       /* SUBPOOL NUMBER    @Z40MSAP*/
*            3 SPWTWLN1 PTR(24),        /* TRANSLATE 1       @Z40MSAP*/
*                                       /* WORKAREA LENGTH   @Z40MSAP*/
*          2 SPWFLAG1 BIT(8),           /* FIRST BYTE OF     @Z40MSAP*/
*                                       /* FLAGS             @Z40MSAP*/
*            3 SPWT3800 BIT(1),         /* THIS SET PRINT    @Z40MSAP*/
*                                       /* REQUEST IS FOR A  @Z40MSAP*/
*                                       /* 3800 TYPE DEVICE  @Z40MSAP*/
*            3 SPWFCBUA BIT(1),         /* FCB IMAGE IN      @Z40MSAP*/
*                                       /* USER AREA         @Z40MSAP*/
*            3 SPWENDXL BIT(1),         /* END OF DCB        @Z40MSAP*/
*                                       /* EXIT LIST         @Z40MSAP*/
*            3 SPWEXFLD BIT(1),         /* EXCP FOR FCB LOAD @Z40MSAP*/
*            3 SPWEXWPR BIT(1),         /* EXCP FOR WRITING  @Z40MSAP*/
*                                       /* ON THE PRINTER    @Z40MSAP*/
*            3 SPWENDM  BIT(1),         /* END SECTION IN    @Z40MSAP*/
*                                       /* MESSAGE AREA      @Z40MSAP*/
*            3 SPWEFCBP BIT(1),         /* END OF FCB IMAGE  @Z40MSAP*/
*                                       /* PRINT FUNCTION    @Z40MSAP*/
*            3 SPWM128L BIT(1),         /* MSG IEC128D IN    @Z40MSAP*/
*                                       /* MESSAGE AREA      @Z40MSAP*/
*          2 SPWFLAG2 BIT(8),           /* SECOND BYTE OF    @Z40MSAP*/
*                                       /* FLAGS             @Z40MSAP*/
*            3 SPWRVMSG BIT(1),         /* REISSUE VERIFY    @Z40MSAP*/
*                                       /* MESSAGE TO 3800   @Z40MSAP*/
*            3 SPWVMHD  BIT(1),         /* HEADER SECTION IN @Z40MSAP*/
*                                       /* MESSAGE AREA      @Z40MSAP*/
*            3 SPWVMCH  BIT(1),         /* 'CHANNEL' IN      @Z40MSAP*/
*                                       /* MESSAGE AREA      @Z40MSAP*/
*            3 SPWBLIOB BIT(1),         /* BUILD DUMMY IOB   @Z40MSAP*/
*            3 SPWM163L BIT(1),         /* MESSAGE IEC163A   @Z40MSAP*/
*                                       /* IS BEING ISSUED   @Z40MSAP*/
*            3 SPWM164L BIT(1),         /* MESSAGE IEC164A   @Z40MSAP*/
*                                       /* IS BEING ISSUED   @Z40MSAP*/
*            3 SPWNSTOR BIT(1),         /* DETERMINES IF     @Z40MSAP*/
*                                       /* SPWN HAS BEEN     @Z40MSAP*/
*                                       /* STORED            @Z40MSAP*/
*            3 SPWNESOI BIT(1),         /* NOT ENOUGH SPACE  @Z40MSAP*/
*                                       /* TO OPEN IMAGELIB  @Z40MSAP*/
*          2 SPWFLAG3 PTR(8),           /* THIRD BYTE OF     @Z40MSAP*/
*                                       /* FLAGS             @Z40MSAP*/
*            3 SPWPLCPY BIT(1),         /* THE SET PRINT     @Z40MSAP*/
*                                       /* PARM LIST HAS     @Z40MSAP*/
*                                       /* BEEN COPIED FROM  @Z40MSAP*/
*                                       /* THE CALLERS AREA  @Z40MSAP*/
*                                       /* TO KEY 5 SET      @Z40MSAP*/
*                                       /* PRINT WORK AREA   @Z40MSAP*/
*            3 SPWIMGLD BIT(1),         /* IMAGE LOADED      @Z40MSAP*/
*                                       /* INTO CORE         @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*          2 SPWREASN PTR(8),           /* REASON CODE       @Z40MSAP*/
*          2 SPWRETCD PTR(32),          /* RETURN CODE       @Z40MSAP*/
*            3 SPWRET0  PTR(8),         /* BYTE 0 OF         @Z40MSAP*/
*                                       /* RETURN CODE       @Z40MSAP*/
*            3 SPWRET1  PTR(8),         /* BYTE 1 OF         @Z40MSAP*/
*                                       /* RETURN CODE       @Z40MSAP*/
*            3 SPWRET2  PTR(8),         /* BYTE 2 OF         @Z40MSAP*/
*                                       /* RETURN CODE       @Z40MSAP*/
*            3 SPWRET3  PTR(8),         /* BYTE 3 OF         @Z40MSAP*/
*                                       /* RETURN CODE       @Z40MSAP*/
*          2 SPWIOBST PTR(31),          /* PTR IOB STANDARD  @Z40MSAP*/
*                                       /* SECTION           @Z40MSAP*/
*          2 SPWLNCNT FIXED(15),        /* FCB IMAGE LINE    @Z40MSAP*/
*                                       /* COUNTER           @Z40MSAP*/
*          2 SPWFCBIL FIXED(15),        /* LENGTH FCB IMAGE  @Z40MSAP*/
*          2 SPWCAVTA PTR(31),          /* ADDR CALLERS AVT  @Z40MSAP*/
*          2 SPWWKBTS PTR(16),          /* WORK BYTES TO     @Z40MSAP*/
*                                       /* TEST FLAGS        @Z40MSAP*/
*            3 SPWWKBT1 PTR(8),         /* FIRST WORK BYTE   @Z40MSAP*/
*            3 SPWWKBT2 PTR(8),         /* SECOND WORK BYTE  @Z40MSAP*/
*          2 SPWI     PTR(8),           /* TOTAL NUMBER OF   @Z40MSAP*/
*                                       /* TRANSLATE TABLES  @Z40MSAP*/
*          2 SPWJ     PTR(8),           /* TRANSLATE TABLE   @Z40MSAP*/
*                                       /* INDEX             @Z40MSAP*/
*          2 SPWK     PTR(8),           /* INDEX OF CGM IN   @Z40MSAP*/
*                                       /* TRANSLATE TABLES  @Z40MSAP*/
*          2 SPWL     PTR(8),           /*                   @Z40MSAP*/
*          2 SPWM     PTR(8),           /* INDEX IN CGM      @Z40MSAP*/
*                                       /* RECORD            @Z40MSAP*/
*          2 SPWN     PTR(8),           /* INDEX IN CGM      @Z40MSAP*/
*                                       /* RECORD            @Z40MSAP*/
*          2 SPWP     PTR(16),          /* TRANSLATE TABLE   @Z40MSAP*/
*                                       /* POSITION INDEX    @Z40MSAP*/
*          2 SPWMAX   PTR(8),           /* NUMBER OF CGM S   @Z40MSAP*/
*                                       /* INSTALLED ON      @Z40MSAP*/
*                                       /* DEVICE            @Z40MSAP*/
*          2 SPWTCBKY BIT(8),           /* UNUSED BYTE       @Z40MSAP*/
*          2 SPWCGMID BIT(32),          /* AREA TO BUILD     @Z40MSAP*/
*                                       /* LOADCGM RECORD    @Z40MSAP*/
*            3 SPWCGMRC(4) BIT(8),      /* ARRAY OF CGM IDS  @Z40MSAP*/
*          2 SPWMEXIT(5) PTR(31),       /* SETPRT MODULES    @Z40MSAP*/
*                                       /* EXIT LIST         @Z40MSAP*/
*          2 SPWMEIND FIXED(8),         /* INDEX FOR MODULE  @Z40MSAP*/
*                                       /* EXIT LIST         @Z40MSAP*/
*          2 SPWERIND FIXED(8),         /* INDEX FOR THE     @Z40MSAP*/
*                                       /* ERROR EXIT IN THE @Z40MSAP*/
*                                       /* MODULE EXIT LIST  @Z40MSAP*/
*          2 SPWRXIND FIXED(8),         /* INDEX INTO THE    @Z40MSAP*/
*                                       /* MODULE EXIT LIST  @Z40MSAP*/
*                                       /* FOR A MODULE TO   @Z40MSAP*/
*                                       /* PASS CONTROL TO   @Z40MSAP*/
*                                       /* IF RETRANSMIT IS  @Z40MSAP*/
*                                       /* SPECIFIED         @Z40MSAP*/
*          2 SPWPLNTH FIXED(8),         /* LENGTH OF THE     @Z40MSAP*/
*                                       /* SET PRINT         @Z40MSAP*/
*                                       /* PARAMETER LIST    @Z40MSAP*/
*          2 SPWADDCB PTR(31),          /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* CALLERS DCB       @Z40MSAP*/
*          2 SPWADDEB PTR(31),          /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* CALLERS DEB       @Z40MSAP*/
*          2 SPWADIOB PTR(31),          /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* IOB PREFIX        @Z40MSAP*/
*                                       /* SECTION           @Z40MSAP*/
*          2 SPWADUCB PTR(31),          /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* UCB               @Z40MSAP*/
*          2 SPWCFHIT FIXED(8),         /* COUNTER FOR FCB   @Z48MSAP*/
*                                       /* IMAGE HALF INCH   @Z48MSAP*/
*                                       /* TEST              @Z48MSAP*/
*          2 SPWCFB   FIXED(8),         /* CURRENT FCB BYTE  @Z48MSAP*/
*                                       /* BEING USED FOR    @Z48MSAP*/
*                                       /* HALF INCH TEST    @Z48MSAP*/
*          2 *        FIXED(16),        /* UNUSED TWO BYTES  @Z48MSAP*/
*          2 *        FIXED(31),        /* UNUSED FOUR BYTES @Z48MSAP*/
*          2 SPWSAVE  CHAR(60)          /* SET PRINT WORK    @Z40MSAP*/
*                     BDY(WORD),        /* AREA REGISTER     @Z40MSAP*/
*                                       /* SAVE AREA         @Z40MSAP*/
*            3 SPWSAV01 FIXED(31),      /* SAVE AREA NUM  1  @Z40MSAP*/
*            3 SPWSAV02 FIXED(31),      /* SAVE AREA NUM  2  @Z40MSAP*/
*            3 SPWSAV03 FIXED(31),      /* SAVE AREA NUM  3  @Z40MSAP*/
*            3 SPWSAV04 FIXED(31),      /* SAVE AREA NUM  4  @Z40MSAP*/
*            3 SPWSAV05 FIXED(31),      /* SAVE AREA NUM  5  @Z40MSAP*/
*            3 SPWSAV06 FIXED(31),      /* SAVE AREA NUM  6  @Z40MSAP*/
*            3 SPWSAV07 FIXED(31),      /* SAVE AREA NUM  7  @Z40MSAP*/
*            3 SPWSAV08 FIXED(31),      /* SAVE AREA NUM  8  @Z40MSAP*/
*            3 SPWSAV09 FIXED(31),      /* SAVE AREA NUM  9  @Z40MSAP*/
*            3 SPWSAV10 FIXED(31),      /* SAVE AREA NUM 10  @Z40MSAP*/
*            3 SPWSAV11 FIXED(31),      /* SAVE AREA NUM 11  @Z40MSAP*/
*            3 SPWSAV12 FIXED(31),      /* SAVE AREA NUM 12  @Z40MSAP*/
*            3 SPWSAV13 FIXED(31),      /* SAVE AREA NUM 13  @Z40MSAP*/
*            3 SPWSAV14 FIXED(31),      /* SAVE AREA NUM 14  @Z40MSAP*/
*            3 SPWSAV15 FIXED(31),      /* SAVE AREA NUM 15  @Z40MSAP*/
*                                       /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**       THIS IS A RECEIVING FIELD FOR A CVD INSTRUCTION, AND        **
**       THEREFORE IS ALIGNED ON A DOUBLE WORD BOUNDARY.             **
**********************************************************************/
*          2 SPWFLINU BIT(64)           /* FCB IMAGE LINE    @Z40MSAP*/
*                     BDY(DWORD),       /* NUMBER            @Z40MSAP*/
*            3 SPWFCHNU BIT(64)         /* FCB IMAGE CHANNEL @Z40MSAP*/
*                       BDY(BYTE),      /* NUMBER            @Z40MSAP*/
*              4 *        CHAR(6),      /* FILLER            @Z40MSAP*/
*              4 SPWFPAKL BIT(16),      /* FCB LINE NUMBER   @Z40MSAP*/
*                                       /* IN PACKED FORMAT  @Z40MSAP*/
*                5 SPWFPAKC BIT(16),    /* FCB CHANNEL       @Z40MSAP*/
*                                       /* NUMBER IN         @Z40MSAP*/
*                                       /* PACKED FORMAT     @Z40MSAP*/
*                  6 *        FIXED(8), /* 1ST HALF FCB      @Z40MSAP*/
*                                       /* IMAGE ENTRY       @Z40MSAP*/
*                  6 SPWFSNUM BIT(8),   /* SIGN PORTION OF   @Z40MSAP*/
*                                       /* FCB IMAGE ENTRY   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                                     /*@Z40MSAP*/
*/*********************************************************************
**       AREA FOR THE COPY OF THE CALLERS SET PRINT PARAMETER LIST   **
**********************************************************************/
*
*          2 SPWSPP   CHAR(48),         /* COPY OF SPP KEY 5 @Z40MSAP*/
*
*/*********************************************************************
**       SUBPOOL NUMBER AND LENGTH FOR USER KEY SECTION OF THE       **
**       SET PRINT WORKAREA GOTTEN IN USER KEY. THIS INFORMATION     **
**       WILL BE USED TO FREEMAIN THIS AREA AT THE PROPER TIME.      **
**********************************************************************/
*
*          2 SPWUKSNL PTR(31),          /* THE GETMAIN       @Z40MSAP*/
*                                       /* SUBPOOL NUMBER    @Z40MSAP*/
*                                       /* AND LENGTH FOR    @Z40MSAP*/
*                                       /* THE SET PRINT     @Z40MSAP*/
*                                       /* WORKAREA GOTTEN   @Z40MSAP*/
*                                       /* IN USER KEY       @Z40MSAP*/
*            3 SPWUKSN  FIXED(8),       /* SUBPOOL NUMBER    @Z40MSAP*/
*            3 SPWUKLTH FIXED(24),      /* LENGTH            @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       SAVED SUBPOOL NUMBER AND LENGTH FOR KEY 5 SECTION OF        **
**       SET PRINT WORK AREA.                                        **
**                                                                   **
**********************************************************************/
*
*          2 SPWK5SNL PTR(31),          /* THE GETMAIN       @Z40MSAP*/
*                                       /* SUBPOOL NUMBER    @Z40MSAP*/
*                                       /* AND LENGTH FOR    @Z40MSAP*/
*                                       /* THE SET PRINT     @Z40MSAP*/
*                                       /* WORKAREA GOTTEN   @Z40MSAP*/
*                                       /* IN KEY 5          @Z40MSAP*/
*            3 SPWK5SN  FIXED(8),       /* SUBPOOL NUMBER    @Z40MSAP*/
*            3 SPWK5LTH FIXED(24),      /* LENGTH            @Z40MSAP*/
*/*********************************************************************
**      PUT ANY NEW REQUIREMENTS FOR SPACE IN FRONT OF THIS MESSAGE  **
**********************************************************************/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**     THIS IS THE WORK AREA FOR THE SET PRINT MODULES COMPLIERS     **
**                                                                   **
**********************************************************************/
*                                       /*                   @Z40MSAP*/
*          2 SPWMODWK CHAR(20);         /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       PRINTER CCW OP-CODES.                                       **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWNOP   BIT(8)                /* NO OPERATION      @Z40MSAP*/
*                 CONSTANT('03'X),      /*                   @Z40MSAP*/
*        SPWSENSE BIT(8)                /* SENSE I/O         @Z40MSAP*/
*                 CONSTANT('04'X),      /*                   @Z40MSAP*/
*        SPWWRTSP BIT(8)                /* PRINT, SPACE 1    @Z40MSAP*/
*                 CONSTANT('09'X),      /*                   @Z40MSAP*/
*        SPWWRITE BIT(8)                /* WRITE COMMAND     @Z40MSAP*/
*                 CONSTANT('11'X),      /*                   @Z40MSAP*/
*        SPWUNFLD BIT(8)                /* UNFOLD COMMAND    @Z40MSAP*/
*                 CONSTANT('23'X),      /*                   @Z40MSAP*/
*        SPWFLDCD BIT(8)                /* FOLD COMMAND      @Z40MSAP*/
*                 CONSTANT('43'X),      /*                   @Z40MSAP*/
*        SPWFCBLD BIT(8)                /* LOAD FCB IMAGE    @Z40MSAP*/
*                 CONSTANT('63'X),      /*                   @Z40MSAP*/
*        SPWBLDC  BIT(8)                /* BLOCK DATA CHECK  @Z40MSAP*/
*                 CONSTANT('73'X),      /*                   @Z40MSAP*/
*        SPWSKIP0 BIT(8)                /* SKIP TO CHANNEL 0 @Z40MSAP*/
*                 CONSTANT('83'X),      /*                   @Z40MSAP*/
*        SPWSKIP  BIT(8)                /* SKIP COMMAND      @Z40MSAP*/
*                 CONSTANT('8B'X),      /*                   @Z40MSAP*/
*        SPWCNTRL BIT(8)                /* CONTROL OP CODE   @Z40MSAP*/
*                 CONSTANT('EB'X),      /*                   @Z40MSAP*/
*        SPWLDFLD BIT(8)                /* LOAD FOLD         @Z40MSAP*/
*                 CONSTANT('F3'X),      /* COMMAND           @Z40MSAP*/
*        SPWLDUCS BIT(8)                /* LOAD UCS          @Z40MSAP*/
*                 CONSTANT('FB'X);      /* COMMAND           @Z40MSAP*/
*
*
*/*********************************************************************
**                                                                   **
**       3800 PRINTER CCW OP CODES.                                  **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWSTCNR BIT(8)                /* LOAD STARTING     @Z40MSAP*/
*                 CONSTANT('23'X),      /* COPY NUMBER       @Z40MSAP*/
*        SPWLGCM  BIT(8)                /* LOAD GRAPHIC      @Z40MSAP*/
*                 CONSTANT('25'X),      /* CHARACTER MODULE  @Z40MSAP*/
*        SPWLCMOD BIT(8)                /* LOAD COPY MODIFY  @Z40MSAP*/
*                 CONSTANT('35'X),      /* RECORD            @Z40MSAP*/
*        SPWINIT  BIT(8)                /* INITALIZE PRINTER @Z40MSAP*/
*                 CONSTANT('37'X),      /* OP CODE           @Z40MSAP*/
*        SPWLFOVL BIT(8)                /* LOAD FORMS        @Z40MSAP*/
*                 CONSTANT('43'X),      /* OVERLAY OP CODE   @Z40MSAP*/
*        SPWSLTT0 BIT(8)                /* SELECT TRANSLATE  @Z40MSAP*/
*                 CONSTANT('47'X),      /* TABLE 0           @Z40MSAP*/
*        SPWLWCGM BIT(8)                /* LOAD WCGM         @Z40MSAP*/
*                 CONSTANT('53'X),      /* OP CODE           @Z40MSAP*/
*        SPWSLTT1 BIT(8)                /* SELECT TRANSLATE  @Z40MSAP*/
*                 CONSTANT('57'X),      /* TABLE 1           @Z40MSAP*/
*        SPWSLTT2 BIT(8)                /* SELECT TRANSLATE  @Z40MSAP*/
*                 CONSTANT('67'X),      /* TABLE 2           @Z40MSAP*/
*        SPWSLTT3 BIT(8)                /* SELECT TRANSLATE  @Z40MSAP*/
*                 CONSTANT('77'X),      /* TABLE 3           @Z40MSAP*/
*        SPWTTLOD BIT(8)                /* LOAD TRANSLATE    @Z40MSAP*/
*                 CONSTANT('83'X),      /* TABLE OP CODE     @Z40MSAP*/
*        SPWCLRPT BIT(8)                /* CLEAR PRINT       @Z40MSAP*/
*                 CONSTANT('87'X);      /* OP CODE           @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       SET PRINT ERROR RETURN CODES. THESE CODES WILL BE           **
**       PLACED IN THE PROPER LOCATION IN REGISTER 15, TO            **
**       INDICATE THE ERROR CONDITION THAT HAS OCCURED.              **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWSUCCP BIT(8)                /* SUCCESSFUL        @Z40MSAP*/
*                 CONSTANT('00'X),      /* COMPLETION        @Z40MSAP*/
*        SPWIMNO  BIT(8)                /* IMAGE NOT FOUND   @Z40MSAP*/
*                 CONSTANT('04'X),      /*                   @Z40MSAP*/
*        SPWBLDLP BIT(8)                /* BLDL PERMANENT    @Z40MSAP*/
*                 CONSTANT('08'X),      /* I/O ERROR         @Z40MSAP*/
*        SPWLOADP BIT(8)                /* LOAD PERMANENT    @Z40MSAP*/
*                 CONSTANT('0C'X),      /* I/O ERROR         @Z40MSAP*/
*        SPWREADP BIT(8)                /* READ PERMANENT    @Z40MSAP*/
*                 CONSTANT('10'X),      /* I/O ERROR         @Z40MSAP*/
*        SPWFCBV  BIT(8)                /* WRONG FCB IMAGE   @Z40MSAP*/
*                 CONSTANT('14'X),      /*                   @Z40MSAP*/
*        SPWNOOP  BIT(8)                /* NO OPERATION      @Z40MSAP*/
*                 CONSTANT('18'X),      /* PERFORMED         @Z40MSAP*/
*        SPWUCERR BIT(8)                /* NOP, PREVIOUS     @Z40MSAP*/
*                 CONSTANT('1C'X),      /* UNCORRECTIABLE    @Z40MSAP*/
*                                       /* ERROR             @Z40MSAP*/
*        SPWSPACE BIT(8)                /* INSUFFICIENT      @Z40MSAP*/
*                 CONSTANT('20'X),      /* SPACE             @Z40MSAP*/
*        SPWIMLIB BIT(8)                /* IMAGE LIBRARY CAN @Z40MSAP*/
*                 CONSTANT('24'X),      /* NOT BE OPENED     @Z40MSAP*/
*        SPWFOVLF BIT(8)                /* CAN NOT LOAD      @Z40MSAP*/
*                 CONSTANT('28'X),      /* FORMS OVERLAY     @Z40MSAP*/
*                                       /* FRAME             @Z40MSAP*/
*        SPWCANCL BIT(8)                /* OPERATOR          @Z40MSAP*/
*                 CONSTANT('2C'X),      /* CANCELED          @Z40MSAP*/
*        SPWMCGM  BIT(8)                /* TOO MANY CGMS     @Z40MSAP*/
*                 CONSTANT('30'X),      /* REQUESTED         @Z40MSAP*/
*        SPWTRCIN BIT(8)                /* COPY MOD TRC      @Z40MSAP*/
*                 CONSTANT('34'X),      /* FIELD INVALID     @Z40MSAP*/
*        SPWEODSR BIT(8)                /* ERROR WHILE       @Z40MSAP*/
*                 CONSTANT('38'X),      /* ISSUING EODS      @Z40MSAP*/
*        SPWNOBR  BIT(8)                /* NO BURSTER/SHEET  @Z40MSAP*/
*                 CONSTANT('3C'X),      /* STACKER FEATURE   @Z40MSAP*/
*                                       /* INSTALLED         @Z40MSAP*/
*        SPWPIOER BIT(8)                /* A PERMENT I/O     @Z40MSAP*/
*                 CONSTANT('40'X),      /* ERROR HAS OCCURED @Z40MSAP*/
*        SPWNOCGM BIT(8)                /* CGM NOT SPECIFIED @Z40MSAP*/
*                 CONSTANT('44'X);      /* IN CHARACTER      @Z40MSAP*/
*                                       /* ARRANGEMENT TABLE @Z40MSAP*/
*                                       /* TRAILER           @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       SET PRINT 3800 REASON CODES. THESE CODES WILL APPEAR IN     **
**       REGISTER 0, WHEN AN ERROR CONDITION IS RETURNED.            **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWTRTBL BIT(8)                /* TRANSLATE TABLE   @Z40MSAP*/
*                 CONSTANT('04'X),      /*                   @Z40MSAP*/
*        SPWCPMOD BIT(8)                /* COPY MODIFY       @Z40MSAP*/
*                 CONSTANT('08'X),      /* RECORD            @Z40MSAP*/
*        SPWCPNR  BIT(8)                /* COPY NUMBER       @Z40MSAP*/
*                 CONSTANT('0C'X),      /*                   @Z40MSAP*/
*        SPWGCMR  BIT(8)                /* GRAPHIC CHARACTER @Z40MSAP*/
*                 CONSTANT('10'X),      /* MODULE RECORD     @Z40MSAP*/
*        SPWFOSEQ BIT(8)                /* FORMS OVERLAY     @Z40MSAP*/
*                 CONSTANT('14'X),      /* SEQUENCE CONTROL  @Z40MSAP*/
*                                       /* RECORD            @Z40MSAP*/
*        SPWFOVL  BIT(8)                /* FORMS OVERLAY     @Z40MSAP*/
*                 CONSTANT('18'X),      /* FEATURE           @Z40MSAP*/
*        SPWCGMR  BIT(8)                /* CHARACTER         @Z40MSAP*/
*                 CONSTANT('1C'X),      /* GENETATION MODULE @Z40MSAP*/
*        SPWFCBRC BIT(8)                /* FORMS CONTROL     @Z40MSAP*/
*                 CONSTANT('20'X);      /* BUFFER            @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       COMMON SET PRINT CONSTANTS                                  **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWALG   BIT(8)                /* ALIGN MESSAGE     @Z40MSAP*/
*                 CONSTANT('FF'X),      /* RETRY             @Z40MSAP*/
*        SPWBLDLN PTR(16)               /* BLDL ENTRY        @Z40MSAP*/
*                 CONSTANT(64),         /* LENGTH            @Z40MSAP*/
*        SPWCC    BIT(8)                /* COMMAND CHAINING  @Z40MSAP*/
*                 CONSTANT('40'X),      /* BIT               @Z40MSAP*/
*        SPWCCWVR BIT(8)                /* VERIFY ONLY       @Z40MSAP*/
*                 CONSTANT('0F'X),      /*                   @Z40MSAP*/
*        SPWDEIB1 BIT(8)                /* USED TO DECREMENT @Z40MSAP*/
*                 CONSTANT('01'X),      /* INDEXES BY 1      @Z40MSAP*/
*        SPWENTVR BIT(8)                /* ENTRY FOR         @Z40MSAP*/
*                 CONSTANT('1F'X),      /* VERIFY            @Z40MSAP*/
*        SPWE1SIZ PTR(16)               /* TRANSLATE TABLE   @Z40MSAP*/
*                 CONSTANT(288),        /* ENTRY SIZE        @Z40MSAP*/
*        SPWFOLD  BIT(8)                /* FOLD SPECIFIED    @Z40MSAP*/
*                 CONSTANT('40'X),      /*                   @Z40MSAP*/
*        SPWHIC12 FIXED(8)              /* USED TO SEE WHEN  @Z48MSAP*/
*                 CONSTANT(12),         /* CONSECTIVE MIXED  @Z48MSAP*/
*                                       /* BYTES IN A FCB    @Z48MSAP*/
*                                       /* IMAGE EQUAL       @Z48MSAP*/
*                                       /* HALF AN INCH      @Z48MSAP*/
*        SPWHIC48 FIXED(8)              /* FACTOR OF 48      @Z48MSAP*/
*                 CONSTANT(48),         /* USED TO CONVERT   @Z48MSAP*/
*                                       /* A FCB IMAGE BYTE  @Z48MSAP*/
*                                       /* LPI VALUE TO      @Z48MSAP*/
*                                       /* TWENTY-FOURTHS    @Z48MSAP*/
*        SPWHI192 FIXED(8)              /* FACTOR OF 192     @Z48MSAP*/
*                 CONSTANT(192),        /* USED TO CONVERT   @Z48MSAP*/
*                                       /* A FCB IMAGE BYTE  @Z48MSAP*/
*                                       /* LPI VALUE TO      @Z48MSAP*/
*                                       /* TWENTY-FOURTHS    @Z48MSAP*/
*        SPWIMCLO BIT(8)                /* IMAGELIB NOT      @Z40MSAP*/
*                 CONSTANT('FF'X),      /* OPEN              @Z40MSAP*/
*        SPWINIB1 BIT(8)                /* USED TO INCREMENT @Z40MSAP*/
*                 CONSTANT('01'X),      /* INDEXES BY 1      @Z40MSAP*/
*        SPWLNGTA FIXED(15)             /* 3800 WORKAREA     @Z40MSAP*/
*                 CONSTANT(156),        /* SIZE              @Z40MSAP*/
*        SPWLNGTH FIXED(15)             /* WORKAREA SIZE     @Z40MSAP*/
*                 CONSTANT(92),         /*                   @Z40MSAP*/
*        SPWMAXCH PTR(8)                /* MAX NUMBER OF     @Z40MSAP*/
*                 CONSTANT(4),          /* TRANSLATE TABLES  @Z40MSAP*/
*        SPWNFCBL BIT(8)                /* NO FCB LOAD       @Z40MSAP*/
*                 CONSTANT('40'X),      /*                   @Z40MSAP*/
*        SPWOKCC  BIT(8)                /* I/O COMPLETED OK  @Z40MSAP*/
*                 CONSTANT('7F'X),      /*                   @Z40MSAP*/
*        SPWOVLAP BIT(8)                /* LOAD OVERLAPPED   @Z40MSAP*/
*                 CONSTANT('20'X),      /*                   @Z40MSAP*/
*        SPWPOOL  PTR(8)                /* SUBPOOL FOR       @Z40MSAP*/
*                 CONSTANT(230),        /* USER KEY CORE     @Z40MSAP*/
*        SPWRDLN  PTR(8)                /* LENGTH OF NAME    @Z40MSAP*/
*                 CONSTANT(8),          /* FIELD FOR RECORDS @Z40MSAP*/
*                                       /* PASSED IN CORE    @Z40MSAP*/
*        SPWRPVER BIT(8)                /* OPERATOR          @Z40MSAP*/
*                 CONSTANT('10'X),      /* REQUESTED VERIFY  @Z40MSAP*/
*        SPWSILI  BIT(8)                /* SILI BIT          @Z40MSAP*/
*                 CONSTANT('20'X),      /*                   @Z40MSAP*/
*        SPWTTNAM CHAR(4)               /* 1ST 4 CHARACTERS  @Z40MSAP*/
*                 CONSTANT('XTB1'),     /* OF TRANSLATE      @Z40MSAP*/
*                                       /* TABLE NAME        @Z40MSAP*/
*        SPWUCS2C CHAR(1)               /* CHARACTER '2'     @Z40MSAP*/
*                 CONSTANT('2'),        /* FOR UCS2          @Z40MSAP*/
*                                       /* MEMBER NAME       @Z40MSAP*/
*        SPWVERIF BIT(8)                /* VERIFY            @Z40MSAP*/
*                 CONSTANT('10'X),      /* SPECIFIED         @Z40MSAP*/
*        SPWXLATC BIT(16)               /* ATTRIBUTES FOR    @Z40MSAP*/
*                 CONSTANT('C378'X),    /* XCTL LIST         @Z40MSAP*/
*        SPWXLNMC CHAR(6)               /* MODULE NAME FOR   @Z40MSAP*/
*                 CONSTANT('IGG081'),   /* XCTL LIST         @Z40MSAP*/
*        SPW5POOL PTR(8)                /* SUBPOOL FOR       @Z40MSAP*/
*                 CONSTANT(230),        /* KEY 5 CORE        @Z40MSAP*/
*        SPW6LNE  CHAR(2)               /* SIX LINES/INCH    @Z40MSAP*/
*                 CONSTANT(' 6'),       /*                   @Z40MSAP*/
*        SPW8LNE  CHAR(2)               /* EIGHT LINES/INCH  @Z40MSAP*/
*                 CONSTANT(' 8'),       /*                   @Z40MSAP*/
*        SPW12LNE CHAR(2)               /* TWELVE LINES/     @Z48MSAP*/
*                 CONSTANT('12'),       /* INCH              @Z48MSAP*/
*        SPW6LPI  BIT(2)                /* USED TO TEST FOR  @Z48MSAP*/
*                 CONSTANT('00'B),      /*  6 LPI IN FCB     @Z48MSAP*/
*                                       /* IMAGE BYTES       @Z48MSAP*/
*        SPW8LPI  BIT(2)                /* USED TO TEST FOR  @Z48MSAP*/
*                 CONSTANT('01'B),      /*  8 LPI IN FCB     @Z48MSAP*/
*                                       /* IMAGE BYTES       @Z48MSAP*/
*        SPW12LPI BIT(2)                /* USED TO TEST FOR  @Z48MSAP*/
*                 CONSTANT('11'B);      /* 12 LPI IN FCB     @Z48MSAP*/
*                                       /* IMAGE BYTES       @Z48MSAP*/
*        %IF SPWESTAE = 'YES'           /* IF THIS MAPPING   @Z40MSAP*/
*                                       /* MACRO IS BEING    @Z40MSAP*/
*                                       /* INVOKED BY THE    @Z40MSAP*/
*                                       /* ESTAE ROUTINE     @Z40MSAP*/
*                                       /* (IGCT1081)        @Z40MSAP*/
*          %THEN                        /*                   @Z40MSAP*/
*            %GOTO SPW003;              /*                   @Z40MSAP*/
*          %ELSE;                       /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING STRUCTURE MAPS THE SVRB EXTENDED SAVE         **
**       AREA AS BY SET PRINT.                                       **
**                                                                   **
**********************************************************************/
*
*    DECLARE
*        1 SPRBXSV  BASED(SPWRSVR),     /*                   @Z40MSAP*/
*          2 SPRMSG   PTR(31),          /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* MESSAGE CSECT     @Z40MSAP*/
*          2 SPRIDCBA PTR(31),          /* SYS1.IMAGELIB     @Z40MSAP*/
*                                       /* DCB ADDRESS       @Z40MSAP*/
*          2 SPREXIT  PTR(31),          /* EXIT PROLOG       @Z40MSAP*/
*            3 SPRREG13 PTR(31),        /* SAVE AREA FOR     @Z40MSAP*/
*                                       /* REGISTER 13       @Z40MSAP*/
*          2 SPRKEY   CHAR(1),          /* USER KEY          @Z40MSAP*/
*          2 SPRINDIC BIT(8),           /* FLAG BYTE         @Z40MSAP*/
*            3 SPRCNTRL BIT(1),         /* CONTROL BLOCK     @Z40MSAP*/
*                                       /* ROUTINE ENTERED   @Z40MSAP*/
*            3 SPRTRCNS BIT(1),         /* GETMAIN           @Z40MSAP*/
*                                       /* UNSUCCESSFUL      @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*          2 SPRNIOBS CHAR(1),          /* NUMBER OF IOBS    @Z40MSAP*/
*          2 *        CHAR(1),          /*                   @Z40MSAP*/
*          2 SPRBLDLA PTR(31),          /* ADDRESS OF BLDL   @Z40MSAP*/
*                                       /* PARAMETER LIST    @Z40MSAP*/
*          2 SPRIOBSV PTR(31),          /* ADDRESS OF IOB    @Z40MSAP*/
*                                       /* ALTERED BY        @Z40MSAP*/
*                                       /* IGC0008A          @Z40MSAP*/
*          2 SPRDCBBG PTR(31),          /* BEGINING ADDRESS  @Z40MSAP*/
*                                       /* OF DCB            @Z40MSAP*/
*          2 SPRGETMN PTR(31),          /* ADDRESS OF GTRACE @Z40MSAP*/
*                                       /* BUFFER            @Z40MSAP*/
*          2 SPRELIST CHAR(16),         /* ESTAE LIST        @Z40MSAP*/
*            3 SPRTRACE CHAR(8),        /* GTRACE LIST       @Z40MSAP*/
*              4 SPRDCBLN CHAR(1),      /* LENGTH OF DCB     @Z40MSAP*/
*              4 SPRDCBOF CHAR(1),      /* OFFSET FROM       @Z40MSAP*/
*                                       /* 'LOCATION 0' OF   @Z40MSAP*/
*                                       /* DCB TO WHERE      @Z40MSAP*/
*                                       /* DCB STARTS        @Z40MSAP*/
*            3 *        CHAR(8);        /*                   @Z40MSAP*/
*%SPW003:;                              /*                   @Z40MSAP*/
*        %IF SPW3800 ^= 'YES'           /* IF THIS MAPPING   @Z40MSAP*/
*          %THEN                        /* MACRO IS NOT      @Z40MSAP*/
*                                       /* BEING USED FOR A  @Z40MSAP*/
*                                       /* 3800 DEVICE, SKIP @Z40MSAP*/
*                                       /* THE FOLLOWING     @Z40MSAP*/
*                                       /* SECTION           @Z40MSAP*/
*            %GOTO SPW005;              /*                   @Z40MSAP*/
*          %ELSE;                       /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS AREA IS CREATED FOR, AND ONLY USED BY THE 3800         **
**       SET PRINT PROCESSING MODULES (IGG08110, IGG08111,           **
**       IGG08112, IGG08113, IGG08114, AND IGG08115).                **
**                                                                   **
**********************************************************************/
*
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING ARRAY OF STRUCTURES MAPS THE SET PRINT        **
**       TRANSLATE TABLE ENTRIES.                                    **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWE1(4) CHAR(288)             /* ARRAY FOR         @Z40MSAP*/
*                 BASED(SPWTWAD1),      /* TRANSLATE TABLES  @Z40MSAP*/
*
*
*        1 SPWTT    CHAR(288)           /* TRANSLATE TABLE   @Z40MSAP*/
*                   BASED(SPWTWAD1),    /*                   @Z40MSAP*/
*          2 SPPTTHDR CHAR(8),          /* HEADER SECTION    @Z40MSAP*/
*            3 SPWTTID  CHAR(4),        /* TRANSLATE TABLE   @Z40MSAP*/
*                                       /* ID                @Z40MSAP*/
*            3 *        CHAR(4),        /* FILLER            @Z40MSAP*/
*          2 SPWXLAT  CHAR(280),        /* TRANSLATE TABLE   @Z40MSAP*/
*                                       /* BASE SECTION      @Z40MSAP*/
*            3 SPWTRANS CHAR(256),      /* TRANSLATE TABLE   @Z40MSAP*/
*              4 SPWTTBYT(256) BIT(8),  /* ARRAY OF          @Z40MSAP*/
*                                       /* TRANSLATE TABLE   @Z40MSAP*/
*                                       /* BYTES             @Z40MSAP*/
*            3 SPWTRAIL CHAR(24),       /* TRAILER           @Z40MSAP*/
*              4 SPWTRL1(4) PTR(16)     /* FIRST ARRAY OF    @Z40MSAP*/
*                           BDY(BYTE),  /* THE TRAILER       @Z40MSAP*/
*                5 SPWCGM   PTR(8),     /* CGM ID FIELD      @Z40MSAP*/
*                5 SPWWCGM  PTR(8),     /* WCGM NUMBER FIELD @Z40MSAP*/
*              4 SPWGRAF(4) CHAR(4);    /* ARRAY OF GCM      @Z40MSAP*/
*                                       /* NAMES             @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING STRUCTURE MAPS THE HEADER SECTION OF THE      **
**       IMAGE ENTRY FOR THE 3800 DEVICE.                            **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        1 SPWIMOD  BASED,              /*                   @Z40MSAP*/
*          2 SPWIMODH CHAR(8),          /* HEADER SECTION OF @Z40MSAP*/
*            3 SPWIMODN CHAR(4),        /* IMAGE NAME FIELD  @Z40MSAP*/
*            3 SPWIMODR FIXED(16)       /* RESERVED AREA     @Z40MSAP*/
*                       BDY(BYTE),      /*                   @Z40MSAP*/
*            3 SPWIMODL FIXED(16)       /* LENGTH OF IMAGE   @Z40MSAP*/
*                       BDY(BYTE),      /*                   @Z40MSAP*/
*          2 SPWIMODB CHAR(8);          /* BASE SECTION OF   @Z40MSAP*/
*                                       /* THE IMAGE         @Z40MSAP*/
*
*
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING STRUCTURE MAPS THE FCB IMAGE ENTRY FOR        **
**       THE 3800 DEVICE.                                            **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        1 SPWFCBIE BIT(8)              /* FCB IMAGE ENTRY   @Z40MSAP*/
*                   BASED,              /*                   @Z40MSAP*/
*          2 *        BIT(2),           /* NOT USED          @Z48MSAP*/
*          2 SPWFCBLP BIT(2),           /* 00 =  6 LINES PER @Z48MSAP*/
*                                       /* INCH              @Z48MSAP*/
*                                       /* 01 =  8 LINES PER @Z48MSAP*/
*                                       /* INCH              @Z48MSAP*/
*                                       /* 11 = 12 LINES PER @Z48MSAP*/
*                                       /* INCH              @Z48MSAP*/
*          2 SPWFCBCH BIT(4);           /* CHANNEL NUMBER    @Z40MSAP*/
*        %IF SPWESTAE ^= 'YES'          /* IF THIS MAPPING   @Z40MSAP*/
*          %THEN                        /* MACRO IS BEING    @Z40MSAP*/
*                                       /* INVOKED BY THE    @Z40MSAP*/
*                                       /* ESTAE ROUTINE     @Z40MSAP*/
*                                       /* (IGCT1081)        @Z40MSAP*/
*                                       /* PERFORM THE       @Z40MSAP*/
*                                       /* FOLLOWING         @Z40MSAP*/
*                                       /* INSTRUCTIONS      @Z40MSAP*/
*                                       /* THEN EXIT THIS    @Z40MSAP*/
*                                       /* MAPPING MACRO     @Z40MSAP*/
*            %GOTO SPW004;              /*                   @Z40MSAP*/
*          %ELSE;                       /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING STRUCTURE MAPS THE SVRB EXTENDED SAVE         **
**       AREA AS USED BY THE ESTAE ROUTINE OF SET PRINT.             **
**                                                                   **
**********************************************************************/
*
*    DECLARE
*        1 SPRBXSV  DEF(RBEXSAVE),      /*                   @Z40MSAP*/
*          2 SPRMSG   PTR(31),          /* ADDRESS OF THE    @Z40MSAP*/
*                                       /* MESSAGE CSECT     @Z40MSAP*/
*          2 SPRIDCBA PTR(31),          /* SYS1.IMAGELIB     @Z40MSAP*/
*                                       /* DCB ADDRESS       @Z40MSAP*/
*          2 SPREXIT  PTR(31),          /* EXIT PROLOG       @Z40MSAP*/
*            3 SPRREG13 PTR(31),        /* SAVE AREA FOR     @Z40MSAP*/
*                                       /* REGISTER 13       @Z40MSAP*/
*          2 SPRKEY   CHAR(1),          /* USER KEY          @Z40MSAP*/
*          2 SPRINDIC BIT(8),           /* FLAG BYTE         @Z40MSAP*/
*            3 SPRCNTRL BIT(1),         /* CONTROL BLOCK     @Z40MSAP*/
*                                       /* ROUTINE ENTERED   @Z40MSAP*/
*            3 SPRTRCNS BIT(1),         /* GETMAIN           @Z40MSAP*/
*                                       /* UNSUCCESSFUL      @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*            3 *        BIT(1),         /* UNUSED FLAG BIT   @Z40MSAP*/
*          2 SPRNIOBS CHAR(1),          /* NUMBER OF IOBS    @Z40MSAP*/
*          2 *        CHAR(1),          /*                   @Z40MSAP*/
*          2 SPRBLDLA PTR(31),          /* ADDRESS OF BLDL   @Z40MSAP*/
*                                       /* PARAMETER LIST    @Z40MSAP*/
*          2 SPRIOBSV PTR(31),          /* ADDRESS OF IOB    @Z40MSAP*/
*                                       /* ALTERED BY        @Z40MSAP*/
*                                       /* IGC0008A          @Z40MSAP*/
*          2 SPRDCBBG PTR(31),          /* BEGINING ADDRESS  @Z40MSAP*/
*                                       /* OF DCB            @Z40MSAP*/
*          2 SPRGETMN PTR(31),          /* ADDRESS OF GTRACE @Z40MSAP*/
*                                       /* BUFFER            @Z40MSAP*/
*          2 SPRELIST CHAR(16),         /* ESTAE LIST        @Z40MSAP*/
*            3 SPRTRACE CHAR(8),        /* GTRACE LIST       @Z40MSAP*/
*              4 SPRDCBLN CHAR(1),      /* LENGTH OF DCB     @Z40MSAP*/
*              4 SPRDCBOF CHAR(1),      /* OFFSET FROM       @Z40MSAP*/
*                                       /* 'LOCATION 0' OF   @Z40MSAP*/
*                                       /* DCB TO WHERE      @Z40MSAP*/
*                                       /* DCB STARTS        @Z40MSAP*/
*            3 *        CHAR(8);        /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS SECTION DECLARES ALL OF THE POINTERS FOR THE SET       **
**       PRINT WORK AREA REQUIRED BY THE ESTAE MODULE (IGCT1081)     **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWUCORE PTR(31)               /* PTR SET PRINT     @Z40MSAP*/
*                 DEFINED(SPWWKADR),    /* WORKAREA          @Z40MSAP*/
*        SPW5CORE PTR(31)               /* PTR SET PRINT     @Z40MSAP*/
*                 DEFINED(SPRBLDLA);    /* WORKAREA          @Z40MSAP*/
*                                       /* (IN KEY 5)        @Z40MSAP*/
*        %GOTO SPW005;                  /*                   @Z40MSAP*/
*%SPW004:;                              /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THE FOLLOWING STRUCTURE MAPS THE FIRST FOUR SENSE           **
**       BYTES FOR THE 3800 PRINTER.                                 **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        1 SPWSENBY CHAR(4)             /* FIRST FOUR BYTES  @Z40MSAP*/
*                   DEF(SPWFFSB),       /* SENSE BYTES FOR   @Z40MSAP*/
*                                       /* THE 3800 PRINTER  @Z40MSAP*/
*          2 *        CHAR(3),          /* FILLER            @Z40MSAP*/
*          2 SPWSENB3 CHAR(1),          /* FOURTH SENSE BYTE @Z40MSAP*/
*            3 *        BIT(3),         /* FILLER            @Z40MSAP*/
*            3 SPWSENTL BIT(1),         /* LOCATION WERE     @Z40MSAP*/
*                                       /* PAPER IS THREADED @Z40MSAP*/
*                                       /*  IF = 1, PAPER    @Z40MSAP*/
*                                       /*   IS THREADED TO  @Z40MSAP*/
*                                       /*   THE SHEET       @Z40MSAP*/
*                                       /*   STACKER         @Z40MSAP*/
*                                       /*  IF = 0, PAPER    @Z40MSAP*/
*                                       /*   IS THREADED TO  @Z40MSAP*/
*                                       /*   THE CONTINOUS   @Z40MSAP*/
*                                       /*   FORMS STACKER   @Z40MSAP*/
*            3 *        BIT(4);         /* FILLER            @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS SECTION RESTRICTS THE REGISTERS THAT ARE PASSED        **
**       BY EACH OF THE 3800 SET PRINT ROUTINES.                     **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        SPWUCORE REG(04) PTR(31)       /* PTR SET PRINT     @Z40MSAP*/
*                         RESTRICTED,   /* WORKAREA          @Z40MSAP*/
*                                       /* (IN USER KEY)     @Z40MSAP*/
*        SPWRSVR  REG(06) PTR(31)       /* POINTER TO SVRB   @Z40MSAP*/
*                         RESTRICTED,   /* + 96 (EXTENDED    @Z40MSAP*/
*                                       /* SAVE AREA)        @Z40MSAP*/
*        SPW5CORE REG(08) PTR(31)       /* PTR SET PRINT     @Z40MSAP*/
*                        RESTRICTED;    /* WORKAREA          @Z40MSAP*/
*                                       /* (IN KEY 5)        @Z40MSAP*/
*
*/*********************************************************************
**       CREATE COMMON REGISTER NAMES FOR USE BY OTHER MACROS        **
**********************************************************************/
*
*        ?AHAREG;                       /*                   @Z40MSAP*/
*
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS SECTION DECLARES ALL OF THE POINTERS USED BY THE       **
**       SPW MACRO TABLES.                                           **
**                                                                   **
**********************************************************************/
*
*    DECLARE                            /*                   @Z40MSAP*/
*        DCBPTR   PTR(31)               /* PTR USERS DCB     @Z40MSAP*/
*                 DEF(SPWADDCB),        /*                   @Z40MSAP*/
*        DEBPTR   PTR(31)               /* PTR DEB           @Z40MSAP*/
*                 DEF(SPWADDEB),        /*                   @Z40MSAP*/
*        IOBPRPTR PTR(31)               /* PTR IOB PREFIX    @Z40MSAP*/
*                 DEF(SPWADIOB),        /*                   @Z40MSAP*/
*        IOBSTPTR PTR(31)               /* PTR IOB STANDARD  @Z40MSAP*/
*                 DEF(SPWIOBST),        /* SECTION           @Z40MSAP*/
*        UCBPTR   PTR(31)               /* PTR UCB           @Z40MSAP*/
*                 DEF(SPWADUCB),        /*                   @Z40MSAP*/
*        DEBDAPTR PTR(31)               /* NON               @Z40MSAP*/
*                 BASED,                /*                   @Z40MSAP*/
*        DEBEXPTR PTR(31)               /*   USED            @Z40MSAP*/
*                 BASED,                /*                   @Z40MSAP*/
*        DEBSBPTR PTR(31)               /*     DSECT         @Z40MSAP*/
*                 BASED,                /*                   @Z40MSAP*/
*        UCBDCPTR PTR(31)               /*        POINTERS   @Z40MSAP*/
*                 BASED;                /*                   @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS INSTRUCTION WILL SET UP THE BASE POINTER FOR THE       **
**       SET PRINT PARAMETER LIST (IHASPP) MAPING MACRO.             **
**                                                                   **
**********************************************************************/
*
*        RESPECIFY (SPPARM)             /* SET UP POINTER    @Z40MSAP*/
*                  BASED(ADDR(SPWSPP)); /* TO SET PRINT      @Z40MSAP*/
*                                       /* PARAMETER LIST    @Z40MSAP*/
*                                       /* ENTRY             @Z40MSAP*/
*    @ EJECT ASSEMBLE;                  /*                   @Z40MSAP*/
*/*********************************************************************
**                                                                   **
**       THIS SECTION WILL CALL THE FOLLOWING MAPING MACROS:         **
**                                                                   **
**                IHADCBDF                                           **
**                IHADCB                                             **
**                IEZDEB                                             **
**                IEZIOB                                             **
**                IEFUCBOB                                           **
**                IHASPP                                             **
**                                                                   **
**********************************************************************/
*
*    %INCLUDE SYSLIB (IHADCBDF);        /*                   @Z40MSAP*/
*    %DSORGPS = 1;                      /*                   @Z40MSAP*/
*    %DEVDPR = 1;                       /*                   @Z40MSAP*/
*    %INCLUDE SYSLIB (IHADCB);          /*                   @Z40MSAP*/
*    %INCLUDE SYSLIB (IEZDEB);          /*                   @Z40MSAP*/
*    %INCLUDE SYSLIB (IEZIOB);          /*                   @Z40MSAP*/
*    %INCLUDE SYSLIB (IEFUCBOB);        /*                   @Z40MSAP*/
*    %INCLUDE SYSLIB (IHASPP);          /*                   @Z40MSAP*/
*%SPW005:;                              /*                   @Z40MSAP*/
./ ADD NAME=IGGSTAE
* /* MACCOMP Y-2 SC1D0/SJD48  */
* /* MACSTAT Y-2 73194/021090 */
         MACRO
&LABEL   IGGSTAE &NAMELOC
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGSTAE
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2, LEVEL 1
.*
.*01  CHANGE-ACTIVITY = AS FOLLOWS:
.*     VS2 RELEASE 02 DELETIONS
.*                                                               YM1140
.*
.*01  DESCRIPTIVE-NAME = ESTAE ROUTINE BOOTSTRAP
.*
.*01  FUNCTION = LOCATE AND ENTER TASK RECOVERY ROUTINE
.*
.*01  NOTES = SEE BELOW
.*
.*02    DEPENDENCIES = NONE
.*
.*02    REGISTER-CONVENTIONS = NO REGISTER LABELS ARE USED
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = 75 STATEMENTS
.*
.*02    PARAMETER-RECEIVED = 1
.*03      TYPE = CHARACTER STRING
.*04        LENGTH+MODE = 8 CHARACTERS
.*
.*04        VALUE = NAME OF RECOVERY ROUTINE
.*
.*02    EXTERNAL-REFERENCES = NONE
.*
.*02    DATA-AREA = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = IHASDWA
.*
.**** END OF SPECIFICATIONS ***/
         PUSH  USING
         DROP
&LABEL   LA    15,12                    CODE PASSED IF NO RTCA
         CR    15,0                     WAS AN RTCA PROVIDED
         BER   14                       NO--RETURN TO RTM
         USING SDWA,1                   YES--BASE DSECT
         STM   14,12,12(13)             SAVE REGS FOR RECOVERY RTN
         BALR  12,0                     ESTABLISH BASE FOR CONSTANTS
         USING *,12
         MVC   SDWACSCT,=CL8'&SYSECT'   STORE CSECT NAME IN RTCA
         MVC   SDWAREXN,&NAMELOC        STORE ESTAE NAME IN RTCA
         DROP  1
         L     1,16                     CVT POINTER              YM1140
         USING CVT,1                    CVT REGISTER             YM1140
         L     2,CVTLINK                ADDR OF SYS1.LINKLIB DCB YM1140
         DROP  1                                                 YM1140
         LOAD  EPLOC=&NAMELOC,DCB=(2)   LOAD RECOVERY RTN        YM1140
         LR    5,0                      SAVE ENTRY POINT ADDRESS
         DELETE EPLOC=&NAMELOC          DELETE IT
         DROP  12
         LR    15,5                     ADDRESS OF RECOVERY RTN
         L     14,12(13)                RTM RETURN ADDRESS
         LM    0,12,20(13)              RESTORE REGISTERS
         BR    15                       GO TO RECOVERY ROUTINE
         POP   USING
         MEND
./ ADD NAME=IGGSTART
 % IGGSTART: MACRO KEYS(CLEAN,USER,ENV,SDUMP);               /*YM7586*/
         ANS('DO; /*?'  MACNAME  ' '  MACKEYS  '*/');
         ANS('* /* MACCOMP Y-2 SC1D0/SJ0082                */') COL(1);
         ANS('* /* MACSTAT Y-2 78152/@ZA32859              */') COL(1);
 DCL     (REMCOL, QUITCOL) FIXED;
         REMCOL = MACRMAR-31;           /* NORMALLY COL 41           */
         QUITCOL = MACRMAR-2;           /* NORMALLY COLUMN 70        */
 DCL     (ON, STRING) CHAR;
         ON = '''1''B';
         IF CLEAN = '' THEN
            ANS('***ERROR***''CLEAN'' IS A REQUIRED KEYWORD;') COL(1);
         IF USER = '' THEN
            ANS('***ERROR***''USER'' IS A REQUIRED KEYWORD;') COL(1);
         IF SDUMP = '' THEN
            ANS('***ERROR***''SDUMP'' IS A REQUIRED KEYWORD;') COL(1);
         IF LENGTH(MACLABEL) > 0 THEN   /* IF MACRO LABEL PRESENT,   */
            ANS(MACLABEL)               /* THEN PRINT IT AS DO LABEL */
               COL(MACLMAR);            /* AT THE LEFT MARGIN        */
         ANS('/'  REPEAT('*',MACRMAR-MACLMAR-2)  '/') COL(MACLMAR);
         ANS(COMMENT(
 ' THIS ROUTINE ANALYSES FLAGS IN THE SDWA TO DETERMINE              '
            )) COL(MACLMAR);  ANS(COMMENT(
 ' WHAT TYPE OF FUNCTION TO PERFORM                                  '
            )) COL(MACLMAR);  ANS(COMMENT(
 ' THE FLAG COMBINATIONS TESTED AND THE ACTIONS TAKEN ARE SUMMARIZED '
            )) COL(MACLMAR);  ANS(COMMENT(
 ' IN THE FOLLOWING TABLE:                                           '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);  ANS(COMMENT(
 '   PREVIOUS   CAUSE OF ERROR ENTRY                               '
            )) COL(MACLMAR);  ANS(COMMENT(                   /*YM7586*/
 '  PROCESSING  MCHK/PGIO/TEXC  OTHER                              '
            )) COL(MACLMAR);  ANS(COMMENT(
 '  ___________________________________                            '
            )) COL(MACLMAR);  ANS(COMMENT(                   /*YM7586*/
 '       *EAS          C          C                                '
            )) COL(MACLMAR);  ANS(COMMENT(                   /*YM7586*/
 '       *CLUP         C          C                                '
            )) COL(MACLMAR);  ANS(COMMENT(                   /*YM7586*/
 '       *STAF         S          S                                '
            )) COL(MACLMAR); IF ENV='' THEN DO; ANS(COMMENT( /*YM7586*/
 '       *PERC         C          U                                '
            )) COL(MACLMAR);  ANS(COMMENT(                   /*YM7586*/
 '       *NRBE         C          U                                '
            )) COL(MACLMAR);  END;  ELSE DO;  ANS(COMMENT(   /*YM7586*/
 '       *PERC         C          E                                '
            )) COL(MACLMAR);  ANS(COMMENT(                   /*YM7586*/
 '       *NRBE         C          E                                '
            )) COL(MACLMAR);  END;  ANS(COMMENT(             /*YM7586*/
 '        NONE         C          U                                '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);  ANS(COMMENT(
 '       * THESE BITS ARE NOT ALL MUTUALLY EXCLUSIVE. THEY ARE       '
            )) COL(MACLMAR);  ANS(COMMENT(
 '         TESTED IN THE ORDER LISTED.                               '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);  ANS(COMMENT(
 '       * USER ABENDS ALWAYS GO TO THE CLEANRTN.                    '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);  ANS(COMMENT(
 '       FUNCTIONS TO BE PERFORMED:                                  '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);
         STRING = ' C '  CLEAN 
                  '--CLEAN UP RESOURCES AND PERCOLATE ERROR';
         STRING = STRING  REPEAT(' ',66-LENGTH(STRING));
         ANS(COMMENT(STRING)) COL(MACLMAR);
            ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);
         IF ENV ^= '' THEN DO;
            STRING = ' E '  ENV 
                    '--TEST FOR KNOWN ENVIRONMENTAL ERROR CONDITIONS,';
            STRING = STRING  REPEAT(' ',66-LENGTH(STRING));
            ANS(COMMENT(STRING)) COL(MACLMAR);
            ANS(COMMENT(
 ' AND IF FOUND, SET ERROR RETURN TO USER.                           '
            )) COL(MACLMAR);  ANS(COMMENT(
 ' IF UNKNOWN, TREAT AS U                                            '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);
         END;
         STRING = ' S '  SDUMP 
                  '--PREVIOUS RECOVERY ROUTINE FAILED.';
         STRING = STRING  REPEAT(' ',66-LENGTH(STRING));
         ANS(COMMENT(STRING)) COL(MACLMAR);
         ANS(COMMENT(
 ' TAKE A DUMP FOR IT, THEN TREAT AS C                               '
            )) COL(MACLMAR);  ANS(COMMENT(
 '                                                                   '
            )) COL(MACLMAR);
         STRING = ' U '  USER 
                  '--VALIDATE USER INPUT. IF IT IS IN ERROR,';
         STRING = STRING  REPEAT(' ',66-LENGTH(STRING));
         ANS(COMMENT(STRING)) COL(MACLMAR);
         ANS(COMMENT(
 ' TAKE PROBLEM DETERMINATION ACTIONS AND THEN CLEAN UP.             '
            )) COL(MACLMAR);  ANS(COMMENT(
 ' IF IT IS VALID, ASSUME A SYSTEM ERROR IN COVERED FUNCTION.        '
            )) COL(MACLMAR);  ANS(COMMENT(
 ' TAKE A DUMP, THEN TREAT AS C                                      '
            )) COL(MACLMAR);
         ANS('/'  REPEAT('*',MACRMAR-MACLMAR-2)  '/') COL(MACLMAR);
         ANS('IF SDWAEAS = ON')               COL(MACCOL) SKIP(2);
         ANS('/* LOWER ESTAE ALREADY DUMPED */') COL(REMCOL);
         ANS('  SDWACLUP = ON THEN')         COL(MACCOL);
         ANS('/* OR RTM SAYS CLEANUP        */') COL(REMCOL);
         ANS('GOTO '  CLEAN(1)  ';')      COL(MACCOL+3);
         ANS('/* GO CLEAN UP & GET OUT      */') COL(REMCOL);
         ANS('IF TCBCREQ = ON  THEN')       COL(MACCOL);
         ANS('/* TCB ABEND BIT IS ON @ZA32859*/') COL (REMCOL);
         ANS('GOTO '  SDUMP(1)  ';')     COL(MACCOL+3);
         ANS('/*GO TO DUMP RTN       @ZA26062*/') COL (REMCOL);
         ANS('RFY GPR15F RSTD;')          COL(MACCOL);
         ANS('/* RESTRICT WORKREG 15 ZA02517*/') COL(REMCOL);
         ANS('GPR15F = ''FFF''X;')        COL(MACCOL);
         ANS('/* SET USER ABEND MASK ZA02517*/') COL(REMCOL);
         ANS('GEN REFS(SDWACMPC,SDWAPTR)(N GPR15F,SDWACMPC-1(SDWAPTR));'
 )                                        COL(MACCOL);
         ANS('IF GPR15F ^= 0 THEN')       COL(MACCOL);
         ANS('/* IF USER ABEND CODE  ZA02517*/') COL(REMCOL);
         ANS('GOTO '  CLEAN(1)  ';')      COL(MACCOL+3);
         ANS('/* GO CLEAN UP & EXIT  ZA02517*/') COL(REMCOL);
         ANS('RFY GPR15F UNRSTD;')          COL(MACCOL);
         ANS('/* RELEASE WORKREG 15  ZA02517*/')  COL(REMCOL);
         ANS('IF SDWASTAF = ON THEN')         COL(MACCOL) SKIP(2);
         ANS('/* A LOWER LEVEL ESTAE/FRR    */') COL(REMCOL);
         ANS('GOTO '  SDUMP(1)  ';')      COL(MACCOL+3);
         ANS('/* WAS EXECUTING AND FAILED   */') COL(REMCOL);
         ANS('/* TAKE A DUMP FOR IT         */') COL(REMCOL);
         ANS('IF SDWATEXC = ON')              COL(MACCOL);   /*YM7586*/
         ANS('/* SOME NON-PROGRAM TYPE      */') COL(REMCOL);
         ANS('  SDWAPGIO = ON')              COL(MACCOL);   /*YM7586*/
         ANS('/* ERROR HAS OCCURRED         */') COL(REMCOL);
         ANS('  SDWAMCHK = ON THEN')         COL(MACCOL);   /*YM7586*/
         ANS('/* GO CLEAN UP & GET OUT      */') COL(REMCOL);
         ANS('GOTO '  CLEAN(1)  ';')      COL(MACCOL+3); /*YM7586*/
         IF ENV ^= '' THEN DO;
            ANS('IF SDWAPERC = ON')     COL(MACCOL) SKIP(2); /*YM7586*/
            ANS('/* ESTAE OR RB BELOW US       */') COL(REMCOL);
            ANS('  SDWANRBE = ON THEN')      COL(MACCOL+3); /*YM7586*/
            ANS('/* TRYING TO SAY SOMETHING    */') COL(REMCOL);
            ANS('GOTO '  ENV(1)  ';')     COL(MACCOL+6);
            ANS('/* CHECK FOR ENVIRON PROBLEMS */') COL(REMCOL);
                           END;
         ANS('GOTO '  USER(1)  ';') COL(MACCOL) SKIP(2); /*YM7586*/
         ANS('/* CHECK USER INPUT           */') COL(REMCOL);
         ANS('/'  REPEAT('*',MACRMAR-MACLMAR-2)  '/') COL(MACLMAR);
         ANS('END;') COL(MACCOL);
 % END;
./ ADD NAME=IGGSTW
*  %GOTO STWL1;
         MACRO
         IGGSTW
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGSTW
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 3 LEVEL 1/31/75
.*
.*01  DESCRIPTIVE-NAME = STOW WORK AREA
.*
.*01  FUNCTION = MAPS THE WORK AREA USED BY THE STOW MODULES
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = N/A FOR A MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = NONE
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = IHAECB, IEZIOB
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 RELEASE 2 DELETIONS
.*    VS2 RELEASE 3 DELETIONS
.*                                                              ZA01548
.*
.**** END OF SPECIFICATIONS ***/
.*/*
.*/ %STWL1: ;
* /* MACCOMP Y-2 SC1D2/SJ0082                                        */
* /* MACSTAT Y-2 75031/ZA01548                                       */
*/********************************************************************/
*/*                                                                  */
*/*      THIS MACRO MAPS THE WORK AREA USED BY THE STOW MODULES      */
*/*                                                                  */
*/*      VS2 RELEASE 3, 1/31/75, LEVEL=1                             */
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL  - A USING ON THE DSECT NAME 'STWAREA' ESTABLISHES    */
*/*               ADDRESSABILITY TO ALL SYMBOLS.                     */
*/*        PL/S - REDEFINE A BASE FOR THE STRUCTURE BEFORE           */
*/*               REFERENCING ANY SYMBOLS WITHIN IT.                 */
*/*                                                                  */
*/********************************************************************/
* %; /*
.*/ %GOTO STWL2;  /*
STWAREA  DSECT
****
****     POINTERS AND USER DATA SAVE AREA
****
STWPARM  DS    A                        ADDR OF USER SUPPLIED ENTRY
*                                       NAME (LOWER OF 2 FOR CHANGE)
STWHIGH  DS    A                        ADDR OF HIGHER OF 2 USER SUPP-
*                                       LIED ENTRY NAMES (CHANGE ONLY)
         DS    H                        RESERVED
STWOFFLW DS    H                        OFFSET TO ADD, REPLACE, OR
*                                       DELETE LOCATION IN LOW BLOCK
STWOLDNM DS    CL8                      NAME OF ENTRY BEING DELETED
STWNEWNM DS    CL8                      NAME OF NEW ENTRY
STWTTR   DS    AL3                      MEMBER'S RELATIVE ADDRESS
STWCTTRN DS    XL1                      ALIAS BIT, NUMBER OF TTRNS,
*                                       AND LENGTH OF USER DATA
STWALIAS EQU   X'80'                    THIS MEMBER NAME IS AN ALIAS
STWDATA  DS    CL62                     USER DATA FOR ENTRY
         SPACE 2
****
****     FLAG, CONDITION, AND SWITCH BYTES
****
STWFLAG1 DS    B                        FIRST FLAG BYTE
*                       BIT DEFINITIONS
*        BIT   7                        RESERVED
STWCHNG  EQU   X'80'                    CHANGE FUNCTION, USED IN COMBI-
*                                       NATION WITH STWADD AND STWDEL
STWDEL   EQU   X'40'                    DELETE FUNCTION
STWREPL  EQU   X'20'                    REPLACE FUNCTION
STWADD   EQU   X'10'                    ADD FUNCTION
STWDRYRN EQU   X'08'                    DRY RUN BEING MADE ON DIRECTORY
STWFLOW  EQU   X'04'                    USED TO CONTROL PROGRAM FLOW
STWDCBWR EQU   X'02'                    LAST DCB OPERATION WAS A WRITE
STWMERGE EQU   X'01'                    2 INPUT BLKS=1 OUTPUT   ZA01548
*
STWRTN   DS    CL1                      RETURN CODE SAVE AREA
*
STWFLGLN EQU   *-STWAREA                LENGTH OF SAVE AND FLAG AREAS
         EJECT
****
****     CONTROL BLOCKS FOR STOW'S CHANNEL PROGRAMS
****
         DS    F                        IF ALREADY ON A DBLWORD  Y02072
*                                       GO TO NEXT FULLWORD BDY  Y02072
         DS    0D                       ALIGN TO A DBLWORD BDY   Y02072
         ORG   *-4                      ORG ECB IN FRONT OF IOB  Y02072
         IHAECB  DSECT=NO
         ORG   *-16                     SET STANDARD IOB BEHIND ECB
         IEZIOB  DSECT=NO
         SPACE 2
****
****     STOW'S CHANNEL PROGRAMS
****
         ORG   IOBR+1                   PLACE CHANNEL PROGRAMS
*                                       BEHIND THE IOB SEEK FIELD
STWINCP  DS    0D                       THIS CHANNEL PROGRAM READS THE
*                                       INITIAL TWO DIRECTORY BLOCKS
STWSRCH1 DS    2F                       SEARCH ID EQUAL
STWTIC11 DS    2F                       TRANSFER CONTROL TO SEARCH ID
STWRDCT1 DS    2F                       READ COUNT
STWSRKY1 DS    XL1                      SEARCH ON KEY EQUAL OR HIGH
STWKYAD1 DS    AL3                      KEY ADDRESS
         DS    XL4                      FLAGS AND BYTE COUNT
STWTIC12 DS    2F                       TRANSFER CONTROL TO READ COUNT
STWRDAT1 DS    2F                       READ DATA
STWRCKD1 DS    2F                       READ COUNT KEY DATA
         SPACE
STWWRDCP DS    0D                       THIS CHANNEL PROGRAM WRITES
*                                       AND READS DIRECTORY BLOCKS
STWSRCH2 DS    XL1                      SEARCH ID EQUAL
STWIDAD2 DS    AL3                      ID ADDRESS
         DS    XL4                      FLAGS AND BYTE COUNT
STWTIC2  DS    2F                       TRANSFER CONTROL TO SEARCH ID
STWWRKD1 DS    XL1                      WRITE KEY AND DATA
STWWRAD2 DS    AL3                      WRITE ADDRESS
STWWFLG2 DS    B                        FLAGS
STWCMDCH EQU   X'40'                    COMMAND CHAIN TO NEXT CCW
         DS    XL3                      BYTE COUNT
STWRCKD2 DS    XL1                      READ COUNT KEY DATA
STWRDAD2 DS    AL3                      READ ADDRESS
         DS    XL4                      FLAGS AND BYTE COUNT
STWRCKD3 DS    XL1                      READ COUNT KEY DATA
STWRDAD3 DS    AL3                      READ ADDRESS
STWRDFL3 DS    XL1                      CCW FLAGS               ZA01548
         DS    XL3                      BYTE COUNT              ZA01548
STWRCKD4 DS    XL1                      READ COUNT KEY DATA     ZA01548
STWRDAD4 DS    AL3                      READ ADDRESS            ZA01548
STWRDFL4 DS    XL1                      CCW FLAGS               ZA01548
         DS    XL3                      BYTE COUNT              ZA01548
         SPACE 2
****
****     COMMAND CODE EQUATES FOR CHANNEL PROGRAMS
****
STWIDEQ  EQU   X'31'                    SEARCH ON IDENTIFIER EQUAL
STWWRKD  EQU   X'0D'                    WRITE KEY AND DATA
STWRDKD  EQU   X'8E'                    READ KEY AND DATA
STWRDCKD EQU   X'9E'                    READ COUNT, KEY, AND DATA
STWSKIP  EQU   X'10'                    SUPPRESS DATA TRANSFER  ZA01548
         SPACE 2
****
****     STOW'S INPUT - OUTPUT BUFFERS.  FOR DETAILS SEE THE
****     BUFFER DSECT.
****
STWBUF1  DS    0F                       INITIALLY CONTAINS THE FIRST
         DS    CL276                    OF TWO DIRECTORY BLOCKS READ
STWBUF2  DS    0F                       INITIALLY CONTAINS THE SECOND
         DS    CL276                    OF TWO DIRECTORY BLOCKS READ
STWBUF3  DS    0F                       INITIALLY USED AS THE FIRST
         DS    CL276                    OUTPUT BUFFER
STWBUF4  DS    0F                       TEMPORARILY USED AS 1ST SA66881
         DS    CL276                    INPUT BUFFER FOR EXCP   SA66881
STWEND   DS    0D                       END OF WORK AREA
CORESIZE EQU   STWEND-STWAREA           SIZE OF STOW'S WORK AREA
         EJECT
BUFFER   DSECT
         SPACE
***********************************************************************
****                                                               ****
****     THIS DSECT MAPS STOW'S INPUT - OUTPUT BUFFERS             ****
****                                                               ****
***********************************************************************
         SPACE
BUFCNT   DS    0CL8                     COUNT FIELD CONTAINING
*                                       ABSOLUTE DISK ADDRESS
BUFCCHHR DS    CL5                      CCHHR FIELD
BUFKDD   DS    CL3                      KEY AND DATA LENGTH
BUFKEY   DS    CL8                      KEY FIELD (HIGHEST MEMBER NAME)
BUFDATA  DS    0CL256                   DATA AREA
BUFN     DS    H                        NUMBER OF BYTES USED IN
*                                       THIS DIRECTORY BLOCK
BUFENTRY DS    CL254                    DIRECTORY ENTRIES
BUFADDR  DS    A                        USED TO CHAIN THE BUFFERS
BUFPREFX EQU   L'BUFCNT+L'BUFKEY+L'BUFN  OFFSET TO BUFFER ENTRY AREA
         SPACE 4
RBPRFX   DSECT                          RESUME RB DSECT          Y02072
         ORG   RBEXSAVE
         SPACE
***********************************************************************
****                                                               ****
****     DSECT OF THE EXTENDED SAVE AREA OF THE SVRB               ****
****                                                               ****
***********************************************************************
         SPACE
XSAREG14 DS    A                        SAVE AREA FOR REG 14     Y02072
XSASTWWA DS    A                        ADDR OF STOW WORK AREA   Y02072
* XSAESTAE ESTAE MF=L                   ESTAE LIST AREA          Y02072
XSAESTAE ESTAE MF=L                     ESTAE LIST AREA          Y02072
XSARBXLN EQU   *-RBEXSAVE,(L'RBEXSAVE-(*-RBEXSAVE))  LENGTH OF   Y02072
*                                       EXTENDED SAVE AREA USED  Y02072
*                                       BY STOW                  Y02072
         MEND ,  */
* %STWL2: ;
*
*DCL STWAREA CHAR(1072) BASED;           /* STOW WORK AREA           */
*
*
*/********************************************************************/
*/*      STRUCTURE OF THE EXTENDED SAVE AREA OF THE STOW SVRB.       */
*/********************************************************************/
*
*DCL 1 * DEFINED(RBEXSAVE),
*      2 XSAREG14 PTR(31),              /* SAVE AREA FOR REG 14      */
*      2 XSASTWWA PTR(31),              /* ADDR OF STOW WARK AREA    */
*      2 XSAESTAE CHAR(16),             /* LIST FORM OF ESTAE MACRO  */
*        3 XSAGTRAC CHAR(8),            /* LIST FORM OF GTRACE MACRO */
*        3 XSARTMAD PTR(31) BDY(BYTE);  /* SAVE AREA FOR RTM RTRN ADR*/
./ ADD NAME=IGGSWA
*%;/*
         MACRO
         IGGSWA
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGSWA
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = CHANGE LEVEL 01
.*
.*01  DESCRIPTIVE-NAME = SEGMENT WORKAREA FORMAT
.*
.*01  FUNCTION = FORMATS THE SEGMENT WORKAREA FOR BDAM VARIABLE SPANNED
.*               RECORDS
.*
.*01  NOTES = NONE
.*
.*02    DEPENDENCIES = NA
.*
.*02    PERFORMANCE = NA
.*
.*02    RESTRICTIONS = NA
.*
.*02    REGISTER-CONVENTIONS = NA
.*
.*02    PATCH-LABEL = NA
.*
.*01  MODULE-TYPE = MACRO
.*
.*02  MACRO-SIZE =  NA
.*
.*02  EXTERNAL-REFERENCES = NA
.*
.*01INNER-MACROS = NONE
.*
.*01SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*
.*             VS 2 RELEASE 2
.*
.**** END OF SPECIFICATIONS ***/
*/* MACCOMP Y-2 SC1D7/SJD48                                          */
*/* MACSTAT Y-2 73122/021160                                         */
*%GOTO SWAPLS1;                         /*                     Y02072*/
***********************************************************************
* THE FOLLOWING DSECT FORMATS THE 12-BYTE SEGMENT WORKAREA CONTROL    *
* BLOCK FOR BDAM CREATE VARIABLE SPANNED RECORDS.                     *
***********************************************************************
SWACB    DSECT
SWACBPTR DS    AL4                      PTR TO FIRST SEGMENT WORKAREA
SWACBNO  DS    H                        NUMBER OF SEGMENT WORKAREAS
SWACBLNG DS    H                        LENGTH OF SEGMENT WORKAREA
SWATTR   DS    XL4                      VOLUME TTR
SWALNG   EQU   *-SWACBPTR               END OF CONTROL BLOCK
*
*/********************************************************************/
*/*THE FOLLOWING DSECT FORMATS THE SEGMENT WORKAREA FOR BDAM CREATE  */
*/*AND BDAM VAR SPANNED RECORDS.EACH SEGMENT DATA AREA IS PRECEDED   */
*/*BY 10 BYTES OF CONTROL INFORMATION. THE DATA AREA, WHICH FOLLOWS  */
*/*BEGINS WITH A 4-BYTE BLOCK DESCRIPTOR WORD, FOLLOWED BY A 4-BYTE  */
*/*SEGMENT DESCRIPTOR WORD.A MODIFIED BDW AND DATA ARE MOVED INTO AND*/
*/*FROM THE RECORD AREA (POINTED TO IN THE SECOND WORD OF THE CONTROL*/
*/*INFO.)THE BDW CONTAINS THE LENGTH OF THE ENTIRE BLOCK SEGMENT. THE*/
*/*SDW CONTAINS THE LENGTH OF THAT SEGMENT(BDW LENGTH-4) PLUS A BIT  */
*/*INDICATING IF THIS IS THE FIRST(01),MIDDLE(03),LAST(02),ONLY(00)  */
*/*SEGMENT IN THIS BLOCK.                                            */
*/********************************************************************/
SWA      DSECT
SWANXTPT DS    A                        POINTER TO NEXT SEGMENT
*                                       WORKAREA
SWARCDPT DS    0CL6                     RECORD AREA POINTERS
SWARAPT  DS    A                        POINTER TO THE RECORD AREA
SWAFLAG  EQU   SWARAPT                  FLAG INDICATING SPANNED RECORD
SWASPNVL EQU   X'80'                    BIT INDICATING CUR REC SPANNED
SWALAST  EQU   X'40'                    BIT INDICATING LAST SEGMENT WAS
*                                       WRITTEN (BDAM CREATE ONLY)
SWABFINC DS    CL2                      OFFSET IN RECORD AREA TO
*                                       CURRENT SEGMENT
SWACSLNG EQU   *-SWANXTPT               LENGTH OF CONTROL SECTION
SWASEGMT EQU   *                        BEGINNING OF SEGMENT
SWABDW   DS    CL4                      BLOCK DESCRIPTOR WORD
SWASDW   DS    0CL4                     SEGMENT DESCRIPTOR WORD
SWASEGLL DS    0H                       SEGMENT LENGTH (LL)
         DS    X                        FILLER
SWASAVID DS    BL1                      SAVE AREA FOR ID OF LAST BYTE
SWASEGFL DS    BL1                      SEGMENT FLAGS
         DS    X                        RESERVED
SWADATA  EQU   *                        DATA PORTION OF RECORD
         MEND
*%SWAPLS1:;                             /*                     Y02072*/
*/*                                                                  */
*/*THE FOLLOWING STRUCTURE FORMATS THE 12-BYTE SEGMENT WORKAREA CNTRL*/
*/*BLOCK FOR BDAM CREATE VARIABLE SPANNED RECORDS.                   */
*/*                                                                  */
*DCL 1 SWACB CHAR(12) BDY(WORD) BASED,  /*BEGIN SWA CONTROL BLKY02072*/
*      2 SWACBPTR PTR(31),              /*POINT TO FIRST SWA   Y02072*/
*      2 SWACBNO FIXED(16),             /*NUMBER OF SWAS       Y02072*/
*      2 SWACBLNG FIXED(16),            /*LENGTH OF EACH SWA   Y02072*/
*      2 SWATTR FIXED(32);              /*VOLUME TTR           Y02072*/
*DCL SWALNG CONSTANT(12);               /*LEN OF SWA CNTRL BLK Y02072*/
./ ADD NAME=IGGSYN
*
* %GO TO SYNL1;                         /* BILINGUAL MAPPING         */
         MACRO
         IGGSYN &DSECT=YES
.*
.*01  MODULE-NAME = IGGSYN
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 0
.*
.*01  CHANGE-ACTIVITY = 000
.*
.*01  DESCRIPTIVE-NAME = SYNADAF GENERAL REGISTERS SAVEAREA,
.*    SYNADAF/SYNADRLS MESSAGE BUFFER AND SVRB EXTENDED SAVE AREAS
.*
.*01  FUNCTION = TO FORMAT THE MESSAGE TEXT
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING
.*
.*04        VALUE = YES OR NO
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  NOTE = THERE ARE TWO MAPPING DSECTS IN THIS MACRO THE FIRST
.*    ONE IS THE GENERAL REGISTERS SAVEAREA AND THE MESSAGE BUFFER
.*    AREA AND THE SECOND ONE IS USING THE SVRB EXTENDED SAVEAREA
.*    AS A WORK AREA FOR THE SYNADAF/SYNADRLS SVC.
* %SYNL1: ;
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73138/021160                                        */
*/********************************************************************/
*/*                                                                  */
*/*  SYNADAF GENERAL REGISTERS SAVEAREA AND MESSAGE BUFFER AREA      */
*/*                                                                  */
*/*  METHODS OF ACCESS                                               */
*/*     BAL -A DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED        */
*/*          USING ON SYN GIVES ADDRESSABILITY FOR ALL SYMBOLS       */
*/*          USING ON SYNWKA GIVES ADDRESSABILITY FOR MESSAGE        */
*/*                BUFFER AREA                                       */
*/*     PL/S-RESPECIFY ON SYN GIVES ADDRESSABILITY FOR ALL SYMBOLS   */
*/*          RESPECIFY ON SYNWKA GIVES ADDRESSABILITY FOR MESSAGE    */
*/*                BUFFER AREA                                       */
*/*  NOTE = IN A PLS INCLUDE, SYNBASE MAY BE DECLARED AS DEF(LABEL)  */
*/*         TO CAUSE IT TO BE USED IN A STRUCTURE. IF SYNBASE IS     */
*/*         OMITTED THE STRUCTURE IS DECLARED AS BASED.              */
*/*                                                                  */
*/********************************************************************/
*
* %GO TO SYNL2;
         AIF   ('&DSECT' EQ 'NO').SYNNOD
SYN      DSECT                          BUFFER DEF-USER 13 POINTS HERE
         AGO   .SYNCONT
.SYNNOD  ANOP
         DS    0D
SYN      EQU   *
.SYNCONT ANOP
*
*  SYNADAF GENERAL REGISTERS SAVEAREA
*
SYNSAVE  DS    0CL72                    SAVE AREA
SYNPL1   DS    F                        USED BY PL/1 LANGUAGE PROGRAM
SYNPREV  DS    F                        ADDRESS OF PREVIOUS SAVE AREA
SYNNEXT  DS    F                        ADDRESS OF NEXT SAVE AREA
SYNGRS   DS    15F                      GENERAL REGISTER SAVE AREA
*
*  MESSAGE BUFFER AREA
*
SYNWKA   EQU   *
SYNVLFLD DS    1D                       LENGTH FIELD FOR V.L. RECORDS
SYNMSG   DS    0C                       DATA AREA
SYNREAD  DS    0CL6                     DATA AREA FOR READ
SYNRDERR DS    1F                       RETURN INFO IF READ ERROR
SYNBYTRD DS    1H                       NUMBER OF BYTES READ
SYNWAREA DS    0CL35                    WORK AREA
SYNPURG  DS    0C                       ERROR TYPE INDICATOR
SYNACMTH DS    XL1                      ACCESS METHOD INPUT CODE
         DS    CL1                      UNUSED
SYNWRKA  DS    0D                       WORK AREA
SYNWKA1  DS    1F                       WK1
SYNWKA2  DS    1F                       WK2
         DS    1F                       UNUSED
SYNWORK  DS    CL20                     WORK AREA
SYNSTART DS    CL1                      BLANK
SYNCMMA1 DS    CL1                      COMMA
SYNJOBNM DS    CL8                      JOBNAME
SYNCMMA2 DS    CL1                      COMMA
SYNSTPNM DS    CL8                      STEP NAME
SYNCMMA3 DS    CL1                      COMMA
SYNUNTID DS    CL3                      UNIT ADDRESS
SYNCMMA4 DS    CL1                      COMMA
SYNDVTYP DS    CL2                      DEVICE TYPE
SYNCMMA5 DS    CL1                      COMMA
SYNDDNM  DS    CL8                      DD NAME
SYNCMMA6 DS    CL1                      COMMA
SYNOPRTN DS    CL6                      OPERATION ATTEMPTED
SYNCMMA7 DS    CL1                      COMMA
SYNERROR DS    CL15                     ERROR DESCRIPTION
SYNCMMA8 DS    CL1                      COMMA
SYNPOS   DS    0CL14                    AREA TO UNPACK ICB SEEK ADDRESS
SYNPOSM1 DS    CL7                      UNUSED-MAGNETIC TAPE
SYNPOSM2 DS    0CL7                     AREA TO UNPACK BLOCK COUNT
*                                        FOR MAGNETIC TAPE
SYNPOSMV DS    CL6                      UNPACK VALUE
SYNPOSMS DS    CL1                      SIGN BYTE IN UNPACK FORMAT
SYNCMMA9 DS    CL1                      COMMA
SYNACCSS DS    CL5                      ACCESS METHOD TYPE
SYNBLNK2 DS    CL1                      BLANK
SYNMSGLN EQU   *-SYNMSG                 MESSAGE LENGTH
SYNPRMR1 DS    F                        PARAMETER REGISTER SAVE AREA
SYNPRMR2 DS    F                        PARAMETER REGISTER SAVE AREA
SYNEND   DS    0F                       END OF IGGSYN
SYNLGTH  EQU   SYNEND-SYN               LENGTH FOR GETMAIN
         AGO   .SYNSVRB
*
* %SYNL2: ;
*        % IF SYNBASE = ''
*        %    THEN
*        %      SYNBASE = 'BASED';
*
*  DCL 1 SYN                SYNBASE  ,  /* BUFF DEF-USER 13 PTS HERE */
*        2 SYNSAVE                   ,  /* SAVE AREA                 */
*          3 SYNPL1         PTR(31)  ,  /* USED BY PL/1 LANGUAGE PGM */
*          3 SYNPREV        PTR(31)  ,  /* ADDR OF PREVIOUS SAVEAREA */
*          3 SYNNEXT        PTR(31)  ,  /* ADDR OF NEXT SAVE AREA    */
*          3 SYNGRS         CHAR(60) ,  /* GENERAL REGS SAVE AREA    */
*        2 SYNWKA                    ,  /* WORK AREA                 */
*          3 SYNVLFLD       CHAR(8)  BDY(DWORD), /* LGTH FIELD       */
*          3 SYNMSG                  ,  /* DATA AREA                 */
*            4 SYNREAD      CHAR(6)  BDY(WORD) , /*DATA AREA FOR READ*/
*              5 SYNRDERR   PTR(31)  ,  /* RETURN INFO IF READ ERROR */
*              5 SYNBYTRD   FIXED(15),  /* NUMBERS OF BYTES READ     */
*            4 SYNWAREA     CHAR(35) ,  /* WORK AREA                 */
*              5 SYNPURG    CHAR(0)  ,  /* ERROR TYPE INDICATOR      */
*              5 SYNACMTH   PTR(8)   ,  /* ACCESS METHOD INPUT CODE  */
*              5 *          CHAR(1)  ,  /* UNUSED                    */
*              5 SYNWRKA    CHAR(8)  ,  /* WORK AREA                 */
*              5 *          CHAR(4)  ,  /* UNUSED                    */
*              5 SYNWORK    CHAR(20) ,  /* WORK AREA                 */
*              5 SYNSTART   CHAR(1)  ,  /* BLANK                     */
*            4 SYNCMMA1     CHAR(1)  ,  /* COMMA                     */
*            4 SYNJOBNM     CHAR(8)  ,  /* JOBNAME                   */
*            4 SYNCMMA2     CHAR(1)  ,  /* COMMA                     */
*            4 SYNSTPNM     CHAR(8)  ,  /* STEPNAME                  */
*            4 SYNCMMA3     CHAR(1)  ,  /* COMMA                     */
*            4 SYNUNTID     CHAR(3)  ,  /* UNIT ADDRESS              */
*            4 SYNCMMA4     CHAR(1)  ,  /* COMMA                     */
*            4 SYNDVTYP     CHAR(2)  ,  /* DEVICE TYPE               */
*            4 SYNCMMA5     CHAR(1)  ,  /* COMMA                     */
*            4 SYNDDNM      CHAR(8)  ,  /* DD NAME                   */
*            4 SYNCMMA6     CHAR(1)  ,  /* COMMA                     */
*            4 SYNOPRTN     CHAR(6)  ,  /* OPERATION ATTEMPTED       */
*            4 SYNCMMA7     CHAR(1)  ,  /* COMMA                     */
*            4 SYNERROR     CHAR(15) ,  /* ERROR DESCRIPTION         */
*            4 SYNCMMA8     CHAR(1)  ,  /* COMMA                     */
*            4 SYNPOS       CHAR(14) ,  /* AREA TO UNPACK ICB ADDR   */
*              5 SYNPOSM1   CHAR(7)  ,  /* UNUSED-MAGNETIC TAPE      */
*              5 SYNPOSM2   CHAR(7)  ,  /* AREA TO UNPACK BLOCK      */
*                                       /*  COUNT FOR MAGNETIC TAPE  */
*                6 SYNPOSMV CHAR(6)  ,  /* UNPACK VALUE              */
*                6 SYNPOSMS CHAR(1)  ,  /* SIGN BYTE IN UNPACK FORMAT*/
*            4 SYNCMMA9     CHAR(1)  ,  /* COMMA                     */
*            4 SYNACCSS     CHAR(5)  ,  /* ACCESS METHOD TYPE        */
*            4 SYNBLNK2     CHAR(1)  ,  /* BLANK                     */
*          3 SYNPRMR1       PTR(31)  ,  /* PARAMETER REG SAVEAREA    */
*          3 SYNPRMR2       PTR(31)  ;  /* PARAMETER REG SAVEAREA    */
*
* %SYNMSGLN = 'LENGTH(SYNMSG)';         /* MESSAGE LENGTH            */
* %SYNLGTH  = 'LENGTH(SYN)';            /* LENGTH FOR GETMAIN        */
*
* %GO TO SYNL3;
.SYNSVRB ANOP
* %SYNL3: ;
*/********************************************************************/
*/*                                                                  */
*/*  SYNADAF AND SYNADRLS SVRB EXTENDED SAVE AREA                    */
*/*                                                                  */
*/*  METHODS OF ACCESS                                               */
*/*     BAL -USING ON RBSECT GIVES ADDRESSABILITY FOR ALL SYMBOLS    */
*/*     PL/S-RESPECIFY ON RBSECPTR GIVES ADDRESSABILITY FOR ALL      */
*/*          SYMBOLS                                                 */
*/*  NOTE                                                            */
*/*     THIS DSECT MUST BE CODED AFTER THE RB MAPPING MACRO          */
*/*                                                                  */
*/********************************************************************/
*
* %GO TO SYNL4;
RBPRFX   DSECT                          SVRB PREFIX
         ORG   RBEXSAVE                 SVRB EXTENDED SAVE AREA
SYNRETA  DS    A                        RETURN ADDRESS
SYNXCTPL DS    0XL16                    XCTL PARAMETER LIST
SYNXCTEP DS    A                        ADDRESS OF THE ENTRY PT NAME
SYNXCTLT DS    0XL12                    LIST OF PARAMETERS
SYNXCTDB DS    A                        ADDRESS OF THE DCB
SYNXCTNM DS    CL8                      ENTRY POINT NAME
         ORG   SYNXCTNM+4
SYNXCTID DS    CL1                      LOAD MODULE ID
         ORG   SYNXCTNM+8
SYNESTPL ESTAE MF=L                     PARAMETER LIST FOR ESTAE RTN
SYNESFLG DS    XL2                      ESTAE ROUTINE FLAG BYTES
SYNGTM   EQU   X'80'                    RETURN FROM GETMAIN W/O ERROR
SYNCSA   EQU   X'40'                    SUCCESSFULLY CHAINED SAVE AREAS
SYNLMC   EQU   X'20'                    MESSAGE CSECT HAS BEEN LOADED
SYNRCS   EQU   X'10'                    CALLERS SAVE AREA HAS BEEN
*                                        RESTORED SUCCESSFULLY
SYNESTAE EQU   X'08'                    ESTAE ROUTINE HAD BEEN ENTERED
SYNURKEY DS    XL1                      USER KEY
SYNUNPKA DS    CL9                      WORK AREA FOR UNPACK
SYNRBXLN EQU   *-RBEXSAVE               AMOUNT OF EXSAVE AREA IN USE
         MEND
* %SYNL4: ;
*
*  DCL 1 *                  DEF(RBEXSAVE)      , /* SVRB PREFIX      */
*        2 SYNRETA          PTR(31)  ,  /* RETURN ADDRESS            */
*        2 SYNXCTPL         CHAR(16) BDY(WORD) , /* XCTL PARAM LIST  */
*          3 SYNXCTEP       PTR(31)  ,  /* ADDR OF ENTRY POINT NAME  */
*          3 SYNXCTLT       CHAR(12) BDY(WORD) , /* LIST OF PARAM    */
*              4 SYNXCTDB   PTR(31)  , /* ADDRESS OF DCB             */
*              4 SYNXCTNM   CHAR(8)  , /* ENTRY POINT NAME           */
*                5 *        CHAR(4)  , /* PADDING                    */
*                5 SYNXCTID CHAR(1)  , /* LOAD MODULE ID             */
*                5 *        CHAR(3)  , /* PADDING                    */
*        2 SYNESTPL         CHAR(16) , /* PARAM LIST FOR ESTAE RTN   */
*        2 SYNESFLG         CHAR(2)  , /* ESTAE ROUTINE FLAG BYTES   */
*            4 SYNGTM       BIT(1)   , /* RET FR GETMAIN W/O ERROR   */
*            4 SYNCSA       BIT(1)   , /* SUCCESSFULLY CHAINED SA    */
*            4 SYNLMC       BIT(1)   , /* MSG CSECT HAS BEEN LOADED  */
*            4 SYNRCS       BIT(1)   , /* CALLERS SAVE AREA HAS BEEN */
*                                      /*  RESTORED SUCCESSFULLY     */
*            4 SYNESTAE     BIT(1)   , /* ESTAE RTN HAS BEEN ENTERED */
*            4 *            BIT(11)  , /* RESERVED                   */
*        2 SYNURKEY         CHAR(1)  , /* USER KEY                   */
*        2 SYNUNPKA         CHAR(9)  ; /* WORK AREA FOR UNPACK       */
*
* %SYNRBXLN = 'LENGTH(RBPRFX)';        /* AMT OF EXSAVE AREA IN USE  */
./ ADD NAME=IGGUSL
*%;/*
         MACRO
         IGGUSL
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IGGUSL
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = CHANGE LEVEL 01
.*
.*01  DESCRIPTIVE-NAME = UNSCHEDULED LIST FORMAT
.*
.*01  FUNCTION = FORMATS THE LIST CONTAINING IOBS WAITING FOR BUFFERS
.*
.*01  NOTES = NONE
.*
.*02    DEPENDENCIES = NA
.*
.*02    PERFORMANCE = NA
.*
.*02    RESTRICTIONS = NA
.*
.*02    REGISTER-CONVENTIONS = NA
.*
.*02    PATCH-LABEL = NA
.*
.*01  MODULE-TYPE = MACRO
.*
.*02  MACRO-SIZE =  NA
.*
.*02  EXTERNAL-REFERENCES = NA
.*
.*01INNER-MACROS = NONE
.*
.*01SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*
.*             VS2 RELEASE 2
.*
.**** END OF SPECIFICATIONS ***/
* /* MACCOMP Y-2 SC1D7/SJD48                                         */
* /* MACSTAT Y-2 73122/021160                                        */
*/********************************************************************/
*/* THE FOLLOWING DSECT FORMATS A BDAM UNSCHEDULED LIST USED WHEN    */
*/* DYNAMIC BUFFERING IS SPECIFIED IN THE DCB AND THE ADDRESS SPACE  */
*/* = VIRTUAL. ITS ADDRESS IS STORED IN DCBDYNB.  THE LIST CONSISTS  */
*/* OF A 16-BYTE HEADER AREA AND 12 OR MORE 4-BYTE FIELDS, EACH OF   */
*/* WHICH MAY CONTAIN THE ADDRESS OF AN IOB WAITING FOR A BUFFER.    */
*/* THE LIST IS A WRAP AROUND LIST.  THE FIRST IOB IS NOT NECESSARILY*/
*/* IN THE TOP SLOT, BUT THE NEXT IOB TO GET A FREED BUFFER.         */
*/********************************************************************/
*%GOTO USLPLS2;                         /*                     Y02072*/
USL      DSECT                     UNSCHEDULED LIST
USLSIZE  DS    H                   SIZE OF CURRENT LIST IN BYTES
USLSZFST EQU   64                  SIZE OF FIRST COPY OF USL
         DS    H                   UNUSED
USLBFRQT DS    0A                  PTR TO ADDR OF IOB ON TOP OF BUF Q
USLFLAGS DS    BL1                 FLAG INDICATING IF THIS CURRENT LIST
USLCURNT EQU   X'80'               IF ON, THIS IS THE CURRENT LIST
USLIOB1  DS    AL3                 3 BYTE ADDR OF IOB ON TOP OF BUF Q
USLBFRQB DS    0A                  PTR TO ADDR OF LAST IOB ON BUF Q
         DS    XL1                 UNUSED
USLIOB2  DS    AL3                 3 BYTE ADDR OF LAST IOB ON BUF Q
USLCHAIN DS    A                   PTR TO PRIOR LIST COPY
USLSLOT1 DS    A                   TOP SLOT ON QUEUE
*     *     *     *     *     *     *     *     *     *     *     *
USLSLOT  DSECT                     FORMAT OF AN IOB ADDRESS FIELD
*                                  REPRESENTING 1 SLOT IN THE USL
USLIOBA  DS    0A                  IF USED, IOB ADDR ON BOUNDARY
USLSLTFL DS    BL1                 FLAGS
USLENDL  EQU   X'80'               IF ON, SLOT IS LAST IN THE USL
USLINUSE EQU   X'40'               IF ON, SLOT IS BEING USED
USLIOBAA DS    AL3                 IF SLOT IS USED, IOB ADDR
USLNXT   EQU   *                   NEXT SLOT IN LIST
         MEND
*%USLPLS2: ;                            /*                     Y02072*/
*DCL 1 USL CHAR(64) BDY(WORD) BASED,    /* BEGINNING OF USL    Y02072*/
*      2 USLSIZE CHAR(2),               /* SIZE OF THIS USL    Y02072*/
*      2 *       CHAR(2),
*      2 USLBFRQT PTR(31),              /* PTR TO ADDR OF IOB  Y02072*/
*        3 USLFLAGS FIXED(8),           /* CURRENT LIST FLAG   Y02072*/
*        3 USLIOB1 PTR(24),             /* ADDR OF IOB ON TOP  Y02072*/
*      2 USLBFRQB PTR(31),              /* PTR TO LAST IOB     Y02072*/
*        3 *      FIXED(8),
*        3 USLIOB2 PTR(24),             /*  ADDR OF LAST IOB   Y02072*/
*      2 USLCHAIN PTR(31),              /* PTR TO PRIOR COPY   Y02072*/
*      2 USLSLOT1 PTR(31),              /* TOP SLOT ON QUEUE   Y02072*/
*      2 *    CHAR(44);                 /* REMAINDER OF LIST   Y02072*/
*DCL USLSZFST FIXED(8) CONSTANT(64);    /* SIZE OF FIRST USL   Y02072*/
*DCL USLCURNT FIXED(8) CONSTANT(128);   /* FLAG - CURRENT LIST Y02072*/
./ ADD NAME=IGGWKNCP
         MACRO
&NAME    IGGWKNCP &OPTCD=
         GBLB   &CPOPS
.*          RELEASE 23 DELETIONS/CHANGES
.*          RELEASE 22 DELETIONS/CHANGES
.*          RELEASE 21 DELETIONS/CHANGES
         AIF    (&CPOPS).NOCPOPS
&CPOPS   SETB   1
         IGGCPOPS
.NOCPOPS ANOP
&NAME    DSECT
CP1      DS     0D
         IGGCP1
         ORG    &NAME
CP2      DS     0D
         IGGCP2
         ORG  &NAME
CP8      DS    0D
         IGGCP8 OPTCD=&OPTCD
         AIF   ('&OPTCD' EQ 'V' OR '&OPTCD' EQ 'VW').SKIP10B
CP10B    DS    0D
         IGGCP10B OPTCD=&OPTCD
.SKIP10B ANOP
CP14     DS    0D
         IGGCP14 OPTCD=&OPTCD
CP15     DS    0D
         IGGCP15
CP16     DS    0D
         IGGCP16  OPTCD=&OPTCD
CP17     DS    0D
         IGGCP17 OPTCD=&OPTCD
         AIF   ('&OPTCD' EQ 'V' OR '&OPTCD' EQ 'VW').SKIP10A
CP10A    DS    0D
         IGGCP10A OPTCD=&OPTCD
.SKIP10A ANOP
         MEND
./ ADD NAME=IHAABDA
*        %GOTO ABDAPLS;                                              /*
         MACRO
         IHAABDA &DSECT=YES
*        */
*%ABDAPLS: ;
* /*******************************************************************/
* /* MACMEAN ABDA MEANS ABDUMP AREA                                  */
* /* MACCOMP Y-1 SC1CM/PZD81                                         */
* /* MACSTAT Y-1 73045/Y02705                                        */
* /* UPDATED FOR SU 33 12/76 G33SPHW                                 */
* /* APAR ZA16374 1/28/77                                            */
* /* APAR ZA25122 9/10/77                                            */
* /* IHAABDA IS A MAP OF THE WORK AREA USED BY SNAP MODULES. PRIOR   */
* /* TO OS/VS2 RELEASE 2, SNAP WAS REFERRED TO AS ABDUMP.            */
* /*******************************************************************/
*        %GOTO ABDAPPLS;    /*
ABDAREA  DSECT
         IEZBITS
ABDTCB   DS    A                       ADDRESS OF TCB FOR TASK
*                                      TO BE DISPLAYED
ABDCTCB  DS    A                       ADDRESS OF CURRENT TCB
ABDCRB   DS    A                       ADDRESS OF ABDUMPS SVRB
ABDPARMS DS    0CL24                   COPY OF ABDUMP PARAMETER LIST
ABDPID   DS    CL1                     USER SUPPLIED ID FOR DUMP
ABDFLAG  DS    B                       FLAG BYTE
APFSNAP  EQU   BIT0                    0=SNAP REQUEST
*                                      1=SVC DUMP REQUEST
APFVS2   EQU   BIT1                    0=OS/VS2 REL.1
*                                      1=OS/VS2 REL.2
APFENVS2 EQU   BIT2                    1=OS/VS2 ENHANCED SNAP   G33SPHW
APFABEND EQU   BIT3                    0=ABEND REQUEST
*                                      1=SNAP REQUEST
APFID    EQU   BIT4                    ID SPECIFIED
APFTCB   EQU   BIT5                    TCB ADDRESS SPECIFIED BY USER
APFSNAPP EQU   BIT6                    STORAGE LIST PROVIDED
APFHDR   EQU   BIT7                    1=STORAGE HEADER SPECIFIED
*                                                               G33SPHW
         DS    H                       RESERVED
APFSDATA DS    B                       SDATA OPTIONS
APFNUC   EQU   BIT0                    DUMP PSA, NUCLEUS, LSQA, SQA
APFSQA   EQU   BIT1                    DUMP SQA
APFLSQA  EQU   BIT2                    DUMP LSQA
APFSWA   EQU   BIT3                    DUMP SWA
APFTRACE EQU   BIT4                    INCLUDE TRACE TABLES(SUPERVISOR
*                                      OR GTF)
APFSUPDA EQU   BIT5                    FORMAT CONTROL BLOCKS FOR TASK
APFQCB   EQU   BIT6                    FORMAT ENQ CONTROL BLOCKS FOR
*                                      TASK
APFDM    EQU   BIT7                    FORMAT DATA MGT CONTROL BLOCKS
*                                                               G33SPHW
APFSDAT1 DS    B                       SDATA OPIONS             G33SPHW
APFIO    EQU   BIT0                    FORMAT IOS CONTROL BLOCKS
*                                                               G33SPHW
APFERR   EQU   BIT1                    FORMAT ERROR CONTROL BLKS
*                                                               G33SPHW
*        EQU   BIT2                    RESERVED
*        EQU   BIT3                    RESERVED
*        EQU   BIT4                    RESERVED
*        EQU   BIT5                    RESERVED
*        EQU   BIT6                    RESERVED
*        EQU   BIT7                    RESERVED
APFPDATA DS    B                       PDATA OPTIONS
APFSAVE  EQU   BIT0                    DISPLAY SAVE AREA TRACE
APFSAVE2 EQU   BIT1                    0=DISPLAY ENTIRE SAVE AREA
*                                      1=DISPLAY HEADINGS ONLY
APFREGS  EQU   BIT2                    DISPLAY REGISTERS ON ENTRY
*                                      TO SNAP OR ABEND
APFLPA   EQU   BIT3                    DISPLAY ACTIVE LPA MODULES
APFJPA   EQU   BIT4                    DISPLAY JPA MODULES
APFPSW   EQU   BIT5                    DISPLAY PSW,ILC,INTERRUPT CODE
APFSPALL EQU   BIT6                    DISPLAY ALL SUBPOOLS
*                                      LESS THAN SUBPOOL 128
*        EQU   BIT7                    RESERVED
         DS    B                       RESERVED
ABDPDCBP DS    A                       ADDRESS OF DCB FOR DUMP
*                                      DATA SET
ABDPTCBP DS    A                       ADDRESS OF TCB TO BE DISPLAYED
ABDSNAPP DS    A                       ADDRESS OF SNAP LIST
ABDHDRAD DS    A                       ADDRESS OF HEADER LIST   G33SPHW
*        DS    CL2                     RESERVED                 ZA25122
ABDCTR   DS    CL2                     NUMBER OF INDEX ENTRIES  G33SPHW
ABDINXPT DS    A                       POINTER TO INDEX TABLE   G33SPHW
ABDTABPT DS    A                       POINTER TO MODULE TABLE  G33SPHW
ABDPARA  DS    A                       ADDRESS OF USER COPY OF
*                                      PARAMETER LIST
ABDDECB  DS    A                       ADDRESS OF DCB IN SP0 FOR SNAP
ABDSAVE  DS    A                       ADDRESS OF SAVE AREA FOR USE
*                                      BY OUTPUT
ABDECB   DS    F                       ECB FOR ABDUMP DECB
ABDTYPE  DS    CL2                     TYPE OF IO REQUEST
ABDLEN   DS    H                       LENGTH OF RECORD TO BE WRITTEN
ABDDCB   DS    A                       ADDRESS OF DCB FOR IO
ABDPTR   DS    A                       ADDRESS OF BUFFER TO BE WRITTEN
ABDIOBP  DS    A                       ADDRESS OF IOB
ABDLCTR  DS    H                       LINE COUNTER
ABDPCTR  DS    H                       PAGE COUNTER
ABDPTRS  DS    0CL12                   BLOCKING BUFFER POINTERS
ABDPTRS1 DS    A                       START OF BUFFER
ABDPTRS2 DS    A                       NEXT AVAILABLE BYTE OF BUFFER
ABDPTRS3 DS    A                       END OF BUFFER
ABDCP    DS    A                       ADDRESS OF CURRENT TRACE TABLE
*                                      ENTRY IN GETMAINED USER CORE
*                                      AFTER MOVE OF TRACE TABLE
ABDFP    DS    A                       ADDRESS OF FIRST TRACE ENTRY
ABDLP    DS    A                       ADDRESS OF LAST TRACE ENTRY
ABDCP1   DS    A                       ADDRESS OF CURRENT TRACE TABLE
*                                      ENTRY IN GETMAINED USER CORE
*                                      BEFORE MOVE OF TRACE TABLE
ABDUPRXT DS    A                       ADDRESS OF SPECIFIC EXIT ROUTINE
*                                      IF UPR EXPECTED, OR ZERO
ABDRESV3 DS    CL4                     RESERVED                G33SPHW
ABDWORK1 DS    D                       CONVERT TO DECIMAL WORK AREA
ABDPGWK  DS    D                       INDEX WORKAREA          G33SPHW
ABDFLAG1 DS    B                       FLAG BYTE
ABDQCBHD EQU   BIT0                    QUEUE CONTROL BLOCK HEADER HAS
*                                      BEEN PRINTED
ABDQCBMJ EQU   BIT1                    MAJOR QCB HAS BEEN PRINTED
ABDQCBMN EQU   BIT2                    MINOR QCB HAS BEEN PRINTED
ABDLSTHD EQU   BIT3                    THE STORAGE LIST HEADING LINE
*                                      HAS BEEN PRINTED
ABDSQSDM EQU   BIT4                    SQS HAS BEEN DUMPED
ABDSVCHD EQU   BIT5                    THE SVC HEADING LINE HAS
*                                      BEEN PRINTED
ABDSPHD  EQU   BIT6                    THE SUBPOOL HEADER HAS BEEN
*                                      PRINTED
*
ABDIDX   EQU   BIT7                    INDEX PROCESSING ACTIVE  G33SPHW
ABDFLAG2 DS    B                       FLAG BYTE
ABDSUPER EQU   BIT0                    SUPERVISOR TRACE TO BE PROVIDED
ABDGTF   EQU   BIT1                    GTF TRACE TO BE PROVIDED
ABDTRBIT EQU   BIT2                    0=CORE FREED FOR SUPER TRACE
*                                      1=CORE ALLOCATED FOR SUPER TRACE
ABDTRNAV EQU   BIT3                    SUPER TRACE NOT AVAILABLE
ABDGTFCL EQU   BIT4                    IEAVAD08 ENTERED FOR GTF
ABDSWAP  EQU   BIT5                    USED BY IEAVAD0D TO DETERMINE
*                                      OWNERSHIP OF SWA SUBPOOLS
ABDSTAT  EQU   BIT6                    INDICATE STATUS ISSUED
ABDLSQA  EQU   BIT7                    IEAVAD0E ENTERED FOR SP229/230
ABDKEY   DS    B                       SAVE KEY FOR MODESET
ABDRES1  DS    B                       DISPLAY FLAGS           G33SPHW
ABDPSW   EQU   BIT0                    DISPLAY PSW             G33SPHW
ABDREGS  EQU   BIT1                    DISPLAY REGISTERS       G33SPHW
ABDOLSQA EQU   BIT2                    DISPLAY LSQA IEAVAD0A   G33SPHW
ABDSQA   EQU   BIT3                    DISPLAY SQA IEAVAD0A    G33SPHW
ABDFMTLD EQU   BIT4                    FORMATTER LOADED        G33SPHW
ABDPGHD  EQU   BIT5                    SKIP LINE AFTER HEADER  G33SPHW
ABDTRSV  EQU   BIT6                    SNAP OBTAINED TRACE COPY
*                                                              ZM45190
ABDWORK  DS    CL48                    GENERAL WORK AREA
ABDSSPAR DS    CL56                    WORKAREA FOR BUILDING PARAMETER
*                                      LISTS TO SUBSYSTEMS AND
*                                      FORMATTING ROUTINES OF OTHER
*                                      COMPONENTS
ABDBPTR  DS    A                       ADDRESS OF CONTROL BLOCK TO
*                                      BE FORMATTED
ABDLLINE DS    A                       ADDRESS OF LAYOUT LINE
ABDLPTR  DS    A                       ADDRESS OF NEXT AVAILABLE BYTE
*                                      OF ABDLINE
ABDFMTWK DS    CL9                     WORK AREA FOR FORMAT SUBROUTINE
ABDUPRF  DS    B                       UNDEFINED PAGE REFERENCE FLAGS
UPRFMAT  EQU   BIT0                    UPR EXPECTED ON THIS CALL TO
*                                      FORMAT OR FORMAT01 SUBROUTINE
*                                                            @ZA15300
UPRFMET  EQU   BIT1                    UPR EXPECTED ON THIS CALL TO
*                                      FORMET
UPRFMT20 EQU   BIT2                    UPR EXPECTED ON THIS CALL TO
*                                      FORMAT20 OR FORMAT22
ABDUPRFN DS    B                       ACTION REQUESTED BY CALLER IF
*                                      UPR ENCOUNTERED IN FORMET
ABDUPRPM EQU   BIT0                    PRINT A MESSAGE SPECIFYING
*                                      LOCATIONS X TO Y UNDEFINED,AND
*                                      CONTINUE WITH NEXT VALID PAGE
*                                      UNTIL COUNT RUNS OUT
ABDUPRSL EQU   BIT1                    SKIP A LINE AND FIND THE NEXT
*                                      VALID PAGE TO PRINT UNTIL
*                                      COUNT RUNS OUT.  IF ABDUPRPM AND
*                                      ABDUPRSL ARE BOTH 0, DISCONTINUE
*                                      PRINTING AND RETURN TO CALLER
ABDBLNKS DS    B                       BLANK CONTROL
ABDBLKN3 EQU   BIT0                    IF ABDBLKN3=0 FORMAT01 WILL
*                                      PUT 3 BLANKS BETWEEN THE END OF
*                                      ONE FIELD AND THE BEGINNING
*                                      OF THE NEXT LABEL.IF ABDBLKN3=1
*                                      THE NUMBER OF BLANKS SPECIFIED
*                                      IN BITS 4 TO 7 WILL BE PLACED
*                                      BETWEEN THE END OF ONE FIELD AND
*                                      THE BEGINNING OF THE NEXT LABEL
ABDSTAD  DS    A                       LOCATION COUNTER FOR FORMAT20,
*                                      USED AS A WORK CELL BY FORMET
ABDBLOCK DS    A                       ADDRESS OF BLOCK OF STORAGE TO
*                                      BE DUMPED
ABDLENTH DS    F                       NUMBER OF BYTES OF STORAGE TO
*                                      BE DUMPED
ABDSIZE  DS    F                       USED TO SAVE SIZE OF BLOCK
ABDIND   DS    H                       INDENTATION FACTOR FOR FIRST
*                                      LINE TO BE PRINTED
ABDIDENT DS    H                       NUMBER OF IDENTICAL LINES
*                                      ENCOUNTERED
ABDFWORK DS    A                       WORK CELL FOR FORMET ROUTINE
ABDINCPL DS    H                       LENGTH OF INCOMPLETE LINE
ABDLLNGH DS    B                       LENGTH OF THE PRINT LINE Z40MPXH
ABDPCAP  DS    B                       MAXIMUM LINES PER PAGE   Z40MPXH
ABDUPRID DS    A                       RETURN ADDRESS FOR IDENTICAL
*                                      LINE PROCESSING IN FORMET
ABDSTADS DS    A                       SAVE AREA FOR OLD VALUE OF
*                                      ABDSTAD
ABSLCTSV DS    A                       SAVE AREA FOR OLD VALUE OF
*                                      LINES TO BE PRINTED
ABDBUFFS DS    0CL8
ABDBUFAD DS    A                       ADDR OF OUTPUT BUFFER
ABDBUFS2 DS    F                       SIZE OF OUTPUT BUFFER
ABDGMA   DS    0CL16                   WORK AREA FOR BUILDING
*                                      CONDITIONAL GETMAIN LISTS
ABDAAREA DS    A                       PDINTER TO ACQUIRED AREA
ABDASIZE DS    F                       SIZE OF ACQUIRED AREA
ABDPAREA DS    A                       ADDRESS OF ABDAAREA
ABDCDID  DS    CL2                     CODE AND SUBPOOL ID
         DS    H                       UNUSED
ABDSVCB  DS    A                       BASE FOR SVC 51
ABDRTRN  DS    A                       ADDRESS OF SVC 51
ESPARM   DS    0CL28                   ESTAE PARAMLIST
ESBSREG  DS    A                       BASE REG FOR IEAVAD01
ESBSREG2 DS    A                       SECOND BASE REG FOR IEAVAD01
*                                                              G33SPHW
ESAUTOP  DS    A                       ADDR OF AUTOMATIC DATA
EABDAREA DS    A                       ADDR OF SNAP WORK AREA
EMODNAME DS    CL8                     MODULE NAME             G33SPHW
ERESTART DS    A                       RESTART ADDR.
ESTAEFLG DS    B                       FLAG BYTE
ESUBSYT  EQU   BIT0                    1=SUBSYSTEM RTN. IN CNTRL
ETCB     EQU   BIT1                    1=TCB VALIDITY CHECK IN PROGRESS
EDCB     EQU   BIT2                    1=DCB VALIDITY CHECK IN PROGRESS
         DS    CL3                     RESERVED
ABDLCNT  DS    F                       COUNT OF COMPLETE LINES  Z40MPXH
ABDPHY   DS    H                       BUFFER DESCRIPTOR LENGTH Z40MPXH
ABDSRC1  DS    H                       SYSTEM RESERVED CHARS    Z40MPXH
ABDLOG   DS    H                       RECORD DESCRIPTOR LENGTH Z40MPXH
ABDSRC2  DS    H                       SYSTEM RESERVED CHARS    Z40MPXH
ABDLINEA DS    0CL205                  205 CHARACTER REFERENCE FOR
*                                      ABDCC+ABDLINE            Z40MPXH
ABDCC    DS    CL1                     CARRIAGE CONTROL CHARACTER
ABDLINE  DS    CL204                   PRINT LINE FOR OUTPUT    Z40MPXH
ABDPADC  DS    CL3                     RESERVED CHARACTERS FOR UNPACK
*                                      TO END OF ABDLINE        Z40MPXH
ABDSAVHD DS    CL80                    SAVED HEADING USED TO SAVE A
*                                      A COPY OF SAVED HEADER PUT ON
*                                      TOP OF EACH PAGE OF DUMP G33SPHW
ABDSAVE1 DS    A                       ADDRESS OF SAVE AREA FOR USE
*                                      BY OUTPUT                ZA16374
ABDTRLN  DS    CL4                     LENGTH OF SAVED TRACE    ZA25122
         MEND  , */
*%ABDAPPLS :  ;
*%IF QZR ^= ' ' %THEN
*%ABD9999=',';
*%ELSE
*%ABD9999=';';
*DECLARE
*  1 ABDAREA  BASED(ABDARPTR) BDY(DWORD),
*   2 ABDTCB      PTR(31),               /* ADDRESS OF TCB FOR TASK
*                                           TO BE DISPLAYED          */
*   2 ABDCTCB     PTR(31),               /* ADDRESS OF CURRENT TCB   */
*   2 ABDCRB      PTR(31),               /* ADDRESS OF ABDUMPS SVRB  */
*   2 ABDPARMS            ,              /* COPY OF ABDUMP PARAMETER
*                                           LIST                     */
*    3 ABDPID      CHAR(1),              /* USER SUPPLIED ID FOR
*                                           DUMP                     */
*    3 ABDFLAG     CHAR(1),              /* FLAG BYTE                */
*     4 APFSNAP  BIT(1),                 /* 0=SNAP REQUEST
*                                           1=SVC DUMP REQUEST       */
*     4 APFVS2   BIT(1),                 /* 0=OS/VS2 REL.1
*                                           1=OS/VS2 REL.2           */
*     4 APFENVS2 BIT(1),                 /* 1=OS/VS2 ENHANCED SNAP
*                                                            @G33SPHW*/
*     4 APFABEND BIT(1),                 /* 0=ABEND REQUEST
*                                           1=SNAP REQUEST           */
*     4 APFID    BIT(1),                 /* ID SPECIFIED             */
*     4 APFTCB   BIT(1),                 /* TCB ADDRESS SPECIFIED BY
*                                           USER                     */
*     4 APFSNAPP BIT(1),                 /* STORAGE LIST PROVIDED    */
*     4 APFHDR   BIT(1),                 /* 1=STORAGE HEADER
*                                           SPECIFIED        @G33SPHW*/
*    3 *           CHAR(2),              /* RESERVED                 */
*    3 APFSDATA    BIT(8),               /* SDATA OPTIONS            */
*     4 APFNUC   BIT(1),                 /* DUMP PSA, NUCLEUS, LSQA
*                                           SQA                      */
*     4 APFSQA BIT(1),                   /* DUMP SQA                 */
*     4 APFLSQA  BIT(1),                 /* DUMP LSQA                */
*     4 APFSWA   BIT(1),                 /* DUMP SWA                 */
*     4 APFTRACE BIT(1),                 /* INCLUDE TRACE TABLE
*                                           (SUPERVISOR OR GTF)      */
*     4 APFSUPDA BIT(1),                 /* FORMAT CONTROL BLOCKS FOR
*                                           TASK                     */
*     4 APFQCB   BIT(1),                 /* FORMAT ENQ CONTROL BLOCKS
*                                           FOR TASK                 */
*     4 APFDM    BIT(1),                 /* FORMAT DATA MGT CONTROL
*                                           BLOCKS           @G33SPHW*/
*    3 APFSDAT1 BIT(8),                  /* SDATA OPTIONS    @G33SPHW*/
*     4 APFIO   BIT(1),                  /* FORMAT DATA MGT CONTROL
*                                           BLOCKS           @G33SPHW*/
*     4 APFERR  BIT(1),                  /* FORMAT ERROR CONTROL
*                                           BLOCKS           @G33SPHW*/
*     4 *       BIT(6),                  /* RESERVED                 */
*    3 APFPDATA BIT(8),                  /* PDATA OPTIONS            */
*     4 APFSAVE  BIT(1),                 /* DISPLAY SAVE AREA TRACE  */
*     4 APFSAVE2 BIT(1),                 /* 0=DISPLAY ENTIRE SAVE
*                                           AREA  1=DISPLAY HEADINGS
*                                           ONLY                     */
*     4 APFREGS  BIT(1),                 /* DISPLAY REGISTERS ON
*                                           ENTRY  TO SNAP OR ABEND  */
*     4 APFLPA   BIT(1),                 /* DISPLAY ACTIVE LPA
*                                           MODULES                  */
*     4 APFJPA   BIT(1),                 /* DISPLAY JPA MODULES      */
*     4 APFPSW   BIT(1),                 /* DISPLAY
*                                           PSW,ILC,INTERRUPT CODE   */
*     4 APFSPALL BIT(1),                 /* DISPLAY ALL SUBPOOLS
*                                           LESS THAN SUBPOOL 128    */
*     4 *        BIT(1),                 /* RESERVED                 */
*    3 *           BIT(8),               /* RESERVED                 */
*    3 ABDPDCBP    PTR(31),              /* ADDRESS OF DCB FOR DUMP
*                                           DATA SET                 */
*    3 ABDPTCBP    PTR(31),              /* ADDRESS OF TCB TO BE
*                                           DISPLAYED                */
*    3 ABDSNAPP    PTR(31),              /* ADDRESS OF SNAP LIST     */
*    3 ABDHDRAD    PTR(31),              /* ADDRESS OF HEADER LIST
*                                                            @G33SPHW*/
*   2 *    FIXED(15),             /* RESERVED                @ZA25122*/
*  2 ABDCTR FIXED(15),            /* NUMBER OF INDEX ENTRIES @G33SPHW*/
*  2 ABDINXPT  PTR(31),           /* POINTER TO INDEX TABLE  @G33SPHW*/
*   2 ABDTABPT PTR(31),           /* POINTER TO MODULE TABLE @G33SPHW*/
*   2 ABDPARA     PTR(31),               /* ADDRESS OF USER COPY OF
*                                           PARAMETER LIST           */
*   2 ABDDECB     PTR(31),               /* ADDRESS OF DCB IN SP0
*                                           FOR SNAP                 */
*   2 ABDSAVE     PTR(31),               /* ADDRESS OF SAVE AREA FOR
*                                           USE  BY OUTPUT           */
*   2 ABDECB      FIXED(31),             /* ECB FOR ABDUMP DECB      */
*   2 ABDTYPE     CHAR(2),               /* TYPE OF IO REQUEST       */
*   2 ABDLEN      FIXED(15),             /* LENGTH OF RECORD TO BE
*                                           WRITTEN                  */
*   2 ABDDCB      PTR(31),               /* ADDRESS OF DCB FOR IO    */
*   2 ABDPTR      PTR(31),               /* ADDRESS OF BUFFER TO BE
*                                           WRITTEN                  */
*   2 ABDIOBP     PTR(31),               /* ADDRESS OF IOB           */
*   2 ABDLCTR     FIXED(15),             /* LINE COUNTER             */
*   2 ABDPCTR     FIXED(15),             /* PAGE COUNTER             */
*   2 ABDPTRS             ,              /* BLOCKING BUFFER POINTERS */
*    3 ABDPTRS1    PTR(31),              /* START OF BUFFER          */
*    3 ABDPTRS2    PTR(31),              /* NEXT AVAILABLE BYTE OF
*                                           BUFFER                   */
*    3 ABDPTRS3    PTR(31),              /* END OF BUFFER            */
*   2 ABDCP       PTR(31),               /* ADDRESS OF CURRENT TRACE
*                                           TABLE  ENTRY IN
*                                           GETMAINED USER CORE
*                                           AFTER MOVE OF TRACE
*                                           TABLE                    */
*   2 ABDFP       PTR(31),               /* ADDRESS OF FIRST TRACE
*                                           ENTRY                    */
*   2 ABDLP       PTR(31),               /* ADDRESS OF LAST TRACE
*                                           ENTRY                    */
*   2 ABDCP1      PTR(31),               /* ADDRESS OF CURRENT TRACE
*                                           TABLE  ENTRY IN
*                                           GETMAINED USER CORE
*                                           BEFORE MOVE OF TRACE
*                                           TABLE                    */
*   2 ABDUPRXT    PTR(31),               /* ADDRESS OF SPECIFIC EXIT
*                                           ROUTINE IF UPR EXPECTED,
*                                           OR ZERO                  */
*   2 ABDRESV3 CHAR(4),                  /* RESERVED         @G33SPHW*/
*   2 ABDWORK1 CHAR(8) BDY(DWORD),       /* CONVERT TO DECIMAL WORK
*                                           AREA                     */
*   2 ABDPGWK  CHAR(8) BDY(DWORD),       /* INDEX WORKAREA   @G33SPHW*/
*   2 ABDFLAG1    CHAR(1),               /* FLAG BYTE                */
*    3 ABDQCBHD BIT(1),                  /* QUEUE CONTROL BLOCK
*                                           HEADER HAS  BEEN PRINTED */
*    3 ABDQCBMJ BIT(1),                  /* MAJOR QCB HAS BEEN
*                                           PRINTED                  */
*    3 ABDQCBMN BIT(1),                  /* MINOR QCB HAS BEEN
*                                           PRINTED                  */
*    3 ABDLSTHD BIT(1),                  /* THE STORAGE LIST HEADING
*                                           LINE  HAS BEEN PRINTED   */
*    3 ABDSQSDM BIT(1),                  /* SQS HAS BEEN DUMPED      */
*    3 ABDSVCHD BIT(1),                  /* THE SVC HEADING LINE HAS
*                                           BEEN PRINTED             */
*    3 ABDSPHD  BIT(1),                  /* THE SUBPOOL HEADER HAS
*                                           BEEN  PRINTED            */
*    3 ABDIDX   BIT(1),                  /* INDEX PROCESSING ACTIVE
*                                                            @G33SPHW*/
*   2 ABDFLAG2     CHAR(1),              /* FLAG BYTE                */
*    3 ABDSUPER BIT(1),                  /* SUPERVISOR TRACE TO BE
*                                           PROVIDED                 */
*    3 ABDGTF   BIT(1),                  /* GTF TRACE TO BE PROVIDED */
*    3 ABDTRBIT BIT(1),                  /* 0=CORE FREED FOR SUPER
*                                             TRACE
*                                           1=CORE ALLOCATED FOR
*                                             SUPER TRACE            */
*    3 ABDTRNAV BIT(1),                  /* SUPER TRACE NOT AVAILABLE*/
*    3 ABDGTFCL BIT(1),                  /* IEAVAD08 ENTERED FOR GTF */
*    3 ABDSWAP  BIT(1),                  /* USED BY IEAVAD0D TO
*                                           DETERMINE OWNERSHIP OF
*                                           SWA SUBPOOLS             */
*    3 ABDSTAT  BIT(1),                  /* INDICATE STATUS ISSUED   */
*    3 ABDLSQA BIT(1),                   /* IEAVAD0E ENTERED FOR
*                                           SP229/230                */
*   2 ABDKEY       CHAR(1),              /* SAVE KEY FOR MODESET     */
*   2 ABDRES1      CHAR(1),              /* DISPLAY FLAGS    @G33SPHW*/
*     3 ABDPSW  BIT(1),                  /* DISPLAY PSW      @G33SPHW*/
*     3 ABDREGS BIT(1),                  /* DISPLAY REGS     @G33SPHW*/
*     3 ABDOLSQA BIT(1),                 /* DISPLAY LSQA     @G33SPHW*/
*     3 ABDSQA BIT(1),                   /* DISPLAY SQA      @G33SPHW*/
*     3 ABDFMTLD BIT(1),                 /* FORMATTER LOADED @G33SPHW*/
*     3 ABDPGHD  BIT(1),                 /* HEADER PRINTED   @G33SPHW*/
*     3 ABDTRSV  BIT(1),                 /* SNAP OBTAINED TRACE COPY
*                                                            @ZM45190*/
*     3 *    BIT(1),                     /* RESERVED         @ZM45190*/
*   2 ABDWORK     CHAR(48),              /* GENERAL WORK AREA        */
*   2 ABDSSPAR    CHAR(56),              /* WORKAREA FOR BUILDING
*                                           PARAMETER  LISTS TO
*                                           SUBSYSTEMS AND
*                                           FORMATTING ROUTINES OF
*                                           OTHER  COMPONENTS        */
*   2 ABDBPTR     PTR(31),               /* ADDRESS OF CONTROL BLOCK
*                                           TO  BE FORMATTED         */
*   2 ABDLLINE    PTR(31),               /* ADDRESS OF LAYOUT LINE   */
*   2 ABDLPTR     PTR(31),               /* ADDRESS OF NEXT
*                                           AVAILABLE BYTE  OF
*                                           ABDLINE                  */
*   2 ABDFMTWK    CHAR(9),               /* WORK AREA FOR FORMAT
*                                           SUBROUTINE               */
*   2 ABDUPRF     CHAR(1),               /* UNDEFINED PAGE REFERENCE
*                                           FLAGS                    */
*    3 UPRFMAT  BIT(1),                  /* UPR EXPECTED ON THIS
*                                           CALL TO  FORMAT OR
*                                           FORMAT01 SUBROUTINE      */
*    3 UPRFMET  BIT(1),                  /* UPR EXPECTED ON THIS
*                                           CALL TO  FORMET          */
*    3 UPRFMT20 BIT(1),                  /* UPR EXPECTED ON THIS
*                                           CALL TO  FORMAT20 OR
*                                           FORMAT22                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 ABDUPRFN    CHAR(1),               /* ACTION REQUESTED BY
*                                           CALLER IF  UPR
*                                           ENCOUNTERED IN FORMET    */
*    3 ABDUPRPM BIT(1),                  /* PRINT A MESSAGE
*                                           SPECIFYING  LOCATIONS X
*                                           TO Y UNDEFINED,AND
*                                           CONTINUE WITH NEXT VALID
*                                           PAGE  UNTIL COUNT RUNS
*                                           OUT                      */
*    3 ABDUPRSL BIT(1),                  /* SKIP A LINE AND FIND THE
*                                           NEXT  VALID PAGE TO
*                                           PRINT UNTIL  COUNT RUNS
*                                           OUT. IF ABDUPRPM AND
*                                           ABDUPRSL ARE BOTH 0,
*                                           DISCONTINUE PRINTING AND
*                                           RETURN TO CALLER         */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 ABDBLNKS    CHAR(1),               /* BLANK CONTROL            */
*    3 ABDBLKN3 BIT(1),                  /* IF ABDBLKN3=0 FORMAT01
*                                           WILL  PUT 3 BLANKS
*                                           BETWEEN THE END OF  ONE
*                                           FIELD AND THE BEGINNING
*                                           OF THE NEXT LABEL.IF
*                                           ABDBLKN3=1  THE NUMBER
*                                           OF BLANKS SPECIFIED  IN
*                                           BITS 4 TO 7 WILL BE
*                                           PLACED  BETWEEN THE END
*                                           OF ONE FIELD AND THE
*                                           BEGINNING OF THE NEXT
*                                           LABEL                    */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 ABDSTAD     PTR(31),               /* LOCATION COUNTER FOR
*                                           FORMAT20,  USED AS A
*                                           WORK CELL BY FORMET      */
*   2 ABDBLOCK    PTR(31),               /* ADDRESS OF BLOCK OF
*                                           STORAGE TO  BE DUMPED    */
*   2 ABDLENTH    FIXED(31),             /* NUMBER OF BYTES OF
*                                           STORAGE TO  BE DUMPED    */
*   2 ABDSIZE     FIXED(31),             /* USED TO SAVE SIZE OF
*                                           BLOCK                    */
*   2 ABDIND      FIXED(15),             /* INDENTATION FACTOR FOR
*                                           FIRST  LINE TO BE
*                                           PRINTED                  */
*   2 ABDIDENT    FIXED(15),             /* NUMBER OF IDENTICAL
*                                           LINES   ENCOUNTERED      */
*   2 ABDFWORK    PTR(31),               /* WORK CELL FOR FORMET
*                                           ROUTINE                  */
*   2 ABDINCPL    FIXED(15),             /* LENGTH OF INCOMPLETE
*                                           LINE                     */
*   2 ABDLLNGH    FIXED(8),              /* PRINT LINE LENGTH@Z40MPXH*/
*   2 ABDPCAP     FIXED(8),              /* LINES PER PAGE  @Z40MPXH*/
*   2 ABDUPRID    PTR(31),               /* RETURN ADDRESS FOR
*                                           IDENTICAL  LINE
*                                           PROCESSING IN FORMET     */
*   2 ABDSTADS    PTR(31),               /* SAVE AREA FOR OLD VALUE
*                                           OF  ABDSTAD              */
*   2 ABSLCTSV    PTR(31),               /* SAVE AREA FOR OLD VALUE
*                                           OF  LINES TO BE PRINTED  */
*   2 ABDBUFFS           ,
*    3 ABDBUFAD PTR(31),                 /* ADDR OF OUTPUT BUFFER    */
*    3 ABDBUFSZ FIXED(31),               /* SIZE OF OUTPUT BUFFER    */
*   2 ABDGMA             ,               /* WORK AREA FOR BUILDING
*                                           CONDITIONAL GETMAIN
*                                           LISTS                    */
*    3 ABDAAREA PTR(31),                 /* POINTER TO ACQUIRED AREA */
*    3 ABDASIZE FIXED(31),               /* SIZE OF ACQUIRED AREA    */
*    3 ABDPAREA PTR(31),                 /* ADDRESS OF ABDAAREA      */
*    3 ABDCDID  CHAR(2),                 /* CODE AND SUBPOOL ID      */
*    3 *        CHAR(2),                 /* UNUSED                   */
*   2 ABDSVCB  PTR(31),                  /* BASE FOR SVC 51          */
*   2 ABDRTRN  PTR(31),                  /* ADDRESS OF SVC 51        */
*   2 ESPARM,                            /* ESTAE PARMLIST           */
*    3 ESBSREG PTR(31),                  /* BASE REG FOR IEAVAD01    */
*    3 ESBSREG2 PTR(31),                 /* SECOND BASE REG FOR
*                                           IEAVAD01         @G33SPHW*/
*    3 ESAUTOP PTR(31),                  /* ADDR OF AUTOMATIC DATA   */
*    3 EABDAREA PTR(31),                 /* ADDR OF SNAP WORK AREA   */
*    3 EMODNAME CHAR(8),                 /* MODULE NAME      @G33SPHW*/
*    3 ERESTART PTR(31),                 /* RESTART ADDR             */
*    3 ESTAEFLG CHAR(1),                 /* FLAGS BYTE               */
*     4 ESUBSYT BIT(1),                  /* 1=SUBSYSTEM RTN IN CNTRL */
*     4 ETCB BIT(1),                     /* 1=TCB VALIDITY CHECK IN
*                                             PROGRESS               */
*     4 EDCB BIT(1),                     /* 1=DCB VALIDITY CHECK IN
*                                                 PROGRESS           */
*     4 *    BIT(5),                     /* RESERVED                 */
*    3 *     CHAR(3),                    /* RESERVED         @Z40MPXH*/
*   2 ABDLCNT   PTR(31),                 /* COUNT OF CONPLETE LINES
*                                                            @Z40MPXH*/
*   2 ABDPHY    FIXED(15),               /* BUFFER DESCRIPTOR
*                                           LENGTH           @Z40MPXH*/
*   2 ABDSRC1   FIXED(15),               /* SYSTEM RESERVED
*                                           CHARACTERS       @Z40MPXH*/
*   2 ABDLOG    FIXED(15),               /* RECORD DESCRIPTOR
*                                           LENGTH           @Z40MPXH*/
*   2 ABDSRC2   FIXED(15),               /* SYSTEM RESERVED
*                                           CHARACTERS       @Z40MPXH*/
*   2 ABDLINEA   CHAR(205),              /* 205 CHARACTER REFERENCE FOR
*                                           ABDCC+ABDLINE    @Z40MPXH*/
*    3 ABDCC     CHAR(1),                /* CHARRIAGE CONTROL@Z40MPXH*/
*    3 ABDLINE   CHAR(204),              /* PRINT LINE FOR
*                                           OUTPUT           @Z40MPXH*/
*  2 ABDPADC     CHAR(3),               /* RESERVED CHARACTERS FOR
*                                           UNPACKING TO END OF
*                                           ABDLINE          @Z40MPXH*/
*  2 ABDSAVHD    CHAR(80),              /* SAVED HEADING USED TO SAVE
*                                          HEADER PUT ON TOP OF EACH
*                                          PAGE OF DUMP      @ZA16374*/
*   2 ABDSAVE1    PTR(31),               /* ADDRESS OF SAVE AREA FOR
*                                           USE  BY OUTPUT   @ZA16374*/
*   2 ABDTRLN     FIXED(31)ABD9999       /* LENGTH OF TRACE TABLE
*                                                            @ZA25122*/
*%IF QZR = ' ' %THEN
*%GOTO ABDEND;
*%IF NORTMLST = ' ' %THEN
*%GOTO ABDEND;
*   2 TRKTBL           ,
*    3 SNAME    CHAR(8),                 /* SEGMENT NAME             */
*    3 DADDR    PTR(31),                 /* ADDR OF DATA TO BE
*                                           TRCACKED                 */
*    3 DLNTH  FIXED(31),                 /* LENGTH OF DATA TO BE
*                                           TRACKED                  */
*    3 DNAME   CHAR(40),                 /* NAME OF DATA TO BE
*                                           TRACKED                  */
*    3 DREGS   CHAR(64),                 /* REGISTERS AT TIME OF
*                                           REQUEST                  */
*    3 TRKEP   PTR(31);                  /* RTMTRACK ENTRY ADDR      */
*%ABDEND: ;
*% ABDLNGTH = 'LENGTH(ABDAREA)';         /* LENGTH OF WORKAREA       */
./ ADD NAME=IHAAQE
*        %GOTO AQEBSL;       /* BILINGUAL MAPPING            /*     /*
         MACRO
         IHAAQE   &TYPE
*
*        RELEASE 1 AOS, 11/3/71, LEVEL=1
*
         AIF   ('&TYPE' EQ 'INTERNAL').EQU
AQESECT  DSECT ,TCBAQE               ALLOCATED QUEUE ELEMENT
AQEPTR   DS    A                     ADDRESS OF PREVIOUS AQE
AQELEN   DS    F                     LENGTH OF ALLOCATED AREA
         MEXIT
.EQU     ANOP
AQEPTR   EQU   0                     ADDRESS OF PREVIOUS AQE
AQELEN   EQU   4                     LENGTH OF ALLOCATED AREA
         MEND  , */
*%AQEBSL:   ;
* DECLARE
*
*/*      RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
*   1 AQESECT  BASED(TCBAQE),        /* ALLOCATED QUEUE ELEMENT      */
*   2 AQEPTR   PTR(31),              /* ADDRESS OF PREVIOUS AQE      */
*   2 AQELEN   FIXED(31);            /* LENGTH OF ALLOCATED AREA     */
./ ADD NAME=IHACCW
*%GOTO CCWPLS1;
         MACRO
         IHACCW &DSECT=
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHACCW
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  DESCRIPTIVE-NAME = CHANNEL COMMAND WORD
.*
.*01  FUNCTION = USED TO MAP THE CHANNEL COMMAND WORD.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING.
.*
.*04        VALUE = 'YES' OR 'NO'.
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 REL 2
.*       MACRO CREATED
.*
.*
.**** END OF SPECIFICATIONS ***/
*
*%CCWPLS1:;
*  /* MACCOMP Y-2 SC1DO/SJD48  */
*  /* MACSTAT Y-2 73324/021160 */
*%GOTO CCWPLS2;
*
* THIS DSECT DEFINES FIELDS AND ASSOCIATED FLAGS OF THE CHANNEL
* COMMAND WORD.
* IF DSECT=YES IS CODED, A DSECT STATEMENT WILL BE EXPANDED.
* THE DEFAULT IS DSECT=YES.
*
* DESCRIPTIVE LAYOUT
*
*    +0     +1                 +4           +6
*    _____________________________________________________
*                                                    
*     COMD  DATA ADDRESS      FLAGS       BYTE       
*     CODE                                COUNT      
*    ________________________________________________
*
         AIF   ('&DSECT' EQ 'NO').NODSECT  DO NOT EXPAND DSECT
.*                                           STMT IF NO
         DSECT
.NODSECT ANOP
CCW      DS    0D                       BOUNDRY ALIGNMENT FOR CCWS
CCWADDRA DS    0A                       SAME AS CCWADDRB BELOW
CCWCOMCD DS    X                        COMMAND CODE
CCWADDRB DS    AL3                      DATA ADDRESS
CCWFLGS  DS    X                        FLAG BYTE
CCWCD    EQU   X'80'                    USE ADDRESS PORTION OF NEXT CCW
CCWCC    EQU   X'40'                    USE COMMAND CODE AND DATA
*                                         ADDRESS OF NEXT CCW
CCWSLI   EQU   X'20'                    SUPPRESS INCORR LEN INDICATION
CCWSKIP  EQU   X'10'                    SUPPRESS DATA TRANSFER
CCWPCI   EQU   X'08'                    CAUSES A CHANNEL PROGRAM
*                                         CONTROLLED INTERRUPTION
         DS    X                        FILLER
CCWBYTE  DS    H                        NUMBER OF BYTES TO TRANSFER
         MEND
*%CCWPLS2:;
*/*                                                                  */
*/*                                                                  */
*/* THE FOLLOWING STRUCTURE DEFINES THE FIELDS AND ASSOCIATED FLAGS  */
*/* OF THE CHANNEL COMMAND WORD.                                     */
*/*                                                                  */
*/* DESCRIPTIVE LAYOUT                                               */
*/*                                                                  */
*/*  +0     +1                 +4           +6                       */
*/*  _____________________________________________________           */
*/*                                                             */
*/*   COMD  DATA ADDRESS      FLAGS       BYTE                  */
*/*   CODE                                COUNT                 */
*/*  ________________________________________________           */
*/*                                                                  */
*/*                                                                  */
* DCL  1  CCW BDY(DWORD) BASED,         /*                     Y02072*/
*        2 CCWADDRA PTR(31),            /*SAME AS CCWADDRB     Y02072*/
*          3 CCWCOMCD FIXED(8),         /*CCW OP CODE          Y02072*/
*          3 CCWADDRB PTR(24),          /*CCW DATA ADDRESS     Y02072*/
*        2 CCWFLGS BIT(8),              /*FLAGS                Y02072*/
*          3 CCWCD BIT(1),              /*USE ADDR PORTION OF  Y02072
*                                          NEXT CCW            Y02072*/
*          3 CCWCC BIT(1),              /*USE COM CD AND DATA  Y02072
*                                          ADDR OF NEXT CCW    Y02072*/
*          3 CCWSLI BIT(1),             /*SUPPRESS INCORR LEN  Y02072
*                                          INDICATION          Y02072*/
*          3 CCWSKIP BIT(1),            /*SUPPRESS DATA TRANS  Y02072*/
*          3 CCWPCI BIT(1),             /*CAUSES A CHAN PGM    Y02072
*                                          CONTROLLED INTERUPT Y02072*/
*        2 * FIXED(8),                  /*NOT USED             Y02072*/
*        2 CCWBYTE FIXED(16);           /*DATA BYTE COUNT      Y02072*/
./ ADD NAME=IHACIX
* %GOTO CIXL1;                           /* BILINGUAL MAPPING        */
         MACRO
         IHACIX &DSECT=YES
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHACIX
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 0
.*
.*01  DESCRIPTIVE-NAME = CI SVC EXIT LIST
.*
.*01  FUNCTION = USED BY SVC-S TO SEE IF AN EXIT IS NEEDED.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03     TYPE = CHARACTER STRING
.*
.*04       VALUE = YES OR NO
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 RELEASE 2
.*       MACRO CREATED
.*
.*
.**** END OF SPECIFICATIONS ***/
* %CIXL1: ;
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73138/021160                                        */
*/********************************************************************/
*/*                                                                  */
*/*           CI SVC EXIT LIST                                       */
*/*                                                                  */
*/*           VS2 RELEASE 2, 05/18/73, LEVEL=0                       */
*/*                                                                  */
*/*           FORMAT OF CI SVC EXIT LIST                             */
*/*                       BYTE 0         BYTES 1-3                   */
*/*           NORMAL        0        ADDR OF CI ROUTINE              */
*/*           NULL     RETURN CODE            0                      */
*/*                                                                  */
*/*  NOTE = IN A PLS INCLUDE, CIXBASE MAY BE DECLARED AS DEF(LABEL)  */
*/*         TO CAUSE IT TO BE USED IN A STRUCTURE. IF CIXBASE IS     */
*/*         OMITTED THE STRUCTURE IS DECLARED AS BASED.              */
*/********************************************************************/
*
* %GOTO CIXL2;
         AIF   ('&DSECT' EQ 'NO').CIXNOD
CIX      DSECT
         AGO   .CIXCONT
.CIXNOD  ANOP
CIX      DS    0F
.CIXCONT ANOP
CIXSYNDF DS    F                        SYNADAF   ROUTINE ENTRY
CIXBLDL  DS    F                        FIND/BLDL ROUTINE ENTRY
CIXBSP   DS    F                        BACKSPACE ROUTINE ENTRY
CIXFEOV  DS    F                        FEOV      ROUTINE ENTRY
CIXSTOW  DS    F                        STOW      ROUTINE ENTRY
         MEND
* %CIXL2: ;
*        % IF CIXBASE = ''
*        %    THEN
*        %      CIXBASE = 'BASED';
*  DCL 1 CIX        CIXBASE ,
*        2 CIXSYNDF PTR(31) ,           /* SYNADAF   ROUTINE ENTRY   */
*        2 CIXBLDL  PTR(31) ,           /* FIND/BLDL ROUTINE ENTRY   */
*        2 CIXBSP   PTR(31) ,           /* BACKSPACE ROUTINE ENTRY   */
*        2 CIXFEOV  PTR(31) ,           /* FEOV      ROUTINE ENTRY   */
*        2 CIXSTOW  PTR(31) ;           /* STOW      ROUTINE ENTRY   */
./ ADD NAME=IHACSD
*
*        %GOTO CSDL1;   /*
         MACRO
         IHACSD &DSECT=YES    */
*%CSDL1 : ;
*
*/* **************************************************************** */
*/*                                                                  */
*/*            COMMON SYSTEM DATA AREA                               */
*/*                                                                  */
*/*  OS/VS2 RELEASE 3, 07/23/74, LEVEL=1                             */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
*/*             USING ON CSD GIVES ADDRESSABILITY FOR ALL SYMBOLS.   */
*/*      PL/S - INCLUDE CVT TO DEFINE CVTCSD                         */
*/*                                                                  */
*/* **************************************************************** */
*%GOTO CSDL2;  /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').CSD0010
CSD      DSECT
         AGO   .CSD0020
.CSD0010 ANOP
         DS    0D
CSD      EQU   *
.CSD0020 ANOP
CSDCSD   DC    CL4'CSD ' -    CONTROL BLOCK ACRONYM IN EBCDIC
CSDCPUJS DC    XL2'00' -      BIT MASK OF CPU'S AVAILABLE FOR JOB
*                             SCHEDULING
CSDCHAD  DC    H'0' -         HIGHEST CHANNEL ADDRESS SYSGEN'ED  MDC014
CSDSAFF  DS    0XL2 -         BIT MASK OF CPU'S AVAILABLE TO PROCESS
*                             SERVICE REQUESTS (SRB'S)           MDC018
CSDCPUAL DC    XL2'00' -      BIT MASK OF CPU'S CURRENTLY ALIVE  MDC015
CSDCPUOL DC    H'0' -         NUMBER OF CPU'S CURRENTLY ALIVE    MDC016
CSDSCWRD DS    0BL4 -         SUPERVISOR CONTROL INFORMATION
CSDSCFL1 DC    XL1'00' -      FIRST BYTE OF CSDSCWRD
CSDRV042 EQU   X'80',,C'X' -  RESERVED                           MDC011
CSDSYSND EQU   X'40' -        SYSTEM-WIDE NON-DISPATCHABILITY BIT.
*                             INDICATES ALL ADDRESS SPACES (SRB'S AND
*                             TASKS) ARE NON-DISPATCHABLE EXCEPT THOSE
*                             WITH EXEMPT STATUS (ASCBXMPT)
CSDRV001 EQU   X'20',,C'X' -  RESERVED
CSDRV002 EQU   X'10',,C'X' -  RESERVED
CSDRV003 EQU   X'08',,C'X' -  RESERVED
CSDRV004 EQU   X'04',,C'X' -  RESERVED
CSDRV005 EQU   X'02',,C'X' -  RESERVED
CSDRV006 EQU   X'01',,C'X' -  RESERVED
CSDSCFL2 DC    XL1'00' -      SECOND BYTE OF CSDSCWRD
CSDRV007 EQU   X'80',,C'X' -  RESERVED
CSDRV008 EQU   X'40',,C'X' -  RESERVED
CSDRV009 EQU   X'20',,C'X' -  RESERVED
CSDRV010 EQU   X'10',,C'X' -  RESERVED
CSDRV011 EQU   X'08',,C'X' -  RESERVED
CSDRV012 EQU   X'04',,C'X' -  RESERVED
CSDRV013 EQU   X'02',,C'X' -  RESERVED
CSDRV014 EQU   X'01',,C'X' -  RESERVED
CSDSCFL3 DC    XL1'00' -      THIRD BYTE OF CSDSCWRD
CSDRV015 EQU   X'80',,C'X' -  RESERVED
CSDRV016 EQU   X'40',,C'X' -  RESERVED
CSDRV017 EQU   X'20',,C'X' -  RESERVED
CSDRV018 EQU   X'10',,C'X' -  RESERVED
CSDRV019 EQU   X'08',,C'X' -  RESERVED
CSDRV020 EQU   X'04',,C'X' -  RESERVED
CSDRV021 EQU   X'02',,C'X' -  RESERVED
CSDRV022 EQU   X'01',,C'X' -  RESERVED
CSDSCFL4 DC    XL1'00' -      FOURTH BYTE OF CSDSCWRD
CSDRV023 EQU   X'80',,C'X' -  RESERVED
CSDRV024 EQU   X'40',,C'X' -  RESERVED
CSDRV025 EQU   X'20',,C'X' -  RESERVED
CSDRV026 EQU   X'10',,C'X' -  RESERVED
CSDRV027 EQU   X'08',,C'X' -  RESERVED
CSDRV028 EQU   X'04',,C'X' -  RESERVED
CSDRV029 EQU   X'02',,C'X' -  RESERVED
CSDRV030 EQU   X'01',,C'X' -  RESERVED
CSDRV043 DC    F'0' -         RESERVED                    MDC012-MDC013
CSDMF1CP DC    XL2'00' -      BIT MASK OF CPU'S VARIED ONLINE OR
*                             OFFLINE.  MF/1 WILL TEST THESE FLAGS AT
*                             REPORTING INTERVALS FOR CPU VARY ACTIVITY
*                             AND THEN RESET HALFWORD TO ZERO    MDC007
CSDACR   DC    XL1'00' -      VALUE OF X'FF' MEANS ACR IS IN PROGRESS
*                             WITHIN SYSTEM                      MDC006
CSDFLAGS DC    XL1'00' -      FLAG BYTE                          MDC001
CSDMP    EQU   X'80' -        INDICATES MULTIPROCESSING SYSTEM
*                             INSTRUCTION SET IS AVAILABLE.  CSDCPUAL
*                             MUST BE EXAMINED TO DETERMINE WHETHER A
*                             MULTIPROCESSING SYSTEM IS RUNNING OR JUST
*                             HALF A MULTIPROCESSING SYSTEM.
*                             (MDC300)                         @Z30AQ9A
CSDRV032 EQU   X'40',,C'X' -  RESERVED
CSDRV033 EQU   X'20',,C'X' -  RESERVED
CSDRV034 EQU   X'10',,C'X' -  RESERVED
CSDRV035 EQU   X'08',,C'X' -  RESERVED
CSDRV036 EQU   X'04',,C'X' -  RESERVED
CSDRV037 EQU   X'02',,C'X' -  RESERVED
CSDRV038 EQU   X'01',,C'X' -  RESERVED
CSDMAFF  DC    XL80'00' -     CPU-AFFINITY FEATURE TABLE
*                             (TEN 8-BYTE ENTRIES)
CSDRV044 DC    XL2'00' -      RESERVED                           MDC018
CSDDDRCT DC    H'0' -         DDR DEVICE ALLOCATION INTERFACE COUNT
*                             FIELD.  ACCESSED AND MODIFIED UNDER CMS
*                             LOCK.  INCREMENTED BY DDR TO INDICATE TO
*                             DYNAMIC ALLOCATION THAT DDR EXCHANGED
*                             ADDRESSES IN THE IOS LOOKUP TABLE. MDC008
CSDGDCC  DC    F'0' -         COUNT OF USABLE CLOCK COMPARATORS
*                             CURRENTLY IN THE CONFIGURATION     MDC003
CSDGDINT DC    F'0' -         COUNT OF USABLE CPU TIMERS CURRENTLY IN
*                             THE CONFIGURATION                  MDC004
CSDGDTOD DC    F'0' -         COUNT OF CPU'S WHICH HAVE ACCESS TO A
*                             GOOD TOD CLOCK                     MDC005
CSDTCNT  DC    F'0' -         COUNT OF TAPE ALLOCATIONS IN PROGRESS
*                                                                MDC009
CSDUCNT  DC    F'0' -         COUNT OF UNIT RECORD ALLOCATIONS IN
*                             PROGRESS                           MDC010
CSDMASK  DS    0XL32 -        TABLE OF BIT MASKS FOR TESTING BITS IN
*                             CSDCPUAL                           MDC017
         DC    X'8000' -      CPU 0                              MDC017
         DC    X'4000' -      CPU 1                              MDC017
         DC    X'2000' -      CPU 2                              MDC017
         DC    X'1000' -      CPU 3                              MDC017
         DC    X'0800' -      CPU 4                              MDC017
         DC    X'0400' -      CPU 5                              MDC017
         DC    X'0200' -      CPU 6                              MDC017
         DC    X'0100' -      CPU 7                              MDC017
         DC    X'0080' -      CPU 8                              MDC017
         DC    X'0040' -      CPU 9                              MDC017
         DC    X'0020' -      CPU A                              MDC017
         DC    X'0010' -      CPU B                              MDC017
         DC    X'0008' -      CPU C                              MDC017
         DC    X'0004' -      CPU D                              MDC017
         DC    X'0002' -      CPU E                              MDC017
         DC    X'0001' -      CPU F                              MDC017
         DC    XL152'00' -    RESERVED
         MEND  , -   */
*%CSDL2 : ;
*
*DECLARE
*  1 CSD      BASED(CVTCSD)  BDY(DWORD),
*   2 CSDCSD      CHAR(4) BDY(WORD),     /* CONTROL BLOCK ACRONYM IN
*                                           EBCDIC                   */
*   2 CSDCPUJS    BIT(16) BDY(WORD),     /* BIT MASK OF CPU'S
*                                           AVAILABLE FOR JOB
*                                           SCHEDULING               */
*   2 CSDCHAD     FIXED(15),             /* HIGHEST CHANNEL ADDRESS
*                                           SYSGEN'ED          MDC014*/
*   2 CSDCPUAL    BIT(16) BDY(WORD),     /* BIT MASK OF CPU'S
*                                           CURRENTLY ALIVE    MDC015*/
*    3 CSDSAFF     BIT(16),              /* BIT MASK OF CPU'S
*                                           AVAILABLE TO PROCESS
*                                           SERVICE REQUESTS (SRB'S)
*                                                              MDC018*/
*   2 CSDCPUOL    FIXED(15),             /* NUMBER OF CPU'S CURRENTLY
*                                           ALIVE              MDC016*/
*   2 CSDSCWRD    CHAR(4) BDY(WORD),     /* SUPERVISOR CONTROL
*                                           INFORMATION              */
*    3 CSDSCFL1    BIT(8),               /* FIRST BYTE OF CSDSCWRD   */
*     4 CSDRV042 BIT(1),                 /* RESERVED           MDC011*/
*     4 CSDSYSND BIT(1),                 /* SYSTEM-WIDE NON-
*                                           DISPATCHABILITY BIT.
*                                           INDICATES ALL ADDRESS
*                                           SPACES (SRB'S AND TASKS)
*                                           ARE NON-DISPATCHABLE
*                                           EXCEPT THOSE WITH EXEMPT
*                                           STATUS (ASCBXMPT)        */
*     4 CSDRV001 BIT(1),                 /* RESERVED                 */
*     4 CSDRV002 BIT(1),                 /* RESERVED                 */
*     4 CSDRV003 BIT(1),                 /* RESERVED                 */
*     4 CSDRV004 BIT(1),                 /* RESERVED                 */
*     4 CSDRV005 BIT(1),                 /* RESERVED                 */
*     4 CSDRV006 BIT(1),                 /* RESERVED                 */
*    3 CSDSCFL2    BIT(8),               /* SECOND BYTE OF CSDSCWRD  */
*     4 CSDRV007 BIT(1),                 /* RESERVED                 */
*     4 CSDRV008 BIT(1),                 /* RESERVED                 */
*     4 CSDRV009 BIT(1),                 /* RESERVED                 */
*     4 CSDRV010 BIT(1),                 /* RESERVED                 */
*     4 CSDRV011 BIT(1),                 /* RESERVED                 */
*     4 CSDRV012 BIT(1),                 /* RESERVED                 */
*     4 CSDRV013 BIT(1),                 /* RESERVED                 */
*     4 CSDRV014 BIT(1),                 /* RESERVED                 */
*    3 CSDSCFL3    BIT(8),               /* THIRD BYTE OF CSDSCWRD   */
*     4 CSDRV015 BIT(1),                 /* RESERVED                 */
*     4 CSDRV016 BIT(1),                 /* RESERVED                 */
*     4 CSDRV017 BIT(1),                 /* RESERVED                 */
*     4 CSDRV018 BIT(1),                 /* RESERVED                 */
*     4 CSDRV019 BIT(1),                 /* RESERVED                 */
*     4 CSDRV020 BIT(1),                 /* RESERVED                 */
*     4 CSDRV021 BIT(1),                 /* RESERVED                 */
*     4 CSDRV022 BIT(1),                 /* RESERVED                 */
*    3 CSDSCFL4    BIT(8),               /* FOURTH BYTE OF CSDSCWRD  */
*     4 CSDRV023 BIT(1),                 /* RESERVED                 */
*     4 CSDRV024 BIT(1),                 /* RESERVED                 */
*     4 CSDRV025 BIT(1),                 /* RESERVED                 */
*     4 CSDRV026 BIT(1),                 /* RESERVED                 */
*     4 CSDRV027 BIT(1),                 /* RESERVED                 */
*     4 CSDRV028 BIT(1),                 /* RESERVED                 */
*     4 CSDRV029 BIT(1),                 /* RESERVED                 */
*     4 CSDRV030 BIT(1),                 /* RESERVED                 */
*   2 CSDRV043    FIXED(31),             /* RESERVED    MDC012-MDC013*/
*   2 CSDMF1CP    BIT(16),               /* BIT MASK OF CPU'S VARIED
*                                           ONLINE OR OFFLINE.  MF/1
*                                           WILL TEST THESE FLAGS AT
*                                           REPORTING INTERVALS FOR
*                                           CPU VARY ACTIVITY AND
*                                           THEN RESET HALFWORD TO
*                                           ZERO               MDC007*/
*   2 CSDACR      CHAR(1),               /* VALUE OF X'FF' MEANS ACR
*                                           IN IS PROGRESS WITHIN
*                                           SYSTEM             MDC006*/
*   2 CSDFLAGS    BIT(8),                /* FLAG BYTE          MDC001*/
*    3 CSDMP    BIT(1),                  /* INDICATES MULTIPROCESSING
*                                           SYSTEM INSTRUCTION SET IS
*                                           AVAILABLE.  CSDCPUAL MUST
*                                           BE EXAMINED TO DETERMINE
*                                           WHETHER A MULTIPROCESSING
*                                           SYSTEM IS RUNNING OR JUST
*                                           HALF A MULTIPROCESSING
*                                           SYSTEM. (MDC300) @Z30AQ9A*/
*    3 CSDRV032 BIT(1),                  /* RESERVED                 */
*    3 CSDRV033 BIT(1),                  /* RESERVED                 */
*    3 CSDRV034 BIT(1),                  /* RESERVED                 */
*    3 CSDRV035 BIT(1),                  /* RESERVED                 */
*    3 CSDRV036 BIT(1),                  /* RESERVED                 */
*    3 CSDRV037 BIT(1),                  /* RESERVED                 */
*    3 CSDRV038 BIT(1),                  /* RESERVED                 */
*   2 CSDMAFF   (10) CHAR(8),            /* CPU-AFFINITY FEATURE
*                                           TABLE                    */
*   2 CSDRV044    BIT(16),               /* RESERVED           MDC018*/
*   2 CSDDDRCT    FIXED(15),             /* DDR DEVICE ALLOCATION
*                                           INTERFACE COUNT FIELD.
*                                           ACCESSED AND MODIFIED
*                                           UNDER CMS LOCK.
*                                           INCREMENTED BY DDR TO
*                                           INDICATE TO DYNAMIC
*                                           ALLOCATION THAT DDR
*                                           EXCHANGED ADDRESSES IN
*                                           THE IOS LOOKUP TABLE.
*                                                              MDC008*/
*   2 CSDGDCC     FIXED(31),             /* COUNT OF USABLE CLOCK
*                                           COMPARATORS CURRENTLY IN
*                                           THE CONFIGURATION  MDC003*/
*   2 CSDGDINT    FIXED(31),             /* COUNT OF USABLE CPU
*                                           TIMERS CURRENTLY IN THE
*                                           CONFIGURATION      MDC004*/
*   2 CSDGDTOD    FIXED(31),             /* COUNT OF CPU'S WHICH HAVE
*                                           ACCESS TO A GOOD TOD
*                                           CLOCK              MDC005*/
*   2 CSDTCNT     FIXED(31),             /* COUNT OF TAPE ALLOCATIONS
*                                           IN PROGRESS        MDC009*/
*   2 CSDUCNT     FIXED(31),             /* COUNT OF UNIT RECORD
*                                           ALLOCATIONS IN PROGRESS
*                                                              MDC010*/
*   2 CSDMASK   (16) CHAR(2),            /* TABLE OF BIT MASKS FOR
*                                           TESTING BITS IN CSDCPUAL
*                                                              MDC017*/
*   2 *           CHAR(152) BDY(DWORD);  /* RESERVED                 */
T(1),                  /* INDICATES MULTIPROCESSING   
                          SYSTEM INSTRUCTION SET IS    
                          AVAILABLE.  CSDCPUAL MUST    *
                          BE EXAMINED TO DETERMINE     *
                          WHETHER A MULTIPROCESSING   *
                          SYSTEM IS RUNNING OR JUST   *
                          HALF A MULTIPROCESSING      &*
                          SYSTEM. (MDC300) @Z30AQ9A*/ *    3 CSDRV03
T(1),                  /* RESERVED                 */ 
T(1),                  /* RESERVED                 */ &
T(1),                  /* RESERVED                 */ 
T(1),                  /* RESERVED                 */ -
T(1),                  /* RESERVED                 */ 
T(1),                  /* RESERVED                 */ 
T(1),                  /* RESERVED                 */ 
0) CHAR(8),            /* CPU-AFFINITY FEATURE        
                          TABLE                    */ e
BIT(16),               /* RESERVED           MDC018*/ 
FIXED(15),             /* DDR DEVICE ALLOCATION       
                          INTERFACE COUNT FIELD.      
                          ACCESSED AND MODIFIED       
                          UNDER CMS LOCK.             
                          INCREMENTED BY DDR TO       	
                          INDICATE TO DYNAMIC         
                          ALLOCATION THAT DDR         
                          EXCHANGED ADDRESSES IN      
                          THE IOS LOOKUP TABLE.       
                                             MDC008*/ *   2 CSDGDCC
FIXED(31),             /* COUNT OF USABLE CLOCK       
                          COMPARATORS CURRENTLY IN    

                          THE CONFIGURATION  MDC003*/ 
FIXED(31),             /* COUNT OF USABLE CPU         

                          TIMERS CURRENTLY IN THE     
                          CONFIGURATION      MDC004*/ 
FIXED(31),             /* COUNT OF CPU'S WHICH HAVE    
                          ACCESS TO A GOOD TOD        
                          CLOCK              MDC005*/ &
FIXED(31),             /* COUNT OF TAPE ALLOCATIONS   -
                          IN PROGRESS        MDC009*/ 
FIXED(31),             /* COUNT OF UNIT RECORD        
                          ALLOCATIONS IN PROGRESS     
                                             MDC010*/ 
6) CHAR(2),            /* TABLE OF BIT MASKS FOR      n
                          TESTING BITS IN CSDCPUAL    
                                             MDC017*/ 	
./ ADD NAME=IHACSW
         MACRO
         IHACSW  &DSECT=
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73124/021160           */
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHACSW
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  DESCRIPTIVE-NAME = CHANNEL STATUS WORD
.*
.*01  FUNCTION = USED TO MAC THE CHANNEL STATUS WORD.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING.
.*
.*04        VALUE = 'YES' OR 'NO'.
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 REL 2
.*       MACRO CREATED
.*
.*
.**** END OF SPECIFICATIONS ***/
*
* THIS DSECT DEFINES FIELDS AND ASSOCIATED FLAGS OF THE CHANNEL
* STATUS WORD.
* IF DSECT=YES IS CODED, A DSECT STATEMENT WILL BE EXPANDED. THE
* DEFAULT IS DSECT=YES.
*
* DESCRIPTIVE LAYOUT
*
*    _____________________________________________________
*                                                    
*     PROT  ADDR OF LAST CCW  STATUS      RESIDUAL   
*     KEY   EXECUTED + 8      FLAGS       COUNT      
*    ________________________________________________
*
         AIF   ('&DSECT' EQ 'NO').NODSECT  IF DSECT=YES IS NOT CODED
.*                                           DO NOT GIVE DSECT STMT
         DSECT
.NODSECT ANOP
CSW      DS    0D                       BEGINNING BOUNDRY FOR CSW
CSWADDRA DS    0A                       SAME AS CSWADDRB BELOW
CSWKEY   DS    B                        PROTECTION KEY (BITS 4-7 ZERO)
CSWADDRB DS    AL3                      ADDR OF LAST CCW EXECUTED + 8
CSWSTATS DS    0H                       ENDING I/O STATUS BITS
CSWSTAT1 DS    B                        STATUS BYTE ONE (BITS 0-7)
CSWATTN  EQU   X'80'                    ATTENTION BIT
CSWSTMOD EQU   X'40'                    STATUS MODIFIER BIT
CSWCUEND EQU   X'20'                    CONTROL UNIT END BIT
CSWBUSY  EQU   X'10'                    BUSY BIT
CSWCHEND EQU   X'08'                    CHANNEL END BIT
CSWDVEND EQU   X'04'                    DEVICE END BIT
CSWUNCHK EQU   X'02'                    UNIT CHECK BIT
CSWUNEXP EQU   X'01'                    UNIT EXCEPTION BIT
CSWSTAT2 DS    B                        STATUS BYTE TWO (BITS 8-15)
CSWPCI   EQU   X'80'                    PGM CONTROLLED INTERRUPTION BIT
CSWINCOR EQU   X'40'                    INCORRECT LENGTH INDICATION BIT
CSWPGCHK EQU   X'20'                    PROGRAM CHECK BIT
CSWPRCHK EQU   X'10'                    PROTECTION CHECK BIT
CSWCDCHK EQU   X'08'                    CHANNEL DATA CHECK BIT
CSWCCCHK EQU   X'04'                    CHANNEL CONTROL CHECK BIT
CSWICCHK EQU   X'02'                    INTERFACE CONTROL CHECK BIT
CSWCHCHK EQU   X'01'                    CHAINING CHECK BIT
CSWBYTE  DS    H                        BYTE COUNT
         MEND
./ ADD NAME=IHADECB
*
*        %GOTO DECBL1;      /*
         MACRO
         IHADECB &DSECT=YES
         AIF   ('&DSECT' EQ 'NO').NODSCT
DECB     DSECT , -            DECBPTR
         AGO   .CONT
.NODSCT  ANOP
         DS    0D
DECB     EQU   * -            DECBPTR
.CONT    ANOP  ,  */
*%DECBL1 : ;
*
*/* **************************************************************** */
*/*            DATA EVENT CONTROL BLOCKS FOR -                       */
*/*            BSAM, BISAM, BDAM, QTAM, BTAM                         */
*/*                                                                  */
*/*  OS/VS2 RELEASE 3, OS/VS1 RELEASE 4, 08/30/74, LEVEL=1           */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
*/*             USING ON DECB GIVES ADDRESSABILITY FOR ALL SYMBOLS.  */
*/*      PL/S - DCL DECBPT PTR                                       */
*/* **************************************************************** */
*%GOTO DECBL2;  /*
         SPACE 1
         IEZBITS , -          SYMBOLIC BIT DEFINITIONS
         SPACE 1
***********************************************************************
*              DATA EVENT CONTROL BLOCK FOR BSAM                      *
***********************************************************************
         SPACE 1
DECSDECB DS    CL4 -          EVENT CONTROL BLOCK
DECBPTR  DS    0A -           FOR IBM 1419 MAGNETIC CHARACTER READER
*                             AND IBM 1275 OPTICAL READER SORTER, A
*                             POINTER TO NEXT DECB TO BE TESTED FOR
*                             COMPLETION BY THE CHECK MACRO
*                             INSTRUCTION.  (DECB CHAINING APPLIES TO
*                             THE USE OF MORE THAN ONE DEVICE.)  THIS
*                             FIELD IN THE LAST DECB MUST BE ZERO.
DECTYPE  DS    0BL2 -         TYPE OF I/O REQUEST
DECTYPE1 DS    B -            TYPE OF LENGTH OPERAND
DECLNS   EQU   BIT0 -         S CODED FOR LENGTH
DECRSV01 EQU   BIT1,,C'X' -   RESERVED
DECRSV02 EQU   BIT2,,C'X' -   RESERVED
DECRSV03 EQU   BIT3,,C'X' -   RESERVED
DECRSV04 EQU   BIT4,,C'X' -   RESERVED
DECRSV05 EQU   BIT5,,C'X' -   RESERVED
DECRSV06 EQU   BIT6,,C'X' -   RESERVED
DECRSV07 EQU   BIT7,,C'X' -   RESERVED
DECTYPE2 DS    B -            TYPE OF OPERATION
DECRDSF  EQU   BIT0 -         READ SF
DECRDSB  EQU   BIT1 -         READ SB
DECWRSF  EQU   BIT2 -         WRITE SF
DECWRSD  EQU   BIT3 -         WRITE SD
DECRSV08 EQU   BIT4,,C'X' -   RESERVED
DECWRSZ  EQU   BIT5 -         WRITE SZ
DECRSV09 EQU   BIT6,,C'X' -   RESERVED
DECWRSFR EQU   BIT7 -         WRITE SFR (BIT 2 IS ALSO ON) OR
*                             READ RBL (BIT 0 IS ALSO ON)        MDC004
DECLNGTH DS    H -            LENGTH OF KEY AND DATA
DECDCBAD DS    A -            ADDRESS OF THE DCB TO WHICH THIS I/O
*                             REQUEST IS RELATED
DECAREA  DS    A -            ADDRESS OF KEY AND DATA, OR FOR 1287 OR
*                             1288 OPTICAL READERS, THE ADDRESS OF A
*                             USER-SPECIFIED CHANNEL PROGRAM
DECIOBPT DS    A -            ADDRESS OF THE IOB
DECNEXT  DS    0A -           SAME AS DECNEXTA BELOW
DECRSV10 DS    X -            RESERVED
DECNEXTA DS    AL3 -          ADDRESS OF THE NEXT ADDRESS FEEDBACK
*                             FIELD.  PRESENT ONLY IF R IS CODED IN
*                             THE WRITE MACRO.
         SPACE 2
         ORG   DECNEXT -      FOR 3886 ONLY, DEVICE DEPENDENT FIELDS
DECBHDRA DS    A -            FOR READ RBL, ADDRESS OF 3886 DATA
*                             HEADER RECORD AFTER READ           MDC001
DECBLNNM DS    A -            FOR READ RBL, ADDRESS OF LINE NUMBER OR
*                             NEGATIVE OF LINE NUMBER            MDC002
DECBLFMT DS    A -            FOR READ RBL, ADDRESS OF LINE FORMAT
*                             NUMBER OR NEGATIVE OF LINE FORMAT
*                             NUMBER                             MDC003
         SPACE 2
***********************************************************************
*              DATA EVENT CONTROL BLOCK FOR BISAM                     *
***********************************************************************
         SPACE 1
         ORG   DECB
DECBECB  DS    0CL4 -         EVENT CONTROL BLOCK
DECBRB   DS    0A -           SAME AS DECBRBA BELOW
DECBECBF DS    B -            FLAG FIELD
DECBWAIT EQU   BIT0 -         AWAITING COMPLETION OF EVENT
DECBPOST EQU   BIT1 -         EVENT HAS COMPLETED NORMALLY OR
*                             ABNORMALLY.  IF THE EVENT COMPLETED
*                             ABNORMALLY, FIELDS DECBEXC1 AND DECBEXC2
*                             WILL SHOW THE REASON.
DECRSV11 EQU   BIT2,,C'X' -   RESERVED
DECRSV12 EQU   BIT3,,C'X' -   RESERVED
DECRSV13 EQU   BIT4,,C'X' -   RESERVED
DECRSV14 EQU   BIT5,,C'X' -   RESERVED
DECRSV15 EQU   BIT6,,C'X' -   RESERVED
DECRSV16 EQU   BIT7,,C'X' -   RESERVED
DECBRBA  DS    AL3 -          ADDRESS OF THE RB FOR THE PROGRAM
*                             AWAITING EVENT (BEFORE EVENT COMPLETION)
*                             OR RESERVED (AFTER EVENT COMPLETION)
DECBTYP1 DS    B -            OPTION BYTE
DECRSV17 EQU   BIT0,,C'X' -   RESERVED
DECRSV18 EQU   BIT1,,C'X' -   RESERVED
DECRSV19 EQU   BIT2,,C'X' -   RESERVED
DECRSV20 EQU   BIT3,,C'X' -   RESERVED
DECRSV21 EQU   BIT4,,C'X' -   RESERVED
DECRSV22 EQU   BIT5,,C'X' -   RESERVED
DECBLNS  EQU   BIT6 -         LENGTH CODED AS 'S'
DECBARS  EQU   BIT7 -         AREA CODED AS 'S'
DECBTYP2 DS    B -            TYPE OF I/O REQUEST
DECBRDK  EQU   BIT0 -         READ K
DECRSV23 EQU   BIT1,,C'X' -   RESERVED
DECBRDKU EQU   BIT2 -         READ KU
DECRSV24 EQU   BIT3,,C'X' -   RESERVED
DECBWRK  EQU   BIT4 -         WRITE K
DECBWRKN EQU   BIT5 -         WRITE KN
DECRSV25 EQU   BIT6,,C'X' -   RESERVED
DECRSV26 EQU   BIT7,,C'X' -   RESERVED
DECBLGTH DS    H -            NUMBER OF BYTES READ OR WRITTEN
DECBDCBA DS    A -            ADDRESS OF THE DATA CONTROL BLOCK
DECBAREA DS    A -            ADDRESS OF THE AREA IN STORAGE FOR THE
*                             RECORD
DECBLOGR DS    A -            ADDRESS OF THE LOGICAL RECORD
DECBKEY  DS    A -            ADDRESS OF THE KEY PORTION OF THE RECORD
DECBEXC1 DS    B -            EXCEPTIONAL CONDITION CODE BYTE 1
DECEXRNF EQU   BIT0 -         RECORD NOT FOUND
DECEXRLC EQU   BIT1 -         RECORD LENGTH CHECK
DECEXNSP EQU   BIT2 -         SPACE NOT FOUND IN WHICH TO ADD A RECORD
DECEXINV EQU   BIT3 -         INVALID REQUEST
DECEXERR EQU   BIT4 -         UNCORRECTABLE I/O ERROR
DECEXUBK EQU   BIT5 -         UNREACHABLE BLOCK
DECEXOFL EQU   BIT6 -         OVERFLOW RECORD
DECEXDUP EQU   BIT7 -         DUPLICATE RECORD PRESENTED FOR INCLUSION
*                             IN THE DATA SET
DECBEXC2 DS    B -            EXCEPTIONAL CONDITION CODE BYTE 2
DECRSV27 EQU   BIT0,,C'X' -   RESERVED
DECRSV28 EQU   BIT1,,C'X' -   RESERVED
DECRSV29 EQU   BIT2,,C'X' -   RESERVED
DECRSV30 EQU   BIT3,,C'X' -   RESERVED
DECRSV31 EQU   BIT4,,C'X' -   RESERVED
DECRSV32 EQU   BIT5,,C'X' -   RESERVED
DECEXASR EQU   BIT6 -         EXECUTION OF THE LAST CHANNEL PROGRAM WAS
*                             INSTITUTED BY AN ASYNCHRONOUS ROUTINE
DECEXRKU EQU   BIT7 -         PREVIOUS MACRO INSTRUCTION WAS READ KU
         SPACE 2
***********************************************************************
*              DATA EVENT CONTROL BLOCK FOR BDAM                      *
***********************************************************************
         SPACE 1
         ORG   DECB
         DS    0CL4 -         DECSDECB - EVENT CONTROL BLOCK
         DS    B -            COMPLETION CODE BYTE 1
DECCC2   DS    B -            COMPLETION CODE BYTE 2
DECCCRNF EQU   BIT0 -         RECORD NOT FOUND
DECCCRLC EQU   BIT1 -         RECORD LENGTH CHECK
DECCCNSP EQU   BIT2 -         SPACE NOT FOUND
DECCCINV EQU   BIT3 -         INVALID REQUEST.  (THIS CONDITION ALSO
*                             SETS A BIT IN THE NEXT BYTE.)
DECCCERR EQU   BIT4 -         UNCORRECTABLE I/O ERROR
DECCCEOD EQU   BIT5 -         END OF DATA
DECCCUER EQU   BIT6 -         UNCORRECTABLE ERROR OTHER THAN AN I/O
*                             ERROR
DECCCREX EQU   BIT7 -         A WRITE WITH EXCLUSIVE CONTROL WAS NOT
*                             PRECEDED BY A READ WITH EXCLUSIVE CONTROL
*                             (MDC300)                         @Z30AQ9A
DECCC3   DS    B -            COMPLETION CODE BYTE 3
DECRSV33 EQU   BIT0,,C'X' -   RESERVED
DECCCWRI EQU   BIT1 -         A WRITE MACRO INSTRUCTION WAS ADDRESSED
*                             TO AN INPUT DATA SET
DECCCEXS EQU   BIT2 -         AN EXTENDED SEARCH WAS SPECIFIED WITH THE
*                             DCBLIMCT FIELD SET TO ZERO
DECCCNBK EQU   BIT3 -         THE BLOCK REQUESTED IS NOT WITHIN THE
*                             DATA SET
DECCCWDI EQU   BIT4 -         A WRITE-BY-IDENTIFICATION (DI) ADDRESSED
*                             RECORD ZERO
DECCCSDK EQU   BIT5 -         A SEARCH-ON-KEY (DK) WAS SPECIFIED WITH
*                             THE DCBKEYLE FIELD SET TO ZERO OR WITHOUT
*                             AN ADDRESS FOR THE KEY
DECCCOPT EQU   BIT6 -         A MACRO INSTRUCTION USED AN OPTION NOT
*                             SET IN THE DCB
DECCCKFF EQU   BIT7 -         THE KEY FOR THE FIXED-LENGTH RECORD TO BE
*                             ADDED BEGINS WITH X'FF'
DECRSV34 DS    X -            RESERVED
         DS    0BL2 -         DECTYPE - TYPE OF I/O REQUEST
         DS    B -            DECTYPE1 - FIRST BYTE OF DECTYPE
DECVERFY EQU   BIT0 -         VERIFY
DECOFLOW EQU   BIT1 -         OVERFLOW
DECEXSRC EQU   BIT2 -         EXTENDED SEARCH
DECFDBCK EQU   BIT3 -         FEEDBACK
DECACTAD EQU   BIT4 -         ACTUAL ADDRESSING
DECDYNBF EQU   BIT5 -         DYNAMIC BUFFERING
DECRDEX  EQU   BIT6 -         READ EXCLUSIVE
DECRELBA EQU   BIT7 -         RELATIVE BLOCK ADDRESSING
         DS    B -            DECTYPE2 - SECOND BYTE OF DECTYPE
DECKEYS  EQU   BIT0 -         S CODED FOR KEY ADDRESS
DECBKLNS EQU   BIT1 -         S CODED FOR BLOCK LENGTH
DECTYPRU EQU   BIT2+BIT3 -    RU IS SUFFIXED TO THE TYPE, INDICATING
*                             THAT THE FEEDBACK ADDRESS POINTED TO BY
*                             DECNXADR CAN BE THE ADDRESS OF EITHER THE
*                             NEXT DATA RECORD OR THE NEXT CAPACITY
*                             RECORD, WHICHEVER OCCURS FIRST
DECTYPR  EQU   BIT3 -         R IS SUFFIXED TO THE TYPE, INDICATING
*                             THAT THE FEEDBACK ADDRESS POINTED TO BY
*                             DECNXADR IS THE ADDRESS OF THE NEXT DATA
*                             RECORD.  (BIT 2 IS ZERO)
DECOPRD  EQU   BIT4 -         TYPE OF OPERATION - 0 IS WRITE, 1 IS READ
DECSRKEY EQU   BIT5 -         TYPE OF SEARCH ARGUMENT - 0 IS ID,
*                             1 IS KEY
DECWRADD EQU   BIT6 -         ADD OPTION OF WRITE OPERATION
DECRSV35 EQU   BIT7,,C'X' -   RESERVED
         DS    H -            DECLNGTH - LENGTH OF DATA
         DS    A -            DECDCBAD - ADDRESS OF DCB TO WHICH THIS
*                             I/O REQUEST IS RELATED
         DS    A -            DECAREA - ADDRESS OF THE DATA
         DS    A -            DECIOBPT - ADDRESS OF THE IOB
DECKYADR DS    A -            ADDRESS OF THE KEY
DECRECPT DS    A -            ADDRESS OF THE BLOCK REFERENCE FIELD
DECNA    DS    0A -           SAME AS DECNAA BELOW
DECRSV36 DS    X -            RESERVED
DECNAA   DS    AL3 -          ADDRESS OF THE NEXT ADDRESS FEEDBACK
*                             FIELD.  PRESENT ONLY IF R OR RU IS CODED
*                             IN THE READ MACRO.
         SPACE 2
***********************************************************************
*              DATA EVENT CONTROL BLOCK FOR QTAM                      *
***********************************************************************
         SPACE 1
         ORG   DECB
LINEDECB DS    CL4 -          ALWAYS ZERO
DECRSV37 DS    X -            RESERVED
DECOPCOD DS    C -            OPERATION CODE FOR CURRENT SEGMENT
         DS    H -            DECLNGTH - LENGTH OF INPUT AREA FOR
*                             INITIAL READ
         DS    A -            DECDCBAD - ADDRESS OF DCB
         DS    A -            DECAREA - STARTING ADDRESS FOR DATA IN A
*                             BUFFER
DECRSV38 DS    XL4 -          RESERVED
DECCPOL  DS    0A -           SAME AS DECCPOLA BELOW
DECNMMSG DS    FL1 -          NUMBER OF MESSAGES RECEIVED
DECCPOLA DS    AL3 -          ADDRESS OF CURRENTLY ACTIVE ENTRY IN
*                             POLLING LIST
DECRSV39 DS    X -            RESERVED
DECUCBDX DS    FL1 -          INDEX TO UCB ADDRESS IN DEB
DECRSV40 DS    XL2 -          RESERVED
DECRSV41 DS    XL4 -          RESERVED
DECADRCH DS    A -            ADDRESS OF ADDRESSING CHARACTERS IN
*                             TERMINAL ENTRY
         DS    0A -           DECPOLPT - ADDRESS OF POLLING LIST
DECRSV42 DS    X -            RESERVED
         DS    AL3 -          DECPOLPA - ADDRESS OF POLLING LIST
         SPACE 2
***********************************************************************
*              DATA EVENT CONTROL BLOCK FOR BTAM                      *
***********************************************************************
         SPACE 1
         ORG   DECB
         DS    CL4 -          DECSDECB - EVENT CONTROL BLOCK
         DS    0BL2 -         DECTYPE - PROGRAMMING INDICATORS
         DS    B -            DECTYPE1 - FIRST BYTE OF DECTYPE
DECRDAPL EQU   BIT0 -         READ, USING AUTOPOLL
DECRSV43 EQU   BIT1,,C'X' -   RESERVED
DECRSV44 EQU   BIT2,,C'X' -   RESERVED
DECRSV45 EQU   BIT3,,C'X' -   RESERVED
DECRSV46 EQU   BIT4,,C'X' -   RESERVED
DECSTRME EQU   BIT5 -         'S' CODED FOR TERMINAL ENTRY
DECSAREA EQU   BIT6 -         'S' CODED FOR AREA
DECSLNTH EQU   BIT7 -         'S' CODED FOR LENGTH
         DS    C -            DECTYPE2 - COMMAND CODE
         DS    H -            DECLNGTH - LENGTH OF BUFFER OR MESSAGE
*                             AREA
         DS    0A -           DECDCBAD - ADDRESS OF ASSOCIATED DCB
DECBUFCT DS    0FL1 -         CONTAINS A RUNNING COUNT OF BUFFERS
*                             OBTAINED BY BTAM FOR THE CURRENT READ
*                             OPERATION.  (DYNAMIC BUFFERING ONLY.)
*                             USE DIFFERS DURING BSC AND 2760 ONLINE
*                             TEST.
DECONLTT DS    B -            FLAG BYTE FOR BSC AND 2760 ONLINE TEST
DECONLTS EQU   BIT0 -         IF ZERO, ONLINE TEST REQUESTED BY RFT
*                             MESSAGE (BSC).  IF ONE, ONLINE TEST
*                             INITIATED BY ONLTST MACRO INSTRUCTION
*                             (BSC).
DECRCVMS EQU   BIT1 -         IF ZERO, SENDING TEST MESSAGES (BSC).
*                             IF ONE, RECEIVING TEST MESSAGES (BSC) OR
*                             TYPE 11 ONLINE TEST FOR 2760 OPTICAL
*                             IMAGE UNIT.
DECRSV47 EQU   BIT2,,C'X' -   RESERVED
DECRSV48 EQU   BIT3,,C'X' -   RESERVED
DECRSV49 EQU   BIT4,,C'X' -   RESERVED
DECRSV50 EQU   BIT5,,C'X' -   RESERVED
DECRSV51 EQU   BIT6,,C'X' -   RESERVED
DECRSV52 EQU   BIT7,,C'X' -   RESERVED
DECDCBAA DS    AL3 -          ADDRESS OF ASSOCIATED DCB
         DS    A -            DECAREA - ADDRESS OF BUFFER OR MESSAGE
*                             AREA
DECSENS0 DS    B -            SENSE INFORMATION
DECSENS1 DS    B -            RESERVED
DECCOUNT DS    H -            RESIDUAL COUNT FROM CSW FOR LAST CCW
*                             EXECUTED
DECENTRY DS    0A -           ADDRESS OF THE TERMINAL LIST
DECCMCOD DS    C -            COMMAND FOR WHICH THE ERROR OCCURRED
DECENTRA DS    AL3 -          ADDRESS OF THE TERMINAL LIST
DECFLAGS DS    B -            OPERATION STATUS
DECWACK  EQU   BIT0+BIT1 -    WACK WAS RECEIVED (BSC)
DECERRMS EQU   BIT0 -         ERROR STATUS MESSAGE WAS RECEIVED (BSC).
*                             BIT 1 IS OFF.
DECDIFAC EQU   BIT1 -         ACKNOWLEDGMENT OTHER THAN ACK-0 OR ACK-1
*                             RECEIVED (BSC)
DECALTAC EQU   BIT2 -         ACKNOWLEDGMENT ALTERNATION INCORRECT
DECBADID EQU   BIT3 -         FOR TWX 33/35 STATION AND BSC STATION,
*                             INCORRECT ID RECEIVED.  FOR AUTOPOLL,
*                             INDEX BYTE RECEIVED DOES NOT MATCH AN
*                             ACTIVE ONE.  FOR BSC NONSWITCHED
*                             POINT-TO-POINT LINE, CONTENTION OCCURRED.
*                             FOR WTTA, CONTENTION OCCURRED OR
*                             INCORRECT ID RECEIVED.
DECNOBUF EQU   BIT4 -         FOR READ, DYNAMIC BUFFERING, NO BUFFER
*                             WAS AVAILABLE.  (MESSAGE LOST)
DECNEGRP EQU   BIT5 -         FOR OPENLST, POLLING, NEGATIVE RESPONSE
*                             TO POLLING RECEIVED.  FOR WRAPLST, ALL
*                             ENTRIES ARE INACTIVE.  FOR ADDRESSING,
*                             NEGATIVE RESPONSE TO ADDRESSING
*                             RECEIVED.  FOR WTTA, LAST MESSAGE
*                             RECEIVED ENDED WITH EOT OR TIME-OUT.
*                             FOR 2741, POWER IS OFF OR OTHER
*                             INTERVENTION REQUIRED CONDITION EXISTS.
DECREVRS EQU   BIT6 -         FOR WTTA, MESSAGE ENDED WITH WRU SIGNAL.
*                             FOR BSC STATIONS, REVERSE INTERRUPT (RVI)
*                             SEQUENCE WAS RECEIVED (SEE ALSO BIT 1).
*                             FOR 2741, WRITE OPERATION WAS ENDED BY
*                             TERMINAL INTERRUPT.
DECSSMSG EQU   BIT6 -         A 3270 REMOTE SENSE/STATUS MESSAGE WAS
*                             RECEIVED IF THIS BIT IS ONE AND BIT 1
*                             IS ZERO                            ICB479
DECSTXNQ EQU   BIT7 -         FOR WTTA, CONTENTION CONDITION WAS
*                             ENCOUNTERED.  FOR BSC STATIONS, STX ENQ
*                             SEQUENCE WAS RECEIVED.
DECRLN   DS    FL1 -          RELATIVE LINE NUMBER
DECRESPN DS    CL2 -          FOR BSC OPERATIONS, RESPONSE FROM A
*                             TERMINAL TO ADDRESSING.  FOR STOP-START
*                             OPERATIONS, BYTE 1 IS RESPONSE FROM A
*                             TERMINAL TO ADDRESSING AND BYTE 2 IS
*                             VERTICAL REDUNDANCY CHARACTER AND
*                             LONGITUDINAL REDUNDANCY CHARACTER
*                             (VRC/LRC) RESPONSE.
DECTPCOD DS    C -            TP OPERATION CODE
DECERRST DS    B -            I/O ERROR STATUS FLAGS
DECSIO3  EQU   BIT0 -         SIO RESULTED IN A CONDITION CODE OF 3
DECUNDEF EQU   BIT1 -         UNDEFINED ERROR CONDITION
DECERPER EQU   BIT2 -         AN ERROR CONDITION OCCURRED DURING AN I/O
*                             OPERATION INITIATED BY ERROR RECOVERY
*                             ROUTINES
DECDIAGN EQU   BIT3 -         DIAGNOSTIC WRITE/READ OPERATION ENDED
*                             BECAUSE OF ERROR (2701 ONLY)
DECDSABL EQU   BIT4 -         DISABLE COMMAND ISSUED TO SWITCHED LINE
*                             BY ERROR RECOVERY ROUTINE BECAUSE OF
*                             PERMANENT ERROR ON THAT LINE
DECRSV53 EQU   BIT5,,C'X' -   RESERVED
DECRSV54 EQU   BIT6,,C'X' -   RESERVED
DECRSV55 EQU   BIT7,,C'X' -   RESERVED
DECCSWST DS    BL2 -          STATUS BITS FROM CSW FOR LAST CCW
*                             EXECUTED
DECADRPT DS    A -            ADDRESS OF ADDRESSING LIST ENTRY USED IN
*                             PREVIOUS OPERATION
DECPOLPT DS    0A -           SAME AS DECPOLPA BELOW
DECNDXPL DS    FL1 -          FOR AUTOPOLL, INDEX TO CURRENT ENTRY IN
*                             POLLING LIST
DECPOLPA DS    AL3 -          FOR PROGRAMMED POLLING, ADDRESS OF THE
*                             CURRENT ENTRY IN THE POLLING LIST.  FOR
*                             AUTOPOLL, ADDRESS OF POLLING LIST.  FOR
*                             BSC ON-LINE TEST, ADDRESS OF TEXT DATA.
         SPACE 1
*              BSC EXTENSION
*        FIELDS ARE PRESENT ONLY IF A SUBLIST IS CODED FOR THE
*        AREA AND LENGTH OPERANDS OF THE READ OR WRITE MACRO
*        INSTRUCTION THAT DEFINES THE DECB.
         SPACE 1
DECRSV56 DS    XL2 -          RESERVED
DECWLNG  DS    H -            LENGTH, IN BYTES, OF THE DATA AREA IN
*                             LEADING-GRAPHICS AND CONVERSATIONAL TYPE
*                             OPERATIONS OR OF THE AREA CONTAINING THE
*                             TONE CHARACTERS IN READ CONNECT WITH TONE
*                             (TCW) OPERATIONS
DECWAREA DS    A -            ADDRESS OF THE DATA AREA IN
*                             LEADING-GRAPHICS AND CONVERSATIONAL
*                             OPERATIONS, OR OF THE AREA CONTAINING THE
*                             TONE CHARACTERS IN READ TCW OPERATIONS
         MEND  , */
*%DECBL2 :  ;
*
*
*/* **************************************************************** */
*/*            DATA EVENT CONTROL BLOCK FOR BSAM                     */
*/* **************************************************************** */
*
*DECLARE
*  1 DECB     BASED(DECBPT) BDY(WORD),
*   2 DECSDECB    CHAR(4) BDY(WORD),     /* EVENT CONTROL BLOCK      */
*   2 DECBPTR     PTR(31),               /* FOR IBM 1419 MAGNETIC
*                                           CHARACTER READER AND
*                                           IBM 1275 OPTICAL READER
*                                           SORTER, A POINTER TO
*                                           NEXT DECB TO BE TESTED
*                                           FOR COMPLETION BY THE
*                                           CHECK MACRO INSTRUCTION.
*                                           (DECB CHAINING APPLIES TO
*                                           THE USE OF MORE THAN ONE
*                                           DEVICE.)  THIS FIELD IN
*                                           THE LAST DECB MUST BE
*                                           ZERO.                    */
*    3 DECTYPE     CHAR(2),              /* TYPE OF I/O REQUEST      */
*     4 DECTYPE1    CHAR(1),             /* TYPE OF LENGTH OPERAND   */
*      5 DECLNS   BIT(1),                /* S CODED FOR LENGTH       */
*      5 DECRSV01 BIT(1),                /* RESERVED                 */
*      5 DECRSV02 BIT(1),                /* RESERVED                 */
*      5 DECRSV03 BIT(1),                /* RESERVED                 */
*      5 DECRSV04 BIT(1),                /* RESERVED                 */
*      5 DECRSV05 BIT(1),                /* RESERVED                 */
*      5 DECRSV06 BIT(1),                /* RESERVED                 */
*      5 DECRSV07 BIT(1),                /* RESERVED                 */
*     4 DECTYPE2    CHAR(1),             /* TYPE OF OPERATION        */
*      5 DECRDSF  BIT(1),                /* READ SF                  */
*      5 DECRDSB  BIT(1),                /* READ SB                  */
*      5 DECWRSF  BIT(1),                /* WRITE SF                 */
*      5 DECWRSD  BIT(1),                /* WRITE SD                 */
*      5 DECRSV08 BIT(1),                /* RESERVED                 */
*      5 DECWRSZ  BIT(1),                /* WRITE SZ                 */
*      5 DECRSV09 BIT(1),                /* RESERVED                 */
*      5 DECWRSFR BIT(1),                /* WRITE SFR (BIT 2 IS ALSO
*                                           ON) OR READ RBL (BIT 0 IS
*                                           ALSO ON)           MDC004*/
*    3 DECLNGTH    FIXED(15),            /* LENGTH OF KEY AND DATA   */
*   2 DECDCBAD    PTR(31),               /* ADDRESS OF THE DCB TO
*                                           WHICH THIS I/O REQUEST
*                                           IS RELATED               */
*   2 DECAREA     PTR(31),               /* ADDRESS OF KEY AND DATA,
*                                           OR FOR 1287 OR 1288
*                                           OPTICAL READERS, ADDRESS
*                                           OF A USER-SPECIFIED
*                                           CHANNEL PROGRAM          */
*   2 DECIOBPT    PTR(31),               /* ADDRESS OF THE IOB       */
*   2 DECNEXT     PTR(31),               /* SAME AS DECNEXTA BELOW   */
*    3 DECRSV10    CHAR(1),              /* RESERVED                 */
*    3 DECNEXTA    PTR(24);              /* ADDRESS OF THE NEXT
*                                           ADDRESS FEEDBACK FIELD.
*                                           PRESENT ONLY IF R IS
*                                           CODED IN THE WRITE MACRO.*/
*
*
*DECLARE 1 DECBS05
*%IF IKEPLS='2'  %THEN
*    %GOTO DECBA1;
*      BASED(ADDR(DECNEXT)) BDY(WORD),
*%GOTO DECBA2;
*%DECBA1 : ;
*      DEF(DECNEXT) BDY(WORD),
*%DECBA2 : ;
*                                        /* FOR 3886 ONLY, DEVICE
*                                           DEPENDENT FIELDS         */
*   2 DECBHDRA    PTR(31),               /* FOR READ RBL, ADDRESS OF
*                                           3886 DATA HEADER RECORD
*                                           AFTER READ         MDC001*/
*   2 DECBLNNM    PTR(31),               /* FOR READ RBL, ADDRESS OF
*                                           LINE NUMBER OR NEGATIVE
*                                           OF LINE NUMBER     MDC002*/
*   2 DECBLFMT    PTR(31);               /* FOR READ RBL, ADDRESS OF
*                                           LINE FORMAT NUMBER OR
*                                           NEGATIVE OF LINE FORMAT
*                                           NUMBER             MDC003*/
*
*
*/* **************************************************************** */
*/*            DATA EVENT CONTROL BLOCK FOR BISAM                    */
*/* **************************************************************** */
*
*DECLARE 1  DECBS01
*      BASED(DECBPT) BDY(WORD),
*   2 DECBECB     CHAR(4)  BDY(WORD),    /* EVENT CONTROL BLOCK      */
*    3 DECBRB      PTR(31),              /* SAME AS DECBRBA BELOW    */
*     4 DECBECBF    CHAR(1),             /* FLAG FIELD               */
*      5 DECBWAIT BIT(1),                /* AWAITING COMPLETION OF
*                                           EVENT                    */
*      5 DECBPOST BIT(1),                /* EVENT HAS COMPLETED
*                                           NORMALLY OR ABNORMALLY.
*                                           IF THE EVENT COMPLETED
*                                           ABNORMALLY, FIELDS
*                                           DECBEXC1 AND DECBEXC2
*                                           WILL SHOW THE REASON.    */
*      5 DECRSV11 BIT(1),                /* RESERVED                 */
*      5 DECRSV12 BIT(1),                /* RESERVED                 */
*      5 DECRSV13 BIT(1),                /* RESERVED                 */
*      5 DECRSV14 BIT(1),                /* RESERVED                 */
*      5 DECRSV15 BIT(1),                /* RESERVED                 */
*      5 DECRSV16 BIT(1),                /* RESERVED                 */
*     4 DECBRBA     PTR(24),             /* ADDRESS OF THE RB FOR
*                                           THE PROGRAM AWAITING
*                                           EVENT (BEFORE EVENT
*                                           COMPLETION) OR RESERVED
*                                           (AFTER EVENT COMPLETION) */
*   2 DECBTYP1    CHAR(1),               /* OPTION BYTE              */
*    3 DECRSV17 BIT(1),                  /* RESERVED                 */
*    3 DECRSV18 BIT(1),                  /* RESERVED                 */
*    3 DECRSV19 BIT(1),                  /* RESERVED                 */
*    3 DECRSV20 BIT(1),                  /* RESERVED                 */
*    3 DECRSV21 BIT(1),                  /* RESERVED                 */
*    3 DECRSV22 BIT(1),                  /* RESERVED                 */
*    3 DECBLNS  BIT(1),                  /* LENGTH CODED AS 'S'      */
*    3 DECBARS  BIT(1),                  /* AREA CODED AS 'S'        */
*   2 DECBTYP2    CHAR(1),               /* TYPE OF I/O REQUEST      */
*    3 DECBRDK  BIT(1),                  /* READ K                   */
*    3 DECRSV23 BIT(1),                  /* RESERVED                 */
*    3 DECBRDKU BIT(1),                  /* READ KU                  */
*    3 DECRSV24 BIT(1),                  /* RESERVED                 */
*    3 DECBWRK  BIT(1),                  /* WRITE K                  */
*    3 DECBWRKN BIT(1),                  /* WRITE KN                 */
*    3 DECRSV25 BIT(1),                  /* RESERVED                 */
*    3 DECRSV26 BIT(1),                  /* RESERVED                 */
*   2 DECBLGTH    FIXED(15),             /* NUMBER OF BYTES READ OR
*                                           WRITTEN                  */
*   2 DECBDCBA    PTR(31),               /* ADDRESS OF THE DATA
*                                           CONTROL BLOCK            */
*   2 DECBAREA    PTR(31),               /* ADDRESS OF THE AREA IN
*                                           STORAGE FOR THE RECORD   */
*   2 DECBLOGR    PTR(31),               /* ADDRESS OF THE LOGICAL
*                                           RECORD                   */
*   2 DECBKEY     PTR(31),               /* ADDRESS OF THE KEY
*                                           PORTION OF THE RECORD    */
*   2 DECBEXC1    CHAR(1),               /* EXCEPTIONAL CONDITION
*                                           CODE BYTE 1              */
*    3 DECEXRNF BIT(1),                  /* RECORD NOT FOUND         */
*    3 DECEXRLC BIT(1),                  /* RECORD LENGTH CHECK      */
*    3 DECEXNSP BIT(1),                  /* SPACE NOT FOUND IN WHICH
*                                           TO ADD A RECORD          */
*    3 DECEXINV BIT(1),                  /* INVALID REQUEST          */
*    3 DECEXERR BIT(1),                  /* UNCORRECTABLE I/O ERROR  */
*    3 DECEXUBK BIT(1),                  /* UNREACHABLE BLOCK        */
*    3 DECEXOFL BIT(1),                  /* OVERFLOW RECORD          */
*    3 DECEXDUP BIT(1),                  /* DUPLICATE RECORD
*                                           PRESENTED FOR INCLUSION
*                                           IN THE DATA SET          */
*   2 DECBEXC2    CHAR(1),               /* EXCEPTIONAL CONDITION
*                                           CODE BYTE 2              */
*    3 DECRSV27 BIT(1),                  /* RESERVED                 */
*    3 DECRSV28 BIT(1),                  /* RESERVED                 */
*    3 DECRSV29 BIT(1),                  /* RESERVED                 */
*    3 DECRSV30 BIT(1),                  /* RESERVED                 */
*    3 DECRSV31 BIT(1),                  /* RESERVED                 */
*    3 DECRSV32 BIT(1),                  /* RESERVED                 */
*    3 DECEXASR BIT(1),                  /* EXECUTION OF THE LAST
*                                           CHANNEL PROGRAM WAS
*                                           INSTITUTED BY AN
*                                           ASYNCHRONOUS ROUTINE     */
*    3 DECEXRKU BIT(1);                  /* PREVIOUS MACRO
*                                           INSTRUCTION WAS READ KU  */
*
*
*/* **************************************************************** */
*/*            DATA EVENT CONTROL BLOCK FOR BDAM                     */
*/* **************************************************************** */
*
*DECLARE 1  DECBS02
*      BASED(DECBPT) BDY(WORD),
*   2 *           CHAR(4)  BDY(WORD),    /* DECSDECB - EVENT CONTROL
*                                           BLOCK                    */
*    3 *           CHAR(1),              /* COMPLETION CODE BYTE 1   */
*    3 DECCC2      CHAR(1),              /* COMPLETION CODE BYTE 2   */
*     4 DECCCRNF BIT(1),                 /* RECORD NOT FOUND         */
*     4 DECCCRLC BIT(1),                 /* RECORD LENGTH CHECK      */
*     4 DECCCNSP BIT(1),                 /* SPACE NOT FOUND          */
*     4 DECCCINV BIT(1),                 /* INVALID REQUEST.  (THIS
*                                           CONDITION ALSO SETS A BIT
*                                           IN THE NEXT BYTE.)       */
*     4 DECCCERR BIT(1),                 /* UNCORRECTABLE I/O ERROR  */
*     4 DECCCEOD BIT(1),                 /* END OF DATA              */
*     4 DECCCUER BIT(1),                 /* UNCORRECTABLE ERROR OTHER
*                                           THAN AN I/O ERROR        */
*     4 DECCCREX BIT(1),                 /* A WRITE WITH EXCLUSIVE
*                                           CONTROL WAS NOT PRECEDED
*                                           BY A READ WITH EXCLUSIVE
*                                           CONTROL (MDC300) @Z30AQ9A*/
*    3 DECCC3      CHAR(1),              /* COMPLETION CODE BYTE 3   */
*     4 DECRSV33 BIT(1),                 /* RESERVED                 */
*     4 DECCCWRI BIT(1),                 /* A WRITE MACRO INSTRUCTION
*                                           WAS ADDRESSED TO AN INPUT
*                                           DATA SET                 */
*     4 DECCCEXS BIT(1),                 /* AN EXTENDED SEARCH WAS
*                                           SPECIFIED WITH DCBLIMCT
*                                           FIELD SET TO ZERO        */
*     4 DECCCNBK BIT(1),                 /* THE BLOCK REQUESTED IS
*                                           NOT WITHIN THE DATA SET  */
*     4 DECCCWDI BIT(1),                 /* A WRITE-BY-IDENTIFICATION
*                                           (DI) ADDRESSED RECORD
*                                           ZERO                     */
*     4 DECCCSDK BIT(1),                 /* A SEARCH-ON-KEY (DK) WAS
*                                           SPECIFIED WITH THE
*                                           DCBKEYLE FIELD SET TO
*                                           ZERO OR WITHOUT AN
*                                           ADDRESS FOR THE KEY      */
*     4 DECCCOPT BIT(1),                 /* A MACRO INSTRUCTION USED
*                                           AN OPTION NOT SET IN
*                                           THE DCB                  */
*     4 DECCCKFF BIT(1),                 /* THE KEY FOR THE FIXED-
*                                           LENGTH RECORD TO BE
*                                           ADDED BEGINS WITH X'FF'  */
*    3 DECRSV34    CHAR(1),              /* RESERVED                 */
*   2 *           CHAR(2),               /* DECTYPE - TYPE OF I/O
*                                           REQUEST                  */
*    3 *           CHAR(1),              /* DECTYPE1 - FIRST BYTE OF
*                                           DECTYPE                  */
*     4 DECVERFY BIT(1),                 /* VERIFY                   */
*     4 DECOFLOW BIT(1),                 /* OVERFLOW                 */
*     4 DECEXSRC BIT(1),                 /* EXTENDED SEARCH          */
*     4 DECFDBCK BIT(1),                 /* FEEDBACK                 */
*     4 DECACTAD BIT(1),                 /* ACTUAL ADDRESSING        */
*     4 DECDYNBF BIT(1),                 /* DYNAMIC BUFFERING        */
*     4 DECRDEX  BIT(1),                 /* READ EXCLUSIVE           */
*     4 DECRELBA BIT(1),                 /* RELATIVE BLOCK ADDRESSING*/
*    3 *           CHAR(1),              /* DECTYPE2 - SECOND BYTE
*                                           OF DECTYPE               */
*     4 DECKEYS  BIT(1),                 /* S CODED FOR KEY ADDRESS  */
*     4 DECBKLNS BIT(1),                 /* S CODED FOR BLOCK LENGTH */
*     4 DECTYPRU BIT(2),                 /* RU IS SUFFIXED TO THE
*                                           TYPE, INDICATING THAT THE
*                                           FEEDBACK ADDRESS POINTED
*                                           TO BY DECNXADR CAN BE THE
*                                           ADDRESS OF EITHER THE
*                                           NEXT DATA RECORD OR THE
*                                           NEXT CAPACITY RECORD,
*                                           WHICHEVER OCCURS FIRST   */
*      5 DECTYPU  BIT(1),                /* OFF IF R IS SUFFIXED,
*                                           ONE IF RU IS SUFFIXED    */
*      5 DECTYPR  BIT(1),                /* R IS SUFFIXED TO THE TYPE,
*                                           INDICATING THAT THE
*                                           FEEDBACK ADDRESS POINTED
*                                           TO BY DECNXADR IS THE
*                                           ADDRESS OF THE NEXT DATA
*                                           RECORD  (BIT 2 IS ZERO)  */
*     4 DECOPRD  BIT(1),                 /* TYPE OF OPERATION - 0 IS
*                                           WRITE, 1 IS READ         */
*     4 DECSRKEY BIT(1),                 /* TYPE OF SEARCH ARGUMENT
*                                           - 0 IS ID,  1 IS KEY     */
*     4 DECWRADD BIT(1),                 /* ADD OPTION OF WRITE
*                                           OPERATION                */
*     4 DECRSV35 BIT(1),                 /* RESERVED                 */
*   2 *           FIXED(15),             /* DECLNGTH - LENGTH OF
*                                           DATA                     */
*   2 *           PTR(31),               /* DECDCBAD - ADDRESS OF
*                                           DCB TO WHICH THIS I/O
*                                           REQUEST IS RELATED       */
*   2 *           PTR(31),               /* DECAREA - ADDRESS OF THE
*                                           DATA                     */
*   2 *           PTR(31),               /* DECIOBPT - ADDRESS OF THE
*                                           IOB                      */
*   2 DECKYADR    PTR(31),               /* ADDRESS OF THE KEY       */
*   2 DECRECPT    PTR(31),               /* ADDRESS OF THE BLOCK
*                                           REFERENCE FIELD          */
*   2 DECNA       PTR(31),               /* SAME AS DECNAA BELOW     */
*    3 DECRSV36    CHAR(1),              /* RESERVED                 */
*    3 DECNAA      PTR(24);              /* ADDRESS OF THE NEXT
*                                           ADDRESS FEEDBACK FIELD.
*                                           PRESENT ONLY IF R OR RU
*                                           IS CODED IN READ MACRO.  */
*
*
*/* **************************************************************** */
*/*            DATA EVENT CONTROL BLOCK FOR QTAM                     */
*/* **************************************************************** */
*
*DECLARE 1  DECBS03
*      BASED(DECBPT) BDY(WORD),
*   2 LINEDECB    CHAR(4) BDY(WORD),     /* ALWAYS ZERO              */
*   2 DECRSV37    CHAR(1),               /* RESERVED                 */
*   2 DECOPCOD    CHAR(1),               /* OPERATION CODE FOR
*                                           CURRENT SEGMENT          */
*   2 *           FIXED(15),             /* DECLNGTH - LENGTH OF
*                                           INPUT AREA FOR INITIAL
*                                           READ                     */
*   2 *           PTR(31),               /* DECDCBAD - ADDRESS OF
*                                           DCB                      */
*   2 *           PTR(31),               /* DECAREA - STARTING
*                                           ADDRESS FOR DATA IN A
*                                           BUFFER                   */
*   2 DECRSV38    CHAR(4) BDY(WORD),     /* RESERVED                 */
*   2 DECCPOL     PTR(31),               /* SAME AS DECCPOLA BELOW   */
*    3 DECNMMSG    PTR(8),               /* NUMBER OF MESSAGES
*                                           RECEIVED                 */
*    3 DECCPOLA    PTR(24),              /* ADDRESS OF CURRENTLY
*                                           ACTIVE ENTRY IN POLLING
*                                           LIST                     */
*   2 DECRSV39    CHAR(1),               /* RESERVED                 */
*   2 DECUCBDX    PTR(8),                /* INDEX TO UCB ADDRESS IN
*                                           DEB                      */
*   2 DECRSV40    CHAR(2) BDY(WORD,3),   /* RESERVED                 */
*   2 DECRSV41    CHAR(4) BDY(WORD),     /* RESERVED                 */
*   2 DECADRCH    PTR(31),               /* ADDRESS OF ADDRESSING
*                                           CHARACTERS IN TERMINAL
*                                           ENTRY                    */
*   2 *           PTR(31),               /* DECPOLPT - ADDRESS OF
*                                           POLLING LIST             */
*    3 DECRSV42    CHAR(1),              /* RESERVED                 */
*    3 *           PTR(24);              /* DECPOLPA - ADDRESS OF
*                                           POLLING LIST             */
*
*
*/* **************************************************************** */
*/*            DATA EVENT CONTROL BLOCK FOR BTAM                     */
*/* **************************************************************** */
*
*DECLARE 1  DECBS04
*      BASED(DECBPT) BDY(WORD),
*   2 *           CHAR(4) BDY(WORD),     /* DECSDECB - EVENT CONTROL
*                                           BLOCK                    */
*   2 *           CHAR(2),               /* DECTYPE - PROGRAMMING
*                                           INDICATORS               */
*    3 *           CHAR(1),              /* DECTYPE1 - FIRST BYTE OF
*                                           DECTYPE                  */
*     4 DECRDAPL BIT(1),                 /* READ, USING AUTOPOLL     */
*     4 DECRSV43 BIT(1),                 /* RESERVED                 */
*     4 DECRSV44 BIT(1),                 /* RESERVED                 */
*     4 DECRSV45 BIT(1),                 /* RESERVED                 */
*     4 DECRSV46 BIT(1),                 /* RESERVED                 */
*     4 DECSTRME BIT(1),                 /* 'S' CODED FOR TERMINAL
*                                           ENTRY                    */
*     4 DECSAREA BIT(1),                 /* 'S' CODED FOR AREA       */
*     4 DECSLNTH BIT(1),                 /* 'S' CODED FOR LENGTH     */
*    3 *           CHAR(1),              /* DECTYPE2 - COMMAND
*                                           CODE                     */
*   2 *           FIXED(15),             /* DECLNGTH - LENGTH OF
*                                           BUFFER OR MESSAGE AREA   */
*   2 *           PTR(31),               /* DECDCBAD - ADDRESS OF
*                                           ASSOCIATED DCB           */
*    3 DECBUFCT    PTR(8),               /* CONTAINS A RUNNING COUNT
*                                           OF BUFFERS OBTAINED BY
*                                           BTAM FOR THE CURRENT READ
*                                           OPERATION.  (DYNAMIC
*                                           BUFFERING ONLY.)  USE
*                                           DIFFERS DURING BSC AND
*                                           2760 ONLINE TEST.        */
*     4 DECONLTT    CHAR(1),             /* FLAG BYTE FOR BSC AND
*                                           2760 ONLINE TEST         */
*      5 DECONLTS BIT(1),                /* IF ZERO, ONLINE TEST
*                                           REQUESTED BY RFT MESSAGE
*                                           (BSC).  IF ONE, ONLINE
*                                           TEST INITIATED BY ONLTST
*                                           MACRO INSTRUCTION (BSC). */
*      5 DECRCVMS BIT(1),                /* IF ZERO, SENDING TEST
*                                           MESSAGES (BSC).  IF ONE,
*                                           RECEIVING TEST MESSAGES
*                                           (BSC) OR TYPE 11 ONLINE
*                                           TEST FOR 2760 OPTICAL
*                                           IMAGE UNIT.              */
*      5 DECRSV47 BIT(1),                /* RESERVED                 */
*      5 DECRSV48 BIT(1),                /* RESERVED                 */
*      5 DECRSV49 BIT(1),                /* RESERVED                 */
*      5 DECRSV50 BIT(1),                /* RESERVED                 */
*      5 DECRSV51 BIT(1),                /* RESERVED                 */
*      5 DECRSV52 BIT(1),                /* RESERVED                 */
*    3 DECDCBAA    PTR(24),              /* ADDRESS OF ASSOCIATED
*                                           DCB                      */
*   2 *           PTR(31),               /* DECAREA - ADDRESS OF
*                                           BUFFER OR MESSAGE AREA   */
*   2 DECSENS0    CHAR(1),               /* SENSE INFORMATION        */
*   2 DECSENS1    CHAR(1),               /* RESERVED                 */
*   2 DECCOUNT    FIXED(15),             /* RESIDUAL COUNT FROM CSW
*                                           FOR LAST CCW EXECUTED    */
*   2 DECENTRY    PTR(31),               /* ADDRESS OF THE TERMINAL
*                                           LIST                     */
*    3 DECCMCOD    CHAR(1),              /* COMMAND FOR WHICH THE
*                                           ERROR OCCURRED           */
*    3 DECENTRA    PTR(24),              /* ADDRESS OF THE TERMINAL
*                                           LIST                     */
*   2 DECFLAGS    CHAR(1),               /* OPERATION STATUS         */
*    3 DECWACK  BIT(2),                  /* WACK WAS RECEIVED (BSC)  */
*     4 DECERRMS BIT(1),                 /* ERROR STATUS MESSAGE WAS
*                                           RECEIVED (BSC).  BIT 1 IS
*                                           OFF.                     */
*     4 DECDIFAC BIT(1),                 /* ACKNOWLEDGMENT OTHER
*                                           THAN ACK-0 OR ACK-1
*                                           RECEIVED (BSC)           */
*    3 DECALTAC BIT(1),                  /* ACKNOWLEDGMENT
*                                           ALTERNATION INCORRECT    */
*    3 DECBADID BIT(1),                  /* FOR TWX 33/35 STATION
*                                           AND BSC STATION,
*                                           INCORRECT ID RECEIVED.
*                                           FOR AUTOPOLL, INDEX
*                                           BYTE RECEIVED DOES NOT
*                                           MATCH AN ACTIVE ONE.
*                                           FOR BSC NONSWITCHED
*                                           POINT-TO-POINT LINE,
*                                           CONTENTION OCCURRED. FOR
*                                           WTTA, CONTENTION
*                                           OCCURRED OR INCORRECT
*                                           ID RECEIVED.             */
*    3 DECNOBUF BIT(1),                  /* FOR READ, DYNAMIC
*                                           BUFFERING, NO BUFFER
*                                           WAS AVAILABLE. (MESSAGE
*                                           LOST)                    */
*    3 DECNEGRP BIT(1),                  /* FOR OPENLST, POLLING,
*                                           NEGATIVE RESPONSE TO
*                                           POLLING RECEIVED.  FOR
*                                           WRAPLST, ALL ENTRIES
*                                           ARE INACTIVE.  FOR
*                                           ADDRESSING, NEGATIVE
*                                           RESPONSE TO ADDRESSING
*                                           RECEIVED.  FOR WTTA, LAST
*                                           MESSAGE RECEIVED ENDED
*                                           WITH EOT OR TIME-OUT.
*                                           FOR 2741, POWER IS OFF
*                                           OR OTHER INTERVENTION
*                                           REQUIRED CONDITION
*                                           EXISTS.                  */
*    3 DECREVRS BIT(1),                  /* FOR WTTA, MESSAGE ENDED
*                                           WITH WRU SIGNAL.  FOR
*                                           BSC STATIONS, REVERSE
*                                           INTERRUPT (RVI) SEQUENCE
*                                           WAS RECEIVED (SEE ALSO
*                                           BIT 1).  FOR 2741, WRITE
*                                           OPERATION WAS ENDED BY
*                                           TERMINAL INTERRUPT.      */
*     4 DECSSMSG BIT(1),                 /* A 3270 REMOTE SENSE/STATUS
*                                           MESSAGE WAS RECEIVED IF
*                                           THIS BIT IS ONE AND BIT 1
*                                           IS ZERO            ICB479*/
*    3 DECSTXNQ BIT(1),                  /* FOR WTTA, CONTENTION
*                                           CONDITION WAS
*                                           ENCOUNTERED.  FOR BSC
*                                           STATIONS, STX ENQ
*                                           SEQUENCE WAS RECEIVED.   */
*   2 DECRLN      PTR(8),                /* RELATIVE LINE NUMBER     */
*   2 DECRESPN    CHAR(2),               /* FOR BSC OPERATIONS,
*                                           RESPONSE FROM A
*                                           TERMINAL TO ADDRESSING.
*                                           FOR STOP-START
*                                           OPERATIONS, BYTE 1 IS
*                                           RESPONSE FROM A
*                                           TERMINAL TO ADDRESSING
*                                           AND BYTE 2 IS VERTICAL
*                                           REDUNDANCY CHARACTER AND
*                                           LONGITUDINAL REDUNDANCY
*                                           CHARACTER  (VRC/LRC)
*                                           RESPONSE.                */
*   2 DECTPCOD    CHAR(1),               /* TP OPERATION CODE        */
*   2 DECERRST    CHAR(1),               /* I/O ERROR STATUS FLAGS   */
*    3 DECSIO3  BIT(1),                  /* SIO RESULTED IN A
*                                           CONDITION CODE OF 3      */
*    3 DECUNDEF BIT(1),                  /* UNDEFINED ERROR
*                                           CONDITION                */
*    3 DECERPER BIT(1),                  /* AN ERROR CONDITION
*                                           OCCURRED DURING AN I/O
*                                           OPERATION INITIATED BY
*                                           ERROR RECOVERY ROUTINES  */
*    3 DECDIAGN BIT(1),                  /* DIAGNOSTIC WRITE/READ
*                                           OPERATION ENDED BECAUSE
*                                           OF ERROR (2701 ONLY)     */
*    3 DECDSABL BIT(1),                  /* DISABLE COMMAND ISSUED
*                                           TO SWITCHED LINE BY
*                                           ERROR RECOVERY ROUTINE
*                                           BECAUSE OF PERMANENT
*                                           ERROR ON THAT LINE       */
*    3 DECRSV53 BIT(1),                  /* RESERVED                 */
*    3 DECRSV54 BIT(1),                  /* RESERVED                 */
*    3 DECRSV55 BIT(1),                  /* RESERVED                 */
*   2 DECCSWST    CHAR(2),               /* STATUS BITS FROM CSW FOR
*                                           LAST CCW EXECUTED        */
*   2 DECADRPT    PTR(31),               /* ADDRESS OF ADDRESSING
*                                           LIST ENTRY USED IN
*                                           PREVIOUS OPERATION       */
*   2 DECPOLPT    PTR(31),               /* SAME AS DECPOLPA BELOW   */
*    3 DECNDXPL    PTR(8),               /* FOR AUTOPOLL, INDEX TO
*                                           CURRENT ENTRY IN
*                                           POLLING LIST             */
*    3 DECPOLPA    PTR(24),              /* FOR PROGRAMMED POLLING,
*                                           ADDRESS OF THE CURRENT
*                                           ENTRY IN THE POLLING
*                                           LIST.  FOR AUTOPOLL,
*                                           ADDRESS OF POLLING LIST.
*                                           FOR BSC ON-LINE TEST,
*                                           ADDRESS OF TEXT DATA.    */
*
*/*            BSC EXTENSION                                         */
*/*      FIELDS ARE PRESENT ONLY IF A SUBLIST IS CODED FOR THE       */
*/*      AREA AND LENGTH OPERANDS OF THE READ OR WRITE MACRO         */
*/*      INSTRUCTION THAT DEFINES THE DECB.                          */
*
*   2 DECRSV56    CHAR(2),               /* RESERVED                 */
*   2 DECWLNG     FIXED(15),             /* LENGTH, IN BYTES, OF
*                                           THE DATA AREA IN
*                                           LEADING-GRAPHICS AND
*                                           CONVERSATIONAL TYPE
*                                           OPERATIONS OR OF THE AREA
*                                           CONTAINING THE TONE
*                                           CHARACTERS IN READ
*                                           CONNECT WITH TONE (TCW)
*                                           OPERATIONS               */
*   2 DECWAREA    PTR(31);               /* ADDRESS OF THE DATA AREA
*                                           IN LEADING-GRAPHICS AND
*                                           CONVERSATIONAL
*                                           OPERATIONS, OR OF THE
*                                           AREA CONTAINING THE TONE
*                                           CHARACTERS IN READ TCW
*                                           OPERATIONS               */
./ ADD NAME=IHADQE
*        %GOTO DQEBSL;       /* BILINGUAL MAPPING           /*      /*
         MACRO
         IHADQE   &TYPE
*
*        RELEASE 1 AOS, 11/3/71, LEVEL=1
*
         AIF   ('&TYPE' EQ 'INTERNAL').EQU
DQESECT  DSECT      DESCRIPTOR QUEUE ELEMENT
DQFQEPTR DS    A    PTR TO FIRST FREE AREA
DQEPTR   DS    A    PTR TO NEXT DQE OR ZERO
DQEHRID  DS    0C   HIERARCHY IDENTIFIER
DQEBLKAD DS    A    ADDR FIRST 2K BLOCK DESCRIBED BY THIS DQE
DQELNTH  DS    F    LENGTH OF AREA DESCRIBED BY THIS DQE
         MEXIT
.EQU     ANOP
DQFQEPTR EQU      0    PTR TO FIRST FREE AREA
DQEPTR   EQU      4    PTR TO NEXT DQE OR ZERO
DQEHRID  EQU      4   HIERARCHY IDENTIFIER
DQEBLKAD EQU      8    ADDR FIRST 2K BLOCK DESCRIBED BY THIS DQE
DQELNTH  EQU      12    LENGTH OF AREA DESCRIBED BY THIS DQE
         MEND  , */
*%DQEBSL:   ;
*
*/*      RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
* DECLARE
*   1 DQESECT   BASED(DQESEPTR),     /*DESCRIPTOR QUEUE ELEMENT      */
*    2 DQFQEPTR    PTR(31),          /* PTR TO FIRST FREE AREA       */
*    2 DQEPTR      PTR(31),          /* PTR TO NEXT DQE OR ZERO      */
*    2 DQEBLKAD    PTR(31),          /* ADDR FIRST 2K BLOCK
*                                       DESCRIBED BY THIS DQE        */
*     3 DQEHRID     CHAR(1),         /* HIERARCHY IDENTIFIER         */
*    2 DQELNTH     FIXED(31);        /* LENGTH OF AREA DESCRIBED BY
*                                       THIS DQE                     */
./ ADD NAME=IHADVCT
*%IF DVCIBASE = ''                      /* IF NO DVCTI BASE SPECIFIED*/
*%THEN %DVCIBASE = 'BASED(CVTZDTAB)';   /* USE CVTZDTAB              */
*%IF DVCTBASE = ''                      /* IF NO DVCT BASE SPECIFIED */
*                                       /* USE UCBTYP TO INDEX DVCTI */
*                                       /* AND USE CVTZDTAB + OFFSET */
*%THEN %DVCTBASE = 'BASED(CVTZDTAB+DVCTIOFF(UCBTYP & DVCTYPMK))';
*%;/*
         MACRO
         ESADVCT   &DSECT=YES
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHADVCT
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = OS/VS2 RELEASE 2, LEVEL 0
.*
.*01  CHANGE-ACTIVITY = NONE
.*
.*01  DESCRIPTIVE-NAME = DEVICE CHARACTERISTICS TABLE MAPPING
.*
.*01  FUNCTION = THIS TABLE DESCRIBES PHYSICAL ATTRIBUTES OF EACH DASD
.*    DEVICE WHICH HAS BEEN SYSGENED
.*
.*01  NOTES = THE TABLE IS POINTED TO BY CVTZDTAB.
.*
.*01  MODULE-TYPE = MACRO
.*02    PROCESSOR = ASSEMBLER-370R
.*
.*02    MACRO-SIZE = 200 STATEMENTS
.*
.**** END OF SPECIFICATIONS ***/
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73226/021160                                        */
*/********************************************************************/
*/*                 DEVICE CHARACTERISTICS TABLE                     */
*/********************************************************************/
*/*                                                                  */
*/*         THIS TABLE MAY BE USED TO FIND THE CHARACTERISTICS       */
*/*         OF DIRECT ACCESS DEVICES.  THE APPLICABLE DEVICES ARE    */
*/*         THOSE CONTAINING UCBDACC IN UCBTBYT3 (SEE IEFUCBOB).     */
*/*                                                                  */
*/*         NOTE: DEVTYPE MAY BE USED TO EXTRACT INFORMATION         */
*/*         FROM THIS TABLE.  ITS OUTPUT AREA IS IN A SLIGHTLY       */
*/*         DIFFERENT FORMAT, AND IS MAPPED BY IHADVA.               */
*/*                                                                  */
*/*         THE TABLE IS COMPOSED OF AN INDEX FOLLOWED BY ONE        */
*/*         ENTRY FOR EACH DASD DEVICE WHICH HAS BEEN SYSGENED       */
*/*                                                                  */
*/*         FOR ASSEMBLER USE, TWO SEPARATE DSECTS ARE PROVIDED.     */
*/*         A USING ON DVCTI GIVES ADDRESSIBILITY TO THE INDEX,      */
*/*         AND A USING ON DVCT GIVES ADDRESSIBILITY TO AN ENTRY.    */
*/*         SPECIFYING DSECT=NO SUPPRESSES THE INDEX AND PROVIDES    */
*/*         AN ENTRY DESCRIPTION WITHOUT A DSECT STATEMENT           */
*/*                                                                  */
*/*         FOR PLS USE, TWO STRUCTURES ARE PROVIDED. THEIR STORAGE  */
*/*         ATTRIBUTES ARE CONTROLLED BY SETTING STRING MACRO        */
*/*         VARIABLES AS FOLLOWS:                                    */
*/*         STRUCTURE  MACRO-VAR       DEFAULT SETTING               */
*/*         DVCTI      %DVCIBASE  'BASED(CVTZDTAB)'                  */
*/*         DVCT       %DVCTBASE  'BASED(CVTZDTAB                    */
*/*                                +DVCTIOFF(UCBTYP&DVCTYPMK))'      */
*/*                                                                  */
*/*         THE DEFAULT SETTINGS WILL PROVIDE ADDRESSIBILITY TO      */
*/*         ALL FIELDS, BUT DEPEND ON CVT AND UCB ADDRESSIBILITY.    */
*/*                                                                  */
*/*               FORMAT OF EACH ENTRY                               */
*/*         _____________________________________________            */
*/*   0(00)                                                       */
*/*                DVCCYL               DVCTRK                    */
*/*         __________________________________________            */
*/*   4(04)                             DVCOVHD                   */
*/*                DVCTRKLN       DVCOVNLB  DVCOVLB              */
*/*         _________________________________________            */
*/*   8(08)                                                      */
*/*          DVCOVNK   DVCFLAGS        DVCTOL                    */
*/*         _________________________________________            */
*/*  12(0C)                      ______________________            */
*/*                DVCALT                                         */
*/*         _____________________       DVCOVR0         RPS       */
*/*         ___________________________________________  ONLY      */
*/*  16(10)                                            SECTION   */
*/*          DVCSECT   DVCSECTD        DVCBPSEC                  */
*/*         _________________________________________            */
*/********************************************************************/
*%/*
         AIF   ('&DSECT' EQ 'NO').NODSECT
DVCTI    DSECT ,              INDEX TO DVCT
*              THIS INDEX IS LOCATED FROM CVTZDTAB.
*              THE PROPER ENTRY IS FOUND BY ADDING THE LOW ORDER
*              4 BITS OF UCBTYP TO THE ADDRESS IN CVTZDTAB.
DVCTYPMK EQU   X'0000000F'              TYPICAL USAGE:
*              LA    RWRK,DVCTYPMK      MASK FOR UNIT TYPE NUMBER
*              N     RWRK,UCBTYP        PICK UP UNIT TYPE NUMBER
*              IC    RWRK,DVCTIOFF(RWRK)  PICK UP OFFSET
DVCTIOFF DS    AL1                      OFFSET TO DVCT ENTRY
***********************************************************************
         SPACE 3
DVCT     DSECT ,                        FORMAT OF DVCT ENTRY
*              THE ENTRY IS LOCATED BY ADDING DVCTIOFF TO CVTZDTAB
         AGO   .ENTRY
.NODSECT ANOP
DVCT     DS    0H                       FORMAT OF DVCT ENTRY
.ENTRY   ANOP
*
DVCCYL   DS    H                        PHYS NO. CYL PER VOLUME
DVCTRK   DS    H                        NO. TRACKS PER CYLINDER
DVCTRKLN DS    H                        NO. OF BYTES PER TRACK
*
DVCOVHD  DS    0H                       BLOCK OVERHEAD IF DVC2BOV=1
DVCOVH1  DS    0H            OVERHEAD FOR MODULO DEVICES     ESP 84015
*              USE FOLLOWING TWO CONSTANTS IF DVC2BOV=0
DVCOVNLB DS    XL1                      OVERHEAD NOT LAST BLOCK
DVCOVLB  DS    XL1                      OVERHEAD LAST BLOCK
*
DVCOVNK  DS    XL1                      OVERHEAD DECREMENT NOT KEYED
*
DVCFLAGS DS    BL1
DVCMODU  EQU   X'10'         TRK REQUIRES MODULE ARITHMETIC  ESP 84015
DVC2BOV  EQU   X'08'                    IF 1, USE DVCOVHD
*                                       IF 0, USE DVCOVNLB,DVCOVLB
DVCBI    EQU   X'04'         DEVICE HAS 2301 RELATED ADDR.   ESP 84015
DVCBB    EQU   X'02'         DEVICE HAS BB + CCHHR ADDR.     ESP 84015
DVCFTOL  EQU   X'01'                    IF 1, APPLY TOLERANCE FACTOR
*
DVCOVH2  DS    0H            OVERHEAD FOR MODULO DEVICES     ESP 84015
DVCTOL   DS    H                        TOLERANCE FACTOR
*              APPLY TOLERANCE FACTOR AS FOLLOWS:
*              1. ADD BLOCKSIZE AND KEYLENGTH
*              2. MULTIPLY BY DVCTOL
*              3. SHIFT RIGHT DVCTSHFT BITS
*              4. ADD APPROPRIATE OVERHEADS
DVCTSHFT EQU   9                        SHIFT AMT TO DIVIDE BY 512
*
DVCALT   DS    H                        NUMBER ALTERNATE TRKS/VOLUME
*
DVCENTLG EQU   *-DVCT                   BASIC SIZE OF DEVICE TABLE
*                                       ENTRY, NOT INCLUDING ADD'L
*                                       CHARACTERISTICS FOR RPS
**********************************************************************
*              THE FOLLOWING SECTION OF THE TABLE IS PRESENT         *
*              ONLY FOR RPS DEVICES--TEST UCBTBYT2 FOR UCB2OPT3      *
**********************************************************************
DVCRPS   DS    0CL4                     RPS SECTION
DVCOVR0  DS    H                        OVERHEAD BYTES FOR RECORD 0
DVCSECT  DS    XL1                      NUMBER SECTORS IN FULL TRACK
DVCDSECT DS    0XL1          NAME IN SP VERSION OF MACRO     ESP 84015
DVCSECTD DS    XL1                      NUMBER DATA SECTORS
* SP ADDITION / REPLACEMENT FOR DVCDSECT = DVCTRKLN/DVCBPSEC ESP 84015
DVCBPSEC DS    H             BYTES PER SECTOR                ESP 84015
*
*        SP ADDITION / MODULUS HALF-WORD                     ESP 84015
DVCMOD1  DS    H             MODULUS FOR TRK CALC            ESP 84015
*              END OF DVCT
         MEND
**/;
*
* DCL  1 DVCTI DVCIBASE,                /* INDEX TO DVCT             */
*        2 *   PTR(8),                  /* OFFSET TO ENTRY 0         */
*        2 DVCTIOFF (*) PTR(8);         /* OFFSETS TO ENTRIES 1 TO N */
*/*                                                                  */
*/*         USE THE LAST 4 BITS OF UCBTYP TO INDEX DVCTIOFF.         */
*/*         DVCTYPMK MAY BE USED AS A MASK TO 'AND' WITH UCBTYP.     */
*/*         THE INDEX ENTRIES ARE OFFSETS RELATIVE TO CVTZDTAB.      */
*/********************************************************************/
*
* DCL  1 DVCT DVCTBASE,                 /* FORMAT OF DVCT ENTRY      */
*        2 DVCCYL FIXED(15) UNSIGNED,   /* PHYS NO. CYL PER VOLUME   */
*        2 DVCTRK FIXED(15) UNSIGNED,   /* NO. TRACKS PER CYLINDER   */
*        2 DVCTRKLN FIXED(15) UNSIGNED, /* NO. BYTES PER TRACK       */
*
*        2 DVCOVHD FIXED(15),           /* BLOCK OVERHD IF DVC2BOV=1 */
*          /* USE THE FOLLOWING TWO CONSTANTS IF DVC2BOV=0           */
*          3 DVCOVNLB FIXED(8),         /* OVERHEAD NOT LAST BLOCK   */
*          3 DVCOVLB FIXED(8),          /* OVERHEAD FOR LAST BLOCK   */
*
*        2 DVCOVNK FIXED(8),            /* OVERHD DECREMENT NOT KEYED*/
*
*        2 DVCFLAGS BIT(8),
*          3 * BIT(4),                  /* RESERVED                  */
*          3 DVC2BOV BIT(1),            /* IF 1, USE DVCOVHD         */
*                                       /* IF 0, USE DVCOVNLB,OVLB   */
*          3 * BIT(2),                  /* RESERVED                  */
*          3 DVCFTOL BIT(1),            /* IF 1, APPLY TOLER FACTOR  */
*
*        2 DVCTOL FIXED(15) UNSIGNED,   /* TOLERANCE FACTOR          */
*/*         APPLY TOLERANCE AS FOLLOWS:                              */
*/*         (BLOCKSIZE+KEYLENGTH) * DVCTOL / DVCTSHFT + OVERHEADS    */
*
*        2 DVCALT FIXED(15),            /* NO. OF ALTERNATE TRACKS   */
*/********************************************************************/
*/*         THE FOLLOWING SETION OF THE TABLE IS PRESENT             */
*/*         ONLY FOR RPS DEVICES (UCB2OPT3=1)                        */
*/********************************************************************/
*        2 DVCRPS,                      /*RPS SECTION                */
*          3 DVCOVR0 FIXED(15),         /* OVERHD BYTES FOR RECORD 0 */
*          3 DVCSECT FIXED(8),          /* NO. SECTORS IN FULL TRACK */
*          3 DVCSECTD FIXED(8);         /* NO. OF DATA SECTORS       */
*/********************************************************************/
*
* DCL    DVCTSHFT FIXED(15) CONSTANT(512); /* DENOMINATOR FOR DVCTOL */
*/*         THE FOLLOWING CONSTANT CAN BE USED TO MASK OUT ALL BUT   */
*/*         THE DVCTIOFF SUBSCRIPT FROM THE UCB WORD UCBTYP          */
* DCL    DVCTYPMK BIT(32) CONSTANT('0000000F'X); /* UCBTYP MASK      */
*
*/*               END OF DVCT                                        */
./ ADD NAME=IHAEPIE
         MACRO
         IHAEPIE
.*  THIS MACRO IS USED TO ALLOW NEWER CODE TO ASSEMBLE CORRECTLY
.*  IT DOES *NOT* MAP EPIE FIELDS, BUT ONLY PROVIDES NAMES FOR
.*  INTERIM STORAGE TO AND FROM PIE PROCESSING.
EPIE     DSECT
EPIEGPR  DS    0XL(16*4)     REGISTERS
EPIEGR00 DS    A
EPIEGR01 DS    A
EPIEGR02 DS    A
EPIEGR03 DS    A
EPIEGR04 DS    A
EPIEGR05 DS    A
EPIEGR06 DS    A
EPIEGR07 DS    A
EPIEGR08 DS    A
EPIEGR09 DS    A
EPIEGR10 DS    A
EPIEGR11 DS    A
EPIEGR12 DS    A
EPIEGR13 DS    A
EPIEGR14 DS    A
EPIEGR15 DS    A
EPIEPSW  DS    XL8           PSW
EPIEINT  DS    H             INSTRUCTION LENGTH OR ZERO
EPIEINC  DS    H             INTERRUPT CODE
EPIELEN  EQU   *-EPIE              CURRENT-VERSION LENGTH
         MEND  ,                                                     */
./ ADD NAME=IHAESTA
*        %GOTO ESTABSL1;                                             /*
         MACRO
         IHAESTA &DSECT=YES                                          */
*%ESTABSL1 : ;
* /* MACMEAN ESTA MEANS EXTENDED STAE PARAMETER LIST                 */
* /* MACCOMP Y-1 SC1C5/PZD81                                         */
* /* MACSTAT Y-1 72245/Y02704                                        */
*        %GOTO ESTABSL;                                             /*
         AIF  ('&DSECT' EQ 'YES').ESTA001
ESTA     DS   0D -
         AGO  .ESTA002
.ESTA001 ANOP
ESTA     DSECT                ESTAPTR
.ESTA002 SPACE 2
ESTAEXT  DS    0A             FLAGS AND USER EXIT ADDRESS
ESTAFLG1 DS    B              OPTION FLAGS
ESTASTAI EQU   X'80'          .(E)STAI REQUEST  (TCB SPECIFIED)
ESTASTAR EQU   X'40'          .ESTAR REQUEST
*                             .(E)STAE REQUEST IF NEITHER ESTASTAI
*                              NOR ESTASTAR IS ON.
*              X'20'          .(RESERVED)
ESTAESTA EQU   X'10'          .ESTAR/ESTAI/ESTAE PARAMETER LIST
*                              OFF (0) INDICATES STAI/STAE PARM LIST
*              X'08'          .(RESERVED)
ESTASYNC EQU   X'04'          .ALLOW ASYNCHRONOUS INTERRUPTS
ESTAIO   EQU   X'03'          .I/O PROCESSING OPTION, BITS 6 AND 7 -
*                                  00 - QUIESCE I/O
*                                  01 - HALT I/O
*                                  10 - BYPASS I/O INTERVENTION
*                                  11 - (RESERVED)
ESTANOIO EQU   X'02'          BYPASS I/O INTERVENTION
ESTAHALT EQU   X'01'          .HALT I/O
ESTAEXIT DS    AL3            ADDRESS OF USER EXIT ROUTINE
ESTAPARM DS    A              ADDRESS OF USER PARAMETER LIST
ESTAOWNR DS    A              TCB ADDRESS IF STAI REQUEST
*                             OTHERWISE, ZERO
ESTAFGRS DS    0A             FLAGS AND RESERVED FIELD
ESTAFLG2 DS    B              OPTION FLAGS
*              X'80'          .(RESERVED)
ESTATERM EQU   X'40'          .REQUEST FOR TERM PROCESSING
ESTAEREC EQU   X'20'          .REQUEST FOR ERROR RECORDING
*              X'10'          .(RESERVED)
*              X'08'          .(RESERVED)
ESTABRNT EQU   X'04'          .REQUEST FOR BRANCH ENTRY TO SVC 60
*              X'02'          .(RESERVED)
*              X'01'          .(RESERVED)
ESTARSVI DS    AL3            RESERVED
ESTALEN  EQU   *-ESTA         LENGTH OF (E)STA PARAMETER LIST
         MEND  , */
*%ESTABSL :   ;
*/*   6/6/72                                                         */
*DECLARE
*  1 ESTA     BASED(ESTAPTR),
*   2 ESTAEXT  PTR(31),            /* FLAGS AND USER EXIT ADDRESS    */
*    3 ESTAFLG1 CHAR(1),           /* OPTION FLAGS                   */
*     4 ESTASTAI BIT(1),           /* (E)STAI REQUEST (TCB SPECIFIED)*/
*     4 ESTASTAR BIT(1),           /* ESTAR REQUEST                  */
*                                  /* (E)STAE REQUEST IF NEITHER     */
*                                  /* ESTASTAI NOR ESTASTAR IS ON    */
*     4 *        BIT(1),           /* RESERVED                       */
*     4 ESTAESTA BIT(1),           /* ESTAR/ESTAI/ESTAE PARAMETERS   */
*                                  /* OFF, INDICATES STAI/STAE PARMS */
*     4 *        BIT(1),           /* RESERVED                       */
*     4 ESTASYNC BIT(1),           /* ALLOW ASYNCHRONOUS INTERRUPTS  */
*     4 ESTAIO   BIT(2),           /* I/O PROCESSING OPTIONS
*                                       00 - QUIESCE I/O
*                                       01 - HALT I/O
*                                       10 - BYPASS I/O INTERVENTION
*                                       11 - RESERVED                */
*      5 ESTANOIO BIT(1),          /* BYPASS I/O INTERVENTION        */
*      5 ESTAHALT BIT(1),          /* HALT I/O                       */
*    3 ESTAEXIT PTR(24) BDY(BYTE), /* ADDRESS OF USER EXIT ROUTINE   */
*   2 ESTAPARM PTR(31),            /* ADDRESS OF USER PARAMETER LIST */
*   2 ESTAOWNR PTR(31),            /* TCB ADDRESS IF (E)STAI REQUEST,
*                                     OTHERWISE, ZERO                */
*   2 ESTAFGRS PTR(31),            /* FLAGS AND RESERVED FIELD       */
*    3 ESTAFLG2 CHAR(1),           /* OPTION FLAGS                   */
*     4 *        BIT(1),           /* RESERVED                       */
*     4 ESTATERM BIT(1),           /* REQUEST FOR TERM PROCESSING    */
*     4 ESTAEREC BIT(1),           /* REQUEST FOR ERROR RECORDING    */
*     4 *        BIT(2),           /* RESERVED                       */
*     4 ESTABRNT BIT(1),           /* REQUEST BRANCH ENTRY TO SVC 60 */
*     4 *        BIT(2),           /* RESERVED                       */
*    3 ESTARSVI PTR(24) BDY(BYTE); /* RESERVED                       */
*%ESTALEN='LENGTH(ESTA)';          /* LENGTH OF (E)STA PARAMETER
*                                     LIST                           */
./ ADD NAME=IHAETE
*          %GOTO PLSETE;                                             /*
           MACRO
           IHAETE
**/
*%PLSETE : ;
*/********************************************************************/
*/*                                                                  */
*/*          ENTRY TABLE ENTRY (ETE) DESCRIPTION                     */
*/*                                                                  */
*/*     MACRO NAME = IHAETE                                          */
*/*                                                                  */
*/*     MACDATE = 01/04/80                                           */
*/*                                                                  */
*/*     COPYRIGHT =                                                  */
*/*         5740-XYN COPYRIGHT IBM CORP. 1980,                       */
*/*         LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,              */
*/*         REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER              */
*/*         G120-2083.                                               */
*/*                                                                  */
*/*     STATUS =                                                     */
*/*         OS/VS2 JBB1226                                           */
*/*                                                                  */
*/*     FUNCTION=                                                    */
*/*         DESCRIBES AN ENTRY IN AN ENTRY TABLE. THE ENTRY TABLE    */
*/*         IS IN THE FIXED STORAGE OF THE PC/AUTH ADDRESS SPACE.    */
*/*                                                                  */
*/*     METHOD OF ACCESS                                             */
*/*         BAL - DSECT IS PRODUCED, PERFORM USING ON ETE            */
*/*         PL/S - ETE IS BASED STRUCTURE, ETEPTR MUST BE DECLARED   */
*/*                                                                  */
*/*     CREATED BY =                                                 */
*/*         THE ENTRY TABLE CREATE SERVICE ROUTINE (IEAVXECR) IN     */
*/*         THE LSQA OF THE PC/AUTH ADDRESS SPACE.                   */
*/*         THE ENTRY TABLE FOR THE PC/AUTH SERVICES IS CREATED      */
*/*         BY IEAVXMAS DURING PC/AUTH ADDRESS SPACE INITIALIZATION. */
*/*                                                                  */
*/*     DELETED BY =                                                 */
*/*         THE ENTRY TABLE DESTROY SERVICE ROUTINE(IEAVXEDE).       */
*/*                                                                  */
*/*     POINTED TO BY =                                              */
*/*         THE ENTRY TABLE IS POINTED TO BY A LINKAGE TABLE         */
*/*         ENTRY (LTE) AND BY THE ETIBETR OR ETIBETV IN THE         */
*/*         ENTRY TABLE INFORMATION BLOCK (ETIB).                    */
*/*                                                                  */
*/*     SERIALIZATION =                                              */
*/*         LOCAL LOCK OF THE PC/AUTH SERVICES ADDRESS SPACE.        */
*/*                                                                  */
*/*     CHANGE ACTIVITY = THIS MACRO IS NEW FOR OS/VS2 JBB1226.      */
*/*                                                                  */
*/********************************************************************/
*/*A 000000-999999                                           @G382PXH*/
*        %GOTO PLSETE1;        /*
ETE      DSECT
         DS    0D             ENTRY TABLE ENTRY DESCRIPTION
ETEAKM   DS    H              MASK OF STORAGE KEYS AUTHORIZED TO
*                             INVOKE THIS ROUTINE
ETEASID  DS    H              ASID IN WHICH THE CALLED ROUTINE WILL
*                             EXECUTE - IF ZERO, ROUTINE EXECUTES IN
*                             CALLERS ADDRESS SPACE
ETEEPA   DS    A              VIRTUAL ADDRESS OF ROUTINE TO RECEIVE
*                             CONTROL
         ORG   *-1
ETEPBYTE DS    B              BYTE NAME TO ACCESS ETEPS
ETEPS    EQU   X'01'          CALLED ROUTINE EXECUTES (0) SUPERVISOR
*                             STATE OR (1) PROBLEM STATE
ETEPARM  DS    A              ADDRESS OF LATENT PARAMETER THAT IS
*                             PASSED TO THE CALLED ROUTINE
ETEEKM   DS    H              KEY MASK TO BE COMBINED WITH CALLERS KEY
*                             MASK PRODUCING THE EXECUTION KEY MASK OF
*                             THE CALLED ROUTINE
ETERESV  DS    H              RESERVED
ETEEND   EQU   *
ETELEN   EQU   ETEEND-ETE     LENGTH OF THE ETE
         MEND  ,  */
*%PLSETE1: ;
* DCL  1 ETE BASED(ETEPTR) BDY(WORD), /* ENTRY TABLE ENTRY
*                                    DESCRIPTION                     */
*        3 ETEAKM BIT(16),        /* MASK OF STORAGE KEYS
*                                    AUTHORIZED TO INVOKE THIS
*                                    ROUTINE                         */
*        3 ETEASID BIT(16),       /* ASID IN WHICH THE CALLED
*                                    ROUTINE WILL EXECUTE - IF ZERO,
*                                    ROUTINE EXECUTES IN CALLERS
*                                    ADDRESS SPACE                   */
*        3 ETEEPA PTR(31),        /* VIRTUAL ADDRESS OF ROUTINE TO
*                                    RECEIVE CONTROL                 */
*          5 * CHAR(3),           /* PART OF ETEEPA - NOT
*                                    REFERENCABLE                    */
*          5 ETEPBYTE CHAR(1),    /* BYTE TO ACCESS ETEPS            */
*             7 * BIT(7),         /* NOT REFERENCABLE                */
*             7 ETEPS BIT(1),     /* CALLED ROUTINE EXECUTES (0)
*                                    SUPERVISOR OR (1) PROBLEM STATE */
*        3 ETEPARM FIXED(31),     /* ADDRESS OF THE LATENT PARAMETER
*                                    PASSED TO THE CALLED ROUTINE    */
*        3 ETEEKM BIT(16),        /* KEY MASK TO BE COMBINED WITH
*                                    CALLERS KEY MASK PRODUCING THE
*                                    EXECUTION KEY MASK OF THE CALLED
*                                    ROUTINE                         */
*        3 ETERESV FIXED(16);     /* RESERVED FIELD                  */
./ ADD NAME=IHAEXLST
*%GOTO EXL001;                          /*                     Y02072*/
         MACRO
         IHAEXLST
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHAEXLST
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  DESCRIPTIVE-NAME = DCB EXIT LIST
.*
.*01  FUNCTION = USED TO DESCRIBE THE FORMAT OF THE DCB EXIT LIST.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = NA FOR MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = NONE
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 REL 2
.*       MACRO CREATED
.*
.*
.**** END OF SPECIFICATIONS ***/
*%EXL001:;                              /*                     Y02072*/
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73124/021160           */
*%GOTO EXL002;                          /*                     Y02072*/
*
* THIS DSECT DEFINES THE VARIOUS TYPES OF EXIT LIST ENTRIES
* AND THE FORMAT OF EACH FULL WORD ENTRY OF A VARIABLE LENGTH
* EXIT LIST.
*
* DESCRIPTIVE LAYOUT
*      +0           +1
*       ___________________________________________________
*                                                       
*        EXLIST      ADDRESS OF EXIT                    
*        CODE                                           
*       ________________________________________________
*
         SPACE 2
EXLST    DSECT
EXLENTRA DS    0A                       SAME AS EXLENTRB BELOW
EXLCODES DS    B                        VARIOUS EXLST CODES
EXLINACT EQU   X'00'                    INACTIVE ENTRY
EXLIHLAB EQU   X'01'                    INPUT HEADER LABEL
EXLOHLAB EQU   X'02'                    OUTPUT HEADER LABEL
EXLITLAB EQU   X'03'                    INPUT TRAILER LABEL
EXLOTLAB EQU   X'04'                    OUTPUT TRAILER LABEL
EXLDCBEX EQU   X'05'                    DCB EXIT
EXLEOVEX EQU   X'06'                    END OF VOLUME EXIT
EXLUSTOT EQU   X'0A'                    USER''S TOTALING AREA ADDRESS
EXLBLCNT EQU   X'0B'                    UNEQUAL BLOCK COUNT EXIT
EXLDFRIT EQU   X'0C'                    DEFER PROCESSING OF USER INPUT
*                                         TRAILER LABEL
EXLDFNIT EQU   X'0D'                    DEFER PROCESSING A NONSTANDARD
*                                         INPUT TRAILER LABEL
EXLFCBIM EQU   X'10'                    DEFINE AN FCB IMAGE
EXLDCBAB EQU   X'11'                    ABEND EXIT
EXLLASTE EQU   X'80'                    LAST ENTRY IN LIST
EXLENTRB DS    AL3                      ADDRESS OF EXIT
EXLLENTH EQU   *-EXLENTRA               LENGTH OF DSECT (ONE ENTRY)
         MEND
*%EXL002:;                              /*                     Y02072*/
*/*                                                                  */
*/*THIS STRUCTURE DESCRIBES THE VARIOUS TYPES OF EXIT LIST ENTRIES   */
*/*AND THE FORMAT OF EACH FULL WORK ENTRY OF A VARIABLE LENGTH       */
*/*EXIT LIST.                                                        */
*/*                                                                  */
*/*DESCRIPTIVE LAYOUT                                                */
*/*    +0           +1                                               */
*/*     ___________________________________________________          */
*/*                                                               */
*/*      EXLIST      ADDRESS OF EXIT                              */
*/*      CODE                                                     */
*/*     ________________________________________________          */
*/*                                                                  */
*/*                                                                  */
*DCL 1 EXLST PTR(32) BASED,             /*                     Y02072*/
*      2 EXLENTRA PTR(31),              /*SAME AS EXLENTRB     Y02072*/
*        3 EXLCODES FIXED(8),           /*EXIT LIST CODES      Y02072*/
*           4 EXLLAST BIT(1),           /*BIT TO TST LAST ENTRYY02072*/
*        3 EXLENTRB PTR(24);            /*ADDRESS OF EXIT      Y02072*/
*/*                                                            Y02072*/
*/* THE FOLLOWING CONSTANTS REFER TO THE LABEL EXLCODES        Y02072*/
*/*                                                            Y02072*/
*DCL   EXLINACT FIXED(8) CONSTANT(0), /*INACTVE ENTRY          Y02072*/
*      EXLIHLAB FIXED(8) CONSTANT(1), /*INPUT HEAD LBL         Y02072*/
*      EXLOHLAB FIXED(8) CONSTANT(2), /*OUTPT HEAD LBL         Y02072*/
*      EXLITLAB FIXED(8) CONSTANT(3), /*IN TRAIL LBL           Y02072*/
*      EXLOTLAB FIXED(8) CONSTANT(4), /*OUT TRAIL LBL          Y02072*/
*      EXLDCBEX FIXED(8) CONSTANT(5), /*DCB EXIT               Y02072*/
*      EXLEOVEX FIXED(8) CONSTANT(6), /*EOV EXIT               Y02072*/
*      EXLUSTOT FIXED(8) CONSTANT(10), /*USER TOTALING         Y02072*/
*      EXLBLCNT FIXED(8) CONSTANT(11), /*UNEQUAL BLK CNT       Y02072*/
*      EXLDFRIT FIXED(8) CONSTANT(12), /*DEFER USR INPUT       Y02072*/
*                                      /*TRAILER LABEL PROCESS Y02072*/
*      EXLDFNIT FIXED(8) CONSTANT(13), /*DEFER PROCESS         Y02072*/
*                                      /*NONSTANDARD INPUT     Y02072*/
*                                      /*TRAILER LABEL         Y02072*/
*      EXLFCBIM FIXED(8) CONSTANT(16), /*DEFINE FCB IM         Y02072*/
*      EXLDCBAB FIXED(8) CONSTANT(17), /*ABEND EXIT            Y02072*/
*      EXLLASTE FIXED(8) CONSTANT(128), /*LAST ENTRY           Y02072*/
*      EXLLENTH FIXED(8) CONSTANT(4); /*LEN OF EXLST ENTRY     Y02072*/
./ ADD NAME=IHAFBQE
*        %GOTO FBQBSL;      /* BILINGUAL MAPPING        /*   /*
         MACRO
         IHAFBQE  &TYPE
*
*        RELEASE 1 AOS, 11/3/71, LEVEL=1
*
         AIF   ('&TYPE' EQ 'INTERNAL').EQU
FBQESECT DSECT      FREE BLOCK QUEUE ELEMENT
FWDPTR   DS    A    PTR TO NEXT FBQE OR PQE
BCKPTR   DS    A    PTR TO PREVIOUS FBQE OR PQE
SIZE     DS    F    SIZE OF THIS FREE BLOCK
FBQAREA  DS    A    LOW ADDRESS OF FREE BLOCK
         MEXIT
.EQU     ANOP
FWDPTR   EQU      0    PTR TO NEXT FBQE OR PQE
BCKPTR   EQU      4    PTR TO PREVIOUS FBQE OR PQE
SIZE     EQU      8    SIZE OF THIS FREE BLOCK
FBQAREA  EQU      12    LOW ADDRESS OF FREE BLOCK
         MEND  , */
*%FBQBSL:   ;
*
*/*      RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
* DECLARE
*   1 FBQESECT BASED(FBQESPTR),      /* BLOCK QUEUE ELEMENT          */
*    2 FWDPTR      PTR(31),          /* PTR TO NEXT FBQE OR PQE      */
*    2 BCKPTR      PTR(31),          /* PTR TO PREVIOUS FBQE OR PQE  */
*    2 SIZE        FIXED(31),        /* SIZE OF THIS FREE BLOCK      */
*    2 FBQAREA     PTR(31);          /* LOW ADDRESS OF FREE BLOCK    */
./ ADD NAME=IHAFCAUD
*%GOTO FCAPLS1;
         MACRO
         IHAFCAUD  &ORG=NO
*/*                                                                  */
*/*THE FOLLOWING DEFINES BITS SET BY THE OPEN AND CLOSE EXECUTORS FOR*/
*/*SAM/PAM/DAM DATA SETS. THE BITS ARE SET IN THE AUDIT TRAILS IN THE*/
*/*OPEN AND CLOSE WORKAREAS. ORGS FOR THE LABELS DXATEXC1 AND        */
*/*DXATEXC2 (LABELS EXPANDED BY IECDSECT TO MAP AGAINST AUDIT TRAILS)*/
*/*WILL BE EXPANDED IF THE KEYWORD 'ORG=YES' IS CODED ON THE MACRO   */
*/*CALL. THE DEFAULT IS 'ORG=NO'.                                    */
*/*                                                                  */
*/*THE FOLLOWING BIT DEFINITIONS INDICATE WHAT RESOURCES WERE        */
*/*ACQUIRED BY THE OPEN EXECUTORS.                                   */
*/*                                                                  */
         AIF   ('&ORG' NE 'YES').NORG1
         ORG   DXATEXC1
.NORG1   ANOP
FCAOPEN  DS    0F                       OPEN AUDIT TRAIL
FCAOPEN1 DS    X                        FIRST BYTE OF AUDIT TRAIL
FCAOCOPY EQU   X'80'                    INDIC DCB HAS BEEN REFRESHED
*                                         (SAM AND BDAM)
FCAORDX  EQU   X'40'                    INDIC READX LIST HAS BEEN
*                                         GETMAINED (BDAM)
FCAOBUF  EQU   X'20'                    INDIC BUFFERS GETMAINED
*                                         (SAM AND BDAM)
FCAOUSL  EQU   X'10'                    INDIC UNSCHEDULED LIST
*                                         BUILT (BDAM)
FCAOSWA  EQU   X'08'                    INDIC SEGMENT WORKAREA
*                                         GETMAINED (SAM AND BDAM)
FCAOIOB  EQU   X'04'                    INDIC IOBS GETMAINED (SAM)
FCAORECA EQU   X'02'                    INDIC RECORD AREA BUILT (SAM)
FCAOXTND EQU   X'01'                    INDIC BUF CNTRL BLK EXTENDED
*                                         (SAM)
         AIF   ('&ORG' NE 'YES').NORG1A
         ORG   DXATEXC1+1
.NORG1A  ANOP
FCAOPEN2 DS    X                        2ND BYTE OF OPEN AUDIT TRAIL
FCAOIMGL EQU   X'80'                    INDIC IMAGE LIB OPENED (SAM)
FCAOUCSL EQU   X'40'                    INDIC UCS IMAGE LOADED (SAM)
FCAOFCBL EQU   X'20'                    INDIC FCB IMAGE LOADED (SAM)
FCAOIOBC EQU   X'10'                    INDIC IOB CONSTRUCTION
*                                         COMPLETED (SAM)
*/*                                                                  */
*/*THE FOLLOWING BIT DEFINITIONS INDICATE THE VARIOUS RESOURCES      */
*/*THAT WERE CLEANED UP BY FORCE CLOSE.                              */
*/*                                                                  */
         AIF   ('&ORG' NE 'YES').NORG2
         ORG   DXATEXC2
.NORG2   ANOP
FCACLOSE DS    0F                       CLOSE AUDIT TRAIL
FCACLOS1 DS    X                        FIRST BYTE OF CLOSE AUDIT
*                                         TRAIL
FCACFORC EQU   X'80'                    INDIC FORCE CLOSE IN CNTRL
*                                         (SAM AND BDAM)
FCACRECA EQU   X'40'                    INDIC RECORD AREA FREED
*                                         (SAM)
FCACBUFC EQU   X'20'                    INDIC BUFS FREED FOR CONCAT
*                                         OF UNLIKE ATTR (SAM)
FCACFUF  EQU   X'20'                    INDIC BUFS FREED (BDAM)
FCACBUFP EQU   X'10'                    INDIC BUFS RETURNED TO POOL
*                                         (SAM)
FCACIOB  EQU   X'08'                    INDIC IOBS FREED (SAM)
FCACSWA  EQU   X'04'                    INDIC SWA FREED (SAM AND BDAM)
FCACFCR  EQU   X'02'                    INDIC FCR FREED (SAM)
FCACR01  EQU   X'01'                    RESERVED
         AIF   ('&ORG' NE 'YES').NORG3
         ORG   DXATEXC2+1
.NORG3   ANOP
FCACLOS2 DS    X                        SECOND BYTE OF CLOSE AUDIT
*                                         TRAIL
FCACR02  EQU   X'80'                    RESERVED
FCACR03  EQU   X'40'                    RESERVED
FCACPURG EQU   X'20'                    INDIC PURGE COMPLETD (SAM/BDAM)
FCACDEQ  EQU   X'10'                    INDIC I/O REQ DEQUED (BDAM)
FCACIOBP EQU   X'08'                    IOBS IN IOB POOL IF REQD (BDAM)
FCACIOBX EQU   X'04'                    IOBS ON UNPOSTED QUEUE AND THE
*                                          READX LIST IF REQD (BDAM)
FCACIOBU EQU   X'02'                    IOBS ON USL, THE USL, PLUS
*                                          THE BCB IF REQD (BDAM)
FCACIOBB EQU   X'01'                    ALL IOBS ON BUFFER QUEUE
*                                          PLUS THE BCB IF REQD (BDAM)
         AIF   ('&ORG' NE 'YES').NORG4
         ORG   DXATEXC2+2
.NORG4   ANOP
FCACLOS3 DS    X                        THIRD BYTE OF CLOSE AUDIT
*                                          TRAIL
FCACR04  EQU   X'80'                    RESERVED
FCACR05  EQU   X'40'                    RESERVED
FCACR06  EQU   X'20'                    RESERVED
FCACDELE EQU   X'10'                    INDICATE MSG CSECT DELETED
*                                         (SAM)
FCACUSL  EQU   X'08'                    INDICATE USL FREED (BDAM)
FCACRDX  EQU   X'04'                    INDIC READX LIST FREED (BDAM)
         MEND
*%FCAPLS1:;
*/*                                                                  */
*/*THE FOLLOWING DEFINES BITS SET BY THE OPEN AND CLOSE EXECUTORS FOR*/
*/*SAM/PAM/DAM DATA SETS. THE BITS ARE SET IN THE AUDIT TRAILS IN THE*/
*/*OPEN AND CLOSE WORKAREAS. THE MACRO IECDSECT MUST BE INCLUDED FOR */
*/*PLS.                                                              */
*/*                                                                  */
*/*THE FOLLOWING BIT DEFINITIONS INDICATE WHAT RESOURCES WERE        */
*/*ACQUIRED BY THE OPEN EXECUTORS.                                   */
*/*                                                                  */
*DCL  1  FCAOPEN DEF(DXATEXC1) BIT(32),
*        2 FCAOPEN1 BIT(8),             /*FIRST BYTE OF AUDIT TRAIL  */
*          3 FCAOCOPY BIT(1),           /*DCB HAS BEEN REFRESHED     */
*                                       /* (SAM AND BDAM)            */
*          3 FCAORDX BIT(1),            /*READX LIST HAS BEEN BUILT  */
*                                       /* (BDAM)                    */
*          3 FCAOBUF BIT(1),            /*BUFFERS BUILT              */
*                                       /* (SAM AND BDAM)            */
*          3 FCAOUSL BIT(1),            /*UCSCHED LIST BUILT (BDAM)  */
*          3 FCAOSWA BIT(1),            /*SEG WORKAREA GOTTEN        */
*                                       /* (SAM AND BDAM)            */
*          3 FCAOIOB BIT(1),            /*IOBS GETMAINED (SAM)       */
*          3 FCAORECA BIT(1),           /*RECORD AREA GOTTEN (SAM)   */
*          3 FCAOXTND BIT(1),           /*BUF CNTRL BLK EXTENDED     */
*                                       /* (SAM)                     */
*        2 FCAOPEN2 BIT(8),             /*SECOND BYTE OF AUDIT TRAIL */
*          3 FCAOIMGL BIT(1),           /*INDIC IMAGELIB OPENED (SAM)*/
*          3 FCAOUCSL BIT(1),           /*INDIC UCS IMG LOADED (SAM) */
*          3 FCAOFCBL BIT(1),           /*INDIC FCB IMG LOADED (SAM) */
*          3 FCAOIOBC BIT(1);           /*INDIC IOB CONSTRUCTION
*                                          COMPLETED (SAM)           */
*/*                                                                  */
*/*THE FOLLOWING BIT DEFINITIONS INDICATE THE VARIOUS RESOURCES      */
*/*THAT WERE CLEANED UP BY FORCE CLOSE.                              */
*/*                                                                  */
*DCL  1  FCACLOSE DEF(DXATEXC2) BIT(32),
*        2 FCACLOS1 BIT(8),             /*FIRST BYTE OF CLOSE        */
*                                       /*  AUDIT TRAIL              */
*          3 FCACFORC BIT(1),           /*FOR CLOSE IN CONTROL       */
*                                       /* (SAM AND BDAM)            */
*          3 FCACRECA BIT(1),           /*RECORD AREA FREED (SAM)    */
*          3 FCACBUFC BIT(1),           /*BUFS FREED FOR CONCAT      */
*                                       /* OF UNLIKE ATTR (SAM)      */
*            4 FCACBUF BIT(1),          /*BUFS FREED (BDAM)          */
*          3 FCACBUFP BIT(1),           /*BUFS RETURNED TO POOL (SAM)*/
*          3 FCACIOB BIT(1),            /*IOBS FREED (SAM)           */
*          3 FCACSWA BIT(1),            /*SEG WORKAREA FREED         */
*                                       /* (SAM AND BDAM)            */
*          3 FCACFCR BIT(1),            /*FCR FREED (SAM)            */
*          3 * BIT(1),                  /*RESERVED                   */
*        2 FCACLOS2 BIT(8),             /*SECOND BYTE OF CLOSE       */
*                                       /* AUDIT TRAIL               */
*          3 * BIT(1),                  /*RESERVED                   */
*          3 * BIT(1),                  /*RESERVED                   */
*          3 FCACPURG BIT(1),           /*PURGE COMPLETED (SAM/BDAM) */
*          3 FCACDEQ BIT(1),            /*I/O REQ DEQUED (BDAM)      */
*          3 FCACIOBP BIT(1),           /*IOBS IN IOB POOL IF        */
*                                       /* REQUIRED (BDAM)           */
*          3 FCACIOBX BIT(1),           /*IOBS ON UNPOSTED QUEUE AND */
*                                       /* THE READX LIST IF REQD    */
*                                       /* (BDAM)                    */
*          3 FCACIOBU BIT(1),           /*IOBS ON USL, THE USL, PLUS */
*                                       /* THE BCB (BDAM)            */
*          3 FCACIOBB BIT(1),           /*ALL IOBS ON BUFFER QUEUE   */
*                                       /* PLUS THE BCB (BDAM)       */
*        2 FCACLOS3 BIT(8),             /*THIRD BYTE OF CLOSE        */
*                                       /* AUDIT TRAIL               */
*          3 * BIT(1),                  /*RESERVED                   */
*          3 * BIT(1),                  /*RESERVED                   */
*          3 * BIT(1),                  /*RESERVED                   */
*          3 FCACDELE BIT(1),           /*INDIC MSG CSECT DELETED    */
*                                       /* (SAM)                     */
*          3 FCACUSL BIT(1),            /*USL FREED (BDAM)           */
*          3 FCACRDX BIT(1);            /*READ X LIST FREED (BDAM)   */
./ ADD NAME=IHAFCBIM
*%;/*
         MACRO
         IHAFCBIM &DSECT=YES,&LINES=0
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHAFCBIM
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  CHANGE-ACTIVITY = STANDARDS UPGRADE
.*
.*01  DESCRIPTIVE-NAME = FORMS CONTROL BUFFER IMAGE
.*
.*01  FUNCTION = USED IN PLACE OF CARRIAGE TAPE FOR CERTAIN PRINTERS
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = 150 STATEMENTS
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING
.*
.*04        VALUE = YES OR NO
.*
.*02    PARAMETER-RECEIVED = LINES
.*
.*03      TYPE = NUMERIC
.*
.*04        VALUE = NUMBER OF LINES DESCRIBED
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.**** END OF SPECIFICATIONS ***/
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73081/021160           */
*/********************************************************************/
*/*         FORMS CONTROL BUFFER IMAGE                               */
*/*                                                                  */
*/*   METHOD OF ACCESS                                               */
*/*     BAL  - TWO DSECTS ARE PRODUCED UNLESS DSECT=NO IS SPECIFIED. */
*/*         USING ON FCBIMAGE GIVES ADDRESSIBILITY TO ALL SYMBOLS    */
*/*         EXCEPT THOSE DESCRIBING A SINGLE ENTRY.                  */
*/*         USING ON FCBENTRY GIVES ADDRESSIBILITY TO ANY ENTRY.     */
*/*         WHEN DSECT=NO IS SPECIFIED,FCBENTRY CONTINUES TO EXPAND */
*/*         AS A DSECT, BUT THE REMAINING SYMBOLS ARE EXPANDED AS A  */
*/*         PART OF THE CURRENT CSECT OR DSECT, WITHOUT ALIGNMENT.   */
*/*         LINES=NN MAY BE USED TO CONTROL THE NUMBER OF ENTRIES    */
*/*         ALLOWED FOR IN FCBIMAGE. THE DEFAULT IS 0                */
*/*      PL/S - DCL FCBPTR AND FCBENPTR AS BASES FOR THE IMAGE AND   */
*/*         AND FOR AN INDIVIDUAL ENTRY.  DEFAULT IS SIMPLY BASED.   */
*/*                                                                  */
*/*    USE OF FCBIMAGE                                               */
*/*         THIS DSECT DESCRIBES AN FCB IMAGE THAT IS TO BE LOADED   */
*/*         INTO A PRINTER FORMS CONTROL BUFFER.                     */
*/*         THE MAPPING IS DIVIDED INTO THREE SEGMENTS, SOME OF      */
*/*         WHICH MAY NOT BE PRESENT.                                */
*/*         USER INTERFACE SEGMENT--PRESENT FOR IMAGES PASSED TO     */
*/*             OPEN OR SETPRT BY THEIR INVOKER                      */
*/*         IMAGE DESCRIPTOR SEGMENT--PRESENT IN SYS1.IMAGELIB       */
*/*             AND IN USER PROVIDED IMAGES                          */
*/*         IMAGE SEGMENT--ONLY THIS SEGMENT IS LOADED INTO THE      */
*/*             PRINTER BUFFER. IT IS ALWASY PRESENT                 */
*/*                                                                  */
*/*               USER INTERFACE SEGMENT                             */
*/*         __________________________________________________       */
*/*  0 (00)                                                        */
*/*                          FCBIMGID                              */
*/*         ________________________________________________       */
*/*                                                                  */
*/*               IMAGE DESCRIPTOR SEGMENT                           */
*/*         _________________________                                */
*/*  4 (04)                                                       */
*/*          FCBDEFLT    FCBLENTH                                 */
*/*         ______________________                                */
*/*                                                                  */
*/*                              IMAGE SEGMENT (WITHOUT INDEXING)    */
*/*                                 _________________________        */
*/*  4 (04)                                                        */
*/*                                   FCBLINE1   VARIABLE          */
*/*         _______________________________________________        */
*/*  8 (08)                                                      */
*/*               NUMBER OF ONE BYTE ENTRIES                        */
*/*         _____________________________________________        */
*/*                                                                  */
*/*                              IMAGE SEGMENT (WITH INDEXING)       */
*/*                                 _________________________        */
*/*  4 (04)                                                       */
*/*                                   FCBINDEX  FCBLNPI1          */
*/*         ______________________________________________        */
*/*  8 (08)                                                     */
*/*              VARIABLE NUMBER OF ONE BYTE ENTRIES               */
*/*         ____________________________________________        */
*/*                                                                  */
*/********************************************************************/
*%/*
         AIF   ('&DSECT' EQ 'NO').NODSCT
FCBIMAGE DSECT
         AGO   .CONT
.NODSCT  ANOP
FCBIMAGE DS    0C
.CONT    ANOP
*
*              USER INTERFACE SEGMENT
*
FCBIMGID DS    CL4                      FCB IMAGE IDENTIFIER
*
*              IMAGE DESCRIPTOR SEGMENT
*
FCBIMBEG DS    0C                       BEGINNING OF FCB
FCBDEFLT DS    B                        BYTE INDICATES IF IMAGE A DEFLT
FCBDEFYS EQU   X'80'                    IMAGE IS A DEFAULT
FCBDEFNO EQU   X'00'                    IMAGE IS NOT A DEFAULT
FCBLENTH DS    X                        BYTE CONTAINS LENGTH OF FCB
*                                         IMAGE
*
*              IMAGE SEGMENT
*
FCBLINE1 DS    0C                       FIRST LINE OF FCB IMAGE
FCBLNPIN DS    0B                       BYTE INDICATES NUMBER OF
*                                         LINES PER INCH (USE WHEN NO
*                                         INDEXING)
FCB8LINE EQU   X'10'                    EIGHT LINES PER INCH
FCB6LINE EQU   X'00'                    SIX LINES PER INCH
FCBINDEX DS    X                        BYTE INDICATES IF INDEXING
*                                         BEING USED
FCBRGTIN EQU   X'80'                    BIT FOR RIGHT INDEXING
FCBLFTIN EQU   X'40'                    BIT FOR LEFT INDEXING
FCBLNPN1 DS    0X                       SAME AS FCBLNPIN WITH INDEXING
*                                         BEING USED
         ORG   FCBLINE1                                          Y02072
FCBLINSG DS    &LINES.C                 AREA FOR LINE CODES      Y02072
*                                         WITHOUT INDEXING       Y02072
         ORG   FCBLINSG+1                                        Y02072
FCBLINS1 DS    &LINES.C                 AREA FOR LINE CODES      Y02072
*                                         WITH INDEXING          Y02072
*
*              EACH ENTRY DESCRIBES ONE LINE OF PRINTED PAGE
*
FCBENTRY DSECT                                                   Y02072
FCBLINE  DS    B                                                 Y02072
FCBLAST  EQU   X'10'                    ON IF LAST LINE OF PAGE  Y02072
*              NOTE: THIS BIT MAY ALSO BE ON FOR FIRST LINE
*                    OF PAGE. SEE FCB8LINE IN FCBLNPIN ABOVE
FCBCHAN  EQU   X'0F'                    MASK FOR CHANNEL NUMBER  Y02072
*                                       BINARY VALUE 1 TO 15
*                                       FOR SKIP COMMAND, OR 0
         MEND
**/;
* %IF FCBBASE = '' %THEN %FCBBASE = 'BASED';
* %IF FCBEBASE = '' %THEN %FCBEBASE = 'BASED';
*DCL  1  FCBIMAGE FCBBASE,              /*                     Y02072*/
*/*                  USER INTERFACE SEGMENT                          */
*        2  FCBIMGID CHAR(4),           /*FCB IMAGE IDENTIFIER Y02072*/
*/*                  IMAGE DESCRIPTOR SEGMENT                        */
*        2  FCBIMBEG,                   /*BEGINNING OF FCB     Y02072*/
*          3  FCBDEFLT CHAR(1),         /*IMAGE DEFAULT INDIC  Y02072*/
*            4 FCBDEFYS BIT(1),         /*IMAGE IS A DEFAULT   Y02072*/
*          3 FCBLENTH FIXED(8) UNSIGNED, /*LENGTH OF IMAGE     Y02072*/
*/*                  IMAGE SEGMENT                                   */
*        2  FCBLINE1,                   /*FIRST LINE OF FCB IM Y02072*/
*          3  FCBLNPIN CHAR(1),         /*LINE/INCH INDICATOR  Y02072*/
*                                       /*WITHOUT INDEXING     Y02072*/
*            4  * BIT(3),               /*RESERVED             Y02072*/
*            4  FCB8LINE BIT(1),        /*ON=8 LPI, OFF=6 LPI  Y02072*/
*              5  FCBINDEX CHAR(1),     /*INDEX BYTE           Y02072*/
*                6  FCBRGTIN BIT(1),    /*INDICATES RIGHT INDX Y02072*/
*                6  FCBLFTIN BIT(1),    /*INDICATES LEFT INDEX Y02072*/
*              5  FCBLNPN1 CHAR(1);     /*LINE/INCH INDICATOR  Y02072*/
*                                       /*WITH INDEXING        Y02072*/
*/*                                                                  */
*/*         EACH ENTRY DESCRIBES ONE LINE OF PRINTED PAGE            */
*/*                                                                  */
* DCL   1 FCBENTRY FCBEBASE,            /*                     Y02072*/
*        2 FCBLINE CHAR(1),             /*ONE BYTE PER LINE    Y02072*/
*          3 * BIT(3),                  /*RESERVED             Y02072*/
*          3 FCBLAST BIT(1),            /*ON IF LAST LINE      Y02072*/
*/*         NOTE: THIS BIT MAY ALSO BE ON FOR FIRST LINE             */
*/*               OF PAGE. SEE FCB8LINE IN FCBLNPIN ABOVE.           */
*          3 FCBCHAN BIT(4);            /*CHANNEL NUMBER 1 TO 15     */
./ ADD NAME=IHAFOE
*        %GOTO FOEBSL;                                               /*
         MACRO
         IHAFOE
**             FIX OWNERSHIP ELEMENT
**
**       RELEASE 1 AOS, 11/4/71, LEVEL=1
**
FOE      DSECT  , FOEPTR
FOEFLNKF DS    0F -             FULLWORD REFERENCE FOR FOEFLINK
FOEFLAG  DS    BL1 -            FLAG BYTE
FOEINT   EQU   X'80' -          WHEN 1, FOE QUIESCED OR PURGED
FOEFLINK DS    AL3 -            FORWARD LINK-POINTER TO NEXT FOE OR
*                               0 IF THIS IS LAST FOE
FOEVINDX DS    XL2 -            VIRTUAL INDEX OF PAGE REPRESENTED BY
*                               THIS FOE, 12 BIT VIRTUAL BLOCK NUMBER
*                               CONCATENATED TO 4 LOW ORDER 0 BITS
FOEFXCT  DS    H -              FIX COUNT ASSOCIATED WITH THIS FOE
FOEEND   DS    0C -             END OF FIX OWNERSHIP ELEMENT
FOELEN   EQU   FOEEND-FOE -     LENGTH OF FIX OWNERSHIP ELEMENT
         MEND  , */
*%FOEBSL  :  ;
*/*            FIX OWNERSHIP ELEMENT                                 */
*
*/*      RELEASE 1 AOS, 11/4/71, LEVEL=1                             */
*
*DECLARE
*  1 FOE      BASED(FOEPTR),
*   2 FOEFLNKF    FIXED(31),             /* FULLWORD REFERENCE FOR
*                                           FOEFLINK                 */
*    3 FOEFLAG     CHAR(1),              /* FLAG BYTE                */
*     4 FOEINT   BIT(1),                 /* WHEN 1, FOE QUIESCED OR
*                                           PURGED                   */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*    3 FOEFLINK    PTR(24)  BDY(BYTE),   /* FORWARD LINK-POINTER TO
*                                           NEXT FOE OR  0 IF THIS
*                                           IS LAST FOE              */
*   2 FOEVINDX    CHAR(2),               /* VIRTUAL INDEX OF PAGE
*                                           REPRESENTED BY  THIS
*                                           FOE, 12 BIT VIRTUAL
*                                           BLOCK NUMBER
*                                           CONCATENATED TO 4 LOW
*                                           ORDER 0 BITS             */
*   2 FOEFXCT     FIXED(15);             /* FIX COUNT ASSOCIATED
*                                           WITH THIS FOE            */
*DECLARE 1 FOEEND  (*) CHAR(1)   BASED
*  (ADDR(FOE     )+LENGTH(FOE     ));
*                                        /* END OF FIX OWNERSHIP
*                                           ELEMENT                  */
./ ADD NAME=IHAFQE
*        %GOTO FQEBSL;       /* BILINGUAL MAPPING           /*      /*
         MACRO
         IHAFQE   &TYPE
*
*        RELEASE 1 AOS, 11/3/71, LEVEL=1
*
         AIF   ('&TYPE' EQ 'INTERNAL').EQU
FQESECT  DSECT      FREE QUEUE ELEMENT
FQTYPE   DS    0B   FLAG BYTE
FQERGNFL EQU   X'80' FQE REGION FLAG
FQECPB   EQU   X'40' FREE AREA CROSSES PAGE BOUNDARY - UNSUITABLE FOR
*                   L/SQA ALLOCATION
FQEPTR   DS    A    PTR TO NEXT LOWER FREE AREA
FQELNTH  DS    F    NUMBER BYTES IN FREE AREA
FQAREA   DS    A    HIGH ADDRESS OF FREE SPACE
FQERSVD  DS    F    RESERVED
FQESLNTH EQU   8    L/SQA FQE LENGTH
FQERLNTH EQU   16   REGION FQE LENGTH
         MEXIT
.EQU     ANOP
FQTYPE   EQU      0   FLAG BYTE
FQERGNFL EQU   X'80' FQE REGION FLAG
FQECPB   EQU   X'40' FREE AREA CROSSES PAGE BOUNDARY - UNSUITABLE FOR
*                    L/SQA ALLOCATION
FQEPTR   EQU      0    PTR TO NEXT LOWER FREE AREA
FQELNTH  EQU      4    NUMBER BYTES IN FREE AREA
FQAREA   EQU      8    HIGH ADDRESS OF FREE SPACE
FQERSVD  EQU      12    RESERVED
FQESLNTH EQU   8    L/SQA FQE LENGTH
FQERLNTH EQU   16   REGION FQE LENGTH
         MEND  , */
*%FQEBSL:   ;
*
* /*     RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
* /* THIS MACRO ASSUMES A REGION FQE. IF AN L/SQA FQE IS DESIRED,    */
* /* SET MACRO VARIABLE FQETYPE TO 'FQELSQA' BEFORE THE INCLUDE FOR  */
* /* THIS MACRO                                                      */
* DECLARE
*   1 FQESECT  BASED(FQESEPTR),      /* QUEUE ELEMENT                */
*    2 FQEPTR      PTR(31),          /* PTR TO NEXT LOWER FREE AREA  */
*       3 FQTYPE   BIT(8),           /* FLAG BYTE                    */
*         4 FQERGNFL BIT(1),         /* FQE REGION FLAG              */
*         4 FQECPB BIT(1),           /* FREE AREA CROSSES PAGE BOUN-
*                                       DARY - UNSUITABLE FOR L/SQA
*                                       ALLOCATION                   */
*       3 FQEPTRA  PTR(24),          /* PTR TO NEXT LOWER FREE AREA  */
*%IF FQETYPE='' %THEN                /* CHECK FOR REGION FQE         */
*    %GOTO FQERGN1;                  /* BRANCH IF SO                 */
*    2 FQELNTH     FIXED(31);        /* NUMBER BYTES IN FREE AREA    */
*%GOTO FQELS1;                       /* END OF L/SQA FQE             */
*%FQERGN1:   ;                       /* REGION FQE                   */
*    2 FQELNTH     FIXED(31),        /* NUMBER BYTES IN FREE AREA    */
*    2 FQAREA      PTR(31),          /* HIGH ADDRESS OF FREE SPACE   */
*    2 FQERSVD     FIXED(31);        /* RESERVED                     */
*%FQELS1:   ;
./ ADD NAME=IHAGFAWS
*%GOTO PLGFAWS;
*/*********************************************************************
*                                                                     *
* COPYRIGHT =                                                         *
*    5740-XYN COPYRIGHT IBM CORP 1981,                                *
*    LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                      *
*    REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER                      *
*    G120-2083.                                                       *
*                                                                     *
* STATUS -                                                            *
*    OS/VS2 JBB1326                                                   *
* CHANGE ACTIVITY -                                                   *
* $L0= EXTREAL, JBB1326, 800701, PD23: EXTENDED REAL ADDRESSING       *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR IEAVGFA AND IEAVGFAX WORK SAVE AREA            *
* ENTRY POINTS -                                                      *
*    IHAGFAWS MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IHAGFAWS MACRO DEFINITION                                    *
* OUTPUT -                                                            *
*    IHAGFAWS MAPPING MACRO                                           *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    PL/S MACRO                                                       *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
**********************************************************************/
*%PLGFAWS: ;
*/*********************************************************************
**                                                                   **
**              GFA/GFAX WORK SAVE AREA             06 APR 81        **
**                                                                   **
**       THIS MACRO SUPPORTS:  OS/VS2 JBB1326                        **
**                                                                   **
**       THIS WORK SAVE AREA IS USED BY IEAVGFA AND IEAVGFAX         **
**       ROUTINES AS INDICATED IN THE TABLE BELOW                    **
**                                                                   **
**********************************************************************/
  DCL 1 GFAWS DEFINED(PVTWSA8), /* GFA/GFAX WORK AREA (MAPPED INTO
                                             PVT) */
       2 GFAWSL0 (11) PTR,   /* REGISTER SAVE AREA (REGS 4-14)      */
       2 GFAWSL1 , /* WORK/SAVE AREA FOR LEVEL 1 SUBROUTINES */
        4 L1WORD1 PTR(31),   /* LEVEL 1 WORD 1 */
        4 L1WORD2 PTR(31),   /* LEVEL 1 WORD 2 */
        4 L1WORD3 PTR(31),   /* LEVEL 1 WORD 3 */
       2 GFAWSL2         , /* WORK/SAVE AREA FOR LEVEL 2 SUBROUTINES */
        4 L2WORD1 PTR(31),   /* LEVEL 2 WORD 1 */
        4 L2WORD2 PTR(31),   /* LEVEL 2 WORD 2 */
        4 L2WORD3 PTR(31),   /* LEVEL 2 WORD 3 */
        4 L2WORD4 PTR(31),   /* LEVEL 2 WORD 4 */
        4 L2WORD5 PTR(31),   /* LEVEL 2 WORD 5 */
        4 L2WORD6 PTR(31),   /* LEVEL 2 WORD 6 */
        4 L2WORD7 PTR(31),   /* LEVEL 2 WORD 7 */
        4 L2WORD8 PTR(31),   /* LEVEL 2 WORD 8 */
        4 L2WORD9 PTR(31),   /* LEVEL 2 WORD 9 */
        4 L2WORD10 PTR(31),  /* LEVEL 2 WORD 10 */
        4 L2TEMP PTR(31),   /* TEMPORARY STORAGE */
       2 GFAWSL3, /* WORK/SAVE AREA FOR LEVEL 3 SUBROUTINES */
        4 L3WORD1 PTR(31),    /* LEVEL 3 WORD 1 */
        4 L3WORD2 PTR(31),    /* LEVEL 3 WORD 2 */
        4 L3WORD3 PTR(31),    /* LEVEL 3 WORD 3 */
        4 L3WORD4 PTR(31),    /* LEVEL 3 WORD 4 */
        4 L3WORD5 PTR(31),    /* LEVEL 3 WORD 5 */
        4 L3WORD6 PTR(31),    /* LEVEL 3 WORD 6 */
        4 L3WORD7 PTR(31),    /* LEVEL 3 WORD 7 */
        4 L3WORD8 PTR(31),    /* LEVEL 3 WORD 8 */
        4 L3WORD9 PTR(31),    /* LEVEL 3 WORD 9 */
        4 L3WORD10 PTR(31),   /* LEVEL 3 WORD 10 */
       2 GFAWSL4, /* WORK/SAVE AREA FOR LEVEL 4 SUBROUTINES */
        4 L4WORD1 PTR(31),    /* LEVEL 4 WORD 1 */
        4 L4WORD2 PTR(31),    /* LEVEL 4 WORD 2 */
        4 L4WORD3 PTR(31),    /* LEVEL 4 WORD 3 */
        4 L4WORD4 PTR(31),    /* LEVEL 4 WORD 4 */
        4 L4WORD5 PTR(31),    /* LEVEL 4 WORD 5 */
        4 L4WORD6 PTR(31),    /* LEVEL 4 WORD 6 */
        4 L4WORD7 PTR(31),    /* LEVEL 4 WORD 7 */
       2 GFAWSL5, /* WORK/SAVE AREA FOR LEVEL 5 SUBROUTINES */
        4 L5WORD1 PTR(31),    /* LEVEL 5 WORD 1 */
        4 L5WORD2 PTR(31),    /* LEVEL 5 WORD 2 */
        4 L5WORD3 PTR(31),    /* LEVEL 5 WORD 3 */
        4 L5WORD4 PTR(31),    /* LEVEL 5 WORD 4 */
        4 L5WORD5 PTR(31),    /* LEVEL 5 WORD 5 */
        4 L5WORD6 PTR(31),    /* LEVEL 5 WORD 6 */
        4 L5WORD7 PTR(31),    /* LEVEL 5 WORD 7 */
        4 L5WORD8 PTR(31),    /* LEVEL 5 WORD 8 */
       2 VARIABLS,            /* INTERNAL VARIABLES USED BY GFA
                                 AND ROUTINES IN GFAX                */
        4 INTRETCD CHAR (1),     /* INTERNAL RETURN CODE */
        4 INTFLGS BIT (8),       /* INTERNAL FLAGS */
          6 SAVEFLAG BIT(1),    /* TEMPORARY SAVE AREA FOR PCBXM AND
          PFTBBELO BITS */
          6 LOOPFLAG BIT(1),    /* LOOP CONTROL IN IEAVPEND  */
          6 * BIT(3),           /* RESERVED */
          6 PREFREQ BIT (1),    /* PREFERRED STORAGE IS REQUIRED     */
          6 BELOWREQ BIT (1),  /* BELOW STORAGE REQUIRED             */
          6 BELOWSUG BIT(1),     /* BELOW STORAGE SUGGESTED          */
        4 * CHAR (1), /* RESERVED  */
        4 SYSMASK CHAR(1),   /* USED WHILE CHANGING DAT STATUS */
        4 AIAPTR PTR,            /* ADDRESS OF CURRENT AIA */
        4 * PTR,
          6 * BIT (16),           /* RESERVED          */
          6 XRBN FIXED(15),       /* REAL BLOCK NUMBER */
        4 NEXTPCBP PTR (31),     /* NEXT PCB ON INPUT QUEUE */
        4 ROOTPCBP PTR (31),     /* SAVE AREA FOR ROOT PCB ADDRESS */
        4 IOHOLDQF PTR(31),      /* FIRST PAGEIN AIA  */
        4 IOHOLDQL PTR(31),      /* LAST PAGEIN AIA     */
        4 RSMHSAVE PTR(31), /* SAVE AREA FOR INPUT RSMHD
                               ADDRESS */
        4 NOTVRPFT PTR(31), /*REMEMBERS A NONPREFERRED, NON-V=R FRAME*/
        4 NEWPCB PTR(31), /* REMEMBERS THE PCB GOTTEN WHILE HANDLING
           AN INPUT-IN-PROGRESS CASE */
        4 IOPFTEP PTR(31),  /* POINTER TO PFTE FOR A FRAME WITH I/O
             IN PROGRESS */
        4 GFAWSRES(1) PTR(31);  /* RESERVED */
./ ADD NAME=IHAGSDA
*        %GOTO PLSGSDA1;    /*
         MACRO
         IHAGSDA
**/
*%PLSGSDA1 :    ;
*/********************************************************************/
*/*              GLOBAL SYSTEM DUPLEX AREA                           */
*/*              OS/VS2 RELEASE 2,4/11/73,LEVEL 1                    */
*/*                                                                  */
*/********************************************************************/
*        %GOTO PLSGSDA2;       /*
GSDA     DSECT
*        THE FOLLOWING FIELDS DUPLEX CVT FIELDS
GSDA001  EQU   *                       START LABEL FOR CVT DUPLEXING
GSDAASVT DS    A                       ASVT DUPLEXED ADDRESS
GSDAASVB EQU   X'80'                   IF ON DUPLEXED ASVT IS VALID
GSDAPCCT DS    A                       PCCAT DUPLEXED ADDRESS
GSDAPCCB EQU   X'80'                   IF ON DUPLEXED PCCAT IS VALID
GSDAGDA  DS    A                       GDA DUPLEXED ADDRESS
GSDAGDAB EQU   X'80'                   IF ON DUPLEXED GDA IS VALID
GSDACSD  DS    A                       CSD DUPLEXED ADDRESS
GSDACSDB EQU   X'80'                   IF ON DUPLEXED CSD IS VALID
GSDALCCT DS    A                       LCCAT DUPLEXED ADDRESS
GSDALCCB EQU   X'80'                   IF ON DUPLEXED LCCAT IS VALID
GSDA001E EQU   *                       END LABEL FOR CVT DUPLEXING
GSDA001N EQU   (GSDA001E-GSDA001)/4    NUMBER OF CVT ENTRIES
*        THE FOLLOWING FIELDS DUPLEX ASVT FIELDS
GSDAMAX  DS    0F                      MAXUSER VALUE DUPLEX
         DS    H                       FIRST 2 BYTES ONLY USED FOR HIGH
*                                      BIT
GSDAMAXB EQU   X'80'                   IF ON MAXUSER DUPLEX IS VALID
GSDAMAXU DS    H                       MAXUSER DUPLEX AREA
         DS    0D                      ASSURE DOUBLE WORD ALIGNMENT
GSDAEND  EQU   *                       END OF GSDA
GSDALEN  EQU   GSDAEND-GSDA            LENGTH OF GSDA
         MEND  ,    */
*%PLSGSDA2 :    ;
*DECLARE                               /* GLOBAL SYSTEM DUPLEX AREA  */
*  1 GSDA BASED(CVTGSDA),
*    2 GSDAASVT PTR(31),               /* ASVT DUPLEXED ADDRESS      */
*      3 GSDAASVB BIT(1),              /* IF ON THEN DUPLEX IS VALID */
*      3 * BIT(31),                    /* ADDRESS                    */
*    2 GSDAPCCT PTR(31),               /* PCCAT DUPLEXED ADDRESS     */
*      3 GSDAPCCB BIT(1),              /* IF ON THEN DUPLEX IS VALID */
*      3 * BIT(31),                    /* ADDRESS                    */
*    2 GSDAGDA PTR(31),                /* GDA DUPLEXED ADDRESS       */
*      3 GSDAGDAB BIT(1),              /* IF ON THEN DUPLEX IS VALID */
*      3 * BIT(31),                    /* ADDRESS                    */
*    2 GSDACSD PTR(31),                /* CSD DUPLEXED ADDRESS       */
*      3 GSDACSDB BIT(1),              /* IF ON THEN DUPLEX IS VALID */
*      3 * BIT(31),                    /* ADDRESS                    */
*    2 GSDALCCT PTR(31),               /* LCCAT DUPLEXED ADDRESS     */
*      3 GSDALCCB BIT(1),              /* IF ON THEN DUPLEX IS VALID */
*      3 * BIT(31),                    /* ADDRESS                    */
*    2 GSDAMAX FIXED(31),              /* MAXUSER VALUE DUPLEX AREA  */
*      3 * FIXED(15),                  /* USED ONLY FOR HIGH BIT     */
*        4 GSDAMAXB BIT(1),            /* IF ON THEN DUPLEX IS VALID */
*        4 * BIT(15),                  /*RESERVED                    */
*      3 GSDAMAXU FIXED(15),           /* MAXUSER DUPLEX AREA        */
*    2 * CHAR(0) BDY(DWORD);           /* ASSURE DWORD ALIGNED       */
./ ADD NAME=IHAHDR
*        % GOTO HDRBSL1;                                             /*
         MACRO
         IHAHDR  &DSECT=YES                                          */
*%HDRBSL1 : ;
* /* MACMEAN HDR MEANS AR149 HEADER                                  */
* /* MACCOMP Y-1 SC1C5 PZD81                                         */
* /* MACSTAT Y-1 72178/Y02701. OZ27936,11/11/77,G LUX.               */
*        %GOTO HDRBSL;                                               /*
         AIF   ('&DSECT' EQ 'YES').HDR001
HDR      DS    0D -
         AGO   .HDR002
.HDR001  ANOP
HDR      DSECT , HDRPTR
.HDR002  SPACE 1
HDRTYP   DS    B -      RECORD TYPE
HDRMC0   EQU   X'13'    MCH,MCAR
HDRMC2   EQU   X'12'    CONVERTED MCH
HDRMC8   EQU   X'18'    SER 1
HDRMC9   EQU   X'19'    SER 0
HDRMCA   EQU   X'1A'    CONVERTED SER 1
HDRMCB   EQU   X'1B'    CONVERTED SER 0
HDRCC0   EQU   X'21'    CCH
HDRCC2   EQU   X'22'    CONVERTED CCH
HDRCC8   EQU   X'28'    SER 1
HDRCC9   EQU   X'29'    SER 0
HDRCCA   EQU   X'2A'    CONVERTED SER 1
HDRCCB   EQU   X'2B'    CONVERTED SER 0
HDRUC0   EQU   X'30'    OBR
HDRUC2   EQU   X'32'    CONVERTED OBR
HDRUC4   EQU   X'34'    TP ACCESS METHOD
HDRSE0   EQU   X'40'    PROGRAM ISSUED SVC 13
HDRSE1   EQU   X'41'    FORCED SVC 13
HDRSE2   EQU   X'42'    MACHINE CHECK
HDRSE4   EQU   X'44'    OPERATOR PRESSED RESTART
HDRSE8   EQU   X'48'    PROGRAM CHECK OCCURRED
HDRSEF   EQU   X'4F'    SHORT RECORD - LOST RECORD COUNT
HDRIPL   EQU   X'50'    IPL
HDRRCG   EQU   X'60'    RECONFIGURATION
HDREOD   EQU   X'80'    END OF DAY
HDRNS0   EQU   X'90'    NON-MDR RECORDED
HDRNS1   EQU   X'91'    MISCELLANEOUS DATA RECORDER
HDRNS3   EQU   X'93'    CONVERTED TPER
HDROPRN  DS    B -      OP SYSTEM AND RELEASE
HDROS    EQU   X'15'    OS - RELEASE 21
HDRDOS   EQU   X'20'    DOS - OLD LEVELS
HDRDOS1  EQU   X'21'    DOS - FIRST RELSE WITH RMSR
HDRDOS2  EQU   X'22'    DOS - NXT RELSE AFTER RMSR
HDRVS11  EQU   X'41'    VS/1 - RELEASE 1
HDRVS12  EQU   X'42'    VS/1 - RELEASE 2
HDRCP67  EQU   X'60'    CP67
HDRVS21  EQU   X'81'    VS/2 - RELEASE 1
HDRVS22  EQU   X'82'    VS/2 - RELEASE 1
HDRIS    DS    B -      RECORD INDEPENDENT SWITCHES
HDRISMR  EQU   X'80'    MULTIPLE RECORD RECORDING
HDRISNS  EQU   X'40'    NS MACHINE (NS CLOCK)
HDRISTM  EQU   X'08'    TIME MACRO USED
HDRISMP  EQU   X'04'    MULTIPROCESSING
HDRISR   EQU   X'02'    RELOCATE
HDRISEC  EQU   X'01'    EC MODE
HDRDS    DS    0CL3     RECORD DEPENDENT SWITCHES
HDRDS1   DS    B -      FIRST BYTE OF SWITCHES - MEANING DEPENDENT
*                       ON RECORD TYPE
HDRDS10  EQU   X'80'    SHORT RECORD (PER GC28-0772)           @ZA27936
HDRDS11  EQU   X'40'
HDRDS12  EQU   X'20'    ERRORID PRESENT FOR SOFTWARE RECORDS   @G17EP5W
HDRDS13  EQU   X'10'    ERRORID PRESENT FOR HARDWARE RECORDS   @G17EP5W
HDRDS14  EQU   X'08'
HDRDS15  EQU   X'04'
HDRDS16  EQU   X'02'
HDRDS17  EQU   X'01'
HDRDS2   DS    B -      SECOND BYTE OF SWITCHES - USED BY MDR
HDRMDR1  EQU   X'01'    3330
HDRMDR2  EQU   X'02'    2305-2
HDRMDR4  EQU   X'04'    3211
HDRMDR8  EQU   X'08'    2715
HDRMDR12 EQU   X'12'    2305-1
HDRMDA0  EQU   X'F0'    2946 AIRLINE DEVELOPMENT
HDRMDA1  EQU   X'F1'    2948 AIRLINE DEVELOPMENT
HDRMDA2  EQU   X'F2'    1006 AIRLINE DEVELOPMENT
HDRMDA3  EQU   X'F3'    2703 COMM LINE AIRLINE DEVELOPMENT
HDRMDA4  EQU   X'F4'    2969 COMM LINE AIRLINE DEVELOPMENT
HDRDS3   DS    B -      THIRD BYTE OF SWITCHES - RESERVED
HDRCNT   DS    B -      RECORD COUNT
HDRCNTS  EQU   X'F0'    SEQUENCE NUMBER OF PHYSICAL RECORD
HDRCNTT  EQU   X'0F'    TOTAL NUMBER OF PHYSICAL RECORDS
         DS    B -      RESERVED
HDRDTM   DS    CL8      DATE AND TIME
HDRCPID  DS    CL8      CPU ID AND SERIAL NUMBER
         MEND  , */
*%HDRBSL  :  ;
*DECLARE
*  1 HDR BASED(HDRPTR),
*   2 HDRTYP CHAR(1),    /* RECORD TYPE                              */
*     %HDRMC0='''13''X'; /* MCH,MCAR */
*     %HDRMC2='''12''X'; /* CONVERTED MCH */
*     %HDRMC8='''18''X'; /* SER 1 */
*     %HDRMC9='''19''X'; /* SER 0 */
*     %HDRMCA='''1A''X'; /* CONVERTED SER 1 */
*     %HDRMCB='''1B''X'; /* CONVERTED SER 0 */
*     %HDRCC0='''21''X'; /* CCH */
*     %HDRCC2='''22''X'; /* CONVERTED CCH */
*     %HDRCC8='''28''X'; /* SER 1 */
*     %HDRCC9='''29''X'; /* SER 0 */
*     %HDRCCA='''2A''X'; /* CONVERTED SER 1 */
*     %HDRCCB='''2B''X'; /* CONVERTED SER 0 */
*     %HDRUC0='''30''X'; /* OBR */
*     %HDRUC2='''32''X'; /* CONVERTED OBR */
*     %HDRUC4='''34''X'; /* TP ACCESS METHOD */
*     %HDRSE0='''40''X'; /* PROGRAM ISSUED SVC 13 */
*     %HDRSE1='''41''X'; /* FORCED SVC 13 */
*     %HDRSE2='''42''X'; /* MACHINE CHECK */
*     %HDRSE4='''44''X'; /* OPERATOR PRESSED RESTART */
*     %HDRSE8='''48''X'; /* PROGRAM CHECK OCCURRED */
*     %HDRSEF='''4F''X'; /* SHORT RECORD - LOST RECORD COUNT */
*     %HDRIPL='''50''X'; /* IPL */
*     %HDRRCG='''60''X'; /* RECONFIGURATION */
*     %HDREOD='''80''X'; /* END OF DAY */
*     %HDRNS0='''90''X'; /* NON-MDR RECORDED */
*     %HDRNS1='''91''X'; /* MISCELLANEOUS DATA RECORDER */
*     %HDRNS3='''93''X'; /* CONVERTED TPER */
*   2 HDROPRN FIXED(8),  /* OP SYSTEM AND RELEASE            @Z40CPXH*/
     3 HDROPSYS BIT(3),  /* OPERATING SYSTEM ID              @Z40CPXH*/
     3 HDRRELN  BIT(5),  /* RELEASE NUMBER                   @Z40CPXH*/
*     %HDROS ='''15''X'; /* OS RELEASE 21 */
*     %HDRDOS='''20''X'; /* DOS - OLD LEVELS */
*     %HDRDOS1='''21''X'; /* DOS - FIRST RELEASE WITH RMSR */
*     %HDRDOS2='''22''X'; /* DOS - NEXT RELEASE AFTER RMSR */
*     %HDRVS11='''41''X'; /* VS1 - RELEASE 1 */
*     %HDRVS12='''42''X'; /* VS1 - RELEASE 2 */
*     %HDRCP67='''60''X'; /* CP67 */
*     %HDRVS21='''81''X'; /* VS2 - RELEASE 1 */
*     %HDRVS22='''82''X'; /* VS2 - RELEASE 2 */
*   2 HDRIS CHAR(1),     /* RECORD INDEPENDENT SWITCHES              */
*    3 HDRISMR BIT(1),   /* MULTIPLE RECORD RECORDING                */
*    3 HDRISNS BIT(1),   /* NS MACHINE (NS CLOCK)                    */
*    3 HDRTRUNC BIT(1),  /* RECORD TRUNCATED (VS2/2)                 */
*    3 *       BIT(1),   /* RESERVED                                 */
*    3 HDRISTM BIT(1),   /* TIME MACRO USED                          */
*    3 HDRISMP BIT(1),   /* MULTIPROCESSING                          */
*    3 HDRISR BIT(1),    /* RELOCATE                                 */
*    3 HDRISEC BIT(1),   /* EC MODE                                  */
*   2 HDRDS CHAR(3),     /* RECORD DEPENDENT SWITCHES                */
*    3 HDRDS1 CHAR(1),   /* FIRST BYTE OF SWITCHES - MEANING         */
*                        /* DEPENDENT ON RECORD TYPE                 */
*     4 HDRDS10 BIT(1),  /* SHORT RECORD (PER GC28-0772)     @ZA27936*/
*     4 HDRDS11 BIT(1),
*     4 HDRDS12 BIT(1),  /*ERRORID PRESENT FOR SOFTWARE RECS @G17EP5W*/
*     4 HDRDS13 BIT(1),  /*ERRORID PRESENT FOR HARDWARE RECS @G17EP5W*/
*     4 HDRDS14 BIT(1),
*     4 HDRDS15 BIT(1),
*     4 HDRDS16 BIT(1),
*     4 HDRDS17 BIT(1),
*    3 HDRDS2 CHAR(1),   /* SECOND BYTE OF SWITCHES - USED BY MDR    */
*     %HDRMDR1='''01''X'; /* 3330 */
*     %HDRMDR2='''02''X'; /* 2305-2 */
*     %HDRMDR4='''04''X'; /* 3211 */
*     %HDRMDR8='''08''X'; /* 2715 */
*     %HDRMDR12='''12''X'; /* 2305-1 */
*     %HDRMDA0='''F0''X'; /* 2946 AIRLINE DEVELOPMENT */
*     %HDRMDA1='''F1''X'; /* 2948 AIRLINE DEVELOPMENT */
*     %HDRMDA2='''F2''X'; /* 1006 AIRLINE DEVELOPMENT */
*     %HDRMDA3='''F3''X'; /* 2703 COMM LINE AIRLINE DEVELOPMENT */
*     %HDRMDA4='''F4''X'; /* 2969 COMM LINE AIRLINE DEVELOPMENT */
*    3 HDRDS3 CHAR(1),   /* THIRD BYTE OF SWITCHES - RESERVED        */
*   2 HDRCNT CHAR(1),    /* RECORD COUNT                             */
*    3 HDRCNTS BIT(4),   /* SEQUENCE NUMBER OF PHYSICAL RECORD       */
*    3 HDRCNTT BIT(4),   /* TOTAL NUMBER OF PHYSICAL RECORDS         */
*   2 * CHAR(1),         /* RESERVED                                 */
*   2 HDRTM CHAR(8),     /* DATE AND TIME                            */
*   2 HDRCPID CHAR(8);   /* CPU ID AND SERIAL NUMBER                 */
./ ADD NAME=IHAICB
*%;/*
         MACRO
         IHAICB &DSECT=YES
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHAICB
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 2
.*
.*01  CHANGE-ACTIVITY = ICBINDIC OFFSET FOR PLS
.*
.*01  DESCRIPTIVE-NAME = INTERRUPT CONTROL BLOCK
.*
.*01  FUNCTION = BSAM AND QSAM CHAINED SCHEDULING.
.*    SIMILAR TO IOB, BUT KNOWN ONLY TO ACCESS METHOD.
.*    ONE ICB IS PROVIDED FOR EACH BLOCK CONCURRENTLY PROCESSIBLE
.*    CHANNEL PROGRAM SEGMENTS FOLLOWING ICBS ARE DYNAMICALLY
.*    CHAINED TOGETHER, AND CHAINED FROM SEGMENT FOLLOWING IOB
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = 375 STATEMENTS
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING
.*
.*04        VALUE = YES OR NO
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*
.**** END OF SPECIFICATIONS ***/
* /* MACCOMP Y-2 SC1D0/SJD48            */
* /* MACSTAT Y-2 73124/021160           */
*/********************************************************************/
*/*            INTERRUPTION CONTROL BLOCK                            */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
*/*             USING ON ICB GIVES ADDRESSABILITY FOR ALL SYMBOLS.   */
*/*      PL/S - DCL ICBPTR  AS A BASE FOR THE ICB                    */
*/*                                                                  */
*/*  USE OF ICB                                                      */
*/*         THIS CONTROL BLOCK IS USED BY BSAM AND QSAM WITH         */
*/*         CHAINED SCHEDULING.  THE NUMBER OF ICBS IS CONTROLLED    */
*/*         BY NCP (BSAM) OR BUFNO (QSAM).  EACH ICB IS FOLLOWED     */
*/*         BY A CHANNEL PROGRAM SEGMENT SIMILAR TO THE NORMAL       */
*/*         CHANNEL PROGRAM FOR THE DEVICE, EXCEPT THAT FOR DASD     */
*/*         DEVICES IT HAS NO SEEK/SEARCH LOGIC.  THE CHANNEL        */
*/*         PROGRAM SEGMENTS TERMINATE WITH A NOP/TIC COMMAND        */
*/*         POINTING TO THE NEXT ICB CHANNEL PROGRAM SEGMENT.        */
*/*         THE ICBS ARE USED BY THE ACCESS METHOD AS IF THEY WERE   */
*/*         IOBS, BUT THEY ARE NEVER PASSED TO EXCP.                 */
*/*                                                                  */
*/*         ________________________________________________         */
*/*  0 (00)                                                       */
*/*           ICBNFLG1                ICBNICBB                    */
*/*         ______________________________________________        */
*/*  4 (04)                                                        */
*/*                            ICBNECB                             */
*/*         _______________________________________________        */
*/*  8 (08)                                                     */
*/*           ICBFLAG1   ICBFLAG2   ICBSENS0   ICBSENS1         */
*/*         ____________________________________________        */
*/* 12 (0C)                                                        */
*/*                            ICBECBPT                            */
*/*         _______________________________________________        */
*/* 16 (10)                                                       */
*/*           ICBECBCC                                            */
*/*         ___________       ICBCSW                              */
*/* 20 (14)                                                        */
*/*                                                                */
*/*         _______________________________________________        */
*/* 24 (18)                                                        */
*/*                            ICBSTART                            */
*/*         _______________________________________________        */
*/* 28 (1C)         ICBINCAM                                     */
*/*           ICBCRDCC   ICBCRILC   ICBINDIC     *              */
*/*         ____________________________________________        */
*/* 32 (20)                                                        */
*/*                                                                */
*/*                            ICBSEEK                             */
*/* 36 (24)                                                        */
*/*                                                                */
*/*         _______________________________________________        */
*/* 40 (28)                                                        */
*/*                            ICBDACCW                            */
*/*                                                                  */
*/********************************************************************/
*%/*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').NODSCT
ICB      DSECT
         AGO   .CONT
.NODSCT  ANOP
         DS    0D
ICB      EQU   *
.CONT    ANOP
***********************************************************************
*
*              ICB SECTION 1 -- EQUIVALENT TO
*              IOB NORMAL PREFIX
*
***********************************************************************
*
ICBNICBA DS    0A ------ ADDR.NEXT ICB ON CHAIN
ICBNFLG1 DS    B -       FLAG BYTE
ICBPRTOV EQU   X'80' --- 'PRTOV' HAS OCCURRED
ICBWRITE EQU   X'40' --- 'WRITE' OPERATION IN PROCESS
ICBREAD  EQU   X'20' --- 'READ' OPERATION IN PROCESS
ICBUPDAT EQU   X'10' --- BLOCK IS TO BE UPDATED
ICBBKSPC EQU   X'08' --- ICB BEING USED FOR BACKSPACE,CONTROL,NOTE/PT.
ICBSPAN  EQU   X'04' --- THIS RECORD IS A SPANNED RECORD
ICBRSV06 EQU   X'02',,C'X' RESERVED
ICBFIRST EQU   X'01' --- THIS IS FIRST ICB ON CHAIN
ICBNICBB DS    AL3 ----- ADDR.NEXT ICB ON CHAIN
ICBNECB  DS    F ------- EVENT CONTROL BLOCK
         SPACE 3
***********************************************************************
*
*              ICB SECTION 2 -- EQUIVALENT TO
*              FIRST PART OF IOB STANDARD SECTION
*
***********************************************************************
*
ICBFLAG1 DS    B -       FLAG BYTE
ICBDATCH EQU   X'80' --- DATA CHAINING USED IN CHANNEL PROGRAM
ICBCMDCH EQU   X'40' --- COMMAND CHAINING USED IN CHANNEL PROGRAM
ICBERRTN EQU   X'20' --- ERROR ROUTINE IS IN CONTROL
ICBRPSTN EQU   X'10' --- DEVICE IS TO BE REPOSITIONED
ICBCYCCK EQU   X'08' --- CYCLIC REDUNDANCY CHECK NEEDED(TAPE ONLY)
ICBFCREX EQU   X'08' --- FETCH COMMAND RETRY EXIT (DIRECT ACCESS ONLY)
ICBIOERR EQU   X'04' --- I/O ERROR HAS OCCURRED
ICBUNREL EQU   X'02' --- THIS I/O REQUEST IS UNRELATED(NON-SEQUENTIAL)
ICBRSTRT EQU   X'01' --- RESTART ADDR.IN ICB TO BE USED
ICBFLAG2 DS    B -       FLAG BYTE
ICBHALT  EQU   X'80' --- HALT I/O HAS BEEN ISSUED BY SVC PURGE ROUTINE
ICBSENSE EQU   X'40' --- ISSUE SENSE COMMAND AFTER DEVICE END OCCURS
ICBPURGE EQU   X'20' --- ICB HAS BEEN PURGED *ALLOW I/O TO QUIESCE
ICBRDHA0 EQU   X'10' --- HOME ADDRESS TO BE READ * NO SEEK NEEDED
ICBALTTR EQU   X'08' --- NO TEST FOR OUT-OF-EXTENT * AN ALTERNATE TRACK
*                        IS IN USE
ICBSKUPD EQU   X'04' --- SEEK ADDRESS IS BEING UPDATED -CYLINDER END
*                        OR FILE MASK VIOLATION HAS OCCURRED
ICBSTATO EQU   X'02' --- DEVICE END STATUS HAS BEEN ORED WITH
*                        CHANNEL END STATUS - GRAPHICS DEVICE
ICBPNCH  EQU   X'01' --- TURNED ON BY QSAM WHEN ERROR RECOVERY IS TO
*                        BE PROVIDED FOR THE 2540 CARD PUNCH
ICBSENS0 DS    B ------- FIRST SENSE BYTE
ICBS0B0  EQU   X'80' --- BIT 0 (DEVICE DEPENDENT)
ICBS0B1  EQU   X'40' --- BIT 1 (DEVICE DEPENDENT)
ICBS0B2  EQU   X'20' --- BIT 2 (DEVICE DEPENDENT)
ICBS0B3  EQU   X'10' --- BIT 3 (DEVICE DEPENDENT)
ICBS0B4  EQU   X'08' --- BIT 4 (DEVICE DEPENDENT)
ICBS0B5  EQU   X'04' --- BIT 5 (DEVICE DEPENDENT)
ICBS0B6  EQU   X'02' --- BIT 6 (DEVICE DEPENDENT)
ICBS0B7  EQU   X'01' --- BIT 7 (DEVICE DEPENDENT)
ICBSNSC9 EQU   X'01' --- CHANNEL 9 SENSED IN CARRIAGE TAPE
ICBSENS1 DS    B ------- SECOND SENSE BYTE
ICBS1B0  EQU   X'80' --- BIT 0 (DEVICE DEPENDENT)
ICBS1B1  EQU   X'40' --- BIT 1 (DEVICE DEPENDENT)
ICBS1B2  EQU   X'20' --- BIT 2 (DEVICE DEPENDENT)
ICBS1B3  EQU   X'10' --- BIT 3 (DEVICE DEPENDENT)
ICBS1B4  EQU   X'08' --- BIT 4 (DEVICE DEPENDENT)
ICBS1B5  EQU   X'04' --- BIT 5 (DEVICE DEPENDENT)
ICBS1B6  EQU   X'02' --- BIT 6 (DEVICE DEPENDENT)
ICBS1B7  EQU   X'01' --- BIT 7 (DEVICE DEPENDENT)
ICBECBPT DS    0A ------ ADDRESS OF ECB TO BE POSTED ON I/O COMPLETION
ICBECBCC DS    CL1 ---- COMPLETION CODE FOR THIS I/O REQUEST
ICBECBPB DS    AL3 ----- ADDRESS OF ECB TO BE POSTED ON I/O COMPLETION
ICBFLAG3 DS    B ------- ERROR ROUTINE FLAG BYTE
ICBCSW   DS    CL7 ----- LOW ORDER 7 BYTES OF CSW AT CHANNEL END
ICBSTART DS    0A ------ ADDRESS OF CHANNEL PROGRAM
ICBSIOCC DS    B ------- BITS 2 AND 3 = C.C. FROM SIO
ICBSTRTB DS    AL3 ----- ADDRESS OF CHANNEL PROGRAM
*
***********************************************************************
*        EQUIVALENCE WITH IOB IS LOST AT THIS POINT, SINCE THE
*        TWO IOB WORDS IOBDCBPT AND IOBRESTR ARE NOT IN THE ICB
***********************************************************************
*
ICBINCAM DS    0H ------ VALUE USED TO INCREMENT BLOCK COUNT ON TAPE
ICBCRDCC DS    CL1 ----- OPTICAL READER: DATA CHECK ERROR COUNT
ICBCRILC DS    CL1 ----- OPTICAL READER: INCORRECT LENGTH ERROR COUNT
         SPACE 2
ICBINDIC DS    BL1 ----- SPECIAL CONDITION INDICATORS
ICBVOLFL EQU   X'80' --- END OF VOLUME WITH READ/WRITE ERROR
ICBRSV07 DS    BL1 ----- RESERVED
         SPACE 3
***********************************************************************
*                                                                     *
*                   EXTENSION SECTIONS OF THE ICB                     *
*                                                                     *
***********************************************************************
         SPACE 1
ICBEXTEN DS    0D
         SPACE 1
*                            ******************************************
*                            *                                        *
*                            *  DIRECT ACCESS EXTENSION *** 8 BYTES   *
*                            *                                        *
*                            ******************************************
         SPACE 1
ICBSEEK  DS    0CL8 ----
ICBM     DS    CL1 ----- RELATIVE EXTENT NUMBER FOR THIS REQUEST(0-15)
ICBBB    DS    0CL2 ---- BIN NUMBER(DATA CELL)
ICBBB1   DS    CL1
ICBBB2   DS    CL1
ICBCC    DS    0CL2 ---- CYLINDER NUMBER
ICBCC1   DS    CL1
ICBCC2   DS    CL1
ICBHH    DS    0CL2 ---- TRACK NUMBER
ICBHH1   DS    CL1
ICBHH2   DS    CL1
ICBR     DS    CL1 ----- RECORD NUMBER
ICBDACCW DS    0D ------ CHANNEL PROGRAM SEGMENT START
         MEND
**/;
*
* DECLARE
*   1 ICB BASED(ICBPTR),
*
* /* *************************************************************** */
* /*                                                                 */
* /*           ICB SECTION 1 -- EQUIVALENT TO                        */
* /*           IOB NORMAL PREFIX                                     */
* /*                                                                 */
* /* *************************************************************** */
*
*    2 ICBNICBA PTR(31),             /* ADDR.NEXT ICB ON CHAIN       */
*     3 ICBNFLG1 BIT(8),             /* FLAG BYTE                    */
*      4 ICBPRTOV BIT(1),            /* 'PRTOV' HAS OCCURRED         */
*      4 ICBWRITE BIT(1),            /* 'WRITE' OPERATION IN PROCESS */
*      4 ICBREAD  BIT(1),            /* 'READ' OPERATION IN PROCESS  */
*      4 ICBUPDAT BIT(1),            /* BLOCK IS TO BE UPDATED       */
*      4 ICBBKSPC BIT(1),            /* ICB BEING USED FOR
*                                       BACKSPACE,CONTROL,NOTE/PT.   */
*      4 ICBSPAN  BIT(1),            /* THIS RECORD IS A SPANNED
*                                       RECORD                       */
*      4 ICBRSV06 BIT(1),            /* RESERVED                     */
*      4 ICBFIRST BIT(1),            /* THIS IS FIRST ICB ON CHAIN   */
*
*     3 ICBNICBB PTR(24),            /* ADDR.NEXT ICB ON CHAIN       */
*
*    2 ICBNECB  FIXED(31),           /* EVENT CONTROL BLOCK          */
*
* /* *************************************************************** */
* /*                                                                 */
* /*           ICB SECTION 2 -- EQUIVALENT TO                        */
* /*           FIRST PART OF IOB STANDARD SECTION                    */
* /*                                                                 */
* /* *************************************************************** */
*
*    2 ICBFLAG1 BIT(8),              /* FLAG BYTE                    */
*     3 ICBDATCH BIT(1),             /* DATA CHAINING USED IN
*                                       CHANNEL PROGRAM              */
*     3 ICBCMDCH BIT(1),             /* COMMAND CHAINING USED IN
*                                       CHANNEL PROGRAM              */
*     3 ICBERRTN BIT(1),             /* ERROR ROUTINE IS IN CONTROL  */
*     3 ICBRPSTN BIT(1),             /* DEVICE IS TO BE REPOSITIONED */
*     3 ICBCYCCK BIT(1),             /* CYCLIC REDUNDANCY CHECK
*                                       NEEDED(TAPE ONLY)            */
*      4 ICBFCREX BIT(1),            /* FETCH COMMAND RETRY EXIT
*                                       (DIRECT ACCESS ONLY)         */
*     3 ICBIOERR BIT(1),             /* I/O ERROR HAS OCCURRED       */
*     3 ICBUNREL BIT(1),             /* THIS I/O REQUEST IS
*                                       UNRELATED(NON-SEQUENTIAL)    */
*     3 ICBRSTRT BIT(1),             /* RESTART ADDR.IN ICB TO BE
*                                       USED                         */
*    2 ICBFLAG2 BIT(8),              /* FLAG BYTE                    */
*     3 ICBHALT  BIT(1),             /* HALT I/O HAS BEEN ISSUED BY
*                                       SVC PURGE ROUTINE            */
*     3 ICBSENSE BIT(1),             /* ISSUE SENSE COMMAND AFTER
*                                       DEVICE END OCCURS            */
*     3 ICBPURGE BIT(1),             /* ICB HAS BEEN PURGED *ALLOW
*                                       I/O TO QUIESCE               */
*     3 ICBRDHA0 BIT(1),             /* HOME ADDRESS TO BE READ * NO
*                                       SEEK NEEDED                  */
*     3 ICBALTTR BIT(1),             /* NO TEST FOR OUT-OF-EXTENT *
*                                       AN ALTERNATE TRACKIS IN USE  */
*     3 ICBSKUPD BIT(1),             /* SEEK ADDRESS IS BEING
*                                       UPDATED -CYLINDER END OR
*                                       FILE MASK VIOLATION HAS
*                                       OCCURRED                     */
*     3 ICBSTATO BIT(1),             /* DEVICE END STATUS HAS BEEN
*                                       ORED WITH CHANNEL END STATUS
*                                       - GRAPHICS DEVICE            */
*     3 ICBPNCH  BIT(1),             /* TURNED ON BY QSAM WHEN ERROR
*                                       RECOVERY IS TO BE PROVIDED
*                                       FOR THE 2540 CARD PUNCH      */
*    2 ICBSENS0 CHAR(1),             /* FIRST SENSE BYTE             */
*     3 ICBS0B0  BIT(1),             /* BIT 0 (DEVICE DEPENDENT)     */
*     3 ICBS0B1  BIT(1),             /* BIT 1 (DEVICE DEPENDENT)     */
*     3 ICBS0B2  BIT(1),             /* BIT 2 (DEVICE DEPENDENT)     */
*     3 ICBS0B3  BIT(1),             /* BIT 3 (DEVICE DEPENDENT)     */
*     3 ICBS0B4  BIT(1),             /* BIT 4 (DEVICE DEPENDENT)     */
*     3 ICBS0B5  BIT(1),             /* BIT 5 (DEVICE DEPENDENT)     */
*     3 ICBS0B6  BIT(1),             /* BIT 6 (DEVICE DEPENDENT)     */
*     3 ICBS0B7  BIT(1),             /* BIT 7 (DEVICE DEPENDENT)     */
*      4 ICBSNSC9 BIT(1),            /* CHANNEL 9 SENSED IN
*                                       CARRIAGE TAPE                */
*    2 ICBSENS1 CHAR(1),             /* SECOND SENSE BYTE            */
*     3 ICBS1B0  BIT(1),             /* BIT 0 (DEVICE DEPENDENT)     */
*     3 ICBS1B1  BIT(1),             /* BIT 1 (DEVICE DEPENDENT)     */
*     3 ICBS1B2  BIT(1),             /* BIT 2 (DEVICE DEPENDENT)     */
*     3 ICBS1B3  BIT(1),             /* BIT 3 (DEVICE DEPENDENT)     */
*     3 ICBS1B4  BIT(1),             /* BIT 4 (DEVICE DEPENDENT)     */
*     3 ICBS1B5  BIT(1),             /* BIT 5 (DEVICE DEPENDENT)     */
*     3 ICBS1B6  BIT(1),             /* BIT 6 (DEVICE DEPENDENT)     */
*     3 ICBS1B7  BIT(1),             /* BIT 7 (DEVICE DEPENDENT)     */
*
*    2 ICBECBPT PTR(31),             /* ADDRESS OF ECB TO BE POSTED
*                                       ON I/O COMPLETION            */
*     3 ICBECBCC CHAR(1),            /* COMPLETION CODE FOR THIS I/O
*                                       REQUEST                      */
*     3 ICBECBPB PTR(24),            /* ADDRESS OF ECB TO BE POSTED
*                                       ON I/O COMPLETION            */
*    2 ICBFLAG3 CHAR(1),             /* ERROR ROUTINE FLAG BYTE      */
*    2 ICBCSW   CHAR(7),             /* LOW ORDER 7 BYTES OF CSW AT
*                                       CHANNEL END                  */
*    2 ICBSTART PTR(31),             /* ADDRESS OF CHANNEL PROGRAM   */
*     3 ICBSIOCC CHAR(1),            /* BITS 2 AND 3 = C.C. FROM SIO */
*     3 ICBSTRTB PTR(24),            /* ADDRESS OF CHANNEL PROGRAM   */
*
* /* *************************************************************** */
* /*     EQUIVALENCE WITH THE IOB IS LOST AT THIS POINT, SINCE THE   */
* /*     TWO IOB WORDS IOBDCBPT AND IOBRESTR ARE NOT IN THE ICB      */
* /* *************************************************************** */
*
*    2 ICBINCAM FIXED(15),           /* VALUE USED TO INCREMENT
*                                       BLOCK COUNT ON TAPE          */
*     3 ICBCRDCC FIXED(8),  /* OPTICAL READER:DATA CHECK ERROR COUNT */
*     3 ICBCRILC FIXED(8),  /* OPTICAL RDR:INCORRECT LENGTH ERROR CT.*/
*
*    2 ICBINDIC BIT(8),              /* SPECIAL CONDITION INDICATORS */
*     3 ICBVOLFL BIT(1),             /* EOV WITH READ/WRITE ERROR    */
*    2 ICBRSV07 CHAR(1),             /* RESERVED                     */
*
*
* /* *************************************************************** */
* /*                                                                 */
* /*                EXTENSION SECTIONS OF THE ICB                    */
* /*                                                                 */
* /* *************************************************************** */
*
*    2 ICBEXTEN BDY(DWORD),
*                        /* **************************************** */
*                        /*    DIRECT ACCESS EXTENSION *** 8 BYTES   */
*                        /* **************************************** */
*
*     3 ICBSEEK  CHAR(8),
*      4 ICBM     CHAR(1),           /* RELATIVE EXTENT NUMBER FOR
*                                       THIS REQUEST(0-15)           */
*      4 ICBBB    CHAR(2),           /* BIN NUMBER(DATA CELL)        */
*       5 ICBBB1   CHAR(1),
*       5 ICBBB2   CHAR(1),
*
*      4 ICBCC    CHAR(2),           /* CYLINDER NUMBER              */
*       5 ICBCC1   CHAR(1),
*       5 ICBCC2   CHAR(1),
*
*      4 ICBHH    CHAR(2),           /* TRACK NUMBER                 */
*       5 ICBHH1   CHAR(1),
*       5 ICBHH2   CHAR(1),
*
*      4 ICBR     CHAR(1),           /* RECORD NUMBER                */
*     3 ICBDACCW(*) CHAR(8) BDY(DWORD);
./ ADD NAME=IHAINF
*        %GOTO INFL1;        /*
         MACRO
         IHAINF , */
*%INFL1: ;
*/*      IHAINF - TYPE 1 MESSAGE TABLE ENTRY MAPPING                 */
*/*      RELEASE 2.0 VS2, 5/8/73, LEVEL=1                            */
*/*                                                                  */
*/*      THIS MAPS A SINGLE ENTRY OF THE TYPE 1 MESSAGE TABLE WHICH  */
*/*      IS USED AS A DROP AREA FOR INFORMATION ASSOCIATED WITH A    */
*/*      FAILURE IN A TYPE 1 SVC.  THE INFORMATION IN THE ENTRY IS   */
*/*      PUT OUT VIA WTP BY RTM.  THE ONLY USER OF THIS TABLE        */
*/*      CURRENTLY IS GETMAIN/FREEMAIN.                              */
*/*                                                                  */
*/*      THE COMPLETE TABLE CONSISTS OF A FOUR BYTE POINTER FOLLOWED */
*/*      BY A NUMBER OF ENTRIES.  THE POINTER POINTS TO THE BYTE     */
*/*      FOLLOWING THE END OF THE COMPLETE TABLE.                    */
*/*                                                                  */
*%GOTO INFL2; /*
INFOLIST DSECT , INFPTR -     INFORMATION LIST
INFASCB  DS    A -            ADDRESS ASCB                      @Y02702
INFOBODY DS    0CL32          MAIN BODY OF ENTRY                @Y02702
INFTCB   DS    A -            ADDRESS TCB
INFBADDR DS    A -            REGISTER 14 IF A BRANCH ENTRY
INFRCL   DS    BL1 -          REASON CODE AND COUNT OF VARIABLE DATA.
INFCL    EQU   X'E0' -        REASON CODE ON BITS 0-2.
INFVARCT EQU   X'1F' -        COUNT OF VARIABLE DATA IN BITS 3-7.
INFFLG   DS    BL1 -          FLAG BYTE
INFFLG0  EQU   X'80' -        WHEN 1, INDICATES BRANCH ENTRY
INFCC    DS    0H -           COMPLETION CODE
         DS    C
INFCCSVC DS    C -            SVC NUMBER
INFVAR   DS    4F -           VARIABLE INFORMATION
         ORG   INFVAR         ORG BACK FOR VARIABLE FIELDS
INFVAR1  DS    F -            VARIABLE WORD 1
INFVAR2  DS    F -            VARIABLE WORD 2
INFVAR3  DS    F -            VARIABLE WORD 3
INFVAR4  DS    F -            VARIABLE WORD 4
INFRSV01 DS    H              RESERVED FOR EXPANSION            @Y02702
INFRSV02 DS    H              RESERVED FOR EXPANSION            @Y02702
INFEND   DS    0C -           END OF INFOLIST
INFLEN   EQU   INFEND-INFOLIST - LENGTH OF INFOLIST
         MEND  , */
*%INFL2 :  ;
*DECLARE
*  1 INFOLIST BASED(INFOPTR), /* INFORMATION LIST                    */
*   2 INFASCB PTR(31),        /* ADDRESS ASCB                 @Y02702*/
*   2 INFOBODY,               /* MAIN BODY OF ENTRY           @Y02702*/
*    4 INFTCB PTR(31),        /* ADDRESS TCB                         */
*    4 INFBADDR PTR(31),      /* REGISTER 14 IF BRANCH ENTRY         */
*    4 INFRCL CHAR(1),        /* REASON CODE AND COUNT OF VARIABLE
*                                DATA.                               */
*     8 INFCL BIT(3),         /* REASON CODE                         */
*     8 INFVARCT BIT(5),      /* COUNT OF VARIABLE DATA.             */
*    4 INFFLG CHAR(1),        /* FLAG BYTE                           */
*     8 INFFLG0 BIT(1),       /* WHEN 1, INDICATES BRANCH ENTRY      */
*    4 INFCC FIXED(15),       /* COMPLETION CODE                     */
*     8 * PTR(8),
*     8 INFCCSVC PTR(8),      /* SVC NUMBER                          */
*    4 INFVAR,                /* VARIABLE INFORMATION                */
*     8 INFVAR1 FIXED(31),    /* VARIABLE WORD 1                     */
*     8 INFVAR2 FIXED(31),    /* VARIABLE WORD 2                     */
*     8 INFVAR3 FIXED(31),    /* VARIABLE WORD 3                     */
*     8 INFVAR4 FIXED(31),    /* VARIABLE WORD 4              Y00489 */
*    4 INFRSV01 FIXED(15),    /* RESERVED                     @Y02702*/
*    4 INFRSV02 FIXED(15);    /* RESERVED                     @Y02702*/
*DECLARE INFEND CHAR(0) BASED(ADDR(INFOLIST)+LENGTH(INFOLIST));
./ ADD NAME=IHAIQE
*        %GOTO IQEBSL;                                               /*
         MACRO
         IHAIQE
**             INTERRUPTION QUEUE ELEMENT - I.Q.E.       LEVEL=1
IQESECT  DSECT , IQEPTR
IQELNK   DS    0AL4     .WORD REFERENCE FOR IQELNKA
IQESTAT1 DS    B        .1 BYTE RESERVED
IQELNKA  DS    AL3      .ADDR NEXT IQE
IQEPARAM DS    A        .PARMS TO BE PASSED TO ASYN EXIT RTN
IQEIRB   DS    0AL4     .WORD REFERENCE FOR IQEIRBA
IQEFLAGS DS    B        .FLAG FIELD
IQEPURGE EQU   X'80'    .THIS IQE MUST NOT BE SCHEDULED
IQEIRBA  DS    AL3      .ADDR IRB TO BE SCHEDULED
IQETCB   DS    0AL4     .WORD REFERENCE FOR IQETCBA
IQESTAT2 DS    B        .1 BYTE RESERVED
IQETCBA  DS    AL3      .ADDR TCB ASSOCIATED WITH THIS IQE
**      THE FOLLOWING IS IN BEHALF OF S.M.F.
IQEDCB   DS    A        .ADDR OF DCB
IQEOUTLM DS    A        .ADDR OF OUTPUT LIMIT
IQEEND   DS    0C       .END OF IQE
IQELEN   EQU   IQEEND-IQESECT .LENGTH OF IQE
         MEND  , */
*%IQEBSL  :  ;
*/*            INTERRUPTION QUEUE ELEMENT - I.Q.E.        LEVEL=1    */
*DECLARE
*  1 IQESECT  BASED(IQEPTR),
*   2 IQELNK      PTR(31)  BDY(BYTE),    /* .WORD REFERENCE FOR
*                                           IQELNKA                  */
*    3 IQESTAT1    CHAR(1),              /* .1 BYTE RESERVED         */
*    3 IQELNKA     PTR(24)  BDY(BYTE),   /* .ADDR NEXT IQE           */
*   2 IQEPARAM    PTR(31),               /* .PARMS TO BE PASSED TO
*                                           ASYN EXIT RTN            */
*   2 IQEIRB      PTR(31)  BDY(BYTE),    /* .WORD REFERENCE FOR
*                                           IQEIRBA                  */
*    3 IQEFLAGS    CHAR(1),              /* .FLAG FIELD              */
*     4 IQEPURGE BIT(1),                 /* .THIS IQE MUST NOT BE
*                                           SCHEDULED                */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*    3 IQEIRBA     PTR(24)  BDY(BYTE),   /* .ADDR IRB TO BE
*                                           SCHEDULED                */
*   2 IQETCB      PTR(31)  BDY(BYTE),    /* .WORD REFERENCE FOR
*                                           IQETCBA                  */
*    3 IQESTAT2    CHAR(1),              /* .1 BYTE RESERVED         */
*    3 IQETCBA     PTR(24)  BDY(BYTE),   /* .ADDR TCB ASSOCIATED
*                                           WITH THIS IQE            */
*/*     THE FOLLOWING IS IN BEHALF OF S.M.F.                         */
*   2 IQEDCB      PTR(31),               /* .ADDR OF DCB             */
*   2 IQEOUTLM    PTR(31);               /* .ADDR OF OUTPUT LIMIT    */
*DECLARE 1 IQEEND  (*) CHAR(1)   BASED
*  (ADDR(IQESECT )+LENGTH(IQESECT ));
*                                        /* .END OF IQE              */
./ ADD NAME=IHALCCAT
*
*        %GOTO LCCATL1;  /*
         MACRO
         IHALCCAT &DSECT=YES   */
*%LCCATL1 : ;
*
*/* **************************************************************** */
*/*                                                                  */
*/*            LCCA VECTOR TABLE                                     */
*/*                                                                  */
*/*  OS/VS2 RELEASE 2, 06/28/72, LEVEL=2                             */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
*/*             USING ON LCCAVT GIVES ADDRESSABILITY FOR ALL SYMBOLS.*/
*/*      PL/S - INCLUDE CVT TO DEFINE CVTLCCAT                       */
*/*                                                                  */
*/* **************************************************************** */
*%GOTO LCCATL2;   /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').LCCAT10
LCCAVT   DSECT
         AGO   .LCCAT20
.LCCAT10 ANOP
         DS    0D
LCCAVT   EQU   *
.LCCAT20 ANOP
LCCAT00P DC    A(0) -         ADDRESS OF LCCA FOR CPU 0
LCCAT01P DC    A(0) -         ADDRESS OF LCCA FOR CPU 1
LCCAT02P DC    A(0) -         ADDRESS OF LCCA FOR CPU 2
LCCAT03P DC    A(0) -         ADDRESS OF LCCA FOR CPU 3
LCCAT04P DC    A(0) -         ADDRESS OF LCCA FOR CPU 4
LCCAT05P DC    A(0) -         ADDRESS OF LCCA FOR CPU 5
LCCAT06P DC    A(0) -         ADDRESS OF LCCA FOR CPU 6
LCCAT07P DC    A(0) -         ADDRESS OF LCCA FOR CPU 7
LCCAT08P DC    A(0) -         ADDRESS OF LCCA FOR CPU 8
LCCAT09P DC    A(0) -         ADDRESS OF LCCA FOR CPU 9
LCCAT10P DC    A(0) -         ADDRESS OF LCCA FOR CPU 10
LCCAT11P DC    A(0) -         ADDRESS OF LCCA FOR CPU 11
LCCAT12P DC    A(0) -         ADDRESS OF LCCA FOR CPU 12
LCCAT13P DC    A(0) -         ADDRESS OF LCCA FOR CPU 13
LCCAT14P DC    A(0) -         ADDRESS OF LCCA FOR CPU 14
LCCAT15P DC    A(0) -         ADDRESS OF LCCA FOR CPU 15
         MEND  , -   */
*%LCCATL2 : ;
*
*DECLARE
*  1 LCCAVT   BASED(CVTLCCAT) BDY(DWORD),
*   2 LCCAT00P  (16) PTR(31);            /* ADDRESSES OF LCCA'S FOR
*                                           CPU'S 0-15               */
./ ADD NAME=IHALTE
*        %GOTO PLSLTE;   /*
         MACRO
         IHALTE
**/
*%PLSLTE : ;
*/********************************************************************/
*/*                                                                  */
*/*     LINKAGE TABLE ENTRY (LTE) DESCRIPTION                        */
*/*                                                                  */
*/*  MACRO NAME = IHALTE                                             */
*/*                                                                  */
*/*  MACDATE = 01/04/80                                              */
*/*                                                                  */
*/*  COPYRIGHT =                                                     */
*/*      5740-XYN COPYRIGHT IBM CORP. 1980,                          */
*/*      LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                 */
*/*      REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER                 */
*/*      G120-2083.                                                  */
*/*                                                                  */
*/*  STATUS =                                                        */
*/*      OS/VS2 JBB1226                                              */
*/*                                                                  */
*/*  FUNCTION =                                                      */
*/*      DESCRIBES AN ENTRY IN THE LINKAGE TABLE. EACH ADDRESS       */
*/*      SPACE WILL BE CONNECTED TO A LINKAGE TABLE IN THE PC/AUTH   */
*/*      LSQA.                                                       */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL - A DSECT IS PRODUCED, PERFORM USING ON LTE             */
*/*      PL/S - LTE IS DECLARED AS BASED STRUCTURE, LTEPTR           */
*/*             MUST BE DECLARED                                     */
*/*                                                                  */
*/*  CREATED BY =                                                    */
*/*      THE SYSTEM LINKAGE TABLE IS CREATED BY IEAVXMAS DURING      */
*/*      INITIALIZATION OF THE PC/AUTH ADDRESS SPACE. THE ENTRY      */
*/*      TABLE CONNECT SERVICE CREATES LINKAGE TABLES FOR NON-SYSTEM */
*/*      CONNECTIONS. ENTRY CONTENTS ARE CHANGED BY THE ENTRY TABLE  */
*/*      CONNECT AND DISCONNECT SERVICE ROUTINES (IEAVXECO/IEAVXEDI).*/
*/*                                                                  */
*/*  DELETED BY =                                                    */
*/*      THE LINKAGE TABLE FOR A PARTICULAR MEMORY IS FREED ON       */
*/*      TERMINATION OF THE MEMORY IF IT IS NOT THE SYSTEM           */
*/*      LINKAGE TABLE.                                              */
*/*                                                                  */
*/*  POINTED TO BY =                                                 */
*/*      THE LINKAGE TABLE IS POINTED TO BY THE ASCB FIELD           */
*/*      ASCBLTOV (VIRTUAL ADDRESS) AND THE ASTE FIELD ASTELTD (READ */
*/*      ADDRESS). THE ASTELTD FIELD ALSO CONTAINS THE LENGTH OF     */
*/*      THE TABLE.                                                  */
*/*                                                                  */
*/*  SERIALIZATION =                                                 */
*/*      LOCAL LOCK OF THE PC /AUTH SERVICES ADDRESS SPACE.          */
*/*                                                                  */
*/*  CHANGE ACTIVITY = THIS MACRO IS NEW FOR OS/VS2 JBB1226.         */
*/*                                                                  */
*/********************************************************************/
*/*A 000000-999999                                           @G382PXH*/
*        %GOTO PLSLTE1; /*
LTE      DSECT
         DS    0F             LINKAGE TABLE ENTRY DESCRIPTION
LTEETR   DS    0F             REAL ADDRESS OF ENTRY TABLE.
*                                LOW ORDER 6 BITS CONTAIN THE LENGTH
*                                AND MUST BE ZEROED TO USE THIS AS AN
*                                ENTRY TABLE ADDRESS
LTEIBYTE DS    B              BYTE NAME CONTAINING INVALID FLAG
LTEINV   EQU   X'80'          INVALID ENTRY FLAG
         DS    CL2
LTEETLEN DS    B              THE NUMBER IN THE LAST SIX BITS PLUS
*                             ONE, MULTIPLIED BY FOUR GIVES THE NUMBER
*                             OF ENTRIES IN THE TABLE.
         MEND  , */
*%PLSLTE1: ;
* DCL  1 LTE BASED(LTEPTR) BDY(WORD), /* LINKAGE TABLE ENTRY
*                                     DESCRIPTION                    */
*        3 LTEETR   FIXED(32),     /* REAL ADDRESS OF ENTRY
*                                     TABLE. LENGTH IN LOW ORDER 6
*                                     BITS MUST BE ZEROED TO USE THIS
*                                     AS AN ENTRY TABLE ADDRESS      */
*          5 LTEIBYTE BIT(8),      /* FLAG CONTAINS INVALID FLAG     */
*            7 LTEINV BIT(1),      /* INVALID ENTRY FLAG             */
*          5 *      CHAR(2),       /* PART OF ET ADDRESS - NOT
*                                     REFERENCABLE ALONE             */
*          5 LTEETLEN  BIT(8);     /* THE NUMBER IN THE LAST SIX BITS
*                                     PLUS ONE MULTIPLIED BY FOUR
*                                     GIVES THE NUMBER OF ENTRIES IN
*                                     THE TABLE                      */
./ ADD NAME=IHAMB
*        %GOTO MBBSL;                  /* BILIGUAL MAPPING
         MACRO
         IHAMB
MB       DSECT
MBPARM   DS    F                       WTP PARAMETERS
MBID     DS    7C                      MESSAGE ID
         ORG   MBID
         DS    5C
MBIDSVC  DS    C                       CHNG MSG ID TO SVC NUMBER
         DS    C
         DS    C                       BLANK
MBCC     DS    3C                      COMPLETION CODE
MBDASH   DS    C                       A DASH IF A REASON CODE EXISTS
*                                      OTHERWISE BLANK
MBRC     DS    C                       REASON CODE OR BLANK
         DS    C                       BLANK
MBJOB    DS    8C                      JOB NAME
         DS    C                       BLANK
MBSTEP   DS    8C                      STEP NAME
         DS    C                       BLANK
MBFLG    DS    2C                      FLAG FIELD
         DS    C                       BLANK
MBVAR    DS    35C                     VARIABLE DATA
         ORG   MBVAR
MBVAR1   DS    8C                      VARIABLE WORD 1
         DS    C                       BLANK
MBVAR2   DS    8C                      VARIABLE WORD 2
         DS    C                       BLANK
MBVAR3   DS    8C                      VARIABLE WORD 3
         DS    C                       BLANK
MBVAR4   DS    8C                      VARIABLE WORD 4
MBEND    EQU   *
MBLENGTH EQU   MBEND-MBPARM            LENGTH OF FULL MESSAGE
         MEND  ,  */
*%MBBSL : ;
*        DCL 1 MB BASED(MBPTR),
*              2 MBPARM CHAR(4),       /* WTP PARAMETERS             */
*              2 MBID CHAR(7),         /* MESSAGE ID                 */
*                3 * CHAR(5),
*                3 MBIDSVC CHAR(1),    /* CHNGE MSG ID TO SVC NUMBER */
*                3 * CHAR(1),
*              2 * CHAR(1),            /* BLANK                      */
*              2 MBCC CHAR(3),         /* COMPLETION CODE            */
*              2 MBDASH CHAR(3),       /* DASH IF REASON CODE EXISTS
*                                         OTHERWISE BLANK            */
*              2 MBRC CHAR(1),         /* REASON CODE OR BLANK       */
*              2 * CHAR(1),            /* BLANK                      */
*              2 MBJOB CHAR(8),        /* JOB NAME                   */
*              2 * CHAR(1),            /* BLANK                      */
*              2 MBSTEP CHAR(8),       /* STEP NAME                  */
*              2 * CHAR(1),            /* BLANK                      */
*              2 MBFLG CHAR(2),        /* FLAG FIELD                 */
*              2 * CHAR(1),            /* BLANK                      */
*              2 MBVAR CHAR(35),       /* VARIABLE FIELDS            */
*                3 MBVAR1 CHAR(8),     /* VARIABLE FIELD 1           */
*                3 * CHAR(1),          /* BLANK                      */
*                3 MBVAR2 CHAR(8),     /* VARIABLE FIELD 2           */
*                3 * CHAR(1),          /* BLANK                      */
*                3 MBVAR3 CHAR(8),     /* VARIABLE FIELD 3           */
*                3 * CHAR(1),          /* BLANK                      */
*                3 MBVAR4 CHAR(8);     /* VARIABLE FIELD 4           */
*
*/*                                                                  */
*%MBLENGTH='LENGTH(MB)';
*
*/*                                                                  */
./ ADD NAME=IHAMSF
*%GOTO  MSF0;           /*  BILINGUAL MAPPING
         MACRO
&MSFNAME IHAMSF &MSFCBI=NO,&MSFABI=NO,&MSFBLK=NO,&MSFDLNG=2040,        *
               &MSFCW=NO,&MSFPARM=NO,&DSECT=NO,&MSFSCP=NO */
*%MSF0: ;
*%GOTO MSF1;   /*
.MSF1A  ANOP
          AIF ('&MSFBLK' NE 'YES').MSF2A
          AIF ('&DSECT' EQ 'NO').MSF1B
MSFDBLK  DSECT
*
          AGO .MSF1C
.MSF1B  ANOP
         DS    0D .
MSFDBLK  DS    CL(8+&MSFDLNG) .
         ORG   MSFDBLK
.MSF1C  ANOP
*******************************************************************
*                                                                 *
*      MAINTENANCE AND SERVICE SUPPORT FACILITY DATA BLOCK        *
*                          (MSFDBLK)                              *
*                                                                 *
*    COPYRIGHT =                                                  *
*                                                                 *
*            5740-XYN COPYRIGHT IBM CORP 1980
*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*                                                                 *
*    STATUS                                                       *
*        OS/VS2 JBB1326                                           *
*                                                                 *
*    METHOD OF ACCESS                                             *
*        IHAMSF MSFBLK=YES,DSECT=YES (OR THE DEFAULT OF DSECT=NO) *
*        USING MSFDBLK,REGA                                       *
*        LOAD REGA,(USER'S STORAGE ADDRESS)                       *
*                                                                 *
*    DEVELOPERS                                                   *
*        SPECIFY 'MSFBLK=YES' IF MSFDBLK IS DESIRED. THE DEFAULT  *
*        IS 'MSFBLK=NO'                                           *
*        THE KEYWORD 'DSECT=YES' WILL RESULT IN THE MAPPING BEING *
*        GENERATED AS A DSECT. 'DSECT=NO' (THE DEFAULT) WILL      *
*        RESULT IN THE MAPPING BEING GENERATED WITHOUT A DSECT    *
*        CARD OR CSECT CARD AND THUS WILL BECOME PART OF THE      *
*        CSECT (OR DSECT) WHERE IT IS PHYSICALLY INSERTED.        *
*        SPECIFY 'MSFDLNG=(SOME DECIMAL NUMBER)' TO GIVE THE SIZE *
*        OF THE DATA PORTION OF THE MSSF BUFFER. THE DEFAULT SIZE *
*        IS '2040'.                                               *
*                                                                 *
*    F.E.'S                                                       *
*        MICROFICHE LISTINGS - IHAMSF                             *
*                                                                 *
*******************************************************************
* A-000000-999999                                          @G875P2L
*
MSFDBLNG DS    H .           LENGTH OF THE DATA BLOCK
*                              (MAX ALLOWED LENGTH IS 2048)
MSFCDFLG DS    CL1 .         CALLER FLAGS - COMMAND DEPENDENT
*                                                          @ZM50219
MSFHWFLG DS    CL1 .         HARDWARE FLAGS - COMMAND DEPENDENT
*                                                          @ZM49832
MSFDBRV1 DS    CL2 .         RESERVED - SHOULD BE SET ZEROES
*                                                          @ZM49832
MSFDBRSP DS    H .           MSSF COMPLETION RESPONSE
         ORG   MSFDBRSP
MSFREASN DS    XL1 .         REASON CODE ASSOCIATED WITH
*                              THE RESPONSE CODE
MSFRESPN DS    XL1 .         RESPONSE CODE
MSFDATA  DS    CL&MSFDLNG . VARIABLE LENGTH COMMAND
*                               DEPENDENT DATA.
.MSF2A  ANOP
          AIF ('&MSFCW' NE 'YES').MSF3A
          AIF ('&DSECT' EQ 'NO').MSF2B
MSFCMDWD DSECT
*
         AGO   .MSF2C
.MSF2B  ANOP
         DS    0F .
MSFCMDWD DS    CL4 .
         ORG   MSFCMDWD
.MSF2C  ANOP
*******************************************************************
*                                                                 *
*    MAINTENANCE AND SERVICE SUPPORT FACILITY COMMAND WORD        *
*                        (MSFCMDWD)                               *
*                                                                 *
*    COPYRIGHT =                                                  *
*                                                                 *
*            5740-XYN COPYRIGHT IBM CORP 1980
*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*                                                                 *
*    STATUS                                                       *
*        OS/VS2 JBB1326                                           *
*                                                                 *
*    METHOD OF ACCESS                                             *
*        IHAMSF MSFCW=YES,DSECT=YES (OR THE DEFAULT OF DSECT=NO)  *
*        USING MSFCMDWD,REGA                                      *
*        LOAD REGA,(USER'S STORAGE ADDRESS)                       *
*                                                                 *
*    DEVELOPERS                                                   *
*        SPECIFY 'MSFCW=YES' IF MSFCMDWD IS DESIRED. THE DEFAULT  *
*        IS 'MSFCW=NO'                                           *
*        THE KEYWORD 'DSECT=YES' WILL RESULT IN THE MAPPING BEING *
*        GENERATED AS A DSECT. 'DSECT=NO' (THE DEFAULT) WILL      *
*        RESULT IN THE MAPPING BEING GENERATED WITHOUT A DSECT    *
*        CARD OR CSECT CARD AND THUS WILL BECOME PART OF THE      *
*        CSECT (OR DSECT) WHERE IT IS PHYSICALLY INSERTED.        *
*                                                                 *
*    F.E.'S                                                       *
*        MICROFICHE LISTINGS - IHAMSF                             *
*                                                                 *
*******************************************************************
* A-000000-999999                                          @G875P2L
*
MSFCMD   DS     CL2 .        MSSF COMMAND CODE
MSFCMDDP DS     CL1 .        COMMAND DEPENDENT INFO FOR MSSF
MSFCMDID DS     CL1 .        ASSIGNED ID FOR THIS COMMAND
.MSF3A  ANOP
          AIF ('&MSFPARM' NE 'YES').MSF4A
          AIF ('&DSECT' EQ 'NO').MSF3B
MSFSVCPL DSECT
*
         AGO   .MSF3C
.MSF3B  ANOP
         DS    0F .
MSFSVCPL DS    CL8 .
         ORG   MSFSVCPL
.MSF3C  ANOP
*******************************************************************
*                                                                 *
*    MAINTENANCE AND SERVICE SUPPORT FACILITY SVC PARAMETER LIST  *
*                         (MSFSVCPL)                              *
*                                                                 *
*    COPYRIGHT =                                                  *
*                                                                 *
*            5740-XYN COPYRIGHT IBM CORP 1980
*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*                                                                 *
*    STATUS
*        OS/VS2 JBB1326                                           *
*                                                                 *
*    METHOD OF ACCESS                                             *
*        IHAMSF MSFPARM=YES,DSECT=YES (OR THE DEFAULT OF DSECT=NO)*
*        USING MSFSVCPL,REGA                                      *
*        LOAD REGA,(USER'S STORAGE ADDRESS)                       *
*                                                                 *
*    DEVELOPERS                                                   *
*        SPECIFY 'MSFPARM=YES' IF MSFCMDWD IS DESIRED. THE DEFAULT*
*        IS 'MSFPARM=NO'                                          *
*        THE KEYWORD 'DSECT=YES' WILL RESULT IN THE MAPPING BEING *
*        GENERATED AS A DSECT. 'DSECT=NO' (THE DEFAULT) WILL      *
*        RESULT IN THE MAPPING BEING GENERATED WITHOUT A DSECT    *
*        CARD OR CSECT CARD AND THUS WILL BECOME PART OF THE      *
*        CSECT (OR DSECT) WHERE IT IS PHYSICALLY INSERTED.        *
*                                                                 *
*    F.E.'S                                                       *
*        MICROFICHE LISTINGS - IHAMSF                             *
*                                                                 *
*******************************************************************
* A-000000-999999                                          @G875P2L
*
MSFSVCDA DS    F .           ADDR OF THE USER'S MSSF DATA BLOCK
MSFSVCCA DS    F .           ADDR OF WORD CONTAINING THE MSSF
*                            COMMAND WORD
.MSF4A  ANOP
          AIF ('&MSFCBI' NE 'YES').MSF5A
MSFCB    DSECT
*
*******************************************************************
*                                                                 *
*     MAINTENANCE AND SERVICE SUPPORT FACILITY CONTROL BLOCK      *
*                            (MSFCB)                              *
*                                                                 *
*    COPYRIGHT =                                                  *
*                                                                 *
*            5740-XYN COPYRIGHT IBM CORP 1980
*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*                                                                 *
*    STATUS                                                       *
*        OS/VS2 JBB1326                                           *
*                                                                 *
*    METHOD OF ACCESS                                             *
*        IHAMSF MSFCBI=YES                                        *
*        USING MSFCB,REGA                                         *
*        LOAD REGA,CVTMSFCB                                       *
*                                                                 *
*    DEVELOPERS                                                   *
*        SPECIFY 'MSFCBI=YES' IF MSFCB IS DESIRED. THE DEFAULT IS *
*        'MSFCB=NO'                                               *
*        THE KEYWORD 'DSECT' DOES NOT APPLY. A DSECT WILL ALWAYS  *
*        GENERATED.                                               *
*                                                                 *
*    F.E.'S                                                       *
*        MICROFICHE LISTINGS - IHAMSF                             *
*                                                                 *
*******************************************************************
* A-000000-999999                                          @G875P2L
*
         DS    0D .
MSFCBID  DS    C'MSFCB'      MSFCB BLOCK IDENTIFIER
MSFCRES1 DS    X'000000'     RESERVED
MSFCFLGS DS    XL2           FLAGS
         ORG   MSFCFLGS
MSFCFLG1 DS    X'0'          FLAG BYTE 1
* EQUATES FOR MSFCFLG1
MSFCUSE  EQU   X'80'         MSFCB IS IN USE
MSFCINTR EQU   X'40'         WAITING FOR MSSF INTERRUPTION
MSFCTERM EQU   X'20'         REQUESTOR BEING TERMINATED
*        EQU   X'10'         RESERVED                          @ZMH0028
MSFCSCHE EQU   X'08'         MSFCB'S SRB SCHEDULED
MSFCPOST EQU   X'04'         SRB POSTING ECB IN MSFCB
*        EQU   X'02'         RESERVED
*        EQU   X'01'         RESERVED
MSFCFLG2 DS    X'0'          FLAG BYTE 2
* EQUATES FOR MSFCFLG2
MSFCSPIN EQU   X'80'         BRANCH ENTRY SPIN BIT
*        EQU   X'40'         RESERVED
*        EQU   X'20'         RESERVED
*        EQU   X'10'         RESERVED
*        EQU   X'08'         RESERVED
*        EQU   X'04'         RESERVED
*        EQU   X'02'         RESERVED
*        EQU   X'01'         RESERVED
MSFCASID DS    H .           REQUESTOR'S ASID
MSFCATCB DS    F .           REQUESTOR'S TCB ADDRESS
MSFCBCMD DS    XL4 .         MSFCB'S MSSF COMMAND WORD         @ZM50219
MSFCBFHD DS    XL8 .         MSFCB'S MSSF BUFFER HEADER FOR RECORDING
MSFCECB  DS    XL4 .         ECB TO WAIT/POST REQUESTOR
MSFCSRB  DS    XL44 .        SRB FOR POSTING REQUESTOR'S TCB
MSFCADB  DS    F .           VIRTUAL ADDR OF MSFCB'S MSSF DATA BLOCK
MSFCADBR DS    F .           REAL ADDR OF MSFCB'S MSSF DATA BLOCK
MSFCRES2 DS    F .           RESERVED
MSFCMSFA DS    F .           ADDR OF THE MSFAB
MSFCEP1  DS    F .           BRANCH ENTRY POINT TO SVC
*
.MSF5A  ANOP
          AIF ('&MSFABI' NE 'YES').MSF6A
MSFAB    DSECT
*
*******************************************************************
*                                                                 *
*    MAINTENANCE AND SERVICE SUPPORT FACILITY ATTENTION BLOCK     *
*                         (MSFAB)                                 *
*                                                                 *
*    COPYRIGHT =                                                  *
*                                                                 *
*            5740-XYN COPYRIGHT IBM CORP 1980
*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*                                                                 *
*    STATUS                                                       *
*        OS/VS2 JBB1326                                           *
*                                                                 *
*    METHOD OF ACCESS                                             *
*        IHAMSF MSFABI=YES                                        *
*        USING MSFAB,REGB                                         *
*        LOAD REGA,CVTMSFCB                                       *
*        LOAD REGB,MSFCMSFA(0,REGA)                               *
*                                                                 *
*    DEVELOPERS                                                   *
*        SPECIFY 'MSFABI=YES' IF MSFAB IS DESIRED. THE DEFAULT IS *
*        'MSFAB=NO'                                               *
*        THE KEYWORD 'DSECT' DOES NOT APPLY. A DSECT WILL ALWAYS  *
*        GENERATED.                                               *
*                                                                 *
*    F.E.'S                                                       *
*        MICROFICHE LISTINGS - IHAMSF                             *
*                                                                 *
*******************************************************************
* A-000000-999999                                          @G875P2L
*
         DS    0D .
MSFABID  DS    C'MSFAB'      MSFAB BLOCK IDENTIFIER
MSFARES1 DS    X'000000'     RESERVED
MSFAFLGS DS    XL2           FLAGS
         ORG   MSFAFLGS
MSFAFLG1 DS    X'0'          FLAG BYTE 1
* EQUATES FOR MSFAFL1
MSFAUSE  EQU   X'80'         MSFAB IS IN USE
MSFAINTR EQU   X'40'         WAITING FOR MSSF INTERRUPTION
MSFATERM EQU   X'20'         REQUESTOR BEING TERMINATED
*        EQU   X'10'         RESERVED                          @ZMH0028
MSFASCHE EQU   X'08'         MSFAB'S SRB SCHEDULED
MSFAPOST EQU   X'04'         SRB POSTING ECB IN MSFAB
*        EQU   X'02'         RESERVED
*        EQU   X'01'         RESERVED
MSFAFLG2 DS    X'0'          FLAG BYTE 2
* EQUATES FOR MSFAFLG2
*        EQU   X'80'         RESERVED
MSFADISC EQU   X'40'         DISCONNECT IN PROGRESS
*        EQU   X'20'         RESERVED
*        EQU   X'10'         RESERVED
*        EQU   X'08'         RESERVED
*        EQU   X'04'         RESERVED
*        EQU   X'02'         RESERVED
*        EQU   X'01'         RESERVED
MSFAASID DS    H .           REQUESTOR'S ASID
MSFAATCB DS    F .           REQUESTOR'S TCB ADDRESS
MSFABCMD DS    XL4 .         MSFAB'S MSSF COMMAND WORD         @ZM50219
MSFABFHD DS    XL8 .         MSFAB'S MSSF BUFFER HEADER FOR RECORDING
MSFAECB  DS    XL4 .         ECB TO WAIT/POST REQUESTOR
MSFASRB  DS    XL44 .        SRB FOR POSTING REQUESTOR'S TCB
MSFAADB  DS    F .           VIRTUAL ADDR OF MSFAB'S MSSF DATA BLOCK
MSFAADBR DS    F .           REAL ADDR OF MSFAB'S MSSF DATA BLOCK
MSFATPAS DS    F .           TP REQUESTOR'S ASID
MSFADSDB DS    F .           VIRTUAL ADDR OF DISCONNECT MSSF DATA BLK
MSFADSDR DS    F .           REAL ADDR OF DISCONNECT MSSF DATA BLOCK
*
.MSF6A  ANOP
          AIF ('&MSFSCP' NE 'YES').MSF7A
SCPINFO  DSECT
*******************************************************************
*                                                                 *
*    MAINTENANCE AND SERVICE SUPPORT FACILITY SCP INFORMATION     *
*                           (SCPINFO)                             *
*                                                                 *
*    COPYRIGHT =                                                  *
*                                                                 *
*            5740-XYN COPYRIGHT IBM CORP 1980
*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*                                                                 *
*    STATUS                                                       *
*        OS/VS2 JBB1326                                           *
*                                                                 *
*    METHOD OF ACCESS                                             *
*        IHAMSF MSFSCP=YES                                        *
*        USING SCPINFO,REGA                                       *
*        LOAD REGA,(ANY ADDRESS)                                  *
*                                                                 *
*    DEVELOPERS                                                   *
*        SPECIFY 'MSFSCP=YES' IF SCPINFO IS DESIRED. THE DEFAULT  *
*        IS 'MSFSCP=NO'                                           *
*        THE KEYWORD 'DSECT' DOES NOT APPLY. A DSECT WILL ALWAYS  *
*        GENERATED.                                               *
*                                                                 *
*    F.E.'S                                                       *
*        MICROFICHE LISTINGS - IHAMSF                             *
*                                                                 *
*******************************************************************
* A-000000-999999                                          @G875P2L
*
         DS    0F .          FIXED PORTION OF SCPINFO INFORMATION
SCPHEAD  DS    CL8 .         HEADER INFORMATION
         ORG   SCPHEAD
SCPLNG   DS    H .           LENGTH OF FIXED AND VARIABLE PORTIONS
SCPRESV1 DS    CL6 .         PERMANENTLY RESERVED FIELD
SCPSAR   DS    XL1 .         STORAGE ADDRESS RANGE
SCPSAI   DS    XL1 .         STORAGE ADDRESS INCREMENT
SCPSBS   DS    XL1 .         STORAGE BLOCK SIZE
SCPSII   DS    XL1 .         STORAGE INTERLEAVE INTERVAL
         DS    F .           PERMANENTLY RESERVED FIELD
SCPNCPS  DS    H .           NUMBER OF CP'S INSTALLED
SCPOCP   DS    H .           OFFSET TO CP DATA
SCPNHSAS DS    H .           NUMBER OF HSA'S ALLOCATED
SCPOHSA  DS    H .           OFFSET TO HSA DATA
SCPPARM  DS    CL8 .         PARAMETER INFORMATION FROM MSSF
         ORG   SCPPARM
SCPNUCID DS    C .           ALTERNATE NUCLEUS ID
         DS    CL7 .         PERMANENTLY RESERVED FIELD
SCPDATAS DS    0XL1 .        VARIABLE DATA STARTS HERE
*
SCPCP    DSECT
*                            VARIABLE CP SCPINFO INFORMATION
SCPCPA   DS    XL1 .         CP ADDRESS
         DS    XL1 .         PERMANENTLY RESERVED FIELD
*
SCPHSA   DSECT
*                            VARIABLE HSA SCPINFO INFORMATION
SCPHSASZ DS    XL2 .         SIZE OF THIS HSA             @ZM50070
SCPAHSA  DS    XL4 .         ADDRESS OF THIS HSA          @ZM50070
.MSF7A  ANOP
         MEND
        EJECT
          */
 %MSF1:  ;
 %MSF2:   ;
 %IF MSFCBI^='YES' %THEN
          %GOTO MSF3;
 %MSF2A: ;
*/********************************************************************/
*/*                                                                  */
*/*      MAINTENANCE AND SERVICE SUPPORT FACILITY CONTROL BLOCK      */
*/*                            (MSFCB)                               */
*/*                                                                  */
*/*    COPYRIGHT =                                                   */
*/*          5740-XYN COPYRIGHT IBM CORP 1980                        */
*/*          LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*                                                                  */
*/*    STATUS                                                        */
*/*        OS/VS2 JBB1326                                            */
*/*                                                                  */
*/*    METHOD OF ACCESS                                              */
*/*        DCL MSFCBPTR PTR                                          */
*/*        MSFCBPTR = CVTMSFCB                                       */
*/*                                                                  */
*/*    DEVELOPERS                                                    */
*/*        SPECIFY '%MSFCBI=YES' BEFORE INCLUDE FOR IHAMSF. THE      */
*/*        ASSUMED DEFAULT IS '%MSFCBI=NO'.                          */
*/*        THE MSFCB IS ALWAYS DECLARED AS BASED ON MSFCBPTR.        */
*/*                                                                  */
*/*    F.E.'S                                                        */
*/*        MICROFICHE LISTINGS - IHAMSF                              */
*/*                                                                  */
*/* A-000000-999999                                          @G875P2L*/
*/********************************************************************/
     DCL 1 MSFCB BASED (MSFCBPTR) BDY (DWORD),
           2 MSFCBID  CHAR(5),     /* MSFCB BLOCK IDENTIFIER         */
           2 MSFCRES1 CHAR(3),     /* RESERVED                       */
           2 MSFCFLGS BIT(16) BDY(DWORD), /* FLAGS                   */
             4 MSFCFLG1 BIT(8),    /* FLAG BYTE 1                    */
               6 MSFCUSE BIT(1),   /* MSFCB IS IN USE                */
               6 MSFCINTR BIT(1),  /* WAITING FOR MSSF INTERRUPTION  */
               6 MSFCTERM BIT(1),  /* REQUESTOR BEING TERMINATED     */
               6 *        BIT(1),  /* RESERVED               @ZMH0028*/
               6 MSFCSCHE BIT(1),  /* MSFCB'S SRB SCHEDULED          */
               6 MSFCPOST BIT(1),  /* SRB POSTING ECB IN MSFCB       */
               6 *        BIT(2),  /* RESERVED                       */
             4 MSFCFLG2 BIT(8),    /* FLAG BYTE 2                    */
               6 MSFCSPIN BIT(1),  /* BRANCH ENTRY SPIN BIT          */
               6 *        BIT(7),  /* RESERVED                       */
           2 MSFCASID FIXED(15),   /* REQUESTOR'S ASID               */
           2 MSFCATCB PTR(31),     /* REQUESTOR'S TCB ADDRESS        */
           2 MSFCBCMD CHAR(4),     /* MSFCB'S MSSF COMMAND WORD      */
           2 MSFCBFHD CHAR(8),     /* MSFCB'S MSSF BUFFER HEADER
                                      FOR RECORDING                  */
           2 MSFCECB  FIXED(31),   /* ECB TO WAIT/POST REQUESTOR     */
           2 MSFCSRB  CHAR(44),    /* SRB FOR POSTING REQUESTOR'S TCB*/
           2 MSFCADB PTR(31),      /* VIRTUAL ADDR OF MSFCB'S MSSF DATA
                                      BLOCK                          */
           2 MSFCADBR PTR(31),     /* REAL ADDR OF MSFCB'S MSSF DATA
                                      BLOCK                          */
           2 MSFCRES2 FIXED(31),   /* RESERVED                       */
           2 MSFCMSFA PTR(31),     /* ADDR OF THE MSFAB              */
           2 MSFCEP1  PTR(31);     /* BRANCH ENTRY POINT TO SVC      */
 %MSF3:   ;
 %IF MSFABI^='YES' %THEN
          %GOTO MSF4;
 %MSF3A:  ;
*/********************************************************************/
*/*                                                                  */
*/*      MAINTENANCE AND SERVICE SUPPORT FACILITY ATTENTION BLOCK    */
*/*                            (MSFAB)                               */
*/*    COPYRIGHT =                                                   */
*/*          5740-XYN COPYRIGHT IBM CORP 1980                        */
*/*          LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*                                                                  */
*/*    STATUS                                                        */
*/*        OS/VS2 JBB1326                                            */
*/*                                                                  */
*/*    METHOD OF ACCESS                                              */
*/*        DCL MSFABPTR PTR                                          */
*/*        MSFCBPTR = CVTMSFCB                                       */
*/*        MSFABPTR = MSFCMSFA                                       */
*/*                                                                  */
*/*    DEVELOPERS                                                    */
*/*        SPECIFY '%MSFABI=YES' BEFORE INCLUDE FOR IHAMSF. THE      */
*/*        ASSUMED DEFAULT IS '%MSFABI=NO'.                          */
*/*        THE MSFAB IS ALWAYS DECLARED AS BASED ON MSFABPTR.        */
*/*                                                                  */
*/*    F.E.'S                                                        */
*/*        MICROFICHE LISTINGS - IHAMSF                              */
*/*                                                                  */
*/* A-000000-999999                                          @G875P2L*/
*/********************************************************************/
     DCL 1 MSFAB BASED (MSFABPTR) BDY (DWORD),
           2 MSFABID  CHAR(5),     /* MSFAB BLOCK IDENTIFIER         */
           2 MSFARES1 CHAR(3),     /* RESERVED                       */
           2 MSFAFLGS BIT(16) BDY(DWORD), /* FLAGS                   */
             4 MSFAFLG1 BIT(8),    /* FLAG BYTE 1                    */
               6 MSFAUSE  BIT(1),  /* MSFAB IS IN USE                */
               6 MSFAINTR BIT(1),  /* WAITING FOR MSSF INTERRUPTION  */
               6 MSFATERM BIT(1),  /* REQUESTOR BEING TERMINATED     */
               6 *        BIT(1),  /* RESERVED               @ZMH0028*/
               6 MSFASCHE BIT(1),  /* MSFAB'S SRB SCHEDULED          */
               6 MSFAPOST BIT(1),  /* SRB POSTING ECB IN MSFAB       */
               6 *        BIT(1),  /* RESERVED                       */
               6 *        BIT(1),  /* RESERVED                       */
             4 MSFAFLG2 BIT(8),    /* FLAG BYTE 2                    */
               6 *        BIT(1),  /* RESERVED                       */
               6 MSFADISC BIT(1),  /* DISCONNECT IN PROGRESS         */
               6 *        BIT(6),  /* RESERVED                       */
           2 MSFAASID FIXED(15),   /* REQUESTOR'S ASID               */
           2 MSFAATCB PTR(31),     /* REQUESTOR'S TCB ADDRESS        */
           2 MSFABCMD CHAR(4),     /* MSFAB'S MSSF COMMAND WORK      */
           2 MSFABFHD CHAR(8),     /* MSFAB'S MSSF BUFFER HEADER
                                      FOR RECORDING                  */
           2 MSFAECB  FIXED(31),   /* ECB TO WAIT/POST REQUESTOR     */
           2 MSFASRB  CHAR(44),    /* SRB FOR POSTING REQUESTOR'S TCB*/
           2 MSFAADB  PTR(31),     /* VIRTUAL ADDR OF MSFAB'S MSSF DATA
                                      BLOCK                          */
           2 MSFAADBR PTR(31),     /* REAL ADDR OF MSFAB'S MSSF DATA
                                      BLOCK                          */
           2 MSFATPAS FIXED(31),   /* TP REQUESTOR'S ASID            */
           2 MSFADSDB PTR(31),     /* VIRTUAL ADDR OF DISCONNECT MSSF
                                      DATA BLOCK                     */
           2 MSFADSDR PTR(31);     /* REAL ADDR OF DISCONNECT MSSF
                                      DATA BLOCK                     */
 %MSF4:   ;
 %IF MSFBLK^='YES' %THEN
          %GOTO MSF5;
 %MSF4A:  ;
*/********************************************************************/
*/*                                                                  */
*/*      MAINTENANCE AND SERVICE SUPPORT FACILITY DATA BLOCK         */
*/*                           (MSFDBLK)                              */
*/*                                                                  */
*/*    COPYRIGHT =                                                   */
*/*          5740-XYN COPYRIGHT IBM CORP 1980                        */
*/*          LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*    STATUS                                                        */
*/*        OS/VS2 JBB1326                                            */
*/*                                                                  */
*/*    METHOD OF ACCESS                                              */
*/*        DCL ANY POINTER WHEN '%MSFBBASE= ' IS SPECIFIED           */
*/*                                                                  */
*/*    DEVELOPERS                                                    */
*/*        SPECIFY '%MSFBLK=YES' BEFORE INCLUDE FOR IHAMSF. THE      */
*/*        ASSUMED DEFAULT IS '%MSFBLK=NO'.                          */
*/*        SPECIFY '%MSFBBASE=(SOME BASING EXPRESSION)' BEFORE       */
*/*        INCLUDE FOR IHAMSF WHEN THE MAPPING SHOULD BE BASED. THE  */
*/*        DEFAULT IS FOR THE MAPPING TO BE NON-BASED.               */
*/*        SPECIFY '%MSFDLNG=(SOME DECIMAL NUMBER)' TO GIVE THE SIZE */
*/*        OF THE DATA PORTION OF THE MSSF BUFFER. THE DEFAULT SIZE  */
*/*        IS '2040'.                                                */
*/*                                                                  */
*/*    F.E.'S                                                        */
*/*        MICROFICHE LISTINGS - IHAMSF                              */
*/*                                                                  */
*/* A-000000-999999                                          @G875P2L*/
*/********************************************************************/
 %IF MSFDLNG='' %THEN
 %MSFDLNG='2040';
 %IF MSFBBASE='' %THEN %GOTO NOBASE1;
     DCL 1 MSFDBLK MSFBBASE BDY (DWORD),
 %GOTO NOBASE1A;
 %NOBASE1: ;
     DCL 1 MSFDBLK BDY (DWORD),
 %NOBASE1A: ;
           2 MSFDBLNG FIXED(15),   /* LENGTH OF THE DATA BLOCK
                                      (MAX ALLOWED LENGTH IS 2048)   */
           2 MSFCDFLG CHAR(1),     /* CALLER FLAGS - COMMAND DEPEND.
                                                             @ZM49832*/
           2 MSFHWFLG CHAR(1),     /* HARDWARE FLAGS - COMMAND DEP.
                                                             @ZM49832*/
           2 MSFDBRV1 CHAR(2),     /* RESERVED - MUST BE SET TO ZERO
                                                             @ZM49832*/
           2 MSFDBRSP FIXED(15),   /* MSSF COMPLETION RESPONSE       */
             4 MSFREASN FIXED(8),  /* REASON CODE ASSOCIATED WITH
                                        THE RESPONSE CODE            */
             4 MSFRESPN FIXED(8),  /* RESPONSE CODE                  */
           2 MSFDATA  CHAR(MSFDLNG); /* VARIABLE LENGTH COMMAND
                                        DEPENDENT DATA.              */
 %MSF5:   ;
 %IF MSFCW^='YES' %THEN
          %GOTO MSF6;
 %MSF5A:  ;
*/********************************************************************/
*/*                                                                  */
*/*      MAINTENANCE AND SERVICE SUPPORT FACILITY COMMAND WORD       */
*/*                          (MSFCMDWD)                              */
*/*    COPYRIGHT =                                                   */
*/*          5740-XYN COPYRIGHT IBM CORP 1980                        */
*/*          LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*                                                                  */
*/*    STATUS                                                        */
*/*        OS/VS2 JBB1326                                            */
*/*                                                                  */
*/*    METHOD OF ACCESS                                              */
*/*        DCL ANY POINTER WHEN '%MSFCBASE= ' IS SPECIFIED           */
*/*                                                                  */
*/*    DEVELOPERS                                                    */
*/*        SPECIFY '%MSFCW=YES' BEFORE INCLUDE FOR IHAMSF. THE       */
*/*        ASSUMED DEFAULT IS '%MSFCW=NO'.                           */
*/*        SPECIFY '%MSFCBASE=(SOME BASING EXPRESSION)' BEFORE       */
*/*        INCLUDE FOR IHAMSF WHEN THE MAPPING SHOULD BE BASED. THE  */
*/*        DEFAULT IS FOR THE MAPPING TO BE NON-BASED.               */
*/*                                                                  */
*/*    F.E.'S                                                        */
*/*        MICROFICHE LISTINGS - IHAMSF                              */
*/*                                                                  */
*/* A-000000-999999                                          @G875P2L*/
*/********************************************************************/
 %IF MSFCBASE='' %THEN %GOTO NOBASE2;
     DCL 1 MSFCMDWD MSFCBASE  BDY (WORD),
 %GOTO NOBASE2A;
 %NOBASE2: ;
     DCL 1 MSFCMDWD BDY (WORD),
 %NOBASE2A: ;
           2 MSFCMD   CHAR(2),     /* MSSF COMMAND CODE              */
           2 MSFCMDDP CHAR(1),     /* COMMAND DEPENDENT INFO FOR MSSF*/
           2 MSFCMDID CHAR(1);     /* ASSIGNED ID FOR THIS COMMAND   */
 %MSF6:   ;
 %IF MSFPARM^='YES' %THEN
          %GOTO MSF7;
 %MSF6A:  ;
*/********************************************************************/
*/*                                                                  */
*/*   MAINTENANCE AND SERVICE SUPPORT FACILITY SVC PARAMETER LIST    */
*/*                         (MSFSVCPL)                               */
*/*    COPYRIGHT =                                                   */
*/*          5740-XYN COPYRIGHT IBM CORP 1980                        */
*/*          LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*                                                                  */
*/*    STATUS                                                        */
*/*        OS/VS2 JBB1326                                            */
*/*                                                                  */
*/*    METHOD OF ACCESS                                              */
*/*        DCL ANY POINTER WHEN '%MSFPARM= ' IS SPECIFIED            */
*/*                                                                  */
*/*    DEVELOPERS                                                    */
*/*        SPECIFY '%MSFPARM=YES' BEFORE INCLUDE FOR IHAMSF. THE     */
*/*        ASSUMED DEFAULT IS '%MSFPARM=NO'.                         */
*/*        SPECIFY '%MSFPBASE=(SOME BASING EXPRESSION)' BEFORE       */
*/*        INCLUDE FOR IHAMSF WHEN THE MAPPING SHOULD BE BASED. THE  */
*/*        DEFAULT IS FOR THE MAPPING TO BE NON-BASED.               */
*/*                                                                  */
*/*    F.E.'S                                                        */
*/*        MICROFICHE LISTINGS - IHAMSF                              */
*/*                                                                  */
*/* A-000000-999999                                          @G875P2L*/
*/********************************************************************/
 %IF MSFPBASE='' %THEN %GOTO NOBASE3;
     DCL 1 MSFSVCPL MSFPBASE  BDY (WORD),
 %GOTO NOBASE3A;
 %NOBASE3: ;
     DCL 1 MSFSVCPL BDY (WORD),
 %NOBASE3A: ;
           2 MSFSVCDA PTR(31),     /* ADDR OF THE USER'S MSSF DATA
                                      BLOCK                          */
           2 MSFSVCCA PTR(31);     /* ADDR OF WORD CONTAINING THE MSSF
                                      COMMAND WORD                   */
 %MSF7:   ;
 %IF MSFSCP^='YES' %THEN
          %GOTO MSFEND;
 %MSF7A:  ;
*/********************************************************************/
*/*                                                                  */
*/*      MAINTENANCE AND SERVICE SUPPORT FACILITY SCP INFORMATION    */
*/*                         (SCPINFO)                                */
*/*    COPYRIGHT =                                                   */
*/*          5740-XYN COPYRIGHT IBM CORP 1980                        */
*/*          LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,             */
*/*          REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.  */
*/*                                                                  */
*/*    STATUS                                                        */
*/*        OS/VS2 JBB1326                                            */
*/*                                                                  */
*/*    METHOD OF ACCESS                                              */
*/*        DCL ANY POINTER                                           */
*/*                                                                  */
*/*    DEVELOPERS                                                    */
*/*        SPECIFY '%MSFSCP=YES' BEFORE INCLUDE FOR IHAMSF. THE      */
*/*        ASSUMED DEFAULT IS '%MSFSCP=NO'.                          */
*/*        THE SCPINFO IS ALWAYS DECLARED AS BASED BUT NOT ON ANY    */
*/*        SPECIFIC POINTER.                                         */
*/*                                                                  */
*/*    F.E.'S                                                        */
*/*        MICROFICHE LISTINGS - IHAMSF                              */
*/*                                                                  */
*/* A-000000-999999                                          @G875P2L*/
*/********************************************************************/
     DCL 1 SCPINFO BDY (WORD) BASED, /* THE FIXED DATA OF SCPINFO    */
           2 SCPHEAD  CHAR(8) BDY(WORD), /* HEADER INFORMATION       */
             4 SCPLNG FIXED(15),   /* LENGTH OF FIXED AND VARIABLE
                                      PORTIONS                       */
             4 SCPRESV1 CHAR(6),   /* PERMANENTLY RESERVED FIELD     */
           2 SCPSAR   FIXED(8),    /* STORAGE ADDRESS RANGE          */
           2 SCPSAI   FIXED(8),    /* STORAGE ADDRESS INCREMENT      */
           2 SCPSBS   FIXED(8),    /* STORAGE BLOCK SIZE             */
           2 SCPSII   FIXED(8),    /* STORAGE INTERLEAVE INTERVAL    */
           2 *        FIXED(31),   /* PERMANENTLY RESERVED FIELD     */
           2 SCPNCPS  FIXED(15),   /* NUMBER OF CP'S INSTALLED       */
           2 SCPOCP   FIXED(15),   /* OFFSET TO CP DATA              */
           2 SCPNHSAS FIXED(15),   /* NUMBER OF HSA'S ALLOCATED      */
           2 SCPOHSA  FIXED(15),   /* OFFSET TO HSA DATA             */
           2 SCPPARM CHAR(8),      /* MSSF PARAMETER INFORMATION     */
             4 SCPNUCID CHAR(1),   /* ALTERNATE NUCLEUS ID           */
           2 SCPDATAS CHAR(0);     /* VARIABLE DATA STARTS HERE      */
     DCL 1 SCPCP BASED,            /* VARIABLE CP DATA OF SCPINFO
                                                             @ZM50070*/
           2 SCPCPA   FIXED(8),    /* CP ADDRESS                     */
           2 *        FIXED(8);    /* PERMANENTLY RESERVED FIELD     */
     DCL 1 SCPHSA BASED,           /* VARIABLE HSA DATA OF SCPINFO
                                                             @ZM50070*/
           2 SCPHSASZ BIT(16),     /* SIZE OF THIS HSA       @ZM50070*/
           2 SCPAHSA  BIT(32);     /* ADDRESS OF THIS HSA    @ZM50070*/
 %MSFEND:  ;
./ ADD NAME=IHANSQA
*%       GOTO NSQAPLS1;  /*
         MACRO
         IHANSQA &DSECT=YES
.*A 000000-999999                                              @G38BPXV
*                                                                    */
*%NSQAPLS1 : ;
* /*******************************************************************/
* /*                                                                 */
* /* THE NSQA (NORMAL STACK SQA SAVE AREA) CONTAINS A SAVED COPY     */
* /* OF THE NORMAL FRR STACK WHEN AN ENABLED UNLOCKED TASK           */
* /* HAS ESTABLISHED FRR(S) USING THE EUT=YES OPTION OF SETFRR.      */
* /* THIS MAPPING IS USED WHEN THE GETSSRB SERVICE HAS BEEN USED TO  */
* /* TO ACQUIRE SQA STORAGE FOR AN NSSA STACK.  IN ADDITION TO THE   */
* /* NORMAL STACK,  FORWARD, BACKWARD, AND TCB POINTERS ARE INCLUDED */
* /* TO IMPLEMENT A DOUBLE THREADED QUEUE.                           */
* /*                                                                 */
* /* METHOD OF ACCESS                                                */
* /* --BAL--                                                         */
* /*             IHANSQA DSECT=YES                                   */
* /*                           NO                                    */
* /* DSECT = YES IS THE DEFAULT AND WILL PRODUCE THE NSQA            */
* /*            AS A DSECT.                                          */
* /* DSECT = NO WILL PRODUCE THE NSQA AS A CONTINUATION OF           */
* /*            DEFINED STORAGE. (NO DSECT CARD PRODUCED)            */
* /* --PLS--                                                         */
* /*             %INCLUDE SYSLIB(IHANSQA)                            */
* /*    NSQA IS BASED ON NSQAPTR                                     */
* /*                                                                 */
* /* COPYRIGHT= 5740-XYN COPYRIGHT IBM CORP 1980,                    */
* /*            LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
* /*            REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          */
* /*            G120-2083.                                           */
* /*                                                                 */
* /* MACMEAN NSQA MEANS NORMAL STACK SQA SAVE AREA                   */
* /* MACCOMP SC1C5                                                   */
* /* MACSTAT OS/VS2 JBB1226                                          */
* /* MACDATE 05/06/80                                                */
* /*                                                                 */
* /*******************************************************************/
*%       GOTO NSQAPLS;  /*
         AIF ('&DSECT' EQ 'YES').NSQA001
NSQA     DS   0D -
         AGO  .NSQA002
.NSQA001 ANOP
NSQA     DSECT ,       NSQAPTR
.NSQA002 SPACE 2
NSQAID   DS    0CL4    NSQA ACRONYM
NSQANSSA DS    XL(NSSALEN) NSSA CONTROL BLOCK
NSQAFWDP DS    A -     POINTER TO NEXT NSQA OR ZERO
NSQABWDP DS    A -     POINTER TO PREVIOUS NSQA FORWARD PTR
NSQATCBP DS    A -     POINTER TO TCB OWNING THIS NSQA
NSQARSV0 DS    A -     RESERVED
         DS    0D
NSQALEN  EQU   *-NSQA  TOTAL LENGTH OF NSQA AREA
NSQAOFF  EQU   (SSRBFSSA-SRB)-(NSSAFSSA-NSSA)
         MEND  ,   */
*%NSQAPLS  :  ;
*DECLARE
*  1 NSQA    BASED(NSQAPTR),
*    3 NSQANSSA CHAR(LENGTH(NSSA)), /* NSSA CONTROL BLOCK            */
*      5 NSQAID CHAR(4),     /* NSQA ACRONYM                         */
*    3 NSQAFWDP PTR(31),     /* POINTER TO NEXT NSQA OR ZERO         */
*    3 NSQABWDP PTR(31),     /* POINTER TO PREVIOUS NSQA OR ZERO     */
*    3 NSQATCBP PTR(31),     /* POINTER TO TCB OWNING THIS NSQA      */
*    3 NSQARSV0 CHAR(4),     /* RESERVED                             */
*    3 * CHAR(0) BDY(DWORD);
* %DCL NSQAOFF CHAR;
* %NSQAOFF='((ADDR(SSRBFSSA)-ADDR(SRB))-(ADDR(NSSAFSSA)-ADDR(NSSA)))';
./ ADD NAME=IHAPCB
*        %GOTO PCBPLS;                                               /*
         MACRO
         IHAPCB &DSECT=YES
         IEZBITS
         AGO   .PCBARND
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 1 - VS2 RELEASE 2 VERSION                           *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR PAGE CONTROL BLOCK                             *
* ENTRY POINTS -                                                      *
*     IHAPCB MACRO CALL                                               *
* INPUT -                                                             *
*    SEE IHAPCB MACRO DEFINITION                                      *
* OUTPUT -                                                            *
*    PCB MAPPING MACRO                                                *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.PCBARND ANOP
***********************************************************************
**                        PAGE CONTROL BLOCK    4/11/75               *
**                                                                    *
**       ONE PCB EXISTS FOR EACH VIRTUAL PAGE FOR WHICH A PAGING I/O  *
**       OPERATION MAY BE REQUIRED.  PCB'S ARE ON QUEUES ANCHORED     *
**       IN THE PVT AND RSMHD.                                        *
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').PCB001
PCB      DSECT , PCBPTR
         AGO   .PCB002
.PCB001  ANOP
PCB      DS    0F
.PCB002  ANOP
PCBFQP   DS    0F -            FULLWORD REFERENCE FOR FORWARD POINTER
PCBCQN   DS    CL1 -           CURRENT QUEUE NUMBER
PCBFREQN EQU   X'10' -         PCB ON FREE QUEUE
PCBDEFRN EQU   X'18' -         PCB ON GFA DEFER QUEUE
PCBCIOQN EQU   X'20' -         PCB ON COMMON I/O ACTIVE QUEUE
PCBLIOQN EQU   X'88' -         PCB ON LOCAL I/O ACTIVE QUEUE  @Z40WPYD
PCBDEQN  EQU   X'FF' -         NOT CURRENTLY QUEUED
PCBFQPA  DS    AL3 -           FORWARD QUEUE POINTER
PCBBQP   DS    0F -            FULLWORD REFERENCE FOR BACKWARD PTR
PCBBQPA  DS    A -             BACKWARD QUEUE POINTER
PCBRTP   DS    0F -            FULLWORD REFERENCE FOR ROOT PCB PTR
PCBFL1   DS    BL1 -           FIRST FLAG FIELD
*        EQU   BIT0 -          RESERVED.                       @Z40WPYD
PCBPEX   EQU   BIT1 -          PAGE EXCEPTION FLAG, WHEN 1 = THIS PCB
*                              IS FOR A PAGE FAULT INTERUPTION
PCBSRBMD EQU   BIT2 -          SRB MODE FLAG
*                              WHEN = 1 PCB IS FOR SRB PAGE FAULT
*                              PROCESSING.  PCBSRB CONTAINS AN
*                              SRB ADDRESS.
PCBLLHLD EQU   BIT3 -          THE LOCAL LOCK HELD FLAG.
*                              WHEN = 1 LOCAL LOCK WAS HELD WHEN
*                              PAGE FAULT OCCURRED.
PCBLFR   EQU   BIT4 -          LONG FIX REQUEST FLAG
PCBROOT  EQU   BIT5 -          WHEN 1 INDICATES THAT PCBRTPA IS A
*                              ROOT PCB POINTER, WHEN 0 INDICATES
*                              THAT PCBRTPA IS A TCB POINTER
PCBIOI   EQU   BIT6 -          INPUT-OUTPUT FLAG. WHEN 1 =
*                              PAGE OUT, WHEN 0 = PAGE IN
PCBIOCMP EQU   BIT7 -          WHEN 1 = PAGING I/O COMPLETE FOR THIS
*                              PCB.
PCBRTPA  DS    AL3 -           ROOT PCB POINTER/TCB POINTER
*                              CONTENTS DETERMINED BY PCBROOT FLAG
PCBRLP   DS    0F -            FULLWORD REFERENCE FOR RELATED
*                              PCB POINTER
PCBFXC   DS    FL1 -           FIX COUNT
PCBRLPA  DS    AL3 -           RELATED PCB POINTER
PCBXPT   DS    0F -            FULLWORD REFERENCE FOR XPTE PTR
PCBFL2   DS    BL1 -           SECOND FLAG FIELD
PCBFREAL EQU   BIT0 -          FREE REAL FLAG. WHEN 1, THIS FLAG
*                              INDICATES THAT THE REAL FRAME
*                              ASSOCIATED WITH THE PCB SHOULD BE
*                              BE FREED AT I/O COMPLETION.
PCBGFAD  EQU   BIT1 -          GFA DEFER PRCESSOR SCHEDULED FLAG
*                              WHEN 1, GFA DEFER PROCESSOR HAS BEEN
*                              SCHEDULED FOR THIS PCB.
PCBIOERR EQU   BIT2 -          PERMANENT I/O ERROR FLAG.
*                              WHEN 1 A PAGING I/O OPERATION HAS
*                              FAILED BECAUSE OF A PERMANENT I/O
*                              ERROR
PCBRESET EQU   BIT3 -          RESET FLAG. WHEN 1, CALL RESET FOR PCB.
PCBSUPRS EQU   BIT4 -          SUPPRESS FRAME PROCESSING. IGNORE
*                              PCBFREAL,PCBRBN AND ASSOCIATED PFTE.
PCBVIO   EQU   BIT5 -          THIS PCB IS FOR A VIO MOVE-OUT.
*                                                             @Z40WPYD
*        EQU   BIT6 -          RESERVED
*        EQU   BIT7 -          RESERVED
PCBXPTA  DS    AL3 -           VIRTUAL MEMORY ADDRESS OF
*                              EXTERNAL PAGE TABLE ENTRY
PCBPGT   DS    0F              FULL WORD REFERENCE FOR PAGE TABLE ADDR
PCBFL3   DS    BL1 -           THIRD FLAG FIELD
PCBSWPOT EQU   BIT0 -          SWAP-OUT FLAG
PCBSWPIN EQU   BIT1 -          SWAP-IN PRIVATE AREA PAGE FLAG
PCBSWPS1 EQU   BIT2 -          STAGE 1 SWAP-IN FLAG
PCBSWPLS EQU   BIT3 -          SWAP-IN LSQA PAGE FLAG
PCBDFRLS EQU   BIT4 -          SWAP-IN DEFERRED RELEASE FLAG. THE
*                              SWIN ROOT EXIT MUST SET PFTDFRLS TO 1.
PCBNOREC EQU   BIT5 -          NO RECLAIM FLAG, VALID ONLY IF
*                              PCBIOI=1. WHEN 1, PAGE-OUT IS NOT TO
*                              BE RECLAIMED. WHEN 0, RECLAIM IS ALLOW-
*                              ED.                            @Z40WPYD
*        EQU   BIT6 -          RESERVED                      @Z40WPYD
PCBSWPS2 EQU   BIT7 -          WHEN 1, PCB IS FOR A STAGE 2 SWAP-IN.
*                                                              @Z40WPYD
PCBPGTA  DS    AL3 -           VIRTUAL MEMORY ADDRESS OF
*                              PAGE TABLE ENTRY
PCBRBN   DS    AL2 -           REAL CORE BLOCK NUMBER  (LEFT
*                              ADJUSTED WITH 4 LOW ORDER ZEROES.)
PCBVBN   DS    AL2 -           VIRTUAL MEMORY BLOCK NUMBER (LEFT
*                              ADJUSTED WITH 4 LOW ORDER ZEROES.)
*                              IF THIS VALUE IS ZERO, NO PGTE
*                              VALIDATION WILL BE PERFORMED.
PCBBLOCK DS   0F -            MULTI USE FIELD, SEE BELOW.     @Z40WPYD
PCBSRB   DS   0F -             IF PCBSWPOT=1 AND PCBSRBMD=1 THEN FIELD
*                              CONTAINS ADDRESS OF PAGE FAULTING SRB.
*                                                              @Z40WPYD
PCBRB    DS   0F -             IF PCBPEX=1 AND PCBSRBMD=0 THEN FIELD
*                              CONTAINS ADDRESS OF PAGE FAULTING RB.
*                                                              @Z40WPYD
PCBSPCTE DS   AL4 -            IF PCBSWPOT=1 OR PCBSWPS1=1 AND VBN IN
*                              PRIVATE AREA,THEN FIELD CONTAINS ADDRESS
*                              OF A SPCTSWPE.                  @Z40WPYD
PCBASCB  DS    AL4 -           THE ADDRESS OF THE ADDRESS SPACE CONTROL
*                              BLOCK (ASCB) OF THE REQUESTOR WHO CAUSED
*                              THE PCB TO BE BUILT.
PCBAIA   DS    CL28 -          THE ASM I/O REQUEST AREA (AIA)
*                              WHICH IS ALWAYS PART OF THE PCB. THE
*                              AREA IS MAPPED BY THE ILRAIA MACRO.
PCBEND   EQU   * -             END OF PCB.                     @Z40WPYD
PCBLEN   EQU   *-PCB           LENGTH OF PAGE CONTROL BLOCK
         MEND  , */
*%PCBPLS : ;
* /*******************************************************************/
* /*                 PAGE CONTROL BLOCK     4/11/75                  */
* /*                                                                 */
* /* ONE PCB EXISTS FOR EACH VIRTUAL PAGE FOR WHICH A PAGING I/O     */
* /* OPERATION MAY BE REQUIRED.  PCB'S ARE ON QUEUES ANCHORED        */
* /* IN THE PVT AND RSMHD.                                           */
* /*******************************************************************/
*DCL                                /* DEFINE VALUES OF PCBCQN FIELD */
*  PCBFREQN BIT(8) CONSTANT('10'X), /* PCB ON FREE QUEUE             */
*  PCBDEFRN BIT(8) CONSTANT('18'X), /* PCB ON GFA DEFER QUEUE        */
*  PCBCIOQN BIT(8) CONSTANT('20'X), /* PCB ON COMMON I/O QUEUE       */
*  PCBLIOQN BIT(8) CONSTANT('88'X), /* PCB ON LOCAL I/O QUEUE
*                                                           @Z40WPYD */
*  PCBDEQN  BIT(8) CONSTANT('FF'X); /* PCB IS NOT CURRENTLY QUEUED   */
*        %IF PCB9999 ^= ','         /* IF THIS IS LAST BLOCK         */
*          %THEN %PCB9999 = ';';    /* THEN CLOSE DCL STATEMENT      */
*        %IF PCBLEVEL ^= ''         /* IF THIS IS CONCATENATED       */
*          %THEN %GOTO PCBPLS1;     /* THEN SKIP DCL                 */
*%PCBPLS0:;
* /*******************************************************************/
* /*                        PCB MAPPING                              */
* /*******************************************************************/
*DCL 1 PCB BASED (PCBPTR)           /* DECLARE PCB LEVEL 1           */
*        %GO TO PCBPLS2;            /* AND SKIP LEVEL TWO DCL        */
*%PCBPLS1: PCBDUM=PCBLEVEL' PCB'; /* SET LEVEL FOR MINOR STRUCTURE */
*    PCBDUM                         /* MINOR STRUCTURE NAME PARM     */
*%PCBPLS2:;
*        BDY(WORD),
*      4 PCBFQP PTR(31),            /* FULLWORD REFERENCE FOR
*                                      FORWARD POINTER               */
*        8 PCBCQN PTR(8),           /* CURRENT QUEUE NUMBER          */
*        8 PCBFQPA PTR(24),         /* FORWARD QUEUE POINTER         */
*      4 PCBBQP PTR(31),            /* BACKWARD QUEUE POINTER        */
*        8 PCBBQPA PTR(31),         /* BACKWARD QUEUE POINTER        */
*      4 PCBRTP PTR(31),            /* FULLWORD REFERENCE FOR
*                                      ROOT PCB PTR                  */
*        8 PCBFL1  BIT(8),          /* FIRST FLAG FIELD              */
*            12 *         BIT(1),   /* RESERVED             @Z40WPYD */
*          12 PCBPEX   BIT(1),      /* PAGE EXCEPTION FLAG, WHEN 1,
*                                      THIS PCB  IS FOR A PAGE FAULT
*                                      INTERUPTION.                  */
*          12 PCBSRBMD BIT(1),      /* SRB MODE FLAG
*                                      WHEN 1, PCB IS FOR SRB PAGE
*                                      FAULT PROCESSING. PCBSRB
*                                      CONTAINS SRB ADDRESS.    */
*          12 PCBLLHLD BIT(1),      /* THE LOCAL LOCK HELD FLAG.
*                                      WHEN = 1 LOCAL LOCK WAS HELD
*                                      WHEN PAGE FAULT OCCURRED.     */
*          12 PCBLFR   BIT(1),      /* LONG FIX REQUEST FLAG         */
*          12 PCBROOT  BIT(1),      /* WHEN 1, INDICATES THAT PCBRTPA
*                                      IS A ROOT PCB POINTER, WHEN 0
*                                      INDICATES THAT PCBRTPA IS A TCB
*                                      POINTER OR 0.                 */
*          12 PCBIOI   BIT(1),      /* INPUT-OUTPUT FLAG.
*                                      WHEN 1 =  PAGE OUT, WHEN
*                                      0 = PAGE IN                   */
*          12 PCBIOCMP BIT(1),      /* WHEN 1 = PAGING I/O COMPLETE
*                                      FOR THIS PCB                  */
*        8 PCBRTPA PTR(24),         /* ROOT PCB POINTER/TCB POINTER
*                                      CONTENTS DETERMINED BY PCBROOT
*                                      FLAG.                         */
*      4 PCBRLP  PTR(31),           /* FULLWORD REFERENCE FOR
*                                      RELATED  PCB POINTER          */
*        8 PCBFXC  FIXED(8),        /* FIX COUNT                     */
*        8 PCBRLPA PTR(24),         /* RELATED PCB POINTER          */
*      4 PCBXPT PTR(31),            /* FULLWORD REFERENCE FOR
*                                      XPTE PTR                      */
*        8 PCBFL2 BIT(8),           /* SECOND FLAG FIELD             */
*          12 PCBFREAL BIT(1),      /* FREE REAL FLAG, THIS FLAG TELLS
*                                      WHETHER OR NOT THE REAL FRAME
*                                      ASSOCIATED WITH A COMPLETED
*                                      I/O OPERATION SHOULD BE FREED.
*                                      WHEN 1, FREE REAL FRAME       */
*          12 PCBGFAD  BIT(1),      /* GFA DEFER PROCESSOR FLAG.
*                                      WHEN 1, GFA DEFER PROCESSOR HAS
*                                      BEEN SCHEDULED FOR THIS PCB.  */
*          12 PCBIOERR BIT(1),      /* PERMANENT I/O ERROR FLAG.
*                                      WHEN 1 A PAGING I/O OPERATION
*                                      HAS FAILED BECAUSE OF A
*                                      PERMANENT I/O ERROR           */
*          12 PCBRESET BIT(1),      /* RESET MUST BE CALLED FLAG.    */
*          12 PCBSUPRS BIT(1),      /* SUPPRESS FRAME PROCESSING.
*                                      IGNORE PCBFREAL, PCBRBN, AND
*                                      ASSOCIATED PFTE.             */
*          12 PCBVIO BIT(1),        /* PCB IS FOR A VIO MOVE-OUT.
*                                                          @Z40WPYD */
*          12 *       BIT(1),       /* RESERVED                      */
*          12 *       BIT(1),       /* RESERVED                      */
*        8 PCBXPTA PTR(24),         /* VIRTUAL MEMORY ADDRESS OF
*                                      EXTERNAL PAGE TABLE ENTRY     */
*      4 PCBPGT FIXED(31),          /* FULLWORD REFERENCE FOR
*                                      PAGE TABLE ENTRY              */
*        8 PCBFL3  BIT(8),          /* THIRD FLAG FIELD              */
*          12 PCBSWPOT BIT(1),      /* SWAP OUT FLAG                 */
*          12 PCBSWPIN BIT(1),      /* SWAP IN PRIVATE AREA PAGE FLAG*/
*          12 PCBSWPS1 BIT(1),      /* STAGE 1 SWAP-IN FLAG          */
*          12 PCBSWPLS BIT(1),      /* SWAP-IN LSQA PAGE FLAG.       */
*          12 PCBDFRLS BIT(1),      /* SWAP-IN DEFERRED RELEASE FLAG.
*                                      THE SWIN ROOT EXIT MUST SET
*                                      PFTDFRLS TO 1.                */
*          12 PCBNOREC BIT(1),      /* NO RECLAIM FLAG, VALID ONLY IF
*                                      PCBIOI=1. WHEN 1, PAGE-OUT IS
*                                      NOT TO BE RECLAIMED. WHEN 0,
*                                      RECLAIM IS ALLOWED. @Z40WPYD */
*          12 *        BIT(1),      /* RESERVED.           @Z40WPYD */
*          12 PCBSWPS2 BIT(1),      /* WHEN 1, PCB IS FOR A STAGE 2
*                                      SWAP IN.            @Z40WPYD */
*        8 PCBPGTA PTR(24),         /* VIRTUAL MEMORY ADDRESS
*                                      OF PAGE TABLE ENTRY           */
*      4 PCBRBN BIT(16),            /* REAL STORAGE BLOCK NUMBER
*                                      (LEFT  ADJUSTED WITH 4
*                                      LOW ORDER ZEROES.)            */
*      4 PCBVBN BIT(16),            /* VIRTUAL MEMORY BLOCK
*                                      NUMBER (LEFT  ADJUSTED
*                                      WITH 4 LOW ORDER
*                                      ZEROES.) IF THIS VALUE IS ZERO,
*                                      NO PGTE VALIDATION WILL BE
*                                      PERFORMED.                    */
*      4 PCBBLOCK PTR(31),          /* MULTI USE FIELD, SEE BELOW
*                                                           @Z40WPYD */
*        8 PCBSRB PTR(31),          /* IF PCBPEX=1 AND PCBSRBMD=1, THEN
*                                      FIELD CONTAINS ADDRESS OF PAGE
*                                      FAULTING SRB.        @Z40WPYD */
*          12 PCBRB PTR(31),        /* IF PCBPEX=1 AND PCBSRBMD=0, THEN
*                                      FIELD CONTAINS ADDRESS OF PAGE
*                                      FAULTING RB.         @Z40WPYD */
*             16 PCBSPCTE PTR(31),  /* IF PCBSWPOT=1 OR PCBSWPS1=1 AND
*                                      VBN IS IN PRIVATE AREA, THEN
*                                      FIELD CONTAINS ADDRESS OF A
*                                      SPCTSWPE.            @Z40WPYD */
*      4 PCBASCB PTR(31),           /* ADDRESS OF THE ADDRESS SPACE
*                                      CONTROL BLOCK(ASCB)           */
*      4 PCBAIA CHAR(28)BDY(WORD) , /* AN ASM I/O REQUEST
*                                      AREA (AIA) WHICH IS ALWAYS PART
*                                      OF THE PCB. THE AREA IS MAPPED
*                                      BY THE ILRAIA MACRO.          */
*      4 PCBEND CHAR(0) PCB9999    /* END OF PCB      @Z40WPYD */
*        %PCBLEN = 'LENGTH(PCB)';   /* OBTAIN LENGTH OF PCB.         */
./ ADD NAME=IHAPCBR
*        %GOTO PCBRPLS;                                              /*
         MACRO
         IHAPCBR &DSECT=YES
         AGO  .PCBRRND
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0 (OS/VS2 REL 2 VERSION)                            *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR ROOT PCB                                       *
* ENTRY POINTS -                                                      *
*     IHAPCBR MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IHAPCBR MACRO DEFINITION                                     *
* OUTPUT -                                                            *
*    ROOT PCB MAPPING MACRO                                           *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.PCBRRND ANOP
         IEZBITS
***********************************************************************
*                        ROOT PAGE CONTROL BLOCK     4/11/75          *
*                                                                     *
*        A ROOT PCB IS USED TO CONTROL POSTING OF A LOGICALLY RELATED *
*        OPERATION CONSISTING OF RSM OPERATIONS FOR 'N' PAGES.  THE   *
*        POSTING CAN NOT TAKE PLACE UNTIL ALL 'N' PAGE OPERATIONS     *
*        HAVE COMPLETED.                                              *
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').PCBR001
PCBR     DSECT , PCBRPTR
         AGO   .PCBR002
.PCBR001 ANOP
PCBR     DS    0F
.PCBR002 ANOP
PCBRTCB  DS    0F -            FULLWORD REFERENCE FOR TCB POINTER
PCBRFLAG DS    BL1 -           FLAG FIELD. THE EXACT MEANING OF EACH
*                              BIT MAY VARY SLIGHTLY DEPENDING ON WHICH
*                              ROOT EXIT OR COMPLETION ROUTINE IS
*                              PROCESSING THE ROOT PCB.
PCBRINT  EQU   BIT0 -          INTERCEPTED ROOT FLAG .
*                              FIX/LOAD ROOT EXIT SHOULD NOT PERFORM
*                              NORMAL COMPLETION NOTIFICATION OR A
*                              COMPLETION ROUTINE HAS BEEN SCHEDULED.
PCBRETRY EQU   BIT1 -          RETRY FLAG.  WHEN 1 INDICATES A SWAP-IN
*                              HAS FAILED BUT IS RETRYABLE
PCBRPB   EQU   BIT2 -          VEQRC OR SWAP ROOT SHOULD FREE ROOT PCB
PCBRFPCB EQU   BIT3 -          V=R ONLY. VRFREE SHOULD FREE ROOT PCB.
PCBRFAIL EQU   BIT4 -          ROOT FAILURE FLAG.
*                              WHEN 1 PART OF REQUESTED FUNCTION
*                              ASSOCIATED WITH ROOT PCB HAS FAILED
PCBRLOAD EQU   BIT5 -          LOAD REQUEST FLAG FOR FIX/LOAD ROOTS.
*                              WHEN 1 ROOT PCB IS FOR A PGLOAD REQUEST
PCBRFECB EQU   BIT6 -          FREE ECB FLAG FOR FIX/LOAD ROOTS.
*                              WHEN 1, PGFREE THE ECB ADDRESSED BY
*                              PCBRECB. WHEN 0, DO NOT PGFREE THE ECB.
PCBRPOF  EQU   BIT7 -          FORCE PAGE OUT FLAG. WHEN 1, V=R FORCE
*                              PAGE OUT ROUTINE HAS BEEN SCHEDULED AND
*                              HAS NOT COMPLETED. DO NOT FREE THE ROOT
*                              PCB. THIS FLAG FOR V=R ROUTINES ONLY.
PCBRTCBA DS    AL3 -           TCB POINTER
*                              THE VSA OF TCB FOR THE TASK REQUESTING
*                              RSM SERVICES REQUIRING A ROOT PCB.
PCBRGOTO DS    A -             VSA OF ROOT EXIT ROUTINE
*                              THIS ROUTINE IS TO BE GIVEN CONTROL
*                              WHEN THE ROOT COUNT (PCBRCNT) IS
*                              DECREMENTED TO ZERO.
PCBRECB  DS    A -             VSA OF REQUESTOR SUPPLIED ECB
*                              IF POSTING IS TO BE THE MODE OF
*                              COMPLETION NOTIFICATION.
PCBRASCB DS    A -             VSA OF ASCB FOR THE ADDRESS SPACE
*                              IN WHICH THE REQUESTING TCB RESIDES.
PCBRCNT  DS    FL2 -           ROOT PCB COMPLETION COUNT
*                              THIS IS THE NUMBER OF PAGES ASSOCIATED
*                              WITH THE ROOT FOR WHICH PROCESSING HAS
*                              NOT  YET COMPLETED.
PCBRRSV1 DS    FL2 -           RESERVED
PCBRWRK1 DS    F -             SCRATCH PAD
PCBRWRK2 DS    F -             SCRATCH PAD
PCBRWRK3 DS    F -             SCRATCH PAD
PCBRWRK4 DS    F -             SCRATCH PAD
PCBRWRK5 DS    F -             SCRATCH PAD
PCBRWRK6 DS    F -             SCRATCH PAD
PCBRWRK7 DS    F -             SCRATCH PAD
PCBRWRK8 DS    F -             SCRATCH PAD
PCBRWRK9 DS    F -             SCRATCH PAD
PCBRWRKA DS    F -             SCRATCH PAD                    @Z40WPYD
PCBRWRKB DS    F -             SCRATCH PAD                    @Z40WPYD
PCBRLEN  EQU   *-PCBR          LENGTH OF ROOT PCB
         MEND  , */
*%PCBRPLS :  ;
* /*******************************************************************/
* /*               ROOT PAGE CONTROL BLOCK    4/11/75                */
* /* A ROOT PCB IS USED TO CONTROL POSTING OF A LOGICALLY RELATED    */
* /* OPERATION CONSISTING OF RSM OPERATIONS FOR 'N' PAGES.  THE      */
* /* POSTING CAN NOT TAKE PLACE UNTIL ALL 'N' PAGE OPERATIONS HAVE   */
* /* COMPLETED.                                                      */
* /*******************************************************************/
*        %IF PCBR9999 ^= ','        /* IF THIS IS LAST BLOCK         */
*          %THEN %PCBR9999 = ';';   /* THEN CLOSE DCL STATEMENT      */
*        %IF PCBRLEVL ^= ''         /* IF THIS IS CONCATENATED       */
*          %THEN %GOTO PCBRPLS1;    /* THEN SKIP DCL                 */
*DCL 1 PCBR BASED (PCBRPTR)         /* DECLARE PCBR LEVEL 1          */
*        %GO TO PCBRPLS2;           /* AND SKIP LEVEL TWO DCL        */
*%PCBRPLS1: PCBRDUM=PCBRLEVL ' PCBR'; /* SET LEVEL FOR MINOR       */
*    PCBRDUM                        /* MINOR STRUCTURE NAME PARM     */
*%PCBRPLS2:;
*        BDY(WORD),
*      4 PCBRTCB  FIXED(31),        /* FULLWORD REFERENCE FOR
*                                      TCB POINTER                   */
*        8 PCBRFLAG    BIT(8),      /* FLAG FIELD. THE EXACT MEANING OF
*                                      EACH BIT DEPENDS ON WHICH ROOT
*                                      EXIT OR COMPLETION ROUTINE IS
*                                      PROCESSING THE ROOT PCB.      */
*          12 PCBRINT  BIT(1),      /* INTERCEPTED ROOT FLAG.
*                                      THE ROOT EXIT SHOULD NOT PERFORM
*                                      NORMAL COMPLETION NOTIFICATION
*                                      OR THE ROOT COMPLETION ROUTINE
*                                      HAS BEEN SCHEDULED. */
*          12 PCBRETRY BIT(1),      /* RETRY FLAG.  WHEN 1 INDICATES A
*                                      SWAP-IN HAS FAILED BUT IS
*                                      RETRYABLE                     */
*          12 PCBRPB   BIT(1),      /* VEQRC OR SWAP ROOT EXITS
*                                      MUST FREE ROOT PCB.           */
*          12 PCBRFPCB BIT(1),      /* V=R ONLY. VRFREE MUST FREE PCB*/
*          12 PCBRFAIL BIT(1),      /* ROOT FAILURE FLAG. WHEN 1,
*                                      PART OF REQUESTED FUNCTION
*                                      ASSOCIATED WITH THE ROOT PCB
*                                      HAS FAILED.                   */
*          12 PCBRLOAD BIT(1),      /* LOAD REQUEST FLAG
*                                      WHEN 1 ROOT PCB IS FOR A
*                                      PGLOAD REQUEST.               */
*          12 PCBRFECB BIT(1),      /* FREE ECB FLAG FOR FIX/LOAD ROOTS
*                                      WHEN 1, FREE THE ECB.         */
*          12 PCBRPOF BIT(1),       /* FORCE PAGE OUT FLAG. WHEN 1, V=R
*                                      FORCE PAGE OUT ROUTINE HAS BEEN
*                                      SCHEDULED AND HAS NOT COMPLETED.
*                                      DO NOT FREE THE ROOT PCB. THIS
*                                      FLAG FOR V=R ROUTINES ONLY.   */
*        8 PCBRTCBA PTR(24),        /* TCB POINTER                   */
*      4 PCBRGOTO PTR(31),          /* ADDRESS OF ROUTINE TO
*                                      BRANCH  TO WHEN ROOT
*                                      COUNT REACHES 0.              */
*      4 PCBRECB  PTR(31),          /* THE VSA OF THE REQUESTOR
*                                      SUPPLIED ECB IF POSTING IS TO
*                                      BE THE MODE OF COMPLETION
*                                      NOTIFICATION.                 */
*      4 PCBRASCB PTR(31),          /* THE VSA OF THE ASCB FOR THE
*                                      ADDRESS SPACE IN WHICH THE
*                                      REQUESTING TCB RESIDES.       */
*      4 PCBRCNT  FIXED(15),        /* ROOT PCB COMPLETION COUNT. THE
*                                      NUMBER OF PAGES ASSOCIATED WITH
*                                      THE ROOT FOR WHICH PROCESSING
*                                      HAS NOT YET COMPLETED.        */
*      4 PCBRRSV1 PTR(15),          /* RESERVED                      */
*      4 PCBRWRK1 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK2 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK3 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK4 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK5 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK6 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK7 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK8 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRK9 FIXED(31),        /* SCRATCH PAD                   */
*      4 PCBRWRKA FIXED(31),        /* SCRATCH PAD          @Z40WPYD */
*      4 PCBRWRKB FIXED(31) PCBR9999 /* SCRATCH PAD         @Z40WPYD */
*        %PCBRLEN = 'LENGTH(PCBR)'; /* OBTAIN LENGTH OF ROOT PCB     */
./ ADD NAME=IHAPCCA
*
*        %GOTO PCCAL1;  /*
         MACRO
         IHAPCCA &DSECT=YES   */
*%PCCAL1 : ;
*
*/* **************************************************************** */
*/*                                                                  */
*/*            PHYSICAL CONFIGURATION COMMUNICATION AREA             */
*/*                                                                  */
*/*  OS/VS2 SU51, 02/17/77, LEVEL=4                                  */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
*/*             USING ON PCCA GIVES ADDRESSABILITY FOR ALL SYMBOLS.  */
*/*      PL/S - DCL PCCAPTR PTR                                      */
*/*                                                                  */
*/* **************************************************************** */
*%GOTO PCCAL2;  /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').PCCA010
PCCA     DSECT
         AGO   .PCCA020
.PCCA010 ANOP
         DS    0D
PCCA     EQU   *
.PCCA020 ANOP
PCCAPCCA DC    CL4'PCCA' -    CONTROL BLOCK ACRONYM IN EBCDIC
PCCACPID DC    XL12'00' -     CPU ID (CONTAINS SERIAL NUMBER)
PCCACPUA DC    H'0' -         PHYSICAL CPU ADDRESS
PCCACAFM DC    H'0' -         BIT MASK CORRESPONDING TO PHYSICAL CPU
*                             ADDRESS
PCCATQEP DC    A(0) -         TQE POINTER
PCCAPSAV DC    A(0) -         VIRTUAL ADDRESS OF PSA
PCCAPSAR DC    A(0) -         REAL ADDRESS OF PSA
PCCARV81 DS    A -            RESERVED                           MDC005
PCCARV82 DS    A -            RESERVED                           MDC005
PCCARV83 DS    A -            RESERVED                           MDC005
PCCARV84 DS    A -            RESERVED                           MDC005
PCCARV85 DS    A -            RESERVED                           MDC005
PCCARV86 DS    A -            RESERVED                           MDC005
PCCARV87 DS    A -            RESERVED                           MDC005
PCCARV88 DS    A -            RESERVED                           MDC005
PCCARV89 DS    A -            RESERVED                           MDC005
PCCARV90 DS    A -            RESERVED                           MDC005
PCCARV91 DS    A -            RESERVED                           MDC005
PCCARV92 DS    A -            RESERVED                           MDC005
PCCARV93 DS    A -            RESERVED                           MDC005
PCCARV94 DS    A -            RESERVED                           MDC005
PCCARV95 DS    A -            RESERVED                           MDC005
PCCARV96 DS    A -            RESERVED                           MDC005
PCCARV97 DS    A -            RESERVED                           MDC005
PCCARV98 DS    A -            RESERVED                           MDC005
PCCARV99 DS    A -            RESERVED                           MDC005
PCCARV9A DS    A -            RESERVED                           MDC005
PCCARV9B DS    A -            RESERVED                           MDC005
PCCARV9C DS    A -            RESERVED                           MDC005
PCCARV9D DS    A -            RESERVED                           MDC005
PCCARV9E DS    A -            RESERVED                           MDC005
PCCATMST DS    0BL4 -         TIMER STATUS BYTES
PCCATMFL DC    XL1'00' -      FIRST BYTE OF PCCATMST
PCCAINIT EQU   X'80' -        ENTRY HAS BEEN INITIALIZED
PCCASYNC EQU   X'40' -        CLOCK OUT OF SYNCHRONIZATION
PCCAVKIL EQU   X'20' -        VARY CPU SHOULD BE CANCELLED
PCCAMCC  EQU   X'10' -        PROCESSING FOR PERMANENTLY DAMAGED CLOCK
*                             COMPARATOR MUST BE DONE
PCCAMINT EQU   X'08' -        PROCESSING FOR CPU TIMER MUST BE DONE
PCCARV02 EQU   X'04',,C'X' -  RESERVED
PCCARV03 EQU   X'02',,C'X' -  RESERVED
PCCARV04 EQU   X'01',,C'X' -  RESERVED
PCCATODE DC    XL1'00' -      TOD CLOCK ERROR FLAGS
PCCANUTD EQU   X'80' -        CLOCK CANNOT BE USED
PCCANFTD EQU   X'40' -        CLOCK SHOULD NOT BE RESET
PCCACTTD EQU   X'3F' -        ERROR COUNT (6 BITS)
PCCACCE  DC    XL1'00' -      FLAGS FOR CLOCK COMPARATOR
PCCANUCC EQU   X'80' -        CLOCK COMPARATOR CANNOT BE USED
PCCANFCC EQU   X'40' -        CLOCK COMPARATOR SHOULD NOT BE RESET
PCCACTCC EQU   X'3F' -        ERROR COUNT (6 BITS)
PCCAINTE DC    XL1'00' -      FLAGS FOR CPU TIMER
PCCANUIN EQU   X'80' -        CPU TIMER CANNOT BE USED
PCCANFIN EQU   X'40' -        CPU TIMER SHOULD NOT BE RESET
PCCACTIN EQU   X'3F' -        ERROR COUNT (6 BITS)
PCCARPB  DC    F'0' -         EXTERNAL CALL SIGP BUFFER
PCCAEMSB DS    0CL16 -        EMERGENCY SIGNAL SIGP BUFFER
PCCAEMSI DS    0BL4 -         FIRST WORD OF EMS BUFFER
PCCARISP DC    XL1'00' -      CONTAINS PARALLEL/SERIAL REQUEST
*                             INDICATOR FOR REMOTE IMMEDIATE SIGNAL
PCCAPARL EQU   X'80' -        PARALLEL REQUEST                   MDC002
PCCASERL EQU   X'40' -        SERIAL REQUEST                     MDC003
PCCARV06 EQU   X'20',,C'X' -  RESERVED
PCCARV07 EQU   X'10',,C'X' -  RESERVED
PCCARV08 EQU   X'08',,C'X' -  RESERVED
PCCARV09 EQU   X'04',,C'X' -  RESERVED
PCCARV10 EQU   X'02',,C'X' -  RESERVED
PCCARV11 EQU   X'01',,C'X' -  RESERVED
PCCAEMS2 DC    XL1'00' -      SECOND BYTE OF PCCAEMSI
PCCARV12 EQU   X'80',,C'X' -  RESERVED
PCCARV13 EQU   X'40',,C'X' -  RESERVED
PCCARV14 EQU   X'20',,C'X' -  RESERVED
PCCARV15 EQU   X'10',,C'X' -  RESERVED
PCCARV16 EQU   X'08',,C'X' -  RESERVED
PCCARV17 EQU   X'04',,C'X' -  RESERVED
PCCARV18 EQU   X'02',,C'X' -  RESERVED
PCCARV19 EQU   X'01',,C'X' -  RESERVED
PCCAEMS3 DC    XL1'00' -      THIRD BYTE OF PCCAEMSI
PCCARV20 EQU   X'80',,C'X' -  RESERVED
PCCARV21 EQU   X'40',,C'X' -  RESERVED
PCCARV22 EQU   X'20',,C'X' -  RESERVED
PCCARV23 EQU   X'10',,C'X' -  RESERVED
PCCARV24 EQU   X'08',,C'X' -  RESERVED
PCCARV25 EQU   X'04',,C'X' -  RESERVED
PCCARV26 EQU   X'02',,C'X' -  RESERVED
PCCARV27 EQU   X'01',,C'X' -  RESERVED
PCCARMSB DC    XL1'00' -      CONTAINS RMS INDICATOR
PCCARV28 EQU   X'80',,C'X' -  RESERVED
PCCARV29 EQU   X'40',,C'X' -  RESERVED
PCCARV30 EQU   X'20',,C'X' -  RESERVED
PCCARV31 EQU   X'10',,C'X' -  RESERVED
PCCARV32 EQU   X'08',,C'X' -  RESERVED
PCCARV33 EQU   X'04',,C'X' -  RESERVED
PCCARV34 EQU   X'02',,C'X' -  RESERVED
PCCARMS  EQU   X'01' -        SIGP WAS ISSUED VIA RMS
PCCAEMSP DC    A(0) -         REMOTE IMMEDIATE SIGNAL PARAMETER ADDRESS
PCCAEMSE DC    A(0) -         REMOTE IMMEDIATE SIGNAL RECEIVING ROUTINE
*                             ENTRY POINT ADDRESS
PCCAEMSA DC    A(0) -         PCCA ADDRESS OF THE RECEIVING ROUTINE
PCCAPWAV DC    A(0) -         VIRTUAL ADDRESS OF MCH PROCESSOR WORK
*                             AREA
PCCAPWAR DC    A(0) -         REAL ADDRESS OF MCH PROCESSOR WORK AREA
PCCALRBV DC    A(0) -         VIRTUAL ADDRESS OF MCH LOGREC BUFFER
PCCALRBR DC    A(0) -         REAL ADDRESS OF MCH LOGREC BUFFER
PCCAELAD DC    A(0) -         VIRTUAL ADDRESS OF I/O EXTENDED LOGOUT
*                             (IOEL) AREA  (MDC310)            @G51BP9A
PCCAELBA DC    A(0) -         VIRTUAL ADDRESS OF CCH LOGOUT BUFFER
*                             (MDC311)                         @G51BP9A
PCCACCHM DC    A(0) -         VIRTUAL ADDRESS OF CCH MESSAGE BUFFER
*                             (MDC312)                         @G51BP9A
PCCASRB  DC    XL44'00' -     SRB FOR CCH TO SCHEDULE IECVIRST TO
*                             PROCESS CHANNEL ERRORS  (MDC314) @G51BP9A
PCCACHAN DC    XL1'00' -      FLAG BYTE FOR CCH-IOS CHANNEL RECOVERY
*                             COMMUNICATION  (MDC315)          @G51BP9A
PCCAIRST EQU   X'80' -        IECVIRST IS PROCESSING CHANNEL ERRORS
*                             DETECTED DURING AN EXTERNAL MACHINE CHECK
*                             (MDC316)                         @G51BP9A
PCCAEXDM EQU   X'40' -        WHILE PCCAIRST BIT WAS SET, MORE CHANNEL
*                             ERRORS WERE DETECTED WHILE PROCESSING
*                             ANOTHER EXTERNAL DAMAGE MACHINE CHECK
*                             (MDC317)                         @G51BP9A
PCCAR107 EQU   X'20',,C'X' -  RESERVED                         @G51BP9A
PCCAR108 EQU   X'10',,C'X' -  RESERVED                         @G51BP9A
PCCAR109 EQU   X'08',,C'X' -  RESERVED                         @G51BP9A
PCCAR110 EQU   X'04',,C'X' -  RESERVED                         @G51BP9A
PCCAR111 EQU   X'02',,C'X' -  RESERVED                         @G51BP9A
PCCAR112 EQU   X'01',,C'X' -  RESERVED                         @G51BP9A
PCCASRBL DC    XL1'00' -      LOCK BYTE FOR COMMUNICATING CHANNEL
*                             ERRORS BETWEEN CCH AND IOS
*                             (MDC318)                         @G51BP9A
PCCASRBA EQU   X'00' -        SRB IS AVAILABLE FOR SCHEDULING
*                             (MDC319)                         @G51BP9A
PCCASRBN EQU   X'FF' -        SRB IS NOT AVAILABLE FOR SCHEDULING
*                             (MDC320)                         @G51BP9A
PCCAR113 DC    H'0' -         RESERVED  (MDC304)               @G51BP9A
PCCAR106 DC    52XL1'00' -    RESERVED  (MDC304)               @G51BP9A
         DS    0D -           ALIGN PCCAWERP TO DOUBLEWORD
PCCAWERP DS    0XL8 -         WORK ERPIB FOR CCH
PCCACHUB DC    A(0) -         UCB ADDRESS OF THE DEVICE IN USE WHEN
*                             THE CHANNEL-DETECTED ERROR OCCURRED.
*                             THIS FIELD IS ZERO IF CCH HAS NOT
*                             CREATED AN ERPIB FOR THE ERP'S.
PCCACHPF DC    XL1'00' -      PROGRAM FLAGS.  INDICATES THE SELECTION
*                             OR INTERRUPTION SEQUENCE WHEN THE CSW WAS
*                             STORED.
PCCACSIO EQU   X'80' -        THE CSW WAS STORED AFTER A START I/O
*                             INSTRUCTION WAS EXECUTED.
PCCACINT EQU   X'40' -        THE CSW WAS STORED AFTER AN I/O
*                             INTERRUPTION
PCCACTIO EQU   X'20' -        THE CSW WAS STORED AFTER A TEST I/O
*                             INSTRUCTION WAS EXECUTED.
PCCACHIO EQU   X'10' -        THE CSW WAS STORED AFTER A HALT I/O
*                             INSTRUCTION WAS EXECUTED
PCCARV37 EQU   X'08',,C'X' -  RESERVED
PCCACSNS EQU   X'04' -        THE SENSE DATA WAS STORED
PCCACCNT EQU   X'02' -        THE CSW COUNT IS VALID
PCCACNOR EQU   X'01' -        NO RETRY IS TO BE ATTEMPTED UNDER ANY
*                             CONDITIONS
PCCACHBL DC    XL1'00' -      PROBABLE SOURCE OF ERROR
PCCACCPU EQU   X'80' -        CPU ERROR
PCCACCHA EQU   X'40' -        CHANNEL ERROR
PCCACSCU EQU   X'20' -        STORAGE CONTROL UNIT ERROR
PCCACSTG EQU   X'10' -        STORAGE ERROR
PCCACCUE EQU   X'08' -        CONTROL UNIT ERROR
PCCARV38 EQU   X'04',,C'X' -  RESERVED
PCCARV39 EQU   X'02',,C'X' -  RESERVED
PCCARV40 EQU   X'01',,C'X' -  RESERVED
PCCACHVA DC    XL1'00' -      VALIDITY INDICATORS.  WHEN THE DESIGNATED
*                             FIELD IS STORED BY THE CHANNEL WITH THE
*                             CORRECT CONTENTS THE VALIDITY BIT IS ONE.
*                             THE VALIDITY BIT FOR NON-STORED FIELDS
*                             IS MEANINGLESS.
PCCACITF EQU   X'80' -        INTERFACE ADDRESS IS VALID
PCCARV41 EQU   X'40',,C'X' -  RESERVED
PCCARV42 EQU   X'20',,C'X' -  RESERVED
PCCACSQV EQU   X'10' -        SEQUENCE CODE IS VALID
PCCACUNS EQU   X'08' -        UNIT STATUS IS VALID
PCCACCMD EQU   X'04' -        COMMAND ADDRESS IS VALID.  THE CSW
*                             CONTAINS A VALID COMMAND ADDRESS.
PCCACCHV EQU   X'02' -        CHANNEL ADDRESS IS VALID
PCCACDAV EQU   X'01' -        DEVICE ADDRESS IS VALID
PCCACHTS DC    XL1'00' -      TERMINATION AND SEQUENCE (RETRY) CODES
PCCACTEC EQU   X'C0' -        TWO-BIT TERMINATION CODE.  THIS CODE
*                             SPECIFIES THE TERMINATION SIGNALS USED ON
*                             THE I/O INTERFACE AFTER THE CHANNEL
*                             DETECTED THE ERROR.  THIS FIELD HAS
*                             MEANING ONLY WHEN ICC OR CCC IS INDICATED
*                             IN THE CSW.  THE FOLLOWING 4 EQU'S ARE
*                             THE VALUES FOR TERMINATION CODE.
PCCACTC0 EQU   X'00' -        INTERFACE DISCONNECT
PCCACTC1 EQU   X'40' -        STOP, STACK OR NORMAL TERMINATION
PCCACTC2 EQU   X'80' -        SELECTIVE RESET
PCCACTC3 EQU   X'C0' -        SYSTEM RESET
PCCARV43 EQU   X'20',,C'X' -  RESERVED
PCCARV44 EQU   X'10',,C'X' -  RESERVED
PCCACDIN EQU   X'08' -        I/O ERROR ALERT
PCCACSEQ EQU   X'07' -        THREE-BIT SEQUENCE CODE.  THESE CODES
*                             HAVE CHANNEL-DEPENDENT MEANINGS.
PCCACHS1 DC    XL1'00' -      CCH INTERNAL SWITCH 1
PCCACCMP EQU   X'80' -        COMMAND REGISTER PARITY IS VALID
PCCACNRE EQU   X'40' -        CCH WILL NOT CREATE A RECORD FOR THIS
*                             ERROR                              MDC006
PCCACFRR EQU   X'20' -        THE CCH FRR IS IN THE STACK        MDC007
PCCACNLS EQU   X'10' -        CCH IS TO PERFORM THE RECORD FUNCTION
*                             ONLY.  AN ERPIB IS NOT TO BE PLACED IN
*                             THE EWA.
PCCACAND EQU   X'08' -        ATTENTION HAS BEEN PRESENTED
PCCACIBC EQU   X'04' -        AN ERPIB FOR THIS ERROR HAS ALREADY BEEN
*                             CREATED
PCCACUCB EQU   X'02' -        UCB INVALID BIT
PCCARV47 EQU   X'01',,C'X' -  RESERVED
PCCACHS2 DC    XL1'00' -      CCH INTERNAL SWITCH 2
PCCACIOR EQU   X'80' -        I/O RESTART FUNCTION REQUIRED
PCCACALT EQU   X'40' -        THE ALTERNATE RETURN TO IOS IS TO BE USED
PCCACMOD EQU   X'20' -        NO MODULE IS AVAILABLE TO ANALYZE THE
*                             CHANNEL LOGOUT
PCCACNLG EQU   X'10' -        CCH DETECTED A FAILURE TO LOG OR FAILURE
*                             TO STORE AN ECSW CONDITION
PCCACURC EQU   X'08' -        THE STIDC FIELD OF THE CAT ENTRY IS
*                             VALID BUT NOT THAT OF A SUPPORTED
*                             CHANNEL                            MDC011
PCCACCRA EQU   X'04' -        CHANNEL RECONFIGURATION HARDWARE ACTIVE
*                             FOR THE CHANNEL  (MDC300)        @Y30CQ9A
PCCARV50 EQU   X'02',,C'X' -  RESERVED
PCCARV51 EQU   X'01',,C'X' -  RESERVED
PCCACHRB DC    XL1'00' -      CCH RECORD BYTE
PCCACSIB EQU   X'80' -        ERROR ON SIO
PCCACINB EQU   X'40' -        ERROR ON INTERRUPT
PCCACTIB EQU   X'20' -        ERROR ON TIO
PCCACHIB EQU   X'10' -        ERROR ON HIO
PCCARV52 EQU   X'08',,C'X' -  RESERVED
PCCACSNB EQU   X'04' -        SENSE DATA STORED
PCCACCVB EQU   X'02' -        COUNT VALID
PCCACNRB EQU   X'01' -        NO RETRY
PCCAIOSI DC    XL1'00' -      IOS INTERCEPT BYTE
PCCACHW1 DC    F'0' -         CCH WORK AREA 1
PCCACHW2 DC    F'0' -         CCH WORK AREA 2
PCCALOGL DC    H'0' -         LENGTH OF CHANNEL LOGOUT FOR CURRENT
*                             ERROR  (MDC305)                  @G51BP9A
PCCACELL DC    H'0' -         MAXIMUM LENGTH OF I/O EXTENDED LOGOUT
*                             (IOEL) AREA  (MDC313)            @G51BP9A
PCCALGP1 DC    XL1'00' -      LOGOUT PARITY AREA 1  (MDC306)   @G51BP9A
PCCALGP2 DC    XL1'00' -      LOGOUT PARITY AREA 2  (MDC307)   @G51BP9A
PCCACHPB DC    FL1'0' -       LOGOUT PARITY BYTE COUNT
*                             (MDC308)                         @G51BP9A
PCCARV05 DC    XL1'00' -      RESERVED FOR CCH  (MDC309)       @G51BP9A
PCCACHF1 DC    XL1'00' -      CCH FOOTPRINT BYTE 1
PCCACF11 EQU   X'80' -        IOS GPR'S SAVED
PCCACF12 EQU   X'40' -        UCB ADDRESS IS ZERO
PCCACF13 EQU   X'20' -        ERPIB EXISTS
PCCACF14 EQU   X'10' -        IGFCCHSI ENTERED
PCCACF15 EQU   X'08' -        IGFCCHII ENTERED
PCCACF16 EQU   X'04' -        IGFCCHFE ENTERED
PCCACF17 EQU   X'02' -        IGFC60 ENTERED
PCCACF18 EQU   X'01' -        IGFC70 ENTERED
PCCACHF2 DC    XL1'00' -      CCH FOOTPRINT BYTE 2
PCCACF21 EQU   X'80' -        IGFC80 ENTERED
PCCACF22 EQU   X'40' -        IGFCIC ENTERED
PCCACF23 EQU   X'20' -        IGFCCHRD ENTERED                   MDC008
PCCACF24 EQU   X'10' -        IGFCCHMP ENTERED
PCCACF25 EQU   X'08' -        IGFCCHUC ENTERED
PCCACF26 EQU   X'04' -        IGFCCHAS ENTERED                   MDC009
PCCACF27 EQU   X'02' -        IGFCCHIO ENTERED
PCCACF28 EQU   X'01' -        EXIT CCH
PCCACHF3 DC    XL1'00' -      CCH FOOTPRINT BYTE 3
PCCAISRB EQU   X'80' -        SRB FOR IECVIRST SCHEDULED
*                             (MDC321)                         @G51BP9A
PCCASLCK EQU   X'40' -        SPACE ALLOCATION LOCK HELD BY CCH
*                             (MDC322)                         @G51BP9A
PCCARV66 EQU   X'20',,C'X' -  RESERVED
PCCARV67 EQU   X'10',,C'X' -  RESERVED
PCCARV68 EQU   X'08',,C'X' -  RESERVED
PCCARV69 EQU   X'04',,C'X' -  RESERVED
PCCARV70 EQU   X'02',,C'X' -  RESERVED
PCCARV71 EQU   X'01',,C'X' -  RESERVED
PCCACHF4 DC    XL1'00' -      CCH FOOTPRINT BYTE 4
PCCARV72 EQU   X'80',,C'X' -  RESERVED
PCCARV73 EQU   X'40',,C'X' -  RESERVED
PCCARV74 EQU   X'20',,C'X' -  RESERVED
PCCARV75 EQU   X'10',,C'X' -  RESERVED
PCCARV76 EQU   X'08',,C'X' -  RESERVED
PCCARV77 EQU   X'04',,C'X' -  RESERVED
PCCARV78 EQU   X'02',,C'X' -  RESERVED
PCCARV79 EQU   X'01',,C'X' -  RESERVED
PCCACHSV DC    3F'0' -        CCH INTERNAL SAVE AREA.  FIRST WORD
*                             CONTAINS THE ADDRESS OF THE CURRENT CCH
*                             RECORD BUFFER                      MDC010
PCCACHID DC    XL8'00' -      STORE CHANNEL ID WORK AREA
PCCALOGA DC    A(0) -         ADDRESS OF CHANNEL LOGOUT          MDC004
PCCARV54 DC    A(0) -         RESERVED
PCCARV55 DC    A(0) -         RESERVED
PCCARV56 DC    A(0) -         RESERVED
PCCARV57 DC    A(0) -         RESERVED
PCCARV58 DC    A(0) -         RESERVED
PCCARV59 DC    A(0) -         RESERVED
PCCARV60 DC    A(0) -         RESERVED
PCCARV61 DC    A(0) -         RESERVED
PCCARV62 DC    A(0) -         RESERVED
PCCARV63 DC    A(0) -         RESERVED
PCCAATTR DC    XL1'00' -      PROCESSOR ATTRIBUTES  (MDC302)   @G47AN9A
PCCACPUM EQU   X'80' -        INDICATOR THAT DEAD CPU HAD A MALFUNCTION
*                             (MDC301)                         @G47AN9A
PCCAIO   EQU   X'40' -        PROCESSOR HAS I/O CAPABILITY
*                             (MDC303)                         @G47AN9A
PCCAR100 EQU   X'20',,C'X' -  RESERVED                         @G47AN9A
PCCAR101 EQU   X'10',,C'X' -  RESERVED                         @G47AN9A
PCCAR102 EQU   X'08',,C'X' -  RESERVED                         @G47AN9A
PCCAR103 EQU   X'04',,C'X' -  RESERVED                         @G47AN9A
PCCAR104 EQU   X'02',,C'X' -  RESERVED                         @G47AN9A
PCCAR105 EQU   X'01',,C'X' -  RESERVED                         @G47AN9A
PCCARV01 DC    XL1'00' -      RESERVED
PCCARV35 DC    H'0' -         RESERVED
PCCARV36 DC    F'0' -         RESERVED
PCCACAT  DC    XL128'00' -    CHANNEL AVAILABILITY TABLE (16 CHANNELS,
*                             8 BYTES PER CHANNEL)               MDC005
         DC    XL72'00' -     RESERVED
         MEND  , -   */
*%PCCAL2 : ;
*
*DECLARE
*  1 PCCA     BASED(PCCAPTR) BDY(DWORD),
*   2 PCCAPCCA    CHAR(4) BDY(WORD),     /* CONTROL BLOCK ACRONYM IN
*                                           EBCDIC                   */
*   2 PCCACPID    CHAR(12) BDY(WORD),    /* CPU ID (CONTAINS SERIAL
*                                           NUMBER)                  */
*   2 PCCACPUA    PTR(15),               /* PHYSICAL CPU ADDRESS     */
*   2 PCCACAFM    BIT(16) BDY(WORD,3),   /* BIT MASK CORRESPONDING TO
*                                           PHYSICAL CPU ADDRESS     */
*   2 PCCATQEP    PTR(31),               /* TQE POINTER              */
*   2 PCCAPSAV    PTR(31),               /* VIRTUAL ADDRESS OF PSA   */
*   2 PCCAPSAR    PTR(31),               /* REAL ADDRESS OF PSA      */
*   2 PCCARV81    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV82    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV83    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV84    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV85    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV86    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV87    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV88    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV89    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV90    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV91    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV92    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV93    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV94    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV95    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV96    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV97    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV98    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV99    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV9A    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV9B    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV9C    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV9D    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCARV9E    PTR(31),               /* RESERVED           MDC005*/
*   2 PCCATMST    CHAR(4) BDY(WORD),     /* TIMER STATUS BYTES       */
*    3 PCCATMFL    BIT(8),               /* FIRST BYTE OF PCCATMST   */
*     4 PCCAINIT BIT(1),                 /* ENTRY HAS BEEN
*                                           INITIALIZED              */
*     4 PCCASYNC BIT(1),                 /* CLOCK OUT OF
*                                           SYNCHRONIZATION          */
*     4 PCCAVKIL BIT(1),                 /* VARY CPU SHOULD BE
*                                           CANCELLED                */
*     4 PCCAMCC  BIT(1),                 /* PROCESSING FOR
*                                           PERMANENTLY DAMAGED CLOCK
*                                           COMPARATOR MUST BE DONE  */
*     4 PCCAMINT BIT(1),                 /* PROCESSING FOR CPU TIMER
*                                           MUST BE DONE             */
*     4 PCCARV02 BIT(1),                 /* RESERVED                 */
*     4 PCCARV03 BIT(1),                 /* RESERVED                 */
*     4 PCCARV04 BIT(1),                 /* RESERVED                 */
*    3 PCCATODE    PTR(8),               /* TOD CLOCK ERROR FLAGS    */
*     4 PCCANUTD BIT(1),                 /* CLOCK CANNOT BE USED     */
*     4 PCCANFTD BIT(1),                 /* CLOCK SHOULD NOT BE RESET*/
*     4 PCCACTTD BIT(6),                 /* ERROR COUNT              */
*    3 PCCACCE     PTR(8),               /* FLAGS FOR CLOCK
*                                           COMPARATOR               */
*     4 PCCANUCC BIT(1),                 /* CLOCK COMPARATOR CANNOT
*                                           BE USED                  */
*     4 PCCANFCC BIT(1),                 /* CLOCK COMPARATOR SHOULD
*                                           NOT BE RESET             */
*     4 PCCACTCC BIT(6),                 /* ERROR COUNT              */
*    3 PCCAINTE    PTR(8),               /* FLAGS FOR CPU TIMER      */
*     4 PCCANUIN BIT(1),                 /* CPU TIMER CANNOT BE USED */
*     4 PCCANFIN BIT(1),                 /* CPU TIMER SHOULD NOT BE
*                                           RESET                    */
*     4 PCCACTIN BIT(6),                 /* ERROR COUNT              */
*   2 PCCARPB     FIXED(31),             /* EXTERNAL CALL SIGP BUFFER*/
*   2 PCCAEMSB    CHAR(16) BDY(DWORD),   /* EMERGENCY SIGNAL SIGP
*                                           BUFFER                   */
*    3 PCCAEMSI    CHAR(4) BDY(WORD),    /* FIRST WORD OF EMS BUFFER */
*     4 PCCARISP    BIT(8),              /* CONTAINS PARALLEL/SERIAL
*                                           REQUEST INDICATOR FOR
*                                           REMOTE IMMEDIATE SIGNAL  */
*      5 PCCAPARL BIT(1),                /* PARALLEL REQUEST   MDC002*/
*      5 PCCASERL BIT(1),                /* SERIAL REQUEST     MDC003*/
*      5 PCCARV06 BIT(1),                /* RESERVED                 */
*      5 PCCARV07 BIT(1),                /* RESERVED                 */
*      5 PCCARV08 BIT(1),                /* RESERVED                 */
*      5 PCCARV09 BIT(1),                /* RESERVED                 */
*      5 PCCARV10 BIT(1),                /* RESERVED                 */
*      5 PCCARV11 BIT(1),                /* RESERVED                 */
*     4 PCCAEMS2    BIT(8),              /* SECOND BYTE OF PCCAEMSI  */
*      5 PCCARV12 BIT(1),                /* RESERVED                 */
*      5 PCCARV13 BIT(1),                /* RESERVED                 */
*      5 PCCARV14 BIT(1),                /* RESERVED                 */
*      5 PCCARV15 BIT(1),                /* RESERVED                 */
*      5 PCCARV16 BIT(1),                /* RESERVED                 */
*      5 PCCARV17 BIT(1),                /* RESERVED                 */
*      5 PCCARV18 BIT(1),                /* RESERVED                 */
*      5 PCCARV19 BIT(1),                /* RESERVED                 */
*     4 PCCAEMS3    BIT(8),              /* THIRD BYTE OF PCCAEMSI   */
*      5 PCCARV20 BIT(1),                /* RESERVED                 */
*      5 PCCARV21 BIT(1),                /* RESERVED                 */
*      5 PCCARV22 BIT(1),                /* RESERVED                 */
*      5 PCCARV23 BIT(1),                /* RESERVED                 */
*      5 PCCARV24 BIT(1),                /* RESERVED                 */
*      5 PCCARV25 BIT(1),                /* RESERVED                 */
*      5 PCCARV26 BIT(1),                /* RESERVED                 */
*      5 PCCARV27 BIT(1),                /* RESERVED                 */
*     4 PCCARMSB    BIT(8),              /* CONTAINS RMS INDICATOR   */
*      5 PCCARV28 BIT(1),                /* RESERVED                 */
*      5 PCCARV29 BIT(1),                /* RESERVED                 */
*      5 PCCARV30 BIT(1),                /* RESERVED                 */
*      5 PCCARV31 BIT(1),                /* RESERVED                 */
*      5 PCCARV32 BIT(1),                /* RESERVED                 */
*      5 PCCARV33 BIT(1),                /* RESERVED                 */
*      5 PCCARV34 BIT(1),                /* RESERVED                 */
*      5 PCCARMS  BIT(1),                /* SIGP WAS ISSUED VIA RMS  */
*    3 PCCAEMSP    PTR(31),              /* REMOTE IMMEDIATE SIGNAL
*                                           PARAMETER ADDRESS        */
*    3 PCCAEMSE    PTR(31),              /* REMOTE IMMEDIATE SIGNAL
*                                           RECEIVING ROUTINE ENTRY
*                                           POINT ADDRESS            */
*    3 PCCAEMSA    PTR(31),              /* PCCA ADDRESS OF THE
*                                           RECEIVING ROUTINE        */
*   2 PCCAPWAV    PTR(31),               /* VIRTUAL ADDRESS OF MCH
*                                           PROCESSOR WORK AREA      */
*   2 PCCAPWAR    PTR(31),               /* REAL ADDRESS OF MCH
*                                           PROCESSOR WORK AREA      */
*   2 PCCALRBV    PTR(31),               /* VIRTUAL ADDRESS OF MCH
*                                           LOGREC BUFFER            */
*   2 PCCALRBR    PTR(31),               /* REAL ADDRESS OF MCH
*                                           LOGREC BUFFER            */
*   2 PCCAELAD    PTR(31),               /* VIRTUAL ADDRESS OF I/O
*                                           EXTENDED LOGOUT (IOEL)
*                                           AREA  (MDC310)   @G51BP9A*/
*   2 PCCAELBA    PTR(31),               /* VIRTUAL ADDRESS OF CCH
*                                           LOGOUT BUFFER
*                                           (MDC311)         @G51BP9A*/
*   2 PCCACCHM    PTR(31),               /* VIRTUAL ADDRESS OF CCH
*                                           MESSAGE BUFFER
*                                           (MDC312)         @G51BP9A*/
*   2 PCCASRB     CHAR(44) BDY(WORD),    /* SRB FOR CCH TO SCHEDULE
*                                           IECVIRST TO PROCESS
*                                           CHANNEL ERRORS
*                                           (MDC314)         @G51BP9A*/
*   2 PCCACHAN    BIT(8),                /* FLAG BYTE FOR CCH-IOS
*                                           CHANNEL RECOVERY
*                                           COMMUNICATION
*                                           (MDC315)         @G51BP9A*/
*    3 PCCAIRST BIT(1),                  /* IECVIRST IS PROCESSING
*                                           CHANNEL ERRORS DETECTED
*                                           DURING AN EXTERNAL
*                                           MACHINE CHECK
*                                           (MDC316)         @G51BP9A*/
*    3 PCCAEXDM BIT(1),                  /* WHILE PCCAIRST BIT WAS
*                                           SET, MORE CHANNEL ERRORS
*                                           WERE DETECTED WHILE
*                                           PROCESSING ANOTHER
*                                           EXTERNAL DAMAGE MACHINE
*                                           CHECK  (MDC317)  @G51BP9A*/
*    3 PCCAR107 BIT(1),                  /* RESERVED         @G51BP9A*/
*    3 PCCAR108 BIT(1),                  /* RESERVED         @G51BP9A*/
*    3 PCCAR109 BIT(1),                  /* RESERVED         @G51BP9A*/
*    3 PCCAR110 BIT(1),                  /* RESERVED         @G51BP9A*/
*    3 PCCAR111 BIT(1),                  /* RESERVED         @G51BP9A*/
*    3 PCCAR112 BIT(1),                  /* RESERVED         @G51BP9A*/
*   2 PCCASRBL    CHAR(1),               /* LOCK BYTE FOR
*                                           COMMUNICATING CHANNEL
*                                           ERRORS BETWEEN CCH AND
*                                           IOS  (MDC318)    @G51BP9A*/
* %PCCASRBA='''00''X';                   /* SRB IS AVAILABLE FOR
*                                           SCHEDULING
*                                           (MDC319)         @G51BP9A*/
* %PCCASRBN='''FF''X';                   /* SRB IS NOT AVAILABLE FOR
*                                           SCHEDULING
*                                           (MDC320)         @G51BP9A*/
*   2 PCCAR113    FIXED(15),             /* RESERVED
*                                           (MDC304)         @G51BP9A*/
*   2 PCCAR106    CHAR(52) BDY(WORD),    /* RESERVED
*                                           (MDC304)         @G51BP9A*/
*   2 PCCAWERP    CHAR(8) BDY(DWORD),    /* WORK ERPIB FOR CCH       */
*    3 PCCACHUB    PTR(31),              /* UCB ADDRESS OF THE DEVICE
*                                           IN USE WHEN THE CHANNEL-
*                                           DETECTED ERROR OCCURRED.
*                                           THIS FIELD IS ZERO IF CCH
*                                           HAS NOT CREATED AN ERPIB
*                                           FOR THE ERP'S.           */
*    3 PCCACHPF    BIT(8),               /* PROGRAM FLAGS.  INDICATES
*                                           THE SELECTION OR
*                                           INTERRUPTION SEQUENCE
*                                           WHEN THE CSW WAS STORED. */
*     4 PCCACSIO BIT(1),                 /* THE CSW WAS STORED AFTER
*                                           A START I/O INSTRUCTION
*                                           WAS EXECUTED             */
*     4 PCCACINT BIT(1),                 /* THE CSW WAS STORED AFTER
*                                           AN I/O INTERRUPTION      */
*     4 PCCACTIO BIT(1),                 /* THE CSW WAS STORED AFTER
*                                           A TEST I/O INSTRUCTION
*                                           WAS EXECUTED             */
*     4 PCCACHIO BIT(1),                 /* THE CSW WAS STORED AFTER
*                                           A HALT I/O INSTRUCTION
*                                           WAS EXECUTED             */
*     4 PCCARV37 BIT(1),                 /* RESERVED                 */
*     4 PCCACSNS BIT(1),                 /* THE SENSE DATA WAS STORED*/
*     4 PCCACCNT BIT(1),                 /* THE CSW COUNT IS VALID   */
*     4 PCCACNOR BIT(1),                 /* NO RETRY IS TO BE
*                                           ATTEMPTED UNDER ANY
*                                           CONDITIONS               */
*    3 PCCACHBL    BIT(8),               /* PROBABLE SOURCE OF ERROR */
*     4 PCCACCPU BIT(1),                 /* CPU ERROR                */
*     4 PCCACCHA BIT(1),                 /* CHANNEL ERROR            */
*     4 PCCACSCU BIT(1),                 /* STORAGE CONTROL UNIT
*                                           ERROR                    */
*     4 PCCACSTG BIT(1),                 /* STORAGE ERROR            */
*     4 PCCACCUE BIT(1),                 /* CONTROL UNIT ERROR       */
*     4 PCCARV38 BIT(1),                 /* RESERVED                 */
*     4 PCCARV39 BIT(1),                 /* RESERVED                 */
*     4 PCCARV40 BIT(1),                 /* RESERVED                 */
*    3 PCCACHVA    BIT(8),               /* VALIDITY INDICATORS.  WHEN
*                                           THE DESIGNATED FIELD IS
*                                           STORED BY THE CHANNEL
*                                           WITH THE CORRECT CONTENTS
*                                           THE VALIDITY BIT IS ONE.
*                                           THE VALIDITY BIT FOR
*                                           NON-STORED FIELDS IS
*                                           MEANINGLESS.             */
*     4 PCCACITF BIT(1),                 /* INTERFACE ADDRESS IS
*                                           VALID                    */
*     4 PCCARV41 BIT(1),                 /* RESERVED                 */
*     4 PCCARV42 BIT(1),                 /* RESERVED                 */
*     4 PCCACSQV BIT(1),                 /* SEQUENCE CODE IS VALID   */
*     4 PCCACUNS BIT(1),                 /* UNIT STATUS IS VALID     */
*     4 PCCACCMD BIT(1),                 /* COMMAND ADDRESS IS VALID.
*                                           THE CSW CONTAINS A VALID
*                                           COMMAND ADDRESS.         */
*     4 PCCACCHV BIT(1),                 /* CHANNEL ADDRESS IS VALID */
*     4 PCCACDAV BIT(1),                 /* DEVICE ADDRESS IS VALID  */
*    3 PCCACHTS    BIT(8),               /* TERMINATION AND SEQUENCE
*                                           (RETRY) CODES            */
*     4 PCCACTEC BIT(2),                 /* TERMINATION CODE.  THIS
*                                           CODE SPECIFIES THE
*                                           TERMINATION SIGNALS USED
*                                           ON THE I/O INTERFACE
*                                           AFTER THE CHANNEL DETECTED
*                                           THE ERROR.  THIS FIELD
*                                           HAS MEANING ONLY WHEN ICC
*                                           OR CCC IS INDICATED IN
*                                           THE CSW.                 */
*%PCCACTC0='''00''B';                    /* INTERFACE DISCONNECT     */
*%PCCACTC1='''01''B';                    /* STOP, STACK OR NORMAL
*                                           TERMINATION              */
*%PCCACTC2='''10''B';                    /* SELECTIVE RESET          */
*%PCCACTC3='''11''B';                    /* SYSTEM RESET             */
*     4 PCCARV43 BIT(1),                 /* RESERVED                 */
*     4 PCCARV44 BIT(1),                 /* RESERVED                 */
*     4 PCCACDIN BIT(1),                 /* I/O ERROR ALERT          */
*     4 PCCACSEQ BIT(3),                 /* SEQUENCE CODE.  THESE
*                                           CODES HAVE CHANNEL-
*                                           DEPENDENT MEANINGS.      */
*   2 PCCACHS1    BIT(8),                /* CCH INTERNAL SWITCH 1    */
*    3 PCCACCMP BIT(1),                  /* COMMAND REGISTER PARITY
*                                           IS VALID                 */
*    3 PCCACNRE BIT(1),                  /* CCH WILL NOT CREATE A
*                                           RECORD FOR THIS ERROR
*                                                              MDC006*/
*    3 PCCACFRR BIT(1),                  /* THE CCH FRR IS IN THE
*                                           STACK              MDC007*/
*    3 PCCACNLS BIT(1),                  /* CCH IS TO PERFORM THE
*                                           RECORD FUNCTION ONLY.
*                                           AN ERPIB IS NOT TO BE
*                                           PLACED IN THE EWA.       */
*    3 PCCACAND BIT(1),                  /* ATTENTION HAS BEEN
*                                           PRESENTED                */
*    3 PCCACIBC BIT(1),                  /* AN ERPIB FOR THIS ERROR
*                                           HAS ALREADY BEEN CREATED */
*    3 PCCACUCB BIT(1),                  /* UCB INVALID BIT          */
*    3 PCCARV47 BIT(1),                  /* RESERVED                 */
*   2 PCCACHS2    BIT(8),                /* CCH INTERNAL SWITCH 2    */
*    3 PCCACIOR BIT(1),                  /* I/O RESTART FUNCTION
*                                           REQUIRED                 */
*    3 PCCACALT BIT(1),                  /* THE ALTERNATE RETURN TO
*                                           IOS IS TO BE USED        */
*    3 PCCACMOD BIT(1),                  /* NO MODULE IS AVAILABLE TO
*                                           ANALYZE THE CHANNEL
*                                           LOGOUT                   */
*    3 PCCACNLG BIT(1),                  /* CCH DETECTED A FAILURE TO
*                                           LOG OR FAILURE TO STORE
*                                           AN ECSW CONDITION        */
*    3 PCCACURC BIT(1),                  /* THE STIDC FIELD OF THE
*                                           CAT ENTRY IS VALID BUT
*                                           NOT THAT OF A SUPPORTED
*                                           CHANNEL            MDC011*/
*    3 PCCACCRA BIT(1),                  /* CHANNEL RECONFIGURATION
*                                           HARDWARE ACTIVE FOR THE
*                                           CHANNEL (MDC300) @Y30CQ9A*/
*    3 PCCARV50 BIT(1),                  /* RESERVED                 */
*    3 PCCARV51 BIT(1),                  /* RESERVED                 */
*   2 PCCACHRB    BIT(8),                /* CCH RECORD BYTE          */
*    3 PCCACSIB BIT(1),                  /* ERROR ON SIO             */
*    3 PCCACINB BIT(1),                  /* ERROR ON INTERRUPT       */
*    3 PCCACTIB BIT(1),                  /* ERROR ON TIO             */
*    3 PCCACHIB BIT(1),                  /* ERROR ON HIO             */
*    3 PCCARV52 BIT(1),                  /* RESERVED                 */
*    3 PCCACSNB BIT(1),                  /* SENSE DATA STORED        */
*    3 PCCACCVB BIT(1),                  /* COUNT VALID              */
*    3 PCCACNRB BIT(1),                  /* NO RETRY                 */
*   2 PCCAIOSI    CHAR(1),               /* IOS INTERCEPT BYTE       */
*   2 PCCACHW1    FIXED(31),             /* CCH WORK AREA 1          */
*   2 PCCACHW2    FIXED(31),             /* CCH WORK AREA 2          */
*   2 PCCALOGL    FIXED(15),             /* LENGTH OF CHANNEL LOGOUT
*                                           FOR CURRENT ERROR
*                                           (MDC305)         @G51BP9A*/
*   2 PCCACELL    FIXED(15),             /* MAXIMUM LENGTH OF I/O
*                                           EXTENDED LOGOUT (IOEL)
*                                           AREA  (MDC313)   @G51BP9A*/
*   2 PCCALGP1    CHAR(1),               /* LOGOUT PARITY AREA 1
*                                           (MDC306)         @G51BP9A*/
*   2 PCCALGP2    CHAR(1),               /* LOGOUT PARITY AREA 2
*                                           (MDC307)         @G51BP9A*/
*   2 PCCACHPB    PTR(8),                /* LOGOUT PARITY BYTE COUNT
*                                           (MDC308)         @G51BP9A*/
*   2 PCCARV05    CHAR(1),               /* RESERVED FOR CCH
*                                           (MDC309)         @G51BP9A*/
*   2 PCCACHF1    BIT(8),                /* CCH FOOTPRINT BYTE 1     */
*    3 PCCACF11 BIT(1),                  /* IOS GPR'S SAVED          */
*    3 PCCACF12 BIT(1),                  /* UCB ADDRESS IS ZERO      */
*    3 PCCACF13 BIT(1),                  /* ERPIB EXISTS             */
*    3 PCCACF14 BIT(1),                  /* IGFCCHSI ENTERED         */
*    3 PCCACF15 BIT(1),                  /* IGFCCHII ENTERED         */
*    3 PCCACF16 BIT(1),                  /* IGFCCHFE ENTERED         */
*    3 PCCACF17 BIT(1),                  /* IGFC60 ENTERED           */
*    3 PCCACF18 BIT(1),                  /* IGFC70 ENTERED           */
*   2 PCCACHF2    BIT(8),                /* CCH FOOTPRINT BYTE 2     */
*    3 PCCACF21 BIT(1),                  /* IGFC80 ENTERED           */
*    3 PCCACF22 BIT(1),                  /* IGFCIC ENTERED           */
*    3 PCCACF23 BIT(1),                  /* IGFCCHRD ENTERED   MDC008*/
*    3 PCCACF24 BIT(1),                  /* IGFCCHMP ENTERED         */
*    3 PCCACF25 BIT(1),                  /* IGFCCHUC ENTERED         */
*    3 PCCACF26 BIT(1),                  /* IGFCCHAS ENTERED   MDC009*/
*    3 PCCACF27 BIT(1),                  /* IGFCCHIO ENTERED         */
*    3 PCCACF28 BIT(1),                  /* EXIT CCH                 */
*   2 PCCACHF3    BIT(8),                /* CCH FOOTPRINT BYTE 3     */
*    3 PCCAISRB BIT(1),                  /* SRB FOR IECVIRST
*                                           SCHEDULED
*                                           (MDC321)         @G51BP9A*/
*    3 PCCASLCK BIT(1),                  /* SPACE ALLOCATION LOCK
*                                           HELD BY CCH
*                                           (MDC322)         @G51BP9A*/
*    3 PCCARV66 BIT(1),                  /* RESERVED                 */
*    3 PCCARV67 BIT(1),                  /* RESERVED                 */
*    3 PCCARV68 BIT(1),                  /* RESERVED                 */
*    3 PCCARV69 BIT(1),                  /* RESERVED                 */
*    3 PCCARV70 BIT(1),                  /* RESERVED                 */
*    3 PCCARV71 BIT(1),                  /* RESERVED                 */
*   2 PCCACHF4    BIT(8),                /* CCH FOOTPRINT BYTE 4     */
*    3 PCCARV72 BIT(1),                  /* RESERVED                 */
*    3 PCCARV73 BIT(1),                  /* RESERVED                 */
*    3 PCCARV74 BIT(1),                  /* RESERVED                 */
*    3 PCCARV75 BIT(1),                  /* RESERVED                 */
*    3 PCCARV76 BIT(1),                  /* RESERVED                 */
*    3 PCCARV77 BIT(1),                  /* RESERVED                 */
*    3 PCCARV78 BIT(1),                  /* RESERVED                 */
*    3 PCCARV79 BIT(1),                  /* RESERVED                 */
*   2 PCCACHSV  (3) FIXED(31),           /* CCH INTERNAL SAVE AREA.
*                                           FIRST WORD CONTAINS THE
*                                           ADDRESS OF THE CURRENT
*                                           CCH RECORD BUFFER  MDC010*/
*   2 PCCACHID    CHAR(8) BDY(WORD),     /* STORE CHANNEL ID WORK
*                                           AREA                     */
*   2 PCCALOGA    PTR(31),               /* ADDRESS OF CHANNEL
*                                           LOGOUT             MDC004*/
*   2 PCCARV54    PTR(31),               /* RESERVED                 */
*   2 PCCARV55    PTR(31),               /* RESERVED                 */
*   2 PCCARV56    PTR(31),               /* RESERVED                 */
*   2 PCCARV57    PTR(31),               /* RESERVED                 */
*   2 PCCARV58    PTR(31),               /* RESERVED                 */
*   2 PCCARV59    PTR(31),               /* RESERVED                 */
*   2 PCCARV60    PTR(31),               /* RESERVED                 */
*   2 PCCARV61    PTR(31),               /* RESERVED                 */
*   2 PCCARV62    PTR(31),               /* RESERVED                 */
*   2 PCCARV63    PTR(31),               /* RESERVED                 */
*   2 PCCAATTR    BIT(8),                /* PROCESSOR ATTRIBUTES
*                                           (MDC302)         @G47AN9A*/
*    3 PCCACPUM BIT(1),                  /* INDICATOR THAT DEAD CPU
*                                           HAD A MALFUNCTION
*                                           (MDC301)         @G47AN9A*/
*    3 PCCAIO   BIT(1),                  /* PROCESSOR HAS I/O
*                                           CAPABILITY
*                                           (MDC303)         @G47AN9A*/
*    3 PCCAR100 BIT(1),                  /* RESERVED         @G47AN9A*/
*    3 PCCAR101 BIT(1),                  /* RESERVED         @G47AN9A*/
*    3 PCCAR102 BIT(1),                  /* RESERVED         @G47AN9A*/
*    3 PCCAR103 BIT(1),                  /* RESERVED         @G47AN9A*/
*    3 PCCAR104 BIT(1),                  /* RESERVED         @G47AN9A*/
*    3 PCCAR105 BIT(1),                  /* RESERVED         @G47AN9A*/
*   2 PCCARV01    CHAR(1),               /* RESERVED                 */
*   2 PCCARV35    FIXED(15),             /* RESERVED                 */
*   2 PCCARV36    FIXED(31),             /* RESERVED                 */
*   2 PCCACAT     CHAR(128) BDY(DWORD),  /* CHANNEL AVAILABILITY
*                                           TABLE  (16 CHANNELS,
*                                           8 BYTES PER CHANNEL)
*                                                              MDC005*/
*   2 *           CHAR(72) BDY(DWORD);   /* RESERVED                 */
./ ADD NAME=IHAPCCAT
*
*        %GOTO PCCATL1;  /*
         MACRO
         IHAPCCAT &DSECT=YES   */
*%PCCATL1 : ;
*
*/* **************************************************************** */
*/*                                                                  */
*/*            PCCA VECTOR TABLE                                     */
*/*                                                                  */
*/*  OS/VS2 RELEASE 2, 06/28/72, LEVEL=2                             */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL  - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.      */
*/*             USING ON PCCAVT GIVES ADDRESSABILITY FOR ALL SYMBOLS.*/
*/*      PL/S - INCLUDE CVT TO DEFINE CVTPCCAT                       */
*/*                                                                  */
*/* **************************************************************** */
*%GOTO PCCATL2;   /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').PCCAT10
PCCAVT   DSECT
         AGO   .PCCAT20
.PCCAT10 ANOP
         DS    0D
PCCAVT   EQU   *
.PCCAT20 ANOP
PCCAT00P DC    A(0) -         ADDRESS OF PCCA FOR CPU 0
PCCAT01P DC    A(0) -         ADDRESS OF PCCA FOR CPU 1
PCCAT02P DC    A(0) -         ADDRESS OF PCCA FOR CPU 2
PCCAT03P DC    A(0) -         ADDRESS OF PCCA FOR CPU 3
PCCAT04P DC    A(0) -         ADDRESS OF PCCA FOR CPU 4
PCCAT05P DC    A(0) -         ADDRESS OF PCCA FOR CPU 5
PCCAT06P DC    A(0) -         ADDRESS OF PCCA FOR CPU 6
PCCAT07P DC    A(0) -         ADDRESS OF PCCA FOR CPU 7
PCCAT08P DC    A(0) -         ADDRESS OF PCCA FOR CPU 8
PCCAT09P DC    A(0) -         ADDRESS OF PCCA FOR CPU 9
PCCAT10P DC    A(0) -         ADDRESS OF PCCA FOR CPU 10
PCCAT11P DC    A(0) -         ADDRESS OF PCCA FOR CPU 11
PCCAT12P DC    A(0) -         ADDRESS OF PCCA FOR CPU 12
PCCAT13P DC    A(0) -         ADDRESS OF PCCA FOR CPU 13
PCCAT14P DC    A(0) -         ADDRESS OF PCCA FOR CPU 14
PCCAT15P DC    A(0) -         ADDRESS OF PCCA FOR CPU 15
         MEND  , -   */
*%PCCATL2 : ;
*
*DECLARE
*  1 PCCAVT   BASED(CVTPCCAT) BDY(DWORD),
*   2 PCCAT00P  (16) PTR(31);            /* ADDRESSES OF PCCA'S FOR
*                                           CPU'S 0-15               */
./ ADD NAME=IHAPDITE
*        %GOTO PDITEBSL;                                             /*
         MACRO
         IHAPDITE
**            PAGE DEVICE INFORMATION TABLE ENTRY
**
**       RELEASE 1 AOS, 11/3/71, LEVEL=1
**
PDITE1   DSECT , PDITEPTR
**   THE FOLLOWING IS A MACRO CALL FOR THE IOB, SINCE
**   IT COMPRISES THE FIRST BYTES OF THE PDITE.
**   A 'USING' SHOULD BE ISSUED ON 'IOBSTDRD' OR 'PDITE'
**   IN ORDER TO HAVE THE CORRECT DISPLACEMENT FOR THE
**   STANDARD PORTION OF THE MACRO.
**   THE BAL USER WILL HAVE TO INCLUDE THE MACRO LIBRARIES
**   FOR BOTH THE IOB AND PDITE, BUT MAY ONLY CALL THE
**   PDITE.  THE BSL USER WILL HAVE TO INCLUDE THE IOB
**   ALSO BECAUSE THE PDITE STRUCTURE GENERATED BY THIS
**   IHAPDITE MACRO IS BASED ON AN ADDRESS IN THE IOB ITSELF.
**   THE LOCATION COUNTER FROM 'IOBSTDRD' WILL REFLECT ONLY
**   A STANDARD SIZE IOB WITH THE DIRECT ACCESS SUFFIX.
         IEZIOB DSECT=NO
         ORG   IOBSEEK+8
**   START OF THE NON-IOB PORTION OF THE PDITE
PDITE    EQU   IOBSTDRD
PDITFLG1 DS    BL1 -           FLAG FIELD
PDITSSDV EQU   X'80' -         SET SELECTOR DEVICE INDICATOR
*                              WHEN 1 = SET SECTOR DEVICE
PDITMHDV EQU   X'40' -         MOVEABLE HEAD DEVICE INDICATOR
*                              WHEN 1 = MOVEABLE HEAD DEVICE,
*                              WHEN 0 = FIXED HEAD DEVICE.
PDITXCP  EQU   X'20' -         EXCP REQUIRED INDICATOR
*                              WHEN 1, THIS DEVICE NEEDS TO BE
*                              RESTARTED VIA EXCP, WHEN 0, THIS
*                              DEVICE IS CURRENTLY EXECUTING A
*                              CHANNEL PROGRAM.
PDITPON  EQU   X'10' -         PRIMARY SEARCH INDICATOR
*                              WHEN 1 = SLOT QUEUES ARE BEING
*                              SEARCHED FOR A PRIMARY SLOT.
*                              WHEN 0 = SLOT QUEUES ARE BEING
*                              SEARCHED FOR A SECONDARY SLOT.
PDITPOFF EQU   X'FF'-PDITPON - MASK TO TURN OFF PDITPON
PDITOAPF EQU   X'08' -         ONE APPENDED FLAG
*                              WHEN 1, A CHANNEL PROGRAM HAS
*                              BEEN APPENDED.
PDITOAOF EQU   X'FF'-PDITOAPF -MASK TO TURN OFF PDITOAPF
PDITMIOB EQU   X'04' -         MULTIPLE IOB INDICATOR
*                              WHEN 1, THIS IS A MULTIPLE
*                              EXPOSURE DEVICE.
PDITNOPS EQU   X'02' -         PRIMARY OR SECONDARY SLOT NOT FOUND
*                              WHEN 1, NEITHER PRIMARY NOR SECONDARY
*                              SLOTS FOUND ON SLOT QUEUE.
PDITACT  EQU   X'01' -         FLAG TO INDICATE THAT PAGING DEVICE
*                              IS ACTVIELY EXECUTING A CHANNEL
*                              PROGRAM
PDITINDX DS    CL1 -           APPARENT INDEX FOR PDITE BASE
*                              THIS FIELD * 4 AND SUBTRACTED
*                              FROM THE ADDRESS OF THE IOB FOR THIS
*                              EXPOSURE = ADDRESS OF BASE IOB FOR
*                              THIS DEVICE.
PDITIOBP DS    H -             INDEX TO BE ADDED TO CURRENT
*                              IOBC TO FIND IOB FOR NEXT
*                              EXPOSURE
PDITLACF DS    0AL4 -          FULLWORD REFERENCE FOR PDITLACP
PDITCPCT DS    FL1 -           COUNT OF CHANNEL PROGRAMS CHAINED
*                              TO THIS IOB AFTER A PCI HAS
*                              BEEN SET
PDITLACP DS    AL3 -           ADDRESS OF LAST CHANNEL PROGRAM
*                              ON THIS IOB'S ACTIVE CHAIN
PDITCOMN EQU   *-PDITE -       LENGTH OF THE COMMON PORTION OF THE
*                              PDITE WHICH IS REPEATED FOR EACH
*                              EXPOSURE.
**        THE FOLLOWING PORTION OF THE PDITE IS PRESENT ONLY
**        FOR THE FIRST EXPOSURE.  IT MUST BEGIN ON A
**        DOUBLE WORD BOUNDARY.
         ORG   PDITLACP+3
PDITDEB  DS    CL48 -          DEB FOR THIS DEVICE
PDITECB  DS    CL4 -           ECB FOR THIS DEVICE
PDITDCB  DS    CL4 -           DCB FOR THIS DEVICE
PDIT1SQ  DS    0AL4 -          FULLWORD REFERENCE FOR PDIT1SQA
PDITSCNT DS    FL1 -           COUNT OF SLOT QUEUES FOR
*                              THIS DEVICE
PDIT1SQA DS    AL3 -           ADDRESS OF SLOT QUEUE FOR
*                              FIRST SLOT FOR THIS DEVICE
PDITHSQ  DS    0AL4 -          FULLWORD REFERENCE FOR PDITHSQA
PDITSQCT DS    FL1 -           COUNT OF CHANNEL PROGRAMS ON
*                              SLOT QUEUE CONTAINING THE
*                              MOST CHANNEL PROGRAMS
PDITHSQA DS    AL3 -           ADDRESS OF THE SLOT QUEUE
*                              CONTAINING THE MOST CHANNEL
*                              PROGRAMS
PDITEND  DS    0C -            END OF PAGE DEVICE INFORMATION TABLE
PDITLEN  EQU   PDITEND-PDITE - LENGTH OF THE PDITE FOR THE
*                              FIRST EXPOSURE.
         MEND  , */
*%PDITEBSL:  ;
*/*           PAGE DEVICE INFORMATION TABLE ENTRY                    */
*
*/*      RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
*DECLARE
*  1 PDITE1   BASED(PDITEPTR);
*/*  THE FOLLOWING IS A MACRO CALL FOR THE IOB, SINCE                */
*/*  IT COMPRISES THE FIRST BYTES OF THE PDITE.                      */
*/*  A 'USING' SHOULD BE ISSUED ON 'IOBSTDRD' OR 'PDITE'             */
*/*  IN ORDER TO HAVE THE CORRECT DISPLACEMENT FOR THE               */
*/*  STANDARD PORTION OF THE MACRO.                                  */
*/*  THE BAL USER WILL HAVE TO INCLUDE THE MACRO LIBRARIES           */
*/*  FOR BOTH THE IOB AND PDITE, BUT MAY ONLY CALL THE               */
*/*  PDITE.  THE BSL USER WILL HAVE TO INCLUDE THE IOB               */
*/*  ALSO BECAUSE THE PDITE STRUCTURE GENERATED BY THIS              */
*/*  IHAPDITE MACRO IS BASED ON AN ADDRESS IN THE IOB ITSELF.        */
*/*  THE LOCATION COUNTER FROM 'IOBSTDRD' WILL REFLECT ONLY          */
*/*  A STANDARD SIZE IOB WITH THE DIRECT ACCESS SUFFIX.              */
*DECLARE 1 PDITES01
*      BASED(ADDR(IOBSEEK)+8),
*/*  START OF THE NON-IOB PORTION OF THE PDITE                       */
*   2 PDITFLG1    CHAR(1),               /* FLAG FIELD               */
*    3 PDITSSDV BIT(1),                  /* SET SELECTOR DEVICE
*                                           INDICATOR  WHEN 1 = SET
*                                           SECTOR DEVICE            */
*    3 PDITMHDV BIT(1),                  /* MOVEABLE HEAD DEVICE
*                                           INDICATOR  WHEN 1 =
*                                           MOVEABLE HEAD DEVICE,
*                                           WHEN 0 = FIXED HEAD
*                                           DEVICE.                  */
*    3 PDITXCP  BIT(1),                  /* EXCP REQUIRED INDICATOR
*                                           WHEN 1, THIS DEVICE
*                                           NEEDS TO BE  RESTARTED
*                                           VIA EXCP, WHEN 0, THIS
*                                           DEVICE IS CURRENTLY
*                                           EXECUTING A  CHANNEL
*                                           PROGRAM.                 */
*    3 PDITPON  BIT(1),                  /* PRIMARY SEARCH INDICATOR
*                                           WHEN 1 = SLOT QUEUES ARE
*                                           BEING  SEARCHED FOR A
*                                           PRIMARY SLOT.  WHEN 0 =
*                                           SLOT QUEUES ARE BEING
*                                           SEARCHED FOR A SECONDARY
*                                           SLOT.                    */
*    3 PDITOAPF BIT(1),                  /* ONE APPENDED FLAG  WHEN
*                                           1, A CHANNEL PROGRAM HAS
*                                           BEEN APPENDED.           */
*    3 PDITMIOB BIT(1),                  /* MULTIPLE IOB INDICATOR
*                                           WHEN 1, THIS IS A
*                                           MULTIPLE  EXPOSURE
*                                           DEVICE.                  */
*    3 PDITNOPS BIT(1),                  /* PRIMARY OR SECONDARY
*                                           SLOT NOT FOUND  WHEN 1,
*                                           NEITHER PRIMARY NOR
*                                           SECONDARY  SLOTS FOUND
*                                           ON SLOT QUEUE.           */
*    3 PDITACT  BIT(1),                  /* FLAG TO INDICATE THAT
*                                           PAGING DEVICE  IS
*                                           ACTVIELY EXECUTING A
*                                           CHANNEL  PROGRAM         */
*   2 PDITINDX    CHAR(1),               /* APPARENT INDEX FOR PDITE
*                                           BASE  THIS FIELD * 4 AND
*                                           SUBTRACTED  FROM THE
*                                           ADDRESS OF THE IOB FOR
*                                           THIS  EXPOSURE = ADDRESS
*                                           OF BASE IOB FOR  THIS
*                                           DEVICE.                  */
*   2 PDITIOBP    FIXED(15),             /* INDEX TO BE ADDED TO
*                                           CURRENT  IOBC TO FIND
*                                           IOB FOR NEXT  EXPOSURE   */
*   2 PDITLACF    PTR(31)  BDY(BYTE),    /* FULLWORD REFERENCE FOR
*                                           PDITLACP                 */
*    3 PDITCPCT    PTR(8),               /* COUNT OF CHANNEL
*                                           PROGRAMS CHAINED  TO
*                                           THIS IOB AFTER A PCI HAS
*                                           BEEN SET                 */
*    3 PDITLACP    PTR(24)  BDY(BYTE);   /* ADDRESS OF LAST CHANNEL
*                                           PROGRAM  ON THIS IOB'S
*                                           ACTIVE CHAIN             */
*/*                            PDITE WHICH IS REPEATED FOR EACH      */
*/*                            EXPOSURE.                             */
*/*       THE FOLLOWING PORTION OF THE PDITE IS PRESENT ONLY         */
*/*       FOR THE FIRST EXPOSURE.  IT MUST BEGIN ON A                */
*/*       DOUBLE WORD BOUNDARY.                                      */
*DECLARE 1 PDITES02
*      BASED(ADDR(PDITLACP)+3),
*   2 PDITDEB     CHAR(48),              /* DEB FOR THIS DEVICE      */
*   2 PDITECB     CHAR(4),               /* ECB FOR THIS DEVICE      */
*   2 PDITDCB     CHAR(4),               /* DCB FOR THIS DEVICE      */
*   2 PDIT1SQ     PTR(31)  BDY(BYTE),    /* FULLWORD REFERENCE FOR
*                                           PDIT1SQA                 */
*    3 PDITSCNT    PTR(8),               /* COUNT OF SLOT QUEUES FOR
*                                           THIS DEVICE              */
*    3 PDIT1SQA    PTR(24)  BDY(BYTE),   /* ADDRESS OF SLOT QUEUE
*                                           FOR   FIRST SLOT FOR
*                                           THIS DEVICE              */
*   2 PDITHSQ     PTR(31)  BDY(BYTE),    /* FULLWORD REFERENCE FOR
*                                           PDITHSQA                 */
*    3 PDITSQCT    PTR(8),               /* COUNT OF CHANNEL
*                                           PROGRAMS ON  SLOT QUEUE
*                                           CONTAINING THE  MOST
*                                           CHANNEL PROGRAMS         */
*    3 PDITHSQA    PTR(24)  BDY(BYTE);   /* ADDRESS OF THE SLOT
*                                           QUEUE   CONTAINING THE
*                                           MOST CHANNEL  PROGRAMS   */
*DECLARE 1 PDITEND (*) CHAR(1)   BASED
*  (ADDR(PDITES02)+LENGTH(PDITES02));
*                                        /* END OF PAGE DEVICE
*                                           INFORMATION TABLE        */
*/*                            FIRST EXPOSURE.                       */
./ ADD NAME=IHAPDTE
*        %GOTO PDTEBSL;                                              /*
         MACRO
         IHAPDTE
**             PAGE DEVICE TABLE ENTRY
**
**       RELEASE 1 AOS, 11/3/71, LEVEL=1
**
PDTE     DSECT , PDTPTR
PDTNO    DS    FL1 -           DEVICE NUMBER
PDTLSN   DS    FL1 -           NUMBER OF LAST SLOT ASSIGNED
PDTAPC   DS    H -             NUMBER OF AVAILABLE PAGES FOR THIS
*                              DEVICE
PDTLGN   DS    H -             NUMBER OF LAST GROUP USED
PDTSEL   DS    H -             SLOT ENTRY LENGTH
PDTALI   DS    FL1 -           ALTERNATE SLOT INCREMENT
PDTTG    DS    FL1 -           NUMBER OF TRACKS PER GROUP
PDTFL1   DS    BL1 -           FLAG FIELD
PDTDEVT1 EQU   X'80' -         PRIMARY/SECONDARY DEVICE TYPE
*                              WHEN 1 = PRIMARY DEVICE
*                              WHEN 0 = SECONDARY DEVICE TYPE
PDTDEVT2 EQU   X'40' -         FIXED/MOVEABLE HEAD TYPE
*                              WHEN 1 = FIXED HEAD DEVICE
*                              WHEN 0 = MOVEABLE HEAD DEVICE
PDTLAST  EQU   X'20' -         LAST PDTE FLAG
PDTBA    DS    CL5 -           BEGINNING CCHHR OF DATA SET
*                              ON THIS DEVICE
PDTR1    DS    AL2 -           RESERVED
PDTGC    DS    H -             NUMBER OF GROUPS PER CYLINDER
PDTCCVAF DS    0AL4 -          FULLWORD REFERENCE FOR PDTCCVA
PDTSG    DS    FL1 -           NUMBER OF SLOTS PER GROUP
PDTCCVA  DS    AL3 -           ADDRESS OF CYLINDER COUNT VECTOR
PDTBM    DS    0AL4 -          FULLWORD REFERENCE FOR PDTBMA
PDTR2    DS    CL1 -           RESERVED
PDTBMA   DS    AL3 -           ADDRESS OF BIT MAP FOR THIS DEVICE
PDTIOBF  DS    0AL4 -          FULLWORD REFERENCE FOR PDTIOB
PDTDT    DS    XL1 -           DEVICE TYPE FROM UCB
PDTIOB   DS    AL3 -           ADDRESS OF IOB FOR THIS DEVICE
PDTEND   DS    0C -            END OF PAGE DEVICE TABLE ENTRY
PDTLEN   EQU   PDTEND-PDTE -   LENGTH OF PAGE DEVICE TABLE ENTRY
         MEND  , */
*%PDTEBSL :  ;
*/*            PAGE DEVICE TABLE ENTRY                               */
*
*/*      RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
*DECLARE
*  1 PDTE     BASED(PDTPTR),
*   2 PDTNO       PTR(8),                /* DEVICE NUMBER            */
*   2 PDTLSN      PTR(8),                /* NUMBER OF LAST SLOT
*                                           ASSIGNED                 */
*   2 PDTAPC      FIXED(15),             /* NUMBER OF AVAILABLE
*                                           PAGES FOR THIS  DEVICE   */
*   2 PDTLGN      FIXED(15),             /* NUMBER OF LAST GROUP
*                                           USED                     */
*   2 PDTSEL      FIXED(15),             /* SLOT ENTRY LENGTH        */
*   2 PDTALI      PTR(8),                /* ALTERNATE SLOT INCREMENT */
*   2 PDTTG       PTR(8),                /* NUMBER OF TRACKS PER
*                                           GROUP                    */
*   2 PDTFL1      CHAR(1),               /* FLAG FIELD               */
*    3 PDTDEVT1 BIT(1),                  /* PRIMARY/SECONDARY DEVICE
*                                           TYPE  WHEN 1 = PRIMARY
*                                           DEVICE  WHEN 0 =
*                                           SECONDARY DEVICE TYPE    */
*    3 PDTDEVT2 BIT(1),                  /* FIXED/MOVEABLE HEAD TYPE
*                                           WHEN 1 = FIXED HEAD
*                                           DEVICE  WHEN 0 =
*                                           MOVEABLE HEAD DEVICE     */
*    3 PDTLAST  BIT(1),                  /* LAST PDTE FLAG           */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 PDTBA       CHAR(5),               /* BEGINNING CCHHR OF DATA
*                                           SET  ON THIS DEVICE      */
*   2 PDTR1       PTR(15)  BDY(BYTE),    /* RESERVED                 */
*   2 PDTGC       FIXED(15),             /* NUMBER OF GROUPS PER
*                                           CYLINDER                 */
*   2 PDTCCVAF    PTR(31)  BDY(BYTE),    /* FULLWORD REFERENCE FOR
*                                           PDTCCVA                  */
*    3 PDTSG       PTR(8),               /* NUMBER OF SLOTS PER
*                                           GROUP                    */
*    3 PDTCCVA     PTR(24)  BDY(BYTE),   /* ADDRESS OF CYLINDER
*                                           COUNT VECTOR             */
*   2 PDTBM       PTR(31)  BDY(BYTE),    /* FULLWORD REFERENCE FOR
*                                           PDTBMA                   */
*    3 PDTR2       CHAR(1),              /* RESERVED                 */
*    3 PDTBMA      PTR(24)  BDY(BYTE),   /* ADDRESS OF BIT MAP FOR
*                                           THIS DEVICE              */
*   2 PDTIOBF     PTR(31)  BDY(BYTE),    /* FULLWORD REFERENCE FOR
*                                           PDTIOB                   */
*    3 PDTDT       CHAR(1),              /* DEVICE TYPE FROM UCB     */
*    3 PDTIOB      PTR(24)  BDY(BYTE);   /* ADDRESS OF IOB FOR THIS
*                                           DEVICE                   */
*DECLARE 1 PDTEND  (*) CHAR(1)   BASED
*  (ADDR(PDTE    )+LENGTH(PDTE    ));
*                                        /* END OF PAGE DEVICE TABLE
*                                           ENTRY                    */
./ ADD NAME=IHAPFTE
*        %GOTO PFTEPLS;                                              /*
         MACRO
         IHAPFTE &DSECT=YES
         AGO   .PFTBIT         DO NOT GENERATE PROLOGUE
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 1                                                   *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR PFTE                                           *
* ENTRY POINTS -                                                      *
*     IHAPFTE MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IHAPFTE MACRO DEFINITION                                     *
* OUTPUT -                                                            *
*    PFTE MAPPING MACRO                                               *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* CHANGE-ACTIVITY -                                                   *
*    OZ31128                                                  @ZA31128*
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.PFTBIT  ANOP
         IEZBITS , -           DEFINE BITS
***********************************************************************
**                PAGE FRAME TABLE ENTRY       4/6/78                 *
**                                                                    *
**   THIS MACRO SUPPORTS: SU33                                @ZA31128*
**                                                                    *
**                                                                    *
**   ALL PFTES ARE CONTIGUOUS AND ARE LOCATED VIA DIRECT INDEX        *
**   ON THE HIGH ORDER 12 BITS OF ANY REAL ADDRESS. (THESE 12         *
**   BITS = PAGE FRAME NUMBER.) THE PAGE FRAME TABLE ENTRY            *
**   INDEX = PAGE FRAME NUMBER TIMES 16 (4 LOW ORDER BINARY ZEROS).   *
***********************************************************************
         AIF   ('&DSECT' EQ 'YES').PFT001 IS DSECT WANTED
PFTE     DS    0F
         AGO   .PFT002         BRANCH AROUND DSECT
.PFT001  ANOP                  GEN THE DESECT
PFTE     DSECT , PFTEPTR
.PFT002  ANOP
PFTPGID  DS    0F              AN IDENTIFIER OF THE VIRTUAL PAGE
*                              CURRENTLY OCCUPYING THIS FRAME.
*                              IF PFTIRRG IS 0, THIS FIELD IS
*                              SUBDIVIDED INTO PFTASID AND PFTVBN.
PFTASID  DS    XL2 -           THE ASID OF THE PAGE CURRENTLY
*                              OWNING THE FRAME
PFTVBN   DS    XL2 -           VIRTUAL BLOCK NUMBER  (HIGH
*                              ORDER 12 BITS OF 24 BIT VIRTUAL
*                              ADDRESS, LEFT ADJUSTED AND PADDED WITH
*                              4 LOW ORDER BINARY ZEROS) CURRENTLY
*                              OWNING THE REAL FRAME.
PFTQPTRS DS    0F              WORD CONTAINING PFTFQPTR AND PFTBQPTR
PFTFQPTR DS    H -             FORWARD PAGE FRAME QUEUE POINTER
*                              - THE PFTE INDEX OF THE NEXT ENTRY
*                              ON THIS PFQ
PFTBQPTR DS    H -             BACKWARD PAGE FRAME QUEUE POINTER
*                              - THE PFTE INDEX OF THE PREVIOUS
*                              ENTRY ON THIS PFQ
PFTFXCT  DS    H -             FIX COUNT OF THIS FRAME
PFTRSV1  DS    XL2 -           RESERVED
PFTFLAGS DS    0CL2 -          TWO PFTE FLAGS                  @G33VPOD
PFTFLAG1 DS    BL1 -           FIRST FLAG FIELD
PFTONAVQ EQU   BIT0 -          AVAILABLE FRAME QUEUE FLAG. WHEN 1,
*                              THIS PFTE IS ON AVAILABLE PFQ
PFTVRINT EQU   BIT1 -          WHEN 1, PFTE INTERCEPTED FOR V=R
PFTLSQA  EQU   BIT2 -          SQA/LSQA FLAG, WHEN 1, PAGE FRAME
*                              CONTAINS AN LSQA OR SQA PAGE. IF
*                              PFTASID=X'FFFF' THE FRAME CONTAINS A
*                              SQA PAGE.
PFTVRPLT EQU   BIT3 -          V=R AREA POLLUTED FLAG, WHEN 1, A
*                              REQUEST FOR A PREFERRED AREA FRAME WAS
*                              SATISFIED WITH THIS V=R FRAME.  @ZA31128
PFTPCBSI EQU   BIT4 -          PCB DEFINED FOR THIS PAGE FLAG, WHEN
*                              1, A PCB EXISTS FOR THIS PAGE.
PFTBADPG EQU   BIT5 -          BAD PAGE FRAME FLAG, WHEN 1, THIS PAGE
*                              FRAME MAY NOT BE ALLOCATED.
PFTVRALC EQU   BIT6 -          V = R ALLOCATED FLAG, WHEN 1, PFTE
*                              HAS BEEN ALLOCATED FOR A V=R REGION
PFTOFINT EQU   BIT7 -          WHEN 1, FRAME IS INTERCEPTED TO
*                              GO OFFLINE
PFTFLAG2 DS    BL1 -           SECOND FLAG FIELD
PFTDFRLS EQU   BIT0 -          DEFERRED RELEASE FLAG, WHEN 1, RELEASE
*                              HAS BEEN DEFERRED UNTIL THIS PAGE HAS
*                              BEEN FREED (PFTFXCT=0).
PFTOFFLN EQU   BIT1 -          FRAME ONLINE/OFFLINE FLAG, WHEN 1,
*                              FRAME IS OFFLINE
PFTVR    EQU   BIT2 -          V=R CANDIDATE, WHEN 1, FRAME MAY BE
*                              ALLOCATED TO A V=R REGION
PFTIRRG  EQU   BIT3 -          WHEN 1, INDICATES A VIO FRAME
PFTSTEAL EQU   BIT4 -          WHEN 1, INDICATES THIS PFTE SELECTED
*                              FOR STEALING, BUT HAS NOT BEEN STOLEN
*                              YET.
PFTPREF  EQU   BIT5 -          WHEN 1, INDICATES PFTE IN THE PREFERRED
*                              AREA                            @YD03005
PFTQNDX  DS    CL1 -           PFT QUEUE INDEX
PFTAFQN  EQU   X'00' -         PFTE ON AVAILABLE QUEUE
PFTSRQN  EQU   X'04' -         PFTE ON SQA RESERVED QUEUE
PFTCFQN  EQU   X'08' -         PFTE ON COMMON FRAME QUEUE
PFTSQAN  EQU   X'0C' -         PFTE ON SQA FRAME QUEUE
PFTRSBQN EQU   X'10' -         PFTE ON REAL STORAGE BUFFER (RSB)
*                              FRAME QUEUE                    @G33VPOD
PFTLFQN  EQU   X'80' -         PFTE ON LOCAL FRAME QUEUE
PFTLSQAN EQU   X'84' -         PFTE ON LSQA FRAME QUEUE
PFTNQN   EQU   X'FF' -         PFTE NOT QUEUED
PFTUIC   DS    FL1 -           NUMBER OF STEAL INTERVALS DURING WHICH
*                              THIS FRAME WAS NOT REFERENCED
PFTEND   DS    0C -            END OF PAGE FRAME TABLE ENTRY
PFTLEN   EQU   PFTEND-PFTE -   LENGTH OF PAGE TABLE ENTRY
         MEND  , */
*%PFTEPLS :  ;
* /*******************************************************************/
* /*                  PAGE FRAME TABLE ENTRY       4/6/78            */
* /*                                                                 */
* /* THIS MACRO SUPPORTS: SU33                               @ZA31128*/
* /*                                                                 */
* /*                                                                 */
* /* ALL PFTES ARE CONTIGUOUS AND ARE LOCATED VIA DIRECT INDEX       */
* /* ON THE HIGH ORDER 12 BITS OF ANY REAL ADDRESS. (THESE 12        */
* /* BITS = PAGE FRAME NUMBER.) THE PAGE FRAME TABLE ENTRY           */
* /* INDEX = PAGE FRAME NUMBER TIMES 16 (4 LOW ORDER BINARY ZEROS).  */
* /*******************************************************************/
*DCL
*  PFTAFQN  BIT(8) CONSTANT('00'X), /* PFTE ON AVAILABLE QUEUE       */
*  PFTSRQN  BIT(8) CONSTANT('04'X), /* PFTE ON SQA RESERVE QUEUE     */
*  PFTCFQN  BIT(8) CONSTANT('08'X), /* PFTE ON COMMON FRAME QUEUE    */
*  PFTSQAN  BIT(8) CONSTANT('0C'X), /* PFTE ON SQA FRAME QUEUE       */
*  PFTRSBQN BIT(8) CONSTANT('10'X), /* PFTE ON REAL STORAGE BUFFER
*                                      (RSB) FRAME QUEUE     @G33VPOD*/
*  PFTLFQN  BIT(8) CONSTANT('80'X), /* PFTE ON LOCAL FRAME QUEUE     */
*  PFTLSQAN BIT(8) CONSTANT('84'X), /* PFTE ON LSQA FRAME QUEUE      */
*  PFTNQN   BIT(8) CONSTANT('FF'X); /* PFTE NOT QUEUED.              */
*      %IF PFT9999^=','             /* IS BLOCK PART OF STRUCTURE    */
*          %THEN %PFT9999=';';      /* NO, END BLOCK NORMALLY        */
*      %IF PFTLEVEL^=''             /* INITIAL LEVEL NUMBER GIVEN    */
*          %THEN %GOTO PFTPLS1;     /* YES THEN DO NOT GEN 1 LEVEL   */
*%PFTPLS0: ;
* /*******************************************************************/
* /*                     PFTE MAPPING                                */
* /*******************************************************************/
*DECLARE
*  1 PFTE BASED(PFTEPTR)
*      %GOTO PFTPLS2;               /*SKIP USER-GIVEN LEVEL          */
*%PFTPLS1: PFTDUM=PFTLEVEL' PFTE';
*  PFTDUM
*%PFTPLS2:;
*   BDY (WORD),
*    4 PFTPGID  FIXED(32),          /* AN IDENTIFIER OF THE VIRTUAL
*                                      PAGE CURRENTLY OCCUPYING THIS
*                                      FRAME. IF PFTIRRG IS 0, THIS
*                                      FIELD IS SUBDIVIDED INTO
*                                      PFTASID AND PFTVBN.           */
*      8 PFTASID FIXED(16),         /* THE ASID OF THE PAGE CURRENTLY
*                                      OWNING THIS FRAME             */
*      8 PFTVBN BIT(16),            /* VIRTUAL BLOCK NUMBER (HIGH
*                                      ORDER 12 BITS OF 24 BIT VIRTUAL
*                                      ADDRESS, LEFT ADJUSTED AND
*                                      PADDED WITH 4 LOW-ORDER BINARY
*                                      ZEROES) CURRENTLY OWNING THE
*                                      FRAME.                        */
*    4 PFTQPTRS BIT(32),            /* WORD CONTAINING PFTFQPTR AND
*                                      PFTBQPTR                      */
*      8 PFTFQPTR BIT(16),          /* FORWARD PAGE FRAME QUEUE
*                                      POINTER  - THE PFTE INDEX OF
*                                      THE NEXT ENTRY ON THIS PFQ    */
*      8 PFTBQPTR BIT(16),          /* BACKWARD PAGE FRAME QUEUE
*                                      POINTER  - THE PFTE INDEX OF
*                                      THE PREVIOUS FRAME            */
*    4 PFTFXCT FIXED(15),           /* FIX COUNT OF THIS FRAME       */
*    4 PFTRSV1 CHAR(2),             /* RESERVED                      */
*    4 PFTFLAGS CHAR(2),            /* TWO FLAG FIELDS       @G33VPOD*/
*    8 PFTFLAG1 BIT(8),             /* FIRST FLAG FIELD              */
*     12 PFTONAVQ BIT(1),           /* AVAILABLE FRAME QUEUE FLAG.
*                                      WHEN 1, THIS PFTE IS ON
*                                      AVAILABLE PFQ                 */
*     12 PFTVRINT BIT(1),           /* WHEN 1, PFTE INTERCEPTED FOR
*                                      USE IN A V=R REGION           */
*     12 PFTLSQA BIT(1),            /* SQA/LSQA FLAG, WHEN 1, PAGE
*                                      FRAME  CONTAINS AN LSQA OR SQA
*                                      PAGE. IF PFTASID=X'FFFF' THE
*                                      FRAME CONTAINS A SQA PAGE.    */
*     12 PFTVRPLT BIT(1),           /* V=R AREA POLLUTED FLAG, WHEN 1,
*                                      A REQUEST FOR A PREFERRED AREA
*                                      FRAME WAS SATISFIED WITH THIS
*                                      V=R FRAME.           @ZA31128*/
*     12 PFTPCBSI BIT(1),           /* PCB DEFINED FOR THIS PAGE
*                                      FLAG, WHEN  1, A PCB EXISTS
*                                      FOR THIS PAGE                 */
*     12 PFTBADPG BIT(1),           /* BAD PAGE FRAME FLAG. WHEN 1,
*                                      THIS PAGE FRAME MAY NOT BE
*                                      ALLOCATED.                    */
*     12 PFTVRALC BIT(1),           /* V = R ALLOCATED FLAG, WHEN 1,
*                                      FRAME IS ALLOCATED TO A
*                                      V=R REGION                    */
*     12 PFTOFINT BIT(1),           /* OFFLINE INTERCEPT FLAG. WHEN
*                                      1, THE FRAME IS INTERCEPTED
*                                      TO GO OFFLINE                 */
*    8 PFTFLAG2 BIT(8),             /* SECOND FLAG FIELD             */
*     12 PFTDFRLS BIT(1),           /* DEFERRED RELEASE FLAG, WHEN 1,
*                                      RELEASE HAS BEEN DEFERRED
*                                      UNTIL THIS PAGE HAS BEEN FREED
*                                      (PFTFXCT=0).                  */
*     12 PFTOFFLN BIT(1),           /* FRAME ONLINE/OFFLINE FLAG, WHEN
*                                      1, FRAME IS OFFLINE           */
*     12 PFTVR BIT(1),              /* V=R CANDIDATE, WHEN 1, FRAME
*                                      MAY BE ALLOCATED TO A V=R
*                                      REGION                        */
*     12 PFTIRRG BIT(1),            /* WHEN 1, INDICATES A VIO FRAME */
*     12 PFTSTEAL BIT(1),           /* WHEN 1, THIS PFTE SELECTED FOR
*                                      STEALING, BUT HAS NOT BEEN
*                                      STOLEN YET.                   */
*     12 PFTPREF BIT(1),            /* WHEN 1, PFTE IS IN THE PREFERRED
*                                      AREA                  @YD03005*/
*     12 * BIT(1),                  /* RESERVED                      */
*     12 * BIT(1),                  /* RESERVED                      */
*    4 PFTQNDX CHAR(1),             /* PFT QUEUE INDEX               */
*    4 PFTUIC FIXED(8) PFT9999      /* NUMBER OF STEAL INTERVALS
*                                      DURING WHICH THIS FRAME WAS
*                                      NOT REFERENCED                */
*      %PFTLEN='LENGTH(PFTE)';      /* LENGTH OF PFTE                */
./ ADD NAME=IHAPICA
*        %GOTO PICABSL;                                              /*
         MACRO
         IHAPICA
PICA     DSECT
         SPACE
**********************************************************************
*
*        LEVEL=1
*
*              PROGRAM INTERRUPTION CONTROL AREA (PICA)
*
*        A PICA IS CREATED AND INITIALIZED BY THE EXECUTABLE CODE
*        PRODUCED BY THE EXPANSION OF THE SPIE MACRO DURING AN
*        ASSEMBLY OF THE SOURCE PROGRAM.  AT THIS TIME, THE PICA IS
*        INITIALIZED WITH THE PROGRAM MASK, THE ADDRESS OF THE USER
*        PROGRAM-INTERRUPTION EXIT ROUTINE, AND AN INTERRUPTION MASK.
*
**********************************************************************
         SPACE
PICAEXIT DS    0F -
PICAPRMK DS    B -            PROGRAM MASK TO BE USED IN THE PSW -
*                             BITS 0-3 ARE ZERO; BITS 4-7 CONTAIN MASK
PICEXITA DS    AL3 -          ADDRESS OF THE USER'S PROGRAM INTER-
*                             RUPTION EXIT RTN
PICAITMK DS    0F -           MASK WHICH INDICATES ON WHICH PROGRAM
*                             INTERRUPTION TYPES THE EXIT RTN IS TO
*                             BE USED - LENGTH IS 4 BYTES.
PICITMK1 DS    BL1 -
PICAEXT  EQU   X'80' -        AN EXTENDED PICA IS IN EFFECT
PICACD1  EQU   X'40' -        OPERATION
PICACD2  EQU   X'20' -        PRIVILEGED OPERATION
PICACD3  EQU   X'10' -        EXECUTE
PICACD4  EQU   X'08' -        PROTECTION
PICACD5  EQU   X'04' -        ADDRESSING
PICACD6  EQU   X'02' -        SPECIFICATION
PICACD7  EQU   X'01' -        DATA INTRPT HANDLED
PICITMK2 DS    BL1 -
PICACD8  EQU   X'80' -        FIXED-POINT OVERFLOW
PICACD9  EQU   X'40' -        FIXED-POINT DIVIDE
PICACD10 EQU   X'20' -        DECIMAL OVERFLOW
PICACD11 EQU   X'10' -        DECIMAL DIVIDE
PICACD12 EQU   X'08' -        EXPONENT OVERFLOW
PICACD13 EQU   X'04' -        EXPONENT UNDERFLOW
PICACD14 EQU   X'02' -        SIGNIFICANCE
PICACD15 EQU   X'01' -        FLOATING-POINT DIVIDE
PICITMK3 DS    BL1 -
PICACD17 EQU   X'40' -        PAGE TRANSLATION
PICITMK4 DS    BL1 -
         MEND  , */
*%PICABSL :  ;
*DECLARE
*  1 PICA     BASED(PICAPTR),
*
*/* **************************************************************** */
*/*                                                                  */
*/*      LEVEL=1                                                     */
*/*                                                                  */
*/*            PROGRAM INTERRUPTION CONTROL AREA (PICA)              */
*/*                                                                  */
*/*      A PICA IS CREATED AND INITIALIZED BY THE EXECUTABLE CODE    */
*/*      PRODUCED BY THE EXPANSION OF THE SPIE MACRO DURING AN       */
*/*      ASSEMBLY OF THE SOURCE PROGRAM.  AT THIS TIME, THE PICA IS  */
*/*      INITIALIZED WITH THE PROGRAM MASK, THE ADDRESS OF THE USER  */
*/*      PROGRAM-INTERRUPTION EXIT ROUTINE, AND AN INTERRUPTION MASK */
*/*                                                                  */
*/* **************************************************************** */
*
*   2 PICAEXIT    FIXED(31),
*    3 PICAPRMK    CHAR(1),              /* PROGRAM MASK TO BE USED
*                                           IN THE PSW -  BITS 0-3
*                                           ARE ZERO; BITS 4-7
*                                           CONTAIN MASK             */
*    3 PICEXITA    PTR(24)  BDY(BYTE),   /* ADDRESS OF THE USER'S
*                                           PROGRAM INTER-  RUPTION
*                                           EXIT RTN                 */
*   2 PICAITMK    FIXED(31),             /* MASK WHICH INDICATES ON
*                                           WHICH PROGRAM
*                                           INTERRUPTION TYPES THE
*                                           EXIT RTN IS TO  BE USED
*                                           - LENGTH IS 4 BYTES.     */
*    3 PICITMK1    CHAR(1),
*     4 PICAEXT  BIT(1),                 /* AN EXTENDED PICA IS IN
*                                           EFFECT                   */
*     4 PICACD1  BIT(1),                 /* OPERATION                */
*     4 PICACD2  BIT(1),                 /* PRIVILEGED OPERATION     */
*     4 PICACD3  BIT(1),                 /* EXECUTE                  */
*     4 PICACD4  BIT(1),                 /* PROTECTION               */
*     4 PICACD5  BIT(1),                 /* ADDRESSING               */
*     4 PICACD6  BIT(1),                 /* SPECIFICATION            */
*     4 PICACD7  BIT(1),                 /* DATA INTRPT HANDLED      */
*    3 PICITMK2    CHAR(1),
*     4 PICACD8  BIT(1),                 /* FIXED-POINT OVERFLOW     */
*     4 PICACD9  BIT(1),                 /* FIXED-POINT DIVIDE       */
*     4 PICACD10 BIT(1),                 /* DECIMAL OVERFLOW         */
*     4 PICACD11 BIT(1),                 /* DECIMAL DIVIDE           */
*     4 PICACD12 BIT(1),                 /* EXPONENT OVERFLOW        */
*     4 PICACD13 BIT(1),                 /* EXPONENT UNDERFLOW       */
*     4 PICACD14 BIT(1),                 /* SIGNIFICANCE             */
*     4 PICACD15 BIT(1),                 /* FLOATING-POINT DIVIDE    */
*    3 PICITMK3    CHAR(1),
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 PICACD17 BIT(1),                 /* PAGE TRANSLATION         */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*    3 PICITMK4    CHAR(1);
./ ADD NAME=IHAPIE
*
*        %GOTO PIEL1;       /*
         MACRO
         IHAPIE &DSECT=YES       */
*%PIEL1: ;
*
*/* **************************************************************** */
*/*                                                                  */
*/*            PROGRAM INTERRUPT ELEMENT (PIE)                       */
*/*                                                                  */
*/*      A PIE IS CREATED AFTER A PROGRAM CHECK HAS OCCURRED IF      */
*/*      THERE IS A USER-SPECIFIED EXIT ROUTINE TO HANDLE PROGRAM    */
*/*      CHECK INTERRUPTIONS.  A PIE IS USED TO PASS THE NECESSARY   */
*/*      DATA TO THE USER-SPECIFIED EXIT ROUTINE.                    */
*/*                                                                  */
*/*  OS/VS2 RELEASE 3, OS/VS1 RELEASE 4, 09/30/74, LEVEL=1           */
*/* **************************************************************** */
*%GOTO PIEL2;    /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').NODSCT
PIE      DSECT
         AGO   .CONT
.NODSCT  ANOP
         DS    0D -
PIE      EQU   * -            PIEPTR
.CONT    ANOP
         IEZBITS , -          SYMBOLIC BIT DEFINITIONS
PIEPICA  DS    0F -           ADDRESS OF THE CURRENT PICA
PIEFLGS  DS    B -            FLAG BYTE
PIENOPI  EQU   BIT0 -         IF ONE, INDICATES THAT THE TASK CANNOT
*                             ACCEPT FURTHER PI'S
PIEPICAA DS    AL3 -          ADDRESS OF THE CURRENT PICA
PIEPSW   DS    CL8 -          PI OLD PSW STORED AT PROGRAM INTERRUPT
*                             TIME
PIEGR14  DS    F -            SAVE AREA FOR REGISTER 14
PIEGR15  DS    F -            SAVE AREA FOR REGISTER 15
PIEGR0   DS    F -            SAVE AREA FOR REGISTER 0
PIEGR1   DS    F -            SAVE AREA FOR REGISTER 1
PIEGR2   DS    F -            SAVE AREA FOR REGISTER 2
         MEND  , */
*%PIEL2  :  ;
*
*DECLARE
*  1 PIE      BASED(PIEPTR) BDY(WORD),
*   2 PIEPICA     FIXED(31),             /* ADDRESS OF THE CURRENT
*                                           PICA                     */
*    3 PIEFLGS     CHAR(1),              /* FLAG BYTE                */
*     4 PIENOPI  BIT(1),                 /* IF ONE, INDICATES THAT
*                                           THE TASK CANNOT ACCEPT
*                                           FURTHER PI'S             */
*     4 *        BIT(7),                 /* RESERVED                 */
*    3 PIEPICAA    PTR(24),              /* ADDRESS OF THE CURRENT
*                                           PICA                     */
*   2 PIEPSW      CHAR(8) BDY(WORD),     /* PI OLD PSW STORED AT
*                                           PROGRAM INTERRUPT TIME   */
*   2 PIEGR14     FIXED(31),             /* SAVE AREA FOR REGISTER
*                                           14                       */
*   2 PIEGR15     FIXED(31),             /* SAVE AREA FOR REGISTER
*                                           15                       */
*   2 PIEGR0      FIXED(31),             /* SAVE AREA FOR REGISTER 0 */
*   2 PIEGR1      FIXED(31),             /* SAVE AREA FOR REGISTER 1 */
*   2 PIEGR2      FIXED(31);             /* SAVE AREA FOR REGISTER 2 */
./ ADD NAME=IHAPMOVE
*%GOTO PLPMOVE;
*/*********************************************************************
*                                                                     *
* COPYRIGHT =                                                         *
*    5740-XYN COPYRIGHT IBM CORP 1981,                                *
*    LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                      *
*    REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER                      *
*    G120-2083.                                                       *
*                                                                     *
* STATUS -                                                            *
*    OS/VS2 JBB1326                                                   *
* CHANGE ACTIVITY -                                                   *
* $L0= EXTREAL, JBB1326, 800623, PD23: EXTENDED REAL ADDRESSING       *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR PAGE MOVEMENT BY FRAME ALLOCATION FUNCTIONS    *
*       WITHIN RSM                                                    *
* ENTRY POINTS -                                                      *
*    IHAPMOVE MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IHAPMOVE MACRO DEFINITION                                    *
* OUTPUT -                                                            *
*    IHAPMOVE MAPPING MACRO                                           *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    PL/S MACRO                                                       *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
**********************************************************************/
*%PLPMOVE: ;
*/*********************************************************************
*                                                                     *
*               PAGE MOVEMENT MAPPINGS              20 OCT 80         *
*                                                                     *
*        THIS MACRO SUPPORTS:  OS/VS2 JBB1326                         *
*                                                                     *
*        THIS MACRO MAPS TWO PARAMETER LISTS. IT MAPS THE LIST        *
*        USED AS INPUT TO PAGE COPY (IEAVPCPY) AND TO PAGE            *
*        EXCHANGE (IEAVPEX). IT ALSO MAPS THE PARAMETER LIST          *
*        USED TO COMMUNICATE WITH PREFERRED AREA STEAL (IEAVPREF).    *
*                                                                     *
**********************************************************************/
 DCL 1 CXLIST DEFINED(PVTPCPYL),/* COPY AND EXCHANGE PARM LIST,
                             USED TO INTERFACE WITH IEAVPEX AND
                             IEAVPCPY BY IEAVGFA AND IEAVSQA */
       2 PMDLIST1 BDY(WORD), /* FOR COPY, LIST1 SPECIFIES SOURCE FRAME,
                                FOR EXCHANGE, LIST1 SPECIFIES FRAME 1 */
         4 PMDL1,            /* LIST1 DATA AS FROM PREF */
           6 PMDPFTE1 PTR(31), /* PFTE ADDRESS  */
           6 PMDASCB1 PTR(31), /* ASCB ADDRESS OF ADDRESS SPACE
                                  CONTAINING PGTE OF PAGE CONTAINED IN
                                  PFTE1 FRAME AT TIME OF CALL
                                  OR 0 IF ADDRESS SPACE IS CURRENT */
           6 PMDPGTE1 PTR(31), /* PGTE ADDRESS OF PAGE CONTAINED IN
                                  PFTE1 FRAME AT TIME OF CALL */
         4 PMDXPTE1 PTR(31), /* FOR COPY, XPTE ADDRESS IF  GFA CURRENT
                        REQUEST DATA BEING MOVED, 0 OTHERWISE.
                        FOR EXCHANGE, IRRELLEVANT */
       2 PMDLIST2 BDY(WORD), /* FOR COPY, LIST2 SPECIFIES SINK FRAME,
                          FOR EXCHANGE, LIST2 SPECIFIES FRAME 2 */
         4 PMDPFTE2 PTR(31), /* PFTE ADDRESS                      */
         4 PMDPGTE2 PTR(31); /* FOR COPY, IRRELEVANT. FOR EXCHANGE,
                                PGTE2 CONTAINS THE ADDRESS OF THE PGTE
                                OF PAGE CONTAINED IN PFTE2 FRAME AT
                                TIME OF CALL. ASSUMED TO BE ADDRESSABLE
                                IN CURRENT ADDRESS SPACE. */
 DCL 1 PMDPLIST BASED BDY(WORD), /*
                               MAPPING OF IEAVPREF'S PARAMETER LIST */
       2 PMDPINPT , /* INPUT PARAMETERS TO IEAVPREF @ZMM0037*/
         4 PMDPPASS,
           6 * BIT(15), /* RESERVED */
           6 PMDPCHOK BIT(1), /* IF 1, A CHANGED PAGE IS ACCEPTABLE */
           6 PMDPPSS# FIXED(15), /* PASS NUMBER */
         4 PMDPPARM PTR(31), /* IF NONZERO, CONTAINS AN XRBN IN A BOX
           THAT IS TO BE CONVERTED TO PREFERRED STORAGE */
       2 PMDPDATA , /* OUTPUT FROM IEAVPREF */
         4 PMDPPFTE PTR(31), /* PFTE CORRESPONDING TO FRAME PAGE IS
                                 NOW IN */
         4 PMDPASCB PTR(31), /* ASCB FOR PAGE */
         4 PMDPPGTE PTR(31); /* PGTE FOR PAGE */
./ ADD NAME=IHAPQE
*        %GOTO PQEBSL;      /* BILINGUAL MAPPING        /*   /*
         MACRO
         IHAPQE   &TYPE
*
*        RELEASE 1 AOS, 11/3/71, LEVEL=1
*
         AIF   ('&TYPE' EQ 'INTERNAL').EQU
PQESECT  DSECT      PARTITION QUEUE ELEMENT
PQEFFBQE DS    A    PTR TO FIRST FBQE OR IF NONE TO PQE
PQEBFBQE DS    A    PTR TO LAST FBQE OR IF NONE, TO PQE
PQEFPQE  DS    A    ADDR NEXT PQE OR ZERO
PQEBPQE  DS    A    ADDR PREVIOUS PQE OR ZERO
PQETCB   DS    A    ADDR TCB FOR JOB STEP TO WHICH SPACE BELONGS
PQESIZE  DS    F    SIZE OF REGION DESCRIBED BY THIS PQE
PQEREGN  DS    A    ADDR FIRST BYTE OF REGION DESCRIBED BY THIS PQE
PQERFLGS DS    CL1  FLAG BYTE
PQEHRID  DS    CL1  HIERARCHY IDENTIFIER
VMMFLGS  DS    BL1  SEVEN HIGH ORDER BITS ZERO
VVVRFLG  EQU   X'01' REAL OR VIRTUAL REGION FLAG
PQERSVD  DS    CL1  RESERVED
         MEXIT
.EQU     ANOP
PQEFFBQE EQU      0    PTR TO FIRST FBQE OR IF NONE TO PQE
PQEBFBQE EQU      4    PTR TO LAST FBQE OR IF NONE, TO PQE
PQEFPQE  EQU      8    ADDR NEXT PQE OR ZERO
PQEBPQE  EQU      12    ADDR PREVIOUS PQE OR ZERO
PQETCB   EQU      16    ADDR TCB FOR JOB STEP TO WHICH SPACE BELONGS
PQESIZE  EQU      20    SIZE OF REGION DESCRIBED BY THIS PQE
PQEREGN  EQU      24    ADDR FIRST BYTE OF REGION DESCRIBED BY THIS PQE
PQERFLGS EQU      28  FLAG BYTE
PQEHRID  EQU      29  HIERARCHY IDENTIFIER
VMMFLGS  EQU      30  SEVEN HIGH ORDER BITS ZERO
VVVRFLG  EQU   X'01' REAL OR VIRTUAL REGION FLAG
PQERSVD  EQU      31  RESERVED
         MEND  , */
*%PQEBSL:   ;
*
*/*      RELEASE 1 AOS, 11/3/71, LEVEL=1                             */
*
* DECLARE
*   1 PQESECT   BASED(PQESEPTR),     /* PARTITION QUEUE ELEMENT      */
*    2 PQEFFBQE    PTR(31),          /* PTR TO FIRST FBQE OR IF NONE
*                                       TO PQE                       */
*    2 PQEBFBQE    PTR(31),          /* PTR TO LAST FBQE OR IF NONE,
*                                       TO PQE                       */
*    2 PQEFPQE     PTR(31),          /* ADDR NEXT PQE OR ZERO        */
*    2 PQEBPQE     PTR(31),          /* ADDR PREVIOUS PQE OR ZERO    */
*    2 PQETCB      PTR(31),          /* ADDR TCB FOR JOB STEP TO
*                                       WHICH SPACE BELONGS          */
*    2 PQESIZE     FIXED(31),        /* SIZE OF REGION DESCRIBED BY
*                                       THIS PQE                     */
*    2 PQEREGN     PTR(31),          /* ADDR FIRST BYTE OF REGION
*                                       DESCRIBED BY THIS PQE        */
*    2 PQERFLGS    CHAR(1),          /* FLAG BYTE                    */
*    2 PQEHRID     CHAR(1),          /* HIERARCHY IDENTIFIER         */
*    2 VMMFLGS     CHAR(1),          /* SEVEN HIGH ORDER BITS ZERO   */
*    3 *           BIT(7),           /* ZERO BITS                    */
*    3 VVVRFLG     BIT(1),           /* REAL OR VIRTUAL FLAG         */
*    2 PQERSVD     CHAR(1);          /* RESERVED                     */
./ ADD NAME=IHAQDB
*
*        %GOTO QDBL1;  /*
         MACRO
         IHAQDB &DSECT=YES    */
*%QDBL1 : ;
*
*/* **************************************************************** */
*/*                                                                  */
*/*                         QUEUE DESCRIPTOR BLOCK                   */
*/*                                                                  */
*/*  OS/VS2 RELEASE 2, 08/02/72, LEVEL=1                             */
*/*                                                                  */
*/*  METHOD OF ACCESS                                                */
*/*      BAL   - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.     */
*/*              USING ON QDB GIVES ADDRESSABILITY FOR ALL SYMBOLS.  */
*/*      PL/S  - DCL QDBPTR PTR                                      */
*/*                                                                  */
*/* **************************************************************** */
*%GOTO QDBL2;  /*
         SPACE 1
         AIF ('DSECT' EQ 'NO').QDB10
QDB      DSECT
         AGO   .QDB20
.QDB10    ANOP
         DS    0D
QDB      EQU   *
.QDB20   ANOP
QDBQDB   DS    CL4 -          ACRONYM IN EBCDIC -QDB-
QDBATTR  DS    BL2 -          QUEUE ATTRIBUTES
QDBRV001 DS    H -            RESERVED
QDBNELMS DS    F -            NUMBER OF ELEMENTS ON QUEUE
QDBFELMP DS    A -            POINTER TO FIRST ELEMENT
QDBLELMP DS    A -            POINTER TO LAST ELEMENT
QDBFPTDS DS    H -            FORWARD POINTER DISPLACEMENT
QDBBPTDS DS    H -            BACKWARD POINTER DISPLACEMENT
QDBPRSZ  DS    H -            PRIORITY FIELD SIZE
QDBPRDS  DS    H -            PRIORITY FIELD DISPLACEMENT
QDBRV002 DS    A -            RESERVED
         MEND  , -  */
*%QDBL2 : ;
*
*DECLARE
*  1 QDB     BASED(QDBPTR)  BDY(WORD),
*   2 QDBQDB      CHAR(4) BDY(WORD),     /* ACRONYM IN EBCIDIC -QDB- */
*   2 QDBATTR     CHAR(2),               /* QUEUE ATTRIBUTES         */
*   2 QDBRV001    FIXED(15),             /* RESERVED                 */
*   2 QDBNELMS    FIXED(31),             /* NUMBER OF ELEMENTS ON
*                                           QUEUE                    */
*   2 QDBFELMP    PTR(31),               /* POINTER TO FIRST ELEMENT */
*   2 QDBLELMP    PTR(31),               /* POINTER TO LAST ELEMENT  */
*   2 QDBFPTDS    FIXED(15),             /* FORWARD POINTER
*                                           DISPLACEMENT             */
*   2 QDBBPTDS    FIXED(15),             /* BACKWARD POINTER
*                                           DISPLACEMENT             */
*   2 QDBPRSZ     FIXED(15),             /* PRIORITY FIELD SIZE      */
*   2 QDBPRDS     FIXED(15),             /* PRIORITY FIELD
*                                           DISPLACEMENT             */
*   2 QDBRV002    PTR(31);               /* RESERVED                 */
./ ADD NAME=IHAQIO
*        %GOTO  QIOPLS; /*
         MACRO
         IHAQIO  &DSECT=YES
         AIF   ('&DSECT' EQ 'NO').DS0D
IHAQIO   DSECT
         AGO   .BODY
.DS0D    ANOP
IHAQIO   DS    0D
.BODY    ANOP
***********************************************************************
*                                                                     *
*   MAPPING OF WORKAREA SET UP BY QMNGRIO MACRO REQUEST               *
*                                                                     *
*        RELEASE 1 AOS/1       LAST UPDATE  06/04/71                  *
*                                                                     *
*        SPACE IS PASSED TO THE QMNGRIO MACRO HANDLER TO BE USED      *
*        TO SET UP ALL NECESSARY TABLES AND WORK AREAS FOR AN I/O     *
*        REQUEST TO THE QUEUE MANAGER. THIS MAPPING GIVES THE WAY     *
*        THAT SPACE IS BROKEN DOWN BY THE MODULE IEFQMMAC.            *
*                                                                     *
***********************************************************************
QIOQMPA  DS    CL36 -              Q MGR PARAMETER AREA
QIOECIOB DS    0CL76                    ECB/IOB SPACE
QIOECB   DS    F -                 EVENT CONTROL BLOCK
QIOIOB   DS    0D -                INPUT/OUTPUT BLOCK
QIOIFLGS DS    CL2 -               IOB FLAG BYTES
QIOISNS  DS    CL2 -               IOB SENSE BYTES
QIOIECB  DS    0F -
QIOICC   DS    CL1 -               IOB ECB COMPLETION CODE
QIOIECBA DS    AL3 -               IOB ECB ADDRESS
QIOIFLG3 DS    CL1 -               IOB FLAG BYTE 3
QIOICSW  DS    CL7 -               SEVEN LOW ORDER BYTES OF LAST CSW
QIOIST   DS    0F -
QIOISIO  DS    CL1 -               SIO CONDITION CODE
QIOISTRT DS    AL3 -               CCW CHAIN POINTER
QIOIDCB  DS    0F -
QIOIRSVD DS    CL1 -
QIOIDCBA DS    AL3 -               IOB DCB ADDRESS
QIOIREST DS    CL8 -               SPACE TO IOB END
QIOISEEK DS    CL8 -               SEEK/SEARCH MBBCCHHR
QIOISET  DS    0D -                SET SECTOR CCW
QIOISETO DS    CL1 -               SET SECTOR OP CODE
QIOISETA DS    AL3 -               SET SECTOR DATA ADDRESS
QIOISETF DS    CL1 -               SET SECTOR FLAGS
QIOISETR DS    CL1 -               SET SECTOR RESERVED
QIOISETL DS    H -                 SET SECTOR LENGTH
QIOISCH  DS    0D -                SEARCH CCW
QIOISCHO DS    CL1 -               SEARCH OP CODE
QIOISCHA DS    AL3 -               SEARCH DATA ADDRESS
QIOISCHF DS    CL1 -               SEARCH FLAGS
QIOISCHR DS    CL1 -               SEARCH RESERVED
QIOISCHL DS    H -                 SEARCH LENGTH
QIOITIC  DS    0D -                TIC CCW
QIOITICO DS    CL1 -               TIC OP CODE
QIOITICA DS    AL3 -               TIC DATA ADDRESS
QIOITICF DS    CL1 -               TIC FLAGS
QIOITICR DS    CL1 -               TIC RESERVED
QIOITICL DS    H -                 TIC LENGTH
QIOIO    DS    0D -                I/O CCW
QIOIOO   DS    CL1 -               I/O OP CODE
QIOIOA   DS    AL3 -               I/O DATA ADDRESS
QIOIOF   DS    CL1 -               I/O FLAGS
QIOIOR   DS    CL1 -               I/O RESERVED
QIOIOL   DS    H -                 I/O LENGTH
QIOJOB   DS    0F -                QMPA JOB INFO LIST
QIOFILL1 DS    F -                 FULL WORK OF ZEROS
QIONAMEA DS    A -                 POINTER TO JOB NAME
QIOSWADS DS    A -                 POINTER TO SWADS DCB
QIOPREXP DS    0F -                QMPA EXTERNAL PARM AREA PREFIX
QIOFILL2 DS    H -
QIORECL  DS    H -                 RECORD LENGTH
QIOXPA   DS    0F -                QMPA EXTERNAL PARM AREA
QIOCOREA DS    A -                 IN-CORE ADDRESS OF RECORD
QIOTTR0  DS    CL4 -               RELATIVE DISK ADDRESS OF RECORD
QIOQMWRK DS    CL120               WORK SPACE FOR QUEUE MANAGER
         MEND    , */
*%QIOPLS: ;
*  DECLARE
*    1 IHAQIO  BASED (QIOPTR) BDY (DWORD),   /* QMNGRIO WORK AREA    */
*      4 QIOQMPA  CHAR (36) BDY (DWORD),     /* Q MGR PARAMETER AREA */
*      4 QIOECIOB  CHAR (76) BDY (DWORD,5),  /* ECB/IOB/CCW CHAIN    */
*        6 QIOECB  FIXED (31),               /* EVENT CONTROL BLOCK  */
*        6 QIOIOB  BDY (DWORD),              /* INPUT/OUTPUT BLOCK   */
*          8 QIOIFLGS  CHAR (2),             /* IOB FLAG BYTES       */
*          8 QIOISNS  CHAR (2),              /* IOB SENSE BYTES      */
*          8 QIOIECB  PTR (31),              /*                      */
*            10 QIOICC  CHAR (1),            /* ECB COMPLETION CODE  */
*            10 QIOIECBA  PTR (24),          /* ECB ADDRESS          */
*          8 QIOIFLG3  CHAR (1),             /* IOB FLAG BYTE 3      */
*          8 QIOICSW  CHAR (7),              /* CSW LOW ORDER 7 BYTES*/
*          8 QIOIST  PTR (31),               /*                      */
*            10 QIOISIO  CHAR (1),           /* SIO CONDITION CODE   */
*            10 QIOSTRT  PTR (24),           /* CCW CHAIN POINTER    */
*          8 QIOIDCB  PTR (31),              /*                      */
*            10 *  CHAR (1),                 /*                      */
*            10 QIOIDCBA  PTR (24),          /* DCB ADDRESS          */
*          8 * CHAR (8),                     /*                      */
*          8 QIOISEEK  CHAR (8),             /* SEEK/SEARCH MBBCCHHR */
*          8 QIOISET,                        /* SET SECTOR CCW       */
*            10 QIOISETO  CHAR (1),          /* SET SECTOR OP CODE   */
*            10 QIOISETA  PTR (24),          /* SET SECTOR DATA ADDR */
*            10 QIOISETF  CHAR (1),          /* SET SECTOR FLAGS     */
*            10 QIOISETR  CHAR (1),          /* SET SECTOR RESERVED  */
*            10 QIOISETL  FIXED (15),        /* STE SECTOR LENGTH    */
*          8 QIOISCH,                        /* SERACH CCW           */
*            10 QIOISCHO  CHAR (1),          /* SEARCH OP CODE       */
*            10 QIOISCHA  PTR (24),          /* SEARCH DATA ADDRESS  */
*            10 QIOISCHF  CHAR (1),          /* SEARCH FLAGS         */
*            10 QIOISCHR  CHAR (1),          /* SEARCH RESERVED      */
*            10 QIOISCHL  FIXED (15),        /* SEARCH LENGTH        */
*          8 QIOITIC,                        /* TIC CCW              */
*            10 QIOITICO  CHAR (1),          /* TIC OP CODE          */
*            10 QIOITICA  PTR (24),          /* TIC DATA ADDRESS     */
*            10 QIOITICF  CHAR (1),          /* TIC FLAGS            */
*            10 QIOITICR  CHAR (1),          /* TIC RESERVED         */
*            10 QIOITICL  FIXED (15),        /* TIC LENGTH           */
*          8 QIOIO,                          /* I/O CCW              */
*            10 QIOIOO  CHAR (1),            /* I/O OP CODE          */
*            10 QIOIOA  PTR (24),            /* I/O DATA ADDRESS     */
*            10 QIOIOF  CHAR (1),            /* I/O FLAGS            */
*            10 QIOIOR CHAR  (1),            /* I/O RESERVED         */
*            10 QIOIOL  FIXED (15),          /* I/O LENGTH           */
*      4 QIOJOB  CHAR (12) BDY (WORD),       /* JOB INFORMATION LIST */
*        6 *  FIXED (31),                    /*                      */
*        6 QIONAMEA  PTR (31),               /* POINTER TO JOB NAME  */
*        6 QIOSWADS  PTR (31),               /* SWADS DCB PTR OR ZERO*/
*      4 QIOPREXP  CHAR (4) BDY (WORD),      /* EXT PARM AREA PREFIX */
*        6 *  CHAR (2),                      /*                      */
*        6 QIORECL  FIXED (15),              /* REC LENGTH FOR I/O   */
*      4 QIOXPA  CHAR (8) BDY (WORD),        /* EXTERNAL PARM AREA   */
*        6 QIOCOREA  PTR (31),               /* IN-CORE RECORD ADDR  */
*        6 QIOTTR0  CHAR (4),                /* REL DISK ADDR OF REC */
*      4 QIOQMWRK  CHAR (120);               /* WORK SPACE FOR Q MGR */
./ ADD NAME=IHARCA
*        %GOTO RCAPLS;                                               /*
         MACRO
         IHARCA &DSECT=YES
         IEZBITS
         AGO   .RCAARND
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0                                                   *
*    OZ28519                                                          *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR RECOVERY COMMUNICATIONS AREA                   *
* ENTRY POINTS -                                                      *
*     IHARCA MACRO CALL                                               *
* INPUT -                                                             *
*    SEE IHARCA MACRO DEFINITION                                      *
* OUTPUT -                                                            *
*    RCA MAPPING MACRO                                                *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.RCAARND ANOP
***********************************************************************
**                   RECOVERY COMMUNICATIONS AREA    2/21/78         *
**                                                                    *
**  THIS MACRO SUPPORTS: SU33                                         *
**                                                                    *
**  THE RSM RCA CONTAINS INFORMATION REQUIRED BY THE RSM FUNCTIONAL   *
**  RECOVERY ROUTINE. THE RSM RCA IS MAPPED TO THE WORK AREA RETURNED *
**  BY SETFRR WHEN AN FRR IS ESTABLISHED.  EACH RSM ROUTINE           *
**  COMMUNICATES TO THE FRR VIA THIS AREA.                            *
**                                                                    *
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').RCA001
RCA      DSECT , RCAPTR
         AGO   .RCA002
.RCA001  ANOP
RCA      DS    0F
.RCA002  ANOP
***********************************************************************
RCAPARM0 DS    F -           VALUE TO BE PLACED IN REGISTER 0 WHEN
*                            ROUTINE RETRY IS INVOKED.
RCAPARM1 DS    F -           VALUE TO BE PLACED IN REGISTER 1 WHEN
*                            ROUTINE RETRY IS INVOKED.
RCANAME7 DS    BL1           BIT MAP REPRESENTING RSM ENTRY POINTS
*                            SET TO 1 ON ENTRY. ZERO ON EXIT.  @Z40WPYD
RCAPIOI  EQU   BIT0 -        IEAVPIOI FLAG                     @Z40WPYD
RCAPSIY  EQU   BIT1 -                                          @G33VPOD
RCAPRSB  EQU   BIT2 -        IEAVPRSB FLAG                     @G33VPOD
RCAPRSR  EQU   BIT3 -        IEAVPRSR FLAG                     @G33VPOD
RCAPRSS  EQU   BIT4 -        IEAVPRSS FLAG                     @G33VPOD
RCACSECT DS    XL1 -         ID OF THE MODULE IN CONTROL
RCAC001  EQU   X'01'         RESERVED MODULE ID
RCACRSB  EQU   X'02'         IEAVPRSB MODULE ID                @G33VPOD
RCACINIO EQU   X'03'         IEAVPIOI MODULE ID                @Z40WPYD
RCACSQA  EQU   X'04'         IEAVSQA  MODULE ID
RCACVR   EQU   X'05'         IEAVEQR  MODULE ID
RCACPS   EQU   X'06'         IEAVPSI  MODULE ID
RCACPGRL EQU   X'07'         IEAVRELS MODULE ID
RCACINIT EQU   X'08'         IEAVITAS MODULE ID
RCACDELE EQU   X'09'         IEAVDLAS MODULE ID
RCACREAT EQU   X'0A'         IEAVCSEG MODULE ID
RCACDEST EQU   X'0B'         IEAVDSEG MODULE ID
RCACREP  EQU   X'0C'         IEAVPCB  MODULE ID                @Z30GNYD
RCACPIX  EQU   X'0D'         IEAVPIX  MODULE ID
RCACGFA  EQU   X'0E'         IEAVGFA  MODULE ID
RCACREPL EQU   X'0F'         IEAVRFR  MODULE ID
RCACRECF EQU   X'10'         IEAVRCF  MODULE ID
RCACPTRM EQU   X'11'         IEAVTERM MODULE ID
RCACSWPC EQU   X'12'         IEAVSWPC MODULE ID                @Z40WPYD
RCACPOST EQU   X'13'         IEAVPIOP MODULE ID
RCACCOMP EQU   X'14'         IEAVIOCP MODULE ID
RCACPGFR EQU   X'15'         IEAVFREE MODULE ID
RCACPGFL EQU   X'16'         IEAVFXLD MODULE ID
RCACPGOT EQU   X'17'         IEAVOUT  MODULE ID
RCACVAM  EQU   X'18'         IEAVAMSI MODULE ID
RCACSPIN EQU   X'19'         IEAVSWIN MODULE ID
RCACSPOT EQU   X'1A'         IEAVSOUT MODULE ID
RCAFLAGS DS    BL1 -         FLAG BYTE
RCALOCKS EQU   RCAFLAGS
RCASAL   EQU   BIT0 -        1 - SALLOC LOCK AQUIRED
RCALL    EQU   BIT1 -        1 - LOCAL LOCK AQUIRED
RCAABEND EQU   BIT2 -        1 - RSM IS ABENDING CALLER
RCAPSIER EQU   BIT3 -        1 - PSI ABENDED WITH INPUT ERROR
RCAQS    EQU   BIT4 -        1 - RSM QUEUES ARE BEING ALTERED
** BIT 5 IS USED BY SE1                                        @ZA28519
RCADISP  EQU   BIT6 -        1 - DISP LOCK ACQUIRED            @ZA28519
** BIT 7 IS RESERVED                                           @ZA28519
RCARCRD  DS    BL1 -         REASON CODE
RCANAME1 DS    BL1 -         BIT MAP REPRESENTING RSM ENTRY POINTS     *
                             SET TO 1 ON ENTRY.  SET TO 0 ON EXIT.
RCAVAMSI EQU   BIT0 -        IEAVAMSI FLAG
RCACSEG  EQU   BIT1 -        IEAVCSEG FLAG
RCADLAS  EQU   BIT2 -        IEAVDLAS FLAG
RCADSEG  EQU   BIT3 -        IEAVDSEG FLAG
RCAVEQR  EQU   BIT4 -        IEAVEQR  FLAG
RCAFXLD  EQU   BIT5 -        IEAVFXLD FLAG
RCAGFA   EQU   BIT6 -        IEAVGFA  FLAG
RCAINV   EQU   BIT7 -        IEAVINV  FLAG
RCANAME2 DS    BL1 -         BIT MAP REPRESENTING RSM ENTRY POINTS     *
                             SET TO 1 ON ENTRY.  SET TO 0 ON EXIT.
RCAIOCP  EQU   BIT0 -        IEAVIOCP FLAG
RCAITAS  EQU   BIT1 -        IEAVITAS FLAG
RCAOUT   EQU   BIT2 -        IEAVOUT  FLAG
RCAPCB   EQU   BIT3 -        IEAVPCB  FLAG
RCAPFTE  EQU   BIT4 -        IEAVPFTE FLAG
RCASWPP  EQU   BIT5 -        IEAVSWPP FLAG                     @Z40WPYD
RCASWPC  EQU   BIT6 -        IEAVSWPC FLAG                     @Z40WPYD
RCAPIOP  EQU   BIT7 -        IEAVPIOP FLAG
RCANAME3 DS    BL1 -         BIT MAP REPRESENTING RSM ENTRY POINTS     *
                             SET TO 1 ON ENTRY.  SET TO 0 ON EXIT.
RCAPIX   EQU   BIT0 -        IEAVPIX  FLAG
RCAPS112 EQU   BIT1 -        IGC112   FLAG
RCAPSIB  EQU   BIT2 -        IEAVPSIB FLAG
RCAPSII  EQU   BIT3 -        IEAVPSII FLAG
RCARCF   EQU   BIT4 -        IEAVRCF  FLAG
RCARCFI  EQU   BIT5 -        IEAVRCFI FLAG
RCARELS  EQU   BIT6 -        IEAVRELS FLAG
RCARFR   EQU   BIT7 -        IEAVRFR  FLAG
RCANAME4 DS    BL1 -         BIT MAP REPRESENTING RSM ENTRY POINTS     *
                             SET TO 1 ON ENTRY.  SET TO 0 ON EXIT.
RCASOUT  EQU   BIT0 -        IEAVSOUT FLAG
RCASWIN  EQU   BIT1 -        IEAVSWIN FLAG
RCASQA   EQU   BIT2 -        IEAVSQA  FLAG
RCATERM  EQU   BIT3 -        IEAVTERM FLAG
RCAVEQRC EQU   BIT4 -        IEAVEQRC FLAG
RCAVEQRF EQU   BIT5 -        IEAVEQRF FLAG
RCAVEQRI EQU   BIT6 -        IEAVEQRI FLAG
RCAGFAD  EQU   BIT7 -        IEAVGFAD FLAG
RCANAME5 DS    BL1 -         BIT MAP REPRESENTING RSM ENTRY POINTS     *
                             SET TO 1 ON ENTRY.  SET TO 0 ON EXIT.
RCARELF  EQU   BIT0 -        IEAVRELF FLAG
RCARELV  EQU   BIT1 -        IEAVRELV FLAG
RCASIRT  EQU   BIT2 -        IEAVSIRT FLAG
RCASORT  EQU   BIT3 -        IEAVSORT FLAG
RCAOPBR  EQU   BIT4 -        IEAVOPBR FLAG
RCACPBR  EQU   BIT5 -        IEAVCPBR FLAG
RCARFR2  EQU   BIT6 -        IEAVRFR2 FLAG
RCAFREE  EQU   BIT7 -        IEAVFREE FLAG
RCANAME6 DS    BL1 -         BIT MAP REPRESENTING RSM ENTRY POINTS     *
                             SET TO 1 ON ENTRY. SET TO 0 ON EXIT.
RCAPS113 EQU   BIT0 -        IGC113 FLAG
RCAFXL   EQU   BIT1 -        IEAVFXL FLAG
RCACSGB  EQU   BIT2 -        IEAVCSGB FLAG
RCARCFC  EQU   BIT3 -        IEAVRCFC FLAG
RCAVEQRP EQU   BIT4 -        IEAVEQRP FLAG
RCAPSIX  EQU   BIT5 -        IEAVFXLD FAST-PATH FOR IOS FLAG
RCAPSIF  EQU   BIT6 -        IEAVFREE FAST-PATH FOR IOS FLAG
RCAREP1  EQU   BIT7 -        IEAVREP1 FLAG                     @Z30GNYD
RCATASID DS    AL2                                             @G33VPOD
RCARETAD DS    F -           ADDRESS OF RETRY ROUTINE TO BE INVOKED IF
*                            AN UNEXPECTED ERROR OCCURS.
RCALENTH EQU   *-RCA -       LENGTH OF RCA
         MEND  , */
*%RCAPLS : ;
* /*******************************************************************/
* /*             RECOVERY COMMUNICATIONS AREA    2/21/78            */
* /*                                                                 */
* /*THIS MACRO SUPPORTS: SU33                                        */
* /*                                                                 */
* /*THE RSM RCA CONTAINS INFORMATION REQUIRED BY THE RSM FUNCTIONAL  */
* /*RECOVERY ROUTINE.  THE RSMRCA IS MAPPED TO THE WORK AREA RETURNED*/
* /*BY SETFRR WHEN AN FRR IS ESTABLISHED.  EACH RSM ROUTINE          */
* /*COMMUNICATES TO THE FRR VIA THIS AREA.                           */
* /*******************************************************************/
*        %IF RCALEVEL ^= ''         /* IF THIS IS CONCATENATED       */
*          %THEN %GOTO RCAPLS1;     /* THEN SKIP DCL                 */
*DCL 1 RCA BASED (RCAPTR)           /* DECLARE RCA LEVEL 1           */
*        %GO TO RCAPLS2;            /* AND SKIP LEVEL TWO DCL        */
*%RCAPLS1: RCADUM=RCALEVEL' RCA'; /* SET LEVEL FOR MINOR STRUCTURE */
*    RCADUM                         /* MINOR STRUCTURE NAME PARM     */
*%RCAPLS2:;
*        BDY(WORD),
*    4 RCAPARM0 PTR(32),  /* VALUE TO BE PLACED IN REG 0 IF RETRY
*                            IS ROUTINE INVOKED VIA RCARETAD. */
*    4 RCAPARM1 PTR(32),  /* VALUE TO BE PLACED IN REG 1 IF RETRY
*                            IS ROUTINE INVOKED VIA RCARETAD. */
*   4 RCANAME7 BIT(8), /* BIT REPRESENTING RSM ENTRY POINTS. SET TO 1
*                         ON ENTRY. SET TO 0 ON EXIT.      @Z40WPYD */
*    8 RCAPIOI   BIT(1),   /* IEAVPIOI FLAG                @Z40WPYD */
*    8 RCAPSIY   BIT(1),   /*                               @G33VPOD*/
*    8 RCAPRSB   BIT(1),   /* IEAVPRSB FLAG                 @G33VPOD*/
*    8 RCAPRSR   BIT(1),   /* IEAVPRSR FLAG                 @G33VPOD*/
*    8 RCAPRSS   BIT(1),   /* IEAVPRSS FLAG                 @G33VPOD*/
*    8 *         BIT(3),   /* RESERVED                      @G33VPOD*/
*    4 RCACSECT CHAR(1),   /* ID OF THE CSECT IN CONTROL             */
*    4 RCAFLAGS BIT(8),    /* FLAG BYTE                              */
*        8 RCASAL   BIT(1),/* SALLOC LOCK OBTAINED                   */
*        8 RCALL    BIT(1),/* LOCAL LOCK OBTAINED                    */
*        8 RCAABEND BIT(1),/* RSM IS ABENDING CALLER                 */
*        8 RCAPSIER BIT(1),/* PSI ABENDED WITH INPUT ERROR.          */
*        8 RCAQS    BIT(1),/* RSM QUEUES ARE BEING ALTERED           */
*        8 *        BIT(1),/* USED BY SE1                    @ZA28519*/
*        8 RCADISP  BIT(1),/* DISP LOCK OBTAINED             @ZA28519*/
*        8 *        BIT(1),/* RESERVED                       @ZA28519*/
*    4 RCARCRD  CHAR(1),   /* REASON CODE                            */
*    4 RCANAMES BIT(48),   /* BIT MAP REPRESENTING RSM MODULES ENTERED
*                             SET TO 1 ON ENTRY. SET TO 0 ON EXIT.   */
*      6 RCANAME1 BIT(8),  /* BIT MAP REPRESENTING RSM ENTRY POINTS.
*                             SET TO 1 ON ENTRY, SET TO 0 ON EXIT.
*                                                           @Z40WPYD */
*        8 RCAVAMSI BIT(1),/* IEAVAMSI FLAG                          */
*        8 RCACSEG  BIT(1),/* IEAVCSEG FLAG                          */
*        8 RCADLAS  BIT(1),/* IEAVDLAS FLAG                          */
*        8 RCADSEG  BIT(1),/* IEAVDSEG FLAG                          */
*        8 RCAVEQR  BIT(1),/* IEAVEQR  FLAG                          */
*        8 RCAFXLD  BIT(1),/* IEAVFXLD FLAG                          */
*        8 RCAGFA   BIT(1),/* IEAVGFA  FLAG                          */
*        8 RCAINV   BIT(1),/* IEAVINV  FLAG                          */
*      6 RCANAME2 BIT(8),  /* BIT MAP REPRESENTING RSM ENTRY POINTS.
*                             SET TO 1 ON ENTRY, SET TO 0 ON EXIT.
*                                                           @Z40WPYD */
*        8 RCAIOCP  BIT(1),/* IEAVIOCP FLAG                          */
*        8 RCAITAS  BIT(1),/* IEAVITAS FLAG                          */
*        8 RCAOUT   BIT(1),/* IEAVOUT  FLAG                          */
*        8 RCAPCB   BIT(1),/* IEAVPCB  FLAG                          */
*        8 RCAPFTE  BIT(1),/* IEAVPFTE FLAG                          */
*        8 RCASWPP  BIT(1),/* IEAVSWPP FLAG                 @Z40WPYD */
*        8 RCASWPC  BIT(1),/* IEAVSWPC FLAG                 @Z40WPYD */
*        8 RCAPIOP  BIT(1),/* IEAVPIOP FLAG                          */
*      6 RCANAME3 BIT(8),  /* BIT MAP REPRESENTING RSM ENTRY POINTS.
*                             SET TO 1 ON ENTRY, SET TO 0 ON EXIT.
*                                                           @Z40WPYD */
*        8 RCAPIX   BIT(1),/* IEAVPIX  FLAG                          */
*        8 RCAPS112 BIT(1),/* IGC112   FLAG                          */
*        8 RCAPSIB  BIT(1),/* IEAVPSIB FLAG                          */
*        8 RCAPSII  BIT(1),/* IEAVPSII FLAG                          */
*        8 RCARCF   BIT(1),/* IEAVRCF  FLAG                          */
*        8 RCARCFI  BIT(1),/* IEAVRCFI FLAG                          */
*        8 RCARELS  BIT(1),/* IEAVRELS FLAG                          */
*        8 RCARFR   BIT(1),/* IEAVRFR  FLAG                          */
*      6 RCANAME4 BIT(8),  /* BIT MAP REPRESENTING RSM ENTRY POINTS.
*                             SET TO 1 ON ENTRY, SET TO 0 ON EXIT.
*                                                           @Z40WPYD */
*        8 RCASOUT  BIT(1),/* IEAVSOUT FLAG                          */
*        8 RCASWIN  BIT(1),/* IEAVSWIN FLAG                          */
*        8 RCASQA   BIT(1),/* IEAVSQA  FLAG                          */
*        8 RCATERM  BIT(1),/* IEAVTERM FLAG                          */
*        8 RCAVEQRC BIT(1),/* IEAVEQRC FLAG                          */
*        8 RCAVEQRF BIT(1),/* IEAVEQRF FLAG                          */
*        8 RCAVEQRI BIT(1),/* IEAVEQRI FLAG                          */
*        8 RCAGFAD  BIT(1),/* IEAVGFAD FLAG                          */
*      6 RCANAME5 BIT(8),  /* BIT MAP REPRESENTING RSM ENTRY POINTS.
*                             SET TO 1 ON ENTRY, SET TO 0 ON EXIT.
*                                                           @Z40WPYD */
*        8 RCARELF  BIT(1),/* IEAVRELF FLAG                          */
*        8 RCARELV  BIT(1),/* IEAVRELV FLAG                          */
*        8 RCASIRT  BIT(1),/* IEAVSIRT FLAG                          */
*        8 RCASORT  BIT(1),/* IEAVSORT FLAG                          */
*        8 RCAOPBR  BIT(1),/* IEAVOPBR FLAG                          */
*        8 RCACPBR  BIT(1),/* IEAVCPBR FLAG                          */
*        8 RCARFR2  BIT(1),/* IEAVRFR2 FLAG                          */
*        8 RCAFREE  BIT(1),/* IEAVFREE FLAG                          */
*      6 RCANAME6 BIT(8),  /* BIT MAP REPRESENTING RSM ENTRY POINTS.
*                             SET TO 1 ON ENTRY, SET TO 0 ON EXIT.
*                                                           @Z40WPYD */
*        8 RCAPS113 BIT(1),/* IGC113   FLAG                          */
*        8 RCAFXL   BIT(1),/* IEAVFXL  FLAG                          */
*        8 RCACSGB  BIT(1),/* IEAVCSGB FLAG                          */
*        8 RCARCFC  BIT(1),/* IEAVRCFC FLAG                          */
*        8 RCAVEQRP BIT(1),/* IEAVEQRP FLAG                          */
*        8 RCAPSIX  BIT(1),/* IEAVFXLD FAST-PATH FOR IOS FLAG        */
*        8 RCAPSIF  BIT(1),/* IEAVFXLD FAST-PATH FOR IOS FLAG        */
*        8 RCAREP1  BIT(1),/* IEAVREP1 FLAG                 @Z30GNYD */
*    4 RCATASID CHAR(2),   /*                              @G33VPOD */
*    4 RCARETAD PTR(31) ;  /* ADDRESS OF A RETRY ROUTINE TO BE INVOKED
*                             IF AN UNEXPECTED ERROR OCCURS*/
*      /**************************************************************/
*      /*               MODULE IDS FOR THE RCACSECT FIELD            */
*      /**************************************************************/
*      DCL RCAC001  BIT(8) CONSTANT('01'X), /* RESERVED MODULE ID    */
*          RCACRSB  BIT(8) CONSTANT('02'X), /* IEAVPRSB MODULE ID
*                                                           @G33VPOD */
*          RCACINIO BIT(8) CONSTANT('03'X), /* IEAVPIOI MODULE ID
*                                                           @Z40WPYD */
*          RCACSQA  BIT(8) CONSTANT('04'X), /* IEAVSQA  MODULE ID    */
*          RCACVR   BIT(8) CONSTANT('05'X), /* IEAVEQR  MODULE ID    */
*          RCACPS   BIT(8) CONSTANT('06'X), /* IEAVPSI  MODULE ID    */
*          RCACPGRL BIT(8) CONSTANT('07'X), /* IEAVRLSE MODULE ID    */
*          RCACINIT BIT(8) CONSTANT('08'X), /* IEAVITAS MODULE ID    */
*          RCACDELE BIT(8) CONSTANT('09'X), /* IEAVDLAS MODULE ID    */
*          RCACREAT BIT(8) CONSTANT('0A'X), /* IEAVCSEG MODULE ID    */
*          RCACDEST BIT(8) CONSTANT('0B'X), /* IEAVDSEG MODULE ID    */
*          RCACREP  BIT(8) CONSTANT('0C'X), /* IEAVPCB  MODULE ID
*                                                           @Z30GNYD */
*          RCACPIX  BIT(8) CONSTANT('0D'X), /* IEAVPIX  MODULE ID    */
*          RCACGFA  BIT(8) CONSTANT('0E'X), /* IEAVGFA  MODULE ID    */
*          RCACREPL BIT(8) CONSTANT('0F'X), /* IEAVRFR  MODULE ID    */
*          RCACRECF BIT(8) CONSTANT('10'X), /* IEAVRCF  MODULE ID    */
*          RCACPTRM BIT(8) CONSTANT('11'X), /* IEAVTERM MODULE ID    */
*          RCACSWPC BIT(8) CONSTANT('12'X), /* IEAVSWPC MODULE ID
*                                                           @Z40WPYD */
*          RCACPOST BIT(8) CONSTANT('13'X), /* IEAVPIOP MODULE ID    */
*          RCACCOMP BIT(8) CONSTANT('14'X), /* IEAVIOCP MODULE ID    */
*          RCACPGFR BIT(8) CONSTANT('15'X), /* IEAVFREE MODULE ID    */
*          RCACPGFL BIT(8) CONSTANT('16'X), /* IEAVFXLD MODULE ID    */
*          RCACPGOT BIT(8) CONSTANT('17'X), /* IEAVOUT  MODULE ID    */
*          RCACVAM  BIT(8) CONSTANT('18'X), /* IEAVAMSI MODULE ID    */
*          RCACSPIN BIT(8) CONSTANT('19'X), /* IEAVSWIN MODULE ID    */
*          RCACSPOT BIT(8) CONSTANT('1A'X); /* IEAVSOUT MODULE ID    */
*        %RCALEN = 'LENGTH(RCA)';   /* OBTAIN LENGTH OF RCA.         */
./ ADD NAME=IHARCFPL
*         %GOTO RCFPLPLS;                                          /*
          MACRO
          IHARCFPL &DSECT=YES
          IEZBITS
          AGO   .RCFLAB1
***********************************************************************
*                                                                     *
* COPYRIGHT =                                                         *
*    5740-XYN COPYRIGHT IBM CORP. 1981,                               *
*    LICENSED MATERIAL-PROGRAM,                                       *
*    PROPERTY OF IBM,                                                 *
*    REFER TO COPYRIGHT INSTRUCTIONS FORM G120-2083                   *
*                                                                     *
* STATUS = OS/VS2 JBB1326                                             *
*    $L0= EXTREAL, JBB1326, 800826, PD17:  EXTENDED REAL ENHANCEMENT  *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR MODULE IEAVRCF PARAMETER LIST                  *
* ENTRY POINTS -                                                      *
*    IHARCFPL MACRO CALL                                              *
* INPUT -                                                             *
*    NONE                                                             *
* OUTPUT -                                                            *
*    IHARCFPL MAPPING MACRO                                           *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
***********************************************************************
.RCFLAB1 ANOP
***********************************************************************
**                                                                   **
**                MODULE IEAVRCF PARAMETER LIST                      **
**                                                                   **
**                         8/26/80                                   **
**                                                                   **
**       THE IEAVRCF PARAMETER LIST IS THE PARAMETER LIST THAT       **
**       IS INPUT TO MODULE IEAVRCF                                  **
**                                                                   **
***********************************************************************
         AIF ('&DSECT' EQ 'NO').RCFLAB2
RCFPL    DSECT , RCFPLPTR
         AGO   .RCFLAB3
.RCFLAB2 ANOP
RCFPL    DS    0F
.RCFLAB3 ANOP
RCFSTART DS    A -       STARTING REAL ADDRESS OF STORAGE TO BE
*                        PROCESSED
RCFFRCNT DS    F -       COUNT OF CONTIGUOUS FRAMES TO BE PROCESSED
RCFREQFG DS    BL1 -     REQUEST FLAG
RCFONRQ  EQU   BIT0 -    PLACE FRAMES ONLINE
RCFOFFRQ EQU   BIT1 -    PLACE FRAMES OFFLINE
RCFSTGRQ EQU   BIT2 -    RECOVER STORAGE DATA ERROR
RCFKEYRQ EQU   BIT3 -    RECOVER STORAGE KEY ERROR
RCFSTARQ EQU   BIT4 -    RECORD STATUS
RCFST2   EQU   BIT5 -    RCFSTATP POINTS TO RCFSTAT2
RCFSALLC EQU   BIT6 -    WHEN 0, INDICATES THAT IEAVRCF SHOULD OBTAIN
*                        THE SALLOC LOCK. WHEN 1, INDICATES THAT
*                        IEAVRCF SHOULD NOT OBTAIN THE SALLOC LOCK.
RCFCANRQ EQU   BIT7 -    CANCEL OFFLINE REQUEST
         DS    CL1 -     RESERVED
RCFSTAT  DS    0BL2 -    TWO BYTES OF STATUS FLAGS
RCFSTAT1 DS    BL1 -     A BYTE OF STATUS FLAGS
RCFRECUR EQU   BIT6 -    WHEN 1, INDICATES RECURSION OF A STORAGE
*                        ERROR (KEY/DATA) FOR THIS FRAME.
RCFCHGBT EQU   BIT7 -    WHEN 1, INDICATES THAT THIS FRAME HAS THE
*                        CHANGE BIT ON.
RCFSTAT2 DS    BL1 -     A BYTE OF STATUS FLAGS
RCFSTATP DS    A -       POINTER TO STATUS BYTES STORAGE
RCFECBP  DS    A -       POINTER TO ECB FOR IEAVRCF TO POST WHEN A
*                        VARY OFFLINE IS COMPLETE
RCFEND   EQU   * -       END OF IEAVRCF PARAMETER LIST
RCFLEN   EQU   *-RCFPL   LENGTH OF THE IEAVRCF PARAMETER LIST
RCFFLAGS DS    BL1 -     STATUS BYTES ARRAY
RCFOFF   EQU   BIT0 -    OFFLINE OR OFFLINE INTERCEPTED FRAME
RCFINT   EQU   BIT1 -    V=R INTERCEPTED OR OFFLINE INTERCEPTED
*                        FRAME
RCFSTG   EQU   BIT2 -    STORAGE ERROR FRAME
RCFPERM  EQU   BIT3 -    PERMANTLY RESIDENT FRAME
RCFSQA   EQU   BIT4 -    SQA FRAME
RCFLSQA  EQU   BIT5 -    LSQA FRAME
RCFFIX   EQU   BIT6 -    FIXED FRAME
RCFVR    EQU   BIT7 -    V=R ALLOCATED OR V=R INTERCEPTED FRAME
         MEND  ,                                                    */
*  %RCFPLPLS : ;
* /******************************************************************/
* /*                                                                */
* /*              MODULE IEAVRCF PARAMETER LIST                     */
* /*                                                                */
* /*                       8/26/80                                  */
* /*                                                                */
* /*     THE IEAVRCF PARAMETER LIST IS THE PARAMETER LIST THAT      */
* /*     IS INPUT TO MODULE IEAVRCF                                 */
* /*                                                                */
* /******************************************************************/
*          %IF RCF9999 ^= ','           /* IF THIS IS LAST BLOCK    */
*            %THEN %RCF9999 = ';';      /* THEN CLOSE DCL STATEMENT */
*          %IF RCFLEVEL ^= ''           /* IF THIS IS CONCATENATED  */
*            %THEN %GOTO RCFPLS1;       /* THEN SKIP DCL            */
*DCL 1 RCFPL BASED (RCFPLPTR)           /* DECLARE RCFPL LEVEL 1    */
*          %GO TO RCFPLS2;              /* AND SKIP LEVEL TWO DCL   */
*%RCFPLS1: RCFDUM=RCFLEVEL' RCFPL';/*SET LEVEL FOR MINOR STRUCTURE*/
*    RCFDUM                             /* MINOR STRUCTURE NAME PARM*/
*%RCFPLS2:;
*        BDY(WORD),
*      4 RCFSTART PTR(31),             /* STARTING REAL ADDRESS OF
*                                      STORAGE TO BE PROCESSED       */
*      4 RCFFRCNT FIXED(31),           /* COUNT OF CONTIGUOUS FRAMES
*                                      TO BE PROCESSED               */
*      4 RCFREQFG BIT(8),              /* REQUEST FLAG               */
*         6 RCFONRQ BIT(1),            /* PLACE FRAMES ONLINE        */
*         6 RCFOFFRQ BIT(1),           /* PLACE FRAMES OFFLINE       */
*         6 RCFSTGRQ BIT(1),           /* RECOVER STORAGE DATA ERROR */
*         6 RCFKEYRQ BIT(1),           /* RECOVER STORAGE KEY ERROR  */
*         6 RCFSTARQ BIT(1),           /* RECORD STATUS              */
*         6 RCFST2   BIT(1),           /* RCFSTATP POINTS TO RCFSTAT2*/
*         6 RCFSALLC BIT(1),           /* WHEN 0, INDICATES THAT
*                                      IEAVRCF SHOULD OBTAIN THE SALLOC
*                                      LOCK. WHEN 1, INDICATES THAT
*                                      IEAVRCF SHOULD NOT OBTAIN THE
*                                      SALLOC LOCK                   */
*         6 RCFCANRQ BIT(1),           /* CANCEL OFFLINE REQUEST     */
*      4 *        BIT(8),              /* RESERVED                   */
*      4 RCFSTAT  BIT(16),             /* TWO BYTES OF STATUS FLAGS  */
*         6 RCFSTAT1 BIT(8),           /* A BYTE OF STATUS FLAGS     */
*            8 *        BIT(6),        /* RESERVED                   */
*            8 RCFRECUR BIT(1),        /* WHEN 1, INDICATES RECURSION
*                                      OF A STORAGE ERROR (KEY/DATA)
*                                      FOR THIS FRAME                */
*            8 RCFCHGBT BIT(1),        /* WHEN 1, INDICATES THAT THIS
*                                      FRAME HAS THE CHANGE BIT ON   */
*         6 RCFSTAT2 BIT(8),           /* A BYTE OF STATUS FLAGS     */
*      4 RCFSTATP PTR(31),             /* POINTER TO STATUS BYTES
*                                      STORAGE                       */
*      4 RCFECBP  PTR(31),             /* POINTER TO ECB FOR IEAVRCF TO
*                                      POST WHEN A VARY OFFLINE IS
*                                      COMPLETE                      */
*      4 RCFEND   CHAR(0) RCF9999      /* END OF THE IEAVRCF PARAMETER
*                                      LIST                          */
* @SPACE(3);
* DCL 1 RCFFLAGS CHAR(1) BASED(RCFFLAGP), /* STATUS BYTES ARRAY      */
*      4 RCFOFF   BIT(1),              /* OFFLINE OR OFFLINE
*                                      INTERCEPTED FRAME             */
*      4 RCFINT   BIT(1),              /* V=R INTERCEPTED OR OFFLINE
*                                      INTERCEPTED FRAME             */
*      4 RCFSTG   BIT(1),              /* STORAGE ERROR FRAME        */
*      4 RCFPERM  BIT(1),              /* PERMANENTLY RESIDENT FRAME */
*      4 RCFSQA   BIT(1),              /* SQA FRAME                  */
*      4 RCFLSQA  BIT(1),              /* LSQA FRAME                 */
*      4 RCFFIX   BIT(1),              /* FIXED FRAME                */
*      4 RCFVR    BIT(1);              /* V=R ALLOCATED OR V=R
*                                      INTERCEPTED FRAME             */
./ ADD NAME=IHARQE
*        %GOTO IHARQE  ;      /* BILINGUAL MAPPING           /*      /*
         MACRO
         IHARQE
RQESECT  DSECT      REQUEST QUEUE ELEMENT                  LEVEL=1
RQELNK   DS    AL2  PTR TO NEXT RQE
RQEUCB   DS    AL2  ADDR UCB ASSOC WITH QUEUED I/O REQUEST
RQEIDT   DS    0C   RQE IDENTITY FIELD
RQEIOB   DS    A    ADDR IOB ASSOC WITH REQUEST
RQETJID1 DS    0C   1ST HALF TS JOB IDENTIFICATION
RQEPRI   DS    CL1  DISPATCHING PRIORITY OF REQUESTOR'S TASK
RQEDEB   EQU   RQEPRI
         DS    AL3  ADDR DEB FOR THIS REQUEST
RQETJID2 DS    0C   2ND HALF TS JOB IDENTIFICATION
RQETCB   DS    A    ADDR TCB ASSOCIATED WITH THIS RQE
         MEND  , */
* %IHARQE:    ;
*/*            REQUEST QUEUE ELEMENT - R.Q.E.             LEVEL=1    */
* DECLARE
*  1 RQESECT  BASED(RQESEPTR),
*    2 RQELNK      PTR(15)  BDY(BYTE), /* PTR TO NEXT RQE            */
*    2 RQEUCB      PTR(15)  BDY(BYTE), /* ADDR UCB ASSOC WITH QUEUED
*                                       I/O REQUEST                  */
*    2 RQEIOB      PTR(31),          /* ADDR IOB ASSOC WITH REQUEST  */
*     3 RQEIDT      CHAR(1),         /* RQE IDENTIFY FIELD           */
*    2 RQEDEB      PTR(31),          /* ADDR DEB FOR THIS REQUEST    */
*     3 RQETJID1    CHAR(1),         /* 1ST HALF TS JOB
*                                       IDENTIFICATION               */
*      4 RQEPRI      CHAR(1),        /* DISPATCHING PRIORITY OF
*                                       REQUESTOR'S TASK             */
*    2 RQETCB      PTR(31),          /* ADDR TCB ASSOCIATED WITH
*                                       THIS RQE                     */
*     3 RQETJID2    CHAR(1);         /* 2ND HALF TS JOB
*                                       IDENTIFICATION               */
./ ADD NAME=IHARRRA
*        %GOTO PLSRRRA1;     /*
         MACRO
         IHARRRA
**/
*  %PLSRRRA1: ;
*/********************************************************************/
*/*            REPAIR ROUTINE RECOVERY AREA                          */
*/*            OS/VS2 RELEASE 2,5/1/73,LEVEL 1                       */
*/*                                                                  */
*/********************************************************************/
*  % GOTO PLSRRRA2 ; /*
RRRA     DSECT
RRRASTAT DS    0F                      STATUS INFORMATION WORD
RRRAFLG1 DS    B                       BYTE 1
RRRALOCK EQU   X'80'                   SETLOCK FRR TO BE ENTERED
RRRAASVT EQU   X'40'                   ASVT RTN TO BE ENTERED
RRRAFLG2 DS    B                       BYTE 2 RESERVED
RRRAFLG3 DS    B                       BYTE 3 RESERVED
RRRAFLG4 DS    B                       BYTE 4 RESERVED
RRRASA14 DS    A                       REGISTER 14 SAVE AREA
RRRASAV0 DS    F                       REGISTER 0 SAVE AREA
         DS    3F                      RESERVED FIELDS
RRRAEND  DS    0F                      END OF RRRA
RRRALEN  EQU   RRRAEND-RRRA            LENGTH OF RRRA
         MEND
**/
*%PLSRRRA2 :    ;
*DECLARE
*  1 RRRA BASED(SDWAPARM),             /* REPAIR ROUTINE REC AREA    */
*    2 RRRASTAT BDY(WORD),             /* STATUS INFORMATION WORD    */
*      3 RRRAFLG1 BIT(8),              /* BYTE 1                     */
*        4 RRRALOCK BIT(1),            /* SETLOCK FRR TO BE ENTERED  */
*        4 RRRAASVT BIT(1),            /* ASVT RTN TO BE ENTERED     */
*        4 * BIT(6),                   /* RESERVED                   */
*      3 RRRAFLG2 BIT(8),              /* BYTE 2 RESERVED            */
*      3 RRRAFLG3 BIT(8),              /* BYTE 3 RESERVED            */
*      3 RRRAFLG4 BIT(8),              /* BYTE 4 RESERVED            */
*    2 RRRASA14 PTR(31),               /* REGISTER 14 SAVE AREA      */
*    2 RRRASAV0 FIXED(31),             /* REGISTER 0 SAVE AREA       */
*    2 * (3) FIXED(31),                /* RESERVED FIELDS            */
*    2 RRRAEND CHAR(0) BDY(WORD);      /* END OF RRRA                */
* % RRRALEN= 'LENGTH(RRRA)' ;
./ ADD NAME=IHART1W
*%GOTO RT1WPLS1;  /*
         MACRO
         IHART1W  ,     */
*%RT1WPLS1: ;
* /*******************************************************************/
* /* --BAL--                                                 @G382P2F*/
* /* THE IHART1W MAPPING MACRO MAPS THE RT1W, RT1RTRN, AND   @G382P2F*/
* /* THE RT1TRACK DSECTS.                                    @G382P2F*/
* /* --PLS--                                                 @G382P2F*/
* /* THE IHART1W MAPPING MACRO MAPS SIX AREAS USED BY THE    @G382P2F*/
* /* VARIOUS COMPONENTS OF THE RTM. COMPILE TIME VARIABLES           */
* /* HAVE BEEN ASSIGNED TO ALLOW SELECTIVE INCLUSION OF ANY          */
* /* OR ALL OF THE SIX AREAS. THE DEFAULT ACTION FOR EACH OF @G382P2F*/
* /* THE VARIABLES IS TEXT INCLUSION. THE VARIABLES ARE:             */
* /* RTM1WA, EEDS, ENPT, RTMB, RTMC AND MODE.                @G382P2F*/
* /* TO SUPPRESS INCLUSION OF ANY OF THE AREAS, SET THE COMPILE      */
* /* TIME VARIABLE TO THE CHARACTER STRING 'NO'.                     */
* /*                                                                 */
* /*  COPYRIGHT= 5740-XYN COPYRIGHT IBM CORP 1980,                   */
* /*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,         */
* /*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER         */
* /*             G120-2083.                                          */
* /*                                                                 */
* /* MACMEAN    RT1W MEANS RTM1 WORKAREA                     @G381P2F*/
* /* MACCOMP    SC1CM                                        @G381P2F*/
* /* MACSTAT    OS/VS2 JBB1226                               @G382P2F*/
* /* MACDATE    80058                                        @ZMB0189*/
* /*******************************************************************/
*%GOTO RT1WPLS;  /*
RT1W     DSECT ,     FRRSRTMW                                  @G382P2F
RT1WTRTM DS    0CL76        PART OF RT1W USED FROM IEAVTRTM ON @G382P2F
RT1WNPRS DS    0CL52        DATA NOT PRESERVED ON VALID        @G382P2F
*                           ANTICIPATED RECURSION              @G382P2F
RT1WLPTA DS    6F           TRACKING AREA FOR LOGICAL PHASE    @G382P2F
*                           RECOVERY PROCESSING (RT1TRACK)     @G382P2F
RT1WPSW1 DS    A            CHECKPOINTED PTR TO PSW1           @G382P2F
RT1WPSW2 DS    A            CHECKPOINTED PTR TO PSW2           @G382P2F
RT1WVARI DS    5F           VARIABLE FIELDS IN WA              @G382P2F
RT1WPRSV DS    0CL24        DATA TO BE PRESERVED ON VALID      @G382P2F
*                           ANTICIPATED RECURSION              @G382P2F
RT1WRTCA DS    A            POINTER TO THE SDWA CURRENTLY IN   @G382P2F
*                           USE (USED BY RTS)                  @G382P2F
RT1WSRBR DS    A            POINTER TO THE CHAIN PREFIX (SEE   @G382P2F
*                           RTMCHDR) AND SDWA AQUIRED FROM     @G382P2F
*                           SQA BY IEAVTRTS                    @G382P2F
RT1WEED  DS    A            POINTER TO EEDS ACQUIRED           @G382P2F
RT1WENTR DS    0CL4         ENTRY POINT DATA                   @G382P2F
RT1WMODE DS    CL1          SYSTEM MODE AT TIME OF ERROR (SEE  @G382P2F
*                           MODEBYTE AT THE END OF RT1W FOR A  @G382P2F
*                           DESCRIPTION OF THIS BYTE)          @G382P2F
RT1WSRMD DS    CL1          SYSTEM RECOVERY MODE               @G382P2F
RT1WCOVR DS    CL1          PRESERVED CARRY OVER INFORMATION   @G382P2F
*                           ON VALID RECURSIONS                @G382P2F
RT1WCLUP EQU   X'80'        CLEANUP AND PERCOLATE INDICATION   @G382P2F
RT1WRTM  EQU   X'40'        IF ON, INDICATES RTM'S FRR WAS IN  @G382P2F
*                           CONTROL AT THE TIME OF THE ERROR   @G382P2F
RT1WFAIL EQU   X'20'        IF ON, RTM1 ISSUED A CMSET MACRO   @G382P2F
*                           WHICH EITHER ISSUED ABEND OR       @G382P2F
*                           RETURNED A NON ZERO RETURN CODE    @G382P2F
RT1WRSTW EQU   X'10'        IF ON, RTS HAS ALREADY CLEARED THE @G382P2F
*                           CVT RESTART WORD (CVTRSTWD)        @G382P2F
RT1WEREX EQU   X'08'        USED IN EEDPROC TO INDICATE AN     @G382P2F
*                           ERRORID HAS BEEN PLACED IN AN EED. @G382P2F
*                           IT IS SET OFF BEFORE EXITING FROM  @G382P2F
*                           EEDPROC                            @G382P2F
RT1NODMP EQU   X'04'        SET BY SLIP TO INFORM DUMPING      @G382P2F
*                           PROGRAMS THAT DUMP REQUESTS SHOULD @G382P2F
*                           BE IGNORED FOR THIS INVOKATION OF  @G382P2F
*                           RTM                                @G382P2F
RT1WSLST EQU   X'02'        IF ON, AT LEAST ONE FRR HAS        @G382P2F
*                           SUPPLIED DUMP RANGES TO RTS OR     @G382P2F
*                           DUMP RANGES WERE SUPPLIED BY THE   @G382P2F
*                           ISSUER OF ABEND                    @G382P2F
RT1WGFAI EQU  X'01'         IF ON, RTS ATTEMPTED TO ACQUIRE AN @G382P2F
*                           SDWA FROM SQA BUT THE GETMAIN      @G382P2F
*                           REQUEST WAS UNSUCCESSFUL           @G382P2F
RT1WLPN  DS   CL1           INITIAL LOGICAL PHASE NUMBER ON    @G382P2F
*                           ENTRY TO RTM                       @G382P2F
RT1WASCB DS   A             ASCB ADDR OF CML ADDRESS SPACE     @G382P2F
RT1WENT2 DS   0CL4          ENTRY POINT DATA                   @G382P2F
RT1WCOV2 DS   CL1           PRESERVED CARRY OVER INFORMATION   @G382P2F
*                           ON VALID RECURSIONS                @G382P2F
RT1WSKIP EQU  X'80'         IF ON, AT LEAST ONE FRR IN THE     @G382P2F
*                           PERCOLATION PATH HAS BEEN SKIPPED  @G382P2F
RT1WRMGR EQU  X'40'         IF ON, RTM1 IS PROCESSING THE FRR  @G382PPY
*                           STACK ON  BEHALF OF A              @G382PPY
*                           CALLRTM TYPE=RMGRCML               @G382PPY
RT1WRSV  DS   CL3           RESERVED                           @G382P2F
RT1WTRT1 DS   0CL12         PART OF RT1W USED FROM IEAVTRT1 ON @G382P2F
RT1WXM   DS   0CL8          CROSS MEMORY INFORMATION AT TIME   @G382P2F
*                           OF ERROR                           @G382P2F
RT1WCR3  DS   0CL4          CONTROL REG 3 AT TIME OF ERROR     @G382P2F
RT1WKM   DS   CL2           KEY MASK                           @G382P2F
RT1WSAS  DS   CL2           SASID                              @G382P2F
RT1WCR4  DS   0CL4          CONTROL REG 4 AT TIME OF ERROR     @G382P2F
RT1WAX   DS   CL2           AUTHORIZATION INDEX                @G382P2F
RT1WPAS  DS   CL2           PASID                              @G382P2F
RT1WSAV1 DS   A             WORK/SAVE AREA FOR RTM             @G382P2F
RT1RTRN  DSECT , FRRSRTMW   THE RTM1 WORK AREA IS USED TO      @G382P2F
*                           CONTAIN RETRY REGISTERS IF AN FRR  @G382P2F
*                           SUCCESSFULLY RETRYS.  A LM         @G382P2F
*                           INSTRUCTION IS ISSUED FROM THE WA  @G382P2F
*                           BEFORE THE RETRY ROUTINE IS GIVEN  @G382P2F
*                           CONTROL                            @G382P2F
RT1RSAV1 DS    F            FIRST WORD NOT OVERLAID            @G382P2F
RT1RTRRG DS    0CL64        16 REGISTERS FOR RETRY             @G382P2F
RT1R0R14 DS    CL60         RETRY REGS 0 THRU 14               @G382P2F
RT1RTYAD DS    A            RETRY ADDRESS IN REG15 SLOT        @G382P2F
*     ****************************************************************
*     * THE RTM1 TRACKING AREA IS LOCATED IN ONE OF TWO PLACES       *
*     * DEPENDING ON THE TYPE OF RECOVERY APPROPRIATE FOR ANY SECTION*
*     * OF THE RTM1'S PROCESSING. WHEN ACTING AS A SECOND LEVEL      *
*     * INTERRUPT HANDLER, THE RTM1 DOES ITS TRACKING IN THE RTM1WA. *
*     * WHEN OPERATING IN A MODE THAT ALLOWS FRR PROTECTION, THE     *
*     * RTM1 DOES ITS TRACKING IN THE FRRPARMS FIELD ASSIGNED BY     *
*     * THE SETFRR MACRO. A COMMON MAPPING IS PROVIDED TO ALLOW FOR  *
*     * INDEPENDENCE IN THE MAINLINE RTM1 AND IN THE RECOVERY ROUTINE*
*     * WITH RESPECT TO THE TYPE OF RECOVERY SCHEME EMPLOYED.        *
*     ****************************************************************
RT1TRACK DSECT ,            COMMON TRACKING AREA MAPPING FOR   @G382P2F
*                           RTM1 RECOVERY                      @G382P2F
RT1TRECC DS    0CL4         RECURSION CONTROL DATA             @G382P2F
RT1TLPN  DS    CL1          LOGICAL PHASE NUMBER               @G382P2F
RT1TLPID DS    CL1          LOGICAL PHASE  REC RTN ID          @G382P2F
RT1TENPT DS    CL1          ORIGINAL ENTRY POINT               @G382P2F
RT1TACQR DS    CL1          RESOURCES ACQUIRED BY RTM1         @G382P2F
RT1TDISP EQU   X'80'        DISPATCHER LOCK ACQUIRED           @G382P2F
RT1TLLCK EQU   X'40'        LOCAL LOCK ACQUIRED BY RT1         @G382P2F
RT1TRETY EQU   X'20'        RT1 ATTEMPTED RETRY                @G382P2F
RT1TSBIT EQU   X'10'        PSW S-BIT FOR RETRY ROUTINE.       @G382P2F
*                           USED BY RT1 & RTM                  @G382P2F
RT1TSERP EQU   X'08'        IF ON, SERIALIZE SRB TO TASK       @G382P2F
*                           PERCOLATION (USED TO INDICATE      @G382P2F
*                           SDWASERP WAS SET)                  @G382P2F
RT1TTRTS EQU   X'04'        IF ON, IEAVTRTM HAS GONE TO IEAVTRTS
*                                                              @G382P1F
RT1TNSS  EQU   X'02'        IF ON, RT1 WAS ENTERED WITH THE PSANSS
*                           BIT ON                             @ZMB0189
RT1TREGS DS    5F           CHECKPOINTED REGISTERS             @G382P2F
*     ***************************************************************
*     * LOGICAL PHASE NUMBERS USED WITH THE RT1TLPN FIELD.          *
*     * THESE NUMBERS ARE ASSIGNED TO THE VARIOUS UNIQUE PHASES     *
*     * OF THE RTM1 TO ASSIST IN RECOVERY ACTIONS PERFORMED BY      *
*     * THE RTM1S FRRS OR LOGICAL PHASE RECOVERY ROUTINES (LPRRS).  *
*     ***************************************************************
VALIDREC EQU   X'FF'        ANTICIPATED VALID RECURSION IN RTM @G382P2F
*                           MGR                                @G382P2F
FRRRECUR EQU   X'FE'        ANTICIPATED VALID RECURSION IN AN  @G382P2F
*                           FRR                                @G382P2F
RMGRCML  EQU   X'FD'        ANTICIPATED VALID RECURSION FOR    @G382P2F
*                           INITIAL ENTRY OF CALLRTM           @G382P2F
*                           TYPE=RMGRCML                       @G382P2F
RT1MGRLO EQU   X'00'        BEGINNING OF MANAGEMENT FUNCTIONS  @G382P2F
*                           RANGE OF LPNS                      @G382P2F
MGRINIT  EQU   X'01'        LPN FOR MGR INITIALIZE PHASE       @G382P2F
POSTRTS  EQU   X'02'        COMPLETION OF SYSTEM RECOVERY      @G382P2F
*                           PROCESSING LPN                     @G382P2F
NORTS    EQU   X'03'        NO SYSTEM RECOVERY PROCESSING LPN  @G382P2F
*                           LPN                                @G382P2F
CPURSTRT EQU   X'04'        ISSUE RESTART ON LOOPING CPU LPN   @G382P2F
NORSTRT  EQU   X'05'        UNSUCCESSFUL ISSUANCE OF RESTART   @G382P2F
*                           LPN                                @G382P2F
RT1MGRHI EQU   X'1D'        ENDING OF MANAGEMENT FUNCTIONS     @G382P2F
*                           RANGE OF LPNS                      @G382P2F
RT1MCHLO EQU   X'1E'        BEGINNING OF MACHCK FUNCTIONS      @G382P2F
*                           RANGE OF LPNS                      @G382P2F
RTHEEDS  EQU   X'20'        RTHS EED PHASE LPN                 @G382P2F
RTHTIMER EQU   X'21'        RTHS CLOCK REPAIR PHASE LPN        @G382P2F
RTHSTRG1 EQU   X'22'        RTHS STORAGE REPAIR PHASE 1 LPN    @G382P2F
RTHPARMS EQU   X'23'        RTHS RSR PARAMETER LIST PHASE LPN  @G382P2F
RTHSTRG2 EQU   X'24'        RTHS STORAGE REPAIR PHASE 2 LPN    @G382P2F
RTHRECRD EQU   X'25'        RTHS ERROR RECORDING PHASE LPN     @G382P2F
RTHSOFTW EQU   X'26'        RTHS SOFTWARE INFORMATION PHASE    @G382P2F
*                           LPN                                @G382P2F
RTHEXIT  EQU   X'27'        RTHS EXIT PHASE LPN                @G382P2F
RT1MCHHI EQU   X'3B'        ENDING OF MACHINE CHECK FUNCTIONS  @G382P2F
*                           RANGE OF LPNS                      @G382P2F
RT1SRMLO EQU   X'3C'        BEGINNING OF RTS FUNCTIONS RANGE   @G382P2F
*                           OF LPN                             @G382P2F
RT1SRMHI EQU   X'59'        ENDING OF RTS FUNCTIONS RANGE OF   @G382P2F
*                           LPN                                @G382P2F
RT1RESLO EQU   X'5A'        BEGINNING OF RESCHEDULE FUNCTIONS  @G382P2F
*                           RANGE OF LPNS                      @G382P2F
RESRTYLO EQU   X'5A'        BEGINNING OF RESCHEDULE LPNS FOR   @G382P2F
*                           WHICH RETRY IS POSSIBLE            @G382P2F
SRBEED   EQU   X'5A'        EED PROCESSING TO OBTAIN AN SRB    @G382P2F
*                           LPN                                @G382P2F
XMEEDS   EQU   X'5B'        EED PROCESSING FOR XMABTRM LPN     @G382P2F
RT2EEDS  EQU   X'5C'        EED PROCESSING FOR RTM2 RESCHEDULE @G382P2F
*                           LPN                                @G382P2F
RT1EEDS  EQU   X'5D'        EED PROCESSING FOR RTM1 RESCHEDULE @G382P2F
*                           LPN                                @G382P2F
RESRTYHI EQU   X'5D'        END OF RESCHEDULE LPNS FOR WHICH   @G382P2F
*                           RETRY IS POSSIBLE RESCHEDULE       @G382P2F
RESCHED  EQU   X'5E'        FUNCTION LPN                       @G382P2F
FREESRB  EQU   X'60'        SRB PROCESSING PRIOR TO SCHEDULE   @G382P2F
*                           LPN                                @G382P2F
SRBCOMP  EQU   X'61'        SRB PROCESSING COMPLETE LPN        @G382P2F
RESRTM2  EQU   X'62'        RESCHEDULE RTM2 LPN                @G382P2F
TCBTERM  EQU   X'63'        LOGICAL TERMINATION OF TASK LPN    @G382P2F
RESRTM1  EQU   X'64'        RESCHEDULE RTM1 LPN                @G382P2F
MEMTERM  EQU   X'65'        ENQUEUE OF ASCB ON MEMTERM QUEUE   @G382P2F
MEMTCOMP EQU   X'66'        MEMTERM COMPLETION LPN             @G382P2F
RT1RESHI EQU   X'77'        ENDING OF RESCHEDULE FUNCTIONS     @G382P2F
*                           RANGES OF LPNS                     @G382P2F
RT1EXTLO EQU   X'78'        BEGINNING OF EXIT FUNCTIONS RANGE  @G382P2F
*                           OF LPNS                            @G382P2F
EEDFREE  EQU   X'78'        EED PROCESSING TO FREE UNNEEDED    @G382P2F
*                           EEDS LPNS                          @G382P2F
FREERTCA EQU   X'79'        FREEMAIN ACQUIRED SDWA LPN         @G382P2F
EEDFREE2 EQU   X'7A'        EED PROCESSING TO FREE UNNEEDED    @G382P2F
*                           EEDS LPN (FIRST CALL FROM          @G382P2F
*                           SRBTSKDQ)                          @G382P2F
EEDFREE3 EQU   X'7B'        EED PROCESSING TO FREE UNNEEDED    @G382P2F
*                           EEDS LPN (SECOND CALL FROM         @G382P2F
*                           SRBTSKDQ)                          @G382P2F
EEDFREE4 EQU   X'7C'        EED PROCESSING TO FREE UNNEEDED    @G382P2F
*                           EEDS LPN (THIRD CALL FROM          @G382P2F
*                           SRBTSKDQ)                          @G382P2F
RT1EXTHI EQU   X'95'        ENDING OF EXIT FUNCTOPMS RANGE OF  @G382P2F
*                           LPNS                               @G382P2F
         MEND           */
*%RT1WPLS: ;
*     %IF RTM1WA='NO'
*       %THEN %GOTO RTMCDCL;
*     /***************************************************************/
*     /*THE RTM1WA IS USED BY THE RTM1 (MODULES IEAVTRTM, IEAVTRTS)  */
*     /*WHENEVER THE RTM1 IS OPERATING IN SECOND LEVEL INTERRUPT     */
*     /*HANDLER MODE.  THE FIXED ASSIGMENTS SECTION OF THE WA IS USED*/
*     /*FOR RECOVERY.  THAT IS, SHOULD AN ERROR OCCUR DURING RTM1'S  */
*     /*PROCESSING, THIS PART OF THE RTM1WA WILL CONTAIN SUFFICIENT  */
*     /*DATA TO ALLOW THE RTM1S RECOVERY ROUTINES TO RESUME NORMAL   */
*     /*PROCESSING.  THE VARIABLE SECTION OF THE WORK AREA IS SPACE  */
*     /*AVAILABLE FOR DEFINITION BY THE PRIVATE SUBFUNCTIONS OF THE  */
*     /*RTM1 (I.E. IT IS MAPPED BY THE VARIOUS SUBFUNCTIONS).        */
*     /***************************************************************/
*     DECLARE
*        1 RT1W DEFINED(FRRSRTMW),     /*THE RTM1 WORK AREA          */
*          2 RT1WTRTM,                 /*PART OF RT1W USED FROM
*                                        IEAVTRTM ON         @G382P2F*/
*           3 RT1WNPRS BDY(WORD),      /*DATA NOT PRESERVED ON VALID
*                                        ANTICIPATED RECURSION       */
*              4 RT1WLPTA(6) FIXED(31),/*TRACKING AREA FOR LOGICAL
*                                        PHASE RECOVERY PROCESSING
*                                        MAPPED BY RT1TRACK BELOW    */
*              4 RT1WPSW1 PTR(31),     /*CHECKPOINTED PTR TO PSW1    */
*              4 RT1WPSW2 PTR(31),     /*CHECKPOINTED PTR TO PSW2    */
*              4 RT1WVARI(5) PTR(31),  /*VARIABLE FIELDS IN WA       */
*           3 RT1WPRSV BDY(WORD),      /*DATA TO BE PRESERVED ON
*                                        VALID ANTICIPATED RECURSION */
*              4 RT1WRTCA PTR(31),     /*POINTR TO THE SDWA CURNTLY IN
*                                        USE (USED BY RTS)   @Z40FQXH*/
*              4 RT1WSRBR PTR(31),     /*POINTER TO THE CHAIN PREFIX
*                                        (SEE RTMCHDR) AND SDWA
*                                        AQUIRED FROM SQA BY IEAVTRTS
*                                                            @G382PPY*/
*              4 RT1WEED PTR(31),      /*POINTER TO EEDS ACQUIRED    */
*              4 RT1WENTR FIXED(31),   /*ENTRY POINT DATA            */
*                 5 RT1WMODE BIT(8),   /*SYSTEM MODE AT TIME OF ERROR
*                                        (SEE MODEBYTE AT THE END OF
*                                        RT1W FOR A DESCRIPTION OF
*                                        THIS BYTE)                  */
*                 5 RT1WSRMD BIT(8),   /*SYSTEM RECOVERY MODE        */
*                 5 RT1WCOVR BIT(8),   /*PRESERVED CARRY OVER INFORM-
*                                        ATION ON VALID RECURSIONS    */
*                   6 RT1WCLUP BIT(1), /*CLEANUP AND PERCOLATE
*                                        INDICATION                  */
*                   6 RT1WRTM BIT(1),  /*IF ON, INDICATES RTM'S FRR
*                                        WAS IN CONTROL AT THE TIME
*                                        OF THE ERROR                */
*                   6 RT1WFAIL BIT(1), /*IF ON, RTM1 ISSUED A CMSET
*                                        MACRO WHICH EITHER ISSUED
*                                        ABEND OR RETURNED A NON ZERO
*                                        RETURN CODE         @G382PPY*/
*                   6 RT1WRSTW BIT(1), /*IF ON, RTS HAS ALREADY
*                                        CLEARED THE CVT RESTART WORD
*                                        (CVTRSTWD)          @G382PPY*/
*                   6 RT1WEREX BIT(1), /*USED IN EEDPROC TO INDICATE
*                                        AN ERRORID HAS BEEN PLACED
*                                        IN AN EED. IT IS SET OFF
*                                        BEFORE EXITING FROM EEDPROC
*                                                            @G17EP5W*/
*                   6 RT1NODMP BIT(1), /*SET BY SLIP TO INFORM DUMPING
*                                        PROGRAMS THAT DUMP REQUESTS
*                                        SHOULD BE IGNORED FOR THIS
*                                        INVOKATION OF RTM   @G33NPHE*/
*                   6 RT1WSLST BIT(1), /*IF ON, AT LEAST ONE FRR HAS
*                                        SUPPLIED DUMP RANGES TO RTS
*                                        OR DUMP RANGES WERE SUPPLIED
*                                        BY THE ISSUER OF ABEND
*                                                            @G382PPY*/
*                   6 RT1WGFAI BIT(1), /*IF ON, RTS ATTEMPTED TO
*                                        ACQUIRE AN SDWA FROM SQA BUT
*                                        THE GETMAIN REQUEST WAS
*                                        UNSUCCESSFUL        @G382PPY*/
*                 5 RT1WLPN PTR(8),    /*INITIAL LOGICAL PHASE NUMBER
*                                        ON ENTRY TO RTM     @ZA20321*/
*              4 RT1WASCB PTR(31),     /*ASCB ADDR OF CML ADDRESS
*                                        SPACE               @G382P1F*/
*              4 RT1WENT2 CHAR(4),     /*ENTRY POINT DATA    @G382P2F*/
*                 5 RT1WCOV2 BIT(8),   /*PRESERVED CARRY OVER
*                                        INFORMATION ON VALID
*                                        RECURSIONS          @ZA20321*/
*                   6 RT1WSKIP BIT(1), /*IF ON, AT LEAST ONE FRR IN
*                                        THE PERCOLATION PATH HAS
*                                        BEEN SKIPPED        @G382P2F*/
*                   6 RT1WRMGR BIT(1), /* IF ON, RTM1 IS PROCESSING THE
*                                        FRR STACK ON  BEHALF OF A
*                                        CALLRTM TYPE=RMGRCML
*                                                            @G382PPY*/
*                 5 RT1WRSV  CHAR(3),  /*RESERVED            @G382P2F*/
*          2 RT1WTRT1,                 /*PART OF RT1W USED FROM
*                                        IEAVTRT1 ON         @G382P2F*/
*           3 RT1WXM  CHAR(8),         /*CROSS MEMORY INFORMATION AT
*                                        TIME OF ERROR       @G382P2F*/
*              4 RT1WCR3  CHAR(4),     /*CONTROL REGISTER 3 AT TIME
*                                        OF ERROR            @G382P2F*/
*                 5 RT1WKM   CHAR(2),  /*KEY MASK            @G382P2F*/
*                 5 RT1WSAS  CHAR(2),  /*SASID               @G382P2F*/
*              4 RT1WCR4  CHAR(4),     /*CONTROL REGISTER 4 AT TIME
*                                        OF ERROR            @G382P2F*/
*                 5 RT1WAX   CHAR(2),  /*AUTHORIZATION INDEX @G382P2F*/
*                 5 RT1WPAS  CHAR(2),  /*PASID               @G382P2F*/
*           3 RT1WSAV1 PTR(31),        /*WORK/SAVE AREA FOR RTM
*                                                            @G382P2F*/
*        1 RT1RTRN  DEFINED(FRRSRTMW), /*THE RTM1 WORK AREA IS USED TO
*                                        CONTAIN RETRY REGISTERS IF
*                                        AN FRR SUCCESSFULLY RETRYS. A
*                                        LM INTRUCTION IS ISSUED FROM
*                                        THE WA BEFORE THE RETRY ROU-
*                                        TIME IS GIVEN CONTROL       */
*          2 *        FIXED(31),        /*FIRST WORD NOT OVERLAID    */
*          2 RT1RTRRG CHAR(64) BDY(WORD),/*16 REGISTERS FOR RETRY    */
*            3 RT1R0R14 CHAR(60),       /*RETRY REGS 0 THRU 14       */
*            3 RT1RTYAD PTR(31),        /*RETRY ADDRESS IN REG15 SLOT
*                                                            @G382P1F*/
*          2 *        CHAR(16),         /* RESERVED          @G382P1F*/
*          2 RT1RTRMK CHAR(4),          /* RETRY MASK        @G382P1F*/
*            3 *      CHAR(3),          /* RESERVED          @G382P1F*/
*            3 RT1RTMSK CHAR(1);        /* RETRY MASK-PASSED FROM
*                                          IEAVTRTM TO IEAVTRT1
*                                                            @G382P1F*/
*     /***************************************************************/
*     /*THE RTM1 TRACKING AREA IS LOCATED IN ONE OF TWO PLACES       */
*     /*DEPENDING ON THE TYPE OF RECOVERY APPROPRIATE FOR ANY SECTION*/
*     /*OF THE RTM1'S PROCESSING. WHEN ACTING AS A SECOND LEVEL      */
*     /*INTERRUPT HANDLER, THE RTM1 DOES ITS TRACKING IN THE RTM1WA. */
*     /*WHEN OPERATING IN A MODE THAT ALLOWS FRR PROTECTION, THE     */
*     /*RTM1 DOES ITS TRACKING IN THE FRRPARMS FIELD ASSIGNED BY     */
*     /*THE SETFRR MACRO. A COMMON MAPPING IS PROVIDED TO ALLOW FOR  */
*     /*INDEPENDENCE IN THE MAINLINE RTM1 AND IN THE RECOVERY ROUTINE*/
*     /*WITH RESPECT TO THE TYPE OF RECOVERY SCHEME EMPLOYED.        */
*     /***************************************************************/
*     DECLARE
*        1 RT1TRACK BASED,             /*COMMON TRACKING AREA MAPPING
*                                        FOR RTM1 RECOVERY           */
*           2 RT1TRECC FIXED(31),      /*RECURSION CONTROL DATA      */
*              3 RT1TLPN PTR(8),       /*LOGICAL PHASE NUMBER        */
*              3 RT1TLPID PTR(8),      /*LOGICAL PHASE  REC RTN ID   */
*              3 RT1TENPT CHAR(1),     /*ORIGINAL ENTRY POINT        */
*              3 RT1TACQR BIT(8),      /*RESOURCES ACQUIRED BY RTM1  */
*                4 RT1TDISP BIT(1),    /*DISPATCHER LOCK ACQUIRED    */
*                4 RT1TLLCK BIT(1),    /*LOCAL LOCK ACQUIRED BY RT1  */
*                4 RT1TRETY BIT(1),    /*RT1 ATTEMPTED RETRY         */
*                4 RT1TSBIT BIT(1),    /*PSW S-BIT FOR RETRY ROUTINE.
*                                        USED BY RT1 & RTM   @G382P1F*/
*                4 RT1TSERP BIT(1),    /*IF ON, SERIALIZE SRB TO TASK
*                                        PERCOLATION (USED TO INDICATE
*                                        SDWASERP WAS SET)   @G382P2F*/
*                4 RT1TTRTS BIT(1),    /*IF ON, IEAVTRTM HAS GONE TO
*                                        IEAVTRTS            @G382P1F*/
*                4 RT1TNSS BIT(1),     /*IF ON, RT1 WAS ENTERED WITH
*                                        PSANSS BIT ON       @ZMB0189*/
*           2 RT1TREGS(5) PTR(31),     /*CHECKPOINTED REGISTERS      */
*     /***************************************************************/
*     /* LOGICAL PHASE NUMBERS USED WITH THE RT1TLPN FIELD.          */
*     /* THESE NUMBERS ARE ASSIGNED TO THE VARIOUS UNIQUE PHASES     */
*     /* OF THE RTM1 TO ASSIST IN RECOVERY ACTIONS PERFORMED BY      */
*     /* THE RTM1S FRRS OR LOGICAL PHASE RECOVERY ROUTINES (LPRRS).  */
*     /***************************************************************/
*        VALIDREC PTR(8) CONSTANT(255),/*ANTICIPATED VALID RECURSION
*                                        IN RTM MGR          @ZA20321*/
*        FRRRECUR PTR(8) CONSTANT(254),/*ANTICIPATED VALID RECURSION
*                                        IN AN FRR           @ZA20321*/
*        RMGRCML PTR(8) CONSTANT(253), /*ANTICIPATED VALID RECURSION
*                                        FOR INITIAL ENTRY OF
*                                        CALLRTM TYPE=RMGRCML
*                                                            @G382PPY*/
*        RT1MGRLO PTR(8) CONSTANT(0),  /*BEGINNING OF MANAGEMENT FUNC-
*                                        TIONS RANGE OF LPNS         */
*        MGRINIT PTR(8) CONSTANT(1),   /*LPN FOR MGR INITIALIZE PHASE*/
*        POSTRTS PTR(8) CONSTANT(2),   /*COMPLETION OF SYSTEM RECOVERY
*                                        PROCESSING LPN              */
*        NORTS PTR(8) CONSTANT(3),     /*NO SYSTEM RECOVERY PROCESSING
*                                        LPN                         */
*        CPURSTRT PTR(8) CONSTANT(4),  /*ISSUE RESTART ON LOOPING CPU
*                                        LPN                         */
*        NORSTRT PTR(8) CONSTANT(5),   /*UNSUCCESSFUL ISSUANCE OF
*                                        RESTART LPN                 */
*        RT1MGRHI PTR(8) CONSTANT(29), /*ENDING OF MANAGEMENT FUNC-
*                                        TIONS RANGE OF LPNS         */
*        RT1MCHLO PTR(8) CONSTANT(30), /*BEGINNING OF MACHCK FUNC-
*                                        TIONS RANGE OF LPNS         */
*        RTHEEDS  PTR(8) CONSTANT(32), /*RTHS EED PHASE LPN          */
*        RTHTIMER PTR(8) CONSTANT(33), /*RTHS CLOCK REPAIR PHASE LPN */
*        RTHSTRG1 PTR(8) CONSTANT(34), /*RTHS STORAGE REPAIR PHASE 1
*                                        LPN                         */
*        RTHPARMS PTR(8) CONSTANT(35), /*RTHS RSR PARAMETER LIST
*                                        PHASE LPN                   */
*        RTHSTRG2 PTR(8) CONSTANT(36), /*RTHS STORAGE REPAIR PHASE 2
*                                        LPN                         */
*        RTHRECRD PTR(8) CONSTANT(37), /*RTHS ERROR RECORDING PHASE
*                                        LPN                         */
*        RTHSOFTW PTR(8) CONSTANT(38), /*RTHS SOFTWARE INFORMATION
*                                        PHASE LPN                   */
*        RTHEXIT  PTR(8) CONSTANT(39), /*RTHS EXIT PHASE LPN         */
*        RT1MCHHI PTR(8) CONSTANT(59), /*ENDING OF MACHINE CHECK FUNC-
*                                        TIONS RANGE OF LPNS         */
*        RT1SRMLO PTR(8) CONSTANT(60), /*BEGINNING OF RTS FUNCTIONS
*                                        RANGE OF LPNS       @Z40FQXH*/
*        RT1SRMHI PTR(8) CONSTANT(89), /*ENDING OF RTS FUNCTIONS
*                                        RANGE OF LPNS       @Z40FQXH*/
*        RT1RESLO PTR(8) CONSTANT(90), /*BEGINNING OF RESCHEDULE FUNC-
*                                        TIONS RANGE OF LPNS         */
*        RESRTYLO PTR(8) CONSTANT(90), /*BEGINNING OF RESCHEDULE LPNS
*                                        FOR WHICH RETRY IS POSSIBLE */
*        SRBEED PTR(8) CONSTANT(90),   /*EED PROCESSING TO OBTAIN AN
*                                        SRB LPN                     */
*        XMEEDS PTR(8) CONSTANT(91),   /*EED PROCESSING FOR XMABTRM
*                                        LPN                         */
*        RT2EEDS PTR(8) CONSTANT(92),  /*EED PROCESSING FOR RTM2
*                                        RESCHEDULE LPN              */
*        RT1EEDS PTR(8) CONSTANT(93),  /*EED PROCESSING FOR RTM1
*                                        RESCHEDULE LPN              */
*        RESRTYHI PTR(8) CONSTANT(93), /*END OF RESCHEDULE LPNS FOR
*                                        WHICH RETRY IS POSSIBLE     */
*        RESCHED PTR(8) CONSTANT(94),  /*RESCHEDULE FUNCTION LPN     */
*        FREESRB PTR(8) CONSTANT(96),  /*SRB PROCESSING PRIOR TO
*                                        SCHEDULE LPN                */
*        SRBCOMP PTR(8) CONSTANT(97),  /*SRB PROCESSING COMPLETE LPN */
*        RESRTM2 PTR(8) CONSTANT(98),  /*RESCHEDULE RTM2 LPN         */
*        TCBTERM PTR(8) CONSTANT(99),  /*LOGICAL TERMINATION OF TASK
*                                        LPN                         */
*        RESRTM1 PTR(8) CONSTANT(100), /*RESCHEDULE RTM1 LPN         */
*        MEMTERM PTR(8) CONSTANT(101), /*ENQUEUE OF ASCB ON MEMTERM
*                                        QUEUE LPN                   */
*        MEMTCOMP PTR(8) CONSTANT(102), /*MEMTERM COMPLETION LPN     */
*        RT1RESHI PTR(8) CONSTANT(119),/*ENDING OF RESCHEDULE FUNC-
*                                        TIONS RANGE OF LPNS         */
*        RT1EXTLO PTR(8) CONSTANT(120),/*BEGINNING OF EXIT FUNC-
*                                        TIONS RANGE OF LPNS         */
*        EEDFREE PTR(8) CONSTANT(120), /*EED PROCESSING TO FREE
*                                        UNNEEDED EEDS LPN           */
*        FREERTCA PTR(8) CONSTANT(121), /*FREEMAIN ACQUIRED SDWA LPN
*                                                            @Z40FQXH*/
*        EEDFREE2 PTR(8) CONSTANT(122), /*EED PROCESSING TO FREE
*                                        UNNEEDED EEDS LPN (FIRST CALL
*                                        FROM SRBTSKDQ)      @G382P2F*/
*        EEDFREE3 PTR(8) CONSTANT(123), /*EED PROCESSING TO FREE
*                                        UNNEEDED EEDS LPN (SECOND CALL
*                                        FROM SRBTSKDQ)      @G382P2F*/
*        EEDFREE4 PTR(8) CONSTANT(124), /*EED PROCESSING TO FREE
*                                        UNNEEDED EEDS LPN (THIRD CALL
*                                        FROM SRBTSKDQ)      @G382P2F*/
*        RT1EXTHI PTR(8) CONSTANT(149);/*ENDING OF EXIT FUNC-
*                                        TIONS RANGE OF LPNS         */
*%RTMCDCL:;
*     %IF RTMC='NO'
*       %THEN %GOTO ENPTDCL;
* /*******************************************************************/
* /*  THE FOLLOWING HEADER PRECEEDS ALL SDWAS GETMAINED BY   @G382PPY*/
* /*  RTM1. IT IS USED TO ANCHOR THE SDWAS OFF THE ASCB SO   @G382PPY*/
* /*  THAT THEY MAY BE FREED AT MEMORY TERMINATION TIME.     @G382PPY*/
* /*  THIS WOULD BE NECESSARY IF THEY WERE NOT SUCCESSFULLY  @G382PPY*/
* /*  FREED AT THE END OF RTM1 PROCESSING.                   @G382PPY*/
* /*******************************************************************/
* DCL 1 RTMCHDR BASED,              /*                       @G382PPY*/
*       2 RTMCCPTR PTR(31),         /*ADDRESS OF NEXT BLOCK ON
*                                     THE CHAIN              @G382PPY*/
*       2 RTMCSBLN FIXED(32),       /*SUBPOOL AND LENGTH OF AREA
*                                                            @G382PPY*/
*         3 RTMCSUBP PTR(8),        /*THE STORAGE SUBPOOL NUMBER
*                                                            @G382PPY*/
*         3 RTMCLNGT PTR(24);       /*THE STORAGE LENGTH. IT INCLUDES
*                                     THE LENGTH OF THIS HEADER AND
*                                     THE LENGTH OF THE SDWA @G382PPY*/
*%ENPTDCL:;
*     %IF ENPT='NO'
*       %THEN %GOTO RTMBDCL;
*     /***************************************************************/
*     /* THE FOLLOWING CONSTANTS ARE USED WITH THE RT1TENPT FIELD,   */
*     /* THE EEDERTYP FIELD, THE TCBERTYP FIELD, RTM1'S FUNCTION     */
*     /* REGISTER, AND THE RTITLPID FIELD.                           */
*     /***************************************************************/
*     DECLARE
*        SLIHLOW  PTR(8) CONSTANT(1),  /*BEGIN RANGE OF SLIH MODE EP */
*        RT1WPCFL PTR(8) CONSTANT(1),  /*PCFLIH ENTRY PT             */
*        RT1WREST PTR(8) CONSTANT(2),  /*RESTART ENTRY PT            */
*        RT1WSVC  PTR(8) CONSTANT(3),  /*SVCFLIH ENTRY PT            */
*        RT1WDAT  PTR(8) CONSTANT(4),  /*DATERR ENTRY PT             */
*        RT1WMCHR PTR(8) CONSTANT(5),  /*MACHINE CHECK REENTRY       */
*        RT1WSTM2 PTR(8) CONSTANT(6),  /*STERM REENTRY       @G381P2F*/
*        SLIHHI   PTR(8) CONSTANT(9),  /*END   RANGE OF SLIH MODE EP */
*        SRVCLOW  PTR(8) CONSTANT(10), /*BEGIN RANGE OF SRVCE RTN EP */
*        MODELOW  PTR(8) CONSTANT(10), /*BEGIN RANGE OF RESCH MODE   */
*        RT1WSTM1 PTR(8) CONSTANT(10), /*STERM ENTRY PT      @G381P2F*/
*        RT1WABT1 PTR(8) CONSTANT(11), /*ABTERM ENTRY PT             */
*        RT1WABT2 PTR(8) CONSTANT(12), /*CVTBTRM ENTRY PT            */
*        RT1WABT3 PTR(8) CONSTANT(13), /*XMABTRM ENTRY PT            */
*        ABTRMCUR PTR(8) CONSTANT(14), /*ABTERM THE CURRENT TCB      */
*        MODEHI   PTR(8) CONSTANT(14), /*END   RANGE OF RESCHD MODE  */
*        RT1WMEMT PTR(8) CONSTANT(15), /*MEMTERM ENTRY PT            */
*        RT1WXMAB PTR(8) CONSTANT(16), /*CROSS MEMORY ABTERM EP      */
*        RSCHDCPU PTR(8) CONSTANT(17), /*RESCHEDULE RTM1 ON OTHER CPU*/
*        SRVCHI   PTR(8) CONSTANT(19), /*END   RANGE OF SRVCE RTN EP */
*        RT1WMACH PTR(8) CONSTANT(20), /*MACHCK ENTRY PT             */
*        TAKEEXIT PTR(8) CONSTANT(30), /*FORCE PREMATURE EXIT        */
*        RT1RETRY PTR(8) CONSTANT(32), /*A RETRY EXIT IS TO BE TAKEN */
*        RT1MCHEX PTR(8) CONSTANT(33), /*A MCH EXIT IS TO BE TAKEN   */
*        RT1RESUM PTR(8) CONSTANT(34), /*RESTART RESUME TO BE TAKEN  */
*        RT1DISP  PTR(8) CONSTANT(35), /*DISPATCHER EXIT TO BE TAKEN */
*        RT1SRBEX PTR(8) CONSTANT(36), /*AN SRB EXIT IS TO BE TAKEN  */
*        RT1EXPRO PTR(8) CONSTANT(37), /*EXIT PROLOG EXIT TO BE TAKEN*/
*        RT1RET   PTR(8) CONSTANT(38), /*RETURN TO CALLER TO BE TAKEN*/
*        RECOVRY1 PTR(8) CONSTANT(1);  /*LPID TO INDICATE SIMPLEST
*                                        LEVEL OF RECOVERY           */
*%RTMBDCL:;
*     %IF RTMB='NO'
*       %THEN %GOTO MODEDCL;
*     /***************************************************************/
*     /* THE RTM BRANCH TABLE RESIDES IN MODULE IEAVTRT1 AND IS USED */
*     /* BY THE CALLRTM MACRO TO CALCULATE THE CORRECT ENTRY POINT   */
*     /* INTO THE RTM1 BASED ON USER SUPPLIED PARAMETERS TO THE      */
*     /* MACRO. THIS MAPPING IS PROVIDED TO ALLOW NIP TO BUILD A     */
*     /* DUMMY BRANCH TABLE TO INTERCEPT ALL CALLRTM REQUESTS DURING */
*     /* NIP PROCESSING.                                             */
*     /***************************************************************/
*     DECLARE
*      1 RTMBRTAB BDY(WORD) BASED(CVTBTERM),/*RTM BRANCH TABLE       */
*        2 RTMBTERM CHAR(8) BDY(WORD), /*INITIAL ENTRY POINT INSTRUC-
*                                        TIONS FOR CVTBTERM BRANCH   */
*          3 RTMBBALR CHAR(2),         /* BALR 15,0 INSTRUCTION      */
*          3 RTMBBRAN CHAR(4),         /* BRANCH INSTRUCTION         */
*          3 RTMBPAD2 CHAR(2),         /*2 BYTES OF PADDING          */
*        2 RTMBDAT  PTR(31),           /*ENTRY IF TYPE = DATERR      */
*        2 RTMBREST PTR(31),           /*ENTRY IF TYPE = RESTART     */
*        2 RTMBMACH PTR(31),           /*ENTRY IF TYPE = MACHCK      */
*        2 RTMBSVC  PTR(31),           /*ENTRY IF TYPE = SVCERR      */
*        2 RTMBSTRM PTR(31),           /*ENTRY IF TYPE = STERM
*                                                            @G381P2F*/
*        2 RTMBCABT PTR(31),           /*ENTRY IF TYPE = ABTERM AND
*                                        NO ASID WAS PROVIDED        */
*        2 RTMBMEMT PTR(31),           /*ENTRY IF TYPE = MEMTERM     */
*        2 RTMBPROG PTR(31),           /*ENTRY IF TYPE = PROGCK      */
*        2 RTMBACR  PTR(31),           /*ENTRY IF TYPE = ACR         */
*        2 RTMBXABT PTR(31),           /*ENTRY IF TYPE = ABTERM AND
*                                        AN ASID WAS PROVIDED        */
*        2 RTMBRMGR PTR(31);           /*ENTRY IF TYPE = RMGRCML
*                                                            @G381P2F*/
*%MODEDCL:;
*     %IF MODE='NO'
*       %THEN %GOTO EEDSDCL;
*     /***************************************************************/
*     /* THE FOLLOWING STRUCTURE DEFINES A ONE BYTE FIELD WHICH IS   */
*     /* USED TO MAP THE CONTENTS OF THE FOLLOWING FIELDS: RT1WMODE  */
*     /* AND EEDERMOD.                                               */
*     /***************************************************************/
*     DECLARE
*       1 MODEBYTE PTR(8) BASED,       /*SYSTEM MODE AT ERROR TIME   */
*         2 MODESUPR BIT(1),           /*SUPERVISOR CONTROL MODE     */
*         2 MODEDIS BIT(1),            /*PHYSICALLY DISABLED MODE    */
*         2 MODEGSPN BIT(1),           /*GLOBAL SPIN LOCK MODE       */
*         2 MODEGSUS BIT(1),           /*GLOBAL SUSPEND LOCK MODE    */
*         2 MODELOC BIT(1),            /*LOCALLY LOCKED MODE         */
*         2 MODETYP1 BIT(1),           /*TYPE 1 SVC MODE             */
*         2 MODESRB BIT(1),            /*SRB MODE                    */
*         2 MODETCB BIT(1);            /*TASK MODE                   */
*%EEDSDCL:;
*     %IF EEDS='NO'
*       %THEN %GOTO RT1WEND;
*     /***************************************************************/
*     /* EXTENDED ERROR DESCRIPTORS (EEDS) ARE USED TO PASS DATA     */
*     /* CONCERNING AN ERROR TO THE VARIOUS COMPONANTS OF THE RTM.   */
*     /* EEDS ARE ALLOCATED VIA GETCELL FROM THE RT1 QUICKCELL POOL. */
*     /* THE FORMAT OF THE EEDS IS GOVERNED BY THE TYPE OF DATA IT   */
*     /* CONTAINS. THERE IS AN EED TYPE FOR REGISTERS, PSW,          */
*     /* AND CROSS MEMORY INFORMATION,                       @G381P2F*/
*     /* FOR DUMP OPTIONS, AND FOR MACHINE CHECK REPAIR INFORMATION. */
*     /* EACH EED HAS A COMMON HEADER THAT CONTAINS A FORWARD CHAIN  */
*     /* POINTER, AN INDICATION OF THE TYPE OF  EED, AND INFORMATION */
*     /* CONCERNING THE CHAIN OF EEDS                                */
*     /***************************************************************/
*     DECLARE
*       1 EED CHAR(100) BDY(WORD) BASED, /*EXTENDED ERROR DESCRIPTOR
*                                                            @G381P2F*/
*         2 EEDFWRDP PTR(31),          /*POINTER TO NEXT EED ON CHAIN
*                                        OR ZERO                     */
*         2 EEDDES  CHAR(4) BDY(WORD), /*DESCRIPTION OF EED CONTENTS */
*           3 EEDID   CHAR(1),         /*TYPE OF INFORMATION IN EED  */
*           3 EEDFLAGS CHAR(1),        /*FLAGS DESCRIBING INFORMATION
*                                        IN EEDS             @G17EP5W*/
*            4 EEDERFL BIT(1),         /*ON MEANS ERRORID IN EED
*                                        THE ERRORID MAY BE IN THE
*                                        DUMPS OPTIONS EED, THE
*                                        HARDWARE REPAIR EED, OR MAY
*                                        RESIDE BY ITSELF IN AN EED
*                                                            @G17EP5W*/
*            4 EEDNODMP BIT(1),        /*USED TO COMMUNICATE DUMP
*                                      SUPPRESSION BY SLIP FROM RTM1
*                                      TO RTM2               @G33NPHE*/
*            4 EEDSPI   BIT(1),        /*ON MEANS THIS EED IS PART
*                                      OF AN SPI CONTROL BLOCK (NOT
*                                      FROM THE EED POOL)    @G33NPHE*/
*            4 EEDSRBTP BIT(1),        /*ON MEANS THIS EED WAS CREATED
*                                      FOR SRB-TO-TASK PERCOLATION
*                                      PROCESSING            @G388PPY*/
*            4 *       BIT(4),         /*RESERVED            @G388PPY*/
*           3 *       CHAR(2),         /*RESERVED            @G17EP5W*/
*         2 EEDERROR CHAR(4) BDY(WORD),/*DESCRIPTION OF THE ERROR
*                                        WHICH NECESSITATETED EEDS   */
*           3 EEDMODE  PTR(8),         /*SYSTEM MODE AT TIME OF ERR  */
*           3 EEDERTYP  CHAR(1),       /*ENTRY PT USED BY RTM1       */
*           3 EEDASID FIXED(15),       /*ASID OF ORIGINATING MEMORY
*                                        IN CROSS MEMORY ABENDS      */
*         2 EEDVARBL CHAR(88) BDY(WORD),/*VARIABLE PART OF EED, MAPPED
*                                        SEPERATELY BELOW    @G381P2F*/
*       /*************************************************************/
*       /* CONSTANTS USED WITH THE EEDID AND TCBRTM12 FIELDS         */
*       /*************************************************************/
*       EEDNULL PTR(31) CONSTANT(1),   /*THE TCBRTM12 FIELD IS SET TO
*                                        THIS VALUE IF AN EED COULD
*                                        NOT BE OBTAINED             */
*       REGSPTYP PTR(8) CONSTANT(1),   /*INDICATES THE EEDVARBL FIELD
*                                        IS MAPPED BY EEDREGSP       */
*       DUMPOTYP PTR(8) CONSTANT(2),   /*INDICATES THE EEDVARBL FIELD
*                                        IS MAPPED BY EEDDUMPO       */
*       HWREPTYP PTR(8) CONSTANT(3),   /*INDICATES THE EEDVARBL FIELD
*                                        IS MAPPED BY EEDHWREP       */
*       ERRIDTYP PTR(8) CONSTANT(4),   /*INDICATES THE EEDVARBL FIELD
*                                        IS MAPPED BY EEDERRID ONLY
*                                                            @G17EP5W*/
*       DUMPXTYP PTR(8) CONSTANT(5),   /*INDICATES THE EEDVARBL FIELD
*                                        IS MAPPED BY EEDDUMPX
*                                                            @G382P2F*/
*       /*************************************************************/
*       /*                                                           */
*       /*       CONSTANT USED TO DEFINE SIZE OF STANDARD EED AREA   */
*       /*                                                           */
*       /*************************************************************/
*       EEDBASE  FIXED(15) CONSTANT(12),/*DEFINES LENGTH OF THE FIXED
*                                         PORTION OF THE EED @G17EP5W*/
*       /*************************************************************/
*       /*                                                           */
*       /*   REGSPTYP EED--REGISTERS, PSW, AND CROSS MEMORY          */
*       /*                 INFORMATION AT THE TIME OF ERROR          */
*       /*                                                   @G381P2F*/
*       /*************************************************************/
*       1 EEDREGSP DEF(EEDVARBL) CHAR(88) BDY(WORD), /*REGISTERS, PSW,
*                                        AND CROSS MEMORY INFO AT
*                                        TIME OF ERROR       @G381P2F*/
*         2 EEDREGS CHAR(64) BDY(WORD),/*REGISTERS AT TIME OF ERROR  */
*           3 EEDREG0  PTR(31),        /*REGISTER 0  SLOT            */
*           3 EEDREG1  PTR(31),        /*REGISTER 1  SLOT            */
*           3 EEDREG2  PTR(31),        /*REGISTER 2  SLOT            */
*           3 EEDREG3  PTR(31),        /*REGISTER 3  SLOT            */
*           3 EEDREG4  PTR(31),        /*REGISTER 4  SLOT            */
*           3 EEDREG5  PTR(31),        /*REGISTER 5  SLOT            */
*           3 EEDREG6  PTR(31),        /*REGISTER 6  SLOT            */
*           3 EEDREG7  PTR(31),        /*REGISTER 7  SLOT            */
*           3 EEDREG8  PTR(31),        /*REGISTER 8  SLOT            */
*           3 EEDREG9  PTR(31),        /*REGISTER 9  SLOT            */
*           3 EEDREG10 PTR(31),        /*REGISTER 10 SLOT            */
*           3 EEDREG11 PTR(31),        /*REGISTER 11 SLOT            */
*           3 EEDREG12 PTR(31),        /*REGISTER 12 SLOT            */
*           3 EEDREG13 PTR(31),        /*REGISTER 13 SLOT            */
*           3 EEDREG14 PTR(31),        /*REGISTER 14 SLOT            */
*           3 EEDREG15 PTR(31),        /*REGISTER 15 SLOT            */
*         2 EEDPSW CHAR(16) BDY(WORD), /*EC MODE PSW + ILC INT CODE
*                                        AND TRANSLATION ADDRESS     */
*          3 EEDPSW1 CHAR(8) BDY(WORD),/*FIRST HALF OF PSW           */
*           4 EEDPSWMK FIXED(31),      /*SYTEM AND PROG MASK         */
*           4 EEDPSWIC PTR(31),        /*INSTRUCTION COUNTER         */
*          3 EEDPSW2 CHAR(8) BDY(WORD),/*SECND HALF OF PSW           */
*           4 EEDINILC FIXED(31),      /*INTERP CODE AND ILC         */
*             5 *       CHAR(1),       /*ALWAYS SET TO ZERO          */
*             5 EEDILC  PTR(8),        /*INSTRUCTION LEN COUNTER -
*                                        THE NUMBER OF BYTES TO
*                                        SUBTRACT FROM THE IC TO GET
*                                        LAST INSTRUCTION EXECUTED   */
*             5 EEDINTCD FIXED(16),    /*INTERRUPT CODE              */
*           4 EEDTRANS PTR(31),        /*TRANSLATION EXCEPTION ADDR  */
*         2 EEDXM   CHAR(8) BDY(WORD), /*CROSS MEMORY INFO   @G381P2F*/
*          3 EEDXMCR3 CHAR(4),         /*CONTROL REGISTER 3  @G381P2F*/
*          3 EEDXMCR4 CHAR(4),         /*CONTROL REGISTER 4  @G381P2F*/
*       /*************************************************************/
*       /*                                                           */
*       /*                DUMPOTYP EED--DUMP OPTIONS                 */
*       /*                                                           */
*       /*************************************************************/
*       1 EEDDUMPO CHAR(64) DEF(EEDVARBL) BDY(WORD), /*DUMP OPTIONS LEN
*                                        OF THIS AREA IS DEPENDENT ON
*                                        THE FORMAT OF THE SNAP PARM
*                                        LIST AND THE RTCA STARTING
*                                        AT LABEL SDWADUMP   @G382P2F*/
*         2 EEDSCDMP CHAR(8),          /*DUMP PARAMETERS COMMON TO THE
*                                        SNAP AND SDWA MAPPINGS      */
*           3 EEDSDUMP CHAR(4),        /* DUMP CHARACTERISTICS       */
*           3 EEDSDDAT  CHAR(4),       /* SDATA/PDATA OPTIONS        */
*             4 EEDSSDAT BIT(16),      /* DUMP SYSTEM DATA           */
*             4 EEDSPDAT BIT(16),      /*DUMP PROB PROG DATA         */
*         2 EEDSDPSL CHAR(56) BDY(WORD),/*DUMP STORAGE LISTS @G382P2F*/
*           3 EEDRGS(7) CHAR(8),       /* MAX OF 7 RANGES    @G382P2F*/
*       /*************************************************************/
*       /*                                                           */
*       /*   DUMPXTYP EED--DUMP EXTENSION FOR STORAGE LISTS  @G382P2F*/
*       /*                                                           */
*       /*************************************************************/
*       1 EEDDUMPX CHAR(88) DEF(EEDVARBL) BDY(WORD),  /*     @G382P2F*/
*         2 EEDSDSLX CHAR(88) BDY(WORD),   /*                @G382P2F*/
*           3 EEDXRGS(11) CHAR(8),     /* MAX OF 11 RANGES   @G382P2F*/
*       /*************************************************************/
*       /*                                                           */
*       /*       HWREPTYP EED--HARDWARE REPAIR STATUS EED            */
*       /*                                                           */
*       /*************************************************************/
*       1 EEDHWREP CHAR(28) BDY(WORD) DEF(EEDVARBL),/*HARDWARE REPAIR
*                                        STATUS INFORMATION          */
*         2 EEDHSCKB PTR(31),          /*STARTING VRT ADR OF STOR CK */
*         2 EEDHSCKE PTR(31),          /*ENDING VIRT ADDR OF STOR CK */
*         2 EEDHMCHS PTR(8),           /*RTM1 SOFTWARE STATUS FLAGS  */
*           3 EEDHSRVL BIT(1),         /*STORAGE RANGES AND RFSA VALD*/
*           3 EEDHRCDF BIT(1),         /*MCH RCRD NOT RECORDED       */
*           3 EEDHTSVL BIT(1),         /*TIME STAMP IS VALID         */
*           3 EEDINVP BIT(1),          /*STORAGE RECONFIGURED PAGE
*                                        INVALIDATED                 */
*           3 EEDRSRC BIT(1),          /*STORAGE RECONFIGURATION
*                                        STATUS IS AVAILABLE         */
*           3 EEDHRSRF BIT(1),         /*STORAGE RECONFIGURATION NOT
*                                        NOT ATTEMPTED               */
*           3 * BIT(1),                /*RESERVED                    */
*           3 * BIT(1),                /*RESERVED                    */
*         2 EEDHMCHD PTR(8),           /*RTM1 MACHINE CHECK DATA     */
*           3 EEDHSKYF BIT(1),         /*STORAGE KEY FAILURE         */
*           3 EEDHREGU BIT(1),         /*REGISTERS UNPREDICTABLE     */
*           3 EEDHPSWU BIT(1),         /*PSW UNPREDICTABLE           */
*           3 EEDHSCK  BIT(1),         /*STORAGE DATA CHK            */
*           3 EEDHACR  BIT(1),         /*ACR IN PROGRESS             */
*           3 EEDHINSF BIT(1),         /*INSTRUCTION FAILURE         */
*           3 EEDHSOFT BIT(1),         /*SOFT ERROR                  */
*           3 EEDHTERR BIT(1),         /*TIMER ERROR                 */
*         2 EEDHCPID FIXED(15),        /*CPU ADDR OF DEAD CPU - ACR  */
*         2 EEDHRSRS PTR(16),          /*STORAGE RECONFIG STATUS
*                                        BYTES                       */
*           3 EEDHRSR1 PTR(8),         /*STORAGE RECONFIG STATUS 1   */
*             4 * BIT(6),              /*RESERVED                    */
*             4 EEDHMSER BIT(1),       /*STOR ERR ALREDY SET IN FRAME*/
*             4 EEDHCHNG BIT(1),       /*FRAME HAD CHANG INDICATOR ON*/
*           3 EEDHRSR2 PTR(8),         /*STORAGE RECONFIG STATUS 2   */
*             4 EEDHOFLN BIT(1),       /*FRAME OFFLIN OR SCHED OFFLIN*/
*             4 EEDHINTC BIT(1),       /*INTERCEPT-FRAME IS SCHEDULED
*                                        OFFLINE, EITHER STORAGE ERR
*                                        OR V=R IND ALSO ON          */
*             4 EEDHSPER BIT(1),       /*PERM ERR OCCURS IN FRAME    */
*             4 EEDHNUCL BIT(1),       /*FRAME  CONTAINS PERMANENT
*                                        RESIDENT SYSTEM STORAGE     */
*             4 EEDHFSQA BIT(1),       /*FRAME IN USE FOR SQA        */
*             4 EEDHFLSQ BIT(1),       /*FRAME IN USE FOR LSQA       */
*             4 EEDHPGFX BIT(1),       /*FRAME CONTAINS PGFIXED DATA */
*             4 EEDHVERQ BIT(1),       /*FRAME IN USE FOR V=R OR IF
*                                        EEDHINTC IS ON IS SCHED V=R */
*         2 *        PTR(15),          /*RESERVED                    */
*         2 EEDHRFSA PTR(31),          /*REAL FAILING STORAGE ADDR   */
*         2 EEDHTIME CHAR(8),          /*TIMESTAMP OF MCH RECORD     */
*       /*************************************************************/
*       /*                                                           */
*       /*   ERRIDTYP EED--ERROR ID AND FRR TO ESTAE COMMUNICATION   */
*       /*                 BUFFER EED                        @G382P2F*/
*       /*************************************************************/
*       1 EEDERMAP CHAR(88) BDY(WORD) DEF(EEDVARBL), /*ERRORID AND FRR
*                                        TO ESTAE COMMUNICATION BUFFER
*                                        INFORMATION IN EED  @G382P2F*/
*         2 *      CHAR(70),           /*MAPPED BY EEDHWREP OR BY
*                                       EEDDUMPO OR RESERVED @G17EP5W*/
*         2 EEDERRID CHAR(10) BDY(HWORD),/*ERRORID           @G17EP5W*/
*           3 EEDESEQ# CHAR(2),        /*SEQUENCE NUMBER     @G17EP5W*/
*           3 EEDECPUI FIXED(16) BDY(HWORD),/*CPU ID         @G17EP5W*/
*           3 EEDEASID CHAR(2),        /*ASID                @G17EP5W*/
*           3 EEDETIME CHAR(4),        /*TIME STAMP          @G17EP5W*/
*         2 EEDCOMU CHAR(8) BDY(WORD); /*FRR TO ESTAE COMMUNICAITON
*                                        BUFFER (FROM SDWACOMU)
*                                                            @G382P2F*/
*%RT1WEND:;
*     %DEACTIVATE RTM1WA;
*     %DEACTIVATE EEDS;
*     %DEACTIVATE RTMB;
*     %DEACTIVATE ENPT;
*     %DEACTIVATE MODE;
*     %DEACTIVATE RTMC;
./ ADD NAME=IHARTCT
*        %GOTO RTCTPLSH;           /* BILINGUAL MAPPING
         MACRO
         IHARTCT
.*A-000000-999999                   ** NEW DUMP KEYWORDS       @G33CPHZ
.*                                     (INCOMPATIBLE OFFSETS   @G33CPHZ
.*                                      ON FIELDS ONLY USED    @G33CPHZ
.*                                      BY RTM DUMP ROUTINES   @G33CPHZ
.*                                      AND COMMANDS)          @G33CPHZ
         AGO   .RTCTBAL             ** SKIP PLS MACRO STATEMENT **   */
*%RTCTPLSH: ;                       /* BAL/PLS HEADER
.RTCTBAL ANOP                                                        */
*
*/********************************************************************/
*/*                                                                  */
*/* MACRO NAME = RTCT OR RTMCT                                       */
*/*                                                                  */
*/* MICROFICHE NAME = IHARTCT                                        */
*/*                                                                  */
*/* DESCRIPTIVE NAME = RECOVERY/TERMINATION CONTROL TABLE            */
*/*                                                                  */
*/* STATUS = OS/VS2 RELEASE 3.7 PLUS SU 33       12/08/76    @G33VPHZ*/
*/*                                                                  */
*/* METHOD OF ACCESS =                                               */
*/*   BAL  - DSECT IS ALWAYS PRODUCED.  USING ON RTCT GIVES          */
*/*          ADDRESSABILITY FOR ALL SYMBOLS.  CVTRTMCT POINTS TO     */
*/*          THE RTCT.                                               */
*/*   PL/S - INCLUDE IHARTCT FROM SYSLIB.  ALSO INCLUDE CVT TO       */
*/*          DEFINE BASE OF CVTRTMCT.                                */
*/*                                                                  */
*/* SIZE = DECIMAL 344, X'158'                                       */
*/* CHANGE ACTIVITY = OZ27434 - DEFINE RTCTSDFX USED TO PROHIBIT     */
*/*                             ASYNCRONOUS INTERRUPTS WHILE SDUMP   */
*/*                             HAS THE SYSTEM SET NONDISPATCHABLE.  */
*/*                                                                  */
*/********************************************************************/
*
*%GOTO RTCTPLS;     /*
RTCT     DSECT , -                BAL MAPPING OF TABLE
.**********************************************************************
.* KNOWN USERS OF THIS CONTROL BLOCK ARE:
.*     RTM NIP RIM            - IEAVNPA6  (CREATES RTCT)
.*     RTM1 MAINLINE          - IEAVTRTM
.*     RTM RECORDING          - IEAVTRER, IEAVTRET
.*     RTM MEMORY TERMINATION - IEAVTMRM, IEAVTMTC             @G33SPHW
.*     RTM2 DUMP ROUTINES     - IEAVAD00, IEAVAD0D, IEAVTABD, IEAVTABI,
.*                              IEAVTFMT, IEAVTFSD, IEAVTSDI,
.*                              (MOST MODULES STARTING WITH IEAVTSD...)
.*                              IEAVTSSD, IEAVTSSE             @G33VPHZ
.*     CHNGDUMP COMMAND       - IEEMB815
.*     DISPLAY DUMP COMMAND   - IEECB910                       @G33CPHE
.*     LOGDATA FORMATTER      - IFCERFMT                       @G33LPHP
.**********************************************************************
         IEZBITS , -              SYMBOLIC BIT NAMES
RTCTNAME DS    CL4 -              CONTAINS C'RTCT' AS IDENTIFIER.
***********************************************************************
* SNAP/ABEND PARMLIB VALUES                                           *
***********************************************************************
RTCTPLIB DS    0CL12                                           @G33CPHE
*
RTCTSAP  DS    0BL4 -             **SYSABEND INITIAL PARMLIB VALUES**
RTCTSAP1 DS    B -                (BYTE 1 OF SDATA OPTIONS:)
RTCTSAB0 EQU   BIT0               1=DISPLAY NUCLEUS
RTCTSAB1 EQU   BIT1               1=DISPLAY SQA
RTCTSAB2 EQU   BIT2               1=DISPLAY LSQA
RTCTSAB3 EQU   BIT3               1=DISPLAY SWA
RTCTSAB4 EQU   BIT4               1=DISPLAY GTF OR SUPERVISOR TRACE
RTCTSAB5 EQU   BIT5               1=DISPLAY CONTROL BLOCKS FOR TASK
RTCTSAB6 EQU   BIT6               1=DISPLAY ENQUEUE CONTROL BLOCKS
RTCTSAB7 EQU   BIT7               1=FORMAT DATA MGMT C.B.S     @G33CPHE
*
RTCTSAP2 DS    B                  (BYTE 2 OF SDATA OPTIONS:)
RTCTSABG EQU   BIT0               1=FORMAT IOS CONTROL BLOCKS  @G33CPHE
RTCTSABH EQU   BIT1               1=FORMAT ERROR CONTROL BLKS  @G33CPHE
*        EQU   BIT2               RESERVED
*        EQU   BIT3               RESERVED
*        EQU   BIT4               RESERVED
*        EQU   BIT5               RESERVED
*        EQU   BIT6               RESERVED
*        EQU   BIT7               RESERVED
*
RTCTSAP3 DS    B -                (BYTE 1 OF PDATA OPTIONS:)
RTCTSAB8 EQU   BIT0               1=DISPLAY SAVE AREA TRACE(SA KEYWORD)
RTCTSAB9 EQU   BIT1               0=DISPLAY ENTIRE SAVE AREA
*                                 1=DISPLAY SAVE AREA HEADINGS(SAH KWD)
RTCTSABA EQU   BIT2               1=DISPLAY REGISTERS
RTCTSABB EQU   BIT3               1=DISPLAY LINK PACK AREA
RTCTSABC EQU   BIT4               1=DISPLAY JOB PACK AREA
RTCTSABD EQU   BIT5               1=DISPLAY PSW
RTCTSABE EQU   BIT6               1=DISPLAY USER SUBPOOLS: 0-127
RTCTSABF EQU   BIT7               RESERVED
RTCTSAP4 DS    B                  RESERVED
*
RTCTSUP  DS    0BL4 -             **SYSUDUMP INITIAL PARMLIB VALUES**
RTCTSUP1 DS    B -                (BYTE 1 OF SDATA OPTIONS:)
RTCTSUD0 EQU   BIT0               1=DISPLAY NUCLEUS
RTCTSUD1 EQU   BIT1               1=DISPLAY SQA
RTCTSUD2 EQU   BIT2               1=DISPLAY LSQA
RTCTSUD3 EQU   BIT3               1=DISPLAY SWA
RTCTSUD4 EQU   BIT4               1=DISPLAY GTF OR SUPERVISOR TRACE
RTCTSUD5 EQU   BIT5               1=DISPLAY CNTRL BLKS FOR TASK
RTCTSUD6 EQU   BIT6               1=DISPLAY ENQUEUE CNTRL BLKS
RTCTSUD7 EQU   BIT7               1=FORMAT DATA MGMT C.B.S     @G33CPHE
*
RTCTSUP2 DS    B                  (BYTE 2 OF SDATA OPTIONS:)
RTCTSUDG EQU   BIT0               1=FORMAT IOS CONTROL BLOCKS  @G33CPHE
RTCTSUDH EQU   BIT1               1=FORMAT ERROR CONTROL BLKS  @G33CPHE
*        EQU   BIT2               RESERVED
*        EQU   BIT3               RESERVED
*        EQU   BIT4               RESERVED
*        EQU   BIT5               RESERVED
*        EQU   BIT6               RESERVED
*        EQU   BIT7               RESERVED
*
RTCTSUP3 DS    B -                (BYTE 1 OF PDATA OPTIONS:)
RTCTSUD8 EQU   BIT0               1=DISPLAY SAVE AREA TRACE(SA KEYWORD)
RTCTSUD9 EQU   BIT1               0=DISPLAY ENTIRE SAVE AREA
*                                 1=DISPLAY SAVE AREA HEADINGS(SAH KWD)
RTCTSUDA EQU   BIT2               1=DISPLAY REGISTERS
RTCTSUDB EQU   BIT3               1=DISPLAY LINK PACK AREA
RTCTSUDC EQU   BIT4               1=DISPLAY JOB PACK AREA
RTCTSUDD EQU   BIT5               1=DISPLAY PSW
RTCTSUDE EQU   BIT6               1=DISPLAY USER SUBPOOLS: 0-127
RTCTSUDF EQU   BIT7               RESERVED
RTCTSUP4 DS    B                  RESERVED
*
RTCTSYD  DS    0BL4               **SYSMDUMP INITIAL PARMLIB VALUES**
RTCTSY01 DS    B                  (BYTE 1 OF SDATA OPTIONS:)   @G33CPHE
RTCTSYM0 EQU   BIT0               1=DISPLAY NUCLEUS            @G33CPHE
RTCTSYM1 EQU   BIT1               1=DISPLAY SQA                @G33CPHE
RTCTSYM2 EQU   BIT2               1=DISPLAY LSQA               @G33CPHE
RTCTSYM3 EQU   BIT3               1=DISPLAY SWA                @G33CPHE
RTCTSYM4 EQU   BIT4               1=DISPLAY GTF OR SUPV TRACE  @G33CPHE
RTCTSYM5 EQU   BIT5               1=DISPLAY REGION             @G33CPHE
RTCTSYM6 EQU   BIT6               1=DISPLAY LPA FOR REGION     @G33CPHE
RTCTSYM7 EQU   BIT7               1=DISPLAY CSA                @G33CPHE
RTCTSY02 DS    B                  RESERVED
RTCTSY03 DS    B                  RESERVED
RTCTSY04 DS    B                  RESERVED
***********************************************************************
* RTM AND LOGREC RECORDING INFORMATION                                *
***********************************************************************
RTCTYYY1 DS    H                  **RESERVED**                 @G33CPHZ
RTCTSDID DS    H -                ASID OF MEMORY IN WHICH SVC DUMP IS
*                                  OR WILL BE RUNNING.
RTCTMECB DS    XL4 -              ECB WAIT'ED ON BY MEMORY
*                                  TERMINATION CONTROLLER
RTCTFASB DS    A -                ADDRESS OF FIRST ASCB ON MEMORY
*                                  TERMINATION QUEUE.
RTCTRECB DS    XL4 -              ECB WAIT'ED ON BY RECORDING TASK.
RTCTRCB  DS    A -                ADDRESS OF RECORDER'S BUFFER CONTROL
*                                  BLOCKS (CONTAIN LOGREC ENTRIES).
***********************************************************************
* THE FOLLOWING TABLE IS COMPOSED OF TEN TWELVE-BYTE ENTRIES, EACH    *
* ONE CORRESPONDING TO AN SVC DUMP DATA SET.                          *
***********************************************************************
RTCTSDDS DS    0CL120 -           TOTAL OF TEN TWELVE-BYTE ENTRIES
RTCTDSNM DS    CL3 -              NAME IDENTIFIER OF THIS DATA SET...
*                                  TAPE - EBCDIC UNIT ADDRESS,
*                                  DISK - EBCDIC 00-09 WITH TRAILING
*                                         BLANK.
RTCTFLG  DS    B -                FLAG BYTE..........
RTCTDSST EQU   BIT0               1-D.S. FULL, 0-D.S. AVAILABLE.
RTCTDSUS EQU   BIT1               1-D.S. USED, 0-D.S. NOT USED.
RTCTDETP EQU   BIT2               0-TAPE D.S., 1-DASD D.S.
RTCTDCB  DS    A -                DEB ADDRESS FOR THIS DATA SET.
RTCTDEV  DS    XL4 -              DEVICE TYPE CODE FOR THIS DATA SET.
RTCTBLEN EQU   *-RTCTDSNM         LENGTH OF ONE TABLE ENTRY.
         DS    CL108              REMAINING NINE ENTRIES.
*                                 *** END OF TABLE *****************
*
RTCTSDPL DS    A -                ADDRESS OF SVC DUMP PARAMETER LIST
*                                  FOR CROSS-MEMORY REQUEST.
RTCTSDIP EQU   BIT0               HIGH ORDER BIT IS SVC DUMP IN
*                                  PROGRESS FLAG.             @G33VPHZ
*
RTCTFMT  DS    A                  USED FOR TESTING RTM MODULES
RTCTMLCK DS    F                  LOCK FOR MEM TERM POST SRB
RTCTMSRB DS    F                  PTR TO MEM TERM POST SRB
RTCTTEST DS    F                  USED FOR TESTING RTM MODULES
RTCTRFLG DS    B                  RECORDING FLAGS
RTCTRTER EQU   BIT0               RECORDING TEMPORARY ERROR
RTCTRPER EQU   BIT1               RECORDING PERMANENT ERROR
RTCTRSTF EQU   BIT2               INITIAL STF ENTRY
RTCTXXX1 DS    BL1                RESERVED
RTCTSEQ# DS    H                  ERRORID SEQUENCE NUMBER      @G17EP5W
RTCTSDSW DS    A                  ADDRESS OF SUMMARY SVC DUMP (SUMDUMP)
*                                  WORK AREA (IHASMWK)         @G33VPHD
RTCTTDCB DS    9F                 TAPE DCB FOR SVC DUMP
RTCTSDWK DS    A                  ADDRESS OF SVC DUMP WORK AREA
RTCTERID DS    0CL10              ERRORID FOR THIS FAILURE'S SVC DUMP
*                                  HEADER                     @G17EP5W
RTCTESEQ DS    CL2                ERRORID SEQUENCE NUMBER     @G17EP5W
RTCTECPU DS    CL2                ERRORID LOGICAL CPU ID      @G17EP5W
RTCTEASD DS    CL2                ERRORID ASID                @G17EP5W
RTCTETIM DS    CL4                ERRORID TIMESTAMP           @G17EP5W
RTCTXXX2 DS    CL2                RESERVED                    @G17EP5W
***********************************************************************
* DEFAULT DUMP OPTIONS, WHICH CAN BE CHANGED BY THE CHNGDUMP          *
* OPERATOR COMMAND                                                    *
***********************************************************************
RTCTOPT  DS    0CL16                                           @G33CPHE
RTCTSAO  DS    0BL4               **SYSABEND EFFECTIVE OPTIONS**
RTCTSASD DS    0BL2
RTCTSAO1 DS    B                  (BYTE 1 OF SDATA OPTIONS:)
RTCTSAD0 EQU   BIT0               1=DISPLAY NUCLEUS
RTCTSAD1 EQU   BIT1               1=DISPLAY SQA
RTCTSAD2 EQU   BIT2               1=DISPLAY LSQA
RTCTSAD3 EQU   BIT3               1=DISPLAY SWA
RTCTSAD4 EQU   BIT4               1=DISPLAY GTF OR SUPERVISOR TRACE
RTCTSAD5 EQU   BIT5               1=DISPLAY CONTROL BLOCKS FOR TASK
RTCTSAD6 EQU   BIT6               1=DISPLAY ENQUEUE CONTROL BLOCKS
RTCTSAD7 EQU   BIT7               1=FORMAT DATA MGMT C.B.S     @G33CPHE
*
RTCTSAO2 DS    B                  (BYTE 2 OF SDATA OPTIONS:)
RTCTSADG EQU   BIT0               1=FORMAT IOS CONTROL BLOCKS  @G33CPHE
RTCTSADH EQU   BIT1               1=FORMAT ERROR CONTROL BLKS  @G33CPHE
*              BIT3               RESERVED
*              BIT4               RESERVED
*              BIT5               RESERVED
*              BIT6               RESERVED
*              BIT7               RESERVED
RTCTSAPD DS    0BL2
RTCTSAO3 DS    B                  (BYTE 1 OF PDATA OPTIONS:)
RTCTSAD8 EQU   BIT0               1=DISPLAY SAVE AREA TRACE(SA KEYWORD)
RTCTSAD9 EQU   BIT1               0=DISPLAY ENTIRE SAVE AREA
*                                 1=DISPLAY SAVE AREA HEADINGS(SAH KWD)
RTCTSADA EQU   BIT2               1=DISPLAY REGISTERS
RTCTSADB EQU   BIT3               1=DISPLAY LINK PACK AREA
RTCTSADC EQU   BIT4               1=DISPLAY JOB PACK AREA
RTCTSADD EQU   BIT5               1=DISPLAY PSW
RTCTSADE EQU   BIT6               1=DISPLAY USER SUBPOOLS: 0-127
RTCTSADF EQU   BIT7               RESERVED
*
RTCTSAO4 DS    B                  (BYTE 1 OF OTHER OPTIONS:)
RTCTSAMG EQU   BIT6               SEE RTCTSAOV                 @G33CPHZ
RTCTSAOV EQU   BIT6               1=OVER MODE  0=ADD MODE      @G33CPHZ
RTCTISAB EQU   BIT7               IGNORE REQUESTS FOR SYSABEND @G33CPHE
*
RTCTSUO  DS    0BL4               **SYSUDUMP EFFECTIVE OPTIONS**
RTCTSUSD DS    0BL2
RTCTSUO1 DS    B                  (BYTE 1 OF SDATA OPTIONS:)
RTCTSYD0 EQU   BIT0               1=DISPLAY NUCLEUS
RTCTSYD1 EQU   BIT1               1=DISPLAY SQA
RTCTSYD2 EQU   BIT2               1=DISPLAY LSQA
RTCTSYD3 EQU   BIT3               1=DISPLAY SWA
RTCTSYD4 EQU   BIT4               1=DISPLAY GTF OR SUPERVISOR TRACE
RTCTSYD5 EQU   BIT5               1=DISPLAY CNTRL BLKS FOR TASK
RTCTSYD6 EQU   BIT6               1=DISPLAY ENQUEUE CNTRL BLKS
RTCTSYD7 EQU   BIT7               1=FORMAT DATA MGMT C.B.S     @G33CPHE
*
RTCTSUO2 DS    B                  (BYTE 2 OF SDATA OPTIONS:)
RTCTSYDG EQU   BIT0               1=FORMAT IOS CONTROL BLOCKS  @G33CPHE
RTCTSYDH EQU   BIT1               1=FORMAT ERROR CONTROL BLKS  @G33CPHE
*                                 RESERVED
*        EQU   BIT4               RESERVED
*        EQU   BIT5               RESERVED
*        EQU   BIT6               RESERVED
*        EQU   BIT7               RESERVED
RTCTSUPD DS    0BL2
RTCTSUO3 DS    B                  (BYTE 1 OF PDATA OPTIONS:)
RTCTSYD8 EQU   BIT0               1=DISPLAY SAVE AREA TRACE(SA KEYWORD)
RTCTSYD9 EQU   BIT1               0=DISPLAY ENTIRE SAVE AREA
*                                 1=DISPLAY SAVE AREA HEADINGS(SAH KWD)
RTCTSYDA EQU   BIT2               1=DISPLAY REGISTERS
RTCTSYDB EQU   BIT3               1=DISPLAY LINK PACK AREA
RTCTSYDC EQU   BIT4               1=DISPLAY JOB PACK AREA
RTCTSYDD EQU   BIT5               1=DISPLAY PSW
RTCTSYDE EQU   BIT6               1=DISPLAY USER SUBPOOLS: 0-127
RTCTSYDF EQU   BIT7               RESERVED
*
RTCTSUO4 DS    B                  (BYTE 1 OF OTHER OPTIONS:)
RTCTSUMG EQU   BIT6               SEE RTCTSUOV                 @G33CPHZ
RTCTSUOV EQU   BIT6               1=OVER MODE  0=ADD MODE      @G33CPHZ
RTCTISYU EQU   BIT7               IGNORE REQUESTS FOR SYSUDUMP @G33CPHE
*
RTCTSYO  DS    0BL4               **SYSMDUMP EFFECTIVE OPTIONS**
RTCTSD01 DS    B                  (BYTE 1 OF SDATA OPTIONS:)   @G33CPHE
RTCTSDS0 EQU   BIT0               1=DISPLAY NUCLEUS            @G33CPHE
RTCTSDS1 EQU   BIT1               1=DISPLAY SQA                @G33CPHE
RTCTSDS2 EQU   BIT2               1=DISPLAY LSQA               @G33CPHE
RTCTSDS3 EQU   BIT3               1=DISPLAY SWA                @G33CPHE
RTCTSDS4 EQU   BIT4               1=DISPLAY GTF OR SPV.TRACE   @G33CPHE
RTCTSDS5 EQU   BIT5               1=DISPLAY REGION             @G33CPHE
RTCTSDS6 EQU   BIT6               1=DISPLAY ACTIVE LPA FOR RGN @G33CPHE
RTCTSDS7 EQU   BIT7               1=DISPLAY CSA                @G33CPHE
RTCTSD02 DS    B                  RESERVED
RTCTSD03 DS    B                  RESERVED
*
RTCTSD04 DS    B                  (BYTE 1 OF OTHER OPTIONS:)
RTCTSMMG EQU   BIT6               SEE RTCTSMOV                 @G33CPHZ
RTCTSMOV EQU   BIT6               1=OVER MODE  0=ADD MODE      @G33CPHZ
RTCTISYM EQU   BIT7               IGNORE REQUESTS FOR SYSMDUMP @G33CPHE
*
RTCTSDO  DS    0BL4               **SVC DUMP EFFECTIVE OPTIONS**
RTCTSDOD DS    0BL2                                            @G33CPHZ
RTCTSDO1 DS    B                  (BYTE 1 OF SDATA OPTIONS:)
RTCTSDP0 EQU   BIT0               1=DISPLAY ALL PSA'S IN SYSTEM
RTCTSDP1 EQU   BIT1               1=DISPLAY CURRENT PSA
RTCTSDP2 EQU   BIT2               1=DISPLAY NUCLEUS
RTCTSDP3 EQU   BIT3               1=DISPLAY SQA
RTCTSDP4 EQU   BIT4               1=DISPLAY LSQA
RTCTSDP5 EQU   BIT5               1=DISPLAY REGION (PRIVATE AREA)
RTCTSDP6 EQU   BIT6               1=DISPLAY ACTIVE LPA MODULES FOR RGN
RTCTSDP7 EQU   BIT7               1=DISPLAY GTF OR SUPERVISOR TRACE
RTCTSDO2 DS    B -
RTCTSDP8 EQU   BIT0               1=DISPLAY CSA
RTCTSDP9 EQU   BIT1               1=DISPLAY SWA
RTCTSDPA EQU   BIT2               1=DISPLAY SUMMARY SVC DUMP
*                                  (SUMDUMP)                   @G33CPHE
RTCTSDPB EQU   BIT3               1=NO SUMMARY DUMP DISPLAY    @G33CPHE
RTCTSDPC EQU   BIT4               1=NO ALL PSA DISPLAY         @G33CPHE
RTCTSDPD EQU   BIT5               1=NO SQA DISPLAY             @G33CPHE
*        EQU   BIT6               RESERVED
*        EQU   BIT7               RESERVED
*
RTCTSDO3 DS    B                  (BYTE 1 OF OTHER OPTIONS:)
RTCTSDPG EQU   BIT0               1 MEANS QUIESCE=YES SPECIFIED ON
*                                  CHNGDUMP COMMAND
RTCTSDPH EQU   BIT1               1 MEANS QUIESCE=NO SPECIFIED ON
*                                  CHNGDUMP COMMAND
*        EQU   BIT3               RESERVED
*        EQU   BIT4               RESERVED
*        EQU   BIT5               RESERVED
*        EQU   BIT6               RESERVED
*        EQU   BIT7               RESERVED
RTCTSDO4 DS    B                  (BYTE 2 OF OTHER OPTIONS:)
RTCTSDMG EQU   BIT6               SEE RTCTSDOV                 @G33CPHZ
RTCTSDOV EQU   BIT6               1=OVER MODE  0=ADD MODE      @G33CPHZ
RTCTISVC EQU   BIT7               IGNORE REQUESTS FOR SVCDUMP  @G33CPHE
*
***********************************************************************
* ADDITIONAL SVC DUMP INFORMATION AND FLAGS                           *
***********************************************************************
RTCTASO  DS    0BL2               **ACTUAL SVC DUMP OPTIONS FROM MERGER
*                                 OF DEFAULTS AND SDUMP MACRO OPTIONS**
*                                                              @G33VPHZ
RTCTASOD DS    0BL2                                            @G33VPHZ
RTCTASO1 DS    B                  (BYTE 1 OF SDATA:)           @G33VPHZ
RTCTASAL EQU   BIT0               1=DISPLAY ALL PSA'S          @G33VPHZ
RTCTASPS EQU   BIT1               1=DISPLAY CURRENT PSA        @G33VPHZ
RTCTASNU EQU   BIT2               1=DISPLAY NUCLEUS            @G33VPHZ
RTCTASSQ EQU   BIT3               1=DISPLAY SQA                @G33VPHZ
RTCTASLS EQU   BIT4               1=DISPLAY LSQA               @G33VPHZ
RTCTASRG EQU   BIT5               1=DISPLAY REGION (RGN)       @G33VPHZ
RTCTASLP EQU   BIT6               1=DISPLAY ACTIVE LPA         @G33VPHZ
RTCTASTR EQU   BIT7               1=DISPLAY GTF OR SUPV TRACE  @G33VPHZ
RTCTASO2 DS    B                  (BYTE 2 OF SDATA:)           @G33VPHZ
RTCTASCS EQU   BIT0               1=DISPLAY CSA                @G33VPHZ
RTCTASSW EQU   BIT1               1=DISPLAY SWA                @G33VPHZ
RTCTASSU EQU   BIT2               1=DISPLAY SUMMARY DUMP       @G33VPHZ
RTCTASNS EQU   BIT3               1=DISPLAY NO SUMDUMP         @G33VPHZ
RTCTASNA EQU   BIT4               1=DISPLAY NO ALLPSA          @G33VPHZ
RTCTASNQ EQU   BIT5               1=DISPLAY NO SQA             @G33VPHZ
*        EQU   BIT6               RESERVED                     @G33VPHZ
*        EQU   BIT7               RESERVED                     @G33VPHZ
RTCTSDI  DS    0BL2               **SVC DUMP INFORMATION**
RTCTSDNA DS    B                  NUMBER ADDR SPACES TO DUMP   @G33VPHD
RTCTINDX DS    B                  INDEX FOR ASID LIST ENTRY    @G33VPHD
RTCTSDPR DS    XL1                PERMANENT RETURN CODE        @G33VPHD
RTCTZZZ2 DS    BL7                RESERVED                     @G33VPHZ
*
RTCTSDF  DS    0BL4               **SVC DUMP FLAGS**
RTCTSDF1 DS    B                  (BYTE 1 OF FLAGS:)
RTCTSDNO EQU   BIT0               NO SYS1.DUMP DATASETS DEFINED
RTCTSDND EQU   BIT1               SVC DUMP SET SYSTEM NON-DISP
RTCTSDSH EQU   BIT2               SCHEDULE DUMP (IEAVTSDX) REQUEST
*                                                              @G33VPHZ
RTCTSDMA EQU   BIT3               MULTIPLE ADDR SPACE DUMP IN PROGRESS
*                                                              @G33VPHD
RTCTSDEP EQU   BIT4               CALLER'S ECB POSTED
RTCTSDSD EQU   BIT5               SUMMARY DUMP (IEAVTSSD) RECEIVED
*                                  CONTROL                     @G33VPHZ
RTCTSDRS EQU   BIT6               REAL STORAGE BUFFER MGR (IEAVPRSB)
*                                  RECEIVED CONTROL            @G33VPHZ
RTCTSDSC EQU   BIT7               SUMMARY DUMP (IEAVTSSD) COMPLETED
*                                  PROCESSING                  @G33VPHZ
*
RTCTSDF2 DS    B                  (BYTE 2 OF FLAGS:)           @G33VPHZ
RTCTSDMR EQU   BIT0               DUMP MASTER ADDR SPACE REQD  @G33VPHD
RTCTSDTQ EQU   BIT1               TQE WAS ENQUEUED BY SETDIE   @G33VPHD
RTCTSDDI EQU   BIT2               TIMER DIE RECEIVED CONTROL (SCHDIE IN
*                                  IEAVTSDX)                   @G33VPHD
RTCTSDLA EQU   BIT3               LAST ASID BEING PROCESSED    @G33VPHD
RTCTSDWF EQU   BIT4               SUMDUMP WRITER (IEAVTSDW) HAS
*                                  COMPLETED                   @G33VPHD
RTCTSDSL EQU   BIT5               DUMP DATA SET WAS SELECTED   @G33VPHD
RTCTSDRW EQU   BIT6               SUMDUMP RECORDS (FROM
*                                  IEAVTSSD) TO WRITE          @G33VPHD
RTCTSDFX EQU   BIT7               ASYNC EXIT FLAG              @ZA27434
RTCTR2D2 DS    B                  (BYTE 3 OF FLAGS:)
RTCTC3PO DS    B                  (BYTE 4 OF FLAGS:)
RTCTSDF3 DS    0CL64              **ARRAY OF INFO FOR SVC DUMP OF
*                                   MULTIPLE ADDRESS SPACES**  @G33VPHD
RTCTSDAS DS    BL2                ASID OF THIS ADDRESS SPACE (A.S.)
*                                                              @G33VPHZ
RTCTSDF4 DS    B                  (BYTE 1 OF FLAGS:)           @G33VPHZ
RTCTSDSS EQU   BIT0               GSRB IN ADDR SPACE SCHEDULED @G33VPHZ
RTCTSDNC EQU   BIT1               NON-DISPATCHABLE SRB RECEIVED CONTROL
*                                                              @G33VPHZ
RTCTSDAN EQU   BIT2               ADDRESS SPACE SET NON-DISPATCHABLE
*                                                              @G33VPHZ
RTCTSDRM EQU   BIT3               DUMP TASK HAS BEEN RESUMED   @G33VPHZ
RTCTSDTR EQU   BIT4               DUMP TASK RUNNING            @G33VPHZ
RTCTSDEQ EQU   BIT5               DUMP TASK ENQUEUED ON DUMP RESOURCE
*                                                              @G33VPHZ
RTCTSDEN EQU   BIT6               SVC DUMP (IEAVAD00 OR IEAVTSDT) IS
*                                  PROCESSING THIS A.S.        @G33VPHZ
RTCTSDDO EQU   BIT7               DUMP ATTEMPTED FOR THIS ASID @G33VPHZ
RTCTSDF5 DS    B                  RESERVED
RTCTSDEL EQU   *-RTCTSDF3         LENGTH OF ELEMENT OF ADDR SPACE ARRAY
*                                                              @G33VPHZ
         DS    CL60               REMAINING 15 ASID ENTRIES    @G33VPHZ
*
***********************************************************************
* RTM INFORMATION                                                     *
***********************************************************************
RTCTMRMQ DS    A                  ADDRESS OF QUEUE OF STORAGE AREAS
*                                 (USED FOR SYSMDUMPS) TO BE FREED
*                                 AT MEMTERM                   @G33SPHZ
RTCTZZZ4 DS    F                  RESERVED                     @G33VPHZ
RTCTZZZ5 DS    F                  RESERVED                     @G33VPHZ
*
RTCTLEN  EQU   *-RTCT             TOTAL LENGTH OF RTM CONTROL TABLE.
         MEND
*        */
*%RTCTPLS: ;
*DECLARE
*  1 RTCT BASED(CVTRTMCT),        /* CVT HAS THE ADDRESS OF THE RTCT
*                                                            @G33CPHE*/
*    2 RTCTNAME   CHAR(4),        /* EBCDIC NAME IS C'RTCT'          */
*   /*****************************************************************/
*   /* SNAP/ABEND PARMLIB VALUES                                     */
*   /*****************************************************************/
*    2 RTCTPLIB CHAR(12),         /*                         @G33CPHE*/
*     3 RTCTSAP    BIT(32),       /* *** SYSABEND INITIAL PARMLIB
*                                    VALUES *********************** */
*      4 RTCTSAP1   BIT(8),       /* (BYTE 1 OF SDATA OPTIONS:)     */
*        6 RTCTSAB0 BIT(1),       /* 1=DISPLAY NUCLEUS              */
*        6 RTCTSAB1 BIT(1),       /* 1=DISPLAY SQA                  */
*        6 RTCTSAB2 BIT(1),       /* 1=DISPLAY LSQA                 */
*        6 RTCTSAB3 BIT(1),       /* 1=DISPLAY SWA                  */
*        6 RTCTSAB4 BIT(1),       /* 1=DISPLAY GTF OR SUPERVISOR
*                                    TRACE                          */
*        6 RTCTSAB5 BIT(1),       /* 1=DISPLAY CONTROL BLOCKS FOR
*                                    TASK                           */
*        6 RTCTSAB6 BIT(1),       /* 1=DISPLAY ENQUEUE CNTRL BLKS   */
*        6 RTCTSAB7 BIT(1),      /* 1=FORMAT DATA MGMT C.B.S @G33CPHE*/
*
*      4 RTCTSAP2 BIT(8),         /* (BYTE 2 OF SDATA OPTIONS:)      */
*        6 RTCTSABG BIT(1),       /* 1=FORMAT IOS CNTRL BLKS @G33CPHE*/
*        6 RTCTSABH BIT(1),       /* 1=FORMAT ERROR C.B.S    @G33CPHE*/
*        6 *        BIT(6),       /* RESERVED                       */
*
*      4 RTCTSAP3 BIT(8),         /* (BYTE 1 OF PDATA OPTIONS:)     */
*        6 RTCTSAB8 BIT(1),       /* 1=DISPLAY SAVE AREA TRACE (SA) */
*        6 RTCTSAB9 BIT(1),       /* 0=DISPLAY ENTIRE SAVE AREA
*                                    1=DISPLAY SAVE AREA HEADINGS
*                                      (SAH KEYWORD)                */
*        6 RTCTSABA BIT(1),       /* 1=DISPLAY REGISTERS            */
*        6 RTCTSABB BIT(1),       /* 1=DISPLAY LINK PACK AREA       */
*        6 RTCTSABC BIT(1),       /* 1=DISPLAY JOB PACK AREA        */
*        6 RTCTSABD BIT(1),       /* 1=DISPLAY PSW                  */
*        6 RTCTSABE BIT(1),       /* 1=DISPLAY USER SUBPOOLS:
*                                    0-127                          */
*        6 RTCTSABF BIT(1),       /* RESERVED                       */
*      4 RTCTSAP4   BIT(8),       /* RESERVED                       */
*
*    3 RTCTSUP    BIT(32),        /* *** SYSUDUMP INITIAL PARMLIB
*                                    VALUES *********************** */
*      4 RTCTSUP1   BIT(8),       /* (BYTE 1 OF SDATA OPTIONS:)     */
*        6 RTCTSUD0 BIT(1),       /* 1=DISPLAY NUCLEUS              */
*        6 RTCTSUD1 BIT(1),       /* 1=DISPLAY SQA                  */
*        6 RTCTSUD2 BIT(1),       /* 1=DISPLAY LSQA                 */
*        6 RTCTSUD3 BIT(1),       /* 1=DISPLAY SWA                  */
*        6 RTCTSUD4 BIT(1),       /* 1=DISPLAY GTF OR SUPERVISOR
*                                    TRACE                          */
*        6 RTCTSUD5 BIT(1),       /* 1=DISPLAY CONTROL BLOCKS FOR
*                                    TASK                           */
*        6 RTCTSUD6 BIT(1),       /* 1=DISPLAY ENQUEUE CONTROL BLKS */
*        6 RTCTSUD7 BIT(1),       /* 1=FORMAT DATA MANAGEMENT CONTROL
*                                    BLOCKS                 @G33CPHE*/
*
*      4 RTCTSUP2 BIT(8),         /* (BYTE 2 OF SDATA OPTIONS:)     */
*        6 RTCTSUDG BIT(1),       /* 1=FORMAT IOS C.B.S     @G33CPHE*/
*        6 RTCTSUDH BIT(1),       /* 1=FORMAT ERROR C.B.S   @G33CPHE*/
*        6 *        BIT(6),       /* RESERVED                       */
*
*      4 RTCTSUP3   BIT(8),       /* (BYTE 1 OF PDATA OPTIONS:)     */
*        6 RTCTSUD8 BIT(1),       /* 1=DISPLAY SAVE AREA TRACE (SA) */
*        6 RTCTSUD9 BIT(1),       /* 0=DISPLAY ENTIRE SAVE AREA
*                                    1=DISPLAY SAVE AREA HEADINGS
*                                      (SAH KEYWORD)                */
*        6 RTCTSUDA BIT(1),       /* 1=DISPLAY REGISTERS            */
*        6 RTCTSUDB BIT(1),       /* 1=DISPLAY LINK PACK AREA       */
*        6 RTCTSUDC BIT(1),       /* 1=DISPLAY JOB PACK AREA        */
*        6 RTCTSUDD BIT(1),       /* 1=DISPLAY PSW                  */
*        6 RTCTSUDE BIT(1),       /* 1=DISPLAY USER SUBPOOLS:
*                                    0-127                          */
*        6 RTCTSUDF BIT(1),       /* RESERVED                       */
*      4 RTCTSUP4 BIT(8),         /* RESERVED                       */
*
*    3 RTCTSYD BIT(32),           /* *** SYSMDUMP INITIAL PARMLIB
*                                    VALUES *********************** */
*      4 RTCTSY01 BIT(8),         /* (BYTE 1 OF SDATA OPTIONS:)     */
*        6 RTCTSYM0  BIT(1),      /* 1=DISPLAY NUCLEUS      @G33CPHE*/
*        6 RTCTSYM1  BIT(1),      /* 1=DISPLAY SQA          @G33CPHE*/
*        6 RTCTSYM2  BIT(1),      /* 1=DISPLAY LSQA         @G33CPHE*/
*        6 RTCTSYM3  BIT(1),      /* 1=DISPLAY SWA          @G33CPHE*/
*
*        6 RTCTSYM4  BIT(1),      /* 1=DISPLAY GTF OR SUPERVISOR
*                                    TRACE                  @G33CPHE*/
*        6 RTCTSYM5  BIT(1),      /* 1=DISPLAY REGION       @G33CPHE*/
*        6 RTCTSYM6  BIT(1),      /* 1=DISPLAY LPA FOR RGN  @G33CPHE*/
*        6 RTCTSYM7  BIT(1),      /* 1=DISPLAY CSA          @G33CPHE*/
*      4 RTCTSY02 BIT(8),         /* RESERVED                       */
*      4 RTCTSY03 BIT(8),         /* RESERVED                       */
*      4 RTCTSY04 BIT(8),         /* RESERVED                       */
*   /****************************************************************/
*   /* RTM AND LOGREC RECORDING INFORMATION                         */
*   /****************************************************************/
*    2 RTCTYYY1   FIXED(15),      /* **RESERVED**           @G33CPHZ*/
*    2 RTCTSDID   FIXED(15),      /* ASID OF MEMORY IN WHICH SVC
*                                    DUMP IS OR WILL BE RUNNING.    */
*    2 RTCTMECB   CHAR(4),        /* ECB WAITED ON BY MEMORY
*                                    TERMINATION CONTROLLER.        */
*    2 RTCTFASB   PTR(31),        /* ADDRESS OF FIRST ASCB ON MEMORY
*                                    TERMINATION QUEUE.             */
*    2 RTCTRECB   CHAR(4),        /* ECB WAITED ON BY RECORDING TASK*/
*    2 RTCTRCB    PTR(31),        /* ADDRESS OF RECORDER'S BUFFER
*                                    CONTROL BLOCKS (CONTAIN LOGREC
*                                    ENTRIES).  THIS FIELD MUST
*                                    REMAIN AT OFFSET X'20' FOR
*                                    COMPATIBILITY.                 */
*    /***************************************************************/
*    /* THE FOLLOWING ARRAY CONTAINS TEN TWELVE-BYTE ENTRIES, ONE   */
*    /* FOR EACH OF SVC DUMP'S TEN DATA SETS.                       */
*    /***************************************************************/
*    2 RTCTSDDS (10) CHAR(12) BDY(WORD), /* TEN 12-BYTE ELEMENTS.   */
*      3 RTCTDSNM   CHAR(3),      /* NAME OF THIS DATA SET........
*                                    TAPE- EBCDIC UNIT ADDRESS,
*                                    DISK- EBCDIC 00-09 WITH
*                                          TRAILING BLANK.          */
*      3 RTCTFLG    BIT(8),       /* FLAG BYTE...                   */
*        4 RTCTDSST   BIT(1),     /* 1-D.S. FULL, 0-D.S. AVAILABLE. */
*        4 RTCTDSUS   BIT(1),     /* 1-D.S. USED, 0-D.S. NOT USED.  */
*        4 RTCTDETP   BIT(1),     /* 0-TAPE D.S., 1-DASD D.S.       */
*        4 *          BIT(5),     /* RESERVED                       */
*      3 RTCTDCB    PTR(31),      /* DEB ADDRESS FOR THIS DATA SET. */
*      3 RTCTDEV    CHAR(4),      /* DEVICE TYPE CODE FOR DATA SET.
*                                   *** END OF TABLE *************  */
*    2 RTCTSDPL   PTR(31),        /* ADDRESS OF SVC DUMP PARAMETER
*                                    LIST FOR CROSS-MEMORY REQUEST. */
*      3 RTCTSDIP BIT(1),         /* HIGH ORDER BIT IS SVC DUMP IN
*                                    PROGRESS FLAG.         @G33VPHZ*/
*    2 RTCTFMT PTR(31),           /* USED FOR TESTING RTM MODULES   */
*    2 RTCTMLCK FIXED(31),        /*  LOCK FOR MEM TERM POST SRB    */
*    2 RTCTMSRB PTR(31),          /*  PTR TO MEM TERM'S POST SRB    */
*    2 RTCTTEST PTR(31),          /* USED FOR TESTING RTM MODULES   */
*    2 RTCTRFLG   BIT(8),         /* RECORDING FLAGS                */
*      3 RTCTRTER BIT(1),         /* RECORDING TEMPORARY ERROR      */
*      3 RTCTRPER BIT(1),         /* RECORDING PERMANENT ERROR      */
*      3 RTCTRSTF BIT(1),         /* INITIAL STF ENTRY              */
*      3 * BIT(5),                /* RESERVED                       */
*    2 RTCTXXX1 CHAR(1),          /* RESERVED                       */
*    2 RTCTSEQ# FIXED(16),        /* ERRORID SEQUENCE NBR   @G17EP5W*/
*    2 RTCTSDSW PTR(31),          /* ADDR OF SUMMARY SVC DUMP(SUMDUMP)
*                                    WORK AREA (IHASMWK)    @G33VPHZ*/
*    2 RTCTTDCB (9) PTR(31),      /* TAPE DCB FOR SVC DUMP          */
*    2 RTCTSDWK PTR(31),          /* ADDRESS OF SVC DUMP WORK AREA  */
*    2 RTCTERID CHAR(10),         /*ERRORID FOR THIS FAILURE'S SVC
*                                   DUMP HEADER             @G17EP5W*/
*      3 RTCTESEQ CHAR(2),        /*ERRORID SEQUENCE NUMBER @G17EP5W*/
*      3 RTCTECPU CHAR(2),        /*ERRORID LOGICAL CPU ID  @G17EP5W*/
*      3 RTCTEASD CHAR(2),        /*ERRORID ASID            @G17EP5W*/
*      3 RTCTETIM CHAR(4),        /*ERRORID TIME STAMP      @G17EP5W*/
*    2 RTCTXXX2 CHAR(2),          /*RESERVED                @G17EP5W*/
*   /****************************************************************/
*   /* DEFAULT DUMP OPTIONS, WHICH CAN BE CHANGED BY THE CHNGDUMP   */
*   /* OPERATOR COMMAND                                             */
*   /****************************************************************/
*    2 RTCTOPT CHAR(16),          /*                        @G33CPHE*/
*      3 RTCTSAO    BIT(32),      /* SYSABEND EFFECTIVE OPTIONS     */
*      3 RTCTSUO    BIT(32),      /* SYSUDUMP EFFECTIVE OPTIONS     */
*      3 RTCTSYO    BIT(32),      /* SYSMDUMP EFFECTIVE OPTIONS     */
*      3 RTCTSDO    BIT(32),      /* SVC DUMP EFFECTIVE OPTIONS     */
*   /****************************************************************/
*   /* ADDITIONAL SVC DUMP INFORMATION AND FLAGS                    */
*   /****************************************************************/
*   2 RTCTASO BIT(16),            /* ACTUAL SVC DUMP OPTIONS FROM
*                                    MERGER OF DEFAULTS AND SDUMP
*                                    MACRO OPTIONS *******   @G33VPHZ*/
*      4 RTCTASO1 BIT(8),         /* (BYTE 1 OF SDATA:)      @G33VPHZ*/
*        6 RTCTASAL BIT(1),       /* 1=DISPLAY ALL PSA'S     @G33VPHZ*/
*        6 RTCTASPS BIT(1),       /* 1=DISPLAY CURRENT PSA   @G33VPHZ*/
*        6 RTCTASNU BIT(1),       /* 1=DISPLAY NUCLEUS       @G33VPHZ*/
*        6 RTCTASSQ BIT(1),       /* 1=DISPLAY SQA           @G33VPHZ*/
*        6 RTCTASLS BIT(1),       /* 1=DISPLAY LSQA          @G33VPHZ*/
*        6 RTCTASRG BIT(1),       /* 1=DISPLAY REGION (RGN)  @G33VPHZ*/
*        6 RTCTASLP BIT(1),       /* 1=DISPLAY ACTIVE LPA    @G33VPHZ*/
*        6 RTCTASTR BIT(1),       /* 1=DISPLAY TRACE         @G33VPHZ*/
*
*      4 RTCTASO2 BIT(8),         /* (BYTE 2 OF SDATA:)      @G33VPHZ*/
*        6 RTCTASCS BIT(1),       /* 1=DISPLAY CSA           @G33VPHZ*/
*        6 RTCTASSW BIT(1),       /* 1=DISPLAY SWA           @G33VPHZ*/
*        6 RTCTASSU BIT(1),       /* 1=DISPLAY SUMMARY DUMP  @G33VPHZ*/
*        6 RTCTASNS BIT(1),       /* 1=DISPLAY NO SUMDUMP    @G33VPHZ*/
*        6 RTCTASNA BIT(1),       /* 1=DISPLAY NO ALLPSA     @G33VPHZ*/
*        6 RTCTASNQ BIT(1),       /* 1=DISPLAY NO SQA        @G33VPHZ*/
*        6 *        BIT(2),       /* RESERVED                @G33VPHZ*/
*
*    2 RTCTSDI,                   /* *** SVC DUMP INFORMATION ***    */
*      3 RTCTSDNA BIT(8),         /* NUMBER OF ADDRESS SPACES TO
*                                    DUMP                    @G33VPHD*/
*      3 RTCTINDX BIT(8),         /* INDEX FOR ASID LIST ENTRY
*                                                            @G33VPHD*/
*      3 RTCTSDPR FIXED(8),       /* PERMANENT RETURN CODE   @G33VPHD*/
*    2 RTCTZZZ2   CHAR(7),        /* RESERVED                @G33VPHZ*/
*
*    2 RTCTSDF    BIT(32),        /* *** SVC DUMP FLAGS ***  @G33VPHD*/
*      3 RTCTSDF1   BIT(8),       /* (BYTE 1 OF FLAGS:)      @G33VPHD*/
*        4 RTCTSDNO   BIT(1),     /* NO SYS1.DUMP D.S. DEFINED
*                                                            @G33VPHD*/
*        4 RTCTSDND   BIT(1),     /* SVC DUMP SET SYSTEM
*                                    NONDISPATCHABLE         @G33VPHD*/
*        4 RTCTSDSH   BIT(1),     /* SCHEDULE DUMP (IEAVTSDX)
*                                    REQUEST                 @G33VPHD*/
*        4 RTCTSDMA BIT(1),       /* MULTIPLE ADDRESS SPACE DUMP IN
*                                    PROCESS                 @G33VPHD*/
*        4 RTCTSDEP BIT(1),       /* CALLER'S ECB POSTED     @G33VPHD*/
*        4 RTCTSDSD BIT(1),       /* SUMMARY DUMP (IEAVTSSD) RECEIVED
*                                    CONTROL                 @G33VPHD*/
*        4 RTCTSDRS BIT(1),       /* REAL STORAGE BUFFER MGR (IEAVPRSB)
*                                    RECEIVED CONTROL        @G33VPHD*/
*        4 RTCTSDSC BIT(1),       /* SUMMARY DUMP (IEAVTSSD) COMPLETED
*                                    PROCESSING              @G33VPHD*/
*
*      3 RTCTSDF2 BIT(8),         /* (BYTE 2 OF FLAGS:)      @G33VPHD*/
*        4 RTCTSDMR BIT(1),       /* DUMP OF MASTER A.S. REQ @G33VPHD*/
*        4 RTCTSDTQ BIT(1),       /* TQE WAS ENQD BY SETDIE  @G33VPHD*/
*        4 RTCTSDDI BIT(1),       /* TIMER DIE RECEIVED CONTROL
*                                    (SCHDIE IN IEAVTSDX)    @G33VPHD*/
*        4 RTCTSDLA BIT(1),       /* LAST ASID PROCESSING    @G33VPHD*/
*        4 RTCTSDWF BIT(1),       /* SUMDUMP WRITER (IEAVTSDW)
*                                    COMPLETED               @G33VPHD*/
*        4 RTCTSDSL BIT(1),       /* SDUMP SELECTED DUMP DS  @G33VPHD*/
*        4 RTCTSDRW BIT(1),       /* SUMDUMP RECORDS (FROM
*                                    IEAVTSSD) TO WRITE      @G33VPHD*/
*        4 RTCTSDFX BIT(1),       /* ASYNC EXIT FLAG         @ZA27434*/
*      3 RTCTR2D2 BIT(8),         /* (BYTE 3 OF FLAGS:)              */
*        4 * BIT(8),              /* RESERVED                        */
*      3 RTCTC3PO BIT(8),         /* (BYTE 4 OF FLAGS:)              */
*        4 * BIT(8),              /* RESERVED                        */
*    /****************************************************************/
*    /* ARRAY OF INFORMATION FOR SVC DUMP OF MULTIPLE ADDRESS SPACES */
*    /****************************************************************/
*    2 RTCTSDF3(16) BIT(32),      /*                         @G33VPHD*/
*      3 RTCTSDAS BIT(16),        /* ASID OF THIS ADDRESS
*                                    SPACE                   @G33VPHZ*/
*      3 RTCTSDF4 BIT(8),         /* (BYTE 1 OF FLAGS:)      @G33VPHD*/
*        4 RTCTSDSS BIT(1),       /* GSRB IN ADDR SPACE SCHEDULED
*                                                            @G33VPHD*/
*        4 RTCTSDNC BIT(1),       /* NON-DISPATCHABLE SRB RECEIVED
*                                     CONTROL                @G33VPHD*/
*        4 RTCTSDAN BIT(1),       /* ADDR SPACE SET NON-DISPATCHABLE
*                                                            @G33VPHD*/
*        4 RTCTSDRM BIT(1),       /* DUMP TASK HAS BEEN RESUMED
*                                                            @G33VPHD*/
*        4 RTCTSDTR BIT(1),       /* DUMP TASK RUNNING       @G33VPHD*/
*        4 RTCTSDEQ BIT(1),       /* DUMP TASK ENQUEUED ON SDUMP
*                                    RESOURCE                @G33VPHD*/
*        4 RTCTSDEN BIT(1),       /* SVC DUMP (IEAVAD00 OR IEAVTSDT)
*                                    IS PROCESSING THIS ADDRESS SPACE
*                                    ENTRY                   @G33VPHD*/
*        4 RTCTSDDO BIT(1),       /* DUMP ATTEMPTED FOR THIS ASID
*                                                            @G33VPHD*/
*      3 RTCTSDF5   BIT(8),       /* RESERVED                @G33VPHD*/
*   /*****************************************************************/
*   /* RTM INFORMATION                                               */
*   /*****************************************************************/
*    2 RTCTMRMQ PTR(31),          /* ADDRESS OF QUEUE OF STORAGE AREAS
*                                    (FOR SYSMDUMPS) TO BE FREED AT
*                                    MEMTERM                 @G33SPHZ*/
*    2 RTCTZZZ4 PTR(31),          /* RESERVED                @G33VPHZ*/
*    2 RTCTZZZ5 PTR(31);          /* RESERVED                @G33VPHZ*/
*   /*****************************************************************/
*   /* THE FOLLOWING MAPS THE BITS OF THE DEFAULT (EFFECTIVE)        */
*   /* DUMP OPTION WORDS (RTCTOPT) FROM IPL AND CHNGDUMP COMMAND     */
*   /*****************************************************************/
*DECLARE
*  1 RTCTMOPT BASED(ADDR(RTCTOPT)),                      /*  @G33CPHE*/
*    2 RTCTMSAO   BIT(32),        /* *** SYSABEND EFFECTIVE OPTIONS
*                                    *****************************   */
*     3 RTCTSASD BIT(16),         /* SDATA BYTES                     */
*      4 RTCTSAO1   BIT(8),       /* (BYTE 1 OF SDATA OPTIONS:)      */
*        6 RTCTSAD0 BIT(1),       /* 1=DISPLAY NUCLEUS               */
*        6 RTCTSAD1 BIT(1),       /* 1=DISPLAY SQA                   */
*        6 RTCTSAD2 BIT(1),       /* 1=DISPLAY LSQA                  */
*        6 RTCTSAD3 BIT(1),       /* 1=DISPLAY SWA                   */
*        6 RTCTSAD4 BIT(1),       /* 1=DISPLAY GTF OR SUPERVISOR
*                                    TRACE                           */
*        6 RTCTSAD5 BIT(1),       /* 1=DISPLAY CONTROL BLOCKS FOR
*                                    TASK                            */
*        6 RTCTSAD6 BIT(1),       /* 1=DISPLAY ENQUEUE CONTROL BLKS  */
*        6 RTCTSAD7 BIT(1),       /* 1=FORMAT DATA MANAGEMENT CONTROL
*                                    BLOCKS                  @G33CPHE*/
*      4 RTCTSAO2 BIT(8),         /* (BYTE 2 OF SDATA OPTIONS:)      */
*        6 RTCTSADG BIT(1),       /* 1=FORMAT IOS C.B.S      @G33CPHE*/
*        6 RTCTSADH BIT(1),       /* 1=FORMAT ERROR C.B.S    @G33CPHE*/
*        6 *        BIT(6),       /* RESERVED                        */
*     3 RTCTSAPD BIT(16),
*      4 RTCTSAO3   BIT(8),       /* (BYTE 1 OF PDATA OPTIONS:)      */
*        6 RTCTSAD8 BIT(1),       /* 1=DISPLAY SAVE AREA TRACE (SA)  */
*        6 RTCTSAD9 BIT(1),       /* 0=DISPLAY ENTIRE SAVE AREA
*                                    1=DISPLAY SAVE AREA HEADINGS
*                                      (SAH KEYWORD)                 */
*        6 RTCTSADA BIT(1),       /* 1=DISPLAY REGISTERS             */
*        6 RTCTSADB BIT(1),       /* 1=DISPLAY LINK PACK AREA        */
*        6 RTCTSADC BIT(1),       /* 1=DISPLAY JOB PACK AREA         */
*        6 RTCTSADD BIT(1),       /* 1=DISPLAY PSW                   */
*        6 RTCTSADE BIT(1),       /* 1=DISPLAY USER SUBPOOLS:
*                                    0-127                           */
*        6 RTCTSADF BIT(1),       /* RESERVED                        */
*      4 RTCTSAO4 BIT(8),
*        6 * BIT(6),              /* (BYTE 1 OF OTHER OPTIONS:)      */
*        6 RTCTSAMG BIT(1),       /* SEE RTCTSAOV            @G33CPHZ*/
*          7 RTCTSAOV BIT(1),     /* 1=OVER MODE  0=ADD MODE @G33CPHZ*/
*        6 RTCTISAB BIT(1),  /* IGNORE REQUESTS FOR SYSABEND @G33CPHE*/
*
*    2 RTCTMSUO   BIT(32),        /* *** SYSUDUMP EFFECTIVE OPTIONS
*                                    *****************************   */
*     3 RTCTSUSD BIT(16),         /* SDATA BYTES             @G33CPHE*/
*      4 RTCTSUO1   BIT(8),       /* (BYTE 1 OF SDATA OPTIONS:)      */
*        6 RTCTSYD0 BIT(1),       /* 1=DISPLAY NUCLEUS               */
*        6 RTCTSYD1 BIT(1),       /* 1=DISPLAY SQA                   */
*        6 RTCTSYD2 BIT(1),       /* 1=DISPLAY LSQA                  */
*        6 RTCTSYD3 BIT(1),       /* 1=DISPLAY SWA                   */
*        6 RTCTSYD4 BIT(1),       /* 1=DISPLAY GTF OR SUPERVISOR
*                                    TRACE                           */
*        6 RTCTSYD5 BIT(1),       /* 1=DISPLAY CONTROL BLOCKS FOR
*                                    TASK                            */
*        6 RTCTSYD6 BIT(1),       /* 1=DISPLAY ENQUEUE CNTRL BLKS    */
*        6 RTCTSYD7 BIT(1),       /* 1=FORMAT DATA MANAGEMENT CONTROL
*                                    BLOCKS                 @G33CPHE */
*      4 RTCTSUO2 BIT(8),         /* (BYTE 2 OF SDATA OPTIONS:)      */
*        6 RTCTSYDG BIT(1),       /* 1=FORMAT IOS C.B.S     @G33CPHE */
*        6 RTCTSYDH BIT(1),       /* 1=FORMAT ERROR C.B.S   @G33CPHE */
*        6 * BIT(6),              /* RESERVED                        */
*     3 RTCTSUPD BIT(16),         /*                         @G33CPHE*/
*      4 RTCTSUO3   BIT(8),       /* (BYTE 1 OF PDATA OPTIONS:)      */
*        6 RTCTSYD8 BIT(1),       /* 1=DISPLAY SAVE AREA TRACE (SA)  */
*        6 RTCTSYD9 BIT(1),       /* 0=DISPLAY ENTIRE SAVE AREA
*                                    1=DISPLAY SAVE AREA HEADINGS
*                                    (SAH KEYWORD)                   */
*        6 RTCTSYDA BIT(1),       /* 1=DISPLAY REGISTERS             */
*        6 RTCTSYDB BIT(1),       /* 1=DISPLAY LINK PACK AREA        */
*        6 RTCTSYDC BIT(1),       /* 1=DISPLAY JOB PACK AREA         */
*        6 RTCTSYDD BIT(1),       /* 1=DISPLAY PSW                   */
*        6 RTCTSYDE BIT(1),       /* 1=DISPLAY USER SUBPOOLS:
*                                    0-127                           */
*        6 RTCTSYDF BIT(1),       /* RESERVED                        */
*      4 RTCTSUO4 BIT(8),
*        6 * BIT(6),              /* (BYTE 1 OF OTHER DATA:)         */
*        6 RTCTSUMG BIT(1),       /* SEE RTCTSUOV            @G33CPHZ*/
*          7 RTCTSUOV BIT(1),     /* 1=OVER MODE  0=ADD MODE @G33CPHZ*/
*        6 RTCTISYU BIT(1),  /* IGNORE REQUESTS FOR SYSUDUMP @G33CPHE*/
*
*    2 RTCTMSYO BIT(32),          /* *** SYSMDUMP EFFECTIVE OPTIONS
*                                    *****************************   */
*      3 RTCTSD01 BIT(8),         /* (BYTE 1 OF SDATA OPTIONS:)      */
*        4 RTCTSDS0 BIT(1),       /* 1=DISPLAY NUCLEUS       @G33CPHE*/
*        4 RTCTSDS1 BIT(1),       /* 1=DISPLAY SQA           @G33CPHE*/
*        4 RTCTSDS2 BIT(1),       /* 1=DISPLAY LSQA          @G33CPHE*/
*        4 RTCTSDS3 BIT(1),       /* 1=DISPLAY SWA           @G33CPHE*/
*        4 RTCTSDS4 BIT(1),       /* 1=DISPLAY GTF OR SUPERVISOR TRACE
*                                                            @G33CPHE*/
*        4 RTCTSDS5 BIT(1),       /* 1=DISPLAY REGION        @G33CPHE*/
*        4 RTCTSDS6 BIT(1),       /* 1=DISPLAY LPA FOR RGN   @G33CPHE*/
*        4 RTCTSDS7 BIT(1),       /* 1=DISPLAY CSA           @G33CPHE*/
*      3 RTCTSD02 BIT(8),         /* RESERVED                        */
*      3 RTCTSD03 BIT(8),         /* RESERVED                        */
*      3 RTCTSD04 BIT(8),
*        4 * BIT(6),              /* (BYTE 1 OF OTHER DATA:)         */
*        4 RTCTSMMG BIT(1),       /* SEE RTCTSMOV            @G33CPHZ*/
*          5 RTCTSMOV BIT(1),     /* 1=OVER MODE  0=ADD MODE @G33CPHZ*/
*        4 RTCTISYM BIT(1),  /* IGNORE REQUESTS FOR SYSMDUMP @G33CPHE*/
*
*    2 RTCTMSDO   BIT(32),        /* *** SVC DUMP EFFECTIVE OPTIONS
*                                   (ONLY SUPPLIED BY CHNGDUMP
*                                   COMMAND) ************    @G33CPHZ*/
*      3 RTCTSDOD BIT(16),        /* SDATA BYTES             @G33CPHZ*/
*        4 RTCTSDO1   BIT(8),     /* (BYTE 1 OF SDATA OPTIONS:)      */
*          6 RTCTSDP0 BIT(1),     /* 1=DISPLAY ALL PSA'S IN
*                                    SYSTEM                          */
*          6 RTCTSDP1 BIT(1),     /* 1=DISPLAY CURRENT PSA           */
*          6 RTCTSDP2 BIT(1),     /* 1=DISPLAY NUCLEUS               */
*          6 RTCTSDP3 BIT(1),     /* 1=DISPLAY SQA                   */
*          6 RTCTSDP4 BIT(1),     /* 1=DISPLAY LSQA                  */
*          6 RTCTSDP5 BIT(1),     /* 1=DISPLAY REGION (PRIVATE
*                                    AREA)                           */
*          6 RTCTSDP6 BIT(1),     /* 1=DISPLAY ACTIVE LPA MODULES
*                                    FOR REGION                      */
*          6 RTCTSDP7 BIT(1),     /* 1=DISPLAY GTF OR SUPERVISOR
*                                    TRACE                           */
*
*        4 RTCTSDO2   BIT(8),     /* (BYTE 2 OF SDATA OPTIONS:)      */
*          6 RTCTSDP8 BIT(1),     /* 1=DISPLAY CSA                   */
*          6 RTCTSDP9 BIT(1),     /* 1=DISPLAY SWA                   */
*          6 RTCTSDPA BIT(1),     /* 1=DISPLAY SUMMARY SVC DUMP
*                                    (SUMDUMP)               @G33CPHE*/
*          6 RTCTSDPB BIT(1),     /* 1=NO SUMMARY DUMP DISPLAY
*                                                            @G33CPHE*/
*          6 RTCTSDPC BIT(1),     /* 1=NO ALL PSA DISPLAY    @G33CPHE*/
*          6 RTCTSDPD BIT(1),     /* 1=NO SQA DISPLAY        @G33CPHE*/
*          6 *        BIT(2),     /* RESERVED                        */
*
*      3 RTCTSDO3 BIT(8),         /* (BYTE 1 OF OTHER OPTIONS:)      */
*        4 RTCTSDPG BIT(1),       /* 1 MEANS QUIESCE=YES SPECIFIED ON
*                                    CHNGDUMP COMMAND                */
*        4 RTCTSDPH BIT(1),       /* 1 MEANS QUIESCE=NO SPECIFIED ON
*                                    CHNGDUMP COMMAND                */
*        4 *        BIT(6),       /* RESERVED                        */
*      3 RTCTSDO4 BIT(8),         /* (BYTE 2 OF OTHER OPTIONS:)      */
*        4 * BIT(6),              /* RESERVED                        */
*        4 RTCTSDMG BIT(1),       /* SEE RTCTSDOV            @G33CPHZ*/
*          5 RTCTSDOV BIT(1),     /* 1=OVER MODE  0=ADD MODE @G33CPHZ*/
*        4 RTCTISVC BIT(1); /* IGNORE REQUESTS FOR SVC DUMPS @G33CPHE*/
*  %RTCTLEN='LENGTH(RTCT)';       /* TOTAL LENGTH OF RTCT            */
./ ADD NAME=IHARTSD
*/********************************************************************/
*/*   MACRO NAME - IHARTSD                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME - RTCT SDUMP EXTENSION                        */
*/*                                                                  */
*/*       COMPONENT - 5752-SC1CM                                     */
*/*                                                                  */
*/*   COPYRIGHT - COPYRIGHT IBM CORP. 1980, 1981                 @L1C*/
*/*               LICENSED MATERIAL- PROGRAM,                        */
*/*               PROPERTY OF IBM,                                   */
*/*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER        */
*/*               G120-2083                                          */
*/*                                                                  */
*/*   STATUS - OS/VS2 JBB1326                                    @L1C*/
*/*                                                                  */
*/*   FUNCTION - USED TO SAVE SVC DUMP INFORMATION THAT MUST         */
*/*              BE IN FIXED STORAGE.  CONTAINS LISTA STORAGE RANGES,*/
*/*              THE COPIED DCB AND DEB FOR REQUESTORS OF SDUMP      */
*/*              THAT SPECIFY THE DCB OPTION, CROSS MEMORY STATUS    */
*/*              INFORMATION, AND OTHER SVC DUMP INFORMATION.        */
*/*              CONTAINS THE ADDRESS OF AN AREA TO BE USED  @G38VP1U*/
*/*              TO COPY THE SDUMP CALLERS SDWA ON ENTRY TO  @G38VP1U*/
*/*              SVC DUMP.                                   @G38EP1U*/
*/*                                                                  */
*/*   METHOD OF ACCESS -                                             */
*/*      PLS - INCLUDE IHARTSD FROM SYSLIB.                          */
*/*            MACRO IHARTCT MUST ALSO BE INCLUDED.                  */
*/*      BAL - DSECT IS CREATED WHEN IHARTSD STATEMENT EXECUTED.     */
*/*            USING ON ADDRESS FOUND IN RTCTRTSD IS REQUIRED        */
*/*            FOR ADDRESSABLIITY.   MODULES THAT INCLUDE THIS MACRO */
*/*            MUST ALSO INCLUDE IHARTCT.                        @L1C*/
*/*                                                                  */
*/*   CREATED BY- IEAVTSDI, OBTAINED IN KEY ZERO FROM SUBPOOL 239    */
*/*               SQA AT IPL TIME.                                   */
*/*                                                                  */
*/*   SERIALIZATION - SAME AS THE RTCT.                              */
*/*                                                                  */
*/*   POINTED TO BY - IHARTCT (RTCTRTSD)                             */
*/*                                                                  */
*/*   CHANGE ACTIVITY =                                              */
*/*              CREATED FOR OS/VS JBB1226                   @G38EP1U*/
*/*              - INITIAL SUPPORT ADDED TO PROVIDE AN               */
*/*                EXTENSION TO THE RTCT FOR SVC DUMP.               */
*/*              - ADD SDUMP EXIT SUPPORT                    @G386P31*/
*/*              - ADD SDUMP AND SYSMDUMP EXIT SUPPORT       @G38FP31*/
*/*              - ADD SUSPEND SUMMARY DUMP SUPPORT          @G38EP1U*/
*/*              - ADD SDWA TO THE HEADER RECORD SUPPORT     @G38VP1U*/
*/*      JBB1326 - ADD SUPPORT FOR THE CONSOLE TRACE FACILITY    @L1A*/
*/*                                                                  */
*/*            REASON  PRODUCT   DATE   ORIGIN   COMMENTS        @L1A*/
*/*      $L1 =  RAS    JBB1326  801009  PD1U:  CONSOLE TRACE     @L1A*/
*/*      $T1 = UZ90178 JBB1326  810801  PD1X: CONSOLE TR IF MSSF @T1A*/
*/********************************************************************/
*/*A000000-999999                                            @G383P1U*/
*        %GOTO RTSDPLS;     /*SET UP BILINGUAL MAPPING
         MACRO
         IHARTSD
RTSD     DSECT ,                  BILINGUAL MAPPING OF RTSD
         IEZBITS  ,               GENERATE SYMBOLIC BIT NAMES
RTSDID   DS    CL4                EBCDIC IDENTIFIER RTSD
RTSDXATB DS    0CL128             EXTENSION ASID TABLE
RTSDPTRT DS    0CL128             EXTENSION ASID TABLE
RTSDTCTL DS    CL4                CONTROL AND DATA BITS FOR THIS ASID
RTSDTPTR DS    F                  POINTER TO LISTA RANGES THIS ASID
RTSDTLEN EQU   *-RTSDPTRT         CALCULATE ONE TABLE ENTRY LENGTH
         DS    CL120              DEFINE THE REST OF THE LISTA TABLE
RTSDLSTN DS    A                  ADDR NEXT FREE LISTA TABLE ENTRY
RTSDLEND DS    A                  END ADDRESS OF THE LISTA AREA
RTSDLTBL DS    CL484              LISTA RANGE TABLE AREA       @G38AP1U
RTSDXMST DS    0FL7               CROSS MEMORY STATUS SAVE AREA
RTSDXCR1 DS    F                  CONTROL REGISTER ONE
RTSDPSTO DS    0F                 PRIMARY STO
         DS    F                  RESERVED  -  UNUSED
RTSDXCR3 DS    0F                 CONTROL REGISTER 3
RTSDXAKM DS    H                  AUTHORIZATION KEY MASK
RTSDSAID DS    H                  SECONDARY ASID
RTSDXCR4 DS    0F                 CONTROL REGISTER 4
RTSDXMAI DS    H                  AUTHORIZATION INDEX
RTSDPAID DS    H                  PRIMARY ASID
RTSDXCR5 DS    F                  CONTROL REGISTER 5
         DS    F                  RESERVED  -  UNUSED
RTSDXCR7 DS    F                  CONTROL REGISTER 7
RTSDSSTO DS    0F                 SECONDARY STO
RTSDHAID DS    H                  ASID OF THE CALLERS HOME
         DS    H                  RESERVED
RTSDXPSW DS    CL8                CROSS MEMORY PSW ON ENTRY TO SDUMP
RTSDASCB DS    A                  ASCB OF ADDRESSABLE ADDRESS SPACE
*                                 OF SDUMP CALLER ON ENTRY     @G38EP1U
RTSDCMLA DS    A                  ASCB ADDR OF ASID WHOSE CML LOCK IS
*                                 HELD
RTSDCMSV DS    CL8                SAVE AREA FOR CMSET LOGIC
RTSDIDX1 DS    H                  SVC DUMP WORKING INDEX ONE
RTSDIDX2 DS    H                  SVC DUMP WORKING INDEX TWO
RTSDEXTB DS    A                  ADDRESS OF SDUMP EXIT TABLE  @G386P31
RTSDRTRN DS    A                  COMMON RETURN SAVE AREA      @G386P1U
RTSDVBSZ DS    F                  VIRTUAL BUFFER SIZE          @G386P31
RTSDCSAV DS    A                  ADDRESS OF SDUMP CALLERS     @G38EP1U
*                                 SAVE AREA                    @G38EP1U
RTSDRSAD DS    0CL8               ADDRESSABILITY TO THE        @ZMB0483
*                                 SDUMP CALLERS SAVE AREA      @ZMB0483
         DS    H                  RESERVED                     @ZMB0483
RTSDRSAS DS    H                  SASID FOR THE SAVE AREA      @ZMB0483
         DS    H                  RESERVED                     @ZMB0483
RTSDRPAS DS    H                  PASID FOR THE SAVE AREA      @ZMB0483
RTSDFLGS DS    0CL2               SVC DUMP OPERATION FLAGS     @G38VP1U
RTSDFLG1 DS    CL1                FIRST BYTE OF FLAGS          @G38VP1U
RTSDASDW EQU   BIT0               COPIED SDWA CAN BE USED      @G38VP1U
RTSDVCPU EQU   BIT1               ALL CPUS ARE VALID AND NOT VM    @L1A
         DS    CL1                RESERVED                     @G38VP1U
RTSDASID DS    CL2                ASID OF THE CALLERS SDWA     @G38VP1U
RTSDSDWA DS    A                  ADDRESS OF THE COPIED SDWA   @G38VP1U
RTSDCSDW DS    A                  ADDRESS OF THE CALLERS SDWA  @G38VP1U
RTSDLEN  EQU   *-RTSD             CALCULATE RTSD LENGTH
*        AREAS NEEDED TO SUPPORT THE CONSOLE TRACE FACILITY        @L1A
         DS    0D                 GET DOUBLE WORD BOUNDARY         @L1A
RTSDMCW  DS    0CL16              MAINTENANCE CONTROL WORD         @L1A
RTSDMPRM DS    0CL8               MSSFCALL PARAMETER LIST          @T1A
RTSDMDBK DS    A                  ADDRESS OF DATA BLOCK            @T1A
RTSDMCDA DS    A                  ADDRESS OF COMMAND WORD          @T1A
RTSDMCMD DS    CL4                COMMAND WORD FOR MSSFCALL        @T1A
         DS    CL4                FILLER                           @T1A
         DS    0D                 GET DOUBLE WORD BOUNDARY         @L1A
RTSDCDW  DS    0CL16              CONSOLE DIAGNOSE WORD            @L1A
RTSDCDWC DS    A                  CDW COMMAND CODE                 @L1A
RTSDCDWR DS    A                  CDW RESPONSE REASON CODE         @L1A
RTSDCDWL DS    A                  CDW LENGTH FIELD                 @L1A
RTSDCDWA DS    A                  CDW ADDRESS FIELD                @L1A
         SPACE 2
* START OF RTSDEXIT BILINGUAL MAPPING                          @G386P31
RTSDEXIT DSECT                    SDUMP EXIT TABLE             @G386P31
RTSDEXFL DS    0CL4               EXIT FLAGS                   @G386P31
RTSDEXMS DS    CL2                EXIT MASK                    @G386P31
         DS    CL1                RESERVED                     @G386P31
RTSDEXAT DS    CL1                EXIT ATTRIBUTES              @G386P31
RTSDEXLC EQU   BIT0               LOCAL EXIT BIT               @G386P31
RTSDEXGB EQU   BIT1               GLOBAL EXIT BIT              @G386P31
RTSDEXSD EQU   BIT2               SDUMP EXIT BIT               @G38FP31
RTSDEXSM EQU   BIT3               SYSMDUMP EXIT BIT            @G38FP31
RTSDEXON EQU   BIT4               ONE TIME ONLY EXIT BIT       @ZMB0360
RTSDEXAD DS    A                  EXIT LOAD ADDRESS            @G386P31
RTSDXLEN EQU   *-RTSDEXIT         CALCULATE RTSDEXIT LENGTH    @G386P31
         SPACE 2
* START OF RTSDRANG BILINGUAL MAPPING                          @G386P31
RTSDRANG DSECT                    LISTA RANGE MAPPING          @G386P31
RTSDBADR DS    A                  BEGINNING ADDRESS OF RANGE   @G386P31
RTSDEADR DS    A                  ENDING ADDRESS OF RANGE      @G386P31
RTSDRLEN EQU   *-RTSDRANG         CALCULATE RTSDRANG LENGTH    @G386P31
         MEND
*    */
*%RTSDPLS:  ;
*  DCL 1 RTSD BASED(RTCTRTSD),    /* RTCT SDUMP EXTENSION            */
*      2  RTSDID CHAR(4),         /* EBCDIC IDENTIFIER -RTSD-        */
*      2  RTSDXATB,    /*EXTENSION ASID TABLE - CONTAINS CONTROL BITS
*                        AND LISTA POINTERS BY ASID                  */
*        3 RTSDPTRT(16),  /*TABLE HAS 16 ENTRIES AND IS INDEXED USING
*                                         THE RTCTINDX FIELD         */
*         5 RTSDTCTL BIT(32),     /* CONTROL AND DATA BITS FOR ASID  */
*           7 RTSDLAON  BIT(1),   /*INDICATE A LISTA ONLY ASID       */
*         5 RTSDTPTR PTR(31),     /* POINTER TO RANGES FOR THIS ASID */
*      2  RTSDLSTN  PTR(31),   /*ADDR OF NEXT FREE LISTA TABLE ENTRY */
*      2  RTSDLEND  PTR(31),   /*ADDRESS OF END OF THE LISTA AREA    */
*      2  RTSDLTBL CHAR(484),     /* LISTA RANGE TABLE AREA  @G38AP1U*/
*      2  RTSDXMST BDY(WORD),      /*CROSS MEMORY STATUS SAVE AREA   */
*         3  RTSDXCR1  FIXED(31),    /*CONTROL REGISTER ONE          */
*            4  RTSDPSTO PTR(31),    /*PRIMARY STO VALUE             */
*         3  * FIXED(31),           /*RESERVED  -  UNUSED            */
*         3  RTSDXCR3  FIXED(31),   /*CONTROL REGISTER 3             */
*            4  RTSDXAKM FIXED(16),  /*AUTHORIZATION KEY MASK        */
*            4  RTSDSAID FIXED(16),  /*SECONDARY ASID                */
*         3  RTSDXCR4  FIXED(31),   /*CONTROL REGISTER 4             */
*            4  RTSDXMAI FIXED(16),  /*AUTHORIZATION INDEX           */
*            4  RTSDPAID FIXED(16),  /*PRIMARY ASID                  */
*         3  RTSDXCR5  FIXED(31),    /*CONTROL REGISTER 5            */
*         3  *  FIXED(31),           /*RESERVED  -  UNUSED           */
*         3  RTSDXCR7  FIXED(31),    /*CONTROL REGISTER 7            */
*            4  RTSDSSTO PTR(31),    /*SECONDARY STO                 */
*      2  RTSDHAID  FIXED(15),   /*ASID OF THE CALLERS HOME ADDRESS
*                                  SPACE */
*      2  *   FIXED(15),        /*RESERVED                           */
*      2  RTSDXPSW  CHAR(8),    /*CROSS MEMORY PSW ON ENTRY TO SDUMP */
*      2  RTSDASCB  PTR(31),    /*ASCB ADDR OF ADDRESSABLE ADDRESS
*                             SPACE OF SDUMP CALLER ON ENTRY @G38EP1U*/
*      2  RTSDCMLA  PTR(31),    /*ASCB ADDR OF ASID WHOSE CML LOCK IS
*                                                           HELD     */
*      2  RTSDCMSV  CHAR(8),    /*SAVE AREA FOR CMSET LOGIC          */
*      2  RTSDIDX1  FIXED(15),     /*SVC DUMP WORKING INDEX ONE      */
*      2  RTSDIDX2  FIXED(15),     /*SVC DUMP WORKING INDEX TWO      */
*      2  RTSDEXTB  PTR(31),   /*ADDRESS OF SDUMP EXIT TABLE @G386P31*/
*      2  RTSDRTRN  PTR(31),   /*COMMON SDUMP RETURN SAVE    @G386P1U*/
*      2  RTSDVBSZ  FIXED(31), /* VIRTUAL BUFFER SIZE USED
*                              BY IEAVTSAI TO GETMAIN THE VIRTUAL
*                            BUFFER FOR SUSPEND SUMMARY DUMP @G386P31*/
*      2  RTSDCSAV  PTR(31),   /*ADDRESS OF THE SDUMP CALLERS SAVE AREA
*                                                            @G38EP1U*/
*      2  RTSDRSAD CHAR(8) BDY(WORD),  /*ADDRESSABILITY TO THE CALLERS
*                                         REGISTER SAVE AREA @ZMB0483*/
*         3  *         FIXED(16), /* RESERVED                @ZMB0483*/
*         3  RTSDRSAS  FIXED(16), /* SASID FOR THE SAVE AREA @ZMB0483*/
*         3  *         FIXED(16), /* RESERVED                @ZMB0483*/
*         3  RTSDRPAS  FIXED(16), /* PASID FOR THE SAVE AREA @ZMB0483*/
*      2  RTSDFLGS  CHAR(2),   /*SVC DUMP OPERATION FLAGS    @G38VP1U*/
*         3  RTSDFLG1 CHAR(1), /*FIRST BYTE OF SDUMP FLAGS   @G38VP1U*/
*            4 RTSDASDW BIT(1), /*THE COPIED SDWA IS USABLE  @G38VP1U*/
*            4 RTSDVCPU BIT(1), /*ALL CPUS ARE VALID AND NOT VM  @L1A*/
*         3  *        CHAR(1),  /*RESERVED                   @G38VP1U*/
*      2  RTSDASID  CHAR(2),   /*ASID OF THE CALLERS SDWA    @G38VP1U*/
*      2  RTSDSDWA  PTR(31),   /*ADDRESS OF THE COPIED SDWA  @G38VP1U*/
*      2  RTSDCSDW  PTR(31),   /*ADDRESS OF THE CALLERS SDWA     @L1C*/
*      2  RTSDMCW CHAR(16) BDY(DWORD), /*MAINTENANCE CONTROL WORD FOR
*                                                 DIAGNOSE LOGIC @L1A*/
*         3 RTSDMPRM CHAR(8) BDY(DWORD), /* MSSFCALL PARAMETER LIST
*                                                                @T1A*/
*         5 RTSDMDBK PTR(31) BDY(DWORD), /* ADDRESS OF DATA BLOCK
*                                                                @T1A*/
*         5 RTSDMCDA PTR(31) BDY(DWORD,5), /* ADDRESS OF COMMAND WORD
*                                                                @T1A*/
*         3 RTSDMCMD CHAR(4),   /* COMMAND WORD FOR MSSFCALL     @T1A*/
*         3 * CHAR(4),             /*                            @T1A*/
*      2  RTSDCDW CHAR(16) BDY(DWORD), /*CONSOLE DIAGNOSE WORD   @L1A*/
*         3  RTSDCDWC CHAR(4),  /*CDW COMMAND CODE FIELD         @L1A*/
*         3  RTSDCDWR CHAR(4),  /*CDW RETURN CODE FIELD          @L1A*/
*         3  RTSDCDWL CHAR(4),  /*CDW LENGTH FIELD - ALWAYS 2K   @L1A*/
*         3  RTSDCDWA CHAR(4);  /*CDW ADDRESS FIELD              @L1A*/
*     @SPACE(5);
*      /* SDUMP EXIT TABLE                                   @G386P31*/
*  DCL 1  RTSDEXIT(*) BASED(RTSDEXTB), /* SDUMP EXIT TABLE   @G386P31*/
*       2 RTSDEXFL CHAR(4),    /* EXIT FLAGS                 @G386P31*/
*        3 RTSDEXMS BIT(16),   /* EXIT MASK USED TO IDENTIFY THE EXIT
*                                 WITH AN SDUMP PARAMETER    @G386P31*/
*        3 * CHAR(1),          /* RESERVED                   @G386P31*/
*        3 RTSDEXAT BIT(8),    /* EXIT ATTRIBUTES            @G386P31*/
*         4 RTSDEXLC BIT(1),   /* ON FOR LOCAL EXIT          @G386P31*/
*         4 RTSDEXGB BIT(1),   /* ON FOR GLOBAL EXIT         @G386P31*/
*         4 RTSDEXSD BIT(1),   /* ON FOR SDUMP EXIT          @G38FP31*/
*         4 RTSDEXSM BIT(1),   /* ON FOR SYSMDUMP EXIT       @G38FP31*/
*         4 RTSDEXON BIT(1),   /* ON FOR ONE TIME ONLY EXIT  @ZMB0360*/
*         4 * BIT(3),          /* RESERVED                   @ZMB0360*/
*       2 RTSDEXAD PTR(31);    /* EXIT LOAD MODULE ADDRESS   @G386P31*/
*      /* ADDRESS RANGE MAPPING FOR LISTA                            */
*  DCL 1 RTSDRANG BASED(RTSDLSTN), /* ADDRESS RANGE FOR LISTA        */
*      3  RTSDBADR  PTR(31),   /*BEGINNING ADDRESS                   */
*      3  RTSDEADR  PTR(31);   /*ENDING ADDRESS                      */
./ ADD NAME=IHASAVER
*%;/*
         MACRO
         IHASAVER &DSECT=YES
.*
.*01  MODULE-NAME = IHASAVER
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 0
.*
.*01  CHANGE-ACTIVITY = 000
.*
.*01  DESCRIPTIVE-NAME = GENERAL PURPOSE REGISTERS SAVEAREA
.*
.*01  FUNCTION = TO SAVE THE USER REGISTERS
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING
.*
.*04        VALUE = YES OR NO
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*                                                                   */
* /* MACCOMP Y-2 SC1D0/SJD48                                         */
* /* MACSTAT Y-2 73138/021160                                        */
*/********************************************************************/
*/*                                                                  */
*/*  GENERAL PURPOSE REGISTERS SAVE AREA                             */
*/*                                                                  */
*/*  METHODS OF ACCESS                                               */
*/*     BAL                                                          */
*/*          IHASAVER DSECT=YES                                      */
*/*                         NO                                       */
*/*          DSECT=YES IS THE DEFAULT AND WILL PRODUCE THE SAVER     */
*/*                AS A DSECT                                        */
*/*          DSECT=NO WILL PRODUCE THE SAVER AS A CONTINUATION OF    */
*/*                DEFINED STORAGE. (NO DSECT CARD PRODUCED)         */
*/*     PL/S-RESPECIFY ON SAVER GIVES ADDRESSABILITY FOR ALL SYMBOLS */
*/*                                                                  */
*/*  NOTE = IN A PLS INCLUDE, SAVBASE MAY BE DECLARED AS DEF(LABEL)  */
*/*         TO CAUSE IT TO BE USED IN A STRUCTURE. IF SAVBASE IS     */
*/*         OMITTED THE STRUCTURE IS DECLARED AS BASED.              */
*/*                                                                  */
*/********************************************************************/
*%/*
         AIF   ('&DSECT' EQ 'NO').SAVNOD
SAVER    DSECT
         AGO   .SAVCONT
.SAVNOD  ANOP
SAVER    DS    0F
.SAVCONT ANOP
SAVPLI   DS    F                        USED BY PL/1 LANGUAGE PROGRAM
SAVPREV  DS    F                        ADDRESS OF PREVIOUS SAVE AREA
SAVNEXT  DS    F                        ADDRESS OF NEXT SAVE AREA
SAVGRS14 DS    F                        SAVE AREA FOR REGISTER 14
SAVGRS15 DS    F                        SAVE AREA FOR REGISTER 15
SAVGRS0  DS    F                        SAVE AREA FOR REGISTER 0
SAVGRS1  DS    F                        SAVE AREA FOR REGISTER 1
SAVGRS2  DS    F                        SAVE AREA FOR REGISTER 2
SAVGRS3  DS    F                        SAVE AREA FOR REGISTER 3
SAVGRS4  DS    F                        SAVE AREA FOR REGISTER 4
SAVGRS5  DS    F                        SAVE AREA FOR REGISTER 5
SAVGRS6  DS    F                        SAVE AREA FOR REGISTER 6
SAVGRS7  DS    F                        SAVE AREA FOR REGISTER 7
SAVGRS8  DS    F                        SAVE AREA FOR REGISTER 8
SAVGRS9  DS    F                        SAVE AREA FOR REGISTER 9
SAVGRS10 DS    F                        SAVE AREA FOR REGISTER 10
SAVGRS11 DS    F                        SAVE AREA FOR REGISTER 11
SAVGRS12 DS    F                        SAVE AREA FOR REGISTER 12
         MEND                                                       */;
*        % IF SAVBASE = ''
*        %    THEN
*        %      SAVBASE = 'BASED';
* DCL  1 SAVER SAVBASE BDY(WORD),
*        2 SAVPLI   PTR(31),            /* USED BY PL/1 LANG. PRGM   */
*        2 SAVPREV  PTR(31),            /* ADDR OF PREVIOUS SAVEAREA */
*        2 SAVNEXT  PTR(31),            /* ADDR OF NEXT SAVE AREA    */
*        2 SAVGRS14 PTR(31),            /* SAVE AREA FOR REGISTER 14 */
*        2 SAVGRS15 PTR(31),            /* SAVE AREA FOR REGISTER 15 */
*        2 SAVGRS0  PTR(31),            /* SAVE AREA FOR REGISTER 0  */
*        2 SAVGRS1  PTR(31),            /* SAVE AREA FOR REGISTER 1  */
*        2 SAVGRS2  PTR(31),            /* SAVE AREA FOR REGISTER 2  */
*        2 SAVGRS3  PTR(31),            /* SAVE AREA FOR REGISTER 3  */
*        2 SAVGRS4  PTR(31),            /* SAVE AREA FOR REGISTER 4  */
*        2 SAVGRS5  PTR(31),            /* SAVE AREA FOR REGISTER 5  */
*        2 SAVGRS6  PTR(31),            /* SAVE AREA FOR REGISTER 6  */
*        2 SAVGRS7  PTR(31),            /* SAVE AREA FOR REGISTER 7  */
*        2 SAVGRS8  PTR(31),            /* SAVE AREA FOR REGISTER 8  */
*        2 SAVGRS9  PTR(31),            /* SAVE AREA FOR REGISTER 9  */
*        2 SAVGRS10 PTR(31),            /* SAVE AREA FOR REGISTER 10 */
*        2 SAVGRS11 PTR(31),            /* SAVE AREA FOR REGISTER 11 */
*        2 SAVGRS12 PTR(31);            /* SAVE AREA FOR REGISTER 12 */
./ ADD NAME=IHASCE
*/*******************************************************************/
*/*   IHASCE                                                        */
*/*           MACCOMP - SC1CM                                       */
*/*           MACSTAT - @G17SP2F                                    */
*/*                     @G33NPHE    SLIP NODUMP 12/30/76            */
*/*           MACMEAN - SCE MEANS SLIP CONTROL ELEMENT              */
*/*     THIS MACRO MAPS THE SCE. THE SCE, WITH THE VARIABLE AREA    */
*/*     (SEE IHASCVA), IS THE INTERNAL REPRESENTATION OF THE SLIP   */
*/*     OPERATOR COMMAND.  SCE'S ARE MATCHED AGAINST SYSTEM         */
*/*     CONDITIONS IN ORDER TO DETERMINE SLIP TRAP QUALIFICATION.   */
*/*     THE MOST RECENTLY SET TRAP (SCE) IS MATCHED FIRST. STORAGE  */
*/*     IS FROM FIXED SQA (SP245). IEECB905 GETS, BUILDS, AND       */
*/*     FREES THE SCE.                                              */
*/*******************************************************************/
     DCL 1 SCE BASED(SCEPTR) BDY(DWORD),
           2 SCECBID    CHAR(4),       /* CONTROL BLOCK ID = SCE     */
           2 *          CHAR(4),       /* RESERVED                   */
         2 SCECTRFW  CHAR(8) BDY(WORD),/* TO DELETE AN ENTRY,MUST CDS*/
             3 SCECTR   PTR(31),       /* PROCESSOR SERIALIZATION CTR*/
             3 SCEFWD   PTR(31),       /* FORWARD SCE CHAIN PRT      */
           2 SCEBKWD    PTR(31),       /* BACKWARD SCE CHAIN PTR     */
           2 SCEFLG1    BIT(8),        /* FLAGS                      */
             3 SCEDSABL BIT(1),        /* OFF=ENABLED,ON=DISABLED    */
             3 SCEDELP  BIT(1),        /* DELETE IS PENDG ON PREV SCE*/
             3 SCEEVERY BIT(1),        /* OFF=MODE ANY,ON=MODE EVERY */
             3 SCESVCD  BIT(1),        /* ACTION IS SVC DUMP         */
             3 SCEWAIT  BIT(1),        /* ACTION IS WAIT             */
             3 SCEIGNOR BIT(1),        /* ACTION IS IGNORE           */
             3 SCENODMP BIT(1),        /* ACTION IS NODUMP   @G33NPHE*/
             3 *        BIT(1),        /* RESERVED           @G33NPHE*/
           2 SCERRTYP   BIT(8),        /* ERRTYP FLAGS               */
             3 SCEMACH  BIT(1),        /* MACHINE CHECK              */
             3 SCEPROG  BIT(1),        /* PROGRAM CHECK INTERRUPT    */
             3 SCEREST  BIT(1),        /* RESTART INTERRUPT          */
             3 SCEABEND BIT(1),        /* ABEND                      */
             3 SCEMEMTM BIT(1),        /* MEMORY TERMINATION         */
             3 SCESVCER BIT(1),        /* SVC ERROR                  */
             3 SCEDAT   BIT(1),        /* DAT ERROR                  */
             3 SCEPGIO  BIT(1),        /* PAGING I/O ERROR           */
           2 SCEMODE    BIT(16),       /* MODE FLAGS                 */
             3 SCEMODE1 BIT(8),        /* FIRST EIGHT                */
               4 SCESUPR  BIT(1),      /* SUPERVISOR CONTROL MODE    */
               4 SCEDIS   BIT(1),      /* DISABLED                   */
               4 SCEGLSP  BIT(1),      /* GLOBAL SPIN LOCK           */
               4 SCEGLSD  BIT(1),      /* GLOBAL SUSPEND LOCK        */
               4 SCELLOC  BIT(1),      /* LOCAL LOCK                 */
               4 SCETYP1  BIT(1),      /* TYPE 1 SVC                 */
               4 SCESRB   BIT(1),      /* SRB                        */
               4 SCETCB   BIT(1),      /* TCB                        */
             3 SCEMODE2 BIT(8),        /* SECOND EIGHT               */
               4 SCERECV  BIT(1),      /* RECOVERY IN CONTROL        */
               4 SCEPP    BIT(1),      /* PROBLEM PROGRAM STATE      */
               4 SCESUPER BIT(1),      /* SUPERVISOR STATE           */
               4 SCESKEY  BIT(1),      /* SYSTEM KEY                 */
               4 SCEPKEY  BIT(1),      /* PROBLEM PROGRAM KEY        */
               4 SCEGLOC  BIT(1),      /* ANY GLOBAL LOCK            */
               4 SCELOCK  BIT(1),      /* ANY LOCK                   */
               4 *        BIT(1),      /* RESERVED                   */
           2 *          CHAR(3),       /* RESERVED                   */
           2 SCEUCMP    CHAR(1),       /* CONSOLE ID OF ISSUER       */
           2 SCEID      CHAR(4),       /* TRAP IDENTIFIER            */
           2 SCESCVA    PTR(31);       /* PTR TO THE SCVA            */
./ ADD NAME=IHASCRA
* % GOTO PLSSCRA1 ;  /*
         MACRO
         IHASCRA
**/
* %PLSSCRA1:;
*/********************************************************************/
*/*  MACMEAN SCRA MEANS SUPERVISOR CONTROL RECOVERY AREA             */
*/*  MACCOMP Y-2 SCIC5/PZD81                                         */
*/*  MACSTAT Y-2 731161                                              */
*/* MAPPING OF 6 WORD FRR PARAMETER AREA - POINTER IN SDWAPARM       */
*/* BAL- DSECT ALWAYS PRODUCED - USING ON SCRA                       */
*/* PLS- SCRA BASED ON SDWAPARM                                      */
*/********************************************************************/
* % GOTO PLSSCRA2; /*
SCRA     DSECT
         DS    0D            SUPERVISOR CONTROL RECOVERY AREA
SCRASCRA DS    CL4           ACRONYM FOR SCRA
SCRARTNP DS    A             RTM RETURN POINT ADDRESS
SCRACSTK DS    A             CURRENT STACK POINTER
SCRAFLGS DS    0BL32         RECURSION AND ACTION FLAGS
SCRARECF DS    0BL8          RECURSION FLAGS
SCRAREC1 DS    B             FIRST LEVEL RECURSION
SCRAREC2 DS    B             SECOND LEVEL RECURSION
SCRARS02 DS    BL6           RESERVED
SCRAACTF DS    0BL8          ACTION FLAGS
SCRAMTRM DS    B             MEMTERM INDICATOR
SCRAABTM DS    B             ABTERM INDICATOR
SCRARS03 DS    BL6           RESERVED
SCRARS04 DS    BL16          RESERVED
SCRAWORK DS    F             RECOVERY WORK AREA PTR
SCRASUPR DS    F             SUPERVISOR CONTROL WORD FROM PSA
SCRAEND  DS    0D            END OF SCRA
         MEND
**/
*% PLSSCRA2: ;
*  DCL 1 SCRA BASED (SDWAPARM)    /* SUP CNTRL RECOVERY AREA         */
*        BDY(DWORD),
*        2 SCRASCRA CHAR(4)       /* ACRONYM FOR SCRA                */
*            BDY(WORD),
*        2 SCRARTNP PTR(31),      /* RTM RETURN POINT ADDRESS        */
*        2 SCRACSTK PTR(31),      /* CURRENT STACK POINTER           */
*        2 SCRAFLGS BIT(32),      /* RECURSION AND ACTION FLAGS      */
*          3 SCRARECF BIT(8),     /* RECURSION FLAGS                 */
*            4 SCRAREC1 BIT(1),   /* FIRST LEVEL RECURSION           */
*            4 SCRAREC2 BIT(1),   /* SECOND LEVEL RECURSION          */
*            4 SCRARS02 BIT(6),   /* RESERVED                        */
*          3 SCRAACTF BIT(8),     /* ACTION FLAGS                    */
*            4 SCRAMTRM BIT(1),   /* MEMTERM INIDCATOR               */
*            4 SCRAABTM BIT(1),   /* ABTERM INDICATOR                */
*            4 SCRARS03 BIT(6),   /* RESERVED                        */
*          3 SCRARS04 BIT(16),    /* RESERVED                        */
*        2 SCRAWORK FIXED(31),    /* RECOVERY WORK AREA PTR          */
*        2 SCRASUPR FIXED(31),    /* SUPERVISOR CONTROL WORD FROM PSA*/
*        2 SCRAEND CHAR(0)        /* END OF SCRA                     */
*            BDY(DWORD);
./ ADD NAME=IHASCVA
*/*******************************************************************/
*/*   IHASCVA                                                       */
*/*           MACCOMP - SC1CM                                       */
*/*           MACSTAT - @G17SP2F                                    */
*/*           MACMEAN - SCVA MEANS SLIP CONTROL ELEMENT VARIABLE    */
*/*                     AREA                                        */
*/*                                                                 */
*/*       IHASCVA MAPS THE SCVA. THIS CONTROL BLOCK IS AN EXTENSION */
*/*       OF THE SLIP CONTROL ELEMENT (IHASCE) AND ALONG WITH THE   */
*/*       SCE INTERNALLY REPRESENT A SLIP OPERATOR COMMAND. THE SCVA*/
*/*       IS A VARIABLE AREA AND IT'S SIZE DEPENDS ON HOW MANY OF   */
*/*       OF THE FOLLOWING KEYWORDS ARE SPECIFIED:  COMP, ASID,     */
*/*       JOBNAME, LPAMOD, AND ADDRESS.  IF NONE ARE SPECIFIED, NO  */
*/*       SCVA IS OBTAINED.  THE SCE                                */
*/*       POINTS TO THIS CONTROL BLOCK. STORAGE IS FROM FIXED       */
*/*       SQA (SP245). IEECB905 GETS, BUILDS, AND FREES THE SCVA.   */
*/*******************************************************************/
     DCL 1 SCVA     BASED(SCESCVA),
           2 SCVAHDR,                  /* NON VARIABLE PORTION       */
             3 SCVACBID   CHAR(4),     /* CONTROL BLOCK ID = SCVA    */
             3 SCVALN   PTR(15),       /* LENGTH OF SCVA             */
             3 *        CHAR(2),       /* RESERVED                   */
           2 SCVADATA   CHAR(*);       /* VARIABLE AREA              */
     DCL 1 SCVACOMP BASED(SCVAPTR),    /* SCVA COMP ENTRY MAPPING    */
           2 SCVCCID    PTR(8),        /* ENTRY ID                   */
           2 SCVCCB     BIT(8),        /* FLAGS                      */
             3 SCVCCU   BIT(1),        /* ON=USER CODE, OFF=SYSTEM   */
             3 *        BIT(7),        /* RESERVED                   */
           2 SCVCCM  CHAR(3) BDY(BYTE),/* MASK FOR SIGNIFICANT DIGITS*/
           2 SCVCCD  CHAR(3) BDY(BYTE);/* COMPLETION CODE            */
     DCL 1 SCVAASID BASED(SCVAPTR),    /* SCVA ASID ENTRY MAPPING    */
           2 SCVADHDR,                 /* NON VARIABLE PORTION       */
            3 SCVADID    PTR(8),       /* ENTRY ID                   */
            3 SCVADNO    PTR(8),       /* NUMBER OF ASID'S           */
           2 SCVADD(*) CHAR(2) BDY(BYTE); /* ASIDS                   */
     DCL 1 SCVAJOBN BASED(SCVAPTR),    /* SCVAJOBNAME-JSPGM ENTRY    */
           2 SCVJNID    PTR(8),        /* ENTRY ID                   */
           2 SCVJND  CHAR(8) BDY(BYTE);/* JOBNAME OR JSPGM           */
     DCL 1 SCVAMOD  BASED(SCVAPTR),    /* SCVAPVTMOD-LPAMOD ENTRY    */
           2 SCVMDID    PTR(8),        /* ENTRY ID                   */
           2 SCVMDNM CHAR(8) BDY(BYTE),/* MODULE NAME                */
           2 SCVMDA1 PTR(31) BDY(BYTE),/* FIRST ADDRESS              */
           2 SCVMDA2 PTR(31) BDY(BYTE);/* SECOND ADDRESS             */
     DCL 1 SCVAADDR BASED(SCVAPTR),    /* SCVA ADDRESS ENTRY MAPPING */
           2 SCVARID    PTR(8),        /* ENTRY ID                   */
           2 SCVARD1 PTR(31) BDY(BYTE),/* FIRST ADDRESS              */
           2 SCVARD2 PTR(31) BDY(BYTE);/* SECOND ADDRESS             */
     DCL   SCVIDLST     PTR(8) CONSTANT(1), /* LAST ENTRY ID         */
           SCVIDCC      PTR(8) CONSTANT(2), /* COMP ENTRY ID         */
           SCVIDAS      PTR(8) CONSTANT(3), /* ASID ENTRY ID         */
           SCVIDJN      PTR(8) CONSTANT(4), /* JOBNAME ENTRY ID      */
           SCVIDJS      PTR(8) CONSTANT(5), /* JSPGM ENTRY ID        */
           SCVIDPVT     PTR(8) CONSTANT(6), /* PVTMOD ENTRY ID       */
           SCVIDLPA     PTR(8) CONSTANT(7), /* LPAMOD ENTRY ID       */
           SCVIDAD      PTR(8) CONSTANT(8); /* ADDRESS ENTRY ID      */
./ ADD NAME=IHASHDR
*/*******************************************************************/
*/*  IHASHDR                                                        */
*/*          MACCOMP - SC1CM                                        */
*/*          MACSTAT - @G17SP2F                                     */
*/*          MACMEAN - SHDR MEANS SLIP HEADER                       */
*/*    THE IHASHDR MAPS THE SLIP HEADER. THIS CONTROL BLOCK IS      */
*/*  POINTED TO BY THE CVTRTMS FIELD IN THE CVT. THE SHDR POINTS    */
*/*  TO THE FIRST AND LAST SLIP CONTROL ELEMENTS(SCE). STORAGE IS   */
*/*  FROM FIXED SQA (SP245). IEECB905 GETS, BUILDS, AND FREES THE   */
*/*  SHDR.                                                          */
*/*                                                                 */
*/*******************************************************************/
     DCL 1  SHDR        BASED(CVTRTMS) BDY(DWORD),
           2  SHDRCBID   CHAR(4),      /* CONTROL BLOCK ID = SHDR    */
           2  SHDRPFC    PTR(31),      /* IEAVTSLP USE COUNT         */
         2  SHDRCTFW  CHAR(8) BDY(WORD),/*TO DELETE ENTRIES,MUST CDS */
             3 SHDRCTR   PTR(31),      /* PROCESSOR SERIALIZATION CTR*/
             3 SHDRFWD   PTR(31),      /* FORWARD PTR TO SCE CHAIN   */
           2  SHDRBKWD   PTR(31),      /* BACKWARD PTR TO SCE CHAIN  */
           2  SHDRFLGS   BIT(8),       /* FLAGS                      */
             3 SHDRFRR    BIT(1),      /* IEAVTSLP FRR ENTERED       */
             3  SHDRDELP  BIT(1),      /*DELETE IS PENDNG ON PREV SCE*/
             3  *         BIT(6),      /* RESERVED                   */
           2  SHDRSEQ    BIT(8),       /* SEQUENCE BYTE              */
           2  SHDRIDCT   PTR(15),      /* CTR FOR GENERATING SCE ID  */
           2  SHDRPROC   PTR(31);      /* SLIP PROCESSOR IEAVTSLP    */
./ ADD NAME=IHASLFP
*%       GOTO  SLFPPLS1;            /*
         MACRO
         IHASLFP ,                                                   */
*%SLFPPLS1:;
*/********************************************************************/
*/*                                                                  */
*/*  IHASLFP - MAPS THE FRR PARAMETER AREA USED BY THE               */
*/*            SLIP ACTION PROCESSOR.                                */
*/*                                                                  */
*/*    COPYRIGHT= 5740-XYN COPYRIGHT IBM CORP 1980,                  */
*/*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        */
*/*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER        */
*/*               G120-2083.                                         */
*/*                                                                  */
*/*    MACMEAN - SLFP MEANS SLIP FRR PARAMETER AREA                  */
*/*    MACCOMP - SC1CM                                               */
*/*    MACSTAT - OS/VS2 JBB1226                              @G385P1F*/
*/*                                                                  */
*/*  A 000000-999999                                         @ZA40869*/
*/********************************************************************/
*%       GOTO  SLFPPLS2;            /*
         SPACE 1
SLFP     DSECT
SLFPFLGS DS    0BL5                ERROR RECOVERY AUDIT TRAIL FLAGS
SLFPFLG1 DS    BL1
SLFPRTS  EQU   X'80'               RTS ENVIRONMENT
SLFPRT2  EQU   X'40'               RT2 ENVIRONMENT
SLFPVAL  EQU   X'20'               SLIP FRR PARAMETER AREA COMPLETE
SLFPRTM  EQU   X'10'               RTM ENVIRONMENT
SLFPSM   EQU   X'08'               SYSTEM MASK MUST BE RESTORED
SLFPRST  EQU   X'04'               RESTART LOCKWORD MUST BE RELEASED
*        EQU   X'02'               RESERVED
SLFPFRR  EQU   X'01'               THE FRR IS IN CONTROL
SLFPFLG2 DS    BL1
SLFPEOL  EQU   X'80'               EOL ROUTINE IS IN CONTROL
SLFPCOMP EQU   X'40'               COMP ROUTINE IS IN CONTROL
SLFPASID EQU   X'20'               ASID ROUTINE IS IN CONTROL
SLFPJ    EQU   X'10'               JOBNAME ROUTINE IS IN CONTROL
SLFPJS   EQU   X'08'               JSPGM ROUTINE IS IN CONTROL
SLFPP    EQU   X'04'               PVTMOD ROUTINE IS IN CONTROL
SLFPL    EQU   X'02'               LPAMOD ROUTINE IS IN CONTROL
SLFPAD   EQU   X'01'               ADDRESS ROUTINE IS IN CONTROL
SLFPFLG3 DS    BL1
SLFPMODE EQU   X'80'               MODE ROUTINE IS IN CONTROL
SLFPER   EQU   X'40'               ERRTYP ROUTINE IS IN CONTROL
SLFPMTCH EQU   X'20'               MATCHING SLIP TRAP HAS BEEN FOUND
SLFPLOCK EQU   X'10'               LOCAL LOCK IS HELD
SLFPPER  EQU   X'08'               PER ENVIRONMENT
SLFPCHDU EQU   X'04'               CHNGDUMP ROUTINE IS IN CONTROL
SLFPRA   EQU   X'02'               RANGE ROUTINE IS IN CONTROL
SLFPDU   EQU   X'01'               DUMPIT ROUTINE IS IN CONTROL
SLFPFLG4 DS    BL1
SLFPDATA EQU   X'80'               DATA ROUTINE IS IN CONTROL
SLFPDETR EQU   X'40'               DETRMODE ROUTINE IS IN CONTROL
SLFPADR  EQU   X'20'               IEAVTADR IS IN CONTROL
SLFPINST EQU   X'10'               INSTRUCTION CAUSING PER INTERRUPT   X
                                   IS BEING EXAMINED
SLFPUDA  EQU   X'08'               USER DATA IS BEING RETRIEVED
SLFPFPR  EQU   X'04'               FLOATING POINT REGISTER MUST BE     X
                                   RESTORED
SLFPSTK  EQU   X'02'               FOR RTS ENVIRONMENT, INTERRUPTED    X
                                   STACK POINTER WAS SAVED IN PSARSVT
SLFPSDLK EQU   X'01'               FOR DUMPIT SUBROUTINE, INDICATES    X
                                   THE SDUMP 4K BUFFER HAS BEEN LOCKED
SLFPFLG5 DS    BL1
SLFPMAIN EQU   B'11000000'         CURRENT MAINLINE SLIP MODULE IN     X
                                   CONTROL
SLFPTSLP EQU   B'00000000'         IEAVTSLP IS IN CONTROL
SLFPTSLB EQU   B'01000000'         IEAVTSLB IS IN CONTROL
SLFPTSLE EQU   B'10000000'         IEAVTSLE IS IN CONTROL
         SPACE 1
SLFPMRTN EQU   B'00110000'         CURRENT MATCH ROUTINE MODULE IN     X
                                   CONTROL
SLFPMRNL EQU   B'00000000'         NO MATCH ROUTINE IS IN CONTROL
SLFPTSL1 EQU   B'00010000'         IEAVTSL1 IS IN CONTROL
SLFPTSL2 EQU   B'00100000'         IEAVTSL2 IS IN CONTROL
         SPACE 1
SLFPSRTN EQU   B'00001000'         IEAVTSLS IS IN CONTROL
         SPACE 1
SLFPFLG6 DS    BL1                                             @G385P1F
SLFPSAEX EQU   B'10000000'         INSTRUCTION CAUSING PER INTERRUPT   X
                                   IS BEING EXAMINED IN ASIDSA         X
                                   SUBROUTINE                  @G385P1F
SLFPASIA EQU   B'01000000'        ASIDSA ROUTINE IS IN CONTROL @G385P1F
SLFPCMTS EQU   B'00100000'        CMSET SSARTO ISSUED IN IEAVTSLS      X
                                                               @G385P1F
SLFPCMT2 EQU   B'00010000'        CMSET SSARTO ISSUED IN IEAVTSL2      X
                                                               @G385P1F
         SPACE 1                                               @G385P1F
         DS    1CL2                RESERVED                    @G385P1F
SLFPISTK DS    1F                  ADDRESS OF INTERRUPTED STACK THAT   X
                                   WAS CURRENT ON ENTRY TO IEAVTSLP
SLFPLSTW DS    1F                  WORK AREA ADDR (PASSED IN SLPLLSTW)
SLFPSCE  DS    1F                  POINTER TO FIRST SCE THAT DOES NOT  X
                                   NEED THE USE COUNT DECREMENTED
SLFPSA   DS    1F                  POINTER TO SAVE AREA PASSED TO      X
                                   IEAVTSLP
         MEND  ,                                                     */
*%SLFPPLS2:;
*
*   DECLARE
*     1 SLFP BASED,
*      2 SLFPFLGS,                  /* ERROR RECOVERY AUDIT TRAIL
*                                      FLAGS                         */
*       3 SLFPFLG1 BIT(8),
*        4 SLFPRTS BIT(1),          /* RTS ENVIRONMENT               */
*        4 SLFPRT2 BIT(1),          /* RT2 ENVIRONMENT               */
*        4 SLFPVAL BIT(1),          /* SLIP FRR PARAMETER AREA
*                                      COMPLETE                      */
*        4 SLFPRTM BIT(1),          /* RTM ENVIRONMENT               */
*        4 SLFPSM BIT(1),           /* SYSTEM MASK MUST BE RESTORED  */
*        4 SLFPRST BIT(1),          /* RESTART LOCKWORD MUST BE
*                                      RELEASED                      */
*        4 * BIT(1),                /* RESERVED                      */
*        4 SLFPFRR BIT(1),          /* THE FRR IS IN CONTROL         */
*       3 SLFPFLG2 BIT(8),
*        4 SLFPEOL BIT(1),          /* EOL ROUTINE IS IN CONTROL     */
*        4 SLFPCOMP BIT(1),         /* COMP ROUTINE IS IN CONTROL    */
*        4 SLFPASID BIT(1),         /* ASID ROUTINE IS IN CONTROL    */
*        4 SLFPJ BIT(1),            /* JOBNAME ROUTINE IS IN CONTROL */
*        4 SLFPJS BIT(1),           /* JSPGM ROUTINE IS IN CONTROL   */
*        4 SLFPP BIT(1),            /* PVTMOD ROUTINE IS IN CONTROL  */
*        4 SLFPL BIT(1),            /* LPAMOD ROUTINE IS IN CONTROL  */
*        4 SLFPAD BIT(1),           /* ADDRESS ROUTINE IS IN CONTROL */
*       3 SLFPFLG3 BIT(8),
*        4 SLFPMODE BIT(1),         /* MODE ROUTINE IS IN CONTROL    */
*        4 SLFPER BIT(1),           /* ERRTYP ROUTINE IS IN CONTROL  */
*        4 SLFPMTCH BIT(1),         /* MATCHING SLIP TRAP HAS BEEN
*                                      FOUND                         */
*        4 SLFPLOCK BIT(1),         /* LOCAL LOCK IS HELD            */
*        4 SLFPPER BIT(1),          /* PER ENVIRONMENT               */
*        4 SLFPCHDU BIT(1),         /* CHNGDUMP ROUTINE IS IN CONTROL*/
*        4 SLFPRA BIT(1),           /* RANGE ROUTINE IS IN CONTROL   */
*        4 SLFPDU BIT(1),           /* DUMPIT ROUTINE IS IN CONTROL  */
*       3 SLFPFLG4 BIT(8),
*        4 SLFPDATA BIT(1),         /* DATA ROUTINE IS IN CONTROL    */
*        4 SLFPDETR BIT(1),         /* DETRMODE ROUTINE IS IN CONTROL*/
*        4 SLFPADR BIT(1),          /* IEAVTADR IS IN CONTROL        */
*        4 SLFPINST BIT(1),         /* INSTRUCTION CAUSING PER
*                                      INTERRUPT IS BEING EXAMINED   */
*        4 SLFPUDA BIT(1),          /* USER DATA IS BEING RETRIEVED  */
*        4 SLFPFPR BIT(1),          /* FLOATING POINT REGISTER MUST
*                                      BE RESTORED                   */
*        4 SLFPSTK BIT(1),          /* FOR RTS ENVIRONMENT,
*                                      INTERRUPTED STACK POINTER WAS
*                                      SAVED IN PSARSVT              */
*        4 SLFPSDLK BIT(1),         /* FOR DUMPIT SUBROUTINE,
*                                      INDICATES THE SDUMP 4K BUFFER
*                                      HAS BEEN LOCKED               */
*       3 SLFPFLG5 BIT(8),
*        4 SLFPMAIN BIT(2),         /* CURRENT MAINLINE SLIP MODULE
*                                      IN CONTROL                    */
*        4 SLFPMRTN BIT(2),         /* CURRENT MATCH ROUTINE MODULE
*                                      IN CONTROL                    */
*        4 SLFPSRTN BIT(1),         /* IEAVTSLS IS IN CONTROL        */
*        4 * BIT(3),                /* RESERVED              @G385P1F*/
*       3 SLFPFLG6 BIT(8),          /*                       @G385P1F*/
*        4 SLFPSAEX BIT(1),         /*INSTRUCTION CAUSING PER
*                                     INTERRUPT IS BEING EXAMINED IN
*                                     ASIDSA SUBROUTINE      @G385P1F*/
*        4 SLFPASIA BIT(1),         /*ASIDSA ROUTINE IS IN CONTROL
*                                                            @G385P1F*/
*        4 SLFPCMTS BIT(1),         /*CMSET SSARTO ISSUED IN
*                                     IEAVTSLS               @G385P1F*/
*        4 SLFPCMT2 BIT(1),         /*CMSET SSARTO ISSUED IN
*                                     IEAVTSL2               @G385P1F*/
*        4 * BIT(4),                /* RESERVED              @G385P1F*/
*      2 * CHAR(2),                 /* RESERVED              @G385P1F*/
*      2 SLFPISTK PTR(31),          /* ADDRESS OF INTERRUPTED STACK
*                                      THAT WAS CURRENT ON ENTRY TO
*                                      IEAVTSLP                      */
*      2 SLFPLSTW PTR(31),          /* WORK AREA ADDR (PASSED IN
*                                      SLPLLSTW)                     */
*      2 SLFPSCE PTR(31),           /* POINTER TO FIRST SCE THAT DOES
*                                      NOT NEED THE USE COUNT
*                                      DECREMENTED                   */
*      2 SLFPSA PTR(31);            /* POINTER TO SAVE AREA PASSED TO
*                                      IEAVTSLP                      */
*
*   DECLARE                         /* SLFPMAIN DEFINITIONS          */
*     SLFPTSLP BIT(2) CONSTANT('00'B),/* IEAVTSLP IS IN CONTROL      */
*     SLFPTSLB BIT(2) CONSTANT('01'B),/* IEAVTSLB IS IN CONTROL      */
*     SLFPTSLE BIT(2) CONSTANT('10'B);/* IEAVTSLE IS IN CONTROL      */
*
*   DECLARE                         /* SLFPMRTN DEFINITIONS          */
*     SLFPMRNL BIT(2) CONSTANT('00'B),/* NO MATCH ROUTINE MODULE IS
*                                      IN CONTROL                    */
*     SLFPTSL1 BIT(2) CONSTANT('01'B),/* IEAVTSL1 IS IN CONTROL      */
*     SLFPTSL2 BIT(2) CONSTANT('10'B);/* IEAVTSL2 IS IN CONTROL      */
./ ADD NAME=IHASLPL
*
*         %GO TO SLPLL1; /*
          MACRO
          IHASLPL &DSECT=YES,&SLPLWAD=NO                     @ZA40869*/
*%SLPLL1 : ;
*
*/********************************************************************/
*/*   IHASLPL                                                        */
*/*                                                                  */
*/*          COPYRIGHT= 5740-XYN COPYRIGHT IBM CORP 1980,            */
*/*                     LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,  */
*/*                     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER  */
*/*                     G120-2083.                                   */
*/*                                                                  */
*/*          MACCOMP - SC1CM                                         */
*/*          MACSTAT - OS/VS2 JBB1226                        @G382P1F*/
*/*          MACMEAN - SLPL MEANS SLIP PARAMETER LIST                */
*/*      THE SLPL MAPS THE SLIP PARAMETER LIST USED WHEN A MODULE    */
*/*    CALLS IEAVTSLP.  ON ENTRY TO IEAVTSLP, THIS PARAMETER LIST    */
*/*    IS POINTED TO BY REGISTER ONE.                                */
*/*                                                          @ZA40869*/
*/*    THE DETAILED MAPPING OF THE GENERAL WORK AREA IS      @ZA40869*/
*/*    PRODUCED ONLY IF EXPLICITLY REQUESTED BY SPECIFYING   @ZA40869*/
*/*    'SLPLWAD=YES' ON THE ASSEMBLER MACRO INVOCATION OR    @ZA40869*/
*/*    BY SETTING THE PL/S PREPROCESSOR VARIABLE 'SLPLWAD'   @ZA40869*/
*/*    TO 'YES' BEFORE INCLUDING THIS MAPPING MACRO.         @ZA40869*/
*/*                                                                  */
*/********************************************************************/
*%GO TO SLPLL2; /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').SLPL10
SLPL     DSECT
         AGO   .SLPL20
.SLPL10  ANOP
         DS    0F
SLPL     EQU   *
.SLPL20  ANOP
SLPLENV  DS    B                  ENVIRONMENT CALLING IEAVTSLP
SLPLERTS EQU   X'01'              IEAVTRTS ENVIRONMENT
SLPLERT2 EQU   X'02'              IEAVTRT2 ENVIRONMENT
SLPLERTM EQU   X'03'              IEAVTRTM ENVIRONMENT (MEMTERM)
SLPLEPC  EQU   X'04'              IEAVECP ENVIRONMENT (PER)
         DS    CL3                RESERVED
SLPLLSTW DS    A                  WORK AREA TO COPY LIST FORM OF MACROS
SLPLRTSF DS    0A                 RTS ENV - RTS FRR STACK ADDRESS
SLPLRT2W DS    0A                 RT2 ENV - RTM2WA ADDRESS
SLPLASCB DS    A                  RTM ENV - ASCB BEING MEMTERMED
SLPLMADR DS    A                  RTM ENV - ADDR WHERE MEMTERM ISSUED
SLPLWA   DS    CL56               GENERAL WORK AREA FOR IEAVTSLP
SLPLCRGS DS    0CL8               RTM ENV ONLY - CR3 & CR4 AT THE TIME X
                                  MEMTERM WAS ISSUED           @G382P1F
SLPLCR3  DS    0CL4               CONTROL REGISTER 3           @G382P1F
SLPLKM   DS    CL2                KEY MASK                     @G382P1F
SLPLSASD DS    CL2                SASID                        @G382P1F
SLPLCR4  DS    0CL4               CONTROL REGISTER 4           @G382P1F
SLPLAX   DS    CL2                AUTHORIZATION INDEX          @G382P1F
SLPLPASD DS    CL2                PASID                        @G382P1F
SLPLFLGS DS    B                  FLAGS                        @G385P1F
SLPLSBIT EQU   X'80'              ADDRESS SPACE CONTROL BIT    @G385P1F
         AIF   ('&SLPLWAD' NE 'YES').SLPLNWA                   @ZA40869
         ORG   SLPLWA                                          @ZA40869
SLPLCW   DS    0BL2               SYSTEM MODE AT ERROR TIME    @ZA40869
SLPLCW1  DS    B                  MAPS THE SAME AS THE RTM MODE BYTE   X
                                                               @ZA40869
SLPLSUPR EQU   X'80'              SUPERVISOR CONTROL MODE      @ZA40869
SLPLDIS  EQU   X'40'              PHYSICALLY DISABLED MODE     @ZA40869
SLPLGSPN EQU   X'20'              GLOBAL SPIN LOCK MODE        @ZA40869
SLPLGSUS EQU   X'10'              GLOBAL SUSPEND LOCK MODE     @ZA40869
SLPLLOC  EQU   X'08'              LOCALLY LOCKED MODE          @ZA40869
SLPLTYP1 EQU   X'04'              TYPE 1 SVC MODE              @ZA40869
SLPLSRB  EQU   X'02'              SRB MODE                     @ZA40869
SLPLTCB  EQU   X'01'              TASK MODE                    @ZA40869
SLPLCW2  DS    B                                               @ZA40869
SLPLRECV EQU   X'80'              RECOVERY ERROR               @ZA40869
SLPLPS   EQU   X'40'              PP STATE                     @ZA40869
SLPLSS   EQU   X'20'              SUPER STATE                  @ZA40869
SLPLSK   EQU   X'10'              SUPER KEY                    @ZA40869
SLPLPK   EQU   X'08'              PP KEY                       @ZA40869
SLPLGLOC EQU   X'04'              ANY GLOBAL LOCK              @ZA40869
SLPLLOCK EQU   X'02'              ANY LOCK                     @ZA40869
SLPLHOME EQU   X'01'              INSTRUCTION EXECUTED IN HOME         X
                                  MODE                         @G382P1F
SLPLDBUG DS    0BL2               DEBUG FLAGS FOR DEBUG TRACE RECORD-- X
                                  ON=TEST FAILED               @ZA40869
SLPLDB1  DS    B                                               @ZA40869
SLPLDBAD EQU   X'80'              ADDRESS                      @ZA40869
SLPLDBAS EQU   X'40'              ASID                         @ZA40869
SLPLDBC  EQU   X'20'              COMP                         @ZA40869
SLPLDBDA EQU   X'10'              DATA                         @ZA40869
SLPLDBER EQU   X'08'              ERRTYPE                      @ZA40869
SLPLDBJ  EQU   X'04'              JOBNAME                      @ZA40869
SLPLDBJS EQU   X'02'              JSPGM                        @ZA40869
SLPLDBL  EQU   X'01'              LPAMOD                       @ZA40869
SLPLDB2  DS    B                                               @ZA40869
SLPLDBM  EQU   X'80'              MODE                         @ZA40869
SLPLDBP  EQU   X'40'              PVTMOD                       @ZA40869
SLPLDBRA EQU   X'20'              RANGE                        @ZA40869
SLPLDBSA EQU   X'10'              ASIDSA                       @G382P1F
SLPLHIGH DS    1A                 TO COMPARE A RANGE...        @ZA40869
SLPLLOW  DS    1A                 ...OF ADDRESSES TO...        @ZA40869
SLPLERR  DS    1A                 ...AN ERROR LOCATION         @ZA40869
SLPLLKWD DS    0F                 FOR BUILDING THE RESTART LOCKWORD    X
                                                               @ZA40869
SLPLLKCP DS    CL2                                             @ZA40869
SLPLLKID DS    CL2                                             @ZA40869
SLPLCCWA DS    0CL12              FOR DECODING COMPLETION CODE @ZA40869
SLPLCMPW DS    0F                 INPUT TO CVD INSTRUCTION     @ZA40869
         DS    C                                               @ZA40869
SLPLCMPC DS    CL3                                             @ZA40869
SLPLCVDW DS    0CL8                                            @ZA40869
         DS    CL5                                             @ZA40869
SLPLCVDC DS    CL3                                             @ZA40869
         DS    1F                 RESERVED                     @ZA40869
SLPLFLG0 DS    B                                               @G385P1F
SLPLASUN DS    X'80'              ASID IS UNAVAILABLE          @G385P1F
SLPLRBUN DS    X'40'              RB LEVEL SPECIFIED IS UNAVAILABLE    X
                                                               @G385P1F
SLPLNLOC DS    X'20'              LLOC NOT CONVERTED           @G385P1F
SLPLNDMP DS    X'10'              NO DUMP CAN BE TAKEN         @G385P1F
SLPLTDMP DS    X'08'              ON, DUMP CAN BE TAKEN        @G38BP1F
SLPLFLG1 DS    B                                               @ZA40869
SLPLDBCK EQU   X'80'              ENTRY TOD VALUE IS INVALID   @ZA40869
SLPLPERS EQU   X'40'              STOP INCREMENTING SCE USE COUNTS AT  X
                                  THE NON-IGNORE PER TRAP      @ZA40869
SLPLPERT EQU   X'20'              STOP TESTING TRAPS (ENABLED NON-     X
                                  IGNORE TRAP WAS TESTED)      @ZA40869
SLPLMLDS EQU   X'10'              A TRAP HAS BEEN DISABLED DUE TO      X
                                  MATCHLIM                     @ZA40869
SLPLCVT1 EQU   X'08'              FIRST ADDRESS OF DIRECT/INDIRECT ADDRX
                                  PAIR IS BEING CONVERTED      @ZA40869
SLPLERR1 EQU   X'04'              ERROR CONVERTING FIRST ADDRESS OF    X
                                  PAIR                         @ZA40869
SLPLSDIP EQU   X'02'              SDUMP IN PROGRESS WHEN SLIP HAD TO   X
                                  MODIFY FIELDS USED BY SDUMP  @ZA40869
SLPLPLDS EQU   X'01'              A TRAP HAS BEEN DISABLED DUE TO      X
                                  PERCENT LIMIT PROCESSING     @ZA40869
SLPL412N DS    0H                 WORK AREA FOR 412 MESSAGE COUNTER    X
                                                               @ZA40869
         DS    CL1                                             @ZA40869
SLPLXXXN DS    FL1                WORK AREA FOR SCEM992 COUNTER        X
                                                               @ZA40869
SLPLENDA DS    1A                 PTR TO END OF LIST OF ADDRESSES TO   X
                                  BE CONVERTED OR END OF SCVA  @ZA40869
SLPLSCVA DS    1A                 SCVAPTR SAVE AREA            @ZA40869
SLPLR141 DS    1F                 GPR 14 SAVE AREA             @ZA40869
SLPLR142 DS    1F                 GPR 14 SAVE AREA             @ZA40869
         SPACE 1                                               @ZA40869
* REDEFINITION OF SLPLHIGH, LOW, ERR, LKWD, AND CMPW FOR       @G38EP2F
* DEBUGGING INFORMATION WHEN EOL PUTS SYSTEM IN A WAIT STATE   @ZA40869
         ORG   SLPLHIGH                                        @ZA40869
SLPLWWRK DS    0CL20                                           @G38EP2F
SLPLWTYP DS    C                  ENTRY TYPE                   @ZA40869
SLPLWCPU DS    CL2                LOGICAL CPU                  @ZA40869
SLPLWSM  DS    C                  SAVE AREA FOR SYSTEM MASK    @ZA40869
SLPLWREG DS    1A                 PTR TO REGISTERS             @ZA40869
SLPLWPSW DS    1A                 PTR TO PSW                   @ZA40869
SLPLWVAR DS    1A                 RTM ENTRY - PTR TO ASCB              X
                                  BEING MEMTERMED              @ZA40869
*                                 RT2 ENTRY - PTR TO RTM2WA    @ZA40869
*                                 RTS ENTRY - PTR TO SDWA      @ZA40869
*                                 PER ENTRY - PTR TO PER CODE  @ZA40869
SLPLWCRS DS    1A                 PTR TO CONTROL REGS 3 & 4    @G38EP2F
         ORG   SLPLWA+L'SLPLWA                                 @ZA40869
.SLPLNWA ANOP                                                  @ZA40869
         MEND  ,  */
*%SLPLL2 : ;
*
*   DCL 1  SLPL    BASED,
*         2  SLPLENV  BIT(8),     /* ENVIRONMENT CALLING IEAVTSLP    */
*         2  *        CHAR(3),    /* RESERVED                        */
*         2  SLPLLSTW PTR(31),    /* WA TO COPY LIST FORM OF MACROS  */
*         2  SLPLRTSF PTR(31),    /* RTS ENV- RTS FRR STACK ADDRESS  */
*          3  SLPLRT2W PTR(31),   /* RT2 ENV- RTM2WA ADDRESS         */
*           4  SLPLASCB PTR(31),  /* RTM ENV- ASCB BEING MEMTERMED   */
*         2  SLPLMADR PTR(31),    /* RTM ENV-ADR WHERE MEMTERM ISSUED*/
*         2  SLPLWA   CHAR(56),   /* GENERAL WORK AREA FOR IEAVTSLP
*                                                            @G385P1F*/
*         2  SLPLXMEM CHAR(0);    /*                         @G385P1F*/
*   DCL 1 * DEFINED(SLPLXMEM),    /* RTM ENV ONLY            @G385P1F*/
*         2  SLPLCRGS CHAR(9),    /* CR3 & CR4 AT THE
*                                    TIME MEMTERM WAS ISSUED @G382P1F*/
*          3  SLPLCR3 CHAR(4),    /* CONTROL REGISTER 3      @G382P1F*/
*           4  SLPLKM   CHAR(2),  /* KEY MASK                @G382P1F*/
*           4  SLPLSASD CHAR(2),  /* SASID                   @G382P1F*/
*          3  SLPLCR4 CHAR(4),    /* CONTROL REGISTER 4      @G382P1F*/
*           4  SLPLAX   CHAR(2),  /* AUTHORIZATION INDEX     @G382P1F*/
*           4  SLPLPASD CHAR(2),  /* PASID                   @G382P1F*/
*          3  SLPLFLGS CHAR(1),   /* FLAGS                   @G385P1F*/
*           4  SLPLSBIT BIT(1),   /* ADDRESS SPACE CONTROL BIT
*                                                            @G385P1F*/
*           4  * BIT(7);          /* RESERVED                @G385P1F*/
*%IF SLPLWAD^='YES' %THEN %GOTO SLPLNWA;/*                   @ZA40869*/
*   DCL 1  * DEFINED(SLPLWA),     /*                         @ZA40869*/
*           4 SLPLCW BIT(16),     /* SYSTEM MODE AT ERROR TIME
*                                                            @ZA40869*/
*             6 SLPLCW1 BIT(8),   /* MAPS THE SAME AS THE RTM MODE
*                                    BYTE                    @ZA40869*/
*               8 SLPLSUPR BIT(1),/* SUPERVISOR CONTROL MODE @ZA40869*/
*               8 SLPLDIS BIT(1), /* PHYSICALLY DISABLED MODE
*                                                            @ZA40869*/
*               8 SLPLGSPN BIT(1),/* GLOBAL SPIN LOCK MODE   @ZA40869*/
*               8 SLPLGSUS BIT(1),/* GLOBAL SUSPEND LOCK MODE
*                                                            @ZA40869*/
*               8 SLPLLOC BIT(1), /* LOCALLY LOCKED MODE     @ZA40869*/
*               8 SLPLTYP1 BIT(1),/* TYPE 1 SVC MODE         @ZA40869*/
*               8 SLPLSRB BIT(1), /* SRB MODE                @ZA40869*/
*               8 SLPLTCB BIT(1), /* TASK MODE               @ZA40869*/
*             6 SLPLCW2 BIT(8),   /*                         @ZA40869*/
*               8 SLPLRECV BIT(1),/* RECOVERY ERROR          @ZA40869*/
*               8 SLPLPS BIT(1),  /* PP STATE                @ZA40869*/
*               8 SLPLSS BIT(1),  /* SUPER STATE             @ZA40869*/
*               8 SLPLSK BIT(1),  /* SUPER KEY               @ZA40869*/
*               8 SLPLPK BIT(1),  /* PP KEY                  @ZA40869*/
*               8 SLPLGLOC BIT(1),/* ANY GLOBAL LOCK         @ZA40869*/
*               8 SLPLLOCK BIT(1),/* ANY LOCK                @ZA40869*/
*               8 SLPLHOME BIT(1),/* INSTRUCTION EXECUTED IN
*                                    HOME MODE               @G382P1F*/
*           4 SLPLDBUG BIT(16),   /* DEBUG FLAGS FOR DEBUG TRACE
*                                    RECORD--ON=TEST FAILED  @ZA40869*/
*             6 SLPLDB1 BIT(8),   /*                         @ZA40869*/
*               8 SLPLDBAD BIT(1),/* ADDRESS                 @ZA40869*/
*               8 SLPLDBAS BIT(1),/* ASID                    @ZA40869*/
*               8 SLPLDBC BIT(1), /* COMP                    @ZA40869*/
*               8 SLPLDBDA BIT(1),/* DATA                    @ZA40869*/
*               8 SLPLDBER BIT(1),/* ERRTYPE                 @ZA40869*/
*               8 SLPLDBJ BIT(1), /* JOBNAME                 @ZA40869*/
*               8 SLPLDBJS BIT(1),/* JSPGM                   @ZA40869*/
*               8 SLPLDBL BIT(1), /* LPAMOD                  @ZA40869*/
*             6 SLPLDB2 BIT(8),   /*                         @ZA40869*/
*               8 SLPLDBM BIT(1), /* MODE                    @ZA40869*/
*               8 SLPLDBP BIT(1), /* PVTMOD                  @ZA40869*/
*               8 SLPLDBRA BIT(1),/* RANGE                   @ZA40869*/
*               8 SLPLDBSA BIT(1),/* ASIDSA                  @G382P1F*/
*               8 * BIT(4),       /* RESERVED                @G382P1F*/
*           4 SLPLHIGH PTR(31),   /* TO COMPARE A RANGE...   @ZA40869*/
*           4 SLPLLOW PTR(31),    /* ...OF ADDRESSES TO...   @ZA40869*/
*           4 SLPLERR PTR(31),    /* ...AN ERROR LOCATION    @ZA40869*/
*           4 SLPLLKWD PTR(31),   /* FOR BUILDING THE RESTART
*                                    LOCKWORD                @ZA40869*/
*             6 SLPLLKCP CHAR(2), /*                         @ZA40869*/
*             6 SLPLLKID CHAR(2), /*                         @ZA40869*/
*           4 SLPLCCWA,           /* FOR DECODING COMPLETION CODE
*                                                            @ZA40869*/
*             6 SLPLCMPW PTR(31), /* INPUT TO CVD INSTRUCTION
*                                                            @ZA40869*/
*               8 * CHAR(1),      /*                         @ZA40869*/
*               8 SLPLCMPC CHAR(3),/*                        @ZA40869*/
*             6 SLPLCVDW CHAR(8), /*                         @ZA40869*/
*               8 * CHAR(5),      /*                         @ZA40869*/
*               8 SLPLCVDC CHAR(3),/*                        @ZA40869*/
*           4 * PTR(31),          /* RESERVED                @ZA40869*/
*           4 SLPLFLG0 CHAR(1),   /*                         @G385P1F*/
*             6 SLPLASUN BIT(1),  /* ASID IS UNAVAILABLE     @G385P1F*/
*             6 SLPLRBUN BIT(1),  /* RB LEVEL SPECIFIED IS
*                                    UNAVAILABLE             @G385P1F*/
*             6 SLPLNLOC BIT(1),  /* LLOC NOT CONVERTED      @G385P1F*/
*             6 SLPLNDMP BIT(1),  /* NO DUMP CAN BE TAKEN    @G385P1F*/
*             6 SLPLTDMP BIT(1),  /* ON, DUMP CAN BE TAKEN   @G38BP1F*/
*             6 * BIT(3),         /* RESERVED                @G38BP1F*/
*           4 SLPLFLG1 CHAR(1),   /*                         @ZA40869*/
*             6 SLPLBDCK BIT(1),  /* ENTRY TOD VALUE IS INVALID
*                                                            @ZA40869*/
*             6 SLPLPERS BIT(1),  /* STOP INCREMENTING SCE USE COUNTS
*                                    AT THE NON-IGNORE PER TRAP
*                                                            @ZA40869*/
*             6 SLPLPERT BIT(1),  /* STOP TESTING TRAPS (ENABLED NON-
*                                    IGNORE TRAP WAS TESTED  @ZA40869*/
*             6 SLPLMLDS BIT(1),  /* A TRAP HAS BEEN DISABLED DUE TO
*                                    MATCHLIM                @ZA40869*/
*             6 SLPLCVT1 BIT(1),  /* FIRST ADDRESS OF DIRECT/
*                                    INDIRECT ADDR PAIR IS BEING
*                                    CONVERTED               @ZA40869*/
*             6 SLPLERR1 BIT(1),  /* ERROR CONVERTING FIRST ADDRESS
*                                    OF PAIR                 @ZA40869*/
*             6 SLPLSDIP BIT(1),  /* SDUMP IN PROGRESS WHEN SLIP HAD
*                                    TO MODIFY FIELDS USED BY SDUMP
*                                                            @ZA40869*/
*             6 SLPLPLDS BIT(1),  /* A TRAP HAS BEEN DISABLED DUE TO
*                                    PERCENT LIMIT PROCESSING
*                                                            @ZA40869*/
*           4 SLPL412N FIXED(16), /* WORK AREA FOR 412 MESSAGE
*                                    COUNTER                 @ZA40869*/
*             6 * CHAR(1),        /*                         @ZA40869*/
*             6 SLPLXXXN PTR(8),  /* WORK AREA FOR SCEM992 COUNTER
*                                                            @ZA40869*/
*           4 SLPLENDA PTR(31),   /* PTR TO END OF LIST OF ADDRESSES
*                                    TO BE CONVERTED OR END OF SCVA
*                                                            @ZA40869*/
*           4 SLPLSCVA PTR(31),   /* SCVAPTR SAVE AREA       @ZA40869*/
*           4 SLPLR141 PTR(31),   /* GPR 14 SAVE AREA        @ZA40869*/
*           4 SLPLR142 PTR(31);   /* GPR 14 SAVE AREA        @ZA40869*/
*
*   DCL  1 SLPLWWRK CHAR(20) DEFINED(SLPLHIGH)
*             BDY(WORD),          /* REDEFINITION OF SLPLHIGH, LOW,
*                                    ERR, LKWD, AND CMPW FOR DEBUGGING
*                                    INFORMATION WHEN EOL PUTS SYSTEM
*                                    IN A WAIT STATE         @G38EP2F*/
*           4 SLPLWTYP CHAR(1),   /* ENTRY TYPE              @ZA40869*/
*           4 SLPLWCPU CHAR(2),   /* LOGICAL CPU             @ZA40869*/
*           4 SLPLWSM CHAR(1),    /* SAVE AREA FOR SYSTEM MASK
*                                                            @ZA40869*/
*           4 SLPLWREG PTR(31),   /* PTR TO REGISTERS        @ZA40869*/
*           4 SLPLWPSW PTR(31),   /* PTR TO PSW              @ZA40869*/
*           4 SLPLWVAR PTR(31),   /* RTM ENTRY - PTR TO ASCB BEING
*                                    MEMTERMED               @ZA40869*/
*                                   /* RT2 ENTRY - PTR TO RTM2WA
*                                                            @ZA40869*/
*                                   /* RTS ENTRY - PTR TO SDWA
*                                                            @ZA40869*/
*                                   /* PER ENTRY - PTR TO PER CODE
*                                                            @ZA40869*/
*           4 SLPLWCRS PTR(31);   /* PTR TO CONTROL REGS 3 AND 4
*                                                            @G38EP2F*/
*%SLPLNWA:;    /*                                            @ZA40869*/
*
*   DCL  SLPLERTS PTR(8) CONSTANT(1),  /* IEAVTRTS ENVIRONMENT       */
*        SLPLERT2 PTR(8) CONSTANT(2),  /* IEAVTRT2 ENVIRONMENT       */
*        SLPLERTM PTR(8) CONSTANT(3),  /* IEAVTRTM ENV - MEMTERM     */
*        SLPLEPC  PTR(8) CONSTANT(4);  /* IEAVEPC ENVIRONMENT - PER  */
./ ADD NAME=IHASLWA
*%       GOTO  SLWAPLS1;            /*
         MACRO
         IHASLWA ,                                                   */
*%SLWAPLS1:;
*/********************************************************************/
*/*                                                                  */
*/*  IHASLWA - MAPS THE WORK AREA USED BY THE SLIP                   */
*/*            ACTION PROCESSOR.                                     */
*/*          - POINTED TO BY SLPLLSTW                                */
*/*                                                                  */
*/*    COPYRIGHT= 5740-XYN COPYRIGHT IBM CORP 1980,                  */
*/*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        */
*/*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER        */
*/*               G120-2083.                                         */
*/*                                                                  */
*/*    MACMEAN - SLWA MEANS SLIP WORK AREA                           */
*/*    MACCOMP - SC1CM                                               */
*/*    MACSTAT - OS/VS2 JBB1226                              @G389P2F*/
*/*    MACDATE - 80123                                       @ZMB0347*/
*/*                                                                  */
*/*  A 000000-999999                                         @ZA40869*/
*/********************************************************************/
*%       GOTO  SLWAPLS2;            /*
         SPACE 1
SLWA     DSECT
SLWANORM DS    0CL56               NORMAL WORK AREA PROVIDED BY ALL    X
                                   CALLERS.  NORMALLY USED FOR COPYING X
                                   LIST FORM MACROS.
         DS    CL48
SLWASAV2 DS    1F                  PTR TO REGS FOR SELECTED RBLEVEL
SLWASAVE DS    1F                  PTR TO RB CONTAINING PSW FOR        X
                                   SELECTED RBLEVEL
         SPACE 1
* REDEFINITION OF NORMAL WORK AREA FOR USE AS SDUMP PARAMETER LIST
         ORG   SLWANORM
SLWADMPL DS    CL48                SDUMP PARAMETER LIST (SEE IHASDUMP  X
                                   MAPPING)                    @G385P1F
         SPACE 1
* REDEFINITION OF NORMAL WORK AREA FOR USE BY PVTMOD MATCH ROUTINE
         ORG   SLWANORM
SLWAXCTR DS    1F                  COUNTER FOR EXTENT LIST LOOP SEARCH
SLWACDE  DS    1A                  SAVE AREA FOR MINOR CDE POINTER
         SPACE 1
* REDEFINITION OF NORMAL WORK AREA FOR USE BY ASID MATCH ROUTINE
         ORG   SLWANORM
SLWAAS14 DS    1F                  SAVE AREA FOR GPR 14
         SPACE 1
         ORG   SLWANORM+L'SLWANORM
SLWAEXT  DS    0D                  WORK AREA PROVIDED ONLY FOR PER     X
                                   ENVIRONMENT
SLWARC   DS    1F                  RETURN CODE FOR PER PROCESSING
SLWAPOFF EQU   X'00000008'         REQUEST PFLIH TO TURN PER OFF IN    X
                                   PSW BEFORE RESUMING
SLWAFRCV EQU   X'00000004'         REQUEST PFLIH TO FORCE RECOVERY FOR X
                                   INTERRUPTED PROCESS
SLWACKIT DS    0CL8                TOD CLOCK NEAR ENTRY TO IEAVTSLP
SLWACKIL DS    CL4                 LEFT HALF OF ENTRY TOD
SLWACKIR DS    CL4                 RIGHT HALF OF ENTRY TOD
SLWAENIP DS    1A                  POINTER TO SCE FOR ENABLED          X
                                   NON-IGNORE PER TRAP
SLWASCE  DS    1A                  SAVE AREA FOR SCE POINTER
SLWACR9  DS    1F                  COPY OF CONTROL REGISTER 9
SLWACRSB EQU   X'80'               PER SUCCESSFUL-BRANCH EVENT MASK
SLWACRIF EQU   X'40'               PER INSTRUCTION-FETCH EVENT MASK
SLWACRSA EQU   X'20'               PER STORAGE-ALTERATION EVENT MASK
SLWACR10 DS    1A                  COPY OF CONTROL REGISTER 10
SLWACR11 DS    1A                  COPY OF CONTROL REGISTER 11
SLWACKOT DS    0CL8                TOD CLOCK NEAR EXIT FROM IEAVTSLP
SLWACKOL DS    CL4                 LEFT HALF OF EXIT TOD
SLWACKOR DS    CL4                 RIGHT HALF OF EXIT TOD
SLWACKPT DS    0CL8                TOTAL ACCUMULATED PER INTERRUPT     X
                                   PROCESSING TIME
SLWACKPL DS    CL4                 LEFT HALF OF ACCUMULATED TIME
SLWACKPR DS    CL4                 RIGHT HALF OF ACCUMULATED TIME
SLWACKET DS    0CL8                TOTAL ELAPSED TIME SINCE FIRST      X
                                   VALID PER INTERRUPT
SLWACKEL DS    CL4                 LEFT HALF OF ELAPSED TIME
SLWACKER DS    CL4                 RIGHT HALF OF ELAPSED TIME
SLWACPUN DS    CL8                 FLOATING-POINT ONLINE CPU COUNT
SLWAFPR0 DS    CL8                 SAVE AREA FOR FPR 0
SLWACKST DS    0CL8                COPY OF ACCUMULATED PER PROCESSING  X
                                   TIME FROM SCVA
SLWACKSL DS    CL4                 LEFT HALF OF SCVA ACCUMULATED TIME
SLWACKSR DS    CL4                 RIGHT HALF OF SCVA ACCUMULATED TIME
SLWAPCDM DS    0CL8                CURRENT PER DEGRADATION (FLOATING   X
                                   POINT PERCENTAGE)
SLWAPCDL DS    0CL4                LEFT HALF OF DEGRADATION PERCENTAGE
SLWAPCDX DS    CL1                 EXPONENT OF DEGRADATION PERCENTAGE
         DS    CL3
SLWAPCDR DS    CL4                 RIGHT HALF OF DEGRADATION PERCENTAGE
SLWABGNM DS    1A                  BEGINNING DATA ADDRESS FOR MVCL
SLWAENDM DS    1A                  ENDING DATA ADDRESS FOR MVCL
SLWAPLSC DS    CL4                 SAVE AREA FOR SCVAPLSC      @G38AP2F
SLWACRGS DS    0CL8                CR3 & CR4 AT THE TIME OF PER        X
                                   INTERRUPT                   @G389P2F
SLWACR3  DS    0CL4                CONTROL REGISTER 3          @G389P2F
SLWAKM   DS    CL2                 KEY MASK                    @G389P2F
SLWASASD DS    CL2                 SASID                       @G389P2F
SLWACR4  DS    0CL4                CONTROL REGISTER 4          @G389P2F
SLWAAX   DS    CL2                 AUTHORIZATION INDEX         @G389P2F
SLWAPASD DS    CL2                 PASID                       @G389P2F
SLWASAVA DS    0CL12               IEAVTPER WORK/SAVE AREA     @G389P2F
SLWASAV1 DS    CL4                 IEAVTPER WORK/SAVE AREA     @G389P2F
SLWASAV3 DS    CL4                 IEAVTPER WORK/SAVE AREA     @G389P2F
SLWASAVP DS    CL2                 SAVE AREA FOR NEW PASID     @G389P2F
         DS    CL2                 RESERVED                    @G389P2F
SLWAREC1 DS    0CL12               RECURSION SAVE AREA         @G389P2F
SLWALMST DS    1A                  LOCK MANAGER START ADDRESS  @G389P2F
SLWALMEN DS    1A                  LOCK MANAGER END (ALMOST) ADDRESS   X
                                                               @G389P2F
SLWAIPCD DS    C                   SAVE AREA FOR PSAIPCD BYTE
         DS    CL3                 RESERVED                    @G389P2F
SLWAREC2 DS    0CL208              RECURSION SAVE AREA 2 (SAVE AREAS   X
                                   REFERENCED ONLY BY VTPER)   @ZMB0347
SLWASVCO DS    CL8                 SAVE AREA FOR SVC OLD PSW
SLWAPGPR DS    CL12                SAVE AREA FOR PSAGPREG
SLWALGPR DS    CL64                SAVE AREA FOR LCCASGPR
SLWACSTK DS    1A                  SAVE AREA FOR PSACSTK
SLWABITS DS    BL1                 SAVE AREA FOR PSA BITS
SLWAPSVC EQU   X'80'               SAVE AREA FOR PSASVC BIT
SLWAILCN DS    CL3                 SAVE AREA FOR SVC ILC AND NUMBER    X
                                                               @G389P2F
SLWASSAV DS    1AL4                SAVE AREA FOR PSASSAV
SLWAESAV DS    1AL4                SAVE AREA FOR PSAESAV1
SLWAEPSW DS    CL8                 SAVE AREA FOR FLCEOPSW
SLWAICOD DS    CL4                 SAVE AREA FOR PSAEEPSW
SLWASXMR DS    CL8                 SAVE AREA FOR LCCASXMR      @G385P1F
SLWASLSA DS    CL64                SAVE AREA FOR PSASLSA       @G385P1F
SLWAEPS1 DS    CL8                 SAVE AREA FOR PSAEXPS1      @G389P2F
SLWAEPS2 DS    CL8                 SAVE AREA FOR PSAEXPS2      @G389P2F
SLWAESV2 DS    1AL4                SAVE AREA FOR PSAESAV2      @ZMB0347
SLWAESV3 DS    1AL4                SAVE AREA FOR PSAESAV3      @ZMB0347
         MEND  ,                                                     */
*%SLWAPLS2:;
*
*  DECLARE
*     1 SLWA BASED (SLPLLSTW) BDY(DWORD),
*       3 SLWANORM CHAR(56) BDY(DWORD),/* NORMAL WORK AREA PROVIDED
*                                      BY ALL CALLERS. NORMALLY USED
*                                      FOR COPYING LIST FORM MACROS. */
*         5 * CHAR(48),
*         5 SLWASAV2 PTR(31),       /* PTR TO REGS FOR SELECTED
*                                      RBLEVEL                       */
*         5 SLWASAVE PTR(31),       /* PTR TO RB CONTAINING PSW FOR
*                                      SELECTED RBLEVEL              */
*       3 SLWAEXT BDY(DWORD),       /* WORK AREA PROVIDED ONLY FOR
*                                      PER ENVIRONMENT       @G382PPY*/
*         5 SLWARC PTR(31),         /* RETURN CODE FOR PER ENTRIES   */
*           7 * BIT(28),
*           7 SLWAPOFF BIT(1),      /* REQUEST PFLIH TO TURN PER OFF
*                                      IN PSW BEFORE RESUMING        */
*           7 SLWAFRCV BIT(1),      /* REQUEST PFLIH TO FORCE
*                                      RECOVERY FOR INTERRUPTED
*                                      PROCESS                       */
*         5 SLWACKIT CHAR(8),       /* TOD CLOCK NEAR ENTRY TO
*                                      IEAVTSLP                      */
*           7 SLWACKIL CHAR(4),     /* LEFT HALF OF ENTRY TOD        */
*           7 SLWACKIR CHAR(4),     /* RIGHT HALF OF ENTRY TOD       */
*         5 SLWAENIP PTR(31),       /* POINTER TO SCE FOR ENABLED
*                                      NON-IGNORE PER TRAP           */
*         5 SLWASCE PTR(31),        /* SAVE AREA FOR SCE POINTER     */
*         5 SLWACR9 PTR(31),        /* COPY OF CONTROL REGISTER 9    */
*           7 SLWACRSB BIT(1),      /* PER SUCCESSFUL-BRANCH EVENT
*                                      MASK                          */
*           7 SLWACRIF BIT(1),      /* PER INSTRUCTION-FETCH EVENT
*                                      MASK                          */
*           7 SLWACRSA BIT(1),      /* PER STORAGE-ALTERATION EVENT
*                                      MASK                          */
*           7 * BIT(29),
*         5 SLWACR10 PTR(31),       /* COPY OF CONTROL REGISTER 10   */
*         5 SLWACR11 PTR(31),       /* COPY OF CONTROL REGISTER 11   */
*         5 SLWACKOT CHAR(8),       /* TOD CLOCK NEAR EXIT FROM
*                                      IEAVTSLP                      */
*           7 SLWACKOL CHAR(4),     /* LEFT HALF OF EXIT TOD         */
*           7 SLWACKOR CHAR(4),     /* RIGHT HALF OF EXIT TOD        */
*         5 SLWACKPT CHAR(8),       /* TOTAL ACCUMULATED PER
*                                      INTERRUPT PROCESSING TIME     */
*           7 SLWACKPL CHAR(4),     /* LEFT HALF OF ACCUMULATED TIME */
*           7 SLWACKPR CHAR(4),     /* RIGHT HALF OF ACCUMULATED TIME*/
*         5 SLWACKET CHAR(8),       /* TOTAL ELAPSED TIME SINCE FIRST
*                                      VALID PER INTERRUPT           */
*           7 SLWACKEL CHAR(4),     /* LEFT HALF OF ELAPSED TIME     */
*           7 SLWACKER CHAR(4),     /* RIGHT HALF OF ELAPSED TIME    */
*         5 SLWACPUN BIT(64),       /* FLOATING POINT ONLINE CPU
*                                      COUNT                         */
*         5 SLWAFPR0 BIT(64),       /* SAVE AREA FOR FPR 0           */
*         5 SLWACKST CHAR(8),       /* COPY OF ACCUMULATED PER
*                                      PROCESSING TIME FROM SCVA     */
*           7 SLWACKSL CHAR(4),     /* LEFT HALF OF SCVA ACCUMULATED
*                                      TIME                          */
*           7 SLWACKSR CHAR(4),     /* RIGHT HALF OF SCVA ACCUMULATED
*                                      TIME                          */
*         5 SLWAPCDM CHAR(8),       /* CURRENT PER DEGRADATION
*                                      (FLOATING POINT PERCENTAGE)   */
*           7 SLWAPCDL CHAR(4),     /* LEFT HALF OF DEGRADATION
*                                      PERCENTAGE                    */
*             9 SLWAPCDX CHAR(1),   /* EXPONENT OF DEGRADATION
*                                      PERCENTAGE                    */
*             9 * CHAR(3),
*           7 SLWAPCDR CHAR(4),     /* RIGHT HALF OF DEGRADATION
*                                      PERCENTAGE                    */
*         5 SLWABGNM PTR(31),       /* BEGINNING DATA ADDRESS FOR
*                                      MVCL                          */
*         5 SLWAENDM PTR(31),       /* ENDING DATA ADDRESS FOR MVCL  */
*         5 SLWAPLSC CHAR(4),       /*SAVE AREA FOR SCVAPLSC @G38AP2F*/
*         5 SLWACRGS CHAR(8),       /* CR3 & CR4 AT THE TIME OF PER
*                                      INTERRUPT             @G389P2F*/
*           7 SLWACR3 CHAR(4),      /* CONTROL REGISTER 3    @G389P2F*/
*             9 SLWAKM   CHAR(2),   /* KEY MASK              @G389P2F*/
*             9 SLWASASD CHAR(2),   /* SASID                 @G389P2F*/
*           7 SLWACR4 CHAR(4),      /* CONTROL REGISTER 4    @G389P2F*/
*             9 SLWAAX   CHAR(2),   /* AUTHORIZATION INDEX   @G389P2F*/
*             9 SLWAPASD CHAR(2),   /* PASID                 @G389P2F*/
*         5 SLWASAVA CHAR(12),     /*IEAVTPER WORK/SAVE AREA @G389P2F*/
*           7 SLWASAV1 CHAR(4),    /*IEAVTPER WORK/SAVE AREA @G389P2F*/
*           7 SLWASAV3 CHAR(4),    /*IEAVTPER WORK/SAVE AREA @G389P2F*/
*           7 SLWASAVP CHAR(2),    /* SAVE AREA FOR PASID    @G389P2F*/
*           7 *        CHAR(2),    /* RESERVED               @G389P2F*/
*         5 SLWAREC1 CHAR(12) BDY(WORD), /* RECURSION SAVE AREA
*                                                            @G389P2F*/
*           7 SLWALMST PTR(31),     /* LOCK MANAGER START ADDRESS
*                                                            @G389P2F*/
*           7 SLWALMEN PTR(31),     /* LOCK MANAGER END (ALMOST)
*                                      ADDRESS               @G389P2F*/
*           7 SLWAIPCD CHAR(1),     /* SAVE AREA FOR PSAIPCD BYTE    */
*           7 * CHAR(3),            /* RESERVED              @G389P2F*/
*         5 SLWAREC2 CHAR(208) BDY(WORD), /* RECURSION SAVE AREA (SAVE
*                                      AREAS REFERENCED ONLY BY VTPER)
*                                                            @ZMB0347*/
*           7 SLWASVCO CHAR(8),     /* SAVE AREA FOR SVC OLD PSW     */
*           7 SLWAPGPR CHAR(12),    /* SAVE AREA FOR PSAGPREG        */
*           7 SLWALGPR CHAR(64),    /* SAVE AREA FOR LCCASGPR        */
*           7 SLWACSTK PTR(31),     /* SAVE AREA FOR PSACSTK         */
*           7 SLWABITS CHAR(1),     /* SAVE AREA FOR PSA BITS        */
*             9 SLWAPSVC BIT(1),    /* SAVE AREA FOR PSASVC BIT      */
*           7 SLWAILCN CHAR(3),     /* SAVE AREA FOR SVC ILC AND
*                                      NUMBER                @G389P2F*/
*           7 SLWASSAV PTR(31),     /* SAVE AREA FOR PSASSAV         */
*           7 SLWAESAV PTR(31),     /* SAVE AREA FOR PSAESAV1        */
*           7 SLWAEPSW CHAR(8),     /* SAVE AREA FOR FLCEOPSW        */
*           7 SLWAICOD CHAR(4),     /* SAVE AREA FOR PSAEEPSW        */
*           7 SLWASXMR CHAR(8),    /* SAVE AREA FOR LCCASXMR @G385P1F*/
*           7 SLWASLSA CHAR(64),    /* SAVE AREA FOR PSASLSA @G385P1F*/
*           7 SLWAEPS1 CHAR(8),    /* SAVE AREA FOR PSAEXPS1 @G389P2F*/
*           7 SLWAEPS2 CHAR(8),    /* SAVE AREA FOR PSAEXPS2 @G389P2F*/
*           7 SLWAESV2 PTR(31),    /* SAVE AREA FOR PSAESAV2 @ZMB0347*/
*           7 SLWAESV3 PTR(31),    /* SAVE AREA FOR PSAESAV3 @ZMB0347*/
*     1 * DEFINED(SLWANORM),        /* REDEFINITION OF NORMAL WORK
*                                      AREA FOR USE AS SDUMP
*                                      PARAMETER LIST                */
*       3 SLWADMPL CHAR(48),        /* SDUMP PARAMETER LIST (SEE
*                                      IHASDUMP MAPPING)     @G385P1F*/
*       3 * CHAR(8),                /* WORK / SAVE AREA      @G385P1F*/
*     1 * DEFINED(SLWANORM),        /* REDEFINITION OF NORMAL WORK
*                                      AREA FOR USE BY PVTMOD MATCH
*                                      ROUTINE                       */
*       3 SLWAXCTR FIXED(31),       /* COUNTER FOR EXTENT LIST LOOP
*                                      SEARCH                        */
*       3 SLWACDE PTR(31),          /* SAVE AREA FOR MINOR CDE
*                                      POINTER                       */
*     1 * DEFINED(SLWANORM),        /* REDEFINITION OF NORMAL WORK
*                                      AREA FOR USE BY ASID MATCH
*                                      ROUTINE                       */
*       3 SLWAAS14 PTR(31);         /* SAVE AREA FOR GPR 14          */
./ ADD NAME=IHASMEW
*/********************************************************************/
*/*   MACRO NAME - IHASMEW                                           */
*/*                                                                  */
*/*   DESCRIPTIVE NAME - SUMMARY DUMP EXTENDED WORK AREA             */
*/*                                                                  */
*/*       COMPONENT - 5752-SC1CM                                     */
*/*                                                                  */
*/*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP. 1980,                 */
*/*               LICENSED MATERIAL- PROGRAM,                        */
*/*               PROPERTY OF IBM,                                   */
*/*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER        */
*/*               G120-2083                                          */
*/*                                                                  */
*/*   STATUS - OS/VS2 JBB1226                                        */
*/*                                                                  */
*/*   FUNCTION - USED TO HOLD INFORMATION PERTAINING TO              */
*/*              THE DUMPING SERVICES (DUMPSRV) ADDRESS              */
*/*              SPACE.  THIS INFORMATION IS USED BY                 */
*/*              THE SUMMARY DUMP PROCESSOR WHEN TAKING              */
*/*              AN ENABLED SUSPEND SUMMARY DUMP                     */
*/*              (SUSPEND=YES ON THE SDUMP MACRO).                   */
*/*                                                                  */
*/*   METHOD OF ACCESS -                                             */
*/*      PLS - INCLUDE IHASMEW FROM SYSLIB.                          */
*/*            MACRO IHARTCT MUST ALSO BE INCLUDED.                  */
*/*      BAL - DSECT IS CREATED WHEN IHASMEW STATEMENT EXECUTED.     */
*/*            USING ON ADDRESS FOUND IN RTCTSMEW IS REQUIRED        */
*/*            FOR ADDRESSABLIITY.   MODULES THAT INCLUDE THIS MACRO */
*/*            MUST ALSO INCLUDE IHARTCT.                            */
*/*                                                                  */
*/*   CREATED BY- IEAVTSAI, OBTAINED IN KEY ZERO FROM SUBPOOL 229    */
*/*               PRIVATE AREA IN THE DUMPSRV ADDRESS SPACE.         */
*/*                                                                  */
*/*   SERIALIZATION - NONE                                           */
*/*                                                                  */
*/*   POINTED TO BY - IHARTCT (RTCTSMEW)                             */
*/*                                                                  */
*/*   CHANGE ACTIVITY =                                              */
*/*       1/14/80  CREATED FOR OS/VS2 JBB1226                        */
*/*                INITIAL SUPPORT ADDED TO PROVIDE SUPPORT          */
*/*                FOR SUSPEND SUMMARY DUMP.                         */
*/*                                                                  */
*/*                                                                  */
*/********************************************************************/
*/*A000000-999999                                            @G38EP31*/
*        %GOTO SMEWPLS;     /*SET UP BILINGUAL MAPPING
         MACRO
         IHASMEW
SMEW     DSECT ,                  BILINGUAL MAPPING OF SMEW
         IEZBITS  ,               GENERATE SYMBOLIC BIT NAMES
SMEWID   DS    CL4                EBCDIC IDENTIFIER SMEW
SMEWVB   DS    0F                 VIRTUAL BUFFER INFORMATION
SMEWVBST DS    F                  START OF VIRTUAL BUFFER
SMEWVBEN DS    F                  END OF VIRTUAL BUFFER
SMEWVBCT DS    F                  BLOCK COUNT FOR VIRTUAL BUFF
SMEWSASD DS    H                  ASID OF SDUMP CALLER
         DS    H                  RESERVED
SMEWRTRN DS    A                  COMMON RETURN REGISTER SAVE AREA
SMEWCNTL DS    0FL6               VIRTUAL BUFFER CONTROL AREA
SMEWVSPC DS    H                  SPACE REMAINING ON CURRENT BUFFER
SMEWVBUS DS    H                  NUMBER OF BUFFER PAGES USED
SMEWVBLK DS    A                  ADDRESS OF CURRENT BUFFER BLOCK
SMEWVBAD DS    A                  ADDRESS OF CURRENT BUFFER SPACE
SMEWPSAD DS    A                  CURRENT SUMDUMP PSEUDO ADDRESS
SMEWFLGS DS    0CL4               FLAGS FOR ADDRESS SPACE PROCESSING
SMEWFLG1 DS    B                  FIRST BYTE OF FLAGS
SMEWVSBW EQU   BIT0               1=VIRTUAL STORAGE BUFFER TO WRITE
SMEWSBIT EQU   BIT1               1=S-BIT WAS ON DURING MOVE PROCESS
SMWKVSBF EQU   BIT2               1=VIRTUAL STORAGE BUFFER IS FULL
         DS    B                  RESERVED
         DS    B                  RESERVED
         DS    B                  RESERVED
         DS    F                  RESERVED
         DS    F                  RESERVED
SMEWLEN  EQU   *-SMEW             CALCULATE SMEW LENGTH
SMEWBKSZ EQU   4112               VIRTUAL BUFFER BLOCK SIZE IS
                                  4096= ONE FULL PAGE OF DATA +
                                  8   = 8 BYTE RECORD HEADER  +
                                  8   = CCW SEEK ADDR IF DASD
         MEND
*    */
*%SMEWPLS:  ;
*  DCL 1 SMEW BASED(RTCTSMEW),    /* SUMMARY DUMP EXTENDED WORK AREA */
*      2  SMEWID CHAR(4),         /* EBCDIC IDENTIFIER -SMEW-        */
*      2  SMEWVB,                 /* VIRTUAL BUFFER INFORMATION      */
*        3  SMEWVBST FIXED(31),   /* START OF VIRTUAL BUFFER         */
*        3  SMEWVBEN FIXED(31),   /* END OF VIRTUAL BUFFER           */
*        3  SMEWVBCT FIXED(31),   /* BLOCK COUNT FOR VIRT BUFF       */
*      2  SMEWSASD  PTR(16),      /* ASID OF SDUMP CALLER            */
*      2  *         PTR(16),      /* RESERVED                        */
*      2  SMEWRTRN  PTR(31),     /* COMMON RETURN REGISTER SAVE AREA */
*      2  SMEWCNTL,               /* AREA FOR CONTROLLING THE BUFFER */
*        3  SMEWVSPC  PTR(16),    /* SPACE REMANING ON CURRENT PAGE  */
*        3  SMEWVBUS  PTR(16),    /* NUMBER OF BUFFER BLOCKS USED    */
*        3  SMEWVBLK  PTR(31),    /* ADDRESS OF CURRENTLY USED BLOCK */
*        3  SMEWVBAD  PTR(31),    /* ADDRESS OF FREE DATA SPACE      */
*        3  SMEWPSAD  PTR(31),    /* CURRENT SUMDUMP PSEUDO ADDRESS  */
*        3  SMEWFLGS  CHAR(4),    /* FLAGS USED TO CONTROL BUFFER    */
*           4  SMEWFLG1 CHAR(1),  /* FIRST BYTE OF FLAGS             */
*              5  SMEWVSBW BIT(1), /*1=VIRTUAL BUFFER TO WRITE OUT   */
*              5  SMEWSBIT BIT(1), /*1=S-BIT ONE DURING MOVE PROCESS */
*              5  SMEWVSBF BIT(1), /*1=VIRTUAL STORAGE BUFFER IS FULL*/
*      2  *         PTR(31),      /* RESERVED                        */
*      2  *         PTR(31);      /* RESERVED                        */
*  DCL SMEWBKSZ CONSTANT(4096+8+8); /* VIRTUAL BUFFER BLOCK SIZE
*                                 4096= ONE FULL PAGE OF DATA +
*                                 8   = 8 BYTE RECORD HEADER  +
*                                 8   = CCW SEEK ADDR IF DASD */
*  DCL SMEWLEN CONSTANT(LENGTH(SMEW)); /* SMEW LENGTH */
./ ADD NAME=IHASNP
*        %GOTO SNAPLS; /*
         MACRO
         IHASNP &DSECT=YES                                  @Y307PXE*/
*%SNAPLS:  ;
* /* MACMEAN SNAP MEANS SNAP PARAMETER LIST                          */
* /* MACCOMP Y-1 SC1C5/PZD81                                         */
* /* MACSTAT Y-1 72245/Y02705                                        */
* /* UPDATED FOR SU 33 3.7 BASE      9/23/76                 @G33SPHW*/
*        %GOTO SNAPPLS;  /*
         AIF ('&DSECT' EQ 'YES').SNAP00
SNPPARMS EQU   *
         AGO    .SNAP01
.SNAP00  ANOP
SNPPARMS DSECT
.SNAP01  DS    0F
         IEZBITS
SNPIDENT DS    B                   DUMP ID SUPPLIED BY USER
SNPFLAG  DS    B                   FLAG BYTE
SNPSNAP  EQU   BIT0                0=SNAP REQUEST
*                                  1=SVC DUMP REQUEST
SNPVS2   EQU   BIT1                0=OS/VS2 REL.1 PARAMETER LIST
*                                  1=OS/VS2 REL.2 PARAMETER LIST
SNPVS2EN EQU   BIT2                1=OS/VS2 ENHANCED SNAP
SNPABEND EQU   BIT3                0=ABEND IS CALLER
*                                  1=SNAP REQUEST
SNPID    EQU   BIT4                1=ID SPECIFIED
SNPTCB   EQU   BIT5                1=TCB SPECIFIED
SNPSLIST EQU   BIT6                1=STORAGE LIST SPECIFIED
SNPHDR   EQU   BIT7                1=HEADER LIST SPECIFIED
         DS    H                   RESERVED
SNPSDATA DS    CL2                 SDATA OPTIONS
SNPSDAT0 DS    0B                  SDATA OPTIONS FLAG ONE    @G33SPHW
SNPNUC   EQU   BIT0                1=DUMP NUCLEUS,PSA,SQA,LSQA
SNPSQA   EQU   BIT1                1=DUMP SQA
SNPLSQA  EQU   BIT2                1=DUMP LSQA
SNPSWA   EQU   BIT3                1=DUMP SWA
SNPTRT   EQU   BIT4                1=INCLUDE TRACE TABLE (SUPERVISOR
*                                  OR GTF)
SNPCB    EQU   BIT5                1=FORMAT CNTRL BLKS FOR TASK
SNPQCB   EQU   BIT6                1=FORMAT ENQUEUE CNTRL BLKS
*                                  FOR TASK
SNPDM    EQU   BIT7                1=FORMAT DATA MGT. CONTROL BLKS.
*                                                             @G33SPHW
SNPSDAT1 DS    0B                  SDATA OPTIONS FLAG TWO     @G33SPHW
SNPIO    EQU   BIT0                1=FORMAT IOS CONTROL BLKS. @G33SPHW
SNPERR   EQU   BIT1                1=FORMAT ERROR CONTROL BLKS.@G33SPHW
*        EQU   BIT2                RESERVED
*        EQU   BIT3                RESERVED
*        EQU   BIT4                RESERVED
*        EQU   BIT5                RESERVED
*        EQU   BIT6                RESERVED
*        EQU   BIT7                RESERVED
SNPPDATA DS    B                   PDATA OPTIONS
SNPSAVE  EQU   BIT0                1=DISPLAY SAVE AREA TRACE
SNPSAVE2 EQU   BIT1                0=DISPLAY ENTIRE SAVE AREA
*                                  1=DISPLAY SAVE AREA HEADS
SNPREGS  EQU   BIT2                1=DISPLAY REGS- ENTRY TO SNAP/ABEND
SNPLPA   EQU   BIT3                1=DISPLAY ACTIVE LPA MODULES
SNPJPA   EQU   BIT4                1=DISPLAY JPA MODULES
SNPPSW   EQU   BIT5                1=DISPLAY PSW, ILC, INTERRUPT CODE
SNPSPLS  EQU   BIT6                1=DISPLAY USER SUBPOOLS: 0-127
*        EQU   BIT7                RESERVED
         DS    B                   RESERVED
SNPDCB   DS    A                   ADDRESS OF DCB FOR DUMP DATA
*                                  SET
SNPTCBA  DS    A                   ADDRESS OF TCB TO BE DISPLAYED
SNPSTOR  DS    A                   ADDRESS OF STORAGE LIST
*                                  LIST CONTAINS BEGIN AND END
*                                  ADDR OF AREAS TO BE DUMPED
SNPHDRA  DS    A                   ADDRESS OF HEADER LIST     @G33SPHW
         MEND
**/
*%SNAPPLS : ;
*  %IF SNAP9999^=',' %THEN
*    %SNAP9999=';';
*  %IF SNAPLVL^='' %THEN
*    %GOTO SNAPPLS1;
*DECLARE
*    1 SNPPARMS BASED (SNAPPTR) BDY(WORD),
*  %GOTO SNAPPLS2;
*%SNAPPLS1: ;
*    SNAPLVL SNPPARMS BDY(WORD),
*%SNAPPLS2: ;
*      6 SNPIDENT CHAR(1),         /* DUMP ID SUPPLIED BY USER       */
*      6 SNPFLAG  CHAR(1),         /* FLAG BYTE                      */
*        8 SNPSNAP  BIT(1),        /* 0=SNAP REQUEST
*                                     1=SVC DUMP REQUEST             */
*        8 SNPVS2   BIT(1),        /* 0=OS/VS2 REL.1 PARAMETER LIST
*                                     1=OS/VS2 REL.2 PARAMETER LIST  */
*        8 SNPVS2EN BIT(1),        /* 1=OS/VS2 ENHANCED SNAP         */
*        8 SNPABEND BIT(1),        /* 0=ABEND IS CALLER
*                                     1=SNAP REQUEST                 */
*        8 SNPID    BIT(1),        /* 1=ID SPECIFIED                 */
*        8 SNPTCB   BIT(1),        /* 1=TCB SPECIFIED                */
*        8 SNPSLIST BIT(1),        /* 1=STORAGE LIST SPECIFIED       */
*        8 SNPHDR   BIT(1),        /* 1=STORAGE HEADER LIST
*                                     SPECIFIED                      */
*      6 *        FIXED(15),       /* RESERVED                       */
*      6 SNPSDATA BIT(16),         /* SDATA OPTIONS                  */
*        7 SNPSDAT0 BIT(8),        /* SDATA OPTIONS FLAG ONE @G33SPHW*/
*        8 SNPNUC   BIT(1),        /* 1=DUMP NUCLEUS, PSA, SQA, LSQA */
*        8 SNPSQA   BIT(1),        /* 1=DUMP SQA                     */
*        8 SNPLSQA  BIT(1),        /* 1=DUMP LSQA                    */
*        8 SNPSWA   BIT(1),        /* 1=DUMP SWA                     */
*        8 SNPTRT   BIT(1),        /* 1=INCLUDE TRACE TABLE(SUPER-
*                                       VISOR OR GTF)                */
*        8 SNPCB    BIT(1),        /* 1=FORMAT CNTRL BLKS FOR TASK   */
*        8 SNPQCB   BIT(1),        /* 1=FORMAT ENQUEUE CNTRL BLKS
*                                     FOR TASK                       */
*        8 SNPDM    BIT(1),        /* 1=FORMAT DATA MGT. CONTROL
*                                     BLKS.                  @G33SPHW*/
*        7 SNPSDAT1 BIT(8),        /* SDATA OPTIONS FLAG TWO @G33SPHW*/
*        8 SNPIO    BIT(1),        /* 1=FORMAT IOS CONTROL BLKS.
*                                                            @G33SPHW*/
*        8 SNPERR   BIT(1),        /* 1=FORMAT ERROR CONTROL BLKS.
*                                                            @G33SPHW*/
*        8 *        BIT(6),        /* RESERVED               @G33SPHW*/
*      6 SNPPDATA BIT(8),          /* PDATA OPTIONS                  */
*        8 SNPSAVE  BIT(1),        /* 1=DISPLAY SAVE AREA TRACE      */
*        8 SNPSAVE2 BIT(1),        /* 0=DISPLAY ENTIRE SAVE AREA
*                                     1=DISPLAY SAVE AREA HEADS      */
*        8 SNPREGS  BIT(1),        /* 1=DISPLAY REGS- ENTRY TO
*                                     SNAP/ABEND                     */
*        8 SNPLPA   BIT(1),        /* 1=DISPLAY ACTIVE LPA MODULES   */
*        8 SNPJPA   BIT(1),        /* 1=DISPLAY JPA MODULES          */
*        8 SNPPSW   BIT(1),        /* 1=DISPLAY PSW, ILC, INTERRUPT
*                                     CODE                           */
*        8 SNPSPLS  BIT(1),        /* 1=DISPLAY USER SUBPOOLS: 0-127 */
*        8 *        BIT(1),        /* RESERVED                       */
*      6 * BIT(8),                 /* RESERVED                       */
*      6 SNPDCB   PTR(31),         /* ADDRESS OF DCB FOR DUMP DATA
*                                     SET                            */
*      6 SNPTCBA  PTR(31),         /* ADDRESS OF TCB TO BE DISPLAYED */
*      6 SNPSTOR  PTR(31),         /* ADDRESS OF STORAGE LIST
*                                     LIST CONTAINS BEG AND END
*                                     ADDR OF AREAS TO BE DUMPED     */
*      6 SNPHDRA  PTR(31) SNAP9999 /* ADDRESS OF HEADER LIST @G33SPHW*/
*% SNAPLEN='LENGTH(SNPPARMS)';     /* LENGTH OF SNAP PARAMETER LIST  */
./ ADD NAME=IHASPCT
*          %GOTO SPCTPLS;                                              /
*
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0 (OS/VS2 REL 4 VERSION)                            *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR SWAP CONTROL TABLE                             *
* ENTRY POINTS -                                                      *
*     IHASPCT MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IHASPCT MACRO DEFINITION                                     *
* OUTPUT -                                                            *
*    SWAP CONTROL TABLE MAPPING MACRO                                 *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    PLS ONLY MACRO                                                   *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
**********************************************************************/
*%SPCTPLS :  ;
*/********************************************************************/
*/*   SWAP COMMUNICATIONS TABLE MAPPING FOR VS2/4.   LEVEL  4/11/75. */
*/********************************************************************/
*        %IF SPCT9999 ^= ','        /* IF THIS IS LAST BLOCK         */
*          %THEN %SPCT9999 = ';';   /* THEN CLOSE DCL STATEMENT      */
*        %IF SPCTLEVL ^= ''         /* IF THIS IS CONCATENATED       */
*          %THEN %GOTO SPCTPLS1;    /* THEN SKIP DCL                 */
*DCL 1 SPCT BASED (SPCTPTR)         /* DECLARE SPCT LEVEL 1          */
*        %GO TO SPCTPLS2;           /* AND SKIP LEVEL TWO DCL        */
*%SPCTPLS1: SPCTDUM=SPCTLEVL ' SPCT'; /* SET LEVEL FOR MINOR       */
*    SPCTDUM                        /* MINOR STRUCTURE NAME PARM     */
*%SPCTPLS2:;
*        BDY(WORD),
*    4 SPCTSWRT  PTR(31),   /* VSA OF THE SWAP IN ROOT PCB IF SPCTSWIN
*                             = 1. VSA OF SWAP OUT WORK PCB IF
*                             SPCTOUT = 1.                           */
*    4 SPCTFIX  FIXED(15), /* NUMBER OF FIX ENTRIES IN THIS SPCT     */
*    4 SPCTLSQA FIXED(15), /* NUMBER OF LSQA ENTRIES IN THIS SPCT    */
*    4 SPCTNSEG FIXED(8),  /* NUMBER OF SEGMENT ENTRIES THAT CAN BE
*                             HELD IN THIS SPCT                      */
*    4 SPCTSSEG FIXED(8),  /* NUMBER OF ACTIVE SEGMENT ENTRIES IN
*                             THIS SPCT. THERE IS ONE ENTRY FOR EACH
*                             ACTIVE PRIVATE AREA SEGMENT.           */
*    4 SPCTFLG1 BIT(8),    /* SPCT FLAG BYTE                         */
*        8 SPCTSWIN BIT(1),/* 1 - SWAP-IN IN PROGRESS                */
*        8 SPCTOUT  BIT(1),/* 1 - SWAP OUT IN PROGRESS               */
*        8 SPCTPURG BIT(1),/* 1 - PAGING WAS PURGED DURING SWAP OUT  */
*        8 SPCTBIG  BIT(1),/* 1 - THERE EXISTS ONE OR MORE FIX ENTRIES
*                             WITH A FIX COUNT GREATER THAN 255      */
*        8 SPCTPSET BIT(1),/* 1 - PAGE DATASET USED FOR LSQA PAGES ON
*                             LAST SWAP OUT. 0 - SWAP DATASET USED FOR
*                             LSQA PAGES ON LAST SWAP OUT.   @Z40WPYD*/
*       8 SPCTVROT BIT(1), /*1 - SWAP OUT HAS BEEN REQUESTED
*                            BY VEQRP          @ZA10767*/
*        8 *        BIT(2),/* RESERVED BIT FLAGS @ZA10767            */
*    4 SPCTIDEN CHAR(1),                /* IEAVITAS WILL SET TO SPCT ID
*                                          CHARACTER 'S'     @Z40WPYD*/
*    4 SPCTWSSZ FIXED(15), /* WORKING SET SIZE                       */
*    4 SPCTSIZE FIXED(15), /* THE SIZE IN BYTES OF THE SPCT          */
*    4 SPCTSWAP CHAR(56),  /* THIS AREA AND EVERY EXTENSION IS MAPPED
*                             BY SPCTEXTM                    @Z40WPYD*/
*                          /* SPCTSWAP CONTAINS A MAXIMUM OF 6 FIX SWAP
*                             ENTRIES OR 8 LSQA SWAP ENTRIES OR A
*                             COMBINATION OF THE TWO NOT EXCEEDING
*                             48 BYTES. ALL LSQA ENTRIES PRECEDE ALL
*                             FIX ENTRIES.                   @Z40WPYD*/
*    4 SPCTSEGS(*) CHAR(96) SPCT9999 /* AN AREA CONTAINING A LIST OF
*                             SEGMENT ENTRIES FOR THE ADDRESS SPACE.
*                             AS SEGMENTS ARE CREATED OR DESTROYED FOR
*                             THE ADDRESS SPACE THIS AREA EXPANDS OR
*                             CONTRACTS AS REQUIRED IN INCREMENTS OF
*                             96 BYTES (6 BYTES PER ACTIVE SEGMENT). */
*        %SPCTLEN = 'LENGTH(SPCT)'; /* OBTAIN LENGTH OF SPCT         */
*%SPCTPLS3: ;
* /*******************************************************************/
* /*                     SEGMENT ENTRY MAPPING                       */
* /*******************************************************************/
* DCL 1 SPCTSEGE CHAR(6) BDY(HWORD) BASED(SEGSPTR),/* DECLARE BASE FOR
*                             ENTRY  */
*    4 SPCTSEGX PTR(8),    /* CORRESPONDING INDEX INTO SEGMENT TABLE
*                             FOR THIS ENTRY.                        */
*    4 SPCTPGT  BIT(24),   /* VSA OF PAGE TABLE FOR SEGMENT IDENTIFIED
*                             IN INDEX.                              */
*    4 SPCTBITM BIT(16);   /* BIT MAP REPRESENTING PRIVATE AREA SEGMENT
*                             EACH PAGE MAPS TO A UNIQUE FLAG BIT.
*                             1 - PAGE IS TO BE SWAPPED IN.          */
*%SPCTPLS4: ;
* /*******************************************************************/
* /*                  FIX OR LSQA ENTRY MAPPING                      */
* /*******************************************************************/
* DCL 1 SPCTSWPE CHAR(8) BDY(HWORD) BASED(SWAPPTR),/* DECLARE BASE
*                                   FOR ENTRY                        */
*    4 SPCTLS,                  /* REFERENCE TO BEGINNING OF A LSQA
*                                  ENTRY.                            */
*         8 SPCTFLAG BIT(8), /* SPCT FLAG BITS.              @Z40WPYD*/
*           12 SPCTLVAL BIT(1), /*1=LSID IN SPCTSSID IS VALID  @Z40WPYD
*                                                                    */
*           12 SPCTLSQ  BIT(1), /*1=THIS IS A 6 BYTE LSQA ENTRY, ELSE,
*                                 THIS IS AN 8 BYTE FIXED ENTRY.
*                                                            @Z40WPYD*/
*           12 SPCTCOMM BIT(1), /*1=VBN IS FOR COMMON AREA   @Z40WPYD*/
*           12 SPCTDEFR BIT(1), /*1=PAGE WAS FLAGGED DEFER RELEASE AT
*                                 SWAP TIME.                 @Z40WPYD*/
*           12 *        BIT(4), /*RESERVED                   @Z40WPYD*/
*         8 SPCTSSID CHAR(3),   /*THREE BYTE LSID            @Z40WPYD*/
*         8 SPCTVBN  BIT(16),   /*VBN AND RESERVED BITS      @Z40WPYD*/
*    4 SPCTFIXC FIXED(15); /* FIX COUNT ASSOCIATED WITH FIX ENTRY.
*                             THIS FIELD DOESN'T EXIST FOR LSQA ENTRY*/
*%SPCTPLS5: ;
* /*******************************************************************/
* /*              SPCTSWAP AND SPCT EXTENSION MAPPING                */
* /*******************************************************************/
* DCL 1 SPCTEXTM CHAR(56) BDY(WORD) BASED,/* DECLARE STRUCTURE BASED
*                                                            @Z40WPYD*/
*         4 SPCTEXT PTR(31),    /* ADDRESS OF NEXT EXTENSION         */
*         4 *       CHAR(4),    /* RESERVED                  @Z40WPYD*/
*         4 SPCTENT CHAR(48),   /* FIX AND LSQA ENTRIES              */
*             8 SPCTENTS(8)CHAR(6), /* LSQA AND FIXED SWAP ENTRIES.
*                                                            @Z40WPYD*/
*             8 SPCTXEND CHAR(0); /* END OF EXTENSION                */
./ ADD NAME=IHASSRB
*        %GOTO PLSSSRB;                                              /*
         MACRO
         IHASSRB
         IHASRB
SSRBSECT EQU   SRBSECT                 SET LABEL TO BEGINNING
SSRB     DS    0D                      START OF SAVE AREA PORTION
SSRBCPSW DS    D                       VALUE OF CURRENT TCB
SSRBFPRS DS    0CL32                   FLOATING POINT REG SAVE AREA
SSRBFPR0 DS    D                       FLOATING POINT REG 0
SSRBFPR2 DS    D                       FLOATING POINT REG 2
SSRBFPR4 DS    D                       FLOATING POINT REG 4
SSRBFPR6 DS    D                       FLOATING POINT REG 6
SSRBGPRS DS    CL64                    GENERAL REGISTER SAVE AREA
SSRBTRAN DS    F                       PAGE FAULT ADDRESS(FLIH ONLY)
SSRBFRRS DS    CL596                   FRR STACK SAVE AREA   @ZM02352
SSRBFLG1 DS    XL1                     STATUS ATTRIBUTES
SSRBLLH  EQU   X'80'                   LOCAL LOCK WAS HELD BY SRB
SSRBMAIN EQU   X'40'                   SSRB MUST BE FREEMAINED
SSRBEND  EQU   *
SSRBLEN  EQU   SSRBEND-SRBSECT         LENGTH OF SSRB AREA
         MEND  , */
*%PLSSSRB :  ;
*%SRBLEVEL='2';                        /* PASS DCL AND LEVEL 1 IN SRB*/
*%SRB9999=',';                         /*END SRB WITH COMMA          */
*DECLARE                               /* SUSPENDED SRB              */
*  1 SSRBSECT BASED(SRBPTR),           /* LABEL OF MAPPING           */
*%INCLUDE SYSLIB(IHASRB);
*    2 SSRB BDY(DWORD),                /* START OF SAVE AREA PORTION */
*      3 SSRBCPSW CHAR(8) BDY(DWORD),  /* VALUE OF CURRENT PSW       */
*      3 SSRBFPRS CHAR(32) BDY(DWORD), /* FLOATING POINT REG SAVE
*                                         AREA                       */
*        4 SSRBFPR0 CHAR(8),           /* FLOATING POINT REG 0       */
*        4 SSRBFPR2 CHAR(8),           /* FLOATING POINT REG 2       */
*        4 SSRBFPR4 CHAR(8),           /* FLOATING POINT REG 4       */
*        4 SSRBFPR6 CHAR(8),           /* FLOATING POINT REG 6       */
*      3 SSRBGPRS CHAR(64),            /* GENERAL REGISTER SAVE AREA */
*      3 SSRBTRAN PTR(31),             /* PAGE FAULT ADDR(FLIH ONLY) */
*      3 SSRBFRRS CHAR(596),           /* FRR STACK SAVE AREA@ZM02352*/
*      3 SSRBFLG1 BIT(8),              /* STATUS ATTRIBUTES          */
*        4 SSRBLLH BIT(1),             /* LOCAL LOCK WAS HELD        */
*        4 SSRBMAIN BIT(1),            /* SSRB MUST BE FREEMAINED    */
*        4 * BIT(6);                   /* RESERVED                   */
./ ADD NAME=IHASTKE
*        %GOTO STKEL1;                 /*
         MACRO
         IHASTKE
*                    */
*%STKEL1 : ;
*/********************************************************************/
*/*                                                                  */
*/*     PCLINK STACK ELEMENT (STKE)                                  */
*/*                                                                  */
*/*  MACRO NAME = IHASTKE                                            */
*/*                                                                  */
*/*  MACDATE = 01/04/80                                              */
*/*                                                                  */
*/*  COPYRIGHT =                                                     */
*/*      5740-XYN COPYRIGHT IBM CORP. 1980,                          */
*/*      LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                 */
*/*      REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER                 */
*/*      G120-2083.                                                  */
*/*                                                                  */
*/*  STATUS =                                                        */
*/*      OS/VS2 JBB1226                                              */
*/*                                                                  */
*/*  FUNCTION =                                                      */
*/*      MAPS THE LOCAL AND GLOBAL STACK ELEMENTS, WHICH FORM THE    */
*/*      CONTROL BLOCKS FOR THE PCLINK STACK/UNSTACK/EXTRACT         */
*/*      SERVICES.                                                   */
*/*                                                                  */
*/*  METHOD OF ACCESS =                                              */
*/*      BAL  - A DSECT IS PRODUCED, PERFORM USING ON STKE.          */
*/*      PL/S - STKE IS DECLARED AS A BASED STRUCTURE.               */
*/*             STKEPTR MUST BE DECLARED.                            */
*/*                                                                  */
*/*  CREATED BY =                                                    */
*/*      THE PCLINK STACK ROUTINE (IEAVXSTK) OBTAINS STORAGE FOR     */
*/*      STKES FROM THE LOCAL OR GLOBAL POOLS, FILLS IN THE DATA,    */
*/*      AND CHAINS THE STKES ON THE APPROPRIATE STKE QUEUE.         */
*/*                                                                  */
*/*  DELETED BY =                                                    */
*/*      THE PCLINK UNSTACK ROUTINE (IEAVXSTK) UNCHAINS THE STKES    */
*/*      FROM THE CURRENT STKE QUEUE AND RETURNS THEIR STORAGE TO    */
*/*      THE LOCAL OR GLOBAL POOLS.                                  */
*/*      THE LOCAL POOLS ARE DELETED AT MEMORY TERMINATION TIME WHEN */
*/*      THE LSQA IS FREED.                                          */
*/*      THE GLOBAL POOLS (IN SP 239) ARE NEVER DELETED.             */
*/*                                                                  */
*/*  POINTED TO BY =                                                 */
*/*      WHEN THE STKE IS ON THE FREE QUEUE, THE ORIGIN IS STKHAEP   */
*/*      AND THE LINK FIELD IS STKEPREV.                             */
*/*      WHEN THE STKE IS IN USE, THE ORIGIN IS PSASTKE OR XSBSTKE   */
*/*      AND THE LINK FIELD IS STKEPREV.                             */
*/*                                                                  */
*/*  SERIALIZATION =                                                 */
*/*      A STACK ELEMENT IS OBTAINED FROM THE FREE QUEUE VIA COMPARE */
*/*      DOUBLE AND SWAP LOGIC.                                      */
*/*      LOCAL POOL EXPANSION IS SERIALIZED VIA THE CML LOCK.        */
*/*      GLOBAL POOL EXPANSION IS SERIALIZED VIA THE SALLOC LOCK.    */
*/*                                                                  */
*/*  CHANGE ACTIVITY = THIS MACRO IS NEW FOR OS/VS2 JBB1226.         */
*/*                                                                  */
*/********************************************************************/
*/*A000000-999999                                            @G388PXZ*/
*        %GOTO STKEL2;                 /*
STKX     DSECT                     PREFIX TO STACK ELEMENT POOL EXTENT
STKXTNT  DS    F                   POINTER TO PREVIOUS STKX OR 0
STKXSPAL DS    0F
STKXSPID DS    X                   SUBPOOL OF THIS EXTENT
STKXPLEN DS    FL3                 SIZE OBTAINED FOR THIS EXTENT
STKXLEN  EQU   *-STKX              LENGTH OF STKX
STKE     DSECT                     BEGINNING OF STACK ELEMENT
STKESTKE DC    CL4'STKE'           STKE ACRONYM
STKEHEAD DS    A                   ADDRESS OF POOL HEADER
STKEINFO DS    0D                  STACK INFORMATION FOR PREVIOUS
*                                  STKE (PSASTKE OR XSBSTKE HAS THE
*                                  CORRESPONDING INFORMATION FOR
*                                  THE TOP STKE FOR AN RB OR SRB.)
STKEPTKN DS    H                   TOKEN OF PRIOR ELEMENT
STKEPASD DS    H                   ASID OF PRIOR ELEMENT
STKEPREV DS    A                   ADDRESS OF PRIOR ELEMENT (IF IN
*                                  USE) OR NEXT FREE ELEMENT (IF
*                                  NOT IN USE)
STKEPGMM DS    C                   PROGRAM MASK FROM CALLER'S PSW
STKERSV1 DS    C                   RESERVED
STKEASID DS    H                   ASID OF POOL
STKESA   DS    A                   PREVIOUS SAVE AREA
STKERET  DS    A                   RETURN ADDRESS
STKEPR15 DS    F                   PARAMETER REGISTER 15
STKEPRM0 DS    F                   PARAMETER REGISTER 0
STKEPRM1 DS    F                   PARAMETER REGISTER 1
STKEKEY  DS    0F
STKEREG2 DS    CL3                 BITS 8-31 OF CALLER'S REG 2
STKEKEY2 DS    C                   CALLER'S PSW KEY IN BITS 0-3
STKEKMSK DS    BL2                 CALLER'S PSW KEY MASK (PKM)
STKECASD DS    H                   PASID OF CALLER
STKELPTR DS    A                   LATENT PARAMETER POINTER
STKEEPA  DS    A                   ENTRY POINT ADDRESS
STKEEND  DS    0D                  END OF STKE
STKELEN  EQU   STKEEND-STKE        LENGTH OF STACK ELEMENT
         MEND  ,    */
*%STKEL2 : ;
*DCL
*     1 STKX BASED(STKXPTR),           /* PREFIX TO STACK ELEMENT
*                                         POOL EXTENT                */
*       3 STKXTNT PTR(31),             /* PREVIOUS STKX OR 0         */
*       3 STKXSPAL FIXED(32),
*         5 STKXSPID FIXED(8),         /* SUBPOOL OF THIS EXTENT     */
*         5 STKXPLEN FIXED(24);        /* SIZE OBTAINED FOR THIS
*                                         EXTENT                     */
*DCL
*    1 STKE BASED(STKEPTR) BDY(DWORD), /* BEGINNING OF STACK ELEMENT */
*      3 STKESTKE CHAR(4),             /* STKE ACRONYM               */
*      3 STKEHEAD PTR(31),             /* ADDRESS OF POOL HEADER     */
*      3 STKEINFO CHAR(8) BDY(DWORD),  /* STACK INFORMATION FOR
*                                         PREVIOUS STKE (PSASTKE OR
*                                         XSBSTKE HAS THE CORRESPONDING
*                                         INFORMATION FOR THE TOP STKE
*                                         FOR AN RB OR SRB.)         */
*        5 STKEPTKN FIXED(16) BDY(WORD), /* TOKEN OF PRIOR ELEMENT   */
*        5 STKEPASD BIT(16),           /* ASID OF PRIOR ELEMENT      */
*        5 STKEPREV PTR(31),           /* ADDRESS OF PRIOR ELEMENT (IF
*                                         IN USE) OR NEXT FREE ELEMENT
*                                         (IF NOT IN USE)            */
*      3 STKEPGMM BIT(8) BDY(WORD),    /* PROGRAM MASK FROM PSW OF
*                                         CALLER                     */
*      3 STKERSV1 BIT(8),              /* RESERVED                   */
*      3 STKEASID BIT(16),             /* ASID OF POOL               */
*      3 STKESA   PTR(31),             /* PREVIOUS SAVE AREA         */
*      3 STKERET  PTR(31),             /* RETURN ADDRESS             */
*      3 STKEPR15 FIXED(32),           /* PARAMETER REGISTER 15      */
*      3 STKEPRM0 FIXED(32),           /* PARAMETER REGISTER 0       */
*      3 STKEPRM1 FIXED(32),           /* PARAMETER REGISTER 1       */
*      3 STKEKEY  BIT(32) BDY(WORD),   /*                            */
*        5 STKEREG2 BIT(24),           /* BITS 8-31 OF REG 2 OF
*                                         CALLER                     */
*        5 STKEKEY2 BIT(8),            /* PSW KEY OF CALLER IN BITS
*                                         0-3                        */
*      3 STKEKMSK BIT(16),             /* PSW KEY MASK (PKM) OF
*                                         CALLER                     */
*      3 STKECASD BIT(16),             /* PASID OF CALLER            */
*      3 STKELPTR PTR(31),             /* LATENT PARAMETER POINTER   */
*      3 STKEEPA  PTR(31),             /* ENTRY POINT ADDRESS        */
*      3 STKEEND  CHAR(0) BDY(DWORD);  /* END OF STKE                */
./ ADD NAME=IHASTOW
*  %GOTO STOL1;
         MACRO
         IHASTOW &DSECT=YES
.* /* START OF SPECIFICATIONS ****
.*
.*01  MODULE-NAME = IHASTOW
.*
.*01  COPYRIGHT = NONE
.*
.*01  STATUS = VS2 RELEASE 2 LEVEL 0
.*
.*01  DESCRIPTIVE-NAME = STOW INPUT PARAMETER LIST
.*
.*01  FUNCTION = MAPS THE PARAMETER LIST SUPPLIED TO THE STOW MACRO
.*               BY THE CALLER.
.*
.*01  MODULE-TYPE = MACRO
.*
.*02    MACRO-SIZE = N/A FOR A MAPPING MACRO
.*
.*02    PARAMETER-RECEIVED = DSECT
.*
.*03      TYPE = CHARACTER STRING
.*
.*04        VALUE = YES OR NO
.*
.*01  TABLES = NONE
.*
.*01  INNER-MACROS = NONE
.*
.*01  SYSTEM-MACROS = NONE
.*
.*01  CHANGE-ACTIVITY = SEE BELOW
.*    VS2 RELEASE 2 DELETIONS
.*
.**** END OF SPECIFICATIONS ***/
.*/*
.*/ %STOL1: ;
* /* MACCOMP Y-2 SC1D2/SJD48                                         */
* /* MACSTAT Y-2 73226/021160                                        */
*/********************************************************************/
*/*                                                                  */
*/*      THIS MACRO MAPS THE PARAMETER LIST SUPPLIED TO THE STOW     */
*/*      MACRO BY THE CALLER.                                        */
*/*                                                                  */
*/*      VS2 RELEASE 2, 8/14/73, LEVEL=0                             */
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL  - A USING ON THE DSECT NAME 'STOW' ESTABLISHES       */
*/*               ADDRESSABILITY TO ALL SYMBOLS.                     */
*/*        PL/S - DEFINE A BASE FOR THE STRUCTURE BEFORE REFERENCING */
*/*               ANY SYMBOLS WITHIN IT.                             */
*/*                                                                  */
*/********************************************************************/
* %; /*
.*/ %GOTO STOL2;  /*
         AIF   ('&DSECT' EQ 'NO').STONOD
STOW     DSECT
         AGO   .STOL3
.STONOD  ANOP
STOW     EQU   *
.STOL3   ANOP
*
STONAME  DS    CL8                      NEW NAME FOR ADD.  OLD NAME FOR
*                                       DELETE, CHANGE, OR REPLACE.
STOCHANG DS    0CL8                     NEW NAME FOR CHANGE
STOTTR   DS    XL3                      RELATIVE ADDRESS OF MEMBER
STOCTTRN DS    B                        ALIAS BIT, NUMBER OF TTRN'S,
*                                       AND LENGTH OF USER DATA
STOALIAS EQU   X'80'                    MEMBER IS AN ALIAS NAME
STOTTRNS EQU   X'60'                    NUMBER OF TTRN'S IN THE USER
*                                       DATA AREA.
STODATSZ EQU   X'1F'                    SIZE OF USER DATA AREA IN
*                                       HALF WORDS.
STODATA  DS    CL62                     USER DATA AREA
STOLNGMV EQU   L'STOCHANG+L'STOTTR+L'STOCTTRN  LENGTH OF FIELDS SAVED
*                                       FOR CHANGE OPERATIONS
         MEND ,  */
* %STOL2: ;
*
*DCL 1 STOW BASED,
*      2 STONAME  CHAR(8),              /* NEW NAME FOR ADD.  OLD NAME
*                                       FOR DELETE, CHANGE, REPLACE. */
*      2 STOCHANG CHAR(8),              /* NEW NAME FOR CHANGE       */
*        3 STOTTR   FIXED(24) BDY(BYTE), /* RELATIVE ADDR OF MEMBER  */
*        3 STOCTTRN FIXED(8),           /* ALIAS BIT, NUMBER OF TTRN'S,
*                                       AND LENGTH OF USER DATA.     */
*          4 STODATSZ FIXED(8),         /* SIZE OF USER DATA AREA IN
*                                       HALF WORDS (BITS 3 - 7).     */
*          %STOCLRHI = '''00011111''B';
*            5 STOALIAS BIT(1),         /* MEMBER IS AN ALIAS NAME   */
*            5 STOTTRNS BIT(2),         /* NUMBER OF TTRN'S IN THE
*                                       USER DATA AREA.              */
*        3 STODATA  CHAR(62);           /* USER DATA AREA            */
./ ADD NAME=IHASUMFR
*/********************************************************************/
*/*                                                                  */
*/* MACRO NAME = SUMFRR6W                                            */
*/*                                                                  */
*/* MICROFICHE NAME = IHASUMFR                                       */
*/*                                                                  */
*/* DESCRIPTIVE NAME = SUMMARY DUMP FRR 6 WORD AREA                  */
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1226                                          */
*/*                                                                  */
*/* COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1980,                   */
*/*             LICENSED MATERIAL-PROGRAM,                           */
*/*             PROPERTY OF IBM,                                     */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          */
*/*             G120-2083.                                           */
*/*                                                                  */
*/* FUNCTION = IHASUMFR IS A MAPPING MACRO WHICH MAPS THE            */
*/*     FRR 6 WORD ARE FOR SUMMARY DUMP MODULES.                     */
*/*                                                                  */
*/* METHOD OF ACCESS=                                                */
*/*   PLS/3- INCLUDE IHASUMFR FROM SYSLIB.                           */
*/*                                                                  */
*/* SIZE = DECIMAL 24, X'18'                                         */
*/*                                                                  */
*/********************************************************************/
*/*000000-999999                                             @G38EP1U*/
   DCL 1 SUMFRR6W BASED,          /*MAP THE 6 WORD FRR WORK AREA     */
         2 SUMFRRF1 CHAR(1),      /*FIRST BYTE OF FLAGS              */
           3 SUMFRRDS BIT(1),     /*1=SUMMARY DUMP RUNNING DISABLED  */
           3 SUMFRRRF BIT(1),     /*1=SUMMARY DUMP OBTAINED REAL FRMS*/
           3 SUMFRRSL BIT(1),     /*1=SUMMARY DUMP OBTAINED SALLOC   */
           3 SUMFRRDP BIT(1),     /*1=DUPLICATE REGISTER FOUND       */
           3 SUMFRRLR BIT(1),     /*1=LAST STORAGE RANGE DUMPED      */
           3 SUMFRRPL BIT(1),     /*USER PARAMETER LIST BEING
                                    REFERENCED                       */
           3 SUMFRRST BIT(1),     /*STEAL BACK ROUTINE INVOKED       */
           3 SUMFRRCM BIT(1),     /*1=CMSET PERFORMED SUCCESSFULLY   */
         2 SUMFRRF2 CHAR(1),      /*SECOND BYTE OF FLAGS             */
           3 SUMFRRLL BIT(1),     /*1=LOCAL LOCK WAS OBTAINED        */
           3 SUMFRRNR BIT(1),     /*1=DO NOT REQUEST RECORDING       */
           3 SUMFRRRE BIT(1),     /*1=RETRY IN THE CROSS MEMORY MODE
                                      AT THE TIME OF THE ERROR       */
           3 SUMFRRSW BIT(1),     /*1=ENTERED STOP WINDOW    @ZMB0789*/
         2 SUMFRRF3 CHAR(2),      /*RESERVED                         */
         2 SUMFRRFB PTR(31),      /*RECOVERY ROUTINE BASE REGISTER   */
         2 SUMFRRRB PTR(31),      /*RETRY POINT BASE REGISTER VALUE  */
         2 SUMFRRSA PTR(31),      /*SAVE AREA ADDRESS FOR CALLER     */
         2 SUMFRRRT PTR(31),      /*RETRY LOCATION ADDRESS           */
         2 SUMFRRMS PTR(31);      /*SAVE AREA FOR MODULES TO USE     */
./ ADD NAME=IHASVC
*        %GOTO PLSSVC;                                               /*
         MACRO
         IHASVC
SVCENTRY DSECT
SVCEP    DS    A                       SVC ENTRY POINT ADDRESS
SVCATTR1 DS    H                       ATTRIBUTES
SVCTP1   EQU   X'00'                   TYPE 1 SVC
SVCTP2   EQU   X'80'                   TYPE 2 SVC
SVCTP34  EQU   X'C0'                   TYPE 3 OR 4 SVC
SVCTP6   EQU   X'20'                   TYPE  6 SVC             @Z40FPYK
SVCAPF   EQU   X'08'                   APF AUTHORIZED 1-AUTHORIZED
SVCESR   EQU   X'04'                   SVC IS A PART OF THE ESR
SVCNP    EQU   X'02'                   NON-PREEMPTIVE SVC      @Z40FPYK
SVCLOCKS DS    H                       LOCK ATTRIBUTES
SVCLL    EQU   X'80'                   LOCAL LOCK NEEDED
SVCCMS   EQU   X'40'                   CMS LOCK NEEDED
SVCOPT   EQU   X'20'                   OPT LOCK NEEDED
SVCALLOC EQU   X'10'                   SALLOC LOCK NEEDED
SVCDISP  EQU   X'08'                   DISP LOCK NEEDED
         MEND ,                                                      */
*%PLSSVC : ;
*DECLARE                               /* SVC TABLE ENTRY            */
*  1 SVCENTRY BASED,
*    2 SVCEP PTR(31),                  /* SVC ENTRY POINT ADDRESS    */
*    2 SVCATTR1 BIT(16),               /* ATTRIBUTES                 */
*      3 * BIT(4),                     /* TYPE BITS                  */
*      3 SVCAPF BIT(1),                /* APF AUTHORIZED 1-AUTHORIZED*/
*      3 SVCESR BIT(1),                /* SVC IS A PART OF THE ESR   */
*      3 SVCNP BIT(1),                 /* NON-PREEMPTIVE SVC @Z40FPYK*/
*      3 * BIT(9),                     /* RESERVED           @Z40FPYK*/
*    2 SVCATTR2 BIT(16),               /* LOCK ATTRIBUTES            */
*      3 SVCLL BIT(1),                 /* LOCAL LOCK NEEDED          */
*      3 SVCCMS BIT(1),                /* CMS LOCK NEEDED            */
*      3 SVCOPT BIT(1),                /* OPT LOCK NEEDED            */
*      3 SVCALLOC BIT(1),              /* SALLOC LOCK NEEDED         */
*      3 SVCDISP BIT(1),               /* DISP LOCK NEEDED           */
*      3 * BIT(11);                    /* RESERVED                   */
* DECLARE SVCLOCKS BIT(16) DEF(SVCATTR2); /* LOCK ATTRIBUTES @Z40FPYK*/
*%DECLARE SVCTP1 CHAR;                 /* TYPE 1 SVC                 */
*% SVCTP1 = '''00''X';                 /* TYPE 1 SVC         @Z40FPYK*/
*%DECLARE SVCTP2 CHAR;                 /* TYPE 2 SVC                 */
*% SVCTP2 = '''80''X';                 /* TYPE 2 SVC         @Z40FPYK*/
*%DECLARE SVCTP34 CHAR;                /* TYPE 3 OR 4 SVC            */
*% SVCTP34 = '''C0''X';                /* TYPE 3 OR 4 SVC    @Z40FPYK*/
*%DECLARE SVCTP6 CHAR;                 /* TYPE 6 SVC         @Z40FPYK*/
*% SVCTP6 = '''20''X';                 /* TYPE 6 SVC         @Z40FPYK*/
./ ADD NAME=IHATQE
*        %GOTO TQEPLS1;                                              /*
         MACRO
         IHATQE
*                                                                   */
*%TQEPLS1 : ;
* /*******************************************************************/
* /*                                                                 */
* /* MACCOMP        OS/VS2,RELEASE 4   SC1CV/PZD81                   */
* /*                                                                 */
* /* MACSTAT        OS/VS2,RELEASE 4   73090/Y02759                  */
* /*                                                                 */
* /* MACMEAN        TQE MEANS TIMER QUEUE ELEMENT                    */
* /*                                                                 */
* /*******************************************************************/
*         %GOTO TQEPLS2;                                             /*
TQE      DSECT ,TQEPTR                 TIMER QUEUE ELEMENT
         DS    0D
TQETQE   DS    CL4                     TQE IDENTIFICATION
TQEFLNK  DS    AL4(0)                  ADDRESS OF NEXT TQE
TQEBLNK  DS    AL4(0)                  ADDRESS OF PREVIOUS TQE
TQEAID   DS    H                       REQUESTORS ASID
TQEFLGS  DS    BL1                     TQE FLAG BYTE 1
TQEOFF   EQU   X'80'                   TQE IS OFF TIMER QUEUE
TQETOD   EQU   X'40'                   TOD OPTION SPECIFIED
TQEWLIM  EQU   X'10'                   WAIT LIMIT EXCEEDED
TQEINCOM EQU   X'08'                   INTERVAL IS COMPLETE
TQEXITSP EQU   X'04'                   AN EXIT WAS SPECIFIED
TQETYPE  EQU   X'03'                   TQE TYPE     00=TASK TYPE
*                                                   01=WAIT TYPE
*                                                   11=REAL TYPE
TQEFLGS2 DS    BL1                     TQE FLAG BYTE 2
TQECOMP  EQU   X'80'                   REAL TQE IS BEING TIMED
TQEUSER  EQU   X'40'                   NON SYSTEM TQE
TQECRH   EQU   X'20'                   CHNL RECONFIG HDWE TQE  @ZM30496
TQEDUM   EQU   X'10'                   DUMMY SYSTEM TQE
TQELM    EQU   X'08'                   TIME LIMIT CHECKING SYSTEM TQE
TQEOPT   EQU   X'04'                   SYSTEM RESOURCES MANAGER TQE
TQEMF1   EQU   X'02'                   MF/1 SYSTEM TQE
TQEMIDN  EQU   X'01'                   MIDNIGHT SYSTEM TQE
TQEVAL   DS    2F                      EXPIRATION TIME OR TIME LEFT
TQESADDR DS    AL4(0)                  ADDRESS OF PP SAVE AREA
TQEEXIT  DS    AL4(0)                  ADDRESS OF USER EXIT RTN
TQEECB   EQU   TQEEXIT                 ECB IF WAIT TYPE TQE
TQETCB   DS    AL4(0)                  ADDRESS OF USER TCB
TQEASCB  DS    AL4(0)                  ADDRESS OF USER ASCB
TQELHPSW DS    F                       FIRST WORD OF CURRENT PSW
TQESRB   DS    CL44                    SRB
         ORG   TQESRB                  REGISTERS 2-12 FOR      @Z40FPYB
TQEDREGS DS    11F                     DIE ENTRY.              @Z40FPYB
TQEFLGS3 DS    BL1                     TQE FLAG BYTE 3         @Z40FPYB
TQEDIE   EQU   X'80'                   DIE TQE                 @Z40FPYB
         DS    CL27                    RESERVED
TQERSAVE DS    F                       REG SAVE AREA -SETDIE   @Z40FPYB
TQESTCK  DS    2F                      STCK AREA FOR SETDIE    @Z40FPYB
TQESTCKL EQU   TQESTCK                 STCK AREA-LEFT HALF     @Z40FPYB
TQESTCKR EQU   TQESTCK+4               STCK AREA-RIGHT HALF    @Z40FPYB
TQEEND   DS    0C                      END OF TQE
TQELEN   EQU   TQEEND-TQE              LENGTH OF TQE
         MEND  , */
*%TQEPLS2 :     ;
*DECLARE
*  1 TQE   BASED(TQEPTR) BDY(DWORD),   /* TIMER QUEUE ELEMENT        */
*    3 TQETQE  CHAR(4) BDY(WORD),      /* TQE IDENTIFICATION         */
*    3 TQEFLNK POINTER(31),       /* ADDRESS OF NEXT TQE             */
*    3 TQEBLNK POINTER(31),       /* ADDRESS OF PREVIOUS TQE         */
*    3 TQEAID  FIXED(16) UNSIGNED,     /* REQUESTORS ASID            */
*    3 TQEFLGS BIT(8),            /* TQE FLAG BYTE 1                 */
*      5 TQEOFF   BIT(1),         /* TQE IS OFF TIMER QUEUE          */
*      5 TQETOD   BIT(1),         /* TOD OPTION SPECIFIED            */
*      5 *        BIT(1),         /* RESERVED                        */
*      5 TQEWLIM  BIT(1),         /* WAIT LIMIT EXCEEDED             */
*      5 TQEINCOM BIT(1),         /* INTERVAL IS COMPLETE            */
*      5 TQEXITSP BIT(1),         /* AN EXIT WAS SPECIFIED           */
*      5 TQETYPE  BIT(2),         /* TQE TYPE  00=TASK REQUEST
*                                              01=WAIT REQUEST
*                                              11=REAL REQUEST       */
*    3 TQEFLGS2 BIT(8),           /* TQE FLAG BYTE 2                 */
*      5 TQECOMP  BIT(1),         /* REAL TQE IS BEING TIMED         */
*      5 TQEUSER  BIT(1),         /* NON SYSTEM TQE                  */
*      5 TQECRH   BIT(1),         /* CHNL RECONFIG HDWE TQE  @ZM30496*/
*      5 TQEDUM   BIT(1),         /* DUMMY SYSTEM TQE                */
*      5 TQELM    BIT(1),         /* TIME LIMIT CHECKING SYSTEM TQE  */
*      5 TQEOPT   BIT(1),         /* SYSTEM RESOURCES MANAGER TQE    */
*      5 TQEMF1   BIT(1),         /* MF/1 SYSTEM TQE                 */
*      5 TQEMIDN  BIT(1),         /* MIDNIGHT SYSTEM TQE             */
*    3 TQEVAL   BIT(64) BDY(DWORD),    /* EXPIRATION TIME/TIME LEFT  */
*      5 TQEVALLH  FIXED(32) UNSIGNED,
*      5 TQEVALRH  FIXED(32) UNSIGNED,
*    3 TQESADDR POINTER(31),           /* ADDRESS OF PP SAVE AREA    */
*    3 TQEEXIT  POINTER(31),           /* ADDRESS OF USER EXIT RTN   */
*    3 TQETCB   POINTER(31),           /* ADDRESS OF USER TCB        */
*    3 TQEASCB  POINTER(31),           /* ADDRESS OF USER ASCB       */
*    3 TQELHPSW FIXED(32) UNSIGNED,    /* FIRST WORD OF CURRENT PSW  */
*    3 TQESRB   CHAR(44) BDY(WORD),    /* SRB                        */
*      5 TQEDREGS(11) FIXED(32),      /* DIE REGS 2-12       @Z40FPYB*/
*    3 TQEFLGS3 BIT(8),               /* TQE FLAG BYTE 3     @Z40FPYB*/
*      5 TQEDIE    BIT(1),            /* DIE TQE             @Z40FPYB*/
*      5 *         BIT(7),            /* RESERVED            @Z40FPYB*/
*    3 *        CHAR(27),              /* RESERVED                   */
*    3 TQERSAVE FIXED(32),             /* REG SAVE -SETDIE   @Z40FPYB*/
*    3 TQESTCK  BIT(64) BDY(DWORD),     /* STCK AREA-SETDIE  @Z40FPYB*/
*      5 TQESTCKL  BIT(32),             /* STCK AREA-LEFT    @Z40FPYB*/
*      5 TQESTCKR  BIT(32);             /* STCK AREA-RIGHT   @Z40FPYB*/
*DECLARE TQEECB DEFINED(TQEEXIT)
*        FIXED(32) UNSIGNED;        /* ECB IF WAIT TYPE TQE       */
./ ADD NAME=IHAVCB
*        %GOTO VCBPLS;                                              /*
         MACRO
         IHAVCB &DSECT=YES
         AGO   .VCBBIT         DO NOT GENERATE PROLOGUE
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0                                                   *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR VCB                                            *
* ENTRY POINTS -                                                      *
*     IHAVCB MACRO CALL                                               *
* INPUT -                                                             *
*    SEE IHAVCB MACRO DEFINITION                                      *
* OUTPUT -                                                            *
*    VCB MAPPING MACRO                                                *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.VCBBIT  ANOP
         IEZBITS , -           DEFINE BITS
***********************************************************************
**                          VIO CONTROL BLOCK     4/11/75   @Z40WPYD *
**                                                                    *
**                                                                    *
**       THE VCB IS A PARAMETER LIST USED BY THE VIRTUAL BLOCK        *
**       PROCESSOR WHEN CALLING VIO SERVICES INTERFACE. EACH VCB      *
**       DEFINES WHAT FUNCTIONS ARE TO BE PERFORMED BY RSM FOR A      *
**       SINGLE VIRTUAL ADDRESS PAGE.                                 *
***********************************************************************
         AIF   ('&DSECT' EQ 'YES').VCB001 DOES USER WANT DSECT
VCB      DS    0F
         AGO   .VCB002         BRANCH AROUND DSECT
.VCB001  ANOP                  GEN THE DSECT
VCB      DSECT , VCBPTR
.VCB002  ANOP
VCBLINK  DS    AL4 -           VIRTUAL ADDR. OF NEXT VCB IN A
*                              CHAINED REQUEST
VCBVSA   DS    AL4 -           VIRTUAL ADDR. OF A PAGE IN THE VIO
*                              WINDOW. THIS PAGE IS THE SOURCE PAGE
*                              FOR A MOVE-OUT OR THE TARGET ADDRESS
*                              FOR AN ASSIGN
VCBLPID  DS    CL8 -           THE LPID USED TO REQUEST A PAGE-OUT
VCBOPFLG DS    BL1 -           OPERATION FLAGS
VCBMVOUT EQU   BIT0 -          DENOTES A MOVE-OUT IS TO BE PERFORMED
VCBRSV1  EQU   BIT1 -          RESERVED
VCBASIGN EQU   BIT2 -          DENOTES AN ASSIGN IS TO BE PERFORMED
VCBINSTG EQU   BIT3 -          THE REAL FRAME ASSIGNED TO A DATA SET
*                              PAGE REMAINS ASSIGNED TO THAT PAGE
*                              AFTER THE PAGE HAS BEEN REMOVED FROM
*                              THE VIRTUAL WINDOW AND COPIED TO
*                              AUX. STORAGE. THIS FLAG VALID ONLY IF
*                              VCBMVOUT=1.
*                              THIS FLAG IS VALID ONLY IF VCBMVOUT=1.
VCBNDISC EQU   BIT4 -          THE DATA SET PAGE WILL NOT BE REMOVED
*                              FROM ITS FRAME WHEN THE PAGE-OUT
*                              COMPLETES. VALID ONLY IF VCBMVOUT=1.
VCBLOAD  EQU   BIT5 -          A PGLOAD WILL BE MADE UPON COMPLETION
*                              OF THE ASSIGN FUNCTION. VALID ONLY
*                              IF VCBASIGN=1.
VCBRSV2  EQU   BIT6 -          RESERVED
VCBRSV3  EQU   BIT7 -          RESERVED
VCBCPFLG DS    BL1 -           COMPLETION FLAGS
VCBNOVAC EQU   BIT0 -          IF VCBASIGN=1 AND THE PGTE FOR VCBVSA
*                              IS NOT ZERO, AN ERROR HAS OCCURRED. A
*                              MOVE-OUT WAS NOT REQUESTED FOR THE VSA
*                              IN ERROR.
VCBINVSA EQU   BIT1 -          VCBVSA DOES NOT CONTAIN A VALID VSA
VCBELPID EQU   BIT2 -          AN UNEXPECTED LPID WAS RECEIVED BY
*                              THE MOVE-OUT PROCESSOR.
VCBNOAUX EQU   BIT3 -          FOR A MOVE-OUT, NO AUX. STORAGE
*                              EXISTED OR WAS CREATED AND NO REAL
*                              STORAGE EXISTED FROM WHICH TO PAGE-OUT.
VCBEFIX  EQU   BIT4 -          MOVE-OUT REQUESTED FOR A FIXED PAGE.
VCBRSN   DS    AL2 -           THE RSN TO BE SAVED BY VIO WHEN
*                              VCBINSTG=1.
VCBDSPID DS    CL4 -           THE DATA SET PAGE ID USED WHEN
*                              ATTEMPTING VIO RECLAIM.
VCBEND   DS    0C -            END OF VIO CONTROL BLOCK
VCBLEN   EQU   VCBEND-VCB -    LENGTH OF VIO CONTROL BLOCK
         MEND  , */
*%VCBPLS :  ;
* /*******************************************************************/
* /*                        VIO CONTROL BLOCK     4/11/75   @Z40WPYD */
* /*                                                                 */
* /*                                                                 */
* /*     THE VCB IS A PARAMETER LIST USED BY THE VIRTUAL BLOCK       */
* /*     PROCESSOR WHEN CALLING VIO SERVICES INTERFACE. EACH VCB     */
* /*     DEFINES WHAT FUNCTIONS ARE TO BE PERFORMED BY RSM FOR A     */
* /*     SINGLE VIRTUAL ADDRESS PAGE.                                */
* /*******************************************************************/
*      %IF VCB9999^=','             /* IS BLOCK PART OF STRUCTURE    */
*          %THEN %VCB9999=';';      /* NO, END BLOCK NORMALLY        */
*      %IF VCBLEVEL^=''             /* INITIAL LEVEL NUMBER GIVEN    */
*          %THEN %GOTO VCBPLS1;     /* YES THEN DO NOT GEN 1 LEVEL   */
*DECLARE
*  1 VCB BASED(VCBPTR)
*      %GOTO VCBPLS2;               /*SKIP USER-GIVEN LEVEL          */
*%VCBPLS1: VCBDUM=VCBLEVEL' VCB';
*  VCBDUM
*%VCBPLS2:;
*    BDY (WORD),
*    4 VCBLINK PTR(31),             /* VIRTUAL ADDR OF NEXT VCB IN A
*                                      CHAINED REQUEST               */
*    4 VCBVSA PTR(31),              /* VIRTUAL ADDR. OF A PAGE IN
*                                      THE VIO WINDOW. THE PAGE IS
*                                      THE SOURCE PAGE FOR A MOVE-OUT
*                                      OR THE TARGET PAGE FOR AN
*                                      ASSIGN.                       */
*    4 VCBLPID CHAR(8),             /* THE LPID USED TO REQUEST A
*                                      PAGE-OUT.                     */
*    4 VCBOPFLG BIT(8),             /* OPERATION FLAGS               */
*      8 VCBMVOUT BIT(1),           /* WHEN 1, A MOVE-OUT IS
*                                      REQUESTED.                    */
*      8 VCBRSV1 BIT(1),            /* RESERVED                      */
*      8 VCBASIGN BIT(1),           /* WHEN 1, AN ASSIGN IS REQUESTED*/
*      8 VCBINSTG BIT(1),           /* WHEN 1, THE REAL FRAME
*                                      ASSIGNED TO A DATA SET PAGE
*                                      REMAINS ASSIGNED TO THAT PAGE
*                                      AFTER THE PAGE HAS BEEN REMOVED
*                                      FROM THE VIRTUAL WINDOW AND
*                                      COPIED TO AUX. STORAGE. THIS
*                                      FLAG IS VALID ONLY IF
*                                      VCBMVOUT=1.                   */
*      8 VCBNDISC BIT(1),           /* THE DATA SET PAGE WILL NOT BE
*                                      REMOVED FROM ITS FRAME WHEN
*                                      THE PAGE-OUT COMPLETES. VALID
*                                      ONLY IF VCBMVOUT=1.           */
*      8 VCBLOAD BIT(1),            /* A PGLOAD WILL BE MADE UPON
*                                      COMPLETION OF THE ASSIGN
*                                      FUNCTION. VALID ONLY IF
*                                      VCBASIGN=1.                   */
*      8 VCBRSV2 BIT(1),            /* RESERVED                      */
*      8 VCBRSV3 BIT(1),            /* RESERVED                      */
*    4 VCBCPFLG BIT(8),             /* COMPLETION FLAGS              */
*      8 VCBNOVAC BIT(1),           /* IF VCBASIGN=1 AND THE PGTE FOR
*                                      VCBVSA IS NOT ZERO, AN ERROR
*                                      HAS OCCURRED. A MOVE-OUT WAS
*                                      NOT REQUESTED FOR THE VSA IN
*                                      ERROR.                        */
*      8 VCBINVSA BIT(1),           /* VCBVSA DOES NOT CONTAIN A
*                                      VALID VSA.                    */
*      8 VCBELPID BIT(1),           /* AN UNEXPECTED LPID WAS RECEIVED
*                                      BY THE MOVE-OUT PROCESSOR.    */
*      8 VCBNOAUX BIT(1),           /* FOR A MOVE-OUT, NO AUX.
*                                      STORAGE EXISTED OR WAS CREATED
*                                      AND NO REAL STORAGE EXISTED
*                                      FROM WHICH TO PAGE-OUT.       */
*      8 VCBEFIX BIT(1),            /* MOVE-OUT REQUESTED FOR A FIXED
*                                      PAGE                          */
*      8 * BIT(1),                  /* RESERVED                      */
*      8 * BIT(1),                  /* RESERVED                      */
*      8 * BIT(1),                  /* RESERVED                      */
*    4 VCBRSN FIXED(16),            /* THE REAL STORAGE NUMBER TO BE
*                                      SAVED BY VIO WHEN VCBINSTG=1. */
*    4 VCBDSPID CHAR(4) VCB9999     /* THE DATA SET ID USED WHEN
*                                      ATTEMPTING VIO RECLAIM.       */
*     %VCBLEN='LENGTH(VCB)';        /* LENGTH OF VCB                 */
./ ADD NAME=IHAVSL
*        %GOTO VSLPLS;                                               /*
         MACRO
         IHAVSL &DSECT=YES
         AGO   .VSLBIT         DO NOT GENERATE PROLOGUE
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0                                                   *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR VSL                                            *
* ENTRY POINTS -                                                      *
*     IHAVSL MACRO CALL                                               *
* INPUT -                                                             *
*    SEE IHAVSL MACRO DEFINITION                                      *
* OUTPUT -                                                            *
*    VSL MAPPING MACRO                                                *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.VSLBIT  ANOP
         IEZBITS , -           DEFINE BITS
***********************************************************************
**                     VIRTUAL SUBAREA LIST ENTRY     9/27/72         *
**                                                                    *
**                                                                    *
**   A VIRTUAL SUBAREA LIST IS THE PARAMETER LIST TO PSI WHICH        *
**   DESCRIBES A VIRTUAL SUBAREA THAT IS TO BE PROCESSED AND WHAT     *
**   PROCESSING IS TO BE DONE.                                        *
***********************************************************************
         AIF   ('&DSECT' EQ 'YES').VSL001 DOES USER WANT DSECT
VSL      DS    0F
         AGO   .VSL002         BRANCH AROUND DSECT
.VSL001  ANOP                  GEN THE DSECT
VSL      DSECT , VSLPTR
.VSL002  ANOP                  GEN MAPPING MACRO
VSLSTRT  DS    0A -            FULL WORD REFERENCE TO VSLSTRTA
VSLFLAG1 DS    BL1 -           FIRST FLAG FIELD
VSLCONT  EQU   BIT0 -          CONTINUATION FLAG.  IF ON, VSLSTRTA
*                              POINTS TO THE NEXT VSL ENTRY. OTHERWISE,
*                              THIS IS A NORMAL VSL.
VSLFIX   EQU   BIT1 -          PGFIX OPTION FLAG
VSLFREE  EQU   BIT2 -          PGFREE OPTION FLAG
VSLOAD   EQU   BIT3 -          PGLOAD OPTION FLAG
VSLRLS   EQU   BIT4 -          PGRLSE OPTION FLAG
VSLRSV1  EQU   BIT5 -          RESERVED
VSLONG   EQU   BIT6 -          LONG-TERM FIX OPTION FLAG FOR PGFIX
VSLRSV2  EQU   BIT7 -          RESERVED
VSLSTRTA DS    AL3 -           START ADDRESS OF THE VIRTUAL SUBAREA
*                              TO BE PROCESSED
VSLEND   DS    0A -            FULL WORD REFERENCE FOR VSLENDA
VSLFLAG2 DS    BL1 -           SECOND FLAG FIELD
VSLAST   EQU   BIT0 -          LAST ENTRY IN LIST OF REQUESTS FLAG
VSLNULL  EQU   BIT1 -          NULL ENTRY FLAG.  IF ON, INDICATES
*                              THAT THE ENTRY IS TO BE IGNORED.
VSLRAO   EQU   BIT2 -          REAL ADDRESS OPTION FLAG.  IF ON,
*                              THE REAL STORAGE ADDRESS ASSIGNED TO
*                              THE VIRTUAL AREA WILL BE STORED IN
*                              VSLENDA. NOT SUPPORTED IN VS2/2.
VSLERR   EQU   BIT3 -          ERROR FLAG FOR UNDEFINED VIRTUAL SPACE.
VSLRSV3  EQU   BIT4 -          RESERVED
VSLPGOUT EQU   BIT5 -          PERFORM A PAGE-OUT OPERATION
VSLKEPRL EQU   BIT6 -          KEEP REAL FRAME AFTER PAGE-OUT
VSLEXTRS EQU   BIT7 -          RESERVED FOR EXPANSION
VSLEND1A DS    AL3 -           END ADDRESS PLUS 1 OF THE VIRTUAL
*                              SUBAREA DESCRIBED BY THIS ENTRY.
VSLENDPT DS    0C -            END OF VIRTUAL SUBAREA LIST ENTRY
VSLLEN   EQU   VSLENDPT-VSL -  LENGTH OF VSL ENTRY
         MEND  , */
*%VSLPLS  :  ;
* /*******************************************************************/
* /*                   VIRTUAL SUBAREA LIST ENTRY     9/27/72        */
* /*                                                                 */
* /*                                                                 */
* /* A VIRTUAL SUBAREA LIST IS THE PARAMETER LIST TO PSI WHICH       */
* /* DESCRIBES A VIRTUAL SUBAREA THAT IS TO BE PROCESSED AND WHAT    */
* /* PROCESSING IS TO BE DONE.                                       */
* /*******************************************************************/
*      %IF VSL9999^=','             /* IS BLOCK PART OF STRUCTURE    */
*          %THEN %VSL9999=';';      /* NO, SET UP NORMAL END         */
*      %IF VSLLEVEL^=''             /* DID USER SUPPLY LEVEL NUMBER  */
*          %THEN %GOTO VSLPLS1;     /* YES, DO NOT GEN 1 LEVEL       */
*DECLARE
*  1 VSL BASED(VSLPTR)
*      %GOTO VSLPLS2;               /* SKIP GEN FOR USER-GIVEN LEVEL */
* %VSLPLS1: VSLDUM=VSLLEVEL' VSL'; /* SET UP USER-SUPPLIED LEVELS  */
*  VSLDUM
* %VSLPLS2:;
*      BDY(WORD),
*    4 VSLSTRT PTR(31),             /* FULL WORD REFERENCE TO
*                                      VSLSTRTA.                     */
*      8 VSLFLAG1 BIT(8),           /* FIRST FLAG FIELD              */
*        12 VSLCONT BIT(1),         /* CONTINUATION FLAG. IF ON,
*                                      VSLSTRTA POINTS TO THE NEXT
*                                      VSL ENTRY. OTHERWISE, THIS IS
*                                      A NORMAL VSL.                 */
*        12 VSLFIX BIT(1),          /* PGFIX OPTION FLAG             */
*        12 VSLFREE BIT(1),         /* PGFREE OPTION FLAG            */
*        12 VSLOAD BIT(1),          /* PGLOAD OPTION FLAG            */
*        12 VSLRLS BIT(1),          /* PGRLSE OPTION FLAG            */
*        12 VSLRSV1 BIT(1),         /* RESERVED                      */
*        12 VSLONG BIT(1),          /* LONG-TERM FIX OPTION FLAG FOR
*                                      PGFIX.                        */
*        12 VSLRSV2 BIT(1),         /* RESERVED                      */
*      8 VSLSTRTA PTR(24),          /* START ADDRESS OF THE VIRTUAL
*                                      SUBAREA DESCRIBED BY THIS
*                                      ENTRY.                        */
*    4 VSLEND PTR(31),              /* FULL WORD REFERENCE FOR
*                                      VSLENDA.                      */
*      8 VSLFLAG2 BIT(8),           /* SECOND FLAG FIELD             */
*        12 VSLAST BIT(1),          /* LAST ENTRY IN LIST OF REQUESTS*/
*        12 VSLNULL BIT(1),         /* NULL ENTRY FLAG. IF ON,
*                                      INDICATES THAT THE ENTRY IS TO
*                                      BE IGNORED.                   */
*        12 VSLRAO BIT(1),          /* REAL ADDRESS OPTION FLAG.
*                                      IF ON, THE REAL STORAGE ADDRESS
*                                      ASSIGNED TO THE VIRTUAL AREA
*                                      WILL BE STORED IN VSLENDA.
*                                      NOT SUPPORTED IN VS2/2.       */
*        12 VSLERR BIT(1),          /* ERROR FLAG FOR UNDEFINED
*                                      VIRTUAL SPACE.                */
*        12 VSLRSV3 BIT(1),         /* RESERVED                      */
*        12 VSLPGOUT BIT(1),        /* PERFORM A PAGEOUT OPERATION   */
*        12 VSLKEPRL BIT(1),        /* KEEP REAL FRAME AFTER PAGEOUT */
*        12 VSLEXTRS BIT(1),        /* RESERVED FOR EXPANSION        */
*      8 VSLEND1A PTR(24) VSL9999   /* END ADDRESS PLUS 1 OF THE
*                                      VIRTUAL SUBAREA DESCRIBED BY
*                                      THIS ENTRY.                   */
*      %VSLLEN='LENGTH(VSL)';       /*GET LENGTH OF THE VSL          */
./ ADD NAME=IHAWNDPL
*         %GOTO WNDPLPLS;                                          /*
          MACRO
          IHAWNDPL &DSECT=YES
          IEZBITS
          AGO   .WNDLAB1
***********************************************************************
*                                                                     *
* COPYRIGHT =                                                         *
*    5740-XYN COPYRIGHT IBM CORP. 1981,                               *
*    LICENSED MATERIAL-PROGRAM,                                       *
*    PROPERTY OF IBM,                                                 *
*    REFER TO COPYRIGHT INSTRUCTIONS FORM G120-2083                   *
*                                                                     *
* STATUS = OS/VS2 JBB1326                                             *
*    $L0= EXTREAL, JBB1326, 800508, PD17:  EXTENDED REAL ENHANCEMENT  *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR RSM WINDOW SERVICE ROUTINE PARAMETER LIST      *
* ENTRY POINTS -                                                      *
*    IHAWNDPL MACRO CALL                                              *
* INPUT -                                                             *
*    NONE                                                             *
* OUTPUT -                                                            *
*    IHAWNDPL MAPPING MACRO                                           *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
***********************************************************************
.WNDLAB1 ANOP
***********************************************************************
**                                                                   **
**            WINDOW SERVICE ROUTINE PARAMETER LIST                  **
**                                                                   **
**                         3/12/80                                   **
**                                                                   **
**       THE WINDOW SERVICE ROUTINE PARAMETER LIST IS THE PARAMETER  **
**       LIST THAT IS INPUT TO THE WINDOW SERVICE ROUTINE (MODULE    **
**       IEAVWND) AND IS INPUT TO THE EXIT ROUTINE                   **
**                                                                   **
***********************************************************************
         AIF ('&DSECT' EQ 'NO').WNDLAB2
WNDPL    DSECT , WNDPLPTR
         AGO   .WNDLAB3
.WNDLAB2 ANOP
WNDPL    DS    0F
.WNDLAB3 ANOP
WNDPLRA1 DS    A -       REAL ADDRESS OF FIRST FRAME TO BE ADDRESSED
*                        DAT-OFF
WNDPLRA2 DS    A -       REAL ADDRESS OF SECOND FRAME TO BE ADDRESSED
*                        DAT-OFF, OR ZERO IF ONLY ONE FRAME IS TO BE
*                        ADDRESSED DAT-OFF
WNDPLEXT DS    A -       VIRTUAL ADDRESS OF THE EXIT ROUTINE
WNDPLVA1 DS    A -       VIRTUAL ADDRESS ASSOCIATED WITH THE REAL
*                        ADDRESS FROM WNDPLRA1. THIS FIELD IS NOT USED
*                        FOR INPUT TO THE WINDOW SERVICE ROUTINE
*                        (IEAVWND), BUT IS WRITTEN INTO BY THE WINDOW
*                        SERVICE ROUTINE FOR INPUT TO THE EXIT ROUTINE.
WNDPLVA2 DS    A -       VIRTUAL ADDRESS ASSOCIATED WITH THE REAL
*                        ADDRESS FROM WNDPLRA2, OR UNCHANGED FROM INPUT
*                        TO THE WINDOW SERVICE ROUTINE IF ONLY ONE
*                        REAL ADDRESS WAS INPUTTED TO THE WINDOW
*                        SERVICE ROUTINE. THIS FIELD IS NOT USED FOR
*                        INPUT TO THE WINDOW SERVICE ROUTINE (IEAVWND),
*                        BUT IS WRITTEN INTO BY THE WINDOW SERVICE
*                        ROUTINE FOR INPUT TO THE EXIT ROUTINE.
WNDRA1KY DS    CL1 -     RESERVED - NOT USED FOR INPUT TO IEAVWND.
*                        THE STORAGE KEY ASSOCIATED WITH THE FIRST
*                        INPUT REAL ADDRESS.
WNDRA2KY DS    CL1 -     RESERVED - NOT USED FOR INPUT TO IEAVWND.
*                        THE STORAGE KEY ASSOCIATED WITH THE SECOND
*                        INPUT REAL ADDRESS.
WNDRSVD  DS    CL2 -     RESERVED
WNDLEN   EQU   *-WNDPL - LENGTH OF THE WINDOW SERVICE ROUTINE PARM LIST
         MEND  ,                                                    */
*  %WNDPLPLS : ;
* /******************************************************************/
* /*                                                                */
* /*            WINDOW SERVICE ROUTINE PARAMETER LIST               */
* /*                         3/12/80                                */
* /*                                                                */
* /*         THE WINDOW SERVICE ROUTINE PARAMETER LIST IS THE       */
* /*         PARAMETER LIST THAT IS INPUT TO THE WINDOW SERVICE     */
* /*         ROUTINE (MODULE IEAVWND) AND IS INPUT TO THE EXIT      */
* /*         ROUTINE                                                */
* /*                                                                */
* /******************************************************************/
*          %IF WND9999 ^= ','           /* IF THIS IS LAST BLOCK    */
*            %THEN %WND9999 = ';';      /* THEN CLOSE DCL STATEMENT */
*          %IF WNDLEVEL ^= ''           /* IF THIS IS CONCATENATED  */
*            %THEN %GOTO WNDPLS1;       /* THEN SKIP DCL            */
*DCL 1 WNDPL BASED (WNDPLPTR)           /* DECLARE WNDPL LEVEL 1    */
*          %GO TO WNDPLS2;              /* AND SKIP LEVEL TWO DCL   */
*%WNDPLS1: WNDDUM=WNDLEVEL' WNDPL';/*SET LEVEL FOR MINOR STRUCTURE*/
*    WNDDUM                             /* MINOR STRUCTURE NAME PARM*/
*%WNDPLS2:;
*        BDY(WORD),
*      4 WNDPLRA1 PTR(31),              /* REAL ADDRESS OF THE FIRST
*                                       FRAME TO BE ADDRESSED DAT-OFF*/
*      4 WNDPLRA2 PTR(31),              /* REAL ADDRESS OF THE SECOND
*                                       FRAME TO BE ADDRESSED DAT-OFF,
*                                       OR ZERO IF ONLY ONE FRAME IS TO
*                                       BE ADDRESSED DAT-OFF         */
*      4 WNDPLEXT PTR(31),              /* VIRTUAL ADDRESS OF THE EXIT
*                                       ROUTINE                      */
*      4 WNDPLVA1 PTR(31),              /* VIRTUAL ADDRESS ASSOCIATED
*                                       WITH THE REAL ADDRESS FROM
*                                       WNDPLRA1. THIS FIELD IS NOT
*                                       USED FOR INPUT TO THE WINDOW
*                                       SERVICE ROUTINE (IEAVWND), BUT
*                                       IS WRITTEN INTO BY THE WINDOW
*                                       SERVICE ROUTINE FOR INPUT TO
*                                       THE EXIT ROUTINE.            */
*      4 WNDPLVA2 PTR(31),              /* VIRTUAL ADDRESS ASSOCIATED
*                                       WITH THE REAL ADDRESS FROM
*                                       WNDPLRA2, OR UNCHANGED FROM
*                                       INPUT TO THE WINDOW SERVICE
*                                       ROUTINE IF ONLY ONE REAL
*                                       ADDRESS WAS INPUTTED TO THE
*                                       WINDOW SERVICE ROUTINE. THIS
*                                       FIELD IS NOT USED FOR INPUT TO
*                                       THE WINDOW SERVICE ROUTINE
*                                       (IEAVWND), BUT IS WRITTEN INTO
*                                       BY THE WINDOW SERVICE ROUTINE
*                                       FOR INPUT TO THE EXIT ROUTINE.*/
*      4 WNDRA1KY CHAR(1),              /* RESERVED - NOT USED FOR INPUT
*                                       TO IEAVWND. THE STORAGE KEY
*                                       ASSOCIATED WITH THE FIRST INPUT
*                                       REAL ADDRESS.                 */
*      4 WNDRA2KY CHAR(1) ,             /* RESERVED - NOT USED FOR INPUT
*                                       TO IEAVWND. THE STORAGE KEY
*                                       ASSOCIATED WITH THE SECOND INPUT
*                                       REAL ADDRESS.                 */
*      4 WNDRSVD  CHAR(2) WND9999       /* RESERVED                   */
./ ADD NAME=IHAXPTE
*        %GOTO XPTEPLS ;                                             /*
         MACRO
         IHAXPTE &DSECT=YES
         AGO   .XPTBIT         DO NOT GENERATE PROLOGUE
***********************************************************************
*                                                                     *
* STATUS -                                                            *
*    CHANGE LEVEL 0                                                   *
* FUNCTION -                                                          *
*    MAPPING MACRO FOR XPTE                                           *
* ENTRY POINTS -                                                      *
*     IHAXPTE MACRO CALL                                              *
* INPUT -                                                             *
*    SEE IHAXPTE MACRO DEFINITION                                     *
* OUTPUT -                                                            *
*    XPTE MAPPING MACRO                                               *
* EXTERNAL REFERENCES -                                               *
*    N/A                                                              *
* EXITS, NORMAL -                                                     *
*    N/A                                                              *
* EXITS, ERROR -                                                      *
*    N/A                                                              *
* TABLES/WORK AREAS -                                                 *
*    N/A                                                              *
* ATTRIBUTES -                                                        *
*    BILINGUAL MACRO                                                  *
* CHARACTER CODE DEPENDENCY -                                         *
*    NONE                                                             *
* NOTES -                                                             *
*    NONE                                                             *
*                                                                     *
***********************************************************************
.XPTBIT  ANOP
         IEZBITS , -           DEFINE BITS
***********************************************************************
**                   EXTERNAL PAGE TABLE ENTRY      4/11/75           *
**                                                                    *
**                                                                    *
**       ONE EXTERNAL PAGE TABLE CONTAINING SIXTEEN EXTERNAL          *
**       PAGE TABLE ENTRIES IS ASSOCIATED WITH EVERY PAGE TABLE       *
**       REPRESENTING A PAGEABLE SEGMENT OF VIRTUAL STORAGE           *
**       I.E., THERE ARE SIXTEEN XPTES FOR EACH SEGMENT.              *
***********************************************************************
         AIF   ('&DSECT' EQ 'YES').XPT001 DOES USER WANT DSECT
XPTE     DS    0F
         AGO   .XPT002         BRANCH AROUND DSECT
.XPT001  ANOP                  GEN THE DSECT
XPTE     DSECT , XPTEPTR
.XPT002  ANOP
XPTPROT  DS    CL1 -           PROTECTION KEY
XPTRSV1  DS    CL1 -           RESERVED
XPTFLAGS DS    BL1 -           FLAG FIELD
XPTVIOLP EQU   BIT0 -          XPTLPID CONTAINS A VIO LPID. THE AUX-
*                              ILIARY STORAGE REPRESENTED BY XPTLPID
*                              SHOULD NOT BE DESTROYED- A LSID MUST BE
*                              OBTAINED FOR A PAGE-OUT. 1=SAVE EXIST
*                              ING AUXILIARY STORAGE. 0=EXISTING AUX
*                              ILIARY STORAGE MAY BE DISCARDED.@Z40WPYD
XPTXAV   EQU   BIT1 -          EXTERNAL STORAGE ADDRESS VALID FLAG
*                              WHEN 1, EXT. ADDR. IS VALID
XPTCKF   EQU   BIT2 -          CHANGE KEY FLAG; IF 1, KEY FOR THIS PAGE
*                              HAS BEEN CHANGED BY IEAVCKEY    @Z40EPYG
XPTTAKE  EQU   BIT3 -          RESERVED. WAS USED IN VS2/REL1
XPTVIO   EQU   BIT4 -          WHEN 1, PAGE IS PART OF A VIO WINDOW
*                                                              @Z40WPYD
XPTRES2  EQU   BIT4 -          RESERVED.                       @Z40WPYD
XPTDEFER EQU   BIT6 -          ALLOCATION DEFERRED FLAG; WHEN 1,
*                              ALLOCATION DEFERRED FOR THIS PAGE
XPTRSV4  EQU   BIT7 -          RESERVED
XPTFLAG2 DS    CL1 -           SECOND FLAG BYTE.               @Z40WPYD
*
XPTVALID EQU   BIT0 -          1=LSID IN XPTLSID IS VALID.     @Z40WPYD
XPTRES1  EQU   BIT1 -          RESERVED                        @Z40WPYD
XPTPOINP EQU   BIT2 -          PAGE-OUT IN PROGRESS FLAG. 1=PAGE-OUT IN
*                              PROGRESS. (IMPLIES THAT XPTVALID='0'B
*                                                              @Z40WPYD
XPTIOERR EQU   BIT3 -          I/O ERROR FLAG. 1=A PERMANENT READ I/O
*                              ERROR WAS SUFFERED BY THIS PAGE.@Z40WPYD
XPTLPID  DS    0CL8 -          THE LPID OF THE EXTERNAL STORAGE
*                              LOCATION OF THE VIRTUAL PAGE
XPTLGN    DS   0F -            LOGICAL GROUP NUMBER PORTION OF LPID IF
*                              VIO PAGE.                      @Z40WPYD
XPTLSID  DS    CL4 -           AUX. STORAGE ADDRESS OF SLOT IF NOT VIO
*                              PAGE.                           @Z40WPYD
XPTLPN   DS    0F -            LOGICAL PAGE NUMBER PORTION OF LPID IF
*                              VIO PAGE.                       @Z40WPYD
XPTLSID2 DS    CL4 -           AUX. STORAGE ADDRESS OF SLOT IF NOT VIO
*                              PAGE AND DUPLEXED PAGE.         @Z40WPYD
XPTEND   DS    0C
XPTLEN   EQU   XPTEND-XPTE -   LENGTH OF EXTERNAL PAGE TABLE ENTRY
         MEND  , */
*%XPTEPLS :  ;
* /*******************************************************************/
* /*                 EXTERNAL PAGE TABLE ENTRY      4/11/75          */
* /*                                                                 */
* /*                                                                 */
* /*     ONE EXTERNAL PAGE TABLE CONTAINING SIXTEEN EXTERNAL         */
* /*     PAGE TABLE ENTRIES IS ASSOCIATED WITH EVERY PAGE TABLE      */
* /*     REPRESENTING A PAGEABLE SEGMENT OF VIRTUAL STORAGE          */
* /*     I.E., THERE ARE SIXTEEN XPTES FOR EACH SEGMENT.             */
* /*******************************************************************/
*      %IF XPT9999^=','             /* IS BLOCK PART OF STRUCTURE    */
*          %THEN %XPT9999=';';      /* NO, SET UP NORMAL END         */
*      %IF XPTLEVEL^=''             /* DID USER SUPPLY LEVEL NUMBER  */
*          %THEN %GOTO XPTPLS1;     /* YES, DO NOT GEN 1 LEVEL       */
*DECLARE
*  1 XPTE BASED(XPTEPTR)
*      %GOTO XPTPLS2;               /* SKIP GEN FOR USER-GIVEN LEVEL */
* %XPTPLS1: XPTDUM=XPTLEVEL' XPTE'; /* SET UP USER-SUPPLIED LEVELS */
*  XPTDUM
* %XPTPLS2:;
*   BDY(WORD),
*    4 XPTPROT CHAR(1),             /* PROTECTION KEY                */
*    4 XPTRSV1 CHAR(1),             /* RESERVED                      */
*    4 XPTFLAGS CHAR(1),            /* FLAG FIELD                    */
*      8 XPTVIOLP BIT(1),           /* SAVE AUXILIARY STORAGE FLAG
*                                      WHEN 1, INDICATES VIO DATA
*                                      SET PAGE TO BE SAVED          */
*      8 XPTXAV BIT(1),             /* EXTERNAL STORAGE ADDRESS VALID
*                                      FLAG. WHEN 1, EXTERNAL ADDRESS
*                                      IS VALID.                     */
*      8 XPTCKF BIT(1),             /* CHANGE KEY FLAG: IF 1, KEY FOR
*                                      THIS PAGE HAS BEEN CHANGED BY
*                                      IEAVCKEY            @Z40EPYG */
*      8 *       BIT(1),            /* RESERVED                      */
*      8 XPTVIO BIT(1),             /* WHEN 1, PAGE IS PART OF A VIO
*                                      WINDOW               @Z40WPYD*/
*      8 XPTRES2 BIT(1),            /* RESERVED.            @Z40WPYD*/
*      8 XPTDEFER BIT(1),           /* ALLOCATION DEFERRED FLAG
*                                      WHEN 1, ALLOCATION DEFERRED FOR
*                                      THIS PAGE.                    */
*      8 XPTRSV4 BIT(1),            /* RESERVED                      */
*    4 XPTFLAG2 CHAR(1),            /* SECOND FLAG BYTE     @Z40WPYD */
*      8 XPTVALID BIT(1),           /* 1=LSID IN XPTE IS VALID.
*                                                           @Z40WPYD */
*      8 XPTRES1  BIT(1),           /* RESERVED             @Z40WPYD */
*      8 XPTPOINP BIT(1),           /* 1=PAGE-OUT IN PROGRESS.(IMPLIES
*                                      XPTVALID='0'B.       @Z40WPYD */
*      8 XPTIOERR BIT(1),          /* 1=A PERMANENT READ I/O ERROR WAS
*                                     SUFFERED BY THIS PAGE.@Z40WPYD */
*      8 *        BIT(4),          /* RESERVED              @Z40WPYD */
*    4 XPTLPID CHAR(8) BDY(WORD),     /* THE LPID OF THE EXTERNAL
*                                      STORAGE LOCATION OF THE
*                                      VIRTUAL PAGE                  */
*      8 XPTLGN FIXED(32),           /* LGN PORTION OF LPID IF VIO
*                                       PAGE.               @Z40WPYD */
*        12 XPTLSID FIXED(32),       /* AUX. STORAGE ADDRESS OF SLOT
*                                       IF NOT VIO PAGE.    @Z40WPYD */
*      8 XPTLPN FIXED(32),           /* LPN PORTION OF LPID IF VIO
*                                       PAGE.               @Z40WPYD */
*        12 XPTLSID2 FIXED(32);          /* AUX. STORAGE ADDR OF SLOT
*                                       IF NOT VIO AND DUPLEXED PAGE.
*                                                           @Z40WPYD */
*       %XPTELEN='LENGTH(XPTE)';    /* LENGTH OF XPTE                */
./ ADD NAME=IHAYSTAK
*%        GOTO    YSTAKL1;  /*
         MACRO
         IHAYSTAK &STKLENS=      */
*%YSTAKL1: ;
*
* /* *************************************************************** */
* /*                                                                 */
* /*             IHAYSTAK-DESCRIBE THE ATTRIBUTES OF THE             */
* /*                      FRR RECOVERY STACK AREA                    */
* /*                                                                 */
* /*             OS/VS2 RELEASE 2, 10/27/72 LEVEL=1                  */
* /*                                                                 */
* /*  METHOD OF ACCESS                                               */
* /*         BAL - DC'S FOR THE INDIVIDUAL LENGTHS OF EACH FRR       */
* /*               STACK IS PRODUCED IF STKLENS=YES ALONG WITH A     */
* /*               SERIES OF EQUATES DESCRIBING ATTRIBUTES OF THE    */
* /*               RECOVERY STACK AREA                               */
* /*               IF STKLENS IS NOT SPECIFIED OR IS SPECIFIED       */
* /*               OTHER THAN YES, JUST THE EQUATES DESCRIBING       */
* /*               THE ATTRIBUTES OF THE RECOVERY STACK AREA         */
* /*               ARE PRODUCED                                      */
* /*                                                                 */
* /*         PLS - AN ARRAY OF FIXED VARIABLES FOR THE LENGTHS       */
* /*               OF EACH FRR STACK IS PRODUCED IF %STKLENS IS SET  */
* /*               TO 'YES' ALONG WITH FIXED VARIABLE CONSTANTS      */
* /*               DESCRIBING THE ATTRIBUTES OF THE RECOVERY STACK   */
* /*               AREA                                              */
* /*               IF %STKLENS IS NOT SPECIFIED OR IS SPECIFIED OTHER*/
* /*               THAN 'YES', JUST THE FIXED VARIABLE CONSTANTS     */
* /*               DESCRIBING THE RECOVERY STACK AREA ARE PRODUCED   */
* /*                                                                 */
* /* *************************************************************** */
*
*%GOTO YSTAKL2 ;  /*
         SPACE 1
         AIF   ('&STKLENS' NE 'YES').YSTAK01
YSTAK    DS    0F                     NUMBER OF ENTRIES IN THE
         DC    F'16'                  SVC-I/O-DISPATCHER FRR STACK
*                                                             @ZM02352
         DC    F'4'                   MCH FRR STACK
         DC    F'16'                  PCFLIH FRR STACK        @ZM02352
         DC    F'16'                  EXTERNAL FLIH FRR STACK @ZM02352
*                                     (NON-RECURSIVE ENTRY)
         DC    F'4'                   EXTERNAL FLIH FRR STACK
*                                     (FIRST LEVEL-RECURSIVE ENTRY)
         DC    F'4'                   EXTERNAL FLIH FRR STACK
*                                     (SECOND LEVEL-RECURSIVE ENTRY)
         DC    F'16'                  RESTART FLIH FRR STACK  @ZM02352
*                                     RESPECTIVELY
         DC    F'16'                  NORMAL FRR STACK        @ZM02352
.YSTAK01 ANOP
YSTAKLEN EQU   9324                   TOTAL LENGTH OF RECOVERY STACK
*                                     AREA IN BYTES           @ZM02352
YSTAKBEG EQU   1                      INDEX FOR FIRST FRR STACK
YSTAKZRO EQU   0                      ADDRESS ZEROING CONSTANT
YSTAKTWO EQU   2                      MULTIPIER FOR INDEXING YSTAK
YSTAKMXV EQU   256                    MAX MOVE CHARACTER LENGTH
YSTAKSMV EQU   1                      STARTING INDEX FOR MOVE
         MEND          */
*%YSTAKL2 : ;
*%DECLARE YSTAKMXV CHAR;                /* MAX MOVE CHARACTER LENGTH */
*%YSTAKMXV = '256' ;                    /* OF 256                    */
*%DECLARE YSTAKSMV CHAR;                /* STARTING INDEX FOR MOVE   */
*%YSTAKSMV = '1';                       /* IS SET TO 1               */
*
*%IF STKLENS ^= 'YES' %THEN
*%    GOTO  YSTAKL3 ;
*DECLARE
*  YSTAK(8) FIXED(31) BDY(WORD) INIT(   /*ENTRIES IN THE             */
*                                  16,  /* SVC-I/O-DISPATCHER
*                                          FRR STACK,        @ZM02352*/
*                                   4,  /* MCH FRR STACK,            */
*                                  16,  /* PCFLIH FRR STACK, @ZM02352*/
*                                  16,  /* EXTERNAL FLIH FRR STACK
*                                          (NON-RECURSIVE ENTRY),
*                                                            @ZM02352*/
*                                   4,  /* EXTERNAL FLIH FRR STACK
*                                          (FIRST LEVEL-RECURSIVE
*                                          ENTRY),                   */
*                                   4,  /* EXTERNAL FLIH FRR STACK
*                                          (SECOND LEVEL-RECURSIVE
*                                          ENTRY),                   */
*                                  16,  /*  RESTART FLIH FRR STACK,
*                                          RESPECTIVELY      @ZM02352*/
*                                  16); /* NORMAL FRR STACK  @ZM02352*/
*%YSTAKL3: ;
*DECLARE
*   YSTAKLEN FIXED(31) CONSTANT(9324),  /* TOTAL LENGTH OF RECOVERY
*                                          STACK IN BYTES    @ZM02352*/
*   YSTAKBEG FIXED(31) CONSTANT(1),     /* INDEX FOR FIRST FRR STACK */
*   YSTAKZRO FIXED(31) CONSTANT(0),     /* ADDRESS ZEROING CONSTANT  */
*   YSTAKTWO FIXED(31) CONSTANT(2);     /* MULTIPLIER FOR INDEXING
*                                          YSTAK                     */
./ ADD NAME=IHJDSTAB
         %GOTO DSTABPLS;
         MACRO
         IHJDSTAB
TABL     DSECT ,                        DATA SET TABLE ENTRY     Y02076
TABDSORG DS    CL1                      DATA SET ORGANIZATION    Y02076
TABISAM  EQU   X'80'                    ISAM                     Y02076
TABPS    EQU   X'40'                    PHYSICAL SEQUENTIAL      Y02076
TABBDAM  EQU   X'20'                    BDAM                     Y02076
TABPO    EQU   X'02'                    PARTITIONED              Y02076
TABUNDF  EQU   X'01'                    UNDEFINED                Y02076
TABDCBAD DS    CL3                      ADDR OF ASSOCIATED DCB   Y02076
TABFLG1  DS    CL1                      FLAG BYTE 1              Y02076
TABNULL  EQU   X'80'                    NULLFILE/DUMMY DS        Y02076
TABSYS   EQU   X'40'                    SYSIN/SYSOUT DS          Y02076
TABDA    EQU   X'20'                    DA DEVICE                Y02076
TABTAPE  EQU   X'10'                    TAPE DEVICE              Y02076
TABLAST  EQU   X'08'                    LAST TABLE ENTRY FLAG    Y02076
TABUR    EQU   X'04'                    UNIT RECORD OR OTHER DEV Y02076
TABTCAM  EQU   X'02'                    TCAM DS                  Y02076
TABDOSTP EQU   X'01'                    DOS TAPE DS              Y02076
TABSEGAD DS    CL3                      ADDR OF ASSIGNED WA SEG  Y02076
TABNVOLS DS    CL1                      TOTAL VOLUME COUNT       Y02076
TABJFCB  DS    CL3                      ADDR OF ASSOCIATED JFCB  Y02076
TABOTIOT DS    0CL2                     OLD TIOT OFFSET (DA ONLY)Y02076
TABTPLBL DS    CL1                      TAPE LABEL FLAG BYTE     Y02076
TABNSLER EQU   X'80'                    ERROR IN NSL ROUTINE     Y02076
TABNSLMT EQU   X'40'                    NSL MOUNT SWITCH         Y02076
TABNSLCM EQU   X'20'                    NSL COMMUNICATION BIT    Y02076
TABLBBYP EQU   X'10'                    BYPASS LABEL PROCESS BIT Y02076
TABASCII EQU   X'08'                    ASCII LABEL              Y02076
TABNSL   EQU   X'04'                    NONSTANDARD LABEL        Y02076
TABSL    EQU   X'02'                    STANDARD LABEL           Y02076
TABNL    EQU   X'01'                    NO LABEL                 Y02076
TABFSQNO DS    CL1                      FILE SEQ NO. (TAPE ONLY) Y02076
TABFLG2  DS    CL1                      FLAG BYTE 2              Y02076
TABG5V   EQU   X'80'                    GREATER THAN 5 VOLUMES   Y02076
TABPOCAT EQU   X'40'                    PO CONCATENATED          Y02076
TABSW    EQU   X'20'                    PROCESS CONTROL SWITCH   Y02076
TABRSDS  EQU   X'10'                    WORKING RESTART DS       Y02076
TABCIDS  EQU   X'08'                    ISAM/VSAM CI DS          Y02076
TABVIODS EQU   X'04'                    VIO DS                   Y02076
TABOSSDS EQU   X'02'                    OLD DS WAS SUBSYSTEM     YM7399
TABFLG3  DS    CL1                      FLAG BYTE 3              Y02076
TABCKCK  EQU   X'80'                    CHKPT DS AT CHKPT TIME   YM7337
TABCKRS  EQU   X'40'                    CHKPT DS AT RESTART TIME YM7337
TABFLG4  DS    CL1                      FLAG BYTE 4              Y02076
TABBYPSW EQU   X'80'                    BYPASS PASSWORD CHKING @G32DSMI
*                                       BECAUSE DATA SET IS    @G32DSMI
*                                       RAC AUTHORIZED         @G32DSMI
TABRCINP EQU   X'40'                    RAC AUTHORIZED INPUT   @G32DSMI
TABRCOUT EQU   X'20'                    RAC AUTHORIZED OUTPUT  @G32DSMI
TABFLG5  DS    CL1                      FLAG BYTE 5 (USED AS 1   Y02076
*                                       BYTE SAVEAREA FOR DSCB   Y02076
*                                       EXTENT COUNT)            Y02076
TABVLID1 DS    CL6                      VOLUME ID 1              Y02076
TABVLID2 DS    CL6                      VOLUME ID 2              Y02076
TABVLID3 DS    CL6                      VOLUME ID 3              Y02076
TABVLID4 DS    CL6                      VOLUME ID 4              Y02076
TABVLID5 DS    CL6                      VOLUME ID 5              Y02076
         MEND
         %EJECT;
*%DSTABPLS: ;                           /* TO BE ADDED */
 @EJECT;
./ ADD NAME=IHJSSCR
*        %GOTO PLSDCL; /*                                        YM1235
         MACRO
         IHJSSCR
*  03/12/73     LEVEL=01
SSCR     DSECT                     SUBSYSTEM CHECKPOINT RECORD
SSCRID   DS    CL1                 CHECKPOINT RECORD ID
SSCRCODE EQU   X'01'               CODE FOR SSCR RECORD
SSCRSSID DS    CL1                 SUBSYSTEM ID
SSCRSUBS EQU   X'00'               SUBSYSTEM INTERFACE
SSCRVSAM EQU   X'01'               VSAM
SSCRSPIE EQU   X'02'               SPIE
SSCRHDRL DS    CL2                 SSCR HDR LNGTH AND OFFSET TO
*                                  DATA AREA
SSCRFCHN DS    F                   CHAIN PNTR IF OTHER SSCR'S
SSCRFLG1 DS    CL1                 FLAGS
SSCRCKRS EQU   X'80'               1 = CHECKPOINT TIME
*                                  0 = RESTART TIME
SSCRRES1 DS    CL1                 RESERVED
SSCRDATL DS    CL2                 DATA LENGTH
SSCRDCBA DS    F                   ASSOCIATED DCB ADDRESS
SSCRDATA DS    0C                  DATA TO END OF SSCR
         MEND  ,                   */                            YM1235
*%PLSDCL: ;
*DECLARE
*  1  SSCR  BASED,                 /* SUBSYSTEM CHECKPOINT RECORD    */
*     2  SSCRID  CHAR(1),          /* CHECKPOINT RECORD ID           */
*%DCL    SSCRDODE  CHAR;
*%SSCRCODE = '''01''X';            /* CODE FOR SSCR RECORD           */
*     2  SSCRSSID  CHAR(1),        /* SUBSYSTEM ID                   */
*%DCL    SSCRSUBS  CHAR;
*%SSCRSUBS = '''00''X';            /* SUBSYSTEM INTERFACE            */
*%DCL    SSCRVSAM  CHAR;
*%SSCRVSAM = '''01''X';            /* VSAM                           */
*%DCL    SSCRSPIE  CHAR;
*%SSCRSPIE = '''02''X';            /* SPIE                           */
*     2  SSCRHDRL  FIXED(15),      /* SSCR HDR LNGTH AND OFFSET TO   */
*                                  /* DATA AREA                      */
*     2  SSCRFCHN  PTR(31),        /* CHAIN PNTR IF OTHER SSCR'S     */
*     2  SSCRFLG1  BIT(8),         /* FLAGS                          */
*        3  SSCRCKRS  BIT(1),      /* 1 = CHECKPOINT TIME            */
*                                  /* 0 = RESTART TIME               */
*     2  SSCRRES1  CHAR(1),        /* RESERVED                       */
*     2  SSCRDATL  FIXED(15),      /* DATA LENGTH                    */
*     2  SSCRDCBA  PTR(31),        /* ASSOCIATED DCB ADDRESS         */
*     2  SSCRDATA  CHAR(*);        /* DATA TO END OF SSCR            */
./ ADD NAME=IKJEBEMB
         MACRO
&NAME    IKJEBEMB &L2,&TEXT
         LCLC  &GNAME,&MNAME,&ID,&INAME,&JNAME
&GNAME   SETC  'MSG'.'&SYSNDX'
&ID      SETC  '''IKJ52'''
          AIF ('&TEXT'(2,1) NE ' ').TAG6  CHECK FOR MSG 0
          AIF (N'&L2 EQ 0).TAG9  BRANCH IF NO LEVEL 2
&MNAME    SETC   '000'
          AGO   .TAG7
.TAG9      ANOP
          DS    0F
          AGO   .TAG10
.TAG6      ANOP
&MNAME   SETC  '&TEXT'(2,3)
.TAG7    ANOP
&INAME   SETC  'M'.'&MNAME'
&JNAME   SETC  '&INAME'.'&SYSNDX'
&JNAME   DS    0F
.TAG10   ANOP
         AIF   (N'&L2 EQ 0).TAG1
&NAME    DC    A(&L2) PTR TO LEVEL 2 MESSAGE
         AGO   .TAG3
.TAG1    ANOP
&NAME    DC    A(0) NO SECOND LEVEL MESSAGES
.TAG3    ANOP
         DC    AL2(&GNAME-*) LENGTH OF RECORD
         DC    AL2(0) ALWAYS 0
         AIF ('&TEXT'(2,1) EQ ' ').TAG8
         DC    C&ID MESSAGE ID
.TAG8    ANOP
         DC    C&TEXT MESSAGE TEXT
&GNAME   EQU   *
         SPACE 2
         MEND
./ ADD NAME=IKJEBEMT
         MACRO
         IKJEBEMT &N
.*THE OPERAND DETERMINES HOW MANY ENTRIES ARE IN THE TABLE
         LCLA  &END,&CTL
         LCLC  &MNUM
&END     SETA  &N
MSGPTTBL DS    0F
.LOOP1   ANOP
&MNUM    SETC  'M0'.'&CTL'
         DC    A(&MNUM)
&CTL     SETA  &CTL+1
         AIF   ('&CTL' EQ '&END').OUT
         AIF   (&CTL GT 9).LOOP2
         AGO   .LOOP1
.LOOP2   ANOP
&MNUM    SETC  'M'.'&CTL'
         DC    A(&MNUM)
&CTL     SETA  &CTL+1
         AIF   ('&CTL' EQ '&END').OUT
         AGO   .LOOP2
.OUT     ANOP
         MEND
./ ADD NAME=IKJEBEST
         MACRO
         IKJEBEST &CSECT=IBM
         LCLA  &A,&B,&C,&D,&E
         LCLA  &F                                                A42956
         LCLC  &CNAME,&SCNAME,&ABBR,&LDMOD,&LABEL,&LABEL1,&LABEL2,&NMBR
.*A035000,185000,230600-239000,255000                            A42956
         AIF   ('&CSECT' NE 'IBM').CONT0
&CNAME   SETC  'IKJEBMA8'     DEFINE CSECT NAME FOR IBM TABLE.
IKJEBMA8 CSECT
         ENTRY MA8IP002
         ENTRY MA8LI002
         AGO   .CONT1
.CONT0   ANOP
         AIF   ('&CSECT' NE 'USER').ERROR2
&CNAME   SETC  'IKJEBMA9'     DEFINE CSECT NAME FOR USER TABLE.
IKJEBMA9 CSECT
.CONT1   ANOP
&A       SETA  N'&SYSLIST
         AIF   (&A EQ 0).END
&B       SETA  1
&F       SETA  1                                                 A42956
.CONT2   ANOP
&C       SETA  N'&SYSLIST(&B)
         AIF   (&C LT 2 OR &C GT 3).ERROR1
&E       SETA  K'&SYSLIST(&B,&C)
&D       SETA  &E-1
.*  THE FOLLOWING FLAGED INSTRUCTIONS WERE ADDED TO PROVIDE      A42956
.*  UNIQUE LABELS, EVEN IF MODULES HAVE IDENTICAL LAST TWO       A42956
.*  CHARACTERS IN ENTRY POINT NAMES.  THE LABELS FOR MODULES     A42956
.*  IKJEBELI AND IKJEBEIP ARE UNCHANGED, SINCE THEY ARE          A42956
.*  REFERENCED WITHIN IKJEBEMA.                                  A42956
         AIF   ('&CSECT' NE 'IBM').CONT10                        A42956
         AIF   ('&SYSLIST(&B,&C)'(&D,&E) EQ 'LI' OR                    X
                '&SYSLIST(&B,&C)'(&D,&E) EQ 'IP' ).CONT11        A42956
.CONT10  ANOP                                                    A42956
&LABEL1  SETC  '&CNAME'(6,8).'@'.'&F'                            A42956
&F       SETA  &F+1                                              A42956
&LABEL2  SETC  '&CNAME'(6,8).'@'.'&F'                            A42956
&F       SETA  &F+1                                              A42956
         AGO   .CONT12                                           A42956
.CONT11  ANOP                                                    A42956
&LABEL1  SETC  '&CNAME'(6,8).'&SYSLIST(&B,&C)'(&D,&E).'001'
&LABEL2  SETC  '&CNAME'(6,8).'&SYSLIST(&B,&C)'(&D,&E).'002'
.CONT12  ANOP                                                    A42956
&SCNAME  SETC  '&SYSLIST(&B,1)'
         SPACE 2
         DC    AL1(&LABEL1-*-1) LENGTH OF SUBCOMMAND NAME.
         DC    C'&SCNAME' SUBCOMMAND NAME.
&LABEL1  EQU   *
         DC    AL1(&LABEL2-*-1) LENGTH OF ABBREVIATION.
         AIF   (K'&SYSLIST(&B,2) EQ 0).CONT5
&ABBR    SETC '&SYSLIST(&B,2)'
         DC    C'&ABBR' ABBREVIATION FOR SUBCOMMAND.
.CONT5   ANOP
&LABEL2  EQU   *
&LDMOD   SETC  '&SYSLIST(&B,&C)'
         DC    CL8'&LDMOD' LOAD MODULE NAME.
         AIF   (&B EQ &A).END
&B       SETA  &B+1
         AGO   .CONT2
.END     ANOP
         SPACE 2
         DC    AL1(255)       END OF TABLE MARKER.
         MEXIT
.ERROR1  MNOTE 12,'INVALID TABLE ENTRY'
         MEXIT
.ERROR2  MNOTE 12,'INVALID KEYWORD VALUE'
         MEND
./ ADD NAME=IKJEBEUW
         MACRO
         IKJEBEUW
*C0-999999                                                     @Y30NQKG
         SPACE
*****************************************************************
*    THIS MACRO CONTAINS ALL THE MAPPING DSECTS FOR THE EDIT
*   ACCESS METHOD.  THEY ARE AS FOLLOWS-
*
*        VECTABLE                      ROUTINE ADDRESSES
*        IHADCB                        DCB FOR UTIL. DATASET
*        UTILDCB                           "
*        UTILWORK                      DCB/WORKAREA
*        BUFFER                        BUFFER CONTROL FIELDS
*        DATA                          MAPS THE BUFFER BLOCKS
***********************************************************************
         SPACE 3
*
*   THIS DSECT MAPS THE VCONS THAT ARE LOCATED IN CSECT IKJEBEAA
*   WHICH IS LOCATED IN LOAD-MODULE IKJEBEAA.  ALL ROUTINE CALLS
*   IN LOAD MODULES IKJEBEUT AND IKJEBEAA USE THESE LABELS TO
*   SECURE THE DESIRED FACILITIES.
*
VECTABLE DSECT
AD       DS    1F                      ADD A BLOCK
AS       DS    1F                      BUFFER ASSIGNMENT
DL       DS    1F                      REMOVE A RECORD
DR       DS    1F                      DELETE A RECORD
DS       DS    1F                      DIRECTORY SEARCH
DU       DS    1F                      DIRECTORY UPDATE
LO       DS    1F                      FIND A RECORD
MV       DS    1F                      MOVE DATA
RB       DS    1F                      READ A BLOCK
RR       DS    1F                      READ A RECORD
WA       DS    1F                      WAIT ON I/O
WB       DS    1F                      WRITE A BLOCK
WP       DS    1F                      WRITE PURGE
WR       DS    1F                      WRITE A RECORD
WS       DS    1F                      WRITE SEQUENTIAL
SY       DS    1F                      SYNAD ROUTINE
         EJECT
***********************************************************************
*   START OF UTILITY WORKAREA --- UTILWORK
*    THIS AREA IS INITIALLY OBTAINED BY THE INITIALIZATION
*   ROUTINE, IKJEBEUI.
*   THE WORKAREA CONTAINS THE FOLLOWING ITEMS-
*        BSAM DCB
*        CONTROL INFORMATION AND SWITCHES
*        PARM LIST AREA
*        SAVE AREAS
*        BUFFER CONTROL FIELDS
*        INITIALLY A DIRECTORY BLOCK IS ADJACENT
*          TO THIS AREA BUT MAY BE RELEASED IF
*          A LARGER ONE IS NECESSARY.
         SPACE 3
         DCBD  DSORG=BS,DEVD=DA
UTILWORK EQU   IHADCB                  WORK AREA.
UTILDCB  EQU   UTILWORK                DCB FOR UTILITY DATA SET.
         EJECT
***********************************************************************
         SPACE 2
*   POINTER TO ACCESS METHOD(VECTOR TABLE) AND BUFFER INFORMATION
VTABLE   DS    1F                      ADDRESS OF VECTOR TABLE
UWSIZE   DS    1H                      SIZE OF WORKAREA
*                                      BUFFER CNTRL AND DSDB
DCBBFNO  DS    1H                      NO. OF BUFFERS
DBUFBLCK DS    1F                      DSDB ADDRESS
DBUFREF  DS    1F                      FOUND ENTRY ADDRESS
DCBEBQX  DS    F                       FIRST TTR OF EMPTY BLOCK QUEUE
BUFCURNT DS    1F                      CURRENT BUFFER
DSDBSIZE DS    1H                      DIRECTORY BLOCK SIZE
DCBRECNO DS    F                       DYNAMIC COUNT OF RECORDS
BUFCTR   DS    H                       COUNT OF BUFFERS WRITTEN
         DS    XL1                     RESERVED
DCBSTATS DS    XL1                     STATUS OF DATA SET
*        EQU   X'80'                   RESERVED
*        EQU   X'40'                   RESERVED
NBLK     EQU   X'20'                   NEW BLOCK ADDED
*        EQU   X'10'                   RESERVED
DCBSEQ   EQU   X'08'                   SEQUENTIAL WRITE
*        EQU   X'04'                   RESERVED
DSEMPTY  EQU   X'02'                   EMPTY DATA SET INDICATOR
ERROR    EQU   X'01'                   DATA SET HAD I/O ERROR
         SPACE 2
*   KEY AND DIRECTORY INFORMATION
PRIMEKEY DS    F                       CURRENT REFERENCE KEY
SAVEKEY  DS    F                       TEMPORARY STORAGE OF PRIMARY KEY
HIGHKEY  DS    F                       HIGH BOUND KEY,READ PREV
LOWKEY   DS    F                       LOW BOUND KEY, READ PREV
         SPACE 2
*   PARAMETER LIST AREA
PARM     EQU   *                       PASSED PARAMETER LIST
PARM1    DS    F                       WORD ONE
PARM2    DS    F                       WORD TWO
PARM3    DS    F                       WORD THREE
K        EQU   X'00'                   READ CURRENT REFERENCE
P        EQU   X'01'                   READ PREVIOUS BEFORE CURRENT
N        EQU   X'02'                   READ NEXT AFTER CURRENT
B        EQU   X'04'                   READ FIRST RECORD IN DATA SET
E        EQU   X'05'                   READ LAST RECORD IN DATA SET
BE       EQU   X'04'                   THIS BIT INDICATES EITHER
*                                      THE BEGINNING OR THE END
DELETE   EQU   X'10'                   DELETE OPERATION CODE
WRITE    EQU   X'20'                   WRITE OPERATION CODE
WRITEHS  EQU   X'21'                   WRITE SEQ. CODE
         SPACE 2
         SPACE 2
*   TEMPORARY WORK SPACE // ALSO USED FOR BUILDING MESSAGES
TEMPAREA DS    16D                     TEMPORARY WORKAREA
TEMP1      EQU   TEMPAREA                ONE WORD WORK SPACE
TEMP2      EQU   TEMPAREA+4              ONE WORD WORK SPACE
TEMP3    EQU     TEMPAREA+8              ONE WORD WORKSPACE
TEMPWRD1 EQU   TEMPAREA+12
TEMPWRD2 EQU   TEMPAREA+16
TEMPREGS   EQU   TEMPAREA+20           REGISTERS FOR TTR CONVERTS
MSGAREA  EQU   TEMPAREA                USED FOR MESSAGE INSERTIONS
MGBUILD  EQU   TEMPAREA+40             MESSAGE INSERT CONTROL BLOCK
MGBUILDL EQU   MGBUILD+5               LENGTH OF MESSAGE INSERT
IOMSG    EQU   TEMPAREA+48             BUFFER FOR SYNAD MESSAGE
MGBUILDO EQU   MGBUILD+6               2ND LEVEL OFFSET
MGBUILD2 EQU   TEMPAREA+56             START OF NEXT MESSAGE AREA
MGBLD2O2 EQU   MGBUILD2+6              OFFSET FOR NEXT INSERTION
IOMSG2   EQU   MGBUILD2+8              TEXT FOR 2ND LEVEL-2ND INSERTION
MGBLD2L  EQU   MGBUILD2+5              2ND LEVEL-2ND INSERTION LENGTH
         SPACE 2
*   STACKED SAVE AREAS //  ALL PRE-CHAINED BY 'IKJEBEUI'.
SAVEAREA DS    90F                     REGISTER SAVEAREA
         SPACE 2
UTILEND  EQU   *                       END OF DCB/WORKAREA
UTILSIZE EQU   UTILEND-UTILWORK        WORKAREA/DCB SIZE
         SPACE 2
*   BUFFER CONTROL AREA
*        THE DEFAULT IS 3 DATA BUFFERS.
*        THE MAXIMUM IS 10 DATA BUFFERS.
         DS    0D
BUF1     DS    CL192                   CONTROLS AND CCWS
BUF2     DS    CL192                   CONTROLS AND CCWS
BUF3     DS    CL192                   CONTROLS AND CCWS
BUFS     DS    7CL192                  CONTROLS AND CCWS
BUFEND   EQU   *-BUF1                  LENGTH OF BUFFER CONTROL
         SPACE 2
         SPACE 2
*   DIRECTORY STARTS HERE IF MAXIMUM OF 10 BUFFERS IS USED
*        THE  ADDRESS OF THIS AREA(BLOCK) IS FOUND IN
*        'DBUFBLCK'. THIS AREA IS MAPPED BY 'DATA' DSECT.
DSDB     EQU   *                       DIRECTORY BLOCK
         SPACE 2
***********************************************************************
         EJECT
***********************************************************************
BUFFER   DSECT                         I/O BUFFER DESCRIPTION
*   THIS BUFFER CONTROL FIELD DESCRIPTION CONTAINS-
*        CHAIN FIELDS, DOUBLE THREADED.
*        STATUS FIELDS
*        ADDRESS OF DATA BLOCK
*        I/O FIELDS (XDAP AND BSAM BLOCKS AND CCWS)
         SPACE 2
*   BUFFER CONTROL FIELDS
BUFCHAIN DS    1F                      BUFFER CHAIN FIELD
BBKCHAIN DS    1F                      BUFFER BACK CHAIN FIELD
BUFSTATS EQU   BBKCHAIN                BUFFER STATUS FIELD
UPDATED  EQU   X'80'                   BLOCK HAS BEEN UPDATED
BLKINBUF EQU   X'40'                   KEEP THIS BUFFER/BLOCK IN CORE
*        EQU   X'20'                   RESERVED
*        EQU   X'10'                   RESERVED
NEWBLK   EQU   X'08'                   NEW BLOCK REQUIRES FORMATTING
WAITB    EQU   X'04'                   BSAM OPERATION
WAITXR   EQU   X'02'                   XDAP READ OPERATION
WAITXW   EQU   X'01'                   XDAP WRITE OPERATION
BUFTTR   DS    F                       TTR OF BLOCK IN BUFFER
BUFREF   DS    F                       LOCATOR OR DIRECTORY ENTRY ADDR.
BUFBLOCK DS    F                       ADDRESS OF DATA BLOCK
         DS    1F                      RESERVED
BXDAPW   DS    F                       IOB PREFIX
XDAPWLST XDAP  XWECB,WI,0,0,0,MF=L LIST FORM
XWIOB    EQU   XWECB+4                 IOB FOR XDAP WRITE
XWCCWAD  EQU   XWIOB+16                IOB POINTER TO CCWS
WBLKREF  EQU   XWIOB+32                TRACK ADDRESS-MBBCCHHR
WCCHHR   EQU   WBLKREF+3               SEARCH ADDRESS-CCHHR
XWCCWS   EQU   XWIOB+40                START OF CCWS
XWBLKSIZ EQU   XWCCWS+22               BLKSIZE FOR WRITES
         SPACE 1
*    BSAM WRITE MACRO
WRITLIST WRITE WRDECB,SF,MF=L
         SPACE 1
*     XDAP READ MACRO
         CNOP  0,8
BXDAPR   DS    F                       IOB PREFIX
XDAPRLST XDAP  XRECB,RI,0,0,0,MF=L
XRIOB    EQU   XRECB+4                 IOB FOR XDAP READ
XRCCWAD  EQU   XRIOB+16                IOB POINTER TO CCWS
RBLKREF  EQU   XRIOB+32                TRACK ADDRESS-MBBCCHHR
RCCHHR   EQU   RBLKREF+3               SEARCH ADDRESS-CCHHR
XRCCWS   EQU   XRIOB+40                START OF CCWS
XRBLKSIZ EQU   XRCCWS+22               BLKSIZE FOR READS
BUFSIZE  EQU   *-BUFFER                LENGTH OF EACH BUFFER
         EJECT
*****************************************************************
DATA     DSECT                         START OF DATA
         SPACE 2
*   MAPS THE DATA BLOCKS WHICH CONTAIN THE RECORDS.
EBTTR    EQU   *                       TTR OF NEXT EMPTY BLOCK,
*                                      IF THIS BLOCK IS IN THE
*                                      EMPTY BLOCK QUEUE.
NUMREC   DS    H                       NUMBER OF RECORDS IN DATA BLOCK
DATASTRT DS    H                       RELATIVE POSITION OF 1ST RECORD
RECVSP   DS    H                       RECOVERABLE SPACE BYTES
CTRLEND  EQU   *                       END OF CONTROL FIELDS
LOCATORS EQU   *                       LOCATORS START HERE
LOCL     EQU   2                       LENGTH OF EACH LOCATOR
         SPACE 2
*   MAPS THE DSDB, WHICH CONTAINS THE INDEX ENTRIES.
         ORG   DATA                    DIRECTORY BLOCK START
*   DESCRIPTION OF DIRECTORY BLOCK // CONTROL FIELDS
         DS    1H                      RESERVED
NUMINDEX DS    H                       NUMBER OF ENTRIES IN DIR. BLOCK
DCTRLEND EQU   *                       CONTROL FIELD END
         SPACE 2
*   START OF INDICES AND DESCRIPTION OF ENTRIES
INDICES  EQU   *                       4-BYTE BINARY KEY+TTR PER ENTRY
KEYL     EQU   4                       LENGTH OF BINARY KEY IN INDICES
TTR      EQU   3                       LENGTH OF TTR FIELD IN INDICES
         SPACE 2
***********************************************************************
***********************************************************************
         MEND
         END
./ ADD NAME=IKJEFA3A
            %GOTO  A3AGO;
* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* /*                                                                 */
* /*                       I K J E F A 3 A                           */
* /*                                                                 */
* /*             ACCOUNT/DELETE DEFINE CONSTANTS MACRO               */
* /*                                                                 */
* /*   STATUS                                                        */
* /*   CHANGE LEVEL 000                                              */
* /*   PTMS INCLUDED: 2582,4175,4478,4483,5522                       */
* /*   CHANGE LEVEL 001                                              */
* /*   APARS INCLUDED: 45306                                         */
* /*   PTMS INCLUDED: 1850,1859                                      */
* /*   C    285104,288304,291304                              A45306 */
* /*   C    254588-254695                                      M1850 */
* /*   C    267394,162240                                      M1859 */
* /*   D    162280-162368,162744-162820                        M1859 */
* /*   C    83200,83800,85800,89800,90400,93200,96700,97600,   21974 */
* /*   C    98200,101000,105600,106200,122600,125000,128200,   21974 */
* /*   C    130200,132400,135600,142146,142150,142194,146200,  21974 */
* /*   C    149000,185800,193726-193732,193864,193865,193997,  21974 */
* /*   C    193998,198600-199000,221800-222200,235200,236200,  21974 */
* /*   C    237200,238124,276522,276530,276574,276575          21974 */
* /*   D    183880-183984,276208-276394,279544-279837          21974 */
* /*                                                                 */
* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* /*                                                                 */
 %A3AGO:     ;
           %IF XSECT = 'CSECT'
             %THEN
               %GOTO  TARG2;
             %ELSE    %;
           GENERATE DATA;
&SECTN1  DSECT
 @ENDGEN
             %GOTO  TARG2A;
 %TARG2:     ;
           GENERATE DATA;
&SECTN1  CSECT
 @ENDGEN
 %TARG2A:    ;
 /*                     DEFINE ROUTINE NAMES                         */

           DECLARE
                 /* IDENTIFY EXTERNAL ENTRIES AND NAMES              */
                 IKJEFA31  ENTRY EXTERNAL,  /* DELETE MESSAGES       */
                 ANDXL  NONLOCAL EXTERNAL ; /* MESSAGE INDEX         */


           DECLARE
                 /* REGISTER ASSIGNMENTS                             */
                 R0   REG(0)  PTR(31),/* GP REGISTER 0               */
                 R1   REG(1)  PTR(31),/* GP REGISTER 1               */
                   POSTR  PTR(31) REG(1),  /* PTR TO ECB FOR POST    */
                 R2   REG(2)  PTR(31), /* GP REGISTER 2              */
                   PLPTR PTR(31) REG(2),/* PTR TO ACCOUNT PARM LIST  */
                   IOPLPTR PTR(31) REG(2), /* PTR TO SERV RTN PL     */
                 R3   REG(3)  PTR(31),/* GP REGISTER 3               */
                   RECBP PTR(31) REG(3), /* PTR TO ECB FOR WAIT      */
                   CHRPTR  PTR(31)  REG(3),  /* PTR TO SCAN CHAR     */
                 R4   REG(4)  PTR(31),/* GP REGISTER 4               */
                   PDLPTR  PTR(31) REG(4), /* PTR TO PARSE DESC LIST */
                   GMSPP   PTR(31)  REG(4),  /* PTR TO GOTMAIN AREA  */
                 R5   REG(5)  PTR(31),/* GP REGISTER 5               */
                   PDLPTRA PTR(31) REG(5), /* PTR TO PARSE DESC LIST */
                   QLNGR   PTR(31) REG(5),  /* ENQUEUE NAME LENGTH   */
                 R6   REG(6)  PTR(31),/* GP REGISTER 6               */
                   QNAMR   PTR(31) REG(6),  /* PTR TO ENQUEUE NAME   */
                   CHRCTR  PTR(31)  REG(6),  /* SCAN COUNTER         */
                 R7   REG(7)  PTR(31),/* GP REGISTER 7               */
                 R8   REG(8)  PTR(31),/* GP REGISTER 8               */
                 R9   REG(9)  PTR(31),/* GP REGISTER 9               */
                 R10  REG(10) PTR(31),/* GP REGISTER 10              */
                 R11  REG(11) PTR(31),/* GP REGISTER 11              */
                 R12  REG(12) PTR(31),/* GP REGISTER 12              */
                 R13  REG(13) PTR(31),/* GP REGISTER 13              */
                 R14  REG(14) PTR(31),/* GP REGISTER 14              */
                 R15  REG(15) PTR(31);/* GP REGISTER 15              */

           RESTRICT  (PLPTR);         /* RESERVE FOR POINTER SERVICE */
           RESTRICT  (R8);            /* BASE PTR FOR STATIC DATA    */
           RESTRICT  (R9);            /* BASE PTR FOR IKJDEL2        */
           RESTRICT  (R7);            /* 2ND BASE PTR FOR IKJDEL2    */


           DECLARE
                 /* SAVE AREAS FOR LINK REGISTER                     */
                 SAV14A  PTR(31),
                 SAV14AB PTR(31),
                 SAV14CL PTR(31),
                 SAV14DC PTR(31),
                 SAV14DL PTR(31),
                 SAV14DS PTR(31),
                 SAV14FM PTR(31),
                 SAV14FR PTR(31),
                 SAV14GB PTR(31),
                 SAV14GL PTR(31),
                 SAV14LC PTR(31),
                 SAV14MF PTR(31),
                 SAV14PT PTR(31),
                 SAV14SP PTR(31),
                 SAV14V  PTR(31);

           DECLARE
                 /* PROCESSOR FLOW POINTERS                          */
                 1 FLOPTRS BDY(WORD), /* FLOW POINTER AREA           */
                   2 SAV14E  PTR(31), /* FOR ERRFLO                  */
                   2 SAV14DR PTR(31), /* FOR DRDFLO                  */
                   2 SAV14NC PTR(31), /* FOR FOR RD DIREC FLOW M     */
                   2 SAV14NQ PTR(31); /* FOR ENQUEUE FLOW      M2582 */

           DECLARE
                 /* PSEUDO-LABEL FLOW SWITCHES                       */
                 ERRFLO  LABEL BASED(SAV14E),
                 DRDFLO  LABEL BASED(SAV14DR),
                 INCFLO  LABEL BASED(SAV14NC),  /*             M     */
                 NQFLO   LABEL BASED(SAV14NQ);  /*             M2582 */

           DECLARE
                 /* LOCATE RETURN CODE                               */
                 RCPTR  PTR(31),      /* PTR TO RTN CODE LIST        */
                 1 RTCLIST  BASED(RCPTR),  /* NAME OF RTN CODE LIST  */
                   2 RCLRES  CHAR(3), /* RESERVED                    */
                   2 RCLC1  PTR(8),   /* 1ST RETURN CODE             */
                 SAVAR  PTR(31) BASED(R13+4),    /* CALLER'S SAVE PTR*/
                 RETRNCD PTR(31) BASED(SAVAR+16); /* RETURN CODE     */

           DECLARE
                 DPLPTR  PTR(31),     /* FOR DELETE POINT LIST       */
                 DNMIDP  PTR(31),     /* FOR DPL ENTRY               */
                 DPLNDP  PTR(31),     /* FOR END OF DPL              */
                 NAMPTR  PTR(31);     /* FOR CURRENT PDE             */

           DECLARE
                 /* SAVE AREA FOR NODELIST PARSE VALIDITY CHK EXIT   */
                 SVCHKPS  CHAR(72) BDY(WORD);


           DECLARE
                 /* POINTERS FOR MAPPING FORMATS                     */
                 HEDBPTR  PTR(31),    /* HEADER BLOCK                */
                 UADSNPTR PTR(31),    /* PROTOTYPE OFFSET BLOCK      */
                 DPOBPTR  PTR(31),    /* PASSWORD OFFSET BLOCK       */
                 DNOBPTR  PTR(31),    /* ACCOUNT NUMBER OFFSET BLOCK */
                 DROBPTR  PTR(31),    /* PROCEDURE NAME OFFSET BLOCK */
                 UADSPPTR PTR(31),    /* PASSWORD DATA BLOCK         */
                 UADSAPTR PTR(31),    /* ACCOUNT NUMBER DATA BLOCK   */
                 UADSRPTR PTR(31),    /* PROCEDURE NAME DATA BLOCK   */
                 UADSDPTR PTR(31),    /* PROTOTYPE NAME DATA BLOCK   */
                 FSQEPTR  PTR(31),    /* FREE SPACE QUEUE ELEMENT    */
                 UIDLPTR  PTR(31);    /* DELETE POINT LIST           */

 @EJECT
   %INCLUDE SYSLIB(IKJEFUAD);
 @EJECT
*        %GOTO ACTMC3;                                               /*
         MACRO
         IKJEFDPL
         EJECT
** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**                                                                   *
**                D E L E T E   P O I N T   L I S T                  *
**                                                                   *
** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**                                                                   *
./ ADD NAME=IKJEFLWA
*      %GOTO LWAPLS;  /*
          MACRO
          IKJEFLWA
LWA       DSECT
LWAPPTR  DS  A                          ADDRESS OF THE LOGON WORK
*                                       AREA
LWALWA   DS  CL8                        EBCDIC '  LWA   '
LWATEST  DS  A                          PTR FOR TEST     @ZA06226
LWAPASCB DS  A                          ADDRESS OF ASCB
*                                       FOR USER MEMORY
LWAACCT  DS  A                          OFFSET TO ACCT FIELD IN
*                                       UADS
LWAPSCB  DS  A                          ADDRESS OF THE PROTECTED
*                                       STEP CONTROL BLOCK
LWAJSEL  DS  A                          ADDRESS OF THE JOB
*                                       SCHEDULING ENTRANCE LIST
LWAPECT  DS  A                          ADDRESS OF THE ECT
LWAAECB  DS  A                          EVENT CONTROL BLOCK FOR
*                                       THE LOGON/LOGOFF
*                                       PROMPTING TASK
*        BIT(24)                        NOT REFERENCED BY LOGON/
         ORG LWAAECB+3                  LOGOFF CODE
LWAABCE  DS  X                          COMPLETION CODE BYTE
LWAPECB  DS  F                          COMMUNICATIONS ECB
*                                       FOR COMMUNICATION FROM
*                                       THE PROMPTING TASK TO
*                                       THE SCHEDULING TASK
*        BIT(24)                        NOT REFERENCED BY LOGON/
         ORG LWAPECB+3                  LOGOFF CODE
LWAPBCE  DS  X                          COMPLETION CODE BYTE
LWASECB  DS  F                          COMMUNICATIONS ECB
*                                       FOR COMMUNICATION FROM
*                                       THE SCHEDULING TASK TO
*                                       THE PROMPTING TASK
*        BIT(24)                        NOT REFERENCED BY LOGON/
         ORG LWASECB+3                  LOGOFF CODE
LWASBCE  DS  X                          COMPLETION CODE BYTE
LWALPCNT DS  F                          LOOP CONTROL FOR
*                                       STAI EXIT RETRY.
*                                       WHEN COUNTER REACHES
*                                       GIVEN VALUE, SESSION
*                                       IS TERMINATED.
LWAPDCB  DS  A                          ADDRESS OF UADS
*                                       DCB - USED BY STAI
*                                       RETRY.
LWAFLGS  DS 0F                          FLAGS FOR USE BY LOGON
         DS  X
LWALA    EQU X'80'                      IKJEFLA INDICATOR
LWALB    EQU X'40'                      IKJEFLB INDICATOR
LWALC    EQU X'20'                      IKJEFLC INDICATOR
LWALE    EQU X'10'                      IKJEFLE INDICATOR
LWALEA   EQU X'08'                      IKJEFLEA INDICATOR
LWALI    EQU X'04'                      IKJEFLI INDICATOR
LWALH    EQU X'02'                      IKJEFLH INDICATOR
LWALL    EQU X'01'                      IKJEFLL INDICATOR
         DS  X
LWALGM   EQU X'80'                      IKJEFLGM INDICATOR
LWALJ    EQU X'40'                      IKJEFLJ INDICATOR
LWALK    EQU X'20'                      IKJEFLK INDICATOR
LWALG    EQU X'10'                      IKJEFLG INDICATOR
LWALGB   EQU X'08'                      IKJEFLGB INDICATOR
LWALS    EQU X'04'                      IKJEFLS INDICATOR
*        BIT(2)                         RESERVED
         DS  X
*        BIT(1)                         RESERVED
LWARACF  EQU X'40'                      -> USER IS...      @Z40RQKC
*                                       ...RACF DEFINED
LWAVTAM  EQU X'20'                      -> VTAM/SNA        @Z40DQKC
LWAPHASE EQU X'10'                      CONTROL SWITCH
*                                       FOR STAI EXIT.
*                                       IF 0 - PHASE I
*                                       ACTIVE. IF 1 -
*                                       PHASE II ACTIVE
LWAPSW   EQU X'08'                      IF 1, LAST ABEND IN
*                                        PROMPTER WAS PSW RESTART
LWAPCK   EQU X'04'                      IF 1, LAST ABEND IN
*                                       PROMPTER WAS PGM CHECK
LWAMCK   EQU X'02'                      IF 1, LAST ABEND IN
*                                       PROMPTER WAS MACH CHECK
LWABND   EQU X'01'                      IF 1, LAST ABEND IN
*                                       PROMPTER WAS OTHER THAN PROG
*                                       CHK, PSW RESTART OR MACH CHK
LWAFLGS4 DS  X
*        BIT(1)
LWANORDR EQU X'40'                      USER ON TERMINAL
*                                       THAT DOES NOT
*                                       SUPPORT OIDCARD
*                                       READER      @G32OPKU
LWAQTIP  EQU X'20'                      SET BY SIC SO LOGON
*                                       WILL DO QTIP 24 IN
*                                       IKJEFLK     @ZA02119
LWASICSP EQU X'10'                      SET BY LOGON IN
*                                       IKJEFLJ AND SET
*                                       TO 0 IN IKJEFLK
*                                       TELLS SICS NOT TO DO
*                                       QTIP 24     @ZA02119
LWALTBC  EQU X'08'                      LIST BC IN CONTROL
LWATNBT  EQU X'04'                      USED TO INDICATE CANCEL
*                                       BY THE ATTENTION EXIT
*                                       ROUTINE.
LWAINX1  EQU X'02'                      INSTALLATION EXIT
*                                       ROUTINE IN CONTROL
LWAILGN  EQU X'01'                      INITIAL LOGON INDICATOR
LWAPTID  DS  A                          PROMPTING TASK IDENTIFIER
*                                       RETURNED BY ATTACH
LWACTLS  DS  0F                         CONTROL BIT STRING FOR
         DS  X                          LOGON PROMPTING TASK
*
LWAUFAI  EQU X'80'                      INDICATES UNSUCCESSFUL ENQ
*                                       ON THE RESOURCE ' SYSUADS
*                                       USERID '
LWAMOUNT EQU X'40'                      SET BY LD & PROPOGATED
*                                       TO PSCB BY LI
LWAFAIL  EQU X'20'                      INDICATES AN UNSUCCESSFUL
*                                       ATTEMPT TO OBTAIN A SYSTEM
*                                       RESOURCE.IDENTIFIED BY ANY
*                                       OTHER BIT.
LWADISC  EQU X'10'                      INDICATES THAT LOGON IS TO
*                                       TERMINATE AND DISCONNECT
*                                       THE TERMINAL.
LWANOPR  EQU X'08'                     IF BIT IS ONE AN INSTALLATION
*                                      EXIT ROUTINE HAS
*                                      PROVIDED USERID,PASSWORD,
*                                      ACCOUNT,PROCEDURE CHARACTER
*                                      STRINGS, A REGION
*                                      SIZE, AND A PERFORMANCE
*                                      GROUP FOR USE IN
*                                      SCHEDULING A TERMINAL JOB
LWANUAD  EQU X'04'                     IF THIS BIT IS ONE AND THE
*                                      BIT LWANOPR IS ALSO ONE NO
*                                      ACCESS OF THE UADS SHOULD
*                                      BE MADE FOR THIS TERMINAL JOB
LWAJJCL  EQU X'02'                     JCL FOR TERMINAL JOB WAS
*                                      SUPPLIED BY AN INSTALLATION
*                                      EXIT ROUTINE.
*        BIT(1)                        RESERVED
         DS  X
LWAATR1  EQU X'80'                     INFORMATION FOR THE ATR1
*                                      FIELD OF THE PSCB WAS SUPPLIED
*                                      BY AN INSTALLATION
*                                      EXIT ROUTINE.
LWAATR2  EQU X'40'                     INFORMATION FOR THE ATR2
*                                      FIELD OF THE PSCB WAS SUPPLIED
*                                      BY AN INSTALLATION
*                                      EXIT ROUTINE.
LWAUNIT  EQU X'20'                     INFORMATION FOR PSCBGPNM
*                                      FIELD OF THE PSCB WAS SUPPLIED
*                                      BY AN INSTALLATION
*                                      EXIT ROUTINE.
LWABUPT  EQU X'10'                     INFORMATION FOR USER PROFILE
*                                      TABLE WAS SUPPLIED BY
*                                      AN INSTALLATION EXIT RTN.
LWANONQ  EQU X'08'                     LOGON WILL NOT MAINTAIN AN
*                                      ENQ ON THE RESOURCE'SYSUAD
*                                      USERID' DURING THE USER'S
*                                      SESSION.
LWADEST  EQU X'04'                     IF 1, INSTALLATION
*                                      EXIT HAS SUPPLIED
*                                      DEFAULT DEST.
LWABEND  EQU X'02'                     IF 1, INSTALLATION
*                                      EXIT IS GETTING
*                                      CONTROL AFTER ABEND
         DS  2X                        RESERVED FLAGS
LWARTCD  DS  F                         RETURN CODE SET BY IKJEFLK
LWANAME  DS  0F                        EPLOC FOR ATTACH/XCTL
*                                      NAME
LWARNML  DS  CL1                       USED FOR MINOR
*                                      RESOURCE NAME
*                                      LENGTH TO ENQ/DEQ
LWARNM   DS  CL7                       USED FOR MINOR
*                                      RESOURCE NAME
*                                      IMAGE
LWANQDQ  DS  CL12                      USED FOR ENQ/DEQ
*                                      PARAMETER LIST
LWAELST  DS  0F                        ECB LIST HEADER
LWAAECBP DS  F                         PTR TO LWAAECB
LWAPECBP DS  F                         PTR TO LWAPECB
LWAEOEL  EQU X'80'                     END OF LIST BIT
LWARCDE  DS  F                         RTN CODE SET BY IKJEFLJ
LWATCPU  DS  F                         2 WORDS USED FOR
LWATCPU1 DS  F                         TOTAL CPU TIME USED
*                                      FOR THIS ACCOUNTING
*                                      PERIOD.
LWATSRU  DS  F                         2 WORDS USED FOR
LWATSRU1 DS  F                         TOTAL SERVICE UNITS
*                                      USED DURING THIS
*                                      ACCT PERIOD.
LWATCON  DS  F                         2 WORDS USED FOR
LWATCON1 DS  F                         TOTAL CONNECT TIME
*                                      USED DURING THIS
*                                      ACCT PERIOD.
LWASTCB  DS  A                         TCB ADDR IKJEFLA
LWADEST2 DS  CL8                       USERID FOR SYSOUT
*                                      TO REMOTE ENTRY-
*                                      STATION.
LWAGBWKA DS  A                         POINTER TO WORK
*                                      AREA FOR IKJEFLGB
LWASWKA  DS  A                         POINTER TO WORK
*                                      AREA FOR IKJEFLS
LWASPF   DS  A                         POINTER TO WORK         @ZA30872
*                                      AREA FOR SPF SUPPORT    @ZA30872
         DS  5F                        RESERVED
LENLWA   EQU *-LWA                     LENGTH OF LWA
**********************************************************************
***                                                                  *
***    I K J E F L J  R E T U R N  C O D E S                         *
***                                                                  *
**********************************************************************
LWASWAR EQU 4                          SWA MANAGER ERROR
LWAMSPE EQU 16                         MULTI-STEP PROC
**********************************************************************
***                                                                  *
***    P O S T  C O D E S  F O R  P E C B  E C B                     *
***                                                                  *
**********************************************************************
INITDONE EQU 4                         INIT PHASE DONE POST CODE
NQUSERID EQU 8                         ENQ ON USERID POST CODE
DQUSERID EQU 12                        DQ ON USERID
SCHEDULE EQU 16                        PHASE ONE PROMPTING DONE POST
BCDONE   EQU 20                        MSG BRODCASTING DONE POST CODE
TERMINAT EQU 24                        TERMINATE THE JOB POST CODE
**********************************************************************
***                                                                  *
***         P O S T  C O D E S  F O R  S E C B  E C B                *
***                                                                  *
**********************************************************************
NQDQ0    EQU 0                         ENQ DEQUE RETURN CODES
NQDQ4    EQU 4                         DITTO
NQDQ8    EQU 8                         DITTO
STARTP2  EQU 16                        START PHASE TWO PROMPTING
INITRDY  EQU 20                        INIT READY TO POST
ENDTASK  EQU 24                        TERMINATE PROMPTING TASK
*
*
**/
         MEND
* %LWAPLS:   ;
*@EJECT;
*/********************************************************************/
*/*      THE LOGON WORK AREA WILL CONTAIN INFORMATION WHICH IS       */
*/*      NECESSARY FOR THE LOGON/LOGOFF PROCESSING ROUTINES.  IT     */
*/*      WILL CONTAIN CONTROL BLOCK POINTERS, ENTRANCE LISTS AND     */
*/*      PARAMETER LISTS.                                            */
*/*    A 000000-999999                                         20032 */
*/*    A                                                      Y02669 */
*? DOCUMENT TITLE(CHANGE ACTIVITY);
*? DOCUMENT TITLE(#05: @Z40DQKC)
*  TEXT(SUPPORT FOR SNA. IF LWAVTAM=YES=1 THEN EXTENDED LOGON, IKTXINIT,
*    SUCCESSFULLY RETURNED TO IKJEFLA.
*    FOR LWAVTAM=YES IKJEFLB AND IKJEFLS WILL CALL EXTENDED LOGOFF-
*    IKTLOGFF);
*? DOCUMENT TITLE(#05: @Z40RQKC)
*  TEXT(SUPPORT FOR VS2 RELEASE 4 RACF. THE LOGON WORK AREA INDICATES
*    WHETHER THE USER IS RACF DEFINED OR NOT--LWARACF)
*  POSITION(END);
*        DECLARE
*        1    LWA  BASED(LWAPTR),
*             2    LWAPPTR POINTER,    /*   ADDRESS OF THE LOGON WORK*/
*                                      /*   AREA                     */
*             2    LWALWA CHAR(8),     /*   EBCDIC '  LWA   '  Y02669*/
*             2    LWATEST  POINTER,   /*   PTR FOR TEST     @ZA06226*/
*             2    LWAPASCB POINTER,   /*   ADDRESS OF ASCB    Y02669*/
*                                      /*   FOR USER MEMORY    Y02669*/
*             2    LWAACCT POINTER,    /*   OFFSET TO ACCT FIELD IN  */
*                                      /*   UADS                     */
*             2    LWAPSCB POINTER,    /*   ADDRESS OF THE PROTECTED */
*                                      /*   STEP CONTROL BLOCK       */
*             2    LWAJSEL POINTER,    /*   ADDRESS OF THE JOB       */
*                                      /*   SCHEDULING ENTRANCE LIST */
*             2    LWAPECT POINTER,    /*   ADDRESS OF THE ECT       */
*             2    LWAAECB BDY(WORD),  /*   EVENT CONTROL BLOCK FOR  */
*                                      /*   THE LOGON/LOGOFF         */
*                                      /*   PROMPTING TASK           */
*                  3    * BIT(24),     /*   NOT REFERENCED BY LOGON/ */
*                                      /*   LOGOFF CODE              */
*                  3    LWAABCE BIT(8),/*   COMPLETION CODE BYTE     */
*             2    LWAPECB BDY(WORD),  /*   COMMUNICATIONS ECB       */
*                                      /*   FOR COMMUNICATION FROM   */
*                                      /*   THE PROMPTING TASK TO    */
*                                      /*   THE SCHEDULING TASK      */
*                  3    * BIT(24),     /*   NOT REFERENCED BY LOGON/ */
*                                      /*   LOGOFF CODE              */
*                  3    LWAPBCE BIT(8),/*   COMPLETION CODE BYTE     */
*             2    LWASECB BDY(WORD),  /*   COMMUNICATIONS ECB       */
*                                      /*   FOR COMMUNICATION FROM   */
*                                      /*   THE SCHEDULING TASK TO   */
*                                      /*   THE PROMPTING TASK       */
*                  3    * BIT(24),     /*   NOT REFERENCED BY LOGON/ */
*                                      /*   LOGOFF CODE              */
*                  3    LWASBCE BIT(8),/*   COMPLETION CODE BYTE     */
*             2    LWALPCNT FIXED(31), /*   LOOP CONTROL FOR   Y02653*/
*                                      /*   STAI EXIT RETRY.   Y02653*/
*                                      /*WHEN COUNTER REACHES  Y02653*/
*                                      /*GIVEN VALUE, SESSION  Y02653*/
*                                      /*IS TERMINATED.        Y02653*/
*             2    LWAPDCB POINTER,    /*   ADDRESS OF UADS    Y02653*/
*                                      /*   DCB - USED BY STAI Y02653*/
*                                      /*   RETRY.             Y02653*/
*             2    LWAFLGS BIT(32),    /*   FLAGS FOR USE BY LOGON   */
*                  3    * BIT(8),
*                       4 LWALA BIT(1),/* IKJEFLA INDICATOR    Y02669*/
*                       4 LWALB BIT(1),/* IKJEFLB INDICATOR    Y02669*/
*                       4 LWALC BIT(1),/* IKJEFLC INDICATOR    Y02669*/
*                       4 LWALE BIT(1),/* IKJEFLE INDICATOR    Y02669*/
*                       4 LWALEA BIT(1),/* IKJEFLEA INDICATOR  Y02669*/
*                       4 LWALI BIT(1),/* IKJEFLI INDICATOR    Y02669*/
*                       4 LWALH BIT(1),/* IKJEFLH INDICATOR    Y02669*/
*                       4 LWALL BIT(1),/* IKJEFLL INDICATOR    Y02669*/
*                  3    * BIT(8),
*                       4 LWALGM BIT(1),/* IKJEFLGM INDICATOR  Y02669*/
*                       4 LWALJ BIT(1),/* IKJEFLJ INDICATOR    Y02669*/
*                       4 LWALK BIT(1),/* IKJEFLK INDICATOR    Y02669*/
*                       4 LWALG BIT(1),/* IKJEFLG INDICATOR    Y02669*/
*                       4 LWALGB BIT(1),/* IKJEFLGB INDICATOR  Y02669*/
*                       4 LWALS BIT(1),/* IKJEFLS INDICATOR    Y02669*/
*                       4 * BIT(2),
*                  3    * BIT(8),
*                       4    * BIT(1),
*                       4  LWARACF  BIT(1), /* -> USER IS... @Z40RQKC*/
*                                           /* ...RACF DEFINED       */
*                       4  LWAVTAM  BIT(1), /* -> VTAM/SNA   @Z40DQKC*/
*                       4  LWAPHASE BIT(1), /*CONTROL SWITCH  Y02653*/
*                                           /*FOR STAI EXIT.  Y02653*/
*                                           /*IF 0 - PHASE I  Y02653*/
*                                           /*ACTIVE. IF 1 -  Y02653*/
*                                           /*PHASE II ACTIVE Y02653*/
*                       4  LWAPSW BIT(1),   /*IF 1, LAST      Y02653*/
*                                           /*ABEND IN        Y02653*/
*                                           /*PROMPTER WAS    Y02653*/
*                                           /*PSW RESTART.    Y02653*/
*                       4  LWAPCK BIT(1),   /*IF 1, LAST      Y02653*/
*                                           /*ABEND IN        Y02653*/
*                                           /*PROMPTER WAS    Y02653*/
*                                           /*PROGRAM CHECK.  Y02653*/
*                       4  LWAMCK BIT(1),   /*IF 1, LAST      Y02653*/
*                                           /*ABEND IN        Y02653*/
*                                           /*PROMPTER WAS    Y02653*/
*                                           /*MACHINE CHECK.  Y02653*/
*                       4  LWABND BIT(1),   /*IF 1, LAST      Y02653*/
*                                           /*ABEND IN        Y02653*/
*                                           /*PROMPTER WAS    Y02653*/
*                                           /*OTHER THAN PROG Y02653*/
*                                           /*CHK, PSW RESTRT Y02653*/
*                                           /*OR MACHINE CHK. Y02653*/
*                  3    LWAFLGS4 BIT(8),
*                       4    * BIT(1),
*                       4    LWANORDR BIT(1), /* USER ON TERMINAL    */
*                                             /* THAT DOES NOT       */
*                                             /* SUPPORT OIDCARD     */
*                                             /* READER      @G32OPKU*/
*                       4    LWAQTIP BIT(1),  /* SET BY SIC SO LOGON */
*                                             /* WILL DO QTIP 24 IN  */
*                                             /* IKJEFLK     @ZA02119*/
*
*                       4    LWASICSP BIT(1), /* SET BY LOGON IN ... */
*                                             /* ...IKJEFLJ AND SET..*/
*                                             /* ...TO 0 IN IKJEFLK. */
*                                             /* TELLS SICS NOT TO DO*/
*                                             /* QTIP 24     @ZA02119*/
*                       4    LWALTBC BIT(1),/* LIST BC IN CONTROL    */
*                       4    LWATNBT BIT(1),/*USED TO INDICATE CANCEL*/
*                                           /*BY THE ATTENTION EXIT  */
*                                           /*ROUTINE.               */
*                       4    LWAINX1 BIT(1),/*INSTALLATION EXIT      */
*                                           /*ROUTINE IN CONTROL     */
*                       4    LWAILGN BIT(1),/*INITIAL LOGON INDICATOR*/
*             2    LWAPTID POINTER,      /* PROMPTING TASK IDENTIFIER*/
*                                        /* RETURNED BY ATTACH       */
*             2    LWACTLS BIT(32),      /* CONTROL BIT STRING FOR   */
*                                        /* LOGON PROMPTING TASK     */
*
*                  3    LWAUFAI BIT(1),  /*INDICATES UNSUCCESSFUL ENQ*/
*                                        /*ON THE RESOURCE ' SYSUADS */
*                                        /*USERID '                  */
*                  3    LWAMOUNT BIT(1), /*SET BY LD & PROPOGATED    */
*                                        /*TO PSCB BY LI       Y02669*/
*                  3    LWAFAIL BIT(1),  /*INDICATES AN UNSUCCESSFUL */
*                                        /*ATTEMPT TO OBTAIN A SYSTEM*/
*                                        /*RESOURCE.IDENTIFIED BY ANY*/
*                                        /*OTHER BIT.                */
*                  3    LWADISC BIT(1),  /*INDICATES THAT LOGON IS TO*/
*                                        /*TERMINATE AND DISCONNECT  */
*                                        /*THE TERMINAL.             */
*                  3    LWANOPR BIT(1),  /*IF BIT IS ONE AN INSTALLA-*/
*                                        /*TION EXIT ROUTINE HAS     */
*                                        /*PROVIDED USERID,PASSWORD, */
*                                        /*ACCOUNT,PROCEDURE CHARAC- */
*                                        /*TER STRINGS, A REGION     */
*                                        /*SIZE, AND A PERFORMANCE   */
*                                        /*GROUP FOR USE IN          */
*                                        /*SCHEDULING A TERMINAL JOB.*/
*                  3    LWANUAD BIT(1),  /*IF THIS BIT IS ONE AND THE*/
*                                        /*BIT LWANOPR IS ALSO ONE NO*/
*                                        /*ACCESS OF THE UADS SHOULD */
*                                        /*BE MADE FOR THIS TERMINAL */
*                                        /*JOB.                      */
*                  3    LWAJJCL BIT(1),  /*JCL FOR TERMINAL JOB WAS  */
*                                        /*SUPPLIED BY AN INSTALLA-  */
*                                        /*TION EXIT ROUTINE.        */
*                  3    * BIT(1),
*                  3    LWAATR1 BIT(1),  /*INFORMATION FOR THE ATR1  */
*                                        /*FIELD OF THE PSCB WAS SUP-*/
*                                        /*PLIED BY AN INSTALLATION  */
*                                        /*EXIT ROUTINE.             */
*                  3    LWAATR2 BIT(1),  /*INFORMATION FOR THE ATR2  */
*                                        /*FIELD OF THE PSCB WAS SUP-*/
*                                        /*PLIED BY AN INSTALLATION  */
*                                        /*EXIT ROUTINE.             */
*                  3    LWAUNIT BIT(1),  /*INFORMATION FOR PSCBGPNM  */
*                                        /*FIELD OF THE PSCB WAS SUP-*/
*                                        /*PLIED BY AN INSTALLATION  */
*                                        /*EXIT ROUTINE.             */
*                  3    LWABUPT BIT(1),  /*INFORMATION FOR USER PRO- */
*                                        /*FILE TABLE WAS SUPPLIED BY*/
*                                        /*AN INSTALLATION EXIT RTN. */
*                  3    LWANONQ BIT(1),  /*LOGON WILL NOT MAINTAIN AN*/
*                                        /*ENQ ON THE RESOURCE'SYSUAD*/
*                                        /*USERID' DURING THE USER'S */
*                                        /*SESSION.                  */
*                  3    LWADEST BIT(1),  /*IF 1, INSTALLATION  Y02664*/
*                                        /*EXIT HAS SUPPLIED   Y02664*/
*                                        /*DEFAULT DEST.       Y02664*/
*                  3    LWABEND BIT(1),  /*IF 1, INSTALLATION  Y02653*/
*                                        /*EXIT IS GETTING     Y02653*/
*                                        /*CONTROL AFTER ABEND Y02653*/
*                  3    *       BIT(17), /*THESE BITS ARE RESERVED   */
*             2    LWARTCD FIXED(31),    /*RETURN CODE SET BY IKJEFLK*/
*             2    LWANAME BDY(WORD),     /* EPLOC FOR ATTACH/XCTL    */
*                                        /* NAME                     */
*                  3    LWARNML CHAR(1), /* USED FOR MINOR           */
*                                        /*   RESOURCE NAME          */
*                                        /*   LENGTH TO ENQ/DEQ      */
*                  3    LWARNM CHAR(7),  /*   USED FOR MINOR         */
*                                        /*   RESOURCE NAME          */
*                                        /*   IMAGE                  */
*             2    LWANQDQ CHAR(12),     /*   USED FOR ENQ/DEQ       */
*                                        /*   PARAMETER LIST         */
*             2    LWAELST,              /* ECB LIST HEADER          */
*                  3    LWAAECBP PTR(31), /* PTR TO LWAAECB          */
*                  3    LWAPECBP PTR(31), /* PTR TO LWAPECB          */
*                       4    LWAEOEL BIT(1), /* END OF LIST BIT      */
*             2    LWARCDE FIXED(31),    /* RTN CODE SET BY IKJEFLJ  */
*             2    LWATCPU FIXED(32),    /*2 WORDS USED FOR    Y02669*/
*             2    LWATCPU1 FIXED(32),   /*TOTAL CPU TIME USED Y02669*/
*                                        /*FOR THIS ACCOUNTING Y02669*/
*                                        /*PERIOD.             Y02669*/
*             2    LWATSRU FIXED(32),    /*2 WORDS USED FOR    Y02669*/
*             2    LWATSRU1 FIXED(32),   /*TOTAL SERVICE UNITS Y02669*/
*                                        /*USED DURING THIS    Y02669*/
*                                        /*ACCT PERIOD.        Y02669*/
*             2    LWATCON FIXED(32),    /*2 WORDS USED FOR    Y02669*/
*             2    LWATCON1 FIXED(32),   /*TOTAL CONNECT TIME  Y02669*/
*                                        /*USED DURING THIS    Y02669*/
*                                        /*ACCT PERIOD.        Y02669*/
*             2    LWASTCB PTR(31),      /*TCB ADDR IKJEFLA    Y02669*/
*             2    LWADEST2 CHAR(8),     /*USERID FOR SYSOUT-  Y02664*/
*                                        /*TO REMOTE ENTRY-    Y02664*/
*                                        /*STATION.            Y02664*/
*             2    LWAGBWKA PTR(31),     /*POINTER TO WORK     Y02669*/
*                                        /*AREA FOR IKJEFLGB   Y02669*/
*             2    LWASWKA PTR(31),      /*POINTER TO WORK     Y02669*/
*                                        /*AREA FOR IKJEFLS    Y02669*/
*             2    LWASPF  PTR(31),      /*POINTER TO WORK   @ZA30872*/
*                                        /*AREA FOR SPF      @ZA30872*/
*             2    *(5)  FIXED(31);      /* RESERVED                 */
*%          DCL    LENLWA FIXED;    /* NOTE ---  THIS VALUE MUST   */
*%                 LENLWA = 172;    /* CHANGE WHEN NEW FIELDS ADDED*/
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*    I K J E F L J  R E T U R N  C O D E S                         */
*/*                                                                  */
*/********************************************************************/
*                             /* SWA MANAGER ERROR                   */
*LWASWAR:    GEN(EQU   4);
*                             /* MULTI-STEP PROC                     */
*LWAMSPE:    GEN(EQU   16);
*/********************************************************************/
*/*                                                                  */
*/*    P O S T  C O D E S  F O R  P E C B  E C B                     */
*/*                                                                  */
*/********************************************************************/
*                             /* INIT PHASE DONE POST CODE           */
*INITDONE:   GEN(EQU  4);
*                             /* ENQ ON USER ID POST CODE            */
*NQUSERID:   GEN(EQU  8);
*                             /* DQ ON USER ID                       */
*DQUSERID:   GEN(EQU  12);
*                             /* PHASE ONE PRONPTING DONE POST CODE  */
*SCHEDULE:   GEN(EQU  16);
*                             /* MESSAGE BROADCASTING DONE POST CODE */
*BCDONE:     GEN(EQU  20);
*                             /* TERMINATE THE JOB POST CODE         */
*TERMINAT:   GEN(EQU  24);
*/********************************************************************/
*/*                                                                  */
*/*         P O S T  C O D E S  F O R  S E C B  E C B                */
*/*                                                                  */
*/********************************************************************/
*                             /* NQDQ RETURN CODES                   */
*NQDQ0:      GEN(EQU  0);
*                             /* NQDQ RETURN CODES                   */
*NQDQ4:      GEN(EQU  4);
*                             /* NQDQ RETURN CODES                   */
*NQDQ8:      GEN(EQU  8);
*                             /* START PHASE 2 PROMPTING             */
*STARTP2:    GEN(EQU  16);
*                             /* INITATOR READY TO POST              */
*INITRDY:    GEN(EQU  20);
*                             /* TERMINATE PROMPTING TASK            */
*ENDTASK:    GEN(EQU  24);
* ? DOCUMENT TITLE(DECLARE) POSITION(BOTH) TEXT(LOGON VARIABLES);
*
* DECLARE
*   SYSIKJUA INIT('SYSIKJUA')        /* MAJOR NAME FOR ...          */
*            CHAR(8),
*   LOGONTCB CHAR(1) BASED,          /* USED FOR ENQ/DEQ ...        */
*                                    /* ... WITH TCB OPTION         */
* ? DOCUMENT TITLE(DECLARE) POSITION(BOTH) TEXT(MESSAGE NUMBERS);
*
*  MSG56413 CONSTANT(15),  /* RACINIT FAILED BY RACINIT      @Z40RQKC*/
*                          /* INSTALLATION EXIT        RC=24 @Z40RQKC*/
*  MSG56414 CONSTANT(13),  /* NEW-PSWD FOR RACINIT INVALID   @Z40RQKC*/
*                          /*                          RC=16 @Z40RQKC*/
*  MSG56415 CONSTANT(52),  /* PSWD EXPIRED AND NO NEW-PSWD   @Z40RQKC*/
*                          /*                          RC=12 @Z40RQKC*/
*  MSG56416 CONSTANT(53),  /* RACINIT ERROR            RC=XX @Z40RQKC*/
*
*  MSG56417 CONSTANT(54),  /* GROUP NOT DEFINED TO USER      @Z40RQKC*/
*                          /*                          RC=20 @Z40RQKC*/
*  MSG56419 CONSTANT(55),  /* GROUP, NEW PSWD IGNORED        @Z40RQKC*/
*                          /* FOR NON RACF USER              @Z40RQKC*/
*  MSG56421 CONSTANT(8),   /* PSWD NOT AUTHORIZED      RC= 8 @Z40RQKC*/
*
*  MSG56425 CONSTANT(51),  /* RACINIT TEMPORARILY NOT        @Z40RQKC*/
*                          /* ALLOWING USER TO LOGON   RC=28 @Z40RQKC*/
*  MSG56426 CONSTANT(56),  /* GROUP/NEWPSWD IGNORED          @Z40NQKC*/
*                          /* RACF NOT IN SYSTEM             @Z40NQKC*/
*
*  /* FOLLOWING MESSAGES ARE FOR RACF V2  8/30/76     */
*
*  MSG56431 CONSTANT(57),  /* LOGON TERMINATED. NOT AUTH     @G32OPKU*/
*                          /* TO THIS TERMINAL               @G32OPKU*/
*  MSG56432 CONSTANT(58),  /* RECONNECT REJECTED - NOT       @G32OPKU*/
*                          /* AUTHORIZED TO THIS TERMINAL    @G32OPKU*/
*  MSG56433 CONSTANT(59),  /* OIDCARD IS NOT AUTHORIZED      @G32OPKU*/
*  MSG56434 CONSTANT(60),  /* OIDCARD IS REQUIRED            @G32OPKU*/
*  MSG56435 CONSTANT(61),  /* NOT A VALID OIDCARD            @G32OPKU*/
*  MSG56436 CONSTANT(62),  /* LOGON TERMINATED- OIDCARD NOT  @G32OPKU*/
*                          /* SUPPORTED FOR THIS TERMIN TYPE @G32OPKU*/
*  MSG56437 CONSTANT(63),  /* ENTER OIDCARD                  @G32OPKU*/
*  MSG56438 CONSTANT(64),  /* USE OF GROUP HAS BEEN REVOKED  @G32OPKU*/
*  MSG56439 CONSTANT(65),  /* ENTER NEW GROUP NAME           @G32OPKU*/
*  MSG56440 CONSTANT(66),  /* RECONNECT REJECTED- PSWD       @G32OPKU*/
*                          /* INVALID FOR RACF               @G32OPKU*/
*  MSG56441 CONSTANT(67),  /* RECONNECT REJECTED- GROUP NOT  @G32OPKU*/
*                          /* AUTHORIZED                     @G32OPKU*/
*  MSG56442 CONSTANT(68),  /* RECONNECT REJECTED BY RACF     @G32OPKU*/
*                          /* INSTALLATION EXIT              @G32POKU*/
*  MSG56443 CONSTANT(69),  /* RECONNECT REJECTED- USER ACCESS@G32OPKU*/
*                          /* REVOKED BY RACF                @G32OPKU*/
*  MSG56444 CONSTANT(70);  /* RECONNECT REJECTED- USE OF     @G32OPKU*/
*                          /* GROUP HAS BEEN REJECTED        @G32OPKU*/
./ ADD NAME=IKJEFLWP
 ? DOCUMENT TITLE(DESCRIPTION) POSITION(BEGIN)
   TEXT(LOGON DATA PARAMETER LIST);
 ? DOCUMENT TITLE(LEVEL) TEXT(10/06/75 OS/VS2 RELEASE 4.0);
 ? DOCUMENT TITLE(PURPOSE)
   TEXT(THE FOLLOWING ITEMS ARE USED IN THE LOGON VERIFICATION PROCESS
   AND ARE ALSO PASSED TO THE SUBMIT COMMAND WHEN SUBMIT USES THE LOGON
   ENTRY POINT IKJEFLES.
   WHEN SUBMIT FINDS A LOGON COMMAND IN ITS INPUT DATA SET IT GOES TO
   LOGON TO PARSE THE COMMAND, THEN SUBMIT BUILDS JCL TO EXECUTE TSO
   COMMANDS IN THE BACKGROUND.);
 ? DOCUMENT TITLE(FORMAT);
 ? DOCUMENT TITLE(#05: LWPXXXXS)
   TEXT(SOME INPUT FOR IKJEFLD IS IN THE FORMAT OF STRING DOPE VECTORS.
     THIS IS THE BEGINNING OF A STRING DOPE VECTOR.);
 ? DOCUMENT TITLE(#05: LWPXXXXP)
   TEXT(USED BY IKJEFLD ONLY, THIS POINTS TO THE ACTUAL ITEM);
 ? DOCUMENT TITLE(#05: LWPXXXXI)
   TEXT(THIS DENOTES THE BEGINNING OF A TEXT INSERT FOR THIS ITEM);
 ? DOCUMENT TITLE(#05: LWPXXXXM)
   TEXT(FOR IKJEFLD THIS IS THE MAXIMUM LENGTH OF THE ITEM. OTHERWISE
     THIS IS THE ITEM LENGTH PLUS FOUR, FOR A TEXT INSERT);
 ? DOCUMENT TITLE(#05: LWPXXXXL)
   TEXT(THIS IS THE CURRENT LENGTH OF THE ITEM, EXCEPT WHEN USED FOR A
     TEXT INSERT, THEN IT IS THE OFFSET INTO THE MAIN SEGMENT);
 ? DOCUMENT TITLE(#05: LWPXXXX)
   TEXT(THIS IS THE ACTUAL ITEM AS RECEIVED FROM THE LOGON COMMAND OR
     IKJEFLD, THE LOGON INSTALLATION EXIT);
 ? DOCUMENT TITLE(MICROFICHE LISTING) TEXT(IKJEFLWP);
 ? DOCUMENT TITLE(CHANGE ACTIVITY);
 ? DOCUMENT TITLE(#05: @Z40RQKC)
   TEXT(SUPPORT FOR /NEWPASSWORD AND GROUP-ID FOR RACF)
   POSITION(END);
 @EJECT;
 DECLARE
   1 IKJEFLWP BASED(LWPPTR),

     2 LWPUSERS,                     /* USERID STRING DOPE VECTOR    */
       3 LWPUSERP PTR(31),           /* POINT TO THE USERID          */
       3 LWPUSERI,                   /* USERID TEXT INSERT           */
         4 LWPUSERM FIXED(15),       /* MAXIMUM LENGTH OF USERID     */
         4 LWPUSERL FIXED(15),       /* CURRENT LENGTH OF USERID     */
         4 LWPUSER  CHAR(7),         /* THE USERID                   */
         4 *        CHAR(1),

     2 LWPPSWDS,                     /* PSWD STRING DOPE VECTOR      */
       3 LWPPSWDP PTR(31),           /* POINTER TO THE PASSWORD      */
       3 LWPPSWDI,                   /* PASSWORD TEXT INSERT         */
         4 LWPPSWDM FIXED(15),       /* MAXIMUM LENGTH OF PASSWORD   */
         4 LWPPSWDL FIXED(15),       /* CURRENT LENGTH OF PASSWORD   */
         4 LWPPSWD  CHAR(8),         /* THE PASSWORD                 */

     2 LWPPROCS,                     /* PROCNAME STRING DOPE VECTOR  */
       3 LWPPROCP PTR(31),           /* POINTER TO THE PROC NAME     */
       3 LWPPROCI,                   /* TEXT INSERT FOR PROC NAME    */
         4 LWPPROCM FIXED(15),       /* MAXIMUM LENGTH OF PROC NAME  */
         4 LWPPROCL FIXED(15),       /* CURRENT LENGTH OF PROC NAME  */
         4 LWPPROC  CHAR(8),         /* THE PROC NAME                */

     2 LWPACCTS,                     /* ACCT# STRING DOPW VECTOR     */
       3 LWPACCTP PTR(31),           /* POINTER TO THE ACCOUNT NUMBER*/
       3 LWPACCTI,                   /* TEXT INSERT FOR ACCOUNT NUM  */
         4 LWPACCTM FIXED(15),       /* MAXIMUM LENGTH FOR ACCT NUM  */
         4 LWPACCTL FIXED(15),       /* CURRENT LENGTH OF ACCOUNT NUM*/
         4 LWPACCT  CHAR(40),        /* THE ACCOUNT NUMBER           */

     2 *,
       3 LWPREGNP PTR(31),           /* POINT TO REGION SIZE         */
       3 LWPREGNI,                   /* TEXT INSERT FOR REGION SIZE  */
         4 LWPREGNM FIXED(15),       /* MAXIMUM LENGTH OF REGION SIZE*/
         4 LWPREGNL FIXED(15),       /* CURRENT LENGTH OF REGION SIZE*/
         4 LWPREGN  CHAR(8),         /* THE REGION REGN IN EBCDIC    */
         4 LWPREGNX FIXED(31),       /* THE REGION REGN IN HEX       */

     2 *,
       3 LWPPERFP PTR(31),           /* POINTER TO PERFORMANCE GROUP  */
       3 LWPPERFI,                   /* TEXT INSERT FOR PERF GROUP    */
         4 LWPPERFM FIXED(15),       /* MAXIMUM LENGTH OF PERF GROUP  */
         4 LWPPERFL FIXED(15),       /* CURRENT LENGTH OF PERF GROUP  */
         4 LWPPERF  CHAR(8),         /* THE PERFORMANCE GROUP-EBCDIC */
         4 LWPPERFX FIXED(31),       /* THE PERFORMANCE GROUP IN HEX */

     2 LWPDESTS,                     /* DEFAULT DEST STRING DOPE VECT*/
       3 LWPDESTP PTR(31),           /* POINTER TO DEST USERID       */
       3 LWPDESTI,                   /* TEXT INSERT FOR DEST USERID  */
         4 LWPDESTM FIXED(15),       /* MAXIMUM LENGTH OF DEST USERID*/
         4 LWPDESTL FIXED(15),       /* CURRENT LENGTH OF DEST USERID*/
         4 LWPDEST  CHAR(8),         /* THE DEST USERID              */
 ? DOCUMENT TITLE(DESCRIPTION) POSITION(BOTH)
   TEXT(LOGON DATA PARAMETER LIST - CONTINUED);

     2 LWPNPSWS,                     /* NEW PSWD-DOPE VECTOR @Z40RQKC*/
       3 LWPNPSWP PTR(31),           /* PTR TO NEW PSWD      @Z40RQKC*/
       3 LWPNPSWI,                   /* NEW PSWD TEXT INSERT @Z40RQKC*/
         4 LWPNPSWM FIXED(15),       /* MAX LEN OF NEW PSWD  @Z40RQKC*/
         4 LWPNPSWL FIXED(15),       /* CUR LEN OF NEW PSWD  @Z40RQKC*/
         4 LWPNPSWD CHAR(8),         /* THE NEW PSWD         @Z40RQKC*/

     2 LWPGRPS,                      /* GROUP ID             @Z40RQKC*/
       3 LWPGRPP  PTR(31),           /* PTR TO GROUP ID      @Z40RQKC*/
       3 LWPGRPI,                    /* GROUP ID TEXT INSERT @Z40RQKC*/
         4 LWPGRPM  FIXED(15),       /* MAX LEN OF GROUP ID  @Z40RQKC*/
         4 LWPGRPL  FIXED(15),       /* CUR LEN OF GROUP ID  @Z40RQKC*/
         4 LWPGRP   CHAR(8),         /* THE GROUP ID         @Z40RQKC*/
     2 LWPFLAGS     CHAR(4),         /* FLAG AREA            @G32OPKU*/
       3 LWPFLGS1  BIT(8),           /*                      @G32OPKU*/
         4 LWPRECON BIT(1),          /* SET TO ONE WHEN      @G32OPKU*/
                                     /* RECONNECT REQUESTED AND IT IS*/
                                     /* NOT SUBMIT           @G32OPKU*/
         4 LWPMAIL  BIT(1),          /* MAIL OR NOMAIL WAS   @G32OPKU*/
                                     /* REQUESTED ON LOGON   @G32OPKU*/
         4 LWPNOTIC BIT(1),          /* NOTICES OR NONOTICES         */
                                     /* REQUESTED ON LOGON   @G32OPKU*/
         4 LWPOIDCD BIT(1),          /* OIDCARD KEYWORD USED ON      */
                                     /* LOGON COMMAND        @G32OPKU*/
         4 *        BIT(4),          /* RESERVED             @G32OPKU*/
       3 *          CHAR(3);         /* RESERVED             @G32OPKU*/
./ ADD NAME=IKJEFPWA
*         %  GOTO  PWABSL;      /*                               F41448
         MACRO
&WORK    IKJEFPWA
.* OS RELEASE 20 SUPPORT CODE -- 20035
.*
.*A 000205,015620-015640,023400-082372                           F41448
.*
.* VS RELEASE 1.6 - SUPPORT CODE -- Y01156
.* VS RELEASE 2.0 - SUPPORT CODE -- Y02666
.* VS RELEASE 3.0 SUPPORT CODE --Y30NQJN
.*
***********************************************************************
*                                                                     *
         AIF  ('&WORK' NE 'CSWORK').PWA
*                     COMMAND SCAN WORKSPACE                          *
         AGO  .CSWA
.PWA     ANOP
*                     PARSE PERMANENT WORKSPACE                       *
.CSWA    ANOP
*                                                                     *
***********************************************************************
         SPACE
&WORK    DSECT
         SPACE
         DS    18F                     SAVE AREA
ADDRSAVE DS    4F                      SAVEAREA FOR ADDRESS RTN.Y30NQJN
P20SAVE  DS    4F                      SAVE AREA FOR IKJEFP20    Y02666
INTEGER  DS    4D                      WORKAREA FOR P20 CONVERT RTN.
*                                                                YM5578
         SPACE
PDWORD   DS    D                       SCRATCH/SAVE/CONVERT AREA
*
ENDINPUT DS    A                       LAST INPUT CHARACTER ADDRESS -
*                                         USED TO DETERMINE END OF DATA
*
* POINTER TO START OF DATA BEING SCANNED SET BY SKIPB SUBROUTINE. ALSO
* LENGTH OF DATA FIELD. THESE AREAS MUST BE CONTIGUOUS.
*
PPOINTR  DS    A                       LAST ENTITY START
*
PLENGTH  DS    H                       LAST ENTITY LENGTH
*
RETCODE  DS    X                       RETURN CODE AREA
         SPACE
         AIF  ('&WORK' NE 'CSWORK').GO
CSWORKSZ EQU  *-CSWORK   SIZE OF COMMAND SCAN WORKAREA
         MEXIT
.GO      ANOP
SUBRWORK DS    D                       SCRATCH/SAVE AREA FOR SUBROUTINE
*
XPDL     DS    A                       ADDRESS OF PDL
         SPACE
TEMPSAVE DS    A                       USED TO TEMPORARILY STORE R1
*                                      BEFORE LINKING TO TRANSLATE
*                                      ROUTINE
         SPACE
*
* PERMANENT WORKSPACE FLAGS.
*
PFLAGS   DS    X                       FIRST FLAG BYTE
*
PFLAGS2  DS    X                       SECOND FLAG BYTE
*
PFLAGS3  DS    X                       THIRD FLAG BYTE
*
PFLAGS4  DS    X                       FORTH FLAG BYTE
*
PFLAGS5  DS    X                       FIFTH FLAG BYTE           S21105
PFLAGS6  DS    X                       SIXTH FLAG BYTE           Y01156
PFLAGS7  DS    X                       SEVENTH FLAG BYTE         Y02666
PFLAGS8  DS    X                       EIGHTH FLAG BYTE          Y02666
         SPACE
*
* WORKSPACE NEEDED FOR STORAGE ALLOCATION SUBROUTINE.
*
PANCHOR  DS    A                       ANCHOR FOR STORAGE CHAIN
*
PANCHORT DS    A                       INTERAL MSS CHAIN FREE Q ANCHOR
         SPACE
*
* PARAMETER LIST FOR CONDITIONAL GETMAIN SUBROUTINE.
*
PGETLIST DS    0F                      * * * *
*
PGETLNTH DS    F                       LENGTH REQUESTED
*
PGETRADR DS    F                       ADDR IN WHICH ALLOCATED SPACE
*                                         ADDR IS PLACED
*
PGETMDSP DS    H                       MODE AND SUBPOOL
         SPACE
*
* THE FIRST INPUT PUSHDOWN STACK. IF THIS STACK FILLS UP A GETMAIN IS
* ISSUED FOR AN ADDITIONAL STACK, HIS PROCESS CONTINUES INDEFINITLY.
* THE STACKS ARE BACKWARD CHAINED WITH THE FIRST STACKS CHAIN WORD
* REMAINING ZERO. EACH NEW ENTRY IN THE STACK CONSISTS OF TWO WORDS,
* THE FIRST IS THE CONTENTS OF XINPUT, THE SECOND THE CONTENTS OF
* ENDINPUT. THE NEXT FREE AREA IN THE STACK IS FOUND BY USING PIPDLX
* AS AN INDEX INTO THE STACK.
*
PIPDLCUR DS    A                       ADDRESS OF CURRENT INPUT
*                                         PUSHDOWN STACK
*
PIPDLCHN DS    A                       STORAGE CHAIN - SHOULD BE ZERO
*
         DS    (2*IPDLMAXE)A           FIRST INPUT PUSHDOWN STACK
*
PIPDLX   DS    X                       INDEX TO NEXT FREE AREA IN THE
*                                         CURRENT PUSHDOWN STACK
         SPACE
PLINKSV1 DS    A                       SAVE AREA FOR RETURN ADDRESS OF
*                                         LINK1 ROUTINES WHICH USE
*                                         LINK2 ROUTINES AS SUBROUTINES
         SPACE
INVPSAVE DS    A                       BEGINNING ADDR OF PARM
*                                         USED IF PARM IS INVALID
*
* ADDRESSES FOR KEYWORD SCANS.
*
PKEYWDPS DS    A                       POINTER TO CURRENT NAME ENTRY
*
PKEYWDPC DS    A                       POINTER TO CURRENT IKJKEYWD PCE
*
PKEYWDPX DS    A                       TO SAVE IKJKEYWD PCE ADDRESS
*
PKEYWDTB DS    A                       PCL RESULT DURING KEYWORD
*                                         PROCESSING
*
PKEYWDPM DS    A                       SAVE AREA FOR PDE DURING
*                                         KEYWORD SCAN
         SPACE
*
PTABLEAD DS    A                       START OF PCL ADDRESS
         SPACE
PTABLEND DS    A                       END OF PCL ADDRESS
         EJECT
*
* THE FOLLOWING FIELDS ARE USED AS A TEMPORARY POSITIONAL PDE. THE
* FIELDS ARE MOVED FROM HERE TO THE ACTUAL PDE BY THE POSITIONAL EXIT
* ROUTINE. THE AREAS MUST BE CONTIGUOUS.
*
TEMPPDE  DS    0F                      NAME TEMPORARY AREA
*
DATAPTR1 DS    A                       POINTER TO STRING, PSTRING,
*                                         QSTRING, PASSWORD, DSNAME,
*                                         LOADNAME OR VALUE
*
DATALEN1 DS    H                       LENGTH OF ABOVE DATA
*
DATAFLA1 DS    X                       FLAG BYTE
*
DATAFLB1 DS    X                       TYPE CODE FOR VALUE
*
DATAPTR2 DS    A                       POINTER TO MEMBER OR ENTRY NAME
*
DATALEN2 DS    H                       LENGTH OF ABOVE DATA
*
DATAFLA2 DS    X                       FLAG BYTE
*
DATAFLB2 DS    X                       RESERVED BYTE
*
DATAPTR3 DS    A                       POINTER TO PASSWORD OR ADDRESS
*
DATALEN3 DS    H                       LENGTH OF ABOVE DATA
*
DATAFLA3 DS    X                       FLAG BYTE
*
DATAFLB3 DS    X                       RESERVED BYTE
*
*                                      FOLLOWING FIELDS USED BY ADDRESS
DATAFLG  DS    X                       REGISTER NOTATION FLAGS
*
DATASGN  DS    X                       SIGN OF FIRST VALUE
*
DATAICT  DS    H                       INDIRECT ADDRESSING COUNT
*
DATAEXP  DS    A                       POINTER TO NEXT EXPRESSION VALUE
*                                         PDE
*
DATAUSER DS    F                       USER WORD
*
LTPDE    EQU   *-TEMPPDE               LENGTH OF TEMPORARY PDE
CBADD    DS    11F                     COBOL SUPPORT ADDITIONS   F41448
CBLTPDE  EQU   *-TEMPPDE               LEN OF TEMPPDE FOR COBOL  F41448
         EJECT
         SPACE
ENDBAKUP DS    A                       BACKUP FOR ENDINPUT IF PFSCANX
*                                         FLAG IS ON
         SPACE
PDELIM   DS    C                       SELF-DEFINED DELIMITER STORED BY
*                                         DELIMITR PCE ROUTINE
         SPACE
*
         SPACE
PPCOUNT  DS    PL1                     POSITIONAL DATA SIZE
         SPACE
PPDESIZE DS    PL1                     POSITIONAL PDE SIZE
         SPACE
PERRCODE DS    AL1                     INDEX TO RESCAN ADDRESS TABLE
         SPACE
PKEYWDVL DS    AL2                     TO SAVE VALUE DURING KEYWORD
*                                         LOOKUP
         SPACE
RNG2ADDR DS    A                       ADDR OF 2ND PDE FOR A RANGE
         SPACE
SEGLIST  DS    5F                      LIST OF MESSAGE SEGMENTS FOR
*                                         I/O SERVICE ROUTINES
         SPACE
PREVPDEL DS    F                       USED TO CONTAIN THE PREVIOUS PDE
*                                         ADDRESS SO THAT THE VALIDITY
*                                         CHECK ROUTINE CAN FETCH IT
*                                         WHEN A RETURN CODE OF 4 OR 8
*                                         IS RETURNED TO IT BY THE USER
         SPACE
VCEPARAM DS    0F                      VALIDITY CHECK EXIT PARAMETERS
PDEADR   DS    A                       ADDRESS OF PDE JUST CONSTRUCTED
*
USERWORD DS    F                       USER DATA PASSED IN PARSE INPUT
*                                         PARAMETER LIST
VALMSG   DS    F                       ADDRESS OF SECOND LEVEL MESSAGE
*                                        FROM VALIDITY CHECK
         SPACE
MSGCODE  DS    X                       OFFSET TO MESSAGE ADDRESS
         SPACE
*
* MESSAGE SEGMENT CONTAINING THE LAST PRIMARY MESSAGE ID. THIS IS USED
* AS SEGMENT ONE OF HELP MESSAGES PASSED TO THE I/O SERVICE ROUTINES.
* IT INCLUDES THE FOUR BYTE HEADER REQUIRED BY THE I/O ROUTINES AND
* THE WORD 'ENTER'.
*
PRIMSGID DS    CL20                    PRIMARY MESSAGE SEGMENT
         SPACE
SAVLSLEN DS    H                       USED TO SAVE THE CORE SIZE
*                                         REQUESTED BY THE HELP MESSAGE
*                                         ROUTINE
         SPACE
PLUSSEG  DS    CL5                     PLUS SIGN MESSAGE SEGMENT
         SPACE
*
* SAVE AREAS FOR ADDRESSES OF I/O SERVICE ROUTINES 'LOADED' DURING
* INITIALIZTION.
*
PUTLPTR  DS    A                       PUTLINE SERVICE ROUTINE ADDRESS
*
PUTGPTR  DS    A                       PUTGET SERVICE ROUTINE ADDRESS
         SPACE
*
* SAVE AREA FOR PART OF INPUT PARAMETER LIST PASSED TO THE I/O SERVICE
* ROUTINES. THESE FIELDS MUST BE CONTIGUOUS.
*
SRPARAMS DS    0F                      NAME THE LIST
*
UPTADDR  DS    F                       FIRST WORD OF INPUT PARAMETERS
*
ECTADDR  DS    F                       SECOND WORD OF INPUT PARAMETERS
*
ECBADDR  DS    F                       THIRD WORD OF INPUT PARAMETERS
*
         DS    F                       FOURTH WORD OF INPUT PARAMETERS
         SPACE
***********************************************************************
*                                                              F41448 *
*          ADDITIONS TO PARSE PERMANENT WORKSPACE FOR COBOL    F41448 *
*                     SYMBOLIC DEBUG SUPPORT                   F41448 *
*                                                              F41448 *
***********************************************************************
OPEREND  DS    A                       PTR TO LAST PCE UNDER OPER
*                                                                F41448
RSVWDPCE DS    A                       PTR - PCE BEING USED BY IKJRSVWD
*                                                                F41448
TERMXPCE DS    A                       PTR TO MAJOR TERM PCE     F41448
*                                                                F41448
OPERPCE  DS    A                       PTR TO PCE FOR THIS EXPRESSION
*                                                                F41448
OPERSVE  DS    A                       PTR TO LEFT PAREN OF EXPRESSION
*                                                                F41448
RSVWDSV1 DS    A                       SAVE AREA USED BY IKJRSVWD
*                                                                F41448
RSVWDSV2 DS    A                       SAVE AREA USED BY IKJRSVWD
*                                                                F41448
CBLNKSV1 DS    A                       LINK SAVE AREA FOR RETURN ADDRS
*                                                                F41448
CBLNKSV2 DS    A                       LINK SAVE AREA FOR RETURN ADDRS
*                                                                F41448
ENDNMPTR DS    A                       PTR TO END OF CURRENT DATANAME
*                                                                F41448
CHAINPTR DS    A                       PTR TO CHAIN POINTERS OF  F41448
*                                       DATANAME QUALIFIER PDE'S F41448
*                                                                F41448
PDEPTR   DS    A                       PTR TO NEXT AVAIL. SLOT   F41448
*                                       IN TEMPPDE               F41448
*                                                                F41448
AANC     DS    A                       STORAGE ANCHORS USED TO   F41448
TANC     DS    A                        CONTROL ALLOCATION OF    F41448
OANC     DS    A                        PDE'S FOR DATANAME QUAL  F41448
ENDANC   DS    A                        IN COR GOTTEN VIA STALOC F41448
*                                                                F41448
PRMTPTR  DS    A                       PTR TO FIRST CHAR OF INV  F41448
*                                       DATA FOR SPEC MSG FORMAT F41448
*                                                                F41448
OPERLL   DS    H                       LEN OF PDE FIELDS UNDER OPER
*                                                                F41448
MSGAREA  EQU   *                       PARMS PASSED TO PROMPT FOR
*                                       SPECIAL MSG FORMATTING   F41448
MSGLEN   DS    H                       LEN OF 1ST SEG FOR SPCMSG F41448
MSGADDR  DS    A                       ADDR OF 1ST SEGMENT FOR SPECMSG
*                                                                F41448
DIGITCT  DS    X                       DIGIT COUNTER FOR STRING LEN
*                                                                F41448
ELEMNCT  DS    X                       NUMBER OF SUBSCRIPTS      F41448
*                                                                F41448
QUALCT   DS    X                       NUMBER OF DATANAME QUALIFIERS
*                                                                F41448
CBFLAGS1 DS    X                       FLAG BYTE ONE             F41448
*                                                                F41448
COBOLMOD EQU   X'80'                   A COBOL MACRO PROCESSOR IS
*                                       PROCESSING               F41448
OPERMODE EQU   X'40'                   PROCESSING UNDER AN OPER PCE
SUBSMODE EQU   X'20'                   TERM SUBSCRIPT MODE BIT   F41448
NAMEREQD EQU   X'10'                   TERM - DATANAME EXPECTED NEXT
ERRORBIT EQU   X'08'                   TERM - ERROR HAS OCCURED  F41448
*                                                                F41448
RSVDPRMT EQU   X'04'                   RSVWD HAS BEEN PROMPTED FOR
*                                                                F41448
OPERPRMT EQU   X'02'                   EXPRESSION HAS BEEN PROMPTED FOR
*                                                                F41448
RC16     EQU   X'01'                   A 16 RETURN CODE FROM VALIDITY
*                                                                F41448
*                                       CHECK HAS BEEN ENCOUNTERED
*                                                                F41448
CBFLAGS2 DS    X                       SECOND FLAG BYTE          F41448
*                                                                F41448
SPECMSG  EQU   X'80'                   SPECIAL FORMAT MSG TO BE  F41448
*                                                                F41448
LFTPAREN EQU   X'40'                   A LEFT PAREN IS TO BE ADDED
*                                                                F41448
RHTPAREN EQU   X'20'                   A RIGHT PAREN IS TO BE ADDED
*                                                                F41448
CHAINTRM EQU   X'10'                   A TERM CHAINED UNDER AN OPER
PARS2IN  EQU   X'08'                   IKJPARS2 HAS BEEN LOADED  F41448
*                                                                F41448
PRMTSCAN EQU   X'04'                   USED BY IKJTERM FOR PRMT DATA
*                                                                F41448
BUFPOPED EQU   X'02'                   FLAG FOR SCANF TO SHOW RECURSION
*                                                                F41448
RNGADDED EQU   X'01'                   1ST VALUE OF RNGE HAS BEEN ADDED
*                                                                F41448
*                                                                F41448
CBFLAGS3 DS    X                       THIRD FLAG BYTE - RESERVED
*                                                                F41448
FIRSTNAM EQU   X'80'                   1ST D.N. OF VAR. ENCOUNTERED
*                                                                F41448
CTFOUND  EQU   X'40'                   BEGIN. OF CHN TRM SBSCRPT FND
*                                                                F41448
BLNKFLAG EQU   X'20'                   OPER PTING TO BLNK FOR INVALID
*                                      MESSAGE FOR MSGSETUP      F41448
*                                                                F41448
CBFLAGS4 DS    X                       FOURTH FLAG BYTE          F41448
*                                                                F41448
TRANAREA DS    H                       TERM TRANSLATE AREA FOR OF/IN
*                                                                F41448
CORELEN  DS    H                       LEN OF AREA GOTTEN FOR SPEC MSG
*                                                                F41448
PARS2ADR DS    A                       ADDR OF IKJPARS2 LOAD MODULE
*                                                                F41448
VCONAD   DS    A                       ADDR OF VCON TABLE IN IKJPARS
*                                                                F41448
GOREGSV  DS    A                       RETURN ADDR FROM SUBROUTINES
*                                                                F41448
TERMBASE DS    A                       SAVE AREA FOR TERM BASEREG
*                                                                F41448
OPERBASE DS    A                       SAVE AREA FOR OPER BASEREG
*                                                                F41448
BASE3SV  DS    A                       SAVE AREA - PARSE BASE REG 3
*                                                                F41448
BASE2SV  DS    A                       SAVE AREA - PARSE BASE REG 2
*                                                                F41448
BASE1SV  DS    A                       SAVE AREA - PARSE BASE REG 1
*                                                                F41448
RBASESV1 DS    A                       SAVE AREA - PARSE RBASE   F41448
*                                                                F41448
CBLRET   DS    A                       POINT TO RETURN TO IN THE NEW
*                                                                F41448
*                                       IKJPARS2 LOAD MODULE AFTER
*                                                                F41448
*                                      EXECUTION OF A PARSE SUBROUTINE
*                                                                F41448
COREADDR DS    A                       ADDR OF AREA GOTTEN FOR SPECMSG
*                                                                F41448
AUTOBASE DS    A                       SAVE AREA FOR DATAREG (FOR BSL)
*                                                                F41448
WORKSAVE DS    4A                      WORKREG SAVE AREA FOR LINKAGE
*                                                                F41448
PLINKSV2 DS    A                       SAVE AREA FOR RETURN ADDR FROM
*                                      VALIDITY CHECK AND CODE4  F41448
*
*  INFORMATION NEEDED TO SET UP THE MESSAGE FOR SPECIFYING THE
*  KEYWORD FOR WHICH THE SUBFIELD IS BEING PROMPTED FOR          Y01156
*
KEYPTR   DS    A                       KEYWORD PTR               Y01156
KEYLEN   DS    H                       KEYWORD LENGTH            Y01156
KEYBUF   EQU   *                       KEYWORD MSG BUFFER        Y01156
KEYBUFLN DS    H                       LENGTH OF BUFFER          Y01156
KEYBUFOF DS    H                       OFFSET TO KEYWORD         Y01156
KEYDATA  DS    CL33                    ACTUAL USER KEYWORD       Y01156
         DS    0F
*
* ALLOCATE SPACE IN WHICH TO MOVE THE L FORM OF THE I/O SERVICE ROUTINE
* MACROS.
*
PUTLINE  PUTLINE ,MF=L                 * * * *
         SPACE
PUTGET   PUTGET ,MF=L                  * * * *
         SPACE
         DS    0D                      ALIGN FOR FREEMAIN OF RWORK
*
WORKSZ EQU   *-&WORK                   LENGTH OF COBOL WORK AREA +
*                                       PARSE PREMANENT WORKAREA
         MEND                                                 F41448 */
 %     PWABSL:    ;
 %   DCL WORKSZ CHAR;
 %   WORKSZ='LENGTH(PWORK)';
 %   DCL CBLTPDE CHAR;
 %   CBLTPDE='LENGTH(TEMPPDE)';
 %   DCL LTPDE CHAR;
 %   LTPDE='LENGTH(TEMPPDE2)';
 /*                                                           F41448 */
 DCL   1 PWORK BASED(PWRKBASE) BDY(DWORD),  /*                F41448 */
 /*                                                           F41448 */
                                       /* PARSE PERMANENT WORKSPACE  */
 /*                                                           F41448 */
         2 DUMMY1,                     /* USED TO FIND LEN OF CSWORK */
           4 SAVE1(18) PTR(31),        /* SAVE AREA           F41448 */
           4 ADDRSAVE(4) PTR(31),      /* SAVEAREA FOR ADDRESS RTN./-*/
 /*                                      -IKJEFP03            Y30NQJN*/
           4 P20SAVE(4) PTR(31),       /* IKJEFP20 SAVE AREA  Y02666 */
           4 INTEGER(8) PTR(31) BDY(DWORD),  /* P20 WORK AREA YM5578 */
           4 PDWORD(2) PTR(31) BDY(DWORD), /* SCRATCH/SAVE/CONVERT*/
             6 PDWORD1 CHAR(4),
             6 PDWORD2 PTR(31),
               8 PDWD CHAR(1),
 /*                                                           F41448 */
           4 ENDINPUT PTR(31),         /* LAST INPUT CHAR. ADDRESS   */
 /*                                                           F41448 */
                                       /*USED TO DETERMINE END OF DAT*/
 /*                                                           F41448 */
 /* POINTER TO START OF DATA BEING SCANNED SET BY SKIPB SUBROUTINE   */
 /* ALSO LENGTH OF DATA FIELD. THESE AREAS MUST BE CONTIGUOUS F41448 */
 /*                                                           F41448 */
           4 PPOINTR PTR(31),          /* LAST ENTITY START   F41448 */

           4 PLENGTH FIXED(15),        /* LAST ENTITY LENGTH  F41448 */
 /*                                                           F41448 */
           4 RETCODE PTR(8),           /* RETURN CODE AREA           */
 /*                                                           F41448 */
         2 DUMMY2  BDY(DWORD),         /* TO PUT SUBRWORK ON DWRD BDY*/
 /*                                                           F41448 */
           3 SUBRWORK(2) PTR(31),      /*       SCRATCH/SAVE AREA    */
 /*                                                           F41448 */
         2 XPDL PTR(31),               /* ADDRESS OF PDL             */
 /*                                                           F41448 */
         2 TEMPSAVE PTR(31),           /*USED TO TEMPORARILY SAVE R1 */
 /*                                                           F41448 */
                                       /*BEFORE LINKING TO TRANSLATE */
                                       /* ROUTINE             F41448 */

 /*          PREMANENT WORKSPACE FLAGS                        F41448 */

         2 PFLAGS BIT(8),              /* FIRST FLAG BYTE     F41448 */
 /*                                                           F41448 */
           3 PFLIST BIT(1),            /* CURRENTLY PROCESSING LIST */
 /*                                                           F41448 */
           3 PFDEFLT BIT(1),           /* INDICATES A DEFAULT TAKEN  */
 /*                                                           F41448 */
           3 PFENDF BIT(1),            /* END OF INPUT AREA HAS BEEN */
                                       /* REACHED             F41448 */
 /*                                                           F41448 */
           3 ADREXP BIT(1),            /* INDICATE ADDRESS EXPRESSION*/
 /*                                                           F41448 */
           3 HEXBIT BIT(1),            /* ADDRESS EXPRESSION CONTAINS*/
                                       /* A HEX CHARACTER     F41448 */
 /*                                                           F41448 */
           3 PFBYPAS BIT(1),           /* BYPASS MODE IS TO BE ESTAB*/
 /*                                                           F41448 */
           3 PFNEW BIT(1),             /* USED BY ADDRESS ROUTINE TO */
 /*                                                           F41448 */
                                       /* DENOTE A NEW VALID ADDRESS */
 /*                                                           F41448 */
                                       /* ENTRYNAME (WITH OR WITHOUT */
 /*                                                           F41448 */
                                       /* LOADNAME QUALIFICATION     */
 /*                                                           F41448 */
           3 DECBIT BIT(1),            /* ADDR EXPRESSION IS DECIMAL */
 /*                                                           F41448 */
         2 PFLAGS2 BIT(8),             /* SECOND FLAG BYTE           */
 /*                                                           F41448 */
           3 PFSKPINV BIT(1),          /* VALIDITY CHECK ROUTINE     */
 /*                                                           F41448 */
                                       /* REQUESTED A REENTER MESSAGE*/
                                       /* ONLY                F41448 */
 /*                                                           F41448 */
           3 RNGEVAL1 BIT(1),          /* ADDRESS ROUTINE PROCESSED  */
                                       /* FIRST VAL  OF RANGE F41448 */
                                       /* PARAMETER           F41448 */
 /*                                                           F41448 */
           3 ONERBIT BIT(1),           /* CONTROL BIT USED DURING    */
 /*                                                           F41448 */
                                       /* SCAN BY ADDRESS ROUTINE    */
 /*                                                           F41448 */
           3 TWORBIT BIT(1),           /* CONTROL BIT USED DURING    */
 /*                                                           F41448 */
                                       /* SCAN BY ADDRESS ROUTINE    */
 /*                                                           F41448 */
           3 RNGEVAL2 BIT(1),          /* ADDRESS ROUTINE PROCESSED  */
 /*                                                           F41448 */
                                       /* SECOND VALUE OF RANGE      */
                                       /* PARAMETER           F41448 */
 /*                                                           F41448 */
           3 REGBIT BIT(1),            /* CONTROL BIT USED DURING    */
 /*                                                           F41448 */
                                       /* SCAN BY ADDRESS ROUTINE    */
 /*                                                           F41448 */
           3 FLTERBIT BIT(1),          /* CONTROL BIT USED DURING    */
 /*                                                           F41448 */
                                       /* SCAN BY ADDRESS ROUTINE    */
 /*                                                           F41448 */
           3 BREAKBIT BIT(1),          /* USED BY ADDRESS ROUTINE TO */
 /*                                                           F41448 */
         2 PFLAGS3 BIT(8),             /* THIRD FLAG BYTE            */
           3 PFSTPRMT BIT(1),          /* PROMPT FOR STRING   F41448 */
 /*                                                           F41448 */
           3 PFONE BIT(1),             /* INDICATES AT LEAST ONE PDE */
                                       /* HAS BEEN BUILT      F41448 */
 /*                                                           F41448 */
           3 LOADBIT BIT(1),           /* CONTROL BIT USED BY ADDRESS*/
 /*                                                           F41448 */
                                       /* RTN DENOTING LOADNAME DATA */
 /*                                                           F41448 */
           3 ENTRYBIT BIT(1),          /* CONTROL BIT USED BY ADDRESS*/
 /*                                                           F41448 */
                                       /* RTN DENOTING ENTRYNAME DATA*/
 /*                                                           F41448 */
           3 PFNULL BIT(1),            /* INDICATES A NULL LINE WAS  */
 /*                                                           F41448 */
                                       /* ENTERED AFTER A PROMPT     */
 /*                                                           F41448 */
           3 LPRNFND BIT(1),           /* USED TO INDICATE A LEFT    */
 /*                                                           F41448 */
                                       /* PAREN WAS FND BY THE ERROR */
                                       /* ROUTINE             F41448 */
 /*                                                           F41448 */
           3 PFSPACE BIT(1),           /* USED TO INDICATE A  F41448 */
 /*                                                           F41448 */
                                       /* POSITIONAL SPACE PARAMETER */
 /*                                                           F41448 */
                                       /* WAS ENCOUNTERED SO THAT THE*/
 /*                                                           F41448 */
                                       /* SO THAT THE POSITIONAL     */
 /*                                                           F41448 */
                                       /* STRING RTN KNOWS WHEN TO   */
                                       /* END THE STRING      F41448 */
 /*                                                           F41448 */
           3 PFMORE BIT(1),            /* USED TO INDICATE IF THE    */
 /*                                                           F41448 */
                                       /* LEFT PAREN OF A SUBFIELD   */
 /*                                                           F41448 */
                                       /* WAS ALSO USED AS THE LEFT  */
 /*                                                           F41448 */
                                       /* PAREN OF THE LIST WITHIN   */
                                       /* THE SUBFIELD        F41448 */
 /*                                                           F41448 */
         2 PFLAGS4 BIT(8),             /* FOURTH FLAG BYTE           */
 /*                                                           F41448 */
           3 PFENDLIM BIT(1),          /* INDICATES END DILIMETER FOR*/
 /*                                                           F41448 */
                                       /* SELF-DILIMITING STRING HAS */
                                       /* BEEN FOUND          F41448 */
           3 PFLSTEND BIT(1),          /* INDICATES LIST END  F41448 */
 /*                                                           F41448 */
                                       /* DILIMETER HAS BEEN FOUND   */
 /*                                                           F41448 */
           3 PFVCMSG BIT(1),           /* INDICATES A VALIDITY CHECK */
 /*                                                           F41448 */
                                       /* ROUTINE HAS SUPPLIED A     */
                                       /* SECOND LEVEL MESSAG F41448 */
 /*                                                           F41448 */
           3 PFPDDATA BIT(1),          /* INDICATE PROCESSING PROMPT */
                                       /* OR DEFAULT DATA     F41448 */
 /*                                                           F41448 */
           3 PFSLASH BIT(1),           /* INDICATE DSNAME/USERID RTN */
 /*                                                           F41448 */
                                       /* IS SCANNING FOR PASSWORD   */
 /*                                                           F41448 */
           3 PFENDSET BIT(1),          /* INDICATES BACKUP POINTER   */
 /*                                                           F41448 */
                                       /* FOR ENDINPUT HAS BEEN SET  */
 /*                                                           F41448 */
           3 PFNOPOP BIT(1),           /* INDICATES STACK IS NOT TO  */
 /*                                                           F41448 */
                                       /* BE POPPED IF ALL SEPARATORS*/
                                       /* IN PROMPT BUFFER    F41448 */
 /*                                                           F41448 */
           3 CKRANGE BIT(1),           /* ADDR RTN SHOULD CHECK FOR  */
                                       /* RANGE               F41448 */
 /*                                                           F41448 */
         2 PFLAGS5 BIT(8),             /* FIFTH FLAG BYTE            */
 /*                                                           F41448 */
           3 PFSQSTR BIT(1),           /* SPECIAL QSTRING HANDLING   */
                                       /* DONE AT LEAST ONCE  F41448 */
 /*                                                           F41448 */
           3 INVPRMPT BIT(1),          /* CHECK FOR INVALID MSG PRMT */
 /*                                                           F41448 */
           3 SUBFLG BIT(1),           /*CHECK FOR SUBFIELD PROCESSING*/
 /*                                                           F41448 */
           3 INVFLG BIT(1),            /* CHECK FOR INVALID INPUT FOR
                                          USER IN NOPROMPT MODE      */
 /*                                                           F41448 */
           3 BYPASFLG BIT(1),           /*PREVIOUS PCE SPECIFIED BYPAS
                                          OR PRINT INHIBIT MODE      */
 /*                                                           F41448 */
           3 RD4 BIT(1),               /* RESERVED                   */
 /*                                                           F41448 */
           3 RD5 BIT(1),               /* RESERVED                   */
 /*                                                           F41448 */
           3 RD6 BIT(1),               /* RESERVED                   */

         2 PFLAGS6 BIT(8),             /* SIXTH FLAG BYTE      Y01156*/
         2 PFLAGS7 BIT(8),             /* SEVENTH FLAG BYTE    Y02666*/
         2 PFLAGS8 BIT(8),             /* EIGHTH FLAG BYTE     Y02666*/
 /*                                                           F41448 */
 /*        WORKSPACE NEEDED FOR STORAGE ALLOCATION SUBROUTINE        */
 /*                                                           F41448 */
         2 STORANC CHAR(8),
           4 PANCHOR PTR(31),          /* ANCHOR FOR STORAGE CHAIN   */
 /*                                                           F41448 */

 /*                                                           F41448 */
           4 PANCHORT PTR(31),         /* INTERNAL MSS CHAIN FREE    */
 /*                                                           F41448 */
                                       /*  Q ANCHOR                  */

 /*                                                           F41448 */
 /*   PARAMETER LIST FOR CONDITIONAL GETMAIN SUBROUTINE              */

 /*                                                           F41448 */
         2 PGETLIST,
 /*                                                           F41448 */
           5 PGETLNTH FIXED(31),       /* LENGTH REQUESTED           */
 /*                                                           F41448 */
           5 PGETRADR PTR(31),         /* ADDR IN WHICH ALLOCATED    */
 /*                                                           F41448 */
                                       /* SPACE ADDR IS PLACED       */
 /*                                                           F41448 */
           5 PGETMDSP FIXED(15),       /* MODE AND SUBPOOL           */

 /*  THE FIRST INPUT PUSHDOWN STACK. IF THIS STACK FILLS UP A F41448 */
 /*  GETMAIN IS ISSUED FOR AN ADDITIONAL STACK. THIS PROCESS  F41448 */
 /*  CONTINUES INDEFINITELY.  THE STACKS ARE BACKWARD CHAINED F41448 */
 /*  WITH THE FIRST STACKS CHAIN WORD REMAINING ZERO.EACH NEW F41448 */
 /*  ENTRY IN THE STACK CONSISTS OF TWO WORDS.  THE FIRST IS  F41448 */
 /*  THE CONTENTS OF XINPUT,AND THE SECOND IS THE CONTENTS OF F41448 */
 /*  ENDINPUT.  THE NEXT FREE AREA IN THE STACK IS FOUND BY   F41448 */
 /*  USING PIPDLX AS AN INDEX INTO THE STACK.                 F41448 */

 /*                                                           F41448 */
         2 PIPDLCUR PTR(31),           /* ADDRESS OF CURRENT INPUT   */
                                       /* PUSHDOWN STACK      F41448 */
 /*                                                           F41448 */
         2 PIPDLCHN PTR(31),           /* STORAGE CHAIN - SHOULD     */
         2 NME(20) PTR(31),            /*FIRST INPUT PUSHDOWN F41448 */
                                       /* STACK               F41448 */
 /*                                                           F41448 */
         2 PIPDLX PTR(8),              /*INDEX TO NEXT FREE AREA IN  */
 /*                                                           F41448 */
                                       /*CURRENT PUSHDOWN STACK      */
 /*                                                           F41448 */
         2 PLINKSV1 PTR(31),           /*SAVE AREA FOR RETURN ADDRESS*/
 /*                                                           F41448 */
                                       /*OF LINK1 ROUTINES WHICH USE */
 /*                                                           F41448 */
                                       /*LINK2 ROUTINES AS SUBRTNS   */
 /*                                                           F41448 */
         2 INVPSAVE PTR(31),           /*BEGINNING ADDR OF PARM -USED*/
                                       /*IF PARM IS INVALID   F41448 */
 /*  ADDRESSES FOR KEYWORD SCANS                              F41448 */
 /*                                                           F41448 */
         2 PKEYWDPS PTR(31),           /*PTR TO CURRENT NAME ENTRY   */
 /*                                                           F41448 */
         2  PKEYWDPC PTR(31),          /*PTR TO CURRENT IKJKEYWD PCE */
 /*                                                           F41448 */
         2 PKEYWDPX PTR(31),           /*TO SAVE IKJKEYWD PCE ADDR   */
 /*                                                           F41448 */
         2 PKEYWDTB PTR(31),           /*PCL RESULT DURING KEYWORD   */
                                       /*PROCESSING           F41448 */
 /*                                                           F41448 */
         2 PKEYWDPM PTR(31),           /*SAVE AREA FOR PDE DURING    */
                                       /*KEYWORD PROCESSING   F41448 */
         2 PTABLEAD PTR(31),           /*START OF PCL ADDRESS F41448 */
         2 PTABLEND PTR(31),           /*END OF PCL ADDRESS   F41448 */
 /*                                                           F41448 */
 /* THE FOLLOWING FIELDS ARE USED AS TEMPORARY POSITIONAL PDE.F41448 */
 /* THE FIELDS ARE MOVED FROM HERE TO THE ACTUAL PDE BY THE   F41448 */
 /* POSITIONAL EXIT ROUTINE. THE AREAS MUST BE CONTIGUOUS     F41448 */
 /*                                                           F41448 */
         2 TEMPPDE,                    /* NAME OF TEMPORARY AREA     */
           4 TEMPPDE2,                 /*LEN FOR NORMAL PARSE F41448 */
 /*                                                           F41448 */
             7 TEMPFLD1,
               9 DATAPTR1 PTR(31),     /*PTR TO STRING, PSTRING      */
 /*                                                           F41448 */
                                       /*QSTRING,PASSWORD,DSNAME     */
                                       /*LOADNAME, OR VALUE   F41448 */
               9 DATALEN1 FIXED(15),   /*LENGTH OF ABOVE DATA F41448 */
               9 DATAFLA1 BIT(8),      /*FLAG BYTE            F41448 */
               9 DATAFLB1 BIT(8),      /*TYPE CODE FOR VALUE  F41448 */
 /*                                                           F41448 */
             7 TEMPFLD2,
               9 DATAPTR2 PTR(31),     /*PTR TO MEMBER OR ENTRY NAME */
               9 DATALEN2 FIXED(15),   /*LENGTH OF ABOVE DATA F41448 */
               9 DATAFLA2 BIT(8),      /*FLAG BYTE            F41448 */
               9 DATAFLB2 BIT(8),      /*RESERVED BYTE        F41448 */
 /*                                                           F41448 */
             7 TEMPFLD3,
               9 DATAPTR3 PTR(31),     /*PTR TO PASSWORD OR ADDRESS  */
               9 DATALEN3 FIXED(15),   /*LENGTH OF ABOVE DATA F41448 */
               9 DATAFLA3 BIT(8),      /*FLAG BYTE            F41448 */
               9 DATAFLB3 BIT(8),      /*RESERVED BYTE        F41448 */
 /*                                                           F41448 */
               9 DATAFLG BIT(8),       /*REGISTER NOTATION FLAGS     */
               9 DATASGN BIT(8),       /*SIGN OF FIRST VALUE  F41448 */
 /*                                                           F41448 */
               9 DATAICT FIXED(15),    /*INDIRECT ADDRESSING COUNT   */
 /*                                                           F41448 */
               9 DATAEXP PTR(31),      /*PTR TO NEXT EXPRESSION      */
                                       /* VALUE PDE           F41448 */
               9 DATAUSER FIXED(31),   /*USER WORD            F41448 */
 /*                                                           F41448 */
           4 CBADD(11) PTR(31),        /*COBOL ADDITIONS TO PARSE    */
                                       /*TEMPORARY PDE        F41448 */
 /*                                                           F41448 */
         2 ENDBAKUP PTR(31),           /*BACKUP FOR ENDINPUT IF      */
                                       /* PFSCANX FLAG IS ON  F41448 */
 /*                                                           F41448 */
         2 PDELIM CHAR(1),             /*SELF-DEFINED DELIMETER      */
 /*                                                           F41448 */
                                       /*STORED BY DELIMETER ROUTINE */
         2 PPCOUNT PTR(8),             /*POSITIONAL DATA SIZE F41448 */
         2 PPDESIZE PTR(8),            /*POSIITONAL PDE SIZE  F41448 */
 /*                                                           F41448 */
         2 PERRCODE PTR(8),            /*INDEX TO RESCAN ADDR TABLE  */
         2 PKEYWDVL FIXED(15),         /*TO SAVE VALUE DURING F41448 */
                                       /* KEYWORD LOOKUP      F41448 */
 /*                                                           F41448 */
         2 RNG2ADDR PTR(31),           /*ADDR OF 2ND PDE FOR A RANGE */
 /*                                                           F41448 */
         2 SEGLIST(5) PTR(31),         /*LIST OF MESSAGE SEGMENTS    */
 /*                                                           F41448 */
                                       /* FOR I/O SERVICE ROUTINES   */
 /*                                                           F41448 */
         2 PREVPDEL PTR(31),           /*USED TO CONTAIN THE PREV-   */
 /*                                                           F41448 */
                                       /*IOUS PDE ADDRESS SO THAT    */
 /*                                                           F41448 */
                                       /*THE VALIDITY CHECK ROUTINE  */
 /*                                                           F41448 */
                                       /*CAN FETCH IT WHEN A RETURN  */
 /*                                                           F41448 */
                                       /*CODE OF 4 OR 8 IS RETURNED  */
                                       /*TO IT BY THE USER    F41448 */
 /*                                                           F41448 */
         2 VCEPARAM,                   /*VALIDITY CHECK EXIT PARAM-  */
                                       /* ETERS               F41448 */
           11 PDEADR PTR(31),          /*ADDRESS OF PDE JUST  F41448 */
                                       /* CONSTRUCTED         F41448 */
 /*                                                           F41448 */
           11 USERWORD FIXED(31),      /*USER DATA PASSED IN PARSE   */
 /*                                                           F41448 */
                                       /* INPUT PARAMETER LIST       */
 /*                                                           F41448 */
           11 VALMSG PTR(31),          /*ADDRESS OF SECOND LEVEL MSG */
                                       /* FROM VALIDITY CHECK F41448 */
           11 MSGCODE PTR(8),          /*OFFSET TO MSG ADDRES F41448 */
 /*  MESSAGE SEGMENT CONTAINING THE LAST PRIMARY MESSAGE ID.  F41448 */
 /*  THIS IS USED AS SEGMENT 1 OF HELP MESSAGES PASSED TO THE F41448 */
 /*  I/O SERVICE ROUTINES. IT INCLUDES THE FOUR BYTE HEADER   F41448 */
 /*  REQUIRED BY THE I/O ROUTINES, AND THE WORD 'ENTER'.      F41448 */
 /*                                                           F41448 */
         2 PRIMSGID CHAR(20),          /* PRIMARY MESSAGE SEGMENT    */
 /*                                                           F41448 */
         2 SAVLSLEN FIXED(15),         /* USED TO SAVE THE CORE SIZE */
 /*                                                           F41448 */
                                       /* REQUESTED BY THE HELP      */
                                       /* MESSAGE ROUTINE.    F41448 */
 /*                                                           F41448 */
         2 PLUSSEG CHAR(5),            /* PLUS SIGN MESSAGE SEGMENT  */
 /*                                                           F41448 */
 /*                                                           F41448 */
 /*  SAVE AREAS FOR ADDRESSES OF I/O SERVICE ROUTINES 'LOADED' DURING*/
 /*  INITIALIZATION                                           F41448 */
 /*                                                           F41448 */
 /*                                                                  */
         2 PUTLPTR PTR(31),            /* NAME THE LIST              */
         2 PUTGPTR PTR(31),            /* PTR TO IKJPTGT RTN F41448  */
 /*                                                           F41448 */
         2 UPTADDR PTR(31),            /* FIRST WORD OF INPUT PARMS  */
 /*                                                           F41448 */
         2 ECTADDR PTR(31),            /* SECOND WORD OF INPUT PARMS */
 /*                                                           F41448 */
         2 ECBADDR PTR(31),            /* THIRD WORD OF INPUT PARMS  */
 /*                                                           F41448 */
         2 * PTR(31),                  /* FOURTH WORD OF INPUT PARMS */

 /*                                                           F41448 */
         2 OPEREND  PTR(31),           /* PTR TO LAST PCE UNDER OPER */

 /*                                                           F41448 */
         2 RSVWDPCE  PTR(31),          /*  PTR TO PCE BEING USED BY  */
                                       /* IKJRSVWD            F41448 */

 /*                                                           F41448 */
         2 TERMXPCE  PTR(31),          /*  PTR TO MAJOR TERM         */

 /*                                                           F41448 */
         2 OPERPCE  PTR(31),           /*  PTR TO CURRENT OPER PCE   */

 /*                                                           F41448 */
         2 OPERSVE  PTR(31),           /*  PTR TO LEFT PAREN OF EXPR.*/

         2 RSVWDSV1  PTR(31),          /*  LINK REG. SAV AREA F41448 */

         2 RSVWDSV2  PTR(31),          /* LINK REG. SAVE AREA F41448 */

         2 CBLNKSV1  PTR(31),          /* LINK REG. SAVE AREA F41448 */

         2 CBLNKSV2  PTR(31),          /* LINK REG. SAVE AREA F41448 */

 /*                                                           F41448 */
         2 ENDNMPTR  PTR(31),          /* PTR TO END OF CURRENT      */
 /*                                                           F41448 */
                                       /* DATANAME BEING SCANNED     */

 /*                                                           F41448 */
         2 CHAINPTR  PTR(31),          /*PTR TO CHAIN WD FOR DATANAME*/
                                       /* QUALIFIER PDE'S     F41448 */

 /*                                                           F41448 */
         2 PDEPTR  PTR(31),            /* PTR TO NEXT AVAIL. SPACE IN*/
                                       /* THE TEMPPDE         F41448 */

 /*                                                           F41448 */
         2 AANC  PTR(31),              /* ANCHORS TO CONTROL THE     */
 /*                                                           F41448 */
         2 TANC  PTR(31),              /* ALLOCATION OF DATANAME     */
 /*                                                           F41448 */
         2 OANC  PTR(31),              /* QUALIFIER PDE'S - IN CORE  */
 /*                                                           F41448 */
         2 ENDANC  PTR(31),            /* GOTTEN VIA STALOC ROUTINE  */

 /*                                                           F41448 */
         2 PRMTPTR  PTR(31),           /* PTR TO START OF INVALID    */
 /*                                                           F41448 */
                                       /* DATA FOR SPECIAL MSG.      */

 /*                                                           F41448 */
         2 OPERLL  FIXED(15),          /*LEN OF PDE FLDS UNDER OPER  */

 /*                                                           F41448 */
         2 MSGAREA BDY(BYTE),          /* PARMS PASSED TO PROMPT FOR */
 /*                                                           F41448 */
                                       /* SPECIAL MSG. CONSTRUCTION  */
 /*                                                           F41448 */
           7  MSGLEN  FIXED(15),       /* LENGTH OF FIRST SEGMENT    */
 /*                                                           F41448 */
           7  MSGADDR PTR(31),         /* ADDR OF FIRST SEGMENT      */

 /*                                                           F41448 */
         2 DIGITCT  PTR(8),            /* DIGIT COUNTER FOR STRINGS  */

 /*                                                           F41448 */
         2 ELEMNCT  PTR(8),            /* NUMBER OF SUBSCRIPTS       */

 /*                                                           F41448 */
         2 QUALCT  PTR(8),             /* NUMBER OF QUALIFIERS       */

         2  CBFLAGS1 BIT(8),           /* FIRST FLAG BYT      F41448 */
 /*                                                           F41448 */
            7  COBOLMOD BIT(1),        /* COBOL PROCESSING SWITCH    */
 /*                                                           F41448 */
            7  OPERMODE BIT(1),        /* EXPRESSION PROCESSING SW   */
 /*                                                           F41448 */
            7  SUBSMODE BIT(1),        /* TERM - SUBSCRIPT MODE SW   */
 /*                                                           F41448 */
            7  NAMEREQD BIT(1),        /* TERM - DATANAME EXPECTED   */
 /*                                                           F41448 */
            7  ERRORBIT BIT(1),        /* TERM - ERROR HAS OCCURED   */
 /*                                                           F41448 */
            7  RSVDPRMT BIT(1),        /* RSVWD HAS BEEN PRMPTED FOR */
            7  OPERPRMT BIT(1),        /* EXPRESSION HAS BEEN F41448 */
 /*                                                           F41448 */
                                       /* PROMPTED FOR BY OPER       */
 /*                                                           F41448 */
            7  RC16     BIT(1),        /* A 16 RETURN CODE HAS BEEN  */
 /*                                                           F41448 */
                                       /* ENCOUNTERED FROM VALIDITY  */
                                       /* CHECK ROUTINE       F41448 */

         2  CBFLAGS2 BIT(8),           /* SECOND FLAG BYTE    F41448 */
 /*                                                           F41448 */
            7  SPECMSG BIT(1),         /* SPECIAL MSG. FORMAT IS TO  */
 /*                                                           F41448 */
                                       /* BE USED IN PROMPTING       */
 /*                                                           F41448 */
            7  LFTPAREN BIT(1),        /* A LEFT PAREN IS TO BE      */
 /*                                                           F41448 */
                                       /* ADDED TO SPECIAL MSG       */
 /*                                                           F41448 */
            7  RHTPAREN BIT(1),        /* A RIGHT PAREN IS TO BE     */
 /*                                                           F41448 */
                                       /* ADDED TO SPECIAL MSG. TEXT */
 /*                                                           F41448 */
            7  CHAINTRM BIT(1),        /* A TERM CHAINED FROM AN     */
 /*                                                           F41448 */
                                       /* OPER IS BEING PROCESSED    */
 /*                                                           F41448 */
            7  PARS2IN BIT(1),         /* PARS2 HAS BEEN LOADED      */
 /*                                                           F41448 */
            7  PRMTSCAN BIT(1),        /* USED BY TERM FOR PRMT DATA */
 /*                                                           F41448 */
            7  BUFPOPED BIT(1),        /* RECURSION IN SCANF ROUTINE */
 /*                                                           F41448 */
            7  RNGADDED BIT(1),        /* 1ST VALUE OF RNG ADDED     */

         2  CBFLAGS3 BIT(8),           /* FLAG BYTE THREE     F41448 */
 /*                                                           F41448 */
            7  FIRSTNAM BIT(1),        /* 1ST DN. OF VAR ENCOUNTERED */
 /*                                                           F41448 */
            7 CTFOUND BIT(1),          /*BEGIN. OF CHNTRM SBSCRPT FND*/
 /*                                                           F41448 */
            7 BLNKFLAG BIT(1),         /* OPER PTING AT BLNK FOR     */
                                       /* INVALID MSG. FORMAT F41448 */

 /*                                                           F41448 */
         2  CBFLAGS4 BIT(8),           /* FLAG BYTE FOUR - RSVD      */

 /*                                                           F41448 */
         2 TRANAREA CHAR(2) BDY(HWORD),/* TRANSLATE AREA FOR TERM    */

         2 CORELEN FIXED(15),          /* RESERVED            F41448 */

 /*                                                           F41448 */
         2 PARS2ADR PTR(31),           /* ADDR OF IKJPARS2 LOAD MOD  */

 /*                                                           F41448 */
         2 VCONAD PTR(31),             /*ADDR OF VCON TAB IN IKJPARS */

 /*                                                           F41448 */
         2 GOREGSV PTR(31),            /*RETURN ADDR FROM SUBROUTINE */

 /*                                                           F41448 */
         2 TERMBASE PTR(31),           /*TERM BASE REG SAVE AREA     */

 /*                                                           F41448 */
         2 OPERBASE PTR(31),           /*OPER BASE REG SAVE AREA     */

 /*                                                           F41448 */
         2 BASE3SV  PTR(31),           /*SAVE AREA - PARSE BASE REG3 */

 /*                                                           F41448 */
         2 BASE2SV  PTR(31),           /*SAVE AREA - PARSE BASE REG2 */

 /*                                                           F41448 */
         2 BASE1SV  PTR(31),           /*SAVE AREA - PARSE BASE REG1 */

 /*                                                           F41448 */
         2 RBASESV  PTR(31),           /*SAVE AREA - PARSE RBASE     */

 /*                                                           F41448 */
         2 CBLRET PTR(31),             /* POINT TO RETURN TO IN THE  */
 /*                                                           F41448 */
                                       /* NEW IKJPARS2 LOAD          */
 /*                                                           F41448 */
                                       /* AFTER EXECUTION OF ANY     */
 /*                                                           F41448 */
                                       /* SUBROUTINE IN IKJPARS      */
 /*                                                           F41448 */
         2 COREADDR PTR(31),           /* ADDR OF CORE GOTTEN FOR MSG*/

 /*                                                           F41448 */
         2 AUTOBASE PTR(31),           /*SAVE AREA FOR DATAREG (BSL) */

 /*                                                           F41448 */
         2 WORKSAVE(4) PTR(31),        /* WORKREG SAVE AREA -LINKAGE */

 /*                                                           F41448 */
         2 PLINKSV2 PTR(31),           /* RETURN ADDR SAVE AREA FROM */
 /*                                                           F41448 */
                                       /* VALIDITY CHECK AND CODE4   */
 /*                                                           F41448 */
         2 KEYPTR PTR(31),             /* KEYWORD PTR          Y01156*/
         2 KEYLEN FIXED(15),           /* USER KEYWORD LENGTH  Y01156*/
         2 KEYBUF CHAR(37) BDY(HWORD), /* 2ND SEGMENT FOR SUBFIELD-
                                          PROMPT               Y01156*/
          6 KEYBUFLN FIXED(15),        /* ENTIRE SEGMENT LENGTHY01156*/
          6 KEYBUFOF FIXED(15),        /* OFFSET IN PRIMARY MSGY01156*/
          6 KEYDATA CHAR(33);          /* USER ENTERED KEYWORD Y01156*/
 /*  ALLOCATE SPACE IN WHICH TO MOVE THE L FORM OF THE I/O    F41448 */
 /*  SERVICE ROUTINE MACROS.                                  F41448 */
 /*                                                           F41448 */
 GENERATE DATA;
         DS   0F
PUTLINE  PUTLINE ,MF=L                 * * * *                   F41448
         SPACE
PUTGET   PUTGET ,MF=L                  * * * *                   F41448
         SPACE
         DS    0D                      ALIGN FOR FREEMAIN OF RWORK
 @ENDGEN
 /*  END OF IKJEFPWA                                          F41448 */
./ ADD NAME=IKJEFUAD
*          %GOTO  UADGO;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*                       I K J E F U A D
*                UADS STRUCTURE MAPPING MACR0
*
*    USE OF THE COMPILE VARIABLES MAKES POSSIBLE THE SELECTIVE
*    INCLUSION OF THE INDIVIDUAL AREAS OF MAPPING
*
* STATUS -- CHANGE LEVEL --   02-000               12-15-1972
*
*           CHANGE LEVEL --   04-000               04/25/1975
*                                                                87333
*        DUE TO ASSEMBLY ERRORS (ASM XF, AND H), THE AIF PROCESSING
*        AND VARIABLES HAVE BEEN CHANGED.  G. POSTPISCHIL        87333
*
*   A 355010-355040,569010-569040                               DZ04005
*   A 350550,564510,564910 RE-STRUCTURE FOR CORRECT BIT SET    @ZA18185
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
*%UADGO:     ;
*        %GOTO ACTMC1;                                               /*
         MACRO
         IKJEFUAD  &OPTS                                         87333
         LCLB  &DSPL,&ALL,&HDR,&POB,&AOB,&ROB,&PDB,&ADB,&RDB,&FSQ,&GNL
         LCLA  &I,&N                                             87333
&N       SETA  N'&SYSLIST    GET NUMBER OF PARAMETERS            87333
.LOOP    AIF   (&I GE &N).LOOPED                                 87333
&I       SETA  &I+1                                              87333
&DSPL    SETB  ('&SYSLIST(&I)' EQ 'DSPL')                        87333
&ALL     SETB  ('&SYSLIST(&I)' EQ 'ALL')                         87333
&HDR     SETB  ('&SYSLIST(&I)' EQ 'HDR')                         87333
&POB     SETB  ('&SYSLIST(&I)' EQ 'POB')                         87333
&AOB     SETB  ('&SYSLIST(&I)' EQ 'AOB')                         87333
&ROB     SETB  ('&SYSLIST(&I)' EQ 'ROB')                         87333
&PDB     SETB  ('&SYSLIST(&I)' EQ 'PDB')                         87333
&ADB     SETB  ('&SYSLIST(&I)' EQ 'ADB')                         87333
&RDB     SETB  ('&SYSLIST(&I)' EQ 'RDB')                         87333
&FSQ     SETB  ('&SYSLIST(&I)' EQ 'FSQ')                         87333
&GNL     SETB  ('&SYSLIST(&I)' EQ 'GNL')                         87333
         AGO   .LOOP                                             87333
.LOOPED  SPACE 3
         AIF   (&ALL).HDR1   CHK TO DO ALL                       87333
         AIF   (&HDR).HDR1   CHK TO DO HEADER BLOCK              87333
         AIF   (&GNL).GOB1   CHK TO DO GENERAL OFFSET            87333
         AIF   (&POB).POB1   CHK TO DO PASSWD OFFSET             87333
         AIF   (&AOB).AOB1   CHK TO DO ACCTNM OFFSET             87333
         AIF   (&ROB).ROB1   CHK TO DO PROCNAME OFFSET           87333
         AIF   (&PDB).PDB1   CHK TO DO PASSWD DATA               87333
         AIF   (&ADB).ADB1   CHK TO DO ACCTNM DATA               87333
         AIF   (&RDB).RDB1   CHK TO DO PROCNAME DATA             87333
         AIF   (&FSQ).FSQ1   CHK TO DO FREE SPACE ELEMENT        87333
&ALL     SETB  1                                                 87333
         SPACE 1
.HDR1    ANOP
         AIF   (NOT &DSPL).HDRA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                     H E A D E R   B L O C K                         *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I---------------------I---------------------I         *
*          0    I UADSBLNG            I UADSFSQP            I         *
*               I---------------------I---------------------I         *
*          4    I UADSUSER                                  I         *
*               I                                           I         *
*               I---------------------I---------------------I         *
*          12   I UADSBN01            I UADSMAXC            I         *
*               I---------------------I---------------------I         *
*          16   I UADSATTR            I UADSINST            I         *
*               I---------------------I---------------------I         *
*          20   I UADSUPTP                                  I         *
*               I-------------------------------------------I         *
*          24   I UADSPWD1                                  I         *
*               I-------------------------------------------I         *
*          28   I UADSPERP                                  I         *
*               I-------------------------------------------I         *
*          32   I UADSDEST                                  I         *
*               I                                           I         *
*               I----------I----------I----------I----------I         *
*          40   I UADSSUBH I UADSSUBC I UADSSUBM I UADSSOUT I         *
*               I----------I----------I----------I----------I         *
*          44   I RESERVED                                  I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.HDRA    ANOP
         SPACE 1
DHED     DSECT ,HEDBPTR
         SPACE 1
         DS    0F                      ALIGN TO WORD BOUNDARY
UADSMHDR DS    0CL16                   COMMON HEADER AREA
UADSBLNG DS    AL2                     BLOCK LENGTH
UADSFSQP DS    AL2                     OFFSET TO INITIAL FSQE (FREE
**                                     ..SPACE QUEUE ELEMENT)
UADSUSER DS    CL8                     USERID                    87334
UADSBN01 DS    0BL2                    FLAGS
         DS    BL1                     FIRST BYTE OF FLAGS -- RESERVED
         DS    BL1                     SECOND BYTE OF FLAGS
UADSNUSP EQU   X'80'                   ..0 -- NO NON-USABLE SPACE
**                                     ..1 -- ONLY NON-USABLE SPACE
**                                     .......EXISTS IN THIS BLOCK
UADSEXPF EQU   X'40'                   ..0 -- OLD FORMAT UADS
**                                     ..1 -- NEW EXPANDED FORMAT UADS
**                                     .......EXISTS IN THIS BLOCK
UADSXBLK EQU   X'20'                   ..0 -- EXTRA BLOCK NOT AVAILABLE
**                                     ..1 -- EXTRA BLOCK IS AVAILABLE
UADSXUSD EQU   X'10'                   ..0 -- EXTRA BLOCK NOT USED
**                                     ..1 -- EXTRA BLOCK IS USED
UADSMAXC DS    AL2                     MAXIMUM CORE SIZE ALLOTTABLE
**                                     ..TO THIS USER
UADSATTR DS    0BL2                    SYSTEM ATTRIBUTES OF USERID
         DS    BL1                     FIRST BYTE OF IBM FLAGS
USATR00  EQU   X'80'                   ..0 -- NO OPERATOR CAPABILITY
**                                     ..1 -- OPERATOR CAPABILITY
USATR01  EQU   X'40'                   ..0 -- NO ACCOUNT CAPABILITY
**                                     ..1 -- ACCOUNT CAPABILITY
USATR02  EQU   X'20'                   ..0 -- NO JCL CAPABILITY
**                                     ..1 -- JCL CAPABILITY
USATR03  EQU   X'10'                   ..0 -- NO MOUNT CAPABILITY
**                                     ..1 -- MOUNT CAPABILITY
USATR04  EQU   X'04'                   ..0 -- EDIT RECOVER CAPABILTY
**                                     ..1 -- NORECOVER CAPIBILTY
**                                     THIS WAS A 08 EQU      @ZA18185
**     NOTE--  BIT USATR04 IS USED DIFFERENTLY
**             1 MEANS NO EDIT RECOVERY CAPABILTY FOR THE USER
**                                     FLAGS 5 THROUGH 15 ARE
**                                     ..RESERVED FOR IBM USE
         DS    BL1                     SECOND BYTE OF FLAGS, 8 -- 15
         SPACE 1
UADSINST DS    BL2                     FOR INSTALLATION USE
UADSUPTP DS    AL4                     OFFSET TO CURRENT UPT
UADSPWD1 DS    AL4                     OFFSET TO FIRST PASSWORD OFFSET
UADSPERP DS    AL4                     OFFSET TO PERFORMANCE GROUP
UADSDEST DS    CL8                     DESTINATION
UADSSUBH DS    CL1                     HOLD CLASS              @DZ04005
UADSSUBC DS    CL1                     JOB CLASS               @DZ04005
UADSSUBM DS    CL1                     MESSAGE CLASS           @DZ04005
UADSSOUT DS    CL1                     SYSOUT CLASS            @DZ04005
         DS    CL20                    RESERVED
         SPACE 1
         SPACE 1
         SPACE 1
         AIF   (&ALL).GOB1   CHK TO DO ALL                       87333
         AIF   (NOT &GNL).DOPOB  CHK TO DO GENERAL OFFSET        87333
.GOB1    ANOP
         AIF   (NOT &DSPL).GOBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*             G E N E R A L   O F F S E T   B L O C K                 *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSNNFL I UADSNNEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSNSUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSNDAT                                  I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.GOBA    ANOP
         SPACE 1
UADSNODE DSECT ,UADSNPTR
         SPACE 1
UADSNNFL DS    BL1                    GENERAL OFFSET BLOCK
**                                     ..INDICATORS
UADSNFLG EQU   X'80'                   ..0 -- CONTINUE CHAINING
**                                     ..1 -- LAST OFFSET BLOCK FOR
**                                     .......THIS OFFSET CHAIN
**                                     .. FLAGS 1 THRU 7 ARE RESERVED
UADSNNEX DS    AL3                    OFFSET TO NEXT OFFSET BLOCK
UADSNSUB DS    AL4                    OFFSET TO ASSOCIATED OFFSET
UADSNDAT DS    AL4                    OFFSET TO DATA BLOCK
         SPACE 1
.DOPOB   ANOP
         AIF   (&ALL).POB1   CHK TO DO ALL                       87333
         AIF   (NOT &POB).DOAOB  CHK TO DO PASSWORD OFFSET       87333
.POB1    ANOP
         AIF   (NOT &DSPL).POBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*            P A S S W O R D   O F F S E T   B L O C K                *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSPFLG I UADSPNEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSPSUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSPDAT                                  I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.POBA    ANOP
         SPACE 1
DPOB     DSECT ,DPOBPTR
         SPACE 1
UADSPFLG DS    BL1                     PASSWORD BLOCK INDICATORS
PFLG01   EQU   X'80'                   ..0 -- CONTINUE CHAINING
**                                     ..1 -- LAST PASSWORD FOR THIS
**                                     .......USERID
**                                     ..FLAGS 1 THRU 7 ARE RESERVED
UADSPNEX DS    AL3                     OFFSET TO NEXT PASSWD OFFSET
**                                     ..BLOCK
UADSPSUB DS    AL4                     OFFSET TO ASSOCIATED ACCOUNT
**                                     ..NUMBER OFFSET BLOCK
UADSPDAT DS    AL4                     OFFSET TO PASSWORD DATA BLOCK
         SPACE 1
.DOAOB   ANOP
         AIF   (&ALL).AOB1   CHK TO DO ALL                       87333
         AIF   (NOT &AOB).DOROB  CHK TO DO ACCT NO. OFFSET       87333
.AOB1    ANOP
         AIF   (NOT &DSPL).AOBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   A C C O U N T   N U M B E R                       *
*                     O F F S E T   B L O C K                         *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSAFLG I UADSANEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSASUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSADAT                                  I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.AOBA    ANOP
         SPACE 1
DNOB     DSECT ,DNOBPTR
         SPACE 1
UADSAFLG DS    BL1                    ACCOUNT NUMBER OFFSET BLOCK
**                                     ..INDICATORS
AFLG01   EQU   X'80'                   ..0 -- CONTINUE CHAINING
**                                     ..1 -- LAST ACCOUNT NUMBER FOR
**                                     .......THIS PASSWORD CHAIN
**                                     .. FLAGS 1 THRU 7 ARE RESERVED
UADSANEX DS    AL3                     OFFSET TO NEXT ACCOUNT NUMBER
**                                     ..OFFSET BLOCK
UADSASUB DS    AL4                     OFFSET TO ASSOCIATED PROCNAME
**                                     ..OFFSET BLOCK
UADSADAT DS    AL4                     OFFSET TO ACCOUNT NUMBER DATA
**                                     ..BLOCK
         SPACE 1
.DOROB   ANOP
         AIF   (&ALL).ROB1   CHK TO DO ALL                       87333
         AIF   (NOT &ROB).DOPDB  CHK TO DO PROCNAME OFFSET       87333
.ROB1    ANOP
         AIF   (NOT &DSPL).ROBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   P R O C E D U R E   N A M E                       *
*                     O F F S E T   B L O C K                         *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSRFLG I UADSRNEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSRSUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSRDAT                                  I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.ROBA    ANOP
         SPACE 1
DROB     DSECT ,DROBPTR
         SPACE 1
UADSRFLG DS    BL1                     PROCNAME OFFSET BLOCK
**                                     ..INDICATORS
FLGR01   EQU   X'80'                   ..0 -- CONTINUE CHAINING
**                                     ..1 -- LAST PROCNAME FOR THIS
**                                     .......ACCOUNT NUMBER
**                                     ..FLAGS 1 THRU 7 ARE RESERVED
UADSRNEX DS    AL3                     OFFSET TO NEXT PROCNAME
**                                     ..OFFSET BLOCK
UADSRSUB DS    AL4                     RESERVED BY ACCOUNT
UADSRDAT DS    AL4                     OFFSET TO PROCNAME DATA BLOCK
         SPACE 1
.DOPDB   ANOP
         AIF   (&ALL).PDB1   CHK TO DO ALL                       87333
         AIF   (NOT &PDB).DOADB  CHK TO DO PASSWORD DATA         87333
.PDB1    ANOP
         AIF   (NOT &DSPL).PDBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*              P A S S W O R D   D A T A   B L O C K                  *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSPCTR I RESERVED                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSPPWD                                  I         *
*               I                                           I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.PDBA    ANOP
         SPACE 1
DPOBD    DSECT ,UADSPPTR
         SPACE 1
UADSPCTR DS    AL1                     COUNT OF REFERENCES TO THIS
**                                     ..DATA BLOCK
         DS    XL3                     RESERVED FOR ACCOUNT
UADSPPWD DS    CL8                     PASSWORD
         SPACE 1
.DOADB   ANOP
         AIF   (&ALL).ADB1   CHK TO DO ALL                       87333
         AIF   (NOT &ADB).DORDB  CHK TO DO ACCT NO. DATA         87333
.ADB1    ANOP
         AIF   (NOT &DSPL).ADBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   A C C O U N T   N U M B E R                       *
*                      D A T A     B L O C K                          *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSACTR I RESERVED                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSADRF (40 BYTES)                       I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I----------I--------------------------------I         *
*          44   I UADSALEN I UADSANUM (MAX OF 40 BYTES)     I         *
*               I----------I                                I         *
*               =                                           =         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.ADBA    ANOP
         SPACE 1
DNOBD    DSECT ,UADSAPTR
         SPACE 1
UADSACTR DS    AL1                     COUNT OF REFERENCES TO THIS
**                                     ..DATA BLOCK
         DS    XL3                     RESERVED FOR ACCOUNT
UADSADRF DS    CL40                    DRIVER DATA FIELD
UADSALEN DS    AL1                     LENGTH OF FOLLOWING ACCOUNT
**                                     ..NUMBER DATA FIELD
UADSANUM DS    CL40                    ACCT NMBR DATA FIELD
**                                     ..NOTE -- USE SPECIFIC    87333
**                                     .....LENGTH REFERENCES    87333
         SPACE 1
.DORDB   ANOP
         AIF   (&ALL).RDB1   CHK TO DO ALL                       87333
         AIF   (NOT &RDB).DOFSQ  CHK TO DO PROCNAME DATA         87333
.RDB1    ANOP
         AIF   (NOT &DSPL).RDBA CHK TO DISPLAY FORMAT            87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   P R O C E D U R E   N A M E                       *
*                      D A T A     B L O C K                          *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSRCTR I RESERVED                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSRNAM                                  I         *
*               I                                           I         *
*               I----------I----------I---------------------I         *
*          12   I RESERVED            I UADSRSIZ            I         *
*               I----------I----------I---------------------I         *
*          16   I UADSUNAM                                  I         *
*               I                                           I         *
*               I-------------------------------------------I         *
*                                                                     *
         SPACE 1
.RDBA    ANOP
         SPACE 1
DROBD    DSECT ,UADSRPTR
         SPACE 1
UADSRCTR DS    AL1                     COUNT OF REFERENCES TO THIS
**                                     DATA BLOCK
         DS    XL3                     RESERVED FOR ACCOUNT
UADSRNAM DS    CL8                     LOGON PROCEDURE NAME
         DS    XL2                     RESERVED
UADSRSIZ DS    AL2                     REGION SIZE SPECIFIED IN THE
**                                     ..NAMED PROCEDURE
UADSUNAM DS    CL8                     ESOTERIC GROUP UNIT NAME
         SPACE 1
.DOFSQ   ANOP
         AIF   (&ALL).FSQ1   CHK TO DO ALL                       87333
         AIF   (NOT &FSQ).DONE   CHK TO DO FSQE DATA             87333
.FSQ1    ANOP
         AIF   (NOT &DSPL).FSQEA CHK TO DISPLAY FORMAT           87333
         EJECT
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                F R E E   S P A C E   Q U E U E                      *
*                         E L E M E N T                               *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I---------------------I---------------------I         *
*          0    I FSQELNTH            I FSQENEXT            I         *
*               I---------------------I---------------------I         *
*                                                                     *
         SPACE 1
.FSQEA   ANOP
         SPACE 1
UADSFSQE DSECT ,FSQEPTR
         SPACE 1
FSQELNTH DS    AL2                     LENGTH OF FREE SPACE AREA
FSQENEXT DS    AL2                     OFFSET TO NEXT FSQE
.DONE    ANOP
         MEND  , */
*%ACTMC1 :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO UADL0001;
*%ELSE
*   %GOTO HDR1    ;
*%UADL0001:  ;
*%IF HDR^='HDR'  %THEN               /* CHK TO DO HEADER BLOCK       */
*   %GOTO UADL0002;
*%ELSE
*   %GOTO HDR1    ;
*%UADL0002:  ;
*%IF GNL^='GNL'  %THEN               /* CHK TO DO GENERAL OFFSET     */
*   %GOTO UADL0003;
*%ELSE
*   %GOTO GOB1    ;
*%UADL0003:  ;
*%IF POB^='POB'  %THEN               /* CHK TO DO PASSWD OFFSET      */
*   %GOTO UADL0004;
*%ELSE
*   %GOTO POB1    ;
*%UADL0004:  ;
*%IF AOB^='AOB'  %THEN               /* CHK TO DO ACCTNM OFFSET      */
*   %GOTO UADL0005;
*%ELSE
*   %GOTO AOB1    ;
*%UADL0005:  ;
*%IF ROB^='ROB'  %THEN               /* CHK TO DO PROCNAME OFFSET    */
*   %GOTO UADL0006;
*%ELSE
*   %GOTO ROB1    ;
*%UADL0006:  ;
*%IF PDB^='PDB'  %THEN               /* CHK TO DO PASSWD DATA        */
*   %GOTO UADL0007;
*%ELSE
*   %GOTO PDB1    ;
*%UADL0007:  ;
*%IF ADB^='ADB'  %THEN               /* CHK TO DO ACCTNM DATA        */
*   %GOTO UADL0008;
*%ELSE
*   %GOTO ADB1    ;
*%UADL0008:  ;
*%IF RDB^='RDB'  %THEN               /* CHK TO DO PROCNAME DATA      */
*   %GOTO UADL0009;
*%ELSE
*   %GOTO RDB1    ;
*%UADL0009:  ;
*%IF FSQ^='FSQ'  %THEN               /* CHK TO DO FREE SPACE ELEMENT */
*   %GOTO UADL0010;
*%ELSE
*   %GOTO FSQ1    ;
*%UADL0010:  ;
*%ALL='ALL';
*%HDR1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO UADL0011;
*%ELSE
*   %GOTO HDRA    ;
*%UADL0011:  ;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                     H E A D E R   B L O C K                         *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I---------------------I---------------------I         *
*          0    I UADSBLNG            I UADSFSQP            I         *
*               I---------------------I---------------------I         *
*          4    I UADSUSER                                  I         *
*               I                                           I         *
*               I---------------------I---------------------I         *
*          12   I UADSBN01            I UADSMAXC            I         *
*               I---------------------I---------------------I         *
*          16   I UADSATTR            I UADSINST            I         *
*               I---------------------I---------------------I         *
*          20   I UADSUPTP                                  I         *
*               I-------------------------------------------I         *
*          24   I UADSPWD1                                  I         *
*               I-------------------------------------------I         *
*          28   I UADSPERP                                  I         *
*               I-------------------------------------------I         *
*          32   I UADSDEST                                  I         *
*               I                                           I         *
*               I----------I----------I----------I----------I         *
*          40   I UADSSUBH I UADSSUBC I UADSSUBM I UADSSOUT I         *
*               I----------I----------I----------I----------I         *
*          44   I RESERVED                                  I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I-------------------------------------------I         *
*                                                                    */
*%HDRA   :  ;
*
*DECLARE
*  1 DHED     BASED(HEDBPTR),
*   2 UADSMHDR,                      /* COMMON HEADER AREA           */
*    3 UADSBLNG PTR(15),             /* BLOCK LENGTH                 */
*
*    3 UADSFSQP PTR(15),             /* OFFSET TO INITIAL FSQE (FREE
*                                      ..SPACE QUEUE ELEMENT)        */
*    3 UADSUSER CHAR(8),             /* USERID                       */
*    3 UADSBN01 FIXED(16),           /* FLAGS                        */
*     4 *        BIT(8),             /* RESERVED                     */
*     4 UADSNUSP BIT(1),             /*..0 -- USABLE SPACE EXISTS
*                                      ..1 -- ONLY NON-USABLE SPACE
*                                      .......EXISTS IN THIS BLOCK   */
*     4 UADSEXPF BIT(1),             /*..0 -- OLD FORMAT
*                                      ..1 -- EXPANDED FORMAT        */
*     4 UADSXBLK BIT(1),             /*..0 -- EXTRA BLOCK NOT AVAILABLE
*                                      ..1 -- EXTRA BLOCK IS AVAILABLE
*                                                               @APAR*/
*     4 UADSXUSD BIT(1),             /*..0 -- EXTRA BLOCK NOT USED
*                                      ..1 -- EXTRA BLOCK HAS BEEN USED
*                                                               @APAR*/
*     4 *        BIT(4),             /* RESERVED                     */
*    3 UADSMAXC FIXED(16),           /* MAXIMUM CORE SIZE ALLOTTABLE
*                                         TO THIS USER.              */
*   2 UADSATTR BIT(16),              /* SYSTEM ATTRIBUTES OF USERID  */
*     3 USATR00  BIT(1),             /* ..0 -- NO OPERATOR CAPABILITY
*                                       ..1 -- OPERATOR CAPABILITY   */
*     3 USATR01  BIT(1),             /* ..0 -- NO ACCOUNT CAPABILITY
*                                       ..1 -- ACCOUNT CAPABILITY    */
*     3 USATR02  BIT(1),             /* ..0 -- NO JCL CAPABILITY
*                                       ..1 -- JCL CAPABILITY        */
*     3 USATR03  BIT(1),             /* ..0 -- NO MOUNT CAPABILITY
*                                       ..1 -- MOUNT CAPABILITY     */
*     3   *      BIT(1),            /* USED BY LOGON,PROFILE @ZA18185*/
*     3 USATR04  BIT(1),            /* ..0 -- EDIT RECOVER CAPABILTY
*                                      ..1 -- NO RECOVER CAPABILTY  */
*    /*    NOTE--  USATR04 BIT USAGE IS DIFFERENT...
*                  1 MEANS THE USER HAS NO EDIT RECOVER CAPABILTY   */
*     3 *        BIT(10),            /* RESERVED FOR IBM USE @ZA18185*/
*
*    2 UADSINST BIT(16),             /* FLAGS 16 THROUGH 31 ARE
*                                       ..RESERVED FOR INSTALLATION
*                                       ..USE                        */
*   2 UADSUPTP PTR,                  /* PTR TO USER PROFILE TABLE    */
*   2 UADSPWD1 PTR,                  /* OFFSET TO 1ST PASSWD OFFSET  */
*   2 UADSPERP PTR,                  /* OFFSET TO PERFORMANCE GROUP  */
*   2 UADSDEST CHAR(8),              /* DESTINATION                  */
*   2 UADSSUBH CHAR(1),              /* HOLD CLASS           @DZ04005*/
*   2 UADSSUBC CHAR(1),              /* JOB CLASS            @DZ04005*/
*   2 UADSSUBM CHAR(1),              /* MESSAGE CLASS        @DZ04005*/
*   2 UADSSOUT CHAR(1),              /* SYSOUT CLASS         @DZ04005*/
*   2 *        CHAR(20);             /* RESERVED                     */
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DHEL0001;
*%ELSE
*   %GOTO GOB1    ;
*%DHEL0001:  ;
*%IF GNL='GNL'  %THEN                /* CHK TO DO GENERAL OFFSET     */
*   %GOTO DHEL0002;
*%ELSE
*   %GOTO DOPOB   ;
*%DHEL0002:  ;
*%GOB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DHEL0003;
*%ELSE
*   %GOTO GOBA    ;
*%DHEL0003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*             G E N E R A L   O F F S E T   B L O C K                 *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSNNFL I UADSNNEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSNSUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSNDAT                                  I         *
*               I-------------------------------------------I         *
*                                                                    */
*%GOBA   :  ;
*
*DECLARE
*  1 UADSNODE BASED(UADSNPTR),
*
*   2 UADSNWD1 PTR,                  /* CHAIN POINTER                */
*     3 UADSNFLG BIT(1),             /* ..0 -- CONTINUE CHAINING
*                                       ..1 -- LAST OFFSET BLOCK FOR
*                                       .......THIS OFFSET CHAIN     */
*     3 *        BIT(7),             /* FLAGS 1 THRU 7 ARE RESERVED  */
*     3 UADSNNEX PTR(24),            /* OFFSET TO NEXT OFFSET BLOCK  */
*
*   2 UADSNSUB PTR,                  /* OFFSET TO ASSOCIATED OFFSET  */
*
*   2 UADSNDAT PTR;                  /* OFFSET TO DATA BLOCK         */
*%DOPOB  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO UADLX001;
*%ELSE
*   %GOTO POB1    ;
*%UADLX001:  ;
*%IF POB='POB'  %THEN                /* CHK TO DO PASSWORD OFFSET    */
*   %GOTO UADLX002;
*%ELSE
*   %GOTO DOAOB   ;
*%UADLX002:  ;
*%POB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO UADLX003;
*%ELSE
*   %GOTO POBA    ;
*%UADLX003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*            P A S S W O R D   O F F S E T   B L O C K                *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSPFLG I UADSPNEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSPSUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSPDAT                                  I         *
*               I-------------------------------------------I         *
*                                                                    */
*%POBA   :  ;
*
*DECLARE
*  1 DPOB     BASED(DPOBPTR),
*
*   2 PFLG01   BIT(1),               /* ..0 -- CONTINUE CHAINING
*                                       ..1 -- LAST PASSWORD FOR THIS
*                                       .......USERID                */
*   2 *        BIT(7),               /* FLAGS 1 THRU 7 ARE RESERVED  */
*
*   2 UADSPNEX PTR(24),              /* OFFSET TO NEXT PASSWD OFFSET
*                                       ..BLOCK                      */
*   2 UADSPSUB PTR,                  /* OFFSET TO ASSOCIATED ACCOUNT
*                                       ..NUMBER OFFSET BLOCK        */
*   2 UADSPDAT PTR;                  /* OFFSET TO PASSWORD DATA
*                                       BLOCK                        */
*%DOAOB  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DPOL0001;
*%ELSE
*   %GOTO AOB1    ;
*%DPOL0001:  ;
*%IF AOB='AOB'  %THEN                /* CHK TO DO ACCTNMBR OFFSET    */
*   %GOTO DPOL0002;
*%ELSE
*   %GOTO DOROB   ;
*%DPOL0002:  ;
*%AOB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DPOL0003;
*%ELSE
*   %GOTO AOBA    ;
*%DPOL0003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   A C C O U N T   N U M B E R                       *
*                     O F F S E T   B L O C K                         *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSAFLG I UADSANEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSASUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSADAT                                  I         *
*               I-------------------------------------------I         *
*                                                                    */
*%AOBA   :  ;
*
*DECLARE
*  1 DNOB     BASED(DNOBPTR),
*
*   2 AFLG01   BIT(1),               /* ..0 -- CONTINUE CHAINING
*                                       ..1 -- LAST ACCOUNT NUMBER FOR
*                                       .......THIS PASSWORD CHAIN   */
*   2 *        BIT(7),               /* FLAGS 1 THRU 7 ARE RESERVED  */
*
*   2 UADSANEX PTR(24),              /* OFFSET TO NEXT ACCOUNT
*                                        NUMBER OFFSET BLOCK         */
*
*   2 UADSASUB PTR,                  /* OFFSET TO ASSOCIATED PROCNAME
*                                       ..OFFSET BLOCK               */
*   2 UADSADAT PTR;                  /* OFFSET TO ACCOUNT NUMBER DATA
*                                       ..BLOCK                      */
*%DOROB  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DNOL0001;
*%ELSE
*   %GOTO ROB1    ;
*%DNOL0001:  ;
*%IF ROB='ROB'  %THEN                /* CHK TO DO PROCNAME OFFSET    */
*   %GOTO DNOL0002;
*%ELSE
*   %GOTO DOPDB   ;
*%DNOL0002:  ;
*%ROB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DNOL0003;
*%ELSE
*   %GOTO ROBA    ;
*%DNOL0003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   P R O C E D U R E   N A M E                       *
*                     O F F S E T   B L O C K                         *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSRFLG I UADSRNEX                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSRSUB                                  I         *
*               I-------------------------------------------I         *
*          8    I UADSRDAT                                  I         *
*               I-------------------------------------------I         *
*                                                                    */
*%ROBA   :  ;
*
*DECLARE
*  1 DROB     BASED(DROBPTR),
*
*   2 FLGR01   BIT(1),               /* ..0 -- CONTINUE CHAINING
*                                       ..1 -- LAST PROCNAME FOR
*                                       .......THIS ACCOUNT NUMBER   */
*   2 *        BIT(7),               /* FLAGS 1 THRU 7 ARE RESERVED  */
*
*   2 UADSRNEX PTR(24),              /* OFFSET TO NEXT PROCNAME
*                                       ..OFFSET BLOCK               */
*   2 *        PTR,                  /* RESERVED BY ACCOUNT          */
*   2 UADSRDAT PTR;                  /* OFFSET TO PROCNAME DATA
*                                       BLOCK                        */
*%DOPDB  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DROL0001;
*%ELSE
*   %GOTO PDB1    ;
*%DROL0001:  ;
*%IF PDB='PDB'  %THEN                /* CHK TO DO PASSWORD DATA      */
*   %GOTO DROL0002;
*%ELSE
*   %GOTO DOADB   ;
*%DROL0002:  ;
*%PDB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DROL0003;
*%ELSE
*   %GOTO PDBA    ;
*%DROL0003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*              P A S S W O R D   D A T A   B L O C K                  *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSPCTR I RESERVED                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSPPWD                                  I         *
*               I                                           I         *
*               I-------------------------------------------I         *
*                                                                    */
*%PDBA   :  ;
*
*DECLARE
*  1 DPOBD    BASED(UADSPPTR),
*
*   2 UADSPCTR PTR(8),               /* COUNT OF REFERENCES TO THIS
*                                       ..DATA BLOCK                 */
*   2 *        PTR(24),              /* RESERVED FOR ACCOUNT         */
*   2 UADSPPWD CHAR(8);              /* PASSWORD                     */
*%DOADB  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DPOLX001;
*%ELSE
*   %GOTO ADB1    ;
*%DPOLX001:  ;
*%IF ADB='ADB'  %THEN                /* CHK TO DO ACCT NO. DATA      */
*   %GOTO DPOLX002;
*%ELSE
*   %GOTO DORDB   ;
*%DPOLX002:  ;
*%ADB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DPOLX003;
*%ELSE
*   %GOTO ADBA    ;
*%DPOLX003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   A C C O U N T   N U M B E R                       *
*                      D A T A     B L O C K                          *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSACTR I RESERVED                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSADRF (40 BYTES)                       I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I                                           I         *
*               I----------I--------------------------------I         *
*          44   I UADSALEN I UADSANUM (MAX OF 40 BYTES)     I         *
*               I----------I                                I         *
*               =                                           =         *
*               I-------------------------------------------I         *
*                                                                    */
*%ADBA   :  ;
*
*DECLARE
*  1 DNOBD    BASED(UADSAPTR),
*
*   2 UADSACTR PTR(8),               /* COUNT OF REFERENCES TO THIS
*                                       ..DATA BLOCK                 */
*   2 *        PTR(24),              /* RESERVED FOR ACCOUNT         */
*   2 UADSADRF CHAR(40),             /* DRIVER DATA FIELD            */
*   2 UADSALEN FIXED(8),             /* LENGTH OF FOLLOWING ACCOUNT
*                                       ..NUMBER DATA FIELD          */
*   2 UADSANUM CHAR(40);             /* ACCT NMBR DATA FIELD         */
*%DORDB  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DNOLX001;
*%ELSE
*   %GOTO RDB1    ;
*%DNOLX001:  ;
*%IF RDB='RDB'  %THEN                /* CHK TO DO PROCNAME DATA      */
*   %GOTO DNOLX002;
*%ELSE
*   %GOTO DOFSQ   ;
*%DNOLX002:  ;
*%RDB1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DNOLX003;
*%ELSE
*   %GOTO RDBA    ;
*%DNOLX003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                   P R O C E D U R E   N A M E                       *
*                      D A T A     B L O C K                          *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I----------I--------------------------------I         *
*          0    I UADSRCTR I RESERVED                       I         *
*               I----------I--------------------------------I         *
*          4    I UADSRNAM                                  I         *
*               I                                           I         *
*               I----------I----------I---------------------I         *
*          12   I RESERVED            I UADSRSIZ            I         *
*               I----------I----------I---------------------I         *
*          16   I UADSUNAM                                  I         *
*               I                                           I         *
*               I-------------------------------------------I         *
*                                                                    */
*%RDBA   :  ;
*
*DECLARE
*  1 DROBD    BASED(UADSRPTR),
*
*   2 UADSRCTR PTR(8),               /* COUNT OF REFERENCES TO THIS
*                                         DATA BLOCK                 */
*   2 *        PTR(24),              /* RESERVED FOR ACCOUNT         */
*   2 UADSRNAM CHAR(8),              /* LOGON PROCEDURE NAME         */
*   2 *        CHAR(2),              /* RESERVED                     */
*   2 UADSRSIZ FIXED(16),            /* REGION SIZE SPECIFIED IN THE
*                                       ..NAMED PROCEDURE            */
*   2 UADSUNAM CHAR(8);              /* ESOTERIC GROUP UNIT NAME     */
*%DOFSQ  :  ;
*%IF ALL^='ALL'  %THEN               /* CHK TO DO ALL                */
*   %GOTO DUDL0001;
*%ELSE
*   %GOTO FSQ1    ;
*%DUDL0001:  ;
*%IF FSQ='FSQ'  %THEN                /* CHK TO DO FSQE DATA          */
*   %GOTO DUDL0002;
*%ELSE
*   %GOTO DONE    ;
*%DUDL0002:  ;
*%FSQ1   :  ;
*%IF DSPL='DSPL'  %THEN              /* CHK TO DISPLAY FORMAT        */
*   %GOTO DUDL0003;
*%ELSE
*   %GOTO FSQEA   ;
*%DUDL0003:  ;
*@EJECT;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                F R E E   S P A C E   Q U E U E                      *
*                         E L E M E N T                               *
*                                                                     *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*                                                                     *
*                                                                     *
*               I---------------------I---------------------I         *
*          0    I FSQELNTH            I FSQENEXT            I         *
*               I---------------------I---------------------I         *
*                                                                    */
*%FSQEA  :  ;
*
*DECLARE
*  1 UADSFSQE BASED(FSQEPTR),
*   2 FSQELNTH PTR(15),              /* LENGTH OF FREE SPACE AREA    */
*
*   2 FSQENEXT PTR(15);              /* OFFSET TO NEXT FSQE          */
*%DONE   :  ;
./ ADD NAME=IKJEFUDL
*          %GOTO  UDLGO;
* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* /*                                                                 */
* /*                       I K J E F U D L                           */
* /*                                                                 */
* /*             USER IDENTITY DATA LIST MAPPING MACRO               */
* /*                                                                 */
* /* STATUS -- CHANGE --   02-000                   12-02-1972       */
* /*                                                                 */
* /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* /*                                                                 */
*%UDLGO:     ;
*        %GOTO ACTMC2;                                              /*
         MACRO
         IKJEFUDL   &MAP
         SPACE 1
         AIF   (&MAP NE 'MAP').UDLA
**  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**  *                                                                 *
**  *                U S E R I D   D A T A   L I S T                  *
**  *                                                                 *
**  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**  *                                                                 *
**  *               I-------------------------------------------I     *
**  *          0    I UIDLNEX                                   I     *
**  *               I---------------------I---------------------I     *
**  *          4    I UIDLSWS             I UIDLCT              I     *
**  *               I---------------------I---------------------I     *
**  *          8    I UIDUSER(1)                                I     *
**  *               I                                           I     *
**  *               I-------------------------------------------I     *
**  *          16   I UIDUSER(2)                                I     *
**  *               I                                           I     *
**  *               I-------------------------------------------I     *
**  *                                                                 *
**  *                                                                 *
.UDLA    ANOP
         SPACE 1
DUIDL    DSECT ,UIDLPTR
         SPACE 1
UIDLNEX  DS    AL4                     PTR TO  NEXT UIDL ENTRY
UIDLSWS  DS    0BL2                    UIDL FLAGS
         DS    BL1                     FIRST BYTE OF FLAGS
UIDADD   EQU   X'80'                   ..1 = RESULT OF ADD CMD
UIDDEL   EQU   X'40'                   ..1 = RESULT OF DELETE CMD
UIDCHG   EQU   X'20'                   ..1 = RESULT OF CHANGE CMD
         DS    BL1                     SECOND BYTE OF FLAGS
**                                     ..RESERVED
UIDLCT   DS    AL2                     NUMBER OF USERID ENTRIES IN
**                                     ..THIS LIST.  ADD AND DELETE
**                                     ..COUNT IS 1 FOR EACH 8 BYTE
**                                     ..USERID FIELD IN LIST.
**                                     ..CHANGE COUNT IS 2 FOR EACH
**                                     ..16 BYTE, 2 USERID FIELD
**                                     ..IN LIST
UIDUSER  DS    CL8                     7 BYTE USERID NAME PLUS A
**                                     ..RIGHTMOST BLANK
**                                     ..(OLD USERID FOR CHANGE)
         DS    CL8                     2ND USERID NAME
**                                     ..(NEW USERID FOR CHANGE)
         SPACE 1
         MEND  , */
*%ACTMC2  :  ;
*%IF MAP='MAP'  %THEN
*   %GOTO UDLL0001;
*%ELSE
*   %GOTO UDLA    ;
*%UDLL0001:  ;
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  */
*/* *                                                                */
*/* *                U S E R I D   D A T A   L I S T                 */
*/* *                                                                */
*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  */
*/* *                                                                */
*/* *               I-------------------------------------------I    */
*/* *          4    I UIDLNEX                                   I    */
*/* *               I---------------------I---------------------I    */
*/* *          4    I UIDLSWS             I UIDLCT              I    */
*/* *               I---------------------I---------------------I    */
*/* *          8    I UIDUSER(1)                                I    */
*/* *               I                                           I    */
*/* *               I-------------------------------------------I    */
*/* *          16   I UIDUSER(2)                                I    */
*/* *               I                                           I    */
*/* *               I-------------------------------------------I    */
*/* *                                                                */
*/* *                                                                */
*%UDLA   :  ;
*DECLARE
*  1 DUIDL    BASED(UIDLPTR),
*   2 UIDLNEX  PTR,                  /* PTR TO NEXT UIDL ENTRY       */
*   2 UIDLSWS  CHAR(2),              /* UIDL FLAGS                   */
*     3 UIDADD   BIT(1),             /* ..1 = RESULT OF ADD CMD      */
*     3 UIDDEL   BIT(1),             /* ..1 = RESULT OF DELETE CMD   */
*     3 UIDCHG   BIT(1),             /* ..1 = RESULT OF CHANGE CMD   */
*     3 *        BIT(13),            /* RESERVED                     */
*   2 UIDLCT   PTR(16)  BDY(BYTE),   /* NUMBER OF USERID ENTRIES
*       NOTE:  ADD AND DELETE COUNT IS 1 FOR EACH 8-BYTE USERID
*              FIELD IN THIS LIST.   CHANGE COUNT IS 2 FOR EACH
*              16-BYTE, 2-USERID FIELD                               */
*   2 UIDUSER(2) CHAR(8);            /* ARRAY OF USERID NAMES
*                                       7 BYTE USERID NAME PLUS A
*                                      ..RIGHTMOST BLANK
*                                        1ST USERID NAME
*                                      ..(OLD USERID FOR CHANGE)
*                                        2ND USERID NAME
*                                      ..(NEW USERID FOR CHANGE)     */
./ ADD NAME=IKJEGDBE
         MACRO
         IKJEGDBE
***********************************************************************
*                                                                     *
*        MAPPING DSECT FOR DEFERRED BREAK ELEMENT                     *
*                                                                     *
*        STATUS -- VERSION NO. 01 - RELEASE NO. 01 - OS/VS2           *
*                                                                     *
*        CHANGE LEVEL -- 00 - DATE 03/09/72                           *
*                                                                     *
***********************************************************************
DBE      DSECT
DBEDBE   DS    F -                      ADDRESS OF NEXT DBE ON CHAIN
DBEPDL   DS    F -                      ADDRESS OF PDL
DBEINBUF DS    F -                      ADDRESS OF INPUT BUFFER
         DS    0D -                     ROUND TO DOUBLE WORD
DBELNH   EQU   *-DBE -
         MEND
./ ADD NAME=IKJEGDME
         MACRO
         IKJEGDME
***********************************************************************
*                                                                     *
*        MAPPING DSECT FOR DEFERRED MODULE ELEMENT                    *
*                                                                     *
*        STATUS -- VERSION NO. 01 - RELEASE NO. 01 - OS/VS2           *
*                                                                     *
*        CHANGE LEVEL -- 00 - DATE 03/09/72                           *
*                                                                     *
***********************************************************************
DME      DSECT
DMEDME   DS    F -                      ADDRESS OF NEXT DME ON CHAIN
DMEDBE   DS    F -                      ADDRESS OF FIRST DBE ON CHAIN
DMELOAD  DS    CL8 -                    LOAD MODULE NAME
DMELNH   EQU   *-DME -                  LENGTH OF DME
         MEND
./ ADD NAME=IKJEGS6A
         MACRO
&LABEL   IKJEGS6A &CALLER,&PARAM=O
         LCLA  &A
         LCLC  &I
         AIF   ('&CALLER' EQ 'CNTSUP').C1
         AIF   ('&CALLER' NE 'OVLYSUP').E2
.*       OVERLAY SUPERVISOR SECTION.                                  *
.O1      ANOP
         SR    1,1 -          INDICATE CALL BY OVERLAY SUPERVISOR
         AIF   ('&PARAM' EQ 'O').S1
         MNOTE *,'PARAM OPERAND IGNORED'
         AGO   .S1
.*       CONTENTS SUPERVISOR SECTION.                                 *
.C1      ANOP
         AIF   ('&LABEL' EQ '').C15
&LABEL   EQU   *
.C15     ANOP
         AIF   (N'&PARAM NE 1).E3
         AIF   ('&PARAM(1)'(1,1) EQ '(' OR '&PARAM(1)' EQ 'O').C2
         LA    1,&PARAM(1) -  LOAD DCB POINTER
.C175    ANOP
&I       SETC  '1'
         AGO   .C3
.C2      ANOP
         AIF   ('&PARAM(1)' EQ '(1)' OR '&PARAM(1)' EQ 'O').C175
.C25     ANOP
&A       SETA  K'&PARAM(1)
         AIF   (&A LT 3 OR &A GT 10).E3
         AIF   ('&PARAM(1)'(&A,1) NE ')').E3
&I       SETC  '&PARAM(1)'(2,&A-2)
.C3      ANOP
         LNR   1,&I -         INDICATE CALL BY CONTENTS SUPERVISOR
.S1      ANOP
         SVC   61 -           ISSUE CALL TO TSO TEST
         MEXIT
.E1      MNOTE 12,'INVALID NUMBER OF MACRO OPERANDS'
         MEXIT
.E2      MNOTE 12,'INVALID POSITIONAL OPERAND'
         MEXIT
.E3      MNOTE 12,'INVALID PARAM OPERAND'
         MEXIT
         MEND
./ ADD NAME=IKJEGS9G
         MACRO
&SYMBOL  IKJEGS9G &OPRN,&TCBADDR=,&VALUE=O,&REGNO=P,&MF=D
         LCLB  &B(12),&SW(2)
         LCLA  &FLGS1,&FLGS2,&LEN
         LCLC  &REGNAM
         AIF   ('&MF' NE 'D').CONT1 CHECK IF DSECT REQUESTED.
         AIF   ('&SYMBOL' EQ '').DGEN1 CHECK FOR LABEL.
         MNOTE *,'LABEL IGNORED'
.DGEN1   ANOP
IKJEGS9G DSECT
         SPACE 1
***********************************************************************
*                                                                     *
*        THIS MACRO MAPS THE INPUT PARAMETER LIST TO THE              *
*        BREAKPOINT SVC (SVC 97).                                     *
*                                                                     *
* STATUS -- VERSION NO. 01 - OS/VS2 RELEASE NO. 01                    *
*                                                                     *
* CHANGE LEVEL -- 03 - DATE 04/25/71                                  *
*                                                                     *
***********************************************************************
         SPACE 1
S9GTCBPT DS    A -            TARGET TCB ADDRESS, OR PRB OR IRB
*                             ADDRESS.
S9GVALUE DS    A -            ADDRESS OF VALUE, OR VALUE.
*                             DEPENDING ON FUNCTION REQUESTED.
S9GFLGS1 DS    X -            FLAGS, BYTE 1.
S9GMACRO EQU   B'10000000' -  MACRO FLAG.
S9GTCPON EQU   B'01000000' -  SET TCBTCP BIT TO '1'B.
S9GTCPOF EQU   B'00100000' -  SET TCBTCP BIT TO '0'B.
S9GTRN   EQU   B'00010000' -  ALTER TCBTRN FIELD.
S9GOPSW  EQU   B'00001000' -  ALTER RBOPSW FIELD.
S9GGPR   EQU   B'00000100' -  ALTER SPECIFIED GPR.
S9GAGPR  EQU   B'00000010' -  ALTER ALL GPRS.
S9GFPR   EQU   B'00000001' -  ALTER SPECIFIED FPR.
S9GFLGS2 DS    X -            FLAGS, BYTE 2.
S9GWCF   EQU   B'10000000' -  SET RBWCF TO ZERO.
S9GACHK  EQU   B'01000000' -  VALIDITY CHECK SPECIFIED ADDRESS.
S9GDEQ   EQU   B'00100000' -  ISSUE DEQ FOR IKJEFT04 AFTER ABEND.
S9GFREE  EQU   B'00010000' -  FREE SP 255 CORE FOR IGC0006A
*              B'0000XXXX' - RESERVED BITS
S9GREGNO DS    H -            REGISTER NUMBER TO BE ALTERED.
         SPACE 1
         AGO   .EXIT
.*
.* FUNCTION VALIDATION SECTION.
.*
.CONT1   ANOP
&B(1)    SETB  1
&B(2)    SETB  ('&OPRN' EQ 'TCPON')
&B(3)    SETB  ('&OPRN' EQ 'TCPOFF')
&B(4)    SETB  ('&OPRN' EQ 'TRN')
&B(5)    SETB  ('&OPRN' EQ 'OPSW')
&B(6)    SETB  ('&OPRN' EQ 'GPR')
&B(7)    SETB  ('&OPRN' EQ 'AGPR')
&B(8)    SETB  ('&OPRN' EQ 'FPR')
&B(9)    SETB  ('&OPRN' EQ 'WCF')
&B(10)   SETB  ('&OPRN' EQ 'ADDRCHK')
&B(11)   SETB  ('&OPRN' EQ 'DEQ')
&B(12)   SETB  ('&OPRN' EQ 'FREE')
         AIF   (&B(2)+&B(3)+&B(4)+&B(5)+&B(6)+&B(7)+&B(8)+&B(9)+&B(10)+*
               &B(11)+&B(12) NE 1).ERROR1
&FLGS1   SETA  128*&B(1)+64*&B(2)+32*&B(3)+16*&B(4)+8*&B(5)+4*&B(6)+2*&*
               B(7)+&B(8)
&FLGS2   SETA  128*&B(9)+64*&B(10)+32*&B(11)+16*&B(12)
         AIF   ('&MF' NE 'L').EXEC1
.*
.* LIST SECTION.
.*
&SYMBOL  DS    0F -           ALIGN ON WORD BOUNDARY.
        AIF ('&TCBADDR' EQ '').NOTCB
         DC    A(&TCBADDR) -  TARGET TCB ADDRESS, OR PRB OR IRB
*                             ADDRESS.
        AGO   .CHKVAL
.NOTCB   ANOP
         DC    A(0)        -  NO  TCB ADDR SUPPLIED
.CHKVAL  ANOP
         AIF   ('&VALUE' EQ 'O').SKIP1 CHECK IF VALUE SPECIFIED.
         DC    A(&VALUE) -    VALUE, OR ADDRESS OF VALUE.
         AGO   .SKIP2
.SKIP1   ANOP
         DC    A(0) -         VALUE NOT SPECIFIED.
.SKIP2   ANOP
         DC    AL1(&FLGS1) -  FLAGS, BYTE 1.
         DC    AL1(&FLGS2) -  FLAGS, BYTE 2.
         AIF   ('&REGNO' EQ 'P').SKIP3 CHECK IF REG SPECIFIED.
         DC    AL2(&REGNO) -  REGISTER NUMBER.
         AGO   .EXIT
.SKIP3   ANOP
         DC    AL2(0) -       REGISTER NOT SPECIFIED.
         AGO   .EXIT
.*
.* EXECUTE FORM
.*
.EXEC1   ANOP
&SW(2)   SETB  0
         AIF   ('&MF(1)' NE 'E').ERROR2
         AIF   ('&MF(2)' EQ '(1)').R1SET
         AIF   ('&MF(2)'(1,1) EQ '(').REG
&SYMBOL  LA    1,&MF(2) -     LOAD LIST ADDRESS.
         AGO   .R1SET
.REG     ANOP
&LEN     SETA  K'&MF(2)
&REGNAM  SETC  '&MF(2)'(2,&LEN-2)
&SYMBOL  LR    1,&REGNAM - LOAD LIST ADDRESS.
.R1SET   ANOP
         MVI   8(1),&FLGS1 -  SET FLAG BYTE 1.
         MVI   9(1),&FLGS2 -  SET FLAG BYTE 2.
         AIF   ('&TCBADDR' EQ '').ERROR3
&SW(1)   SETB  ('&VALUE' EQ 'O')
         AIF   ('&TCBADDR'(1,1) EQ '(').REGT
         LA    14,&TCBADDR -  GET TCB, PRB, OR IRB ADDRESS.
&SW(2)   SETB  1
.REGT    ANOP
         AIF   (&SW(1) EQ 1).STREGS
         AIF   (&SW(2) EQ 1).VALUE
&LEN     SETA  K'&TCBADDR
&REGNAM  SETC  '&TCBADDR'(2,&LEN-2)
         LR    14,&REGNAM - COPY TCB, PRB, OR IRB ADDRESS.
.VALUE   ANOP
         AIF   ('&VALUE'(1,1) EQ '(').REGV
         LA    15,&VALUE -    GET VALUE, OR ADDRESS OF VALUE.
         AGO   .STBOTH
.REGV    ANOP
&LEN     SETA  K'&VALUE
&REGNAM  SETC  '&VALUE'(2,&LEN-2)
         LR    15,&REGNAM - COPY VALUE, OR ADDRESS OF VALUE.
.STBOTH  ANOP
         STM   14,15,0(1) -   STORE INTO PARAMETER LIST.
         AGO   .REGNO
.STREGS  ANOP
         AIF   (&SW(2) EQ 1).ST1
&LEN     SETA  K'&TCBADDR
&REGNAM  SETC  '&TCBADDR'(2,&LEN-2)
         ST    &REGNAM,0(,1) - STORE INTO LIST.
         AGO   .REGNO
.ST1     ANOP
         ST    14,0(,1) -     STORE INTO PARAMETER LIST.
.REGNO   ANOP
         AIF   ('&REGNO' EQ 'P').SVC
         AIF   ('&REGNO'(1,1) EQ '(').REGR
         LA    0,&REGNO -     GET REGISTER NUMBER.
         STH   0,10(,1) -     STORE REGISTER NUMBER IN LIST.
         AGO   .SVC
.REGR    ANOP
&LEN     SETA  K'&REGNO
&REGNAM  SETC  '&REGNO'(2,&LEN-2)
         STH   &REGNAM,10(,1) - STORE REGISTER NUMBER.
.SVC     ANOP
         SVC   97 -           PASS CONTROL TO BREAKPOINT SVC.
.EXIT    ANOP
         MEXIT
.ERROR1  MNOTE 12,'INVALID OPTION OR OPTION NOT SPECIFIED'
         MEXIT
.ERROR2  MNOTE 12,'INVALID MACRO FORM SPECIFIED'
         MEXIT
.ERROR3  MNOTE 12,'TCBADDR NOT SPECIFIED, BUT REQUIRED'
         MEXIT
         MEND
./ ADD NAME=IKJEGSIO
**********************************************************************
*                                                                    *
*        IKJEGSIO IS A SET OF STRUCTURED MACROS THAT BUILD THE       *
*        ASSEMBLER INSTRUCTIONS TO PREPARE A PERSONALIZED PARM       *
*        LIST AND THE BRANCH TO IKJEGIO FOR I/O SERVICES.  THE       *
*        SET OF MACROS ARE INCLUDED; HOWEVER, THE MACRO SOURCE       *
*        IS SUPPRESSED.                                              *
*                                                                    *
*        STATUS -- VERSION NO. 01 - OS/VS2 RELEASE NO. 02            *
*        CHANGE LEVEL -- 01 - DATE 2-2-73                            *
*                                                                    *
**********************************************************************
         PRINT OFF
         MACRO
&LABEL   IKJEGSIO                                                      *
               &TYPEREQ,               TYPE SERVICE REQUESTED          *
               &FIRST=,                FIRST MESSAGE TO BE ISSUED      *
               &INST11=,               FIRST INSERT OF THE 1ST MSG     *
               &INST12=,               SECOND INSERT OF THE 1ST MSG    *
               &INST13=,               THIRD INSERT OF THE 1ST MSG     *
               &INST14=,               FOURTH INSERT OF THE 1ST MSG    *
               &INST15=,               FIFTH INSERT OF THE 1ST MSG     *
               &INST16=,               SIXTH INSERT OF THE 1ST MSG     *
               &SECOND=,               FIRST MESSAGE TO BE ISSUED      *
               &INST21=,               FIRST INSERT OF THE 2ND MSG     *
               &INST22=,               SECOND INSERT OF THE 2ND MSG    *
               &INST23=,               THIRD INSERT OF THE 2ND MSG     *
               &INST24=,               FOURTH INSERT OF THE 2ND MSG    *
               &INST25=,               FIFTH INSERT OF THE 2ND MSG     *
               &INST26=,               SIXTH INSERT OF THE 2ND MSG     *
               &ID=,                   MODULE CALLING ID NUMBER        *
               &MF=,                   TYPE MACRO TO EXPAND            *
               &DATAPTR=,              ADDRESS OF DATA LINE            *
               &DSNAME=,               ADDRESS OF OPEN DCB             *
               &SVC=,                  SVC NUMBER                      *
               &ABENDRG=,              REGISTER CONTAINING ABEND NUM   *
               &RC=,                   REGISTER CONTAINING ABEND CODE  *
               &VCONBR=            BRANCH TO VCON NOT TO TSTIO @ZA04126
.*********************************************************************
.**                                                                  *
.**                HEADER                                            */
.**DRIVER:
.**                E  MAIN DRIVER                                    */
.**                                                                  *
.*********************************************************************
         GBLB  &LISTSW                 SWITCH TO INDICATE LIST FORM
         GBLB  &STORESW                SW TO INDICATE PARM STRIPPING
         LCLC  &ADDRESS                VARIABLE TO CONTAIN THE STORE AD
         LCLC  &NUMID                  VARIABLE TO STRIP ID NUMBER
         LCLA  &IDCON                  VARIABLE TO CONTAIN THE ID NUM
         LCLA  &LENGTH                 VARIABLE TO COUNT CHARS IN PARM
&LISTSW  SETB  0                       INITIALIZE LIST SWITCH OFF
&STORESW SETB  0                       INITIALIZE STORE SWITCH OFF
&NUMID   SETC  '&ID'(4,2)              STRIP OFF THE LETTERS FROM ID NO
&IDCON   SETA  &NUMID                  TRANSFER VALUE FOR LATER USE
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,%CONT1)
.**                   HAS THE 'MF' PARAMETER BEEN CODED PROPERLY ?   */
.**                                                                  *
.*********************************************************************
         AIF   ('&MF(1)' EQ '').ERRORMF
         AIF   ('&MF(1)' EQ 'E').MFE
         AIF   ('&MF(1)' EQ 'L').MFL
.*********************************************************************
.**                                                                  *
.**                P  ISSUE AN ERROR MESSAGE                         */
.**                P  (,END)
.**                   SET CONDITION CODE = 12                        */
.**                                                                  */
.**                                                                  *
.*********************************************************************
         MNOTE 12,'SYNTAX ERROR ENCOUNTERED IN MF= PARM'
         AGO   .NOLINK
.ERRORMF MNOTE 12,'MF= PARAMETER OMITTED, BUT IS REQUIRED'
         AGO   .NOLINK
.ERORMFE MNOTE 12,'THE ADDRESS PORTION IS REQUIRED WITH THE EXECUTABLE *
               FORM'
         AGO   .NOLINK
.ERORMFA MNOTE 4,'THE ADDRESS PORTION IS INVALID WITH THE LIST FORM AND*
                IS IGNORNED'
         AGO   .IDROUT
.*********************************************************************
.**                                                                  *
.**%CONT1:
.**                P  SET THE MF TYPE SWITCHES ON                    */
.**                                                                  *
.*********************************************************************
.MFE     AIF   ('&MF(2)' EQ '').ERORMFE GO TO ERROR EXIT WITH MSG
&ADDRESS SETC  '&MF(2)'                PREPARE TO PROCESS ADDRESS
         AIF   ('&ADDRESS'(1,1) EQ '(').MFADREG TEST FOR REG NOT.
&LABEL   LA    1,&ADDRESS              ESTABLISH ADDRESSABILITY TO PARM
         AGO   .IDROUT                 CONTINUE PROCESSING NEXT OPERAND
.MFADREG ANOP                          LABEL FOR REG NOTATION OF ADDR
&LABEL   LR    1,&ADDRESS              ESTABLISH ADDRESSABILITY TO PARM
         AGO   .IDROUT                 CONTINUE PROCESSING NEXT OPERAND
.MFL     ANOP                          ROUTINE BRANCHED TO IF LIST FORM
&LISTSW  SETB  1                       TURN ON THE LIST FORM SWITCH
         DS    0H                      ALIGN TO HALFWORD BOUNDRY
         B     *+88                    BRANCH AROUND PARM LIST
         AIF   ('&MF(2)' NE '').ERORMFA  TEST FOR ADDR WITH L FORM
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,%CONT2)
.**                   IS THE USER'S ID NUMBER CODED CORRECTLY ?      */
.**                                                                  *
.*********************************************************************
.IDROUT  ANOP                          LABEL FOR 'ID=' OPERAND PROC
         AIF   ('&ID' EQ '').ERRORID   TEST FOR NULL PARM
&LENGTH  SETA  K'&ID                   COUNT LENGTH OF I.D. PARM
         AIF   (&LENGTH NE 5).ERRIDSZ  PUT OUT ERROR MESSAGE
         AIF   (&LISTSW EQ 1).IDLIST TEST IF THIS SHOULD BE DC OR MVI
         AGO   .IDE                    BRANCH TO MOVE ID INTO P.L. ROUT
.*********************************************************************
.**                                                                  *
.**                P  ISSUE A WARNING MESSAGE                        */
.**                P  (,%CONT3)
.**                   SET CONDITION CODE = 4 IF LIST FORM            */
.**                                                                  *
.*********************************************************************
.ERRIDSZ ANOP                          BRANCH HERE IF ID PARM HAS ERROR
         MNOTE 12,'THERE IS A SYNTAX ERROR IN THE ID= PARM'
         AGO   .NOLINK                 BRANCH TO RETURN TO THE USER
.ERRORID ANOP                          ROUTINE IF ID INCORRECT
         AIF   (&LISTSW EQ 1).ID4    IF THIS IS A LIST FORM SET CC=4
         MNOTE 4,'THE ID= PARM IS MISSING OR INCORRECT'
         AGO   .SELECT                 BRANCH TO CONTINUE PROCESSING
.ID4     MNOTE 0,'THE ID= PARM IS MISSING OR INCORRECT'
         AGO   .SELECT                 BRANCH TO CONTINUE PROCESSING
.*********************************************************************
.**                                                                  *
.**%CONT2:
.**                P  GENERATE THE INSTRUCTIONS NECESSARY TO
.**                   STORE THE USERS ID# IN THE P.L.                */
.**                                                                  *
.*********************************************************************
.IDE     ANOP                          ROUTINE TO MOVE ID # IN P.L.
         MVI   1(1),&IDCON             SET UP MOVE INSTRUCTION
         AGO   .SELECT                 CONTINUE PROCESSING
.IDLIST  ANOP                          ROUTINE TO CREATE 'DC'S FOR ID
&LABEL   DC    AL1(0)                  FILLER
         DC    AL1(&IDCON)             DC FOR CALLER'S ID # IN P.L.
.*********************************************************************
.**                                                                  *
.**%CONT3:
.**                D  (YES,,NO,%CONT4)
.**                   IS THIS REQUEST FOR DATA ?                     */
.**                                                                  *
.*********************************************************************
.SELECT  ANOP                          DETERMINE WHICH SERVICE REQ'D
         AIF   ('&TYPEREQ' NE 'DATA').SELECT2 TEST IF DATA REQUEST
.*********************************************************************
.**                                                                  *
.**                S  (,END)
.**                   CALL DATA: GENERATE INSTRUCIONS FOR DATA       */
.**                                                                  *
.*********************************************************************
         DATA  &DATAPTR,&DSNAME        CALL DATA REQ'T ROUTINE
         AGO   .END                    EXIT
.*********************************************************************
.**                                                                  *
.**%CONT4:
.**                D  (YES,,NO,%CONT5)
.**                   IS THIS REQUEST FOR AN SVC ERROR MESSAGE ?     */
.**                                                                  *
.*********************************************************************
.SELECT2 ANOP                          TEST FOR SVCERR REQUEST ROUT
         AIF   ('&TYPEREQ' NE 'SVCERR').SELECT3 CONTINUE IF NOT SVCERR
.*********************************************************************
.**                                                                  *
.**                S  (,END)
.**                   CALL SVCMSG: GENERATE INSTRUCTIONS FOR SVC MSG */
.**                                                                  *
.*********************************************************************
         SVCERR &SVC,&ABENDRG,&RC,&INST11 CALL SVCERR REQ'T ROUTINE
         AGO   .END                    EXIT
.*********************************************************************
.**                                                                  *
.**%CONT5:
.**                D  (YES,,NO,%CONT6)
.**                   IS THIS REQUEST FOR A MESSAGE ?                */
.**                                                                  *
.*********************************************************************
.SELECT3 ANOP                          TEST FOR MSG REQUEST ROUTINE
         AIF   ('&TYPEREQ' NE 'MSG').SELECT4 CONTINUE IF NOT MSG
.*********************************************************************
.**                                                                  *
.**                S  (,END)
.**                   CALL MSG: GENERATE INSTRUCTIONS FOR MSG        */
.**                                                                  *
.*********************************************************************
         MSG   &FIRST,&SECOND,&INST11,&INST12,&INST13,&INST14,&INST15, *
               &INST16,&INST21,&INST22,&INST23,&INST24,&INST25,&INST26
         AGO   .END                    EXIT
.*********************************************************************
.**                                                                  *
.**%CONT6:
.**                D  (YES,,NO,%CONT7)
.**                   IS THIS REQUEST FOR A PROMPTING MESSAGE ?      */
.**                                                                  *
.*********************************************************************
.SELECT4 ANOP                          TEST FOR PTGT REQUEST ROUTINE
         AIF   ('&TYPEREQ' NE 'PTGT').ERSLECT CONTINUE IF NOT MSG
.*********************************************************************
.**                                                                  *
.**                S  (,END)
.**                   CALL PTGT: GENERATE INSTRUCTIONS FOR PTGT MSG  */
.**                                                                  *
.*********************************************************************
         PTGT  &FIRST                  INVOKE THE INTERNAL SUBROUTINE
         AGO   .END                    EXIT
.*********************************************************************
.**                                                                  *
.**%CONT7:
.**                P  ISSUE AN ERROR MESSAGE                         */
.**                P  (,NOLINK)
.**                   SET CONDITION CODE TO 12                       */
.**                                                                  *
.*********************************************************************
.ERSLECT ANOP                          COME HERE IF SYNTAX IN &TYPEREQ
         MNOTE 12,'MISSING OR SYNTAX ERROR IN OPTION KEYWORD'
         AGO   .NOLINK                 BRANCH TO EXIT
.*********************************************************************
.**                                                                  *
.**END:
.**                D  (NO,,YES,NOLINK)
.**                   HAS THE LIST FORM BEEN REQUESTED ?             */
.**                                                                  *
.*********************************************************************
.END     ANOP                          ENDING ROUTINE FOR ENTIRE MACRO
         AIF   (&LISTSW EQ 1).NOLINK   BRANCH AROUND THE BRANCH & LINK
.*********************************************************************
.**                                                                  *
.**                P  GENERATE THE BRANCH & LINK INSTRUCTION TO I/O  */
.**                                                                  *
.*********************************************************************
         AIF   ('&VCONBR' NE 'YES').BALR
         L     15,@IOVCON               ADDR TO BR TO        @ZA04126
         BALR  14,15                    ENTER THE IO ROUTINE @ZA04126
         AGO      .NOLINK
.BALR    ANOP
         L     15,TSTIO                ESTABLISH THE ADDRESS TO IO
         BALR  14,15                   BRANCH TO I/O
.*********************************************************************
.**                                                                  *
.**NOLINK:
.**                R  RETURN CONTROL                                 */
.**                                                                  *
.*********************************************************************
.NOLINK  MEND                          RETURN CONTROL TO USER
         MACRO
         DATA  &DATAPTR,&DSNAME
.*********************************************************************
.**                                                                  *
.**DATA:
.**                E  DATA REQUEST ROUTINE                           */
.**                                                                  *
.*********************************************************************
         GBLB  &LISTSW
.*********************************************************************
.**                                                                  *
.**                P  SET UP INSTRUCTION NECESSARY TO STORE          */
.**                   DATA REQUEST # IN P.L.                         */
.**                                                                  *
.*********************************************************************
         AIF   (&LISTSW EQ 1).LISTTYP  FIND OUT WHICH FORM E OR L
         MVI   0(1),1                  STORE TYPE REQT IN P. L. (DATA)
         AGO   .NEXTSTP                BRANCH AND CONTINUE
.LISTTYP ANOP                          LABEL FOR DC TYPE INSTRUCTION
         DC    AL2(0)                  FILLER
.*********************************************************************
.**                                                                  *
.**                D  (YES,,NO,%CONT8)
.**                   IS THE 'DATAPTR' PARAMETER NULL                */
.**                                                                  *
.*********************************************************************
.NEXTSTP ANOP                          LABEL USED TO SKIP DC TYPE INST
         AIF   ('&DATAPTR' NE '').STOREDP  TEST FOR REQD PARM DATAPTR
.*********************************************************************
.**                                                                  *
.**                P  ISSUE WARNING MESSAGE                          */
.**                                                                  *
.*********************************************************************
         MNOTE 0,'THE DATAPTR KEYWORD IS REQUIRED, UNLESS A NULL LINE  *
               HAS BEEN REQUESTED'
.*********************************************************************
.**                                                                  *
.**%CONT8:
.**                S  CALL STORE: TO INSERT DATAPTR, DSNAME
.**                   AND FILLER INTO P.L.                           */
.**                                                                  *
.*********************************************************************
.STOREDP ANOP                          BRANCH HERE IF &DATAPTR CODED
         STORE 4,&DATAPTR,4            PREPARE INST TO INSERT INTO P.L.
         STORE 8,&DSNAME,4             PREPARE INST TO INSERT INTO P.L.
         STORE 12,,72                  IF LIST FORM PREPARE DC'S ZERO
.*********************************************************************
.**                                                                  *
.**%CONT9:
.**                R  RETURN TO THE DRIVER                           */
.**                                                                  *
.*********************************************************************
         MEND
         MACRO
         SVCERR &SVC,&ABENDRG,&RC,&INST11
.*********************************************************************
.**                                                                  *
.**SVC:
.**                E  SVC BUILD PARM ROUTINE                         */
.**                                                                  *
.*********************************************************************
         GBLB  &LISTSW                 SWITCH FOR LIST FORM OF MF
         GBLB  &STORE                  SW FOR STORE TO STRIP NUM DOWN
.*********************************************************************
.**                                                                  *
.**                P  SET UP INST NECESSARY TO STORE
.**                   SVC REQUEST # IN P.L.                          */
.**                                                                  *
.*********************************************************************
         AIF   (&LISTSW EQ 1).NEXTSTP  TEST FOR LIST FORM INST
         MVI   0(1),3                  STORE SVCERR REQUEST NUM IN P.L.
.*********************************************************************
.**                                                                  *
.**                D  (YES,,NO,%CONT10)
.**                   ARE THE PARAMETERS CODED CORRECTLY ?           */
.**                P  ISSUE WARNING MESSAGE IF INCORRECT             */
.**                                                                  *
.*********************************************************************
.NEXTSTP ANOP                          THIS PORTION CHECKS PARMS
         AIF   ('&ABENDRG' EQ '').CONT1  BRANCH TO CONTINUE IF NULL
         AIF   ('&ABENDRG'(1,1) EQ '(').CONT1  BRANCH TO CONTINUE IF OK
         MNOTE 12,'REGISTER NOTATION IS REQUIRED WITH THE ABENDRG PARM'
.CONT1   ANOP                          BRANCH HERE IF ABENDRG OK
         AIF   ('&RC' EQ '').CONT2     BRANCH TO CONTINUE IF NULL
         AIF   ('&RC'(1,1) EQ '(').CONT2  BRANCH TO CONTINUE IF OK
         MNOTE 12,'REGISTER NOTATION IS REQUIRED WITH THE RC PARM'
.CONT2   ANOP                          BRANCH HERE IF RC PARM OK
         AIF   ('&SVC' NE '').STORSVC  TEST FOR NULL PARM
         MNOTE 0,'THE SVC KEYWORD IS REQUIRED WITH THE SVCERR OPTION'
.*********************************************************************
.**                                                                  *
.**%CONT10:
.**                S  CALL STORE:  TO INSERT &ABENDRG, &SVC,
.**                   &RC AND FILLER INTO P.L.                       */
.**                                                                  *
.*********************************************************************
.STORSVC ANOP                          BRANCH HERE IF &SVC CODED
         STORE 2,,2                    PREPARE FILLER IF LIST FORM
         STORE 4,&ABENDRG,4            PREPARE INST TO INSERT INTO P.L.
         STORE 8,&RC,4                 PREPARE INST TO INSERT INTO P.L.
         STORE 12,,4                   PREPARE FILLER IF LIST FORM
         STORE 16,&SVC,4               PREPARE INST TO INSERT INTO P.L.
         STORE 20,,26                  PREPARE FILLER IF LIST FORM
.*********************************************************************
.**                                                                  *
.**                S  CALL INSTTYP: PROCESS TYPE INSERT              */
.**                                                                  *
.*********************************************************************
         TYPE 46,&INST11
.*********************************************************************
.**                                                                  *
.**                S  CALL STORE: PREPARE INST TO STORE
.**                   FILLER INTO P.L.                               */
.**                                                                  *
.*********************************************************************
         STORE 52,,8                   PREPARE FILLER IF LIST FORM
.*********************************************************************
.**                                                                  *
.**                S  CALL INSTWHR: PROCESS WHERE PORTION OF INSERT  */
.**                                                                  *
.*********************************************************************
         WHERE 60,&INST11
.*********************************************************************
.**                                                                  *
.**%CONT13:
.**                R  RETURN TO DRIVER                               */
.**                                                                  *
.*********************************************************************
         MEND                          END OF SVCERR ROUTINE
         MACRO
         MSG   &FIRST,&SECOND,&INST11,&INST12,&INST13,&INST14,&INST15, *
               &INST16,&INST21,&INST22,&INST23,&INST24,&INST25,&INST26
.*********************************************************************
.**                                                                  *
.**MSG:
.**                E  MSG ROUTINE                                    */
.**                                                                  *
.*********************************************************************
         GBLB  &LISTSW                 SWITCH IF LIST FORM USED
         GBLB  &STORESW                SW INDICATES TO STORE STRIP NUM
.*********************************************************************
.**                                                                  *
.**                P  SET UP INST NECESSARY TO
.**                   STORE MSG REQ # IN P.L.                        */
.**                                                                  *
.*********************************************************************
         AIF   (&LISTSW EQ 1).LISTTYP  TEST WHICH FORM MACRO L OR E
         MVI   0(1),2                  MOVE CODE FOR MSG INTO P.L.
.*********************************************************************
.**                                                                  *
.**                D  (YES,,NO,%CONT14)
.**                   IS THE 'FIRST' PARAMETER NULL ?                */
.**                                                                  *
.*********************************************************************
.LISTTYP ANOP                          LABEL USED BRANCH AROUND E INST
         AIF   ('&FIRST' NE '').NEXTSTP TEST IF USER CODED FIRST PARM
.*********************************************************************
.**                                                                  *
.**                P  ISSUE AN WARNING MSG                           */
.**                                                                  *
.*********************************************************************
         MNOTE 0,'THE FIRST PARM IS REQUIRED WITH THE MSG OPTION'
.*********************************************************************
.**                                                                  *
.**%CONT14:
.**                S  CALL INSTTYP: SET UP INST TO INSERT
.**                   TYPES INTO P. L.                               */
.**                                                                  *
.*********************************************************************
.NEXTSTP ANOP                          ROUTINE TO PLACE TYPES IN LIST
         INSTTYP 2,&INST11,&INST12,&INST13,&INST14,&INST15,&INST16
         STORE 8,,8                    PREPARE FILLER IF LIST FORM
.*********************************************************************
.**                                                                  *
.**%CONT17:
.**                S  CALL STORE: STORE &FIRST INTO PARM LIST        */
.**                                                                  *
.*********************************************************************
&STORESW SETB  1                       TURN ON STRIP SWITCH FOR STORE
         STORE 16,&FIRST,4             PREPARE INST TO STORE IN LIST
.*********************************************************************
.**                                                                  *
.**                S  CALL INSTWHR: PROCESS WHERE PORTION OF INSERTS */
.**                                                                  *
.*********************************************************************
         INSTWHR 20,&INST11,&INST12,&INST13,&INST14,&INST15,&INST16
         STORE 44,,2                   PREPARE FILLER IF LIST FORM
.*********************************************************************
.**                                                                  *
.**                S  CALL INSTTYP: PROCESS TYPE INSERT OF 2ND LEV   */
.**                                                                  *
.*********************************************************************
         INSTTYP 46,&INST21,&INST22,&INST23,&INST24,&INST25,&INST26
.*********************************************************************
.**                                                                  *
.**                S  CALL STORE: PREPARE INST TO STORE
.**                   &SECOND AND FILLER INTO P.L.                   */
.**                                                                  *
.*********************************************************************
         STORE 52,,4                   PREPARE FILLER IF LIST FORM
&STORESW SETB  1                       TURN ON STRIP SWITCH FOR STORE
         STORE 56,&SECOND,4            PREPARE INST TO STORE &SECOND
.*********************************************************************
.**                                                                  *
.**                S  CALL INSTWHR: PROCESS WHERE PORTION OF INSERTS */
.**                                                                  *
.*********************************************************************
         INSTWHR 60,&INST21,&INST22,&INST23,&INST24,&INST25,&INST26
.*********************************************************************
.**                                                                  *
.**%CONT18:
.**                R  RETURN TO DRIVER                               */
.**                                                                  *
.*********************************************************************
         MEND                          END OF MESSAGE PROCESSOR ROUTINE
         MACRO
         PTGT  &FIRST
.*********************************************************************
.**                                                                  *
.**                E  PTGT ROUTINE                                   */
.**                                                                  *
.*********************************************************************
         GBLB  &LISTSW                 SWITCH FOR LIST FORM
         GBLB  &STORESW                SWITCH FOR STORE TO STRIP NUM
.*********************************************************************
.**                                                                  *
.**                P  SET NECESSARY INST TO STORE
.**                   PTGT # INTO P.L.                               */
.**                                                                  *
.*********************************************************************
         AIF   (&LISTSW EQ 1).LISTTYP  TEST FOR LIST FORM
         MVI   0(1),4                  STORE CODE NUM FOR PTGT REQT
.*********************************************************************
.**                                                                  *
.**                D  (YES,,NO,%CONT19)
.**                   IS THE 'FIRST' PARAMETER NULL ?                */
.**                                                                  *
.*********************************************************************
.LISTTYP ANOP                          BRANCH TO IF LIST FORM
         AIF   ('&FIRST' NE '').STOR1ST TEST FOR NULL PARM
.*********************************************************************
.**                                                                  *
.**                P  ISSUE AN WARNING MESSAGE                       */
.**                                                                  *
.*********************************************************************
         MNOTE 0,'THE FIRST KEYWORD IS REQUIRED WITH THE PTGT OPTION'
.*********************************************************************
.**                                                                  *
.**%CONT19:
.**                S  CALL STORE: STORE PARMS AND FILLERS INTO P.L.  */
.**                                                                  *
.*********************************************************************
.STOR1ST ANOP                          ROUTINE TO PREPARE P.L.
         STORE 2,,14                   PREPARE FILLER IF LIST FORM
&STORESW SETB  1                       TURN ON STRIP SWITCH
         STORE 16,&FIRST,4             PREPARE INST TO STORE &FIRST
         STORE 20,,64                  PREPARE FILLER IF LIST FORM
.*********************************************************************
.**                                                                  *
.**%CONT20:
.**                R  RETURN TO DRIVER                               */
.**                                                                  *
.*********************************************************************
         MEND                          END OF PTGT PROCESSOR ROUTINE
         MACRO
         INSTTYP &START,&IN1,&IN2,&IN3,&IN4,&IN5,&IN6
.*********************************************************************
.**                                                                  *
.**INSTTYP:
.**                E  ROUTINE FOR INSERT TYPE PORTION                */
.**                                                                  *
.*********************************************************************
         LCLA  &DISP                   VARIABLE TO CONTAIN DISPLACEMENT
&DISP    SETA  &START                  INITIALIZE DISPLACEMENT COUNTER
.*********************************************************************
.**                                                                  *
.**                P  PREPARE EACH INSERT TO BE PROCESSED
.**                   BY TYPE PROCESSOR                              */
.**                                                                  *
.*********************************************************************
         TYPE  &DISP,&IN1              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+1                 INCREMENT DISPLACEMENT COUNTER
         TYPE  &DISP,&IN2              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+1                 INCREMENT DISPLACEMENT COUNTER
         TYPE  &DISP,&IN3              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+1                 INCREMENT DISPLACEMENT COUNTER
         TYPE  &DISP,&IN4              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+1                 INCREMENT DISPLACEMENT COUNTER
         TYPE  &DISP,&IN5              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+1                 INCREMENT DISPLACEMENT COUNTER
         TYPE  &DISP,&IN6              CALL TYPE ROUTINE TO STORE PARM
.*********************************************************************
.**                                                                  *
.**                R  RETURN TO CONTINUE PROCESSING                  */
.**                                                                  *
.*********************************************************************
         MEND                          END OR TYPE PROCESSOR OF INSERTS
         MACRO
         TYPE  &DISP,&IN               INTERNAL ROUTINE / TYPE PORTION
.*********************************************************************
.**                                                                  *
.**TYPE:           E  ROUTINE TO DETERMINE WHICH TYPE                */
.**                                                                  *
.*********************************************************************
         LCLA  &TYINST                 VARIABLE FOR CODE OF INSERT
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,NULLTYP)
.**                   IS THIS INSERT NULL ?                          */
.**                                                                  *
.*********************************************************************
         AIF   ('&IN' EQ '').NULLTYP   BRANCH TO NULL PROCESSING
.*********************************************************************
.**                                                                  *
.**                P  DETERMINE WHICH TYPE REQ'T (PDE,NUM,ETC)       */
.**                                                                  *
.*********************************************************************
         AIF   ('&IN(1)' NE 'APDE').CONT1 TEST IF APDE TYPE INSERT
&TYINST  SETA  6                       SET CODE VARIABLE / INDICATE PDE
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.CONT1   ANOP                          BRANCHED TO IF NOT PDE
         AIF   ('&IN(1)' NE 'NUM').CONT2 TEST IF NUM TYPE INSERT
&TYINST  SETA  5                       SET CODE VARIABLE / INDICATE PDE
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.CONT2   ANOP                          BRANCHED TO IF NOT PDE
         AIF   ('&IN(1)' NE 'REG').CONT3 TEST IF REG TYPE INSERT
&TYINST  SETA  1                       SET CODE VARIABLE / INDICATE REG
         AIF   ('&IN(2)'(1,1) EQ '(').CONT21  TEST FOR REG NOTATION
         MNOTE 12,'WITH THE REG TYPE INSERT ONLY REG NOTATION ALLOWED'
.CONT21  ANOP                          BRANCH HERE IF SYNTAX OK
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.CONT3   ANOP                          BRANCH TO IF NOT REG TYPE
         AIF   ('&IN(1)' NE 'ADDR').CONT4 TEST IF ADDR TYPE INSERT
&TYINST  SETA  2                       SET CODE VAR / INDICATE ADDR
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.CONT4   ANOP                          BRANCH TO IF NOT ADDR TYPE
         AIF   ('&IN(1)' NE 'ADDRCONX').CONT5 TEST ADDRCONX TYPE INSERT
&TYINST  SETA  3                       SET CODE VAR / INDICATE ADDR
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.CONT5   ANOP                          BRANCH TO IF NOT ADDR TYPE
         AIF   ('&IN(1)' NE 'ADDRCOND').CONT6 TEST ADDRCOND TYPE INSERT
&TYINST  SETA  4                       SET CODE VAR / INDICATE ADDR
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.CONT6   ANOP                          BRANCH TO IF NOT ADDRCONX TYPE
         AIF   ('&IN(1)' NE 'VPDE').ERROR TEST VPDE TYPE INSERT
&TYINST  SETA  7                       SET CODE VAR / INDICATE ADDR
         AGO   .PROCESS                BRANCH TO STORE INTO LIST
.*********************************************************************
.**                                                                  *
.**                P  IF THERE IS A SYNTAX ERROR - ISSUE WARNING MSG */
.**                                                                  *
.*********************************************************************
.ERROR   ANOP                          COME HERE IF SYNTAX ERROR FOUND
         MNOTE 12,'THE TYPE PORTION OF AN INSERT HAS A SYNTAX ERROR'
&TYINST  SETA  0                       SET CODE TO NULL VALUE
.PROCESS ANOP                          THIS PORTION CALLS STORE
.*********************************************************************
.**                                                                  *
.**                S  (,ENDTYP)
.**                   CALL STORE: STORE CODE INTO P. L.              */
.**                                                                  *
.*********************************************************************
         STORE &DISP,&TYINST,1         CALL STORE TO PREPARE INST
         AGO   .ENDTYP                 BRANCH TO END TO RETURN
.*********************************************************************
.**                                                                  *
.**NULLTYP:
.**                S  CALL STORE: STORE FILLER ZEROS IF L FORM       */
.**                                                                  *
.*********************************************************************
.NULLTYP ANOP                          BRANCH HERE IF INSERT PARM NULL
         STORE &DISP,,1                CALL STORE FOR FILLER
.*********************************************************************
.**                                                                  *
.**ENDTYP:         R  RETURN TO INSTTYP                              */
.**                                                                  *
.*********************************************************************
.ENDTYP  ANOP                          BRANCH HERE TO EXIT ROUTINE
         MEND                          END OF TYPE ROUTINE
         MACRO
         INSTWHR &START,&IN1,&IN2,&IN3,&IN4,&IN5,&IN6
.*********************************************************************
.**                                                                  *
.**INSTWHR:
.**                E  ROUTINE FOR INSERT WHERE PORTION               */
.**                                                                  *
.*********************************************************************
         LCLA  &DISP                   VARIABLE TO CONTAIN DISPLACEMENT
&DISP    SETA  &START                  INITIALIZE DISPLACEMENT COUNTER
.*********************************************************************
.**                                                                  *
.**                P  PREPARE EACH INSERT TO BE PROCESSED
.**                   BY WHERE PROCESSOR                             */
.**                                                                  *
.*********************************************************************
         WHERE &DISP,&IN1              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+4                 INCREMENT DISPLACEMENT COUNTER
         WHERE &DISP,&IN2              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+4                 INCREMENT DISPLACEMENT COUNTER
         WHERE &DISP,&IN3              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+4                 INCREMENT DISPLACEMENT COUNTER
         WHERE &DISP,&IN4              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+4                 INCREMENT DISPLACEMENT COUNTER
         WHERE &DISP,&IN5              CALL TYPE ROUTINE TO STORE PARM
&DISP    SETA  &DISP+4                 INCREMENT DISPLACEMENT COUNTER
         WHERE &DISP,&IN6              CALL TYPE ROUTINE TO STORE PARM
.*********************************************************************
.**                                                                  *
.**                R  RETURN TO CONTINUE PROCESSING                  */
.**                                                                  *
.*********************************************************************
         MEND
         MACRO
         WHERE &DISP,&IN
.*********************************************************************
.**                                                                  *
.**WHERE:          E  ROUTINE PROCESS WHERE PORTION OF ONE INSERT    */
.**                                                                  *
.*********************************************************************
         GBLB  &STORESW                SWITCH - INDICATE STRIP NUM
         LCLC  &WHERE                  LABEL USED TO OBTAIN WHERE PARM
&WHERE   SETC  '&IN(2)'                STRIP OFF WHERE PORTION OF INST
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,NULLWHR)
.**                   IS THIS INSERT NULL ?                          */
.**                                                                  *
.*********************************************************************
         AIF   ('&IN' EQ '').NULLWHR   BRANCH TO NULL PROCESSING
.*********************************************************************
.**                                                                  *
.**                P  ISSUE A WARNING MSG IF WHERE PORTION IS NULL   */
.**                                                                  *
.*********************************************************************
         AIF   ('&WHERE' NE '').CONT   TEST FOR NULL PORTION
         MNOTE 12,'AN INSERT WHERE PORTION IS MISSING OR MISSPELLED'
.*********************************************************************
.**                                                                  *
.**                P  TURN ON THE STRIP SW IF 'NUM' IS THE TYPE      */
.**                                                                  *
.*********************************************************************
.CONT    ANOP                          THIS PORTION PREPARE TO STORE
&STORESW SETB  ('&IN(1)' EQ 'NUM')     TURN ON STRIP SWITCH IF I/O NUM
.*********************************************************************
.**                                                                  *
.**                S  (,ENDWHR)
.**                   CALL STORE: HAVE WHERE PORTION PLACED IN P.L.  */
.**                                                                  *
.*********************************************************************
         STORE &DISP,&WHERE,4          CALL STORE - STORE WHERE PORTION
         AGO   .ENDWHR                 BRANCH TO END FOR RETURN
.*********************************************************************
.**                                                                  *
.**NULLWHR:
.**                S  CALL STORE: STORE FILLER ZEROS IF L FORM       */
.**                                                                  *
.*********************************************************************
.NULLWHR ANOP                          BRANCH HERE IF INSERT PARM NULL
         STORE &DISP,,4                CALL STORE FOR FILLER
.*********************************************************************
.**                                                                  *
.**ENDWHR:         R  RETURN TO PROCESSING                           */
.**                                                                  *
.*********************************************************************
.ENDWHR  ANOP                          BRANCH HERE TO EXIT
         MEND                          END OF INSTWHR ROUTINE
         MACRO
         STORE &DISP,&PARM,&LEN        ROUT. TO PREPARE INST FOR LIST
.*********************************************************************
.**                                                                  *
.**STORE:
.**                E  STORE DATA IN PARM LIST                        */
.**                                                                  *
.*********************************************************************
         GBLB  &STORESW                SW TO INDICATE STRIPPING
         GBLB  &LISTSW                 SW TO INDICATE USER USED L FORM
         LCLC  &PARMC                  VARIABLE TO STRIP PARM DOWN
         LCLA  &PARMN                  VARIABLE TO CHANGE ATTRIBUTES
         LCLA  &LENGTH                 VARIABLE TO COUNT CHARS IN PARM
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,START)
.**                   IS THIS A LIST FORM ?                          */
.**                                                                  *
.*********************************************************************
         AIF   (&LISTSW EQ 1).START    AVOID NEXT TEST IF LIST FORM
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,RETURN)
.**                   IS THIS A NULL PARM ?                          */
.**                                                                  *
.*********************************************************************
         AIF   ('&PARM' EQ '').RETURN  TEST FOR NULL PARM (ONLY E FORM)
.*********************************************************************
.**                                                                  *
.**START:          D  (YES,,NO,PROCESS)
.**                   IS STRIP SWITCH ON ?                           */
.**                                                                  *
.*********************************************************************
.START   ANOP                          BRANCH HERE IF LIST FORM
         AIF   (&STORESW NE 1).PROCESS SEE IF THERE IS NO NEED TO STRIP
         AIF   ('&PARM' EQ '').PROCESS IF NULL DO NOT PREPARE TO STRIP
.*********************************************************************
.**                                                                  *
.**                D  (NO,,YES,PROCESS)
.**                   TEST FOR REGISTER NOTATION                     */
.**                                                                  *
.*********************************************************************
         AIF   ('&PARM'(1,1) EQ '(').PROCESS TEST FOR REGISTER NOTATION
.*********************************************************************
.**                                                                  *
.**                P  ISSUE A WARNING MESSAGE IF
.**                   ERROR FOUND IN NUMBER TO BE STRIPPED           */
.**                                                                  *
.*********************************************************************
&LENGTH  SETA  K'&PARM                 COUNT PARM LENGTH FOR POSS ERROR
         AIF   (&LENGTH EQ 5).OK       TEST FOR SYNTAX ERROR BY USER
         MNOTE 12,'A SYNTAX ERROR FOUND IN A MESSAGE OR INSERT NUMBER'
.*********************************************************************
.**                                                                  *
.**OK:             P  STRIP OFF NUMBER PORTION OF PARM               */
.**                                                                  *
.*********************************************************************
.OK      ANOP                          BRANCH HERE IF NUM SEEMS CORRECT
&PARMC   SETC  '&PARM'(3,3)            STRIP OF NUM PORTION
&PARMN   SETA  &PARMC                  CHANGE ATTRIBUTE / CHAR TO ARTH
.*********************************************************************
.**                                                                  *
.**                D  (YES,,NO,BLDINST)
.**                   IS THIS THE LIST FORM WHICH REQS DC'S          */
.**                                                                  *
.*********************************************************************
         AIF   (&LISTSW NE 1).BLDINST  SEE IF PL IN DYNAMIC STORAGE
.*********************************************************************
.**                                                                  *
.**                P  (,RETURN)
.**                   BUILD DC FOR LIST FORM P.L.                    */
.**                                                                  *
.*********************************************************************
         DC    AL&LEN.(&PARMN)         PLACEMENT OF PARAMETER INTO LIST
         AGO   .RETURN                 BRANCH TO EXIT
.*********************************************************************
.**                                                                  *
.**BLDINST:        P  (,RETURN)
.**                   BUILD THE INSTURCTION NECESSARY TO STORE
.**                   INTO A DYNAMIC AREA                            */
.**                                                                  *
.*********************************************************************
.BLDINST ANOP                          BRANCH HERE FOR EXECUTABLE FORM
         AIF   (&LEN EQ 1).BLDMVI1     SEE IF ONE BYTE TYPE INST NEEDED
         LA    14,&PARMN               GET PARAMETER INTO WORK REGISTER
         ST    14,&DISP.(1)            STORE PARAMETER INTO PARM LIST
         AGO   .RETURN                 BRANCH TO EXIT
.BLDMVI1 ANOP                          BRANCH HERE IF ONE BYTE LENGTH
         MVI   &DISP.(1),&PARMN        MOVE PARM INTO PARAMETER LIST
         AGO   .RETURN                 BRANCH TO EXIT
.*********************************************************************
.**                                                                  *
.**PROCESS:        P  PREPARE DC OR INSTRUCTIONS TO BUILD P.L.       */
.**                                                                  *
.*********************************************************************
.PROCESS ANOP                          BRANCH HERE / STANDARD STORE REQ
         AIF   (&LISTSW NE 1).INSTBLD  TEST FOR EXECUTABLE FORM REQT
         AIF   ('&PARM' NE '').DCPARM  TEST FOR FILLER REQUEST
         DC    &LEN.AL1(0)             FILLER OF HEX ZEROS
         AGO   .RETURN                 BRANCH TO EXIT
.DCPARM  ANOP                          BRANCH HERE FOR PREPARATION DC'S
         AIF   ('&PARM'(1,1) NE '(').CONTDC ENSURE USER HAS NOT USED RG
         MNOTE 12,'REGISTER NOTATION IS NOT PERMITTED WITH THE LIST FOR*
               M (MF=L)'
.CONTDC  DC    AL&LEN.(&PARM)          PLACEMENT OF PARAMETER INTO LIST
         AGO   .RETURN                 BRANCH TO EXIT
.INSTBLD ANOP                          BRANCH HERE FOR DYNAMIC LIST
         AIF   (&LEN NE 1).CONTI2      TEST FOR ONE BYTE TYPE INST
         AIF   ('&PARM'(1,1) NE '(').CONTI1 TEST FOR REG NOTATION
         STC   &PARM,&LEN.(1)          STORE PARM INTO LIST
         AGO   .RETURN                 BRANCH TO EXIT
.CONTI1  ANOP                          BRANCH HERE FOR MVI TYPE INST
         MVI   &DISP.(1),&PARM         MOVE VALUE INTO LIST
         AGO   .RETURN                 BRANCH TO EXIT
.CONTI2  ANOP                          BRANCH HERE IF NOT ONE BYTE
         AIF   ('&PARM'(1,1) EQ '(').REGPARM  IF REG USE STORE INST
         LA    14,&PARM                GET PARM INTO WORK REGISTER
         ST    14,&DISP.(1)            STORE PARM INTO PARAMETER LIST
         AGO   .RETURN                 BRANCH TO EXIT
.REGPARM ANOP                          BRANCH HERE IF REG NOTATION
         ST    &PARM,&DISP.(1)         STORE PARM INTO PARAMETER LIST
.*********************************************************************
.**                                                                  *
.**RETURN:         R  RETURN TO CALLER AND CONTINUE PROCESSING       */
.**                                                                  *
.*********************************************************************
.RETURN  ANOP                          EXIT ROUTINE FOR STORE
&STORESW SETB  0                       TURN OFF STRIP SW FOR NEXT PARM
         MEND                          END OF STORE ROUTINE
         PRINT ON
./ ADD NAME=IKJEGSPL
         MACRO
&NAME    IKJEGSPL &RTRY=,&ABNTB=,&MODNM=,&TNM=*
.**********************************************************************
.*                                                                    *
.*  IKJEGSPL IS USED TO GENERATE A LIST OF INFORMATION TO BE USED BY  *
.*  THE ESTAE EXIT ROUTINE IN AN ABEND SITUATION.  THIS LIST WILL     *
.*  CONTAIN THE FOLLOWING INFORMATION:                                *
.*       RETRY ROUTINE ADDRESS;                                       *
.*       ABEND IC TABLE ADDRESS;                                      *
.*       MODULE ENTRY POINT;                                          *
.*       MODULE NAME;                                                 *
.*       MODULE TEXT NAME.                                            *
.*                                                                    *
*   STATUS -- VERSION NO. 1 - OS/VS2 RELEASE NO. 02                   *
*   CHANGE LEVEL -- 01 - DATE 1-1-73                                  *
.*                                                                    *
.**********************************************************************
         SPACE 1
         LCLA  &LENTNM
         LCLC  &A1
&LENTNM  SETA  K'&TNM
&A1      SETC  '*'
         AIF   (T'&RTRY EQ 'O').MSG1
         AIF   (T'&ABNTB EQ 'O').MSG2
         AIF   (T'&MODNM EQ 'O').MSG3
         AIF   (T'&MODNM NE 'J').MSG3
&NAME    DS    0F                 EXIT ROUTINE PARAM LIST
         DC    A(&RTRY)           RETRY ROUTINE ADDRESS
         DC    A(&ABNTB)          ABEND IC TABLE ADDRESS
         DC    A(&MODNM)          ENTRY POINT FOR THIS MODULE
         DC    CL8'&MODNM'        MODULE NAME
         DS    0X   **THE FOLLOWING IS AN INSERT FOR THE EXIT RTN MSG**
         DC    AL2(&LENTNM+5)     LENGTH OF MODULE TEXT NAME + 5
         DC    AL2(0)             THIS FIELD IS REQUIRED BY I/O
         DC    C'&TNM '      MODULE TEXT NAME
         MEXIT
.MSG1    MNOTE 12,'SET ***RTRY&A1 EQUAL TO YOUR RETRY RTN  ADDR'
         MEXIT
.MSG2    MNOTE 12,'SET ***ABNTB&A1 EQUAL TO YOUR ABEND TABLE ADDR'
         MEXIT
.MSG3    MNOTE 12,'SET ***MODNM&A1 EQUAL TO YOUR MODULE CSECT NAME'
.END     MEND
./ ADD NAME=IKJEGSUB
         MACRO
         IKJEGSUB &CSECT=IBM
         LCLA  &A,&B,&C,&D,&E,&F,&G
         LCLC  &CSNAM,&SUBCMD,&ABBR,&LDNAM,&LABEL,&LABEL1,&LABEL2,&NMBR
         LCLC  &LABEL0,&INDEX
&F       SETA  1              INDICATE FIRST SUBCOMMAND ID.
         AIF   ('&CSECT' NE 'IBM').CONT0
&CSNAM   SETC  'IKJEGSCD'     DEFINE CSECT NAME FOR IBM TABLE.
IKJEGSCD CSECT
         ENTRY IKJEGAID
         ENTRY IKJEGEID
         ENTRY IKJEGPID
         AGO   .CONT1         BRANCH TO GENERATE COMMENTS.
.CONT0   ANOP
         AIF   ('&CSECT' NE 'USER').ERROR2
&CSNAM   SETC  'IKJEGSCU'     DEFINE CSECT NAME FOR USER TABLE.
IKJEGSCU CSECT
&F       SETA  &F+128         INDICATE USER SUBCOMMAND ID.
.CONT1   ANOP
         SPACE 2
***********************************************************************
*                                                                     *
*        THE IKJEGSUB MACRO IS USED TO GENERATE THE TABLE OF IBM      *
*        SUPPLIED SUBCOMMAND PROCESSORS AND/OR THE TABLE OF USER      *
*        WRITTEN SUBCOMMAND PROCESSORS.  BOTH TABLES, EVEN THOUGH     *
*        THE USER TABLE MAY BE EMPTY, MUST BE LINKAGE EDITED WITH     *
*        IKJEGMNL.                                                    *
*                                                                     *
*        THE FORMAT OF A TABLE ENTRY IS AS FOLLOWS--                  *
*                                                                     *
*        .......................................................      *
*        .        .        .        .        .        .        .      *
*        .  NAME  . SUBCMD .  ABBR  .  ABBR  . LDMOD  . SUBCMD .      *
*        . LENGTH .  NAME  . LENGTH .  NAME  .  NAME  .   ID   .      *
*        .        .        .        .        .        .        .      *
*        .......................................................      *
*        +0       +1       +(M+1)   +(M+2)   +(M+N+2) +(M+N+10)       *
*                                                                     *
         AIF   ('&CSNAM' EQ 'IKJEGSCU').CONT2
*        STATUS -- VERSION NO. 01 - OS/VS2 RELEASE NO. 01             *
*                                                                     *
*        CHANGE LEVEL -- 04 - DATE 04/25/72                           *
*                                                                     *
.CONT2   ANOP
***********************************************************************
&A       SETA  N'&SYSLIST     DETERMINE NUMBER OF SUBCOMMANDS.
         AIF   (&A EQ 0).CONT6 IF NO SUBCOMMANDS, BRANCH TO
.*                            GENERATE END OF TABLE INDICATOR.
&B       SETA  1              SUBLIST INDEX.
.CONT3   ANOP
&C       SETA  N'&SYSLIST(&B)
         AIF   (&C NE 3).ERROR1 VERIFY THAT SUBCMD
.*                            NAME AND LOAD NAME SPECIFIED.
         AIF   ('&CSNAM' EQ 'IKJEGSCD').CONT33
&INDEX   SETC  '&F'
&LABEL0  SETC  '&CSNAM'(6,3).'&INDEX'.'00'
&LABEL1  SETC  '&CSNAM'(6,3).'&INDEX'.'01'
&LABEL2  SETC  '&CSNAM'(6,3).'&INDEX'.'02'
         AGO   .CONT37
.CONT33  ANOP
&E       SETA  K'&SYSLIST(&B,&C)
&D       SETA  &E-2
&G       SETA  3
         AIF   (&E EQ 8).CONT35
&G       SETA  2
&D       SETA  &E-1
.CONT35  ANOP
&LABEL0  SETC  '&CSNAM'(6,3).'&SYSLIST(&B,&C)'(&D,&G).'00'
&LABEL1  SETC  '&CSNAM'(6,3).'&SYSLIST(&B,&C)'(&D,&G).'01'
&LABEL2  SETC  '&CSNAM'(6,3).'&SYSLIST(&B,&C)'(&D,&G).'02'
.CONT37  ANOP
&SUBCMD  SETC  '&SYSLIST(&B,1)'
         SPACE 2
&LABEL0  EQU   *
         DC    AL1(&LABEL1-*-1) - LENGTH OF SUBCOMMAND NAME.
         DC    C'&SUBCMD' -   SUBCOMMAND NAME.
&LABEL1  EQU   *
         DC    AL1(&LABEL2-*-1) - LENGTH OF ABBREVIATION.
         AIF   (K'&SYSLIST(&B,2) EQ 0).CONT4
&ABBR    SETC  '&SYSLIST(&B,2)'
         DC    C'&ABBR' -     ABBREVIATION FOR SUBCOMMAND NAME.
.CONT4   ANOP
&LABEL2  EQU   *
&LDNAM   SETC  '&SYSLIST(&B,3)'
         DC    CL8'&LDNAM' -  LOAD MODULE NAME.
         DC    AL1(&F) -      MODULE IDENTIFICATION BYTE.
         AIF   (&B EQ &A).CONT6
&B       SETA  &B+1
&F       SETA  &F+1           INCREMENT IDENTIFICATION NUMBER.
         AGO   .CONT3
.CONT6   ANOP
         SPACE 2
         DC    AL1(255) -     END OF TABLE INDICATOR.
         AIF   ('&CSNAM' EQ 'IKJEGSCU').CONT7
         SPACE 5
SCDNXTNM EQU   10 -           LENGTH OF ABBREVIATION LENGTH FIELD,
*                             LOAD MODULE NAME LENGTH AND ID
*                             LENGTH.
SCDNXTAB EQU   1 -            LENGTH OF NAME LENGTH FIELD.
SCDTBEND EQU   255 -          END OF TABLE INDICATOR.
SCDABBRL EQU   1 -            LENGTH OF ABBREVIATION LENGTH FIELD
SCDABBR  EQU   0 -            OFFSET TO ABBREVIATION LENGTH FIELD
*                             FROM POINTER TO ABBREVIATION
*                             SUBFIELD.
SCDNAME  EQU   0 -            OFFSET TO SUBCOMMAND NAME LENGTH
*                             FIELD FROM POINTER TO SUBCOMMAND
*                             ENTRY.
SCDSCPPN EQU   1 -            OFFSET FROM BEGINNING OF ENTRY TO
*                             COMMON NAME OF SUBCOMMAND PROCESSOR.
IKJEGAID EQU   SCDAT00 -      ENTRY NAME FOR AT SUBCOMMAND.
IKJEGEID EQU   SCDEND00 -     ENTRY NAME FOR END SUBCOMMAND.
IKJEGPID EQU   SCDPCH00 -     ENTRY NAME FOR ASSIGN SUBCOMMAND.
SCDATLD  EQU   SCDAT02-SCDAT00 OFFSET TO LOAD MODULE NAME FOR
*                             AT SUBCOMMAND.
SCDENDLD EQU   SCDEND02-SCDEND00 OFFSET TO LOAD MODULE NAME FOR
*                             END SUBCOMMAND.
SCDPCHLD EQU   SCDPCH02-SCDPCH00 OFFSET TO LOAD MODULE NAME FOR
*                             ASSIGN SUBCOMMAND.
.CONT7   ANOP
         MEXIT
.ERROR1  MNOTE 12,'INVALID TABLE ENTRY'
         MEXIT
.ERROR2  MNOTE 12,'INVALID KEYWORD VALUE'
         MEXIT
         MEND
./ ADD NAME=IKJEGSVB
         MACRO
         IKJEGSVB
IKJEGSVB DSECT
         SPACE 1
***********************************************************************
*                                                                     *
*        THIS MACRO MAPS THE SVC INFORMATION BLOCK CONSTRUCTED BY     *
*        THE TEST SVC (SVC 61) AND REFERENCED BY THE TSO/TEST         *
*        COMMAND PROCESSOR.                                           *
*                                                                     *
* STATUS -- VERSION NO. 01 - AOS/2 RELEASE NO. 01                     *
*                                                                     *
* CHANGE LEVEL -- 00 - DATE 09/17/71                                  *
*                                                                     *
***********************************************************************
         SPACE 1
SVBLDNAM DS    CL8 -          EBCDIC LOAD NAME OF MODULE.
SVBEP    DS    A -            ADDRESS AT WHICH MODULE IS FETCHED.
SVBTTR   DS    F -            BEGINNING TTR.
SVBATTR1 DS    X -            BYTE 1 OF MODULE ATTRIBUTES.
SVBRENT  EQU   B'10000000' -  REENTERABLE.
SVBREUS  EQU   B'01000000' -  REUSABLE.
SVBOVLY  EQU   B'00100000' -  OVERLAY.
SVBTEST  EQU   B'00010000' -  MODULE IS TO BE TESTED.
SVBOL    EQU   B'00001000' -  ONLY LOADABLE.
SVBSCTR  EQU   B'00000100' -  SCATTER FORMAT.
SVBEXEC  EQU   B'00000010' -  EXECUTABLE.
SVB1BLK  EQU   B'00000001' -  MODULE HAS NO RLD AND ONLY ONE TEXT
*                             BLOCK.
SVBATTR2 DS    X -            BYTE 2 OF MODULE ATTRIBUTES.
SVBLKEDF EQU   B'10000000' -  MODULE CAN BE PROCESSED BY LINKAGE
*                             EDITOR F ONLY.
SVBTEXT0 EQU   B'01000000' -  FIRST TEXT BLOCK ORIGIN IS ZERO.
SVBEP0   EQU   B'00100000' -  ENTRY POINT IS ZERO.
SVBNORLD EQU   B'00010000' -  MODULE CONTAINS NO RLD ITEMS.
SVBNOLE  EQU   B'00001000' -  MODULE CAN NOT BE REPORCESSED BY
*                             LINKAGE EDITOR.
SVBSYM   EQU   B'00000100' -  MODULE CONTAINS SYMBOL CARDS.
SVBLEVF  EQU   B'00000010' -  MODULE CREATED BY LINKAGE EDITOR F.
SVBREFR  EQU   B'00000001' -  REFRESHABLE.
SVBFLGS1 DS    X -            BYTE 1 OF FLAGS.
SVBDDNME EQU   B'10000000' -  DDNAME IS PRESENT.
SVBLNKLB EQU   B'01000000' -  DATA SET IS LINKLIB.
*              B'00XXXXXX' -  RESERVED BITS.
SVBCNCAT DS    X -            CONCATENATION NUMBER.
SVBDDNAM DS    CL8 -          DDNAME OF DATA SET FROM WHICH
*                             MODULE IS FETCHED.
SVBTCBPT DS    A -            TCB ADDRESS FOR MODULE BEING
*                             FETCHED.
SVBLNKPT DS    A -            ADDRESS OF NEXT SVC INFORMATION
*                             BLOCK, OR ZERO IF NO OTHER BLOCKS
*                             EXIST.
         MEND
./ ADD NAME=IKJEGSVQ
         MACRO
         IKJEGSVQ
IKJEGSVQ DSECT
         SPACE 1
***********************************************************************
*                                                                     *
*        THIS MACRO MAPS THE SVC INFORMATION BLOCK QUEUE ELEMENT      *
*        CONSTRUCTED BY THE TEST SVC (SVC 61) AND REFERENCED BY       *
*        THE TSO/TEST COMMAND PROCESSOR.                              *
*                                                                     *
* STATUS -- VERSION NO. 01 - AOS/2 RELEASE NO. 01                     *
*                                                                     *
* CHANGE LEVEL -- 00 - DATE 09/17/71                                  *
*                                                                     *
***********************************************************************
         SPACE 1
SVQLNKPT DS    A -            ADDRESS OF NEXT SVC INFORMATION
*                             BLOCK QUEUE ELEMENT, OR ZERO IF NO
*                             OTHER QUEUE ELEMENTS EXIST.
SVQTCBPT DS    A -            ADDRESS OF TCB FOR WHICH THIS QUEUE
*                             ELEMENT EXISTS.
SVQBLKPT DS    A -            ADDRESS OF THE QUEUE OF SVC INFOR-
*                             MATION BLOCKS FOR THIS TCB.
         MEND
./ ADD NAME=IKJEHCOM
         MACRO
         IKJEHCOM
********************************************************************
*   THIS MACRO IS USED  FOR A COMMON WORK AREA  EXPANSION          *
*    THAT IS COMMON TO LISTALC,LISTDS  AND IKJEHMEM                *
*  THE WORKAREA IS NEEDED FOR THE OPTIONS HISTORY MEMBERS,SYSNAMES *
*    SPECIFIED IN EITHER OF THE COMMANDS  .AN UPDATE TO THE AREA   *
*    MUST BE PUT INTO THIS MACRO SO THAT ALL COMMANDS AND IKJEHMEM *
*    HAVE THE SAME MAPPING OFFSETS                                 *
*                                                                  *
********************************************************************
OBTWAD   DSECT
MEMBUF   EQU   *                   KEY AND DATA BUF FOR DIRECTORY BLKS
MEMKEY   EQU   MEMBUF              KEY LOCATION IN BUFFER
MEMKEYL  EQU   8                   LENGTH OF THE KEY
MEMDATA  EQU   MEMKEY+MEMKEYL      LOCATION OF DIRECTORY BLK IN BUF
MEMDATAL EQU   256                 LENGTH OF A DIRECTORY BLOCK
MEMATBL  EQU   MEMDATA+MEMDATAL    LOCATION OF 5 ENTRY ALIAS
MEMATBLL EQU   208                 LENGTH OF INITIAL ALIAS NAME BLK
PBOB     EQU   MEMATBL+MEMATBLL    PTR TO BEGINNING OF BLOCKS
PSTNQ    EQU   PBOB+4              PTR TO START OF TRUE NAME QUEUE
PSANQ    EQU   PBOB+8              PTR TO START OF ALIAS NAME QUEUE
PCTB     EQU   PBOB+12             PTR TO CURRENT TRUE BLOCK
PCAB     EQU   PBOB+16             PTR TO CURRENT ALIAS BLOCK
PECTB    EQU   PBOB+20             PTR TO END OF CURRENT TRUE BLOCK
PECAB    EQU   PBOB+24             PTR TO END OF CURRENT ALIAS BLOCK
PCL      EQU   PBOB+28             PTR TO CALLIST  (ENTRY PARM LIST)
GETMSAV  EQU   PBOB+32             REG SAVE AREA FOR MEMGETM ROUTINE
GETMSAVL EQU   16                  LENGTH OF MEMGETM SAVE AREA
OBTDSNAM DS    CL44
*
*  ORG OVER THE JFCB READ IN AREA
*
         ORG   OBTWAD+176         ORG OVER JFCB AREA
         DS    0D
OBTWORKA DS    350X               OBTAIN WORK AREA
OBTDCBXL DS    0F                  DCB EXIT LIST STARTS HERE
OBTJFCBX DS    A             ADDRESS OF JFCB WKAREA
LABELID  EQU   OBTWORKA+44        OFFSET TO ID FIELD IN DSCB
LBLCHAIN EQU   OBTWORKA+135       OFFSET TO CCHHR CHAIN FIELD IN DSCB
LABLOFF1 EQU   OBTWORKA+34        OFFSET INTO UNKNOWN DSCB
LABLOFF2 EQU   OBTWORKA+65        UNKNOWN LABEL OFFSET
LABLOFF3 EQU   OBTWORKA+95        UNKNOWN LABEL OFFSET
LABLOFF4 EQU   OBTWORKA+125       UNKNOWN LABEL OFFSET
LABLOFF5 EQU   OBTWORKA+107       UNKNOWN LABEL OFFSET
         SPACE 3
         DS    0F
OBTMACS  EQU   *
RDJL     RDJFCB  (,(INPUT)),MF=L
*
OBTCLST  CAMLST SEARCH,OBTDSNAM,JFCBVOLS,OBTWORKA
OBTDSN   EQU   OBTCLST+4
OBTVOL   EQU   OBTCLST+8
OBTWKA   EQU   OBTCLST+12
*
OBTDCB   DCB   DSORG=PS,MACRF=R,RECFM=F,BLKSIZE=256,KEYLEN=8,          C
               LRECL=256,DDNAME=DUMMY
*
OPENL    OPEN  (,),MF=L            LIST FORM FOR OPEN MACRO
*
READL    READ  RDECB,SF,,,'S',,,MF=L    LIST FORM FOR READ MACRO
*
CLOSEL   CLOSE (,),MF=L            LIST FORM FOR CLOSE MACRO
*
         SPACE 2
CALLIST  DS    5F                  PARM LIST FOR MEM CALLIST LIST
*
POBTWAD  EQU   CALLIST             PTR TO OBTWAD
PGETML   EQU   CALLIST+4           PTR TO GETMAIN MACRO LIST FORM
POUTBUF  EQU   CALLIST+8           PTR TO OUTPUT BUFFER
PWRITE   EQU   CALLIST+12          PTR TO OUTPUT WRITER ROUTINE
PFREEML  EQU   CALLIST+16          PTR TO FREEMAIN MACRO LIST FORM
*
RETCODE  DS    F                  RETURN CODE SAVE AREA
SYNMSG   DS    CL1                BEGIN OF MSG
SYNMSG1  DS    CL60               SYNADINFO MSGLTH
SYNLEN   EQU   60            LENTGH OF ACTUAL TEXT
SYNOFF   EQU   68                 SYNINFO  MINUS ONE
ALIGN    DS    F                  ADDRESS OF CONVERSION AREA
*
OBTWAEND EQU   *
OBTWAL   EQU   OBTWAEND-OBTWAD     LENGTH OF THIS DSECT
         EJECT
*  RESET LOCATION COUNTER SO JFCB DISCRIPTION OVERLAYS JFCB AREA
         SPACE
         ORG   OBTDSNAM      OVLY JFCB WKAREA
         IEFJFCBN
         SPACE 3
*  RESET LOCATION COUNTER TO 44 BYTES BEFORE OBTAIN WORK AREA. THIS
*  TAKES ACCOUNT OF THE DSNAME FIELD AND ALLOWS THE OBTAIN DISCRIPTION
*  TO OVER LAY THE PROPER FIELDS OF THE DSCB.
         SPACE
         ORG   OBTWORKA-44        SEE ABOVE COMMENT
         IECSDSL1 (1)
         SPACE
*  THE FOLLOWING AREAS ARE USED BY THE HISTORY DATE CONVERT ROUTINE
*  AND OVERLAY THE PORTION OF THE OBTAIN WORK AREA NOT OCCUPIED BY
*  THE DSCB.
         SPACE
DSCBEND  EQU   *
         SPACE 2
         ORG   DSCBEND            SEE ABOVE COMMENT
HDTSV    DS    9F                  REG SAVE AREA DATE CONVERT ROUTINE.
HDTWK    DS    D                   DOUBLE WORD WORK AREA.
HD6      EQU   HDTWK+6            UNPACK FIELD FOR CVD
         EJECT
*****************************************************************
         MEND
./ ADD NAME=IKJOCMTB
         %GOTO OUTGOTO;             /* THIS IS A BI-LINGUAL MACRO
         MACRO
         IKJOCMTB &DSECT=
         AIF   ('&DSECT' EQ 'NO').NODSECT
OUTCOMTB DSECT
         AGO   .ADSECT
.NODSECT ANOP
OUTCOMTB EQU   *
.ADSECT  ANOP
*
*   THIS IS A BILINGUAL MAPPING MACRO OF OUTCOMTB. IT IS THE ONLY
*        INTERFACE BETWEEN ALL OF THE MODULES IN THE
*        'OUTPUT' CP.
*
*  CHANGE ACTIVITY
*   A 083700,087600-087700,089700                              @ZM30982
*   A 097250-097350,181100-181200,181700                       @ZM30982
*   A 184900-185100,187100-187200                              @ZM30982
*   A 187700,196440-196480                                     @ZM30982
*   C 084000,090000,181500,187500                              @ZM30982
*   D 081500                                                   @ZM30982
OUTCPPL  DS    A .                  ADDR OF COPY OF CPPL
OUTMSGID DS    CL1                  INDICATE MSG TO ISSUE
OUTFLAGS DS    BL1                  FLAGS REQUIRED IN 67
KEY1     EQU   X'80'                RUNNING IN KEY 1 SUPR STATE
OUTRTCD  DS    XL2                  RETURN CODE PASSED TO MSG RTN
OUTMACN  DS    CL8   .              NAME OF SVC100'S FAILING MACRO
OUTCMDNM DS    CL8   .              COMMAND NAME FROM ECT VIA SVC100
OUTATTN  DS    F     .              ECB, POSTED BY ATTENTION EXIT
POSTED   EQU   X'40' .              VALUE TO TEST IF ECB POSTED
OUTEXTRA DS    CL4   .              FOR FUTURE USE (RESERVED)
OUTEMPMN DS    CL8   .              TEMPNAME FOR PO DS
OUTSOBH  DS    A     .              ADDR OF SSOB HEADER
OUTSOBSO DS    A     .              ADDR OF SSSO FUNCTION SECTION
OUTRPL   DS    A     .              ADDRESS OF RPL
OUTRPLL  DS    F     .              RPL LENGTH
OUTACB   DS    A     .              ADDRESS OF ACB, TO BE PUT INTO RPL
OUTACBL  DS    F     .              ACB LENGTH
OUTEMPSB DS    A     .              SAVE PTR TO SUBCMD FROM ATTN
OUTHOLD  DS    2F    .              CURRENT RBA OF SYSOUT D.S.
*
*        THESE FIELDS ARE USED TO MAINTAIN THE SYSOUT RBA
*        CORRESPONDING TO APPROXIMATELY 10 'PUT' LINES BACK.
*        THIS IS USED FOR RESUMING TERMINAL PRINTING (C HERE)
*        AFTER AN ATTENTION THUS MAKING UP FOR LOST TCAM BUFFERS.
*        IT'S ALSO USED FOR CHKPTING THE CURRENT SYSOUT DS AFTER
*        AN ATTN/END, ATTN/NEXT, OR TERMINATING ERROR.
OUTBKNEW DS    CL8   .          RBA OF SYSOUT CORRESPONDING TO THE
*                                 LATEST 10TH RCD PUT. IT'S UPDATED
*                                 EVERY 10 'PUTS'
OUTBKAPX DS    CL8   .          RBA OF SYSOUT CORRESPONDING TO AT
*                                 LEAST 10 'PUT' LINES BACK. IT'S SET
*                                 EQUAL TO OUTBKNEW BEFORE OUTBKNEW
*                                 IS UPDATED. THIS IS THE OFFICIAL
*                                 RBA FOR CKPTING AND POINTING IN
*                                 IN CERTAIN CASES.
OUTBKCNT DS    F     .          COUNT OF LINES 'PUT' SINCE LAST
*                                 APPROXIMATION OF SYSOUT RBA
*
*     STRUCTURE CONTAINING SIMILAR DATA FOR PRINT AND SAVE DATASETS
*
STRCTNUM DS    FL4   .          STRUCTURE ELEMENT NUMBER
O73PARM  DS    CL40  .
         ORG   O73PARM+0
OUTDCB   DS    AL4   .          DCB ADDR FOR '71
PRINTDDN DS    CL8   .          DDNAME OF DATASET ALLOCATED BY '73
OUTBUFA  DS    AL4   .          ADDR OF 'PUT' BUFFER IN '71
NONAME   DS    FL4   .          PLACE HOLDER IN STRUCTURE
         ORG   NONAME+0
NONAME1  DS    CL1   .          PLACE HOLDER
NONAME2  DS    BL1   .          PLACE HOLDER
DSALLOC  EQU   X'40' .          DATASET IS ALLOCATED  FLAG
DSOPEN   EQU   X'20' .          DATASET IS OPENED
OUTRECV  EQU   X'10' .          INDICATES VARIABLE FORMAT OF OUTPUT DS
NEEDFREE EQU   X'08' .          FREEMAIN NEEDED FOR BUFFER ('71)
NEWDS    EQU   X'04' .          NEW DATASET ALLOCATED BY DAIR
NOMEMNAM EQU   X'02' .          NO MEMBER NAME PRESENT FOR PO DS
OUTRECUN EQU   X'01' .          RECFM IS UNDEFINED
OUTBUFL  DS    FL2   .          LENGTH OF 'PUT' BUFFER FOR '71
         ORG   O73PARM+20
NONAME3  DS    CL20  .          PLACE HOLDER FOR SECOND PLACE IN STRUC
*
OUTRECA  DS    A     .          ADDR OF SYSOUT RCD FOR '71 TO 'PUT'
OUTRECL  DS    H     .          LENGTH OF SYSOUT RCD TO BE 'PUT'
*
OUTKEYWD DS    XL1   .              SWITCHES FOR KEYWORDS ENTERED
PAUSE    EQU   X'80' .              PAUSE KEYWORD ENTERED
HOLD     EQU   X'40' .              HOLD KEYWORD ENTERED
HERE     EQU   X'20' .              HERE KEYWORD ENTERED
BEGIN    EQU   X'10' .              BEGIN KEYWORD ENTERED
NEXT     EQU   X'08' .              NEXT KEYWORD ENTERED
DELETE   EQU   X'04' .              DELETE KEYWORD ENTERED
PRINT    EQU   X'02' .              PRINT KEYWORD ENTERED OR DEFAULTED
NEWCLASS EQU   X'01' .              NEWCLASS KEYWORD ENTERED
OUTKEYW2 DS    XL1   .
KEEP     EQU   X'80' .              KEEP KEYWORD ENTERED
DEST     EQU   X'40' .              DEST KEYWORD ENTERED
SUBCONT  EQU   X'20' .              CONTINUE SUBCMD ENTERED
SUBHERE  EQU   X'10' .              CONTINUE HERE SUBCMD ENTERED
SUBBEGN  EQU   X'08' .              CONTINUE BEGIN SUBCMD ENTERED
SUBNEXT  EQU   X'04' .              CONTINUE NEXT SUBCMD ENTERED
*
OUTSW    DS    XL1   .              INTER-MODULE SWITCHES
SUBSYS   EQU   X'80' .              SUBSYS PROCESSING A SET OF DATASETS
SUBCMODE EQU   X'40' .              IN SUBCOMMAND MODE
UNALCALL EQU   X'20' .              IKJCT473 IS BEING CALL FOR
*                                   CLOSE/UNALLOCATION ONLY
ENDSW    EQU   X'10' .              QUIT COMMAND DUE TO  'END'
ERROR    EQU   X'08' .              QUIT CMD - CRITICAL ERROR
ENDKEEP  EQU   X'04' .              OVERIDE NOKEEP ON CMD IF END
*                                   SUBCMD IN MIDDLE OF PROCESSING
NOWORK   EQU   X'02' .              NO MORE JOBS OR CLASSES TO PROCESS
HASPABND EQU   X'01' .              ABEND OCCURED IN HASP
OUTSW2   DS    XL1   .              INTER-MODULE SWITCHES
SYNADERR EQU   X'80'                SYNAD ERROR OCCURRED
OPENED   EQU   X'40' .              SYSOUT DATASET OPENED BY '62
NONTERM  EQU   X'20' .              CLIST - NON TERMINAL INPUT
WORKDONE EQU   X'10' .              IF ANY ACTION TAKEN FOR A
*                                   JOB/CLASSLIST
ENDLIST  EQU   X'08' .              LAST CALL FOR A GIVEN JOBNAME
*                                   IF DELETE OR ROUTING SPECIFIED
OUTIDSSW DS    XL1   .              INPUT (I.E. SYSOUT) DATA SET FLAGS
POINT    EQU   X'80' .              FORCE IKJCT470 TO ISSUE POINT
EODSW    EQU   X'10' .              EOD REACHED, USED BY IKJCT463
TERM     EQU   X'08' .              TERMINAL IS ALLOCATED
ALLOC    EQU   X'04' .              SYSOUT DATASET ALLOCATED
INTRPMSG EQU   X'02' .              NEED MSG - INTERRUPTED OUTPUT
*                                   RESUMED
OUTDARB  DS    A     .              ADDR OF DYN ALLOC REQ BLOCK FOR '67
OUTDAIR  DS    A     .              ADDR OF DAIR PARM LIST FOR '67
OUTPDL   DS    A     .              ADDR OF PDL OF ORIGINAL CMD
*
OUTXMSG  DS    A     .              ADDR OF USER SUPPLIED MSG
OUTSYNMS EQU   OUTXMSG              ADDR OF SYNAD MSG - PRINT/SAVE DS
OUTXRPLY DS    A     .              ADDR OF REPLY TO USER MSG
*
OUTTCBH  DS    A     .              ADDR OF HELP TCB
OHELPECB  DS   A     .              ADDR OF HELP ECB
*
OUTSBPDL  DS   A     .              ADDR OF SUBCOMMAND PDL
OUTSBBUF  DS   A     .              ADDR OF SUBCOMMAND BUFFER
*
OUTSTAE  DS    2F    .              SAVE R13 & R14 IN ESTAE EXIT
*
OUTWORK  DS    12F   .              MISC WORK AREA
CLASBUFF DS    CL8   .              ZERO OR ONE CLASS FOR PRINT OR
*                                     ZERO TO EIGHT CLASSES FOR DELETE
*                                     OR ROUTING
OSYSODDN DS    CL8                  SYSOUT DDNAME
*
*              POINTERS TO VARIOUS PDE'S (OR THE 1ST OF A CHAIN)
OUTPLIST EQU   *
CPDE     DS    A                    FIRST 'CLASS' PDE
OUTCPDE1 EQU   CPDE
PPDE     DS    A                    ADDR OF 'PRINT' PDE
OPRDSPDE EQU   PPDE
NPDE     DS    A                    ADDR OF 'NEWCLASS' PDE
ONEWCPDE EQU   NPDE
DPDE     DS    A .                  ADDR OF THE 'DEST' PDE
ODESTPDE EQU   DPDE
OUTJBPDE DS    A                    ADDR OF 'JOB' PDE
OUTCLPDE DS    A                    ADDR OF 'CLASS' PDE
OSVDSPDE DS    A                    ADDR OF 'SAVE DATASET' PDE
EWAPTR    DS    A                   PTR TO ESTAE WORK AREA
*
*
IOPLPTR  DS    A .                  ADDR OF IOPL, NEEDED BY CSECTS
*                                   THE BELOW MAKES THE IOPL CONTIG.
IOPL     DS    0F .                 IOPL (LABELS SAME AS MACRO)
IOPLUPT  DS    A                    PTR TO UPT
IOPLECT  DS    A                    PTR TO ECT
IOPLECB  DS    A                    PTR TO ECB
IOPLIOPB DS    A                    PTR TO I/O SERVICE RTN PARM BLK
*
*        M S G I D   E Q U ' S
*
M300A   EQU  0   .  MODE MSG
M309I   EQU  106 .  OPEN FAILED - PRINT/SAVE
M310I   EQU  110 .  INVALID DSNAME EXCEEDS 44 CHAR
M312I   EQU  112 .  NOT ENOUGH VIRTUAL STORAGE
M312A   EQU  111 .  NOT ENOUGH VIRTUAL STORAGE
M313I   EQU  113 .  COMMAND SYSTEM ERROR
M318A   EQU  114 .  OUTPUT ENDED    B37 ABEND
M318B   EQU  115 .  HELP ABENDED, CODE IN ECB
M318C   EQU  116 .  OUTPUT ENDED    913 ABEND
M318D   EQU  117 .  OUTPUT ENDED  SYS ABEND CODE XXX
M320A   EQU  120 .  NO CLASS(CLASSNAME) OUTPUT FOR JOB         @ZM30982
M320I   EQU  118 .  NO CLASS(CLASSNAME) OUTPUT FOR JOB(JOBID)  @ZM30982
M321I   EQU  119 .  CMD NOT AUTHORIZED
M323I   EQU  128 .  INVALID SUB CMD
M325I   EQU  122 .  DSNAME SAVED  (SEQUENTIAL DATASET)
M325A   EQU  121 .  DSNAME SAVED  (PARTITIONED DATASET)
M330I   EQU  126 .  DSORG OF (DSNAME) UNACCEPTABLE
M332I   EQU  142 .  UNKNOWN INSTALLATION EXIT RETURN CODE
M333I   EQU  143 .  MISSING REPLY FOR MSG
M339A   EQU  109 .  NO HELD OUTPUT FOR JOB                     @ZM30982
M339I   EQU  108 .  NO HELD OUTPUT FOR JOB(JOBID)              @ZM30982
M340I   EQU  102 .  JOB NOT FOUND
M341I   EQU  145 .  CMD INVALID   CONFLICTING KEYWORDS
M342A   EQU  103 .  FIB/SVC MACRO ERROR
M342B   EQU  104 .  FIB/SVC ERROR
M343A   EQU  127 .  NO OUTPUT FOR JOB IN REQ CLASS(ES)         @ZM30982
M343I   EQU  131 .  NO OUTPUT FOR JOB(JOBID) IN REQ CLASS(ES)  @ZM30982
M344I   EQU  132 .  DS SKIPPED
M345I   EQU  133 .  SUBSYSTEM INTERFACE ERROR
M346I   EQU  134 .  SUBSYSTEM ERROR
M347I   EQU  135 .  CMD FAILED - SUB SYSTEM NOT ACTIVE
M348I   EQU  136 .  DUPLICATE JOBNAME
M349I   EQU  137 .  JOBNAME/JOBID  INVALID
M350I   EQU  129 .  UNABLE TO PROCESS JOB NOW
M351I   EQU  130 .  INVALID DEST ID
M353I   EQU  138 .  UNKNOWN SSOBRETN CODE
M355I   EQU  140 .  SYNAD MSG - PRINT/SAVE
M357I   EQU  107 .  NO MEMBER NAME FOR PO DATASET
M358I   EQU  146 .  INVALID SEARCH ARG RETURN CODE FROM SUBSYS
ATTCHERR  EQU  4  . ERROR FROM ATTACHING HELP MODULE
MDYNALC   EQU  8 .  DYN ALC FAIL MSG NEEDED
MPARSERR  EQU 12  . PARSE ERROR MSG
MDAIRF    EQU 16 .  DAIR FAIL MSG NEEDED
CMDSCAN   EQU 20  . COMMAND SCAN FAILURE
MPTGTERR  EQU 24 .  PUTGET FAILURE
POINTERR  EQU 28  . ERROR RETURN CODE RECEIVED FROM 'POINT'
GETERR    EQU 32  . ERROR RETURN CODE RECEIVED FROM 'GET'
HELPFAIL  EQU 36 .  HELP MODULE FAILED
ESTAERR   EQU 40  . NONZERO RETURN CODE FROM SVC60
STAXERR   EQU 44  . ERROR FROM STAX MACRO
STATERR   EQU 48  . ERROR RETURN CODE FROM STATUS MACRO
OPENERR   EQU 52  . OPEN FAILURE
JESM320   EQU 56  . MSG320 NEEDED                              @ZM30982
JESM339   EQU 60  . MSG339 NEEDED                              @ZM30982
JESM343   EQU 64  . MSG443 NEEDED                              @ZM30982
MSECXP    EQU 123 . PUTGET FOR SEC EXIT  (GET REPLY)
MSECXM    EQU 124 . PUTLINE FOR SEC EXIT ( WITH NO REPLY)
*
*
OUTTOTLN EQU   *-OUTCOMTB .         TOTAL LENGTH FOR GETMAIN
         MEND , */
*%OUTGOTO: ;
* /*******************************************************************/
* /*THIS IS AN INTERNAL MACRO FOR THE TSO OUTPUT COMMAND PROCESSOR.  */
* /*IT IS THE ONLY INTERFACE FROM ONE MODULE (CSECT) TO ANOTHER      */
* /* USAGE                                                           */
* /*     %NOBASE='1' --------  FOR AN UNBASED EXPANSION              */
* /*******************************************************************/
*  DCL 1   OUTCOMTB
*  %IF NOBASE = '1'  %THEN
*  %GOTO SKIPBASE;
*             BASED(OCMTBPTR)
*  %SKIPBASE: ;
*            ,                     /* OUTPUT'S COMMUNICATIONS TABLE  */
*        2  OUTCPPL  PTR(31),      /* ADDR OF COPY OF CPPL           */
*        2  OUTMSGID CHAR(1),      /* ID OF MESSAGE FOR '67 TO WRITE */
*        2  OUTFLAGS CHAR(1),      /* FLAGS REQUIRED IN 67           */
*         3   KEY1     BIT(1),     /* RUNNING IN KEY 1 SUPR STATE    */
*        2  OUTRTCD  FIXED(15),    /* RETN CODE PASSED TO MSG WRITER */
*        2  OUTMACN  CHAR(8),      /* NAME OF SVC100'S FAILING MACRO */
*        2  OUTCMDNM CHAR(8),      /*COMMAND NAME FROM ECT VIA SVC100*/
*        2  OUTATTN  PTR(31),      /* ECB, POSTED BY ATTENTION EXIT  */
*         3  *        BIT(1),      /* RESERVED                       */
*         3  POSTED   BIT(1),      /* 1 - POSTED BY EXIT             */
*        2  OUTEXTRA CHAR(4),      /* FOR FUTURE USE (RESERVED)      */
*        2  OUTEMPMN CHAR(8),      /* TEMPNAME FOR PO DS             */
*        2  OUTSOBH  PTR(31),      /* ADDR OF SSOB HEADER            */
*        2  OUTSOBSO PTR(31),      /* ADDR OF SSSO CTL BLOCK         */
*        2  OUTRPL   PTR(31),      /* ADDR OF RPL                    */
*        2  OUTRPLL  FIXED(31),    /* RPL LENGTH                     */
*        2  OUTACB   PTR(31),      /* ADDR OF ACB,  TO BE PUT IN RPL */
*        2  OUTACBL  FIXED(31),    /* ACB LENGTH                     */
*        2  OUTEMPSB  PTR(31),     /* SAVE PTR TO SUBCMD FROM ATTN   */
*        2  OUTHOLD  CHAR(8),      /* CURRENT RBA OF SYSOUT D.S.     */
*     /***************************************************************/
*     /* THESE FIELDS ARE USED TO MAINTAIN THE SYSOUT RBA            */
*     /* CORRESPONDING TO APPROXIMATELY 10 'PUT' LINES BACK.         */
*     /* THIS IS USED FOR RESUMING TERMINAL PRINTING (C HERE)        */
*     /* AFTER AN ATTENTION THUS MAKING UP FOR LOST TCAM BUFFERS.    */
*     /* IT'S ALSO USED FOR CHKPTING THE CURRENT SYSOUT DS AFTER     */
*     /* AN ATTN/END, ATTN/NEXT, OR TERMINATING ERROR.               */
*     /***************************************************************/
*        2  OUTBKNEW CHAR(8),      /* RBA OF SYSOUT CORRESPONDING TO
*                                     THE LATEST 10TH RCD PUT. IT'S
*                                     UPDATED EVERY 10 'PUTS'        */
*        2  OUTBKAPX CHAR(8),      /* RBA OF SYSOUT CORRESPONDING TO
*                                     AT LEAST 10 'PUT' LINES BACK.
*                                     IT'S SET EQUAL TO OUTBKNEW BEFORE
*                                     OUTBKNEW IS UPDATED. THIS IS THE
*                                     OFFICIAL RBA FOR CKPTING AND
*                                     POINTING IN CERTAIN CASES.     */
*        2  OUTBKCNT FIXED(31),    /* COUNT OF LINES 'PUT' SINCE LAST
*                                     APPROXIMATION OF SYSOUT RBA    */
*        2  STRCTNUM FIXED(31),    /* COUNTER FOR ELEMENT IN STRUCT  */
*        2  O73PARM  (2),          /*PARAMETERS FOR PRINT/SAVE IN '71*/
*         3   OUTDCB   PTR(31),   /* ADDR OF PRINT OR SAVE DCB       */
*         3   PRINTDDN CHAR(8),   /* DDNAME OF DATASET ALLOC BY '73  */
*         3   OUTBUFA  PTR(31),   /* ADDR OF BUFFER FOR '71'S 'PUT'  */
*         3   *        FIXED(31),
*          4   *        CHAR(1),  /* RESERVED                        */
*          4   *        BIT(1),   /* RESERVED                        */
*          4   DSALLOC  BIT(1),   /* 1 - DATASET ALLOCATED           */
*          4   DSOPEN   BIT(1),   /* 1 - DATASET OPENED              */
*          4   OUTRECV  BIT(1),   /* 1 - RECFMT IS VARIABLE FOR 'PUT'*/
*          4   NEEDFREE BIT(1),   /* FREEMAIN NEEDED FOR 'PUT' BUF   */
*          4   NEWDS    BIT(1),   /* NEW DATASET ALLOCATED BY DAIR   */
*          4   NOMEMNAM BIT(1),   /* NO MEMBER NAME FOR PO DS        */
*          4   OUTRECUN BIT(1),   /* 1 - RECFMT IS UNDEFINED         */
*          4   OUTBUFL FIXED(15), /* LENGTH OF 'PUT' BUFFER          */
*
*        2  OUTRECA  PTR(31),     /* ADDR SYSOUT RCD FOR '71 TO PUT  */
*        2  OUTRECL  FIXED(15),    /* LTH SYSOUT RCD FOR '71 TO PUT  */
*
*        2  OUTKEYWD CHAR(2),      /* FLAGS FOR KEYWORDS ENTERED     */
*         3   PAUSE    BIT(1),     /* 1 - 'PAUSE' WAS ENTERED        */
*         3   HOLD     BIT(1),     /* 1 - 'HOLD' WAS ENTERED         */
*         3   HERE     BIT(1),     /* 1 - 'HERE' WAS ENTERED         */
*         3   BEGIN    BIT(1),     /* 1 - 'BEGIN' WAS ENTERED        */
*         3   NEXT     BIT(1),     /* 1 - 'NEXT' WAS ENTERED         */
*         3   DELETE   BIT(1),     /* 1 - 'DELETE' WAS ENTERED       */
*         3   PRINT    BIT(1),     /* 1 - 'PRINT' WAS ENTERED        */
*         3   NEWCLASS BIT(1),     /* 1 - 'NEWCLASS' WAS ENTERED     */
*         3   KEEP     BIT(1),     /* 1 - 'KEEP' WAS ENTERED         */
*         3   DEST     BIT(1),     /* 1 - 'DEST' WAS ENTERED         */
*         3   SUBCONT  BIT(1),     /* 1 - 'CONTINUE' WAS ENTERED     */
*         3   SUBHERE  BIT(1),     /* 1 - 'HERE' WAS ENTERED         */
*         3   SUBBEGN  BIT(1),     /* 1 - 'BEGIN WAS ENTERED         */
*         3   SUBNEXT  BIT(1),     /* 1 - 'NEXT' WAS ENTERED         */
*        2  OUTSW    BIT(16),      /* INTER-MODULE SWITCHES          */
*         3   SUBSYS   BIT(1),     /* SUBSYSTEM  OPEN FOR PROCESSING */
*         3   SUBCMODE BIT(1),     /* 1 - IN SUBCOMMAND MODE         */
*         3   UNALCALL BIT(1),     /* 1 - IKJCT473 IS BEING CALLED FOR
*                                         CLOSE/UNALLOCATION ONLY    */
*         3   ENDSW    BIT(1),     /* 1 - QUIT COMMAND DUE TO 'END'  */
*         3   ERROR    BIT(1),     /* 1 - QUIT CMD DUE TO CRITICAL
*                                          ERROR                     */
*         3   ENDKEEP  BIT(1),     /* SET TO OVERRIDE NOKEEP ON CMD IF
*                                  END SUBCMD IN MIDDLE OF PROCESSING*/
*         3   NOWORK   BIT(1),     /* NO MORE JOBS OR CLASSES TO
*                                     PROCESS                        */
*         3   HASPABND BIT(1),     /* ABEND IN HASP                  */
*         3   SYNADERR BIT(1),     /* SYNAD ERROR OCCURRED           */
*         3   OPENED   BIT(1),     /* SYSOUT DATASET OPENED          */
*         3   NONTERM  BIT(1),     /* 1 -  CLIST ISSUING CMDS        */
*         3   WORKDONE BIT(1),     /* 1 - IF ANY ACTION TAKEN FOR A
*                                     JOB / CLASSLIST                */
*         3   ENDLIST  BIT(1),     /* LAST CALL FOR A GIVEN JOBNAME
*                                     IF DELETING OR ROUTING         */
*        2  OUTIDSSW BIT(8),       /* INPUT (SYSPOOL) DATA SET FLAGS */
*         3   POINT    BIT(1),     /* 1 - DO A POINT BEFORE NEXT GET */
*         3   *        BIT(1),     /* RESERVED                       */
*         3   *        BIT(1),     /* RESERVED                       */
*         3   EODSW    BIT(1),     /* EOD REACHED                    */
*         3   TERM     BIT(1),     /* 1 - PRINT(*) WAS ENTERED       */
*         3   ALLOC    BIT(1),     /* INDICATE SYSOUT HAS BEEN ALLOC */
*         3   INTRPMSG BIT(1),     /* NEED MSG - INTERRUPTED OUTPUT
*                                     RESUMED                        */
*         3   *        BIT(1),     /* RESERVED                       */
*
*        2  OUTDARB  PTR(31),      /*ADDR OF DYNALLOC REQ BLK FOR '67*/
*        2  OUTDAIR  PTR(31),      /* PTR TO DAIR PARM LIST FOR '67  */
*        2  OUTPDL   PTR(31),      /* ADDR OF COMMAND PDL            */
*
*        2  OUTXMSG  PTR(31),      /* ADDR OF USER SUPPLIED MSG      */
*           3  OUTSYNMS PTR(31),   /* ADDR SYNAD MSG                 */
*        2  OUTXRPLY PTR(31),      /* ADDR OF REPLY TO USER MSG      */
*
*        2  OUTTCBH  PTR(31),      /* ADDR OF THE 'HELP' TCB         */
*        2  OHELPECB PTR(31),      /* ADDR OF HELP ECB               */
*
*        2  OUTSBPDL PTR(31),      /* ADDR OF SUBCOMMAND PDL         */
*        2  OUTSBBUF PTR(31),      /* ADDR OF SUBCOMMAND BUFFER      */
*
*        2  OUTSTAE  (2)PTR(31),   /* SAVE R13, R14 IN ESTAE EXIT    */
*        2  OUTWORK  (12)FIXED(31),/* MISC WORK AREA                 */
*        2  CLASBUFF CHAR(8),      /* 0 OR 1 CLASS FOR PRINT OR
*                                     0 - 8 CLASSES FOR DELETE OR
                                      ROUTING                        */
*        2  OSYSODDN CHAR(8),      /* SYSOUT DDNAME                  */
*
*        2  OUTPLIST,              /* PTRS FOR THE SECURITY EXIT     */
*          3  OUTCPDE1 PTR(31),    /* FIRST CLASS PDE ON CHAIN       */
*          3  OPRDSPDE PTR(31),    /* ADDR OF THE 'PRINT' PDE        */
*          3  ONEWCPDE PTR(31),    /* ADDR OF THE 'NEWCLASS' PDE     */
*          3  ODESTPDE PTR(31),    /* ADDR OF THE 'DEST' PDE         */
*        2  OUTJBPDE PTR(31),      /* ADDR OF THE 'JOBNAME' PDE      */
*        2  OUTCLPDE PTR(31),      /* ADDR OF 1ST 'CLASS' PDE        */
*        2  OSVDSPDE PTR(31),      /* ADDR 'SAVE DATASET' PDE        */
*        2  EWAPTR    PTR(31),     /* PTR TO ESTAE WORK AREA         */
*
*        2  IOPLPTR  PTR(31),      /* ADDR OF IOPL                   */
*        2  IOPLAREA CHAR(16);     /* IOPL CONTIG. TO OUTCOMTB       */
*%GOTO SKIPMSG;
*        /* M E S S A G E   I D   V A L U E S                        */
*%SKIPMSG: ;
*        %M300A = '0';            /* MODE MSG                       */
*        %M309I = '106';          /* OPEN FAILED - PRINT/SAVE       */
*        %M310I = '110';          /* INVALID DSNAME EXCEEDS 44 CHAR */
*        %M312I = '112';          /* NOT ENOUGH VIRTUAL STORAGE     */
*        %M312A = '111';          /* NOT ENOUGH VIRTUAL STORAGE     */
*        %M313I = '113';          /* COMMAND SYSTEM ERROR           */
*        %M318A = '114';          /* OUTPUT ENDED - B37 ABEND       */
*        %M318B = '115';          /* HELP ABENDED, CODE IN ECB      */
*        %M318C = '116';          /* OUTPUT ENDED - 913 ABEND       */
*        %M318D = '117';          /* OUTPUT ENDED- SYSABEND CODE XX */
*        %M320A = '120';          /* NO CLASS(CLNAM) OUTPUT FOR
*                                    JOB                     @ZM30982*/
*        %M320I = '118';          /* NO CLASS (CLNAM) OUTPUT FOR
*                                    JOB(JOBID)              @ZM30982*/
*        %M321I = '119';          /* CMD NOT AUTHORIZED             */
*        %M323I = '128';          /* INVALID SUBCOMMAND             */
*        %M325I = '122';          /* DSNAME SAVED (SEQUENTIAL)      */
*        %M325A = '121';          /* DSNAME SAVED (PARTITIONED)     */
*        %M330I = '126';          /* DSORG OF DSNAME UNACCEPTABLE   */
*        %M332I = '142';          /* UNKNOWN INSTALLATION EXIT RC   */
*        %M333I = '143';          /* MISSING REPLY FOR MSG          */
*        %M339A = '109';          /* NO HELD OUTPUT FOR JOB  @ZM30982*/
*        %M339I = '108';          /* NO HELD OUTPUT FOR
*                                    JOB(JOBID)              @ZM30982*/
*        %M340I = '102';          /* JOB NOT FOUND                  */
*        %M341I = '145';          /* CMD INVALID CONFLICTING KEYWDS */
*        %M342A = '103';          /* FIB/SVC MACRO ERROR            */
*        %M342B = '104';          /* FIB/SVC ERROR                  */
*        %M343A = '127';          /* NO OUTPUT FOR JOB IN
*                                    REQ CLASS(ES)           @ZM30982*/
*        %M343I = '131';          /* NO OUTPUT FOR JOB(JOBID) IN
*                                    REQUESTED CLASS(ES)     @ZM30982*/
*        %M344I = '132';          /* DS SKIPPED                     */
*        %M345I = '133';          /* SUBSYS INTERFACE ERROR         */
*        %M346I = '134';          /* SUBSYS ERROR                   */
*        %M347I = '135';          /* CMD FAILED SUBSYS NOT ACTIVE   */
*        %M348I = '136';          /* DUPLICATE JOBNAMES             */
*        %M349I = '137';          /* JOBNAME/JOBID INVALID          */
*        %M350I = '129';          /* UNABLE TO PROCESS JOB NOW      */
*        %M351I = '130';          /* INVALID DEST ID                */
*        %M353I = '138';          /* UNKNOWN SSOBRETN CODE          */
*        %M355I = '140';          /* SYNAD MSG ID - PRINT/SAVE DS   */
*        %M357I = '107';          /* NO MEMBER NAME FOR PO DATASET  */
*        %M358I = '146';          /* INV SEARCH ARG RC FROM SUBSYS  */
*        %ATTCHERR = '4';         /* ERROR WHILE ATTACHING 'HELP'   */
*        %MDYNALC  = '8';         /* DYNALC FAIL MSG NEEDED         */
*        %MPARSERR = '12';        /* PARSE ERROR                    */
*        %MDAIRF   = '16';        /* DAIR FAIL MSG NEEDED           */
*        %CMDSCAN  = '20';        /* COMMAND SCAN FAILURE           */
*        %MPTGTERR = '24';        /* PUTGET FAILURE                 */
*        %POINTERR = '28';        /* ERROR RETURN CODE FROM 'POINT' */
*        %GETERR   = '32';        /* ERROR RC FROM 'GET'            */
*        %HELPFAIL = '36';        /* HELP MOD FAILED                */
*        %ESTAERR  = '40';        /* NONZERO RC FROM SVC 60         */
*        %STAXERR  = '44';        /* ERROR FROM STAX MACRO          */
*        %STATERR  = '48';        /* ERROR FROM STATUS MACRO        */
*        %OPENERR  = '52';        /* OPEN FAILURE                   */
*        %JESM320  = '56';        /* MSG 320 NEEDED          @ZM30982*/
*        %JESM339  = '60';        /* MSG 339 NEEDED          @ZM30982*/
*        %JESM343  = '64';        /* MSG 443 NEEDED          @ZM30982*/
*        %MSECXP   = '123';       /* PUTGET SEC EXIT (GET REPLY)    */
*        %MSECXM   = '124';       /* PUTLINE SEC EXIT(W/NO REPLY)   */
./ ADD NAME=IKJPARMA
         MACRO
         IKJPARMA
IKJPARMA DSECT                DESCRIPTION OF ADDRESS PDE.
         SPACE
PDELDNAM DS    A              POINTER TO LOAD NAME.
PDELEN1  DS    H              LENGTH OF LOAD NAME.
PDEFLG1  DS    X              FLAGS FOR LOAD NAME.
LDNAMFLG EQU   B'10000000'    INDICATES PRESENCE OF LOAD NAME.
PDERSV1  DS    X              RESERVED.
PDECTNAM DS    A              POINTER TO ENTRY NAME.
PDELEN2  DS    H              LENGTH OF ENTRY NAME.
PDEFLG2  DS    X              FLAGS FOR ENTRY NAME.
CTNAMFLG EQU   B'10000000'    INDICATES PRESENCE OF ENTRY NAME.
PDERSV2  DS    X              RESERVED.
PDEADRPT DS    A              POINTER TO ADDRESS STRING.
PDELEN3  DS    H              LENGTH OF ADDRESS STRING.
PDEFLG3  DS    X              FLAGS FOR ADDRESS STRING.
AFLG     EQU   B'10000000'    INDICATES PRESENCE OF ADDRESS STRING.
PDERSV3  DS    X              RESERVED.
         SPACE
PDEFLG4  DS    X              ADDRESS TYPE FLAGS.
ABSADDR  EQU   B'00000000'    ABSOLUTE ADDRESS.
SYMADDR  EQU   B'10000000'    SYMBOLIC ADDRESS.
RELADDR  EQU   B'01000000'    RELATIVE ADDRESS.
GENR     EQU   B'00100000'    GENERAL REGISTER.
LFPR     EQU   B'00010000'    DOUBLE PREC. FLT. PT. REGISTER.
SFPR     EQU   B'00001000'    SINGLE PREC. FLT. PT. REGISTER.
CTONLY   EQU   B'00000100'    ENTRY NM NOT FOLLOWED BY SYM OR REL.
ABSCOMPL EQU   B'11111111'    COMPLEMENT FOR ABSOLUTE TEST.
         SPACE
PDESIGN  DS    C              EXPRESSION SIGN.
PDEINDCT DS    H              INDIRECT COUNT.
PDEEXPTR DS    A              PTR TO 1ST EXPRESSION PDE.
PDEFLG5  DS    0X             FLAG BYTE, PDE USER WORD.
PURESYM  EQU   B'10000000'    INDICATES PDE USER WORD POINTS TO SIB.
PDEUSER  DS    A              RESOLVED ADDR OR SIB POINTER.
PDESIB   EQU   X'80'          INDICATES USER WORD POINTS TO SIB.
PDECONVD EQU   X'40'          INDICATES ADDRESS IS CONVERTED.
PDEADLST EQU   X'20'          INDICATES PDE IS ONE OF A LIST.
PDEYECH  EQU   X'10'          INDICATES PDE IS USELESS.
PDEWRITE EQU   X'08'          INDICATES ADDRESS IS WRITABLE.
         SPACE
PDECHAIN DS    A              CHAIN PTR FIELD FOR ADDRESS LIST.
         SPACE
         ORG   PDECHAIN       IN ADDR RANGE, ADDR2 FOLLOWS ADDR1.
PDE2LDNA DS    A              POINTER TO LOAD NAME.
PDE2LEN1 DS    H              LENGTH OF LOAD NAME.
PDE2FLG1 DS    X              FLAGS FOR LOAD NAME.
PDE2RSV1 DS    X              RESERVED.
PDE2CTNA DS    A              POINTER TO ENTRY NAME.
PDE2LEN2 DS    H              LENGTH OF ENTRY NAME.
PDE2FLG2 DS    X              FLAGS FOR ENTRY NAME.
PDE2RSV2 DS    X              RESERVED.
PDE2ADRP DS    A              POINTER TO ADDRESS STRING.
PDE2LEN3 DS    H              LENGTH OF ADDRESS STRING.
PDE2FLG3 DS    X              FLAGS FOR ADDRESS STRING.
PDE2RSV3 DS    X              RESERVED.
         SPACE
PDE2FLG4 DS    X              ADDRESS TYPE FLAGS.
PDE2SIGN DS    C              EXPRESSION SIGN.
PDE2INDC DS    H              INDIRECT COUNT.
PDE2EXPT DS    A              PTR TO 1ST EXPRESSION PDE.
PDE2FLG5 DS    0X             FLAG BYTE, PDE USER WORD.
PDE2USER DS    A              RESOLVED ADDR OR SIB POINTER.
         SPACE
PDE2CHAI DS    A              CHAIN POINTER FOR ADDR LIST.
         MEND
./ ADD NAME=IKJWHEN
 %IKJWHENM:  ;                         /* WHEN WORK AREA MACRO       */
 /********************************************************************/
 /* THE WHEN WORK AREA IS USED ONLY BY THE WHEN COMMAND. IT CONTAINS */
 /* A REGISTER SAVE AREA AND OTHER MISCELLANEOUS INFORMATION USED BY */
 /* A WHEN PROCESSORS AND MESSAGE MODULE                             */
 /********************************************************************/
 %IF WHENBASE='' %THEN
    %WHENBASE='BASED(WAPTR)';
         DCL  1 IKJWHEN  WHENBASE,
                2 WHPL       CHAR(28), /* GENERAL PARM LIST          */
                2 WHPBLOCK   CHAR(20), /* GENERAL PARM BLOCK         */
                2 WHPARANS   PTR(31),  /* PTR TO PARSE DESCRIP LIST  */
                2 WHATTECB   CHAR(4),  /* SERV RTN ATTN RTN ECB      */
                2 WHMSG      PTR(16),  /* MESSAGE OFFSETS            */
                  3 WHMSG1    PTR(8),  /* OFFSET FOR MESSAGE MODULE  */
                  3 WHMSG2    PTR(8),  /* SECONDARY MESSAGE INDEX    */
                2 WHSWI       BIT(8),  /* STATUS BYTE                */
                  3 WHEND     BIT(1),  /* END COMMAND IN CONTROL     */
                  3 WHRET     BIT(1),  /* SET TMP RET CODE TO ERROR  */
                  3 WHBYPASS BIT(1),   /* ON IF NO ERROR MSG SHOULD BE
                                          ISSUED AT WHEN EXIT TO TMP
                                                               YM4908*/
                2 WHCHAR     CHAR(1),  /* FIRST CHARACTER OF NEXT    */
                                       /* COMMAND IN CASE DELIMETER  */
                                       /* WAS OMMITTED               */
                2 WHENWAS    PTR(31),  /* NOT USED                   */
                2 WHRCODE    PTR(31),  /* SERV RTN RETURN CODE       */
                2 WHCOMM     PTR(31),  /* POINTER TO COMMAND TO BE   */
                                       /* ADDED TO INPUT STACK       */
                2 WHCMD      CHAR(8),  /*NAME OF COMMAND FOR         */
                                       /* MESSAGE MODULE             */
                2 WHGETM     PTR(31),  /* GETMAIN SIZE AND SUBPOOL   */
                  3 WHSUBP    PTR(8),  /* SUBPOOL                    */
                  3 WHFILL    PTR(8),  /* FILLER                     */
                  3 WHLEN     PTR(15), /* LENGTH                     */
                2 WHWASIZ    PTR(31);  /* WORK AREA SP AND SIZE      */
./ ADD NAME=IKJZBBMB
* DECLARE
*   1  BBMB BASED(BBMBPTR),
*  /*  THE BACKGROUND PARAMETER BLOCK (BBMB) IS BUILT BY THE         */
*  /*  BACKGROUND MONITOR PROGRAM.  IT CONTAINS ADDRESSES OF         */
*  /*  BACKGROUND I/O INFORMATION.                                   */
*      2  BBMBKGET PTR(31),          /* ADDR OF BKGRD INPUT INFO     */
*      2  BBMBKPUT PTR(31),          /* ADDR OF BKGRD OUTPUT INFO    */
*      2  BBMBSTAT PTR(31),          /* ADDR OF BKGRD I/O STAT CODES */
*      2  BBMBPARM PTR(31);          /* RESERVED FOR FUTURE USE      */
./ ADD NAME=IKJZT301
         MACRO
         IKJZT301  &DSECT=YES
*        IKJZT301       RELEASE=OS/VS2.2  LEVEL=01
***********************************************************************
***********************************************************************
*                                                                     *
*                         SYS1.BRODCAST DATA SET                      *
*                                RECORD 1                             *
*                                                                     *
*        THE FIRST RECORD OF THE SYS1.BRODCAST DATA SET (R1BC) HAS    *
*        POINTERS TO THE NOTICES AND MAIL SECTIONS, AND OTHER INFO    *
*        CONCERNING THE DATA SET.                                     *
*                                           10/1/72    LEVEL=1        *
***********************************************************************
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').NODSECT
R1BC     DSECT , -            RECORD 1 OF SYS1.BRODCAST DATA SET
         AGO   .SKIP
.NODSECT ANOP
R1BC     DS    0F -           RECORD 1 OF SYS1.BRODCAST DATA SET
.SKIP    ANOP
R1BCPTRP DS    0A -           SAME AS R1BCPTR BELOW
R1BCFLGS DS    B -            NOTICES FLAGS - NOT USED
R1BCPTR  DS    AL3 -          RELATIVE BLOCK ADDRESS (RBA) OF FIRST
*                               NOTICES DIRECTORY RECORD
R1USPTRP DS    0A -           SAME AS R1USPTR BELOW
R1USFLGS DS    B -            USER MAIL FLAGS - NOT USED
R1USPTR  DS    AL3 -          RBA OF FIRST USER MAIL DIRECTORY RECORD
R1RECNUM DS    F -            TOTAL NO. OF RECORDS IN SYS1.BRODCAST DS
R1BCMAX  DS    H -            MAXIMUM BRODCAST MSG NO. -
*                               FROM MASTER SCHEDULER BASEA, BABCMAX
*                                                                     *
R1DSN    DS    CL24 -         DATA SET NAME IN EBCDIC =
*                               ' SYS1.BRODCAST DATA SET '
R1LEVEL  DS    CL7 -          LEVEL NO. = 'LEVEL N', WHERE 'N' IS
*                               A 1-DIGIT NUMBER
         DS    CL84 -         RESERVED
         MEND  , */
./ ADD NAME=IKJZT302
         MACRO
         IKJZT302  &DSECT=YES
*        IKJZT302      RELEASE=OS/VS2.2   LEVEL=01
***********************************************************************
***********************************************************************
*                                                                     *
*                         SYS1.BRODCAST DATA SET                      *
*                        NOTICES DIRECTORY RECORD                     *
*                                                                     *
*        THE BROADCAST NOTICES DIRECTORY RECORD (BCDIR) HAS BROADCAST *
*        MESSAGE NUMBERS AND A POINTER TO THE MESSAGE RECORD          *
*        ASSOCIATED WITH EACH MSG. NUMBER.                            *
*                                                                     *
*        NOTE: THIS MACRO USES EQUATES GENERATED BY 'IEZBITS' MACRO.  *
*              THEREFORE, THE IEZBITS MACRO MUST BE CODED             *
*              PREVIOUS TO CALLING THIS MACRO.                        *
*                                           10/1/72    LEVEL=1        *
***********************************************************************
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').NODSECT
BCDIR    DSECT , -
         AGO   .SKIP
.NODSECT ANOP
BCDIR    DS    0F
.SKIP    ANOP
BCDNENT  EQU   25             NUMBER OF ENTRIES
BCDENTRY DS    0CL5 -         ENTRY FOR 1 BROADCAST MSG NO.
BCDMFLG  DS    0BL1 -         BROADCAST DIRECTORY MSG. FLAG:
BCDNOMSG EQU   BIT0
*                               '1' = NO NOTICES MSG ASSIGNED
*                                     TO THIS MSG NUMBER
*                               '0' = NOTICES MSG FOR THIS NUMBER
*                                     IS ASSIGNED
BCDMSGNO DS    FL2 -          BROADCAST NOTICES MSG NO. IN HEX
BCDMRBA  DS    AL3 -          RELATIVE BLOCK ADDR OF NOTICE MSG RCD
         DS    24CL5 -        RESERVE SPACE FOR 24 MORE ENTRIES
*                               IDENTICAL IN FORMAT TO 'BCDENTRY'
BCDREND  DS    CL1 -          END-OF-RECORD INDICATOR = X'7F'
BCDNEXT  DS    AL3 -          CHAIN PTR TO NEXT NOTICE DIRECTORY RCD
*                               (ZERO IF LAST)
         MEND  , */
./ ADD NAME=IKJZT303
         MACRO
         IKJZT303   &DSECT=YES
*        IKJZT303      RELEASE=OS/VS2.2  LEVEL=01
***********************************************************************
***********************************************************************
*                                                                     *
*                         SYS1.BRODCAST DATA SET                      *
*                         NOTICES MESSAGE RECORD                      *
*                                                                     *
*          THE BRODCAST NOTICES MESSAGE RECORD (BCMSG) IS A           *
*          RECORD IN THE SYS1.BRODCAST DATA SET WHICH CONTAINS A      *
*          NOTICES MESSAGE INTENDED FOR ALL USERS.                    *
*                                           10/1/72     LEVEL=1       *
***********************************************************************
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').NODSECT
BCMSG    DSECT , -            BRODCAST NOTICES MESSAGE RECORD
         AGO   .SKIP
.NODSECT ANOP
BCMSG    DS    0F -           BRODCAST NOTICES MESSAGE RECORD
.SKIP    ANOP
BCMLNG   DS    FL1 -          LENGTH OF BRODCAST NOTICES MSG TEXT
BCMTEXT  DS    CL125 -        MESSAGE TEXT (PADDED WITH BLANKS)
         DS    XL3 -          RESERVED
         MEND  , */
./ ADD NAME=IKJZT304
         MACRO
         IKJZT304  &DSECT=YES
*        IKJZT304       RELEASE=OS/VS2.2  LEVEL=01
***********************************************************************
***********************************************************************
*                                                                     *
*                         SYS1.BRODCAST DATA SET                      *
*                       USER MAIL DIRECTORY RECORD                    *
*                                                                     *
*        THE USER MAIL DIRECTORY RECORD (USDIR) IS A LOGICAL          *
*        DIRECTORY RECORD IN THE SYS1.BRODCAST DATA SET.              *
*        THE DIRECTORY CONTAINS USERIDS AND PTRS TO THE FIRST AND     *
*        LAST MESSAGE FOR EACH USERID.                                *
*                                           10/1/72    LEVEL=1        *
***********************************************************************
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').NODSECT
USDIR    DSECT , -            USER MAIL DIRECTORY RECORD
         AGO   .SKIP
.NODSECT ANOP
USDIR    DS    0F -           USER MAIL DIRECTORY RECORD
.SKIP    ANOP
USDENTRY DS    0CL13 -        DIRECTORY ENTRY FOR 1 USERID
USDID    DS    CL7 -          USERID (LEFT JUSTIFIED, PADDED W/ BLANKS)
USDRBA   DS    AL3 -          RELATIVE BLOCK ADDRESS (RBA) OF FIRST
*                               MESSAGE FOR THIS USERID (ZERO IF NONE)
USDEND   DS    AL3 -          RBA OF LAST MESSAGE FOR THIS USERID
*                               (ZERO IF NONE)
         DS    8CL13 -        RESERVE SPACE FOR 8 MORE DIRECTORY
*                               ENTRIES IDENTICAL IN FORMAT TO THE
*                               PRECEDING 'USDENTRY'
         DS    XL8 -          RESERVED
USDREND  DS    CL1 -          END-OF-RECORD INDICATOR = X'7F'
USDNEXT  DS    AL3 -          CHAIN PTR TO NEXT USER MAIL DIRECTORY
*                               RECORD (ZERO IF LAST)
         MEND  , */
./ ADD NAME=IKJZT305
         MACRO
         IKJZT305     &DSECT=YES
*        IKJZT305       RELEASE=OS/VS2.2  LEVEL=01
***********************************************************************
***********************************************************************
*                                                                     *
*                         SYS1.BRODCAST DATA SET                      *
*                        USER MAIL MESSAGE RECORD                     *
*                                                                     *
*        THE USER MAIL MESSAGE RECORD (USMSG) IS A RECORD IN          *
*        THE SYS1.BRODCAST DATA SET WHICH CONTAINS A MAIL MESSAGE     *
*        INTENDED FOR A PARTICULAR USERID.                            *
*                                           10/1/72    LEVEL=1        *
***********************************************************************
***********************************************************************
         AIF   ('&DSECT' EQ 'NO').NODSECT
USMSG    DSECT , -            USER MAIL MESSAGE RECORD
         AGO   .SKIP
.NODSECT ANOP
USMSG    DS    0F -           USER MAIL MESSAGE RECORD
.SKIP    ANOP
USMLNG   DS    FL1 -          LENGTH OF MAIL MSG TEXT
USMTEXT  DS    CL125 -        MESSAGE TEXT (PADDED WITH BLANKS)
USMNEXT  DS    AL3 -          CHAIN PTR TO NEXT MAIL MESSAGE RECORD
*                               FOR THIS USERID (ZERO IF LAST)
         MEND  , */
./ ADD NAME=ILRASMHD
* /* MACMEAN ASMH MEANS AUXILIARY STORAGE MANAGEMENT HEADER          */
* /* MACCOMP Y-4SC1CW/PZD81                                          */
* /* MACSTAT Y-475078/415304                                         */
*/*A-000000-999999                                           @Z40WPWK*/
*/********************************************************************/
*/*                                                                  */
*/*  NAME: ILRASMHD                                                  */
*/*                                                                  */
*/*  FUNCTION:  AUXILIARY STORAGE MANAGEMENT HEADER                  */
*/*                                                                  */
*/*  STATUS:  OS/VS2 RELEASE 4.1, LEVEL 0                            */
*/*                                                                  */
*/*  EXTERNAL REFERENCES:  ASMHDPTR - USER DEFINED POINTER TO ASMHD  */
*/*                                                                  */
*/*  REGISTERS USED:  N/A                                            */
*/*                                                                  */
*/*  REGISTERS CLOBBERED: N/A                                        */
*/*                                                                  */
*/*  NOTES:  THE ASMHD IS USED BY I/O CONTROL TO MANAGE PAGING I/O   */
*/*          AND SWAP OPERATIONS FOR EACH PRIVATE ADDRESS SPACE.  VIO*/
*/*          CONTROL ALSO USES THE ASMHD TO CONTROL ALL OPERATIONS   */
*/*          FOR VIO DATA SETS OWNED BY A PRIVATE ADDRESS SPACE.  AN */
*/*          ASMHD EXISTS FOR EACH ACTIVE ADDRESS SPACE.  IT IS BUILT*/
*/*          IN SQA AND REFERENCED VIA A POINTER IN THE ASCB.  THE   */
*/*          FIELD NAMES ARE PREFIXED WITH ASH BECAUSE THE ASM PREFIX*/
*/*          IS ALREADY USED FOR THE ASMVT.                          */
*/*                                                                  */
*/*  METHOD OF ACCESS:                                               */
*/*          PL/S - DECLARE ASMHDPTR PTR                             */
*/*                 % INCLUDE SYSLIB(ILRASMHD)                       */
*/*                 TO INCLUDE THE ASMHD IN ANOTHER STRUCTURE -      */
*/*                 %ASH9999=','                                     */
*/*                 %ASHLEVEL='N'                                    */
*/*                 WHERE N IS THE NUMBER TO BE USED AS THE          */
*/*                 STRUCTURE LEVEL NUMBER.                          */
*/*                 THE LENGTH OF THE ASMHD MAY BE OBTAINED BY       */
*/*                 REFERENCING THE MACRO VARIABLE ASHLEN.           */
*/*          BAL  - DSECT=NO   SHOULD BE SPECIFIED ON THE MACRO CALL */
*/*                 TO AVOID CREATING A DSECT.  A USING ON ASMHD WILL*/
*/*                 ESTABLISH ADDRESSIBILITY FOR ALL SYMBOLS.        */
*/*                                                                  */
*/********************************************************************/
*           %GOTO   ASHPLS;           /* BILINGUAL HEADER
            MACRO
            ILRASMHD    &DUMMY,&DSECT=YES
            AIF         ('&DSECT' EQ 'YES').ASMHD01
ASMHD       DS          0F            ASMHD CONTROL BLOCK
            AGO         .ASMHD02      CALL FOR BIT DEFINITION
.ASMHD01    ANOP
ASMHD       DSECT       , ASMHDPTR
.ASMHD02    SPACE       2
            IEZBITS     ,
ASHFLAG1    DS          B             I/O CONTROL FLAGS
ASHSWPOT    EQU         BIT0          SWAP-OUT FLAG
*                                     1 = SWAP-OUT OPERATION IN
*                                     PROGRESS
*                                     0 = NO SWAP-OUT IN PROGRESS
ASHCAPER    EQU         BIT1          SWAP CAPTURE QUEUE ERROR
*                                     1 = ONE OR MORE SWAP-OUT CAPTURE
*                                     AIAS ON SWAP CAPTURE HAS SUFFERED
*                                     AN I/O ERROR
*                                     0 = ALL AIAS ON SWAP CAPTURE
*                                     QUEUE HAVE COMPLETED SUCCESSFULLY
ASHPERME    EQU         BIT2          PERMANENT SOFTWARE ERROR FLAG
*                                     1 = ONE OR MORE SWAP-OUT AIAS
*                                     ON THE SWAP CAPTURE Q HAS AN
*                                     UNRESTARTABLE SOFT ERROR
*                                     0 = ALL AIAS ON THE SWAP
*                                     CAPTURE Q HAVE NO LOGICAL
*                                     ERRORS
ASHRSV2     EQU         BIT3          RESERVED
ASHRSV3     EQU         BIT4          RESERVED
ASHRSV4     EQU         BIT5          RESERVED
ASHRSV5     EQU         BIT6          RESERVED
ASHRSV6     EQU         BIT7          RESERVED
ASHFLAG2    DS          B             VIO CONTROL FLAGS
ASHSCHED    EQU         BIT0          SRB CONTROLLER SCHEDULED FLAG
*                                     1 = SRB CONTROLLER HAS BEEN
*                                     SCHEDULED, BUT NOT DISPATCHED
*                                     SRB FOR ADDRESS SPACE NOT
*                                     AVAILABLE
*                                     0 = SRB FOR ADDRESS SPACE
*                                     AVAILABLE
ASHRSV13    EQU         BIT1          RESERVED
ASHRSV7     EQU         BIT2          RESERVED
ASHRSV8     EQU         BIT3          RESERVED
ASHRSV9     EQU         BIT4          RESERVED
ASHRSV10    EQU         BIT5          RESERVED
ASHRSV11    EQU         BIT6          RESERVED
ASHRSV12    EQU         BIT7          RESERVED
ASHSWPCT    DS          H             COUNT OF STARTED BUT NOT COMPLETE
*                                     LSQA SWAP-OUT AIAS
ASHBKSLT    DS          F             NUMBER OF AUXILIARY STORAGE SLOTS
*                                     RESERVED FOR THIS ADDRESS SPACE
ASHIOCNT    DS          F             COUNT OF PRIVATE AREA AIA I/O
*                                     REQUEST STARTED BUT NOT COMPLETE
ASHSWAPQ    DS          A             SWAP QUEUE FOR AIAS, THIS QUEUE
*                                     IS A HOLD QUEUE FOR LSQA AIAS
*                                     DURING SWAP-OUT PROCESSING OF
*                                     NON-LSQA I/O.
ASHCAPQ     DS          A             SWAP CAPTURE QUEUE USED TO
*                                     COLLECT I/O COMPLETE AIAS
*                                     DURING LSQA SWAP-OUT
*                                     PROCESSING
ASHLOCK     DS          F             LOCK WORD FOR ASM CLASS LOCK,
*                                     USED BY VIO CONTROL PROCESSING
ASHVSRBP    DS          A             ADDRESS OF SRB USED BY VIO
*                                     CONTROL TO DISPATCH THE SRB
*                                     CONTROLLER. THIS POINTER IS ZERO
*                                     IF NO VIO DATA SETS HAVE EVER
*                                     BEEN USED BY THE ADDRESS SPACE.
*                                     ONCE CREATED, THE SRB IS NOT
*                                     FREED UNTIL ADDRESS SPACE
*                                     TERMINATION
ASHLGEQ     DS          A             ADDRESS OF FIRST LGE IN QUEUE
*                                     OF LGES FOR VIO DATA SETS
            MEND
*           */
*%ASHPLS:;                            /* PLS COMPILE TIME TARGET     */
*       %IF ASH9999 ^= ','            /* IF THIS IS LAST BLOCK       */
*          %THEN ASH9999 = ';';       /* THEN CLOSE DCL STATEMENT    */
*       %IF ASHLEVEL ^= ''            /* IF THIS IS CONCATENATED     */
*          %THEN %GOTO ASHPLS1;       /* THEN SKIP DCL STATEMENT     */
*DECLARE
*  1 ASMHD BASED(ASMHDPTR) BDY(WORD), /* ASM HEADER                  */
*          %GOTO ASHPLS2;             /* SKIP LEVEL 2 DECLARE        */
*%ASHPLS1:
*     ASHNUM = ASHLEVEL  ' ASMHD BDY(WORD),'; /* SET MINOR LEVEL   */
*     ASHNUM                          /* STRUCTURE                   */
*%ASHPLS2:;
*    4 ASHFLAG1 BIT(8),               /* I/O CONTROL FLAGS           */
*      6 ASHSWPOT BIT(1),             /* SWAP-OUT FLAG
*                                        1 = SWAP-OUT OPERATION IN
*                                        PROGRESS
*                                        0 = NO SWAP-OUT IN PROGRESS */
*      6 ASHCAPER BIT(1),             /* SWAP CAPTURE QUEUE ERROR
*                                        1 = ONE OR MORE SWAP-OUT AIAS
*                                        ON SWAP CAPTURE QUEUE HAS
*                                        SUFFERED AN I/O ERROR
*                                        0 = ALL AIAS ON SWAP CAPTURE
*                                        QUEUE HAVE COMPLETED
*                                        SUCCESSFULLY                */
*      6 ASHPERME BIT(1),             /* PERMANENT SOFTWARE ERROR FLAG
*                                        1 = ONE OR MORE SWAP-OUT AIAS
*                                        ON THE SWAP CAPTURE Q HAS AN
*                                        UNRESTARTABLE SOFT ERROR
*                                        0 = ALL AIAS ON THE SWAP
*                                        CAPTURE Q HAVE NO LOGICAL
*                                        ERRORS                      */
*      6 ASHRSV2 BIT(1),              /* RESERVED                    */
*      6 ASHRSV3 BIT(1),              /* RESERVED                    */
*      6 ASHRSV4 BIT(1),              /* RESERVED                    */
*      6 ASHRSV5 BIT(1),              /* RESERVED                    */
*      6 ASHRSV6 BIT(1),              /* RESERVED                    */
*    4 ASHFLAG2 BIT(8),               /* VIO CONTROL FLAGS           */
*      6 ASHSCHED BIT(1),             /* SRB CONTROLLER SCHEDULED FLAG
*                                        1 = SRB CONTROLLER HAS BEEN
*                                        SCHEDULED, BUT NOT DISPATCHED
*                                        SRB FOR ADDRESS SPACE NOT
*                                        AVAILABLE
*                                        0 = SRB FOR ADDRESS SPACE
*                                        AVAILABLE                   */
*      6 ASHRSV13 BIT(1),             /* RESERVED                    */
*      6 ASHRSV7 BIT(1),              /* RESERVED                    */
*      6 ASHRSV8 BIT(1),              /* RESERVED                    */
*      6 ASHRSV9 BIT(1),              /* RESERVED                    */
*      6 ASHRSV10 BIT(1),             /* RESERVED                    */
*      6 ASHRSV11 BIT(1),             /* RESERVED                    */
*      6 ASHRSV12 BIT(1),             /* RESERVED                    */
*    4 ASHSWPCT FIXED(15),            /* COUNT OF STARTED BUT NOT
*                                        COMPLETE LSQA SWAP-OUT AIAS */
*    4 ASHBKSLT FIXED(31),            /* NUMBER OF AUXILIARY STORAGE
*                                        SLOTS RESERVED FOR THIS
*                                        ADDRESS SPACE               */
*    4 ASHIOCNT FIXED(31),            /* COUNT OF PRIVATE AREA AIA I/O
*                                        REQUEST STARTED BUT NOT
*                                        COMPLETE                    */
*    4 ASHSWAPQ PTR(31),              /* SWAP QUEUE FOR AIAS, THIS
*                                        QUEUE IS A HOLD QUEUE FOR
*                                        LSQA AIAS DURING SWAP-OUT
*                                        PROCESSING OF NON-LSQA I/O  */
*    4 ASHCAPQ PTR(31),               /* SWAP CAPTURE QUEUE USED TO
*                                        COLLECT I/O COMPLETE AIAS
*                                        DURING LSQA SWAP-OUT
*                                        PROCESSING                  */
*    4 ASHLOCK FIXED(31),             /* LOCK WORD FOR ASM CLASS LOCK,
*                                        USED BY VIO CONTROL
*                                        PROCESSING                  */
*    4 ASHVSRBP PTR(31),              /* ADDRESS OF SRB USED BY VIO
*                                        CONTROL TO DISPATCH THE SRB
*                                        CONTROLLER. THIS POINTER IS
*                                        ZERO IF NO VIO DATA SETS HAVE
*                                        EVER BEEN USED BY THE ADDRESS
*                                        SPACE. ONCE CREATED, THE SRB
*                                        IS NOT FREED UNTIL ADDRESS
*                                        SPACE TERMINATION           */
*    4 ASHLGEQ PTR(31) ASH9999        /* ADDRESS OF FIRST LGE IN QUEUE
*                                        OF LGES FOR VIO DATA SETS   */
*    %ASHLEN = 'LENGTH(ASMHD)';       /* OBTAIN LENGTH OF ASMHD      */
./ ADD NAME=ILRASMVT
         MACRO
         ILRASMVT &DSECT=YES           AUXILIARY STRGE MGR VECTOR TABLE
ASMVT    DSECT                         ILRASMVT
ASMFLAG1 DS    X                       FLAGS 1
ASMFLAG2 DS    X,2X                    FLAGS 2
ASMQUICK EQU   X'08'                   QUICK START (ON means noCLPA)
ASMWARM  EQU   X'04'                   WARM START  (ON means noCVIO)
ASMSART  DS    V(SART)                 SWAP ACTIVITY REFERENCE TABLE
ASMPART  DS    V(PART)                 PAGE ACTIVITY REFERENCE TABLE
         MEND
./ ADD NAME=ILRIORB
* /* MACMEAN IORB MEANS INPUT OUTPUT REQUEST BLOCK                   */
* /* MACCOMP Y-4SC1CW/PZD81                                          */
* /* MACSTAT Y-474240/415301                                         */
*/*A-000000-999999                                           @Z40APWA*/
*/********************************************************************/
*/*                                                                  */
*/*  NAME:  ILRIORB                                                  */
*/*                                                                  */
*/*  FUNCTION:  INPUT/OUTPUT REQUEST BLOCK                           */
*/*                                                                  */
*/*  STATUS:  OS/VS2 RELEASE 4.1, LEVEL 0                            */
*/*                                                                  */
*/*  EXTERNAL REFERENCES: IORBPTR - USER DEFINED POINTER TO IORB     */
*/*                                                                  */
*/*  REGISTERS USED:  N/A                                            */
*/*                                                                  */
*/*  REGISTERS CLOBBERED:  N/A                                       */
*/*                                                                  */
*/*  NOTES:  THIS MAPPING MACRO DESCRIBES THE CONTROL BLOCK PASSED   */
*/*          TO THE I/O MANAGER BY AUXILIARY STORAGE MANAGER. IT     */
*/*          CONTAINS POINTERS TO OTHER CONTROL BLOCKS, A POINTER TO */
*/*          AN EIGHTEEN WORD SAVE AREA, AND FLAGS FOR I/O MANAGERS  */
*/*          USE.                                                    */
*/*                                                                  */
*/*          THE IORB IS USED IN CONJUNCTION WITH AN IOSB AND AN SRB */
*/*          FOR I/O PURPOSES IN PLACE OF THE IOB USED BY OTHER IOS  */
*/*          DRIVERS. THE IORB POINTS TO THE IOSB, WHICH POINTS TO   */
*/*          THE SRB.                                                */
*/*                                                                  */
*/*  METHOD OF ACCESS:                                               */
*/*         BAL  - DSECT=NO  SHOULD BE SPECIFIED ON THE MACRO CALL   */
*/*                TO AVOID CREATING A DSECT. A USING ON IORB WILL   */
*/*                ESTABLISH ADDRESSIBILITY FOR ALL SYMBOLS.         */
*/*         PL/S - DCL IORBPTR PTR                                   */
*/*                                                                  */
*/********************************************************************/
*          %GOTO   IORBPLS;          /* BILINGUAL HEADER
           MACRO
           ILRIORB    &DUMMY,&DSECT=YES
           AIF        ('&DSECT' EQ 'YES').IORB01
IORB       DS         0D             IORB CONTROL BLOCK
           AGO        .IORB02        CALL FOR BIT DEFINITION
.IORB01    ANOP
IORB       DSECT      , IORBPTR
.IORB02    SPACE      2
           IEZBITS    ,
IORID      DS         C              IORB IDENTIFIER X'88'
IORNUM     DS         X              NO. OF IORBS FOR THIS PAGE SPACE
IORRQSZ    DS         X              NUMBER OF PCCWS IN THIS REQUEST
IORFLGS    DS         B              INTERNAL FLAGS
IORFUSE    EQU        BIT0           X'80' = IORB IN USE
IORFRPS    EQU        BIT1           X'40' = RPS DEVICE
IORSWAP    EQU        BIT4           SWAP DATA SET FLAG
*                                    1 = IORB FOR SWAP DATA SET
*                                    0 = IORB FOR PAGE DATA SET
IORAPND    EQU        BIT5           APPENDAGE FLAGS
IORFDI     EQU        BIT5           X'04' = DIE COMPLETED
IORFNE     EQU        BIT6           X'02' = NORMAL END COMPLETED
IORFAE     EQU        BIT7           X'01' = ABNORMAL END COMPLETED
IORIORB    DS         A              POINTER TO NEXT IORB
IORPCCW    DS         A              POINTER TO FIRST PCCW
IORSCCW    EQU        IORPCCW        POINTER TO FIRST SCCW
IORIOSB    DS         A              IOSB ADDRESS
IORSAVE    DS         A              POINTER TO 18 WORD SAVE AREA
IORERR     DS         A              ADDRESS OF PCCW IN ERROR
IORTSMP    DS         CL8            ILRSRT TOD STAMP
IORPARTE   DS         A              POINTER TO PARTE
IORRSV     DS         F              RESERVED
           MEND
*          */
*%IORBPLS:;                          /* PLS COMPILE TIME TARGET      */
*       DCL 1 IORB BASED(IORBPTR) CHAR(40) BDY(DWORD), /* IORB       */
*             2 IORID  CHAR(1),      /* IORB IDENTIFIER X'88'        */
*             2 IORNUM FIXED(8),     /* NO. OF IORBS FOR PAGE SPACE  */
*             2 IORRQSZ FIXED(8),    /* NUMBER OF PCCWS THIS REQUEST */
*             2 IORFLGS BIT(8),      /* INTERNAL FLAGS               */
*               3 IORFUSE BIT(1),    /* X'80' = IORB IN USE          */
*               3 IORFRPS BIT(1),    /* X'40' = RPS DEVICE           */
                3 * BIT(2),          /* RESERVED                     */
*               3 IORSWAP BIT(1),    /* SWAP DATA SET FLAG
*                                       1 = IORB FOR SWAP DATA SET
*                                       0 = IORB FOR PAGE DATA SET   */
*               3 IORAPND BIT(3),    /* APPENDAGE FLAGS              */
*                 4 IORFDI BIT(1),   /* DIE COMPLETED                */
*                 4 IORFNE BIT(1),   /* NORMAL END COMPLETED FLAG    */
                  4 IORFAE BIT(1),   /* ABNORMAL END COMPLETED FLAG  */
*             2 IORIORB PTR(31),     /* POINTER TO NEXT IORB         */
*             2 IORPCCW PTR(31),     /* POINTER TO FIRST PCCW        */
*               3 IORSCCW PTR(31),   /* POINTER TO FIRST SCCW        */
*             2 IORIOSB PTR(31),     /* IOSB ADDRESS                 */
*             2 IORSAVE PTR(31),     /* POINTER TO 18 WORD SAVE AREA */
*             2 IORERR PTR(31),      /* POINTER TO PCCW IN ERROR     */
*             2 IORTSMP CHAR(8),     /* ILRSRT TOD STAMP             */
*             2 IORPARTE PTR(31),    /* POINTER TO PARTE             */
*             2 IORRSV CHAR(4),      /* RESERVED                     */
*             2 * CHAR(0) BDY(DWORD);
./ ADD NAME=ILRPART
         MACRO
         ILRPART
PART     DSECT                         PAGING ACTIVITY REFERENCE TABLE
PARTIDEN DS    C'PART'                 EYE CATCHER
PARTSIZE DS    F             +4        NUMBER OF ENTRIES IN THE PART
PARTEUSE DS    F             +8
PARTCIR0 DS    A             +C
PARTCIR1 DS    A             +10
PARTCIR2 DS    A             +14
PARTTPAR DS    0A            +18
PARTDSNL DS    A             +18       ADDR OF DSN LIST
PARTPCTQ DS    A             +1C
PARTLCNT DS    H             +20
PARTFLG1 DS    B             +22
         DS    X             +23
PARTNPCF DS    A             +24
PARTNPCL DS    A             +28
PARTTIME DS    F             +2C
         DS    CL32          +30
PARTENTS EQU   *
*
PARTENT  DSECT                         PAGE DATA SET TABLE ENTRY
PAREPARE DS    A             +0
PAREBRST DS    AL1           +4
PAREIORN DS    AL1           +5
         DS    XL2           +6
PARETYPE DS    B             +8
PAREPLPA EQU   X'80'                   PLPA
PARECOMM EQU   X'40'                   COMMON
PAREDPLX EQU   X'20'                   DUPLEX
PARELOCL EQU   X'10'                   LOCAL
PAREBPF  EQU   X'08'                   CACHED DEVICE
PARESPP  EQU   X'04'                   SET PAGING PARAMETERS OK
PAREPD   EQU   X'02'                   PAGEDEL IN PROCESS
PAREDRN  EQU   X'01'                   DRAINING
PAREFLG1 DS    B             +9
PARENUSE EQU   X'80'                   NOT IN USE
PARENVIO EQU   X'10'                   VIO=NO
PARENN   DS    H             +A
PAREDEIB DS    A             +C        POINTER TO DEIB
PARESZSL DS    F             +10       SIZE OF DATA SET (IN SLOTS)
PARESLTA DS    F             +14       NUMBER OF AVAILABLE SLOTS
PARERRCT DS    F             +18       NUMBER OF PERMANENT I/O ERRORS
PAREIORB DS    A             +1C       ADDR OF 1ST IORB
PAREPATP DS    A(PAT)        +20       POINTER TO PAT
PAREPCTP DS    A             +24       POINTER TO PCT
PAREEDBP DS    A             +28       POINTER TO EDB
PAREUCBP DS    A(UCBOB)      +2C       POINTER TO UCB
PARETIOR DS    A             +30
PARETIME DS    F             +34
PARERQTM DS    F             +38       LATEST REQUEST SERVICE TIME
         DS    H             +3C       RESERVED
PAREREQS DS    H             +3E       OUTSTANDING I/O REQUESTS
         AGO   .SIZE    END IN MVS 3.8J                         GP06272
PAREFLG2 DS    B             +40       FLAGS
PARELSLT DS    XL3           +41       WRITE CURSOR
PAREOCTB DS    A             +44       OLD CTB ADDR
PAREMIGA DS    A             +48       MIGRATED SLOT COUNT
PARECADR DS    FL1           +4C       INDEX NUMBER FOR CACHE ENTRY
         DS    XL19          +4D       RESERVED
.SIZE    ANOP  ,                                                GP06272
PARTELEN EQU   *-PARTENT               96 BYTES
.MEND    MEND
./ ADD NAME=ILRPAT
         MACRO
         ILRPAT
PAT      DSECT                         Page Allocation Table
PATIDENT DS    C'PAT '
PATPART  DS    A(PARTENT)              POINTER TO PART ENTRY
PATCYLNO DS    H                       NUMBER OF CYLINDER MAPS
PATCYLSZ DS    H                       NUMBER OF SLOTS PER CYLINDER
PATCYLMW DS    H,2X                    NO OF WORDS REQ TO MAP 1 CYL
PATCCHHB DS    X'0001,0000'            BEGIN CCHH
PATCCHHE DS    X'0001,000E'            END CCHH
PATMAP   EQU   *
PATCYL   DS    XL4                     CYLINDER MAP WORDS
         MEND
./ ADD NAME=INS
         MACRO
&TAG     INS   &TREE,&A=,&R=,&#=,&T=,&C=,&SP=,&S=,&INSARG=,&MOVE=,     *
               &RECL=,&TYPE=
.************************* SEPTEMBER 27,1973.**************************
.* THE INS MACRO-INSTRUCTION ASSOCIATES A KEY WITH A RECORD ADDRESS BY*
.* CHANGING THE RADIX PARTITION TREE OF ASSOCIATIONS.                 *
.*                                                                    *
.* THE ADDRESS USED IS OBTAINED IN EITHER ONE OF TWO WAYS:            *
.*                                                                    *
.* 0:    IF THE A-PARAMETER IS CODED AND THE R-PARAMETER IS NOT CODED,*
.*       THE ADDRESS IS AS SPECIFIED BY THE A-PARAMETER.              *
.*                                                                    *
.* 1:    IF BOTH THE A AND R PARAMETERS ARE CODED, SPACE IS ALLOCATED *
.*       FOR THE RECORD VIA THE GSPACE MACRO-INSTRUCTION, THE RECORD  *
.*       IS MOVED TO THE AREA ALLOCATED, AND THE ADDRESS OF THE       *
.*       ALLOCATED AREA IS USED. BY CODING THE R-PARAMETER THE RECORD *
.*       IS DEFINED SO IT CAN BE COLLECTED AT THE ALLOCATED AREA.     *
.*       IN EITHER CASE, AFTER THE INS MACRO HAS BEEN SUCCESSFULLY    *
.*       EXECUTED THE ADDRESS USED FOR THE ASSOCIATION IS RETURNED IN *
.*       REGISTER 15 AS THE RETURN CODE. IF THE INSERT IS NOT         *
.*       SUCCESSFUL FOR SOME REASON, THE RETURN CODE IN REGISTER 15 IS*
.*       NEGATIVE.                                                    *
.*                                                                    *
.* THE DESCRIPTIONS OF THE PARAMETERS FOR THE INS MACRO ARE AS        *
.* FOLLOWS:                                                           *
.*                                                                    *
.* TREE: THIS SPECIFIES THE ADDRESS OF THE RADIX PARTITION TREE USED  *
.*       TO STORE THE KEY-ADDRESS ASSOCIATIONS. IT MAY BE CODED TO    *
.*       SPECIFY EITHER A MAIN STORAGE LOCATION CONTAINING THE ADDRESS*
.*       OF THE RPT OR IN PARENTHESES TO INDICATE A GENERAL REGISTER  *
.*       CONTAINING THE ADDRESS OF THE RPT. IF "(1)" IS CODED, NO LOAD*
.*       REGISTER INSTRUCTION IS GENERATED BY THE INS MACRO, AS THE   *
.*       ADDRESS IS ALREADY IN THE APPROPRIATE PARAMETER LIST         *
.*       REGISTER.                                                    *
.*       THE TREE PARAMETER MAY BE OMITTED, IN WHICH CASE THE ADDRESS *
.*       OF THE RPT IS ASSUMED IN GPR 1.                              *
.*                                                                    *
.* A:    THE A-PARAMETER SPECIFIES THE ADDRESS OF THE RECORD          *
.*       CONTAINING THE KEY TO BE USED FOR THE ASSOCIATION. THE RECORD*
.*       ADDRESS MAY BE EITHER A MAIN STORAGE LOCATION OR MAY BE IN A *
.*       REGISTER, INDICATED BY ENCLOSING THE REGISTER NAME OR # IN   *
.*       PARENTHESES. FOR EXAMPLE, IF "A=LABEL" IS CODED, "LABEL" IS  *
.*       TAKEN AS THE SYMBOLIC NAME OF THE MAIN STORAGE LOCATION      *
.*       CONTAINING THE RECORD. THE A PARAMETER MAY BE USED IN        *
.*       CONJUNCTION WITH THE R PARAMETER TO SPECIFY A SCATTERED      *
.*       RECORD TO BE COLLECTED INTO A SPACE PROVIDED VIA THE GSPACE  *
.*       MACRO-INSTRUCTION.                                           *
.*                                                                    *
.* R:    THE R-PARAMETER IS USED TO SPECIFY THE RECORD WHEN IT IS     *
.*       DESIRED THAT THE INS MACRO ALLOCATE AN AREA TO HOLD THE      *
.*       RECORD VIA THE GSPACE MACRO AND MOVE THE RECORD TO THE AREA  *
.*       ALLOCATED BEFORE INSERTING THE ASSOCIATION IN THE RPT.       *
.*       THERE ARE TWO MODES FOR CODING THE R PARAMETER; THE FIRST WAY*
.*       IS IN CONJUNCTION WITH THE A PARAMETER, AND THE SECOND IS    *
.*       WITHOUT CODING THE A PARAMETER. IF BOTH THE A AND R          *
.*       PARAMETERS ARE CODED, THEN THE A PARAMETER PROVIDES THE      *
.*       ADDRESS OF A BASE AREA FROM WHICH TO COLLECT THE RECORD, AND *
.*       THE R-PARAMETER SPECIFIES THE RECORD IN THE BASE AREA BY     *
.*       PAIRS OF DISPLACEMENTS AND LENGTHS, ENCLOSED IN PARENTHESES. *
.*       THE DISPLACEMENT-LENGTH PAIRS ARE CODED AS ((D,L),(D,L),...  *
.*       ,(D,L)), WHERE EACH DISPLACEMENT AND LENGTH IS ENCLOSED IN   *
.*       PARENTHESES, AND THE ORDER THE PAIRS APPEAR IN THE LIST IS   *
.*       THE ORDER IN WHICH THE RECORD IS COLLECTED.                  *
.*       EACH DISPLACEMENT AND LENGTH MUST BE A SELF-DEFINING DECIMAL *
.*       NUMBER.                                                      *
.*       FOR EXAMPLE, CODING "A=(8),R=((10,3),(6,9))" CAUSES THE      *
.*       RECORD TO BE COLLECTED FROM THE TWO FIELDS AT OFFSETS 10 AND *
.*       6 RESPECTIVELY FROM THE BASE ADDRESS IN GPR 8. NOTE THAT NO  *
.*       CHECK IS MADE FOR OVERLAPPING FIELDS.                        *
.*       IF THERE IS ONLY ONE DISPLACEMENT-LENGTH PAIR, IT MAY BE     *
.*       CODED WITH ONLY ONE SET OF ENCLOSING PARENTHESES INSTEAD OF  *
.*       TWO.                                                         *
.*                                                                    *
.*       IF THE R PARAMETER IS CODED AND THE A PARAMETER IS NOT CODED,*
.*       THE ELEMENTS IN THE LIST FOR THE R PARAMETER MAY BE CODED AS *
.*       ADDRESS-LENGTH PAIRS. IN THIS CASE, EACH ADDRESS MAY EITHER  *
.*       BE A MAIN STORAGE LOCATION, OR IN A REGISTER. EACH ADDRESS   *
.*       MUST BE A RELOCATABLE EXPRESSION IF IT NOT IN A REGISTER.    *
.*       INSTEAD OF THE ADDRESS-LENGTH PAIR, A LABEL MAY BE CODED, AS *
.*       LONG AS THE LABEL HAS A LENGTH ATTRIBUTE THAT CAN BE USED TO *
.*       OBTAIN THE LENGTH OF THE CORRESPONDING FIELD.                *
.*                                                                    *
.* T:    THE T-PARAMETER IS USED TO SPECIFY THE RADIX PARTITION TREE  *
.*       TYPE FOR THE INSERTION. THE T-PARAMETER MUST BE CODED AS A   *
.*       SINGLE SELF-DEFINING DECMIAL NUMBER WITHOUT LEADING ZEROS.   *
.*       IF THE T-PARAMETER IS NOT CODED, THE TYPE WILL BE OBTAINED   *
.*       FROM THE GLOBAL VARIABLE &IGATYPE (IF IT IS A VALID RPT      *
.*       TYPE). IF IT IS NOT A VALID TREE TYPE, A TYPE 8 IS SUPPLIED, *
.*       AND THE GLOBAL VARIABLE &IGATYPE IS SET TO 8.                *
.*                                                                    *
.*       THE PARAMETERS INSARG, MOVE, RECL, AND TYPE SHOULD NOT BE    *
.*       USED, AS THEY ARE ONLY PRESENT FOR COMPATIBILITY WITH EARLIER*
.*       VERSIONS OF THE INSERT MACRO.                                *
         GBLC  &IGABLST  THE OFFSET INTO THE TREE HEADER FOR THE LIST  *
                         OF RPT ENTRY POINTS.
         GBLC  &IGAINS
         GBLC  &IGARPT#  THE RADIX PARTITION TREE TYPE FROM EITHER THE *
                         T OR TYPE PARAMETER.
         GBLA  &IGARECL  THE LENGTH OF THE RECORD TO BE INSERTED BY THE*
                         INSERT MACRO-INSTRUCTION.
         GBLA  &IGALEFT(256)  LEFT INVERTIBLE SUBTRACTION EDGES FOR THE*
                         BINARY PARSE TREE.
         GBLA  &IGARGHT(256)  RIGHT INVERTIBLE SUBTRACTION EDGES FOR   *
                         THE BINARY PARSE TREE.
         GBLA  &IGAX     PENULTIMATE VERTEX ON PATH TO CURRENT ATOM    *
                         WHEN SCANNING.
         GBLA  &IGAZ     LAST INNER VERTEX ON PATH TO ATOM.
         GBLA  &IGAPATH(16)  PATH VECTOR FOR THE SCANNING OPERATIONS ON*
                         THE PARSE TREE.
         GBLA  &IGALEVL  NUMBER OF NESTED LEVELS OF PARENTHESES FOR    *
                         CURRENT ATOM.
         GBLB  &IGAOKAY  ON IF THE PARSE IN RPTDSECT DID NOT FIND ANY  *
                SYNTAX ERRORS IN THE R PARAMETER LIST.
         LCLA  &I        A LOCAL VARIABLE FOR KEEPING TRACK OF THE     *
                         CURRENT ENTRY BEING SCANNED IN THE R PARAMETER*
                         LIST.
         LCLA  &LNG      THE LENGTH OF THE CURRENT DISPLACEMENT-LENGTH *
                         PAIR.
         LCLA  &TMPA     USED TO REMEMBER &IGAPATH(&IGALEVL-1).
         LCLC  &RC       USED TO SET THE REQUEST MODE FOR THE GSPACE   *
                         MACRO TO CONDIRIONAL OR UNCONDITIONAL.
         LCLC  &X        JUST A LOCAL CHARACTER VECTOR FOR COLLECTING  *
                         OPERANDS.
         LCLB  &REQUEST  ON IF THE GSPACE REQUEST IS A CONDITIONAL     *
                         REQUEST.
         LCLB  &R1SAVED  ON IF REGISTER 1 IS SAVED THROUGH THE GSPACE  *
                         OPERATION.
         LCLB  &FINEQU   ON IF THE EQUATE "FIN&SYSNDX EQU *" MUST BE   *
                         GENERATED AT THE END OF THE MACRO EXECUTION.
         LCLB  &ERROR    THIS BIT IS TURNED ON WHENEVER AN MNOTE OF    *
                         SUFFICIENT SEVERITY IS GENERATED.
         LCLA  &DSP      THIS IS USED FOR COLLECTING THE DISPLACEMENT  *
                         AS A NUMBER.
         LCLC  &FIELD    THIS IS USED TO HOLD THE FIELD OF AN (F,L)    *
                         PAIR WHILE GETTING THE L.
         LCLB  &XFER     ON TO GENERATE THE MOVES WHEN IT IS THE RIGHT *
               ITERATION THROUGH THE LOOP.
.*A000000                                                        Y02147
.**********************************************************************
.* CHECK TO SEE WHETHER ANY OF THE OLD PARAMETERS ARE CODED, AND IF   *
.* THEY ARE THEN MAP THEM TO THE NEW PARAMETERS VIA MACRO RECURSION.  *
.**********************************************************************
.*                                                                    *
         AIF   ((K'&INSARG EQ 0)AND(K'&MOVE EQ 0)AND(K'&RECL EQ 0)).NEW*
                         GO IF NONE OF THE OLD PARAMETERS ARE CODED.
         AIF   (K'&RECL EQ 0).NORECL  SEE IF THE RECORD LENGTH IS NOT  *
                         CODED.
&TAG     INS   &TREE,A=&INSARG,T=&T,TYPE=&TYPE,R=(0,&RECL),C=1
         AGO   .FIN      ALL DONE, NOW EXIT.
.NORECL  ANOP
&TAG     INS   &TREE,A=&INSARG,T=&T,TYPE=&TYPE,C=1
         AGO   .FIN  ALL DONE NOW, EXIT FROM THE INS MACRO-INSTRUCTION.
.**********************************************************************
.* ALL FINISHED WITH COMPATIBILITY PROCESSING WITH THE OLD FORMATS,   *
.* NOW REALLY DO IT.                                                  *
.**********************************************************************
.NEW     ANOP
.**********************************************************************
.* CHECK TO SEE IF THE LABEL FIELD IS CODED AND GENERATE THE          *
.* APPROPRIATE EQUATE IF IT IS.                                       *
.**********************************************************************
         AIF   (K'&TAG EQ 0).NOTAG  GO AROUND THE EQUATE IF THE TAG IS *
                         NOT PRESENT.
&TAG     EQU   *         PROVIDE THE LABEL.
.NOTAG   ANOP
.**********************************************************************
.* CHECK THE TYPE AND T PARAMETERS TO SEE IF A VALID RPT TYPE IS      *
.* SPECIFIED. IF NEITHER IS SPECIFIED, ASSUME IT IS TYPE 8 RPT. THE   *
.* TYPE IS PUT INTO THE GLOBAL VARIABLE &IGARPT# AT THE END OF THE    *
.* TYPE CHECKING SECTION.                                             *
.**********************************************************************
.RPT#    AIF   (K'&T EQ 0).RPT#TMT  SEE IF THE T PARAMETER IS CODED.
         AIF   (K'&TYPE EQ 0).RPT#TCK  USE THE T PARAMETER IF IT IS    *
                         CODED AND THE TYPE PARAMETER IS NOT CODED.
.**********************************************************************
.* BOTH THE T AND TYPE PARAMETERS ARE CODED; SEE IF THEY ARE THE SAME,*
.* AND IF THEY ARE NOT THEN USE T.                                    *
.**********************************************************************
         AIF   ('&T' EQ '&TYPE').RPT#TCK  IF THEY ARE THE SAME THEN USE*
                         T.
         MNOTE 4,'TYPE CONFLICT, ONLY T OR TYPE SHOULD BE CODED.'
.RPT#TCK ANOP
&IGARPT# SETC  '&T'      GET THE RPT TYPE.
         AGO   .RPT#CHK  GO TO CHECK THE VALIDITY OF THE RADIX         *
                         PARTITION TREE TYPE.
.**********************************************************************
.* THE T PARAMETER IS NOT CODED, SEE IF THE TYPE PARAMETER IS CODED.  *
.**********************************************************************
.RPT#TMT AIF   (K'&TYPE EQ 0).RPT#8  IF BOTH ARE LEFT OUT USE TYPE 8   *
                         RPT.
&IGARPT# SETC  '&TYPE'   SET THE TYPE TO THE TYPE THAT IS SPECIFIED BY *
                         THE TYPE PARAMETER.
         AGO   .RPT#CHK  GO CHECK IT FOR VALIDITY.
.RPT#CHK AIF   (('&IGARPT#' EQ '8')OR('&IGARPT#' EQ '5')OR('&IGARPT#' E*
               Q '4')).RPT#FIN
         MNOTE 4,'INVALID RPT TYPE, TYPE 8 ASSUMED.'
.RPT#8   ANOP
&IGARPT# SETC  '8'       SET RPT TYPE TO THE DEFAULT.
.RPT#FIN ANOP
      RPTDSECT T=5,DS=NO
      RPTDSECT T=8,DS=NO
.**********************************************************************
.* INSERT INTO A TYPE 8 RADIX PARTITION TREE. FIRST CHECK TO SEE      *
.* WHETHER THE AREA TO HOLD THE NEW RECORD MUST BE ALLOCATED VIA THE  *
.* GSPACE MACRO-INSTRUCTION. IF THE R-PARAMETER IS CODED THEN THE AREA*
.* MUST BE ALLOCATED. IF THE AREA DOES NOT HAVE TO BE ALLOCATED GO    *
.* DIRECTLY TO .CHKA.                                                 *
.**********************************************************************
         AIF   (K'&R EQ 0).CHKA  SEE IF THERE IS NO RECORD SPECIFIED.
.**********************************************************************
.* CHECK TO SEE WHETHER THE TREE ADDRESS IS IN GPR 1 AND MUST BE      *
.* PRESERVED THROUGH THE GSPACE OPERATION.                            *
.**********************************************************************
         AIF   (K'&TREE EQ 0).TREEMT  GO IF THE TREE PARAMETER IS NOT  *
                         CODED.
         AIF   ('&TREE'(1,1) NE '(').TREEOK  SEE IF IT IS NOT IN A     *
                         REGISTER.
         AIF   ('&TREE' EQ '(1)').TREEMT  SEE IF IT IS SPECIFICALLY    *
                         SPECIFIED IN REGISTER 1.
         AGO   .TREEOK   IT IS APPARENTLY NOT IN REGISTER 1, ASSUME IT *
                         IS OK.
.TREEMT  ST    1,((4*1)+20-64*((2+1)/16))(,13)  SAVE R1.
&R1SAVED SETB  (1)       SET THE BIT ON TO INDICATE R1 WAS STORED      *
                         THROUGH THE GSPACE OPERATION.
.TREEOK  ANOP
.**********************************************************************
.* DETERMINE THE LENGTH OF THE AREA NEEDED FOR THE RECORD BY ADDING UP*
.* ALL THE INDIVIDUAL LENGTHS IN THE DISPLACEMENT-LENGTH PAIRS IN THE *
.* R-PARAMETER.                                                       *
.**********************************************************************
.* THE R PARAMETER HAS BEEN CHECKED AT THIS POINT, AND IS NOT THE     *
.* EMPTY STRING.                                                      *
.* THE FOLLOWING LOOP IS DONE TWICE; THE FIRST TIME THROUGH IT ONLY   *
.* CHECKS ALL THE R-PARAMETER ELEMENTS FOR VALIDITY AND ADDS UP ALL   *
.* THE FIELD LENGTHS FOR THE GSPACE, AND THE SECOND TIME THROUGH IT   *
.* GENERATES ALL THE MVC'S TO MOVE THE RECORD TO THE AREA ALLOCATED.  *
.* IF THE FIRST TIME THROUGH FINDS ERRORS, THEN THERE IS NO SECOND    *
.* TIME.                                                              *
.**********************************************************************
.LOOPAIR ANOP
&IGARECL SETA  0         INITIALIZE THE RECORD LENGTH TO ZERO.
         AIF   (N'&R EQ 2).RHAS2  SEE IF THERE ARE EXACTLY TWO ELEMENTS*
                         IN R ON PARENTHESIS LEVEL ONE.
         AIF   (N'&R NE 1).RMIXED  SEE IF THERE ARE MORE THAN TWO      *
                         ELEMENTS, FOR IF SO THE LIST CONSISTS OF A    *
                         SERIES OF FIELD NAMES OR (D,L) PAIRS.
.**********************************************************************
.* R HAS ONLY ONE ELEMENT ON LEVEL 1. FIND OUT WHICH OF THE FOLLOWING *
.* CASES APPLIES, AND TAKE THE INDICATED ACTION:                      *
.* IN THE FOLLOWING DISCUSSION, )F" MEANS A FIELD NAME, "D" MEANS     *
.* DISPLACEMENT, "L" MEANS LENGTH, AND "X" MEANS ANY STRING. THE D AND*
.* L FIELDS MUST BE SELF-DEFINING TERMS,.                             *
.* IF:   THEN:                                                        *
.* R=F   ENTER THE ROUTINE AT .RMIXED TO PROCESS A LIST OF PAIRS OF   *
.*       F'S AND (D,L) PAIRS, SINCE THIS CASE WILL BE TREATED AS A    *
.*       SINGLE FIELD NAME BY THAT ROUTINE.                           *
.* R=(F) THIS IS AN ERROR, BECAUSE OF THE POSSIBLE FUTURE USE OF THIS *
.*       FORM TO INDICATE THE ADDRESS OF A LIST OF DISPLACEMENT-LENGTH*
.*       PAIRS IN A REGISTER.                                         *
.* R=L   L IS THE LENGTH OF THE RECORD TO BE INSERTED. THE A PARMAETER*
.*       MUST BE CODED FOR THIS TO BE VALID, BECAUSE OTHERWISE THERE  *
.*       IS NO WAY TO FIND OUT WHERE THE RECORD IS THAT IS TO BE      *
.*       INSERTED.                                                    *
.* R=(L) THIS IS AN ERROR, BECAUSE OF THE POSSIBILITY THAT IN THE     *
.*       FUTURE I WILL WANT TO PUT THE ADDRESS OF A LIST OF           *
.*       DISPLACEMENT-LENGTH PAIRS IN A REGISTER.                     *
.* R=((X)) ENTER THE .RMIXED ROUTINE, SINCE IT LOOKS LIKE A LIST OF   *
.*       DISPLACEMENT-LENGTH PAIRS WITH ONLY ONE PAIR.                *
.*       ANYTHING ELSE IS INVALID, AND PRODUCES THE MNOTE 12,'INVALID *
.*       R-PARAMETER.'                                                *
.**********************************************************************
         AIF   ('&R'(1,1) NE '(').RNOTLP  SEE IF THERE ARE NO          *
                         PARENTHESES AROUND THE OPERAND.
         AIF   ('&R'(1,2) EQ '((').RMIXED  SEE IF THIS IS THE CASE     *
                         R=((X)).
         MNOTE 12,'A REGISTER CANNOT BE SPECIFIED FOR THE LIST OF DISPL*
               ACEMENT-LENGTH PAIRS.'
&ERROR   SETB  1         SET THE ERROR FLAG ON.
         AGO   .RFIN     END THIS PART.
.**********************************************************************
.* THIS MUST BE ONE OF THE TWO CASES R=F OR R=L.                      *
.**********************************************************************
.RNOTLP  ANOP
         AIF   (((T'&R(1) NE 'M')AND(T'&R(1) NE 'N')AND(T'&R(1) NE 'O')*
               AND(T'&R(1) NE 'T')AND(T'&R(1) NE 'W')AND(T'&R(1) NE '$'*
               )AND(T'&R(1) NE 'U'))).RMIXED
.* THIS MUST BE THE CASE WHERE "R=L" IS CODED.                        *
         AIF   (T'&R(1) NE 'N').R1NOTN  SEE IF IT IS A SELF-DEFINING   *
                         FIELD.
.**********************************************************************
.* R=L IS CODED, AND L IS A SELF-DEFINING TERM. USE L FOR THE RECORD  *
.* LENGTH, BUT FIRST CHECK TO SEE IF THE A PARAMETER IS CODED. IF THE *
.* A PARAMETER IS NOT CODED IT IS AN ERROR.                           *
.**********************************************************************
&IGARECL SETA  (&R(1))   GET THE RECORD LENGTH FROM THE L OF THE R     *
                         PARAMETER.
         AIF   (K'&A EQ 0).R1AMT  SEE IF THE A PARAMETER HAS BEEN LEFT *
                         OUT.
         AIF   (&IGARECL GT 256).R1LERR  FOR THE NONCE ONLY TAKE FIELDS*
                         THAT ARE LESS THAN 257 BYTES LONG.
         AIF   (NOT &XFER).RFIN  SEE IF THIS IS THE MVC GENERATION     *
                         LOOP, OR JUST THE VALIDATION AND ADDING UP    *
                         FIELD LENGTHS LOOP.
.* GENERATE THE MOVE OF THE RECORD TO THE AREA ALLOCATED VIA GSPACE.  *
         AIF   ('&A'(1,1) EQ '(').R1AGPR  SEE IF THE ADDRESS IS IN A   *
                         GPR.
         MVC   0(&IGARECL,1),&A  MOVE THE RECORD.
         AGO   .RFIN     ALL DONE NOW.
.R1AGPR  MVC   0(&IGARECL,1),0&A  MOVE THE RECORD.
         AGO   .RFIN     GO TO THE END OF THE R PARAMETER PROCESSING.
.**********************************************************************
.* FOLLOWING ARE THE MISCELLANEOUS ERROR MNOTES FROM THE SINGLE       *
.* ELEMENT CASE OF THE R PARAMETER.                                   *
.**********************************************************************
.R1LERR  MNOTE 12,'THE LENGTH OF EACH FIELD DEFINED BY R CANNOT EXCEED *
               256 BYTES.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON SO THE MVC'S DON'T GET  *
                         GENERATED.
         AGO   .RFIN
.R1AMT   MNOTE 12,'THE A PARAMETER MUST BE CODED WITH R AS CODED.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .RFIN
.R1NOTN  MNOTE 12,'THE LENGTH MUST BE A SELF-DEFINING TERM FOR THE R PA*
               RAMETER.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .RFIN
.**********************************************************************
.* THE R PARAMETER HAS EXACTLY TWO ELEMENTS IN IT ON LEVEL 1. SEE IF  *
.* EITHER OF THESE TWO ELEMENTS STARTS WITH A LEFT PARENTHESIS, WHICH *
.* MEANS ONE OF THE CASES R=(X,(X)), R=((X),X), OR R=((X),(X)). IF IT *
.* IS ONE OF THESE CASES ENTER THE MIXED ROUTINE AT .RMIXED.          *
.* IF IT IS NOT ONE OF THOSE THREE CASES, THEN IT MUST BE ONE OF THE  *
.* CASES R=(F,F), R=(F,L), OR R=(D,L). NOTE THAT THE CASE R=(D,L) CAN *
.* BE CODED AS R=(,L).                                                *
.**********************************************************************
.RHAS2   AIF   (K'&R(2) NE 0).R2NOTMT  SEE IF THE SECOND ELEMENT IS THE*
                         EMPTY STRING. THIS IS NO GOOD.
         MNOTE 12,'THE SECOND ELEMENT OF A DISPLACEMENT-LENGTH PAIR MUS*
               T BE CODED.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN      FORGET IT, CAN'T DO ANYTHING WITH AN EMPTY    *
                         STRING FOR THE LENGTH.
.R2DMT   ANOP
&DSP     SETA  (0)       SET THE DISPLACEMENT TO ZERO, SINCE IT IS     *
                         CODED AS THE EMPTY STRING.
         AGO   .R2MERGE  MERGE WITH THE CASE WHERE THE DISPLACEMENT IS *
                         NOT THE EMPTY STRING.
.R2NOTMT AIF   (K'&R(1) EQ 0).R2DMT  SEE IF THE DISPLACEMENT IS THE    *
                         EMPTY STRING.
         AIF   (('&R(1)'(1,1) EQ '(')OR('&R(2)'(1,1) EQ '(')).RMIXED   *
                         LOOK FOR ONE OF THE CASES R=(X,(X)), R=((X),  *
                         X), OR R=((X),(X)).
         AIF   (((T'&R(2) NE 'M')AND(T'&R(2) NE 'N')AND(T'&R(2) NE 'O')*
               AND(T'&R(2) NE 'T')AND(T'&R(2) NE 'W')AND(T'&R(2) NE '$'*
               )AND(T'&R(2) NE 'U'))).RMIXED
.* THE SECOND ELEMENT IS NOT A FIELD NAME, SO IT MUST EITHER BE ONE OF*
.* THE TWO CASES R=(F,L) OR R=(D,L), OR IT IS AN ERROR.               *
         AIF   ((T'&R(1) NE 'M')AND(T'&R(1) NE 'N')AND(T'&R(1) NE 'O')A*
               ND(T'&R(1) NE 'T')AND(T'&R(1) NE 'W')AND(T'&R(1) NE '$')*
               AND(T'&R(1) NE 'U')).R2F1
         AIF   (T'&R(1) NE 'N').R2DTYPE  SEE IF THE FIRST ONE IS A     *
                         VALID DISPLACEMENT.
&DSP     SETA  (&R(1))   PICK UP THE DISPLACEMENT.
.R2MERGE ANOP
         AIF   (T'&R(2) EQ 'N').R2TSELF  SEE IF THE LENGTH IS A        *
                         SELF-DEFINING FIELD.
&I       SETA  (K'&R(2))  CHECK THE FIELD TO SEE IF IT ALL NUMERIC.
.R2LTKLP AIF   (('&R(2)'(&I,1) LT '0')OR('&R(2)'(&I,1) GT '9')).R2LTYPE*
                         SEE IF IT IS NOT ONE OF THE DIGITS 0-9.
&I       SETA  (&I-1)    STEP DOWN TO THE NEXT CHARACTER.
         AIF   (&I GT 0).R2LTKLP  SEE IF ALL THE CHARACTERS HAVE BEEN  *
                         CHECKED.
.R2TSELF ANOP
&IGARECL SETA  (&R(2))   GET THE LENGTH AS A NUMBER.
         AIF   (&IGARECL GT 256).R1LERR  SEE IF THE LENGTH IS MORE THAN*
                         256 BYTES.
         AIF   (&DSP GT 4095).R2DERR  SEE IF THE DISPLACEMENT IS       *
                         GREATER THAN 4095.
         AIF   (K'&A EQ 0).R1AMT  SEE IF THE A PARAMETER IS LEFT OUT;  *
                         THAT IS BAD.
         AIF   (NOT &XFER).RFIN  SEE IF THIS IS THE MVC GENERATING LOOP*
                         OR NOT.
.**********************************************************************
.* GENERATE THE MOVE OF THE RECORD TO THE AREA ALLOCATED FOR IT VIA   *
.* THE GSPACE MACRO-INSTRUCTION.                                      *
.**********************************************************************
         AIF   ('&A'(1,1) EQ '(').R2AGPR  SEE IF THE ADDRESS IS IN A   *
                         GPR.
         MVC   0(&IGARECL,1),&DSP+&A  MOVE THE RECORD.
         AGO   .RFIN
.R2AGPR  MVC   0(&IGARECL,1),&DSP&A  MOVE THE RECORD IN.
         AGO   .RFIN
.**********************************************************************
.* IT IS AN (F,L) PAIR, NOW SEE IF THE SECOND ELEMENT IS A VALID L.   *
.**********************************************************************
.R2F1    AIF   (T'&R(2) NE 'N').R2LTYPE  SEE IF THE SECOND ELEMENT IS A*
                         SELF-DEFINING TERM.
&IGARECL SETA  (&R(2))   GET THE LENGTH OF THE (F,L) PAIR.
         AIF   (&IGARECL GT 256).R1LERR  SEE IF THE LENGTH OF THE FIELD*
                         IS MORE THAN 256.
         AIF   (NOT &XFER).RFIN  SEE IF THIS IS THE MOVE GENERATION    *
                         LOOP.
         MVC   0(&IGARECL,1),&R(1)  MOVE THE RECORD.
         AIF   (K'&A EQ 0).RFIN  SEE IF THE A PARAMETER IS CODED.
         MNOTE 4,'THE A PARAMETER IS REDUNDANT.'
         AGO   .RFIN     ALL DONE NOW, GO CHECK FOR THE MOVE GENERATION*
                         ITERATION.
.**********************************************************************
.* THE FOLLOWING ARE THE SUNDRY MNOTES FOR THE TWO ELEMENT CASE FOR   *
.* THE R PARAMETER.                                                   *
.**********************************************************************
.R2DERR  MNOTE 12,'DISPLACEMENT IN R PARAMETER CANNOT EXCEED 4095.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .RFIN
.R2DTYPE MNOTE 12,'THE DISPLACEMENT IN R MUST BE A SELF-DEFINING TERM.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON TO PREVENT THE MVC      *
                         GENERATION.
         AGO   .RFIN
.R2LTYPE MNOTE 12,'THE LENGTH IN R MUST BE A SELF-DEFINING TERM.'
&ERROR   SETB  1         SET THE ERROR FLAG ON.
         AGO   .RFIN
.**********************************************************************
.* THE R PARAMETER CONSISTS OF A LIST OF MIXED PAIRS OF FIELDS AND    *
.* DISPLACEMENT-LENGTH PAIRS. PICK OUT ALL THESE AND CHECK THEM FOR   *
.* VALIDITY, WHILE ADDING UP ALL THE LENGTHS OF THE INDIVIDUAL FIELDS *
.* FOR THE GSPACE MACRO-INSTRUCTION LATER. GENERATE THE MVC'S IF THIS *
.* IS THE SECOND TIME THROUGH THE LOOP.                               *
.**********************************************************************
.**********************************************************************
.* THIS IS THE SECTION TO PROCESS A MIXED LIST OF FIELD NAMES AND (D  *
.* ,L) PAIRS. PARSE THE OPERAND USING THE PARSE IN THE RPTDSECT       *
.* MACRO-INSTRUCTION, AND CHECK THE VARIABLE &IGAOKAY TO SEE IF THERE *
.* ARE NO SYNTAX ERRORS IN THE R PARAMETER.                           *
.**********************************************************************
.RMIXED  ANOP
      RPTDSECT SCAN=PARSE,LIST=&R  PARSE THE OPERAND.
         AIF   (&IGAOKAY).RMXOK  SEE IF THE PARSE DETECTED BAD SYNTAX.
         MNOTE 12,'INVALID SYNTAX IN THE R PARAMETER.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .RFIN     CAN'T DO ANYTHING WITH THIS.
.**********************************************************************
.* THE SYNTAX APPEARS TO BE OK, NOW START SCANNING OUT THE ATOMS ONE  *
.* AT A TIME, ANALYZING EACH ONE INDIVIDUALLY IN CONTEXT WITH THE ONES*
.* ON EITHER SIDE OF IT.                                              *
.**********************************************************************
.RMXOK RPTDSECT SCAN=ISCAN  INITIALIZE FOR SUBSEQUENT SCANNING OF      *
                         ATOMS.
.RMXMOR RPTDSECT SCAN=NEXT  GET THE CURSOR POSITIONED AT THE NEXT ATOM.
.RMXCHK  AIF   (&IGAX EQ 0).RFIN  SEE IF THERE ARE ANY MORE TO DO.
         AIF   (&IGALEVL EQ 2).RMXLVL2  SEE IF THIS ATOM IS ON LEVEL 2.
         AIF   (&IGALEVL LE 1).RMXL01  SEE IF THIS ATOM IS ON LEVEL 0  *
                         OR 1.
.**********************************************************************
.* THE CURRENT ATOM HAS TOO MANY LEVELS OF PARENTHESES AROUND IT, GIVE*
.* THE ERROR MESSAGE AND GO LOOK FOR THE NEX THING THAT CHANGES LEVEL *
.* 1 IN THE PATH VECTOR.                                              *
.**********************************************************************
&I       SETA  &IGAPATH(1)+1  SET &I TO THE CURRENT OPERAND NUMBER.
         MNOTE 12,'TOO MANY () LEVELS IN OPERAND &I OF R.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
.**********************************************************************
.* AN ERROR HAS BEEN DETECTED AND FLAGGED IN THE CURRENT OPERAND. SCAN*
.* OVER TO THE NEXT ATOM THAT IS NOT PART OF THE CURRENT ENTRY ON     *
.* LEVEL 1 IN THE PARAMETER.                                          *
.**********************************************************************
.SYNC    ANOP
&I       SETA  &IGAPATH(1)  SET &I TO THE INDEX OF THE OPERAND ON LEVEL*
                         1.
      RPTDSECT SCAN=NEXT  SET THE CURSOR TO THE NEXT ONE.
         AIF   (&IGAX EQ 0).RFIN  SEE IF THERE AREN'T ANY MORE.
         AIF   (&I EQ &IGAPATH(1)).SYNC  SEE IF IT IS STILL ON THE SAME*
                         ONE.
         AGO   .RMXCHK   FINALLY GOT THE NEXT ATOM, NOW GO CHECK IT FOR*
                         VALIDITY.
.**********************************************************************
.* THE CURRENT ATOM IS ON LEVEL 0 OR 1. THEREFORE IT SHOULD BE A VALID*
.* FIELD NAME; SEE IF IT IS.                                          *
.**********************************************************************
.RMXL01  ANOP
.RMX01   ANOP
&I       SETA  (1+&IGAPATH(1))  SET &I TO THE 1-ORIGIN INDEX OF THE    *
                         FIELD NAME ON LEVEL 1.
         AIF   ((T'&R(&I) NE 'M')AND(T'&R(&I) NE 'N')AND(T'&R(&I) NE 'O*
               ')AND(T'&R(&I) NE 'T')AND(T'&R(&I) NE 'W')AND(T'&R(&I) N*
               E '$')AND(T'&R(&I) NE 'U')).RMX01OK
         MNOTE 12,'OPERAND &I OF R DOES NOT HAVE THE PROPER TYPE ATTRIB*
               UTE.'
&ERROR   SETB  (1)       SET THE ERROR FLAG.
         AGO   .SYNC     GO POSITION THE CURSOR TO THE NEXT ONE.
.**********************************************************************
.* THE CURRENT ATOM LOOKS LIKE A VALIID FIELD NAME, GET ITS LENGTH    *
.* ATTRIBUTE AND SEE IF IT ACCEPTABLE.                                *
.**********************************************************************
.RMX01OK ANOP
&LNG     SETA  (L'&R(&I))  CAPTURE IT AS A NUMBER.
         AIF   (&LNG LE 256).RMX0LOK  SEE IF IT EXCEEDS 256.
         MNOTE 12,'THE LENGTH OF FIELD &I OF R EXCEEDS 256 BYTES.'
&ERROR   SETB  (1)       SET TEH ERROR FLAG.
         AGO   .SYNC     GO LOOK AT THE NEXT ONE.
.RMX0LOK ANOP
.**********************************************************************
.* NOW SEE IF THIS IS THE MOVE GENERATION ITERATION.                  *
.**********************************************************************
         AIF   (NOT &XFER).RX0M  GO IF THIS ISN'T THE MOVE GENERATION  *
                         ITERATION.
         MVC   &IGARECL.(&LNG,1),&R(&I)  MOVE THE FIELD.
.RX0M    ANOP
&IGARECL SETA  (&IGARECL+&LNG)  EKE THE CUMMULATIVE RECORD LENGTH.
         AGO   .RMXMOR   GO LOKK FOR THE NEXT ONE.
.**********************************************************************
.* THE CURRENT ATOM IS ON LEVEL 2. IT MUST THEREFORE BE THE FIRST     *
.* ELEMENT IN ONE OF THE CASES (F,L) OR (D,L).                        *
.* FIND OUT WHETHER THE CURRENT ATOM IS AN F OR A D.                  *
.**********************************************************************
.RMXLVL2 ANOP
&X       SETC  '0'       SET THIS FOR THE CASE WHERE THE DISPLACEMENT  *
                         IS AN EMPTY STRING.
         AIF   (&IGAZ EQ 0).RMGDSP  GO IF IT IS AN EMPTY STRING, WHICH *
                         MEANS A DISPLACEMENT OF 0.
.**********************************************************************
.* SEE IF ALL THE CHARACTERS IN THE CURRENT ATOM ARE DIGITS 0 THROUGH *
.* 9, WHICH WOULD MAKE IT A SELF-DEFINING DECIMAL TERM.               *
.**********************************************************************
&I       SETA  0         INITIALIZE THE INDEX OF THE CURRENT CHARACTER *
                         IN THE ATOM.
.RMCONT  AIF   (('&R'(&IGALEFT(&IGAZ)+&I,1) LT '0')OR('&R'(&IGALEFT(&IG*
               AZ)+&I,1) GT '9')).RMNOTD
&I       SETA  (&I+1)    EKE THE INDEX.
         AIF   (&I LT &IGARGHT(&IGAZ)).RMCONT  KEEP GOING UNTIL ALL    *
                         DIGITS HAVE BEEN EXAMINED.
         AIF   (&IGARGHT(&IGAZ) GT 4).RMXBADD  SEE IF THE DISPLACEMENT *
                         HAS TOO MANY BYTES IN IT.
&X       SETC  '&R'(&IGALEFT(&IGAZ),&I)  GET THE DISPLACEMENT AS A     *
                         NUMBER.
.RMGDSP  ANOP
&DSP     SETA  (&X)      GET THE NUMBER NOW.
         AIF   (&DSP GT 4095).RMXDBAD  SEE IF THE DISPLACEMENT IS TOO  *
                         BIG.
.**********************************************************************
.* THE CURRENT ATOM IS A VALID DISPLACEMENT OF A (D,L) PAIR, AND ITS  *
.* ARITHMETIC VALUE IS IN THE APPROPRIATE RANGE OF VALUES FOR A       *
.* DISPLACEMENT. ITS VALUE HAS BEEN CAPTURED IN &DSP. NOW LOOK FOR THE*
.* CORRESPONDING L OF THE PAIR.                                       *
.**********************************************************************
&I       SETA  (&IGAPATH(1))  SAVE THE CURRENT ATOM LEVEL 1 INDEX.
      RPTDSECT SCAN=NEXT  POSITION THE CURSOR TO THE NEXT ATOM.
         AIF   (&IGAX EQ 0).RMXNOLL  SEE IF THERE ISN'T ANY L FOR IT   *
                         BECAUSE THERE AREN'T ANY MORE ATOMS.
         AIF   (&IGAPATH(1) NE &I).RMXNOL  SEE IF THE NEXT ATOM IS PART*
                         OF A DIFFERENT ELEMENT ON LEVEL 1.
         AIF   (&IGALEVL NE 2).RMXPRN  SEE IF THERE ARE TOO MANY LEVELS*
                         OF PARENTHESES.
         AIF   (&IGAZ EQ 0).RMXLBAD  SEE IF THE L ATOM IS THE EMPTY    *
                         STRING.
.**********************************************************************
.* THERE IS A NEXT ATOM IN THE SAME PAIR, NOW CHECK IT TO SEE IF IT IS*
.* A SELF-DEFINING DECIMAL TERM.                                      *
.**********************************************************************
&I       SETA  0  INITIALIZE THE INDEX OF THE CURRENT BYTE IN THE ATOM.
.RMCNT1  AIF   (('&R'(&IGALEFT(&IGAZ)+&I,1) LT '0')OR('&R'(&IGALEFT(&IG*
               AZ)+&I,1) GT '9')).RMXBADL
&I       SETA  (&I+1)    EKE THE INDEX TO THE NEXT BYTE.
         AIF   (&I LT &IGARGHT(&IGAZ)).RMCNT1  KEEP LOOKING UNTIL ALL  *
                         THE BYTES ARE EXAMINED.
         AIF   (&IGARGHT(&IGAZ) GT 4).RMXLERR  SEE IF THE LENGTH IS    *
                         MORE THAN 4 CHARACTERS.
&X       SETC  '&R'(&IGALEFT(&IGAZ),&IGARGHT(&IGAZ))  GET THE LENGTH.
&LNG     SETA  (&X)      TURN IT INTO A NUMBER.
         AIF   (&LNG GT 256).RMXLERR  SEE IF IT IS TOO BIG TO DO WITH  *
                         AN MVC.
.**********************************************************************
.* THE DISPLACEMENT OF THE DISPLACEMENT-LENGTH PAIR IS AT &DSP, AND   *
.* THE LENGTH IS AT &LNG. CHECK THE A PARAMETER TO SEE IF IT IS CODED,*
.* BECAUSE IF IT ISN'T CODED THERE IS NO WAY TO FIND OUT WHERE THE    *
.* RECORD REALLY IS.                                                  *
.**********************************************************************
         AIF   (K'&A EQ 0).RMXAMT  SEE IF IT ISN'T THERE.
.* NOW GENERATE THE MOVE OF THE FIELD IF THIS IS THE MOVE GENERATION  *
.* ITERATION.                                                         *
         AIF   (NOT &XFER).RMOVED  SEE IF IT ISN'T THE MOVE GENERATION *
                         ITERATION.
&X       SETC  ''        SET IT UP FOR THE ADDRESS IN A REGISTER.
         AIF   ('&A'(1,1) EQ '(').RMAGPR  GO IF THE ADDRESS IS IN A    *
                         REGISTER.
&X       SETC  '+'       SET IT UP FOR THE CASE EHERE THE ADDRESS IS   *
                         SUPPLIED IN THE FORM OF A LABEL.
.RMAGPR  MVC   &IGARECL.(&LNG,1),&DSP&X&A  MOVE SUBFIELD.
.RMOVED  ANOP
&IGARECL SETA  (&IGARECL+&LNG)  EKE THE CUMMULATIVE RECORD LENGTH.
.**********************************************************************
.* NOW SET THE CURSOR TO THE NEXT ATOM, AND SEE IF THE FIRST ELEMENT  *
.* IS PART OF THE SAME ELEMENT ON LEVEL 1 AS THE LAST (D,L) PAIR.     *
.**********************************************************************
&I       SETA  &IGAPATH(1)  PRESERVE THE CURRENT LEVEL 0 INDEX.
      RPTDSECT SCAN=NEXT  POSITION THE CURSOR TO THE NEXT ATOM.
         AIF   (&IGAX EQ 0).RFIN  GO IF THERE ISN'T ANY NEXT ATOM.
         AIF   (&I EQ &IGAPATH(1)).RMXSAME  SEE IF THE LEVEL 1 ELEMENT *
                         IN THE PATH VECTOR DIDN'T CHANGE.
         AGO   .RMXCHK   GO CHECK THE NEXT ATOM, IT ISN'T PART OF THE  *
                         LAST TWO.
.**********************************************************************
.* THE FOLLOWING ARE SUNDRY MNOTES FROM THE PROCESSING OF A LIST OF   *
.* MIXED PAIRS WHERE THE PAIRS ARE OF THE FORM (D,L).                 *
.**********************************************************************
.RMXSAME ANOP
&I       SETA  (&IGAPATH(1)+1)  SET &I TO THE CURRENT OPERAND #.
         MNOTE 12,'TOO MANY ELEMENTS IN SUBLIST OPERAND &I IN R.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC     GO LOOK FOR THE NEXT ONE.
.RMXAMT  ANOP
&I       SETA  (1+&IGAPATH(1))  GET THE CURRENT OPERAND NUMBER.
         MNOTE 12,'THE A PARAMETER MUST BE CODED TO USE A (D,L) PAIR FO*
               R R(&I).'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC     GO LOOK FOR THE NEXT ONE.
.RMXLERR ANOP
&I       SETA  (&IGAPATH(1)+1)  GET THE CURRENT OPERAND NUMBER.
         MNOTE 12,'THE LENGTH OF THE FIELD DEFINED BY R(&I) EXCEEDS 256*
                BYTES.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC     GO LOOK AT THE NEXT ONE.
.RMXBADL ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'THE LENGTH FOR R(&I) MUST BE A SELF-DEFINING DECIMAL*
                NUMBER.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RMXLBAD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'THE LENGTH FOR R(&I) CANNOT BE THE EMPTY STRING.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RMXNOL  ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'LENGTH OF (D,L) PAIR MISSING IN R(&I).'
&ERROR   SETB  (1)
         AGO   .RMXCHK   GO CHECK THE CURRENT ATOM FOR VALIDITY.
.RMXNOLL ANOP
         MNOTE 12,'LENGTH OF LAST (D,L) PAIR IN R IS MISSING.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .RFIN
.RMXPRN  ANOP
&I       SETA  (&IGAPATH(1)+1)
         MNOTE 12,'TOO MANY () LEVELS IN R(&I).'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC
.RMXBADD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'DISPLACEMENT IN R(&I) EXCEEDS 4 DIGITS.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RMXDBAD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'DISPLACEMENT IN R(&I) EXCEEDS 4095.'
&ERROR   SETB  (1)
         AGO   .SYNC
.**********************************************************************
.* THE CURRENT ATOM IS AN F OF A (F,L) PAIR.                          *
.**********************************************************************
.RMNOTD  AIF   (&IGARGHT(&IGAZ) LE 8).RMXBIGF  SEE IF THE STRING IS    *
                         BIGGER THAN 8 CHARACTERS.
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'FIELD NAME IN R(&I) IS BIGGER THAN 8 CHARACTERS.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RMXBIGF ANOP
&FIELD   SETC  '&R'(&IGALEFT(&IGAZ),&IGARGHT(&IGAZ))  GET THE FIELD    *
                         NAME.
.* NOW TRY TO GET THE L OF THE (F,L) PAIR.                            *
&I       SETA  (&IGAPATH(1))  PRESERVE THE CURRENT LEVEL 1 INDEX.
      RPTDSECT SCAN=NEXT  POSITION THE CURSOR TO THE NEXT ATOM.
         AIF   (&IGAX EQ 0).RFLNOL  SEE IF THERE IS NO LENGTH BECAUSE  *
                         THERE ISN'T ANY NEXT ATOM.
         AIF   (&IGAPATH(1) NE &I).RFNOL  SEE IF THE NEXT ATOM IS NOT  *
                         PART OF THE SAME PAIR.
         AIF   (&IGALEVL NE 2).RFNOLL  SEE IF THE NEXT ATOM HAS TOO    *
                         MANY () LEVELS.
         AIF   (&IGAZ EQ 0).RFLMT  SEE IF THE LENGTH ATOM IS THE EMPTY *
                         STRING.
.**********************************************************************
.* THE CURRENT ATOM IS INDEED THE SECOND ELEMENT OF A (F,X) PAIR. NOW *
.* LET'S SEE IF X IS A VALID L.                                       *
.**********************************************************************
         AIF   (&IGARGHT(&IGAZ) GT 3).RFLLBAD  SEE IF THE LENGTH ATOM  *
                         IS MORE THAN 3 DIGITS.
&I       SETA  0         INITIALIZE THE INDEX OF THE CURRENT BYTE.
.RMXCNT2 AIF   (('&R'(&IGALEFT(&IGAZ)+&I,1) LT '0')OR('&R'(&IGALEFT(&IG*
               AZ)+&I,1) GT '9')).RFLBAD
&I       SETA  (&I+1)    STEP OVER TO THE NEXT DIGIT.
         AIF   (&I LT &IGARGHT(&IGAZ)).RMXCNT2  KEEP GOING UNTIL ALL   *
                         THE DIGITS HAVE BEEN SCANNED.
&X       SETC  '&R'(&IGALEFT(&IGAZ),&IGARGHT(&IGAZ))  EXTRACT THE      *
                         LENGTH.
&LNG     SETA  (&X)      CONVERT IT TO A NUMBER.
         AIF   (&LNG GT 256).RFBADL  SEE IF THE LENGTH EXCEEDS 256     *
                         BYTES.
.**********************************************************************
.* IT LOOKS LIKE A VALID (F,L) PAIR; GENERATE THE MOVE IF THIS IS THE *
.* MOVE GENERATION ITERATION.                                         *
.**********************************************************************
         AIF   (NOT &XFER).RMOVED  GO IF IT IS NOT THE MOVE ITERATION.
         MVC   &IGARECL.(&LNG,1),&FIELD  MOVE SUBFIELD.
         AGO   .RMOVED   MERGE WITH THE COMMON PATH.
.**********************************************************************
.* THE FOLLOWING ARE SUNDRY MNOTES FOR THE (F,L) CASE IN A MIXED LIST.*
.**********************************************************************
.RFBADL  ANOP
&I       SETA  (&IGAPATH(1)+1)
         MNOTE 12,'LENGTH IN OPERAND &I OF R EXCEEDS 256 BYTES.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RFLBAD  ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'THE LENGTH IN OPERAND R(&I) IS NOT A SELF-DEFINING D*
               ECIMAL NUMBER.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RFLLBAD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'LENGTH IN OPERAND R(&I) IS MORE THAN 3 DIGITS.'
&ERROR   SETB  (1)
         AGO   .SYNC
.RFLMT   ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'LENGTH IN OPERAND &I OF R CANNOT BE THE EMPTY STRING*
               .'
&ERROR   SETB  (1)
         AGO   .SYNC
.RFNOL   ANOP
         MNOTE 12,'LENGTH OF (F,L) PAIR IN OPERAND &I OF R IS MISSING.'
&ERROR   SETB  (1)
         AGO   .RMXCHK
.RFNOLL  ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'TOO MANY () LEVELS IN R(&I).'
         AGO   .SYNC
.RFLNOL  MNOTE 12,'LENGTH OF LAST (FIELD,LENGTH) PAIR IN R IS MISSING.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON TO PREVENT THE MOVES.
         AGO   .RFIN
.**********************************************************************
.RFIN    ANOP
         AIF   ((&XFER)OR(&ERROR)).MV#FIN  SEE IF THE MOVE GENERATION  *
                         LOOP MUST BE DONE THIS TIME.
&XFER    SETB  (1)       SET IT ON SO THE MOVES ONLY GET GENERATED ONCE
&RC      SETC  'C'
         AIF   (K'&C EQ 0).GSPACE  SEE IF THE CONDITIONAL PARAMETER HAS*
                         BEEN LEFT OUT.
         AIF  ((('&C' EQ 'C')OR('&C'(1,1) EQ 'Y')OR('&C'(1,1) EQ '1')))*
               .GSPACE   SEE IF IT IS A CONDITIONAL REQUEST.
&RC      SETC  ''        IT IS AN UNCONDITIONAL REQUEST.
.GSPACE  ANOP
        GSPACE R&RC,LV=&IGARECL,S=&S,SP=&SP  GET SPACE TO PUT RECORD.
         AIF   ('&RC' NE 'C').SKIPBNZ  SEE IF THE REQUEST IS COND.
         BNZ   SETR&SYSNDX BR IF ALLOCATION FAILED.
.SKIPBNZ AGO   .LOOPAIR  GO GENERATE THE MOVE OF THE RECORD.
.MV#FIN  ANOP
         LR    15,1      PUT THE RECORD ADDRESS IN R15.
         AIF   (NOT &R1SAVED).R1ISOK  SEE IF R1 WAS SAVED THROUGH THE  *
                         GSPACE OPERATION.
         L     1,((4*1)+20-64*((2+1)/16))(,13)  RESTORE R1.
.R1ISOK  AGO   .CHK#     NOW GO CHECK THE # PARAMETER.
.**********************************************************************
.* THERE IS NO NEED TO ALLOCATE A SPACE FOR THE RECORD VIA THE GSPACE *
.* MACRO-INSTRUCTION. GET THE ADDRESS OF THE RECORD IN REGISTER 15.   *
.**********************************************************************
.CHKA    AIF   (K'&A EQ 0).ASARG  SEE IF THE ADDRESS IS OMITTED; IF IT *
                         IS GET IT OUT OF THE SEARCH ARGUMENT.
         AIF   ('&A'(1,1) EQ '(').AGPR  SEE IF THE ADDRESS IS IN A GPR.
         LA    15,&A     ADDRESS OF THE RECORD TO INSERT.
         AGO   .CHKAEND  GO TO THE END OF CHECKING THE A PARAMETER.
.AGPR    AIF   ('&A' EQ '(15)').CHKAEND  SEE IF IT IS ALREADY IN R15.
         LR    15,&A(1)  INSERT ADDRESS.
         AGO   .CHKAEND  ALL DONE NOW EXIT FROM CHECKING THE A         *
                         PARAMETER.
.ASARG   ANOP
         MNOTE 12,'EITHER A OR R MUST BE CODED TO SPECIFY THE INS.ARG.'
.CHKAEND ANOP
.**********************************************************************
.* CHECK THE # PARAMETER TO SEE IF A DIFFERENT ADDRESS THAN THE ONE   *
.* FURNISHED BY THE A PARAMETER IS TO BEBUSED BY THE INSERT ROUTINE.  *
.**********************************************************************
.CHK#    AIF   (K'&# EQ 0).#ZORRO  SEE IF THE # PARAMETER IS CODED.
         AIF   ('&#'(1,1) EQ '(').#GPR  SEE IF THE # PARAMETER IS IN A *
                         GPR.
         L     0,&#      LOAD IN THE ERSATZ ADDRESS.
         AGO   .#FIN     ALL DONE WITH THE ERSATZ ADDRESS.
.#GPR    DC    ((30-&#(1))/16)AL1(X'18',&#(1))  LOAD THE ERSATZ ADDRESS*
                         IN GPR 0 UNLESS IT IS ALREADY IN GPR 0.
         AGO   .#FIN     ALL DONE WITH THE ERSATZ ADDRESS.
.#ZORRO  LR    0,15  # NOT CODED.
.#FIN    ANOP
.**********************************************************************
.* SEE IF THE REQUEST IS CONDITIONAL OR UNCONDITIONAL, AND CALL THE   *
.* APPROPRIATE ROUTINE IN THE MODULE IGARPT01.                        *
.**********************************************************************
         AIF   (K'&TREE EQ 0).INGPR1  SEE IF THE TREE ADDRESS IS       *
                         SPECIFIED.
         AIF   ('&TREE'(1,1) EQ '(').RPTGPR  SEE IF THE TREE ADDRESS IS*
                         IN A GPR.
         L     1,&TREE   LOAD THE ADDRESS OF THE RPT.
         AGO   .R1LOAD   SKIP AROUND THE GPR CASE.
.RPTGPR  LR    1,&TREE(1)  GET THE RPT ADDRESS.
.R1LOAD  ANOP
.INGPR1  ANOP
         L     14,(&IGABLST+&IGAINS)(,1)  ADDRESS OF INSERT ROUTINE.
.**********************************************************************
.* NOW GENERATE THE LINKAGE TO THE INSERT ROUTINE IN THE MODULE       *
.* IGARPT01.                                                          *
.**********************************************************************
&REQUEST SETB  (1)       SET THE REQUEST MODE TO CONDITIONAL.
         AIF   (K'&C EQ 0).LINKC  SEE IF IT IS A CONDITIONAL REQUEST.
         AIF (('&C'(1,1) EQ 'Y')OR('&C' EQ '1')OR('&C' EQ 'C')).LINKC  *
                         SEE IF IT IS A CONDITIONAL REQUEST.
&REQUEST SETB  (0)       SET THE REQUEST MODE TO UNCONDITIONAL.
         BALR  14,14     INDICATE UNCONDITIONAL TYPE 8 INSERT.
         AGO   .LINKFIN  ALL DONE WITH THE LINKAGE.
.LINKC   BAL   14,0(,14)  INDICATE CONDITIONAL INSERT.
.LINKFIN ANOP
         AIF   (K'&R EQ 0).FIN  SEE IF THE AREA WAS ALLOCATED VIA THE  *
                         GSPACE MACRO-INSTRUCTION.
         AIF   (NOT &REQUEST).FIN  SEE IF IT WAS AN UNCONDITIONAL      *
                         REQUEST.
&FINEQU  SETB  (1)       SET THE BIT ON TO GENERATE THE EQUATE AT THE  *
                         END OF THE MACRO EXECUTION.
         BC    10,FIN&SYSNDX  BRANCH IF THE INSERT WAS SUCCESSFUL.
         L     1,X'10'(,13)  PUT THE ADDRESS IN R1 TO FREE IT UP.
        FSPACE LV=&IGARECL,A=(1),SP=&SP,S=&S
SETR&SYSNDX LA 15,1      SET THE RETURN CODE NEGATIVE.
         LNR   15,15     SET THE CONDITION CODE ALSO.
.FIN     AIF   (NOT &FINEQU).END  SEE IF THE EQUATE MUST BE GENERATED.
FIN&SYSNDX EQU *         LABEL FOR THE BRANCH TO BRANCH TO.
.END     ANOP
         MEND
./ ADD NAME=IOBLOCKS
*        %GOTO PLSIOBK;           /* BILINGUAL HEADER
         MACRO
         IOBLOCKS
*
*        I/O CONTROL BLOCKS  (ECB,TECB ADDRESS,IOB,DCB)
*
*        VERSION 10.0 (TCAM,TOTE)                              @Y17XAXU
*
IOBLOCKS DSECT
*
*        EVENT CONTROL BLOCK
*
ECBOLT   DS    F .                EVENT CONTROL BLOCK
*
*        UNIT CONTROL BLOCK ADDRESS
*
OLTUCBA  DS    AL2 .              UCB ADDRESS
*
*        TERMINAL NAME TABLE ENTRY OFFSET
*
OLTTCOFF DS    H .                C. TNT ENTRY OFFSET          @Y17XAXU
OLTTNOFF DS    H .                REAL TNT ENTRY OFFSET        @Y17XAXU
OLTTRSID DS    H                  NETWORK ADDRESS              @Y17XAXU
*
*        TCAM RELATIVE LINE NUMBER
*
OLTTCRLN DS    C .                RLN
OLTLCBA  DS    AL3 .              LCB ADDRESS OF 3705          @Y17XAXU
*
OLTTCTNT DS    F .                C. TNT ENTRY ADDRESS         @Y17XAXU
OLTRLTNT DS    A                  REAL TNT ENTRY ADDRESS       @Y17XAXU
OLTTDLN  DS    H .                LENGTH OF TD TTE AREA        @Y17XAXU
OLTFLAG1 DS    C .                TEST DEVICE FLAG BYTE        @Y17XAXU
OLTTNTAS EQU   X'80'              TOTE TNT ENTRY ASSIGNED      @Y17XAXU
OLTPRSC  EQU   X'20'              ON=PRI TD, OFF=SEC TD        @Y17XAXU
OLTUNRD  EQU   X'10'              ON=UNREAD DATA               @Y17XAXU
*                                 OFF=NO UNREAD DATA           @Y17XAXU
OLTEX    EQU   X'08'              EXCEPTION RESPONSE           @Y17XAXU
OLTFME   EQU   X'04'              DEFINITE RESPONSE            @Y17XAXU
OLTEN    EQU   X'02'              ON=EXPEDITED,OFF=NORMAL      @Y17XAXU
         DS    C                  RESERVED                     @Y17XAXU
OLTQCBA  DS    A                  QCB ADDRESS                    S22024
OLTCCWA  DS    A                  ADDRESS OF READ CCW CHAIN      S22024
OLTBUFA  DS    A                  ADDRESS OF BUFFER CONTAINING   S22024
*                                 READ DATA                      S22024
*
*        DATA BLOCKING FIELD
*
OLTDTBUF DS    A .                RESPONSE BUFFER ADDRESS
OLTDTCNT DS    H .                RESPONSE BUFFER SIZE
OLTFLAG2 DS    BL1 .              DATA BLOCKING SIZE
*
OLTPTIMD EQU   X'80' .            POST WAITIO IMMEDIATELY
OLTMVDAT EQU   X'40' .            MOVE RESPONSE TO BUFFER
OLTLV3IO EQU   X'20' .            LAST EXIO TO DEV WAS LEVEL 3
OLTSIOAC EQU   X'10' .            EXIO TO DEVICE IS OUTSTANDING
*
         DS    CL1                RESERVED                     @ZM47554
OLTSN    DS    0F                 DEVICE SEQ NUMBER FIELD      @ZM47554
         DS    CL2                FLAGS                        @ZM47554
OLTSEQ   DS    H                  SEQUENCE NUMBER (FROM SNA TH)@ZM47554
*
*        TEST EVENT CONTROL BLOCK ADDRESS
*
TECBADDR DS    F .                ADDRESS OF TECB
*
*        I/O BLOCK
*
IOB      DS    0F
*
IOBFLG1  DS    CL1                FIRST FLAG BYTE
IOBFLG2  DS    CL1                SECOND FLAG BYTE
IOBSNS   DS    CL2                FIRST TWO SENSE BYTES
IOBECBAD DS    0F                 ECB ADDRESS
IOBECBCD DS    CL1                ECB CODE
         DS    CL3
IOBCSW   DS    0F                 CHANNEL STATUS WORD
IOBFLG3  DS    CL1                THIRD FLAG BYTE
IOBCSW1  DS    CL7                LAST 7 BYTES OF LAST CSW.
IOBCCWAD DS    0F                 CCW ADDRESS
IOBSIOCD DS    CL1                START I/O CODE
         DS    CL3
IOBDCBAD DS    F                  DCB ADDRESS
IOBREPM  DS    CL1                REPOSITION MODIFIER
IOBRSTAD DS    CL3                RESTART ADDRESS
IOBINCR  DS    CL2                BLOCK COUNT INCREMENT
IOBERRCT DS    CL2                ERROR COUNTS
IOBUCBX  DS    CL1                UCB INDEX                      S99528
IOBWORK  DS    CL3                WORK AREA                      S99528
IOBFLG4  DS    CL1                FLAGS FOR TOTE & ITS APPENDAGE S99528
IOBATTN  EQU   X'80'              ATTENTION INTERRUPT EXPECTED   S99528
IOBCSWV  EQU   X'40'              CSW SAVE AREA VALID            S99528
IOBSEC   EQU   X'20'              SECONDARY IOB                  S99528
IOBPRI   EQU   X'10'              PRIMARY IOB                    S99528
IOBATNE  EQU   X'08'              ERROR ON CE/DE BEFORE ATTN     S99528
IOBCSWNV EQU   X'04'              CSW AREA TWO INVALID           S99528
IOBCSWS  DS    CL7                CSW SAVE AREA
*
*        DATA EXTENT BLOCK ADDRESS
*
         ORG   IOB+44
*
*        DATA CONTROL BLOCK
*
DCB      EQU   *
*
DCBDCDEP DS    5F                 DEVICE DEPENDENT FIELD
DCBBUFNO DS    C                  NUMBER OF BUFFERS IN DATA SET
DCBBUFCB DS    CL3                BUFFER POOL CONTROL BLOCK ADDRESS
DCBBUFL  DS    H                  BUFFER LENGTH
DCBDSORG DS    H                  DATA SET ORGANIZATION
DCBIOBAD DS    F                  I/O BLOCK ADDRESS
DCBBGFEK DS    C                  BUFFER TECNIQUE, BUFFER ALIGNMENT
DCBEODAD DS    CL3                END OF DATA SET ROUTINE
DCBRECFM DS    C                  RECORD FORMAT
DCBEXLST DS    CL3                EXIT LIST
DCBTIOT  DS    H
DCBMACRF DS    H                  MACRO INSTRUCTION REFERENCE
DCBIFLGS DS    C                  I/O SUPERVISOR FLAGS
DCBDEBAD DS    CL3                DATA EXTENT BLOCK ADDRESS
OLTDEBA  EQU   DCB+44             DEB ADDRESS
DCBOFLGS DS    C                  OPEN FLAGS
         DS    CL3                RESERVED
DCBOPTCD DS    CL1                OPTION CODES
         DS    CL7                RESERVED
DCBEOEA  DS    H                  END OF EXTENT APPENDAGE
DCBPCIA  DS    H                  PROGRAM CONTROLLED INTERRUPT APPENDAG
DCBSIOA  DS    H                  START I/O APPENDAGE
DCBCENDA DS    H                  CHANNEL END APPENDAGE
DCBXENDA DS    H                  ABNORMAL END APPENDAGE
         DS    H                  RESERVED
         MEND                                                @Y17XAXU*/
*%PLSIOBK: ;
*DECLARE
*  1 IOBLOCKS BDY(WORD) BASED,    /*                         @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      I/O CONTROL BLOCKS  (ECB,TECB ADDRESS,IOB,DCB)      @Y17XAXU*/
*/*                 VERSION 10.0 (TCAM,TOTE)                 @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      EVENT CONTROL BLOCK                                 @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 ECBOLT PTR(31),             /* EVENT CONTROL BLOCK     @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      UNIT CONTROL BLOCK ADDRESS                          @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 OLTUCBA FIXED(16),          /* UCB ADDRESS             @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 OLTTCOFF FIXED(16),         /* C. TNT ENTRY OFFSET     @Y17XAXU*/
*   2 OLTTNOFF FIXED(16),         /* REAL TNT OFFSET         @Y17XAXU*/
*   2 OLTTRSID FIXED(16),         /* NETWORK ADDRESS         @Y17XAXU*/
*   2 OLTTCRLN CHAR(1),           /* RLN                     @Y17XAXU*/
*   2 OLTLCBA PTR(24),            /* LCB ADDRESS OF 3705     @Y17XAXU*/
*   2 OLTTCTNT PTR(31),           /* C. TNT ENTRY ADDRESS    @Y17XAXU*/
*   2 OLTRLTNT PTR(31),           /* REAL TNT ENTRY ADDRESS  @Y17XAXU*/
*   2 OLTTDLN FIXED(15),          /* LENGTH OF TD TTE AREA   @Y17XAXU*/
*   2 OLTFLAG1 BIT(8),            /* TEST DEVICE FLAG BYTE 1 @Y17XAXU*/
*    3 OLTTNTAS BIT(1),           /* TD TNT ENTRY ASSIGNED   @Y17XAXU*/
*    3 * BIT(1),                  /* RESERVED                @Y17XAXU*/
*    3 OLTPRSC BIT(1),            /* ON=PRI TD,OFF=SEC TD    @Y17XAXU*/
*    3 OLTUNRD BIT(1),            /* ON=UNREAD DATA          @Y17XAUU*/
*                                 /* OFF=NO UNREAD DATA      @Y17XAUU*/
*    3 OLTEX BIT(1),              /* EXCEPTION RESPONSE      @Y17XAXU*/
*    3 OLTFME BIT(1),             /* DEFINITE RESPONSE       @Y17XAXU*/
*    3 OLTEN BIT(1),              /* ON=EXPEDITED            @Y17XAXU*/
*                                 /* OFF=NORMAL              @Y17XAXU*/
*    3 * BIT(1),                  /* UNUSED                  @Y17XAXU*/
*   2 * CHAR(1),                  /* RESERVED                @Y17XAXU*/
*   2 OLTQCBA PTR(31),            /* QCB ADDRESS             @Y17XAXU*/
*   2 OLTCCWA PTR(31),            /* READ CCW CHAIN ADDRESS  @Y17XAXU*/
*   2 OLTBUFA PTR(31),            /* ADDRESS OF BUFFER       @Y17XAXU*/
*                                 /* CONTAINING READ DATA    @Y17XAXU*/
*   2 OLTDTBUF PTR(31),           /* RESPONSE BUFFER ADDRESS @Y17XAXU*/
*   2 OLTDTCNT FIXED(15),         /* RESPONSE BUFFER SIZE    @Y17XAXU*/
*   2 OLTFLAG2 BIT(8),            /* TEST DEVICE FLAG BYTE 2 @Y17XAXU*/
*    3 OLTPTIMD BIT(1),           /* POST WAITI/0 IMMEDIATELY@Y17XAXU*/
*    3 OLTMVDAT BIT(1),           /* MOVE RESPONSE TO BUFFER @Y17XAXU*/
*    3 OLTLV3IO BIT(1),           /* LAST EXIO WAS LEVEL 3   @Y17XAXU*/
*    3 OLTSIOAC BIT(1),           /* EXIO TO DEVICE IS       @Y17XAXU*/
*                                 /* OUTSTANDING             @Y17XAXU*/
*    3 * BIT(4),                  /* RESERVED                @Y17XAXU*/
*   2 * CHAR(1),                  /* RESERVED                @Y17XAXU*/
*   2 OLTSN CHAR(4) BDY(WORD),    /* DEVICE SEQ NUMBER FIELD @ZM47554*/
*     3 * CHAR(2),                /* FLAGS                   @ZM47554*/
*     3 OLTSEQ FIXED(16),         /* SEQUENCE NUMBER (FROM SNA TH    */
*                                   /*                       @ZM47554*/
*   2 TECBADDR PTR(31),           /* TECB ADDRESS            @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      I/O BLOCK                                           @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 IOB BDY(WORD),              /* IOB CONTROL BLOCK       @Y17XAXU*/
*    3 IOBFLG1 CHAR(1),           /* FIRST FLAG BYTE         @Y17XAXU*/
*    3 IOBFLG2 CHAR(1),           /* SECOND FLAG BYTE        @Y17XAXU*/
*    3 IOBSNS CHAR(2),            /* FIRST TWO SENSE BYTE    @Y17XAXU*/
*    3 IOBECBAD BDY(WORD),        /* ECB ADDRESS             @Y17XAXU*/
*     4 IOBECBCD CHAR(1),         /* ECB CODE                @Y17XAXU*/
*     4 * CHAR(3),                /* RESERVED                @Y17XAXU*/
*    3 IOBCSW BDY(WORD),          /* CHANNEL STATUS WORD     @Y17XAXU*/
*     4 IOBFLG3 CHAR(1),          /* THIRD FLAG BYTE         @Y17XAXU*/
*     4 IOBCSW1 CHAR(7),          /* LAST 7 BYTES OF LAST CSW@Y17XAXU*/
*    3 IOBCCWAD BDY(WORD),        /* CHANNEL COMMAND WORD    @Y17XAXU*/
*     4 IOBSIOCD CHAR(1),         /* START I/O CODE          @Y17XAXU*/
*     4 * CHAR(3),                /* LAST 3 BYTES OF CCW     @Y17XAXU*/
*    3 IOBDCBAD PTR(31),          /* DCB ADDRESS             @Y17XAXU*/
*    3 IOBREPM CHAR(1),           /* REPOSITION MODIFIER     @Y17XAXU*/
*    3 IOBRSTAD CHAR(3),          /* RESTART ADDRESS         @Y17XAXU*/
*    3 IOBINCR CHAR(2),           /* BLOCK COUNT INCREMENT   @Y17XAXU*/
*    3 IOBERRCT CHAR(2),          /* ERROR COUNT             @Y17XAXU*/
*    3 IOBUCBX CHAR(1),           /* UCB INDEX               @Y17XAXU*/
*    3 IOBWORK CHAR(3),           /* WORK AREA               @Y17XAXU*/
*    3 IOBFLG4 BIT(8),            /* FLAGS FOR TOTE AND ITS  @Y17XAXU*/
*                                 /* APPENDAGE               @Y17XAXU*/
*     4 IOBATTN BIT(1),           /* ATTENTION INTERRUPT     @Y17XAXU*/
*                                 /* EXPECTED                @Y17XAXU*/
*     4 IOBCSWV BIT(1),           /* CSW SAVE AREA VALID     @Y17XAXU*/
*     4 IOBSEC BIT(1),            /* SECONDARY IOB           @Y17XAXU*/
*     4 IOBPRI BIT(1),            /* PRIMARY IOB             @Y17XAXU*/
*     4 IOBATNE BIT(1),           /* ERROR ON CE/DE BEFORE   @Y17XAXU*/
*                                 /* ATTENTION               @Y17XAXU*/
*     4 IOBCSWNV BIT(1),          /* CSW AREA TWO INVALID    @Y17XAXU*/
*     4 * BIT(2),                 /* RESERVED                @Y17XAXU*/
*    3 IOBCSWS CHAR(7),           /* CSW SAVE AREA           @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      DATA EXTENT BLOCK                                   @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 DCB BDY(WORD),              /* DATA CONTROL BLOCK      @Y17XAXU*/
*    3 DCBDCDEP(5) PTR(31),       /* DEVICE DEPENDENT FIELD  @Y17XAXU*/
*    3 DCBBUFNO CHAR(1),          /* NUMBER OF BUFFERS IN    @Y17XAXU*/
*                                 /* DATA SET                @Y17XAXU*/
*    3 DCBBUFCB CHAR(3),          /* BUFFER POOL CONTROL BLOCK       */
*                                 /* ADDRESS                 @Y17XAXU*/
*    3 DCBBUFL FIXED(15),         /* BUFFER LENGTH           @Y17XAXU*/
*    3 DCBDSORG CHAR(2),          /* DATA SET ORGANIZATION   @Y17XAXU*/
*    3 DCBIOBAD PTR(31),          /* I/O BLOCK ADDRESS       @Y17XAXU*/
*    3 DCBBGFEK CHAR(1),          /* BUFFER TECHNIQUE        @Y17XAXU*/
*                                 /* BUFFER ALLIGNMENT       @Y17XAXU*/
*    3 DCBEODAD PTR(24),          /* END OF DATASET ROUTINE  @Y17XAXU*/
*                                 /* ADDRESS                 @Y17XAXU*/
*    3 DCBRECFM CHAR(1),          /* RECORD FORMAT           @Y17XAXU*/
*    3 DCBEXLST PTR(24),          /* EXIT LIST               @Y17XAXU*/
*    3 DCBTIOT FIXED(15),         /* OFFSET FROM TIOT ORIGIN @Y17XAXU*/
*                                 /* TO TIOELNGH FIELD IN    @Y17XAXU*/
*                                 /* TIOT ENTRY FOR DD       @Y17XAXU*/
*                                 /* STATEMENT ASSOCIATED    @Y17XAXU*/
*                                 /* WITH THIS DCB           @Y17XAXU*/
*    3 DCBMACFR CHAR(2),          /* MACRO INSTRUCTION REF   @Y17XAXU*/
*    3 OLTDEBA PTR(31),           /* ADDRESS OF ASSOCIATED   @Y17XAXU*/
*                                 /* DEB                     @Y17XAXU*/
*     4 DCBIFLGS CHAR(1),         /* I/O SUPERVISOR FLAGS    @Y17XAXU*/
*     4 DCBDEBAD PTR(24) BDY(BYTE), /* ADDRESS OF ASSOCIATED @Y17XAXU*/
*                                 /* DEB                     @Y17XAXU*/
*    3 DCBOFLGS CHAR(1),          /* OPEN FLAGS              @Y17XAXU*/
*    3 * CHAR(3),                 /* RESERVED                @Y17XAXU*/
*    3 DCBOPTCD CHAR(1),          /* OPTION CODE             @Y17XAXU*/
*    3 * CHAR(7),                 /* RESERVED                @Y17XAXU*/
*    3 DCBEOEA FIXED(15),         /* END OF EXTENT APPENDAGE @Y17XAXU*/
*    3 DCBPCIA FIXED(15),         /* PCI APPENDAGE           @Y17XAXU*/
*    3 DCBSIOA FIXED(15),         /* SIO I/O APPENDAGE       @Y17XAXU*/
*    3 DCBCENDA FIXED(15),        /* CHANNEL END APPENDAGE   @Y17XAXU*/
*    3 DCBXENDA FIXED(15),        /* ABNORMAL END APPENDAGE  @Y17XAXU*/
*    3 * CHAR(2);                 /* RESERVED                @Y17XAXU*/
*                                 /*                         @Y17XAXU*/
*%IOBKEND: ;                      /* END OF IOBLOCKS         @Y17XAXU*/
./ ADD NAME=IOGENER
         MACRO
&NAME    IOGENER  &GEN=
* ****************** MICROFICHE FLAGS *********************** SUPT CODE
* A079500-081500                                                 S22027
* A269510-269560,274050-274450,298975-298995,356570-356920       S99228
* A363070-363420,443210-443280,656050-656400,749600-749900       S99228
* A788000-790000,786840-796960,823600-823700,902330-902450,907700S99228
* A175200,322560,322680-322920,810000-812800                     S22029
* C165800-165850,272000-272300                                   S99228
* D162000                                                        S99228
* A175200,322560,322680-322860,808560,808680-808860              S22029
* C172000-173000                                                 S22029
* D176000                                                        S22029
* A272430-273034,653946-653994,744502-744512,                    S22028
* A901020-901160,907600,933800                                   S22028
* C273035-273036,648500                                          S22028
* D298512,298520-298929                                          S22028
* A259920                                                        A44890
* C061500,259530                                                 A44890
* A759000                                                         M1582
* C061500                                                         M1582
* A818000                                                         M6293
* C061500,805700-809000                                           M6293
* A165700,219200,378500,385500,402500,450700                     S21101
* C061500,194500-197500                                          S21101
* D157500,404000                                                 S21101
* A161500                                                         M5953
* C061500                                                         M5953
* C061500,086500                                                 A41024
* A073500,096200,100500-101000,105500-106500,444000,921500       A41027
* C061500,082500,084200,085500,091000,095000,097500,099000,      A41027
* D076000,079500-081500,107000                                   A41027
* A875000,876500,934500                                          A50191
* A280700,286000,290500,460500,744980,460640,460850              A48245
* C280700,727700                                                 A48245
* D459700,779700,585700                                          A48245
* C061500,106500-106600                                          A48273
* A442001-442005,473520-473900,934550                            A48276
* D460570-460920                                                 S22026
* A092080-092400,095540-095660,143520-143880,469550-469950       S22026
* A623060-623420,907580-907900,934200,949200                     S22026
* A312900,764500                                                 S22025
* C311500,767500,769500                                          S22025
* C061500                                                        S22025
* D460500,465200,460570-460640,460850                            S22025
* A341500                                                       SA56889
* A402915                                                       SA53632
* A205500,207000                                                SA55383
* A106700                                                       SA53628
* A356500,382500                                                SA55925
* C390500                                                       SA55925
* A026000,035000,491500,919500                                  SA57685
* C872500,937500,001999                                         SA57685
* D001500-001998                                                SA57685
* C005500-006500,934550                                         SA59501
* C347000,350000                                                SA60341
* A312920                                                       SA59034
* C219420,253500-254000                                         SA59034
* A201700,202500,859500                                         SA61781
* D341600-341700                                                SA62991
* D921600                                                        X01004
* C025500,106940                                                 X01004
* A322500,383000,810800                                          X02004
* C322500,322830,323000                                          X02004
* D811000-812600                                                 X02004
* A126000,947760                                                OY00451
* C269000-273023                                                SA68050
* A901080,933800,938420,947460                                  SA68050
* A470500                                                       SA69087
* D072500,152000,156500,184000,190000,198500,242000,272360       S21903
* D298995,340500,383200,447500,498000,776000,817200,854000       S21903
* D904000,923000,925000,926500,927000,927700,930000,938500       S21903
* D943440,943580-943620                                          S21903
* A269900                                                      @YA03846
* C165800,269580,298975,356530,363070,442001,443205,473520     @YA03846
* C848530,947580                                               @YA03846
* D269200,271500,274050                                        @YA03846
* A813500                                                      @SA64363
*A356640,379500                                                @SA69649
*C352000                                                       @SA69649
*D352000-356500,394000                                         @SA69649
*A272500                                                       @SA71925
*C900000-901040,901060-901085                                  @SA71925
*A140700                                                       @YA05148
*C272120-272450                                                @SA73356
*A787000,789300                                                @SA62375
*D787900,848530                                                @SA62375
*A350180,364000                                                @SA72446
*D813600,813700                                                @SA74549
.*A099500,D379700                                              @SA74956
*D925300                                                       @YA10024
*A157000,A934700                                               @ZA04039
*D272020-272040                                                @YA05471
*C936020                                                       @YA10455
*C938480,938640                                                @YA10429
.*C876620,C876650,C876670,C876690,A876820                      @YA11011
.*A372000,927500,930500                                         X30X5MT
*A372150                                                       @OY12260
*A255500                                                       @OY12393
*C875984,A876600                                               @SA76687
*C473880                                                       @SA76694
*A379266                                                       @OY12395
*A282000,940660                                                @XA08073
*A106988,184500,377000                                         @YA12276
*C925200                                                       @YA12276
*D443235                                                       @YA12276
*D255700                                                       @OX13501
*D165803-165806,165850,A165900,C350228                         @OX12562
*D219420-219440,A222000                                        @OS77414
*D934550                                                       @OY14057
*A797800                                                       @OS77835
*C282210,C282270                                               @OX14772
*C282210,C82270,A897501,A938321,A940641                        @OX14790
*A276950,277150,C276955                                        @OZ14183
*A372110,372420,479500,480500,930500                           @OS77867
.*C194000,199000,385500                                        @OY14092
.*D380070-380460,431500-432000                                 @OY14092
.*C078000,102000,372380,797800                                 @G36XRYP
*C272120-272450                                                @OZ09276
*A934800                                                       @OZ09276
*A372465,A930700                                               @OX16705
*A277210                                                       @OS79864
*A272270                                                       @OZ26670
*C290750-290800,A940642,D940680,C937700,A938322,C938360        @OZ28818
*A897500,D898500                                               @OZ28818
.**********************************************************************
IEDQKA01 CSECT
&NAME    EQU   *
         ENTRY &NAME
         TITLE 'ACTIVATE (&NAME)- I/O GENERATOR SUBROUTINE (IEDQKA02)'
*                                                                     *
***********************************************************************
*                                                                     *
*  TITLE:  ACTIVATE AND I/O GENERATOR SUBROUTINE ( IOGENER )          *
*                                                                     *
         AIF   ('&GEN' NE 'MINI').TAG1                          SA59501
*  MODULE NAME = IEDQKD (MINI)                                        *
         AGO   .TAG5                                            SA59501
.TAG1    AIF   ('&GEN' NE 'STSP').TAG2                          SA59501
*  MODULE NAME = IEDQKC (STSP)                                        *
         AGO   .TAG5                                            SA59501
.TAG2    AIF   ('&GEN' NE 'BISC').TAG3                          SA59501
*  MODULE NAME = IEDQKB (BISC)                                        *
         AGO   .TAG5                                            SA59501
.TAG3    AIF   ('&GEN' NE 'QTAM').TAG4                          SA59501
*  MODULE NAME = IEDQKE (QTAM)                                        *
         AGO   .TAG5                                            SA59501
.TAG4    ANOP                                                   SA59501
*  MODULE NAME = IEDQKA (BOTH)(BLANK)                                 *
.TAG5    ANOP                                                   SA59501
*                                                                     *
*  DESCRIPTIVE NAME = ACTIVATE AND I/O GENERATOR ROUTINE              *
*                                                                     *
*  COPYRIGHT = 'NONE'                                                 *
*                                                                     *
*  STATUS:  CHANGE LEVEL 5                                            *
*                                                                     *
*FUNCTION -- THE FUNCTION OF THIS MODULE IS TO CONSTRUCT CHANNEL      *
*   PROGRAMS FOR INITIAL CONTACT, CONTINUE, AND RESET SEQUENCES.      *
*                                                                     *
*ENTRY POINTS --                                                      *
*   ACTIVATE                                                          *
*        CALLING SEQUENCE                                             *
*        L     R15,ADDR OF ACTIVATE                                   *
*        BR    R15                                                    *
*                                                                     *
*   I/O GENERATOR SUBROUTINE                                          *
*        L     12,ADDR OF I/O GENERATOR SUBROUTINE                    *
*        BALR  5,12                                                   *
*                                                                     *
*INPUT -- REGISTERS SET BY CALLER                                     *
*   FOR 'ACTIVATE' --                                                 *
*   R1  ADDR OF ERB OR BUFFER                                         *
*   R13 ADDR OF AVTSAVE2                                              *
*                                                                     *
*   FOR 'I/O GENERATOR' --                                            *
*   R13 ADDR OF AVTSAVE2                                              *
*   R2  LCB ADDRESS                                                   *
*   R5  RETURN ADDRESS                                                *
*                                                                     *
*OUTPUT -- REGISTERS AT EXIT                                          *
*   FOR 'ACTIVATE' --                                                 *
*   R11 DISPATCHER BASE                                               *
*   R13 ADDR OF AVTSAVE2                                              *
*                                                                     *
*   FOR 'I/O GENERATOR SUBROUTINE' --                                 *
*   R5  RETURN ADDRESS                                                *
*   R13 ADDR OF AVTSAVE2                                              *
*                                                                     *
*EXTERNAL ROUTINES --                                                 *
*   'IEDQTNT'-- USED TO CONVERT TWO BYTE TNT OFFSET TO TERMIANL       *
*   TABLE ENTRY ADDRESS.                                              *
*                                                                     *
*   SVC 114 -- EXCPVR (AOS)                                           *
*   SVC 35--WTO                                                SA57685*
*EXITS-NORMAL --                                                      *
*   'ACTIVATE' - RETURNS TO DISPATCHER TO DISPATCH NEXT READY STCB OR *
*   TO POST A CHAIN OF BUFFERS TO MH.                                 *
*                                                                     *
*   'I/O GENERATOR SUBROUTINE' - RETURNS TO CALLER                    *
*                                                                     *
*EXITS-ERROR -- NONE                                                  *
*                                                                     *
*TABLES/WORK AREAS -- DSECTS OF CONTROL BLOCKS AS EXPANDED BY MACROS  *
*        DCBD  DSORG=TX
*        TAVTD
*        TCCWD
*        TDEBD
*        TDISPD
*        TLCBD
*        TPRFD
*        TPRIOR
*        TQCBD
*        TQCBED
*        TSCBD
*        TSTCBD
*        TTSID
*        TTNTD
*        TTPD
*        TTRMD
*                                                                     *
*ATTRIBUTES                                                           *
*   'ACTIVATE' -- REUSABLE,REFRESHABLE                                *
*                                                                     *
*   'I/O GENERATOR SUBROUTINE' - RE-ENTRANT,REFRESHABLE - WHEN        *
*                                ENTERED FROM ACTIVATE.               *
*   PROBLEM PROGRAM MODE, ENABLED.  WHEN ENTERED FROM IGG019R0        *
*   -SUPERVISOR MODE, DISABLED.                                       *
*                                                                     *
*NOTES -- THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A         *
*   PARTICUALR INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER      *
*   SET.                                                              *
*                                                                     *
* CHANGE ACTIVITY =                                            @Y16X5I0
*A-000000-999999                                               @Y16X5I0
*C147500                                                       @Y17XAII
*                                                              @Y16X5I0
*D184580-184900,377080-377400                                  @Y17XAIZ
***********************************************************************
         EJECT
         ENTRY IEDQKA02
         DC    AL1(DSPMCPL2)            STCB OFFSET
         DC    AL1(0)
*    ACTIVATE IS ENTERED HERE WHEN GIVEN CONTROL BY THE DISPATCHER.   *
*
ACTIVATE EQU   *                        ENTRY PT FROM DISPATCHER
         SPACE 3
         USING *,15                     LINK REGISTER
         USING IHADCB,RDCB              DCB REGISTER
         USING IEDQTRM,RTERM            TERM ENTRY REGISTER
         USING AVTSAVE2,RAVT            AVT SAVE REGISTER
         USING IEDQLCB,RLCB             LCB REGISTER
         USING IEDQLCBX,RWKC            LCB EXTENSION ADDR       S99228
         USING IEDQCCW,RCCW             CCW REGISTER
         USING IEDQDISP,RSUPBASE        DISPATCHER BASE
         SPACE 3
* REGISTER DEFINITIONS
R0       EQU   0                        MODULE WORK REG
RPARM    EQU   1                        PARAMETER REG
RLCB     EQU   2                        LCB BASE
RTPCDE   EQU   3                        PTS TO CURR TP FIELD IN LCB
RDCB     EQU   4                        DCB BASE
R2       EQU   5                        WORK REGISTER
RWKA     EQU   6                        WORK REG
RWKB     EQU   7                        WORK REG
RTERM    EQU   8                        TERM ENTRY BASE
RWKC     EQU   9                        WORK REGISTER
RCCW     EQU   10                       CCW BASE
RSUPBASE EQU   11                       DISPATCHER BASE
RMOD     EQU   11                       PTS TO MODEL CCW'S
RBASE    EQU   12                       BASE ADDRESS FOR I/O GENERATOR
RAVT     EQU   13                       AVT BASE ADDRESS
REXPND   EQU   14                       LINK REG FOR EXPAND ROUTINE
RLNK1    EQU   15                       WORK REG
         EJECT
         STM   11,15,12(13)             SAVE REQUIRED REGISTERS
&NAME    IEDHJN ID                                               S22025
         LR    RLCB,RPARM               ERB ADDRESS
         TM    PRFTIC-IEDQPRF(RPARM),CCWTIC ERB OR BUFFER
         BZ    ITSERB                   BRANCH IF ERB
         L     RLCB,PRFLCB-1-IEDQPRF(RPARM) SET LCB BASE
         B     ITSLCB                   CONTINUE
ITSERB   EQU   *
         SH    RLCB,LCBBKUP             BACK UP TO LCB
ITSLCB   EQU   *
         L     RDCB,LCBDCBPT            DCB BASE
         AIF   ('&GEN' EQ 'BISC').L6
         AIF   ('&GEN' EQ 'MINI').L6
         AIF   ('&GEN' EQ 'QTAM').L6
         TM    LCBTSOB,LCBTSBUF         IS THIS A TS BUFFER?        TSO
         BZ    TSO1                     BRANCH ON NO                TSO
         L     RWKA,AVTTSOPT            GET ADDRESS OF TS SCHED     TSO
         L     RWKA,TSISCHED-IEDQTSI(,RWKA)                         TSO
         BAL   RTPCDE,24(RWKA)          BRANCH TO ROUTINE           TSO
TSO1     EQU   *                                                    TSO
.L6      ANOP
         LA    RBASE,BUILD              IOGEN SUBROUTINE            TSO
         BALR  R2,RBASE                 LINK TO IO GEN
         LM    11,15,12(13)             RESTORE REGISTERS
         MVC   LCBTTCIN,LCBTTBIN        TO BE CONNECTED IS NOW CON-
         SPACE 2                                                 A41027
         L     RWKB,DCBMH-1 .           GET MH -CB ADDRESS FOR POA41027
         SR    RWKC,RWKC .              CLEAR POST LIST FOR FINALA41027
*                                         EXIT TO DISPATCHER     A41027
         SPACE 2                                                 A41027
*        UNIT EXCEPTION BIT WILL BE SET WHEN AA CONTINUE OR ABORTA41027
* SEQUENCE CAN NOT BE SENT (EX. 1030, 2260L, ETC.)               A41027
         TM    LCBCSW+3,UNEX            NO RESTART ON CONTINUE
*                                         REQUEST
         BZ    NOTUNEX                  BRANCH NO
         SPACE
         L     RPARM,LCBLSPCI-1         BUFFER TO POST
         MVI   PRFPRI-IEDQPRF(RPARM),PRIMHBFR POST PRIORITY
         NI    PRFSTAT1-IEDQPRF(RPARM),PRFNLSTF 'LAST BUFFWR'
         STCM  RWKB,7,PRFQCBA-IEDQPRF(RPARM) SET POST ADDRESS  @G36XRYP
         BAL   REXPND,DSPPOST           POST BUFFER TO MH      @Y17XAIX
NOTUNEX  EQU   *
         AIF   ('&GEN' EQ 'STSP').Z0 .                           S22027
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'QTAM').Z0 .       S22027
         TM    LCBSTICS+1,CBRDCAST .    BROADCAST MESSAGES       S22027
         BO    EXITDSP .                BRANCH IF YES            S22027
.Z0      ANOP                                                    S22027
         TM    LCBSTAT2,LCBMSGNN        MSG GEN
         BO    EXITDSP .                BRANCH YES               A41027
         SPACE 2                                                 A41027
         TM    LCBSTAT1,LCBRECVN        RECEIVE STATE
         AIF   ('&GEN' NE 'MINI').Z1
         BO    EXITDSP .                YES                      A41027
         AGO   .Z2
.Z1      ANOP
         BZ    NOTRCV                   NO
         CLI   LCBCPA+24,CCWPOLL        AUTOPOLL IN USE
         BNE   EXITDSP .                NO                       A41027
         SPACE
*        WANT TO OPEN LIST FOR SEND STCB OR POLL DELAY           A41024
         CLI   DCBINTVL,AVTEZERO .      POLL DELAY  SPECIFIED    A41024
         BNE   ITSHERE .                BRANCH IF YES            A41024
         LA    RWKA,LCBSTCBA-5          RECEIVE STCB -4
         CLI   LCBRSKEY,BUFFVTO         BUFFERED LCB
         BNE   LOOPPOLL                 BRANCH IF NO
         SPACE
         LA    RWKA,LCBRSKEY            ADJUST FOR LOOP CONTROL
LOOPPOLL EQU   *
         L     RWKA,STCBLINK-1-IEDQSTCB(RWKA) NEXT STCB IN CHAIN
         CLI   STCBPRI-IEDQSTCB(RWKA),0 LAST STCB (QEVENT)
         BE    EXITDSP .                YES                      A41027
         CLI   STCBVTO-IEDQSTCB(RWKA),SENDVTO SEND STCB
         BE    ITSHERE                  YES
         AIF   ('&GEN' EQ 'MINI').CONC1A .                       S22026
         CLI   STCBVTO-IEDQSTCB(RWKA),CSVTO .                    S22026
*                                       CONC SCHEDULER           S22026
         BE    ITSHERE .                BRANCH IF YES            S22026
.CONC1A  ANOP .                                                  S22026
         CLI   STCBVTO-IEDQSTCB(RWKA),BUFFVTO BUFFERED SEND STCB
         BNE   LOOPPOLL                 NO TRY NEXT STCB
         SPACE
ITSHERE  EQU   *
         MVI   LCBCPA+32,CCWNOP         NOP FIRST TIC
         B     EXITDSP .                EXIT                     A41027
         SPACE 2                                                 A41027
NOTRCV   EQU   *
.Z2      ANOP
*                                                                A41027
*        FOR DEVICES THAT ARE NOT SELECTED BUFFERS ARE POSTED NOWA41027
         SPACE
         TM    LCBSTAT2,LCBRESP         POST BUFFER NOW
         BNZ   POST                     YES, CONVERSE RESPONSE
* INSTEAD OF LINE END APPENDAGE                                  A41027
*                                                                A41027
         TM    LCBSTICS+1,CBISYNC+CSTNCTL+CTWX CAN TERMINAL BE
*                                         SELECTED
         BNZ   EXITDSP .                NOT START STOP CONTENTIONA41027
         SPACE
         TM    LCBSTICS+2,CWTTA         WORLD TRADR
         BNZ   EXITDSP .                YES                      A41027
POST     EQU   *
         NI    LCBSTAT2,AVTEFF-LCBRESP  RESET RESPONSE BIT     @SA74956
         L     RWKA,LCBERBCH-1          ADDRESS OF FIRST BUFFER
         LR    RWKC,RWKA .              SAVE POINTER TO POST LISTA41027
LOOP     EQU   *
         STCM  RWKB,7,1(RWKA)           QCB ADDRESS FOR POST   @G36XRYP
         MVI   4(RWKA),PRIMHBFR         SET POST PRIORITY
         L     RWKA,4(,RWKA)            LINK ADDRESS NEXT BUFFER
         LA    RWKA,AVTEZERO(,RWKA)     CLEAR HI ORDER BYTE
         LTR   RWKA,RWKA                IS THERE A NEXT BUFFER
         BNZ   LOOP                     YES
         SPACE
         XC    LCBERBCH,LCBERBCH .      RESET FIELD FOR LATER USEA41027
         LR    RPARM,RWKC .             ASSUME LOCAL DEVICE      A41027
         TM    LCBSTICS+1,CLOCAL+CAUDIO . LOCAL DEVICE           A48273
         BZ    ADDLABEL .               BR YES, EXCP WILL BE   @Y17XAIX
*                                         AT BUFFER ASSOCIATION  A41027
         BAL   REXPND,DSPCHAIN                                 @Y17XAIX
ADDLABEL TM    LCBSTICS+2,CNOIDLES      NO IDLES LOOP (2260R)  @Y17XAIX
         BNO   EXITDSP                  BRANCH IF YES,EXCP DONE@Y17XAIX
*                                         BUFFER ASSOCIATION    SA53628
         BAL   REXPND,DSPCHAIN                                 @Y17XAIX
EXITDSP  EQU   *                                                 A41027
         SPACE
         LA    RPARM,LCBFLAG1 .         EXCP PARAMETER (IOB)     A41027
         EXCPVR (1),SUBSYS                                       X01004
         SPACE 2                                                 A41027
         LR    RPARM,RWKC .             POST PARAMETER LIST      A41027
         BAL   REXPND,DSPCHAIN          EXIT TO POST BUFFERS OR@Y17XAIX
*                                         DISPATCH NEXT STCB     A41027
         EJECT
*        C O D I N G    T E C H N I Q U E S
         SPACE 1
*     THE CHANNEL PROGRAM CONSTRUCTED IS BASED UPON THE CHARACTER-
* ISTICS OF THE DEVICE (OBTAINED FROM THE DEVICE CHARACTERISTICS
* FOR THIS TERMINAL OR LINE ENTRY).  THE I/O GENERATOR SUBROUTINE
* TESTS CHARACTERISTICS BITS AND TRANSFERS CONTROL TO THE 'EXPAND'
* ROUTINE (DESCRIBED BELOW) PASSSING AN OFFSET INTO A MODEL CCW
* TABLE.
*  E. G. REXPND (REG14)=A(EXPAND)
*        BALR  RLNK1,REXPND
*        DC    AL2(MODCCW08-MODCCW)
*     THIS SEQUENCE BUILDS A DISABLE-ENABLE SEQUENCE.
*     THE MODEL CCW TABLE CONSISTS OF TWO BYTE ENTRIES.
* THE FIRST BYTE IS AN OFFSET INTO A SECOND TABLE (EXPANDER TABLE).
* THE SECOND BYTE CONTAINS THE CCW FLAGS FOR THE CCW BEING BUILT.
* THE EXPAND ROUTINE MOVES THE SPECIFIED FLAGS FOR THE CCW
* THE EXPAND ROUTINE MOVES THE SPECIFIED FLAGS INTO THE CCW AND
* UTILIZES THE ONE BYTE INDEX (FROM THE MODEL CCW TABLE) TO ACCESS
* THE FOLLOWING INFORMATION FROM THE EXPANDER TABLE:
*     EACH ENTRY IN THE EXPANDER TABLE HAS THE FOLLOWING FORMAT:
*        DC    AL2(OFFSET TO A ROUTINE THAT ESTABLISHES ADDRESS
*                  AND COUNT)
*        DC    AL1(CCWDISAB)            CCW OP CODE
*        DC    AL1(TPDISAB)             TP OP CODE
*     THE EXPAND ROUTINE PASSES CONTROL TO AN EXPANDER SUBROUTINE
* (BY BRANCHING TO ORGRTN INDEXED BY THE 2 BYTE OFFSET) THAT COM-
* PUTES CCWDATA ADDRESS AND COUNT.  UPON REGAINING CONTROL, THE
* EXPAND ROUTINE MOVES THE CCWOP CODE INTO THE CCW AND THE TP OP
* CODE INTO THE LCB FROM THE EXPANDER TABLE.
*     RETURNING AGIN TO THE EXAMPLE, THE FIRST CCW IN THE SEQUENCE
* (DISABLE) HAS BEEN BUILT.  A REGISTER IS ADJUSTED TO POINT TO THE
* ENTRY IN THE MODEL CCW TABLE AND A TEST IS PERFORMED FOR THE LAST
* ENTRY.  IF THIS IS NOT THE LAST ENTRY THE ABOVE ACTION IS PER-
* FORMED AGAIN TO CONSTRUCT THE NEXT CCW (THE ENABLE).  EXPAND RE-
* TURNS TO IN-LINE CODE OF THE I/O GENERATOR WHEN THE LAST ENTRY
* IS REACHED.
         SPACE 2
         DC    A(IOGENEND-IEDQKA02)     LENGTH TO FIX FOR TSO   OY00451
* CONTROL IS GIVEN TO BUILD WHEN ENTERED FROM AN APPENDAGE.           *
BUILD    EQU   *
IEDQKA02 EQU   *
         USING *,RBASE
         L     RDCB,LCBDCBPT
         LA    RWKA,LCBCPA+16           START ON 3RD CCW
         ST    RWKA,LCBSTART-1          PARAMETER FOR IOS
         NI    LCBCSW+3,AVTEFF-UNEX     RESET SWITCH
         LH    RWKC,LCBTTBIN            TERMINAL TO BE CONNECTED
         AIF   ('&GEN' EQ 'MINI').L7
         LTR   RWKC,RWKC                SPECIFIC CONNECTION
         BNZ   CONNECT1                 BRANCH YES
         TM    LCBSTAT2,LCBDIAL         DIAL LINE
         BZ    NONDIAL                  NO
         SPACE
         LH    RWKC,LCBLNENT            ADDRESS OF LINE ENTRY
         LTR   RWKC,RWKC                DO WE HAVE LINE ENTRY
         BNZ   CONNECT1                 BRANCH YES
         SPACE
NONDIAL  EQU   *
         SR    RTERM,RTERM              CLEAR FOR INDEXING
         IC    RTERM,LCBUCBX            RLN-1
         SLL   RTERM,2                  MULTIPLY FOR INDESX
         L     RTERM,DCBINVLI(RTERM)    ILIST FOR THIS LINE
         LA    RTERM,AVTEZERO(,RTERM)   CLEAR HI ORDER BYTE
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'QTAM').LAA1
         L     RWKA,LCBINVPT-1          CURRENT INVITATION LIST
         CLI   0(RWKA),X'FE'            IS THIS END OF LIST
         BE    LEND                    END OF LIST              SA65910
         CLI   1(RWKA),X'FE'           IS THIS END OF LIST      SA65910
         BNE   NOTEND                  BRANCH NO                SA65910
LEND     EQU   *                                                SA65910
         BNE   NOTEND                   BRANCH ON NO
.LAA1    ANOP
         BCTR  RTERM,0                  BACK UP
         BCTR  RTERM,0                  NOW TWO
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'QTAM').LAA2
         B     CONNECT0
NOTEND   EQU   *
         SR    RWKC,RWKC                CLEAR FOR IC
         IC    RWKC,2(RTERM)            ENTRY WIDTH
         BCTR  RWKC,0                   REDUCE BY ONE
         IC    RWKC,0(RWKA,RWKC)        GET ENTRY INDEX
         SLL   RWKC,1                   MULTIPLY BY TWO
         SR    RTERM,RWKC               GET ACTUAL ENTRY OFFSET
CONNECT0 EQU   *
.LAA2    ANOP
         LH    RWKC,AVTEZERO(,RTERM)    REPRESENATIVE ENTRY
         TM    LCBSTAT2,LCBMSGNN       IS THIS A MESSAGE GEN    SA65910
         BNO   CONNECT1                BRANCH NO                SA65910
         TM    LCBSTAT2,LCBDIAL         DIAL LINE              @YA05148
         BO    CONNECT1                 YES, BRANCH            @YA05148
         STH   RWKC,LCBTTBIN           REPRESENATIVE ENTRY      SA65910
CONNECT1 EQU   *
.L7      ANOP
         N     RWKC,AVTCLRHI            CLEAR NEGATIVE PROPAGATION
         L     RWKB,AVTRNMPT            ADDRESS OF TNT
         USING IEDQTNTD,RWKB
         BAL   RWKA,TNTDCODE            LNK TO ROUTINE
         DROP RWKB
         AIF   ('&GEN' EQ 'MINI').CONC2A .                       S22026
         TM    TRMDEVFL+1,TRMCONC .     CONC                     S22026
         BNO   NOTCONC .                BRANCH IF NO             S22026
         L     RWKA,TRMDESTQ-1 .        QCB ADDR                 S22026
         TM    QCBDSFLG-IEDQQCB(RWKA),QCBDRQQ .                  S22026
*                                       DATA READY QUE           S22026
         BO    NOTCONC .                BRANCH IF YES            S22026
         TM    LCBSTAT1,LCBSENDN .      LCB SENDING              S22026
         BNO   NOTSEND .                BRANCH IF NO             S22026
         TM    TRMDEVFL,X'20' .         ADDRESSING CHARS         S22026
         BO    NOTCONC .                BRANCH IF YES            S22026
NOTSEND  EQU   * .                                               S22026
         LH    RWKB,QCBEXTO-IEDQQCB(RWKA) .                      S22026
*                                       QCB EXTENSION OFFSET     S22026
         AR    RWKA,RWKB .              COMPUTE ADDR             S22026
         L     RTERM,QCBECONC-IEDQQCBE-1(RWKA) .                 S22026
*                                       CONC TERM ADDR           S22026
NOTCONC  EQU   * .                                               S22026
.CONC2A  ANOP .                                                  S22026
         LA    REXPND,EXPAND            SET-UP LINK FOR EXPAND
         LH    RWKA,TRMSIO              SIO COUNTER
         LA    RWKA,1(,RWKA)            BUMP
         STH   RWKA,TRMSIO              ST BACK
         SR    RWKA,RWKA                CLEAR WORK REGISTER
         IC    RWKA,TRMCHCIN            INDEX INTO CHARACTERISTIC
         BCTR  RWKA,R0                  DECREMENT FOR N-1TH ENTRY
         MH    RWKA,AVTDCTLN            MULTIPLY BY ENTRY LEN  @Y17XAII
         A     RWKA,AVTCSTCS            ADD TABLE START
         MVC   LCBSTICS-1(4),0(RWKA)    CHARACTERISTICS TO LCB
         AIF   ('&GEN' EQ 'BISC').LA1
         AIF   ('&GEN' EQ 'MINI').LA1
         AIF   ('&GEN' EQ 'QTAM').LA1
         TM    LCBSTICS,C5041           1050/2741 LINE?             TSO
         BZ    TSO10                    NO                          TSO
         TM    LCBTSOB,LCB2741N         IS IT A 2741?               TSO
         BNO   S1050                    NO. USE 1050 CH'STICS       TSO
         MVC   LCBSTICS(3),D41STICS     2741 DEVICE CH'STICS        TSO
         B     TSO10                                                TSO
S1050    EQU   *                                                    TSO
         MVC   LCBSTICS(3),D50STICS     1050 CH'STICS               TSO
TSO10    EQU   *                                                    TSO
.LA1     ANOP
         TM    LCBSTAT1,LCBCONT         REQU%EST FOR CONTINUE
         BNZ   CONTINUE                 BRANCH YES
         MVI   LCBINCAM,AVTEZERO        RESET ERROR COUNTER
         CLI   DCBEIOBX,XC8             IS EXTENSION PRESENT   @ZA04039
         BL    CKMSGEN                  BRANCH-NO              @ZA04039
         MVI   LCBCPA+53,AVTEZERO       RESET LOCAL RETRY COUNT@ZA04039
CKMSGEN EQU *                                                  @ZA04039
         SPACE
         TM    LCBSTAT2,LCBMSGNN        MSGEN
         BO    MSGGEN                   YES
         TM    LCBSTAT1,LCBSENDN        SEND STATE
         BO    WRITINIT                 YES
         TM    LCBSTAT2,LCBRESP         OWE A RESPONSE
         BZ    READ                     NO
         BAL   R0,WRRESP                BUILD RESPONSE
READ     EQU   *
         AIF   ('&GEN' EQ 'MINI').L4A3                         @YA03846
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION     S99228
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BO    KEEPSET                  YES, NO RESET ACK-1      S99228
.L4A3    ANOP                                                    S99228
         MVI   LCBERCCW+12,FLAG         SET ONLY SILI FLAG IN CCWS99228
         MVI   LCBMSGFM,AVTEZERO        RESET FORMAT BITS AND AC S99228
*                                         COUNTER                S21101
KEEPSET  EQU   *                                               @OX12562
         NI    LCBMSGFM,LCBACKI         CLEAR BSC CONTROL,LEAVE@OX12562
*                                       ACK COUNTER            @OX12562
         L     RWKC,LCBLSPCI-1           ADDRESS FO FIRST BUFFER
         LH    RWKA,AVTKEYLE             SIZE OF A UNIT
         CH    RWKA,DCBBUFSI            COMPARE WITH DCB OPERAND
         BNH   SETSIZE                  BRANCH DCB LESS OR EQUAL
         LH    RWKA,DCBBUFSI            DCB PARAMETER
SETSIZE  EQU   *
          SR    RWKB,RWKB                CLEAR WORK REGISTER
         AIF   ('&GEN' EQ 'MINI').L8
         AIF   ('&GEN' EQ 'BISC').L8
         AIF   ('&GEN' EQ 'QTAM').L8
** TSO---CHECK FOR CORRECT DATA COUNT                               TSO
**                                                                  TSO
         TM    LCBTSOB,LCBTSBUF         IS THIS A TSO BUFFER        TSO
         BO    TSOB                     DO NOT RESERVE CHARS     S22029
*                                       FOR TIME-SHARING MSGS    S22029
.L8      ANOP
         IC    RWKB,DCBRESER            IDLES RESERVED FOR HEADER
TSOB     EQU   *                                                 S22029
         STC   RWKB,LCBISZE             SET IDLES COUNT IN LCB
         LA    RWKB,PRFSHDR-PRFSUNIT(,RWKB) BUMP BY HEADER SIZE
         SR    RWKA,RWKB                 DATA COUNT FOR 1ST VUFFER
          STH  RWKA,CCWCOUNT-CCW(,RWKC) ESTABLISH COUNT
         IC    RWKA,PRFOPCDE-IEDQPRF(,RWKC) SAVE OP CODE
         LA    RWKB,PRFSUNIT-IEDQPRF(RWKB,RWKC) START ADDRESS-CCW
         ST     RWKB,PRFIOADR-1-IEDQPRF(,RWKC) SET IN CCW
         STC    RWKA,PRFOPCDE-IEDQPRF(,RWKC) RESTORE OP CODE
         NI    PRFSTAT1-IEDQPRF(RWKC),PRFNHDRF 'TEXT' BIT OFF
         EJECT
*
*        * * * * * * * * * * * * * * * * * * * * * * * * * *
*        *                                                 *
*        *     R E A D    I N I T I A L    L O G I C       *
*        *                                                 *
*        * * * * * * * * * * * * * * * * * * * * * * * * * *
         SPACE 3
         NI    LCBSTAT2,AVTEFF-LCBRESP  TURN OFF RESPONSE BIT
         LA    RCCW,LCBCPA              SET CCW BASE
         LA    RTPCDE,LCBTPCD           SET TP OP CODE BASE
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW00-MODCCW)
         AIF   ('&GEN' EQ 'MINI').L10
         TM    LCBSTAT2,LCBDIAL         DIAL LINE?
         BZ    NOSWITCH                 BRANCH IF NOT
         SPACE 5
******** D I A L    L I N E S ********
         SPACE 2
         TM    LCBSTAT2,LCBNEGRP        NEG RESPL TO POLLING
         BO    ENAB                     YES, WANT TO DISCONNECT
         TM    LCBCHAIN,LCBCTLMD        DIAL UP READ           @OY14092
         BZ    CONNECT .                NO                       S21101
         SPACE 5                                                 S21101
* D I A L    C O N N E C T I O N
         NI    LCBCHAIN,AVTEFF-LCBCTLMD                        @OY14092
         AIF   ('&GEN' NE '').L11
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NODLUPBS                 BRANCH NO
.L11     ANOP
         AIF   ('&GEN' EQ 'STSP').L12
         AIF   ('&GEN' EQ 'QTAM').L12
         TM    LCBTPCD+11,DISDLEOT      WRITE DISCONNECT        SA61781
         BO    GODISCON                 BR YES                  SA61781
         OI    LCBTPCD+11,DISDLEOT      SET TO WRITE DISCONNECT SA61781
*                                         PRIOR TO NEXT DISABLE SA61781
         LA    RTPCDE,ONE(,RTPCDE)      ADJUST TP CODE BASE     SA61781
         LA    RCCW,EIGHT(,RCCW)        ADJUST CCW BASE         SA61781
         ST    RCCW,LCBSTART-1          SET START ADDRESS       SA61781
         B     NODISCON                 CONTINUE                SA61781
GODISCON EQU   *                                                SA61781
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW01-MODCCW)
         B     NEXT                     CONTINUE                SA61781
NODISCON EQU   *                                                SA61781
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE    SA61781
         DC    AL2(MODCCW02-MODCCW)                             SA61781
NEXT     EQU   *                                                SA61781
         SPACE
         BAL   RWKB,ILIST               GET ILIST ADDRESS
         CLI   IDLOC+1(RWKC),0          ID SPECIFIED
         BE    NOTANID                  BRANCH IF NO ID
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW14-MODCCW)
         B     WREOT                    GO WRITE EOT ONLY       SA55383
NOTANID  EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPNAD
         DC    AL2(MODCCW15-MODCCW)
WREOT    EQU   *                                                SA55383
         BALR  RLNK1,REXPND             LINK TO EXPNAD
         DC    AL2(MODCCW16-MODCCW)
.L12     ANOP
         AIF   ('&GEN' EQ 'BISC').L222
NODLUPBS EQU   *
         BALR  RLNK1,REXPND             BUILD DISABLE DIAL
         DC    AL2(MODCCW02-MODCCW)
         TM    LCBSTICS+1,CTWX
         BZ    BLDPADS                  BUILD WRITE PADS
         BALR  RLNK1,REXPND             READ TERM ID
         DC    AL2(MODCCW32-MODCCW)
         BALR  RLNK1,REXPND             WRITE CPU ID  AND READ
         DC    AL2(MODCCW18-MODCCW)
BLDPADS  EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW36-MODCCW)
         B     CONNECT .                BUILD REST OF CANNEL PROGAM
.L222    ANOP
         EJECT
* E N A B L E    C O N N E C T I O N
ENAB     EQU   *
         NI    LCBSTAT2,AVTEFF-LCBNEGRP NEGATIVE RESPONSE OFF
         MVI   LCBTSTSW,AVTEZERO        INDICATE LINE NOT CONNECTED
         AIF   ('&GEN' NE '').L14
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NOBSD                    NO
.L14     ANOP
         AIF   ('&GEN' EQ 'STSP').L15
         AIF   ('&GEN' EQ 'QTAM').L15
         L     RWKA,LCBSCBA-1           GET SCB POINTER          S21101
         USING IEDQSCB,RWKA .                                    S21101
         TM    LCBTPCD+11,DISDLEOT      NEED DLE EOT PRIOR TO DISAB
         BO    SNDLEEOT                 BRANCH IF YES
         SPACE
         OI    LCBTPCD+11,DISDLEOT      SET FOR NEXT TIME-LINE END
*                                         WILL RESET IF DLE EOT
*                                         RECEIVED
         TM    SCBBSCFM,SCBNOEOT        DO WE OWE EOT          @OS77414
         BO    SNDLEEOT                 YES SEND DLE EOT       @OS77414
         OI    SCBBSCFM,SCBNOEOT        SET EOT RECEIPT PENDING@OS77414
         DROP  RWKA                                            @OS77414
         LA    RTPCDE,1(,RTPCDE)        ADJUST TP OP CODE BASE
         LA    RCCW,8(,RCCW)            RESET CCW BASE
         ST    RCCW,LCBSTART-1          AND SET START ADDRESS
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW7B-MODCCW)
         B     NXTBSCCW                 CONTINUE BUILDING
SNDLEEOT EQU   *
         SPACE
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW07-MODCCW)     DISABLE SEQUENCE
         SPACE
NXTBSCCW EQU   *
         CLI   DCBINTVL,TONEOPT         WRITE TONE REQUESTED
         BNE   NOTONE                   BRANCH IF NO
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW7A-MODCCW)
         SPACE
NOTONE   EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW10-MODCCW)
         BAL   RWKB,ILIST               GET ILIST ADDRESS
         CLI   IDLOC+1(RWKC),0          CPU ID SPECIFED
         BE    NOBSID                   NO
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW11-MODCCW)
NOBSID   EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW12-MODCCW)
.L15     ANOP
         AIF   ('&GEN' EQ 'BISC').L16
         AIF   ('&GEN' EQ 'QTAM').L16A
         SPACE
NOBSD    EQU   *
         MVI   LCBTPCD+11,X'AB'         SET FIRST TIME SWITCH   TSO
         TM    LCBSTICS,C5041 .         THIS A 5041 LINE            TSO
         BZ    TSO99 .                  NO                          TSO
         NI    LCBTSOB,X'FF'-LCB2741N . RESET 2741 FLAG IF ON       TSO
TSO99    EQU   * .                                                  TSO
         L     RLNK1,DCBTRANS-1 .       POINT TO TABLE OR LIST      TSO
         TM    0(RLNK1),X'80' .         IS IT TRANLIST MACRO        TSO
         BZ    TSO20 .                  NO                          TSO
         MVC   AVTPARM3(4),OPTLIST .    SKELETON PARAM LIST         TSO
         IC    RWKB,1(,RLNK1) .         OPTION FIELD OFFSET         TSO
         STC   RWKB,AVTPARM3+2 .        TO PARM LIST                TSO
         LA    RPARM,AVTPARM3 .         PARM LIST POINTER           TSO
         LA    RAVT,72(,RAVT) .         KICK DOWN FOR UI            TSO
         STM   2,12,28(RAVT) .          SAME AS IEDQUI DOES         TSO
         LA    REXPND,LOCRTN .          SET UP RETURN            S22025
         ST    REXPND,12(,RAVT) .       SAVE IT                  S22025
         LR    RWKC,RAVT                LOAD CALLERS ADDR        S22025
         LA    RAVT,72(RAVT)            BUMP TO NEXT SAVEAREA    S22025
         ST    RWKC,4(RAVT)             STORE BACK CHAIN         S22025
         ST    RAVT,8(RWKC)             STORE FORWARD CHAIN
         L     RWKC,CVTPTR .                                        TSO
         L     RWKC,AVTCVTPT(,RWKC) .                               TSO
         L     RWKC,0(,RWKC) .          POINT TO AVT                TSO
         L     RBASE,AVTMSGS-1-IEDQAVTD(RWKC)                    S22025
*                                       VCON LIST ADDR           S22025
         L     RBASE,20(,RBASE) .       OFFSET TO AE VCON=20        TSO
         LR    RDCB,RLCB .              AE USES 4 FOR LCB           TSO
         BR    RBASE .                  TO IEDQAE                   TSO
LOCRTN   EQU   * .                                                  TSO
         SH    RAVT,H72 .               RESTORE AVTPOINTER          TSO
         LA    REXPND,EXPAND .          RESTORE CALL REG            TSO
         LTR   RLNK1,RLNK1 .            SEE IF OPTION FLD PRESENT   TSO
         BZ    TSO20 .                  NO. NOTHING TO DO
         XC    0(4,RLNK1),0(RLNK1) .    YES. ZERO FOR NEXT USE      TSO
TSO20    EQU   * .                                                  TSO
.L16A    ANOP
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE
         DC    AL2(MODCCW08-MODCCW)
         SPACE 2
         AIF   ('&GEN' EQ 'QTAM').L16B
         TM    LCBTSOB,LCB2741N         THIS A 2741                 TSO
         BO    NOSWITCH                 USED LEASED CODE
         TM    LCBSTICS,C5041           1050/2741 LINE?             TSO
         BO    SPEC41                   YES. PUT UP SPECIAL CCWS    TSO
.L16B    ANOP
         TM    LCBSTICS+1,CAUDIO        AUDIO
         BNZ   NOSWITCH                 NO
         EJECT
.L16     ANOP
* C O N N E C T I O N    P R E V I O U S L Y    D O N E
         SPACE 1
CONNECT  EQU   *
         AIF   ('&GEN' NE '').L17
         TM    LCBSTICS+1,CBISYNC       BY SYNC LINE
         BZ    NOTBSCD
.L17     ANOP
         AIF   ('&GEN' EQ 'STSP').L18
         AIF   ('&GEN' EQ 'QTAM').L18
         L     RWKA,LCBSCBA-1           GET SCB ADDRESS
         USING IEDQSCB,RWKA
         TM    SCBBSCFM,SCBNOEOT .      DID WE SEND A MSG        S21101
         BO    SENDEOT                  BR IF NOT               SA59034
         OI    SCBBSCFM,SCBNOEOT        SET RECEIPT OF EOT AS   SA59034
*                                         PENDING               SA59034
         BALR  RLNK1,REXPND             BUILD READ ENQ
         DC    AL2(MODCCW17-MODCCW)
SENDEOT  EQU   *
         DROP RWKA
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE
         DC    AL2(MODCCW16-MODCCW)
.L18     ANOP
         AIF   ('&GEN' EQ 'BISC').L10
NOTBSCD  EQU   *
         TM    LCBSTICS+1,CTWX          TWX
         BZ    NOSWITCH                 NO
         AIF   ('&GEN' EQ 'QTAM').L18A                           A44890
         TM    LCBTSOB,LCBINHBN    INHIBITS TO BE DONE             TSO
         BZ    NOTWIN .                 BRANCH NO
*
         BALR  RLNK1,REXPND
         DC    AL2(MODCCW19-MODCCW)
NOTWIN   EQU   *
.L18A    ANOP                                                    A44890
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW18-MODCCW)
.L10     ANOP
         SPACE 5
********       L E A S E D    L I N E S      ********
         SPACE 2
NOSWITCH EQU   *
         TM    LCBSTICS+1,CCONTENT      CONTENTION
         BO    CONTT
         AIF   ('&GEN' EQ 'BISC').Z4
         TM    LCBSTICS+1,CLOCAL+CAUDIO  LOCAL OR AUDIO
         AIF   ('&GEN' NE 'MINI').Z3
         BZ    TRSTCTL
         AGO   .M4
.Z3      ANOP
         BZ    NOLOC                    NO
         BAL   RWKB,ILIST               GET ILIST ADDRESS
         CLI   IDLOC+1(RWKC),0          CPU ID FOR AUDIO
         BE    NOIDAUD                  NONE SPECIFIED
         SPACE
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW63-MODCCW)
NOIDAUD  EQU   *
         TM    LCBSTICS,C3270           3270 DEVICE?             S99228
         BZ    NOC3270                  BRANCH NO                S99228
         TM    LCBSTICS+ONE,CLOCAL      LOCAL DEVICE?            S99228
         BZ    NOC3270                  BRANCH NO                S99228
         LA    RCCW,LCBCPA+16           SET CCW ADDR             S99228
         BALR  RLNK1,REXPND             LINK TO EXPAND           S99228
         DC    AL2(MODCCW73-MODCCW)     3270 LOCAL READ CH PGM   S99228
NOC3270  EQU   *                                                 S99228
         AIF   ('&GEN' EQ 'QTAM').M4                           @YA03846
         TM    LCBTSOB,LCBTSBUF .       IS THIS A TSO LINE          TSO
         BZ    NOSW1 .                  BRANCH NO                   TSO
         MVC   LCBSTART,LCBLSPCI .      START READ ON BUFFER        TSO
NOSW1    EQU   *
.M4      ANOP
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW64-MODCCW)
         AIF   ('&GEN' EQ 'MINI').Z5
NOLOC    EQU   *
.Z4      ANOP
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION     S99228
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BO    SAMESET                  YES, NO RESET ACK CNTR   S99228
         OI    LCBMSGFM,LCBACKI         FIRST ACK ON P MPT IC OD S99228
SAMESET  EQU   *                                                 S99228
         BAL   RWKB,ILIST               LOCATE INVITATION LIST   S99228
         AIF   ('&GEN' EQ 'QTAM').L446                           S22028
         AIF   ('&GEN' EQ 'BISC').L446                           S22028
         L     RWKA,TRMDESTQ-1          GET ADDRESS OF QCB       S22028
         TM    QCBFLAG-IEDQQCB(RWKA),QCBTSSES IS THIS TSO SESSIONS22028
         BZ    AUTOPOLL                 BRANCH ON NO             S22028
         TM    LCBSTICS+2,CNOIDLES      IS THIS 2260 REMOTE         TSO
         BO    CHKRESTR                 BRANCH ON YES         S22028TSO
         TM    LCBSTICS,C3270           IS THIS A 3270 TERM   S22028TSO
         BZ    AUTOPOLL                 BRANCH ON NO             S22028
         TM    LCBSTICS+1,CBISYNC       IS THIS A 3270 REMOTE    S22028
         BZ    AUTOPOLL                 BRANCH ON NO             S22028
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION     S99228
         TM    LCBXFLAG,LCBERPND        SOH%R PENDING?           S99228
         BO    AUTOPOLL                 BRANCH YES               S99228
         L     RWKA,TRMDESTQ-ONE        RESTORE DEST QCB ADDR    S99228
CHKRESTR EQU   *                                                 S22028
         CLI   LCBTPCD+11,X'BE'         IS START MI TO BE SENT   S22028
         BE    SNDSMI                   BRANCH ON YES            S22028
         TM    QCBTSOF2-IEDQQCB(RWKA),QCBDSSMI HAS START MI GONE S22028
         BO    AUTOPOLL                 YES, BRANCH              S22028
         MVI   LCBTPCD+11,X'BE'         SET TP CODE FOR SMI         TSO
         TM    LCBSTICS,C3270           IS THIS A 3270 TERM   S22028TSO
         BO    WRADD327                 BRANCH ON YES         S22028TSO
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE        TSO
         DC    AL2(MODCCW51-MODCCW)                                 TSO
         BR    R2                       RETURN                      TSO
WRADD327 EQU   *                                              S22028TSO
         MVI   LCBMSGFM,AVTEZERO        RESET ACK COUNTER     S22028TSO
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE  S22028TSO
         DC    AL2(MODCCW44-MODCCW)                           S22028TSO
SNDSMI   EQU   *                        TSO
         TM    QCBTSOF2-IEDQQCB(RWKA),QCBDSSMI HAS WCC BEEN SENT S22028
         BO    CHK3270R                 YES, BRANCH              S22028
SNDSMI1  EQU   *                                                 S22028
         OI    QCBTSOF2-IEDQQCB(RWKA),QCBDSSMI SET START MI SENT    TSO
         TM    LCBSTICS,C3270           IS THIS A 3270 TERM     S22028
         BO    SNDRESTR                 BRANCH ON YES         S22028TSO
         MVI   LCBTPCD+11,AVTEZERO      RESET TP CODE               TSO
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE        TSO
         DC    AL2(MODCCW90-MODCCW)                                 TSO
SNDRESTR EQU   *                                              S22028TSO
         L     RLNK1,DCBSCTAD-1         ADDR SP. CHAR. TABLE   @OZ09276
         SR    RWKB,RWKB                CLEAR WORK REGISTER    @OZ09276
         IC    RWKB,0(RLNK1)            PICK UP EOT OFFSET     @OZ09276
         AR    RLNK1,RWKB               POINT TO EOT ENTRY     @OZ09276
         CLI   ONE(RLNK1),ASCIIEOT      IS IT 3270 ASCII       @OZ09276
         BNE   EBCDWCC                  NO, MUST BE EBCDIC     @OZ26670
         OI    LCBTPCD+11,X'01'         INDICATE ASCII         @SA71925
EBCDWCC  EQU   *                                               @SA71925
         CLI   QCBSATCT-IEDQQCB(RWKA),ZERO IS THIS LINE ZERO    SA68050
         BNE   SNDREST1                 NO, BRANCH              SA68050
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE    SA68050
         DC    AL2(MODCCW93-MODCCW)                             SA68050
         BR    R2                       RETURN                  SA68050
SNDREST1 EQU   *                                                SA68050
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE  S22028TSO
         DC    AL2(MODCCW92-MODCCW)                           S22028TSO
         BR    R2                       RETURN                S22028TSO
CHK3270R EQU   *                                                 S22028
         TM    LCBSTICS,C3270           IS THIS A 3270 TERM   S22028TSO
         BZ    SNDSMI1                  NO, BRANCH               S22028
         MVI   LCBTPCD+11,AVTEZERO      RESET TP CODE            S22028
         B     AUTOPOLL                 BRANCH                   S22028
AUTOPOLL EQU   *                                                 S22028
         BAL   RWKB,ILIST               LOCATE INVITATION LIST   S22028
.L446    ANOP                                                    S22028
         TM    3(RWKC),AUTOPL           AUTO POLL IN USE         S22028
         BZ    TRSTCTL                  BRANCH NO                S22028
         L     RWKA,LCBSCBA-1 .         GET CURRENT WCB ADDRESS
         USING IEDQSCB,RWKA
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN EXTENDED LOCK
         BM    TRSTCTL .                BRANCH YES, DON'T WANT A
*                                         DIFFERENT SOURCE TERMINAL
         DROP  RWKA
* A U T O P O L L    L I N E
         SPACE 1
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION     S99228
         TM    LCBXFLAG,LCBERPND        SOH%R MESSAGE PENDING?   S99228
         BO    GETSOHR                  BRANCH YES               S99228
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BZ    AUTOREG                  BRANCH NO                S99228
GETSOHR  EQU   *                                                 S99228
         NI    LCBXFLAG,LCBGPSTP        RESET GENERAL POLL INDIC S99228
         BALR  RLNK1,REXPND             BRANCH TO EXPAND ROUTINE S99228
         DC    AL2(MODCCW28-MODCCW)     GENPOLL READ INIT OFFSET S99228
AUTOREG  EQU   *                                                 S99228
.L423    ANOP                                                    S99228
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE
         DC    AL2(MODCCW26-MODCCW)
         SPACE 2
         SPACE 2
.Z5      ANOP
* L O C A L    D E V I C E
         SPACE 1
* C O N T E N T I O N    L I N E
         SPACE 1
CONTT    EQU   *                                               @OZ14183
*                                       LEASED+DIALWITH ENABLE AND
*                                         DIAL REQUESTS.
         L     RWKA,TRMDESTQ-1          GET ADDR OF DEST QCB   @OZ14183
         TM    QCBFLAG-IEDQQCB(RWKA),QCBTSSES IS IT TSO SESSION@OZ14183
         BO    GORCV                    BRANCH YES-CONTINUE RCV@OZ14183
         TM    LCBSTAT1,LCBOCNI         STOPLINE IN PROGRESS   @OZ14183
         BO    GOSEND                   BRANCH YES             @OZ14183
         TM    LCBSTAT2,LCBSNDPR        SEND SCH WANT LINE?    @OZ14183
         BZ    GORCV                    BRANCH-NO              @OZ14183
GOSEND   EQU   *                                               @OZ14183
         MVC   LCBQCBA(THREE),AVTBSCAN+1 SET BD ADDRESS        @OZ14183
         MVI   LCBPRI,PRIFSPCI-1        SET CLEANUP PRIORITY   @OZ14183
         NI    LCBSTAT2,AVTEFF-LCBSNDPR CLEAR SEND SCHED BIT   @OS79864
         LR    RPARM,RLCB                                      @OZ14183
         L     RSUPBASE,AVTEA                                  @OZ14183
         BAL   REXPND,DSPPOST           GO END SEND OPERATION  @Y17XAIX
GORCV    EQU   *                                               @OZ14183
         AIF   ('&GEN' EQ 'BISC').L19
         AIF   ('&GEN' EQ 'STSP').L20
         AIF   ('&GEN' EQ 'MINI').L21
         AIF   ('&GEN' EQ 'QTAM').L20                            A48245
         TM    LCBSTICS+1,CBISYNC       BSC DEVICE
         BZ    NOTBSC                   NO
.L19     ANOP
         L     RWKA,LCBSCBA-1           GET SCB PTR            @XA08073
         USING IEDQSCB,RWKA                                    @XA08073
         TM    SCBBSCFM,SCBNOEOT        SEND PRI W MASTER=YES? @XA08073
         BNO   NORMAL                   NO, FORGET EOT BUILD   @XA08073
         NI    SCBBSCFM,AVTEFF-SCBNOEOT RESET EOT BIT          @XA08073
         DROP  RWKA                                            @XA08073
         LA    RCCW,LCBCPA              ADDR OF CHANNEL PROGRAM@OX14790
         ST    RCCW,LCBSTART-1          SAVE FOR SIO           @XA08073
         LA    RTPCDE,LCBTPCD           TP OP CODE ADDRESS     @OX14790
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE      @XA08073
         DC    AL2(MODCCW75-MODCCW)                            @XA08073
NORMAL   EQU   *                                               @XA08073
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE
         DC    AL2(MODCCW22-MODCCW)
         AIF   ('&GEN' EQ 'BISC').L22
NOTBSC   EQU   *
.L20     ANOP
         TM    LCBTSOB,LCB2741N         2741 TERM?                  TSO
         BZ    TRY2                                                 TSO
         AIF   ('&GEN' EQ 'QTAM').L201                           A48245
         TM    LCBTSOB,LCBTSBUF         TSO IN CONTROL
         BZ    ITSTCAM                  BRANCH IF NO
         SPACE
         CLI   LCBTPCD+11,X'AB'         FIRST TIME                  TSO
         BNE   NORM41                   SEND EOT NOW                TSO
         MVI   LCBTPCD+11,0             CLEAR FIRST TIME INDIC      TSO
         BALR  RLNK1,REXPND                                         TSO
         DC    AL2(MODCCW54-MODCCW)                                 TSO
         SPACE
NORM41   EQU   *                                                    TSO
         BALR  RLNK1,REXPND                                         TSO
         DC    AL2(MODCCW52-MODCCW)                                 TSO
.L201    ANOP                                                    A48245
ITSTCAM  EQU   *
         CLI   LCBTPCD+11,X'AB'         FIRST TIME
         BNE   NOTFIRST                 BRANCH NO
         MVI   LCBTPCD+11,0             RESET FIRST TIME SWITCH
         LA    RCCW,LCBCPA              START OF CHANNEL PROG  @OZ28818
         ST    RCCW,LCBSTART-1          SAVE FOR SIO           @OZ28818
         LA    RTPCDE,LCBTPCD           TP OP CODE             @OZ28818
         BALR  RLNK1,REXPND             LINK TO EXPAND ROUTINE @OZ28818
         DC    AL2(MODCCW75-MODCCW)                            @OZ28818
NOTFIRST EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW20-MODCCW)
         SPACE
TRY2     EQU   *                                                    TSO
.L21     ANOP
         TM    LCBSTICS+2,CWTTA         WTTA
         BZ    NOTWTTA                  NO
         BALR  RLNK1,REXPND             LINK TO EXPND
         DC    AL2(MODCCW21-MODCCW)
NOTWTTA  EQU   *
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE
         DC    AL2(MODCCW20-MODCCW)
.L22     ANOP
         SPACE 2
* T R A N S    O R    S T A T I O N    C T R L
         SPACE 1
TRSTCTL  EQU   *                        STNCTL+DIAL LINE WITH ENAB
*                                         AND DIAL REQUESTS
         AIF   ('&GEN' EQ 'MINI').L22A
         AIF   ('&GEN' EQ 'QTAM').L22A
         AIF   ('&GEN' EQ 'BISC').L22A
CHK50HBN TM    LCBTSOB,LCBINHBN         ARE INHIBITS BEING USED     TSO
         BZ    STCTLC                   BRANCH ON NO                TSO
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE        TSO
         DC    AL2(MODCCW91-MODCCW)                                 TSO
STCTLC   EQU   *                                                    TSO
.L22A    ANOP
         AIF   ('&GEN' EQ 'MINI').L433                         @YA03846
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION     S99228
         NI    LCBXFLAG,LCBGPSTP        RESET GENERAL POLL INDIC S99228
.L433    ANOP                                                    S99228
         BALR  RLNK1,REXPND             GO TO EXPAND RTNE
         DC    AL2(MODCCW28-MODCCW)
         SPACE
         AIF   ('&GEN' EQ 'MINI').LE
         AIF   ('&GEN' EQ 'BISC').LE
         AIF   ('&GEN' EQ 'QTAM').LE
SPEC41   EQU   *                                                    TSO
         MVC   LCBSTICS,D41STICS        RESET CH'STICS              TSO
         MVI   LCBTPCD+10,X'AE'         SPECIAL CHECK INDICATOR     TSO
         BALR  RLNK1,REXPND             BUILD CCW'S                 TSO
         DC    AL2(MODCCW70-MODCCW)                                 TSO
.LE      ANOP
         EJECT
*
*
*        R E A D  C O N T I N U E   L O G I C
*
*
         SPACE 3
CONTINUE EQU   *
         XI    LCBSTAT1,LCBCONT         RESET CONTINUE INDICATOR
         NI    LCBSTAT2,AVTEFF-LCBRESP  RESET RESPONSE BIT
         L     RWKA,LCBCPA+12           OCNINUTE CCW
         MVC   0(8,RWKA),LCBCPA+16      REBUILD BUFFER CCW
         NI    CCWFLAGS-CCW(RWKA),AVTEFF-CCWSLI SWITCH FOR LINE END
*                                       UNIT HAS WRAPPED VIA PCI
         LA    RCCW,LCBCPA+16           CONTINUE POINT
         LA    RTPCDE,LCBTPCD+2         TP OP CODE BASE
         NI    LCBMSGFM,LCBNAK+LCBACKI+LCBEOT+LCBOLT RESET FLAGS S22025
         TM    LCBCHAIN,LCBABRTN        ABORT REQUEST
         BZ    NOABORT                  NO
         AIF   ('&GEN' EQ 'BISC').L80
         L     RWKA,DCBSCTAD-1          GET SCT ADDRESS
         CLI   AVTEZERO(RWKA),AVTEZERO  EOT SEQUENCE DEFINED
         BE    ABRTEXIT                 BRANCH IF NO
         SPACE
.L80     ANOP
         L     RWKA,LCBSCBA-1           CURRENT SCB
         USING IEDQSCB,RWKA             SCB REGISTER            SA59034
         NI    SCBBSCFM,AVTEFF-SCBNOEOT RESET EOT FLAG          SA59034
         AIF   ('&GEN' NE '' AND '&GEN' NE 'BISC').L80A          S22025
         TM    LCBMSGFM,LCBEOT .        RVI REQUEST              S22025
         BO    NOABORT                  BRANCH YES               S22025
.L80A    ANOP                                                    S22025
         BALR  RLNK1,REXPND             BUILD SEQUENCE
         DC    AL2(MODCCW72-MODCCW)
         BR    R2                       RETURN
         SPACE
NOABORT  EQU   *
         TM    LCBSTATE,LCBRECVN        READ CONTINUE
         BZ    SEND                     NO WRITE CONTINUE
         SPACE
         AIF   ('&GEN' NE '').L23
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NOBSC1                   NO
.L23     ANOP
         AIF   ('&GEN' EQ 'MINI').L24
         AIF   ('&GEN' EQ 'STSP').L24
         AIF   ('&GEN' EQ 'QTAM').L24
         SPACE
         L     RWKA,LCBSCBA-1           CURRENT SCB
         TM    SCBBSCFM,SCBTRNSP+SCBNONTR TYPE MSG DETERMINED YETS21101
         BZ    NOBSC1                   BRANCH NO DONT KNOW FORMAT
         L     RWKB,DCBDEBAD            DEB ADDRESS              X02004
         L     RWKB,DEBAPPAD-DEBNMSUB(,RWKB) VECTOR TABLE        X02004
         L     RWKC,TRMDESTQ-1  .       PICKUP DEST QCB          S22029
         DROP  RWKC                                              S99228
         USING IEDQQCB,RWKC                                      S22029
         TM    QCBDSFLG,QCBALTMH        IS TERMINAL CONNECTED TO S22029
*                                       AN ALTERNATE MH          S22029
         BZ    NOALTMH                  NO - USE OWNING MH LC    S22029
         LA    RWKB,ONE(,RWKB)          USE ALTERNATE MH         X02004
         DROP  RWKC
NOALTMH  EQU   *                        TEST FOR LC=IN OR OUT    S22029
         USING IEDQLCBX,RWKC            LCB EXTENSION ADDR       S99228
         TM    0(RWKB),LCIN             IS LC=IN SPECIFIED       X02004
         BZ    ITSLCOUT                 NO
         TM    SCBBSCFM,SCBTRNSP .      RECEIVEING TRANSPARNET   S21101
         BZ    NOBSC1                   NO, IT'S LCIN
         DROP  RWKA
         SPACE
ITSLCOUT EQU   *
         BALR  RLNK1,REXPND             GO TO EXPAND
         DC    AL2(MODCCW45-MODCCW)
.L24     ANOP
NOBSC1   EQU   *
         AIF   ('&GEN' EQ 'BISC').Z6
         TM    LCBSTICS+2,CCHECK        CHECKING
         BNZ   TESTCONT                 YES
ABRTEXIT EQU   *
         OI    LCBCSW+3,UNEX            INDICATE NO RESTART
         BR    R2                       RETURN
TESTCONT EQU   *
         TM    LCBSTICS+2,CCONTIN       CONINUTE POSSIBLE
         BZ    NOCONT                   NO
.Z6      ANOP
         BALR  RLNK1,REXPND
         DC    AL2(MODCCW46-MODCCW)
         SPACE
NOCONT   EQU   *
         BALR  RLNK1,REXPND             BUILD SEQUENCE
         DC    AL2(MODCCW56-MODCCW)     OFFSET TO SEQUENCE
         BR    R2                       REUTRN
SEND     EQU   *
         AIF   ('&GEN' NE '').L25
         TM    LCBSTICS+1,CBISYNC       BSC DEVICE
         BZ    NBS                      NO
.L25     ANOP
         AIF   ('&GEN' EQ 'STSP').L26
         AIF   ('&GEN' EQ 'MINI').L26
         AIF   ('&GEN' EQ 'QTAM').L26
         BALR  RLNK1,REXPND
         DC    AL2(MODCCW48-MODCCW)
         BR    R2                       RETURN
.L26     ANOP
         AIF   ('&GEN' EQ 'BISC').L27
NBS      EQU   *
         SPACE 1                                                SA62991
         BALR  RLNK1,REXPND             BUILD CCW
         DC    AL2(MODCCW50-MODCCW)
.L27     ANOP
         EJECT
WRRESP   EQU   *
         TM    LCBSTICS+2,CCHECK        CPABLE OF RESPONSE
         BZ    EXRESP1                  NO
         SPACE
         LA    RCCW,LCBERCCW+8          RESET CCW BASE
         ST    RCCW,LCBSTART-1          START ADDRESS
         LA    RTPCDE,LCBTPCD+2         SET TP OP CODE BASE     SA60341
.L28     ANOP
         AIF   ('&GEN' EQ 'STSP').L29
         AIF   ('&GEN' EQ 'MINI').L29
         AIF   ('&GEN' EQ 'QTAM').L29
         TM    LCBSTAT2,LCBSYNC         BSC
         BNO   TESTNAK                  BR NO                   SA60341
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION    SA60341
         TM    LCBXFLAG,LCBGPCTV        GENR'L POLL IN PROGRESS SA60341
         BO    WRACK                    BR YES                  SA60341
         TM    LCBSTICS+1,CCONTENT      CONTENTION DEVICE      @SA72446
         BNO   RESET                    NO, DO WRITE RESET     @SA72446
         TM    LCBSTAT1,LCBSENDN        SEND OPERATION         @SA72446
         BO    RESET                    YES, DO WRITE RESET    @SA72446
         LA    RCCW,LCBCPA+32           GET ADDR OF WRITE ACK  @SA72446
         ST    RCCW,LCBSTART-1          CCW TO START ON        @SA72446
         LA    RCCW,LCBCPA+16           RESET CCW BASE         @SA72446
         B     KEEPSET                  AND RETURN             @OX12562
RESET    EQU   *                                               @SA72446
         BALR  RLNK1,REXPND             GO WRITE RESET          SA60341
         DC    AL2(MODCCW72-MODCCW)     RESET MODEL CCW         SA60341
         B     EXRESP                   EXIT                    SA60341
TESTNAK  EQU   *                                                SA60341
.L29     ANOP
         SPACE
         TM    LCBMSGFM,LCBNAK .        REQUEST FOR NAK RESPONSE S21101
         BNZ   WRACK                    BR YES                 @SA69649
         AIF   ('&GEN' EQ 'MINI').L443                         @YA03846
         TM    LCBSTICS,CUMASK          2260 UNDER GENPOLL?      S99228
         BZ    REGRESP                  NO SEND NORMAL RESP      S99228
.L443    ANOP                                                  @SA69649
WRACK    EQU   *                                               @SA69649
         BALR  RLNK1,REXPND             LINK TO EXPAND RTN       S99228
         DC    AL2(MODCCW60-MODCCW)     EXPANDER OFFSET          S99228
         B     EXRESP                   SKIP SPECIFIC POLL CODE  S99228
REGRESP  EQU   *                                                 S99228
         TM    LCBSTICS+2,CCONTIN       1030 OR 1060 TERMINAL?  SA55925
         BZ      WRACK                  YES-BRANCH TO WRITE     SA55925
*                                        CIRCLE Y NOT CIRCLE A  SA55925
         AIF   ('&GEN' EQ 'BISC').L4R1
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW58-MODCCW)
.L4R1    ANOP
EXRESP   EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BZ    EXRESP1                  NO
         LA    RCCW,LCBCPA              SET TO CAHNGE TIC
         OI    LCBERCCW+12,CCWCD        CHANGE FLAGS
         ST    RCCW,LCBERCCW+16         SET IN CCW
         MVI   LCBERCCW+16,CCWTIC       SET COMMAND CODE
         BR    R2                       RETURN DO EXCP
EXRESP1  EQU   *
         LA    RCCW,LCBCPA+16           ESET CCW BASE
         AIF   ('&GEN' EQ 'MINI').L453                         @YA03846
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION     S99228
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BZ    INAMESS                  NO, NO SET SPEC WRITE RE S99228
         OI    LCBERCCW+12,CCWCC+CCWSLI SET FLAGS FOR NO INTRPT  S99228
         LA    RCCW,LCBCPA+32           LOAD ADDR READ RESP IN T S99228
INAMESS  EQU   *                                                 S99228
.L453    ANOP                                                    S99228
         ST    RCCW,LCBERCCW+16         SET TIC ADDRESS
         MVI   LCBERCCW+16,CCWTIC       SET COMMAND CODE
RESPEXIT EQU   *                                               @SA72446
         LA    RTPCDE,LCBTPCD+2         RESET TP OP CODE BASE
         NI    LCBSTAT2,AVTEFF-LCBRESP  RESET
         LR    RWKB,R0                  RETURN ADDRESS
         BR    RWKB                     RETURN
         EJECT
*        ***************************************************
*        *                                                 *
*        *     W R I T E    I N I T I A L    L O G I C     *
*        *                                                 *
*        ***************************************************
         SPACE 3
MSGGEN   EQU   *
         LA    RCCW,LCBCPA+16           ADDJUST TO BYPASS MSGEN CCW
         LA    RTPCDE,LCBTPCD+2         ADJUST TP OP CODE BASE
         L     RWKA,LCBSCBA-1           GET SCB BASE            SA59034
         NI    SCBBSCFM-IEDQSCB(RWKA),AVTEFF-SCBNOEOT RESET EOT SA59034
*                                         FLAG TO FORCE ENQ     SA59034
         B     DIALTEST                 CONTINUE BUILDING
WRITINIT EQU   *
         L     RLNK1,AVTRDYA            USER EXIT ROUTINE LIST  X30X5MT
         ICM   RLNK1,SEVEN,PURGEXT(RLNK1)  LOAD EXIT ROUTINE ADDX30X5MT
         BZ    NOEXIT                   NO, PROCESS NORMAL      X30X5MT
         LR    RPARM,RTERM              LOAD TERM TABLE ADDRESS X30X5MT
         STM   RLCB,RBASE,AVTSAVE3+REGSAVE   SAVE REGS          X30X5MT
         BALR  REXPND,RLNK1             BRANCH TO EXIT ROUTINE  X30X5MT
         LM    RLCB,RBASE,AVTSAVE3+REGSAVE  RESTORE REGS        X30X5MT
         LTR   RLNK1,RLNK1              WAS RETURN CODE ZERO    X30X5MT
         BZ    DONTPOST                 YES, PROCESS NORMAL     X30X5MT
         C     RLNK1,RETURN4            RETURN CODE OF 4        X30X5MT
         BNE   DONTPOST                 NO, CONTINUE NORMALLY   X30X5MT
SIMERROR EQU   *                                               @OS77867
         MVC   LCBTTCIN(2),LCBTTBIN    TERM TO BE CONNECTED     X30X5MT
         L     RWKB,LCBSCBA-1           LOAD ADDR OF SCB        X30X5MT
         USING IEDQSCB,RWKB                                     X30X5MT
         OI    SCBERR4,SCBSLCTN+SCBTRMLN  SET ON SEL ERR        X30X5MT
         DROP  RWKB                                            @OY12260
         L     RTERM,LCBERBST            ADDR OF HDR BUFFER     X30X5MT
         L     RPARM,PRFLINK-1-IEDQPRF(RTERM) GET TXT BUFFER ADDX30X5MT
LOOPTRAN LA    RPARM,0(RPARM)            CLEAR HI BYTE          X30X5MT
         LTR   RPARM,RPARM               SEE IF ANY TEXT BUFFERSX30X5MT
         BZ    TRANENDC                  BRANCH IF NOT TO FREE  X30X5MT
*                                        HEADER AS PSEUDO ZERO LX30X5MT
         LA    RWKC,AVTBFRTB             AVAIL. BFR. QCB FOR POSX30X5MT
         ST    RWKC,0(RPARM)             STORE QCB ADDRESS      X30X5MT
         MVI   PRFPRI-IEDQPRF(RPARM),PRIBFRTB  POST PRIORTY     X30X5MT
         L     RTERM,PRFLINK-1-IEDQPRF(RPARM)  SAVE NEXT TXT BUFX30X5MT
         BAL   REXPND,DSPPOSTR           FREE TEXT BUFFERS      X30X5MT
         LR    RPARM,RTERM               SET FOR NEXT TXT IF ANYX30X5MT
         B     LOOPTRAN                  GO FREE IF PRESENT     X30X5MT
TRANENDC EQU   *                                                X30X5MT
         L     RPARM,LCBERBST          ADDRESS OF BUFFER        X30X5MT
         STCM  RPARM,SEVEN,LCBLSPCI    SET LAST BUFFER SERVICED X30X5MT
         SR    RWKB,RWKB               CLEAR REGISTER           X30X5MT
         STCM  RWKB,SEVEN,LCBERBCH     SET ZERO ADDRESS         X30X5MT
         STH   RWKB,PRFSIZE-IEDQPRF(RPARM)  STORE ZERO LENGTH   X30X5MT
         NI    PRFSTAT1-IEDQPRF(RPARM),PRFNLSTF MARK IT LAST    X30X5MT
         MVI   PRFPRI-IEDQPRF(RPARM),PRIMHBFR  P3ST PRIORITY    X30X5MT
         L     RWKB,DCBMH-1            GET MH QCB ADDR FOR POST X30X5MT
         STCM  RWKB,7,PRFQCBA-IEDQPRF(RPARM)  SET POST ADDR    @G36XRYP
         BAL   REXPND,DSPPOST          POST BUFFER TO MH       @Y17XAIX
DONTPOST EQU   *                                                X30X5MT
         LA    REXPND,EXPAND           SET UP LINK FOR EXPAND   X30X5MT
NOEXIT   EQU   *                                                X30X5MT
         TM    LCBSTAT2,LCBDIAL         DIAL LINE              @OS77867
         BZ    NODIAL                   BRANCH-NO              @OS77867
         CLI   LCBTSTSW,AVTEFF          REQUEST FOR DIALUP     @OS77867
         BNE   NODIAL                   BRANCH-NO              @OS77867
         L     RWKA,TRMDESTQ-1          GET QCB ADDRESS        @OS77867
         CLI   QCBSTPRI-IEDQQCB(RWKA),CALLOPT CLOCK OR CINTVL  @OS77867
         BL    NODIAL                   BRANCH-NO              @OS77867
         L     RWKA,DCBDEBAD            GET DEB ADDRESS        @OX16705
         USING DEBTCBAD,RWKA            ADDRESSABILTIY         @OX16705
         TM    DEBOPATB,OUTONLY         OUTPUT ONLY DEVICE?    @OX16705
         BO    NODIAL                   BRANCH IF YES-DIAL     @OX16705
         L     RWKA,LCBSCBA-1           GET SCB ADDRESS        @OS77867
         OI    SCBERR4-IEDQSCB(RWKA),SCBCONNN SET DIAL ERROR   @OS77867
         B     SIMERROR                 GO SIMULATE OUTPUT ERR @OS77867
NODIAL   EQU   *                                               @OS77867
         LA    RCCW,LCBCPA              SET CCW BASE
         LA    RTPCDE,LCBTPCD           TP OP CODE AREA
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW30-MODCCW)
*              TIC (WRITE IDLES)
         LA    RWKA,LCBCPA              DATA DDRESS FOR TIC
         ST    RWKA,LCBCPA+8            SAVE IN TIC COMMAND
         MVI   LCBCPA+8,CCWTIC          TIC OP CODE
         LA    RTPCDE,ONE(R0,RTPCDE)    BUMP TP REGISTER
         LA    RCCW,EIGHT(R0,RCCW)      BUMP CCW BASE
         MVI   LCBCPA+12,FLAG           FLAG INDICATES WHICH WRITE
*                                       IDLES TO USE AFTER CONTACT
DIALTEST EQU   *
         AIF   ('&GEN' NE '' AND '&GEN' NE 'BISC').Z66A          S21101
*                                                                S21101
*        SCBNOEOT IS SET FOR BSC DIAL LINE WITH SEND PRIORITY BY S21101
* LINE END APPENDAGE ON OUTPUT AND BY SEND SCHEDULER WHEN BYPASSIS21101
* CONTROL TO RECEIVE SCHEDULER (ALTERNATE SEND AND RECEIVE ON BSCS21101
* DIAL LINE.  WHENEVER AN EOT IS TRANSMITTED ON A BSC LDIAL LINE S21101
* LINE MUST BE MONITORED FOR A RECEVE OPERATION.  FOR SEND PRIORIS21101
* AN EOT IS NOT SENT AT THE END OF A MESSAGE IN ORDER TO FLUSH THS21101
* OUTPUT QUEUE.  THE TERMINAL IS STILL IN TEXT MODE AND THE ACK  S21101
* COUNTER MUST NOT BE RESET.   THIS HAS A BEARING ON THE WRITE   S21101
* INITIAL CONTACT  CHANNEL PROGRAM.  THERE IS NO LINE BID        S21101
* REQUIRED.  THE CHANNEL PROGRAM WILL START ON THE WRITE ESCAPE  S21101
* SEQUENCE OR ON THEWRITE IDLES LOOP.  SCBNOEOT IS RESET IN THIS S21101
* MODULE ON A DISABLE OR BY ERP OR LINE END .  ERP OR LINE END WIS21101
* RESET THE BIT ON A TCAM OR DEVICE ABORT (I. E. AN EOT WAS SENT S21101
* OR RECEVIED.)                                                  S21101
*                                                                S21101
         NI    LCBMSGFM,LCBACKI .       RESET FORMAT BITS EXCEPT S21101
*                                         ACK COUNTER            S21101
         L     RWKA,LCBSCBA-1 .         GET SCB BASE             S21101
         USING IEDQSCB,RWKA .                                    S21101
         TM    SCBBSCFM,SCBNOEOT .      BSC DIAL SEND PRIORITY INS21101
*                                         TEXT MODE              S21101
         DROP  RWKA .                                            S21101
         BO    LETACK .                 BRANCH IF YES            S21101
         MVI   LCBMSGFM,AVTEZERO .      RESET FORMAT BITS AND ACKS21101
*                                         COUNTER                S21101
LETACK   EQU   *                                                 S21101
.Z66A    ANOP                                                    S21101
         TM    LCBSTAT2,LCBMSGNN        MSGGEN                 @OY12395
         BO    NOTMSG1                  YES,BRANCH             @OY12395
         NI    LCBSTAT2,AVTEFF-LCBNEGRP POLL TERM ONE MORE TIME@OY12395
NOTMSG1  EQU   *                                               @OY12395
         TM    LCBSTAT2,LCBRESP         OWE A RESPONSE
         BZ    NORP                     NO
         SPACE
         AIF   ('&GEN' EQ 'MINI').Z15XX
         AIF   ('&GEN' EQ 'QTAM').Z15XX
         AIF   ('&GEN' EQ 'BISC').Z15XX
         TM    LCBTSOB,LCBTSBUF         IS THIS TIME SHARING BUFFER TSO
         BO    SNDRSP                   BRANCH ON YES               TSO
.Z15XX   ANOP
         CLC   LCBTTBIN,LCBTTCIN        SAME TERMINAL
         BE    OWERSP                   YES
         SPACE
SNDRSP   EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BNZ   OWERSP                   YES
SNDRSP1  EQU   *                                                SA55925
         BAL   R0,WRRESP                BUILD RESPO55SE
         MVI   LCBERCCW+12,FLAG         ONLY SLI FLAG            X02004
         B     NORP                     RESUME CHANNEL PROG BUILD
         SPACE
OWERSP   EQU   *
         AIF   ('&GEN' NE '' AND '&GEN' NE 'BISC').L32         @OY14092
         OI    LCBMSGFM,LCBACKI .       FIRST CONVERSATIONAL REPLS21101
*                                         IS ODD ACK             S21101
         TM    LCBSTAT2,LCBSYNC         BSC
         BNZ   STIDLES                  BRANCH YES
.L32     ANOP
         TM    LCBSTICS+2,CNOIDLES      IS THIS 2260 REMOTE
         BO    TSMSGN                   BRANCH ON YES
         TM    LCBSTICS+2,C2760         2760
         BO    STIDLES                  YES, START ON DILESOR MSGGEN
         SPACE
         TM    LCBSTICS+2,CCONTIN       CAPABLE OF RESPONS
         BZ    SNDRSP1                  BRANCH IF NOT           SA55925
         BALR  RLNK1,REXPND             WR EOA AND TIC
         DC    AL2(MODCCW62-MODCCW)
         SPACE
.Z15     ANOP
         AIF   ('&GEN' EQ 'MINI').L35
NORP     EQU   *
         TM    LCBSTAT2,LCBDIAL         DIAL LINE
         BZ    WRLSD                    NO, LEASED LINE
         SPACE 3
********       D I A L    L I N E S      ********
         SPACE 2
         CLI   LCBTSTSW,AVTEFF          THIS A DIAL UP REQUEST
         MVI   LCBTSTSW,F0              RESET FOR SUBSEQUENT SNED
         AIF   ('&GEN' NE 'BISC').LI2A
         BNE   WRLSD
         AGO   .LI1
.LI2A    ANOP
         BNE   NODIALUP                 NO
         AIF   ('&GEN' EQ 'BISC').LI1
         AIF   ('&GEN' NE '').LI2
         TM    LCBSTAT2,LCBSYNC        BSC LINE
         BZ    NOSYNC                  NO
.LI1     ANOP
         L     RWKA,LCBSCBA-1 .         GET SCB POINTER          S21101
         USING IEDQSCB,RWKA .                                    S21101
         NI    SCBBSCFM,AVTEFF-SCBNOEOT RESET EOT FLAG           S21101
         DROP  RWKA .                                            S21101
         MVI   LCBMSGFM,AVTEZERO .      RESET ALL BITS           S21101
         TM    LCBTPCD+11,DISDLEOT .    WRITE DLE EOT            S21101
         BO    GODLEEOT .               YES                      S21101
         OI    LCBTPCD+11,DISDLEOT      SET FOR THE NEXT TIME   SA53632
*                                         SO AS TO WRITE ABORT  SA53632
*                                         SEQUENCE BEFORE DISAB SA53632
         LA    RTPCDE,ONE(,RTPCDE) .    ADJUST TP CODE BASE      S21101
         LA    RCCW,EIGHT(,RCCW) .      ADJUST CCW BASE          S21101
         ST    RCCW,LCBSTART-1 .        SET START ADDRESS        S21101
         B     NOSYNC .                 CONTINUE                 S21101
GODLEEOT EQU   * .                                               S21101
         BALR  RLNK1,REXPND            LINK TO EXPAND
         DC    AL2(MODCCW01-MODCCW)
         B     NEXTCCW
NOSYNC   EQU   *
.LI2     ANOP
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW02-MODCCW)
NEXTCCW  EQU   *
         AIF   ('&GEN' EQ 'BISC').L36
         TM    LCBSTICS+1,CTWX          TWX
         BZ    NOTTWX
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW32-MODCCW)
         BR    R2                       RETURN
NOTTWX   EQU   *
         AIF   ('&GEN' EQ 'STSP').L37
         AIF   ('&GEN' EQ 'QTAM').L37
         TM    LCBSTICS+1,CBISYNC
         BZ    STSTOP
.L36     ANOP
         BAL   RWKB,ILIST               GET ILIST ADDRESS
         CLI   IDLOC+1(RWKC),AVTEZERO   ANY ID'S FOR CPU
         BE    NOID                     BRANCHNO
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW14-MODCCW)
         B     ENDTEST                  CONTINUE IN LINE TESTING
NOID     EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW15-MODCCW)
ENDTEST  EQU   *
         TM    LCBSTICS+2,CENDCTL       END/END CONTROL
         BNZ   ENDCTL                   BRANCH IF END-END CTL
         SH    RCCW,H8                  BAK UP TO PREVIOUX
         OI    CCWFLAGS,CCWSLI          SET FLAG FOR APPENDAGE
         BR    R2                       RETURN
ENDCTL   EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW41-MODCCW)
         BR    R2                       RETURN
.L37     ANOP
         AIF   ('&GEN' EQ 'BISC').L35
STSTOP   EQU   *
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW36-MODCCW)
         TM    LCBSTICS+1,CSTNCTL       STATION CONTROL
         BO    WRMLPT                   BRANCH YES
NODIALUP EQU   *
         TM    LCBSTICS+1,CTWX          TWX
         BZ    WRLSD                    NO
         NI    LCBSTICS+1,AVTEFF-CTWX   TURNOFF TWX BIT
*                                         BUFFERS WILL BE POSTED
*                                         TO MH BY ACTIVATE
.L35     ANOP
.M6      ANOP
STIDLES  EQU   *
         LA    RWKA,LCBCPA              WRITE IDLES ADDRESS
         ST    RWKA,LCBSTART-1          SET IOS PARAMETER
         BR    R2                       RETURN
         SPACE 3
*********      L E A S E D    L I N E S        *********
         SPACE 2
         AIF   ('&GEN' NE 'MINI').N1
NORP     EQU   *
         NI    LCBSTAT2,AVTEFF-LCBRESP
.N1      ANOP
WRLSD    EQU   *
         TM    LCBSTICS+1,CLOCAL+CAUDIO LOCAL OR AUDIO
         BZ    NOAUD                    NO
         MVC   LCBTTCIN,LCBTTBIN        SET CONNECTION DESIRED
TSMSGN   EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BZ    NOTMSGN                  NO
         LA    RCCW,LCBCPA              START POINT
         ST    RCCW,LCBSTART-1          START OF CHAN PROG
         AIF   ('&GEN' EQ 'BISC').TS11                         @YA03846
         AIF   ('&GEN' EQ 'MINI').TS11                           A48276
         TM    LCBSTICS+2,CNOIDLES      IS IT 2260R              A48276
         BO    TSRESP                   IF SO, BUILD ACK RESP    A48276
.TS11    ANOP                                                    A48276
         BR    R2                       RETURN
NOTMSGN  EQU   *
*        SIMULATE 'ADDRESSING' SEQUENCE FOR 2260 LOCAL FOR SCREEN
* TO MODIFY  WRITE COMMAND.
         AIF   ('&GEN' EQ 'MINI').L4R6                         @YA03846
         TM    LCBSTICS,C3270           3270 DEVICE?             S99228
         BZ    NOL3270                  BRANCH NO                S99228
         TM    LCBSTICS+ONE,CLOCAL      LOCAL DEVICE?            S99228
         BZ    NOL3270                  BRANCH NO                S99228
         OI    LCBCHAIN,LCBEXCP         EXCP AT ASSOCIATION      S99228
         LA    RCCW,LCBCPA+16           SET CCW ADDR             S99228
         BALR  RLNK1,REXPND             LINK TO EXPAND           S99228
         DC    AL2(MODCCW74-MODCCW)     3270 LOCAL WRITE CH PGM  S99228
         BR    R2                       RETURN TO ACTIVATE       S99228
NOL3270  EQU   *                                                 S99228
.L4R6    ANOP
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW29-MODCCW)
         OI    LCBCHAIN,LCBEXCP         DO EXCP AT ASSOCIAION
         BR    R2 .                     RETURN TO ACTIVATE       A41027
NOAUD    EQU   *
         TM    LCBSTICS+1,CCONTENT+CXMITCTL CONTENTION OR XMITCTL
         BZ    WRMLPT
         SPACE 2
* C O N T E N T I O N    L I N E
         SPACE 1
         AIF   ('&GEN' NE '').L38
         TM    LCBSTICS+1,CBISYNC       BSC DEVICE
         BZ    NOBSCCT
.L38     ANOP
         AIF   ('&GEN' EQ 'STSP').L39
         AIF   ('&GEN' EQ 'MINI').L41
         AIF   ('&GEN' EQ 'QTAM').L39
         L     RWKA,LCBSCBA-1           GET SCB POINTER          S21101
         USING IEDQSCB,RWKA .                                    S21101
         TM    SCBBSCFM,SCBNOEOT .      DIAL WITH SEND PRIORITY  S21101
*                                         IN TEXT MODE           S21101
         DROP  RWKA .                                            S21101
         BZ    NOTEOT .                 BRANCH IF NO             S21101
         SPACE 1                                                 S21101
         TM    LCBSTICS+2,CENDCTL .     END TO END CONTROLS      S21101
         BO    ENDCTL .                 BRANCH IF YES TO BUILD   S21101
*                                         WRITE ESCAPE  AND READ S21101
         SPACE 1                                                 S21101
         OI    LCBSTAT2,LCBRESP .       SET FOR ACTIVATE TO POST S21101
*                                         BUFFERS.  THERE IS NO  S21101
*                                         SELECTION SEQUENCE.    S21101
         B     STIDLES .                START ON WRITE SYNS      S21101
         SPACE 2                                                 S21101
NOTEOT   EQU   *                                                 S21101
         TM    LCBSTICS+2,CENDCTL       END - END CONTROLS
         BZ    ITSCPU                   NO, MUST BE CPU
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW40-MODCCW)
         BR    R2                       RETURN
         SPACE
ITSCPU   EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW43-MODCCW)
         BR    R2                       RETURN
.L39     ANOP
         AIF   ('&GEN' EQ 'BISC').L40
NOBSCCT  EQU   *
         TM    LCBSTICS+2,CWTTA         WORLD TRADE
         BZ    NOWTTA                   BR NO
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW42-MODCCW)
NOWTTA   EQU   *
         TM    LCBTSOB,LCB2741N         SEE IF 2741 TERM            TSO
         BZ    NOTS                     BRANCH NO
         TM    LCBTSOB,LCBCIRCD         CIRCLE D SENT LAST          TSO
         BO    TSNOD                                                TSO
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW38-MODCCW)
         SPACE 2
.L41     ANOP
NOTS     EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW39-MODCCW)
         AIF   ('&GEN' EQ 'MINI').L40
TSNOD    EQU   *                                                    TSO
         LA    RWKA,LCBCPA              START I/O ON IDLES          TSO
         ST    RWKA,LCBSTART-1                                      TSO
         BR    R2                                                   TSO
         SPACE
.L40     ANOP
* M U L T I P O I N T    L I N E
         SPACE 1
WRMLPT   EQU   *                        LEASED +DIAL-2740,1050
         AIF   ('&GEN' EQ 'MINI').L40A                           S22026
         AIF   ('&GEN' EQ 'STSP').L40A                           S22026
         AIF   ('&GEN' EQ 'QTAM').L40A                           S22026
         TM    LCBSTICS+1,CBRDCAST .   FAST SELECT ?             S22026
         BNO   NOFSTSEL .              BRANCH NO                 S22026
         BALR  RLNK1,REXPND .          GO TO EXPAND              S22026
         DC    AL2(MODCCWFS-MODCCW) .                            S22026
NOFSTSEL EQU   * .                                               S22026
.L40A    ANOP                                                    S22026
         TM    LCBSTICS+2,CNOIDLES      NO IDLES DEFINED
         BNZ   ITSTV                    BRANCH YES
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'STSP').L40B      SA69087
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'QTAM').L40B      SA69087
         TM    LCBSTAT2,LCBSYNC         BSC ?                   SA69087
         BZ    NTSOBSC                  NO, NOT BI-SYNC         SA69087
         MVI   LCBTPCD+11,0             RESET WCC FLAG IF ON    SA69087
NTSOBSC  EQU   *                                                SA69087
.L40B    ANOP                                                   SA69087
         BALR  RLNK1,REXPND             GO TO EXPAND ROUTINE
         DC    AL2(MODCCW44-MODCCW)
ITSTV    EQU   *
         BALR  RLNK1,REXPND             LINK TO EXPAND
         DC    AL2(MODCCW51-MODCCW)
         OI    LCBCHAIN,LCBEXCP         EXCP TO BE DONE LATER
         AIF   ('&GEN' EQ 'BISC').TS12                         @YA03846
         AIF   ('&GEN' EQ 'MINI').TS12                           A48276
*  CAN GET HERE FOR MSGGEN RESP ON 2260R. MAKE SURE IS MSGGEN    A48276
* BECAUSE CAN GET HERE FOR ANY 2260R WRITE.                      A48276
         TM    LCBSTAT2,LCBMSGNN        IS IT A MSGGEN           A48276
         BCR   8,R2                     BR NO. DO NOT WANT RESP  A48276
*                                       TO NON-MSGGEN WRITES     A48276
TSRESP   EQU   *                                                 A48276
         LA    RCCW,LCBERCCW+12         RESPONSE AREA FOR 2260R  A48276
*                                       MSGGEN MESSAGES          A48276
         ST    RCCW,LCBCPA+48           READ AREA FOR RESPONSE   A48276
         MVI   LCBCPA+48,CCWREAD        READ COMMAND             A48276
         LA    RCCW,2                   READ COUNT               A48276
         ST    RCCW,LCBCPA+52           COUNT TO CCW             A48276
         MVI   LCBTPCD+6,TPRSPMG        RESP MSG INDEX           A48276
         LA    RCCW,LCBCPA+48           FOR TIC TO RESP          A48276
         ST    RCCW,LCBCPA+8            FOLLOW MSGGEN WRITE      A48276
         MVI   LCBCPA+8,CCWTIC          STORE TIC                A48276
         MVI   LCBCPA+4,CCWCC+CCWSLI    SLI AND CMD CHAIN      @SA76694
.TS12    ANOP                                                    A48276
         BR    R2                       RETURN
H8       DC    H'8'
LCBBKUP  DC    AL2(LCBERB-IEDQLCB)      OFFSET ERB FROM LCB
H72      DC    H'72' .                                              TSO
*  OPTLIST--OFFSET TO IEDQAE,LENGTH,OFFSET TO OPT FIELD,REG 15 INDIC
OPTLIST  DC    AL1(20),XL3'040010' .    PARM LIST FOR IEDQAE        TSO
         EJECT
*
*        *****************************************
*        *                                       *
*        *     E X P A N D    R O U T I N E      *
*        *****************************************
         SPACE 1
*        THIS ROUTINE EXPAND THE SUBSET OF CHANNEL PROGRAM PROVIDED
*              FIRST  - BUILD CCW IN CHANNEL PROGRAM AREA(LCBCPA).
*              SECOND - SET-UP TP CODE IN LCBTPCD.
         SPACE 2
         USING *,REXPND                                        @OS77867
EXPAND   DS    0H
         LA    RMOD,MODCCW              LOAD MODEL CHAN PROG TABLE AD.
         DROP  REXPND                                          @OS77867
         AH    RMOD,0(RLNK1)            ADD OFFSET
EXLOOP0  EQU   *
         LA    REXPND,EXPAND            REATORE REXPND REGISTER
         CLI   0(RMOD),X'FF'            END OF SUBSET
         BE    2(RLNK1)                 YES,RETURN
         LA    REXPND,EXPRTN            SET-UP RETURN ADDRESS
         SR    RWKB,RWKB                CLEAR WORK REGISTER
         SR    RWKA,RWKA                CLEAR REGISTER
         STM   RWKA,RWKB,CCW            CLEAR CCW
         IC    RWKA,0(RMOD)             OFFSET IN EXPANDEER TABLE
         LH    RWKA,ORGTB1(RWKA)        GET OFFSET FOR EXPANDER ROUTINE
         B     ORGRTN(RWKA)             AND BRANCH
*
* RETURN HER FROM EXPANDER ROUTINES
* RWKA CONTAINS THE CCW DATA ADDRESS
*
EXPRTN   EQU   *
         ST    RWKA,CCWADDR-1           SET DATA ADDRES
         SR    RWKB,RWKB                CLEAR REGISTER
         IC    RWKB,0(RMOD)             OFFSET IN EXPANDER TABLE
         IC    RWKA,ORGTB1+2(RWKB)      PICK-UP OP CODE
         STC   RWKA,CCWOPCDE            AND STORE IT
EXPRTN0  EQU   *                                                SA57685
         MVC   CCWFLAGS(1),1(RMOD)      YES, SET PROVIDED FLAGS
*
* SET-UP TP CODE IN LCB(LCBTPCD)
*        FOR EACH CCW A TP CODE IS REQUIRED
*
         IC    RWKB,ORGTB1+3(RWKB)      PICK-UP TP CODE
         STC   RWKB,ZERO(R0,RTPCDE)     SET TP OP CODE
         LA    RTPCDE,ONE(R0,RTPCDE)    BUMP TP OP CODE POINTER
         LA    RCCW,EIGHT(R0,RCCW)      BUMP CCW BASE
*
* RETURN HERE FROM EXPANDER ROUTINES WHEN NO EXPAND IS REQUIRED
*
         LA    RMOD,TWO(R0,RMOD)        POINT TO NEXT INTRY
         B     EXLOOP0                  BUILD NEXT CCW
         EJECT
*
*        E X P A N D E R    R O U T I N E S
*        THE FUCTION OF THE EXPANDER ROUTINES IS ...
*              - SET THE COUNT IN THE CCW
*              - LOAD THE CCW DATA ADDRESS IN RWKA
*              - RETURN TO THE EXPAND ROUTINE (EXPRTN)
*
         SPACE 3
ORGRTN   DS    0H
         SPACE 2
*        SENSE EXPANDER
*        EXPANDERS FOR ANY VALID ADDRESS
NOPRT    EQU   *
PREPRT   EQU   *
RDSKPRT  EQU   *
DISBLRT  EQU   *
ENABLRT  EQU   *
SNSRT    EQU   *
         LA    RWKA,LCBCSWSV            SET SENSE FIELD
         MVI   LCBCSWSV,AVTEFF          INITIALIZE SENSE BYTE     M1582
         MVI   CCWCOUNT+1,X'01'         SET COUNT=1
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         SPACE 2
         SPACE 2
*        WRITE SPECIAL CHARACTERS EXPANDER
WRACKRT  EQU   *
         TM    LCBMSGFM,LCBNAK .        NAK REQUEST              S21101
         BO    WRNACKRT            IF YES, TAKE BRANCH
         SPACE
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z10
         AIF   ('&GEN' EQ 'QTAM').Z10
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER         S21101
         TM    LCBCHAIN,LCBABRTN .      ABROT REQUEST FOR RVI    S22025
         BO    ITSRVI .                 BRANCH IF YES            S22025
         TM    LCBMSGFM,LCBACKI .       IF ON, WRITE ACK-0       S21101
         BNZ   ACK0                     BRANCH IF ACK0 REQUEST
.Z10     ANOP
         B     ACK1                     MUST BE ACK 1
         SPACE
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z11
         AIF   ('&GEN' EQ 'QTAM').Z11
WRDLETRT EQU   *
         LA    RWKB,1(,RWKB) .          INDEX INTO TABLE         S22025
ITSRVI   EQU   * .                                               S22025
         LA    RWKB,8(,RWKB) .          INDEX INTO TABLE         S22025
WRENQRT  EQU   *
         LA    RWKB,1(,RWKB)
.Z11     ANOP
WRNACKRT EQU   *
         NI    LCBCHAIN,AVTEFF-LCBABRTN RESET ABORT REQUEST      S22025
         NI    LCBMSGFM,X'FF'-LCBNAK-LCBEOT RESET FLAGS          S22025
         LA    RWKB,1(RWKB)
ACK1     EQU   *
         LA    RWKB,1(,RWKB)
ACK0     EQU   *
         LA    RWKB,1(RWKB)
WRIDLRT  EQU   *
         LA    RWKB,1(RWKB)
WRPADRT  EQU   *
         LA    RWKB,1(RWKB)
         AIF   ('&GEN' EQ 'MINI').R65XX
         AIF   ('&GEN' EQ 'QTAM').R65XX
         AIF   ('&GEN' EQ 'BISC').R65XX
         B     SKPCHK                                               TSO
.R65XX   ANOP
WREOART  EQU   *
         AIF   ('&GEN' EQ 'MINI').R66XX
         AIF   ('&GEN' EQ 'QTAM').R66XX
         AIF   ('&GEN' EQ 'BISC').R66XX
         TM    LCBTSOB,LCBTSBUF         IS THIS TIME SHARING BUFFER TSO
         BZ    SKPCHK                   BRANCH ON NO                TSO
         TM    LCBSTICS+2,CNOIDLES      IS THIS 2260 REMOTE         TSO
         BO    WREOTRT                  BRANCH ON YES               TSO
SKPCHK   EQU   *                                                    TSO
.R66XX   ANOP
         LA    RWKB,1(RWKB)
WREOTRT  EQU   *
         L     RWKA,DCBSCTAD-1          ADDR OF SPEC CHAR TABLE
         IC    RWKB,0(RWKA,RWKB)        PICK-UP OFFSET
         AR    RWKA,RWKB                POINT TO CURRENT ENTRY
         MVC   CCWCOUNT+1(1),0(RWKA)    MOVE COUNT IN CCW
         LA    RWKA,1(RWKA)             SET-UP DATA ADDRESS
         AIF   ('&GEN' EQ 'BISC').L65
         AIF   ('&GEN' EQ 'MINI').L65
         CLI   0(RWKA),X'1F'            SENDING EOT                 TSO
         BNE   TSLV                     NO                          TSO
         TM    LCBSTICS,C2741           2741 TERM                   TSO
         BZ    TSLV                     NO                          TSO
         MVI   CCWCOUNT+1,X'01'         1 EOT 6OR 2741              TSO
TSLV     EQU   *                                                    TSO
.L65     ANOP
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         SPACE 2
*        WRITE POLLING CHARACTERS EXPANDER
WRPOLRT  EQU   *
         BAL   RWKB,ILIST               GET ILIST ADDRESS
         IC    RWKA,TWO(,RWKC)          SIZE OF EACH ENTRY
         BCTR  RWKA,0                   DECREMENT FOR INDEX BYTE
         STC   RWKA,CCWCOUNT+1          SET CCWC OUNT
         BAL   RWKB,GLCBXA              LOCATE LCB EXTENSION   @SA62375
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L463       S99228
         AIF   ('&GEN' EQ 'QTAM').L463                           S99228
         TM    LCBXFLAG,LCBERPND        SOH%R MESSAGE PENDING?   S99228
         BZ    STANDARD                 BRANCH NO                S99228
         NI    LCBXFLAG,LCBERSTP        RESET ERP POLL INDIC     S99228
         L     RWKA,LCBXRADR            LOAD ERP POLL CHAR ADDR  S99228
         BR    REXPND                   RETURN TO EXPAND ROUTINE S99228
STANDARD EQU   *                                                 S99228
.L463    ANOP                                                    S99228
         L     RWKA,LCBINVPT-ONE        LOAD CURRENT ENTRY ADDR  S99228
         MVC   LCBERADR(THREE),LCBINVPT SET POLL ADDRESS       @SA62375
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         SPACE 2
*        READ RESPONSE EXPANDER
*            READ IN BUFFER FOR RECEIVING
*            READ IN LCBERCCW FOR SENDING
RDRSPSRT EQU   *
         MVI   CCWCOUNT+1,9             SET RESONSE COUNT
         LA    RWKA,LCBERCCW+12         RESPONSE AREA
         BR    REXPND             RETURN TO EXPAND ROUTINE
RDRSPRT  EQU   *
         L     RWKC,LCBLSPCI-1          GET HEADER BUFFER ADDRESS
         LH    RWKA,PRFCOUNT-IEDQPRF(,RWKC) ^ET ORIGINAL COUNT
         LA    RWKB,2                   ASSUME TWO CHARACTER RESP
*                                         (FOR NON 2260 LOCAL)
         TM    LCBTSOB,LCBTSBUF .       IS IT TSO                   TSO
         BZ    TS2260 .                 BR IF NO                    TSO
         TM    LCBTSOB,LCB2741N .       IS IT A 2741                TSO
         BO    TS2741 .                 BR IF YES                   TSO
         TM    LCBSTICS+1,CTWX .        IS IT TWX                   TSO
         BO    TS2741 .                 BR IF YES                   TSO
TS2260   EQU   *
*
         TM    LCBSTICS+1,CLOCAL        2260 LOCAL
         BZ    NOTALOC                  BRANCH IF NOT 2260 LOCAL
         TM    LCBTSOB,LCBTSBUF .       IS THIS TSO LOCAL
         BZ    TS2741 .                 BRANCH NO
         BCTR  RWKB,0 .                 YES. NO READ RESPONSE
         SPACE
TS2741   EQU   *
         BCTR  RWKB,0                   ADJUST TO ONE CHARACTER
NOTALOC  EQU   *
         SR    RWKA,RWKB                ADJUST ORIGINAL COUNT
         STH   RWKA,PRFCOUNT-IEDQPRF(,RWKC) RESET BUFFER COUNT
         L     RWKA,PRFIOADR-1-IEDQPRF(,RWKC) DATA ADDESS
         AR    RWKA,RWKB                BUMP BUFFER DATA ADDRESS
         STCM  RWKA,7,PRFIOADR-IEDQPRF(RWKC)  RESTORE DATA ADR @G36XRYP
         MVI   1(RWKA),AVTEZERO         CLEAR SECOND DATA BYTE @OS77835
         SR    RWKA,RWKB                BACK TO ORIGINAL DATA ADDRESS
*                                         FOR READ RESPONSE
         STC   RWKB,CCWCOUNT+1          SET READ RESPONSE COUNT
*                                         2260 LOCAL ALLOW ONE CHAR
*                                         MESSAGE
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         SPACE 2
*        RETURN TO ACTIVATE
*            TIC BUFFER FOR READ OP
*            TIC WRITE IDLE FOR WRITE OP
TCCONRT  EQU   *
         L     RWKA,LCBCPA+12           RESTART CCW
         B     LEAVE                    EXIT
         SPACE 2
TCBUFRT  EQU   *
         L     RWKA,LCBLSPCI-1          BUFFER ADDRESS
         AIF   ('&GEN' EQ 'MINI').L66                             M6293
         AIF   ('&GEN' EQ 'STSP').L66                             M6293
         AIF   ('&GEN' EQ 'QTAM').L66                             M6293
         TM    LCBSTAT2,LCBSYNC .       IS THIS A BISYNC LINE     M6293
         BNO   NOTSYNC .                BRANCH, IF NOT            M6293
* FOR BISYNC LINES, IF AUTOPOLL, THE AUTOPOLL INDEX BYTE SHOULD   M6293
* ALWAYS BE REMOVED SINCE THE EOA STRING IS ALWAYS PRESENT.  IF   M6293
* LC=OUT IS SPECIFIED, THE EOA CHARACTERS WILL BE REMOVED BY LINE M6293
* APPENDAGE IN THE SCAN ROUTINE.                                  M6293
         CLI   LCBCPA+24,CCWPOLL .      IS THIS LINE AUTOPOLL     M6293
         BE    ADDIDLE .                BRANCH IF SO              M6293
         B     RETACT .                 DO NOT REMOVE INDEX       M6293
NOTSYNC  EQU   * .                                                M6293
         AIF   ('&GEN' EQ 'BISC').L67A                            M6293
         SPACE
         L     RWKC,TRMDESTQ-1          PICK UP DEST QCB         S22029
         DROP  RWKC
         USING IEDQQCB,RWKC
         TM    QCBDSFLG,QCBALTMH        IS TERMINAL CONNECTED TO S22029
*                                       AN ALTERNATE MH          S22029
         L     RWKC,DCBDEBAD            DEB ADDRESS              X02004
         L     RWKC,DEBAPPAD-DEBNMSUB(,RWKC) VECTOR TABLE        X02004
         BZ    LCTEST                   USE OWNING MH            X02004
         DROP  RWKC                                              X02004
         LA    RWKC,ONE(,RWKC)          USE ALTERNATE MH         X02004
LCTEST   EQU   *                                                 X02004
         AGO   .L66Z                                             X02004
.L66     ANOP                                                    X02004
         L     RWKC,DCBDEBAD            DEB ADDRESS              X02004
         L     RWKC,DEBAPPAD-DEBNMSUB(,RWKC) VECTOR TABLE        X02004
.L66Z    ANOP                                                    X02004
         TM    0(RWKC),LCIN             IS LC=IN SPECIFIED
         BO    RETACT                   YES                      S22029
         TM    LCBSTICS+1,CCONTENT+CTWX+CLOCAL+CAUDIO NONEOA DEVICE
         BNZ   RETACT                   BRANCH IF YES
         L     RWKC,DCBSCTAD-1          GET SCT ADDRESS
         IC    RWKB,1(RWKC)             GET EOA OFFSET
         AR    RWKC,RWKB                POINT TO START OF SEQUENCE
         CLI   0(RWKC),X'01'            COUNT OF 1 MEANS A HARDWARE
*                                         GENERATED SEQUENCE TO BE
*                                         REMOVED
         BNE   RETACT                   LESS THAN OR MORE THAN ONE
*                                       CHAR, DON'T ADJUST IDLES
.L67A    ANOP                                                     M6293
ADDIDLE  EQU   *
         IC    RWKB,LCBISZE             IDLES RESERVED
         LA    RWKB,1(,RWKB)            BUMP IDLES COUNT
         STC   RWKB,LCBISZE             SET IN LCB
RETACT   EQU   *
         IC    RWKB,LCBISZE             GET NUMBER OF IDLES
         LA    RWKB,PRFSHDR-PRFSUNIT(,RWKB) IDLES +PREFIX SIZE
         STH   RWKB,PRFSIZE-IEDQPRF(RWKA) PRE SET PREFIX SIZE
LEAVE    EQU   *
         TM    LCBSTICS+1,CLOCAL        LOCAL CEVICE
         BZ    NOLOCL                   NO
         TM    LCBSTICS,C3270           3270 DEVICE?             S99228
         BO    NOLOCL                   BRANCH YES               S99228
         L     RWKB,LCBINVPT-1          INVITATION ENTRY
         MVC   LCBCPA+16(1),0(RWKB)     SET MODIFIED READ
NOLOCL   EQU   *
         ST    RWKA,CCWADDR-1
         MVI   CCWOPCDE,CCWTIC          SET TIC OP CODE
         BR    R2                       RETURN TO ACTIVATE ROUTINE
         SPACE 2
TCIDLRT  EQU   *
         LA    RWKA,LCBCPA              WRITE IDLES LOCATION
         B     NOLOCL                   USE COMMON EXIT
         SPACE 3
         AIF   ('&GEN' EQ 'MINI').Z12
*        POLL EXPANDER
POLLRT   EQU   *                        BUILD POLL COMMANDS FOR
*                                         ALL AUTOPOLL
         BAL   RWKB,ILIST               FIND LILIST ADDRESS
         IC    RWKA,ONE(,RWKC)          NO. OF ACTIVE ENTIRES
         LR    RWKB,RWKA                CLEAR REG EXCEPT LO-ORDER
         IC    RWKB,TWO(,RWKC)          SIZE OF EACH ENTRY
         MR    RWKB-1,RWKA              PRODUCT OF SIZE AND NUMBER
         AIF   ('&GEN' NE '').L68
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    STSP                     BRANCH NO
.L68     ANOP
         AIF   ('&GEN' EQ 'STSP').L69
         AIF   ('&GEN' EQ 'QTAM').L69
         SPACE
         LA    RWKB,1(,RWKB)            ADJUST -EOT AT END OF BSC
*                                         LIST
.L69     ANOP
STSP     EQU   *
         LA    RWKA,LCBCPA+24           SET CCW ADDRESS
         CR    RWKA,RCCW                THIS FIRST POLL
         BE    FRSTPOLL                 BRANCH FIRST POLL
         SPACE
         LA    RWKA,8(,RWKC)            SAT OF ENTRIES
OUT      EQU   *
         STH   RWKB,CCWCOUNT            SET COUNT
         BR    REXPND                   REUTR TO EXPAND
         SPACE
FRSTPOLL EQU   *
         L     RWKA,LCBINVPT-1          STARTING ADDRESS
         LA    RWKB,8(RWKB,RWKC)        BUMP TO I END OF LIST
         SR    RWKB,RWKA                COUNT
         B     OUT                      USE COMMON EXIT
.Z12     ANOP
         SPACE
ILIST    EQU   *
         SR    RWKA,RWKA                CLEAR WORK REGISTER
         IC    RWKA,LCBUCBX             RLN-1
         SLL   RWKA,2                   MULTILPY BY 4
         L     RWKC,DCBINVLI(RWKA)      ILIST FOR LINE
         SR    RWKA,RWKA                CLEAR WORK REGISTER
         BR    RWKB                     RETURN
         SPACE 2
*        THIS SUBROUTINE LOCATES THE LCB EXTENSION ABOVE THE     S99228
*        CHANNEL PROGRAM AREA                                    S99228
         SPACE 1
GLCBXA   EQU   *                                                 S99228
         SR    RWKA,RWKA                CLEAR LENGTH REGISTER    S99228
         IC    RWKA,DCBEIOBX            INSERT LCB LENGTH        S99228
         SH    RWKA,AVTHA4              REDUCE LCB LENGTH BY     S99228
         SH    RWKA,AVTHA4              8 BYTES FOR ADDR LCB EXT S99228
         LA    RWKC,ZERO(RWKA,RLCB)     LOAD LCB EXTENSION ADDR  S99228
         BR    RWKB                     RETURN TO CALLER         S99228
.L483    ANOP                                                    S99228
         SPACE 2
         AIF   ('&GEN' EQ 'MINI').Z13
TCRDXRT  EQU   *                        READ TO READ RESINDEX-AUTOP
         LA    RWKA,T24(RCCW)           ADDR OF READ RESP
         BR    REXPND                   RETURN TO EXPAND
*        TIC EXPANDERS
TCPOLRT  EQU   *                        TIC TO POLL CCW I.E. PREV.
         MVI   CCWCOUNT+1,1             SET TIC COUNT FOR LATER NOP
         LA    RWKA,LCBCPA+48           ADDRESS OF 2ND POLL
         BR    REXPND
.Z13     ANOP
         LA    RWKA,LCBCPA              LOAD WRITE IDLE ADDRESS
         BR    REXPND                   RETURN TO EXPAND ROUTINE
TCSKPRT  EQU   *
         LA    RWKA,LCBCPA              TIC TO READ SKIP
         MVC   LCBCPA+13(3),LCBLSPCI    SET CURRENT CCW ADDRESS
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         SPACE 2
*    WRITE ADDRESSING CHARS AND CIAL COMMANDS.
DIALRT   EQU   *
         OI    LCBTPCD+11,DISDLEOT      SET TO WRITE DISCONNECT SA61781
*                                         PRIOR TO NEXT DISABLE SA61781
WRADRRT  EQU   *
         TM    TRMSTATE,TRMOPTFN        OPTION FIELDS PRESENT
         BZ    NOOPT                    BRANCH NO
         SPACE
         IC    RWKB,TRMOPNO             SIZE OF OPTION TABLE
         LA    RWKB,3(,RWKB)            ACCOUNT FOR OFFSET AND
*                                         OPTION NUMBER
NOOPT    EQU   *
         LH    RWKC,TRMDEVFL            DEVICE FLAGS
         LTR   RWKC,RWKC                BUFSZ SPECIFIED
         BNL   NOBUFSZ                  BRANCH IF NO
         LA    RWKB,THREE(R0,RWKB)      ADJUST FOR BUFSX FIELD
NOBUFSZ  EQU   *
         LA    RWKB,TRMCHCIN+1(RWKB)    POINT TO DEVICE DEPENDENT
*                                         AREA BYPASSING OPTION S
         AIF   ('&GEN' EQ 'MINI').L71
         SLL   RWKC,17                  SHIFT DIAL BIT
         LTR   RWKC,RWKC                DIAL DIGITS PRESENT
         BNL   NODIGITS                 BRANCH NO
         SR    RWKA,RWKA                CLEAR WORK REGISTER
         IC    RWKA,ZERO(R0,RMOD)       OFFSET INTO EXPANDER TABLE
         IC    RWKA,ORGTB1+2(RWKA)      CCW OP CODE
         STC   RWKA,LCBERCCW            PUT IN WORK AREA
         IC    RWKA,ZERO(R0,RWKB)       COUNT OF DIAL OR ADDR  SEQ
         CLI   LCBERCCW,CCWDIAL         THIS A DIAL BUILD
********
* NOTE * FOLLOWING CODE IS ONLY EXECUTED WHILE SYSTEM IS ENABLED
********
         BNE   NOTDLBLD                BRANCH NO                SA57685
         STM   R0,RLNK1,AVTSAVE3       SAVE REGS                SA57685
         L     RWKC,DCBDEBAD           GET DEB                  SA57685
         IC    RWKA,LCBUCBX            RLN                      SA57685
         SLL   RWKA,2                  TIMES 4                  SA57685
         L     RWKC,DEBUCBAD-DEBNMSUB(RWKC,RWKA)   GET UCB ADRS SA57685
         TM    UCBTYP2(RWKC),AUTOCALL  AUTOCALL FEATURE         SA57685
         BO    DIALBLD                 BRANCH YES               SA57685
         MVC   WTO+22(3),UCBID(RWKC)   LINE NUMBER              SA57685
         MVI   WTO+26,C' '             SET BLANK                SA57685
         MVC   WTO+27(11),WTO+26       BLANK AREA               SA57685
         IC    RWKA,0(,RWKB)           COUNT OF DIGITS          SA57685
         BCTR  RWKA,0                  DECREMENT FOR MOVE       SA57685
         EX    RWKA,MOVEDIGT           SET DIGITS               SA57685
         OI    WTO+26,X'F0'            SET ZONE                 SA57685
         BCTR  RWKA,0                  COUNT FOR ZONE MOVE      SA57685
         EX    RWKA,MOVEZONE           SET ZONES                SA57685
WTO      WTO   'IED158I  DIAL    ,                    ',               C
               ROUTCDE=8,DESC=3                                 SA57685
         LM    R0,RLNK1,AVTSAVE3       RESTORE REGS             SA57685
         ST    RLCB,CCWADDR-1          SET VLD PROTECT CMD ADDR SA57685
         MVI   CCWOPCDE,CCWENAB        SET COMMAND              SA57685
         MVI   CCWCOUNT+1,X'01'        SET COUNT OF 1           SA57685
         SR    RWKB,RWKB               CLEAR REGISTER           SA57685
         IC    RWKB,AVTEZERO(RMOD)     OFFSET IN EXPANDER TABLE SA57685
         B     EXPRTN0                 RETURN                   SA57685
*   EXCUTED   INSTRUCTIONS                                      SA57685
MOVEDIGT MVC   WTO+26(1),1(RWKB)       SET DIAL DIGITS          SA57685
MOVEZONE MVZ   WTO+27(1),WTO+26        SET ZONE                 SA57685
NOTDLBLD EQU   *                                                SA57685
***********************************************************************
         LA    RWKB,1(RWKA,RWKB)        BUMP PAST DAIL DIGITS
DIALBLD  EQU   *
NODIGITS EQU   *
.L71     ANOP
         MVC   CCWCOUNT+1(ONE),ZERO(RWKB) SET COUNT
         ST    R2,LCBLINK-1 .           SAVE LINK REG            A50191
         TM    LCBSTICS+2,CNOIDLES .    2260 REMOTE              A50191
         BNZ   TESTCHAR .               BRANCH IF YES            A50191
NOCHAR   EQU   * .                                               A50191
         L     R2,LCBLINK-1 .           RESTORE LINK REG         A50191
         LA    RWKA,1(,RWKB)            POINT TO DEVICE CHARACTERS
         AIF   ('&GEN' EQ 'MINI').Z71XX
         AIF   ('&GEN' EQ 'QTAM').Z71XX
         AIF   ('&GEN' EQ 'BISC').Z71XX
         TM    LCBTSOB,LCBTSBUF         IS THIS TIME SHARING BUFFER TSO
         BZ    NOTS2260                 BRANCH ON NO                TSO
         TM    LCBSTICS+2,CNOIDLES      IS THIS 2260 REMOTE         TSO
         BZ    NOTS2260                 BRANCH ON NO                TSO
         CLI   0(RWKB),THREE            IS COUNT THREE              TSO
         BE    IS2260                   YES,BRANCH             @SA76687
         CLI   FOUR(RWKB),AVTEFF        CONTROL CHAR IN BFR    @SA76687
         BNE   NOTS2260                 NO,BRANCH              @SA76687
         CLI   ZERO(RWKB),FOUR          FOUR CHARS SPECIFIED   @SA76687
         BNE   NOTS2260                 NO,BRANCH              @SA76687
IS2260   EQU   *                                               @SA76687
         CLI   3(RWKB),X'E0'            IS SCREEN BEING ERASED      TSO
         BNE   NOTS2260                 BRANCH ON NO                TSO
         MVI   LCBTPCD+10,X'BD'         SET INDICATOR IN LCB        TSO
NOTS2260 EQU   *                                                    TSO
.Z71XX   ANOP
         BR    REXPND                   RETURN TO EXPAND
         SPACE 2
TESTCHAR EQU   * .                                               A50191
         SPACE
*        TEST FOURTH ADDRESSING CHARACTER FOR X'FF' IF 2260    * A50191
*        REMOTE.  IF YES, MOVE CORRECT CONTROL CHARACTER FOR   * A50191
*        CURRENT TRANSMISSION FROM FIRST DATA BYTE IN BUFFER.  * A50191
         SPACE
         CLI   FOUR(RWKB),AVTEFF .      CONTROL CHAR IN BUFFER   A50191
         BNE   NOCHAR .                 BRANCH IF NO             A50191
         CLI   ZERO(RWKB),FOUR .        FOUR CHARS SPECIFIED     A50191
         BNE   NOCHAR .                 BRANCH IF NO             A50191
         TM    LCBTSOB,LCBTSBUF         IS THIS TSO            @SA76687
         BO    NOCHARX                  YES-IGNORE CONTROL CHAR@SA76687
         NC    LCBERBCH,LCBERBCH .      BUFFER IN ERB            A50191
         BZ    NOCHAR1                  BRANCH NO              @YA11011
         L     R2,LCBERBCH-1 .          GET BUFFER ADDRESS       A50191
         TM    PRFSTAT1-IEDQPRF(R2),PRFNHDRN HEADER BUFFER       A50191
         BO    NOCHAR1                  BRANCH YES             @YA11011
         TM    PRFSTAT1-IEDQPRF(R2),PRFCNCLN CANCELLED MESSAGE   A50191
         BO    NOCHAR1                  BRANCH YES             @YA11011
         TM    LCBSTAT2,LCBMSGNN .      MSGGEN MESSAGE           A50191
         BO    NOCHAR1                  BRANCH YES             @YA11011
         SR    RWKC,RWKC .              CLEAR WORK REGISTER      A50191
         IC    RWKC,PRFSCAN+1-IEDQPRF(R2) GET IDLES COUNT        A50191
         LA    RWKC,PRFSHDR-IEDQPRF(RWKC,R2) FIRST DATA BYTE     A50191
         CLI   ZERO(RWKC),XA0 .         WRITE DC                 A50191
         BE    SCREENOK .               BRANCH IF YES            A50191
         CLI   ZERO(RWKC),XB0 .         WRITE AT LINE ADDRESS    A50191
         BE    SCREENOK .               BRANCH IF YES            A50191
         CLI   ZERO(RWKC),XE0 .         WRITE ERASE              A50191
         BE    SCREENOK .               BRANCH IF NO             A50191
         CLI   EQU3(RWKB),XB0 .         WLA                      A50191
         BE    NOCHARX .                BRANCH IF YES            A50191
         CLI   EQU3(RWKB),XE0 .         WRITE ERASE              A50191
         BE    NOCHARX .                BRANCH IF YES            A50191
NOCHAR1  EQU   *                                               @YA11011
         MVI   EQU3(RWKB),XA0 .         WDC IS DEFAULT           A50191
         B     NOCHARX .                RETURN TO MAINLINE       A50191
SCREENOK EQU   * .                                               A50191
         MVC   EQU3(1,RWKB),ZERO(RWKC)  SET CONTROL CHARACTER    A50191
NOCHARX  EQU   * .                                               A50191
         SR    RWKC,RWKC .              CLEAR WORK REGISTER      A50191
         IC    RWKC,CCWCOUNT+1 .        ADDR STRING LENGTH       A50191
         BCTR  RWKC,R0 .                DECREMENT COUNT BY ONE   A50191
         STC   RWKC,CCWCOUNT+1 .        RESET NEW COUNT          A50191
         B     NOCHAR .                 RETURN TO MAINLINE       A50191
         SPACE 2
         AIF   ('&GEN' EQ 'MINI').L72
*        DIAL EXPANDER
*        READ TERM/IDENTIFICATION EXPANDER
RDTERMRT EQU   *
         MVI   CCWCOUNT+1,24            MAC COUNT TWX ID
         LA    RWKA,LCBERCCW            DATA ADDRESXS
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         SPACE 2
         SPACE 2
WTTRSPRT EQU   *
         LA    RWKA,LCBERCCW            DATA ADDRESS
         MVI   CCWCOUNT+1,24            SET COUNT FOR READ
         BR    REXPND                   RETURN
.L72     ANOP
*   EXPANDER FOR CONTINUE OPERATIONS
RDEOBRT  EQU   *
         MVI   CCWCOUNT+1,9             SET COUNT
         LA    RWKA,LCBERCCW+12         READ ID ENQ
         BR    REXPND                   RETURN TO EXPAND ROUTINE
         AIF   ('&GEN' EQ 'MINI').L73
         AIF   ('&GEN' EQ 'STSP').L74
         AIF   ('&GEN' EQ 'QTAM').L74
RDIDRT   EQU   *
RDRSPEQ  EQU   *
RDENQRT  EQU   *
         MVI   CCWCOUNT+1,17            MAX COUNT RD ID ENQ
         LA    RWKA,LCBERCCW+7          RESPONSE AREA
         BR    REXPND                   RETURN
WRTONERT EQU   *
         L     RWKA,AVTTONE             GET ADDDRESS OF COUNT
         MVC   CCWCOUNT,0(RWKA)         SET CCW COUNT
         LA    RWKA,2(,RWKA)            BUMP TO FF SEQUENCE
         BR    REXPND                   RETURN TO EXPAND
RDLCRT   EQU   *
         LA    RWKA,LCBERCCW+12         READ AREA
         MVI   CCWCOUNT+1,1             ASSUME NONTRANSPARENT
         L     RWKC,LCBSCBA-1            URRNET SCB
         USING IEDQSCB,RWKC
         TM    SCBBSCFM,SCBTRNSP .      RECEIVEING RRANSPARENT   S21101
         BCR   8,REXPND                 BRANCH NON-TRANSP.
         MVI   CCWCOUNT+1,2             SET COUN T
         BR    REXPND                   RETURN
         DROP  RWKC
.L74     ANOP                                                  @OZ28818
         SPACE
TCEOTRT  EQU   *                                               @OX14790
         LA    RWKA,LCBCPA+16           TIC TO THIRD CCW       @OX14790
         MVC   LCBCPA+13(3),LCBLSPCI    RESTORE CURRENT ADDRESS@0X14790
         BR    REXPND                   RETURN TO EXPAND ROUTIN@OX14790
         SPACE 1                                               @OX14790
WRCPURT  EQU   *                        WRITE CPU ID
*        WRITE CPU/IDENTIFICATION EXPANDER
         BAL   RWKB,ILIST               GET ILIST ADDRESS
         L     RWKB,IDLOC(,RWKC)        GET ADDRESS OF CPU ID
         B     NODIGITS                 USE COMMON CODE
         SPACE
WRWCCRT  LA    RWKA,WCCSEQU             ADDRESS OF WCC SEQUENCS22028TSO
         TM    LCBTPCD+11,X'01'         ASCII INDICATED ?      @SA71925
         BZ    WRWCCRT1                 NO, BRANCH             @SA71925
         LA    RWKA,WCCSEQUA            ADDR OF ASCII SEQUENCE @SA71925
         NI    LCBTPCD+11,X'FE'         TURN OFF ASCII INDICATO@SA71925
WRWCCRT1 EQU   *                                               @SA71925
         MVI   CCWCOUNT+1,X'05'         SET COUNT TO 5        S22028TSO
         BR    REXPND                   RETURN                S22028TSO
WRWCCR1  LA    RWKA,WCCNOMDT            ADDR WCC, NO MDT        SA68050
         TM    LCBTPCD+11,X'01'         ASCII INDICATED        @SA71925
         BZ    WRWCCR2                  NO, BRANCH             @SA71925
         LA    RWKA,WCCSEQA1            ADDR ASCII NO MDT SEQ  @SA71925
         NI    LCBTPCD+11,X'FE'         RESET ASCII INDICATOR  @SA71925
WRWCCR2  EQU   *                                               @SA71925
         MVI   CCWCOUNT+1,X'05'         SET COUNT TO 5          SA68050
         BR    REXPND                   RETURN                  SA68050
         SPACE
RDWCCRT  MVI   CCWCOUNT+1,X'09'         SET COUNT TO 9        S22028TSO
         LA    RWKA,LCBERCCW+12         RESPONSE ADDRESS      S22028TSO
         BR    REXPND                   RETURN                S22028TSO
         AIF   ('&GEN' EQ 'BISC').L73
         SPACE 2
BREAKCCW EQU   *
WRSMIRT  LA    RWKA,SMISEQU             ADDRESS OF SMI SEQUENCE     TSO
         MVI   CCWCOUNT+1,X'03'         SET COUNT TO THREE          TSO
         BR    REXPND                   RETURN                      TSO
         SPACE
         AIF   ('&GEN' EQ 'QTAM').L73                            A48245
RDACKRT  MVI   CCWCOUNT+1,X'01'         SET COUNT TO ONE            TSO
         LA    RWKA,LCBERCCW+12         RESPONSE ADDRESS            TSO
         BR    REXPND                   RETURN                      TSO
.L73     ANOP                                                    S99228
WRSEL    EQU   *                                                 S99228
* 3270 LOCAL SELECT EXPANDER                                     S99228
         SR    RWKA,RWKA                CLEAR ADDR REGISTER      S99228
         MVI   CCWCOUNT+ONE,ONE         SET DATA COUNT AT ONE    S99228
         BR    REXPND                   RETURN                   S99228
         SPACE
*  E Q U A T E S  D I R E C T O R Y
*
*        D E V I C E    C H A R A C T E R I S T I C S
*
* BYTE 2
CBISYNC  EQU   X'80'
C3270    EQU   X'04'                    3270 DEVICE              S99228
         AIF   ('&GEN' EQ 'MINI').L73C                           S22026
         AIF   ('&GEN' EQ 'STSP').L73C                           S22026
         AIF   ('&GEN' EQ 'QTAM').L73C                           S22026
CBRDCAST EQU   X'40' .                                           S22026
.L73C    ANOP                                                    S22026
CTWX     EQU   X'20'
CSTNCTL  EQU   X'10'
CXMITCTL EQU   X'08'
CCONTENT EQU   X'04'
CLOCAL   EQU   X'02'
CAUDIO   EQU   X'01'
* BYTE 3
CWTTA    EQU   X'40'                    WORLD TRADE TELEGRAPH
CENDCTL  EQU   X'20'                    END TO END CONTROLS (2780)
CCHECK   EQU   X'10'                    CHECKING
CBFRD    EQU   X'08'                    BUFFERED TERM.
CCONTIN  EQU   X'04'                    CAPABLE OF CONTINUE OPER.
CNOIDLES EQU   X'02'                   NO IDLES DEFINED
C2760    EQU   X'01'                    2760
* BYTE 1
CINHIBIT EQU   X'80'                    USE READ INHIBIT CCW'S
CBREAK   EQU   X'40'                    TERM HAS REVERSE BREAK FEATURE
CATTEN   EQU   X'20'                    TERM HAS ATTENTION FEATURE
C5041    EQU   X'10'                    2741'S AND 1050'S SUPPORTED
C2741    EQU   X'08'                    2741 ON THIS LINE
*
IDLOC    EQU   4                        OFFSET INTO ILIST
AUTOPL   EQU   X'01'                    AUTOPOLL FLAG IN ILIST
CUMASK   EQU   X'01'                    CU ENTRY DVC CHARS TABLE S99228
F0       EQU   X'F0'                    MASK USED FOR DAIL UP
AUTOCALL EQU   X'80'                   UBC MASK-AUTOCALL        SA57685
UCBTYP2  EQU   X'11'                   UCB OFFSET TO DIAL FEAT  SA57685
UCBID    EQU   X'0D'                   UCB OFFSET TO UCB ID     SA57685
SENDVTO  EQU   X'0E'                    SEND STCB FOR LEASED LINE
UNEX     EQU   X'01'                    UNIT EXCEPTION IN CSW-FLG
*                                         FOR NO RESTART
THREE    EQU   3
ONE      EQU   1
FLAG     EQU   X'20'                    USED IN WRITE IDLES LOOP
SLNTRC   EQU   X'08'                    TRACE REQUESTED FLAG   @YA12276
TWO      EQU   2
T24      EQU   24
FOUR     EQU   4
SEVEN    EQU   7                                                X30X5MT
EIGHT    EQU   8
LCIN     EQU   X'80'                    MASK FOR LCIN
ZERO     EQU   X'00'
CALLOPT  EQU   X'70'                    MASK FOR CHECKING CLOCK@OS77867
*                                       OR CINTVL              @OS77867
PURGEXT  EQU   9             OFFSET TO ADDRESS OF IOGENER EXIT  X30X5MT
REGSAVE  EQU   28                       OFFSET INTO SAVEAREA    X30X5MT
OUTONLY  EQU   X'03'                    OUTPUT ONLY DEVICE     @OX16705
RETURN4  DC    F'4'                     RETURN CODE OF 4        X30X5MT
* *   T E M P O R A R Y                                             TSO
CVTPTR   EQU   16 .                                                 TSO
TONEOPT  EQU   X'01'                    MASK FOR TONE GENERATION
D41STICS DC    XL3'F80400'              2741                        TSO
D50STICS DC    XL3'301014'               050                        TSO
SMISEQU  DC    XL3'02BD03'                                          TSO
WCCSEQU  DC    XL5'0227F1C303'                                S22028TSO
WCCSEQA1 DC    XL5'021B314203'          ASCII WCC NO MDT SEQU  @SA71925
WCCSEQUA DC    XL5'021B314303'          ASCII SEQUENCE         @SA71925
WCCNOMDT DC    XL5'0227F1C203'                                  SA68050
DISDLEOT EQU   X'01'                    FLAG TO WRITE DLE EOT
CSVTO    EQU   X'20' .                  CONC SCH VTO             S22026
BUFFVTO  EQU   X'1A'                    BUFFRERED TERMINAL VTO
XA0      EQU   X'A0' .                  WRITE DC                 A50191
XB0      EQU   X'B0' .                  WRITE AT LINE ADDRESS    A50191
XC8      EQU   X'C8'                    LENGTH OF LCB          @ZA04039
XE0      EQU   X'E0' .                  WRITE ERASE              A50191
ASCIIEOT EQU   X'04' .                  ASCII EOT CHAR         @OZ09276
EQU3     EQU   3 .                      CONSTANT                 A50191
*
*        E X P A N D E R S    T A B L E
*
*        EACH ENTRY IN THIS TABLE PROVIDES...
*              - TWO BYTES OFFSET INTHE EXPANDER ROUTINES
*              - ONE BYTE OP CODE CCW
*              - ONE BYTE TP CODE EXPANDER
*
*
ORGTB1   DS    0H
         SPACE 3
         AIF   ('&GEN' EQ 'BISC').L58
SNSCW    DC    AL2(SNSRT-ORGRTN)
         DC    AL1(CCWSENSE)
         DC    AL1(TPNULL)
         SPACE 1
NOPCCW   EQU   *
         DC    AL2(NOPRT-ORGRTN)
         DC    AL1(CCWNOP)
         DC    AL1(TPNULL)
         SPACE 1
.L58     ANOP
RDSKPCW  DC    AL2(RDSKPRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDSKIP)
         SPACE 1
TCSKPCW  DC    AL2(TCSKPRT-ORGRTN)
         DC    AL1(CCWTIC)
         DC    AL1(TPNULL)
         SPACE 1
WREOTCW  DC    AL2(WREOTRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWREOT)
         SPACE 1
WRPOLCW  DC    AL2(WRPOLRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRPOLL)
         SPACE 1
RDRSPCW  DC    AL2(RDRSPRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDRESP)
         SPACE 1
TCBUFCW  DC    AL2(TCBUFRT-ORGRTN)
         SPACE 1
PREPCW   DC    AL2(PREPRT-ORGRTN)
         DC    AL1(CCWPREP)
         DC    AL1(TPNULL)
         SPACE 1
         AIF   ('&GEN' EQ 'MINI').Z9
POLLCW   DC    AL2(POLLRT-ORGRTN)
         DC    AL1(CCWPOLL)
         DC    AL1(TPRDRESP)                                   @YA10455
         SPACE 1
TCRDXCW  DC    AL2(TCRDXRT-ORGRTN)
         DC    AL1(CCWTIC)
         DC    AL1(TPNULL)
         SPACE 1
TCPOLCW  DC    AL2(TCPOLRT-ORGRTN)
         DC    AL1(CCWTIC)
         DC    AL1(0)                   0 TP CODE FOR LINE END TABLE
         SPACE 1
.Z9      ANOP
WRIDLCW  DC    AL2(WRIDLRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRIDLE)
         SPACE 1
TCIDLCW  DC    AL2(TCIDLRT-ORGRTN)
         SPACE 1
WRPADCW  DC    AL2(WRPADRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRPAD)
         SPACE 1
         AIF   ('&GEN' EQ 'MINI').L60
         AIF   ('&GEN' EQ 'STSP').L60
         AIF   ('&GEN' EQ 'QTAM').L60
RDENQCW  EQU   *                        READ ENQ
         DC    AL2(RDENQRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDENQ)
         SPACE
.L60     ANOP
WRADRCW  DC    AL2(WRADRRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRAD)              ADDRESSING SEQUENCE
         SPACE 1
WREOACW  DC    AL2(WREOART-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWREOA)
         SPACE 1
         AIF   ('&GEN' EQ 'MINI').L61
DISBLCW  DC    AL2(DISBLRT-ORGRTN)
         DC    AL1(CCWDISAB)
         DC    AL1(TPNULL)
         SPACE 1
DIALCW   DC    AL2(DIALRT-ORGRTN)
         DC    AL1(CCWDIAL)
         DC    AL1(TPNULL)
         SPACE 1
ENABLCW  DC    AL2(ENABLRT-ORGRTN)
         DC    AL1(CCWENAB)
         DC    AL1(TPENABLE)
         SPACE 1
RDTERMCW DC    AL2(RDTERMRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPTWXID)
         SPACE 1
WRCPUCW  DC    AL2(WRCPURT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRCPU)
         SPACE 1
WTTRSPCW EQU   *
         DC    AL2(WTTRSPRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDRSPD)
.L61     ANOP
RDRSPSCW DC    AL2(RDRSPSRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDRSPD)
         SPACE
WRACKCW  DC    AL2(WRACKRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRACK)
         SPACE
TCCONCW  EQU   *
         DC    AL2(TCCONRT-ORGRTN)
         DC    AL1(CCWTIC)
         DC    AL1(TPNULL)
         SPACE
RDEOBCW  EQU   *
         DC    AL2(RDEOBRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDRPEB)
         SPACE
         AIF   ('&GEN' EQ 'STSP').L62C
         AIF   ('&GEN' EQ 'MINI').L63
         AIF   ('&GEN' EQ 'QTAM').L62C                         @OZ28818
WRENQCW  EQU   *
         DC    AL2(WRENQRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRENQ)
         SPACE
RSPENQCW EQU   *
         DC    AL2(RDRSPEQ-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRSPENQ)
RDLCOUT  EQU   *
         DC    AL2(RDLCRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDLC)
         SPACE
WRDLETCW EQU   *
         DC    AL2(WRDLETRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRDLET)
         SPACE
RDIDENQ  EQU   *
         DC    AL2(RDENQRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDIDNQ)            READ ID ENQ
         SPACE
WRTONECW EQU   *
         DC    AL2(WRTONERT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRTONE)
RDIDAK   EQU   *
         DC    AL2(RDIDRT-ORGRTN)
         DC    AL1(CCWREAD)
         DC    AL1(TPRDIDAK)
.L62C    ANOP                                                  @OZ28818
         SPACE 1                                               @OX14790
TCEOTCW  DC    AL2(TCEOTRT-ORGRTN)                             @OX14790
         DC    AL1(CCWTIC)                                     @OX14790
         DC    AL1(TPNULL)                                     @OX14790
         SPACE 1                                               @OX14790
         AIF   ('&GEN' EQ 'QTAM').L62B                         @OZ28818
WRWCCCW  DC    AL2(WRWCCRT-ORGRTN)                            S22028TSO
         DC    AL1(CCWWRITE)                                  S22028TSO
         DC    AL1(TPNULL)                                    S22028TSO
WRWCCC1  DC    AL2(WRWCCR1-ORGRTN)                              SA68050
         DC    AL1(CCWWRITE)                                    SA68050
         DC    AL1(TPNULL)                                      SA68050
RDWCCCW  DC    AL2(RDWCCRT-ORGRTN)                            S22028TSO
         DC    AL1(CCWREAD)                                   S22028TSO
         DC    AL1(TPRDRESP)                                   @YA10429
         AIF   ('&GEN' EQ 'BISC').L63
WRSMICW  DC    AL2(WRSMIRT-ORGRTN)                                  TSO
         DC    AL1(CCWWRITE)                                        TSO
         DC    AL1(TPNULL)                                          TSO
RDACKCW  DC    AL2(RDACKRT-ORGRTN)                                  TSO
         DC    AL1(CCWREAD)                                         TSO
         DC    AL1(TPRDRESP)                                   @YA10429
IHRSPCW  DC    AL2(RDRSPRT-ORGRTN)                                  TSO
         DC    AL1(CCWINHIB)                                        TSO
         DC    AL1(TPRDRESP)                                        TSO
.L62B    ANOP                                                    A48245
WRBRKCW  EQU   *
         DC    AL2(BREAKCCW-ORGRTN)
         DC    AL1(CCWBREAK)
         DC    AL1(TPNULL)
.L63     ANOP
RESETCCW EQU   *
         DC    AL2(WREOTRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPRESET)
         SPACE
WRACKNAK EQU   *
         DC    AL2(WRACKRT-ORGRTN)
         DC    AL1(CCWWRITE)
         DC    AL1(TPWRAKNK)
SELCTCW  EQU   *                                                 S99228
         DC    AL2(WRSEL-ORGRTN)                                 S99228
         DC    AL1(CCWSEL)                                       S99228
         DC    AL1(TPNULL)                                       S99228
         EJECT
*
*        M O D E L S    C H A N N E L S    P R O G R A M
*                          T A B L E
*
*
*        THIS TABLE IS A SET OF SUBSETS
*        EACH SUBSET IS AN ELEMENT OF MODEL CHANNEL PROGRAM
*
*        THE LAST BYTE OF EACH SUBSET IS THE END ELEMENT X'FF'
*        (NOT NEEDED FOR THE LAST SUBSET OF A CHANNEL PROGRAM)
*
*        EACH ENTRY IN A SUBSET CONSISTS OF TWO BYTES.
*    *** BYTE1   OFFSET IN EXPANDERS TABLE
*    *** BYTE2     CCW/FLAGS  BYTE
*
         SPACE 3
MODCCW   DS    0H
MODCCW00 EQU   *
         DC    AL1(RDSKPCW-ORGTB1)
         DC    XL1'B0'
         DC    AL1(TCSKPCW-ORGTB1)
         DC    XL1'00'
         DC    X'FF'
         AIF   ('&GEN' EQ 'MINI').L42
         AIF   ('&GEN' EQ 'STSP').L41A
         AIF   ('&GEN' EQ 'QTAM').L41A
MODCCW01 EQU   *
         DC    AL1(WRDLETCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(DISBLCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(DIALCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    X'FF'
.L41A    ANOP                                                  @OZ28818
MODCCW75 EQU   *                                               @XA08073
         DC    AL1(WREOTCW-ORGTB1)                             @XA08073
         DC    AL1(CCWCC+CCWSLI)                               @XA08073
         DC    AL1(TCEOTCW-ORGTB1)                             @OX14790
         DC    XL1'00'                                         @OX14790
         DC    X'FF'                                           @XA08073
MODCCW02 EQU   *
         DC    AL1(DISBLCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(DIALCW-ORGTB1)
         DC    XL1'60'
         DC    XL1'FF'
         AIF   ('&GEN' EQ 'STSP').L43
         AIF   ('&GEN' EQ 'QTAM').L43
MODCCW07 EQU   *
         DC    AL1(WRDLETCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
MODCCW7B EQU   *
         DC    AL1(DISBLCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(ENABLCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    X'FF'
MODCCW7A EQU   *
         DC    AL1(WRTONECW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    X'FF'
.L43     ANOP
         AIF   ('&GEN' EQ 'BISC').L44
MODCCW08 EQU   *
         DC    AL1(DISBLCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)        FLAGS
         DC    AL1(ENABLCW-ORGTB1)
         DC    AL1(0)                   NO GLAGS
         DC    XL1'FF'
.L44     ANOP
         AIF   ('&GEN' EQ 'STSP').L45
         AIF   ('&GEN' EQ 'QTAM').L45
MODCCW10 EQU   *
         DC    AL1(RDIDENQ-ORGTB1)
         DC    AL1(CCWSLI)
         DC    X'FF'
MODCCW11 EQU   *
         DC    AL1(WRCPUCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
MODCCW12 EQU   *
         DC    AL1(WRACKCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(TCBUFCW-ORGTB1)
MODCCW14 EQU   *
         DC    AL1(WRCPUCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
MODCCW15 EQU   *
         DC    AL1(WRENQCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(RDIDAK-ORGTB1)
         DC    AL1(0)
         DC    X'FF'
MODCCW16 EQU   *
         DC    AL1(WREOTCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
MODCCW17 EQU   *
         DC    AL1(RDENQCW-ORGTB1)
         DC    AL1(0)
         DC    AL1(WRACKCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(TCBUFCW-ORGTB1)
.L45     ANOP
         AIF   ('&GEN' EQ 'BISC').L46
MODCCW18 EQU   *
         DC    AL1(WRCPUCW-ORGTB1)      WRTIE CPU ID
         DC    AL1(CCWCC+CCWSLI)        FLAGS
         DC    AL1(RDRSPCW-ORGTB1)      READ RESPONSE
         DC    AL1(CCWCD)
         DC    AL1(TCBUFCW-ORGTB1)
.L42     ANOP
MODCCW20 EQU   *
         DC    AL1(WREOTCW-ORGTB1)
         DC    XL1'60'
MODCCW21 EQU   *
         DC    AL1(PREPCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(SNSCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(RDRSPCW-ORGTB1)
         DC    AL1(CCWCD)
         DC    AL1(TCBUFCW-ORGTB1)
         AIF   ('&GEN' NE '').L47
.L46     ANOP
MODCCW22 EQU   *                        BSC POINT - POINT
         DC    AL1(PREPCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(RDENQCW-ORGTB1)      READ ENQ
         DC    AL1(0)                   NO FLAGS
         DC    AL1(WRACKCW-ORGTB1)      WRITE ACK
         DC    AL1(CCWCC+CCWSLI)        FLAGS
         DC    AL1(TCBUFCW-ORGTB1)
.L47     ANOP
         AIF   ('&GEN' EQ 'MINI').Z8
MODCCW26 EQU   *                        AUTOPOLL  CCW'S
         DC    AL1(WREOTCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(POLLCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(TCPOLCW-ORGTB1)
         DC    XL1'00'
         DC    AL1(TCRDXCW-ORGTB1)
         DC    XL1'00'
         DC    AL1(POLLCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(TCPOLCW-ORGTB1)
         DC    XL1'00'
         DC    AL1(RDRSPCW-ORGTB1)
         DC    XL1'80'
         DC    AL1(TCBUFCW-ORGTB1)
.Z8      ANOP
MODCCW28 EQU   *                        MULTIPT READ INT.
         DC    AL1(WREOTCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(WRPOLCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(RDRSPCW-ORGTB1)
         DC    XL1'80'
         DC    AL1(TCBUFCW-ORGTB1)
MODCCW29 EQU   *
         AIF   ('&GEN' EQ 'BISC').L46A
         SPACE 1
         DC    AL1(NOPCCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    X'FF'
.L46A    ANOP
         SPACE 1
MODCCW30 EQU   *
         DC    AL1(WRIDLCW-ORGTB1)
         DC    AL1(CCWCD+CCWSKIP)       FLAGS FOR WRITE IDLES
         DC    XL1'FF'
         AIF   ('&GEN' EQ 'BISC').L48
         AIF   ('&GEN' EQ 'MINI').L49A
MODCCW32 EQU   *
         DC    AL1(RDTERMCW-ORGTB1)
         DC    XL1'20'
         DC    X'FF'
.L48     ANOP
MODCCW36 EQU   *
         DC    AL1(WRPADCW-ORGTB1)
         DC    XL1'80'
         DC    XL1'FF'
         AIF   ('&GEN' EQ 'BISC').L50
.L49     ANOP
MODCCW38 EQU   *                        START STOP CONTENTION-WRITE
         DC    AL1(WREOACW-ORGTB1)
         DC    AL1(CCWCD)
         DC    AL1(TCIDLCW-ORGTB1)
.L49A    ANOP
MODCCW39 EQU   *
         DC    AL1(WREOTCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(WREOACW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(WRPADCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(TCIDLCW-ORGTB1)
         AIF   ('&GEN' NE '').L51
.L50     ANOP
MODCCW40 EQU   *                        PT - PT BSC WRITE INITIAL
         DC    AL1(WRENQCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(RSPENQCW-ORGTB1)
         DC    AL1(0)
MODCCW41 EQU   *
         DC    AL1(WRADRCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(RDRSPSCW-ORGTB1)
         DC    AL1(0)                   NO FLAGS
         DC    X'FF'
         AIF   ('&GEN' EQ 'BISC').L52
.L51     ANOP
         AIF   ('&GEN' EQ 'MINI').L53
MODCCW42 EQU   *
         DC    AL1(WRPADCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(WREOTCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(WRADRCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(WTTRSPCW-ORGTB1)
         DC    AL1(0)
         DC    AL1(WREOACW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(TCIDLCW-ORGTB1)
         AIF   ('&GEN' EQ 'STSP').L53
         AIF   ('&GEN' EQ 'QTAM').L53
.L52     ANOP
MODCCW43 EQU   *
         DC    AL1(WRENQCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(RDRSPSCW-ORGTB1)
         DC    AL1(0)
         DC    X'FF'
.L53     ANOP
MODCCW44 EQU   *                        MULTI-POINT WRITE INITIAL
         DC    AL1(WREOTCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(WRADRCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(RDRSPSCW-ORGTB1)
         DC    AL1(0)                   INTERRUPT ON RESPONSE
MODCCW62 EQU   *
         DC    AL1(WREOACW-ORGTB1)
         DC    XL1'80'
         DC    AL1(TCIDLCW-ORGTB1)
         AIF   ('&GEN' EQ 'STSP').L54
         AIF   ('&GEN' EQ 'MINI').L54
         AIF   ('&GEN' EQ 'QTAM').L54
MODCCW45 EQU   *
         DC    AL1(WRACKNAK-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(RDLCOUT-ORGTB1)
         DC    AL1(CCWCD)
         DC    AL1(TCCONCW-ORGTB1)
.L54     ANOP
MODCCW46 EQU   *
         DC    AL1(WRACKNAK-ORGTB1)
         DC    XL1'60'                  FLAGS
         DC    AL1(TCCONCW-ORGTB1)
         AIF   ('&GEN' EQ 'MINI').L55
         AIF   ('&GEN' EQ 'STSP').L55
         AIF   ('&GEN' EQ 'QTAM').L55
         SPACE
MODCCW48 EQU   *
         DC    AL1(RDEOBCW-ORGTB1)
         DC    AL1(0)                   NO FLGS
         DC    X'FF'
MODCCWFS EQU   * .                                               S22026
         DC    AL1(WREOTCW-ORGTB1) .   WRITE EOT FOR SELECTION   S22026
         DC    AL1(CCWCC+CCWSLI) .                               S22026
         DC    AL1(WRADRCW-ORGTB1) .   WRITE ADDRESSING CHARS    S22026
         DC    XL1'60' .                                         S22026
         DC    AL1(TCIDLCW-ORGTB1) .   TIC TO WRITE IDLES        S22026
         DC    X'FF' .                                           S22026
.L55     ANOP
         AIF   ('&GEN' EQ 'BISC').LB
MODCCW50 EQU   *
         DC    AL1(RDEOBCW-ORGTB1)
         DC    X'60'                    FLAGS
         DC    AL1(TCCONCW-ORGTB1)
.LB      ANOP
         SPACE 1
MODCCW51 EQU   *
         DC    AL1(WREOTCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(WRADRCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(RDRSPSCW-ORGTB1)
         DC    AL1(0)
         DC    X'FF'
         AIF   ('&GEN' EQ 'BISC').L56
         AIF   ('&GEN' EQ 'MINI').L56
         AIF   ('&GEN' EQ 'QTAM').L56
         SPACE 1
MODCCW52 EQU   *                                                    TSO
         DC    AL1(WREOTCW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
MODCCW54 EQU   *
         DC    AL1(PREPCW-ORGTB1)
         DC    X'60'
         DC    AL1(SNSCW-ORGTB1)
         DC    XL1'60'
         DC    AL1(IHRSPCW-ORGTB1)
         DC    XL1'80'
         DC    AL1(TCBUFCW-ORGTB1)                                  TSO
.L56     ANOP
MODCCW56 EQU   *
         DC    AL1(WRACKNAK-ORGTB1)
         DC    AL1(0)                   NO FLGAS
         DC    X'FF'
         AIF   ('&GEN' EQ 'BISC').L57
MODCCW58 EQU   *
         DC    AL1(WREOACW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    X'FF'
.L57     ANOP
MODCCW60 EQU   *
         DC    AL1(WRACKCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    X'FF'
         AIF   ('&GEN' EQ 'MINI').M7
MODCCW63 EQU   *
         DC    AL1(WRCPUCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
.M7      ANOP
MODCCW64 EQU   *
         DC    AL1(RDRSPCW-ORGTB1)
         DC    AL1(CCWCD+CCWSLI)
         DC    AL1(TCBUFCW-ORGTB1)
         AIF   ('&GEN' EQ 'BISC').LD
         AIF   ('&GEN' EQ 'MINI').LD
         AIF   ('&GEN' EQ 'QTAM').LD
         SPACE
MODCCW19 EQU   *
         DC    AL1(WRCPUCW-ORGTB1)
         DC    AL1(CCWCC+CCWSLI)
         DC    AL1(IHRSPCW-ORGTB1)
         DC    AL1(CCWCD)
         DC    AL1(TCBUFCW-ORGTB1)
MODCCW70 EQU   *                                                    TSO
         DC    AL1(WREOTCW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
         DC    AL1(PREPCW-ORGTB1)                                   TSO
         DC    XL1'60'                                              TSO
         DC    AL1(WRPADCW-ORGTB1)                                  TSO
         DC    XL1'80'                                              TSO
         DC    AL1(TCBUFCW-ORGTB1)                                  TSO
MODCCW90 EQU   *                                                    TSO
         DC    AL1(WRSMICW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
         DC    AL1(RDACKCW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
         DC    AL1(WREOTCW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
         DC    AL1(WRPOLCW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
         DC    AL1(RDRSPCW-ORGTB1)                                  TSO
         DC    XL1'80'                                              TSO
         DC    AL1(TCBUFCW-ORGTB1)                                  TSO
MODCCW91 EQU   *                                                    TSO
         DC    AL1(WREOTCW-ORGTB1)                                  TSO
         DC    AL1(CCWCC+CCWSLI)                                    TSO
         DC    AL1(WRPOLCW-ORGTB1)                                  TSO
         DC    XL1'60'                                              TSO
         DC    AL1(IHRSPCW-ORGTB1)                                  TSO
         DC    XL1'80'                                              TSO
         DC    AL1(TCBUFCW-ORGTB1)                                  TSO
MODCCW92 EQU   *                                              S22028TSO
         DC    AL1(WRWCCCW-ORGTB1)                            S22028TSO
         DC    XL1'60'                                        S22028TSO
         DC    AL1(RDWCCCW-ORGTB1)                            S22028TSO
         DC    XL1'60'                                        S22028TSO
         DC    AL1(WREOTCW-ORGTB1)                            S22028TSO
         DC    AL1(0)                                         S22028TSO
         DC    X'FF'                                          S22028TSO
MODCCW93 DC    AL1(WRWCCC1-ORGTB1)                              SA68050
         DC    XL1'60'                                          SA68050
         DC    AL1(RDWCCCW-ORGTB1)                              SA68050
         DC    XL1'60'                                          SA68050
         DC    AL1(WREOTCW-ORGTB1)                              SA68050
         DC    AL1(0)                                           SA68050
         DC    X'FF'                                            SA68050
.LD      ANOP
MODCCW72 EQU   *
         DC    AL1(RESETCCW-ORGTB1)
         DC    AL1(0)
         DC    X'FF'
         AIF   ('&GEN' EQ 'MINI').L4R5                         @YA03846
MODCCW73 EQU   *   3270 LOCAL READ CHANNEL PROGRAM               S99228
         DC    AL1(SELCTCW-ORGTB1)                               S99228
         DC    AL1(CCWCC+CCWSLI)                                 S99228
         DC    AL1(TCBUFCW-ORGTB1)                               S99228
MODCCW74 EQU   *   3270 LOCAL WRITE CHANNEL PROGRAM              S99228
         DC    AL1(SELCTCW-ORGTB1)                               S99228
         DC    AL1(CCWCC+CCWSLI)                                 S99228
         DC    X'FF'                                             S99228
.L4R5    ANOP
IOGENEND EQU   *                        END OF IOGENER CODE     OY00451
         EJECT
*        DCBD  DSORG=TX
         DCBD  DSORG=TX
         EJECT
*        TAVTD
         TAVTD
         EJECT
*        TCCWD
         TCCWD
         EJECT
*        TDEBD
         TDEBD
         EJECT
*        TDISPD
         TDISPD
         EJECT
*        TLCBD
         TLCBD
         EJECT
*        TPRFD
         TPRFD
         EJECT
*        TPRIOR
         TPRIOR
         EJECT
*        TQCBD
         TQCBD
         EJECT
*        TQCBED
         TQCBED
         EJECT
*        TSCBD
         TSCBD
         EJECT
*        TSTCBD
         TSTCBD
         EJECT
*        TTSID
         TTSID
         EJECT
*        TTNTD
         TTNTD
         EJECT
*        TTPD
         TTPD
         EJECT
*        TTRMD
         TTRMD
         MEND
./ ADD NAME=IOSCTRS
         MACRO
&NAME    IOSCTRS &AREA=,&LCH=
.*    COPYRIGHT =
.*       5740-XYN COPYRIGHT IBM CORP 1977, 1980;               @G81LPLR
.*       LICENSED MATERIAL-PROGRAM; PROPERTY OF IBM;
.*       REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER
.*       G120-2083.
         LCLC  &A,&L
.*             'AREA' AND 'LCH' KEYWORDS REQUIRED - MAY BE
.*             SYMBOLS OR REGISTERS
         AIF   (T'&LCH EQ 'O' OR T'&AREA EQ 'O').ERR1
         AIF   ('&LCH'(1,1) EQ '(').REGLCH   IF REGISTER, BRANCH
&L       SETC  '&LCH'.'+22'                  DISPL. TO COUNTERS
         AGO   .CKAREA
.REGLCH  ANOP
&L       SETC  '22'.'&LCH'                   DISPL. TO COUNTERS
.CKAREA  AIF   ('&AREA'(1,1) EQ '(').REGAREA IF REGISTER, BRANCH
&A       SETC  '&AREA'.'(10)'                ADD BYTE COUNT
         AGO   .GENCODE
.REGAREA ANOP
&A       SETC  '0(10,'.'&AREA(1)'.')'        ADD BYTE COUNT
.GENCODE ANOP
&NAME    MVC   &A,&L     MOVE LCH COUNTERS
         MEXIT
.ERR1    AIF   (T'&LCH NE 'O').ERR2
         IHBERMAC 1006,LCH
.ERR2    AIF   (T'&AREA NE 'O').OUT
         IHBERMAC 1006,AREA
.OUT     MEND
./ ADD NAME=IOSGNIP
         MACRO
&NAME    IOSGNIP &FUNC,&PARM,&REG,&VAR,&AUTH=CSECTNME
         GBLB    &EXECN                 MULTIPLE EXPANSION SWITCH
         LCLC  &SUFFIX                  CHARACTER VARIABLE
&SUFFIX  SETC  '&SYSNDX'(2,4)           SET 3 CHARACTER SYSNDX VALUE
         AIF   ('&FUNC' EQ 'MINIMAP').MIN010
         AIF   ('&FUNC' EQ 'UCBCHM').NIP010
         AGO   .IOSNOGO                 UNSUPPORTED FUNCTION MNOTE
.NIP010  ANOP
         AIF   ('&AUTH' EQ 'IEAANIP').NIP010A
         AGO   .IOSNOGO                 UNAUTHORIZED USE MNOTE
.NIP010A ANOP
***********************************************************************
***      MACRO DEFINITION - UCBCHM FUNCTION OF IOSGNIP              ***
***            THIS MACRO, OWNED AND MAINTAINED BY IOS PERSONNEL,   ***
***            INSERTS THE PATH MASK CREATED BY MP6500 INTO THE     ***
***            'UCBCHM' FIELD.                                      ***
***                                                                 ***
         AIF   (&EXECN EQ 1).NIP101     SKIP DETAIL 2ND TIME THROUGH
***            FOLLOWING ARE THE PARAMETERS WHICH MUST BE SPECIFIED ***
***                1.&FUNC-UCBCHM                                   ***
***                2.&PARM-NUMBER OF A REGISTER WHICH POINTS TO     ***
***                  THE UCB.                                       ***
***                3.&REG-SPECIFIES THE NUMBER OF A REGISTER WHICH  ***
***                  POINTS TO THE PATH MASK BYTE. IF NOT SPECIFIED ***
***                  THE VAR PARAMETER WILL BE USED TO LOCATE THE   ***
***                  UCB PATH MASK.                                 ***
***                4.&VAR-LABEL OF THE BYTE CONTAINING THE UCB PATH ***
***                  MASK                                           ***
***      THE KEYWORD PARAMETER 'AUTH=CSECTNME' MUST ALSO BE         ***
***      SPECIFIED, NOTING THE CSECT NAME INVOKING THIS MACRO.      ***
.NIP101  ANOP
***********************************************************************
         SPACE 1
         AIF   ('&REG' NE '').NIP110     USING REGISTER FORM...
         SPACE 1
***********************************************************************
***            REGISTER DEFINITION                                  ***
***********************************************************************
IECIU&SUFFIX   EQU &PARM                UCB POINTER REGISTER
         AIF   (&EXECN EQ 1).NIP102     NOT FIRST TIME - SKIP
&EXECN   SETB  1                         SET FIRST TIME SWITCH.
***********************************************************************
***            UCB DEFINITION                                       ***
***********************************************************************
IECIWCHM EQU   12                       DISP TO PATH MSK IN UCB
.NIP102  ANOP
         SPACE 3
&NAME    MVN   IECIWCHM(1,IECIU&SUFFIX),&VAR INSERT MASK INTO UCBCHM.
         AGO   .IOSGEND
.NIP110  ANOP
         SPACE 1
***********************************************************************
***            THIS IS THE REGISTER FORM OF UCBCHM FUNCTION         ***
***********************************************************************
         SPACE 1
***********************************************************************
***            REGISTER DEFINITION                                  ***
***********************************************************************
IECIW&SUFFIX EQU &REG                  PATH MASK POINTER REGISTER
IECIU&SUFFIX EQU &PARM                   UCB POINTER REGISTER
         AIF   (&EXECN EQ 1).NIP103     NOT FIRST TIME - SKIP
&EXECN   SETB  1                        SET FIRST TIME SWITCH
***********************************************************************
***            UCB DEFINITION                                       ***
***********************************************************************
IECIWCHM EQU   12                       DISP TO PATH MSK IN UCB
.NIP103  ANOP
         SPACE 3
&NAME    MVN   IECIWCHM(1,IECIU&SUFFIX),0(IECIW&SUFFIX) PUT MASK IN UCB
         MEXIT                           EXIT MACRO
.MIN010  ANOP
         AIF   ('&AUTH' EQ 'IEAANIP').MIN010A
         AGO   .IOSNOGO                 UNAUTHORIZED USE MNOTE
.MIN010A ANOP
&NAME    B     IECIM010                 SKIP AROUND CONSTANTS
***********************************************************************
*        MACRO DEFINITION - MINIMUM PATH MAP FUNCTION OF IOSGNIP      *
*              THIS MACRO OWNED AND MAINTAINED BY  I O S  PERSONNEL,  *
*              USES A GIVEN UCB TO CONSRUCT AN EIGHT (8) BYTE TABLE   *
*              ENTRY TO CONVEY TO THE CALLER THE POSSIBLE PATHS TO A  *
*              DEVICE.                                                *
*                                                                     *
*              THIS CODE IS GENERATED WHEN 'IOSGNIP' IS INVOKED       *
*              BY NIP WHERE VARIABLES ARE SET ACCORDING TO THE FORMAT *
*              BELOW --                                               *
*        IOSGNIP &FUNC,&PARM,&REG,&VAR            ... WHERE --        *
*             &FUNC = MINIMAP                                         *
*             &PARM = A REGISTER CONTAINING THE ADDRESS OF A 2 WORD   *
*                     AREA IN WHICH THE MINIMAP OF AVAILABLE PATHS    *
*                     WILL BE BUILT.                                  *
*              &REG = A REGISTER CONTAINING THE ADDRESS OF THE UCB FOR*
*                     WHICH PATHS ARE TO BE DETERMINED.               *
*              &VAR = 0 FOR UNIPROCESSING, OR 1 FOR MULTIPROCESSING.  *
*                                                                     *
*        RESTRICTIONS/ASSUMPTIONS --                                  *
*              1)  IOSGNIP(MINIMAP) WILL EXPAND AS IN-LINE CODE.      *
*              2)  REGISTERS 11, 12, AND 13 ARE NOT AVAILABLE.        *
         AIF   (&VAR(1) EQ 0).MIN020   'UNI-PROCESSING'
*                                                                     *
*              FOR A SYSTEM SUPPORTING MULTIPROCESSING, THIS ENTRY    *
*              TAKES THE FOLLOWING FORM --                            *
*                                                                     *
*              *- - IPLED CPU - - - -*- - - - NULL  - - - -*          *
*              *********************************************          *
*              * PRIMARY  * ALTERNATE*          *          *          *
*              *  DEVICE  *  DEVICE  *  00  00  *  00  00  *          *
*              *   ADDRESS*   ADDRESS*          *          *          *
*              *********************************************          *
*              ..2 BYTES...                                           *
*              .................8 BYTES.....................          *
         AGO   .MIN030
.MIN020  ANOP
*                                                                     *
*              FOR A UNIPROCESSING SYSTEM, THIS ENTRY TAKES THE       *
*              FOLLOWING FORM --                                      *
*                                                                     *
*              *********************************************          *
*              * PRIMARY  * ALTERNATE* ALTERNATE* ALTERNATE*          *
*              *  DEVICE  *  ADDRESS *  ADDRESS *  ADDRESS *          *
*              *   ADDRESS*    ONE   *    TWO   *    THREE *          *
*              *********************************************          *
*              ..2 BYTES...                                           *
*              .................8 BYTES.....................          *
.MIN030  ANOP
*                                                                     *
*        THE MACRO WILL PASS TWO RETURN CODES VIA REGISTER 15 --      *
*              0 = ALTERNATE PATHS WERE GENERATED FOR THIS DEVICE.    *
*              4 = NO ALTERNATE PATHS EXIST.                          *
*                                                                     *
***********************************************************************
         SPACE 3
***********************************************************************
*          R E G I S T E R    D E F I N I T I O N S                   *
***********************************************************************
         SPACE 1
IECIMREG EQU   &REG                     UCB POINTER INPUT
IECIMPRM EQU   &PARM                    NIP WORKAREA POINTER INPUT
*
IECIMW1  EQU   1                        *
IECIMW2  EQU   2                        ** WORK REGISTERS
IECIMW3  EQU   3                        *
IECIMW4  EQU   4                        *
IECIMW15 EQU   15                       *
IECIMUCB EQU   5                        UCB POINTER REGISTER
IECIMNWA EQU   6                        NIP WORKAREA PTR REGISTER
IECIMRC  EQU   15                       RETURN CODE REGISTER 15
         SPACE 2
***********************************************************************
*          U C B    F L A G    D E F I N I T I O N S                  *
***********************************************************************
         SPACE 1
IECIMALC EQU   1                        UCB ALLOCATION CHANNEL MASK
IECIMCHA EQU   4                        UCB CHANNEL ADDRESS FIELD
IECIMUAD EQU   5                        UCB UNIT ADDRESS FIELD
IECIMFLG EQU   6                        UCB ACTIVITY FLAG 1 FIELD
IECIMLCI EQU   10                       UCB LOGICAL CHANNEL INDEX
IECIMAPS EQU   X'01'                    ALTERNATE PATH SWITCH SETTING
         SPACE 2
***********************************************************************
*          M I S C.   M A S K S   A N D   P O I N T E R S             *
***********************************************************************
         SPACE 1
IECIMCVT EQU   16                       POINTER TO CVT
IECIMLCH EQU   140                      POINTER TO IOS LOGICAL CHAN TBL
IECIMTCC EQU   6                        TEST CHANNEL CODE OFFSET
IECIMACU EQU   1                        ALTERNATE CU INDICATOR OFFSET
*                                       IN TEST CHANNEL PREFIX TABLE...
IECIMPRP EQU   X'08'                    MASK FOR TCH PREFIX PRIMARY PTH
IECIMAP1 EQU   X'04'                    PATH INDICATION FOR - ALTER 1
IECIMAP2 EQU   X'02'                                          ALTER 2
IECIMAP3 EQU   X'01'                                          ALTER 3
IECIMNUL EQU   X'00'                    NULL MASK
IECIMRC4 EQU   4                        RETURN CODE FOR NO ALTERNATES
IECIMNXT EQU   2                        INCREMENT FOR TABLES
IECIMMB1 EQU   0                        OFFSET FOR --  FIRST
IECIMMB2 EQU   2                        *              SECOND
IECIMMB3 EQU   4                        *              THIRD
IECIMMB4 EQU   6                        *              FOURTH MAP BOXES
IECIMBSY EQU   X'80'                    UCB DEVICE BUSY FLAG
IECIMPST EQU   X'20'                    UCB POST FLAG
IECIMPIM EQU   X'F0'                    ALTERNATE CU PATH MASK
IECIMPIN EQU   1                        ALTERNATE PATH DISCRIPTOR DISP.
IECIMBTM EQU   X'0F'                    BYTE ANDING MASK
         AIF   (&VAR(1) EQ 0).MIN031     'UNI-PROCESSING'
IECIMSIX DC    H'6'                     OFFSET FROM TCHTAB TO TCHCODE
.MIN031  ANOP
IECIMHWD DS    H                        HALFWORD WORKAREA
IECIMBYT EQU   IECIMHWD                 ONE BYTE WORKAREA
IECIMSA1 DS    F                        FIRST WORD OF SAVEAREA FOR &REG
IECIMSA2 DS    F                        SECOND WORD FOR &PARM...
IECIMHWM DC    X'0000FFFF'              MASK TO ZERO TOP HALF WORD
         AIF   (&VAR(1) EQ 1).MIN040    'MULTI-PROCESSING'
IECIMABL DC    X'0000000F'              MASK TO ZERO ALL BUT LOW 4 BITS
         SPACE 1
*                                       ALTERNATE MVC INSTRUCTIONS TO
IECIMVC  DS    0H                      MOVE ENTRY TO MINIMAP FOR
         MVC   IECIMMB1(2,IECIMNWA),0(IECIMW2) PRIMARY ADDRESS
         MVC   IECIMMB2(2,IECIMNWA),0(IECIMW2) 1ST ALT ADDRESS
         MVC   IECIMMB3(2,IECIMNWA),0(IECIMW2) 2ND ALT ADDRESS
         MVC   IECIMMB4(2,IECIMNWA),0(IECIMW2) 3RD ALT ADDRESS
         SPACE 1
*                                       ALTERNATE INSTRUCTION OFFSETS -
IECIMTAB DC    X'00'                    SLACK
         DC    X'12'                    OFFSET FOR THIRD ALTERNATE
         DC    X'0C'                    OFFSET FOR SECOND ALTERNATE
         DC    X'00'                    SLACK
         DC    X'06'                    OFFSET FOR FIRST ALTERNATE
         DC    X'000000'                SLACK
         DC    X'00'                    OFFSET FOR PRIMARY MOVE INSTR.
.MIN040  DS    0H                       ALIGN AFTER CONSTANTS....
         SPACE 5
IECIM010 ST    IECIMREG,IECIMSA1        SAVE UCB INPUT ADDRESS
         ST    IECIMPRM,IECIMSA2        STORE NIP WORKAREA INPUT ADDR.
         L     IECIMUCB,IECIMSA1        LOAD INTO WORKING REGISTER
         L     IECIMNWA,IECIMSA2        LOAD INTO ACTIVE WORK REGISTER.
         XC    0(8,IECIMNWA),0(IECIMNWA) ZERO MAP ENTRY...
         TM    IECIMALC(IECIMUCB),IECIMAPS Q.  IS THERE ALTERNATE PATH.
         BZ    IECIM020                 A.  NO, GO BUILD SINGLE ENTRY.
*
         L     IECIMW1,IECIMCVT         A.  YES, GET CVT ADDRESS...
         L     IECIMW1,IECIMLCH(IECIMW1) GET POINTER TO LOGICAL CHAN TB
         SR    IECIMW2,IECIMW2          CLEAR WORKREG -
         IC    IECIMW2,IECIMLCI(IECIMUCB) GET LOGICAL CHANNEL INDEX...
         SLL   IECIMW2,3                IECIMW2 = IECIMW2 * 8
         LH    IECIMW1,IECIMTCC(IECIMW1,IECIMW2) ADDR OF TEST CHAN CODE
         N     IECIMW1,IECIMHWM         CLEAR HIGH ORDER HALFWORD...
         AIF   (&VAR(1) EQ 0).MIN050     'UNI-PROCESSING'
         SH    IECIMW1,IECIMSIX         BACK-UP TO PREFIX TABLE START.
*    IECIMW1 POINTS TO TOP OF TEST CHANNEL PREFIX TABLE.
         TM    IECIMACU(IECIMW1),IECIMPRP  Q.  IS TOP PRIMARY PATH.
         BO    IECIM015                A.  YES, TAKE NORMAL SEQUENCE.
*                                       A.  NO, REVERSED.
         MVC   IECIMMB2(2,IECIMNWA),0(IECIMW1) GET ALT. ADDR FROM 1ST.
         MVC   IECIMMB1(2,IECIMNWA),IECIMNXT(IECIMW1) PRIMARY FROM 2ND.
         B     IECIM031                 SKIP TO ALT CU CHECK....
************************
         SPACE 1
IECIM015 MVC   IECIMMB1(2,IECIMNWA),0(IECIMW1) MOVE PRIME DEV ADDR/CPUA
         MVC   IECIMMB2(2,IECIMNWA),IECIMNXT(IECIMW1) ALT DEV ADDR/CPUA
*                                       1ST STAGE MINIMAP BUILT...
         SPACE 1
         AGO   .MIN060                 SKIP UNI-PROC CODE
.MIN050  BCTR  IECIMW1,0                * BACKUP ON HALF WORD TO
         BCTR  IECIMW1,0                * POINT TO LCHTAB SUMMARY ENTRY
         SR    IECIMW2,IECIMW2          CLEAR WORKREG, THEN
         IC    IECIMW2,0(IECIMW1)       PICK UP NUMBER OF PATHS...
         LR    IECIMW3,IECIMW2          COPY FOR LOOP ITERATION LIMIT
         STH   IECIMW3,IECIMHWD         AND AND SAVE...
         AR    IECIMW2,IECIMW2          DOUBLE TO GET TABLE SPAN
         LCR   IECIMW2,IECIMW2          NEGATE VALUE...
         AR    IECIMW2,IECIMW1          ADD TO GET POINTER TO TOP.
*   POINTERS NOW SET AT LIMITS OF TEST CHANNEL PREFIX TABLE _
         SPACE 1
IECIM030 IC    IECIMW15,IECIMACU(IECIMW2) PICK UP PATH INDICATOR
         N     IECIMW15,IECIMABL        CLEAR ALL BUT LOW FOUR BITS
         IC    IECIMW15,IECIMTAB(IECIMW15) PICK UP MVC INSTR. OFFSET
         EX    0,IECIMVC(IECIMW15)      EXECUTE SAME....
         SPACE 1
         LA    IECIMW2,IECIMNXT(IECIMW2) POINT TO NEXT ELEMENT...
         BCT   IECIMW3,IECIM030         LOOP THROUGH TCH PREFIX TABLE
*                                       1ST STAGE MINIMAP BUILT
         LH    IECIMW3,IECIMHWD         PICK UP NUMBER OF PATHS....
.MIN060  SPACE 1
IECIM031 LR    IECIMW4,IECIMNWA         COPY NIP WA ADDRESS
         TM    IECIMACU(IECIMW4),IECIMPIM Q.  IS ALTERNATE PATH C.U.
         BZ    IECIM040                    A.  NO, GO FOR ALTERNATE CHN
*
         AIF   (&VAR(1) EQ 0).MIN065    'UNI-PROCESSING'
         MVN   IECIMMB1+1(1,IECIMNWA),IECIMUAD(IECIMUCB) NORMALIZE MAP
         MVN   IECIMMB2+1(1,IECIMNWA),IECIMUAD(IECIMUCB) ADDRESSES...
         AGO   .MIN070
.MIN065  ANOP
IECIM035 MVN   IECIMMB1+1(1,IECIMW4),IECIMUAD(IECIMUCB) GET UNIT ADDR.
         LA    IECIMW4,IECIMNXT(IECIMW4) BUMP TO NEXT ENTRY...
         BCT   IECIMW3,IECIM035         LOOP UNTIL ADDRESSES NORMALIZED
*
.MIN070  B     IECIM050                 SKIP ALT. CHANNEL CODE...
*************************
         SPACE 1
         AIF   (&VAR(1) EQ 0).MIN075    'UNI-PROCESSING'
IECIM040 MVC   IECIMMB1+1(1,IECIMNWA),IECIMUAD(IECIMUCB) NORMALIZE MAP
         MVC   IECIMMB2+1(1,IECIMNWA),IECIMUAD(IECIMUCB) ADDRESSES....
         AGO   .MIN080
.MIN075  ANOP
IECIM040 MVC   IECIMMB1+1(1,IECIMW4),IECIMUAD(IECIMUCB) GET UNIT ADDR.
         LA    IECIMW4,IECIMNXT(IECIMW4) BUMP TO NEXT ENTRY...
         BCT   IECIMW3,IECIM040         LOOP UNTIL ADDRESSES NORMALIZED
*
.MIN080  ANOP
IECIM050 SR    IECIMRC,IECIMRC          SET RETURN CODE TO ZERO...
         B     IECIMMXT                 EXIT MACRO CODE....
*************************
         SPACE 1
IECIM020 MVC   IECIMMB1(2,IECIMNWA),IECIMCHA(IECIMUCB) P/U DEVICE ADDR.
         NI    IECIMMB1(IECIMNWA),IECIMBTM  ZERO TOP HALFBYTE OF ADDR.
*                                       ALTERNATE PATH ENTRIES REMAIN
*                                       ZERO TO REFLECT LACK OF SAME.
         LA    IECIMRC,IECIMRC4         SET RETURN TO 4 FOR
*                                       NO ALTERNATE PATH INDICATION.
IECIMMXT DS    0H                       EXIT THIS ROUTINE
         MEXIT                           EXIT MACRO
.*
.**********************************************************************
.*
.*       ALL IOSGNIP MNOTES ARE TO BE PLACED BELOW...
.*
.*   1.  .IOSNG1 - AUTHORIZATION VIOLATION
.*                                       USED BY ALL FUNCTIONS
.*
.**********************************************************************
.*
.IOSNOGO ANOP
.IOSNG1  MNOTE 8,'*** ''&AUTH'' MAY NOT INVOKE ''&FUNC'' FUNCTION.'
         MEXIT
.*
.IOSGEND       ANOP
         MEND
./ ADD NAME=IOSMSSA
         MACRO
&NAME    IOSMSSA &WRK1,&WRK2,&UCBR
         LCLC  &A,&B,&N,&U
         AIF   (T'&WRK1 EQ 'O' OR T'&WRK2 EQ 'O' OR T'&UCBR EQ 'O').ERR
&A       SETC  '&WRK1(1)'                    REMOVE PARENTHESES IF ANY
&B       SETC  '&WRK2(1)'
&U       SETC  '&UCBR(1)'
         AIF   (T'&NAME EQ 'O').NONAME
&NAME    DS    0H
.NONAME  ANOP
&N       SETC  '&SYSNDX'
IECL&N   TM    UCBFL4-UCBOB(&U),X'06'  LOST ATTN? (UCBHOLD+UCBMAT)
         BZ    IECQ&N              NO - EXIT RC=0
         BM    IECS&N              MAYBE - SET FLAG FOR NEXT TIME
         L     &A,UCBSQC-UCBOB(,&U)  YES - GET WORD WITH UCBFL4
         LR    &B,&A               COPY IT
         O     &B,IECA&N           SET UCBATTN
         N     &B,IECB&N           RESET UCBHOLD AND UCBMAT
         CS    &A,&B,UCBSQC-UCBOB(&U)  SWAP IF WORD NOT ALTERED
         BNE   IECL&N              ALTERED - START OVER
         LA    &A,4                SWAP OK - SET RC=4 FOR LOST ATTN
         B     IECR&N              EXIT
************** CONSTANTS USED BY MACRO ********************************
         DS    0F
IECA&N   DC    X'00080000'         USED TO SET UCBATTN
IECB&N   DC    X'FFF9FFFF'         USED TO RESET UCBHOLD AND UCBMAT
IECC&N   DC    X'00020000'         USED TO SET UCBMAT
************** CONTINUE CODE EXPANSION ********************************
IECS&N   L     &A,UCBSQC-UCBOB(,&U)  GET WORD WITH UCBFL4
         LR    &B,&A               COPY IT
         O     &B,IECC&N           SET UCBMAT FOR NEXT TIME
         CS    &A,&B,UCBSQC-UCBOB(&U)  SWAP WORD IF NOT ALTERED
         BNE   IECL&N              ALTERED - START OVER
IECQ&N   SLR   &A,&A               SWAP OK OR NOT NEEDED - SET RC=0
IECR&N   DS    0H                  RETURN TO INLINE CODE
         MEXIT
.ERR     AIF   (T'&UCBR NE 'O').ER1
         IHBERMAC 4
.ER1     AIF   (T'&WRK2 NE 'O').ER2
         IHBERMAC 3
.ER2     AIF   (T'&WRK1 NE 'O').ER3
         IHBERMAC 2
.ER3     MEND
./ ADD NAME=IRACCT
*        %GOTO CCTPLS1;            /*
         MACRO
         IRACCT &DSECT=YES
*                                                                    */
*%CCTPLS1 : ;
*/*                                                                  */
*/* MACCOMP Z-4 SC1CX/PKD16                                          */
*/* MACSTAT Z-4 75007/Z40BPSS                                        */
*/********************************************************************/
*/*                                                                  */
*/*      MACRO NAME - IRACCT                                         */
*/*                                                                  */
*/*      DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER CPU             */
*/*                         MANAGEMENT CONTROL TABLE                 */
*/*                                                                  */
*/*      STATUS - OS/VS2 RELEASE 2, 02/15/74,LEVEL=7                 */
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.     */
*/*              USING ON CCT GIVES ADDRESSIBILITY FOR ALL SYMBOLS.  */
*/*        PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL CCTPTR PTR.  */
*/*              TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE    */
*/*                SET %CCTLEVEL TO DESIRED STRUCTURE LEVEL.         */
*/*              TO PREVENT STRUCTURE FROM BEING CLOSED,             */
*/*                SET %CCT9999=','.                                 */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*        %GOTO CCTPLS2;            /*
         AIF   ('&DSECT' EQ 'YES').CCT001
CCT      DS    0D -                CPU MANAGEMENT CONTROL TABLE
         AGO   .CCT002
.CCT001  ANOP
CCT      DSECT , -                 CPU MANAGEMENT CONTROL TABLE
.CCT002  ANOP
CCTCCT   DC    CL4'CCT' -          ACRONYM IN EBCDIC -CCT-
*
*        CPU CONTROL CONSTANTS
*
* TIME INTERVAL CONSTANTS - 1000 UNITS = APPROXIMATELY 1 SECOND
CCCAPMET DC    F'200' -            MINIMUM USER EXECUTION INTERVAL FOR
*                                  MEAN TIME TO WAIT COMPUTATION
CCCAPMIN DC    F'1000' -           MINIMUM APG INVOCATION INTERVAL
CCCAPMAX DC    F'0003000' -        MAXIMUM APG INVOCATION INTERVAL
CCCAPDEL DC    F'1000' -           DELTA FOR CHANGING APG INTERVAL
CCCMNUIN DC    F'30000' -           TIME USER MUST BE IN MAIN STORAGE
*                                   BEFORE SWAP OUT CPU REC IS GIVEN
CCCMNSIN DC    F'5000' -           MINIMUM INTERVAL FOR COMPUTING
*                                  SYSTEM CPU UTILIZATION
CCCRSVF1 DC    F'0' -              RESERVED
* APG DISPATCHING PRIORITY COMPUTATION CONSTANTS
CCCAPDIV DC    H'4' -              DP COMPUTATION DIVISOR      @Z40BPEB
CCCAPROT DC    H'11' -             VALUE OF APG ROTATE GROUP   @Z40BPEB
CCCAPBDP DC    H'15' -             BASE DP FROM WHICH QUOTIENT IS
*                                  SUBTRACTED
CCCAPLDP DC    H'1' -              DP FOR UNDISPATCHED APG USERS
CCCAPMDP DC    H'0' -              DP FOR MAX MEAN TIME TO WAIT
CCCAPGDP DC    H'06' -             APG INITIAL DP              @Z40BPCH
CCCR01    DC    H'0' -             RESERVED                  @ZM43085
* APG THRESHOLDS EXPRESSED AS % OF APG USERS CHAPPED AT APG CALL
CCCAPRLT DC    H'20' -             LOW THRESHOLD - LENGTHEN APG
*                                  INVOCATION INTERVAL
CCCAPRHT DC    H'60' -             HIGH THRESHOLD - SHORTEN INTERVAL
* CPU LOAD BALANCING RECOMMENDATION VALUE COMPUTATION CONSTANTS
CCCUTHIT DC    H'100' -            HIGH UTILIZATION IMBALANCE
*                                  THRESHOLD
CCCUTLOT DC    H'80' -             LOW UTILIZATION IMBALANCE
*                                  THRESHOLD
CCCHISCF DC    H'6400' -           HIGH THRESHOLD SCALING FACTOR
CCCLOSCF DC    H'1' -              LOW THRESHOLD SCALING FACTOR
CCCMAXRV DC    H'128' -            MAXIMUM CPL REC VALUE
CCCMINRV DC    H'-128' -           MINIMUM CPL REC VALUE
CCCSCFAC DC    H'64' -             REC VALUE SCALING DIVISOR
CCCSIGDP DC    H'02' -             SIGNIFICANT CPU USER D PRIORITY
CCCSIGUR DC    H'26' -             SIGNIFICANT MEAN TIME TO WAIT IN MS
CCCR02   DC    H'0' -              RESERVED                   @ZM43085
CCCSCFC1 DC    H'10' -             SYSTEM WAIT % AVERAGING FACTOR
CCCSCFC2 DC    H'11' -             CCCSCFC1+1
CCCRSVH1 DC    H'0' -              RESERVED
CCCEND   DS    0F -                END OF CCT CONSTANTS
*
*        CPU CONTROL VARIABLES
*
CCVR03  DC    F'0' -               RESERVED                   @ZM43085
CCVRBSWT DC    F'0' -              RECENT BASE SYSTEM WAIT TIME
CCVR04   DC    F'0' -              RESERVED                  @ZM43085
CCVRBSTD DC    F'0' -              RECENT BASE TIME OF DAY
CCVRVSWF DC    F'0' -              SYSTEM WAIT FACTOR FOR CPL
*                                  RECOMMENDATION VALUE COMPUTATION
CCVPGCPF DC    F'0' -              PAGE CP SERVICE FACTOR FOR CPL
*                                  RECOMMENDATION VALUE COMPUTATION
CCVEJST  DC    F'0' -              LOW PRIORITY USER JOB STEP TIME
CCVIMBBT DC    F'0' -               TIME OF LAST CPU IMBALANCE
CCVR05   DC    H'0' -              RESERVED                   @ZM43085
CCVUTILP DC    H'50' -             SYSTEM CPU UTILIZATION
CCVR06   DC    H'0' -              RESERVED                  @ZM43085
CCVR07   DC   H'0' -               RESERVED                   @ZM43085
CCVLGUTL DC    AL2(50*256) -       LONG TERM UTILIZATION * 256
CCVLGFMC DC    H'10' -             AVERAGE AVAILABLE FRAME COUNT
CCVENQCT DC    H'0' -              NO. OF USERS NON SWAPPABLE FOR
*                                  ENQ REASONS
CCVCPUCT DC    H'0' -              NUMBER OF ONLINE CPUS
*
*        CPU CONTROL FLAGS
*
CCTFLG1  DC    B'0' -
CCTALL   EQU   BIT0 -              LOW PRIORITY USER NOT DISPATCHED
CCTCPUOT EQU   BIT1 -              CPU OUT OF BALANCE
CCTFLG2  DC    3B'0' -             RESERVED
CCVEND   DS    0D -                END OF CCT
CCTLEN   EQU   CCVEND-CCT -        LENGTH OF CCT
         MEND  , -                                                   */
*%CCTPLS2 : ;
*    %IF CCT9999^=','              /* IF THIS IS LAST BLOCK          */
*      %THEN CCT9999=';';          /* THEN CLOSE DECLARE STATEMENT   */
*    %IF CCTLEVEL^=''              /* IF MINOR LEVEL IS SPECIFIED,   */
*      %THEN %GOTO CCTPLS3;        /* SKIP MAJOR DECLARE             */
*DECLARE                           /*                                */
*  1 CCT BASED(CCTPTR)             /*     CPU CONTROL TABLE          */
*    %GOTO CCTPLS4;                /* MAJOR STRUCTURE                */
*%CCTPLS3: CCTDUM=CCTLEVEL' CCT'; /* CONCATENATE AS MINOR STRUCTURE*/
*  CCTDUM                          /*     CPU CONTROL TABLE          */
*%CCTPLS4:;
*          BDY(DWORD),
*       5 CCTCCT CHAR(4),          /* ACRONYM IN EBCDIC -CCT-        */
*/*                                                                  */
*/*      CPU CONTROL CONSTANTS                                       */
*/*                                                                  */
*/* TIME INTERVAL CONSTANTS                                          */
*       5 CCCAPMET FIXED(31),      /* MINIMUM USER EXECUTION INTERVAL
*                                   FOR MEAN TIME TO WAIT COMPUTATION*/
*       5 CCCAPMIN FIXED(31),      /* MINIMUM APG INVOCATION INTERVAL*/
*       5 CCCAPMAX FIXED(31),      /* MAXIMUM APG INVOCATION INTERVAL*/
*       5 CCCAPDEL FIXED(31),      /* DELTA FOR CHANGING APG INTERVAL*/
*       5 CCCMNUIN FIXED(31),       /* TIME USER MUST REMAIN IN STORAGE
*                                      BEFORE CPU RECOMMENDATION FOR
*                                      SWAP OUT IS GIVEN             */
*       5 CCCMNSIN FIXED(31),      /* MINIMUM INTERVAL FOR COMPUTING
*                                     SYSTEM CPU UTILIZATION         */
*       5 CCCRSVF1 FIXED(31),      /* RESERVED                       */
*/* APG DISPATCHING PRIORITY (DP) COMPUTATION CONSTANTS              */
*       5 CCCAPDIV FIXED(15),      /* DP COMPUTATION DIVISOR  @Z40BPEB*/
*       5 CCCAPROT FIXED(15),      /* APG ROTATE VALUE        @Z40BPEB*/
*       5 CCCAPBDP FIXED(15),      /* BASE DP FROM WHICH QUOTIENT IS
*                                     SUBTRACTED                     */
*       5 CCCAPLDP FIXED(15),      /* DP FOR UNDISPATCHED APG USERS  */
*       5 CCCAPMDP FIXED(15),      /* DP FOR MAX MEAN TIME TO WAIT   */
*       5 CCCAPGDP FIXED(15),      /* APG INITIAL DP                 */
*       5 CCCR01 FIXED(15),        /* RESERVED               @ZM43085*/
*/* APG THRESHOLDS EXPRESSED AS % OF APG USERS CHAPPED AT APG CALL   */
*       5 CCCAPRLT FIXED(15),      /* LOW THRESHOLD - LENGTHEN APG
*                                     INVOCATION INTERVAL            */
*       5 CCCAPRHT FIXED(15),      /* HIGH THRESHOLD - SHORTEN INT   */
*
*/* CPU LOAD BALANCING RECOMMENDATION VALUE COMPUTATION CONSTANTS    */
*       5 CCCUTHIT FIXED(15),      /* HIGH UTILIZATION IMBALANCE
*                                     THRESHOLD                      */
*       5 CCCUTLOT FIXED(15),      /* LOW UTILIZATION IMBALANCE
*                                     THRESHOLD                      */
*       5 CCCHISCF FIXED(15),      /* HIGH THRESHOLD SCALING FACTOR  */
*       5 CCCLOSCF FIXED(15),      /* LOW THRESHOLD SCALING FACTOR   */
*       5 CCCMAXRV FIXED(15),      /* MAXIMUM CPL REC VALUE          */
*       5 CCCMINRV FIXED(15),      /* MINIMUM CPL REC VALUE          */
*       5 CCCSCFAC FIXED(15),      /* REC VALUE SCALING FACTOR       */
*       5 CCCSIGDP FIXED(15),      /* SIGNIFICANT CPU USER D PRIORITY*/
*       5 CCCSIGUR FIXED(15),      /* SIGNIFICANT MEAN TIME TO WAIT  */
*      5 CCCR02 FIXED(15),         /* RESERVED                @ZM43085*/
*       5 CCCSCFC1 FIXED(15),      /* SYSTEM WAIT % AVERAGING FACTOR */
*       5 CCCSCFC2 FIXED(15),      /* CCCSCFC1+1                     */
*       5 CCCRSVH1 FIXED(15),      /* RESERVED                       */
*       5 CCCEND CHAR(0) BDY(WORD),/* END OF CCT CONSTANTS           */
*/*                                                                  */
*/*      CPU CONTROL VARIABLES                                       */
*/*                                                                  */
*      5 CCVR03 FIXED(32),         /* RESERVED               @ZM43085*/
*      5 CCVRBSWT FIXED(32),       /* RECENT BASE SYSTEM WIAT TIME   */
*      5 CCVR04 FIXED(32),          /* RESERVED             @ZM43085*/
*      5 CCVRBSTD FIXED(32),       /* RECENT BASE TIME OF DAY        */
*      5 CCVRVSWF FIXED(31),        /* SYSTEM WAIT FACTOR FOR CPL
*                                      REC VALUE COMPUTATION         */
*      5 CCVPGCPF FIXED(31),       /* PAGE CP SERVICE FACTOR FOR CPL
*                                     RECOMMENDATION VALUE
*                                     COMPUTATION                    */
*      5 CCVEJST BIT(32),          /* LOW PRIORITY USER JOB STEP TIME*/
*      5 CCVIMBBT FIXED(31),        /* TIME OF LAST CPU IMBALANCE    */
*      5 CCVR05 FIXED(15),         /* RESERVED              @ZM43085*/
*      5 CCVUTILP FIXED(15),       /* SYSTEM CPU UTILIZATION         */
*      5 CCVR06 FIXED(15),         /* RESERVED              @ZM43085*/
*      5 CCVR07 FIXED(15),          /* RESERVED             @ZM43085*/
*      5 CCVLGUTL FIXED(15),       /* LONG TERM CPU UTILIZATION * 256*/
*      5 CCVLGFMC FIXED(15),        /* AVERAGE AVAILABLE FRAME COUNT */
*      5 CCVENQCT FIXED(15),        /* NO. OF USERS NON-SWAPPABLE FOR
*                                      ENQ REASONS                   */
*      5 CCVCPUCT FIXED(15),        /* NUMBER OF ONLINE CPUS         */
*/*                                                                  */
*/*                                                                  */
*/*      CPU CONTROL FLAGS                                           */
*      5 CCTFLG1 BIT(8),           /*                                */
*        10 CCTALL BIT(1),         /* LOW PRTY USER NOT DISPATCHED   */
*        10 CCTCPUOT BIT(1),       /* CPU OUT OF BALANCE             */
*      5 CCTFLG2 BIT(24),          /* RESERVED                       */
*      5 CCVEND CHAR(0)            /* END OF CCT                     */
*          BDY(DWORD) CCT9999
*%CCTLEN='LENGTH(CCT)';            /* OBTAIN LENGTH OF CCT           */
*      @EJECT;
./ ADD NAME=IRADMDT
*        %GOTO DMDTPLS1; /*
         MACRO
         IRADMDT  &DSECT=YES                                        */
*%DMDTPLS1:  ;
*/* MACCOMP Z-4 SC1CX/PKD16                                          */
*/* MACSTAT Z-4 75007/Z40BPSS                                        */
*/********************************************************************/
*/* MACRO NAME - IRADMDT                                             */
*/*                                                                  */
*/* DESCRIPTIVE NAME - DOMAIN TABLE DESCRIPTION                      */
*/*                                                                  */
*/* COPYRIGHT - NONE                                                 */
*/*                                                                  */
*/* STATUS - OS/VS2 RELEASE 4, 07/30/75                              */
*/*                                                                  */
*/* FUNCTION - THE DMDT SPECIFIES THE DOMAINS INTO WHICH             */
*/*            USER TRANSACTIONS ARE DIVIDED, AND FOR EACH           */
*/*            DOMAIN, THE CONSTRAINTS ON ITS PARTICIPATION          */
*/*            IN THE CHANGING OF THE MULTI-PROGRAMMING              */
*/*            LEVEL AND CURRENT DOMAIN CONTROL STATUS.              */
*/*                                                                  */
*/*            THE DOMAIN TO BE USED FOR A TRANSACTION IS            */
*/*            INDICATED BY THE -WPGPDMN- FIELD OF THE               */
*/*            CURRENT PERIOD WITHIN THE APPLICABLE PERFORMANCE      */
*/*            GROUP DESCRIPTION.                                    */
*/*                                                                  */
*/* METHOD-OF-ACCESS - THE ADDRESS OF THE DOMAIN TABLE ENTRY FOR A   */
*/*                    PARTICULAR SYSTEM USER IS OBTAINED BY ADDING  */
*/*                    THE OFFSET IN THE -OUCBDMO- FIELD OF THE      */
*/*                    SYSTEM RESOURCES MANAGER USER CONTROL BLOCK   */
*/*                    TO THE ADDRESS IN THE -WMSTDMDT- FIELD OF THE */
*/*                    WORKLOAD MANAGER SPECIFICATION TABLE.         */
*/********************************************************************/
*        %GOTO DMDTPLS2; /*
         AGO   .DMDTAL1                                              */
*/********************************************************************/
*/*                                                                  */
*/* INVOCATION PARAMETERS AND/OR KEYWORDS =                          */
*/*                                                                  */
*/*   BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.                 */
*/*                                                                  */
*/*     USING ON DMDT GIVES ADDRESSABILITY TO ALL SYMBOLS            */
*/*                                                                  */
*/*   PLS - %DMDTLEVL='USERLEVL' IF THE DMDT MAPPING IS TO BE        */
*/*         CONCATENATED WITH A PREVIOUS DECLARATION,WITH THE        */
*/*         DMDT BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.       */
*/*       - %DMDT9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED      */
*/*                                                                  */
*/*         TO ACCESS AS A STANDALONE STRUCTURE DCL DMDTPTR PTR.     */
*/*                                                                  */
*/*  CHANGE ACTIVITY =@Z40BFEM                                       */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
.DMDTAL1 ANOP
         SPACE 1
         AIF  ('&DSECT' EQ 'NO').DMDTAL2
DMDT     DSECT
         AGO  .DMDTAL3
.DMDTAL2 ANOP
         DS   0F
DMDT     EQU  *
.DMDTAL3 ANOP
         SPACE 1
DMDTNO   DS   AL1                  DOMAIN NUMBER
DMDTLO   DS   AL1                  MIN MPL LEVEL
DMDTHI   DS   AL1                  MAX MPL LEVEL
DMDTWT   DS   AL1                  WEIGHTING FACTOR
DMDTMPLT DS   H                    CURRENT MPL TARGET
DMDTRUA  DS   H                    AVE # OF READY USERS
DMDTGOOU DS   H                    CURRENT # OF USERS GOING OUT
DMDTCMPL DS   H                    CURRENT MPL
DMDTOUTU DS   H                    CURRENT # USERS ON OUT Q
DMDTINCU DS   H                    CURRENT # SWAPPABLE INCORE USERS
DMDTRUC  DS   F                    ACCUMULATOR FOR READY USER COUNT
DMDTEND  DS   0F                   END OF DMDT
DMDTLEN  EQU  DMDTEND-DMDT         LENGTH OF DMDT
         MEND
*                                                                    */
*%DMDTPLS2:  ;
*        %IF DMDT9999 ^= ','       /* DOES STRUCTURE CONTINUE        */
*            %THEN %DMDT9999 = ';';/* NO, END DECLARE STATEMENT      */
*        %IF DMDTLEVL ^= ''        /* IS STRUCTURE CONCATENATED      */
*            %THEN %GOTO DMDTPLS3; /* YES, OMIT DECLARE STATEMENT    */
*   DCL
*     1 DMDT BASED(DMDTPTR) BDY(WORD),
*        %GOTO DMDTPLS4;           /* SKIP USER GIVEN LEVEL          */
*%DMDTPLS3:  DMDTDUM = DMDTLEVL' DMDT';  /* PICK UP GIVEN LEVEL    */
*     DMDTDUM BDY(WORD),
*%DMDTPLS4:   ;
*        10 DMDTNO FIXED(8),       /* DOMAIN NUMBER                  */
*        10 DMDTLO FIXED(8),       /* MIN MPL LEVEL                  */
*        10 DMDTHI FIXED(8),       /* MAX MPL LEVEL                  */
*        10 DMDTWT FIXED(8),       /* WEIGHTING FACTOR               */
*        10 DMDTMPLT FIXED(15),    /* CURRENT MPL TARGET             */
*        10 DMDTRUA FIXED(15),     /* AVE # OF READY USERS           */
*        10 DMDTGOOU FIXED(15),    /* CURRENT # OF USERS GOING OUT   */
*        10 DMDTCMPL FIXED(15),    /* CURRENT MPL                    */
*        10 DMDTOUTU FIXED(15),    /* CURRENT # USERS ON OUT Q       */
*        10 DMDTINCU FIXED(15),    /* CURRENT # SWAPPABLE INCORE     */
*/*                                   USERS                          */
*        10 DMDTRUC FIXED(31),     /* ACCUMULATOR FOR READY USER     */
*/*                                   AVERAGE                        */
*        10 DMDTEND CHAR(0) BDY(WORD)  /* END OF DMDT                */
*     DMDT9999
*     %DMDTLEN = 'LENGTH(DMDT)';   /* SYMBOLIC FOR DMDT LENGTH       */
./ ADD NAME=IRAEPAT
*        %GOTO EPATPLS1; /*
         MACRO
         IRAEPAT   &DSECT=YES
         GBLC  &IRAEPPV            PREV RMEP BLOCK ADDRESS NAME
         GBLC  &IRAEPTM            PREV SCHED RMEP ADDRESS NAME
         GBLB  &IRAEPCM            IRARMEP COMMENTARY PRINT CONTROL
&IRAEPPV SETC  '00000000'          INIT TO NO PREVIOUS ASSEMBLED RMEP
&IRAEPTM SETC  'IRACTMQE'          INIT TO SCHED RTNE QUE HEADER ADDR
&IRAEPCM SETB  1                   BYPASS IRARMEP HEADER COMMENTARY
.*                                                                   */
*%EPATPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAEPAT                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER ALGORITHM         */
* /*                      ENTRY POINT DESCRIPTOR TABLE.              */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 09/23/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE EPAT CONTAINS THE ENTRY POINT DESCRIPTORS OF   */
* /*         ALL INDIVIDUALLY REQUESTED OR INDIVIDUALLY SCHEDULED    */
* /*         SYSTEM RESOURCES MANAGER ALGORITHMS (ROUTINES WHOSE     */
* /*         SCOPE OF APPLICABILITY IS SYSTEM-WIDE).  THE IRACTLCL   */
* /*         MACRO KEYS OFF THE EPAT DISPLACEMENTS TO GENERATE THE   */
* /*         CALLING SEQUENCES WHEREBY ALGORITHMS ARE REQUESTED.     */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE EPAT IS ADDRESSED AS BEING AT A KNOWN  */
* /*         DISPLACEMENT FROM THE SYSTEM RESOURCES MANAGER CONTROL  */
* /*         TABLE, I.E., USING THE RMCTPTR REGISTER.  THE IRACNSMP  */
* /*         INCLUDE LIST SPECIFIES THE SYMBOLIC DISPLACMENT OF THE  */
* /*         EPAT FROM THE RMCT.  THE EPAT TABLE IS SCANNED VIA THE  */
* /*         RMEP CHAIN POINTER IN THE -RMCTEPAT- FIELD.             */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO EPATPLS2; /*
         AGO   .EPATAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON EPAT GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %EPATLEVL='USERLEVL' IF THE EPDT MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           EPAT BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %EPAT9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL EPATPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @ZM43084                                    */
* /*                     @ZM43090,@ZA11855                           */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPATAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').EPATAL2
EPAT     DSECT
         AGO   .EPATAL3
.EPATAL2 ANOP
         DS    0D
EPAT     EQU   *
.EPATAL3 ANOP
         SPACE 1
         IRARMEP   DSECT=NO,EPN=CAP,NXT=000,RCR=YES,SCH=01000
         IRARMEP   DSECT=NO,EPN=RM1,NXT=RM2,SCH=01000
         IRARMEP   DSECT=NO,EPN=RM2,NXT=CAP,SCH=30000
         IRARMEP   DSECT=NO,EPN=SQA,NXT=RM1,RCR=YES
         IRARMEP   DSECT=NO,EPN=MS6,NXT=ASM,SCH=08000
         IRARMEP   DSECT=NO,EPN=PR5,NXT=MS6
         IRARMEP   DSECT=NO,EPN=MS2,NXT=PR5,RCR=YES
         IRARMEP   DSECT=NO,EPN=ASM,NXT=SQA,RCR=YES,SCH=10000
         IRARMEP   DSECT=NO,EPN=IL1,NXT=MS2,SCH=03000          @ZM43090
         IRARMEP   DSECT=NO,EPN=WM2,NXT=IL1,SCH=01000          @ZA11855
         IRARMEP   DSECT=NO,EPN=CL1,NXT=WM2,SCH=03000          @ZM43090
         IRARMEP   DSECT=NO,EPN=AP1,NXT=EQ1,SCH=02000
         IRARMEP   DSECT=NO,EPN=EQ1,NXT=CL1,SCH=05000
         IRARMEP   DSECT=NO,EPN=PR1,NXT=AP1,SCH=01000
&IRAEPPV SETC  'RMEPBPR1'
EPATEND  DS    0D -                END OF EPAT TABLE
EPATLEN  EQU   EPATEND-EPAT -      LENGTH OF EPAT TABLE
EPATSCN  EQU   &IRAEPPV -          BEGIN EPAT TABLE SCAN
EPATSCH  EQU   &IRAEPTM -          BEGIN SCHED RTNE QUEUE
         MEND
*                                                                    */
*%EPATPLS2:  ;
*        %EPATEPN = '16' ;          /* SIZE OF BASE EPB BLOCK        */
*        %EPATSCH = '32' ;          /* SIZE OF SCHD EPB BLOCK        */
*        %IF EPAT9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %EPAT9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF EPATLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO EPATPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 EPAT BASED(EPATPTR) BDY(DWORD),
*            %GOTO EPATPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%EPATPLS3:  EPATDUM = EPATLEVL' EPAT';  /* PICK UP GIVEN LEVEL    */
*     EPATDUM BDY(DWORD),
*%EPATPLS4:  ;
*       10 RMEPBCAP CHAR(EPATSCH) BDY(DWORD), /* CTL PRT ANLZ RTNE   */
*       10 RMEPBRM1 CHAR(EPATSCH) BDY(DWORD), /* RES MONITORING RTNE */
*       10 RMEPBRM2 CHAR(EPATSCH) BDY(DWORD), /* RM ADJUSTMENT RTNE  */
*       10 RMEPBSQA CHAR(EPATEPN) BDY(DWORD), /* SQA MSG PRNT RTNE   */
*       10 RMEPBMS6 CHAR(EPATSCH) BDY(DWORD), /* MSO WAIT CHK RTNE   */
*       10 RMEPBPR5 CHAR(EPATEPN) BDY(DWORD), /* PRA FORC STL RTNE   */
*       10 RMEPBMS2 CHAR(EPATEPN) BDY(DWORD), /* MSO ANALYSIS RTNE   */
*       10 RMEPBASM CHAR(EPATSCH) BDY(DWORD), /* ASM SHRT MON RTNE   */
*       10 RMEPBIL1 CHAR(EPATSCH) BDY(DWORD), /* IOL UTIL MON RTNE   */
*       10 RMEPBWM2 CHAR(EPATSCH) BDY(DWORD), /* WLM ANALYSIS RTNE   */
*       10 RMEPBCL1 CHAR(EPATSCH) BDY(DWORD), /* CPU UTIL MON RTNE   */
*       10 RMEPBAP1 CHAR(EPATSCH) BDY(DWORD), /* APG ANALYSIS RTNE   */
*       10 RMEPBEQ1 CHAR(EPATSCH) BDY(DWORD), /* ENQ STAT MON RTNE   */
*       10 RMEPBPR1 CHAR(EPATSCH) BDY(DWORD), /* PRA ANALYSIS RTNE   */
*       10 EPATEND  CHAR(0) BDY(DWORD) /* END OF EPAT TABLE          */
*   EPAT9999
*   %EPATLEN = 'LENGTH(EPAT)';      /* SYMBOLIC FOR LENGTH OF EPAT   */
./ ADD NAME=IRAEPDT
*        %GOTO EPDTPLS1; /*
         MACRO
         IRAEPDT   &DSECT=YES
         GBLC  &IRAEPPV            PREV RMEP BLOCK ADDRESS NAME
         GBLB  &IRAEPCM            IRARMEP COMMENTARY PRINT CONTROL
&IRAEPPV SETC  '00000000'          INIT TO NO PREVIOUS CHAINED RMEP
&IRAEPCM SETB  1                   BYPASS IRARMEP HEADER COMMENTARY
.*                                                                   */
*%EPDTPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAEPDT                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER SERIALIZED        */
* /*                      ACTION ENTRY POINT DESCRIPTOR TABLE.       */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 07/30/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE EPDT CONTAINS THE ENTRY POINT DESCRIPTORS OF   */
* /*         ALL SYSTEM RESOURCES MANAGER EVENT INITIATED ACTIONS    */
* /*         (ROUTINES WHICH PERFORM PROCESSING FOR A GIVEN USER)    */
* /*         WHICH REQUIRE SERIALIZATION WITH OTHER SRM PROCESSING.  */
* /*         THE IRACTLCL MACRO KEYS OFF THE EPDT DISPLACEMENTS TO   */
* /*         GENERATE THE CALLING SEQUENCES FOR DEFERRABLE ACTIONS.  */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE EPDT IS ADDRESSED AS BEING AT A KNOWN  */
* /*         DISPLACEMENT FROM THE SYSTEM RESOURCES MANAGER CONTROL  */
* /*         TABLE, I.E., USING THE RMCTPTR REGISTER.  THE IRACNSMP  */
* /*         INCLUDE LIST SPECIFIES THE SYMBOLIC DISPLACMENT OF THE  */
* /*         EPDT FROM THE RMCT.  THE EPDT TABLE IS SCANNED VIA THE  */
* /*         RMEP CHAIN POINTER IN THE -RMCTEPDT- FIELD.             */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO EPDTPLS2; /*
         AGO   .EPDTAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON EPDT GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %EPDTLEVL='USERLEVL' IF THE EPDT MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           EPDT BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %EPDT9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL EPDTPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPDTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').EPDTAL2
EPDT     DSECT
         AGO   .EPDTAL3
.EPDTAL2 ANOP
         DS    0D
EPDT     EQU   *
.EPDTAL3 ANOP
         SPACE 1
         IRARMEP   DSECT=NO,EPN=IPS,NXT=000,ERR=XPS,RCR=YES
         IRARMEP   DSECT=NO,EPN=DEL,NXT=IPS,RCR=YES
         IRARMEP   DSECT=NO,EPN=IL4,NXT=DEL,RCR=YES
         IRARMEP   DSECT=NO,EPN=UXB,NXT=HIT,RCR=YES
         IRARMEP   DSECT=NO,EPN=HIT,NXT=IL4,RCR=YES
         IRARMEP   DSECT=NO,EPN=RPS,NXT=UXB,RCR=YES
EPDTEND  DS    0D -                END OF EPDT TABLE
EPDTLEN  EQU   EPDTEND-EPDT -      LENGTH OF EPDT TABLE
EPDTSCN  EQU   &IRAEPPV -          BEGIN EPDT TABLE SCAN
         MEND
*                                                                    */
*%EPDTPLS2:  ;
*        %IF EPDT9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %EPDT9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF EPDTLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO EPDTPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 EPDT BASED(EPDTPTR) BDY(DWORD),
*            %GOTO EPDTPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%EPDTPLS3:  EPDTDUM = EPDTLEVL' EPDT';  /* PICK UP GIVEN LEVEL    */
*     EPDTDUM BDY(DWORD),
*%EPDTPLS4:  ;
*       10 RMEPBIPS CHAR(16) BDY(DWORD), /* IPS DELETE NOTIFY RTNE   */
*       10 RMEPBDEL CHAR(16) BDY(DWORD), /* OUCB DELETE ROUTINE      */
*       10 RMEPBIL4 CHAR(16) BDY(DWORD), /* IMCB DELETE ROUTINE      */
*       10 RMEPBUXB CHAR(16) BDY(DWORD), /* OUXB DELETE ROUTINE      */
*       10 RMEPBHIT CHAR(16) BDY(DWORD), /* USER READY PROCES RTNE   */
*       10 RMEPBRPS CHAR(16) BDY(DWORD), /* USER STATE CHANGE RTNE   */
*       10 EPDTEND  CHAR(0) BDY(DWORD) /* END OF EPDT TABLE          */
*   EPDT9999
*   %EPDTLEN = 'LENGTH(EPDT)';      /* SYMBOLIC FOR LENGTH OF EPDT   */
./ ADD NAME=IRAEPNMP
*%/*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAEPNMP                                         */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER ENTRY POINT       */
* /*                      NAME MAPPING MACRO                         */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 07/30/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE IRAEPNMP MACRO DEFINES, IN MACHINE-READABLE    */
* /*         FORM, THE CHARACTERISTICS OF EACH INVOCABLE ROUTINE     */
* /*         WITHIN THE SYSTEM RESOURCES MANAGER COMPONENT.          */
* /*                                                                 */
* /*   NOTES - THE IRAEPNMP MACRO PROVIDES THE INFORMATION NEEDED    */
* /*         TO CONSTRUCT CALLING SEQUENCES, ENTRY CODE, AND EXIT    */
* /*         CODE FOR EACH INDIVIDUAL SYSTEM RESOURCES MANAGER       */
* /*         ROUTINE.  THUS, ANY ROUTINES ADDED TO THE SYSTEM        */
* /*         RESOURCES MANAGER COMPONENT SHOULD HAVE THEIR           */
* /*         CHARACTERISTICS ENTERED INTO THE IRAEPNMP MACRO.        */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS - SEE ASSEM/PLS MACRO   */
* /*         HEADER STATEMENTS AND ADJACENT GLOBAL DECLARATIONS.     */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
         MACRO
         IRAEPNMP  &EPN=,          ROUTINE (ENTRY POINT) IDENTIFIER    *
               &ERR=               ROUTINE RECOVRY POINT IDENTIFIER
         GBLC  &IRAEPAD            ROUTINE ENTRY POINT ADDRESS NAME
         GBLC  &IRAEPER            ROUTINE RECOVERY POINT ADDR NAME
         GBLC  &IRAEPFL            ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP02                                        @Z40BPCH
*                                                                    */
* /* *************************************************************** */
* /*                                                                 */
* /*   ROUTINES WHICH PERFORM ALGORITHMIC PROCESSING FOR THE SYSTEM  */
* /*   RESOURCES MANAGER.  THEY ARE INVOKED BY THE CNTRL ALGORITHM   */
* /*   ON THE BASIS OF REQUEST BITS IN THE RMCTALA-RMCTALR FLDS OF   */
* /*   THE SYSTEM RESOURCES MANAGER CONTROL TABLE.  THE IRAEPNMP     */
* /*   MACRO DEFINES THE BIT FLAG ASSOCIATED WITH EACH ROUTINE.      */
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPNMP02 AIF   ('&EPN' NE 'IL1').EPNMP04
&IRAEPFL SETC  '40000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP04 AIF   ('&EPN' NE 'CL1').EPNMP06
&IRAEPFL SETC  '20000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP06 AIF   ('&EPN' NE 'SQA').EPNMP08
&IRAEPFL SETC  '10000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP08 AIF   ('&EPN' NE 'CAN').EPNMP10
&IRAEPFL SETC  '08000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP10 AIF   ('&EPN' NE 'A05').EPNMP12
&IRAEPFL SETC  '04000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP12 AIF   ('&EPN' NE 'AP1').EPNMP14
&IRAEPFL SETC  '02000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP14 AIF   ('&EPN' NE 'PR1').EPNMP16
&IRAEPFL SETC  '01000000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP16 AIF   ('&EPN' NE 'EQ1').EPNMP18
&IRAEPFL SETC  '00800000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP18 AIF   ('&EPN' NE 'A09').EPNMP20
&IRAEPFL SETC  '00400000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP20 AIF   ('&EPN' NE 'A10').EPNMP22
&IRAEPFL SETC  '00200000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP22 AIF   ('&EPN' NE 'ASM').EPNMP24
&IRAEPFL SETC  '00100000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP24 AIF   ('&EPN' NE 'MS6').EPNMP26
&IRAEPFL SETC  '00080000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP26 AIF   ('&EPN' NE 'PR5').EPNMP28
&IRAEPFL SETC  '00040000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP28 AIF   ('&EPN' NE 'A14').EPNMP32                       @Z40BPCH
&IRAEPFL SETC  '00020000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP32 AIF   ('&EPN' NE 'MS2').EPNMP34
&IRAEPFL SETC  '00008000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP34 AIF   ('&EPN' NE 'RM1').EPNMP36                       @Z40BPCH
&IRAEPFL SETC  '00004000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP36 AIF   ('&EPN' NE 'RM2').EPNMP38                       @Z40BPCH
&IRAEPFL SETC  '00002000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP38 AIF   ('&EPN' NE 'WM2').EPNMP40
&IRAEPFL SETC  '00001000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP40 AIF   ('&EPN' NE 'CAP').EPNMP42
&IRAEPFL SETC  '00000800'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP42 AIF   ('&EPN' NE 'A21').EPNMP44
&IRAEPFL SETC  '00000400'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP44 AIF   ('&EPN' NE 'A22').EPNMP50                       @Z40BPCH
&IRAEPFL SETC  '00000200'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
*                                                                    */
* /* *************************************************************** */
* /*                                                                 */
* /*   ROUTINES WHICH PERFORM ANALYSIS PROCESSING FOR THE SYSTEM     */
* /*   RESOURCES MANAGER.  THEY ARE INVOKED BY THE CTRL ALGORITHM    */
* /*   ON THE BASIS OF STATUS BITS IN THE RMCTALU FIELD OF THE       */
* /*   SYSTEM RESOURCES MANAGER CONTROL TABLE.  THE IRAEPNMP MACRO   */
* /*   DEFINES THE BIT FLAG ASSOCIATED WITH EACH ROUTINE.            */
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPNMP50 AIF   ('&EPN' NE 'IL3').EPNMP52
&IRAEPFL SETC  '00004000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP52 AIF   ('&EPN' NE 'CL3').EPNMP54
&IRAEPFL SETC  '00002000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP54 AIF   ('&EPN' NE 'WM3').EPNMP64
&IRAEPFL SETC  '00001000'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
*                                                                    */
* /* *************************************************************** */
* /*                                                                 */
* /*   ROUTINES WHICH PERFORM USER-LEVEL DEFERRED ACTION PROCESSING  */
* /*   FOR THE SYSTEM RESOURCES MANAGER.  THEY ARE INVOKED BY THE    */
* /*   CNTRL ALGORITHM ON THE BASIS OF REQUEST BITS IN THE OUCBACN   */
* /*   FIELD OF THE SYSTEM RESOURCES MANAGER USER CONTROL BLOCK.     */
* /*   THE IRAEPNMP MACRO DEFINES THE BIT FLAG ASSOCIATED WITH       */
* /*   EACH ROUTINE.                                                 */
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPNMP64 AIF   ('&EPN' NE 'DEL').EPNMP66
&IRAEPFL SETC  '80000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP66 AIF   ('&EPN' NE 'UXB').EPNMP68
&IRAEPFL SETC  '40000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP68 AIF   ('&EPN' NE 'IL4').EPNMP70
&IRAEPFL SETC  '20000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP70 AIF   ('&EPN' NE 'IPS').EPNMP72
&IRAEPFL SETC  '10000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP72 AIF   ('&EPN' NE 'D04').EPNMP74
&IRAEPFL SETC  '08000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP74 AIF   ('&EPN' NE 'D05').EPNMP76
&IRAEPFL SETC  '04000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP76 AIF   ('&EPN' NE 'D06').EPNMP78
&IRAEPFL SETC  '02000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
.EPNMP78 AIF   ('&EPN' NE 'HIT').EPNMP80
&IRAEPFL SETC  '01000001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP80 AIF   ('&EPN' NE 'RPS').EPNMP82
&IRAEPFL SETC  '00800001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP82 AIF   ('&EPN' NE 'WM5').EPNMP84
&IRAEPFL SETC  '00400001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP84 AIF   ('&EPN' NE 'D10').EPNMP88                       @Z40BPCH
&IRAEPFL SETC  '00200001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
*                                                                    */
* /* *************************************************************** */
* /*                                                                 */
* /*   ROUTINES WHICH PERFORM USER-LEVEL TIME-DEPENDENT ACTION       */
* /*   PROCESSING FOR THE SYSTEM RESOURCES MANAGER.  THEY ARE        */
* /*   INVOKED BY THE CTRL ALGORITHM ON THE BASIS OF REQUEST         */
* /*   BITS IN THE OUCBACN FIELD OF THE SYSTEM RESOURCES MNGR        */
* /*   USER CONTROL BLOCK.  THE IRAEPNMP MACRO DEFINES THE BIT       */
* /*   FLAG ASSOCIATED WITH EACH ROUTINE.                            */
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPNMP88 AIF   ('&EPN' NE 'CSO').EPNMP90
&IRAEPFL SETC  '00080001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP90 AIF   ('&EPN' NE 'CSI').EPNMP92
&IRAEPFL SETC  '00040001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP92 AIF   ('&EPN' NE 'CSR').EPNMP94
&IRAEPFL SETC  '00020001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMPOK
.EPNMP94 AIF   ('&EPN' NE 'D15').EPNMR02
&IRAEPFL SETC  '00010001'          ROUTINE INVOCATION FLAG MASK
         AGO   .EPNMP96
*                                                                    */
* /* *************************************************************** */
* /*                                                                 */
* /*   ROUTINES WHICH PERFORM THE ROUTING OF CONTROL WITHIN THE      */
* /*   SYSTEM RESOURCES MANAGER.  THEY ARE ENTERED BY A DIRECT       */
* /*   BRANCH, AND PERFORM THEIR OWN REGISTER SETUP FUNCTIONS.       */
* /*   THE IRARMEP MACRO DEFINES THE NAME OF THE RETRY POINT TO      */
* /*   BE GIVEN CONTROL IF THAT ROUTINE EXPERIENCES AN ERROR.        */
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPNMR02 ANOP
&IRAEPFL SETC  '00000000'          INVOCATION FLAG NOT USED
         AIF   ('&EPN' EQ 'EVT').EPNMPOK
         AIF   ('&EPN' EQ 'CTL').EPNMPOK
         AIF   ('&EPN' EQ 'CAS').EPNMPOK
         AGO   .EPNMR04
.*             INVALID REQUEST DEFAULT NAMING CONVENTIONS
.EPNMR04 ANOP
&IRAEPAD SETC  'IRARMNOP'          DUMMY INDICATES EPN NOT FOUND
&IRAEPER SETC  'IRARMNOP'          DUMMY INDICATES EPN NOT FOUND
         AGO   .EPNMP96
.*             SUBROUTINE ENTRY POINT NAMING CONVENTIONS
.EPNMPOK ANOP
&IRAEPAD SETC  'IRARM&EPN'         ROUTINE ENTRY POINT ADDRESS NAME
&IRAEPER SETC  '&IRAEPAD'          ROUTINE RECOVERY POINT ADDR NAME
         AIF   ('&ERR' EQ '').EPNMP96
&IRAEPER SETC  'IRARM&ERR'         ROUTINE RECOVERY POINT ADDR NAME
.EPNMP96 ANOP
         MEND
*                                                                    */
*IRAEPNMP: MACRO KEYS(EPN);         /* GIVEN ENTRY POINT NAME IDENT  */
*    DCL IRAEPNML CHAR EXT;         /* ROUTINE ENTRY POINT LOCATOR   */
*    DCL IRAEPNMS CHAR EXT;         /* ROUTINE SAVE AREA IDENTIFIER  */
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES TO WHICH A REQUEST FOR SYSTEM RESOURCES MANAGER   */
* /*   ALGORITHMIC PROCESSING IS DIRECTED.  THEY ARE LINKED-TO       */
* /*   DIRECTLY BY THE INVOKING ROUTINE.  THE INVOCATION OF THE      */
* /*   REQUESTED ALGORITHM IS DEFERRED, TO BE SUBSEQUENTLY ACTED     */
* /*   UPON BY THE SYSTEM RESOURCES MANAGER CONTROL ALGORITHM.       */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE IN THE RMSB TABLE.          */
* /*         - ROUTINES USE THE 1ST LEVEL CPU SAVE AREA TO STORE     */
* /*           THE REQUESTOR'S REGISTERS.                            */
* /*         - SAVE AREA USAGE IS SERIALIZED BY DISABLEMENT, OR      */
* /*           BY THE NON-PREEMPTABILITY OF AN SRB.                  */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'IRARMCPU' ;        /* FLAG CPU-LEVEL REQUEST RUTNE  */
*    IRAEPNMS = 'IRAEPL01' ;        /* RTNE USES LEVEL 1 REG SAVEAR  */
*    IF EPN(1) = 'CRL' THEN         /* RECEIVE SYS ALGRTHM REQUEST   */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES TO WHICH A REQUEST FOR SERIALIZED USER-LEVEL      */
* /*   SYSTEM RESOURCES MANAGER PROCESSING IS DIRECTED.  THEY ARE    */
* /*   LINKED-TO DIRECTLY BY THE INVOKING ROUTINE.  DEPENDING ON     */
* /*   SYSTEM RESOURCES MANAGER STATUS, THE REQUESTED PROCESSING     */
* /*   ACTION MAY BE INVOKED IMMEDIATELY, OR THE REQUEST FOR SUCH    */
* /*   PROCESSING ACTION MAY BE DEFERRED UNTIL ANY CONCURRENT        */
* /*   PROCESSING HAS BEEN COMPLETED.                                */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE IN THE RMSB TABLE.          */
* /*         - ROUTINES USE THE 2ND LEVEL CPU SAVE AREA TO STORE     */
* /*           THE REQUESTOR'S REGISTERS.                            */
* /*         - SAVE AREA USAGE IS SERIALIZED BY DISABLEMENT, OR      */
* /*           BY THE NON-PREEMPTABILITY OF AN SRB.                  */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNMS = 'IRAEPL02' ;        /* RTNE USES LEVEL 2 REG SAVEAR  */
*    IF EPN(1) = 'CRN' THEN         /* RECEIVE USER ACTION REQUEST   */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES WHICH PERFORM INTERNAL SERVICES FOR OTHER SYSTEM  */
* /*   RESOURCES MANAGER ROUTINES WHICH DO NOT HOLD THE SRM LOCK.    */
* /*   THEY ARE LINKED-TO DIRECTLY BY THE INVOKING ROUTINE.          */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE IN THE RMSB TABLE.          */
* /*         - ROUTINES USE THE 3RD LEVEL CPU SAVE AREA TO STORE     */
* /*           THE INVOKER'S REGISTERS.                              */
* /*         - SAVE AREA USAGE IS SERIALIZED BY DISABLEMENT, OR      */
* /*           BY THE NON-PREEMPTABILITY OF AN SRB.                  */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNMS = 'IRAEPL03' ;        /* RTNE USES LEVEL 3 REG SAVEAR  */
*    IF EPN(1) = 'I10' THEN         /* ABEND THE SRM INVOCATION      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CRY' THEN         /* RECEIVE USER ANALYZ REQUEST   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WM1' THEN         /* CALCULAT USER SERVICE AMT     */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WM4' THEN         /* CALCULAT USER NORMALIZD LVL   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WM5' THEN         /* UPDATE PERF GROUP PERIOD      */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES WHICH PERFORM EXTERNAL SERVICES FOR THE SYSTEM    */
* /*   RESOURCES MANAGER.  THEY ARE LINKED-TO DIRECTLY AS PART OF    */
* /*   THE INVOCATION SEQUENCE FOR NON-RESIDENT SYSTEM RESOURCES     */
* /*   MANAGER SERVICE ROUTINES.                                     */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE DYNAMICALLY INSERTED INTO   */
* /*           THE RMSB TABLE.                                       */
* /*         - ROUTINES USE THE 5TH LEVEL SRM SAVE AREA TO STORE     */
* /*           THE LINKING ROUTINE REGISTERS.                        */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE SRM LOCK.        */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'RMSB'EPN(1) ;    /* REQUESTED SUBROUTINE POINTER  */
*    IRAEPNMS = 'IRAEPL05' ;        /* RTNE USES LEVEL 5 REG SAVEAR  */
*    IF EPN(1) = 'SET' THEN         /* PROCESS NEWIPS SYSEVENT RTN   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'NOP' THEN         /* RETURN TO INVOKING ROUTINE    */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES WHICH PERFORM EXTERNAL SERVICES FOR OTHER SYSTEM  */
* /*   RESOURCES MANAGER ROUTINES.  THEY ARE LINKED-TO DIRECTLY BY   */
* /*   THE INVOKING ROUTINE.                                         */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE IN THE RMSB TABLE.          */
* /*         - ROUTINES USE THE 4TH LEVEL SRM SAVE AREA TO STORE     */
* /*           THE INVOKER'S REGISTERS.                              */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE SRM LOCK.        */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNMS = 'IRAEPL04' ;        /* RTNE USES LEVEL 4 REG SAVEAR  */
*    IF EPN(1) = 'I02' THEN         /* INVOKE ASCBCHAP SERVICE       */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I03' THEN         /* INVOKE REAL FRAME STEAL       */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I04' THEN         /* INVOKE STORAGE GET/FREE       */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I05' THEN         /* INVOKE TIME INTERVL SET       */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I06' THEN         /* INVOKE QUIESCE FOR SWAPOUT    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I07' THEN         /* INVOKE SCHEDULE OF SWAP-IN    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I08' THEN         /* INVOKE SCHEDULE OF SRM SRB    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I09' THEN         /* INVOKE RECORD TO OPERATOR     */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WR4' THEN         /* CALCULAT ACTIVITY MEASRMNT    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WR6' THEN         /* RECALCULAT ACTIVITY RATE      */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES WHICH PERFORM INTERNAL SERVICES FOR OTHER SYSTEM  */
* /*   RESOURCES MANAGER ROUTINES HOLDING THE SRM LOCK.  THEY ARE    */
* /*   LINKED-TO DIRECTLY BY THE INVOKING ROUTINE.                   */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE IN THE RMSB TABLE.          */
* /*         - ROUTINES USE THE 3RD LEVEL SRM SAVE AREA TO STORE     */
* /*           THE INVOKER'S REGISTERS.                              */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE SRM LOCK.        */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNMS = 'IRAEPL03' ;        /* RTNE USES LEVEL 3 REG SAVEAR  */
*    IF EPN(1) = 'WMK' THEN         /* RESUME PREV USER TRANSACTN    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WMO' THEN         /* STOP CURRNT USER TRANSACTN    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WMQ' THEN         /* PROCESS QUIESCE CMPLT EVENT   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WMY' THEN         /* PROCESS SYSTEM TIME ADJUST    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'AP0' THEN         /* COMPUTE USER DSPCH PRIORITY   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CL0' THEN         /* ADJ CPU UTIL WHEN SWAP USER   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'IL0' THEN         /* COMPUTE USER I/O PROFILE      */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SUBROUTINES WHICH PERFORM WORKLOAD MANAGER TRANSACTION        */
* /*   RELATED ACTIONS FOR OTHER SYSTEM RESOURCES MNGR ROUTNS        */
* /*   HOLDING THE SRM LOCK.  THEY ARE LINKED-TO DIRECTLY BY         */
* /*   THE INVOKING ROUTINE.                                         */
* /*                                                                 */
* /*         - ENTRY POINT ADDRESSES ARE IN THE RMSB TABLE.          */
* /*         - ROUTINES USE THE 1ST LEVEL SRM SAVE AREA TO STORE     */
* /*           THE INVOKER'S REGISTERS.                              */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE SRM LOCK.        */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNMS = 'IRAEPL01' ;        /* RTNE USES LEVEL 1 REG SAVEAR  */
*    IF EPN(1) = 'WMN' THEN         /* START A NEW USER TRANSACTN    */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WMR' THEN         /* PROCESS RESTORE CMPLT EVENT   */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SYSTEM RESOURCES MANAGER SYSTEM-LEVEL ALGORITHMIC PROCESSING  */
* /*   ROUTINES.  THEY ARE EXECUTED AS THE RESULT OF BEING INDIVI-   */
* /*   DUALLY REQUESTED AND/OR BEING SCHEDULED ON A PERIODIC BASIS,  */
* /*   BUT ARE ALWAYS INVOKED BY A CONTROL ROUTINE AS OPPOSED TO     */
* /*   DIRECTLY BY THE REQUESTOR.                                    */
* /*                                                                 */
* /*         - ENTRY POINT BLOCKS ARE IN THE EPAT TABLE.             */
* /*         - ROUTINES USE THE 1ST LEVEL LOCKED SAVE AREA TO STORE  */
* /*           THE INVOKING (CONTROL) ROUTINE REGISTERS.             */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE CONTROL ROUTINE  */
* /*           DOING THE INVOKING.                                   */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'RMSBCRL'  ;        /* RTNE TO RECEIVE ALGRTH REQST  */
*    IRAEPNMS = 'IRAEPL01' ;        /* RTNE USES LEVEL 1 REG SAVEAR  */
*    IF EPN(1) = 'MS2' THEN         /* MSO ANALYSIS ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'MS6' THEN         /* MSO WAIT CHK ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'EQ1' THEN         /* ENQ MONITORG ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'IL1' THEN         /* IOL UTIL MON ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'RM1' THEN         /* RES MONITORING RTNE   @Z40BPCH*/
*      GOTO EPNMPOK;
*    IF EPN(1) = 'RM2' THEN         /* RES MONITOR ADJ RTNE  @Z40BPCH*/
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CL1' THEN         /* CPU ANALYSIS ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'SQA' THEN         /* SQA MSG PRNT ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WM2' THEN         /* WLM ANALYSIS ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'ASM' THEN         /* ASM SHRT MON ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CAN' THEN         /* CTL FUL ANAL ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CAP' THEN         /* CTL PRT ANAL ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'AP1' THEN         /* APG ANALYSIS ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'PR1' THEN         /* PRA ANALYSIS ALGORITHM        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'PR5' THEN         /* PRA FORC STL ALGORITHM        */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SYSTEM RESOURCES MANAGER USER-LEVEL SERIALIZED PROCESSING     */
* /*   ACTION ROUTINES.  THEY ARE EXECUTED AS THE RESULT OF AN       */
* /*   INDIVIDUAL REQUEST, BUT ARE ALWAYS INVOKED VIA A CONTROL      */
* /*   ROUTINE, AS OPPOSED TO DIRECTLY BY THE REQUESTOR.             */
* /*                                                                 */
* /*         - ENTRY POINT BLOCKS ARE IN THE EPDT TABLE.             */
* /*         - ROUTINES USE THE 2ND LEVEL SRM SAVE AREA TO STORE     */
* /*           THE INVOKING (CONTROL) ROUTINE REGISTERS.             */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE CONTROL ROUTINE  */
* /*           DOING THE INVOKING.                                   */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'RMSBCRN'  ;        /* RTNE TO RECEIVE ACTION REQST  */
*    IRAEPNMS = 'IRAEPL02' ;        /* RTNE USES LEVEL 2 REG SAVEAR  */
*    IF EPN(1) = 'DEL' THEN         /* OUCB DELETE ACTION RUTNE      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'UXB' THEN         /* OUXB DELETE ACTION RUTNE      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'IL4' THEN         /* IMCB DELETE ACTION RUTNE      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'IPS' THEN         /* IPS DELETE NOTIFY ACTION      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'HIT' THEN         /* USER READY PROCES ACTION      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'RPS' THEN         /* USER STATE CHANGE ACTION      */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SYSTEM RESOURCES MANAGER TIME-DEPENDENT ACTION SUBROUTINES.   */
* /*   THEY ARE EXECUTED AS A RESULT OF HAVING BEEN SPECIFIED FOR    */
* /*   A PARTICULAR TIME, BUT ARE ALWAYS INVOKED BY A CONTROL RTNE   */
* /*   AS OPPOSED TO DIRECTLY BY THE REQUESTOR.                      */
* /*                                                                 */
* /*         - ENTRY POINT BLOCKS ARE IN THE EPST TABLE.             */
* /*         - ROUTINES USE THE 3RD LEVEL SRM SAVE AREA TO STORE     */
* /*           THE INVOKING (CONTROL) ROUTINE REGISTERS.             */
* /*         - SAVE AREA USAGE IS SERIALIZED BY THE CONTROL ROUTINE  */
* /*           DOING THE INVOKING.                                   */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'RMSBCRY'  ;        /* RTNE TO RECEIVE ANALYZ REQST  */
*    IRAEPNMS = 'IRAEPL03' ;        /* RTNE USES LEVEL 3 REG SAVEAR  */
*    IF EPN(1) = 'CSO' THEN         /* PROCESS USER SWAPOUT DEMAND   */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CSI' THEN         /* PROCESS USER SWAP-IN DEMAND   */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SYSTEM RESOURCES MANAGER ANALYSIS SUBROUTINES.  THEY ARE      */
* /*   SELECTIVELY INVOKED BY THE CONTROL ALGORITHM AS PART OF       */
* /*   PERIODIC ANALYSIS PROCESSING.                                 */
* /*                                                                 */
* /*         - ENTRY POINT BLOCKS ARE IN THE EPST TABLE.             */
* /*         - ROUTINES USE THE 3RD LEVEL SRM SAVE AREA TO STORE     */
* /*           THE INVOKING (CONTROL) ROUTINE REGISTERS.             */
* /*         - SAVE AREA USAGE IS SERIALIZED BY DISABLEMENT, OR      */
* /*           BY THE NON-PREEMPTABILITY OF AN SRB.                  */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'EPST'EPN(1) ;    /* REQUESTED SUBROUTINE POINTER  */
*    IF EPN(1) = 'IL3' THEN         /* USER I/O LOD EVAL ACTION      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CL3' THEN         /* USER CPU LOD EVAL ACTION      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'WM3' THEN         /* USER WORKLOD EVAL ACTION      */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   SYSTEM RESOURCES MANAGER MAJOR CONTROL ROUTINES.  THEY ARE    */
* /*   EXPLICITLY LINKED-TO BY SUPERVISOR COMPONENTS/MODULES.        */
* /*                                                                 */
* /*         - ENTRY POINT BLOCKS ARE IN THE RMEX TABLE.             */
* /*         - ROUTINES DO NOT SAVE REGISTERS OF INVOKER, OR ELSE    */
* /*           USE SAVE AREA PROVIDED BY INVOKER.                    */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'RMEX'EPN(1) ;    /* REQUESTED CTL ROUTNE POINTER  */
*    IRAEPNMS = '';                 /* RTNE USES UNDEFIN REG SAVEAR  */
*    IF EPN(1) = 'EVT' THEN         /* PROCESS INPUT SYSEVENT        */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'I01' THEN         /* EXIT FROM SRM PROCESSING      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CTL' THEN         /* ROUTE CONTROL WITHIN SRM      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CET' THEN         /* TIMEREXP SRM CNTRL ENTRY      */
*      GOTO EPNMPOK;
*    IF EPN(1) = 'CAS' THEN         /* EXIT FROM FULL ANALYSIS       */
*      GOTO EPNMPOK;
* /* *************************************************************** */
* /*                                                                 */
* /*   THE REQUESTED ENTRY POINT NAME HAS NOT BEEN FOUND.  PASS      */
* /*   DUMMY CHARACTERISTICS BACK TO THE IRAEPNMP MACRO INVOKER.     */
* /*                                                                 */
* /* *************************************************************** */
*    IRAEPNML = 'IRARMNOP' ;        /* DMMY INDICATES EPN NOT FOUND  */
*    IRAEPNMS = '';                 /* DMMY DOES NOT USE REG SAVEAR  */
*EPNMPOK:  ;                        /* IRAEPNMP NORMAL EXIT POINT    */
*%   END;
./ ADD NAME=IRAEPST
*        %GOTO EPSTPLS1; /*
         MACRO
         IRAEPST   &DSECT=YES
         GBLC  &IRAEPPV            PREV RMEP BLOCK ADDRESS NAME
         GBLB  &IRAEPCM            IRARMEP COMMENTARY PRINT CONTROL
&IRAEPPV SETC  '00000000'          INIT TO NO PREVIOUS CHAINED RMEP
&IRAEPCM SETB  1                   BYPASS IRARMEP HEADER COMMENTARY
.*                                                                   */
*%EPSTPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAEPST                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER SCANNED           */
* /*                      ACTION ENTRY POINT DESCRIPTOR TABLE.       */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 07/30/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE EPST CONTAINS THE ENTRY POINT DESCRIPTORS OF   */
* /*         ALL SYSTEM RESOURCES MANAGER ROUTINES TO WHICH CONTROL  */
* /*         MAY BE ROUTED BY CONTROL ALGORITHM ANALYSIS PROCESSING. */
* /*         REQUESTS FOR SUCH ROUTINES ARE GENERATED INTERNALLY BY  */
* /*         THE CONTROL ALGORITHM.                                  */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE EPST IS ADDRESSED AS BEING AT A KNOWN  */
* /*         DISPLACEMENT FROM THE SYSTEM RESOURCES MANAGER CONTROL  */
* /*         TABLE, I.E., USING THE RMCTPTR REGISTER.  THE IRACNSMP  */
* /*         INCLUDE LIST SPECIFIES THE SYMBOLIC DISPLACMENT OF THE  */
* /*         EPST FROM THE RMCT.  THE EPST TABLE IS SCANNED VIA THE  */
* /*         RMEP CHAIN POINTER IN THE -RMCTEPST- FIELD.             */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO EPSTPLS2; /*
         AGO   .EPSTAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON EPST GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %EPSTLEVL='USERLEVL' IF THE EPST MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           EPST BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %EPST9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANSALONE STRUCTURE DCL EPSTPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.EPSTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').EPSTAL2
EPST     DSECT
         AGO   .EPSTAL3
.EPSTAL2 ANOP
         DS    0D
EPST     EQU   *
.EPSTAL3 ANOP
         SPACE 1
         IRARMEP   DSECT=NO,EPN=WM3,NXT=000
         IRARMEP   DSECT=NO,EPN=IL3,NXT=000
         IRARMEP   DSECT=NO,EPN=CL3
IRAEPPA  EQU   &IRAEPPV -          BEGIN PART EVAL SCAN
&IRAEPPV SETC  '00000000'          RESET CHAIN TO NO PREVIOUS RMEP
         IRARMEP   DSECT=NO,EPN=CSO
         IRARMEP   DSECT=NO,EPN=CSI
EPSTEND  DS    0D -                END OF EPST TABLE
EPSTLEN  EQU   EPSTEND-EPST -      LENGTH OF EPST TABLE
EPSTSCN  EQU   &IRAEPPV -          BEGIN EPST TABLE SCAN
         MEND
*                                                                    */
*%EPSTPLS2:  ;
*        %IF EPST9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %EPST9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF EPSTLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO EPSTPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 EPST BASED(EPSTPTR) BDY(DWORD),
*            %GOTO EPSTPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%EPSTPLS3:  EPSTDUM = EPSTLEVL' EPST'; /* PICK UP GIVEN LEVEL     */
*     EPSTDUM BDY(DWORD),
*%EPSTPLS4:  ;
*       10 RMEPBWM3 CHAR(16) BDY(DWORD), /* USER WORKLOD EVAL RTNE   */
*          12 EPSTWM3 PTR(31),           /* ROUTINE ADDRESS  @Z40BPCH*/
*       10 RMEPBIL3 CHAR(16) BDY(DWORD), /* USER I/O LOD EVAL RTNE   */
*          12 EPSTIL3 PTR(31),           /* ROUTINE ADDRESS  @Z40BPCH*/
*       10 RMEPBCL3 CHAR(16) BDY(DWORD), /* USER CPU LOD EVAL RTNE   */
*          12 EPSTCL3 PTR(31),           /* ROUTINE ADDRESS  @Z40BPCH*/
*       10 RMEPBCSO CHAR(16) BDY(DWORD), /* USER SWAPOUT REQST RTN   */
*          12 EPSTCSO PTR(31),           /* ROUTINE ADDRESS  @Z40BPCH*/
*       10 RMEPBCSI CHAR(16) BDY(DWORD), /* USER SWAP-IN REQST RTN   */
*          12 EPSTCSI PTR(31),           /* ROUTINE ADDRESS  @Z40BPCH*/
*       10 EPSTEND  CHAR(0) BDY(DWORD) /* END OF EPST TABLE          */
*   EPST9999
*   %EPSTLEN = 'LENGTH(EPST)';      /* SYMBOLIC FOR LENGTH OF EPST   */
./ ADD NAME=IRAICSE
*        %GOTO ICSEPLS1; /*
         MACRO
         IRAICSE   &DSECT=YES,&PF=ICSE
         IEZBITS                                                     */
*%ICSEPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD09                                         */
* /* MACSTAT Z-4 78156/G742PSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAICSE                                          */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCE MANAGER TRANSACTION NAME,  */
* /*                      USERID OR TRANSACTION CLASS ENTRY IN THE   */
* /*                      INSTALLATION CONTROL SPECIFICATION TABLE   */
* /*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,   @G81LPJC*/
* /*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,       */
* /*               REFER TO COPYRIGHT INSTRUCTIONS FORM              */
* /*               NUMBER G120-2083.                                 */
* /*   STATUS -   OS/VS2 JBB1126                             @G81LPJC*/
* /*   FUNCTION - THE ICSE ELEMENT CONTAINS INFORMATION RELATED TO A */
* /*              TRANSACTION NAME, USERID OR TRANSACTION CLASS      */
* /*              SPECIFICATION IN THE INSTALLATION CONTROL          */
* /*              SPECIFICATION.                                     */
* /* *************************************************************** */
*         %GOTO ICSEPLS2; /*
           AGO  .ICSEAL1                                             */
* /* *************************************************************** */
* /*    INVOCATION PARAMETERS AND/OR KEYWORDS =                      */
* /*      BAL - PF=XXXX SPECIFIES THAT THE LABELS ARE TO START WITH  */
* /*            XXXX INSTEAD OF ICSE. THE DEFAULT IS ICSE            */
* /*      PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL ICSEPTR PTR.  */
* /*            TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE     */
* /*              SET %ICSELEVL TO DESIRED STRUCTURE LEVEL.          */
* /*            TO PREVENT STRUCTURE FROM BEING CLOSED,              */
* /*              SET %ICSE9999=','.                                 */
* /*                                                                 */
* /*      CHANGE ACTIVITY - @G743PGS,@G81LPJC                        */
* /*                                                                 */
* /*      A000000-999999                                     @G742PSS*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.ICSEAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').ICSEAL2
&PF      DSECT
         AGO   .ICSEAL3
.ICSEAL2 ANOP
         DS    0D
&PF      EQU   *
.ICSEAL3 ANOP
         SPACE 1
&PF.NAME DC    CL8'        '       TRANSACTION NAME, USERID OR
*                                  TRANSACTION CLASS
&PF.LNG  DC    H'20'               LENGTH OF ENTRY             @G743PGS
&PF.NMLG DC    HL1'8'              LENGTH OF TRX NAME,CLASS OR USERID
&PF.FLAG DC    B'00000000'         STATUS FLAGS
&PF.CPG  EQU   BIT0                CONTROL PGN SPECIFIED (PGN) @G743PGS
&PF.RPG  EQU   BIT1                REPORT PGN SPECIFIED (RPGN) @G743PGS
&PF.OPG  EQU   BIT2                OPTIONAL PGNS SPECD (OPGN)  @G743PGS
&PF.POS  EQU   BIT3                POSITIONAL SPECIFICATION
&PF.LAST EQU   BIT4                LAST ELEMENT OF THIS TYPE
&PF.RSV2 DC    FL1'0'              RESERVED                    @G743PGS
&PF.OFFS DC    FL1'0'              OFFSET POSITION FOR POSITIONALS
&PF.RPGN DC    H'0'                REPORT PERFORMANCE GROUP    @G743PGS
&PF.PGN  DC    H'0'                CONTROL PERFORMANCE GROUP
&PF.OPGN DC    H'0'                FIRST OPTIONAL CONTROL PGN  @G743PGS
&PF.END  DS    0F                  END OF ICSE
&PF.LEN  EQU   &PF.END-&PF         LENGTH OF ICSE
         MEND
*                                                                    */
*%ICSEPLS2:  ;
*        %IF ICSE9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %ICSE9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF ICSELEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO ICSEPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 ICSE BASED(ICSEPTR) BDY(WORD),
*            %GOTO ICSEPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%ICSEPLS3:  ICSEDUM = ICSELEVL' ICSE';  /* PICK UP GIVEN LEVEL    */
*     ICSEDUM BDY(WORD),
*%ICSEPLS4:  ;
*       10 ICSENAME CHAR(8),        /* TRXNAME, USERID OR TRX CLASS  */
*       10 ICSELNG  FIXED(15),      /* LENGTH OF ENTRY
*                                      (ROUNDED UP TO FULLWORD)      */
*       10 ICSENMLG PTR(8),         /* LENGTH OF TRXNAME USERID CLASS*/
*       10 ICSEFLAG BIT(8),         /* STATUS FLAGS                  */
*       14 ICSECPG  BIT(1),         /* CONTROL PGN SPECIFIED @G743PGS*/
*       14 ICSERPG  BIT(1),         /* REPORT PGN SPECIFIED  @G743PGS*/
*       14 ICSEOPG  BIT(1),         /* OPTIONAL PGNS SPECD   @G743PGS*/
*       14 ICSEPOS  BIT(1),         /* POSITIONAL SPECIFICATION      */
*       14 ICSELAST BIT(1),         /* LAST ENTRY OF THIS TYPE       */
*       14 ICSERSV1 BIT(3),         /* RESERVED                      */
*       10 ICSERSV2 FIXED(8),       /* RESERVED              @G743PGS*/
*       10 ICSEOFFS FIXED(8),       /* POSITION OFFSET               */
*       10 ICSERPGN FIXED(15),      /* REPORT PERF  GROUP    @G743PGS*/
*       10 ICSEPGN  FIXED(15),      /* CONTROL PERF GROUP            */
*       10 ICSEOPGN FIXED(15),      /* FIRST OPTIONAL PGN    @G743PGS*/
*       10 ICSEEND  CHAR(0) BDY(WORD)   /* END OF ICSE               */
*   ICSE9999
*   %ICSELEN = 'LENGTH(ICSE)';      /* SYMBOLIC FOR LENGTH OF ICSE   */
*        %IF ICSE9999 ^= ';'        /* DOES STRUCTURE CONTINUE       */
*            %THEN %GOTO ICSEPLS5;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*%ICSEPLS5:   ;
*   ICSEXPGN (*) PTR(15) DEFINED(ICSEPGN)  /* AN ARRAY CONTAINING
*              THE PGN FOLLOWED BY ANY OPGNS.  IF OPGNS WERE
*              SPECIFIED, THE LAST ELEMENT IS ZEROS.         @G743PGS*/
*   ICSE9999
./ ADD NAME=IRAICSM
*        %GOTO ICSMPLS1; /*
         MACRO
         IRAICSM   &DSECT=YES,&PF=ICSM
         IEZBITS                                                     */
*%ICSMPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD09                                         */
* /* MACSTAT Z-4 78156/G742PCH                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAICSM                                          */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCE MANAGER INSTALLATION       */
* /*                      CONTROL SPECIFICATION SYMBOL TABLE ENTRY   */
* /*                      MAPPING MACRO                              */
* /*                                                                 */
* /*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,   @G81LPJC*/
* /*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,       */
* /*               REFER TO COPYRIGHT INSTRUCTIONS FORM              */
* /*               NUMBER G120-2083.                                 */
* /*   STATUS -   OS/VS2 JBB1126                             @G81LPJC*/
* /*   FUNCTION - THE ICSM ELEMENT CONTAINS INFORMATION RELATED TO   */
* /*              EACH UNIQUE PERFORMANCE GROUP SPECIFIED IN THE     */
* /*              INSTALLATION CONTROL SPECIFICATION PARMLIB         */
* /*              MEMBER. THE INFORMATION IS THE SUBSYSTEM NAME,     */
* /*              TRANSACTION NAME, USERID OR TRANSACTION CLASS.     */
* /*              IF THE DATA IS UNAVAILABLE THE FIELD CONTAINS      */
* /*              ZEROS. IF MULTIPLE SYMBOLIC NAMES ARE              */
* /*              ASSOCIATED WITH THE SAME PERFORMANCE GROUP         */
* /*              THE FIELD CONTAINS BLANKS.                         */
* /*                                                                 */
* /*              AN ARRAY IS USED TO INDEX INTO THIS TABLE          */
* /*              THE FIRST INDEX IS FOR PERFORMANCE GROUP 1.        */
* /*              THE LAST INDEX IS FOR THE HIGHEST PERFORMANCE      */
* /*              GROUP NUMBER SPECIFIED IN THE INSTALLATION CONTROL */
* /*              SPECIFICATION. IF A PERFORMANCE GROUP IS NOT */
* /*              SPECIFIED, THE INDEX VALUE IS ZERO.                */
* /* *************************************************************** */
*         %GOTO ICSMPLS2; /*
           AGO  .ICSMAL1                                             */
* /* *************************************************************** */
* /*    INVOCATION PARAMETERS AND/OR KEYWORDS =                      */
* /*      BAL - PF=XXXX SPECIFIES THAT THE LABELS ARE TO START WITH  */
* /*            XXXX INSTEAD OF ICSM. THE DEFAULT IS ICSM            */
* /*      PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL ICSMPTR PTR.  */
* /*            TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE     */
* /*              SET %ICSMLEVL TO DESIRED STRUCTURE LEVEL.          */
* /*            TO PREVENT STRUCTURE FROM BEING CLOSED,              */
* /*              SET %ICSM9999=','.                                 */
* /*                                                                 */
* /*      CHANGE ACTIVITY = @G81LPJC                                 */
* /*                                                                 */
* /*      A000000-999999                                     @G742PCH*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.ICSMAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').ICSMAL2
&PF      DSECT
         AGO   .ICSMAL3
.ICSMAL2 ANOP
         DS    0D
&PF      EQU   *
.ICSMAL3 ANOP
         SPACE 1
&PF.SUBN DC    CL4'    '           SUBSYSTEM NAME
*
&PF.TRXN DC    CL10'          '    TRANSACTION NAME
*
&PF.USRD DC    CL10'          '    USERID
*
&PF.CLS  DC    CL10'          '    TRANSACTION CLASS
*
&PF.END  DS    0F                  END OF ICSM
&PF.LEN  EQU   &PF.END-&PF         LENGTH OF ICSM
         MEND
*                                                                    */
*%ICSMPLS2:  ;
*        %IF ICSM9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %ICSM9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF ICSMLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO ICSMPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 ICSM BASED(ICSMPTR) BDY(WORD),
*            %GOTO ICSMPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%ICSMPLS3:  ICSMDUM = ICSMLEVL' ICSM';  /* PICK UP GIVEN LEVEL    */
*     ICSMDUM BDY(WORD),
*%ICSMPLS4:  ;
*       10 ICSMSUBN CHAR(4),        /* SUBSYSTEM NAME                */
*       10 ICSMTRXN CHAR(10),       /* TRANSACTION NAME              */
*       10 ICSMUSRD CHAR(10),       /* USERID                        */
*       10 ICSMCLS  CHAR(10),       /* TRANSACTION CLASS             */
*       10 ICSMEND  CHAR(0)         /* END OF ICSM                   */
*   ICSM9999
*   %ICSMLEN = 'LENGTH(ICSM)';      /* SYMBOLIC FOR LENGTH OF ICSM   */
*        %IF ICSM9999 ^= ';'        /* DOES STRUCTURE CONTINUE       */
*            %THEN %GOTO ICSMPLS5;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*%ICSMPLS5:   ;
*   ICSMNAME (*) CHAR(10) DEFINED(ICSMTRXN),/*  AN ARRAY MAPPING
*              THE NAMES IN THE SYMBOL TABLE ENTRYS.                 */
*   ICSMNDX (*) FIXED(16) BASED(ICSMXPTR) /*  AN ARRAY CONTAINING
*              OFFSETS INTO THE SYMBOL TABLE MAPPINGS.               */
*   ICSM9999
./ ADD NAME=IRAICSP
*        %GOTO ICSPLS1; /*
         MACRO
         IRAICSP   &DSECT=YES
         IEZBITS                                                     */
*%ICSPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD09                                         */
* /* MACSTAT Z-4 78156/G742PSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAICSP                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - THE INSTALLATION CONTROL SPECIFICATION     */
* /*                      USED TO SCAN THE PARAMETER LIST            */
* /*                                                                 */
* /*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,   @G81LPJC*/
* /*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,       */
* /*                                                                 */
* /*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER       */
* /*               G120-2083.                                        */
* /*                                                                 */
* /*   STATUS - OS/VS2 JBB1126                               @G81LPJC*/
* /*                                                                 */
* /*   FUNCTION - THE IRAICSP  MAPPING IDENTIFIES THE PARAMETERS     */
* /*         PASSED BY THE INITIATOR FOR USE BY THE JOB SELECT       */
* /*         AND INIT ATTACH SYSEVENT ROUTINES. THE SAME MAPPING     */
* /*         IS USED TO IDENTIFY THE PARAMETERS PASSED TO THE        */
* /*         INSTALLATION CONTROL SPECIFICATION FORCE PERFORMANCE    */
* /*         GROUP ROUTINE.                                          */
* /* *************************************************************** */
*        %GOTO ICSPLS2; /*
         AGO   .ICSPAL1                                              */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @G743PGS,@G743PSS,@G744PGS,@G81LPJC         */
* /*                                                                 */
* /*   A000000-999999                                        @G742PSS*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.ICSPAL1 ANOP
         SPACE 1
         AIF ('&DSECT' EQ 'NO').ICSPAL2
ICSP     DSECT
         AGO .ICSPAL3
.ICSPAL2 ANOP
         DS    0D
ICSP     EQU   *
.ICSPAL3 ANOP
         SPACE 1
ICSPSUBN DS    CL8 -               SUBSYSTEM NAME IN EBCDIC FORMAT,
*                                  LEFT JUSTIFIED, PADDED WITH BLANKS
ICSPTRXN DS    CL8 -               TRANSACTION NAME IN EBCDIC FORMAT,
*                                  LEFT JUSTIFIED, PADDED WITH BLANKS
ICSPUSRD DS    CL8 -               USERID IN EBCDIC FORMAT,
*                                  LEFT JUSTIFIED, PADDED WITH BLANKS
ICSPCLS  DS    CL8 -               CLASS IN EBCDIC FORMAT,
*                                  LEFT JUSTIFIED, PADDED WITH BLANKS
ICSPPGN  DS    H   -               PERFORMANCE GROUP IN HEXADECIMAL,
*                                  RIGHT JUSTIFIED, PADDED WITH ZEROS
ICSPFLAG DS    1B                  STATUS FLAGS
ICSPCNTL EQU   BIT0 -              NEED CONTROL PGN ONLY       @G744PGS
ICSPRSV1 EQU   BIT1 -              RESERVED
ICSPRSV2 EQU   BIT2 -              RESERVED
ICSPRSV3 EQU   BIT3 -              RESERVED
ICSPRSV4 EQU   BIT4 -              RESERVED
ICSPAUTH EQU   BIT5 -              USER IS AUTHORIZED TO ISSUE OK AND
*                                  DONT SWAP
ICSPPVL  EQU   BIT6 -              USER IS PRIVILEGED
ICSPDPS  EQU   BIT7 -              DISPATCHING PRTY SPECIFIED ON JCL
ICSPDP   DS    HL1  -              DISPATCHING PRTY IN HEXADECIMAL
ICSPEND  DS    0F -                END OF ICSP
ICSPLNG  EQU   ICSPEND-ICSP        LENGTH OF ICSP
         MEND
*                                                                    */
*%ICSPLS2:  ;
*   DCL
*     1 ICSP     BASED(ICSPPTR) BDY(WORD),
*       10 ICSPSUBN CHAR(8),        /* SUBSYSTEM NAME                */
*       10 ICSPTRXN CHAR(8),        /* TRANSACTION NAME              */
*       10 ICSPUSRD CHAR(8),        /* USERID                        */
*       10 ICSPCLS  CHAR(8),        /* CLASS                         */
*       10 ICSPPGN FIXED(15),       /* PERFORMANCE GROUP             */
*       10 ICSPFLAG BIT(8),         /* STATUS FLAGS                  */
*         12 ICSPCNTL BIT(1),       /* NEED CONTROL PGN ONLY @G744PGS*/
*         12 ICSPRSV1 BIT(1),       /* RESERVED                      */
*         12 ICSPRSV2 BIT(1),       /* RESERVED                      */
*         12 ICSPRSV3 BIT(1),       /* RESERVED                      */
*         12 ICSPRSV4 BIT(1),       /* RESERVED                      */
*         12 ICSPAUTH BIT(1),       /* USER AUTHORIZED FOR OK AND DONT
*                                      SWAP SYSEVENTS                */
*         12 ICSPPVL  BIT(1),       /* USER IS PRIVILEGED            */
*         12 ICSPDPS  BIT(1),       /* DISPATCHING PRTY SPECIFIED    */
*       10 ICSPDP PTR(8),           /* DISPATCHING PRIORITY          */
*       10 ICSPEND  CHAR(0);        /* END OF ICSP                   */
*   %ICSPLEN = 'LENGTH(ICSP)';      /* SYMBOLIC FOR LENGTH OF ICSP   */
*   DCL ICSPNAME (3) CHAR(8) DEFINED(ICSPTRXN);
./ ADD NAME=IRAICSS
*        %GOTO ICSSPLS1; /*
         MACRO
         IRAICSS   &DSECT=YES,&PF=ICSS
         IEZBITS                                                     */
*%ICSSPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD09                                         */
* /* MACSTAT Z-4 78156/G742PSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAICSS                                          */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCE MANAGER SUBSYSTEM ENTRY    */
* /*                      OF THE INSTALLATION CONTROL SPECIFICATION  */
* /*                      TABLE                                      */
* /*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,   @G81LPJC*/
* /*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,       */
* /*               REFER TO COPYRIGHT INSTRUCTIONS FORM              */
* /*               NUMBER G120-2083.                                 */
* /*   STATUS -   OS/VS2 JBB1126                             @G81LPJC*/
* /*   FUNCTION - THE ICSS ENTRY CONTAINS INFORMATION RELATED TO A   */
* /*              SUBSYSTEM SPECIFICATION IN THE INSTALLATION        */
* /*              CONTROL SPECIFICATION.                             */
* /* *************************************************************** */
*         %GOTO ICSSPLS2; /*
           AGO  .ICSSAL1                                             */
* /* *************************************************************** */
* /*    INVOCATION PARAMETERS AND/OR KEYWORDS =                      */
* /*      BAL - PF=XXXX SPECIFIES THAT THE LABELS ARE TO START WITH  */
* /*            XXXX INSTEAD OF ICSS. THE DEFAULT IS ICSS            */
* /*      PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL ICSSPTR PTR.  */
* /*            TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE     */
* /*              SET %ICSSLEVL TO DESIRED STRUCTURE LEVEL.          */
* /*            TO PREVENT STRUCTURE FROM BEING CLOSED,              */
* /*              SET %ICSS9999=','.                                 */
* /*                                                                 */
* /*      CHANGE ACTIVITY - @G743PGS,@G81LPJC                        */
* /*                                                                 */
* /*      A000000-999999                                     @G742PSS*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.ICSSAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').ICSSAL2
&PF      DSECT
         AGO   .ICSSAL3
.ICSSAL2 ANOP
         DS    0D
&PF      EQU   *
.ICSSAL3 ANOP
         SPACE 1
&PF.NAME DC    CL4'    '           SUBSYSTEM NAME
&PF.SUBS DC    F'0'                ADDR OF NEXT SUBSYSTEM ENTRY
&PF.TRXN DC    F'0'                ADDR OF TRANSACTION NAME TBLS
&PF.USRD DC    F'0'                ADDR OF USERID TABLES
&PF.CLS  DC    F'0'                ADDR OF CLASS TABLES
&PF.LNG  DC    H'28'               LENGTH OF SUBSYSTEM ENTRY
&PF.RSV1 DC    HL1'0'              RESERVED
&PF.FLAG DC    B'00000000'         STATUS FLAGS
&PF.RPG  EQU   BIT0                REPORT PGN SPECIFIED (RPGN) @G743PGS
&PF.OPG  EQU   BIT1                OPTIONAL PGNS SPECD (OPGN)  @G743PGS
&PF.RPGN DC    H'0'                REPORT PERFORMANCE GROUP    @G743PGS
&PF.PGN  DC    H'1'                CONTROL PERFORMANCE GROUP
&PF.END  DS    0F                  END OF ICSS
&PF.LEN  EQU   &PF.END-&PF         LENGTH OF ICSS
         MEND
*                                                                    */
*%ICSSPLS2:  ;
*        %IF ICSS9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %ICSS9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF ICSSLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO ICSSPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 ICSS BASED(ICSSPTR) BDY(WORD),
*            %GOTO ICSSPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%ICSSPLS3:  ICSSDUM = ICSSLEVL' ICSS';  /* PICK UP GIVEN LEVEL    */
*     ICSSDUM BDY(WORD),
*%ICSSPLS4:  ;
*       10 ICSSNAME CHAR(4),        /* SUBSYSTEM NAME                */
*       10 ICSSSUBS PTR(31),        /* ADDR OF NEXT SUBSYSTEM ENTRY  */
*       10 ICSSTRXN PTR(31),        /* ADDR OF TRANSACTION NAME TBLS */
*       10 ICSSUSRD PTR(31),        /* ADDR OF USERID TABLES         */
*       10 ICSSCLS  PTR(31),        /* ADDR OF CLASS TABLES          */
*       10 ICSSLNG  FIXED(15),      /* LENGTH OF SUBSYSTEM ENTRY
*                                      (ROUNDED UP TO FULLWORD)      */
*       10 ICSSRSV1 BIT(8),         /* RESERVED                      */
*       10 ICSSFLAG BIT(8),         /* STATUS FLAGS                  */
*         14 ICSSRPG BIT(1),        /* REPORT PGN SPECIFIED  @G743PGS*/
*         14 ICSSOPG BIT(1),        /* OPTIONAL PGN SPECD    @G743PGS*/
*         14 ICSSRSV3 BIT(6),       /* RESERVED                      */
*       10 ICSSRPGN FIXED(15),      /* REPORT PERF GROUP     @G743PGS*/
*       10 ICSSPGN FIXED(15),       /* CONTROL PERF GROUP            */
*     5 ICSSEND  CHAR(0) BDY(WORD)  /* END OF ICSS                   */
*   ICSS9999
*   %ICSSLEN = 'LENGTH(ICSS)';      /* SYMBOLIC FOR LENGTH OF ICSS   */
*        %IF ICSS9999 ^= ';'        /* DOES STRUCTURE CONTINUE       */
*            %THEN %GOTO ICSSPLS5;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*%ICSSPLS5: ;
*   ICSSXPGN (*) FIXED(15) DEFINED(ICSSPGN), /* AN ARRAY CONTAINING
*        THE PGN FOLLOWED BY ANY OPGNS.  IF OPGNS WERE SPECIFIED,
*        THE LAST ELEMENT IS ZEROS.                          @G743PGS*/
*   ICSSEPTR (4) PTR(31) DEFINED(ICSSSUBS)
*   ICSS9999
./ ADD NAME=IRAICT
*        %GOTO ICTPLS1;            /*
         MACRO
         IRAICT &DSECT=YES
*                                                                    */
*%ICTPLS1 : ;
*/*                                                                  */
*/* MACCOMP Z-4 SC1CX/PKD16                                          */
*/* MACSTAT Z-4 75007/Z40BPSS                                        */
*/********************************************************************/
*/*                                                                  */
*/*      MACRO NAME - IRAICT                                         */
*/*                                                                  */
*/*      DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER I/O             */
*/*                         MANAGEMENT CONTROL TABLE                 */
*/*                                                                  */
*/*      STATUS - OS/VS2 RELEASE 4, 09/17/75, LEVEL=1                */
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.     */
*/*              USING ON ICT GIVES ADDRESSIBILITY FOR ALL SYMBOLS.  */
*/*        PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL ICTPTR PTR.  */
*/*              TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE    */
*/*                SET %ICTLEVEL TO DESIRED STRUCTURE LEVEL.         */
*/*              TO PREVENT STRUCTURE FROM BEING CLOSED,             */
*/*                SET %ICT9999=','.                                 */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*        %GOTO ICTPLS2;            /*
         AIF   ('&DSECT' EQ 'YES').ICT001
ICT      DS    0D -                I/O MANAGEMENT CONTROL TABLE
         AGO   .ICT002
.ICT001  ANOP
ICT      DSECT , -                 I/O MANAGEMENT CONTROL TABLE
.ICT002  ANOP
ICTICT   DC    CL4'ICT' -          ACRONYM IN EBCDIC -ICT-
*
*        I/O CONTROL CONSTANTS
*
ICCMRSV1 DC    F'0' -               RESERVED                   @ZM43085
ICCMXICT DC    F'60000' -          MAX TIME HEAVY I/O USER REMAIN
*                                  IN MAIN STORAGE WITHOUT BEING
*                                  MONITORED FOR I/O USAGE
ICCMNUIN DC    F'10000' -          MIN INT FOR USER I/O MONITORING
ICCMNSWP DC    F'30000' -          MINIMUM SWAP OUT TIME FOR I/O
*                                  IMBALANCE CORRECTION
ICCLCLST DC    A(0)                POINTER TO LAST LCH TABLE ENTRY
ICCLCHN  DC    H'0' -              LOGICAL CHANNEL COUNT
ICCMNIOR DC    H'5' -              MIN I/O RATE FOR USER I/O MONITORING
ICCRVSCF DC    H'1' -              IOL REC VALUE SCALING FACTOR
ICCMAXRV DC    H'128' -            MAXIMUM IOL RECOMMENDATION VALUE
ICCMINRV DC    H'-128' -           MINIMUM IOL RECOMMENDATION VALUE
ICCDASF1 DC    H'10' -             AVERAGING FACTOR FOR LCH UTILIZATION
*                                  COMPUTATION
ICCDASF2 DC    H'11' -             ICCDASF1+1
* LCH UTILIZATION IMBALANCE THRESHOLDS (EXPRESSED AS PERCENTAGES)
ICCHIUTH DC    H'0' -              HIGH IMBALANCE THRESHOLD
ICCLOUTH DC    H'0' -              LOW IMBALANCE THRESHOLD
ICCDAUTH DC    H'0' -              THRESHOLD FOR DEVICE ALLOCATION *256
* LCH UTILIZATION IMBALANCE THRESHOLD INITIALIZATION VALUES FOR UNI
* OR MULTIPROCESSOR CASES
ICCINHIT DS    0HL4 -              HIGH THRESHOLD INITIALIZATION VALUES
ICCINHI1 DC    H'70' -               UNIPROCESSOR CASE
ICCINHI2 DC    H'80' -               MULTIPROCESSOR CASE
ICCINLOT DS    0HL4 -              LOW THRESHOLD INITIAIZATION VALUES
ICCINLO1 DC    H'30' -               UNIPROCESSOR CASE
ICCINLO2 DC    H'40' -               MULTIPROCESSOR CASE
ICCINDAT DS    0HL4 -              DEV ALLOCATION INTIIAL VALUES
ICCINDA1 DC    AL2(70*256) -         UNIPROCESSOR CASE
ICCINDA2 DC    AL2(80*256) -         MULTIPROCESSOR CASE
ICCSIGUP DC    H'5' -              SIGNIFICANT USER LCH USAGE
*                                  PERCENTAGE
ICCSRSV2 DC    H'0' -              RESERVED                 @ZM43085
ICCEDSUT DC    AL2(05*256) -       EST DATASET UTILIZ IMPACT   @Z30WIAW
ICCRSV01 DC    HL2'0' -            RESERVED                    @Z40BPCH
ICCEND   DS    0F -                END OF ICT CONSTANTS
*
*        I/O CONTROL VARIABLES
*
ICVLUTBT DC    F'0' -              LCH UTILIZATION COMPUTATION BASE
*                                  TIME
ICVLCBPT DC    BL4'0' -            LCH IMBALANCE BIT PATTERN
ICVOLCBT DC    BL4'0' -            OVERUTILIZED LCH BIT PATTERN
ICVULCBT DC    BL4'0' -            UNDERUTILIZED LCH BIT PATTERN
ICVIRSV3 DC   F'0' -               RESERVED                  @ZM43085
*
*        I/O CONTROL FLAGS
*
ICTFLAGS DC    B'0' -              I/O CONTROL FLAGS
ICTDRSV4 EQU   BIT0 -               RESERVED                  @ZM43085
ICTIOL   EQU   BIT1                 I/O LOAD BALANCING ACTIVE FLAG
ICTIOOT  EQU   BIT3                SOME LOGICAL CHANNELS OUT OF BALANCE
*                                                              @Z40BPCH
ICTRSVB1 DC    B'0' -               RESERVED
ICTRSVB2 DC    B'0' -               RESERVED                   @Z40BPCH
ICTRSVB3 DC    B'0' -               RESERVED                   @Z40BPCH
ICTEND   DS    0D -                END OF ICT
ICTLEN   EQU   ICTEND-ICT -        LENGTH OF ICT
         MEND  , -                                                   */
*%ICTPLS2 : ;
*    %IF ICT9999^=','              /* IF THIS IS LAST BLOCK          */
*      %THEN ICT9999=';';          /* THEN CLOSE DECLARE STATEMENT   */
*    %IF ICTLEVEL^=''              /* IF MINOR LEVEL IS SPECIFIED,   */
*      %THEN %GOTO ICTPLS3;        /* SKIP MAJOR DECLARE             */
*DECLARE                           /*                                */
*  1 ICT BASED(ICTPTR)             /*     I/O CONTROL TABLE          */
*    %GOTO ICTPLS4;                /* MAJOR STRUCTURE                */
*%ICTPLS3: ICTDUM=ICTLEVEL' ICT'; /* CONCATENATE AS MINOR STRUCTURE*/
*  ICTDUM                          /*     I/O CONTROL TABLE          */
*%ICTPLS4:;
*          BDY(DWORD),
*      5 ICTICT CHAR(4),           /* ACRONYM IN EBCDIC -ICT-        */
*/*                                                                  */
*/*      I/O CONTROL CONSTANTS                                       */
*/*                                                                  */
*      5 ICCMRSV1 FIXED(31),       /* RESERVED              @ZM43085*/
*      5 ICCMXICT FIXED(31),       /* MAX TIME HEAVY I/O USER CAN
*                                     REMAIN IN MAIN STORAGE WITHOUT
*                                     BEING MONITORED FOR I/O USAGE  */
*      5 ICCMNUIN FIXED(31),       /* MIN INT FOR USER I/O MONITORING*/
*      5 ICCMNSWP FIXED(31),       /* MINIMUM SWAP OUT TIME FOR I/O
*                                    IMBALANCE CORRECTION            */
*      5 ICCLCLST PTR(31),         /* POINTER TO LAST RLCT TABLE
*                                     ENTRY                          */
*      5 ICCLCHN FIXED(15),        /* LOGICAL CHANNEL COUNT          */
*      5 ICCMNIOR FIXED(15),       /* MIN I/O RATE FOR USER I/O
*                                     MONITORING                     */
*      5 ICCRVSCF FIXED(15),       /* IOL REC VALUE SCALING FACTOR   */
*      5 ICCMAXRV FIXED(15),       /* MAXIMUM IOL RECOMMENDATION VAL */
*      5 ICCMINRV FIXED(15),       /* MINIMUM IOL RECOMMENDATION VAL */
*      5 ICCDASF1 FIXED(15),       /* AVERAGING FACTOR FOR LCH
*                                     UTILIZATION COMPUTATION        */
*      5 ICCDASF2 FIXED(15),       /* ICCDASF1+1                     */
*/* LCH UTILIZATION IMBALANCE THRESHOLDS                             */
*      5 ICCHIUTH FIXED(15),       /* HIGH IMBALANCE THRESHOLD       */
*      5 ICCLOUTH FIXED(15),       /* LOW IMBLAANCE THRESHOLD        */
*      5 ICCDAUTH FIXED(15),       /* THRESHOLD FOR DEVICE ALLOCATION
*                                     SYSEVENT * 256                 */
*/* LCH UTILIZATION THRESHOLD INITIALIZATION VALUES FOR UNI OR MULTI
*    PROCESSOR CASES                                                 */
*      5 ICCINHIT (2) FIXED(15),   /* HIGH THRESHOLD INIT VALUES     */
*      5 ICCINLOT (2) FIXED(15),   /* LOW THRESHOLD INIT VALUE S     */
*      5 ICCINDAT (2) FIXED(15),   /* DEV ALLOC THRESHOLD INIT VALUES*/
*      5 ICCSIGUP FIXED(15),       /* SIGNIFICANT USER LCH USAGE
*                                     PERCENTAGE                     */
*      5 ICCSRSV2 FIXED(15),       /* RESERVED               @ZM43085*/
*      5 ICCEDSUT FIXED(15),        /* EST DD UTILIZ IMPACT  @Z30WIAW*/
*      5 ICCRSV01 CHAR(2) BDY(HWORD), /* RESERVED            @Z40BPCH*/
*      5 ICCEND CHAR(0) BDY(WORD), /* END OF ICT CONSTANTS           */
*/*                                                                  */
*/*      I/O CONTROL VARIABLES                                       */
*/*                                                                  */
*      5 ICVLUTBT FIXED(31),       /* LCH UTILIZATION COMPUTATION
*                                     BASE TIME                      */
*      5 ICVLCBPT BIT(32),         /* LCH IMBALANCE BIT PATTERN      */
*      5 ICVOLCBT BIT(32),         /* OVERUTILIZED LCH BIT PATTERN   */
*      5 ICVULCBT BIT(32),         /* UNDERUTILIZED LCH BIT PATTERN  */
*     5 ICVIRSV3 FIXED(31),        /* RESERVED               @ZM43085*/
*/*                                                                  */
*/*      I/O CONTROL FLAGS                                           */
*/*                                                                  */
*      5 ICTFLAGS BIT(8),          /* I/O CONTROL FLAGS              */
*        10 ICTDRSV4 BIT(1),       /* RESERVED               @ZM43085*/
*        10 ICTIOL BIT(1),          /* I/O LOAD BALANCING ACTIVE FLAG*/
*        10 ICTIOOT BIT(1),         /* SOME LOGICAL CHANNELS OUT OF
*                                      BALANCE               @Z40BPCH*/
*        10 ICT003 BIT(5),          /* RESERVED              @Z40BPCH*/
*      5 ICTRSVB1 BIT(8),           /* RESERVED                      */
*      5 ICTRSVB2 BIT(8),           /* RESERVED              @Z40BPCH*/
*      5 ICTRSVB3 BIT(8),           /* RESERVED              @Z40BPCH*/
*      5 ICTEND CHAR(0)            /* END OF ICT                     */
*          BDY(DWORD) ICT9999
*%ICTLEN='LENGTH(ICT)';            /* OBTAIN LENGTH OF ICT           */
*      @EJECT;
./ ADD NAME=IRALSCT
*        %GOTO  LSCTPLS1;         /*
         MACRO
         IRALSCT &DSECT=YES
*                                                                    */
*%LSCTPLS1 : ;
*/*                                                                  */
*/*  MACCOMP Z-4 SC1CX/PKD09                                         */
*/*  MACSTAT Z-4 78213/G742PJC                                       */
*/********************************************************************/
*/*                                                                  */
*/*      MACRO NAME - IRALSCT                                        */
*/*                                                                  */
*/*      DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER RESOURCE        */
*/*                         LOGICAL SWAP CONTROL TABLE               */
*/*                                                          @G50IPSS*/
*/*     COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1977, 1981       @L3C*/
*/*                 LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,      */
*/*                                                          @G50IPSS*/
*/*                 REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER      */
*/*                 G120-2083.                               @G50IPSS*/
*/*                                                                  */
*/*      STATUS - OS/VS2 JBB1326                                 @L1C*/
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.     */
*/*              USING ON LSCT GIVES ADDRESSIBILITY FOR ALL SYMBOLS. */
*/*        PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL LSCT PTR PTR.*/
*/*              TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE    */
*/*                SET %LSCTLEVL TO DESIRED STRUCTURE LEVEL.         */
*/*              TO PREVENT STRUCTURE FROM BEING CLOSED,             */
*/*                SET %LSCT9999=','.                                */
*/*                                                                  */
*/*      CHANGE ACTIVITY = @G81LPJC,@ZMM0064                         */
*/*                                                                  */
*/* $L3=EXTREAL  JBB1326 800810 PDCL  : EXTENDED REAL SUPPORT SP1.3  */
*/* $L6=EXTREAL  JBB1326 801010 PDSS  : EXTENDED REAL SUPPORT SP1.3  */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*        %GOTO  LSCTPLS2;         /*
         AIF   ('&DSECT' EQ 'YES').LSCT001
LSCT     DS    0D -                LOGICAL SWAP CONTROL TABLE
         AGO   .LSCT002
.LSCT001 ANOP
LSCT     DSECT , -                 LOGICAL SWAP CONTROL TABLE
.LSCT002 ANOP
LSCTLSCT DC    CL4'LSCT' -        ACRONYM IN EDCDIC -LSCT-     @G50IPJH
*
*        LOGICAL SWAP CONTROL CONSTANTS
*
LSCTUCTL DC    H'0'  (OPT PARM)   UIC LOW THRESHOLD            @G741PGM
LSCTUCTH DC    H'0'  (OPT PARM)   UIC HIGH THRESHOLD           @G741PGM
LSCTASTL DC    H'1000'            ASM QUEUED REQ LOW THRESHOLD @ZM50083
LSCTASTH DC    H'1000'            ASM QUEUED REQ HIGH THRSHOLD @ZM50083
LSCTAFQL DC    H'0'  (OPT PARM)   AVAIL FRAME LOW              @G741PGM
LSCTAFQH DC    H'0'  (OPT PARM)   AVAIL FRAME HIGH             @G741PGM
LSCTMTEL DC    F'0'  (OPT PARM)   THINK TIME LOW THRESHOLD     @G741PGM
LSCTMTEH DC    F'0'  (OPT PARM)   THINK TIME HIGH THRESHOLD    @G741PGM
LSCTMTEI DC    F'500'             THINK TIME INCREMENT         @G50IPJH
LSCTMTED DC    F'1000'            THINK TIME DECREMENT         @G50IPJH
LSCTETD  DC    F'15000'           CHECK THINK TIME DELTA       @G50IPJH
*
*        LOGICAL SWAP CONTROL VARIABLES
*
LSCTMTE  DC    F'0'               MAXIMUM THINK TIME           @G50IPJH
LSCTCNT  DC    F'0'               NUMBER OF LOGICAL SWAP ADR SP@G50IPJH
*                                 IN TERMINAL WAIT             @ZMM0064
*
*        EXTENDED REAL CONTROL CONSTANTS
*
LSCTFTTL DC    H'0'  (OPT PARM)   LOGICAL LOW FIXED FRAME THRESHOLD
*                                 (BASED ON % OF PVTPOOL)          @L3A
LSCTFTTH DC    H'0'  (OPT PARM)   LOGICAL HIGH FIXED FRAME THRESHOLD
*                                 (BASED ON % OF PVTPOOL)          @L3A
LSCTFETL DC    H'0'  (OPT PARM)   PHYSICAL LOW FIXED FRAME THRESHOLD
*                                 (BASED ON % OF PVTPOOL-PVTPOOLA) @L3A
LSCTFETH DC    H'0'  (OPT PARM)   PHYSICAL HIGH FIXED FRAME THRESHOLD
*                                 (BASED ON % OF PVTPOOL-PVTPOOLA) @L3A
LSCTFLAG DC    B'0'               FLAGS                            @L6A
LSCTLWSS EQU   BIT0               LARGE LOGICALLY SWAPPED USER     @L6A
*                                 MAY EXSIST                       @L6A
LSCTRSV1 DC    B'0'               FLAGS                            @L6A
LSCTCNTW DC    H'0'               # LONG + DET. WT. LOG. SWAPPED
*                                                              @ZMM0064
LSCTLDTH DC    F'5000'            THINK TIME THRESHOLD FOR LOGICAL
*                                 SWAP OF LONG OR DETECTED WAITS
*                                                              @ZMM0064
LSCTRSV3 DC    F'0'               RESERVED                         @L3A
LSCTEND  DS    0D -                END OF LSCT                 @G50IPJH
LSCTLEN  EQU   LSCTEND-LSCT -      LENGTH OF LSCT              @G50IPJH
         MEND
*        */
*%LSCTPLS2 : ;
*    %IF LSCT9999^=','             /* IF THIS IS LAST BLOCK          */
*      %THEN %LSCT9999=';';        /* THEN CLOSE DECLARE STATEMENT   */
*    %IF LSCTLEVL^=''              /* IF MINOR LEVEL IS SPECIFIED,   */
*      %THEN %GOTO LSCTPLS3;       /* SKIP MAJOR DECLARE             */
*DECLARE                           /*                                */
*  1 LSCT BASED(LSCTPTR)           /* LOGICAL SWAP CONTROL TABLE     */
*    %GOTO LSCTPLS4;               /* MAJOR STRUCTURE                */
*%LSCTPLS3:LSCTDM=LSCTLEVL' LSCT';/* CONCATENATE AS MINOR STRUCTURE*/
*  LSCTDM                         /* LOGICAL SWAP CONTROL TABLE     */
*%LSCTPLS4:;
*        BDY(DWORD),
*      5 LSCTLSCT CHAR(4),         /* ACRONYM IN EBCDIC -LSCT-       */
*/*                                                                  */
*/*      LOGICAL SWAP CONTROL CONSTANTS                              */
*/*                                                                  */
*      5 LSCTUCTL FIXED(15),       /* UIC THRESHOLD LOW      @G50IPJH*/
*      5 LSCTUCTH FIXED(15),       /* UIC HIGH THRESHOLD     @G50IPJH*/
*      5 LSCTASTL FIXED(15),       /* ASM QUEUED REQ LOW     @G50IPJH*/
*      5 LSCTASTH FIXED(15),       /* ASM QUEUED REQ HIGH    @G50IPJH*/
*      5 LSCTAFQL FIXED(15),       /* AVAIL FRAME LOW        @G50IPEB*/
*      5 LSCTAFQH FIXED(15),       /* AVAIL FRAME HIGH       @G50IPEB*/
*      5 LSCTMTEL FIXED(31),       /* THINK TIME LOW THRESH  @G50IPJH*/
*      5 LSCTMTEH FIXED(31),       /* THINK TIME HIGH THRESH @G50IPJH*/
*      5 LSCTMTEI FIXED(31),       /* THINK TIME INCREMENT   @G50IPJH*/
*      5 LSCTMTED FIXED(31),       /* THINK TIME DECREMENT   @G50IPJH*/
*      5 LSCTETD  FIXED(31),       /* CHECK THINK TIME DELTA @G50IPJH*/
*/*                                                                  */
*/*      LOGICAL SWAP CONTROL VARIABLES                              */
*/*                                                                  */
*      5 LSCTMTE FIXED(32) UNSIGNED, /* MAXIMUM THINK TIME   @G50IPJH*/
*        7 LSCTMTES FIXED(31),    /* MAX THINK TIME SIGNED   @G50IPJH*/
*      5 LSCTCNT FIXED(31),       /* NUMBER OF LOGICAL SWAP TERM
*                                    WAITS                   @ZMM0064*/
*/*                                                                  */
*/*      EXTENDED REAL CONTROL CONSTANTS                             */
*/*                                                                  */
*      5 LSCTFTTL FIXED(15),       /* LOGICAL LOW FIXED FRAME THRESHOLD
*                                    (BASED ON % OF PVTPOOL)     @L3A*/
*      5 LSCTFTTH FIXED(15),      /* LOGICAL HIGH FIXED FRAME THRESHOLD
*                                    (BASED ON % OF PVTPOOL)     @L3A*/
*      5 LSCTFETL FIXED(15),      /* PHYSICAL LOW FIXED FRAME THRESHOLD
*                               (BASED ON % OF PVTPOOL-PVTPOOLA) @L3A*/
*      5 LSCTFETH FIXED(15),     /* PHYSICAL HIGH FIXED FRAME THRESHOLD
*                               (BASED ON % OF PVTPOOL-PVTPOOLA) @L3A*/
*      5 LSCTFLAG BIT(8),         /* FLAGS                       @L6A*/
*      10 LSCTLWSS BIT(1),        /* LARGE LOGICALLY SWAPPED USER
*                                    MAY EXIST                   @L6A*/
*      10 * BIT(7),               /* RESERVED                    @L6A*/
*      5 LSCTRSV1 BIT(8),         /* RESERVED                    @L6A*/
*      5 LSCTCNTW FIXED(15),      /* # LONG + DET. WT. LOG. SWAPPED
*                                                            @ZMM0064*/
*      5 LSCTLDTH FIXED(31),      /* THINK TIME THRESHOLD FOR LOGICAL
*                                    SWAP OF LONG OR DETECTED WAITS
*                                                            @ZMM0064*/
*      5 LSCTRSV3 FIXED(31),      /* RESERVED                    @L3A*/
*      5 LSCTEND CHAR(0) BDY(DWORD) /* END OF LSCT           @G50IPJH*/
*                     LSCT9999
*%LSCTLEN='LENGTH(LSCT)';          /* OBTAIN LENGTH OF LSCT          */
*@EJECT;
./ ADD NAME=IRAMCT
*        %GOTO  MCTPLS1;
         MACRO
         IRAMCT &DSECT=YES
*/*                                                                  */
*%MCTPLS1 : ;
*/*                                                                  */
*/*  MACCOMP Z-4 SC1CX/PKD16                                         */
*/*  MACSTAT Z-4 76007/Z40BPSS                                       */
*/********************************************************************/
*/*                                                                  */
*/*      MACRO NAME - IRAMCT                                         */
*/*                                                                  */
*/*      DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER STORAGE         */
*/*                         MANAGEMENT CONTROL TABLE                 */
*/*                                                                  */
*/*      STATUS - OS/VS2 RELEASE 4, 09/19/75, LEVEL=1                */
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.     */
*/*              USING ON MCT GIVES ADDRESSIBILITY FOR ALL SYMBOLS.  */
*/*        PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL MCTPTR PTR.  */
*/*              TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE    */
*/*                SET %MCTLEVEL TO DESIRED STRUCTURE LEVEL.         */
*/*              TO PREVENT STRUCTURE FROM BEING CLOSED,             */
*/*                SET %MCT9999=','.                                 */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*        %GOTO  MCTPLS2;          /*
         AIF   ('&DSECT' EQ 'YES').MCT001
MCT      DS    0D -                STORAGE CONTROL TABLE
         AGO   .MCT002
.MCT001  ANOP
MCT      DSECT , -                 STORAGE CONTROL TABLE
.MCT002  ANOP
MCTMCT   DC    CL4'MCT' -         ACRONYM IN EDCDIC -MCT-
*
*        STORAGE CONTROL CONSTANTS
*
*        POINTERS TO SHORTAGE MESSAGES
MCCMS100 DC    V(IRARM100) -      SQA SHORTAGE MESSAGE ADDRESS
MCCMS101 DC    V(IRARM101) -      CRITICAL SQA SHORTAGE MESSAGE ADDRESS
MCCMS102 DC    V(IRARM102) -      SQA SHORTAGE RELIEVED MESSAGE ADDRESS
MCCMS200 DC    V(IRARM200) -      AUX SHORTAGE MESSAGE ADDRESS
MCCMS201 DC    V(IRARM201) -      CRITICAL AUX SHORTAGE MESSAGE ADDRESS
MCCMS202 DC    V(IRARM202) -      AUX SHORTAGE RELIEVED MESSAGE ADDRESS
MCCMS203 DC    V(IRARM203) -      AUX SHORTAGE USER MSG ADDR   @ZM43072
MCCMS400 DC    V(IRARM400) -      FIX PAGE SHORTAGE MSG ADDR   @Z40BPCH
MCCMS401 DC    V(IRARM401) -      CRITICAL FIX PAGE SHORTAGE MSG ADDR
*                                                              @Z40BPCH
MCCMS402 DC    V(IRARM402) -      FIX PAGE SHORTAGE RELIEVED MSG ADDR
*                                                              @Z40BPCH
MCCMS403 DC    V(IRARM403) -      FIX PAGE USER MESSAGE ADDR   @ZM43072
*
*        STORAGE CONTROL CONSTANTS                             @Z40BPCH
*
MCCPLUS  DC    H'10' -             AVAILABLE FRAME QUEUE DELTA FOR
*                                  STEALING                    @Z40BPCH
MCCRSVH1 DC    H'0' -              RESERVED                    @Z40BPCH
*
*        AUX STORAGE MONITORING CONSTANTS
*
MCCASMT1 DC    H'70' -             FIRST AUX SHORTAGE THRESHOLD
MCCASMT2 DC    H'85' -             SECOND AUX SHORTAGE THRESHOLD
MCCEND   DS    0F -                END OF MCT CONSTANTS
*
*        STORAGE CONTROL VARIABLES
*
MCVSTCRI DC    H'0' -              HIGHEST SYSTEM UIC          @Z40BPCH
MCVFRCNT DC    H'0' -              NUMBER OF PAGES NEEDED TO BE STOLEN
*                                  BY THE FORCE STEAL ROUTINE
MCVAVQC  DC    F'0' -              COUNT OF AVQLOWS            @Z40BPCH
*
*        MEMORY CONTROL FLAGS
*
MCTSFLGS DC    B'0' -              FLAGS MODIFIED UNDER SALLOC LOCK
MCTSQA1  EQU   BIT0 -              SQA FIRST LEVEL SHORTAGE
MCTSQA2  EQU   BIT1 -              SQA SECOND LEVEL SHORTAGE
MCTAVQ1  EQU   BIT2 -              AVQ BELOW LIMIT
MCTFAVQ  EQU   BIT3 -              FIXED FRAMES ABOVE LIMIT    @Z40BPCH
MCTOFLGS DC    B'0' -              FLAGS MODIFIED UNDER SRM LOCK
MCTASM1  EQU   BIT0 -              ASM FIRST LEVEL SHORTAGE
MCTASM2  EQU   BIT1 -              ASM SECOND LEVEL SHORTAGE
MCTAMS2  EQU   BIT3 -              ASM SECOND LEVEL MESSAGE
MCTSMS1  EQU   BIT4 -              SQA FIRST LEVEL MESSAGE
MCTSMS2  EQU   BIT5 -              SQA SECOND LEVEL MESSAGE
MCTFX1   EQU   BIT6 -              FIX PG 1ST LEVEL MSG        @Z40BPCH
MCTFX2   EQU   BIT7 -              FIX PG 2ND LEVEL MSG        @Z40BPCH
MCTXRSVD DC    B'0' -              RESERVED                  @ZM43085
* BITS 1-7 UNAVAILABLE BECAUSE OF SERIALIZATION PROBLEMS
MCTRSVB1 DC    B'0' -               RESERVED                   @YM05630
*
*        TIME INTERVAL VALUES FOR PR1 INVOCATION               @ZM43064
*
MCCUICBD DC    F'00000008' -        UIC LIMIT BEFORE ADJUSTING @ZM43064
MCCUICIN DC    F'00001000' -        PR1 INTERVAL INCREMENT     @ZM43064
MCCPR1IN DC    F'0' -               INITIAL RMEPINT FOR PR1    @ZM43064
MCCINTMX DC    F'00002000' -        MAX PR1 INTERVAL           @ZM43097
MCVRSVF1 DC    F'0' -               RESERVED                   @Z30WIPH
MCVRSVF2 DC    F'0' -               RESERVED                   @Z30WIPH
MCVRSVF3 DC    F'0' -               RESERVED                   @Z30WIPH
MCTEND   DS    0F -                END OF MCT
MCTLEN   EQU   MCTEND-MCT -        LENGTH OF MCT
         MEND
*        */
*%MCTPLS2 : ;
*    %IF MCT9999^=','              /* IF THIS IS LAST BLOCK          */
*      %THEN %MCT9999=';';         /* THEN CLOSE DECLARE STATEMENT   */
*    %IF MCTLEVEL^=''              /* IF MINOR LEVEL IS SPECIFIED,   */
*      %THEN %GOTO MCTPLS3;        /* SKIP MAJOR DECLARE             */
*DECLARE                           /*                                */
*  1 MCT BASED(MCTPTR)             /* STORAGE CONTROL TABLE          */
*    %GOTO MCTPLS4;                /* MAJOR STRUCTURE                */
*%MCTPLS3: MCTDUM=MCTLEVEL' MCT'; /* CONCATENATE AS MINOR STRUCTURE*/
*  MCTDUM                          /* STORAGE CONTROL TABLE          */
*%MCTPLS4:;
*        BDY(DWORD),
*      5 MCTMCT CHAR(4),           /* ACRONYM IN EBCDIC -MCT-        */
*/*                                                                  */
*/*      STORAGE CONTROL CONSTANTS                                   */
*/*                                                                  */
*/* POINTERS TO SHORTAGE MESSAGES                                    */
*      5 MCCMS100 PTR(31),         /* SQA SHORTAGE MESSAGE ADDRESS   */
*      5 MCCMS101 PTR(31),         /* CRITICAL SQA SHORTAGE MSG ADDR */
*      5 MCCMS102 PTR(31),         /* SQA SHORTAGE RELIEVED MSG ADDR */
*      5 MCCMS200 PTR(31),         /* AUX SHORTAGE MESSAGE ADDRESS   */
*      5 MCCMS201 PTR(31),         /* CRITICAL AUX SHORTAGE MSG ADDR */
*      5 MCCMS202 PTR(31),         /* AUX SHORTAGE RELIEVED MSG ADDR */
*      5 MCCMS203 PTR(31),         /* AUX SHORTAGE USER MESSAGE ADDRESS
*                                                            @ZM43072*/
*      5 MCCMS400 PTR(31),         /* FIX PAGE SHORTAGE MSG ADDR
*                                                           @Z40BPCH */
*      5 MCCMS401 PTR(31),         /* CRITICAL FIX PAGE SHORTAGE MSG
*                                     ADDR                  @Z40BPCH */
*      5 MCCMS402 PTR(31),         /* FIX PAGE SHORTAGE RELIEVED
*                                     MSG ADDR              @Z40PBCH */
*      5 MCCMS403 PTR(31),         /* FIX PAGE USER MESSAGE ADDRESS
*                                                            @ZM43072*/
*/*                                                                  */
*/* STORAGE CONTROL CONSTANTS                                @Z40BPCH*/
*/*                                                                  */
*      5 MCCPLUS FIXED(15),        /* AVAILABLE FRAME QUEUE DELTA FOR
*                                     STEALING               @Z40BPCH*/
*      5 MCCRSVH1 FIXED(15),       /* RESERVED               @Z40BPCH*/
*/*                                                                  */
*/* AUX STORAGE MONITORING CONSTANTS                                 */
*/*                                                                  */
*      5 MCCASMT1 FIXED(15),       /* FIRST AUX SHORTAGE THRESHOLD   */
*      5 MCCASMT2 FIXED(15),       /* SECOND AUX SHORTAGE THRESHOLD  */
*      5 MCCEND CHAR(0) BDY(WORD), /* END OF MCT CONSTANTS           */
*/*                                                                  */
*/*      STORAGE CONTROL VARIABLES                                   */
*/*                                                                  */
*      5 MCVSTCRI FIXED(15),       /* HIGHEST SYSTEM UIC     @Z40BPCH*/
*      5 MCVFRCNT FIXED(15),       /* NUMBER OF PAGES NEEDED TO BE
*                                     STOLEN BY THE FORCE STEAL RTN  */
*      5 MCVAVQC FIXED(31),        /* COUNT OF AVQLOWS       @Z40BPCH*/
*/*                                                                  */
*/*      MEMORY CONTROL FLAGS                                        */
*/*                                                                  */
*      5 MCTSFLGS BIT(8),          /* FLAGS MODIFIED UNDER SALLOC LCK*/
*        10 MCTSQA1 BIT(1),        /* SQA FIRST LEVEL SHORTAGE       */
*        10 MCTSQA2 BIT(1),        /* SQA SECOND LEVEL SHORTAGE      */
*        10 MCTAVQ1 BIT(1),        /* AVQ BELOW LIMIT                */
*        10 MCTFAVQ  BIT(1),       /* FIXED FRAMES ABOVE LIM @Z40BPCH*/
*        10 MCTSF04 BIT(4),        /* RESERVED               @Z40BPCH*/
*      5 MCTOFLGS BIT(8),          /* FLAGS MODIFIED UNDER SRM LOCK  */
*        10 MCTASM1 BIT(1),        /* ASM FIRST LEVEL SHORTAGE       */
*        10 MCTASM2 BIT(1),        /* ASM SECOND LEVEL SHORTAGE      */
*        10 *       BIT(1),        /* RESERVED               @Z40BPSS*/
*        10 MCTAMS2 BIT(1),        /* ASM SECOND LEVEL MESSAGE       */
*        10 MCTSMS1 BIT(1),        /* SQA FIRST LEVEL MESSAGE        */
*        10 MCTSMS2 BIT(1),        /* SQA SECOND LEVEL MESSAGE       */
*        10 MCTFX1  BIT(1),        /* FIX PG 1ST LEVEL MSG   @Z40BPCH*/
*        10 MCTFX2  BIT(1),        /* FIX PG 2ND LEVEL MSG   @Z40BPCH*/
*      5 MCTXRSVD BIT(8),          /* RESERVED               @ZM43085*/
*      5 MCTRSVB1 BIT(8),           /* RESERVED              @YM05630*/
*/*                                                                  */
*/*    TIME INTERVAL VALUES FOR PR1 INVOCATION               @ZM43064*/
*/*                                                                  */
*        5 MCCUICBD FIXED(31),      /* UIC LIMIT BEFORE ADJUSTING
*                                                            @ZM43064*/
*        5 MCCUICIN FIXED(31),     /* PR1 INTERVAL INCREMENT @ZM43064*/
*        5 MCCPR1IN FIXED(31),      /* INITIAL RMEPINT FOR PR1
*                                                            @ZM43064*/
*        5 MCCINTMX FIXED(31),      /* MAX PR1 INTERVAL      @ZM43097*/
*        5 MCVRSVF1 FIXED(31),      /* RESERVED              @Z30WIPH*/
*        5 MCVRSVF2 FIXED(31),      /* RESERVED              @Z30WIPH*/
*        5 MCVRSVF3 FIXED(31),      /* RESERVED              @Z30WIPH*/
*      5 MCTEND CHAR(0)            /* END OF MCT                     */
*          BDY(DWORD) MCT9999
*%MCTLEN='LENGTH(MCT)';            /* OBTAIN LENGTH OF MCT           */
*@EJECT;
./ ADD NAME=IRAOLST
*        %GOTO OLSTPLS1; /*
         MACRO
         IRAOLST   &DSECT=YES,&PF=OLST                               */
*%OLSTPLS1:  ;
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAOLST                                          */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCE MANAGER OPT PARAMETER LIST */
* /*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,   @G812PJC*/
* /*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,       */
* /*               REFER TO COPYRIGHT INSTRUCTIONS FORM              */
* /*               NUMBER G120-2083.                                 */
* /*   STATUS -   OS/VS2 JBB1226                             @G38BPCL*/
* /*   FUNCTION - THE OLST CONTAINS THE VALUES OF OPT PARAMETERS THAT*/
* /*              HAVE BEEN READ FROM SYS1.PARMLIB AND THAT ARE TO BE*/
* /*              PLACED IN VARIOUS SRM CONTROL BLOCKS               */
* /* *************************************************************** */
*         %GOTO OLSTPLS2; /*
           AGO  .OLSTAL1                                             */
* /* *************************************************************** */
* /*    INVOCATION PARAMETERS AND/OR KEYWORDS =                      */
* /*      BAL - PF=XXXX SPECIFIES THAT THE LABELS ARE TO START WITH  */
* /*            XXXX INSTEAD OF OLST. THE DEFAULT IS OLST            */
* /*      PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL OLSTPTR PTR.  */
* /*            TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE     */
* /*              SET %OLSTLEVL TO DESIRED STRUCTURE LEVEL.          */
* /*            TO PREVENT STRUCTURE FROM BEING CLOSED,              */
* /*              SET %OLST9999=','.                                 */
* /*                                                                 */
* /*      CHANGE ACTIVITY - @G812PJC                                 */
* /*                                                                 */
* /* $L3=EXTREAL  JBB1326 800810 PDCL  : EXTENDED REAL SUPPORT SP1.3 */
* /*                                                                 */
* /*      A000000-999999                                     @G741PGM*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.OLSTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').OLSTAL2
&PF      DSECT
         AGO   .OLSTAL3
.OLSTAL2 ANOP
         DS    0D
&PF      EQU   *
.OLSTAL3 ANOP
         SPACE 1
&PF.TOC  DC    D'0'                TIME OF NEWOPT SYSEVENT
&PF.SOP  DC    A(0)                SET OPT ENTRY POINT ADDRESS
&PF.CPU  DC    X'00000019'         CPU RESOURCE FACTOR
&PF.IOC  DC    X'00000019'         I/O RESOURCE FACTOR
&PF.MSO  DC    F'0'                STOR RESOURCE FACTOR       @G742PBP
&PF.ERV  DC    F'500'              ENQ RESIDENCE INTERVAL VALUE
&PF.ICTL DC    H'2'                RCCUICTL VALUE
&PF.ICTH DC    H'4'                RCCUICTH VALUE
&PF.PUTL DC    H'1568'             RCCCPUTL VALUE
&PF.PUTH DC    H'1614'             RCCCPUTH VALUE
&PF.TRTL DC    H'1000'             RCCPTRTL VALUE              @ZM50083
&PF.TRTH DC    H'1000'             RCCPTRTH VALUE              @ZM50083
&PF.SMTL DC    H'1000'             RCCASMTL VALUE              @ZM50083
&PF.SMTH DC    H'1000'             RCCASMTH VALUE              @ZM50083
&PF.PUPL DC    F'1520'             RCCCPUPL VALUE
&PF.PUPH DC    F'1568'             RCCCPUPH VALUE
&PF.SPTL DC    H'100'              RCCMSPTL VALUE
&PF.SPTH DC    H'130'              RCCMSPTH VALUE
&PF.DLTL DC    H'1000'             RCCPDLTL VALUE
&PF.DLTH DC    H'1000'             RCCPDLTH VALUE
&PF.UCTL DC    H'20'               LSCTUCTL VALUE
&PF.UCTH DC    H'30'               LSCTUCTH VALUE
&PF.AFQL DC    H'0'                LSCTAFQL VALUE
&PF.AFQH DC    H'300'              LSCTAFQH VALUE
&PF.BSIG DC    H'40'               MCCSBSIG VALUE              @G742PBP
&PF.BSTH DC    H'30'               MCCSBSTH VALUE              @G742PBP
&PF.BSTL DC    H'10'               MCCSBSTL VALUE              @G742PBP
&PF.BATH DC    H'200'              MCCSBATH VALUE              @G742PBP
&PF.BATL DC    H'100'              MCCSBATL VALUE              @G742PBP
&PF.BFCF DC    H'2'                MCCSBFCF VALUE              @G742PBP
* MPL PAGING RATE THRESHOLDS OBTAINED DYNAMICALLY FROM CCT
&PF.RDFL DS    0HL4                CCCPRLOT VALUE
&PF.RDL1 DC    H'0'                CCCPRLO1 VALUE
&PF.RDL2 DC    H'0'                CCCPRLO2 VALUE
&PF.RDFH DS    0HL4                CCCPRHIT VALUE
&PF.RDH1 DC    H'0'                CCCPRHI1 VALUE
&PF.RDH2 DC    H'0'                CCCPRHI2 VALUE
*
&PF.TOM  DC    F'1000'             RMPTTOM VALUE
&PF.MTEL DC    F'0'                LSCTMTEL VALUE
&PF.MTEH DC    F'30000'            LSCTMTEH VALUE
&PF.TAPE DC    1B'10000000'        TAPE SELECTION ALGORITHM FLAGS
&PF.SLTN EQU   BIT0                SELECT NEXT HIGHEST
&PF.SLTR EQU   BIT1                SELECT AT RANDOM
&PF.SLTL EQU   BIT2                SELECT LOWEST UCB ADDRESS
&PF.SLTF EQU   BIT3                SELECT FIRST UCB ADDRESS
&PF.FLGS DC    1B'00100000'
&PF.CNSW EQU   BIT0                RMCTCNSW FLAG               @G38BPCL
&PF.CLST EQU   BIT1                RMCTCLST FLAG               @G38BPCL
&PF.DVIO EQU   BIT2                ASMDVIO FLAG (DIRECTED VIO OPTION)
*                                                              @G38BPCL
&PF.OPC  DC    CL3'1.0'            CPU RES FACTOR COEFFICIENT
&PF.OPI  DC    CL3'1.0'            I/O RES FACTOR COEFFICIENT
&PF.OPM  DC    CL3'0.0'            STOR RES FACTOR COEFFICIENT
&PF.OPE  DC    CL6'   500'         ENQ RES CPU SERVICE VALUE
&PF.OPTN DC    CL2'--'             OPT SUFFIX NUMBER (DEFAULT SUFFIX)
&PF.RSV3 DC    CL1'00'             RESERVED
&PF.TLOT DC    AL2(85*256)         CCCUTLOT VALUE              @ZM50083
&PF.THIT DC    AL2(100*256)        CCCUTHIT VALUE              @ZM50083
&PF.RSV1 DC    H'0'                RESERVED VALUE              @ZM50083
&PF.INLO DS    0HL4                ICCINLOT VALUES             @ZM50083
&PF.INL1 DC    H'30'               ICCINLOT(1) VALUE           @ZM50083
&PF.INL2 DC    H'40'               ICCINLOT(2) VALUE           @ZM50083
&PF.INHI DS    0HL4                ICCINHIT VALUES             @ZM50083
&PF.INH1 DC    H'70'               ICCINHIT(1) VALUE           @ZM50083
&PF.INH2 DC    H'80'               ICCINHIT(2) VALUE           @ZM50083
&PF.IGUP DC    H'5'                ICCSIGUP VALUE              @ZM50083
&PF.BSGP DC    H'50'               MCCSBSGP VALUE              @ZM50083
&PF.BINP DC    H'10'               MCCSBINP VALUE              @ZM50083
&PF.BDEP DC    H'5'                MCCSBDEP VALUE              @ZM50083
&PF.RSV2 DC    H'0'                RESERVED                    @ZM50083
&PF.IGUR DC    F'45'               CCCSIGUR VALUE              @G812PJC
&PF.MFXT DC    H'80'               MCCFXTPR VALUE                  @L3A
&PF.MFXE DC    H'92'               MCCFXEPR VALUE                  @L3A
&PF.SBTH DC    H'76'               MCCSBFTH VALUE                  @L3A
&PF.RFTL DC    H'66'               RCCFXTTL VALUE                  @L3A
&PF.RFTH DC    H'72'               RCCFXTTH VALUE                  @L3A
&PF.RFEL DC    H'82'               RCCFXETL VALUE                  @L3A
&PF.RFEH DC    H'88'               RCCFXETH VALUE                  @L3A
&PF.LFTL DC    H'58'               LSCTFTTL VALUE                  @L3A
&PF.LFTH DC    H'66'               LSCTFTTH VALUE                  @L3A
&PF.LFEL DC    H'76'               LSCTFETL VALUE                  @L3A
&PF.LFEH DC    H'82'               LSCTFETH VALUE                  @L3A
&PF.RSV4 DC    H'0'                RESERVED                        @L3A
&PF.RSV5 DC    F'0'                RESERVED
&PF.RSV6 DC    F'0'                RESERVED @G742PBP
&PF.END  DS    0F                  END OF OLST
&PF.LEN  EQU   &PF.END-&PF         LENGTH OF OLST
         MEND
*                                                                    */
*%OLSTPLS2:  ;
*        %IF OLST9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %OLST9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF OLSTLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO OLSTPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 OLST BASED(OLSTPTR) BDY(DWORD),
*            %GOTO OLSTPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%OLSTPLS3:  OLSTDUM = OLSTLEVL' OLST';  /* PICK UP GIVEN LEVEL    */
*     OLSTDUM BDY(DWORD),
*%OLSTPLS4:  ;
*       10 OLSTTOC  BIT(64),        /* TIME OF NEWOPT SYSEVENT       */
*       10 OLSTSOP  PTR(31),        /* SET OPT ENTRY POINT ADDRESS   */
*       10 OLSTCPU  FIXED(31),      /* CPU RESOURCE FACTOR           */
*       10 OLSTIOC  FIXED(31),      /* I/O RESOURCE FACTOR           */
*       10 OLSTMSO  FIXED(31),      /* STOR RESOURCE FACTOR  @G742PBP*/
*       10 OLSTERV  FIXED(31),      /* ENQ RESIDENCE INTERVAL VALUE  */
*       10 OLSTICTL FIXED(15),      /* RCCUICTL VALUE                */
*       10 OLSTICTH FIXED(15),      /* RCCUICTH VALUE                */
*       10 OLSTPUTL FIXED(15),      /* RCCCPUTL VALUE                */
*       10 OLSTPUTH FIXED(15),      /* RCCCPUTH VALUE                */
*       10 OLSTTRTL FIXED(15),      /* RCCPTRTL VALUE                */
*       10 OLSTTRTH FIXED(15),      /* RCCPTRTH VALUE                */
*       10 OLSTSMTL FIXED(15),      /* RCCASMTL VALUE                */
*       10 OLSTSMTH FIXED(15),      /* RCCASMTH VALUE                */
*       10 OLSTPUPL FIXED(31),      /* RCCCPUPL VALUE                */
*       10 OLSTPUPH FIXED(31),      /* RCCCPUPH VALUE                */
*       10 OLSTSPTL FIXED(15),      /* RCCMSPTL VALUE                */
*       10 OLSTSPTH FIXED(15),      /* RCCMSPTH VALUE                */
*       10 OLSTDLTL FIXED(15),      /* RCCPDLTL VALUE                */
*       10 OLSTDLTH FIXED(15),      /* RCCPDLTH VALUE                */
*       10 OLSTUCTL FIXED(15),      /* LSCTUCTL VALUE                */
*       10 OLSTUCTH FIXED(15),      /* LSCTUCTH VALUE                */
*       10 OLSTAFQL FIXED(15),      /* LSCTAFQL VALUE                */
*       10 OLSTAFQH FIXED(15),      /* LSCTAFQH VALUE                */
*       10 OLSTBSIG FIXED(15),      /* MCCSBSIG VALUE        @G742PBP*/
*       10 OLSTBSTH FIXED(15),      /* MCCSBSTH VALUE        @G742PBP*/
*       10 OLSTBSTL FIXED(15),      /* MCCSBSTL VALUE        @G742PBP*/
*       10 OLSTBATH FIXED(15),      /* MCCSBATH' VALUE       @G742PBP*/
*       10 OLSTBATL FIXED(15),      /* MCCSBATL VALUE        @G742PBP*/
*       10 OLSTBFCF FIXED(15),      /* MCCSBFCF VALUE        @G742PBP*/
*       10 OLSTRDFL(2) FIXED(15),   /* CCCPRLOT VALUES               */
*       10 OLSTRDFH(2) FIXED(15),   /* CCCPRHIT VALUES               */
*       10 OLSTTOM FIXED(32) UNSIGNED, /* RMPTTOM VALUE              */
*       10 OLSTMTEL FIXED(31),      /* LSCTMTEL VALUE                */
*       10 OLSTMTEH FIXED(31),      /* LSCTMTEH VALUE                */
*       10 OLSTTAPE BIT(8),         /* TAPE SELECTION ALGORITH FLAGS */
*         12 OLSTSLTN BIT(1),       /* SELECT NEXT HIGHEST           */
*         12 OLSTSLTR BIT(1),       /* SELECT AT RANDOM              */
*         12 OLSTSLTL BIT(1),       /* SELECT LOWEST UCB ADDRESS     */
*         12 OLSTSLTF BIT(1),       /* SELECT FIRST UCB ADDRESS      */
*         12 * BIT(4),              /* RESERVED                      */
*       10 OLSTFLGS BIT(8),         /*                               */
*         12 OLSTCNSW BIT(1),       /* RMCTCNSW FLAG                 */
*         12 OLSTCLST BIT(1),       /* RMCTCLST FLAG                 */
*         12 OLSTDVIO BIT(1),       /* ASMDVIO FLAG (DIRECTED VIO
*                                      OPTION)               @G38BPCL*/
*         12 * BIT(5),              /* RESERVED              @G38BPCL*/
*       10 OLSTOPC CHAR(3),         /* CPU RES FACTOR COEFFICIENT    */
*       10 OLSTOPI CHAR(3),         /* I/O RES FACTOR COEFFICIENT    */
*       10 OLSTOPM CHAR(3),         /* STOR RES FACTOR COEFFICIENT   */
*       10 OLSTOPE CHAR(6),         /* ENQ RES CPU SERVICE VALUE     */
*       10 OLSTOPTN CHAR(2),        /* OPT SUFFIX NUMBER             */
*       10 OLSTRSV3 CHAR(1),        /* RESERVED                      */
*       10 OLSTTLOT FIXED(15),      /* CCCUTLOT VALUE        @ZM50083*/
*       10 OLSTTHIT FIXED(15),      /* CCCUTHIT VALUE        @ZM50083*/
*       10 OLSTRSV1 FIXED(15),      /* RESERVED              @G812PJC*/
*       10 OLSTINLO(2) FIXED(15),   /* ICCINLOT VALUES       @ZM50083*/
*       10 OLSTINHI(2) FIXED(15),   /* ICCINHIT VALUES       @ZM50083*/
*       10 OLSTIGUP FIXED(15),      /* ICCSIGUP VALUE        @ZM50083*/
*       10 OLSTBSGP FIXED(15),      /* MCCSBSGP VALUE        @ZM50083*/
*       10 OLSTBINP FIXED(15),      /* MCCSBINP VALUE        @ZM50083*/
*       10 OLSTBDEP FIXED(15),      /* MCCSBDEP VALUE        @ZM50083*/
*       10 OLSTRSV2 FIXED(15),      /* RESERVED              @ZM50083*/
*       10 OLSTIGUR FIXED(31),      /* CCCSIGUR VALUE        @G812PJC*/
*       10 OLSTMFXT FIXED(15),      /* MCCFXTPR VALUE            @L3A*/
*       10 OLSTMFXE FIXED(15),      /* MCCFXEPR VALUE            @L3A*/
*       10 OLSTSBTH FIXED(15),      /* MCCSBFTH VALUE            @L3A*/
*       10 OLSTRFTL FIXED(15),      /* RCCFXTTL VALUE            @L3A*/
*       10 OLSTRFTH FIXED(15),      /* RCCFXTTH VALUE            @L3A*/
*       10 OLSTRFEL FIXED(15),      /* RCCFXETL VALUE            @L3A*/
*       10 OLSTRFEH FIXED(15),      /* RCCFXETH VALUE            @L3A*/
*       10 OLSTLFTL FIXED(15),      /* LSCTFTTL VALUE            @L3A*/
*       10 OLSTLFTH FIXED(15),      /* LSCTFTTH VALUE            @L3A*/
*       10 OLSTLFEL FIXED(15),      /* LSCTFETL VALUE            @L3A*/
*       10 OLSTLFEH FIXED(15),      /* LSCTFETH VALUE            @L3A*/
*       10 OLSTRSV4 FIXED(15),      /* RESERVED                  @L3A*/
*       10 OLSTRSV5 FIXED(31),      /* RESERVED                      */
*       10 OLSTRSV6 FIXED(31),      /* RESERVED              @G742PBP*/
*       10 OLSTEND  CHAR(0) BDY(WORD)   /* END OF OLST              */
*   OLST9999
*   %OLSTLEN = 'LENGTH(OLST)';      /* SYMBOLIC FOR LENGTH OF OLST   */
./ ADD NAME=IRARCT
*        %GOTO  RCTPLS1;           /*
         MACRO
         IRARCT &DSECT=YES
*                                                                    */
*%RCTPLS1 : ;
*/*                                                                  */
*/*  MACCOMP Z-4 SC1CX/PKD16                                         */
*/*  MACSTAT Z-4 75007/Z40BPSS                                       */
*/********************************************************************/
*/*                                                                  */
*/*      MACRO NAME - IRARCT                                         */
*/*                                                                  */
*/*      DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER RESOURCE        */
*/*                         MANAGEMENT CONTROL TABLE                 */
*/*                                                                  */
*/*      STATUS - OS/VS2 RELEASE 4, 10/29/75, LEVEL=1                */
*/*                                                                  */
*/*      METHOD OF ACCESS                                            */
*/*        BAL - DSECT IS PRODUCED UNLESS DSECT=NO IS SPECIFIED.     */
*/*              USING ON RCT GIVES ADDRESSIBILITY FOR ALL SYMBOLS.  */
*/*        PLS - TO ACCESS AS STAND ALONE STRUCTURE DCL RCTPTR PTR.  */
*/*              TO CONCATENATE WITH PREVIOUSLY DEFINED STRUCTURE    */
*/*                SET %RCTLEVEL TO DESIRED STRUCTURE LEVEL.         */
*/*              TO PREVENT STRUCTURE FROM BEING CLOSED,             */
*/*                SET %RCT9999=','.                                 */
*/*                                                                  */
*/********************************************************************/
*/*                                                                  */
*        %GOTO  RCTPLS2;          /*
         AIF   ('&DSECT' EQ 'YES').RCT001
RCT      DS    0D -                RESOURCE CONTROL TABLE
         AGO   .RCT002
.RCT001  ANOP
RCT      DSECT , -                 RESOURCE CONTROL TABLE
.RCT002  ANOP
RCTRCT   DC    CL4'RCT' -         ACRONYM IN EDCDIC -RCT-
*
*        RESOURCE CONTROL CONSTANTS
*
RCCUICTL DC    H'2'               UIC LOW THRESHOLD            @ZM43098
RCCUICTH DC    H'4'               UIC HIGH THRESHOLD           @ZM43098
RCCCPUTL DC    H'1536'            CPU LOW THRESHOLD SHIFTED    @ZM43098
RCCCPUTH DC    H'1615'            CPU HIGH THRESHOLD SHIFTED   @ZM43098
RCCPTRTL DC    H'100'             PAGING RATE LOW THRESHOLD    @ZM43098
RCCPTRTH DC    H'100'             PAGING RATE HIGH THRESHOLD   @ZM43098
RCCASMTL DC    H'7'               ASM QUEUED REQ LOW THRESHOLD @ZM43098
RCCASMTH DC    H'10'              ASM QUEUED REQ HIGH THRSHOLD @ZM43098
RCCTOTUT DC    H'100' -           AVERAGE DEFERRED IO UTILIZATION
*                                 THRESHOLD                    @ZM43083
RCCLCHUT DC    H'100' -           LCH DEFERRED UTILIZATION
*                                 THRESHOLD                    @ZM43083
RCCLCHRR DC    H'50' -            LCH REQUEST RATE THRESHOLD   @ZM43083
RCCRSVF1 DC    H'0' -             RESERVED
RCCRSVF2 DC    F'0' -             RESERVED
RCCRSVF3 DC    F'0' -             RESERVED
*
*        RESOURCE CONTROL VARIABLES
*
RCVCTMC  DC    H'0' -              SAMPLE INTERVAL COUNT
RCVUICA  DC    H'0' -              UIC AVERAGE
RCVCPUA  DC    H'0' -              CPU AVERAGE
RCVAVQC  DC    H'0' -              NUMBER OF AVQ LOWS
RCVASMQA DC    H'0' -              ASM QUEUE LENGTH AVERAGE
RCVPTR   DC    H'0' -              PAGING RATE
RCVUICC  DC    F'0' -              UIC ACCUMULATOR
RCVCPUC  DC    F'0' -              CPU ACCUMULATOR
RCVAVQP  DC    F'0' -              AVQ LOW COUNT SAVE
RCVASMQ  DC    F'0' -              ASM QUEUE LENGTH ACCUMULATOR
RCVBPTCT DC    F'0' -              BASE PAGE FAULT COUNT
RCVBPTTM DC    F'0' -              BASE PAGE FAULT TIME
RCVTOTDF DC    H'0' -              AVERAGE DEFERRED IO UTIL    @ZM43083
RCVRSVF1 DC    H'0' -              RESERVED
RCVTAPAD DC    F'0' -              LAST ALLOCATED TAPE ADDRESS @ZM43099
RCVRSVF2 DC    F'0' -              RESERVED
RCVRSVF3 DC    F'0' -              RESERVED
RCTEND   DS    0D -                END OF RCT
RCTLEN   EQU   RCTEND-RCT -        LENGTH OF RCT
         MEND
*        */
*%RCTPLS2 : ;
*    %IF RCT9999^=','              /* IF THIS IS LAST BLOCK          */
*      %THEN %RCT9999=';';         /* THEN CLOSE DECLARE STATEMENT   */
*    %IF RCTLEVEL^=''              /* IF MINOR LEVEL IS SPECIFIED,   */
*      %THEN %GOTO RCTPLS3;        /* SKIP MAJOR DECLARE             */
*DECLARE                           /*                                */
*  1 RCT BASED(RCTPTR)             /* RESOURCE CONTROL TABLE         */
*    %GOTO RCTPLS4;                /* MAJOR STRUCTURE                */
*%RCTPLS3: RCTDUM=RCTLEVEL' RCT'; /* CONCATENATE AS MINOR STRUCTURE*/
*  RCTDUM                          /* RESOURCE CONTROL TABLE         */
*%RCTPLS4:;
*        BDY(DWORD),
*      5 RCTRCT CHAR(4),           /* ACRONYM IN EBCDIC -RCT-        */
*/*                                                                  */
*/*      RESOURCE CONTROL CONSTANTS                                  */
*/*                                                                  */
*      5 RCCUICTL FIXED(15),       /* UIC THRESHOLD LOW              */
*      5 RCCUICTH FIXED(15),       /* UIC HIGH THRESHOLD             */
*      5 RCCCPUTL FIXED(15),       /* CPU LOW THRESHOLD              */
*      5 RCCCPUTH FIXED(15),       /* CPU HIGH THRESHOLD             */
*      5 RCCPTRTL FIXED(15),       /* PAGING RATE LOW THRESHOLD      */
*      5 RCCPTRTH FIXED(15),       /* PAGING RATE HIGH THRESHOLD     */
*      5 RCCASMTL FIXED(15),       /* ASM QUEUED REQUEST LOW
                                      THRESHOLD                      */
*      5 RCCASMTH FIXED(15),       /* ASM QUEUED REQUEST HIGH
                                      THRESHOLD                      */
*      5 RCCTOTUT FIXED(15),      /* AVERAGE DEFERRED IO UTIL THRESHOLD
*                                                            @ZM43083*/
*      5 RCCLCHUT FIXED(15),      /* LCH DEFERRED UTIL THRESHOLD
*                                                            @ZM43083*/
*      5 RCCLCHRR FIXED(15),       /* LCH REQ RATE THRESHOLD @ZM43083*/
*        5 RCCRSVF1 FIXED(15),      /* RESERVED                      */
*        5 RCCRSVF2 FIXED(31),      /* RESERVED                      */
*        5 RCCRSVF3 FIXED(31),      /* RESERVED                      */
*/*                                                                  */
*/*   RESOURCE CONTROL VARIABLES                                     */
*/*                                                                  */
*      5 RCVCTMC FIXED(15),        /* SAMPLE INTERVALS COUNT         */
*      5 RCVUICA FIXED(15),        /* UIC AVERAGE                    */
*      5 RCVCPUA FIXED(15),        /* CPU USAGE AVERAGE              */
*      5 RCVAVQC FIXED(15),        /* AVQ LOW COUNT                  */
*      5 RCVASMQA FIXED(15),       /* ASM QUEUE LENGTH AVERAGE       */
*      5 RCVPTR FIXED(15),         /* PAGING RATE                    */
*      5 RCVUICC FIXED(31),        /* UIC ACCUMULATOR                */
*      5 RCVCPUC FIXED(31),        /* CPU USAGE ACCUMULATOR          */
*      5 RCVAVQP FIXED(31),        /* AVQ LOW COUNT SAVE AREA        */
*      5 RCVASMQ FIXED(31),        /* ASM QUEUE LENGTH ACCUMULATOR   */
*      5 RCVBPTCT FIXED(31),       /* BASE PAGE FAULT COUNT          */
*      5 RCVBPTTM FIXED(31),       /* BASE PAGE FAULT TIME           */
*      5 RCVTOTDF FIXED(15),       /* AVERAGE DEFERRED IO UTILIZATION
*                                                            @ZM43083*/
*        5 RCVRSVF1 FIXED(15),      /* RESERVED                      */
*        5 RCVTAPAD FIXED(31),      /* LAST ALLOCATED TAPE   @ZM43099*/
*        5 RCVRSVF2 FIXED(31),      /* RESERVED                      */
*        5 RCVRSVF3 FIXED(31),      /* RESERVED                      */
*      5 RCTEND CHAR(0)            /* END OF RCT                     */
*          BDY(DWORD) RCT9999
*%RCTLEN='LENGTH(RCT)';            /* OBTAIN LENGTH OF RCT           */
*@EJECT;
./ ADD NAME=IRARMCA
*        %GOTO RMCAPLS1; /*
         MACRO
         IRARMCA   &DSECT=YES                                        */
*%RMCAPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMCA                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER CONTROL AREA      */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 09/19/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMCA PROVIDES THE STORAGE AREA CONTAINING      */
* /*         SWAP ANALYSIS VARIABLES USED WITHIN THE SYSTEM RE-      */
* /*         SOURCES MANAGER.  AS A RESULT OF USING THE RMCA AS      */
* /*         A WORK AREA, THE IRARMCTL AND IRARMWLM MODULES CAN      */
* /*         BE MADE READ-ONLY.                                      */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE RMCA IS CONTAINED       */
* /*         IN THE -RMCTRMCA- FIELD OF THE SYSTEM RESOURCES         */
* /*         MANAGER CONTROL TABLE.                                  */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RMCAPLS2; /*
         AGO   .RMCAAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*           NOTE - THE BAL FORM OF THE MACRO IS CODED WITH        */
* /*           'DC' INSTRUCTIONS, SO THAT THE MACRO MAY BE USED      */
* /*           TO ASSEMBLE THE INITIAL FIELD VALUES FOR THE          */
* /*           IRARMCNS MODULE, WHICH CONTAINS THE RMCA.             */
* /*                                                                 */
* /*         USING ON RMCA GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RMCALEVL='USERLEVL' IF THE RMCA MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RMCA BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RMCA9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE, DCL RMCAPTR PTR.   */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @ZM43085                                    */
* /*                     @ZA15788                                   */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RMCAAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMCAAL2
RMCA     DSECT
         AGO   .RMCAAL3
.RMCAAL2 ANOP
         DS    0D
RMCA     EQU   *
.RMCAAL3 ANOP
         SPACE 1
RMCANAME DC    C'RMCA' -           BLOCK IDENTIFICATION
RMCAR04  DC    H'0' -              RESERVED
RMCAINUS DC    H'0' -              COUNT OF IN-CORE USERS
RMCARSV1 DC    H'0' -              RESERVED                  @ZM43085
RMCARSV2 DC    H'0' -              RESERVED                  @ZM43085
RMCATQS  DC    F'0' -              SYSTEM QUIESCE TIME
RMCATRS  DC    F'0' -              SYSTEM RESTART TIME
RMCATOI  DC    F'0' -              TIME OF EXPECTED TIMER INTERRUPT
RMCARSV3 DC    F'0' -              RESERVED                  @ZM43085
RMCARSV4 DC    F'0' -              RESERVED                  @ZM43085
RMCARSV5 DC    F'0' -              RESERVED                  @ZM43085
RMCAFLGS DC    1B'00000000' -      SAVEAREA AVAIL. FLAGS     @ZA15788
RMCASAAF EQU   BIT0 -              SIXTH LVL SAVEAREA AVAIL  @ZA15788
         DC    3B'00000000' -       RESERVED                  @ZA15788
RMCARSV7 DC    F'0' -               RESERVED                  @ZM43085
RMCARSV8 DC    F'0' -               RESERVED                  @ZM43085
RMCACHP  DC    X'800000FF' -       CHAP LIST FOR SWAPOUT PRTY  @YM05632
RMCACHU  DC    A(0) -              USER TO BE CHAPPED ON SWAP  @YM05632
RMCARSV9 DC    F'0' -               RESERVED                  @ZM43085
RMCAR10   DC    F'0' -              RESERVED                  @ZM43085
RMCAINV  DC    F'0' -              ROUTINE INVOCATION WORK AREA
RMCAR11  DC    H'0' -               RESERVED                  @ZM43085
RMCAISV  DC    H'1' -              ISV RECOMM. VALUE BOOST     @Z40BPCH
RMCALGPG DC    HL1'2' -            DEF LOGON PERF GROUP NUMBER @Z40BPCH
RMCABCPG DC    HL1'1' -            DEF BATCH PERF GROUP NUMBER @Z40BPCH
RMCAR20  DC    H'0' -              RESERVED                    @Z40BPCH
RMCAMAS  DC    V(IEAMASCB) -       ASCB ADDR FOR MASTER SCHEDULER
RMCAWKA  DC    8F'0' -              NONRESIDENT ROUTINE WORKAREA
RMCAR13 DC    F'0' -               RESERVED                    @ZM43085
RMCAR14  DC    H'0' -              RESERVED                    @ZM43085
RMCACIUS DC    H'0' -              COUNT OF USERS COMING IN    @Z30WIMG
RMCACPW1 DC    F'0' -              CAP WORK AREA               @Z40BPCH
RMCASRC  EQU   *    -              SWAP REASON COUNTS          @Z40BPCH
RMCATOSC DC    F'0' -              TERMINAL OUTPUT SWAP COUNT  @Z40BPCH
RMCATISC DC    F'0' -              TERMINAL INPUT SWAP COUNT   @Z40BPCH
RMCALWSC DC    F'0' -              LONG WAIT SWAP COUNT        @Z40BPCH
RMCAXSSC DC    F'0' -              AUX STOR SHORT SWAP COUNT   @Z40BPCH
RMCARSSC DC    F'0' -              REAL STOR SHORT SWAP COUNT  @Z40BPCH
RMCADWSC DC    F'0' -              DETECTED WAIT SWAP COUNT    @Z40BPCH
RMCARQSC DC    F'0' -              REQSWAP SWAP COUNT          @Z40BPCH
RMCANQSC DC    F'0' -              CAP ENQ EXCHANGE SWAP CNT   @Z40BPCH
RMCAEXSC DC    F'0' -              CAP EXCHANGE BASED ON RECOMMENDATION
*                                  VALUES SWAP COUNT           @Z40BPCH
RMCAUSSC DC    F'0' -              CAP UNILATERAL SWAP OUT CNT @Z40BPCH
*
RMCAR90  DC    F'0' -              RESERVED                    @Z40BPCH
*
RMCAEND  DS    0D -                END OF RMCA
RMCALEN  EQU   RMCAEND-RMCA -      LENGTH OF RMCA
         MEND
*                                                                    */
*%RMCAPLS2:  ;
*        %IF RMCA9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMCA9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RMCALEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RMCAPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RMCA BASED(RMCAPTR) BDY(DWORD),
*            %GOTO RMCAPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RMCAPLS3:  RMCADUM = RMCALEVL' RMCA';  /* PICK UP GIVEN LEVEL    */
*     RMCADUM BDY(DWORD),
*%RMCAPLS4:  ;
*       10 RMCANAME CHAR(4),        /* BLOCK IDENTIFICATION - 'RMCA' */
*       10 RMCAR04  FIXED(15),      /* RESERVED                      */
*       10 RMCAINUS FIXED(15),      /* COUNT OF IN-CORE USERS        */
*       10 RMCARSV1 FIXED(15),      /* RESERVED              @ZM43085*/
*        10 RMCARSV2 FIXED(15),      /* RESERVED              @ZM43085*/
*       10 RMCATQS  FIXED(32) UNSIGNED, /* SYSTEM QUIESCE TIME       */
*       10 RMCATRS  FIXED(32) UNSIGNED, /* SYSTEM RESTART TIME       */
*       10 RMCATOI  FIXED(32) UNSIGNED, /* TIME OF EXPECTD INTERRUPT */
*       10 RMCARSV3 FIXED(32) UNSIGNED, /* RESERVED          @ZM43085*/
*       10 RMCARSV4 FIXED(32) UNSIGNED, /* RESERVED          @ZM43085*/
*       10 RMCARSV5 FIXED,          /* RESERVED              @ZM43085*/
*       10 RMCAFLGS FIXED(32) BDY(WORD),/*SAVEAREA AVAIL. FLAGS
*                                                            @ZA15788*/
*          12 RMCASAAF BIT(1), /* SIXTH LVL SAVEAREA AVAIL. FLG
*                                                            @ZA15788*/
*          12 RMCARSVF BIT(31), /* RESERVED                  @ZA15788*/
*       10 RMCARSV7 FIXED(32) UNSIGNED, /* RESERVED          @ZM43085*/
*       10 RMCARSV8 FIXED(32) UNSIGNED, /* RESERVED          @ZM43085*/
*       10 RMCACHP  CHAR(4) BDY(WORD), /* CHAP LIST FOR SWAP @YM05632*/
*       10 RMCACHU  PTR(31),        /* USER CHAPPED FOR SWAP @YM05632*/
*       10 RMCARSV9 FIXED(32) UNSIGNED, /* RESERVED          @ZM43085*/
*       10 RMCAR10 FIXED(32) UNSIGNED, /* RESERVED           @ZM43085*/
*       10 RMCAINV  BIT(32) BDY(WORD), /* RTNE INVOCATION WORK AREA  */
*       10 RMCAR11 FIXED(15),       /* RESERVED             @ZM43085*/
*       10 RMCAISV  FIXED(16),      /* ISV REC. VALUE BOOST  @Z40BPCH*/
*       10 RMCALGPG PTR(8),         /* DEF LOGON PERF GRP #  @Z40BPCH*/
*       10 RMCABCPG PTR(8),         /* DEF BATCH PERF GRP #  @Z40BPCH*/
*       10 RMCAR20  FIXED(15),      /* RESERVED              @Z40BPCH*/
*       10 RMCAMAS  PTR(31),        /* ASCB ADDR FOR MASTER SCHEDULR */
*       10 RMCAWKA  CHAR(32) BDY(DWORD), /* NONRESIDENT RTN WORKAREA*/
*       10 RMCAR13 FIXED,           /* RESERVED              @ZM43085*/
*       10 RMCAR14 FIXED(15),       /* RESERVED              @ZM43085*/
*       10 RMCACIUS FIXED(15),      /* CT OF USERS COMING IN @Z30WIMG*/
*       10 RMCACPW1 PTR(31),        /* CAP WORK AREA         @Z40BPCH*/
*       10 RMCASRC,                 /* SWAP OUT REASON CNTS. @Z40BPCH*/
*          12 RMCATOSC FIXED(32),     /* TERMINAL OUTPUT SWAP COUNT
*                                                            @Z40BPCH*/
*          12 RMCATISC FIXED(32),     /* TERMINAL OUTPUT SWAP COUNT
*                                                            @Z40BPCH*/
*          12 RMCALWSC FIXED(32),     /* LONG WAIT SWAP COUNT
*                                                            @Z40BPCH*/
*          12 RMCAXSSC FIXED(32),     /* AUT STOR SHORTAGE SWAP COUNT
*                                                            @Z40BPCH*/
*          12 RMCARSSC FIXED(32),     /* REAL STOR SHORTAGE SWAP COUNT
*                                                            @Z40BPCH*/
*          12 RMCADWSC FIXED(32),     /* DETECTED WAIT SWAP COUNT
*                                                            @Z40BPCH*/
*          12 RMCARQSC FIXED(32),     /* REQSWAP SWAP COUNT  @Z40BPCH*/
*          12 RMCANQSC FIXED(32),     /* CAP ENQ EXCHANGE SWAP COUNT
*                                                           @Z40BPCH*/
*          12 RMCAEXSC FIXED(32),     /* CAP EXCHANGE BASED ON RECOMM.
*                                      VALUE SWAP COUNT     @Z40BPCH*/
*          12 RMCAUSSC FIXED(32),     /* CAP UNILATERAL SWAP OUT COUNT
*                                                           @Z40BPCH*/
*       10 RMCAR90 FIXED,             /* RESERVED           @Z40BPCH*/
*
*       10 RMCAEND  CHAR(0) BDY(DWORD)  /* END OF RMCA               */
*   RMCA9999
*   %RMCALEN = 'LENGTH(RMCA)';      /* SYMBOLIC FOR LENGTH OF RMCA   */
./ ADD NAME=IRARMCT
*        %GOTO RMCTPLS1; /*
         MACRO
         IRARMCT &DSECT=YES
         IEZBITS                                                     */
*%RMCTPLS1:  ;
* /*                                                                 */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMCT                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER CONTROL TABLE     */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 10/28/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMCT SERVES AS THE ORIGIN TO LOCATE SYSTEM     */
* /*         RESOURCES MANAGER TABLES AND ENTRY POINTS.  THE RMCT    */
* /*         LOCATES THE SCHEDULING / ROUTING INFORMATION USED TO    */
* /*         INVOKE THE REQUIRED PROCESSING FOR THE VARIOUS SYSTEM   */
* /*         RESOURCES MANAGER FUNCTIONS.                            */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE RMCT IS CONTAINED IN    */
* /*         THE -CVTOPCTP- FIELD OF THE CVT.                        */
* /*                                                                 */
* /*         BY CONVENTION WITHIN THE SYSTEM RESOURCES MANAGER       */
* /*         ROUTINES, REGISTER 2 IS ALWAYS RESERVED TO CONTAIN      */
* /*         THE ADDRESS OF THE RMCT.                                */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RMCTPLS2; /*
         AGO   .RMCTAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*           NOTE - THE BAL FORM OF THE MACRO IS CODED WITH        */
* /*           'DC' INSTRUCTIONS, SO THAT THE MACRO MAY BE USED      */
* /*           TO ASSEMBLE THE INITIAL FIELD VALUES FOR THE          */
* /*           IRARMCNS MODULE, WHICH CONTAINS THE RMCT.             */
* /*                                                                 */
* /*         USING ON RMCT GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RMCTLEVL='USERLEVL' IF THE RMCT MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RMCT BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RMCT9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*           NOTE - INASMUCH AS THE RMCT TABLE APPEARS AT THE      */
* /*           VERY BEGINNING OF THE -IRARMCNS- MODULE, ONLY A       */
* /*           STRUCTURE LEVEL OF '1' (ONE) SHOULD BE USED FOR       */
* /*           THE RMCT.                                             */
* /*                                                                 */
* /*         TO ACCESS THE RMCT AS A DECLARED STRUCTURE,             */
* /*         DCL RMCTPTR PTR.                                        */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @ZM43085                                    */
* /*                     @ZA10831                                    */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RMCTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMCTAL2
RMCT     DSECT
         AGO   .RMCTAL3
.RMCTAL2 ANOP
         DS    0D
RMCT     EQU   *
.RMCTAL3 ANOP
         SPACE 1
RMCTNAME DC    C'RMCT' -           BLOCK IDENTIFICATION
RMCTCCT  DS A  A(CCT) -            CPU MANAGEMENT CONTROL TABLE
RMCTICT  DS A  A(ICT) -            I/O MANAGEMENT CONTROL TABLE
RMCTMCT  DS A  A(MCT) -            STORAGE MANAGEMENT CONTROL TABLE
RMCTRMPT DS A  A(RMPT) -           CTL ALGORITHM PARAMETER TABLE
RMCTRMCA DS A  A(RMCA) -           CTL ALGORITHM CONTROL AREA
RMCTWMST DC    A(0) -              ADDR OF WLM SPECIFICATION TABLE
RMCTRLCT DC    A(0) -              ADDR OF LOGICAL CHANNEL MGMT TABLE
RMCTRMSA DC    A(0) -              ADDR OF RESOURCES MANAGER SAVE AREA
RMCTRMPD DC    A(0) -              ADDR OF RESOURCES MANAGER PERF DATA
RMCTRMEX DS A  A(RMEX) -           ROUTINE EXITING VECTOR TABLE
RMCTRMSB DS A  A(RMSB) -           SUBROUTINE CALLING VECTOR TABLE
RMCTEPPA DS A  A(IRAEPPA) -        PRTL ANALYSIS ENTRY TABLE
RMCTEPDT DS A  A(EPDTSCN) -        USER ACTION ENTRY TABLE
RMCTEPAT DS A  A(EPATSCN) -        ALGORITHM ENTRY TABLE
RMCTEPBG DS A  A(EPAT) -           ADDR OF ALG ENTRY PT TABLE  @ZA10831
RMCTADJC DC    F'0' -              ADJUSTMENT FACTOR FOR CPU RATE
RMCTITT  DS A  V(IRASECHT) -       INTFC EVENT CHARACTERISTICS TABLE
RMCTEPET DS A  V(IRAPRCSR) -       EVENT ROUTING VECTOR TABLE
RMCTFLTM DS A  A(IRAFLTM) -        TIME OF DAY ADJUST VECTOR TABLE
RMCTEPPR DS A  A(IRAEPPR) -        PROCESS RATE DEPENDENT ENTRY TABLE
RMCTWAST DC    A(0) -              ADDR OF WAR SPECIFICATION TABLE
RMCTWAMT DC    A(0) -              ADDR OF WAR MEASUREMENT TABLE
RMCTTMQE DS A  A(IRACTMQE) -       SCHEDULED RTNE QUEUE HEADER ADDR
RMCTAQCT DC    F'0' -              ACTION QUEUE MEMBER COUNT
RMCTAQHD DS A  A(IRAOUCB) -        ACTION QUEUE FORWARD POINTER
RMCTWTQE DS A  A(IRAWTQE) -        WAIT - QUEUE HEADER BLOCK ADDRESS
RMCTOTQE DS A  A(IRAOTQE) -        OUT - QUEUE HEADER BLOCK ADDRESS
RMCTINQE DS A  A(IRAINQE) -        IN - QUEUE HEADER BLOCK ADDRESS
RMCTRCT  DS    A    -              RESOURCE CONTROL TABLE
RMCTEND  DS    0D -                END OF RMCT
RMCTLEN  EQU   RMCTEND-RMCT -      LENGTH OF RMCT
         MEND
*                                                                    */
*%RMCTPLS2:  ;
*        %IF RMCT9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMCT9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RMCTLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RMCTPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RMCT BASED(RMCTPTR) BDY(DWORD),
*            %GOTO RMCTPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RMCTPLS3:  RMCTDUM = RMCTLEVL' RMCT';  /* PICK UP GIVEN LEVEL    */
*     RMCTDUM BDY(DWORD),
*%RMCTPLS4:  ;
*       10 RMCTNAME CHAR(4),        /* BLOCK IDENTIFICATION - 'RMCT' */
*       10 RMCTCCT  PTR(31),        /* CPU MGMT CONTROL TABLE        */
*       10 RMCTICT  PTR(31),        /* I/O MGMT CONTROL TABLE        */
*       10 RMCTMCT  PTR(31),        /* STORAGE MGMT CONTROL TABLE    */
*       10 RMCTRMPT PTR(31),        /* CTL ALGORITHM PARAMETER TBL   */
*       10 RMCTRMCA PTR(31),        /* CTL ALGORITHM CONTROL AREA    */
*       10 RMCTWMST PTR(31),        /* WLM SPECIFICATION TABLE       */
*       10 RMCTRLCT PTR(31),        /* LOGICAL CHANNEL MGMT TABLE    */
*       10 RMCTRMSA PTR(31),        /* RESOURCES MANAGER SAVE AREA   */
*       10 RMCTRMPD PTR(31),        /* RESOURCES MANAGER PERF DATA   */
*       10 RMCTRMEX PTR(31),        /* ROUTINE EXITING VECTOR TABLE  */
*       10 RMCTRMSB PTR(31),        /* SUBRTNE CALLING VECTOR TABLE  */
*       10 RMCTEPPA PTR(31),        /* PRTL ANALYSIS ENTRY TABLE     */
*       10 RMCTEPDT PTR(31),        /* USER ACTION ENTRY TABLE       */
*       10 RMCTEPAT PTR(31),        /* ALGORITHM ENTRY TABLE         */
*       10 RMCTEPBG PTR(31),    /* BEGIN ALG ENTRY PT TABLE  @ZA10831*/
*       10 RMCTADJC FIXED,          /* CPU RATE ADJUSTMENT           */
*       10 RMCTITT  PTR(31),        /* EVENT CHARACTERISTICS TABLE   */
*       10 RMCTEPET PTR(31),        /* EVENT ROUTING VECTOR TABLE    */
*       10 RMCTFLTM PTR(31),        /* TIME OF DAY DEPENDENT TABLE   */
*       10 RMCTEPPR PTR(31),        /* PROCESS RATE DEPENDENT TABLE  */
*       10 RMCTWAST PTR(31),        /* WAR SPECIFICATION TABLE       */
*       10 RMCTWAMT PTR(31),        /* WAR MEASUREMENT TABLE         */
*       10 RMCTTMQE PTR(31),        /* SCHED RTNE QUEUE HEAD ADDR    */
*       10 RMCTAQCT FIXED BDY(DWORD), /* ACTION QUEUE MEMBER COUNT   */
*       10 RMCTAQHD PTR(31),        /* ACTION QUEUE FORWARD POINTER  */
*       10 RMCTWTQE PTR(31),        /* WAIT - QUEUE HEADER ADDRESS   */
*       10 RMCTOTQE PTR(31),        /* OUT - QUEUE HEADER ADDRESS    */
*       10 RMCTINQE PTR(31),        /* IN - QUEUE HEADER ADDRESS     */
*       10 RMCTRCT  PTR(31),        /* ADDR OF RESOURCE C.T.         */
*       10 RMCTEND  CHAR(0) BDY(DWORD)   /* END OF RMCT              */
*   RMCT9999
*   %RMCTLEN = 'LENGTH(RMCT)';      /* SYMBOLIC FOR LENGTH OF RMCT   */
./ ADD NAME=IRARMEP
*%;  /*
         MACRO
&NAME    IRARMEP   &DSECT=YES,     USE OTHER OPRNDS IF DSECT=NO SPECD  *
               &EPN=,              ROUTINE (ENTRY POINT) IDENTIFIER    *
               &ERR=,              ROUTINE RECOVERY POINT IDENTIFIER   *
               &NXT=,              NEXT CHAINED RMEP BLOCK IDENTIFIER  *
               &SCH=,              INTERVAL IF ROUTINE IS TIME DRIVEN  *
               &RCR=               RECURSIVE CALL NEEDED TO GET LOCK
         GBLC  &IRAEPAD            ROUTINE ENTRY POINT ADDRESS NAME
         GBLC  &IRAEPER            ROUTINE RECOVERY POINT ADDR NAME
         GBLC  &IRAEPFL            ROUTINE INVOCATION FLAG MASK
         GBLC  &IRAEPPV            PREV RMEP BLOCK ADDRESS NAME
         GBLC  &IRAEPTM            PREV SCHED RMEP ADDRESS NAME
         GBLB  &IRAEPCM            IRARMEP COMMENTARY PRINT CONTROL
         LCLC  &RMEPFLG            ROUTINE INVOCATION, TYPE FLAGS
         LCLC  &RMEPINT            SCHEDULED ROUTINE INVOCN INTERVAL
         LCLA  &RMEPTYP            ROUTINE TYPE HEX ACCUMULATOR
         AIF   (&IRAEPCM).RMEPAL1  BYPASS DUPLICATE IRARMEP INTRO
         IEZBITS
         AGO   .RMEPAL0
*                                                                    */
*@       LIST  PUSH;                /* SAVE LISTING STATUS FOR RMEP  */
*        %IF RMEPSFX = ''           /* IS NAMING CHARACTER OMITTED   */
*            %THEN %RMEPSFX = ' ';  /* YES, INSERT PLACEHOLDER BLANK */
*        %IF RMEPSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %RMEPDUM = '@       LIST  OFF '; /* BYP INTRO CMT */
*        %ELSE     %RMEPDUM = '@       LIST  PUSH'; /* DMY CNTRL CMT */
*RMEPDUM;
*        %IF RMEPSFX = ' '          /* IS THIS  THE FIRST INCLUDE    */
*            %THEN %RMEPDUM = '@       LIST  POP '; /* PRT INTRO CMT */
*RMEPDUM;
*%;  /*
.RMEPAL0 ANOP                                                        */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMEP                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER ENTRY POINT BLOCK */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 08/01/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMEP DESIGNATES A SYSTEM RESOURCES MANAGER     */
* /*         PROCESSING ROUTINE WHICH MAY BE INVOKED THROUGH THE     */
* /*         CONTROL ALGORITHM.   THE RMEP CONTAINS THE ROUTINE      */
* /*         ENTRY POINT ADDRESS, DEFINES A BIT MASK TO BE USED      */
* /*         TO REQUEST THE ROUTINE, AND OPTIONALLY PROVIDES FOR     */
* /*         PERIODIC EXECUTION OF THE ROUTINE.  THE RMEP BLOCK      */
* /*         CONTAINS FLAGS INDICATING HOW THE DESCRIBED ROUTINE     */
* /*         MAY BE INVOKED.                                         */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE CURRENT RMEP IS IN      */
* /*         THE -RRPAEPA- FIELD OF THE SYSTEM RESOURCES MANAGER     */
* /*         RECOVERY ROUTINE PARAMETER AREA.                        */
* /*                                                                 */
* /* *************************************************************** */
*%;  /*
&IRAEPCM SETB  1                   IRARMEP COMMENTARY WAS PRINTED
         AGO   .RMEPAL1                                              */
*@       LIST  OFF;                 /* BYPASS REMAINING COMMENTARY   */
* /* *************************************************************** */
* /*                                                                 */
* /*   CONSTRUCTION METHOD - THE RMEP LOCATIONS FOR ALGORITHMS -     */
* /*         ROUTINES WITH SYSTEM-WIDE PROCESS EFFECTS - ARE SHOWN   */
* /*         IN THE IRAEPAT MAPPING MACRO.  THE RMEP LOCATIONS FOR   */
* /*         ACTION ROUTINES, WHICH PERFORM PROCESSING FOR A GIVEN   */
* /*         USER, ARE SHOWN IN THE IRAEPDT MAPPING MACRO.           */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*         - OTHERWISE, SEE MACRO INSTRUCTION PROTOTYPE OPERANDS.  */
* /*                                                                 */
* /*           IF DSECT=NO IS NOT CODED, USING ON RMEP WILL GIVE     */
* /*           ADDRESSABILITY TO ALL SYMBOLS.  NO OTHER OPERANDS     */
* /*           ARE REQUIRED IN SUCH CASE BY THE IRARMEP MACRO.       */
* /*                                                                 */
* /*           IF DSECT=NO IS CODED, THE IRARMEP MACRO WILL GEN      */
* /*           'DC' INSTRUCTIONS CONTAINING APPROPRIATE VALUES,      */
* /*           IN ACCORDANCE WITH THE SPECIFIED MACRO OPERANDS.      */
* /*                                                                 */
* /*     PLS - %RMEPSFX='USERCHAR' IF THE INDICATED CHARACTER IS     */
* /*           TO BE APPENDED TO ALL NAMES IN THE MAPPING, THEREBY   */
* /*           PERMITTING MULTIPLE INCLUDES WHICH CREATE DUPLICATE   */
* /*           DEFINITIONS BASED ON DIFFERENT POINTERS.              */
* /*                                                                 */
* /*           NOTE - DUE TO THE MULTIPLE INCLUDE FACILITY FOR THE   */
* /*           IRARMEP MACRO, IT IS NOT POSSIBLE TO CONCATENATE THE  */
* /*           RMEP DECLARATION WITH ANOTHER DECLARATION IN SUCH A   */
* /*           FASHION THAT BOTH ARE BASED ON THE SAME POINTER.      */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE, DCL RMEPPTR PTR.   */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
*%;  /*
.RMEPAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMEPAL2
RMEP     DSECT
RMEPEPB  DS    CL16 -              ENTRY POINT DESCRIPTOR BLOCK
RMEPEPA  DS    A -                 ROUTINE NORMAL ENTRY ADDRESS
RMEPERA  DS    A -                 ROUTINE RECOVERY ENTRY ADDRESS
RMEPFLG  DS    0XL4 -              ROUTINE INVOCATION FLAG FIELD
         DS    XL3 -               ROUTINE INVOCATION FLAG IDENTIFIER
         DS    XL1 -               ROUTINE INVOCATION TYPE IDENTIFIER
RMEPRCR  EQU   BIT5 -              RECURSIVE CALL NEEDED TO GET LOCK
RMEPTMD  EQU   BIT6 -              ROUTINE INVOCATION TIME-DEPENDENT
RMEPACN  EQU   BIT7 -              ROUTINE PROCESS USER LEVEL ACTION
RMEPPRV  DS    A -                 ADDRESS OF PREV BLOCK IN RMEP CHAIN
RMEPEND  DS    0D -                END OF RMEP BASIC ENTRY BLOCK
RMEPSCH  DS    CL16 -              ENTRY POINT SCHEDULING EXTENSION
RMEPFWD  DS    A -                 TIME DRIVEN CHAIN FORWARD POINTER
RMEPBCK  DS    A -                 TIME DRIVEN CHAIN BACKWRD POINTER
RMEPTME  DS    F -                 TIME WHEN ROUTINE TO BE INVOKED
RMEPINT  DS    F -                 ROUTINE INVOCATION INTERVAL
RMEPSND  DS    0D -                END OF RMEP SCHEDULING EXTENSION
RMEPLEN  EQU   RMEPEND-RMEP -      LENGTH OF RMEP
         AGO   .RMEPML4
.RMEPAL2 ANOP
&IRAEPAD SETC  'IRARMNOP'          REINIT TO DUMMY ENTRY POINT NAME
&IRAEPER SETC  'IRARMNOP'          REINIT TO DUMMY RETRY POINT NAME
&IRAEPFL SETC  '00000000'          REINIT TO DUMMY RMEP INVOCN FLAG
         IRAEPNMP  EPN=&EPN,ERR=&ERR  GET ROUTINE ENTRY DESCRIPTION
         AIF   ('&IRAEPAD' EQ 'IRARMNOP').RMEPML4
&RMEPTYP SETA  1                   INIT TO NON-ZERO INDEX
         AIF   ('&NXT' EQ '').RMEPYL1  TEST DEFAULT CHAINING USED
&IRAEPPV SETC  'RMEPB&NXT'         SETUP PREVIOUS CHAINED RMEP NAME
         AIF   ('&NXT'(1,3) NE '000').RMEPYL1  BYP CLR PRV IF NOT END
&IRAEPPV SETC  '00000000'          INIT TO NO PREVIOUS ASSEMBLED RMEP
.RMEPYL1 AIF   ('&RCR' NE 'YES').RMEPYL2  TEST RTNE CRITICAL CALL
&RMEPTYP SETA  &RMEPTYP+4          SETON HEX BIT 1
.RMEPYL2 AIF   ('&SCH' EQ '').RMEPYL3  TEST ROUTINE TIME-DRIVEN
&RMEPTYP SETA  &RMEPTYP+2          SETON HEX BIT 2
.RMEPYL3 AIF   ('&IRAEPFL'(8,1) NE '1').RMEPYL4  TEST USER RTNE
&RMEPTYP SETA  &RMEPTYP+1          SETON HEX BIT 3
.RMEPYL4 ANOP
&RMEPFLG SETC  '&IRAEPFL'(1,7).'0123456789ABCDEF'(&RMEPTYP,1)
         DS    0D
RMEPB&EPN EQU  *
         AIF   ('&NAME' EQ '').RMEPAL3
&NAME    EQU   *
.RMEPAL3 ANOP
*        DS    CL16 -              ENTRY POINT DESCRIPTOR BLOCK
         DC    V(&IRAEPAD) -       ROUTINE NORMAL ENTRY ADDRESS
         DC    V(&IRAEPER) -       ROUTINE RECOVERY ENTRY ADDRESS
         DC    X'&RMEPFLG' -       ROUTINE INVOCATION FLAG IDENTIFIER
         DC    A(&IRAEPPV) -       ADDRESS OF PREV BLOCK IN RMEP CHAIN
&IRAEPPV SETC  'RMEPB&EPN'         SAVE AS PREVIOUS ASSEMBLED RMEP
         AIF   ('&SCH' EQ '').RMEPML4  BYPASS SCHEDULE IF NOT WANT
&RMEPINT SETC  '0000000'(1,8-K'&SCH).'&SCH'  PICK SCHEDULING INTERVAL
*        DS    CL16 -              ENTRY POINT SCHEDULING EXTENSION
         DC    A(0) -              TIME DRIVEN CHAIN FORWARD POINTER
         DC    A(&IRAEPTM) -       TIME DRIVEN CHAIN BACKWRD POINTER
         DC    F'0' -              TIME WHEN ROUTINE TO BE INVOKED
         DC    F'&RMEPINT' -       ROUTINE INVOCATION INTERVAL
&IRAEPTM SETC  'RMEPB&EPN'         SAVE AS PREVIOUS SCHEDULED RMEP
.RMEPML4 ANOP
         MEND
*                                                                    */
*@       LIST  POP;                 /* RESUME LIST STATUS FOR RMEP   */
*        %RMEPLABL = 'RMEP';        /* INITIALIZE THE LABEL VARIABLE */
*        %IF RMEPSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %RMEPLABL = 'RMEP'RMEPSFX; /* RENAME STRUCTURE  */
*        %IF RMEP9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMEP9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %RMEPDUM = RMEPLABL'PTR' ;  /* QUALIFY BASED POINTER NAME */
*   DCL
*     1 RMEPLABL BASED(RMEPDUM) BDY(DWORD),
*         %RMEPLABL = 'RMEPEPB'RMEPSFX       ;
*       10 RMEPLABL CHAR(16) BDY(DWORD), /* ENTRY POINT BLOCK        */
*         %RMEPLABL = 'RMEPEPA'RMEPSFX       ;
*         12 RMEPLABL PTR(31),      /* ENTRY POINT ADDRESS           */
*         %RMEPLABL = 'RMEPERA'RMEPSFX       ;
*         12 RMEPLABL PTR(31),      /* ERROR RETRY POINT ADDRESS     */
*         %RMEPLABL = 'RMEPFLG'RMEPSFX       ;
*         12 RMEPLABL BIT(32) BDY(WORD), /* INVOCATION FLAG MASK     */
*         %RMEPLABL = 'RMEPVFL'RMEPSFX       ;
*           14 RMEPLABL BIT(29),    /* RTNE INVOC FLAG FIELD @Z40BPCH*/
*         %RMEPLABL = 'RMEPRCR'RMEPSFX       ;
*           14 RMEPLABL BIT(01),    /* CRITICAL ALGORITHM INDICATOR  */
*         %RMEPLABL = 'RMEPTMD'RMEPSFX       ;
*           14 RMEPLABL BIT(01),    /* RTNE INVOKE TIME-DEPENDENT    */
*         %RMEPLABL = 'RMEPACN'RMEPSFX       ;
*           14 RMEPLABL BIT(01),    /* RTNE PERFORMS USER LEVL ACTN  */
*         %RMEPLABL = 'RMEPPRV'RMEPSFX       ;
*         12 RMEPLABL PTR(31),      /* ADDRESS OF PREV RMEP BLOCK    */
*         %RMEPLABL = 'RMEPEND'RMEPSFX       ;
*       10 RMEPLABL CHAR(0) BDY(DWORD),  /* END OF BASE RMEP         */
*         %RMEPLABL = 'RMEPSCH'RMEPSFX       ;
*       10 RMEPLABL CHAR(16) BDY(DWORD), /* SCHEDULING EXTENSN       */
*         %RMEPLABL = 'RMEPFWD'RMEPSFX       ;
*         12 RMEPLABL PTR(31),      /* TIME DRIVEN CHAIN FORWRD PTR  */
*         %RMEPLABL = 'RMEPBCK'RMEPSFX       ;
*         12 RMEPLABL PTR(31),      /* TIME DRIVEN CHAIN BCKWRD PTR  */
*         %RMEPLABL = 'RMEPTME'RMEPSFX       ;
*         12 RMEPLABL FIXED(32) UNSIGNED, /* TIME WHEN ENTRY SCHED   */
*         %RMEPLABL = 'RMEPINT'RMEPSFX       ;
*         12 RMEPLABL FIXED(32) UNSIGNED, /* INVOCATION INTERVAL     */
*         %RMEPLABL = 'RMEPSND'RMEPSFX       ;
*       10 RMEPLABL CHAR(0) BDY(DWORD)   /* END OF SCHD RMEP         */
*   RMEP9999
*   %RMEPLEN = 'LENGTH(RMEPEPB)' ;
./ ADD NAME=IRARMEX
*        %GOTO RMEXPLS1; /*
         MACRO
         IRARMEX   &DSECT=YES
         GBLC  &IRAEPPV            PREV RMEP BLOCK ADDRESS NAME
         GBLB  &IRAEPCM            IRARMEP COMMENTARY PRINT CONTROL
&IRAEPPV SETC  '00000000'          INIT TO NO PREVIOUS CHAINED RMEP
&IRAEPCM SETB  1                   BYPASS IRARMEP HEADER COMMENTARY
.*                                                                   */
*%RMEXPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMEX                                          */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER EXTERNAL          */
* /*                      ENTRY POINT DESCRIPTOR TABLE.              */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 07/30/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMEX CONTAINS THE ENTRY POINT DESCRIPTORS OF   */
* /*         ALL EXTERNALLY ENTERED BRANCH POINTS (ROUTINES WHICH    */
* /*         DO NOT RETURN CONTROL) WITHIN THE SYSTEM RESOURCES      */
* /*         MANAGER COMPONENT.  THE IRACTLCL MACRO KEYS OFF THE     */
* /*         RMEX DISPLACEMENTS TO ROUTE CONTROL TO THE REQUESTED    */
* /*         BRANCH (I.E. EXTERNAL ENTRY) POINT.                     */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE RMEX IS CONTAINED IN    */
* /*         THE -RMCTRMEX- FIELD OF THE SYSTEM RESOURCES MANAGER    */
* /*         CONTROL TABLE.                                          */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RMEXPLS2; /*
         AGO   .RMEXAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON RMEX GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RMEXLEVL='USERLEVL' IF THE RMEX MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RMEX BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RMEX9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL RMEXPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RMEXAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMEXAL2
RMEX     DSECT
         AGO   .RMEXAL3
.RMEXAL2 ANOP
         DS    0D
RMEX     EQU   *
.RMEXAL3 ANOP
         SPACE 1
RMEXEVT  IRARMEP   DSECT=NO,EPN=EVT,NXT=EVT,ERR=XVT
RMEXCTL  IRARMEP   DSECT=NO,EPN=CTL,NXT=CTL,ERR=XTL
         SPACE 1
RMEXI01  DC    V(IRARMI01) -       RTNE TO EXIT FROM SYSTM RSRCS MGR
RMEXCXX  DC    A(0) -              RESERVED
RMEXCET  DC    V(IRARMCET) -       SYSTM RSRCS MGR TIMEREXP PROCESS
RMEXI48  DC    V(IRARMI48) -       SYSTM RSRCS MGR SYSEVENT PROCESS
RMEXRR1  DC    V(IRARMRR1) -       RECOVERY RTNE IF NOT HOLD SRM LOCK
RMEXRR2  DC    V(IRARMRR2) -       RECOVERY RTNE IF HAVE GOT SRM LOCK
RMEXXPE  DC    V(IRARMXPE) -       RECOVERY RTNE IF XMPOST ERROR
RMEXSRE  DC    V(IRARMSRE) -       RECOVERY RTNE IF SRM SRB IS PURGED
RMEXEND  DS    0D -                END OF RMEX TABLE
RMEXLEN  EQU   RMEXEND-RMEX -      LENGTH OF RMEX TABLE
         MEND
*                                                                    */
*%RMEXPLS2:  ;
*        %IF RMEX9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMEX9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RMEXLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RMEXPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RMEX BASED(RMEXPTR) BDY(DWORD),
*            %GOTO RMEXPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RMEXPLS3:  RMEXDUM = RMEXLEVL' RMEX';  /* PICK UP GIVEN LEVEL    */
*     RMEXDUM BDY(DWORD),
*%RMEXPLS4:  ;
*       10 RMEPBEVT CHAR(16) BDY(DWORD), /* PERFORM SYSEVENT PROCESS */
*         12 RMEXEVT PTR(31),       /* EVT RTNE ENTRY POINT ADDRESS  */
*       10 RMEPBCTL CHAR(16) BDY(DWORD), /* ROUTE CONTROL WITHIN SRM */
*         12 RMEXCTL PTR(31),       /* CTL RTNE ENTRY POINT ADDRESS  */
*       10 RMEXI01  PTR(31),        /* NORM EXIT FROM SRM PROCESSING */
*       10 RMEXCXX  PTR(31),        /* RESERVED                      */
*       10 RMEXCET  PTR(31),        /* SRM TIMEREXP PROCESS ENTRY PT */
*       10 RMEXI48  PTR(31),        /* SRM SYSEVENT PROCESS ENTRY PT */
*       10 RMEXRR1  PTR(31),        /* RECOVERY RTNE IF W/O SRM LOCK */
*       10 RMEXRR2  PTR(31),        /* RECOVERY RTNE IF HAV SRM LOCK */
*       10 RMEXXPE  PTR(31),        /* RECOVERY RTNE IF XM-POST FAIL */
*       10 RMEXSRE  PTR(31),        /* RECOVERY RTNE IF SRM SRB PURG */
*       10 RMEXEND  CHAR(0) BDY(DWORD) /* END OF RMEX TABLE          */
*   RMEX9999
*   %RMEXLEN = 'LENGTH(RMEX)';      /* SYMBOLIC FOR LENGTH OF RMEX   */
./ ADD NAME=IRARMPT
*        %GOTO RMPTPLS1; /*
         MACRO
         IRARMPT &DSECT=YES                                          */
*%RMPTPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMPT                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER PARAMETER TABLE   */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 08/01/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMPT CONTAINS VALUES USED BY THE SYSTEM        */
* /*         RESOURCES MANAGER CONTROL ALGORITHM TO DETERMINE        */
* /*         THE CRITERIA AND THE FREQUENCY OF SWAP ANALYSIS.        */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE RMPT IS CONTAINED       */
* /*         IN THE -RMCTRMPT- FIELD OF THE SYSTEM RESOURCES         */
* /*         MANAGER CONTROL TABLE.                                  */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RMPTPLS2; /*
         AGO   .RMPTAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*           NOTE - THE BAL FORM OF THE MACRO IS CODED WITH        */
* /*           'DC' INSTRUCTIONS, SO THAT THE MACRO MAY BE USED      */
* /*           TO ASSEMBLE THE INITIAL FIELD VALUES FOR THE          */
* /*           IRARMCNS MODULE, WHICH CONTAINS THE RMPT.             */
* /*                                                                 */
* /*         USING ON RMPT GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RMPTLEVL='USERLEVL' IF THE RMPT MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RMPT BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RMPT9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE, DCL RMPTPTR PTR.   */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @ZM43084                                    */
* /*                     @ZM43085                                    */
* /*                     @ZM43090                                    */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RMPTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMPTAL2
RMPT     DSECT
         AGO   .RMPTAL3
.RMPTAL2 ANOP
         DS    0D
RMPT     EQU   *
.RMPTAL3 ANOP
         SPACE 1
RMPTNAME DC    C'RMPT' -           BLOCK IDENTIFICATION
RMPTCPU  DC    F'1' -     CPU RESOURCE FACTOR COEFFICIENT @ZM43084
RMPTIOC  DC    F'1' -       I/O RESOURCE FACTOR COEFFICIENT @ZM43084
RMPTERV  DC    F'1' -              ENQ RESIDENCY CPU SERVICE VALUE
RMPTIMN  DC    F'100' -            MINIMUM FOR INTERVAL SERVICE VALUE
RMPTTCS  DC    F'81920000' -       SYSTEM CLOCK STEP TIME
RMPTTOM  DC    F'1000' -           TOLERANCE FOR TIME PERIOD   @ZM43090
RMPTTOL  DC    F'500' -            TOLERANCE FOR TIME-DRIVEN   @ZM43090
RMPTRSV1  DC    F'0' -              RESERVED                   @ZM43085
RMPTRSV2  DC    H'0' -              RESERVED                   @ZM43085
RMPTRSV3 DC    H'0'  -             RESERVED                    @ZM43085
RMPTXCHT DC    F'256' -            SWAP EXCHANGE THRESHOLD     @Z40BPCH
RMPTSAET DC    F'1000' -           SWAP ANALYSYS EVALUATION THRESHOLD
*                                  (UNSIGNED TIME VALUE)       @Z40BPCH
RMPTWMET DC    F'1000' -           WLM EVALUATION THRESHOLD    @Z40BPCH
*                                  (UNSIGNED TIME VALUE)       @Z40BPCH
RMPTCPET DC    F'1000'             CPU EVALUATION THRESHOLD    @Z40BPCH
*                                  UNSIGNED TIME VALUE         @Z40BPCH
RMPTIOET DC    F'1000'             I/0 EVALUATION THRESHOLD    @Z40BPCH
*                                  UNSIGNED TIME VALUE         @Z40BPCH
RMPTOPC  DC    CL3'0.1'            CPU RESOURCE FACTOR COEF.   @ZM43084
RMPTOPI  DC    CL3'0.1'            I/O RESOURCE FACTOR COEF.   @ZM43084
RMPTOPE  DC    CL6'000001'         ENQ RESIDENCY CPU SERV. VAL @Z40BPCH
RMPTEND  DS    0D -                END OF RMPT
RMPTLEN  EQU   RMPTEND-RMPT -      LENGTH OF RMPT
         MEND
*                                                                    */
*%RMPTPLS2:  ;
*        %IF RMPT9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMPT9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RMPTLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RMPTPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RMPT BASED(RMPTPTR) BDY(DWORD),
*            %GOTO RMPTPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RMPTPLS3:  RMPTDUM = RMPTLEVL' RMPT';  /* PICK UP GIVEN LEVEL    */
*     RMPTDUM BDY(DWORD),
*%RMPTPLS4:  ;
*       10 RMPTNAME CHAR(4),        /* BLOCK IDENTIFICATION - 'RMPT' */
*       10 RMPTCPU  FIXED,          /* CPU RESOURCE FACTOR           */
*       10 RMPTIOC  FIXED,          /* I/O RESOURCE FACTOR           */
*       10 RMPTERV  FIXED,          /* ENQ RESIDENCE INTERVAL VALUE  */
*       10 RMPTIMN  FIXED,          /* MIN INTERVAL SERVICE VALUE    */
*       10 RMPTTCS  FIXED(32) UNSIGNED, /* SYSTEM CLOCK STEP TIME    */
*       10 RMPTTOM  FIXED(32) UNSIGNED, /* TIME DRIVEN MINIMUM
*                                          TOLERANCE         @ZM43090*/
*       10 RMPTTOL  FIXED(32) UNSIGNED, /* TIME DRIVEN INVOKE
*                                          TOLERANCE         @ZM43090*/
*       10 RMPTRSV1 FIXED(32) UNSIGNED, /* RESERVED          @ZM43085*/
*       10 RMPTRSV2 FIXED(15),      /* RESERVED              @ZM43085*/
*       10 RMPTRSV3 PTR(15),        /* RESERVED              @ZM43085*/
*       10 RMPTXCHT FIXED(31),      /* SWAP EXCHANGE THRESH. @Z40BPCH*/
*       10 RMPTSAET FIXED(32),      /* SWAP ANAL. EVALUATION THRES.  */
*                                   /* (UNSIGNED TIME VALUE) @Z40BPCH*/
*       10 RMPTWMET FIXED(32),      /* WLM EVALUATION THRESH @Z40BPCH*/
*                                   /* (UNSIGNED TIME VALUE  @Z40BPCH*/
*       10 RMPTCPET FIXED(32),      /* CPU EVALUATION THRESHOLD
*                                     UNSIGNED TIME VALUE    @Z40BPCH*/
*       10 RMPTIOET FIXED(32),       /* I/0 EVALUATION THRESHOLD
*                                        UNSIGNED TIME VALUE @Z40BPCH*/
*       10 RMPTOPC CHAR(3),         /* CPU RESOURCE FACTOR   @Z40BPCH*/
*                                   /* COEFFICIENT           @Z40BPCH*/
*       10 RMPTOPI CHAR(3),         /* I/O RESOURCE FACTOR   @Z40BPCH*/
*                                   /* COEFFICIENT           @Z40BPCH*/
*       10 RMPTOPE CHAR(6),         /* ENQ RES CPU SERV VALU @Z40BPCH*/
*       10 RMPTEND  CHAR(0) BDY(DWORD)   /* END OF RMPT              */
*   RMPT9999
*   %RMPTLEN = 'LENGTH(RMPT)';      /* SYMBOLIC FOR LENGTH OF RMPT   */
./ ADD NAME=IRARMQH
*%;  /*
         MACRO
&NAME    IRARMQH   &DSECT=YES,     USE OTHER OPRNDS IF DSECT=NO SPECD  *
               &QUE=               QUEUE (HEADER BLOCK) IDENTIFIER
.*
         GBLB  &IRAQHCM            IRARMQH COMMENTARY PRINT CONTROL
         AIF   (&IRAQHCM).RMQHAL1  BYPASS DUPLICATE IRARMQH INTRO
         IEZBITS                   INVOKE STANDARD BIT DECLARATIONS
*                                                                    */
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40PBSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMQH                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER QUEUE HEADER BLK  */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 10/05/73, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMQH SERVES AS A DUMMY MEMBER ON THE SYSTEM    */
* /*         RESOURCES MANAGER QUEUE IT DESCRIBES.  IT IS USED       */
* /*         AS A STARTING POINT TO SEARCH THAT QUEUE, AND IT        */
* /*         SIMPLIFIES DOUBLE-CHAINING IF THE QUEUE IS EMPTY.       */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESSES OF THE VARIOUS RMQH BLOCKS   */
* /*         ARE CONTAINED IN THE RESPECTIVE -RMCTXXQE- FIELDS OF    */
* /*         THE SYSTEM RESOURCES MANAGER CONTROL TABLE.             */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RMQHPLS2; /*
&IRAQHCM SETB  1                   IRARMQH COMMENTARY WAS PRINTED
         AGO   .RMQHAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*         - OTHERWISE, QUE='IDQE' TO SPECIFY THE QUEUE ID,        */
* /*           WHERE 'ID' ARE TWO SUPPLIED CHARACTERS, AND           */
* /*           'QE' ARE THE CHARACTERS 'Q' AND 'E'.                  */
* /*                                                                 */
* /*           IF DSECT=NO IS NOT CODED, USING ON RMQH WILL GIVE     */
* /*           ADDRESSABILITY TO ALL SYMBOLS.                        */
* /*                                                                 */
* /*           IF DSECT=NO IS CODED, THE IRARMQH MACRO WILL GENER    */
* /*           'DC' INSTRUCTIONS, SO THAT THE MACRO MAY BE USED TO   */
* /*           ASSEMBLE INITIAL RMQH FIELD VALUES INTO THE IRARMCNS  */
* /*           MODULE, WHICH CONTAINS THE VARIOUS RMQH BLOCKS.       */
* /*                                                                 */
* /*     PLS - %RMQHLEVL='USERLEVL' IF THE RMQH MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RMQH BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RMQH9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL RMQHPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /* *************************************************************** */
* /*
.RMQHAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMQHAL2
RMQH     DSECT
RMQHNAME DS    CL4 -               QUEUE IDENTIFICATION
RMQHFWD  DS    A -                 QUEUE FORWARD POINTER
RMQHBCK  DS    A -                 QUEUE BCKWARD POINTER
RMQHQVL  DS    F -                 QUEUE ENTRY ORDERING VALUE
RMQHFLG  DS    0CL4 -              QUEUE ENTRY DESCRIPTOR FLAGS
RMQHQFL  DS    BL1 -               QUEUE TRANSITION FLAGS
RMQHGOB  EQU   BIT2 -              TRANSITIONING BETWEEN QUEUES
RMQHSFL  DS    BL1 -               QUEUE CONTINUATION FLAGS
RMQHSCN  EQU   BIT7 -              QUEUE TERMINATION MARK
RMQHYFL  DS    BL1 -               QUEUE ENTRY TYPE FLAGS
RMQHAFL  DS    BL1 -               QUEUE ENTRY PROCESSING FLAGS
RMQHLST  DS    A -                 QUEUE LAST USED ENTRY POINTER
RMQHEND  DS    0D -                END OF RMQH
RMQHLEN  EQU   RMQHEND-RMQH -      LENGTH OF RMQH
         AGO   .RMQHAL4
.RMQHAL2 ANOP
         DS    0D
IRA&QUE  EQU   *
         AIF   ('&NAME' EQ '').RMQHAL3
&NAME    EQU   *
.RMQHAL3 ANOP
         SPACE 1
         DS    0CL24 -             QUEUE HEADER BLOCK
         DC    C'&QUE' -           QUEUE IDENTIFICATION
         DC    A(IRA&QUE) -        QUEUE FORWARD POINTER
         DC    A(IRA&QUE) -        QUEUE BCKWARD POINTER
         DC    X'FFFFFFFF' -       QUEUE ENTRY ORDERING VALUE
         DC    X'00010000' -       QUEUE ENTRY DESC FLAGS      @Z40BPCH
         DC    A(IRA&QUE) -        QUEUE LAST USED ENTRY POINTER
.RMQHAL4 ANOP
         MEND
*                                                                    */
*%RMQHPLS2:  ;
*        %IF RMQH9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMQH9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RMQHLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RMQHPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RMQH BASED(RMQHPTR) BDY(DWORD),
*            %GOTO RMQHPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RMQHPLS3:  RMQHDUM = RMQHLEVL' RMQH';  /* PICK UP GIVEN LEVEL    */
*     RMQHDUM BDY(DWORD),
*%RMQHPLS4:  ;
*       10 RMQHNAME CHAR(4),        /* QUEUE IDENTIFICATION          */
*       10 RMQHFWD  PTR(31),        /* QUEUE FORWARD POINTER         */
*       10 RMQHBCK  PTR(31),        /* QUEUE BCKWARD POINTER         */
*       10 RMQHQVL  FIXED UNSIGNED, /* QUEUE ENTRY ORDERING VALUE    */
*       10 RMQHFLG  BIT(32) BDY(WORD), /* QUE ENTRY DESCRIPTR FLAGS  */
*         12 RMQHQFL  BIT(8),       /* QUEUE TRANSITION FLAGS        */
*           14 RMQHQR0 BIT(2),      /* RESERVED                      */
*           14 RMQHGOB BIT(1),      /* TRANSITIONING BETWEEN QUEUES  */
*           14 RMQHQR3 BIT(5),      /* RESERVED                      */
*         12 RMQHSFL  BIT(8),       /* QUEUE CONTINUATION FLAGS      */
*           14 RMQHSR0 BIT(7),      /* RESERVED                      */
*           14 RMQHSCN BIT(1),      /* QUEUE TERMINATOR MARK         */
*         12 RMQHYFL  BIT(8),       /* QUEUE ENTRY TYPE FLAGS        */
*         12 RMQHAFL  BIT(8),       /* QUEUE ENTRY PROCESS FLAGS     */
*       10 RMQHLST  PTR(31),        /* QUE LAST USED ENTRY POINTER   */
*       10 RMQHEND  CHAR(0) BDY(DWORD)   /* END OF RMQH              */
*   RMQH9999
*   %RMQHLEN = 'LENGTH(RMQH)';      /* SYMBOLIC FOR LENGTH OF RMQH   */
./ ADD NAME=IRARMSB
*        %GOTO RMSBPLS1; /*
         MACRO
         IRARMSB &DSECT=YES                                          */
*%RMSBPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARMSB                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - RESOURCES MANAGER SUBROUTINE VECTOR TABLE  */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 07/30/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RMSB CONTAINS THE ENTRY POINT ADDRESSES OF     */
* /*         ALL EXTERNALLY ENTERED SUBROUTINES (ROUTINES WHICH      */
* /*         RETURN CONTROL TO THE INVOKER) WITHIN THE SYSTEM        */
* /*         RESOURCES MANAGER COMPONENT.  THE IRACTLCL MACRO        */
* /*         KEYS OFF THE RMSB DISPLACEMENTS TO ROUTE CONTROL        */
* /*         TO THE REQUESTED SUBROUTINE.                            */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE RMSB IS CONTAINED IN    */
* /*         THE -RMCTRMSB- FIELD OF THE SYSTEM RESOURCES MANAGER    */
* /*         CONTROL TABLE.                                          */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RMSBPLS2; /*
         AGO   .RMSBAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*           NOTE - THE BAL FORM OF THE MACRO IS CODED WITH        */
* /*           'DC' INSTRUCTIONS, SO THAT THE MACRO MAY BE USED      */
* /*           TO ASSEMBLE THE INITIAL FIELD VALUES INTO THE         */
* /*           IRARMCNS MODULE, WHICH CONTAINS THE RMSB TABLE.       */
* /*                                                                 */
* /*         USING ON RMSB GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RMSBLEVL='USERLEVL' IF THE RMSB MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RMSB BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RMSB9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL RMSBPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @ZA15018                                    */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RMSBAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RMSBAL2
RMSB     DSECT
         AGO   .RMSBAL3
.RMSBAL2 ANOP
         DS    0D
RMSB     EQU   *
.RMSBAL3 ANOP
         SPACE 1
RMSBI02  DC    V(IRARMI02) -       RTNE TO INVOKE ASCBCHAP SERVICE
RMSBI03  DC    V(IRARMI03) -       RTNE TO INVOKE REAL FRAME STEAL
RMSBI04  DC    V(IRARMI04) -       RTNE TO INVOKE STORAGE GET/FREE
RMSBI05  DC    V(IRARMI05) -       RTNE TO INVOKE TIME INTERVL SET
RMSBI06  DC    V(IRARMI06) -       RTNE TO INVOKE QUIESCE FOR SWAPOUT
RMSBI07  DC    V(IRARMI07) -       RTNE TO INVOKE SCHEDULE OF SWAP-IN
RMSBR24  DC    A(0) -              RESERVED
RMSBI09  DC    V(IRARMI09) -       RTNE TO INVOKE RECORD TO OPERATOR
RMSBI10  DC    V(IRARMI10) -       RTNE TO INVOKE ABNORML TERMINATION
RMSBCRL  DC    V(IRARMCRL) -       RTNE TO RECEIVE SYS ALGRTHM REQ
RMSBCRN  DC    V(IRARMCRN) -       RTNE TO RECEIVE USER ACTION REQ
RMSBCRY  DC    V(IRARMCRY) -       RTNE TO RECEIVE USER ANLYZE REQ
RMSBWM5  DC    V(IRARMWM5) -       RTNE TO CHCK USER PERIOD CHANGES
RMSBWM1  DC    V(IRARMWM1) -       RTNE TO CALC USER SERVICE AMOUNT
RMSBWM4  DC    V(IRARMWM4) -       RTNE TO CALC USER NORMALIZD LEVL
RMSBWMK  DC    V(IRARMWMK) -       RTNE TO DETERMINE ANALYZ APPLICABL
RMSBWMN  DC    V(IRARMWMN) -       RTNE TO START A NEW USER TRANSACTN
RMSBWMO  DC    V(IRARMWMO) -       RTNE TO STOP CURRNT USER TRANSACTN
RMSBWMQ  DC    V(IRARMWMQ) -       RTNE TO PROCESS QUIESCE CMPLT EVT
RMSBWMR  DC    V(IRARMWMR) -       RTNE TO PROCESS RESTORE CMPLT EVT
RMSBWMY  DC    V(IRARMWMY) -       RTNE TO PROCESS SYSTM TIME ADJUST
RMSBTRC  DC    V(IRARMTRC) -       ADDR OF ADDR TO TRACE
*                                   SRM INVOKES              @ZA15018
RMSBWR4  DC    V(IRARMNOP) -       ADDR OF RTNE TO CALC ACTIVTY MEASR
RMSBWR6  DC    V(IRARMNOP) -       ADDR OF RTNE TO RECALC ACTIV RATE
RMSBSET  DC    V(IRARMNOP) -       ADDR OF RTNE TO PROCESS NEWIPS EVT
RMSBNOP  DC    V(IRARMNOP) -       RTNE TO RETURN TO INVOKER
RMSBRA6  DC    A(0) -              RESERVED
RMSBCL0  DC    V(IRARMCL0) -       RTNE TO ADJ CPU UTIL WHEN SWAP USR
RMSBIL0  DC    V(IRARMIL0) -       RTNE TO COMPUTE USER I/O PROFILE
RMSBRA9  DC    F'0' -              RESERVED                    @Z40BPCH
RMSBEND  DS    0D -                END OF RMSB TABLE
RMSBLEN  EQU   RMSBEND-RMSB -      LENGTH OF RMSB TABLE
         MEND
*                                                                    */
*%RMSBPLS2:  ;
*        %IF RMSB9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RMSB9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RMSBLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RMSBPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RMSB BASED(RMSBPTR) BDY(DWORD),
*            %GOTO RMSBPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RMSBPLS3:  RMSBDUM = RMSBLEVL' RMSB';  /* PICK UP GIVEN LEVEL    */
*     RMSBDUM BDY(DWORD),
*%RMSBPLS4:  ;
*       10 RMSBI02  PTR(31),        /* INVOKE ASCBCHAP SERVICE RTNE  */
*       10 RMSBI03  PTR(31),        /* INVOKE REAL FRAME STEAL RTNE  */
*       10 RMSBI04  PTR(31),        /* INVOKE STORAGE GET/FREE RTNE  */
*       10 RMSBI05  PTR(31),        /* INVOKE TIME INTERVL SET RTNE  */
*       10 RMSBI06  PTR(31),        /* INVOKE QUIESCE FOR SWAPOUT    */
*       10 RMSBI07  PTR(31),        /* INVOKE SCHEDULE OF SWAP-IN    */
*       10 RMSBR24  PTR(31),        /* RESERVED                      */
*       10 RMSBI09  PTR(31),        /* INVOKE RECORD TO OPERATOR     */
*       10 RMSBI10  PTR(31),        /* INVOKE ABNORMAL TERMINATION   */
*       10 RMSBCRL  PTR(31),        /* RECEIVE SYS ALGRTHM REQUEST   */
*       10 RMSBCRN  PTR(31),        /* RECEIVE USER ACTION REQUEST   */
*       10 RMSBCRY  PTR(31),        /* RECEIVE USER ANLYZE REQUEST   */
*       10 RMSBWM5  PTR(31),        /* CHECK USER FOR PERIOD CHANGE  */
*       10 RMSBWM1  PTR(31),        /* CALCULAT USER SERVICE AMOUNT  */
*       10 RMSBWM4  PTR(31),        /* CALCULAT USER NORMALIZD LEVL  */
*       10 RMSBWMK  PTR(31),        /* DETERMINE ANLZ APPLICABILITY  */
*       10 RMSBWMN  PTR(31),        /* START A NEW USER TRANSACTION  */
*       10 RMSBWMO  PTR(31),        /* STOP CURRNT USER TRANSACTION  */
*       10 RMSBWMQ  PTR(31),        /* PROCESS QUIESCE CMPLT EVENT   */
*       10 RMSBWMR  PTR(31),        /* PROCESS RESTORE CMPLT EVENT   */
*       10 RMSBWMY  PTR(31),        /* PROCESS SYSTEM TIME ADJUST    */
*       10 RMSBTRC  PTR(31),    /* ADDR OF ADDR TO TRACE SRM INVOKES
*                                                            @ZA15018*/
*       10 RMSBWR4  PTR(31),        /* CALCULATE ACTIVITY MEASRMNT   */
*       10 RMSBWR6  PTR(31),        /* RECALCULATE ACTIVITY RATE     */
*       10 RMSBSET  PTR(31),        /* PROCESS NEWIPS SYSEVENT RTN   */
*       10 RMSBNOP  PTR(31),        /* RETURN TO INVOKING ROUTINE    */
*       10 RMSBRA6  PTR(31),        /* RESERVED                      */
*       10 RMSBCL0  PTR(31),        /* ADJ CPU UTIL WHEN SWAP USER   */
*       10 RMSBIL0  PTR(31),        /* COMPUTE USER I/O PROFILE      */
*       10 RMSBRA9  PTR(31),        /* RESERVED              @Z40BPCH*/
*       10 RMSBEND  CHAR(0) BDY(DWORD) /* END OF RMSB TABLE          */
*   RMSB9999
*   %RMSBLEN = 'LENGTH(RMSB)';      /* SYMBOLIC FOR LENGTH OF RMSB   */
./ ADD NAME=IRARQSRV
*        %GOTO RQSVPLS1; /*
         MACRO
         IRARQSRV &DSECT=YES                                         */
*%RQSVPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARQSRV                                         */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - REQUEST SERVICE STORAGE AREA               */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 04/07/76, LEVEL=2                  */
* /*                                                                 */
* /*   FUNCTION - THE RQSV PROVIDES A STORAGE AREA TO TEMPORARILY    */
* /*         SAVE INFORMATION GATHERED BY SYSEVENT 49 SO THAT IT CAN */
* /*         LATER STORE IT INTO SMF AREA UNDER A DIFFERENT KEY.     */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE RQSV IS CONTAINED IN    */
* /*         THE -RMCTRQSV- FIELD OF THE SYSTEM RESOURCES MANAGER    */
* /*         CONTROL TABLE.                                          */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RQSVPLS2; /*
         AGO   .RQSVAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON RQSV GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RQSVLEVL='USERLEVL' IF THE RQSV MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           RQSV BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %RQSV9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL RQSVPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                        @Z40BPEB*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RQSVAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RQSVAL2
RQSV     DSECT
         AGO   .RQSVAL3
.RQSVAL2 ANOP
         DS    0D
RQSV     EQU   *
.RQSVAL3 ANOP
         SPACE 1
RQSVDATA DS    0F                 STORAGE FOR EVENT 49      @ZM43092
         ORG   RQSVDATA                                     @ZM43092
RQSVSRV  DS    F -                 TRANSACTION SERVICE
RQSVTIM  DS    F -                 TRANSACTION ACTIVE TIME
RQSVPGSC DS    F -                 PGN AND TRANSACTION COUNT
RQSVSRT  DS    F -                 SESSION RESIDENCY TIME
RQSVRSV  DS    F -                 RESERVED FOR FUTURE
RQSVEND  DS    0D -                END OF RQSV
RQSVLEN  EQU   RQSVEND-RQSV -      LENGTH OF RQSV
         MEND
*                                                                    */
*%RQSVPLS2:  ;
*        %IF RQSV9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RQSV9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RQSVLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RQSVPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RQSV BASED(RQSVPTR) BDY(WORD),
*            %GOTO RQSVPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RQSVPLS3:  RQSVDUM = RQSVLEVL' RQSV';  /* PICK UP GIVEN LEVEL    */
*     RQSVDUM BDY(WORD),
*%RQSVPLS4:  ;
*     5  RQSVDATA CHAR(16) BDY(WORD),  /* SMF DATA AREA      @ZM43092*/
*      10 RQSVSRV FIXED(31),     /* TOTAL TRANSACTION SERVICE     */
*      10 RQSVTIM FIXED(31),     /* TRANSACTION ACTIVE TIME       */
*       10 RQSVPGSC CHAR(4) BDY(WORD), /* PGN AND TRANSACTION COUNT */
*          15 RQSVPGN FIXED(15),   /* PEFORMANCE GROUP NUMBER     */
*          15 RQSVTRC FIXED(15),   /* TRANSACTION COUNT           */
*       10 RQSVSRT FIXED(31),      /* SESSION RESIDENCY TIME      */
*     5    RQSVRSV FIXED(31),         /* RESERVED                 */
*     5    RQSVEND CHAR(0)            /* END OF STORAGE AREA         */
*   RQSV9999
*   %RQSVLEN = 'LENGTH(RQSV)';      /* SYMBOLIC FOR LENGTH OF RQSV   */
./ ADD NAME=IRARRPA
*        %GOTO RRPAPLS1; /*
         MACRO
         IRARRPA   &DSECT=YES
         IEZBITS                                                     */
*%RRPAPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRARRPA                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - SYSTEM RESOURCES MANAGER RECOVERY ROUTINE  */
* /*                      PARAMETER AREA                             */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 10/28/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE RRPA IDENTIFIES THE INVOCATION THAT RESULTED   */
* /*         IN SYSTEM RESOURCES MANAGER PROCESSING, AND SPECIFIES   */
* /*         THE INTERNAL ROUTINE CURRENTLY IN CONTROL.  THE RRPA    */
* /*         PRESERVES STATUS FOR EXIT FROM THE SYSTEM RESOURCES     */
* /*         MANAGER.                                                */
* /*                                                                 */
* /*   METHOD OF ACCESS - BY CONVENTION WITHIN SYSTEM RESOURCES      */
* /*         MANAGER ROUTINES, REGISTER 3 IS RESERVED TO CONTAIN     */
* /*         THE ADDRESS OF THE APPLICABLE RRPA.                     */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO RRPAPLS2; /*
         AGO   .RRPAAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON RRPA GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %RRPALEVL='USERLEVL' IF THE RRPA MAPPING IS TO BE     */
* /*         CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE      */
* /*         RRPA BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.      */
* /*         - %RRPA9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*           NOTE - INASMUCH AS THE RRPA AREA IS POINTED TO        */
* /*           DIRECTLY BY A REGISTER, ONLY A STRUCTURE LEVEL OF     */
* /*           '1' (ONE) SHOULD BE USED FOR THE RRPA.                */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE, DCL RRPAPTR PTR.   */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @ZA29015                                    */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.RRPAAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RRPAAL2
RRPA     DSECT
         AGO   .RRPAAL3
.RRPAAL2 ANOP
         DS    0D
RRPA     EQU   *
.RRPAAL3 ANOP
         SPACE 1
RRPAINC  DS    0F -                EQUIVALENT OF REG 0 AT ENTRY
RRPAASD  DS    H -                 ASID FOR ORIGINAL ENTRY
RRPAVPGN DS    0X -                VERIFY PGN FOR JOB SELECT   @Z40BPCH
RRPAFLG0 DS    B -                 FLAG BYTE FOR MEMDEL        @ZA29015
RRPANSWI EQU   BIT0 -              =1 FOR MEMDEL TYPE=NOSWIN   @ZA29015
RRPACOD  DS    C -                 ORIGINAL ENTRY SYSEVENT CODE
RRPAINP  DS    0A -                INPUT PARAMETER ADDRESS
RRPAVLU  DS    F -                 EQUIVALENT OF REG 1 AT EXIT
RRPAFLG  DS    0BL2 -              ROUTINE STATUS FLAGS
         DS    B -                 ENTRY STATUS
RRPADSB  EQU   BIT0 -              DISABLED BRANCH ENTRY
RRPAENB  EQU   BIT1 -              ENABLED BRANCH ENTRY
RRPASVC  EQU   BIT2 -              SVC CALL ENTRY
RRPADSP  EQU   BIT3 -              DISPATCHING REQUIRED
RRPAOPT  EQU   BIT6 -              SRM LOCK CURRENTLY HELD
         DS    B -                 CURRENT STATUS
RRPAWAR  EQU   BIT1 -              WORKLOAD ACTIVITY RTNE CURR
RRPAIPS  EQU   BIT2 -              IPS PROCESSING RTNE CURR
RRPACTL  EQU   BIT4 -              IRARMCTL WILL PROCESS 2ND FAILURE
RRPARTI  EQU   BIT5 -              RECOVERY TERMINATION INDICATOR
RRPARFI  EQU   BIT6 -              RECOVERY FAILURE INDICATOR
RRPARCI  EQU   BIT7 -              RECURSION INDICATOR
RRPAKEY  DS    C -                 ORIGINAL ENTRY PROTECT KEY
RRPARTC  DS    C -                 RETURN CODE FOR FINAL EXIT
RRPATOD  DS    F -                 TIME OF DAY AT ENTRY
RRPAINS  DS    0F -                BRANCH ENTRY SAVE AREA ADDRESS
RRPARTN  DS    F -                 SVC ENTRY RETURN POINT ADDRESS
RRPAEPA  DS    A -                 RMEP ADDRESS OF RTNE IN CONTROL
RRPAEND  DS    0D -                END OF RRPA
RRPALEN  EQU   RRPAEND-RRPA -      LENGTH OF RRPA
         MEND
*                                                                    */
*%RRPAPLS2:  ;
*        %IF RRPA9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %RRPA9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF RRPALEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO RRPAPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 RRPA BASED(RRPAPTR) BDY(DWORD),
*            %GOTO RRPAPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%RRPAPLS3:  RRPADUM = RRPALEVL' RRPA';  /* PICK UP GIVEN LEVEL    */
*     RRPADUM BDY(DWORD),
*%RRPAPLS4:  ;
*       10 RRPAINC  CHAR(4) BDY(WORD), /* REGISTER 0 AT ENTRY        */
*         12 RRPAASD  BIT(16) BDY(WORD), /* ASID FOR ORIGINAL ENTRY  */
*         12 RRPAVPGN PTR(8),       /* VERIFY PGN FOR JOB SELECT
*                                                            @Z40BPCH*/
*           14 RRPAFLG0 BIT(8),     /* FLAG BYTE FOR MEMDEL  @ZA29015*/
*             16 RRPANSWI BIT(1),   /* =1 FOR MEMDEL TYPE=NOSWIN
*                                                            @ZA29015*/
*             16 * BIT(7),          /* RESERVED              @ZA29015*/
*         12 RRPACOD  PTR(08),      /* ORIGINAL ENTRY SYSEVENT CODE  */
*       10 RRPAINP  PTR(31),        /* INPUT PARAMETER ADDRS         */
*         12 RRPAVLU  CHAR(4) BDY(WORD), /* INPUT PARAMETER VALUE    */
*       10 RRPAFLG  BIT(16) BDY(WORD), /* ROUTINE STATUS FLAGS       */
*         12 RRPADSB  BIT(1),       /* ORIGINAL ENTRY DISABLED BR    */
*         12 RRPAENB  BIT(1),       /* ORIGINAL ENTRY ENABLED BR     */
*         12 RRPASVC  BIT(1),       /* ORIGINAL ENTRY VIA SVC        */
*         12 RRPADSP  BIT(1),       /* DISPATCHING REQUIRED          */
*         12 RRPAF04  BIT(1),       /* RESERVED                      */
*         12 RRPAF05  BIT(1),       /* RESERVED             @Z40BPCH */
*         12 RRPAOPT  BIT(1),       /* SRM LOCK CURRENTLY HELD       */
*         12 RRPAF07  BIT(2),       /* RESERVED                      */
*         12 RRPAWAR  BIT(1),       /* WORKLOD ACTIVITY RTNE CURRENT */
*         12 RRPAIPS  BIT(1),       /* IPS PROCESS ROUTINE CURRENT   */
*         12 RRPAF11  BIT(1),       /* RESERVED                      */
*         12 RRPACTL  BIT(1),       /* INVOKE IRARMCTL FOR 2ND FAIL  */
*         12 RRPARTI  BIT(1),       /* RECOVERY TERMINATE INDICATOR  */
*         12 RRPARFI  BIT(1),       /* RECOVERY FAILURE INDICATOR    */
*         12 RRPARCI  BIT(1),       /* RECURSION INDICATOR           */
*       10 RRPAKEY  CHAR(1),        /* ORIGINAL ENTRY PROTECT KEY    */
*       10 RRPARTC  PTR(08),        /* RETURN CODE FOR FINAL EXIT    */
*       10 RRPATOD  FIXED(32) UNSIGNED, /* TIME OF DAY AT ENTRY      */
*       10 RRPAINS  PTR(31),        /* BRANCH ENTRY SAVE AREA ADDR   */
*         12 RRPARTN  PTR(31),      /* SVC ENTRY RETURN POINT ADDR   */
*       10 RRPAEPA  PTR(31),        /* RMEP ADDR OF RTNE IN CONTROL  */
*       10 RRPAEND  CHAR(0) BDY(DWORD)   /* END OF RRPA              */
*   RRPA9999
*   %RRPALEN = 'LENGTH(RRPA)';      /* SYMBOLIC FOR LENGTH OF RRRPA  */
./ ADD NAME=IRARSPL
*     %GOTO RSPLP1;    /*                                    @G742PJC*/
          MACRO
          IRARSPL &DSECT=YES
          IEZBITS                                                    */
*%RSPLP1:  ;
*/* A000000-999999                                           @G742PJC*/
*/* MACCOMP Z-4 SCICX/PKD09                                          */
*/* MACSTAT Z-4 78157/G742PJC                                        */
*/********************* START OF SPECIFICATION ***********************/
*/*                                                                  */
*/* MACRO NAME = IRARSPL                                             */
*/*                                                                  */
*/* DESCRIPTIVE NAME = REPORT SERVICE PARAMETER LIST                 */
*/*                                                                  */
*/* COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,      @G81LPJC*/
*/*             LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,          */
*/*             REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          */
*/*             G120-2083.                                           */
*/*                                                                  */
*/* STATUS = OS/VS2 JBB1126                                  @G81LPJC*/
*/*                                                                  */
*/* FUNCTION = THE RSPL IS THE PARAMETER LIST FOR PASSING            */
*/*            TRANSACTION DATA TO IRARMWR9 FOR REPORTING    @G743PJC*/
*/*            IT IN THE WAMT. IT IS ALSO USED TO CONTAIN            */
*/*            THE SERVICE CALCULATIONS PROVIDED BY IRARMWM0         */
*/*            FOR EXTENDED QUEUE ELEMENTS.                          */
*/*                                                                  */
*/* METHOD OF ACCESS = THE ADDRESS OF THE RSPL IS CONTAINED  @G743PJC*/
*/*                    IN RMCTRSPL. IT IS ALSO PASSED IN     @G743PJC*/
*/*                    REGISTER 1 BY THE CALLERS OF          @G743PJC*/
*/*                    IRARMWR9.                                     */
*/*                                                                  */
*/* CHANGE ACTIVITY =  @G743PSS,@G744PGS,@G81LPJC                    */
*/*                                                                  */
*/********************** END OF SPECIFICATION ************************/
*        %GOTO RSPLP2;      /*
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').RSPLAL1
RSPL     DSECT
         AGO   .RSPLAL2
.RSPLAL1 ANOP
         DS    0D
RSPL     EQU   *
.RSPLAL2 ANOP
         SPACE 1
RSPLETIM DC    4B'00000000' -      ELAPSED TIME              @G743PSS
RSPLTOTS DC    F'0' -              TOTAL SERVICE             @G743PSS
RSPLCPUS DC    F'0' -              CPU SERVICE               @G743PSS
RSPLIOCS DC    F'0' -              IOC SERVICE               @G743PSS
RSPLMSOS DC    F'0' -              MSO SERVICE               @G743PSS
RSPLSRBS DC    F'0' -              SRB SERVICE               @G743PSS
RSPLFPGO EQU   *                   FPG OUTPUT AREA           @G744PGS
RSPLCPGN DC    H'0' -              CONTROL PERF GROUP        @G744PGS
RSPLSRPG DC    H'0' -              SUBSYSTEM RPGN            @G744PGS
RSPLNRPG DC    H'0' -              TRXNAME RPGN              @G744PGS
RSPLURPG DC    H'0' -              USERID RPGN               @G744PGS
RSPLCRPG DC    H'0' -              TRXCLASS RPGN             @G744PGS
RSPLRSV2 DC    H'0' -              RESERVED                  @G744PGS
RSPLRSV3 DC    F'0' -              RESERVED                  @G744PGS
RSPLEND  DS    0D   -              END OF RSPL               @G743PSS
RSPLLEN  EQU RSPLEND-RSPL -        LENGTH OF RSPL            @G743PSS
         MEND
*                                                                    */
*%RSPLP2: ;
*  DCL  1 RSPL BASED(RSPLPTR) BDY(DWORD), /*                         */
*     2 RSPLETIM BIT(32),       /* ELAPSED TIME                      */
*     2 RSPLTOTS FIXED(31),     /* TOTAL SERVICE                     */
*     2 RSPLCPUS FIXED(31),     /* CPU SERVICE                       */
*     2 RSPLIOCS FIXED(31),     /* IOC SERVICE                       */
*     2 RSPLMSOS FIXED(31),     /* MSO SERVICE                       */
*     2 RSPLSRBS FIXED(31),     /* SRB SERVICE                       */
*     2 RSPLFPGO CHAR(10) BDY(HWORD), /* FPG OUTPUT AREA     @G744PGS*/
*       4 RSPLCPGN FIXED(15),   /* CONTROL PERF GROUP        @G744PGS*/
*       4 RSPLSRPG FIXED(15),   /* SUBSYSTEM RPGN            @G744PGS*/
*       4 RSPLNRPG FIXED(15),   /* TRXNAME RPGN              @G744PGS*/
*       4 RSPLURPG FIXED(15),   /* USERID RPGN               @G744PGS*/
*       4 RSPLCRPG FIXED(15),   /* TRXCLASS RPGN             @G744PGS*/
*     2 RSPLRSV2 FIXED(15),     /* RESERVED                  @G744PGS*/
*     2 RSPLRSV3 FIXED(31),     /* RESERVED                  @G744PGS*/
*     2 RSPLEND CHAR(0);        /* END RSPL                          */
*  DCL RSPLRPGN(4) FIXED(15) DEFINED(RSPLSRPG); /* RPGN ARRAY
*                                                            @G744PGS*/
./ ADD NAME=IRASALT
         MACRO
&IRANAME IRASALT &ENDLST,&ITMLST,&INITRTN,&INITPRM
         AGO   .BEGIN
*   MACCOMP Z-4 SC1CX/PKD09                                        *
*   MACSTAT Z-4 78250/G743PGM                                      *
********************************************************************
*                                                                  *
*   MODULE NAME - IRASALT                                          *
*                                                                  *
*   DESCRIPTIVE NAME - SRM SYNTAX TABLE ALTERNATIVE ENTRY          *
*                                                                  *
*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,    @G81LPJC*
*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        *
*               REFER TO COPYRIGHT INSTRUCTIONS FORM               *
*               NUMBER G120-2083.                                  *
*                                                                  *
*   STATUS - OS/VS2 JBB1126                                @G81LPJC*
*                                                                  *
*   FUNCTION - EXECUTABLE MACRO FOR THE SRM SYNTAX TABLES.         *
*              IT DESCRIBES AN ALTERNATIVE ENTRY.  (SEE METHOD OF  *
*              INVOCATION.)                                        *
*                                                                  *
*   NOTES - NONE                                                   *
*                                                                  *
*   MODULE TYPE - BAL EXECUTABLE MACRO                             *
*                                                                  *
*   MACMEAN - IRASALT MEANS SRM SYNTAX TABLE ALTERNATIVE ENTRY.    *
*                                                                  *
*   METHOD OF INVOCATION -                                         *
*      BAL - IRASALT A,B,C,D                                       *
*          WHERE                                                   *
*             A - '1' INDICATES END OF ALTERNATIVES LIST           *
*                 '0' OTHERWISE                                    *
*             B - ADDRESS OF AN ITEM ENTRY                         *
*             C - ADDRESS OF AN INITIALIZATION ROUTINE OR ZERO     *
*             D - ADDRESS OF A PARAMETER LIST TO BE PASSED TO THE  *
*                 INITIALIZATION ROUTINE                           *
*                                                                  *
*      PLS - NONE                                                  *
*                                                                  *
*   CHANGE ACTIVITY - @G81LPJC                             @G81LPJC*
*                                                                  *
*   A000000-999999                                         @G743PGM*
*                                                                  *
********************************************************************
.BEGIN   ANOP
*    MACDATE Y-2 78251                                             *
         AIF   (NOT ('&ENDLST' EQ '1' AND '&INITRTN' NE '0')).A
&IRANAME DC    X'C0' .            END OF LIST AND INITIALIZATION
*                                 ROUTINE EXISTS
         AGO   .D
.A       AIF   (NOT ('&ENDLST' EQ '1' AND '&INITRTN' EQ '0')).B
&IRANAME DC    X'80' .            END OF LIST
         AGO   .D
.B       AIF   (NOT ('&ENDLST' NE '1' AND '&INITRTN' NE '0')).C
&IRANAME DC    X'40' .            INITIALIZATION ROUTINE EXISTS
         AGO   .D
.C       AIF (NOT ('&ENDLST' NE '1' AND '&INITRTN' EQ '0')).D
&IRANAME DC    X'00' .            NOT END OF LIST - NO INITIALIZATION
*                                 ROUTINE EXISTS
.D       ANOP
         DC    AL3(0) .           RESERVED
         DC    A(&ITMLST) .       ADDRESS OF AN ITEM LIST
         DC    A(&INITRTN) .      INITIALIZATION RTN ADDRESS
         DC    A(&INITPRM) .      ADDRESS OF A PARAMETER LIST
*                                 FOR INITIALIZATION ROUTINE
         MEND
./ ADD NAME=IRASITM
         MACRO
&IRANAME IRASITM &ENDLST,&RECGNZR,&TRMDEF,&RCGPARM
         AGO   .BEGIN
*   MACCOMP Z-4 SC1CX/PKD09                                        *
*   MACSTAT Z-4 78250/G743PGM                                      *
********************************************************************
*                                                                  *
*   MODULE NAME - IRASITM                                          *
*                                                                  *
*   DESCRIPTIVE NAME - SRM SYNTAX TABLE ITEM ENTRY                 *
*                                                                  *
*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,    @G81LPJC*
*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        *
*               REFER TO COPYRIGHT INSTRUCTIONS FORM               *
*               NUMBER G120-2083.                                  *
*                                                                  *
*   STATUS - OS/VS2 JBB1126                               @G812LPJC*
*                                                                  *
*   FUNCTION - EXECUTABLE MACRO FOR THE SRM SYNTAX TABLES.         *
*              IT DESCRIBES AN ITEM ENTRY. (SEE METHOD OF          *
*              INVOCATION.)                                        *
*                                                                  *
*   NOTES - NONE                                                   *
*                                                                  *
*   MODULE TYPE - BAL EXECUTABLE MACRO                             *
*                                                                  *
*   MACMEAN - IRASITM MEANS SRM SYNTAX TABLE ITEM ENTRY.           *
*                                                                  *
*   METHOD OF INVOCATION -                                         *
*      BAL - IRASITM A,B,C,D                                       *
*          WHERE                                                   *
*             A - '1' INDICATES END OF ITEM LIST                   *
*                 '0' OTHERWISE                                    *
*             B - ADDRESS OF A RECOGNIZER ROUTINE OR A STRUCTURE   *
*                 ENTRY                                            *
*             C - '1' INDICATES ITEM ENTRY IS A TERMINAL TYPE      *
*                 '0' INDICATES ITEM ENTRY IS A STRUCTURE TYPE     *
*             D - ADDRESS OF A PARAMETER LIST TO BE PASSED TO THE  *
*                 RECOGNIZE ROUTINE OR 0.                          *
*      PLS - NONE                                                  *
*                                                                  *
*   CHANGE ACTIVITY - @G81LPJC                                     *
*                                                                  *
*   A000000-999999                                         @G743PGM*
*                                                                  *
********************************************************************
.BEGIN   ANOP
*    MACDATE Y-2 78251                                             *
         AIF   (NOT ('&ENDLST' EQ '1' AND '&TRMDEF' EQ '1')).A
&IRANAME DC    X'C0' .            END OF LIST AND ITEM IS
*                                 TERMINAL TYPE
         AGO   .D
.A       AIF   (NOT ('&ENDLST' EQ '1' AND '&TRMDEF' NE '1')).B
&IRANAME DC    X'80'              END OF LIST
         AGO   .D
.B       AIF   (NOT ('&ENDLST' NE '1' AND '&TRMDEF' EQ '1')).C
&IRANAME DC    X'40'              ITEM IS TERMINAL TYPE
         AGO   .D
.C       AIF   (NOT ('&ENDLST' NE '1' AND '&TRMDEF' NE '1')).D
&IRANAME DC    X'00'              NOT END OF LIST AND ITEM IS
*                                 DEFINED TYPE
.D       ANOP
         DC    AL3(0) .           RESERVED
         DC    A(&RECGNZR) .      ADDRESS OF A RECOGNIZER
*                                 OR STRUCTURE ENTRY
         DC    A(&RCGPARM) .      ADDRESS OF A PARAMETER LIST
*                                 PASSED TO RECOGNIZER ROUTINE
         MEND
./ ADD NAME=IRASSTR
         MACRO
&IRANAME IRASSTR &INITIAL,&ALTLST,&RCALTLS
         AGO   .BEGIN
*   MACCOMP Z-4 SC1CX/PKD09                                        *
*   MACSTAT Z-4 78250/G743PGM                                      *
********************************************************************
*                                                                  *
*   MODULE NAME - IRASSTR                                          *
*                                                                  *
*   DESCRIPTIVE NAME - SRM SYNTAX TABLE STRUCTURE ENTRY            *
*                                                                  *
*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,    @G81LPJC*
*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,        *
*               REFER TO COPYRIGHT INSTRUCTIONS FORM               *
*               NUMBER G120-2083.                                  *
*                                                                  *
*   STATUS - OS/VS2 JBB1126                                @G81LPJC*
*                                                                  *
*   FUNCTION - EXECUTABLE MACRO FOR THE SRM SYNTAX TABLES.         *
*              IT DESCRIBES A STRUCTURE ENTRY. (SEE METHOD OF      *
*              INVOCATION.)                                        *
*                                                                  *
*   NOTES - NONE                                                   *
*                                                                  *
*   MODULE TYPE - BAL EXECUTABLE MACRO                             *
*                                                                  *
*   MACMEAN - IRASSTR MEANS SRM SYNTAX TABLE STRUCTURE ENTRY.      *
*                                                                  *
*   METHOD OF INVOCATION -                                         *
*      BAL - IRASSTR A,B,C                                         *
*          WHERE                                                   *
*             A -'1' INDICATES INITIAL STRUCTURE                   *
*                '0' OTHERWISE                                     *
*             B -ADDRESS OF A LIST OF ALTERNATIVE ENTRIES (REGULAR)*
*             C -ADDRESS OF A LIST OF RECURSIVE ALTERNATIVES       *
*                                                                  *
*      PLS - NONE                                                  *
*                                                                  *
*   CHANGE ACTIVITY - @G81LPJC                                     *
*                                                                  *
*   A000000-999999                                         @G743PGM*
*                                                                  *
********************************************************************
.BEGIN   ANOP
*    MACDATE Y-2 78251                                             *
         AIF (NOT ('&INITIAL' EQ '1' AND '&RCALTLS' NE '0')).A
&IRANAME DC    X'C0' .            INITIAL STRUCTURE WITH RECURSIVE
*                                 ALTERNATIVES
         AGO   .D
.A       AIF   (NOT ('&INITIAL' EQ '1' AND '&RCALTLS' EQ '0')).B
&IRANAME DC    X'80' .            INITIAL STRUCTURE - NOT RECURSIVE
         AGO   .D
.B       AIF   (NOT ('&INITIAL' NE '1' AND '&RCALTLS' NE '0')).C
&IRANAME DC    X'40' .            RECURSIVE ALTERNATIVES EXIST
         AGO   .D
.C       AIF   (NOT ('&INITIAL' NE '1' AND '&RCALTLS' EQ '0')).D
&IRANAME DC    X'00' .            NOT INITIAL STRUCTURE - NO RECURSIVE
*                                 ALTERNATIVES
.D       ANOP
         DC    AL3(0) .           RESERVED
         DC    A(&ALTLST) .       ALTERNATIVE LIST ADDRESS
         DC    A(&RCALTLS) .      RECURSIVE ALTERNATIVE
         MEND
./ ADD NAME=IRATRQEL
*        %GOTO TRQEPLS1; /*
         MACRO
         IRATRQEL
         IEZBITS
*                                                                    */
*%TRQEPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD09                                         */
* /* MACSTAT Z-4 78152/G742PJC                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRATRQEL                                         */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - RESOURCES MANAGER TRANSACTION REPORTING    */
* /*                      QUEUE ELEMENT MAPPING                      */
* /*                                                                 */
* /*   COPYRIGHT - 5740-XYN COPYRIGHT IBM CORP 1979, 1980,   @G81LPJC*/
* /*               LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,       */
* /*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER       */
* /*               G120-2083.                                        */
* /*                                                                 */
* /*   STATUS - OS/VS2 JBB1126                               @G81LPJC*/
* /*                                                                 */
* /*   FUNCTION - THE TRQE MAPS THE QUEUE ELEMENT USED TO CONTAIN    */
* /*         THE DATA PASSED IN BY TRANSACTION REPORTING SYSEVENTS   */
* /*         TRAXERPT, TRAXFRPT AND TRAXRPT.                         */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE TRQE IS CONTAINED IN    */
* /*         THE HEADER OF THE EXTENDED AVAILABLE QUEUE (RMCTERQE),  */
* /*         THE HEADER OF THE BASIC AVAILABLE QUEUE (RMCTBRQE) OR   */
* /*         OF THE UPDATE QUEUE (RMCTUPDQ).  THE ADDRESS MAY ALSO   */
* /*         BE IN A PREVIOUS ELEMENT OF ANY QUEUE.                  */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO TRQEPLS2; /*
         AGO   .TRQEAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - NONE                                                  */
* /*                                                                 */
* /*         USING ON TRQE GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %TRQELEVL='USERLEVL' IF THE TRQE MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           TRQE BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %TRQE9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*   CHANGE ACTIVITY = @G81LPJC                                    */
* /*                                                                 */
* /*   A000000-999999                                        @G742PJC*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.TRQEAL1 ANOP
         SPACE 1
TRQE     DSECT
         SPACE 1
TRQEBASC DS    0D                  BASIC QUEUE ELEMENT
TRQEBASE DS    0D                  BASE OF QUEUE ELEMENT
TRQENEXT DS    A -                 ADDRESS OF NEXT ELEMENT
TRQEFLGS DS    XL1 -               STATUS FLAGS
TRQETYPE EQU   BIT0 -              Q ELEMENT EXTENSION PRESENT
TRQERSVB EQU   BIT1 -              RESERVED BITS
TRQERSV0 DS    XL3 -               RESERVED
TRQEWORK DS    0D -                8-BYTE WORK AREA
TRQEETIM DS    F -                 TRANSACTION ELAPSED TIME (1.024 MS)
TRQERSV1 DS    F -                 RESERVED
TRQEICSV DS    0D -                DESCRIPTION/SERVICE PARAMETERS
TRQEICSP DS    0D -                TRANSACTION DESCRIPTION
TRQESSNM DS    CL8 -               SUBSYSTEM NAME
TRQETRXN DS    CL8 -               TRANSACTION NAME
TRQEUSID DS    CL8 -               USERID
TRQETRXC DS    CL8 -               TRANSACTION CLASS
TRQEBEND DS    0D  -               END OF BASIC ELEMENT
TRQEBLEN EQU   TRQEBEND-TRQE -     LENGTH OF BASIC ELEMENT
TRQEEXTN DS    0D -                QUEUE ELEMENT EXTENSION
TRQECPUT DS    D -                 CPU TIME (STCK FORMAT)
TRQESRBT DS    D -                 SRB TIME (STCK FORMAT)
TRQEMSOT DS    D -                 MAIN STORAGE OCCUPANCY (PAGE-MSECS)
TRQEIOCT DS    F -                 LOGICAL I/O COUNT
TRQERSVD DS    F -                 RESERVED
TRQEEND  DS    0D -                END OF TRQE ELEMENT
TRQELEN  EQU   TRQEEND-TRQE -      LENGTH OF TRQE ELEMENT
         MEND
*                                                                    */
*%TRQEPLS2:  ;
*        %IF TRQE9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %TRQE9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF TRQELEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO TRQEPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 TRQE BASED BDY(DWORD),
*            %GOTO TRQEPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%TRQEPLS3:  TRQEDUM = TRQELEVL' TRQE';  /* PICK UP GIVEN LEVEL    */
*     TRQEDUM BDY(DWORD),
*%TRQEPLS4:  ;
*    2 TRQEBASC,                    /* BASIC QUEUE ELEMENT           */
*      5 TRQEBASE,                  /* BASE OF QUEUE ELEMENT         */
*       10 TRQENEXT PTR(31),        /* ADDRESS OF NEXT ELEMENT       */
*       10 TRQEFLGS BIT(8),         /* STATUS FLAGS                  */
*         12 TRQETYPE BIT(1),       /* Q ELEMENT EXTENSION PRESENT   */
*         12 TRQERSVB BIT(7),       /* RESERVED BITS                 */
*       10 TRQERSV0 BIT(24),        /* RESERVED                      */
*       10 TRQEWORK BIT(64),        /* WORK AREA FOR TRAXRPT EVENTS  */
*         12 TRQEETIM BIT(32),     /* XACTION ELAPSED TIME (1.024 MS)*/
*         12 TRQERSV1 CHAR(4),      /* RESERVED                      */
*      5 TRQEICSP,                  /* TRANSACTION DESCRIPTION       */
*       10 TRQESSNM CHAR(8),        /* SUBSYSTEM NAME                */
*       10 TRQETRXN CHAR(8),        /* TRANSACTION NAME              */
*       10 TRQEUSID CHAR(8),        /* USER ID                       */
*       10 TRQETRXC CHAR(8),        /* TRANSACTION CLASS             */
*    2 TRQEEXTN,                    /* QUEUE ELEMENT EXTENSION       */
*       10 TRQECPUT BIT(64),        /* CPU TIME (STCK FORMAT)        */
*       10 TRQESRBT BIT(64),        /* SRB TIME (STCK FORMAT)        */
*       10 TRQEMSOT BIT(64),        /* MAIN STGE OCCUPANCY (PG-MSECS)*/
*       10 TRQEIOCT FIXED(31),      /* LOGICAL I/O COUNT             */
*       10 TRQERSVD CHAR(4),        /* RESERVED                      */
*       10 TRQEEND  CHAR(0) BDY(DWORD) /* END OF TRQE TABLE          */
*   TRQE9999
*   %TRQELEN = 'LENGTH(TRQE)';      /* SYMBOLIC FOR LENGTH OF TRQE   */
./ ADD NAME=IRAWAMT
*%;  /*
         MACRO
         IRAWAMT   &DSECT=YES
         AGO   .WAMTAL0                                              */
*@       LIST  PUSH;                /* SAVE LISTING STATUS FOR WAMT  */
*        %IF WAMTSFX = ''           /* IS NAMING CHARACTER OMITTED   */
*            %THEN %WAMTSFX = ' ';  /* YES, INSERT PLACEHOLDER BLANK */
*        %IF WAMTSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %WAMTDUM = '@       LIST  OFF '; /* BYP INTRO CMT */
*        %ELSE     %WAMTDUM = '@       LIST  PUSH'; /* DMY CNTRL CMT */
*WAMTDUM;
*        %IF WAMTSFX = ' '          /* IS THIS  THE FIRST INCLUDE    */
*            %THEN %WAMTDUM = '@       LIST  POP '; /* PRT INTRO CMT */
*WAMTDUM;
*%;  /*
.WAMTAL0 ANOP                                                        */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAWAMT                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - WORKLOAD ACTIVITY MEASUREMENTS TABLE       */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 09/23/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE WAMT PROVIDES THE STORAGE AREA IN WHICH        */
* /*         INFORMATION IS COLLECTED BY THE SYSTEM RESOURCES        */
* /*         MANAGER FOR USE BY THE SYSTEM ACTIVITY MEASUREMENT      */
* /*         FACILITY.  THE WAMT, AND THE MODULE WHICH UPDATES       */
* /*         IT, ARE SUPPLIED BY THE SYSTEM ACTIVITY MEASURMENT      */
* /*         FACILITY FOR THE DURATION OF THE WORKLOAD ACTIVITY      */
* /*         DATA GATHERING OPERATION.                               */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE WAMT IS CONTAINED IN    */
* /*         THE -RMCTWAMT- FIELD OF THE SYSTEM RESOURCES MANAGER    */
* /*         CONTROL TABLE.  THE OFFSET OF THE FIRST WAMPPGP FOR     */
* /*         A PERFORMANCE GROUP IS CONTAINED IN THE WAMTNDX ENTRY   */
* /*         CORRESPONDING TO THE PERFORMANCE GROUP NUMBER.          */
* /*                                                                 */
* /* *************************************************************** */
*%;  /*
         AGO   .WAMTAL1                                              */
*@       LIST  OFF;                 /* BYPASS EXPLANATORY COMMENTS   */
* /* *************************************************************** */
* /*                                                                 */
* /*   CONSTRUCTION METHOD - THE WAMPPGP'S ARE ASSIGNED CONTIGUOUS   */
* /*         STORAGE, WITH THE WAMPPGP FOR THE 2ND PERIOD IN A       */
* /*         PERFORMANCE GROUP FOLLOWING THE WAMPPGP FOR THE 1ST     */
* /*         PERIOD, ETC., AND WITH THE 1ST WAMPPGP OF THE NEXT      */
* /*         PERFORMANCE GROUP FOLLOWING THE LAST WAMPPGP OF THE     */
* /*         PREVIOUS PERFORMANCE GROUP.  THE NUMBER OF ENTRIES      */
* /*         IN THE WAMTNDX ARRAY IS 2 MORE THAN THE HIGHEST PER-    */
* /*         FORMANCE GROUP NUMBER.  WAMTNX0 HOLDS THE OFFSET OF     */
* /*         A WAMPPGP RESERVED FOR PERFORMANCE GROUP ZERO.  THE     */
* /*         FIRST POSITION IN THE WAMTNDX ARRAY IS DECLARED AS      */
* /*         COINCIDING WITH THE WAMTNX1 FIELD.  THEREAFTER, EACH    */
* /*         SUCCESSIVE WAMTNDX ARRAY ENTRY CONTAINS THE OFFSET      */
* /*         OF THE POSITION FOLLOWING THE LAST WAMPPGP ASSIGNED     */
* /*         TO LOWER-NUMBERED PERFORMANCE GROUPS.                   */
* /*                                                                 */
* /*         THE NUMBER OF PERIODS IN A PERFORMANCE GROUP CAN BE     */
* /*         OBTAINED BY SUBTRACTING ITS WAMTNDX FIELD FROM THE      */
* /*         NEXT ADJACENT WAMTNDX FIELD, AND DIVIDING BY THE        */
* /*         WAMPPGP SIZE.                                           */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON WAMT GIVES ADDRESSABILITY TO WAMT SYMBOLS.     */
* /*         USING ON WAMP GIVES ADDRESSABILITY TO WAMP SYMBOLS.     */
* /*                                                                 */
* /*     PLS - %WAMTSFX='USERCHAR' IF THE INDICATED CHARACTER IS     */
* /*           TO BE APPENDED TO ALL NAMES IN THE MAPPING, THEREBY   */
* /*           CREATING DUPLICATE DEFINITIONS BASED ON DIFFERENT     */
* /*           POINTERS.                                             */
* /*         - %WAMT9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*           NOTE - DUE TO THE FACILITY WHICH PERMITS MULTIPLE     */
* /*           INCLUDES OF THE IRAWAMT MAPPING MACRO, IT IS NOT      */
* /*           POSSIBLE TO CONCATENATE THE IRAWAMT DECLARATION       */
* /*           WITH ANOTHER DECLARATION IN SUCH A FASHION THAT       */
* /*           BOTH DECLARATIONS ARE BASED ON THE SAME POINTER.      */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL WAMTPTR PTR.    */
* /*                                             DCL WAMPPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
*%;  /*
.WAMTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').WAMTAL2
WAMT     DSECT
         AGO   .WAMTAL3
.WAMTAL2 ANOP
         DS    0D
WAMT     EQU *
.WAMTAL3 ANOP
         SPACE 1
WAMTWAR  DS    A -                 ADDRESS OF LOADED IRARMWAR MODULE
WAMTSIZ  DS    F -                 TOTAL WAMT LNG (INCLUDING WAMP'S)
WAMTTMA  DS    D -                 MEASR ACTVT TIME - 64BIT BINARY NMB
WAMTTOC  DS    D -                 LAST UPDATE TIME - 64BIT BINARY NMB
WAMTASD  DS    CL4 -               MEASUREMENT FACILITY ADDR SPACE ID
WAMTTCB  DS    A -                 MEASUREMENT FACILITY TASK ADDRESS
WAMTIPS  DS    CL2 -               PERFORMANCE SPECIFICATION IDENT
WAMTCPD  DS    H -                 TOTAL COUNT OF PGP'S WITHIN WAMT
WAMTSPD  DS    H -                 LENGTH OF DATA WITHIN ONE WAMPPGP
WAMTHPG  DS    H -                 HIGHEST PERFORMANCE GROUP NUMBER
WAMTIPC  DS    CL4 -               CPU SERVICE COEFICIENT      @Z40BPCH
WAMTIPI  DS    CL4 -               I/O SERVICE COEFFICIENT     @Z40BPCH
WAMTIPM  DS    CL4 -               MSO SERVICE COEFFICIENT     @Z40BPCH
WAMTNX0  DS    A -                 OFFST OF 1ST WAMPPGP FOR PG# 0
WAMTNDX  DS    0A -                ARRAY OF OFFST OF 1ST PGP FOR GROUP
WAMTNX1  DS    A -                 OFFST OF 1ST WAMPPGP FOR PG# 1
WAMTR90  DS    F -                 RESERVED                    @Z40BPCH
WAMTEND  DS    0D -                END OF WAMT
WAMTLEN  EQU   WAMTEND-WAMT -      LENGTH OF WAMT
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').WAMTAL4
WAMP     DSECT
         AGO   .WAMTAL5
.WAMTAL4 ANOP
         DS    0F
WAMP     EQU   *
.WAMTAL5 ANOP
         SPACE 1
WAMPPGP  DS    0CL38 -             PERFORMANCE GROUP PERIOD DATA
*                                                              @Z40BPCH
WAMPTRN  DS    F -                 COUNT OF TRANSACTIONS ENDED
WAMPTAT  DS    F -                 TOTAL ACTIVE TIME FOR PERIOD
WAMPSRV  DS    F -                 TOTAL SERVICE UNITS FOR PERIOD
WAMPTET  DS    F -                 TOT ELAPSED TIME OF XACTNS ENDED
WAMPNWL  DS    F -                 NORMALIZED WORKLOAD LEVEL
WAMPCPU  DS    F -                 TOTAL CPU SERVICE UNITS FOR  PERIOD
*                                                              @Z40BPCH
WAMPIOC  DS    F -                 TOTAL I/O SERVICE UNITS FOR PERIOD
*                                                              @Z40BPCH
WAMPMSO  DS    F -                 TOTAL MSO SERVICE UNITS FOR PERIOD
*                                                              @Z40BPCH
WAMPTRR  DS    F -                 TOTAL RESIDENT TIME FOR PER.@Z40BPCH
WAMPSWC  DS    F -                 TOTAL SWAP COUNT FOR PERIOD @Z40BPCH
WAMPOBJN DS    HL1 -               PERF. OBJ NO. FOR PERIOD    @Z40BPCH
WAMPDMN  DS    HL1 -               DOMAIN NO. FOR PERIOD       @Z40BPCH
WAMPRSV  DS    H   -               RESERVED                    @Z40BPCH
WAMPEND  DS    0F -                END OF WAMP
WAMPLEN  EQU   WAMPEND-WAMP -      LENGTH OF WAMP
         MEND
*                                                                    */
*@       LIST  POP;                 /* RESUME MACRO OUTPUT LISTING   */
*        %IF WAMT9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %WAMT9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %WAMTLABL = 'WAMT'  ;      /* INITIALIZE THE LABEL VARIABLE */
*        %IF WAMTSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %WAMTLABL = 'WAMT'WAMTSFX ; /* RENAME STRUCTURE */
*        %WAMTDUM = WAMTLABL'PTR' ;  /* QUALIFY BASED POINTER NAME */
*   DCL
*     1 WAMTLABL BASED(WAMTDUM) BDY(DWORD),
*            %WAMTLABL = 'WAMTWAR'WAMTSFX;
*       10 WAMTLABL PTR(31),        /* ADDR OF IRARMWAR MODULE       */
*            %WAMTLABL = 'WAMTSIZ'WAMTSFX;
*       10 WAMTLABL FIXED,          /* TOTL LNG OF WAMT INCL. WAMP'S */
*            %WAMTLABL = 'WAMTTMA'WAMTSFX;
*       10 WAMTLABL BIT(64) BDY(DWORD), /* MEASUREMENT ACTIVATE TIME */
*            %WAMTLABL = 'WAMTTOC'WAMTSFX;
*       10 WAMTLABL BIT(64) BDY(DWORD), /* WAMT UPDT TIME OF CENTURY */
*            %WAMTLABL = 'WAMTASD'WAMTSFX;
*       10 WAMTLABL BIT(32) BDY(WORD),  /* MEASUREMENT ADDR SPACE ID */
*            %WAMTLABL = 'WAMTTCB'WAMTSFX;
*       10 WAMTLABL PTR(31),        /* MEASUREMENT TASK ADDRESS      */
*            %WAMTLABL = 'WAMTIPS'WAMTSFX;
*       10 WAMTLABL CHAR(2) BDY(HWORD), /* PERFORMANC SPECIFICATN ID */
*            %WAMTLABL = 'WAMTCPD'WAMTSFX;
*       10 WAMTLABL FIXED(15),      /* COUNT OF PGP'S WITHIN WAMT    */
*            %WAMTLABL = 'WAMTSPD'WAMTSFX;
*       10 WAMTLABL FIXED(15),      /* LENGTH OF DATA FOR ONE PGP    */
*            %WAMTLABL = 'WAMTHPG'WAMTSFX;
*       10 WAMTLABL FIXED(15),      /* HIGH PERF. GROUP NUMBER       */
*            %WAMTLABL = 'WAMTIPC'WAMTSFX; /*              @Z40BPCH*/
*       10 WAMTLABL CHAR(4) BDY(WORD), /* CPU SERVICE COEF.  @Z40BPCH*/
*            %WAMTLABL = 'WAMTIPI'WAMTSFX; /*              @Z40BPCH*/
*       10 WAMTLABL CHAR(4) BDY(WORD), /* I/O SERVICE COEF.  @Z40BPCH*/
*            %WAMTLABL = 'WAMTIPM'WAMTSFX; /*              @Z40BPCH*/
*       10 WAMTLABL CHAR(4) BDY(WORD), /* MSO SERVICE COEF.  @Z40BPCH*/
*            %WAMTLABL = 'WAMTNX0'WAMTSFX;
*       10 WAMTLABL PTR(31),        /* OFFST TO WAMPPGP OF PRF GRP 0 */
*            %WAMTLABL = 'WAMTNX1'WAMTSFX;
*       10 WAMTLABL PTR(31),        /* OFFST TO WAMPPGP OF PRF GRP 1 */
*            %WAMTLABL = 'WAMTR90'WAMTSFX; /*              @Z40BPCH*/
*       10 WAMTLABL FIXED,          /* RESERVED              @Z40BPCH*/
*            %WAMTLABL = 'WAMTEND'WAMTSFX;
*       10 WAMTLABL CHAR(0) BDY(DWORD),  /* END OF WAMT              */
* /*  THE I'TH POSITION OF THE FOLLOWING ARRAY CONTAINS THE OFFSET   */
* /*  FROM THE BEGINNING OF THE WAMT TO THE STARTING POSITION OF     */
* /*  THE WAMPPGP'S FOR THE I'TH PERFORMANCE GROUP.                  */
*            %WAMTDUM  = 'WAMTNX1'WAMTSFX;
*            %WAMTLABL = 'WAMTNDX'WAMTSFX;
*     WAMTLABL (*) DEFINED(WAMTDUM) PTR(31),
* /*  THE WAMP ACCUMULATES WORKLOAD INFORMATION FOR ONE PERFORMANCE  */
* /*  GROUP PERIOD.  THERE MAY BE 1 TO 8 PERIODS FOR ONE GROUP.      */
*        %WAMTLABL = 'WAMP'  ;      /* INITIALIZE THE LABEL VARIABLE */
*        %IF WAMTSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %WAMTLABL = 'WAMP'WAMTSFX ; /* RENAME STRUCTURE */
*        %WAMTDUM = WAMTLABL'PTR' ;  /* QUALIFY BASED POINTER NAME */
*     1 WAMTLABL BASED(WAMTDUM) BDY(WORD),
*            %WAMTLABL = 'WAMPPGP'WAMTSFX;
*       10 WAMTLABL,                /* PERFORMANCE GROUP PERIOD DATA */
*            %WAMTLABL = 'WAMPTRN'WAMTSFX;
*         12 WAMTLABL FIXED(32),    /* COUNT OF TRANSACTIONS ENDED   */
*            %WAMTLABL = 'WAMPTAT'WAMTSFX;
*         12 WAMTLABL FIXED(32),    /* TOTAL ACTIVE TIME FOR PERIOD
*                                      1024 MICROSEC = LOW BIT       */
*            %WAMTLABL = 'WAMPSRV'WAMTSFX;
*         12 WAMTLABL FIXED(32),    /* TOT SERVICE UNITS FOR PERIOD  */
*            %WAMTLABL = 'WAMPTET'WAMTSFX;
*         12 WAMTLABL FIXED(32),    /* TOT ELAPS TIM OF XACTNS ENDED
*                                      1024 MICROSEC = LOW BIT       */
*            %WAMTLABL = 'WAMPNWL'WAMTSFX;
*         12 WAMTLABL FIXED(31),    /* NORMALIZED WORKLOAD LEVEL
*                                      1/256TH OF A LEVEL = LOW BIT  */
*            %WAMTLABL = 'WAMPCPU'WAMTSFX; /*              @Z40BPCH*/
*         12 WAMTLABL FIXED(32),    /* TOTAL CPU SERVICE UNITS FOR
*                                      PERIOD                @Z40BPCH*/
*            %WAMTLABL = 'WAMPIOC'WAMTSFX; /*              @Z40BPCH*/
*         12 WAMTLABL FIXED(32),    /* TOTAL I/O SERVICE UNITS FOR
*                                      PERIOD                @Z40BPCH*/
*            %WAMTLABL = 'WAMPMSO'WAMTSFX; /*              @Z40BPCH*/
*         12 WAMTLABL FIXED(32),    /* TOTAL MSO SERVICE UNITS FOR
*                                      PERIOD                @Z40BPCH*/
*            %WAMTLABL = 'WAMPTRR'WAMTSFX; /*              @Z40BPCH*/
*         12 WAMTLABL FIXED(32),    /* TOTAL RESIDENT TIME FOR
*                                      PERIOD                @Z40BPCH*/
*            %WAMTLABL = 'WAMPSWC'WAMTSFX; /*              @Z40BPCH*/
*         12 WAMTLABL FIXED,        /* TOTAL SWAP COUNT FOR PERIOD
*                                                            @Z40BPCH*/
*            %WAMTLABL = 'WAMPOBJN'WAMTSFX; /*             @Z40BPCH*/
*         12 WAMTLABL FIXED(8),     /* PERF. OBJ. NO FOR PER @Z40BPCH*/
*            %WAMTLABL = 'WAMPDMN'WAMTSFX; /*              @Z40BPCH*/
*         12 WAMTLABL FIXED(8),     /* DOMAIN NO. FOR PERIOD @Z40BPCH*/
*            %WAMTLABL = 'WAMPRSV'WAMTSFX ;    /*          @Z40BPCH*/
*         12 WAMTLABL CHAR(2) BDY(HWORD), /* RESERVED        @Z40BPCH*/
*            %WAMTLABL = 'WAMPEND'WAMTSFX;
*       10 WAMTLABL CHAR(0) BDY(WORD)  /* END OF WAMP                */
*   WAMT9999
*   %WAMTLEN = 'LENGTH(WAMT)';      /* SYMBOLIC FOR LENGTH OF WAMT   */
./ ADD NAME=IRAWMST
*        %GOTO WMSTPLS1; /*
         MACRO
         IRAWMST &DSECT=YES                                          */
*%WMSTPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAWMST                                          */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - WORKLOAD MANAGER SPECIFICATION TABLE       */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 09/17/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE WMST COMBINES IN A SINGLE TABLE THE INFORMA-   */
* /*         TION REQUIRED BY THE VARIOUS ROUTINES WHICH REFERENCE   */
* /*         THE INSTALLATION PERFORMANCE SPECIFICATION.  THE WMST   */
* /*         RESIDES IN SQA, AND IS DYNAMICALLY CONSTRUCTED DURING   */
* /*         SYSTEM INITIALIZATION, AND DURING SET IPS PROCESSING.   */
* /*         THE IPS USED BY THE  SYSTEM RESOURCES MANAGER  MAY BE   */
* /*         CHANGED BY SIMPLY SUBSTITUTING THE ADDRESS OF THE NEW   */
* /*         WMST INTO -RMCTWMST-.                                   */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE WMST IS CONTAINED IN    */
* /*         THE -RMCTWMST- FIELD OF THE SYSTEM RESOURCES MANAGER    */
* /*         CONTROL TABLE.                                          */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO WMSTPLS2; /*
         AGO   .WMSTAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON WMST GIVES ADDRESSABILITY TO ALL SYMBOLS.      */
* /*                                                                 */
* /*     PLS - %WMSTLEVL='USERLEVL' IF THE WMST MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           WMST BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %WMST9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL WMSTPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =@ZM43084                                     */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.WMSTAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').WMSTAL2
WMST     DSECT
         AGO   .WMSTAL3
.WMSTAL2 ANOP
         DS    0D
WMST     EQU   *
.WMSTAL3 ANOP
         SPACE 1
WMSTNAME DS    C'WMST' -           TABLE IDENTIFICATION
WMSTID   DS    CL2 -               PERF. SPECIFICATION IDENTIFIER
WMSTWLLO DS    H -                 LOWEST WORKLOAD LEVEL SPECIFIED
WMSTPGVT DS    A -                 PERF GROUP VECTOR TABLE ADDRESS
WMSTPGVS DS    F -                 PERF GROUP VECTOR TABLE SIZE
WMSTPGDT DS    A -                 FIRST PERF GROUP DESCRIPTOR ADDRESS
WMSTPGDS DS    F -                 TOTAL PERF GROUP DESCRIPTOR SIZE
WMSTPOVT DS    A -                 PERF OBJECTIVE VECTOR TABLE ADDRESS
WMSTPOVS DS    F -                 PERF OBJECTIVE VECTOR TABLE SIZE
WMSTPODT DS    A -                 1ST PERF OBJECTIVE DESCRIPT ADDRESS
WMSTPODS DS    F -                 TOT PERF OBJECTIVE DESCRIPT SIZE
WMSTDMDT DS    A -                 FIRST DOMAIN DESCRIPTR ADDR @Z40BPCH
WMSTDMDS DS    F -                 TOT DOMAIN DESCRIPTOR SIZE  @Z40BPCH
WMSTDMVT DS    A -                 DOMAIN VECTOR TABLE ADDR    @Z40BPCH
WMSTDMVS DS    F -                 DOMAIN VECTOR TABLE SIZE    @Z40BPCH
WMSTDMDE DS    A -                 DMN TABLE LAST ENTRY ADDR   @Z40BPCH
WMSTWLHI DS    H -                 HIGHEST WORKLOAD LEVEL SPEC @Z40BPCH
WMSTPGHI DS    H -                 HIGHEST PERF GROUP NUMBER
WMSTPGPC DS    H -                 TOTAL COUNT OF PERF GROUP PERIODS
WMSTDMNC DS    H -                 TOTAL DOMAIN COUNT          @Z40BPCH
WMSTCPU  DS    F -                 CPU SERVICE COEFFICIENT
WMSTIOC  DS    F -                 IOC SERVICE COEFFICIENT
WMSTMSO  DS    F -                 MSO SERVICE COEFFICIENT
WMSTREAL DS    CL1                 REAL TIME INDICATOR        @ZM43084
WMSTRSVD DS    CL3                 RESERVED                   @ZM43084
WMSTSET  DS    A -                 SET IPS PROCESSOR ROUTINE ADDRESS
WMSTSTCB DS    A -                 SET IPS PROCESSOR TASK ADDRESS
WMSTNWST DS    A -                 SET IPS PROCESSOR NXT WMST ADDRESS
WMSTSECB DS    F -                 ECB FOR SET IPS PROCESSOR
WMSTIPC  DS    CL4 -               CPU SERVICE COEFICIENT      @Z40BPCH
WMSTIPI  DS    CL4 -               I/O SERVICE COEFFICIENT     @Z40BPCH
WMSTIPM  DS    CL4 -               MSO SERVICE COEFFICIENT     @Z40BPCH
WMSTEND  DS    0D -                END OF WMST
WMSTLEN  EQU   WMSTEND-WMST -      LENGTH OF WMST
         MEND
*                                                                    */
*%WMSTPLS2:  ;
*        %IF WMST9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %WMST9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF WMSTLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO WMSTPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 WMST BASED(WMSTPTR) BDY(DWORD),
*            %GOTO WMSTPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%WMSTPLS3:  WMSTDUM = WMSTLEVL' WMST';  /* PICK UP GIVEN LEVEL    */
*     WMSTDUM BDY(DWORD),
*%WMSTPLS4:  ;
*       10 WMSTNAME CHAR(4),        /* TABLE IDENTIFICATION - 'WMST' */
*       10 WMSTID   CHAR(2) BDY(WORD), /* PERF SPECIFICATION ID      */
*       10 WMSTWLLO FIXED(15),      /* LOWEST WORKLOAD LEVEL SPEC'D  */
*       10 WMSTPGVT PTR(31),        /* PERF GRP VECTOR TABLE ADDR    */
*       10 WMSTPGVS FIXED,          /* PERF GRP VECTOR TABLE SIZE    */
*       10 WMSTPGDT PTR(31),        /* 1ST PERF GRP DESCRIPTOR ADDR  */
*       10 WMSTPGDS FIXED,          /* TOT PERF GRP DESCRIPTOR SIZE  */
*       10 WMSTPOVT PTR(31),        /* PERF OBJ VECTOR TABLE ADDR    */
*       10 WMSTPOVS FIXED,          /* PERF OBJ VECTOR TABLE SIZE    */
*       10 WMSTPODT PTR(31),        /* 1ST PERF OBJ DESCRIPTOR ADDR  */
*       10 WMSTPODS FIXED,          /* TOT PERF OBJ DESCRIPTOR SIZE  */
*       10 WMSTDMDT PTR(31),        /* FIRST DMN DESC ADDR   @Z40BPCH*/
*       10 WMSTDMDS FIXED(31),      /* TOT DOMAIN DESC SIZE  @Z40BPCH*/
*       10 WMSTDMVT PTR(31),        /* DMN VECTOR TABLE ADDR @Z40BPCH*/
*       10 WMSTDMVS FIXED(31),      /* DMN VECTOR TABLE SIZE @Z40BPCH*/
*       10 WMSTDMDE PTR(31),        /* DMN TAB LAST NTRY ADR @Z40BPCH*/
*       10 WMSTWLHI FIXED(15),      /* HIGHEST WORKLD LEV SP @Z40BPCH*/
*       10 WMSTPGHI FIXED(15),      /* HIGH PERF GROUP NUMBER        */
*       10 WMSTPGPC FIXED(15),      /* TOTL PERF GROUP PERIOD COUNT  */
*       10 WMSTDMNC FIXED(15),      /* TOT DOMAIN COUNT      @Z40BPCH*/
*       10 WMSTCPU  FIXED,          /* CPU SERVICE COEFFICIENT       */
*       10 WMSTIOC  FIXED,          /* IOC SERVICE COEFFICIENT       */
*       10 WMSTMSO  FIXED,          /* MSO SERVICE COEFFICIENT       */
*       10 WMSTREAL FIXED(8),       /* REAL TIME INDICATOR   @ZM43084*/
*       10 WMSTRSVD FIXED(24),      /* RESERVED              @ZM43084*/
*       10 WMSTSET  PTR(31),        /* SET PROCS ROUTINE ADDR        */
*       10 WMSTSTCB PTR(31),        /* SET PROCS TASK ADDRESS        */
*       10 WMSTNWST PTR(31),        /* SET PROCS NXT WMST ADR        */
*       10 WMSTSECB CHAR(4) BDY(WORD), /* SET PROCS ECB              */
*       10 WMSTIPC CHAR(4) BDY(WORD), /* CPU SERVICE COEF.   @Z40BPCH*/
*       10 WMSTIPI CHAR(4) BDY(WORD), /* I/O SERVICE COEF.   @Z40BPCH*/
*       10 WMSTIPM CHAR(4) BDY(WORD), /* MSO SERVICE COEF.   @Z40BPCH*/
*       10 WMSTEND  CHAR(0) BDY(DWORD)   /* END OF WMST              */
*   WMST9999
*   %WMSTLEN = 'LENGTH(WMST)';      /* SYMBOLIC FOR LENGTH OF WMST   */
./ ADD NAME=IRAWPGDT
*        %GOTO WPGDPLS1; /*
         MACRO
         IRAWPGDT  &DSECT=YES
         IEZBITS                                                     */
*%WPGDPLS1:  ;
* /*                                                                 */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAWPGDT                                         */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - PERFORMANCE GROUP TABLE DESCRIPTION        */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 4, 07/30/75, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE WPGD PROVIDES THE DESCRIPTION OF HOW SERVICE   */
* /*         OBJECTIVES ARE ASSOCIATED TO GIVEN USER TRANSACTIONS    */
* /*         AT VARIOUS PERIODS OF THEIR EXISTENCE.  IT ALSO KEEPS   */
* /*         A HISTORY OF THE RATE OF UTILIZATION OF RESOURCES BY    */
* /*         THE TRANSACTIONS.                                       */
* /*                                                                 */
* /*         THE WPGP'S, WHICH ARE LISTED SEQUENTIALLY IN THE WPGD,  */
* /*         DEFINE PERIODS OF PROCESSING OR OF TIME, AND INDICATE   */
* /*         THE PERFORMANCE OBJECTIVES (I.E. - THE SERVICE RATES),  */
* /*         AND THE RESIDENCY INTERVALS, TO BE APPLIED.             */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE WPGD FOR A PARTICULAR   */
* /*         SYSTEM USER IS OBTAINED BY ADDING THE OFFSET IN THE     */
* /*         -OUCBWMG- FIELD OF THE SYSTEM RESOURCES MANAGER USER    */
* /*         CONTROL BLOCK TO THE ADDRESS IN THE -WMSTPGDT- FIELD    */
* /*         OF THE WORKLOAD MANAGER SPECIFICATION TABLE.            */
* /*                                                                 */
* /*         THE ADDRESS OF THE CURRENT WPGP IS OBTAINED BY ADDING   */
* /*         THE OFFSET IN THE -OUCBPGP- FIELD TO THE ADDRESS OF     */
* /*         THE WPGD.  THE ADDRESS OF A PARTICULAR WPGL VALUE IS    */
* /*         ALSO OBTAINED BY ADDING ITS INDICATED OFFSET TO THE     */
* /*         ADDRESS OF THE WPGD.                                    */
* /*                                                                 */
* /* *************************************************************** */
*        %GOTO WPGDPLS2; /*
         AGO   .WPGDAL1                                              */
* /* *************************************************************** */
* /*                                                                 */
* /*   CONSTRUCTION METHOD - THE ADDRESS OF THE 1ST WPGD IS PLACED   */
* /*         IN THE -WMSTPGDT- FIELD OF THE WORKLOAD MANAGER SPECI-  */
* /*         FICATION TABLE.  THE OFFSET TO THE WPGD FOR A GIVEN     */
* /*         PERFORMANCE GROUP NUMBER IS PLACED IN THE -WPGVTENT-    */
* /*         FIELD OF THE CORRESPONDING (NUMBERED) ENTRY IN THE      */
* /*         WORKLOAD MANAGER PERFORMANCE GROUP VECTOR TABLE.        */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON WPGD GIVES ADDRESSABILITY TO WPGD SYMBOLS.     */
* /*         USING ON WPGP GIVES ADDRESSABILITY TO WPGP SYMBOLS.     */
* /*         USING ON WPGL GIVES ADDRESSABILITY TO WPGL SYMBOLS.     */
* /*                                                                 */
* /*     PLS - %WPGDLEVL='USERLEVL' IF THE WPGD MAPPING IS TO BE     */
* /*           CONCATENATED WITH A PREVIOUS DECLARATION, WITH THE    */
* /*           WPGD BEING ASSIGNED THE INDICATED STRUCTURE LEVEL.    */
* /*         - %WPGD9999=',' IF THE STRUCTURE SHOULD NOT BE CLOSED.  */
* /*                                                                 */
* /*         TO ACCESS AS A SET OF STANDALONE STRUCTURES,            */
* /*         DECLARE  WPGDPTR PTR FOR THE WPGD,                      */
* /*                  WPGPPTR PTR FOR THE WPGP,                      */
* /*                  WPGLPTR PTR FOR THE WPGL.                      */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
* /*
.WPGDAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').WPGDAL2
WPGD     DSECT
         AGO   .WPGDAL3
.WPGDAL2 ANOP
         DS    0F
WPGD     EQU   *
.WPGDAL3 ANOP
         SPACE 1
WPGDPGN  DS    AL1 -               PERFORMANCE GROUP NUMBER
WPGDSIZ  DS    AL1 -               PERFORMANCE GROUP DESCRIPTOR SIZE-1
WPGDR02  DS    CL1 -               RESERVED
WPGDDFL  DS    CL1 -               PERFORMANCE GROUP DESCRIPTIVE FLAGS
WPGDVLD  EQU   BIT0 -              VALID PERFORMANCE GROUP IN NEW IPS
WPGDATM  DS    F -                 AVG TIME TO ABSORB ISV SERVICE AMT
WPGDISV  DS    F -                 PERFM GRP INTERVAL SERVICE VALUE
WPGDPGP  DS    0F -                1ST PERIOD ENTRY FOR PERFM GROUP
WPGDOBJN DS    AL1 -               PG PERIOD PERFORMANCE OBJECTIVE NO.
WPGDDMN  DS    AL1 -               PG PERIOD DOMAIN NO.        @Z40BPCH
         DS    CL2 -               RESERVED                    @Z40BPCH
WPGDAPGV DS    CL1 -               APG VALUE IF SPECIFIED      @Z40BPCH
WPGDINDS DS    CL1 -               PG PERIOD DESCRIPTIVE INDICATORS
WPGDFIN  EQU   BIT0 -              FINAL PERFORMANCE GROUP PERIOD
WPGDUNT  EQU   BIT1 -              PG PERIOD DURATION IS IN REAL TIME
WPGDAPG  EQU   BIT2 -              APG VALUE SPECIFIED      @Z40BPCH
WPGDRTB  EQU   BIT7 -              PG PERIOD RESPONSE/THROUGHPUT BIAS
WPGDISVP DS    AL1 -               PGP INTERVAL SERVICE VALUE OFFSET
WPGDDURP DS    AL1 -               PGP DURATION VALUE OFFSET IN WPGD
WPGDPGL  DS    0F -                START OF POSSIBLE WPGD EXTENSION
WPGDEND  DS    0F -                END OF WPGD
WPGDLEN  EQU   WPGDEND-WPGD -      LENGTH OF WPGD
         AIF   ('&DSECT' EQ 'NO').WPGDAL4
         SPACE 1
WPGP     DSECT
         SPACE 1
WPGPOBJN DS    AL1 -               PERFORMANCE OBJECTIVE NUMBER
WPGPDMN  DS    AL1 -               DOMAIN NUMBER               @Z40BPCH
         DS    CL2 -               RESERVED                    @Z40BPCH
WPGPAPGV DS    CL1 -               APG VALUE IF SPECIFIED      @Z40BPCH
WPGPINDS DS    CL1 -               PERIOD DESCRIPTIVE INDICATORS
WPGPFIN  EQU   BIT0 -              FINAL PERIOD FOR PERFORMANCE GROUP
WPGPUNT  EQU   BIT1 -              PERIOD DURATION IS IN REAL TIME
WPGPAPG  EQU   BIT2 -              APG VALUE SPECIFIED     @Z40BPCH
WPGPRTB  EQU   BIT7 -              PERIOD RESPONSE/THROUGHPUT BIAS
WPGPISVP DS    AL1 -               INTERVAL SERVICE VALUE OFFSET
WPGPDURP DS    AL1 -               PERIOD DURATION VALUE OFFSET
WPGPEND  DS    0F -                END OF WPGP
WPGPLEN  EQU   WPGPEND-WPGP -      LENGTH OF WPGP
         SPACE 1
WPGL     DSECT
         SPACE 1
WPGLISV  DS    0F -                INTERVAL SERVICE VALUE FOR A PERIOD
WPGLDUR  DS    0F -                PERIOD DURATION VALUE FOR A PERIOD
         DS    F -                 SPECIFIED VALUE STORAGE AREA
WPGLEND  DS    0F -                END OF WPGL
WPGLLEN  EQU   WPGLEND-WPGL -      LENGTH OF WPGL
.WPGDAL4 ANOP
         MEND
*                                                                    */
*%WPGDPLS2:  ;
*        %IF WPGD9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %WPGD9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %IF WPGDLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO WPGDPLS3;  /* YES, OMIT DECLARE STATEMENT   */
*   DCL
*     1 WPGD BASED(WPGDPTR) BDY(WORD),
*            %GOTO WPGDPLS4;        /* SKIP USER-GIVEN LEVEL         */
*%WPGDPLS3:  WPGDDUM = WPGDLEVL' WPGD';  /* PICK UP GIVEN LEVEL    */
*     WPGDDUM BDY(WORD),
*%WPGDPLS4:  ;
*       10 WPGDPGN  PTR(08),        /* PERFORMANCE GROUP NUMBER      */
*       10 WPGDSIZ  PTR(08),        /* PERF GROUP DESCRIPTOR SIZE-1  */
*       10 WPGDR02  FIXED(08),      /* RESERVED                      */
*       10 WPGDDFL  BIT(8),         /* PERF GROUP DESCRIPTIVE FLAGS  */
*         12 WPGDVLD BIT(1),        /* VALID PERF GROUP IN NEW IPS   */
*         12 WPGDRD1 BIT(7),        /* RESERVED                      */
*       10 WPGDATM  FIXED(32) UNSIGNED, /* TIME TO ABSORB ISV SERVIC */
*       10 WPGDISV  FIXED,          /* BASE ISV SERVICE FOR PERF GRP */
*       10 WPGDPGP  CHAR(8) BDY(WORD), /* 1ST PGP ENTRY FOR PERF GRP
*                                                           @Z40BPCH*/
*         12 WPGDOBJN PTR(8),       /* PGP PERFORMANCE OBJECTIVE NO. */
*         12 WPGDDMN PTR(8),        /* PGP DOMAIN NO.       @Z40BPCH */
*         12 * CHAR(2) BDY(HWORD),  /* RESERVED             @Z40BPCH */
*         12 WPGDAPGV PTR(8),       /* APG VALUE IF SPEC    @Z40BPCH */
*         12 WPGDINDS BIT(8),       /* PERF GRP PERIOD INDICATORS    */
*           14 WPGDFIN BIT(1),      /* FINAL PERF GROUP PERIOD       */
*           14 WPGDUNT BIT(1),      /* PGP DURATION IS IN REAL TIME  */
*           14 WPGDAPG BIT(1),      /*  APG VALUE SPECIFEID @Z40BPCH */
*           14 WPGDRB2 BIT(4),      /* RESERVED                      */
*           14 WPGDRTB BIT(1),      /* PGP RESPONSE/THROUGHPUT BIAS  */
*         12 WPGDISVP PTR(8),       /* PGP INTVL SERV VALUE OFFSET   */
*         12 WPGDDURP PTR(8),       /* PGP DURATION OFFSET IN WPGD   */
*       10 WPGDPGL  CHAR(0) BDY(WORD), /* BEGIN FIXED(31) DUR OR ISV */
*       10 WPGDEND  CHAR(0) BDY(WORD)  /* END OF WPGD                */
*        %IF WPGDLEVL ^= ''         /* IS STRUCTURE CONCATENATED     */
*            %THEN %GOTO WPGDPLS5;  /* YES, OMIT WPGP STANDALON SPEC */
*   ,
*     1 WPGP BASED(WPGPPTR) BDY(WORD), /* PERFORMANCE PERIOD ENTRY   */
*       10 WPGPOBJN PTR(8),         /* PERFORMANCE OBJECTIVE NUMBER  */
*       10 WPGPDMN PTR(8),          /* DOMAIN NUMBER        @Z40BPCH */
*       10 * CHAR(2) BDY(HWORD),    /* RESERVED             @Z40BPCH */
        10 WPGPAPGV PTR(8),         /* APG VALUE IF SPEC.   @Z40BPCH */
*       10 WPGPINDS BIT(8),         /* PERIOD DESCRIPTIVE INDICATORS */
*         12 WPGPFIN BIT(1),        /* FINAL PERIOD FOR PERF GROUP   */
*         12 WPGPUNT BIT(1),        /* PERIOD DURATION IS REAL TIME  */
*         12 WPGPAPG BIT(1),        /* APG VALUE SPECIFIED  @Z40BPCH */
*         12 WPGPRB2 BIT(4),        /* RESERVED                      */
*         12 WPGPRTB BIT(1),        /* PERIOD RESPONSE/THRUPUT BIAS  */
*       10 WPGPISVP PTR(8),         /* PERIOD INTVL SERV VALU OFFSET */
*       10 WPGPDURP PTR(8),         /* PERIOD DURATN OFFSET IN WPGD  */
*       10 WPGPEND  CHAR(0) BDY(WORD)  /* END OF WPGP                */
*   ,
*     1 WPGL BASED(WPGLPTR) BDY(WORD), /* SPECIFIED VALUE STORE AREA */
*       10 WPGLISV  FIXED(31),      /* INTVL SERV VALUE FOR ANY PGP  */
*         12 WPGLDUR  FIXED(32) UNSIGNED, /* DURATN VLU FOR ANY PGP  */
*       10 WPGLEND  CHAR(0) BDY(WORD)  /* END OF WPGL                */
*   %WPGPLEN = 'LENGTH(WPGP)';      /* SYMBOLIC FOR LENGTH OF WPGP   */
*   %WPGLLEN = 'LENGTH(WPGL)';      /* SYMBOLIC FOR LENGTH OF WPGL   */
*%WPGDPLS5:  ;
*   WPGD9999
*   %WPGDLEN = 'LENGTH(WPGD)';      /* SYMBOLIC FOR LENGTH OF WPGD   */
./ ADD NAME=IRAWPODT
*%;  /*
         MACRO
         IRAWPODT  &DSECT=YES
         AGO   .WPODAL0                                              */
*@       LIST  PUSH;                /* SAVE LISTING STATUS FOR WPOD  */
*        %IF WPODSFX = ''           /* IS NAMING CHARACTER OMITTED   */
*            %THEN %WPODSFX = ' ';  /* YES, INSERT PLACEHOLDER BLANK */
*        %IF WPODSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %WPODDUM = '@       LIST  OFF '; /* BYP INTRO CMT */
*        %ELSE     %WPODDUM = '@       LIST  PUSH'; /* DMY CNTRL CMT */
*WPODDUM;
*        %IF WPODSFX = ' '          /* IS THIS  THE FIRST INCLUDE    */
*            %THEN %WPODDUM = '@       LIST  POP '; /* PRT INTRO CMT */
*WPODDUM;
*%;  /*
.WPODAL0 ANOP                                                        */
* /* MACCOMP Z-4 SC1CX/PKD16                                         */
* /* MACSTAT Z-4 75007/Z40BPSS                                       */
* /* *************************************************************** */
* /*                                                                 */
* /*   MACRO NAME - IRAWPODT                                         */
* /*                                                                 */
* /*   DESCRIPTIVE NAME - PERFORMANCE OBJECTIVE TABLE DESCRIPTION    */
* /*                                                                 */
* /*   COPYRIGHT - NONE                                              */
* /*                                                                 */
* /*   STATUS - OS/VS2 RELEASE 2, 04/05/73, LEVEL=1                  */
* /*                                                                 */
* /*   FUNCTION - THE WPOD SPECIFIES, AS A FUNCTION OF THE SYSTEM    */
* /*         WORKLOAD, THE RATES AT WHICH RESOURCES ARE TO BE MADE   */
* /*         AVAILABLE TO USER TRANSACTIONS.  ACTUAL SERVICE RATES   */
* /*         ARE APPLIED TO THE WPOD'S TO CALCULATE THE EQUIVALENT   */
* /*         WORKLOAD LEVELS, WHOSE COMPARISON THEN INDICATES WHICH  */
* /*         TRANSACTIONS ARE 'BEHIND' OR 'AHEAD' OF THE REST.       */
* /*                                                                 */
* /*         THE WPOD TO BE USED FOR A TRANSACTION IS INDICATED BY   */
* /*         THE -WPGPOBJN- FIELD OF THE CURRENT PERIOD WITHIN THE   */
* /*         APPLICABLE PERFORMANCE GROUP DESCRIPTION.               */
* /*                                                                 */
* /*   METHOD OF ACCESS - THE ADDRESS OF THE WPOD FOR A PARTICULAR   */
* /*         SYSTEM USER IS OBTAINED BY ADDING THE OFFSET IN THE     */
* /*         -OUCBWMO- FIELD OF THE SYSTEM RESOURCES MANAGER USER    */
* /*         CONTROL BLOCK TO THE ADDRESS IN THE -WMSTPODT- FIELD    */
* /*         OF THE WORKLOAD MANAGER SPECIFICATION TABLE.            */
* /*                                                                 */
* /* *************************************************************** */
*%;  /*
         AGO   .WPODAL1                                              */
*@       LIST  OFF;                 /* BYPASS EXPLANATORY COMMENTS   */
* /* *************************************************************** */
* /*                                                                 */
* /*   CONSTRUCTION METHOD - THE ADDRESS OF THE 1ST WPOD IS PLACED   */
* /*         IN THE -WMSTPODT- FIELD OF THE WORKLOAD MANAGER SPECI-  */
* /*         FICATION TABLE.  THE OFFSET TO THE WPOD FOR A GIVEN     */
* /*         PERFORMANCE OBJECTIVE NO. IS PLACED IN THE -WPOVTENT-   */
* /*         FIELD OF THE CORRESPONDING (NUMBERED) ENTRY IN THE      */
* /*         WORKLOAD MANAGER PERFORMANCE OBJECTIVE VECTOR TABLE.    */
* /*                                                                 */
* /*   INVOCATION PARAMETERS AND/OR KEYWORDS =                       */
* /*                                                                 */
* /*     BAL - DSECT=NO IF DSECT IS NOT TO BE PRODUCED.              */
* /*                                                                 */
* /*         USING ON WPOD GIVES ADDRESSABILITY TO WPOD SYMBOLS.     */
* /*                                                                 */
* /*     PLS - %WPODSFX='USERCHAR' IF THE INDICATED CHARACTER IS     */
* /*           TO BE APPENDED TO ALL NAMES IN THE MAPPING, THEREBY   */
* /*           CREATING DUPLICATE DEFINITIONS BASED ON DIFFERENT     */
* /*           POINTERS.                                             */
* /*                                                                 */
* /*           NOTE - DUE TO THE FACILITY WHICH PERMITS MULTIPLE     */
* /*           INCLUDES OF THE IRAWPODT MAPPING MACRO, IT IS NOT     */
* /*           POSSIBLE TO CONCATENATE THE IRAWPODT DECLARATION      */
* /*           WITH ANOTHER DECLARATION IN SUCH A FASHION THAT       */
* /*           BOTH DECLARATIONS ARE BASED ON THE SAME POINTER.      */
* /*                                                                 */
* /*         TO ACCESS AS A STANDALONE STRUCTURE DCL WPODPTR PTR.    */
* /*                                                                 */
* /*   CHANGE ACTIVITY =                                             */
* /*                                                                 */
* /*   A000000-999999                                          Y02133*/
* /*                                                                 */
* /* *************************************************************** */
*%;  /*
.WPODAL1 ANOP
         SPACE 1
         AIF   ('&DSECT' EQ 'NO').WPODAL2
WPOD     DSECT
         AGO   .WPODAL3
.WPODAL2 ANOP
         DS    0H
WPOD     EQU   *
.WPODAL3 ANOP
         SPACE 1
WPOP     DS    0CL4 -              PREV PERFORMANCE OBJECTIVE SEGMENT
WPOPSRV  DS    H -                 SERVICE RATE AT PREVIOUS POINT
WPOPWKL  DS    H -                 WORKLOD LEVL AT PREVIOUS POINT
WPOS     DS    0CL4 -              CURR PERFORMANCE OBJECTIVE SEGMENT
WPOSSRV  DS    H -                 SERVICE RATE AT CURR PT IN OBJCTV
WPOSWKL  DS    H -                 WORKLOD LEVL AT CURR PT IN OBJCTV
WPODEND  DS    0H -                END OF WPOD
WPODLEN  EQU   WPODEND-WPOS -      LENGTH OF WPOD
         MEND
*                                                                    */
*@       LIST  POP;                 /* RESUME MACRO OUTPUT LISTING   */
*        %WPODLABL = 'WPOD'  ;      /* INITIALIZE THE LABEL VARIABLE */
*        %IF WPODSFX ^= ' '         /* IS THIS THE DUPLICATE INCLUDE */
*            %THEN %WPODLABL = 'WPOD'WPODSFX ; /* RENAME STRUCTURE */
*        %IF WPOD9999 ^= ','        /* DOES STRUCTURE CONTINUE       */
*            %THEN %WPOD9999 = ';'; /* NO, END DECLARE STATEMENT     */
*        %WPODDUM = WPODLABL'PTR' ;  /* QUALIFY BASED POINTER NAME */
*   DCL
*     1 WPODLABL BASED(WPODDUM) BDY(WORD),
*            %WPODLABL = 'WPOP'WPODSFX   ;
*       10 WPODLABL BDY(WORD),      /* PREV PERF OBJECTIVE SEGMENT   */
*            %WPODLABL = 'WPOPSRV'WPODSFX;
*         12 WPODLABL FIXED(15),    /* SERVICE RATE AT PREV POINT    */
*            %WPODLABL = 'WPOPWKL'WPODSFX;
*         12 WPODLABL FIXED(16) UNSIGNED, /* WKLD LEVL AT PREV PT    */
*            %WPODLABL = 'WPODEND'WPODSFX;
*       10 WPODLABL CHAR(0) BDY(WORD), /* END OF ONE WPOD SEGMENT    */
*            %WPODLABL = 'WPOS'WPODSFX   ;
*       10 WPODLABL BDY(WORD),      /* CURR PERF OBJECTIVE SEGMENT   */
*            %WPODLABL = 'WPOSSRV'WPODSFX;
*         12 WPODLABL FIXED(15),    /* SERVICE RATE AT CURR POINT    */
*            %WPODLABL = 'WPOSWKL'WPODSFX;
*         12 WPODLABL FIXED(16) UNSIGNED, /* WKLD LEVL AT CURR PT    */
*            %WPODLABL = 'WPOSEND'WPODSFX;
*       10 WPODLABL CHAR(0) BDY(WORD) /* END OF CURR WPOD SEGMENT    */
*   WPOD9999
*   %WPODLEN = 'LENGTH(WPOS)';      /* SYMBOLIC FOR LENGTH OF WPOD   */
./ ADD NAME=IRBLANGP
         MACRO
         IRBLANGP &CODE,&TEXT
         AGO   .LABEL1
*/*                                                                  */
*/***** START OF SPECIFICATIONS **************************************/
*/*                                                                  */
*/* MACCOMP Y-2 SC1CQ/GAM20                                          */
*/* MACSTAT Y-2 73018/Y02150                                         */
*/*                                                                  */
*/* MODULE-NAME = IRBLANGP                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = LANGUAGE PART MACRO                           */
*/*                                                                  */
*/* COPYRIGHT = NONE                                                 */
*/* STATUS = RELEASE 2 / VERSION 0                                   */
*/*                                                                  */
*/* FUNCTION = INSERTS A POINTER INTO A VECTOR LIST WHICH POINTS     */
*/*            TO A FULL WORD LENGTH AND TEXT.  THE TEXT IS          */
*/*            CONSIDERED A TRANSLATABLE LANGUAGE PART.              */
*/*                                                                  */
*/* NOTES = NONE                                                     */
*/*                                                                  */
*/* MODULE-TYPE = BAL EXECUTABLE MACRO                               */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/*                                                                  */
*/* A000000-999999                                             Y02150*/
*/*                                                                  */
*/* METHOD-OF-INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    BAL - LANGPART X,.QUOTEMARK. LANGUAGE PART .QUOTEMARK.        */
*/*                                                                  */
*/*          WHERE X IS A SINGLE CHARACTER WHICH WILL FORM THE       */
*/*          CSECT NAME IRBMFLXV.  LANGUAGE PART IS THE TEXT WHICH   */
*/*          FORMS THE LANGUAGE PART.                                */
*/*                                                                  */
*/***** END OF SPECIFICATIONS ****************************************/
*/*                                                                  */
.LABEL1  ANOP
         LCLC  &A
&A       SETC  'L'''
*/* MACDATE Y-2 73018 */
IRBMFL&CODE.V  CSECT
         DC    A(LGTH&SYSNDX)
IRBMFL&CODE.P  CSECT
LGTH&SYSNDX DC A(&A.TEXT&SYSNDX)  .    LENGTH
TEXT&SYSNDX DC    C&TEXT
         MEND
./ ADD NAME=IRBSTGST
*%IRBSTGST:                         /* GLOBAL SUPERVISOR TABLE       */
*  MACRO
*        KEYS(
*              ATTRIBUT             /* ATTRIBUTES OF THE STRUCTURE
*                                      PRODUCED BY THIS MACRO. (THE
*                                      BOUNDARY ATTRIBUTE IS APPENDED
*                                      TO IT.)                       */
*            );
* /* BILINGUAL (MAPPING) MACRO
         MACRO
&STGSLBL IRBSTGST
*
*/**** START OF SPECIFICATIONS ***************************************/
*/*                                                                  */
*/* MACCOMP Y-2 SC1CQ/GAM20                                          */
*/* MACSTAT Y-2 73121/Y02150                                         */
*/* MACMEAN STGST MEANS GLOBAL SUPERVISOR TABLE                      */
*/*                                                                  */
*/* MODULE-NAME = IRBSTGST                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = GLOBAL SUPERVISOR TABLE                       */
*/*                                                                  */
*/* COPYRIGHT = NONE                                                 */
*/*                                                                  */
*/* STATUS = RELEASE 2, VERSION 0                                    */
*/*                                                                  */
*/* FUNCTION = MAPPING MACRO FOR THE STGST.  IT CONTAINS MF/1 DATA   */
*/*            WHICH MUST BE FIXED OR BE ACCESSIBLE FROM ANY ADDRESS */
*/*            SPACE.                                                */
*/*                                                                  */
*/* NOTES = SEE BELOW                                                */
*/*                                                                  */
*/* MODULE-TYPE = BILINGUAL MAPPING MACRO                            */
*/*                                                                  */
*/* CHANGE-ACTIVITY =                                                */
*/*                                                                  */
*/* A000000-999999                                             Y02150*/
*/*                                                                  */
*/* METHOD-OF-INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    PLS - .QUESTION MARK.IRBSTGST ATTRIBUT(ATTRIBUTES)            */
*/*          WHERE ATTRIBUTES ARE ANY ACCEPTABLE PLS ATTRIBUTES      */
*/*          FOR STRUCTURE DECLARATIONS.                             */
*/*                                                                  */
*/*    BAL - LABEL IRBSTGST                                          */
*/*          WHERE THE OPTIONAL LABEL PROVIDES A DSECT BY THE SAME   */
*/*          NAME.                                                   */
*/*                                                                  */
*/**** END OF SPECIFICATIONS *****************************************/
*/*
&STGSLBL DSECT ,                    START OF GLOBAL SUPERVISOR TABLE
         DS    0F                   FULLWORD BOUNDARY
STGSNAME DS    CL4'STGS'            TABLE NAME FOR DUMP IDENTIFICATION
STGSSCT  DS    A                    ADDRESS OF SCT
STGSTCB  DS    A                    ADDRESS OF MF/1 MAINLINE TCB
STGSASID DS    AL2                  MF/1 ASID
STGSRES1 DS    AL2                  RESERVED
STGSMMV  DS    A                    ADDRESS OF MFROUTER VECTOR TABLE
STGSCYC  DS    2F                   SAMPLING CYCLE INTERVAL, BIT 51
*                                         IS ONE MICROSECOND
         MEXIT
         MEND
**/
*    DCL KEY CHAR;                  /* KEY WORD PRINTED IN COMMENT   */
     ANS(                                                              '
*/**** START OF SPECIFICATIONS ***************************************/
*/*                                                                  */
*/* MACCOMP Y-2 SC1CQ/GAM20                                          */
*/* MACSTAT Y-2 73121/Y02150                                         */
*/* MACMEAN STGST MEANS GLOBAL SUPERVISOR TABLE                      */
*/*                                                                  */
*/* MODULE-NAME = IRBSTGST                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = GLOBAL SUPERVISOR TABLE                       */
*/*                                                                  */
 '      ) COL(2);
     ANS(                                                              '
*/* COPYRIGHT = NONE                                                 */
*/*                                                                  */
*/* STATUS = RELEASE 2, VERSION 0                                    */
*/*                                                                  */
*/* FUNCTION = MAPPING MACRO FOR THE STGST.  IT CONTAINS MF/1 DATA   */
*/*            WHICH MUST BE FIXED OR BE ACCESSIBLE FROM ANY ADDRESS */
*/*            SPACE.                                                */
*/*                                                                  */
*/* NOTES = SEE BELOW                                                */
*/*                                                                  */
*/* MODULE-TYPE = BILINGUAL MAPPING MACRO                            */
 '      ) COL(2);
     ANS(                                                              '
*/*                                                                  */
*/* CHANGE-ACTIVITY =                                                */
*/*                                                                  */
*/* A000000-999999                                             Y02150*/
*/*                                                                  */
 '      ) COL(2);
     ANS(                                                              '
*/* METHOD-OF-INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    PLS - .QUESTION MARK.IRBSTGST ATTRIBUT(ATTRIBUTES)            */
*/*          WHERE ATTRIBUTES ARE ANY ACCEPTABLE PLS ATTRIBUTES      */
*/*          FOR STRUCTURE DECLARATIONS.                             */
*/*                                                                  */
*/*    BAL - LABEL IRBSTGST                                          */
*/*          WHERE THE OPTIONAL LABEL PROVIDES A DSECT BY THE SAME   */
*/*          NAME.                                                   */
*/*                                                                  */
*/**** END OF SPECIFICATIONS *****************************************/
 '      ) COL(2);
*
*    /* ANSWER BACK A COPY OF INVOKING STATEMENT                     */
*    IF ATTRIBUT = '' THEN          /* IF NO STRUCTURE ATTRIBUTES WERE
*                                      INPUT, DO NOT PRINT KEY WORD  */
*      KEY = '';                    /* KEY WORD IS BLANKS            */
*    ELSE
*      KEY = 'ATTRIBUT';            /* PRINT KEYWORD NAME            */
*    ANS('/* ?'MACLABELMACNAME' 'MACLISTKEYATTRIBUT' */'
*       ) SKIP;
*
*    /* ANSWER DECLARE, STRUCTURE NAME, INPUT ATTRIBUTES OF STRUCTURE*/
*    /* AND BOUNDARY ATTRIBUTE.                                      */
*    ANS(
*              'DECLARE                                               '
*       )SKIP;
*    ANS(
*          '  1 STGST               /* GLOBAL SUPERVISOR TABLE      */'
*       )SKIP;
*    ANS(
*              '        'ATTRIBUT(1)'                             '
*       )SKIP;
*    ANS(
*              '        BDY(WORD),                                    '
*       )SKIP;
*
*    /* ANSWER BACK THE STRUCTURE DEFINITION                         */
*ANS(
*          '    2 STGSNAME          /* TABLE NAME (STGS)             */
*                     CHAR(4),
*               2 STGSSCT           /* ADDRESS OF SUPERVISOR CONTROL
*                                      TABLE (STSCT)                 */
*                     PTR(31),
*               2 STGSTCB           /* TCB ADDRESS OF TASK WHICH
*                                      ISSUED MSTART SVC (SVC 103,
*                                      CODE 13) (IRBMFMFC)           */
*                     PTR(31),                                        '
*   )SKIP;
*ANS(
*          '    2 STGSASID          /* ASID OF TASK WHICH ISSUED
*                                      MFSTART SVC (SVC 103, CODE 13)
*                                      (IRBMFMFC)                    */
*                     FIXED(15),
*               2 *   CHAR(2),
*               2 STGSMMV           /* ADDRESS OF MFROUTER MG VECTOR
*                                      TABLE (MFMMV)                 */
*                     PTR(31),
*               2 STGSCYC           /* MF/1 SAMPLING CYCLE PERIOD, IN
*                                      TIME OF DAY (TOD) CLOCK FORMAT*/
*                     CHAR(8)                                         '
*   )SKIP;
*
*    ANS(';') SKIP;                 /* ALIGN ; OF DECLARE WITH 'D'   */
*  %END;
./ ADD NAME=IRBSTMMV
*%IRBSTMMV:
*/* BILINGUAL MAPPING MACRO
         MACRO
         IRBSTMMV
**/
*/**** START OF SPECIFICATIONS ***************************************/
*/*                                                                  */
*/* MACCOMP Y-2 SC1CQ/GAM20                                          */
*/* MACSTAT Y-2 73018/Y02150                                         */
*/* MACMEAN MEANS MFROUTER MEASUREMENT VECTOR TABLE                  */
*/*                                                                  */
*/* MODULE-NAME = IRBSTMMV                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = MFROUTER MEASUREMENT VECTOR TABLE (MMV)       */
*/*                                                                  */
*/* COPYRIGHT = NONE                                                 */
*/*                                                                  */
*/* STATUS = RELEASE 2 / VERSION 0                                   */
*/*                                                                  */
*/* FUNCTION = MAPPING MACRO FOR THE MMV.  THE MMV CONTAINS ONE      */
*/*            CONTROL BLOCK FOR EACH TYPE OF MFROUTER CALL.  EACH   */
*/*            OF THESE ENTRIES POINTS TO A LIST OF MEASUREMENT      */
*/*            GATHERING ROUTINES AND THEIR ASSOCIATED PARAMETERS    */
*/*            WHICH ARE TO BE EXECUTED AT THIS MFROUTER CALL.       */
*/*                                                                  */
*/* NOTES = NONE                                                     */
*/*                                                                  */
*/* MODULE-TYPE = BILINGUAL MAPPING MACRO                            */
*/*                                                                  */
*/* CHANGE-ACTIVITY =                                                */
*/*                                                                  */
*/* A000000-999999                                             Y01250*/
*/*                                                                  */
*/* METHOD-OF-INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    PLS - .QUESTION MARK.IRBSTMMV  ATTRIBUT(ATTRIBUTES)           */
*/*          WHERE THE ATTRIBUTES ARE ANY ACCEPTABLE PLS ATTRIBUTES  */
*/*                                                                  */
*/*    BAL - IRBSTMMV - PROVIDES TWO DSECTS NAMED                    */
*/*                     IRBMMEVTL - EVENT LIST ELEMENT               */
*/*                     IRBMMMGRL - MG ROUTINE LIST ELEMENT          */
*/*                                                                  */
*/***** END OF SPECIFICATIONS ****************************************/
*/*
STMMEVTL DSECT ,                    START OF MMV
STMMEVNT DS    A                    ADDRESS OF MG ROUTINE LIST FOR THIS
*                                   EVENT
STMMNXMG DS    F                    INDEX OF NEXT AVAILABLE SLOT IN MG
*                                   ROUTINE LIST
STMMMGRL DSECT ,                    START OF MG ROUTINE LIST
STMMMGAD DS    A                    ADDRESS OF MG ROUTINE
STMMMGDA DS    A                    ADDRESS OF DATA FOR THIS MG ROUTINE
STMMMGNX DS    0C                   NEXT AVAILABLE POSITION IN DSECT
         MEXIT
         MEND
**/
*  MACRO
*        KEYS(
*              ATTRIBUT             /* ATTRIBUTES OF THE STRUCTURE
*                                      PRODUCED BY THIS MACRO. (THE
*                                      BOUNDARY ATTRIBUTE IS APPENDED
*                                      TO IT.)                       */
*            );
*
*    DCL KEY CHAR;                  /* KEY WORD PRINTED IN COMMENT   */
     ANS(                                                              '
*/*                                                                   */
*/**** START OF SPECIFICATIONS ****************************************/
*/*                                                                   */
*/* MACCOMP Y-2 SC1CQ/GAM20                                           */
*/* MACSTAT Y-2 73018/Y02150                                          */
*/* MACMEAN MEANS MFROUTER MEASUREMENT VECTOR TABLE                   */
*/*                                                                   */
*/* MODULE-NAME = IRBSTMMV                                            */
*/*                                                                   */
*/* DESCRIPTIVE-NAME = MFROUTER MEASUREMENT VECTOR TABLE (MMV)        */
*/*                                                                   */
*/* COPYRIGHT = NONE                                                  */
*/*                                                                   */
 '      ) COL(2);
     ANS(                                                              '
*/* STATUS = RELEASE 2 / VERSION 0                                    */
*/*                                                                   */
*/* FUNCTION = MAPPING MACRO FOR THE MMV.  THE MMV CONTAINS ONE       */
*/*            CONTROL BLOCK FOR EACH TYPE OF MFROUTER CALL.  EACH    */
*/*            OF THESE ENTRIES POINTS TO A LIST OF MEASUREMENT       */
*/*            GATHERING ROUTINES AND THEIR ASSOCIATED PARAMETERS     */
*/*            WHICH ARE TO BE EXECUTED AT THIS MFROUTER CALL.        */
*/*                                                                   */
*/* NOTES = NONE                                                      */
*/*                                                                   */
*/* MODULE-TYPE = BILINGUAL MAPPING MACRO                             */
*/*                                                                   */
 '      ) COL(2);
     ANS(                                                              '
*/* CHANGE-ACTIVITY =                                                 */
*/*                                                                   */
*/* A000000-999999                                             Y02150 */
*/*                                                                   */
*/* METHOD-OF-INVOCATION = SEE BELOW                                  */
*/*                                                                   */
*/*    PLS - .QUESTION MARK.IRBSTMMV  ATTRIBUT(ATTRIBUTES)            */
*/*          WHERE THE ATTRIBUTES ARE ANY ACCEPTABLE PLS ATTRIBUTES   */
*/*                                                                   */
 '      ) COL(2);
     ANS(                                                              '
*/*    BAL - IRBSTMMV - PROVIDES TWO DSECTS NAMED                     */
*/*                     IRBMMEVTL - EVENT LIST ELEMENT                */
*/*                     IRBMMMGRL - MG ROUTINE LIST ELEMENT           */
*/*                                                                   */
*/***** END OF SPECIFICATIONS *****************************************/
*/*                                                                   */
 '      ) COL(2);
*
*    /* ANSWER BACK A COPY OF INVOKING STATEMENT                     */
*    IF ATTRIBUT = '' THEN          /* IF NO STRUCTURE ATTRIBUTES WERE
*                                      INPUT, DO NOT PRINT KEY WORD  */
*      KEY = '';                    /* KEY WORD IS BLANKS            */
*    ELSE
*      KEY = 'ATTRIBUT';            /* PRINT KEYWORD NAME            */
*    ANS('/* ?'MACLABELMACNAME' 'MACLISTKEYATTRIBUT' */'
*       ) SKIP;
*
*    /* ANSWER DECLARE, STRUCTURE NAME, INPUT ATTRIBUTES OF STRUCTURE*/
*    /* AND BOUNDARY ATTRIBUTE.                                      */
*    ANS(
*              'DECLARE                                               '
*       )SKIP;
*    ANS(
*              '  1 STMMEVTL        /* MMV EVENT LIST               */
*                        (*)                                          '
*       )SKIP;
*    ANS(
*              '        'ATTRIBUT(1)'                             '
*       )SKIP;
*    ANS(
*              '        BDY(WORD),                                    '
*       )SKIP;
*
*    /* ANSWER BACK THE STRUCTURE DEFINITION                         */
*
*    ANS(
*              '   2 STMMEVNT       /* ADDRESS OF MG ROUTINE LIST FOR
*                                      THIS EVENT                   */
*                        POINTER(31),
*                  2 STMMNXMG       /* INDEX OF NEXT AVAILABLE SLOT
*                                      IN THE MG ROUTINE LIST       */
*                        FIXED BINARY(31),
*                1 STMMMGRL         /* MG ROUTINE LIST              */
*                      (*)
*                      BASED,
*                  2 STMMMGAD       /* ADDRESS OF MG ROUTINE        */
*                        POINTER(31),
*                  2 STMMMGDA       /* ADDRESS OF DATA FOR THIS
*                                      MG ROUTINE                   */
*                        POINTER(31),                                 '
*       )SKIP;
*    ANS(
*              ' STMMTIME           /* TQE EXPIRED EVENT NUMBER     */
*                      FIXED BINARY(31)
*                      CONSTANT(1),
*                STMMTCH            /* TEST CHANNEL SIGP INTERRUPT  */
*                      FIXED BINARY(31)
*                      CONSTANT(2),
*                STMMMEVT           /* MAX MF/1 EVENT INDEX         */
*                      FIXED BINARY(31)
*                      CONSTANT(2),
*                STMMMMGR           /* MAX MG ROUTINES PER EVENT    */
*                      FIXED BINARY(31)
*                      CONSTANT(3)                                    '
*       )SKIP;
*    ANS(';') SKIP;                 /* ALIGN ; OF DECLARE WITH 'D'   */
*  %END;
./ ADD NAME=ISCAN
         MACRO
&TAG     ISCAN &TREE
.*A000000                                                        Y02147
.**********************************************************************
LJW&SYSNDX EQU 1
         AIF   (K'&TREE EQ K'&TREE(1)+2).LW1
&TAG     L     1,&TREE
.LW0     USING IGARPTH,LJW&SYSNDX
         OI    PATH,B'0110'  INITIALIZE FOR SCANNING OPERATIONS.
         AGO   .FIN
.LW1     ANOP
&TAG     LR    1,&TREE
         AGO   .LW0
.FIN     DROP  LJW&SYSNDX
         RPTDSECT
         MEND
./ ADD NAME=ISDACSB5

    /*****************************************************************/
    /*                                                               */
    /* DECLARES FOR CONSTANTS FOR ISDACSB0 AND 1             @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      CVTPTR PTR(31) REG(2) RSTD;   /* WORKPTR SAVED         @Y30LB50*/
    DCL
      RETCODE FIXED(31) REG(3) RSTD;/* RETURN CODE-ISDASDA0  @Y30LB50*/
    DCL
      WORKPTR PTR(31);              /* INPUT PARM FROM IFCSDA00--
                                       POINTER TO SDACVT     @Y30LB50*/
    DCL
      BLOCKKNT FIXED(15) CONSTANT(23);/* COUNT OF RECORDS THAT CAN BE
                                       HELD IN ONE BLOCK     @Y30LB50*/
    DCL
      MAXCSS FIXED(15) CONSTANT(4); /* NUMBER OF CS'S POSSIBLE
                                                             @Y30LB50*/
    DCL
      CSBSPNO BIT(8) CONSTANT('01'X);/* SUBPOOL NUMBER FOR CSB AND
                                       CSF ACCUMULATOR REQUESTS
                                                             @Y30LB50*/
    DCL
      NFORCED FIXED(15) CONSTANT(4);/* NUMBER OF FORCED SENSE LOGS
                                       AFTER AN ERROR BUFFERED LOG
                                                             @Y30LB50*/
    DCL
      R15 FIXED(31) REG(15) UNRSTD; /*                       @Y30LB50*/
    DCL
      R0 FIXED(31) REG(0) UNRSTD;   /*                       @Y30LB50*/
    DCL
      R1 FIXED(31) REG(1) UNRSTD;   /*                       @Y30LB50*/
    DCL
      LWORKPTR PTR(31) REG(9) RSTD; /* WORKAREA PTR          @Y30LB50*/
    DCL
      CSPTR PTR(31) REG(8) RSTD;    /* CS TABLE PTR          @Y30LB50*/
    DCL
      ON BIT(1) CONSTANT('1'B);     /* MASK FOR DETERMINING SETTING
                                       OF BIT                @Y30LB50*/
    DCL
      WORKSPNO CHAR(1) STATIC LOCAL INIT('00'X);/* SUBPOOL NUMBER FOR
                                       CSB WORK AREA         @Y30LB50*/
    DCL
      1 PATCH CHAR(50) STATIC LOCAL,
       2 *(50) CHAR(1) INIT((50)'00'X);/* MAINTENANCE AREA   @Y30LB50
                                                                     */
 @EJECT;
    DCL                             /* DESCRIPTION OF INFO. FOR
                                       COLLECTING AND FORMATTING
                                       BUFFERED LOG DATA AND FORCED
                                       LOG DATA BY CS NUMBER @Y30LB50*/
      1 CSTBLS BASED(CSPTR),        /*                       @Y30LB50*/
       2 BFRCNT FIXED(15),          /* TOTAL-BUFFERED LOGS COLLECTED
                                                             @Y30LB50*/
       2 FBFRCNT FIXED(15),         /* TOTAL-ERROR LOGS COLLECTED
                                                             @Y30LB50*/
       2 ACCUM PTR(31),             /* ADDR OF FIRST CSB BLK FOR CS
                                                             @Y30LB50*/
       2 ACCMPTR PTR(31),           /* ADDR OF CURRENT CSB BLOCK
                                                             @Y30LB50*/
       2 NEXTCSB PTR(31),           /* ADDR TO STORE NEXT CSB RECORD
                                                             @Y30LB50*/
       2 CSBCNT FIXED(15),          /* COUNT OF CSB LOGS IN CURR BLK
                                                             @Y30LB50*/
       2 FRCDLOGS FIXED(15),        /* COUNT OF FORCED LOGS EXPECTED
                                                             @Y30LB50*/
       2 CSBFIRST PTR(31),          /* PTR TO EARLIEST CSB RECORD
                                                             @Y30LB50*/
       2 FACCUM PTR(31),            /* ADDR OF FIRST CSF BLK FOR CS
                                                             @Y30LB50*/
       2 FACCMPTR PTR(31),          /* ADDR OF CURRENT CSF BLOCK
                                                             @Y30LB50*/
       2 NEXTCSF PTR(31),           /* ADDR TO STORE NEXT CSF LOG
                                                             @Y30LB50*/
       2 CSFFIRST PTR(31),          /* PTR TO EARLIEST CSF RECORD
                                                             @Y30LB50*/
       2 CSFCNT FIXED(15),          /* COUNT OF CSF LOGS IN CURR BLK
                                                             @Y30LB50*/
       2 CSNUMB CHAR(1),            /* CS NBR FOR THIS TABLE @Y30LB50*/
       2 FILL2 CHAR(1);             /* FILLER BYTE FOR ALIGNMENT
                                                             @Y30LB50*/
    %CSTBLSL='LENGTH(CSTBLS)';      /*                       @Y30LB50
                                                                     */
 @EJECT;
    DCL                             /* DESCRIPTION OF USAGE BUFFER
                                       LOG DATA SAVED        @Y30LB50*/
      1 CSBDATA BASED(NEXTCSB),     /*                       @Y30LB50*/
       2 CHAINPTR PTR(31),          /* CHAIN PTR FOR TIME SORTING
                                                             @Y30LB50*/
       2 DAYTIME CHAR(8),           /* DAY AND TIME OF LOG   @Y30LB50*/
        3 CSBDAY CHAR(4),           /* DAY AND YEAR OF RECORD
                                                             @Y30LB50*/
         4 CSBYR CHAR(2),           /* YEAR OF RECORD        @Y30LB50*/
         4 CSBDATE CHAR(2),         /* DAY OF RECORD         @Y30LB50*/
        3 CSBTIME CHAR(4),          /* TIME-BUFFERED LOG RECORD
                                                             @Y30LB50*/
         4 CSBHR CHAR(1),           /* HOUR OF RECORD        @Y30LB50*/
         4 CSBMIN CHAR(1),          /* MINUTES OF RECORD     @Y30LB50*/
         4 CSBSEC CHAR(1),          /* SECONDS OF RECORD     @Y30LB50*/
         4 CSBHSEC CHAR(1),         /* HUNDREDTHS OF SECONDS @Y30LB50*/
       2 CSBMSC CHAR(4),            /* MSC SENSE             @Y30LB50*/
       2 CSBREC CHAR(24),           /* 24 BYTES OF BUFFERED RECORD
                                                             @Y30LB50*/
        3 CSBSNSBY CHAR(2),         /* STATUS BYTES          @Y30LB50*/
        3 CSB1CNTS CHAR(22);        /* BUFFERED LOG DATA COUNTS
                                                             @Y30LB50*/
    %CSBDATAL='LENGTH(CSBDATA)';    /*                       @Y30LB50
                                                                     */
 @EJECT;
    DCL                             /* DESCRIPTION OF ERROR BUFFERED
                                       LOG DATA AND FORCED SENSE DATA
                                       SAVED                 @Y30LB50*/
      1 CSFDATA BASED(NEXTCSF),     /*                       @Y30LB50*/
       2 CSFCHAIN PTR(31),          /* CHAIN PTR FOR TIME SORTING
                                                             @Y30LB50*/
       2 CSFDTIM CHAR(8),           /* DAY AND TIME OF LOG   @Y30LB50*/
        3 CSFDAY CHAR(4),           /* DAY OF FORCED SENSE DATA SAVED
                                                             @Y30LB50*/
        3 CSFTIME CHAR(4),          /* TIME OF FORCED SENSE DATA
                                                             @Y30LB50*/
       2 CSFMSC CHAR(4),            /* MSC SENSE             @Y30LB50*/
       2 CSFREC CHAR(28),           /* ERROR BUFFERED LOG-FORCED
                                       SENSE                 @Y30LB50*/
        3 CSFSNS1 BIT(8),           /*                       @Y30LB50*/
        3 CSFSNS2 BIT(8),           /*                       @Y30LB50*/
         4 CSFBITS BIT(7),          /*                       @Y30LB50*/
         4 CSFBFRBT BIT(1),         /* BUFFERED LOG DATA BIT @Y30LB50*/
        3 CSFBYTES CHAR(26);        /*                       @Y30LB50*/
    %CSFDATAL='LENGTH(CSFDATA)';    /*                       @Y30LB50
                                                                     */
 @EJECT;
    DCL                             /* WORK AREA FOR CS BUFFER LOG
                                       ROUTINES              @Y30LB50*/
      1 CSBWORK BASED(LWORKPTR),    /*                       @Y30LB50*/
       2 LOGPTR PTR(31),            /* ADDR OF HEADER INFO   @Y30LB50*/
       2 NRECORD PTR(31),           /* PTR TO RECORD FOR TIME SORTING
                                                             @Y30LB50*/
       2 PRECORD PTR(31),           /* PTR TO RECORD FOR TIME SORTING
                                                             @Y30LB50*/
       2 STARTADR PTR(31),          /* CALLING PARM FOR CSBSORT
                                                             @Y30LB50*/
       2 CURRADR PTR(31),           /* CALLING PARM FOR CSBSORT
                                                             @Y30LB50*/
       2 CSTPTRS(4) PTR(31),        /* POINTERS TO CS TABLES @Y30LB50*/
       2 NBRWORK CHAR(2),           /* SAVE CS NUMBER ALONE  @Y30LB50*/
       2 I FIXED(15),               /* INDEX FOR LOOPING     @Y30LB50*/
       2 SUMU FIXED(31),            /* USAGE COUNT FOR SUMMARY REPORT
                                                             @Y30LB50*/
       2 SUMX FIXED(31),            /* X-STRIP CHKS FOR SUMMARY
                                       REPORT                @Y30LB50*/
       2 SUMY FIXED(31),            /* Y-STRIP CHKS FOR SUMMARY
                                       REPORT                @Y30LB50*/
       2 SUMS(12) FIXED(15),        /* TOTALS FOR SUMMARY REPORT
                                                             @Y30LB50*/
       2 FRETCODE CHAR(2),          /* RETURN CODE FOR CSF REPORT
                                                             @Y30LB50*/
       2 BRETCODE CHAR(2),          /* RETURN CODE FOR CSB REPORT
                                                             @Y30LB50*/
       2 CNTINDX FIXED(15),         /* INDEX TO ACCESSOR COUNTS
                                                             @Y30LB50*/
       2 ACCTOT FIXED(15),          /* COUNT OF RECORDS FOR ACCESSOR
                                                             @Y30LB50*/
       2 PAGECNT FIXED(15),         /* COUNT OF RECORDS OR GROUPS ON
                                       PAGE                  @Y30LB50*/
       2 HOLDDBL CHAR(8),           /* DOUBLE WORD FOR CONVERTING TO
                                       DECIMAL               @Y30LB50*/
        3 HOLD0 CHAR(4),            /*                       @Y30LB50*/
        3 HOLD2 CHAR(4),            /* OUTPUT CONVERSION WORKAREA
                                                             @Y30LB50*/
         4 HOLD1 CHAR(1),           /*                       @Y30LB50*/
         4 HOLD CHAR(3),            /*                       @Y30LB50*/
       2 KWORK BINARY(16),          /* OUTPUT CONVERSION WORKAREA
                                                             @Y30LB50*/
        3 CWORK CHAR(2),            /*                       @Y30LB50*/
       2 GROUPS FIXED(15),          /* COUNT OF RECORDS TO SUMMARIZE
                                       TOGETHER FOR ONE GROUP
                                                             @Y30LB50*/
       2 REMNDR FIXED(15),          /* COUNT OF EXTRA RECORDS TO
                                       SPREAD OUT, 1 PER SUMMARY
                                       GROUP                 @Y30LB50*/
       2 GINDEX FIXED(15),          /* LOOP COUNTER FOR SUMMARIZING
                                                             @Y30LB50*/
       2 J FIXED(15),               /* INDEX FOR LOOPING     @Y30LB50*/
       2 K FIXED(15),               /* INDEX FOR LOOPING     @Y30LB50*/
       2 L FIXED(15),               /* INDEX FOR LOOPING     @Y30LB50*/
       2 M FIXED(15),               /* INDEX FOR LOOPING     @Y30LB50*/
       2 FILLXX CHAR(2);            /* ALIGNED SPACE FOR CS TABLES
                                                             @Y30LB50*/
    %CSBWORKL='LENGTH(CSBWORK)';    /*                       @Y30LB50*/
./ ADD NAME=ISDACVT

    /*****************************************************************/
    /*                                                               */
    /* ISDACVT - SDA CONTROL VECTOR TABLE                            */
    /*                                                               */
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDACVT)                               @Y30LB55*/

    DCL                             /* SDA CONTROL VECTOR TABLE
                                                             @Y30LB55*/
      1 ISDACVT BASED(CVTPTR),
       2 CVTPTRS0,                  /* PROC WORK POINTERS    @Y30LB55*/
        3 DATAPTR PTR(31),          /* -> LOG RECORD (0)     @Y30LB55*/
        3 SDATAPTR PTR(31),         /* -> SENSE DATA (4)     @Y30LB55*/
        3 PARMPTR PTR(31),          /* -> SDA PARM TABLE (8) @Y30LB55*/
        3 SDA00PTR PTR(31),         /* -> ISDASDA0 WORK AREA (12)
                                                             @Y30LB55*/
        3 PARM0PTR PTR(31),         /* -> SDA PARM FIELD (16)@Y30LB55*/
        3 TYPE0PTR PTR(31),         /* -> ISDATYPE WORKAREA (20)
                                                             @Y30LB55*/
        3 GET00PTR PTR(31),         /* -> ISDAGET0 WORK AREA (24)
                                                             @Y30LB55*/
        3 PRT00PTR PTR(31),         /* -> ISDAPRT0 WORK AREA (28)
                                                             @Y30LB55*/
        3 HIST0PTR PTR(31),         /* -> ISDAHIST WORKAREA (32)
                                                             @Y30LB55*/
        3 LOG00PTR PTR(31),         /* -> ISDALOG0 WORK AREA (36)
                                                             @Y30LB55*/
        3 DCS00PTR PTR(31),         /* -> ISDADCS0 WORK AREA (40)
                                                             @Y30LB55*/
        3 PAD00PTR PTR(31),         /* -> ISDAPAD0 WORK AREA (44)
                                                             @Y30LB55*/
        3 SUM00PTR PTR(31),         /* -> ISDASUM0 WORK AREA (48)
                                                             @Y30LB55*/
        3 DHE00PTR PTR(31),         /* -> ISDADHE0 WORK AREA (52)
                                                             @Y30LB55*/
        3 FSC00PTR PTR(31),         /* -> ISDAFSC0 WORK AREA (56)
                                                             @Y30LB55*/
        3 EQC00PTR PTR(31),         /* -> ISDAEQC0 WORK AREA (60)
                                                             @Y30LB55*/
        3 DCK00PTR PTR(31),         /* -> ISDADCK0 WORK AREA (64)
                                                             @Y30LB55*/
        3 CSB00PTR PTR(31),         /* -> ISDACSB0 WORK AREA (68)
                                                             @Y30LB55*/
        3 DAT00PTR PTR(31),         /* -> ISDADAT0 WORK AREA (72)
                                                             @Y30LB55*/
        3 DRC00PTR PTR(31),         /* -> ISDADRC0 WORK AREA (76)
                                                             @Y30LB55*/
        3 APR00PTR PTR(31),         /* -> ISDAAPR0 WORK AREA (80)
                                                             @Y30LB55*/
        3 PWR00PTR PTR(31),         /* SPARE - RESERVED      (84)
                                                             @ZM30976*/
        3 CNFG0PTR PTR(31),         /* -> CONFIGUATION TABLE (88)
                                                             @Y30LB55*/
        3 GEN00PTR PTR(31),         /* -> ISDAGEN0 WORKAREA (92)
                                                             @Y30LB55*/
 /* TO CALL XXX(WORKPTR), SET R1=ADDR(WORKCALL) AND CALL XXX @Y30LB55*/

        3 WORKCALL PTR(31),         /* =ADDR(WORKPTR) (96)   @Y30LB55*/

      /***************************************************************/
      /*                                                             */
      /* PARAMETERS FOR ISDAGET0, ISDAGET1, AND ISDAFREE             */
      /*                                                             */
      /***************************************************************/

       2 GET0CALL,                  /* PARAMETERS FOR ISDAGET0 (100)
                                                             @Y30LB55*/
        3 SPNOLEN FIXED(31),        /* SPNO + LENGTH         @Y30LB55*/
         4 SPNO BIT(8),             /* SUBPOOL NUMBER        @Y30LB55*/
         4 CORELEN FIXED(24),       /* LENGTH OF REQUESTED AREA
                                                             @Y30LB55*/
        3 COREADDR PTR(31),         /* ADDRESS OF AREA, FILLED IN BY
                                       GET0                  @Y30LB55*/

      /***************************************************************/
      /*                                                             */
      /* PARAMETERS FOR ISDAHEXP                                     */
      /*                                                             */
      /***************************************************************/

       2 HEXPCALL,                  /* PARAMETERS FOR ISDAHEXP (108)
                                                             @Y30LB55*/
        3 DUMPADDR PTR(31),         /* ADDRESS OF AREA TO DUMP
                                                             @Y30LB55*/
        3 DUMPLEN FIXED(31),        /* LENGTH OF AREA TO DUMP@Y30LB55*/
        3 DUMPIDNO FIXED(31),       /* ID NUMBER OF DUMP     @Y30LB55*/

      /***************************************************************/
      /*                                                             */
      /* PARAMETERS FOR ISDAPRT0 AND ISDATYPE                        */
      /*                                                             */
      /***************************************************************/

       2 PRT0CALL,                  /* PARAMETERS FOR ISDAPRT0 (120)
                                                             @Y30LB55*/
        3 OUTLINE CHAR(133),        /* FULL OUTPUT LINE      @Y30LB55*/
         4 ANSI CHAR(1),            /* PRINTER CONTROL CHARACTER
                                                             @Y30LB55*/
         4 LINE CHAR(132),          /* TEXT FOR OUTPUT       @Y30LB55*/
        3 SDARPTID CHAR(3),         /* REPORT ID FOR PAGE HEADER.
                                  SET TO 000000 TO NOT MOVE  @ZD00192*/

      /***************************************************************/
      /*                                                             */
      /* SDA SAVE AREAS AND WORK AREAS FOR DATAREG                   */
      /*                                                             */
      /***************************************************************/

       2 SDADATD,                   /* 160 BYTE SDA SAVE AREA FOR ALL
                                       PROCS                 @Y30LB55*/
        3 SDASA001(18) FIXED(31),   /* MAIN SAVE AREA        @Y30LB55*/
        3 SDAPC001 FIXED(31),       /* PARAMETER SAVE        @Y30LB55*/
        3 SDASA002(15) FIXED(31),   /* INNER PROC SAVE AREA  @Y30LB55*/
        3 SDATEMPS(6) FIXED(31),    /* TEMP SPACE            @Y30LB55*/
       2 PRTDATD,                   /* 160 BYTE SAVE AREA FOR
                                       ISDAPRT0 AND ISDATYPE @Y30LB55*/
        3 PRTSA001(40) FIXED(31);   /* 2ND LEVEL CALL SAVE   @Y30LB55*/
    %SDACVTL='LENGTH(ISDACVT)';                            /*@Y30LB55*/

 /* %SDACVTL='LENGTH(ISDACVT)'                               @Y30LB55*/
 /*   DCL CVTPTR PTR(31)  AND SET CVTPTR=WORKPTR             @Y30LB55*/
./ ADD NAME=ISDADAT5

    /*****************************************************************/
    /*                                                               */
    /* DATWORK IS THE STRUCTURE FOR THE DAT WORK AREA        @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      1 DATWORK BASED(DATPTR),      /*                       @Y30LB50*/
       2 CSPTRS(4) PTR(31),         /* POINTERS TO ACCUMULATOR BLOCKS
                                       FOR EACH CARTRIDGE STORE
                                       ENCOUNTERED           @Y30LB50*/
       2 TSUM FIXED(31),            /* TOTAL OF BIT COUNTS   @Y30LB50*/
       2 WORK1 CHAR(8),             /* COMPACTED DAT CHECKS BYTES
                                                             @Y30LB50*/
        3 WORK2 BIT(8),             /*                       @Y30LB50*/
         4 CURRBIT BIT(1),          /* BIT BEING EXAMINED    @Y30LB50*/
         4 RESTBITS BIT(7),         /*                       @Y30LB50*/
        3 WORK3 BIT(56),            /*                       @Y30LB50*/
       2 I FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 J FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 K FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 L FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 M FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 LOOPEND FIXED(15),         /* LOOP END COMPARAND    @Y30LB50*/
       2 HOLDDBL CHAR(8),           /* DOUBLE WORD FOR CONVERTING
                                                             @Y30LB50*/
        3 HOLD0 CHAR(4),            /*                       @Y30LB50*/
        3 HOLD CHAR(4),             /* WORK AREA FOR CONVERTING
                                                             @Y30LB50*/
         4 HOLD2 CHAR(1),           /*                       @Y30LB50*/
         4 HOLD1 CHAR(3),           /*                       @Y30LB50*/
          5 CSNUMB CHAR(2),         /* ISOLATE INFO FROM SSID
                                                             @Y30LB50*/
           6 SSIDWORK CHAR(2),      /* ISOLATE UNIT          @Y30LB50*/
          5 XXX CHAR(1);            /*                       @Y30LB50*/
    %DATWORKL='LENGTH(DATWORK)';    /*                       @Y30LB50
                                                                     */
 @EJECT;

    /*****************************************************************/
    /*                                                               */
    /* DESCRIPTION OF DAT ACCUMULATOR BLOCK                  @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      1 DATACCM BASED(CSPTR),       /*                       @Y30LB50*/
       2 BYTEBIT FIXED(15),         /* 2 BYTE COUNTER FOR ONE BIT FOR
                                       ONE DRC               @Y30LB50*/
       2 BYTEBIT3 CHAR(22),         /* 2 BYTE COUNTER FOR ONE BIT FOR
                                       OTHER DRCS AND DRDS   @Y30LB50*/
       2 BYTE0 CHAR(168),           /* BIT COUNTERS FOR OTHER BITS OF
                                       MSC BYTE 4            @Y30LB50*/
        3 BIT0 CHAR(24),            /* BIT COUNTERS FOR ONE BIT
                                                             @Y30LB50*/
        3 BITN CHAR(144),           /* BIT COUNTERS FOR OTHER BITS
                                                             @Y30LB50*/
       2 BYTE1 CHAR(192),           /* BIT COUNTERS FOR MSC BYTE 5
                                                             @Y30LB50*/
       2 BYTE2 CHAR(192),           /* BIT COUNTERS FOR MSC BYTE 13
                                                             @Y30LB50*/
       2 BYTE3 CHAR(192),           /* BIT COUNTERS FOR MSC BYTE 14
                                                             @Y30LB50*/
       2 BYTE4 CHAR(192);           /* BIT COUNTERS FOR MSC BYTE 15
                                                             @Y30LB50*/
    %DATACCML='LENGTH(DATACCM)';    /*                       @Y30LB50
                                                                     */
 @EJECT;

    /*****************************************************************/
    /*                                                               */
    /* DESCRIPTION OF ISDADAT0 AND ISDADAT1 CONSTANTS        @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      CVTPTR PTR(31) REG(2) RSTD;   /* SDACVT POINTER        @Y30LB50*/
    DCL
      RETRNREG FIXED(31) REG(9) RSTD;/* RETURN CODE          @Y30LB50*/
    DCL
      DATPTR PTR(31) REG(10) RSTD;  /* DAT WORK AREA PTR     @Y30LB50*/
    DCL
      CSPTR PTR(31) REG(8) RSTD;    /* CARTRIDGE STORE-DAT
                                       ACCUMULATOR POINTER   @Y30LB50*/
    DCL
      WORKPTR PTR(31);              /* CALLING PARAMETER--SDACVT PTR
                                                             @Y30LB50*/
    DCL
      R1 FIXED(31) REG(1) UNRSTD;   /*                       @Y30LB50*/
    DCL
      R0 FIXED(31) REG(0) UNRSTD;   /*                       @Y30LB50*/
    DCL
      R15 FIXED(31) REG(15) UNRSTD; /*                       @Y30LB50*/
    DCL
      DATSPNO CHAR(1) STATIC LOCAL INIT('00'X);/* SUBPOOL NUMBER FOR
                                       DAT REQUESTS          @Y30LB50*/
    DCL
      MAXDRC FIXED(15) CONSTANT(4); /* MAXIMUM NUMBER OF DRCS
                                                             @Y30LB50*/
    DCL
      MAXCS  FIXED(15) CONSTANT(4); /*MAXIMUM NUMBER OF CARTRIDGE
                                      STORES                 @Y30LB50*/
    DCL
      1 PATCH CHAR(50) STATIC LOCAL,
       2 *(50) CHAR(1) INIT((50)'00'X);/* MAINTENANCE AREA   @Y30LB50*/
./ ADD NAME=ISDADCS5
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    EXTERNAL PROCEDURE                                    @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      ISDAFREE ENTRY,               /* FREEMAIN PROCEDURE    @Y30LB56*/
      ISDAGET0 ENTRY;               /* GETMAIN PROCEDURE     @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    GENERAL REGISTERS                                     @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      R1 PTR REG(1) UNRSTD,         /* PARAMETER REGISTER    @Y30LB56*/
      R15 FIXED REG(15) UNRSTD;     /* RETURN CODE REGISTER  @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    LOCAL POINTERS MUST BE ASSIGNED TO REGISTERS BY PLS2  @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      WORKPTR PTR,                  /* PARAMETER PTR TO SDACVT
                                                             @Y30LB56*/
      CVTPTR PTR,                   /* POINTER TO SDACVT     @Y30LB56*/
      GET0PTR PTR,                  /* POINTER TO ACTIVE WORK AREA
                                                             @Y30LB56*/
      GET0INDX PTR,                 /* PTR TO NEXT AVAILABLE SPACE IN
                                       ACTIVE WORK AREA      @Y30LB56*/
      LPARMPTR PTR;                 /* POINTER TO SDA CONTROL@Y30LB56
                                       STATEMENTS            @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    MISCELANEOUS WORK AREAS, POINTERS AND CONSTANTS       @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      RETCODE FIXED(15),            /* RETURN CODE           @Y30LB56*/
      WORKVAR FIXED,                /* WORK VARIABLE         @Y30LB56*/
      WORKX1 PTR,                   /* WORK POINTER          @Y30LB56*/
      WORKX2 PTR,                   /* WORK POINTER          @Y30LB56*/
      I FIXED;                      /* DO LOOP COUNTER       @Y30LB56*/
 @EJECT;                                                   /*@Y30LB56*/

 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    MAINTENANCE SPACE                                     @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      1 PATCH CHAR(50) STATIC,      /* RESERVED FOR PTF'S    @Y30LB56*/
       2 *(50) CHAR(1) INIT((50)'00'X);                    /*@Y30LB56*/

 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    MAP OF REPORT CONTROLLED PORTION OF WORKAREA HEADER   @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      1 GET0HDR1 BASED(DCS00PTR) POS(29),
       2 RATIO CHAR(2),             /* ERROR/USAGE=RATIO LOWER LIMIT
                                                             @Y30LB56*/
       2 SUM CHAR(1),               /* SUMMARY=YN           @Y30LB56*/
       2 * CHAR(1),
       2 SER CHAR(12),              /* CARTRIDGE SERIAL NO FACTOR
                                                             @Y30LB56*/
       2 RETCDSV FIXED(15),         /* RETURN CODE SAVE AREA @Y30LB56*/
       2 * CHAR(2),
       2 GET0PSV PTR,               /* SAVE AREA FOR GET0PTR @Y30LB56*/
       2 GET0XSV PTR;               /* SAVE AREA FOR GET0INDX@Y30LB56*/
     %GET0HD1L='LENGTH(GET0HDR1)';
 /*  %GET0HD1L='LENGTH(GET0HDR1)'                            @Y30LB56*/

 @EJECT;                                                   /*@Y30LB56*/

 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    MAP OF WORK AREA DCS ENTRIES                          @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      1 DCSENTRY BASED(GET0INDX),
       2 CHAINPTR PTR,              /* POINTER TO NEXT ENTRY IN CHRON
                                       ORDER (0 IF LAST)     @Y30LB56*/
       2 DATIME BDY(WORD) CHAR(8),
        3 ADATE BIT(32),            /* DATE - 00YYDDDS       @Y30LB56*/
        3 ATIME BIT(32),            /* TIME - HHMMSSTH       @Y30LB56*/
       2 SNS4D BDY(WORD) CHAR(28),  /* SAVE SENSE AREA       @ZM30998*/
        3 SNS1A2 CHAR(2),
         4 SNSBYT1 BIT(4),          /* SENSE BYTE 1, BITS 0-3@Y30LB56*/
         4 SNSSID BIT(12),          /* DRD SUBSYSTEM ID      @Y30LB56*/
        3 SNS9A10 CHAR(2),
         4 SNSBYT9 BIT(7),          /* SENSE BYTE 9, BITS 0-6@Y30LB56*/
         4 SNSADDR BIT(9),          /* MSC LOWER INTERFACE ADDRESS
                                                             @Y30LB56*/
        3 SNS12T31 BDY(WORD) CHAR(21), /* SENSE SAVEAREA     @ZM30998*/
         4 SNSRDUC FIXED(16) UNSIGNED,/* READ USAGE COUNTER  @Y30LB56*/
          5 OFLORDUC BIT(1),
         4 SNSRDCK FIXED(16) UNSIGNED,/* READ CHECK COUNTER  @Y30LB56*/
          5 SNSBYT14 BIT(8),        /* HIGH BYTE WITH FLAGS  @ZM31073*/
           6 * BIT(2),
           6 OFLORDCK BIT(1),
         4 SNSWRUC FIXED(16) UNSIGNED,/* WRITE USAGE COUNTER @Y30LB56*/
          5 OFLOWRUC BIT(1),
         4 SNSWRCK FIXED(16) UNSIGNED,/* WRITE CHECK COUNTER @Y30LB56*/
          5 * BIT(2),
          5 OFLOWRCK BIT(1),
         4 SNSBYT20 BIT(8),         /* BYTE 20 NOT USED      @ZM30998*/
          5 SNSFORCE BIT(1),        /* FORCED LOGGING BIT    @ZM31073*/
          5 SNSLDCHK BIT(1),        /* TEMP LOAD CHECK       @ZM31073*/
          5 SNSAVAL4 BIT(1),        /* AVAIL STRIPES = 4     @ZM31073*/
         4 SNSCSN CHAR(12),         /* CARTRIDGE SERIAL NUMBER
                                                             @Y30LB56*/
        3 * CHAR(3),                /* SPARE                 @ZM30998*/
       2 SNSRDRAT FIXED(8),         /* READ ERROR/USAGE=RATIO@Y30LB56*/
       2 SNSWRAT FIXED(8),          /* WRITE ERROR/USAGE=RATIO
                                                             @Y30LB56*/
       2 * CHAR(2);                                        /*@Y30LB56*/
     %DCSENTRL='LENGTH(DCSENTRY)';
 /*  %DCSENTRL='LENGTH(DCSENTRY)'                            @Y30LB56*/

 @EJECT;                                                   /*@Y30LB56*/

 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 /*                                                          @Y30LB56*/
 /*    SUBPOOL AND BYTE COUNT FOR CALL TO ISDAGET0           @Y30LB56*/
 /*                                                          @Y30LB56*/
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

    DCL
      1 GETWORK FIXED STATIC,
       2 * BIT(8) INIT(1),          /* SUBPOOL 1             @Y30LB56*/
       2 * FIXED(24) INIT(2048);    /* GET 2K OF WORKAREA    @Y30LB56
                                                             @Y30LB56*/
 @EJECT;                                                   /*@Y30LB56*/

 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

 WORK AREA DATA FORMAT

                       BYTE
                 0    1    2    3
          WORD  ___________________
            0    STARTPTR             ADDRESS OF START OF DATA AREA
 WORK AREA     ___________________     (POINTS TO OLDEST DCS ENTRY)
 HEADER.    1   *ENDPTR               ADDRESS OF END OF DATA AREA
 (*) FIELDS    ___________________
 SET BY     2  *SPN *LENGTH          SUBPOOL NUMBER AND LENGTH OF
 ISDAGET0.     __________________    THIS WORKSPACE IN BYTES
            3      NEXTPTR            ADDRESS OF NEXT WORKSPACE
               ___________________
            4      LASTPTR            ADDRESS OF PREVIOUS WORKSPACE
               ___________________
            5      BLOCKID            OWNER BLOCK ID 'DCS '
               ___________________
            6  BLOCKCNT              WORKSPACE COUNT / UNUSED
     _________ __________________
            7   RATIO   SUM         RATIO, SUMMARY 'Y' OR 'N'
               _________________     UNUSED BYTE
 CONTROL    8   SER               
 STATEMENTS                           CARTRIDGE SERIAL NUMBER
            9                         FACTOR LEFT JUSTIFIED
                                  
 WORDS     10                     
 7-13    _____ ___________________
 SAVED     11   RETCDSV  UNUSED       MODULE RETURN CODE
 IN FIRST      __________________
 WORKAREA  12    GET0PSV              GET0PTR SAVE AREA
 ONLY.         ___________________
           13    GET0XSV              GET0INDX SAVE AREA
     _________ ___________________
           14                     
                                      LOGREC DATA SAVE AREA
                         .              SEE ENTRY ILLUSTRATION BELOW
                         .
                         .
     @EJECT;                                               /*@Y30LB56*/
 LOGREC DATA SAVE AREA - DCS ENTRY FORMAT

ONE ENTRY IS CREATED FOR EACH VALID LOGREC RECORD RECEIVED BY ISDADCS0.
THESE ENTRIES ARE SAVED IN THE PREVIOUSLY ILLUSTRATED WORK AREA.

             BYTE
       0    1    2    3
      ___________________
         CHAINPTR           POINTER TO NEXT ENTRY IN LOGREC DATA.
     ___________________
            DATE            OBR/MDR HEADER DATE. FORMAT: 00YYDDDS
     ___________________
            TIME            OBR/MDR HEADER TIME. FORMAT: HHMMSSTH
     ___________________
      1   2   9   10 
     ________________
      12  13  14  15 
     ________________    MSC FORMAT 4 - SA FORMAT D SENSE DATA
      16  17  18  19 
     ________________
      20  21  22  23 
     ________________
      24  25  26  27 
     ________________
      28  29  30  31 
     ________________
     RDR WRR  *    *     RDR - READ ERROR/USAGE=RATIO
     ________________    WRR - WRITE ERROR/USAGE=RATIO

     CHAINPTR ENTRIES ARE ARRAINGED IN ASCENDING CHRONOLOGICAL
     ORDER BY DATE/TIME.  CHAINPTR IS 0 ON THE LAST ENTRY.
   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
./ ADD NAME=ISDADRC5

    /*****************************************************************/
    /*                                                               */
    /* DRCWORK IS THE STRUCTURE FOR THE DRC WORK AREA        @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      1 DRCWORK BASED(DRCPTR),      /*                       @Y30LB50*/
       2 CSPTRS(4) PTR(31),         /* POINTERS TO ACCUMULATOR BLOCKS
                                       FOR EACH CARTRIDGE STORE
                                       ENCOUNTERED           @Y30LB50*/
       2 TSUM FIXED(31),            /* TOTAL OF BIT COUNTS   @Y30LB50*/
       2 WORK1 CHAR(4),             /* COMPACTED DRC CHECKS BYTES
                                                             @Y30LB50*/
        3 WORK2 BIT(8),             /*                       @Y30LB50*/
         4 CURRBIT BIT(1),          /*                       @Y30LB50*/
         4 RESTBITS BIT(7),         /*                       @Y30LB50*/
        3 WORK3 BIT(24),            /*                       @Y30LB50*/
       2 I FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 J FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 K FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 L FIXED(15),               /* LOOP INDEX            @Y30LB50*/
       2 HOLDDBL CHAR(8),           /* DOUBLE WORD FOR CONVERTING
                                                             @Y30LB50*/
        3 HOLD0 CHAR(4),            /*                       @Y30LB50*/
        3 HOLD CHAR(4),             /*                       @Y30LB50*/
         4 HOLD2 CHAR(1),           /*                       @Y30LB50*/
         4 HOLD1 CHAR(3),           /*                       @Y30LB50*/
          5 CSNUMB CHAR(2),         /* SSID WORKAREA         @Y30LB50*/
          5 XXX CHAR(1);            /*                       @Y30LB50*/
    %DRCWORKL='LENGTH(DRCWORK)';    /*                       @Y30LB50
                                                                     */
 @EJECT;

    /*****************************************************************/
    /*                                                               */
    /* DESCRIPTION OF DRC ACCUMULATOR BLOCK                  @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      1 DRCACCM BASED(CSPTR),       /*                       @Y30LB50*/
       2 BYTEBIT FIXED(15),         /* 2 BYTE COUNTER FOR ONE BIT FOR
                                       ONE DRC               @Y30LB50*/
       2 BYTEBIT3 CHAR(6),          /* BIT COUNTERS FOR ONE BIT FOR
                                       OTHER DRCS            @Y30LB50*/
       2 BYTE0 CHAR(56),            /* BIT COUNTERS FOR MSC BYTE 4
                                                             @Y30LB50*/
        3 BIT0 CHAR(8),             /* BIT COUNTERS FOR ONE BIT
                                                             @Y30LB50*/
        3 BITS1TO7 CHAR(48),        /* BIT COUNTERS FOR OTHER BITS
                                                             @Y30LB50*/
       2 BYTE1 CHAR(64),            /* BIT COUNTERS FOR MSC BYTE 20
                                                             @Y30LB50*/
       2 BYTE2 CHAR(64),            /* BIT COUNTERS FOR MSC BYTE 21
                                                             @Y30LB50*/
       2 BYTE3 CHAR(64);            /* BIT COUNTERS FOR MSC BYTE 22
                                                             @Y30LB50*/
    %DRCACCML='LENGTH(DRCACCM)';    /*                       @Y30LB50
                                                                     */
 @EJECT;

    /*****************************************************************/
    /*                                                               */
    /* DESCRIPTION OF ISDADRC0 AND ISDADRC1 CONSTANTS        @Y30LB50*/
    /*                                                               */
    /*****************************************************************/

    DCL
      CVTPTR PTR(31) REG(2) RSTD;   /* SDACVT POINTER        @Y30LB50*/
    DCL
      RETRNREG FIXED(31) REG(9) RSTD;/* RETURN CODE REG      @Y30LB50*/
    DCL
      DRCPTR PTR(31) REG(10) RSTD;  /* DRC WORK AREA POINTER @Y30LB50*/
    DCL
      CSPTR PTR(31) REG(8) RSTD;    /* CARTRIDGE STORE-DRC
                                       ACCUMULATOR POINTER   @Y30LB50*/
    DCL
      WORKPTR PTR(31);              /* CALLING PARAMETER--SDACVT
                                       POINTER               @Y30LB50*/
    DCL
      MAXCS FIXED(15) CONSTANT(4);  /* MAXIMUM NUMBER OF CARTRIDGE
                                       STORES                @Y30LB50*/
    DCL
      R1 FIXED(31) REG(1) UNRSTD;   /*                       @Y30LB50*/
    DCL
      R0 FIXED(31) REG(0) UNRSTD;   /*                       @Y30LB50*/
    DCL
      R15 FIXED(31) REG(15) UNRSTD; /*                       @Y30LB50*/
    DCL
      DRCSPNO CHAR(1) STATIC LOCAL INIT('00'X);/* SUBPOOL NUMBER FOR
                                       DRC ISDAGET1 REQUESTS @Y30LB50*/
    DCL
      1 PATCH CHAR(50) STATIC LOCAL,
       2 *(50) CHAR(1) INIT((50)'00'X);/* MAINTENANCE AREA   @Y30LB50*/
./ ADD NAME=ISDAEQC5

 /* EQC ACCUMULATOR WORK TABLE.                                      */

    /*****************************************************************/
    /*                                                               */
    /* EQCWORK -- EQC REPORT MODULES WORK TABLE. THIS TABLE SERVES AS*/
    /* THE COMMUNICATIONS VECTOR TABLE (CVT) BETWEEN THE MODULES     */
    /* (ISDAEQC0 AND ISDAEQC1) INVOLVED IN THE PREPARATION OF THE    */
    /* EQUIPMENT CHECK (EQC) REPORT.                                 */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 EQCWORK BASED(EQCWKPTR),    /*                       @Y30LB51*/
       2 GET0PTR PTR(31),           /* PTR TO EQC TABLE.     @Y30LB51*/
       2 PTRSAVE PTR(31),           /* PTR SAVE AREA.        @Y30LB51*/
       2 LOGPTR PTR(31),            /* LOCAL PTR TO RECORD.  @Y30LB51*/
       2 SENSEPTR PTR(31),          /* LOCAL PTR TO SENSE AREA.
                                                             @Y30LB51*/
       2 FREEPTR PTR(31),           /* PTR TO FREE TABLE ENTRY.
                                                             @Y30LB51*/
       2 OLDPTR PTR(31),            /* PTR TO EQC CHAIN START.
                                                             @Y30LB51*/
       2 RUASAVE CHAR(2),           /* REAL UNIT ADDRESS SAVE AREA.
                                                             @ZD00149*/
       2 SSIDSAVE CHAR(2),          /* SSID AND FLAGS SAVE AREA.
                                                             @Y30LB51*/
        3 SSIDDEV CHAR(1),          /* DEVICE TYPE CHARACTER.@Y30LB51*/
        3 * CHAR(1),                /*                       @Y30LB51*/
       2 FSCSYSSV CHAR(2),          /* SAVE AREA FOR NON-LIBRARY FSC.
                                                             @Y30LB51*/
       2 FSCSAVE1 CHAR(4),          /* FSC SAVE AREA (RIGHT ACCESSOR).
                                                             @Y30LB51*/
       2 FSCSAVE2 CHAR(4),          /* FSC SAVE AREA (LEFT ACCESSOR).
                                                             @Y30LB51*/
       2 RECCOUNT FIXED(15),        /* COUNT OF TABLE ELEMENTS.
                                                             @Y30LB51*/
       2 LINECT FIXED(15),          /* COUNT OF PRINTED LINES.
                                                             @Y30LB51*/
       2 I FIXED(15),               /* WORK COUNTER.         @Y30LB51*/
       2 J FIXED(15),               /* WORK COUNTER.         @Y30LB51*/
       2 K FIXED(15),               /* WORK COUNTER.         @Y30LB51*/
       2 L FIXED(15),               /* WORK COUNTER.         @Y30LB51*/
       2 SENSELEN FIXED(15),        /* SENSE DATA LENGTH.    @Y30LB51*/
       2 EQCSW BIT(16),             /* SWITCHES.             @Y30LB51*/
        3 FMT3ACC1 BIT(1),          /* RT ACC FSC FLAG.      @Y30LB51*/
        3 FMT3ACC2 BIT(1),          /* LEFT ACC FSC FLAG.    @Y30LB51*/
        3 WORKAPR BIT(1),           /* APR ALTERED SSID FLAG.@Y30LB51*/
        3 NOFSC BIT(1),             /* NO FSC FLAG.          @Y30LB51*/
        3 MSCREC BIT(1),            /* MSC RECORD FLAG.      @Y30LB51*/
        3 * BIT(11),                /*                       @Y30LB51*/
       2 DEVBYTES BIT(16),          /* WORK AREA FOR DEVICE IDS.
                                                             @ZD00149*/
        3 DEVBYTEA BIT(8),          /* FIRST WORK BYTE.      @ZD00149*/
        3 DEVBYTEB BIT(8);          /* SECOND WORK BYTE.     @ZD00149*/
    %EQCWORKL='LENGTH(EQCWORK)';
 @EJECT;

 /* FORMAT OF THE EQC ACCUMULATOR TABLE ENTRY.                       */

    /*****************************************************************/
    /*                                                               */
    /* EQCTBL -- TABLE FOR THE ACCUMULATION OF THE MOST RECENT 100   */
    /* EQUPMENT CHECK RECORDS.                                       */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 EQCTBL BASED(TBLPTR),       /*                       @Y30LB51*/
       2 EQCTPTR PTR(31),           /* PTR TO NEXT ELEMENT ON CHAIN.
                                                             @Y30LB51*/
       2 EQCRUA CHAR(2),            /* REAL UNIT ADDRESS.    @ZD00149*/
       2 EQCSSID CHAR(2),           /* SSID AND FLAGS AREA.  @Y30LB51*/
        3 DEVCHAR CHAR(1),          /* DEVICE CHARACTER.     @Y30LB51*/
        3 UNITCHAR CHAR(1),         /* UNIT CHARACTERS.      @Y30LB51*/
       2 EQCFLAGS BIT(16),          /* ACCUMULATOR TABLE FLAGS.
                                                             @Y30LB51*/
        3 FAKEFSC BIT(1),           /* GENERATED FSC.        @Y30LB51*/
        3 DASDFLAG BIT(1),          /* DASD SSID.            @Y30LB51*/
        3 REALDASD BIT(1),          /* READ DASD SSID.       @Y30LB51*/
        3 VIRTDASD BIT(1),          /* VIRTUAL DASD SSID.    @Y30LB51*/
        3 EQCNOFSC BIT(1),          /* NO FSC IN RECORD.     @Y30LB51*/
        3 EQCAPR BIT(1),            /* APR ALTERED SSID FLAG.@Y30LB51*/
        3 MSCFLAG BIT(1),           /* MSC RECORD FLAG.      @Y30LB51*/
        3 CSFLAG BIT(1),            /* CS DEVICE FLAG.       @Y30LB51*/
        3 DEVIN BIT(1),             /* DEVICE IDS FLAG.      @ZD00149*/
        3 * BIT(7),                 /*                       @ZD00149*/
       2 EQCFSC CHAR(4),            /* FSC AREA.             @Y30LB51*/
        3 FSCSYS CHAR(2),           /* NON-LIBRARY DEVICE FSC.
                                                             @Y30LB51*/
        3 * CHAR(2),                /*                       @Y30LB51*/
       2 EQCDT CHAR(8),             /* DATE/TIME STAMP FROM RECORD.
                                                             @Y30LB51*/
        3 EQCDATE CHAR(4),          /* DATE -- YEAR AND DAY. @Y30LB51*/
         4 EQCYR CHAR(2),           /* YEAR.                 @Y30LB51*/
         4 EQCDAY CHAR(2),          /* DAY.                  @Y30LB51*/
        3 EQCTIME CHAR(4),          /* TIME.                 @Y30LB51*/
         4 EQCHR CHAR(1),           /* HOURS.                @Y30LB51*/
         4 EQCMIN CHAR(1),          /* MINUTES.              @Y30LB51*/
         4 EQCSEC CHAR(1),          /* SECONDS.              @Y30LB51*/
         4 EQCHSEC CHAR(1),         /* HUNDREDTHS OF A SECOND.
                                                             @Y30LB51*/
       2 EQCUNIT CHAR(2),           /* UNIT IDS.             @ZD00149*/
        3 CNTLUNIT CHAR(1),         /* CONTROL UNIT ID.      @ZD00149*/
        3 UNITID CHAR(1),           /* DRIVE ID.             @ZD00149*/
       2 EQCSENSE CHAR(32),         /* SENSE AREA.           @Y30LB51*/
        3 DASDDATA CHAR(28),        /* DASD SENSE.           @Y30LB51*/
        3 * CHAR(4);                /*                       @Y30LB51*/
    %EQCTBLL='LENGTH(EQCTBL)';
 @EJECT;

 /* FORMAT OF THE DASD RECORD.                                       */

    /*****************************************************************/
    /*                                                               */
    /* MSCDASD -- DASD RECORD FORMAT. (THIS FORMAT MAY BE USED AS THE*/
    /* FORMAT OF THE MSC FORMAT 5 RECORD BY ADDING 4 TO SENSEPTR.)   */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 MSCDASD BASED(SENSEPTR),    /*                       @Y30LB51*/
       2 * CHAR(4),                 /* BYTES 0 - 3.          @ZD00149*/
       2 DRIVE BIT(8),              /* DRIVE ID.             @ZD00149*/
       2 * CHAR(2),                 /* BYTES 5 AND 6.        @ZD00149*/
       2 FMTMSG BIT(8),             /* BYTE 7.               @Y30LB51*/
        3 DASDFMT BIT(4),           /* DASD SUBFORMAT CODE.  @Y30LB51*/
        3 DASDMSG BIT(4),           /* DASD MESSAGE CODE.    @Y30LB51*/
       2 * CHAR(2),                 /* BYTES 8 AND 9.        @Y30LB51*/
       2 DASD10 BIT(8),             /* BYTE 10.              @Y30LB51*/
        3 TIMEBIT BIT(1),           /* LATE/EARLY BIT.       @Y30LB51*/
        3 CLOCKERR BIT(1),          /* CLOCK ERROR BIT.      @Y30LB51*/
        3 * BIT(6),                 /*                       @Y30LB51*/
       2 DASD11 BIT(8),             /* BYTE 11.              @Y30LB51*/
       2 * CHAR(8),                 /* BYTES 12 - 19.        @Y30LB51*/
       2 DASD20 BIT(8),             /* BYTE 20.              @Y30LB51*/
       2 * CHAR(1),                 /* BYTE 21.              @Y30LB51*/
       2 FSCDASD BIT(16),           /* BYTES 22 AND 23, FSC. @Y30LB51*/
       2 * CHAR(2),                 /* BYTES 24 AND 25.      @ZD00149*/
       2 DASDSSID CHAR(2);          /* DASD DRIVE SSID.      @ZD00149*/
./ ADD NAME=ISDAFSC5

 /* FSC ACCUMULATOR WORK TABLE.                                      */

    /*****************************************************************/
    /*                                                               */
    /* FSCWORK -- FSC REPORT MODULES WORK TABLE. THIS TABLE SERVES AS*/
    /* A COMMUNICATIONS VECTOR TABLE (CVT) BETWEEN THE MODULES       */
    /* (ISDAFSC0, ISDAFSC1 AND ISDAFSC2) INVOLVED IN THE PREPARATION */
    /* OF THE FAULT SYMPTOM CODE (FSC) REPORT.                       */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 FSCWORK BASED(FSCWKPTR),    /*                       @Y30LB51*/
       2 GET0PTR PTR(31),           /* PTR TO LAST FSC TABLE.@Y30LB51*/
       2 PTRSAVE PTR(31),           /* POINTER SAVE AREA.    @Y30LB51*/
       2 FSCPTR PTR(31),            /* POINTER TO FIRST FSC TABLE.
                                                             @Y30LB51*/
       2 LOGPTR PTR(31),            /* PTR TO RECORD.        @Y30LB51*/
       2 SENSEPTR PTR(31),          /* PTR TO SENSE AREA.    @Y30LB51*/
       2 FREEPTR PTR(31),           /* FSC TABLE FREE ELEMENT PTR.
                                                             @Y30LB51*/
       2 SUMTABLE PTR(31),          /* ADDRESS OF SUM TABLE. @Y30LB51*/
       2 SUMSTART PTR(31),          /* PTR TO SUM CHAIN START.
                                                             @Y30LB51*/
       2 CHAINTBL PTR(31),          /* ADDRESS OF CHAIN TABLE.
                                                             @Y30LB51*/
       2 PRINTTBL PTR(31),          /* ADDRESS OF PRINT TABLE.
                                                             @Y30LB51*/
       2 TBLPTRSV PTR(31),          /* TABLE POINTER SAVE AREA.
                                                             @Y30LB51*/
       2 PRTPTR PTR(31),            /* POINTER TO PRINT TABLE.
                                                             @ZA20267*/
       2 SUMPTR PTR(31),            /* POINTER TO SUM TABLE. @ZA20267*/
       2 FSCTBLCT FIXED(15),        /* COUNT OF FSC TABLES.  @Y30LB51*/
       2 SSIDCT FIXED(15),          /* MAXIMUM NR OF SSIDS IN SYSTEM.
                                                             @Y30LB51*/
       2 SSIDCTR FIXED(15),         /* SSID CHAIN COUNTER.   @Y30LB51*/
       2 TBLELMCT FIXED(15),        /* FSC TABLE ELEMENT COUNTER.
                                                             @Y30LB51*/
       2 I FIXED(15),               /* WORK COUNTER.         @Y30LB51*/
       2 WORKFLGS BIT(16),          /* WORK FLAGS.           @Y30LB51*/
        3 MSCREC BIT(1),            /* MSC DEVICE RECORD.    @Y30LB51*/
        3 SAREC BIT(1),             /* SA DEVICE RECORD.     @Y30LB51*/
        3 DRCREC BIT(1),            /* DRC DEVICE RECORD.    @Y30LB51*/
        3 DRDREC BIT(1),            /* DRD DEVICE RECORD.    @Y30LB51*/
        3 CSREC BIT(1),             /* CS DEVICE RECORD.     @Y30LB51*/
        3 DIRREC BIT(1),            /* 3830 DEVICE RECORD.   @Y30LB51*/
        3 DAREC BIT(1),             /* 3330 DEVICE RECORD.   @Y30LB51*/
        3 DASDREC BIT(1),           /* DASD DEVICE RECORD.   @Y30LB51*/
        3 FMT3ACC1 BIT(1),          /* RT ACCESSOR FSC.      @Y30LB51*/
        3 FMT3ACC2 BIT(1),          /* LEFT ACCESSOR FSC.    @Y30LB51*/
        3 FSCCOUNT BIT(1),          /* COUNT BY FSC ONLY.    @Y30LB51*/
        3 WORKAPR BIT(1),           /* APR ALTERED SSID.     @Y30LB51*/
        3 TBLFULL BIT(1),           /* CHAIN TABLE FULL.     @ZA17155*/
        3 PERMERR BIT(1),           /* PERMANENT ERROR.      @ZA20267*/
        3 TEMPERR BIT(1),           /* TEMPORARY ERROR.      @ZA20267*/
        3 ADDCORE BIT(1),           /* ADDED FSC TABLE NEEDED SW.
                                                             @Y30LB51*/
       2 LSSID CHAR(2),             /* STORAGE FOR SSID.     @Y30LB51*/
       2 LFSC CHAR(4),              /* STORAGE FOR LIBRARY FSC.
                                                             @Y30LB51*/
       2 LFSCSYS CHAR(2),           /* STORAGE FOR NON-LIBRARY FSC.
                                                             @Y30LB51*/
       2 LTYPE CHAR(2),             /* STORAGE FOR DEVICE TYPE.
                                                             @Y30LB51*/
       2 SSIDSAVE BIT(16),          /* SSID AND FLAGS WORK AREA.
                                                             @Y30LB51*/
        3 CUAFLAG BIT(4),           /* SSID FLAG.            @Y30LB51*/
        3 SSIDDEV BIT(4),           /* DEVICE TYPE CHARACTER.
                                                             @Y30LB51*/
        3 * BIT(8),                 /*                       @Y30LB51*/
       2 SEVSAVE CHAR(2),           /* SEVERITY CODE SAVE AREA.
                                                             @ZA20267*/
       2 SEVMASK BIT(16),           /* SEVERITY CODE SEARCH MASK.
                                                             @ZA20267*/
        3 SEVMFMT BIT(8),           /* RECORD FORMAT.        @ZA20267*/
        3 SEVMSFMT BIT(8),          /* SUBFMT AND MSG CODE.  @ZA20267*/
       2 FSCSYSSV CHAR(2),          /* SAVE AREA FOR NON-LIBRARY FSC.
                                                             @Y30LB51*/
       2 FSCSAVE1 CHAR(4),          /* FSC SAVE AREA (RT ACC).
                                                             @Y30LB51*/
       2 FSCSAVE2 CHAR(4),          /* FSC SAVE AREA (LEFT ACC).
                                                             @Y30LB51*/
       2 SUMBUILD FIXED(15),        /* WORK AREA TO COMPUTE SUM.
                                                             @Y30LB51*/
       2 LINECT FIXED(15),          /* OUTPUT LINE COUNTER.  @Y30LB51*/
       2 DEVBYTES BIT(16),          /* WORK AREA FOR DEVICE ID.
                                                             @ZD00149*/
        3 DEVBYTEA BIT(8),          /* FIRST WORK BYTE.      @ZD00149*/
        3 DEVBYTEB BIT(8);          /* SECOND WORK BYTE.     @ZD00149*/
    %FSCWORKL='LENGTH(FSCWORK)';
 @EJECT;

 /*  FORMAT OF THE FSC TABLE ELEMENT.                                */

    /*****************************************************************/
    /*                                                               */
    /* FSCTBL -- TABLE FOR THE ACCUMULATION OF THE COUNT OF RECORDS  */
    /* PROCESSED.                                                    */
    /*                                                               */
    /*****************************************************************/

     DCL 1 FSCTBL BASED(TBLPTR),    /*                       @Y30LB51*/
       2 FSCSPTR PTR(31),           /* PTR TO NEXT ELEMENT ON SSID
                                       CHAIN.                @Y30LB51*/
       2 FSCSSID CHAR(2),           /* SSID.                 @ZA20267*/
        3 DEVCHAR CHAR(1),          /* DEVICE CHARACTER.     @Y30LB51*/
        3 UNITCHAR CHAR(1),         /* UNIT CHARACTER.       @Y30LB51*/
       2 FSCSEV FIXED(15),          /* SEVERITY CODE.        @ZA20267*/
       2 FSCFSC CHAR(4),            /* FSC.                  @Y30LB51*/
        3 FSCSYS CHAR(2),           /* SUBSYSTEM FSC.        @Y30LB51*/
        3 * CHAR(1),                /*                       @ZD00149*/
        3 CNTLUNIT BIT(8),          /* DASD CONTROL UNIT.    @ZD00149*/
       2 FSCDT CHAR(8),             /* DATE/TIME STAMP.      @Y30LB51*/
        3 FSCDATE CHAR(4),          /* DATE -- YEAR AND DAY. @Y30LB51*/
         4 FSCYR CHAR(2),           /* YEAR.                 @Y30LB51*/
         4 FSCDAY CHAR(2),          /* DAY.                  @Y30LB51*/
        3 FSCTIME CHAR(4),          /* TIME.                 @Y30LB51*/
         4 FSCHR CHAR(1),           /* HOURS.                @Y30LB51*/
         4 FSCMIN CHAR(1),          /* MINUTES.              @Y30LB51*/
         4 FSCSEC CHAR(1),          /* SECONDS.              @Y30LB51*/
         4 FSCHSEC CHAR(1),         /* HUNDREDTHS OF A SECOND.
                                                             @Y30LB51*/
       2 FSCCTR FIXED(15),          /* RECORD COUNTER.       @Y30LB51*/
       2 FSCSUM FIXED(15),          /* TOTAL ERRORS FOR THIS SSID.
                                                             @Y30LB51*/
       2 FSCPCT FIXED(15),          /* PERCENT (FSCCTR/FSCSUM).
                                                             @Y30LB51*/
       2 FSCFLAGS BIT(16),          /* FSC TABLE FLAGS.      @Y30LB51*/
        3 MSCFLAG BIT(1),           /* MSC DEVICE FLAG.      @Y30LB51*/
        3 SAFLAG BIT(1),            /* SA DEVICE FLAG.       @Y30LB51*/
        3 DRCFLAG BIT(1),           /* DRC DEVICE FLAG.      @Y30LB51*/
        3 DRDFLAG BIT(1),           /* DRD DEVICE FLAG.      @Y30LB51*/
        3 CSFLAG BIT(1),            /* CS DEVICE FLAG.       @Y30LB51*/
        3 DIRFLAG BIT(1),           /* 3830 DEVICE FLAG.     @Y30LB51*/
        3 DAFLAG BIT(1),            /* 3330 DEVICE FLAG.     @Y30LB51*/
        3 DASDFLAG BIT(1),          /* DASD SSID FLAG.       @Y30LB51*/
        3 REALDASD BIT(1),          /* REAL DASD FLAG.       @Y30LB51*/
        3 VIRTDASD BIT(1),          /* VIRTUAL DASD FLAG.    @Y30LB51*/
        3 FAKEFSC BIT(1),           /* GENERATED FSC FLAG.   @Y30LB51*/
        3 FSCAPR BIT(1),            /* APR ALTERED SSID FLAG.
                                                             @Y30LB51*/
        3 NOSEVCD BIT(1),           /* NO SEVERITY CODE.     @ZA20267*/
        3 * BIT(2),                 /*                       @Y30LB51*/
        3 INPRTTBL BIT(1),          /* ELEMENT IN PRINT TABLE FLAG.
                                                             @ZD00149*/
       2 FSCDEVS BDY(WORD) CHAR(16),/* DEVICE COUNTERS.      @ZD00149*/
        3 DEVACTR FIXED(15),        /* DEVICE A COUNTER.     @ZD00149*/
        3 DEVBCTR FIXED(15),        /* DEVICE B COUNTER.     @ZD00149*/
        3 DEVCCTR FIXED(15),        /* DEVICE C COUNTER.     @ZD00149*/
        3 DEVDCTR FIXED(15),        /* DEVICE D COUNTER.     @ZD00149*/
        3 DEVECTR FIXED(15),        /* DEVICE E COUNTER.     @ZD00149*/
        3 DEVFCTR FIXED(15),        /* DEVICE F COUNTER.     @ZD00149*/
        3 DEVGCTR FIXED(15),        /* DEVICE G COUNTER.     @ZD00149*/
        3 DEVHCTR FIXED(15);        /* DEVICE H COUNTER.     @ZD00149*/
    %FSCTBLL='LENGTH(FSCTBL)';
 @EJECT;

 /*  FORMAT OF THE CHAIN TABLE ELEMENT.                              */

    /*****************************************************************/
    /*                                                               */
    /* CHNTBL -- THIS TABLE CONTAINS THE SSIDS THAT HAVE BEEN        */
    /* PROCESSED FOR THE FSC REPORT ALONG WITH A POINTER TO THE START*/
    /* OF THE CHAIN OF ENTRIES IN THE FSC TABLE FOR EACH SSID.       */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 CHNTBL BASED(CHNPTR),       /*                       @Y30LB51*/
       2 CHNTPTR PTR(31),           /* PTR TO NEXT TABLE ELEMENT.
                                                             @Y30LB51*/
       2 CHNSSIDF CHAR(2),          /* SSID AND FLAGS AREA.  @Y30LB51*/
        3 SSIDFLGS BIT(4),          /* SSID FLAGS.           @Y30LB51*/
        3 CHNSSID BIT(12),          /* SSID.                 @Y30LB51*/
       2 * CHAR(2),                 /*                       @Y30LB51*/
       2 FSCTPTR PTR(31);           /* PTR TO FSC TABLE.     @Y30LB51*/
    %CHNTBLL='LENGTH(CHNTBL)';
 @EJECT;

 /* FORMAT OF THE SUM TABLE ELEMENT.                                 */

    /*****************************************************************/
    /*                                                               */
    /* SUMTBL -- THIS IS A WORK TABLE USED FOR THE COMPUTATION OF THE*/
    /* TOTAL NUMBER OF RECORDS PROCESSED FOR EACH SSID.              */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 SUMTBL BASED(SUMPTR),       /*                       @Y30LB51*/
       2 SUMTPTR PTR(31),           /* PTR TO NEXT SUM CHAIN ELEMENT.
                                                             @Y30LB51*/
       2 SUMSSID CHAR(2),           /* SSID.                 @Y30LB51*/
       2 SUMTOTAL FIXED(15),        /* TOTAL RECORDS FOR THIS SSID.
                                                             @Y30LB51*/
       2 SUMFPTR PTR(31),           /* PTR TO SSID CHAIN.    @Y30LB51*/
       2 SUMSCTR FIXED(15),         /* COUNT OF ELEMENTS ON SSID
                                       CHAIN.                @Y30LB51*/
       2 SUMPCTR FIXED(15);         /* COUNT OF ELEMENTS PROCESSED.
                                                             @Y30LB51*/
    %SUMTBLL='LENGTH(SUMTBL)';

 /* FORMAT OF THE PRINT TABLE ELEMENT.                               */

    /*****************************************************************/
    /*                                                               */
    /* PRTTBL -- THIS TABLE CONSISTS OF POINTERS TO THE FSC TABLE    */
    /* ENTRIES IN THE ORDER IN WHICH THE FSC TABLE ENTRIES WILL      */
    /* APPEAR IN THE REPORT.                                         */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 PRTTBL BASED(PRTPTR),       /*                       @Y30LB51*/
       2 PRTTPTR PTR(31);           /* PTR TO FSC TABLE ELEMENT.
                                                             @Y30LB51*/
    %PRTTBLL='LENGTH(PRTTBL)';
./ ADD NAME=ISDAFSPC
         MACRO
         ISDAFSPC &OP,&LV=,&A=                                 @Y30LB55
         MEND
./ ADD NAME=ISDAGHDR

    /*****************************************************************/
    /*                                                               */
    /* ISDAGHDR - ISDAGET0 HEADER DCL                                */
    /*                                                               */
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAGHDR)                              @Y30LB55*/

    DCL                             /* ISDAGET0 HEADER DCL   @Y30LB55*/
      1 ISDAGHDR BASED(GET0PTR),
       2 STARTPTR PTR(31),          /* PTR TO START OF DATA AREA
                                                             @Y30LB55*/
       2 ENDPTR PTR(31),            /* PTR TO END OF DATA AREA
                                                             @Y30LB55*/
       2 GET0SPLN FIXED(31),        /* SP NO. + LENGTH IN BYTES
                                                             @Y30LB55*/
        3 GET0SPNO BIT(8),          /* SUBPOOL NUMBER        @Y30LB55*/
        3 GET0LEN FIXED(24),        /* LENGTH OF BLOCK       @Y30LB55*/
       2 NEXTPTR PTR(31),           /* PTR TO NEXT BLOCK     @ZM30730*/
       2 LASTPTR PTR(31),           /* PTR TO PREVIOUS BLOCK @Y30LB55*/
       2 BLOCKID CHAR(4),           /* 4 BYTE OWNER ID       @Y30LB55*/
       2 BLOCKCNT FIXED(15),        /* 2 BYTE BLOCK COUNT    @Y30LB55*/
       2 * CHAR(2);                 /* RESERVED FOR FUTURE USE
                                                             @Y30LB55*/
    %GET0HDRL='LENGTH(ISDAGHDR)';                          /*@Y30LB55*/

 /*  %GET0HDRL='LENGTH(ISDAGHDR)'                            @Y30LB55*/
 /* DCL DATA AREA AS STRUCTURE BASED(STARTPTR)               @Y30LB55*/
./ ADD NAME=ISDAGSPC
         MACRO
         ISDAGSPC &OP,&LV=                                     @Y30LB55
         L     1,0(1) LOAD PTR TO CALLING SEQUENCE             @Y30LB55
         L     2,0(1) LOAD ADDRESS OF ISDACVT                  @Y30LB55
         USING ISDACVT,2 TEMP BASE REGISTER                    @Y30LB55
         LA    1,SDADATD LOAD ADDRESS OF SDASA001              @Y30LB55
         DROP  2 DROP BASE REGISTER                            @Y30LB55
         MEND
./ ADD NAME=ISDALOBR

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDALOBR - FULL DCL FOR SDA INPUT RECORDS             @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDALOBR)                              @Y30LB55*/

    DCL                             /* BASE STRUCTURE FOR RECORDS
                                       FROM SYS1.LOGREC      @Y30LB55*/
      1 OBRMDR BASED(LOGPTR),       /* 1832=BLKSIZE EREP0    @Y30LB55*/
       2 SCW FIXED(31),             /* SEGMENT CONTROL WORD  @Y30LB55*/
        3 SLENGTH FIXED(15),        /* LENGTH OF SEGMENT     @Y30LB55*/
        3 SCODE BIT(8),             /* SEGMENT CODE          @Y30LB55*/
        3 * CHAR(1),                /*                       @Y30LB55*/
       2 CLASRC BIT(8),             /* 0                     @Y30LB55*/
       2 SYSREL BIT(8),             /* 1                     @Y30LB55*/
       2 SWITCHES CHAR(4),          /* 2                     @Y30LB55*/
        3 SWITCH0 BIT(8),
        3 SWITCH1 BIT(8),           /* BIT 2 = 1 = OBR SHORT @Y30LB55*/
        3 SWITCH2 BIT(8),           /* DEV TYPE FOR MDR      @Y30LB55*/
        3 SWITCH3 BIT(8),           /*                       @Y30LB55*/
       2 RCDCNT BIT(8),             /* 6                     @Y30LB55*/
       2 RECENTRY BIT(8),           /* 7 REC TYPE ID FOR MDR @Y30LB55
                                       SHORT(SWAP)                   */
       2 DATETIME CHAR(8),          /* 8 DATETIME USED FOR HI LOW
                                       COMPARES              @Y30LB55*/
        3 DATE CHAR(4),             /* 8 PACKED YEAR AND DAY @Y30LB55*/
         4 YEAR CHAR(2),            /* YEAR IN PACKED DECIMAL@Y30LB55*/
         4 DAY CHAR(2),             /* DAY IN PACKED DECIMAL @Y30LB55*/
        3 TIME CHAR(4),             /* 12 SEE BITS 1 AND 4 OF SWITCH0
                                                             @Y30LB55*/
         4 HOUR CHAR(1),            /* HOUR IN PACKED DECIMAL@Y30LB55*/
         4 MINUTE CHAR(1),          /* MINUTE IN PACKED DECIMAL
                                                             @Y30LB55*/
         4 SECOND CHAR(1),          /* SECOND IN PACKED DECIMAL
                                                             @Y30LB55*/
         4 TENSHUND CHAR(1),        /* TENTHS, HUNDRETHS PACKED
                                                             @Y30LB55*/
       2 VERNO BIT(8),              /* 16                    @Y30LB55*/
       2 CPUSERID CHAR(5),          /* 17-21 CPU USER+ID     @Y30LB55*/
        3 CPUSER CHAR(3),           /* 17                    @Y30LB55*/
        3 CPUID CHAR(2),            /* 20                    @Y30LB55*/
       2 SDRCNT1 CHAR(2),           /* 22 OBR SHORT DATA LENGTH
                                                             @Y30LB55*/
       2 DEVDEP1,                   /* 24 DEVICE DATA FOR MDR LONG
                                                             @Y30LB55*/
        3 JOBID CHAR(8),            /* 24 OBR LONG           @Y30LB55*/
         4 DEVTYPE1 CHAR(4),        /* 24 OBR SHORT UCBTYP   @Y30LB55*/
          5 MDRCUA CHAR(2),         /* 24 CUA FOR ALL MDR    @Y30LB55*/
         4 * CHAR(1),               /* 28 OBR SHORT          @Y30LB55*/
         4 CUA2 CHAR(3),            /* 29 OBR SHORT          @Y30LB55*/
        3 SDRINF,                   /* 32 OBR SHORT, ALL MDR DATA
                                                             @Y30LB55*/
         4 FAILCCW CHAR(8),         /* 32 OBR LONG           @Y30LB55*/
         4 CSW CHAR(8),             /* 40 OBR LONG           @Y30LB55*/
         4 DEVDEPC CHAR(1),         /* 48 NO. DEVDEP/8       @Y30LB55*/
         4 SECUA CHAR(3),           /* 49 OBR LONG           @Y30LB55*/
         4 DEVTYPE2 CHAR(4),        /* 52 OBR LONG UCBTYP    @Y30LB55*/
         4 SDRCNT2 CHAR(1),         /* 56 NO. SDR BYTES      @Y30LB55*/
         4 PCUA CHAR(3),            /* 57 OBR LONG-PRIMARY CUA
                                                             @Y30LB55*/
         4 IORETRY CHAR(2),         /* 60 OBR LONG           @Y30LB55*/
         4 SENSCNT CHAR(2),         /* 62 SENSE LENGTH       @Y30LB55*/
         4 DEVDEP2 CHAR(1764);      /* 64 OBR LONG DATA      @Y30LB55*/
    %OBRMDRL='LENGTH(OBRMDR)';                             /*@Y30LB55*/
    DCL
      1 DEVTYPE CHAR(4) BASED(DEVPTR),/* UCBTYP FIELD        @Y30LB55*/
       2 IOFLAGS BIT(8),            /*                       @Y30LB55*/
       2 OPTFLAGS BIT(8),           /*                       @Y30LB55*/
       2 CLASTYPE BIT(16),          /*                       @Y30LB55*/
        3 DEVCLASS BIT(8),          /*                       @Y30LB55*/
        3 UNITTYPE BIT(8);                                 /*@Y30LB55*/

 /*  DCL DEVPTR PTR(31)  ADDRESS OF DEVTYPE1 OR DEVTYPE2     @Y30LB55*/
 /*  DCL  LOGPTR PTR(31)  AND SET LOGPTR=DATAPTR             @Y30LB55*/
 /*  %OBRMDRL='LENGTH(OBRMDR)'                               @Y30LB55*/
./ ADD NAME=ISDAMCFG
    /*****************************************************************/
    /*                                                               */
    /* THIS STRUCTURE MAPS THE FIXED PORTION OF THE CONFIGURATION    */
    /* DATA. THIS STRUCTURE CONTAINS THE COUNTS OF ALL DEVICES IN THE*/
    /* SUBSYSTEM BEING REPORTED ON. THE DATA IS FILLED IN BY THE     */
    /* 'ISDACNFG' MODULE FROM THE 'SDACNFG' CONTROL INPUT.           */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 PCNFG BASED(CNFG0PTR) BDY(WORD),/*                   @Y30LB52*/
       2 CNFGFXD CHAR(16) BDY(WORD),/*                       @Y30LB52*/
        3 MSFNO FIXED(15),          /* NUMBER OF MSF'S       @Y30LB52*/
        3 CPUNO FIXED(15),          /* COUNT OF HOSTS        @Y30LB52*/
        3 SPINO FIXED(15),          /* COUNT OF SPINDLES     @Y30LB52*/
        3 SANO FIXED(15),           /* COUNT OF SA'S         @Y30LB52*/
        3 LIBSIZS CHAR(4),          /* MSF SIZES             @Y30LB52*/
        3 CHINTFNO FIXED(15),       /* COUNT OF INTERFACES   @Y30LB52*/
        3 PCNFGL FIXED(15),         /* LENGTH OF CNFG AREA   @Y30LB52*/
       2 LTPAD PTR(31),             /* ADDR OF DRC TABLE     @Y30LB52*/
       2 CHCUAD PTR(31),            /* ADDR OF CPUID TABLE   @Y30LB52*/
       2 CPUSERAD PTR(31),          /* ADDR OF CPU SERS      @Y30LB52*/
       2 CNFGTOTL FIXED(15),        /* TOTAL DEVICES         @Y30LB52*/
       2 * FIXED(15),               /*                       @Y30LB52*/
       2 SAINTFP PTR(31);           /* POINTER TO SA INTERFACE ARRAY */
./ ADD NAME=ISDAMSC0

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDAMSC0 - 28 BYTE FORMAT 0 DCL                       @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAMSC0)                              @Y30LB55*/

    DCL                             /* FORMAT0 MSC MSG CODES 5,7
                                                             @Y30LB55*/
      1 ISDAMSC0 CHAR(28) BASED(SENSEPTR) POS(5),
       2 VOLID0 CHAR(6),            /* 4-9                   @Y30LB55*/
        3 CHR0 CHAR(3),             /* 4-6                   @Y30LB55*/
         4 SSID0 BIT(12),           /* 4,5                   @Y30LB55*/
       2 TBLID0 CHAR(1),            /* 10                    @Y30LB55*/
       2 MSGCODE0 CHAR(1),          /* 11 MESSAGE CODE       @Y30LB55*/
       2 TERMCOD0 CHAR(1),          /* 12 TERMINATION CODE   @Y30LB55*/
       2 * CHAR(1),                 /* 13                    @Y30LB55*/
       2 XYZL0 CHAR(2),             /* 14,15                 @Y30LB55*/
       2 RUSECNT0 CHAR(4),          /* 16-19 READ USAGE COUNTER
                                                             @Y30LB55*/
       2 WUSECNT0 CHAR(4),          /* 20-23 WRITE USAGE COUNTER
                                                             @Y30LB55*/
       2 SRCHECK0 CHAR(2),          /* 24,25 SOFT READ CHECKS@Y30LB55*/
       2 SWCHECK0 CHAR(2),          /* 26,27 SOFT WRITE CHECKS
                                                             @Y30LB55*/
       2 RWLOADS0 CHAR(2),          /* 28,29 NO. OF DRD LOADS@Y30LB55*/
       2 LOADERR0 CHAR(2);          /* 30,31 NO. OF LOAD ERRORS
                                                             @Y30LB55*/
./ ADD NAME=ISDAMSC1

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDAMSC1 - 28 BYTE FORMAT 1 DCL                       @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAMSC1)                              @Y30LB55*/

    DCL                             /* FORMAT1 MSC EQUIP. CHECK
                                                             @Y30LB55*/
      1 ISDAMSC1 CHAR(28) BASED(SENSEPTR) POS(5),
       2 * CHAR(7),                 /* 4-10                  @Y30LB55*/
       2 MSGCODE1 CHAR(1),          /* 11                    @Y30LB55*/
       2 * CHAR(3),                 /* 12-14                 @Y30LB55*/
       2 CNTLCKS1 BIT(8),           /* 15                    @Y30LB55*/
       2 CHBOTA1 BIT(8),            /* 16                    @Y30LB55*/
       2 CHBIMA1 BIT(8),            /* 17                    @Y30LB55*/
       2 CHTAGBO1 BIT(8),           /* 18                    @Y30LB55*/
       2 TCREG1 BIT(8),             /* 19                    @Y30LB55*/
       2 IOCHNLC1 BIT(8),           /* 20                    @Y30LB55*/
       2 CHCK2F1 BIT(8),            /* 21                    @Y30LB55*/
       2 TAGIN1 BIT(8),             /* 22                    @Y30LB55*/
       2 CHERRNO1 BIT(8),           /* 23                    @Y30LB55*/
       2 TIMOUT1 BIT(8),            /* 24                    @Y30LB55*/
       2 CHRESET1 BIT(8);           /* 25                    @Y30LB55*/
./ ADD NAME=ISDAMSC2

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDAMSC2 - 28 BYTE FORMAT 2 DCL                       @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAMSC2)                              @Y30LB55*/

    DCL                             /* FORMAT2 MSC DATA CHECK@Y30LB55*/
      1 ISDAMSC2 CHAR(28) BASED(SENSEPTR) POS(5),
       2 * CHAR(7),                 /* 4-10                  @Y30LB55*/
       2 MSGCODE2 CHAR(1),          /* 11                    @Y30LB55*/
       2 FAILADD2 CHAR(2),          /* 12,13 FAIL ADDR HI AND LOW
                                                             @Y30LB55*/
       2 * CHAR(3),                 /* 14-16                 @Y30LB55*/
       2 CHCTRLT2 CHAR(1),          /* 17                    @Y30LB55*/
       2 HOSTITG2 CHAR(1),          /* 18                    @Y30LB55*/
       2 * CHAR(1),                 /* 19                    @Y30LB55*/
       2 STBYT0F2 CHAR(1),          /* 20                    @Y30LB55*/
       2 STBYT1F2 CHAR(1),          /* 21                    @Y30LB55*/
       2 STBYT2F2 CHAR(1),          /* 22                    @Y30LB55*/
       2 STBYT3F2 CHAR(1),          /* 23                    @Y30LB55*/
       2 ERLAT1F2 BIT(8),           /* 24                    @Y30LB55*/
       2 ERLAT2F2 BIT(8);           /* 25                    @Y30LB55*/
./ ADD NAME=ISDAMSC3

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDAMSC3 - 28 BYTE FORMAT 3 DCL                       @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAMSC3)                              @Y30LB55*/

    DCL                             /* FORMAT3 CARTRIDGE STORE SENSE
                                                             @Y30LB55
                                       RECORD                        */
      1 ISDAMSC3 CHAR(28) BASED(SENSEPTR) POS(5),/* CARTRIDGE STORE
                                                             @Y30LB55*/
       2 STATUS3 BIT(8),            /* 0                     @Y30LB55*/
       2 RECOVER3 BIT(8),           /* 1                     @Y30LB55*/
       2 MOVES12 BIT(8),            /* 2 (0-3=ACC 1) (4-7=ACC 2)
                                                             @Y30LB55*/
       2 QUEUE3 BIT(8),             /* 3                     @Y30LB55*/
       2 FSCACC1 CHAR(4),           /* 4-7 FAULT SYMPTOM CODE ACC 1
                                                             @Y30LB55*/
        3 MCHKACC1 BIT(8),          /* 4                     @Y30LB55*/
        3 FAULT1F3 BIT(8),          /* 5                     @Y30LB55*/
        3 PCHKACC1 BIT(8),          /* 6                     @Y30LB55*/
        3 SHIFT1F3 BIT(8),          /* 7                     @Y30LB55*/
       2 FSCACC2 CHAR(4),           /* 8-11 FAULT SYMPTOM CODE ACC 2
                                                             @Y30LB55*/
        3 MCHKACC2 BIT(8),          /* 8 SAME AS 4           @Y30LB55*/
        3 FAULT2F3 BIT(8),          /* 9 SAME AS 5           @Y30LB55*/
        3 PCHKACC2 BIT(8),          /* 10 SAME AS 6          @Y30LB55*/
        3 SHIFT2F3 BIT(8),          /* 11 SAME AS 7          @Y30LB55*/
       2 MISCF3 BIT(8),             /* 12 MISC. CHECKS       @Y30LB55*/
       2 IREGS1F3 BIT(8),           /* 13 INTERNAL REGS      @Y30LB55*/
       2 IREGS2F3 BIT(8),           /* 14 INTERNAL REGS      @Y30LB55*/
       2 IREGS3F3 BIT(8),           /* 15 INTERNAL REGS      @Y30LB55*/
       2 * CHAR(12);                /* 16-27 ZEROS           @Y30LB55*/
./ ADD NAME=ISDAMSC4

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDAMSC4 - 28 BYTE FORMAT 4 DCL                       @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAMSC4)                              @Y30LB55*/

    DCL                             /* FORMAT4 SA,DRC,DRD    @Y30LB55*/
      1 ISDAMSC4 CHAR(28) BASED(SENSEPTR) POS(5),
       2 STATUS14 BIT(8),           /* 0                     @Y30LB55*/
       2 STATUS24 BIT(8),           /* 1                     @Y30LB55*/
       2 CHADDRF4 CHAR(1),          /* 2 CHANNEL ADDRESS     @Y30LB55*/
       2 CMDERRF4 CHAR(1),          /* 3 COMMAND IN ERROR    @Y30LB55*/
       2 * CHAR(1),                 /* 4 SPARE               @Y30LB55*/
       2 RETRYF4 BIT(8),            /* 5                     @Y30LB55*/
       2 LOWADDF4 CHAR(1),          /* 6 LOWER INTERFACE LOG. ADDR
                                                             @Y30LB55*/
       2 FMTMSG4 BIT(8),            /* 7 FORMAT NO. (0-3), MESSAGE
                                       (4-7)                 @Y30LB55*/
        3 SUBFMTN4 BIT(4),          /* SUBFORMAT NUMBER      @Y30LB55*/
        3 MSGCODE4 BIT(4),          /* MESSAGE CODE          @Y30LB55*/
       2 SASENSE CHAR(20),          /* 8-27 SUBFORMATS 9,A,B,C,D,E
                                                             @Y30LB55*/
        3 BYTE8F4 BIT(8),           /* 8                     @Y30LB55*/
        3 BYTE9F4 BIT(8),           /* 9                     @Y30LB55*/
        3 BYTE10F4 BIT(8),          /* 10                    @Y30LB55*/
        3 BYTE11F4 BIT(8),          /* 11                    @Y30LB55*/
        3 BYTE12F4 BIT(8),          /* 12                    @Y30LB55*/
        3 BYTE13F4 BIT(8),          /* 13                    @Y30LB55*/
        3 BYTE14F4 BIT(8),          /* 14                    @Y30LB55*/
        3 BYTE15F4 BIT(8),          /* 15                    @Y30LB55*/
        3 BYTE16F4 BIT(8),          /* 16                    @Y30LB55*/
        3 BYTE17F4 BIT(8),          /* 17                    @Y30LB55*/
        3 BYTE18F4 BIT(8),          /* 18                    @Y30LB55*/
        3 BYTE19F4 BIT(8),          /* 19                    @Y30LB55*/
        3 BYTE20F4 BIT(8),          /* 20                    @Y30LB55*/
        3 BYTE21F4 BIT(8),          /* 21                    @Y30LB55*/
        3 FSCFMT4 BIT(16),          /* 22,23 FAULT SYMPTOM CODE
                                                             @Y30LB55*/
        3 BYTE24F4 BIT(8),          /* 24                    @Y30LB55*/
        3 BYTE25F4 BIT(8),          /* 25                    @Y30LB55*/
        3 BYTE26F4 BIT(8),          /* 26                    @Y30LB55*/
        3 BYTE27F4 BIT(8);          /* 27                    @Y30LB55*/
 /* %INCLUDE ISDADCLS(ISDAMSC5)                              @Y30LB55*/
./ ADD NAME=ISDAMSC5

    /*****************************************************************/
    /*                                                       @Y30LB55*/
    /* ISDAMSC5 - 28 BYTE FORMAT 5 DCL ---- BASE ISDAMSC5 ON SENSEPTR*/
    /* POS(5) IF MSC RECORD. BASE ISDAMSC5 ON SENSEPTR IF DASD OBR   */
    /* RECORD                                                @Y30LB55*/
    /*                                                       @Y30LB55*/
    /*****************************************************************/

    DCL                             /* FORMAT5 DASD          @Y30LB55*/
      1 ISDAMSC5 CHAR(28) BASED,
       2 STATUS15 BIT(8),           /* 0                     @Y30LB55*/
       2 STATUS25 BIT(8),           /* 1                     @Y30LB55*/
       2 STATUS35 BIT(8),           /* 2                     @Y30LB55*/
       2 RESTART5 BIT(8),           /* 3 RESTART             @Y30LB55*/
       2 DRIVEID4 BIT(8),           /* 5 CHAN/DRIVE ID       @Y30LB55*/
       2 LOWCYL5 BIT(8),            /* 5                     @Y30LB55*/
       2 HIGHCYL5 BIT(8),           /* 6                     @Y30LB55*/
       2 FMTMSG5 BIT(8),            /* 7 FORMAT NO. (0-3), MESSAGE
                                       (4-7)                 @Y30LB55*/
        3 SUBFMTN5 BIT(4),          /* SUBFORMAT NUMBER      @Y30LB55*/
        3 MSGCODE5 BIT(4),          /* MESSAGE CODE          @Y30LB55*/
       2 DASDSENS CHAR(20),         /* 8-27 SUBFORMATS 0 - 6 @Y30LB55*/
        3 BYTE8F5 BIT(8),           /* 8                     @Y30LB55*/
        3 BYTE9F5 BIT(8),           /* 9                     @Y30LB55*/
        3 BYTE10F5 BIT(8),          /* 10                    @Y30LB55*/
        3 BYTE11F5 BIT(8),          /* 11                    @Y30LB55*/
        3 BYTE12F5 BIT(8),          /* 12                    @Y30LB55*/
        3 BYTE13F5 BIT(8),          /* 13                    @Y30LB55*/
        3 BYTE14F5 BIT(8),          /* 14                    @Y30LB55*/
        3 BYTE15F5 BIT(8),          /* 15                    @Y30LB55*/
        3 BYTE16F5 BIT(8),          /* 16                    @Y30LB55*/
        3 BYTE17F5 BIT(8),          /* 17                    @Y30LB55*/
        3 BYTE18F5 BIT(8),          /* 18                    @Y30LB55*/
        3 BYTE19F5 BIT(8),          /* 19                    @Y30LB55*/
        3 BYTE20F5 BIT(8),          /* 20                    @Y30LB55*/
        3 BYTE21F5 BIT(8),          /* 21                    @Y30LB55*/
        3 FSCFMT5 BIT(16),          /* 22,23 FAULT SYMPTOM CODE
                                                             @Y30LB55*/
        3 RUAFMT5 BIT(8),           /* 24                    @Y30LB55*/
        3 REALCYL5 BIT(16),         /* 25,26                 @Y30LB55*/
        3 BYTE27F5 BIT(8);          /* 27                    @Y30LB55*/
./ ADD NAME=ISDAMSCS

    /*****************************************************************/
    /*                                                               */
    /* ISDAMSCS - 32 BYTE MSS SENSE DCL                              */
    /*                                                               */
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAMSCS)                              @Y30LB55*/

    DCL                             /* MSC SENSE DATA        @Y30LB55*/
      1 ISDAMSCS BASED(SENSEPTR),   /* 32 BYTE SENSE         @Y30LB55*/
       2 STATUS BIT(8),             /* 0 MSC STATUS BYTE     @Y30LB55*/
       2 SUBSYSID BIT(16),          /* 1,2 SSID IN BITS (4-15)
                                                             @Y30LB55*/
        3 SSIDFLAG BIT(4),          /* CE,OFF LINE,HOST CHAN ID
                                                             @Y30LB55*/
        3 SSID BIT(12),             /* 3 DIGIT SSID          @Y30LB55*/
         4 SSIDTYPE BIT(4),         /* 0=DASD,1=CS,2=DRD,4=DRC,8=SA
                                                             @Y30LB55*/
         4 SSIDLIBN BIT(4),         /* RSG 0-29,CS NO. 0-3,SA NO. 0-F
                                                             @Y30LB55*/
         4 SSIDDEVT BIT(4),         /* LOWER DEVICE ID,      @Y30LB55
                                       0-7,0-2,0-7,0-3,0             */
       2 FORMATNO BIT(8),           /* 3 FORMAT IN BITS(0-5) @Y30LB55*/
       2 SUBSENSE CHAR(28),         /* 28 BYTE SENSE DATA    @Y30LB55*/
        3 SUBSTAT4 BIT(8),          /* 4 BYTE 0 OF LOWER UNIT@Y30LB55*/
        3 SUBSTAT5 BIT(8),          /* 5 BYTE 1 OF LOWER UNIT@Y30LB55*/
        3 SALOWADD BIT(8),          /* 6 (SA BYTE 6)=LOWER LOGICAL
                                       ADDR                  @Y30LB55*/
        3 DASDFMTN BIT(8),          /* 7 DASD OBR FORMAT NUMBER
                                                             @Y30LB55*/
        3 * CHAR(1),                /* 8 SPARE               @Y30LB55*/
        3 SARETRY BIT(8),           /* 9 (SA BYTE 5)= RETRY  @Y30LB55*/
        3 SALOWAD2 BIT(8),          /* 10 SAME AS BYTE 6, SALOWADD
                                                             @Y30LB55*/
        3 SUBFMTMG BIT(8),          /* 11 SUBFMT AND MSG CODE@Y30LB55*/
         4 SUBFMTNO BIT(4),         /* SUBFORMAT NUMBER      @Y30LB55*/
         4 MSGCODEN BIT(4),         /* MESSAGE CODE          @Y30LB55*/
        3 * CHAR(10),               /* 12-21                 @Y30LB55*/
        3 DASDFSC BIT(16),          /* 22,23 DASD OBR FAULT SYMPTOM
                                       CODE                  @Y30LB55*/
        3 RUADASD BIT(8),           /* 24 DASD REAL UNIT ADDRESS
                                                             @Y30LB55*/
        3 * CHAR(1),                /* 25                    @Y30LB55*/
        3 MSCFSC BIT(16),           /* 26,27 (SA BYTE 22,23)=FMT 4,5
                                       FSC                   @Y30LB55*/
        3 RUAMSCD BIT(8),           /* 28 RUA FOR VIRT DASD  @Y30LB55*/
        3 RCYLMSCD BIT(16),         /* 29,30 REAL CYL FOR VIRT DASD
                                                             @Y30LB55*/
        3 SANOMSCD BIT(8);          /* 31 SA NUMBER FOR VIRT DASD
                                                             @Y30LB55*/
    %MSCSENSL='LENGTH(ISDAMSCS)';                          /*@Y30LB55*/

 /*  %MSCSENSL='LENGTH(ISDAMSCS)'                            @Y30LB55*/
 /* DCL SENSEPTR PTR(31)  AND SET SENSEPTR=SDATAPTR          @Y30LB55*/
./ ADD NAME=ISDAPAD5
    /*****************************************************************/
    /*                                                               */
    /*                                                       @Y30LB52*/
    /* THE FOLLOWING VARIABLES AND STRUCTURES MAP THE VARIABLE       */
    /* CONFIGURATION DATA PRODUCED BY THE 'ISDACNFG' ROUTINE. THE    */
    /* TABLES ARE ANCHORED BY POINTERS IN THE FIXED CONFIGURATION    */
    /* STRUCTURE.                                            @Y30LB52*/
    /*                                                       @Y30LB52*/
    /*                                                               */
    /*****************************************************************/

    DCL

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THE FOLLOWING IS A BASED VARIABLE MAPPING THE 16 POSSIBLE   */
      /* CPU SERIAL ID'S ATTACHED TO THE SUBSYSTEM IN THE    @Y30LB52*/
      /* CONFIGURATION DESCRIBED. EACH SERIAL IS 5 BYTES.    @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      CPUSERS CHAR(80) BASED(CPUSERAD),/* CPU SERIALS        @Y30LB52*/

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THIS STRUCTURE MAPS THE LOGICAL CONFIGURATION OF THE SS/1   */
      /* DRC'S AND DRD'S ONTO THE PHYSICAL CONFIGURATION THIS@Y30LB52*/
      /* STRUCTURE CONTAINS AN ENTRY FOR EACH DRC IN A PHYSICAL      */
      /* LIBRARY. FOR EACH ENTRY THE PHYSICAL SA(FOR DRC) AND ITS    */
      /* LOGICAL CONNECTION IS GIVEN.                        @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      LTPDRDP PTR(31),              /* LOGICAL TO PHYSICAL TABLE BASE
                                                             @Y30LB52*/
      1 LTPDRDTB CHAR(8) BDY(HWORD) BASED(LTPDRDP),/* LOGICAL TO
                                       PHYSICAL SA-CONTROLLER
                                       CONNECTION TABLE      @Y30LB52*/
       2 LTPDRC(4) CHAR(2),         /* FOUR CONTROLLERS MAXIMUM PER
                                       CARTRIDGE STORE       @Y30LB52*/
        3 DRCL0 CHAR(1),            /* SA AND LOGICAL CONNECTION FOR
                                       FIRST INTERFACE       @Y30LB52*/
        3 DRCL1 CHAR(1),            /* SA CNTN AND LOGICALNO.
                                                             @Y30LB52
                                                                     */
 @EJECT;

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* FOR EACH MSC, THERE IS A SA ARRAY                   @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      1 SADRDDSD(16) CHAR(8) BDY(WORD) BASED,/* TWO LOWER LEVEL
                                       POINTERS FOR EACH SA  @Y30LB52*/
       2 SADRDACC PTR(31),          /* PTR TO DRD ACCUMULATORS       */
       2 SADASDAC PTR(31),          /* PTR TO DASD ACCUMULATORS      */
      CSADRDDS CHAR(128) DEF(SADRDDSD),/* CHARACTER MAP OF THE ABOVE
                                       ARRAY                 @Y30LB52*/

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* FOR EACH SA, THERE IS A SEPARATE SET OF ACCUMULATORS@Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      DRDACCTB(4,4) CHAR(6) BDY(HWORD) BASED,/* ARRAY OF ERROR
                                       ACCUMULATORS FOR AN ENTIRE
                                       LIBRARY               @Y30LB52*/
      CDRDACCT CHAR(96) DEF(DRDACCTB),/* CHARACTER MASK FOR THE
                                       ACCUMULATOR ARRAY     @Y30LB52*/
      1 DRDACCS BASED,              /* THREE ERROR TYPES     @Y30LB52*/
       2 DRDERRS FIXED(15),         /* DRD ERRORS            @Y30LB52*/
       2 CTLIERRS FIXED(15),        /* CTL-I INTERFACE ERRORS@Y30LB52*/
       2 DRCERRS FIXED(15),         /* DRD CONTROLLER ERRORS @Y30LB52
                                                                     */
 @ EJECT;

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THIS IS THE TOP LEVEL OF AN ALTERNATE MEANS OF ACCESSING THE*/
      /* STRUCTURE OF HOST/SA DASD ERROR ACCUMULATORS. THIS IS AN    */
      /* ARRAY OF POINTERS TO THE 'CHCUTAB' ENTRIES BASED ON 'SA'    */
      /* NUMBER AND INTERFACE.                               @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      SAINTF(3) PTR(31) BASED,      /* ONE POINTER FOR EACH UPPER
                                       INTERFACE ATTACHED TO A HOST
                                       CHANNEL               @Y30LB52*/

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THIS STRUCTURE MAPS THE TABLE EQUATING CPU/CH/CU    @Y30LB52*/
      /* IDENTIFICATIONS TO ABSOLUTE STORAGE ADAPTOR UPPER   @Y30LB52*/
      /* INTERFACES. THIS TABLE ALSO PROVIDES A POINTER, FOR EACH    */
      /* INTERFACE, TO AN ARRAY OF ACCUMULATORS FOR ERRORS IN A DASD */
      /* PATH.                                               @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      1 CHCUTAB CHAR(12) BDY(WORD) BASED,/* CHANNEL AND CONTROL UNIT
                                       TO SA TABLE           @Y30LB52*/
       2 CPUIDSER CHAR(5),          /* HOST SERIAL           @Y30LB52*/
       2 CHCU CHAR(1),              /* CHANNEL/CONTROL UNIT IDS      */
       2 SA CHAR(1),                /* SA NUMBER             @Y30LB52*/
       2 INTF CHAR(1),              /* WHICH INTERFACE       @Y30LB52*/
       2 SPLTABP PTR(31),           /* PTR TO SPINDLE ACCUMULATORS   */

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* FOR EACH SA AND UPPER INTERFACE(B, C, D), THERE IS A SET OF */
      /* ACCUMULATORS, ONE FOR EACH LOGICAL CONTROLLER AND PHYSICAL  */
      /* DRIVE                                               @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      SPNDLETB(4,8) CHAR(6) BDY(HWORD) BASED,/* SPINDLE ACCUMULATORS */
      CSPNDLET CHAR(192) DEF(SPNDLETB),/* CHARACTER MAP      @Y30LB52*/
      1 SPNDLES BASED,              /* THREE RECORDED ERRORS @Y30LB52*/
       2 DRVEQCHK FIXED(15),        /* DRIVE CHECKS          @Y30LB52*/
       2 STCTLCHK FIXED(15),        /* STORAGE CONTROL CHECKS@Y30LB52*/
       2 STCTLCCK FIXED(15),        /* STORAGE CONTROL CONTROL CHECKS
                                                             @Y30LB52
                                                                     */
 @EJECT;

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THIS STRUCTURE MAPS THE HEADER OF THE FIRST BLOCK OF DYNAMIC*/
      /* STORAGE OBTAINED.                                   @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      1 P0WORK BDY(WORD) BASED(PAD00PTR),
       2 PADFPTR PTR(31),           /* NEXT BLOCK ADDRESS    @Y30LB52*/
       2 PADLASTB PTR(31),          /* LAST BLOCK ADDRESS    @Y30LB52*/
       2 COREASG PTR(31),           /* NEXT AVAILABLE BYTE   @Y30LB52*/
       2 ENDCORE PTR(31),           /* END OF BLOCK          @Y30LB52*/

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THE HIGHEST LEVEL CONTAINS MSC UNIT ADDRESSES AND A POINTER */
      /* TO AN SA TABLE                                      @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

       2 MSCDRDAC(8) CHAR(8) BDY(WORD),
        3 MSCINTF CHAR(2),          /* MSC UNIT ADDRESS      @Y30LB52*/
        3 * CHAR(2),
        3 SATABPTR PTR(31),         /* POINTER TO THE SA LEVEL       */

      /***************************************************************/
      /*                                                             */
      /* TOTAL ERROR ACCUMULATOR FOR CARTRIDGE STORE'S AND MSC'S     */
      /*                                                             */
      /***************************************************************/

      2 CSFTOTAL(4) FIXED(15),      /* CS TOTALS             @Y30LB52*/
      2 MSCTOTAL FIXED(15),         /* TOTAL ERRORS FOR MSC(DASD)
                                                             @Y30LB52*/
      2 HTOTAL FIXED(15),           /* TOTAL ERRORS FROM HOST(DASD)
                                                             @Y30LB52*/

      /***************************************************************/
      /*                                                             */
      /*                                                     @Y30LB52*/
      /* THIS STRUCTURE MAPS THE HEADER OF ALL BLOCKS AFTER THE      */
      /* FIRST.                                              @Y30LB52*/
      /*                                                     @Y30LB52*/
      /*                                                             */
      /***************************************************************/

      1 P0WORK1 BDY(WORD) BASED,
       2 PADFPTR1 PTR(31);
./ ADD NAME=ISDAPRMS

    /*****************************************************************/
    /*                            ISDAPRMS                           */
    /* SDA PARAMATER CONTROL BLOCK. THIS CONTROL BLOCK IS USED BY THE*/
    /* MAIN PROC FOR DISPATCHING. IF THE CONTROL FLAG FOR A          */
    /* PARTICULAR REPORT IS '00'X THE REPORT PROC IS NEVER CALLED.   */
    /* THOSE REPORTS THAT HAVE MORE THAN ONE FUNCTION MUST CHECK ITS */
    /* CONTROL FLAG FOR THE VALUE '01'X=REPORT 1 ONLY, '02'X=REPORT2 */
    /* ONLY, AND '03'X=BOTH REPORT 1 AND 2. IF AN ACCUMULATOR DECIDES*/
    /* THAT IT CANNOT PRODUCE A MEANINGFUL REPORT, IT SHOULD RESET   */
    /* ITS REPORT CONTROL FLAG TO '00'X. THIS WILL PREVENT THE       */
    /* CONTROLLER FROM EVER CALLING EITHER THE ACCUMLATOR OR THE     */
    /* OUTPUT FORMATER FOR THAT REPORT.                              */
    /*                                                               */
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDAPRMS)                              @Y30LB55*/

    DCL                             /* SDA CONTROL PARAMATERS@Y30LB55*/
      1 ISDAPRMS BASED(LPARMPTR),
       2 CINPUT CHAR(2),            /* (XY) = INPUT SOURCE   @Y30LB55*/
        3 CLOGIN CHAR(1),           /* (YN) = LOGREC        @Y30LB55*/
        3 CHISTIN CHAR(1),          /* (YN) = HISTORY       @Y30LB55*/
       2 CSTART CHAR(4),            /* (00YYDDDF) = START DATE
                                                             @Y30LB55*/
        3 CSTYEAR CHAR(2),          /* (00YY) = YEAR         @ZD00192*/
        3 CSTDAY  CHAR(2),          /* (DDDF) = DAY          @ZD00192*/
       2 CEND CHAR(4),              /* (00YYDDDF) = END DATE @Y30LB55*/
        3 CENDYEAR CHAR(2),         /* (00YY) = YEAR         @ZD00192*/
        3 CENDDAY  CHAR(2),         /* (DDDF) = DAY          @ZD00192*/
       2 CSUMMARY CHAR(1),          /* (X) = Y OR N          @Y30LB55*/
       2 CTYPE CHAR(2),             /* (XX) = SARCRDCSDA @Y30LB55*/
       2 CFSCONLY CHAR(4),          /* (FSC)=FAULT SYMPTOM CODE (HEX)
                                                             @Y30LB55*/
        3 CFSC12 CHAR(2),           /* 2 BYTE FSC FOR FMT 4 AND 5
                                                             @Y30LB55*/
        3 CFSC34 CHAR(2),           /* ='00' WHEN 2 BYTE FSC @Y30LB55*/
       2 CSSIDF CHAR(2),            /* (SSID) = SUBSYSTEM ID (HEX)
                                                             @Y30LB55*/
        3 * BIT(4),                 /* ZERO                  @Y30LB55*/
        3 CSSID BIT(12),            /* (SSID) = SUBSYSTEM ID @Y30LB55*/
       2 CRATIO CHAR(2),            /* (XX) = ERROR RATIO TO PRINT
                                                             @Y30LB55*/
       2 CSERIAL CHAR(12),          /* (XXX YYYYYYYY) CART SER
                                                             @Y30LB55*/
        3 CIBM CHAR(3),             /* ALPHA ID OF CART      @Y30LB55*/
        3 * CHAR(1),                /* BLANK                 @Y30LB55*/
        3 CSERNO CHAR(8),           /* CART SERIAL NO.       @Y30LB55*/
 /*  REPORT CONTROL FLAGS, '00'X = REPORT NOT REQUESTED      @Y30LB55*/

       2 CREPORTS,                  /* REPORT CONTROL FLAGS  @Y30LB55*/
        3 CDCS BIT(8),              /* (X) = 00 OR 01 HEX    @Y30LB55*/
        3 CPAD BIT(8),              /* (X) = 00 OR 01 HEX    @Y30LB55*/
        3 CSUM BIT(8),              /* (X) = 00,01,02, OR 03 HEX
                                  01=SUM, 02=DETAIL, 03=BOTH @Y30LB55*/

        3 CDHEDHU BIT(8),           /* (X) = 00,01,02, OR 03 HEX
                                    01=DHE, 02=DHU, 03=BOTH  @Y30LB55*/

        3 CFSC BIT(8),              /* (X) = 00 OR 01 HEX    @Y30LB55*/
        3 CEQC BIT(8),              /* (X) = 00 OR 01 HEX    @Y30LB55*/
        3 CDCKTLX BIT(8),           /* (X) = 00,01,02, OR 03 HEX
                                    01=DCK, 02=TLX, 03=BOTH  @Y30LB55*/

        3 CCSBCSF BIT(8),           /* (X) = 00,01,02, OR 03 HEX
                                    01=CSB, 02=CSF, 03=BOTH  @Y30LB55*/

        3 CDAT BIT(8),              /* (X) = 00 OR 01 HEX    @Y30LB55*/
        3 CDRC BIT(8),              /* (X) = 00 OR 01 HEX    @Y30LB55*/
        3 CAPRSUU BIT(8),           /* (X) = 00,01,02, OR 03 HEX
                                  01=APR, 02=SUU, 03=BOTH    @ZD00192*/
        3 CPWR BIT(8),              /* SPARE - RESERVED      @ZM30976*/
       2 CPERIOD FIXED(8),          /* (X) = NO. DAYS TO REPORT
                                                             @Y30LB55*/
       2 CDETAIL BIT(8),            /* (X) = SUMMARY PRINT MASK
                                                             @ZD00192*/
  /*                                   BIT 0 = FORMAT 0
                                       BIT 1 = FORMAT 1
                                       BIT 2 = FORMAT 2
                                       BIT 3 = FORMAT 3
                                       BIT 4 = FORMAT 4
                                       BIT 5 = FORMAT 5
                                       BIT 6 = TRACE IN ISDASDA0
                                       BIT 7 = NOT USED              */
       2 CGEN BIT(8),               /* (X)=00,01,02,04(NO,SUM,FSC,EQC)
                                                             @Y30LB55*/
       2 CTRACE BIT(8);             /* (X)=00 FOR TRACE OFF, XX FOR
                                       TRACE ON              @Y30LB55*/
    %SDAPARML='LENGTH(ISDAPRMS)';                          /*@Y30LB55*/

 /*  %SDAPARML='LENGTH(ISDAPRMS)'                            @Y30LB55*/
 /* DCL LPARMPTR PTR(31)  AND SET LPARMPTR=PARMPTR           @Y30LB55*/
./ ADD NAME=ISDAPSPC
         MACRO
         ISDAPSPC &OP,&LV=                                     @Y30LB55
         L     1,0(1) LOAD PTR TO CALLING SEQUENCE             @Y30LB55
         L     2,0(1) LOAD ADDRESS OF ISDACVT                  @Y30LB55
         USING ISDACVT,2 TEMP BASE REGISTER                    @Y30LB55
         LA    1,PRTDATD LOAD ADDRESS OF PRTSA001              @Y30LB55
         DROP  2 DROP BASE REGISTER                            @Y30LB55
         MEND
./ ADD NAME=ISDASOBR

    /*****************************************************************/
    /*                                                               */
    /* ISDASOBR - SHORT DCL FOR SDA INPUT RECORDS                    */
    /*                                                               */
    /*****************************************************************/

 /* %INCLUDE ISDADCLS(ISDASOBR)                              @Y30LB55*/

    DCL                             /* SHORT STRUCTURE FOR RECORDS
                                       FROM SYS1.LOGREC      @Y30LB55*/
      1 OBRMDR BASED(LOGPTR),       /* SHORT OBR-MDR HEADER  @Y30LB55*/
       2 SCW FIXED(31),             /* SEGMENT CONTROL WORD  @Y30LB55*/
        3 SLENGTH FIXED(15),        /* LENGTH OF SEGMENT     @Y30LB55*/
        3 SCODE BIT(8),             /* SEGMENT CODE          @Y30LB55*/
        3 * CHAR(1),                /*                       @Y30LB55*/
       2 CLASRC BIT(8),             /* 0                     @Y30LB55*/
       2 SYSREL BIT(8),             /* 1                     @Y30LB55*/
       2 SWITCHES CHAR(4),          /* 2                     @Y30LB55*/
        3 SWITCH0 BIT(8),           /*                       @Y30LB55*/
        3 SWITCH1 BIT(8),           /* BIT 2 = 1 = OBR SHORT @Y30LB55*/
        3 SWITCH2 BIT(8),           /* DEV TYPE FOR MDR      @Y30LB55*/
        3 SWITCH3 BIT(8),           /*                       @Y30LB55*/
       2 RCDCNT BIT(8),             /* 6                     @Y30LB55*/
       2 RECENTRY BIT(8),           /* 7 REC TYPE ID FOR MDR @Y30LB55
                                       SHORT(SWAP)                   */
       2 DATETIME CHAR(8),          /* 8 DATETIME USED FOR HI LOW
                                       COMPARES              @Y30LB55*/
        3 DATE CHAR(4),             /* 8 PACKED YEAR AND DAY @Y30LB55*/
         4 YEAR CHAR(2),            /* YEAR IN PACKED DECIMAL@Y30LB55*/
         4 DAY CHAR(2),             /* DAY IN PACKED DECIMAL @Y30LB55*/
        3 TIME CHAR(4),             /* 12 SEE BITS 1 AND 4 OF SWITCH0
                                                             @Y30LB55*/
         4 HOUR CHAR(1),            /* HOUR IN PACKED DECIMAL@Y30LB55*/
         4 MINUTE CHAR(1),          /* MINUTE IN PACKED DECIMAL
                                                             @Y30LB55*/
         4 SECOND CHAR(1),          /* SECOND IN PACKED DECIMAL
                                                             @Y30LB55*/
         4 TENSHUND CHAR(1),        /* TENTHS, HUNDRETHS PACKED
                                                             @Y30LB55*/
       2 VERNO BIT(8),              /* 16                    @Y30LB55*/
       2 CPUSERID CHAR(5),          /* 17-21 CPU USER+ID     @Y30LB55*/
        3 CPUSER CHAR(3),           /* 17                    @Y30LB55*/
        3 CPUID CHAR(2);            /* 20                    @Y30LB55*/
    %OBRMDRL='LENGTH(OBRMDR)';                             /*@Y30LB55*/

 /*  %OBRMDRL='LENGTH(OBRMDR)'                               @Y30LB55*/
 /* DCL LOGPTR PTR(31) AND SET LOGPTR=DATAPTR                @Y30LB55*/
./ ADD NAME=ISDASUM5

    /*****************************************************************/
    /*                                                               */
    /* SUMWORK - LOCAL DYNAMIC WORKAREA                              */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 SUMWORK BASED(SUMWKPTR),    /* ISDASUM0 WORK AREA    @Y30LB55*/
       2 SUMWORK1,                  /* POINTERS AND COUNTERS @Y30LB55*/
        3 ACCM0PTR PTR(31),         /* PTR TO ACCUMULATOR 0  @Y30LB55*/
        3 ACCUMPTR PTR(31),         /* PTR TO START OF SUMACCUM
                                                             @Y30LB55*/
        3 ACCM0END PTR(31),         /* PTR TO END OF SUMACCUM@Y30LB55*/
        3 LOGPTR PTR(31),           /* PTR TO OBRMDR         @Y30LB55*/
        3 SENSEPTR PTR(31),         /* PTR TO MSCSENSE       @Y30LB55*/
        3 RCODEPTR PTR(31),         /* PTR TO RCODES         @ZM31074*/
        3 RCODECNT FIXED(31),       /* COUNT OF REASON CODES @ZM31074*/
        3 SUM2PTR PTR(31),          /* ADDR OF ISDASUM2 + 4  @Y30LB55*/
        3 SEVSTART PTR(32),         /* START ADDR SEVRLIST   @ZA20267*/
        3 SEVRLEN FIXED(32),        /* LENGTH OF SEVRLIST    @ZA20267*/
        3 SEVRLCNT FIXED(32),       /* NO. SEVRLIST ENTRIES  @ZA20267*/
        3 GTOTALS,                  /* GRAND TOTALS FOR FORMATS
                                                             @Y30LB55*/
          5 CNTF0 FIXED(31),        /* COUNT OF FORMAT 0     @Y30LB55*/
          5 CNTF1 FIXED(31),        /* COUNT OF FORMAT 1     @Y30LB55*/
          5 CNTF2 FIXED(31),        /* COUNT OF FORMAT 2     @Y30LB55*/
          5 CNTF3 FIXED(31),        /* COUNT OF FORMAT 3     @Y30LB55*/
          5 CNTF4 FIXED(31),        /* COUNT OF FORMAT 4     @Y30LB55*/
          5 CNTF5 FIXED(31),        /* COUNT OF FORMAT 5     @Y30LB55*/
          5 CNTFDASD FIXED(31),     /* COUNT OF HOST DASD    @Y30LB55*/
          5 CNTSENSE FIXED(31),     /* COUNT OF SENSE RECORDS@Y30LB55*/
          5 CNTLOG FIXED(31),       /* COUNT OF BUFFERED LOG RECORDS
                                                             @Y30LB55*/
        3 TOTPERMS FIXED(31),       /* NO. OF PERM ERRORS    @Y30LB55*/
        3 TOTTEMPS FIXED(31),       /* NO. OF TEMP ERRORS    @Y30LB55*/
        3 ACCUMCNT FIXED(16),       /* NO. OF ACCUMULATORS   @Y30LB55*/
        3 SUMACCL FIXED(16),        /* LENGTH OF SUMACCUM    @Y30LB55*/
        3 NCOUNTER FIXED(16),       /* NUMBER OF COUNTERS IN SUMACCUM
                                                             @Y30LB55*/
        3 NCPUUSED FIXED(16),       /* NO. CPUIDS FOUND      @Y30LB55*/
        3 NCPUCNTS FIXED(16),       /* MAX NO. CPUIDS ALLOWED@Y30LB55*/
       2 SUMWORK2,                  /* CPU IDS               @Y30LB55*/
        3 CPUFOUND(16) CHAR(5),     /* 16 CPUIDS TOTAL FOUND @Y30LB55*/
       2 SUMTEMPS,                  /* TEMP AREA             @Y30LB55*/
        3 TEMP9 CHAR(9),            /* USED FOR CVD          @Y30LB55*/
         4 TEMP8 CHAR(8),           /* USED FOR CVD          @Y30LB55*/
          5 TEMP7 CHAR(7),          /* USED FOR CVD          @Y30LB55*/
           6 TEMP6 CHAR(6),         /* USED FOR CVD          @Y30LB55*/
            7 TEMP5 CHAR(5),        /* USED FOR CVD          @Y30LB55*/
             8 TEMP4 CHAR(4),       /* USED FOR CVD          @Y30LB55*/
              9 TEMP3 CHAR(3),      /* USED FOR CVD          @Y30LB55*/
               10 TEMP2 CHAR(2),    /* USED FOR CVD          @Y30LB55*/
                11 TEMP1 CHAR(1),   /* TEMP CHAR             @Y30LB55*/
        3 TEMP20 CHAR(20),          /* SAVEAREA FOR LINE 2 OF DETAIL
                                                             @Y30LB55*/
         4 TEMP16 CHAR(6),          /* CPUSERM01             @Y30LB55*/
         4 TEMP710 CHAR(4),         /* CPUIDM01              @Y30LB55*/
         4 TEMP1113 CHAR(3),        /* SSIDM01               @Y30LB55*/
         4 TEMP1417 CHAR(4),        /* FSCM01                @Y30LB55*/
         4 TEMP1820 CHAR(3),        /* DEVCUA01              @Y30LB55*/
        3 TEMP3032 CHAR(3),         /* END OF 32 BYTE AREA   @Y30LB55*/
       2 SUMWORK3,                  /* MASKS AND FLAGS       @Y30LB55*/
        3 SUMFLAGS BIT(8),          /* COMUNICATION BYTE     @Y30LB55*/
 /*  SUMFLAGS - USED FOR COMMUNICATION BETWEEN ISDASUM0 AND ISDASUM1
     BIT 0 = 1 FOR SPECIAL CALL TO SUM0 TO PRINT SEVERITY REPORT
     BIT 1 = SPARE
     BIT 2 = SPARE
     BIT 3 = SPARE
     BIT 4 = SPARE
     BIT 5 = SPARE
     BIT 6 = SPARE
     BIT 7 = CPUFOUND TABLE OVERFLOWED                       @ZA20267*/

        3 FORMATNC CHAR(1),         /* EBCDIC FORMAT NUMBER  @Y30LB55*/
        3 MAINMASK,                 /* 3 BYTE MASK           @Y30LB55*/
          5 FORMATCK BIT(8),        /* FORMATNO BITS 0-5     @Y30LB55*/
          5 FLAGMASK BIT(8),        /* FLAG MASK             @Y30LB55*/
          5 SUBFMASK BIT(8),        /* SUBFMT MSG CODE MASK  @Y30LB55*/
        3 FMTIDSV CHAR(7),          /* EBCDIC RECORD ID      @Y30LB55*/
        3 SUBFIDSV CHAR(1),         /* EBCDIC SUBFORMAT NO.  @Y30LB55*/
        3 MSGCODSV CHAR(1),         /* EBCDIC MESSAGE CODE   @Y30LB55*/
        3 TSEVTEMP,                 /* SEVERITY WORK AREA    @ZA20267*/
         4 TSEVCDID,                /* SEV CODE + SSID       @ZA20267*/
          5 TSEVCODE CHAR(2),       /* SEVERITY CODE         @ZA20267*/
          5 TSSID CHAR(2),          /* SSID                  @ZA20267*/
         4 TPTFLAG BIT(8),          /* PERM-TEMP FLAG        @ZA20267*/
         4 TSEVFMTS,                /* FORMAT + SUBFMT       @ZA20267*/
          5 TSEVFMT BIT(8),         /* FORMAT                @ZA20267*/
          5 TSEVSUBF BIT(8),        /* SUBFORMAT + MSG CODE  @ZA20267*/
         4 TSEVMASK BIT(8),         /* RECORD TYPE MASK      @ZA20267*/
         4 TSEVECOD BIT(8);         /* BYTE 12 OR BYTE 27    @ZA20267*/
    %SUMWORKL='LENGTH(SUMWORK)';    /* LENGTH OF SUMWORK     @Y30LB55*/
 /* %SUMWORKL='LENGTH(SUMWORK)'  LENGTH OF SUMWORK           @Y30LB55*/

    DCL                             /* OVERLAYS FOR UNPACK   @Y30LB55*/
      TEMP68 CHAR(3) DEF(TEMP8) POS(6),/* BYTES 6-8          @Y30LB55*/
      TEMP78 CHAR(2) DEF(TEMP8) POS(7);/* BYTES 7-8          @Y30LB55*/

    /*****************************************************************/
    /*                                                               */
    /* ACCUMULATOR FOR ISDASUM0                                      */
    /*                                                               */
    /*****************************************************************/

    DCL
      SUMACCUM BASED(ACCUMPTR);     /* FORMAT COUNTERS       @Y30LB55*/

    /*****************************************************************/
    /*                                                               */
    /* MODEL FOR DEFAULT TABLE ISDASUM2 (OFFSET 4)                   */
    /*                                                               */
    /*****************************************************************/

    DCL                             /* MODEL FOR DEVIDTB     @Y30LB55*/
      1 MDEVIDTB BASED(DEVIDPTR),   /* 48 BYTES EACH ENTRY   @Y30LB55*/
        3 MDFMTXXX,                 /* FORMAT X              @Y30LB55*/
          5 MDMASK,                 /* 3 BYTE MASK           @Y30LB55*/
            7 MDFXXX BIT(8),        /* FORMAT MASK           @Y30LB55*/
 /* MDFLAG - 8 BIT FLAG FOR COMPARE WITH FLAGMASK            @Y30LB55
     BIT 0 = DRD UNLOAD FAILURE = SA FMT 9C,9D, OR 9E
     BIT 1 = SPARE
     BIT 2 = REAL 3330
     BIT 3 = VIRTUAL 3330
     BIT 4 = FORMAT 0 UNIT UNUSABLE OR MEDIA FAILURE
     BIT 5 = CS RECONFIGURED
     BIT 6 = CS FORCED LOGGING MODE
     BIT 7 = BUFFERED LOG DATA                               @Y30LB55*/

            7 MDFLAG BIT(8),        /* FLAG MASK             @Y30LB55*/
            7 MDSMXXX BIT(8),       /* SUBFMT MSG CODE MASK  @Y30LB55*/
          5 MDIDS,                  /* FORMAT IDS            @Y30LB55*/
            7 MDCFXXX CHAR(4),      /* FORMAT ID             @Y30LB55*/
            7 MDCSMXXX CHAR(2),     /* SUBFMT MSG CODE ID    @Y30LB55*/
             8 MDCSXXX CHAR(1),     /* EBCDIC SA FORMAT      @Y30LB55*/
             8 MDCMXXX CHAR(1),     /* EBCDIC MSG CODE       @Y30LB55*/
            7 MDIDXXX CHAR(5),      /* DEVICE ID             @Y30LB55*/
          5 MDMSGXXX CHAR(34);      /* FORMAT MESSAGE        @Y30LB55*/
    %DFMTL='LENGTH(MDEVIDTB)';      /* LENGTH OF EACH ENTRY  @Y30LB55*/
 /* DFMTL='LENGTH(MDEVIDTB)' LENGTH OF EACH ENTRY            @Y30LB55*/

    /*****************************************************************/
    /*                                                               */
    /* MODEL FOR COUNTERS - SUMACCUM                                 */
    /*                                                               */
    /*****************************************************************/

    DCL                             /* MODEL FOR SUMACCUM    @Y30LB55*/
      1 MCOUNTER BASED(COUNTPTR),   /* 28 BYTES EACH ENTRY   @Y30LB55*/
        3 MCFMTXXX,                 /* COUNTER FOR FORMAT X  @Y30LB55*/
          5 MCADDXXX PTR(31),       /* ADDR OF DEFAULT TABLE FOR FMT
                                       X                     @Y30LB55*/
          5 MCOUNTS,                /* COUNTS FOR FORMAT X   @Y30LB55*/
            7 MCPXXX FIXED(16),     /* NO. PERM ERROR OR OBR @Y30LB55*/
            7 MCTXXX FIXED(16),     /* NO. TEMP ERROR OR MDR @Y30LB55*/
          5 MCMASK,                 /* 3 BYTE MASK           @Y30LB55*/
            7 MCFXXX BIT(8),        /* FORMAT MASK           @Y30LB55*/
            7 MCFLAG BIT(8),        /* FLAG MASK             @Y30LB55*/
            7 MCSMXXX BIT(8),       /* SUBFMT MSG CODE MASK  @Y30LB55*/
          5 MCSPARE BIT(8),         /* SPARE BYTE            @Y30LB55*/
          5 MLDTIME CHAR(8),        /* LOW DATE + TIME       @Y30LB55*/
            7 MLDATE CHAR(4),       /* LOW DATE              @Y30LB55*/
            7 MLTIME CHAR(4),       /* LOW TIME              @Y30LB55*/
          5 MHDTIME CHAR(8),        /* HIGH DATE + TIME      @Y30LB55*/
            7 MHDATE CHAR(4),       /* HIGH DATE             @Y30LB55*/
            7 MHTIME CHAR(4);       /* HISG TIME             @Y30LB55*/
    %CFMTL='LENGTH(MCOUNTER)';      /* LENGTH OF EACH ENTRY  @Y30LB55*/
 /* CFMTL='LENGTH(MCOUNTER)'  LENGTH OF EACH ENTRY           @Y30LB55*/

    /*****************************************************************/
    /*                                                               */
    /* DEFAULT TABLE - THE FIRST 4 BYTES IS A COUNT OF THE NUMBER OF */
    /* ENTRIES. THE ACTUAL TABLE STARTS AT ISDASUM2 + 4              */
    /*                                                               */
    /*****************************************************************/

    DCL
      ISDASUM2 FIXED(31) BOUNDARY(WORD) NONLOCAL EXTERNAL; /*@Y30LB55*/
    DCL                             /* REASON CODE DCLS      @ZM31074*/
      RCODES (256)FIXED(16) BASED(RCODEPTR),/* 16X16 TABLE   @ZM31074*/
      RCODELEN FIXED(31) CONSTANT(1024);/* LENGTH OF RCODES  @ZM31074*/

    /*****************************************************************/
    /*                                                               */
    /* SEVERITY CODE TABLE - 16 MOST SEVERE ERRORS                   */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 SEVRLIST BASED(SEVRPTR),    /* SEVERITY DATA BUFFER  @ZA20267*/
       2 SEVRCNT FIXED(16),         /* NUMBER OF OCCURRENCES @ZA20267*/
       2 SEVHMOVE,                  /* HEADER                @ZA20267*/
        3 SEVCDSID,                 /* SEV CODE + SSID       @ZA20267*/
         4 SEVRCODE FIXED(16),      /* SEVERITY CODE         @ZA20267*/
         4 SEVSSID CHAR(2),         /* SSID                  @ZA20267*/
        3 PTFLAG BIT(8),            /* PERM-TEMP FLAG        @ZA20267*/
        3 SEVFMT BIT(8),            /* FORMAT                @ZA20267*/
        3 SEVSUBF BIT(8),           /* SUBFORMAT + MSG CODE  @ZA20267*/
        3 SEVFMASK BIT(8),          /* RECORD TYPE MASK      @ZA20267*/
        3 SEVECODE BIT(8),          /* BYTE 12 OR BYTE 27    @ZA20267*/
       2 SEVSPARE BIT(8),           /* SPARE                 @ZA20267*/
       2 SEVSDAWK CHAR(20),         /* SAVE SDAWORK AREA     @ZA20267*/
       2 SEVSDPTR PTR(32),          /* OFFSET TO SENSE DATA  @ZA20267*/
       2 SEVDEVPT PTR(32),          /* OFFSET TO DEVICE DATE @ZA20267*/
       2 SEVDATA CHAR(128),         /* SAVE AREA FOR DATA    @ZA20267*/
        3 * CHAR(12),               /*                       @ZA20267*/
        3 SEVDATET CHAR(8);         /* DATE - TIME IN DATA   @ZA20267*/
./ ADD NAME=ISDAWORK

    /*****************************************************************/
    /*                                                               */
    /* ISDAWORK - ISDASDA0 MAIN WORK AREA                            */
    /*                                                               */
    /*****************************************************************/

    DCL
      1 ISDAWORK BASED(SDA00PTR),   /* ISDASDA0 WORK AREA    @Y30LB55*/
       2 INFLAGS FIXED(31),         /* INPUT IO FLAGS        @Y30LB55*/
        3 IRECTYPE CHAR(1),         /* O=OBR, M=MDR          @Y30LB55*/
        3 INSOURCE CHAR(1),         /* H=HISTORY, L=LOGREC   @Y30LB55*/
        3 INDEVTYP CHAR(1),         /* S=SUBSYSTEM,V=VIRTUAL @Y30LB55
                                       DASD,R=REAL DASD              */
 /* SDAFLAG0 - 8 BIT FLAG BYTE FOR COMMUNICATION BETWEEN PROCS
                                                             @Y30LB55
     BIT 0 - SPARE                                           @Y30LB55
     BIT 1 - SPARE                                           @Y30LB55
     BIT 2 - SPARE                                           @Y30LB55
     BIT 3 - SPARE                                           @Y30LB55
     BIT 4 - SPARE                                           @Y30LB55
     BIT 5 - SPARE                                           @Y30LB55
     BIT 6 - 1 IF RUNNING UNDER VM370/CMS                    @Y30LB55
     BIT 7 = 1 IF FAULT SYMPTOM CODE GENERATED BY ISDAGEN0   @Y30LB55*/

        3 SDAFLAG0 BIT(8),          /* SDA COMMUNICATION FLAG BYTE
                                                             @Y30LB55*/
       2 DLENGTH FIXED(15),         /* SENSE DATA LENGTH     @Y30LB55*/
       2 INRECCUA CHAR(2),          /* REAL CUA FOR INPUT RECORD
                                                             @Y30LB55*/
         3 CUABYTE0 BIT(8),         /* CHANNEL               @Y30LB55*/
         3 CUABYTE1 BIT(8),         /* SA-CTL-SPINDLE        @Y30LB55*/
       2 NINREC FIXED(31),          /* INPUT RECORD COUNT    @Y30LB55*/
       2 NOUTREC FIXED(31),         /* OUTPUT RECORD COUNT   @Y30LB55*/
       2 DEVPTR PTR(31);            /* PTR TO UCBTYPE FIELD  @Y30LB55*/
./ ADD NAME=ISGDPL
*        %GOTO PLSDPL;                                               /*
         MACRO
         ISGDPL
**/
*%PLSDPL: ;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGDPL
*
*01*  MACDATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = DEQ PURGE LIST
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = DEFINES THE DATA REQUIRED TO COMPLETE A SYSID,
*                ASID, OR TCB DEQ PURGE REQUEST. THE DEQ PURGE
*                LIST (DPL) IS USED AS INPUT TO ISGGDEQP AND
*                ISGGQWB5 (ENTRY  POINT IN ISGGQWB0).
*
*01*  METHOD-OF-ACCESS = BAL - DSECT IS PRODUCED REQUIRING A
*                              USING ON THE DPL.
*                        PLS - DPL DECLARED AS A BASED STRUCTURE.
*                              DPLPTR MUST BE DECLARED.
*
*01*  CREATED-BY = CALLERS OF ISGGDEQP AND ISGGQWB5.
*
*02*    SUBPOOL = ANY IN THE GRS ADDRESS  SPACE OR COMMON AREA.
*
*02*    KEY     = 0
*
*02*    SIZE    = 20 BYTES
*
*01*  DELETED-BY = CALLERS OF ISGGDEQP AND ISGGQWB5.
*
*01*  POINTED-TO-BY = POINTER IS MAINTAINED BY USER OF THE MACRO.
*
*01*  SERIALIZATION = ANY - PROVIDED BY THE USER OF THE MACRO.
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G387PYC*/
*        %GOTO PLSDPL1;                                              /*
DPL      DSECT
         DS    0F                 DEQ PURGE LIST
DPLTARGT DS    F                  DEQ PURGE TARGET
         ORG   DPLTARGT
DPLSYSID DS    H                  SYSTEM ID TO BE PURGED - VALID ONLY
*                                 FOR SYSID, ASID OR TCB PURGE REQUESTS
DPLASID  DS    H                  ASID TO BE PURGED - VALID ONLY FOR
*                                 ASID OR TCB PURGE REQUESTS.
DPLTCB   DS    A                  TCB TO BE PURGED - VALID ONLY FOR
*                                 TCB PURGE REQUESTS.
DPLRB    DS    A                  DEFINES THE RB TO BE POSTED WHEN
*                                 DPLASYNC=0.
DPLQELQP DS    A                  POINTER TO FIRST QEL ON QEL QUEUE
*                                 TO BE PURGED.
DPLFLAGS DS    2C                 FLAG BYTES
         ORG   DPLFLAGS
DPLPFLGS DS    B                  PROCESS FLAGS FOR ISGGQWB5 ONLY.
DPLASYNC EQU   X'80'              WHEN 1, REPRESENTS AN ASYNCHRONOUS
*                                 REQUEST.
*                                 WHEN 0, REPRESENTS A SYNCHRONOUS
*                                 REQUEST.
DPLLOCKH EQU   X'40'              WHEN 1, CMS ENQ/DEQ CLASS LOCK AND
*                                 GRS LOCAL LOCK HELD ON ENTRY.
*                                 WHEN 0, LOCKS NOT HELD ON ENTRY.
DPLLOCAL EQU   X'20'              WHEN 1, LOCAL RESOURCE PURGE.
*                                 WHEN 0, GLOBAL RESOURCE PURGE.
DPLSVQWB EQU   X'10'              WHEN 1, THE PURGE QWB IS TO BE
*                                 RETURNED IN REGISTER 1.
*                                 WHEN 0, THE CALLED ROUTINE MUST
*                                 FREE THE QWB.
DPLPRSV4 EQU   X'08'              RESERVED
DPLPRSV3 EQU   X'04'              RESERVED
DPLPRSV2 EQU   X'02'              RESERVED
DPLPRSV1 EQU   X'01'              RESERVED
DPLRFLGS DS    B                  REQUEST FLAGS FOR ISGGQWB5 AND
*                                 ISGGDEQP.
DPLRSYID EQU   X'80'              SYSID DEQ PURGE REQUEST.
DPLRASID EQU   X'40'              ASID DEQ PURGE REQUEST.
DPLRTCB  EQU   X'20'              TCB DEQ PURGE REQUEST.
DPLRABMC EQU   X'10'              THE TASK OR ADDRESS SPACE HAS
*                                 TERMINATED IN MUST COMPLETE. NOTE
*                                 THAT WHEN THE DPL IS INPUT TO
*                                 ISGGDEQP, PURGE MESSAGES ARE
*                                 RETURNED IN REGISTER 0. WHEN THE
*                                 DPL IS INPUT TO ISGGQWB5, PURGE
*                                 MESSAGES ARE RETURNED IN
*                                 QWBHMRBQ.
DPLRRSV4 EQU   X'08'              RESERVED
DPLRRSV3 EQU   X'04'              RESERVED
DPLRRSV2 EQU   X'02'              RESERVED
DPLRRSV1 EQU   X'01'              RESERVED
DPLRSV1  DS    CL2                RESERVED
DPLEND   EQU   *                  END OF DPL
         MEND
*                                                                    */
*%PLSDPL1: ;
* DCL 1 DPL BASED(DPLPTR) BDY(WORD),   /* DEQ PURGE LIST             */
*       3 DPLTARGT FIXED(32),          /* DEQ PURGE TARGET           */
*         5 DPLSYSID FIXED(16),        /* SYSTEM ID TO BE PURGED -
*                                         VALID ONLY FOR SYSID, ASID
*                                         OR TCB PURGE REQUESTS      */
*         5 DPLASID  FIXED(16),        /* ASID TO BE PURGED - VALID
*                                         ONLY FOR ASID OR TCB PURGE
*                                         REQUESTS                   */
*       3 DPLTCB   PTR(31),            /* TCB TO BE PURGED - VALID
*                                         ONLY FOR TCB PURGE REQUESTS*/
*       3 DPLRB    PTR(31),            /* DEFINES THE RB TO BE POSTED
*                                         WHEN DPLASYNC=0            */
*       3 DPLQELQP PTR(31),            /* POINTER TO FIRST QEL ON QEL
*                                         QUEUE TO BE PURGED.       */
*       3 DPLFLAGS CHAR(2),            /* FLAG BYTES                */
*         5 DPLPFLGS BIT(8),           /* PROCESS FLAGS FOR ISGGQWB5
*                                         ONLY.                     */
*           7 DPLASYNC BIT(1),         /* WHEN 1, REPRESENTS AN
*                                         ASYNCHRONOUS REQUEST.
*                                         WHEN 0, REPRESENTS A
*                                         SYNCHRONOUS REQUEST        */
*           7 DPLLOCKH BIT(1),         /* WHEN 1, CMS ENQ/DEQ CLASS
*                                         LOCK AND GRS LOCAL LOCK HELD
*                                         ON ENTRY.
*                                         WHEN 0, LOCKS NOT HELD ON
*                                         ENTRY.                     */
*           7 DPLLOCAL BIT(1),         /* WHEN 1, LOCAL RESOURCE PURGE.
*                                         WHEN 0, GLOBAL RESOURCE
*                                         PURGE.                     */
*           7 DPLSVQWB BIT(1),         /* WHEN 1, THE PURGE QWB IS TO
*                                         BE RETURNED IN REGISTER 1.
*                                         WHEN 0, THE CALLED ROUTINE
*                                         MUST FREE THE QWB.         */
*           7 DPLPRSV4 BIT(1),         /* RESERVED                   */
*           7 DPLPRSV3 BIT(1),         /* RESERVED                   */
*           7 DPLPRSV2 BIT(1),         /* RESERVED                   */
*           7 DPLPRSV1 BIT(1),         /* RESERVED                   */
*         5 DPLRFLGS BIT(8),           /* REQUEST FLAGS FOR ISGGQWB5
*                                         AND ISGGDEQP.              */
*           7 DPLRSYID BIT(1),         /* SYSID DEQ PURGE REQUEST    */
*           7 DPLRASID BIT(1),         /* ASID DEQ PURGE REQUEST     */
*           7 DPLRTCB  BIT(1),         /* TCB DEQ PURGE REQUEST      */
*           7 DPLRABMC BIT(1),         /* THE TASK OR ADDRESS SPACE
*                                         HAS TERMINATED IN MUST
*                                         COMPLETE. NOTE THAT WHEN THE
*                                         DPL IS INPUT TO ISGGDEQP,
*                                         PURGE MESSAGES ARE RETURNED
*                                         IN REGISTER 0. WHEN THE DPL
*                                         IS INPUT TO ISGGQWB5, PURGE
*                                         MESSAGES ARE RETURNED IN
*                                         QWBHMRBQ.                  */
*           7 DPLRRSV4 BIT(1),         /* RESERVED                   */
*           7 DPLRRSV3 BIT(1),         /* RESERVED                   */
*           7 DPLRRSV2 BIT(1),         /* RESERVED                   */
*           7 DPLRRSV1 BIT(1),         /* RESERVED                   */
*       3 DPLRSV1 CHAR(2),             /* RESERVED                   */
*       3 DPLEND  CHAR(0);             /* END OF DPL                 */
./ ADD NAME=ISGGVT
*        %GOTO GVTPLS01;                                             /*
         MACRO
         ISGGVT  &DSECT=YES
         AIF   ('&DSECT' EQ 'NO').GVT01
**/
*%GVTPLS01:;
*/* START OF SPECIFICATIONS ******
*
*01* MACRO-NAME = GVT
*
*01* MACRO-DATE = 05/05/81
*
*01* DESCRIPTIVE-NAME = GLOBAL RESOURCE SERIALIZATION (GRS)
*                       VECTOR TABLE
*
*01* COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01* STATUS = OS/VS2 JBB1326
*
*01*   FUNCTION = THE GVT PROVIDES A MEANS OF COMMUNICATION
*                 WITHIN GRS. THE GVT CONTAINS ALL GLOBAL
*                 QUEUES, POINTERS, AND ENTRY POINT ADDRESSES.
*                 THE GVT IS DIVIDED INTO SECTIONS RELATING
*                 TO THE DIFFERENT FUNCTIONAL AREAS OF GRS:
*                 GRS INITIALIZATION, ENQ/DEQ MAINLINE,
*                 GRS RING PROCESSOR, GRS CTC DRIVER,
*                 AND GRS COMMAND PROCESSOR.
*                 THE FUNCTIONAL SECTIONS ARE FOLLOWED BY
*                 ASSIGNED PC NUMBERS AND ENTRY POINT ADDRESSES
*                 USED BY GRS MODULES.
*
*01*   METHOD-OF-ACCESS =  BAL - DSECT=NO SHOULD BE SPECIFIED
*                                ON THE MACRO CALL TO AVOID
*                                CREATING A DSECT. A USING ON
*                                GVT WILL ESTABLISH ADDRESS-
*                                ABILITY FOR ALL SYMBOLS.
*                          PLS - DCL GVTPTR PTR(31)
*                                %INCLUDE SYSLIB(ISGGVT)
*
*01*   CREATED-BY = THE GVT IS CONTAINED IN THE NUCLEUS
*                   RESIDENT MODULE ISGGRS00. THE GVT IS
*                   AUTOMATICALLY CREATED WHEN THE NUCLEUS
*                   IS LOADED BY IEAIPL.
*
*02*     SUBPOOL =  NUCLEUS RESIDENT
*
*02*     KEY     =  0
*
*02*     SIZE    =  512 BYTES
*
*01*   DELETED-BY =  THE GVT IS NEVER DELETED.
*
*01*   POINTED-TO-BY =  THE GVT IS POINTED TO BY THE CVT
*                       FIELD CVTGVT.
*
*01*   SERIALIZATION =  NONE
*
*01*   CHANGE-ACTIVITY = SUPPORTS THE FOLLOWING PTMS:
*                          PBB0431 - ADD FLAG GVTPRGOK         @ZMB0431
*                          PBB0589 - DELETE FIELD GVTGDQ01,    @ZMB0589
*                                    ADD FIELD GVTGWT02, AND   @ZMB0589
*                                    UPDATE FIELD GVTGWT01     @ZMB0589
*                                    WITH VCON FOR ISGGWAIT    @ZMB0589
*
*      $L1=GRSRAS  ,JBB1326,810119,PDWR:   AUTO RESTART            @L1A
*      $L2=GRSRAS  ,JBB1326,810128,PDWR:   CTC ENABLE              @L2A
*
*
* END OF SPECIFICATIONS ******/
*/*A000000-999999                                            @G382PWR*/
*        %GOTO GVTPLS02;                                             /*
GVT      DSECT                     GRS VECTOR TABLE
         AGO   .GVT02
.GVT01   ANOP
GVT      DS    0D                  GRS VECTOR TABLE
.GVT02   ANOP
         IEZBITS
GVTID    DC    CL4'GVT '           CONTROL BLOCK ACRONYM (GVT)
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT IS USED BY ALL AREAS          *
*      OF GRS.                                                        *
*                                                                     *
***********************************************************************
GVTGSECT DS    0F                  GLOBAL SECTION
GVTGSFLG DC    XL1'00'             GRS GENERAL STATUS FLAGS
GVTGRSAS EQU   BIT0                GRS ADDRESS SPACE FLAG -
*                                  0 = GRS ADDRESS SPACE NOT
*                                      INITIALIZED (PC/PT SHOULD NOT
*                                      BE ISSUED),
*                                  1 = GRS ADDRESS SPACE HAS BEEN
*                                      INITIALIZED (PC/PT CAN BE
*                                      ISSUED)
GVTGRSNA EQU   BIT1                GLOBAL RESOURCE SERIALIZATION NOT
*                                  ACTIVE FLAG - WHEN 1, GLOBAL
*                                  RESOURCE SERIALIZATION IS NOT ACTIVE
GVTGRSPC EQU   BIT2                GRS OPTION PROCESSING COMPLETE FLAG-
*                                  WHEN 1, ISGNGRSP HAS COMPLETED
*                                  PROCESSING OF THE GRS OPTION
GVTPRGOK EQU   BIT3                PURGE PROCESSING OKAY FLAG -
*                                  WHEN 1, PURGING OF LOCAL/GLOBAL
*                                  RESOURCES PERFORMED BY THE GRS
*                                  TERMINATION RESOURCE MANAGER
*                                  IS ALLOWED                  @ZMB0431
GVTNCMDR EQU   BIT4                NO COMMAND ROUTER FLAG -
*                                  WHEN 1, THE GRS COMMAND ROUTER
*                                  (ISGCMDR) IS NOT ACTIVE
GVTQSFLG DC    XL1'00'             GRS QUEUE STATUS FLAGS
GVTGQDMG EQU   BIT0                GLOBAL QUEUE DAMAGE FLAG -
*                                  WHEN 1, THE GLOBAL RESOURCE QUEUES
*                                  HAVE BEEN DAMAGED
GVTLQDMG EQU   BIT1                LOCAL QUEUE DAMAGE FLAG -
*                                  WHEN 1, THE LOCAL RESOURCE QUEUES
*                                  HAVE BEEN DAMAGED
GVTQMRGA EQU   BIT2                QUEUE MERGE ACTIVE FLAG -
*                                  WHEN 1, ISGCQMRG IS IN THE PROCESS
*                                  OF UPDATING THE GLOBAL QUEUES
GVTGRSOP DC    XL1'00'             GRS OPTION FLAGS
GVTSTART EQU   BIT0                START FLAG -
*                                  WHEN 1, GRS OPTION IS START
GVTJOIN  EQU   BIT1                JOIN FLAG -
*                                  WHEN 1, GRS OPTION IS JOIN
GVTNONE  EQU   BIT2                NONE FLAG -
*                                  WHEN 1, GRS OPTION IS NONE
GVTVFLAG DC    XL1'00'             GRS VALIDATION FLAGS            @L1M
GVTRNLVC EQU   BIT0                RNL VALIDATION COMPLETE FLAG -  @L1M
*                                  WHEN 1, VALIDATION COMPLETE FOR ALL
*                                  RESOURCE NAME LISTS
GVTVERNL EQU   BIT1                INVALID SYSTEMS EXCLUSION RNL   @L1M
*                                  FLAG - WHEN 1, ERROR EXISTS IN THE
*                                  SYSTEMS EXCLUSION RESOURCE NAME LIST
GVTVIRNL EQU   BIT2                INVALID SYSTEMS INCLUSION RNL   @L1M
*                                  FLAG - WHEN 1, ERROR EXISTS IN THE
*                                  SYSTEMS INCLUSION RESOURCE NAME LIST
GVTVCRNL EQU   BIT3                INVALID RESERVE CONVERSION RNL  @L1M
*                                  FLAG - WHEN 1, ERROR EXISTS IN THE
*                                  RESERVE CONVERSION RESOURCE NAME
*                                  LIST
GVTGRSRP DC    XL1'00'             GRS RING PROCESSING FLAGS       @L1M
GVTNCOMM EQU   BIT0                NO COMMUNICATION FLAG -         @L1M
*                                  WHEN 1, CTC DRIVER AND RING
*                                  PROCESSING ARE INOPERATIVE
GVTMAINR EQU   BIT1                MAINRING FLAG -                 @L1M
*                                  WHEN 1, THIS SYSTEM IS A MEMBER OF
*                                  THE MAINRING
GVTINACT EQU   BIT2                INACTIVE SYSTEM FLAG -          @L1M
*                                  WHEN 1, RING PROCESSING DISCOVERED
*                                  A MAINRING FAILURE BUT THIS SYSTEM
*                                  HAS NOT YET RESET ITS MAINRING
*                                  RESOURCES
GVTOBSQD EQU   BIT3                OBSOLETE QUEUE DATA FLAG -      @L1M
*                                  WHEN 1, THIS SYSTEM HAS INCOMPLETE
*                                  INFORMATION ABOUT GLOBAL RESOURCES
*                                  HELD BY OTHER SYSTEMS
GVTAURST EQU   BIT4                AUTO RESTART FLAG -             @L1C
*                                  WHEN 1, THIS SYSTEM HAS THE ABILITY
*                                  TO AUTOMATICALLY REBUILD A
*                                  DISRUPTED GRS RING
GVTJSRBS EQU   BIT5                CTC DRIVER SRB SCHEDULED FLAG - @L1M
*                                  WHEN 1, THE UNUSUAL EVENT SRB OF
*                                  CTC DRIVER HAS BEEN SCHEDULED
GVTMTQES EQU   BIT6                MAINRING RESIDENCE TQE STATUS   @L1M
*                                  FLAG - WHEN 1, THE MAINRING
*                                  RESIDENCE TQE IS ABOUT TO BE PLACED
*                                  ON THE TIMER QUEUE OR IS ON THE
*                                  TIMER QUEUE
         DC    XL3'00'             RESERVED
GVTCMPAT DC    XL4'00'             GRS COMPATIBILITY INDICATOR - ANY
*                                  VERSION OF GRS HAVING THE SAME VALUE
*                                  FOR THIS FIELD ARE COMPATIBLE WITH
*                                  EACH OTHER
GVTGVTX  DC    A(0)                ADDRESS OF THE GRS VECTOR TABLE
*                                  EXTENSION
GVTGASCB DC    A(0)                ADDRESS OF THE ASCB FOR THE GRS
*                                  ADDRESS SPACE
GVTGRPRB DC    A(0)                ADDRESS OF THE RB UNDER WHICH
*                                  ISGGRP00 IS EXECUTING
         DC    XL12'00'            RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE      *
*      INITIALIZATION MODULES OF GRS.                                 *
*                                                                     *
***********************************************************************
GVTINITS DS    0D                  GRS INITIALIZATION SECTION
GVTNTCB  DC    A(0)                ADDRESS OF THE TCB UNDER WHICH
*                                  ISGNASIM IS EXECUTING
GVTNECB  DC    A(0)                ECB USED BY ISGNASIM TO WAIT FOR
*                                  TIMER SERVICES AND WTO/WTOR
*                                  SERVICES TO BE AVAILABLE, THIS ECB
*                                  IS POSTED BY ISGNPGIM WHEN THOSE
*                                  SERVICES ARE AVAILABLE
GVTQWBCS DC    F'0'                SIZE OF THE SQA STORAGE CONTAINING
*                                  LOAD MODULE ISGGQWBC
GVTNTLIM DC    F'0'                TIME LIMIT IN UNITS OF 0.01 SECONDS
*                                  FOR FUNCTIONS PERFORMED BY ISGBCI
*                                  FOR GRS INITIALIZATION MODULES
         DC    XL8'00'             RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE      *
*      ENQ/DEQ MODULES OF GRS.                                        *
*                                                                     *
***********************************************************************
GVTNGDQS DS    0D                  ENQ/DEQ SECTION
GVTPROCQ DS    0D                  GRS PROCESS QUEUE CONSISTING OF QWBS
*                                  QUEUED BY ISGBSR AND DEQUEUED BY
*                                  ISGGRP00
GVTPRCQF DC    A(0)                ADDRESS OF THE FIRST QWB ON THE GRS
*                                  PROCESS QUEUE - THAT IS, THE OLDEST
*                                  QWB ON THE PROCESS QUEUE (SERIALIZED
*                                  BY GRS LOCAL LOCK)
GVTPRCQL DC    A(0)                ADDRESS OF THE LAST QWB ON THE GRS
*                                  PROCESS QUEUE - THAT IS, THE NEWEST
*                                  QWB ON THE PROCESS QUEUE (SERIALIZED
*                                  BY MAINRING RSA MESSAGE)
GVTREQQ  DC    A(0)                GRS REQUEST QUEUE CONSISTING OF QWBS
*                                  QUEUED BY ISGGNQDQ AND DEQUEUED BY
*                                  ISGBSR (SERIALIZED BY COMPARE AND
*                                  SWAP LOGIC)
         DC    XL4'00'             RESERVED
GVTGLWSA DS    0F                  GLOBAL/LOCAL AREAS USED BY ISGGNQDQ
*                                  AND ISGGRP00
GVTGQWA  DC    A(0)                ADDRESS OF THE GLOBAL QUEUE WORK
*                                  AREA
GVTGGSA  DC    A(0)                ADDRESS OF THE GLOBAL GROUP SUMMARY
*                                  AREA
GVTLQWA  DC    A(0)                ADDRESS OF THE LOCAL QUEUE WORK
*                                  AREA
GVTLGSA  DC    A(0)                ADDRESS OF THE LOCAL GROUP SUMMARY
*                                  AREA
GVTLISTS DS    0F                  GRS RESOURCE NAME LISTS USED BY
*                                  ISGGREX0
GVTSERNL DC    A(0)                ADDRESS OF THE SYSTEMS EXCLUSION
*                                  RESOURCE NAME LIST
GVTSIRNL DC    A(0)                ADDRESS OF THE SYSTEMS INCLUSION
*                                  RESOURCE NAME LIST
GVTRCRNL DC    A(0)                ADDRESS OF THE RESERVE CONVERSION
*                                  RESOURCE NAME LIST
         DC    XL4'00'             RESERVED
GVTSMPL  DC    A(0)                ADDRESS OF AN SMPL USED TO REFRESH
*                                  THE SMPL RESIDING IN THE SQA QWB
         DC    XL2'00'             RESERVED
GVTSQWBS DC    H'0'                SIZE OF THE SQA QWB
GVTSQWB  DC    A(0)                ADDRESS OF THE SQA QWB
GVTGF1WA DC    A(0)                ADDRESS OF A 200 BYTE WORK AREA
*                                  USED BY ISGGFRR1 (SERIALIZED BY
*                                  CMS ENQ/DEQ LOCK)
         DC    XL16'00'            RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE      *
*      GRS RING PROCESSING MODULES.                                   *
*                                                                     *
***********************************************************************
GVTRINGS DS    0D                  GRS RING PROCESSING SECTION
GVTSYSNM DC    CL8' '              SYSNAME OF CURRENT SYSTEM
         DC    XL2'00'             RESERVED
GVTSYSID DC    H'0'                SYSID OF CURRENT SYSTEM
GVTMREAD DC    F'0'                MAINRING RSA EXPECTED ARRIVAL TIME
*                                  DELTA - NUMBER OF MILLISECONDS
*                                  BEYOND THE EXPECTED ARRIVAL TIME
*                                  ALLOWED THE MAINRING RSA BEFORE
*                                  THE RSA IS CONSIDERED OVERDUE
GVTMREAT DC    D'0'                MAINRING RSA EXPECTED ARRIVAL TIME -
*                                  EXPECTED ARRIVAL TIME OF THE
*                                  MAINRING RSA. WHEN THE LOW ORDER BIT
*                                  IS 1, THE MAINRING RSA IS AT THIS
*                                  SYSTEM OR HAS BEEN FOUND TO BE
*                                  OVERDUE. WHEN THE LOW ORDER BIT IS
*                                  0, THE MAINRING RSA IS NOT AT THIS
*                                  SYSTEM.
GVTMRSCW DC    F'0'                MAINRING SEND COMPLETION WORD -
*                                  WHEN 0, THE MAINRING RSA HAS BEEN
*                                  SUCCESSFULLY SENT BY CTC DRIVER
GVTDMSCW DC    F'0'                DUMMY SEND COMPLETION WORD -
*                                  WHEN 0, MESSAGES OTHER THAN THE
*                                  MAINRING RSA HAVE BEEN SUCCESSFULLY
*                                  SENT BY CTC DRIVER
GVTMRTQE DC    A(0)                ADDRESS OF MAINRING RESIDENCE
*                                  TIMER QUEUE ELEMENT
GVTMETQE DC    A(0)                ADDRESS OF MISSING-EVENT TIMER
*                                  QUEUE ELEMENT
GVTTESRB DC    A(0)                ADDRESS OF THE TIMER-EXPIRATION SRB
GVTBDRMI DC    A(0)                ADDRESS OF THE MODULE INFORMATION
*                                  FOR ISGBDR
         DC    XL16'00'            RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT ARE CONSTANTS THAT ARE        *
*      PRIMARILY USED BY THE GRS RING PROCESSING MODULES.             *
*                                                                     *
***********************************************************************
GVTRCNST DS    0D                  GRS RING PROCESSING CONSTANTS
GVTMEINT DC    F'0'                MISSING-EVENT ROUTINE INTERVAL -
*                                  NUMBER OF MILLISECONDS BETWEEN
*                                  EXECUTIONS OF MISSING-EVENT ROUTINE
GVTOLINT DC    F'0'                TOLERANCE TIME INTERVAL - NUMBER OF
*                                  MILLISECONDS BEYOND THE TIME A RING
*                                  PROCESSING EVENT IS EXPECTED TO
*                                  OCCUR BEFORE THAT EVENT IS
*                                  CONSIDERED OVERDUE (NOTE: THIS TIME
*                                  INTERVAL IS ADDED TO THE MAINRING
*                                  CYCLE TIME AS WELL AS TO ALL TIME
*                                  LIMITS PASSED TO ISGBCI)
GVTASYOH DC    F'0'                ADDITIONAL SYSTEM OVERHEAD VALUE -
*                                  NUMBER OF MILLISECONDS ADDED TO THE
*                                  MAINRING CYCLE TIME WHENEVER A
*                                  SYSTEM ENTERS THE MAINRING (NOTE:
*                                  THIS VALUE IS IN ADDITION TO THE
*                                  RSA RESIDENCY INTERVAL OF THE ADDED
*                                  SYSTEM)
GVTICCEP DC    F'0'                IMMEDIATE CCW CHANNEL END PAUSE
*                                  VALUE - NUMBER OF MILLISECONDS
*                                  ISGBCI WAITS BETWEEN CHECKS FOR A
*                                  CHANNEL END IN RESPONSE TO AN
*                                  IMMEDIATE CCW
GVTICCEC DC    F'0'                IMMEDIATE CCW CHANNEL END COUNT
*                                  - NUMBER OF TIMES ISGBCI WILL CHECK
*                                  FOR A CHANNEL END IN RESPONSE TO AN
*                                  IMMEDIATE CCW
GVTICRRP DC    F'0'                IMMEDIATE CCW REMOTE RESPONSE PAUSE
*                                  VALUE - NUMBER OF MILLISECONDS
*                                  ISGBCI WAITS BETWEEN CHECKS FOR
*                                  RESPONSES FROM REMOTE SYSTEMS TO
*                                  WHICH AN IMMEDIATE CCW WAS ISSUED
GVTICRRC DC    F'0'                IMMEDIATE CCW REMOTE RESPONSE COUNT
*                                  - NUMBER OF TIMES ISGBCI WILL CHECK
*                                  FOR RESPONSES FROM ALL REMOTE
*                                  SYSTEMS TO WHICH AN IMMEDIATE CCW
*                                  WAS ISSUED
GVTNMRRP DC    F'0'                NON-MAINRING RSA RESOURCE PAUSE
*                                  VALUE - NUMBER OF MILLISECONDS
*                                  ISGBTCIR WAITS BETWEEN CHECKS FOR
*                                  THE AVAILABILITY OF RESOURCES
*                                  REQUIRED TO SEND THE NON-MAINRING
*                                  RSA (THAT IS, RESOURCES REQUIRED
*                                  TO SCHEDULE ISGBSRRI)
GVTNMRRC DC    F'0'                NON-MAINRING RSA RESOURCE COUNT -
*                                  NUMBER OF TIMES ISGBTCIR WILL CHECK
*                                  FOR THE AVAILABILITY OF RESOURCES
*                                  REQUIRED TO SEND THE NON-MAINRING
*                                  RSA (THAT IS, RESOURCES REQUIRED
*                                  TO SCHEDULE ISGBSRRI)
GVTNMRHP DC    F'0'                NON-MAINRING RSA HOLD PAUSE VALUE -
*                                  NUMBER OF MILLISECONDS ISGBCI WAITS
*                                  BETWEEN REPEATED ATTEMPTS TO SEND
*                                  A NON-MAINRING RSA TO A REMOTE
*                                  SYSTEM
GVTNHRPT DC    F'0'                NO-HOLD RESPONSE TIME VALUE -
*                                  NUMBER OF MILLISECONDS THIS SYSTEM
*                                  ALLOWS A REMOTE SYSTEM TO RECEIVE
*                                  A NON-MAINRING RSA, PROCESS IT,
*                                  AND SEND IT BACK WITH ZERO HOLD TIME
GVTHDRPT DC    F'0'                HOLD RESPONSE TIME VALUE -
*                                  NUMBER OF MILLISECONDS THIS SYSTEM
*                                  ALLOWS A REMOTE SYSTEM TO RECEIVE
*                                  A NON-MAINRING RSA, PROCESS IT,
*                                  HOLD IT, AND SEND IT BACK
GVTBFTAT DC    F'0'                BUFFER TURNAROUND TIME VALUE -
*                                  NUMBER OF MILLISECONDS ISGBCI
*                                  ALLOWS A REMOTE SYSTEM TO GIVE
*                                  BACK THE BUFFER USED TO SEND A
*                                  NON-MAINRING RSA
         DC    XL28'00'            RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE      *
*      GRS CTC DRIVER MODULES.                                        *
*                                                                     *
***********************************************************************
GVTCTCDS DS    0D                  GRS CTC DRIVER SECTION
GVTJGCT  DC    V(ISGGCT)           ADDRESS OF THE GRS CTC DRIVER
*                                  BRANCH TABLE
GVTJCNFD DC    A(0)                ADDRESS OF DATA CONTAINED IN
*                                  GRSCNFXX PARMLIB MEMBER
GVTJGCV  DC    A(0)                ADDRESS OF THE GRS CTC DRIVER   @L2A
*                                  VECTOR TABLE
         DC    XL4'00'             RESERVED                        @L2C
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE      *
*      GRS COMMAND MODULES.                                           *
*                                                                     *
***********************************************************************
GVTGCMDS DS    0D                  GRS COMMAND SECTION
         DS    0D                  FORCE DOUBLEWORD ALIGNMENT FOR GRS
*                                  COMMAND QUEUES
GVTCMDQS DS    0CL8                GRS COMMAND QUEUES
GVTCMDRQ DC    A(0)                COMMAND REQUEST QUEUE FOR ISGCMDR
*                                  CONSISTING OF CRBS QUEUED BY ISGCMDI
*                                  OR ISGBSR AS WELL AS MRBS QUEUED BY
*                                  ISGBSR OR ISGGTRM0 (SERIAIZED BY
*                                  COMPARE AND SWAP LOGIC)
*                                  WHEN THE HIGH ORDER BIT IS 1,
*                                  NO MORE REQUESTS ARE TO BE PLACED
*                                  ON THE COMMAND REQUEST QUEUE
GVTCMDWQ DC    A(0)                COMMAND WORK QUEUE FOR ISGCMDR TO
*                                  HOLD CRB/MRBS MOVED FROM THE
*                                  COMMAND REQUEST QUEUE
GVTCMDCQ DC    A(0)                COMMAND CLEANUP QUEUE FOR THE ETXR
*                                  ROUTINE IN ISGCMDR CONSISTING OF
*                                  CRB/MRBS QUEUED BY ISGCMDR
*                                  (SERIALIZED BY COMPARE AND SWAP
*                                   LOGIC)
GVTCECB  DC    F'0'                ECB USED BY ISGCMDR TO WAIT FOR
*                                  WORK, THIS ECB IS POSTED BY ISGCMDI
*                                  ISGBSR, OR ISGGTRM0 WHENEVER A
*                                  CRB/MRB IS PLACED ON THE COMMAND
*                                  REQUEST QUEUE
GVTCTLIM DC    F'0'                TIME LIMIT IN UNITS OF 0.01 SECONDS
*                                  FOR FUNCTIONS PERFORMED BY ISGBCI
*                                  FOR GRS COMMAND MODULES
         DC    XL12'00'            RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT CONTAINS THOSE PC NUMBERS     *
*      ASSIGNED TO GRS FUNCTIONS.                                     *
*                                                                     *
***********************************************************************
GVTPCS   DS    0D                  PC NUMBER SECTION
GVTDMPPC DS    0F                  PC NUMBER FOR ISGDGCB0 -
*                                  GRS DUMP ROUTINE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTDMPEX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTED1PC DS    0F                  PC NUMBER FOR ISGGED01 -
*                                  ENQ/DEQ/RESERVE ROUTINE
*                                  (NO SQA QWB OVERFLOW)
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTED1EX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTED2PC DS    0F                  PC NUMBER FOR ISGGED02 -
*                                  ENQ/DEQ/RESERVE ROUTINE
*                                  (SQA QWB OVERFLOW)
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTED2EX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTGESPC DS    0F                  PC NUMBER FOR ISGGEST0 -
*                                  GRS MAINLINE ESTAE MODULE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTGESEX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTGFRPC DS    0F                  PC NUMBER FOR ISGGFRR2 -
*                                  ENQ/DEQ/RESERVE FRR ROUTINE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTGFREX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTLNQPC DS    0F                  PC NUMBER FOR ISGLNQ00 -
*                                  FAST PATH ENQ ROUTINE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTLNQEX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTLDQPC DS    0F                  PC NUMBER FOR ISGLDQ00 -
*                                  FAST PATH DEQ ROUTINE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTLDQEX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTSMIPC DS    0F                  PC NUMBER FOR ISGSMI -
*                                  STORAGE MANAGER INTERFACE MODULE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTSMIEX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
GVTTRMPC DS    0F                  PC NUMBER FOR ISGGTRM1 -
*                                  TERMINATION RESOURCE MANAGER
*                                  MODULE
         DC    XL3'00'             UNUSED BITS AND LX VALUE
GVTTRMEX DC    X'00'               ENTRY TABLE INDEX FOR THIS PC
         DC    XL20'00'            RESERVED
***********************************************************************
*                                                                     *
*      THE FOLLOWING SECTION OF THE GVT CONTAINS ENTRY POINT          *
*      ADDRESSES OF THOSE GRS MODULES OR ROUTINES THAT RESIDE         *
*      IN THE NUCLEUS OR LPA AS WELL AS THOSE GRS MODULES             *
*      THAT ARE USED BY ENQ/DEQ MAINLINE (ISGGNQDQ).                  *
*                                                                     *
***********************************************************************
GVTEPS   DS    0D                  ENTRY POINT SECTION
GVTBDR   DC    V(ISGBDR)           ENTRY POINT ADDRESS OF ISGBDR -
*                                  ESTABLISH A TIMER DIE TIME INTERVAL
*                                  MODULE
GVTBDRC  DC    V(ISGBDRC)          ENTRY POINT ADDRESS OF ISGBDRC -
*                                  TIME EXPIRATION CHECKING ROUTINE
*                                  (ENTRY POINT IN ISGBDR)
GVTCRET0 DC    A(0)                ENTRY POINT ADDRESS OF ISGCRET0 -
*                                  ERRET MODULE FOR XM-POST OF ISGCMDR
GVTLDQ00 DC    V(ISGLDQ00)         ENTRY POINT ADDRESS OF ISGLDQ00 -
*                                  FAST PATH DEQ ROUTINE
*                                  (PC ENTRY POINT IN ISGLNQDQ)
GVTLNQ00 DC    V(ISGLNQ00)         ENTRY POINT ADDRESS OF ISGLNQ00 -
*                                  FAST PATH ENQ ROUTINE
*                                  (PC ENTRY POINT IN ISGLNQDQ)
GVTGDQ00 DC    V(ISGGDQ00)         ENTRY POINT ADDRESS OF ISGGDQ00 -
*                                  BRANCH ENTRY DEQ ROUTINE FOR
*                                  ISGGRP00
*                                  (ENTRY POINT IN ISGGNQDQ)
GVTGFRR0 DC    V(ISGGFRR0)         ENTRY POINT ADDRESS OF ISGGFRR0 -
*                                  ENQ/DEQ/RESERVE FRR MODULE
GVTGFRR1 DC    V(ISGGFRR1)         ENTRY POINT ADDRESS OF ISGGFRR1 -
*                                  STORAGE MANAGER RESOURCE CLEANUP
*                                  ROUTINE
*                                  (ENTRY POINT IN ISGGFRR0)
GVTGFRR2 DC    V(ISGGFRR2)         ENTRY POINT ADDRESS OF ISGGFRR2 -
*                                  ENQ/DEQ/RESERVE FRR ROUTINE
*                                  (PC ENTRY POINT IN ISGGFRR0)
GVTGNQ00 DC    V(ISGGNQ00)         ENTRY POINT ADDRESS OF ISGGNQ00 -
*                                  BRANCH ENTRY ENQ ROUTINE FOR
*                                  ISGGRP00
*                                  (ENTRY POINT IN ISGGNQDQ)
GVTGQWBC DC    A(0)                ENTRY POINT ADDRESS OF ISGGQWBC -
*                                  COPY QWB MODULE
GVTGRCEX DC    V(ISGGRCEX)         ENTRY POINT ADDRESS OF ISGGRCEX -
*                                  RESERVE CONVERSION EXIT ROUTINE
*                                  (ENTRY POINT IN ISGGREX0)
GVTGRNLV DC    V(ISGGRNLV)         ENTRY POINT ADDRESS OF ISGGRNLV -
*                                  RESOURCE NAME LIST VALIDATION
*                                  ROUTINE
*                                  (ENTRY POINT IN ISGGREX0)
GVTGSEEX DC    V(ISGGSEEX)         ENTRY POINT ADDRESS OF ISGGSEEX -
*                                  SYSTEMS EXCLUSION EXIT ROUTINE
*                                  (ENTRY POINT IN ISGGREX0)
GVTGSIEX DC    V(ISGGSIEX)         ENTRY POINT ADDRESS OF ISGGSIEX -
*                                  SYSTEMS INCLUSION EXIT ROUTINE
*                                  (ENTRY POINT IN ISGGREX0)
GVTGWAIT DC    V(ISGGWAIT)         ENTRY POINT ADDRESS OF ISGGWAIT -
*                                  GRS WAIT MODULE FOR GENERAL
*                                  USE                         @ZMB0589
GVTGWT02 DC    V(ISGGWT02)         ENTRY POINT ADDRESS OF ISGGWT02 -
*                                  GRS WAIT ROUTINE USED BY ISGGNQDQ
*                                  (ENTRY POINT IN ISGGWAIT)   @ZMB0589
GVTSALC  DC    V(ISGSALC)          ENTRY POINT ADDRESS OF ISGSALC -
*                                  STORAGE MANAGER ALLOCATION MODULE
GVTSDAL  DC    V(ISGSDAL)          ENTRY POINT ADDRESS OF ISGSDAL -
*                                  STORAGE MANAGER DEALLOCATION MODULE
GVTSGLH  DC    V(ISGSGLH)          ENTRY POINT ADDRESS OF ISGSGLH -
*                                  STORAGE MANAGER GLOBAL/LOCAL HASH
*                                  ROUTINE
*                                  (ENTRY POINT IN ISGSHASH)
GVTSPRLS DC    V(ISGSPRLS)         ENTRY POINT ADDRESS OF ISGSPRLS -
*                                  STORAGE MANAGER PAGE RELEASE ROUTINE
*                                  (ENTRY POINT IN ISGSDAL)
GVTSSAH  DC    V(ISGSSAH)          ENTRY POINT ADDRESS OF ISGSSAH -
*                                  STORAGE MANAGER SYSID/ASID HASH
*                                  ROUTINE
*                                  (ENTRY POINT IN ISGSHASH)
GVT048FP DC    V(IGC048FP)         ENTRY POINT ADDRESS OF IGC048FP -
*                                  FAST PATH ENQ ROUTINE
*                                  (SVC ENTRY POINT IN ISGLNQDQ)
GVT056FP DC    V(IGC056FP)         ENTRY POINT ADDRESS OF IGC056FP -
*                                  FAST PATH DEQ ROUTINE
*                                  (SVC ENTRY POINT IN ISGLNQDQ)
         DC    XL24'00'            RESERVED
GVTEND   DS    0D                  END OF GVT
         MEND                      END OF BAL SECTION
*                                                                    */
*%GVTPLS02:;
*DCL 1 GVT BASED(GVTPTR) BDY(DWORD),   /* GRS VECTOR TABLE           */
*      3 GVTID CHAR(4),                /* CONTROL BLOCK ACRONYM (GVT) */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT IS USED BY ALL AREAS         */
*/*    OF GRS.                                                       */
*/*                                                                  */
*/********************************************************************/
*      3 GVTGSECT BDY(WORD),           /* GLOBAL SECTION             */
*        5 GVTGSFLG BIT(8),            /* GRS GENERAL STATUS FLAGS   */
*          7 GVTGRSAS BIT(1),          /* GRS ADDRESS SPACE FLAG -
*                                         0 = GRS ADDRESS SPACE NOT
*                                             INITIALIZED (PC/PT
*                                             SHOULD NOT BE ISSUED),
*                                         1 = GRS ADDRESS SPACE HAS
*                                             BEEN INITIALIZED
*                                             (PC/PT CAN BE ISSUED)  */
*          7 GVTGRSNA BIT(1),          /* GLOBAL RESOURCE SERIALIZATION
*                                         NOT ACTIVE FLAG - WHEN 1,
*                                         GLOBAL RESOURCE SERIALIZATION
*                                         IS NOT ACTIVE              */
*          7 GVTGRSPC BIT(1),          /* GRS OPTION PROCESSING
*                                         COMPLETE FLAG - WHEN 1,
*                                         ISGNGRSP HAS COMPLETED
*                                         PROCESSING OF THE GRS
*                                         OPTION                     */
*          7 GVTPRGOK BIT(1),          /* PURGE PROCESSING OKAY FLAG -
*                                         WHEN 1, PURGING OF
*                                         LOCAL/GLOBAL RESOURCES
*                                         PERFORMED BY THE GRS
*                                         TERMINATION RESOURCE MANAGER
*                                         IS ALLOWED         @ZMB0431*/
*          7 GVTNCMDR BIT(1),          /* NO COMMAND ROUTER FLAG -
*                                         WHEN 1, THE GRS COMMAND
*                                         ROUTER (ISGCMDR) IS NOT
*                                         ACTIVE                     */
*          7 * BIT(3),                 /* RESERVED                   */
*        5 GVTQSFLG BIT(8),            /* GRS QUEUE STATUS FLAGS     */
*          7 GVTGQDMG BIT(1),          /* GLOBAL QUEUE DAMAGE FLAG -
*                                         WHEN 1, THE GLOBAL RESOURCE
*                                         QUEUES HAVE BEEN DAMAGED   */
*          7 GVTLQDMG BIT(1),          /* LOCAL QUEUE DAMAGE FLAG -
*                                         WHEN 1, THE LOCAL RESOURCE
*                                         QUEUES HAVE BEEN DAMAGED   */
*          7 GVTQMRGA BIT(1),          /* QUEUE MERGE ACTIVE FLAG -
*                                         WHEN 1, ISGCQMRG IS IN THE
*                                         PROCESS OF UPDATING THE
*                                         GLOBAL QUEUES              */
*          7 * BIT(5),                 /* RESERVED                   */
*        5 GVTGRSOP BIT(8),            /* GRS OPTION FLAGS           */
*          7 GVTSTART BIT(1),          /* START FLAG - WHEN 1, GRS
*                                         OPTION IS START            */
*          7 GVTJOIN BIT(1),           /* JOIN FLAG - WHEN 1, GRS
*                                         OPTION IS JOIN             */
*          7 GVTNONE BIT(1),           /* NONE FLAG - WHEN 1, GRS
*                                         OPTION IS NONE             */
*          7 * BIT(5),                 /* RESERVED                   */
*        5 GVTVFLAG BIT(8),            /* GRS VALIDATION FLAGS   @L1M*/
*          7 GVTRNLVC BIT(1),          /* RNL VALIDATION COMPLETE FLAG -
*                                         WHEN 1, VALIDATION COMPLETE
*                                         FOR ALL RESOURCE NAME LISTS
*                                                                @L1M*/
*          7 GVTVERNL BIT(1),          /* INVALID SYSTEMS EXCLUSION RNL
*                                         FLAG - WHEN 1, ERROR EXISTS
*                                         IN THE SYSTEMS EXCLUSION
*                                         RESOURCE NAME LIST     @L1M*/
*          7 GVTVIRNL BIT(1),          /* INVALID SYSTEMS INCLUSION RNL
*                                         FLAG - WHEN 1, ERROR EXISTS
*                                         IN THE SYSTEMS INCLUSION
*                                         RESOURCE NAME LIST     @L1M*/
*          7 GVTVCRNL BIT(1),          /* INVALID RESERVE CONVERSION
*                                         RNL FLAG - WHEN 1, ERROR
*                                         EXISTS IN THE RESERVE
*                                         CONVERSION RESOURCE NAME
*                                         LIST                   @L1M*/
*          7 * BIT(4),                 /* RESERVED               @L1M*/
*        5 GVTGRSRP BIT(8) ABNORMAL,   /* GRS RING PROCESSING FLAGS
*                                                                @L1M*/
*          7 GVTNCOMM BIT(1),          /* NO COMMUNICATION FLAG -
*                                         WHEN 1, CTC DRIVER AND RING
*                                         PROCESSING ARE INOPERATIVE
*                                                                @L1M*/
*          7 GVTMAINR BIT(1),          /* MAINRING FLAG - WHEN 1, THIS
*                                         SYSTEM IS A MEMBER OF THE
*                                         MAINRING               @L1M*/
*          7 GVTINACT BIT(1),          /* INACTIVE SYSTEM FLAG - WHEN 1,
*                                         RING PROCESSING DISCOVERED A
*                                         MAINRING FAILURE BUT THIS
*                                         SYSTEM HAS NOT YET RESET ITS
*                                         MAINRING RESOURCES     @L1M*/
*          7 GVTOBSQD BIT(1),          /* OBSOLETE QUEUE DATA FLAG -
*                                         WHEN 1, THIS SYSTEM HAS
*                                         INCOMPLETE INFORMATION ABOUT
*                                         GLOBAL RESOURCES HELD BY
*                                         OTHER SYSTEMS          @L1M*/
*          7 GVTAURST BIT(1),          /* AUTO RESTART FLAG - WHEN 1,
*                                         THIS SYSTEM HAS THE ABILITY TO
*                                         AUTOMATICALLY REBUILD A
*                                         DISRUPTED GRS RING     @L1C*/
*          7 GVTJSRBS BIT(1),          /* CTC DRIVER SRB SCHEDULED FLAG
*                                         - WHEN 1, THE UNUSUAL EVENT
*                                         SRB OF CTC DRIVER HAS BEEN
*                                         SCHEDULED              @L1M*/
*          7 GVTMTQES BIT(1),          /* MAINRING RESIDENCE TQE STATUS
*                                         FLAG - WHEN 1, THE MAINRING
*                                         RESIDENCE TQE IS ABOUT TO BE
*                                         PLACED ON THE TIMER QUEUE OR
*                                         IS ON THE TIMER QUEUE  @L1M*/
*          7 * BIT(1),                 /* RESERVED               @L1M*/
*        5 * CHAR(3),                  /* RESERVED                   */
*        5 GVTCMPAT CHAR(4) BDY(WORD), /* GRS COMPATIBILITY INDICATOR -
*                                         ANY VERSION OF GRS HAVING THE
*                                         SAME VALUE FOR THIS FIELD ARE
*                                         COMPATIBLE WITH EACH OTHER */
*        5 GVTGVTX PTR(31),            /* ADDRESS OF THE GRS VECTOR
*                                         TABLE EXTENSION            */
*        5 GVTGASCB PTR(31),           /* ADDRESS OF THE ASCB FOR THE
*                                         GRS ADDRESS SPACE          */
*        5 GVTGRPRB PTR(31),           /* ADDRESS OF THE RB UNDER WHICH
*                                         ISGGRP00 IS EXECUTING      */
*        5 * CHAR(12),                 /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE     */
*/*    INITIALIZATION MODULES OF GRS.                                */
*/*                                                                  */
*/********************************************************************/
*      3 GVTINITS BDY(DWORD),          /* GRS INITIALIZATION SECTION */
*        5 GVTNTCB PTR(31),            /* ADDRESS OF THE TCB UNDER
*                                         WHICH ISGNASIM IS EXECUTING */
*        5 GVTNECB FIXED(31),          /* ECB USED BY ISGNASIM TO WAIT
*                                         FOR TIMER SERVICES AND
*                                         WTO/WTOR SERVICES TO BE
*                                         AVAILABLE, THIS ECB IS POSTED
*                                         BY ISGNPGIM WHEN THOSE
*                                         SERVICES ARE AVAILABLE     */
*        5 GVTQWBCS FIXED(31),         /* SIZE OF THE SQA STORAGE
*                                         CONTAINING LOAD MODULE
*                                         ISGGQWBC                   */
*        5 GVTNTLIM FIXED(31),         /* TIME LIMIT IN UNITS OF 0.01
*                                         SECONDS FOR FUNCTIONS
*                                         PERFORMED BY ISGBCI FOR
*                                         GRS INITIALIZATION MODULES */
*        5 * CHAR(8),                  /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE     */
*/*    ENQ/DEQ MODULES OF GRS.                                       */
*/*                                                                  */
*/********************************************************************/
*      3 GVTNQDQS BDY(DWORD),          /* ENQ/DEQ SECTION            */
*        5 GVTPROCQ CHAR(8) BDY(DWORD),/* GRS PROCESS QUEUE CONSISTING
*                                         OF QWBS QUEUED BY ISGBSR
*                                         AND DEQUEUED BY ISGGRP00   */
*          7 GVTPRCQF PTR(31),         /* ADDRESS OF THE FIRST QWB ON
*                                         THE GRS PROCESS QUEUE - THAT
*                                         IS, THE OLDEST QWB ON THE
*                                         PROCESS QUEUE (SERIALIZED BY
*                                         THE GRS LOCAL LOCK)        */
*          7 GVTPRCQL PTR(31),         /* ADDRESS OF THE LAST QWB ON
*                                         THE GRS PROCESS QUEUE - THAT
*                                         IS, THE NEWEST QWB ON THE
*                                         PROCESS QUEUE (SERIALIZED
*                                         BY MAINRING RSA MESSAGE)   */
*        5 GVTREQQ PTR(31),            /* GRS REQUEST QUEUE CONSISTING
*                                         OF QWBS QUEUED BY ISGGNQDQ
*                                         AND DEQUEUED BY ISGBSR
*                                         (SERIALIZED BY COMPARE AND
*                                         SWAP LOGIC)                */
*        5 * CHAR(4),                  /* RESERVED                   */
*        5 GVTGLWSA CHAR(16) BDY(WORD),/* GLOBAL/LOCAL AREAS USED BY
*                                         ISGGNQDQ AND ISGGRP00      */
*          7 GVTGQWA PTR(31),          /* ADDRESS OF THE GLOBAL QUEUE
*                                         WORK AREA                  */
*          7 GVTGGSA PTR(31),          /* ADDRESS OF THE GLOBAL GROUP
*                                         SUMMARY AREA               */
*          7 GVTLQWA PTR(31),          /* ADDRESS OF THE LOCAL QUEUE
*                                         WORK AREA                  */
*          7 GVTLGSA PTR(31),          /* ADDRESS OF THE LOCAL GROUP
*                                         SUMMARY AREA               */
*        5 GVTLISTS CHAR(12) BDY(WORD),/* GRS RESOURCE NAME LISTS USED
*                                         BY ISGGREX0                */
*          7 GVTSERNL PTR(31),         /* ADDRESS OF THE SYSTEMS
*                                         EXCLUSION RESOURCE NAME
*                                         LIST                       */
*          7 GVTSIRNL PTR(31),         /* ADDRESS OF THE SYSTEMS
*                                         INCLUSION RESOURCE NAME
*                                         LIST                       */
*          7 GVTRCRNL PTR(31),         /* ADDRESS OF THE RESERVE
*                                         CONVERSION RESOURCE NAME
*                                         LIST                       */
*        5 * CHAR(4),                  /* RESERVED                   */
*        5 GVTSMPL PTR(31),            /* ADDRESS OF AN SMPL USED TO
*                                         REFRESH THE SMPL RESIDING
*                                         IN THE SQA QWB             */
*        5 * CHAR(2),                  /* RESERVED                   */
*        5 GVTSQWBS FIXED(15),         /* SIZE OF THE SQA QWB        */
*        5 GVTSQWB PTR(31),            /* ADDRESS OF THE SQA QWB     */
*        5 GVTGF1WA PTR(31),           /* ADDRESS OF A 200 BYTE WORK
*                                         AREA USED BY ISGGFRR1
*                                         (SERIALIZED BY CMS ENQ/DEQ
*                                         LOCK)                      */
*        5 * CHAR(16),                 /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE     */
*/*    GRS RING PROCESSING MODULES.                                  */
*/*                                                                  */
*/********************************************************************/
*      3 GVTRINGS BDY(DWORD),          /* GRS RING PROCESSING SECTION */
*        5 GVTSYSNM CHAR(8) BDY(DWORD),/* SYSNAME OF CURRENT SYSTEM  */
*        5 * CHAR(2),                  /* RESERVED                   */
*        5 GVTSYSID FIXED(16),         /* SYSID OF CURRENT SYSTEM    */
*        5 GVTMREAD FIXED(31),         /* MAINRING RSA EXPECTED ARRIVAL
*                                         TIME DELTA - NUMBER OF
*                                         MILLISECONDS BEYOND THE
*                                         EXPECTED ARRIVAL TIME ALLOWED
*                                         THE MAINRING RSA BEFORE THE
*                                         RSA IS CONSIDERED OVERDUE  */
*        5 GVTMREAT CHAR(8) BDY(DWORD),/* MAINRING RSA EXPECTED ARRIVAL
*                                         TIME - EXPECTED ARRIVAL TIME
*                                         OF THE MAINRING RSA. WHEN THE
*                                         LOW ORDER BIT IS 1, THE
*                                         MAINRING RSA IS AT THIS
*                                         SYSTEM OR HAS BEEN FOUND TO
*                                         BE OVERDUE. WHEN THE LOW
*                                         ORDER BIT IS 0, THE MAINRING
*                                         RSA IS NOT AT THIS SYSTEM. */
*        5 GVTMRSCW FIXED(31),         /* MAINRING SEND COMPLETION WORD
*                                         - WHEN 0, THE MAINRING RSA
*                                         HAS BEEN SUCCESSFULLY SENT BY
*                                         CTC DRIVER                 */
*        5 GVTDMSCW FIXED(31),         /* DUMMY SEND COMPLETION WORD -
*                                         - WHEN 0, MESSAGES OTHER THAN
*                                         THE MAINRING RSA HAVE BEEN
*                                         SUCCESSFULLY SENT BY CTC
*                                         DRIVER                     */
*        5 GVTMRTQE PTR(31),           /* ADDRESS OF MAINRING
*                                         RESIDENCE TIMER QUEUE
*                                         ELEMENT                    */
*        5 GVTMETQE PTR(31),           /* ADDRESS OF MISSING-EVENT
*                                         TIMER QUEUE ELEMENT        */
*        5 GVTTESRB PTR(31),           /* ADDRESS OF THE
*                                         TIMER-EXPIRATION SRB       */
*        5 GVTBDRMI PTR(31),           /* ADDRESS OF THE MODULE
*                                         INFORMATION FOR ISGBDR     */
*        5 * CHAR(16),                 /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT ARE CONSTANTS THAT ARE       */
*/*    PRIMARILY USED BY THE GRS RING PROCESSING MODULES.            */
*/*                                                                  */
*/********************************************************************/
*      3 GVTRCNST BDY(DWORD),          /* GRS RING PROCESSING
*                                         CONSTANTS                  */
*        5 GVTMEINT FIXED(31),         /* MISSING-EVENT ROUTINE INTERVAL
*                                         - NUMBER OF MILLISECONDS
*                                         BETWEEN EXECUTIONS OF
*                                         MISSING-EVENT ROUTINE      */
*        5 GVTOLINT FIXED(31),         /* TOLERANCE TIME INTERVAL -
*                                         NUMBER OF MILLISECONDS BEYOND
*                                         THE TIME A RING PROCESSING
*                                         EVENT IS EXPECTED TO OCCUR
*                                         BEFORE THAT EVENT IS
*                                         CONSIDERED OVERDUE (NOTE:
*                                         THIS TIME INTERVAL IS ADDED
*                                         TO THE MAINRING CYCLE TIME
*                                         AS WELL AS TO ALL TIME LIMITS
*                                         PASSED TO ISGBCI)          */
*        5 GVTASYOH FIXED(31),         /* ADDITIONAL SYSTEM OVERHEAD
*                                         VALUE - NUMBER OF MILLISECONDS
*                                         ADDED TO THE MAINRING CYCLE
*                                         TIME WHENEVER A SYSTEM ENTERS
*                                         THE MAINRING (NOTE: THIS
*                                         VALUE IS IN ADDITION TO THE
*                                         RSA RESIDENCY INTERVAL OF THE
*                                         ADDED SYSTEM)              */
*        5 GVTICCEP FIXED(31),         /* IMMEDIATE CCW CHANNEL END
*                                         PAUSE VALUE - NUMBER OF
*                                         MILLISECONDS ISGBCI WAITS
*                                         BETWEEN CHECKS FOR A CHANNEL
*                                         END IN RESPONSE TO AN
*                                         IMMEDIATE CCW              */
*        5 GVTICCEC FIXED(31),         /* IMMEDIATE CCW CHANNEL END
*                                         COUNT - NUMBER OF TIMES
*                                         ISGBCI WILL CHECK FOR A
*                                         CHANNEL END IN RESPONSE TO
*                                         AN IMMEDIATE CCW           */
*        5 GVTICRRP FIXED(31),         /* IMMEDIATE CCW REMOTE RESPONSE
*                                         PAUSE VALUE - NUMBER OF
*                                         MILLISECONDS ISGBCI WAITS
*                                         BETWEEN CHECKS FOR RESPONSES
*                                         FROM REMOTE SYSTEMS TO WHICH
*                                         AN IMMEDIATE CCW WAS ISSUED */
*        5 GVTICRRC FIXED(31),         /* IMMEDIATE CCW REMOTE RESPONSE
*                                         COUNT - NUMBER OF TIMES
*                                         ISGBCI WILL CHECK FOR
*                                         RESPONSES FROM ALL REMOTE
*                                         SYSTEMS TO WHICH AN
*                                         IMMEDIATE CCW WAS ISSUED   */
*        5 GVTNMRRP FIXED(31),         /* NON-MAINRING RSA RESOURCE
*                                         PAUSE VALUE - NUMBER OF
*                                         MILLISECONDS ISGBTCIR WAITS
*                                         BETWEEN CHECKS FOR THE
*                                         AVAILABILITY OF RESOURCES
*                                         REQUIRED TO SEND THE
*                                         NON-MAINRING RSA (THAT IS,
*                                         RESOURCES REQUIRED TO SCHEDULE
*                                         ISGBSRRI)                  */
*        5 GVTNMRRC FIXED(31),         /* NON-MAINRING RSA RESOURCE
*                                         COUNT - NUMBER OF TIMES
*                                         ISGBTCIR WILL CHECK FOR THE
*                                         AVAILABILITY OF RESOURCES
*                                         REQUIRED TO SEND THE
*                                         NON-MAINRING RSA (THAT IS,
*                                         RESOURCES REQUIRED TO SCHEDULE
*                                         ISGBSRRI)                  */
*        5 GVTNMRHP FIXED(31),         /* NON-MAINRING RSA HOLD PAUSE
*                                         VALUE - NUMBER OF MILLISECONDS
*                                         ISGBCI WAITS BETWEEN REPEATED
*                                         ATTEMPTS TO SEND A
*                                         NON-MAINRING RSA TO A REMOTE
*                                         SYSTEM                     */
*        5 GVTNHRPT FIXED(31),         /* NO-HOLD RESPONSE TIME VALUE -
*                                         NUMBER OF MILLISECONDS THIS
*                                         SYSTEM ALLOWS A REMOTE SYSTEM
*                                         TO RECEIVE A NON-MAINRING
*                                         RSA, PROCESS IT, AND SEND IT
*                                         BACK WITH ZERO HOLD TIME   */
*        5 GVTHDRPT FIXED(31),         /* HOLD RESPONSE TIME VALUE -
*                                         NUMBER OF MILLISECONDS THIS
*                                         SYSTEM ALLOWS A REMOTE SYSTEM
*                                         TO RECEIVE A NON-MAINRING
*                                         RSA, PROCESS IT, HOLD IT, AND
*                                         SEND IT BACK               */
*        5 GVTBFTAT FIXED(31),         /* BUFFER TURNAROUND TIME VALUE -
*                                         NUMBER OF MILLISECONDS
*                                         ISGBCI ALLOWS A REMOTE SYSTEM
*                                         TO GIVE BACK THE BUFFER USED
*                                         TO SEND A NON-MAINRING
*                                         RSA                        */
*        5 * CHAR(28),                 /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*     THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE    */
*/*     GRS CTC DRIVER MODULES.                                      */
*/*                                                                  */
*/********************************************************************/
*      3 GVTCTCDS BDY(DWORD),          /* GRS CTC DRIVER SECTION     */
*        5 GVTJGCT PTR(31),            /* ADDRESS OF THE GRS CTC DRIVER
*                                         BRANCH TABLE               */
*        5 GVTJCNFD PTR(31),           /* ADDRESS OF DATA CONTAINED
*                                         IN GRSCNFXX PARMLIB MEMBER */
*        5 GVTJGCV PTR(31),            /* ADDRESS OF THE GRS CTC DRIVER
*                                         VECTOR TABLE           @L2A*/
*        5 * CHAR(4),                  /* RESERVED               @L2C*/
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT IS USED PRIMARILY BY THE     */
*/*    GRS COMMAND MODULES.                                          */
*/*                                                                  */
*/********************************************************************/
*      3 GVTGCMDS BDY(DWORD),          /* GRS COMMAND SECTION        */
*        5 GVTCMDQS CHAR(8) BDY(DWORD), /* GRS COMMAND QUEUES        */
*          7 GVTCMDRQ CHAR(4) BDY(WORD), /* COMMAND REQUEST QUEUE FOR
*                                         ISGCMDR CONSISTING OF CRBS
*                                         QUEUED BY ISGCMDI OR ISGBSR
*                                         AS WELL AS MRBS QUEUED BY
*                                         ISGBSR OR ISGGTRM0
*                                         (SERIALIZED BY COMPARE AND
*                                         SWAP LOGIC)                */
*            9 GVTNREQS BIT(1),        /* NO REQUEST FLAG - WHEN 1,
*                                         NO MORE REQUESTS ARE TO BE
*                                         PLACED ON THE COMMAND
*                                         REQUEST QUEUE              */
*            9 * BIT(31),              /* REMAINING PORTION OF THE
*                                         COMMAND REQUEST QUEUE      */
*          7 GVTCMDWQ PTR(31),         /* COMMAND WORK QUEUE FOR
*                                         ISGCMDR TO HOLD CRB/MRBS
*                                         MOVED FROM THE COMMAND
*                                         REQUEST QUEUE              */
*        5 GVTCMDCQ PTR(31),           /* COMMAND CLEANUP QUEUE FOR
*                                         THE ETXR ROUTINE IN ISGCMDR
*                                         CONSISTING OF CRB/MRBS
*                                         QUEUED BY ISGCMDR
*                                         (SERIALIZED BY COMPARE AND
*                                         SWAP LOGIC)                */
*        5 GVTCECB FIXED(31),          /* ECB USED BY ISGCMDR TO WAIT
*                                         FOR WORK, THIS ECB IS POSTED
*                                         BY ISGCMDI, ISGBSR, OR
*                                         ISGGTRM0 WHENEVER A CRB/MRB
*                                         IS PLACED ON THE COMMAND
*                                         REQUEST QUEUE              */
*        5 GVTCTLIM FIXED(31),         /* TIME LIMIT IN UNITS OF 0.01
*                                         SECONDS FOR FUNCTIONS
*                                         PERFORMED BY ISGBCI FOR
*                                         GRS COMMAND MODULES        */
*        5 * CHAR(12),                 /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT CONTAINS THOSE PC NUMBERS    */
*/*    ASSIGNED TO GRS FUNCTIONS.                                    */
*/*                                                                  */
*/********************************************************************/
*      3 GVTPCS BDY(DWORD),            /* PC NUMBER SECTION          */
*        5 GVTDMPPC FIXED(31),         /* PC NUMBER FOR ISGDGCB0 -
*                                         GRS DUMP ROUTINE           */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTDMPEX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTED1PC FIXED(31),         /* PC NUMBER FOR ISGGED01 -
*                                         ENQ/DEQ/RESERVE ROUTINE
*                                         (NO SQA QWB OVERFLOW)      */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTED1EX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTED2PC FIXED(31),         /* PC NUMBER FOR ISGGED02 -
*                                         ENQ/DEQ/RESERVE ROUTINE
*                                         (SQA QWB OVERFLOW)         */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTED2EX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTGESPC FIXED(31),         /* PC NUMBER FOR ISGGEST0 -
*                                         GRS MAINLINE ESTAE MODULE  */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTGESEX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTGFRPC FIXED(31),         /* PC NUMBER FOR ISGGFRR2 -
*                                         ENQ/DEQ/RESERVE FRR ROUTINE */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTGFREX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTLNQPC FIXED(31),         /* PC NUMBER FOR ISGLNQ00 -
*                                         FAST PATH ENQ ROUTINE      */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTLNQEX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTLDQPC FIXED(31),         /* PC NUMBER FOR ISGLDQ00 -
*                                         FAST PATH DEQ ROUTINE      */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTLDQEX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTSMIPC FIXED(31),         /* PC NUMBER FOR ISGSMI -
*                                         STORAGE MANAGER INTERFACE
*                                         MODULE                     */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTSMIEX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 GVTTRMPC FIXED(31),         /* PC NUMBER FOR ISGGTRM1 -
*                                         TERMINATION RESOURCE MANAGER
*                                         MODULE                     */
*          7 * CHAR(3),                /* UNUSED BITS AND LX VALUE   */
*          7 GVTTRMEX FIXED(8),        /* ENTRY TABLE INDEX FOR THIS
*                                         PC                         */
*        5 * CHAR(20),                 /* RESERVED                   */
*/********************************************************************/
*/*                                                                  */
*/*    THE FOLLOWING SECTION OF THE GVT CONTAINS ENTRY POINT         */
*/*    ADDRESSES OF THOSE GRS MODULES OR ROUTINES THAT RESIDE        */
*/*    IN THE NUCLEUS OR LPA AS WELL AS THOSE GRS MODULES            */
*/*    THAT ARE USED BY ENQ/DEQ MAINLINE (ISGGNQDQ).                 */
*/*                                                                  */
*/********************************************************************/
*      3 GVTEPS BDY(DWORD),            /* ENTRY POINT SECTION        */
*        5 GVTBDR PTR(31),             /* ENTRY POINT ADDR OF ISGBDR
*                                         - ESTABLISH A TIMER DIE TIME
*                                           INTERVAL MODULE          */
*        5 GVTBDRC PTR(31),            /* ENTRY POINT ADDR OF ISGBDRC
*                                         - TIME EXPIRATION CHECKING
*                                           ROUTINE
*                                         (ENTRY POINT IN ISGBDR)    */
*        5 GVTCRET0 PTR(31),           /* ENTRY POINT ADDR OF ISGCRET0
*                                         - ERRET MODULE FOR XM-POST
*                                           OF ISGCMDR               */
*        5 GVTLDQ00 PTR(31),           /* ENTRY POINT ADDR OF ISGLDQ00
*                                         - FAST PATH DEQ ROUTINE
*                                         (PC ENTRY POINT IN
*                                          ISGLNQDQ)                 */
*        5 GVTLNQ00 PTR(31),           /* ENTRY POINT ADDR OF ISGLNQ00
*                                         - FAST PATH ENQ ROUTINE
*                                         (PC ENTRY POINT IN
*                                          ISGLNQDQ)                 */
*        5 GVTGDQ00 PTR(31),           /* ENTRY POINT ADDR OF ISGGDQ00
*                                         - BRANCH ENTRY DEQ ROUTINE
*                                           FOR ISGGRP00
*                                         (ENTRY POINT IN ISGGNQDQ)  */
*        5 GVTGFRR0 PTR(31),           /* ENTRY POINT ADDR OF ISGGFRR0
*                                         - ENQ/DEQ/RESERVE FRR
*                                           MODULE                   */
*        5 GVTGFRR1 PTR(31),           /* ENTRY POINT ADDR OF ISGGFRR1
*                                         - STORAGE MANAGER RESOURCE
*                                           CLEANUP ROUTINE
*                                         (ENTRY POINT IN ISGGFRR0)  */
*        5 GVTGFRR2 PTR(31),           /* ENTRY POINT ADDR OF ISGGFRR2
*                                         - ENQ/DEQ/RESERVE FRR
*                                           ROUTINE
*                                         (PC ENTRY POINT IN
*                                          ISGGFRR0)                 */
*        5 GVTGNQ00 PTR(31),           /* ENTRY POINT ADDR OF ISGGNQ00
*                                         - BRANCH ENTRY ENQ ROUTINE
*                                           FOR ISGGRP00
*                                         (ENTRY POINT IN ISGGNQDQ)  */
*        5 GVTGQWBC PTR(31),           /* ENTRY POINT ADDR OF ISGGQWBC
*                                         - COPY QWB MODULE          */
*        5 GVTGRCEX PTR(31),           /* ENTRY POINT ADDR OF ISGGRCEX
*                                         - RESERVE CONVERSION EXIT
*                                           ROUTINE
*                                         (ENTRY POINT IN ISGGREX0)  */
*        5 GVTGRNLV PTR(31),           /* ENTRY POINT ADDR OF ISGGRNLV
*                                         - RESOURCE NAME LIST
*                                           VALIDATION ROUTINE
*                                         (ENTRY POINT IN ISGGREX0)  */
*        5 GVTGSEEX PTR(31),           /* ENTRY POINT ADDR OF ISGGSEEX
*                                         - SYSTEMS EXCLUSION EXIT
*                                           ROUTINE
*                                         (ENTRY POINT IN ISGGREX0)  */
*        5 GVTGSIEX PTR(31),           /* ENTRY POINT ADDR OF ISGGSIEX
*                                         - SYSTEMS INCLUSION EXIT
*                                           ROUTINE
*                                         (ENTRY POINT IN ISGGREX0)  */
*        5 GVTGWAIT PTR(31),           /* ENTRY POINT ADDR OF ISGGWAIT
*                                         - GRS WAIT MODULE FOR
*                                           GENERAL USE      @ZMB0589*/
*        5 GVTGWT02 PTR(31),           /* ENTRY POINT ADDR OF ISGGWT02
*                                         - GRS WAIT ROUTINE USED
*                                           BY ISGGNQDQ
*                                         (ENTRY POINT IN ISGGWAIT)
*                                                            @ZMB0589*/
*        5 GVTSALC PTR(31),            /* ENTRY POINT ADDR OF ISGSALC
*                                         - STORAGE MANAGER ALLOCATION
*                                         MODULE                     */
*        5 GVTSDAL PTR(31),            /* ENTRY POINT ADDR OF ISGSDAL
*                                         - STORAGE MANAGER DEALLOCATION
*                                         MODULE                     */
*        5 GVTSGLH PTR(31),            /* ENTRY POINT ADDR OF ISGSGLH
*                                         - STORAGE MANAGER GLOBAL/LOCAL
*                                          HASH ROUTINE
*                                         (ENTRY POINT IN ISGSHASH)  */
*        5 GVTSPRLS PTR(31),           /* ENTRY POINT ADDR OF ISGSPRLS
*                                         - STORAGE MANAGER PAGE RELEASE
*                                         ROUTINE
*                                         (ENTRY POINT IN ISGSDAL)   */
*        5 GVTSSAH PTR(31),            /* ENTRY POINT ADDR OF ISGSSAH
*                                         - STORAGE MANAGER SYSID/ASID
*                                         HASH ROUTINE
*                                         (ENTRY POINT IN ISGSHASH)  */
*        5 GVT048FP PTR(31),           /* ENTRY POINT ADDR OF IGC048FP
*                                         - FAST PATH ENQ ROUTINE
*                                         (SVC ENTRY POINT IN
*                                          ISGLNQDQ)                 */
*        5 GVT056FP PTR(31),           /* ENTRY POINT ADDR OF IGC056FP
*                                         - FAST PATH DEQ ROUTINE
*                                         (SVC ENTRY POINT IN
*                                          ISGLNQDQ)                 */
*        5 * CHAR(24),                 /* RESERVED                   */
*      3 GVTEND CHAR(0) BDY(DWORD);    /* END OF GVT                 */
./ ADD NAME=ISGGVTX
*        %GOTO GVTXPLS1;                                             /*
         MACRO
         ISGGVTX
**/
*%GVTXPLS1:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGGVTX
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = GRS VECTOR TABLE EXTENSION
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = THE GVTX CONTAINS INFORMATION RELATIVE TO THE
*                GRS ADDRESS SPACE.
*
*01*  METHOD-OF-ACCESS = PLS - DECLARE GVTXPTR PTR(31)
*                              %INCLUDE SYSLIB(ISGGVTX)
*                        BAL - DSECT IS PRODUCED REQUIRING
*                              A USING ON THE GVTX
*
*01*  CREATED-BY = THE GVTX IS CREATED BY ISGNCBIM IN SQA AND BY
*                  ISGNASIM IN THE GRS ADDRESS SPACE.
*
*02*    SUBPOOL  = 229
*
*02*    KEY      = 0
*
*02*    SIZE     = 416 BYTES .
*
*01*  DELETED-BY = THE GVTX IS NEVER DELETED.
*
*01*  POINTED-TO-BY = THE GVTX IS POINTED TO BY THE GVTGVTX.
*
*01*  SERIALIZATION = GRS LOCAL LOCK -   GLOBAL SAVE AREA
*                                        GLOBAL SMPL
*                                        GLOBAL WORK AREA
*                     CMS ENQ/DEQ LOCK - LOCAL SAVE AREA
*                                        LOCAL SMPL
*                                        LOCAL WORK AREA
*                     COMPARE AND SWAP - COUNT OF INACTIVE PEXBS
*                                        RQA BIT MAP
*                                        SRB COUNT
*
*01*  CHANGE-ACTIVITY = SUPPORTS THE FOLLOWING PTMS:
*                         PBB0203 - MAKE THE BAL VERSION AND   @ZMB0203
*                                   PLS VERSION COMPATIBLE     @ZMB0203
*
*     $L1=GRSRAS  ,JBB1326,810128,PDWR:   AUTO RESTART             @L1A
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G383P13*/
*        %GOTO GVTXPLS2;                                             /*
GVTX     DSECT                   GRS VECTOR TABLE EXTENSION
         DS    0D
GVTXID   DS    CL4               CONTROL BLOCK ACRONYM (GVTX)
***********************************************************************
*                                                                     *
*   ENTRY POINTS                                                      *
*                                                                     *
***********************************************************************
GVTXEPTS DS    0F                ENTRY POINT SECTION
GVTXBBE  DS    A                 ENTRY POINT OF ISGBBE -
*                                GRS RING PROCESSING BACK END ROUTINE
*                                (ENTRY POINT IN ISGBSR)
GVTXBCI  DS    A                 ENTRY POINT OF ISGBCI -
*                                GRS RING PROCESSING COMMAND INTERFACE
*                                MODULE
GVTXBRIN DS    A                 ENTRY POINT OF ISGBSRIN -
*                                CONVERTS SYSID TO SYSNAME ROUTINE
*                                (ENTRY POINT IN ISGBSR)
GVTXBRNI DS    A                 ENTRY POINT OF ISGBSRNI -
*                                CONVERTS SYSNAME TO SYSID ROUTINE
*                                (ENTRY POINT IN ISGBSR)
GVTXCRCV DS    A                 ENTRY POINT OF ISGCRCV -
*                                GRS COMMAND RECOVERY MODULE
GVTXDEQP DS    A                 ENTRY POINT OF ISGGDEQP -
*                                RESOURCE PURGE MODULE
GVTXMSG  DS    A                 ENTRY POINT OF ISGMSG00 -
*                                GRS MESSAGE MODULE
GVTXQWB1 DS    A                 ENTRY POINT OF ISGGQWB1 -
*                                BUILD QWB FROM RSA ROUTINE
*                                (ENTRY POINT IN ISGGQWB0)
GVTXQWB2 DS    A                 ENTRY POINT OF ISGGQWB2 -
*                                BUILD QWB FROM RIB/RIBE ROUTINE
*                                (ENTRY POINT IN ISGGQWB0)
GVTXQWB3 DS    A                 ENTRY POINT OF ISGGQWB3 -
*                                BUILD SYNCHRONIZATION QWB ROUTINE
*                                (ENTRY POINT IN ISGGQWB0)
GVTXQWB4 DS    A                 ENTRY POINT OF ISGGQWB4 -
*                                BUILD DEQUEUE QWB FROM QEL ROUTINE
*                                (ENTRY POINT IN ISGGQWB0)
GVTXQWB5 DS    A                 ENTRY POINT OF ISGGQWB5 -
*                                BUILD SYSID DEQUEUE QWB ROUTINE
*                                (ENTRY POINT IN ISGGQWB0)
GVTXQWBF DS    A                 ENTRY POINT OF ISGGQWBF -
*                                FREE QWB ROUTINE
*                                (ENTRY POINT IN ISGGQWB0)
GVTXRET1 DS    A                 ENTRY POINT OF ISGCRET1 -
*                                ERRET MODULE FOR XM-POST OF A
*                                COMMAND REQUESTOR'S ECB
         DS    CL20              RESERVED
***********************************************************************
*                                                                     *
*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS                *
*   RING PROCESSING MODULES.                                          *
*                                                                     *
***********************************************************************
GVTXRING DS    0D                RING PROCESSING SECTION
GVTXBRSV DS    A                 ADDRESS OF RING PROCESSING SYSTEM
*                                VECTOR TABLE
GVTXBECB DS    F                 ECB USED BY ISGBTC TO WAIT FOR    @L1C
*                                UNUSUAL EVENTS TO OCCUR
         DS    CL8               RESERVED                          @L1C
***********************************************************************
*                                                                     *
*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS                *
*   CTC-DRIVER.                                                       *
*                                                                     *
***********************************************************************
GVTXCTCS DS    0D                CTC-DRIVER SECTION
GVTXJGCV DS    A                 ADDRESS OF THE GRS CTC-DRIVER
*                                VECTOR TABLE
         DS    CL12              RESERVED                          @L1C
***********************************************************************
*                                                                     *
*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS                *
*   INITIALIZATION MODULES.                                           *
*                                                                     *
***********************************************************************
GVTXINIT DS    0D                GRS INITIALIZATION SECTION
GVTXECB0 DS    F                 ECB USED BY ISGNASIM TO WAIT FOR
*                                ISGCMDR TO TERMINATE ABNORMALLY
GVTXECB1 DS    F                 ECB USED BY ISGNASIM TO WAIT FOR
*                                ISGGRP00 TO COMPLETE INITIALIZATION
GVTXECB2 DS    F                 ECB USED BY ISGNASIM TO WAIT FOR
*                                ISGGRP00 TO TERMINATE (NORMAL OR
*                                ABNORMAL)
GVTXECB3 DS    F                 ECB USED BY ISGNASIM TO WAIT FOR
*                                ISGBTC TO COMPLETE INITIALIZATION
GVTXECB4 DS    F                 ECB USED BY ISGNASIM TO WAIT FOR
*                                ISGBTC TO TERMINATE (NORMAL OR
*                                ABNORMAL)
GVTXECB5 DS    F                 ECB USED BY ISGNASIM TO WAIT FOR
*                                ISGNGRSP TO TERMINATE (NORMAL OR
*                                ABNORMAL)
GVTXRQAS DS    F                 SIZE OF GRS RESOURCE QUEUE AREA
GVTXGCBS DS    H                 SIZE OF GRS CONTROL BLOCKS
*                                (GVTX, LRPT, LQHT, GRPT, GQHT, SAHT)
         DS    CL10              RESERVED                      @ZMB0203
***********************************************************************
*                                                                     *
*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS                *
*   STORAGE MANAGEMENT MODULES.                                       *
*                                                                     *
***********************************************************************
GVTXSMGS DS    0D                GRS STORAGE MANAGER SECTION
GVTXRQA  DS    A                 ADDRESS OF GRS RESOURCE QUEUE AREA
GVTXBTMP DS    A                 POINTER TO RQA BIT MAP
GVTXBTML DS    F                 LENGTH OF RQA BIT MAP IN BITS @ZMB0203
GVTXGQHT DS    A                 ADDRESS OF GLOBAL QUEUE HASH TABLE
GVTXLQHT DS    A                 ADDRESS OF LOCAL QUEUE HASH TABLE
GVTXSAHT DS    A                 ADDRESS OF SYSTEM/ASID HASH TABLE
GVTXGRPT DS    A                 ADDRESS OF GLOBAL RESOURCE POOL TABLE
GVTXLRPT DS    A                 ADDRESS OF LOCAL RESOURCE POOL TABLE
GVTXGSAR DS    CL72              GLOBAL SAVE AREA (SERIALIZED BY GRS
*                                LOCAL LOCK)
GVTXLSAR DS    CL72              LOCAL SAVE AREA (SERIALIZED BY CMS
*                                ENQ/DEQ CLASS LOCK)
GVTXGSMP DS    CL16              GLOBAL STORAGE MANAGEMENT PARAMETER
*                                LIST (SERIALIZED BY GRS LOCAL LOCK)
GVTXLSMP DS    CL16              LOCAL STORAGE MANAGEMENT PARAMETER
*                                LIST (SERIALIZED BY CMS ENQ/DEQ
*                                CLASS LOCK)
GVTXGWRK DS    CL16              GLOBAL WORK AREA USED BY ISGSALC
*                                (SERIALIZED BY THE GRS LOCAL LOCK)
GVTXLWRK DS    CL16              LOCAL WORK AREA USED BY ISGSALC
*                                (SERIALIZED BY THE CMS ENQ/DEQ LOCK)
GVTXSRB  DS    A                 ADDRESS OF SRB FOR ISGSPRLS
GVTXSRBC DS    F                 NUMBER OF SRBS SCHEDULED TO RELEASE
*                                INACTIVE PEXB PAGES, THIS COUNT SHOULD
*                                BE EITHER ZERO OR ONE (SERIALIZED BY
*                                COMPARE AND SWAP LOGIC)
GVTXIACT DS    F                 COUNT OF INACTIVE PEXBS (SERIALIZED
*                                BY COMPARE AND SWAP LOGIC)
         DS    CL12              RESERVED
GVTXEND  DS    0F                END OF GVTX
         MEND
**/
*%GVTXPLS2:;
*DECLARE
*  1 GVTX BASED(GVTXPTR)BDY(DWORD), /* GRS VECTOR TABLE EXTENSION    */
*    3 GVTXID CHAR(4),            /* CONTROL BLOCK ACRONYM (GVTX)    */
*/********************************************************************/
*/*                                                                  */
*/*   ENTRY POINTS                                                   */
*/*                                                                  */
*/********************************************************************/
*    3 GVTXEPTS BDY(WORD),        /* ENTRY POINT SECTION             */
*      5 GVTXBBE PTR(31),         /* ENTRY POINT OF ISGBBE -
*                                    GRS RING PROCESSING BACK END
*                                    ROUTINE (ENTRY POINT IN ISGBSR) */
*      5 GVTXBCI PTR(31),         /* ENTRY POINT OF ISGBCI -
*                                    GRS RING PROCESSING COMMAND
*                                    INTERFACE MODULE                */
*      5 GVTXBRIN PTR(31),        /* ENTRY POINT OF ISGBSRIN -
*                                    CONVERTS SYSID TO SYSNAME
*                                    ROUTINE (ENTRY POINT IN ISGBSR) */
*      5 GVTXBRNI PTR(31),        /* ENTRY POINT OF ISGBSRNI -
*                                    CONVERTS SYSNAME TO SYSID
*                                    ROUTINE (ENTRY POINT IN ISGBSR) */
*      5 GVTXCRCV PTR(31),        /* ENTRY POINT OF ISGCRCV -
*                                    GRS COMMAND RECOVERY MODULE     */
*      5 GVTXDEQP PTR(31),        /* ENTRY POINT OF ISGGDEQP -
*                                    RESOURCE PURGE MODULE           */
*      5 GVTXMSG PTR(31),         /* ENTRY POINT OF ISGMSG00 -
*                                    GRS MESSAGE MODULE              */
*      5 GVTXQWB1 PTR(31),        /* ENTRY POINT OF ISGGQWB1 -
*                                    BUILD QWB FROM RSA ROUTINE
*                                    (ENTRY POINT IN ISGGQWB0)       */
*      5 GVTXQWB2 PTR(31),        /* ENTRY POINT OF ISGGQWB2 -
*                                    BUILD QWB FROM RIB/RIBE ROUTINE
*                                    (ENTRY POINT IN ISGGQWB0)       */
*      5 GVTXQWB3 PTR(31),        /* ENTRY POINT OF ISGGQWB3 -
*                                    BUILD SYNCHRONIZATION QWB ROUTINE
*                                    (ENTRY POINT IN ISGGQWB0)       */
*      5 GVTXQWB4 PTR(31),        /* ENTRY POINT OF ISGGQWB4 -
*                                    BUILD DEQUEUE QWB FROM QEL ROUTINE
*                                    (ENTRY POINT IN ISGGQWB0)       */
*      5 GVTXQWB5 PTR(31),        /* ENTRY POINT OF ISGGQWB5 -
*                                    BUILD SYSID DEQUEUE QWB ROUTINE
*                                    (ENTRY POINT IN ISGGQWB0)       */
*      5 GVTXQWBF PTR(31),        /* ENTRY POINT OF ISGGQWBF -
*                                    FREE QWB ROUTINE
*                                    (ENTRY POINT IN ISGGQWB0)       */
*      5 GVTXRET1 PTR(31),        /* ENTRY POINT OF ISGCRET1 -
*                                    ERRET MODULE FOR XM-POST OF A
*                                    COMMAND REQUESTOR'S ECB         */
*      5 *     CHAR(20),          /* RESERVED                        */
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS             */
*/*   RING PROCESSING MODULES.                                       */
*/*                                                                  */
*/********************************************************************/
*    3 GVTXRING BDY(DWORD),       /* RING PROCESSING SECTION         */
*      5 GVTXBRSV PTR(31),        /* ADDRESS OF RING PROCESSING
*                                    SYSTEM VECTOR TABLE             */
*      5 GVTXBECB FIXED(31),      /* ECB USED BY ISGBTC TO WAIT FOR
*                                    UNUSUAL EVENTS TO OCCUR     @L1C*/
*      5 *      CHAR(8),          /* RESERVED                    @L1C*/
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS             */
*/*   CTC-DRIVER MODULES.                                            */
*/*                                                                  */
*/********************************************************************/
*    3 GVTXCTCS BDY(DWORD),       /* CTC-DRIVER SECTION              */
*      5 GVTXJGCV PTR(31),        /* ADDRESS OF THE GRS CTC-DRIVER
*                                    VECTOR TABLE                    */
*      5 * CHAR(12),              /* RESERVED                    @L1C*/
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS             */
*/*   INITIALIZATION MODULES.                                        */
*/*                                                                  */
*/********************************************************************/
*    3 GVTXINIT BDY(DWORD),       /* GRS INITIALIZATION SECTION      */
*      5 GVTXECB0 FIXED(31),      /* ECB USED BY ISGNASIM TO WAIT
*                                    FOR ISGCMDR TO TERMINATE
*                                    ABNORMALLY                      */
*      5 GVTXECB1 FIXED(31),      /* ECB USED BY ISGNASIM TO WAIT
*                                    FOR ISGGRP00 TO COMPLETE
*                                    INITIALIZATION                  */
*      5 GVTXECB2 FIXED(31),      /* ECB USED BY ISGNASIM TO WAIT
*                                    FOR ISGGRP00 TO TERMINATE
*                                    (NORMAL OR ABNORMAL)            */
*      5 GVTXECB3 FIXED(31),      /* ECB USED BY ISGNASIM TO WAIT
*                                    FOR ISGBTC TO COMPLETE
*                                    INITIALIZATION                  */
*      5 GVTXECB4 FIXED(31),      /* ECB USED BY ISGNASIM TO WAIT
*                                    FOR ISGBTC TO TERMINATE
*                                    (NORMAL OR ABNORMAL)            */
*      5 GVTXECB5 FIXED(31),      /* ECB USED BY ISGNASIM TO WAIT FOR
*                                    ISGNGRSP TO TERMINATE (NORMAL
*                                    OR ABNORMAL)                    */
*      5 GVTXRQAS FIXED(31),      /* SIZE OF GRS RESOURCE QUEUE AREA */
*      5 GVTXGCBS FIXED(15),      /* SIZE OF GRS CONTROL BLOCKS
*                                    (GVTX,LRPT,LQHT,GRPT,GQHT,SAHT) */
*      5 *      CHAR(10),         /* RESERVED                @ZMB0203*/
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING FIELDS ARE USED PRIMARILY BY THE GRS             */
*/*   STORAGE MANAGEMENT MODULES.                                    */
*/*                                                                  */
*/********************************************************************/
*    3 GVTXSMGS BDY(DWORD),       /* GRS STORAGE MANAGER SECTION     */
*      5 GVTXRQA PTR(31),         /* ADDRESS OF GRS RESOURCE QUEUE
*                                    AREA                            */
*      5 GVTXBTMP PTR(31),        /* POINTER TO  RQA BIT MAP         */
*      5 GVTXBTML FIXED(32),      /* LENGTH OF RQA BIT MAP IN BITS   */
*      5 GVTXGQHT PTR(31),        /* ADDRESS OF GLOBAL QUEUE HASH
*                                    TABLE                           */
*      5 GVTXLQHT PTR(31),        /* ADDRESS OF LOCAL QUEUE HASH
*                                    TABLE                           */
*      5 GVTXSAHT PTR(31),        /* ADDRESS OF SYSTEM/ASID HASH
*                                    TABLE                           */
*      5 GVTXGRPT PTR(31),        /* ADDRESS OF GLOBAL RESOURCE POOL
*                                    TABLE                           */
*      5 GVTXLRPT PTR(31),        /* ADDRESS OF LOCAL RESOURCE POOL
*                                    TABLE                           */
*      5 GVTXGSAR CHAR(72),       /* GLOBAL SAVE AREA (SERIALIZED BY
*                                    GRS LOCAL LOCK)                 */
*      5 GVTXLSAR CHAR(72),       /* LOCAL SAVE AREA (SERIALIZED BY
*                                    CMS ENQ/DEQ CLASS LOCK)         */
*      5 GVTXGSMP CHAR(16),       /* GLOBAL STORAGE MANAGEMENT
*                                    PARAMETER LIST (SERIALIZED
*                                    BY GRS LOCAL LOCK)              */
*      5 GVTXLSMP CHAR(16),       /* LOCAL STORAGE MANAGEMENT
*                                    PARAMETER LIST (SERIALIZED BY
*                                    CMS ENQ/DEQ CLASS LOCK)         */
*      5 GVTXGWRK CHAR(16),       /* GLOBAL WORK AREA USED BY ISGSALC
*                                    (SERIALIZED BY GRS LOCAL LOCK)  */
*      5 GVTXLWRK CHAR(16),       /* LOCAL WORK AREA USED BY ISGSALC
*                                    (SERIALIZED BY CMS ENQ/DEQ
*                                    CLASS LOCK)                     */
*      5 GVTXSRB PTR(31),         /* ADDRESS OF SRB FOR ISGSPRLS     */
*      5 GVTXSRBC FIXED(31),      /* NUMBER OF SRBS SCHEDULED TO
*                                    RELEASE INACTIVE PEXB PAGES,
*                                    THIS COUNT SHOULD BE EITHER
*                                    ZERO OR ONE(SERIALIZED BY
*                                    COMPARE AND SWAP LOGIC)         */
*      5 GVTXIACT FIXED(31),      /* COUNT OF INACTIVE PEXBS
*                                    (SERIALIZED BY COMPARE AND SWAP
*                                    LOGIC)                          */
*      5 *      CHAR(12),         /* RESERVED                        */
*    3 GVTXEND CHAR(0) BDY(WORD); /* END OF GVTX                     */
*@SPACE(3);
*/********************************************************************/
*/*                                                                  */
*/*      DECLARATION OF THE RQA BIT MAP                              */
*/*                                                                  */
*/********************************************************************/
*  DECLARE
*   GVTXBTM (*) BIT(32) BDY(WORD) BASED(GVTXBTMP); /*GRS RQA BIT MAP
*                                    (SERIALIZED BY COMPARE AND SWAP
*                                    LOGIC)                          */
./ ADD NAME=ISGPEXB
*%GOTO PEXBPLS1;                                                     /*
         MACRO
         ISGPEXB
**/
*%PEXBPLS1:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGPEXB
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = POOL EXTENT BLOCK
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = A POOL EXTENT BLOCK MAPS A 4K PAGE IN THE RQA.
*                EACH POOL EXTENT BLOCK BEGINS ON A 4K BOUNDARY
*                AND CONSISTS OF CELLS THAT ARE ALL OF THE SAME
*                CONTROL BLOCK TYPE AND SIZE.
*
*                THE FIRST SIXTEEN BYTES OF A PEXB CORRESPOND TO
*                THE FIRST SIXTEEN BYTES OF AN RPT ENTRY, SINCE AN
*                RPT ENTRY IS USED AS AN EMPTY PEXB.
*
*01*  METHOD-OF-ACCESS = PLS - DECLARE PEXBPTR PTR(31)
*                              %INCLUDE SYSLIB(ISGPEXB)
*                        BAL - TWO DSECTS ARE PRODUCED REQUIRING
*                              A USING ON THE PEXB AND PEXCELL
*
*01*  CREATED-BY = POOL EXTENT BLOCKS ARE CREATED BY ISGNCBIM AND
*                  AND ISGSALC.
*
*02*    SUBPOOL = 229
*
*02*    KEY     = 0
*
*02*    SIZE    = 4096 BYTES
*
*01*  DELETED-BY = A POOL EXTENT BLOCK IS DELETED BY ISGSPRLS.
*
*01*  POINTED-TO-BY = THE POOL EXTENT BLOCK IS POINTED TO BY EITHER A
*                     RESOURCE POOL TABLE ENTRY (RPTEFPXB, RPTELPXB,
*                     RPTEIAPQ) OR ANOTHER POOL EXTENT BLOCK
*                     (PEXNPEXB OR PEXPPEXB).
*
*01*  SERIALIZATION = LOCAL  PEXBS - CMS ENQ/DEQ CLASS LOCK
*                     GLOBAL PEXBS - GRS LOCAL LOCK
*                     (EXCEPT QWBS)
*                     QWB    PEXBS - CMS ENQ/DEQ CLASS LOCK
*
*01*  CHANGE-ACTIVITY = SUPPORTS PTM PBB0388
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G383P13*/
*        %GOTO PEXBPLS2;                                             /*
PEXB     DSECT                POOL EXTENT BLOCK
PEXHDR   DS    4D             POOL EXTENT BLOCK HEADER
         ORG   PEXHDR
PEXCOMM  DS    2D             THIS STRUCTURE CORRESPONDS TO THE FIRST
*                             16 BYTES OF AN RPT ENTRY
         ORG   PEXCOMM
PEXID    DS    CL4            CONTROL BLOCK ACRONYMN (PEXB)
PEXNPEXB DS    A              ADDRESS OF THE NEXT POOL EXTENT BLOCK
PEXPPEXB DS    A              ADDRESS OF THE PREVIOUS POOL EXTENT BLOCK
PEXAVAIL DS    H              NUMBER OF CELLS AVAILABLE IN THIS POOL
*                             EXTENT BLOCK
PEXTOTAL DS    H              TOTAL NUMBER OF CELLS IN THIS POOL EXTENT
*                             BLOCK
PEXTYPE  DS    CL4            CONTROL BLOCK ACRONYM FOR THE CELLS
*                             CONTAINED IN THIS PEXB           @ZMB0388
PEXFLAGS DS    B              PEXB RESIDENCY FLAGS
PEXSQA   EQU   X'80'          SQA RESIDENCY FLAG -
*                             0 = PEXB RESIDES IN GRS ADDRESS SPACE
*                             1 = PEXB RESIDES IN SQA
PEXRQA   EQU   X'40'          RQA RESIDENCY FLAG -
*                             0 = PEXB RESIDES IN LOCAL RQA
*                             1 = PEXB RESIDES IN GLOBAL RQA
         DS    CL1            RESERVED
PEXINDEX DS    H              INDEX OF THE ASSOCIATED RPT ENTRY
PEXFRST  DS    A              ADDRESS OF THE FIRST AVAILABLE CELL IN
*                             THIS PEXB
PEXLAST  DS    A              ADDRESS OF THE LAST AVAILABLE CELL IN
*                             THIS PEXB
PEXHEND  DS    0D             END OF PEXB HEADER SECTION
PEXCELLS DS    0D             CELL POOL FOR THIS PEXB
         SPACE 3
PEXCELL  DSECT                POOL EXTENT BLOCK CELL
         DS    0D
PEXNCELL DS    A              ADDRESS OF NEXT CELL IN CHAIN
         DS    0X             REMAINDER OF CELL
         MEND
**/
*%PEXBPLS2:;
*DECLARE
*  1 PEXB BASED(PEXBPTR) BDY(DWORD), /* POOL EXTENT BLOCK            */
*    3 PEXHDR CHAR(32) BDY(DWORD),   /* POOL EXTENT BLOCK HEADER     */
*      5 PEXCOMM CHAR(16)BDY(DWORD), /* THIS STRUCTURE CORRESPONDS TO
*                                       THE FIRST 16 BYTES OF AN RPT
*                                       ENTRY                @ZMB0388*/
*        7 PEXID  CHAR(4),           /* CONTROL BLOCK ACRONYM (PEXB) */
*        7 PEXNPEXB PTR(31),         /* ADDRESS OF THE NEXT POOL
*                                       EXTENT BLOCK                 */
*        7 PEXPPEXB PTR(31),         /* ADDRESS OF THE PREVIOUS POOL
*                                       EXTENT BLOCK                 */
*        7 PEXAVAIL FIXED(15),       /* NUMBER OF CELLS AVAILABLE IN
*                                       THIS POOL EXTENT BLOCK       */
*        7 PEXTOTAL FIXED(15),       /* TOTAL NUMBER OF CELLS IN
*                                       THIS POOL EXTENT BLOCK       */
*      5 PEXTYPE CHAR(4),            /* CONTROL BLOCK ACRONYM FOR THE
*                                       CELLS CONTAINED IN THIS
*                                       PEXB                 @ZMB0388*/
*      5 PEXFLAGS BIT(8),            /* PEXB RESIDENCY FLAGS         */
*        7 PEXSQA BIT(1),            /* SQA RESIDENCY FLAG -
*                                       0 = PEXB RESIDES IN GRS
*                                           ADDRESS SPACE
*                                       1 = PEXB RESIDES IN SQA      */
*        7 PEXRQA BIT(1),            /* RQA RESIDENCY FLAG -
*                                       0 = PEXB RESIDES IN LOCAL RQA
*                                       1 = PEXB RESIDES IN GLOBAL RQA
*                                                                    */
*        7 * BIT(6),                 /* RESERVED                     */
*      5 * CHAR(1),                  /* RESERVED                     */
*      5 PEXINDEX FIXED(16),         /* INDEX OF THE ASSOCIATED RPT
*                                       ENTRY                        */
*      5 PEXFRST PTR(31),            /* ADDRESS OF THE FIRST AVAILABLE
*                                       CELL IN THIS PEXB            */
*      5 PEXLAST PTR(31),            /* ADDRESS OF THE LAST AVAILABLE
*                                       CELL IN THIS PEXB            */
*    3 PEXHEND CHAR(0) BDY(DWORD),   /* END OF PEXB HEADER SECTION   */
*    3 PEXCELLS CHAR(*) BDY(DWORD);  /* CELL POOL FOR THIS PEXB      */
*@SPACE(5);
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING IS THE DECLARATION FOR THE CELL CHAINING         */
*/*   WITHIN THE PEXB.                                               */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  1 PEXCELL BDY(DWORD) BASED,       /* POOL EXTENT BLOCK CELL       */
*    3 PEXNCELL PTR(31),             /* ADDRESS OF NEXT CELL IN CHAIN*/
*    3 * CHAR(*);                    /* REMAINDER OF CELL            */
./ ADD NAME=ISGQCB
*        %GOTO PLSQCB;                                               /*
         MACRO
         ISGQCB
**/
*%PLSQCB: ;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQCB
*
*01*  MACDATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = QUEUE CONTROL BLOCK
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = DESCRIBE A GRS RESOURCE.
*
*01*  METHOD-OF-ACCESS = BAL - DSECT IS PRODUCED REQUIRING
*                              A USING ON THE QCB.
*                        PLS - QCB DECLARED AS BASED STRUCTURE.
*                              QCBPTR MUST BE DECLARED.
*
*01*  CREATED-BY = THE ENQ/RESERVE PROCESSING ROUTINES (ISGGNQDQ,
*                  ISGGRP00) OBTAIN THE QCB FROM THE GRS STORAGE
*                  MANAGER.
*
*02*    SUBPOOL  = 229 IN THE GRS PRIVATE AREA
*
*02*    KEY      = 0
*
*02*    SIZE     = THE QCB IS DEFINED IN 3 SIZES AS INDICATED BY
*                  QCBSIZE1, 2 AND 3.
*
*02*    NOTES = THE PQCB MAPS THE QCB. THEREFORE, WHENEVER THE QCB
*               CHANGES IT MAY ALSO BE NECESSARY TO MODIFY THE PQCB.
*
*01*  DELETED-BY = THE DEQ PROCESSING ROUTINES (ISGGNQDQ, ISGGRP00,
*                  ISGGTRM0) RETURN THE QCB TO THE GRS STORAGE
*                  MANAGER.
*
*01*  POINTED-TO-BY = QCBNQCB, QCBPQCB, QHTFIRST, AND QHTLAST
*
*01*  SERIALIZATION = LOCAL RESOURCE  - THE CMS ENQ/DEQ CLASS LOCK
*                     GLOBAL RESOURCE - THE GRS LOCAL LOCK
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G381PYC*/
*        %GOTO PLSQCB1;                                              /*
QCB      DSECT
         DS    0D                 QUEUE CONTROL BLOCK
QCBBASIC DS    CL40
         ORG   QCBBASIC
QCBNQCB  DS    A                  ADDRESS NEXT QCB ON SYNONYM CHAIN
QCBPQCB  DS    A                  ADDRESS PREVIOUS QCB ON SYNONYM CHAIN
QCBFQEL  DS    A                  ADDRESS FIRST QEL FOR THIS RESOURCE
QCBLQEL  DS    A                  ADDRESS LAST QEL FOR THIS RESOURCE
QCBQHTE  DS    A                  ADDRESS OF QUEUE HASH TABLE ENTRY
*                                 FOR THIS RESOURCE
QCBRRSV3 DS    A                  RESERVED
QCBASID  DS    H                  ASID OF REQUESTOR. VALID ONLY WHEN
*                                 QCBSTEP=1
QCBRFLGS DS    B                  RESOURCE DESCRIPTION FLAGS
QCBSYS   EQU   X'80'              SCOPE OF SYSTEM
QCBSYSS  EQU   X'40'              SCOPE OF SYSTEMS
QCBSTEP  EQU   X'20'              SCOPE OF STEP
QCBGLOBL EQU   X'10'              GLOBAL RESOURCE INDICATOR
QCBNOENQ EQU   X'08'              NO ENQS PERMITTED - SET BY FRR
QCBPHLDR EQU   X'04'              THIS IS A PLACEHOLDER QCB.
*                                 NOTE THAT THIS QCB DOES NOT DEFINE
*                                 A RESOURCE REQUEST.
QCBQM    EQU   X'02'              QUEUE MERGE - INDICATES RESOURCE
*                                 HAS BEEN PROCESSED.
QCBRBIT1 EQU   X'01'              RESERVED
QCBRRSV1 DS    C                  RESERVED
QCBRNAML DS    H                  LENGTH OF RNAME
QCBRRSV2 DS    2C                 RESERVED
         DS    0D
QCBQNAME DS    CL8                QNAME OF THIS RESOURCE
QCBEND   DS    0X                 END OF QCB FIXED SECTION
QCBRNAME DS    0C                 RNAME OF THIS RESOURCE (VARIABLE LEN)
*
*     THE FOLLOWING DEFINES THE 3 RNAME LENGTHS USED TO COMPUTE
*     THE 3 QCB SIZES. NOTE THAT THE RNAME, BUT NOT THE RNAME
*     LENGTH, IS MAINTAINED ON A WORD BOUNDARY WITHIN THE QCB.
*
QCBRNSZ1 EQU   24                 RNAME LENGTH 24
QCBRNSZ2 EQU   44                 RNAME LENGTH 44
QCBRNSZ3 EQU   256                MAX RNAME LENGTH + 1
*
*     THE FOLLOWING DEFINES THE 3 QCB SIZES.
*
QCBSIZE1 EQU   QCBEND-QCB+QCBRNSZ1 QCB SIZE 1
QCBSIZE2 EQU   QCBEND-QCB+QCBRNSZ2 QCB SIZE 2
QCBSIZE3 EQU   QCBEND-QCB+QCBRNSZ3 QCB SIZE 3
         MEND
*                                                                    */
*%PLSQCB1: ;
* DCL 1 QCB BASED(QCBPTR) BDY(DWORD), /* QUEUE CONTROL BLOCK         */
*       3 QCBBASIC CHAR(40) BDY(DWORD), /* QCB BASIC SECTION         */
*         5 QCBNQCB  PTR(31),        /* ADDRESS NEXT QCB ON SYNONYM
*                                       CHAIN                        */
*         5 QCBPQCB  PTR(31),        /* ADDRESS PREVIOUS QCB ON SYNONYM
*                                       CHAIN                        */
*         5 QCBFQEL  PTR(31),        /* ADDRESS FIRST QEL FOR THIS
*                                       RESOURCE                     */
*         5 QCBLQEL  PTR(31),        /* ADDRESS LAST QEL FOR THIS
*                                       RESOURCE                     */
*         5 QCBQHTE  PTR(31),        /* ADDRESS OF QUEUE HASH TABLE
*                                       ENTRY FOR THIS RESOURCE      */
*         5 QCBRRSV3 PTR(31),        /* RESERVED                     */
*         5 QCBASID  FIXED(16),      /* ASID OF REQUESTOR. VALID ONLY
*                                       WHEN QCBSTEP=1               */
*         5 QCBRFLGS BIT(8),         /* RESOURCE DESCRIPTION FLAGS   */
*           7 QCBSYS   BIT(1),       /* SCOPE OF SYSTEM              */
*           7 QCBSYSS  BIT(1),       /* SCOPE OF SYSTEMS             */
*           7 QCBSTEP  BIT(1),       /* SCOPE OF STEP                */
*           7 QCBGLOBL BIT(1),       /* GLOBAL RESOURCE INDICATOR    */
*           7 QCBNOENQ BIT(1),       /* NO ENQS PERMITTED - SET BY
*                                       FRR                          */
*           7 QCBPHLDR BIT(1),       /* THIS IS A PLACEHOLDER QCB.
*                                       NOTE THAT THIS QCB DOES NOT
*                                       DEFINE A RESOURCE REQUEST.   */
*           7 QCBQM    BIT(1),       /* QUEUE MERGE - INDICATES
*                                       RESOURCE HAS BEEN PROCESSED  */
*           7 QCBRBIT1 BIT(1),       /* RESERVED                     */
*         5 QCBRRSV1 CHAR(1),        /* RESERVED                     */
*         5 QCBRNAML FIXED(16),      /* LENGTH OF RNAME              */
*         5 QCBRRSV2 CHAR(2),        /* RESERVED                     */
*         5 QCBQNAME CHAR(8) BDY(DWORD),  /* QNAME OF RESOURCE       */
*       3 QCBEND   CHAR(0),          /* END OF FIXED SECTION         */
*       3 QCBRNAME CHAR(*);          /* RNAME OF RESOURCE            */
*/*                                                                  */
*/*     THE FOLLOWING DEFINES THE 3 RNAME LENGTHS USED TO COMPUTE    */
*/*     THE 3 QCB SIZES. NOTE THAT THE RNAME, BUT NOT THE RNAME      */
*/*     LENGTH, IS MAINTAINED ON A WORD BOUNDARY WITHIN THE QCB.     */
*/*                                                                  */
*  DCL  QCBRNSZ1 CONSTANT(24) FIXED(8);  /* RNAME LENGTH 24          */
*  DCL  QCBRNSZ2 CONSTANT(44) FIXED(8);  /* RNAME LENGTH 44          */
*  DCL  QCBRNSZ3 CONSTANT(256) FIXED(16); /* RNAME LENGTH 256        */
*/*                                                                  */
*/*     THE FOLLOWING DEFINES THE 3 QCB SIZES                        */
*/*                                                                  */
* DCL QCBSIZE1 CONSTANT(LENGTH(QCBBASIC)+QCBRNSZ1) FIXED(8);
*                                                          /* SIZE 1 */
* DCL QCBSIZE2 CONSTANT(LENGTH(QCBBASIC)+QCBRNSZ2) FIXED(8);
*                                                          /* SIZE 2 */
* DCL QCBSIZE3 CONSTANT(LENGTH(QCBBASIC)+QCBRNSZ3) FIXED(16);
*                                                          /* SIZE 3 */
./ ADD NAME=ISGQEL
*        %GOTO PLSQEL;                                               /*
         MACRO
         ISGQEL
**/
*%PLSQEL: ;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQEL
*
*01*  MACDATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = QUEUE ELEMENT
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = DESCRIBE THE REQUESTOR OF A GRS RESOURCE.
*
*01*  METHOD-OF-ACCESS = BAL - DSECT IS PRODUCED REQUIRING A
*                              USING ON THE QEL.
*                        PLS - QEL DECLARED AS BASED STRUCTURE.
*                              QELPTR MUST BE DECLARED.
*
*01*  CREATED-BY = THE ENQ/RESERVE PROCESSING ROUTINES (ISGGNQDQ,
*                  ISGGRP00) OBTAIN THE QEL FROM THE GRS STORAGE
*                  MANAGER.
*
*02*    SUBPOOL = 229 IN THE GRS PRIVATE AREA
*
*02*    KEY     = 0
*
*02*    SIZE    = FIXED LENGTH - 48 BYTES
*
*01*  DELETED-BY = THE DEQ PROCESSING ROUTINES (ISGGNQDQ, ISGGRP00,
*                  ISGGTRM0) RETURN THE QEL TO THE GRS STORAGE
*                   MANAGER.
*
*01*  POINTED-TO-BY = QCBFQEL, QCBLQEL, QELNQEL, QELPQEL, QELNASCB,
*                     QELNSYN, ASCBGQEL, ASCBLQEL,  AND SAHTENT
*
*01*  SERIALIZATION = LOCAL RESOURCE  - THE CMS ENQ/DEQ CLASS LOCK.
*                     GLOBAL RESOURCE - THE GRS LOCAL LOCK.
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G381PYC*/
*        %GOTO PLSQEL1;                                              /*
QEL      DSECT
         DS    0D                 QUEUE ELEMENT
QELNQEL  DS    A                  ADDRESS OF NEXT QEL
QELPQEL  DS    A                  ADDRESS OF PREVIOUS QEL
QELNQELQ DS    A                  NEXT QEL ON ASCB OR SYSID QUEUE
QELPQELQ DS    A                  PREVIOUS QEL ON ASCB OR SYSID QUEUE
QELNSYN  DS    A                  NEXT QEL ON SYSID SYNONYM CHAIN
QELPSYN  DS    A                  PREVIOUS QEL ON SYSID SYNONYM CHAIN
QELQXB   DS    A                  ADDRESS OF QXB
QELQCB   DS    A                  ADDRESS OF QCB
QELSAHTE DS    A                  ADDRESS OF SLOT IN SYSID/ASID HASH
*                                 TABLE. VALID ONLY WHEN THE REQUEST
*                                 ORIGINATED FROM A GRS SYSTEM OTHER
*                                 THAN CURRENT.
QELORIGN DS    F                  ORIGIN OF REQUEST
         ORG   QELORIGN
QELSYSID DS    H                  SYSTEM ID OF REQUESTOR
QELASID  DS    H                  ASID OF REQUESTOR
QELRSVD1 DS    CL2                RESERVED
QELQFLGS DS    B                  THESE FLAGS PERTAIN TO THE QEL
QELSHARE EQU   X'80'              WHEN 1, SHARED REQUEST.
*                                 WHEN 0, EXCLUSIVE REQUEST
QELMC    EQU   X'40'              MC= REQUEST
QELRESV  EQU   X'20'              RESERVE REQUEST
QELRESVC EQU   X'10'              RESERVE CONVERTED TO GLOBAL ENQ
QELAUTH  EQU   X'08'              CALLER IS AUTHORIZED
QELTCBFA EQU   X'04'              TCBFA WAS ON WHEN QEL INITIALIZED
QELQRSV2 EQU   X'02'              RESERVED
QELQRSV1 EQU   X'01'              RESERVED
QELLFLGS DS    B                  THESE FLAGS PERTAIN TO LIST REQUESTS
QELPOST  EQU   X'80'              THE ECB OR RB HAS BEEN POSTED
QELECBF  EQU   X'40'              THIS IS AN ECB REQUEST
QELLRSV6 EQU   X'20'              RESERVED
QELLRSV5 EQU   X'10'              RESERVED
QELLRSV4 EQU   X'08'              RESERVED
QELLRSV3 EQU   X'04'              RESERVED
QELLRSV2 EQU   X'02'              RESERVED
QELLRSV1 EQU   X'01'              RESERVED
QELUCB   DS    A                  CONTAINS UCB ADDRESS WHEN QELRESV=1
QELEND   DS    0D                 END OF QEL
         MEND
*                                                                    */
*%PLSQEL1: ;
* DCL 1 QEL BASED(QELPTR) BDY(DWORD), /* QUEUE ELEMENT               */
*       3 QELNQEL  PTR(31),          /* ADDRESS OF NEXT QEL          */
*       3 QELPQEL  PTR(31),          /* ADDRESS OF PREVIOUS QEL      */
*       3 QELNQELQ PTR(31),          /* NEXT QEL ON ASCB OR SYSID
*                                       QUEUE                        */
*       3 QELPQELQ PTR(31),          /* PREVIOUS QEL ON ASCB OR
*                                       SYSID QUEUE                  */
*       3 QELNSYN  PTR(31),          /* NEXT QEL ON SYSID SYNONYM
*                                       CHAIN                        */
*       3 QELPSYN  PTR(31),          /* PREVIOUS QEL ON SYSID
*                                       SYNONYM CHAIN                */
*       3 QELQXB   PTR(31),          /* ADDRESS OF QXB               */
*       3 QELQCB   PTR(31),          /* ADDRESS OF QCB               */
*       3 QELSAHTE PTR(31),          /* ADDRESS OF SLOT IN SYSID/ASID
*                                       HASH TABLE. VALID ONLY WHEN
*                                       THE REQUEST ORIGINATED FROM A
*                                       GRS SYSTEM OTHER THAN
*                                       CURRENT                      */
*       3 QELORIGN FIXED(32),        /* ORIGIN OF REQUESTOR          */
*         5 QELSYSID FIXED(16),      /* SYSTEM ID OF REQUESTOR       */
*         5 QELASID  FIXED(16),      /* ASID OF REQUESTOR            */
*       3 QELRSVD1 CHAR(2),          /* RESERVED                     */
*       3 QELQFLGS BIT(8),           /* THESE FLAGS PERTAIN TO THE
*                                       QEL                          */
*         5 QELSHARE BIT(1),         /* WHEN 1, SHARED REQUEST
*                                       WHEN 0, EXCLUSIVE REQUEST    */
*         5 QELMC    BIT(1),         /* MC REQUEST                   */
*         5 QELRESV  BIT(1),         /* RESERVE REQUEST              */
*         5 QELRESVC BIT(1),         /* RESERVE CONVERTED TO GLOBAL
*                                       ENQ                          */
*         5 QELAUTH  BIT(1),         /* CALLER IS AUTHORIZED         */
*         5 QELTCBFA BIT(1),         /* TCBFA ON WHEN QEL INITIALIZED*/
*         5 QELQRSV2 BIT(1),         /* RESERVED                     */
*         5 QELQRSV1 BIT(1),         /* RESERVED                     */
*       3 QELLFLGS BIT(8),           /* THESE FLAGS PERTAIN TO LIST
*                                       REQUESTS                     */
*         5 QELPOST  BIT(1),         /* THE ECB OR RB HAS BEEN POSTED*/
*         5 QELECBF  BIT(1),         /* THIS IS AN ECB REQUEST       */
*         5 QELLRSV6 BIT(1),         /* RESERVED                     */
*         5 QELLRSV5 BIT(1),         /* RESERVED                     */
*         5 QELLRSV4 BIT(1),         /* RESERVED                     */
*         5 QELLRSV3 BIT(1),         /* RESERVED                     */
*         5 QELLRSV2 BIT(1),         /* RESERVED                     */
*         5 QELLRSV1 BIT(1),         /* RESERVED                     */
*       3 QELUCB   PTR(31),          /* CONTAINS UCB ADDRESS WHEN
*                                       QELRESV=1                    */
*       3 QELEND   CHAR(0) BDY(DWORD); /* END OF QEL                 */
./ ADD NAME=ISGQFPL
*     %GOTO PLSQFPL;                                                 /*
         MACRO
         ISGQFPL
*                                                                    */
*%PLSQFPL:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQFPL
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = E/D/R FRR PARAMETER LIST
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = IN THE EVENT OF AN ERROR WHILE PROCESSING AN
*                ENQ/DEQ/RESERVE REQUEST, THIS AREA PROVIDES
*                A MEANS OF COMMUNICATING INFORMATION TO THE
*                FRR WHICH WILL HANDLE THE ERROR.
*
*01*  NOTES = THE QFPLRTAD AND QFPLMID FIELDS ARE NOT REQUIRED
*             FOR NUCLEUS RESIDENT MODULES AND ARE IGNORED.
*
*01*  METHOD-OF-ACCESS =
*                         PL/S
*                           BASED, NO POINTER SPECIFIED:
*                                  %INCLUDE  SYSLIB(ISGQFPL)
*                           BASED, USER SPECIFIED POINTER:
*                                  %DCL QFPLBASE CHAR
*                                  %QFPLBASE = 'BASED( ANYPTR )'
*                                  %INCLUDE  SYSLIB(ISGQFPL)
*                         BAL
*                           USING QFPL,REG#
*                           ISGQFPL
*
*01*  CREATED-BY = RTM ON BEHALF OF THE ISSUER OF SETFRR
*
*02*    SUBPOOL = DETERMINED BY RTM
*
*02*    KEY     = 0
*
*02*    SIZE    = 24 BYTES
*
*01*  DELETED-BY = RTM WHEN THE ASSOCIATED FRR IS DELETED
*
*01*  POINTED-TO-BY = SDWAPARM WHEN THE FRR RECEIVES CONTROL.
*                     USER SPECIFIED AREA WHEN CONTROL RETURNS
*                     FROM SETFRR.
*
*01*  SERIALIZATION = NONE.
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G38IP14*/
*   %GOTO PLSQFPL1;                                                  /*
QFPL     DSECT
QFPLRTAD DS    F                     * RETRY ADDRESS (0=> NO RETRY)
QFPLRUB  DS    F                     * REGISTER UPDATE BLOCK ADDRESS
*                                      (0=> RETRY REGS UNDEFINED)
QFPLMID  DS    F                     * ADDRESS OF MODID MACRO INFO
QFPLSMPL DS    F                     * ADDRESS OF AN SMPL (USED FOR
*                                      ISGSALC OR ISGSDAL ERRORS)
QFPLDBUG DS    F                     * ADDRESS OF ADDITIONAL INFO TO
*                                      BE RECORDED IN THE VRA
QFPLMISC DS    F                     * FOR USE BY THE MODULE WHICH
*                                      ISSUED THE SETFRR
QFPLEND  DS    0X                    * END OF QEL
         MEND
*                                                                    */
*%PLSQFPL1: ;
* %IF  QFPLBASE = 'QFPLBASE'
* %THEN %QFPLBASE = 'BASED';
*   DECLARE
*     1 QFPL CHAR(24) QFPLBASE BDY(WORD),
*                                   /* E/D/R FRR PARAMETER LIST      */
*       3 QFPLRTAD PTR(31),         /* RETRY ADDRESS (0=> NO RETRY)  */
*       3 QFPLRUB  PTR(31),         /* REGISTER UPDATE BLOCK ADDRESS
*                                      (0=> RETRY REGS UNDEFINED)    */
*       3 QFPLMID  PTR(31),         /* ADDRESS OF MODID MACRO INFO   */
*       3 QFPLSMPL PTR(31),         /* ADDRESS OF AN SMPL  (USED FOR
*                                      ISGSALC OR ISGSDAL ERRORS)    */
*       3 QFPLDBUG PTR(31),         /* ADDRESS OF ADDITIONAL INFO TO
*                                      BE RECORDED IN THE VRA        */
*       3 QFPLMISC BIT(32),         /* FOR USE BY THE MODULE WHICH
*                                      ISSUED THE SETFRR             */
*       3 QFPLEND  CHAR(0);         /* END OF QFPL                   */
./ ADD NAME=ISGQHT
*%GOTO QHTPLS1;                                                      /*
         MACRO
         ISGQHT
**/
*%QHTPLS1:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQHT
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = QUEUE HASH TABLE
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = THERE ARE TWO QUEUE HASH TABLES - ONE FOR GLOBAL
*                REQUESTS AND ONE FOR LOCAL REQUESTS. EACH QUEUE
*                HASH TABLE ENTRY IS A DOUBLE HEADED QUEUE
*                OF QCB'S.
*
*01*  METHOD-OF-ACCESS = PLS - DECLARE QHTPTR PTR(31)
*                              DECLARE QHTEPTR PTR(31)
*                              %INCLUDE SYSLIB(ISGQHT)
*                        BAL - DSECT IS PRODUCED REQUIRING
*                              A USING ON THE QHT AND QHTENT
*
*01*  CREATED-BY = THE QUEUE HASH TABLES ARE CREATED BY ISGNCBIM
*                  IN SQA AND BY ISGNASIM IN THE GRS ADDRESS SPACE.
*
*02*    SUBPOOL = 229
*
*02*    KEY     = 0
*
*02*    SIZE    = GLOBAL QUEUE HASH TABLE - 8192 BYTES
*                 LOCAL  QUEUE HASH TABLE - 2048 BYTES
*
*01*  DELETED-BY = THE QUEUE HASH TABLES ARE NEVER DELETED.
*
*01*  POINTED-TO-BY = THE GLOBAL QUEUE HASH TABLE IS POINTED TO BY
*                     GVTXGQHT. THE LOCAL QUEUE HASH TABLE IS POINTED
*                     TO BY GVTXLQHT.
*
*01*  SERIALIZATION = LOCAL  QUEUE HASH TABLE - CMS ENQ/DEQ CLASS LOCK
*                     GLOBAL QUEUE HASH TABLE - GRS LOCAL LOCK
*
*01*  CHANGE-ACTIVITY = SUPPORTS PTM PBB0198
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G383P13*/
*        %GOTO QHTPLS2;                                              /*
QHT      DSECT                    QUEUE HASH TABLE
         DS    0D
QHTHDR   DS    0D                 QUEUE HASH TABLE HEADER
QHTID    DS    CL4                CONTROL BLOCK ACRONYM
*                                 (GLOBAL-GQHT,LOCAL-LQHT)
QHTNENT  DS    H                  NUMBER OF ENTRIES IN TABLE
         DS    CL2                RESERVED
QHTENTS  DS    0D                 QUEUE HASH TABLE ENTRIES
QHTENT   DSECT                    QUEUE HASH TABLE ENTRY
         DS    0D
QHTEFQCB DS    A                  ADDRESS OF FIRST QCB ON SYNONYM CHAIN
         ORG   QHTEFQCB
QHTEQDMG EQU   X'80'                    0 - NO QUEUE DAMAGE IN THIS
*                                           SYNONYM CHAIN.
*                                       1 - QUEUE DAMAGE IN THIS
*                                           SYNONYM CHAIN. ENQS NOT
*                                           ALLOWED
QHTERSV1 EQU   X'7F'              CAN NOT BE USED ONLY THE FIRST BIT
*                                 OF THE FORWARD QUEUE CAN BE USED
         ORG   QHTEFQCB+4
QHTELQCB DS    A                  ADDRESS OF LAST QCB ON SYNONYM CHAIN
         MEND
**/
*%QHTPLS2:;
*DECLARE
*  1 QHT BASED(QHTPTR) BDY(DWORD),   /* QUEUE HASH TABLE             */
*    3 QHTHDR CHAR(8) BDY(WORD),     /* QUEUE HASH TABLE HEADER      */
*      5 QHTID CHAR(4),              /* CONTROL BLOCK ACRONYM
*                                       (GLOBAL-GQHT,LOCAL-LQHT)     */
*      5 QHTNENT FIXED(16),          /* NUMBER OF ENTRIES IN TABLE   */
*      5 * CHAR(2),                  /* RESERVED                     */
*    3 QHTENTS (*) CHAR(LENGTH(QHTENT)); /* QUEUE HASH TABLE ENTRIES */
*@SPACE(3);
*DECLARE
*  1 QHTENT CHAR(8) BASED(QHTEPTR)BDY(DWORD), /*QUEUE HASH TABLE ENTRY*/
*    3 QHTEFQCB PTR(32),             /* ADDRESS OF THE FIRST QCB ON
*                                       THE SYNONYM CHAIN, THE HIGH
*                                       ORDER BIT INDICATES IF THERE
*                                       IS QUEUE DAMAGE               */
*      5 QHTEQDMG BIT(1),            /* 0 - NO QUEUE DAMAGE IN THIS
*                                           SYNONYM CHAIN.
*                                       1 - QUEUE DAMAGE IN THIS
*                                           SYNONYM CHAIN. ENQS NOT
*                                           ALLOWED                   */
*      5 * BIT(31),                  /* CAN NOT BE USED, THIS IS THE
*                                       ADDRESS PORTION OF THE POINTER*/
*    3 QHTELQCB PTR(31);             /* ADDRESS OF LAST QCB ON SYNONYM
*                                       CHAIN                        */
*@SPACE(5);
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE TO BE USED ONLY BY GRS             */
*/*   INITIALIZATION MODULES.                                        */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  QHTGNENT FIXED(16)CONSTANT(1023), /* NUMBER OF ENTRIES IN THE GLOBAL
*                                       QUEUE HASH TABLE WHILE IN GRS
*                                       ADDRESS SPACE                */
*  QHTLNENT FIXED(16)CONSTANT(255),  /* NUMBER OF ENTRIES IN THE LOCAL
*                                       QUEUE HASH TABLE WHILE IN GRS
*                                       ADDRESS SPACE                */
*  QHTINENT FIXED(16)CONSTANT(2);    /* NUMBER OF ENTRIES IN THE LOCAL
*                                       QUEUE HASH TABLE WHILE IN SQA
*                                                            @ZMB0198*/
./ ADD NAME=ISGQWA
*        %GOTO PLSQWA;                                               /*
         MACRO
         ISGQWA
**/
*%PLSQWA: ;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQWA
*
*01*  MACDATE = 06/05/81
*
*01*  DESCRIPTIVE-NAME = QUEUE WORK AREA
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = USED AS A COMMON WORK AREA FOR THE ENQ/DEQ/RESERVE
*                PROCESSING ROUTINES.
*
*                NOTE THAT THE QWA MAY BE MAPPED TO THE FOLLOWING
*                STORAGE AREAS.
*                1. LOCAL QWA   - USED WHEN PROCESSING A
*                                 LOCAL RESOURCE.
*                2. GLOBAL QWA  - USED WHEN PROCESSING A
*                                 GLOBAL RESOURCE.
*                3. SVRB QWA    - USED DURING COMPLETION
*                                 PROCESSING. THIS AREA
*                                 MAPS TO THE RB EXTENDED
*                                 SAVEAREA.
*
*01*  METHOD-OF-ACCESS = BAL - DSECT IS PRODUCED REQUIRING A USING
*                              ON THE QWA.
*                        PLS - QWA DECLARED AS A BASED STRUCTURE.
*                              QWAPTR MUST BE DECLARED.
*
*01*  CREATED-BY = THE LOCAL/GLOBAL QWA-S HAVE BEEN DEFINED BY THE
*                  GRS RIM, ISGNCBIM.
*
*02*    SUBPOOL = 245
*
*02*    KEY     = 0
*
*02*    SIZE    = 632 BYTES
*
*01*  DELETED-BY = LOCAL QWA  - NOT DELETED.
*                  GLOBAL QWA - NOT DELETED.
*                  SVRB QWA   - DELETED AT RB TERMINATION.
*
*01*  POINTED-TO-BY = LOCAL QWA  - GVTLQWA
*                     GLOBAL QWA - GVTGQWA
*
*01*  SERIALIZATION = LOCAL QWA  - CMS ENQ/DEQ CLASS LOCK.
*                     GLOBAL QWA - GRS LOCAL LOCK.
*                     SVRB QWA   - REQUESTOR'S LOCAL LOCK.
*
*01*  CHANGE-ACTIVITY =
* $L1=GRSRAS  ,JBB1326,810424,PD1M: GRS END OF TASK                @L1A
* $P1=PMM0378 ,JBB1326,810507,PD1M: PREVENT COMPILER INFORMATIONAL
*                                   MESSAGE IKE0405I               @P1A
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G381PYC*/
*        %GOTO PLSQWA1;                                              /*
QWA      DSECT                    QUEUE WORK AREA
         DS    0D
QWAID    DS    CL4                CONTROL BLOCK IDENTIFIER
QWABASIC DS    CL48               QWA BASIC SECTION - THIS IS THE
*                                 ONLY SECTION OF THE QWA THAT CAN BE
*                                 MAPPED TO THE RB EXTENDED SAVEAREA
*                                 OR THE RMPL WORK AREA
         ORG   QWABASIC
QWAPELA  DS    A                  INPUT PEL ADDRESS
QWAKEY   DS    X                  REQUESTOR-S KEY
QWARETRY DS    X                  ID FOR RETRY ADDRESS
QWARSVD3 DS    2C                 RESERVED
QWAPT1   DS    F                  PT OPERAND 1
QWAPT2   DS    F                  PT OPERAND 2
QWARSA   DS    CL28               REQUEST SAVE AREA - THIS AREA IS
*                                 MOVED TO THE QWBHRSA WHEN A GLOBAL
*                                 RESOURCE IS REQUESTED.
         ORG   QWARSA
QWAMRBQ  DS    A                  POINTER TO FIRST MESSAGE IN MRB
*                                 QUEUE
QWAERR   DS    X                  FIRST DIGIT OF ABEND CODE
QWARSVD4 DS    1C                 RESERVED
QWAPFLGS DS    H                  SAVED PEL FLAGS
         ORG   QWAPFLGS
QWAPLAST DS    B                  SAVED PELLAST FLAG BYTE
QWAEOL   EQU   X'80'              PELEOL                       @ZMB0308
QWAIGNOR EQU   X'40'              PELIGNOR                     @ZMB0308
QWARES1  EQU   X'20'              PELRES1                      @ZMB0308
QWASHR   EQU   X'10'              PELSHR                       @ZMB0308
QWASAVE  EQU   X'08'              PELSAVE                      @ZMB0308
QWAGEN1  EQU   X'04'              PELGEN1                      @ZMB0308
QWAGEN2  EQU   X'02'              PELGEN2                      @ZMB0308
QWATCBF  EQU   X'01'              PELTCBF                      @ZMB0308
         ORG   QWAPFLGS+1
QWAPFLAG DS    B                  SAVED PELFLAG FLAG BYTE
QWASHARE EQU   X'80'              PELSHARE                     @ZMB0308
QWASCPE1 EQU   X'40'              PELSCPE1                     @ZMB0308
QWASYSMC EQU   X'20'              PELSYSMC                     @ZMB0308
QWASTPMC EQU   X'10'              PELSTPMC                     @ZMB0308
QWASCPE2 EQU   X'08'              PELSCPE2                     @ZMB0308
QWARET1  EQU   X'04'              PELRET1                      @ZMB0308
QWARET2  EQU   X'02'              PELRET2                      @ZMB0308
QWARET3  EQU   X'01'              PELRET3                      @ZMB0308
*
* THE FOLLOWING FLAGS ARE INITIALIZED IN THE QWA BY THE ENQ/DEQ/RESERVE
* MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE REQUEST IS PROCESSED
* BY THE GRP, THIS DATA IS MOVED TO THE QWB HEADER (QWBHFLG1). WHEN
* THE ENQ/DEQ/RESERVE SVRB IS POSTED, THE INFORMATION IS MOVED BACK
* TO THE QWA. THEREFORE THE BIT DEFINITIONS OF QWBHFLG1 MUST MATCH
* THE BIT DEFINITIONS OF QWAFLAG1.
*
QWAFLAG1 DS    B                  QWA PROCESS FLAGS
QWASTLC  EQU   X'80'              STEAL PROCESSING IS NOW COMPLETE,
*                                 I.E., STEAL QWB(S) HAVE BEEN PLACED
*                                 ON THE REQUEST QUEUE IF NECESSARY.
QWASMC   EQU   X'40'              SET SMC STATUS
QWARMC   EQU   X'20'              RESET SMC STATUS
QWASPOST EQU   X'10'              SPOST IS NECESSARY
QWAINT   EQU   X'08'              AN INTERNALLY GENERATED
*                                 REQUEST
QWALNGWT EQU   X'04'              A LONG-WAIT IS NECESSARY
QWAPC    EQU   X'02'              PC HAS BEEN ISSUED
QWAPURG  EQU   X'01'              INDICATE ISGGDEQP HAS PURGED THE
*                                 QWB THAT WAS MAPPED TO THIS QWA.
*
* THE FOLLOWING FLAGS ARE INITIALIZED IN THE QWA BY THE
* ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE IS
* REQUESTED, MAINLINE FRONT-END PROCESSING WILL MOVE THIS FLAG
* BYTE TO QWBHFLG2. THEREFORE THE BIT DEFINITIONS OF QWAFLAG2
* MUST MATCH THE BIT DEFINITIONS OF QWBHFLG2.
*
QWAFLAG2 DS    B                  QWA STATUS FLAGS
QWAMIXR  EQU   X'80'              MIXED RESOURCE REQUEST
QWATCBFA EQU   X'40'              REQUESTING TASK WAS ABENDING WHEN
*                                 THE REQUEST WAS RECEIVED
QWAAUTH  EQU   X'20'              REQUESTOR IS AUTHORIZED
QWAGLBL  EQU   X'10'              GLOBAL RESOURCES DEFINED IN THE QWB
QWAECBF  EQU   X'08'              ECB= SPECIFIED
QWASVC56 EQU   X'04'              ENQ/RESERVE REQUEST
QWAABDMC EQU   X'02'              THE TASK OR ADDRESS SPACE HAS
*                                 TERMINATED IN MC
QWASYNCC EQU   X'01'              SYNCHRONIZATION COMPLETE
QWAGRES  DS    H                  FOR ENQ REQUESTS, THE NUMBER     @L1A
*                                 OF GLOBAL RESOURCES FOR WHICH
*                                 NO QEL WAS PUT IN QUEUE.
*                                 FOR DEQ REQUESTS, THE NUMBER OF
*                                 OF GLOBAL RESOURCES FOR WHICH
*                                 A QEL WAS REMOVED FROM QUEUE.
QWAECBA  DS    A                  ECB ADDRESS -  THIS FIELD IS
*                                 REPLACED BY QWAQWBA WHEN THE QWABASIC
*                                 SECTION MAPS TO THE SVRB EXTENDED
*                                 SAVEAREA
         ORG   QWAECBA
QWAQWBA  DS    A                  DUAL USE FIELD. THIS FIELD WILL ONLY
*                                 EXIST IN THE SVRB QWA WHEN AN ENQ/DEQ
*                                 REQUESTOR IS SUSPENDED. IF A LOCAL
*                                 RESOURCE IS BEING PROCESSED, THIS
*                                 FIELD CONTAINS ZEROES. IF A GLOBAL
*                                 RESOURCE IS BEING PROCESSED THIS
*                                 FIELD CONTAINS THE ADDRESS OF THE
*                                 FIRST QWB DEFINING THE REQUEST. THIS
*                                 ENSURES THE QWB ADDRESS IS MADE
*                                 AVAILABLE TO THE MAINLINE ESTAE
*                                 ROUTINE SHOULD AN ERROR OCCUR OVER
*                                 THE GLOBAL SUSPENSION.
QWATCBA  DS    A                  REQUESTOR-S (OR DIRECTED) TCB ADDRESS
QWASVRBA DS    A                  SVRB ADDRESS FOR THIS REQUEST
QWAQXB   DS    A                  ADDRESS OF QXB
*
*     END OF RSA SECTION
*
QWAFLAG3 DS    B                  REQUEST PROCESSING FLAGS - THESE
*                                 FLAGS ARE NOT TRANSPOSED TO THE QWB
QWACMS   EQU   X'80'              CMS LOCK HELD
QWAFRR   EQU   X'40'              FRR ESTABLISHED
QWAREQLL EQU   X'20'              REQUESTOR-S LOCAL LOCK
QWAGRSLL EQU   X'10'              GRS LOCAL LOCK
QWA3RSV4 EQU   X'08'              RESERVED
QWA3RSV3 EQU   X'04'              RESERVED
QWA3RSV2 EQU   X'02'              RESERVED
QWA3RSV1 EQU   X'01'              RESERVED
QWAFLAG4 DS    B                  REQUEST PROCESSING FLAGS - THESE
*                                 FLAGS ARE NOT TRANSPOSED TO THE
*                                 QWB
QWABADML EQU   X'80'              BAD MINOR LENGTH SPECIFIED
QWADMGE  EQU   X'40'              TRIGGERS Q-DAMAGE MESSAGE
QWAWAITN EQU   X'20'              WAITING QEL FOUND (NOT ECB)
QWA1DEQ  EQU   X'10'              AT LEAST 1 QEL DEQUEUED
QWA4RSV1 EQU   X'08'              RESERVED                     @ZMB0676
QWAWAIT  EQU   X'04'              WAIT WITHIN ENQ/DEQ
QWAMVCP  EQU   X'02'              ISSUE MVCP - EITHER USER IS NOT
*                                 AUTHORIZED OR THE INPUT PEL COULD
*                                 NOT BE CONTAINED IN THE SQA QWB
QWANOENQ EQU   X'01'              TURN OFF ALL ENQ-S
QWAFLAG5 DS    B                  REQUEST PROCESSING FLAGS - THESE
*                                 FLAGS ARE NOT TRANSPOSED TO THE
*                                 QWB
QWAGLBLQ EQU   X'80'              THE GLOBAL ASCB QEL QUEUE IS BEING
*                                 SEARCHED
QWARMFP  EQU   X'40'              RMF HAS BEEN CALLED
QWAHOLD  EQU   X'20'              ISSUE ENQHOLD SYSEVENT
QWAQXBO  EQU   X'10'              QXB OBTAINED
QWACSYID EQU   X'08'              REQUEST WAS INITIATED FROM THE
*                                 CURRENT SYSTEM
QWAPHLDR EQU   X'04'              QSCAN PLACE-HOLDER QCB IS BEING
*                                 PURGED
QWA5RSV1 EQU   X'02'              RESERVED
QWAGBLRS EQU   X'01'              TASK OWNS GLOBAL RESOURCES       @L1A
QWAFLAG6 DS    B                  QWA STATUS FLAGS                 @L1A
QWAR15SW EQU   X'80'              NON-ZERO RETURN CODE PRESENT     @L1A
QWA6ARV7 EQU   X'40'              RESERVED                         @L1A
QWA6ARV6 EQU   X'20'              RESERVED                         @L1A
QWA6ARV5 EQU   X'10'              RESERVED                         @L1A
QWA6ARV4 EQU   X'08'              RESERVED                         @L1A
QWA6ARV3 EQU   X'04'              RESERVED                         @L1A
QWA6ARV2 EQU   X'02'              RESERVED                         @L1A
QWA6ARV1 EQU   X'01'              RESERVED                         @L1A
QWAEND1  EQU   *                  END BASIC SECTION
*
*   NOTE THAT THE FOLLOWING FIELDS ARE NOT INCLUDED IN THE SVRB QWA
*
QWARDA   DS    CL140              REQUEST DATA AREA            @ZMB0308
         ORG   QWARDA
QWARSA2  DS    CL16               SECOND REQUEST SAVE AREA (MOVED TO
*                                 THE QWB)
         ORG   QWARSA2
QWAJOBNM DS    CL8                JOBNAME/USERID OF REQUESTOR
QWAORIGN DS    F                  ORIGIN OF REQUESTOR
         ORG   QWAORIGN
QWASYSID DS    H                  SYSID OF REQUESTOR
QWAASID  DS    H                  ASID OF REQUESTOR
QWAASCB  DS    A                  IF ENQ/DEQ/RESERVE, ADDRESS OF
*                                 REQUESTOR-S ASCB. IF PURGE REQUEST,
*                                 ADDRESS OF TARGET ASCB.
QWALOCLR DS    F                  COUNT OF LOCAL RESOURCES REQUESTED
QWAGLBLR DS    F                  COUNT OF GLOBAL RESOURCES REQUESTED
QWAQWBS  DS    F                  COUNT OF QWB-S REQUIRED TO CONTAIN
*                                 A GLOBAL RESOURCE REQUEST.
QWAFREEC DS    F                  COUNT OF QCB/QEL/QXB-S TO BE FREED
QWACPELR DS    F                  COUNT OF PEL ENTRIES REMAINING TO
*                                 BE MOVED TO THE PRIVATE AREA QWB(S)
QWAPRMSZ DS    F                  TOTAL SIZE OF INPUT PEL
QWANMESZ DS    F                  TOTAL SIZE OF QNAME/RNAME-S IN PEL
QWAQWBSZ DS    H                  AVAILABLE BYTES IN A PRIVATE AREA
*                                 QWB
QWACSYS  DS    H                  CURRENT SYSID (0 FOR A LOCAL RESOURCE
*                                 REQUEST)
QWAQWBHS DS    A                  ADDRESS OF THE QWB HEADER AND SMPL.
*                                 IF A LOCAL RESOURCE IS BEING
*                                 PROCESSED, CONTAINS THE ADDRESS
*                                 OF THE SQA QWB. IF A GLOBAL RESOURCE
*                                 IS BEING PROCESSED, CONTAINS
*                                 THE ADDRESS OF A PRIVATE AREA QWB.
QWAQWBF  DS    A                  ADDRESS OF FIRST QWB ON THE
*                                 REQUEST HOLD QUEUE
QWAQWBL  DS    A                  ADDRESS OF LAST QWB ON THE AVAILABLE
*                                 HOLD QUEUE
QWAFQEL  DS    A                  ADDRESS OF FIRST INITIALIZED QEL
*                                 FOR THE CURRENT REQUEST
QWACOQWB DS    A                  CURRENT OUTPUT QWB ADDRESS - I.E. THE
*                                 PRIVATE AREA QWB(S) TO CONTAIN THE
*                                 GLOBAL RESOURCE(S).
QWACIQWB DS    A                  CURRENT INPUT QWB ADDRESS, I.E., THE
*                                 SQA QWB OR SQA QWB EXTENSIONS.
QWANSLOT DS    A                  NEXT QWB SLOT
QWAHASH  DS    A                  HASH TABLE SLOT OF INPUT RESOURCE
*                                 NAME
QWAFQWB  DS    A                  ADDRESS OF FIRST QWB DEFINING THE
*                                 GLOBAL REQUEST
QWAPPELE DS    A                  PREVIOUS PEL ENTRY
QWAGSA   DS    A                  ADDRESS OF LOCAL OR GLOBAL GSA
QWADPL   DS    CL20               DEQ PURGE LIST
QWARMFPL DS    CL12               RMF PARAMETER LIST           @ZMB0308
QWARSVD1 DS    CL16               RESERVED
QWAEND2  EQU   *                  END OF AREA CLEARED
QWAWORK1 DS    F                  GENERAL PURPOSE WORKAREA     @ZMB0308
*
*  SAVEAREAS FOLLOW. NOTE THE FOLLOWING PROTOCOL FOR USE OF THESE
*  SAVEAREAS. SAVEAREAS 1-3 CAN BE USED BY ANY ROUTINE WITH CORRECT
*  SERIALIZATION BUT CANNOT BE USED BETWEEN MODULES. SAVEAREA 4 IS
*  USED BY ISGGRP00 TO INTERFACE WITH ISGGNQDQ AND BY ISGGTRM1 TO
*  INTERFACE WITH ISGGNQDQ AND ISGGDEQP. SAVEAREA 5 IS USED BY
*  ISGGDEQP TO INTERFACE WITH ISGGNQDQ.
*
QWASAVE1 DS    18F                SAVE AREA 1 - LEVEL 1 S.A.
QWASAVE2 DS    18F                SAVE AREA 2 - LEVEL 2 S.A.
QWASAVE3 DS    18F                SAVE AREA 3 - LEVEL 3 S.A.
QWASAVE4 DS    18F                SAVE AREA 4 - USED ONLY BY ISGGRP00
*                                 AND ISGGTRM0/1
QWASAVE5 DS    18F                SAVEAREA 5 - USED ONLY BY ISGGDEQP
QWAS1R14 DS    A                  REGISTER 14 SUBROUTINE SAVEAREA 1
QWAS2R14 DS    A                  REGISTER 14 SUBROUTINE SAVEAREA 2
QWAS3R14 DS    A                  REGISTER 14 SUBROUTINE SAVEAREA 3
QWAS4R14 DS    A                  REGISTER 14 SUBROUTINE SAVEAREA 4
QWAE1R13 DS    A                  REGISTER 13 ENTRY POINT SAVEAREA 1
QWAGRP13 DS    A                  SAVEAREA TO CONTAIN THE SAVEAREA
*                                 ADDRESS  PROVIDED BY THE ATTACH OF
*                                 GRP.
QWATRMRM DS    CL52               ENQ/DEQ TERMINATION RESOURCE
*                                 MANAGER WORK AREA.
         ORG   QWATRMRM
QWASTPNM DS    CL8                STEPNAME OF TERMINATING TASK
QWARMFLG DS    B                  RESOURCE MANAGER FLAGS
QWAJSTEP EQU   X'80'              WHEN 1, JOBSTEP IS TERMINATING
QWARMRV7 EQU   X'40'              RESERVED
QWARMRV6 EQU   X'20'              RESERVED
QWARMRV5 EQU   X'10'              RESERVED
QWARMRV4 EQU   X'08'              RESERVED
QWARMRV3 EQU   X'04'              RESERVED
QWARMRV2 EQU   X'02'              RESERVED
QWARMRV1 EQU   X'01'              RESERVED
QWARMR01 DS    CL3                RESERVED
QWACCODE DS    CL4                COMPLETION CODE
         ORG   QWACCODE
QWACOMPC DS    CL3                SYSTEM COMPLETION CODE IS FIRST 12
*                                 BITS.
*                                 USER COMPLETION CODE IS LAST 12 BITS.
QWACCRV1 DS    CL1                RESERVED
QWARB    DS    A                  CURRENT RB
QWARUBTM DS    CL32               REGISTER UPDATE BLOCK FOR ISGGTRM1
*                                 RECOVERY
QWAEND3  DS    0D                 END QWA
         MEND
*                                                                    */
*%PLSQWA1: ;
* DCL 1 QWA BASED(QWAPTR) BDY(DWORD), /* QUEUE WORK AREA             */
*       3 QWAID    CHAR(4) BDY(DWORD), /* CONTROL BLOCK IDENTIFIER   */
*       3 QWABASIC CHAR(48) BDY(WORD), /* QWA BASIC SECTION - THIS IS
*                                      THE ONLY  SECTION THAT CAN MAP
*                                      TO THE RB EXTENDED SAVEAREA
*                                      OR THE RMPL WORK AREA         */
*         5 QWAPELA  PTR(31),       /* INPUT PEL ADDRESS             */
*         5 QWAKEY   FIXED(8),      /* REQUESTOR-S KEY               */
*         5 QWARETRY FIXED(8),      /* ID FOR RETRY ADDRESS          */
*         5 QWARSVD3 CHAR(2),       /* RESERVED                      */
*         5 QWAPT1   PTR(31),       /* PT OPERAND 1                  */
*         5 QWAPT2   PTR(31),       /* PT OPERAND 2                  */
*         5 QWARSA CHAR(28) BDY(WORD), /* REQUEST SAVE AREA - THIS AREA
*                                      IS MOVED TO THE QWBHRSA WHEN A
*                                      GLOBAL RESOURCE IS REQUESTED  */
*           7 QWAMRBQ  PTR(31),     /* POINTER TO FIRST MESSAGE IN
*                                      MRB QUEUE                     */
*           7 QWAERR   FIXED(8),    /* FIRST DIGIT OF ABEND CODE     */
*           7 QWARSVD4 CHAR(1),     /* RESERVED                      */
*           7 QWAPFLGS FIXED(16),   /* SAVED PEL FLAGS               */
*             9 QWAPLAST FIXED(8),  /* SAVED PELLAST FLAG BYTE       */
*               11 QWAEOL BIT(1),   /* PELEOL                @ZMB0308*/
*               11 QWAIGNOR BIT(1), /* PELIGNOR              @ZMB0308*/
*               11 QWARES1  BIT(1), /* PELRES1               @ZMB0308*/
*               11 QWASHR   BIT(1), /* PELSHR                @ZMB0308*/
*               11 QWASAVE  BIT(1), /* PELSAVE               @ZMB0308*/
*               11 QWAGEN1  BIT(1), /* PELGEN1               @ZMB0308*/
*               11 QWAGEN2  BIT(1), /* PELGEN2               @ZMB0308*/
*               11 QWATCBF  BIT(1), /* PELTCBF               @ZMB0308*/
*             9 QWAPFLAG FIXED(8),  /* SAVED PELFLAG FLAG BYTE       */
*               11 QWASHARE BIT(1), /* PELSHARE              @ZMB0308*/
*               11 QWASCPE1 BIT(1), /* PELSCPE1              @ZMB0308*/
*               11 QWASYSMC BIT(1), /* PELSYSMC              @ZMB0308*/
*               11 QWASTPMC BIT(1), /* PELSTPMC              @ZMB0308*/
*               11 QWASCPE2 BIT(1), /* PELSCPE2              @ZMB0308*/
*               11 QWARET1  BIT(1), /* PELRET1               @ZMB0308*/
*               11 QWARET2  BIT(1), /* PELRET2               @ZMB0308*/
*               11 QWARET3  BIT(1), /* PELRET3               @ZMB0308*/
*           7 QWAFLAG1 BIT(8),      /* QWA PROCESS FLAGS             */
*/*                                                                  */
*/* THE FOLLOWING FLAGS ARE INITIALIZED IN THE QWA BY THE            */
*/* ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE REQUEST */
*/* IS PROCESSED BY THE GRP, THE DATA IS MOVED TO THE QWB HEADER     */
*/* (QWBHFLG1). WHEN THE ENQ/DEQ/RESERVE SVRB IS POST'D, THE         */
*/* INFORMATION IS MOVED BACK TO THE QWA. THEREFORE THE BIT          */
*/* DEFINITIONS OF QWBHFLG1 MUST MATCH THE BIT DEFINITION OF         */
*/* QWAFLAG1.                                                        */
*/*                                                                  */
*             9 QWASTLC  BIT(1),    /* STEAL PROCESSING IS NOW
*                                      COMPLETE, I.E., STEAL QWB(S)
*                                      HAVE BEEN PLACED ON THE
*                                      REQUEST QUEUE IF NECESSARY    */
*             9 QWASMC   BIT(1),    /* INDICATES SET SMC STATUS      */
*             9 QWARMC   BIT(1),    /* INDICATES RESET SMC STATUS    */
*             9 QWASPOST BIT(1),    /* INDICATES SPOST IS NECESSARY  */
*             9 QWAINT   BIT(1),    /* INDICATES AN INTERNALLY
*                                      GENERATED REQUEST             */
*             9 QWALNGWT BIT(1),    /* A LONG-WAIT IS NECESSARY      */
*             9 QWAPC    BIT(1),    /* PC HAS BEEN ISSUED            */
*             9 QWAPURG  BIT(1),    /* INDICATE ISGGDEQP HAS PURGED
*                                      THE QWB THAT WAS MAPPED TO
*                                      THIS QWA                      */
*           7 QWAFLAG2  BIT(8),     /* QWA STATUS FLAGS              */
*/*                                                                  */
*/* THE FOLLOWING FLAGS ARE INITIALIZED IN THE QWA BY THE            */
*/* ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE IS      */
*/* REQUESTED, MAINLINE FRONT-END PROCESSING WILL MOVE THIS FLAG     */
*/* BYTE TO QWBHFLG2. THEREFORE THE BIT DEFINITIONS OF QWAFLAG2      */
*/* MUST MATCH THE BIT DEFINITIONS OF QWBHFLG2.                      */
*/*                                                                  */
*             9 QWAMIXR  BIT(1),    /* MIXED RESOURCE REQUEST        */
*             9 QWATCBFA BIT(1),    /* REQUESTING TASK WAS ABENDING
*                                      WHEN THE REQUEST WAS RECEIVED */
*             9 QWAAUTH  BIT(1),    /* REQUESTOR IS AUTHORIZED       */
*             9 QWAGLBL  BIT(1),    /* GLOBAL RESOURCES DEFINED IN
*                                      THE QWB                       */
*             9 QWAECBF  BIT(1),    /* ECB= SPECIFIED                */
*             9 QWASVC56 BIT(1),    /* ENQ/RESERVE REQUEST           */
*             9 QWAABDMC BIT(1),    /* THE TASK OR ADDRESS SPACE HAS
*                                      TERMINATED WHILE IN MUST
*                                      COMPLETE                      */
*             9 QWASYNCC BIT(1),    /* SYNCHRONIZATION COMPLETE      */
*           7 QWAGRES FIXED(16),    /* FOR ENQ REQUESTS, THE
*                                      NUMBER OF GLOBAL RESOURCES
*                                      FOR WHICH NO QEL WAS PUT IN
*                                      QUEUE. FOR DEQ REQUESTS, THE
*                                      NUMBER OF GLOBAL RESOURCES
*                                      FOR WHICH A QEL WAS REMOVED
*                                      FROM QUEUE                @L1A*/
*           7 QWAECBA  PTR(31),     /* ECB ADDRESS - THIS FIELD IS
*                                      REPLACED BY QWAQWBA WHEN THE
*                                      QWABASIC SECTION MAPS TO THE
*                                      SVRB EXTENDED SAVEAREA.       */
*             9 QWAQWBA PTR(31),    /* DUAL USE FIELD. THIS FIELD WILL
*                                      ONLY EXIST IN THE SVRB QWA
*                                      WHEN AN ENQ/DEQ REQUESTOR IS
*                                      SUSPENDED. IF A LOCAL RESOURCE
*                                      IS BEING PROCESSED, THIS FIELD
*                                      CONTAINS ZEROES. IF A GLOBAL
*                                      RESOURCE IS BEING PROCESSED THIS
*                                     FIELD CONTAINS THE ADDRESS OF THE
*                                     FIRST QWB DEFINING THE REQUEST.
*                                     THIS ENSURES THE QWB ADDRESS IS
*                                     MADE AVAILABLE TO THE MAINLINE
*                                     ESTAE ROUTINE SHOULD AN ERROR
*                                     OCCUR OVER THE GLOBAL
*                                     SUSPENSION.                    */
*           7 QWATCBA  PTR(31),     /* REQUESTOR-S (OR DIRECTED) TCB
*                                      ADDRESS                       */
*           7 QWASVRBA PTR(31),     /* SVRB ADDRESS FOR THIS REQUEST */
*           7 QWAQXB   PTR(31),     /* ADDRESS OF QXB                */
*/*                                                                  */
*/*     END OF RSA SECTION                                           */
*/*                                                                  */
*         5 QWAFLAG3 BIT(8),        /* REQUEST PROCESSING FLAGS -
*                                      THESE FLAGS ARE NOT TRANSPOSED
*                                      TO THE QWB.                   */
*           7 QWACMS   BIT(1),      /* CMS LOCK HELD                 */
*           7 QWAFRR   BIT(1),      /* FRR ESTABLISHED               */
*           7 QWAREQLL BIT(1),      /* REQUESTOR-S LOCAL LOCK        */
*           7 QWAGRSLL BIT(1),      /* GRS LOCAL LOCK                */
*           7 QWA3RSV4 BIT(1),      /* RESERVED                      */
*           7 QWA3RSV3 BIT(1),      /* RESERVED                      */
*           7 QWA3RSV2 BIT(1),      /* RESERVED                      */
*           7 QWA3RSV1 BIT(1),      /* RESERVED                      */
*         5 QWAFLAG4 BIT(8),        /* REQUEST PROCESSING FLAGS -
*                                      THESE FLAGS ARE NOT TRANSPOSED
*                                      TO THE QWB.                   */
*           7 QWABADML BIT(1),      /* BAD MINOR LENGTH SPECIFIED    */
*           7 QWADMGE  BIT(1),      /* TRIGGERS Q-DAMAGE MESSAGE     */
*           7 QWAWAITN BIT(1),      /* WAITING QEL FOUND (NOT ECB)   */
*           7 QWA1DEQ  BIT(1),      /* AT LEAST 1 QEL DEQUEUED       */
*           7 QWA4RSV1 BIT(1),      /* RESERVED              @ZMB0676*/
*           7 QWAWAIT  BIT(1),      /* WAIT WITHIN ENQ/DEQ           */
*           7 QWAMVCP  BIT(1),      /* ISSUE MVCP - EITHER USER IS NOT
*                                      AUTHORIZED OR THE INPUT PEL
*                                      COULD NOT BE CONTAINED IN THE
*                                      SQA QWB                       */
*           7 QWANOENQ BIT(1),      /* TURN OFF ALL ENQ-S            */
*         5 QWAFLAG5 BIT(8),        /* REQUEST PROCESSING FLAGS -
*                                      THESE FLAGS ARE NOT TRANSPOSED
*                                      TO THE QWB                    */
*           7 QWAGLBLQ BIT(1),      /* THE GLOBAL ASCB QEL QUEUE IS
*                                      BEING SEARCHED                */
*           7 QWARMFP  BIT(1),      /* RMF HAS BEEN CALLED           */
*           7 QWAHOLD  BIT(1),      /* ISSUE ENQHOLD SYSEVENT        */
*           7 QWAQXBO  BIT(1),      /* QXB OBTAINED                  */
*           7 QWACSYID BIT(1),      /* REQUEST WAS INITIATED FROM THE
*                                      CURRENT SYSTEM                */
*           7 QWAPHLDR BIT(1),      /* QSCAN PLACE-HOLDER QCB IS
*                                      BEING PURGED.                 */
*           7 QWA5RSV1 BIT(1),      /* RESERVED                      */
*           7 QWAGBLRS BIT(1),      /* TASK OWNS GLOBAL RESOURCES
*                                                                @L1A*/
*         5 QWAFLAG6 BIT(8),        /* QWA STATUS FLAGS          @L1A*/
*           7 QWAR15SW BIT(1),      /* NON-ZERO RETURN CODE PRESENT
*                                                                @L1A*/
*           7 QWA6ARV7 BIT(1),      /* RESERVED                  @L1A*/
*           7 QWA6ARV6 BIT(1),      /* RESERVED                  @L1A*/
*           7 QWA6ARV5 BIT(1),      /* RESERVED                  @L1A*/
*           7 QWA6ARV4 BIT(1),      /* RESERVED                  @L1A*/
*           7 QWA6ARV3 BIT(1),      /* RESERVED                  @L1A*/
*           7 QWA6ARV2 BIT(1),      /* RESERVED                  @L1A*/
*           7 QWA6ARV1 BIT(1),      /* RESERVED                  @L1A*/
*                                   /*                           @P1D*/
*         5 QWAEND1  CHAR(0),       /* END BASIC SECTION             */
*/*                                                                  */
*/*  NOTE THAT THE FOLLOWING FIELDS ARE NOT INCLUDED IN THE SVRB QWA */
*/*                                                                  */
*       3 QWARDA CHAR(140) BDY(WORD), /* QWA REQUEST DATA AREA
*                                                            @ZMB0308*/
*         5 QWARSA2 CHAR(16) BDY(WORD), /* QWA REQUEST DATA AREA     */
*           7 QWAJOBNM CHAR(8),     /* JOBNAME/USERID OF REQUESTOR   */
*           7 QWAORIGN FIXED(32),   /* ORIGIN OF REQUESTOR           */
*             9 QWASYSID FIXED(16), /* SYSID OF REQUESTOR            */
*             9 QWAASID  FIXED(16), /* ASID OF REQUESTOR             */
*           7 QWAASCB  PTR(31),     /* IF ENQ/DEQ/RESERVE, ADDRESS OF
*                                      REQUESTOR-S ASCB. IF PURGE
*                                      REQUEST, ADDRESS OF TARGET
*                                      ASCB.                         */
*         5 QWALOCLR FIXED(31),     /* COUNT OF LOCAL RESOURCES
*                                      REQUESTED                     */
*         5 QWAGLBLR FIXED(31),     /* COUNT OF GLOBAL RESOURCES
*                                      REQUESTED                     */
*         5 QWAQWBS  FIXED(31),     /* COUNT OF QWB-S REQUIRED TO
*                                      CONTAIN A GLOBAL RESOURCE
*                                      REQUEST.                      */
*         5 QWAFREEC FIXED(31),     /* COUNT OF QCB/QEL/QXB-S TO BE
*                                      FREED                         */
*         5 QWACPELR FIXED(31),     /* COUNT OF PEL ENTRIES REMAINING
*                                      TO BE MOVED TO THE PRIVATE AREA
*                                      QWB(S)                        */
*         5 QWAPRMSZ FIXED(31),     /* TOTAL SIZE OF INPUT PEL       */
*         5 QWANMESZ FIXED(31),     /* TOTAL SIZE OF QNAME/RNAME-S IN
*                                      PEL                           */
*         5 QWAQWBSZ FIXED(16),     /* AVAILABLE BYTES IN A PRIVATE
*                                      AREA QWB                      */
*         5 QWACSYS  FIXED(16),     /* CURRENT SYSID (0 FOR A LOCAL
*                                      RESOURCE REQUEST)             */
*         5 QWAQWBHS PTR(31),       /* ADDRESS OF THE QWB HEADER AND
*                                      SMPL. IF A LOCAL RESOURCE IS
*                                      BEING PROCESSED, CONTAINS THE
*                                      ADDRESS OF THE SQA QWB. IF A
*                                      GLOBAL RESOURCE IS BEING
*                                      PROCESSED, CONTAINS THE ADDRESS
*                                      OF A PRIVATE AREA QWB.        */
*         5 QWAQWBF  PTR(31),       /* ADDRESS OF FIRST QWB ON THE
*                                      REQUEST HOLD QUEUE            */
*         5 QWAQWBL  PTR(31),       /* ADDRESS OF LAST QWB ON THE
*                                      REQUEST HOLD QUEUE            */
*         5 QWAFQEL  PTR(31),       /* ADDRESS OF FIRST INITIALIZED
*                                      QEL FOR THE CURRENT REQUEST   */
*         5 QWACOQWB PTR(31),       /* CURRENT OUTPUT QWB ADDRESS,
*                                      I.E., THE PRIVATE AREA QWB(S)
*                                      TO CONTAIN THE GLOBAL
*                                      RESOURCE(S)                   */
*         5 QWACIQWB PTR(31),       /* CURRENT INPUT QWB ADDRESS,
*                                      I.E., THE SQA QWB OR SQA
*                                      QWB EXTENSION                 */
*         5 QWANSLOT PTR(31),       /* NEXT QWB SLOT                 */
*         5 QWAHASH  PTR(31),       /* HASH TABLE SLOT OF INPUT
*                                      RESOURCE NAME                 */
*         5 QWAFQWB  PTR(31),       /* ADDRESS OF FIRST QWB DEFINING
*                                      THE GLOBAL REQUEST.           */
*         5 QWAPPELE PTR(31),       /* PREVIOUS PEL ENTRY            */
*         5 QWAGSA   PTR(31),       /* ADDRESS OF LOCAL OR GLOBAL GSA*/
*         5 QWADPL CHAR(20),        /* DEQ PURGE LIST                */
*         5 QWARMFPL CHAR(12),      /* RMF PARAMETER LIST    @ZMB0308*/
*         5 QWARSVD1 CHAR(16),      /* RESERVED                      */
*         5 QWAEND2  CHAR(0),       /* END OF AREA CLEARED           */
*       3 QWAWORK1 FIXED(31),       /* GENERAL PURPOSE WORKAREA
*                                                            @ZMB0308*/
*/*                                                                  */
*/* SAVEAREAS FOLLOW. NOTE THE FOLLOWING PROTOCOL FOR USE OF THESE   */
*/* SAVEAREAS. SAVEAREAS 1-3 CAN BE USED BY ANY ROUTINE WITH CORRECT */
*/* SERIALIZATION BUT CANNOT BE USED BETWEEN MODULES. SAVEAREA 4 IS  */
*/* USED BY ISGGRP00 TO INTERFACE WITH ISGGNQDQ AND BY ISGGTRM1 TO   */
*/* INTERFACE WITH ISGGNQDQ AND ISGGDEQP. SAVEAREA 5 IS USED BY      */
*/* ISGGDEQP TO INTERFACE WITH ISGGNQDQ.                             */
*/*                                                                  */
*       3 QWASAVE1 CHAR(72),        /* SAVEAREA 1 - LEVEL 1 S.A.     */
*       3 QWASAVE2 CHAR(72),        /* SAVEAREA 2 - LEVEL 2 S.A.     */
*       3 QWASAVE3 CHAR(72),        /* SAVEAREA 3 - LEVEL 3 S.A.     */
*       3 QWASAVE4 CHAR(72),        /* SAVEAREA 4 - USED ONLY BY
*                                      ISGGRP00 AND ISGGTRM0/1       */
*       3 QWASAVE5 CHAR(72),        /* SAVEAREA 4 - USED ONLY BY
*                                      ISGGDEQP                      */
*       3 QWAS1R14 PTR(31),         /* REG 14 SUBROUTINE SAVEAREA 1  */
*       3 QWAS2R14 PTR(31),         /* REG 14 SUBROUTINE SAVEAREA 2  */
*       3 QWAS3R14 PTR(31),         /* REG 14 SUBROUTINE SAVEAREA 3  */
*       3 QWAS4R14 PTR(31),         /* REG 14 SUBROUTINE SAVEAREA 4  */
*       3 QWAE1R13 PTR(31),         /* REG 13 ENTRY POINT SAVEAREA 1 */
*       3 QWAGRP13 PTR(31),         /* SAVEAREA TO CONTAIN THE
*                                      SAVEAREA ADDRESS PROVIDED BY
*                                      THE ATTACH OF GRP.            */
*       3 QWATRMRM CHAR(52) BDY(WORD), /* ENQ/DEQ TERMINATION RESOURCE
*                                      MANAGER WORK AREA.            */
*         5 QWASTPNM CHAR(8),       /* STEPNAME OF TERMINATING TASK  */
*         5 QWARMFLG BIT(8),        /* RESOURCE MANAGER FLAGS        */
*           7 QWAJSTEP BIT(1),      /* WHEN 1, JOBSTEP IS TERMINATING*/
*           7 QWARMRV7 BIT(1),      /* RESERVED                      */
*           7 QWARMRV6 BIT(1),      /* RESERVED                      */
*           7 QWARMRV5 BIT(1),      /* RESERVED                      */
*           7 QWARMRV4 BIT(1),      /* RESERVED                      */
*           7 QWARMRV3 BIT(1),      /* RESERVED                      */
*           7 QWARMRV2 BIT(1),      /* RESERVED                      */
*           7 QWARMRV1 BIT(1),      /* RESERVED                      */
*         5 QWARMR01 CHAR(3),       /* RESERVED                      */
*         5 QWACCODE CHAR(4),       /* COMPLETION CODE               */
*           7 QWACOMPC BIT(24),     /* SYSTEM COMPLETION CODE IS
*                                      FIRST 12 BITS.
*                                      USER COMPLETION CODE IS LAST
*                                      12 BITS.                      */
*           7 QWACCRV1 BIT(8),      /* RESERVED                      */
*         5 QWARB PTR(31),          /* CURRENT RB                    */
*         5 QWARUBTM CHAR(32),      /* REGISTER UPDATE BLOCK FOR
*                                      ISGGTRM1 RECOVERY             */
*       3 QWAEND3  CHAR(0) BDY(DWORD);  /* END QWA                   */
./ ADD NAME=ISGQWB
*        %GOTO PLSQWB;                                               /*
         MACRO
         ISGQWB
**/
*%PLSQWB: ;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQWB
*
*01*  MACDATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = QUEUE WORK BLOCK
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = USED TO DESCRIBE A GRS RESOURCE REQUEST
*                (ENQ,DEQ OR RESERVE). A GLOBAL RESOURCE
*                REQUEST IS DESCRIBED BY A GRS PRIVATE AREA
*                QWB WHILE A LOCAL RESOURCE REQUEST IS
*                DESCRIBED BY THE PERMANENT SQA QWB.
*
*                THE QWB IS COMPOSED OF THE FOLLOWING SECTIONS:
*
*                  HEADER - CONTAINS COMMON INFORMATION DESCRIBING
*                           THE REQUEST.
*                  SMPL   - THE STORAGE MANAGER PARAMETER LIST
*                           REQUIRED FOR THE INTERFACE TO THE
*                           STORAGE MANAGER.
*                  QWB EXTENSION - THIS IS THE BASIC SECTION OF THE
*                           QWB. IT CONTAINS THE ADDRESS OF THE
*                           NEXT EXTENSION (IF ANY) AND DESCRIBES
*                           RESOURCE(S) AS REQUESTED IN THE INPUT
*                           PEL.
*
*01*  METHOD-OF-ACCESS = BAL - DSECT IS PRODUCED REQUIRING A
*                              USING ON THE QWB.
*                        PLS - QWB DECLARED AS A BASED STRUCTURE.
*                              QWBPTR MUST BE DECLARED.
*
*01*  CREATED-BY = GRS PRIVATE AREA QWB-S - OBTAINED BY THE ENQ/DEQ
*                            PROCESSING ROUTINES, ISGGNQDQ AND
*                            ISGGBQWB, FROM THE GRS STORAGE MANAGER.
*
*                  SQA QWB - TEMPORARY QWB OBTAINED DURING NIP BY
*                            ISGNCBIM AND RECREATED (PERMANENTLY)
*                            DURING NIP BY ISGNASIM.
*
*02*    SUBPOOL = 245 IN SQA DURING NIP.
*                 229 IN THE GRS PRIVATE AREA AFTER NIP.
*
*02*    KEY     = 0
*
*02*    SIZE    = FIXED LENGTH DEFINED AS FOLLOWS:
*                 (NOTE THAT THE SIZE OF QWBPEL IS BASED ON
*                  THE MAXIMUM PEL ENTRY SIZE.)
*                   GRS PRIVATE AREA QWB-S - 464 BYTES
*                   SQA QWB                - 4K  BYTES
*
*01*  DELETED-BY = GRS PRIVATE AREA QWB-S - RELEASED BY THE ENQ/DEQ
*                            PROCESSING ROUTINES (ISGNQDQ, ISGGRP00,
*                            ISGGTRM0, ISGGBQWB) VIA THE GRS STORAGE
*                            MANAGER.
*
*                  SQA QWB - THIS IS A PERMANENT QWB THAT IS NEVER
*                            DELETED.
*
*01*  POINTED-TO-BY = GRS PRIVATE AREA QWB - QWBHNQWB, QXBQWB
*                     SQA QWB - GVTSQWB
*
*01*  SERIALIZATION = GRS PRIVATE AREA QWB-S - CMS ENQ/DEQ CLASS LOCK.
*                     SQA QWB - CMS ENQ/DEQ CLASS LOCK.
*
*01*  CHANGE-ACTIVITY =
* $L1=GRSRAS  ,JBB1326,810424,PD1M: GRS END OF TASK                @L1A
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G381PYC*/
*        %GOTO PLSQWB1;                                              /*
QWB      DSECT
         DS    0D                 QUEUE WORK BLOCK
*
*        HEADER SECTION
*
QWBHDR   DS    CL60               QWB HEADER
         ORG   QWBHDR
QWBHNQWB DS    A                  ADDRESS OF NEXT QWB
QWBHRSA  DS    CL28               QWB REQUEST SAVE AREA - MUST MAP
*                                 TO QWARSA
         ORG   QWBHRSA
QWBHMRBQ DS    A                  POINTER TO FIRST MRB IN MESSAGE
*                                 QUEUE. USED BY THE GRP TO RETURN
*                                 PURGE MESSAGES TO REQUESTOR.
         ORG   QWBHMRBQ
QWBHNSYN DS    A                  ADDRESS OF NEXT STEAL SYNCHRONIZATION
*                                 QWB ON THE ASCB SYNC QUEUE
QWBHERR  DS    X                  FIRST DIGIT OF ABEND CODE
QWBHRSV3 DS    1C                 RESERVED
QWBHPFLG DS    H                  SAVED PEL FLAGS (QWAPLAST AND
*                                 QWAPFLAG) OR COUNT OF GLOBAL
*                                 RESOURCES REQUESTED
         ORG   QWBHPFLG
QWBHGLBR DS    H                  GLOBAL RESOURCES REQUESTED, VALID
*                                 ONLY WHEN QWBHSYNC=1.
         ORG   QWBHPFLG
QWBHPFL1 DS    B                  PELLAST FLAG BYTE
QWBHPFL2 DS    B                  PELFLAG FLAG BYTE
*
* THE FOLLOWING FLAGS ARE ACCUMULATED IN THE QWA (QWAFLAG1) BY
* THE ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE
* REQUEST IS PROCESSED FROM THE GRP QWAFLAG1 IS MOVED TO QWBHFLG1.
* THE FLAGS ARE SUBSEQUENTLY MOVED BACK TO THE QWA AFTER THE
* ENQ/DEQ/RESERVE SVRB IS POST-D BY THE GRP. THEREFORE THE BIT
* DEFINITIONS OF QWBHFLG1 MUST MATCH THE BIT DEFINITIONS OF
* QWAFLAG1.
*
QWBHFLG1 DS    B                  QWB PROCESS FLAGS
QWBHSTLC EQU   X'80'              STEAL PROCESSING IS NOW COMPLETE,
*                                 I.E., DEQ QWB(S) HAVE BEEN PLACED
*                                 ON THE REQUEST QUEUE IF NECESSARY.
QWBHSMC  EQU   X'40'              INDICATES SET STEP MUST COMPLETE
*                                 STATUS
QWBHRMC  EQU   X'20'              INDICATES RESET MUST COMPLETE STATUS
QWBHSPST EQU   X'10'              INDICATES SPOST IS NECESSARY
QWBHINT  EQU   X'08'              INDICATES AN INTERNALLY GENERATED
*                                 ENQ/DEQ/RESERVE REQUEST. THE
*                                 REQUESTOR WILL NOT BE POSTED.
QWBHLNGW EQU   X'04'              NOTIFY WAIT THIS IS LONG WAIT
QWBHPC   EQU   X'02'              PC HAS BEEN ISSUED
QWBHPURG EQU   X'01'              INDICATES ISGGDEQP HAS PURGED THIS
*                                 QWB. THIS IS NOTIFICATION TO ISGGNQDQ
*                                 THAT THE DIRECTED ENQ/DEQ REQUESTER
*                                 SHOULD BE ABEND'D.
*
* THE FOLLOWING FLAGS ARE INITIALIZED IN THE QWA (QWAFLAG2) BY
* THE ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE
* IS REQUESTED, THE FLAGS ARE MOVED TO THE QWB HEADER (QWBHFLG2).
* THEREFORE THE BIT DEFINITION OF QWAFLAG2 MUST MATCH THE BIT
* DEFINITIONS OF QWBHFLG2.
*
QWBHFLG2 DS    B                  QWB STATUS FLAG
QWBHMIXR EQU   X'80'              MIXED RESOURCE REQUEST
QWBHFA   EQU   X'40'              REQUESTING TASK WAS ABENDING WHEN
*                                 THE REQUEST WAS RECEIVED
QWBHAUTH EQU   X'20'              REQUESTOR IS AUTHORIZED
QWBHGLBL EQU   X'10'              GLOBAL RESOURCES DEFINED IN THIS
*                                 QWB
QWBHECBF EQU   X'08'              ECB SPECIFIED
QWAHSV56 EQU   X'04'              ENQ/RESERVE REQUEST
QWBHABMC EQU   X'02'              THE TASK OR ADDRESS SPACE HAS
*                                 TERMINATED IN MC - CHAIN MRB TO
*                                 QWAMRBQ.
QWBHSYCC EQU   X'01'              SYNCHRONIZATION COMPLETE
QWBHGRES DS    H                  FOR ENQ REQUESTS, THE NUMBER     @L1A
*                                 OF GLOBAL RESOURCES FOR WHICH
*                                 NO QEL HAS BEEN PLACED IN QUEUE.
*                                 FOR DEQ REQUEST, THE NUMBER OF
*                                 GLOBAL RESOURCES FOR WHICH A QEL HAS
*                                 BEEN REMOVED FROM QUEUE
QWBHECB  DS    A                  ADDRESS OF INPUT ECB
QWBHTCB  DS    A                  ADDRESS OF REQUESTOR-S (OR DIRECTED)
*                                 TCB
QWBHRB   DS    A                  ADDRESS OF WAITING RB
QWBHQXB  DS    A                  CONTAINS THE ADDRESS OF
*                                 A LOCAL QXB WHEN A MIXED RESOURCE
*                                 REQUEST IS PRESENT (SAVED BY
*                                 MAINLINE ENQ PRIOR TO SUSPENSION)
*                                 OR CONTAINS THE ADDRESS OF A
*                                 GLOBAL QXB WHEN ALL GLOBALS ARE
*                                 PRESENT (SAVED BY THE GRP). @ZMB0300
*
* THE FOLLOWING FLAGS ARE USED BY THE GRP TO ROUTE CONTROL TO
* THE APPROPRIATE GLOBAL PROCESSING ROUTINE.
*
QWBHFLG3 DS    B                  QWB REQUEST FLAGS
QWBHENQ  EQU   X'80'              ENQ/RESERVE REQUEST
QWBHDEQ  EQU   X'40'              DEQ REQUEST
QWBHDTCB EQU   X'20'              DEQ BY TCB
QWBHDAS  EQU   X'10'              DEQ BY ASID
QWBHDSYS EQU   X'08'              DEQ BY SYSID
QWBHSYNC EQU   X'04'              SYNCHRONIZATION REQUEST
QWBH3R02 EQU   X'02'              RESERVED
QWBH3R01 EQU   X'01'              RESERVED
QWBHRSV1 DS    CL3                RESERVED
QWBHSTL  DS    A                  ADDRESS OF THE REQUEST QWB(S).
*                                 VALID ONLY WHEN QWBHSYNC=1 AND/OR
*                                 QWBHMIXR=1 AND QWBHFA=1
*
         ORG   QWBHSTL
QWBHTCBA DS    A                  DEQ ARGUMENT TCB - VALID ONLY IF THIS
*                                 IS A TCB DEQ QWB
QWBHTRGT DS    F                  DEQ PURGE TARGET
         ORG   QWBHTRGT
QWBHDASY DS    H                  DEQ ARGUMENT SYSID - VALID ONLY
*                                 IF THIS IS A SYSID, ASID OR TCB
*                                 DEQ QWB
QWBHDAAS DS    H                  DEQ ARGUMENT ASID - VALID ONLY
*                                 IF THIS IS AN ASID OR TCB DEQ QWB.
QWBHRSA2 DS    CL16               SECOND REQUEST SAVE AREA
         ORG   QWBHRSA2
QWBHJBNM DS    CL8                JOBNAME/USERID OF REQUESTOR
QWBHORIG DS    F
         ORG   QWBHORIG           ORIGIN (SYSID/ASID) OF REQUESTOR
QWBHSYID DS    H                  SYSID OF REQUESTOR
QWBHASID DS    H                  ASID OF REQUESTOR
QWBHASCB DS    A                  IF ENQ/DEQ/RESERVE ASCB ADDRESS OF
*                                 REQUESTOR.
*                                 IF PURGE REQUEST, ASCB ADDRESS OF
*                                 TARGET ASCB. VALID ONLY ON
*                                 ORIGINATING SYSTEM.
*
*        SMPL SECTION
*
QWBSMPL  DS    6CL16              DEFINES THE STORAGE TO SUPPORT THE
*                                 QWB, QXB, QEL AND THE 3 QCB SIZES
*                                 AS SMPL ENTRIES. NOTE IF QWBHMIXR=1
*                                 AND QWBHFA=1, THE SMPL CONTAINS
*                                 ENTRIES FOR LOCAL AND GLOBAL CONTROL
*                                 BLOCKS (THIS AREA IS EXPANDED BY
*                                 ISGGNQDQ)
         ORG   QWBSMPL
QWBSQWB  DS    CL16               SMPL QWB ENTRY
QWBSQXB  DS    CL16               SMPL QXB ENTRY
QWBSQEL  DS    CL16               SMPL QEL ENTRY
QWBSQCB1 DS    CL16               SMPL QCB SIZE1 ENTRY
QWBSQCB2 DS    CL16               SMPL QCB SIZE2 ENTRY
QWBSQCB3 DS    CL16               SMPL QCB SIZE3 ENTRY
QWBSMPLN EQU   X'06'              NUMBER OF SMPL ENTRIES IN THE QWB
*
*        BASIC SECTION
*
QWBBASIC DS    308C               QWB BASIC SECTION - COMMON TO BOTH
*                                 A QWB AND A QWB EXTENSION. IF
*                                 DEFINED AS A QWB EXTENSION, THIS
*                                 AREA MAPS TO THE BEGINNING OF THE
*                                 QWB (I.E., QWBHDR - THE HEADER
*                                 AND SMPL DO NOT EXIST IN A QWB
*                                 EXTENSION).                  @ZMB0308
         ORG   QWBBASIC
QWBEXTA  DS    A                  ADDRESS OF QWB EXTENSION (I.E., NEXT
*                                 BASIC SECTION DESCRIBING THIS
*                                 REQUEST)
QWBPEL   DS    300C               MAXIMUM  LENGTH OF A PEL ENTRY THAT
*                                 CAN BE MAPPED TO A QWB. NOTE THAT THE
*                                 PEL PREFIX IS NOT INCLUDED IN THIS
*                                 FIELD.                       @ZMB0308
QWBBRSV1 DS    CL4                RESERVED
QWBEND   DS    0D                 END OF QWB
         MEND
*                                                                    */
*%PLSQWB1: ;
* DCL 1 QWB BASED(QWBPTR) BDY(DWORD), /* QUEUE WORK BLOCK            */
*       3 QWBHDR CHAR(60) BDY(DWORD), /* QWB HEADER                  */
*         5 QWBHNQWB PTR(31),        /* ADDRESS OF NEXT QWB          */
*         5 QWBHRSA  CHAR(28) BDY(WORD),  /* QWB REQUEST SAVE AREA -
*                                            THIS AREA MAPS TO THE
*                                            QWARSA                  */
*           7 QWBHMRBQ PTR(31),      /* POINTER TO FIRST MRB IN
*                                       MESSAGE QUEUE. USED BY THE
*                                       GRP TO RETURN PURGE MESSAGES
*                                       TO REQUESTOR.                */
*             9 QWBHNSYN PTR(31),    /* ADDRESS OF NEXT STEAL
*                                       SYNCHRONIZATION QWB ON THE
*                                       ASCB SYNC QUEUE              */
*           7 QWBHERR  FIXED(8),     /* FIRST DIGIT OF ABEND CODE    */
*           7 QWBHRSV3 CHAR(1),      /* RESERVED                     */
*           7 QWBHPFLG FIXED(16),    /* SAVED PEL FLAGS (QWAPLAST
*                                       AND QWAPFLAG) OR COUNT OF
*                                       GLOBAL RESOURCES REQUESTED.  */
*             9 QWBHGLBR FIXED(16),  /* COUNT OF GLOBAL RESOURCES
*                                       REQUESTED. VALID ONLY WHEN
*                                       QWBHSYNC=1.                  */
*               11 QWBHPFL1 FIXED(8), /* PELLAST FLAG BYTE           */
*               11 QWBHPFL2 FIXED(8), /* PELFLAG FLAG BYTE           */
*/*                                                                  */
*/* THE FOLLOWING FLAGS ARE ACCUMULATED IN THE QWA (QWAFLAG1) BY     */
*/* THE ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE     */
*/* REQUEST IS PROCESSED FROM THE GRP  QWAFLAG1 IS MOVED TO          */
*/* QWBHFLG1. THE FLAGS ARE SUBSEQUENTLY MOVED BACK TO THE QWA       */
*/* AFTER THE ENQ/DEQ/RESERVE SVRB IS POST'D BY THE GRP. THEREFORE   */
*/* THE BIT DEFINITIONS OF QWBHFLG1 MUST MATCH THE BIT DEFINITIONS   */
*/* OF QWAFLAG1                                                      */
*/*                                                                  */
*           7 QWBHFLG1 BIT(8),       /* QWB PROCESS FLAGS            */
*             9 QWBHSTLC BIT(1),     /* STEAL PROCESSING IS NOW
*                                       COMPLETE, I.E., DEQ QWB(S)
*                                       HAVE BEEN PLACED ON THE REQUEST
*                                       QUEUE IF NECESSARY           */
*             9 QWBHSMC  BIT(1),     /* INDICATES SET STEP MUST
*                                       COMPLETE STATUS              */
*             9 QWBHRMC  BIT(1),     /* INDICATES RESET MUST COMPLETE
*                                       STATUS                       */
*             9 QWBHSPST BIT(1),     /* INDICATES SPOST IS NECESSARY */
*             9 QWBHINT  BIT(1),     /* INDICATES AN INTERNALLY
*                                       GENERATED ENQ/DEQ/RESERVE
*                                       REQUEST. THE REQUESTOR WILL
*                                       NOT BE POSTED.               */
*             9 QWBHLNGW BIT(1),     /* NOTIFY WAIT THIS IS LONG WAIT*/
*             9 QWBHPC   BIT(1),     /* PC HAS BEEN ISSUED           */
*             9 QWBHPURG BIT(1),     /* INDICATES ISGGDEQP HAS PURGED
*                                       THIS QWB. THIS IS NOTIFICATION
*                                       TO ISGGNQDQ THAT THE DIRECTED
*                                       ENQ/DEQ REQUESTOR SHOULD BE
*                                       ABEND'D.                     */
*/*                                                                  */
*/* THE FOLLOWING FLAGS ARE INITIALIZED IN THE QWA (QWAFLAG2) BY     */
*/* THE ENQ/DEQ/RESERVE MAINLINE ROUTINE. WHEN A GLOBAL RESOURCE     */
*/* IS REQUESTED, THE FLAGS ARE MOVED TO THE QWB HEADER (QWBHFLG2).  */
*/* THEREFORE THE BIT DEFINITIONS OF QWAFLAG2 MUST MATCH THE BIT     */
*/* DEFINITIONS OF QWBHFLG2.                                         */
*/*                                                                  */
*           7 QWBHFLG2  BIT(8),      /* QWB STATUS FLAGS             */
*             9 QWBHMIXR BIT(1),     /* MIXED RESOURCE REQUEST       */
*             9 QWBHFA   BIT(1),     /* REQUESTING TASK WAS ABENDING
*                                       WHEN THE REQUEST WAS RECEIVED*/
*             9 QWBHAUTH BIT(1),     /* REQUESTOR IS AUTHORIZED      */
*             9 QWBHGLBL BIT(1),     /* GLOBAL RESOURCES DEFINED IN
*                                       THIS QWB                     */
*             9 QWBHECBF BIT(1),     /* ECB SPECIFIED                */
*             9 QWBHSV56 BIT(1),     /* ENQ/RESERVE REQUEST          */
*             9 QWBHABMC BIT(1),     /* THE TASK OR ADDRESS SPACE
*                                       TERMINATED IN MC - CHAIN MRB
*                                       TO QWAMRBQ.                  */
*             9 QWBHSYCC BIT(1),     /* SYNCHRONIZATION COMPLETE     */
*          7 QWBHGRES FIXED(16),     /* FOR ENQ REQUESTS, THE
*                                       NUMBER OF GLOBAL RESOURCES
*                                       FOR WHICH NO QEL HAS BEEN
*                                       PLACED IN QUEUE. FOR DEQ
*                                       REQUEST, THE NUMBER OF GLOBAL
*                                       RESOURCES FOR WHICH A QEL HAS
*                                       BEEN REMOVED FROM QUEUE  @L1A*/
*           7 QWBHECBA PTR(31),      /* ADDRESS OF INPUT ECB         */
*           7 QWBHTCB  PTR(31),      /* ADDRESS OF REQUESTOR-S (OR
*                                       DIRECTED) TCB                */
*           7 QWBHRB   PTR(31),      /* ADDRESS OF WAITING RB        */
*           7 QWBHQXB  PTR(31),      /* CONTAINS THE ADDRESS OF
*                                       A LOCAL QXB WHEN A MIXED
*                                       RESOURCE REQUEST IS PRESENT
*                                       (SAVED BY MAINLINE ENQ PRIOR
*                                       TO SUSPENSION) OR CONTAINS
*                                       THE ADDRESS OF A GLOBAL QXB
*                                       WHEN ALL GLOBALS ARE PRESENT
*                                       (SAVED BY THE GRP).          */
*/*                                                                  */
*/* THE FOLLOWING FLAGS ARE USED BY THE GRP TO ROUTE CONTROL         */
*/* TO THE APPROPRIATE GLOBAL PROCESSING ROUTINE.                    */
*/*                                                                  */
*         5 QWBHFLG3 BIT(8),         /* QWB REQUEST FLAGS            */
*           7 QWBHENQ  BIT(1),       /* ENQ/RESERVE REQUEST          */
*           7 QWBHDEQ  BIT(1),       /* DEQ REQUEST                  */
*           7 QWBHDTCB BIT(1),       /* DEQ BY TCB                   */
*           7 QWBHDAS  BIT(1),       /* DEQ BY ASID                  */
*           7 QWBHDSYS BIT(1),       /* DEQ BY SYSID                 */
*           7 QWBHSYNC BIT(1),       /* SYNCHRONIZATION REQUEST      */
*           7 QWBH3R02 BIT(1),       /* RESERVED                     */
*           7 QWBH3R01 BIT(1),       /* RESERVED                     */
*         5 QWBHRSV1 CHAR(3),        /* RESERVED                     */
*         5 QWBHSTL  PTR(31),        /* ADDRESS OF THE REQUEST QWB(S)
*                                       VALID ONLY WHEN QWBHSYNC=1
*                                       AND/OR QWBHMIXR=1 AND
*                                       QWBHFA=1.                    */
*           7 QWBHTCBA PTR(31),      /* DEQ ARGUMENT TCB - VALID ONLY
*                                       IF THIS IS A TCB DEQ QWB.    */
*         5 QWBHTRGT FIXED(32),      /* DEQ PURGE TARGET             */
*           7 QWBHDASY FIXED(16),    /* DEQ ARGUMENT SYSID - VALID
*                                       ONLY IF THIS IS A SYSID,
*                                       ASID OR TCB DEQ QWB          */
*           7 QWBHDAAS FIXED(16),    /* DEQ ARGUMENT ASID - VALID ONLY
*                                       IF THIS IS AN ASID OR TCB DEQ
*                                       QWB.                         */
*         5 QWBHRSA2 CHAR(16) BDY(WORD), /* SECOND REQUEST SAVE AREA */
*           7 QWBHJBNM CHAR(8) BDY(WORD), /* JOBNAME/USERID OF
*                                          REQUESTOR                 */
*           7 QWBHORIG FIXED(32),       /* ORIGIN OF REQUESTOR       */
*             9 QWBHSYID FIXED(16),     /* SYSID OF REQUESTOR        */
*             9 QWBHASID FIXED(16),     /* ASID OF REQUESTOR         */
*           7 QWBHASCB PTR(31),         /* IF ENQ/DEQ/RESERVE, ASCB
*                                          ADDRESS OF REQUESTOR. IF
*                                          PURGE REQUEST, ASCB ADDRESS
*                                          OF TARGET ASCB. VALID ONLY
*                                          ON THE ORIGNATING SYSTEM. */
*/*                                                                  */
*/*     SMPL SECTION                                                 */
*/*                                                                  */
*       3 QWBSMPL BDY(WORD),         /* DEFINES THE STORAGE
*                                       REQUIRED TO SUPPORT THE QWB,
*                                       QXB, QEL AND THE 3 QCB SIZES
*                                       AS SMPL ENTRIES. NOTE IF
*                                       QWBHMIXR=1 AND QWBHFA=1, THE
*                                       SMPL CONTAINS ENTRIES FOR
*                                       LOCAL AND GLOBAL CONTROL
*                                       BLOCKS (THIS AREA IS EXPANDED
*                                       BY ISGGNQDQ).                */
*         5 QWBSQWB  CHAR(16) BDY(WORD), /* SMPL QWB ENTRY           */
*         5 QWBSQXB  CHAR(16) BDY(WORD), /* SMPL QXB ENTRY           */
*         5 QWBSQEL  CHAR(16) BDY(WORD), /* SMPL QEL ENTRY           */
*         5 QWBSQCB1 CHAR(16) BDY(WORD), /* SMPL QCB SIZE1 ENTRY     */
*         5 QWBSQCB2 CHAR(16) BDY(WORD), /* SMPL QCB SIZE2 ENTRY     */
*         5 QWBSQCB3 CHAR(16) BDY(WORD), /* SMPL QCB SIZE3 ENTRY     */
*       3 QWBBASIC CHAR(308) BDY(WORD),    /* QWB BASIC SECTION -
*                                       COMMON TO BOTH A QWB AND A
*                                       QWB EXTENSION. IF DEFINED AS
*                                       A QWB EXTENSION, THIS AREA
*                                       MAPS TO THE BEGINNING OF THE
*                                       QWB (I.E., QWBHDR - THE
*                                       HEADER AND SMPL DO NOT
*                                       EXIST IN A QWB EXTENSION).
*                                                            @ZMB0308*/
*         5 QWBEXTA PTR(31),         /* ADDRESS OF QWB EXTENSION (I.E.,
*                                       NEXT BASIC SECTION DESCRIBING
*                                       THIS REQUEST)                */
*         5 QWBPEL  CHAR(300),       /* MAXIMUM LENGTH OF A PEL ENTRY
*                                       THAT CAN BE MAPPED TO A QWB.
*                                       NOTE THAT THE PEL PREFIX IS
*                                       NOT INCLUDED IN THIS FIELD.
*                                                            @ZMB0308*/
*         5 QWBBRSV1 CHAR(4),        /* RESERVED                     */
*       3 QWBEND CHAR(0) BDY(DWORD); /* END OF QWB                   */
* DCL QWBSMPLN CONSTANT(6) FIXED(8); /* NUMBER OF SMPL ENTRIES DEFINED
*                                       BY THIS QWB                  */
*/*                                                                  */
./ ADD NAME=ISGQXB
*        %GOTO PLSQXB;                                               /*
         MACRO
         ISGQXB
**/
*%PLSQXB: ;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGQXB
*
*01*  MACDATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = QUEUE EXTENSION BLOCK
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = CONTAINS THE COMMON DATA THAT DESCRIBES THE
*                GRS REQUEST.
*
*01*  METHOD-OF-ACCESS = BAL - DSECT IS PRODUCED REQUIRING A
*                              USING ON THE QXB.
*                        PLS - QXB DECLARED AS BASED STRUCTURE.
*                              QXBPTR MUST BE DECLARED.
*
*01*  CREATED-BY = THE ENQ/RESERVE PROCESSING ROUTINES (ISGGNQDQ,
*                  ISGGRP00) OBTAIN THE QXB  FROM THE STORAGE
*                  MANAGER. IF THE QXB REPRESENTS A MIXED RESOURCE
*                  REQUEST, THE QXB IS OBTAINED FROM THE LOCAL QXB
*                  STORAGE POOL (NORMALLY THE QXB IS OBTAINED FROM
*                  THE LOCAL POOL FOR LOCAL RESOURCES AND FROM THE
*                  GLOBAL POOL FOR GLOBAL RESOURCES).
*
*02*    SUBPOOL =  229 IN THE GRS PRIVATE AREA
*
*02*    KEY     =  0
*
*02*    SIZE    = FIXED LENGTH - 32 BYTES
*
*01*  DELETED-BY = THE DEQ PROCESSING ROUTINES (ISGGNQDQ, ISGGRP00,
*                  ISGGTRM0) RETURN THE QXB TO THE GRS STORAGE
*                  MANAGER.
*
*01*  POINTED-TO-BY = QELQXB, QWBHQXB
*
*01*  SERIALIZATION = LOCAL RESOURCE  - THE CMS ENQ/DEQ CLASS LOCK
*                     GLOBAL RESOURCE - THE GRS LOCAL LOCK
*
*                     NOTE - IF THE QXB REPRESENTS A MIXED RESOURCE
*                     REQUEST, THE QXB WAITC AND QXBLISTC FIELDS ARE
*                     SERIALIZED WITH CS.
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G381PYC*/
*        %GOTO PLSQXB1;                                              /*
QXB      DSECT
         DS    0D                 QUEUE EXTENSION BLOCK
QXBTCB   DS    A                  ADDRESS OF THE REQUESTOR-S (OR
*                                 DIRECTED) TCB
QXBECB   DS    A                  ADDRESS OF THE INPUT ECB FOR POST OR
         ORG   QXBECB
QXBSVRB  DS    A                  ADDRESS OF THE REQUEST SVRB FOR POST
QXBQWB   DS    A                  ADDRESS OF QWB WHEN A MIXED RESOURCE
*                                 IS PRESENT. THIS IS USED DURING NIP
*                                 TO LOCATE THE QWB CONTAINING THE
*                                 THIS QXB ADDRESS SO THE QXB ADDRESS
*                                 CAN BE REPLACED WITH THE MIGRATED
*                                 QXB ADDRESS.
         ORG   QXBQWB
QXBNWPTR DS    A                  ADDRESS OF THE NEW QXB THAT HAS
*                                 BEEN MOVED TO THE GRS ADDRESS SPACE
QXBFLGS1 DS    B                  FLAG BYTE 1
QXBMIXR  EQU   X'80'              MIXED RESOURCE REQUEST - FREE THE
*                                 QXB FROM THE LOCAL RESOURCE POOL.
QXBNW    EQU   X'40'              QXBNWPTR IS VALID - QXB HAS BEEN
*                                 MOVED FROM SQA TO THE GRS ADDRESS
*                                 SPACE.
QXB1RSV1 EQU   X'20'              RESERVED
QXB1RSV2 EQU   X'10'              RESERVED
QXB1RSV3 EQU   X'08'              RESERVED
QXB1RSV4 EQU   X'04'              RESERVED
QXB1RSV5 EQU   X'02'              RESERVED
QXB1RSV6 EQU   X'01'              RESERVED
QXBRSV01 DS    3C                 RESERVED
QXBLWC   DS    F                  LIST/WAIT COUNTS
         ORG   QXBLWC
QXBLISTC DS    H                  LIST COUNT - NUMBER OF ACTIVE QELS
*                                 REMAINING IN THIS REQUEST
QXBWAITC DS    H                  WAIT COUNT - NUMBER OF QELS WAITING
*                                 FOR RESOURCES
QXBJOBNM DS    CL8                JOBNAME/USERID OF THE REQUESTOR.
QXBRSV02 DS    CL4                RESERVED
QXBEND   DS    0D                 END OF GLOBAL QXB
         MEND
*                                                                    */
*%PLSQXB1: ;
* DCL 1 QXB BASED(QXBPTR) BDY(DWORD), /* QUEUE EXTENSION BLOCK       */
*       3 QXBTCB   PTR(31),          /* ADDRESS OF THE REQUESTOR-S
*                                       (OR DIRECTED) TCB            */
*       3 QXBECB   PTR(31),          /* ECB ADDRESS FOR POST OR      */
*         5 QXBSVRB PTR(31),         /* SVRB ADDRESS FOR POST        */
*       3 QXBQWB   PTR(31),          /* ADDRESS OF QWB WHEN A MIXED
*                                       RESOURCE REQUEST IS PRESENT.
*                                       THIS IS USED DURING NIP TO
*                                       LOCATE THE QWB CONTAINING
*                                       THIS QXB ADDRESS SO THE QXB
*                                       ADDRESS CAN BE REPLACED WITH
*                                       THE MIGRATED QXB ADDRESS     */
*         5 QXBNWPTR PTR(31),        /* ADDRESS OF THE NEW QXB THAT
*                                       HAS BEEN MOVED TO THE GRS
*                                       ADDRESS SPACE                */
*       3 QXBFLGS1 BIT(8),           /* FLAG BYTE 1                  */
*         5 QXBMIXR  BIT(1),         /* MIXED RESOURCE REQUEST - FREE
*                                       THE QXB FROM THE LOCAL
*                                       RESOURCES POOL               */
*         5 QXBNW    BIT(1),         /* QXBNWPTR IS VALID - QXB HAS
*                                       BEEN MOVED FROM SQA TO THE
*                                       GRS ADDRESS SPACE            */
*         5 QXB1RSV1 BIT(1),         /* RESERVED                     */
*         5 QXB1RSV2 BIT(1),         /* RESERVED                     */
*         5 QXB1RSV3 BIT(1),         /* RESERVED                     */
*         5 QXB1RSV4 BIT(1),         /* RESERVED                     */
*         5 QXB1RSV5 BIT(1),         /* RESERVED                     */
*         5 QXB1RSV6 BIT(1),         /* RESERVED                     */
*       3 QXBRSV01 CHAR(3),          /* RESERVED                     */
*       3 QXBLWC   FIXED(32),        /* LIST/WAIT COUNTS             */
*         5 QXBLISTC FIXED(16),      /* LIST COUNT - NUMBER OF ACTIVE
*                                       QELS REMAINING IN THE REQUEST*/
*         5 QXBWAITC FIXED(16),      /* WAIT COUNT - NUMBER OF QELS
*                                       WAITING FOR RESOURCES        */
*       3 QXBJOBNM CHAR(8),          /* JOBNAME/USERID OF THE
*                                       REQUESTOR.                   */
*       3 QXBRSV02 CHAR(4),          /* RESERVED                     */
*       3 QXBEND   CHAR(0) BDY(DWORD); /* END OF QXB                 */
./ ADD NAME=ISGRIB
         MACRO ,             COMPATIBILIY FOR 3.8
         ISGRIB ,
RIB      DSECT ,
RIBQCB   DS    A
RIBCHAIN DS    A
RIBNTO   DS    F
RIBNTWE  DS    F
RIBNTWS  DS    F
RIBTRIBE DS    F
RIBNRIBE DS    F
RIBVLEN  DS    H
RIBSCOPE DS    BL1
RIBSYS   EQU   X'80'
RIBSYSS  EQU   X'40'
RIBSTEP  EQU   X'20'
RIBGLBL  EQU   X'10'
RIBBIT1  EQU   X'08'
RIBBIT2  EQU   X'04'
RIBBIT3  EQU   X'02'
RIBBIT4  EQU   X'01'
RIBRNMLN DS    BL1
RIBQNAME DS    CL8
RIBEND   DS    0F
.*
RIBVAR   DSECT ,
RIBRNAME DS    0X
.*
RIBE     DSECT ,
RIBEJBNM DS    CL8
RIBESYSN DS    CL8
RIBETCB  DS    A
RIBEECB  DS    0A
RIBESVRB DS    A
RIBEUCB  DS    A
RIBEASID DS    H
RIBERFLG DS    BL1
RIBETYPE EQU   X'80'
RIBEMC   EQU   X'40'
RIBERESV EQU   X'20'
RIBERESC EQU   X'10'
RIBEAUTH EQU   X'08'
RIBETCBF EQU   X'04'
RIBESIDV EQU   X'02'
RIBEMATC EQU   X'01'
RIBELFLG DS    BL1
RIBEPOST EQU   X'80'
RIBEECBF EQU   X'40'
RIBELRS1 EQU   X'20'
RIBELRS2 EQU   X'10'
RIBELRS3 EQU   X'08'
RIBELRS4 EQU   X'04'
RIBELRS5 EQU   X'02'
RIBELRS6 EQU   X'01'
RIBESFLG DS    BL1
RIBESTAT EQU   X'80'
RIBEMATO EQU   X'40'
RIBESRS2 EQU   X'20'
RIBESRS3 EQU   X'10'
RIBESRS4 EQU   X'08'
RIBESRS5 EQU   X'04'
RIBESRS6 EQU   X'02'
RIBESRS7 EQU   X'01'
RIBERS01 DS    CL1
RIBESAID DS    H
RIBEDEVN DS    CL4
RIBEMTCB DS    A
RIBEMASI DS    H
RIBERSVD DS    H
RIBEEND  DS    0F
         MEND
./ ADD NAME=ISGRPT
*%GOTO RPTPLS1;                                                      /*
         MACRO
         ISGRPT
**/
*%RPTPLS1:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGRPT
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = RESOURCE POOL TABLE
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = THERE ARE TWO RESOURCE POOL TABLES - ONE FOR GLOBAL
*                RESOURCES AND ONE FOR LOCAL RESOURCES. EACH RESOURCE
*                POOL TABLE CONTAINS AN ENTRY FOR EACH CELL TYPE
*                ALLOWED.  THERE ARE ADDITIONAL ENTRIES FOR CELL
*                TYPES WITH MULTIPLE SIZES. EACH RESOURCE POOL TABLE
*                ENTRY POINTS TO THE FIRST AND LAST POOL EXTENT
*                BLOCK FOR THAT POOL.
*
*                THE FIRST SIXTEEN BYTES OF AN RPT ENTRY CORRESPOND
*                TO THE FIRST SIXTEEN BYTES OF A PEXB, SINCE AN RPT
*                ENTRY IS USED AS AN EMPTY PEXB.
*
*01*  METHOD-OF-ACCESS = PLS - DECLARE RPTPTR PTR(31)
*                              %INCLUDE SYSLIB(ISGRPT)
*                        BAL - TWO DSECTS ARE PRODUCED REQUIRING
*                              A USING ON THE RPT AND RPTENT
*
*01*  CREATED-BY = THE RESOURCE POOL TABLES ARE CREATED BY ISGNCBIM
*                  IN SQA AND BY ISGNASIM IN THE GRS ADDRESS SPACE.
*
*02*    SUBPOOL = 229
*
*02*    KEY     = 0
*
*02*    SIZE    = GLOBAL RESOURCE POOL TABLE - 288 BYTES
*                 LOCAL  RESOURCE POOL TABLE - 260 BYTES
*
*01*  DELETED-BY = THE RESOURCE POOL TABLES ARE NEVER DELETED.
*
*01*  POINTED-TO-BY = THE GLOBAL RESOURCE POOL TABLE IS POINTED
*                     TO BY GVTXGRPT. THE LOCAL RESOURCE POOL TABLE
*                     IS POINTED TO BY GVTXLRPT.
*
*01*  SERIALIZATION = LOCAL  RESOURCE POOL TABLE - CMS ENQ/DEQ
*                                                  CLASS LOCK
*                     GLOBAL RESOURCE POOL TABLE - GRS LOCAL LOCK
*                     (EXCEPT RPT ENTRY FOR QWBS
*                      WHICH IS SERIALIZED BY
*                      THE CMS ENQ/DEQ CLASS
*                      LOCK.)
*
*01*  CHANGE-ACTIVITY =
*                SUPPORTS PTMS:
*                     PBB0388                               @ZMB0388
*                     PBB0638                               @ZMB0638
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G383P13*/
*        %GOTO RPTPLS2;                                              /*
RPT      DSECT                RESOURCE POOL TABLE
RPTHDR   DS    1D             RESOURCE POOL TABLE HEADER
         ORG   RPTHDR
RPTID    DS    CL4            CONTROL BLOCK ACRONYMN
*                             (GLOBAL - GRPT, LOCAL - LRPT)
         DS    CL1            RESERVED
RPTNENT  DS    XL1            NUMBER OF ENTRIES IN THIS RPT
         DS    CL2            RESERVED
         SPACE 3
RPTENT   DSECT                RESOURCE POOL TABLE ENTRY
RPTECOMM DS    4F             THIS STRUCTURE CORRESPONDS TO THE FIRST
*                             SIXTEEN BYTES OF A PEXB, SO THE RPT
*                             CAN BE USED AS A DUMMY PEXB WHEN THE
*                             POOL IS EMPTY
         ORG   RPTECOMM                                       @ZMB0638
RPTETYPE DS    CL4            CONTROL BLOCK ACRONYMN FOR THE CELLS
*                             CONTAINED IN THIS POOL
RPTEFPXB DS    A              ADDRESS OF THE FIRST POOL EXTENT BLOCK
*                             IN THIS POOL
RPTELPXB DS    A              ADDRESS OF THE LAST POOL EXTENT BLOCK IN
*                             THIS POOL
RPTEAVAL DS    H              NUMBER OF CELLS AVAILABLE IN THIS POOL
*                             EXTENT BLOCK (THIS FIELD MUST BE ZERO SO
*                             THAT THIS RPT ENTRY APPEARS TO BE AN
*                             EMPTY POOL EXTENT BLOCK)
RPTETOTL DS    H              TOTAL NUMBER OF CELLS IN THIS POOL EXTENT
*                             BLOCK (THIS FIELD MUST BE ZERO SO THAT
*                             THIS RPT ENTRY APPEARS TO BE AN EMPTY
*                             POOL EXTENT BLOCK)
         DS    CL2            RESERVED
RPTESIZE DS    H              SIZE OF CELL CONTAINED WITHIN THIS POOL
RPTEPTOT DS    F              TOTAL NUMBER OF CELLS IN THE ENTIRE
*                             POOL - USED BY THE DUMPING ROUTINES
RPTEIAPQ DS    A              INACTIVE PEXB QUEUE CONSISTING OF PEXBS
*                             CURRENTLY INACTIVE - THESE PEXBS ARE
*                             QUEUED BY ISGSDAL AND DEQUEUED BY
*                             ISGSALC OR ISGSPRLS
         MEND
**/
*%RPTPLS2:;
*DECLARE
*  1 RPT BASED(RPTPTR) BDY(DWORD),   /* RESOURCE POOL TABLE          */
*    3 RPTHDR CHAR(8) BDY(DWORD),    /* RESOURCE POOL TABLE HEADER   */
*      5 RPTID CHAR(4),              /* CONTROL BLOCK ACRONYM
*                                       (GLOBAL-GRPT,LOCAL-LRPT)     */
*      5 *     CHAR(1),              /* RESERVED                     */
*      5 RPTNENT FIXED(8),           /* NUMBER OF ENTRIES IN THIS RPT*/
*      5 * CHAR(2),                  /* RESERVED                     */
*    3 RPTENT(*) CHAR(28) BDY(WORD), /* RESOURCE POOL TABLE ENTRY    */
*      5 RPTECOMM CHAR(16)BDY(WORD), /* THIS STRUCTURE CORRESPONDS TO
*                                       THE FIRST SIXTEEN BYTES OF A
*                                       PEXB, SO THE RPT CAN BE USED
*                                       AS A DUMMY PEXB WHEN THE POOL
*                                       IS EMPTY             @ZMB0388*/
*        7 RPTETYPE CHAR(4),         /* CONTROL BLOCK ACRONYM FOR THE
*                                       CELLS CONTAINED IN THIS POOL */
*        7 RPTEFPXB PTR(31),         /* ADDRESS OF THE FIRST POOL
*                                       EXTENT BLOCK IN THIS POOL    */
*        7 RPTELPXB PTR(31),         /* ADDRESS OF THE LAST POOL
*                                       EXTENT BLOCK IN THIS POOL    */
*        7 RPTEAVAL FIXED(15),       /* NUMBER OF CELLS AVAILABLE IN
*                                       THIS POOL EXTENT BLOCK (THIS
*                                       FIELD MUST BE ZERO SO THAT
*                                       THIS RPT ENTRY APPEARS TO BE
*                                       AN EMPTY POOL EXTENT BLOCK)  */
*        7 RPTETOTL FIXED(15),       /* TOTAL NUMBER OF CELLS IN
*                                       THIS POOL EXTENT BLOCK (THIS
*                                       FIELD MUST BE ZERO SO THAT
*                                       THIS RPT ENTRY APPEARS TO BE
*                                       AN EMPTY POOL EXTENT BLOCK)  */
*      5 * CHAR(2),                  /* RESERVED                     */
*      5 RPTESIZE FIXED(15),         /* SIZE OF CELL CONTAINED
*                                       WITHIN THIS POOL             */
*      5 RPTEPTOT FIXED(31),         /* TOTAL NUMBER OF CELLS IN THE
*                                       ENTIRE POOL - USED BY THE
*                                       DUMPING ROUTINES             */
*      5 RPTEIAPQ PTR(31);           /* INACTIVE PEXB QUEUE
*                                       CONSISTING OF PEXBS CURRENTLY
*                                       INACTIVE - THESE PEXBS ARE
*                                       QUEUED BY ISGSDAL AND
*                                       DEQUEUED BY ISGSALC OR
*                                       ISGSPRLS                     */
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE TO BE USED ONLY BY GRS             */
*/*   INITIALIZATION AND STORAGE MANAGEMENT MODULES.                 */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  RPTINENT FIXED(16) CONSTANT(6),   /* NUMBER OF ENTRIES IN THE
*                                       LOCAL/GLOBAL RESOURCE
*                                       POOL TABLE WHILE IN SQA      */
*  RPTGNENT FIXED(16) CONSTANT(10),  /* NUMBER OF ENTRIES IN THE
*                                       GLOBAL RESOURCE POOL TABLE
*                                       WHILE IN THE GRS A.S.        */
*  RPTLNENT FIXED(16) CONSTANT(9),   /* NUMBER OF ENTRIES IN THE
*                                       LOCAL RESOURCE POOL TABLE
*                                       WHILE IN GRS A.S.            */
*  RPTIACNT FIXED(8)  CONSTANT((RPTLNENT+RPTGNENT)/3); /* THE
*                                       NUMBER OF INACTIVE PEXB PAGES
*                                       THAT WILL BE KEPT. WHEN THIS
*                                       NUMBER IS REACHED THE PAGES
*                                       WILL BE PAGE RELEASED        */
*@SPACE(3);
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE SIZES FOR EACH TYPE OF             */
*/*   WORKAREA THAT GRS STORAGE MANAGER PROCESSES.                   */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  RPTTWKAS FIXED(16) CONSTANT(248),  /* SIZE OF A TINY WORK AREA    */
*  RPTHWKAS FIXED(16) CONSTANT(4000); /* SIZE OF A HUGE WORK AREA    */
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE THE RPT INDEX NUMBERS FOR          */
*/*   EACH TYPE OF CONTROL BLOCK THAT THE GRS STORAGE MANAGER        */
*/*   PROCESSES.                                                     */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  RPTQCB1I FIXED(8) CONSTANT(1),    /* INDEX FOR QCB WITH
*                                       24 BYTE RNAME                */
*  RPTQCB2I FIXED(8) CONSTANT(2),    /* INDEX FOR QCB WITH
*                                       44 BYTE RNAME                */
*  RPTQCB3I FIXED(8) CONSTANT(3),    /* INDEX FOR QCB WITH
*                                       256 BYTE RNAME               */
*  RPTQELI  FIXED(8) CONSTANT(4),    /* INDEX FOR QEL                */
*  RPTQXBI  FIXED(8) CONSTANT(5),    /* INDEX FOR QXB                */
*  RPTQWBI  FIXED(8) CONSTANT(6),    /* INDEX FOR QWB (GLOBAL ONLY)  */
*  RPTHWKAI FIXED(8) CONSTANT(6),    /* INDEX FOR HUGE WORK AREA
*                                       (LOCAL ONLY)                 */
*  RPTTWKAI FIXED(8) CONSTANT(7),    /* INDEX FOR TINY WORK AREA     */
*  RPTPQCBI FIXED(8) CONSTANT(8),    /* INDEX FOR PQCB               */
*  RPTMRBI  FIXED(8) CONSTANT(9),    /* INDEX FOR MRB                */
*  RPTCRBI  FIXED(8) CONSTANT(10);   /* INDEX FOR CRB (GLOBAL ONLY)  */
*@SPACE(3);
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE THE CONTROL BLOCK ACRONYMS FOR     */
*/*   THE TYPE OF CELLS THAT THE GRS STORAGE MANAGER PROCESSES.      */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  RPTQCBT  CHAR(4) CONSTANT('QCB '), /* CONTROL BLOCK ACRONYM - QCB */
*  RPTQELT  CHAR(4) CONSTANT('QEL '), /* CONTROL BLOCK ACRONYM - QEL */
*  RPTQXBT  CHAR(4) CONSTANT('QXB '), /* CONTROL BLOCK ACRONYM - QXB */
*  RPTQWBT  CHAR(4) CONSTANT('QWB '), /* CONTROL BLOCK ACRONYM - QWB */
*  RPTHWKAT CHAR(4) CONSTANT('HWKA'), /* CONTROL BLOCK ACRONYM FOR
*                                        HUGE WORK AREA              */
*  RPTTWKAT CHAR(4) CONSTANT('TWKA'), /* CONTROL BLOCK ACRONYM FOR
*                                        TINY WORK AREA              */
*  RPTPQCBT CHAR(4) CONSTANT('PQCB'), /* CONTROL BLOCK ACRONYM - PQCB*/
*  RPTMRBT  CHAR(4) CONSTANT('MRB '), /* CONTROL BLOCK ACRONYM - MRB */
*  RPTCRBT  CHAR(4) CONSTANT('CRB '); /* CONTROL BLOCK ACRONYM - CRB */
./ ADD NAME=ISGSAHT
*%GOTO SAHTPLS1;                                                     /*
         MACRO
         ISGSAHT
**/
*%SAHTPLS1:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGSAHT
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = SYSTEM/ASID HASH TABLE
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = EACH SYSTEM/ASID HASH TABLE ENTRY CONTAINS
*                A POINTER TO A CHAIN OF QEL ANCHORS.
*
*01*  METHOD-OF-ACCESS = PLS - DECLARE SAHTPTR PTR(31)
*                              DECLARE SAHTEPTR PTR(31)
*                              %INCLUDE SYSLIB(ISGSAHT)
*                        BAL - DSECT IS PRODUCED REQUIRING
*                              A USING ON THE SAHT AND SAHTENT
*
*01*  CREATED-BY = THE SYSTEM/ASID HASH TABLE IS CREATED BY ISGNASIM.
*
*02*    SUBPOOL = 229
*
*02*    KEY     = 0
*
*02*    SIZE    = 1024 BYTES
*
*01*  DELETED-BY = THE SYSTEM/ASID HASH TABLE IS NEVER DELETED.
*
*01*  POINTED-TO-BY = THE SYSTEM/ASID HASH TABLE IS POINTED TO BY
*                     GVTXSAHT.
*
*01*  SERIALIZATION = THE GRS LOCAL LOCK.
*
*01*  CHANGE ACTIVITY = SUPPORTS PTM PBB0207
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G383P13*/
*        %GOTO SAHTPLS2;                                             /*
SAHT     DSECT                          SYSTEM/ASID HASH TABLE
         DS    0D
SAHTHDR  DS    0D                       SYSTEM/ASID HASH TABLE HEADER
SAHTID   DS    CL4                      CONTROL BLOCK ACRONYM (SAHT)
SAHTNENT DS    H                        NUMBER OF ENTRIES IN TABLE
         DS    CL2                      RESERVED               @ZMB0207
SAHTENTS DS    0F                       SYSTEM/ASID HASH TABLE ENTRIES
SAHTENT  DSECT                          SYSTEM/ASID HASH TABLE ENTRY
         DS    0F
SAHTEQEL DS    A                        ADDRESS OF FIRST QEL ANCHOR ON
*                                       SYNONYM CHAIN
         MEND
**/
*%SAHTPLS2:;
*DECLARE
*  1 SAHT BASED(SAHTPTR) BDY(DWORD),  /* SYSTEM/ASID HASH TABLE      */
*    3 SAHTHDR CHAR(8) BDY(DWORD),    /* SYSTEM/ASID HASH TABLE
*                                        HEADER                      */
*      5 SAHTID CHAR(4),              /* CONTROL BLOCK ACRONYM (SAHT)*/
*      5 SAHTNENT FIXED(16),          /* NUMBER OF ENTRIES IN TABLE  */
*      5 * CHAR(2),                   /* RESERVED                    */
*    3 SAHTENTS (*) CHAR (LENGTH(SAHTENT)) BDY(WORD); /* SYSTEM ASID
*                                        HASH TABLE ENTRIES          */
*@SPACE(3);
*DECLARE
*  1 SAHTENT CHAR(4) BASED(SAHTEPTR) BDY(WORD), /* SYSTEM/ASID HASH
*                                        TABLE ENTRY                 */
*    3 SAHTEQEL PTR(31);              /* ADDRESS OF FIRST QEL ANCHOR
*                                        ON SYNONYM CHAIN            */
*@SPACE(5);
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE TO BE USED ONLY BY GRS             */
*/*   INITIALIZATION MODULES.                                        */
*/*                                                                  */
*/********************************************************************/
*DECLARE
*  SAHTAENT FIXED(16) CONSTANT(254);  /* NUMBER OF ENTRIES IN THE
*                                        SYSTEM/ASID HASH TABLE      */
./ ADD NAME=ISGSMPL
* %GOTO SMPLPLS1;                                                    /*
         MACRO
         ISGSMPL
**/
*%SMPLPLS1:;
*/*  START OF SPECIFICATIONS ****
*
*01*  MACRO-NAME = ISGSMPL
*
*01*  MACRO-DATE = 05/05/81
*
*01*  DESCRIPTIVE-NAME = STORAGE MANAGEMENT PARAMETER LIST ENTRY
*
*01*  COPYRIGHT =
*                5740-XYN COPYRIGHT IBM CORP 1980,1981,
*                LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,
*                REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083.
*
*01*  STATUS = OS/VS2 JBB1326
*
*01*  FUNCTION = EACH STORAGE MANANGEMENT PARAMETER LIST ENTRY
*                REPRESENTS A REQUEST TO THE GRS STORAGE MANAGER.
*
*01*  METHOD-OF-ACCESS =
*                        NON-BASED:
*                        PLS - %SMPLPARM = 'Y'
*                              %INCLUDE SYSLIB(ISGSMPL)
*
*                        BASED:
*                        PLS - DECLARE SMPLPTR PTR(31)
*                              %INCLUDE SYSLIB(ISGSMPL)
*
*                        BAL - DSECT IS PRODUCED REQUIRING
*                              A USING ON THE SMPL
*
*01*  CREATED-BY = THE SMPL IS CREATED BY THE CALLER OF GRS
*                  STORAGE MANAGER.
*
*02*    SUBPOOL = DETERMINED BY CALLER.
*
*02*    KEY     = 0
*
*02*    SIZE    = 16 BYTES PER ENTRY
*
*
*01*  DELETED-BY = THE SMPL IS DELETED BY THE CALLER OF GRS
*                  STORAGE MANAGER.
*
*01*  POINTED-TO-BY = MAINTAINED BY CALLER OF GRS STORAGE MANAGER.
*
*01*  SERIALIZATION = NONE
*
**** END OF SPECIFICATIONS **                                        */
*/*A000000-999999                                            @G383P13*/
*    %GOTO SMPLPLS2;                                                 /*
SMPL     DSECT                       STORAGE MANAGEMENT PARM LIST ENTRY
         DS    0F
SMPFLAGS DS    B                     INDICATOR FLAGS
SMPEOPL  EQU   X'80'                 END OF PARM LIST INDICATOR -
*                                    WHEN 1, THIS ENTRY IS LAST ENTRY
*                                    OF THE PARAMETER LIST
SMPGLIND EQU   X'40'                 GLOBAL/LOCAL INDICATOR -
*                                    0 = LOCAL CONTROL BLOCK,
*                                    1 = GLOBAL CONTROL BLOCK
SMPRSV1  EQU   X'20'                 RESERVED
SMPRSV2  EQU   X'10'                 RESERVED
SMPRSV3  EQU   X'08'                 RESERVED
SMPRSV4  EQU   X'04'                 RESERVED
SMPRSV5  EQU   X'02'                 RESERVED
SMPRSV6  EQU   X'01'                 RESERVED
SMPRSV7  DS    CL1                   RESERVED
SMPINDEX DS    H                     INDEX NUMBER OF THE RESOURCE POOL
*                                    TABLE ENTRY FOR THE CELL REQUESTED
SMPRSV8  DS    CL4                   RESERVED
SMPCNUM  DS    F                     NUMBER OF CELLS TO BE ALLOCATED
SMPCADDR DS    A                     INPUT - ADDRESS OF FIRST CELL
*                                            TO BE DEALLOCATED,
*                                    OUTPUT- ADDRESS OF FIRST CELL
*                                            THAT WAS ALLOCATED
SMPEND   DS    0F                    END OF SMPL
         MEND
**/
*%SMPLPLS2:;
*%IF SMPLPARM = 'Y' %THEN            /* NON BASED SMPL REQUESTED ?   */
*   %GOTO NOTBASE;                   /* YES, GO GENERATE NON BASED DCL*/
*%BASE:;                             /* GENERATE BASED DCL           */
*DECLARE
*  1 SMPL BASED(SMPLPTR) BDY(WORD),  /* STORAGE MANAGEMENT PARM LIST
*                                       ENTRY                        */
*%GOTO BODY;                         /* GO GENERATE SMPL BODY        */
*%NOTBASE:;                          /* GENERATE NON BASED DCL       */
*DECLARE
*  1 SMPL BDY(WORD),                 /* STORAGE MANAGEMENT PARM LIST
*                                       ENTRY                        */
*%BODY:;                             /* GENERATE SMPL BODY           */
*    3 SMPFLAGS FIXED(8),            /* INDICATOR FLAGS              */
*      5 SMPEOPL  BIT(1),            /* END OF PARM LIST INDICATOR -
*                                       WHEN 1, THIS ENTRY IS LAST ENTRY
*                                       OF THE PARAMETER LIST        */
*      5 SMPGLIND BIT(1),            /* GLOBAL/LOCAL INDICATOR
*                                       0 = LOCAL CONTROL BLOCK,
*                                       1 = GLOBAL CONTROL BLOCK     */
*      5 SMPRSV1  BIT(1),            /* RESERVED                     */
*      5 SMPRSV2  BIT(1),            /* RESERVED                     */
*      5 SMPRSV3  BIT(1),            /* RESERVED                     */
*      5 SMPRSV4  BIT(1),            /* RESERVED                     */
*      5 SMPRSV5  BIT(1),            /* RESERVED                     */
*      5 SMPRSV6  BIT(1),            /* RESERVED                     */
*    3 SMPRSV7 CHAR(1),              /* RESERVED                     */
*    3 SMPINDEX FIXED(16),           /* INDEX NUMBER OF THE RESOURCE
*                                       POOL TABLE ENTRY FOR THE CELL
*                                       REQUESTED                    */
*    3 SMPRSV8 CHAR(4),              /* RESERVED                     */
*    3 SMPCNUM FIXED(32),            /* NUMBER OF CELLS REQUESTED TO
*                                       BE ALLOCATED.
*                                       NOT USED FOR DEALLOCATION    */
*    3 SMPCADDR PTR(31),             /* INPUT - ADDRESS OF FIRST CELL
*                                       TO BE DEALLOCATED,
*                                       OUTPUT - ADDRESS OF FIRST CELL
*                                       THAT WAS ALLOCATED           */
*    3 SMPEND CHAR(0) BDY(WORD);     /* END OF SMPL                  */
*@SPACE(5);
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING IS THE DECLARATION FOR THE CELL CHAINING         */
*/*   WHEN MORE THAN ONE CELL OF THE SAME TYPE IS ALLOCATED          */
*/*                                                                  */
*/********************************************************************/
*DCL
*  1 SMPCELL BASED,                  /* STORAGE MANAGER CELL         */
*    3 SMPNCELL PTR(31),             /* ADDRESS OF NEXT CELL IN CHAIN*/
*    3 * CHAR(*);                    /* REMAINDER OF CELL            */
*@EJECT;
*/********************************************************************/
*/*                                                                  */
*/*   THE FOLLOWING CONSTANTS ARE THE INDEX NUMBERS FOR              */
*/*   EACH TYPE OF CONTROL BLOCK THAT GRS STORAGE MANAGER            */
*/*   PROCESSES. THESES INDICES CORRESPOND TO THE ONE'S IN           */
*/*   THE RPT.                                                       */
*/*                                                                  */
*/********************************************************************/
*DECLARE
   SMPQCB1I FIXED(8) CONSTANT(1),    /* INDEX FOR QCB WITH
                                        24 BYTE RNAME                */
   SMPQCB2I FIXED(8) CONSTANT(2),    /* INDEX FOR QCB WITH
                                        44 BYTE RNAME                */
   SMPQCB3I FIXED(8) CONSTANT(3),    /* INDEX FOR QCB WITH
                                        256 BYTE RNAME               */
   SMPQELI  FIXED(8) CONSTANT(4),    /* INDEX FOR QEL                */
   SMPQXBI  FIXED(8) CONSTANT(5),    /* INDEX FOR QXB                */
   SMPQWBI  FIXED(8) CONSTANT(6),    /* INDEX FOR QWB (GLOBAL ONLY)  */
   SMPHWKAI FIXED(8) CONSTANT(6),    /* INDEX FOR HUGE WORK AREA
                                        (LOCAL ONLY)                 */
   SMPTWKAI FIXED(8) CONSTANT(7),    /* INDEX FOR TINY WORK AREA     */
   SMPPQCBI FIXED(8) CONSTANT(8),    /* INDEX FOR PQCB               */
   SMPMRBI  FIXED(8) CONSTANT(9),    /* INDEX FOR MRB                */
   SMPCRBI  FIXED(8) CONSTANT(10);   /* INDEX FOR CRB (GLOBAL ONLY)  */
 @SPACE(3);
 /********************************************************************/
 /*                                                                  */
 /*   THE FOLLOWING CONSTANTS ARE SIZES FOR EACH TYPE OF             */
 /*   WORKAREA THAT GRS STORAGE MANAGER PROCESSES.                   */
 /*                                                                  */
 /********************************************************************/
 DECLARE
   SMPTWKAS FIXED(16) CONSTANT(248),  /* SIZE OF A TINY WORK AREA    */
   SMPHWKAS FIXED(16) CONSTANT(4000); /* SIZE OF A HUGE WORK AREA    */
./ ADD NAME=JCALL
         MACRO
&NAME    JCALL &ROUTINE,&BASE=YES
.*
.*        GENERATES A BRANCH AND LINK TO A SUBROUTINE.
.*
         AIF   ('&BASE' EQ 'YES').BASEYES
         AIF   ('&BASE' EQ 'NO').BASENO
         MNOTE 8,'INVALID PARAMETER'
         MEXIT
.BASEYES ANOP
&NAME    L     R12,=A(&ROUTINE)
         BALR  R9,R12
         MEXIT
.BASENO  ANOP
&NAME    BAL   R9,&ROUTINE
         MEND
./ ADD NAME=JCHECK
         MACRO
&NAME    JCHECK &FILE=
.*
.*       GENERATES A CALL TO WORKFILE I/O MODULE CHECK ROUTINE
.*       TO ISSUE A CHECK FOR A STARTED I/O OPERATION.
.*
         AIF   (K'&FILE EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JCHECK(,R12)          GO TO JCHECK
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JCOMMON
J        DSECT
*A678000                                                       @AX14816
*C678500                                                       @AX14816
*A564600,831500-833800,924500-930500,831100                    @AZ13738
*C565000                                                       @AZ13738
*
*        ASSEMBLER COMMON TABLE AS OF 12/08/70.
*
*        REGISTER EQUATES
*
R0       EQU   0                        SCRATCH REGISTER
R1       EQU   1                        SCRATCH REGISTER
R2       EQU   2                        WORK REGISTER
R3       EQU   3                        WORK REGISTER
R4       EQU   4                        WORK REGISTER
R5       EQU   5                        WORK REGISTER
R6       EQU   6                        WORK REGISTER
R7       EQU   7                        MODULE COMMON REGISTER
R8       EQU   8                        BASE REGISTER
R9       EQU   9                        RETURN ADDRESS REGISTER
R10      EQU   10                       PARAMETER REGISTER (2-WAY)
R11      EQU   11                       PARAMETER REGISTER (2-WAY)
R12      EQU   12                       SUBROUTINE CALL REGISTER
R13      EQU   13                       COMMON REGISTER
R14      EQU   14                       SCRATCH
R15      EQU   15                       SCRATCH
*
*        DISPLACEMENT EQUATES
*
D0       EQU   0
D1       EQU   1
D2       EQU   2
D3       EQU   3
D4       EQU   4
D5       EQU   5
D6       EQU   6
D7       EQU   7
D8       EQU   8
D9       EQU   9
D10      EQU   10
D11      EQU   11
D12      EQU   12
D13      EQU   13
D14      EQU   14
D15      EQU   15
D16      EQU   16
D17      EQU   17
D18      EQU   18
D19      EQU   19
D20      EQU   20
D21      EQU   21
D22      EQU   22
D23      EQU   23
D24      EQU   24
D25      EQU   25
D26      EQU   26
D27      EQU   27
D28      EQU   28
D29      EQU   29
D30      EQU   30
D31      EQU   31
D32      EQU   32
*
*        BIT EQUATES
*        BIT MASKS FOR BITS 0 - 7 DEFINED BY MACRO IEZBITS
*
         IEZBITS
BITFF    EQU   B'11111111'                                   ALL
*
*        INTERNAL CODES---PRECEDED BY J
*
J0       EQU   X'00'                    NUMBER 0
J1       EQU   X'01'                           1
J2       EQU   X'02'                           2
J3       EQU   X'03'                           3
J4       EQU   X'04'                           4
J5       EQU   X'05'                           5
J6       EQU   X'06'                           6
J7       EQU   X'07'                           7
J8       EQU   X'08'                           8
J9       EQU   X'09'                           9
JA       EQU   X'0A'                    LETTER A
JB       EQU   X'0B'                           B
JC       EQU   X'0C'                           C
JD       EQU   X'0D'                           D
JE       EQU   X'0E'                           E
JF       EQU   X'0F'                           F
JG       EQU   X'10'                           G
JH       EQU   X'11'                           H
JI       EQU   X'12'                           I
JJ       EQU   X'13'                           J
JK       EQU   X'14'                           K
JL       EQU   X'15'                           L
JM       EQU   X'16'                           M
JN       EQU   X'17'                           N
JO       EQU   X'18'                           O
JP       EQU   X'19'                           P
JQ       EQU   X'1A'                           Q
JR       EQU   X'1B'                           R
JS       EQU   X'1C'                           S
JT       EQU   X'1D'                           T
JU       EQU   X'1E'                           U
JV       EQU   X'1F'                           V
JW       EQU   X'20'                           W
JX       EQU   X'21'                           X
JY       EQU   X'22'                           Y
JZ       EQU   X'23'                           Z
JDOLLAR  EQU   X'24'                           $
JPOUND   EQU   X'25'                           POUND SIGN
JAT      EQU   X'26'                           AT SIGN
JEQUAL   EQU   X'27'                    SPEC.  =
JLPARN   EQU   X'28'                           (
JPLUS    EQU   X'29'                           +
JMINUS   EQU   X'2A'                           -
JASTER   EQU   X'2B'                           *
JSLASH   EQU   X'2C'                           /
JRPARN   EQU   X'2D'                           )
JCOMMA   EQU   X'2E'                           ,
JBLANK   EQU   X'2F'                           BLANK
JQUOTE   EQU   X'30'                           '
JAMPER   EQU   X'31'                           &
JPERIOD  EQU   X'32'                           .
JNUMMIN  EQU   J0                       MINIMUM NUMBER CODE
JNUMMAX  EQU   J9                       MAXIMUM NUMBER CODE
JALFAMIN EQU   JA                       MINIMUM ALPHA CODE
JALFAMAX EQU   JAT                      MAXIMUM ALPHA CODE
JOPERMIN EQU   JPLUS                    MINIMUM OPERATOR CODE
JOPERMAX EQU   JSLASH                   MAXIMUM OPERATOR CODE
*
*        COMMON STORAGE
*
         USING JCOMMON,R13              SET UP COMMON BASE
JCOMMON  DS    0D                       BEGINNING OF COMMON
JSAVE    DS    18F                      SYSTEM SAVE AREA
JFLEBLK1 DS    14A                      FILE BLOCK 1
FILE1    EQU   JFLEBLK1-JCOMMON         FILE 1 CODE
JFLEBLK2 DS    14A                      FILE BLOCK 2
FILE2    EQU   JFLEBLK2-JCOMMON         FILE 2 CODE
JFLEBLK3 DS    14A                      FILE BLOCK 3
FILE3    EQU   JFLEBLK3-JCOMMON         FILE 3 CODE
JMAXRL1  DS    H                        MAX RL FOR FILE 1
JMAXRL2  DS    H                        MAX RL FOR FILE 2
JMAXRL3  DS    H                        MAX RL FOR FILE 3
JMAXRL   DS    H                        MIN OF MAX RL FOR ALL FILES
JADINCM  DS    A                        ADDRESS OF INPUT COMMON
JADOUTCM DS    A                        ADDRESS OF OUTPUT COMMON
JPHNAME  DS    0CL8                     PHASE NAME OF LAST PHASE LOADED
JPHPREF  DS    CL3                      PHASE NAME PREFIX
JPHSUFF  DS    CL3                      PHASE NAME SUFFIX
JPHBLANK DS    CL2                      TWO BLANKS
JLVTMDT  DS    0CL24                    ASM LEVEL, TIME, DATE
         DS    CL10                     SAME
JSYSTIME DS    CL5                             HH.MM
         DS    C                        BLANK
JSYSDATE DS    CL8                             MM/DD/YY OR DD/MM/YY
JDECKIDL DS    X                        LENGTH OF DECK ID (0 THRU 8)
JDECKID  DS    CL8                      INTERNAL DECK ID
JPARMS   DS    0XL3                     MSGLEVEL AND LINECOUNT
JMSGL    DS    X                        MSGLEVEL=
JLNCT    DS    H                        LINECNT=
JSYSPARM DS    A                        SYSPARM POINTER
JPARMPTR DS    A                        ADDR OF TRANS PARM (IF PRESENT)
JPARM    DS    0A                       OPTION PARMS (PARM 1,2,3,4)
*                                       PARAMETER (OPTION BYTE 1)
JPARM1   DSW   JLIST,                          PRINT LISTING           X
               JXREF,                          PRINT XREF              X
               JESD,                           PRINT ESD'S             X
               JRLD,                           PRINT RLD'S             X
               JDECK,                          PUNCH DECK              X
               JLINK,                          WRITE OBJECT MODULE     X
               JTEST                           PUNCH SYMBOL TABLE
*                                       PARAMETER (OPTION BYTE 2)
JPARM2   DSW   JRENT,                          RE-ENTRANT CHECKING     X
               JALGN,                          ALIGNMENT CHECKING      X
               JSYSMAC,                        PRINT SYSTEM MACROS     X
               JALOGIC,                        PRINT ASSEMBLER LOGIC   X
               JMLOGIC,                        PRINT MACRO LOGIC       X
               JCALLS                          PRINT INNER MACRO CALLS
*                                       PARAMETER (OPTION BYTE 3)
JPARM3   DSW   JTERM,                          PRINT TO TERMINAL       X
               JSTMT,                          PRINT STMT NO. ON TERM  X
               JNUM,                           PRINT SEQ NO. ON TERM   X
               JMINXREF,                       SHORT XREF              X
               JMINBUF,,                       MINIMUM BUFFERS OR      X
               JLNCTKEY,                       FIXED LINECNT           X
               JMSGLKEY                        FIXED MSGLEVEL
*                                       PARAMETER (OPTION BYTE 4)
JPARM4    DSW   JYFLAG,                 ERR MSG IFO205 IF ON   @OX09734X
               JMBUF,                   MULTIBUFFERS REQ IF ON @AZ13738X
               ,,,,JMCHECK              FLAG FOR MLC           @AZ13738
JPREFIX  DS    CL3                      COMPONENT NAME
*                                       WARNING FLAGS
JWARNFLG DSW   JYCON,                          RELOCATABLE YCON        X
               JREENTR                         REENTRANT CHK FAILED
*                                       POST PROCESSOR FLAGS
JRECCHK  DSW   JRLDCHK,                        RLD RECORDS PRESENT     X
               JXREFCHK,                       XREF RECORDS PRESENT    X
               JERRCHK,                        ERROR RECORDS PRESENT   X
               JESDCHK,                        ESDID PRESENT ON END    X
               JENDCHK                         PUNCH END CARD
*                                       ERROR FLAGS TO POST PROCESSOR
JINDERRF DSW   JMISLIN,                        MISSING SYSLIN DD CARD  X
               JMISPCH,                        MISSING SYSPUNCH DD CARDX
               JINVOPT,                        INVALID OPTION          X
               JESDOFLO,                       ESD OVERFLOW            X
               JMISPRT,                        MISSING SYSPRINT DD CARDX
               JMISTERM,                       MISSING SYSTERM DD CARD X
               JMISLIB                         SYSLIB DD CARD MISSING
*                                       PDUMP FLAGS
JPDFLAG  DSW   JDUMPX0,                        DUMP PHASE X0           X
               JDUMPX1,                        DUMP PHASE X1           X
               JDUMPX2,                        DUMP PHASE X2           X
               JDUMPX3,                        DUMP PHASE X3           X
               JDUMPX4,                        DUMP PHASE X4           X
               JDUMPX5,                        DUMP PHASE X5           X
               JDUMPX6                         DUMP PHASE X6
*                                       COMMUNICATION FLAGS FOR JINMLC
JINFLAG  DSW   JIN2ND,                         ENTERED JININIT ONCE    X
               JINLIB                          INPUT FROM LIBRARY
*                                       COMMUN. FLAGS FOR PRT/PCH
JOUTFLAG DSW   JOUT2ND,                        ENTERED JOUTINIT ONCE   X
               JNOSEQPH,                       DON'T SEQ PUNCH @AX14816X
               JSUPPRT                         SUPR PRNT 1 LINE@AX14816
*                                       COMMUNICATION FLAGS FOR MLC
JMLCFLAG DSW   JPT4STAR,                       POINT TO START OF FILE  X
               JPT4READ,                       READ TO FOLLOW POINT    X
               JPT4WRIT,                       WRITE TO FOLLOW POINT   X
               JPT4GET,                        GET TO FOLLOW POINT     X
               JDBLALL                  FILES CAN BE DBLBUF
JMLC     DS    A                        ADDRESS OF MAIN LINE CONTROL
JPUTL    EQU   0                        DISPLACEMENT FOR JPUTL
JPUTM    EQU   4                                         JPUTM
JGETL    EQU   8                                         JGETL
JTRUNC   EQU   12                                        JTRUNC
JRELSE   EQU   16                                        JRELSE
JREAD    EQU   20                                        JREAD
JWRITE   EQU   24                                        JWRITE
JCHECK   EQU   28                                        JCHECK
JGETCORE EQU   32                                        JGETCORE
JFRECORE EQU   36                                        JFRECORE
JNOTE    EQU   40                                        JNOTE
JPOINT   EQU   44                                        JPOINT
JINMLC   DS    A                        ADDR OF INPUT MAIN LINE CONTROL
JINPUT   EQU   0                        DISPLACEMENT FOR JINPUT
JFIND    EQU   4                                         JFIND
JNOTELB  EQU   8                                         JNOTELB
JPOINTLB EQU   12                                        JPOINTLB
JININIT  EQU   16                                        JININIT
JOUTMLC  DS    A                        ADDR OF OUTPUT MAIN LINE CONTRL
JPRINT   EQU   0                        DISPLACEMENT FOR JPRINT
JPUNCH   EQU   4                                         JPUNCH
JOUTINIT EQU   8                                         JOUTINIT
JPDUMP   DS    A                        ADDRESS OF PDUMP ROUTINE
JNOTEVAL DS    CL8                      VALUE FROM JNOTE
JRECIN   DS    F                        NUMBER OF RECORDS FROM SYSIN
JRECLIB  DS    F                        NUMBER OF RECORDS FROM LIBRARY
JRECPCH  DS    F                        NUMBER OF CARDS PUNCHED
JRECPRT  DS    F                        NUMBER OF LINES PRINTED
JSLEN    DS    A                        LENGTH OF AREA (JEOS-JBOS)
JBOS     DS    A                        BEGINNING OF AVAILABLE CORE
JEOS     DS    A                        NEXT AVAILABLE GETCORE AREA
JSAVELVL EQU   10                       NUMBER OF SAVE LEVELS
JSAVESZ  EQU   4*(R9-R2+1)              SIZE OF ONE SAVE AREA IN BYTES
JCLVLPTR DS    A                        CURRENT SAVE LEVEL PTR
         DS    A                        SIZE OF ONE SAVE AREA
JSAVETBL DS    (JSAVESZ*JSAVELVL/4)A    PUSH/POP SAVE AREA
JABORT   DS    A                        ABORT ROUTINE LINKAGE
JAABORT  DS    A                        ADDR OF ABORT ROUTINE
JSYSOPEN DS    A                        WORKFILE OPEN
JSYSCLOS DS    A                        WORKFILE CLOSE
CORESIZE DS    F                        REQUESTED WORKAREA     @AZ13738
OLDBUF   DS    F                        PTR TO MBUF LAST USED  @AZ13738
CURRBUF  DS    F                        PTR TO MBUF IN USE     @AZ13738
BUFSTART DS    F                        PTR TO START OF BUFTABL@AZ13738
LOWPRIOR DS    F                        PTR TO LAST ENTRY      @AZ13738
HIMASK   DS    H                        HIGEST PRIORITY VALUE  @AZ13738
LOMASK   DS    H                        LOWEST PRIORITY VALUE  @AZ13738
CURRMASK DS    H                        SAVEAREA FOR PRIORITY  @AZ13738
NRMBUF   DS    H                        NUMBER OF MBUFFERS     @AZ13738
JCONTCL  DS    H                        CONTINUE COLUMN
JENDCOL  DS    H                        END COLUMN
ENTRPUTL DS    A                        ENTRY POINT OF PUTLINE
JDWORD   DS    D                        DOUBLE WORD OF TEMP STORAGE
JFWORD1  DS    F                        TWO FULL WORDS
JFWORD2  DS    F                               OF TEMP STORAGE
JHWORD1  DS    H                        TWO HALF WORDS
JHWORD2  DS    H                               OF TEMP STORAGE
JSRCLN   DS    F                        DATA PORTION MOVE LENGTH  (1-7)
JBEGCL   DS    F                        BEGIN COLUMN MINUS 1      (2-7)
JCTCHR   DS    F                        CONT CHR COLUMN MINUS 1   (3-7)
JSEQCL   DS    F                        SEQ FLD BEGIN COL MINUS 1 (4-7)
JSEQLN   DS    F                        SEQ FLD MOVE LENGTH       (5-7)
JCTBGN   DS    F                        CONT COLUMN MINUS 1       (6-7)
JCTLN    DS    F                        CONT FLD MOVE LENGTH      (7-7)
JINFILE  DS    H                        INPUT FILE NO. FOR X4,X5,X6
JOUTFILE DS    H                        OUTPUT FILE NO. FOR X4,X5,X6
JENTRYPT DS    A                        ENTRY POINT ADDR FOR END CARD
JESDID   DS    H                        ESDID FOR OBJECT END CARD
JPAGENO  DS    H                        PAGE NUMBER FOR LISTING
JDPASS   DS    CL56                     COMMUN. BETWEEN X2A AND X3N
JSEVER   DS    X                        HIGHEST SEVERITY FOR X5, X6
JPRTONLY DS    X                        CATASTROPHIC ERROR IN X4
         DSW   JSYSGEN                  OFF INDICATES SYSGEN MODE
         DS    X                        (NOT USED)
JLITLNG  DS    H                        MAXIMUM LITERAL LENGTH
JTBLTRT  DS    CL51                     TRANSLATE AND TEST TABLE
JTRTABLE DS    CL256                    SELF MAPPING TRANSLATE TABLE
JSAFE    DS    18F                      SAVE AREA FOR PDUMPS
JIDR     DS    CL39                     IDR
JCOMEND  DS    0D                       END OF COMMON
* THIS DSECT DESCRIBE BUFFERENTRYS IN MULTIBUFFER MODE         @AZ13738
BUFENTRY DSECT                                                 @AZ13738
FWBUFPTR EQU   *-BUFENTRY               PTS TO NEXT ENTRY      @AZ13738
         DS    F                        PTS TO NEXT ENTRY      @AZ13738
FWCHAIN  EQU   *-BUFENTRY               PTS TO NEXT SEQ BUFF   @AZ13738
         DS    F                        PTS TO NEXT SEQ BUFF   @AZ13738
BWCHAIN  EQU   *-BUFENTRY               PTS TO PREV. SEQ BUFF  @AZ13738
         DS    F                        PTS TO PREV. SEQ BUFF  @AZ13738
BUFTTR   EQU   *-BUFENTRY               BUFFER TTR VALUE       @AZ13738
BUFNOTE  EQU   *-BUFENTRY               TTR VALUE WITH BUF DISP@AZ13738
         DS    F                        BUFFER TTR VALUE       @AZ13738
BUFDISPL EQU   *-BUFENTRY               DISPL OF REC INTO BUFF @AZ13738
         DS    H                        DISPL OF REC INTO BUFF @AZ13738
PRIOR    EQU   *-BUFENTRY               PRIORITY VALUE         @AZ13738
         DS    H                        PRIORITY VALUE         @AZ13738
BUFADR   EQU   *-BUFENTRY               PTR TO BUFFER          @AZ13738
         DS    F                        PTR TO BUFFER          @AZ13738
BUFFEND  EQU   *                        END OF ENTRY           @AZ13738
BUFENLN  EQU   BUFFEND-BUFENTRY         LENGH OF ENTRY         @AZ13738
./ ADD NAME=JCSECT
         MACRO
         JCSECT &PARM
         GBLC  &COMPNM,&ASMID
         LCLC  &X,&Y
.*
.*       THIS MACRO GENERATES A CSECT STATEMENT WITH A CSECT NAME
.*       COMPOSED FROM THE MACRO INSTRUCTION OPERANDS
.*       AND AN EQU TO THIS NAME IF WANTED.
         AIF   (K'&PARM LT 7).ERR1
         AIF   ('&PARM'(1,1) NE '(').ERR1
         AIF   ('&PARM'(K'&PARM,1) NE ')').ERR1
         AIF   (K'&PARM EQ 7).NXA
         AIF   ('&PARM'(7,1) NE '=').ERR1
.NXA     AIF   ('&PARM'(2,3) NE '&ASMID').ERR1
.*
&X       SETC  '&PARM'(2,5)
&COMPNM&X CSECT
.*
         AIF   (K'&PARM EQ 7).NXB
&Y       SETC  '&PARM'(8,K'&PARM-8)
&Y       EQU   &COMPNM&X
.NXB     MEXIT
.*
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JDKEY
         MACRO
&NAME    JDKEY &KEYWORD=,&SPOOL=NO,&USAGE=ANY,&CONVERT=,&STMTYPE=, @H1C+
               &LIST=NO                                            @H3A
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = IEFJDKEY                                        @H1C
.*                                                                    *
.*   DESCRIPTIVE NAME = JCL KEYWORD DEFINITION                        *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,1983,              *
.*               LICENSED MATERIAL - PROGRAM                          *
.*               PROPERTY OF IBM, REFER TO COPYRIGHT                  *
.*               INSTRUCTIONS FORM G120-2083                          *
.*                                                                    *
.*   STATUS = OS/VS2 JBB1329                                          *
.*                                                                    *
.*   FUNCTION = JDKEY GENERATES THE KEYWORD SECTION IN THE JDT        *
.*              THAT IS ASSOCIATED WITH  THE VERB SPECIFIED ON        *
.*              THE PREVIOUS JDVERB MACRO.                            *
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = NONE                                           *
.*                                                                    *
.*      RESTRICTIONS = THE JDKEY MACRO CAN ONLY FOLLOW JDVERB,        *
.*                     JDPARM, OR ENDSUB MACROS.                      *
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO JDKEY  *
.*                                                                    *
.*             KEYWORD           DESCRIPTION                          *
.*                                                                    *
.*             - &NAME           ONLY USED FOR OUTPUT LABEL           *
.*             - &KEYWORD=       FOR IDENTIFYING THE KEYWORD          *
.*             - &SPOOL=         FLAG BIT TO INDICATE SPOOLING        *
.*                               (YES OR NO)                          *
.*             - &USAGE=         FLAG BITS TO INDICATE TYPE OF        *
.*                               INTERFACE DESIRED                 @H1C
.*             - &CONVERT=       USED TO SPECIFY REFERRAL DATA     @H1A
.*             - &STMTYPE=       THE REFERRAL STATEMENT TYPE       @H1A
.*             - &LIST=          JDPARM PARAMETERS ARE LIST ITEMS  @H3A
.*                               IF LIST=YES                       @H3A
.*                                                                    *
.*     OUTPUT = KEYWORD SECTION OF JDT                                *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE JDKEY MACRO.              *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN PARAMETER SPECIFIED IS INCORRECT.         *
.*              (SEE RESTRICTIONS). THE MACRO WILL ATTEMPT TO SCAN    *
.*              FOR ADDITIONAL ERRORS. (SEE MESSAGES BELOW)           *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-TERMINATING ERROR DETECTED BY THE JDKEY MACRO.         *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 16                    *
.*              ISSUED WHEN THERE HAS BEEN NO JDTMAC MACRO            *
.*              SPECIFIED. (SEE RESTRICTIONS AND MESSAGES)            *
.*                                                                    *
.*   EXTERNAL REFERENCES = JDSCAN MACRO IS USED FOR VALIDATION OF     *
.*                         KEYWORD AND STATEMENT KEYWORD PARAMETERS.  *
.*                         I.E., 1-8 CHARACTERS, FIRST CHARACTER      *
.*                         MUST BE ALPHABETIC OR NATIONAL (@,#,$);    *
.*                         2-7 MUST BE ALPHANUMERIC OR NATIONAL.   @R1A
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   ERROR MNOTES =                                                   *
.*                                                                    *
.*    MNOTE 4,'CONVERT=REFERRAL NOT SPECIFIED; STMTYPE IGNORED'    @H1A
.*                                                                 @H1A
.*    MNOTE 12,'KEYWORD SPECIFICATION EXCEEDS 8 CHARACTERS'           *
.*    MNOTE 12,'KEYWORD=&KEYWORD HAS INVALID CHARACTERS'           @R1A
.*    MNOTE 12,'REQUIRED KEYWORD PARAMETER IS NOT SPECIFIED'          *
.*    MNOTE 12,'CONVERT=&CONVERT INVALID. MUST BE REFERRAL'        @H1A
.*    MNOTE 12,'SPOOL=&SPOOL INVALID. MUST BE YES, NO, Y, OR N'       *
.*    MNOTE 12,'USAGE=&USAGE INVALID. MUST BE ANY, SYSTEM, JOBONLY,   *
.*              OR STEPONLY'                                       @H1C
.*    MNOTE 12,'JDKEY MACRO SPECIFIED OUT OF ORDER'                   *
.*    MNOTE 12,'AN ENDSUB MACRO EXPECTED TO END A DEFINED SUBLIST,    *
.*              BUT WAS NOT SPECIFIED'                                *
.*    MNOTE 12,'REQUIRED STMTYPE PARAMETER IS NOT SPECIFIED'       @H1A
.*    MNOTE 12,'STMTYPE SPECIFICATION EXCEEDS 8 CHARACTERS'        @H1A
.*    MNOTE 12,'STMTYPE=&STMTYPE HAS INVALID CHARACTERS'           @H1A
.*    MNOTE 12,'LIST=&LIST INVALID. MUST BE YES, NO, Y, OR N'      @H3A
.*                                                                    *
.*    MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'*
.*                                                                    *
.*   CHANGE ACTIVITY = H0,R1,H1,H2,R2,H3                           @H3A
.*    $H0= EXTJCL  JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL   @H0A
.*    $R1= PPP0010 JBB1328 810508 PDC5: MISSING MNOTES             @R1A
.*    $H1= EXTJCL  JBB1328 811202 PDC5: SUPPORT FOR EXTENDED JCL   @H1A
.*    $H2= EXTJCL  JBB1328 820330 PDC5: SUPPORT FOR EXTENDED JCL   @H2A
.*    $R2= PPP0101 JBB1328 820521 PDC5: POSSIBLE ALIGNMENT ERROR   @R2A
.*    $H3= EXTJCL  JBB1329 820611 PDC5: SUPPORT FOR EXTENDED JCL   @H3A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A NO MNOTES WERE ISSUED FOR INVALID OWNER AND KEYWORD PARAMETERS,  *
.*   AND BLKID PARAMETER WAS BEING SET WITH INVALID DATA.          @R1A
.* ADD BITS TO INDICATE THAT A KEYWORD MAY APPEAR ONLY AT A JOB OR    *
.*   STEP LEVEL.                                                   @H1A
.* ADD NAME TYPE CONVERSION AND ITS ASSOCIATED STATEMENT TYPE      @H1A
.* DELETED OWNER NAME (&OWNER) AND BLOCK ID (&BLKID) KEYWORDS      @H1A
.* CHANGE REFERRAL BIT TO BE GLOBAL FOR USE BY JDPARM MACRO.       @H2A
.* DELETED FULLWORD ALIGNMENT BOUNDARY OF DS 0F FROM DEFINITION.   @R2A
.* ADD KEYWORD LIST=YES OR NO TO SET A GLOBAL BIT TO PASS TO JDPARM   *
.*   AND JDSUB MACROS TO INDICATE THE PARAMETERS ARE LIST ITEMS.   @H3A
.*--------------------------------------------------------------------*
         LCLB  &S0,&U0,&U1,&U2       BIT FLAGS USED                @H2C
         GBLB  &R1,&L2                                             @H3C
.*---------------------------------------------------------------*
.*   GLOBALS THAT MAY BE ACTIVE OR BE MADE ACTIVE IN THIS MACRO, *
.*   RESPECTIVELY: JDTMAC, JDVERB, JDKEY, JDPARM, JDSUB, ENDSUB, *
.*   AND ENDJDT.                                                 *
.*---------------------------------------------------------------*
         GBLB  &JACT,&VACT,&KACT,&PACT,&SPACT,&EPACT,&EJACT
         GBLA  &LEN                  USED FOR DETERMINING MACRO LENGTH
.*---------------------------------------------------------------*
.*   GLOBALS USED FOR OFFSETS. KEYWORD AND PARAMETER COUNTERS ONE*
.*   AND TWO.                                                    *
.*---------------------------------------------------------------*
         GBLA  &K1,&K2,&P1,&P2
.*---------------------------------------------------------------* @R1A
.*   GLOBALS USED FOR ERROR INDICATORS RETURNED FROM INTERNAL    * @R1A
.*   MACRO JDSCAN.                                               * @R1A
.*   &$ERRBAD IS THE INVALID CHARACTER ERROR BIT.                * @R1A
.*   &$ERRBIG IS THE GREATER THAN 8 CHARACTERS ERROR BIT.        * @R1A
.*   &$ERRBLK IS THE REQUIRED PARAMETER MISSING OR BLANKS BIT.   * @R1A
.*---------------------------------------------------------------* @R1A
         GBLB  &$ERRBAD,&$ERRBIG,&$ERRBLK                          @R1A
.*---------------------------------------------------------------* @R1A
.*  GLOBAL USE FOR PASSING VALUE TO INTERNAL MACRO JDSCAN.       * @R1A
.*---------------------------------------------------------------* @R1A
         GBLC  &ARGU                                               @R1A
.*---------------------------------------------------------------*
.*   CHECK FOR GLOBAL BITS ACTIVE. ONLY VERB, PARAMETER AND      *
.*   ENDSUB GLOBALS ARE ALLOWED.                                 *
.*---------------------------------------------------------------*
         AIF   (&VACT  EQ 1).ACTOFF
         AIF   (&PACT EQ 1 OR &EPACT EQ 1).SETEQU
.*---------------------------------------------------------------*
.*    IF NONE OF THE FOLLOWING BITS ARE ON THEN THIS MUST BE THE *
.*    FIRST MACRO INVOKED IN THE JDT DEFINITIONS.                *
.*---------------------------------------------------------------*
         AIF   (&JACT EQ 0 AND &KACT EQ 0 AND &EJACT EQ 0 AND &SPACT   +
               EQ 0).NOJDT     NONE ON?  GO MNOTE IT.
.*---------------------------------------------------------------*
.*    JDKEY DID NOT FOLLOW PROPER MACRO-> MNOTE IT.              *
.*---------------------------------------------------------------*
         MNOTE 12,'JDKEY MACRO SPECIFIED OUT OF ORDER'
         AGO   .RESET
.*---------------------------------------------------------------*
.*  JDTMAC MUST BE THE FIRST MACRO SPECIFIED, BUT IS NOT->       *
.*  BUT IS NOT-> MNOTE IT.                                       *
.*---------------------------------------------------------------*
.NOJDT   ANOP
       MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'
         MEXIT
.*---------------------------------------------------------------*
.*     RESET APPROPRIATE ACTIVE GLOBAL BIT.                      *
.*     IF SPACT BIT IS ON HERE, MEANS THAT A SUBLIST             *
.*     WAS STARTED BUT THAT NO PARAMETERS (JDPARM MACROS)        *
.*     FOR IT HAD BEEN DEFINED YET.                              *
.*---------------------------------------------------------------*
.RESET   ANOP
&JACT    SETB  0                 RESET JDTMAC ACTIVE GLOBAL BIT
&SPACT   SETB  0                 RESET SUBLIST ACTIVE GLOBAL BIT
&EJACT   SETB  0                 RESET ENDJDT ACTIVE GLOBAL BIT
         AGO   .SETUP
.SETEQU  ANOP
PM&P2    EQU   PM&P1             ZEROES OFFSET OF THE LAST PARAMETER
&P1      SETA  &P1+1
&P2      SETA  &P2+1
*                                FOR THE PREVIOUS KEYWORD
.*---------------------------------------------------------------*
.*    RESET APPROPRIATE GLOBAL ACTIVE BIT                        *
.*---------------------------------------------------------------*
.ACTOFF  ANOP
&VACT    SETB  0                 RESET VERB ACTIVE GLOBAL BIT
&EPACT   SETB  0                 RESET END SUBLIST ACTIVE GLOBAL BIT
&PACT    SETB  0                 RESET PARAMETER ACTIVE GLOBAL BIT
         AIF   (&SPACT EQ 0).SETUP
.*---------------------------------------------------------------*
.*    JDKEY SPECIFIED BEFORE A SUBLIST WAS CLOSED-> MNOTE IT.    *
.*---------------------------------------------------------------*
         MNOTE 12,'AN ENDSUB MACRO EXPECTED TO END A DEFINED SUBLIST,  +
               BUT WAS NOT SPECIFIED'
&SPACT   SETB  0                 RESET SUBPARM ACTIVE GLOBAL BIT
.SETUP   ANOP
&KACT    SETB  1                 SET BIT ON FOR JDKEY ACTIVE GLOBAL
&K1      SETA  &K1+1             SET GLOBAL FOR KEYWORD OFFSET ONE
&K2      SETA  &K2+1             SET GLOBAL FOR KEYWORD OFFSET TWO
&LEN     SETA  &LEN+1            UPDATE LENGTH SETUP VARIABLE
.*---------------------------------------------------------------* @R1A
.*    SETUP ARGUMENT TO PASS TO JDSCAN MACRO.                    * @R1A
.*---------------------------------------------------------------* @R1A
&ARGU    SETC  '&KEYWORD'                                          @R1A
         JDSCAN &ARGU                                              @R1A
         AIF   (&$ERRBAD EQ 1).BADKEY     KEYWORD INVALID          @R1A
         AIF   (&$ERRBIG EQ 1).BIGKEY     EXCEEDS 8 CHARACTERS     @R1A
         AIF   (&$ERRBLK EQ 1).BLKKEY     KEYWORD IS BLANKS        @R1A
         AGO   .CONTK                     NO ERRORS-CONTINUE       @R1A
.*---------------------------------------------------------------* @R1A
.*    KEYWORD PARAMETER HAS INVALID CHARACTERS-> MNOTE IT.       * @R1A
.*---------------------------------------------------------------* @R1A
.BADKEY  ANOP                                                      @R1A
         MNOTE 12,'KEYWORD=&KEYWORD HAS INVALID CHARACTERS'        @R1A
         AGO   .BLANKK                                             @R1A
.*---------------------------------------------------------------*
.*    KEYWORD PARAMETER IS NOT 1 TO 8 CHARACTERS-> MNOTE IT.     *
.*---------------------------------------------------------------*
.BIGKEY  ANOP                                                      @R1A
         MNOTE 12,'KEYWORD SPECIFICATION EXCEEDS 8 CHARACTERS'
         AGO   .BLANKK                                             @R1A
.*---------------------------------------------------------------* @R1A
.*    KEYWORD PARAMETER IS NOT SPECIFIED-> MNOTE IT.             * @R1A
.*---------------------------------------------------------------* @R1A
.BLKKEY  ANOP                                                      @R1A
         MNOTE 12,'REQUIRED KEYWORD PARAMETER IS NOT SPECIFIED'    @R1M
.*---------------------------------------------------------------* @R1A
.*    JDKEY KEYWORD IS SET TO BLANKS IF ANY ERRORS DETECTED.     * @R1A
.*---------------------------------------------------------------* @R1A
.BLANKK  ANOP                                                      @R1A
B&LEN    EQU    *                BEGIN JDKEY LENGTH DEFINITION     @R1A
KY&K1    DC    CL8' '            KEYWORD NAME                      @R1A
         AGO   .JUMPK                                              @R1A
.*---------------------------------------------------------------*
.*    BEGIN JDKEY DEFINITIONS                                    *
.*---------------------------------------------------------------*
.CONTK   ANOP
B&LEN    EQU    *                BEGIN JDKEY LENGTH DEFINITION
KY&K1    DC    CL8'&KEYWORD'     KEYWORD NAME
.JUMPK   ANOP                                                      @R1A
         DC    AL2(E&LEN-B&LEN)  LENGTH OF KEY SECTION
         DC    AL2(KY&K2-KY&K1)  OFFSET TO NEXT KEYWORD (ZERO IF NONE)
         DC    XL1'01'           VERSION NUMBER OF JDKEY SECTION
.*---------------------------------------------------------------*
.*  THIS SECTION SETS THE BIT IN THE JDT BIT FLAG BYTE FOR SPOOL.*
.*  CHECK TO SEE IF SPOOL WAS SPECIFIED. (DEFAULT IS NO)         *
.*---------------------------------------------------------------*
         AIF   ('&SPOOL' EQ 'Y' OR '&SPOOL' EQ 'YES' OR '&SPOOL' EQ 'N'+
               OR '&SPOOL' EQ 'NO').S0
.*---------------------------------------------------------------*
.*    SPOOL PARAMETER SPECIFIES AN INVALID PARAMETER-> MNOTE IT. *
.*---------------------------------------------------------------*
         MNOTE 12,'SPOOL=&SPOOL INVALID. MUST BE YES, NO, Y, OR N'
.S0      ANOP
&S0      SETB  ('&SPOOL' EQ 'Y' OR '&SPOOL' EQ 'YES')
.*---------------------------------------------------------------*
.*   THIS SECTION SETS THE BIT IN THE JDT BIT FLAG BYTE FOR      *
.*   USAGE. CHECK TO SEE IF USAGE WAS SPECIFIED.                 *
.*---------------------------------------------------------------*
         AIF   ('&USAGE' EQ 'ANY' OR '&USAGE' EQ 'SYSTEM' OR '&USAGE'  +
               EQ 'JOBONLY' OR '&USAGE' EQ 'STEPONLY').U0          @H1C
.*---------------------------------------------------------------*
.*    USAGE PARAMETER SPECIFIES AN INVALID PARAMETER-> MNOTE IT. *
.*---------------------------------------------------------------*
         MNOTE 12,'USAGE=&USAGE INVALID. MUST BE ANY, SYSTEM, JOBONLY, +
               OR STEPONLY'                                        @H1C
.U0      ANOP
&U0      SETB  ('&USAGE' EQ 'SYSTEM')
&U1      SETB  ('&USAGE' EQ 'JOBONLY')                             @H1A
&U2      SETB  ('&USAGE' EQ 'STEPONLY')                            @H1A
.*---------------------------------------------------------------* @H1A
.*   THIS SECTION SETS THE BIT FOR REFERRAL IF IT IS INDICATED.  * @H1A
.*---------------------------------------------------------------* @H1A
        AIF ('&CONVERT' EQ 'REFERRAL' OR '&CONVERT' EQ '').SETCONV @H1A
.*---------------------------------------------------------------* @H1A
.*   CONVERT PARAMETER SPECIFIES AN INVALID PARAMETER-> MNOTE IT.* @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'CONVERT=&CONVERT INVALID. MUST BE REFERRAL'     @H1A
.SETCONV ANOP                                                      @H1A
&R1      SETB  ('&CONVERT' EQ 'REFERRAL')                          @H1A
.*---------------------------------------------------------------* @H3A
.*  CHECK TO SEE IF LIST WAS SPECIFIED. (DEFAULT IS NO)          * @H3A
.*---------------------------------------------------------------* @H3A
         AIF   ('&LIST' EQ 'Y' OR '&LIST' EQ 'YES' OR '&LIST' EQ 'N' OR+
               '&LIST' EQ 'NO').L2                                 @H3A
.*---------------------------------------------------------------* @H3A
.*    LIST PARAMETER SPECIFIES AN INVALID PARAMETER-> MNOTE IT.  * @H3A
.*---------------------------------------------------------------* @H3A
         MNOTE 12,'LIST=&LIST INVALID. MUST BE YES, NO, Y, OR N'   @H3A
.L2      ANOP                                                      @H3A
&L2      SETB  ('&LIST' EQ 'Y' OR '&LIST' EQ 'YES')                @H3A
******************************************************************
*  SPOOL FLAG BYTE-                                              *
*  THE BIT IS :   BIT        (IF ON)                             *
*    FOR SPOOL=    0 -KEYWORD WILL BE SPOOLED TO SYSOUT DATASET  * @H1C
*                                                                *
******************************************************************
         DC    BL1'&S0.0000000'        JDT FLAG BYTE
         DC    XL1'00'                 RESERVED                    @H1C
******************************************************************
*        USAGE AND CONVERSION TYPE FLAG BYTE.                    *
*----------------------------------------------------------------*
*                 BIT        (IF ON)                             *
*    FOR USAGE=    0 -KEYWORD USED IN SYSTEM INTERFACE ONLY      *
*                  1 -KEYWORD MAY APPEAR ONLY ON A VERB THAT     * @H1A
*                     IS CODED BEFORE THE FIRST STEP.            * @H1A
*                  2 -KEYWORD MAY APPEAR ONLY ON A VERB THAT     * @H1A
*                     IS CODED AFTER AN EXEC.                    * @H1A
*                            (IF OFF)                            *
*                  0 -KEYWORD USED VIA JCL OR DYNAMIC            *
*                     ALLOCATION OR SYSTEM PROGRAMMING           *
*                     INTERFACE                                  *
*----------------------------------------------------------------*
*                 BIT        (IF ON)                             *
*      CONVERT=    4 -STATEMENT IS REFERRAL DATA TYPE            * @H1A
******************************************************************
         DC    BL1'&U0&U1&U2.0&R1.000' JDT FLAG BYTE TWO           @H1C
.*---------------------------------------------------------------* @H1A
.* CHECK TO SEE IF STMTYPE WAS SPECIFIED IF CONVERT=REFERRAL.    * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   (&R1 EQ 0).ZEROES   CONVERT NOT= REFERRAL; SKIP IT  @H1A
&ARGU    SETC  '&STMTYPE'          SETUP ARGUMENT FOR PASSING      @H1A
         JDSCAN &ARGU                                              @H1A
         AIF   (&$ERRBAD EQ 1).BADSTM       INVALID CHARACTERS     @H1A
         AIF   (&$ERRBIG EQ 1).BIGSTM       EXCEEDS 8 CHARACTERS   @H1A
         AIF   (&$ERRBLK EQ 1).BLKSTM       MISSING PARAMETER      @H1A
         AGO   .CONTS                       NO ERRORS-CONTINUE     @H1A
.*---------------------------------------------------------------* @H1A
.* STMTYPE PARAMETER HAS INVALID CHARACTERS-> MNOTE IT.          * @H1A
.*---------------------------------------------------------------* @H1A
.BADSTM  ANOP                                                      @H1A
         MNOTE 12,'STMTYPE=&STMTYPE HAS INVALID CHARACTERS'        @H1A
         AGO   .ZEROES                                             @H1A
.*---------------------------------------------------------------* @H1A
.* STMTYPE PARAMETER EXCEEDS MAX 8 CHARACTERS-> MNOTE IT.        * @H1A
.*---------------------------------------------------------------* @H1A
.BIGSTM  ANOP                                                      @H1A
         MNOTE 12,'STMTYPE SPECIFICATION EXCEEDS 8 CHARACTERS'     @H1A
         AGO   .ZEROES                                             @H1A
.*---------------------------------------------------------------* @H1A
.* STMTYPE PARAMETER NOT SPECIFIED -> MNOTE IT.                  * @H1A
.*---------------------------------------------------------------* @H1A
.BLKSTM  ANOP                                                      @H1A
         MNOTE 12,'REQUIRED STMTYPE PARAMETER IS NOT SPECIFIED'    @H1A
.ZEROES  ANOP                                                      @H1A
         AIF   ('&STMTYPE' EQ '').OVERSTM                          @H1A
.*---------------------------------------------------------------* @H1A
.* STMTYPE SPECIFIED AND CONVERT=REFERRAL IS NOT-> MNOTE IT.     * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 4,'CONVERT=REFERRAL NOT SPECIFIED; STMTYPE IGNORED' @H1A
.OVERSTM DC    XL8'00'           REFERRAL STATEMENT TYPE           @H1A
         AGO   .JUMPS                                              @H1A
.CONTS   ANOP                                                      @H1A
         DC    CL8'&STMTYPE'     REFERRAL STATEMENT TYPE           @H1A
.JUMPS   ANOP                                                      @H1A
E&LEN    EQU   *                 END JDKEY LENGTH DEFINITION
         MEND
./ ADD NAME=JDPARM
         MACRO
&NAME    JDPARM &CONVERT=CHAR,&KEY=,&KEYDFLT=,&MAXLEN=,&MINLEN=1,      +
               &CONLEN=,&HIGH=2147483647,&LOW=0,&LEVNUM=1,&LEVLEN=,    +
               &CHOICE1=,&CHOICE2=,&CHOICE3=,&CHOICE4=,&CHOICE5=,      +
               &CHOICE6=,&CHOICE7=,&CHOICE8=,&REPEAT=0,            @H1C+
               &FSTCHAR=,&OTHCHAR=,&FSTSPEC=,&OTHSPEC=             @H3A
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = IEFJDPRM                                        @H1C
.*                                                                    *
.*   DESCRIPTIVE NAME = JCL PARAMETER DEFINITION                      *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,1983,              *
.*                LICENSED MATERIAL - PROGRAM,                        *
.*                PROPERTY OF IBM, REFER TO COPYRIGHT                 *
.*                INSTRUCTIONS FORM G120-2083                         *
.*                                                                    *
.*   STATUS = OS/VS2 JBB1329                                          *
.*                                                                    *
.*   FUNCTION = JDPARM MACRO  GENERATES  THE SUBPARAMETER SECTION     *
.*              IN THE JDT TO BE ASSOCIATED WITH THE KEYWORD THAT     *
.*              WAS SPECIFIED IN THE PREVIOUS JDKEY MACRO.            *
.*                                                                    *
.*     NOTES = SPECIFY THE APOSTROPHE AND THE AMPERSAND AS         @H3A
.*             DOUBLE CHARACTERS FOR SPECIAL CHARACTERS.           @H3A
.*                                                                    *
.*      DEPENDENCIES = IF JDKEY MACRO IS INVOKED WITH CONVERT=     @H3A
.*                     REFERRAL, THEN  ALL THE  PARAMETERS FOR     @H3A
.*                     THAT KEYWORD MUST BE REFERRAL ALSO.  IF     @H3A
.*                     JDKEY IS  NOT REFERRAL, ONLY CONVERSION     @H3A
.*                     TYPES  CHAR, INTEGER,  HEX,  AND CHOICE     @H3A
.*                     WILL BE  SUPPORTED FOR PARAMETER TYPES.     @H3A
.*                                                                    *
.*      RESTRICTIONS = 1) THE  JDPARM MACRO  CAN  ONLY  FOLLOW        *
.*                     JDKEY, ENDSUB, JDSUB, OR ANOTHER JDPARM        *
.*                     MACRO.                                         *
.*                     2) IF JDPARM IS  INVOKED  WITHIN A LIST     @H3A
.*                     ITEM  DEFINITION, ONLY ONE  IS ALLOWED.     @H3A
.*                     THE  REPEAT  KEYWORD  MUST  BE  USED TO     @H3A
.*                     CREATE IDENTICAL LIST ITEM DEFINITIONS.     @H3A
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO JDPARM *
.*                                                                    *
.*           PARAMETER          DESCRIPTION                           *
.*                                                                    *
.*           - &NAME            USED ONLY AS A LABEL ON THE OUTPUT    *
.*           - &CONVERT=        CONVERSION TYPE OF PARAMETER          *
.*           - &KEY=            KEY FOR THIS PARAMETER                *
.*           - &KEYDFLT=        DEFAULT VALUE FOR KEY                 *
.*           - &MAXLEN=         MAXIMUM LENGTH OF PARAMETER        @H1C
.*           - &MINLEN=         MINIMUM LENGTH OF PARAMETER        @H1A
.*           - &CONLEN=         CONVERSION LENGTH OF INTEGER          *
.*                              OR HEX DATA                        @H1A
.*           - &HIGH=           HIGH RANGE OF INTEGER                 *
.*                              OR HEX DATA                        @H1A
.*           - &LOW=            LOW RANGE OF INTEGER                  *
.*                              OR HEX DATA                        @H1A
.*           - &LEVNUM=         MAXIMUM NUMBER OF LEVELS FOR CHAR  @H1A
.*           - &LEVLEN=         MAXIMUM LENGTH OF EACH LEVEL       @H1A
.*           - &FSTCHAR=        FIRST CHARACTER TYPE DEFINITION    @H2A
.*           - &OTHCHAR=        OTHER CHARACTER TYPE DEFINITION    @H2A
.*           - &FSTSPEC=        SPECIAL FIRST CHARACTER DEFINITION @H3A
.*           - &OTHSPEC=        OTHER THAN THE FIRST DEFINITION    @H3A
.*           - &CHOICE1= THRU   CHARACTER STRINGS AND THEIR BYTE      *
.*             &CHOICE8=          VALUES DEFINED FOR PARAMETERS       *
.*           - &REPEAT=         MAKES DUPLICATIONS OF SAME PARAMETER  *
.*                              FUNCTIONS AND SPECIFICATIONS          *
.*                                                                    *
.*     OUTPUT = SUBPARAMETER SECTION FOR A PREVIOUS KEYWORD           *
.*                                                                    *
.*     INVOCATION = THE FOLLOWING CHART SHOWS WHAT KEYWORDS MAY       *
.*                  BE SPECIFIED WITH EACH TYPE OF CONVERSION:        *
.*                  (R=REQUIRED; O=OPTIONAL; N=NOT USED)              *
.*                                                                    *
.*     _________________________________________________________      *
.*                                                             *
.*      KEYWORD  CHAR    HEX   INTEGER  CHOICE  REFERRAL       *
.*     __________________________________________________      *
.*                                                             *
.*      KEY        R      R       R       R        R           *
.*     __________________________________________________      *
.*                                                             *
.*      KEYDFLT    N      N       N       O        N           *
.*     __________________________________________________      *
.*                                                             *
.*      MAXLEN     R      R       R       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      MINLEN     O      O       O       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      CONLEN     N      R       R       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      HIGH       N      O       O       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      LOW        N      O       O       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      LEVNUM     O      N       N       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      LEVLEN     O      N       N       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      FSTCHAR    O      N       N       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      OTHCHAR    O      N       N       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      FSTSPEC    O      N       N       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      OTHSPEC    O      N       N       N        N           *
.*     __________________________________________________      *
.*                                                             *
.*      CHOICE#    N      N       N       R(1)     N           *
.*     __________________________________________________      *
.*                                                             *
.*      REPEAT     O      O       O       O        O           *
.*     __________________________________________________      *
.*     (1) NOTE: AT LEAST ONE CHOICE MUST BE SPECIFIED.               *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-ERROR CONDITION DETECTED BY THE JDPARM MACRO.          *
.*   OUTPUT    -INFORMATIONAL MNOTES WITH SEVERITY CODE 4             *
.*              ISSUED WHEN A PARAMETER SPECIFIED IS INCORRECT.       *
.*              THE SPECIFIED PARAMETER IS IGNORED AND/OR THE         *
.*              DEFAULT VALUE IS ASSUMED FOR THAT PARAMETER.          *
.*              (SEE MESSAGES BELOW)                                  *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE JDPARM MACRO.             *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN MACRO IS NOT INVOKED IN THE CORRECT       *
.*              ORDER (SEE RESTRICTIONS) OR CERTAIN VALUES FOUND      *
.*              MAY CAUSE SYSTEM ERRORS.  THE MACRO WILL ATTEMPT      *
.*              TO SCAN FOR ADDITIONAL ERRORS.                        *
.*              (SEE MESSAGES BELOW)                                  *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-TERMINATING ERROR DETECTED BY THE JDPARM MACRO.        *
.*   OUTPUT    -ERROR MNOTE WITH SEVERITY CODE 16                     *
.*              ISSUED WHEN JDPARM MACRO IS INVOKED PRIOR TO          *
.*              THE JDTMAC MACRO OR THE CONVERSION SPECIFIED          *
.*              BY THIS MACRO IS INCONSISTENT WITH THE JDKEY       @H2A
.*              CONVERSION OF REFERRAL. THE MACRO EXPANSION WILL   @H2A
.*              BE TERMINATED AS A RESULT OF THE ERROR.               *
.*              (SEE MESSAGES BELOW)                                  *
.*                                                                    *
.*   EXTERNAL REFERENCES = JDSCAN MACRO IS USED FOR VALIDATION        *
.*                         OF CHOICE SYMBOL SPECIFICATIONS.           *
.*                         I.E., 1-8 CHARACTERS, FIRST CHARACTER      *
.*                         MUST BE ALPHABETIC OR NATIONAL (@,#,$);    *
.*                         2-7 MUST BE ALPHANUMERIC OR NATIONAL.   @R6A
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   INFORMATIONAL MNOTES = CONVERT=CHAR                              *
.*    MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=CHAR HAVE NO MEANING.      *
.*             CHOICE PARAMETERS ARE IGNORED'                      @R5A
.*    MNOTE 4,'FSTCHAR KEYWORD HAS MULTIPLE DEFINED                   *
.*             SUBPARAMETERS.'                                     @H2A
.*    MNOTE 4,'OTHCHAR KEYWORD HAS MULTIPLE DEFINED                   *
.*             SUBPARAMETERS.'                                     @H2A
.*                                                                    *
.*   INFORMATIONAL MNOTES = CONVERT=HEX                               *
.*    MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=HEX HAVE NO MEANING.       *
.*             CHOICE PARAMETERS ARE IGNORED'                      @H1A
.*    MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=HEX HAVE NO MEANING.  *
.*             LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'              @H1A
.*    MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR  CONVERT=HEX  HAVE NO       *
.*             MEANING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'   @H2A
.*                                                                    *
.*   INFORMATIONAL MNOTES = CONVERT=CHOICE                            *
.*    MNOTE 4,'CONLEN NOT REQUIRED WITH CONVERT=CHOICE. CONLEN        *
.*             PARAMETER SET TO ONE'                               @R4C
.*    MNOTE 4,'MAXLEN PARAMETER IS NOT REQUIRED WITH CONVERT=CHOICE.  *
.*             MAXLEN SET TO EIGHT'                                @H1C
.*    MNOTE 4,'MINLEN PARAMETER IS NOT REQUIRED WITH CONVERT=CHOICE.  *
.*             MINLEN SET TO 1'                                    @H1A
.*    MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=CHOICE HAVE NO        *
.*             MEANING. LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'     @H1A
.*    MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR CONVERT=CHOICE HAVE NO      *
.*             MEANING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'   @H2A
.*                                                                    *
.*   INFORMATIONAL MNOTES = CONVERT=INTEGER                           *
.*    MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=INTEGER HAVE NO MEANING.   *
.*             CHOICE PARAMETERS ARE IGNORED'                      @R5A
.*    MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=INTEGER HAVE NO       *
.*             MEANING. LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'     @H1A
.*    MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR CONVERT=INTEGER HAVE NO     *
.*             MEANING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'   @H2A
.*                                                                    *
.*   INFORMATIONAL MNOTES = CONVERT=REFERRAL                          *
.*    MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=REFERRAL HAVE NO MEANING.  *
.*             CHOICE PARAMETERS ARE IGNORED'                      @H2A
.*    MNOTE 4,'MAXLEN AND/OR MINLEN FOR CONVERT=REFERRAL HAVE NO      *
.*             MEANING. MAXLEN/MINLEN PARAMETERS ARE PRESET.'      @H2A
.*    MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=REFERRAL HAVE NO      *
.*             MEANING. LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'     @H2A
.*    MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR CONVERT=REFERRAL HAVE NO    *
.*             MEANING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'   @H2A
.*                                                                    *
.*   INFORMATIONAL MNOTES = MISCELLANEOUS                             *
.*    MNOTE 4,'HIGH/LOW INVALID WITH CONVERT=&CONVERT.  HIGH/LOW      *
.*             PARAMETER IGNORED'                                     *
.*    MNOTE 4,'CONLEN NOT REQUIRED WITH CONVERT=&CONVERT. CONLEN      *
.*             PARAMETER SET TO MAXLEN KEYWORD PARAMETER.'         @R4A
.*    MNOTE 4,'KEYDFLT NOT REQUIRED WITH CONVERT=&CONVERT'         @R7A
.*                                                                    *
.*   ERROR MNOTES = CONVERT=CHAR                                      *
.*    MNOTE 12,'MAXLEN=&MAXLEN INVALID. MUST BE 1 TO 64 DECIMAL'   @H1C
.*    MNOTE 12,'MINLEN=&MINLEN INVALID. MUST BE 1 TO 64 DECIMAL'   @H1A
.*    MNOTE 12,'LEVNUM=&LEVNUM INVALID. MUST BE 1 TO 31 DECIMAL'   @H1A
.*    MNOTE 12,'LEVLEN=&LEVLEN INVALID. MUST BE 1 TO 64 DECIMAL'   @H1A
.*    MNOTE 12,'FSTCHAR=&FSTCHAR HAS AN INVALID NUMBER OF SUBPARA-    *
.*              METERS. ONLY 1 TO 4 ALLOWED.'                      @H3C
.*    MNOTE 12,'FSTCHAR=&FSTCHAR HAS INVALID SUBPARAMETERS. MUST BE   *
.*              ALL, ALPHABETIC, NUMERIC, NATIONAL, OR SPECIAL.'   @H3C
.*    MNOTE 12,'FSTCHAR=ALL IS NOT ALLOWED WITH ALPHABETIC, NUMERIC,  *
.*              NATIONAL, OR SPECIAL.'                             @H3C
.*    MNOTE 12,'EXPECTED SPECIAL CHARACTERS WERE NOT SPECIFIED FOR    *
.*              FSTCHAR=SPECIAL.'                                  @H3A
.*    MNOTE 12,'FSTSPEC SPECIFIES MORE PARAMETERS THAN THE MAXIMUM    *
.*              OF 16 ALLOWED.                                     @H3A
.*    MNOTE 12,'PARAMETER ''&FSTSPEC(&CTR)'' SPECIFIES MORE THAN      *
.*              THE ONE CHARACTER ALLOWED.'                        @H3A
.*    MNOTE 12,'OTHCHAR=&OTHCHAR HAS AN INVALID NUMBER OF SUBPARA-    *
.*              METERS. ONLY 1 TO 4 ALLOWED.'                      @H3C
.*    MNOTE 12,'OTHCHAR=&OTHCHAR HAS INVALID SUBPARAMETERS. MUST BE   *
.*              ALL, ALPHABETIC, NUMERIC, NATIONAL, OR SPECIAL.'   @H3C
.*    MNOTE 12,'OTHCHAR=ALL IS NOT ALLOWED WITH ALPHABETIC, NUMERIC,  *
.*              NATIONAL, OR SPECIAL.'                             @H3C
.*    MNOTE 12,'EXPECTED SPECIAL CHARACTERS WERE NOT SPECIFIED FOR    *
.*              OTHCHAR=SPECIAL.'                                  @H3A
.*    MNOTE 12,'OTHSPEC SPECIFIES MORE PARAMETERS THAN THE MAXIMUM    *
.*              OF 16 ALLOWED.                                     @H3A
.*    MNOTE 12,'PARAMETER ''&OTHSPEC(&CTR)'' SPECIFIES MORE THAN      *
.*              THE ONE CHARACTER ALLOWED.'                        @H3A
.*                                                                    *
.*   ERROR MNOTES = CONVERT=HEX                                       *
.*    MNOTE 12,'MAXLEN=&MAXLEN INVALID. MUST BE 1 TO 8 DECIMAL'    @H1A
.*    MNOTE 12,'MINLEN=&MINLEN INVALID. MUST BE 1 TO 8 DECIMAL'    @H1A
.*    MNOTE 12,'LOW=&LOW INVALID. MUST BE 0 TO 7FFFFFFF HEX'       @H1A
.*    MNOTE 12,'HIGH=&HIGH INVALID. MUST BE 0 TO 7FFFFFFF HEX'     @H1A
.*    MNOTE 12,'HIGH=&HHGH OR LOW=&HLOW INVALID. HIGH MUST BE GREATER *
.*             THAN OR EQUAL TO LOW VALUE.'                        @H1A
.*                                                                    *
.*   ERROR MNOTES = CONVERT=CHOICE                                    *
.*    MNOTE 12,'&CHOICE# VALUE NOT TWO HEX DIGITS'                    *
.*    MNOTE 12,'TWO SUBPARAMETERS EXPECTED WITH &CHOICE#: &NUM FOUND' *
.*    MNOTE 12,'CONVERT=CHOICE SPECIFIED BUT NO CHOICE OPTIONS        *
.*             SPECIFIED.'                                            *
.*    MNOTE 12,'KEY NOT SPECIFIED. DEFAULT KEY IGNORED'               *
.*    MNOTE 12,'&CHOICE# SPECIFIES INVALID CHARACTERS'             @R6A
.*    MNOTE 12,'&CHOICE# SPECIFICATION EXCEEDS 8 CHARACTERS'       @R6A
.*    MNOTE 12,'KEYDFLT=&KEYDFLT INVALID.  MUST BE TWO HEX DIGITS.'   *
.*                                                                    *
.*   ERROR MNOTES = CONVERT=INTEGER                                   *
.*    MNOTE 12,'MAXLEN=&MAXLEN INVALID. MUST BE 1 TO 10 DECIMAL'   @H1C
.*    MNOTE 12,'MINLEN=&MINLEN INVALID. MUST BE 1 TO 10 DECIMAL'   @H1A
.*    MNOTE 12,'MAXLEN=&MXLTH OR MINLEN=&MNLTH INVALID. MAXLEN MUST   *
.*             BE GREATER THAN OR EQUAL TO MINLEN'                 @H1A
.*    MNOTE 12,'HIGH=&PHGH OR LOW=&PLOW INVALID. HIGH MUST BE GREATER *
.*             THAN OR EQUAL TO LOW VALUE'                            *
.*                                                                    *
.*   ERROR MNOTES = CONVERT=REFERRAL                                  *
.*    MNOTE 12,'CONVERT=REFERRAL FOR  JDPARM MACRO,  BUT NOT JDKEY.   *
.*              JDKEY MUST BE REFERRAL OR JDPARM MUST NOT BE.'     @H2A
.*                                                                    *
.*   ERROR MNOTES = MISCELLANEOUS                                     *
.*    MNOTE 12,'KEY=&KEY INVALID. MUST BE 4 HEX DIGITS.'              *
.*    MNOTE 12,'THE KEY= PARAMETER IS REQUIRED BUT IS NOT SPECIFIED'  *
.*    MNOTE 12,'CONLEN=&CONLEN INVALID. MUST BE 1 TO 4 DECIMAL.'      *
.*    MNOTE 12,'JDPARM MACRO SPECIFIED OUT OF ORDER'                  *
.*    MNOTE 12,'CONVERT=&CONVERT INVALID. CONVERT=CHAR ASSUMED'       *
.*    MNOTE 12,'REQUIRED MAXLEN PARAMETER IS NOT SPECIFIED'        @H1C
.*    MNOTE 12,'REPEAT=&REPEAT INVALID.  MUST BE 0 TO 127 DECIMAL.'   *
.*    MNOTE 12,'JDPARM MACRO SPECIFIED MORE THAN ONCE FOR LIST        *
.*              ITEMS, THE USE OF THE REPEAT KEYWORD IS REQUIRED      *
.*              FOR DUPLICATION OF THE LIST ITEM SPECIFICATIONS.'  @H3A
.*                                                                    *
.*    MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'*
.*    MNOTE 16,'CONVERT=&CONVERT INCONSISTENT WITH  JDKEY REFERRAL.   *
.*              JDPARM MUST BE REFERRAL OR JDKEY MUST NOT BE.'     @H2A
.*                                                                    *
.*   CHANGE ACTIVITY = H0,R1,R2,R3,R4,R5,R6,R7,R8,R9,RA,H1,H2,RB,  @RBA
.*                     H3                                          @H3A
.* $H0= EXTJCL  JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL         *
.* $R1= PPP0007 JBB1328 810508 PDC5: REPEAT ERROR CONTINUATION     @R1A
.* $R2= PPP0008 JBB1328 810508 PDC5: TWO MNOTES FOR ONE ERROR      @R2A
.* $R3= PPP0009 JBB1328 810508 PDC5: MISSING EXPECTED MNOTE        @R3A
.* $R4= PPP0014 JBB1328 810508 PDC5: CONLEN= ERROR MNOTE CHANGES   @R4A
.* $R5= PPP0016 JBB1328 810508 PDC5: MISSING EXPECTED MNOTE        @R5A
.* $R6= PPP0017 JBB1328 810508 PDC5: MISSING EXPECTED MNOTE        @R6A
.* $R7= PPP0020 JBB1328 810508 PDC5: KEYDFLT= INCORRECT PROCESSING @R7A
.* $R8= PPP0028 JBB1328 810508 PDC5: MISSING EXPECTED MNOTE        @R8A
.* $R9= PPP0029 JBB1328 810508 PDC5: WRONG MNOTE ISSUED            @R9A
.* $RA= PPP0030 JBB1328 810508 PDC5: UNEXPECTED ASSEMBLER ERROR    @RAA
.* $H1= EXTJCL  JBB1328 811204 PDC5: SUPPORT FOR EXTENDED JCL      @H1A
.* $H2= EXTJCL  JBB1328 820330 PDC5: SUPPORT FOR EXTENDED JCL      @H2A
.* $RB= PPP0101 JBB1328 820521 PDC5: POSSIBLE ALIGNMENT ERROR      @RBA
.* $H3= EXTJCL  JBB1329 820611 PDC5: SUPPORT FOR EXTENDED JCL      @H3A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A REPEAT WAS DUPLICATING MNOTES WHEN THE PROCESSING SHOULD STOP @R1A
.* A GETTING TWO MNOTES FOR ONE ERROR ON CHOICE#= PARAMETER        @R2A
.* A NO MNOTE WAS RECEIVED FOR A BLANK SYMBOL ON CHOICE PARAMETER  @R3A
.* A MNOTE ADDED AND ANOTHER ONE CHANGED TO SUPPORT CONLEN= ERROR  @R4A
.* A NO MNOTE RECEIVED WHEN CHOICE KEYWORD SPECIFIED ON CONVERT=CHAR
.*   OR ON CONVERT=INTEGER.                                        @R5A
.* A NO MNOTE RECEIVED WHEN CHOICE SYMBOL IS SPECIFIED INCORRECTLY @R6A
.* A KEYDFLT= PARAMETER WAS NOT BEING IGNORED ON CONVERT=CHAR      @R7A
.* A NO MNOTE FOR KEYDFLT= PARAMETER WHEN NON-HEX DIGITS SPECIFIED @R8A
.* A MNOTE FOR KEY= WAS REALLY A KEYDFLT ERROR. BRANCH FROM AND TO
.*   LABEL WAS MISSPELLED.                                         @R9A
.* A WHEN KEY= KEYWORD PARAMETER IS INCORRECTLY SPECIFIED AND KEYDFLT=
.*   KEYWORD IS NOT SPECIFIED, KEY= GIVES THE CORRECT MNOTE, BUT AN
.*   AN ASSEMBLER ERROR IS ALSO GIVEN BECAUSE KEYDFLT WAS SET TO NULLS
.*   INSTEAD OF ZEROES.                                            @RAA
.* A HEX CONVERSION SUPPORT AND MINLEN= KEYWORD                    @H1A
.* A AUTOMATIC BYTE OFFSET CALCULATIONS AND BLOCK IDENTIFICATION   @H1A
.* D KEYWORD &BYTEOFF DUE TO AUTOMATIC PROCESSING                  @H1A
.* A NAME CONVERSION AND ITS ASSOCIATED KEYWORDS: LEVNUM & LEVLEN  @H1A
.* C LENGTH= KEYWORD TO MAXLEN= KEYWORD TO GO WITH MINLEN= KEYWORD @H1A
.* D NAME CONVERSION                                               @H2A
.* A REFERRAL CONVERSION AND GENERALIZED CONVERSION RULES CHECKING @H2A
.* A KEYWORDS--FSTCHAR= AND OTHCHAR= AS PART OF THE RULES CHECKING @H2A
.*   SUCH AS FOR TYPES-ALPHABETIC, NUMERIC, AND NATIONAL CHARS.    @H2A
.* D FULLWORD ALIGNMENT BOUNDARY OF DS 0F FROM DEFINITION.         @RBA
.* A GLOBAL BITS TO INDICATE THIS PARAMETER IS A LIST ITEM--EITHER @H3A
.*   FOR PARAMETERS (BIT SET IN JDKEY) OR SUBLISTS (SET IN JDSUB). @H3A
.* A SPECIAL CHARACTER CHECKING FOR CONVERT=CHAR.                  @H3A
.***-----------------------------------------------------------***
.***-----------------------------------------------------------***
.***     LOCAL AND GLOBAL VARIABLES USED IN THIS MACRO.        ***
.***-----------------------------------------------------------***
         LCLA  &LVNUM,&LVLEN        CONVERSION VARIABLES           @H1A
         LCLA  &MXLTH,&MNLTH,&CLEN  WORKING VARIABLES FOR MAXLEN,  @H1C
.*                            MINLEN, AND CONVERTED LENGTH OPTION  @H1C
.*---------------------------------------------------------------* @R6A
.*   GLOBALS USED FOR ERROR INDICATORS RETURNED FROM INTERNAL    * @R6A
.*   MACRO JDSCAN.                                               * @R6A
.*   &$ERRBAD IS THE INVALID CHARACTER ERROR BIT.                * @R6A
.*   &$ERRBIG IS THE GREATER THAN 8 CHARACTERS ERROR BIT.        * @R6A
.*---------------------------------------------------------------* @R6A
         GBLB  &$ERRBAD,&$ERRBIG                                   @R6A
.*---------------------------------------------------------------*
.*       LOCAL NUMERIC VARIABLES USED:                           *
.*       DKEY=KEY DKY=KEYDFLT                                    *
.*       PHGH=HIGH PLOW=LOW    FOR INTEGER CONVERSION            *
.*       HHGH=HIGH HLOW=LOW    FOR HEX CONVERSION                * @H1A
.*       THE FLAG BITS ARE: &D0 IS FOR DEFAULT                   *
.*                          &F# ARE FOR CONVERSION INDICATORS    *
.*                          F0=CHOICE; F1=CHAR; F2=INTEGER;      *
.*                          F3=HEX; F4=REFERRAL                  * @H2A
.*                          &S# ARE FOR SUBLIST INDICATORS       *
.*                          S0=SUBLIST DEFINED; S1=FIRST ELEMENT * @H1A
.*---------------------------------------------------------------*
         LCLB  &D0,&F0,&F1,&F2,&F3,&F4,&S0,&S1 FLAG BITS USED      @H1C
         LCLA  &PHGH,&PLOW       VARIABLES FOR HIGH AND LOW-INTEGER
         LCLC  &HHGH,&HLOW       VARIABLES FOR HIGH AND LOW-HEX    @H1A
         LCLC  &DKEY,&DKY        VARIABLES FOR KEY AND KEYDFLT
.*---------------------------------------------------------------* @H2A
.*       LOCAL VARIABLES USED FOR KEYWORDS->FSTCHAR AND OTHCHAR: * @H2A
.*       THE FLAG BITS ARE: C0 & O0 = ALL                        * @H2A
.*          FSTCHAR=C#      C1 & O1 = ALPHABETIC                 * @H2A
.*          OTHCHAR=O#      C2 & O2 = NUMERIC                    * @H2A
.*                          C3 & O3 = NATIONAL                   * @H2A
.*                          C4 & O4 = SPECIAL                    * @H3A
.*       &SUB CAN HOLD A MAXIMUM OF FOUR OF THESE WITH 'ALL'     * @H3C
.*            BEING MUTUALLY EXCLUSIVE.                          * @H3A
.*---------------------------------------------------------------* @H2A
         LCLB  &C0,&C1,&C2,&C3,&C4,&O0,&O1,&O2,&O3,&O4             @H3A
         LCLC  &SUB(4)           SUBLIST TO HOLD THE SELECTIONS    @H3C
.*---------------------------------------------------------------* @H3A
.*       VARIABLES USED WITH SPECIAL CHARACTER PROCESSING.       * @H3A
.*---------------------------------------------------------------* @H3A
         LCLA  &FPAD,&OPAD       KEEPS NUMBER OF PADDING ZEROES    @H3A
         LCLA  &#FSPEC,&#OSPEC   KEEPS COUNT OF PARAMETERS         @H3A
         LCLC  &FALL,&OALL       CONCATENATES THE SPECIAL CHARS    @H3A
.*---------------------------------------------------------------*
.*       LOCAL MISCELLANEOUS VARIABLES USED.                     *
.*---------------------------------------------------------------*
         LCLA  &CTR              VARIABLE COUNTER
         LCLA  &COUNT            USED FOR REPEAT FUNCTION
         LCLB  &REPSW            REPEAT BIT SWITCH FOR REPEAT OPTION
         LCLB  &ERRSW           ERROR SWITCH FOR CHOICE PROCESSING @R2A
         LCLB  &STOP             STOPS THE REPEAT PROCESSING TO    @R1A
.*                               ELIMINATE REDUNDANT MNOTES.       @R1A
.*---------------------------------------------------------------*
.*   CHOICE VARIABLES USED IN MACRO; &CHOICE# = MNOTE IDENTIFIER *
.*   &CH# = THE CHOICE; &VAL# = THE VALUE OF THE CHOICE          *
.*---------------------------------------------------------------*
         LCLA  &NUM             VARIABLE NUMBER HOLDER
         LCLC  &CHOICE#         HOLD THE CURRENT CHOICE BEING WORKED ON
         LCLC  &CH1,&CH2,&CH3,&CH4,&CH5,&CH6,&CH7,&CH8
         LCLC  &VAL1,&VAL2,&VAL3,&VAL4,&VAL5,&VAL6,&VAL7,&VAL8
.*---------------------------------------------------------------* @H1A
.*   GLOBAL DEFINITIONS                                          * @H1A
.*   &BYTEOFF AND &BLKID ARE USED BY JDVERB MACRO.               * @H1A
.*   &R1 BIT IS SET BY THE JDKEY MACRO--                         * @H2A
.*       INDICATES REFERRAL PROCESSING.                          * @H2A
.*   &L2 BIT IS SET BY THE JDKEY MACRO--                         * @H3A
.*       INDICATES LIST ITEM PARAMETERS.                         * @H3A
.*   &L3 BIT IS SET BY THE JDSUB MACRO--                         * @H3A
.*       INDICATES SUBLIST ELEMENT LIST ITEMS.                   * @H3A
.*---------------------------------------------------------------* @H1A
         GBLA  &BYTEOFF,&BLKID                                     @H1A
         GBLA  &BYTECTR          KEEPS TRACK OF BYTES USED IN SWB  @H1A
         GBLB  &R1               REFERRAL BIT FROM JDKEY MACRO     @H2A
         GBLB  &L2,&L3           LIST ITEM BIT FROM JDKEY OR JDSUB @H3A
.*---------------------------------------------------------------*
.*   GLOBALS USED BY ALL JDT MACROS                              *
.*   &LEN IS USED ON EQUATES TO DETERMINE THE LENGTH OF          *
.*     THE MACRO.                                                *
.*   &P1 AND &P2 ARE USED FOR PARAMETER COUNTERS.                *
.*   &P1 FOR IDENTIFYING THIS PARAMETER SECTION;                 *
.*   &P2 FOR IDENTIFYING NEXT PARAMETER SECTION;                 *
.*---------------------------------------------------------------*
         GBLA  &LEN,&P1,&P2
.*---------------------------------------------------------------*
.*   GLOBALS THAT MAY BE ACTIVE OR BE MADE ACTIVE IN THIS MACRO; *
.*   RESPECTIVELY: JDKEY, JDPARM, JDSUB, ENDSUB, JDVERB, ENDJDT, *
.*   AND JDTMAC.                                                 *
.*---------------------------------------------------------------*
         GBLB  &KACT,&PACT,&SPACT,&EPACT,&VACT,&EJACT,&JACT
.*---------------------------------------------------------------*
.*   THE ACTR IS SET UP TO HANDLE THE REPEAT FUNCTION. THE       *
.*   ASSEMBLER DEFAULT IS 4K BYTES. THE ACTR COUNTS THE NUMBER   *
.*   OF TIMES AIF'S AND AGO'S ARE USED. IN THIS MACRO THERE ARE  *
.*   APPROXIMATELY 300 OF THEM, SO ONLY ABOUT 13 PASSES ARE      *
.*   ALLOWED. WHAT IS NEEDED IS 300 TIMES THE NUMBER OF THE      *
.*   REPEAT FUNCTION (300 X N).                                  *
.*---------------------------------------------------------------*
.SETACTR ANOP
         ACTR  300*(&REPEAT+1)   PLUS ONE IN CASE REPEAT IS ZERO
.*---------------------------------------------------------------* @H3A
.*   THE FOLLOWING TEST IMPLICITLY CHECKS WHETHER OR NOT THE     * @H3A
.*   REPEAT KEYWORD WAS SPECIFIED. IF NEITHER LIST ITEM BIT ARE  * @H3A
.*   ON, THEN CONTINUE WITH MACRO. IF EITHER ONE IS ON (ONLY     * @H3A
.*   ONE CAN BE ON), THEN MAKE SURE MACRO DID NOT FOLLOW         * @H3A
.*   ANOTHER JDPARM MACRO. ONCE IN REPEAT MODE, THIS CODE WILL   * @H3A
.*   NOT BE EXECUTED AGAIN FOR THIS JDPARM MACRO INVOCATION.     * @H3A
.*---------------------------------------------------------------* @H3A
         AIF   (NOT &L2 AND NOT &L3).REPEAT                        @H3A
         AIF   (NOT &PACT).REPEAT                                  @H3A
.*---------------------------------------------------------------* @H3A
.*   LIST ITEMS WANTED, BUT ANOTHER JDPARM MACRO HAS BEEN        * @H3A
.*   INVOKED. THE REPEAT KEYWORD MUST BE USED FOR DUPLICATION    * @H3A
.*   OF LIST ITEMS-> MNOTE IT.                                   * @H3A
.*---------------------------------------------------------------* @H3A
       MNOTE 12,'JDPARM MACRO SPECIFIED MORE THAN ONCE FOR LIST ITEMS. +
                THE  USE OF THE  REPEAT  KEYWORD  IS REQUIRED FOR DUPLI+
               CATION OF THE LIST ITEM SPECIFICATIONS.'            @H3A
         AGO   .NOREP                                              @H3A
.*---------------------------------------------------------------*
.*   CHECK THAT THE JDPARM MACRO FOLLOWS THE CORRECT MACRO.      *
.*   THAT IS DONE BY CHECKING THE ACTIVE GLOBAL BIT.             *
.*   THE ONLY MACROS THAT ARE ALLOWED ARE: JDKEY, JDPARM, JDSUB, *
.*   ENDSUB, AND JDPARM DEFINED AS A SUBLIST.                    *
.*---------------------------------------------------------------*
.REPEAT  ANOP                    REPEAT FUNCTION RETURNS TO HERE
         AIF   (&KACT EQ 1).KEYACT   JDKEY ACTIVE; GO RESET KACT BIT
         AIF   (&PACT EQ 1 AND &SPACT EQ 1).SUBACT SUBLIST ACTIVE
         AIF   (&PACT EQ 1).CONT     JDPARM ACTIVE
         AIF   (&SPACT EQ 1).SPACT   JDSUB ACTIVE; GO SET SUBLIST BITS
         AIF   (&EPACT EQ 1).EPACT   ENDSUB ACTIVE; GO RESET EPACT BIT
.*---------------------------------------------------------------*
.*       CHECK TO SEE IF ANY OTHER MACROS HAVE BEEN INVOKED.     *
.*---------------------------------------------------------------*
         AIF   (&JACT EQ 0 AND &VACT EQ 0 AND &EJACT EQ 0).NOJDT
.*---------------------------------------------------------------*
.*   NONE OF THE CORRECT MACROS USED-> MNOTE IT.                 *
.*---------------------------------------------------------------*
         MNOTE 12,'JDPARM MACRO SPECIFIED OUT OF ORDER'
         AGO   .RESET
.*---------------------------------------------------------------*
.*   IF NO PREVIOUS JDT MACRO HAS BEEN INVOKED, THEN THIS MUST   *
.*   BE THE FIRST ONE. JDTMAC MACRO MUST BE FIRST-> MNOTE IT.    *
.*---------------------------------------------------------------*
.NOJDT   ANOP
       MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'
         MEXIT
.*---------------------------------------------------------------*
.*   RESET APPROPRIATE GLOBAL BIT.                               *
.*---------------------------------------------------------------*
.RESET   ANOP
&JACT    SETB  0                 RESET THE JDTMAC GLOBAL ACTIVE BIT
&VACT    SETB  0                 RESET THE JDVERB GLOBAL ACTIVE BIT
&EJACT   SETB  0                 RESET THE ENDJDT GLOBAL ACTIVE BIT
         AGO   .CONT
.*---------------------------------------------------------------*
.*   SET OR RESET APPROPRIATE GLOBAL BITS                        *
.*---------------------------------------------------------------*
.KEYACT  ANOP
&KACT    SETB  0                 RESET JDKEY GLOBAL BIT
         AGO   .CONT             CONTINUE JDPARM MACRO DEFINITION
.SUBACT  ANOP
&S0      SETB  1                 SET SUBLIST DATA FLAG BIT
&S1      SETB  0       RESET THIS-IS-FIRST ELEMENT OF SUBLIST BIT
         AGO   .CONT             CONTINUE JDPARM MACRO DEFINITION
.SPACT   ANOP
&S0      SETB  1                 SET SUBLIST DATA FLAG BIT
&S1      SETB  1         SET THIS-IS-FIRST ELEMENT OF SUBLIST BIT
         AGO   .CONT             CONTINUE JDPARM MACRO DEFINITION
.EPACT   ANOP
&EPACT   SETB  0                 RESET ENDSUB GLOBAL BIT
.*---------------------------------------------------------------*
.*   .CONT LABEL IS ENTERED FROM CONTINUATION OF THE PREVIOUS    *
.*   CODE OR FROM THE REQUEST OF THE REPEAT KEYWORD FUNCTION.    *
.*---------------------------------------------------------------*
.CONT    ANOP
&PACT    SETB  1                 SET JDPARM GLOBAL BIT
&P1      SETA  &P1+1             UPDATE GLOBAL FOR NEXT PARM OFFSET
&P2      SETA  &P2+1             UPDATE GLOBAL FOR NEXT PARM OFFSET
&LEN     SETA  &LEN+1            LENGTH SETUP UPDATED OF MACRO OFFSET
.*---------------------------------------------------------------* @H2A
.*    CHECK FOR GLOBAL REFERRAL BIT FROM KEYWORD DEFINITION      * @H2A
.*    AND REFERRAL CONVERSION OF THIS MACRO. BOTH MUST BE        * @H2A
.*    DEFINED OR BOTH MUST NOT BE DEFINED.                       * @H2A
.*---------------------------------------------------------------* @H2A
         AIF   (&R1     AND '&CONVERT' NE 'REFERRAL').RFNOTE1      @H2A
         AIF   (NOT &R1 AND '&CONVERT' EQ 'REFERRAL').RFNOTE2      @H2A
         AGO   .BEGIN            BOTH ARE ON OR BOTH ARE OFF       @H2A
.*---------------------------------------------------------------* @H2A
.*    REFERRAL IN JDKEY SPECIFIED, BUT NOT JDPARM-> MNOTE IT.    * @H2A
.*    NO FURTHER PROCESSING WOULD BE MEANINGFUL, AS JDPARM IS    * @H2A
.*    BEING INVOKED FOR THE WRONG TYPE OF CONVERSION.            * @H2A
.*---------------------------------------------------------------* @H2A
.RFNOTE1 ANOP                                                      @H2A
         MNOTE 16,'CONVERT=&CONVERT INCONSISTENT WITH  JDKEY REFERRAL. +
               JDPARM MUST BE REFERRAL OR JDKEY MUST NOT BE.'      @H2A
         AGO   .BEGIN                                              @H2A
.*---------------------------------------------------------------* @H2A
.*    REFERRAL IN JDPARM SPECIFIED, BUT NOT JDKEY-> MNOTE IT.    * @H2A
.*    FURTHER PROCESSING MAY BE ATTEMPTED-JDKEY MAY HAVE BEEN    * @H2A
.*    INVOKED WITHOUT REFERRAL BEING SELECTED.                   * @H2A
.*---------------------------------------------------------------* @H2A
.RFNOTE2 ANOP                                                      @H2A
           MNOTE 12,'CONVERT=REFERRAL FOR JDPARM MACRO, BUT NOT JDKEY. +
               JDKEY MUST BE REFERRAL OR JDPARM MUST NOT BE.'      @H2A
&STOP    SETB  1                                                   @H2A
.*---------------------------------------------------------------*
.*       BEGIN JDPARM DEFINITIONS                                *
.*---------------------------------------------------------------*
.BEGIN   ANOP                                                      @H2A
B&LEN    EQU   *                 BEGIN JDPARM LENGTH DEFINITION
PM&P1    DC    AL2(E&LEN-B&LEN)  LENGTH OF PARAMETER SECTION
         DC    AL2(PM&P2-PM&P1)  OFFSET TO NEXT PARAMETER(ZERO IF NONE)
.*---------------------------------------------------------------*
.*       CHECK FOR TYPE OF CONVERSION DESIRED.                   *
.*---------------------------------------------------------------*
         AIF   ('&CONVERT' EQ 'CHAR').CHAR        CONVERT=CHAR
         AIF   ('&CONVERT' EQ 'HEX').HEX          CONVERT=HEX      @H1A
         AIF   ('&CONVERT' EQ 'CHOICE').CHOICE    CONVERT=CHOICE
         AIF   ('&CONVERT' EQ 'INTEGER').INTEGER  CONVERT=INTEGER
         AIF   ('&CONVERT' EQ 'REFERRAL').REFERRL CONVERT=REFERRAL @H2A
.*---------------------------------------------------------------*
.*   REFERRAL, HEX, CHOICE, INTEGER, OR CHAR OPTION NOT CHOOSEN->* @H2C
.*   MNOTE IT.                                                   *
.*---------------------------------------------------------------*
         MNOTE 12,'CONVERT=&CONVERT INVALID. CONVERT=CHAR ASSUMED'
&STOP    SETB  1                                                   @R1A
.*---------------------------------------------------------------* @H1A
.*      CONVERT=CHAR ROUTINE.                                    * @H2C
.*---------------------------------------------------------------* @H1A
.CHAR    ANOP                                                      @H2C
&F1      SETB   1                                                  @H2C
.*---------------------------------------------------------------* @H1A
.*  MAKE SURE NO CHOICES WERE SPECIFIED FOR CHARACTER CONVERSION.* @H2C
.*---------------------------------------------------------------* @H1A
  AIF ('&CHOICE1' EQ '' AND '&CHOICE2' EQ '' AND '&CHOICE3' EQ '' AND '+
               &CHOICE4' EQ '' AND '&CHOICE5' EQ '' AND '&CHOICE6' EQ '+
               ' AND '&CHOICE7' EQ '' AND '&CHOICE8' EQ '').FSTCHR @H2C
.*---------------------------------------------------------------* @H1A
.*   CHOICE#= WAS SPECIFIED WITH CONVERT=CHAR-> MNOTE IT.        * @H2C
.*---------------------------------------------------------------* @H1A
            MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=CHAR HAVE NO MEANING. +
               CHOICE PARAMETERS ARE IGNORED'                      @H1A
.*---------------------------------------------------------------* @H2A
.*       FSTCHAR KEYWORD ROUTINE.                                * @H2A
.*  IF FSTCHAR WAS NOT SPECIFIED, THEN THE DEFAULT IS 'ALL'.     * @H2A
.*---------------------------------------------------------------* @H2A
.FSTCHR  ANOP                                                      @H2A
         AIF   ('&FSTCHAR' NE '').FSTCNT                           @H2A
&C0      SETB  1                 THIS IS THE 'ALL' DEFAULT BIT     @H2A
         AGO   .OTHCHAR          GO TEST FOR OTHCHAR KEYWORD       @H2A
.*---------------------------------------------------------------* @H2A
.*  GET THE NUMBER OF SUBPARAMETERS SUPPLIED (N'FSTCHAR).        * @H2A
.*---------------------------------------------------------------* @H2A
.FSTCNT  ANOP                                                      @H2A
&CTR     SETA  1                 START INDEX COUNTER               @H2A
&NUM     SETA  N'&FSTCHAR        MUST BE 1 TO 4                    @H3C
         AIF   (&NUM GE 1 AND &NUM LE 4).FSTLOOP                   @H3C
.*---------------------------------------------------------------* @H2A
.*     FSTCHAR DOES NOT HAVE 1 TO 4 SUBPARAMETERS-> MNOTE IT.    * @H3C
.*---------------------------------------------------------------* @H2A
         MNOTE 12,'FSTCHAR=&FSTCHAR HAS AN INVALID NUMBER OF SUBPARAMET+
               ERS. ONLY 1 TO 4 ALLOWED.'                          @H3C
&STOP    SETB  1                                                   @H2A
         AGO   .OTHCHAR          GO CHECK OTHCHAR KEYWORD          @H2A
.*---------------------------------------------------------------* @H2A
.*       FSTCHAR-SAVE EACH SUBPARAMETER SPECIFIED.               * @H2A
.*---------------------------------------------------------------* @H2A
.FSTLOOP ANOP                                                      @H2A
&SUB(&CTR) SETC '&FSTCHAR(&CTR)' GET EACH SUBPARAMETER             @H2A
         AIF    (&CTR EQ &NUM).FSTCONT                             @H2A
&CTR     SETA   &CTR+1           SET UP FOR NEXT SUBPARAMETER      @H2A
         AGO    .FSTLOOP         GO SAVE NEXT SUBPARAMETER         @H2A
.*---------------------------------------------------------------* @H2A
.*    CHECK EACH SAVED SUBPARAMETER FOR VALUE AND EXCLUSIVITY    * @H2A
.*    WITH ITSELF.                                               * @H2A
.*---------------------------------------------------------------* @H2A
.FSTCONT ANOP                                                      @H2A
         AIF   ('&SUB(&CTR)' EQ 'ALL' OR '&SUB(&CTR)' EQ 'ALPHABETIC'  +
               OR '&SUB(&CTR)' EQ 'NUMERIC' OR '&SUB(&CTR)' EQ         +
               'NATIONAL' OR '&SUB(&CTR)' EQ 'SPECIAL').TESTC0     @H3A
.*---------------------------------------------------------------* @H2A
.*   FSTCHAR HAS INVALID SUBPARAMETERS-> MNOTE IT.               * @H2A
.*---------------------------------------------------------------* @H2A
         MNOTE 12,'FSTCHAR=&FSTCHAR HAS INVALID SUBPARAMETERS. MUST BE +
               ALL, ALPHABETIC, NUMERIC, NATIONAL, OR SPECIAL.'    @H3A
&STOP    SETB  1                                                   @H2A
&C0      SETB  0                 ALL                               @H2A
&C1      SETB  0                 ALPHABETIC                        @H2A
&C2      SETB  0                 NUMERIC                           @H2A
&C3      SETB  0                 NATIONAL                          @H2A
&C4      SETB  0                 SPECIAL                           @H3A
         AGO   .OTHCHAR          GO TEST 'OTHER' KEYWORD           @H2A
.TESTC0  AIF   ('&SUB(&CTR)' NE 'ALL').TESTC1                      @H2A
         AIF   (&C0).FEXCLUD     HAS 'ALL' BEEN PREVIOUSLY SET?    @H2A
&C0      SETB  1                                                   @H2A
         AGO   .FUPCTR                                             @H2A
.TESTC1  AIF   ('&SUB(&CTR)' NE 'ALPHABETIC').TESTC2               @H2A
         AIF   (&C1).FEXCLUD     HAS ALPHA BEEN PREVIOUSLY SET?    @H2A
&C1      SETB  1                                                   @H2A
         AGO   .FUPCTR                                             @H2A
.TESTC2  AIF   ('&SUB(&CTR)' NE 'NUMERIC').TESTC3                  @H2A
         AIF   (&C2).FEXCLUD     HAS NUM BEEN PREVIOUSLY SET?      @H2A
&C2      SETB  1                                                   @H2A
         AGO   .FUPCTR                                             @H2A
.TESTC3  AIF   ('&SUB(&CTR)' NE 'NATIONAL').TESTC4                 @H3A
         AIF   (&C3).FEXCLUD     HAS NAT'L BEEN PREVIOUSLY SET?    @H3C
&C3      SETB  1                                                   @H2A
         AGO   .FUPCTR                                             @H3A
.TESTC4  AIF   (&C4).FEXCLUD     HAS SPECIAL BEEN PREVIOUSLY SET?  @H3A
&C4      SETB  1                                                   @H3A
.FUPCTR  ANOP                                                      @H2A
         AIF   (&CTR EQ 1).FSTTEST                                 @H2A
&CTR     SETA  &CTR-1            SET UP FOR NEXT SUBPARAMETER      @H2A
         AGO   .FSTCONT          DO NEXT SUBPARAMETER CHECKING     @H2A
.*---------------------------------------------------------------* @H2A
.*   A SUBPARAMETER HAS BEEN SPECIFIED MORE THAN ONCE-> MNOTE IT.* @H2A
.*---------------------------------------------------------------* @H2A
.FEXCLUD ANOP                                                      @H2A
     MNOTE 4,'FSTCHAR KEYWORD HAS MULTIPLE DEFINED SUBPARAMETERS.' @H2A
         AIF   (&CTR EQ 1).FSTTEST                                 @H2A
&CTR     SETA  &CTR-1            SET UP FOR NEXT SUBPARAMETER      @H2A
         AGO   .FSTCONT          DO NEXT SUBPARAMETER CHECKING     @H2A
.*---------------------------------------------------------------* @H2A
.*   TEST FOR EXCLUSIVITY AGAINST 'ALL' AND THE REST.            * @H2A
.*---------------------------------------------------------------* @H2A
.FSTTEST ANOP                                                      @H2A
         AIF   (&C0 EQ 0).FSTSPEC   'ALL' BIT OFF?                 @H3C
         AIF   (&C1 OR &C2 OR &C3 OR &C4).FEXERR   ERROR IF OTHERS @H3A
         AGO   .OTHCHAR             ONLY 'ALL' WAS ON--OKAY        @H2A
.*---------------------------------------------------------------* @H2A
.*     'ALL' EXCLUSIVITY TEST FAILED-> MNOTE IT.                 * @H2A
.*---------------------------------------------------------------* @H2A
.FEXERR  ANOP                                                      @H2A
         MNOTE 12,'FSTCHAR=ALL IS NOT ALLOWED WITH ALPHABETIC, NUMERIC,+
                NATIONAL, OR SPECIAL.'                             @H3A
&STOP    SETB  1                                                   @H2A
&C0      SETB  0                 ALL                               @H2A
&C1      SETB  0                 ALPHABETIC                        @H2A
&C2      SETB  0                 NUMERIC                           @H2A
&C3      SETB  0                 NATIONAL                          @H2A
&C4      SETB  0                 SPECIAL                           @H3A
         AGO   .OTHCHAR          GO TO OTHCHAR ROUTINE             @H3A
.*---------------------------------------------------------------* @H3A
.*       FSTSPEC CHECKING ROUTINE.                               * @H3A
.*  IF SPECIAL WAS NOT SPECIFIED, THEN GO TO THE OTHCHAR ROUTINE.* @H3A
.*---------------------------------------------------------------* @H3A
.FSTSPEC ANOP                                                      @H3A
         AIF   (&C4 EQ 0).OTHCHAR  NO SPECIAL PROCESSING?          @H3A
.*---------------------------------------------------------------* @H3A
.*  CHECK TO SEE IF FSTSPEC HAS PARAMETERS.                      * @H3A
.*---------------------------------------------------------------* @H3A
         AIF   ('&FSTSPEC' NE '').FSPCNT                           @H3A
.*---------------------------------------------------------------* @H3A
.*     SPECIAL KEYWORD DOES NOT HAVE PARAMETERS-> MNOTE IT.      * @H3A
.*---------------------------------------------------------------* @H3A
         MNOTE 12,'EXPECTED  SPECIAL  CHARACTERS  WERE  NOT  SPECIFIED +
               FOR FSTCHAR=SPECIAL.'                               @H3A
&STOP    SETB  1                                                   @H3A
&C4      SETB  0                 RESET SPECIAL CHARACTER BIT       @H3A
         AGO   .OTHCHAR          GO TO OTHCHAR ROUTINE             @H3A
.FSPCNT  ANOP                                                      @H3A
&#FSPEC  SETA  N'&FSTSPEC        GET THE NUMBER OF PARAMETERS      @H3A
         AIF   (&#FSPEC GT 16).FSPNOTE                             @H3A
&FPAD    SETA  16-&#FSPEC      SET THE NUMBER OF NON-SPECIAL CHARS @H3A
&CTR     SETA  0                 RESET COUNTER                     @H3A
.*---------------------------------------------------------------* @H3A
.*     THE FOLLOWING LOOP GETS ALL THE SPECIFIED PARAMETERS AND  * @H3A
.*     SCANS THEM TO INSURE EACH ONLY HAS ONE CHARACTER. THE     * @H3A
.*     APOSTROPHY AND AMPERSAND CHARACTERS NEED TO BE CHECKED    * @H3A
.*     INDIVIDUALLY.                                             * @H3A
.*---------------------------------------------------------------* @H3A
.FSPLOOP ANOP                                                      @H3A
&CTR     SETA  &CTR+1            DO EACH PARAMETER                 @H3A
         AIF   (&CTR GT &#FSPEC).OTHCHAR  ALL PARAMETERS SCANNED?  @H3A
         AIF   ('&FSTSPEC(&CTR)' EQ '''''' OR                          +
                '&FSTSPEC(&CTR)' EQ '&&').FSPAPAM                  @H3A
         AIF   (K'&FSTSPEC(&CTR) NE 1).FSP2BIG   NOT ONE CHAR?     @H3A
.FSPAPAM ANOP                                                      @H3A
&FALL    SETC  '&FALL.&FSTSPEC(&CTR)' CONCATENATE SPECIAL CHARS.   @H3A
         AGO   .FSPLOOP                                            @H3A
.*---------------------------------------------------------------* @H3A
.*     FSTSPEC SPECIFIED OVER THE MAXIMUM OF 16 PARMS-> MNOTE IT.* @H3A
.*---------------------------------------------------------------* @H3A
.FSPNOTE ANOP                                                      @H3A
        MNOTE 12,'FSTSPEC SPECIFIES MORE PARAMETERS THAN THE MAXIMUM OF+
                16 ALLOWED'                                        @H3A
&STOP    SETB  1                                                   @H3A
&C4      SETB  0                 RESET SPECIAL CHARACTER BIT       @H3A
         AGO   .OTHCHAR          GO TO OTHCHAR ROUTINE             @H3A
.*---------------------------------------------------------------* @H3A
.*  FSTSPEC SPECIFIES PARMS WITH MORE THAN ONE CHARS-> MNOTE IT. * @H3A
.*---------------------------------------------------------------* @H3A
.FSP2BIG ANOP                                                      @H3A
         MNOTE 12,'PARAMETER ''&FSTSPEC(&CTR)'' SPECIFIES MORE THAN THE+
                ONE CHARACTER ALLOWED.'                            @H3A
&STOP    SETB  1                                                   @H3A
&C4      SETB  0                 RESET SPECIAL CHARACTER BIT       @H3A
.*---------------------------------------------------------------* @H2A
.*       OTHCHAR CHECKING ROUTINE.                               * @H2A
.*  IF OTHCHAR WAS NOT SPECIFIED, THEN THE DEFAULT IS 'ALL'.     * @H2A
.*---------------------------------------------------------------* @H2A
.OTHCHAR ANOP                                                      @H2A
         AIF   ('&OTHCHAR' NE '').OTHCNT                           @H2A
&O0      SETB  1                 THIS IS THE 'ALL' DEFAULT BIT     @H2A
         AGO   .CHRMAX           GO TEST MAXLEN KEYWORD            @H2A
.*---------------------------------------------------------------* @H2A
.*  GET THE NUMBER OF SUBPARAMETERS SUPPLIED (N'OTHCHAR).        * @H2A
.*---------------------------------------------------------------* @H2A
.OTHCNT  ANOP                                                      @H2A
&CTR     SETA  1                 START INDEX COUNTER               @H2A
&NUM     SETA  N'&OTHCHAR        MUST BE 1 TO 4                    @H3C
         AIF   (&NUM GE 1 AND &NUM LE 4).OTHLOOP                   @H3C
.*---------------------------------------------------------------* @H2A
.*     OTHCHAR DOES NOT HAVE 1 TO 4 SUBPARAMETERS-> MNOTE IT.    * @H3C
.*---------------------------------------------------------------* @H2A
         MNOTE 12,'OTHCHAR=&OTHCHAR HAS AN INVALID NUMBER OF SUBPARAMET+
               ERS. ONLY 1 TO 4 ALLOWED.'                          @H3C
&STOP    SETB  1                                                   @H2A
         AGO   .CHRMAX           GO CHECK MAXLEN KEYWORD           @H2A
.*---------------------------------------------------------------* @H2A
.*       OTHCHAR-SAVE EACH SUBPARAMETER SPECIFIED.               * @H2A
.*---------------------------------------------------------------* @H2A
.OTHLOOP ANOP                                                      @H2A
&SUB(&CTR) SETC '&OTHCHAR(&CTR)' GET EACH SUBPARAMETER             @H2A
         AIF    (&CTR EQ &NUM).OTHCONT                             @H2A
&CTR     SETA   &CTR+1           SET UP FOR NEXT SUBPARAMETER      @H2A
         AGO    .OTHLOOP         DO NEXT SUBPARAMETER              @H2A
.*---------------------------------------------------------------* @H2A
.*    CHECK EACH SAVED SUBPARAMETER FOR VALUE AND EXCLUSIVITY    * @H2A
.*    WITH ITSELF.                                               * @H2A
.*---------------------------------------------------------------* @H2A
.OTHCONT ANOP                                                      @H2A
         AIF   ('&SUB(&CTR)' EQ 'ALL' OR '&SUB(&CTR)' EQ 'ALPHABETIC'  +
               OR '&SUB(&CTR)' EQ 'NUMERIC' OR '&SUB(&CTR)' EQ         +
               'NATIONAL' OR '&SUB(&CTR)' EQ 'SPECIAL').TESTO0     @H3A
.*---------------------------------------------------------------* @H2A
.*   OTHCHAR HAS INVALID SUBPARAMETERS-> MNOTE IT.               * @H2A
.*---------------------------------------------------------------* @H2A
         MNOTE 12,'OTHCHAR=&OTHCHAR HAS INVALID SUBPARAMETERS. MUST BE +
               ALL, ALPHABETIC, NUMERIC, NATIONAL, OR SPECIAL.'    @H3A
&STOP    SETB  1                                                   @H2A
&O0      SETB  0                 ALL                               @H2A
&O1      SETB  0                 ALPHABETIC                        @H2A
&O2      SETB  0                 NUMERIC                           @H2A
&O3      SETB  0                 NATIONAL                          @H2A
&O4      SETB  0                 SPECIAL                           @H3A
         AGO   .CHRMAX           GO TEST MAXLEN KEYWORD            @H2A
.TESTO0  AIF   ('&SUB(&CTR)' NE 'ALL').TESTO1                      @H2A
         AIF   (&O0).OEXCLUD     HAS 'ALL' BEEN PREVIOUSLY SET?    @H2A
&O0      SETB  1                                                   @H2A
         AGO   .OUPCTR                                             @H2A
.TESTO1  AIF   ('&SUB(&CTR)' NE 'ALPHABETIC').TESTO2               @H2A
         AIF   (&O1).OEXCLUD     HAS ALPHA BEEN PREVIOUSLY SET?    @H2A
&O1      SETB  1                                                   @H2A
         AGO   .OUPCTR                                             @H2A
.TESTO2  AIF   ('&SUB(&CTR)' NE 'NUMERIC').TESTO3                  @H2A
         AIF   (&O2).OEXCLUD     HAS NUM BEEN PREVIOUSLY SET?      @H2A
&O2      SETB  1                                                   @H2A
         AGO   .OUPCTR                                             @H2A
.TESTO3  AIF   ('&SUB(&CTR)' NE 'NATIONAL').TESTO4                 @H3A
         AIF   (&O3).OEXCLUD     HAS NAT'L BEEN PREVIOUSLY SET?    @H3C
&O3      SETB  1                                                   @H2A
         AGO   .OUPCTR                                             @H3A
.TESTO4  AIF   (&O4).OEXCLUD     HAS SPECIAL BEEN PREVIOUSLY SET?  @H3A
&O4      SETB  1                                                   @H3A
.OUPCTR  ANOP                                                      @H2A
         AIF   (&CTR EQ 1).OTHTEST                                 @H2A
&CTR     SETA  &CTR-1            SET UP FOR NEXT SUBPARAMETER      @H2A
         AGO   .OTHCONT          DO NEXT SUBPARAMETER              @H2A
.*---------------------------------------------------------------* @H2A
.*   A SUBPARAMETER HAS BEEN SPECIFIED MORE THAN ONCE-> MNOTE IT.* @H2A
.*---------------------------------------------------------------* @H2A
.OEXCLUD ANOP                                                      @H2A
     MNOTE 4,'OTHCHAR KEYWORD HAS MULTIPLE DEFINED SUBPARAMETERS.' @H2A
         AIF   (&CTR EQ 1).OTHTEST                                 @H2A
&CTR     SETA  &CTR-1            SET UP FOR NEXT SUBPARAMETER      @H2A
         AGO   .OTHCONT          DO NEXT SUBPARAMETER              @H2A
.*---------------------------------------------------------------* @H2A
.*   TEST FOR EXCLUSIVITY AGAINST 'ALL' AND THE REST.            * @H2A
.*---------------------------------------------------------------* @H2A
.OTHTEST ANOP                                                      @H2A
         AIF   (&O0 EQ 0).OTHSPEC   'ALL' BIT OFF?                 @H3C
         AIF   (&O1 OR &O2 OR &O3 OR &O4).EXOERR  ERROR IF OTHERS  @H3A
         AGO   .CHRMAX              ONLY 'ALL' WAS ON--OKAY        @H2A
.*---------------------------------------------------------------* @H2A
.*     'ALL' EXCLUSIVITY TEST FAILED-> MNOTE IT.                 * @H2A
.*---------------------------------------------------------------* @H2A
.EXOERR  ANOP                                                      @H2A
         MNOTE 12,'OTHCHAR=ALL IS NOT ALLOWED WITH ALPHABETIC, NUMERIC,+
                NATIONAL, OR SPECIAL.'                             @H3A
&STOP    SETB  1                                                   @H2A
&O0      SETB  0                 ALL                               @H2A
&O1      SETB  0                 ALPHABETIC                        @H2A
&O2      SETB  0                 NUMERIC                           @H2A
&O3      SETB  0                 NATIONAL                          @H2A
&O4      SETB  0                 SPECIAL                           @H3A
         AGO   .CHRMAX           GO TO MAX/MINLEN ROUTINE          @H3A
.*---------------------------------------------------------------* @H3A
.*       OTHSPEC CHECKING ROUTINE.                               * @H3A
.*  IF SPECIAL WAS NOT SPECIFIED, THEN GO TO THE CHRMAX ROUTINE. * @H3A
.*---------------------------------------------------------------* @H3A
.OTHSPEC ANOP                                                      @H3A
         AIF   (&O4 EQ 0).CHRMAX   NO SPECIAL PROCESSING?          @H3A
.*---------------------------------------------------------------* @H3A
.*  CHECK TO SEE IF OTHSPEC HAS PARAMETERS.                      * @H3A
.*---------------------------------------------------------------* @H3A
         AIF   ('&OTHSPEC' NE '').OSPCNT                           @H3A
.*---------------------------------------------------------------* @H3A
.*     SPECIAL KEYWORD DOES NOT HAVE PARAMETERS-> MNOTE IT.      * @H3A
.*---------------------------------------------------------------* @H3A
         MNOTE 12,'EXPECTED  SPECIAL  CHARACTERS  WERE  NOT  SPECIFIED +
               FOR OTHCHAR=SPECIAL.'                               @H3A
&STOP    SETB  1                                                   @H3A
&O4      SETB  0                 RESET SPECIAL CHARACTER BIT       @H3A
         AGO   .CHRMAX           GO TO MAX/MINLEN ROUTINE          @H3A
.OSPCNT  ANOP                                                      @H3A
&#OSPEC  SETA  N'&OTHSPEC        GET THE NUMBER OF PARAMETERS      @H3A
         AIF   (&#OSPEC GT 16).OSPNOTE                             @H3A
&OPAD    SETA  16-&#OSPEC      SET THE NUMBER OF NON-SPECIAL CHARS @H3A
&CTR     SETA  0                 RESET COUNTER                     @H3A
.*---------------------------------------------------------------* @H3A
.*     THE FOLLOWING LOOP GETS ALL THE SPECIFIED PARAMETERS AND  * @H3A
.*     SCANS THEM TO INSURE EACH ONLY HAS ONE CHARACTER. THE     * @H3A
.*     APOSTROPHY AND AMPERSAND CHARACTERS NEED TO BE CHECKED    * @H3A
.*     INDIVIDUALLY.                                             * @H3A
.*---------------------------------------------------------------* @H3A
.OSPLOOP ANOP                                                      @H3A
&CTR     SETA  &CTR+1            DO EACH PARAMETER                 @H3A
         AIF   (&CTR GT &#OSPEC).CHRMAX   ALL PARAMETERS SCANNED?  @H3A
         AIF   ('&OTHSPEC(&CTR)' EQ '''''' OR                          +
                '&OTHSPEC(&CTR)' EQ '&&').OSPAPAM                  @H3A
         AIF   (K'&OTHSPEC(&CTR) NE 1).OSP2BIG   NOT ONE CHAR?     @H3A
.OSPAPAM ANOP                                                      @H3A
&OALL    SETC  '&OALL.&OTHSPEC(&CTR)' CONCATENATE SPECIAL CHARS.   @H3A
         AGO   .OSPLOOP                                            @H3A
.*---------------------------------------------------------------* @H3A
.*     OTHSPEC SPECIFIED OVER THE MAXIMUM OF 16 PARMS-> MNOTE IT.* @H3A
.*---------------------------------------------------------------* @H3A
.OSPNOTE ANOP                                                      @H3A
        MNOTE 12,'OTHSPEC SPECIFIES MORE PARAMETERS THAN THE MAXIMUM OF+
                16 ALLOWED'                                        @H3A
&STOP    SETB  1                                                   @H3A
&O4      SETB  0                 RESET SPECIAL CHARACTER BIT       @H3A
         AGO   .CHRMAX           GO TO MAX/MINLEN ROUTINE          @H3A
.*---------------------------------------------------------------* @H3A
.*  OTHSPEC SPECIFIES PARMS WITH MORE THAN ONE CHARS-> MNOTE IT. * @H3A
.*---------------------------------------------------------------* @H3A
.OSP2BIG ANOP                                                      @H3A
         MNOTE 12,'PARAMETER ''&OTHSPEC(&CTR)'' SPECIFIES MORE THAN THE+
                ONE CHARACTER ALLOWED.'                            @H3A
&STOP    SETB  1                                                   @H3A
&O4      SETB  0                 RESET SPECIAL CHARACTER BIT       @H3A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN AND MINLEN CHECKING ROUTINE.                     * @H2C
.*---------------------------------------------------------------* @H1A
.CHRMAX  ANOP                                                      @H2A
         AIF    ('&MAXLEN' NE '').CMAXVAL   SHOULD BE SPECIFIED    @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN NOT SPECIFIED-> MNOTE IT.                        * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'REQUIRED MAXLEN PARAMETER IS NOT SPECIFIED'     @H1A
&STOP    SETB  1                                                   @H1A
&MXLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .CRMIN            GO CHECK MINLEN                   @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MAXLEN VALUE OF 1 TO 64 DECIMAL.              * @H1A
.*---------------------------------------------------------------* @H1A
.CMAXVAL ANOP                                                      @H1A
         AIF   (&MAXLEN GE 1 AND &MAXLEN LE 64).CMAXOK             @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN NOT CORRECT VALUE OF 1 TO 64-> MNOTE IT.         * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'MAXLEN=&MAXLEN INVALID. MUST BE 1 TO 64 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&MXLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .CRMIN            GO CHECK MINLEN                   @H1A
.CMAXOK  ANOP                                                      @H1A
&MXLTH   SETA  &MAXLEN           GET MAXLEN PARAMETER VALUE        @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MINLEN VALUE OF 1 TO 64 DECIMAL.              * @H1A
.*---------------------------------------------------------------* @H1A
.CRMIN   ANOP                                                      @H1A
         AIF   (&MINLEN GE 1 AND &MINLEN LE 64).CMINOK             @H1A
.*---------------------------------------------------------------* @H1A
.*       MINLEN NOT CORRECT VALUE OF 1 TO 64-> MNOTE IT.         * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'MINLEN=&MINLEN INVALID. MUST BE 1 TO 64 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&MNLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .CMXMN            GO COMPARE MAXLEN TO MINLEN       @H1A
.CMINOK  ANOP                                                      @H1A
&MNLTH   SETA  &MINLEN           GET MINLEN PARAMETER VALUE        @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MAXLEN GREATER THAN OR EQUAL TO MINLEN VALUE. * @H1A
.*---------------------------------------------------------------* @H1A
.CMXMN   ANOP                                                      @H1A
         AIF   (&MXLTH GE &MNLTH).CMXMNOK                          @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN < MINLEN IS INVALID-> MNOTE IT.                  * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'MAXLEN=&MAXLEN OR  MINLEN=&MINLEN  INVALID.  MAXLEN +
               MUST BE GREATER THAN OR EQUAL TO MINLEN'            @H1A
&STOP    SETB  1                                                   @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK LEVNUM AND LEVLEN PARAMETER VALUES.               * @H1A
.*---------------------------------------------------------------* @H1A
.CMXMNOK ANOP                                                      @H1A
         AIF   (&LEVNUM GE 1 AND &LEVNUM LE 31).NSETNUM            @H1A
.*---------------------------------------------------------------* @H1A
.*       LEVNUM NOT 1 TO 31 DECIMAL-> MNOTE IT.                  * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'LEVNUM=&LEVNUM INVALID. MUST BE 1 TO 31 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&LVNUM   SETA  1                 SET LEVNUM FOR FURTHER PROCESSING @H1A
         AGO   .NCKLVL                                             @H1A
.NSETNUM ANOP                                                      @H1A
&LVNUM   SETA  &LEVNUM                                             @H1A
.NCKLVL  ANOP                                                      @H1A
         AIF   (&LVNUM EQ 1 AND '&LEVLEN' EQ '').NLEVDEF  DEFAULT  @H1A
         AIF   (&LEVLEN GE 1 AND &LEVLEN LE 64).NSETLEN            @H1A
.*---------------------------------------------------------------* @H1A
.*       LEVLEN NOT 1 TO 64 DECIMAL-> MNOTE IT.                  * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'LEVLEN=&LEVLEN INVALID. MUST BE 1 TO 64 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&LVLEN   SETA  1                 SET LEVLEN FOR FURTHER PROCESSING @H1A
         AGO   .HILO             GO CHECK HIGH, LOW, AND CONLEN.   @H1A
.NLEVDEF ANOP                                                      @H1A
&LVLEN   SETA   &MXLTH                                             @H1A
         AGO   .HILO             GO CHECK HIGH, LOW, AND CONLEN.   @H1A
.NSETLEN ANOP                                                      @H1A
&LVLEN   SETA  &LEVLEN                                             @H1A
         AGO   .HILO             GO CHECK HIGH, LOW, AND CONLEN.   @H1A
.*---------------------------------------------------------------* @H1A
.*      CONVERT=HEX ROUTINE.                                     * @H1A
.*---------------------------------------------------------------* @H1A
.HEX     ANOP                                                      @H1A
&F3      SETB  1                   SET HEX CONVERSION BIT          @H1A
         AIF    ('&MAXLEN' NE '').HMAXVAL   SHOULD BE SPECIFIED    @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN NOT SPECIFIED-> MNOTE IT.                        * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'REQUIRED MAXLEN PARAMETER IS NOT SPECIFIED'     @H1A
&STOP    SETB  1                                                   @H1A
&MXLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .HEXMIN           GO CHECK MINLEN                   @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MAXLEN VALUE OF 1 TO 8 DECIMAL.               * @H1A
.*---------------------------------------------------------------* @H1A
.HMAXVAL ANOP                                                      @H1A
         AIF   (&MAXLEN GE 1 AND &MAXLEN LE 8).HMAXLEN             @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN VALUE IS NOT IN THE RANGE OF 1 TO 8-> MNOTE IT.  * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'MAXLEN=&MAXLEN INVALID. MUST BE 1 TO 8 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&MXLTH   SETA  1                 SET MAXLEN VALUE                  @H1A
         AGO   .HEXMIN                                             @H1A
.HMAXLEN ANOP                                                      @H1A
&MXLTH   SETA  &MAXLEN           SET MAXLEN PARAMETER VALUE        @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MINLEN VALUE OF 1 TO 8 DECIMAL.               * @H1A
.*---------------------------------------------------------------* @H1A
.HEXMIN  ANOP                                                      @H1A
         AIF   (&MINLEN GE 1 AND &MINLEN LE 8).HMINLEN             @H1A
.*---------------------------------------------------------------* @H1A
.*       MINLEN VALUE IS NOT IN THE RANGE OF 1 TO 8-> MNOTE IT.  * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'MINLEN=&MINLEN INVALID. MUST BE 1 TO 8 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&MNLTH   SETA  1                 SET MINLEN VALUE                  @H1A
         AGO   .HMAXMIN          GO COMPARE MAXLEN TO MINLEN       @H1A
.HMINLEN ANOP                                                      @H1A
&MNLTH   SETA  &MINLEN           SET MINLEN VALUE                  @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK THAT MAXLEN IS GREATER THAN OR EQUAL TO MINLEN    * @H1A
.*---------------------------------------------------------------* @H1A
.HMAXMIN ANOP                                                      @H1A
         AIF   (&MXLTH GE &MNLTH).HEXCON  MAXLEN >= MINLEN?        @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN OR MINLEN VALUE IS INVALID-> MNOTE IT.           * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'MAXLEN=&MXLTH OR MINLEN=&MNLTH INVALID.  MAXLEN MUST+
                BE GREATER THAN OR EQUAL TO MINLEN VALUE.'         @H1A
&STOP    SETB  1                                                   @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR CONLEN VALUE OF 1 TO 4 DECIMAL.               * @H1A
.*---------------------------------------------------------------* @H1A
.HEXCON  ANOP                                                      @H1A
         AIF   ('&CONLEN' GE '1' AND '&CONLEN' LE '4').HEXCLOK     @H1A
.*---------------------------------------------------------------* @H1A
.*       CONLEN VALUE INVALID; MUST BE 1-4 DECIMAL-> MNOTE IT.   * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'CONLEN=&CONLEN INVALID. MUST BE 1 TO 4 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&CLEN    SETA  1                                                   @H1A
         AGO   .HEXLOW           SKIP CHARACTER SET BIT ROUTINE    @H1A
.*---------------------------------------------------------------* @H1A
.*       CONLEN SPECIFIED OK, SET CONLEN VARIABLE                * @H1A
.*---------------------------------------------------------------* @H1A
.HEXCLOK ANOP                                                      @H1A
&CLEN    SETA  &CONLEN                                             @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR LOW PARAMETER VALUE PROCESSING.               * @H1A
.*---------------------------------------------------------------* @H1A
.HEXLOW  ANOP                                                      @H1A
         AIF   (K'&LOW GE 0 AND K'&LOW LE 8).GETLNUM               @H1A
         AGO   .LOWNOTE          LOW TOO LARGE-GO MNOTE IT         @H1A
.GETLNUM ANOP                                                      @H1A
&CTR     SETA  1                 SET COUNTER TO FIRST DIGIT        @H1A
&NUM     SETA  K'&LOW            GET NUMBER OF DIGITS OF LOW VALUE @H1A
         AIF   (&NUM LT 8).LOWLOOP   LESS THAN 8 DIGITS?           @H1A
&CTR     SETA  2                 SET COUNTER TO SECOND DIGIT       @H1A
.*---------------------------------------------------------------* @H1A
.*       EXPLICITLY CHECK FIRST DIGIT OF LOW VALUE TO INSURE     * @H1A
.*       THAT IT IS NOT A NEGATIVE NUMBER (I.E. > 7FFFFFFF)      * @H1A
.*       IF THERE ARE EIGHT DIGITS SPECIFIED.                    * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   ('&LOW'(1,1) GE '0' AND '&LOW'(1,1) LE '7').LOWLOOP @H1A
         AGO   .LOWNOTE                                            @H1A
.LOWLOOP ANOP                                                      @H1A
         AIF   ('&LOW'(&CTR,1) GE 'A' AND '&LOW'(&CTR,1) LE 'F' OR     +
                '&LOW'(&CTR,1) GE '0' AND '&LOW'(&CTR,1) LE '9').L @H1A
         AGO    .LOWNOTE                                           @H1A
.L       ANOP                                                      @H1A
&CTR     SETA  &CTR+1            SET COUNTER TO NEXT DIGIT         @H1A
         AIF   (&CTR GT &NUM).LOWDONE   FINISHED ALL DIGITS?       @H1A
         AGO   .LOWLOOP          NO, DO NEXT DIGIT.                @H1A
.*---------------------------------------------------------------* @H1A
.*       LOW VALUE INVALID; MUST BE 0 TO 7FFFFFFF-> MNOTE IT.    * @H1A
.*---------------------------------------------------------------* @H1A
.LOWNOTE ANOP                                                      @H1A
         MNOTE 12,'LOW=&LOW INVALID. MUST BE 0 TO 7FFFFFFF HEX'    @H1A
&STOP    SETB  1                                                   @H1A
&HLOW    SETC  '0'               SET HEX LOW VALUE TO ZERO         @H1A
         AGO   .HEXHIGH          GO CHECK THE HIGH RANGE VALUE     @H1A
.LOWDONE ANOP                                                      @H1A
&HLOW    SETC  '&LOW'            SET HEX LOW VALUE                 @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR HIGH PARAMETER VALUE PROCESSING.              * @H1A
.*---------------------------------------------------------------* @H1A
.HEXHIGH ANOP                                                      @H1A
         AIF   ('&HIGH' NE '2147483647').HCKHIGH                   @H1A
&HHGH    SETC  '7FFFFFFF'        SET TO MAXIMUM DEFAULT VALUE      @H1A
         AGO   .HXCHC                                              @H1A
.HCKHIGH AIF   (K'&HIGH GE 0 AND K'&HIGH LE 8).GETHNUM             @H1A
         AGO   .HGHNOTE          HIGH TOO LARGE-GO MNOTE IT        @H1A
.GETHNUM ANOP                                                      @H1A
&CTR     SETA  1                 SET COUNTER TO FIRST DIGIT        @H1A
&NUM     SETA  K'&HIGH          GET NUMBER OF DIGITS OF HIGH VALUE @H1A
         AIF   (&NUM LT 8).HGHLOOP   LESS THAN 8 DIGITS?           @H1A
&CTR     SETA  2                 SET COUNTER TO SECOND DIGIT       @H1A
.*---------------------------------------------------------------* @H1A
.*       EXPLICITLY CHECK FIRST DIGIT OF HIGH VALUE TO INSURE    * @H1A
.*       THAT IT IS NOT A NEGATIVE NUMBER (I.E. > 7FFFFFFF)      * @H1A
.*       IF THERE ARE EIGHT DIGITS SPECIFIED.                    * @H1A
.*---------------------------------------------------------------* @H1A
         AIF ('&HIGH'(1,1) GE '0' AND '&HIGH'(1,1) LE '7').HGHLOOP @H1A
         AGO   .HGHNOTE                                            @H1A
.HGHLOOP ANOP                                                      @H1A
         AIF   ('&HIGH'(&CTR,1) GE 'A' AND '&HIGH'(&CTR,1) LE 'F' OR '&+
               HIGH'(&CTR,1) GE '0' AND '&HIGH'(&CTR,1) LE '9').H  @H1A
         AGO    .HGHNOTE                                           @H1A
.H       ANOP                                                      @H1A
&CTR     SETA  &CTR+1            SET COUNTER TO NEXT DIGIT         @H1A
         AIF   (&CTR GT &NUM).HGHDONE   FINISHED ALL DIGITS?       @H1A
         AGO   .HGHLOOP          NO, DO NEXT DIGIT.                @H1A
.*---------------------------------------------------------------* @H1A
.*       HIGH VALUE INVALID; MUST BE 0 TO 7FFFFFFF-> MNOTE IT.   * @H1A
.*---------------------------------------------------------------* @H1A
.HGHNOTE ANOP                                                      @H1A
         MNOTE 12,'HIGH=&HIGH INVALID. MUST BE 0 TO 7FFFFFFF HEX'  @H1A
&STOP    SETB  1                                                   @H1A
&HHGH    SETC  '7FFFFFFF'        SET HEX HIGH VALUE TO HIGH VALUE  @H1A
         AGO   .HXCHC                                              @H2C
.HGHDONE ANOP                                                      @H1A
&HHGH    SETC  '&HIGH'           SET HEX HIGH VALUE                @H1A
.*---------------------------------------------------------------* @H1A
.*       TEST HEX HIGH VALUE TO HEX LOW VALUE. (HIGH >= LOW)     * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   ('&HHGH' GE '&HLOW').HXCHC                          @H1A
.*---------------------------------------------------------------* @H1A
.*       HIGH NOT GREATER THAN OR EQUAL TO LOW VALUE-> MNOTE IT. * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'HIGH=&HHGH OR LOW=&HLOW INVALID. HIGH MUST BE GREATER+
                THAN OR EQUAL TO LOW VALUE.'                       @H1A
&STOP    SETB  1                                                   @H1A
&HHGH    SETC  '7FFFFFFF'        SET HEX HIGH VALUE TO HIGH VALUE  @H1A
&HLOW    SETC  '0'               SET HEX LOW VALUE TO ZERO         @H1A
.*---------------------------------------------------------------* @H1A
.*       MAKE SURE NO CHOICES WERE SPECIFIED FOR HEX.            * @H1A
.*---------------------------------------------------------------* @H1A
.HXCHC   ANOP                                                      @H1A
  AIF ('&CHOICE1' EQ '' AND '&CHOICE2' EQ '' AND '&CHOICE3' EQ '' AND '+
               &CHOICE4' EQ '' AND '&CHOICE5' EQ '' AND '&CHOICE6' EQ '+
               ' AND '&CHOICE7' EQ '' AND '&CHOICE8' EQ '').HXLEV  @H1A
.*---------------------------------------------------------------* @H1A
.*   CHOICE#= WAS SPECIFIED WITH CONVERT=HEX-> MNOTE IT.         * @H1A
.*---------------------------------------------------------------* @H1A
       MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=HEX HAVE NO MEANING. CHOICE+
                PARAMETERS ARE IGNORED'                            @H1A
.*---------------------------------------------------------------* @H1A
.*       MAKE SURE THAT LEVNUM AND LEVLEN WERE NOT SPECIFIED.    * @H1A
.*---------------------------------------------------------------* @H1A
.HXLEV   ANOP                                                      @H1A
         AIF   ('&LEVNUM' EQ '1' AND '&LEVLEN' EQ '').HXFSOT       @H2C
.*---------------------------------------------------------------* @H1A
.*   LEVNUM OR LEVLEN WERE SPECIFIED WITH HEX-> MNOTE IT.        * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 4,'LEVNUM  AND/OR  LEVLEN FOR  CONVERT=HEX  HAVE NO MEAN+
               ING.  LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'        @H1A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE THAT FSTCHAR AND OTHCHAR WERE NOT SPECIFIED.  * @H2A
.*---------------------------------------------------------------* @H2A
.HXFSOT  ANOP                                                      @H2A
         AIF   ('&FSTCHAR' EQ '' AND '&OTHCHAR' EQ '').BYTEOFF     @H2A
.*---------------------------------------------------------------* @H2A
.*   FSTCHAR OR OTHCHAR WERE SPECIFIED WITH HEX-> MNOTE IT.      * @H2A
.*---------------------------------------------------------------* @H2A
         MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR  CONVERT=HEX  HAVE NO MEAN+
               ING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'       @H2A
         AGO   .BYTEOFF                                            @H2A
.*****************************************************************
.*   CONVERT=CHOICE ROUTINE; CHECKS TO SEE IF THE CHOICE WAS     *
.*   SELECTED- IF IT WAS:                                        *
.*---------------------------------------------------------------*
.*   A.  MAKE SURE THAT EXACTLY TWO SUBPARAMETERS WERE SPECIFIED *
.*   B.  CHECK TO SEE THAT THE SYMBOL FOR ANY CHOICES SPECIFIED  *
.*       IS VALID. THAT IS, DOES NOT EXCEED 8 CHARACTERS, AND    *
.*       DOES NOT CONTAIN INVALID CHARACTERS.                    *
.*   C.  MAKE SURE THAT THE VALUE IS EXACTLY TWO HEX DIGITS      *
.*   D.  IF THE LENGTH OF THE VALUE IS OKAY                      *
.*       1.  MAKE SURE THE DIGITS ARE HEX 0-9 AND A-F ONLY       *
.*   E.  IF THE CHOICE WAS NOT SPECIFIED THEN THE CHOICE WILL    *
.*       BE MADE ZEROES                                          *
.*****************************************************************
.* ROUTINES "A-E". THE DESCRIPTION OF THE ROUTINES ARE           *
.*                 AS FOLLOWS:                                   *
.*  A= AIF  (N'&CHOICE# NE 2).CHCERR  N MEANS COUNT # OF         *
.*       PARAMETERS.                                             *
.*  B= JDSCAN &CH# IS AN INTERNAL MACRO CALL TO SCAN THE SYMBOL. * @R6A
.*     ROUTINE "B" ALSO CHECKS THAT EACH PARAMETER IS NOT A      *
.*       BLANK, AS THE ASSEMBLER WILL ALLOW THEM:                *
.*     AIF  ('&CHOICE#(1)' NE '' AND '&CHOICE#(2)' NE '').CH#OK  *
.*  C= AIF  (K'&VAL# NE 2).BADVAL  K MEANS COUNT # OF CHARACTERS *
.*  D= AIF  ('&VAL#'(SUBSCRIPT1,SUBSCRIPT2) GE OR LE A HEX DIGIT *
.*  E= AIF  ('&CHOICE#' EQ '').ZCH#  BRANCH TO A ZEROING ROUTINE *
.*****************************************************************
.CHOICE  ANOP
&F0      SETB  1                 CHOICE FLAG BIT SET ON
.*---------------------------------------------------------------*
.*              C H O I C E   O N E   P R O C E S S I N G        *
.*---------------------------------------------------------------*
&CTR     SETA  1
         AIF   ('&CHOICE1' EQ '').ZCH1
&CHOICE# SETC  'CHOICE1'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE1        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE1 NE 2).CHCERR
         AIF   ('&CHOICE1(1)' NE '' AND '&CHOICE1(2)' NE '').CH1OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH1OK   ANOP                                                      @R3A
&CH1     SETC  '&CHOICE1(1)'     CHOICE1 SELECTED
         AIF   ('&CH1' EQ '*').SCAN1  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH1             CHOICE1 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN1   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL1    SETC  '&CHOICE1(2)'     VALUE1 SELECTED
         AIF   (K'&VAL1 NE 2).BADVAL
         AIF   ('&VAL1'(1,1) GE '0' AND '&VAL1'(1,1) LE '9' OR         +
               '&VAL1'(1,1)  GE 'A' AND '&VAL1'(1,1) LE 'F').SECVAL1
         AGO   .BADVAL
.SECVAL1 AIF   ('&VAL1'(2,1) GE '0' AND '&VAL1'(2,1) LE '9' OR         +
               '&VAL1'(2,1)  GE 'A' AND '&VAL1'(2,1) LE 'F').CH2
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   T W O   P R O C E S S I N G        *
.*---------------------------------------------------------------*
.CH2     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE2' EQ '').ZCH2
&CHOICE# SETC  'CHOICE2'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE2        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE2 NE 2).CHCERR
         AIF   ('&CHOICE2(1)' NE '' AND '&CHOICE2(2)' NE '').CH2OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH2OK   ANOP                                                      @R3A
&CH2     SETC  '&CHOICE2(1)'     CHOICE2 SELECTED
         AIF   ('&CH2' EQ '*').SCAN2  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH2             CHOICE2 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN2   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL2    SETC  '&CHOICE2(2)'     VALUE2 SELECTED
         AIF   (K'&VAL2 NE 2).BADVAL
         AIF   ('&VAL2'(1,1) GE '0' AND '&VAL2'(1,1) LE '9' OR         +
               '&VAL2'(1,1)  GE 'A' AND '&VAL2'(1,1) LE 'F').SECVAL2
         AGO   .BADVAL
.SECVAL2 AIF   ('&VAL2'(2,1) GE '0' AND '&VAL2'(2,1) LE '9' OR         +
               '&VAL2'(2,1)  GE 'A' AND '&VAL2'(2,1) LE 'F').CH3
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   T H R E E   P R O C E S S I N G    *
.*---------------------------------------------------------------*
.CH3     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE3' EQ '').ZCH3
&CHOICE# SETC  'CHOICE3'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE3        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE3 NE 2).CHCERR
         AIF   ('&CHOICE3(1)' NE '' AND '&CHOICE3(2)' NE '').CH3OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH3OK   ANOP                                                      @R3A
&CH3     SETC  '&CHOICE3(1)'     CHOICE3 SELECTED
         AIF   ('&CH3' EQ '*').SCAN3  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH3             CHOICE3 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN3   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL3    SETC  '&CHOICE3(2)'     VALUE3 SELECTED
         AIF   (K'&VAL3 NE 2).BADVAL
         AIF   ('&VAL3'(1,1) GE '0' AND '&VAL3'(1,1) LE '9' OR         +
               '&VAL3'(1,1)  GE 'A' AND '&VAL3'(1,1) LE 'F').SECVAL3
         AGO   .BADVAL
.SECVAL3 AIF   ('&VAL3'(2,1) GE '0' AND '&VAL3'(2,1) LE '9' OR         +
               '&VAL3'(2,1)  GE 'A' AND '&VAL3'(2,1) LE 'F').CH4
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   F O U R   P R O C E S S I N G      *
.*---------------------------------------------------------------*
.CH4     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE4' EQ '').ZCH4
&CHOICE# SETC  'CHOICE4'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE4        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE4 NE 2).CHCERR
         AIF   ('&CHOICE4(1)' NE '' AND '&CHOICE4(2)' NE '').CH4OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH4OK   ANOP                                                      @R3A
&CH4     SETC  '&CHOICE4(1)'     CHOICE4 SELECTED
         AIF   ('&CH4' EQ '*').SCAN4  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH4             CHOICE4 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN4   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL4    SETC  '&CHOICE4(2)'     VALUE4 SELECTED
         AIF   (K'&VAL4 NE 2).BADVAL
         AIF   ('&VAL4'(1,1) GE '0' AND '&VAL4'(1,1) LE '9' OR         +
               '&VAL4'(1,1)  GE 'A' AND '&VAL4'(1,1) LE 'F').SECVAL4
         AGO   .BADVAL
.SECVAL4 AIF   ('&VAL4'(2,1) GE '0' AND '&VAL4'(2,1) LE '9' OR         +
               '&VAL4'(2,1)  GE 'A' AND '&VAL4'(2,1) LE 'F').CH5
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   F I V E   P R O C E S S I N G      *
.*---------------------------------------------------------------*
.CH5     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE5' EQ '').ZCH5
&CHOICE# SETC  'CHOICE5'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE5        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE5 NE 2).CHCERR
         AIF   ('&CHOICE5(1)' NE '' AND '&CHOICE5(2)' NE '').CH5OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH5OK   ANOP                                                      @R3A
&CH5     SETC  '&CHOICE5(1)'     CHOICE5 SELECTED
         AIF   ('&CH5' EQ '*').SCAN5  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH5             CHOICE5 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN5   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL5    SETC  '&CHOICE5(2)'     VALUE5 SELECTED
         AIF   (K'&VAL5 NE 2).BADVAL
         AIF   ('&VAL5'(1,1) GE '0' AND '&VAL5'(1,1) LE '9' OR         +
               '&VAL5'(1,1)  GE 'A' AND '&VAL5'(1,1) LE 'F').SECVAL5
         AGO   .BADVAL
.SECVAL5 AIF   ('&VAL5'(2,1) GE '0' AND '&VAL5'(2,1) LE '9' OR         +
               '&VAL5'(2,1)  GE 'A' AND '&VAL5'(2,1) LE 'F').CH6
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   S I X   P R O C E S S I N G        *
.*---------------------------------------------------------------*
.CH6     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE6' EQ '').ZCH6
&CHOICE# SETC  'CHOICE6'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE6        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE6 NE 2).CHCERR
         AIF   ('&CHOICE6(1)' NE '' AND '&CHOICE6(2)' NE '').CH6OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH6OK   ANOP                                                      @R3A
&CH6     SETC  '&CHOICE6(1)'     CHOICE6 SELECTED
         AIF   ('&CH6' EQ '*').SCAN6  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH6             CHOICE6 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN6   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL6    SETC  '&CHOICE6(2)'     VALUE6 SELECTED
         AIF   (K'&VAL6 NE 2).BADVAL
         AIF   ('&VAL6'(1,1) GE '0' AND '&VAL6'(1,1) LE '9' OR         +
               '&VAL6'(1,1)  GE 'A' AND '&VAL6'(1,1) LE 'F').SECVAL6
         AGO   .BADVAL
.SECVAL6 AIF   ('&VAL6'(2,1) GE '0' AND '&VAL6'(2,1) LE '9' OR         +
               '&VAL6'(2,1)  GE 'A' AND '&VAL6'(2,1) LE 'F').CH7
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   S E V E N   P R O C E S S I N G    *
.*---------------------------------------------------------------*
.CH7     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE7' EQ '').ZCH7
&CHOICE# SETC  'CHOICE7'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE7        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE7 NE 2).CHCERR
         AIF   ('&CHOICE7(1)' NE '' AND '&CHOICE7(2)' NE '').CH7OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH7OK   ANOP                                                      @R3A
&CH7     SETC  '&CHOICE7(1)'     CHOICE7 SELECTED
         AIF   ('&CH7' EQ '*').SCAN7  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH7             CHOICE7 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN7   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL7    SETC  '&CHOICE7(2)'     VALUE7 SELECTED
         AIF   (K'&VAL7 NE 2).BADVAL
         AIF   ('&VAL7'(1,1) GE '0' AND '&VAL7'(1,1) LE '9' OR         +
               '&VAL7'(1,1)  GE 'A' AND '&VAL7'(1,1) LE 'F').SECVAL7
         AGO   .BADVAL
.SECVAL7 AIF   ('&VAL7'(2,1) GE '0' AND '&VAL7'(2,1) LE '9' OR         +
               '&VAL7'(2,1)  GE 'A' AND '&VAL7'(2,1) LE 'F').CH8
         AGO   .BADVAL
.*---------------------------------------------------------------*
.*              C H O I C E   E I G H T   P R O C E S S I N G    *
.*---------------------------------------------------------------*
.CH8     ANOP
&CTR     SETA  &CTR+1
         AIF   ('&CHOICE8' EQ '').ZCH8
&CHOICE# SETC  'CHOICE8'         IDENTIFIER FOR POSSIBLE MNOTE
&NUM     SETA  N'&CHOICE8        VARIABLE FOR MNOTE
         AIF   (N'&CHOICE8 NE 2).CHCERR
         AIF   ('&CHOICE8(1)' NE '' AND '&CHOICE8(2)' NE '').CH8OK @R3A
&NUM     SETA  1                 ONLY ONE PARAMETER SPECIFIED      @R3A
         AGO   .CHCERR                                             @R3A
.CH8OK   ANOP                                                      @R3A
&CH8     SETC  '&CHOICE8(1)'     CHOICE8 SELECTED
         AIF   ('&CH8' EQ '*').SCAN8  USED FOR REFER BACK PROCESS  @H1A
         JDSCAN &CH8             CHOICE8 SCAN                      @R6A
         AGO   .JDSCAN           GO TEST FOR ERROR RETURN BITS     @R6A
.SCAN8   ANOP                    RETURNS HERE IF NO ERROR          @R6A
&VAL8    SETC  '&CHOICE8(2)'     VALUE8 SELECTED
         AIF   (K'&VAL8 NE 2).BADVAL
         AIF   ('&VAL8'(1,1) GE '0' AND '&VAL8'(1,1) LE '9' OR         +
               '&VAL8'(1,1)  GE 'A' AND '&VAL8'(1,1) LE 'F').SECVAL8
         AGO   .BADVAL
.SECVAL8 AIF   ('&VAL8'(2,1) GE '0' AND '&VAL8'(2,1) LE '9' OR         +
               '&VAL8'(2,1)  GE 'A' AND '&VAL8'(2,1) LE 'F').ANYCHC
.*---------------------------------------------------------------*
.*   BADVAL MNOTE SAYS THAT THE VALUE OF THE CHOICE OPTION       *
.*   IS NOT TWO HEX DIGITS OR THAT ONE OF THE DIGITS IS INVALID. *
.*   THE BAD CHOICE AND VALUE OPTIONS WILL BE SET TO ZEROES.     *
.*---------------------------------------------------------------*
.BADVAL  ANOP
         MNOTE 12,'&CHOICE# VALUE NOT TWO HEX DIGITS'
&ERRSW   SETB  1                  SET CHOICE ERROR SWITCH          @R2A
&STOP    SETB  1                                                   @R1A
.SCANBAD ANOP                     ROUTINE .JDSCAN BRANCHES HERE    @R6A
         AIF   (&CTR EQ 1).ZCH1
         AIF   (&CTR EQ 2).ZCH2
         AIF   (&CTR EQ 3).ZCH3
         AIF   (&CTR EQ 4).ZCH4
         AIF   (&CTR EQ 5).ZCH5
         AIF   (&CTR EQ 6).ZCH6
         AIF   (&CTR EQ 7).ZCH7
         AGO   .ZCH8
.*---------------------------------------------------------------*
.*   CHCERR MNOTE SAYS THAT THE CHOICE OPTION HAS TOO MANY       *
.*   SUBPARAMETERS SPECIFIED AND ONLY TWO ARE ALLOWED.           *
.*   THE BAD CHOICE AND VALUE OPTIONS WILL BE SET TO ZEROES.     *
.*---------------------------------------------------------------*
.CHCERR  ANOP
        MNOTE 12,'TWO SUBPARAMETERS EXPECTED WITH &CHOICE#: &NUM FOUND'
&ERRSW   SETB  1                  SET CHOICE ERROR SWITCH          @R2A
&STOP    SETB  1                                                   @R1A
         AIF   (&CTR EQ 8).ZCH8
         AIF   (&CTR EQ 7).ZCH7
         AIF   (&CTR EQ 6).ZCH6
         AIF   (&CTR EQ 5).ZCH5
         AIF   (&CTR EQ 4).ZCH4
         AIF   (&CTR EQ 3).ZCH3
         AIF   (&CTR EQ 2).ZCH2
.*---------------------------------------------------------------*
.*   THIS ROUTINE ZEROES OUT CHOICES NOT SPECIFIED               *
.*   OR ANY BAD SPECIFICATIONS OF THE CHOICE AND VALUE OPTIONS.  *
.*   THE 'VALUE' OF THE CHOICE OPTION IS NOT ACTUALLY ZEROED OUT *
.*   HERE, BUT WILL BE LATER, DETERMINED BY WHICH CHOICE IS HERE.*
.*   THEN RETURN  TO CHECK NEXT CHOICE.                          *
.*---------------------------------------------------------------*
.ZCH1    ANOP
&CH1     SETC  '0'               SET CHOICE1 TO ZEROES
         AGO   .CH2
.ZCH2    ANOP
&CH2     SETC  '0'               SET CHOICE2 TO ZEROES
         AGO   .CH3
.ZCH3    ANOP
&CH3     SETC  '0'               SET CHOICE3 TO ZEROES
         AGO   .CH4
.ZCH4    ANOP
&CH4     SETC  '0'               SET CHOICE4 TO ZEROES
         AGO   .CH5
.ZCH5    ANOP
&CH5     SETC  '0'               SET CHOICE5 TO ZEROES
         AGO   .CH6
.ZCH6    ANOP
&CH6     SETC  '0'               SET CHOICE6 TO ZEROES
         AGO   .CH7
.ZCH7    ANOP
&CH7     SETC  '0'               SET CHOICE7 TO ZEROES
         AGO   .CH8
.ZCH8    ANOP
&CH8     SETC  '0'               SET CHOICE8 TO ZEROES
.*---------------------------------------------------------------*
.*       CHECK TO SEE IF ANY VALID CHOICES WERE SELECTED.        *
.*       THE ERROR SWITCH WAS SET IF A PREVIOUS DIFFERENT MNOTE  * @R2A
.*       WAS ISSUED AND THE CHOICE(S) WERE SET TO ZEROES IN THE  * @R2A
.*       PROCESS, IN WHICH CASE THIS MNOTE WILL NOT BE ISSUED.   * @R2A
.*---------------------------------------------------------------*
.ANYCHC  ANOP                    ANY CHOICES AT ALL??
         AIF   (&ERRSW EQ 1).CHCSOK                                @R2A
         AIF   ('&CH1' EQ '0' AND '&CH2' EQ '0'  AND '&CH3' EQ '0' AND +
               '&CH4' EQ '0'  AND '&CH5' EQ '0'  AND '&CH6' EQ '0' AND +
               '&CH7' EQ '0' AND '&CH8' EQ '0').NOCHCS
         AGO   .CHCSOK          AT LEAST ONE CHOICE WAS SPECIFIED
.*---------------------------------------------------------------*
.* CONVERT=CHOICE BUT NO VALID CHOICES WERE SPECIFIED-> MNOTE IT.*
.*---------------------------------------------------------------*
.NOCHCS  ANOP
         MNOTE 12,'CONVERT=CHOICE SPECIFIED BUT NO CHOICE OPTIONS SPECI+
               FIED'
&STOP    SETB  1                                                   @R1A
.*---------------------------------------------------------------*
.*       CHECK TO SEE IF MAXLEN WAS SPECIFIED.                   * @H1C
.*---------------------------------------------------------------*
.CHCSOK  ANOP
         AIF   ('&MAXLEN' EQ '' OR '&MAXLEN' EQ '8').PRESET        @H1C
.*---------------------------------------------------------------* @H1C
.*       MAXLEN WAS NOT EQUAL TO 8-> MNOTE IT.                   * @H1C
.*---------------------------------------------------------------* @H1C
    MNOTE 4,'MAXLEN PARAMETER IS NOT REQUIRED WITH CONVERT=CHOICE.  MAX+
               LEN SET TO EIGHT'                                   @H1C
.PRESET  ANOP
&MXLTH   SETA  8                   MAXLEN IS SET TO 8 FOR CHOICE   @H1C
.*---------------------------------------------------------------* @H1A
.*       CHECK TO SEE IF MINLEN WAS SPECIFIED.                   * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   ('&MINLEN' EQ '1').PRESET2                          @H1A
.*---------------------------------------------------------------* @H1A
.*       MINLEN WAS NOT EQUAL TO 1-> MNOTE IT.                   * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 4,'MINLEN PARAMETER IS NOT REQUIRED WITH CONVERT=CHOICE.+
                MINLEN SET TO 1'                                   @H1A
.PRESET2 ANOP                                                      @H1A
&MNLTH   SETA  1                   MINLEN IS SET TO 1 FOR CHOICE   @H1A
.*---------------------------------------------------------------* @H1A
.*       MAKE SURE THAT LEVNUM AND LEVLEN WERE NOT SPECIFIED.    * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   ('&LEVNUM' EQ '1' AND '&LEVLEN' EQ '').CHFSOT       @H1A
.*---------------------------------------------------------------* @H1A
.*   LEVNUM OR LEVLEN WERE SPECIFIED WITH CHOICE-> MNOTE IT.     * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=CHOICE HAVE NO MEANIN+
               G.  LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'          @H1A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE THAT FSTCHAR AND OTHCHAR WERE NOT SPECIFIED.  * @H2A
.*---------------------------------------------------------------* @H2A
.CHFSOT  ANOP                                                      @H2A
         AIF   ('&FSTCHAR' EQ '' AND '&OTHCHAR' EQ '').HILO        @H2A
.*---------------------------------------------------------------* @H2A
.*   FSTCHAR OR OTHCHAR WERE SPECIFIED WITH CHOICE-> MNOTE IT.   * @H2A
.*---------------------------------------------------------------* @H2A
        MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR CONVERT=CHOICE HAVE NO MEAN+
               ING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'       @H2A
         AGO   .HILO               CHECK FOR HIGH & LOW USAGE      @H2A
.*---------------------------------------------------------------*
.*   CONVERT=INTEGER ROUTINE.                                    *
.*---------------------------------------------------------------*
.INTEGER ANOP
&F2      SETB  1                 SET INTEGER FLAG BIT ON
.*---------------------------------------------------------------* @R5A
.*       MAKE SURE NO CHOICES WERE SPECIFIED FOR INTEGER.        * @R5A
.*---------------------------------------------------------------* @R5A
  AIF ('&CHOICE1' EQ '' AND '&CHOICE2' EQ '' AND '&CHOICE3' EQ '' AND '+
               &CHOICE4' EQ '' AND '&CHOICE5' EQ '' AND '&CHOICE6' EQ '+
               ' AND '&CHOICE7' EQ '' AND '&CHOICE8' EQ '').INLEV  @R5A
.*---------------------------------------------------------------* @R5A
.*   CHOICE#= WAS SPECIFIED WITH CONVERT=INTEGER-> MNOTE IT.     * @R5A
.*---------------------------------------------------------------* @R5A
         MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=INTEGER HAVE NO MEANING. +
               CHOICE PARAMETERS ARE IGNORED'                      @R5A
.*---------------------------------------------------------------* @H1A
.*       MAKE SURE THAT LEVNUM AND LEVLEN WERE NOT SPECIFIED.    * @H1A
.*---------------------------------------------------------------* @H1A
.INLEV   ANOP                                                      @H1A
         AIF   ('&LEVNUM' EQ '1' AND '&LEVLEN' EQ '').INFSOT       @H2C
.*---------------------------------------------------------------* @H1A
.*   LEVNUM OR LEVLEN WERE SPECIFIED WITH INTEGER-> MNOTE IT.    * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=INTEGER HAVE NO MEANI+
               NG.  LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'         @H1A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE THAT FSTCHAR AND OTHCHAR WERE NOT SPECIFIED.  * @H2A
.*---------------------------------------------------------------* @H2A
.INFSOT  ANOP                                                      @H2A
         AIF   ('&FSTCHAR' EQ '' AND '&OTHCHAR' EQ '').CKHG2LW     @H2A
.*---------------------------------------------------------------* @H2A
.*   FSTCHAR OR OTHCHAR WERE SPECIFIED WITH INTEGER-> MNOTE IT.  * @H2A
.*---------------------------------------------------------------* @H2A
       MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR CONVERT=INTEGER HAVE NO MEAN+
               ING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'       @H2A
.*---------------------------------------------------------------*
.*       CHECK HIGH RANGE TO LOW RANGE                           *
.*---------------------------------------------------------------*
.CKHG2LW ANOP
&PLOW    SETA  &LOW              SET LOW INTEGER VALUE
&PHGH    SETA  &HIGH             SET HIGH INTEGER VALUE
         AIF   (&PHGH  GE  &PLOW).HIGHOK     HIGH >= LOW?
.*---------------------------------------------------------------*
.*       HIGH OPTION IS NOT >= LOW RANGE-> MNOTE IT.             *
.*---------------------------------------------------------------*
        MNOTE 12,'HIGH=&PHGH OR LOW=&PLOW INVALID. HIGH MUST BE GREATER+
                THAN OR EQUAL TO LOW VALUE'
&STOP    SETB  1                                                   @R1A
.*---------------------------------------------------------------*
.*       HIGH VALUE IS GREATER THAN OR EQUAL TO LOW VALUE.       *
.*       CHECK FOR CONLEN OPTION ROUTINE                         *
.*---------------------------------------------------------------*
.HIGHOK  ANOP
         AIF   ('&CONLEN' GE '1' AND '&CONLEN' LE '4').CLENOK
.*---------------------------------------------------------------*
.*  CONLEN VALUE IS NOT CORRECT; MUST BE 1-4 DECIMAL-> MNOTE IT. *
.*---------------------------------------------------------------*
       MNOTE 12,'CONLEN=&CONLEN INVALID. MUST BE 1 TO 4 DECIMAL.'
&STOP    SETB  1                                                   @R1A
&CLEN    SETA  1
         AGO   .IMAXLEN          CHECK MAXLEN                      @H1C
.*---------------------------------------------------------------*
.*       CONLEN SPECIFIED OK, SET CONLEN VARIABLE.               *
.*---------------------------------------------------------------*
.CLENOK  ANOP
&CLEN    SETA  &CONLEN
.IMAXLEN ANOP
         AIF    ('&MAXLEN' NE '').IMAXVAL   SHOULD BE SPECIFIED    @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN NOT SPECIFIED-> MNOTE IT.                        * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'REQUIRED MAXLEN PARAMETER IS NOT SPECIFIED'     @H1A
&STOP    SETB  1                                                   @H1A
&MXLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .INMIN            GO CHECK MINLEN                   @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MAXLEN VALUE OF 1 TO 10 DECIMAL.              * @H1A
.*---------------------------------------------------------------* @H1A
.IMAXVAL ANOP                                                      @H1A
         AIF   (&MAXLEN GE 1 AND &MAXLEN LE 10).IMAXOK             @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN NOT CORRECT VALUE OF 1 TO 10-> MNOTE IT.         * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'MAXLEN=&MAXLEN INVALID. MUST BE 1 TO 10 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&MXLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .INMIN            GO CHECK MINLEN                   @H1A
.IMAXOK  ANOP                                                      @H1A
&MXLTH   SETA  &MAXLEN           GET MAXLEN PARAMETER VALUE        @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MINLEN VALUE OF 1 TO 10 DECIMAL.              * @H1A
.*---------------------------------------------------------------* @H1A
.INMIN   ANOP                                                      @H1A
         AIF   (&MINLEN GE 1 AND &MINLEN LE 10).IMINOK             @H1A
.*---------------------------------------------------------------* @H1A
.*       MINLEN NOT CORRECT VALUE OF 1 TO 10-> MNOTE IT.         * @H1A
.*---------------------------------------------------------------* @H1A
        MNOTE 12,'MINLEN=&MINLEN INVALID. MUST BE 1 TO 10 DECIMAL' @H1A
&STOP    SETB  1                                                   @H1A
&MNLTH   SETA  1                 SET FOR FURTHER PROCESSING        @H1A
         AGO   .IMXMN            GO COMPARE MAXLEN TO MINLEN       @H1A
.IMINOK  ANOP                                                      @H1A
&MNLTH   SETA  &MINLEN           GET MINLEN PARAMETER VALUE        @H1A
.*---------------------------------------------------------------* @H1A
.*       CHECK FOR MAXLEN GREATER THAN OR EQUAL TO MINLEN VALUE. * @H1A
.*---------------------------------------------------------------* @H1A
.IMXMN   ANOP                                                      @H1A
         AIF   (&MXLTH GE &MNLTH).BYTEOFF                          @H1A
.*---------------------------------------------------------------* @H1A
.*       MAXLEN < MINLEN IS INVALID-> MNOTE IT.                  * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'MAXLEN=&MXLTH OR MINLEN=&MNLTH INVALID. MAXLEN MUST +
               BE GREATER THAN OR EQUAL TO MINLEN'                 @H1A
&STOP    SETB  1                                                   @H1A
         AGO    .BYTEOFF                                           @H1A
.*---------------------------------------------------------------* @H2A
.*      CONVERT=REFERRAL CONVERSION.                             * @H2A
.*---------------------------------------------------------------* @H2A
.REFERRL ANOP                                                      @H2A
&F4      SETB  1                                                   @H2A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE NO CHOICES WERE SPECIFIED FOR REFERRAL.       * @H2A
.*---------------------------------------------------------------* @H2A
  AIF ('&CHOICE1' EQ '' AND '&CHOICE2' EQ '' AND '&CHOICE3' EQ '' AND '+
               &CHOICE4' EQ '' AND '&CHOICE5' EQ '' AND '&CHOICE6' EQ '+
               ' AND '&CHOICE7' EQ '' AND '&CHOICE8' EQ '').REFLEV @H2A
.*---------------------------------------------------------------* @H2A
.*   CHOICE#= WAS SPECIFIED WITH CONVERT=REFERRAL-> MNOTE IT.    * @H2A
.*---------------------------------------------------------------* @H2A
         MNOTE 4,'CHOICE KEYWORDS FOR CONVERT=REFERRAL HAVE NO MEANING.+
                CHOICE PARAMETERS ARE IGNORED'                     @H2A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE THAT LEVNUM AND LEVLEN WERE NOT SPECIFIED.    * @H2A
.*---------------------------------------------------------------* @H2A
.REFLEV  ANOP                                                      @H2A
         AIF   ('&LEVNUM' EQ '1' AND '&LEVLEN' EQ '').RFFSOT       @H2A
.*---------------------------------------------------------------* @H2A
.*   LEVNUM OR LEVLEN WERE SPECIFIED WITH REFERRAL-> MNOTE IT.   * @H2A
.*---------------------------------------------------------------* @H2A
        MNOTE 4,'LEVNUM AND/OR LEVLEN FOR CONVERT=REFERRAL HAVE NO MEAN+
               ING. LEVNUM/LEVLEN PARAMETERS ARE IGNORED.'         @H2A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE THAT FSTCHAR AND OTHCHAR WERE NOT SPECIFIED.  * @H2A
.*---------------------------------------------------------------* @H2A
.RFFSOT  ANOP                                                      @H2A
         AIF   ('&FSTCHAR' EQ '' AND '&OTHCHAR' EQ '').REFMAX      @H2A
.*---------------------------------------------------------------* @H2A
.*   FSTCHAR OR OTHCHAR WERE SPECIFIED WITH REFERRAL-> MNOTE IT. * @H2A
.*---------------------------------------------------------------* @H2A
      MNOTE 4,'FSTCHAR AND/OR OTHCHAR FOR CONVERT=REFERRAL HAVE NO MEAN+
               ING. FSTCHAR/OTHCHAR PARAMETERS ARE IGNORED.'       @H2A
.*---------------------------------------------------------------* @H2A
.*       MAKE SURE THAT MAXLEN AND MINLEN WERE NOT SPECIFIED.    * @H2A
.*---------------------------------------------------------------* @H2A
.REFMAX  ANOP                                                      @H2A
         AIF   ('&MAXLEN' EQ '' AND '&MINLEN' EQ '1').RMXMN        @H2A
.*---------------------------------------------------------------* @H2A
.*   MAXLEN OR MINLEN WERE SPECIFIED WITH REFERRAL-> MNOTE IT.   * @H2A
.*---------------------------------------------------------------* @H2A
        MNOTE 4,'MAXLEN AND/OR MINLEN FOR CONVERT=REFERRAL HAVE NO MEAN+
               ING. MAXLEN/MINLEN PARAMETERS ARE PRESET.'          @H2A
.RMXMN   ANOP                                                      @H2A
&MXLTH   SETA  28                                                  @H2A
&MNLTH   SETA  1                                                   @H2A
.*---------------------------------------------------------------*
.*    CHECK TO SEE IF EITHER HIGH OR LOW WERE USED, ASSUMING     *
.*    THAT WHEN BOTH EXTREME VALUES ARE GIVEN THAT THE OPTIONS   *
.*    WERE NOT REALLY SPECIFIED BY THE USER. THIS TEST IS USED   *
.*    BY CHOICE, REFERRAL, AND CHARACTER ROUTINES.               * @H2C
.*---------------------------------------------------------------*
.HILO    ANOP
         AIF   ('&LOW' EQ '0' AND '&HIGH' EQ '2147483647').CKCONL
.*---------------------------------------------------------------* @H1C
.*       HIGH OR LOW WERE SPECIFIED FOR CHOICE, REFERRAL OR      * @H2C
.*             CHAR-> MNOTE IT.                                  * @H1C
.*---------------------------------------------------------------* @H1C
         MNOTE 4,'HIGH/LOW INVALID WITH CONVERT=&CONVERT.. HIGH/LOW PAR+
               AMETER IGNORED.'
.*---------------------------------------------------------------*
.*       CHECK TO SEE IF CONLEN OPTION SPECIFIED                 *
.*---------------------------------------------------------------*
.CKCONL  ANOP
         AIF   ('&CONLEN' EQ '').CONLOK
         AIF   (&F1 EQ 1 OR &F4 EQ 1).CONCHAR   CHAR OR REFERRAL   @H2C
.*---------------------------------------------------------------* @H1C
.*     CONLEN SPECIFIED, NOT USED FOR CHOICE. FOR CHARS          * @H1C
.*     CONVERSION THE CONLEN IS SET TO EQUAL MAXLEN OPTION.      * @H2C
.*     FOR REFERRAL CONVERSION THE CONLEN IS SET TO EQUAL MAXLEN * @H2A
.*     MINUS TWO.                                                * @H2A
.*     GET OUT VIA .BYTEOFF ROUTINE.                             * @H1C
.*---------------------------------------------------------------* @H1C
         MNOTE 4,'CONLEN NOT REQUIRED WITH CONVERT=CHOICE. CONLEN PARAM+
               ETER SET TO ONE'                                    @R4C
         AGO   .CONLOK                                             @R4A
.*---------------------------------------------------------------* @R4A
.*  CONLEN NOT REQUIRED FOR CONVERT=REFERRAL OR CHAR->MNOTE IT.  * @H2C
.*---------------------------------------------------------------* @R4A
.CONCHAR ANOP                                                      @R4A
         MNOTE 4,'CONLEN NOT  REQUIRED WITH  CONVERT=&CONVERT.. CONLEN +
               PARAMETER SET TO MAXLEN KEYWORD PARAMETER.'         @R4A
.CONLOK  ANOP
         AIF   (&F1).LENCLEN     CONLEN FOR CHARACTER              @H2C
         AIF   (&F4).REFCLEN     CONLEN FOR REFERRAL               @H2A
&CLEN    SETA  1             INITIALIZE CONLEN TO ONE FOR CHOICE
         AGO   .BYTEOFF     GO CHECK BYTE OFFSET
.LENCLEN ANOP
&CLEN    SETA  &MXLTH       SET CONLEN TO MAXLEN FOR CHARACTER     @H2C
         AGO   .BYTEOFF     GO CHECK BYTE OFFSET                   @H2A
.REFCLEN ANOP                                                      @H2A
&CLEN    SETA  &MXLTH-2     SET CONLEN TO MAXLEN-2 FOR REFERRAL    @H2A
.*---------------------------------------------------------------*
.*  CHECK TO SEE IF THE CONLEN PLUS BYTE OFFSET STEPS OVER       *
.*    THE 128 BYTE BOUNDARY SIZE.                                *
.*  THERE ARE ONLY 128 BYTES AVAILABLE FOR EACH SCHEDULER WORK   *
.*    BLOCK (SWB), THE LENGTH PLUS THE BYTE OFFSET CANNOT        *
.*    EXCEED THAT AMOUNT.                                        *
.*---------------------------------------------------------------*
.BYTEOFF ANOP
         AIF   (&CLEN+&BYTECTR LE 128).UPDATE                      @H1A
.*---------------------------------------------------------------* @H1A
.*       BYTE OFFSET OVERSTEPPED BOUNDARY OF 128-> RESTART       * @H1A
.*---------------------------------------------------------------* @H1A
.RESTART ANOP                                                      @H1A
&BYTECTR SETA  0                 RESTART OFFSET AT ZERO            @H1A
&BLKID   SETA  &BLKID+1          UPDATE BLOCK ID                   @H1A
.*---------------------------------------------------------------* @H1A
.*                  UPDATE THE BYTE OFFSET COUNTER               * @H1A
.*---------------------------------------------------------------* @H1A
.UPDATE  ANOP                                                      @H1A
&BYTEOFF SETA  &BYTECTR          GET BYTE OFFSET FOR OUTPUT        @H1A
&BYTECTR SETA  &BYTECTR+&CLEN    ADD CONLEN TO BYTE OFFSET
.*---------------------------------------------------------------*
.*  BOUNDARY STILL IN LINE; CHECK KEY AND DEFAULT VALUE FOR KEY  *
.*  OPTIONS. KEY=0000 IS DEFAULT; SPECIFICATION MUST BE          *
.*  0000 TO FFFF. THE FOLLOWING TRUTH TABLE SHOWS THE CHECKING.  *
.*               KEY   KEYDFLT      RESULTS                   *
.*              BLANK   BLANK    BOTH OPTIONS SET TO ZEROES   *
.*              NON-B   BLANK    CHECKS FOR VALID VALUE       *
.*              BLANK   NON-B    WARNS USER NO KEY SPECIFIED  *
.*              NON-B   NON-B    CHECKS FOR VALID VALUE       *
.*---------------------------------------------------------------*
.KEYCHK  ANOP
         AIF   ('&KEY' NE '').CONTKEY  IS KEY SPECIFIED?
.*---------------------------------------------------------------*
.*  KEY KEYWORD PARAMETER NOT SPECIFIED -> MNOTE IT.             *
.*---------------------------------------------------------------*
         MNOTE 12,'THE KEY= PARAMETER IS REQUIRED BUT IS NOT SPECIFIED'
&STOP    SETB  1                                                   @R1A
.CONTKEY ANOP
         AIF   ('&KEY' EQ '' AND '&KEYDFLT' EQ '').SKPDYN
         AIF   ('&KEY' NE '' AND '&KEYDFLT' EQ '').TESTDYN
         AIF   ('&KEY' EQ '' AND '&KEYDFLT' NE '').SETDEF
.*---------------------------------------------------------------*
.*  KEY=NON-BLANK AND KEYDFLT=NON-BLANK.                         *
.*  CHECK TO SEE THE CORRECT AMOUNT OF CHARACTERS ARE SPECIFIED. *
.*---------------------------------------------------------------*
&DKY     SETC  '&KEYDFLT'        SET UP DC VARIABLE                @R7M
         AIF   (K'&KEY NE 4).BADKEY      MUST BE 4 HEX DIGITS
&DKEY    SETC  '&KEY'            SET UP DC VARIABLE FOR POSSIBLE USE
         AGO   .CHKDYN           CHECK THE KEY DIGITS              @R8A
.*---------------------------------------------------------------* @R7A
.*       BRANCHES TO HERE FROM .CHKDYN OR .BADKEY ROUTINES VIA   * @R7A
.*       .TESTDYN ROUTINE (DKY WILL = 00) OR BY FALLING THROUGH  * @R7A
.*       THE PREVIOUS CODE (DKY WILL = KEYDFLT).                 * @R7A
.*---------------------------------------------------------------* @R7A
.DODFLT  ANOP                                                      @R8A
         AIF   ('&DKY' EQ '00').CONDEF                             @R7A
         AIF   (&F0 EQ 0).DEFNOTE   MNOTE IF CHOICE NOT SPECIFIED  @R7A
         AIF   (K'&KEYDFLT NE 2).BADDKEY MUST BE 2 HEX DIGITS      @R9C
&D0      SETB  1                 SET DEFAULT KEY BIT ON
         AGO   .CHKDFLT          CHECK THE KEY DEFAULT DIGITS      @R8A
.*---------------------------------------------------------------* @R7A
.*  WHEN KEYDFLT IS SPECIFIED WITH CONVERT=CHAR, INTEGER, HEX,   * @R7A
.*  OR REFERRAL, AN MNOTE IS GIVEN.                              * @H2C
.*---------------------------------------------------------------* @R7A
.DEFNOTE ANOP                                                      @R7A
         MNOTE 4,'KEYDFLT NOT REQUIRED WITH CONVERT=&CONVERT'      @R7A
&DKY     SETC  '00'              SET UP DC VARIABLE                @R7A
         AGO   .CONDEF           CONTINUE PROCESSING               @R7A
.*---------------------------------------------------------------*
.*     CHKDYN ROUTINE CHECKS THE 4 HEX DIGITS TO MAKE SURE THEY  *
.*     ARE 0-9 OR A-F VALID HEX DIGITS.                          *
.*---------------------------------------------------------------*
.CHKDYN  ANOP
         AIF   ('&KEY'(1,1) GE '0' AND '&KEY'(1,1) LE '9' OR           +
               '&KEY'(1,1)  GE 'A' AND '&KEY'(1,1) LE 'F').SECOND
         AGO   .BADKEY
.SECOND  AIF   ('&KEY'(2,1) GE '0' AND '&KEY'(2,1) LE '9' OR           +
               '&KEY'(2,1)  GE 'A' AND '&KEY'(2,1) LE 'F').THIRD
         AGO   .BADKEY
.THIRD   AIF   ('&KEY'(3,1) GE '0' AND '&KEY'(3,1) LE '9' OR           +
               '&KEY'(3,1)  GE 'A' AND '&KEY'(3,1) LE 'F').FOURTH
         AGO   .BADKEY
.FOURTH  AIF   ('&KEY'(4,1) GE '0' AND '&KEY'(4,1) LE '9' OR           +
               '&KEY'(4,1)  GE 'A' AND '&KEY'(4,1) LE 'F').DODFLT  @R8C
.*---------------------------------------------------------------*
.*     BADKEY ROUTINE SAYS THAT AT LEAST ONE OF THE 4 DIGITS IS  *
.*     INVALID OR AN INCORRECT AMOUNT OF CHARACTERS SPECIFIED.   *
.*---------------------------------------------------------------*
.BADKEY  ANOP
         MNOTE 12,'KEY=&KEY INVALID. MUST BE 4 HEX DIGITS.'
&STOP    SETB  1                                                   @R1A
&DKEY    SETC  '0000'            ZERO OUT BAD DEFINITION OF KEY
         AGO   .DODFLT                                             @R8A
.*---------------------------------------------------------------* @R8A
.*   CHKDFLT ROUTINE CHECKS THE 2 HEX DIGITS OF KEY DEFAULT      * @R8A
.*   TO MAKE SURE THEY ARE 0-9 OR A-F VALID HEX DIGITS.          * @R8A
.*---------------------------------------------------------------* @R8A
.CHKDFLT ANOP                                                      @R8A
         AIF   ('&DKY'(1,1) GE '0' AND '&DKY'(1,1) LE '9' OR           +
               '&DKY'(1,1)  GE 'A' AND '&DKY'(1,1) LE 'F').DFLTTWO @R8A
         AGO   .BADDKEY                                            @R8A
.DFLTTWO AIF   ('&DKY'(2,1) GE '0' AND '&DKY'(2,1) LE '9' OR           +
               '&DKY'(2,1)  GE 'A' AND '&DKY'(2,1) LE 'F').CONDEF  @R8A
.*---------------------------------------------------------------* @R8A
.*       BAD DEFAULT KEY ROUTINE SAYS THAT AT LEAST ONE OF THE 2 * @R8A
.*       DIGITS IS INVALID OR AN INCORRECT AMOUNT OF CHARACTERS  * @R8A
.*       SPECIFIED.                                              * @R8A
.*---------------------------------------------------------------* @R8A
.BADDKEY ANOP                                                      @R9C
         MNOTE 12,'KEYDFLT=&KEYDFLT INVALID.  MUST BE TWO HEX DIGITS.'
&STOP    SETB  1                                                   @R1A
&DKY     SETC  '00'              ZERO OUT BAD DEFAULT KEY
&D0      SETB  0                 RESET DEFAULT KEY BIT             @R8A
.*---------------------------------------------------------------*
.*  WHEN KEYDFLT IS SPECIFIED IT IS EXPECTED THAT KEY IS ALSO    *
.*---------------------------------------------------------------*
.SETDEF  ANOP                    KEY=BLANK AND KEYDFLT=NON-BLANK
         AIF   (&F0 EQ 0).NOTEDEF   MNOTE IF CHOICE NOT SPECIFIED  @H1C
         MNOTE 12,'KEY NOT SPECIFIED. DEFAULT KEY IGNORED'
&STOP    SETB  1                                                   @R1A
         AGO   .SKPDYN                                             @R7A
.*---------------------------------------------------------------* @R7A
.*  WHEN KEYDFLT IS SPECIFIED WITH CONVERT=CHAR, INTEGER, HEX,   * @R7A
.*  OR REFERRAL AN MNOTE IS GIVEN.                               * @H2C
.*---------------------------------------------------------------* @R7A
.NOTEDEF ANOP                                                      @R7A
         MNOTE 4,'KEYDFLT NOT REQUIRED WITH CONVERT=&CONVERT'      @R7A
         AGO   .SKPDYN                                             @R7A
.*---------------------------------------------------------------*
.*   CHECK TO SEE THE CORRECT AMOUNT OF CHARACTERS ARE SPECIFIED *
.*---------------------------------------------------------------*
.TESTDYN ANOP                    KEY=NON-BLANK AND KEYDFLT=BLANK
&DKY     SETC  '00'              ZERO OUT DEFAULT KEY; NOT USED    @RAA
         AIF   (K'&KEY NE 4).BADKEY      MUST BE 4 HEX DIGITS
&DKEY    SETC  '&KEY'            SET UP DC VARIABLE FOR POSSIBLE USE
         AGO   .CHKDYN           CHECK VALUE OF KEY
.SKPDYN  ANOP                    KEY=BLANK AND KEYDFLT=BLANK OR ERROR
&DKEY    SETC  '0000'            ZERO OUT KEY
&DKY     SETC  '00'              ZERO OUT DEFAULT KEY
.CONDEF  ANOP
         DC    XL2'&BLKID'       BLOCK ID                          @H1A
         DC    XL2'&DKEY'        KEY FOR THIS PARAMETER
         DC    XL1'&DKY'         DEFAULT VALUE FOR KEY
         DC    XL1'01'           VERSION NUMBER OF JDPARM SECTION
         DC    HL1'&MXLTH'       MAXIMUM LENGTH OF PARAMETER       @H1C
         DC    HL1'&MNLTH'       MINIMUM LENGTH OF PARAMETER       @H1A
         DC    HL1'&CLEN'        CONVERSION LENGTH
         DC    HL1'&BYTEOFF'     BYTE OFFSET INTO SCHEDULER WORK BLOCK
******************************************************************
*        CONVERSION BIT FLAG BYTE-                               *
*        THE BITS ARE: BIT   DESCRIPTION                         *
*                       0-   IF ON-CHOICE CONVERSION             *
*                       1-   IF ON-CHARACTER CONVERSION          *
*                       2-   IF ON-INTEGER CONVERSION            *
*                       3-   IF ON-HEX CONVERSION                * @H1A
*                       4-   IF ON-REFERRAL CONVERSION           * @H2C
******************************************************************
         DC    BL1'&F0&F1&F2&F3&F4.000'                            @H1C
******************************************************************
*        SUBLIST BIT FLAG BYTE-                                  *
*        THE BITS ARE: BIT   DESCRIPTION                         *
*                       0-   IF ON-THIS IS A SUBLIST             *
*                       1-   IF ON-THIS IS 1ST ELEMENT OF SUBLIST*
*                       2-   IF ON-THIS IS A LIST ITEM PARAMETER * @H3A
*                       3-   IF ON-THIS IS A LIST ITEM SUBLIST   * @H3A
******************************************************************
         DC    BL1'&S0&S1&L2&L3.0000'                              @H3A
******************************************************************
*        DEFAULT BIT FLAG BYTE-                                  *
*        THE BIT IS:   BIT   DESCRIPTION                         *
*                       0-   IF ON-DYNAMIC DEFAULT KEY           *
******************************************************************
         DC    BL1'&D0.0000000'  DEFAULT FLAG BYTE
****************************************************************** @H2A
*        FSTCHAR AND OTHCHAR BIT FLAG BYTES-                     * @H2A
*        THE BIT IS:   BIT   DESCRIPTION                         * @H2A
*                       0-   IF ON-ALL CHARACTERS ALLOWED        * @H2A
*                       1-   IF ON-ALPHABETIC CHARACTERS ALLOWED * @H2A
*                       2-   IF ON-NUMERIC CHARACTERS ALLOWED    * @H2A
*                       3-   IF ON-NATIONALS (@,#,$) ALLOWED     * @H2A
*                       4-   IF ON-SPECIAL CHARACTERS ALLOWED    * @H3A
****************************************************************** @H2A
         DC    BL1'&C0&C1&C2&C3&C4.000' FSTCHAR FLAG BYTE          @H3A
         DC    BL1'&O0&O1&O2&O3&O4.000' OTHCHAR FLAG BYTE          @H3A
         DC    XL1'00'           RESERVED BYTE                     @H2C
.*---------------------------------------------------------------*
.*       CHECK TO SEE WHAT BIT IS ON.                            *
.*---------------------------------------------------------------*
         AIF   (&F0 EQ 1).CHCDATA    CHOICE DATA
         AIF   (&F1 EQ 1).CHRDATA    CHARACTER DATA                @H2C
         AIF   (&F2 EQ 1).NUMDATA    INTEGER DATA
         AIF   (&F3 EQ 1).HEXDATA    HEX DATA                      @H1A
         AGO   .ENDLTH               MUST BE REFERRAL DATA         @H2C
.*---------------------------------------------------------------* @H1A
.*       SETUP AREA OF CHARACTER DATA.                           * @H2C
.*---------------------------------------------------------------* @H1A
.CHRDATA DC    HL1'&LVNUM'       MAXIMUM NUMBER OF LEVELS          @H2C
         DC    HL1'&LVLEN'       MAXIMUM LENGTH OF EACH LEVEL      @H1A
         DC    XL2'0000'         RESERVED                          @H1A
         AIF   (&C4 EQ 0).NOFSP  NO FIRST SPECIAL CHARACTERS?      @H3A
         DC    FL1'&#FSPEC'      NUMBER FIRST SPECIAL CHARACTERS   @H3A
         DC    CL&#FSPEC.'&FALL'        LIST OF FIRST SPECIAL CHAR @H3A
         AIF   (&#FSPEC EQ 16).OTHER                               @H3A
         DC    XL&FPAD.'00'                                        @H3A
         AGO   .OTHER                                              @H3A
.NOFSP   ANOP                                                      @H3A
         DC    FL1'0'            NUMBER FIRST SPECIAL CHARACTERS   @H3A
         DC    XL16'00'          LIST OF FIRST SPECIAL CHARACTERS  @H3A
.OTHER   ANOP                                                      @H3A
         AIF   (&O4 EQ 0).NOOSP  NO OTHER SPECIAL CHARACTERS?      @H3A
         DC    FL1'&#OSPEC'      NUMBER OTHER SPECIAL CHARACTERS   @H3A
         DC    CL&#OSPEC.'&OALL'        LIST OF OTHER SPECIAL CHAR @H3A
         AIF   (&#OSPEC EQ 16).RESERVE                             @H3A
         DC    XL&OPAD.'00'                                        @H3A
         AGO   .RESERVE                                            @H3A
.NOOSP   ANOP                                                      @H3A
         DC    FL1'0'            NUMBER OTHER SPECIAL CHARACTERS   @H3A
         DC    XL16'00'          LIST OF OTHER SPECIAL CHARACTERS  @H3A
.RESERVE ANOP                                                      @H3A
         DC    XL2'00'           RESERVED                          @H3A
         AGO   .ENDLTH                                             @H1A
.*---------------------------------------------------------------*
.*       SETUP AREA OF INTEGER AND HEX DATA.                     *
.*---------------------------------------------------------------*
.HEXDATA DC    XL4'&HHGH'        HIGH RANGE OF HEX DATA            @H1A
         DC    XL4'&HLOW'        LOW RANGE OF HEX DATA             @H1A
         AGO   .ENDLTH                                             @H1A
.NUMDATA DC    F'&PHGH'          HIGH RANGE OF INTEGER DATA
         DC    F'&PLOW'          LOW RANGE OF INTEGER DATA
         AGO   .ENDLTH
.*---------------------------------------------------------------* @R6A
.* CHOICE SYMBOL SCANNING COMES HERE TO CHECK FOR ANY ERROR BITS.* @R6A
.* IF ANY ARE ON, THEN THE APPROPRIATE MNOTE IS ISSUED.          * @R6A
.*---------------------------------------------------------------* @R6A
.JDSCAN  ANOP                                                      @R6A
         AIF   (&$ERRBAD EQ 1).BADCHC    INVALID CHARACTERS        @R6A
         AIF   (&$ERRBIG EQ 1).BIGCHC    GREATER THAN 8 CHARACTERS @R6A
.*---------------------------------------------------------------* @R6A
.*  THE SYMBOL FOR THE CHOICE SELECTED WAS SPECIFIED CORRECTLY.  * @R6A
.*  RETURN TO THE BRANCHED-FROM CHOICE PROCESSING.               * @R6A
.*---------------------------------------------------------------* @R6A
.SCANOK  ANOP                                                      @R6A
         AIF   (&CTR EQ 1).SCAN1         CHECK-                    @R6A
         AIF   (&CTR EQ 2).SCAN2             -EACH-                @R6A
         AIF   (&CTR EQ 3).SCAN3                 -CHOICE           @R6A
         AIF   (&CTR EQ 4).SCAN4                                   @R6A
         AIF   (&CTR EQ 5).SCAN5                                   @R6A
         AIF   (&CTR EQ 6).SCAN6                                   @R6A
         AIF   (&CTR EQ 7).SCAN7                                   @R6A
         AGO   .SCAN8                                              @R6A
.*---------------------------------------------------------------* @R6A
.*  THE SYMBOL FOR THE CHOICE SELECTED HAS INVALID CHARACTERS.   * @R6A
.*---------------------------------------------------------------* @R6A
.BADCHC ANOP                                                       @R6A
&ERRSW   SETB  1                 ERROR SWITCH SET FOR LATER USE    @R6A
         MNOTE 12,'&CHOICE# SPECIFIES INVALID CHARACTERS'          @R6A
&STOP    SETB  1                                                   @R1A
         AGO   .SCANBAD                                            @R6A
.*---------------------------------------------------------------* @R6A
.*  THE SYMBOL FOR THE CHOICE SELECTED EXCEEDS 8 CHARACTERS.     * @R6A
.*---------------------------------------------------------------* @R6A
.BIGCHC  ANOP                                                      @R6A
         MNOTE 12,'&CHOICE# SPECIFICATION EXCEEDS 8 CHARACTERS'    @R6M
&ERRSW   SETB  1                 ERROR SWITCH SET FOR LATER USE    @R6A
&STOP    SETB  1                                                   @R1A
         AGO   .SCANBAD                                            @R6A
.*---------------------------------------------------------------*
.*       SETUP AREA OF CHOICE DATA.                              *
.*---------------------------------------------------------------*
.CHCDATA ANOP
         AIF   ('&CH1' EQ '0').XLCH1
         DC    CL8'&CH1'         CHARACTER STRING FOR CHOICE ONE
         DC    XL1'&VAL1'        HEXADECIMAL DIGIT FOR VALUE ONE
         AGO   .CKCH2
.XLCH1   ANOP
         DC    XL8'00'           CHOICE ONE NOT USED
         DC    XL1'00'           VALUE ONE NOT USED
.CKCH2   AIF   ('&CH2' EQ '0').XLCH2
         DC    CL8'&CH2'         CHARACTER STRING FOR CHOICE TWO
         DC    XL1'&VAL2'        HEXADECIMAL DIGIT FOR VALUE TWO
         AGO   .CKCH3
.XLCH2   ANOP
         DC    XL8'00'           CHOICE TWO NOT USED
         DC    XL1'00'           VALUE TWO NOT USED
.CKCH3   AIF   ('&CH3' EQ '0').XLCH3
         DC    CL8'&CH3'         CHARACTER STRING FOR CHOICE THREE
         DC    XL1'&VAL3'        HEXADECIMAL DIGIT FOR VALUE THREE
         AGO   .CKCH4
.XLCH3   ANOP
         DC    XL8'00'           CHOICE THREE NOT USED
         DC    XL1'00'           VALUE THREE NOT USED
.CKCH4   AIF   ('&CH4' EQ '0').XLCH4
         DC    CL8'&CH4'         CHARACTER STRING FOR CHOICE FOUR
         DC    XL1'&VAL4'        HEXADECIMAL DIGIT FOR VALUE FOUR
         AGO   .CKCH5
.XLCH4   ANOP
         DC    XL8'00'           CHOICE FOUR NOT USED
         DC    XL1'00'           VALUE FOUR NOT USED
.CKCH5   AIF   ('&CH5' EQ '0').XLCH5
         DC    CL8'&CH5'         CHARACTER STRING FOR CHOICE FIVE
         DC    XL1'&VAL5'        HEXADECIMAL DIGIT FOR VALUE FIVE
         AGO   .CKCH6
.XLCH5   ANOP
         DC    XL8'00'           CHOICE FIVE NOT USED
         DC    XL1'00'           VALUE FIVE NOT USED
.CKCH6   AIF   ('&CH6' EQ '0').XLCH6
         DC    CL8'&CH6'         CHARACTER STRING FOR CHOICE SIX
         DC    XL1'&VAL6'        HEXADECIMAL DIGIT FOR VALUE SIX
         AGO   .CKCH7
.XLCH6   ANOP
         DC    XL8'00'           CHOICE SIX NOT USED
         DC    XL1'00'           VALUE SIX NOT USED
.CKCH7   AIF   ('&CH7' EQ '0').XLCH7
         DC    CL8'&CH7'         CHARACTER STRING FOR CHOICE SEVEN
         DC    XL1'&VAL7'        HEXADECIMAL DIGIT FOR VALUE SEVEN
         AGO   .CKCH8
.XLCH7   ANOP
         DC    XL8'00'           CHOICE SEVEN NOT USED
         DC    XL1'00'           VALUE SEVEN NOT USED
.CKCH8   AIF   ('&CH8' EQ '0').XLCH8
         DC    CL8'&CH8'         CHARACTER STRING FOR CHOICE EIGHT
         DC    XL1'&VAL8'        HEXADECIMAL DIGIT FOR VALUE EIGHT
         AGO   .ENDLTH
.XLCH8   ANOP
         DC    XL8'00'           CHOICE EIGHT NOT USED
         DC    XL1'00'           VALUE EIGHT NOT USED
.*---------------------------------------------------------------*
.*       END PARAMETER DEFINITIONS                               *
.*---------------------------------------------------------------*
.ENDLTH  ANOP
E&LEN    EQU   *                 END JDPARM LENGTH DEFINITION
.*---------------------------------------------------------------*
.*       CHECK TO SEE IF REPEAT OPTION WAS PREVIOUSLY SPECIFIED  *
.*---------------------------------------------------------------*
         AIF   (&REPSW EQ 1).REPON
.*---------------------------------------------------------------*
.*       REPEAT SPECIFIED, CHECK RANGE, MUST BE 0 TO 127.        *
.*---------------------------------------------------------------*
         AIF   (&REPEAT GE 0 AND &REPEAT LE 127).REPOK
.*---------------------------------------------------------------*
.*       REPEAT HAS INVALID VALUE-> MNOTE IT.                    *
.*---------------------------------------------------------------*
         MNOTE 12,'REPEAT=&REPEAT INVALID.  MUST BE 0 TO 127 DECIMAL.'
         AGO   .NOREP
.*---------------------------------------------------------------*
.*       REPEAT OPTION OK                                        *
.*---------------------------------------------------------------*
.REPOK   ANOP
&REPSW   SETB  1                 SET REPEAT SWITCH ON
&COUNT   SETA  &REPEAT           START COUNTER VALUE FROM REPEAT OPTION
.REPON   ANOP
.*---------------------------------------------------------------*
.*       CHECK TO SEE IF THE COUNTER RAN OUT (EQUAL ZERO)        *
.*       OR IF AN ERROR MNOTE HAS BEEN ISSUED--STOP PROCESSING.  * @H2A
.*---------------------------------------------------------------*
         AIF   (&COUNT EQ 0 OR &STOP EQ 1).NOREP                   @R1C
&COUNT   SETA  &COUNT-1          DECREMENT COUNTER FOR NEXT REPEAT
.*---------------------------------------------------------------* @H2A
.*       RESET FSTCHAR AND OTHCHAR BITS FOR REPEAT.              * @H2A
.*---------------------------------------------------------------* @H2A
&C0      SETB  0                                                   @H2A
&C1      SETB  0                                                   @H2A
&C2      SETB  0                                                   @H2A
&C3      SETB  0                                                   @H2A
&O0      SETB  0                                                   @H2A
&O1      SETB  0                                                   @H2A
&O2      SETB  0                                                   @H2A
&O3      SETB  0                                                   @H2A
         AGO   .REPEAT           GO REPEAT MACRO
.*---------------------------------------------------------------*
.*       REPEAT OPTION NOT USED OR COUNTER RAN OUT (EQUAL ZERO)  *
.*---------------------------------------------------------------*
.NOREP   ANOP
&REPSW   SETB  0                 RESET REPEAT SWITCH
         SPACE
         MEND
./ ADD NAME=JDSCAN
         MACRO
         JDSCAN &PARM
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = IEFJDSCN                                        @H1C
.*                                                                    *
.*   DESCRIPTIVE NAME = SYNTAX SYMBOL CHECKER                         *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982                    *
.*               LICENSED MATERIAL - PROGRAM                          *
.*               PROPERTY OF IBM, REFER TO COPYRIGHT                  *
.*               INSTRUCTIONS FORM G120-2083                          *
.*                                                                    *
.*                                                                    *
.*   FUNCTION = THIS MACRO SCANS A PASSED VALUE  FOR VALIDATION       *
.*              OF UP TO 8 CHARACTERS.  FIRST, THE PASSED VALUE       *
.*              IS CHECKED TO MAKE SURE IT IS NOT BLANKS. NEXT,       *
.*              THE VALUE IS CHECKED TO INSURE THAT IT HAS ONLY       *
.*              1 TO 8  CHARACTERS.  THE  FIRST  CHARACTER MUST       *
.*              BE ALPHABETIC OR NATIONAL; I.E. @, #, OR $. THE       *
.*              NEXT SEVEN  CHARACTERS MUST  BE ALPHANUMERIC OR       *
.*              NATIONALS.  ALPHANUMERIC MEANS  THE LETTERS A-Z       *
.*              AND  NUMBERS 0-9.  IF ANY OF  THESE TESTS FAIL,       *
.*              THEN AN  ERROR BIT  IS SET TO A ONE.                  *
.*                                                                    *
.*              THIS MACRO MAY BE USED IN ONE OF TWO WAYS:            *
.*                                                                    *
.*              1.) THIS MACRO  IS USED AS  AN INNER MACRO AND        *
.*              THE  OUTER  MACRO   MUST  PASS  A  ONE-FOR-ONE        *
.*              PARAMETER VALUE WITH THE SAME NAME.                   *
.*     EXAMPLE:         MACRO                                         *
.*                      JDSCAN &VALUE    (PROTOTYPE STATEMENT)        *
.*                      ...                                           *
.*                      MEND                                          *
.*                      MACRO                                         *
.*                      OUTER  &VALUE    (PROTOTYPE STATEMENT)        *
.*                      ...                                           *
.*                      JDSCAN &VALUE                                 *
.*                      ...                                           *
.*                      MEND                                          *
.*                TEST  CSECT                                         *
.*                      OUTER  TESTONE   (WILL BE THE VALUE TESTED)   *
.*                      END                                           *
.*                                                                    *
.*              2.) THIS MACRO  IS USED AS  AN INNER MACRO AND        *
.*              THE   VALUE  IS   PASSED  VIA  A   SETC  MACRO        *
.*              STATEMENT.                                            *
.*                                                                    *
.*     EXAMPLE:         MACRO                                         *
.*                      JDSCAN &VALUE    (PROTOTYPE STATEMENT)        *
.*                      ...                                           *
.*                      MEND                                          *
.*                      MACRO                                         *
.*                      OUTER  &VALUE   (OR &VALUE= KEYWORD)          *
.*                      ...                                           *
.*                &TEMP SETC   '&VALUE'  MUST BE IN APOSTROPHES       *
.*                      JDSCAN &TEMP = NAME OF LEFT SIDE OF SETC      *
.*                      ...                                           *
.*                      MEND                                          *
.*                TEST2 CSECT                                         *
.*                      OUTER  TESTTWO   (WILL BE THE VALUE TESTED)   *
.*                      END                                           *
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = NONE                                           *
.*                                                                    *
.*      RESTRICTIONS = THIS MACRO WILL ONLY WORK IF IT IS USED        *
.*                     AS AN INNER MACRO.                             *
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING IS PASSED AS A PARAMETER TO JDSCAN       *
.*                                                                    *
.*             KEYWORD           DESCRIPTION                          *
.*                                                                    *
.*             - &PARM           USED AS THE PASSED SYMBOL TO BE      *
.*                               SCANNED.                             *
.*                                                                    *
.*     OUTPUT = A BIT TO INDICATE WHETHER AN ERROR WAS DETECTED       *
.*              OR NOT:                                               *
.*                                                                    *
.*             ERROR BIT        DESCRIPTION--(IF BIT IS TURNED ON)    *
.*             &$ERRBIT         MASTER BIT TO FLAG ERROR CONDITION    *
.*             &$ERRBLK         INDICATES A BLANK VALUE WAS PASSED    *
.*             &$ERRBIG         INDICATES TOO MANY CHARACTERS         *
.*             &$ERRBAD         INDICATES AN ILLEGAL CHARACTER FOUND  *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION - NO ERRORS DETECTED                                   *
.*   OUTPUT    - THE ERROR GLOBAL BIT WILL NOT BE SET.                *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION - SYNTAX ERROR, A BLANK VALUE, OR TOO MANY             *
.*               CHARACTERS WERE PASSED.                              *
.*   OUTPUT    - MASTER ERROR BIT AND APPROPRIATE ERROR BIT           *
.*               WILL BE SET.                                         *
.*                                                                    *
.*   EXTERNAL REFERENCES = N/A                                        *
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   CHANGE ACTIVITY = H0,H1                                       @H1C
.*    $H0= EXTJCL JBB1328 810508 PDC5: SUPPORT FOR EXTENDED JCL       *
.*    $H1= EXTJCL JBB1328 811202 PDC5: SUPPORT FOR EXTENDED JCL    @H1A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* CHANGED PROCESSING TO CATCH INVALID CHARACTERS WITHIN THE COLLATING
.*    SEQUENCE: I.E. CHARACTERS BETWEEN I AND J, R AND S, Z AND 0. @H1A
.**********************************************************************
.*       LOCAL AND GLOBAL VARIABLES DEFINED FOR MACRO.                *
.**********************************************************************
         LCLA  &NUM               VARIABLE TO HOLD NUMBER OF CHARACTERS
         LCLA  &N                   KEEPS TRACK OF  DIGIT          @H1A
         GBLB  &$ERRBIT             MASTER BIT TO FLAG ERROR CONDITION
         GBLB  &$ERRBLK             BIT FLAG BLANK VALUE CONDITION
         GBLB  &$ERRBIG             BIT FLAG TOO MANY CHARACTERS
         GBLB  &$ERRBAD             BIT FLAG ILLEGAL CHARACTER FOUND
.**********************************************************************
.*       RESET ERROR BITS FOR EACH INVOCATION.                        *
.**********************************************************************
&$ERRBIT SETB  0
&$ERRBLK SETB  0
&$ERRBIG SETB  0
&$ERRBAD SETB  0
.**********************************************************************
.*       DETERMINE IF ANY VALUE WAS PASSED AT ALL.                    *
.**********************************************************************
         AIF   ('&PARM' NE '').TESTAMT  NOT EQUAL TO BLANKS?
&$ERRBIT SETB  1        BLANKS--    SET MASTER ERROR BIT
&$ERRBLK SETB  1              --    SET ERROR BIT TO INDICATE BLANKS
         AGO   .OUT                 GET OUT OF MACRO
.**********************************************************************
.*       DETERMINE THE NUMBER OF CHARACTERS THE PASSED VALUE HAS.     *
.*       MUST BE FROM 1 TO 8.                                         *
.**********************************************************************
.TESTAMT ANOP
         AIF   (K'&PARM GE 1 AND K'&PARM LE 8).GETNUM
&$ERRBIT SETB  1        TOO MANY--  SET MASTER ERROR BIT
&$ERRBIG SETB  1                --  SET ERROR BIT TOO MANY CHARACTERS
         AGO   .OUT                 GET OUT OF MACRO
.**********************************************************************
.*       VALUE IS NOT BLANKS AND IS ALSO FROM 1 TO 8 CHARACTERS IN    *
.*       LENGTH. GET THE NUMBER TO DETERMINE HOW MANY SHOULD BE       *
.*       CHECKED.                                                     *
.**********************************************************************
.GETNUM  ANOP
&NUM     SETA  K'&PARM             GET THE NUMBER OF CHARACTERS PASSED
&N       SETA  2                   SET COUNTER TO SECOND DIGIT     @H1A
.***************************************************************** @H1A
.*  EXPLICITLY CHECK FIRST CHARACTER OF PARM VALUE TO INSURE     * @H1A
.*  THAT IT IS NOT A DECIMAL NUMBER OR AN INVALID CHARACTER.     * @H1A
.***************************************************************** @H1A
         AIF   ('&PARM'(1,1) GE 'A' AND '&PARM'(1,1) LE 'I').CONT  @H1A
         AIF   ('&PARM'(1,1) GE 'J' AND '&PARM'(1,1) LE 'R').CONT  @H1A
         AIF   ('&PARM'(1,1) GE 'S' AND '&PARM'(1,1) LE 'Z' OR         +
               '&PARM'(1,1)  EQ '$' OR  '&PARM'(1,1) EQ '@' OR         +
               '&PARM'(1,1)  EQ '#').CONT                          @H1A
         AGO   .SETBIT             GO SET ERROR BIT                @H1A
.CONT    AIF   (&NUM EQ 1).OUT     IF ONLY ONE CHARACTER, GET OUT  @H1A
.***************************************************************** @H1A
.*  CHECK THE REMAINING CHARACTERS FOR INVALID CHARACTERS.       * @H1A
.***************************************************************** @H1A
.LOOP    ANOP                                                      @H1A
         AIF   ('&PARM'(&N,1) GE 'A' AND '&PARM'(&N,1) LE 'I').CK  @H1A
         AIF   ('&PARM'(&N,1) GE 'J' AND '&PARM'(&N,1) LE 'R').CK  @H1A
         AIF   ('&PARM'(&N,1) GE 'S' AND '&PARM'(&N,1) LE 'Z').CK  @H1A
         AIF   ('&PARM'(&N,1) GE '0' AND '&PARM'(&N,1) LE '9'  OR      +
               '&PARM'(&N,1)  EQ '$' OR  '&PARM'(&N,1) EQ '@'  OR      +
               '&PARM'(&N,1)  EQ '#').CK                           @H1A
         AGO   .SETBIT               GO SET ERROR BIT              @H1A
.CK      ANOP                                                      @H1A
&N       SETA  &N+1                  SET COUNTER TO NEXT DIGIT     @H1A
         AIF   (&N GT &NUM).OUT      FINISHED ALL DIGITS?          @H1A
         AGO   .LOOP                 NO--DO NEXT ONE               @H1A
.**********************************************************************
.*       ERROR FOUND IN ONE OF THE CHARACTER CHECKING ROUTINES;       *
.*       SET THE ERROR BIT.                                           *
.**********************************************************************
.SETBIT  ANOP                       FOUND ERROR - SET ERROR BIT
&$ERRBIT SETB 1                     SET MASTER ERROR BIT
&$ERRBAD SETB 1                     BIT FLAG ILLEGAL CHARACTER FOUND
.OUT     ANOP
         MEND
./ ADD NAME=JDSUB
         MACRO
&NAME    JDSUB &LIST=NO                                            @H1C
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = JDSUB                                              *
.*                                                                    *
.*   DESCRIPTIVE NAME = JCL SUBLIST DEFINITION                        *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,1983,              *
.*               LICENSED MATERIAL - PROGRAM,                         *
.*               PROPERTY OF IBM, REFER TO COPYRIGHT                  *
.*               INSTRUCTIONS FORM G120-2083                          *
.*                                                                    *
.*   STATUS = OS/VS2 JBB1329                                          *
.*                                                                    *
.*   FUNCTION = JDSUB MACRO FLAGS THE JDPARM MACROS THAT FOLLOW       *
.*              AS DESCRIPTIONS  OF SUBLIST  ELEMENTS UP TO THE       *
.*              NEXT  ENDSUB MACRO.  THE JDPARM  MACRO  DEFINES       *
.*              SUBLISTS  OF A KEYWORD SUBPARAMETER.  THE FIRST       *
.*              JDPARM MACRO  AFTER JDSUB  WILL SET A  BIT THAT       *
.*              SAYS IT IS THE FIRST ELEMENT OF A SUBLIST.  ALL       *
.*              OTHER  JDPARM  MACROS WILL  SET A BIT THAT SAYS       *
.*              THAT  IT IS A MEMBER  OF A SUBLIST, BUT NOT THE       *
.*              FIRST.  IF THE  KEYWORD  LIST= IS  SPECIFIED AS    @H1A
.*              Y OR YES, THEN THE  SUBLIST PARAMETERS  DEFINED    @H1A
.*              BY THE JDPARM MACRO WILL BE LIST ITEMS.            @H1A
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = NONE                                           *
.*                                                                    *
.*      RESTRICTIONS = 1) THE JDSUB MACRO CAN ONLY FOLLOW JDKEY,      *
.*                     JDPARM, OR THE ENDSUB MACROS.                  *
.*                     2) WHEN THE LIST ITEM BIT IS ON (SET ON     @H1A
.*                     IN THE JDKEY MACRO WITH THE LIST= KEYWORD)  @H1A
.*                     THE INVOCATION OF JDSUB IS INVALID FOR      @H1A
.*                     THAT KEYWORD.                               @H1A
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO JDPARM *
.*                                                                    *
.*           PARAMETER          DESCRIPTION                           *
.*                                                                    *
.*           - &NAME            ONLY USED AS A LABEL ON THE EXPANSION.*
.*           - &LIST=           JDPARM SUBLIST PARAMETERS ARE LIST @H1A
.*                              ITEMS IF LIST=YES IS SPECIFIED.    @H1A
.*                                                                    *
.*     OUTPUT = THERE IS NO OUTPUT FOR THIS MACRO.                    *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE JDSUB MACRO.              *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN MACRO IS NOT INVOKED IN THE CORRECT       *
.*              ORDER, IS INVOKED IN AN ITEM LIST SPECIFIED BY     @H1A
.*              THE JDKEY MACRO, OR THE LIST KEYWORD IS            @H1A
.*              INCORRECTLY SPECIFIED.                             @H1A
.*              (SEE RESTRICTIONS AND MESSAGES).                      *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-TERMINATING ERROR DETECTED BY THE JDSUB MACRO.         *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 16                    *
.*              ISSUED WHEN JDTMAC MACRO IS NOT FIRST MACRO TO BE     *
.*              INVOKED TO START THE JDTS.                            *
.*             (SEE RESTRICTIONS AND MESSAGES).                       *
.*                                                                    *
.*   EXTERNAL REFERENCES = N/A                                        *
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   ERROR MNOTES =                                                   *
.*                                                                    *
.*    MNOTE 12,'JDSUB MACRO SPECIFIED OUT OF ORDER'                   *
.*    MNOTE 12,'JDSUB MACRO MAY NOT BE SPECIFIED IN AN ITEM LIST'  @H1A
.*    MNOTE 12,'LIST=&LIST INVALID. MUST BE YES, NO, Y, OR N'      @H1A
.*                                                                    *
.*    MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'*
.*                                                                    *
.*   CHANGE ACTIVITY = H0,R1,H1                                    @H1C
.*  $H0= EXTJCL  JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL        *
.*  $R1= PPP0045 JBB1328 811202 PDC5: MISSING EXPECTED MNOTE       @R1A
.*  $H1= EXTJCL  JBB1329 820611 PDC5: SUPPORT FOR EXTENDED JCL     @H1A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A CHECKING FOR JDPARM AND JDSUB ACTIVE BITS ON SIMULTANEOUSLY   @R1A
.* A CHECKING FOR JDPARM GLOBAL LIST ITEM BIT (SET IN JDKEY)       @H1A
.* A KEYWORD LIST=YES OR NO TO SET A GLOBAL BIT TO PASS TO JDPARM
.*   TO INDICATE THAT THE SUBLIST PARAMETERS ARE LIST ITEMS.       @H1A
.*---------------------------------------------------------------*
.*   GLOBALS THAT MAY BE ACTIVE OR BE MADE ACTIVE IN THIS MACRO, *
.*   RESPECTIVELY: JDTMAC, JDVERB, JDKEY, JDPARM, JDSUB, ENDSUB, *
.*   AND ENDJDT.                                                 *
.*---------------------------------------------------------------*
         GBLB  &JACT,&VACT,&KACT,&PACT,&SPACT,&EPACT,&EJACT
.*---------------------------------------------------------------* @H1A
.*   &L2 - GLOBAL BIT INITIALLY SET IN JDKEY-LIST ITEMS.         * @H1A
.*   &L3 - GLOBAL BIT SET IN THIS MACRO TO PASS TO JDPARM.       * @H1A
.*         INDICATES SUBLIST ELEMENTS ARE A ITEM LIST.           * @H1A
.*---------------------------------------------------------------* @H1A
         GBLB  &L2,&L3             INDICATES LIST ITEMS            @H1A
.*---------------------------------------------------------------* @H1A
.*   CHECK TO SEE IF JDSUB MACRO IS SPECIFIED IN AN ITEM LIST.   * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   (&L2 EQ 0).ORDER    NOT SPECIFIED IN AN ITEM LIST?  @H1A
.*---------------------------------------------------------------* @H1A
.*   JDSUB SPECIFIED IN AN ITEM LIST-> MNOTE IT.                 * @H1A
.*---------------------------------------------------------------* @H1A
       MNOTE 12,'JDSUB MACRO MAY NOT BE SPECIFIED IN AN ITEM LIST' @H1A
         MEXIT
.*---------------------------------------------------------------*
.*   CHECK TO SEE IF JDSUB MACRO IS SPECIFIED IN THE RIGHT ORDER *
.*   ONLY AFTER JDKEY, JDPARM, OR ENDSUB IS VALID                *
.*---------------------------------------------------------------*
.ORDER   ANOP                                                      @H1A
         AIF   (&PACT EQ 1 AND &SPACT EQ 1).NOTEIT WITHIN SUBLIST  @R1A
         AIF   (&KACT EQ 1 OR &PACT EQ 1 OR &EPACT EQ 1).SETUP
.*---------------------------------------------------------------*
.*   IF NONE OF THE FOLLOWING BITS ARE ON THEN THIS MUST BE      *
.*   THE FIRST MACRO INVOKED IN THE JDT DEFINITIONS.             *
.*---------------------------------------------------------------*
         AIF   (&JACT EQ 0 AND &VACT EQ 0 AND &EJACT EQ 0 AND &SPACT   +
               EQ 0).NOJDT     NONE ON?  GO MNOTE IT.
.*---------------------------------------------------------------*
.*   JDSUB MACRO WAS SPECIFIED WITHIN AN ALREADY DEFINED SET OF  *
.*   SUBLISTS--ENDSUB HAS TO BE INVOKED PRIOR TO THE REUSE OF    *
.*   JDSUB MACRO-> MNOTE IT.                                     *
.*---------------------------------------------------------------*
.NOTEIT  ANOP                                                      @R1A
         MNOTE 12,'JDSUB MACRO SPECIFIED OUT OF ORDER'
         AGO   .RESET
.*---------------------------------------------------------------*
.*  JDTMAC MUST BE THE FIRST MACRO SPECIFIED-> MNOTE IT.         *
.*---------------------------------------------------------------*
.NOJDT   ANOP
       MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'
         MEXIT
.*---------------------------------------------------------------*
.*      RESET THE APPROPRIATE GLOBAL BIT                         *
.*---------------------------------------------------------------*
.RESET   ANOP
&JACT    SETB  0                 RESET JDTMAC GLOBAL BIT
&VACT    SETB  0                 RESET VERB GLOBAL BIT
&EJACT   SETB  0                 RESET END JDT GLOBAL BIT
.*---------------------------------------------------------------*
.*      RESET THE APPROPRIATE GLOBAL BIT - SET SUBLIST BIT.      *
.*---------------------------------------------------------------*
.SETUP   ANOP
&KACT    SETB  0                 RESET KEYWORD GLOBAL BIT
&PACT    SETB  0                 RESET PARAMETER GLOBAL BIT
&EPACT   SETB  0                 RESET END SUBLIST GLOBAL BIT
&SPACT   SETB  1                 SET SUBLIST GLOBAL BIT ON
.*---------------------------------------------------------------* @H1A
.*  CHECK TO SEE IF LIST WAS SPECIFIED. (DEFAULT IS NO)          * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   ('&LIST' EQ 'Y' OR '&LIST' EQ 'YES' OR '&LIST' EQ 'N' OR+
               '&LIST' EQ 'NO').L3                                 @H1A
.*---------------------------------------------------------------* @H1A
.*    LIST PARAMETER SPECIFIES AN INVALID PARAMETER-> MNOTE IT.  * @H1A
.*---------------------------------------------------------------* @H1A
         MNOTE 12,'LIST=&LIST INVALID. MUST BE YES, NO, Y, OR N'   @H1A
.L3      ANOP                                                      @H1A
&L3      SETB  ('&LIST' EQ 'Y' OR '&LIST' EQ 'YES')                @H1A
         SPACE
         MEND
./ ADD NAME=JDTMAC
         MACRO
&CSECT   JDTMAC
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = IEFJDMAC                                        @H1A
.*                                                                    *
.*   DESCRIPTIVE NAME = MACRO FOR JCL DEFINITION TABLE                *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982                    *
.*                LICENSED MATERIAL - PROGRAM                         *
.*                PROPERTY OF IBM, REFER TO COPYRIGHT                 *
.*                INSTRUCTIONS FORM G120-2083                         *
.*                                                                    *
.*   FUNCTION = 1.) ALLOWS THE  USER TO DEFINE  A CSECT  FOR A     @H2C
.*                  JCL DEFINITION TABLE (JDT).                    @H2C
.*              2.) SETS UP GLOBAL DEFINITIONS USED BY ALL THE     @H2C
.*                  OTHER MACROS.                                  @H2C
.*                 A.) EACH  MACRO  ALSO HAS  ITS  OWN  UNIQUE     @H2C
.*                     GLOBAL  BIT THAT  IS SET ON  WHEN IT IS     @H2C
.*                     INVOKED.  ONLY ONE IS EVER ON AT A TIME     @H2C
.*                     (EXCEPT FOR  THE CONDITION OF A SUBLIST     @H2C
.*                     DEFINITION WHEN TWO ARE ON).  WHEN THIS     @H2C
.*                     GLOBAL  BIT  IS  ON, IT  IS  DEFINED AS     @H2C
.*                     'ACTIVE' BY  EACH  MACRO.  ONLY CERTAIN     @H2C
.*                     ACTIVE  BITS  MAY BE  ON  PRIOR  TO THE     @H2C
.*                     INVOCATION OF EACH MACRO.                   @H2C
.*                 B.) THE TABLE THAT FOLLOWS  ILLUSTRATES THE     @H2C
.*                     ORDER THAT THESE MACROS MAY BE INVOKED.     @H2C
.*                                                                    *
.*   TO UNDERSTAND THE CHART, READ COLUMN DOWN THEN LINE ACROSS.      *
.*   FOR EXAMPLE: CAN JDKEY FOLLOW JDVERB? ANSWER=YES.                *
.*   (THE LINE ACROSS ASKS "IF THE ACTIVE GLOBAL BIT IS ON,           *
.*   CAN THIS MACRO FOLLOW IT?")                                      *
.*                                                                    *
.*      FOLLOW->                                                      *
.*   CAN                                                             *
.*       V    JDTMAC  JDVERB  JDKEY  JDPARM  JDSUB  ENDSUB  ENDJDT    *
.*   JDTMAC     NO      NO      NO     NO      NO     NO      NO      *
.*   JDVERB     YES     YES     NO     YES     NO     YES     NO   @H2C
.*   JDKEY      NO      YES     NO     YES     NO     YES     NO      *
.*   JDPARM     NO      NO      YES    YES     YES    YES     NO      *
.*   JDSUB      NO      NO      YES    YES(1)  NO     YES     NO      *
.*   ENDSUB     NO      NO      NO     YES(2)  NO     NO      NO      *
.*   ENDJDT     NO      YES     NO     YES     NO     YES     NO   @H2C
.*                                                                    *
.*   NOTES: (1)-ONLY CAN FOLLOW IF NOT DEFINED AS A SUBLIST ALREADY.  *
.*          (2)-ONLY CAN FOLLOW IF IT IS DEFINED AS A SUBLIST.        *
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = MODID MACRO FORMAT                             *
.*                                                                    *
.*      RESTRICTIONS = ONLY ONE JDTMAC MACRO ALLOWED PER ASSEMBLY,    *
.*                     AND IT MUST BE THE FIRST JDT MACRO SPECIFIED.  *
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO JDTMAC *
.*                                                                    *
.*             LABEL             DESCRIPTION                          *
.*                                                                    *
.*             - &CSECT          USED AS THE CSECT NAME FOR THE       *
.*                               JCL DEFINITION TABLE                 *
.*                                                                    *
.*     OUTPUT = THE JDT DEFINITION SECTION                            *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE JDTMAC MACRO.             *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN THE PARAMETER IS USED INCORRECTLY OR      *
.*              MACRO IS NOT INVOKED IN THE CORRECT ORDER (SEE        *
.*              RESTRICTIONS). THE MACRO WILL ATTEMPT TO SCAN FOR     *
.*              ADDITIONAL ERRORS. (SEE MESSAGES BELOW)               *
.*                                                                    *
.*   EXTERNAL REFERENCES = N/A                                        *
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   ERROR MNOTES =                                                   *
.*                                                                    *
.*   MNOTE 12,'REQUIRED CSECT NAME IS NOT SPECIFIED'                  *
.*   MNOTE 12,'JDTMAC MACRO SPECIFIED MORE THAN ONCE-MACRO IGNORED'   *
.*                                                                    *
.*   MACROS = MODID                                               @H1A*
.*                                                                    *
.*   CHANGE ACTIVITY =  H0,H1,H2                                  @H2C*
.*    $H0= EXTJCL JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL       *
.*    $H1= EXTJCL JBB1328 810702 PD2K: SUPPORT FOR EXTENDED JCL   @H1A*
.*    $H2= EXTJCL JBB1328 811202 PDC5: SUPPORT FOR EXTENDED JCL   @H2A*
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A ADDED MODID TO JDT                                            @H1A
.* A ADDED BLOCK ID VARIABLE                                       @H2A
.* D DELETED DC FOR CSECT NAME (NOW USED BY MODID MACRO)           @H2A
         GBLA  &LEN,&V1,&V2,&K1,&K2,&P1,&P2 VARIABLES FOR OFFSETS
         GBLA  &BLKID            BLOCK ID USED IN JDPARM MACRO     @H2A
.*--------------------------------------------------------------------*
.*  GLOBALS TO DETERMINE WHAT MACRO(S) MAY BE ACTIVE;                 *
.*  (I.E. PREVIOUSLY INVOKED) RESPECTIVELY:                           *
.*       JDTMAC,JDVERB,JDKEY,JDPARM,JDSUB,ENDSUB AND ENDJDT           *
.*--------------------------------------------------------------------*
         GBLB  &JACT,&VACT,&KACT,&PACT,&SPACT,&EPACT,&EJACT
.*--------------------------------------------------------------------*
.*  CHECK TO SEE IF THIS WAS THE ONLY JDTMAC DEFINED. ONLY ONE        *
.*  ALLOWED PER ASSEMBLY. SINCE THE JDTMAC MACRO MUST BE FIRST        *
.*  NO OTHER  GLOBAL BITS  SHOULD BE ON YET.  IF THERE  IS ANY        *
.*  OTHER BITS ON, THEN ANOTHER JDTMAC MACRO MUST HAVE ALREADY        *
.*  BEEN INVOKED.                                                     *
.*                                                                    *
.*  NONE OF THE FOLLOWING GLOBALS SHOULD BE ON OR 'ACTIVE'.           *
.*--------------------------------------------------------------------*
         AIF   (&JACT EQ 1 OR  &VACT EQ 1 OR  &KACT EQ 1 OR  &PACT EQ 1+
                OR &SPACT EQ 1 OR  &EPACT EQ 1 OR &EJACT EQ 1).BADJDT
         AGO   .ORDROK               THIS IS THE FIRST MACRO-CONTINUE
.*--------------------------------------------------------------------*
.*  ANOTHER JDT MUST HAVE ALREADY BEEN DEFINED-> MNOTE IT.            *
.*--------------------------------------------------------------------*
.BADJDT  ANOP
         MNOTE 12,'JDTMAC MACRO SPECIFIED MORE THAN ONCE-MACRO IGNORED'
         MEXIT
.*--------------------------------------------------------------------*
.*  NO GLOBALS WERE ON; OK TO CONTINUE MACRO.                         *
.*  THE FOLLOWING COUNTERS ARE USED TO MAKE UNIQUE LABELS IN EACH     *
.*  INVOCATION OF JDVERB, JDKEY AND JDPARM MACROS. THEY ARE           *
.*  INITIALIZED HERE. THE '&LEN' GLOBAL DEFINITION IS USED TO         *
.*  CALCULATE EACH MACROS LENGTH BY USING A LABEL ON AN EQUATE.       *
.*  THESE LABELS MUST BE UNIQUE TO EACH MACRO ALSO. THE COUNTERS      *
.*  AND THE &LEN GLOBAL DEFINITIONS ARE INCREMENTED IN EACH MACRO.    *
.*--------------------------------------------------------------------*
.ORDROK  ANOP
&BLKID   SETA  0                 START BLOCK ID AT 0 FOR JDT       @H2A
&LEN     SETA  1                 START LENGTH OFFSET AT 1
&V1      SETA  0                 SET VERB COUNTER ONE
&V2      SETA  1                 SET VERB COUNTER TWO
&K1      SETA  0                 SET KEYWORD COUNTER ONE
&K2      SETA  1                 SET KEYWORD COUNTER TWO
&P1      SETA  0                 SET PARAMETER COUNTER ONE
&P2      SETA  1                 SET PARAMETER COUNTER TWO
&JACT    SETB  1                 SET BIT-TO FLAG JDTMAC BEING USED
         AIF   ('&CSECT' NE '').JDTDC   IS CSECT NAME SPECIFIED?
.*--------------------------------------------------------------------*
.*  NO CSECT NAME SPECIFIED-> MNOTE IT.                               *
.*--------------------------------------------------------------------*
         MNOTE 12,'REQUIRED CSECT NAME IS NOT SPECIFIED'
.*--------------------------------------------------------------------*
.*  BEGIN JDTMAC MACRO DATA DEFINITIONS                               *
.*--------------------------------------------------------------------*
.JDTDC   ANOP                    BEGIN DATA DEFINITIONS - JDTMAC  MACRO
&CSECT   CSECT                   JCL DEFINITION TABLE
B&LEN    EQU   *                 BEGINNING OF JDTMAC MACRO SECTION
         DS    0F
         DC    CL4'JDT '         JDT IDENTIFIER-> 'JDT'
         DC    AL2(E&LEN-B&LEN)  LENGTH OF JDTMAC MACRO SECTION
         DC    XL1'01'           VERSION NUMBER
         DC    XL1'00'           RESERVED
         MODID BR=NO             ISSUE MODID FOR THIS CSECT       @H1A
E&LEN    EQU   *                 END OF JDTMAC MACRO SECTION
         SPACE
         MEND
./ ADD NAME=JDVERB
         MACRO
&NAME    JDVERB &VERB=,&CNTLVRB=NO                                 @H1A
.**********************************************************************
.*                                                                    *
.*   MODULE NAME = IEFJDVRB                                        @H1C
.*                                                                    *
.*   DESCRIPTIVE NAME = JCL VERB DEFINITION MACRO                     *
.*                                                                    *
.*   COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982                    *
.*                LICENSED MATERIAL - PROGRAM                         *
.*                PROPERTY OF IBM, REFER TO COPYRIGHT                 *
.*                INSTRUCTIONS FORM G120-2083                         *
.*                                                                    *
.*   FUNCTION = JDVERB GENERATES  THE VERB SECTION IN THE JDT         *
.*              THAT WILL  BE ASSOCIATED  WITH AN EXISTING DD         *
.*              STATEMENT OR THAT WILL DEFINE A NEW VERB.             *
.*                                                                    *
.*     NOTES = NONE                                                   *
.*                                                                    *
.*      DEPENDENCIES = NONE                                           *
.*                                                                    *
.*      RESTRICTIONS = THE  JDVERB MACRO  IS  ONLY  ALLOWED TO        *
.*                     FOLLOW   THE  JDTMAC,  JDPARM,  ENDSUB,        *
.*                     OR  ANOTHER   JDVERB  MACRO.  ONLY  THE     @H1A
.*                     VERB  'DD'   OR  A  NEW  VERB  WILL  BE        *
.*                     SUPPORTED WITH THIS VERSION; JOB, EXEC,        *
.*                     PROC AND  PEND  ARE NOT  SUPPORTED  AND        *
.*                     WILL BE FLAGGED AS AN ERROR.                   *
.*                                                                    *
.*   ENTRY POINT = N/A                                                *
.*                                                                    *
.*   MODULE TYPE = MACRO                                              *
.*                                                                    *
.*   ENTRY POINT = NONE                                               *
.*                                                                    *
.*     PROCESSOR = ASSEMBLER                                          *
.*                                                                    *
.*     INPUT = THE FOLLOWING MAY BE SPECIFIED AS PARAMETERS TO JDTMAC *
.*                                                                    *
.*             PARAMETER         DESCRIPTION                          *
.*                                                                    *
.*             - &NAME           USED ONLY ON THE MACRO EXPANSION     *
.*             - &VERB=          THE VERB NAME (E.G. VERB=DD)         *
.*             - &CNTLVRB=       THIS VERB IS A CONTROL STATEMENT  @H1A
.*                                                                    *
.*     OUTPUT = VERB SECTION OF JDT                                   *
.*                                                                    *
.*   EXIT NORMAL =                                                    *
.*   CONDITION-NO ERRORS DETECTED                                     *
.*   OUTPUT    -NO MNOTE ISSUED. SEVERITY CODE=0.                     *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-SEVERE ERROR DETECTED BY THE JDVERB MACRO.             *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 12                    *
.*              ISSUED WHEN THE PARAMETER IS INCORRECTLY SPECIFIED    *
.*              OR THE MACRO IS NOT IN THE CORRECT ORDER (SEE         *
.*              RESTRICTIONS). THE MACRO WILL ATTEMPT TO SCAN FOR     *
.*              ADDITIONAL ERRORS. (SEE MESSAGES BELOW)               *
.*                                                                    *
.*   EXIT ERROR =                                                     *
.*   CONDITION-TERMINATING ERROR DETECTED BY THE JDVERB MACRO.        *
.*   OUTPUT    -ERROR MNOTES WITH SEVERITY CODE 16                    *
.*              ISSUED WHEN PARAMETER IS SPECIFIED WITH AN INVALID    *
.*              VERB OR IF NO JDTMAC MACRO HAS BEEN USED TO START     *
.*              THE JDTS (SEE RESTRICTIONS). THE MACRO WILL ATTEMPT   *
.*              TO SCAN FOR ADDITIONAL ERRORS.                        *
.*              (SEE MESSAGES BELOW)                                  *
.*                                                                    *
.*   EXTERNAL REFERENCES = JDSCAN MACRO IS USED FOR VALIDATION        *
.*                         OF THE VERB KEYWORD PARAMETER.             *
.*                         I.E., 1-8 CHARACTERS, FIRST CHARACTER      *
.*                         MUST BE ALPHABETIC OR NATIONAL (@,#,$);    *
.*                         2-7 MUST BE ALPHANUMERIC OR NATIONAL.   @R2A
.*                                                                    *
.*   TABLES = NONE                                                    *
.*                                                                    *
.*   MESSAGES = (MNOTES)                                              *
.*                                                                    *
.*   ERROR MNOTES =                                                   *
.*                                                                    *
.*    MNOTE 12,'REQUIRED VERB PARAMETER IS NOT SPECIFIED'             *
.*    MNOTE 12,'VERB SPECIFICATION EXCEEDS 8 CHARACTERS'              *
.*    MNOTE 12,'VERB=&VERB HAS INVALID CHARACTERS'                 @R2A
.*    MNOTE 12,'JDVERB MACRO SPECIFIED OUT OF ORDER'                  *
.*    MNOTE 12,'AN ENDSUB MACRO EXPECTED TO END A DEFINED SUBLIST,    *
.*              BUT WAS NOT SPECIFIED'                                *
.*    MNOTE 12,'CNTLVRB=&CNTLVRB INVALID. MUST BE YES, NO, Y OR N' @H1A
.*                                                                    *
.*    MNOTE 16,'VERB=&VERB INVALID. JOB, EXEC, PROC, AND PEND NOT     *
.*             SUPPORTED'                                             *
.*    MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'*
.*                                                                    *
.*   CHANGE ACTIVITY = H0,R1,R2,H1,R3                              @R3C
.*    $H0= EXTJCL  JBB1328 810315 PDC5: SUPPORT FOR EXTENDED JCL      *
.*    $R1= PPP0011 JBB1328 810508 PDC5: ASSEMBLER ERROR            @R1A
.*    $R2= PPP0015 JBB1328 810508 PDC5: MISSING MNOTE              @R2A
.*    $H1= EXTJCL  JBB1328 811202 PDC5: SUPPORT FOR EXTENDED JCL   @H1A
.*    $R3= PPP0101 JBB1328 820521 PDC5: POSSIBLE ALIGNMENT ERROR   @R3A
.*                                                                    *
.**********************************************************************
.* A 000000-999999                                                 @H0A
.* A VERB KEYWORD PARAMETER LEFT BLANKS CAUSED ASSEMBLER ERRORS    @R1A
.* A VERB KEYWORD PARAMETER WITH INVALID CHARACTERS DID NOT CAUSE
.*   THE EXPECTED MNOTE.                                           @R2A
.* A ADDED KEYWORD CNTLVRB                                         @H1A
.* A ADDED PROCESSING FOR BYTE OFFSET AND BLOCK ID INITIALIZATION  @H1A
.* A ADDED AN OFFSET FIELD TO NEXT KEY                             @H1A
.* C CHANGED PROCESSING TO ALLOW VERBS TO FOLLOW ONE ANOTHER WITHOUT
.*   NEEDING A KEY AND PARAMETER                                   @H1A
.* D FULLWORD ALIGNMENT BOUNDARY OF DS 0F FROM DEFINITION          @R3A
.*--------------------------------------------------------------------*
.*  GLOBALS USED IN THIS MACRO THAT MAY BE ACTIVE OR BE MADE ACTIVE   *
.*  RESPECTIVELY: JDTMAC, JDVERB, JDKEY, JDPARM, JDSUB, ENDSUB AND    *
.*                ENDJDT.                                             *
.*--------------------------------------------------------------------*
         GBLB  &JACT,&VACT,&KACT,&PACT,&SPACT,&EPACT,&EJACT
         GBLA  &LEN              USED FOR DETERMINING MACRO LENGTH
         GBLA  &BYTEOFF,&BYTECTR USED FOR BYTE OFFSET CALCULATIONS @H1A
         GBLA  &BLKID            USED FOR BLOCK ID CALCULATION     @H1A
         GBLB  &F0               USED FOR CNTLVRB                  @H1A
.*--------------------------------------------------------------------*
.*  GLOBALS USED FOR OFFSETS - VERB COUNTERS ONE AND TWO              *
.*--------------------------------------------------------------------*
         GBLA  &V1,&V2,&K1,&K2,&P1,&P2  VARIABLES FOR OFFSETS
.*---------------------------------------------------------------* @R2A
.*  GLOBALS USED ERROR INDICATORS FROM INTERNAL MACRO JDSCAN.    * @R2A
.*  &$ERRBAD IS THE INVALID CHARACTER ERROR BIT.                 * @R2A
.*  &$ERRBIG IS THE GREATER THAN 8 CHARACTERS ERROR BIT.         * @R2A
.*  &$ERRBLK IS THE REQUIRED VERB PARAMETER BLANKS ERROR BIT.    * @R2A
.*---------------------------------------------------------------* @R2A
         GBLB  &$ERRBAD,&$ERRBIG,&$ERRBLK                          @R2A
.*---------------------------------------------------------------* @R2A
.*  GLOBAL USED FOR PASSING VALUE TO INTERNAL MACRO JDSCAN.      * @R2A
.*---------------------------------------------------------------* @R2A
         GBLC  &ARGU                                               @R2A
.*--------------------------------------------------------------------*
.*   ONE OF THE FOLLOWING GLOBALS SHOULD BE ON OR 'ACTIVE'            *
.*--------------------------------------------------------------------*
         AIF   (&JACT EQ 1).ACTOFF
         AIF   (&VACT EQ 1).VRBEQU                                 @H1A
         AIF   (&PACT EQ 1 OR &EPACT EQ 1).SETEQU
.*--------------------------------------------------------------------*
.*   IF NONE OF THESE BITS ARE ON THEN THIS MUST BE THE FIRST MACRO.  *
.*--------------------------------------------------------------------*
         AIF   (&KACT EQ 0 AND &EJACT EQ 0 AND &SPACT EQ 0).NOJDT  @H1C
.*--------------------------------------------------------------------*
.*  JDVERB DID NOT FOLLOW PROPER MACRO-> MNOTE IT.                    *
.*--------------------------------------------------------------------*
         MNOTE 12,'JDVERB MACRO SPECIFIED OUT OF ORDER'
         AGO   .RESET
.*--------------------------------------------------------------------*
.*  JDTMAC MUST BE THE FIRST MACRO SPECIFIED, BUT IS NOT-> MNOTE IT.  *
.*--------------------------------------------------------------------*
.NOJDT   ANOP
       MNOTE 16,'JDTMAC MACRO MUST BE FIRST MACRO SPECIFIED BUT IS NOT'
         MEXIT
.*--------------------------------------------------------------------*
.*  IF VACT BIT IS ON HERE, MEANS THAT JDVERB IS FOLLOWING ANOTHER    *
.*  JDVERB. SET UP AN EQUATE TO ZERO THE PRECEEDING KEYWORD OFFSET.   *
.*--------------------------------------------------------------------*
.VRBEQU  ANOP                                                      @H1A
KY&K2    EQU   VB&V1                                               @H1A
&K1      SETA  &K1+1             UPDATE KEYWORD GLOBAL COUNTER ONE @H1A
&K2      SETA  &K2+1             UPDATE KEYWORD GLOBAL COUNTER TWO @H1A
         AGO   .SETUP                                              @H1A
.*--------------------------------------------------------------------*
.*  RESET APPROPRIATE ACTIVE GLOBAL BIT.                              *
.*  IF SPACT BIT IS ON HERE, MEANS THAT A SUBLIST WAS STARTED BUT     *
.*  THAT NO PARAMETERS (JDPARM MACROS) FOR IT HAD BEEN DEFINED YET.   *
.*--------------------------------------------------------------------*
.RESET   ANOP
&KACT    SETB  0                 RESET JDKEY  MACRO ACTIVE GLOBAL BIT
&EJACT   SETB  0                 RESET ENDJDT MACRO ACTIVE GLOBAL BIT
&SPACT   SETB  0                 RESET JDSUB  MACRO ACTIVE GLOBAL BIT
         AGO   .SETUP
.SETEQU  ANOP
KY&K2    EQU   KY&K1             ZEROES OFFSET FOR THE LAST KEYWORD AND
PM&P2    EQU   PM&P1             THE LAST PARAMETER OF PREVIOUS VERB
&K1      SETA  &K1+1             INCREMENT THE COUNTER FOR JDKEY
&K2      SETA  &K2+1             INCREMENT THE COUNTER FOR JDKEY
&P1      SETA  &P1+1             INCREMENT THE COUNTER FOR JDPARM
&P2      SETA  &P2+1             INCREMENT THE COUNTER FOR JDPARM
.*--------------------------------------------------------------------*
.*  RESET APPROPRIATE ACTIVE GLOBAL BIT.                              *
.*--------------------------------------------------------------------*
.ACTOFF  ANOP
&JACT    SETB  0                 RESET JDTMAC ACTIVE GLOBAL BIT
&PACT    SETB  0                 RESET JDPARM ACTIVE GLOBAL BIT
&EPACT   SETB  0                 RESET ENDSUB ACTIVE GLOBAL BIT
         AIF   (&SPACT EQ 0).SETUP
.*--------------------------------------------------------------------*
.*  JDVERB WAS SPECIFIED BEFORE A SUBLIST WAS CLOSED-> MNOTE IT.      *
.*--------------------------------------------------------------------*
         MNOTE 12,'AN ENDSUB MACRO EXPECTED TO END A DEFINED SUBLIST,  +
               BUT WAS NOT SPECIFIED'
&SPACT   SETB  0                 RESET JDSUB  MACRO ACTIVE GLOBAL BIT
.SETUP   ANOP
&BYTEOFF SETA  0                 RESET BYTE OFFSET FOR NEW VERB    @H1A
&BYTECTR SETA  0                 RESET BYTE COUNTER FOR NEW VERB   @H1A
&BLKID   SETA  &BLKID+1          SET UP THE VERBS BLOCK ID         @H1A
&VACT    SETB  1                 SET GLOBAL BIT ON FOR JDVERB ACTIVE
&V1      SETA  &V1+1             UPDATE VERB GLOBAL COUNTER ONE
&V2      SETA  &V2+1             UPDATE VERB GLOBAL COUNTER TWO
&LEN     SETA  &LEN+1            SETUP VARIABLE FOR OFFSET OF JDVERB
&ARGU    SETC  '&VERB'           SETUP ARGUMENT FOR PASSING        @R2A
         JDSCAN &ARGU                                              @R2A
         AIF   (&$ERRBAD EQ 1).BADVRB       INVALID CHARACTERS     @R2A
         AIF   (&$ERRBIG EQ 1).BIGVRB       EXCEEDS 8 CHARACTERS   @R2A
         AIF   (&$ERRBLK EQ 1).BLKVRB       MISSING PARAMETER      @R2A
         AGO   .CONTV                       NO ERRORS-CONTINUE     @R2A
.*---------------------------------------------------------------* @R2A
.* VERB PARAMETER HAS INVALID CHARACTERS-> MNOTE IT.             * @R2A
.*---------------------------------------------------------------* @R2A
.BADVRB  ANOP                                                      @R2A
         MNOTE 12,'VERB=&VERB HAS INVALID CHARACTERS'              @R2A
         AGO   .BLANKV                                             @R2A
.*--------------------------------------------------------------------*
.* VERB PARAMETER SPECIFICATION EXCEEDS MAX 8 CHARACTERS-> MNOTE IT.  *
.*--------------------------------------------------------------------*
.BIGVRB  ANOP                                                      @R2A
         MNOTE 12,'VERB SPECIFICATION EXCEEDS 8 CHARACTERS'
         AGO   .BLANKV                                             @R2A
.*--------------------------------------------------------------------*
.* VERB PARAMETER NOT SPECIFIED OR WAS SPECIFIED AS BLANKS-> MNOTE IT.*
.*--------------------------------------------------------------------*
.BLKVRB  ANOP                                                      @R2A
         MNOTE 12,'REQUIRED VERB PARAMETER IS NOT SPECIFIED'
         AGO  .BLANKV                                              @R2A
.*--------------------------------------------------------------------*
.*  VERBS JOB, EXEC, PROC, AND PEND ARE NOT SUPPORTED-> MNOTE IT.     *
.*--------------------------------------------------------------------*
.NOSUPT  ANOP                                                      @R2A
         MNOTE 16,'VERB=&VERB INVALID. JOB, EXEC, PROC, AND PEND NOT SU+
               PPORTED'
.BLANKV  ANOP                                                      @R2A
B&LEN    EQU   *                 BEGIN JDVERB LENGTH DEFINITION
VB&V1    DC    CL8' '            VERBNAME                          @R1A
         AGO   .JUMPV                                              @R1A
.*--------------------------------------------------------------------*
.* VERB PARAMETER HAS BEEN SPECIFIED CORRECTLY SO FAR. CHECK TO SEE   *
.* IF IT HAS BEEN SPECIFIED WITH 'JOB', 'EXEC', 'PROC', OR 'PEND'.    *
.* IF IT HAS, THEN GO MNOTE IT. THEY ARE UNSUPPORTED VERB NAMES.      *
.*--------------------------------------------------------------------*
.CONTV   ANOP
         AIF   ('&VERB' EQ 'JOB' OR '&VERB' EQ 'EXEC' OR '&VERB' EQ    +
               'PROC' OR '&VERB' EQ 'PEND').NOSUPT                 @R2C
B&LEN    EQU   *                 BEGIN JDVERB LENGTH DEFINITION
VB&V1    DC    CL8'&VERB'        VERBNAME
.JUMPV   ANOP                                                      @R1A
         DC    AL2(VB&V2-VB&V1)  OFFSET TO NEXT VERB (ZERO IF NONE)
         DC    AL2(KY&K2-VB&V1)  OFFSET TO FIRST KEYWORD           @H1A
         DC    XL1'01'           VERSION NUMBER OF JDVERB SECTION
.*---------------------------------------------------------------* @H1A
.* CHECK TO SEE IF THE CONTROL VERB PARAMETER IS SPECIFIED.      * @H1A
.* THE DEFAULT IS NO ('NO' MEANS STANDARD JCL STATEMENTS BEING   * @H1A
.* DEFINED. 'YES' MEANS NON-JCL STATEMENTS BEING DEFINED).       * @H1A
.*---------------------------------------------------------------* @H1A
         AIF   ('&CNTLVRB' EQ 'YES' OR '&CNTLVRB' EQ 'Y' OR '&CNTLVRB' +
               EQ 'NO' OR '&CNTLVRB' EQ 'N').SETCNTL               @H1A
.*---------------------------------------------------------------* @H1A
.* CNTLVRB PARAMETER IS SPECIFIED INCORRECTLY-> MNOTE IT.        * @H1A
.*---------------------------------------------------------------* @H1A
      MNOTE 12,'CNTLVRB=&CNTLVRB INVALID. MUST BE YES, NO, Y OR N' @H1A
.SETCNTL ANOP                                                      @H1A
&F0      SETB  ('&CNTLVRB' EQ 'YES' OR '&CNTLVRB' EQ 'Y')          @H1A
         DC    BL1'&F0.0000000'  CONTROL STATEMENT IF ON (NON-JCL) @H1A
         DC    XL2'00'           RESERVED                          @H1C
E&LEN    EQU   *                 END JDVERB LENGTH DEFINITION
         SPACE
         MEND
./ ADD NAME=JENTRY
         MACRO
         JENTRY &PARM
         GBLC  &COMPNM,&ASMID
         LCLC  &X,&Y
.*
.*       DEFINES AN ENTRY POINT BY GENERATING AN ENTRY STATEMENT
.*       AND IF WANTED, AN EQU TO IT WITH THE SPECIFIED SYMBOL.
.*       THE ENTRY POINT NAME MUST FOLLOW XF NAMING CONVENTIONS.
.*
         AIF   (K'&PARM LT 9).ERR1
         AIF   ('&PARM'(1,1) NE '(').ERR1
         AIF   ('&PARM'(K'&PARM,1) NE ')').ERR1
         AIF   ('&PARM'(7,1) NE '=').ERR1
         AIF   ('&PARM'(2,3) NE '&ASMID').ERR1
.*
&X       SETC  '&PARM'(2,5)
&Y       SETC  '&PARM'(8,K'&PARM-8)
.*
         ENTRY &COMPNM&X
&COMPNM&X EQU  &Y
         MEXIT
.*
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JERMSGCD
* /* START OF SPECIFICATIONS ****
*02* PROCESSOR = ASSEMBLER
**** END OF SPECIFICATIONS ***/
JERMSGCD DSECT
*
*  THIS DSECT PROVIDES EQUATES TO ALLOW THE USE OF SYMBOLIC ERROR AND
*  SEVERITY CODES IN THE CREATION OF ERROR MESSAGES AND ERROR RECORDS.
*
ERR0     EQU   0    UNDEFINED ERROR CODE - RECORD = XXXXXXXXXXXXXXXX
ERR11    EQU   11      THIS ERROR RESERVED.  USED FOR INTERMODULE      X
                          COMMUNICATION BETWEEN X1A AND X1J.
         JGENERR NOGEN
ERR256   EQU   256  SYSLIN DD CARD MISSING - NOLOAD OPTION USED
ERR257   EQU   257  SYSPUNCH DD CARD MISSING - NODECK OPTION USED
ERR258   EQU   258  INVALID ASSEMBLER OPTIONS ON EXECUTE CARD - IGNORED
ERR259   EQU   259  AT LEAST ONE RELOCATABLE Y TYPE CONSTANT IN THIS AS-
                    SEMBLY
ERR260   EQU   260  ASSEMBLY TERMINATED.  DD CARD MISSING FOT XXXXXXXX
ERR261   EQU   261  ASSEMBLY TERMINATED.  (I/O ERROR INFORMATION)
ERR262   EQU   262  ASSEMBLY TERMINATED.  INSUFFICIENT MEMORY.
ERR263   EQU   263  ASSEMBLY TERMINATED.  PROGRAM LOGIC ERROR.
ERR264   EQU   264  ESDID NUMBER HAS EXCEEDED THE LIMIT OF 399
ERR265   EQU   265  SYMBOL TABLE OVERFLOWED.
ERR266   EQU   266  LAST ASSEMBLER PHASE LOADED WAS XXXXXXXX.
ERR267   EQU   267  SYSPRINT DD CARD MISSING - NOLIST OPTION USED
SEV0     EQU   16
SEV1     EQU   8
SEV2     EQU   8
SEV3     EQU   8
SEV4     EQU   8
SEV5     EQU   8
SEV6     EQU   8
SEV7     EQU   8
SEV8     EQU   8
SEV9     EQU   12
SEV10    EQU   8
SEV11    EQU   8
SEV12    EQU   8
SEV13    EQU   8
SEV14    EQU   8
SEV15    EQU   0                  TEMPORARY
SEV16    EQU   8
SEV17    EQU   4
SEV18    EQU   4
SEV19    EQU   8
SEV20    EQU   0                   TEMPORARY
SEV21    EQU   8
SEV22    EQU   8
SEV23    EQU   8
SEV24    EQU   8
SEV25    EQU   4
SEV26    EQU   4
SEV27    EQU   8
SEV28    EQU   8
SEV29    EQU   8
SEV30    EQU   8
SEV31    EQU   8
SEV32    EQU   8
SEV33    EQU   8
SEV34    EQU   8
SEV35    EQU   8
SEV36    EQU   8
SEV37    EQU   8
SEV38    EQU   8
SEV39    EQU   8
SEV40    EQU   8
SEV41    EQU   0                     TEMPORARY
SEV42    EQU   8
SEV43    EQU   8
SEV44    EQU   0                  TEMPORARY
SEV45    EQU   8
SEV46    EQU   8
SEV47    EQU   4
SEV48    EQU   8
SEV49    EQU   8
SEV50    EQU   8
SEV51    EQU   4
SEV52    EQU   8
SEV53    EQU   8
SEV54    EQU   8
SEV55    EQU   8
SEV56    EQU   8
SEV57    EQU   8
SEV58    EQU   8
SEV59    EQU   8
SEV60    EQU   4
SEV61    EQU   8
SEV62    EQU   8
SEV63    EQU   0                   TEMPORARY
SEV64    EQU   12
SEV65    EQU   8
SEV66    EQU   8
SEV67    EQU   4
SEV68    EQU   8
SEV69    EQU   4
SEV70    EQU   8
SEV71    EQU   8
SEV72    EQU   8
SEV73    EQU   8
SEV74    EQU   4
SEV75    EQU   8
SEV76    EQU   4
SEV77    EQU   0                    TEMPORARY
SEV78    EQU   8
SEV79    EQU   8
SEV80    EQU   4
SEV81    EQU   4
SEV82    EQU   0                    TEMPORARY
SEV83    EQU   0                    TEMPORARY
SEV84    EQU   0                    TEMPORARY
SEV85    EQU   8
SEV86    EQU   86
SEV87    EQU   8
SEV88    EQU   8
SEV89    EQU   12
SEV90    EQU   8
SEV91    EQU   8
SEV92    EQU   8
SEV93    EQU   93
SEV94    EQU   94
SEV95    EQU   95
SEV96    EQU   96
SEV97    EQU   97
SEV98    EQU   98
SEV99    EQU   99
SEV100   EQU   8
SEV101   EQU   8
SEV102   EQU   8
SEV103   EQU   8
SEV104   EQU   4
SEV105   EQU   8
SEV106   EQU   8
SEV107   EQU   8
SEV108   EQU   8
SEV109   EQU   8
SEV110   EQU   8
SEV111   EQU   8
SEV112   EQU   8
SEV113   EQU   8
SEV114   EQU   8
SEV115   EQU   8
SEV116   EQU   4
SEV117   EQU   8
SEV118   EQU   8
SEV119   EQU   4
SEV120   EQU   4
SEV121   EQU   4
SEV122   EQU   4
SEV123   EQU   4
SEV124   EQU   4
SEV125   EQU   8
SEV126   EQU   8
SEV127   EQU   8
SEV128   EQU   8
SEV129   EQU   8
SEV130   EQU   8
SEV131   EQU   8
SEV132   EQU   8
SEV133   EQU   12
SEV134   EQU   134
SEV135   EQU   135
SEV136   EQU   136
SEV137   EQU   137
SEV138   EQU   138
SEV139   EQU   139
SEV140   EQU   140
SEV141   EQU   141
SEV142   EQU   142
SEV143   EQU   143
SEV144   EQU   144
SEV145   EQU   145
SEV146   EQU   146
SEV147   EQU   147
SEV148   EQU   148
SEV149   EQU   149
SEV150   EQU   150
SEV151   EQU   151
SEV152   EQU   152
SEV153   EQU   153
SEV154   EQU   154
SEV155   EQU   155
SEV156   EQU   156
SEV157   EQU   8
SEV158   EQU   8
SEV159   EQU   8
SEV160   EQU   160
SEV161   EQU   8
SEV162   EQU   8
SEV163   EQU   4
SEV164   EQU   4
SEV165   EQU   4
SEV166   EQU   8
SEV167   EQU   16
SEV168   EQU   8
SEV169   EQU   8
SEV170   EQU   8
SEV171   EQU   4
SEV172   EQU   8
SEV173   EQU   8
SEV174   EQU   8
SEV175   EQU   8
SEV176   EQU   8
SEV177   EQU   12
SEV178   EQU   8
SEV179   EQU   8
SEV180   EQU   12
SEV181   EQU   12
SEV182   EQU   12
SEV183   EQU   12
SEV184   EQU   12
SEV185   EQU   8
SEV186   EQU   8
SEV187   EQU   8
SEV188   EQU   8
SEV189   EQU   8
SEV190   EQU   4
SEV191   EQU   8
SEV192   EQU   4
SEV193   EQU   8
SEV194   EQU   4
SEV195   EQU   12
SEV196   EQU   8
SEV197   EQU   0
SEV198   EQU   8
SEV199   EQU   8
SEV200   EQU   8
SEV201   EQU   8
SEV202   EQU   8
SEV203   EQU   4
SEV204   EQU   8
SEV205   EQU   4
SEV206   EQU   8
SEV207   EQU   8
SEV208   EQU   8
SEV209   EQU   8
SEV210   EQU   12
SEV211   EQU   12
SEV212   EQU   8
SEV213   EQU   8
SEV214   EQU   12
SEV215   EQU   8
SEV216   EQU   12
SEV217   EQU   12
SEV218   EQU   12
SEV219   EQU   8
SEV220   EQU   4
SEV221   EQU   12
SEV222   EQU   12
SEV223   EQU   12
SEV224   EQU   8
SEV225   EQU   4
SEV226   EQU   12
SEV227   EQU   8
SEV228   EQU   8
SEV229   EQU   4
SEV230   EQU   12
SEV231   EQU   8
SEV232   EQU   8
SEV233   EQU   8
SEV234   EQU   8
SEV235   EQU   8
SEV236   EQU   8
SEV237   EQU   8
SEV238   EQU   8
SEV239   EQU   8
SEV240   EQU   8
SEV241   EQU   8
SEV242   EQU   4
SEV243   EQU   8
SEV244   EQU   8
SEV245   EQU   8
SEV246   EQU   8
SEV247   EQU   247
SEV248   EQU   248
SEV249   EQU   249
SEV250   EQU   250
SEV251   EQU   251
SEV252   EQU   252
SEV253   EQU   253
SEV254   EQU   4
SEV255   EQU   8
SEV256   EQU   16
SEV257   EQU   16
SEV258   EQU   16
SEV259   EQU   4
SEV260   EQU   20
SEV261   EQU   20
SEV262   EQU   20
SEV263   EQU   20
SEV264   EQU   16
SEV265   EQU   16
SEV266   EQU   4
SEV267   EQU   16
./ ADD NAME=JERRCD
JERRCD   DSECT
*
*              ERROR RECORD FORMAT
*
JERECL   DS    H                  RECORD LENGTH
JEFLGA   DSW   JEPSOP             FLAG A
JEFLGB   DSW   ,,,,               FLAG B                               *
               JEPRPOS            ERROR MSG PRINT POSITION SWITCH
*                                  IF JEPRPOS = 1 PRINT ERROR BEFORE
*                                  STATEMENT. IF = 0 PRINT ERROR AFTER
*                                  STATEMENT.
         DBV   JEOPCOD(JTERROR),  INTERNAL OP CODE                     C
               JEEOF(JTEOF)       INTERNAL END-OF-FILE
JECOLPTR DS    X                  COLUMN POINTER
JESTMTNO DS    CL3                      STATEMENT NUMBER
JEERCOD  DS    0CL2                     ERROR AND SEVERITY CODE
JESEV    DS    C                  SEVERITY CODE
JERCDE   DS    C                  ERROR CODE
JENODATA DS    X                  NUMBER OF 8 BYTE DATA ITEMS
JEDATA   EQU   *                  DATA ITEMS MAX OF 10 ITEMS OF EXACTLY
*                                  8 BYTES EACH.
./ ADD NAME=JEXTRN
         MACRO
         JEXTRN &PARM
         GBLC  &COMPNM
         LCLC  &X,&Y
.*
.*       DEFINES AN EXTERNAL REFERENCE BY GENERATING AN EXTRN STATEMENT
.*       NAME MUST FOLLOW XF NAMING CONVENTIONS. AN EQU TO THE
.*       EXTERNAL SYMBOL IS GENERATED IF OPERAND IS GIVEN.
.*
         AIF   (K'&PARM LT 9).ERR1
         AIF   ('&PARM'(1,1) NE '(').ERR1
         AIF   ('&PARM'(K'&PARM,1) NE ')').ERR1
         AIF   ('&PARM'(7,1) NE '=').ERR1
.*
&X       SETC  '&PARM'(2,5)
&Y       SETC  '&PARM'(8,K'&PARM-8)
.*
         EXTRN &COMPNM&X
&Y       EQU   &COMPNM&X
         MEXIT
.*
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JFIND
         MACRO
&NAME    JFIND &ADDR=
.*       GENERATES A CALL TO THE FIND ROUTINE IN THE I/O MODULE
.*       TO ISSUE A FIND FOR A MACRO OR COPY CODE MEMBER.
         AIF   (K'&ADDR EQ 0).ERR1
&NAME    JINST LA,R10,&ADDR
         L     R12,JINMLC               LOAD BASE
         BAL   R9,JFIND(,R12)           GO TO JFIND
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JFLEBLK
JFLEBLK  DSECT                          FILE BLOCK DSECT
*A751000                                                       @AZ13738
         WRITE JDECB,SF,MF=L            DECB FOR READ AND WRITE
JTCLOSE  CLOSE (,),TYPE=T,MF=L          TCLOSE PARM LIST
JFLE     DS    A                        ADDR OF FILE DEFINITION
JBUFFER  DS    A                        ADDR OF ALTERNATE BUFFER
JBUF     DS    A                        ADDR OF BUFFER
JRL      DS    H                        RECORD LENGTH
JBUFNDX  DS    H                        BUFFER DISPLACEMENT (INDEX)
JIOFLAG  DSW   JPUTLPND,                PUTL PENDING                   X
               JGETLPND,                GETL PENDING                   X
               JGETLPNT,                GETL TO FOLLOW POINT           X
               JGETLSBF,                POINT (GETL) WITHIN SAME BUFFERX
               JNOTED,                  NOTE VALUE OF LAST RECORD NOTEDX
               JDBLBUF,                 OUTPUT IS DOUBLE BUFFERED      X
               JCHKFILE,                FILE NEEDS TO BE CHECKED       X
               JPUTLWRT                 PUTL FORCED WRITE
JMLTFLAG DSW   JMLTBUF                  MBUFFERS IN USE        @AZ13738
JLSTNOTE DS    CL6                      NOTE VALUE OF LAST RECORD NOTED
./ ADD NAME=JFRECORE
         MACRO
&NAME    JFRECORE &ADDR=
.*       GENERATES A CALL TO THE I/O INTERFACE MODULES TO FREE
.*       A BLOCK OF DOUBLE WORD STORRAGE.
         AIF   (K'&ADDR EQ 0).ERR1
&NAME    JINST L,R10,&ADDR
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JFRECORE(,R12)        GO TO JFRECORE
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JGENERR
         MACRO
         JGENERR &OPTION
         GBLB  &GENSW
.*  THIS MACRO IS CALLED BY ALL PHASES WITH THE OPTION NOGEN TO GENERAT
.*  THE DSECT JERMSGCD.  IT IS ALSO CALLED BY CSECT X6C WITH THE OPTION
.*  GEN TO GENERATE ALL OF THE ERROR MESSAGES.
&GENSW   SETB  0                        TURN OFF GEN SWITCH
         AIF   ('&OPTION' EQ 'NOGEN').C1 DO WE GENERATE ERROR MESSAGES
&GENSW   SETB  1                        YES, TURN ON GEN SWITCH
.C1      ANOP                           PROCEED TO CALL GENERR MACRO
.*                                      TO GENERATE EITHER ERROR MSGS
.*                                      OR DSECT JERMSGCD, DEPENDING
.*                                      UPON THE SETTING OF &GENSW.
         COPY  ERMS
         MEND
./ ADD NAME=JGENIN
         MACRO
&LABEL   JGENIN &LIST,&LENGTH
         LCLA  &K,&C,&CT,&LEN
         LCLB  &SW,&SW1
         LCLC  &LET,&GEN(8)
.* GENERATES INTERNALLY CODED TEXT.
.* ACCEPTS ALPHA, NUMBERIC, AND ALL SPECIAL CHARACTERS EXCEPT
.* AMPERSAND AND QUOTE.
&K       SETA  K'&LIST
&C       SETA  1
         AIF   ('&LIST'(1,1) NE '''').M1
&C       SETA  2
&SW      SETB  1
.M1      AIF   ('&LENGTH' NE '').M2
&SW1     SETB  1
&LEN     SETA  0
.*  SW =0 - NO QUOTE
.*  SW =1 - QUOTE
.*  SW1=0 - LENGTH
.*  SW1=1 - NO LENGTH
.M2      AIF   (&SW).M3                 BRANCH QUOTE
         AIF   (&SW1).M5                BRANCH NO QUOTE, NO LENGTH
.*   NO QUOTE  LENGTH
         AIF   (&LENGTH GT &K).M2A
&K       SETA  &LENGTH
&LEN     SETA  0
         AGO   .M5
.M2A     ANOP
&LEN     SETA  &LENGTH-&K
         AGO   .M5
.*   QUOTE
.M3      AIF   (&SW1).M4                BRANCH QUOTE NO LENGTH
.*   QUOTE LENGTH
&K       SETA  &K-2
         AIF   (&LENGTH GT &K).M3A
&K       SETA  &LENGTH+1
&LEN     SETA  0
         AGO   .M5
.M3A     ANOP
&LEN     SETA  &LENGTH-&K
&K       SETA  &K+1
         AGO   .M5
.*   QUOTE  NO LENGTH
.M4      ANOP
&K       SETA  &K-1
.M5      AIF   ('&LABEL' EQ '').L2
&LABEL   DC    0CL(&K-&C+1+&LEN)' '
.L2      ANOP
&CT      SETA  1
.L3      AIF   ('&LIST'(&C,1) EQ '$').L3DOLR      DOLLAR
         AIF   ('&LIST'(&C,1) EQ '#').L3POUND     POUND
         AIF   ('&LIST'(&C,1) EQ '@').L3AT        AT
         AIF   ('&LIST'(&C,1) EQ '=').L3EQ        EQUAL
         AIF   ('&LIST'(&C,1) EQ '(').L3LP        LEFT PARN.
         AIF   ('&LIST'(&C,1) EQ '+').L3PLUS      PLUS
         AIF   ('&LIST'(&C,1) EQ '-').L3MIN       MINUS
         AIF   ('&LIST'(&C,1) EQ '*').L3AST       ASTER
         AIF   ('&LIST'(&C,1) EQ '/').L3SLASH     SLASH
         AIF   ('&LIST'(&C,1) EQ ')').L3RP        RIGHT PARN.
         AIF   ('&LIST'(&C,1) EQ ',').L3C         COMMA
         AIF   ('&LIST'(&C,1) EQ ' ').L3B         BLANK
         AIF   ('&LIST'(&C,1) EQ '.').L3P         PERIOD
&LET     SETC  'J'.'&LIST'(&C,1)
.L6      AIF   (&CT EQ 1).L7
&LET     SETC  ','.'&LET'
.L7      ANOP
&GEN(&CT) SETC '&LET'
&C       SETA  &C+1
         AIF   (&C GT &K).L9
&CT      SETA  &CT+1
         AIF   (&CT LT 9).L3
         DC    AL1(&GEN(1)&GEN(2)&GEN(3)&GEN(4)&GEN(5)&GEN(6)&GEN(7)&GEX
               N(8))
&CT      SETA  1
.L8      ANOP
&GEN(&CT) SETC ''
&CT      SETA  &CT+1
         AIF   (&CT LT 9).L8
         AGO   .L2
.L3DOLR  ANOP
&LET     SETC  'JDOLLAR'
         AGO   .L6
.L3POUND ANOP
&LET     SETC  'JPOUND'
         AGO   .L6
.L3AT    ANOP
&LET     SETC  'JAT'
         AGO   .L6
.L3EQ    ANOP
&LET     SETC  'JEQUAL'
         AGO   .L6
.L3LP    ANOP
&LET     SETC  'JLPARN'
         AGO   .L6
.L3PLUS  ANOP
&LET     SETC  'JPLUS'
         AGO   .L6
.L3MIN   ANOP
&LET     SETC  'JMINUS'
         AGO   .L6
.L3AST   ANOP
&LET     SETC  'JASTER'
         AGO   .L6
.L3SLASH ANOP
&LET     SETC  'JSLASH'
         AGO   .L6
.L3RP    ANOP
&LET     SETC  'JRPARN'
         AGO   .L6
.L3C     ANOP
&LET     SETC  'JCOMMA'
         AGO   .L6
.L3B     ANOP
&LET     SETC  'JBLANK'
         AGO   .L6
.L3P     ANOP
&LET     SETC  'JPERIOD'
         AGO   .L6
.L9      DC    AL1(&GEN(1)&GEN(2)&GEN(3)&GEN(4)&GEN(5)&GEN(6)&GEN(7)&GEX
               N(8))
         AIF   (&LEN EQ 0).L10
         DC    &LEN.AL1(JBLANK)
.L10     MEND
./ ADD NAME=JGEN
         MACRO
&NAME    JGEN  &NM,&TYPE,&DATA,&LEN
         LCLA  &END,&I
         LCLC  &C(2),&L
.*       GENERATES AN ORG TO SPECIFIED ADDRESS
.*       AND A DC OF SPECIFIED TYPE AND VALUE.
         ORG   START+&NM-JCOMMON
&C(1)    SETC  '('
&C(2)    SETC  ')'
         AIF   ('&TYPE' EQ 'A' OR '&TYPE' EQ 'Q' OR '&TYPE' EQ 'V' OR  X
               '&TYPE' EQ 'S' OR '&TYPE' EQ 'Y').NXA
&C(1)    SETC  ''''
&C(2)    SETC  ''''
.NXA     AIF   (K'&LEN EQ 0).NXB
&L       SETC  'L'.'&LEN'
.NXB     AIF   (K'&NAME EQ 0).NXC
&NAME    DS    0&TYPE&L
.NXC     ANOP
&I       SETA  1
&END     SETA  N'&DATA
.NXD     DC    &TYPE&L&C(1)&DATA(&I)&C(2)
&I       SETA  &I+1
         AIF   (&I LE &END).NXD
.NXE     MEND
./ ADD NAME=JGETCORE
         MACRO
&NAME    JGETCORE &MINDBL=,&MAXDBL=,&DBL=
         LCLA  &AA,&BB
         LCLB  &A,&B
.*       GENERATES A CALL TO THE I/O INTERFACE MODULES TO GET
.*       A VARIABLE NUMBER OF DOUBLE WORD STORAGE.
&A       SETB  (K'&MINDBL EQ 0 AND K'&MAXDBL EQ 0)
&B       SETB  (K'&DBL EQ 0)
&AA      SETA  &A
&BB      SETA  &B
         AIF   (&AA EQ &BB).ERR1
         AIF   (K'&DBL EQ 0).NXA
&NAME    JINST LA,R10,&DBL
         LR    R11,R10
         AGO   .NXB
.NXA     ANOP
&NAME    JINST LA,R10,&MINDBL
         JINST LA,R11,&MAXDBL
.NXB     L     R12,JMLC                 LOAD BASE
         BAL   R9,JGETCORE(,R12)        GO TO JGETCORE
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JGETL
         MACRO
&NAME    JGETL &FILE=
.*       GENERATES A CALL TO TEH WORKFILE I/O MODULE TO GET THE ADDRESS
.*       OF THE NEXT LOGICAL RECORD.
         AIF   (K'&FILE EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JGETL(,R12)           GO TO JGETL
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JHEAD
         MACRO
         JHEAD &TITLE,&PHASEID=,&LEVEL=
         GBLA  &ASMLEV
         GBLC  &COMPNM,&ASMID
         LCLA  &I,&J
         LCLC  &X(10)
.*
.*       GENERATES A TITLE STATEMENT AND A STATUS MNOTE
.*       IN THE PROLOUGE TO AN MODULE.
         AIF   (K'&TITLE GT 47).ERR1    TOO BIG FOR ONE TITLE CARD
         AIF   (K'&PHASEID NE 3).ERR1   IT MUST BE THREE IN LENGTH
         AIF   (K'&LEVEL EQ 0).ERR1     IT MUST BE PRESENT
.*
&ASMID   SETC  '&PHASEID'               PUT PHASEID IN GBLC
&ASMLEV  SETA  &LEVEL                   PUT LEVEL IN GBLA
.*
&COMPNM  SETC  'IFN'                    SYSTEM INDEPENDENT NAME
         AIF   ('&ASMID'(2,1) NE '0').SKIP
&COMPNM  SETC  'IFO'                    SYSTEM DEPENDENT NAME
.SKIP    ANOP
.*
&I       SETA  1                        NOW TRANSFER TITLE TO VARIABLE
&J       SETA  2
.LPA     ANOP
         AIF   (K'&TITLE EQ &J).NXA
         AIF   (K'&TITLE LT &J+8).LPA1
&X(&I)   SETC  '&TITLE'(&J,8)
&I       SETA  &I+1
&J       SETA  &J+8
         AGO   .LPA
.LPA1    ANOP
&X(&I)   SETC  '&TITLE'(&J,K'&TITLE-&J)
.NXA     ANOP
.*
&ASMID   TITLE '&COMPNM&ASMID - &X(1)&X(2)&X(3)&X(4)&X(5)&X(6)'
.*
         MNOTE *,'STATUS--CHANGE LEVEL &LEVEL'
         MEXIT
.*
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JINCOM
JINCOM   DSECT
         USING JINCOM,R7                SET UP MODULE COMMON BASE
JSYSIN   DS    A                        ADDR OF FILE DEF FOR INPUT
JSYSLIB  DS    A                        ADDR OF FILE DEF FOR LIBRARY
JINOPEN  DS    A                        ADDR OF OPEN PARM LIST
JINCLOS  DS    A                        ADDR OF CLOSE PARM LIST
         READ  JLIBDECB,SF,MF=L         DECB FOR LIBRARY
JLIBBUF  DS    A                        ADDR OF LIBRARY BUFFER
JBLKSIZE DS    H                        BLOCK SIZE OF CURRENT LIB REC
JLIBNDX  DS    H                        BUFFER INDEX INTO LIB BUFFER
JINSW    DSW   JREADPT                  SPECIAL READ FOR POINT
JINCMEND DS    0D                       END OF INPUT COMMON
./ ADD NAME=JINPUT
         MACRO
&NAME    JINPUT
.*       GENERATES A CALL TO THE INPUT I/O MODULE TO GET THE NEXT
.*       RECORD FROM THE INPUT FILE.
&NAME    L     R12,JINMLC               LOAD BASE
         BAL   R9,JINPUT(,R12)          GO TO JINPUT
         MEND
./ ADD NAME=JINST
         MACRO
&NAME    JINST &OP,&REG,&ADDR,&COMP
         LCLC  &X
         LCLA  &I
.*       INNER MACRO.   GENERATES MACHINE INSTRUCTIONS ACCORDING
.*       TO MACRO CALL OPERANDS VALUES.
         AIF   ('&ADDR'(1,1) NE '(').NXC
         AIF   ('&ADDR'(K'&ADDR,1) NE ')').NXC
&X       SETC  '&ADDR'(2,K'&ADDR-2)
         AIF   ('&X' NE '&REG').NXB
         AIF   (K'&NAME EQ 0).NXA
&NAME    DC    0H'0'
.NXA     MEXIT
.NXB     ANOP
&NAME    LR    &REG,&X
         MEXIT
.NXC     ANOP
&I       SETA  4
         AIF   (K'&ADDR GE 4).NXC1
&I       SETA  K'&ADDR
.NXC1    AIF   (K'&COMP NE 0 AND '&ADDR'(1,&I) NE 'FILE').ERR1
&NAME    &OP   &REG,&ADDR
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JMODID
         MACRO
&NAME    JMODID
         GBLA  &SNUMBER,&ASMLEV
         GBLC  &ASMID,&COMPNM
.*       GENERATES EMBEDDED IDENTIFIER CONSISTING OF SIX CARACTER
.*       MODULE NAME AND A HALF WORD BINARY ASSEMBLER LEVEL.
&NAME    DC    CL6'&COMPNM&ASMID',HL2'&ASMLEV'
         MEND
./ ADD NAME=JNOTELB
         MACRO
&NAME    JNOTELB
.*       GENERATES A CALL TO THE INPUT I/O MODULE TO NOTE
.*       THE POSITION IN LIBRARY.
&NAME    L     R12,JINMLC               LOAD BASE
         BAL   R9,JNOTELB(,R12)         GO TO JNOTELB
         MEND
./ ADD NAME=JNOTE
         MACRO
&NAME    JNOTE &FILE=
.*       GENERATES A CALL TO THE WORKFILE I/O MODULE TO GET
.*       THE RELETIVE POSITION OF THE LAST READ OR WRITE
         AIF   (K'&FILE EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JNOTE(,R12)           GO TO JNOTE
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JOUTCOM
JOUTCOM  DSECT                          OUTPUT COMMON DSECT
         USING JOUTCOM,R7               SETUP USING FOR OUTPUT COMMON
JSYSLST  DS    A                        ADDR OF FILE DEF FOR PRINT FILE
JSYSPCH  DS    A                        ADDR OF FILE DEF FOR PUNCH FILE
JSYSLNK  DS    A                        ADDR OF FILE DEF FOR LINK FILE
JSYSTRM  DS    A                        ADDR OF FILE DEF FOR TERM FILE
JOUTOPEN DS    A                        ADDR OF OPEN PARM LIST
JOUTCLOS DS    A                        ADDR OF CLOSE PARM LIST
JCURPRT  DS    A                        ADDR OF CURRENT PRINT BUFFER
JCURTRM  DS    A                        ADDR OF CURRENT TERM PRINT BUF
JCURPCH  DS    A                        ADDR OF CURRENT PUNCH BUFFER
JDECKSEQ DS    H                        DECK SEQUENCE NUMBER
JOUTSW   DSW   BYPASPRT,                1ST PRINT SWITCH               X
               BYPASPCH,                1ST PUNCH SWITCH               X
               CLOSPRT,                 FINAL PRINT SWITCH             X
               CLOSPCH,                 FINAL PUNCH SWITCH             X
               NOSEQ,                   DON'T SEQ PUNCHED OUTPUT       X
               BYPASTRM,                FIRST TERM PRINT SWITCH        X
               CLOSTRM                  FINAL TERM PRINT SWITCH
JOUTCMND DS    0D
./ ADD NAME=JPARM
         MACRO
         JPARM &FIXED=,                 FIXED PARAMETER OPTIONS        X
               &DEFAULT=,               DEFAULT PARAMETER OPTIONS      X
               &VERSION=0               VERSION IDENTIFICATION
         LCLA  &I,&J,&L,&X,&Y,&Z                               @AZ13738
         LCLB  &A(25),&B(25),&C(25),&D(25),&F,&N               @AZ13738
         LCLC  &K,&S                                           @AZ13738
.* GENERATES THE CODE IN IFOX0J WHICH CONTAINS THE BIT STRINGS
.* REPRESENTING OPTIONS IN EFFECT
&X       SETA  55                                 LINECNT=60
&Z       SETA  X'200000'                DEFAULT ASMSIZE=2M     @AZ13738
&B(1)    SETB  1
&B(2)    SETB  1
&B(3)    SETB  1
&B(4)    SETB  1
&B(5)    SETB  1
&B(6)    SETB  1
&B(7)    SETB  1
&B(8)    SETB  1
&B(9)    SETB  1
&B(10)   SETB  1
&B(11)   SETB  1
&B(12)   SETB  1
&B(13)   SETB  1
&B(14)   SETB  1
&B(15)   SETB  1
&B(16)   SETB  1
&B(17)   SETB  1
&B(18)   SETB  1
&B(19)   SETB  1
&B(20)   SETB  1
&B(21)   SETB  1
&B(22)   SETB  1
&B(23)   SETB  1
&B(24)   SETB  1
&B(25)   SETB  1
&D(1)    SETB  1                                  LIST
&D(2)    SETB  1                                  XREF
&D(3)    SETB  1                                  ESD
&D(4)    SETB  1                                  RLD
&D(5)    SETB  1                                  DECK
&D(8)    SETB  1                                  STAT
&D(10)   SETB  1                                  ALGN
&D(12)   SETB  1                                  ALOGIC
&D(18)   SETB  1                        STMT
&D(19)   SETB  1
&D(20)   SETB  1                   XREF(SHORT)
&D(25)   SETB  1                        YFLAG
.P1      ANOP
&I       SETA  &I+1                               INCREMENT INDEX
         AIF   (&I GT N'&FIXED).D1                FINIS
         AIF   (K'&FIXED(&I) EQ 0).P1             NULL SUB PARAMETER
         AIF   (K'&FIXED(&I) GT 2).E4             INVALID SUB PARAMETER
.E5      MNOTE 4,'* * * INVALID OPERAND -- &FIXED(&I)'
         AGO   .P1
.E4      AIF   ('&FIXED(&I)'(1,2) NE 'NO').P2     PREFIX 'NO'
&N       SETB  1                                  PREFIX 'NO'
&K       SETC  '&FIXED(&I)'(3,K'&FIXED(&I)-2)     KEYWORD
         AGO   .P3                                SKIP
.P2      AIF   (K'&FIXED(&I) GT 8).X1             KEYWORD
&N       SETB  0                                  NO PREFIX 'NO'
&K       SETC  '&FIXED(&I)'                       KEYWORD
.P3      ANOP
&J       SETA  1                                  'LIST'
         AIF   ('&K' EQ 'LIST').S1                LIST/NOLIST
&J       SETA  2                                  'XREF'
         AIF   ('&K' EQ 'XREF').S1                XREF/NOXREF
&J       SETA  3                                  'ESD'
         AIF   ('&K' EQ 'ESD').S1                 ESD/NOESD
&J       SETA  4                                  'RLD'
         AIF   ('&K' EQ 'RLD').S1                 RLD/NORLD
&J       SETA  5                                  'DECK'
         AIF   ('&K' EQ 'DECK').S1                DECK/NODECK
&J       SETA  6                                  'LOAD'
         AIF   ('&K' EQ 'LOAD').S1                LOAD/NOLOAD
&J       SETA  7                                  'TEST'
         AIF   ('&K' EQ 'TEST').S1                TEST/NOTEST
&J       SETA  8                                  'STAT'
         AIF   ('&K' EQ 'STAT').S1                STAT/NOSTAT
&J       SETA  9                                  'RENT'
         AIF   ('&K' EQ 'RENT').S1                RENT/NORENT
&J       SETA  10                                 'ALGN'
         AIF   ('&K' EQ 'ALGN').S1                ALGN/NOALGN
&J       SETA  11                                 'SYSMAC'
         AIF   ('&K' EQ 'SYSMAC').S1              SYSMAC/NOSYSMAC
&J       SETA  12                                 'ALOGIC'
         AIF   ('&K' EQ 'ALOGIC').S1              ALOGIC/NOALOGIC
&J       SETA  13                                 'MLOGIC'
         AIF   ('&K' EQ 'MLOGIC').S1              MLOGIC/NOMLOGIC
&J       SETA  14                                 'CALLS'
         AIF   ('&K' EQ 'CALLS').S1               CALLS/NOCALLS
&J       SETA  18                                 'TERM'
         AIF   ('&K' EQ 'TERM').S1                TERM/NOTERM
&J       SETA  19                                 'STMT'
         AIF   ('&K' EQ 'STMT').S1                STMT/NOSTMT
&J       SETA  20                                 'NUM'
         AIF   ('&K' EQ 'NUM').S1                 NUM/NONUM
&J       SETA  25                       'YFLAG'                @AZ13738
         AIF   ('&K' EQ 'YFLAG').S1     YFLAG/NOYFLAG          @AZ13738
         AIF   (NOT &F).E5                        INVALID KEYWORD
         AGO   .E7
.S1      AIF   (&F).S2
         AIF   (NOT &A(&J)).S4
.ED      MNOTE 4,'* * * INCOMPATIBLE OPTION -- &FIXED(&I)'
         AGO   .P1
.S4      ANOP
&A(&J)   SETB  1
&B(&J)   SETB  (NOT &N)
&C(&J)   SETB  (NOT &N)
&D(&J)   SETB  (NOT &N)
         AGO   .P1
.S2      AIF   (NOT &A(&J)).S3
.EC      MNOTE 4,'* * * INCOMPATIBLE OPTION -- &DEFAULT(&L)'
         AGO   .D1
.S3      ANOP
&A(&J)   SETB  1
&D(&J)   SETB  (NOT &N)                           DEFAULT OPTION
.D1      ANOP
&F       SETB  1                                  DEFAULT SCAN
&L       SETA  &L+1                               INCREMENT INDEX
         AIF   (&L GT N'&DEFAULT).G1              END OF SCAN
         AIF   (K'&DEFAULT(&L) EQ 0).D1           NULL SUB OPERAND
         AIF   (K'&DEFAULT(&L) GT 2).E6           INVALID SUB PARAMETER
.E7      MNOTE 4,'* * * INVALID OPERAND -- &DEFAULT(&L)'
         AGO   .D1
.E6      AIF   ('&DEFAULT(&L)'(1,2) NE 'NO').D2   PREFIX 'NO'
&N       SETB  1                                  PREFIX 'NO'
&K       SETC  '&DEFAULT(&L)'(3,K'&DEFAULT(&L)-2) KEYWORD
         AGO   .P3
.D2      AIF   (K'&DEFAULT(&L) GT 8).K1           KEYWORD
&N       SETB  0                                  NO PREFIX
&K       SETC  '&DEFAULT(&L)'                     KEYWORD
         AGO   .P3
.K1      AIF   ('&DEFAULT(&L)'(1,8) NE 'LINECNT=').K11
&K       SETC  '&DEFAULT(&L)'(9,K'&DEFAULT(&L)-8) VALUE
         AGO   .Y1
.K11     AIF  ('&DEFAULT(&L)'(1,9) NE 'WORKSIZE=').K2          @AZ13738
&S       SETC  '&DEFAULT(&L)'(10,K'&DEFAULT(&L)-9) VALUE       @AZ13738
         AGO   .SIZE                                           @AZ13738
.K2      AIF   ('&DEFAULT(&L)'(1,9) NE 'MSGLEVEL=').E7
&K       SETC  '&DEFAULT(&L)'(10,K'&DEFAULT(&L)-9)
         AGO   .Z1
.X1      AIF   ('&FIXED(&I)'(1,8) NE 'LINECNT=').X11           @AZ13738
&K       SETC  '&FIXED(&I)'(9,K'&FIXED(&I)-8)     VALUE
         AGO   .Y1
.X11     AIF   ('&FIXED(&I)'(1,9) NE 'WORKSIZE=').X2           @AZ13738
&S       SETC  '&FIXED(&I)'(10,K'&FIXED(&I)-9) VALUE           @AZ13738
         AGO   .SIZE                                           @AZ13738
.X2      AIF   ('&FIXED(&I)'(1,9) NE 'MSGLEVEL=').E5
&K       SETC  '&FIXED(&I)'(10,K'&FIXED(&I)-9)    VALUE
.Z1      ANOP
&Y       SETA  &K                                 VALUE
         AIF   (&Y LT 256).EF
         MNOTE 4,'* * * INVALID VALUE -- &Y'
&Y       SETA  0
         AIF   (&F).D1
         AGO   .P1
.EF      AIF   (&A(24) AND &F).EC
         AIF   (&A(24)).ED
&A(24)   SETB  1
         AIF   (&F).D1
&D(24)   SETB  1
         AGO   .P1
.Y1      ANOP
&X       SETA  &K-5                               VALUE
         AIF   (&X GT 0 AND &X LT 32768).EA       INVALID VALUE
.EB      MNOTE 4,'* * * INVALID VALUE -- &X'
&X       SETA  60
         AIF   (&F).D1
         AGO   .P1
.EA      AIF   (&A(23) AND &F).EC                 REDUNDANT
         AIF   (&A(23)).ED
&A(23)   SETB  1                                  INDICATE USED
         AIF   (&F).D1
&D(23)   SETB  1                                  FIXED
         AGO   .P1
.SIZE    ANOP                                                  @AZ13738
&Z       SETA  &S                                              @AZ13738
         AIF   (&Z GT X'8000' AND &Z LT X'A00000').SIZE1       @AZ13738
         MNOTE 4,'* * * INVALID VALUE -- &Z'                   @AZ13738
&Z       SETA  X'200000'                                       @AZ13738
.SIZE1   AIF   (&F).D1                                         @AZ13738
         AGO   .P1                                             @AZ13738
.G1      ANOP
IFOX0J00 CSECT
         DC    AL1(&VERSION,&Y),H'&X'               , MSGLEVEL, LINECNT
         DC    B'&D(1)&D(2)&D(3)&D(4)&D(5)&D(6)&D(7)&D(8)&D(9)&D(10)&D(X
               11)&D(12)&D(13)&D(14)&D(15)&D(16)&D(17)&D(18)&D(19)&D(20X
               )&D(21)&D(22)&D(23)&D(24)&D(25)0000000' DEFAULT @OX09734
         DC    B'&C(1)&C(2)&C(3)&C(4)&C(5)&C(6)&C(7)&C(8)&C(9)&C(10)&C(X
               11)&C(12)&C(13)&C(14)&C(15)&C(16)&C(17)&C(18)&C(19)&C(20X
               )&C(21)&C(22)&C(23)&C(24)&C(25)0000000'   FIXED TO ON
         DC    B'&B(1)&B(2)&B(3)&B(4)&B(5)&B(6)&B(7)&B(8)&B(9)&B(10)&B(X
               11)&B(12)&B(13)&B(14)&B(15)&B(16)&B(17)&B(18)&B(19)&B(20X
               )&B(21)&B(22)&B(23)&B(24)&B(25)1111111'   FIXED TO OFF
         DC    F'&Z'                                           @AZ13738
         MEND
./ ADD NAME=JPATCH
         MACRO
&N       JPATCH &MOD,&MODLEN,&AREA,&K1=21,&K2=20
         GBLA  &PI
         GBLC  &COMPNM,&ASMID
         LCLA  &A
         LCLC  &NAME,&L1,&L3,&L4,&L5
.P2      PUSH  PRINT
&NAME    SETC  '&COMPNM&MOD'
         PRINT GEN,DATA
.*THE PATCH AREA IS INITIALIZED TO 5% OF THE ORIGINAL CSECT.  BY
.*EVOKING THE "PATCH" MACRO, SUBSEQUENT ADDITIONS TO THE MODULE WILL
.*"SHRINK" THE ORIGINAL 5%-PATCH AREA VIA THE DYNAMIC ASSIGNMENT OF A
.*NEW LESS-THAN-5%-PATCH AREA.  AT LEAST A 5%-PATCH AREA WILL BE
.*DYNAMICALLY MAINTAINED FOR DELETIONS TO THE MODULE.
&NAME    CSECT
         LTORG
         PRINT GEN,NODATA
         AIF   (T'&AREA EQ 'O').NOAREA
&A       SETA  &AREA
.NOAREA  AIF   (&PI NE 0).DS2
PATCHDC  DC    C'&NAME &SYSTIME &SYSDATE'
ABSOLEN  EQU   X'&MODLEN'-&A+L'PATCHDC  CALCULATE ACTUAL MODULE LENGTH
PTCHLEN  EQU   &NAME+ABSOLEN*&K1/&K2-*        LENGTH OF PATCH AREA
PATCH    DC    ((PTCHLEN+1)/PTCHLEN*PTCHLEN)C' '    DYNAMIC PATCH AREA
         AGO   .EXIT
.DS2     ANOP
&L4      SETC  'PATCHDC&PI'
&L5      SETC  'L'''.'PATCHDC&PI'
&L4      DC    C'&NAME &SYSTIME &SYSDATE'
&L1      SETC  'ABSOLEN&PI'
&L3      SETC  'PTCHLEN&PI'
&L1      EQU  X'&MODLEN'-&A+&L5         CALCULATE ACTUAL MODULE LENGTH
&L3      EQU   &NAME+&L1*&K1/&K2-*            LENGTH OF PATCH AREA
PATCH&PI DC    ((&L3+1)/&L3*&L3)C' '                DYNAMIC PATCH AREA
.EXIT    POP   PRINT
&PI      SETA  &PI+1                    FOR UNIQUE LABELS
         MEND
./ ADD NAME=JPOINTLB
         MACRO
&NAME    JPOINTLB &ADDR=
.*       GENERATES A CALL TO THE INPUT I/O MODULE TO POSITION
.*       THE LIBRARY FILE TO GET THE RECORD AFTER THE ONE NOTED.
         AIF   (K'&ADDR EQ 0).ERR1
&NAME    JINST LA,R10,&ADDR
         L     R12,JINMLC               LOAD BASE
         BAL   R9,JPOINTLB(,R12)        GO TO JPOINTLB
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JPOINT
         MACRO
&NAME    JPOINT &FILE=,&ADDR=,&NEXT=
         LCLC  &XXX
         LCLA  &I
.*       GENERATES A CALL TO THE WORKFILE I/O MODULE TO POSITION
.*       THE FILE TO A SPECIFIED POSITION
         AIF   (K'&NEXT LT 4).IN1
&I       SETA  4
         AGO   .IN2
.IN1     ANOP
&I       SETA  K'&NEXT
.IN2     ANOP
         AIF   (K'&FILE EQ 0 OR K'&ADDR EQ 0 AND                       X
               '&NEXT' NE 'START').ERR1
         AIF   ('&NEXT' NE 'READ' AND '&NEXT' NE 'WRITE' AND           X
               '&NEXT' NE 'GET' AND '&NEXT' NE 'PUT' AND               X
               '&NEXT' NE 'START').ERR1
&XXX     SETC  '&NEXT'(1,&I)
&NAME    SET   JPT4&XXX,ON
         JINST LA,R10,&FILE,FILE
         AIF   ('&NEXT' EQ 'START').NXA
         JINST LA,R11,&ADDR
.NXA     L     R12,JMLC                 LOAD BASE
         BAL   R9,JPOINT(,R12)          GO TO JPOINT
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JPRINT
         MACRO
&NAME    JPRINT
.*       GENERATES A CALL TO THE OUTPUT I/O MODULE TO PRINT A LINE
.*       ON SYSPRINT AND GET THE ADDRESS OF THE NEXT BUFFER BACK.
&NAME    L     R12,JOUTMLC              LOAD BASE
         BAL   R9,JPRINT(,R12)          GO TO JPRINT
         MEND
./ ADD NAME=JPUNCH
         MACRO
&NAME    JPUNCH &SEQ=YES
.*       GENERATES A CALL TO THE OUTPUT I/O MODULE TO OUTPUT
.*       A 80-BYTE RECORD ON SYSPUNCH AND SYSGO AND GET THE ADDRESS
.*       OF THE NEXT BUFFER BACK.
         AIF   ('&SEQ' EQ 'YES').NXA
&NAME    SET   JNOSEQPH,ON
         L     R12,JOUTMLC              LOAD BASE
         AGO   .NXB
.NXA     ANOP
&NAME    L     R12,JOUTMLC              LOAD BASE
.NXB     BAL   R9,JPUNCH(,R12)          GO TO JPUNCH
         MEND
./ ADD NAME=JPUTL
         MACRO
&NAME    JPUTL &FILE=,&BUFREQ=
.*       GENERATES A CALL TO THE WORKFILE I/O MODULE TO GET THE ADDRESS
.*       OF THE NEXT RECORD IN THE BUFFER. WHEN END OF BUFFER
.*       IS REACHED THE WHOLE BUFFER IS PUT ON FILE.
         AIF   (K'&FILE EQ 0 OR K'&BUFREQ EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         JINST LA,R11,&BUFREQ
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JPUTL(,R12)           GO TO JPUTL
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JPUTM
         MACRO
&NAME    JPUTM &FILE=,&ADDR=
.*       GENERATES A CALL TO THE WORKFILE I/O MODULE TO COPY A RECORD
.*       INTO THE OUTPUT BUFFER.
         AIF   (K'&FILE EQ 0 OR K'&ADDR EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         JINST LA,R11,&ADDR
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JPUTM(,R12)           GO TO JPUTL
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JREAD
         MACRO
&NAME    JREAD &FILE=,&PARM=
.*       GENERATES A CALL TO THE WORKFILE I/O MODULE TO READ
.*       A PHYSICAL RECORD. A JCHECK MACRO CALL MUST BE ISSUED
.*       BEFORE ANY ADDITIONAL OPERATIONS TO THE WORKFILE ARE DONE.
         AIF   (K'&FILE EQ 0 OR K'&PARM EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         JINST LA,R11,&PARM
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JREAD(,R12)           GO TO JREAD
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JRELSE
         MACRO
&NAME    JRELSE &FILE=
.*       GENERATES A CALL TO THE WORKFILE I/O MODULE TO RELEASE
.*       AN INPUT BUFFER. THE NEXT JGETL MACRO INTRUCTION RETRIEVES
.*       THE FIRST RECORD IN THE NEXT INPUT BUFFER.
         AIF   (K'&FILE EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JRELSE(,R12)          GO TO JRELSE
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JRETURN
         MACRO
&NAME    JRETURN
.*       RESTORES THE REGISTERS OF THE CALLING PROGRAM FROM A PUSH
.*       DOWN SAVE AREA (R2 THRU R9) AND THEN RETUTNS TO THE CALLER
.*       VIA R9. REQUIRES A NAME FIELD.
         AIF   (K'&NAME EQ 0).ERR1
&NAME    LM    R8,R9,JCLVLPTR           GET CURRENT LVL & DECR
         BXLE  R8,R9,0                  DECREMENT LEVEL POINTER
         ST    R8,JCLVLPTR              SAVE NEW LEVEL POINTER
         LM    R2,R9,JSAVESZ(R8)        RESTORE REGISTERS R2 THRU R9
         BR    R9                       RETURN TO CALLING PROGRAM
         MEXIT
.ERR1    MNOTE 8,'OMITTED NAME.'
         MEND
./ ADD NAME=JSAVE
         MACRO
&NAME    JSAVE &BASE=YES
.*       SAVES THE REGISTERS OF THE CALLING PROGRAM INTO A PUSH DOWN
.*       SAVE AREA (R2 THRU R9). UNLESS OVERRIDDEN THE MACRO WILL LOAD
.*       THE BASE REGISTER R8, FROM R12 AND GIVE A USING STATEMENT.
         AIF   (K'&NAME EQ 0).ERR1
         AIF   ('&BASE' EQ 'NO').NXA
         USING &NAME,R8                 SET USING FOR SUBR BASE
.NXA     ANOP
&NAME    L     R15,JCLVLPTR             POINT TO CURRENT LEVEL
         LA    R15,JSAVESZ(,R15)        INCREMENT LEVEL POINTER
         ST    R15,JCLVLPTR             STORE NEW LEVEL POINTER
         STM   R2,R9,0(R15)             SAVE R2 THRU R9
         AIF   ('&BASE' EQ 'NO').NXB
         LR    R8,R12                   ESTABLISH SUBR BASE
.NXB     MEXIT
.ERR1    MNOTE 8,'OMITTED NAME.'
         MEND
./ ADD NAME=JTEXT
JTEXT    DSECT  ,                       TEXT RECORD DSECT
JTRLI    DS    1H                       RECORD LENGTH INDICATOR
         SPACE
*        FLAGA                OP CODE DEPENDENT FLAGS
         SPACE
JTFLGA   DSW   JPSOP,                   PSEUDO-OP FLAG                 X
               JEXTB,                   EXTENDED OPCODE FLAG           X
               JINPC,                   INITIALIZE PRIVATE CODE        X
               JINHB,                   INHIBIT BIT                    X
               JDEF,                    DEFINITION RECORD              X
               JREF,                    SCAN FOR SYMBOL REFERENCES     X
               JREQOP,                  OPERAND REQUIRED FOR INTERLUDE X
               JDCSX                    ON FOR DC, DS, AND DXD ONLY
         ORG   JTFLGA                   OVERLAY
JTFLGA1  DSW   ,,,,,                    DECLARED ABOVE                 X
               JPRESD,                  ON FOR PRE-ESD PUNCH & REPRO   X
               JLN4,                    INSTRUCTION LENGTH BIT 1       X
               JLN2                     INSTRUCTION LENGTH BIT 2
         SPACE
*        FLAGB                DYNAMIC FLAGS
         SPACE
JTFLGB   DSW   JPRONLY,                 PRINT ONLY                     X
               JERR,                    DEAD STATEMENT                 X
               JNOCNT,                  DO NOT ASSIGN STATEMENT NUMBER X
               JGEN,                    STATEMENT IS GENERATED         X
               JNMERR,                  INVALID NAME FIELD             X
               JSUBNAME,                SUBSTITUTION REQUIRED-NAME     X
               JSUBOPCD,                SUBSTITUTION REQUIRED-OP CODE  X
               JSUBOPND                 SUBSTITUTION REQUIRED-OPERAND
JTIOP    DS    0H
JTIOP1   DBV   ,                        INTERNAL OP CODES 1ST BYTE     X
               JTICTL(0),                    ICTL                      X
               JTISEQ(JTICTL+1),             ISEQ                      X
               JTOPSYN(JTISEQ+1),            OPSYN                     X
               JTCOPY(JTOPSYN+1),            COPY                      X
               JTANOP(JTCOPY+1),             ANOP                      X
               JTGBLA(JTANOP+1),             GBLA                      X
               JTGBLB(JTGBLA+1),             GBLB                      X
               JTGBLC(JTGBLB+1),             GBLC                      X
               JTLCLA(JTGBLC+1),             LCLA                      X
               JTLCLB(JTLCLA+1),             LCLB                      X
               JTLCLC(JTLCLB+1),             LCLC                      X
               JTMACRO(JTLCLC+1),            MACRO                     X
               LOGENOP(JTMACRO),   LOWEST GENERATOR OP                 X
               JTACTR(JTMACRO+1),            ACTR                      X
               JTAGO(JTACTR+1),              AGO                       X
               JTAGOB(JTAGO),                AGOB  SAME AS AGO         X
               JTAIF(JTAGO+1),               AIF                       X
               JTAIFB(JTAIF),                AIFB  SAME AS AIF         X
               JTSETA(JTAIF+1),              SETA                      X
               JTSETB(JTSETA+1),             SETB                      X
               JTSETC(JTSETB+1),             SETC                      X
               JTMEXIT(JTSETC+1),       MEXIT                          X
               JTMEND(JTMEXIT+1),            MEND                      X
               JTCALL(JTMEND+1),        MACRO CALL                     X
               JTCPKEY(JTCALL+1),            CALL PARAMETER--KEYWORD   X
               JTCPPOS(JTCPKEY+1),           CALL PARAMETER--POSITIONALX
               JTPROTO(JTCPPOS+1),      PROTOTYPE                      X
               JTPREP(JTPROTO),              MODIFIED REPRO RECORD     X
               JTPPKEY(JTPROTO+1),           PROTOTYPE PARM--KEYWORD   X
               JTPPCH(JTPPKEY),              MODIFIED PUNCH RECORD     X
               JTPPPOS(JTPPKEY+1),           PROTOTYPE PARM--POSITIONALX
               JTINPC(JTPPPOS),              UNINITIATED PRIVATE CODE  X
               JTPEND(JTPPPOS+1),       END OF PARMS--PROTO OR MACRO   X
               JTPMOP(JTPEND),               PETE'S MACHINE OP         X
               JTEND(JTPEND+1),              END                       X
               HIGENOP(JTEND),          HI GENERATOR OP                X
               LOREFOP(JTEND),          LO SYMBOL REFERENCE OP         X
               LODEFOP(JTEND),          LO SYMBOL DEFINITION OP        X
               JTDXD(JTEND+1),               DXD                       X
               JTEQU(JTDXD+1),               EQU                       X
               JTORG(JTEQU+1),               ORG                       X
               JTCNOP(JTORG+1),              CNOP                      X
               JTCCW(JTCNOP+1),              CCW                       X
               JTDC(JTCCW+1),                DC                        X
               JTDS(JTDC+1),                 DS                        X
               JTSTART(JTDS+1),              START                     X
               HIREFOP(JTSTART),        HI SYMBOL REFERENCE OP         X
               JTCSECT(JTSTART+1),           CSECT                     X
               JTDSECT(JTCSECT+1),           DSECT                     X
               JTCOM(JTDSECT+1),             COM                       X
               JTENTRY(JTCOM+1),             ENTRY                     X
               JTLTLC(JTENTRY),         CSECT FOR LITERAL POOL         X
               JTEXTRN(JTENTRY+1),           EXTRN                     X
               JTLTDC(JTEXTRN),         LITERAL DC                     X
               JTWXTRN(JTEXTRN+1),           WXTRN                     X
               JTLTND(JTWXTRN),         LITERAL POOL END               X
               JTCXD(JTWXTRN+1),             CXD                       X
               JTLTORG(JTCXD+1),             LTORG                     X
               HIDEFOP(JTLTORG),        HI SYMBOL DEFINITION OP        X
               JTLITR(JTLTORG+1),            LITERAL DEFINITIONS       X
               JTSYMBL(JTLITR+1),            SYMBOL REFERENCE          X
               JTPUNCH(JTSYMBL+1),           PUNCH                     X
               JTEOFII(JTPUNCH),             ESD ADJUSTMENT RECORD     X
               JTREPRO(JTPUNCH+1),           REPRO                     X
               JTLITII(JTREPRO),             LITERAL ADJUSTMENT RECORD X
               JTPUSH(JTREPRO+1),            PUSH                      X
               JTLTEND(JTPUSH),              END-OF-LITERAL-POOL       X
               JTPOP(JTPUSH+1),              POP                       X
               JTADJII(JTPOP),               PETE'S END-OF-FILE        X
               JTPRINT(JTPOP+1),             PRINT                     X
               JTPASS(JTPRINT),              NO PROCESS RECORD         X
               JTUSING(JTPRINT+1),           USING                     X
               JTSYMII(JTUSING),             SYMBOL TABLE ENTRY        X
               JTDROP(JTUSING+1),            DROP                      X
               JTCMNT(JTDROP+1),             COMMENT CARD              X
               JTHCMNT(JTCMNT+1),       HIDDEN COMMENT                 X
               JTERROR(JTHCMNT+1),      ERROR                          X
               JTSPACE(JTERROR+1),           SPACE                     X
               LONOPRN(JTSPACE),        LO NO-PRINT OP                 X
               JTEJECT(JTSPACE+1),           EJECT                     X
               JTTITLE(JTEJECT+1),           TITLE                     X
               JTMNOTE(JTTITLE+1),           MNOTE                     X
               JTSICTL(JTMNOTE+1),           INTERNAL ICTL ONLY        X
               JTEEOF(X'FE'),                EARLY END OF TEXT FILE    X
               JTEOF(X'FF')                  END OF TEXT FILE
JTIOP2   DBV   ,                        SECOND BYTE OF OP-CODE
JTNMP    DS    1H                       NAME FIELD POINTER
JTOCP    DS    1H                       OPCODE POINTER IN TEXT RECORD
JTOPP    DS    1H                       OPERAND POINTER IN TEXT RECORD
JTCPR    DS    1H                       COMMENTS POINTER IN TEXT
JTSPR    DS    1H                       STRING POINTER IN TEXT
JTSYMCNT DS    1C                       NUMBER OF SYMBOLS IN OPERAND
JTFLGC   DSW   JPRGMAC,                 PROGRAMMER MACRO               X
               JPRGICTL                 STANDARD ICTL
         SPACE
JTHDREND EQU   *                        END OF TEXT HEADER
JTHDRLN  EQU   JTHDREND-JTEXT           TEXT HEADER LENGTH
         SPACE 3
JTEXTA   DSECT  ,                       DSECT FOR VARIABLE TEXT PORTION
         SPACE
*        NAME FIELD IN VARIABLE TEXT
         SPACE
JTNMO    DSW   JTNMOCD,            NAME CARD POINTER--REAL PTR FOLLOWS X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
                                        NOT USED
JTNML    DS    1C                       NAME LENGTH
JTNAME   EQU   *                        NAME
         SPACE
         ORG   JTNMO                    RESET LOCATION COUNTER
*                                  OPCODE POINTER IN TEXT RECORD
         SPACE
JTOCO    DSW   JTOCOCD,       OP-CODE CARD POINTER--REAL JTOCO FOLLOWS X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
                                        NOT USED
         SPACE
JTOCL    DS    1C                       OP CODE LENGTH
JTOPCD   EQU   *                        OP CODE
         ORG   JTOCO                    RE-ORG AFTER VARIABLE TEXT
JTOPO    DSW   JTOPOCD,       OPND CARD POINTER--REAL JTOPO FOLLOWS    X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
               ,                        NOT USED                       X
                                        NOT USED
JTOPL    DS    1C                       OPERAND LENGTH
JTOPND   EQU   *                        OPERAND
         ORG   JTOCO                    RE-ORG AFTER VARIABLE TEXT
JTCOP    DS    1C                       COMMENT OUTPUT POINTER
JTCML    DS    1C                       COMMENT LENGTH
JTCMM    EQU   *                        COMMENT
         ORG   JTOCO                    RE-ORG AFTER VARIABLE TEXT
JTSTC    DS    1C                       STRING COUNT
JTSTO    DS    1C                       STRING 1 OUTPUT COLUMN POINTER
JTSTL    DS    1C                       STRING 1 LENGTH
JTSTR    EQU   *                        STRING 1
         ORG   JTOCO                    RE-ORG AFTER VARIABLE TEXT
JTSTO2   DS    1C                       STRING 2 OUTPUT COLUMN POINTER
JTSTL2   DS    1C                       STRING 2 LENGTH
JTSTR2   EQU   *                        STRING 2
./ ADD NAME=JTMTXT
JTMTXT   DSECT
         SPACE
*        CONDITIONAL ASSEMBLY OPERATORS
         SPACE
JTMOP    DBV   JTMSCM(0),               START CHARACTER MODE           X
               JTMECM(JTMSCM+1),        END CHARACTER MODE             X
               JTMCOM(JTMECM+1),        COMMA                          X
               JTMPER(JTMCOM+1),        PERIOD                         X
               JTMLPAR(JTMPER+1),       LEFT PAREN                     X
               JTMRPAR(JTMLPAR+1),      RIGHT PAREN                    X
               JTMPLUS(JTMRPAR+1),      PREFIX PLUS                    X
               JTMMIN(JTMPLUS+1),       PREFIX MINUS                   X
               JTMMULT(JTMMIN+1),       MULTIPLY                       X
               JTMDIV(JTMMULT+1),       DIVIDE                         X
               JTMADD(JTMDIV+1),        ADD                            X
               JTMSUB(JTMADD+1),        SUBTRACT                       X
               JTMGT(JTMSUB+1),         GREATER THAN                   X
               JTMGE(JTMGT+1),          GREATER OR EQUAL               X
               JTMEQ(JTMGE+1),          EQUAL                          X
               JTMLE(JTMEQ+1),          LESS OR EQUAL                  X
               JTMLT(JTMLE+1),          LESS THAN                      X
               JTMNE(JTMLT+1),          NOT EQUAL                      X
               JTMNOT(JTMNE+1),         LOGICAL NOT                    X
               JTMAND(JTMNOT+1),        LOGICAL AND                    X
               JTMOR(JTMAND+1),         LOGICAL OR                     X
               JTMSTR(JTMOR+1),         STRING OPERATOR                X
               JTMDUP(JTMSTR+1),        DUPLICATION OPERATOR           X
               JTMDIM(JTMDUP+1),        DIMENSION OPERATOR             X
               JTMDIM2(JTMDIM+1),       SYSLIST(N,M) FIRST DIMENSION   X
               JTMDIM3(JTMDIM2+1),      SYSLIST (N,M) SECOND DIMEN     X
               JTMSTRM(JTMDIM3+1),      STATEMENT TERMINATOR           X
               JTMTAT(JTMSTRM+1),       TYPE ATTRIBUTE                 X
               JTMLAT(JTMTAT+1),        LENGTH ATTRIBUTE               X
               JTMSAT(JTMLAT+1),        SCALE ATTRIBUTE                X
               JTMIAT(JTMSAT+1),        INTEGER ATTRIBUTE              X
               JTMKAT(JTMIAT+1),        COUNT ATTRIBUTE                X
               JTMNAT(JTMKAT+1),        NUMBER ATTRIBUTE               X
               JTMHIOP(JTMNAT)          HIGHEST OPERATOR.
         SPACE
*        CONDITIONAL ASSEMBLY TERM FLAGS
         SPACE
         ORG   JTMOP                    ORIGIN ZERO
JTMFLG   DBV   JTMSVA(((JTMHIOP+2)/2)*2),    SETA                      X
               JTMSVB(JTMSVA+2),        SETB                           X
               JTMSVC(JTMSVB+2),        SETC                           X
               JTMOSA(JTMSVC+2),        ORDINARY SYMBOL ATTRIBUTE      X
               JTMSEQ(JTMOSA+2),        SEQUENCE SYMBOL                X
               JTMSDT(JTMSEQ+2),        SELF DEFINING TERM             X
               JTMCS(JTMSDT+2),         CHARACTER STRING               X
               JTMLSTO(JTMCS+2),        SYSLIST                        X
               JTMKPAR(JTMLSTO+2),      KEYWORD PARAMETER              X
               JTMPPAR(JTMKPAR+2)       POSITIONAL PARAMETER
         SPACE
         ORG   JTMFLG                   DEFINE GLOBAL INDICATOR
         DSW   JTMCSW,                  EVALUATE AS CHARACTER          X
               ,,,,,,                   NOT USED AS SWITCHES           X
               JTMGBL                   GLOBAL REFERENCE
         SPACE
JTMPTR   DS    CL3                      POINTER FIELD
JTMD     DS    CL2                      DIMENSION FIELD
JTMNEXT  EQU   *                        MARKER
         SPACE
         ORG   JTMPTR                   ORIGIN ONE
JTMLSTN  DS    CL3                      N FOR SYSLIST(N) OR (N,M)
JTMLSTM  DS    CL2                      M FOR SYSLIST(N,M)
         ORG   JTMPTR                   ORIGIN ONE
JTMLNG   DS    C                        LENGTH OF STRING
JTMSTRNG EQU   *                        START OF CHARACTER STRING
         ORG   JTMPTR                   ORIGIN ONE
JTMVALUE DS    CL4                      SDT VALUE
./ ADD NAME=JTPRINT
         MACRO
&NAME    JTPRINT
.*       GENERATES A CALL TO THE OUTPUT I/O MODULE TO OUTPUT A RECORD
.*       ON SYSTERM DATA SET.
&NAME    L    R12,JOUTMLC               GET OUTPUT PACKAGE ENTRY
         BAL   R9,TSPRINT(,R12)         GO TO TSO PRINT
         MEND
./ ADD NAME=JTRUNC
         MACRO
&NAME    JTRUNC &FILE=
.*       GENERATES A CALL TO THE WORKFILE I/O PACKAGE TO TRUNCATE
.*       AN OUTPUT BUFFER. THIS CAUSES THE CURRENT OUTPUT BUFFER
.*       TO BE REGARDED AS FULL AND PUT TO FILE. THE NEXT LOGICAL
.*       RECORD WILL BE PUT IN THE NEXT PHYSICAL BUFFER.
         AIF   (K'&FILE EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JTRUNC(,R12)          GO TO JTRUNC
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=JWRITE
         MACRO
&NAME    JWRITE &FILE=,&PARM=
.*       GENERATES A CALL TO THE WORKFILE I/O PACKAGE TO WRITE
.*       A PHYSICAL RECORD. THE OPERATIN MUST BE CHECKED FOR COMPLETION
.*       BEFORE ANY ADDITIONAL OPERATIONS TO THE FILE IS DONE (JCHECK).
         AIF   (K'&FILE EQ 0 OR K'&PARM EQ 0).ERR1
&NAME    JINST LA,R10,&FILE,FILE
         JINST LA,R11,&PARM
         L     R12,JMLC                 LOAD BASE
         BAL   R9,JWRITE(,R12)          GO TO JWRITE
         MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEND
./ ADD NAME=L$PACE
         MACRO
&LABEL   L$PACE &MF=I,&MSG=,&EXPMSG=,&DATA=,&SMF=,&UCB=,&F4DSCB=   @02C
         LCLC  &L         LOCAL LABEL VARIABLE
         LCLA  &NO        BRANCH INDEX NUMBER                      @L1M
         LCLB  &NFL1(8)   BITS TO 'AND' LSPACE FLAG1               @L1A
         LCLB  &OFL1(8)   BITS TO 'OR' LSPACE FLAG1                @L1A
         LCLA  &NMK1      USED TO RESET LSPACE FLAG1               @L1A
         LCLA  &OMK1      USED TO SET LSPACE FLAG1                 @L1A
         LCLB  &MFI       MF=I WAS SPECIFIED OR DEFAULTED
         LCLB  &MFE       MF=(E,..) WAS SPECIFIED
         LCLB  &MFL       MF=L WAS SPECIFIED
         LCLB  &MFLM      MF=(L,MSG) WAS SPECIFIED                 @L1A
.*
         LCLB  &MFLEM     MF=(L,EXPMSG) WAS SPECIFIED              @02A
.*
         LCLB  &MFLD      MF=(L,DATA) WAS SPECIFIED                @L1A
         LCLB  &MFD       MF=D WAS SPECIFIED                       @L1M
         LCLB  &MFDM      MF=(D,MSG) WAS SPECIFIED                 @L1A
.*
         LCLB  &MFDEM     MF=(D,EXPMSG) WAS SPECIFIED              @02A
.*
         LCLB  &MFDD      MF=(D,DATA) WAS SPECIFIED                @L1A
         LCLC  &SMFX      SMF VALUE FOR P.L. FLAG BYTE
         LCLB  &SMFN      SMF= WAS NOT SPECIFIED
         LCLB  &DATAA     DATA=ADDR WILL BE USED                   @L1M
         LCLB  &DATAR     DATA=(REG) WILL BE USED                  @L1M
         LCLB  &MSGA      MSG=ADDR WILL BE USED                    @L1A
         LCLB  &MSGR      MSG=(REG) WILL BE USED                   @L1A
.*
         LCLB  &EMSGA     EXPMSG=ADDR WILL BE USED                 @02A
         LCLB  &EMSGR     EXPMSG=(REG) WILL BE USED                @02A
.*
         LCLB  &FMT4A     F4DSCB=ADDR WILL BE USED                 @L1A
         LCLB  &FMT4R     F4DSCB=(REG) WILL BE USED                @L1A
         LCLB  &UCBA      UCB=ADDR WILL BE USED                    @L1A
         LCLB  &UCBR      UCB=(REG) WILL BE USED
         LCLB  &WARNSW    A WARNING ERROR WAS DETECTED
         LCLB  &ERRORSW   A MAJOR ERROR WAS DETECTED               @L1M
&NO      SETA  &SYSNDX                  SET BRANCH INDEX NUMBER
.*
.* ********************************************************************
.* *  VERIFICATION 1: MF PARAMETER
.* ********************************************************************
.*
.V1      AIF   ('&MF' EQ 'I').V1I       IF I FORM, BRANCH
         AIF   ('&MF'(1,2) EQ '(E').V1E IF E FORM, BRANCH
         AIF   ('&MF(1)' EQ 'L').V1L    IF L FORM, BRANCH          @L1C
         AIF   ('&MF(1)' NE 'D').V1ER1  IF NOT D FORM, ERROR       @L1C
.*                                                                 @L1A
&MFD     SETB  1                        SET MF=D SPECIFIED
         AIF   ('&MF' EQ 'D').V1X       IF MF=D, BRANCH            @L1C
         AIF   (N'&MF NE 2).V1ER1       IF NOT TWO PARMS, ERROR    @L1A
         AIF   ('&MF(2)' EQ 'MSG').V1DM IF MF=(D,MSG), BRANCH      @L1A
.*
         AIF   ('&MF(2)' EQ 'EXPMSG').V1DEM                        @02A
.*                                      IF MF=(D,EXPMSG), BRANCH   @02A
.*
         AIF   ('&MF(2)' NE 'DATA').V1ER1                          @L1A
.*                                      IF NOT MF=(D,DATA), ERROR  @L1A
&MFDD    SETB  1                        ELSE SET MF=(D,DATA) FOUND @L1A
         AGO   .V1X                       AND CONTINUE             @L1A
.V1DM    ANOP                                                      @L1A
.*
&MFDM    SETB  1                        SET MF=(D,MSG) FOUND       @L1A
.*
         AGO   .V1X                       AND CONTINUE             @02A
.*
.*                                                                 @02A
.V1DEM   ANOP                                                      @02A
&MFDEM   SETB  1                        SET MF=(D,EXPMSG) FOUND    @02A
.*
         AGO   .V1X                       AND CONTINUE             @L1A
.*                                                                 @L1A
.V1I     ANOP
&MFI     SETB  1                        SET MF=I SPECIFIED OR DEFAULTED
         AGO   .V1X                     AND CONTINUE
.*
.V1L     ANOP
&MFL     SETB  1                        SET MF=L SPECIFIED
         AIF   ('&MF' EQ 'L').V1X       IF NOT MF=L, BRANCH        @L1C
         AIF   (N'&MF NE 2).V1ER1       IF NOT TWO PARMS, ERROR    @L1A
         AIF   ('&MF(2)' EQ 'MSG').V1LM IF MF=(L,MSG), BRANCH      @L1A
.*
         AIF   ('&MF(2)' EQ 'EXPMSG').V1LEM                        @02A
.*                                      IF MF=(L,EXPMSG), BRANCH   @02A
.*
         AIF   ('&MF(2)' NE 'DATA').V1ER1                          @L1A
.*                                      IF NOT MF=(L,DATA), ERROR  @L1A
&MFLD    SETB  1                        ELSE SET MF=(L,DATA) FOUND @L1A
         AGO   .V1X                       AND CONTINUE             @L1A
.V1LM    ANOP                                                      @L1A
.*
&MFLM    SETB  1                        SET MF=(L,MSG) FOUND       @L1A
.*
         AGO   .V1X                       AND CONTINUE             @L1A
.*
.*                                                                 @02A
.V1LEM   ANOP                                                      @02A
&MFLEM   SETB  1                        SET MF=(L,EXPMSG) FOUND    @02A
         AGO   .V1X                       AND CONTINUE             @02A
.*                                                                 @02A
.*
.V1E     ANOP
&MFE     SETB  1                        SET MF=E SPECIFIED
         AIF   (N'&MF EQ 2).V1X         IF TWO PARMS ON MF, BRANCH
         AIF   (N'&MF EQ 1).V1ER2       IF ONE PARM, BRANCH, ERROR
.V1ER1   ANOP
         SPACE 1
         MNOTE 8,'*** INVALID OPERAND - MF=&MF'
         AGO   .V1ERX                   GO SET ERROR FLAG
.*
.V1ER2   ANOP
         SPACE 1
         MNOTE 8,'*** MF=(E,ADDR) FORM: SUPPLY PARAMETER LIST ADDRESS'
.V1ERX   ANOP
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V1X     ANOP
.*
.* ********************************************************************
.* *  V2: DATA= PARAMETER
.* ********************************************************************
.*
.V2      ANOP
&NFL1(3) SETB  ('&DATA' EQ '')          SET 'AND' BIT              @L1A
         AIF   ('&DATA' EQ '').V2X      IF DATA NOT GIVEN, BRANCH  @L1C
         AIF   (&MFD).V2NOTE            IF D FORM, BRANCH, WARNING
         AIF   (&MFLM OR &MFLD).V2NOTE  IF MF=(L,_), WARNING       @L1A
.*
         AIF   (&MFLEM).V2NOTE          IF MF=(L,_), WARNING MSG   @02A
.*
&OFL1(3) SETB  1                        DATA RETURN AREA SPECIFIED @L1A
         AIF   ('&DATA'(1,1) EQ '(').V2R IF DATA=(REG), BRANCH
&DATAA   SETB  1                        ELSE SET DATA=ADDR
         AGO   .V2X                       AND CONTINUE
.*
.V2R     AIF   (&MFL).V2NOTE            IF L FORM, BRANCH, WARNING
         AIF   (N'&DATA NE 1).V2ER1     IF NE ONE PARM, BRANCH, ERROR
&DATAR   SETB  1                        SET DATA=(REG)
         AGO   .V2X                     AND CONTINUE
.*
.V2ER1   ANOP
         SPACE 1
         MNOTE 8,'*** INVALID OPERAND - DATA=&DATA'
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V2NOTE  ANOP
&WARNSW  SETB  1                        SET WARNING SWITCH ON
.V2X     ANOP
.*
.* ********************************************************************
.* *  V3: SMF=   PARAMETER
.* ********************************************************************
.*
.V3      ANOP
&NFL1(1) SETB  ('&SMF' EQ '')           SET 'AND' BIT              @L1C
&NFL1(2) SETB  (&NFL1(1))               SET 'AND' BIT              @L1C
         AIF   ('&SMF' EQ '').V3X       IF SMF NOT GIVEN, BRANCH
         AIF   (&MFD).V3NOTE            IF D FORM, BRANCH, WARNING
         AIF   (&MFLM OR &MFLD).V3NOTE  IF MF=(L,_), WARNING       @L1A
.*
         AIF   (&MFLEM).V3NOTE          IF MF=(L,_), WARNING MSG   @02A
.*
         AIF   ('&SMF' EQ 'NONE').V3X   IF SMF=NONE, BRANCH        @L1C
         AIF   ('&SMF' EQ 'TEST').V3T   IF SMF=TEST, BRANCH
         AIF   ('&SMF' NE 'YES').V3ER1  IF NOT SMF=YES, BRANCH, ERROR
&OFL1(1) SETB  1                        ELSE SET SMF=YES SPECIFIED @L1C
         AGO   .V3X                       AND CONTINUE
.*
.V3T     ANOP
&OFL1(2) SETB  1                        SET SMF=TEST SPECIFIED     @L1A
.*                                                                3@L1D
         AGO   .V3X                       AND CONTINUE
.*
.V3ER1   ANOP
         SPACE 1
         MNOTE 8,'*** INVALID OPERAND - SMF=&SMF'
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V3NOTE  ANOP
&WARNSW  SETB  1                        SET WARNING SWITCH ON
.V3X     ANOP
.*
.* ********************************************************************
.* *  V4: UCB= PARAMETER
.* ********************************************************************
.*
.V4      AIF   ('&UCB' EQ '').V4N       IF UCB NOT GIVEN, BRANCH
         AIF   (&MFD OR &MFL).V4NOTE    IF D OR L FORM, GO SET WARNING
         AIF   ('&UCB'(1,1) NE '(').V4A IF UCB=ADDR, BRANCH        @L1C
         AIF   (N'&UCB NE 1).V4ER1      IF NE ONE PARM, BRANCH, ERROR
&UCBR    SETB   1                       ELSE SET UCB=(REG)
         AGO   .V4X                       AND CONTINUE
.*
.V4N     AIF   (&MFI).V4ER2             IF STANDARD FORM, BRANCH, ERROR
         AGO   .V4X                     ELSE, BRANCH, CONTINUE
.*
.V4A     ANOP                                                      @L1A
&UCBA    SETB   1                       SET UCB=ADDR               @L1A
         AGO   .V4X                     BRANCH, CONTINUE           @L1A
.*
.V4ER1   ANOP
         SPACE 1
         MNOTE 8,'*** INVALID OPERAND - UCB=&UCB'
         AGO   .V4ERX                   GO SET ERROR FLAG
.*
.V4ER2   ANOP
         SPACE 1
         MNOTE 8,'*** UCB IS A REQUIRED PARAMETER'
.V4ERX   ANOP
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V4NOTE  ANOP
&WARNSW  SETB  1                        SET WARNING SWITCH ON
.V4X     ANOP
.*
.* ********************************************************************
.* *  V5: MSG= PARAMETER
.* ********************************************************************
.*
.V5      ANOP                                                      @L1A
&NFL1(4) SETB  ('&MSG' EQ '')           SET 'AND' BIT              @02A
         AIF   ('&MSG' EQ '').V4XA      IF MSG NOT SPECIFIED, BR   @02C
&NFL1(3) SETB  0                        RESET 'AND' BIT            @L1A
&NFL1(5) SETB  0                        RESET 'AND' BIT            @02A
         AIF   (&OFL1(3)).V5ER2         IF DATA SPECIFIED, ERROR   @L1A
         AIF   (&MFD).V5NOTE            IF D FORM, WARNING         @L1A
         AIF   (&MFLM OR &MFLD).V5NOTE  IF MF=(L,_), WARNING       @L1A
.*
         AIF   (&MFLEM).V5NOTE          IF MF=(L,_), WARNING       @02A
&OFL1(4) SETB 1                         MESSAGE AREA SPECIFIED     @02A
.*
         AIF   ('&MSG'(1,1) EQ '(').V5R IF MSG=(REG), BRANCH       @L1A
&MSGA   SETB  1                         ELSE SET MSG=ADDR          @L1A
         AGO   .V4XA                      AND CONTINUE             @02C
.*                                                                 @L1A
.V5R     AIF   (&MFL).V5NOTE            IF L FORM, WARNING         @L1A
         AIF   (N'&MSG NE 1).V5ER1      IF NE ONE PARM, ERROR      @L1A
&MSGR    SETB 1                         SET MSG=(REG)              @L1A
         AGO   .V4XA                      AND CONTINUE             @02C
.*                                                                 @L1A
.V5ER1   ANOP                                                      @L1A
         SPACE 1                                                   @L1A
         MNOTE 8,'*** INVALID OPERAND - MSG=&MSG'                  @L1A
         SPACE 1                                                   @L1A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @L1A
         AGO   .V5NOTE                    AND CONTINUE             @L1A
.V5ER2   ANOP                                                      @L1A
         SPACE 1                                                   @L1A
         MNOTE 8,'*** DATA AND MSG KEYWORDS ARE MUTUALLY EXCLUSIVE'
         SPACE 1                                                   @L1A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @L1A
.V5NOTE  ANOP                                                      @L1A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @L1A
.V4XA    ANOP                                                      @02A
.*                                                                 @02A
.* *************************************************************** @02A
.* *  V5A: EXPMSG= PARAMETER                                       @02A
.* *************************************************************** @02A
.*                                                                 @02A
.V5A     ANOP                                                      @02A
&NFL1(5) SETB  ('&EXPMSG' EQ '')        SET 'AND' BIT              @02A
         AIF   ('&EXPMSG' EQ '').V5X    EXPMSG NOT SPECIFIED, BR   @02A
&NFL1(3) SETB  0                        RESET 'AND' BIT            @02A
&NFL1(4) SETB  0                        RESET 'AND' BIT            @02A
         AIF   (&OFL1(3)).V5AER2        IF DATA SPECIFIED, ERROR   @02A
         AIF   (&OFL1(4)).V5AER2        IF MSG SPECIFIED,  ERROR   @02A
         AIF   (&MFD).V5ANOTE           IF D FORM, WARNING         @02A
         AIF   (&MFLM OR &MFLD).V5ANOTE IF MF=(L,_), WARNING       @02A
         AIF   (&MFLEM).V5ANOTE         IF MF=(L,_), WARNING       @02A
.*
&OFL1(5) SETB 1                EXPANDED MESSAGE AREA SPECIFIED     @02A
.*
         AIF   ('&EXPMSG'(1,1) EQ '(').V5AR   EXPMSG=(REG), BRANCH @02A
&EMSGA  SETB  1                         ELSE SET EXPMSG=ADDR       @02A
         AGO   .V5X                       AND CONTINUE             @02A
.*                                                                 @02A
.V5AR    AIF   (&MFL).V5ANOTE           IF L FORM, WARNING         @02A
         AIF   (N'&EXPMSG NE 1).V5AER1  IF NE ONE PARM, ERROR      @02A
&EMSGR  SETB  1                         SET EXPMSG=(REG)           @02A
         AGO   .V5X                       AND CONTINUE             @02A
.*                                                                 @02A
.V5AER1  ANOP                                                      @02A
         SPACE 1                                                   @02A
         MNOTE 8,'*** INVALID OPERAND - MSG=&MSG'                  @02A
         SPACE 1                                                   @02A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @02A
         AGO   .V5ANOTE                   AND CONTINUE             @02A
.V5AER2  ANOP                                                      @02A
         SPACE 1                                                   @02A
         MNOTE 8,'*** DATA, MSG, AND EXPMSG ARE MUTUALLY EXCLUSIVE'@02A
         SPACE 1                                                   @02A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @02A
.V5ANOTE ANOP                                                      @02A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @02A
.*
.V5X     ANOP                                                      @L1A
.*
.* ********************************************************************
.* *  V6: F4DSCB= PARAMETER
.* ********************************************************************
.*
.V6      ANOP
         AIF   ('&F4DSCB' EQ '').V6X    IF F4DSCB=, BRANCH         @L1A
         AIF   (&MFD).V6NOTE            IF D FORM, WARNING         @L1A
         AIF   (&MFLM OR &MFLD).V6NOTE  IF MF=(L,_), WARNING       @L1A
.*
         AIF   (&MFLEM).V6NOTE          IF MF=(L,_), WARNING       @02A
.*
         AIF   ('&F4DSCB'(1,1) EQ '(').V6R IF F4DSCB=(REG), BRANCH @L1A
&FMT4A   SETB  1                        ELSE SET F4DSCB=ADDR       @L1A
         AGO   .V6X                       AND CONTINUE             @L1A
.*                                                                 @L1A
.V6R     AIF   (&MFL).V6NOTE            IF L FORM, WARNING         @L1A
         AIF   (N'&F4DSCB NE 1).V6ER1   IF NE ONE PARM, ERROR      @L1A
&FMT4R   SETB  1                        SET F4DSCB=(REG)           @L1A
         AGO   .V6X                       AND CONTINUE             @L1A
.*                                                                 @L1A
.V6ER1   ANOP                                                      @L1A
         SPACE 1                                                   @L1A
         MNOTE 8,'*** INVALID OPERAND - F4DSCB=&F4DSCB'            @L1A
         SPACE 1                                                   @L1A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @L1A
.V6NOTE  ANOP                                                      @L1A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @L1A
.V6X     ANOP                                                      @L1A
.*
.* ********************************************************************
.* *  CHECK ERRORS
.* ********************************************************************
.*
         AIF   (&ERRORSW EQ 0).CONT     IF NO MAJOR ERROR, BRANCH
&LABEL   DS    0F  *** INVALID OPERAND(S) FOUND IN MACRO EXPANSION.***
         AGO   .FINISH
.*
.CONT    AIF   (&WARNSW EQ 0).BLD       IF NO WARNING ERROR, BRANCH
         SPACE 1
     MNOTE 4,'*** ONE OR MORE PARAMETERS IGNORED DUE TO MF=&MF'
         SPACE 1
.BLD     ANOP
&NMK1    SETA  128*&NFL1(1)+64*&NFL1(2)+32*&NFL1(3)                @L1A
&NMK1    SETA  &NMK1+16*&NFL1(4)+8*&NFL1(5)                        @02A
.*
&OMK1    SETA  128*&OFL1(1)+64*&OFL1(2)+32*&OFL1(3)                @L1A
&OMK1    SETA  &OMK1+16*&OFL1(4)+8*&OFL1(5)                        @02A
.*
         AIF   (&MFI).I1                IF I FORM, BRANCH
         AIF   (&MFE).E1                IF E FORM, BRANCH
&L       SETC  '&LABEL'                 ELSE ASSUME A LABEL WAS GIVEN
         AIF   ('&L' NE '').TSTDL         IF A LABEL WAS GIVEN, BRANCH
&L       SETC  'LSPA&NO.S'                ELSE CONSTRUCT A LABEL
.TSTDL   AIF   (&MFD).D1                    IF D FORM, BRANCH
         AGO   .L1                          ELSE GO BUILD L FORM
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR STANDARD FORM OF MACRO
.* ********************************************************************
.*
.I1      ANOP
&L       SETC  'LSPA&NO.S'              CONSTRUCT A LABEL FOR P.L.
         CNOP  0,4                      STANDARD FORM OF LSPACE MACRO
&LABEL   LA    1,&L                     R1 -> PARAMETER LIST       @01C
         B     LSPA&NO.E                BRANCH AROUND PARAMETER LST@01A
         AGO   .L2                      GO TO LIST FORM FOR PARM LIST
.L1      ANOP                           START P.L. FOR LIST FORM   @L1M
         DS    0F                                                  @L1M
         AIF   (&MFLD).LDATA            BUILD DATA LIST FORM       @L1A
         AIF   (&MFLM).LMSG             BUILD MSG LIST FORM        @L1A
.*
         AIF   (&MFLEM).ELMSG           BUILD EXPANDED LIST FORM   @02A
.*
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR LIST FORM OF MACRO (PARAMETER LIST)
.* ********************************************************************
.*
.L2      ANOP                           START P.L. FOR STANDARD FORM
&L       DC    CL4'LSPA'                EBCDIC 'LSPA' FOR LSPACE
         DC    AL2(LSPA&NO.E-&L)        LENGTH OF PARAMETER LIST
         DC    AL1(&OMK1)               PARAMETER FLAG BYTE        @L1C
         DC    XL1'00'                  RESERVED                   @L1C
         DS    0F                       DIAGNOSTIC INFORMATION     @L1A
         DC    XL1'00'                  LSPACE RETURN CODE         @L1C
         DC    XL1'00'                  SUBFUNCTION ID             @L1A
         DC    XL1'00'                  SUBFUNCTION RETURN CODE    @L1A
         DC    XL1'00'                  SUBFUNCTION REASON CODE    @L1A
         DC    A(0)                     UCB ADDRESS                @L1C
.*
         AIF   (&DATAA).L3              IF DATA=ADDR, BRANCH
         AIF   (&MSGA).L4               IF MSG=ADDR, BRANCH        @L1A
         AIF   (&EMSGA).L4A
         DC    A(0)                     ADDR OF EXPMSG,MSG OR DATA @L1C
         AGO   .L5                      BRANCH AROUND              @L1C
.L3      ANOP
         DC    A(&DATA)                 ADDRESS OF DATA            @L1A
         AGO   .L5                      BRANCH AROUND              @L1A
.L4      ANOP
         DC    A(&MSG)                  ADDRESS OF MESSAGE         @L1A
         AGO   .L5                      BRANCH AROUND              @02A
.L4A     ANOP                                                      @02A
         DC    A(&EXPMSG)               ADDRESS OF EXPANDED MSG    @02A
.L5      ANOP                                                      @L1A
*                                         RETURN AREA (OR ZERO)    @L1C
.*
         AIF   (&FMT4A).L6              IF F4DSCB=ADDR, BRANCH     @L1A
         DC    A(0)                     ADDRESS OF FORMAT 4 DSCB   @L1A
         AGO   .L7                      BRANCH AROUND F4DSCB=ADDR  @L1A
.L6      ANOP                                                      @L1A
         DC    A(&F4DSCB)               ADDRESS OF FORMAT 4 DSCB   @L1A
.L7      ANOP                                                      @L1A
*                                         RETURN AREA (OR ZERO)    @L1A
.*
LSPA&NO.E EQU  *                        END OF PARAMETER LIST
         AIF   (&MFI).E4                IF MF=I, BRANCH            @L1C
         AGO   .FINISH                  ELSE LIST FORM IS DONE
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR LIST FORM OF MACRO (DATA RETURN AREA)
.* ********************************************************************
.*
.LDATA   ANOP                           START OF DATA RETURN AREA  @L1A
&L       DC    XL1'00'                  RETURN AREA STATUS BYTE    @L1A
         DC    XL1'00'                  VOLUME STATUS BYTE         @L1A
         DC    XL2'00'                  RESERVED                   @L1A
         DC    F'0'                     NUMBER OF FREE EXTENTS     @L1A
         DC    F'0'                     TOTAL FREE CYLINDERS       @L1A
         DC    F'0'                     TOTAL ADDITIONAL FREE TRKS @L1A
         DC    F'0'                     NUMBER OF CYLINERS IN      @L1A
*                                        LARGEST FREE EXTENT       @L1A
         DC    F'0'                     NUMBER OF ADDL TRACKS IN   @L1A
*                                        LARGEST FREE EXTENT       @L1A
         DC    F'0'                     FORMAT 0 COUNT             @L1A
         DC    F'0'                     FREE VIR COUNT             @L1A
         DC    F'0'                     FRAGMENTATION INDEX        @L1A
         AGO   .FINISH                  LIST FORM IS DONE          @L1A
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR LIST FORM OF MACRO (MESSAGE RETURN AREA)
.* ********************************************************************
.*
.LMSG    ANOP                           START OF MSG RETURN AREA   @L1A
&L       DC    CL30' '                  MESSAGE TEXT               @L1A
         AGO   .FINISH                  LIST FORM IS DONE          @L1A
.*
.*                                                                 @02A
.* ****************************************************************@02A
.* *  BEGIN BUILD FOR LIST FORM OF MACRO (EXPANDED MESSAGE AREA)   @02A
.* ****************************************************************@02A
.*                                                                 @02A
.ELMSG   ANOP                        START OF EXPMSG RETURN AREA   @02A
&L       DC    CL40' '               MESSAGE TEXT                  @02A
         AGO   .FINISH               LIST FORM IS DONE             @02A
.*
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR EXECUTE FORM OF MACRO
.* ********************************************************************
.*
.E1      AIF   ('&LABEL' EQ '').E2      IF NO LABEL GIVEN, BRANCH
&LABEL   DS    0H
.E2      ANOP
         AIF   ('&MF(2)' EQ '(1)').E3   IF MF=(E,(1)), BRANCH      @L1A
         IHBINNRA &MF(2)                GET PARM LIST ADDR IN REG 1
.E3      ANOP                           START P.L. MOD FOR STD FORM
.*                                                                2@L2D
         NI    6(1),&NMK1               SET FLAGS OFF              @L1A
         AIF   (&OMK1 EQ 0).E4          IF NO FLAGS TO SET, BRANCH @L1A
         OI    6(1),&OMK1               SET FLAGS ON               @L1A
.*
.E4      ANOP                                                      @L1C
         AIF   (&UCBR).E5               IF UCB=(REG), BRANCH       @L1A
         AIF   (&UCBA EQ 0).E6          IF NOT UCB=ADDR, BRANCH    @L1A
         L     15,&UCB                  GET VALUE OF UCB=          @L1A
         ST    15,12(,1)                AND STORE IN PARM LIST     @L1A
         AGO   .E6                                                 @L1A
.E5      ANOP
         ST    &UCB(1),12(,1)           STORE UCB PTR IN PARM LIST @L1C
.*
.E6      ANOP                                                      @L1A
         AIF   (&DATAR).E7              IF DATA=(REG), BRANCH      @L1C
         AIF   (&MFI OR &DATAA EQ 0).E8 IF MF=I OR DATA=, BRANCH   @L1C
         LA    15,&DATA                 GET VALUE OF DATA=
         ST    15,16(,1)                AND STORE IN PARM LIST     @L1C
         AGO   .E8                      BRANCH AROUND DATA=(REG)   @L1C
.E7      ANOP                                                      @L1C
         ST    &DATA(1),16(,1)          STORE DATA VALUE IN P.L.   @L1C
.*
.E8      ANOP                                                      @L1A
         AIF   (&MSGR).E9               IF MSG=(REG), BRANCH       @L1A
         AIF   (&MFI OR &MSGA EQ 0).E8A IF MF=I OR MSG=, BRANCH    @02C
         LA    15,&MSG                  GET VALUE OF MSG=          @L1A
         ST    15,16(,1)                AND STORE IN PARM LIST     @L1A
         AGO   .E10                     BRANCH AROUND MSG=(REG)    @L1A
.E9      ANOP                                                      @L1A
         ST    &MSG(1),16(,1)           STORE MSG VALUE IN P.L.    @L1A
.*
.*
.*                                                                 @02A
.E8A     ANOP                                                      @02A
         AIF   (&EMSGR).E9A              IF EXPMSG=(REG), BRANCH   @02A
         AIF   (&MFI OR &EMSGA EQ 0).E10 IF MF=I OR EXPMSG=, BRANCH@02A
.*                                                                 @02A
         LA    15,&EXPMSG               GET VALUE OF EXPMSG=       @02A
         ST    15,16(,1)                AND STORE IN PARM LIST     @02A
         AGO   .E10                     BRANCH AROUND MSG=(REG)    @02A
.E9A     ANOP                                                      @02A
         ST    &EXPMSG(1),16(,1)        STORE EXPMSG VALUE IN P.L. @02A
.*                                                                 @02A
.*
.E10     ANOP                                                      @L1A
         AIF   (&FMT4R).E11             IF F4DSCB=(REG), BRANCH    @L1A
         AIF   (&MFI OR &FMT4A EQ 0).E12 IF MF=I OR DATA=, BRANCH  @L1A
         LA    15,&F4DSCB               GET VALUE OF F4DSCB=       @L1A
         ST    15,20(,1)                AND STORE IN PARM LIST     @L1A
         AGO   .E12                     BRANCH AROUND F4DSCB=(REG) @L1A
.E11     ANOP                                                      @L1A
         ST    &F4DSCB(1),20(,1)        STORE F4DSCB VALUE IN P.L. @L1A
.*
.E12     ANOP                                                      @L1A
         SLR   0,0                      INDENTIFY P.L. TO DADSM ENTRY
         SVC   78                       ISSUE THE LSPACE SVC
         AGO   .FINISH                  EXECUTE AND STANDARD FORMS DONE
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR DSECTS
.* ********************************************************************
.*
.D1      ANOP                                                      @L1M
         AIF   (&MFDD).DDATA            IF MF=(D,DATA), BRANCH     @L1A
         AIF   (&MFDM).DMSG             IF MF=(D,MSG), BRANCH      @L1A
.*
         AIF   (&MFDEM).DEMSG           IF MF=(D,EXPMSG), BRANCH   @02A
.*
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR DSECT FORM OF MACRO (PARAMETER LIST)
.* ********************************************************************
.*
&L       DSECT                          DSECT FOR PARAMETER LIST
LSPAPLID DS    CL4                      EBCDIC 'LSPA' FOR LSPACE
LSPANGTH DS    AL2                      LENGTH OF PARAMETER LIST
LSPAFLAG DS    XL1                      PARAMETER FLAG BYTE        @L1C
LSPASMFY EQU   X'80'                    BUILD SMF RECORD TYPE 19
LSPASMFT EQU   X'40'                    BUILD SMF RECORD TYPE 19   @L1C
*                                       IF SMF VOL INFO REQUESTED  @L1C
LSPADATA EQU   X'20'                    FREE SPACE DATA REQUEST    @L1A
*
LSPAMSG  EQU   X'10'                    MESSAGE DATA REQUESTED     @02A
LSPAEMSG EQU   X'08'                    EXPANDED MESSAGE DATA  REQ @02A
LSPARSVB EQU   X'07'                    RESERVED                   @02C
*
LSPARSVD DS    XL1                      RESERVED                   @L1C
LSPADIAG DS    0F                       DIAGNOSTIC INFORMATION     @L1A
LSPAERCD DS    XL1                      LSPACE RETURN CODE         @L1C
LSPASFID DS    XL1                      SUBFUNCTION ID             @L1A
LSPASF00 EQU   X'00'                    PROCESSING COMPLETE        @P1C
LSPASF01 EQU   X'01'                    VALIDATE PARAMETERS        @P1C
LSPASF02 EQU   X'02'                    CHECK UCB STATUS           @P1C
LSPASF03 EQU   X'03'                    ENQ ON SYSZDMNT            @P1C
LSPASF04 EQU   X'04'                    CAPTURE UCB                @L3A
*                                                                 2@L2D
LSPASF06 EQU   X'06'                    READ VOLUME LABEL          @P1C
LSPASF80 EQU   X'80'                    READ F4 DSCB & SPACE MAPS  @P1C
LSPASF81 EQU   X'81'                    GET FREE EXTENTS           @P1C
LSPASF82 EQU   X'82'                    GET F0 DSCB COUNT          @P1C
LSPASF83 EQU   X'83'                    GET VIR COUNT              @P1C
LSPASF84 EQU   X'84'                    CHECK FOR VRF DATA         @P1C
LSPASFRT DS    XL1                      SUBFUNCTION RETURN CODE    @L1A
LSPASFRS DS    XL1                      SUBFUNCTION REASON CODE    @L1A
LSPARS01 EQU   X'01'                    CHECK PARM LIST STORAGE KEY@L1A
LSPARS02 EQU   X'02'                    CHECK PARM LIST ID         @L1A
LSPARS03 EQU   X'03'                    CHECK LSPACE FLAG BYTE     @L1A
LSPARS04 EQU   X'04'                    CHECK AUTH FOR SMF FLAGS   @L1A
LSPARS05 EQU   X'05'                    CHECK MSG/DATA RETURN AREA @L1A
*                                         STORAGE KEY              @L1C
LSPARS06 EQU   X'06'                    CHECK F4 DSCB RETURN AREA  @L1A
*                                         STORAGE KEY              @L1C
LSPARS07 EQU   X'07'                    CHECK UCB ADDRESS          @L1A
LSPARS08 EQU   X'08'                    CHECK FOR VIRTUAL UCB ADDR @L1A
LSPARS09 EQU   X'09'                    CHECK FOR ZERO VTOC PTR    @L1A
LSPAUCB  DS    A                        UCB ADDRESS                @L1C
LSPAFRSP DS    A                        ADDRESS OF MESSAGE OR DATA @L1C
*                                         RETURN AREA              @L1C
LSPAFMT4 DS    A                        ADDRESS OF FORMAT 4 DSCB   @L1A
*                                         RETURN AREA              @L1A
LSPAEND  EQU   *                        END OF PARAMETER LIST
LSPALEN  EQU   LSPAEND-&L               LENGTH OF PARAMETER LIST
         AGO   .FINISH                                             @L1A
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR DSECT FORM OF MACRO (DATA RETURN AREA)
.* ********************************************************************
.*
.DDATA   ANOP                                                      @L1A
&L       DSECT                          DSECT FOR DATA RETURN AREA @L1A
LSPDRETN DS    XL1                      RETURN AREA STATUS BYTE    @L1A
LSPDSPAC EQU   X'80'                    RETURNED SPACE INFORMATION @L1A
LSPDF0CN EQU   X'40'                    RETURNED F0 DSCB COUNT     @L1A
LSPDVRCN EQU   X'20'                    RETURNED FREE VIR COUNT    @L1A
LSPDRRES EQU   X'1F'                    RESERVED                   @L1A
LSPDSTAT DS    XL1                      VOLUME STATUS BYTE         @L1A
LSPDIXDS EQU   X'80'                    INDEX EXISTS FOR VTOC      @L1A
LSPDIXAC EQU   X'40'                    INDEX VTOC ACTIVE          @L1A
LSPDSRES EQU   X'2F'                    RESERVED                   @L1A
LSPDRSV1 DS    XL2                      RESERVED                   @L1A
LSPDNEXT DS    F                        NUMBER OF FREE EXTENTS     @L1A
LSPDTCYL DS    F                        TOTAL FREE CYLINDERS       @L1A
LSPDTTRK DS    F                        TOTAL ADDITIONAL FREE TRKS @L1A
LSPDLCYL DS    F                        NUMBER OF CYLINERS IN      @L1A
*                                        LARGEST FREE EXTENT       @L1A
LSPDLTRK DS    F                        NUMBER OF ADDL TRACKS IN   @L1A
*                                        LARGEST FREE EXTENT       @L1A
LSPDF0S  DS    F                        FORMAT 0 COUNT             @L1A
LSPDVIRS DS    F                        FREE VIR COUNT             @L1A
LSPDFRAG DS    F                        FRAGMENTATION INDEX        @L1A
         AGO   .FINISH                  LIST FORM IS DONE          @L1A
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR DSECT FORM OF MACRO (MESSAGE RETURN AREA)
.* ********************************************************************
.*
.DMSG    ANOP                                                      @L1A
&L       DSECT                          DSECT FOR MSG RETURN AREA  @L1A
LSPMTEXT DS    CL30                     MESSAGE TEXT               @L1A
         AGO   .FINISH                  LIST FORM IS DONE          @02A
.*
.*                                                                 @02A
.* *************************************************************** @02A
.* *  BEGIN BUILD FOR DSECT FORM OF MACRO (MESSAGE RETURN AREA)    @02A
.* *************************************************************** @02A
.*                                                                 @02A
.DEMSG   ANOP                                                      @02A
&L       DSECT                       DSECT FOR EXPMSG RETURN AREA  @02A
LSPETEXT DS    CL40                  MESSAGE TEXT                  @02A
.*
.FINISH  ANOP
         MEND
./ ADD NAME=LABEL
         MACRO
&NAME    LABEL &UNIT,&DDNAME,&LABEL,&NO,&LNGTH,&CNTRL,&LABELA,         X
               &UNLOAD,&MF=I
         LCLA  &A
         LCLB  &BB,&B(8)
         LCLC  &C
&BB      SETB  ('&UNLOAD' EQ 'UNLOAD')
         AIF   ('&MF(1)' EQ 'E').EROUT
         AIF   ('&MF' NE 'L').CNOP
&NAME    DS    0F                      BUILD LIST ON FULL WORD BDY
         AGO   .UNL
.CNOP    CNOP  0,4
&NAME    BAL   1,*+24                  BRANCH AROUND PARM LIST
.UNL     DC    AL1(192)                CONSTANT OF X'C0'
         DC    BL2'1&BB.0'             REWIND OR UNLOAD OPTION
         AIF   ('&UNIT' EQ '' AND '&MF' EQ 'L').ZERUN
         AIF   ('&UNIT' EQ '').E1
         AIF   ('&UNIT'(1,1) EQ '(').ZERUN
         DC    AL1(&UNIT)              UNIT NUMBER
         AGO   .DD
.ZERUN   DC    AL1(0)                  UNIT NUMBER
.DD      AIF   ('&DDNAME' EQ '' AND '&MF' EQ 'L').ZERDD
         AIF   ('&DDNAME' EQ '').E2
         AIF   ('&DDNAME'(1,1) EQ '(').ZERDD
         DC    A(&DDNAME)              DDNAME ADDRESS
         AGO   .LAB
.ZERDD   DC    A(0)                    DDNAME ADDRESS
.LAB     AIF   ('&LABEL' EQ '' AND '&MF' EQ 'L').ZERLB
         AIF   ('&LABEL' EQ '').E3
         AIF   ('&LABEL'(1,1) EQ '(').ZERLB
         DC    A(&LABEL)               LABEL ADDRESS
         AGO   .LEN
.ZERLB   DC    A(0)                    LABEL ADDRESS
.LEN     AIF   ('&LNGTH' EQ '' AND '&MF' EQ 'L').ZERLN
         AIF   ('&LNGTH' EQ '').E5
         AIF   ('&LNGTH'(1,1) EQ '(').ZERLN
         DC    AL2(&LNGTH)             LABEL LENGTH
         AGO   .NUM
.ZERLN   DC    AL2(0)                  LABEL LENGTH
.NUM     AIF   ('&NO' EQ '' AND '&MF' EQ 'L').ZERNO
         AIF   ('&NO' EQ '').E4
         AIF   ('&NO'(1,1) EQ '(').ZERNO
         DC    AL1(&NO)                NUMBER OF LABELS
         AGO   .CODE
.ZERNO   DC    AL1(0)                  NUMBER OF LABELS
.CODE    AIF   ('&CNTRL' EQ '').E6
&A       SETA  K'&CNTRL
&C       SETC  '&CNTRL'(&A,1)
&A       SETA  &C
         AIF   ('&CNTRL'(1,1) EQ '9').NINE
         AIF   (&A GE 3).E7
&B(1)    SETB  (&A EQ 2)
&B(2)    SETB  (&A EQ 1)
         AIF   ('&CNTRL'(1,1) NE '7').E7
         AIF   ('&CNTRL'(2,1) NE 'C' AND '&CNTRL'(2,1) NE 'E' AND '&CNTX
               RL'(2,1) NE 'T').E7
         AIF   ('&CNTRL'(2,1) EQ 'C').CONV
&B(3)    SETB  1
&B(5)    SETB  ('&CNTRL'(2,1) EQ 'T')
         AIF   (NOT &B(5)).PUT
         AIF   (K'&CNTRL NE 3).PUT
&B(4)    SETB  1
.PUT     AIF   ('&MF(1)' NE 'E').DCCD
&A       SETA  128*&B(1)+64*&B(2)+32*&B(3)+16*&B(4)+8*&B(5)+3
         MVI   15(1),&A                MOVE MODE TO PARM LIST
         AGO   .SVC
.DCCD    DC    BL1'&B(1)&B(2)&B(3)&B(4)&B(5).011'          MODE
         AIF   ('&LABELA' NE '').VAL                             PM0051
         AIF   ('&LABEL' EQ '' AND '&MF' EQ 'L').ZERVAL          PM0051
         AIF   ('&LABEL' EQ '').E3                               PM0051
         AIF   ('&LABEL'(1,1) EQ '(').ZERVAL                     PM0051
         DC    A(&LABEL)               ADDRESS OF EBCDIC LABEL   PM0051
         AGO   .PASSA                                            PM0051
.VAL     AIF   ('&LABELA'(1,1) EQ '(').ZERVAL                    PM0051
         DC    A(&LABELA)              ADDRESS OF EBCDIC LABEL   PM0051
         AGO   .PASSA                                            PM0051
.ZERVAL  DC    A(0)                    ADDRESS OF EBCDIC LABEL   PM0051
.PASSA   ANOP                                                    PM0051
         AIF   ('&MF' EQ 'L').MEXIT
         AIF   ('&UNIT' EQ '').NORUN
         AIF   ('&UNIT'(1,1) NE '(').NORUN
         STC   &UNIT(1),3(0,1)         UNIT NUMBER MOVED TO LIST
.NORUN   AIF   ('&DDNAME' EQ '').NORDD
         AIF   ('&DDNAME'(1,1) NE '(').NORDD
         ST    &DDNAME(1),4(0,1)       STORE DDNAME ADDRESS
.NORDD   AIF   ('&LABEL' EQ '').NORLB
         AIF   ('&LABEL'(1,1) NE '(').NORLB
         ST    &LABEL(1),8(0,1)        STORE VOLUME SET LABEL ADDR
.NORLB   AIF   ('&LNGTH' EQ '').NORLN
         AIF   ('&LNGTH'(1,1) NE '(').NORLN
         STH   &LNGTH(1),12(0,1)       STORE LABEL LENGTH
.NORLN   AIF   ('&NO' EQ '').NORNO                               PM0051
         AIF   ('&NO'(1,1) NE '(').NORNO                         PM0051
         STC   &NO(1),14(0,1)          STORE NUMBER OF LABELS    PM0051
.NORNO   AIF   ('&LABELA' NE '').CKLAB                           PM0051
         AIF   ('&LABEL' EQ '').SVC                              PM0051
         AIF   ('&LABEL'(1,1) NE '(').SVC                        PM0051
         ST    &LABEL(1),16(0,1)       STORE VOL PRINT LABEL     PM0051
         AGO   .SVC                                              PM0051
.CKLAB   AIF   ('&LABELA'(1,1) NE '(').SVC                       PM0051
         ST    &LABELA(1),16(0,1)      STORE VOL PRINT LABEL     PM0051
.SVC     SVC   39                      LABEL SVC
.MEXIT   MEXIT
.NINE    ANOP
         AIF   (K'&CNTRL EQ 1).BNINE
         AIF   ('&CNTRL'(2,1) NE 'D').E7
         AIF   (&A LT 2 OR &A GT 3).E7
&B(1)    SETB  1
&B(2)    SETB  1
&B(5)    SETB  (&A EQ 2)
         AGO   .PUT
.BNINE   ANOP
&B(5)    SETB  1
.CONV    ANOP
&B(4)    SETB  1
         AGO   .PUT
.BOTH    AIF   ('&LNGTH'(1,1) EQ '(' OR '&NO'(1,1) EQ '(').ELN
         B     *+8                     BRANCH AROUND CONSTANTS
         DC    AL2(&LNGTH)             LABEL LENGTH
         DC    AL1(&NO)                NUMBER OF LABELS
         MVC   12(3,1),*-4             MOVE CONSTANTS TO LIST
         AGO   .EUNLR                                            PM0051
.EROUT   ANOP
         AIF   (N'&MF NE 2).E
&NAME    IHBINNRA  &MF(2)
         AIF   ('&UNIT' EQ '').EDD
         AIF   ('&UNIT'(1,1) EQ '(').EUREG
         LA    14,&UNIT.(0,0)          GET UNIT NUMBER
         STC   14,3(0,1)               STORE UNIT NUMBER
         AGO   .EDD
.EUREG   ST    &UNIT(1),3(0,1)         STORE UNIT NUMBER
.EDD     AIF   ('&DDNAME' EQ '').ELAB
         AIF   ('&DDNAME'(1,1) EQ '(').EDDREG
         LA    14,&DDNAME              GET DDNAME ADDRESS
         ST    14,4(0,1)               STORE ADDRESS IN LIST
         AGO   .ELAB
.EDDREG  ST    &DDNAME(1),4(0,1)       STORE DDNAME ADDRESS
.ELAB    AIF   ('&LABEL' EQ '').ELNO
         AIF   ('&LABEL'(1,1) EQ '(').ELBREG
         LA    14,&LABEL               LOAD LABEL ADDRESS
         ST    14,8(0,1)               STORE ADDRESS IN LIST
         AGO   .ELNO
.ELBREG  ST    &LABEL(1),8(0,1)        STORE VOLUME LABEL ADDRESS
.ELNO    AIF   ('&LNGTH' NE '' AND '&NO' NE '').BOTH
.ELN     AIF   ('&LNGTH' EQ '').ENO
         AIF   ('&LNGTH'(1,1) EQ '(').ELNREG
         B     *+6                     BRANCH AROUND CONSTANTS
         DC    AL2(&LNGTH)             LABEL LENGTH
         MVC   12(2,1),*-2             MOVE LENGTH TO LIST
         AGO   .ENO
.ELNREG  STH   &LNGTH(1),12(0,1)       STORE LABEL LENGTH
.ENO     AIF   ('&NO' EQ '').EUNL
         AIF   ('&NO'(1,1) EQ '(').ENOREG
         B     *+6                     BRANCH AROUND CONSTANTS
         DC    AL1(&NO)                NUMBER OF LABELS
         MVC   14(1,1),*-2             MOVE NUMBER OF LABELS TO LIST
         AGO   .EUNL
.ENOREG  STC   &NO(1),14(0,1)          STORE NUMBER OF LABELS
.EUNL    AIF   ('&LABELA' EQ '').EUNLR                           PM0051
         AIF   ('&LABELA'(1,1) EQ '(').EUNLOD                    PM0051
         LA    14,&LABELA              LOAD LABEL ADDRESS        PM0051
         ST    14,16(0,1)              STORE LABEL ADDRESS       PM0051
         AGO   .EUNLR                                            PM0051
.EUNLOD  ST    &LABELA(1),16(0,1)      STORE LABEL ADDRESS       PM0051
.EUNLR   AIF   ('&UNLOAD' EQ '').ECODE                           PM0051
         AIF   (&BB).EOK
         AIF   ('&UNLOAD' EQ 'REWIND').EREW
         IHBERMAC 157,UNLOAD,&UNLOAD
         AGO   .ECODE
.EREW    MVI   2(1),4                  INDICATE REWIND
         AGO   .ECODE
.EOK     OI    2(1),2                  INDICATE UNLOAD
.ECODE   AIF   ('&CNTRL' EQ '').SVC
         AGO   .CODE
.E1      IHBERMAC 2                    FIRST OPERAND MISSING
         MEXIT
.E2      IHBERMAC 3                    FIRST OPERAND MISSING
         MEXIT
.E3      IHBERMAC 4                    FIRST OPERAND MISSING
         MEXIT
.E4      IHBERMAC 5                    FIRST OPERAND MISSING
         MEXIT
.E5      IHBERMAC 14                   FIRST OPERAND MISSING
         MEXIT
.E6      IHBERMAC 17                   MODE OPERAND MISSING
         MEXIT
.E7      IHBERMAC 45,,&CNTRL
         MEXIT
.E       IHBERMAC 35,,&MF
         MEND
./ ADD NAME=LCGASMS2
         GBLC  &LIB
&LIB     SETC  'LIB4'                   ASSEMBLE AOS2
./ ADD NAME=LCGASMSW
         GBLC  &LIB
&LIB     SETC  'LIB2'                   ASSEMBLE AOS
./ ADD NAME=LCGPLSS2
 %DECLARE  LIB  CHARACTER;
 %LIB   =  'LIB4';                       /* ASSEMBLE AOS2 */
./ ADD NAME=LCGPLSSW
 %DECLARE  LIB  CHARACTER;
 %LIB  =  'LIB2';                   /* ASSEMBLE AOS */
./ ADD NAME=LCTLE
         MACRO
&LABEL   LCTLE &START,&END,&ADDRESS
.*
.**********************************************************************
.*                                                                    *
.*01* MACRO-NAME = LCTLE                                              *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = LCTL EXTENDED                                *
.*                                                                    *
.*01* COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1980,                 *
.*               LICENSED MATERIAL PROGRAM,                           *
.*               PROPERTY OF IBM,                                     *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = USED TO MAINTAIN COPIES OF CONTROL REGISTERS 1,      *
.*               3, 4, 5, 7, 12, AND 14 IN THE PSA OR HARDWARE,       *
.*               WHICHEVER IS APPROPRIATE.  THE OTHER CONTROL         *
.*               REGISTERS ARE MAINTAINED IN THE HARDWARE.            *
.*                                                                    *
.*01* MODULE-TYPE = MACRO                                             *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER                                           *
.*                                                                    *
.*02* MODULE SIZE = 240 LOC                                           *
.*                                                                    *
.*01* RESTRICTIONS = CONTROL REGISTER RANGE MUST NOT GO OFF END OF    *
.*                   BASE REGISTER OF &ADDRESS                        *
.*                                                                    *
.*01* MACROS = IHBERMAC, IHAPSA (NEEDED TO USE MACRO)                 *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G38FPXY - MICRO CODE/SIMULATION SUPPORT      *
.*                      @ZM50136 - CHANGE MASKS TO HARD CODE INSTEAD  *
.*                                 OF USING EQUATES IN PSA            *
.*                                                                    *
.*01* MNOTES =  IHB002 INVALID OPERAND SPECIFIED                      *
.*              IHB247 INCORRECT NUMBER OF OPERAND VALUES             *
.*                                                                    *
.**********************************************************************
.* A-000000-999999                                             @G38FPXY
.*
*        MACDATE = 80.029
.*
.*       MACRO VARIABLE DECLARES
.*
         LCLA  &I                 INDEX VARIABLE
         LCLC  &C                 BRANCH CONDITION
         LCLC  &X                 BRANCH CONTROL REG NUMBER
         LCLA  &CREG              CONTROL REG NUMBER
         LCLB  &SIMTEST           SIMULATION TEST NEEDED FLAG
         LCLB  &LOAD1             CNTL REG 1 LOADED INDICATOR
         LCLB  &LOAD7             CNTL REG 7 LOADED INDICATOR
         LCLB  &LOAD14            CNTL REG 14 LOADED INDICATOR
         LCLA  &OFFSET            MVC OFFSET OPERAND
         LCLA  &WRAPFAC           WRAP FACTOR FOR OFFSET
         LCLA  &LENGTH            MVC LENGTH OPERAND
         LCLC  &POSITN            MACRO OPERAND POSITION
         LCLC  &OPERAND           MACRO OPERAND
         LCLC  &FROM              MVC 'FROM' OPERAND
         LCLC  &FROMBEG           BEGINNING OF 'FROM' OPERAND
         LCLC  &FROMEND           END OF MVC 'FROM' OPERAND
         LCLC  &PARM1,&PARM2      IHBERMAC PARAMETERS
         LCLA  &SUBBEG            FIRST CNTL REG OF SUB-RANGE
         LCLA  &SUBEND            LAST CNTL REG OF SUB-RANGE
         LCLA  &TEMPBEG           FIRST CNTL REG OF TEMP SUB-RANGE
         LCLA  &TEMPEND           LAST CNTL REG OF TEMP SUB-RANGE
         LCLA  &PTI,&PTSIZE       CNTL REG TABLE (PT) INDEX & SIZE
         LCLA  &PTBEG(8)          FIRST CNTL REG OF SIMULATION REGS
         LCLA  &PTEND(8)          LAST CNTL REG OF SIMULATION CNTL REGS
         LCLC  &PTREGC(16)        CNTL REG CHAR REP FOR 0-F (HEX)
.*
.*
.*
.*  THE &PTBEG AND &PTEND ARRAYS CONTAIN RANGES OF SIMULATED
.*  CONTROL REGISTERS, &PTBEG BEING THE FIRST CNTL REG IN THE RANGE
.*  AND &PTEND BEING THE LAST CNTL REG IN THE RANGE. THESE RANGES
.*  MUST BE IN ASCENDING ORDER IN THE ARRAYS FROM ENTRY #1
.*  THRU ENTRY # &PTSIZE; I.E. THE FOLLOWING MUST HOLD:
.*
.*     &PTBEG(I) <= &PTEND(I) < &PTBEG(I+1) <= &PTEND(I+1)
.*             FOR I=1,2,...,&PTSIZE-1
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       INITIALIZE THE SIMULATION CONTROL REGISTER TABLES            *
.*                                                                    *
.**********************************************************************
.*
.*
&PTSIZE  SETA  4                  INIT NUMBER OF ENTRIES
.*
&PTBEG(1) SETA 1                  INIT ENTRY #1   (CNTL REG 1)
&PTEND(1) SETA 1
&PTBEG(2) SETA 3                  INIT ENTRY #2   (CNTL REGS 3-5)
&PTEND(2) SETA 5
&PTBEG(3) SETA 7                  INIT ENTRY #3   (CNTL REG 7)
&PTEND(3) SETA 7
&PTBEG(4) SETA 12                 INIT ENTRY #4   (CNTL REG 12)
&PTEND(4) SETA 12
.*
&PTREGC(1)  SETC  '0'             INIT CNTL REGS CHAR REP (IN HEX)
&PTREGC(2)  SETC  '1'
&PTREGC(3)  SETC  '2'
&PTREGC(4)  SETC  '3'
&PTREGC(5)  SETC  '4'
&PTREGC(6)  SETC  '5'
&PTREGC(7)  SETC  '6'
&PTREGC(8)  SETC  '7'
&PTREGC(9)  SETC  '8'
&PTREGC(10) SETC  '9'
&PTREGC(11) SETC  'A'
&PTREGC(12) SETC  'B'
&PTREGC(13) SETC  'C'
&PTREGC(14) SETC  'D'
&PTREGC(15) SETC  'E'
&PTREGC(16) SETC  'F'
.*
.*
.**********************************************************************
.*                                                                    *
.*       CHECK &START AND &END FOR VALID CONTROL REGISTER NUMBERS     *
.*                                                                    *
.**********************************************************************
.*
.*       REQUIRED NUMBER OF OPERANDS IS 3
.*
         AIF   (N'&SYSLIST NE 3).ERR1
.*
.*       FIRST AND SECOND OPERANDS MUST BE DECIMAL DIGITS
.*
&POSITN  SETC  'FIRST'            SET POSITION DESCRIPTION FOR IHBERMAC
&OPERAND SETC  '&START'           SET OPERAND FIELD FOR IHBERMAC
         AIF   (T'&START NE 'N').ERR2    &START NON-NUMERIC ?
         AIF   (&START LT 0 OR &START GT 15).ERR2   &START NOT VALID ?
.*
&POSITN  SETC  'SECOND'           SET POSITION DESCRIPTION FOR IHBERMAC
&OPERAND SETC  '&END'             SET OPERAND FIELD FOR IHBERMAC
         AIF   (T'&END NE 'N').ERR2      &END NON-NUMERIC ?
         AIF   (&END LT 0 OR &END GT 15).ERR2     &END NOT VALID ?
.*
.*
.*
.*
.*
.*       MACRO INVOCATION IS VALID.  CODE TO BE GENERATED CONSISTS
.*       OF THREE PARTS:  1) MOVING REGISTER VALUES TO PSA OR LOADING
.*                           PHYSICAL CONTROL REGISTERS
.*                        2) LOADING CONTROL REGISTER 14 AND MOVING
.*                           IT TO THE PSA IF IT IS IN THE RANGE
.*                        3) LOADING CONTROL REGISTER 1 IF CNTL REGS 1
.*                           OR 7 IS IN THE RANGE OF REGS TO BE LOADED
.*
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       SEPARATE BEGINNING AND ENDING OF &ADDRESS                    *
.*                                                                    *
.**********************************************************************
.*
.*
.*
&I       SETA  1                  INITIALIZE CHARACTER INDEX
.*
.LOOP    ANOP
         AIF   ('&ADDRESS'(&I,1) EQ '(').TYPE2  &ADDRESS HAS REG ?
         AIF   (&I EQ K'&ADDRESS).TYPE1   &ADDRESS IS SYMBOL ONLY ?
&I       SETA  &I+1               INCREMENT INDEX
         AGO   .LOOP              LOOP BACK
.*
.TYPE1   ANOP                     &ADDRESS IS SYMBOL ONLY
&FROMBEG SETC  '&ADDRESS'         SET BEGINNING OF ADDRESS
&FROMEND SETC  ''                 SET END OF ADDRESS
         AGO   .GEN0              BRANCH TO CONTINUE
.*
.TYPE2   ANOP                     &ADDRESS IS DISP/REG
&FROMBEG SETC  '&ADDRESS'(1,&I-1) SET DISP OF ADDRESS
&FROMEND SETC  '&ADDRESS'(&I,K'&ADDRESS-&I+1)  SET REG OF ADDRESS
.*
.*
.*       NOTE: THE DISPLACEMENT MUST NOT CONTAIN AN EXPRESSION WHICH
.*             CONTAINS A '(', AND THEREFORE, A ')'.  IF SO,
.*             ASSEMBLER ERRORS WILL RESULT ALTHOUGH MACRO MNOTES
.*             WILL NOT BE PRODUCED.
.*
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       TEST TO SEE IF SIMULATION CHECK IS NEEDED                    *
.*                                                                    *
.**********************************************************************
.*
.*
.GEN0    ANOP
.*
&PTI     SETA  1                  INIT PT INDEX FOR LOOP
.*
.PTLP    ANOP                     BEGINNING OF LOOP
.*
         AIF   (&END LT &START).CONT   CHECK FOR WRAP-AROUND; BR IF SO
.*
.*
.*       IF SPECIAL CONTROL REGISTER IN RANGE PTBEG-PTEND FOR THIS
.*       TABLE ENTRY IS IN RANGE &START-&END, THEN BRANCH TO
.*       GENERATE SIMULATION TEST.
.*
&LOAD14  SETB  ((&START LE 14) AND (14 LE &END))  CNTL REG 14 LOAD IND
         AIF   ((&START LE &PTEND(&PTI)) AND                           X
               (&END GE &PTBEG(&PTI))).GEN1    BRANCH IF SPECIAL REG
         AGO   .NEXT              TRY NEXT ENTRY IN TABLES
.*
.CONT    ANOP                     WRAP-AROUND PRESENT
.*
.*
.*       WRAP AROUND PRESENT.  IF SPECIAL CONTROL REGISTER IN RANGE
.*       PTBEG-PTEND FOR THIS TABLE ENTRY IS IN RANGE &START-&END,
.*       THEN BRANCH TO GENERATE SIMULATION TEST.
.*
&LOAD14  SETB  ((&START LE 14) OR (14 LE &END))  CNTL REG 14 LOAD IND
         AIF   ((&START LE &PTEND(&PTI)) OR                            X
               (&END GE &PTBEG(&PTI))).GEN1    BRANCH IF SPECIAL REG
.*
.*
.NEXT    ANOP                     CHECK FOR END OF PT TABLES
&PTI     SETA  &PTI+1             INCREMENT TABLE INDEX
         AIF   (&PTI LE &PTSIZE).PTLP  LOOP BACK IF MORE ENTRIES
.*
.*
.*
.*       SINCE THERE ARE NO SPECIAL CONTROL REGISTERS IN THE RANGE
.*       &START-&END, GENERATE A LCTL FOR THE CONTROL REGISTERS.
.*
&LABEL   LCTL  &START,&END,&ADDRESS          .LOAD CONTROL REGISTER(S)
.*
         AIF   (NOT &LOAD14).CONTME    BRANCH IF CNTL REG 14 NOT LOADED
&OFFSET  SETA  14-&START          CALCULATE THE OFFSET FROM &ADDRESS
         AIF   (&OFFSET GE 0).CONTMB   BRANCH IF WRAP FACTOR NOT NEEDED
&OFFSET  SETA  &OFFSET+16         ADD WRAP FACTOR TO OFFSET
.CONTMB  ANOP
&OFFSET  SETA  &OFFSET*4          GET NUMBER OF BYTES IN OFFSET
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'   FROM OPERAND
         MVC   PSAXMCRE-PSA(4,0),&FROM
*                                            .MOVE LOGICAL CNTL REG 14
.*
.*
.CONTME  ANOP
.*
         MEXIT
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       START GENERATION OF CODE TO HANDLE SIMULATION OF CNTL REGS   *
.*                                                                    *
.**********************************************************************
.*
.*
.GEN1    ANOP
&LABEL   TM    PSAXMFB1-PSA(0),X'20'         .HARDWARE FEATURE @ZM50136
         BZ    IHB&SYSNDX.A                  .BRANCH IF HARDWARE AVAIL
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       INITIALIZE PT LOOP VARIABLES DEPENDING ON                    *
.*       WRAP-AROUND PRESENCE.                                        *
.*                                                                    *
.**********************************************************************
.*
         AIF   (&END LT &START).WRAP1    WRAP-AROUND PRESENT?
.*
.*
.*
.*       INITIALIZE FOR NO WRAP-AROUND
.*
&WRAPFAC SETA  0                  WRAP FACTOR FOR NON-WRAP SUBRANGE
&SUBBEG  SETA  &START             SET FIRST CNTL REG IN SUBRANGE
&SUBEND  SETA  &END               SET LAST CNTL REG IN SUBRANGE
&TEMPEND SETA  &SUBBEG-1          TEMPORARY END TO DEFAULT
&PTI     SETA  1                  INITIALIZE PT TABLE INDEX
         AGO   .PTLOOP            GO PROCESS SUBRANGE
.*
.*
.*
.*       INITIALIZE FOR WRAP-AROUND
.*
.WRAP1   ANOP
&WRAPFAC SETA  0                  WRAP FACTOR FOR NON-WRAP SUBRANGE
&SUBBEG  SETA  &START             SET FIRST CNTL REG IN SUBRANGE
&SUBEND  SETA  15                 SET LAST CNTL REG IN SUBRANGE
&TEMPEND SETA  &SUBBEG-1          TEMPORARY END TO DEFAULT
&PTI     SETA  1                  INITIALIZE PT TABLE INDEX
.*
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       PTLOOP --- PROCESS THE GIVEN SUBRANGE FOR CONTROL REGISTERS  *
.*             IN &SUBBEG AND &SUBEND GENERATING CODE TO MOVE THE     *
.*             REGS TO THE PSA OR HARDWARE AS NEEDED.                 *
.*                                                                    *
.**********************************************************************
.*
.*
.PTLOOP  ANOP                     BEGINNING OF PT LOOP
.*
.*
.*             IF SPECIAL CNTL REG IN PT RANGE PTBEG-PTEND FOR THIS
.*             TABLE ENTRY IS NOT IN SUBRANGE SUBBEG-SUBEND, THEN
.*             BRANCH TO TRY THE NEXT TABLE ENTRY.  OTHERWISE,
.*             GENERATE CODE FOR THE PT RANGE GIVEN THE SUBRANGE
.*             (I.E. DO NOT GO OUT OF SUBRANGE WITH PT RANGE
.*             CODE GENERATION).
.*
         AIF   (&SUBBEG GT &PTEND(&PTI)).NEXTPT   IF ENTRY NOT
         AIF   (&SUBEND LT &PTBEG(&PTI)).NEXTPT   IN USE, SKIP IT
.*
.**********************************************************************
.*       PROCESS THIS SUB-SUB-RANGE (I.E. PT RANGE)                   *
.**********************************************************************
.*
.*
.*             GET TEMPORARY BEGINNING CONTROL REGISTER
.*
&TEMPBEG SETA  &SUBBEG            ASSUME BEG OF SUBRANGE IS BEG OF
.*                                TEMPORARY RANGE
         AIF   (&SUBBEG GE &PTBEG(&PTI)).CONTLA   IF SO, BRANCH
.*
.*             IF SUBRANGE BEGINNING IS BEFORE PT RANGE BEGINNING,
.*             THEN GENERATE LCTL FOR CNTL REGS UP TO PT RANGE BEG.
.*
&OFFSET  SETA  (&SUBBEG-&START+&WRAPFAC)*4    SET OFFSET FROM ADDRESS
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'  GET FROM OPERAND
&CREG    SETA  &PTBEG(&PTI)-1          GET END CNTL REG FOR LCTL
         LCTL  &SUBBEG,&CREG,&FROM           .LOAD CONTROL REGISTER(S)
.*
&TEMPBEG SETA  &PTBEG(&PTI)       RESET TEMPORARY BEG CNTL REG
.*
.*
.*
.*
.*             GET TEMPORARY ENDING CONTROL REGISTER
.*
.CONTLA  ANOP                     GET TEMPORARY END CNTL REG
&TEMPEND SETA  &PTEND(&PTI)       ASSUME END OF PT RANGE IS END OF
.*                                TEMPORARY RANGE.
         AIF   (&SUBEND GE &PTEND(&PTI)).CONTLB   IF SO, BRANCH
.*
&TEMPEND SETA  &SUBEND            IF NOT, SET END OF SUBRANGE AS END
.*                                FOR CODE GENERATION
.*
.*
.*
.*
.**********************************************************************
.*             GENERATE MVC TO MOVE CONTROL REGISTER(S) TO PSA        *
.**********************************************************************
.*
.CONTLB  ANOP                     GENERATE MVC FOR TEMPORARY RANGE
&OFFSET  SETA  (&TEMPBEG-&START+&WRAPFAC)*4   SET OFFSET FROM ADDRESS
&LENGTH  SETA  (&TEMPEND-&TEMPBEG+1)*4   SET LENGTH FOR MVC
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'  GET FROM OPERAND
         MVC   PSAXMCR&PTREGC(&TEMPBEG+1).-PSA(&LENGTH.,0),&FROM
*                                            .MOVE LOGICAL CNTL REG(S)
.*
.*
.*
.**********************************************************************
.*             ADJUST SUBRANGE BEGINNING FOR NEXT LOOP ITERATION      *
.**********************************************************************
.*
         AIF   (&TEMPEND EQ &SUBEND).CONTLC   END OF SUBRANGE REACHED?
.*
&SUBBEG  SETA  &TEMPEND+1         NO, SET NEW SUBRANGE BEGINNING
.*
.*
.*
.NEXTPT  ANOP                     LOOP BACK IF NOT END OF TABLE
.*
&PTI     SETA  &PTI+1             INCREMENT TABLE INDEX
         AIF   (&PTI LE &PTSIZE).PTLOOP  LOOP BACK IF MORE TAB ENTRIES
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       PTLOOP TERMINATION FOR BOTH NO WRAP-AROUND AND               *
.*       WRAP-AROUND CASES.                                           *
.*                                                                    *
.**********************************************************************
.*
.CONTLC  ANOP                     CHECK FOR WRAP-AROUND
         AIF   (&END LT &START).WRAP2   BRANCH IF WRAP-AROUND PRESENT
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       PTLOOP TERMINATION FOR NO WRAP-AROUND ---                    *
.*                                                                    *
.*             IF CODE HAS NOT BEEN GENERATED FOR THE ENTIRE RANGE    *
.*             &START-&END(&SUBEND), THEN GENERATE A LCTL FOR THE     *
.*             REMAINING CONTROL REGISTER(S).  NO SPECIAL CONTROL     *
.*             REGISTERS REMAIN WITHIN THESE REMAINING CONTROL        *
.*             REGISTERS BECAUSE THE PT TABLE ENTRIES HAVE BEEN       *
.*             EXAUSTED.                                              *
.*                                                                    *
.**********************************************************************
.*
         AIF   (&TEMPEND GE &SUBEND).CONTWA  END OF SUBRANGE?
.*
&OFFSET  SETA  (&SUBBEG-&START)*4       SET OFFSET FOR ADDRESS
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'   GET FROM OPERAND
         LCTL  &SUBBEG,&SUBEND,&FROM         .LOAD CONTROL REGISTER(S)
.*
.CONTWA  ANOP
&LOAD1   SETB  ((&START LE 1) AND (1 LE &END))     SET CNTL REG 1,
&LOAD7   SETB  ((&START LE 7) AND (7 LE &END))     7, & 14 LOAD
&LOAD14  SETB  ((&START LE 14) AND (14 LE &END))   INDICATORS
         AGO   .EXIT              GO TERMINATE MACRO
.*
.*
.*
.**********************************************************************
.*       PT LOOP TERMINATION FOR WRAP-AROUND PRESENCE                 *
.**********************************************************************
.*
.WRAP2   ANOP
.*
         AIF   (&WRAPFAC EQ 16).WRAP3    SECOND WRAP-AROUND LOOP EXIT?
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       FIRST TIME WRAP-AROUND TERMINATION OF PTLOOP ---             *
.*                                                                    *
.*             THERE MAY BE MORE THAN ONE NON-SPECIAL CONTROL REG     *
.*             BETWEEN THE LAST SPECIAL CONTROL REGISTER OF THIS      *
.*             HALF OF WRAP-AROUND PROCESSING AND THE FIRST SPECIAL   *
.*             CONTROL REGISTER OF THE NEXT HALF.  IF THIS IS TRUE,   *
.*             THEN GENERATE A LCTL FOR THESE CONTROL REGISTERS.      *
.*             ALSO, THERE MAY NOT BE ANY SPECIAL CONTROL REGISTERS   *
.*             FOR WHICH THE NEXT HALF IS TO GENERATE CODE.  IF THIS  *
.*             IS THE CASE, THEN GENERATE A LCTL FOR THE REMAINING    *
.*             CONTROL REGISTER(S) AND INDICATE THE NEXT HALF IS      *
.*             NOT TO PROCESS BY SETTING THE BEGINNING CONTROL REG    *
.*             VALUE NEGATIVE.  SET UP THE BEGINNING CONTROL REG OF   *
.*             THE NEW SUBRANGE TO BEGIN WHERE THE LCTL ENDS, EXCEPT  *
.*             IN THE CASE WHERE IT IS SET NEGATIVE TO CAUSE          *
.*             PROCESSING TO STOP.                                    *
.*                                                                    *
.**********************************************************************
.*
         AIF   (&END GE &PTBEG(1)).CONTWB   BRANCH IF SPECIAL CNTL REG
.*                                          FOR THE NEXT HALF OF WRAP
.*
.*
.**********************************************************************
.*             NO SPECIAL CNTL REGS IN NEXT HALF OF WRAP-AROUND.      *
.*             GENERATE LCTL AND STOP.                                *
.**********************************************************************
.*
&SUBBEG  SETA  -1                 INDICATE THAT NEXT HALF NEED NOT RUN
&SUBEND  SETA  &END               SET LAST CNTL REG FOR LCTL
         AGO   .CONTWD            GO GENERATE LCTL
.*
.CONTWB  ANOP
         AIF   (&PTBEG(1) EQ 0).CONTWC   BRANCH IF NO NON-SPECIAL CNTL
.*                                       REGS BEFORE SPECIAL CNTL REGS
.*
&SUBBEG  SETA  &PTBEG(1)          SET FIRST CNTL REG IN NEXT SUBRANGE
&SUBEND  SETA  &PTBEG(1)-1        SET LAST CNTL REG FOR LCTL
         AGO   .CONTWD            GO GENERATE LCTL
.*
.CONTWC  ANOP
&SUBBEG  SETA  0                  SET FIRST CR IN NEXT SUBRANGE
         AIF   (&TEMPEND EQ 15).GEN3   BRANCH IF NO NON-SPECIAL CNTL
.*                                     REG LEFT IN THIS HALF
.*
.CONTWD  ANOP                     GENERATE LCTL FOR NON-SPECIAL CRS
&OFFSET  SETA  (&TEMPEND+1-&START)*4   SET OFFSET FOR ADDRESS
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'  GET FROM OPERAND
&CREG    SETA  &TEMPEND+1               GET LAST CR FOR LCTL
         LCTL  &CREG,&SUBEND,&FROM           .LOAD CONTROL REGISTER(S)
.*
.*
.**********************************************************************
.*       INITIALIZE LOOP VARIABLE FOR SECOND HALF OF WRAP-            *
.*       AROUND PROCESSING OR TERMINATE MACRO PROCESSING.             *
.**********************************************************************
.*
.GEN3    ANOP
.*
         AIF   (&SUBBEG LT 0).CONTWE   BRANCH IF NO PROCESSING
.*                                     REMAINS TO BE DONE
.*
&WRAPFAC SETA  16                 SET WRAP FACTOR FOR WRAP-AROUND
&SUBEND  SETA  &END               SET LAST CNTL REG IN NEW SUBRANGE
&TEMPEND SETA  &SUBBEG-1          SET NEW TEMPORARY END CNTL REG
&PTI     SETA  1                  SET PT TABLE INDEX
         AGO   .PTLOOP            ENTER PT LOOP FOR SECOND TIME
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       SECOND TIME PT LOOP TERMINATION FOR WRAP-AROUND ---          *
.*                                                                    *
.*             IF THERE REMAINS ANY NON-SPECIAL CONTROL REGISTERS     *
.*             IN THE RANGE &START-&END AFTER BOTH WRAP-AROUND        *
.*             PROCESSING HALVES, THEN GENERATE A LCTL FOR THE        *
.*             REMAINING CONTROL REGISTERS.  IF NO CONTROL REGISTERS  *
.*             REMAIN IN THE RANGE, THEN TERMINATE PROCESSING BY      *
.*             SETTING SOME CONTROL REGISTER LOAD INDICATORS AND      *
.*             GOING TO .EXIT.                                        *
.*                                                                    *
.**********************************************************************
.*
.WRAP3   ANOP
         AIF   (&TEMPEND GE &SUBEND).CONTWE  BRANCH IF NO NON-SPECIAL
.*                                           CONTROL REGISTERS REMAIN
.*
.*             GENERATE LCTL FOR ANY REMAINING NON-SPECIAL
.*             CONTROL REGISTERS.
.*
&OFFSET  SETA  (&TEMPEND+17-&START)*4   SET OFFSET FOR ADDRESS
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'
&CREG    SETA  &TEMPEND+1               GET LAST CR FOR LCTL
         LCTL  &CREG,&SUBEND,&FROM           .LOAD CONTROL REGISTER(S)
.*
.*
.CONTWE  ANOP
&LOAD1   SETB  ((&START LE 1) OR (1 LE &END))     SET CNTL REG 1,
&LOAD7   SETB  ((&START LE 7) OR (7 LE &END))     7, & 14 LOAD
&LOAD14  SETB  ((&START LE 14) OR (14 LE &END))   INDICATORS
.*
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       END OF RANGE &START-&END PROCESSING --- GENERATE CODE TO     *
.*       LOAD HARDWARE CONTROL REGISTER 1 IF SIMULATION CONTROL       *
.*       REGISTER 1 OR 7 ARE LOADED AS REQUIRED BY THE CURRENT        *
.*       ADDRESSING MODE.  ALSO, GENERATE CODE TO MOVE CONTROL        *
.*       REGISTER 14 TO THE PSA IF NEEDED.                            *
.*                                                                    *
.*       NOTE: CONTROL REGISTERS 1 AND 7 ARE SPECIAL SIMULATED        *
.*             CONTROL REGISTERS BECAUSE THEY AFFECT THE ADDRESSING   *
.*             OF THE MACHINE BY CONTAINING STO VALUES.  THUS,        *
.*             IF THE PHYSICAL CONTROL REGISTERS ARE LOADED BLINDLY,  *
.*             THERE MADE BE A PROBLEM THAT THE NEW ADDRESSING MODE   *
.*             WILL NOT BE CORRECT RELATIVE TO THE LOCATION OF THE    *
.*             CODE.  THEREFORE, IF THE HARDWARE FEATURE IS NOT       *
.*             PRESENT, PHYSICAL CONTROL REGISTER 1 MUST BE LOADED    *
.*             RELATIVE TO THE CURRENT ADDRESSING MODE.               *
.*             CONTROL REGISTER 14 IS A SPECIAL SIMULATED CONTROL     *
.*             REGISTER BECAUSE IT CONTAINS BITS THAT WILL ALWAYS BE  *
.*             CONTAINED IN HARDWARE AND OTHERS WHICH MAY OR MAY NOT. *
.*             THEREFORE, IF CONTROL REGISTER 14 IS LOADED, IT MUST   *
.*             BE MOVED TO THE PSA AND LOADED INTO PHYSICAL CONTROL   *
.*             REGISTER 14.                                           *
.*                                                                    *
.**********************************************************************
.*
.EXIT    ANOP
.*
.*
.*
.**********************************************************************
.*       GENERATE MVC TO MOVE CONTROL REGISTER 14 TO PSA              *
.**********************************************************************
.*
.*
         AIF   (NOT &LOAD14).CONTA     BRANCH IF CNTL REG 14 NOT LOADED
.*
&OFFSET  SETA  14-&START          CALCULATE THE OFFSET FROM &ADDRESS
         AIF   (&OFFSET GE 0).CONTB    BRANCH IF WRAP FACTOR NOT NEEDED
&OFFSET  SETA  &OFFSET+16         ADD WRAP FACTOR TO OFFSET
.*
.CONTB   ANOP
&OFFSET  SETA  &OFFSET*4          GET NUMBER OF BYTES IN OFFSET
&FROM    SETC  '&FROMBEG'.'+'.'&OFFSET'.'&FROMEND'   GET FROM OPERAND
         MVC   PSAXMCRE-PSA(4,0),&FROM
*                                            .MOVE LOGICAL CNTL REG 14
.*
.*
.*
.**********************************************************************
.*       GENERATE CODE TO LOAD CONTROL REG 1 AS NEEDED                *
.**********************************************************************
.*
.CONTA   ANOP
         AIF   (&LOAD1 AND &LOAD7).BOTH   CNTL REGS 1 & 7 LOADED ?
.*
.*
.**********************************************************************
.*             PROCESS ONLY ONE OF CONTROL REGISTERS 1 & 7 LOADED     *
.**********************************************************************
.*
         AIF   (NOT &LOAD1).CONT1   BRANCH IF CNTL REG 1 NOT LOADED
.*
.*             GENERATE CODE TO CONDITIONALLY LOAD HARDWARE CONTROL
.*             REG 1 IF CNTL REG 1 WAS LOADED.
.*
         TM    PSAXMFLG-PSA(0),X'80'         .TEST ADDR MODE   @ZM50136
         BO    IHB&SYSNDX.B                  .SKIP LCTL IF S-BIT ON
         LCTL  1,1,PSAXMCR1-PSA(0)           .LOAD NEW PRIMARY STO
.*
         AGO   .CONT2               BRANCH TO COMPLETE EXIT PROCESSING
.*
.*
.CONT1   ANOP
         AIF   (NOT &LOAD7).CONT2   BRANCH IF CNTL REG 7 NOT LOADED
.*
.*             GENERATE CODE TO CONDITIONALLY LOAD HARDWARE CONTROL
.*             REG 1 IF CNTL REG 7 WAS LOADED.
.*
         TM    PSAXMFLG-PSA(0),X'80'         .TEST ADDR MODE   @ZM50136
         BZ    IHB&SYSNDX.B                  .SKIP LCTL IF S-BIT OFF
         LCTL  1,1,PSAXMCR7-PSA(0)           .LOAD NEW SECONDARY STO
.*
.*
.CONT2   ANOP                     GENERATE BRANCH AROUND LCTL FOR ALL
.*                                CNTL REGS IF ALL HARDWARE IS AVAIL
         B     IHB&SYSNDX.B                  .BRANCH AROUND LCTL
         AGO   .CONTE             CONTINUE MACRO TERMINATION
.*
.*
.*
.**********************************************************************
.*             PROCESS BOTH CONTROL REGISTERS 1 & 7 LOADED            *
.**********************************************************************
.*
.BOTH    ANOP                     GENERATE CODE TO CONDITIONALLY LOAD
.*                                CNTL REG 1 IF CNTL REGS 1&7 WERE LOAD
         TM    PSAXMFLG-PSA(0),X'80'         .TEST ADDR MODE   @ZM50136
         BO    IHB&SYSNDX.C                  .BRANCH IF S-BIT ON
         LCTL  1,1,PSAXMCR1-PSA(0)           .LOAD NEW PRIMARY STO
         B     IHB&SYSNDX.B                  .BRANCH AROUND LCTL'S
         SPACE
IHB&SYSNDX.C EQU *
         LCTL  1,1,PSAXMCR7-PSA(0)           .LOAD NEW SECONDARY STO
         B     IHB&SYSNDX.B                  .BRANCH AROUND LCTL
.*
.*
.CONTE   ANOP
         SPACE
IHB&SYSNDX.A EQU *                           .HARDWARE IS AVAILABLE
         LCTL  &START,&END,&ADDRESS          .LOAD CONTROL REG(S)
         SPACE
IHB&SYSNDX.B EQU *                           .ENDING LABEL
         SPACE
*        NOTE: THE CONDITION CODE IS NOW CHANGED
.*
         MEXIT
.*
.*       MACRO INVOCATION ERRORS
.*
.*
.*       INVALID NUMBER OF OPERANDS
.*
.ERR1    ANOP
         IHBERMAC 1012,OPERAND
         MEXIT
.*
.*       INVALID OPERAND (NOT A VALID DECIMAL DIGIT)
.*
.ERR2    ANOP
         IHBERMAC 1001,&POSITN,&OPERAND
         MEND
./ ADD NAME=LINEEND
         MACRO
&NAME    LINEEND  &GEN=
.*CHANGE ACTIVITY= AS FOLLOWS:                                   S21903
.*A104830-104950,107200-107330,312650                            S22027
.*A027410-027500,117820-118160,155420-155520,189010-189160       S99228
.*A199020-199140,297410-297580,298400-299400,334840-334960       S99228
.*A411810,411900                                                 S99228
.*C127600-128000                                                 S99228
.*C330000-330400,429800-429980,700000-702160,719400-719580       S99228
.*A302610-302700,351620-351740,489610-489700,291210-591320       S22029
.*C411300,657400,683800-684600                                   S22029
.*A052650-052750,058610-058720,073230-073350                     S22028
.*A481000                                                        A42376
.*C030400,461600,481600-482600,484600                            A42376
.*A589000                                                         M6293
.*C030400                                                         M6293
.*A057800,164600,167800,250600,260800,275400,280000,280900       S21101
.*A350600,393800,505600,549200,653000,657400                     S21101
.*C030400,106800,129600-134400,141400-141600,151400              S21101
.*C162600-162800,166200-166400,184600-184800,204200,204800       S21101
.*C205200-205600,218800,238200-238800,288000,341600,355400       S21101
.*C368200-368600,398400-398800,399600,400400,432600              S21101
.*C489800-490200,490400-491400,492000,505400,508800              S21101
.*C524000-525000,529000-530200,603600,651200,653800-654600       S21101
.*C716600                                                        S21101
.*A040000,420600                                                  M5953
.*C030400,040000                                                  M5953
.*C030400,216400                                                SA51068
.*A310000,430000                                                SA44892
.*C030400,489800-501200,512600-517400                           SA44892
.*A283000,598400                                                SA44983
.*C599000-601600                                                SA44983
.*C030400,645200                                                SA44894
.*A238200,454200,581800,669200,671000,671400,671800,674400       S22025
.*A676200,685000,686000,689800,690600,691200                     S22025
.*C029200,055000-055200,129200-134800,242800-246000              S22025
.*C300800-301000,335000,412000,489600,490600-490620,490740       S22025
.*C492800,504800,580600-581000,584000,587200-587600              S22025
.*C589198-589266,594200,671800,672000,674200,685200              S22025
.*C719700-719750                                                 S22025
.*D037600,111400,118000,145200-147200,298400-298800              S22025
.*D357000-357200,411400,490810-490870,585800-586400              S22025
.*D598400-598800,670200-670400,674200                            S22025
.*A034800,207800,275200,297800,312600,315800,327600,330400       S22026
.*A336600,346000,347000,351400,352600,356800,452600,522400       S22026
.*A654800,692200,692400,700200                                   S22026
.*C357000-357200,522600-522800                                   S22026
.*D145200-147200,291000,656600                                   S22026
.*A446800                               MODIFIED 11/15/71        A42413
.*A022000,368200,369400,380400,719600                           SA48278
.*A593000                                                       SA49233
.*A369500,719630                                                SA51061
.*C368650                                                       SA51061
.*A448000                               MODIFIED 12/02/71        A42413
.*A448180                                                         M2561
.*C030400                                                         M2561
.*D447600,447800                                                  M2561
.*C663200,664000                                                SA51097
.*C104600                                                       SA51791
.*A366800                                                       SA52517
.*C466800,467800,468200,468600                                  SA54276
.*A469800                                                       SA55941
.*A086220,097620,168010,176007                                  SA48276
.*D168610-168710                                                SA48276
.*A228040                                                       SA50194
.*A022000,064000,119600                                         SA51090
.*C118200-118400,120400,702010                                  SA51090
.*D119000                                                       SA51090
.*A689040                                                       SA52946
.*C172600,173400,413400,414400,A414500                          SA54923
.*A000200,002000,616800,618400                                  SA56617
.*C000400,000410-000426,000600-000800,001000,615200-615400      SA56617
.*D002200-019600                                                SA56617
.*A038410                                                       SA56915
.*C384200                                                       SA57329
.*A049060-049120                                                 A56906
.*C049000                                                        A56906
.*A162000,692200,692400                                          S99244
.*C149400,22220                                                  S99244
.*C466800,467800,468200,468600                                  SA54276
.*A469950,477000,477600                                         SA57685
.*C477000                                                       SA57685
.*C228040                                                       SA58997
.*D591203-591206,591230                                         SA59020
.*D521800-522400,523000,705400                                   S21903
.*A547600                                                       SA57695
.*C470000,547800,552200                                         SA57695
.*D552600-555000                                                SA57695
.*A469950                                                       SA59538
.*C466000                                                       SA59538
.*C062600                                                       SA59027
.*C061000,086300-086301,097680,301800,335200,411775-411795      SA59028
.*C411806-411810,451400,719560                                  SA59028
.*A125400                                                       SA59992
.*A117800                                                       SA61780
.*D121400                                                       SA61780
.*A199080                                                       SA62341
.*A311800                                                       SA61094
.*C046000                                                       SA62408
.*D432926                                                       SA62383
.*A608400                                                       SA62329
.*C609200,609800-610000                                         SA62329
.*451480                                                        SA62984
.*A172400                                                       SA61779
.*C058710                                                       SA61779
.*A411830                                                       SA63959
.*D411809-411812                                                SA63959
.*A036200                                                       SA65392
.*A398610,720091                                                SA62991
.*D 300600                                                      SA61794
.*C 301200-301900                                               SA61794
.*A049000                                                       SA64676
.*A634800,643000                                                SA65359
.*C618470-618480                                                SA65359
.*A701740,701800                                                SA65374
.*A471600,472000                                                SA65357
.*A700010,700900                                                SA65397
.*A613000                                                       OX02181
.*D613800                                                       OX02181
.*C569600-569800                                                SA65389
.*C398510                                                       SA66594
.*A577800                                                       SA65865
.*D577000-577200                                                SA65865
.*A376000                                                       SA65387
.*D376800                                                       SA65387
.*A115200                                                       SA66616
.*A035200                                                       SA65906
.*D689001-689002                                                SA66937
.*A007600,054800,414400,415000,418200,455000,702800,710810       X01004
.*C030800-034400,054800,124440,137800,179000,275500,             X01004
.*C291200-291400,300000-300400,352000-352400,352800,358000,      X01004
.*C398730,413200-414400,414600-415000,432930,534600-536400,      X01004
.*C655660                                                        X01004
.*D006000-006400,022050,034600,055000-055090,124600-124800,      X01004
.*D138000,179200-179400,291600-291800,300600-300630,353000,      X01004
.*D358200,453200-453800,455200,536600,537400-537600              X01004
.*A000000                                                        Y01948
.*C035400,054012,054168,107203,107243,118080,127600,282000,      Y01948
.*C282800,293000,315870,327685,341780,354100,378200,385600,      Y01948
.*C395600,404600,405400,420600,443600,444200,587800,592600,      Y01948
.*C655800,698600-698800,701054,701057                            Y01948
.*D000200-000240,035600,054013-054014,                           Y01948
.*D054175-054182,118100-118120,127800-128000,282200,284800,      Y01948
.*D293200-293400,315880-315910,327690-327695,341784-341788,      Y01948
.*D354120-354140,376600,378400-378600,385800-386000,             Y01948
.*D395800-396000,404800-405000,405600-405800,420640-420680,      Y01948
.*D443800-444000,444400-444600,588000-588200,592800-593000,      Y01948
.*D656000-656200,698200,701055,701058-701059                     Y01948
.*A025600,036000,036220,049200,488800,702020,702030,720091       X02004
.*C030960-034160,035400,036000,064060,120456,294920,             X02004
.*C300400,300740,368300,489490,489550,589163-589165,589179,      X02004
.*C589181,720000                                                 X02004
.*D021000,030800-030840,034180-034920,294930,300900-301000,      X02004
.*D488800-489070,489200,489600                                   X02004
.*C418296,418300                                                 Y00482
* A580200                                                       SA66604
* C301350-301920                                                SA66604
* C329780                                                       SA66598
* A700340                                                       SA65428
* D700370                                                       SA65428
* A432799                                                       SA65874
* A700880                                                       SA66946
* A330020,330146,348000                                         SA66632
* C057800,111200-112400                                         SA67139
* A110600                                                       S167139
* D686100,686150                                                SA62379
* A411720                                                       SA63595
* D411760-411765                                                SA63595
* A056200                                                       OX03963
* A701057                                                       OX03941
* A101600                                                       OY00507
* A054021,054189                                                OY03460
* D053800-054000                                                OY03460
* C330480-330500                                                SA68026
* A236600,297000,428600                                         SA68035
* A168600                                                       SA69087
* D172500                                                       SA69087
* A301290                                                       SA64386
* 376400                                                       @YA04894
* C113400                                                      @SA70316
* C484720                                                      @SA70874
* A552300                                                      @SA69964
* A204000                                                      @SA69968
* C678600                                                      @ZO2X6I0
*A483600                                                       @SA71694
*C411830                                                       @SA71658
*A327000                                                       @SA71963
*A279000                                                       @SA71490
*A137200                                                       @SA61090
*C036070-036090,036095                                         @ZA02096
*A049320                                                       @ZA02096
*C449630                                                       @ZA02095
*A720151                                                       @ZA02095
*A279600                                                       @YA06316
*C330148                                                       @YA06327
*A118080                                                       @YA06889
*A633600                                                       @XA07517
*A117860,118080,124400,580320,587800                           @SA62375
*C149400-149800,222200                                         @SA72446
*A577800                                                       @XA06335
*A469800,469950                                                @YA08108
*C196800                                                       @YA06307
*A575800,577817                                                @YA05167
*C577801,577803-577808,577811-577812,577920                    @YA05167
*A477600                                                       @SA73826
*D137300                                                       @SA73574
*A137400                                                       @SA73574
*C214000                                                       @SA74852
*A117810                                                       @SA74852
*C547920                                                       @SA74852
*D348050,348150                                                @XA09327
*A373600                                                       @XA09327
*C049330,049360                                                @ZA03108
*A646600                                                       @YA09751
*D117863-117866,C119400,A119400,A118100                        @YA10052
*A577950,D577801-577823                                        @YA10237
*C312000-312200                                                @SA75453
*A162550,163000                                                @YA10410
*A118600,A120470                                               @YA10673
*C196800-196950                                                @SA75722
*C118100                                                       @YA10695
*C048400                                                       @SA75471
*A149000                                                       @YA11157
*D149600                                                       @YA11157
*C503900-505200                                                @XA11311
*C312200,312260                                                @YA11162
*D433066-436600,D275600,D347400,D599000,D342400                @YA11151
*C560000                                                       @XA11338
*A190800                                                       @YA11495
*C503900                                                       @OS76474
*C429900-429960                                                @OS76301
*A119200,A119600                                               @OY11504
*D054009-054011                                                @OS76307
*A316800                                                       @OS76271
*A111000                                                       @OY11520
*A162099,C222200                                               @OS76283
*C428680                                                       @OY11499
*C411735,D411766-411767                                        @OS76490
*C188600                                                       @OY12393
*D376100                                                       @OS76479
*C162570                                                       @OY12287
*D163020-163160                                                @OY12287
*D196820-196960                                                @OY12287
*A339600,D340200-340800,C342000,C344600,D345000-345400,C346100 @OZ07786
*A250800,C251800-252000                                        @OY10984
*A374200                                                       @OX11954
*C519000-519800                                                @OY11983
*A023000,603700,653120,710850                                  @XA08073
*C162090,603600,653100,657580-657730                           @XA08073
*A204130                                                       @OZ09265
*D190840,190960                                                @OS76981
*C330280,330286,A330290                                        @OX12505
*C353800                                                       @OX12508
*C621400                                                       @OX12509
*C187000                                                       @OS76996
*A246800                                                       @OY12676
*A689800                                                       @OX12511
*A120568                                                       @OZ09957
*A310200,C311870-311890                                        @OZ09279
*C353800                                                       @OY13656
*A166200                                                       @OX12567
*C643040                                                       @OZ08362
*D643120                                                       @OY13667
*C621400                                                       @OZ08362
*A058800                                                       @OS77837
*D201800-202000,208400-208600                                  @OY14092
*A232000                                                       @OS77835
*A086200,408400,C270600-270800,431400,D409400,A097720          @OY14057
*D250810-250900,251820-252090,C086300-086320                   @OY14057
*C398650-398700                                                @OX12579
*A207200,C657614-657668                                        @OY13632
*A376000                                                       @OS77376
*A493000                                                       @OX14778
*A127350                                                       @OZ14176
*D127230-127350,A133200                                        @OZ14197
*A101640,A101700                                               @OS77954
*A683800,A694800                                               @OX14796
*C166215                                                       @OX16385
*D429900,429930                                                @OZ16530
*A432886                                                       @OS77965
*A029800,451480,C701954,702020                                 @OZ16540
*D035250,035300                                                @OX16693
*A235000                                                       @OX16686
*C133230-133320                                                @OZ17622
*A428685                                                       @OZ18753
*C101641                                                       @OS78332
*A270650                                                       @OX16703
* C001810,012000,035400,035600,454340,701404                   @G36XRIV
*D106800-107200,C107210-107220,162600,288000,A448920           @OX17153
*C036288,A036296,D101641-101655,D101710                        @OZ24288
*C225600                                                       @OX19180
*A127200                                                       @OZ25091
*D133220,133270                                                @OZ25091
*C230000                                                       @OS79864
*D493060-493120                                                @OZ25700
*D166203-166212,D166221                                        @OZ26326
*A451480                                                       @OZ25960
*A036288                                                       @OZ27868
.*A527200                                                      @OY19728
*A522909                                                       @OZ29663
*C216000                                                       @OY19793
*A451400                                                       @OX21187
*A693000                                                       @OZ30260
*A033800                                                       @OY20488
*C719428,719500                                                @OY20488
*A366200                                                       @OY20569
*C242800                                                       @OZ31566
.*****        DEVELOPMENT                                       *******
.*A022460-022520,442600-444700,448186-448193,720160-720187       Y02027
.*C030860,030980                                                 Y02027
.*D033940,442600-445800,448020-448160,448186-448192              Y02027
***********************************************************************
*                                                                     *
         TITLE '&NAME     LINE END APPENDAGE'
&NAME    CSECT
*                                                                     *
***********************************************************************
*TITLE -- LINE END APPENDAGE                                          *
*                                                                     *
         AIF   ('&GEN' NE 'MINI').TAG1
*       MODULE NAME = IGG019Q4 (MINI)                                 *
         AGO   .TAG5
.TAG1    AIF   ('&GEN' NE 'STSP').TAG2
*       MODULE NAME = IGG019Q3 (START/STOP)                           *
         AGO   .TAG5
.TAG2    AIF   ('&GEN' NE 'BISC').TAG3
*       MODULE NAME = IGG019Q2 (BI-SYNC)                              *
         AGO   .TAG5
.TAG3    AIF   ('&GEN' NE 'QTAM').TAG4
*       MODULE NAME = IGG019Q5 (QTAM)                                 *
         AGO   .TAG5
.TAG4    AIF   ('&GEN' NE '').TAG5
*       MODULE NAME = IGG019R0 (BOTH)(BLANK)                          *
.TAG5    ANOP
*                                                                     *
*       DESCRIPTIVE NAME = LINE END APPENDAGE                         *
*                                                                     *
*       COPYRIGHT = 'NONE'                                            *
*                                                                     *
*       STATUS: CHANGE LEVEL 10                                @G36XRIV
*                                                                     *
*FUNCTION -- AS A LOGICAL EXTENSION OF IOS LINE END APPENDAGE OBTAINS *
*   CONTROL WHEN AN I/O INTERRUPT OCCURS WITH ENDING STATUS, WHEN AN  *
*   ERROR IS DETERMINED TO BE PERMANENT BY ERP, OR WHEN AN ERROR IS   *
*   CLEARED BY ERP.                                                   *
*                                                                     *
*ENTRY POINTS -- FIRST EXECUTABLE INSTRUCTION                         *
*                                                                     *
*INPUT -- R2  IOB ADDRESS                                             *
*   R14 RETURN ADDRESS                                                *
*   R15 ENTRY POINT ADDRESS                                           *
*                                                                     *
*OUTPUT -- REGISTERS 0-9,14,15 REMAIN TRANSPARENT TO IOS UPON EXIT    *
*   FROM THIS MODULE                                                  *
*                                                                     *
*EXTERNAL ROUTINES --                                                 *
*   OS POST - TO POST MCP WAIT COMPLETE                               *
*                                                                     *
*   STAGE TWO OF EXIT EFFECTOR - TO SCHEDULE IQE                      *
*                                                                     *
*                                                                     *
*   'TCB REMOVAL ROUTINE' - TO MAKE MCP TCB NON-DISPATCHABLE FOR MP   *
*   65 ONLY.                                                          *
*                                                                     *
*   'IEDQKA02' - I/O GENERATOR SUBROUTINE TO BUILD CONTINUE CHANNEL   *
*   PROGRAMS.                                                         *
*                                                                     *
*   'IEDQTNT' - TO OBTAIN TERMINAL TABLE ENTRY ADDRESS FROM TNT OFFSET*
*                                                                     *
*   'IEAPTRV' - TO CONVERT REAL ADDRESS TO VIRTUAL               X01004
*                                                                X01004
*EXITS-NORMAL --                                                      *
*   B  4(14) - TO SKIP POST AND FREE REQUEST ELEMENT                  *
*   B  8(14) - TO RESTART A CHANNEL PROGRAM                           *
*                                                                     *
*EXITS-ERROR --                                                       *
*   BR  14 TO SCHEDULE ERP UPON 1ST DETECTION OF ERROR                *
*                                                                     *
*TABLES/WORK AREAS -- DSECTS OF CONTROL BLOCKS GENERATED BY MACROS:   *
*   TAVTD                                                             *
*   TLCBD                                                             *
*   TQCBD                                                             *
*   TTRMD                                                             *
*   TTSID                                                             *
*   TCCWD                                                             *
*   TSCBD                                                             *
*   TPRFD                                                             *
*   DCBD                                                              *
*   TRECBD                                                            *
*   TTNTD                                                             *
*   TDEBD                                                             *
*                                                                     *
*ATTRIBUTES -- REFRESHABLE, SUPERVISOR MODE, ENABLED.          @G36XRIV
*                                                                     *
*NOTES -- THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A         *
*   PARTICUALR INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER      *
*   SET.                                                              *
*                                                                     *
*   IF A PERMANENT ERROR HAS NOT OCCURRED, ENDING STATUS IS EXAMINED  *
*   TO DETERMINE IF ERP IS TO BE SCHEDULED.  UNUSUAL ENDING STATUS    *
*   RESULTS IN A RETURN TO IOS TO SCHEDULE THE FIRST LOA: OF ERP FOR  *
*   THIS DEVICE.                                                      *
*                                                                     *
*   WHEN ERP ACTION IS NOT REQUIRED, LINE END APPENDAGE OBTAINS THE   *
*   TP OP CODE FOR THE FAILING CCW BY USING THE ADDRESS IN THE CSW AS *
*   AN INDEX ARGUMENT INTO A LIST OF TP OP CODES (LCBTPCD).  THE TP   *
*   OP CODE IS USED AS AN INDEX INTO A BRANCH TABLE, TO TAKE          *
*   SPECIFIC ACTION FOR THIS INTERRUPT.  TWO TABLES ARE EMPLOYED.     *
*   ONE IS FOR NORMAL ENDING STATUS.  THE OTHER FOR ERROR CONDTIONS   *
*   DETTECTED BY ERP.                                                 *
*                                                                     *
*   FOR ERRORS THAT HAVE OCCURRED PRIOR TO TEXT TRANSFER, A ZERO      *
*   LENGTH BUFFER IS POSTED TO MH FOR INMSG/OUTMSG PROCESSING.        *
*                                                                     *
*   IF AN EOB INTERRUPT OCCURS WHILE RECEIVING A MESSAGE, A RESTART   *
*   IS MADE FROM THE APPENDAGE UNLESS MH PROCESSING IS REQUIRED.      *
*   WHEN EOT IS RECEIVED, THE FILLED BUFFER(S) ARE POSTED TO MH       *
*   INDICATING THAT THIS IS END OF MESSAGE.  FOR AN EOB INTERRUPT ON  *
*   OUTPUT, PREVIOUS BUFFERS ARE POSTED TO THE BUFFER RETURN QCB AND  *
*   A RESTART IS ACCOMPLISHED.  THE LAST BUFFER  OF A SUCCESSFULLY    *
*   SENT MESSAGE IS POSTED TO BUFFER DISPOSITION FOR OUTMSG EXITS.    *
*                                                                     *
*   IN THE EVENT OF A TEXT MODE ERROR, THE ABOVE ACTION IS TAKEN      *
*   EXCEPT THAT THE BUFFER REFLECTING THE INTERRUPT IS POSTED TO MH   *
*   TO OBSERVE USER SELECTED OPTIONS.                                 *
*                                                                     *
*   THE 'SCAN' ROUTINE IS ENTERED FROM PCI APPENDAGE AS WELL AS FROM  *
*   LINE END APPENDAGE.  ITS ADDRESS IS ALWAYS AT AN OFFSET OF 4 INTO *
*   THIS MODULE.  OPEN MOVES THIS ADDRESS INTO THE AVT FOR ACCESS BY  *
*   PCI APPENDAGE.                                                    *
***********************************************************************
         EJECT
         USING IEDQPRF,RPREFIX
         USING IEDQLCB,RLCB
         USING IEDQCCW,RCCW
         USING IEDQAVTD,RAVT
         USING IEDQSCB,RSCB
         USING IEDQLCBX,RE                                       S99228
*
*        REGISTER EQUATES
*
R0       EQU   0
R1       EQU   1 .                     GENERAL REGISTER         SA48278
RLCB     EQU   2                        LCB BASE
RWKA     EQU   3
CURR     EQU   3 .                      ADDR OF CURRENT ELEMENT  Y02027
*                                  ON ASYNCHRONOUS READY QUEUE   Y02027
RBASE    EQU   4
RF       EQU   5                        WORK REGISGER
RPREFIX  EQU   6
RLIST    EQU   6                        INVITATION LIST REG    @XA08073
RA       EQU   7                        WORK REGISTER
RB       EQU   8                        WORK REGISTER
RC       EQU   9                        WORK REGISTER
RD       EQU   10                       WORK REGISTER
RDCB     EQU   10
RE       EQU   11                       WORK REGISTER
R11      EQU   11
RCCW     EQU   12                       CCW BASE
RAVT     EQU   13                       AVT BASE
RSCB     EQU   14                       SCB BASE
R14      EQU   14
R15      EQU   15
         EJECT
         DC    A(ELINEND-&NAME)         LENGTH OF MODULE         X02004
         USING *,R15                                             X02004
         B     ID
         AIF   ('&GEN' EQ 'MINI').L6
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ '').LL41           S99228
SCANAD   DC    A(0)                     DUMMY SCAN ROUTINE ADCON S99228
*                                       TO PRESERVE DISPLACEMENTSS99228
*                                       OF LOOKAD AND SORCEAD FORS99228
*                                       START-STOP               S99228
         AGO   .LL42                                             S99228
.LL41    ANOP                                                    S99228
* * * * * * * * * * * * * * * * * * * * * *  * * *  * * * * * * * * * *
* * *    SCANAD MUST ALWAYS BE AT AN OFFSET OF FOUR IN TO THIS    * * *
* * *    APPENDAGE.                                               * * *
* * * * * * * * * * * * * * * * * * * * * *  * * *  * * * * * * * * * *
SCANAD   DC    A(SCAN)                  SCAN FOR BSC READ TEXT
* * * * * * * * * * * * * * * * * * * * * *  * * *  * * * * * * * * * *
*                                                                S99228
*                                                                S99228
* LOOKAD AND SORCEAD MUST BE AT OFFSET EIGHT AND TWELVE          S99228
* RESPECTIVELY                                                   S99228
*                                                                S99228
.LL42    ANOP                                                    S99228
LOOKAD   DC    A(LOOKER)                ADDR DVCCSTCS LOC RTN    S99228
SORCEAD  DC    A(SOURCER)               ADDR GENPOLL SRC DET RTN S99228
FNDQCBAD DC    A(FINDQCB) .             FIND DEST QCB ROUTINE    S22029
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'QTAM').L6         S99228
FINDAD   DC    A(FINDER)                ADDR INVLIST ENT LOC RTN S99228
*                                                                S99228
*                                                                S99228
BSCRSPAD DC    A(BSCRSP)                BSC READ RESPONSE TO TEXT
CHACKAD  DC    A(CHACK)                 CHECK RESPONSE -BSC
BSC27AD  DC    A(BSC270X)               CSW ADJUST BSC WRITES TEXT
.L6      AIF   ('&GEN' EQ 'MINI').L701
IDCHKAD  DC    A(IDCHK)                 ID CHECK ROUTINE
         AIF   ('&GEN' EQ 'BISC').L7
         AIF   ('&GEN' EQ 'QTAM').CA
DYNCAD   DC    A(DYNC) .                                         TSO
.CA      ANOP                                                    S22025
TSOCHKAD DC    A(TSOCHK)
OPCHKAD  DC    A(OPCHK1)
.L7      ANOP
POLLAD   DC    A(POLLRT)               AUTOPOLL ROUTINE
POLLADR  DC    A(POLLCK)                                       @OZ16540
.L701    ANOP
&NAME    IEDHJN , .                     MODULE ID AND DATE       S22025
ID       DS    0H
         L     R11,CVTPTR .            PICKUP CVT ADDRESS        Y02027
         L     RAVT,AVTCVTPT(,R11) .    LOAD LIST                X01004
         L     RAVT,ZERO(,RAVT) .       AVT BASE                 X01004
         STM   R0,RC,AVTSAVEX .         SAVE REGISTERS           X01004
         ST    R14,AVTDPARM .           SAVE RETURN ADDRESS      X01004
         LA    RCCW,DEBNMSUB-DEBAPVT    OFFSET TO DEB PREFIX     Y02027
         LA    R15,0(RWKA)              COPY DEB ADDRESS         Y02027
         SR    R15,RCCW                 DEB PREFIX               Y02027
         L     R15,SIOPTR(,R15)         ADDRESS OF SIO APPENDAGE X02004
         BAL   RCCW,INTENTRY(R15)       LINK TO SIO APPENDAGE TO X02004
*                                       TRANSLATE CCW'S REAL TO  X02004
*                                       VIRTUAL.                 X02004
         DROP  R15                                               X02004
         USING *,RCCW                   SET TEMPORARY BASE       X02004
TEMPBASE EQU   *                                                 Y02027
         SPACE 2                                                 X02004
         SH    RLCB,LCBSIZE             BACK UP TO LCB           X02004
         NI    LCBERBST,AVTEFF-LCBLOGDV RESET LOG REQUESTED    @OY20488
         TM    LCBINCAM+1,AVTEFF        DID IOHALT INTERRIPT AN  Y02027
*                                       INTERIM I/O OPERATION
*                                       OF ERP. EG BREAK FOR UE
         BZ    NOIOHLT                  BRANCH NO ERP FLAGS SET  Y02027
         BM    IOHLT                    YES, SET IOHALT FLAGS    Y02027
*        IF LCBINCAM+1=X'FF' , ENTRY FROM CLOSE FOR END OF DAY   Y02027
*        OBR/SDR RECORDING.                                      Y02027
         LA    RBASE,DEBNMSUB-DEBAPVT   OFFSET TO DEBPREFIX      Y02027
         LA    R15,0(RWKA)              COPY DEB ADDRESS         Y02027
         SR    R15,RBASE                DEB PREFIX               Y02027
         L     R15,CEPTR(,R15)          ADDRESS OF LINE END      Y02027
         DROP RCCW
         USING &NAME+FOUR,R15,RBASE
         LA    RBASE,FOUR095(,R15)      SET UP SECOND BASE       Y02027
         LA    RBASE,ONE(,RBASE)        CLEAR HIGH-ORDER BYTE    Y02027
         LA    RCCW,LCBCPA              SET CCW ADDR. FOR CLOSE  Y02027
         B     PERMENT                  GO TO ERP FOR END OF DAY Y02027
*                                       OBR/SDR RECORDING        Y02027
         DROP  R15,RBASE
         USING TEMPBASE,RCCW
IOHLT    EQU   *                                                 Y02027
         SPACE 1
         MVI   LCBINCAM+1,ZERO           RESET ERP FLAG
         MVI   LCBECBCC,X48             SET HIO COMPLETION
NOIOHLT  EQU   *
.CONC1   ANOP                                                    S22026
         MVI   LCBCSW+5,0               CLEAR FIRST BYTE OF CSW
*                                         INVALID ON PROG CHECK
*                                         INT ALREADY TRACED    SA65906
         LA    R14,NOTRACE              SET RETURN ADDRESS       Y02027
         SR    R15,R15                  CLEAR FOR ICM          @G36XRIV
         ICM   R15,AD,AVTIOT+1          ADDRESS OF I/O TRACE   @G36XRIV
         BNZR  R15                      LINK TO IGG019Q0         Y02027
         DROP  RCCW                     DROP TEMPORARY BASE      X02004
         USING IEDQCCW,RCCW             SET CCW ADDRESSABILITY   X02004
NOTRACE  EQU   *
         LA    RBASE,DEBNMSUB-DEBAPVT   OFFSET TO DEB PREFIX     Y02027
         LA    R15,0(RWKA)              COPY DEB ADDRESS         Y02027
         SR    R15,RBASE                DEB PREFIX               Y02027
         L     R15,CEPTR(,R15)          ADDRESS OF LINEEND       X02004
         USING &NAME+FOUR,R15,RBASE
         LA    RBASE,FOUR095(,R15)      SET UP SECOND BASE     @ZA02096
         LA    RBASE,ONE(,RBASE)        CLEAR HIGH-ORDER BYTE  @ZA02096
         TM    LCBCSW+FOUR,SIX          POSSIBLE ACR           @ZA02096
         BNZ   ACRCK                    GO CHECK ACR           @ZA03108
TESTCC3  EQU   *                                               @ZA02096
         TM    LCBSIOCC,CC3             SIO COND. CODE THREE     Y02027
         BO    ERPEXT                   YES, EXIT TO ERP         Y02027
         TM    LCBSIOCC,CC1             SIO COND. CODE ONE       Y02027
         BNO   NOTCC1                   BRANCH NOT CONDITION 1   Y02027
SETLCBCS EQU   *                                               @ZA02096
         ICM   R14,AD,LCBSTART          START OF CHANN PROG    @ZA02096
         LA    R14,EIGHT(R14)           BUMP BY EIGHT            Y02027
         STCM  R14,AD,LCBCSW            UPDTE CSW FOR SIOCCC=1   Y02027
NOTCC1   EQU   *                                                 Y02027
         L     RSCB,LCBSCBA-1           SCB ADDRESS              X02004
         TM    SCBQTYPE,SCBCONC         IS THIS A CONCENTRATOR   X02004
         BNO   NOTCONCA                 BRANCH NO                X02004
         L     RSCB,LCBSCBDA-1          CONC SCB ADDRESS         X02004
         OI    SCBQTYPE,SCBCONC         SET CONC FLAG            X02004
NOTCONCA EQU   *                                                 X02004
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR         SA65392
         BE    NOTHRESH                 BR YES, DO NOT UPDATE   SA65392
*                                         THRESHHOLD COUNTERS   SA65392
         USING DEBTCBAD,RWKA            DEB ADDRESSIBILITY      SA65392
         SR    RCCW,RCCW                CLEAR WORK              SA65392
         LR    RF,RCCW                  REGISTERS               SA65392
         IC    RCCW,DEBNMEXT            GET NUMBER EXTENTS      SA65392
         SLL   RCCW,TWO                 SIZE OF UCB ADDRESSES   SA65392
         L     RCCW,DEBUCBAD(RCCW)      THRESHHOLD AREA         SA65392
         IC    RF,LCBUCBX               RLN MINUS ONE           SA65392
         SLL   RF,THREE                 THRESHOLD INDEX        @OZ24288
         AR    RCCW,RF                  ADD 8 TIMES RLN AND    @OZ27868
         SRL   RF,1                     ADD HALF AGAIN FOR     @OZ24288
         AR    RCCW,RF                  ERRMSG SAVE AREA       @OZ24288
         CLC   ZERO(ONE,RCCW),AVTHRESH  TRANSMISSIONS REACHED   SA65392
         BNL   INIT                     BR YES, INITIALIZE      SA65392
         IC    RF,ZERO(RCCW)            INCREMENT               SA65392
         LA    RF,ONE(RF)               THRESHHOLD              SA65392
         STC   RF,ZERO(RCCW)            COUNTER                 SA65392
         B     NOTHRESH                 AND CONTINUE            SA65392
INIT     EQU   *                                                SA65392
         MVC   ZERO(FOUR,RCCW),AVTFZERO INITIALIZE COUNTERS     SA65392
         MVI   ZERO(RCCW),ONE           INITIALIZE TRANS CNT    SA65392
NOTHRESH EQU   *                                                SA65392
TSO2     EQU   *                                                    TSO
          L     RCCW,LCBCSW-1            FAILING CCW+8
         LA    RCCW,AVTEZERO(,RCCW)     CLEAR HI ORDER BYTE
         SH    RCCW,H8                  BACK UP TO INTRPT CCW
         AIF   ('&GEN' EQ 'MINI').L8A
         AIF   ('&GEN' EQ 'BISC').L8A
* PLEASE NOTE THAT THE FOLLOWING CODE TO SET AND RESET LCBCIRCD WILL
* WORK FOR A 1050 ONLY SO LONG AS THE RESPONSE TO POLL OR ADDRESSING
* GENERATES AN INTERRUPT. THE BIT IS USED TO DETERMINE WHETHER OR NOT
* A WRITE BREAK COMMAND WILL BE EXECUTED AFTER A HALT I/O.
         L     RWKA,LCBSTART-1          ADDRESS OF START CCW        TSO
         LA    RWKA,0(RWKA)             CLEAR HIGH ORDER BYTE       TSO
         LA    RF,LCBCPA-1              IS CCW IN CH PGM AREA   SA56915
         CR    RWKA,RF                  COMPARE ADDRESS         SA56915
         BNH   NOT2741                  BR IF RESTART OCCURED   SA56915
         SR    RF,RF                    CLEAR FOR INSERT CHAR   SA56915
         L     RA,LCBDCBPT              POINT TO DCB            SA56915
         USING IHADCB,RA                ADDRESSABILITY          SA56915
         IC    RF,DCBEIOBX              SIZE OF LCB             SA56915
         DROP  RA                       ELIMINATE DCB REG       SA56915
         LA    RF,0(RLCB,RF)            POINT TO END OF LCB     SA56915
         CR    RWKA,RF                  CCW IN LCB ?            SA56915
         BH    NOT2741                  BRANCH NO               SA56915
         CLI   0(RWKA),CCWWRITE         WAS START CCW A WRITE       TSO
         BNE   NOT2741                  BRANCH ON NO                TSO
         CR    RCCW,RWKA                IS FIRST CCW THE            TSO
*                                       INTERRUPT CCW               TSO
         BNE   NOTINT                   BRANCH ON NO                TSO
         SR    R0,R0                    CLEAR REGISTER              TSO
         CH    R0,LCBCSW+5              IS RESIDUAL COUNT ZERO      TSO
         BE    NOTINT                   BRANCH IF SO              M5953
         CLI   4(RWKA),X20              IS THIS RESPONSE OWED CCW M5953
         BNE   NOT2741                  IF NOT, CONTINUE          M5953
         OI    LCBTSOB,LCBCIRCD         INDICATE IN TEXT MODE     M5953
         OI    LCBSTAT2,LCBRESP         INDICATE RESPONSE OWED    M5953
         B     NOT2741                  BRANCH TO CONTINUE        M5953
NOTINT   EQU   *                                                    TSO
         L     RWKA,0(RWKA)             DATA ADDRESS FROM CCW       TSO
         CLI   0(RWKA),CIRCD            WAS FIRST CHAR A CIRCLE-D   TSO
         BNE   NOTCIRCD                 BRANCH ON NO                TSO
         OI    LCBTSOB,LCBCIRCD         INDICATE CIRCLE-D SENT      TSO
         B     NOT2741                                              TSO
NOTCIRCD EQU   *                                                    TSO
         CLI   0(RWKA),CIRCC            WAS FIRST CHAR CIRCLE-C     TSO
         BNE   NOT2741                  BRANCH ON NO                TSO
         NI    LCBTSOB,X'FF'-LCBCIRCD   INDICATE CIRCLE-C SENT      TSO
NOT2741  EQU   *                                                    TSO
         CLI   LCBTPCD+11,X'AC'         OPEN LINE CHECK?            TSO
         BE    OPCHK                    YES. GO PUT UP PREPARE      TOS
.L8A     ANOP
         CLI   LCBECBCC,X48 .           HIO INTERRUPT               TSO
         BNE   TSO8 .                   BRANCH NO                   TSO
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L8
         AIF   ('&GEN' EQ 'QTAM').L8
         TM    LCBTSOB,LCBPREP          IS PREPARE ON LINE          TSO
         BO    RTPREP                   BRANCH ON YES               TSO
         TM    LCBTSOB,LCBWRBRK         WAS A BREAK REQUESTED?      TSO
         BNZ   CHKBRK                   CHECK IF BREAK
         SPACE
.L8      ANOP
CHKMSGEN EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BO    ERBPOST                  BRANCH IF YES
         CLI   LCBTPCD,TPOPEN .         INITIALIZATION SEQUENCE
         BE    EROPEN                   BRANCH YES              SA62408
         L     RCCW,LCBLSPCI-1          FREE ALL BUFFERS UP TO HERE
         OI    LCBCHAIN,LCBNORTY        SET NO RETRY
         TM    LCBSTAT1,LCBRECVN        RECEVIE STATE
         BZ    ADDERR                   NO, IT'S ON SEND SIDE
         MVC   PRFSIZE-IEDQPRF(2,RCCW),PRFEOB-IEDQPRF(RCCW)    @SA75471
         TM    PRFSTAT1-IEDQPRF(RCCW),PRFNHDRN HEADER
         BO    POSTALL                  NO, FREE UP PREVIOUS BFR A56906
*                                               TO ZERO IF HDR  SA64676
         TM    LCBERBST,LCBDLNKN        IS ERB AVAILABLE (NO PCI)A56906
         BO    CLEANUP                  YES, POST LCB TO BD
         B     POSTALL                  FREE UP PREVIOUS BUFFERS
         SPACE 1                                                 X02004
LCBSIZE  DC    AL2(LCBFLAG1-IEDQLCB)    LCB PRIOR TO IOB         X02004
ACRCK    EQU   *                                               @ZA03108
         L     R14,LCBSTART-1           START OF CCWS          @ZA03108
         LA    R14,EIGHT(R14)           BUMP TO END OF FIRST   @ZA03108
         STCM  R14,AD,LCBCSW            SET NEW CCW ADDR IN CSW@ZA03108
         B     TESTCC3                  NO, TEST FOUND CODE    @ZA02096
         SPACE
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L8B
         AIF   ('&GEN' EQ 'QTAM').L8B
CHKBRK   EQU   *
         MVI   LCBCPA,CCWBREAK .        BREAK COMMAND               TSO
         LA    RA,THREE                                             TSO
         ST    RA,LCBCPA+4 .            LENGTH FOR BREAK            TSO
         MVI   LCBTPCD,X12 .            TP OP CODE                  TSO
         LA    RA,LCBCPA .              START ADDR FOR IOS          TSO
         ST    RA,LCBSTART-1            MOVE IN START ADDRESS       TSO
         MVC   LCBCSWSV(7),LCBCSW .     SAVE ENDING STATUS          TSO
         MVI   LCBECBCC,X'7F'           RESET COMPLETION CODE       TSO
         TM    LCBTSOB,LCBCIRCD         IS TERMINAL IN TEXT MODE    TSO
         BO    RTWRBRK                  BRANCH IF YES, DONT WR BRK  TSO
         B     RESTART                  BRANCH TO ISSUE BREAK       TSO
.L8B     ANOP
TSO8     EQU   *                                                    TSO
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L8C
         AIF   ('&GEN' EQ 'QTAM').L8C
         CLI   LCBTPCD+11,X'BE'         IS SMI/WCC FLAG SET   S22028TSO
         BE    CHK3270R                 YES, BRANCH           S22028TSO
TSO8A    EQU   *                                              S22028TSO
         CLI   LCBTPCD+10,X'AE'         5041 CHECK?                 TSO
         BE    GODYNC                                               TSO
.L8C     ANOP
         CLI   LCBRSKEY,LCLRSCH         LOCAL DEVICE?            S99228
         BNE   CEDETOG                  BRANCH NO                S99228
         ICM   RA,AD,LCBCSW             INTERRUPT ADDR = 0       Y01948
         BNZ   CEDETOG                  BRANCH NO                S99228
         L     RA,LCBSTART-ONE          LOAD START ADDRESS       S99228
         CLI   LCBECBCC,PERMERR         PREMANENT ERROR ?       OY03460
         BE    INTERSET                 YES, BRANCH             OY03460
         CLI   ZERO(RA),CCWEAU          3270 EAU COMMAND?        S99228
         BNE   MAYBESEL                 BRANCH NO                S99228
         LA    RA,LCBCPA+16             LOAD ADDR EAU CCW        S99228
         B     INTERSET                 SET INTERRUPT ADDRESS    S99228
MAYBESEL EQU   *                                                 S99228
         CLI   ZERO(RA),CCWSEL          3270 SELECT CHANNEL PGM? S99228
         BNE   MAYBEGEN                 BRANCH NO                S99228
         L     RA,LCBLSPCI-ONE          LOAD BUFFER ADDRESS      S99228
         B     BEGIN                    ENTER LOOP               S99228
MAYBEGEN EQU   *                                                 S99228
         LA    RA,LCBCPA                LOAD ADDR MSGGEN CCW     S99228
         B     INTERSET                 SET INTERRUPT ADDRESS    S99228
NEWCCW   EQU   *                                                 S99228
         L     RA,EIGHT(R0,RA)          LOAD TIC CCW             S99228
BEGIN    EQU   *                                                 S99228
         CLI   TICEND(RA),TWO           END OF CHANNEL PROGRAM?  S99228
         BNE   NEWCCW                   BRANCH NO                S99228
INTERSET EQU   *                                                 S99228
         LR    RCCW,RA                  SET INTERRUPT ADDRESS    S99228
         LA    RCCW,ZERO(,RCCW)                                 OY03460
         LA    RA,EIGHT(R0,RA)          INCREASE ADDR FOR CSW    S99228
         STCM  RA,AD,LCBCSW             SET INTERRUPT ADDRESS    Y01948
CEDETOG  EQU   *                                                 S99228
         CLI   LCBECBCC,PERMERR         PREMANENT ERROR ?       OY03460
         BE    PERMENT                  YES, BRANCH             OY03460
         TM    LCBCSW+4,X'20'           CHAN PROG CHECK
         BZ    NOPC                     NO
         TM    CCWOPCDE,SEVEN           IS OP CODE A TIC         X01004
         BZ    ITSPC                    YES                      X01004
         CLI   CCWCOUNT+1,AVTEZERO .    ZERO COUNT CCW           S22025
         BNE   ERP .                    BRANCH IF NO             S22025
         TM    CCWFLAGS,CCWCD+CCWCC .   ANY CHAINING FLAGS       S22025
         BZ    NOPC .                   NO, NORMAL END OF MSG    S22025
         B     ERP .                    LET ERP PROCESS          S22025
ITSPC    EQU   * .                                               S22025
         TM    CCWADDR+2,X'01'          BUFFER BEING ASSIGNED
         BZ    NOTASGN                  NO
ASGN     EQU   *
         NI    CCWADDR+2,AVTEFF-X'01'   CLAR BIT
         CLI   LCBRSKEY,LCLRSCH         LOCAL DEVICE             X03963
         BNE   NEXTBUF                  BR NO, GET NEXT BUFFER   X03963
         L     RA,AVTSAVEX+REG7         UCB ADDRESS              X03963
         CLI   TTY4(RA),LCL3277         3270 LOCAL               X03963
         BL    NEXTBUF                  BR NO, GET NEXT BUFFER   X03963
         LA    RCCW,LCBCPA+16           RESTART ON SELECT COM    X03963
         B     EXIT3                    TO RESTART               X03963
NEXTBUF  EQU   *                                                 X03963
         L     RCCW,CCWADDR-1           GET NEXT BUFFER
         B     EXIT3                    RESTART ON NEXT BUFFER
NOTASGN  EQU   *
         TM    CCWADDR+2,X'02'          VALID PROGRAM CHECK
         BZ    ASGN                     NO
         TM    SCBERR1,SCBCUTFN         CUT OFF EXECUTED
         BNZ   RTOPCUT                  POST LCB TO CUTOFF       A67139
         OI    SCBERR1,SCBNOBFN .       SET INSUFFICINET BUFFERS S21101
         TM    LCBCSW+3,X'02'           UNIT CHECK ALSO
         BO    ERP                      BRANCH IFYES TO CLEAR ERROR
         B     TEXT                     POST PREVIOUS BUFFERS
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L8D
         AIF   ('&GEN' EQ 'QTAM').L8D
CHK3270R EQU   *                                              S22028TSO
         LH    RC,LCBTTCIN              TERMINAL OFFSET       S22028TSO
         L     RA,AVTRNMPT              TNT CODE BASE         S22028TSO
         USING IEDQTNTD,RA                                    S22028TSO
         BAL   RPREFIX,TNTDCODE         FIND TERMINAL TYPE    S22028TSO
         DROP  RA                                             S22028TSO
         USING IEDQTRM,RB                                     S22028TSO
         L     RB,TRMDESTQ-1            GET QCB ADDRESS       S22028TSO
         DROP  RB                                             S22028TSO
         TM    QCBTSOF2-IEDQQCB(RB),QCBDSSMI HAS WCC BEEN SENTS22028TSO
         BO    SKIPUE                   BRANCH NOT SENT         SA61779
         B     TSO8A                    BRANCH NOT SENT       S22028TSO
.L8D     ANOP
PCSTART  EQU   *
         NI    SCBERR1,AVTEFF-SCBNOBFN  RESET INSUFF BFRS ERROR@OS77837
         MVI   LCBCPA+12,X'20'         FLAG TO ASSIGN BUFFERS FROM
         LA    RCCW,LCBCPA              FOR TIC
         ST    RCCW,LCBCPA+8            SET IN TIC ADDRESS
         MVI   LCBCPA+8,CCWTIC          SET COMMAND CODE
         B     EXIT3                    RESTART ON NEXT BUFFER
*                                         IDLES OR SKIP LOOP
NOPC     EQU   *
         TM    LCBCSW+4,X'1F'           SEVERE CHANNEL ERRORS
         BNZ   ERP                      YES
         TM    LCBCSW+3,X'D2'           DEVICE ERROR            SA59028
         AIF   ('&GEN' EQ '').LI2
         AIF   ('&GEN' EQ 'STSP').LI2
         AIF   ('&GEN' EQ 'QTAM').LI2
         BNZ   ERP
         AGO   .L10
.LI2     ANOP
         BZ    NOUC                     BRANCH NO UNIT CHECK
         CLI   LCBRSKEY,LCLRSCH         LOCAL DEVICE?            S99228
         BE    ERPEXIT                  RETURN TO IOS FOR ERP   SA59027
         L     RA,TSOCHKAD
         BR    RA
NOUC     EQU   *
.L10     ANOP
         TM    LCBCSW+3,UNEX            UNIT EXCEPTION
         BZ    PERMENT                  NO
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L10A      SA51090
         L     RC,AVTSAVEX+UCBOFFST     UCB ADDRESS FROM SAVE    X02004
         CLI   UNITYPE(RC),AVTEZERO     IS THIS AUDIO           SA51090
         BE    ERP                      IF SO, TRY ERP          SA51090
.L10A    ANOP                                                   SA51090
         CLI   CCWOPCDE,CCWREAD         READ COMMCAN
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L11
         AIF   ('&GEN' EQ 'QTAM').L11
         BE    PERMENT                  YES, NORMAL
         CLI   CCWOPCDE,CCWINHIB        INHIBIT
.L11     ANOP
         BNE   ERP                      NO, NOT NORMAL
         EJECT
*
*        THE TP OP CODE FOR THE INTERRUPTED CCW IS OBTAINED BY
* USING THE ADDRESS IN THE CSW AS AN INDEX ARGUMENT INTO A LIST OF
* TP OP CODES (LCBTPCD).  AN ENEN VALUED TP OP CODE REPRESENTS A TEXT
* OR NON-TEXT RELATED CCW FOR WHICH AN INTERRUPT IS ANTICIPATED.  AN
* EVEN VALUED TP OP CODE IS USED AS AN INDEX INTO A BRANCH TABLE
* IN ORDER TO TAKE SPECIFIC ACTION FOR THIS INTERRUPT.  TWO TABLES
* ARE EMPLOYED:  ONE FOR NORMAL ENDING STATUS AND THE OTHER FOR
* ERROR CONDITIONS (SET BY ERP).
*        IF THE TP OP CODE HAS AN ODD VALUE, TESTS ARE MADE TO
* DETERMINE IF IT IS A TEXT OR NON-TEXT RELATED CCW.
*
PERMENT  EQU   *
         LA    RC,LCBCPA                START OF CHAN PROG AREA
         SR    RC,RCCW                  DIFFERENCE BETWEEN TWO
         BP    TEXT                     BRANCH IF TEXT
         SR    RB,RB                    CLEAR WORK REGISTER
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         IC    RB,DCBEIOBX              SIZE OF LCB
         DROP  RA
         LA    RB,AVTEZERO(RLCB,RB)     POINT TO END OF LCB
         SR    RB,RCCW                  CCW IN CHAN PROG AREA
         BNP   TEXT                     BRANCH IF TEXT
         LPR   RC,RC                    MAKE DIFFERENCE POSITIVE
         SRL   RC,THREE                 DIVIDE BY 8
         IC    RC,LCBTPCD(RC)           GET TP OP CODE FOR BRANCG
         STC   RC,AVTDOUBX              SAVE TP OP CODE
         TM    AVTDOUBX,X01             NON EXPECTED INTERRUPT
         BO    TRYTXTER                 BRANCH YES
         LH    RB,TABLE(RC)             OFFSET INTO TABLE
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BNE   TABLE1(RB)               BRANCH NO
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L8E
         AIF   ('&GEN' EQ 'QTAM').L8E
         CLI   LCBTPCD+11,X'BE'         IS SMI/WCC FLAG ON    S22028TSO
         BNE   PERMENT1                 NO, BRANCH            S22028TSO
         MVI   LCBTPCD+11,X'00'         CLEAR SMI/WCC FLAG    S22028TSO
PERMENT1 EQU   *                                              S22028TSO
.L8E     ANOP
         LH    RB,ERRTABLE(RC)          ENTRY INTO ERROR TABLE
         B     ERRTABLE(RB)             BRANCH TO ENTRY
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').LC1
         AIF   ('&GEN' EQ 'QTAM').LC1
GODYNC   EQU   *
         L     RF,DYNCAD                                            TSO
         BR    RF                                                   TSO
.LC1     ANOP
TABLE    EQU   *
         DC    AL2(RTERROR-TABLE1)      ERROR ENTRY
         DC    AL2(RTOPEN-TABLE1)       OPEN AND START LINE
         DC    AL2(RTPOLL-TABLE1)       READ RESPONSE TO POLL
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'BISC').L12
         DC    AL2(RTENAB-TABLE1)       ENABLE ON DIAL
         AGO   .L13
.L12     DC    AL2(RTERROR-TABLE1)
.L13     ANOP
         DC    AL2(RTRSPADD-TABLE1)     RESPONSE TO ADDRESSING
         DC    AL2(RTRSPEB-TABLE1)      READ RESPONS TO EOB
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L14
         AIF   ('&GEN' EQ 'QTAM').L14
         DC    AL2(RTRDENQ-TABLE1)      READ ENQ
         DC    AL2(RTRSPENQ-TABLE1)     READ RESPONSE TO ENQ
         AGO   .L15
.L14     DC    AL2(RTERROR-TABLE1)
         DC    AL2(RTERROR-TABLE1)
.L15     AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L16
         AIF   ('&GEN' EQ 'QTAM').L16
         DC    AL2(RTPREP-TABLE1)       PREPARE                     TSO
         DC    AL2(RTWRBRK-TABLE1)      WRITE BREAK                 TSO
         AGO   .L17
.L16     ANOP
         DC    AL2(RTERROR-TABLE1)
         DC    AL2(RTERROR-TABLE1)
.L17     AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L18
         AIF   ('&GEN' EQ 'QTAM').L18
         DC    AL2(RDLCOUT-TABLE1)      RD STX,/DLE STX
         AGO   .L19
.L18     ANOP
         DC    AL2(RTERROR-TABLE1)
.L19     ANOP
         DC    AL2(RTWRRSP-TABLE1)      WRITE RESPONSE OFFSET
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L20
         AIF   ('&GEN' EQ 'QTAM').L20
         DC    AL2(RTIDENQ-TABLE1)      READ ID ENQ
         DC    AL2(RTIDACK-TABLE1)      READ ID ACK
         AGO   .L21
.L20     ANOP
         DC    AL2(RTERROR-TABLE1)
         DC    AL2(RTERROR-TABLE1)
.L21     ANOP
         DC    AL2(RTTXTRST-TABLE1)     TEXT ABORT
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ '').L22
         AIF   ('&GEN' EQ 'QTAM').L22
         DC    AL2(RTERROR-TABLE1)
         AGO   .L23
.L22     ANOP
         DC    AL2(RTTWXID-TABLE1)      READ TWX ID
.L23     ANOP
         DC    AL2(RTBUFEOT-TABLE1)     RESET LINE AFTER A BLOCK
         DC    AL2(RTCLOSE-TABLE1)      CLOSE ENTRY
         DC    AL2(RTRSPAD-TABLE1)      RESET AFTER UNUSUAL RESP
*                                         TO ADDRESSING OR ENQ
         DC    AL2(RTEAU-TABLE1)        ERASE ALL UNPROTECTED  @OY14057
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ '').TS96          SA48276
         DC    AL2(RTERROR-TABLE1)                              SA48276
         AGO   .TS97                                            SA48276
.TS96    ANOP                                                   SA48276
         DC    AL2(RTRSPMG-TABLE1)      2260 RESP TO MSGGEN    @OY14057
.TS97    ANOP                                                  @OY14057
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ '').TS97A        @OY14057
         DC    AL2(RTERROR-TABLE1)                             @OY14057
         AGO   .TS97B                                          @OY14057
.TS97A   ANOP                                                  @OY14057
         DC    AL2(RTRS3270-TABLE1)     3270 FORMAT ERR RECOVRY@OY14057
.TS97B   ANOP                                                  @OY14057
ERRTABLE EQU   *
         DC    AL2(ERERROR-ERRTABLE)
         DC    AL2(EROPEN-ERRTABLE)
         DC    AL2(ERPOLL-ERRTABLE)
         AIF   ('&GEN' EQ 'MINI').L24
         DC    AL2(ERENAB-ERRTABLE)
         AGO   .L25
.L24     ANOP
         DC    AL2(ERERROR-ERRTABLE)
.L25     ANOP
         DC    AL2(ERRSPAD-ERRTABLE)
         DC    AL2(ERRSPEB-ERRTABLE)
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L26
         AIF   ('&GEN' EQ 'QTAM').L26
         DC    AL2(ERRDENQ-ERRTABLE)
         DC    AL2(ERRSPENQ-ERRTABLE)
         AGO   .L27
.L26     ANOP
         DC    AL2(ERERROR-ERRTABLE)
         DC    AL2(ERERROR-ERRTABLE)
.L27     AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L27A
         AIF   ('&GEN' EQ 'QTAM').L27A
         DC    AL2(RTPREP-ERRTABLE)
         DC    AL2(ERERROR-ERRTABLE)
         AGO   .L27B
.L27A    ANOP
         DC    AL2(ERERROR-ERRTABLE)
         DC    AL2(ERERROR-ERRTABLE)
.L27B    ANOP
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L28
         AIF   ('&GEN' EQ 'QTAM').L28
         DC    AL2(ERLCOUT-ERRTABLE)
         AGO   .L29
.L28     ANOP
         DC    AL2(ERERROR-ERRTABLE)
.L29     ANOP
         DC    AL2(ERWRRSP-ERRTABLE)
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').LA
         AIF   ('&GEN' EQ 'QTAM').LA
         DC    AL2(ERIDENQ-ERRTABLE)    READ ID ENQ
         DC    AL2(ERIDACK-ERRTABLE)
         AGO   .LB
.LA      ANOP
         DC    AL2(ERERROR-ERRTABLE)
         DC    AL2(ERERROR-ERRTABLE)
.LB      ANOP
         DC    AL2(ERTXTRST-ERRTABLE)   TEXT ABORT
         AIF   ('&GEN' EQ 'MINI').L30
         DC    AL2(ERTWXID-ERRTABLE)    ERRROR ON TWX ID
         AGO   .L31
.L30     ANOP
         DC    AL2(ERERROR-ERRTABLE)
.L31     ANOP
         DC    AL2(ERBUFEOT-ERRTABLE)   RESET LINE AFTER BLOCK
         DC    AL2(ERCLOSE-ERRTABLE)    ERP RETURN AFTER OBR
         DC    AL2(ERRSPAD-ERRTABLE)                            SA59028
         DC    AL2(ERERROR-ERRTABLE)    EAU ERROR               SA59028
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ '').TS98          SA48276
         DC    AL2(ERERROR-ERRTABLE)                            SA48276
         AGO   .TS99                                            SA48276
.TS98    ANOP                                                   SA48276
         DC    AL2(ERRSPMG-ERRTABLE)                            SA48276
.TS99    ANOP                                                   SA48276
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ '').TS99A        @OY14057
         DC    AL2(ERERROR-ERRTABLE)    3270 FORMAT ERR RECOVRY@OY14057
         AGO   .TS99B                                          @OY14057
.TS99A   ANOP                                                  @OY14057
         DC    AL2(ERRS3270-ERRTABLE)   3270 FORMAT ERROR      @OY14057
.TS99B   ANOP                                                  @OY14057
         EJECT
*
*        INTERRUPTS ON CCW'S WITH ODD VALUED TP OP CODES ARE
* HANDLED HERE.
*
TRYTXTER EQU   *
         CLI   AVTDOUBX,TPRDSKIP        PRIOR TO TEXT
         BL    ERERROR                  BRANCH IF YES
         BH    TRYIDLES                 NOT READ SKIP
         L     RCCW,LCBCPA+12           CCW BEFORE TIC PROGRAM CHECK
ITSSYNC  EQU   *
         OI    LCBCSW+3,UNEX            INDICATE END OF MSG
         MVI   LCBCSW+6,0               RESIDUAL COUNT 0
         MVI   LCBECBCC,PERMERR         INDICATE ERROR
         B     TEXT                     PROCESS BUFFERS
TRYIDLES EQU   *
         CLI   AVTDOUBX,TPWRIDLE        ERROR ON WRITE IDLES
         BNE   CKSNDRCV                 NO, CHECK TYPE OF OPERATION
GOIDLES  EQU   *
         TM    LCBSENS0,IR              INTERVENTION REQUIRED   OY00507
         BNO   NOIR                     BR NO, CONTINUE         OY00507
         LA    RCCW,LCBCPA              WRITE IDLES, TIC LOOP   OY00507
         CLM   RCCW,AD,LCBCPA+NINE      WRITE IDLES LOOP INTACT OY00507
         BNE   NOIR                     BR NO, CONTINUE         OY00507
         MVI   LCBINCAM,AVTEFF          SET EXCP INDICATOR FOR  OY00507
*                                         RESTART BY IEDQGA     OY00507
         B     FREERQE                  GO FREE RQE, RETURN     OY00507
NOIR     EQU   *                                                OY00507
         MVI   LCBINCAM,0               RESET RETRY COUNT
         L     RCCW,LCBCPA+8            RESTART TO ET A BUFFER
         B     EXIT3                    EXIT
CKSNDRCV EQU   *
         TM    LCBSTAT1,LCBRECVN        RECEIVE OPERATION
         BO    ERWRRSP                  BRANCH IF YES
         B     ERRSPEB                  POST FORSEND ERROR
TABLE1   EQU   *
RTERROR  EQU   *
         AIF   ('&GEN' EQ 'MINI').M2
         CLI   CCWOPCDE,CCWNOP          AUTOPOLL-TIC'S AFTER POLL'S
         BNE   NOTNOP                   NO
         BAL   RD,POLLEXIT              FOR EXIT FORCE END OF LIST
         DC    X'FEFE' .               FORCED END OF LIST       SA51791
NOTNOP   EQU   *
         AIF   ('&GEN' NE '' AND '&GEN' NE 'BISC').NT3670        S22027
         NC    LCBTTCIN,LCBTTCIN        IS DESTINATION DETERMINEDS22027
         BZ    NT367A                   BRANCH IF NO             S22027
         BAL   RD,DCTBASE .             GET BASE ADDR OF DCT     S22027
         TM    TWO(RA),CBRDCAST .       BROADCAST TERMINAL       S22027
         BO    ERBPOST .                BRANCH IF YES            S22027
NT367A   EQU   *                                                 S22027
.NT3670  ANOP                                                    S22027
         AIF   ('&GEN' EQ '').Z1
         AIF   ('&GEN' NE 'BISC').M2
         B     RDRSP                    PUT UP READ RESPONSE
         AGO   .M2
.Z1      ANOP
         TM    LCBSTAT2,LCBSYNC         BSC
         BNZ   RDRSP                    BRANCH IF YES-READ RESP
.M2      ANOP
ERBPOST  EQU   *
         NI    LCBSTAT2,AVTEFF-LCBRESP  RESET RESPONSE OWED BIT MH
*                                        DOES NOT RESET IT ON MSGGEN
         ICM   RD,THREE,LCBTTCIN        IS DESTINATION DETERMND  Y01948
         BZ    NT367AA                  BRANCH IF NO             S22027
         AIF   ('&GEN' NE 'MINI').NTMINI                       @OX17153
         LH    RC,LCBTTCIN              TERMINAL OFFSET        @OX17153
         L     RA,AVTRNMPT              TNT CODE BASE          @OX17153
         USING IEDQTNTD,RA                                     @OX17153
         BAL   RPREFIX,TNTDCODE         FIND TERMINAL TYPE     @OX17153
         AGO   .NTMIN2                                         @OX17153
.NTMINI  ANOP                                                  @OX17153
         BAL   RD,DCTBASE               GET BASE ADDR OF DCT     S22027
.NTMIN2  ANOP                                                  @OX17153
         USING IEDQTRM,RB                                      @OX17153
         L     RB,TRMDESTQ-1            GET QCB ADDRESS        @OX17153
         USING IEDQQCB,RB                                      @OX17153
         NI    QCBELCHN+2,AVTEFF-QCBCNTEN RESET FLG ON MSGGEN  @OX17153
*                                         SO SCHEDULER WILL NOT@OX17153
*                                         ADJUST STCB CHAIN    @OX17153
         DROP  RB                                              @OX17153
NT367AA  EQU   *                                                 S22027
.NT3670A ANOP                                                    S22027
         LA    RPREFIX,LCBERB .         POST ERB TO DISP         S22027
         MVI   PRFPRI,PRIRCQCB          POST PRIORITY            S22027
         ICM   RF,THREE,LCBTTCIN        IS DEST DETERMINED       Y01948
         BZ    CKTSOPST                 BRANCH IF NO             S22027
         AIF   ('&GEN' NE '' AND '&GEN' NE 'BISC').NT3670B       S22027
         TM    TWO(RA),CBRDCAST .       IS POST TO CB SCHED REQ  S22027
         BZ    CKTSOPST .               BRANCH IF NO             S22027
         L     RF,AVTCMBSS .            CB SEND SCHED            S22027
         BCTR  RF,0 .                   DECR FOR QCB ADDR        S22027
         BCTR  RF,0 .                   DECR FOR QCB ADDR        S22027
         B     POSTEXIT .               EXIT                     S22027
.NT3670B ANOP
CKTSOPST EQU   *                                                 S22027
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').Z11A
         AIF   ('&GEN' EQ 'QTAM').Z11A
         TM    LCBTSOB,LCBSATRD         IS POST TO AYM REQUESTED?   TSO
         BZ    DISP                     BRANCH ON NO                TSO
         L     RF,AVTTSOPT              ADDRESS OF TSO AREA         TSO
         L     RF,TSIMSGEN-IEDQTSI(,RF) ADDRESS OF AYM              TSO
         B     POSTEXIT
         AGO   .Z11B
.Z11A    ANOP
         B     DISP                     POST TO DISPOSTION
.Z11B    ANOP
*
*        THE LCB WILL BE POSTED TO THE QCB POINTED TO BY LCBQCBA
*
EROPEN   EQU   *
RTOPEN   EQU   *
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L32
         TM    LCBTSOB,LCB2741N         2741?                       TSO
         BZ    NONO                     NOT 2741
         MVI   LCBTPCD+11,X'AB'         INDICATE FIRST TIME FOR 2741TSO
NONO     EQU   *
.L32     ANOP
RTOPCUT  EQU   *                                                 A67139
         LA    RLCB,AVTEZERO(,RLCB)     CLEAR HI ORDER BYTE FOR COM
         MVI   LCBTPCD,AVTEZERO         CLEAR OPEN INDICATOR
         NI   LCBCHAIN,X'FF'-LCBERMSG   RESET ERR MSG PENDING  @OY11520
         L     RF,LCBRCB                POST ADDRESS SET BY OPEN
          TM     LCBSTAT1,LCBRECVN+LCBSENDN+LCBOCNI            @SA70316
*                                 TEST STATUS OF LCB           @SA70316
         BZ    FREERQE                  FALL THROUGH IF OP CONTRL
*                                         HAS STOP REQUEST ON LINE
*                                         ELSE EXIT-LINE IS STOPPED
         MVI   LCBPRI,PRILNFRE          POST PRIORITY
         LA    RF,AVTEZERO(,RF)         CLEAR HIGH BYTE         SA66616
         CR    RLCB,RF                  POST LCB TO ITSELF      SA66616
         BNE   POSTQ                    BRANCH IF NO            SA66616
         NI    LCBSTAT1,AVTEFF-LCBSENDN SET NOT SENDING         SA66616
POSTQ    EQU   *
         LR    RPREFIX,RLCB             PARAMETER TO ENQUEUE
POSTEXIT EQU   *
         BAL   RC,ENQUEUE               PUT ON READYBQUEUE
         B     FREERQE                  SKIP POST
*
*        READ RESPONSE TO INVITATION
*
ERRDENQ  EQU   *
ERENAB   EQU   *
ERPOLL   EQU   *
RTPOLL   EQU   *
         MVI   LCBTSTSW,XF0             RESET FOR 2260L         SA61780
RTPOLL1  EQU   *                                               @SA74852
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'QTAM').LL44       S99228
         L     RF,LOOKAD                LOAD ADDR DVCCSTCS LOCRTNS99228
         BALR  RD,RF                    BRANCH TO DVCCSTCS LOCRTNS99228
         ST    RE,AVTDOUBX+FOUR         SAVE INVLIST CWORD ADDR  S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,CUMASK           GENERAL POLL IN PROGRESS?S99228
         BZ    ITERATE                  NO, LCBSTART SET         S99228
         L     RE,AVTDOUBX+FOUR         LOAD INVLIST CWORD ADDR  S99228
         OI    LCBMSGFM,LCBACKI         SET ACK-0 FOR READ INIT  S99228
         LA    RA,LCBCPA+ONESIX         LOAD CHL PGM START ADDR  S99228
         ST    RA,LCBSTART-ONE          SET LCBSTART AT CHL PGM  S99228
         TM    THREE(RE),AUTOPL         AUTOPOLL IN PROGRESS?    S99228
         BZ    ITERATE                  NO, SKIP INVPTR UPDATE   S99228
         SR    RC,RC                    CLEAR WORK REGISTER      S99228
         IC    RC,TWO(R0,RE)            INSERT ENTRY LENGTH      S99228
         L     RD,LCBINVPT-ONE          LOAD CURRENT INVLIST ENT S99228
         AR    RD,RC                    INCREMENT INVLIST PTR AD S99228
         STCM  RD,AD,LCBINVPT           SET NEXT INVLIST ENTRY   Y01948
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR?       @YA06889
         BE    ERERROR                  BRANCH YES             @YA10695
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR@YA10052
         MVC   LCBERADR(THREE),LCBINVPT SET POLL ADDRESS       @SA62375
         B     CLEANUP                  NO RESTART ON NEG RESP   S99228
ITERATE  EQU   *                                                 S99228
.LL44    ANOP                                                    S99228
         LA    RC,CLEANUP               NORMAL BRANCH ADDRESS   SA51090
         TM    SCBSTATE,SCBLCK1N        IS THIS LOCK MODE       SA51090
         AIF   ('&GEN' NE 'BISC').L32A                          SA51090
         BO    ERRINIT                  BRANCH IF SO            SA51090
         AGO   .L32B                                            SA51090
.L32A    ANOP                                                   SA51090
         BO    TESTARU                  BRANCH IF SO            SA51090
.L32B    ANOP                                                   SA51090
         SPACE
         SPACE
         AIF   ('&GEN' EQ 'BISC').L32Z                         @YA10673
         L     RC,AVTSAVEX+UCBOFFST     GET UCB ADDRESS        @YA10673
         CLI   UNITYPE(RC),AVTEZERO     IS THIS AUDIO?         @YA10673
         BE    AUDIO                    BRANCH YES             @YA10673
         LA    RC,CLEANUP               NORMAL BRANCH ADDRESS  @YA10673
.L32Z    ANOP                                                  @YA10673
         OI    LCBSTAT2,LCBNEGRP        INDIC NEG RESP TO POLL
         TM    LCBSTAT2,LCBDIAL         DIAL LCB
         AIF   ('&GEN' NE 'QTAM' AND '&GEN' NE 'MINI').L3222   @OY11504
         BZ    NOTDIAL                   NO-BRANCH             @OY11504
         AGO   .L322Z                                          @OY11504
.L3222   ANOP                                                  @OY11504
         BO    ERRTEST                  BRANCH IF DIAL         @YA10052
         L     RE,AVTDOUBX              LOAD LCB EXTNSION ADDR @YA10052
         TM    LCBDCT1,C3270            3270 DEVICE            @YA10052
         BZ    NOTDIAL                  NO,UPDATE LCBINVPT     @YA10052
         CLC   LCBINVPT,LCBERADR        WAS POLL FOR SOH MSG   @YA10052
         BE    NOTDIAL                  NO,UPDATE LCBINVPT     @YA10052
         SPACE
.L322Z   ANOP                                                  @OY11504
ERRTEST  EQU   *                                                SA51090
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BE    ERERROR                  BRANCH IF YES
         SPACE
         BR    RC                       PROCEED NORMALLY        SA51090
         SPACE 2
ERRINIT  EQU   *                                                SA51090
         LA    RC,RESTART               LOCK BRANCH ADDRESS     SA51090
         B     ERRTEST                  TEST FOR PERM ERROR     SA51090
         AIF   ('&GEN' EQ 'BISC').L32C                          SA51090
         SPACE 2
TESTARU  EQU   *                                                SA51090
         L     RC,AVTSAVEX+UCBOFFST     UCB ADDRESS              X02004
         CLI   UNITYPE(RC),AVTEZERO     IS THIS AUDIO           SA51090
         BNE   ERRINIT                  BRANCH IF NOT           SA51090
AUDIO    EQU   *                                               @YA10673
         SPACE
         CLI   LCBCSW+6,TWO             HAS TEXT BEEN ENTERED   SA51090
         BE    ERERROR                  BRANCH IF NOT           SA51090
         SPACE
         L     RPREFIX,LCBLSPCI-1       GET ADDRESS OF BUFFER   SA51090
         LH    RC,PRFSIZE               GET BUFFER LENGTH       SA51090
         LA    RC,TWO(,RC)              ASSUME TEXT OF 2 BYTES  SA51090
         CLI   LCBCSW+6,ONE             WAS ONLY ONE CHAR READ  SA51090
         BNE   POSTASIS                 BRANCH IF NOT           SA51090
         SPACE
         BCTR  RC,ZERO                  DECREMENT LENGTH BY ONE SA51090
         SPACE
POSTASIS EQU   *                                                SA51090
         STH   RC,PRFSIZE               RESTORE BUFFER LENGTH   SA51090
         STCM  RPREFIX,AD,LCBRECAD      SET REC ADDR           @OZ09957
         B     POSTMH                   POST BUFFER TO MH       SA51090
.L32C    ANOP                                                   SA51090
         SPACE 2
NOTDIAL  EQU   *
TSO1     EQU   *                                                    TSO
.L33     ANOP
NEXTENT  EQU   *
         SR    RC,RC                    CLEAR WORK REG
         IC    RC,LCBUCBX               RLN MINUS 1
         SLL   RC,2                     MULTIPLY BY 4
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         L     RF,DCBINVLI(RC)          ILIST  FOR THIS LINE
         DROP  RA
         L     RD,LCBINVPT-1            CURRENT ENTRY IN I LIST
         SR    RE,RE                    CLEAR INDEX  REGISTER
         IC    RE,TWO(R0,RF)            SIZE OF EACH ENTRY
         AR    RD,RE                    POINT TO NEXT ENTRY
         MVI   SCBRCVCT,0               RESET RECEIVE LIMIT
POLLEXIT EQU   *
         STCM  RD,AD,LCBINVPT .         NEXT ENTRY               X01004
         L     RA,LCBDCBPT              GET DCB ADDRESS        @SA62375
         USING IHADCB,RA                                       @SA62375
         SR    RC,RC                    CLEAR FOR IC           @SA62375
         IC    RC,DCBEIOBX              GET OFFSET TO LCB END  @SA62375
         DROP  RA                                              @SA62375
         LA    RA,EIGHT                 LENGTH OF EXTENSION    @SA62375
         SR    RC,RA                    OFFSET TO EXTENSION    @SA62375
         ALR   RC,RLCB                  ADDR. OF LCB EXTENSION @SA62375
         MVC   LCBERADR-IEDQLCBX(THREE,RC),LCBINVPT POLL ADDR. @SA62375
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BE    ERERROR                  BRANCH YES
         CLI   ZERO(RD),FE              END OF LIST
         BE    CLEANUP                  BRANCH YES
.Z25     AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z24
         AIF   ('&GEN' EQ 'QTAM').Z24
         CLI   1(RD),FE                 END OF AUTOPOLL BSC
         BE    CLEANUP                  YES
.Z24     ANOP
         TM    LCBSTAT2,LCBSNDPR        SEND SWITCH SET BY SCHED
         BO    CLEANUP                  BRANCH YES
         TM    AVTBIT1,AVTTSON          TSO IN THE SYSTEM      @OZ25091
         BO    CLEANUP                  BRANCH YES             @OZ25091
         TM    AVTBIT3,AVTRECVN+AVTRFULN CORE Q OR REUS FULL?  @OZ14176
         BNZ   CLEANUP                  BRANCH YES TO CLEANUP  @OZ14176
         LA    RCCW,LCBCPA+24           WRITE POLLING CHRS CCW
         STCM  RD,AD,CCWADDR            SET CCW ADDRESS          Y01948
         BCTR  RE,R0                    DECREMENT TO ACCESS INDEX
         IC    RE,0(RE,RD)              GET INDEX BYTE
         SLL   RE,ONE                   MULTIPLY BY 2
         SR    RF,RE                    POINT TI OFFSET IN TNT
         LH    RC,0(RF)                GET TNT OFFSET
         AIF   ('&GEN' NE 'MINI').Z2                             S22025
         STH   RC,LCBTTCIN .            NEW CONNCTED             S22025
         AGO   .Z26A .                                           S22025
.Z2      ANOP .                                                  S22025
         L     RF,POLLAD .              AUTOPOLL ROUTINE         S22025
         BAL   RD,FINDSCBQ-POLLRT(RF) . SCB/QCB FOR NEXT ENTRY   S22025
*                                         AND GET QCB ADDRESS    S22025
         TM    QCBSTAT-IEDQQCB(RB),QCBSEND SEND MODE             S22025
         BO    NEXTENT .                BRANCH YES TO NEXT ENTRY S22025
         NI    LCBSTAT2,X'FF'-LCBNEGRP . RESET NEGATIVE RESPONSE S22025
.Z26A    ANOP .                                                  S22025
         B     RESTART                  RESTART ON NEXT ENTRY
         SPACE
CLEANUP  EQU   *
         MVI   LCBPRI,PRIFSPCI-1        CLEANUP PRIORITY
         L     RSCB,LCBSCBA-1           SCB BASE               @SA73574
         TM    SCBERR1,SCBCUTFN         CUTOFF RUNNING?        @SA73574
         BNO   LEAVE                    BRANCH IF NO           @SA73574
         LA    RF,AVTBFRTB              BFR RETURN QCB ADDR    @SA73574
         ST    RF,AVTDOUBX              SET FOR COMPARE        @SA73574
         CLC   AVTDOUBX+1(3),LCBERBQB   ERB POSTED TO BFR RTN? @SA73574
         BE    LEAVE                    EXIT IF YES            @SA73574
         OI    LCBERBST,LCBDLNKN        SET ERB POSTABLE       @SA73574
LEAVE    EQU   *
         L     RF,AVTBSCAN .            ADDRESS OF IEDQBD        X01004
         B     POSTQ                    USE COMMON CODE
         AIF   ('&GEN' EQ 'MINI').L37A
         AIF   ('&GEN' EQ 'BISC').Z3
         SPACE 10
*
*        INTERRUPTS ON ENABLE FOR S/S DIAL LINES
*
RTENAB   EQU   *
         SPACE
         TS    LCBTSTSW                 HIO TO BE DONE
         BNZ   CLEANUP                  YES
         B     EXIT2                    RESTART AFTER ENABLE
*
         EJECT
*        READ  RESPONSE TO ADDRESSING
*
.Z3      AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'QTAM').L37B       S22025
RTRSPADD EQU   *
         AIF   ('&GEN' NE '').L36
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NOBSC
.L36     ANOP
         SPACE
         L     RF,CHACKAD               CHECK RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO ROUTINE
BSCADD   EQU   *
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER         S21101
         TM    LCBMSGFM,LCBACKI .       TEST ACK COUNTER         S21101
         BZ    TRYACK1                  TRY ACK-1
         SPACE
         TM    LCBERCCW,RACK0           SET CONDITION CODE
ACKTEST  EQU   *
         BO    ADDROK                   RIGHT ACK RECEIVED
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER BACK    S21101
         USING IEDQTRM,RB .                                      S22025
         BAL   RD,DCTBASE .             GET BASE ADDR OF DCT     S22025
         L     RB,TRMDESTQ-1 .          QCB ADDRESS              S22025
         DROP    RB
         USING IEDQQCB,RB
         TM    LCBERCCW,RENQ            ENQ
         BNO   TRYWK                    NO, TRY WACK
         SPACE
         TM    2(RA),MPT                MULTIPOINT
         BO    TSTRTRY                  WRITE ENQ
         SPACE
OWERESP  EQU   *                                               @YA11157
         TM    3(RA),ENDCTL             END-END CONTROL
         BO    TSTRTRY                  YES, SEND ENQ AGAIN    @SA72446
         SPACE 1                                               @SA72446
         OI    LCBSTAT2,LCBRESP         SET RESPONSE OWED      @SA72446
         B     CONTENT                  GO HANDLE CONTENTION   @SA72446
         SPACE
TRYWK    EQU   *
         TM    LCBERCCW,RWACK           WACK RECEIVED
         BZ    NOWK                     NO
         SPACE
         TM    2(RA),MPT                MULTIPT
         BZ    AGAINTRY                 NO
.L37B    ANOP .                                                  S21101
TEST1ST  EQU   *                                                 S21101
         TM    QCBSTAT-IEDQQCB(RB),QCBBUFRD HEADER BUFFER        S21101
         BZ    DONTSEND                 NO
         SPACE
.L37A    ANOP
RESETMM  EQU   *
         NI    SCBQTYPE,AVTEFF-SCBBFMM  RESET MIDDLE OF SMG
         AIF   ('&GEN' EQ 'MINI').L37
         AIF   ('&GEN' EQ 'STSP').L37
         AIF   ('&GEN' EQ 'QTAM').L37
         B     DONTSEND                 EXIT
         SPACE
NOWK     EQU   *
         TM    LCBERCCW,REOT            EOT
         BO    ERRSPAD                  YES, TERMINAL NOT READY
         SPACE
         TM    LCBERCCW,RRVI            RVI RECEIED
         BZ    NORVI                    NO
         TM    2(RA),MPT                MULTIPT
         BZ    NOMPT                    NO
         TM    QCBSTAT,QCBBUFRD
         BO    RESETMM                  YES
         TM    ONE(RA),C3270            3270 DEVICE?             S99228
         BZ    NORVIERP                 NO, NO DVC DEP ERP       S99228
         L     RF,LOOKAD                LOAD ADDR DVCCSTCS LOCRTNS99228
         BALR  RD,RF                    BRANCH TO DVCCSTCS LOCRTNS99228
         ST    RE,AVTDOUBX+FOUR         SAVE INVLIST CWORD ADDR  S99228
         L     RF,FINDAD                LOAD ADDR DVC DEP SRC RT S99228
         BALR  RD,RF                    BRANCH TO DVC DEP SRC RT S99228
         B     ERRSPAD                  SKIP FLAG SET            S99228
NORVIERP EQU   *                                                 S99228
         SPACE
         OI    SCBERR4,SCBTXTTN         SET TEXTY ERROR
         OI    SCBERR1,SCBRVISL         SET RVI TO SELECTION
         B     RESETMM                  EXIT
NOMPT    EQU   *
         DROP  RB
         SPACE
         TM    3(RA),ENDCTL             END-END CONTROL
         BO    DONTSEND                 RESCHEDULE
         SPACE
         B     TSTRTRY                  RETRY WITE ENQ
         SPACE
NORVI    EQU   *
         TM    LCBERCCW,RNAK            NAK RECEIVED
         BZ    TSTRTRY                  NO
         SPACE
         TM    2(RA),MPT                MULTIPT
         BO    ERRSPAD                  YES
         SPACE
         TM    3(RA),ENDCTL             END-END CTL
         BZ    RESETTM                  NINVALID RESPONSE
         CLI   LCBINCAM,RETRY           RETRY LIMIT REACHED
         BNL   RESETTM                  YES
         IC    RWKA,LCBINCAM            RETRY COUNT
         LA    RWKA,1(,RWKA)            BUMP
         STC   RWKA,LCBINCAM            SET BACK
         SH    RCCW,H8                  BACK UP TO PREVIOUS CCW
         B     EXIT3                    RESTART
         SPACE
         SPACE
TRYACK1  EQU   *
         TM    LCBERCCW,RACK1           SET CONDITION CODE
         B     ACKTEST                  USE COMMON BRANCHES
CONTENT  EQU   *                                                 S99244
         L     RA,LCBDCBPT              GET DCB ADDRESS          S99244
         USING IHADCB,RA                                         S99244
         SR    RC,RC                    CLEAR WORK REGISTER      S99244
         IC    RC,LCBUCBX               GET RLN MINUS 1          S99244
         SLL   RC,2                     (RLN-1)*4 IS INVITATION  S99244
*                                         LIST ADDRESS INDEX     S99244
         L     RA,DCBINVLI(RC)          INVITATION LIST ADDRESS  S99244
         DROP  RA                                                S99244
         TM    3(RA),MASTER             MASTER=YES SPECIFIED   @XA08073
         BNO   DONTSEND                 NO, FORGET IT            S99244
         NI    LCBSTAT2,X'FF'-LCBRESP   RESET RESPONSE OWED    @OS76283
         CLI   LCBINCAM,RETRY           RETRY LIMIT REACHED      S99244
         BH    SLCTNERR                 YES, SELECTION ERROR     S99244
         IC    RA,LCBINCAM              GET RETRY COUNT          S99244
         LA    RA,1(RA)                 INCREMENT                S99244
         STC   RA,LCBINCAM              AND SAVE                 S99244
         SH    RCCW,H8                  BACK UP TO WRITE ENQ CCW S99244
         B     EXIT3                    GO RESTART ON WRITE ENQ  S99244
SLCTNERR EQU   *                                                 S99244
         OI    SCBERR4,SCBSLCTN         INDICATE SELECTION ERR   S99244
.L37     ANOP
DONTSEND EQU   *
         NC    SCBDEOB(4),SCBDEOB .     IS IT START OF MSG       S99244
         BNZ   NOSDFFO .                NO, BYPASS NEXT          S99244
         NI    QCBFLAG-IEDQQCB(RB),AVTEFF-QCBSDFFO RESET TO      S99244
*                                         NEUTRAL                S99244
NOSDFFO  EQU   * .                                               S99244
         TM    QCBFLAG-IEDQQCB(RB),QCBTSSES TSO IN SESSION     @YA10410
         BO    ERRSPAD                  ADDRESSING ERROR       @OY12287
         USING IEDQQCB,RB                                      @OX17153
         OI    QCBELCHN+2,QCBCNTEN      SET FLAG FOR SCHEDULER @OX17153
         DROP  RB                                              @OX17153
*                                         TO DETERMININE NEXT TYPS21101
*                                         OF OPERATION           S21101
         B     ERRSPAD                 FREE UP BUFFERS
ADDROK   EQU   *
         LA    RCCW,LCBCPA-8           ADJUST TO START IDLES
         AIF   ('&GEN' EQ 'BISC').LC
         B     NOTMOD2                  POST BUFFERS
         AIF   ('&GEN' EQ '').L35
RTRSPADD EQU   *
.L35     ANOP
NOBSC    EQU   *
         AIF   ('&GEN' EQ 'MINI').L35A                           S21101
         CLI   LCBCSW+6,7               2740/2
         BNE   NOTMOD2                  NO
         SPACE
         NI    LCBERCCW+12,X'7F'        TURN OFF PARITY BIT
         CLI   LCBERCCW+13,X'76'        CIRCLE Y RESPONSE
         BE    GOODRSP                  YES
         CLI   LCBERCCW+12,8             ENTER, BID, PRINT, LOCAL
         BH    ERERROR .               REAL ERROR                S21101
         TM    LCBERCCW+12,X'06'        BID,ENTER,OR LOCAL     @OX16385
         BNZ   ERERROR                  YES-REAL ERROR         @OX12567
         LH    RC,LCBTTCIN .            CURRENT  CONNECTED       S21101
         L     RA,AVTRNMPT .            CONVERSION CODE          S21101
         USING IEDQTNTD,RA                                       S21101
         BAL   RPREFIX,TNTDCODE .       LINK TO IT               S21101
         DROP  RA .                                              S21101
         L     RB,TRMDESTQ-1-IEDQTRM(,RB) . GET QCB ADDRESS      S21101
         B     TEST1ST .                TEST IF HEADER           S21101
GOODRSP  EQU   *
         CLI   LCBERCCW+12,X'01'        UNUSUAL POSITVE RESPONSE
         BE    NOTMOD2                  BRANCH NORMAL RESPONSE
         SPACE
         CLI   LCBRCB,X'0F'             HAVE WE RECORDED YET
         MVI   LCBRCB,X'0F'             SET RECORD FLAG
         BNE   ERPEXIT                  ERP WILL RECORD UNUSUAL
.L35A    ANOP                                                    S21101
NOTMOD2  EQU   *
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').Z41XX
         AIF   ('&GEN' EQ 'QTAM').Z41XX
         CLI   LCBTPCD+10,X'BD'         IS THIS FOR ERASURE         TSO
         BNE   NOTERASE                 BRANCH ON NO                TSO
         LR    RF,RCCW                  ADDRESS OF INTERRUPT CCW    TSO
         SH    RF,H8                    POINT TO WRITE ADDR CCW     TSO
         L     RF,0(RF)                 GET ADDRESS OF ADDR CHARS   TSO
         NI    2(RF),X'BF'              SET TO NO ERASE             TSO
         MVI   LCBTPCD+10,X'00'         RESET TP CODE               TSO
NOTERASE EQU   *
.Z41XX   ANOP
         TM    LCBCSW+3,UNEX            UNIT EXCEPTION
         BNZ   ERERROR                  YES, ERROR
.LC      ANOP
SKIPUE   EQU   *                                                SA69087
         TM    LCBSTAT2,LCBMSGNN        IS THIS MESSAGE GEN
         AIF   ('&GEN' NE 'BISC').Z41
         BO    EXIT2
         AGO   .Z42
.Z41     ANOP
         BO    TESTEX                   BRANCH YES
.Z42     ANOP
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').Z4
         AIF   ('&GEN' EQ 'QTAM').Z4
         CLI   LCBTPCD+11,X'BE'         IS THIS ENTRY FOR SMI     \>3
         BNE   LDENQ                    NO, BRANCH               \>3
         ST    R15,LCBERCCW+4           SAVE REG                SA54923
         L     12,AVTKA02               GET ADDRESS OF IOGENER    \>3
         LA    RAVT,AVTSAVE2            SET AVT BASE FOR IOGENER   \>3
         BALR  5,12                     LINK TO IOGENER           TSO
         L     R15,LCBERCCW+4           RESTORE REG             SA54923
         LA    RBASE,4095(R15)          RESET SECOND BASE REGISTER TSO
         LA    RBASE,1(RBASE)                                     TSO
         SH    RAVT,AVTBACK             RESET AVT ADDRESS         TSO
         B     RESTART                  RESTART CHANNEL PROGRAM    TSO
LDENQ    EQU   *                                                  TSO
.Z4      ANOP
         L     RB,LCBERBCH-1            1ST BUFFER IN CHAIN
         B     ENTER2                   ENTER LOOP
LOOP5    EQU   *
         LA    RD,0(,RD)                CLEAR HI ORDER BYTE
         LTR   RB,RD                    ADDRESS NEXT BUFFER AND
*                                         TEST IF LAST
         BZ    EXIT1                    BRANCH NO MORE BUFFERS
         SPACE
ENTER2   EQU   *
         L     RD,PRFLINK-1-IEDQPRF(,RB) SAVE LINK FIELD
         LR    RPREFIX,RB               ADDRESS FO BUFFER FOR READY
         MVI   PRFPRI,PRIMHBFR          POST PRIORITY
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         L     RF,DCBMH-1               QCB FOR POST
         DROP  RA
         BAL   RC,ENQUEUE               PUT ON READYBQUEUE
         SPACE
         B     LOOP5                    TEST IF MORE TO POST
         SPACE
EXIT1    EQU   *
         STCM  RB,AD,LCBERBCH .         CLEAR FIELD              X01004
         AIF   ('&GEN' EQ 'BISC').Z5
TESTEX   EQU   *
         TM    LCBCHAIN,LCBEXCP         NO IDLES LOOP DEFINED
         BZ    EXIT2                    BRANCH NO
         SPACE
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BZ    FREERQE                  NO
         LA    RCCW,LCBCPA-8            START ON MSGGEN MSG
.Z5      ANOP
EXIT2    EQU   *
         LA    RCCW,8(,RCCW)            RESTART ON NEXT CCW
EXIT3    EQU   *
         ST    RCCW,LCBSTART-1          START ADDRESS FOR IOS
         B     RESTART                  RESTART CHANNEL PROGRA,
         SPACE 5
         AIF   ('&GEN' EQ 'BISC').L39
RTRSPEB  EQU   *
         AIF   ('&GEN' NE '').L38
         TM    LCBSTAT2,LCBSYNC         BI SYNC
         BNZ   TRYBSC                   YES
.L38     ANOP
         L     RCCW,LCBCPA+12           CURRENT CCW
         TM    LCBCSW+3,UNEX            EOT RECEIVED
         BO    ERRSPEB                  BRANCH IF YES
         CLI   CCWCOUNT+1,AVTEZERO .    DID PGM CHECK OCCUR      S21101
         BE    IDLEST .                 BRANCH IF YES            S21101
         SPACE 1                                                 S21101
         MVC   SCBDEOB+1(3),LCBRECAD .  SET RESTART IN SCB       S21101
         MVC   SCBDEOB(1),LCBNTXT .     SET DISK Q INFORMATION   S21101
         MVC   SCBEOB,LCBRECOF .        SET OFSET INTO BUFFER    S21101
         MVI   LCBTPCD+2,TPBUFEOT .     SET TP OP CODE           S21101
         B     RESETEOT .               RESET LINE               S21101
         SPACE 1                                                 S21101
IDLEST   EQU   *                                                 S21101
         TM    LCBCHAIN,LCBEXCP         IDLES LOOP DEFINED
         BO    FREERQE                  BRANCH IF NO
         B     PCSTART                  START ON WRITE IDLES
.L39     ANOP
*        SEND EOT FOR BUFFERED TERMINALS AND ALSO FOR END OF TRANSP
*        MODE MESSAGE
RTBUFEOT EQU   *
ERBUFEOT EQU   *
         L     RCCW,LCBCPA+12           CURRENT CCW
         MVI   LCBERCCW,NOPCI           SET PARAMETER
         BAL   RA,FINDBUFF              LINK TO FREE UP RPEVIOUS
         MVI   PRFPRI-IEDQPRF(RPREFIX),PRIRCQCB E0 PRIORITY    @OS76996
         B     DISP                     TO BFR DISPOSITION     @OS76996
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L40
         AIF   ('&GEN' EQ 'QTAM').L40
         AIF   ('&GEN' EQ '').LM4
RTRSPEB  EQU   *
.LM4     ANOP
TRYBSC   EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BZ    NOTMSGN                  BRANCH NO              @OY12393
         TM    LCBSTAT2,LCBDIAL         DIAL LINE?             @OY12393
         BZ    RESETTM                  BRANCH NO,SEND EOT     @OY12393
         OI    SCBBSCFM,SCBNOEOT        NO EOT SENT            @OY12393
         B     ERBPOST                  EXIT                   @OY12393
NOTMSGN  EQU   *                                               @OY12393
         L     RF,CHACKAD               CHECK RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO ROUTINE
         TM    LCBERCCW,RWACK .         WACK RECEIVED            S99228
         BZ    REGWACK .                BRANCH IF NO             S99228
         L     RF,LOOKAD                LOAD ADDR DVCCSTCS LOCRTNS99228
         BALR  RD,RF                    BRANCH TO DVCCSTCS LOCRTNS99228
         ST    RE,AVTDOUBX+FOUR         SAVE INVLIST CWORD ADDR  S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270            3270 DEVICE?             S99228
         BZ    REGWACK                  NO, NOT 3270 USUAL WACK  S99228
         XI    LCBMSGFM,LCBACKI         FLIP ACK COUNTER         S99228
         TM    LCBMSGFM,LCBACKI         ACK-0 EXPECTED?          S99228
         BZ    ZACK                     ACK-1 EXPECTED           S99228
         MVI   LCBERCCW,RACK0           SET ACK-0                S99228
         B     GOBACK                   BYPASS SET FOR ACK-0     S99228
ZACK     EQU   *                                                 S99228
         MVI   LCBERCCW,RACK1           SET ACK-1                S99228
GOBACK   EQU   *                                                 S99228
         XI    LCBMSGFM,LCBACKI         RETURN ACK COUNTER       S99228
REGWACK  EQU   *                                                 S99228
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER         S21101
         TM    LCBMSGFM,LCBACKI .       TEST ACK COUNTER         S21101
         BZ    ITSACK1                  BANCH ACK-1 EXPECTED
         TM    LCBERCCW,RACK0           SET CONDITION CODE
TESTACK  EQU   *
         BO    ACKSET                   BRANCH RIGHT ACK RECEIVED
         BZ    CHKRVI                   NO, CHECK FOR RVI
*        TO HERE IF WRIONG ACK-I
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER         S21101
CHKRTRY  EQU   *
         CLI   LCBINCAM,0               RETRY COUNT
         BNE   TESTCNT                  NOT FIRST TIME
         SPACE
         MVC   LCBCSWSV,LCBCSW          SAVE CSW
TESTCNT  EQU   *
         CLI   LCBINCAM,RETRY           RESTRY EXHAUSTED
         BL    BUMPCNT                  RETRY AGAIN
         SPACE
WREOT    EQU   *
         OI    LCBCHAIN,LCBNORTY        NO RETRY
         MVI   LCBTPCD+2,TPRESET        SET TP OPCDE
         B     RESETEOT                 SEND EOT TO RESET LINE
         SPACE
BUMPCNT  EQU   *
         IC    RWKA,LCBINCAM            GET RETRY COUNT
         LA    RWKA,1(,RWKA)            BUMP
         STC   RWKA,LCBINCAM            SET BACK
         B     ENQSND                   WRITE ENQ
*                                         READ RESPONSE CCW
         SPACE 3
ITSACK1  EQU   *
         TM    LCBERCCW,RACK1           TET FOR ACK1 RECIVED
         B     TESTACK                  USE COMMON CODE
CHKNAK   EQU   *
         TM    LCBERCCW,RNAK            TEST FOR NAK
         BZ    EOTTST                   BRANCH NO
NAKSAME  EQU   *
         CLI   LCBINCAM,RETRY           RETRY COUNTEXHAUSTED
         BNL   WREOT                    YES WRITE EOT          @SA75722
         SPACE 2
MHEXIT   EQU   *
         MVI   LCBECBCC,PERMERR         SET ERROR INDICAOTR
         L     RPREFIX,LCBLSPCI-1       LAST SERVICED BUFFER
           SPACE
         B     ERRSPEB                  POST BUFFER TO MH
*                                         MH ERROR HANDLING
EOTTST   EQU   *
         TM    LCBERCCW,REOT            EOT SENT
         BZ    CHKRTRY                  C HECK RETRY COUNT
         L     RF,LOOKAD .              LOAD ADDR DVCCSTCS       S99228
         BALR  RD,RF .                  LINK TO ROUTINE          S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270            3270 DEVICE?             S99228
         BZ    NOEOTERP                 NO, SKIP ERP FLAG SET    S99228
         ST    R0,AVTDOUBX+FOUR         SAVE INVLIST POINTER    SA62341
         L     RF,FINDAD                LOAD ADDR DVC DEP SRC RT S99228
         BALR  RD,RF                    BRANCH TO DVC DEP SRC RT S99228
NOEOTERP EQU   *                                                 S99228
         SPACE
         OI    SCBERR2,SCBABRTN         SET ABORT RECEIVED
         B     ERRSPEB                  POST SENDING ERROR
CHKENQ   EQU   *
         TM    LCBERCCW,RENQ            ENQ RECEIVED
         BZ    CHKRTRY                  BEANCH IF NO
         SPACE
*        ENQ IS VALID RESPONSE IF THIS IS FIRST BLOCK OF CONVERSE
*      RESPONSE.  DESTINATION DID NOT SEE RESPONSE AND IS STILL
*      IN MASTER STATUS.
         SPACE
CHKWK    EQU   *
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER BACK    S21101
         TM    LCBERCCW,RWACK           TEST FOR WACK RECEIVED
         BZ    CHKNAK                   TRY NAK
         CLI   LCBRSKEY,BUFF            BUFFERED LINE
         BNE   ENQSND                   WRITE ENQ
         L     RF,BSCRSPAD              LINK TO RWUTINE
         BALR  RD,RF                    LINK TO IT
ENQSND   EQU   *
*                                       SET TP OPCODE FOR WRITE@SA69968
         MVI   LCBTPCD+10,TPENQAD       ENQ ADDRESSING DEFAULT @SA69968
         L     RWKA,LCBCSW-1            GET TRUE               @SA69968
         LA    RWKA,AVTEZERO(,RWKA)      INTERRUPTED           @SA69968
         SH    RWKA,H8                    CCW ADDRESS          @SA69968
         LA    RA,LCBCPA                DERIVE                 @SA69968
         SR    RWKA,RA                   TP                    @SA69968
         SRL   RWKA,THREE                 OPCODE               @SA69968
         AR    RWKA,RLCB                   OFFSET              @SA69968
         DROP  RLCB                                            @SA69968
         USING IEDQLCB,RWKA             INTERRUPTED ON READ    @SA69968
         CLI   LCBTPCD,TPRDRSPD          RESPONSE TO ADDR      @SA69968
         BE    SNDENQ                   YES, BRANCH            @SA69968
         CLI   LCBTPCD,TPRSPENQ         RESPONSE TO ENQ        @OZ09265
         BE    SNDENQ                   BRANCH IF YES          @OZ09265
         DROP  RWKA                                            @SA69968
         USING IEDQLCB,RLCB                                    @SA69968
         MVI   LCBTPCD+10,TPENQRSP .    SET TP OP CODE           S21101
SNDENQ   EQU   *
         LA    RA,ENQCH                SET ENQ INDEX
         LA    RWKA,LCBCPA+80 .         SET CCW ADDRESS          S21101
         BAL   RD,CCWBLD                LINK TO ROUTINE
         MVI   LCBCPA+84,CCWCC+CCWSLI . SET FLAGS                S21101
         ST    RCCW,LCBCPA+88 .         SET FOR TIC              S21101
         MVI   LCBCPA+88,CCWTIC .       SET TIC                  S21101
         B     RESTCOM                 RESTART
         SPACE
CHKRVI   EQU   *
         TM    LCBERCCW,RRVI           RVI RECEIVED
         BZ    CHKWK                    TRY WACK
         TM    LCBMSGFM,DBLRVI          TWO RVI'S BACK TO BACK
         BNZ   CHKRTRY                  BRANCH YES
         OI    LCBMSGFM,DBLRVI          SET RVI SWITCH
         OI    SCBERR1,SCBRVITX         SET RVI RECEIVED       @OY13632
         B     GOACK                    SEND NEXT BLOCK
         SPACE
ACKSET   EQU   *
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BNO   NOTCONCB .               BRANCH IF NO             S22026
         L     RCCW,SCBXTRA-1 .         SET REG                  S22026
         BAL   RA,FINDBUFF .            FREE UP BUFFERS          S22026
         L     RCCW,LCBCSW-1 .          RESTORE PREVIOUS         S22026
         SH    RCCW,H8 .                CCW                      S22026
NOTCONCB EQU   * .                                               S22026
         NI    LCBMSGFM,AVTEFF-DBLRVI   RESET RVI SWITCH
GOACK    EQU   *
         MVI   LCBINCAM,0               RESET RETRY COUNT
         L     RF,BSCRSPAD              BSC RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO IT
.L40     ANOP
RESTCOM  EQU   *
         ST    RWKA,LCBSTART-1          RESTART ON WRITE CCW
         B     RESTART                  RESTART
         EJECT
*
*        READ ENQ FOR BSC TERMINAL LINE BID
*
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').L41
         AIF   ('&GEN' EQ 'QTAM').L41
RTRDENQ  EQU   *
         L     RF,CHACKAD               RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO IT
         SPACE
         TM    LCBSTAT2,LCBDIAL         DIAL LINE
         BNZ   ITSDIAL                  YES
         SPACE
         TS    LCBTSTSW                 TS ISSUED BY SEND SCHED
         BNZ   CLEANUP                  BRANCH YES
         SPACE
ITSDIAL  EQU   *
         TM    LCBERCCW,RDLEEOT         DLE EOT RECEIVED
         BZ    TESTEOT                  NO, TRY EOT
         SPACE
DISCON   EQU   *
         MVI   LCBTSTSW,AVTEFF          ENSURE A DIAL UP
         B     RTPOLL1                  FREE UP ELEMENTS       @SA74852
         SPACE
TESTEOT  EQU   *
         TM    LCBERCCW,RENQ            ENQ RECEVIED
         BO    EXIT2                    YES,RESTART
         SPACE
         TM    LCBERCCW,REOT            EOT RECEIVED
         BZ    EOTNOTRC                 BRANCH NO              @OY19793
         TM    LCBSTAT2,LCBDIAL         IS THIS DIAL?          @OY19793
         BZ    RTPOLL                   BRIF NO                @OY19793
         OI    SCBBSCFM,SCBNOEOT        TURN ON NOEOT          @OY19793
         B     RTPOLL                   AND BRANCH             @OY19793
EOTNOTRC EQU   *                                               @OY19793
         SPACE
         TM    LCBSTAT2,LCBDIAL .      DIAL LINE                SA51068
         BO    RESTART .               NO, RESTART              SA51068
         MVI   LCBTSTSW,AVTEZERO .     YES, CLEAR FOR PREPARE   SA51068
         B     RESTART .               AND RESTART              SA51068
         SPACE 3
NOTENQRC EQU   *
         TM    LCBERCCW,REOT            EOT RECEIVED
         BO    ERRSPAD                  YES
         SPACE
         TM    LCBERCCW,RNAK            NAK
         BO    RESETTM                  YES
         SPACE
         TM    LCBERCCW,RWACK           WACK RECEIVED
         BZ    TSTRTRY                  NO, INVALID RESPONSE
AGAINTRY EQU   *
         MVI   LCBTPCD+10,TPENQAD .     SET TP OP CODE           S21101
         B     SNDENQ                   WRITE ENQ UNTIL READY
         SPACE 10
*
*        READ RESPONSE TO ENQ.  SELECTION OF TERMINAL ON A PT-PT OR
* DIAL LINE (BSC).
*
RTRSPENQ EQU   *
         L     RF,CHACKAD               CHECK RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO ROUTINE
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER         S21101
         TM    LCBERCCW,RACK0           ACK-0
         BO    EXIT2                    BRANCH YES
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER         S21101
         CLI   LCBERCCW,RENQ            ENQ RECEIVED
         BNE   NOTENQRC                 BRANCH NO
         TM    LCBSTAT2,LCBDIAL         DIAL LINE
         BO    TSTRTRY                  YES,BRANCH             @OS76283
         BAL   RD,DCTBASE               GET DCT                @OS76283
         B     OWERESP                  HANDLE CONTENTION      @OS76283
         SPACE
TSTRTRY  EQU   *
         CLI   LCBINCAM,RETRY           RETRY LIMIT REACHED
         BL    CHKRTRY                  NO, RERY
.L41     ANOP
RESETTM  EQU   *
         MVI   LCBTPCD+2,TPRSPAD        TP OP CODE FORE RESET IN
*                                         CONTROL MODE SELECTION
         B     RESETEOT                 WRITE EOT
 SPACE 10
*
*        ENTRY FROM CLOSE MODULE TO RECORD ERROR COUNTERS IN TERMINAL
* ENTRY BY  EXITING TO ERP.  ERP POST S PERMANENT ERROR  ON RETURN
* WHICH WILL POST WAIT COMPLETE.
*
RTCLOSE  EQU   *
         OI    LCBFLAG1,X20+IOBEXEP     ERP IN CNTRL FOR CLSE  @OX19180
         B     NAPCHAP                  EXIT                   @OX19180
ERPEXIT  EQU   *
         OI    LCBFLAG1,IOBEXEP         SET FLAG TO ROUTE CONTROL TO
*                                         ERP
         B     ERP                      EXIT
         SPACE 3
         AIF   ('&GEN' EQ 'BISC' OR '&GEN' EQ 'MINI').L42
         AIF   ('&GEN' EQ 'QTAM').L42
RTPREP   EQU   *                                                    TSO
         LA    RPREFIX,LCBERB           ELEMENT TO POST
         MVI   PRFPRI,PRIDSPLB          LOW PRIORITY
         L     RF,AVTTSOPT              ADDRESS OF TSO AREA
         L     RF,TSIHALT-IEDQTSI(,RF)  ADDRESS OF AYF
         MVI   LCBSTAT1,LCBSENDN        CHANGE LINE STATUS      SA58997
         B     POSTEXIT                 BRANCH TO POST
         SPACE 3
RTWRBRK  EQU   *                                                    TSO
         L     RCCW,LCBLSPCI-1          GET ADDRESS OF BUFFER       TSO
         TM    PRFSTAT1-IEDQPRF(RCCW),PRFNHDRN IS IT FIRST BUFFER   TSO
         BO    RESCSW                   BRANCH ON NO                TSO
         L     RCCW,PRFIOADR-1-IEDQPRF(,RCCW) GET ADDRESS OF DATA   TSO
         CLI   1(RCCW),0                ANY DATA ENTERED            TSO
         BNE   RESCSW                   BRANCH IF YES          @OS79864
         MVI   LCBTSTSW,XF0             PREVENT TRY TO RECEIVE @OS79864
         B     CLEANUP                  AND GO TO CLEANUP      @OS79864
RESCSW   EQU   *                                                    TSO
         MVC   LCBCSW,LCBCSWSV .        RESTORE ENDING STATUS       TSO
         XC    LCBCSWSV,LCBCSWSV .      CLEAR IT                    TSO
         L     RCCW,LCBCSW-1            GET CSW CCW ADDR            TSO
         SH    RCCW,H8                  BACK UP TO INTERRUPTED CCW  TSO
         CLI   CCW,CCWBREAK             IS IT A WRITE BRK           TSO
         BE    CLEANUP                 BRANCH IF YES, GO CLEANUP    TSO
         TM    LCBTSOB,LCB2741N         IS IT A 2741?               TSO
         BZ    ITS1050                  BRANCH ON NO                TSO
         MVI   LCBCSW+3,CEDE            MOVE IN GOOD ENDING STATUS  TSO
         OI    SCBERR2,SCBABRTN         SET BREAK INT'D DATA   @OS77835
         B     TSO2 V                                               TSO
ITS1050  EQU   *
         L     RCCW,LCBCSW-1 .          SEE IF A TIC                TSO
         CLI   CCW,CCWTIC .             WAS READ INTERRUPTED        TSO
         BNE   CLEANUP .                NO                          TSO
         MVI   LCBCSW+3,CEDE+UNEX       MOVE IN ENDING STATUS       TSO
         B     TSO2                                                 TSO
         SPACE
.L42     ANOP
         AIF   ('&GEN' EQ 'MINI').L42A
         AIF   ('&GEN' EQ 'STSP').L42A
         AIF   ('&GEN' EQ 'QTAM').L42A
RDLCOUT  EQU   *
         L     RF,SCANAD                SCAN ADDRESS
         BALR  RD,RF                    LINK TO ROUTINE
         TM    SCBBSCFM,SCBTRNSP        TRANSPARENT            @OX16686
         BNO   RDLCENT                  BRANCH NO              @OX16686
         NI    LCBERCCW+1,AVTEFF-IN     FORCE LC OUT           @OX16686
RDLCENT  EQU   *
         TM    LCBMSGFM,LCBEOT+LCBENQ . DLEEOT=SUM OF EOT AND ENQS21101
         BNO   NOTDLEOT                 BRANCH NO
         MVI   LCBTSTSW,AVTEFF          FORCE NEW CONNECTION
         B     BSEOT                    USE EOT CODE
NOTDLEOT EQU   *
         TM    LCBMSGFM,LCBEOT .        EOT RECEIVED             S21101
         BZ    NOEOT                    BRANCH N
         SPACE 1                                                SA68035
         BAL   RD,CHKNEG                SET NEG RESP IF NEEDED  SA68035
         SPACE
BSEOT    EQU   *
         L     RCCW,LCBCPA+12           CURRENT UNIT
         L     RWKA,CCWADDR-1           DATA ADDRESS
         MVC   0(1,RWKA),LCBERCCW+12    GET EOT INTO BUFFER
         MVI   LCBERCCW,NOPCI           SET ROUTINE PARAMETER
         BAL   RA,FINDBUFF              GET BUFFER BASE
         LH    RC,PRFSIZE .             GET PREFIX SIZE          S21101
         LTR   RC,RC                    TEST ZERO LENGTH-POSSIBLES22025
*                                         IF ETB (ETX) WAS FIRST S22025
*                                         CHAR OF BUFFER AND WAS S22025
*                                         PROCESSED THROUGH MH   S22025
         BNZ   BUMPSIZE
         L     RB,LCBDCBPT              GET DCB BASE             S22025
         IC    RC,DCBRESER+1-IHADCB(RB) ASSUME TEXT BUFFER       S22025
         LA    RA,AVTTXTSZ              FOR PRFSIZE              S22025
         TM    PRFSTAT1,PRFNHDRN        HEADER                   S22025
         BO    SETSIZE                  BRANCH IF TEXT BUFFER    S22025
         IC    RC,LCBISZE               GET HEADER RESERVES      S22025
         LA    RA,AVTHDRSZ              SET HEADER SIZE          S22025
SETSIZE  EQU   *                                                 S22025
         AR    RC,RA                    PREFIX SIZE + IDLES      S22025
BUMPSIZE EQU   *                                                 S22025
         LA    RC,ONE(,RC) .            BUMP FOR EOT             S21101
         BAL   RB,CKBFMM .              DONT WANT EOT IN BUFER IFS21101
*                                         NOT REAL EOM           S21101
         B     MHPOST .                 NOT REAL EOM             S21101
         B     LCINS                    DONT REMOVE THIS BRANCH  S99228
*                                       CKBFMM RETURNS HERE      S99228
.L42A    ANOP
         SPACE 10
*
*        WRITE RESPONSE (UNCHAINED) FOR RECEIPT OF MESSAGE FROM
* TERMINAL WHICH HAS NO CONTINUE CAPABILITY (1030/1060).
*
RTWRRSP  EQU   *
         L     RCCW,LCBCPA+12          LAST SERVICED BUFFERR UNIT
         OI    LCBCSW+3,UNEX            INDICATE END OF MESSAGE
         MVI   LCBERCCW,NOPCI           SET PARAMETER
         BAL RA,FINDBUFF                POST PREVIOUS BUFFERS AND
*                                         GET BUFFER BASE  FOR UNIT
         B     POSTMSG                  POST MESSAGE TO MH
         AIF   ('&GEN' EQ 'STSP').L42B
         AIF   ('&GEN' EQ 'MINI').L42B
         AIF   ('&GEN' EQ 'QTAM').L42B
 SPACE 5
NOEOT    EQU   *
         TM    LCBMSGFM,LCBENQ .        EQN RECEIVED             S21101
         BO    NOTTD                    BRANCH YES             @OZ31566
         SPACE
         TM    LCBMSGFM,LCBTTD .        TTD                      S22025
         BO    ITSTTD .                 BRANCH IF YES            S22025
         SPACE
         LA    RCCW,LCBCPA+24 .         ASSUME BAD DATA CHARACTERS22025
         NI    LCBMSGFM,LCBNAK+LCBACKI+LCBOLT REXET FLAGS        S22025
         B     EXIT3 .                  RESTART                  S22025
         SPACE
ERLCOUT  EQU   *                        ERROR ENTRY
.L42B    ANOP
ERWRRSP  EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGEN?                 @OY12676
         BO    RESETTM                  YES - RESET            @OY12676
         L     RCCW,LCBCPA+12           CURRENT CCW
         OI    LCBCSW+3,UNEX            INDICATE END OF MESSAGE
POSTALL  EQU   *
         MVI   LCBERCCW,NOPCI           SET PARAMETER
         BAL   RA,FINDBUFF              LINK TO FREE UP RPEVIOUS
         B     ERRPOST
         SPACE
         AIF   ('&GEN' EQ 'BISC').L43
         AIF   ('&GEN' EQ 'MINI').L43
OPCHK    EQU   *
         L     RF,OPCHKAD               GET ROUTINE ADDRESS
         BR    RF                             TSO
 EJECT
.L43     ANOP
*
* EXIT TO BUILD A WRITE EOT.  THIS EXIT EXPECTS TP OP CODE TO BE SET.
*
RESETEOT EQU   *
          NI    SCBBSCFM,AVTEFF-SCBNOEOT RESET FLAG FOR SCHEULER S21101
*                                          ACTIVATE FOR BSC DIAL S21101
*                                          THAT RECEIVE OP IS NEXS21101
*                                          AND EOT WAS SENT      S21101
         MVI   LCBINCAM,0               CLEAR RETRY COUNT FOR RESET
         SR    RA,RA                   EOT INDEX
         LA    RWKA,LCBCPA+16           CCW BUILD AREA
         BAL   RD,CCWBLD               BUILD SEQUENCE
         B     RESTCOM                 RESTART
         SPACE 5                                               @OY10984
         AIF   ('&GEN' EQ 'MINI').L45                          @OY10984
         SPACE 5                                               @OY10984
*
* READ ID ENQ FOR BSC DIAL LINE.
*
         AIF   ('&GEN' EQ 'MINI').L45
         AIF   ('&GEN' EQ 'STSP').L44
         AIF   ('&GEN' EQ 'QTAM').L44
RTIDENQ  EQU   *
         CLI   LCBINCAM,0               FIRST TIME
         BNE   NOTSTEST                 BRANCH NOT FIRST TIME
         TS    LCBTSTSW                 HIO TO BE DONE
         BNZ   CLEANUP                  YES
NOTSTEST EQU   *
         L     RF,CHACKAD               RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO IT
         CLI   LCBERCCW,RENQ            ENQ RECEIVED
         BE    CHKID                    YES
         CLI   LCBINCAM,RETRY           RETRY LIMIT REACHED
         BNL   DISCON                   BRANCH IF YES
         SPACE
TRYRDID  EQU   *
         CLI   LCBINCAM,0               FIRST TIME
         BNE   BUMP                     NO
         MVC   LCBCSWSV,LCBCSW          SAVE CSW
BUMP     EQU   *
         IC    RA,LCBINCAM              GET RETRY COUNT
         LA    RA,1(,RA)                BUMP
         STC   RA,LCBINCAM              RESTORE
         B     EXIT3                    RESTART ON READ ID ENQ
         SPACE
CHKID    EQU   *
         L     RF,IDCHKAD               CHECK ID RWOUINTE
         BALR  RD,RF                    LINK TO IT
         B     EXIT2                    NORMAL REURN
         B     TRYRDID                  RETRY READ ID
         SPACE 10
*
*        READ ID ACK-0 FOR BSC DIAL LINE.
*
RTIDACK  EQU   *
         L     RF,CHACKAD               RESPONSE ROUTINE
         BALR  RD,RF                    LINK TO IT
         L     RF,IDCHKAD               CHECK ID RWOUINTE
         BALR  RD,RF                    LINK TO IT
         B     CHKCPU                   DETERMINE WHERE TO RESTART
STWRENQ  EQU   *
         MVI   LCBECBCC,PERMERR .       ASSUME RETRY EXHAUSTED   S21101
         CLI   LCBINCAM,RETRY .         IS RETRY EXHAUSTED       S21101
         BNL   ERIDACK .                BRANCH YES               S21101
         LA    RCCW,LCBCPA+40           WRITE ID(ENQ) CCW
         B     TRYRDID                  ATTEMPT RTETRY
         SPACE
CHKCPU   EQU   *
         TM    LCBSTAT1,LCBRECVN        RECEIVE STE (DIAL UP OPTION)
         BO    EXIT2                    BRANCH YES
         TM    CCWFLAGS,CCWSLI          THIS CPU OR END-END CTL
         BNZ   BSCADD                   BRANCH IF CPU
         SPACE
         TM    LCBERCCW,RACK0           ACK0 RECEIVED
         BNO   STWRENQ                  NO RETRY ID ENQ
         XI    LCBMSGFM,LCBACKI .       FLIP ACK COUNTER BACK    S21101
         B     EXIT2                    RESTART ON NEXT CCW
         SPACE 10
.L44     ANOP
*
*        READ ID FROM TWX
*
RTTWXID  EQU   *
         TM    LCBSTAT1,LCBRECVN        DIAL UP OPTION
         BO    EXIT2                    BRANCH YES
         L     RF,IDCHKAD               ID SCAN ROUTINE
         BALR  RD,RF                    LINK TO IT
         B     ADDROK                   NORMAL RETURN
         B     ERERROR                  INVALID ID
         EJECT
.L45     ANOP
ERCLOSE  EQU   *
*
*        RETURN FROM ERP AFTER IGE0904G HAS INTERFACED WITH OBR
* TO RECORD TEMPORARY ERROR COUNTERS IN TERMINAL ENTRIES.
*
         LA    RC,FREERQE               SET EXIT
         B     POSTECB                  POST ECB FOR CLOSE
         SPACE 10
*
*        ABORT RETURN FOR BOTH SEND AND RECEIVE OPERATIONS.  SEQUENCE
* INITIATED BY LINE END OR IEDQBT.
*
RTTXTRST EQU   *
ERTXTRST EQU   *
         TM    LCBSTAT1,LCBRECVN        RECEIVE STATE
         BZ    ERRSPEB                  NO, IT'S SEND
         SPACE
         MVI   LCBERCCW,NOPCI           SET PARAMETER
         L     RCCW,LCBCPA+12           LAST BUFFER
         BAL   RA,FINDBUFF              LINK TO FREE UP RPEVIOUS
         B     ERRPOST                  POST BUFFER WITH ERROR
         SPACE 5                                               @OY14057
         AIF   ('&GEN' EQ 'STSP').L45A                         @OY14057
         AIF   ('&GEN' EQ 'MINI').L45A                         @OY14057
         AIF   ('&GEN' EQ 'QTAM').L45A                         @OY14057
RTRS3270 EQU   *                                               @OY14057
ERRS3270 EQU   *                                               @OY14057
         OI    LCBCHAIN,LCBNORTY        SET NO RETRY           @OX16703
         MVI   LCBECBCC,PERMERR         MARK PERM ERROR        @OY14057
         MVI   LCBINCAM,RETRY           INSURE NO RETRIES      @OY14057
         ICM   RCCW,AD,LCBCPA+THIRTN    RESTORE TEXT CCW ADDR  @OY14057
         MVC   LCBCSW,LCBCSWSV          RESTORE CSW            @OY14057
         MVC   LCBSENS0(1),LCBSNSV      RESTORE SENSE          @OY14057
         MVI   LCBERCCW,NOPCI           FREE BUFFERS NOW       @OY14057
         BAL   RA,FINDBUFF              FREE PREVIOUS BUFFERS  @OY14057
         BAL   RB,SETCOUNT              GET EOB OFFSET         @OY14057
         STH   RC,PRFSIZE               SET SIZE IN BUFFER     @OY14057
         STCM  RPREFIX,AD,LCBRECAD      SAVE RECORD ADDRESS    @OY14057
         CLI   LCBCSW+6,0               RESIDUAL COUNT ZERO    @OY14057
         BE    RTRS3271                 YES, EOB AT END OF UNIT@OY14057
         LH    RD,CCWCOUNT              ORIGINAL COUNT         @OY14057
         SH    RD,LCBCSW+5              SUBTRACT RESIDUAL COUNT@OY14057
         L     RE,CCWADDR-1             DATA ADDRESS           @OY14057
         AR    RE,RD                    NEW DATA ADDRESS       @OY14057
         ST    RE,CCWADDR-1             SET NEW ADDRESS        @OY14057
         MVC   CCWCOUNT,LCBCSW+5        SET NEW COUNT          @OY14057
RTRS3271 EQU   *                                               @OY14057
         MVC   LCBCPA+16(8),CCW         SAVE UPDATED CCW       @OY14057
         B     ERRPOST1                 POST ERROR BUFFER      @OY14057
         SPACE 5                                               @OY14057
*                                                              @OY14057
.L45A    ANOP                                                  @OY14057
*        ERROR IN RESPONSE TO TEXT
*
ERRSPEB  EQU   *
         TM    LCBSTAT2,LCBMSGNN        MSGGEN
         BNZ   RESETTM                  BRANCH IF YES
         L     RCCW,LCBCPA+12           UNIT ADDRESS
HIOERR   EQU   *
         AIF   ('&GEN' EQ 'MINI').M3
         AIF   ('&GEN' EQ 'STSP').M3
         AIF   ('&GEN' EQ 'QTAM').M3
         TM    SCBSTATE,SCBTRANP        TRANSPARENT
         BZ    NOTTRNP                  BRANCH NO
         SPACE
         L     RCCW,LCBCPA+52           CURRENT CUNIT ADDRESS
         MVC   CCW+9(3),LCBCPA+57       LINK NEXT TO CURRENT
NOTTRNP  EQU   *
.M3      ANOP
         MVC   LCBNTXT(1),SCBDEOB       SAVE DISK OFFSET
         MVC   LCBRECAD(3),SCBDEOB+1    SAVE DISK RECORD ADDRESS
         MVC   LCBRECOF,SCBEOB          SAVE OFFSET INTO BUFFER
         MVC   LCBCPA+16(8),CCW         SAVE FOR POSSIBLE MH START
         MVI   LCBERCCW,NOPCI           SET PARAMETER
         AIF   ('&GEN' EQ 'MINI').CONC2A                         S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    FREEBUF                  BRANCH IF NO            SA57672
         TM    SCBERR4,SCBSLCTN         SELECTION ERROR         SA57672
         BZ    SENDERR                  BRANCH IF NO            SA57672
         NI    SCBERR4,AVTEFF-SCBSLCTN  RESET ERROR BIT         SA57672
         OI    LCBCHAIN,LCBNORTY        SET NO RETRY            SA57672
         B     SENDERR                  GO POST WITH ERROR      SA57672
FREEBUF  EQU   *                                                SA57672
.CONC2A  ANOP                                                    S22026
         BAL   RA,FINDBUFF              LINK TO FREE UP RPEVIOUS
         NI    PRFSTAT1,X'FF'-PRFITCPN .RESET NOT REAL EOM       X01004
         B     SENDERR                  SEDN ERROR
         SPACE 10
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'QTAM' ).NTSO1    SA48276
         AIF   ('&GEN' EQ 'BISC' ).NTSO1                        SA48276
RTRSPMG  EQU   *                                                SA48276
ERRSPMG  EQU   *                                                SA48276
         CLI   LCBERCCW+12,X'06'        ACK RECEIVED            SA48276
         BE    ERBPOST                  MSGGEN RECEIVED OK IF SOSA48276
         MVI   LCBCSW+3,CEDE            SET GOOD ENDING STATUS  SA48276
         L     RWORK,LCBSTART-1         GET CCW                 SA48276
         L     RWORK,0(,RWORK)          ADDRESS OF DATA         SA48276
         CLC   0(3,RWORK),STARS         WAS IT ***              SA48276
         BNE   ERBPOST                  IF NOT, IGNORE IT       SA48276
         LH    RC,LCBTTCIN              GET CONNECTED INDEX     SA48276
         L     RA,AVTRNMPT              TERM NAME ROUTINE       SA48276
         USING IEDQTNTD,RA              ADDRESSABILITY          SA48276
         BAL   RPREFIX,TNTDCODE         GET TERM ENTRY ADDRESS  SA48276
         USING IEDQTRM,RB               ADDRESSABILITY          SA48276
         L     RB,TRMDESTQ-1            DESTINATION QCB ADDRESS SA48276
         DROP  RA,RB                    DROP UNUSED REGS        SA48276
         USING IEDQQCB,RB               ADDRESSABILITY FOR QCB  SA48276
         OI    QCBTSOF1,QCBSATRD        TO TRY AGAIN LATER      SA48276
         MVC   LCBTTBIN,LCBTTCIN        FOR RETRY               SA48276
         NI    QCBTSOF2,X'FF'-QCBSIMRD  FOR RETRY               SA48276
         DROP  RB                       THROUGH WITH QCB        SA48276
         B     ERBPOST                  OPERATION COMPLETE      SA48276
STARS    DC    X'4A4A4A'                THREE ASTERISKS SATRD   SA48276
         DS    0H                                               SA48276
.NTSO1   ANOP                                                   SA48276
*
*        SELECTION ERRORS.
*
NOGEN    EQU   *
ERTWXID  EQU   *
ERRSPENQ EQU   *
ERRSPAD  EQU   *
RTRESET  EQU   *
ERIDENQ  EQU   *
ERIDACK  EQU   *
ERRESET  EQU   *
ERERROR  EQU   *
RTRSPAD  EQU   *
         TM    LCBSTAT2,LCBMSGNN        MESSAGE GEN
         BO    ERBPOST                  BRANCH YES
         CLI   LCBRSKEY,LCLRSCH         LOCAL DEVICE?          @SA71490
         BNE   REMO                     BRANCH NO              @SA71490
         MVI   LCBTSTSW,X'F0'           SET FOR NO NEW RECEIVE @SA71490
REMO     EQU   *                                               @SA71490
         OI    SCBERR4,SCBSLCTN        INDICATE SELECTION ERROR
         TM    LCBSTAT1,LCBRECVN         RECEIVE STATE
         BZ    ADDERR                   ADDRESSING ERROR
         MVI   LCBTPCD+11,AVTEZERO      RESET SMI INDICATOR    @YA06316
         OI    LCBSTAT2,LCBNEGRP        INDICATE NEGATIVE RESPONSE
LOADBUF  EQU   *                                               @YA06889
         L     RPREFIX,LCBLSPCI-1       POST FIRST BUFFER TO BD
         AIF   ('&GEN' NE '' AND '&GEN' NE 'BISC').M3A           S21101
         TM    SCBQTYPE,SCBBFMM .       ARE WE ATTEMPTING TO READS21101
*                                         SUBSEQUNET PART OF MSG S21101
*                                         E.G. LMD OR ENQ MODE   S21101
         BO    POSTPERM .               BRANCH YES, ERP HAS SET  S21101
*                                         HEADER TO TEXT AND SET S21101
*                                         PRFSIZE TO REFLECT EOT S21101
*                                         MOVED INTO BUFFER      S21101
.M3A     ANOP .                                                  S21101
MHERR    EQU   *
         SR    RC,RC                    CLEARF OR 0 LENGTH BUFFER
         STH   RC,PRFSIZE               CLEAR PREFIX SIZE
POSTPERM EQU   * .                                               S21101
         NI    PRFSTAT1,PRFNLSTF        MARK IT LAST
         MVI   PRFPRI,PRIMHBFR-1        SET POST PRIORITY
         B     POSTERR                  POST IT TO MH
*                                       MHAND EXIT
         SPACE 3
ADDERR   EQU   *
         ICM   RCCW,AD,LCBLSPCI         IS BUFFER ASSIGNED       Y01948
         BNZ   HIOERR                   BRANCH IF YES
         SPACE
         ICM   RA,AD,LCBERBCH           BUFFERS POSTED TO MH     Y01948
         BZ    GOIDLES                  YES, WAIT FOR BUFFERS
         OI    SCBERR4,SCBSLCTN .      SET SELECTION ERROR      SA44893
         AIF   ('&GEN' EQ 'MINI').M4
         CLI   LCBECBCC,PERMERR         HARD ERROR
         BNE   NOREDIAL                 BRANCH NO
         MVI   LCBTSTSW,AVTEFF          ENSURE A RE-DIAL
         OI    LCBSTAT2,LCBNEGRP        SET NEGATIVE RESPONSE-
*                                       OF DIAL OUT CALL Q
NOREDIAL EQU   *
.M4      ANOP
         L     RD,PRFLINK-1-IEDQPRF(,RA) GET NEXT BUFFER -RETURN
ERRLOOP  EQU   *
         LA    RD,0(,RD)                CLEAR HI ORDER BYTE
         LTR   RPREFIX,RD               ANOTHER BYFFER
         BZ    NONE                     BRANCH NO
         SPACE
         L     RD,PRFLINK-1-IEDQPRF(,RD) SAVE LINK FIELF
         MVI   PRFPRI,PRILNEND          SET POST PRIORITY
         LA    RF,AVTBFRTB              QXB FOR POST
         BAL   RC,ENQUEUE               PUT ON READY Q
         B     ERRLOOP                  GET NEXT BUFFER
         SPACE  2
NONE     EQU   *
         XC    LCBERBCH(3),LCBERBCH     CLEAR FIELD
         LR    RPREFIX,RA               GET 1ST BUFFER SAVED
         NC    LCBTTCIN,LCBTTCIN        IS DESTINATION DETERMND@OX17153
         BZ    NOLMT                    NO, NOT BUFFER BUSY    @OX17153
         STM   RPREFIX,RC,CNTSAVE       SAVE REGS              @OX17153
         LH    RC,LCBTTCIN              TERMINAL OFFSET        @OX17153
         L     RA,AVTRNMPT              TNT CODE BASE          @OX17153
         USING IEDQTNTD,RA                                     @OX17153
         BAL   RPREFIX,TNTDCODE         FIND TERMINAL TYPE     @OX17153
         USING IEDQTRM,RB                                      @OX17153
         L     RB,TRMDESTQ-1            GET QCB ASSRESS        @OX17153
         USING IEDQQCB,RB                                      @OX17153
         TM    QCBELCHN+2,QCBCNTEN      UNUSUAL ADDRESSING RESP@OX17153
         LM    RPREFIX,RC,CNTSAVE       RESTORE REGS           @OX17153
         DROP  RA,RB                                           @OX17153
         BZ    NOLMT                    NO, THIS IS NOT BUFF BUSY
         SPACE
         AIF   ('&GEN' EQ 'MINI').M5
         AIF   ('&GEN' EQ 'STSP').M5
         AIF   ('&GEN' EQ 'QTAM').M5
         TM    SCBERR1,SCBRVISL         RVI TO SELECTION
         BZ    NORVISL                  NO
         OI    LCBCHAIN,LCBNORTY        TEXT ERROR AND NO RETRY
         B     SENDERR                  POST TO MH
         SPACE
NORVISL  EQU   *
.M5      ANOP
         MVC   SCBDEOB+1(3),PRFCRCD     FOR BUFFER BUSY -BUFF TERM
         MVC   SCBDEOB(1),PRFNTXT       SXBDEOB UPDATED BY FA
         STCM  RA,AD,LCBLSPCI .         SET BUFFER ADDRESS       X01004
         OI    PRFSTAT1-IEDQPRF(RA),PRFITCPN NOT REAL END OF MSG X01004
         AIF   ('&GEN' EQ 'MINI').CONC2B .                       S22026
         TM    SCBQTYPE,SCBCONC .      CONCENTRATOR              S22026
         BO    MHERR .                 BRANCH IF YES             S22026
.CONC2B  ANOP .                                                  S22026
         NI    SCBERR4,SCBSLCTF .      TURN OFF SELECTION ERROR  S22026
         LA    RA,AVTBFRTB              SET SCBDESTQ TO BUFFER
*                                         RETURN IN EVENT ERROR
*                                         OCCURS ON NEXT OPERATION
*                                         ZERO LENGTH BUFFER WILL
*                                         NOT BE QUEUED.
         STCM  RA,AD,SCBDESTQ .         SET UP DEST. Q ADDRESS   Y01948
         B     CLEANUP                  POST TO DISPOSTIION
NOLMT    EQU   *
         NI    SCBQTYPE,AVTEFF-SCBBFMM  RESET MIDDLE OF MSG BIT
         B     MHERR                    YES, ERROR EXIT
         EJECT
RTEAU    DS    0H                                                S99228
         L     RPREFIX,LCBLSPCI-ONE     1ST BUFFER ADDR          S99228
         LA    RPREFIX,ZERO(RPREFIX)    CLEAR HO BYTE            S99228
         NI    PRFSTAT1,PRFNLSTF        MARK BUFFER AS LAST      S99228
         OI    LCBERBST,LCBERROR        INDICATE ERROR CONDITION S99228
*                                       SO BD WILL FREE ALL      S99228
*                                       BUFFERS                  S99228
*                                                                S99228
*        USE POST EXIT FROM LINE END                             S99228
*                                                                S99228
         MVI   PRFPRI,PRILNEND          SET POST PRIORITY        S99228
         L     RF,AVTBSCAN              ADDRESS OF BFR DISP      X02004
         B     POSTEXIT                 EXIT                     S99228
         EJECT                                                   S99228
TEXT     EQU   *
         MVI   LCBTSTSW,XF0             FOR 2260L AND DIAL
         LA    RWKA,LCBERCCW+8          THIS OWED RESPONSE
*                                         WRITE ACK (NAK)
         CLR   RWKA,RCCW                THIS THE ERRROR
         BNE   NOTCONV                  BRANCH IF NO
         SPACE
         LA    RCCW,LCBCPA+16           SET NEW START ADDRES
         MVI   LCBINCAM,0               RESET RETRY COUNT
         B     EXIT3                    EXIT FOR RESTART
NOTCONV  EQU   *
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'STSP' OR '&GEN' EQ 'QTAMC
               ').M66                                           SA68035
         BAL   RD,CHKNEG                SET NEG RESP IF NEEDED  SA68035
.M66     ANOP                                                   SA68035
         CLI   CCWOPCDE,CCWTIC          CCW A TC - PROG CHECK
         BNE   NOTIC                    BRANCH IF NO
         AIF   ('&GEN' EQ 'MINI').LR40
         TM    LCBSTAT1,LCBRECVN        RECEIVE STATE?           S99228
         BZ    NODEV                    NO PCI RECVY ON SEND     S99228
         L     RF,LOOKAD .              LOAD ADDR DVCCSTCS       S99228
         BALR  RD,RF .                  LINK TO ROUTINE          S99228
         ST    RE,AVTDOUBX+FOUR .       SAVE INVLIST CWORD ADDR  S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270            3270 DEVICE?             S99228
         BZ    NODEV                    BRANCH NO                S99228
         TM    LCBDCT2,CLOCAL           LOCAL DEVICE?            S99228
         BZ    NODEV                    BRANCH NO                S99228
         L     RDCB,LCBDCBPT            SET DCB ADDR             S99228
         USING IHADCB,RDCB                                       S99228
         TM    DCBPCI,RCVPCI            TEST FOR REC PCI         S99228
         DROP  RDCB                                              S99228
         BZ    NODEV                    NO LOCAL PCI SPEC        S99228
         SR    RB,RB                    CLEAR RETRY COUNT REG    S99228
         IC    RB,LCBPCIRC              INSERT PCI RETRY COUNT   S99228
         LA    RB,ONE(R0,RB)            INCREMENT RETRY COUNT    S99228
         STC   RB,LCBPCIRC              STORE INCREASED COUNT    S99228
         CLI   LCBPCIRC,THREE           COUNT AT MAXIMUM?        S99228
         BNH   RESTART                  RETRY AGAIN              S99228
NODEV    EQU   *                                                 S99228
.LR40    ANOP
         SH    RCCW,H8                  BACK UP TO CCW
         MVI   LCBCSW+6,0               INDICATE END OF BUFFER
         SPACE
NOTIC    EQU   *
         L     RD,AVTSAVEX+TWLVE .      DEB ADDRESS              X01004
         L     RD,DEBAPPAD-DEBNMSUB(,RD) .  APPENDAGE TABLE.     X01004
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'QTAM').ME2        X02004
         TM    TWO(RD),X80              IS ALTMH SPECIFIED       X02004
         BZ    OWNMHLC                  BRANCH NO                S22029
         NC    LCBTTCIN,LCBTTCIN        IS CONNECTED INDEX ZERO  S22029
         BZ    OWNMHLC                  YES - USE OWNING MH LC   S22029
         L     RWKA,FNDQCBAD .          GET ADDR OF ROUTINE USED S22029
*                                       TO FIND THE DEST QCB     S22029
         BALR  RE,RWKA .                GET DEST QCB ADDRESS     S22029
         LR    RE,R0 .                  FOR CONNECTED MH TEST    S22029
         TM    QCBDSFLG-IEDQQCB(RE),QCBALTMH IS TERMINAL         S22029
*                                       CONNECTED TO ALTMH       S22029
         BZ    OWNMHLC .                NO - USE OWNING MH LC    S22029
         LA    RD,ONE(,RD)              USE ALTMH OPTIONS        X02004
OWNMHLC  EQU   * .                                               S22029
.ME2     ANOP
         MVC   LCBERCCW+ONE(ONE),0(RD) .STARTMH OPTION BITS      X01004
         LA    RCCW,AVTEZERO(,RCCW)     CLEAR HI ORDER BYTE
         AIF   ('&GEN' EQ 'MINI').Z7
         CLI   LCBCPA+24,CCWPOLL        HEADER ON AUTOPOLL
         BE    AUTOSRC                  YES-DETERMINE SOURCE    SA59028
         L     RF,LCBDCBPT              LOAD DCB OFFSET         SA64386
         CLI   DCBEIOBX-IHADCB(RF),X'C8'  LCB LESS THAN C8 LONG SA64386
         BL    RESUME                   YES, SKIP AUTOPOLL TEST SA64386
         CLI   LCBCPA+53,AVTEFF         ERP FOR AUTOPOLL DONE   SA59028
         BNE   RESUME                   NO - NOT AUTOPOLL       SA66604
AUTOSRC  EQU   *                        AUTO SECTION
         SPACE
         L     RF,POLLAD                ATUOPOLL SOURCE ROUINE
         BALR  RD,RF                    LINK TO IT
RESUME   EQU   *
         L     RF,LOOKAD .              LOAD ADDR DVCCSTCS       S99228
         BALR  RD,RF .                  LINK TO ROUTINE          S99228
         ST    RE,AVTDOUBX+FOUR .       SAVE INVLIST CWORD ADDR  S99228
         L     RE,AVTDOUBX .            LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270 .          3270 DEVICE              S99228
         BZ    NOCOUNT .                BRANCH IF NO             S99228
         TM    LCBDCT2,CLOCAL           LOCAL DEVICE             S99228
         BZ    NOCOUNT .                BRANCH IF NO             S99228
         MVI   LCBPCIRC,ZERO .          RESET PCI RETRY COUNT    S99228
NOCOUNT  EQU   *                                                 S99228
.Z7      AIF   ('&GEN' NE '').L49
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NOTBSC                   NOT BSC
.L49     AIF   ('&GEN' EQ 'STSP').L50
         AIF   ('&GEN' EQ 'MINI').L50
         AIF   ('&GEN' EQ 'QTAM').L50
         TM    LCBSTAT1,LCBRECVN        RECEIVE OPERATION
         BZ    NOTREAD                  NO
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BE    NOTBSC                   YES, SKIP SCAN
         TM    LCBMSGFM,LCBVSTRT+LCBRSTRT >TART BITS ALREADY CHECS21101
         BNZ   NORM                     YES
         L     RF,SCANAD                SCAN ADDRESS
         BALR  RD,RF                    LINK TO ROUTINE
         SPACE
NORM     EQU   *
         TM    LCBMSGFM,LCBEOT+LCBENQ . DLEEOT=SUM OF EOT AND ENQS21101
         BNO   NOHANGUP                 BRANCH NO
         MVI   LCBTSTSW,AVTEFF          FORCE NEW CONNECTION NEXT
         B     NOTBSC                   CONTINUE PROCESSING
NOHANGUP EQU   *
         TM    LCBMSGFM,LCBOLT .        OLT REQUEST              S21101
         BZ    NOOLT                    BRANCH IF NO
         MVI   LCBERCCW+1,IN            FORCE LCIN AND READ TILL EOT
NOOLT    EQU   *
         TM    SCBBSCFM,SCBTRNSP        RECEIVE TRANSPARENT
         BZ    DONTSET                  NO
         SPACE
         NI    LCBERCCW+1,AVTEFF-IN     FORCE LCOUT FOR TRANSPARENT
DONTSET  EQU   *
         SPACE
         TM    LCBMSGFM,LCBTTD .        TTD RECEIVED             S21101
         BZ    NOTTD                    NO
         SPACE
GOTTTD   EQU   * .                                              SA44892
ITSTTD   EQU   * .                                               S22025
         OI    LCBMSGFM,LCBNAK .        RESPONE FOR TTD          S21101
         LA    RWKA,GOEXIT              SET EXIT ADDRESS       @OZ09279
SRCPCI   EQU   *                                               @OZ09279
         SR    RC,RC                    CLEAR FOR INSERT       @OZ09279
         ICM   RC,AD,LCBLSPCI           GET LAST PCI BUFFER    @OZ09279
SRCPCI1  EQU   *                                               @OZ09279
         CLM   RC,AD,LCBCPA+13          IS IT LAST INTERR UNIT @OZ09279
         BCR   8,RWKA                   BRANCH YES             @OZ09279
         CLI   TICEND(RC),TWO           END OF CHANNEL PROGRAM?@OZ09279
         BE    SETPERM                  YES-PERMANENT ERROR    @OZ09279
         ICM   RC,AD,PRFTIC+1-IEDQPRF(RC) NEXT LSPCI CHAIN UNIT@OZ09279
         B     SRCPCI1                  SEARCH LCBLSPCI CHAIN  @OZ09279
SETPERM  EQU   *                                               @OZ09279
         MVI   LCBECBCC,PERMERR         SET PERMANENT ERROR    @OZ09279
         OI    SCBERR3,SCBFORMN         SET FORMAT ERROR       @OZ09279
         OI    SCBERR4,SCBTXTTN         SET TEXT ERROR         @OZ09279
         OI    LCBMSGFM,LCBRSTRT        SET INVALID START      @OZ09279
         NI    LCBMSGFM,AVTEFF-LCBVSTRT-LCBENQ-LCBTTD-LCBNAK   @OZ09279
         B     NOCKEND                  EXIT                   @OZ09279
         SPACE
NOTTD    EQU   *
         TM    LCBMSGFM,LCBENQ .        EQN RECEIVED             S21101
         BZ    NOTBSC                   NO
         CLI   LCBINCAM,RETRY           RETRY EXHAUSTED         SA61094
         BL    BUMPIT                   BR, NO SEND ACK AGAIN   SA61094
         MVI   LCBINCAM,AVTEZERO        RESET ENQ COUNTER       SA61094
         OI    LCBCHAIN,LCBABRTN        SEND AN EOT             SA61094
         B     ITSENQ                   BR                      SA61094
BUMPIT   EQU   *                                                SA61094
         SR    RWKA,RWKA                CLEAR FOR INSERT       @OZ09279
         IC    RWKA,LCBINCAM            GET RETRY COUNT        @OZ09279
         LA    RWKA,ONE(RWKA)           BUMP BY ONE            @OZ09279
         STC   RWKA,LCBINCAM            UPDATE COUNT           @OZ09279
ITSENQ   EQU   * .                                               S22025
         BAL   RWKA,SRCPCI              CHECK PCI CHAIN        @OZ09279
         OI    LCBMSGFM,LCBNAK          REQUEST TO SEND NAK    @SA75453
         L     RWKA,LCBCPA+16           DATA ADDRESS           @SA75453
         L     RA,LCBDCBPT              GET DCB ADDRESS        @SA75453
         USING IHADCB,RA                                       @SA75453
         L     RC,DCBSCTAD-1            SPECIAL CHARACTERS     @SA75453
         DROP  RA                                              @SA75453
         SR    RA,RA                    CLEAR WORK REGISTER    @SA75453
         IC    RA,NAKCH(RC)             NAK INDEX              @SA75453
         LA    RC,1(RA,RC)              NAK SEQUENCE           @SA75453
         CLC   0(1,RWKA),0(RC)          TEST FOR NAK SENT      @SA75453
         BE    GOEXIT                   YES, REBUILD NAK       @XA11162
         XI    LCBMSGFM,LCBNAK+LCBACKI  TURN OFF NAK AND FLIP  @SA75453
*                                        ACK COUNTER           @SA75453
GOEXIT   EQU   *
         L     RCCW,LCBCPA+12
         MVC   LCBCPA+16(8),CCW         SAVE CCW
         B     GOIOGEN                  EXIT TO RESTART
         SPACE
NOTREAD  EQU   *
         L     RF,BSC27AD                                        S22027
         BR    RF                                                S22027
.L50     ANOP
         EJECT
NOTBSC   EQU   *
*
*    THE FOLLOWING CODE ESTABLISHES THE TRUE ENTERRUPTED CCW IN
* RCCW.  (THIS ACCOUNTS FOR THE CASE OF AN EOB OCCURRING IN THE
* LAST POSITION OF A UNIT.)  RPREFIX IS ALSO ESTABLISHED TAKING
* INTO CONSIDERATION THAT A PCI MIGHT HAVE BEEN MISSED OR THAT PCI
*        IF PCI IS NOT USED ON RECEIVE OPERATIONS, ALL BUFFERS UP TO
* THE ONE WHICH PRESENTED AN EOB OR ETB INTERRUPT ARE POSTED TO MH.
* SIMILARLY, BUFFERS ARE POSTED TO THE AVAILABLE BUFFER QUEUE  FOR
* OUTPUT OPERATIONS.
*
* IS NOT USED.
         AIF   ('&GEN' EQ 'MINI').CONC3                          S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BNO   NOTCONCC .               BRANCH IF NO             S22026
         STCM  RCCW,AD,SCBXTRA          INTERRUPTED UNIT         Y01948
SAVECCW  EQU   * .                                               S22026
         MVC   SCBXTRA+3(8),0(RCCW) .   SAVE CCW                 S22026
         CLI   LCBINCAM,ZERO .          ERROR RECOVERY           S22026
         BNE   NOTCONCC .               BRANCH IF YES            S22026
         MVC   SCBXTRA+11(4),LCBCPA+12 .SAVE TEXT START          S22026
NOTCONCC EQU   * .                                               S22026
.CONC3   ANOP                                                    S22026
         L     RE,LCBLSPCI-1            LAST SERVICEC  BUFFER
         LA    RE,0(,RE)                CLEAR HI ORDER BYTE
         LR    RPREFIX,RE               COPY BUFFER ADDRESS
         CLC   CCWCOUNT+1(1),LCBCSW+6   RESIDUAL COUNT EQ ORIGINAL
         BNE   NOTEQ                    NO
         CLI   CCWCOUNT+1,AVTEZERO      WAS ORIG COUNT ZERO    @OS76271
         BNE   ORIZERO                  BRANCH-NO CONTINUE     @OS76271
         MVI   LCBECBCC,PERMERR         SET PERM ERROR         @OS76271
         B     NOTEQ                    GO HANDLE CPC          @OS76271
ORIZERO  EQU   *                                               @OS76271
         LA    R0,ONE                   LOAD A POSITIVE VALUE
         CLR   RE,RCCW                  BUFFER SAME AS CURRENT CCW
         BNE   CKBUF                    BRANCH IF NO
         TM    LCBSTAT1,LCBSENDN        SEND SIDE
         BO    LASTBUF                  BRANCH IF YES
         LNR   R0,R0 .                  REMEMBER CONDITON
CKBUF    EQU   *
         L     RF,LCBCPA+12             LAST TEXT CCW
         LA    RF,0(,RF)                CLEAR HI ORDER BYTE
         CR    RF,RCCW                  SAME AS ENDING CCWIN CSW
         BNE   LOOPCT                   BRANC NO
         TM    LCBSTAT1,LCBSENDN        SEND SIDE
         BO    LOOPCT                   YES
         AIF   ('&GEN' EQ 'STSP').M6
         AIF   ('&GEN' EQ 'MINI').M6
         AIF   ('&GEN' EQ 'QTAM').M6
         CLI   LCBTPCD+3,TPRDLC         READ LC OUT
         BNE   NORDLC                   BRANCH IF NO
         TM    CCWFLAGS,CCWSLI          SAME CCW AS LAST RESTART OR
*                                         HAVE WE WRAPPED AND UNIT
*                                         BEEN RE-USED
         BZ    RDLCENT                  BRANCH IF NOT WRAPPED
         B     LOOPCT                   WRAPPED CONDITION
NORDLC   EQU   *
.M6      ANOP
         TM    PRFSTAT1-IEDQPRF(RE),PRFNHDRN HEADER BUFFER-POSSIBLE
*                                         NO IF HEADER BUFFER IS RE-
*                                         USED VIA PCI
         BO    TSTSLI                   YES
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'BISC').M61
         AIF   ('&GEN' EQ 'QTAM').M61
         TM    LCBTSOB,LCBTSBUF         IS THIS TIME SHARING BUFFER TSO
         BO    NOTEQ                    BRANCH ON YES               TSO
.M61     ANOP
         TM    LCBCSW+3,UNEX            UNIT EXCEPTION
         BZ    NOTEQ                    NO, TRUE CCW SET
         SPACE
         B     RTPOLL                   BUMP POLLING POINTER
TSTSLI   EQU   *
         TM    CCWFLAGS,CCWSLI          HAVE E WRAPPED
         BZ    NOTEQ                    NO
         SPACE
LOOPCT   EQU   *
         LTR   R0,R0 .                  LSCPI SAMEAS ENDING CCW
         BM    NOTEQ                    BRANCH IF YES
LOOPCT1  EQU   *
         LR    RD,RE                    SAVE PRECIOUS CCW
         L     RE,8(,RE)                NEXT CCW IN CHAIN
         LA    RE,0(,RE)                CLEAR FOR CMPARE
         CR    RE,RCCW                  THIS INTERRUPTED CCW
         BNE   LOOPCT1 .                NO, LOOK AT NEXT
         MVC   LCBCPA+16(8),0(RE)       SAVE CONTINUE CCW      @SA71963
         SPACE
         LA    RCCW,0(,RD)              TRUE ENDING CCW
         MVI   LCBCSW+6,0               CLEAR RESIDUAL COUNT
         AIF   ('&GEN' EQ 'MINI').CONC3A                         S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BNO   NOTCONCE .               BRANCH IF NO             S22026
         MVC   SCBXTRA+3(8),0(RCCW) .   SAVE CCW                 S22026
         STCM  RCCW,AD,SCBXTRA          SET INTERRUPTED UNIT     Y01948
NOTCONCE EQU   * .                                               S22026
.CONC3A  ANOP                                                    S22026
         SPACE
NOTEQ    EQU   *
         L     RA,LCBDCBPT              GET DCB ADDRESS
         AIF   ('&GEN' NE '').Z81
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NOCKEND                  NO
.Z81     AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z8
         AIF   ('&GEN' EQ 'QTAM').Z8
         SPACE
         BAL   RC,FINDEOB  .            GET ADDRESS OF LAST CHAR S99228
         BAL   RC,CKEND  .              CHECK START AND END CHAR S99228
NOCKEND  EQU   *                                                 S99228
.Z8      ANOP                                                    S99228
         AIF   ('&GEN' EQ 'QTAM' OR '&GEN' EQ 'MINI').LL45       S99228
         TM    LCBSTAT1,LCBRECVN        RECEIVE STATE?           S99228
         BZ    NOGPOLL                  NO SKIP GENPOLL TEST     S99228
         TM    LCBFLAG3,LCBOBRRD        SOH%R MESSAGE FOR OBR?   S99228
         BO    NOGPOLL                  BRANCH YES               S99228
         NC    LCBTTCIN(2),LCBTTCIN     POLLRT DETERMINE INVALID S99228
*                                       SOURCE?                  S99228
         BZ    NOGPOLL                  SOURCE ZERO TREAT AS SPECS99228
*                                       POLL                     S99228
SLOWPOLL EQU   *                                                 S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,CUMASK           GENERAL POLL IN PROGRESS?S99228
         BZ    NOGPOLL                  NO BYPASS SOURCE DETERM  S99228
         TM    LCBMSGFM,LCBOLT          TRM PRESENT?             S99228
         BO    SRCSET                   BRANCH YES               S99228
         TM    LCBXFLAG,LCBSRCPF        SRC DETERM PERFORMED?    S99228
         BO    SRCCOMP                  YES, SKIP SRC DET        S99228
         LA    RA,LCBCPA+40 .           LOAD ADDR TCBUF CCW      S99228
         CLI   LCBCPA+24,CCWNOP         AUTOPOLL IN PROGRESS?   SA66598
         BL    MANUAL                   NO, PROGRAM POLL        SA66598
         SR    RC,RC                    CLEAR FOR IC            SA66598
         L     RF,LCBDCBPT              GET DCB ADDRESS         SA66598
         IC    RC,LCBUCBX               GET RLN                 SA66598
         SLL   RC,TWO                   MULTIPLY BY FOUR        SA66598
         L     RC,DCBINVLI-IHADCB(RC,RF) GET ILIST ADDRESS      SA66598
         TM    THREE(RC),AUTOPL         AUTOPOLL IN PROGRESS    SA66598
         BZ    MANUAL                   NO, PROGRAM POLL        SA66598
         CLI   LCBCPA+48,CCWPOLL        IS THIS FIRST HEADER    SA66598
         BNE   MANUAL                   NO, MANUAL POLL         SA66598
         MVI   LCBCPA+48,CCWNOP         NOP FOR NEXT HEADER     SA66598
         LA    RA,LCBCPA+72 .           LOAD ADDR TCBUF CCW      S99228
MANUAL   EQU   *                                                 S99228
         L     RWKA,ZERO(R0,RA)         LOAD BUFFER ADDRESS      S99228
         L     RF,SORCEAD               LOAD SOURCE ROUTINE ADDR S99228
         BALR  RD,RF                    BRANCH TO SRC DET RTN    S99228
SRCSET   EQU   *                                                 S99228
         OI    LCBXFLAG,LCBSRCPF        INDICATE SRC DETERMINED  S99228
SRCCOMP  EQU   *                                                 S99228
         AIF   ('&GEN' EQ 'STSP').LL4B                           S99228
         TM    LCBSTAT2,LCBSYNC         BSYNC LINE               S99228
         BZ    NOCHECK                  NO, BYPASS LINE CON CHECKS99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBXFLAG,LCBERPND        END CHAR ENQ?            S99228
         BO    NOLOOK                   SKIP EOT INSERT          S99228
         TM    SCBBSCFM,SCBRCVTX        ETX RECD BSYNC LINE      S99228
         BNO   NOGPOLL                  NO BYPASS GENPOLL SET    S99228
NOCHECK  EQU   *                                                 S99228
.LL4B    ANOP                                                    S99228
         L     RA,LCBDCBPT              LOAD DCB ADDR            S99228
         USING IHADCB,RA                                         S99228
         L     RF,DCBSCTAD-ONE          LOAD ADDR SPEC CHARS     S99228
         DROP  RA                                                S99228
         SR    RC,RC                    CLEAR WORK REGISTER      S99228
         IC    RC,ZERO(R0,RF)           INSERT EOT OFFSET        S99228
         LA    RC,ONE(RC,RF)            LOAD ADDR EOT CHAR       S99228
         LR    RF,RCCW                  LOAD ADDR TRUE INTRPT CCWS99228
         CLI   CCWOPCDE,CCWTIC          INTERRUPTED CCW A TIC   SA66632
         BE    NOLOOK                   YES, SKIP EOT MOVE      SA66632
         LH    RD,SIX(R0,RF)            LOAD CCW COUNT           S99228
         LH    RA,LCBCSW+FIVE           LOAD RESIDUAL COUNT      S99228
         SR    RD,RA                    DERIVE COUNT DATA READ   S99228
         L     RF,ZERO(R0,RF)           LOAD DATA ADDR           S99228
         AR    RF,RD                    SET EOT BUFFER POSITION  S99228
         TM    LCBERCCW+ONE,IN          LINE CONTROL IN?         S99228
         BO    LCINSIDE                 YES, CHECK RESIDUAL CNT  S99228
         BCTR  RF,R0                    SET BUFFER EOT POSITION  S99228
*                                       TO OVERWRITE ETX         S99228
         B     EOTMOVE                  INSERT EOT               S99228
LCINSIDE EQU   *                                                 S99228
         LTR   RA,RA                    RESIDUAL COUNT ZERO?     S99228
         BNZ   EOTFILL .                BRANCH IF NO             S99228
ZERORES  EQU   *                                                 S99228
         L     RF,LCBCSW-ONE            LOAD INTERRUPT ADDR      S99228
         LA    RF,ZERO(R0,RF)           CLEAR HI ORDER BYTE      S99228
         SH    RF,H8                    SET ADDR NEXT CCW        S99228
         CLI   CCWOPCDE-IEDQCCW(RF),CCWTIC  INTERRUPT ON A TIC @YA06327
         BE    NOLOOK                   YES, SKIP EOT MOVE      SA66632
         LR    RCCW,RF                  SET NEW TRUE INTERRUPT   S99228
*                                       CCW                      S99228
         L     RF,ZERO(R0,RF)           LOAD DATA ADDR           S99228
         LH    RA,CCWCOUNT              LOAD CCW COUNT           S99228
EOTFILL  EQU   *                                                 S99228
         BCTR  RA,R0                    REDUCE RESIDUAL COUNT    S99228
         STH   RA,LCBCSW+FIVE           RESTORE RESIDUAL COUNT   S99228
EOTMOVE  EQU   *                                                 S99228
         TM    LCBSTAT2,LCBSYNC         BISYNC LINE?             S99228
         BO    SYNCON                   BRANCH YES               S99228
         LA    RC,ONE(R0,RC)            POINT TO FIRST EOT       S99228
SYNCON   EQU   *                                                 S99228
         MVC   ZERO(ONE,RF),ZERO(RC)    MOVE EOT INTO BUFFER     S99228
NOLOOK   EQU   *                                                 S99228
         CLI   LCBECBCC,PERMERR         PERM ERROR PRESENT?      S99228
         BE    NOGPOLL1                 YES,LEAVE ETX FLAG UNSE@OX12505
         TM    SCBERR4,SCBTXTTN         TEXT ERROR?              S99228
         BO    NOGPOLL1                 BRANCH YES             @OX12505
         OI    LCBXFLAG,LCBGPCTV        SET GENPOLL IN PROGRESS  S99228
         B     NOGPOLL                  EXIT GENERAL POLL CODE@OX12505
NOGPOLL1 EQU   *                                               @OX12505
         OI    LCBCSW+THREE,UNEX        SET EOT RECEIVED       @OX12505
         B     NOGPOLL                                         @OX12505
NOGPOLL  EQU   *                                                 S99228
         L     RA,LCBDCBPT              LOAD DCB POINTER         S99228
.LL45    ANOP                                                    S99228
         USING IHADCB,RA
         AIF   ('&GEN' EQ 'STSP').CONC3B                         S22026
         AIF   ('&GEN' EQ 'MINI').CONC3B                         S22026
         AIF   ('&GEN' EQ 'QTAM').CONC3B                         S22026
         TM    LCBFLAG3,LCBOBRRD .      TPER RECORD              S22026
         BZ    CONTINUE .               NO, CONTINUE             S99238
         NC    LCBRECOF,LCBRECOF        READ CONTINUE           SA68026
         BZ    ERPCHK                   BR NO, CONTINUE         SA68026
         NI    LCBFLAG3,AVTEFF-LCBOBRRD RESET OBR REQUEST       SA68026
         B     TEXT                     TREAT AS TEXT           SA68026
ERPCHK   EQU   *                                                SA68026
         SPACE
         CLI   LCBECBCC,PERMERR .       PERMANENT ERROR          S99238
         BNE   ERPEXIT .                NO, SCHEDULE ERP         S99238
         SPACE
CONTINUE EQU   * .                                               S99238
.CONC3B  ANOP                                                    S22026
         MVI   LCBERCCW,NOPCI           ASSUME NO PCI USED
         TM    LCBCSW+4,PCIFLAG         PCI FLAG ON
         BO    PROCBUFF                 BRANCH IF YES
         SPACE
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BE    PROCBUFF                 YES, FRREE UP BUFFERS
         SPACE
         TM    LCBSTAT1,LCBSENDN        SEND SIDE
         BZ    RCVOP                    NO
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270            3270 DEVICE?             S99228
         BZ    CHAINBY                  BRANCH NO                S99228
         TM    LCBDCT2,CLOCAL           LOCAL DEVICE?            S99228
         BZ    CHAINBY                  BRANCH NO                S99228
         MVI   LCBERCCW,PCIOPT          SET TO FREE BUFFERS AT   S99228
*                                       COMPLETION OF CHNL PGM   S99228
         TM    CCWFLAGS,CCWCC+CCWCD     CHAINING FLAGS ON?       S99228
         BNZ   CHAINBY                  BRANCH YES               S99228
         MVI   LCBERCCW,NOPCI           SET TO FREE BUFFERS NOW  S99228
CHAINBY  EQU   *                                                 S99228
         SPACE
         TM    DCBPCI,SNDPCI            PCI ON SEND SIDE
         BZ    PROCBUFF                 NO, FREE UP BUFFERS
         SPACE
         TM    CCWFLAGS,CCWCC+CCWCD     ANY FLAGS
         BZ    PROCBUFF                 FREE BUFFERS END OF MSG
         SPACE
         B     SETPARM                  SET PARAMETER FOR LATER USE
         SPACE 2
RCVOP    EQU   *
         TM    DCBPCI,RCVPCI            PCI ON RECEIVE
         BZ    PROCBUFF                 NO, FREE UP BUFFERS
         SPACE
         AIF   ('&GEN' EQ 'QTAM' OR '&GEN' EQ 'MINI').LL46       S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270            3270 DEVICE?             S99228
         BZ    RECHECK                  BRANCH NO                S99228
         TM    LCBDCT2,CLOCAL           LOCAL DEVICE?            S99228
         BO    PROCBUFF                 BRANCH YES               S99228
RECHECK  EQU   *                                                 S99228
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BO    PROCBUFF                 YES, SKIP PCIOPT SET     S99228
.LL46    ANOP                                                    S99228
         TM    LCBERCCW+1,LOGICAL+CONV+LMD   IS THERE AN MH EXIT S22025
         AIF   ('&GEN' EQ 'MIMI').LL46C                         SA59028
         AIF   ('&GEN' EQ 'QTAM').LL46C                         SA59028
         BZ    SETPARM1                 NO-CHECK FOR EOT        SA59028
         TM    LCBTSOB,LCBTSBUF         TSO IN SESSION          SA59028
         BZ    PROCBUFF                 NO-FREE UP DEVICE       SA59028
         TM    LCBDCT1,C3270            3270 DEVICE             SA59028
         BZ    PROCBUFF                 NO-FREE UP BUFFERS      SA59028
         TM    LCBDCT2,CREMOTE          BSC DEVICE              SA59028
         BZ    PROCBUFF                 NO-FREE UP BUFFERS      SA59028
         TM    SCBBSCFM,SCBRCVTX        ETX RECD BSYNC LINE     SA59028
         BO    PROCBUFF                 YES- FREE UP BUFFERS    SA59028
SETPARM1 EQU   *                                                SA59028
         AGO   .LL46B                                           SA59028
.LL46C   ANOP                                                   SA59028
         BNZ   PROCBUFF                 YES- FREE UP BUFFERS    SA59028
.LL46B   ANOP                                                   SA59028
         TM    LCBCSW+3,UNEX            EOT RECEIVED
         BO    PROCBUFF                 YES, FREE UP BUFFERS
SETPARM  EQU   *
         MVI   LCBERCCW,PCIOPT          SET FLAG ,POST BUFFERS LATER
*                                         PCI WILL DO IT TO REQUEST
*                                         MORE NEEDED BUFFERS
PROCBUFF EQU   *
         AIF   ('&GEN' EQ 'MINI').CONC4                          S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    NOTCONCF .               BRANCH IF NO             S22026
         CLI   LCBECBCC,PERMERR .       PERMANET ERROR           S22026
         BE    NOTCONCF .               BRANCH IF YES            S22026
         MVI   LCBERCCW,PCIOPT .        SET PCI FLAG             S22026
         OI    SCBSTAT1,SCBNOPST .      INDICATE NO POST         S22026
NOTCONCF EQU   * .                                               S22026
.CONC4   ANOP                                                    S22026
         DROP  RA
         LA    RA,FOUND                 SEST EXIT FROM SUBROUTINE
         EJECT
FINDBUFF EQU   *
*        THE FOLLOWING SUBROUTIE WILL DETERMINE THE FIRST UNIT
* UNIT OF A BUFFER FOR THE UNIT WHICH PRESENTED THE INTERRUPT.
* RCCW CONTAINS THE ADDRESS OF THE ENDING UNIT.  RPREFIX WILL POINT
* TO THE BUFFER. IN ADDITION, RB WILL CONTIN THE COUNT OF BUFFERS
* UP TO,BUT NOT INCLUDING THE INTEDRRUPTED BUFFER.  IF LCBERCCW IS
* EQUAL TO 00 (NOPCI) ALL PREVIOUS BUFFERS WILL BE POSTED TO THE
* AVAILABLE BUFFER QUEUE (SEND) OR TO MH (RECEIVE).
         LA    RCCW,0(,RCCW)            CLEAR HI ORDER BYTE -COMPARE
         SR    RB,RB                    CLEAR FOR BUFFER COUNT
         LR    R0,RB                    CLEAR WORK REGISTER
         L     RE,LCBLSPCI-1            LAST SERVICED BUFFER
LOOP2    EQU   *                                               @OZ07786
         LR    RPREFIX,RE               SAVE BUFFER ADDRESS
         IC   R0,PRFNBUNT              NUMBER OF NNIT SON BUFFER
ENTER    EQU   *
         LA    RE,0(,RE)                CLEAR FOR COMPARE
         CR    RE,RCCW                  THIS INTERRUPTED CCW
         BNE   BCTIT .                  BRANCH NO -GET NEXT UNIT S21101
         SPACE 1                                                 S21101
         CLI   LCBERCCW,PCIOPT .        PCI TO FREE BUFFERS      S21101
         BCR   8,RA .                   BRANCH YES               S21101
         SPACE 1                                                 S21101
         STCM  RPREFIX,AD,LCBLSPCI      SET LAST SERVICED BUFFER Y01948
         BR    RA .                     RETURN TO CALLER         S21101
         SPACE 1                                                 S21101
BCTIT    EQU   *                                                 S21101
         SPACE
         L     RE,PRFTIC-IEDQPRF(,RE)   NEXT CCW ADDRESS       @OZ07786
         BCT   R0,ENTER                 CHECK NEXT UNIT        @OZ07786
         SPACE
         TM    LCBSTAT1,LCBSENDN        SEND STATE
         BO    SEND                     YES
         USING IHADCB,RD
         L     RD,LCBDCBPT              GET DCB ADDRESS
         MVC   PRFSIZE,DCBBUFSI         SET PREFIX SIZE
         MVI   PRFPRI,PRIMHBFR          POST PRIORITY
         L     RF,DCBMH-1               QCB POST ADDRESS
         DROP  RD
BUFFPOST EQU   *
         CLI   LCBERCCW,PCIOPT          CPI TO FREE BUFFERS
         BE    LOOP2                    YES,DON'T FREE BFRS    @OZ07786
         BAL   RC,ENQUEUE               PUT ON READYBQUEUE
         B     LOOP2                    LOOP ON NEXT BUFFER
         SPACE
SEND     EQU   *
         AIF   ('&GEN' EQ 'MINI').CONC4A                         S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    NOTCONCG .               BRANCH IF NO             S22026
         TM    SCBSTAT1,SCBNOPST .      POST BUFFERS             S22026
         BO    LOOP2                    BRANCH IF NO           @OZ07786
NOTCONCG EQU   * .                                               S22026
.CONC4A  ANOP                                                    S22026
         LA    RF,AVTBFRTB              BUFFER RETURN
         MVI   PRFPRI,PRIBFRTB          SET POST PRIORITY
         B     BUFFPOST
         EJECT
FOUND    EQU   *
         AIF   ('&GEN' EQ 'MINI').CONC4B                         S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    NOTCONCH .               BRANCH IF NO             S22026
         NI    SCBSTAT1,255-SCBNOPST .  RESET POST FLAG          S22026
NOTCONCH EQU   * .                                               S22026
.CONC4B  ANOP                                                    S22026
         STC   R0,LCBERCCW+3            SVAE FORLATER
         LR    RD,RPREFIX               SAVE FOR UPDATING COUNTS
         CLI   LCBCSW+6,0               RESIDUAL COITN 0
         BNE   CURRCCW                  NO
         TM    CCWFLAGS,CCWCD+CCWCC     ANY CHAINING FLAGS ON
         BNZ   NOEOTSNT                 BRANCH EOT NOT SENT
         CLI   LCBECBCC,PERMERR         TEXT ERROR
         BNE   TESTRSP                  BRANH NO
SENDERR  EQU   *
         OI    SCBERR4,SCBTXTTN         SET TEXT ERROR
         OI    LCBERBST,LCBERROR        ASSOGN NO MORE BUFFERS
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         L     RF,DCBMH-1               MH QCB ADDRESS
         SPACE
*        IF NO RECAL IS GOING TO BE PERFORMED AND WE ARE STILL
*        READING FROM DISK RECALL ADDRESS MUST BE BUFF DISPOSITION
         TM    LCBCSW+3,UNEX .          ABORT OR UNIT EXCEPTION  S21101
         BO    SETBD .                  BRANCH IF YES            S21101
         SPACE
         TM    LCBCHAIN,LCBNORTY .      NO RETRY POSSIBLE
         BO    SETBD                    BRANCH IF YES
        CLI   LCBINCAM,RETRY .         RETRY LIMIT REACHED
         BNL   SETBD .                  BRANCH IF RETRY EXHAUSTED
         AIF   ('&GEN' EQ 'MINI').CONC5                          S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BNO   NOTCONCD .               BRANCH IF NO             S22026
         IC    RA,LCBINCAM .            GET RETRY COUNT          S22026
         LA    RA,1(RA) .               ADD ONE                  S22026
         STC   RA,LCBINCAM .            STORE BACK               S22026
         L     RA,SCBXTRA-1 .           GET SAVED UNIT ADDR      S22026
         MVC   0(8,RA),SCBXTRA+3 .      RESTORE CCW              S22026
         L     RCCW,SCBXTRA+11 .        RESTORE TEXT START       S22026
         NI    LCBERBST,255-LCBERROR .  RESET ERROR              S22026
         NI    SCBERR4,255-SCBTXTTN .   RESET TEXT ERROR         S22026
         B     EXIT3 .                  RESTART                  S22026
NOTCONCD EQU   * .                                               S22026
.CONC5   ANOP                                                    S22026
         SPACE
         AIF   ('&GEN' EQ 'MINI').MIX0350                        S22029
         AIF   ('&GEN' EQ 'BISC').MIX0350                        S22029
         AIF   ('&GEN' EQ 'QTAM').MIX0350                        S22029
         TM    LCBTSOB,LCBTSBUF         IS A TIME-SHARING        S22029
*                                       TERMINAL ON THIS LINE    S22029
         BO    SETBD                    YES,SETUP ERB FOR BD     S22029
.MIX0350 ANOP                                                    S22029
         MVC   LCBRCQCB+1(3),DCBMH      ASSUME BT
         L     RF,AVTSAVEX+TWLVE .      DEB ADDRESS              X01004
         DROP  RA .                     DROP DCB BASE.           X01004
         L     RF,DEBAPPAD-DEBNMSUB(,RF) .  APPENDAGE TABLE.     X01004
         TM    ZERO(RF),MHBT            IS IEDQBT IN THIS MH     X01004
         BO    MHERR .                  BRANCH NO                X01004
SETBD    EQU   *
         AIF   ('&GEN' EQ 'MINI').CONC5A                         S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    ALLFREED .               NO, DON'T FREE BUFFERS   S22026
         BAL   RA,FINDBUFF .            FREE UP PREVIOUS BUFFERS S22026
         OI    PRFSTAT1,PRFNHDRN .      SET TEXT BUFFER TO AVOID S22026
*                                       FEFO UPDATE              S22026
ALLFREED EQU   * .                                               S22026
.CONC5A  ANOP .                                                  S22026
         MVC   LCBRCQCB+ONE(THREE),AVTBSCAN+ONE SET IEDQBD ADDR  X01004
         B     MHERR                    POST BUFFER TO MH
TESTRSP  EQU   *
         BAL   RC,FINDEOB               EOB AT END OF BUFFER
         LA    RA,ONE(RWKA)             BSC EOB CHAR           @OY13656
         TM    LCBSTAT2,LCBSYNC         BSC LINE?              @OY13656
         BO    CKEOB                    BR YES                 @OY13656
         BCTR  RA,0                     POINT TO START/STOP EOB@OY13656
CKEOB    EQU   *                                               @OY13656
         CLC   0(ONE,RA),0(RB)          IS EOB LAST CHARACTER? @OY13656
         BNE   EOTSNT1                  NO,EOT WAS SENT
         STCM  RPREFIX,AD,LCBLSPCI      SET LSPCI                Y01948
RDRSP    EQU   *
         ST    RCCW,LCBCPA+12           SAVE TO POST LAST BUFFER
         LA    RA,LCBERCCW+12           RESPOSE AREA
         ST    RA,LCBCPA+16             SET IN CCW
         MVI   LCBCPA+16,CCWREAD        SET COMMAND
         MVI   LCBCPA+20,CCWSLI         SET FLAG
         MVI   LCBCPA+23,9 .            SET COUNT                S21101
         MVI   LCBTPCD+2,TPRDRPEB       SET TP OP CODE
         LA    RCCW,LCBCPA+8            SET TO USE COMMON CODE
         B     EXIT2                    EXIT TO RESART
EOTSNT1  EQU   *
         AIF   ('&GEN' EQ 'MINI').CONC6                          S22026
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BNO   NOTCONCI .               BRANCH IF NO             S22026
         L     RCCW,SCBXTRA-1 .         TEXT CCW ADDR            S22026
         MVI   LCBERCCW,NOPCI .         SET TO POST              S22026
         BAL   RA,FINDBUFF .            FREE BUFFERS             S22026
         L     RCCW,LCBCSW-1 .          RESET CCW ADDR           S22026
         SH    RCCW,H8 .                SUB EIGHT                S22026
NOTCONCI EQU   * .                                               S22026
.CONC6   ANOP                                                    S22026
EOTSNT   EQU   *
         MVI   PRFPRI,PRILNEND          ST POST PRIORITY
DISP     EQU   *
         L     RF,AVTBSCAN .            ADDRESS OF IEDQBD        X01004
         B     POSTEXIT                 USE COMMON CODE
         EJECT
NOEOTSNT EQU   *
*        EOB/ETB AT END OF UNIT OR BUFFER.
         TM    LCBSTAT1,LCBSENDN        EOB SENT
         BZ    RECEIVE                  NO, EOB RECEIVE OR EOT
         BAL   RE,SETSCB                SET PREVIOUS OFFSET IN SCB
         SPACE
         CLI   LCBERCCW+3,1             EOB AT END OF BUFFER
         BE    ENDBUF                   BRANCH END OF BUFFER
         SPACE
         BAL   RB,SETCOUNT              GET OFFSET INTO BUFFER
         L     RCCW,8(,RCCW)            NEXT CCW IN CHAIN
         B     ETBUPDT                  USE COMMON CODE
         SPACE
ENDBUF   EQU   *
         TM    LCBCSW+4,X'20'           CHAN PROG CHECK
         BZ    ITSCLEAN                 BRANH IF NO
         TM    LCBSTAT1,LCBINITN        INITIATE MODE
         BZ    NOBFRS                   DO NOT SET INSUFF. BUFFERS
         SPACE
         NI    SCBERR1,AVTEFF-SCBNOBFN  TURN OFF INSUFFICIENT BUFF
NOBFRS   EQU   *
         CLI   LCBRSKEY,LCLRSCH         LOCAL DEVICE?            S99228
         BE    POSITIVE                 BRANCH YES               S99228
         MVI   CCWCOUNT+1,0             INDICATE CHAN PROGRAM CHECK
POSITIVE EQU   *                                                 S99228
         AIF   ('&GEN' NE '').Z9
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BO    IOGEN                    BRANCH IF YES
.Z9      AIF   ('&GEN' NE 'BISC').Z10
         B     IOGEN                    BUILD CONTINUE
         AGO   .Z11
.Z10     ANOP
         ST    RCCW,LCBCPA+12           SAVE CURRENT CCW POINTER
         MVI   LCBCPA+12,X'20'          PROGRAM CHECK FLAG
         TM    LCBCHAIN,LCBEXCP         IDLES LOOP DEFINED
         BZ    PCSTART                  BRANCH IF YES
         B     FREERQE                  EXIT
.Z11     ANOP
ITSCLEAN EQU   *
         CLI   LCBERCCW,PCIOPT          POST NOW
         BE    SKIPPOST                 BRANCH IF NO
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR        @OY20569
         BNE   GOODBACK                 BRANCH NO              @OY20569
         CLI   LCBCSW+6,AVTEZERO        ZERO RESIDUAL COUNT    @OY20569
         BE    LASTBUF                  BRANCH YES             @OY20569
GOODBACK EQU   *                                               @OY20569
         LA    RF,AVTBFRTB              BUFFER RETURN
         MVI   PRFPRI,PRIBFRTB          POST PRIORITY
         BAL   RC,ENQUEUE               PUT ON READY Q
         MVC   LCBLSPCI,9(RCCW)         SET NEW LAST SERVICED   SA52517
*                                         BUFFER                SA52517
SKIPPOST EQU   *
         L     RPREFIX,8(,RCCW)         NEXT  BUFFER ADDRESS
         LR    RCCW,RPREFIX             RESETART S CCW
LASTBUF  EQU   *
         LA    R0,PRFSTXT-PRFSUNIT      SAVE FOR LATER
         STH   R0,LCBRECOF         SAVE FOR LATER
         B     ETBUPDT .                USE COMMON CODE          S21101
TTYTEST  EQU   *                                                SA48278
         L     RC,AVTSAVEX+UCBOFFST     UCB ADDRESS              X02004
         CLI   TTY1(RC),TTY2 .         POSSIBLY TELETYPE        SA48278
         BCR   7,RB .                  BRANCH IF NO             SA48278
         TM    TTY4(RC),TTY3 .         POSSIBLY TELETYPE        SA48278
         BCR   14,RB .                 BRANCH IF NO             SA48278
         TM    TTY4(RC),TTY5 .         POSSIBLY TELETYPE        SA48278
         BCR   5,RB .                  BRANCH IF NO             SA48278
SIMEOT   OI    LCBCSW+3,UNEX .     SIMULATE EOT                 SA51061
         B     ITSEOT .                GO HANDLE EOM            SA48278
         SPACE
RECEIVE  EQU   *
         TM    LCBCSW+3,UNEX            EOT RECEIVED
         BO    ITSEOT                   YES
         BAL   RB,TTYTEST .            TEST FOR TELETYPE        SA48278
         CLI   L22601(RC),L2260 .  TEST FOR GRAFICS             SA51061
         BE    SIMEOT .            GO SIMULATE EOT              SA51061
         SPACE
         TM    LCBERCCW+1,IN            LCIN SPECIFIED
         BZ    CURRCCW                  NO, IT'S LCOUT
         SPACE
         BAL   RB,SETCOUNT              GET COUNT INTO BUFFER
         STH   RC,PRFSIZE               SET R PREFIX SIZE
.Z12     ANOP
         LR    RWKA,RCCW                SAVE CCW POINTER
         L     RCCW,8(,RCCW)            NEXT CCW IN CHAIN
         STCM  RCCW,AD,LCBRECAD         SET NEXT CCW ADDR      @XA09327
         CLI   LCBERCCW+3,1             EOB AT END OF BUFFER
         BNE   NOTEND
         ST    RWKA,LCBCPA+12           SAVE CURRENT CCW POINTER
         MVC   LCBCPA+16(8),CCW         SAVE CCW               @OX11954
         CLI   LCBECBCC,PERMERR         ERROR
         BE    ERRPOST                  BRANCH IF YES
         TM    LCBCSW+4,X'20'           CHAN PROG CHECK
         BZ    NOTAPC                   BRANCH IF NO
         LR    RCCW,RWKA                SAVE
         MVC   LCBCPA+16(8),CCW         SAVE CCW
         OI    LCBCHAIN,LCBABRTN        SET ABORT BIT
         B     IOGEN                    GO TO IO GENERATOR
NOTAPC   EQU   *
         TM    PRFSTAT1,PRFTSMSG        IS THIS TSO MESSAGE    @OS77376
         BO    ITSTSO                   YES, DONT SET EXTRA    @OS77376
         MVC   PRFXTRA+1(2),PRFSIZE     SET EOB OFFSET         @OS77376
ITSTSO   EQU   *                                               @OS77376
         MVI   LCBERCCW,PCIOPT          DELATY POSTING BUFFERS NOW
         L     RC,PRFIOADR-1-IEDQPRF(,RCCW) DATA ADDRESS NEXT BUFF
         LA    R0,PRFSUNIT-IEDQPRF(RCCW) FIRST BYTE FOR PRFSIZE@YA04894
         SR    RC,R0                    AMOUNT OF PREFIX+IDLES
         STH   RC,PRFSIZE-IEDQPRF(,RCCW) SET IN PREFIX
         LR    RC,RCCW                  FOR SUBROUTINE
         BAL   RB,EXITSUB               CHECK STATUS
         LR    RPREFIX,RCCW             NEXT BUFFER
NOTEND   EQU   *
         STCM  RPREFIX,AD,LCBRECAD .    SAVE RECORD ADDRESS      Y01948
         B     IOGEN                    GO BUILD CONTINUE
         EJECT
CURRCCW  EQU   *
         LA    RPREFIX,AVTEZERO(R0,RPREFIX) CLEAR HI ORDER BYTE
         TM    LCBSTATE,LCBSENDN        EOB SENT
         BO    EOBSENT                  YES
         SR    RC,RC                    CLEAR WORK REGISTER
         TM    LCBCSW+3,UNEX            UNIT EXCEPTION MEANS EOT
         BO    ITSEOT                   BRANCH YES, FALL THRU - EOB
         BAL   RB,TTYTEST .            TEST FOR TELETYPE        SA48278
.Z13     ANOP
         BAL   RB,SETCOUNT              GET COUNT FOR EOB OFFSET
         TM    LCBERCCW+1,IN            LCIN SPECIFIED
         BO    COMMON                   BRANCH YES
         CLI   LCBECBCC,PERMERR         ERRORS
         BE    COMMON                   YES
         CLI   LCBRSKEY,LCLRSCH         LOCAL DEVICE?           SA57329
         BNE   REDUCE                   BRANCH NO               SA57329
         TM    LCBERCCW+ONE,CONV+LMD+LOGICAL  CONTINUE?         SA57329
         BNZ   GOODCONV                 BRANCH NO               SA57329
REDUCE   EQU   *                                                SA57329
         BCTR  RC,R0                    REDUCE COUNT FOR LCOUT  SA57329
GOODCONV EQU   *                                                SA57329
         STH   RC,LCBRECOF              SAVE RECORD AOFFSET
         LH    RE,LCBCSW+5              RESIDUAL COUNT
         LA    RE,1(,RE)                BUMP FOR COMMON CODE
         STH   RE,LCBCSW+5              SAVE BACK
COMMON   EQU   *
         STH   RC,PRFSIZE               ASSUME THIS IS END OF MSG
         STCM  RPREFIX,AD,LCBRECAD .    SAVE CURRENT RECORD ADDR Y01948
EOBCOM   EQU   *
         CLI   LCBCSW+6,0         RESIDUAL COUNT C 0
         BE    IOGEN              YES, EOB AT END OF UNIT(BUFFER)
         LH    RD,CCWCOUNT              ORIGINAL COUNT
         SH    RD,LCBCSW+5              SUBTRACT RESID COUNT
         L     RE,CCWADDR-1       DATA ADDRESS
         AR    RE,RD              NEW DATA ADDRESS
         ST    RE,CCWADDR-1       SET NEW ADDRESS
         MVC   CCWCOUNT,LCBCSW+5  SET NEW COUNT
         B     IOGEN                    RESTART
         EJECT
*
*        SUBROUTINE TO COMPUTE AMOUNT OF DATA TRANSMITTED OR
* RECEIVED IN A BUFFER.
*
SETCOUNT EQU   *
         LR    RD,RPREFIX              CCW ADDR OF 1ST UNIT
         SR    RC,RC                    CLEAR WORK REGISTER
         B     ENTER1                   ENTER LOOP
LOOP1    EQU   *
         L     RD,EIGHT(,RD)            ADDRESS OF NEXT UNIT
         AH    RC,AVTKEYLE              ADD UNIT SIZE
ENTER1   EQU   *
         LA    RD,AVTEZERO(,RD)         CLEAR HI ORDER BYTE
         CR    RD,RCCW                  THIS INTERRUPTED CCW
         BNE   LOOP1                    TRY NEXT UNIT
         LA    RWKA,PRFSUNIT-PRFRCB(,RCCW) TEXT START
         L     RD,CCWADDR-1            DATA ADDR  ( MAY HAVE BEEN
*                                         UPDATED BY PREV EOB
         SR    RD,RWKA                  DATA TRANSF PREV EOB
         LH    RE,CCWCOUNT             CCW COUNT
         SH    RE,LCBCSW+5             SUB RES CONT FOR AMT TRANSF
         AR    RC,RD                    ADD TO ACCUM TOTAL
         AR    RC,RE                    ADD TO ACCUM TOTAL
         STH   RC,LCBRECOF              SAVE RECORD AOFFSET
         BR    RB                       RETURN
         SPACE 3
ITSEOT   EQU   *
         BAL   RB,SETCOUNT
         AIF   ('&GEN' NE 'BISC' AND '&GEN' NE '').M6E           S21101
         BAL   RB,CKBFMM .              DONT WANT EOT IN BUFER IFS21101
*                                         NOT REAL EOM           S21101
         B     MHPOST .                 NOT REAL EOM             S21101
.M6E     ANOP                                                    S21101
LCINS    EQU   *
         STH   RC,PRFSIZE               SAVE IN PREFIX
POSTMSG  EQU   *
POSTMH   EQU   *
         NI    PRFSTAT1,PRFNLSTF        TURN OFF'NOT LAST BUFFER'
MHPOST   EQU   *
         MVI   PRFPRI,PRIMHBFR          POST PRIORITY
POSTERR  EQU   *
         STCM  RPREFIX,AD,LCBLSPCI .    SET LAST SERVICED PCI    Y01948
POSTBUF  EQU   *
         L     RWKA,LCBDCBPT            GET DCB ADDRESS
        USING IHADCB,RWKA
         L     RF,DCBMH-1               ADDRESS OF QUEUE
         DROP  RWKA
         B     POSTEXIT                 USE COMMON CODE
         SPACE 10
*
*        SET UP SCB PARAMETERS FOR START/STOP IN EVENT A SUBSEQUENT
* RECALL IS REQUIRED .  FOR BSC, THE PARAMETERS ARE SAVED IN THE LCB
* THE SCB IS UPDATED AFTER READ RESPOSNE INTERRUPT IS RECEIVED.
EOBSENT  EQU   *                                                 S21101
         BAL   RE,SETSCB .              SET SCB PARAMETERS       S21101
         SPACE 2                                                 S21101
         BAL   RB,SETCOUNT .            GET OFFSET INTO BUFFER   S21101
         SPACE 2                                                 S21101
ETBUPDT  EQU   *                                                 S21101
         MVC   LCBRECAD,PRFCRCD .       SAVE DISK ADDRESS        S21101
         MVC   LCBNTXT,PRFNTXT .        SAVE DISK PARAMETER      S21101
*        FOR BSC PARAMETERS ARE SET IN SCB FROM LCB AFTER READ   S21101
* RESPONSE.  FOR START STOP SCB IS UPDATED AFTER NEXT EOB.  FOR  S21101
* 2740/2 SCB IS UPDATED AFTER READ RESPONSE                      S21101
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'QTAM' OR '&GEN' EQ '').MX
               6A                                               SA66594
         B     EOBCOM .                 UPDATE CCW AND GO TO IOGES21101
         AGO   .M6C                                              S21101
.M6A     ANOP                                                    S21101
         AIF   ('&GEN' NE'').M6B                                 S21101
         TM    LCBSTAT2,LCBSYNC .       BSC LINE                 S21101
         BO    EOBCOM .                 BRANCH IF YES. BUFFERED  S21101
*                                         SUPPROT IS DONE AT READS21101
*                                         RESPONSE               S21101
         SPACE 1                                                 S21101
.M6B     ANOP                                                    S21101
         SPACE 1                                                SA62991
         CLI   LCBTPCD+2,TPRDRPEB       READ RESP FIRST CCW     SA62991
         BNE   SKIPRTRY                 BR NO, FORGET IT        SA62991
         L     RD,LCBSTART-1            CHAN PROG START ADDRESS SA62991
         LA    RD,0(RD)                                         SA62991
         LA    RE,LCBCPA+16             SLOT FOR READ RESP CCW  SA62991
         CR    RD,RE                    START ON READ RESPONSE  SA62991
         BNE   SKIPRTRY                 BR NO, FORGET IT        SA62991
         L     RD,0(RE)                 GET RESPONSE ADDRESS    SA62991
         CLI   0(RD),EBCDACK            IS IT EBCDIC ACK        SA62991
         BE    ZERORTRY                 BR YES, CLEAR RETRY CNT SA62991
         CLI   0(RD),ASCIACK            ASCII ACK               SA62991
         BNE   SKIPRTRY                 BR NO, FORGET IT        SA62991
ZERORTRY EQU   *                                                SA62991
         MVI   LCBINCAM,AVTEZERO        CLEAR RETRY COUNT       SA62991
SKIPRTRY EQU   *                                                SA62991
         SPACE 1                                                SA62991
         CLI   LCBRSKEY,BUFF .          BUFFERED LINE            S21101
         BNE   EOBCOM .                 BRANCH IF NO             S21101
         SPACE 1                                                 S21101
         TM    CCWFLAGS,CCWCD           NO CHAINING            @OX12579
         BNZ   LATER                    BRANCH NOT EOM         @OX12579
         CLI   LCBCSW+6,ONE             ONLY ONE CHARACTER LEFT@OX12579
         BE    EOBCOM                   YES,BRANCH             @OX12579
         BH    LATER                    NOT EOB AT END OF UNIT @OX12579
         CLI   CCWCOUNT+ONE,ONE         ONLY EOT LEFT          @OX12579
         BE    EOBCOM                   YES,BRANCH             @OX12579
LATER    EQU   *                                                 S21101
         OI    SCBQTYPE,SCBBFMM .       INDICATE MIDDLE OF MSG   S21101
         OI    PRFSTAT1,PRFITCPN .      SET NOT REAL END OF MSG  X01004
*                                          AT READ RESPONSE INTERS21101
         B     RDRSP                    PUT UP READ RESPONSE     S21101
.M6C     ANOP                                                    S21101
         SPACE 10                                                S21101
         AIF   ('&GEN' NE 'BISC' AND '&GEN' NE '').M6D           S21101
*                                                                S21101
*         SUBROUTINE TO DETERMINE IF EOT IS ALL THAT REMAINS IN  S21101
* MESSAGE.                                                       S21101
*                                                                S21101
ONLYEOT  EQU    *                                                S21101
         CLI   CCWCOUNT+1,ONE .         ONE CHARACTER TO WRITE   S21101
         BNE   4(RC) .                  BRANCH IF NO             S21101
         SPACE 1                                                 S21101
         TM    CCWFLAGS,CCWCD           NO CHAINING FLAG ON      S21101
         BCR   8,RC .                   BRANCH IF OFF, TRUE EOM  S21101
          SPACE 1                                                S21101
         B     4(RC) .                  RETURN, MORE TO MESSAGE  S21101
         SPACE 10                                                S21101
.M6D     ANOP                                                    S21101
SETSCB   EQU   *
         AIF   ('&GEN' NE '').L53
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BCR   1,RE .                   BRANCH IF YES            S21101
.L53     AIF   ('&GEN' EQ 'BISC').L54
         SPACE
         OC    LCBRECAD,LCBRECAD        FIRST OUPUT BLOCK
         BCR   8,RE .                   BRANCH IF YES            S21101
         SPACE
         MVC   SCBDEOB+1(3),LCBRECAD    SET Q ADDRESS
         MVC   SCBDEOB(1),LCBNTXT       SET DISK RECORD
         MVC   SCBEOB(2),LCBRECOF       SET OFFSET INTO RECORD
.L54     ANOP
         BR    RE                       RETURN TO CALLER
         EJECT
IOGEN    EQU   *
         LA    RB,SUBEXIT               SET ROUTINE EXIT
         LR    RC,RPREFIX               SAVE PARAMTER
EXITSUB  EQU   *
         CLI   LCBERCCW,PCIOPT          PCI TO FREE BUFFERS
         BE    NOSET                    YES
         STCM  RPREFIX,AD,LCBLSPCI .    UPDATE LAST SERVICED BFR Y01948
NOSET    EQU   *
         STCM  RCCW,AD,LCBCPA+THIRTN .  'NEW' LAST TEXT CCW      Y01948
         MVC   LCBCPA+16(8),CCW         SAVE UPDATED CCW
         MVC   LCBTTBIN,LCBTTCIN        SET FOR CONT
         TM    CCWOPCDE,CCWWRITE        WRITE COMMAND
         BZ    NOTWRITE                 BRANCH IF NO
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BNE   GOIOGEN                  NO
         OI    LCBCHAIN,LCBNORTY        SET NO RETRY
         B     SENDERR                  POST BUFFER TO MH
NOTWRITE EQU   *
         TM    LCBCHAIN,LCBABRTN .      ABORT REQUEST FOR PGM CHK
         BCR   1,RB .                   BRANCH IF YES
         SPACE
         CLI   LCBECBCC,PERMERR         TEXT ERROR
         BNE   NOERR
ERRPOST  EQU   *
         OI    LCBMSGFM,LCBNAK          RESPONSE FOR TTD       @OY14057
ERRPOST1 EQU   *                                               @OY14057
         OI    LCBERBST,LCBERROR        DONT ASSIGN MORE BUFFERS
         MVI   PRFPRI,PRIMHBFR-1        SET POST PRIORITY
         NI    PRFSTAT1,PRFNLSTF        MARK IT LAST
         OI    SCBERR4,SCBTXTTN         TEXT ERROR
         B     POSTERR                  EXIT
NOERR    EQU   *
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z14
         AIF   ('&GEN' EQ 'QTAM').Z14
         NI    SCBERR2,AVTEFF-SCBABRTN  RESET ABORT BIT
         NI    SCBERR3,AVTEFF-SCBFORMN  RESET FORMAT ERROR BIT
.Z14     ANOP
*****************************************************************S22025
*        THE FOLLOWING CODE ADJUSTS FOR THE CASE OF RECEIVING    S22025
*        CHANNEL END/DEVICE END WITHOUT DTA TRANSFERRED ON A     S22025
*        START/STOP LINE.                                        S22025
         ST    RC,LCBERCCW+4            BUFFER ADDRESS           S22025
         CLC   LCBERCCW+5(3),SCBDEOB+1  THIS THE DEOB BUFFER     S22025
         BNE   GOODSIZE                 NO                       S22025
         CLC   SCBEOB,PRFSIZE-IEDQPRF(RC) IS PREVIOUS SIZE LESS  S22025
*                                         THAN NEW SIZE          S22025
         BNH   GOODSIZE                 BRANCH IF YES            S22025
         MVC   PRFSIZE-IEDQPRF(2,RC),SCBEOB ADJUST SIZE          S22025
GOODSIZE EQU   *                                                 S22025
*****************************************************************S22025
         NI    SCBERR4,AVTEFF-SCBTXTTN  RESET TEXT ERROR BIT
         MVI   LCBINCAM,0               RESET RETRY COUNT
         TM    PRFSTAT1,PRFTSMSG .      IS THIS A TSO BUFFER     S22029
         BO    TSOBUF .                 BRANCH IF YES            S22025
         MVC   PRFXTRA+1-IEDQPRF(TWO,RC),PRFSIZE-IEDQPRF(RC)     S22025
*                                       RESET THE EOB OFFSET IN  S22025
*                                         THE BUFFER             S22025
TSOBUF   EQU   *                                                SA63595
         OI    LCBSTAT2,LCBRESP        SET RESPONSE OWED        SA63595
         AIF   ('&GEN' NE 'MINI' AND '&GEN' NE 'QTAM').LL46A   @OS76490
         TM    LCBERCCW+1,LOGICAL+CONV+LMD  IS THERE AN MH EXIT SA63595
         BNZ    POSTMH                 BRANCH EITHER            SA63595
         BR    RB                      RETURN                   SA63595
.LL46A   ANOP
         AIF   ('&GEN' EQ 'QTAM' OR '&GEN' EQ 'MINI').LL47
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR SA59028
         TM    LCBERCCW+ONE,LOGICAL+CONV+LMD  LOGICAL, CONVERSE  S99228
*                                             OR LMD?            S99228
         BZ    CONVTEST                 NO-CHECK GEN POLL       SA59028
         TM    LCBDCT1,C3270            3270 DEVICE             SA59028
         BZ    POSTMH                   NO-POST BUFFERS TO MH   SA59028
         TM    LCBDCT2,CREMOTE          BSC DEVICE              SA59028
         BZ    POSTMH                   NO-POST BUFFERS TO MH   SA59028
         TM    SCBERR2,SCBSOHE          SOH%R MSG RECIEVED      SA59028
         BO    CONVTEST                 BRANCH IF YES          @SA71658
         TM    LCBTSOB,LCBTSBUF         TSO IN SESSION          SA63959
         BZ    POSTMH                   NO - POST BFRS TO MH    SA63959
         TM    SCBBSCFM,SCBRCVTX        ETX RECD BSYNC LINE     SA59028
         BCR   EIGHT,RB                 BRANCH IF NO            SA59028
         B     POSTMH                   POST BUFFERS TO MH
CONVTEST EQU   *                                                SA59028
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BCR   EIGHT,RB                 BRANCH IF NO             S99228
         TM    LCBERCCW+ONE,IN          LINE CONTROL IN?         S99228
         BO    POSTMH                   BRANCH IF YES            S99228
         LH    RC,PRFSIZE               LOAD PRFSIZE             S99228
         LA    RC,ONE(R0,RC)            INCREASE PRFSIZE FOR EOT S99228
         STH   RC,PRFSIZE               RESTORE PRFSIZE          S99228
LINEIN   EQU   *                                                 S99228
         B     POSTMH                   POST BUFFERS TO MH       S99228
.LL47    ANOP                                                    S99228
SUBEXIT  EQU   *
         SPACE
GOIOGEN  EQU   *
         MVC   LCBTTBIN,LCBTTCIN        RESET TO BE CONNECTED
         ST    R15,LCBERCCW+4           SAVE REGISTER           SA54923
         OI    LCBSTAT1,LCBCONT         SET CONTINUE BIT
         L     RCCW,AVTKA02             ADDRESS OF IEDQKA
         LA    RAVT,AVTSAVE2            AVT BASE FOR KA
         BALR  RF,RCCW                  LINK TO KA
         L     R15,LCBERCCW+4           RESTORE REGISTER        SA54923
         L     R14,LCBSCBA-1            RESTORE SCB ADDRESS     SA54923
         LA    RBASE,FOUR095(,R15)      SET SECOND BASE
         LA    RBASE,ONE(,RBASE)
         SH    RAVT,AVTBACK             RESET AVT BASE
         AIF   ('&GEN' NE 'BISC').Z15
         B     RESTART                  RESTART CHAN PROGRAM
         AGO   .Z16
.Z15     ANOP
         TM    LCBCSW+3,UNEX            NO CONTINUE POSSIBLE
         BZ    RESTART                  BRANCH RESTART POSSIBLE
         L     RCCW,LCBCPA+12           INTERRUPTED CCW
         MVI   LCBERCCW,NOPCI           SET PARAMETER TO POST BUFFS
         BAL   RA,FINDBUFF              LIN TO SUBROUTINE
         TM    LCBCHAIN,LCBABRTN .      NO ABORT FOR THIS LINE
         BO    POSTMH .                 BRANCH IF YES
         SPACE
         TM    LCBERCCW+1,IN            LCIN
         BO    POSTMH                   BRANCH IFYES
         LH    RWKA,PRFSIZE             GET PREFIX SIZE
         LA    RWKA,1(,RWKA)            BUMP
         STH   RWKA,PRFSIZE             SET BACK
         B     POSTMH                   POST AS LAST TO MH
.Z16     ANOP
         EJECT
FINDEOB  EQU   *
*
*        SUBROUTINE WILL COMPUTE ADDRESS OF LAST CHARACGER TRANSMITTED
* OR RECEIVED IN A UNIT AND THE EOB SEQUENCE IN THE SPECIAL
* CHARACTERS TABLE.
         L     RWKA,LCBDCBPT            DCB  BASE
         USING IHADCB,RWKA
         L     RB,DCBSCTAD-1            SCT ADDRESS
         DROP  RWKA
         SR    RWKA,RWKA                CLEAR FOR INDEX
         ICM   RWKA,ONE,ETBCH(RB)       ETB SEQUENCE DEFINED     Y01948
         BZ    EOTSNT1 .                BRANCH, IF NOT            M5949
.NOSTSP  ANOP                                                     M5949
         LA    RWKA,1(RWKA,RB)          POINT TO SEQUENCE
         L     RB,CCWADDR-1             DATA ADDRESS
         AH    RB,CCWCOUNT              ORIGINAL COUNT
         SH    RB,LCBCSW+5              SUBTRAC T RESIDUAL COUNT
         BCTR  RB,0                     DECREMENT ONE
         BR    RC                       RETURN
         SPACE 10
         AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z17
         AIF   ('&GEN' EQ 'QTAM').Z17
CKEND    EQU   *
*
*        THIS SUBROUTINE WILL CHECK IF LAST CHARACTER IS A VALID
* LINE CONTROL CHARACTER.  IF NOT, EXIT IS TO IOS TO SCHEDULE ERP
*
         TM    LCBSTAT1,LCBSENDN        SEND SIDE
         BCR   1,RC                     YES, EXIT
         SPACE
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR
         BCR   8,RC                     YES, EXIT
         SPACE
         TM    LCBMSGFM,LCBRSTRT .      INVALID START CHARACTER  S21101
         BO    CKCNT                    YES, CHECK RETRY COUNT
         TM    LCBMSGFM,LCBEOT .        EOT RECEIVED             S21101
         BCR   1,RC                     YES, RETURN
         SPACE
         USING IHADCB,RA
         L     RF,DCBSCTAD-1            SCT ADDRESS
         DROP  RA
         SR    RE,RE                    CLEAR INDEX REGISTER
         IC    RE,ETBCH(,RF)            GET DLE ETB INDEX
         LA    RWKA,2(RE,RF)            POINT TO ETB
         NI    SCBBSCFM,AVTEFF-SCBRCVTX ASSUME ETB RECEIVED      S21101
         CLC   0(1,RB),0(RWKA)          ETB RECEIVED
         BCR   8,RC                     BRANCH IF YES
         CLC   0(1,RB),3(RWKA)          ETX
         BNE   CKSENQ                   NO, SEE IF ABORT
         SPACE
         OI    SCBBSCFM,SCBRCVTX .      SET ETX RECEIVED         S21101
         BR    RC                       RETURN
         SPACE
CHKNEG   EQU   *                                                SA68035
         TM    LCBSTAT1,LCBRECVN        RECEIVE OPERATION       SA68035
         BCR   14,RD                    BR NO, RETURN           SA68035
         TM    LCBCSW+THREE,UNEX        EOT RECEIVED            SA68035
         BCR   14,RD                    BR NO, RETURN           SA68035
         TM    LCBSTAT2,LCBSYNC+LCBDIAL BISC DIAL LINE          SA68035
         BCR   14,RD                    BR NO, RETURN           SA68035
         OI    SCBBSCFM,SCBNOEOT        SET FLAG FOR SEND SCHED@OY11499
*                                       AND ACTIVATE           @OY11499
         OI    LCBSTAT2,LCBNEGRP        SHOW NEG RESP TO POLL  @OZ18753
*                                         TO FORCE SEND NEXT    SA68035
         BR    RD                       RETURN                  SA68035
         SPACE 5                                                SA68035
CKSENQ   EQU   *
         IC    RE,ENQCH(,RF)            GET ENQ INDEX
         LA    RWKA,1(RE,RF)            POINT TO ENQ
         OI    SCBERR3,SCBFORMN         SET FORMAT ERROR
         CLC   0(1,RB),0(RWKA)          THIS AN ABORT
         BNE   CKCNT .                  NO, INVALID END CHAR     S99228
         OI    SCBERR2,SCBABRTN .       SET ABORT                S99228
         NC    LCBTTCIN(TWO),LCBTTCIN   POLLRT DETERMINE INVALID S99228
*                                       SOURCE?                  S99228
         BZ    NOENQERP                 BRANCH YES               S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         TM    LCBDCT1,C3270            3270 DEVICE?             S99228
         BZ    NOENQERP                 NO 3270 SKIP DVC DEP ERP S99228
         MVI   LCBINCAM,RETRY           SET FOR NO RETRY         S99228
         LA    RC,SLOWPOLL              LOAD RETURN ADDRESS      S99228
         B     ENQERP                   SKIP REGULAR RETURN RESETS99228
NOENQERP EQU   *                                                 S99228
         LA    RC,NOCKEND               RELOAD RETURN ADDR       S99228
ENQERP   EQU   *                                                 S99228
*        AN ENQ WAS READ IN NON-TRANSPARENT MODE.  IF THIS IS   SA44892
*        A VALID TTD, IT WAS HANDLED IN THE SCAN ROUTINE.       SA44892
*        IF THIS IS TRANSPARENT MODE, AN ENQ IS A VALID DATA    SA44892
*        CHARACTER.  IT MUST BE DETERMINED WHETHER THE ENQ      SA44892
*        CAUSED THE ENDING STATUS OR NOT.  TO BE A VALID TTD, THSA44892
*        ENQ MUST BE THE ONLY CHARACTER AFTER THE DLE STX.      SA44892
*
         LH    RE,CCWCOUNT .           ORIGINAL CCW COUNT       SA44892
         BCTR  RE,0 .                  MINUS ONE                SA44892
         LH    RWKA,LCBCSW+5 .         RESIDUAL COUNT           SA44892
         CR    RE,RWKA .               WZS ONLY 1 CHARACTER     SA44892
         BNE   SETABORT .              READ - BR IF NO          SA44892
         LA    RCCW,0(RCCW) .          ENDING/CURRENT CCW CLEAR SA44892
         L     RWKA,LCBCPA+12 .        STARTING CCW             SA44892
         LA    RWKA,0(RWKA) .          CLEAR FOR COMPARE        SA44892
         CR    RCCW,RWKA .             ARE THEY THE SAME UNIT   SA44892
         BNE   SETABORT .              BR IF NO                 SA44892
         TM    CCWFLAGS,CCWSLI .       IS THIS THE RESTART CCW  SA44892
         BNO   GOTTTD .                BR IF YES - A REAL TTD   SA44892
SETABORT EQU   * .                                              SA44892
CKCNT    EQU   *
         CLI   LCBINCAM,RETRY           RETRY LIMIT REACHED
         BL    DCKK                     NO TREAT AS DATA CHECK
         SPACE
         OI    SCBERR4,SCBTXTTN         SET TEXT ERRRO
         MVI   LCBECBCC,PERMERR         SET ERROR INDICATION
         TM    LCBSTAT2,LCBMSGNN        MSGGEN                 @OY14057
         BOR   RC                       YES,RETURN             @OY14057
         L     RE,AVTDOUBX              LOAD LCB EXTENSION     @OY14057
         TM    LCBDCT1,C3270            3270 DEVICE            @OY14057
         BNOR  RC                       NO,RETURN              @OY14057
         STCM  RCCW,AD,LCBCPA+THIRTN    SAVE CCW ADDRESS       @OY14057
         MVC   LCBCSWSV,LCBCSW          SAVE CSW               @OY14057
         MVC   LCBSNSV,LCBSENS0         SAVE SENSE BYTE        @OY14057
         MVI   LCBTPCD+2,TPNULL         NON-READ WIRTE CCW     @OY14057
         LA    RA,RVICH                 INDEX IN SCT           @OY14057
         LA    RWKA,LCBCPA+16           CHANNEL PROGRAM AREA   @OY14057
         BAL   RD,CCWBLD                BUILD CCW              @OY14057
         MVI   LCBCPA+20,CCWCC+CCWSLI   CMD CHAIN/SUPR INC LNGT@OY14057
         MVI   LCBTPCD+3,TPRS3270       OP CODE FOR READ EOT   @OY14057
         LA    RA,1                     ONE                    @OY14057
         ST    RA,LCBCPA+28             COUNT FOR READ         @OY14057
         LA    RA,LCBERCCW+4            RESPONSE ADDRESS       @OY14057
         ST    RA,LCBCPA+24             STORE IN CHANNEL PGM   @OY14057
         MVI   LCBCPA+24,CCWREAD        READ CCW               @OY14057
         LH    RC,LCBTTCIN              TERMINAL OFFSET        @OY14057
         N     RC,AVTCLRHI              IS IT ZERO             @OY14057
         BZ    RESTCOM                  YES,RESTART            @OY14057
         L     RA,AVTRNMPT              TNT CODE BASE          @OY14057
         BAL   RPREFIX,TNTDCODE-IEDQTNTD(RA) FIND TERM ENTRY   @OY14057
         L     RB,TRMDESTQ-1-IEDQTRM(RB) GET DEST QCB          @OY14057
         TM    QCBFLAG-IEDQQCB(RB),QCBTSSES TSO                @OY14057
         BZ    RESTCOM                  NO,BRANCH              @OY14057
         NI    QCBTSOF2-IEDQQCB(RB),AVTEFF-QCBDSSMI STARTMI OFF@OY14057
         B     RESTCOM                  WRITE RVI, READ EOT    @OY14057
         SPACE
DCKK     EQU   *
         MVI   LCBCSW+3,UNITCHK         SET ENDING STATUS
         MVI   LCBSENS0,DATCK           SET DATA CHECK
         B     ERPEXIT                  EXIT TO ERP
         SPACE 7                                                 S21101
CKBFMM   EQU   *                                                 S21101
*        SUBROUTINE WILL DETERMINE IF WE ARE AT TRUE EOM OR TEMP S21101
* EOM FOR INPUT BUFFERED TERMINAL CUPPORT                        S21101
*        RPREFIX=ADDRESS OF CURRENT BUFFER                       S21101
*        RC=PRFSIZE WITH EOT                                     S21101
         AIF   ('&GEN' EQ 'BISC').Z17A                           S21101
         TM    LCBSTAT2,LCBSYNC .      BSC LINE                  S21101
         BNO   4(RB) .                 BRANCH NO -REAL EOM       S21101
.Z17A    ANOP                                                    S21101
         CLI   LCBRSKEY,BUFF .          BUFFERED TERMINAL        S21101
         BNE   4(RB) .                  BRANCH NO, REAL EOM      S21101
         SPACE 1                                                 S21101
         CLI   LCBECBCC,PERMERR         PERMANENT ERROR         SA65874
         BE    4(RB)                    YES, TREAT AS EOM       SA65874
         SPACE 1
         TM    SCBBSCFM,SCBRCVTX .      WAS ETX BEFORE EOT       S21101
         BO    4(RB) .                  BRANCH YES ,REAL EOM     S21101
         TM    SCBERR2,SCBABRTN         IS IT ABORT            @OS77965
         BO    4(RB)                    BRANCH YES             @OS77965
         SPACE 1                                                 S21101
         OI    PRFSTAT1,PRFITCPN .      SET LOGICAL EOM          X01004
         BCTR  RC,R0 .                  DECREMENT EOT OUTOF BUFF S21101
         STH   RC,PRFSIZE .             SET PREFIX SIZE          S21101
         BR    RB .                     RETURN                   S21101
.Z17     ANOP                                                    S21101
         EJECT
CCWBLD   EQU   *
*
*        THIS SUBROUTINE WILL BUILD A CCW AT THE LOCATION POINTED TO
* BY RWKA.  RA CONTAINS INDEX INTO SPECIAL CHARACTERS TABLE FOR
* SEQUENCE DESIRED.
*
         L     RC,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RC
         L     RB,DCBSCTAD-1            SCT ADDRESS
         DROP  RC
         IC    RA,0(RA,RB)              INDEX INTO SEQUENCE
         LA    RC,0(RA,RB)              POINT TO COUNT FO SEQUENCE
         IC    RA,0(,RC)                GET SEQUENCE COUNT
         ST    RA,4(,RWKA)             SET COUNT
         LA    RC,1(,RC)                BUMP TO SEQUENCE
         ST    RC,0(,RWKA)             SET CCW ADDRESS
         MVI   0(RWKA),CCWWRITE        SET COMMAND CODE
         BR    RD                       RETURN
   SPACE 10
ENQUEUE  EQU   *
*
*        INPUT:
*        RPREFIX POINTS TO ELEMENT
*        RF POINTS TO QCB WHICH THE ELEMENT IS TO BE POSTED
*        RWKA IS USED AS A WORK REGISTER
*        RC CONTAINS THE RETURN ADDRESS
*
         ST    RF,RECBQCBA-1-IEDQRECB(,RPREFIX) QCB ADDRESS
         DROP  RAVT                                              Y02027
         L     RAVT,CVTPTR              PICKUP CVT ADDRESS       Y02027
         USING CVT,RAVT                                          Y02027
         L     RAVT,CVTAQAVT           PICKUP ADDR OF TCAM'S     Y02027
*                                       CVT EXTENSION            Y02027
         DROP  RAVT                                              Y02027
         USING IEDQTCX,RAVT                                      Y02027
         L     CURR,TCXREADY            PICKUP ADDR OF CURRENT   Y02027
*                                       ELEMENT ON AYNCHRONOUS   Y02027
*                                       READY QUEUE              Y02027
NEWCURR  STCM  CURR,SEVEN,PRFLINK .     LINK NEW ELEMENT TO THE  Y02027
*                                       CURRENT ELEMENT          Y02027
         CS    CURR,RPREFIX,TCXREADY   .WAS CURRENT ELEMENT      Y02027
*                                       UPDATED ASYNCHRONOUSLY   Y02027
         BNE   NEWCURR                  YES, LINK NEW ELEMENT    Y02027
*                                       TO NEW CURRENT ELEMENT   Y02027
*                                       NO, ASYNCHRONOUS RDY Q   Y02027
*                                       IS UPDATED WITH NEW ELEM Y02027
*                                       BY COMPARE-AND-SWAP INST Y02027
         L     RAVT,TCXAVT              RESTORE AVT ADDRESS      Y02027
         DROP  RAVT                                              Y02027
         USING IEDQAVTD,RAVT                                     Y02027
         SPACE
         TM    AVTOSECB,COMPLETE        ARE WE IN WAIT STATE
         BCR   1,RC                     BRANCH NO
         SPACE
POSTECB  EQU   *
         STM   9,10,ECBSAVE             SAVE REGISTERS           S99228
         STM   R11,R15,LCBERCCW+4       SAVE REGISTERS
         LA    R11,AVTOSECB             ECB TO BE POSTED
         L     RCCW,AVTTCB .            TCB ADDRESS
         SR    RD,RD                    CLEAR REG 10             A42413
         L     R15,CVTPTR .             PICKUP CVT ADDRESS       Y02027
         L     R15,CVT0PT01-CVT(,R15) . ADDR OF POST ROUTINE     Y02027
         BALR  R14,R15                  LINK TO POST
         LM    R11,R15,LCBERCCW+4       RESTORE REGISTERS
         LM    9,10,ECBSAVE             RESTORE REGISTERS        S99228
         BR    RC                       RETURN
         SPACE 2
ECBSAVE  DS    D                        POSTECB REG SAVE AREA    S99228
CNTSAVE  DS    2D                                              @OX17153
         EJECT
RESTART  EQU   *                        THIS EXIT TO RESTART
         MVI   LCBTTBIN,AVTEZERO        CLEAR ERP ERROR COUNTER
         NI    LCBFLAG1,FF-X24          TURN OFF ERROR FLAGS
         L     R1,AVTSAVEX+THIRTY2      IOSB ADDRESS           @ZA02095
         USING IOSB,R1                                           Y02027
         XC    IOSSNS,IOSSNS            CLEAR SENSE BYTES        Y02027
         DROP  R1
         L     14,AVTDPARM              RETURN REGISTER
         LA    14,8(,14)                BUMP FOR RESTART
         B     IOSEXIT                  LEAVE
POSTELE  EQU   *                        POST BUFFERS AND LCB
FREERQE  EQU   *
         L     14,AVTDPARM              RETURN REGISTER
         LA    14,4(,14)                BUMP TO SKIP POST
         B     IOSEXIT                  LEAVE
ERP      EQU   *                                               @OX21187
         CLI   LCBCPA+24,CCWPOLL        AUTOPOLL               @OX21187
         BNE   NAPCHAP                  BRANCH NO              @OX21187
         LA    RCCW,0(,RCCW)            DETERMINE              @OX21187
         LA    RA,LCBCPA                IF                     @OX21187
         SR    RA,RCCW                  CONTROL                @OX21187
         BP    YEXTEXT                  MODE                   @OX21187
         SR    RB,RB                    INTERRUPT              @OX21187
         L     RC,LCBDCBPT              BECAUSE                @OX21187
         USING IHADCB,RC                IF                     @OX21187
         IC    RB,DCBEIOBX              INTERRUPT              @OX21187
         DROP  RC                       IS                     @OX21187
         LA    RB,0(RLCB,RB)            CONTROL                @OX21187
         SR    RB,RCCW                  MODE                   @OX21187
         BNP   YEXTEXT                  AND                    @OX21187
         LPR   RA,RA                    HAS                    @OX21187
         SRL   RA,3                     OPEN                   @OX21187
         LA    RA,LCBTPCD(RA)           TPOPCODE               @OX21187
         CLI   0(RA),TPOPEN             THEN                   @OX21187
         BE    NAPCHAP                  NO SCB DETERMINATION   @OX21187
YEXTEXT  EQU   *                                               @OX21187
         AIF   ('&GEN' EQ 'MINI').NO1                          @OZ25960
         CLI   0(RCCW),CCWWRITE         INTERRUPT ON WRITE     @OZ25960
         BE    NAPCHAP                  BRANCH YES             @OZ25960
         L     RF,POLLADR               ADDR OF AUTOPOLL RTN   @OZ16540
         BALR  R14,RF                   BRANCH TO IT           @OZ16540
.NO1     ANOP                                                  @OZ16540
         L     RA,LCBDCBPT              GET DCB ADDRESS         SA62984
         USING IHADCB,RA                                        SA62984
         TM    DCBPCI,RCVPCI            PCI=A ON RECEIVE        SA62984
         BO    NAPCHAP                  BR YES                  SA62984
         DROP  RA                                               SA62984
         MVI   LCBCPA+53,AVTEFF         SET ERP FOR AUTOPOLL    SA59028
NAPCHAP  EQU   *                                                SA59028
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'BISC').NO2
         AIF   ('&GEN' EQ 'QTAM').NO2
         TM    LCBTSOB,LCBPREP .        MONITOR STATE               TSO
         BO    RTPREP .                 BRANCH YES                  TSO
*                                                                   TSO
.NO2     ANOP
ERPEXT   EQU   *                                                 Y02027
         L     14,AVTDPARM              RETURN RGISTER
IOSEXIT  EQU   *
         LM    0,9,AVTSAVEX             RESTORE REGISTERS
         BR    R14                      RETURN
         AIF   ('&GEN' EQ 'MINI').NO2B .                         S22025
         SPACE 3                                                 S22025
DCTBASE  EQU   * .                                               S22025
*    THIS ROUTINE GETS THE ADDRESS OF THE DEVICE CHARACTERISTICS S22025
*    TABLE.                                                      S22025
         LH    RC,LCBTTCIN .            TERMINAL OFFSET          S22025
         L     RA,AVTRNMPT .            TNT CODE BASE            S22025
         USING IEDQTNTD,RA .                                     S22025
         BAL   RPREFIX,TNTDCODE .       FIND TERMINAL TYPE       S22025
         USING IEDQTRM,RB .                                      S22025
         SR    RA,RA .                  CLEAR FOR INDEX          S22025
         IC    RA,TRMCHCIN .            CHARACTERISTICS INDEX    S22025
         BCTR  RA,0 .                   DECREMENT                S22025
         MH    RA,AVTDCTLN              LENGTH OF DCT ENTRY    @G36XRIV
         A     RA,AVTCSTCS .            DCT BASE                 S22025
         DROP  RA .                                              S22025
         DROP  RB .                                              S22025
         BR    RD .                     RETURN TO CALLER         S22025
.NO2B    ANOP                                                    S22025
         SPACE 3
H3       DC    H'3'
H8       DC    H'8'
AVTBACK  DC    AL2(AVTSAVE2-IEDQAVTD)
D41STICS DC    X'F80400' .              2741 CHARACTERISTICS     X01004
D50STICS DC    X'301014' .              1050 CHARACTERISTICS     X01004
         AIF   ('&GEN' EQ 'MINI').ME1                            S22029
.L58     AIF   ('&GEN' EQ 'STSP').ME1                            S22029
         AIF   ('&GEN' EQ 'QTAM').ME1                            S22029
         EJECT
         USING *,RF
BSC270X  EQU   *
*     THE FOLLOWING CODE SETS UP RCCW AND THE RESIFUAL COUNT FOR
* BSC WRITE OPERATIONS.  RESIDUAL COUNT CAN BE UP TO 7 LESS THAN
*  ACTUAL STATUS
         USING IEDQSCB,RSCB
         TM    SCBSTATE,SCBTRANP        TRANSPARENT
         BZ    ITSNTR                   NO
         LA    RA,LCBCPA+24             EXIT INDICATOR FROM UNIT
         LR    RE,RCCW                  GET INTERRUPTED CCW COPIED
         SPACE
ERTRLP   EQU   *
         LR    RB,RE                    SAVE CCW POINTER
         L     RE,PRFTIC-IEDQPRF(,RE)   NEXT CCW
         LA    RE,0(,RE)                CLEAR HI ORDER BYTE
         CLR   RE,RA                    THIS THE EXIT UNIT
         BNE   ERTRLP                   NO
         MVC   PRFTIC+1-IEDQPRF(3,RB),LCBCPA+57 SET UP TIC TO NEXT
*                                         UNIT (FOR CLEANUP
         B     NOTBSC
         SPACE 3
ITSNTR   EQU   *
         CLI   LCBCSW+6,0               RESIDUAL COUNT ZERO
         BNE   ITSETB                   NO
         SPACE
         CLI   CCWCOUNT+1,1             ORIGINAL COUNT 1-ONLY OET
         BNE   ITSETB                   NO SCAN FOR ENDING CHARACTER
         TM    CCWFLAGS,CCWCD+CCWSLI+CCWCC  ANY FLAGS SET        A42376
         BC    8,NOTBSC
         SPACE
ITSETB   EQU   *
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         L     RE,DCBSCTAD-1            SCT ADDRESS
         DROP  RA
         LA    RDCB,9                   ASSUME WORST CASE
         L     RA,CCWADDR-1             DATA ADDRESS
         LR    RC,RA                    SAVE FRO FUTUTE TEST
         AH    RA,CCWCOUNT              ADD ORIGINAL COUNT
         LH    RB,LCBCSW+5              RESIDUAL COUNT FROM CSS
         LA    RB,9(,RB)                ADJUST CSW FOR WORST CASE
         SR    RA,RB                    NEW DATA ADDRESS FOR SEARCH
         CR    RA,RC                    NEW LESS THAN ORIGINAL
         BL    CHKCCW                   BRANCH YES- 2 CASES:
*                                       VERY SHORT BLOCK IN THIS
*                                       CCW OR CHANNEL HAS FETCHED
*                                       THE NEXT CCW IN CHAINE
        SPACE
ETBEXIT  EQU   *
         LA    RWKA,SKIPCLR             SET EXIT FROM LOOP      SA59538
FINDETB  EQU   *
         SR    RB,RB                    CLAR WORK REGISTER
         IC    RB,ENQCH(,RE)            ENQ OFFSET
         LA    RB,1(RB,RE)              POINT TO SEQUENCE       SA54276
         BCTR  RA,0                     ADJUST FOR LOOP
SRCHLOOP EQU   *
         LA    RA,1(,RA)                BUMP TO NEX T POSITION IN
*                                         BUFFER
         CLC   0(1,RB),0(RA)            ENQ                     SA54276
         BE    ENDFOUND                 YES
         CLC   3(1,RB),0(RA)            ETB                     SA54276
         BE    ENDFOUND                 YES
         CLC   6(1,RB),0(RA)            ETX                     SA54276
         BE    ENDFOUND                 YES
         SPACE
         BCT   RDCB,SRCHLOOP            BUMP TO NEXT POSITION
         BR    RWKA                     RETURN
         SPACE
ENDFOUND EQU   *
         TM    SCBQTYPE,SCBCONC         CONCENTRATOR?          @YA08108
         BO    UNITERM                  BRANCH IF YES          @YA08108
         MVI   0(RA),AVTEZERO           ZERO END CHAR TO        SA55941
*                                         PREVENT LOOP ON NEXT  SA55941
*                                         INTERRUPT             SA55941
UNITERM  EQU   *                                               @YA08108
SKIPCLR  EQU   *                                                SA59538
         NI    LCBCSW+4,X'FD'           RESET SCAN SWITCH       SA57685
         BCTR  RDCB,0                   ADJUST
         LTR   R0,RDCB                  TEST FOR NEGATIVE COUNT
         L     RDCB,LCBDCBPT            RESTORE DCB BASE
         BC    4,NOTBSC
         AH    R0,LCBCSW+5              ADD RESIDUAL COUNT
         STH   R0,LCBCSW+5              CORRECT THE COUNT
         B     NOTBSC
         SPACE
CHKCCW   EQU   *
         TM    LCBCSW+4,CSWPC           CHAN PROGRAM CHECK      SA65357
         BNO   GETTEXT                  BR NO, TREAT NORMALLY   SA65357
         L     RWKA,LCBCPA+12           GET LAST TEXT CCW       SA65357
         LA    RWKA,0(,RWKA)            CLEAR HI BYTE           SA65357
         L     RPREFIX,LCBLSPCI-1       GET FIRST BUFFER CCW    SA65357
SEARCH   EQU   *                                                SA65357
         LA    RPREFIX,0(,RPREFIX)      CLEAR HI BYTE           SA65357
         CR    RPREFIX,RWKA             LAST TEXT CCW IN CHAIN  SA65357
         BE    GETTEXT                  BR YES, TREAT NORMALLY  SA65357
         TM    PRFTIC+3,TWO             IS THERE ANOTHER CCW    SA65357
         BO    GETLSPCI                 BR NO, START WITH PCI   SA65357
         L     RPREFIX,PRFTIC           GET NEXT CCW            SA65357
         B     SEARCH                   AND CONTINUE SEARCH     SA65357
GETLSPCI EQU   *                                                SA65357
         L     RWKA,LCBLSPCI-1          GET FIRST TEXT BUFFER   SA65357
         B     GETTEXT1                 AND CONTINUE            SA65357
GETTEXT  EQU   *                                                SA65357
         L     RWKA,LCBCPA+12           LAST TEXT CCW
*                                         RESTART
GETTEXT1 EQU   *                                                SA65357
         LA    RWKA,0(,RWKA)            CLEAR HI ORDER BYTE
         CR    RWKA,RCCW                WAS A SHORT BLOCK XENT
         BNE   PREVCCW                  BRANCH NO RCCW IS POINTING
*                                         TO NEXT CCW IN CHAIN
         L     RPREFIX,LCBLSPCI-1 .     LAST SERVICED BUFFER - IT
*                                         MIGHT BE A VERY SMALL MSG
*                                         OR LAST PART OF MSG TO
*                                         BUFFERED TERMINAL. IN
*                                         EITHER CASE THERE IS NO
*                                         PREVIOUS UNIT.
         LA    RPREFIX,AVTEZERO(,RPREFIX) CLEAR HI ORDER BYTE
         CR    RPREFIX,RWKA .           IS THE ABOVE CASE TRUE?
         BE    THISISIT .               BRANCH IF YES
         SPACE
         TM    CCWFLAGS,CCWSLI          HAS THIS CCW BEEN RE-USED
*                                         VIA PCI
         BO    PREVCCW                  BRANCH IF YES
         SPACE
THISISIT EQU   *
         SR    RA,RC                    DIFFERENCE BETWEEEN NEW
*                                         DATA ADDRESS AND ORIGINAL
         LCR   RB,RA                    MAKE DIFFERENCE POSITINVE
         SR    RDCB,RB                  NUMBER FO POSITIONS FOR SCAN
         LR    RA,RC                    SET FOR COMMON LOOP
         TM    LCBCSW+4,X'02'           MORE THAN ONE CCW       SA57685
         BNO   ETBEXIT                  BR NO, LAST CCW         SA57685
         LA    RC,9                     ASSUME WORST CASE       SA57685
         SR    RC,R0                    AMOUNT FOR NEXT CCW     SA57685
         SR    R0,RB                    ADJUST COUNT THIS CCW   SA57685
         B     CCWOK                    BR, SET UP FOR SCAN     SA57685
         SPACE
PREVCCW  EQU   *
         L     RPREFIX,LCBLSPCI-1       LST SER ICED BUFFER
         TM    LCBCSW+4,X'02'           MORE THAN ONE CCW?     @SA73826
         BNO   PREVCCWX                 BR NO, LAST CCW        @SA73826
         LA    RPREFIX,ZERO(,RPREFIX)   CLEAR FOR COMPARE      @SA73826
         CR    RPREFIX,RCCW             IS THIS THE CCW?       @SA73826
         BE    THISISIT                 BRANCH YES             @SA73826
PREVCCWX EQU   *                                               @SA73826
         OI    LCBCSW+4,X'02'           SET MULTIPLE CCW SWITCH SA57685
*                                         USE INTERFACE CONTROL SA57685
*                                         BIT RESET LATER       SA57685
LOOPCCW  EQU   *
         LR    RDCB,RPREFIX             SAVE FOR LOOP CONTROL
         L     RPREFIX,PRFTIC           NEXT BUFFER(UNIT) FROM TIC
         LA    RPREFIX,0(,RPREFIX)      CLEAR FOR COMPARE
         CR    RPREFIX,RCCW             THIS CCW CSW POINTS TO
         BNE   LOOPCCW                  NO, CONINUE SEARCH
         SPACE
         LA    RCCW,0(,RDCB)            PREVIOUS CCW IN CHAIN
         SR    RC,RA                    GET DIFFERNCE VOR SCAN
         LR    R0,RC                    AMOUNT FOR PREVIOUS
         LA    RC,9                     ASSUME WORST
         SR    RC,R0                    AMOUNT FOR CURRENT CCW
         L     RA,CCWADDR-1             DATA ADDRESS PREVIOUS CCW
         LR    RB,RA                    SAVE -FUTURE UXE
         AH    RA,CCWCOUNT              ADD ORIGINAL COUNT
         SR    RA,R0                    SUBTRACT AMOUNT FOR SCAN
         MVC   LCBRCB(1),LCBCSW+6            CSW RESIDUAL COUNT
         LR    RC,RB                    RESET REGISTER FOR LOOP  A42376
         LR    RDCB,R0                 GET COUNT RIGHT           A42376
         CR    RA,RB                    LESS THAN ORIGINAL ADDRESS
*                                         POSSIBLE FOR SHORT RECORD
         BL    CHKCCW                  CK OF IN ONE OF 2 PREVIOUSA42376
         LA    RC,9 .                  TOTAL BYTES OFF            42376
         SR    RC,R0 .                 SAVE AMOUNT IN NEXT BUFFER 42376
CCWOK    EQU   *
         MVI   LCBCSW+6,0               CLEAR RESIDUAL COUNT
         LR    RDCB,R0                  SET SCAN COUNT FOR LOOP
         BAL   RWKA,FINDETB             LOOP FOR ETB OR ETX
         MVC   LCBCSW+6(1),LCBRCB       RESTORE ORIGINAL CSW COUNT
         LTR   RC,RC                    COUNT EXHAUSTED?       @SA71694
         BZ    SKIPCLR                  BR YES, CHAN PROG CHECK@SA71694
         L     RCCW,8(,RCCW)            NO ETB OR ETX IN PREVIOUS
         LA    RCCW,0(,RCCW)            MUST BE NEXT CCW
         L     RA,CCWADDR-1             DATA ADDRESS -NEXT CCW
         LR    RDCB,RC                  SET SCAN COUNT
         LH    R0,CCWCOUNT             IS WHATS LEFT             A42376
         SR    RC,R0                           IN TNE NEXT CCW   A42376
         BM    ETBEXIT                  YES, USE COMMON CODE   @SA70874
         B     CCWOK                   NO, LOOP BACK AND CK NEXT A42376
         EJECT
         USING *,RF
SCAN     EQU   *
*    SCBTRNSP OR SCBNONTR IS SET UPON RECEIPT OF FIRST BLOCK OF DATA
* AND RESET IN BUFFER DISPOSITION.  IT'S PURPOSE IS TO DETERMINE
* LCBISZE AND TYPE OF MSG RECEIVED FOR SUBSEQUNET CONTINUE SEQUENCES
* I/O GENERATOR MIGHT BUILD A READ OF COUNT 1 OR 2 AFTER WRITE ACK/NAK
* IF LCOUT IS IN USE.  ON SUBSEQUENT BLOCKS OF DATA THE SCAN ROUTINE
* LOOKS FOR LINE CONTROL CHARACTERS IN LCBERCCW+12 IF LCOUT IS IN USE.
*     LCBVSTRT OR LCBRSTRT IS SET BY SCAN TO INFORM PCI APPENDAGE
* ON SUBSEQUENT PCI'S AND LINE END THAT SCAN HAS COMPLETED.
*    WHEN LCBVSTRT IS SET, ONE OF THE FOLLOWING SILL ALSO BE SET:
* LCBTTD,LCBENQ,LCBEOT,LCBOLT.  LCBRSTRT IS SET WHEN AN INVALID
* START CHARACTER IS DETECTED OR IF USER IS NOT MAINTAINING
* TRANSPARENCY OR NON-TRANSPARENCY FOR THIS MESSAGE.  THESE BITS ARE
* RESET IN ACTIVATE.
         DROP  RSCB
         SR    RB,RB                    CLEAR WORK REGISTER
         L     RC,LCBSCBA-1             SCB ADDRESS
         USING IEDQSCB,RC
         L     RWKA,AVTSAVEX+TWLVE      DEB ADDRESS              X02004
         L     RA,DEBAPPAD-DEBNMSUB(,RWKA) APPENDAGE TABLE       X02004
         TM    TWO(RA),X80              IS ALTMH SPECIFIED       X02004
         BZ    DCBMHLC                  BRANCH NO                S22029
         TM    LCBSTAT2,LCBDIAL         DIAL LINE?               S22029
         BO    DCBMHLC                  BRANCH YES               S22029
         NC    LCBTTCIN,LCBTTCIN        IS CONNECTED INDEX ZERO  S22029
         BZ    DCBMHLC                  YES - USE OWNING MH LC   S22029
         LA    RWKA,FINDQCB .           GET ADDR OF ROUTINE USED S22029
*                                       TO FIND DESTINATION QCB  S22029
         BALR  RE,RWKA .                GET DEST QCB ADDRESS     S22029
         LR    RE,R0 .                  FOR CONNECTED MH TEST    S22029
         TM    QCBDSFLG-IEDQQCB(RE),QCBALTMH IS TERMINAL         S22029
*                                       CONNECTED TO ALTMH       S22029
         BZ    DCBMHLC .                NO - USE OWNING MH LC    S22029
         LA    RA,ONE(,RA)              USE ALTMH OPTIONS        X02004
DCBMHLC  EQU   * .                                               S22029
         MVC   LCBERCCW+1(ONE),0(RA)    SAVE STARTMH OPTIONS     X02004
         L     RPREFIX,LCBLSPCI-1 .     GET HEADER BUFFER        S21101
         TM    SCBBSCFM,SCBTRNSP+SCBNONTR TYPE MESSAGE DETERMINEDS21101
         IC    RB,LCBISZE .             GET IDLES RESERVED       S21101
         LA    RWKA,PRFSHDR(RB) .       SET INITIAL SCAN IF FIRSTS21101
         ST    RWKA,LCBERCCW+4 .        SAVE IT FOR LATER        S21101
         BZ    NOTSET .                 BRANCH VERY FIRST BLOCK  S21101
         SPACE 1                                                 S21101
         TM    PRFSTAT1,PRFNHDRN .      HEADER BUFFER            S21101
         BO    SET .                    BRANCH IF NO             S21101
         SPACE 1                                                 S21101
         TM    SCBQTYPE,SCBBFMM .       MIDDLE OF MESSAGE        S21101
         BZ    SET .                    BRANCH IF NO             S21101
*                                                                S21101
*        THE FOLLOWING CODE IS EXECUTED FOR INPUT BUFFERED       S21101
* TERMINAL SUPPORT SUCH AS ENQUIRY MODE ON 2770.  WE ARE READING S21101
* A SUBSEQUNET BLOCK OF A MESSAGE AND THE HEADER BUFFER MUST BE  S21101
* CONVERTED TO A TEXT BUFFER.  THE CCW IS REBUILT OR POSSIBLE    S21101
* ERROR RETRIES BY ERP AND FOR RECEPTION OF TTD, ENQ, ETC.  A    S21101
* FLAG IS SET IN THE TIC FIELD (PRFBFMM) TO INDICATE TO MH THAT  S21101
* IDLES FOR THIS BUFFER ARE SET IN LCBISZE.                      S21101
*                                                                S21101
         TM    PRFTIC,PRFBFMM .         MID MSG SITUATION        S22025
         BO    SET .                    BRANCH IF YES            S22025
*                                                                S22025
         OI    PRFTIC,PRFBFMM .         SET HEADER CONVERTED     S22025
*                                         TO TEXT                S22025
         NI    PRFFLAGS,AVTEFF-CCWSLI . RESET WRAP SWITCH        S21101
         TM    SCBBSCFM,SCBTRNSP .      RECEIVEING TRANSPARENT   S21101
         BZ    ITSNONTR .               BRANCH IF NO-TEST LCIN   S21101
         SPACE 1                                                 S21101
         BAL   RB,SETISZE .             BUMP IDLES  COUNT        S21101
ITSOUT   EQU   *                                                 S21101
         BAL   RB,SETISZE .             TWO FOR TRANSPARENT      S21101
         B     ADJBUF .                 NOW RESET BUFFER CCW FOR S21101
*                                         ERP AND OTHER -TTD,ENQ S21101
         SPACE 1                                                 S21101
ITSNONTR EQU   *                                                 S21101
         TM    LCBERCCW+ONE,IN          LINE CONTROL IN?         S99228
         BZ    ITSOUT .                 BRANCH IF LCOUT -BUMP IDLS21101
*                                         PAST STX               S21101
ADJBUF   EQU   *                                                 S21101
         BAL   RE,BLDBUFF1 .            REBUILD BUFFER USING NEW S21101
*                                         IDLES COUNT            S21101
         L     RC,LCBSCBA-1 .           RESET SCB BASE           S21101
NOTSET   EQU   *                                                 S21101
         L     RPREFIX,LCBERCCW+4 .     DATA ADDRESS IN BUFFER   S21101
*                                         TO SCAN FOR LINE CNTROLS21101
         B     SCANTEST .               START THE SCAN           S21101
         SPACE 5                                                 S21101
.ME1     ANOP
FINDQCB  EQU   * .                                               S22029
* THIS ROUTINE GETS THE ADDRESS OF THE DESTINATION QCB           S22029
         STM   RPREFIX,RC,SUBSAVE-FINDQCB(RWKA) .SAVE REGISTERS  S22029
*                                       USED BY TNT CODE         S22029
         LH    RC,LCBTTCIN .            GET CONNECTED INDEX      S22029
         L     RA,AVTRNMPT .            GET TNT CODE BASE        S22029
         BAL   RPREFIX,TNTDCODE-IEDQTNTD(RA) .GO GET TERM TABLE  S22029
*                                       ENTRY                    S22029
         L     R0,AVTEZERO(RB) .        GET ADDR OF DEST QCB     S22029
SUBREGS  LM    RPREFIX,RC,SUBSAVE-FINDQCB(RWKA) .RESTORE REGS    S22029
         BR    RE .                     RETURN TO CALLER         S22029
SUBSAVE  DS    4F .                     REGISTER SAVE AREA       S22029
         AIF   ('&GEN' EQ 'MINI').L70                            S22029
         AIF   ('&GEN' EQ 'STSP').L59                            S22029
         AIF   ('&GEN' EQ 'QTAM').L59                            S22029
SET      EQU   *
         SPACE
         L     RWKA,LCBCPA+12 .         GET CURRENT CCW          S21101
         LA    RPREFIX,LCBERCCW+12 .    SCAN AREA                S21101
         LA    RA,ONE(,RPREFIX) .       ASSUME TRANSPARENT       S21101
         TM    SCBBSCFM,SCBTRNSP .      TRANSPARENT MODE         S21101
         BO    TRCOM                    BRANCH IF YES
         BCTR  RA,R0                    ADJUST-LCIN,LCOUT-NONTRANSP
         TM    LCBERCCW+ONE,IN          LINE CONTROL IN?         S99228
         BO    NOTR                     BRANCH IF LCIN
         SPACE
TRCOM   EQU   *
         LR    RE,RWKA                  COPY CCW ADDRESS
         CLI   CCWCOUNT+1-CCW(RWKA),3   AT LEAST 3 CHARACTERS
        L     RWKA,CCWADDR-1-CCW(,RWKA) DATA ADDRESS
         BH    MOVEIT                   YES
         LH    RB,CCWCOUNT-CCW(RE)  GET COUNT
         BCTR  RB,0                     FOR EXECUTE
         EX    RB,MOVELC                MOVE
         LA    RA,1(RA,RB)              ADJUST SCAN AREA
         TM    11(RE),X'03'             IS THERE NEXT UN IT
         BNZ   SCANTEST                 NO
         L     RE,8(,RE)                GET NEXT UNIT
         L     RE,CCWADDR-1-CCW(,RE)    GET DATA ADDRESS
         MVC   0(3,RA),0(RE)            MOVE DATA
         B     SCANTEST                 SCAN DATA
MOVEIT   EQU   *
        MVC   1(2,RA),0(RWKA)          MOVE DATA FOR SCAN
         B     SCANTEST                 START SCAN
         SPACE
NOTR    EQU   *
         LR    RPREFIX,RWKA             GET CURRENT CCW ADDRESS
         CLI   PRFCOUNT+1,3             AT LEAST 3 CHARCTERS
         BH    NOMOVE                   YES
         LH    RWKA,PRFCOUNT            GET COUNT
         L     RB,PRFIOADR-1            GET DATA ADDRSS
         BCTR  RWKA,0                   FOR EXECUTE
         EX    RWKA,MOVESCAN            MOVE REMANING COUNT
         LA    RA,1(RA,RWKA)            ADJUST SCAN AREA
         TM    PRFTIC+3,X'03'           IS THERE NEXT UNIT
         BNZ   STARTSCN                 NO
         L     RPREFIX,PRFTIC           NEXT C W
         L     RB,PRFIOADR-1            DATA DADDRESS
         LA    RWKA,2                   MOVE AT LEAST 3
         EX    RWKA,MOVESCAN            MOVE DATA
STARTSCN EQU   *
         LA    RPREFIX,LCBERCCW+12      SCAN AREA
         B     SCANTEST                 SCAN THE DATA
         SPACE
NOMOVE   EQU   *
         L     RPREFIX,PRFIOADR-1       FOR SCAN
SCANTEST EQU  *
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         L     RE,DCBSCTAD-1            SCT ADDRESS
         DROP  RA
         SR    RA,RA                    CLEAR EORK REGISTER
         IC    RA,STXENQCH(,RE)         TTD OOFFSET
         LA    RWKA,1(RA,RE)            POINT TO SEQUENC
         CLC   1(2,RWKA),0(RPREFIX)     STX ENQ
        BNE   NOTTTD                   NO
         OI    SCBERR2,SCBABRTN         POSSIBLE ABORT
         OI    SCBERR4,SCBTXTTN         SET TEXT ERROR
         OI    LCBMSGFM,LCBTTD+LCBVSTRT . SAET STATUS            S21101
         TM    SCBBSCFM,SCBTRNSP+SCBNONTR TYPE MSG DETERMINED  @OS76474
         BCR   7,RD                     Y- NO NEED TO UPDTE CCW@OS76474
         SPACE 5                                                 S21101
BLDBUFF  EQU   *
         LR    RE,RD .                  SET FINAL EXIT ADDRESS   S21101
BLDBUFF1 EQU   *                                                 S21101
*        REBUILD BUFFER IF FIRST BLOCK FROM POLLING
         L     RPREFIX,LCBLSPCI-1       LAST SERVICED BUFFER
         SR    RWKA,RWKA                CLEAR WORK REGISTER
         IC    RWKA,LCBISZE             NO OF IDLES FOR HEADER
         LA    RWKA,PRFSHDR(RWKA)          PREIX PLUS IDLES
         L     RB,PRFIOADR-1            DATA ADDRESS
         LR    RC,RB                    SAVE FOR UPDATE
         LA    RB,0(,RB)                CLEAR HI ORDER BYTE
         SR    RB,RWKA                  FIND DIFFERNCE IN ADDRESS
         SR    RC,RB                    NEW LOWER DATA DADRESS
         AH    RB,PRFCOUNT              ADJUST COUNT
         ST    RC,PRFIOADR-1            NEW DATA ADDRESS
         STH   RB,PRFCOUNT              SET NEW COUNT
         BR    RE .                     REUTRN TO CALLER         S21101
NOTTTD   EQU   *
         CLC   1(1,RWKA),0(RPREFIX)     STX RECEIVED
         BNE   TRTTD                    NO TRY TRANSPARENT TTD
STXREC   EQU   *
         TM    SCBBSCFM,SCBTRNSP .      TRANSPARENT              S21101
         BNZ   ERRSET                   YES, WRONAG FORMAT
         TM    SCBBSCFM,SCBNONTR .      NON-TRANSPARENT MODE     S21101
         BNZ   ITSET                    YES
         TM    LCBERCCW+1,IN            LCIN
         BO    ITSET                    YES
         SPACE
         BAL   RB,SETISZE               BUMP IDLES
ITSET    EQU   *
         OI    SCBBSCFM,SCBNONTR .      SET NONTRANSPARENT BIT   S21101
ALLSET   EQU   *
         OI    LCBMSGFM,LCBVSTRT .      VALID START CHARACTER    S21101
         BR    RD                       RETURN
TRTTD    EQU   *
         CLC   0(2,RWKA),0(RPREFIX) .  STX                      SA44892
         BNE   NOTRAN                                           SA44892
         TM    SCBBSCFM,SCBNONTR .    RECEIVING NONTRANSP       SA44892
         BNZ   SETERR                                           SA44892
         OI    LCBMSGFM,LCBVSTRT .     VALID START SEQUENCE.    SA44892
         TM    SCBBSCFM,SCBTRNSP .     ALREADY RECEIVE AT LEAST SA44892
*                                      ONE DATA SEQUENCE ?      SA44892
         BCR   7,RD .                  YES, RETURN              SA44892
         BAL   RB,SETISZE .            BUMP IDLES               SA44892
         BAL   RB,SETISZE .            BUMP IDLES               SA44892
         OI    SCBBSCFM,SCBTRNSP .     SET TRANSP . RECEIVE     SA44892
         B     BLDBUFF .               REBUILD BUFFER FOR CASE  SA44892
*                                      OF MULTIPOINT LINE .     SA44892
NOTRAN   EQU   *
         CLC   2(1,RWKA),0(RPREFIX)     INQ RECEIVED
         BNE   NOTENQ                   NO
         SPACE
         OI    LCBMSGFM,LCBVSTRT+LCBENQ SET ENQ START            S21101
         TM    SCBBSCFM,SCBTRNSP+SCBNONTR TYPE MSG DETERMINED    S21101
         BCR   7,RD                     BRANSH YES
         B     BLDBUFF                  REBUILD CHANNEL PROGRAM@OY11983
         SPACE
NOTENQ   EQU   *
         IC    RA,EOTCH(,RE)            EOT SEQUENCE
         LA    RWKA,1(RA,RE)            POINT TO EOT SEQUENCE
         CLC   0(1,RWKA),0(RPREFIX)     EOT RECEIVED
         BNE   TRYSOH                   NOT EOT, TRY SOH
         OI    LCBMSGFM,LCBEOT+LCBVSTRT SET STATUS BITS          S21101
         BR    RD                       ERETURN
TRYSOH   EQU   *
         IC    RA,ESOHCH(,RE) .         SOH % E                  S22026
         LA    RWKA,1(RA,RE) .          POINT TO SEQUENCE        S22026
         CLC   0(3,RWKA),0(RPREFIX) .   SOH % E SEQUENCE         S22026
         BE    TPER .                   YES, SET TPER BIT        S99238
         SPACE
         IC    RA,CSOHCH(,RE) .         SOH % C                  S99238
         LA    RWKA,1(RA,RE) .          POINT TO SEQUENCE        S99238
         CLC   0(3,RWKA),0(RPREFIX) .   SOH % C SEQUENCE         S99238
         BNE   TRYOLT .                 NO, TRY NEXT SEQUENCE    S22026
         OI    LCBFLAG3,LCBSOHC         SOH % C MESSAGE          S99238
TPER     EQU   * .                                               S99238
         OI    LCBFLAG3,LCBOBRRD .      SET TPER RECORD          S22026
         B     STXREC .                 GO TO COMMON CODE        S22026
TRYOLT   EQU   *                                               @OY20488
         AIF   ('&GEN' EQ 'QTAM' OR '&GEN' EQ 'MINI').LL49
         AIF   ('&GEN' EQ 'STSP').LL49                         @OY20488
         IC    RA,RSOHCH(,RE)           INSERT SOHR OFFSET     @OY20488
         LA    RWKA,1(RA,RE)            POINT TO SOHR CHARS    @OY20488
         CLC   0(3,RWKA),0(RPREFIX)     SOHR                   @OY20488
         BNE   PROBOLT                  BRANCH NO              @OY20488
         OI    SCBERR2,SCBSOHE          SET SOHR MESSAGE FLAG  @OY20488
         IC    RA,EOTCH(,RE)            EOT OFFSET             @OY20488
         LA    RWKA,1(RA,RE)            POINT TO EOT CHAR      @OY20488
         CLI   0(RWKA),ASCIEOT          ASCII TERMINAL         @OY20488
         BNE   SOHEBCD                  BRANCH NO              @OY20488
         CLI   SS1(RPREFIX),ASTAT3      IR                     @OY20488
         BE    STXREC                   BRANCH YES             @OY20488
         TM    SS1(RPREFIX),ASTAT2      CR,IR,EC,DC,CC         @OZ29663
         BNZ   YESLOG                   BRANCH YES             @OZ29663
         TM    SS0(RPREFIX),ASTAT1      DB,DE                  @OZ29663
         BNZ   STXREC                   BRANCH YES             @OZ29663
         CLI   SS0(RPREFIX),ASCIDE      DEVICE END ONLY        @OZ29663
         BE    STXREC                   BRANCH YES             @OZ29663
         B     YESLOG                   LOG STATUS MESSAGE     @OZ29663
SOHEBCD  EQU   *                                               @OZ29663
         OI    LCBFLAG3,LCBSOHR         SET SOH%R MSG INDICATOR  S99228
         TM    SS1(RPREFIX),STAT2       CR, IR, EC, DC, CC?      S99228
         BNZ   YESLOG                   YES, LOG SOH%R MESSAGE   S99228
         TM    SS0(RPREFIX),STAT1       DB, DE?                  S99228
         BNZ   STXREC                   BRANCH EITHER            S99228
YESLOG   EQU   *                                                 S99228
         TM    LCBTSOB,LCBTSBUF         IS THIS TIME SHARING BUF S99228
         BZ    YESLOG1                  BRANCH ON NO             S99228
         OI    SCBERR4,SCBTRMLN         SET TERMINAL ERROR FLAG  S99228
YESLOG1  EQU   *                                                 S99228
         OI    LCBFLAG3,LCBOBRRD        SET RECORDING FLAG       S99228
         B     STXREC                   RETURN TO COMMON CODE    S99228
PROBOLT  EQU   *                                                 S99228
.LL49    ANOP                                                    S99228
         IC    RA,TOTESOH(,RE)          SOH % / FOR TOTE         S21903
         LA    RWKA,1(RA,RE)            POINT TO SEQUENCE        S21903
         CLC   0(3,RWKA),0(RPREFIX)     ON LINE TEST?            S21903
         BNE   SOHTRY                   TRY SOH
         TM    SCBBSCFM,SCBTRNSP+SCBNONTR 1ST TIME               S21101
         BNZ   STXREC                   NO
         OI    LCBMSGFM,LCBVSTRT+LCBOLT INDICATE OLT REQUEST     S21101
         OI    SCBBSCFM,SCBNONTR .      SET NONTRANSPARENT BIT   S21101
         BR    RD                       RETURN
SOHTRY   EQU   *
         CLC   0(1,RWKA),0(RPREFIX)     SOH RECEIVED
         BE    STXREC                   YES, USE COMMON CODE
         IC    RA,DLEEOTCH(,RE)         INDEX TO SEQUENCE
         LA    RWKA,1(RA,RE)            BUMP TO SEQUENCE
         CLC   0(2,RWKA),0(RPREFIX)     DLE EOT RECEVIED
         BNE   ERRSET                   NO
         NI    LCBTPCD+11,AVTEFF-DISDLEOT DONT WRITE DLE EOT NEXT
         OI    LCBMSGFM,LCBEOT+LCBENQ+LCBVSTRT VALID START       S21101
*                                         SET DLE EOT RECEIVED   S21101
         OI    LCBSTAT2,LCBNEGRP        SET NEGATIVE RESPONSE
         MVC   LCBERCCW+12(1),1(RWKA)   MOVE EOT               @OY19728
         BR    RD                       RETURN
ERRSET   EQU   *
         TM    LCBSTAT2,LCBDIAL         DIAL
         BZ    SETERR                   NO
         SPACE
*        THIS MIGHT BE ID ENQ IF CPU ID WAS HIT ON LINE
         TM    SCBBSCFM,SCBTRNSP+SCBNONTR 1ST TIME               S21101
         BNZ   SETERR                   NO, NOT FIRST BLOCK
         SPACE
TESTENT  EQU   * .                                               S21101
         CLI   LCBCPA+24,CCWDISAB .     CONNECTION JUXT MADE     S21101
         BNE   SETERR .                 BRANCH IF NO             S21101
         SPACE
         TM    LCBCSW+3,CEDE            PCI OR LINE END
         BCR   8,RD                     BRANCH IF ENTERED FROM PCI
         TM    LCBCSW+4,PCIFLAG         PCI IN STATUS
         BZ    STRTID                   BRANCH NO
         XI    LCBCSW+4,PCIFLAG         TURN OFF PCI FOR LINE END
*                                         ENTRY BEFORE RESTART
         BR    RD                       RETURN TO PCI
STRTID   EQU   *
         LA    RCCW,LCBCPA+48           ASSUME NO WRITE TONE
         CLI   LCBTPCD+5,TPWRTONE
         BNE   EXIT3                    NO, RESTART
         LA    RCCW,LCBCPA+56           ADDRESS OF WRITE ID ADK
         B     EXIT3                    TO RESTART
SETERR   EQU   *
         OI    SCBERR3,SCBFORMN         SET FORMAT ERROR
         OI    SCBERR4,SCBTXTTN         TEXT ERROR
         OI    LCBMSGFM,LCBRSTRT .      SET INVALID START        S21101
         BR    RD                       RETURN
MOVELC   MVC   1(1,RA),0(RWKA)          'EXECUTED'
MOVESCAN MVC   0(1,RA),0(RB)            'EXECUTED'
SETISZE  EQU   *
         ICM   RPREFIX,AD,LCBLSPCI .    FIRST BUFFER             X01004
         LH    RA,PRFSIZE .             PICK UP SIZE             X01004
         LA    RA,ONE(,RA) .            ADD ONE                  X01004
         STH   RA,PRFSIZE .             RESTORE NEW SIZE         X01004
         IC    RA,LCBISZE .             PICK UP IDLES COUNT      X01004
         LA    RA,ONE(,RA) .            ADD ONE                  X01004
         STC   RA,LCBISZE .             STORE NEW COUNT          X01004
         BR    RB                       RETURN
         DROP  RC
         USING IEDQSCB,RSCB
         EJECT
         USING *,RF
CHACK    EQU   *
*
*        THIS SUBROUTINE INSPECTS ARESPONSE RECEIVED FOR BSC LINES
* AND SETS FLAGS ACCORDINGLY IN LCBERCCW FOR CALLER TO INTERROGATE.
*
         LH    RA,CCWCOUNT              ORIGINAL COUNT
         SH    RA,LCBCSW+5              SUBTRACT RESIDUAL COUNT
         BCTR  RA,0                     DECREMENT ONE
         BCTR  RA,0                     NOW TWO TO RESPONSE
         L     RB,CCWADDR-1             DATA ADDRESS
         AR    RB,RA                    BACK UP TO RESPOSNE AREA
         L     RA,LCBDCBPT              GET DCB ADDRESS
         USING IHADCB,RA
         L     RE,DCBSCTAD-1            SPECIAL CHARACTERS
         DROP  RA
         SR    RA,RA                   CLEAR WORK REGIER
         IC    RA,ACK0CH(,RE)           ACK0 SEQUNCE
         LA    RWKA,1(RA,RE)            POIN  TO SEQUENCE
         CLC   0(2,RWKA),0(RB)          TEST ACK0
         BNE   TRACK1      I            TRY ACK1
         SPACE
         MVI   LCBERCCW,RACK0           SET ACK0 INDICATOR
         BR    RD                       RETURN
         SPACE
TRACK1   EQU   *
         LA    RWKA,3(,RWKA)            BUMP TO ACK1
         CLC   0(2,RWKA),0(RB)          TEST FOR ACK-I
         BNE   TRYNAK
         SPACE
         MVI   LCBERCCW,RACK1           SET ACK-1 INDICATOR
         BR    RD                       RETURN
         SPACE
TRYNAK   EQU   *
         IC    RA,NAKCH(,RE)            POINT TO NAK
         LA    RWKA,1(RA,RE)            NAK SEQUENCE
         CLC   0(1,RWKA),1(RB)          TEST FOR NAK
         BNE   TRYWACK                  NOT A NAK
         MVI   LCBERCCW,RNAK            SET NAK I DICATOR
         BR    RD                       RETURN
         SPACE
TRYWACK  EQU   *
         IC    RA,WACKCH(,RE)           INDEX TO WACK
         LA    RWKA,1(RA,RE)            POINT TO WACK SEQUENCE
         CLC   0(2,RWKA),0(RB)          TEST FOR WACK
         BNE   TRYDLEOT                 TRY DLE-EOT             SA57695
         SPACE
         MVI   LCBERCCW,RWACK           SET WACK INDICATOR
         BR    RD                       RETURN
         SPACE
TRYDLEOT EQU   *
         IC    RA,DLEEOTCH(,RE)         INDEX TO SEQUENCE
         LA    RWKA,1(RA,RE)            POINT TO SEQUENCE
         CLC   0(2,RWKA),0(RB)          DLE EOT
         BNE   TRYTTD                   TRY TTD                 SA57695
         NI    LCBTPCD+11,X'FF'-DISDLEOT DONT SEND DLE EOT
*                                         SEQUENCE
         MVI   LCBTSTSW,AVTEFF          VORCE NEW CONNECTION
         OI    LCBSTAT2,LCBNEGRP        INDICATE NEGATIVE RESPONSE
         NI    LCBMSGFM,AVTEFF-LCBACKI  RESET ACK COUNTER      @SA74852
         MVI   LCBERCCW,RDLEEOT+REOT    SET DLE EOT AND EOT    @SA74852
*                                       INDICATOR              @SA74852
         BR    RD                       RETURN                 @SA74852
         SPACE
TRYTTD   EQU   *
         IC    RA,EOTCH(,RE)            INDEX TO EOT
         LA    RWKA,1(RA,RE)            POINT TO EOT SEQUENCE
         CLC   0(1,RWKA),1(RB)          TEST FOR EOT
         BNE   TRYRVI                   NO,
EOTREC   EQU   *
         SPACE
         NI    LCBMSGFM,AVTEFF-LCBACKI  RESET ACK COUNTER FOR CASS21101
*                                          OF BSC DIAL WHERE     S21101
*                                          SCBNOEOT IS ON . I/O GS21101
*                                          WILL NOT RESET IT     S21101
         MVI   LCBERCCW,REOT            SET EOT INDICATOR
         BR    RD                       RETURN
         SPACE
TRYRVI   EQU   *
         IC    RA,RVICH(,RE)            INDEX TO SEQUENCE
         LA    RWKA,1(RA,RE)            POINT TO SEQUENCE
         CLC   0(2,RWKA),0(RB)          RVI RECEIVED
         BNE   TRYENQ                   NO
         MVI   LCBERCCW,RRVI            SET RVI INDICATOR
         BR    RD                       RETURN
TRYENQ   EQU   *
         IC    RA,ENQCH(,RE)            INDEX
         LA    RWKA,1(RA,RE)            POINT TO SEQUNECE
         CLC   0(1,RWKA),1(RB)          THIS ENQ
         MVI   LCBERCCW,0               ASSUME ERROR
         BCR   7,RD                     RETURN IF ERROR
         CLI   AVTDOUBX,TPRDRPEB        ENQ IN RESP TO TEXT    @SA69964
         BCR   8,RD                     BR YES, LEAVE AS INVAL @SA69964
         MVI   LCBERCCW,RENQ
         BR    RD                       RETURN
         EJECT
.L59     ANOP
IDCHK    EQU   *
         USING *,RF
*
*        THIS SUBROUTINE WILL VERIFY AN IDENTIFICATION SEQUENCE FOR
* DIAL LINES.
*
         USING  IEDQSCB,RSCB
         DROP  RPREFIX
         L     RPREFIX,LCBDCBPT         DCB  BASE
         USING IHADCB,RPREFIX
         L     RB,CCWADDR-1             ID RESD AREA
         LA    RB,0(,RB)                CLEAR HI ORDER BYTE
         AH    RB,CCWCOUNT              ADD ORIGIANL COUNT
         LH    RA,LCBCSW+5              RESIDUAL COUNT
         AIF   ('&GEN' NE '').L61
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    TRYTWX                   NO
.L61     AIF   ('&GEN' EQ 'STSP').L62
         AIF   ('&GEN' EQ 'QTAM').L62
         SPACE
         LA    RA,2(,RA)                ASSUME ACK SEQUENCE RCVD
         CLI   LCBERCCW,RENQ            ENQ RECEIVED
         BE    ADJUST                   YES,BRANCH             @XA11338
         CLI   LCBERCCW,RNAK            NAK RECEIVED           @XA11338
         BE    ADJUST                   YES,BRANCH             @XA11338
         CLI   LCBERCCW,REOT            EOT RECEIVED           @XA11338
         BNE   TRYTWX                   NO,BRANCH              @XA11338
ADJUST   EQU   *
         BCTR  RA,0                     ADJUST FOR ENQ
.L62     ANOP
TRYTWX   EQU   *
         STC   RA,AVTDOUBX .            SAVE TRUE RESIDUAL CNT
         SR    RB,RA                    SUBTRACT TRUE RESIDUAL CNT
         LA    RA,LCBERCCW+24           END OF ID AREA
         SR    RA,RB                    PAD AREA
         BNP   NOPAD                    NO PADDDING REQUIERD
         MVI   0(RB),C' '               SET FIR BLANK
         BCTR  RA,0                     FOR EXECUTE INTR
         LTR   RA,RA                    ONLY 1 PAD REQUIRED
         BNP   NOPAD                    BRANCH NO NORE PADS
         BCTR  RA,0                     FOR EXECUTE
         EX    RA,MOVER                 BLANK AREA
NOPAD    EQU   *
         L     RB,CCWADDR-1             DATA ADDRESS
         SR    RA,RA                    CLEAR WORK REGISTER
         LR    R0,RA                    CLEAR WORK REGISTER
         IC    R0,DCBILCT               NUMBER OF ILISTS
         LR    RE,RA                    CLEAR WORK REGISTER
         TM    LCBSTAT1,LCBSENDN .      SEND SIDE START WITH FIRST
         BO    START1ST .               INVITATION LIST
         SPACE
         IC    RE,LCBUCBX               RLN-1
         SR    R0,RE                    NUMBER OF ILISTS TO SCAN
START1ST EQU   *
         MVI   LCBPRI,0                 SET FIRST TIME SWITCH
NEXTLIST EQU   *
         SLL   RE,2                     MULTIPLY FOR INDEX
         L     RC,DCBINVLI(RE)          NEXT INVITATION LIST
         DROP  RPREFIX
         USING IEDQPRF,RPREFIX
         LA    RWKA,LISTSIZE(,RC)       BUMP TO FIRST ENTRY
         CLI   LCBPRI,0                 FIRST TIME
         BNE   NOTFIRST                 NOT FIRST
         MVI   LCBPRI,PRILNFRE          RESET FIRST TIME
         SPACE
         CLI   TWO(RC),2                SIZE OF EACH ENTRY 1(+INDEX)
         BH    IDSRCH                   BRANCH IF ID'S USED
         BCR   4,RD                     BRANCH IF 0-OUTPUT ONLY
         CLI   1(RC),1                  ONLY ONE ACTIVE ENTRY
         BNE   IDSRCH                   NO
         CLI   LISTSIZE(RC),DUMMY       DUMMY ENTRY
         BNE   IDSRCH .                 BRANCH FOR 1 CHAR ID
         SPACE
         CLC   AVTDOUBX(1),CCWCOUNT+1 . ORIGINAL COUNT=ORIGINAL, UE
*                                         DID WE RECEIVED NO ID
         BNE   TRYNXTIL                 CHECK FURTHER           SA65389
         BR    RD .                     RETURN ID'S ARE NOT USED
         SPACE
NOTFIRST EQU   *
IDSRCH   EQU   *
         IC    RA,TWO(,RC)              SIZE OF EACH ENTRY
         BCTR  RA,0                     DECREMENT FOR INDEX BYTE
         CLI   0(RWKA),FE               END OF LIST
         BE    TRYNXTIL                 YES, GET NEXT ILIST
         SPACE
         BCTR  RA,0                     DECREMENT FOR EXECUTE
         EX    RA,IDCLC                 COMPARE ID
         BE    IDFND                    BRANCH FOUND
         SPACE
         LA    RWKA,2(RA,RWKA)          BUMP TO NEXT ENTRY
         B     IDSRCH                   LOOK AT NEXT
         SPACE
TRYNXTIL EQU   *
         SRL   RE,2                     GET TRUE RLN -1
         LA    RE,1(,RE)                NEXT LINE NUMBER
         BCT   R0,NEXTLIST              GET NEXT ILIST ADDRESS
         AIF   ('&GEN' NE '').Z19
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    ITSATWX                  NOT BSC
.Z19     AIF   ('&GEN' EQ 'STSP' OR '&GEN' EQ 'MINI').Z20
         AIF   ('&GEN' EQ 'QTAM').Z20
         CLI   LCBINCAM,IDRETRY         RETRY LIMIT REACHED
         BL    4(RD)                    BRANCH IF NO
ITSATWX  EQU   *
.Z20     ANOP
BADID    EQU   *
         L     RPREFIX,LCBDCBPT         RESTORE DCB ADDRESS    @YA05167
         OI    SCBERR3,SCBTMIDN         SET ID ERROR
         MVI   LCBTSTSW,AVTEFF          TO FORCE SUBSEQUENCE HANGUP
         OI    LCBSTAT2,LCBNEGRP        SET NEGATIVE RESPONSE
         B     ERERROR                  POST ERROR
IDFND    EQU   *
         IC    RA,1(RWKA,RA)            INDEX BYTE OF ID ENTRY
         AR    RA,RA                    DOUBLE FOR NEGATIVE INDEX
         SR    RC,RA                    BACK UP TO TNT OFFSETS
         TM    LCBSTAT1,LCBSENDN        SENDING                 SA65865
         BNO   SETTTCIN                 BR NO, SET LCBTTCIN     SA65865
         CLC   LCBTTCIN,AVTEZERO(RC)    CORRECT TERMINAL        SA65865
         BE    SETTTCIN                 YES, SET TTCIN         @YA05167
         AR    RC,RA                    NEXT ENTRY ADDRESS     @YA05167
         SR    RA,RA                    CLEAR                  @YA05167
         IC    RA,TWO(RC)               SIZE OF EACH ENTRY     @YA05167
         LA    RWKA,0(RA,RWKA)          BUMP TO NEXT ENTRY     @YA05167
         B     IDSRCH                   CONTINUE SEARCH        @YA05167
SETTTCIN EQU   *                                                SA65865
         L     RB,DCBDEBAD-IHADCB(RPREFIX)  DEB ADDRESS        @YA05167
         SR    RE,RE                    CLEAR FOR IC           @XA06335
         IC    RE,DEBNMEXT-DEBTCBAD(RB) NUMBER OF EXTENTS      @YA05167
         SR    RB,RB                    CLEAR FOR IC           @YA05167
         IC    RB,DCBEIOBX-IHADCB(RPREFIX) LCB SIZE            @YA05167
         L     RPREFIX,DCBIOBAD-IHADCB(RPREFIX)  IOB ADDRESS   @YA05167
         LA    RPREFIX,0(RPREFIX)       CLEAR                  @YA05167
         SH    RPREFIX,LCBSIZE          POINT TO LCB BOUNDARY  @YA05167
         LA    RLCB,0(RLCB)             SET FOR COMPARE        @XA06335
LOOPLCB  EQU   *                                               @XA06335
         AR    RPREFIX,RB               FIRST/NEXT LCB         @YA05167
         CR    RPREFIX,RLCB             IS THIS THE LINE?      @YA05167
         BE    DECR                     BR YES,CONTINUE        @XA06335
         CLC   LCBTTCIN-LCBRCB(TWO,RPREFIX),0(RC) TNT MATCH?   @YA05167
         BE    BADID                    BR YES,TREAT AS BAD ID @XA06335
DECR     EQU   *                                               @XA06335
         BCT   RE,LOOPLCB               CONTINUE SEARCH        @XA06335
         MVC   LCBTTCIN(2),0(RC)        SET IN LCB
         BR    RD                       RETURN
IDCLC    CLC   0(1,RWKA),0(RB)          EXECUTED INSTRUCTION
MOVER    MVC   1(1,RB),0(RB)            EXECUTED INSTRUCTION
         EJECT
POLLRT   EQU   *
         USING *,RF
*
*        THIS SUBROUTINE COMPUTES SOURCE INFORMATION ON AN AUTOPOLL
* LINE.
*
         MVI   LCBCPA+24,CCWNOP         INDDICATE SEARCH WAS DONE
         MVI   LCBCPA+53,AVTEZERO       TURN OFF ERP FOR        SA66604
*                                        AUTOPOLL INDICATOR     SA66604
         L     RA,LCBDCBPT              GET DCB ADDRESS        @SA62375
         USING IHADCB,RA                                       @SA62375
         SR    RE,RE                    CLEAR FOR IC           @SA62375
         IC    RE,DCBEIOBX              GET LCB SIZE           @SA62375
         SH    RE,H8S                   EXTENSION OFFSET       @SA62375
         ALR   RE,RLCB                  GET EXTENSION ADDRESS  @SA62375
         DROP  RA                                              @SA62375
         L     RPREFIX,LCBLSPCI-1       HEADER BUFFER
         L     RWKA,LCBCPA+64 .         ADDRESS OF INDEX BYTE    S22025
         L     RA,LCBCPA+48             2N D POLL COMMCAND
         LR    RC,RA                    SAVE START OF LIST
         SH    RA,H8                    BACK UP TO CONTROL WORDS
         SR    RB,RB                    CLEAR WORK REGISTER
         STH   RB,LCBTTCIN .            ASSUME NO SOURCE         S22025
         IC    RB,TWO(,RA)              SIZE OF EACH ENTRY
         BCTR  RC,0                     DECREMENT FOR INDEX SCAN
POLLLOOP EQU   *
         AR    RC,RB                    BUMP TO NEXT ENTRY
         CLC   0(1,RC),0(RWKA)          THIS THE INDEX BYTE
         BE    SRCEFND                  YES SET UP SOURCE
         SPACE
         AIF   ('&GEN' EQ 'BISC').Z21
         CLI   1(RC),FE                 END OF LIST
         AIF   ('&GEN' NE '').Z22
         BCR   8,RD .                   BRANCH IF YES            S22025
         AGO   .Z21
.Z22     ANOP
         BNE   POLLLOOP                 NO,GET NEXT ENTRY
         AGO   .Z23
.Z21     ANOP
         CLI   2(RC),FE                 END OF BSC LIST
         BNE   POLLLOOP                 NO, GET NEXT ENTRY
.Z23     ANOP
         BR    RD                       RETURN
         SPACE 2
SRCEFND  EQU   *
         BCTR  RB,R0 .                  DECREMENT FOR INDEX      S22025
         SR    RC,RB .                  BACK UP TO TNT OFFSET    S22025
         STCM  RC,AD,LCBINVPT .         POINTER FOR NEXT POLL    Y01948
         MVC   LCBERADR(THREE),LCBINVPT SET POLL ADDRESS       @SA62375
         IC    RB,0(,RWKA)              GET INDEX BYTE
         AR    RB,RB                    DOUBLE FOR NEGAIVE INDEX
         SR    RA,RB                    BACK UP TO TNT OFFSET
         LH    RC,0(RA)                 GET TNT OFFSET
         STH   RC,LCBTTCIN .            PUT TNT OFFSET IN LCB    S22029
         L     RB,AVTSAVEX+TWLVE        DEB ADDRESS              X02004
         L     RB,DEBAPPAD-DEBNMSUB(,RB) APPENDAGE TABLE         X02004
         TM    TWO(RB),X80              IS ALTMH SPECIFIED       X02004
         BZ    CORECTLC                 BRANCH NO                S22029
         LR    RA,RWKA .                SAVE ADDR OF INDEX BYTE  S22029
         LR    RWKA,RF .                SAVE BASE REGISTER       S22029
         NC    LCBTTCIN,LCBTTCIN        IS CONNECTED INDEX ZERO  S22029
         BZ    CORECTLC                 YES - USE OWNING MH LC   S22029
         S     RWKA,FQCB .              GET ADDR OF FINDQCB RTN  S22029
         BALR  RE,RWKA .                GET DEST QCB ADDRESS     S22029
         LR    RWKA,RA                  RESTORE INDEX BYTE ADDR  S22029
         LR    RE,R0 .                  QCB ADDR FOR CHECKING    S22029
*                                       FOR CONNECTED MH         S22029
         TM    QCBDSFLG-IEDQQCB(RE),QCBALTMH IS TERMINAL         S22029
*                                       CONNECTED TO ALTMH       S22029
         BZ    CORECTLC .               USE OWNING MH LC         S22029
         LA    RB,ONE(,RB)              USE ALTMH OPTIONS        X02004
CORECTLC EQU   * .                                               S22029
         TM    0(RB),LCIN               LC=IN SPECIFIED          X02004
         BNO   FINDSCBQ                 BRANCH IF NO             S99228
         TM    LCBSTAT2,LCBSYNC         BISC LINE?               S22028
         BO    TSOPRES                  BRANCH YES               S22028
         MVI   AVTEZERO(RWKA),X'16'     REPLACE INDEX WITH EOA   S22028
         B     FINDSCBQ                 FIND SCB                 S22028
TSOPRES  EQU   *                                                 S22028
         TM    LCBTSOB,LCBTSBUF         TSO BUFFER?              S22028
         BNO   FINDSCBQ                 BRANCH NO                S22028
         MVI   AVTEZERO(RWKA),ZERO      ZERO INDEX BYTE          S22028
.Z23A    ANOP                                                     M6293
FINDSCBQ EQU   * .                      ENTRY TO SET SCBAND QCB  S22025
         STH   RC,LCBTTCIN              SET IN LCB
         L     RA,AVTRNMPT              GET TNT CODE ADDRESS
         USING IEDQTNTD,RA
         BAL   RPREFIX,TNTDCODE         LINK TO IT
         USING IEDQTRM,RB
         L     RB,TRMDESTQ-1            GET QCB ADDRESS
         DROP  RB
         USING IEDQQCB,RB
         AIF   ('&GEN' EQ 'MINI').MIX0590                        S22029
         AIF   ('&GEN' EQ 'BISC').MIX0590                        S22029
         OI    LCBTSOB,LCBTSBUF .       INDICATE TSO TERM ON     S22029
*                                       THIS LINE                S22029
         TM    QCBFLAG,QCBTSSES         ARE WE CONNECTED TO A    S22029
*                                       TIME-SHARING TERMINAL    S22029
         BO    MIX5910 .                BRANCH IF YES            S22029
         NI    LCBTSOB,AVTEFF-LCBTSBUF  NO, INDICATE A TCAM      S22029
*                                       TERMINAL ON THIS LINE    S22029
MIX5910  EQU   *                                                 S22029
.MIX0590 ANOP                                                    S22029
         SR    RA,RA                    CLER WORK REGISTER
         LR    R0,RA                    CLAR WORK REGISTER
         IC    RA,QCBSCBOF              QCB OFSET TO SCB
         IC    R0,AVTSCBSZ              GET SIZE FO SCB
         MR    RA-1,R0                  GET OFFFSET TO RIGHT SCB
         AL    RA,LCBSCBDA-1            SET SCB BASE
         LR    RSCB,RA .               SET SCB ADDR             SA49233
         STCM  RA,AD,LCBSCBA .          SET SCB ADDRESS IN LCB   Y01948
         DROP  RA
         DROP  RB
         BR    RD                       RETURN
***********************************************************************
*        THE FOLLOWING ADCON IS USED TO ESTABLISH ADDRESSABILITY      *
*        TO THE FINDQCB SUBROUTINE                                    *
*                                                                     *
FQCB     DC    A(POLLRT-FINDQCB) .      FINDQCB OFFSET           S22029
*                                                                     *
***********************************************************************
         EJECT
         AIF   ('&GEN' EQ 'STSP').L71
         AIF   ('&GEN' EQ 'QTAM').C                              S22025
BSCRSP   EQU   *
*
*        THE FOLLOWING CODE HANDLES TRANSPARENT OUTPUT TO A BSC
* TERMINAL AND WACK IN RESPONSE TO TEXT FOR A TERMIBAL DEFINED AS
* BUFFERED ON THE TERMINAL MACRO.
*
         USING *,RF
         USING IEDQSCB,RSCB
         MVC   LCBLINK(1),LCBERCCW      SAVE RESPONSE INDDICATOR
         TM    SCBSTATE,SCBTRANP        TRANSPARENT
         BZ    NOTRP                    BRANCH NO
         L     RCCW,LCBCPA+52           CURRENT UNIT
         ST    RF,LCBRCB                SAVE BASE
         L     RWKA,LCBDCBPT            DCB B ASE
         USING IHADCB,RWKA
         MVI   LCBERCCW,NOPCI           ASSUJE PCI NOT USED
         TM    DCBPCI,SNDPCI            PCI ON SEND
         BZ    NOTUSED                  BRANCH IF NO PCI
         SPACE
         DROP  RWKA
         MVI   LCBERCCW,PCIOPT          SET PARAMETER FOR ROUTINE
NOTUSED  EQU   * .                                              SA44893
         BAL   RA,FINDBUFF              GET BUFFER BASE
         L     RF,LCBRCB                S RESETORE BASE
TESTLAST EQU   *
         TM    LCBCPA+28,CCWSKIP       LAST BLOCK SENT
         BZ    MOREDATA                 NO
         SPACE
         L     RCCW,LCBCPA+52           CURRETN CCW
         NI    SCBQTYPE,AVTEFF-SCBBFMM  RESET MIDDLE OF MESSGE
         MVC   CCW+9(3),LCBCPA+57 SET CURR TIC TO NEXT UNIT
         MVC   LCBCPA+13(3),LCBCPA+53   SAVE CURRENT NIT POINTER
         MVI   LCBTPCD+2,TPBUFEOT       SET TP OP CODE
         BAL   RE,DIALTEST              CHECK BSC QFLUSH       @XA08073
         B     RESETEOT .               NOT BSC DIAL SNED PRI    S21101
*                                         OR NOT BSC CONTT,    @XA08073
*                                         SEND PRI W MASTER=YES@XA08073
         SPACE 1                                                 S21101
         B     RTBUFEOT .               TREAT AS TRUE EOM        S21101
MOREDATA EQU   *
         SPACE
         LA    RA,LCBCPA+24             UNIT EXIT INDICATOR
         LR    RE,RPREFIX               GET CURRENT BUFFER ADDRESS
         SR    R0,R0                    CLEAR WORK REGISTER
         LR    RCCW,R0                  CLEAR REGISTER
         IC    R0,PRFNBUNT              NUMBER UNIT S IN BUFFER
         B     STLOOP                   ENTER LOOP
TRPLOOP  EQU   *
         L     RE,PRFTIC-IEDQPRF(,RE)   NEXT UNIT (BUFFER)
         AH    RCCW,AVTKEYLE            BUMP BY KEY LENGTH
STLOOP   EQU   *
         L     RB,PRFTIC-IEDQPRF(,RE)   NEX CCW
         LA    RB,0(,RB)                CLEAR HI ORDER BYTE
         CLR   RB,RA                    THIS THE CCW
         BE    NOMORE                   BRANCH YES
         BCT   R0,TRPLOOP               GET NEXT UNIT IN BUFFER
NOMORE   EQU   *
         STC   R0,LCBERCCW              SAVE UNIT COUNT FOR LATER
         LA    R0,PRFSUNIT-IEDQPRF(,RE) START OF UNIT
         L     RWKA,CCWADDR-1-CCW(,RE)  DATA ADDRESS
         LA    RWKA,0(,RWKA)            FOR COMPARE HALF
         SR    RWKA,R0                  PREVIOUS SENT (OR PREFIX)
         AH    RWKA,CCWCOUNT-CCW(RE)    ADD AMOUNT SENT
         LR    RC,RPREFIX               COPY HEADER BUFFER ADDR SA62329
         AR    RCCW,RWKA                TOTAL AMOUNT
         CH    RCCW,PRFSIZE             END OF BUFFER
         BL    SETOFF                   NO
         L     RC,LCBCPA+56             NEXT BUFFER ADDRESS     SA62329
         LA    RCCW,PRFSTXT-PRFSUNIT    SET OFFSET INTO NEXT RECORD
SETOFF   EQU   *
         MVC   SCBDEOB+1(3),PRFCRCD-IEDQPRF(RC) SET DISK ADDR   SA62329
         MVC   SCBDEOB(1),PRFNTXT-IEDQPRF(RC) SET DISK RECORD   SA62329
         STH   RCCW,SCBEOB              SAVE OFFSET IN TO BUFFER
         SPACE
         CLI   LCBLINK,RWACK            WACK ON A BUFFERED LINE
         BNE   GOMORE                   NO
         SPACE
         L     RCCW,LCBCPA+52           CURRENT UNIT IN BUFFER
         MVC   LCBCPA+13(3),LCBCPA+53   SAVE CURRENTC W POINTER
         MVC   CCW+9(3),LCBCPA+57       SET NEXT CCW POINTER
         B     NOTNOW                   RESET THE LINE
         SPACE 5
GOMORE   EQU   *
*        THE FOLLOWING VODE DETERMINES IF THE NEXT BLOCK TO BE
*        WRITTEN IS THE LAST MESSAGE BLOCK.  IF SO, DLE ETX IS TO
*        BE WRITTEN.  THE MAJOR DECISION IS A COMPARISON BETWEEN
*        OUPUT BOCK SIZE AND KEY LENGTH.
         LR    RE,RPREFIX               COPY BUFFER ADDRESS
         LR    RPREFIX,RC               COPY PREFIX UNIT ADDR   OX02181
         LA    RC,LCBCPA+24             SET EXIT ADDRESS
         LA    RB,1                     INITIALZIE FOR LOOP
         LH    RWKA,SCBBKFCT+1          OUTPUT BLOCK SIZE
         CH    RWKA,AVTKEYLE            COMPARE WITH KEY LENGTH
         BH    GREAT                    BRANCH IF GREATER
         SPACE
         TM    PRFSTAT1,PRFNLSTN        LAST BUFFER
         BZ    TRLOOP1                  BRANCH YES, LAST BLOCK
         SPACE
         CLI   LCBERCCW,2               TWO UNIT BUFFER         SA56617
         BH    NOTLAST                  BRANCH IF ANOTHER BLOCK SA56617
         BE    CKNXTLST                 CHK NEXT TO LAST        SA56617
         EX    RWKA,NEXTBLK             SEE IF ANOTHER BLOCK FROM
*                                         THIS UNIT
         BNL   NOTLAST                  BRANCH IF ANOTHER BLOCK
         SPACE
         TM    LCBCPA+59,2              NEXT BUFFER ABAILABLE
         BNZ   NOTLAST                  NO
         L     RA,LCBCPA+56             NEXT UNIT ADDRESS
COMTEST  EQU   *                                                SA56617
         TM    PRFSTAT1-IEDQPRF(RA),PRFNLSTN LAST UNIT
         BO    NOTLAST                  BRANCH NO
         SPACE
         SPACE
         MVI   LCBERCCW,0               INDCATE NOT END OF BUFFER
         CLI   PRFOPCDE-IEDQPRF(RA),0   ANOTHER BLOCK AFTER THIS
         BE    SETETX                   BRANCH IF LAST BLOCK
         B     NOTLAST                  SNED NEXT BLOCK
* FOLLOWINT CODE TAKES CARE OF CASE OF TWO UNIT BUFFER, PRFSIZE SA56617
* LESS THAN MULTIPLE OF KEYLENGTH, AND NEXT BUFFER IS LAST      SA56617
* CONTIANING LAST BLOCK OF MESSAGE.                             SA56617
CKNXTLST EQU   *                                                SA56617
         SR    R0,R0                    CLEAR REGISTER          SA56617
         IC    R0,LCBCPA+52             REMAINING IN UNIT       SA56617
         L     RCCW,LCBCPA+56           ADDR OF NEXT UNIT       SA65359
         AH    R0,CCWCOUNT              REMAINING DATA          SA56617
         CH    R0,SCBEOBSZ              MORE THAN 1 BLOCK LEFT  SA56617
*                                       IN THE MESSAGE          SA56617
         BNL   NOTLAST                  BRANCH IF ANOTHER BLK   SA56617
         TM    CCW+11,2                 NEXT BUFFER AVIALABLE   SA56617
         BNZ   NOTLAST                  BRANCH NO               SA56617
         L     RA,CCW+8                 NEXT BUFFER ADDRESS     SA56617
         B     COMTEST                  COMMON CODE             SA56617
         SPACE
TRLOOP1  EQU   *
         L     RE,PRFTIC-IEDQPRF(,RE)   NEXT UNIT
         LA    RE,0(,RE)                CLEAR HI ORDER BYTE
         CLR   RE,RC                    THIS THE CCW
         BE    FOUNDIT                  YES
         LA    RB,1(,RB)                BUMP UNIT COUNT
         B     TRLOOP1                  GET NEXT  UNIT
         SPACE
FOUNDIT  EQU   *
         STC   RB,LCBERCCW              SAVE FOR LATER TEST
         SR    RE,RE                    CLEAR WORK REGISTER
         IC    RE,LCBCPA+52             REMANING COUNT
         CLR   RE,RWKA                  GREATER
         BH    NOTLAST                  BRANCH HIGH            @OZ08362
         EX    RB,CLIUNT                THIS LAST UNIT
         BE    SETETX                   SEND LAST BLOCK
TRYNEXT  EQU   *
         LA    RB,1(,RB)                BUMP UNIT COUNT
         EX    RB,CLIUNT                LAST UN IT
         BNE   NOTLAST                  NO
         L     RA,LCBCPA+56             NEXT UNIT
         CLI   PRFOPCDE-IEDQPRF(RA),0   MORE DATA IN NEXT UNIT
         BE    SETETX                   YES, NEXT BLOCK IS LAST
         B     NOTLAST                  NEXT BLOCK IS NOT LAST
         SPACE 3
*        TO HERE WHEN BLOCK SIZE GREATER THAN KEYLENGH
GREAT    EQU   *
         IC    RB,LCBERCCW              UNIT COUNT IF BUFFER
         TM    LCBCPA+59,X'02'          NEXT  UNIT AVAILABLE
         BZ    ITSOK                    YES
         TM    PRFSTAT1,PRFNLSTN        LAST BUFFER
         BO    NOTLAST                  NO
         B     SETETX                   BRANCH FOR LAST BLOCK
         SPACE
ITSOK    EQU   *
         LA    RE,LCBCPA+56-(PRFTIC-IEDQPRF) ADJUST FOR COMMON CODE
         BCT   RB,NEXTUNT               BRANCH NOT END OF UNIT
         L     RPREFIX,LCBCPA+56        NEXT UNIT ADDRESSS
         IC    RB,PRFNBUNT              GET NUMBER OF UNITS
NEXTUNT  EQU   *
         L     RE,PRFTIC-IEDQPRF(,RE)   NEXT UNIT
GREATER  EQU   *
         TM    PRFTIC-IEDQPRF(RE),X'20' THIS UNIT SHOULD TIC TO
*                                         CH ANNEL PROGRAN AREA
         BO    THISUNIT                 BRANCH YES
         SPACE
         BCT   RB,NEXTUNT               GET NEXT UNIT
         TM    PRFTIC+3-IEDQPRF(RE),X'02'   NEXT BUFFER ABAILBLE
         BNZ   NOTLAST                  BRANCH NO
         L     RPREFIX,PRFTIC-IEDQPRF(,RE)     NEXT BUFFER
         IC    RB,PRFNBUNT              NUMBER UNIT S IN NEX BUFFER
         B     NEXTUNT                  LOOK AT NEXT BUFFER
         SPACE
THISUNIT EQU   *
         TM    PRFSTAT1,PRFNLSTN        LAST BUFFER
         BO    NOTLAST                  BRANCH NO
         BCT   RB,NOTLAST               BRANCH NOT END OF BUFFER
         CLI   PRFOPCDE-IEDQPRF(RE),0   WILL THERE  BE ANOTHER
*                                         BLOCK AFTER THIS ONE
         BNE   NOTLAST                  BRANCH IF ANOTHER BLOCK
SETETX   EQU   *
         L     RA,LCBCPA+24             DLEETB CCW
         AH    RA,H3                    BUMP ADDRESS TO DLEETX
         ST    RA,LCBCPA+24             NEW CCW SET
         OI    LCBCPA+28,CCWSKIP        INDICATE LAST BLOCK SENT
NOTLAST  EQU   *
*        THE FOLLOWING CODE SETS UP THE CCW'S IN BUFFERS TO WRITE
*        THE NEXT BLOCK
         SR    RB,RB                    CLEAR WORK REGISTER
         LR    R0,RB                    LCEAR WORK REGISTER
         L     RCCW,LCBCPA+52           CURRENT UNIT
         IC    R0,CCWCOUNT+1            ORIGIANL COUNT
         AL    R0,CCWADDR-1             UPDATE DATA ADDRESS
         ST    R0,CCWADDR-1             NEW CCW SET
         IC    RB,LCBCPA+52             REMAINING COUNT IN CURRENT
         LTR   RB,RB                    IS REMAINING CNT ZERO  @XA07517
         BZ    SETCCWCD                 BRANCH-YES GET NEXT    @XA07517
         CH    RWKA,AVTKEYLE            COMPARE BLOCK WITH KEY SIZE
         BNH   SAME                     LOW OR EQUAL
         SPACE
*        INSERT CODE IF NEXT BLOCK NOT AVAILABLE
NEXTUNIT EQU   *
         STC   RB,CCWCOUNT+1            NEW DATA COUNT
         LR    RA,RCCW                  CURRENT UNIT ADDRESS    SA65359
         TM    LCBCPA+28,CCWSKIP        LAST BLOCK              SA65359
         BNO   SETCCWCD                 BR NO, CHAIN DATA       SA65359
         TM    LCBCPA+59,X'02'          NEXT UNIT AVAILABLE     SA65359
         BO    SENDIT                   BR NO, LAST BLOCK       SA65359
SETCCWCD EQU   *                                                SA65359
         OI    CCWFLAGS,CCWCD           SET CHAIN DATA FLAG
         L     RA,LCBCPA+56             NEXT UNIT IN CHAIN
         ST    RA,CCWOPCDE+8            SET TIC ADDRESS FROM CURRENT
*                                         TO NEXT
         MVI   CCWOPCDE+8,CCWTIC        TIC OP CODE
         LTR   RB,RB                    WE AT END OF UNIT
         BNZ   MORED                    BRANCH NO
         MVC   LCBCPA+53(3),LCBCPA+57   NEXT IS NOW CURRENT
MORED    EQU   *
         MVC   LCBCPA+49(3),LCBCPA+53   SET TIC ADDRESS FROM DLESTX
         TM    CCWOPCDE+11,X'02'        IS THERE NEXT BUFFER
         BZ    TRENTER                  YES
*        NEXT BLOCK NOT AVAILABLE, TREAT AS CHAN PROG CHECK
         LA    RWKA,2                   CHANNEL PROGRAM CHECK
         ST    RWKA,LCBCPA+56           SET AS NEXT UNIT ADDRESS
         B     PCSTART                  START ON WRITE SYN'S
         SPACE
*        IF NEXT BLOCK NOT AVAILABLE,RESTART IS MADE ON WRITE SYNS
* LOOP.  PCI WILL UPDTE NEXT CCW POINTER (LCBCPA+56) AND SET 1 BYTE
* REMAING COUNT IN LCBCPA+52.  IF THERE IS A REMAINING COUNT OF 0
* IN CURRENT CCW BUT THE NEXT CCW IS AVAILABLE, PCI WILL SET UP
* LCBCPA+52 (WHICH BECOMES NEW CURRENT UNIT) AND LCBCPA+56 WHICH
* WILL BE THE SUBSEQUENT 1ST CCW OF FUTURE BLOCK.  IF REMAINING
* COUNT IN CURRENTCCW IS 0 AND THE NEXT UNIT IS NOT AVAILABLE, PCI
* WILL SET UP LCBCPA+48 (TIC FROM DLE STX) IN ADDITION TO LCBCPA+56
* AND LCBCPA+52.
NOTHIS   EQU   *
         L     RA,PRFTIC-IEDQPRF(,RA)   NEXT UNIT
TRENTER  EQU   *
         TM    PRFTIC-IEDQPRF(RA),X'20' NEXT ENDING UIT
         BO    THISONE                  THS IS IT
         TM    PRFTIC+3-IEDQPRF(RA),X'02' NEXT BUFFER AVAILABLE
         BNZ   PCSTART                  BRANCH NO
         B     NOTHIS                   GET NEXT UNIT
THISONE  EQU   *
         ST    RA,LCBCPA+52             NEW CURRENT
         IC    RB,PRFOPCDE-IEDQPRF(,RA) REMAINING COUNT IN NEXT
         STC   RB,LCBCPA+52             SAVE FOR NEXT TIME ARAOUND
RESTR    EQU   *
         MVC   LCBCPA+57(3),PRFTIC+1-IEDQPRF(RA)  ADDRESS OF NEXT UNIT
SENDLAST EQU   *
         TM    LCBCPA+28,CCWSKIP        LAST BLOCK              SA65359
         BO    NOCHANGE                 ETX SETUP ALREADY DONE @OZ08362
         TM    LCBCPA+59,X'02'          NEXT UNIT AVAILABLE?   @OZ08362
         BZ    NOCHANGE                 YES- THIS IS NOT LAST  @OZ08362
         LR    RCCW,RA                  SET UNIT ADDR          @OZ08362
         MVI   LCBERCCW,PCIOPT          DON'T POST BUFFERS     @OZ08362
         BAL   RA,FINDBUFF              GET BUFFER PREFIX BASE @OZ08362
         L     RF,LCBRCB                RESTORE REGISTER       @OZ08362
         LR    RA,RCCW                  RESET CURRENT UNIT ADDR@OZ08362
         TM    PRFSTAT1,PRFNLSTN        MARKED LAST?           @OZ08362
         BO    NOCHANGE                 NO-THIS IS NOT LAST    @OZ08362
         SR    RB,RB                    CLEAR FOR INSERT       @OZ08362
         IC    RB,LCBCPA+52             GET REMAINING COUNT    @OZ08362
         LTR   RB,RB                    IS IT ZERO             @OZ08362
         BNZ   NOCHANGE                 BRANCH NO- NOT LAST    @OZ08362
         L     RB,LCBCPA+24             GET ADDRESS FOR ETB    @OZ08362
         AH    RB,H3                    ADD OFFSET TO ETX      @OZ08362
         ST    RB,LCBCPA+24             AND REPLACE IT         @OZ08362
         OI    LCBCPA+28,CCWSKIP        SHOW ETX IS SET UP     @OZ08362
NOCHANGE EQU   *                                               @OY13667
         NI    CCWFLAGS-CCW(RA),AVTEFF-CCWCD RESET CHAIN DATA   SA65359
         OI    CCWFLAGS-CCW(RA),CCWCC   SET COMMAND CHAINING    SA65359
         LA    RB,LCBCPA+24             SET TIC TO CPA
         ST    RB,PRFTIC-IEDQPRF(,RA)   SET IN CCW
         MVI   PRFOPCDE-IEDQPRF(RA),CCWWRITE    >ET COMMAND CODE
         MVI   PRFTIC-IEDQPRF(RA),CCWTIC    SET TIC COMMAND
         LA    RWKA,LCBCPA+40           RESTART ADDRESS
         B     RESTCOM                  USE COMMON EXIT
         SPACE
SAME     EQU   *
         LR    RA,RCCW                  CURRENT UNIT ADDRESS
         CLR   RB,RWKA                  REMAINING GREATER THAN BLOCK
         BNL   GOSAME .              YES, UNIT CONTAINS NEXT BLKSA44894
         SPACE
         TM    LCBCPA+28,CCWSKIP        LAST BLOCK
         BZ    NEXTUNIT                 NO
         SPACE
         CLC   LCBERCCW(1),PRFNBUNT     LAST UNIT OF LAST BUFFER
         BNE   NEXTUNIT                 NO, IT'S NEXT TO LST
         STC   RB,CCWCOUNT+1            SET COUNT FOR LAST UNIT
         TM    SCBBSCFM,SCBNPDTR        IS PADDING REQUESTED   @YA09751
         BO    SENDIT                   NO USE REAL DATA COUNT @YA09751
         STC   RWKA,CCWCOUNT+1          USE DATA COUNT + PADS  @YA09751
         MVI   LCBCPA+52,AVTEZERO       CLEAR REMAINING COUNT  @YA09751
         B     SENDIT                   BRANCH IF YES
GOSAME   EQU   *
         SR    RB,RWKA                  GET DIFFERENCE
         STC   RB,LCBCPA+52             SAVE REMAINING COUNT
         STC   RWKA,CCWCOUNT+1-CCW(,RA) SET NEW COUNT
         LA    RC,LCBCPA+24             CCW EXIT ADDRESS
         L     RB,PRFTIC-IEDQPRF(,RA)   NEXT CCW
         LA    RB,0(,RB)                CLEAR HI BYTE FOR COMPARE
         CLR   RB,RC                    ALREADY WRITE FROM THIS CCW
         BNE   RESTR                    NO, SAVE ADDRESSS OF NEXT
SENDIT   EQU   *
         ST    RA,LCBCPA+48             SET UP TIC ADDRESS
         MVI   LCBCPA+48,CCWTIC         SET COMMAND CODE
         B     SENDLAST                 GO EXIT
         SPACE
         SPACE
NOTRP    EQU   *
         L     RCCW,LCBCPA+12           CURRENT CCW
         CLI   CCWCOUNT+1,0             DID CHAN PROG CHECK OCCUR
         BNE   UPDTFLD                  BRANCH IF NO
         TM    CCW+11,X'02'             NEXT BUFFER AVAILABLE
         BNZ   PCSTART                  BRANCH IF NEXT NOT AVAIL
         MVC   LCBCPA+13(3),CCW+9 .     SET UP NEW START CCW     S21101
         L     RCCW,8(,RCCW)            BUMMP TO NEXT BUFFER
         MVC   LCBRECAD,PRFCRCD-IEDQPRF(RCCW) SET QUEUE ADDRESS
         MVC   LCBNTXT,PRFNTXT-IEDQPRF(RCCW) SET DIAK RECORD
         LA    R0,PRFSTXT-PRFSUNIT      SAVE FOR LATER
         STH   R0,LCBRECOF              SET IN LCB
UPDTFLD  EQU   *
         MVC   SCBDEOB+1(3),LCBRECAD    MOVE QUEUE ADDRESS
         MVC   SCBEOB(2),LCBRECOF       SET OFFSET INTO RECORD
         MVC   SCBDEOB(1),LCBNTXT       SET DISK RECORD
         BAL   RE,DIALTEST              CHECK BSC QFLUSH       @XA08073
         B     NODIAL .                  BRANCH IF NOT DIAL SEND S21101
*                                         OR NOT BSC CONTT,    @XA08073
*                                         SEND PRI W MASTER=YES@XA08073
          SPACE 1                                                S21101
         BAL   RC,ONLYEOT .             IF ONLY EOT IS LEFT TREATS21101
*                                          TRUE END OF MESSAGE INS21101
*                                          ORDER TO FLUSH QUEUE  S21101
         B     RTBUFEOT .               BRANCH ONLY EOT IS LEFT  S21101
          SPACE 1                                                S21101
NODIAL   EQU    *                                                S21101
         CLI   LCBLINK,RWACK            WACK ON BUFFERED LINE
         BNE   EXIT3                    BRAVNCH NO TO RESTART
         SPACE
         BAL   RC,ONLYEOT .             CHECK IF WE ARE AT END   S21101
*                                          OF MESSAGE            S21101
         B     EXIT3 .                  BEANCH IF ONLY EOT REMINSS21101
          SPACE 1                                                S21101
NOTNOW   EQU   *
         MVI   LCBERCCW,NOPCI           SET PARAMETER
         ST    RF,LCBRCB                SAVE BASE
         BAL   RA,FINDBUFF              POST PREVIOUS BUFFERS
         L     RF,LCBRCB                RESTORE BASE
         OI    PRFSTAT1,PRFITCPN .      NOT REAL END OF MSG      X01004
FSELECT  EQU   *                                                 S22025
         STCM  RPREFIX,AD,LCBLSPCI .    SET LAST RECEIVED BUFFER Y01948
         MVI   LCBTPCD+2,TPBUFEOT       SET TP OP CODE
         B     RESETEOT                 WRITE EOT
NEXTBLK  CLI   LCBCPA+52,0              EXECUTED INSTRUCTION
CLIUNT   EQU   *
         CLI   PRFNBUNT,0
         SPACE 10                                                S21101
DIALTEST EQU   *                                                 S21101
*                                                                S21101
*        SUBROUTINE TO DETERMINE IS LINE IS BSC DIAL WITH SEND   S21101
*        PRIORITY, OR BSC CONTENTION, SEND PRIORITY, AND MASTER@XA08073
*        =YES SPECIFIED.                                       @XA08073
*                                                              @XA08073
         CLI   LCBRSPRI,SENDPRI         SEND PRIORITY          @XA08073
         BNER  RE                       RETURN IF NO           @XA08073
         SPACE 1                                               @XA08073
         OI    SCBBSCFM,SCBNOEOT        SET FLAG FOR SCHEDULER @XA08073
*                                         AND I/O GEN TO NOT   @XA08073
*                                         RESET ACK COUNTER    @XA08073
*                                         AND TO PROCEED WITH  @XA08073
*                                         SENDING (TENATIVELY) @XA08073
         SPACE 1                                               @XA08073
         TM    SCBBSCFM,SCBMLMTN        WAS MSG LIMIT REACHED  @OY13632
         BO    NOTMSTR                  BRANCH-YES SEND EOT    @OY13632
         SPACE 1                                               @XA08073
         BAL   RD,DCTBASE               COMPUTE DCT            @XA08073
         SPACE 1                                               @XA08073
         TM    TWO(RA),CCONTENT         CONTENTION             @XA08073
         BO    4(RE)                    YES, RETURN AT + 4     @XA08073
         SPACE 1                                               @XA08073
NOTMSTR  EQU   *                                               @XA08073
         NI    SCBBSCFM,AVTEFF-SCBNOEOT RESET EOT FLAG         @XA08073
         SPACE 1                                               @XA08073
         BR    RE                       RETURN                 @XA08073
         EJECT
.L71     ANOP
         AIF   ('&GEN' EQ 'BISC').L70
         USING *,RF                                                 TSO
DYNC     EQU   *                                                    TSO
         CLI   CCWOPCDE,CCWENAB         THIS ENABEL INTERRUPT       TSO
         BE    CHGPREP                  YES. CHANGE PREP TO READ    TSO
         SPACE
DYN1     EQU   *                                                    TSO
         TM    LCBSENS0,TIMEOUT+IR      TIME OUT OR INTERV REQ.     TSO
         BM    S1050                      2703        2702          TSO
S2741    EQU   *                                                  TSO
         SPACE
TSO98    EQU   * .                                                  TSO
         MVI   LCBTPCD+10,0 .           ZERO SPECIAL FLAG           TSO
         B     TSO2 .                   PROCESS MESSAGE             TSO
         SPACE
S1050    EQU   *                                                    TSO
         CLI   LCBTPCD+11,X'16'         CIRCLE D RCVD?            TSO
         BE    S2741                    YES. MUST BE 2741         TSO
         NI    LCBTSOB,X'FF'-LCB2741N . IS NOT A 2741
         NI    LCBSTAT1,X'FF'-LCBCONT   CLR CONTINUE REQ.           TSO
         ST    R15,LCBERCCW+4    .     SAVE BASE                SA51097
         L     12,AVTKA02               ADR OF ACTIVATE (IOGEN)     TSO
         LA    RAVT,AVTSAVE2            AVT BASE FOR KA             TSO
         BALR  5,12                                                 TSO
         L     R15,LCBERCCW+4  .       RESTORE BASE             SA51097
         LA    RBASE,4095(,R15)                                   TSO
         LA    RBASE,1(,RBASE)                                    TSO
         SH    RAVT,AVTBACK             RESET AVT BASE              TSO
         MVC   LCBCPA+48(4),LCBCPA+56   OVERLAY W/WRT PADS          TSO
         LA    RC,LCBCPA+16             ADR FOR 1050 START I/O      TSO
         ST    RC,LCBCPA+56             BUILD TIC TO IT             TSO
         MVI   LCBCPA+56,CCWTIC         SET TIC                     TSO
         LA    RC,LCBCPA+48             NEW SIO ADR                 TSO
NEWSTART EQU   *                                                    TSO
         MVI   LCBTPCD+10,0             CLEAR CHECK INDICATOR       TSO
         ST    RC,LCBSTART-1                                        TSO
         B     RESTART                                              TSO
         SPACE
CHGPREP  EQU   *                                                    TSO
         OI    LCBTSTSW,X'80'           SET 'CONNECTED' BIT         TSO
         OI    LCBTSOB,LCB2741N .       ASSUME 2741                 TSO
         LA    RC,LCBTPCD+11            ADDR FOR READ               TSO
         ST    RC,LCBCPA+40             CHANGE IT                   TSO
         MVI   LCBCPA+40,CCWREAD        SET CCW = READ              TSO
         MVI   LCBCPA+44,X'80' .        DATA CHAIN READ             TSO
         L     RC,LCBCPA+48             SAVE WRT PADS CMD           TSO
         MVC   LCBCPA+48(4),LCBCPA+56   MOVE IN 'TIC BFR'           TSO
         ST    RC,LCBCPA+56             SAVE WRT PADS
         LA    RCCW,LCBCPA+40           NEW SIO ADDR                TSO
         ST    RCCW,LCBSTART-1                                      TSO
         B     RESTART                                              TSO
         EJECT
.C       ANOP                                                    S22025
TSOCHK   EQU   *
RWORK    EQU   RB                                                   TSO
         SPACE
         USING *,RA
         TM    LCBSENS0,X'40'           INTERVENTION REQUIRED?      TSO
         BZ    ERP                      NO..ERP CAN HANDLE          TSO
         AIF   ('&GEN' EQ 'QTAM').C1                             S22025
         LA    RF,OPCHK1
         LA    RPREFIX,LCBERB .         SET TO POST ERB TO AYF     TSO
.C1      ANOP                                                    S22025
         TM    LCBSTAT2,LCBMSGNN                                    TSO
         BNO   CKTXT .                  BRANCH IF NOT A MSGGEN   S22025
         AIF   ('&GEN' NE 'QTAM').C2 .                           S22025
         B     ERP .                    GO TO ERP                S22025
         AIF   ('&GEN' EQ 'QTAM').CC .                           S22025
.C2      ANOP .                                                  S22025
         TM    LCBTSOB,LCBTSBUF .       IS THIS A TSO LINE ?     S22025
         BNO   ERP .                    NOT TSO-TCAM TREATS AS   S22025
*                                            ERROR               S22025
         B     CKATN .                  TSO-CHECK ATTN STATUS    S22025
.CC      ANOP
CKTXT    LA    RCCW,0(,RCCW) .          GET ADDRESS OF END CCW   S22025
         LA    RWORK,LCBCPA             START OF CH PGM AREA
         SR    RWORK,RCCW
         BP    ITEXT
         SR    RB,RB .                  CLEAR                       TSO
         L     RC,LCBDCBPT .            DCB ADDRESS                 TSO
         USING IHADCB,RC  .                                         TSO
         IC    RB,DCBEIOBX .            LCB SIZE                    TSO
         DROP  RC  .                                                TSO
         LA    RB,0(RLCB,RB) .          LCB ADDRESS                 TSO
         SR    RB,RCCW .                IN CHANNEL PROGRAM AREA     TSO
         BNP   ITEXT .                  NOT IN CHANNEL PROGRAM   S22025
         AIF   ('&GEN' NE 'QTAM').C9 .                           S22025
         B     ERP .                    SCHEDULE ERP             S22025
         AIF   ('&GEN' EQ 'QTAM').C4 .                           S22025
.C9      ANOP .                                                  S22025
         TM    LCBTSOB,LCBTSBUF .       IS THIS A TSO LINE ?     S22025
         BNO   ERP .                    NOT TSO - TCAM TREATS AS S22025
*                                            ERROR               S22025
         BO    TWXCHK1 .                CHECK FOR POSSIBLE TWX   S22025
*                                       ATTENTION ON READ TSO    S22025
.C3      ANOP                                                    S22025
ITEXT    EQU   *
         TM    LCBTSOB,LCBTSBUF .       IS THIS A TSO LINE ?     S22025
         BNO   TCAMATN .                BRANCH = NO              S22025
         AIF   ('&GEN' EQ 'QTAM').C4                             S22025
         TM    LCBSTAT1,LCBRECVN .      ARE WE IN RECEIVE MODE      TSO
         BO    TWXCHK2 .          BR ON YES TO CHECK FOR TWX        TSO
ITEXT1   EQU   *
         L     RPREFIX,LCBLSPCI-1 .     POST BUFFER TO AYF         TSO
         MVC   PRFSHDR-IEDQPRF(8,RPREFIX),0(RPREFIX) SAVE COMMANDS22029
CKATN    EQU   *
         L     RB,AVTTSOPT .            ADDRESS OF TSO WORK AREA   TSO
         L     RF,TSIHALT-IEDQTSI(RB) . ADDRESS OF AYF             TSO
         B     TSOCOM .                 USE COMMON CODE             TSO
.C4      ANOP                                                    S22025
         AIF   ('&GEN' NE 'QTAM').C5 .                           S22025
ITEXT    EQU   * .                                               S22025
.C5      ANOP .                                                  S22025
TCAMATN  EQU   * .                                               S22025
         SPACE 1
         TM    LCBSTAT1,LCBRECVN .      LINE RECEIVING ?         S22025
         BO    ERP .                    BRANCH IF YES            S22025
         BAL   RD,DCTBASE .             GO FIND DCT              S22025
         USING *,RD .                     ADDRESSABILITY         S22025
         TM    1(RA),ATTN .             IS ATTENTION ALLOWED?    S22025
         BZ    ERP .                    BRACNH = NO              S22025
         LR    RPREFIX,RLCB .           SET TO POST LCB TO       S22025
*                                            STOPLINE            S22025
         MVI   PRFPRI,PRILCBAT .        SET PRIORITY             S22025
         L     RF,AVTHK .               GET ROUTINE'S ADDRESS    S22025
         AIF   ('&GEN' EQ 'QTAM').C6                             S22025
         B     TSOCOM1                                           S22025
         DROP  RD                                                S22025
         USING TSOCHK,RA
*
TWXCHK1  EQU   *
*
         CLI   0(RCCW),X'0A' .  IS THE INT. CCW AN INH. READ        TSO
         BNE   ERP .              BR IF NO, TREAT AS ERROR          TSO
         LA    RC,LCBCPA+24 .   GET ADDR OF READ RESP. CCW          TSO
         CR    RC,RCCW .        WAS INT ON READ RESP.               TSO
         BE    ITEXT .                  BR YES FOR TWX ATTN ON READ TSO
         B     CHK10501 NO, CHECK FOR 1050                         TSO
*
TWXCHK2  EQU   *
         L     RC,AVTSAVEX+UCBOFFST     UCB ADDRESS            @ZO2X6I0
         CLI   16(RC),X'51' .           CHK UCB MODEL CODE FOR TWX  TSO
         BNE   CHK10502 BR IF NOT, CHECK 1050                      TSO
         TM    19(RC),X'50' .CHECK UCB UNIT TYPE FOR TEL. ADPT./2   TSO
         BNO   CHK10502 BR IF NO, CHECK 1050                       TSO
         TM    19(RC),X'A0' IS IT ANYTHING BUT TEL.ADPT.-2          TSO
         BC    5,CHK10502 BR IF YES  CHECK 1050                    TSO
         B     ITEXT1 .     WE HAVE TWX ATTN ON READ TEXT           TSO
*
CHK10501 EQU   *
         LA    RC,LCBCPA+32 GET ADDR OF POSSIBLE 1050 RD. RESP. CCW TSO
         CR    RCCW,RC WAS INT. ON RD. RESP.                        TSO
         BE    ITEXT YES,ATTN ON NULL LINE,TREAT AS TEXT            TSO
         B     ERP NO, ATTN ON READ RESP, TREAT AS ERROR            TSO
CHK10502 EQU   *
         TM    19(RC),X'10' IS IT TERMINAL ADPTER-TYPE 1            TSO
         BZ    ERP  BR IF NO                                        TSO
         TM    19(RC),X'E0' IS IT ANYTHING BUT TERM. ADPT.-TYPE 1   TSO
         BC    5,ERP BR IF YES                                      TSO
         TM    LCBTSOB,LCB2741N IS IT 2741                          TSO
         BZ    ITEXT1 BR IF NO, MUST BE 1050,TREAT AS ATTN ON RD TEXT
         B     ERP GO TO ERP FOR 2741                               TSO
LCBTOATN EQU   *                                                    TSO
         OI    SCBERR3,SCBATTN                                      TSO
         MVI   LCBPRI,PRILNCL                                       TSO
         LR    RPREFIX,RLCB                                         TSO
         L     RF,AVTTSOPT .           GET ADDRESS OF TSINPUT QCBS22029
         LA    RF,0(RF)                 CLEAR HIGH ORDER BYTE  @OX14796
         LTR   RF,RF                    CHECK FOR NO TSO       @OX14796
         BZ    REMO                     BRANCH IF NO TSO       @OX14796
         TM    LCBTSOB,LCBTSBUF         TSO CHECK              @OX14796
         BZ    REMO                     BRANCH NO TSO          @OX14796
         L     RF,TSIATTEN-IEDQTSI(,RF) GET ADDRESS OF ATTENTION S22029
TSOCOM   EQU   * .                                                  TSO
         MVI   PRFPRI,PRIRCQCB .        SET PRIORITY
.C6      ANOP                                                    S22025
TSOCOM1  LA    RC,FREERQE .                                      S22025
         B     ENQUEUE .                PLACE ELEMENT ON READY Q    TSO
OPCHK1   EQU   *
         USING *,RF
         MVI   LCBTPCD+11,0 .           CLEAR OPEN CHECK FLAG       TSO
         AIF   ('&GEN' EQ 'QTAM').C7   .                         S22025
         SPACE 1                                                SA62379
        TM    LCBSTAT2,LCBMSGNN .      MESSAGE GEN                 TSO
         BZ    NOATN .                  BRANCH NO                  TSO
         TM    LCBCSW+4,X2F   .         ERROR STATUS               TSO
         BNZ   ERBPOST .                BRANCH YES                 TSO
         TM    LCBSENS0,IR+TIMEOUT .    HAS USER HUNG UP           TSO
        BNZ   HANG .                   BRANCH YES
         L     RA,TSOCHKAD .            SET BASE
         USING TSOCHK,RA
         B     LCBTOATN .               POST LCB TO ATTENTION       TSO
         DROP  RA
NOATN    EQU   *
         TM    LCBCSW+4,X2F             SERIOUS ERRORS              TSO
         BNZ   HANG                     GO TO HANG-UP
         TM    LCBSENS0,IR+TIMEOUT      HUNG UP
         BNZ   HANG                     GO
         SPACE
         TM    LCBTSOB,LCBPREP
         BO    RTPREP
         OI    SCBERR3,SCBATTN          SET ATTENTION BIT           TSO
         OI    LCBCHAIN,LCBNORTY        DO NOT RETRY           @OX12511
         B     RESETSO .                                         S22025
.C7      ANOP                                                    S22025
TCAMATN1 TM    LCBSENS0,IR+TIMEOUT .    HAS STATION HUNG UP ?    S22025
         BZ    BITON                    BRANCH IF NO             S22025
         MVI   LCBECBCC,X7F             RESET ECB COMPLETION CD  S22025
         MVC   LCBCSW(7),LCBCSWSV       RESTORE CSW SAVED IN     S22025
*                                       STOPLINE                 S22025
         XC    LCBCSWSV(7),LCBCSWSV     CLEAR FIELD              S22025
         B     ERP                      HANDLE INTERVENTION REQ  S22025
BITON    EQU   *                                                 S22025
         OI    SCBERR3,SCBATTN .        NO, SET ATTENTION BIT    S22025
         MVI   LCBCHAIN,LCBNORTY                                 S22025
         SPACE
RESETSO  EQU   *
         MVI   LCBTPCD+11,0             CLR OPEN LINE CHK INDIC     TSO
         MVC   LCBCSW(7),LCBCSWSV
         AIF   ('&GEN' EQ 'QTAM').C8 .                           S22025
         XC    LCBCSWSV(7),LCBCSWSV     CLEAR
         NC    LCBLSPCI(2),LCBLSPCI .   MAKE SURE                   TSO
         BZ    CTLNOBUF
.C8      ANOP .                                                  S22025
         MVI   LCBECBCC,PERMERR .       SET PERMANENT ERROR
         B     TSO2 .                   POST BUFFER TO MH
         AIF   ('&GEN' EQ 'QTAM').L70                            S22025
CTLNOBUF EQU   *
         TM    LCBSTAT2,LCBMSGNN        WAS IT MSGGE?"
         BO    ERBPOST
         L     RA,TSOCHKAD .            ESTABLISH ADDRESSABILITY S22026
         USING TSOCHK,RA .                                       S22026
         B     LCBTOATN .               POST LCB TO ATTN            TSO
         DROP  RA .                                              S22026
*  ASSUME USER HAS HUNG UP (DISCONNTCTED)
HANG     EQU   *
         L     RSCB,LCBSCBA-1
         OI    SCBERR3,SCBTMINN         SET PERMANENT ERROR    @OZ30260
         TM    LCBSTAT2,LCBMSGNN .      MESSAGE GEN                 TSO
         BO    NOBUF .                   BRANCH YES                 TSO
         SPACE
         NC    LCBLSPCI(2),LCBLSPCI .   ANY BUFFERS ASSIGNED
         BNZ   TSTXTER
         SPACE
NOBUF    EQU   *
*  NO BUFFERS TO PASS SO POST LCB TO HANGUP
         L     RWORK,AVTTSOPT
         LA    RWORK,0(RWORK)           CLEAR HIGH ORDER BYTE  @OX14796
         LTR   RWORK,RWORK              CHECK FOR NO TSO       @OX14796
         BZ    REMO                     BRANCH IF NO TSO       @OX14796
         TM    LCBTSOB,LCBTSBUF         TSO CHECK              @OX14796
         BZ    REMO                     BRANCH NO TSO          @OX14796
         USING IEDQTSI,RWORK
         L     RF,TSIHANG .             ADDRESS OF HANGUP ROUTINE   TSO
         DROP  RWORK
         LR    RPREFIX,RLCB             ELEMENT TO PASS
         BAL   RC,ENQUEUE
         B     FREERQE
         SPACE
TSTXTER  EQU   *
         TM    LCBSTAT1,LCBSENDN        SENDING
         BO    RESETSO .                                            TSO
*  RECEIVING. MAKE PERM ERROR ON FIRST BUFFER
TSTXTRCV EQU   *
         L     RCCW,LCBLSPCI-1
         LH    RPREFIX,6(,RCCW)         ORIG COUNT
         STH   RPREFIX,LCBCSW+5
         MVI   LCBECBCC,X'41'
         LA    RCCW,8(,RCCW)
         STCM  RCCW,AD,LCBCSW .         SET CSW = ADDRESS OF 1ST Y01948
*                                       BUFFER + 8.              Y01948
         XC    LCBCSWSV(7),LCBCSWSV
         MVI   LCBTPCD+11,0
         B     TSO2
*  SEND MODE. TREAT AS FOR OUTPUT ATTN EXCEPT ATTN BIT NOT SET
         EJECT
.L70     ANOP
         AIF   ('&GEN' EQ 'MINI').LL4A
SOURCER  EQU   *                                                 S99228
         AIF   ('&GEN' EQ 'QTAM').LL4F                          SA65397
* THIS SUBROUTINE CALCULATES TRANSMISSION SOURCES OF MESSAGES    S99228
* RECEIVED UNDER GENERAL POLL                                    S99228
         USING *,RF                                              S99228
         SR    RB,RB                    CLEAR WORK REGISTER      S99228
         USING IHADCB,RA                                         S99228
         L     RA,LCBDCBPT              LOAD INVLIST POINTER     S99228
         IC    RB,LCBUCBX               LOAD INVLIST INDEX       S99228
         SLL   RB,TWO                   MULTIPLY POINTER BY 4    S99228
         L     RC,DCBINVLI(RB)          LOAD ADDR INVLIST C WORD S99228
         LR    RPREFIX,RWKA             LOAD BUFFER ADDRESS      S99228
         SR    RB,RB                    CLEAR IDLES REGISTER     S99228
         IC    RB,LCBISZE               INSERT IDLES COUNT       S99228
         TM    LCBERCCW+ONE,IN          LINE CONTROL IN?         S99228
         BO    LCPRES                   BRANCH YES               S99228
         BCTR  RB,R0                    SET TO POINT AT LC CHAR  S99228
LCPRES   EQU   *                                                 S99228
         LA    RE,PRFSHDR(RB)           LOAD DATA ADDRESS        S99228
         AIF   ('&GEN' EQ 'STSP').LL4C                           S99228
         TM    LCBSTAT2,LCBSYNC         BISYNC LINE?             S99228
         BZ    REGMSG                   NO, SKIP SOH%R SEARCH    S99228
         L     RB,DCBSCTAD-ONE          LOAD ADDR SPEC CHARS TBL S99228
         DROP  RA                                                S99228
         SR    RA,RA                    CLEAR OFFSET REGISTER    S99228
         IC    RA,RSOHCH(R0,RB)         INSERT SOH%R OFFSET      S99228
         LA    RB,ONE(RA,RB)            LOAD ADDR SOH%R CHARS    S99228
         CLC   ZERO(ONE,RB),ZERO(RE)    SOH%R MESSAGE?           S99228
         BNE   USUMSG                   BRANCH NO                S99228
         LA    RE,THREE(R0,RE)          BYPASS SOH%R STX CHARS   S99228
USUMSG   EQU   *                                                 S99228
         LA    RE,ONE(R0,RE)            POINT TO CU ENTRY        S99228
REGMSG   EQU   *                                                 S99228
.LL4C    ANOP                                                    S99228
         LR    R0,RC                    SAVE INVLIST C WORD ADDR S99228
         SR    RA,RA                    CLEAR ENTRY COUNT REG    S99228
         SR    RB,RB                    CLEAR WORK REGISTER      S99228
         IC    RB,TWO(R0,RC)            LOAD INVLIST ENTRY LENGT S99228
         IC    RA,ONE(R0,RC)            SET ACTIVE INVLIST E CNT S99228
         LA    RC,EIGHT(R0,RC)          SET INVLIST START ADDR   S99228
         LA    RPREFIX,TWO              SET ACTIVE-INACTIVE CON  S99228
SYNCTEST EQU   *                                                SA65428
         LTR   RA,RA                    TEST NUMBER ACTIVE ENT   S99228
         BZ    NOORG                    NO ACTIVE ENTRIES NO SRC S99228
         AIF   ('&GEN' EQ 'STSP').LL4D                           S99228
         TM    LCBSTAT2,LCBSYNC         TEST FOR BSYNC LINE      S99228
         BZ    SLOLINE                  NO, NO SKIP OF 1ST CU    S99228
         LA    RC,ONE(R0,RC)            ADJ PTR TO COMPARE 2ND C S99228
SLOLINE  EQU   *                                                 S99228
.LL4D    ANOP                                                    S99228
         L     RWKA,LCBINVPT-ONE        LOAD INVLIST POINTER     S99228
CONCHECK EQU   *                                                 S99228
         CLC   ZERO(ONE,RWKA),ZERO(RC)  COMPARE CONTROL UNIT ADD S99228
         BE    DVCCHECK                 CU ADDRS EQUAL CHECK DVC S99228
CONTEST  EQU   *                                                 S99228
         AR    RC,RB                    SKIP TO NEXT INVLIST ENT S99228
         BCT   RA,CONCHECK              CONTINUE SEARCHING       S99228
         BCT   RPREFIX,FEINCRE          PROCESS INACTIVE ENTRIES S99228
         B     NOORG                    NO SRC FOUND SET NO SRC  S99228
DVCCHECK EQU   *                                                 S99228
         CLC   ONE(ONE,RC),ONE(RE)      COMPARE DEVICE ADDR      S99228
         BNE   CONTEST                  BRANCH DEVICE NOT FOUND  S99228
         STM   RPREFIX,RC,SRCREGS       SAVE REGISTERS           S99228
         LR    RA,R0                    LOAD INVLIST CWORD ADDR  S99228
         TM    LCBSTAT2,LCBSYNC         BYSNC INVLIST?           S99228
         BZ    RUNLOW                   BRANCH NO                S99228
         BCTR  RB,R0                    REDUCE ENTRY LENGTH      S99228
RUNLOW   EQU   *                                                 S99228
         BCTR  RB,R0                    REDUCE ENTRY SIZE        S99228
         IC    RB,ZERO(RB,RC)           INSERT ENTRY INDEX       S99228
         SLL   RB,ONE                   DOUBLE INDEX VALUE       S99228
         SR    RA,RB                    POINT TO TNT INDEX       S99228
         LH    RC,ZERO(R0,RA)           LOAD TNT INDEX           S99228
         BAL   RWKA,BOLOC               BRANCH TO DCT ENTRY LOC  S99228
         TM    ONE(RA),C3270            3270 DEVICE?             S99228
         BO    RELOAD                   BRANCH YES               S99228
         TM    THREE(RA),CNOIDLES       2260 DEVICE?             S99228
RELOAD   EQU   *                                                 S99228
         LM    RPREFIX,RC,SRCREGS       RESTORE REGISTERS        S99228
         BO    SETORG                   BRANCH IF GENPOLL DEVICE S99228
         B     CONTEST                  NOT GENPOLL DEVICE       S99228
FEINCRE  EQU   *                                                 S99228
         LA    RC,ONE(R0,RC)            ADJ PTR ADDR TO PASS FE  S99228
         LR    RWKA,R0                  RESTORE CONTROL WORD ADD S99228
         IC    RA,ZERO(R0,RWKA)         LOAD TOTAL ENTRIES       S99228
         SR    RB,RB                    CLEAR ACTIVE ENTRIES REG S99228
         IC    RB,ONE(R0,RWKA)          LOAD ACTIVE ENTIRES      S99228
         SR    RA,RB                    DERIVE INACTIVE ENTRIES  S99228
         IC    RB,TWO(R0,RWKA)          RESTORE LENGTH           S99228
         B     SYNCTEST                 CONT SRCH INACT ENTRIES  S99228
SETORG   EQU   *                                                 S99228
         AIF   ('&GEN' EQ 'STSP').LL4E                           S99228
         TM    LCBSTAT2,LCBSYNC         BYSNC INVLIST?           S99228
         BZ    UNSYNC                   NO, NO RETARD INV PTR    S99228
         BCTR  RC,R0                    RETARD INV PTR TO CU ADD S99228
UNSYNC   EQU   *                                                 S99228
.LL4E    ANOP                                                    S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         ST    RC,LCBXRADR              SAVE ERP POLL ADDR       S99228
*                                       FOR ERP POLL             S99228
         BCTR  RC,R0                    RETARD INVLIST ENTRY PTR S99228
         AR    RC,RB                    PT TO INVLIST ENT INDEX  S99228
         SR    RWKA,RWKA                CLEAR WORK REGISTER      S99228
         IC    RWKA,ZERO(R0,RC)         LOAD INDEX VALUE         S99228
         SLL   RWKA,ONE                 DOUBLE INDEX VALUE       S99228
         LR    RC,R0                    RSTR INVLIST C WORD ADDR S99228
         SR    RC,RWKA                  POINT TO TNT INDEX       S99228
         LH    RWKA,ZERO(R0,RC)         LOAD TNT INDEX VALUE     S99228
         STH   RWKA,LCBTTCIN            SET SOURCE OF TRANS      S99228
         BR    RD                       RETURN TO CALLER         S99228
NOORG    EQU   *                                                 S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR SA66946
         NI    LCBXFLAG,LCBERSTP        PREVENT ERP POLL         S99228
         XC    LCBTTCIN(TWO),LCBTTCIN   INVALID SOURCE CLEAR SRC S99228
.LL4F    ANOP                                                   SA65397
         BR    RD                       RETURN TO CALLER         S99228
         SPACE 2
SRCREGS  DS    4F                       SAVE AREA FOR SOURCE     S99228
*                                       DETERMINATION REGISTERS  S99228
         EJECT                                                   S99228
LOOKER   EQU   *                                                 S99228
* THIS SUBROUTINE LOCATES THE INVITATION LIST AND DEVICE         S99228
* CHARACTERISTICS TABLE ENTRY FOR 2260  AND 3270 DEVICES         S99228
         USING *,RF                                              S99228
         SR    RB,RB                    CLEAR WORK REGISTER      S99228
         USING IHADCB,RA                                         S99228
         L     RA,LCBDCBPT              LOAD DCB POINTER         S99228
         IC    RB,LCBUCBX               LOAD INVLIST INDEX       S99228
         SLL   RB,TWO                   MULTIPLY INDEX BY 4      S99228
         L     RC,DCBINVLI(RB)          LOAD ADDR INVLIST CWORD  S99228
         LR    R0,RC                    SAVE ADDR INVLIST CWORD  S99228
         SR    RB,RB                    CLEAR LENGTH REGISTER    S99228
         IC    RB,DCBEIOBX              INSERT LCB LENGTH        S99228
         SH    RB,H8S                   BACK UP LCB BY 8         Y01948
         LA    RE,ZERO(RB,RLCB)         LOAD LCB EXTENSION ADDR  S99228
         STCM  RE,AD,AVTDOUBX+ONE      SAVE LCB EXTN ADDR        Y01948
         ST    R0,AVTDOUBX+FOUR         SAVE CWORD ADDR         OX03941
         DROP  RA                                                S99228
         LH    RC,LCBTTCIN .            LOAD TERM INDEX          S99228
         N     RC,AVTCLRHI .            CLEAR HI-ORDER HALF      S99228
         TM    LCBSTAT1,LCBSENDN        SEND STATE?              S99228
         BO    OUTBY                    YES, USE LCBTTCIN        S99228
         TM    LCBXFLAG,LCBSRCPF        SRC DETERM PERFORMED?    S99228
         BO    USEPTR                   YES, USE INVLIST PTR     S99228
         LTR   RC,RC .                  TTCIN ZERO               S99228
         BNZ   OUTBY                    NO, LCBTTCIN VALID       S99228
USEPTR   EQU   *                                                 S99228
         LR    RC,R0                    RESTORE REG              S99228
         L     RA,LCBINVPT-ONE          LOAD INVLIST ENTRY PTR   S99228
         SR    RB,RB                    CLEAR WORK REGISTER      S99228
         IC    RB,TWO(R0,RC)            LOAD INVLIST ENTRY LENGTHS99228
         AR    RA,RB                    SKIP TO END INVLIST ENT  S99228
         BCTR  RA,R0                    POINT TO ENTRY INDEX     S99228
         IC    RB,ZERO(R0,RA)           LOAD ENTRY INDEX VALUE   S99228
         SLL   RB,ONE                   DOUBLE INDEX VALUE       S99228
         SR    RC,RB                    POINT TO TNT INDEX       S99228
         LH    RC,ZERO(R0,RC)           LOAD TNT INDEX           S99228
OUTBY    EQU   *                                                 S99228
         BAL   RWKA,BOLOC               BRANCH TO DCT ENTRY LOC  S99228
         MVC   LCBXDCT(THREE),ONE(RA)   SAVE DCT BYTES 1, 2, 3   S99228
         LR    RE,R0                    LOAD INVLIST CWORD ADDR  S99228
         BR    RD                       RETURN                   S99228
         EJECT
BOLOC    EQU   *                                                 S99228
* THIS SUBROUTINE LOCATES DEVICE CHARACTERISTICS TABLE ENTRIES   S99228
         N     RC,AVTCLRHI              CLEAR HI ORDER BYTES     S99228
         L     RA,AVTRNMPT              LOAD ADDR TERMNAME TABLE S99228
         USING IEDQTNTD,RA                                       S99228
         BAL   RPREFIX,TNTDCODE         BRANCH TO TRM ENT LOC RT S99228
         USING IEDQTRM,RB                                        S99228
         DROP  RA                                                S99228
         SR    RA,RA                    CLEAR INDEX REGISTER     S99228
         IC    RA,TRMCHCIN              LOAD DCT INDEX           S99228
         BCTR  RA,R0                    DECREMENT FOR ENTRY      S99228
         MH    RA,AVTDCTLN              LENGTH OF DCT ENTRY    @G36XRIV
         DROP  RB                                                S99228
         A     RA,AVTCSTCS              SET ADDR DCT ENTRY       S99228
         BR    RWKA                     RETURN TO CALLER         S99228
         AIF   ('&GEN' EQ 'STSP').LL4A                           S99228
         EJECT
FINDER   EQU   *                                                 S99228
* THIS ROUTINE CALCULATES INVITATION LIST ENTRY ADDRESSES        S99228
* ON 3270 DEVICE DEPENDENT OUTPUT ERRORS                         S99228
         USING *,RF                                              S99228
         SR    RB,RB                    CLEAR WORK REGISTER      S99228
         L     RE,AVTDOUBX+FOUR         LOAD INVLIST CWORD ADDR  S99228
         SR    RC,RC                    CLEAR WORK REGISTER      S99228
         IC    RC,ZERO(R0,RE)           INSERT INVLIST TOTAL ENT S99228
         LA    RC,ONE(R0,RC)            INCRE TOTAL BY 1 FOR LOO S99228
         SLL   RC,ONE                   MULT BY 2 FOR ADDR RETAR S99228
         LR    RB,RE                    SAVE INVLIST CWORD ADDR  S99228
         SR    RB,RC                    RETARD ADDR TO 1ST INDEX S99228
         SRL   RC,ONE                   RETURN TO TOTAL ENTRIES  S99228
LOOPER   EQU   *                                                 S99228
         BCT   RC,LOCENTRY              NO INDEX FOUND EXIT      S99228
         BR    RD                       RETURN                   S99228
LOCENTRY EQU   *                                                 S99228
         LA    RB,TWO(R0,RB)            ADJUST TO 1ST INDEX      S99228
         CLC   ZERO(TWO,RB),LCBTTCIN    INDEX =CUR CON INDEX?    S99228
         BNE   LOOPER                   NO, CHECK NEXT INDEX     S99228
         LR    RB,RC                    SAVE TNT INDEX INDEX     S99228
         SR    RC,RC                    CLEAR WORK REGISTER      S99228
         IC    RC,ONE(R0,RE)            INSERT ACTIVE ENTRIES    S99228
         SR    RA,RA                    CLEAR WORK REGISTER      S99228
         IC    RA,TWO(R0,RE)            INSERT INVLIST ENTRY LEN S99228
         BCTR  RA,R0                    SET LENGTH -INDEX        S99228
         LR    R0,RE                    SAVE INVLIST CWORD ADDR  S99228
         LA    RE,EIGHT(R0,RE)          SKIP TO 1ST ENTRY        S99228
         SR    RWKA,RWKA                CLEAR WORD REGISTER      S99228
         LTR   RC,RC .                  ANY ACTIVE ENTRIES      SA65374
         BZ    ROUNDER1 .               BRANCH IF YES           SA65374
ROUNDER  EQU   *                                                 S99228
         IC    RWKA,ZERO(RA,RE)         INSERT ENTRY INDEX       S99228
         CR    RWKA,RB                  INDEX = DEVELOPED INDEX? S99228
         BE    SETENTRY                 YES, INV CHARS LOCATED   S99228
         LA    RE,ONE(RA,RE)            SKIP TO NEXT ENTRY       S99228
         BCT   RC,ROUNDER               CHECK ENTRY INDEX        S99228
ROUNDER1 EQU   * .                                              SA65374
         LA    RE,TWO(R0,RE)            SKIP EOT AND FE          S99228
         LR    RWKA,RE                  SAVE CURRENT ENTRY ADDR  S99228
         LR    RE,R0                    RELOAD INVLIST CWORD ADD S99228
         IC    RC,ZERO(R0,RE)           INSERT TOTAL ENTRIES     S99228
         IC    RA,ONE(R0,RE)            INSERT ACTIVE ENTRIES    S99228
         SR    RC,RA                    CALC INACTIVE ENTRIES    S99228
         IC    RA,TWO(R0,RE)            RESTORE ENTRY LENGTH     S99228
         BCTR  RA,R0                    SET LENGTH - INDEX       S99228
         LR    RE,RWKA                  RESTORE ENTRY ADDR       S99228
         SR    RWKA,RWKA                CLEAR WORK REGISTER      S99228
         B     ROUNDER                  CHECK INACTIVE ENTRIES   S99228
SETENTRY EQU   *                                                 S99228
         LR    RC,RE                    SAVE INVLIST CWORD ADDR  S99228
         L     RE,AVTDOUBX              LOAD LCB EXTENSION ADDR  S99228
         ST    RC,LCBXRADR              SET ERP POLL ADDR        S99228
         OI    LCBXFLAG,LCBERPND        SET SOR PENDING          S99228
         BR    RD                       RETURN                   S99228
         EJECT
.LL4A    ANOP
         AIF   ('&GEN' EQ 'MINI').LL4A1                        @OZ16540
POLLCK   EQU   *
         USING *,RF                                            @OZ16540
         SR    RE,RE                    CLEAR WORK REGISTER    @OZ16540
         L     RD,LCBCPA+48             LOAD SECOND POLL CCW   @OZ16540
         LR    RA,RD                    SAVE FIRST ENTRY       @OZ16540
         SH    RD,H8                    BACK UP TO CWORD       @OZ16540
         IC    RE,2(,RD)                INSERT ENTRY WIDTH     @OZ16540
         CLI   0(RCCW),CCWPOLL          INTERRUPT ON POLL      @OZ16540
         BNE   TMODE                    BRANCH TEXT MODE       @OZ16540
         LR    RB,RE                    SAVE ENTRY WIDTH       @OZ16540
         LH    RC,CCWCOUNT              LOAD ORIGINAL COUNT    @OZ16540
         SH    RC,LCBCSW+5              SUBTRACT RESIDUAL      @OZ16540
         BNP   ENTRY                    BRANCH FIRST ENTRY     @OZ16540
         SR    RB,RB                    CLEAR DIVIDE REGISTER  @OZ16540
         DR    RB,RE                    CALCULATE              @OZ16540
         MR    RB,RE                    ENTRY INDEX            @OZ16540
         LTR   RB,RC                    MOVE COUNT             @OZ16540
         BNZ   ENTRY                    BRANCH VALUE           @OZ16540
         LR    RB,RE                    USE ENTRY LENGTH       @OZ16540
ENTRY    EQU   *                                               @OZ16540
         L     RA,CCWADDR-1             LOAD POLL ADDRESS      @OZ16540
         LA    RA,0(RB,RA)              POINT TO               @OZ16540
         BCTR  RA,0                     INDEX BYTE             @OZ16540
         B     SRCEFIND                 LOCATE TERMINAL        @OZ16540
TMODE    EQU   *                                               @OZ16540
         L     RC,LCBCPA+64             LOAD READ RESPONSE     @OZ16540
         SR    RB,RB                    CLEAR INDEX REGISTER   @OZ16540
         STH   RB,LCBTTCIN              ZERO CONNECTED INDEX   @OZ16540
         BCTR  RA,0                     REDUCE FOR LOOP        @OZ16540
POLLOOP  EQU   *                                               @OZ16540
         AR    RA,RE                    MOVE TO FIRST INDEX    @OZ16540
         CLC   0(1,RA),0(RC)            INDEX FOUND            @OZ16540
         BE    SRCEFIND                 BRANCH YES             @OZ16540
         CLI   1(RA),FE                 END                    @OZ16540
         BER   R14                      OF                     @OZ16540
         CLI   2(RA),FE                 LIST                   @OZ16540
         BNE   POLLOOP                  BRANCH NO              @OZ16540
         BR    R14                      YES, EXIT              @OZ16540
SRCEFIND EQU  *                                                @OZ16540
         IC    RB,0(,RA)                INSERT INDEX           @OZ16540
         AR    RB,RB                    LOCATE                 @OZ16540
         SR    RD,RB                    OFFSET                 @OZ16540
         LH    RC,0(,RD)                LOAD TNT OFFSET        @OZ16540
         STH   RC,LCBTTCIN              SET CONNECTED INDEX    @OZ16540
         L     RA,AVTRNMPT              LOAD ADDRESS TNT CODE  @OZ16540
         USING IEDQTNTD,RA                                     @OZ16540
         BAL   RPREFIX,TNTDCODE         LOCATE TERMINAL ENTRY  @OZ16540
         USING IEDQTRM,RB                                      @OZ16540
         L     RB,TRMDESTQ-1            LOAD TTE ADDRESS       @OZ16540
         DROP  RB                                              @OZ16540
         USING IEDQQCB,RB                                      @OZ16540
         SR    RA,RA                    CLEAR WORK REGISTER    @OZ16540
         IC    RA,QCBSCBOF              INSERT SCB INDEX       @OZ16540
         IC    RE,AVTSCBSZ              AND SCB SIZE           @OZ16540
         MR    RA-1,RE                  GET SCB OFFSET         @OZ16540
         AL    RA,LCBSCBDA-1            AND SCB ADDRESS        @OZ16540
         STCM  RA,7,LCBSCBA             STORE SCB ADDRESS      @OZ16540
         BR    R14                                             @0Z16540
         DROP  RA                                              @OZ16540
         DROP  RB                                              @OZ16540
.LL4A1   ANOP                                                  @OZ16540
         EJECT
*        CONSTANTS
H8S      DC    H'8'                     CONSTANT OF X'08'        X02004
ESOHCH   EQU   26 .                                              S22026
CEPTR    EQU   12                       ADDRESS OF CHANNEL       X02004
*                                       END APPENDAGE IN DEB     X02004
*                                       VECTOR TABLE             X02004
SIOPTR   EQU   4                        ADDRESS OF SIO IN ABOVE  X02004
INTENTRY EQU   4                        SECOND ENTRY TO IGG019QE X02004
*                                       FOR ADDRESS TRANSLATION  X02004
CBRDCAST EQU   X'40' .                                           S22026
CC1      EQU   X'10'                    SIO COND CODE MASK       Y02027
CC3      EQU   X'30'                    SIO COND CODE MASK
PERMERR  EQU   X'41'                    MASK FOR PERM ERROR(BY ERP)
ZERO     EQU   0
ONE      EQU   1
TWO      EQU   2
THREE    EQU   3
FE       EQU   X'FE'                    END OF INV LIST
FOUR     EQU   4
FIVE     EQU   5                                                 S99228
SIX      EQU   6                                                 S99228
ONESIX   EQU   16                                                S99228
RSOHCH   EQU   29                       OFFSET SOH%R SEQUENCE    S99228
EIGHT    EQU   8
CEDE     EQU   X'0C'                    STATUS=CHAN END, DEVICE END TSO
UNEX     EQU   X'01'                    UNIT EXCEPTION
CSWPC    EQU   X'20'                    CHANNEL PROGRAM CHECK   SA65374
CVTLOC   EQU   X'10'                    CVT PTR LOCATION
NAK      EQU   X'80'                    REQUEST FOR NAK.         X01004
ACKI     EQU   X'40'                    REQUEST FOR ACK-I.       X01004
EOMSG    EQU   X'80'                    TEMPORARY END OF MSG
DLEEOTCH EQU   16                       OFFSET TO SEQUENCE
EOTCH    EQU   0                        OFFSET TO SEQUENCE IN SCT
STXCH    EQU   1                         OFSET TO SEQUENCE IN SCT
ACK0CH   EQU   4                        INDEX N TO SCT
NAKCH    EQU   6                        INDEX TO SEQUENCE
TOTESOH  EQU   27                       SOH % / FOR TOTE         S21903
CSOHCH   EQU   28                       INDEX TO SOH % C         S99238
ENQCH    EQU   7                        OFFSET TO SEQUENCE IN SCT
ETBCH    EQU   8                         OFSET TO SEQUENCE IN SCT
ETXCH    EQU   9                        OFFSET TO DEQUENCE IN SCT
DLESTXCH EQU   10                       OFFSET TO SEQUENCE IN SCT
BUFF     EQU   X'1A'                    LCBRSKEY FOR BUFFERED LCB
STXENQCH EQU   11                       OFFSET TO SEQUENCE IN SCT
SOHCH    EQU   13                       OFFSET TO SEQUENCE
WACKCH   EQU   14                       INDEX TO SEQUENCE IN SCT
RVICH    EQU   15                       INDEX TO SEQUENCE IN SCT
IN       EQU   X'80'                    MASK FOR LCIN
X2F      EQU   X'2F'                   MASK ERRORS PGM CHK+CAT ERRS
IDRETRY  EQU   6                        RETRY COUNT BSC READ ID
X20      EQU   X'20'                   BIT-LCBFLAG1-ERP IN CONTROL
CMDREJ   EQU   X'80'                    COMMAND REJECT IN SENSE
X24      EQU   X'24'                    MASK FOR ERROR FLAGS
XF2      EQU   X'F2'                    MASK FOR ERRORS-AATN,STMOD,
*                                        CTL UNT END,BUSY,UNTCHCK
CVTOPT01 EQU   X'98'                    OFFSET ADDRESS IN CVT -POST
COMPLETE EQU   X'40'                    MASK FOR ECB COMPLETE
ACTIVE   EQU   1                        ILIST OFFSET-#ACTIVE ENTRIES
LOGICAL  EQU   X'04'                    LOGICAL EXIT AT MH
CONV     EQU   X'10'                    CONVERSE REQUEST AT MH
MHBT     EQU   X'08'                    BT PRESENT IN MH QCB     X01004
LCIN     EQU   X'80' .                  LINE CONTROL IN FLAG     X01004
CCONTIN  EQU   4 .                      CONTINUE CAPABILITY FLAG X01004
CBISYNC  EQU   X'80' .                  BISYNC DEVICE FLAG       X01004
CCHECK   EQU   X'10' .                  CHECKING CAPABILITY FLAG X01004
CCONTENT EQU   X'04'                    CONTENTION DEVICE      @XA08073
MASTER   EQU   X'20'                    MASTER/SLAVE STATUS    @XA08073
SEVEN    EQU   7 .                                               X01004
NINE     EQU   9 .                                               X01004
EOL      EQU   X'FE' .                  END OF LIST INDICATOR    X01004
THIRTN   EQU   13 .                                              X01004
AD       EQU   7 .                      MASK FOR ICM OF ADDRESS  X01004
FOUR095  EQU   4095 .                   OFFSET FOR SECOND BASE   X01004
TWLVE    EQU   12 .                                              X01004
SIXTN    EQU   16 .                                              X01004
ALL      EQU   15 .                     MASK TO ICM FOUR BYTES   X01004
CCZRO    EQU   8                        ZERO CONDITION CODE      X02004
LISTSIZE EQU   8                        SIZE OF ILIST CONTROL FIELDS
FF       EQU   X'FF'                    MASK FOR TEST AND SET
CEDEUC   EQU   X'0E'                    CH END, DEV END, UNIT CHECK
IOBEXEP  EQU   X'04'                    FLAG TO GET TO ERP
TIMEOUT  EQU   X'01'                    TIME OUT VALUE IN SENSE
IR       EQU   X'40'                    INTERVENTION REQ.           TSO
CIRCC    EQU   X'1F'                                                TSO
CIRCD    EQU   X'16'                                                TSO
X80      EQU   X'80'                    MASK FOR TS SWITCH
X48      EQU   X'48'                   COMP CODE IN ECB FOR HIO
X01      EQU   X'01'                    TP OP CODE MASK
X12      EQU   X'12'                    TP CODE FOR BREAK           TSO
RACK0    EQU   X'81'                    INDICATOES RESPONSE RCVD
RACK1    EQU   X'41'                    INDICATOES RESPONSE RCVD
LMD      EQU   X'03' .                  LMD FLAGS ON STARTMH     S22025
RWACK    EQU   X'20'                    INDICATOES RESPONSE RCVD
RTTD     EQU   X'10'                    INDICATOES RESPONSE RCVD
REOT     EQU   X'08'                    INDICATOES RESPONSE RCVD
RRVI     EQU   X'04'                    INDICATOES RESPONSE RCVD
RNAK     EQU   X'02'                    INDIACTES RESPONSE RCVD
RENQ     EQU   X'0C'                    MASK FOR RESPOSNE RECEIVED
XF0      EQU   X'F0'                    SWITCH FOR 2260L AND LOCAL
*                                         SCHEDULER
UNITCHK  EQU   X'0E'                    SET ENDING STATUS
DATCK    EQU   X'08'                    DATACHECK MASK
RDLEEOT  EQU   X'10'                    MASK FOR RESPONSE RECEIVED
DATCHK   EQU   X'08'                    DATA CHECK MASK
SENDPRI  EQU   X'20' .                  SEND PRIORITY MASK FOR LCS21101
MPT      EQU   X'10'                    MULTIPT CHARCTERISTIC
DUMMY    EQU   X'DF'                    DUMMY ILIST ENTRY
RETRY    EQU   6                        BSC RETRY COUNT
ENDCTL   EQU   X'20'                    DEVICE CHARACTERISTIC
PCIOPT   EQU   X'FF'                    PARAMETER NOT TO POST BUFFERS
RCVPCI   EQU   X'20'                    MASK FOR PCI ON RECEIVE
SNDPCI   EQU   X'10'                    MASK FOR PCI ONSNDING
PCIFLAG  EQU   X'80'                    PCI STATUS IN CSW
DISDLEOT EQU   X'01'                    FLAG TO WRITE DLE EOT
NOPCI    EQU   X'00'                    PARAMETER
LOCKED   EQU   X'80'                    LOCK OUT MASK FOR BUFFER COUNT
DBLRVI   EQU   X'01'                    SWITCH FOR DOUBLE RVI I5
*                                       RESPONSE TO TEXT
*                                         MODE
STAT1    EQU   X'0A'                    DB, US, DE MASK          S99228
STAT2    EQU   X'2E'                    CR,EC,DC,CC MASK       @OY20488
ASTAT3   EQU   X'26'                    IR                     @OY20488
SS0      EQU   6                        SENSE 0 OFFSET           S99228
SS1      EQU   7                        SENSE 1 OFFSET           S99228
PCIRCV   EQU   X'22'                    RECEIVE PCI MASK         S99228
ASCIEOT  EQU   X'04'                    ASCII EOT              @OZ29663
ASTAT1   EQU   X'18'                    ASCII DB, DE MASK      @OZ29663
ASTAT2   EQU   X'1E'                    ASCII CR,IR,ER,DC,CC   @OZ29663
ASCIDE   EQU   X'42'                    ASCII DEVICE END ONLY  @OZ29663
AUTOPL   EQU   X'01'                    INVLIST CWORD AUTOPL IND S99228
CLOCAL   EQU   X'02'                                             S99228
CREMOTE  EQU   X'80'                    BSC DEVICE              SA59028
C3270    EQU   X'04'                    3270 DEVICE              S99228
CNOIDLES EQU   X'02'                    NO IDLES DEFINED         S99228
CUMASK   EQU   X'01'                    GENERAL POLL CONTROL UNITS99228
LCL3277  EQU   X'09'                    LOCAL 3277 MODEL CODE    S99228
REG7     EQU   28                       OFFSET TO REGISTER 7     S99228
TTY1     EQU   X'10' .                 UCBTYPE+0                SA48278
TTY2     EQU   X'51' .                 UCBTYPE+0 FLAGS          SA48278
TTY3     EQU   X'50' .                 UCBTYPE+3 FLAGS          SA48278
TTY4     EQU   X'13' .                 UCBTYPE+3                SA48278
TTY5     EQU   X'A0' .                 UCBTYPE+3 FLAGS          SA48278
L22601   EQU   X'12' .                 UCBTYPE+2                SA51061
L2260    EQU   X'10'                   UCBTYPE+2 FLAG           SA51061
ATTN     EQU   X'20' .                  ATTENTION  ALLOWED FLAG  S22025
TICEND   EQU   11                       LOW ORDER BYTE TIC ADDR  S99228
X7F      EQU   X'7F'                    OK CHANNEL PROG COMP CD  S22025
UCBOFFST EQU   28                       OFFSET TO UCB REG IN SAVEX02004
UNITYPE  EQU   19                       UNIT TYPE OF UCB        SA51090
LCLRSCH  EQU   X'1E'                    LOCAL RECIEVE SCHD KEY  SA57329
EBCDACK  EQU   X'76'                    EBCDIC ACK FOR S/S      SA62991
         CNOP  0,8                      ALIGN TO DOUBLE WORD     X02004
ASCIACK  EQU   X'06'                    ASCII  ACK FOR S/S      SA62991
THIRTY2  EQU   32                       OFFSET 32              @ZA02095
ELINEND  EQU   *                                                 X02004
         TPRIOR
         TLCBD
         TQCBD                                                      TSO
         TTRMD
         TTSID
         TCCWD
         TSCBD
         TAVTD
         TPRFD
         DCBD  DSORG=TX
         TRECBD
         TTNTD
         TTPD
         TTCBD
         TDEBD
         CVT   DSECT=YES
         EJECT
         TTCXD
         EJECT
         IECDIOSB
         MEND
./ ADD NAME=LLACOPY
         MACRO
&NM      LLACOPY &DCB=,&BLDLLIST=,&RETCODE=,&RSNCODE=,&MF=
.**********************************************************************
.*   PROVIDED TO GET CLEAN ASSEMBLIES UNDER MVS 3.8J (HERCULES)       *
.**********************************************************************
&NM      MACPARM MODE=LBL
         MEND
./ ADD NAME=LSPACE
         MACRO
&NM   LSPACE &MF=I,&MSG=,&EXPMSG=,&DATA=,&SMF=,&UCB=,&F4DSCB=,&PFX=LSP
.*    MOSTLY DUMMY MACRO TO ALLOW CLEAN ASSEMBLY UNDER MVS
         LCLC  &L,&P
         LCLA  &N
&N       SETA  &SYSNDX
         AIF   ('&MF(1)' EQ 'D').MAPDATA
         AIF   ('&MF(1)' EQ 'L').LSTDATA
         AIF   ('&MF(1)' EQ 'E').EXPCALL
         CNOP  0,4
&NM      BAL   R1,ZZ&N.X
ZZ&N.L   DC    CL4'LSPA'     ID
         DC    AL2(ZZ&N.X-ZZ&N.L,0) LEN, FLAGS
         DC    6AL4(0)       RETCC,UCB,DATA....
ZZ&N.X   MACPARM R0,&UCB,NULL=SKIP  LOAD UCB ADDRESS
         MACPARM R1,&MSG,NULL=SKIP  LOAD RETURN AREA
         MACPARM 078,OP=SVC,MODE=ONE   COLLECT DATA
         MEXIT ,
.EXPCALL ANOP  ,
&NM      MACPARM R0,&UCB,NULL=SKIP  LOAD UCB ADDRESS
         MACPARM R1,&MSG,NULL=SKIP  LOAD RETURN AREA
         MACPARM 078,OP=SVC,MODE=ONE   COLLECT DATA
         MEXIT ,
.LSTDATA AIF   (N'&MF LT 2).LSTCALL
         AIF   ('&MF(2)' EQ 'DATA').LSTRETN
.LSTCALL ANOP  ,             LIST FORM WORK AREA EXPANSION
&NM      DC    CL4'LSPA'     ID
         DC    AL2(ZZ&N.X-&NM,0) LEN, FLAGS
         DC    6AL4(0)       RETCC,UCB,DATA....
ZZ&N.X   EQU   *             END PARM
         MEXIT ,
.LSTRETN ANOP  ,
&NM      DC    9A(0)
         MEXIT ,
.MAPDATA AIF   (N'&MF LT 2).MAPCALL
         AIF   ('&MF(2)' EQ 'DATA').MAPRETN
.MAPCALL ANOP  ,
&NM      DC    8A(0)
         MEXIT ,
.MAPRETN ANOP  ,
&NM      MACMAPHD DSECT,PFX=&PFX
&P       SETC  '&PFX'
&P.DRETN DS    X             RETURN FLAG
&P.DSPAC EQU   X'80'           DID SPACE
&P.DF0CN EQU   X'40'           DID HOLE COUNT
&P.DVRCN EQU   X'20'           DID VIR COUNT
&P.DRRES EQU   X'1F'           UNUSED
&P.DSTAT DS    X             STATUS FLAGS
&P.DIXDS EQU   X'80'           INDEXED VTOC
&P.DIXAC EQU   X'40'           INDEX AVAILABLE
&P.DSRES EQU   X'2F'           UNUSED
&P.DRSV1 DS    XL2           SPARES
&P.DNEXT DS    F             # FREE EXTENTS
&P.DTCYL DS    F             FREE CYLINDERS
&P.DTTRK DS    F             + FREE TRACKS
&P.DLCYL DS    F             # CYLS IN MAX FREE
&P.DLTRK DS    F             + FREE TRACKS
&P.DF0S  DS    F             FREE DSCBS
&P.DVIRS DS    F             FREE VIRS
&P.DFRAG DS    F             FRAGMENTATION INDEX
         MEND  ,
./ ADD NAME=MFROUTER
         MACRO
&MFRNAME MFROUTER &NAME,&ENTRY=BRANCH,&CVTREG=
         LCLA  &CODE
         LCLC  &ACTIVEF
         LCLC  &REG
         AGO   .BEGIN
* /* MACCOMP Y-2 SC1CQ/GAM20                                         */
*/* MACSTAT Y-2 73271/Y02150                                         */
*/**** START OF SPECIFICATIONS ***************************************/
*/*                                                                  */
*/* MODULE-NAME = MFROUTER                                           */
*/*                                                                  */
*/* DESCRIPTIVE-NAME = MF/1 ROUTER CALL                              */
*/*                                                                  */
*/* COPYRIGHT = NONE                                                 */
*/*                                                                  */
*/* STATUS = RELEASE 2 / VERSION 0                                   */
*/*                                                                  */
*/* FUNCTION = MFROUTER PROVIDES AUTHORIZED CONTROL PROGRAMS WITH    */
*/*            A WELL-DEFINED LINKAGE TO MF/1 MEASUREMENT            */
*/*            GATHERING ROUTINES WHICH ARE RESIDENT IN MAIN         */
*/*            STORAGE ONLY WHEN MF/1 IS ACTIVE.                     */
*/*                                                                  */
*/* NOTES = SEE BELOW                                                */
*/*                                                                  */
*/*    DEPENDENCIES = THE USER MUST PROVIDE A CVT MAPPING MACRO      */
*/*                   IN EITHER PL/S OR BAL AND A CODE BASE REGISTER */
*/*                                                                  */
*/*    RESTRICTIONS = THE USER MUST BE DISABLED, IN SUPERVISOR STATE */
*/*                   AND KEY.                                       */
*/*                                                                  */
*/*    REGISTER-CONVENTIONS = REGISTER 0 IS LOADED WITH AN MFROUTER  */
*/*                           CODE, REGISTER 14 CONTAINS THE RETURN  */
*/*                           ADDRESS, AND REGISTER 15 CONTAINS THE  */
*/*                           ENTRY POINT ADDRESS.  ALL OTHER        */
*/*                           REGISTERS ARE TRANSPARENT.             */
*/*                                                                  */
*/* MODULE-TYPE = BAL EXECUTABLE MACRO                               */
*/*                                                                  */
*/* CHANGE-ACTIVITY =                                                */
*/*                                                                  */
*/* A000000-999999                                             Y02150*/
*/*                                                                  */
*/* METHOD OF INVOCATION = SEE BELOW                                 */
*/*                                                                  */
*/*    BAL - MFROUTER A,ENTRY=B,CVTREG=C                             */
*/*          WHERE A - MFROUTER ENTRY TYPE (REQUIRED):               */
*/*                    TIMER                                         */
*/*                    MF1TCH                                        */
*/*                B - MUST BE 'BRANCH' OR OMITTED                   */
*/*                C - ANY REGISTER SYMBOL CONTAINING THE ADDRESS    */
*/*                    OF THE CVT.  IF THIS PARAMETER IS OMITTED,    */
*/*                    THE CVT ADDRESS WILL BE LOADED INTO REGISTER  */
*/*                    15 FROM THE PSA                               */
*/*                                                                  */
*/***** END OF SPECIFICATIONS ****************************************/
.BEGIN   ANOP
*/* MACDATE Y-2 73271                                                */
&ACTIVEF SETC  '80'
&CODE    SETA  0 TIMER CODE
&REG     SETC  '15'
         AIF   ('&NAME' EQ 'TIMER').NAMEOK CHECK 1ST PARAMETER
&CODE    SETA  8 MF1TCH CODE
         AIF   ('&NAME' EQ 'MF1TCH').NAMEOK ALTERNATE 1ST PARAMETER
         MNOTE 8,'INVALID PARAMETER (&NAME)'
         MEXIT
.NAMEOK  AIF   ('&ENTRY' EQ 'BRANCH').ENTRYOK CHECK 2ND PARAMETER
         MNOTE 8,'INVALID PARAMETER (&ENTRY)'
         MEXIT
.ENTRYOK ANOP
         AIF ('&CVTREG' NE '').REGNUM . CVT BASE REGISTER SPECIFIED?
         L     15,CVTPTR(,0) .    SET UP CVT BASE REGISTER
         AGO   .REGOK
.REGNUM  ANOP
&REG     SETC  '&CVTREG'
.REGOK   ANOP
&MFRNAME TM    CVTMFRTR-CVTMAP(&REG),X'&ACTIVEF' . MF/1 ACTIVE?
         BZ    IRB&SYSNDX .       NO
         LA    0,&CODE(,0) .      YES, SAVE CODE FOR IRBMFEVT
         L     15,CVTMFRTR-CVTMAP(,&REG) GET IRBMFEVT ROUTINE
         BALR  14,15                        PASS CONTROL TO IRBMFEVT
IRB&SYSNDX DS  0H
         MEND
./ ADD NAME=MIEDQFA
         MACRO
         MIEDQFA  &X
.*A-000000-999999                                              @X31X8Q0
.*A513900                                                      @OX12563
         LCLC     &CH
         LCLA     &A
* CHANGE ACTIVITY = AS FOLLOWS:
* ****************** MICROFICHE FLAGS *********************** SUPT CODE
* A281400,751500,752100,756900,759600                            A44866
* C283500                                                        A44866
* A473700                                                        A42363
* C085200,487800,495900,501000,501900,826200-826500              A42363
* D243700                                                        A42363
* A487800,831300                                                  M2321
* C085200,495300,661700                                           M2321
* A206100                                                         M6298
* C085200,183600-184200                                           M6298
* D176100-176400                                                  M6298
* A221300,221320                                                 A49211
* C085200,221200                                                 A49211
* D220800                                                        A49211
* A757100                                                        A49228
* C738000,756000                                                 A49228
* A284700                                                        A41025
* C085200,089100-092100                                          A41025
* D088200-088500                                                 A41025
* A238200                                                        A42400
* C085200                                                        A42400
* C085200,153903,155080                                          A47133
* A054900,056100,096300,150300,153900,154100,154500,154800       S21101
* A155060,155080,156600,166800,167100,178800,179400,180000       S21101
* A180600,180800,180840,217800,235500,340800,456300,479100       S21101
* A485400,504600,661500,840300                                   S21101
* C021300,026700,027300,030300,032400-033300,037200,040500       S21101
* C063300,071700,076200,085200,092700,105900,112200,116700       S21101
* C121200,130500-131100,139800,141000,143400,145200,146100       S21101
* C154120,155066-155084,161100,163500,180220,182700,186900       S21101
* C188400,192000,218400,220800-221100,236100-237000,238400       S21101
* C238599,239400,653700,257100,260400-261600,262200-269700       S21101
* C287400,288000,288600,329100,331200,339900,345000,346800       S21101
* C362100,363000,388200,399000,399900,404400,405300,426300       S21101
* C431700,435600,438000,438600,535800,547800,558600,574500       S21101
* C612600,691200,709500,726600,729300,766500,767100,767700       S21101
* C774000,793200,821100,822000,827400,857100-857400              S21101
* D117900-119100,129900,132900-138000,147000-148200              S21101
* D154600-154800,179100,180300-180818,218700,219600,226500       S21101
* D229800,230400,232800,249600,258000-258900,259500-259800       S21101
* D270300-270600,333300-334200,339300,527100-528300,859800       S21101
* A451300,485760-485940,513601-513810,539730-539970,540700       S22026
* A765930-766140,766600,860800                                   S22026
* C067800,450300,550800-551700                                   S22026
* D513000                                                        S22026
* C341400                                                        A44895
* A228300                                                       SA54922
* C221320                                                       SA54922
* A562500,282900                                                SA54262
* C478500-479300                                                SA52972
* A514800                                                       SA57087
* A518100                                                       SA55393
* D551400-552600                                                SA56898
* C485880                                                       SA57333
* A153900,219900,223500,428700,438900,503700,521700             SA52971
* C153000-153250,153600,153903-153994,154120,155070-155400      SA52971
* C164400-164500,181040-181240,217900,220500,220900-221040      SA52971
* C221200-221360,222600-222900,225000-226800,227400-228000      SA52971
* C234000-235600,429000-429150,478500-479300,484200-484800      SA52971
* C500700-500800,504700-504840,513600-513619,522300-531600      SA52971
* C532800-533400                                                SA52971
* D001800-006600,154000-154100,163800,228400,485500,            SA52971
* D507300-507600,532200                                         SA52971
* A445500,515400,738300,741900,753100,755700                    SA52984
* C445200,445800,755940                                         SA52984
* D449400-457200,743400-743700                                  SA52984
* D055800,790500-791100,795600-798000                           SA51078
* A202600-202700,214300,795600-796600                           SA51078
* C231900                                                       SA51078
* A033070-033490                                                SA51783
* D145200,150400-150580,154900-155070,156000-156900,178900      SA51783
* D179500,179800-179900,180100-180840                           SA51783
* A148510-148650,148860-149040                                  SA51783
* A154126-154150,181280-181440,215420-215680,221040-221220      SA50192
* A221382-221392                                                SA50192
* C220980                                                       SA50192
* D221040-221200                                                SA50192
* A056150,549650,553850-554060                                   S22024
* D550500                                                        S22024
* A256230-256470                                                SA61800
* C350100,359400                                                SA59522
* D358200                                                       SA59522
* A460200,546240,554400                                         SA61767
* C546020                                                       SA61767
* D238400                                                       SA61768
* C238406-238408,238420,238460,238484,238496-238599             SA61768
* A509700                                                       SA62949
* C 358000                                                      SA62976
* A 661760                                                      SA63623
* C481800                                                       SA66617
* A522300                                                       SA66626
* A786900                                                       SA68051
* D787800                                                      @SA68051
.*C013390                                                      @Z30X8QE
* A207600                                                      @YA03936
* A602700,603000                                               @SA70861
* C495440                                                      @SA70861
* A786900                                                      @SA68051
* A38910,384600                                                @SA69655
*A482700                                                       @YA05477
.*D814500                                                      @SA73185
.*A202800                                                      @YA06869
*A482100                                                       @YA08105
*D518170-518310                                                @YA08105
*A733200,751500                                                @YA07705
*A154200                                                       @SA71965
*A504600                                                       @SA74867
*D513780-513810                                                @OX11340
*A056300,445740,445961                                         @OZ09304
*C445560-445590                                                @OZ09304
*C439140                                                       @OZ09304
*A056350,385800,389280                                         @OZ14195
*A056350                                                       @OS79957
*C445940-445961                                                @OS79957
*A452100,759300,782700                                         @OX20639
*D456000,459000,463800                                         @OX20639
*A455400,455700,459600,459900                                  @OX20639
*A445930                                                       @OY20265
*A389300                                                       @OZ30296
*A514900                                                       @OX11340
*C 554050                                                      @Y17XA0Z
*A615600                                                       @OS77389
         SPACE 3
.**********************************************************************
         AIF   ('&X' NE 'CORE').CDS
&A       SETA  1 .                                               S22025
IEDQFA1  TITLE '''IEDQFA'' - CPB INITIALIZATION - CORE ONLY' .   S22025
IEDQFA1  CSECT
         AGO   .OK
.CDS     AIF   ('&X' NE 'DISK').BOTH
&A       SETA  2
IEDQFA2  TITLE '''IEDQFA'' - CPB INITIALIZATION - DISK ONLY' .   S22025
IEDQFA2  CSECT
         AGO   .OK
.BOTH    ANOP
&A       SETA  3
IEDQFA3  TITLE '''IEDQFA'' - CPB INITIALIZATION - CORE AND DISK' S22025
IEDQFA   CSECT
IEDQFA3  EQU   * .
.OK      ANOP
&CH      SETC  'IEDQFA&A'
         ENTRY IEDQFQ .
***********************************************************************
*                                                                     *
*  TITLE: MIEDQFA - CPB INITIALIZATION                                *
*                                                                     *
         AIF   ('&X' NE 'CORE').TAG1
*  MODULE NAME = IEDQFA1                                              *
*                                                                     *
*  DESCRIPTIVE NAME = CPB INITIALIZATION - CORE ONLY                  *
         AGO   .TAG3
.TAG1    AIF   ('&X' NE 'DISK').TAG2
*  MODULE NAME = IEDQFA2                                              *
*                                                                     *
*  DESCRIPTIVE NAME = CPB INITIALIZATION - DISK ONLY                  *
         AGO   .TAG3
.TAG2    ANOP
*  MODULE NAME = IEDQFA(3)                                            *
*                                                                     *
*  DESCRIPTIVE NAME = CPB INITIALIZATION - CORE AND DISK              *
.TAG3    ANOP
*                                                                     *
*  COPYRIGHT = 'NONE'                                                 *
*                                                                     *
*  STATUS -- CHANGE LEVEL 8                                    @Z30X8QE
*                                                                     *
*FUNCTION -- THIS ROUTINE CONSISTS OF 2 PARTS                         *
*   1. FA - THIS ROUTINE WILL INITIALIZE CPBS TO WRITE OR READ        *
*     BUFFER UINTS TO OR FROM DISK.                                   *
*   2. FQ - THIS ROUTINE WILL HANDLE CPBS AFTER DISK I/O HAS BEEN     *
*   COMPLETED.                                                        *
*                                                                     *
*ENTRY POINTS -- THIS MODULE HAS TWO ENTRY POINTS                     *
*   1. 'IEDQFA' - TO QUEUE A BUFFER ON DISK OR TO OBTAIN FULL         *
*      BUFFERS FROM A MESSAGE QEUUE                                   *
*   2. 'IEDQFQ' - TO HANDLE CPBS AFTER DISK OPERATIONS AND FILL       *
*      BUFFERS FROM DATA IN CPBS WHICH HAVE READ A RECORD             *
*      OR FROM UNITS IN A MAIN STORAGE QUEUE.                         *
*   CALLING SEQUENCE                                                  *
*                  L     R1,ELEMAD                                    *
*                  L     R15,QCBSTCHN-1                               *
*                  LA    R15,2(R15)                                   *
*                  BR    R15                                          *
*                                                                     *
*INPUT -- ENTRY IS ALWAYS FROM THE DISPATCHER.  DIFFERENT INPUT       *
*   IS EXPECTED AT THE TWO ENTRY POINTS                               *
*   1.  IEDQFA -                                                      *
*      A. BUFFER TO BE WRITTEN ON DISK.  IT WILL CONTAIN THE          *
*         RELATIVE RECORD NIMBERS FOR THE UNITS OF THE BUFFER         *
*         THE BUFFER IS POSTED TO THE DISK I/O QCB FROM THE      S21101
*         DESTINATION SCHEDULER.                                      *
*      B. BUFFERS TO BE FLAGGED SERVICED, INTERCEPTED, OR CANCELED    *
*         ON THE MESSAGE QUEUES                                       *
*         POSTED BY BUFFER DISPOSITION, INTERCEPT, OR CANCEL          *
*      C. ERB - AN ERB WILL BE POSTED TO OBTAIN FULL BUFFERS.         *
*         SEND SCHEDULER WILL POST THE ERB TO OBTAIN FULL BUFFERS     *
*         TO SATISFY AN INITIAL REQUEST FOR SENDING                   *
*         BUFFER DISPOSTION WILL POST THE ERB FOR RECALL              *
*         EOBCHECK WILL POST FOR RECALLED BUFFERS                     *
*         THE GET SCHEDULER WILL POST TO OBTAIN FULL BUFFERS TO       *
*         SATISFY A GET                                               *
*         PCI APPENDAGE WILL POST TO GET BUFFERS FOR                  *
*         SUBSEQUENT TRANSMISSION                                     *
*         THE ADDRESS OF THE FIRST BYTE OF DATA TO PUT IN THE         *
*         BUFFER WILL BE IN SCBDEOB                                   *
*                                                                     *
*   2.  IEDQFQ                                                        *
*      A. QCB - THE CPB CLEANUP QCB WILL BE POSTED TO ITSELF     S21101
*         TO INITIATE CLEANING UP OF THE CPBS.                        *
*         THE QCB WILL BE POSTED BY DISK END APPENDAGE AFTER DISKS21101
*         I/O IS COMPLETE AND THE COMPLETED CPBS HAVE BEEN            *
*         PLACED ON THE AVTDKAPQ.                                     *
*      B. BUFFER - A BUFFER UNIT WILL BE POSTED TO SATISFY            *
*         A REQUEST FROM FQ.                                          *
*         BUFFER RETURN WILL POST THE AVAILABLE UNIT TO THE           *
*         CLEANUP QCB                                                 *
*                                                                     *
*OUTPUT -- THE COMBINED OUTPUT OF FA AND FQ WILL BE                   *
*   1. BUFFERS WRITTEN ON DISK                                        *
*   2. ERB WITH FULL BUFFERS POSTED TO ACTIVATE QCB OF THE GET   S21101
*      SCHEDULER.                                                     *
*   3. ERB WITH RECALLED BUFFERS POSTED TO THE SPECIFIED QCB.         *
*   4. DUPLICATE HEADERS POSTED TO SPECIFIED QCB.                     *
*   5. CPBS PUT BACK INTO THE FREE POOL.                              *
*                                                                     *
*EXTERNAL ROUTINES --                                                 *
*        'IEDQDISP' - DSPPOSTR - PLACE AN ELEMENT ON THE READY   S21101
*   QUEUE BY PRIORITY.                                           S21101
*        IGG019RC-WTORTN-DISK ERROR HANDLING                     99226
*        ANY EXTERNAL SUBROUTINE WHOSE ADDRESS IS IN THE PRFTIC SA51783
*        FIELD OF A BUFFER POSTED TO IEDQFA WITH 'EE' PRIORITY  SA51783
*        TO REQUEST A CPB.                                      SA51783
*        THESE SUBROUTINES ARE:                                 SA51783
*        'BUILDCPB' - IN IEDQGQ                                 SA51783
*        'NEWPFEFO' - IN IGG019RP                               SA51783
*        'UPFEFO' - IN IGG019RP                                 SA51783
*                                                                     *
*EXITS-NORMAL -- FA - WHEN THERE ARE NO MORE CPBS AVAILABLE           *
*   OR ELEMENTS TO PROCESS, EXIT IS TO EXCP DRIVER. WHO WILL          *
*   RETURN TO THE DISPATCHER.                                         *
*   FQ - WHEN ALL CPBS HAVE BEEN PROCESSED EXIT IS TO FA              *
*                                                                     *
*EXITS-ERROR-BRANCH TO THE WTORTN OF IGG019RC ON DISK ERRORS     99226
*   A LOGICAL READ ERROR MAY OCCUR WHEN PERFORMING A RECALL      99226
*   A LOGICAL READ ERROR MAY OCCUR WHEN A REQUEST IN MADE TO          *
*   READ A RECORD AND THE RECORD NUMBER OF  RECORD WHEN READ          *
*   DOES NOT AGREE WITH THE REQUESTED RECORD NUMBER.                  *
*   APPROPRIATE ERROR FLAGS ARE SET AND THE ERB IS RETURNED           *
*   TO THE SPECIFIED QCB.                                        S21101
*                                                                     *
*TABLES/WORKAREAS --                                                  *
*   LOCAL FLAGS IN THE TIC FIELD OF THE BUFFERS ARE                   *
*   XBUFFER,XSPECIAL,XREUSDSK,XPARTIAL,XNONREUS.                      *
*   IN THE ERB STATUS FIELD FLAGS ARE                                 *
*   XMSG,XXUSED,XXINQ,XCOMPL,XERROR                                   *
*   LOCAL CONSTANTS - XMASK FOR TERM DSECT                            *
*   DSECTS USED - LCB,SCB,PRF,TRM,AVT,QCB,CPB,DATA,DCB,DISP           *
*   AVTFIELDS - ACTIB,APLKN,APLKF,AVFCT,BFDSB,BFREB,BFRTB,BIT1        *
*   BIT2,CADDR,DATLN,DKAPQ,DKENQ,DOUBL,DSKCT,EA,EINPR,EZERO,FCPB      *
*   RC,RO,HDRSZ,IA,INCPQ,KEYLE,MHCOB,NCPBQ,NOBFQ,PARM,PARM3,     S21101
*   REUSQ,TRNMPT,RUFTN,TXTSZ,UMALN.                                   *
*                                                                     *
*ATTRIBUTES -- REUSEABLE, REFRESHABLE, ENABLED, RESIDENT              *
*                                                                     *
*NOTES -- THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A         *
*    PARTICULAR INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER     *
*    SET.                                                             *
*                                                                     *
**********************************************************************
*                                                                     *
**********************************************************************
*                                                                     *
R0       EQU   0 .                      WORK REG
*                                       ADDR OF LAST THING POSTED
R1       EQU   1 .                      PARAMETER REG
*                                       WORK REG
R2       EQU   2 .                      ADDRESS OF CPB UNIT
*                                       ADDRESS OF QCB OT POST TO
*                                       ADDRESS OF BUFFER UNIT
RSCB     EQU   3 .                      SCB ADDRESS
R3       EQU   3 .
RLCB     EQU   4 .                      LCB ADDRESS
R5       EQU   5 .                      WORK REG
*                                       DUMMY CPB REG
RPRF     EQU   6 .                      BUFFER PREFIX ADDRESS
RPREFIX  EQU   6 .                      BUFFER PREFIX ADDRESS
R6       EQU   6 .
RQCB     EQU   7 .
R7       EQU   7 .
R8       EQU   8 .                      NUMBER OF UNITS IN BFR
*                                       ADDR OF LAST UNIT OF BFR
RPQ      EQU   9 .                      ADDRESS OF PRIORITY
*                                       DEST QCB
R9       EQU   9 .
*                                       WORK REG
*                                       ADDRESS TO MOVE FROM
RDCB     EQU   10 .                     ADDRESS OF DCB
R10      EQU   10 .                     VALUE OF ADDR FOR RECORD
R11      EQU   11 .                     DISPATCHER BASE
*                                       WORK REG
*                                       COUNT TO MOVE
RBASE    EQU   12 .                     PROGRAM BASE REG
RSAVE    EQU   13 .                     ADDR OF AVT SAVE 2
R14      EQU   14 .                     ADDRESS TO MOVE TO
*                                       WORK REG
R15      EQU   15 .                     ADDRESS OF CPB
**********************************************************************
**                                                                    *
*                       CONDITIONS FOR BCR INSTRUCTIONS          S21101
*                                                                S21101
ONES     EQU   1 .                                               S21101
PLUS     EQU   2 .                                               S21101
NOTZERO  EQU   7 .                                               S21101
ZERO     EQU   8 .                                               S21101
EQUAL    EQU   8 .                                               S21101
NOTMINUS EQU   11 .                                              S21101
NOTONES  EQU   14 .                                              S21101
LASTNOFF EQU   X'04'                                            SA52971
DCBOPEN  EQU   X'10' .
XXCTUSED EQU   X'80' .             THE DISABLED CT IS BEING REFER'D
XCTZERO  EQU   X'7F' .
LGB      EQU   X'80' .                  DSORG TO INDICATE LGB    S22024
INCR     EQU   4 .                      INCREMENT VALUE FOR ADDR S21101
DIV4     EQU   2 .                      VALUE TO DIVIDE BY 4     S21101
EIGHT    EQU   8                        MASK FOR ICM           @OZ09304
AD       EQU   7                        ICM/STCM MASK            Y02027
FOUR     EQU   4                        CONSTANT               @OS79957
FIVE     EQU   5                        CONSTANT               @OS79957
TWO      EQU   2 .                                             @OZ14195
*
*
*        THE FOLLOWING FLAGS ARE IN THE ERB STATUS BYTE
*        X'08' MUST NEVER BE ON
*
*
XXHMSG   EQU   X'80' .                  END OF MSG RCVD IN HM
XRDERR   EQU   X'20' .                  LOGICAL RD ERR FROM DISK
*     INITIATE MODE WITH CORE QUEUES - THE NTXT IS NOT THERE YET
*        IF A LOGICAL READ ERROR OCCURS IN INITIATE MODE - FA WILL
*        DROP THE ERB LEAVING LCBDLNK SWITCH SET TO 'NOT POSTABLE'
*        PCI WILL NOT POST THE ERB.  LOGICAL READ ERROR WILL ALSO BE
*        SET IN ERBST.  WHEN HM RECEIVES A BFR IN INIT MODE UNDER
*        THESE CONDITIONS - THE ERB FOR THE DESTINATION LINE WILL
*        BE REPOSTED TO FA WITH AN E0 PRIORITY REQUESTING
*        THE BUFFERS OF THIS MESSAGE AGAIN.  THE DESTINATION LCB
*        WILL BE FOUND FROM THE LCBINSRCE CHAIN OF THE SOURCE LCB.
XCOMPL   EQU   X'02' .
*        COMPLETE REQUEST HAS BEEN DONE
XXXINQ   EQU   X'10' .                  ERB IS IN BFR RTN Q
XMSG     EQU   X'40' .                  END OF MSG FROM THE QUEUE
*
*
*        THE FOLLOWING FLAGS ARE IN THE BUFFER TIC FIELD         S21101
*
*
XPARTIAL EQU   X'40' .
*        NOT A COMPLETE BFR - NO PRFX HERE
XREUSDSK EQU   X'20' .
*        BFR TO BE QUEUED ON REUSABLE DISK
XSPECIAL EQU   X'80' .
*        THE SPECIAL OPERATION REQUIRED IS DONE BUT BFR NOT WRITTEN
XBUFFER  EQU   X'01' .
*        FEFO PTR DONE BUT BFR NOT WRITTEN
XNRDISK  EQU   X'10' .                  TO BE QUEUED ON MR DISK
XSRVCD   EQU   X'02' .                 TO BE FLAGGED SERVICED
*                                                                     *
ONE      EQU   1 .
PCIADD   EQU   X'50' .                                           S22026
XLOGEOM  EQU   X'80' .                  NO PCI SPEC.- END OF INIT
*                                       IAL REQUEST FOR LINE
*        PRFTIC FLAGS WILL BE AS FOLLOWS
*              X'28' - TO BE QUEUED ON REUS DISK
*              X'18' - TO BE QUEUED ON NONREUS DISK
*              AS SET BY DEST SCHEDULER
*              X'88' - SPECIAL FLAG - 2 OPERATIONS WERE TO BE
*              PERFORMED AS A RESULT OF THIS BUFFER BUT CPBS WERE
*              NOT AVAILABLE FOR BOTH
*              X'48' - PARTIAL BUFFER ONLY - NOT ENOUGH CPBS WERE
*              AVAILABLE TO QUEUE THE LAST UNITS
*              WITH THIS FLAG THE SCB ADXR AND NO. OF UNITS LEFT
*              TO QUEUE IN THE BUFFER WILL BE IN THE FIRST       S21101
*              WORD .  THE VALUE OF ADDR IS IN THE SCB
*              X'01'- FEFO PTR HAS BEEN WRITTEN BUT NOT THE BUFFER
*              X'02' - TO BE FLAGGED SERVICED
*                                                                     *
*        ERB STATUS WILL BE AS FOLLOWS
*        IT MUST NEVER HAVE THE X'08' BIT ON
*       X'04' - TRANSMISSION ERROR - TREAT THE REQUEST
*        AS COMPLETED
*        X'02' / COMPLETE - ALL INFO THAT WAS REQUESTED HANDLED
*        ALL CPBS ARE NOT IN
*       XX'20' - ERB IS ALREADY IN THE BFR REQ Q
*                                                                     *
***********************************************************************
*
*    THIS ROUTINE WILL INITIALIZE CPB(S) TO WRITE UNIT(S) OF A   S21101
*    BUFFER TO DISK OR TO READ DISK RECORDS TO SATISFY A REQUEST
*    MADE BY AN ERB.
*
***********************************************************************
         USING AVTSAVE2,RSAVE .                                  S22025
         USING IEDQLCB,RLCB .
         USING IEDQDATA,R2 .
         USING IEDQSCB,RSCB .
         USING IEDQPRF,RPREFIX .
         USING IEDQDISP,R11 .
         USING IEDQQCB,RQCB .
         USING IEDQPQCB,RPQ .
         USING IHADCB,R10 .
         USING IEDQCPB,R15 .
***********************************************************************
         EJECT
*STCB FOR DISK I/O QCB                                                *
         SPACE 2
         DC    AL1(DSPMCPL2) .
         DC    AL1(PROCESS-&CH) .
         SPACE 2
CPBINIT  EQU   * .
         USING *,RBASE .
         LR    RBASE,R15 .
         SR    R0,R0 .
*    CLEAR POST REG
&CH      IEDHJN NOCPBQ .                MODULE ID AND DATE
         SPACE 3
*        THIS SECTION DEALS WITH A NEWLY POSTED ELEMENT - IF IT IS
*        A BUFFER IT WILL GET THE SCB PRI FOR THE PRILVL QCB AND
*        SAVE IT.  IF A MESSAGE IS TO BE SERVICED IT WILL FORCE THIS
*        REQUEST TO BE HANDLED FIRST.
         SPACE  3
         MVI   PRFKEY-IEDQPRF(R1),XCTZERO .
         LR    RPRF,R1 .
         TM    PRFTIC,CPBTICC .         IS THIS A BFR
         BNO   TESTQ .                  BR NOT BFR               A41025
         LA    R2,0(RPRF) .             INSURE POSITIVE R2       A41025
         NI    PRFTIC,CPBTICC+XNRDISK+XREUSDSK
*        THESE ARE THE ONLY VALID FLAGS AT THIS POINT            S21101
         L     RLCB,PRFLCB-1 .          LCB ADDR
         L     RSCB,LCBSCBA-1 .         SCB ADDR
         IC    R2,SCBPRI .              SAVEPRTY QCB
         L     RQCB,SCBDESTQ-1 .
         ST    RQCB,PRFQCBA-1 .
         STC   R2,PRFKEY .
         AIF   (&A NE 1).F002
         B     SRVCDMSG .
         AGO   .F003
.F002    ANOP
         CLI   PRFPRI,PRIDKSRV .
         BE    SRVCDMSG .
         CLI   PRFPRI,PRIFEFO .         IS THIS A REQUEST AN UP  S21101
*                                         DATE OF A FEFO POINTER S21101
         BE    UPFEFO .                   YES, GO UPDATE DISK PTRS21101
*                                         NO, NOT SO             S21101
         LH    R1,PRFSIZE .
         BAL   R14,SUBTRKEY .
         AH    R1,AVTKEYLE .
         STC   R1,PRFPRI .
         TM    PRFSTAT1,PRFNLSTN .      LAST BFR FOR LOCK
         BO    CKINIT .                 BR NO - NO FLAG NEEDED
         TM    PRFSTAT1,PRFDUPLN+PRFERMGN .
*        DUPL HDR OR ERRMSG FOR ORGIGINAL MSG
         BNZ   CKINIT .                 BR IF EITHER
         TM    QCBFLAG,QCBPROC .        IS THIS THE LOCK LINE DEST
         BO    CKINIT .                 BR IF NOT LINE DEST
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN .   LOCK
         BZ    CKINIT .                 BR NOT LOCK
         BM    EXTLOCK .
         NI    SCBSTATE,X'FF'-(SCBLCK1N+SCBMSGLN) .   FLAGS OFF
EXTLOCK  EQU   * .
         OI    PRFTIC,XBUFFER .         SET FLAG NOT TO WRITE FEFO
CKINIT   EQU   * .
         ST    RPRF,AVTDOUBL .
         CLC   AVTDOUBL+1(3),SCBDEOB+1 . WAS THE LAST SUCCESSFUL EOB
*        IN THIS BUFFER
         BNE   TESTQ .
         MVC   SCBDEOB+1(3),PRFCRCD .   SET ADDR THIS RECORD
.F003    ANOP
TESTQ    EQU   * .
         NC    AVTNCPBQ+1(2),AVTNCPBQ+1 .
         BZ    TESTELEM .
         LA    R2,AVTNCPBQ .            ADDR OF NO CPBQ
         LR    R15,RPRF .               SET FOR QMGR
         BAL   R11,ENQMGRB .
         SPACE 3
*        CHECKS FOR MORE ELEMENTS TO BE PROCESSED BEFORE THE EXITS21101
         SPACE 3
PROCESS  EQU   * .
         ICM   RPREFIX,AD,AVTNCPBQ+ONE  ANY CPBS THERE           Y02027
         BZ    CALLEXCP .
         MVC   AVTNCPBQ+1(3),PRFLINK .  DELINK ELEM
TESTELEM EQU   * .
         AIF   (&A NE 1).F004
         B     ERB .
         AGO   .F005
.F004    ANOP
         TM    PRFTIC,CPBTICC .         IS THIS A BFR
         BNO   ERB .
         SPACE 3
*        WILL WRITE A BUFFER OF DISK ALONG WITH THE FEFO POINTER
*        IF NEEDED AND WILL HANDLE CANCELED MESSAGE REQUESTS AND
*        SERVICED MESSAGES.
         SPACE 3
*
*  FOR A BUFFER WHICH HAS BEEN PARTIALLY WRITTEN ON DISK, THE FIRST
*  OF THE UNITS NOT WRITTEN WILL APPEAR ON THE NCPBQ.            S21101
*  THE TIC FIELD WILL HAVE X'18' INDICATING A PARTIALLY QUEUED
*  BUFFER AND A '20' TO INDICATE REUSEABLE DISK OR X'40' FOR NON-
* REUSABLE DISK.  PRFKEY WILL HAVE THE VALUE
* OF ADDRESS FOR THIS UNIT IN BYTES 2,3,4,
* AND THE NUMBER OF REMAINING UNITS IN BYTE 1
*
         TM    PRFTIC,XPARTIAL .        HAS THIS BFR BEEN PARTIALLY
         BNO   CKSERVD .                WRITTEN ON DISK - BR NO
         SR    R8,R8 .
         IC    R8,PRFKEY .              NO. OF UNITS LEFT
         L     R10,PRFKEY .             VALUE OF ADDR
REQUEST  EQU   * .
         BAL   R9,BIGSUBR .
         BAL   R9,SAVE .
         STCM  R10,AD,CPBADDR+ONE       SET ABSOLUTE RECORD NO.  Y02027
         ST    R10,DATFEFO-1-IEDQDATA(R6) .  SET REC NO THIS REC
         MVI   DATFLAGS-IEDQDATA(R6),DATNPRFX .  SET FLAG
         XC    DATCOUNT-IEDQDATA(2,R6),DATCOUNT-IEDQDATA(R6) .
         BAL   R11,EXCPINQ1 .
         BCT   R8,NEXTXTRA .           DECR NO UNITS IN BFR
         IC    R1,AVTDOUBL .
         STC   R1,DATCOUNT-IEDQDATA(R6) . SET SIZE OF DATA IN
         B     PROCESS .                 LAST UNIT
NEXTXTRA EQU   * .
         LA    R10,INCR(0,R10) .        ADD 4 TO ADDR            S21101
NEXTRA   EQU   * .
         LH    R2,AVTDOUBL .
         L     R6,PRFTIC .               NEST UNIT
         STC   R2,PRFTIC .             RESTORE PARTIAL FLAGS
         STCM  R2,PLUS,PRFPRI           RESTORE SIZE OF LAST UNITY02027
         B     REQUEST .
SAVE     EQU   * .
         ICM   R2,PLUS,PRFPRI           SAVE SIZE OF ALST UNIT   Y02027
         IC    R2,PRFTIC .              SAVE FLAGS
         STH   R2,AVTDOUBL .          SAVE ALL
         BR    R9 .                     RETURN
RENQELEM EQU   * .
         TM    PRFTIC,XPARTIAL+CPBTICC .IS THIS A PARTIAL BFR
         BNO   ENQUEUE .                BR NO
         ST    R10,PRFKEY .             VALUE OF ADDR
         STC   R8,PRFKEY .              COUNT OF REMAINING UNITS
ENQUEUE  EQU   * .
*        THIS ELEMENT MUST BE PUT FIRST ON THE FIFO NCPBQ
         ICM   R14,AD,AVTNCPBQ+1        GET TOP OF QUEUE         Y02027
         STCM  R14,AD,PRFLINK           CHAIN TO BUFFER          Y02027
         ST    RPREFIX,AVTNCPBQ .       PUT ELEM FIRST ON CHAIN
         BNZ   CALLEXCP .               BR YES
         ST    RPREFIX,AVTNCPBQ+4 .     IF NO SET PTR TO LAST
         B     CALLEXCP .
BIGSUBR  EQU   * .
         BAL   R14,REQCPB .
         L     R1,CPBXREAF .            UNIT ADDR
         BAL   R14,UNITFREE .           FREE BUFFER              S21101
FREEUNIT EQU   * .
         L     RQCB,PRFQCBA-1 .
         BAL   R14,WRKD .
         BR    R9 .
.F005    ANOP
         AIF   (&A EQ 1).F006
WRKD     EQU   * .
         MVI   CPBRDWR,CPBWRKC .
         ST    RPREFIX,CPBXREAF .       ADDR OF START OF BFR TO WR
         MVI   CPBXDWR,CPBWRC .         INTO DATA FIELD
*   A '00' FLAG INDICATES THAT THIS RECORD HAD A PREFIX          S21101
*        THE FEFO POINTER IS SET TO 0.
         BR    R14 .                   RETURN
REQCPB1  EQU   * .
         LA    R2,0(R3) .               INSURE R2 IS POSITIVE    S21101
*                                         AND NON ZERO           S21101
         LNR   R2,R2 .
REQCPB   EQU   * .
         ICM   R15,AD,AVTFCPB+ONE       ANY CPBS THERE           Y02027
         BZ    RENQELEM .               BR NO
         MVC   AVTFCPB+1(3),CPBNEXT .  DELINK
         LTR   R2,R2 .
         BCR   NOTMINUS,R14 .                                    S21101
         L     R2,CPBXREAF .            SET UNIT ADDR FOR WR DATA
*              TO PASS ON - IT SHOULD REMAIN THE SAME
         MVI   CPBRDWR,CPBWRC .         WRITE DATA COMMAND
         MVI   CPBXDWR,CPBNOPC .        NOP COMMAND CODE
         MVC   CPBADDR+1(3),PRFCHDR .   SET VALUE OF ADDR
         TM    PRFSTAT1,PRFNHDRN .      IS THIS A HEADER
         BCR   1,R14 .                  BR IF NOT HDR            S21101
SETCRCD  EQU   * .
         MVC   CPBADDR+1(3),PRFCRCD .   SET ADDR OF THIS BFR IF HDR
         BR    R14 .
UPFEFO   EQU   * .                                              SA51783
         MVI   PRFSTAT1,X'FF'-PRFNLSTN-PRFNHDRN .               SA51783
*                                       FLAG AS PRIFEFO REQUEST SA51783
NOSPEC   EQU   * .                                              SA51783
         BAL   R14,REQCPB .             GO REQUEST A CPB        SA51783
         SPACE
         L     R11,AVTEA .              SET DSP BASE FOR SUBRTN SA51783
         L     R14,PRFTIC .             SAVE RETURN ADDRESS     SA51783
         ST    R15,PRFTIC .             PASS ADDRESS OF CPB     SA51783
         LR    R15,R14 .                SET RETURN ADDRESS      SA51783
         BALR  R14,R15 .                RETURN TO CALLING SBRTN SA51783
         SPACE
         BAL   R11,EXCPINQ1 .           GO ENQUEUE CPB          SA51783
         B     PROCESS .                GO PROCESS NEXT ELEMENT SA51783
         SPACE
CKSERVD  EQU   * .
         CLI   PRFSTAT1,X'FF'-PRFNLSTN-PRFNHDRN .               SA51783
*                                       PRIFEFO REQUEST         SA51783
         BE    NOSPEC .                 BR YES                  SA51783
         SPACE
         L     RLCB,PRFLCB-1 .          LCB ADDRESS
         L     RQCB,PRFQCBA-1 .
         SR    R11,R11 .
         IC    R11,PRFKEY .
         BAL   R14,FINDEST2 .
         TM    PRFSTAT1,PRFNLSTN .      IS THIS A LAST BFR
         BO    CKCNCLD .                BR NO
         TM    PRFTIC,XSRVCD .         TO BE FLAGGED SERVICED
         BNO   CKCNCLD .               BR NO
         B     JUSTONE .                ALL OTHER PROCESSING IS DONE
.F006    ANOP
SRVCDMSG EQU   * .
         OI    PRFTIC,XSRVCD .          SET FOR LATER IN CASE OF
         TM    PRFSTAT1,PRFNHDRN .      IS THIS A HDR-EOM       SA52971
         BNO   HDRLAST .                BR YES, IF NOT HDR-EOM, SA52971
         MVC   PRFCRCD(3),PRFCHDR .     SET REC NOS AND FLAGS   SA52971
         MVC   PRFCORE(3),PRFCHDR .                             SA52971
         NI    PRFSTAT1,X'FF'-PRFNHDRN .TO LOOK LIKE HDR-EOM    SA52971
HDRLAST  EQU   * .                                              SA52971
         SR    R11,R11 .
         IC    R11,PRFTQBCK .           GET PRI LEVEL           SA52971
         BAL   R14,FINDEST2 .
         TM    QCBFLAG,QCBPROC        . APPLICATION PROGRAM      S21101
         BO    FEFORSET               . YES - BR                 S21101
*** THIS SUBROUTINE DESTROYS REGS 0,1,2, AND 11.  THE QCB       SA52971
*   EXTENSION IS RETURNED IN REG2.  RETURN IS TO +0 IF THIS     SA52971
*   IS NOT A CONCENTRATOR AND TO +4 IF IT IS A CONCENTRATOR.    SA52971
         BAL   R10,FINDLVL .            GO SEE IF PRI LVL       SA52971
         B     SETSDFFO .               BR IF NOT A CONC        SA52971
         TM    QCBEFLG-IEDQQCBE(R2),QCBEOPL .                   SA52971
*        IS THIS A PLVL CONC                                    SA52971
         BNO   SETSDFFO .               BR IF NOT PLVL          SA52971
*** WHEN MARKING SRVCD, IF CONC IS PLVL QUEUED, THE SCB USED    SA52971
*   IS NOT THE REAL ONE, SINCE 'SCBFEFO' CANNOT BE UPDATED,     SA52971
*   HM03 WILL UPDATE THE QCB EXTENSION; THEREFORE, THE          SA52971
*   EQUIVALENT OF SCBFEFO (PRFSRCE) MUST NOW BE UPDATED WITH THESA52971
*   CORRECT FEFO POINTER.                                       SA52971
         MVC   PRFSRCE(3),QCBEFEFO-IEDQQCBE(R2) SAVE FEFO       SA52971
         XC    QCBEHDR-IEDQQCBE(3,R2),QCBEHDR-IEDQQCBE(R2) ZERO SA52971
*                                         HDR PTR AS HM03 FLAG  SA52971
         B     FEFORSET .               GO DON'T RESET 'SENDING'SA52971
SETSDFFO EQU   * .                                              SA52971
         NI    QCBFLAG,X'FF'-QCBSDFFO . RESET CURRENTLY SENDING SA52971
FEFORSET EQU   * .                                              SA52971
         LR    R1,R6 .                  SET COMPARE REG WITH BFRSA52971
*                                         ADDRESS               SA52971
         AIF   (&A NE 3).F006AA .                               SA52971
         TM    PRFCRCD+L'PRFCRCD-1,CPBQTYPE IS THIS DISK ADDR   SA52971
         BNZ   TSTLF .                  YES, WE'RE SET FOR COMP SA52971
         L     R1,PRFCRCD-1 .           GET FEFO CHAIN ADDRESS  SA52971
TSTLF    EQU   * .                                              SA52971
.F006AA  ANOP  , .                                              SA52971
         CLC   PRFCRCD-IEDQPRF(3,R1),QCBLFEFO LAST MSG          SA52971
         BNE   NOQCB .                  NO, BR                   S22025
         MVI   QCBDATFL,DATSENT .       FLAG MESSAGE SERVICED    S21101
         MVC   QCBDATSQ(2),PRFTQBCK+1 . SAVE SEQ OUT            SA52971
*                                       IS THIS SCAN START      SA50192
         CLC   PRFCRCD-IEDQPRF(,R1),QCBPFEFO .                  SA50192
         BNE   NOQCB .                  BR NO                   SA50192
         SPACE
         OI    QCBDATFL,DATIFEFO .      SET INITIAL FEFO        SA50192
NOQCB    EQU   *                          .                      S21101
         BAL   R14,DECRMGCT .
         TM    QCBDSFLG,QCBDISK         CORE ONLY              @SA71965
         BNZ   NOQCB1                   BRANCH IF NO           @SA71965
         NC    QCBFFEFO,QCBFFEFO        FEFO CHAIN EMPTY       @SA71965
         BNZ   NOQCB1                   BRANCH IF NO           @SA71965
         XC    QCBLFEFO,QCBLFEFO        ERASE NONUNIQUE        @SA71965
*                                       CORE QUEUE BRF ADDR    @SA71965
NOQCB1   EQU   *                                               @SA71965
         L     R1,PRFTIC .              SAVE NEXT UNIT
         MVI   SCBHBFNO,AVTEZERO .      CLEAR FOR NEXT MSG
         CLI   PRFNBUNT,ONE .
         BE    JUSTONE .
         IC    R5,PRFNBUNT .            NO. OF UNITS IN THIS BFR
         MVI   PRFNBUNT,ONE .           REPLACE NUMBER OF UNITS
         BCTR  R5,0 .                   FREED
*        FREE ALL BUT FIRST UNIT - 1 HAS NEXT UNIT ADDR
         STC   R5,PRFNBUNT-IEDQPRF(R1) .   NEW NO. OF UNITS
         BAL   R14,RTNBFR .
         L     RQCB,PRFQCBA-1 .         RESTORE QCB ADDR
JUSTONE  EQU   * .
         AIF   (&A NE 3).F008
         LA    R15,FROMDISK .           SET RTN ADDR
         TM    QCBDSFLG,QCBCORE .       MSG IN CORE
         BCR   NOTONES,R15 .            BR NO                    S21101
*
*  WHEN A MSG IS READ TO SEND, SCBQTYPE IS SET TO INDICATE WHICH
*  TYPE OF Q THE MSG IS BEING SENT FROM.
*
*  PRFTIC WILL BE FLAGGED WITH A X'80' IF A SPECIAL CONDITION EXISTS
*
         TM    PRFTIC,XSPECIAL .        HAS THIS MSG BEEN FREED FROM
         BCR   ONES,R15 .               THE CORE Q - BR YES      S21101
         LR    R7,R15 .
         TM    PRFCHDR+L'PRFCHDR-1,CPBQTYPE SENT FROM CORE      SA52971
         BNZ   DISKMSG .                NO, BR                  SA52971
.F008    AIF   (&A EQ 2).F009
         TM    LCBSTAT1,LCBINITN .      SENDING INIT MSG
         BNO   FREEIT .                 BR NO
*        IF INITIATE MODE - THE MSG COULD BE FLAGGED SERVICED ( AS
*        IN THE CASE OF ADDRESSING ERRORS) BEFORE THE MESSAGE HAS
*        COMPLETELY ARRIVED. - IF THIS HAPPENS, THE MSG SHOULD
*        NOT BE FLAGGED SERVICED BUT ADDED TO THE FEFO Q WHEN
*        IT IS COMPLETELY RECEIVED.
         L     R1,PRFCORE-1 .           ADDR OF A BFR OF THIS
*                                       MSG IN THE QUEUE.
         L     R1,PRFLCB-1-IEDQPRF(R1) .  ADDR OF SRCE LCB
         TM    LCBSTAT1-IEDQLCB(R1),LCBINITN+LCBRECVN .
*        IS SRCE LINE STILL TRANSMITTING AN INIT MODE MSG
         BNO   FREEIT .                 BR NO
         L     R7,LCBINSRC-1-IEDQLCB(R1) .  ADDR OF DEST LINE
         LA    R7,0(R7) .               CLEAR FOR COMPARE
         LA    RLCB,0(RLCB) .           CLEAR FOR COMPARE
         CLR   R7,RLCB .                STILL SENDING TO THIS LINE
         BNE   FREEIT .                 BR NO
*        IF THE LCB HAS REACHED BFR DISPOSITION - THE EOM BFR
*        HAS REACHED DEST. SCH. - BD WILL FREE ALL UNUSED BFRS
*        BEFORE POSTING THE EOM BFR TO H M.
         NC    LCBLSPCI-IEDQLCB(2,R1),LCBLSPCI-IEDQLCB(R1) .
*        HAVE THE BFRS BEEN FREED
         BZ    FREEIT .                 BR IF BFRS HAVE BEEN BFRRE
*        BY BD
         NI    LCBSTAT1-IEDQLCB(R1),X'FF'-LCBINITN .
*        RESET INIT MODE FOR THIS SOURCE TO FORCE MSG INTO FEFO
         B     POSTBFR .                DO NOT FREE MSG FROM Q
FREEIT   EQU   * .
         L     R15,ADFREEMS .           FREE MSG FROM CORE QUEUE UNI
         BALR  R7,R15 .                 UNITS
         L     RQCB,PRFQCBA-1 .         RESTORE QCB ADDR
         AIF   (&A NE 3).F009
         TM    QCBDSFLG,QCBREUS+QCBNREUS .
*                       WAS THIS MSG DISK QUEUED ALSO
         BZ    POSTBFR .               BR NO
*
*  THIS SPECIAL FLAG MEANS THE MSG HAS BEEN FREED FROM THE CORE Q
*  BUT NOT FLAGGED SERVICED ON DISK.
*
.F009    AIF   (&A EQ 1).F010
         AIF   (&A EQ 2).F009A
FROMDISK EQU   * .
         OI    PRFTIC,XSPECIAL .        FLAG SPECIAL - FREED FROM CORE
         LPR   R2,R2 .                  RESET 2
.F009A   ANOP
         BAL   R14,REQCPB1 .            SET A CPB
         USING IEDQDATA,R2                                       S21101
         MVI   DATFLAGS,DATSENT  .      FLAG MSG SERVICED        S21101
         TM    PRFSVFFO+L'PRFSVFFO-1,CPBQTYPE  DISK ADDR        SA52971
         BNZ   DISKADDR                 BRANCH YES              SA52971
         NI    PRFSVFFO+L'PRFSVFFO-1,X'FF'-LASTNOFF  INSURE     SA52971
*                                       PROPER CORE ADDRESS     SA52971
DISKADDR EQU   *                                                SA52971
         MVC   DATFEFO(3),PRFSRCE .     SET FEFO PTR            SA52971
         MVC   DATSEQOT(2),PRFTQBCK+1 . SET SEQ OUT             SA52971
         CLC   QCBPFEFO,PRFCRCD .       IS THIS PFEFO           SA50192
         BNE   NOTPFEFO .               BR NO                   SA50192
         SPACE
         OI    DATFLAGS,DATIFEFO .      SET INITIAL FEFO        SA50192
NOTPFEFO EQU   * .                                              SA50192
         BAL   R11,EXCPINQ1 .
.F010    ANOP
POSTBFR  EQU   * .
         LR    R1,RPREFIX .             FREE THIS UNIT
         BAL   R14,UNITFREE .                                    S21101
         B     PROCESS .                GO GET NEXT ELEM
DECRMGCT EQU   * .
         LH    R11,QCBMSGCT .           DECREASE MSGCT BY ONE     M6298
         BCTR  R11,0 .                                            M6298
         STH   R11,QCBMSGCT .                                     M6298
         BR    R14 .
         AIF   (&A EQ 1).F011
CKCNCLD  EQU   * .
         TM    PRFSTAT1,PRFCNCLN .
         BNO   CKDUPLHD .               BR NO
         AIF   (&A NE 3).F010BB
         TM    QCBDSFLG,QCBCORE .       CORE W/ DISK BACKUP
         LA    R7,NOBACKUP .            SET RTN ADDR
         BCR   NOTONES,R7 .             BR IF DISK ONLY          S21101
*        IF YES - FREE THE MSG FROM THE CORE QUEUE
         TM    LCBSTAT1,LCBINITN .      INIT MODE
         BNO   DISKMSG .                BR NO - FREE MSG
         TM    LCBINSRC+2,XXXON .       BEING SENT
         BCR   NOTONES,R7 .             BR IF BEING SENT-NO FREE S21101
DISKMSG  EQU   * .
         L     R15,ADFREEMS .           ADDR OF SUBROUTINE
         MVC   AVTDOUBL+4(3),PRFCRCD .  DISK ADDR OF BFR
         TM    PRFSTAT1,PRFNHDRN .      THIS A HDR
         BNO   CRCDOK .                 BR IF HDR
         MVC   AVTDOUBL+4(3),PRFCHDR .  ADDR OF HDR ON DISK
CRCDOK   EQU   * .
         L     R2,QCBCFHDR-1 .          ADDR OF FIRST ON P QCB
         LA    R2,0(R2) .               CLEAR HI
CKCRCD   EQU   * .
         LTR   R2,R2 .                  IS ONE THERE
         BCR   ZERO,R7 .                IF NO - RETURN           S21101
         ST    R2,AVTDOUBL .            ADDR OF BFR TO FREE
         CLC   AVTDOUBL+4(3),PRFCRCD-IEDQPRF(R2) .
*        THIS THE HDR COPY OF THIS MSG
         BE    HAVEADDR-FREEMSG(R15) .  BR YES - THIS IS IT - GO
*        FREE IT
         L     R2,PRFNHDR-IEDQPRF(R2) . NEXT HDR IN Q
         SRL   R2,8 .                   SHIFT ADDR OVER
         B     CKCRCD .                 GO LOOK AT THIS ONE
NOBACKUP EQU   * .
.F010BB  ANOP
         L     RQCB,PRFQCBA-1 .         RESTORE QCB ADDR
         TM    PRFSTAT1,PRFNHDRN .      HDR SEG
         BNO   WRITE .                  YES - PUT CNCLD FLAG WITH BFR
         TM    PRFTIC,XSPECIAL .
         BO    WRITEBFR .               CNCLD FLAG HAS BEEN DONE
         BAL   R14,REQCPB1 .
         BAL   R14,DECRMGCT .
         XC    DATFLAGS-IEDQDATA(6,R2),DATFLAGS-IEDQDATA(R2) .
*        CLEAR DATA FIELD
         MVI   DATFLAGS-IEDQDATA(R2),DATCNCLD .SET CNCLD FLAG
         OI    PRFTIC,XBUFFER+XSPECIAL . FLAG FOR CNCL DONE AND FEFO
         BAL   R11,EXCPINQ1 .
         B     WRITEBFR .                 TO WRITE OUT THIS BFR
CKDUPLHD EQU   * .
*            FROM BFR PRFX INTO SCB PRF WORK AREA
         TM    PRFSTAT1,PRFDUPLN .      IS THIS A DUPL HDR
         BNO   WRITEBFR .               BR NO
         BAL   R8,SETFEFO .
         BAL   R14,REQCPB .
         NI    PRFTIC,X'FF'-XBUFFER .  SET FLAG OFF
         LR    R10,R6 .
         L     R6,CPBXREAF .            ADDR OF CPB UNIT
         LH    R14,AVTKEYLE .
         EX    R14,TRANSFER .           TRANSFER DATA TO CPB UNIT
         BAL   R14,WRKD .
*                                       SAVE PRI LEVEL ON DISK  SA51078
         MVC   PRFPLQCB,PRFKEY-IEDQPRF(R10) .                   SA51078
         XC    DATFLAGS-IEDQDATA(8,R6),DATFLAGS-IEDQDATA(R6) . CLEAR
         LR    R2,R10                   SAVE REG               @YA06869
         SR    R11,R11                  CLEAR FOR IC           @YA06869
         IC    R11,PRFPLQCB             GET PRIORITY LEVEL     @YA06869
         BAL   R14,FINDEST2             GET PRIORITY QCB       @YA06869
         MVC   DATFLAGS-IEDQDATA(,R6),QCBDATFL  SET DATA FLAGS @YA06869
         LR    R10,R2                   RESTORE REG            @YA06869
         BAL   R14,SETCRCD .           SET REC. NO. AND DATA SET
         BAL   R11,EXCPINQ1 .
         LR    R1,R10 .
         L     R2,LCBRCQCB .            ADDR TO POST TO
         MVI   PRFPRI-IEDQPRF(R1),PRIRCQCB .  SET PRTY
         LA    R14,PROCESS .            SET RTN ADDR
         NI    PRFTIC-IEDQPRF(R1),X'FF'-XBUFFER .  FLAG OFF
         B     POST .                   POST BFR
CNCLDCK  EQU   * .
         TM    PRFSTAT1,PRFNHDRN .      IF NOT A HDR - IGNORE IT
         BO    NOSET .
         BAL   R14,DECRMGCT .                                     M6298
         OI    DATFLAGS-IEDQDATA(R6),DATCNCLD .      SET CNCLD FLAG
         B     NOSET .                  CONTINUE
WRITEBFR EQU   * .
         TM    PRFSTAT1,PRFNLSTN .      IS THIS A LAST SEG
         BO    WRITE .                  BR NO
         LH    R1,PRFSRCE               SOURCE OFFSET          @YA03936
         N     R1,AVTCLRHI              CLEAR HI HALF          @YA03936
         LTR   R1,R1                    SOURCE SPECIFIED?      @YA03936
         BZ    NOTPROC                  BRANCH IF NO           @YA03936
         L     R15,AVTRNMPT             CORRECT OFFSET TO      @YA03936
         BALR  R14,R15                  AN ADDRESS             @YA03936
         TM    TRMSTATE-IEDQTRM(R1),TRMPROC PUT PROCESS?       @YA03936
         BNO   NOTPROC                  BRANCH IF NO           @YA03936
         CLC   TRMSTAT+1-IEDQTRM(2,R1),AVTFZERO DCB CLOSED     @YA03936
         BE    CKBFRFLG                 BRANCH IF YES          @YA03936
NOTPROC  EQU   *                                               @YA03936
         TM    LCBSTAT1,LCBINITN+LCBRECVN
*        RECEIVING AN INITIATE MODE MESSAGE
         BNO   CKBFRFLG .               BR NO
         NI    LCBSTAT1,LCBINITF .      INIT OFF
         TM    LCBINSRC+2,XXXON .       IS THIS INIT MODE MSG
*                   CURRENTLY BEING SENT
         BO    CKBFR .                  BR IF NOT BEING SENT
*     DO NOT PUT THIS MSG IN THE FEFO CHAIN
         OI    PRFTIC,XBUFFER .
         B     WRITE .
XXXON    EQU   X'01' .
CKBFR    EQU   * .
         NI    LCBINSRC+2,X'FF'-XXXON .   TURN SRC BIT OFF
CKBFRFLG EQU   * .
         BAL   R8,SETFEFO .
WRITE    EQU   * .
         SR    R8,R8 .
         IC    R8,PRFNBUNT .            NO. OF UNITS TO WRITE
         BAL   R9,BIGSUBR .
         BAL   R14,SETCRCD .           SET REC. NO. AND DATA SET
         OI    PRFTIC,XPARTIAL .        SET PARTIAL FLAGS
         BAL   R9,SAVE .
         MVC   PRFPLQCB,PRFKEY .        SAVE PRI LEVEL ON DISK  SA51078
         XC    DATFLAGS-IEDQDATA(8,R6),DATFLAGS-IEDQDATA(R6) . CLEAR
         TM    PRFSTAT1,PRFCNCLN .      MSG TO BE CNCLD
         BO    CNCLDCK .                BR YES TO CK IF HDR
NOSET    EQU   * .
*                                       IS THIS HDR LAST        SA50192
         TM    PRFSTAT1,PRFNHDRN+PRFNLSTN .                     SA50192
         BNZ   NOTHDRL .                BR NO                   SA50192
         SPACE
         SR    R11,R11 .                CLEAR REG               SA50192
         IC    R11,PRFPLQCB             QCB PRIORITY LEVEL      SA50192
         BAL   R14,FINDEST2 .           GET PRIORITY QCB        SA50192
         SPACE
         CLC   QCBLFEFO,PRFCRCD .       LAST MSG ON QUEUE       SA50192
         BNE   NOTHDRL .                BR NO                   SA50192
         SPACE
*                                       SET DATA FLAGS          SA50192
         MVC   DATFLAGS-IEDQDATA(,R6),QCBDATFL .                SA50192
NOTHDRL  EQU   * .                                              SA50192
         BAL   R11,EXCPINQ1 .
         BCT   R8,WRITEUNT .            ARE ANY UNITS LEFT BR-YES
         B     PROCESS .                BR NO
WRITEUNT EQU   * .
         MVC   AVTDOUBL+5(3),PRFXTRA . VALUE OF ADDR FOR
         L     R10,AVTDOUBL+4 .          THE NEXT UNIT
         B     NEXTRA .                 PROCESS THE UNITS
SETFEFO  EQU   * .
         MVC   AVTSAVE2+64(6),QCBDATFL  SET UP WORK AREA         S21101
         TM    PRFTIC,XBUFFER .         HAS THE FEFO PTR BEEN WRITTEN
         BCR   ONES,R8 .                BR YES                   S21101
         MVC   AVTSAVE2+65(3),PRFCHDR    SAVE CURRENT HDR        S21101
         TM    PRFSTAT1,PRFNHDRN .
         BO    TESTFEFO .
         MVC   AVTSAVE2+65(3),PRFCRCD    SAVE CURRENT RCD        S21101
TESTFEFO EQU   * .
         BAL   R14,REQCPB1              GETG CPB                 S21101
         MVI   QCBDATFL,AVTEZERO .      SAVE FLAGS FOR LFEFO    SA52971
         XC    QCBDATSQ(2),QCBDATSQ .   SAVE SEQ NO. FOR LFEFO  SA52971
         NC    QCBFFEFO(3),QCBFFEFO .
         BNZ   TSTLFEFO .               BR IF ONE THERE         SA52971
         MVC   QCBFFEFO(3),AVTSAVE2+65 .SET FEFO                 A49211
* THIS MOVE CANNOT BE DONE EARLIER SINCE THERE MAY BE NO CPBS    A49211
TSTLFEFO EQU   * .                                              SA52971
         NC    QCBPFEFO(3),QCBPFEFO .   SCAN START POINT SET    SA52971
         BNZ   WRFEFO .                 BR YES                  SA50192
         MVC   QCBPFEFO(3),AVTSAVE2+65 .SET FOR FIRST TIME      SA52971
         MVC   QCBPREVF(3),AVTSAVE2+65 .SET FOR FIRST TIME      SA52971
         OI    QCBDATFL,DATIFEFO .      SET INITIAL FEFO        SA50192
         TM    PRFSTAT1,PRFNHDRN .      TEXT BFR                SA50192
         BO    SETDATFL .               BR YES                  SA50192
         SPACE
         BAL   R14,CPBFREEA .           GO LET CPB GO           SA52971
         B     SETLFEFO .               SET LAST FEFO POINTER    A49211
SETDATFL EQU   * .                                              SA50192
         XC    DATFLAGS(6),DATFLAGS .   CLEAR DATA FIELD        SA50192
         MVC   DATFLAGS,QCBDATFL .      SET DATA FLAGS          SA50192
         BAL   R11,EXCPINQ1 .           GO ENQUEUE CPB          SA50192
         B     SETLFEFO .               SET LAST FEFO POINTER   SA50192
         SPACE
WRFEFO   EQU   * .
*        IF ONLY 1 THERE THE MSG COULD HAVE BEEN READ BUT THE
*        FEFO PTR MAY NOT BE UPDATED YET , SO THE SCB IN WHICH
*        THE FEFO PTR WAS SAVED MUST BE UPDATED.
         ST    R15,AVTSAVE2+4 .         SAVE                    SA52971
         ST    R8,AVTSAVE2 .            SAVE R8
         LR    R8,R9 .                  SET PQCB FOR SUBR
         LA    R9,QCBLFEFO .            PASS PTR TO FEFO TO CHNGSA52971
         LA    R10,AVTSAVE2+65 .        PASS PTR TO NEW FEFO    SA52971
         L     R15,AVTHM02 .            FIND HM03 FROM HM02 - 4
         SH    R15,AVTHA4 .
         L     R15,0(R15) .             ADDR HM03
         BALR  R14,R15 .
         LR    R9,R8 .                  RESTORE                 SA52971
         L     R8,AVTSAVE2 .            RESTORE RTN REG
         L     R15,AVTSAVE2+4 .         RESTORE                 SA52971
         AIF   (&A EQ 2).F010A
         TM    QCBDSFLG,QCBCORE .       CORE ALSO
         BNO   NOCORE .                 BR NO
         NC    QCBCFHDR(3),QCBCFHDR .   IS ONE THERE
         BZ    NOCORE .                 BR NO
         MVC   AVTSAVE2+61(3),QCBCFHDR . ADDR FIRST IN Q         S21101
COREFEFO EQU   * .
         L     R2,AVTSAVE2+60         . MSG HDR                  S21101
         CLC   PRFCRCD-IEDQPRF(3,R2),QCBLFEFO .
*                   IS THIS THE MSG IN CORE TO PUT THE FEFO
*               PTR IN
         BE    SETCFEFO .               BR YES
         CLC   PRFNHDR-IEDQPRF(,R2),AVTFZERO                    SA51078
*                                       IS THIS THE LSAT MSG ON Q
         BE    NOCORE .
         MVC   AVTSAVE2+61(3),PRFNHDR-IEDQPRF(R2) . NEXTMSG      S21101
         B     COREFEFO .
SETCFEFO EQU   * .
         MVC   DATFEFO-IEDQDATA(3,R2),AVTSAVE2+65                S21101
.F010A   ANOP  , .                                              SA52971
NOCORE   EQU   * .                                              SA52971
         L     R2,CPBXREAF .
         MVC   CPBADDR+1(3),QCBLFEFO    FEFO PTR TO WRITE        S21101
         MVC   DATFLAGS(6),AVTSAVE2+64  SET DATA FIELD OF RECORD S21101
         BAL   R11,EXCPINQ1 .
SETLFEFO EQU   * .
         OI    PRFTIC,XBUFFER .         FEFO PTR HAS BEEN DONE
         MVC   QCBLFEFO(3),AVTSAVE2+65  UPDATE LAST FEFO         S21101
         AIF   (&A EQ 1).F010B                                   A42400
         TM    QCBDSFLG,QCBTSQ          TSO QUEUES               S22028
         BZ    LSTCB                    NO-BRANCH                S22028
         L     R14,AVTTSOPT             ADDR TSINPUT QCB        SA61768
         L     R14,TSIDEST-IEDQTSI(R14) ADDR HM STCB            SA61768
         B     FOUNDHM                  FOUND HM STCB            S22028
LSTCB    DS    0H                                                S22028
         L     R14,QCBSTCHN-1           ADDR OF FURST STCB      SA61768
CLI08    EQU   * .                                               A42400
         CLI   0(R14),DSPMCPL6          IS THIS HM STCB         SA61768
         BE    FOUNDHM .                BE YES                   A42400
         L     R14,4(R14)               ADDR OF NEXT STCB       SA61768
         B     CLI08 .                  IS THIS IT               A42400
FOUNDHM  EQU   * .                                               A42400
         LR    R0,RBASE                 SAVE BASE REG           SA61768
         LA    RBASE,6(R14)             SET HM BASE             SA61768
         L     R2,0(R14)                ADDR OF FIND STCA IN HM SA61768
         BALR  R14,R2                   HM WILL SAVE & REST REGSSA61768
         LR    RBASE,R0                 RESTORE BASE            SA61768
.F010B   ANOP                                                    A42400
         BR    R8 .
.F011    ANOP
         TITLE '''IEDQFQ'' - CPB CLEANUP' .                      S22025
*        CONTROL RECEIVED HERE WHEN CPB'S HAVE BEEN FREED BY DISKS21101
*        END APPENDAGE AND THE QCB POSTED TO ITSELF, OR A BUFFER
*        UNIT WAS POSTED BECAUSE AN EARLIER OPEARTION WAS OUT
*        OF BUFFER UNITS
         SPACE 3
         DC    C'IEDQFQ' .
IEDQFQ   DS    0H .
***********************************************************************
*
*        STCB FOR CPB CLEANUP QCB
*
         DC    AL1(DSPMCPL2) .
         DC    X'00' .
*                                                                     *
***********************************************************************
CPBCLNUP EQU   * .
         USING *,R15 .
         L     RBASE,BASE .
         DROP  R15 .
         USING IEDQCPB,R15 .
         AIF   (&A NE 1).F012
         B     CALLBUFF .
         AGO   .F013
.F012    ANOP
         LA    R7,0(R7) .               CLEAR HI
         LA    R1,0(R1) .               CLEAR HI
         CLR   R1,R7 .
*            WAS THE ELEMENT POSTED THE QCB
         BNE   CALLBUFF .
         MVI   QCBPRI,AVTEZERO .        WET THE NOT POSTED FLAG
*                                       FOR DISK END APPENDAGE
         SPACE 3
*        PUT ANY WRITE CPB'S BACK IN THE FREE POOL, AND PUT READ
*        CPB'S ON THE ENABLED QUEUE.
         SPACE 3
EMTYAPPQ EQU   * .
         LA    R1,AVTDKAPQ .            APP. CPB Q
         BAL   R14,DEQMGRC .
         B     APPQEMTY .                IF NONE THERE
         EJECT ,                                                 99226
*                                                                99226
* WHEN THE CPB COMES BACK FROM APPENDAGE, A TEST IS MADE TO      99226
* DETERMINE IF THERE WAS A DISK ERROR.  IF SO IT PICKS UP A      99226
* WTO ROUTINE IN IGG019RC TO HANDLE IT                           99226
*                                                                99226
CPBER    EQU   X'01' .                  CPB FLAG FROM DISK ERROR 99226
         TM    CPBFLAG,CPBER .          DID CPB HAVE I/O ERROR   99226
         BZ    GOODCPB .                  NO, GOOD CPB           99226
*                                         YES, I/O ERROR         99226
         LR    R7,R15 .                 GET CPB FOR WTO          99226
         L     R15,AVTFL .              GET ADDRESS OF IGG019RC  99226
         L     R15,4(,R15) .             GET 2ND WORD OF RC      99226
         BALR  R14,R15 .                CALL DISK ERROR WTO RTN  99226
*                                                                99226
         LR    R15,R7 .                 RESTORE CPB BASE         99226
GOODCPB  EQU   *                                                 99226
         TM    CPBSEEK,X'80' .          THIS ONE FIXED
         BO    PUTONENQ .
         LA    R14,EMTYAPPQ .
         BAL   R11,CKWRITE .
PUTONENQ EQU   * .
         LA    R2,AVTDKENQ .            ENABLED Q
         LA    R11,EMTYAPPQ .            SET RETN ADDR
         B     ENQMGRC .
APPQEMTY EQU   * .
         LA    R1,AVTDKENQ .            ENABLED Q
         BAL   R14,DEQMGRC .
         B     CPBSGONE .               IF NONE THERE
         TM    CPBFLAG,CPBER            CPB HAVE I/O ERROR      SA61800
         BZ    GOODCPB1                 BR NO                   SA61800
         LR    R7,R15                   GET CPB FOR WTO         SA61800
         L     R15,AVTFL                ADDR OF IGG019RC        SA61800
         L     R15,4(,R15)              ADDR OF WTO RTN IN 19RC SA61800
         BALR  R14,R15                  CALL DISK ERROR WTO RTN SA61800
*                                                               SA61800
         LR    R15,R7                   RESTORE CPB BASE        SA61800
GOODCPB1 EQU   *                                                SA61800
         TM    CPBSEEK,X'80' .          THIS ONE FIXED
         LA    R11,CALCKERB .
         BCR   ONES,R11 .                                        S21101
         LA    R14,APPQEMTY .
         B     CKWRITE .
CPBSGONE EQU   * .
         SR    R0,R0 .                  CLEAR R0 FOR POST REG
         B     PROCESS .                                         S21101
CKWRITE  EQU   * .
         OI    CPBSEEK,X'80' .          FLAG FIXED
         TM    CPBRDWR,CPBWRITB .
*                  IS THIS A WRITE OF ANY KIND
         BO    CPBFREEA .
         BR    R11 .
.F013    AIF   (&A EQ 1).F016
EXCPINQ1 EQU   * .
         LA    R14,ENQMGRC .            ADDR OF Q MGR
         B     EXCPINPT .
.F016    ANOP
CALLBUFF EQU   * .
         L     RBASE,ADRFA01 .           RESET BASE REG
         DROP  RBASE .
         USING IEDQFA01,RBASE .
         B     BUFFER .                  AND ADJUST ADDRESSIBILITY
         DROP  RBASE .
         USING CPBINIT,RBASE .
         AIF   (&A EQ 1).F017
CALCKERB EQU   * .
         L     RBASE,ADRFA01 .
         DROP  RBASE .
         USING IEDQFA01,RBASE .
         B     CKERB .
TRANSFER EQU   * .
         MVC   PRFSUNIT-1(0),PRFSUNIT-1-IEDQPRF(R10) .
.F017    ANOP
         USING CPBINIT,RBASE .
         TITLE '''IEDQFA'' - ERB' .                              S22025
*        AN ERB HAS BEEN POSTED REQUESTING A MESSAGE - THIS SECTION
*        WILL DETERMINE THE TYPE OF REQUEST, HOW MUCH DATA IS NEEDED
*        AND WHETHER TO GET IT FROM DISK OR CORE QUEUES.
         SPACE 3
ERB      EQU   * .
         LR    RLCB,RPREFIX .
         SH    RLCB,DCH .
         L     RSCB,LCBSCBA-1           SCB ADDR                SA52971
         TM    LCBERBST,LCBERROR .      TRANS ERROR ON SEND
         BNO   NOERROR .                BR IF NO ERROR
ERBERROR EQU   * .                                               A44866
         L     RBASE,ADRFA01 .          SET SECOND BASE REG
         BAL   R5,FREEBFRS-IEDQFA01(RBASE)
*        FREE ATTACHED BFRS IF ANY
ADRTAG   EQU   * .                      LABEL FOR ADDRESSIBILITY
         L     R2,LCBRCQCB .       SET TO POST THE ERB TO
         LA    R2,AVTEZERO(R2)          CLEAR HI BYTE           SA54262
         LA    R1,LCBERB .         THE SPECIFIED QCB
         MVI   LCBERBPY,PRIDSPLB-1 .    SET PRIORITY FOR POST    A44866
         LA    R14,CALLPROC-ADRTAG(R5) .  SET RTN
         B     POST-ADRTAG(R5) .        POST THE ERB
NOERROR  EQU   *
         CLI   LCBERBPY,PRIINTRQ .      INITIAL REQUEST          A41025
         BNE   QTYPSET .                BR NOT INIT              A41025
         NC    LCBERBCH(3),LCBERBCH .   ANY BFRS THERE           A41025
         BNZ   QTYPSET .                BR IF BFRS THERE         A41025
         NI    SCBQTYPE,X'0F' .         CLEAR FOR LATER TEST FOR A41025
*                                       HDR READ                 A41025
QTYPSET  EQU   *                                                 A41025
         MVI   SCBCPBNO,AVTEZERO .
         MVI   SCBNXCPB,EONE .          SET NO OF NEXT CPB TO GET
         XC    AVTDOUBL(7),AVTDOUBL .    CLEAR WORK AREA
*        THE ERBPY FIELD WILL SERVE AS A FLAG - IF IT IS NON ZERO
*        A BUFSIZE MUST BE PLACED IN ERBQB+1.  IF THE KEY
* IS ZERO THE SIZE IS THERE.
         LA    R7,SZTHERE .             SET RTN ADDR
         TM    LCBSTAT1,LCBRCLLN .      IF THIS A RECALL - NOT
         BCR   ONES,R7 .                TO BE COMPUTED NOW       S21101
         CLI   LCBERBKY,AVTEZERO .
         BCR   EQUAL,R7 .               BR IF ALREADY DONE       S21101
         NC    LCBERBCH(3),LCBERBCH .   ARE BUFFERS THERE
         BCR   ZERO,R7 .                BR IF NO BUFFER YET      S21101
*              COMPUTE ZIZE YET
         L     RPRF,LCBERBCH-1 .
         B     OFFSET .                 RTN SET ALREADY
SZTHERE  EQU   * .
         OI    LCBERBCT+1,XXCTUSED .    FLAG FOR APPENDAGE
         IC    R7,LCBERBCT+1 .          DISABLED CT
         MVI   LCBERBCT+1,AVTEZERO .    ZERO CT
         LA    R7,4096-XXCTUSED(R7) .   CLEAR HI BIT OF LOW BYTE
         IC    R2,LCBERBCT .            ENABLED CT
         AR    R2,R7 .                  ADD CTS
         STC   R2,LCBERBCT .            SET NEW CR
         L     RSCB,LCBSCBA-1 .
         BAL   R14,FINDESTQ .
         TM    LCBSTAT1,LCBRCLLN .      RECALL ?
         BO    RECALL .                 BR YES
         AIF   (&A NE 3).F026
         TM    QCBDSFLG,QCBCORE .
*                 IS THERE A CORE COPY
         BNO   DISKONLY .               BR NO
.F026    AIF   (&A EQ 2).F027
         TM    LCBERBST,XRDERR .         INIT AND NTXT NOT THERE
         BO    FIXSCSEG .
         CLI   LCBERBPY,PRISBPCI .     SB PCI REQ
         BNE   INITREQ .               BR NO TO GET ALL BFRS
CKPREV   EQU   * .
         AIF   (&A NE 1).F026A
         B     CALLFQ .
         AGO   .F028
.F026A   ANOP
         TM    SCBQTYPE,SCBCOREQ .      DID THIS MSG COME FROM CORE
         BO    CALLFQ .                 BR YES
.F027    ANOP
         SPACE 3
*        WILL BUILD CPB'S FOR A DISK READ
         SPACE 3
DISKONLY EQU   * .
         NI    LCBERBST,X'FF'-LCBRDERR ..   RESET ERROR BIY
         XC    AVTDOUBL+3(5),AVTDOUBL+3 INITIALIZE
* TH SCSEG AND SCHDR FIELDS ARE SET BE SND SCH OR GET SCH.  IF A HDR
*    IS NOT EXPECTED NEXT SCHDR IS NOT INITIALIZED. SCSEG IS ALWAYS
*    INITIALIZED TO THE NEXT SEG TO READ FOR SCHEDULER
         L     R9,SCBSCSEG-1 .          ADDR OF CURRENT SEG
         LA    R2,1 .
         TM    SCBQTYPE,X'70' .         IF QTYPE NOT ALREADY SET -
         BZ    HDRNEXT1 .               A HDR IS EXPECTED NEXT
         CLC   SCBSCSEG(3),SCBCRCD .    HAS THIS RECORD (IF IT HAS
*   A PREFIX) BEEN READ BEFORE?     ----  IF THE LAST BFR FILLED
*   WAS FILLED WITH DATA FROM WITHIN THIS PRFX RECORD AND COMPLETED
*   A REQUEST - TOO MUCH DATA WILL BE READ  SINCE IT IS OTHERWISE
*   ASSUMED THAT THE PRFX WAS READ ON A PREVIOUS OPERATION.
         BE    HDRNEXT .M               BR IF READ TO READ ONLY
*   THIS RECORD AND NO MORE.
*        SCBCPBNO IS THE NO, OF CPBS BUILT TO READ AND THE NO.
*        LEFT TO GET FROM APPENDAGE
*        SCBNXCPB IS THE NO. OF THE CPB THAT IS EXPECTED NEXT
*   CPBBFRNO CONTAINS THE NUMBER FO THE LOGICAL BFR IN WHICH THE
*        FIRST BYTE OF DATA IN THE UNIT IS TO BE PLACED.
*   CPBBFRCT CONTAINS THE NUMBER OF THE BYTE IN THE LAST UNIT
*        OF THE LAST BFR IN WHICH THE FIRST BYTE OF DATA IS PLACED.
*   CPBWKACT CONTAINS THE NUMBER OF TH BYTE IN THE CPB WORK AREA
*        WHICH IS TO BE THE FIRST BYTE TRANSFERRED.
*   CPBNUMB CONTAINS THE NUMBER OF THE CPB FOR THIS ERB.
*    AVTDOUBL+3 HAS THE NO. OF UNITS REQUESTED SO FAR
*    AVT DOUBL +4 HAS THE NO, OF UNITS IN 1 BFR
*   AVTDOUBL+5 HAS WKACT
*     WKACT SHOULD BE 0 EXCEPT FOR FISRT RECALL  , FIRST READ OR SBPCI
*   AVTDOUBL+6 HAS NUMB
*   AVTDOUBL+7 HAS BFRNO
*                           SCBUNTCTILL HAVE WHERE IN THE NEXT UNIT
*        TO BE READ FROM SIDK DATA TRANSFER WILL START.
         TM    SCBSTAT1,PRFNLSTN .      LAST SEG
         BNO   FIXNTXT .                BR YES
FIXED    EQU   * .
         MVC   AVTDOUBL+5(1),SCBUNTCT .CT OF BYTE TO READ
         L     R10,LCBDCBPT .           DCB ADDR
         MVC   AVTDOUBL+4(1),LCBERBQB . NO UNITS PER BFR
         NC    LCBERBCH(3),LCBERBCH .   ARE THERE ANY BFRS
         BZ    TRYNEXT .                BR NO
         LA    R6,LCBERBLK-1 .
         L     R14,AVTDOUBL+4 .         GET BFR NO
COUNT    EQU   * .
         NC    PRFLINK(3),PRFLINK .     IS THIS THE LAST BFR
         BZ    LASTUNIT .               BR YES
         L     R6,PRFLINK-1 .           NEXT BFR
         AR    R14,R2 .                 ADD 1 TO BFR NO
         ST    R14,AVTDOUBL+4 .
         B     COUNT .
LASTUNIT EQU   * .
         IC    R14,PRFNBUNT .           NO OF UNITS IS BFR
         MVI   AVTDOUBL+3,AVTEZERO .    SET NO REQD UNITS TO 0
         EX    R14,CLINOUNT .           NO IN 1 BFR = NO FOR BFR
         BE    TRYNEXT .                BR YES
         IC    R10,AVTDOUBL+4 .         NO. TO BE PUT IN BFR
         SR    R10,R14 .                - NO THERE ALREADY
         BCTR  R10,0 .                  -1
         STC   R10,AVTDOUBL+3 .         = NO UNITS REQD SO FAR
TRYNEXT  EQU   * .
         BAL   R14,READCPB .
*            RECORED TO BE READ.
*   THE NEXT TEXT IS THE LAST RECORD THAT CAN BE READ UNTIL THE
*   NEXT PREFIX HAS BEEN READ.  THE NTXT IS ALWAYS A HIGHER VALUE
*   OF ADDRESS THAN THE ADDITIONAL RECORDS.
*   THIS ERB SHOULD BE DROPPED NOW AND BEGIN PROCESSING THE NEXT
*   ELEMENT.
         CLC   SCBSCSEG(3),SCBNTXT .    HAS THE NEST TXT BEEN
*                                         READ
         BH    PROCESS .                BR YES(SCSEG=LAST ADDR +1)
         L     R14,AVTDOUBL .           ADD 1 TO NO UNITS
         AR    R14,R2 .                 REQUESETD SO FAR
         ST    R14,AVTDOUBL .
         EX    R14,CLINOUNT .           R14 HAS NO OF UNITS THAT
*        HAVE BEEN READ - COMPARE TO THE NO. TO READ IN DOUBL+4
         BNE   TRYNEXT .                BR IF MORE TO READ FOR 1 BFR
         CLI   LCBERBPY,PRISBPCI .     SB PCI REQ
         BE    PROCESS .                BR YES
*   IF THIS IS NOT AN INITIAL REQ OF RIRST SUBSEQUENT REQ ONLY
*   ONE BFR AT A TIME SHOULD BR FILLED.
         L     R14,AVTDOUBL+4 .         ADD 1 TO NO OF BFRS THAT
         AR    R14,R2 .                 UNITS HAVE BEEN READ FOR
         ST    R14,AVTDOUBL+4 .
         MVI   AVTDOUBL+3,AVTEZERO .    SET NO UNITS REQD =0 FOR NEW
         EX    R14,CLIREQ .             HAS THE NO. OF BFRS REQ-
*        UESTED BEEN FILLED
         BH    TRYNEXT .                BR NO
         B     PROCESS ..               BR YES
CLIREQ   CLI   LCBERBCT,X'00' .
CLINOUNT CLI   AVTDOUBL+4,X'00' .
READCPB  EQU   * .
         L     R15,AVTFCPB .             ADDR OF FIRST IF ONE THERE
         LA    R15,0(R15) .              CLEAR HI BYTE
         LTR   R15,R15 .                ANY THERE
         BZ    CKENQ .                  BR NO
         MVC   AVTFCPB+1(3),CPBNEXT .
         ST    R14,CPBSEEK .            KEEP RTN ADDR
         IC    R14,CPBADDR .                                     S21101
         ST    R9,CPBADDR .             SET ADDRESS              S21101
         STC   R14,CPBADDR .                                     S21101
         ST    RLCB,CPBAERBF .          SET LCB ADDR FOR THIS READ
         IC    R14,SCBCPBNO .           NO OF LAS< CPB
         AR    R14,R2 .                 PLUS 1
         STC   R14,SCBCPBNO .
         XC    CPBINWKA(5),CPBINWKA .
         STC   R14,CPBNUMB .            SET NUMBER OF CPB
         LA    R9,INCR(R9) .            ADD FOUR TO REC. NO.     S21101
         IC    R11,SCBSCSEG-1 .         SAVE HI BYTE
         ST    R9,SCBSCSEG-1 .          KEEP REC NO
         STC   R11,SCBSCSEG-1 .         RESTORE HI BYTE
         MVI   CPBRDWR,CPBRDKC .        READ K & D
         MVI   CPBXDWR,CPBRDC .         READ DATA
         BAL   R11,EXCPINQ2 .           PUT CPB ON INPUT Q
         LA    R2,1 .                   RESET R2
         L     R14,CPBSEEK .            RESTORE RETURN
         BR    R14 .
.F028    AIF   (&A EQ 1).F029
CKENQ    EQU   * .
         CLI   SCBCPBNO,AVTEZERO .      HAVE ANY CPBS BEEN GOTTEN
         BNE   CALLEXCP .               FOR THIS REQ. BR YES
         LA    R6,LCBERB .              NO - RE-ENQ THE ERB
         B     ENQUEUE .
.F029    AIF   (&A EQ 1).F033
FIXNTXT  EQU   * .
*    SINCE THERE IS NO NTXT, THE LAST ADD.REC. WILL BE IN NTXT
         MVI   AVTDOUBL,AVTEZERO .
         MVC   AVTDOUBL+1(3),SCBXTRA .
         MVC   SCBNTXT(3),SCBCRCD .
         L     R10,AVTDOUBL .
         LTR   R10,R10 .
         BZ    FIXED .                  BR IF NO XTRA RECORDS
         BAL   R14,SBTRKEY1 .
         SH    R10,CONST .              ADJUST R10               S21101
         ST    R10,AVTDOUBL .           LAST XTRA FOR NTXT
         MVC   SCBNTXT(3),AVTDOUBL+1 .
         B     FIXED .
CONST    DC    H'8' .                   CONSTANT                 S21101
HDRNEXT1 EQU   * .
         BAL   R14,READCPB .            GET A CPB                A44895
         BAL   R14,QTYPE .              SET QTYPE                A44895
         B     PROCESS .                CONTINUE                 A44895
HDRNEXT  EQU   * .
         BAL   R14,READCPB .
         B     PROCESS .
         SPACE 3
.F033    ANOP
QTYPE    EQU   * .
         MVI   SCBUNTCT,AVTEZERO .      SET START CNT TO FIRST
         AIF   (&A EQ 2).F034
         OI    SCBQTYPE,SCBCOREQ .      SET FLG FOR CORE READ
         AIF   (&A EQ 1).F035
         TM    QCBDSFLG,QCBCORE .
         BCR   ONES,R14 .                                        S21101
.F034    ANOP
QTYPE1   EQU   * .
         NI    SCBQTYPE,X'0F' .         CLEAR QTYPE
         OI    SCBQTYPE,SCBREUS .       ASSUME REUS DISK
         TM    QCBDSFLG,QCBREUS .
         BCR   ONES,R14 .                                        S21101
         XI    SCBQTYPE,SCBREUS+SCBNREUS .
.F035    ANOP
         BR    R14 .
         AIF   (&A EQ 2).F036
*        WILL INITIALIZE TO GET A MESSAGE FROM A CORE Q
         SPACE 3
INITREQ  EQU   * .
         TM    SCBQTYPE,X'70' .         HAS QTYPE BEEN SET ALREADY -
         BNZ   CKPREV .                 BR YES - ONE READ DONE FOR
*        THIS MSG LAREADY
         OI    SCBQTYPE,SCBCOREQ        ASSUME CORE             SA59522
         AIF   (&A NE 1).F035A
         B     CALLFQ .
         AGO   .F036
.F035A   ANOP
         TM    QCBDSFLG,QCBREUS+QCBNREUS . ANY DISK
         BZ    CALLFQ .                 BR NO
         MVC   AVTDOUBL+1(3),QCBCFHDR . YES- FIND CORE COPY OF MSG
COMPARE  EQU   * .
         NC    AVTDOUBL+1(3),AVTDOUBL+1 . LAST MSG
         BZ    NOMSG .                  BR YES
         L     R2,AVTDOUBL .            ADDR THIS MSG
         CLC   SCBSCHDR(3),PRFCRCD-IEDQPRF(R2) .
*                  IS THIS THE MSG  TO SEND
         BE    LOSTMSG1 .               TO CHECK FOR LOST MSG
         MVC   AVTDOUBL+1(3),PRFNHDR-IEDQPRF(R2) .  NEXT MSG
         B     COMPARE .
LOSTMSG1 EQU   * .
         TM    DATFLAGS-IEDQDATA(R2),DATLOSTN .  LOST MSG
         BNO   RESETSCH .               BR NOT LOST TO GET FROM CORE
*        OTHERWISE FREE MSG FROM CORE Q AND SET TO READ FROM DISK
         LR    R6,R2 .                  SET FAKE BFR ADDR
         L     R15,ADFREEMS .           BASE FOR SUBR
         BAL   R7,HAVEADDR-FREEMSG(R15) .   ENTRY PT FOR THIS
         L     RSCB,LCBSCBA-1 .         RESTORE SCB ADDR
         L     R7,SCBDESTQ-1 .          RESTORE QCB ADDR
NOMSG    EQU   * .
         NI    SCBQTYPE,X'FF'-SCBCOREQ  RESET CORE BIT          SA62976
         XC    AVTDOUBL(6),AVTDOUBL .   CLEAR WORK AREA
         L     R9,SCBSCSEG-1 .
         LA    R2,1 .
         BAL   R14,READCPB              GET A CPB               SA59522
         BAL   R14,QTYPE1               SET QUING MEDIUM        SA59522
         B     PROCESS                  PROCESS NEXT ELEMEMT    SA59522
.F036    ANOP
RECALL   EQU   * .
         MVC   SCBSCSEG(3),SCBDEOB+1 .  SET FIELDS FROM RECALL
         ST    R7,AVTDOUBL .            SAVE R7
         IC    R7,SCBDEOB .             TO LOOK NORMAL
         STC   R7,SCBUNTCT .
         LA    R7,NOSIZE .                SET RTN ADDR
         TM    LCBSTAT1,LCBRECVN .      RECV SIDE
         BCR   ONES,R7 .                BR YES - RECALL BFR THAT S21101
*                                       IS THERE - DO NOT CHANGE S21101
*                                       THE DSIZE                S21101
*        THERE - DO NOT CHANGE THE DSIZE
         TM    LCBCHAIN,LCBBFRSZ .      SPECIAL BD RECALL
         BCR   ONES,R7 .                                         S21101
         CLI   LCBERBKY,AVTEZERO .     HAS SIZE BEEN COMPUTED
         BNE   USELCB .                 SEND REQUEST
NOSIZE   EQU   * .
         L     R7,AVTDOUBL .            RESET R7
         TM    SCBQTYPE,X'F0' .         IS THIS A FIRST RECLL
         BZ    FIRSTRCL .               FROM ANYBODY BUT BT
         NC    LCBERBCH(2),LCBERBCH .   ANY BFRS THEER
         AIF   (&A NE 2).F037
         BNZ   DISKONLY .
         AGO   .F037A
.F037    ANOP
         BNZ   CKPREV .                 BR YES - ONE READ DONE
.F037A   ANOP
         AIF   (&A EQ 1).F038A
         AIF   (&A EQ 2).F038
         TM    SCBQTYPE,SCBCOREQ .
         BNO   OKREUS .                 BR NOT CORE
*        THIS IS A FIRST RECALL FROM BT
.F038A   ANOP
         TM    LCBSTAT1,LCBSENDN .      SENDING
         BO    BTSEND .                 BR YES - ADDR OF HDR IS THERE
         AIF   (&A NE 3).F038B
         TM    QCBDSFLG,QCBREUS+QCBNREUS .  ANY DISK
         BNZ   NOMSG .                  RECALL ON RCV SIDE - GET
*     FROM DISK
.F038B   ANOP
         MVC   SCBSCHDR(3),SCBCCHDR .   GET ADDR OF HDR
BTSEND   EQU   * .
         L     R2,SCBSCSEG-1 .          ADDR OF UNIT TO GET
         TM    DATFLAGS-IEDQDATA(R2),DATNPRFX . DOES IT HAVE PRFX
         BNO   CALLFQ .
         L     R6,SCBSCHDR-1 .          HDR ADDR
BTTIC    EQU   * .
         LR    R2,R6 .                  SET FOR LOOP TO FIND PRFX THAT
         B     BTTIC2 .                 GOES WITH THIS EXTRA UNIT
BTTIC1   EQU   * .
         L     R2,PRFTIC-IEDQPRF(R2) .  ADDR NEXT UNIT
BTTIC2   EQU   * .
         NC    PRFTIC+1-IEDQPRF(2,R2),PRFTIC+1-IEDQPRF(R2) . MORE THERE
         BZ    BTBFR .                  BR NO TO GET NEXT BFR
         CLC   PRFTIC+1-IEDQPRF(3,R2),SCBSCSEG . THIS IT
         BNE   BTTIC1 .                 BR IF NOT THE ONE
         LH    R2,SCBSCAN .             SAVE SEQ OUT NO
         MVC   SCBSRCE(PRFSTXT-PRFSRCE),PRFSRCE .  SET PRFX FOR BFR
         STH   R2,SCBSCAN .             SAVE SEQ OUT NO
         OI    SCBSTAT1,PRFNHDRN .      INSURE NOT A HDR BFR
         B     CALLFQ .
BTBFR    EQU   * .
         MVC   AVTDOUBL+1(3),PRFNTXT .  GET NEXT BFR IN QUEUE
         L     R6,AVTDOUBL .
         B     BTTIC .
         AGO   .F039
.F038    ANOP
         B     OKREUS .
.F039    ANOP
FIRSTRCL EQU   * .
         AIF   (&A NE 1).F040
         OI    SCBQTYPE,SCBCOREQ .
         B     CKTHERE .
         AGO   .F040A
.F040    ANOP
         LA    R1,QCBDSFLG .            ASSUME NOT BD
         LA    R2,X'10' .               SET CC FOR EX BRANCH
         TM    LCBCHAIN,LCBBFRSZ .      BD RCLL
         BNO   NOTBD .                  BR NO
         LA    R1,SCBHBFNO .            SET TO TEST DCB NOT QCB
         LA    R2,X'80' .               SET CC FOR BR
NOTBD    EQU   * .
         AIF   (&A EQ 2).F039A
         OI    SCBQTYPE,SCBCOREQ .      SET FOR CORE RECALL
         TM    0(R1),QCBREUS+QCBNREUS .   ANY DISK
         BZ    CKTHERE .
PUTRET   EQU   *                                               @SA69655
         NI    SCBQTYPE,X'FF'-SCBCOREQ .SET NOT CORE
.F039A   ANOP
         OI    SCBQTYPE,SCBREUS .       SET RES DISK
         TM    0(R1),QCBREUS .
         AIF   (&A NE 3).F039A1                                @OZ14195
BRNCHQ   EQU   *                                               @OZ14195
.F039A1  ANOP                                                  @OZ14195
         EX    R2,BRANCH .
         XI    SCBQTYPE,SCBREUS+SCBNREUS .
OKREUS   EQU   * .
         L     R9,SCBSCSEG-1 .           RECORD TO READ
         LA    R2,1 .                   INITIALIZE R2 FOR ADDS
         MVC   AVTDOUBL+5(1),SCBDEOB .
         B     HDRNEXT .
BRANCH   NOP   OKREUS .                 COND CODE FILLED BY EX   S21101
.F040A   ANOP
         AIF   (&A EQ 2).F040B
CKTHERE  EQU   * .
         AIF   (&A EQ 1).F040A1                                @SA69655
         CLI   QCBDSFLG,QCBFQCB         PUT PROCESS ENTRY      @SA69655
         BE   PUTRET                   NO, BRANCH              @SA69655
         NC    LCBTTCIN,LCBTTCIN        TTCIN ZERO?            @OZ14195
         BNZ   CALLFQ                   NO                     @OZ14195
         TM    LCBSTAT2,LCBDIAL         DIAL LINE              @OZ14195
         BO    CALLFQ                   YES                    @OZ14195
         TM    LCBCHAIN,LCBBFRSZ        BD RECALL              @OZ30296
         BO    CALLFQ                   YES, BRANCH            @OZ30296
*        THIS CODE WILL ALLOW THE CAPABILITY TO RETRIEVE A     @OZ14195
*        MESSAGE BY INPUT SEQUENCE NUMBER FOR A TERMINAL THAT  @OZ14195
*        IS CORE QUEUED.                                       @OZ14195
         OI    SCBQTYPE,SCBREUS         SET REUS               @OZ14195
         NI    SCBQTYPE,AVTEFF-SCBCOREQ TURN OFF CORE BIT      @OZ14195
         TM    SCBSCSEG+TWO,CPBQTYPE    CHECK TYPE OF QUEUES   @OZ14195
         B     BRNCHQ                   GO SET APPROPRIATE BIT @OZ14195
.F040A1  ANOP                                                  @SA69655
CALLFQ   EQU   * .
         L     RBASE,ADRFA01 .
         B     CALLFQA-IEDQFA01(RBASE) .
.F040B   ANOP
         AIF   (&A NE 3).F040C
RESETSCH EQU   * .
         L     RBASE,ADRFA01 .
         B     RESETA-IEDQFA01(RBASE) .
.F040C   ANOP
ADRFA01  DC    A(IEDQFA01) .
EONE     EQU   X'01' .
BASE     DC    A(CPBINIT) .
         DROP  RBASE .
         TITLE '''IEDQFA'', ''IEDQFQ'' - COMMON SUBROUTINES' .   S22025
         USING *,RBASE .
*        THIS SPECTION IS A GOUUP OF COMMON SUBROUTINES USED BY
*        BOTH SECTIONS OF CODE.
         SPACE 3
IEDQFA01 EQU   * .
         AIF   (&A EQ 1).F018
CPBFREE  EQU   * .
         LA    R14,GOAPQEMT .            SET RTN ADDR
*    WILL FREE CPB - NO CHECKING - RETURN
CPBFREEA EQU   * .
         L     R1,AVTFCPB .             LINK CPB INTO THE
         ST    R15,AVTFCPB .            CPB FREE POOL
         ST    R1,CPBNEXTF .
         MVI   CPBFLAG,AVTEZERO .       ZERO ALL FLAGS
         BR    R14 .                    RETURN
.F018    ANOP
ENQMGRB  EQU   * .
         BALR  R14,0 .
         USING *,R14 .                                           S21101
         L     R14,ADENQMGR .
         BR    R14 .
         DROP  R14 .                                             S21101
OFFSET   EQU   * .
         BALR  R15,0 .                  SET ADDRESSIBLITY
         USING *,15 .
         L     R15,ADROFFST .           ADDR OF SUBROUTINE
         BR    R15 .
USELCB   EQU   * .
         BALR  R15,0 .                  SET ADDRESSIBLITY
         USING *,15 .
         L     R15,ADROFFST .           ADDR OF SUBROUTINE
         USING IEDQCPB,R15 .
         B     USELCBA-OFFSETA(R15) .
         AIF   (&A EQ 1).F040D
ENQMGRC  EQU   * .
         BALR  R14,0 .
         USING *,R14 .                                           S21101
         L     R14,ADMGRX .
         BR    R14 .
         DROP  R14 .                                             S21101
ADMGRX   DC    A(ENQMGRCA) .
.F040D    ANOP
ADROFFST DC    A(OFFSETA) .
ADENQMGR DC    A(ENQMGRBA) .
DCH      DC    AL2(LCBERB-IEDQLCB) .
TAG1     EQU   * .
         AIF   (&A NE 1).F030
         B     CALPROC1 .
         AGO   .F032
.F030    AIF   (&A EQ 2).F031
         L     RSCB,LCBSCBA-1 .         SCB ADDRESS
         TM    SCBQTYPE,SCBCOREQ .      FROM CORE
         BO    CALPROC1 .               BR YES
.F031    ANOP
GOAPQEMT EQU   * .
         L     RBASE,BASE1 .            SET NEW BASE
         B     APPQEMTY-CPBINIT(RBASE) .
.F032    ANOP
CALLPROC EQU   * .
         L     RSCB,LCBSCBA-1 .
CALPROC1 EQU   * .
         L     RBASE,BASE1 .
         DROP  RBASE .
         USING CPBINIT,RBASE .
         SR    R0,R0 .                  CLEAR R0 FOR POST REG
         B     PROCESS .
         DROP  RBASE .
         USING IEDQFA01,RBASE .
.F032A   ANOP
UNITFREE EQU   * .
*        WILL POST A UNIT TO THE AVAILABLE BFR QUEUE
         MVI   PRFNBUNT-IEDQPRF(R1),X'01' .SET NO. UNITS
         MVI   PRFTIC-IEDQPRF(R1),CPBTICC .
RTNBFR   EQU   * .
         LA    R2,AVTBFRTB .            ADDR OF BFR RTN QCB
         MVI   PRFPRI-IEDQPRF(R1),PRIBFRTB .PRIORITY
POST     EQU   * .
         ST    R2,PRFQCBA-1-IEDQPRF(R1) FOR POST
NOSTORE  EQU   * .
         LA    R0,0(R1) .               DEEP ADDR LAST ELEM POSTED
         L     R11,AVTEA .
         B     DSPPOSTR .               POST AND RETURN
         AIF   (&A EQ 1).F019
EXCPINQ2 EQU   * .
*        WILL ENQUEUE A CPB ON THE FIFO EXCP INPUT Q
         BALR  R14,0 .
         USING *,R14 .
         L     R14,ADMGRCC .
         DROP  R14 .
EXCPINPT EQU   * .
         LA    R2,AVTINCPQ .            EXCP DRIVER INPUTQ
         LR    R1,R15 .                 CPB ADDR IN 1
         BR    R14 .
ADMGRCC  DC    A(ENQMGRC) .
.F019    ANOP
*        WILL BRANCH TO EXCP DRIVER IF ANY DISK OR DSPDISK OF NOT
CALLEXCP EQU   * .
         AIF   (&A EQ 1).F020
         BALR  R14,0 .                  SET ADDRESSIBILITY
         USING *,R14 .
         AIF   (&A EQ 2).F019A
         TM    AVTBIT1,AVTDISKN .       DISK SPEC.
         BZ    NOFL .                   BR NO
.F019A   ANOP
         ICM   R15,AD,AVTFL+1           IS DISK OPENED           Y02027
*        IF YES
         BCR   NOTZERO,R15 .                                     S21101
*        IS NO
NOFL     EQU   * .
.F020    ANOP
         L     R11,AVTEA .
         B     DSPDISP .
         AIF   (&A EQ 1).F021
         DROP  R14 .
.F021    ANOP
FINDLVL  EQU   * .                                              SA52971
*** THIS SUBROUTINE DESTROYS REGS 0,1,2, AND 11.  THE QCB       SA52971
*   EXTENSION IS RETURNED IN REG2.  RETURN IS TO +0 IF THIS     SA52971
*   IS NOT A CONCENTRATOR AND TO +4 IF IT IS A CONCENTRATOR.    SA52971
         TM    SCBQTYPE,SCBCONC .       IS THIS A CONCENTRATOR  SA52971
         BCR   8,R10 .                  BR IF NOT               SA52971
         LH    R2,QCBEXTO .             EXT OFFSET               S22026
         AR    R2,RQCB .                QCBE ADDR                S22026
         TM    QCBEFLG-IEDQQCBE(R2),QCBEOPL .                    S22026
*                                       PRTY LEVEL QUEUEING      S22026
         BZ    4(,R10) .                BR IF CONC              SA52971
         SR    R0,R0 .                  ZERO IC REG             SA52971
         LA    R11,QCBMEND-QCBPSIZE .   INIT TO ZEROETH PRI QCB SA52971
         BALR  R1,AVTEZERO .            SET LOOP POINT          SA52971
         SPACE 1 .                                              SA52971
         IC    R0,QCBELGTH-IEDQQCBE(,R2) GET EXTENSION LENGTH   SA52971
         AR    R2,R0 .                  POINT TO NEXT EXTENSION SA52971
         LA    R11,QCBPSIZE(,R11) .     POINT TO NEXT PRI QCB   SA52971
         CLR   R11,RPQ .                IS THIS THE ONE         SA52971
         BCR   7,R1 .                   NO, GO LOOK AT NEXT     SA52971
         B     4(,R10) .                RETURN TO +4            SA52971
FINDESTQ EQU   * .                                              SA52971
*        WILL FIND THE ADDRESS OF BOTH THE MASTER AND PRTY LVL QCBS
         L     RQCB,SCBDESTQ-1 .        ADDR OF QCB
         SR    R11,R11 .
         IC    R11,SCBPRI .              OFFSET TO PRTY QCB
FINDEST2 EQU   * .
         LA    RPQ,QCBMEND-IEDQQCB(RQCB) .
*              ADDR OF FIRST PRTY QCB
         LTR   R11,R11 .                IS THERE MORE THAN ONE
         BCR   ZERO,R14 .               BR NO                    S21101
         LA    R1,QCBPEND-IEDQPQCB .    SIZE OF A PQCB
         MR    R10,R1 .                 SIZE X NUMBER
         AR    RPQ,R11 .                ADDR OF THIS PQCB
         BR    R14 .
*        WILL DEQUEUE AND ELMENT FROM A FIFO Q
         AIF   (&A EQ 1).F025
DEQMGRC  EQU   * .
*        IN PUT PARAMETERS - R1 - Q ADDR
*        RETURN WILL BE AT R14 IF NONE OR 4(R14) IF ONE THERE
         DROP  RBASE
         USING CPBINIT,RBASE
         TS    AVTEZERO(R1)             LOCK Q FOR UPDATE        Y02027
         BNE   DEQMGRC                  YES, LOOP TILL APP. DONE Y02027
         ICM   R15,AD,1(R1)             ADDR OF FIRST ON Q       Y02027
         BNZ   DEQMGRC1                 ELEMENT ON Q             Y02027
         MVI   AVTEZERO(R1),AVTEZERO    CLEAR Q LOCK             Y02027
         BR    R14                      RETURN                   Y02027
DEQMGRC1 EQU   *                                                 Y02027
         DROP  RBASE
         USING IEDQFA01,RBASE
         MVC   1(3,R1),CPBNEXT .        DELINK THE CPB
         MVI   AVTEZERO(R1),AVTEZERO    CLEAR Q LOCK             Y02027
         B     4(R14) .                 RETURN TO +4 IF ONE THERE
SBTRKEY1 EQU   * .
         LH    R1,SCBSIZE .             GET SIZE
.F025    ANOP
SUBTRKEY EQU   * .
         BALR  R11,0 .                  SET ADDRESSIBILITY
         LA    R10,INCR(0,R10) .          INCREASE ADDRESS       S21101
         SH    R1,AVTKEYLE .            SUBTR. KEY LENGTH FROM SIZE
         BCR   PLUS,R11 .               BR IF PLUS TO SUBRT      S21101
         BR    R14 .                    BR IF ALL UNITS HAVE BEEN COUNT
         AIF   (&A EQ 2).F051 .                                 SA52971
ADFREEMS DC    A(FREEMSG) .             ADDR OF SUBROUTINE      SA52971
.F051    ANOP  , .                                              SA52971
*                                                               SA52971
*   END OF COMMON AREA                                          SA52971
*                                                               SA52971
         DC    40A(0)        XXXXXXXXXX PATCH AREA XXXXXXXXXXX @OZ09304
         TITLE '''IEDQFQ'' - CPB CLEANUP' .                      S22025
         AIF   (&A EQ 1).F041A
*        THIS SECTION DEALS WITH A CPB FROM A DISK READ.  IT HANDLES
*        ERROR CONDITIONS AND GETTING CPB'S OUT OR ORDER.
         SPACE 3
CKERB    EQU   * .
         L     RLCB,CPBAERBF .          ADDR OF ERB ASSOCIATED
*                                       WITH THIS READ
         L     RSCB,LCBSCBA-1 .
         LNR   R2,R2 .                 SET FLAG FOR FREE CPB
         TM    LCBERBST,XCOMPL .
*                   HAS THIS REQUEST BEEN COMPLETED PREVIOUSLY
         BO    ERBCPB .
         TM    LCBERBST,XXXINQ .        IS THIS ERB WAITING FOR BFR
         BO    NOBFRQ                   YES-PLACE CPB ON NOBFQ  SA52984
         CLC   CPBNUMB(1),SCBNXCPB .
         BE    CPBCK                    IF NEXT ONE GO AHEAD    SA52984
TSLOOP   EQU   *                                               @OZ09304
         TS    AVTDKENQ                 FIELD BEING USED       @OZ09304
         BNZ   TSLOOP                   YES, BRANCH AND LOOP   @OZ09304
         LA    R2,AVTDKENQ-(CPBNEXTF-IEDQCPB)  SET ADDRESS FOR @OZ09304
*                                        START OF LOOP         @OZ09304
         ICM   R15,EIGHT,AVTDKENQ       INSERT IN USE BYTE     @OZ09304
SEARCHLP EQU   *                                                SA52984
         LR    R14,R2                   SET TO NEXT CPB         SA52984
SRCHLP   EQU   *                                                 Y02027
         ICM   R2,AD,CPBNEXT-IEDQCPB(R14) IS THIS THE LAST CPB   Y02027
         BNZ   CPBCK1                   IF NOT-CHECK THIS ONE   SA52984
         MVI   AVTDKENQ,AVTEZERO        FREE FIELD             @OZ09304
         LA    R2,AVTDKAPQ .
         L     R14,AENQMGR .            ADDR OF Q MGR            S22026
         BALR  R11,R14                  ENQ CPB                  Y02027
         B     GOAPQEMT .
CPBCK1   EQU   *                                                SA52984
         L     R2,CPBNEXTF-IEDQCPB(R14) NEXT CPB                SA52984
         TM    CPBRDWR-IEDQCPB(R2),CPBWRITB  IS IT WRITE CPB    SA52984
         BO    SEARCHLP                 YES                     SA52984
         CLC   CPBAERB(3),CPBAERB-IEDQCPB(R2) SAME LCB          SA52984
         BNE   SEARCHLP                 NO-GET NEXT ONE         SA52984
         CLC   SCBNXCPB(1),CPBNUMB-IEDQCPB(R2)  NEXT THIS LCB   SA52984
         BNE   SEARCHLP                 NO-GET NEXT ONE         SA52984
         ICM   R15,EQUAL,CPBNEXTF-IEDQCPB(R14)  SAVE HIGH BYTE @OY20265
         CS    R2,R15,CPBNEXTF-IEDQCPB(R14)  REPLACE THIS CPB  @OS79957
*                                        WITH NEXT FOR THIS LCB@OS79957
         BNE   SRCHLP                   CS FAILED, RECHAIN     @OS79957
         XC    CPBNEXT-IEDQCPB(3,R15),CPBNEXT-IEDQCPB(R15)     @OS79957
*                                       CLEAR LINK POINTER     @OS79957
         OC    CPBNEXT(3),CPBNEXT-IEDQCPB(R2)  GET NEW LINK PTR@OS79957
         BNZ   END                      BR IF NOT LAST IN CHAIN@OS79957
         STCM  R15,AD,AVTDKENQ+FIVE     SET NEW LAST           @OS79957
END      EQU   *                                               @OS79957
         MVI   AVTDKENQ,AVTEZERO        FREE FIELD             @OZ09304
         LR    R15,R2                   NEW CPB TO PROCESS      SA52984
CPBCK    EQU   *                                                SA52984
         L     R2,CPBXREAF .
         TM    DATFLAGS,DATNPRFX .
         BO    CKRECNO .
         CLC   CPBADDR+1(3),PRFCRCD-IEDQPRF(R2) .
*                 WAS THERE A LOGICAL READ ERROR
         BNE   RDERROR .                BR YES
CKEOB    EQU   * .
         TM    LCBERBST,LCBERROR+LCBRDERR .
*        READ ERROR OR LINE ERROR
         BNZ   ANYBFRS .                BR IF EITHER
         B     NEXTCPB .                BR TO PROCESS THIS CPB
AENQMGR  DC    A(ENQMGRCA) .            ADDR OF Q MGR            S22026
CKRECNO  EQU   * .
         CLC   CPBADDR+1(3),DATFEFO .
         BE    CKEOB .
.F041A   ANOP                                                  @OX20639
RDERROR  EQU   * .
         OI    LCBERBST,XRDERR .        SET RDERR FLAG
ANYBFRS  EQU   * .
**    SET FLAG TO UPDATE ONLY THE CPB COUNT OF ALL SCB FIELDS
         LNR   R2,R2 .                 SET FLAG
         MVC   SCBSCSEG(3),CPBADDR+1 .  SET FOR NEXT READ IF INIT
         BAL   R14,FREECPBA .
         TM    LCBSTAT1,LCBINITN .
         BNO   NOTINIT .                BR IF NOT INIT
         TM    LCBERBST,LCBERROR .      LINE ERROR ON SEND
         BO    NOTINIT .                BR YES
         AIF   (&A EQ 1).F041B                                 @OX20639
         LA    R14,GOAPQEMT .           SET RTN ADDR
.F041B   ANOP                                                  @OX20639
INITPOST EQU   * .
         MVI   LCBERBKY,XCTZERO   .     SET FIRST BYTE OF ERB    S21101
*                                 .     NON ZERO SO HM WILL KNOW S21101
*                                 .     NOT TO POST              S21101
         TM    LCBERBST,XXHMSG .        EOM RCVD IN HM YET
         BCR   14,R14 .                 BR IF NO TO DROP ERB
         LA    R2,AVTDSIOB .            ADDR TO POST ERB TO FA
         LA    R1,LCBERB .
         CLI   LCBERBPY,PRIINTRQ .      INITIAL REQUEST
         BE    POST .                   YES - LEAVE THE PRTY
         MVI   LCBERBPY,PRISBPCI .      SET LOW PRTY
         B     POST .                   POST ERB TO FA
NOTINIT  EQU   * .
         BAL   R5,FREEBFRS .
         AIF   (&A EQ 1).F041C                                 @OX20639
         LA    R14,GOAPQEMT .
.F041C   ANOP                                                  @OX20639
         LA    R1,LCBERB .
         L     RSCB,LCBSCBA-1           SCB ADDRESS             SA61767
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    CHKRCALL .               BRANCH IF NO             S22026
         TM    LCBERBST,LCBERROR .      LINE ERROR               S22026
         BO    POSTERR .                BRANCH IF YES            S22026
CHKRCALL EQU   * .                                               S22026
         TM    LCBSTAT1,LCBRCLLN .      RECALL
         BO    ERBRCQCB .               BR YES
POSTERR  EQU   * .                                               S22026
         MVI   LCBERBPY,PRIDSPLB-1 .    POST WITH LOWER PRTY
         TM    LCBERBST,LCBERROR .      LINE ERROR
         BO    ERBRCQCB .               BR YES TO RETURN ERB
*        IS RECALL ERB SHOULD BE POSTED TO RCQCB WITH NO BFRS
*        IS NOT RECALL POST AN EOM BFR TO MH WITH ERR BITS SET
         LA    R15,ABCODE3 .           SET 15 TO ABEND CODE
         BAL   R14,AVTABEND .          SET 14 TO ADDR OF ABEND
*        AND GO TO THE RTN TO ABEND
ABCODE3  EQU   X'03' .                 LOGICAL READ ERROR
         EJECT
*        THIS SECTION DEALS WITH A CPB UNIT THAT IS THE NEXT READ
*        EXPECTED OR A CORE UNIT.
         SPACE 3
         AIF   (&A EQ 2).F042
FIXSCSEG EQU   * .
         USING CPBINIT,RBASE .
         NI    LCBERBST,X'FF'-LCBRDERR .RESET READ ERROR
         AIF   (&A NE 3).F042A
         TM    SCBQTYPE,SCBCOREQ .      CORE QUEUEING
         BNO   DISKONLY .               BR NO
.F042A   ANOP
         L     RBASE,ADRFA01 ..         SET UP SECOND BASE
         USING IEDQFA01,RBASE .
         L     R2,SCBCORE-1 .            ADD  LAST BFR THERE
         TM    PRFSTAT1-IEDQPRF(R2),PRFNLSTN .  THIS NOW LAST
         BO    CKNTXT .                 BR NOW LAST NOW
         MVC   SCBSCSEG(3),SCBCORE .    RESET BFR ADDR
         B     CALLFQA .
CKNTXT   EQU   * .
         NC    PRFNTXT-IEDQPRF(3,R2),PRFNTXT-IEDQPRF(R2) .
         BZ    INITERR .
         MVC   SCBSCSEG(3),PRFNTXT-IEDQPRF(R2) .   ADDR NEXT BFR
         B     CALLFQA .
.F042    AIF   (&A EQ 1).F043
NEXTCPB  EQU   * .
         MVC   SCBSCSEG(3),CPBADDR+1 .  RESET SCSEG
         L     R2,CPBXREAF .
.F043    ANOP
NEXTCPB1 EQU   * .
         TM    DATFLAGS-IEDQDATA(R2),DATNPRFX .
*              DOES IS HAVE A PREFIX
         BO    CKBFRA .                 BR NO PRFX
         LA    R11,FIXPRFX1 .           SET RTN ADDR             A42363
         LH    R7,PRFSCAN-IEDQPRF(R2) . SAVE SCAN PRT (NO IDLES)
         STH   R7,DATSCAN-IEDQDATA(R2) .  WHILE PROCESSING THIS UNIT
         LH    R7,SCBSCAN .             SAVE SEQ OUT NO
         TM    PRFSTAT1-IEDQPRF(R2),PRFNHDRN .
*              IS I T A HEADER
         BO    FIXPRFX .                BR NO
         TM    DATFLAGS-IEDQDATA(R2),DATLOSTN LOST MSG
         BNO   CONTINUE .               BR NO
         OI    SCBERR3,SCBLOSTN .       SET SCB ERR BIT
CONTINUE EQU   * .
*   ALLOW CNCL MSG IF RECALL
         TM    LCBSTAT1,LCBRCLLN .      RECALL
         BO    FIXSCHDR .
         BAL   R14,FINDESTQ .
*              ALLOW INTCP MSG IF RECALL
         TM    DATFLAGS-IEDQDATA(R2),DATCNCLD+DATSENT HAS THIS  SA52971
*                                         MSG BEEN CANCELLED OR SA52971
*                                         SENT                  SA52971
         BNZ   RTNSCHD .                BR IF EITHER            SA52971
         AIF   (&A EQ 1).F044
         LR    R5,R15 .                 SAVE 15
         LH    R1,PRFDEST-IEDQPRF(R2) . TRM OFFSET
         N     R1,AVTCLRHI .            SET UP ADDR OF TNT TO
         L     R15,AVTRNMPT .           CONVERT OFFSET TO TRM
         BALR  R14,R15 .                ENTRY ADDRESS
         USING IEDQTRM,R1 .
         LR    R15,R5 .                 RESTORE 15
         TM    TRMSTATE,TRMLIST+TRMPROC LIST OR PROCESS ENTRY   SA66617
*                                         INTERCEPTED           SA66617
         BNZ   NOINTC .                 BR NO
         CLI   SCBUNTCT,AVTEZERO        FIRST READ OF HDR      @YA08105
         BNE   NOINTC                   BR NO                  @YA08105
         TM    TRMSTATE,TRMHELDN .      IS THE TRM INTERCEPTED
         BO    FLAGINTC .               BR YES
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN LOCK MODE            @YA05477
         BNZ   NOINTC                   BRANCH IF YES          @YA05477
         TM    LCBSTAT1,LCBINITN        INITIATE MODE          @YA05477
         BO    NOINTC                   BRANCH IF YES          @YA05477
         NC    QCBINTFF(3),QCBINTFF     POSSIBLE RELEASE       @YA05477
         BNZ   NOINTC                   BRANCH IF NO           @YA05477
         CLC   SCBSCHDR(3),QCBFFEFO     SENDING FEFO MSG       @YA05477
         BNE   RTNSCHD                  BRANCH IF NO           @YA05477
NOINTC   EQU   * .
.F044    ANOP
         NC    SCBFEFO(3),SCBFEFO .     HAS IT BEEN UPDATED ALREADY
         BNZ   NOFEFOUP .               BR YES
         MVC   SCBFEFO(3),DATFEFO-IEDQDATA(R2) SET THE FEFO PTR SA52971
NOFEFOUP EQU   * .
*                                       SAVE FEFO PTR
         MVC   LCBTTBIN(2),PRFDEST-IEDQPRF(R2) .
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    NOTCONCC .               BRANCH IF NO             S22026
         MVC   LCBTTCIN(2),PRFDEST-IEDQPRF(R2)                  SA57333
NOTCONCC EQU   * .                                               S22026
FIXOSEQ  EQU   * .
         LH    R7,DATSEQOT .
         B     FIXPRFX1 .               ALL HEADERS COME HERE
*        BRANCH TO AVOID TEST FOR RETRIEVE
FIXPRFX  EQU   * .
         NC    LCBTTCIN(2),LCBTTCIN .   IF ZERO THIS IS A RETRIEVE
         BCR   7,R11 .                  BR NOT RETR TO FIXPRFX1  A42363
         TM    LCBSTAT2,LCBDIAL         IF 0, COULD BE DIAL       M2321
         BCR   1,R11                    BRANCH IF DIAL-IT IS NOT  M2321
*                                       RETRIEVE                  M2321
         MVC   SCBSCHDR(3),PRFCHDR-IEDQPRF(R2) .
*        SET HDR ADDR THAT CORRESPONDS TO THIS BFR
FIXPRFX1 EQU   * .
         MVC   SCBSRCE(PRFSTXT-PRFSRCE),PRFSRCE-IEDQPRF(R2) .
         MVC   SCBCHDR(3),SCBSCHDR .    SET HDR ADDR
         STH   R7,SCBSCAN .             RESTORE SEQ OUT NO
         BAL   R7,SIZECK .
         LH    R7,PRFSIZE-IEDQPRF(R2) . GET SIZE OF BFR
         XC    DATCOUNT(2),DATCOUNT .
         CH    R7,AVTKEYLE .
         BH    CKBFRA .
         STC   R7,CPBINWKA .
         B     FIXWKACT .
FIXSCHDR EQU   * .
         AIF   (&A EQ 1).F045
         MVC   SCBSCHDR(3),PRFCRCD-IEDQPRF(R2) .     SET SCHDR TO THIS
         AIF   (&A EQ 2).F046
         TM    SCBQTYPE,SCBCOREQ .      IS THIS CORE
         BNO   CKBDRCL .                BR NOT CORE - SCHDR IS OK
.F045    ANOP
         MVC   SCBSCHDR(3),PRFCORE-IEDQPRF(R2) .    RESET SCHDR TO THIS
.F046    ANOP
CKBDRCL  EQU   * .
         NC    LCBTTCIN(2),LCBTTCIN .   RETRIEVE
         BNZ   NOTRET1                  NOT RETRIEVE, CONTINUE    M2321
         TM    LCBSTAT2,LCBDIAL         IS THIS DIAL LCB?         M2321
         BO    NOTRET1                  YES,CANT BE RETRIEVE   @SA70861
         TM    DATFLAGS-IEDQDATA(R2),DATCNCLD  CANCELLED MSG?  @SA70861
         BNO   FIXOSEQ                  NO, HANDLE RETRIEVE    @SA70861
         OI    PRFSTAT1-IEDQPRF(R2),PRFCNCLN                   @SA70861
*                                            SET MSG CANCELLED @SA70861
         B     FIXOSEQ                  HANDLE RETRIEVE        @SA70861
NOTRET1  EQU   *                                                  M2321
         TM    LCBCHAIN,LCBBFRSZ .      SPECIAL RECALL
         BCR   14,R11 .                 BR NO TO FIXPRFX1        A42363
         TM    SCBQTYPE,SCBCOREQ .      IS THIS CORE Q'D         A42363
         BCR   1,R11 .                  BR YES TO FIXPRFX1       A42363
         AIF   (&A EQ 1).F046A
*        IS DUPL HDR ON DISK - SCBMBSSA WILL HAVE XTRA OR NTXT
         LR    R1,RSCB .                SET FOR MBSSA ( REUS DSK)
         TM    SCBQTYPE,SCBNREUS .      IS IT REUS
         BNO   ONEOK .                  BR IF REUS
         LA    R1,4(R1) .               SET FOR MBSSA+4 N NON REUS)
ONEOK    EQU   * .
.F046A   ANOP
         TM    SCBHBFNO,X'0F' .         FIRST BD RCLL
         BNZ   NOTFIRST .
         MVC   SCBTRANS(3),SCBSCHDR .   SET HDR ADDR FOR NEXT RCLL
NOTFIRST EQU   * .
         AIF   (&A EQ 1).F046B
         MVC   SCBMBSSA-IEDQSCB(3,R1),PRFXTRA-IEDQPRF(R2) .
*        ASSUME MORE THAN 1 UNIT IN BFR - IF NOT SET NTXT
         NC    PRFXTRA-IEDQPRF(3,R2),PRFXTRA-IEDQPRF(R2)        SA52971
*        MORE THAN ONE UNIT                                     SA52971
         BCR   7,R11 .                  BR MORE THAN 1           A42363
         MVC   SCBMBSSA-IEDQSCB(3,R1),PRFNTXT-IEDQPRF(R2) .
.F046B   ANOP
         BR    R11 .                    BR TO FIXPRFX1           A42363
         SPACE 3
*        THIS SECTION DEALS WITH FREEING THE LINE AFTER FINDING
*        A CANCLED OR INTERCEPTED MESSAGE AND WILL PUT AN INTERCEPTED
*        MESSAGE IN THE INTERCEPT QUEUE.
         SPACE 3
RTNSCHD  EQU   * .
         NI    QCBFLAG,X'FF'-QCBSDFFO . RESET FLAG - NO LONGER  SA52971
*                                         SENDING FROM QUEUE    SA52971
         CLC   SCBSCHDR(3),QCBFFEFO .   IS THIS THE FIRST FEFO MSG
         BNE   RTNSCHD1 .               BR NO
         MVC   QCBFFEFO(3),DATFEFO-IEDQDATA(R2) . UPDATE FEFO
         OC    QCBFFEFO(3),QCBFFEFO     ONLY FEFO MSG?         @SA74867
         BNZ   ANYHELD                  NO, CHECK FOR HELD MSGS@SA74867
         MVC   QCBFFEFO(3),SCBFEFO      MOVE FROM SCB - MAY    @SA74867
*                                        HAVE BEEN UPDATED     @SA74867
*                                        WHILE READING 1ST FEFO@SA74867
ANYHELD  EQU   *                                               @SA74867
         NC    QCBINTFF(3),QCBINTFF .   ANY HELD MSGS ON LEVEL  SA52971
         BNZ   RTNSCHD1 .               BR SOME THERE           SA52971
         MVC   QCBPFEFO(3),QCBPREVF .   SET PTR TO MSG THAT IS  SA52971
*                                         PREVIOUS TO THE FIRST SA52971
*                                         UNSENT MSG IN THE FEFOSA52971
*                                         CHAIN                 SA52971
         MVC   QCBPREVF(3),PRFCRCD-IEDQPRF(R2) SET PTR TO MSG   SA52971
*                                       PREVIOUS TO FFEFO       SA52971
RTNSCHD1 EQU   * .
         AIF   (&A NE 3).F047
         TM    SCBQTYPE,SCBCOREQ .      IS THIS MSG CORE QUEUED
         BO    CORERTN .               BR YES
.F047    AIF   (&A EQ 1).F048
         LH    R14,AVTDSKCT .           DECR FOR THIS READ
         BCTR  R14,0 .
         STH   R14,AVTDSKCT .
         BAL   R14,CPBFREEA .          FREE THE CPB
RTNSCHED EQU   * .
         LA    R14,GOAPQEMT .
         AIF   (&A EQ 2).F049
         B     XTNSCHED .
.F048    ANOP
CORERTN  EQU   * .
         TM    QCBDSFLG,QCBDISK         ANY DISK                SA62949
         BNZ   NOMSGCT                  IF DISK, MSGCT DONE     SA62949
         LH    R14,QCBMSGCT             LOAD COUNT              SA62949
         BCTR  R14,0                    DECREMENT               SA62949
         STH   R14,QCBMSGCT             STORE COUNT             SA62949
NOMSGCT  EQU   *                                                SA62949
         LR    R6,R2 .
         ST    R2,AVTDOUBL .            SET MSG ADDR
         L     R15,ADFREEMS .
         BAL   R7,HAVEADDR-FREEMSG(R15) .
RTNSCHD2 EQU   * .
         LA    R14,CALLPROC .           SO CPB Q WILL NOT BE CHECKED
XTNSCHED EQU   * .
.F049    ANOP
         L     RSCB,LCBSCBA-1 .         SCB ADDR
         NI    SCBQTYPE,X'FF'-SCBBFMM . SET NOT MIDDLE OF MSGL
         L     RQCB,SCBDESTQ-1 .        DEST Q ADDR
*** THIS SUBROUTINE DESTROYS REGS 0,1,2, AND 11.  THE QCB       SA52971
*   EXTENSION IS RETURNED IN REG2.  RETURN IS TO +0 IF THIS     SA52971
*   IS NOT A CONCENTRATOR AND TO +4 IF IT IS A CONCENTRATOR.    SA52971
         BAL   R10,FINDLVL .            GO FIND QCB EXTENSION   SA52971
         B     RESETLCB .               BR NOT CONC             SA52971
         NI    QCBEFLG-IEDQQCBE(R2),255-QCBEDATA .               S22026
*                                       RESET QCBEDATA           S22026
         LA    R1,LCBERB .              ERB ADDR                 S22026
         L     R2,AVTCSCH .             CONC SCH ADDR            S22026
         SH    R2,AVTHA2 .              SUB TWO                  S22026
         B     POST .                   POST ERB TO Q9           S22026
RESETLCB EQU   * .                                               S22026
         LA    R2,AVTBFRTB .            ADDR OF BFR RTB QCB
         CLI   LCBFLAG1,LCBPLCB         PLCB                   @YM08981
         BNE   NOTPLCB                  BR NO                  @YM08981
         XC    SCBERRST,SCBERRST        CLEAR ERROR WORD       @YM08981
*                                       TO RESET ANY BITS THAT @YM08981
*                                       MAY HAVE BEEN SET DUE  @YM08981
*                                       TO A PREVIOUS DIAL     @YM08981
*                                       CONTACT ERROR OR PURGE @YM08981
*                                       EXIT TAKEN PRIOR TO    @YM08981
*                                       DIAL CONTACT           @YM08981
         B     NOBSDIAL                 SKIP EP ONLY CODE      @YM08981
NOTPLCB  EQU   *                                               @YM08981
         TM    LCBSTAT2,X'06'           BSC DIAL               @OX12563
         BNO   NOBSDIAL                 BR IF NO               @OX12563
         MVC   LCBSTAT1(1),LCBSENS0     SET LINE STATE         @OX12563
         MVC   SCBBSCFM(1),LCBSENS1     SET FORMAT BITS        @OX12563
NOBSDIAL EQU   *                                               @OX12563
         ST    R2,SCBDESTQ-1 .          INTO SCB FOR BD POST
         CLI   LCBERBPY,PRIAPERB .      IS THIS AN APPL. PGM.
         BE    ERBRCQCB .               YES - RETURN ERB NOT LCB
         CLI   LCBRSKEY,DSPBUFSC        IS THIS A BFRD TERM     SA57087
         BNE   POSTLCB                  BR IF NOT BFRD          SA57087
         XI    LCBSTAT1,LCBRECVN+LCBSENDN  RESET LCBSTATE      @OX11340
         OI    LCBSTAT2,LCBNEGRP        SET NEG RESP FLG        SA57087
         NI    QCBSTAT,X'FF'-QCBSEND    RESET SENDING FLG       SA57087
POSTLCB  EQU   *                                                SA57087
         LR    R2,RLCB .
         LR    R1,R2 .
         MVI   LCBPRI,PRILNFRE          SET LCB PRIORITY        SA52984
         B     POST .
         AIF   (&A EQ 1).F050
SET14    EQU   * .
         LA    R14,GOAPQEMT .
         B     POST .
FLAGINTC EQU   * .
*        IF TERMINAL IS IN LOCK MODE SEND THE RESPONSE ANYWAY
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN .LOCKED TERMINAL
         BNZ   NOINTC .                 BR IF LOCKED TO SEND ANYWAY
         TM    LCBSTAT1,LCBINITN .      INITIATE MODE
         BNO   OKHOLD .                 BR NOT INIT TO HOLD MSG
         NI    LCBSTAT1,LCBINITF .      SET NOT INIT
         MVC   DATFEFO-IEDQDATA(3,R2),QCBFFEFO . SET FOR MOVES LATER
         L     R5,PRFLCB-1-IEDQPRF(R2) . SRCE LCB ADDR
         TM    LCBSTAT1-IEDQLCB(R5),LCBINITN . STILL INIT MODE
         BNO   OKHOLD .                 BR NO TO HOLD MSG
         NI    LCBSTAT1-IEDQLCB(R5),LCBINITF .RESET INIT MODE
         B     RTNSCHD1 .               GO TO RETURN THE LINE
OKHOLD   EQU   * .
         TM    QCBDSFLG,QCBREUS+QCBNREUS .  ANY DISK
         BZ    RTNSCHD .                BR NO
         MVC   SCBSCHDR(3),PRFCRCD-IEDQPRF(R2) RESET SCB        SA52971
*** IF DISK QUEUED, THIS IS A NOP.  IF CORE WITH DISK BACK UP,  SA52971
*   THIS WILL SET THE DISK ADDRESS OF THE HEADER INSTEAD OF THE SA52971
*   MAIN STORAGE ADDRESS OF THE HEADER                          SA52971
         NC    QCBINTFF(3),QCBINTFF .   ANY FEFO MSGS THERE
         BNZ   RTNSCHD .                BR IF SOME ALREADY THERESA52971
         CLC SCBSCHDR(3),QCBFFEFO       FIRST FEFO MESSAGE      SA66626
         BNE   RTNSCHD                  NO,DON'T UPDATE INTFF   SA66626
         MVC   QCBINTFF(3),PRFCRCD-IEDQPRF(R2) .
         B     RTNSCHD .                FREE THE CPB THIS TIME
.F050    AIF   (&A EQ 1).F052 .                                 SA52971
ERBCPB   EQU   * .
         BAL   R14,FREECPBA .
         LA    R6,LCBERBCH-5 .          SET ERBCH FOR LINK FIELD
         BAL   R14,BFRLINK .            GO LIND THE LAST BFR
         L     R6,PRFLINK-1 .           NEXT IN CHAIN
BFRLINK  EQU   *
         NC    PRFLINK(3),PRFLINK .     ANOTHER THERE
         BCR   NOTZERO,R14 .            BR NOT ZER0 TO GET NEXT  S21101
         B     CKENQERB .
.F052    ANOP
         SPACE 3
*        THIS SECTION WILL POST THE ERB AFTER A REQUEST IS COMPLETED
*        IF NECESSARY OR WILL FREE THE ERB TO BE POSTED AGAIN FRO
*        ANOTHER REQUEST.
         SPACE 3
*   TO CKREQ WHEN END OF MESSAGE GOTTEN FROM THE QUEUE
*    TO CKREQ WHEN THE REQUEST HAS BEEN COMPLETED -- BUFFERS FILLED
CKREQ    EQU   * .
         L     RSCB,LCBSCBA-1 .         RESTORE IN CASE OF DISP BAL
         BAL   R11,FIXDEOB .            CC WILL REMAIN UNCHANGED
         BO    FIXRECAL .               BR YES
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    NOTCONCA .               BRANCH IF NO
         L     RSCB,LCBSCBDA-1 .        LINE SCB ADDR            S22026
         MVI   LCBERBPY,PRIFSPCI .      SET TO POST BUFFERS      S22026
         TM    SCBSTAT1,SCBCBGN .       CONC MSG BEGIN           S22026
         L     RSCB,LCBSCBA-1 .         RESET SCB ADDR           S22026
         BO    LOGICEOM .               BRANCH IF YES
NOTCONCA EQU   * .                                               S22026
         CLI   LCBERBPY,PRIINTRQ .
*              IS THIS AN INITIAL REQ
         BE    LOGICEOM .               BR YES
CMIDMSG  EQU   * .                                               S22026
         CLI   LCBERBPY,PRIAPERB .      APPLICATION PGM ERB
         BE    ERBRCQCB .               BR YES
         AIF   (&A EQ 1).F053
         LA    R5,GOAPQEMT .
         AIF   (&A EQ 2).F054
         TM    SCBQTYPE,SCBCOREQ .
         BNO   CKRQTYPE .
.F053    ANOP
         LA    R5,CALPROC1 .
CKRQTYPE EQU   * .
.F054    ANOP
         CLI   LCBERBPY,PRIFSPCI .
         BNE   FREEBFRS .
         TM    SCBQTYPE,SCBCONC .       CONCENTRATOR             S22026
         BZ    NOTCONCD .               BRANCH IF NO             S22026
         MVI   LCBERBPY,PRIINTRQ-1 .    RESET PRIORITY
NOTCONCD EQU   * .                                               S22026
         L     RDCB,LCBDCBPT .
         L     R2,DCBMH-1 .
         CLI   LCBFLAG1,LCBPLCB         THIS A PLCB            @YM06085
         BNE   GOTMH                    BR NO, HAVE MH ADDRESS @YM06085
         L     R2,LCBMHA-1              GET PROPER MH QCB      @YM06085
GOTMH    EQU   *                                               @YM06085
         LA    R15,PRIMHBFR .
         B     FREEBFR1 .
FREEBFRS EQU   * .
         TM    LCBSTAT1,LCBRCLLN        IS THIS A RECALL        SA61767
         BO    NOCONC                   IF RECALL NO NEED TO    SA61767
*                                        RESET EDATA            SA61767
         BAL   R14,FINDESTQ             GET QCB & PQCB          SA61767
         BAL   R10,FINDLVL              QCBE ADDR IF CONC       SA52971
         B     NOCONC                   BRANCH IF NOT CONC      SA52971
         L     R1,LCBERBCH-1            BUFFER ADDR             SA52971
         LA    R1,AVTEZERO(R1)          CLEAR HI-ORDER BYTE     SA52971
         LTR   R1,R1                    BUFFER THERE            SA52971
         BZ    NOCONC                   BRANCH IF NO            SA52971
         TM    PRFSTAT1-IEDQPRF(R1),PRFNHDRN                    SA52971
*                                       HEADER BUFFER           SA52971
         BO    NOCONC                   BRANCH IF NO            SA52971
         NI    QCBEFLG-IEDQQCBE(R2),255-QCBEDATA                SA52971
*                                       RESET QCBEDATA          SA52971
         NI    SCBQTYPE,AVTEFF-SCBBFMM  RESET MIDDLE MSG BIT    SA61767
NOCONC   EQU   *                                                SA52971
         LA    R15,PRIBFRTB .           SET PRTY FOR SUBRTN
         LA    R2,AVTBFRTB .
FREEBFR1 EQU   * .
         BALR  R14,0 .
         NC    LCBERBCH(3),LCBERBCH .
         BCR   ZERO,R5 .                                         S21101
         L     R1,LCBERBCH-1 .
         STC   R15,PRFPRI-IEDQPRF(R1) . SET PRIORITY
         MVC   LCBERBCH(3),PRFLINK-IEDQPRF(R1) .
         B     POST .
LOGICEOM EQU   * .
         OI    LCBERBST,LCBDLNKN .      SET FOR PCI
         L     RDCB,LCBDCBPT .          DCB ADDR                 S22024
         TM    LCBERBST,XMSG .          HAS EOM BEEN DONE
         BO    POSTERB .                BR YES
         TM    DCBPCI,PCIADD .          PCI=ADD SPECIFIED        S22026
         BNZ   POSTERB .                BRANCH IF YES            S22026
         TM    SCBQTYPE,SCBBBFTM+SCBCONC .                       S22026
         NI    PRFSTAT1,PRFNLSTF .      SET LAST SEG IN BFR
POSTERB  EQU   * .
         MVI   LCBERBPY,PRIACTIV .
         LA    R2,AVTACTIB .            ACTIVATE QCB
         TM    DCBDSORG,LGB .           IS BLOCK DCB OR LGB      S22024
         BNO   RCPOST .                 BRANCH IF DCB            S22024
         L     R2,AVTSAVTP              GET POINTER TO SECONDARY S22024
*                                        AVT                     S22024
         L     R2,SAVTCNIR-IEDNSVTD(R2)  NIR QCB ADDR          @Y17XA0Z
RCPOST   EQU   * .
         LA    R1,LCBERB .
         L     RSCB,LCBSCBA-1           SCB ADDRESS             SA61767
         AIF   (&A NE 3).F055
         TM    SCBQTYPE,SCBCOREQ .
         BNO   SET14 .
.F055    AIF   (&A NE 2).F056A
         B     SET14 .
         AGO   .F056
.F056A   ANOP
         LA    R14,CALPROC1 .
         B     POST .
.F056    ANOP
FIXDEOB  EQU   * .
         NI    LCBERBST,X'FF'-XCOMPL .  RESET REQUEST COMPLETE
         TM    LCBSTAT1,LCBRCLLN .      RECALL
         BCR   NOTONES,R11 .                                     S21101
         L     R2,SCBSCSEG-1 .          UPDATE SCB DEOB
         ST    R2,SCBDEOB .
         IC    R2,SCBUNTCT .
         STC   R2,SCBDEOB .
         BR    R11 .
FIXRECAL EQU   * .
         L     RPREFIX,LCBERBCH-1 .     ADDR FIRST BFR
         OI    PRFSTAT1,PRFDUPLN .      SER DUPL FLAG
         MVI   LCBERBPY,PRIRCQCB .      SET PRTY FOR RECALLS
         MVI   SCBUNTCT,AVTEZERO .
         MVI   SCBNXCPB,AVTEZERO .      SET FOR MH
ERBRCQCB EQU   * .
         L     R2,LCBRCQCB .
         LA    R2,AVTEZERO(R2)          CLEAR HI BYTE           SA54262
*        LEAVE PRTY SET TO D0 FOR AN APPL PGM
         B     RCPOST .
         EJECT
*        THIS SECTION OF CODE WILL INITIALIZE THE FIELDS NEEDED
*        TO CONSTRUCT A BUFFER FROM A UNIT OF DATA.  THE UNIT IS
*        A CPB UNIT JUST READ FROM DISK OR A UNIT IN THE CORE QUEUE
*        THESE ARE THE FIELDS AND THRIR MEANINGS
*        CPBINWKA - THE COUNT OF DATA TO BE MOVED FROM THE UNIT
*              INTO THE BUFFER.
*        CPBWKACT - THE COUNT OF DATA IN THE UNIT THAT HAS NOT YET
*              BEEN TRANSFERED INTO A BUFFER.
*        DATCOUNT - THE COUNT OF DATA IN A UNNIT THAT DOES NOT HAVE
*              A PREFIX - IF =0 - UNIT IS FULL
*        CPBTOUNT - THE COUNT OF DATA TO BE MOVED INTO A BUFFER UNIT
*              TO FILL THE UNIT OF THE BUFFER
*        CPBUNTCT - COUNT OF DATA BYTES ALREADY IN A BUFFER UNIT.
*        SCBUNTCT - THE COUNT OF DATA BYTES ALREADY TRANSFERRED OUT
*              OF THE UNIT QUEUED AT SCBSCSEG.
         SPACE 3
CKBFRA   EQU   * .
         MVC   CPBINWKA(1),AVTKEYLE+1 . SET COUNT OF DATA IN WKA TO
*        KEYLE
         CLI   DATCOUNT,AVTEZERO .      IS COUNT =0
         BE    FIXWKACT .
         MVC   CPBINWKA(1),DATCOUNT .   CORRECT CONUT
FIXWKACT EQU   * .
         CLI   SCBUNTCT,AVTEZERO .      ANY NOT MOVED
         BE    HAVEBUF .                BR NO
         IC    R8,SCBUNTCT .            AMT LEFT TO MOVE
         IC    R14,CPBINWKA .           TOTAL DATA THERE
         SR    R14,R8 .                 SUBTRACT FOR AMY LEFT
         STC   R14,CPBINWKA .           NEW AMT OF DATA THERE
         STC   R8,CPBWKACT .           SET AMT MOVED ALREADY
HAVEBUF  EQU   * .
         NC    LCBERBCH(3),LCBERBCH .   ANY BFRS THERE
         BNZ   BFRTHERE .               BR YES
         LR    R8,R15 .                 SAVE CPB ADDR
         LA    R7,SIZTHERE .
         CLI   LCBERBKY,AVTEZERO .
         BCR   EQUAL,R7 .                                        S21101
         TM    DATFLAGS,DATNPRFX .
         BO    USELCB .
         LR    RPRF,R2 .
         BAL   R7,OFFSET .
SIZTHERE EQU   * .
         LR    R15,R8 .                 RSTORE CPB ADDR
         LA    RPRF,LCBERBLK-1 .        INITIALIZE
         LA    R8,LCBERB .
*        SET UP AMOUNT OF DATA TO BE MOVED INTO THE NEW UNIT
NEWBUFB  EQU   * .
         LA    R14,AVTUMALN(R2) .       SET FOR MOVE
         MVC   CPBTOUNT(1),AVTKEYLE+1 . COUNT TO UNT = KEYLE
         CLC   LCBERBQB+1(2),AVTKEYLE . BFR LARGER THAT KEYLE
         BH    NEWBUFC .                BR YES
         MVC   CPBTOUNT(1),LCBERBQB+2 . CORRECT COUNT
NEWBUFC  EQU   * .
         SR    R7,R7 .
*        SET R7 TO INDICATE A PREFIX IS NEEDED
*        GET A NEW UNIT
         BAL   R9,GETBFR .
NEWBUFD  EQU   * .
         LA    R9,AVTUMALN(R5) .        ADDR TO MOVE FROM
NEWBUFA  EQU   * .
         AIF   (&A EQ 1).F056C
         LA    R1,0(R1) .               MAKE R1 POSITIVE
.F056C   ANOP
         SPACE        3
*        THIS SECTION WILL DETERMINE WHETHER THE BUFFER UNIT AND
*        CPB UNIT ( OR QUEUED UNIT IN CORE) CAN BE SWAPPED OR DATA
*        MUST BE TRANSFERRED.
         SPACE 3
         CLI   CPBWKACT,AVTEZERO .      ANY MOVED
*        IF ANY HAS ALREADY BEEN MOVED FROM THE WORK UNIT BR TO
*        SKIP OVER IT
         BNE   MOVEWKBS(R7) .
         TM    DATFLAGS,DATNPRFX .      UNIT HAVE PRFS
*        IF NOT - ONE MAY OR MAY NOT BE NEEDED - GO CHECK
         BO    SETMOVE1(R7) .
*        THE UNIT HAS A PREFIX
         LTR   R7,R7 .                  IS A PRFX NEEDED
         BNZ   SETMOVE .                BR NO
         AIF   (&A EQ 1).F056D
*        HAVE PRFX AND NEED PRFX - IS DISK AND NOT A HDR - IDLE
*        CHARACTERS MUST BE REMOVED.
         TM    PRFSTAT1-IEDQPRF(R2),PRFNHDRN .     HDR
         BNO   MAYSWAP .                BR HDR
         TM    LCBSTAT1,LCBRCLLN+LCBRECVN .
*     LEAVE IDLES IF RECALL ON RCV OR FROM BD
         BO    MAYSWAP .                BR IF RECALL
         TM    LCBCHAIN,LCBBFRSZ .      FROM BD
         BO    MAYSWAP .                BR YES
         CLI   DATSCAN+1-IEDQDATA(R2),AVTEZERO .   ANY IDLES
         BZ    MAYSWAP .                BR IF NO IDLES TO REMOVE
         LNR   R1,R1 .                  SET FLAG FOR IDLES
.F056D   ANOP
MAYSWAP  EQU   * .
         CLC   CPBTOUNT(1),CPBINWKA .   IS THE AMT OF DATA THE
*        UNIT CAN HODD LESS THAN AMT TO MOVE IN WKA
         BL    MOVUNT2(R7) .
         CLI   CPBUNTCT,AVTEZERO .      ANY ALREADY IN UNIT
         BNE   PARTFULL .               BR IF DATA THERE
         AIF   (&A EQ 3).F057
         AIF   (&A NE 1).F058
         B     MOVUNT2(R7) .
         AGO   .F059
.F057    ANOP
*        THE UNIT AND BFR UNIT CAN BE SWAPPED IF NOT CORE QUEUED
         TM    SCBQTYPE,SCBCOREQ .
         BO    MOVUNT2(R7) .
.F058    ANOP
         LTR   R1,R1 .                  ANY IDLES TO REMOVE
         BM    BLDPRF1 .                BR YES TO MOVE DATA
*        SWAP CPB UNIT AND BFR
         ST    R5,CPBXREAF .
         MVI   CPBWKACT,AVTEZERO .
         LTR   R7,R7 .                  PRFX NEEDED
         BNZ   TICLINK .                BR NO
         TM    PRFSTAT1-IEDQPRF(R2),PRFNHDRN .   HDR
         BNO   NOMOVE .                 BR NO - YES SET UP THE ADDR
         MVC   PRFCHDR-IEDQPRF(3,R2),SCBSCHDR . OF CORRECT HDR
NOMOVE   EQU   * .
         STH   R7,PRFSIZE-IEDQPRF(R2) .
         LR    R5,R2 .
         BAL   R7,FIXIT .
.F059    ANOP
         AIF   (&A EQ 1).F059A
ADDWKA   EQU   * .
         IC    R11,CPBINWKA .
         MVI   CPBINWKA,AVTEZERO .
.F059A   ANOP
STORE    EQU   * .
         N     R11,XMASK .
         AH    R11,PRFSIZE .
         STH   R11,PRFSIZE .
         NC    LCBTTCIN(2),LCBTTCIN     RETRIEVE?              @SA70861
         BNZ   NOTRET3                  BRANCH IF NO           @SA70861
         TM    LCBSTAT2,LCBDIAL         DIAL LCB?              @SA70861
         BNO   NOTRET4                  BRANCH IF NO           @SA70861
NOTRET3  EQU   *                                               @SA70861
         NI    PRFSTAT1,PRFCNCLF
NOTRET4  EQU   *                                               @SA70861
         IC    R14,CPBWKACT .
         STC   R14,SCBUNTCT .
         CH    R11,LCBERBQB+1 .
         BNL   BUFCPB .
BFNOTFUL EQU   * .
         CLI   CPBINWKA,AVTEZERO .      ALL WKA BEEN MOVED
         BNE   NXTUNT .                 BR YE  NO
BFRFULL  EQU   * .
         LA    R2,0(R2) .               CLEAR FOR LTR
         BAL   R14,FREECPBA .
         TM    SCBSTAT1,PRFNLSTN .               LAST BFR
         BO    CKENQERB .
         AIF   (&A NE 3).F060
         TM    SCBQTYPE,SCBCOREQ .
         BO    ENDMSG1 .
.F060    AIF   (&A EQ 1).F061
         NC    SCBXTRA(3),SCBXTRA .     ANY XTRA RECORDS
         BZ    ENDMSG .                  BR NO
         CLC   CPBADDR+1(3),SCBCRCD .   HAS THIS PRFX ONLY BEEN
         BE    CKENQERB .               READ - BR YES TO READ XTRA AND
*        FIX NTXT - IF ONLY PRFX READ NTXT COULD BE TXT QBCK CHN
         CLC   CPBADDR+1(3),SCBNTXT .   LAST XTRA READ
         BNE   CKENQERB .              BR NO TO INIT NEXT READ
ENDMSG   EQU   * .
         CLI   CPBINWKA,AVTEZERO .      ALL MOVED
         BNE   CKENQERB .               NO - NOT EOM
         BAL   R10,SETEOM .
.F061    ANOP
ENDMSG1  EQU   * .
         LA    R14,CKENQERB .
         NC    LCBERBCH(2),LCBERBCH .   THIS BFR BEEN FREED YET
         BCR   ZERO,R14 .               BR IF FREED              S21101
         B     FULLBUF .
SETEOM   EQU   * .
         NI    PRFSTAT1,PRFNLSTF .      SET NOT LAST OFF
         OI    LCBERBST,LCBEOMSG .      SET EOM GOTTEN
         MVI   SCBUNTCT,AVTEZERO .      SET TO 0 FRO MH
         MVI   SCBNXCPB,AVTEZERO .      SET FOR MH
         BR    R10 .                    RETURN
CKENQERB EQU   * .
         TM    LCBERBST,LCBEOMSG .      END OF MSG GOTTEN
         BO    CKREQ .
         AIF   (&A EQ 1).F061AA
         TM    LCBERBST,LCBERROR        LCB ERROR              @OS77389
         BNO   NOSNDERR                 NO, BRANCH             @OS77389
         NI    LCBERBST,AVTEFF-LCBPRCPG TURN OFF BFR REQUEST   @OS77389
         B     POSTERR                                         @OS77389
NOSNDERR EQU   *                                               @OS77389
.F061AA  ANOP
         CLI   LCBERBCT,AVTEZERO .
         BNE   ENQERB .
         OI    LCBERBCT+1,XXCTUSED .    FLAG THE DISABLED COUNT
         CLI   LCBERBCT+1,XXCTUSED .    IS THE DISABLED CT 0
         BNE   ADDCTS .                 BR IF DISA. CT NOT 0
         NI    LCBERBCT+1,X'FF'-XXCTUSED .
*        SET DISABLED COUNT FLAG OF
         OI    LCBERBST,LCBDLNKN .      SET FOR PCI
         LH    R11,LCBERBCT .
         LTR   R11,R11 .
         BZ    CKREQ .
         TM    LCBERBST,LCBDLNKN .
         BNO   CKREQ .
         NI    LCBERBST,LCBDLNKF .
         B     ENQERB .
         SPACE 3
*        THIS SECTION WILL DETERMINE HAW TO BUILD THE BUFFER UNIT WHEN
*        DATA IS TO BE MOVED.
         SPACE 3
SETMOVE1 EQU   * .
*        IF UNIT DOES NOT HAVE A PREFIX - BR *+(R7)
         B     BUILDPRF .
         B     MAYSWAP .
MOVEWKBS EQU   * .
*        IF PART OF WORK AREA HAS BEEN MOVED - BR TO *+(R7)
         B     MOVEWKA .
         B     MOVUNT2+4 .
         AIF   (&A EQ 1).F061A
TICLINK  EQU   * .
         LR    R5,R2 .
         LA    R7,ADDWKA .              RETURN ADDRESS
         B     LINKTIC .                USE COMMON CODE
*
.F061A   ANOP
*        IF MORE DATA IN WORK AREA THAN NEEDED IN UNIT
MOVUNT2  EQU   * .
*        COULD SWAP IF NOT CORE QUEUED
         B     BLDPRF1 .
         LA    R7,MOVEWKB .             SET RETURN ADDRESS
LINKTIC  EQU   * .
         ST    R5,PRFTIC-IEDQPRF(R8) .
         MVI   PRFTIC-IEDQPRF(R8),CPBTICC .
         LR    R8,R5 .
         XC    PRFLINK-IEDQPRF(6,R8),PRFLINK-IEDQPRF(R8) .
         MVI   PRFTIC+3-IEDQPRF(R8),X'02' .
         MVI   PRFTIC-IEDQPRF(R8),CPBTICC .  SET TIC
         BR    R7 .                     RETURN
*
MOVEUNTA EQU   * .
*        HERE TO MOVE AMOUNT OF DATA NEEDED IN NEW UNIT
         LR    R8,R5 .
         IC    R11,CPBTOUNT .
MOVESET  EQU   * .
         LA    R7,4095(R11) .           SUBRT ONE FOR MOVE
         EX    R7,MOVE .                MOVE DATA
         IC    R14,CPBWKACT .           ADD AMOUNT MOVED THIS
         AR    R14,R11 .                TIME TO AMOUNT ALREADY
         STC   R14,CPBWKACT .           MOVED FROM WORK AREA
         IC    R14,CPBINWKA .           SUBTR AMOUNT MOVED
         SR    R14,R11 .                FROM AMOUNT LEFT TO
         STC   R14,CPBINWKA .           MOVE FROM WORK AREA
         B     STORE .
BFRTHERE EQU   * .
         BAL   R14,LAST .
         B     NEWBUFB .                BR IF LAST BFR FULL
         LA    R14,AVTUMALN(R2) .       FROM ADDR + 12
         LA    R7,4 .                   SET NO PRFX NEEDED
         LTR   R11,R11 .
         BP    NEWBUFA .                THE LAST UNIT NOT FULL
         BAL   R9,ADDNBUNT .
         B     NEWBUFD .
PARTFULL EQU   * .
         LA    R14,AVTUMALN(R2) .       SET 14  FOR MOVE
         B     MOVEWKB .                BR TO MOVE DATA
MOVEWKA  EQU   * .
         LA    R14,AVTUMALN(R2) .       FROM ADDR + 12
         B     BUILDPRF .
IDLETEST EQU   * .
         TM    LCBSTAT1,LCBRCLLN+LCBRECVN .      SHOULD IDLES
         BO    SAVEIDLE .               RESERVE CHARACTERS ARE TO BE
*        BE SAVED - ---- YES IF THIS IS A BD RECALL OR A
*        RECALL ON THE RECEIVE SIDE - BT
         TM    LCBCHAIN,LCBBFRSZ .      BD RECALL
         BO    SAVEIDLE .
         B     BLDPRF2 .                SAVED
BLDPRF1  EQU   * .
*    WILL ENTER HERE ONLY IF HAVE A PREFIX AND NEED ONE BUT
*    A SWAP IS NOT POSSIBLE.
         SR    R1,R1 .
         IC    R1,DATSCAN+1-IEDQDATA(R2) .    NO. IDLES
*        SHOULD ALSO BE SKIPPED
         LA    R11,AVTTXTSZ .           SIZE OF TXT PRF
         TM    SCBSTAT1,PRFNHDRN .      IS THIS IS HCR
         BO    IDLETEST .               BR NOT HDR TO TEST FOR IDLES
         MVC  PRFHQBCK-IEDQPRF(PRFSHDR-PRFSTXT,R5),PRFHQBCK-IEDQPRF(R2)
***********************
*        UPDATE HDR ONLY FIELDS SINCE THE HDR IS STILL AVAILABLE
         LA    R11,AVTHDRSZ .           CORRECT SIZE FOR HDR
SAVEIDLE EQU   * .
         LH    R7,DATSCAN-IEDQDATA(R2) .    SAVE SCAN AND IDLES
         SR    R1,R1 .                   IDLES SHOULD REMAIN IN HDRS
BLDPRF2  EQU   * .
         AR    R1,R11 .                 NO IDLES + SIZE OF PRFX
         IC    R9,CPBINWKA .            SUBTR PRF SIZE FROM COUNT
         SR    R9,R1 .                  OF DATA TO MOVE FROM WK AREA
         STC   R9,CPBINWKA .
         STC   R1,CPBWKACT .            SET AMT MOVED
         B     BLDPRF3 .                TREAT AS NEW BFR NOT NEW REC
BUILDPRF EQU   * .
*    ENTER HDRE IF NEED A PREFIX BUT DO NOT HAVE ONE
         LA    R11,AVTTXTSZ .           INITIALIZE TXT PRF SIZE
         OI    SCBSTAT1,PRFNHDRN .      THIS MUST NOT BE HDR
BLDPRF3  EQU   * .
         MVC   PRFSRCE-IEDQPRF(AVTTXTSZ-4,R5),SCBSRCE .
         NI    SCBSTAT1,X'D7' .         INTERCPT AND DULP OFF
         STH   R7,PRFSCAN-IEDQPRF(R5) . ZERO THE SCAN PRT
         STC   R11,CPBUNTCT .           SET AMT IN UNIT NOW
         IC    R9,CPBTOUNT .
         SR    R9,R11 .
         STC   R9,CPBTOUNT .
         STH   R11,PRFSIZE-IEDQPRF(R5) .
*              NEXT MOVE TO UNIT ADDR + PRFX SIZE + 12
         BAL   R7,FIXIT .
*        SET FOR DEOB FOR EOB'S - THE THE QUEEU ADDR OF
         MVC   PRFCRCD(3),SCBSCSEG .    THIS RECORD
         TM    PRFSTAT1,PRFNHDRN .      IS THIS A HDR
         BNO   MOVEWKB                  BRANCH IF NOT HEADER     S21101
         MVC   PRFCHDR(3),SCBSCHDR .    SET HDR ADDRESS
MOVEWKB  EQU   * .
         SR    R9,R9 .
         IC    R9,CPBUNTCT .
         LA    R9,AVTUMALN(R9,R5) .
         SR    R11,R11 .                CLEAR FOR IC AND ADD
         IC    R11,CPBWKACT .           ADD WKACT TO
         AR    R14,R11 .                THE FROM ADDRESS
         CLC   CPBTOUNT(1),CPBINWKA .   MORE IN UNT THAN WKA
         BNH   MOVEUNTA .
*        HERE TO MOVE AMOUNT OF DATA AVAILABLE
         IC    R11,CPBINWKA .
         B     MOVESET .
FIXIT    EQU   * .
         OI    SCBSTAT1,PRFNHDRN .      INSURE NHDR FOR NEXT TIME
         IC    R11,PRFLINK-1 .
         ST    R5,PRFLINK-1 .
         STC   R11,PRFLINK-1 .
         LR    RPRF,R5 .                NEW BFR ADDR
         XC    PRFLINK(7),PRFLINK .     CLEAR LINK AND TIC
         MVI   PRFTIC+3,X'02' .
         MVI   PRFTIC,CPBTICC .         SET TIC OP CODE
         LR    R8,R5 .                  NEW LAST UNIT ADDR
         ST    RLCB,PRFLCB-1 .          SET LCB ADDR
         MVI   PRFNBUNT,X'01' .         SET NUMB UNITS
         OI    PRFSTAT1,PRFNLSTN .      SET NOT LAST SEG
         NC    LCBTTCIN(2),LCBTTCIN .   IS THIS RETRIEVE         S21101
         BNZ   NOTRET2                  BR NOT RETRIEVE           M2321
         TM    LCBSTAT2,LCBDIAL         IF 0, COULD BE DIAL-IF    M2321
         BCR   14,R7                    NOT DIAL, THIS IS RETR.   M2321
NOTRET2  EQU   *                                                  M2321
         TM    LCBCHAIN,LCBBFRSZ        IS THIS FROM BD         SA63623
         BOR   R7                        BR IF YES               A63623
         IC    R9,SCBUNTCT .            THIS BYTE ADDRESS WITH IN
         STC   R9,PRFNTXT .             THIS RECORD
         BR    R7 .
NXTUNT   EQU   * .
         BAL   R9,ADDNBUNT .
         MVC   CPBTOUNT(1),AVTKEYLE+1 . SET AMT TO MOVE TO UNIT
         BAL   R7,LINKTIC .
         LA    R14,AVTUMALN(R2) .       FROM ADDR +12
         LH    R11,PRFSIZE .            DATA THERE
         LH    R9,LCBERBQB+1 .          SIZE NEEDED
         SR    R9,R11 .                 AMT LEFT TO GET
         MVI   CPBUNTCT,AVTEZERO .      AMOUNT ALREADY IN UNIT =0
         CH    R9,AVTKEYLE .            THIS UNIT TO BE FILLED
         BH    MOVEWKB .                BR YES
         STC   R9,CPBTOUNT .            RESET COUNT TO MOVE
         B     MOVEWKB .
SETMOVE  EQU   * .
*        HERE IF UNIT HAS A PREFIX AND ONE IS NOT NEEDED - SET
*        TO SKIP OVER THE PREFIX
         TM    SCBSTAT1,PRFLOCK .       THIS LOCK MODE MSG
         BNO   NOLOCK .                 BR NO
         OI    PRFSTAT1,PRFLOCK .       SET LOCK IN THIS BFR
NOLOCK   EQU   * .
         SR    R1,R1 .
         IC    R1,DATSCAN+1-IEDQDATA(R2) .    IDLES IN BFR
         LA    R1,AVTTXTSZ(R1) .        + SIZE OF PRFX
         STC   R1,CPBWKACT .            INTO WKACT FOR AMT MOVED
         IC    R11,CPBINWKA .
         SR    R11,R1 .                 SUBTR SIZE OF TXT AND IELES
         STC   R11,CPBINWKA .
         CLI   CPBUNTCT,AVTEZERO .      ANY IN THIS UNIT ALREADY
         BNE   MOVEWKB .                BR YES
         B     MOVUNT2+4 .
ADDCTS   EQU   * .
         SR    R0,R0 .                  ADD THE DISABLED CT TO THE
         IC    R0,LCBERBCT+1 .
         MVI   LCBERBCT+1,AVTEZERO .
         LA    R11,AVTE80-1 .           SET FOR NR TO CLEAR
         NR    R0,R11 .                 FLAG FROM DISABLED COUNT
         IC    R11,LCBERBCT .
         AR    R11,R0 .
         STC   R11,LCBERBCT .
ENQERB   EQU   * .
         BAL   R11,FIXDEOB .
         LA    R15,LCBERB .             ELEM ADDR
         LA    R2,AVTNCPBQ .
         BAL   R11,ENQMGRB .
         B     TAG1 .
BUFCPB   EQU   * .
         TM    PRFSTAT1,PRFNLSTN .      LAST BFR FULL
         BO    NOCOMPL .                BR NOT LAST BUT FULL
         OI    LCBERBST,LCBCOMPL .      SET REQ COMPLETE
NOCOMPL  EQU   * .
         BAL   R14,FULLBUF .
         L     RLCB,PRFLCB-1 .
         L     RSCB,LCBSCBA-1 .
         TM    LCBERBST,XCOMPL .        REQ COMPLETE
         BO    BFRFULL .
         CLI   CPBINWKA,AVTEZERO .      ALL WK AREA MOVED
         BE    BFNOTFUL .
         B     HAVEBUF .
LASTTEST EQU   * .
         IC    R1,CPBWKACT .           COUNT INTO WORK AREA
         CLI   CPBINWKA,AVTEZERO .      ALL MOVED
         BNE   LASTEST .                BR NO
         SR    R1,R1 .                  SET TO 0
LASTEST  EQU   * .
         STC   R1,SCBUNTCT .            RESET UNTCT
         BR    R9 .
         SPACE 3
*        THIS SECTION WILL FIND THE LAST UNIT OF THE LAST BUFFER
*        ASSOCIATED WITH THE ERB AND THE AMOUNT OF DATA IN IT.
         SPACE 3
LAST     EQU   * .
         L     RPRF,LCBERBCH-1 .
         B     CKNEXTA .
CKNEXT   EQU   * .
         L     RPRF,PRFLINK-1 .          ADDR NEXT BFR
CKNEXTA  EQU   * .
         NC    PRFLINK(3),PRFLINK .     IS THERE A NEXT BFR
         BNZ   CKNEXT .
         TM    LCBSTAT1,LCBRCLLN+LCBRECVN .      RECALL BFR THERE
         BO    DATTEST .                BR TO NOT CHANGE BFR SIZE
         TM    LCBCHAIN,LCBBFRSZ .      IF IT IS SPECIAL RECALL
         BNO   LAST1 .                 BR NOT SPECIAL RECALL
DATTEST  EQU   * .
         TM    DATFLAGS-IEDQDATA(R2),DATNPRFX .  IF A PRFX HAS BEEN
         BCR   14,R14 .                 READ ASSUME LAST BFR IS FULL
LAST1    EQU   * .
         LR    R11,R2 .                 SAVE R2
         LA    R2,((SCBSIZE-IEDQSCB)-(PRFSIZE-IEDQPRF))(R3) .
*        USE LAST SAVED PRFX
         BAL   R7,SIZECK .             CHECK BFR SIZE
         LR    R2,R11 .                 RESTORE 2
         LH    R7,AVTKEYLE .            GT KEYLENGTH
         LR    R8,RPRF .
         LH    R11,PRFSIZE .
         CH    R11,LCBERBQB+1 .         IS BFR FULL
         BCR   EQUAL,R14 .              IF YES, RETURN           S21101
         LH    R1,LCBERBQB+1 .          SIZE THERE ALREADY
BFRUNIT  EQU   * .
         SR    R11,R7 .                 SIZE THERE - KEY
         SR    R1,R7 .                  SIZE TO GET - KEY
         NC    PRFTIC+1-IEDQPRF(2,R8),PRFTIC+1-IEDQPRF(R8) .
         BZ    RETURN .                 BR IF NO NEXT UNIT
         L     R8,PRFTIC-IEDQPRF(R8) .  NEXT UNIT ADDR
         B     BFRUNIT .
RETURN   EQU   * .
         LR    R5,R8 .                  SET LAST UNIT ADDR
         LTR   R11,R11 .                LAST UNIT FULL
         BNM   SETUNTCT .               BR IF FULL
         AR    R11,R7 .                 ADD FOR AMOUNT THERE
         AR    R1,R7 .                  ADJUST SIZE ALSO
SETUNTCT EQU   * .
         STC   R11,CPBUNTCT .           SET COUNT ALREADY IN UNT
         CR    R1,R7 .                  IS SIZE LEFT TO MOVE LESS
         BL    SUBTREM .                THAN KEY -- BR YES
         LR    R1,R7 .                  RESET FOR STC
SUBTREM  EQU   * .
         SR    R1,R11 .                 SIZE LEFT - AMT THERE
         STC   R1,CPBTOUNT .            IS COUNT TO MOVE TO UNIT
         LR    R5,R8 .
         B     4(R14) .
         SPACE 3
*        THIS SECTION WILL FREE A CPB IF DISK QUEUEING AND INITIALIZE
*        FOR THE NEXT OPERATION, WAIT FOR THE NEXT CPB IF ONE, OR
*        IF THE REQUEST IS COMPLETE, FREE THE ERB TO WAIT FOR THE
*        NEXT REQUEST.    IF CORE QUEUED THE NEXT UNIT OF THE
*        MESSAGE IF FOUND IN THE CORE QUEUE AND INITIALIZED FOR DATA
*        TRANSFER OR IF THE REQUEST IF COMPLETE IT WILL SET UP TO
*        WAIT FOR THE NEXT REQUEST.
         SPACE 3
*    WILL SUBTR 1 FROM CPB COUNT AND GO TO APPQEMTY
*    WILL RETURN
FREECPBA EQU   * .
         IC    R1,SCBCPBNO .
         BCTR  R1,0 .
         STC   R1,SCBCPBNO .
         LTR   R2,R2 .                 TEST FLAG NOT TO UPDATE
         BM    NOUNTCT .                 BR IF NO UPDATE
         BAL   R9,LASTTEST .
NOUNTCT  EQU   * .
         AIF   (&A NE 3).F062
         TM    SCBQTYPE,SCBCOREQ .
         BO    CORECPB .
.F062    AIF   (&A EQ 1).F063
         IC    R1,SCBNXCPB .            SAVE HI BYTEM
         LA    R1,1(R1) .               ADD ONE TO NO. OF NEXT CPB
         STC   R1,SCBNXCPB .            RESTORE HI BYTE
         LH    R1,AVTDSKCT .            SUBTR ONE FROM DISK CT
         BCTR  R1,0 .
         STH   R1,AVTDSKCT .
         LTR   R2,R2 .             COMPRTEST TO UPDATE FLAG
         BM    TESTLAST .               BR NO UPDATE
         CLI   CPBINWKA,AVTEZERO .      ANY DATA LEFT
         BNE   TESTLAST .               BR YES
         TM    DATFLAGS-IEDQDATA(R2),DATNPRFX .    HAVE A PRFX
         BNO   CKLAST2 .                BR YES
         L     R9,CPBADDR .             ADDR THIS RECORD
         LA    R9,INCR(R9) .            ADD FOUR                 S21101
         IC    R11,SCBSCSEG-1 .
         ST    R9,SCBSCSEG-1 .
         STC   R11,SCBSCSEG-1 .
         B     TESTLAST .
CKLAST2  EQU   * .
         NC    SCBXTRA(3),SCBXTRA .     ANY XTRAS
         BZ    CKLAST3 .                BR NO
         MVC   SCBSCSEG(3),SCBXTRA .
         B     TESTLAST .
CKLAST3  EQU   * .
         MVC   SCBSCSEG(3),SCBNTXT .
TESTLAST EQU   * .
         CLI   SCBCPBNO,AVTEZERO .
         BE    CPBFREEA .               IF 0 RETURN
         B     CPBFREE .                IF NOT RETURN TO APPQEMTY
.F063    AIF   (&A EQ 2).F064
CORECPB  EQU   * .
         NC    PRFTIC+1-IEDQPRF(2,R2),PRFTIC+1-IEDQPRF(R2) .
         BZ    GETCORE .
         CLI   CPBINWKA,AVTEZERO .      ANY DATA LEFT
         BNE   DEOBSET .                BR YES
         MVC   SCBSCSEG(3),PRFTIC+1-IEDQPRF(R2) .
         L     R2,PRFTIC-IEDQPRF(R2) .
         B     DEOBSET .
GETCORE  EQU   * .
         CLI   CPBINWKA,AVTEZERO .      ALL DATA MOVED
         BNE   DEOBSET .                BR NO
         TM    SCBSTAT1,PRFNLSTN .
         BNO   SETCPBNA .
         TM    LCBSTAT1,LCBINITN .      INIT MODE
         BNO   MOVENTXT .               BR NOT INIT
         NC    SCBNTXT(3),SCBNTXT .     IS THE BUFFER THERE
         BNZ   MOVENTXT .               BR YES
INITERR  EQU   * .
         OI    LCBERBST,LCBRDERR .      SET LOGICAL READ ERROR
         LA    R14,TAG1 .               SET RTN ADDR
         B     INITPOST .
MOVENTXT EQU   * .
         MVC   SCBSCSEG(3),SCBNTXT .
         L     R2,SCBSCSEG-1 .
DEOBSET  EQU   * .
         TM    LCBERBST,XCOMPL .        REQ COMPLETE
         BO    SETCPBNO .               BR YES
         XC    AVTDOUBL(5),AVTDOUBL .   CLEAR WORK AREA
         B     NEXTCPB1 .
SETCPBNA EQU   * .
         BAL   R10,SETEOM .
SETCPBNO EQU   * .
         MVI   SCBCPBNO,AVTEZERO .
         BR    R14 .
.F064    ANOP
*        SILL GET SIZE OF BFR THAT IS QUEUED IF FROM BD REQ.
SIZECK   EQU   * .
         TM    LCBSTAT1,LCBRCLLN+LCBRECVN .
         BO    SIZECK1 .
         TM    LCBCHAIN,LCBBFRSZ .      RECALL FROM BFR DISPOSITION
         BCR   NOTONES,R7 .             BR NOT BD RECALL         S21101
*        WHEN ENTERED HERE FROM 'OFFSET' - THIS ROUTINE HAS NO BASE
SIZECK1  EQU   * .
         LH    R8,PRFSIZE-IEDQPRF(R2) . SIZE IN BFR READ
         STH   R8,LCBERBQB+1 .          SET TO BUILD BFRS SAME SIZE
         SR    R10,R10 .                AS THE BFR ON THE QUEUE
         BALR  R1,0 .
         LA    R10,1(R10) .             ADD ON E TO COMPUTE NO UNITS
         SH    R8,AVTKEYLE .            LESS ONE UNIT
         BCR   PLUS,R1 .                BR IF NOT ALL UNITS      S21101
         STH   R10,LCBERBQB-1 .         SET NO UNITS IN BFR TO RECALL
         BR    R7 .                     RETURN
ADDNBUNT EQU   * .
         IC    R11,PRFNBUNT .
         LA    R11,1(R11) .
         STC   R11,PRFNBUNT .
         B     NOSET11 .
GETBFR   EQU   * .
         SR    R11,R11 .
NOSET11  EQU   * .
         NC    AVTBFREB+1(3),AVTBFREB+1 ARE ANY BFRS THERE
         BZ    NOBFRS .
         LH    R5,AVTAVFCT .            SUBTR. ONE FROM AV BF CT
         N     R5,AVTCLRHI              CLEAR HIGH BYTES       @YA07705
         BCTR  R5,0 .
         STH   R5,AVTAVFCT .
         L     R5,AVTBFREB .            ADDR OF UNIT
         L     R1,PRFLINK-1-IEDQPRF(R5) ADDR OF NEXT UNIT
         ST    R1,AVTBFREB .            INTO BFR REQ QCB
CLRBFR   EQU   *
         XC    PRFLINK-1-IEDQPRF(8,R5),PRFLINK-1-IEDQPRF(R5) .
         MVI   PRFTIC-IEDQPRF(R5),8 .   SET TIC OP CODE
         BR    R9 .
NOBFRS   EQU   * .
         AIF   (&A NE 3).F065
         TM    SCBQTYPE,SCBCOREQ .      READ FROM CORE
         BO    PUTERB .                 BR YES NO CPB CHAIN
.F065    AIF   (&A EQ 1).F065B
*        SAVE NEEDED REGS FOR RTN ON R9 WHEN BFR IS AVAILABLE
         STM   R6,R11,CPBSEKFL .        SAVE REGS FOR STATUS     A49228
         ST    R14,CPBUNUSD .
         MVI   CPBSEEK,X'FF'            STE FLAG IN ORIG CPB    SA52984
NOBFRQ   EQU   *                                                SA52984
         L     R1,AVTNOBFQ .
         ST    R1,CPBNEXTF .
         ST    R15,AVTNOBFQ .
         AIF   (&A EQ 2).F065C
         B     TESTFLAG
.F065B   ANOP
PUTERB   EQU   * .
         LTR   R11,R11 .
         BZ    TESTFLAG .
         BCTR  R11,0 .
         STC   R11,PRFNBUNT .
TESTFLAG EQU   * .
.F065C   ANOP
         AIF   (&A EQ 1).F066
         TM    LCBERBST,XXXINQ .        IS THE ERB ALREADY IN THE
         BO    GOAPQEMT .
.F066    ANOP
         IC    R11,CPBWKACT .           RESTORE SCBUNTCT
         STC   R11,SCBUNTCT .
         OI    LCBERBST,XXXINQ .        FLAG ON
         MVC   LCBERBLK(3),AVTBFRTB+1 .
         IC    R1,LCBERBPY .
         STC   R1,LCBERB .
         LA    R1,LCBERB .
         MVI   LCBERBPY,PRIDSKBF .
         ST    R1,AVTBFRTB .
         B     TAG1 .
         SPACE 3
*        THIS SECTION DEALS WITH A UNIT POSTED TO CPB CLEANUP AS A
*        RESULT OF AS ERB APPEARING IN THE BUFFER RETURN QUEUE BECAUSE
*        THERE WERE NO UNITS AVAILABLE.
         SPACE 3
BUFFER   EQU   * .
         LR    R5,R1 .                  SET NEW UNIT ADDR
         L     RLCB,PRFLCB-1-IEDQPRF(R1) .   LCB ADDR
         NI    LCBERBST,X'FF'-XXXINQ .  RESET FLAG
         L     RSCB,LCBSCBA-1 .
         IC    R1,LCBERB .
         STC   R1,LCBERBPY .
         AIF   (&A NE 3).F068
         TM    SCBQTYPE,SCBCOREQ .      READ FROM CORE
         BO    SETCPBAD .               BR YES TO RECOMPUTE CPB AD
.F068    AIF   (&A EQ 1).F069
         LH    R1,AVTAVFCT .            DECR. CT. OF AV. UNITS
         N     R1,AVTCLRHI              CLEAR HIGH BYTES       @YA07705
         TM    LCBERBST,LCBERROR .      IS THERE AN ERROR        A44866
         BO    NODECR .                 BR YES, BFR RETURN       A44866
         BCTR  R1,0 .
         STH   R1,AVTAVFCT .
NODECR   EQU   * .                                               A44866
         LA    RLCB,0(RLCB) .           CLEAR HI BYTE
         LA    R15,AVTNOBFQ-(CPBNEXTF-IEDQCPB) INITIALIZE FOR LP
CKCPB    EQU   * .
         LR    R14,R15 .                SAVE ADDR LAST CPB
CKCPBA   EQU   *                                                SA52984
         L     R15,CPBNEXTF-IEDQCPB(R14) . NEXT CPB
         L     R2,CPBAERBF .            ERB ADDR
         LA    R2,0(0,R2) .             CLEAR HI BYTE
         CR    RLCB,R2 .                SAME LCB
         BNE   CKCPB .                  NO, GO CHECK NEXT CPB    S22025
         MVC   CPBNEXT-IEDQCPB(3,R14),CPBNEXT .  REMOVE CPB
         CLI   CPBSEEK,X'FF'            IS THIS THE ORIG.       SA52984
         BE    HAVECPB                  YES-PROCESS             SA52984
         LR    R6,R14                   SAVE ADDR OF CPB PREVUS SA52984*
                                         TO THIS                SA52984
         LA    R2,AVTDKENQ              PUT THIS CPB ON Q       SA52984
         BAL   R11,ENQMGRC              TO BE PROCESSED LATER   SA52984
         LR    R14,R6                   RESTORE ADDR OF PREV    SA52984
         B     CKCPBA                   CONTINUE SEARCH         SA52984
HAVECPB  EQU   *                                                SA52984
*        RESTORE NEEDED REGS FOR RTN ON R9
         L     R2,CPBXREAF .            UNIT ADDR
         LM    R6,R11,CPBSEKFL .        RESTORE REGS FOR STATUS  A49228
         L     R14,CPBUNUSD .
         TM    LCBERBST,LCBERROR .      LINE ERROR               A44866
         BNO   CLRBFR .                 BRANCH IF NOT            A44866
         MVC   PRFLINK-IEDQPRF(3,R5),AVTBFREB+1 .                A44866
         ST    R5,AVTBFREB .            RETURN BFR JUST GOTTEN   A44866
         LTR   R11,R11 .                IS THI NEW UNIT A SINGLE A49228
*        UNIT BFR OR A SUBSEQUENT UNIT OF THE LAST BFR           A49228
         BZ    ANYBFRS .                BR IF NOT A SUBS. UNIT   A49228
         BCTR  R11,0 .                  DECR. NO. UNITS IN LAST  A49228
         STC   R11,PRFNBUNT .           SINCE THIS ONE WAS COUNTEA49228
         B     ANYBFRS .                RETURN EXTRA BFRS & ERB  A44866
.F069    AIF   (&A EQ 2).F070
SETCPBAD EQU   * .
*        AND START OVER FOR THIS CPB
         MVC   PRFLINK-IEDQPRF(3,R5),AVTBFREB+1 .
         ST    R5,AVTBFREB .            REPLACE BFR IN THE POOL
         LA    R15,AVTDOUBL-(CPBINWKA-IEDQCPB) SET DOUBL AS CPB  S22025
*                                            WORK AREA           S22025
         L     R2,SCBSCSEG-1 .          SET 2 TO UNIT ADDR
         CLM   R2,AD,PRFCORE-IEDQPRF(R2)  BFR STILL IN CORE Q  @OX20639
         BNE   RDERROR                  NO, BRANCH             @OX20639
         XC    AVTDOUBL(6),AVTDOUBL .
         TM    LCBERBST,LCBERROR .      LINE ERROR               A44866
         BNO   NEXTCPB1 .               BRANCH IF NOT            A44866
         L     RBASE,BASE1 .            RESET BASE               A44866
         B     ERBERROR-CPBINIT(RBASE) . RETURN BUFFERS & ERB    A44866
         SPACE 3
*        THIS SECTION DETERMINES WHAT TO DO WITH A BUFFER THAT IS FULL
         SPACE 3
.F070    ANOP
FULLBUF  EQU   * .
         IC    R1,LCBERBCT .
         BCTR  R1,0 .
         STC   R1,LCBERBCT .            RESET ENABLED CT -1
         OI    LCBERBCT+1,XXCTUSED .    FLAG DIABLED CT
         IC    R11,LCBERBCT+1 .         GET DISABLED CT
         MVI   LCBERBCT+1,AVTEZERO .    ZERO THE COUNT
         IC    R1,LCBERBCT .            GET NEW ENABLED CT
         AR    R1,R11 .                 ADD COUNTS
         STC   R1,LCBERBCT .
         NI    LCBERBCT,X'FF'-XXCTUSED . FLAG OFF
         CLI   LCBERBCT,AVTEZERO .
         BNE   RTNPRI .                 BR NO
         OI    LCBERBST,XCOMPL .        SET REQ COMPLETE
RTNPRI   EQU   * .
         BAL   R9,LASTTEST .            SET UP SCBUNTCT
         TM    SCBQTYPE,SCBCONC .       CONC                     S22026
         BZ    NOTCONCB .               BRANCH IF NO             S22026
         L     RSCB,LCBSCBDA-1 .        LINE SCB ADDR            S22026
         TM    SCBSTAT1,SCBCBGN .       CONC MSG BEGIN           S22026
         L     RSCB,LCBSCBA-1 .         RESET SCB ADDR           S22026
         BZ    CONCMID .                BRANCH IF NO             S22026
         BR    R14 .                    BRANCH                   S22026
NOTCONCB EQU   * .                                               S22026
         CLI   LCBERBPY,PRIINTRQ .       INIT REQ
         BCR   EQUAL,R14 .              BR YES                   S21101
CONCMID  EQU   * .                                               S22026
         CLI   LCBERBPY,PRIAPERB .      APPLICATION ERB
         BCR   EQUAL,R14 .              BR YES                   S21101
         TM    LCBSTAT1,LCBRCLLN .      IS THIS RECALL
         BCR   ONES,R14 .               BR YES -DON'T POST TO MH S21101
         L     R1,LCBERBCH-1 .          BFR ADDR FORNPOST
         MVC   LCBERBCH(3),PRFLINK-IEDQPRF(R1) .  DECHAIN BFR
         MVI   PRFPRI-IEDQPRF(R1),PRIMHBFR .
         L     RDCB,LCBDCBPT .
         MVC   PRFQCBA-IEDQPRF(3,R1),DCBMH . SET QCB ADDR FOR MH
         CLI   LCBFLAG1,LCBPLCB         THIS A PLCB            @YM06085
         BNE   NOSTORE                  BR NO, HAVE PROPER MH  @YM06085
         MVC   PRFQCBA-IEDQPRF(3,R1),LCBMHA GET PROPER MH QCB  @YM06085
         B     NOSTORE .
MOVE     MVC   0(0,R9),0(R14) .
BASE1    DC    A(CPBINIT) .
XMASK    DC    X'000000FF' .
         AIF   (&A NE 3).F071
         SPACE 3
*        THIS SECTION INITIALIZES THE CPB ADDRESS AND BUFFER SIZE
*        FOR A CORE QUEUED OPERATION.
         SPACE 3
RESETA   EQU   * .
         MVC   SCBSCHDR(3),AVTDOUBL+1 .
         MVC   SCBSCSEG(3),SCBSCHDR .
.F071    AIF   (&A EQ 2).F072
CALLFQA  EQU   * .
         L     R2,SCBSCSEG-1 .
         L     RPRF,SCBSCHDR-1 .
         TM    LCBSTAT1,LCBRCLLN .      RECALL
         BNO   SETCPB .                 BR NO
         ST    R6,AVTDOUBL .            SET BFR ADDR
         CLC   AVTDOUBL+1(3),PRFCORE .
*        IS THIS BFR STILL IN THE CORE QUEUE
         BE    SETCPB .                 BR YES
         LA    R5,ERBRCQCB .            SET RTN ADDR
         B     FREEBFRS .               RETURN 0 TP BD
SETCPB   EQU   * .
         BALR  R7,0                     TO EXTEND BASE         @Y17XA0Z
         USING *,R7                     TELL ASSEMBLER         @Y17XA0Z
         LA    R7,HAVESIZE .            SET RTN
         DROP  R7                       DROP EXTENDED BASE     @Y17XA0Z
         CLI   LCBERBKY,AVTEZERO .      SIZE THERE
         BCR   EQUAL,R7 .               BR IF EQUAL TO SIZE THERES21101
         TM    PRFSTAT1,PRFNHDRN .      THIS A HDR
         BNO   OFFSET .
         L     RPREFIX,PRFCHDR .         GET ADDR OF HDR
         SRL   RPREFIX,8 .             SHIFT OUT LOW BYTE
         B     OFFSET .
HAVESIZE EQU   * .
         XC    AVTDOUBL(7),AVTDOUBL .   CLEAR FOR WORK AREA
         LA    R15,AVTDOUBL-(CPBINWKA-IEDQCPB) SET DOUBL AS CPB  S22025
*                                            WORK AREA           S22025
         IC    R9,LCBERBQB .
*        THE NO OF UNITS PER BUFFER WILL BE IN ERBQB
         IC    R8,LCBERBCT .
         MR    R8,R8 .
         STC   R9,SCBCPBNO .
         B     NEXTCPB1 .               BR TO PROCESS THIS BFR UNIT
.F072    ANOP
THREE    EQU   3                        LENGTH                 @OX20639
         AIF   (&A EQ 2).F077
         SPACE 3
*        THIS SECTION WILL FREE A MESSAGE FROM THE CORE QUEUE AND
*        UPDATE THE MSUNIT COUNT.
         SPACE 3
FREEMSG  EQU   * .
         DROP  12 .
         USING *,R15 .
         MVC   AVTDOUBL+1(3),PRFCHDR .  GET ADDR OF CORE UNIT THIS
         TM    PRFSTAT1,PRFNHDRN .
         BO    USECHDR .
         MVC   AVTDOUBL+1(3),PRFCORE .
USECHDR  EQU   * .
         L     R2,AVTDOUBL .            MSG HDR CAME FROM
HAVEADDR EQU   *                                                SA68051
         LA    R2,0(,R2) .              CLEAR HIGH ORDER BYTE
*        THE MSG MUST BE REMOVED FROM THE HDR CHAIN
*    R6 DOES NOT HAVE A BFR ADDR, R2 HAS THE HDR ADDR OF MSG
         L     R10,AVTCADDR .           NO. OF CORE UNITS IN USE
         LR    R8,R9 .
         DROP  RPREFIX .
         USING PRFSUNIT,R8 .
*        SET BASE SO THAT QCBCFHDR WILL COINCIDE WILH
*        PRFNHDR
         LA    R8,((QCBCFHDR-IEDQPQCB)-(PRFNHDR-PRFSUNIT))(R8) .
COMPARE1 EQU   * .
         CLC   PRFNHDR(3),PRFCORE-IEDQPRF(R2) .
*        IS THIS THE MSG TO REMOVE
         BE    TAKEOUT .                BR UES
         LNR   R2,R2 .                  SET FLAG FOR RTN HERE
         NC    PRFNHDR(3),PRFNHDR .     IS THIS THE LAST ONE
         BCR   ZERO,R7 .                BR YES - MSG NOT THERE   S21101
         LPR   R2,R2 .                  RESET  FLAG FOR NO RTN
         MVC   AVTDOUBL+5(3),PRFNHDR .  ADDR OF NEXT MSG
         L     R8,AVTDOUBL+4 .
         LA    R8,PRFSUNIT-IEDQPRF(R8) .SET BASE FOR USIGN
         B     COMPARE1 .
TAKEOUT  EQU   * .
         MVC   PRFNHDR(3),PRFNHDR-IEDQPRF(R2) .
*                                       LINK NHDR OF THIS MSG   SA51078
*                                       INTO NHDR OF PREV ONE   SA51078
         DROP  R8 .
         USING IEDQPRF,RPREFIX .
         LR    R8,R6 .                  SET 8 FOR MOVE
         TM    PRFSTAT1,PRFNHDRN .      IS THIS A HDR
         BNO   MVCCRCD .                BR IF HDR TO SET CRCD TO
*        DISK HDR ADDRESS
         LA    R8,PRFCHDR-PRFCRCD(R8) . IF NOT HDR SET TO UPDATE
*        THE CHDR FIELD TO THE REAL ADDRESS OF THE DISK HDR
MVCCRCD  EQU   * .
         MVC   PRFCRCD-IEDQPRF(3,R8),PRFCRCD-IEDQPRF(R2) .
*        UPDATE TO THE PROPER DISK ADDRESS OF THE HDR TO WRITE
*        THE SERVICED FLAG
         TM    DATFLAGS,DATLOSTN+DATINITL .       THIS MSG LOST
         BM    LOSTMSG .                BR IF LOST BUT NOT INIT
*        TO FREE 1 UNIT
         TM    PRFSTAT1-IEDQPRF(R2),PRFDUPLN .
*                                       IS THIS A DUPL HDR
         BNO   ALLDUPL .                BR YES
*        WHEN IN CORE QUEUES DUPL HDRS ARE COUNTED IN FIRST TIC
         CLI   PRFNBUNT-IEDQPRF(R2),EONE .  ONLY 1 UNIT IN BFR
         BH    GETTIC .                 BR MORE THAN 1
         MVC   AVTDOUBL+5(3),PRFNTXT-IEDQPRF(R2) .
         L     R14,AVTDOUBL+4 .         ADDR NEXT BFR
         B     GETDUPCT .
GETTIC   EQU   * .
         L     R14,PRFTIC-IEDQPRF(R2) . ADDR NEXT UNIT
GETDUPCT EQU   * .
         LA    R14,0(R14) .             CLEAR HI BYTE
         LTR   R14,R14 .                MORE BUFFERS FOR THIS DUPL
         BZ    LOSTMSG .                BR NO TO FREE 1 UNIT
*        THERE IS NO COUNT TO UPDATE IN THIS CASE
         SR    R11,R11 .
         IC    R11,PRFTIC-IEDQPRF(R14) .NUMBER OF DUPL HDRS
         LTR   R11,R11 .
         BZ    ALLDUPL .                BR IF NONE LEFT
         BCTR  R11,0 .                  DECR COUNT
         STC   R11,PRFTIC-IEDQPRF(R14) .RESTORE
LOSTMSG  EQU   * .
         XC    PRFTIC+1-IEDQPRF(3,R2),PRFTIC+1-IEDQPRF(R2) .
         MVI   PRFNBUNT-IEDQPRF(R2),EONE .  SET TO 1 UNIT
         LR    R1,R2 .                  POST FREED UNIT
         LA    R2,AVTBFRTB .
         OI    PRFCORE+2-IEDQPRF(R1),EONE .  SET ADDR BAD
         MVI   PRFPRI-IEDQPRF(R1),PRIBFRTB .
         ST    R7,AVTDOUBL+4 .          SAVE RETURN ADDR
         L     R7,ADRTNBFR .
         BAL   R14,POST-RTNBFR(R7) .
         L     R7,AVTDOUBL+4 .           RESTORE RETURN ADDR
         BCTR  R10,R0 .
CKCMIN   EQU   * .
         ST    R10,AVTCADDR .           RESTORE CADDR
         CL    R10,AVTCMIN .            HAS THE NO. OF CORE UNITS
         BNL   CKCMAX .                 REACHED THE MINIMUN BR NO
         OI    AVTSYSER,AVTCMINN .      SET FLAG FOR MIN
CKCMAX   EQU   * .
         CL    R10,AVTCMAX .            HAS CADDR BECOME LOWER
         BCR   10,R7 .                  BR NO
         NI    AVTSYSER,AVTCMAXF .      MAX OFF
         NI    AVTBIT3,AVTRECVF .       SET REV SWITCH ON
         BR    R7 .                     RETURN
ALLDUPL  EQU   * .
         LA    R5,1(R5) .               RESET NO. OF UNITS
         ST    R7,AVTDOUBL+4 .          SAVE RTN ADDR
         SR    R8,R8 .
SETBFR   EQU   * .
         L     R1,AVTDOUBL .             BFR ADDRESS
         OI    PRFCORE+2-IEDQPRF(R1),EONE .  SET BAD ADDR
         IC    R8,PRFNBUNT-IEDQPRF(R1) .    NO UNITX
         L     R7,ADRTNBFR .
         BALR  R14,R7 .
         SR    R10,R8 .                 SUBTRACT NO IN THIS BFR
         L     R1,AVTDOUBL .             FROM CADDR
         BAL   R7,CKCMIN .
         L     R7,AVTDOUBL+4 .          RTN ADDR
         TM    PRFSTAT1-IEDQPRF(R1),PRFNLSTN .
         BCR   ZERO,R7 .                                         S21101
*    IF THE LAST BFR WAS THE LAST SEGMENT RETURN
         NC    PRFNTXT-IEDQPRF(3,R1),PRFNTXT-IEDQPRF(R1) .
         BCR   ZERO,R7 .                BR IF NO NTXT            S21101
         MVC   AVTDOUBL+1(3),PRFNTXT-IEDQPRF(R1) .
*                        ADDR OF NEXT TXT BFR
         B     SETBFR .
ADRTNBFR DC    A(RTNBFR) .
         DROP  15 .
         USING IEDQCPB,R15 .
.F077    ANOP
         SPACE 3
*        WILL GET THE BUFFER SIZE FROM THE TERMINAL TABLE OR DCB
*        FOR BUILDING THE BUFFERS.
         SPACE 3
         USING *,15 .
OFFSETA  EQU   * .
         TM    LCBSTAT1,LCBSENDN .      SEND OPERATION           A42363
         BO    OFFSET1 .                BR YES                   A42363
         TM    LCBSTAT1,LCBRCLLN .      THIS A RECALL            A42363
         BNO   OFFSET1 .                BR NOT RECALL            A42363
*        THIS CODE TO EXECUTE ONLY IF RECEIVE RECALL - TEST FOR  A42363
*        RCV AND RCLL WILL CAUSE RETRIEVE TO PROGRAM CK          A42363
         L     R1,ADRSZCK1 .
         TM    LCBCHAIN,LCBBFRSZ .      SPECIAL RECALL
         BCR   ONES,R1 .                                         S21101
OFFSET1  EQU   * .
         LH    R1,PRFDEST .
         TM    PRFSTAT1,PRFNHDRN .      IS THIS A HDR
         BNO   TERMENTR .               BR YES
*        IF NOT A HDR DOES NOT CONTAIN THE DEST OFFSET
USELCBA  EQU   * .
         LH    R1,LCBTTCIN .            DEST OFFSET
TERMENTR EQU   * .
         N     R1,AVTCLRHI .
         LTR   R1,R1 .                  IS TTCIN 0 - TTCIN IS THE ONLY
*        ONE OF THE FIELDS PICKED UP THAT CAN BE 0
         BNZ   TTCINOK .                BR IF NOT 0 - THIS ISNOT
*        RETRIEVE
         TM    LCBSTAT2,LCBDIAL         IS THIS DIAL LCB          M2321
         BO    TTCINOK                  YES,BRANCH -NOT RETRIEVE  M2321
         MVC   LCBERBQB+1(2),AVTKEYLE . IF RETRIEVE - SET TO BUILD
         MVI   LCBERBQB,X'01' .         SINGLE UNIT BFRS
         MVI   LCBERB,X'00' .
         BR    R7 .                     RETURN
TTCINOK  EQU   * .
         L     R15,AVTRNMPT .
         BALR  R14,R15 .
*        TERM TABLE ENTRY ADDRESS IS IN R1,  IF BUFFER SIZE IS
*        SPECIFIED IN T TABLE, PUT IT IN LCBERBQP+1, IF NOT
*        USE DCBBFSZE.
         USING *,15 .
         LR    R15,R14 .                RESET ADDRESSIBILITY
         USING IEDQTRM,R1 .
         TM    TRMDEVFL,X'80' .         IS A BFR SZ SPECIFIED
         BNO   USEDCBA .
*        IF FROM T TABLE
         SR    R10,R10 .                ZERO REG
         LA    R14,TRMOPNO+1 .          LOC OF BFR SZ IF NO OPT
         TM    TRMSTATE,TRMOPTFN .      ARE OP. SPECIFIED
         BNO   NONE .                   BR NO
         LR    R14,R10 .                ZERO 14
         IC    R14,TRMOPNO .            NO OF OPT FIELDS
         LA    R14,TRMOPT+1(R14) .      ADDR OF OPT FIELDS + 1  + NO
*        OF OPT FIELDS GIVES THE LOCATION OF BFR SIZE
         DROP  R1 .
NONE     EQU   * .
         MVC   LCBERBQB+1(2),0(R14) .   SET ERBQB
         LH    R1,LCBERBQB+1 .
         L     R11,ADSBTR .
         BALR  R14,R11 .
         SRL   R10,DIV4 .               ADJUST R10               S21101
         B     SIZEDONE .
USEDCBA  EQU   * .
         L     RDCB,LCBDCBPT .          DCB ADDR
         LH    R1,DCBBFSZE .            SET SIZE AND NUMBER OF
         STH   R1,LCBERBQB+1 .          UNITS IN BFR IN
         IC    R10,DCBUNTCT .           ERBQB AND ERBQB+1
SIZEDONE EQU   * .
         STC   R10,LCBERBQB .
         MVI   LCBERBKY,AVTEZERO .     SET SIZE THERE FLAG
         BR    R7 .
ADSBTR   DC    A(SUBTRKEY) .
ADRSZCK1 DC    A(SIZECK1) .
         USING IEDQCPB,R15 .
*        WILL ENQUEUE AN ELEMENT ( BFR ,ERB, OR CPB) ON A FIFO Q
ENQMGRBA EQU   * .
         USING ENQMGRBA,R14
*        INPUT PARAMETERS - R2 - Q ADDR, R15 - ELEM ADDR
*        R14 - BASE REG     R1 - SCRATCH REG      15 WILL BE KEPT
         XC    PRFLINK-IEDQPRF(3,R15),PRFLINK-IEDQPRF(R15) .
*        CLEAR LINK FIELD OF BFR OR ERB
         LTR   R2,R2 .                  SET POSITIVE COND CODE
         BAL   R14,NOMPCK               SKIP TS INSTRUCTION      Y02027
         AIF   (&A EQ 1).F023
ENQMGRCA EQU   * .
*        WHEN ENTERED HERE THE HI BYTE OF 14 IS 0
.F023    ANOP
         USING *,R14 .
MPLOOP   EQU   *                                                 Y02027
         TS    AVTEZERO(R2)             LOCK Q FOR UPDATE        Y02027
         BNE   MPLOOP                   YES, LOOP TILL APP. DONE Y02027
NOMPCK   EQU   *                                                 Y02027
         L     R1,4(R2) .               ADDR LASR ON Q
         LA    R1,PRFLINK-IEDQPRF(R1) . SET ADDR OF LINK FIELD
         AIF   (&A EQ 1).F024
         SPM   R14 .                    RESET COND CODE
         BP    ENQBFR .                 BR IF A BFR OR ERB
         LA    R1,((CPBNEXT-IEDQCPB)-(PRFLINK-IEDQPRF))(R1) .
*        IF IT WAS A CPB CORRECT THE ADDR OF LINK FIELD
         XC    CPBNEXT(3),CPBNEXT .     ZERO CPB LINK FIELD
.F024    ANOP
ENQBFR   EQU   * .
         ST    R15,4(R2) .              SET NEW LAST ELEM
         NC    1(3,R2),1(R2) .          IS ONE ON THE Q
         BNZ   ENQNMTY .                BR IF YES
         MVC   1(3,R2),5(R2) .          IF NOT SET ADDR OF FIRST
         MVI   AVTEZERO(R2),AVTEZERO    CLEAR Q LOCK             Y02027
         BR    R11 .                    RETURN
ENQNMTY  EQU   * .
         MVC   0(3,R1),5(R2) .          LINK THIS ONE TO PREVIOUS
         MVI   AVTEZERO(R2),AVTEZERO    CLEAR Q LOCK             Y02027
         BR    R11 .                    LAST ONE AND RETURN
         TITLE '''IEDQFA'' - DSECTS' .                           S22025
*        TPRIOR
         TPRIOR
         EJECT , .                                               S22025
*        DCBD
         DCBD  DSORG=TX .
DCBBFSZE EQU   DCBBUFSI .
         EJECT , .                                               S22025
*        TDISPD
         TDISPD
         EJECT , .                                               S22025
*        TCPBD 3330                                              S21101
         TCPBD 3330                                              S21101
         EJECT , .                                               S22025
*        TDATD
         TDATAD
         EJECT , .                                               S22025
*        TSCBD
         TSCBD
XFEFO    EQU   SCBFEFO .
SCBSQOUT EQU   SCBCLSEG+1-IEDQSCB .
         EJECT , .                                               S22025
*        TQCBD
         TQCBED .                       QCBE DSECT               S22026
         TQCBD
         EJECT , .                                               S22025
*        TPRFD
         TPRFD
         EJECT , .                                               S22025
*        TLCBD
         TLCBD
LCBNSRCD EQU   X'01' .                  IN-SOURCE CHAIN FLAG     S22025
         EJECT , .                                               S22025
*        TTRMD
         TTRMD
         EJECT , .                                               S22025
*        TAVTD , .                                               S22025
         TAVTD , .                                               S22025
         TTSID                                                   S22028
         MEND
./ ADD NAME=MIEDQHM
         MACRO
     MIEDQHM    &X
.*A-000000-999999                                              @X31X8Q0
         LCLA  &A
.*CHANGE ACTIVITY= AS FOLLOWS:
.*A526200                                                        S22029
.*C159600                                                        S22029
.*A103200,243600,286800,307200,316200,423000,423600,820200       S21101
.*A904800                                                        S21101
.*C123000,131400,300000,301800,338400,400800-402000              S21101
.*C211800-212400                                                 S21101
.*D235200-238200,263400-270600,309600                            S21101
.*C121800,447000                                                 A42363
.*C123000,865200                                                 A42367
.*A868800                                                        A42367
.*C123000                                                        A42400
.*A525000                                                        A42400
.*D527400                                                        A42400
.*A199200,202800                                                 S21101
.*A707000                                                        A47137
.*C160800-162000,528600-529800,535800                            S22026
.*A109900-110100,162300,544860-545340,906300                     S22026
.*A106800,131630,131952                                          A51765
.*A489100-489300                                                SA52986
.*C487200                                                       SA52986
.*D487400-487600                                                SA52986
.*A103500,393700-394100,397280-397680                           SA57334
.*D395400-396600                                                SA57334
.*A103400,110130,128460,129600,131670,261600,323400,377400,434400S22025
.*A910800,918000                                                 S22025
.*C009000,012000,111000,121200,213300,253200,262800,328800,378600S22025
.*C385800,416400,489600,559800,772800,902400,906400,907800,909000S22025
.*C913200,915000,916800,922200,924000                            S22025
.*A480600,579600,846600,847800,860400,900000,915300             SA52971
.*C639000-639400,640200-642600,849000-849930,866400-892200      SA52971
.*C901200-902280                                                SA52971
.*D850800                                                       SA52971
.*A275470,484800-486800                                         SA51078
.*A275540-275890                                                SA50192
.*A381030-381570                                                SA51783
.*D484800-489300,909000                                         SA51078
.*D886800                                                       SA58988
.*A886800-886860                                                SA58988
.*A018600                                                        S21903
.*A546600                                                       SA59006
.*A432200                                                       SA60012
.*C002399,019800                                                SA60012
.*C117000-117500,532800,543600-544200,545340                    SA61768
.*A532800                                                       SA61768
.*D536400,541800-542400                                         SA61768
.*A654000,654600                                                SA61085
.*A110340,894600,897600                                         OX02183
.*C307720,308400                                                SA66611
.*A547000                                                      @XA05307
.*A529000                                                        X03039
* A275680                                                      @SA71682
.*A377700                                                       OX06353
.*C668400-677400,681600,718800-719400,720600                   @SA72466
.*D680400,709200,687000                                        @SA72466
.*A682800,713400,723600                                        @SA72466
.*A894600,897900,103400                                        @YA06890
*A849030                                                       @SA74018
*A605400,687600,742200                                         @YA07705
*C547200,553200                                                @SA74250
* A686400                                                      @SA74250
*C349800,356400,360600                                         @XA11314
*A275680                                                       @SA76275
*A588600                                                       @ZA06194
*A849046                                                       @SA76309
*A588600                                                       @OY12977
*D589200                                                       @OY12977
*A674400                                                       @OY14492
*A674400
*D686700-687300
*A103800,128400
*A850280                                                       @OZ29731
*A103800,849720                                                @OX16398
*C849870                                                       @OX16398
         SPACE 3
         AIF   ('&X' NE 'CORE').CKD
&A       SETA  1
IEDQHM1  TITLE '''IEDQHM'' - DESTINATION SCHEDULER (CORE ONLY)'  S22025
IEDQHM1  CSECT
         AGO   .GO
.CKD     AIF   ('&X' NE 'DISK').BOTH
&A       SETA  2
IEDQHM2  TITLE '''IEDQHM'' - DESTINATION SCHEDULER (DISK ONLY)'  S22025
IEDQHM2  CSECT
         AGO   .GO
.BOTH    ANOP
&A       SETA  3
IEDQHM3  TITLE '''IEDQHM'' - DESTINATION SCHEDULER (DISK AND CORE)'
IEDQHM   CSECT
.GO      ANOP
         ENTRY IEDQHM02
*
***********************************************************************
*                                                                     *
         AIF   ('&X' NE 'CORE').TAG1                             S21903
*  MODULE NAME = IEDQHM1 ( CORE )                                     *
         AGO   .TAG3                                             S21903
.TAG1    AIF   ('&X' NE 'DISK').TAG2                             S21903
*  MODULE NAME = IEDQHM2 ( DISK )                                     *
         AGO   .TAG3                                             S21903
.TAG2    ANOP                                                    S21903
*  MODULE NAME = IEDQHM ( MIXED - CORE / DISK )                       *
.TAG3    ANOP                                                    S21903
*                                                                     *
*  DESCRIPTIVE NAME = DESTINATION SCHEDULER                           *
*                                                                     *
*  COPYRIGHT = 'NONE'                                                 *
*                                                                     *
*  STATUS:  CHANGE LEVEL 8                                     @Z30X8QE
*                                                                     *
*FUNCTION -- THIS SUBTASK ASSIGNS A BUFFER TO A LOCATION IN A         *
*   MESSAGE QUEUE3 DATA SET (REUSEABLE DISK, NONREUSEABLE DISK, OR    *
*   CORE AS APPLICABLE).  THIS BUFFER WILL BE CHAINED TO OTHER        *
*   BUFFERS OF THIS MESSAGE AND THIS MESSAGE WILL BE CHAINED TO       *
*   OTHER MESSAGES IN THE SAME QUEUE.                                 *
*    THE HEADER OF THE MESSAGE MUST CONTAIN THE ADDRESS OF THE        *
*    NEXT TEXT SEGMENT AND THE NEXT MESSAGE HEADER.  ALL BUFFERS      *
*    MUST HAVE THE ADDRESS OF THE NEXT TEXT (IF IT IS NOT THE         *
*    LAST BUFFER), THE ADDRESS OF THE ADDITIONAL RECORES (IF ANY),    *
*    AND  IF IT IS NOT A HEADER, IT WILL HAVE THE ADDRESS OF ITS      *
*    HEADER.                                                          *
*                        DISK QUEUEING                                *
*    IF THE MESSAGE IS DISK QUEUED, THE HEADER AND LAST TEXT          *
*    BUFFERS ILL CONTAIN THE QBACK CHAIN POINTERS.  QBACK CHAIN IS    *
*    A TIME SEQUENTIAL RECORD OF THE EVENTS (BOTH SENDING AND         *
*    RECEIVING) FOR THIS QCB.  IF THE QCB REPRESENTS THE DESTINATION  *
*    OF THE MESSAGE, THE HEADER WILL APPEAR IN THE QBACKCHAIN FROM    *
*    THAT QCB.  IF THE QCB REPRESENTS THE SOURCE OF THE MESSAGE       *
*    (LINE OR TERMINAL) THE LAST BUFFER OF THE MESSAGE WILL APPEAR    *
*    IN THE QBACK CHAIN OF THE QCB.                                   *
*    DISK MESSAGE QUEUEING (REUSABLE OR NONREUSABLE) WILL BE          *
*    ACCOMPLISHED BY ASSIGNING RECORD NUMBERS AHEAD ON DISK.          *
*    THERE EXISTS A VALUE CALLED 'ADDRESS' FOR BOTH REUSABLE (RADDR)  *
*    AND NONREUSABLE (NADDR) DISK.  THERE IS A CORRESPONDENCE         *
*    BETWEEN THE VALUE OF ADDRESS AND THE PHYSICAL LOCATION           *
*    (MBBCCHHR) OF THE RECORD ON DISK.  WHEN ADDRESS MODULO           *
*    (THE TOTAL NUMBER OF RECORDS IN THE DATA SET) IS USED, THIS      *
*    IS A ONE TO ONE CORRESPONDENCE.  WHEN A 'HEADER NOT LAST'        *
*    BUFFER IS RECEIVED, A VALUE OF ADDRESS IS RESERVED FOR THE NEXT  *
*    HEADER FOR THE QCB AND THE NEXT TEXT BUFFER OF THIS MESSAGE.     *
*    SEQUENTIAL VALUES OF ADDR ARE RESERVED FOR ANY ADDITIONAL        *
*    RECORDS REQUIRED.  WHEN A 'TEXT NOT LAST' IS RECEIVED LOCA-      *
*    TIONS FOR NEXT TEXT AND ADDITIONAL RECORDS ARE RESERVED.         *
*    WHEN A 'LAST' BUFFER IS RECEIVED, NO NEXT TEXT IS RESERVED.      *
*                        CORE QUEUEING                                *
*    THE CORE QUEUES DATA SET IS NOT DIVIDED INTO NUMBERED            *
*    RECORDS.  ONE RECORD CORRESPONDS IN SIZE TO ONE BUFFER UNIT      *
*    UNITS ARE NOT ASSIGNED AHEAD AS IN DISK QUEUES, HOWEVER THE      *
*    MESSAGES  IN ONE QUEUE ARE CHAINED TOGETHER AND THE BUFFERS      *
*    OF A MESSAGE ARE CHAINED TOGETHER,  THERE IS A VALUE CADDR       *
*    SIMILIAR TO ADDRESS ON DISK WHICH CORRESPONDS TO THE NUMBER OF   *
*    UNITS WHICH ARE USED OUT OF THE NUMBER RESERVED FOR CORE         *
*    QUEUES.  CHAINING IS NOT DONE BY RECORD NUMBER FOR CORE QUEUES   *
*    BUT BY THE ACTUAL ADDRESS.   THE ADDITIONAL RECORDS AND          *
*    LOCATED THROUGH THE TIC FIELDS OF THE BUFFER UNITS WHILE IN      *
*    THE CORE QUEUE.  WHEN A BUFFER IS RECIEVED, IF IT IS A HEADER    *
*    IT IS CHANED TO THE PREVIOUS HEADER IN THE QUEUE.  IF IT IS A    *
*    TEXT, IT IS CHAINED TO THE PREVIOUS BUFFER OF THIS NESSAGE.  A
*    NUMBER OF UNITS CORRESPONDING TO THE NUMBER OF UNITS IN THE
*    BUFFER WILL BE REMOVED FROM THE FREE CORE QUEUE UNITS (LINE      *
*    BUFFER POOL).  IF THIS QCB'S MESSAGES ARE TO BE CORE QUEUED ONLY *
*    THESE UNITS ARE POSTED TO THE AVAILABLE BUFFER POOL IN           *
*    RETURN FOR THE BUFFER.  THE BUFFER IS THEN PLACED THE THE        *
*    QCB'S CORE QUEUE OF MESSAGES.   IF THE MESSAGE IS THE BE DISK    *
*    QUEUED ALSO, THE MESSAGE WILL BE COPIED INTO THESE UNITS AND     *
*    BUFFER FORMED WILL BE PLACED IN THE QCB'S MESSAGE QUEUE.         *
*    THE ORIGINAL BUFFER WILL THEN BE DISK QUDUED.                    *
*                                                                     *
*ENTRY POINTS -- THIS ROUTINE HAS TWO ENTRY POINTS                    *
*    1. IEDQHM / FROM THE DISPATCHER WITH A FULL BUFFER TO BE         *
*       QUEUED.                                                       *
*       CALLING SEQUENCE -                                            *
*                  L      R15,ENTRY POINT ADDRESS                     *
*                  L    R1,BUFFER ADDRESS                             *
*                  BR    R15                                          *
*    2. IEDQHM02 / FROM THE REUS-RECOPY SUBTASK WITH ONE UNIT OF      *
*       A BUFFER TO BE QUEUED.                                        *
*       CALLING SEQUENCE                                              *
*                  L    R15,ENTRY POINT ADDRESS                       *
*                  L    R1,UNIT ADDRESS                               *
*                  BALR  R14,R15                                      *
*                                                                     *
*    3. IEDQHM03 -- CALLED BE THE REUS COPY SUBTASK WITH A            *
*       PRIORITY QCB                                                  *
*       CALLING SEQUENCE --             L     R15,ADDR HM03           *
*                                       BALR  R14,R15                 *
*       RETURN CODES -- IF RETURN IS BR R14 - THE MESSAGE ON THE      *
*          PRIORITY QCB IS NOT BEING SENT                             *
*          IF RETURN IS B  4(R14) - THE MESSAGE IS BEING SENT         *
*                                                                     *
*    4. FINDSTCB -- CALLED FROM REUS - COPY WITH A DESTINATION        *
*       QCB.  UPON RETURN THE SEND SCHEDULER WILL HAVE BEEN           *
*       NOTIFIED THAT THERE IS A MESSAGE TO SEND.                     *
*       CALLING SEQUENCE -              L     R12,HMBASE              *
*                                       L     RX,OFFSET OF SUBROUTINE *
*                                       BAL   R14,R12+RX              *
*                                                                     *
*INPUT -- R15 WILL CONTAIN THE ENTRY POINT ADDRESS                    *
*    R1 - THE BUFFER ADDRESS                                          *
*    R13  THE AVT ADDRESS AND SAVE AREA ADDRESS                       *
*                                                                     *
*OUTPUT -- THE BUFFER WILL CONTAIN THE QUEUEING POINTERS MENTIONED    *
*    ABOVE.                                                           *
*    IF THE BUFFER WAS DISK QUEUED THE BUFFER WILL BE POSTED TO THE   *
*    DISK O /I QCB TO BE WRITTEN ON DISK.                             *
*    IF THE BUFFER WAS CORE QUEUED ONLY, A CORRESPONDING NUMBER OF    *
*    UNITS WILL BE RETURNED TO THE AVAILABLE BUFFER POOL.             *
*    IF THE ENTRY WAS FROM COPY SUBTASK WITH A CORE ONLY BUFFER,      *
*    THE FERE CORE UNIT WILL BE RETURNED TO COPY.                     *
*                                                                     *
*EXTERNAL ROUTINES -- DSPPOSTR - TO INSERT AN ELEMENT BY PRIORITY     *
*    ON THE READY QUEUE.                                              *
*    DSPUNAVR - TO REMOVE A STCB FROM THIS QCBS STCB CHAIN AND        *
*    INSERT IT BY PRIORITY INTO THE STCB CHAIN OF ANORHER QCV.        *
*    AVTRNMPT - TO FIND THE ADDRESS OF THE TERM TABLE ENTRY FROM      *
*    THE OFFEST INTO THE TERM NAME TABLE                              *
*                                                                     *
*EXITS-NORMAL -- TO THE DISPATCHER AT DSPPOST OR DSPDISP OR IF        *
*    CALLED BY COPY - TO THE CALLING ROUTINE WITH R15 =0              *
*                                                                     *
*EXITS -ERROR -- NONE                                                 *
*                                                                     *
*TABLES/WORK AREAS -- DSECTS- LCB,DCB,SCB,PREFIX,AVT 4,QCB            *
*   AVT FIELDS - RADDR,NADDR,CADDR                                    *
*                                                                     *
*ATTRIBUTES -- REUSEABLE,REFRESHABLE,ENABLED,RESIDENT                 *
*                                                                     *
*NOTES -- THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A         *
*    PARTICULAR INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER     *
*    SET.                                                             *
*                                                                     *
***********************************************************************
         EJECT
R0       EQU   0                        WORK REGISTER
R1       EQU   1                        ELEMENT ADDRESS FORM DISP
*                                       PARAMETER TO TERM NAME TBL
*                                       ELEMENT ADDR TO DISP
R2       EQU   2                        ADDRESS OF THE VALUE
*                                       OF ADDRESS BEING USED
*                                       (RADDR,NADDR)
*                                       ADDRESS OF QCB TO POST T TO
RSCB     EQU   3                        ADDR OF SCB
RLCB     EQU   4                        ADDR OF LCB
R5       EQU   5                        WORK REGISTER
*                                       ADDR OF BUFFER FORMED
*                                       FROM CORE UNITS
RPREFIX  EQU   6                        ADDRESS OF BUFFER
RPRF     EQU   6                        ADDRESS OF BUFFER
R6       EQU   6
RQCB     EQU   7                        ADDRESS OF MASTER QCB
R7       EQU   7                        WORK REGISETER
RPQ      EQU   8                        ADDR OF PRIORITY QCB
R9       EQU   9                        WORK REGISTER
R10      EQU   10                       WORK REGISTER
R11      EQU   11                       WORK REGISTER
*                                       DISP BASE REG
R12      EQU   12                       PROGRAM BASE
R13      EQU   13                       AVT ADDRESS
R14      EQU   14                       NUMBER OF CORE UNITS TO GET
*                                       WORK REG. AND RETURN REG
R15      EQU   15                       WORK REGISTER
***********************************************************************
         SPACE 2
ONE      EQU   1 .                                               S22025
TWO      EQU   2 .                      CONSTANT               @YA06890
HEX01    EQU   X'01'                    TEST FOR MULTI-UNIT BFR SA57334
MULT4    EQU   2 .                      VALUE FOR RRN ADJUSTMENT S21101
DIV4     EQU   2 .                      VALUE FOR RRN ADJUSTMENT S21101
ROUNDER  EQU   3 .                      VALUE FOR RRN ADJUSTMENT S21101
INCR     EQU   4 .                      VALUE FOR ADDR INCREMENT S21101
THREE    EQU   4
D24      EQU   24                       DISPLACEMENT           @OX16398
D28      EQU   28                       DISPLACEMENT           @OX16398
REGSAVE  EQU   28                       OFFSET INTO SAVEAREA   @XM05843
PRIEXOFS EQU   13                       OFFSET TO PRIEXIT      @XM05843
ADDR     EQU   7                        MASK FOR ICM STCM      @XM05843
         SPACE 1
*        PRFTIC FLAGS WILL BE AS FOLLOWS
*              X'28' - TO BE QUEUED ON REUSABLE DISK
*              X'18' - TO BE QUEUED ON NONREUSABLE DISK
*              X'40' - TO BE QUEUED IN MS QUEUES
CONC     EQU   X'20' .                                           S22026
CLOCK    EQU   X'80' .                                           S22026
INTVL    EQU   X'70' .                                           S22026
         SPACE 2 .                                               S22025
*****************************************************************S22025
*                                                                S22025
*** CONDITION CODE MASKS                                         S22025
*                                                                S22025
*****************************************************************S22025
         SPACE 2 .                                               S22025
ZEROES   EQU   8 .                      ZEROES CONDITION         S22025
FOUR     EQU   4 .                      CONSTANT                OX02183
         EJECT
         USING AVTSAVE2,R13 .                                    S22025
         USING IEDQLCB,RLCB
         USING IEDQPRF,RPRF
         USING IEDQSCB,RSCB
          USING  IEDQQCB,RQCB
          USING  IEDQPQCB,RPQ
         USING IEDQDISP,R11
         USING IEDQDATA,R2
         SPACE 2
         DC    AL1(DSPMCPL6)
         DC    AL3(FINDSTCA)            ADDRESS OF SUBROUTINE   SA61768
*              CALLED BY QFA AND 19RP TO ACTIVATE THE SEND      SA61768
*              SCHEDULER                                        SA61768
          DC    X'00',X'00'
         SPACE 2
         USING *,12
         SPACE 1
DESTSCH  EQU   *
         LA    R12,0(0,R15)             SET BASE REG
IEDQHM&A IEDHJN QUEUE .                 MODULE ID AND DATE       S22025
          LR    RPREFIX,R1
         L     RLCB,PRFLCB-1
         L     RSCB,LCBSCBA-1           SCB ADDR
         L    RQCB,SCBDESTQ-1
         LA    RPQ,QCBMSIZE(RQCB)       ADDR OF FIRST PQCB
         LA    R11,QCBPEND-IEDQPQCB     SIZE OF A PRTY QCB
         SR    R10,R10
         TM    LCBSTAT1,LCBRECVN        IS RECEIVE BIT ON?     @AS05843
         BZ    ENDEXTST                 NO, NO EXIT USED       @AS05843
         TM    PRFSTAT1,PRFDUPLN        DUPLICATE HEADER?      @AS05843
         BZ    ENDEXTST                 NO, NO EXIT USED       @AS05843
         L     R15,AVTRDYA              GET ADDR OF USER EXITS @AS05843
         ICM   R15,ADDR,PRIEXOFS(R15)   GET ADDR OF PRIEXITS   @AS05843
         BZ    ENDEXTST                 NO EXIT SPECIFIED      @AS05843
         MVI   SCBPRI,AVTEZERO          SET ZERO PRIORITY      @AS05843
         STM   R2,R12,AVTSAVE3+REGSAVE  SAVE REGS              @AS05843
         BALR  R14,R15                  BRANCH TO USER         @AS05843
         LM    R2,R12,AVTSAVE3+REGSAVE  RESTORE REGS           @AS05843
         STC   R15,SCBPRI               SET NEW PRIORITY       @AS05843
ENDEXTST EQU   *                                               @AS05843
         TM    PRFSTAT1,PRFDUPLN        DUP HEADER               S22025
         BO    BUMPCNT                  YES, BUMP COUNT          S22025
         TM    PRFSTAT1,PRFNLSTN        EOM                      S22025
         BO    CNTOK                    NO, DON'T BUMP COUNT     S22025
BUMPCNT  EQU   *                                                 S22025
         LH    R9,QCBMSGCT .            THE COUNT OF MESSAGES    S22025
         LA    R9,1(,R9) .              SHOULD BE INCREMENTED    S22025
         STH   R9,QCBMSGCT .            EACH EOM OR DUP HEADER   S22025
CNTOK    EQU   *                                                 S22025
         TM    PRFSTAT1,PRFNHDRN        IS THIS A HEADER
         BO    TXTBFR                   BR NO
         TM    PRFSTAT1,PRFERMGN        IS THIS AN ERROR MSG     S22025
         BO    COMPARE                  YES, BRANCH              S22025
         NI    SCBQTYPE,X'0F' .         CLEAR QTYPE FOR HDRS
         TM    LCBSTAT1,LCBINITN        INITIAE MODE
         BZ    COMPARE .                BRANCH NO INITIATE MODE  S21101
         SPACE
         L     R15,QCBDCBAD-1 .         ADDR OF DEST DCB         A51765
         TM    DCBPCI-IHADCB(R15),PCISEND IS PCI=A/PCI=X         S22025
*                                            SPECIFIED FOR SEND  S22025
         BZ    NOTINIT .                BR IF NO PCI             S22025
         CLI   LCBRSKEY,DSPBUFSC .      INITIATE FUNCTION NOT    S21101
         BNE   OUT .                      SUPPORTED FOR BUFFERED S21101
*                                         TERMINAL AS SOURCE     S21101
NOTINIT  EQU   * .                                               A51765
         NI    LCBSTAT1,X'FF'-LCBINITN . TREAT AS FEFO MESSAGE   S21101
COMPARE  EQU   *
         CLC   SCBPRI(1),QCBPRIPQ  IS THIS MSG PRTY SAME
*                                       AS THIS QCB PRTY
         BNL   OUT .                    BR IF THIS MSG IS HI OR EQ
*                                       LAST QCB HAS 0 PRI
         LA    R10,1(,R10) .            SET OFFSET TO NEXT QCB
         AR    RPQ,R11 .                ADDR OF NEXT PQCB
         B     COMPARE .                GO LOOK AT IT
         SPACE 1
NOINIT   EQU   *
*        IF QCB IS FOR 24 HOUR DELAY DO NOT REMOVE IT
         NI    LCBSTAT1,LCBINITF        RESET INIT MODE
         B     GETSIZE
POSTSUB  EQU   *
         LA    R2,AVTBFRTB              ADDR OF BFRRTN QCB
         MVI    PRFPRI-IEDQPRF(R1),PRIBFRTB
POSTSUBA EQU   *
         ST   RSCB,AVTSAVE3
          BAL   R14,POSTA
         L    RSCB,AVTSAVE3
          L     RQCB,SCBDESTQ-1         RESTORE QCB ADDR
         BR    R10 .                    RETURN
SENDINIT EQU   *
         TM    LCBSTAT1,LCBINITN+LCBRECVN
*        RECEIVING AN INITIATE MODE MESSAGE
         BCR   14,R14 .                 BR NOT INIT
         TM    LCBINSRC+2,XXXON .       NOW BEING SENT
         BCR   1,R14 .                  BR NOT GEING SENT
         L     R1,LCBINSRC-1 .          ADDR OF DEST LCB
         TM    LCBSTAT1-IEDQLCB(R1),LCBINITN .   STILL BEING SENT
         BCR   14,R14 .                 BR NOT BEING SENT
         B     4(R14)                   BR INIT BEING SENT
TXTBFR   EQU   *
         IC    R10,SCBPRI .             OFFSET TO PRI QCB
         MR     R10,R10 .
          AR    RPQ,R11                 + QCB ADDR
         B     GETSIZE .
         SPACE 1
OUT      EQU   *
         STC     R10,SCBPRI     REPLACE PRI WITH OFFSET
         TM    PRFSTAT1,PRFDUPLN        DUPL HDR
         BO    POSTDISK                 BR YES TO BYPASS NEXT THING
         TM    LCBSTAT1,LCBINITN+LCBRECVN
*        RECEIVING AN INITIATE MODE MESSAGE
         BNO   GETSIZE
         TM    SCBSTATE,SCBMSGLN+SCBLCK1N .  LOCK MODE
         BNZ   NOINIT .                 IF LOCK - NO INIT MODE
         TM    QCBDSFLG,QCBTSQ          TIME-SHARING QUEUEING?   S22029
         BO    NOINIT                   BRANCH ON YES               TSO
         CLI   QCBSTVTO,CONC .          DEST A CONC              S22026
         BE    NOINIT .                 BRANCH IF YES            S22026
         CLI   QCBSTPRI,CLOCK .         CLOCK OPTION             S22026
         BE    NOINIT .                 BRANCH IF YES            S22026
         CLI   QCBSTPRI,INTVL .         INTVL OPTION             S22026
         BNE   NOTDIAL .                BRANCH IF NO             S22026
         BAL   R10,CKDELAYQ             CK IF IN DELAY Q
NOTDIAL  EQU   *
         LA    R7,0(R7) .               CLEAR HI
         LR    R2,R7 .                  SET R2
*        FIND THE LAST LCB IN INSRC CHAIN BEFORE INSERT THIS ONE
INITLOOP EQU   *
         LR    R1,R2 .                  SET ADDR OF PVEV IN Q
         L     R2,QCBINSRC-1-IEDQQCB(R1) .  ADDR OF NEXT
         N     R2,CLEAROFF .            CLEAR HI AND INSRC BITS
         CLR   R2,R7 .                  IS THIS LAST ONE
*        LAST IN CHAIN POINTS TO ITSELF
         BNE   INITLOOP .               BR NOT LAST TO GET NEXT
         MVC   LCBINSRC(3),QCBINSRC-IEDQQCB(R1)
         MVC   QCBINSRC-IEDQQCB(3,R1),PRFLCB
*        CHAIN LCB INTO CHAIN
         OI    QCBINSRC+2-IEDQQCB(R1),XXXON .   SET INSRC FLAG ON
         OI    LCBINSRC+2,XXXON .      SET INSRC FLAG ON
GETSIZE  EQU   *
         LR    R10,RPREFIX .            INITIALIZE FOR LOOP WITH FIRST
*                                       UNIT ADDR
         SR    R2,R2 .                  INITIALIZE UNIT COUNT TO ZERO
         LH    R5,PRFSIZE
         SR    R11,R11
         IC    R11,PRFNBUNT             NUMBER OF UNITS IN BFR
COMPARE1 EQU   *
          L     R10,PRFTIC-IEDQPRF(R10)
         LA    R2,1(0,R2)
         SH    R5,AVTKEYLE              SUBTRACT AMT. IN THIS UNIT
         BP    COMPARE1 .               IF UNITS REMAIN, GO COUNT THEM
ALL      EQU   *
         STC   R2,PRFNBUNT              REPLACE CORRECT NO. UNITS
         CR    R2,R11
         BE    POSTDISK
          SR    R11,R2
          STC   R11,PRFNBUNT-IEDQPRF(R10)
          LR    R1,R10
         BAL   R10,POSTSUB .            POST BFR
POSTDISK EQU   *
         CLI   QCBSTPRI,DIALPRTY        DIAL QCB
         BNH   NODIAL                   BR NOT DIAL
         TM    PRFSTAT1,PRFNLSTN        IS THIS A LAST SEG
         BO    NODIAL                   BR IF NOT LAST
         IC    R14,QCBPRIPQ             PRTY OF THIS QCB
         EX    R14,COMPRI               THIS MSG PRTY HIGHER THAN
         BH    NODIAL                   PREVIOUS MSG - BR NO
         STC   R14,QCBPRLVL             SET HIGHSET PRTY MSG
NODIAL   EQU   *
*        IF A LOGICAL READ ERROR OCCURS IN INITIATE MODE - FA WILL
*        DROP THE ERB LEAVING LCBDLNK SWITCH SET TO 'NOT POSTABLE'
*        PCI WILL NOT POST THE ERB.  LOGICAL READ ERROR WILL ALSO BE
*        SET IN ERBST.  WHEN HM RECEIVES A BFR IN INIT MODE UNDER
*        THESE CONDITIONS - THE ERB FOR THE DESTINATION LINE WILL
*        BE REPOSTED TO FA WITH AN E0 PRIORITY REQUESTING
*        THE BUFFERS OF THIS MESSAGE AGAIN.  THE DESTINATION LCB
*        WILL BE FOUND FROM THE LCBINSRCE CHAIN OF THE SOURCE LCB.
         BAL   R14,SENDINIT
         B     NOERB
         TM    LCBERBST-IEDQLCB(R1),LCBDLNKN+LCBEOMSG
*        CAN THE ERB BE POSTED
         BNZ   NOERB                    BR YES PCI MAY POST IT
         TM    LCBERBST-IEDQLCB(R1),LCBRDERR .   HAS A READ ERROR
         BNO   NOERB .                  BR IF NO ERROR
         CLI   LCBERBKY-IEDQLCB(R1),AVTEZERO  SHOULD HM POST ERB S21101
         BE    NOERB NO IT IS ALREADY ON READY Q                 S21101
         CLI   LCBERBPY-IEDQLCB(R1),PRIFSPCI . SHOULD PTRY BE CHGED
         BNE   PRIOK .                  BR NO
         MVI   LCBERBPY-IEDQLCB(R1),PRISBPCI . SET PRTY
PRIOK    EQU   *
         LA    R1,LCBERB-IEDQLCB(R1) .  ADDR OF ERB TO POST
         LA    R2,AVTDSIOB .            QCB ADDR FOR FA
*                                   .   STORE OF R2 WILL ZERO    S21101
*                                   .   FIRST BYTE OF ERB        S21101
         BAL   R10,POSTSUBA .           POST ERB TO FA
NOERB    EQU   *
         AIF   (&A NE 1).H001
         B     COREQUE
         AGO   .H005
.H001    ANOP
         TM    PRFSTAT1,PRFDUPLN        DUPL HDR
         AIF   (&A NE 2).H002
         BNO   QUEUE1
         AGO   .H003
.H002    ANOP
         BO    DUPL                     BR YES
          TM    QCBDSFLG,QCBCORE
*                       IS THIS A CORE QUEUE QCB
         BNO   QUEUE1 .                   NO, DISK ONLY          S21101
*                                         YES, HAS CORE Q        S21101
         CLI   PRFPRI,COPYPRI .         IS THIS BUF FROM COPY    S21101
         BNE   COREQUE .                  NO, NOT COPY, GO ENQUE S21101
*                                           ONTO CORE QUEUE      S21101
*                                         YES, FROM COPY         S21101
         TM    QCBDSFLG,QCBDISK .       DOES THIS CORE Q HAVE    S21101
*                                         ANY DISK BACKUP        S21101
         BZ    COREQUE .                  NO, CORE ONLY          S21101
*                                         YES, CORE WITH DISK    S21101
         B     QUEUE1 .                 ENQUEUE ONTO DISK        S21101
.H003    ANOP
         TITLE '''IEDQHM'' - DUPLICATE MESSAGE TESTING' .        S22025
DUPL     EQU   *
*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
*        WHEN A DUPL. HDR IS BEING PROCESSED--
**       A COPY MAY OR MAY NOT BE ON THE QUEUEING MEDUUM INVOLVED
*        WITH THIS DESTINATION.
**       WHEN THE INITIAL RECALL IS DONE (IEDQBD), THE CONTENTS
*        OF SCBQTYPE - HIGH HALF BYTE -- INDICATING THE ORIGINAL
*        COPY OF THE MESSAGE IS PUT INTO SCBCQT ( HBFNO) AND SCB
*        QTYPE IS CLEARED TO 0.
**       WHEN THE SUBTASK GETS THE ERB FROM THE INITIAL RECALL
*        - USUALLY IEDQBD -- THE XTRA RECORDS ADDRESS IS COPCOPIED
*        INTO SCBRDX (SCBMBSSA) FOR RESUABLE DISK AND FOR NON-
*        REUSABLE DISK INTO SCBNDX (SCBMBSSA+4).  FOR A CORE COPY
*        NO COPY SHOULD BE MADE OF XTRA.
**       SCBDCHDR WILL REFLECT THE DCHDR OF THE DISK Q TYPE INDICATED
*        IN SCBQTYPE. THE OTHER DISK QTYPE WILL BE IN SCBOTHER
*        (SCBTRANS).  IF ONE EXISTS.
**       SCBCQT HIGH HALF BYTE WILL BE THE COPY OF SCBQTYPE MADE
*        EARLIER.  THE LOW HALF BYTE IS THE INDICATION OF ALL MED-
*        IUMS WHICH CONTAIN A COPY OF THES MESSAGE.
*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *
         L     RSCB,LCBSCBA-1
         AIF   (&A EQ 2).H003A
         LA    R1,256*SCBCC+SCBCC+SCBCOREQ
*        SET TO MARK FISLD AS HAVING A COPY ON THIS MEDIUM
*        SET REG TO TEST FOR MSG ORIGINAL OR COPY ON THIS MEDIUM
         LA    R14,COREQUE .            ASSUME COPY THERE - TRN TO Q
         TM    QCBDSFLG,QCBREUS+QCBNREUS
         BZ    EXTM
.H003A   ANOP
*     IS COPY IS TO BE CALLED AND THE ORIGINAL IS IN CORE, THEN
*     IT MUST NOT BE FREED (SERVICED) UNITL AFTER COPY IS DONE.
*     THEREFORE  IT WILL BE FLAGGED AS A DUPL WITH ONE MORE DUPL HDR
*        COUNTED THAN EXISTS.  THEN WHEN COPY FINISHES. IT WILL
*    REDUCE THE COUNT BY ONE.
         TM    QCBDSFLG,QCBREUS .       RESU DISK
         BO    TSTSCB .                 BR YES
         LA    R1,256*SCBCN+SCBCN+SCBNREUS
*        SET REG TO TEST FOR MSG ORIGINAL OR COPY ON THIS MEDIUM
*        SET TO MARK FISLD AS HAVING A COPY ON THIS MEDIUM
         LA    R14,QUEUE1 .             ASSUME COPY THERE  - SET RTN
EXTM     EQU   *
         EX    R1,TM .                  TEST FOR ORIG. OR COPY
         BNZ   EXBR .                   BR IF ONE THERE
         AIF   (&A EQ 2).H003B .                                 S21101
         TM    SCBCQT,SCBREUS+SCBNREUS .ANY DISK-COPY WILL USE ITS21101
         BNZ   NOCORE .                   YES, DISK              S21101
*                                         NO, Q=MO               S21101
         LR    R14,R1 .                 SAVE REG 1               S21101
         BAL   R1,DUPLCORE .                                     S21101
*                                                                S21101
         BAL   R1,INCRCNT .             INCR COUNT OF DUPLS-COPY S21101
*                                                                S21101
         LR    R1,R14 .                 RESTORE REG 1            S21101
NOCORE   EQU   * .                                               S21101
.H003B   ANOP , .                                                S21101
         LA    R14,POSTCOPY .           SET RTN TO PUT ONE THER)
EXBR     EQU   *
         SRL   R1,8 .                   SET R1 TO OI MASK
         EX    R1,OI .                  SET COPY HERE
         BR    R14 .                    RETURN
TSTSCB   EQU   *
         LA    R1,256*SCBCR+SCBCR+SCBREUS
*        SET TO MARK FISLD AS HAVING A COPY ON THIS MEDIUM
*        SET REG TO TEST FOR MSG ORIGINAL OR COPY ON THIS MEDIUM
         BAL   R14,EXTM .               ASSUME COPY THERE - RTN HERE
         BAL   R14,REUSDUPL .           IF DUPL TO BE QUEUED HEE
*        CHECK FOR TOO FAR
         TITLE '''IEDQHM'' - DISK ASSIGNMENT' .                  S22025
QUEUE1   EQU   *
          LA    R2,AVTDSIOB             SET FOR LATER POST
         ST    R2,PRFQCBA-1
         MVI    PRFPRI,PRIDESTQ
         LA    R2,AVTNADDR              NON REUSABLE VALUE OF ADDR
         MVI   PRFTIC,XPRFNRUS+XTIC     SET TIC FLAGS TO NON REUS
         LA    R9,SCBNREUS .            SET FOR LATER OI
         TM    QCBDSFLG,QCBREUS
*                                       IS THIS FOR REUS DISK
         BZ    NONREUS                  BR NO
         LA    R2,AVTRADDR              ADDR OF REUS VALUE OF
*                                       ADDRESS
         MVI   PRFTIC,XPRFREUS+XTIC     SET TIC FLAGS TO REUS DSK
*                       TELL TIC OP CODE FIELD IS USED TO
*                       TELL DISK I/O WHICH DISK DATA SET
*                       IS TO BE USED
         LA    R9,SCBREUS .             SET FOR LATER OI
NONREUS  EQU   * .                                               S22025
         MVC   PRFCRCD(3),SCBDNSEG .    SET RRNS ASSUMING TEXT   S22025
         MVC   PRFCHDR(3),SCBDCHDR .         BUFFER              S22025
         TM    PRFSTAT1,PRFNHDRN        IS THIS A HEADER
         BO    TXTSAME .                NO, SKIP HEADER PROCESS  S22025
QUESAME  EQU   *
         TM    PRFSTAT1,PRFDUPLN+PRFERMGN  DUPL OR ERR MSG
         BNZ   NOEX .                   BR IF EITHER
         EX    R9,QTYPEOI
NOEX     EQU   *
         MVC   PRFCRCD(3),QCBDNHDR
         MVC   PRFHQBCK(3),QCBQBACK
         MVC    QCBQBACK(3),PRFCRCD
         MVC   QCBPQBCK,PRFCRCD         UPDATE PRI Q BACK PTR   SA51078
         TM    QCBPREVF+L'QCBPREVF-1,CPBQTYPE                   SA50192
*                                       FIRST MSG ON QUEUE      SA50192
         BNZ   PREVFSET                 BRANCH IF NO            SA50192
         BAL   R9,LOCKMSG               IS IT LOCK MODE        @SA76275
         B     LKPFEFO                  BR NOT LOCK            @SA76275
         B     PREVFSET                 BYPASS SETTING UP PFEFO@SA76275
*                                       IF ONLY A LOCK RESPONSE@SA76275
LKPFEFO  EQU   *                                               @SA76275
         TM    PRFSTAT1,PRFCNCLN        CANCELLED HEADER?      @SA71682
         BO    PREVFSET                 YES, DOES NOT GET IN   @SA71682
*                                       FEFO CHAIN             @SA71682
         MVC   QCBPREVF,PRFCRCD         SET FOR RESTART IF NO   SA50192
*                                       PFEFO IN CHKPOINT       SA50192
PREVFSET EQU   *                                                SA50192
         MVC   QCBDNHDR(3),1(R2)
         MVC   PRFNHDR(3),QCBDNHDR
         BAL   R9,ADDONE
         TM    PRFSTAT1,PRFERMGN        ERR MSG IN THIS BFR
         BO    TXTSAME                  BR YES - DO NOT UPDATE QCB
         MVC   SCBDCHDR(3),PRFCRCD      SET CORRENT HDR ADDR
         TM    PRFSTAT1,PRFDUPLN        DUPL HDR
         BO    DUPLHDR                  BR YES
         BAL   R9,LOCKMSG
         B     TXTSAME                  BR NOT LOCK
         MVC   QCBLKRRN(3),PRFCRCD
*                        SET DEST QCB LOCK FIELD
TXTSAME  EQU   *
         XC    PRFXTRA(3),PRFXTRA .     CLEAR THE XTRA ADDRESS
         SR    R14,R14
         IC    R14,PRFNBUNT             NUMBER OF UNITS CONTAINING
         BCTR  R14,R0                   DATA  -1
         LTR   R14,R14                  IS THERE MORE THAN 1 UNIT
         BZ    ISITLAST .               BR IF JUST ONE
         MVC   PRFXTRA(3),1(R2)         SET LOCATION OF XTRA AS ADDR
         SLL   R14,MULT4 .              ADJUST NO. OF RECORDS    S21101
         A     R14,0(R2)           ADD NO. ADD. RECS. TO ADR
         ST    R14,0(R2)
ISITLAST EQU   *
         TM    PRFSTAT1,PRFNLSTN   IS THIS THE LAST SEG
         BZ    LASTSEG                  BR YES
         MVC   SCBDNSEG(3),1(R2)
         MVC   PRFNTXT(3),SCBDNSEG
         BAL   R9,ADDONE
CKLDPT   EQU   *
         TM    QCBDSFLG,QCBNREUS
          BO    DISKPOST                IF NON REUS RETURN
CKLOADPT EQU   *
         TM    PRFSTAT1,PRFERMGN+PRFDUPLN .  THIS ERMSG OR DUPL
         BNZ   NOABEND .                BR NO
         L     R14,AVTRADDR .           NEXT VALUE OF ADDR
         L     R11,SCBDCHDR-1 .         ADDR OF HDR THIS MSG
         LA    R11,0(R11) .             CLEAR HI
         SR    R14,R11 .                GET DIFFERENCE FOR MSG SPAN
         L     R11,AVTTOTNR .           ADJUST AVTTOTNR TO       S21101
         SLL   R11,MULT4 .              REFLECT THE RRN NUMBERINGS21101
*                                       SYSTEM WHICH INCREMENTS  S21101
*                                       BY 4                     S21101
         CR    R14,R11 .                COMPARE MSG SPAN TO SIZE S21101
         BL    NOABEND .                DOES MSG SPAN THE DISK
         LA    R15,ABCODE7 .           SET ABEND CODE
         BAL   R14,AVTABEND .          SET 14 TO ADDR OF ABEND
*        AND GO TO RTN TO ABEND
NOABEND  EQU   *
         L     R2,AVTRADDR .            ADJUST AVTRADDR          S21101
         LA    R2,ROUNDER(R2) .         TO REFLECT               S21101
         SRL   R2,DIV4 .                THE ABSOLUTE             S21101
         CL    R2,AVTLODPT .            NO. OF RECORDS           S21101
          BL    DISKPOST                LESS THAN LDPT - RETURN
         SR    R10,R10                  DIVIDE RADDR BY TOTAL NO.
         LR    R11,R2 .                 OF RECORDS. IF REMAINDER S21101
         D     R10,AVTTOTNR             ER IS LESS THAN 1/4 OF THE
         SR    R14,R14                  TOT NO OF OF RECORDS RADDR
         L     R15,AVTTOTNR             SHOULD BE CHANGED TO ITS
         LA    R5,4                     MODULO VALUE IF THE 2 TO
         DR    R14,R5                   23RD BIT IS ALSO ON
         CR    R15,R10                  IS THE REMAINDER LESS THAN
         BL    SETREUS                  1/4 OF TOTAL BR NO
         TM    AVTRADDR+1,AVTMODBT      IS THE 2 TO 23RD BIT ON
         BNO   SETREUS                  BR  NO
         SLL   R10,MULT4 .              ADJUST THE VALUE         S21101
         A    R10,ROUND                 REINITIALIZE RADDR      SA66611
         ST     R10,AVTRADDR            SET REUS TO MODULO VALUE
         SRL   R10,MULT4                DIVIDE BY FOUR          SA66611
         ST    R10,AVTLODPT             SET NEW VALUE           SA66611
SETREUS  EQU   *
         IC    R2,AVTADEBR              SINCE 1/4 OF TOTAL MAY
         LA    R2,1(R2)                 HAVE A REMAINDER, EVERY 4TH
         STC   R2,AVTADEBR              TIME LDPT IS CHANGED, THE
         CLI   AVTADEBR,THREE           QUDTIENT AND REMAINDER MUST
         BL    ADD1QTR                  BE ADDED TO KEEP THE ZONE
         MVI   AVTADEBR,AVTEZERO        BOUNDARIES ON THE SAME DISK
         AR   R15,R14                   LOCATION
ADD1QTR  EQU   *
         L     R2,AVTLODPT              ADD 1/4 ( OR 1/4 + REMAINDER)
         AR    R2,R15                   TO LDPT FOR NEXT POINT
         ST    R2,AVTLODPT              TO CALL RESUABILITY
         L     R1,AVTIA .               GET ADDRESS OF REUS QCB  S21101
         L     R11,AVTEA .              SET DISPATCHER BASE      S21101
         BAL   R14,DSPPOSTR .           POST REUS QCB TO ITSELF  S21101
*                                         TO ACTIVATE REUS ZONE  S21101
*                                         CLEANING               S21101
* THE REUS QCB ALREADY HAS ASSEMBLED IN IT THE PROPER PRIORITY & S21101
* THE ADDRESS OF ITSELF IN ITS FIRST WORD TO SIMPLIFY TPOSTING.  S21101
*                                                                S21101
DISKPOST EQU    *
         L     R2,PRFQCBA-1             FOR COMMON CODE
.H005    ANOP
NRPOST    EQU   *
         LTR   R12,R12
         BM    COPYRTN
          LR    R1,RPREFIX
          L     R11,AVTEA
         LA    R15,DSPPOST
         B     POSTB
         AIF   (&A EQ 1).H006
LASTSEG  EQU   *
         BAL   R14,SAMELAST .                                    S22025
         LA    R10,CKLOCK .             SET RETURN ADDR
TQBACK   EQU   *
*                                       IF VALID THE SRCE QCB MUST
*                                       BE LOCATED TO UPDATE THE
*                                       SOURCE QBACK CHAIN
         LR    R5,R15
         LH    R1,PRFSRCE
         N     R1,AVTCLRHI .            CLEAR HI-ORDER HALF AND TEST
         BCR   ZEROES,R10 .             NO, BR                   S22025
         L     R15,AVTRNMPT
         BALR  R14,R15
         L     R1,0(R1)
         MVC   PRFTQBCK(3),QCBQBACK-IEDQQCB(R1)
*                       QBACK PTR INTO BFR
         MVC   QCBQBACK-IEDQQCB(3,R1),PRFCRCD
*                       UPDATE QCB QBACK WITH THIS REC. ADDR.
         LR    R15,R5
         BR    R10
QTYPEOI  OI    SCBQTYPE,X'00' .         SET A VALUE IN QTYPE
ADDONE   EQU   *
         LA    R0,INCR .                ADD 4 TO THE VALUE OF    S21101
         A     R0,0(R2)                 ADDRESS CURRENTLY BEING
         ST    R0,0(R2)                 USED
         BR    R9
.H006    ANOP
SAMELAST EQU   *
         LTR   R12,R12            IF THIS IS COPY OR REUS
         BCR   4,R14                    NO CHECKING REQUIRED
         BAL   R9,LOCKMSG
         B     CKINIT                   BR NOT LOCK
         AIF   (&A EQ 1).H007
         TM    QCBDSFLG,QCBREUS+QCBNREUS    ANY DSIK
         BNZ   POSTLCB                  IF CORE ONLY  CLEAR BITS
.H007    ANOP
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN
         BNO   POSTLCB
         NI    SCBSTATE,X'FF'-(SCBLCK1N+SCBMSGLN)       MSG LOCK OFF
*********    INITIALIZE LCB TO SEND
POSTLCB  EQU   *
         ST    R14,AVTPARM3             SAVE RETURN ADDRESS    @XA11314
         L     R1,QCBDCBAD-1            DCB ADDR
         CLI   QCBSTVTO,DSPLOGSC        IS QCB FOR LOGTYPE       S22024
         BE    NOLGB                    BRANCH ON YES            S22024
         TM    DCBDSORG-IHADCB(R1),AVTE80    IS THIS AN LGB      S22024
         BO    LGB                      BRANCH ON YES            S22024
NOLGB    EQU   *                                                 S22024
         SR    R14,R14                  CLEAR FOR IC
         LR    R15,R14                  CLEAR FOR IC
         IC    R14,QCBLKRLN .           REL LN  O OF LOCKED LINE
         IC    R15,DCBEIOBX-IHADCB(R1)  SIZE OF LCB
         MR    R14,R14                  SIZE X LN NO.
         AL    R15,DCBIOBAD-IHADCB(R1)  + ADDR FIRST IOB - SIZE OF
         LA    R1,LCBFLAG1-IEDQLCB      IOB -- SIZE OF LCB-IOB
         SR    R15,R1                   - LCB ADDR
         LR    R1,R15                   LCB ADDR FOR POST
RESUME   EQU   *                                                 S22024
         L     R14,AVTPARM3             RESTORE REGISTER 14    @XA11314
         NI    LCBINSRC+2-IEDQLCB(R1),X'FF'-X'40'
         BCR   7,R14
         ST    R1,LCBQCBA-1-IEDQLCB(R1)
         MVI   LCBPRI-IEDQLCB(R1),PRILNFRE
         L     R11,AVTEA                RSSTORE DISP ADDR
         BAL   R14,DSPPOSTR
         L     R14,AVTPARM3             RESTORE RETURN ADDRESS @XA11314
         L     RSCB,LCBSCBA-1           RESTORE R3
         L     RQCB,SCBDESTQ-1          RESTORE R7
         BR    R14
LGB      EQU   *                                                 S22024
         LR    R1,RQCB                  PUT QCB ADDR IN R1       S22024
         SH    R1,NPRFSIZE              BACK UP TO NEG PREFIX  @YM04658
         L     R1,QCBPLCBA-1-IEDNQCB(R1)  ADDRESS OF PLCB        S22024
         B     RESUME                                            S22024
CKINIT   EQU   *
         TM    LCBSTAT1,LCBINITN+LCBRECVN
*        RECEIVING AN INITIATE MODE MESSAGE
         BCR   14,R14 .                 BR NOT RCV INIT
         TM    LCBINSRC+2,XXXON         IF THELOW ORDER BIT IS NOT
         BO    GETINSRC .               BR IF LCB IS IN SRCE CHAIN
         L     R1,LCBINSRC-1 .          ADDR OF DEST LCB
         OI    LCBERBST-IEDQLCB(R1),XXHMSG .    SET EOM TO HM
         BR    R14
GETINSRC EQU   *
*    IS LCB IS IN TE SRCE CHAIN REMOVE IT
         LR    R2,RQCB .                INITIALIZE FOR LOOP
         LA    RLCB,0(0,RLCB)
CKLCB    EQU   *
         LR    R15,R2
         L     R2,LCBINSRC-IEDQLCB-1(R2)  ADDR NEXT LCB
         N     R2,CLEAROFF              CLEAR HI AND INSRC BIT
         CR    R2,RLCB .                IS THIS THE LCB TO REMOVE
         BNE   CKLCB .                  IF NOT, GO LOOK AT NEXT ONE
REMOVE   EQU   *
         MVC   LCBINSRC-IEDQLCB(3,R15),LCBINSRC-IEDQLCB(R2)
*                        REMOVE LCB FROM SOURCE CHAIN
        BR     R14
         AIF   (&A EQ 1).H007A
DUPLHDR  EQU   *
         BAL   R10,GETNTXT
CKLOCK   EQU   * .                                               S22025
         TM    PRFSTAT1,PRFCNCLN        CANCELLED MESSAGE       OX06353
         BO    CKLDPT                   BR YES                  OX06353
*                                                               OX06353
         BAL    R14,FINDSTCB
         B     CKLDPT .                 GO, SEE IF REUS NEEDED   S22025
         SPACE 1 .                                               S22025
POSTCOPY EQU   *
         MVI   PRFPRI,PRICOPY
         SPACE 1 .                                              SA51783
*** QCB MESSAGE COUNT HAS BEEN INCREMENTED FOR THIS DUPLICATE   SA51783
*   HEADER; BUT, COPY WILL TPOST THE BUFFERS OF THE MESSAGE     SA51783
*   BACK HERE WHEREUPON THE MESSAGE WOULD BE RECOUNTED.  HEADERSSA51783
*   OF MESSAGES WHICH WILL BE DISK QUEUED WILL NOT RETURN HERE. SA51783
*   SO, TO AVOID AN INCORRECT MESSAGE COUNT, WE MUST DECREMENT  SA51783
*   IT FOR CORE-ONLY QUEUED OR DISK QUEUED MULTI-BUFFER MSGS.   SA51783
         SPACE 1 .                                              SA51783
         AIF   (&A EQ 2).H900 .                                 SA51783
         TM    QCBDSFLG,QCBDISK .       IS THIS DISK QUEUED     SA51783
         BZ    DECRCT .                 NO, GO DECREMENT COUNT  SA51783
.H900    ANOP  , .                                              SA51783
         TM    PRFSTAT1,PRFNLSTN .      IS IT LAST BUFFER       SA51783
         BZ    NODECRCT .               YES, IT WON'T RETURN    SA51783
DECRCT   EQU   * .                                              SA51783
         LH    R2,QCBMSGCT .            DECREMENT MESSAGE COUNT SA51783
         BCTR  R2,0 .                     BY ONE                SA51783
         STH   R2,QCBMSGCT .            RESTORE IT              SA51783
NODECRCT EQU   * .                                              SA51783
         L    R2,AVTCOPY                QCB ADDR FOR POST
         LA    R2,0(R2)                 CLEAR HI BYTE
         LTR   R2,R2                    COPY THERE
         BNZ   NRPOST .                 BR YES
         LA    R15,ABCODE4 .           SET ABEND CODE IN 15
         BAL   R14,AVTABEND .          SET 14 TO INSTR OF ABEND
*        AND GO TO RTN TO ABEND
         SPACE 3 .                                               S22025
REUSDUPL EQU   *
         MVC   AVTDOUBL+1(3),QCBDNHDR   HEADER RECORD           SA57334
         MVC   AVTDOUBL+5(3),PRFXTRA    EXTRA SEGMENT           SA57334
         CLI   PRFNBUNT,HEX01           ANY EXTRAS              SA57334
         BNE   PASTNTXT                 BR YES                  SA57334
         SPACE
         TM    PRFSTAT1,PRFNLSTN        LAST SEG
         BCR   14,R14                   BR YES - NO NTXT
         MVC   AVTDOUBL+5(3),PRFNTXT
*                                                               SA57334
*        IF A DUPL HDR IS MORE THAN 1 ZONE AWAY FROM ITS        SA57334
*        PREVIOUSLY ASSIGNED NEXT TEXT OR EXTRA SEGMENT         SA57334
*        THE WHOLE MSG SHOULD BE RECOPIED                       SA57334
*                                                               SA57334
PASTNTXT EQU   *                                                SA57334
         L     R5,AVTDOUBL
         LA    R5,0(0,R5)
         MVI   AVTDOUBL+4,AVTEZERO
         S     R5,AVTDOUBL+4
         SR    R10,R10
         L     R11,AVTTOTNR .           AVTTOTNR IS THE ABSOLUTE S21101
*                                       NUMBER OF RECORDS. THIS  S21101
*                                       IS ALSO THE SIZE OF A    S21101
*                                       ZONE IN THE RRN NUMBERINGS21101
*                                       SYSTEM WHICH INCREMENTS  S21101
*                                       BY 4                     S21101
         CR    R5,R11
         BH    POSTCOPY
       L    R7,SCBDESTQ-1               RESTORE QCB ADDR
         BR    R14
.H007A   ANOP
POST   EQU   *
         LR    R1,RPREFIX
POSTA    EQU   *
         L     R11,AVTEA
         LA    R15,DSPPOSTR
POSTB    EQU   *
         ST   R2,PRFQCBA-1-IEDQPRF(R1)
         BR    R15                      GO POST                @XM05743
         AIF   (&A EQ 1).H008
GETNTXT  EQU   *
         CLI   PRFNBUNT,X'01'           JUST ONE UNIT
         BNE   NOCLEAR                  BR MORE THAN 1
         XC    PRFXTRA(3),PRFXTRA       THERE IS NO EXTR REC
         TM    PRFSTAT1,PRFNLSTN        LAST BFR
         BNO   TQBACK                   BR YES - NO NTXT EITHER
NOCLEAR  EQU   *
         MVC   PRFNTXT(3),SCBNDX
         TM    PRFTIC,XPRFNRUS .        THIS FOR NREUS DISK
*        ALREADY HAVE A COPY FOR THIS MSG ON THE ONE NEEDED
         BNZ   CKUNITS .                BR YES                   S22025
         MVC   PRFNTXT(3),SCBRDX        ASSUME REUS - GET NTXT
CKUNITS  EQU   *
         CLI   PRFNBUNT,X'01'           JUST ONE UNIT
         BCR   8,R10                    BR YES
         MVC   PRFXTRA(3),PRFNTXT       SET XTRA
         TM    PRFSTAT1,PRFNLSTN        LST BFR
         BNO   TQBACK                   BR IF LAST
         SR    R1,R1
         IC    R1,PRFNBUNT              NO UNITS
         BCTR  R1,0                     SUBTR 1 FOR ADD
         L     R0,PRFXTRA-1             ADDR OF XTRA
         SLL   R1,MULT4 .               ADJUST FOR 4'S           S21101
*                                       ARITHMETIC               S21101
         AR    R0,R1
         SRL   R1,DIV4 .                ADJUST BACK              S21101
         STC   R0,PRFNTXT+2             SET VALUE FOR NTXT SEGS
         SRL   R0,8
         STH   R0,PRFNTXT
         BR    R10                      RETURN
.H008    ANOP
LOCKMSG  EQU   *
         LTR   R12,R12 .                COPY CALL
         BCR   4,R9 .                   BR IF OCPY - NOT LOCK
         TM    PRFSTAT1,PRFDUPLN+PRFERMGN
*        DUPL HDR OR ERRMSG COULD BE FROM ORIGINAL LOCK MSG
         BCR   7,R9 .                   BR IF EITHER
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN    LOCK MSG
         BCR    8,R9                    BR NOT LOCK
         CLI   LCBRSKEY,DSPPUTSC        PUT RESPONSE MSG        SA60012
         BCR   7,R9                     BRANCH IF NO            SA60012
         TM    QCBFLAG,QCBPROC          THIS THE REQ. MSG OR RESP MSG
         BNO   4(R9)                    BR IF THE RESPONSE MSG
         BR    R9                       BR IF REQUESTING MSG
         AIF   (&A EQ 2).H009
         TITLE '''IEDQHM'' - CORE ENQUEUE' .                     S22025
*      THE FIRST 12 BYTES OF THE RECORDS WILL BE USED AS A KEY FIEDS
*     ON DISK.  THE TIC PORTION OF THIS FIELD WILL BE USED TO
*     COUNT DUPLICATE HEADERS
COREQUE  EQU   *
         AIF   (&A NE 3).H011A .                                 A51776
         TM    LCBSTAT1,LCBRECVN+LCBINITN INITIATE MESSAGE       A51776
         BNO   INITCORE .               NO, GO QUEUE IT          A51776
         TM    QCBDSFLG,QCBREUS+QCBNREUS IS IT DISK BACK-UP      A51776
         BNZ   CLEARCOR .               YES, GO QUEUE ON DISK    A51776
*                                            ONLY                A51776
INITCORE EQU   * .                                               A51776
.H011A   ANOP  , .                                               A51776
      TM    PRFSTAT1,PRFNHDRN
         BNO    NOCHECK
         NC    SCBCCHDR(3),SCBCCHDR .   HDR THERE OR LOST
         BZ    NOQUEUE1 .               BR IF LOST
         MVC    AVTDOUBL+1(3),SCBCCHDR
         L    R2,AVTDOUBL
         TM    PRFSTAT1,PRFCNCLN
         BNO   NOTCNCL                  BR NO
         OI    DATFLAGS-IEDQDATA(R2),DATCNCLD     SET CNCL FLAG
NOTCNCL  EQU   *
         TM    DATFLAGS-IEDQDATA(R2),DATLOSTN+DATINITL
*                                       HAS THIS MSG BEEN LOST
         BNZ   NOQUEUE
NOCHECK   EQU   *
         XC    0(8,RPRF),0(RPRF)        ZERO DATA FIELD
         XC    PRFNTXT(L'PRFNTXT+L'PRFCRCD),PRFNTXT .            A42363
         BAL   R9,CNTUNITS
         TM    PRFSTAT1,PRFDUPLN
         BO    COREDUPL
         AIF   (&A EQ 1).H009A
          TM     QCBDSFLG,QCBREUS+QCBNREUS
*                        IS THIS TO BE DISK QUEUED ALSO
         BNZ    SWAPNOT
.H009A   ANOP
INITRTN  EQU   *
          LR    R1,R5
         BAL   R10,POSTSUB .            POST BFR
UNITQUE EQU   *
         BAL   R10,QUEUNITS
         AIF   (&A EQ 1).H009B
         BAL   R9,SETDISK
.H009B   ANOP
         TM    PRFSTAT1,PRFNLSTN        IS THIS A LAST SEG
         BO    RETURN
         LTR   R12,R12                  IS THIS REUS OR COPY
         BM    COPYRTN                  BR YES
         BAL   R9,SETFEFO
          BAL   R14,FINDSTCB
         BAL   R14,SAMELAST
         NI    LCBINSRC+2,X'FF'-XXXON . SET INSRC FLAG OFF
         NI    LCBSTAT1,LCBINITF .      SET INIT MODE OFF
RETURN    EQU   *
         LTR   R12,R12
         BM    COPYRTN
          L     R11,AVTEA
          B     DSPDISP
COREHDR  EQU   *
         TM    PRFSTAT1,PRFCNCLN
         BNO   NOTCNCLD                 BR NO
         OI    DATFLAGS-IEDQDATA(RPREFIX),DATCNCLD      SET CNCL
NOTCNCLD EQU   *
         TM    PRFSTAT1,PRFDUPLN+PRFERMGN  DUPL OR ERRMSG
         BNZ   NOQTYPE .                BR IF EITHER - NO QTYPE TO SET
         OI    SCBQTYPE,SCBCOREQ
NOQTYPE  EQU   *
         AIF   (&A EQ 1).H009C
         TM    QCBDSFLG,QCBREUS+QCBNREUS
         BNZ   ASSIGN
.H009C   ANOP
         BAL   R9,LOCKMSG
         B     ASSIGN                   BR NOT LOCK
         MVC   QCBLKRRN(3),AVTDOUBL+1
ASSIGN   EQU   *
         BAL   R9,ASSIGN1
         NC    PRFTIC+1(3),PRFTIC+1
         BCR   8,R10
         L     R2,PRFTIC
         MVI   PRFTIC-IEDQPRF(R2),AVTEZERO
         BR    R10
ASSIGN1  EQU   *
         MVC   PRFCORE(3),AVTDOUBL+1
ASSIGN1A EQU   *
         MVC   PRFCRCD(3),PRFCORE       SET CURRENT RECORD IN   SA52971
*                                         CASE MAIN ONLY        SA52971
         XC    PRFNHDR(3),PRFNHDR        ZERO NEXT HDR POINTER
         TM    PRFSTAT1,PRFERMGN        ERROR MSG THIS BFR
         BO    SKIP                     BR YES DO NOT UPDATE SCB
         MVC   SCBCCHDR(3),PRFCORE      NEW SCB CURR HDR ADDR
         MVC   SCBCLSEG(3),PRFCORE      >ET NEW LAST SEGMENT
SKIP     EQU   *
         MVC   PRFNHDR,QCBCFHDR         LINK HDR ON QUE         SA51078
         MVC   QCBCFHDR,PRFCRCD         UPDATE FIRST HDR        SA51078
         BR    R9                       RETURN                  SA51078
         SPACE 1 .                                               S22025
DUPLCORE EQU   *
         L     R2,SCBCCHDR-1            HDR ADDR
         TM    LCBSTAT1,LCBSENDN        SENDING
         BNO   NOTSEND                  BR NO   CCHDR IS OK
         L     R2,SCBSCHDR-1            GET HDR ADDR
NOTSEND  EQU   *
         ST    R2,AVTDOUBL .            HAS THIS  MSG BEEN FREED
         CLC   AVTDOUBL+1(3),PRFCORE-IEDQPRF(R2) .   FROM THE CORE
        BNE   RCQCB .                  QUEUE- ALREADY SENT
*        THE ORIGINAL HDR ADDRESS MUST REMAIN IN R2 FOR COREDUPL
         OI    PRFSTAT1-IEDQPRF(R2),PRFDUPLN .  FLAG ORIG AS DUPL
         MVC   PRFNTXT(3),PRFNTXT-IEDQPRF(R2)
         L     R9,PRFTIC-IEDQPRF(R2)    ADDR OF NEXT UNIT
         ST    R9,AVTDOUBL
         MVI   AVTDOUBL,AVTEZERO .      CLEAR HI BYTE
         NC    PRFTIC+1-IEDQPRF(3,R2),PRFTIC+1-IEDQPRF(R2)
         BNZ   DUPLCNT
         MVC   AVTDOUBL+1(3),PRFNTXT-IEDQPRF(R2)
        L     R9,AVTDOUBL
         LTR   R9,R9 .                  IS THE COUNT TO BE UPDATED
         BCR   8,R1 .              BR NO - NO TIC TO COUNT IN
DUPLCNT  EQU   *
*       IF THE DUPL HDR HAS A SINGLE UNIT, THE COUNT OF HEADERS
*       WILL BE KEPT IN THE TIC FIELD OF HTE NEXT TEXT
*        SEGMENT.  IF IT HAS MORE THAN ONE UNIT, THE COUNT WILL
*        BE IN THE TIC OF THE FIRST UNIT
*        IF THERE IS ONE UNIT AND ONE SEGMENT, NO COUNT IS NEEDED.
         CLI   PRFTIC-IEDQPRF(R9),X'FF' .  DO NOT ALLOW MORE THAN
         BE    RCQCB .                  255 DUPL ENTRIES IN CORE Q
        BR    R1 .                     RETURN
INCRCNT EQU   *
         L     R9,AVTDOUBL .            ADDR OF UNIT TO PUT CNT IN
         LTR   R9,R9 .             IS ONE THERE
         BCR   8,R1 .              BR IF NO COUNT
         IC    R14,PRFTIC-IEDQPRF(R9)   COUNT OF DUPL HDRS
         LA    R14,1(0,R14)
         STC   R14,PRFTIC-IEDQPRF(R9)
         BR    R1
COREDUPL EQU   *
         BAL   R1,INCRCNT .             COUNT THIS DUPL HDR
         MVC    DATFLAGS-IEDQDATA(AVTUMALN,R5),DATFLAGS-IEDQDATA(R2)
*        COPY TIC, FLAGS AND LINK FIELD
         XC    DATFEFO-IEDQDATA(3,R5),DATFEFO-IEDQDATA(R5)
*        CLEAR FEFO PRT
         LH    R9,AVTKEYLE
         BCTR  R9,0                     ADJUST COUNT
         EX    R9,DUPLTRAN
         LH    R9,PRFDEST .             COPY THE DEST FOR THIS
         STH   R9,PRFDEST-IEDQPRF(R5) . DUPL HDR
         IC    R9,PRFCORE-1-IEDQPRF(R5)
         ST    R5,PRFCORE-1-IEDQPRF(R5)
         STC    R9,PRFCORE-1-IEDQPRF(R5)
         ST    RPREFIX,AVTDOUBL+4       SAVE ADDR OF ORIGINAL BFR
         LR    RPREFIX,R5               USE R6 FOR SUBROUTINE
         BAL   R9,ASSIGN1A
         BAL   R9,SETFEFO1
         L     RPREFIX,AVTDOUBL+4       RESTORE R6
RCQCB    EQU   *
         MVI   PRFTIC,X'08'
         L     R2,LCBRCQCB
         MVI   PRFPRI,PRIRCQCB          SET FOR POST
         BAL   R14,POST
         LA    R14,RETURN
.H009    ANOP
FINDSTCB EQU   *
         L     RSCB,LCBSCBA-1 .         RESTORE SCB              A42400
         L     RQCB,SCBDESTQ-1 .        RESTORE QCB              A42400
FINDSTCA EQU   * .                                               A42400
         LTR   R12,R12                 COPY CALL
         BCR   4,R14                    BR IF COPY
         TM    QCBFLAG,QCBTSSES         TERMINAL IN TIME-SHARING S22029
*                                       SESSION                  S22029
         BCR   7,R14                    YES, DO NOT SEND ANY MSG S22029
*                                       TRAFFIC AT THIS TIME     S22029
         L    R11,AVTEA
         CLI   QCBSTPRI,CLOCK .         CLOCK OPTION             S22026
         BNE   CHKINTVL                 BR NO                    X03039
*                                                                X03039
         CLI   QCBSTVTO,DSPSEND         QCB FOR VTAM TERMINAL  @Y17XAQZ
         BNER  R14                      BR NO                    X03039
*                                                                X03039
         TM    QCBTSOF1,QCBDELAY        QCB ON TIME DELAY        X03039
         BOR   R14                      BR YES                   X03039
*                                                                X03039
         B     CONTINUE                 GO FIND SEND SCHEDULER   X03039
*                                                                X03039
CHKINTVL EQU   *                                                 X03039
         CLI   QCBSTPRI,INTVL .         INTVL OPTION             S22026
         BNE   CONTINUE .               BRANCH IF NO             S22026
*        IF THE STCB PRTY IS X'70' CHECK IF THE QCB IS IN THE TIME
*        QUEUE.  IF YES - REMOVE THE QCB AND PUT THE SEND SCHED.
*        BACK INTO THE QCB STCB CHAIN.
         BAL   R10,CKDELAYQ
CONTINUE EQU   *
         STM   R0,R15,AVTSAVE4          SAVE CALLERS REGISTERS  SA61768
*        SAVE AREAS USED AT THIS POINT ARE                      SA61768
*        19R4 - AVTSAVE3+4, R14                                 SA61768
*        IEDQHG - AVTSAVE2 ( IN R13) +C FOR R14 - R12           SA61768
*        PRIOR TO THIS APAR FIX, IEDQFA USED AVTSAVE4+10 FOR    SA61768
*        REGS 0 - 15, IGG019RP USED AVTSAVE3+36 FOR REGS 3-12   SA61768
CONTINU2 EQU   *                                                SA61768
         LA    R15,QCBSTCHN-1           IS THE SCHEDULER THE
         L     RSCB,QCBSTCHN-1          FIRST STCB ON THE QCB
         LA    RSCB,0(RSCB)             STCB CHAIN
         CLR   RSCB,R15                 BR NO
         BNE   CHKCONC .               TO CHECK IF CONC          S22026
         SR    R15,R15
         IC    R15,QCBSTVTO             OFFSET TO THE SCHEDULER
         AR    R15,R15                  DOUBLED TO GET TO THE
         L     RSCB,AVTDISP-24(R15)     ADDRESS IN THE DISP V CON
         SH    RSCB,AVTHA2              TABLE - HALF WORD BEFORE
         LH    R15,0(RSCB)              THE CODE IS THE OFFSET
         AR    R15,RSCB                 TO THE SUBROUTINE TO FIND
         BALR  R14,R15
RESET    EQU   *
         LM    R0,R15,AVTSAVE4          RESTORE REGISTERS       SA61768
         BR    R14
CHKCONC  CLI   QCBSTVTO,CONC .         CONCENTRATOR              S22026
         BNE   RESET .                 BRANCH IF NO              S22026
         TM    QCBDSFLG,QCBDRQQ .      DRQ                       S22026
         BO    RESET .                 BRANCH IF YES             S22026
         LH    RSCB,QCBEXTO .          EXT OFFSET                S22026
         AR    RSCB,RQCB .             QCBE ADDRESS              S22026
         L     RSCB,QCBECONC-1-IEDQQCBE(RSCB) TRM ENTRY          S22026
         L     RQCB,TRMDESTQ-1-IEDQTRM(RSCB) .DRQ ADDRESS        S22026
         B     CONTINU2                 CONTINUE                SA61768
CKDELAYQ EQU   *
         TM    QCBINSRC+2,QCBDELAY      QCB IN DELAY Q
         BCR   14,R10                   BR NO
         TM    QCBSTAT,QCBTRMHO         TERMINAL HELD           SA59006
         BCR   1,R10                    BR YES, RETURN          SA59006
         TM    AVTBIT2,AVTREUSN         REUSABILITY RUNNING    @XA05307
         BNO   CONT                     BR NO, FORGET IT       @XA05307
         LA    R1,IEDQQCB+QCBMSIZE-QCBPSIZE INIT FOR SCAN LOOP @XA05307
SCANLOOP EQU   *                                               @XA05307
         LA    R1,QCBPSIZE(0,R1)        NEXT PRIORITY QCB      @XA05307
         OC    QCBFFEFO-IEDQPQCB(3,R1),QCBFFEFO-IEDQPQCB(R1)   @XA05307
*                                         UNSENT FEFO MESSAGE  @XA05307
         BNZ   CONT                     BR YES, CONTINUE       @XA05307
         CLI   QCBPRIPQ-IEDQPQCB(R1),AVTEZERO LAST PRIORITY QCB@XA05307
         BNE   SCANLOOP                 BR NO, CONTINUE        @XA05307
         BR    R10                      BR RETURN              @XA05307
CONT     EQU   *                                               @XA05307
         ST    R14,AVTPARM3             SAVE RETURN ADDRESS    @SA74250
         LR    R1,RQCB                  QCB ADDR TO REMOVE
         L     R15,AVTHG02              ADDR OF SUBRTN
         BALR  R14,R15
         NI    QCBINSRC+2,X'FF'-QCBDELAY
         LA    R15,QCBSTCHN-1           ADDR OF SEND SCHED
         MVC   QCBSLINK(3),QCBSTCHN     MOVE THE STCB LINK FIELD
         IC    R1,QCBSTCHN-1            PUT SEND SCH BACK IN CHAIN
         ST    R15,QCBSTCHN-1
         STC   R1,QCBSTCHN-1
         L     R14,AVTPARM3             SAVE RETURN ADDRESS    @SA74250
         BR    R10                      RETURN
         AIF   (&A NE 3).H010
SWAPNOT  EQU  *
         BAL    R10,NOSWAP
         B    UNITQUE
SETDISK  EQU   *
          TM     QCBDSFLG,QCBREUS+QCBNREUS
*                        IS THIS A CORE ONLY QCB
         BCR   8,R9
         MVC   PRFCRCD(3),QCBDNHDR
         TM    PRFSTAT1,PRFNHDRN
         BZ    DISKALL .                YES, WE'RE SET           S22025
         MVC   PRFCRCD(3),SCBDNSEG .    SEG DISK ADDRESS OF THIS BFR
DISKALL   EQU   *
         L     RPREFIX,AVTDOUBL+4
         B     QUEUE1
.H010    AIF   (&A EQ 2).H011
QUEUNITS EQU   *
         ST    RPREFIX,AVTDOUBL
         LTR   R12,R12
         BM    OUTSZE
         LH    R9,PRFSIZE
COMPSZE  EQU   *
         CH    R9,AVTKEYLE
         BNH   FIXSZE .                 BR IF END IN THIS UNIT
        SH    R9,AVTKEYLE
        L    R6,PRFTIC
         XC    1(7,R6),1(R6)            CLEAR DATA AREA
         MVI   DATFLAGS-IEDQDATA(R6),DATNPRFX
         B      COMPSZE
FIXSZE   EQU   *
         STC    R9,DATCOUNT-IEDQDATA(RPRF)
OUTSZE   EQU   *
         XC    PRFTIC+1(3),PRFTIC+1
         L    R6,AVTDOUBL
         XC    PRFKEY(6),PRFKEY .       ZERO IF SINGLE UNIT
         XC    PRFNTXT(3),PRFNTXT       CLEAR THE NTXT OF BFR
         TM    PRFSTAT1,PRFNHDRN        IS THIS A HEADER
         BNO   COREHDR                  BR YES
         MVI   PRFTIC,AVTEZERO
         MVC   PRFCHDR(3),SCBCCHDR      CORE CURR HDR ADDR
         MVC   PRFCORE(3),AVTDOUBL+1
         MVC   PRFCRCD(3),PRFCORE       SET CURRENT RECORD IN   SA52971
*                                         CASE MAIN ONLY        SA52971
         MVC   AVTDOUBL+1(3),SCBCLSEG   ADDR OF PREV. TXT
         L     R9,AVTDOUBL
         MVC    PRFNTXT-IEDQPRF(3,R9),PRFCORE
*                         ADDR OF THIS RECORD IN PREVIOUS UN TXT
         MVC    SCBCLSEG(3),PRFCORE
         BR    R10
CNTUNITS EQU *
         SR    R14,R14
         IC    R14,PRFNBUNT             MO. OF UNITS IN TGUS BFR
         TM    PRFSTAT1,PRFDUPLN
         BNO   UNITCNT
         LR    R10,R9 .                 SAVE RTN ADDR
         BAL   R1,DUPLCORE .            FIND THIS ORIG. HDR
         LR    R9,R10 .                 RESTORE ADDR
         LA    R14,1
UNITCNT  EQU   *
         SR    R5,R5 .                  CLEAR TO INITIALIZE
         SR    R0,R0 .                  CLEAR TO INITIALIZE
         L     R10,AVTCADDR             NO. UNITS USED IN COREQ@OY12977
         TM    QCBSTAT,QCBTRMHO         TERM HELD              @ZA06194
         BO    TOOMANY                  BR, YES                @ZA06194
         AR    R10,R14                  + NO. IN THIS BFR
        C   R10,AVTTOTNC
         BH    TOOMANY                  NO. OF CORE UNITS-BR YES
          C    R10,AVTCMAX
         BL    NOBITSET
         OI    AVTSYSER,AVTCMAXN        SET CORE MAX
         AIF   (&A EQ 1).H012A
*        IF DISK BACKUP - STOP CORE QUEUEING WHEN OVER CORE
*        MAX TO PREVENT FILLING TJE CORE QUEUE
         TM    QCBDSFLG,QCBREUS+QCBNREUS
         BM    TOOMANY .                BR IF DISK BACKUP
.H012A   ANOP
NOBITSET EQU   *
         ST    R10,AVTCADDR .           SET NEW NO. USED FROM CORE Q
         C     R10,AVTCMIN
         BL    GETUNITS
         NI    AVTSYSER,AVTCMINF
GETUNITS  EQU  *
         LR    R11,R14 .                SAVE NUMBER GOTTEN
TAKEUNIT EQU   *
        NC    AVTBFREB+1(3),AVTBFREB+1
        BZ    ALLGONE
         L     R5,AVTBFREB
         MVC   AVTBFREB+1(3),PRFLINK-IEDQPRF(R5)
*                        REMOVE THE FIRST UNIT
         ST    R0,PRFTIC-IEDQPRF(R5)    LINK THIS UNIT TO PREV. ONE
         LR    R0,R5                    GET NOE PREV. UNIT
         BCT   R14,TAKEUNIT             WHEN THE NECESSARY UNITS
*                                       HAVE BEEN REMOVED, SET UP
*                                       TO POST THEM AS ONE UNIT
         IC    R14,PRFNBUNT        PUT NUMB OF UNITS
         STC   R14,PRFNBUNT-IEDQPRF(R5)   IN NEXT BFR
         XC    PRFLINK-IEDQPRF(3,R5),PRFLINK-IEDQPRF(R5)
         LH    R0,AVTAVFCT .            SUBTRACT THE NO. OF UNITS
         N     R0,AVTCLRHI              CLEAR HIGH BYTES       @YA07705
*        TO BE USED FROM THE AVAILABLE COUNT
         SR    R0,R11 .                 DECR NO GOTTEN
         STH   R0,AVTAVFCT
         BR    R9
ALLGONE  EQU   *
         LA     R5,0(0,R5)
         LTR   R5,R5
         BZ    TOOMANY
         MVC   PRFLINK-IEDQPRF(3,R5),AVTBFREB+1
         ST    R5,AVTBFREB
        L     R5,PRFTIC-IEDQPRF(R5)
         B     ALLGONE
         AIF   (&A EQ 1).H012
NOSWAP   EQU   *
         LH    R2,AVTKEYLE
         XC    0(8,R5),0(R5)            CLEAR FIRST 8 BYTES OF BFR
         ST    RPRF,AVTDOUBL+4
         LR    R0,R5
         LR    R9,RPRF
         BCTR    R2,0                    FOR EXECUTE INSTR.
         SR    RPRF,RPRF                CLEAR
         IC    RPRF,PRFNBUNT-IEDQPRF(R9)     UNITS IN BFR
MOVE     EQU   *
         EX    R2,TRANSFER
         BCT   RPRF,NXTUNT              DECR UNIT CNT
         LR    RPREFIX,R0
          BR    R10
NXTUNT   EQU   *
         L     R5,PRFTIC-IEDQPRF(R5)
         L     R9,PRFTIC-IEDQPRF(R9)
         B     MOVE
.H012    ANOP
SETFEFO EQU   *
         LTR    R12,R12                 CALLED BY REUS
         BCR    8,R9                    YES - RETURN
         LR    R2,R9 .                  SAVE RTN ADDR
         BAL   R9,LOCKMSG
         B     INITFEFO .               IF RTN HERE - NOT LOCK MSG
*        SO THE FEFO PRTR SHOULD BE SET
         LR    R9,R2 .                  RESTORE RTN ADDR
         BR    R9 .                     RETURN - NO FEFO PTR ON LOCK
INITFEFO EQU   *
         LR    R9,R2 .                  RESTORE RTN ADDR
         BAL   R14,SENDINIT
         B     SETFEFO1
         BR    R9
SETFEFO1 EQU   *
         MVC    AVTDOUBL+1(3),PRFCORE
         TM    PRFSTAT1,PRFNHDRN        THIS A HDR
         BNO   RECOK                    BR YES
         MVC   AVTDOUBL+1(3),PRFCHDR    NEW HDR ADR
RECOK    EQU   *
*        IF ONLY 1 THERE THE MSG COULD HAVE BEEN READ BUT THE
*        FEFO PTR MAY NOT BE UPDATED YET , SO THE SCB IN WHICH
*        THE FEFO PTR WAS SAVED MUST BE UPDATED.
         STM   R14,R12,AVTSAVE2+12 .    SAVE REGS               SA52971
         LA    R9,QCBLFEFO .            SET HM03 INPUT          SA52971
         LA    R10,AVTDOUBL+1 .           PARAMETERS            SA52971
         BAL   R14,IEDQHM03
         LM    R14,R12,AVTSAVE2+12 .    RESTORE REGS            SA52971
         LH    R2,QCBLFEFO              KEEP ADDR OF
         SLL   R2,8                     LAST COMPLETELY RCVD MSG
         IC    R2,QCBLFEFO+2
         MVC   QCBLFEFO(3),AVTDOUBL+1
         NC    QCBFFEFO(3),QCBFFEFO     IS THERE ONE FEFO MSG
         BZ    FIRSTFFO
         MVC   DATFEFO(3),QCBLFEFO
         BR   R9
FIRSTFFO EQU   *
         MVC   QCBFFEFO(3),QCBLFEFO
         BR    R9
MSGCNT   EQU   *
         LH    R5,QCBMSGCT .            MSGCNT HAS ALREADY BEEN
         BCTR   R5,0                    CHANGED FOR THIS HDR
         STH   R5,QCBMSGCT .            FIX IT BACK
         B     RCQCB
TOOMANY  EQU   *
         LTR   R12,R12 .                REUS OR COPY
         BM    4(R9) .                  RETURN AT +4
         TM    QCBDSFLG,QCBREUS+QCBNREUS ANY DISK               SA61085
         BM    NOTLOST .                BRANCH IF YES           SA61085
         OI    SCBERR3,SCBLOSTN .       SET LOST MSG
NOTLOST  EQU   *                                                SA61085
         SR    R10,R14
         ST    R6,AVTDOUBL+4            SAVE BFR ADDR
         TM    PRFSTAT1,PRFNHDRN
         BO    NOTHDR
         TM    PRFSTAT1,PRFDUPLN .      DUPL HDR - NO QUEUEING
         BO    MSGCNT .                 BR IF DUPL TO DECR MSG COUNT
         AIF   (&A EQ 1).H013
         TM    PRFSTAT1,PRFERMGN .      IS THIS AN ERRORMSG
         BO    NOCLR .                  BR IF ERR MSG
CLEARCOR EQU   * .                                               A51776
         XC    SCBCCHDR(3),SCBCCHDR .   CHEAR FOR NOQUEUE
NOCLR    EQU   *
          TM     QCBDSFLG,QCBREUS+QCBNREUS
         BM    QUEUE1
.H013    ANOP
         XC    SCBMRFSD(4),SCBMRFSD     STOP MULT RT AND DLIST
         BAL   R14,SENDINIT
         B     NOHMSG
         OI    DATFLAGS-IEDQDATA(R6),DATINITL .  SET INIT LOST
NOHMSG   EQU   *
         LA    R10,1(R10)
         C     R10,AVTTOTNC             IF ONE UNIT IS AVAILABLE
*              THE RCV. SWITCH SHOULD NOT BE SET
         BNH   UNITHERE                 BR IF AVAILABLE
         OI    AVTBIT3,AVTRECVN         SET RCV SW.
UNITHERE EQU   *
         SR    R5,R5                    CLEAR TO SET NO BUF RET@SA72466
         ST    R5,AVTDOUBL+4            SET NO BFR TO RETURN   @SA72466
         MVC   AVTDOUBL+4(1),PRFSTAT1   SAVE PRFSTAT           @SA72466
         SR    R9,R9                    CLEAR REGISTER         @OY14492
         IC    R9,PRFNBUNT              NO. OF UNITS IN BUFFER @OY14492
         AR    R10,R9                   SET TO CADDR+NBUNT     @OY14492
         BCTR  R10,R0                   ACCOUNT FOR 1 UNIT     @OY14492
         ST    R10,AVTCADDR             UPDATE NO USED UNITS
         ST    R6,AVTDOUBL
         BAL   R9,ASSIGN1
         TM    PRFSTAT1,PRFCNCLN .      IS THIS TO BE CNCLD
         BNO   NOCNCL .                 BR NO
         OI    DATFLAGS-IEDQDATA(R6),DATCNCLD
NOCNCL   EQU   *
         XC    AVTDOUBL+1(3),AVTDOUBL+1
         LR    R2,R6
         B     FOUNDMSG                 GO FREE EXTRA UNITS    @SA72466
NOLOST   EQU   *
         ST    R6,AVTDOUBL+4            SAVE BFR ADDR
         MVC   AVTDOUBL+4(1),PRFSTAT1   SAVE PRFSTAT           @SA72466
         L     R2,AVTDOUBL
FOUNDMSG EQU   *
         MVC   AVTDOUBL+1(3),PRFNTXT-IEDQPRF(R2)
         XC    PRFNTXT-IEDQPRF(3,R2),PRFNTXT-IEDQPRF(R2)
         SR    R9,R9
         IC    R9,PRFNBUNT-IEDQPRF(R2)
         LH    R1,AVTAVFCT              COUNT OF AVAILABLE BFRS
         N     R1,AVTCLRHI              CLEAR HIGH BYTES       @YA07705
         OI    DATFLAGS-IEDQDATA(R2),DATLOSTN
         NI    PRFSTAT1-IEDQPRF(R2),PRFNLSTF
         CLC   PRFSIZE-IEDQPRF(2,R2),AVTKEYLE
         BNH   SIZEOK
         MVC   PRFSIZE-IEDQPRF(2,R2),AVTKEYLE
SIZEOK   EQU   *
         MVI   PRFNBUNT-IEDQPRF(R2),X'01'
*              SET NB UNITS TO ONE IN BFR TO LEAVE
         BCT   R9,NEXTUNIT
         XC    PRFTIC+1-IEDQPRF(3,R2),PRFTIC+1-IEDQPRF(R2)
NEXTBFR  EQU   *
         NC    AVTDOUBL+1(3),AVTDOUBL+1
         BZ    LASTBFR
         L     R5,AVTDOUBL
         IC    R9,PRFNBUNT-IEDQPRF(R5)       NO UNITS IS BFR
         MVC   AVTDOUBL+1(3),PRFNTXT-IEDQPRF(R5)
         B     FREEUNIT
NEXTUNIT EQU   *
         L     R5,PRFTIC-IEDQPRF(R2)
         XC    PRFTIC+1-IEDQPRF(3,R2),PRFTIC+1-IEDQPRF(R2)
FREEUNIT EQU   *
         MVC    PRFLINK-IEDQPRF(3,R5),AVTBFREB+1
         ST    R5,AVTBFREB
         LR    R2,R5
         BCTR  R10,R0
         LA    R1,1(R1)                 INCREASE COUNT FOR NO. RTNED
         BCT   R9,NEXTUNIT
         B     NEXTBFR
LASTBFR  EQU   *
         MVC   SCBCLSEG(3),SCBCCHDR .   SET LAST SET (ALSO       A47137
*        SCBSCHDR) TO THE LAST SEGMENT ON THE QUEUE              A47137
         STH   R1,AVTAVFCT              RESTORE COUNT OF BFRS
         ST    R10,AVTCADDR
         AIF   (&A EQ 1).H0013A
         TM    QCBDSFLG,QCBREUS+QCBNREUS
         BM    QUEUE1
.H0013A  ANOP
         B     CKLAST
NOQUEUE   EQU   *
         BM    NOQUEUE1 .               BR NOT INIT LOST
         TM    PRFSTAT1,PRFNLSTN .      IS THIS THE LAST BFR
         BNO   NOTHDR .                 BR IF LAST BFR
NOQUEUE1 EQU   *
         ST    R6,AVTDOUBL+4
         MVC   AVTDOUBL+4(1),PRFSTAT1   SAVE PRFSTAT           @SA72466
         MVC    PRFCHDR(3),SCBCCHDR
         AIF  (&A EQ 1).H0013B
         BAL   R9,SETDISK
.H0013B  ANOP
CKLAST   EQU   *
        LA    R6,0(R6)
         LTR    R6,R6
         BZ    RTNBFR
         TM    AVTDOUBL+4,PRFNLSTN      WAS THIS LAST          @SA72466
         BO    TESTLAST                 BR IF NO               @SA72466
         LTR   R12,R12
         BM    TESTLAST                 BR IF YES              @SA72466
         BAL   R9,SETFEFO
         BAL   R14,FINDSTCB
         BAL   R14,SAMELAST
         NI    LCBSTAT1,LCBINITF .      SET INIT MODE OFF
         NI    LCBINSRC+2,X'FF'-XXXON . SET INSRC FLAG OFF
TESTLAST EQU   *                                               @SA72466
         L     R6,AVTDOUBL+4            RESTORE ADDR OF BUFFER @SA72466
*                                         TO FREE              @SA72466
         LA    R6,0(R6)                 CLEAR HIGH ORDER BYTE  @SA72466
RTNBFR   EQU   *
         L     R11,AVTEA                DISP ADDR
         LTR   R6,R6
         BZ    DSPDISP                  BR NO
         MVI    PRFPRI,PRIBFRTB
          LA    R2,AVTBFRTB
          B     NRPOST
NOTHDR   EQU   *
         MVC   AVTDOUBL+1(3),SCBCCHDR
         MVC   PRFCHDR(3),SCBCCHDR
         BAL   R14,SENDINIT
         B     NOLOST
         L     R2,AVTDOUBL .            ADDR OF HDR
         OI    DATFLAGS-IEDQDATA(R2),DATLOSTN+DATINITL
*        SET INIT LOST
         TM    PRFSTAT1,PRFNLSTN .      LAST BFR
         BO    RTNBFR .                 BR NOT LAST - DO NOT QUEUE IT
         OI    LCBERBST-IEDQLCB(R1),XXHMSG .  SET EOM HERE
         L     R1,LCBSCBA-1-IEDQLCB(R1) .    DEST SCB
         OI    SCBERR3-IEDQSCB(R1),SCBLOSTN .  SET MSG LOST
CKBFR    EQU   *
         NC    AVTBFREB+1(3),AVTBFREB+1 .   ANY BFRS
         BZ    INITNOBF .               BR NO
         L     R5,AVTBFREB .            UNIT ADDR
         MVC   AVTBFREB+1(3),PRFLINK-IEDQPRF(R5) .   DELINK VFR
         MVI   PRFNBUNT-IEDQPRF(R5),X'01' .   SET NO UNITS
         LH    R1,AVTAVFCT .            DECR COUNT OF AVAIL BFRS
         N     R1,AVTCLRHI              CLEAR HIGH BYTES       @YA07705
         BCTR  R1,0
         STH   R1,AVTAVFCT
         SR    R2,R2                    CLEAR 2
         L     R1,AVTCADDR .            NO. OF CORE UNITS USED
         IC    R2,PRFNBUNT .            NO THIS BFR
         AR    R1,R2 .                  NEW TOTAL USED
         ST    R1,AVTCADDR
         NI    PRFSTAT1,PRFNLSTF
         B     INITRTN
INITNOBF EQU   *
         L     R1,LCBINSRC-1 .          DEST LCB ADDR
         TM    LCBERBST-IEDQLCB(R1),LCBRDERR
*        NOW WAITING FOR THIS BFR TO SEND
         L     R1,LCBSCBA-1-IEDQLCB(,R1) DEST SCB
         BNO   SETLAST .                BR NOT WAITING FOR THIS BFR
         MVC   SCBCORE-IEDQSCB(3,R1),SCBCLSEG RESET LAST BFR
SETLAST  EQU   *
         L     R1,SCBCLSEG-1 .          ADDR FOR LAST BFR
         NI    PRFSTAT1-IEDQPRF(R1),PRFNLSTF .  SET EON
         B     RTNBFR
.H011    ANOP
         TITLE '''IEDQHM'' - INTER-MODULE SUB-ROUTINES' .        S22025
*
*
*        ENTRY HERE FROM REUS - COPY AND CKPT-RESTART
*
*
         DC    A(IEDQHM03)
IEDQHM02 EQU   *
         USING *,R15
         STM   14,12,12(R13)
         L    R12,BASE
         DROP  R15
*        REUS, COPY, AND RESTART ALL SET UP PQCB
         AIF   (&A NE 3).H014
         TM    QCBDSFLG,QCBREUS+QCBNREUS
*                   IS THES A CORE ONLY QCB
         BM    QUEUE1                   BR NO
.H014    AIF   (&A NE 2).H014A
         B     QUEUE1
         AGO   .H015
.H014A   ANOP
         ST    R6,AVTDOUBL+4 .          SAVE PASSED UNIT
         XC    PRFTIC(4),PRFTIC .       CLEAR TIC FIELD
         TM    DATFLAGS-IEDQDATA(R6),DATNPRFX
         BNO   SETNBUNT                 BR IF UNIT HAS PRFX
         L     R6,SCBCLSEG-1            ADDR LAST PRFX PASSED
         B     NOMVI                    BR NOT TO SET NBUNT
SETNBUNT EQU   *
         MVI   PRFNBUNT,X'01' .         SET 1 UNIT IN BFR
NOMVI    EQU   *
         LA    R14,1
         BAL   R9,UNITCNT
         B     TMDAT .                  HAVE A UNIT TO USE
         BCTR  R10,0 .                  DECRMENT  MSUNIT COUNT
         ST    R10,AVTCADDR .           UPDATE
         ST    R5,AVTPARM
         L     R2,SCBCCHDR-1 .          HDR THIS MSG
         L     R10,AVTCADDR .           NO MSUNITS USED
         L     R1,AVTDOUBL+4 .          ADDR OF PASSED UNIT
         TM    DATFLAGS-IEDQDATA(R1),DATNPRFX
         BO    FOUNDMSG .               BR NO PRFX
         TM    PRFSTAT1,PRFNHDRN .      THIS A HDR
         BO    FOUNDMSG .               BR NOT HDR
.H015    ANOP
COPYRTN  EQU   *
         L     R5,AVTPARM
         LTR   R15,R5                   PASS BUFFER ADDR TO 19RP
         L     R14,12(13,0)             RESTORE 14
         LM    0,12,20(13)              RESTORE REUS REGISTERS
         BR    R14                      RETURN
         AIF   (&A EQ 2).H017
TMDAT    EQU   *
         ST    R5,AVTPARM
         L     R2,AVTDOUBL+4 .          ADDR OF PASSED UNIT
         TM    DATFLAGS-IEDQDATA(R2),DATNPRFX  PRFX IN TUNIT
*                  DOES THIS UNIT JAVE A PRFFIX
         BNO   UNITQUE .                BR IF PRFX THIS UNIT
         IC    R1,PRFNBUNT .            ADD 1 TO NBUNT OF LAST BFR
         LA    R1,1(R1)
         STC   R1,PRFNBUNT .
CHECKTIC EQU   *
         NC    PRFTIC+1(2),PRFTIC+1
         BZ    NOTIC
         L    R6,PRFTIC
         B    CHECKTIC
NOTIC    EQU    *
         ST    R2,PRFTIC                LINK TO PREV UNIT
         MVI    PRFTIC,X'00'
         B     COPYRTN
         AIF   (&A EQ 1).H016
TRANSFER EQU   *
         MVC    PRFSUNIT-IEDQPRF(0,R5),PRFSUNIT-IEDQPRF(R9)
.H016    ANOP
DUPLTRAN EQU   *
         MVC   PRFSUNIT-IEDQPRF(0,R5),PRFSUNIT-IEDQPRF(R2)
.H017    ANOP
COMPRI   CLI   QCBPRLVL,X'00'
         DS    0F
BASE     DC    X'80'
         DC    AL3(DESTSCH)
ROUND    DC    F'3' .                   CONSTANT VALUE           S21101
CLEAROFF DC    X'00FFFFFC'
         DS    0H                       ADDRESS CONSTANT FOR   @YM04658
NPRFSIZE DC    AL2(QCBPRFSZ)            QCB NEG PREFIX SIZE    @YM04658
ABCODE4  EQU   X'04' .                  COPY NOT PRESENT IN SYSTEM
ABCODE7  EQU   X'07' .                 MSG WRAPPED TOE DISK
TM       TM    SCBCQT,X'00'
OI       OI    SCBCQT,X'00'
XTIC     EQU   X'08'                    TIC OP CODE
DIALPRTY EQU   X'40'                    PRTY OF DIAL SCHEDULER
         EJECT
IEDQHM03 DS    0H
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
                        ENTRY IEDQHM03
*
* QUESTION - IS THE MSG POINTED TO BY FFEFO THE ONLY MSG ON THIS Q --
* AND IS THAT ONE MSG BEING SENT -- IF SO, WHERE IS THE SCB --
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* INPUT - R14 RETURN ADDRESS
*         R7  MASTER QCB
*         R8  PRIORITY QCB
*        R13 AVTSAVE2
*
*OUTPUT - IF THE ONLY MSG IS BEING SENT, RETURN TO R14+4, SCB IN R2.
*     IF OTHERWISE, RETURN TO R14.  THIS COULD BE FOR TWO REASONS --
*     A. IF FIRST MSG WAS NOT BEING SENT, RETURN TO R14 (POSITIVE).
*     B. IF THE FIRST MSG WAS BEING SENT, BUT WAS NOT THE ONLY
*        MSG ON THE QUEUE, RETURN TO R14 (NEGATIVE), SCB IN R2.
*
* WORK REGS MODIFIED - R0,R2,R15,R1
*
* SCRATCH AREA MODIFIED - AVTPARM3
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
         LA    R14,0(,R14) .            FORCE POSITIVE
* IF ONLY 1 MSG THERE,THE MSG COULD HAVE BEEN READ BUT THE FEFO PTR
* MAY NOT BE UPDATED YET, SO THE SCB IN WHICH THE FEFO PTR WAS
* SAVED MUST BE UPDATED BY THE CALLER.
*
         TM    QCBFLAG,QCBSDFFO .       IS THAT ONE MSG BEING SENT
         BCR   8,R14 .                    NO, NOT BEING SENT
*                                         YES, SOME MSG IS BEING
*                                           SENT, BUT IT MAY BE
*                                           FROM SOME OTHER PRIORITY
*                                           LEVEL OF THIS SAME QCB
         STM   R14,R12,AVTSAVE4+12      SAVE REGS               SA52971
         BALR  R15,0 .                  ESTABLISH ADDRESSABILITY
         USING *,R15 .                    FOR HM03 IN R15
         SR    R0,R0 .                  ZERO WORK REG           SA52971
         TM    QCBFLAG,QCBPROC .        IS QCB FOR PROCESS ENTRY
         BZ    FINDLCB .                NO, FIND CORRECT LCB    SA52971
         L     RSCB,QCBPREN .           GET TPROCESS ENTRY ADDR SA52971
         CLI   TRMSTAT+1-IEDQTRM(RSCB),AVTEZERO                @SA74018
*                                        PROCESS ENTRY CLOSED  @SA74018
         BNE   PROCGO                   BRANCH IF NO           @SA74018
         NI    QCBFLAG,AVTEFF-QCBSDFFO  SET NOT SENDING        @SA74018
         LM    R14,R12,AVTSAVE4+12      RESTORE REGS           @SA76309
         BR    R14                      RETURN TO CALLER       @SA74018
PROCGO   EQU   *                                               @SA74018
         L     RSCB,TRMSTAT-IEDQTRM(,RSCB) GET PEWA ADDR        SA52971
         LA    RLCB,EOMSAVE-4-IEDQPEWA(,RSCB) SET FOR SAVED EOM SA52971
         LA    R2,(SCBFEFO-IEDQSCB)-(PRFSRCE-IEDQPRF) MAKE SAVEDSA52971
*                                         FEFO LOOK LIKE SCB    SA52971
         BAL   R14,APPBFR .             GO CHECK SAVED BFR      SA52971
         LA    RLCB,PERAQCB-4-IEDQPEWA(,RSCB) SET FOR READ-     SA52971
*                                         AHEAD QUEUE           SA52971
         TM    LCBSTAT1-LCBCHAIN(RSCB),LCBRCLLN RETRIEVING      SA52971
         BNO   NORCL .                  NO, WE HAVE BFR CHAIN   SA52971
         LA    RLCB,PERAQCB-IEDQPEWA(,RSCB) GET CORRECT BFR CHN SA52971
NORCL    EQU   * .                                              SA52971
         LA    R2,(SCBFEFO-IEDQSCB)-(PRFQCBA-IEDQPRF) MAKE SAVEDSA52971
*                                         FEFO LOOK LIKE SCB    SA52971
         BAL   R14,APPBFR .             GO CHECK SAVED BFRS     SA52971
LOOPBGN  EQU   * .                                              SA52971
         CLC   PRFLINK-IEDQPRF(3,RLCB),AVTDELAD+1 IS THAT ALL   SA52971
         BE    LOOPEND .                YES, EXIT               SA52971
         LR    R1,RLCB .                SAVE PREVIOUS           SA52971
         L     RLCB,PRFLINK-1-IEDQPRF(,RLCB) GET NEXT           SA52971
         MVC   PRFQCBA-IEDQPRF(3,RLCB),PRFQCBA-IEDQPRF(R1) SET  SA52971
*                                         NEXT BFR WITH FEFO    SA52971
         B     LOOPBGN .                GO LOOK AT NEXT         SA52971
LOOPEND  EQU   * .                                              SA52971
         LA    R5,PEWASAVE+D24-IEDQPEWA(RSCB) MSG SAVED IN RETR@OX16398
         LR    R1,RSCB .                SAVE LCB ADDRESS        SA52971
         LA    RSCB,LCBCHAIN-IEDQLCB .                          SA52971
         SLR   R1,RSCB .                                        SA52971
         L     R2,LCBSCBA-1-IEDQLCB(,R1) SCB ADDRESS            SA52971
         TM    LCBSTAT1-IEDQLCB(R1),LCBRCLLN RETRIEVE          @OX16398
         BZ    TSTLEVEL                 NO                     @OX16398
         LA    R2,(PEWASAVE+D28-IEDQPEWA)-(SCBFEFO-IEDQSCB)(R1,RSCB)
*        SET PEWASAVE+28 TO LOOK LIKE SCBFEFO FOR LATER CODE   @OX16398
         B     FEFOCK                   CHECK TO UPDATE FEFO PT@OX16398
         SPACE 1 .                                              SA52971
FINDLCB  EQU   * .                                              SA52971
         L     R2,QCBDCBAD-1 .          GET ADDR OF DCB
         CLI   QCBSTVTO,DSPLOGSC        IS QCB FOR LOGTYPE       S22024
         BE    NOT3705                  BRANCH ON YES            S22024
         TM    DCBDSORG-IHADCB(R2),AVTE80 IS THIS AN LGB ?       S22024
         BNO   NOT3705                  NO,GO GET SCB ADDR.      S22024
         LA    R2,QCBPRFSZ              QCB PREFIX SIZE        @YM06062
         LNR   R2,R2                    MAKE IT NEGATIVE       @YM06062
         AR    R2,RQCB                  SET NEGATIVE QCB BASE  @YM06062
         TM    QCBSTAT1-IEDNQCB(R2),QCBPLCBN  IS PLCB ASSIGNED @OZ29731
         BZ    EXIT                     NO, EXIT IEDQHM03      @OZ29731
         L     R2,QCBPLCBA-1-IEDNQCB(R2)  GET PLCB ADDRESS       S22024
         B     RITELCB                  EXIT TO COMMON CODE
NOT3705  EQU   *
         IC    R0,DCBEIOBX-IHADCB(,R2) .GET SIZE OF AN LCB
         ST    R0,AVTPARM3 .            SAVE SIZE OF AN LCB
         L     R2,DCBIOBAD-IHADCB(,R2) .GET PSEUDO IOB ADDR
         LA    R1,LCBFLAG1-IEDQLCB .    GET OFFSET INTO LCB OF IOB
         SR    R2,R1 .                  BACK UP TO PSEUDO LCB
         AR    R2,R0 .                  BUMP TO FIRST REAL LCB
         TM    LCBSTAT2-IEDQLCB(R2),LCBDIAL IS THIS A DIAL LCB
         BO    DIALCB .                   YES, DIAL
*                                         NO, NON-DIAL
         SR    R1,R1 .                  CLEAR WORK REG
         IC    R1,QCBRELLN .            GET REL. LINE NO.
         BCTR  R1,0 .                   ADJUST FOR ONE BUMP
*                                         ALREADY DONE
         MR    R1-1,R0 .                MULT. REL. LINE NO(-1) TIMES
*                                         LCB SIZE, GET OFFSET TO LCB
         AR    R2,R1 .                  BUMP TO PROPER LCB
         LR    R11,R2 .                 SAVE LCB ADDRESS        SA52971
         L     R2,LCBSCBDA-1-IEDQLCB(,R2) GET ADDR FIRST SCB
         SR    R0,R0 .                  CLEAR BOTH
         LR    R1,R0 .                    WORK REGS
         IC    R1,QCBSCBOF .            GET INDEX TO PROPER SCB
         IC    R0,AVTSCBSZ .            GET SIZE OF ONE SCB
         MR    R1-1,R0 .                MULT. NO. OF SCB TIMES SIZE
*                                         OF ONE SCB, GET OFFSET
         ALR   R2,R1 .                  BUMP ADDR OF FIRST SCB TOA42367
*                                         PROPER SCB FOR THIS QCB
         LR    RSCB,R2 .                SAVE SCB ADDR           SA52971
         TM    SCBQTYPE-IEDQSCB(R2),SCBCONC IS THIS A CONCEN    SA52971
         BZ    RELOAD .                 BRANCH IF NO            SA52971
         LR    R2,RQCB .                GET QCB ADDR            SA52971
         AH    R2,QCBEXTO .             GET QCB EXTENSION       SA52971
         LR    R12,R2 .                 SAVE PRIMARY ADDR       SA52971
         TM    QCBEFLG-IEDQQCBE(R2),QCBEOPL MSG,L QUEUE         SA52971
         BZ    RSETLCB .                NO, GO RESET LCB        SA52971
         LA    RLCB,IEDQPQCB-QCBPSIZE . GET 0TH PRI QCB         SA52971
EXTLOOP  EQU   * .                                              SA52971
         IC    R0,QCBELGTH-IEDQQCBE(,R2) GET EXTENSION LENGTH   SA52971
         AR    R2,R0 .                  GO TO NEXT EXTENSION    SA52971
         LA    RLCB,QCBPSIZE(,RLCB) .   POINT TO NEXT PRI QCB   SA52971
         CR    RLCB,RPQ .               IS THIS CORRECT ONE     SA52971
         BNE   EXTLOOP .                NO, LOOK AT NEXT        SA52971
         LR    R12,R2 .                 SAVE PRIMARY ADDR       SA52971
         LA    R5,(SCBFEFO-IEDQSCB)-(QCBEFEFO-IEDQQCBE) GET DECRSA52971
*                                         FOR DUMMY SCB         SA52971
         SLR   R2,R5 .                  MAKE FEFO PTR LOOK LIKE SA52971
*                                         IT'S IN SCB           SA52971
         LA    R5,((SCBFEFO-IEDQSCB)-(QCBEFEFO-QCBEHDR))(,R2) PTSA52971
*                                         TO HEADER ADDR        SA52971
         BAL   R14,FEFOCOMP .           GO CHECK MSG            SA52971
RSETLCB  EQU   * .                                              SA52971
         TM    QCBEFLG-IEDQQCBE(R12),QCBEPEND QACTION HERE      SA52971
         BZ    RELOAD .                 NO, WE'RE SET           SA52971
         LR    R2,RQCB                  GET QCB ADDR            SA58988
         AH    R2,QCBEXTO               CALC QCB EXTENSION      SA58988
         MVC   AVTSAVE4+1(3),QCBELCB-IEDQQCBE(R2)  RESET TO     SA58988
         L     R11,AVTSAVE4 .           DUMMY LCB IN QACTION    SA52971
RELOAD   EQU   * .                                              SA52971
         LR    R1,R11 .                 SET LCB ADDRESS         SA52971
         LR    R2,RSCB .                RESET SCB ADDR          SA52971
         B     TSTLEVEL .               GO CHECK SCB            SA52971
         SPACE 1 .                                              SA52971
DIALCB   EQU   * .                      R2 IS ADDR OF LCB
         LA    R0,QCBSTVTO .            GET ADDR OF MASTER QCB STCB
NXTDIAL  EQU   * .
         L     R1,LCBSTCBA-1-IEDQLCB(,R2) GET ADDR OF FIRST STCB ON
         TM    LCBSTCBA+2-IEDQLCB(TWO),ONE LINE STOPPED FOR    @YA06890
*                                          CLOSEDOWN           @YA06890
         BO    NXTDIAL2                 BRANCH IF YES          @YA06890
NXTDIAL1 EQU   *                                                OX02183
         LA    R1,0(,R1) .                STCB CHAIN OF LCB
         CR    R1,R0 .                  DOES 3RD WORD OF LCB POINT
*                                         TO 3RD WORD OF MASTER QCB
         BE    RITELCB .                  YES, GOT PROPER DIAL LCB
*                                         NO, TRY NEXT DIAL LCB
         CLI   FOUR(R1),AVTEZERO .      END OF STCB CHAIN       OX02183
         L     R1,FOUR(,R1) .           GET NEXT STCB ADDRESS   OX02183
         BNE   NXTDIAL1 .               BRANCH IF YES           OX02183
NXTDIAL2 EQU   *                                               @YA06890
         A     R2,AVTPARM3 .            BUMP BY SIZE OF LCB
         B     NXTDIAL .                MAYBE NEXT LCB IS THE ONE
*
RITELCB  EQU   * .                      FOUND DIAL LCB
         LR    R1,R2 .                  SET LCB ADDRESS         SA52971
         L     R2,LCBSCBA-1-IEDQLCB(,R2) GET SCB OF THIS DIAL LCB
         SR    R0,R0 .                  ZERO WORK REG           SA52971
TSTLEVEL EQU   * .                                              SA52971
         LA    R5,SCBSCHDR-IEDQSCB(,R2) GET HEADER              SA52971
         TM    SCBHBFNO-IEDQSCB(R2),QCBDISK+QCBCORE RECALLING   SA52971
         BZ    FEFOCK .                 NO, GOT POINTER         SA52971
         L     R1,LCBLSPCI-1-IEDQLCB(,R1) GET SERVICE BFR ADDRESSA52971
         LA    R1,AVTEZERO(,R1) .       ZERO HI-ORDER           SA52971
         LTR   R1,R1 .                  ONE THERE               SA52971
         BZ    EXIT .                   NO, EXIT ROUTINE        SA52971
         LA    R5,PRFCRCD-IEDQPRF(,R1) .ASSUME HDR; GET HDR ADDRSA52971
         TM    PRFSTAT1-IEDQPRF(R1),PRFNHDRN IS IT HEADER       SA52971
         BZ    FEFOCK .                 YES, GO CHECK IT        SA52971
         LA    R5,PRFCHDR-IEDQPRF(,R1) .GET HEADER'S RRN        SA52971
FEFOCK   EQU   * .                                              SA52971
         BAL   R14,FEFOCOMP .           GO CHECK SCBFEFO        SA52971
EXIT     EQU   * .                                              SA52971
         LR    R2,RPRF .                SET RETURN PARAMETER    SA52971
         LM    R14,R1,AVTSAVE4+12 .     RESTORE REGS            SA52971
         LM    RSCB,R12,AVTSAVE4+32 .   RESTORE REGS            SA52971
         BR    R14 .                    RETURN                  SA52971
         SPACE 1 .                                              SA52971
APPBFR   EQU   * .                                              SA52971
         CLC   PRFLINK-IEDQPRF(3,RLCB),AVTDELAD+1 IS ANYTHING   SA52971
*                                         THERE                 SA52971
         BCR   8,R14 .                  NO, RETURN              SA52971
         NC    PRFLINK-IEDQPRF(3,RLCB),PRFLINK-IEDQPRF(RLCB) IS SA52971
*                                         ANYTHING THERE        SA52971
         BCR   8,R14 .                  NO, RETURN              SA52971
         L     RLCB,PRFLINK-1-IEDQPRF(,RLCB) GET BFR ADDR       SA52971
         LA    R5,PRFCRCD-IEDQPRF(,RLCB) ASSUME HDR             SA52971
         TM    PRFSTAT1-IEDQPRF(RLCB),PRFNHDRN IS IT HDR        SA52971
         BNO   HDRRN .                  YES, THAT'S SET         SA52971
         LA    R5,PRFCHDR-IEDQPRF(,RLCB) SET HEADER PTR         SA52971
HDRRN    EQU   * .                                              SA52971
         SLR   R2,RLCB .                BACK UP TO APPEAR AS    SA52971
         LPR   R2,R2 .                    LCB                   SA52971
FEFOCOMP EQU   * .                                              SA52971
         AIF   (&A NE 3).H020 .                                 SA52971
         TM    L'SCBSCHDR-1(R5),CPBQTYPE CORE COPY              SA52971
         BNZ   DISKPTR .                NO, IT'S SET            SA52971
         NC    AVTEZERO(3,R5),AVTEZERO(R5) USABLE POINTER       SA52971
         BCR   8,R14 .                  NO, RETURN              SA52971
         MVC   AVTSAVE4+1(3),AVTEZERO(R5) ALIGN ADDR            SA52971
         L     R5,AVTSAVE4 .            GET ADDR                SA52971
         LA    R5,PRFCRCD-IEDQPRF(,R5) .POINT TO FEFO ADDR      SA52971
DISKPTR  EQU   * .                                              SA52971
.H020    ANOP  , .                                              SA52971
         CLC   AVTEZERO(3,R9),AVTEZERO(R5) THIS MSG TO UPDATE   SA52971
         BCR   7,R14 .                  NO, DON'T UPDATE        SA52971
         LR    RPRF,R2 .                SAVE SCB ADDRESS        SA52971
         OI    AVTSAVE4+12,AVTE80 .     SET 'FOUND' FLAG FOR RETSA52971
         LTR   R10,R10 .                ARE WE TO UPDATE        SA52971
         BCR   8,R14 .                  NO, THEN DON'T          SA52971
         MVC   SCBFEFO-IEDQSCB(3,R2),AVTEZERO(R10) SET FEFO     SA52971
         BR    R14 .                    RETURN                  SA52971
         TITLE '''IEDQHM'' - DSECTS' .                           S22025
*        TPRIOR
         TPRIOR
COPYPRI  EQU   PRIFEFO-1 .              BUF POSTED BY COPY       S21101
         EJECT
         TQCBED                                                  S22026
         EJECT , .                                               S22025
*        TDISPD
          TDISPD
         EJECT , .                                               S22025
         TDATAD
         EJECT , .                                               S22025
*        DCBD
         DCBD  DSORG=TX
DCBOPEN  EQU   X'10'
PCISEND  EQU   X'50' .                  SEND PCI=A/PCI=X         S22025
         EJECT , .                                               S22025
*        TPRFD
          TPRFD
XPRFREUS EQU   X'20' .                  REUSABLE DISK BUFFER     S22025
XPRFNRUS EQU   X'10' .                  PERMANENT DISK BUFFER    S22025
         EJECT , .                                               S22025
*        TLCBD
         TLCBD
LCBNSRCD EQU   X'01' .                  IN-SOURCE CHAIN FLAG     S22025
XXXON    EQU   LCBNSRCD .                                        S22025
XXHMSG   EQU   LCBMSG .                                          S22025
         EJECT , .                                               S22025
*        TPEWAD , .                                             SA52971
         TPEWAD , .                                             SA52971
         EJECT , .                                              SA52971
*        TTRMD
         TTRMD
         EJECT , .                                               S22025
*        TSCBD
         TSCBD
CPBQTYPE EQU   X'03' .                  QUEUE TYPE FLAGS         S22025
SCBCN    EQU   X'01'
SCBCQT   EQU   SCBHBFNO
SCBRDX   EQU   SCBMBSSA
SCBNDX   EQU   SCBMBSSA+4
SCBCC    EQU   X'02'
SCBCR    EQU   X'04'
         EJECT , .                                               S22025
*        TQCBD
         TQCBD
*        TAVTD , .                                               S22025
         TAVTD , .                                               S22025
         MEND
./ ADD NAME=MTRACE
         MACRO
&NAME    MTRACE &TYPE,&ASCB=,&PSW=
.*    COPYRIGHT =
.*       5740-XYN COPYRIGHT IBM CORP 1977,1980;                @G81LPXU
.*       LICENSED MATERIAL-PROGRAM; PROPERTY OF IBM;
.*       REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER
.*       G120-2083.
.*
.*    STATUS = OS/VS2 JBB1126                                  @G81LPXU
.*
.*  VALIDITY CHECK INPUT PARAMETERS
.*
         AIF  ('&ASCB'(1,1)  NE '(').ERROR1
         AIF  ('&PSW' EQ '').ERROR2
         AIF ('&TYPE' EQ 'SVC').SVC
         AIF ('&TYPE' EQ 'PI').PI
         AIF ('&TYPE' EQ 'SRB').SRB
         AIF ('&TYPE' EQ 'IO').IO
         AIF ('&TYPE' EQ 'TASK').TASK
         AIF ('&TYPE' NE 'RETURN').ERROR3
.*
.*  INPUT PARAMETERS ARE VALID, NOW GENERATE THE OP CODES
.*
&NAME    DC    XL2'E50D'           ASSIST TRACE OF SVC RETURN
         AGO  .COMMON
.TASK    ANOP
&NAME    DC    XL2'E50C'           ASSIST TRACE OF TASK DISPATCH
         AGO  .COMMON
.IO      ANOP
&NAME    NI    PSATRACE-PSA(0),X'FF'-PSATROFF
         DC    XL2'E50B'           ASSIST TRACE OF I/O INTERRUPTS
         AGO  .COMMON
.SRB     ANOP
&NAME    DC    XL2'E50A'           ASSIST TRACE OF SRB DISPATCH
         AGO  .COMMON
.PI      ANOP
&NAME    DC    XL2'E509'           ASSIST TRACE OF PROG CHK INTERRUPTS
         AGO  .COMMON
.SVC     ANOP
&NAME    DC    XL2'E508'           ASSIST TRACE OF SVC INTERRUPTS
.*
.*  COMMON SECTION OF GENERATED CODE FOR ASID AND PSW OPERANDS
.*
.COMMON  ANOP
.*  GENERATE THE ASID OPERAND
         DC    S(ASCBASID-ASCB&ASCB)    OPERAND 1 POINTS TO ASID
.*  GENERATE THE PSW OPERAND
         AIF  ('&PSW'(1,1)  EQ '(').REGPSW
.*  THE PSW SPECIFIED IS AN ABSOLUTE BASE-DISPLACEMENT
         DC    S(&PSW)                  OPERAND 2 POINTS TO THE PSW
         MEXIT
.*  THE PSW SPECIFIED IS A REGISTER QUANITY
.REGPSW  ANOP
         DC    S(0&PSW)                 OPERAND 2 POINTS TO THE PSW
         MEXIT
.*  FOLLOWING ARE THE ERROR MNOTES PRODUCED BY THE MACRO
.ERROR1  MNOTE 8,'ASCB=&ASCB INVALID; REGISTER SPECIFICATION REQUIRED'
         MEXIT
.ERROR2  MNOTE 8,'PSW= KEYWORD NOT SPECIFIED; KEYWORD REQUIRED'
         MEXIT
.ERROR3  MNOTE 8,'TYPE=&TYPE INVALID'
         MEND
./ ADD NAME=MVSDBIND
         MACRO
         MVSDBIND
.**********************************************************************
.*                                                                    *
.*   ADDED FOR SUPPORT UNDER HERCULES MVS 3.8J                        *
.*                                                                    *
.**********************************************************************
         ISTDBIND
BINLUP0C EQU   X'00'               LU TYPE 0
.*NLUP1C EQU   X'01'               LU TYPE 1
.*NLUP2C EQU   X'02'               LU TYPE 2
.*NLUP3C EQU   X'03'               LU TYPE 3
BINLUP4C EQU   X'04'               LU TYPE 4
BINLUP6C EQU   X'06'               LU TYPE 6
.*
BINDFLAG EQU   BINLUP+1,1,C'X'  OPTION FLAGS                    GP04234
BINSEDS  EQU   X'80'         DEVICE ACCEPTS EXTENDED DATA STREAMS
BINSPRIR EQU   BINLUP+6,1,C'X'  PRIMARY SIZE - ROWS
BINSPRIC EQU   BINLUP+7,1,C'X'  PRIMARY SIZE - COLUMNS
BINSALTR EQU   BINLUP+8,1,C'X'  ALTERNATE SIZE - ROWS
BINSALTC EQU   BINLUP+9,1,C'X'  ALTERNATE SIZE - COLUMNS
BINPSFX  EQU   X'7E'         FIXED SCREEN SIZE
BINPSZRC EQU   X'7F'         VARIABLE SCREEN SIZE
BINDSIZE EQU   *-ISTDBIND    MODE TABLE ENTRY SIZE -8            88213
BINRU1K  EQU   X'87'         BINRUSZ 8*2**7
.MEND    MEND
./ ADD NAME=MVSSMDE
         MACRO ,
         MVSSMDE ,
.**********************************************************************
.*                                                                    *
.*   LOCAL REPLACEMENT FOR USE UNDER MVS 3.8J (W/HERCULES)            *
.*                                                                    *
.**********************************************************************
SMDE     DSECT ,             MAP OF DESERV MEMBER RETURN
SMDEBASE DS   0CL44          BASIC SECTION
SMDEHDR  DS   0CL16          HEADER SECTION
SMDEID   DS   CL8            'IGWSMDE'
SMDELEN  DS   F              TOTAL ENTRY LENGTH, ALL SECTIONS
SMDELVL  DS   B              VERSION
SMDELVAL EQU  X'01'          VERSION
         DS   XL3
SMDELTYP DS   AL1            SOURCE TYPE
SMLTC370 EQU  X'03'            C370LIB
SMLTHFS  EQU  X'02'            HFS FILE TYPE
SMLTPDSE EQU  X'01'            PDSE LIBRARY TYPE
SMLTPDS  EQU  X'00'            PDS LIBRARY TYPE
SMFG     DS   B              FLAGS
SMFGALI  EQU  X'80'            ALIAS ENTRY
SMFGLMOD EQU  X'40'            PROGRAM ENTRY
SMFGSDCB EQU  X'20'            SYSTEM DCB
         DS   XL2
         DS   0CL5,X         'MLTK' - FAKE MTTR
SMDEMLTK DS   0XL4
SMDEMLT  DS   XL3            MLT
SMDECNCT DS   X              CONCAT
SMLF     DS   X              LIB FLAG
SMLFTASK EQU  X'02'            TASKLIB
SMLFLINK EQU  X'01'            LNKLST
SMLFPRIV EQU  X'00'            PRIVATE
SMDENMOF DS   XL2            NAME OFFSET
SMDEUSLN DS   0XL2           USER DATA LENGTH
SMDEPMLN DS   XL2            PMAR LENGTHS
SMDEUSOF DS   0XL2           USER DATA OFFSET
SMDEPMOF DS   XL2            PMAR OFFSET
SMDETKLN DS   XL2            TOKEN LENGTH
SMDETKOF DS   XL2            TOKEN OFFSET
SMDEPNOF DS   XL2            PRIMARY NAME OFFSET
SMDENLS# DS   XL2            NOTE LIST COUNT
         DS   XL4              SPARE
.*
SMDESECS DS   0X             ENTRY SECTIONS
.*
SMDENAME DSECT ,             NAME DESCRIPTOR
SMDENMLN DS   XL2            LENGTH OF NAME
SMDENMVL DS   0C             ENTRY NAME (LENGTH >= 8)
.*
SMDENLST DSECT ,             NOTE LIST DATA
SMDENLNT DS   0XL4           TTR#
SMDENLRL DS   XL3            TTR
SMDENLR# DS   X
.*
SMDETOKN DSECT ,
SMDETKID DS   XL4            CONNECT ID
SMDETKNO DS   XL4            ITEM NUMBER
SMDETKFT DS   XL24           FILE TOKEN
.*
SMDEPNAM DSECT ,             PRIMARY NAME
SMDEPNLN DS   XL2            LENGTH
SMDEPNVL DS   0C             NAME
.*
         MEND  ,
./ ADD NAME=OLTCB
*%GOTO OLTCBPLS;                       /*                        S21903
         MACRO
         OLTCB &DSECT=YES,&EQUATES=NO,&POINTER=NO,&CONFG=NO
.* CHANGE ACTIVITY
.* A000000-999999                                              @G36XRXV
.* C165500,626000,626500,634000                                @G36XRXV
*
*        ON-LINE TEST CONTROL BLOCK
*
*        STATUS = VERSION 10.0                                 @Y17XAXU
*
*CHANGE ACTIVITY AS FOLLOWS:
TOTODISP EQU   8
         AIF   ('&POINTER' NE 'YES').BYP001
TOTOBPTR DSECT
*
TOTELKEY DS    C .           OLTCB QUEUE ELEMENT KEY
TOTELQCB DS    AL3 .         ADDRESS OF OLTCB QCB
         DS    C .
TOTELLNK DS    AL3 .         OLTCB QUEUE ELEMENT LINK FIELD
*
         AGO   .BYPASS
.BYP001  ANOP
         AIF   ('&DSECT' EQ 'NO').BYPASS
TOTOLTCB DSECT
         AGO   .BYPASS1
.BYPASS  ANOP
TOTOLTCB DS    0F
.BYPASS1 ANOP
*
*              SECTION CONTROL TABLE MAPPING
*
$SCTTBLE DS    0F
$ERRLPCT DS    H .           LOOP ON ERROR COUNT
*
$TESTOPT DS    C .           TEST OPTION FIELD
*
$NOPRT   EQU   X'04' .            NO PRINT OPTION FLAG
$INDEFLP EQU   X'02' .            INDEFINITE ERROR LOOP FLAG
$FSTCOMM EQU   X'01' .            FIRST ERROR COMMUNICATION FLAG
*
$ERROPT  DS    C .           ERROR AND OPTION FIELD
*
$TESTERR EQU   X'80' .            TEST ERROR FLAG
$ASTERIK EQU   X'40' .            PRINT ASTERIK ON TERMINATE MSG FLAG
$CATERR  EQU   X'20' .            CATASTROPHIC ERROR FLAG
$ALTPRNT EQU   X'10' .            ALTERNATE PRINTER OPTION FLAG
$NOCNTRL EQU   X'08' .            NO CONTROL PRINT OPTION FLAG
$NERRPRT EQU   X'04' .            NO ERROR PRINT OPTION FLAG
$LOOPERR EQU   X'02' .            LOOP ON ERROR OPTION FLAG
$LOOPTST EQU   X'01' .            LOOP ON TEST ENTRY OPTION FLAG
*
$RT0108  DS    C .           ROUTINE MASK 1 THRU 8
$RT0916  DS    C .           ROUTINE MASK 9 THRU 16
$DRIVER  DS    C .           DRIVER IDENTIFICATION
*
$TOTE    EQU   X'8A' .            TOTE ID                      @Y17XAXU
*
$SPARE1  DS    C .           UNUSED
$TSSSYM  DS    H .           RESERVED FOR TSS
$PDEVFLG DS    C .           PRIMARY DEVICE FLAGS
*
$FPMOLD  EQU   X'80' .            FILE PROTECT FLAG
$EXFILPT EQU   X'40' .            ADDITIONAL FILE PROTECT FLAG
$TSSSYS1 EQU   X'20' .            RESERVED FOR TSS
$LASTDEV EQU   X'10' .            LAST DEVICE OF SUBSYSTEM FLAG
*        EQU   X'08' .            SPARE
$TERMNDX EQU   X'04' .            RESERVED FOR TSS
$PATHDEF EQU   X'02' .            RESERVED FOR TSS
$LASTSUB EQU   X'01' .            LAST DEVICE OF LAST SUBSYSTEM FLAG
*
$CDSFLGS DS    C .           DEVICE FLAGS FROM CDS FLAG BYTE
*
$FPM     EQU   X'80' .            FILE PROTECT FLAG
$SHARED  EQU   X'40' .            SHARED DEVICE FLAG
$CEVOL   EQU   X'20' .            CE VOLUME FLAG
$EXTINTC EQU   X'10' .            DEV ADDR ASSOCIATED WITH EXT FLAG
$SYMNAME EQU   X'08' .            SYMBOLIC NAME FLAG
$TWOCHSW EQU   X'04' .            TWO CHANNEL SWITCH FLAG
$CUSTSYM EQU   X'02' .            CUSTOMER ASSIGNED SYMBOLIC
*                                   NAME FLAG
$COMMCN  EQU   X'01' .            LINE CONNECTION REQUIRED FLAG
*
$PDEVADR DS    F .           PRIMARY DEVICE ADDRESS
$PDEVDSC DS    F .           PRIMARY DEVICE DESCRIPTORS
$CDS8T19 DS    3F .          PRIMARY DEVICE CDS BYTES 8 THRU 19
$RMSKCNT DS    C .           ROUTINE MASK COUNT LENGTH
$EXECFLG DS    C .           EXECUTIVE PROGRAM FLAGS
*
$CECCMIN EQU   X'80' .            REPLY IN TO OUTSTANDING CECOM FLAG
$MULTDEV EQU   X'40' .            MORE THAN ONE DEVICE ENTRY FLAG
$RTNSLCT EQU   X'20' .            OPERATOR MADE ROUTINE SELECTION FLAG
$ERRCNT  EQU   X'10' .            OPERATOR SPECIFIED ERROR LOOP COUNT
$LSTPDEV EQU   X'08' .            DON'T ASSIGN MORE PRIMARY DEVICES FLG
$CLEANUP EQU   X'04' .            SECTION ENTERED FOR CLEANUP FLAG
$CTRLMOD EQU   X'02' .            CONTROL MODE AVAILABLE FLAG
$QSCTMOD EQU   X'01' .            QUIESCENT MODE AVAILABLE FLAG
*
$OLTSIZE DS    H .           OLT REGION SIZE
$OLTFLGS DS    C .           OLT FUNCTIONAL FLAGS
*
$MANINTV EQU   X'80' .            MANUAL INTERVENTION ROUTINE FLAG
$CLEANRT EQU   X'40' .            OLT HAS CLEANUP ROUTINE FLAG
$RETAIN  EQU   X'20' .            RETAIN IS ACTIVE FLAG
$CONTCB  EQU   X'10' .            CONTINGENT CONNECTION BROKEN FLAG
$RETCODE EQU   X'08' .
$TRACE   EQU   X'04' .
$LASTSEC EQU   X'02' .            LAST SECTION SCHEDULED FLAG
*
         DS    C .           UNUSED
$TOTFLG1 DS    C .           TOTE 1ST FLAG BYTE
*
$LINESHR EQU   X'80' .            LINE CAN BE SHARED FLAG
$TDATBLK EQU   X'40' .            TOTE MESSAGE BLOCKING FLAG
$TERMSEC EQU   X'20'              TRM REQUESTS TEST IN BACKUP    S22024
*                                   MODE                         S22024
$CTEQTT  EQU   X'10'              CONTROL TERMINAL AND TEST      S22024
*                                   TERMINAL ARE ON THE SAME LINES22024
*
$TOTFLG2 DS    C .           TOTE 2ND FLAG BYTE
$R017024 DS    C .           ROUTINE MASK 017 THRU 024
$R025032 DS    C .           ROUTINE MASK 025 THRU 032
$R033040 DS    C .           ROUTINE MASK 033 THRU 040
$R041048 DS    C .           ROUTINE MASK 041 THRU 048
$R049056 DS    C .           ROUTINE MASK 049 THRU 056
$R057064 DS    C .           ROUTINE MASK 057 THRU 064
$R065072 DS    C .           ROUTINE MASK 065 THRU 072
$R073080 DS    C .           ROUTINE MASK 073 THRU 080
$R081088 DS    C .           ROUTINE MASK 081 THRU 088
$R089096 DS    C .           ROUTINE MASK 089 THRU 096
$R097104 DS    C .           ROUTINE MASK 097 THRU 104
$R105112 DS    C .           ROUTINE MASK 105  THRU 112
$R113120 DS    C .           ROUTINE MASK 113  THRU 120
$R121128 DS    C .           ROUTINE MASK 121  THRU 128
$R129136 DS    C .           ROUTINE MASK 129  THRU 136
$R137144 DS    C .           ROUTINE MASK 137  THRU 144
$R145152 DS    C .           ROUTINE MASK 145  THRU 152
$R153160 DS    C .           ROUTINE MASK 153  THRU 160
$R161168 DS    C .           ROUTINE MASK 161  THRU 168
$R169176 DS    C .           ROUTINE MASK 169  THRU 176
$R177184 DS    C .           ROUTINE MASK 177  THRU 184
$R185192 DS    C .           ROUTINE MASK 185  THRU 192
$R193200 DS    C .           ROUTINE MASK 193  THRU 200
$R201208 DS    C .           ROUTINE MASK 201  THRU 208
$R209216 DS    C .           ROUTINE MASK 209  THRU 216
$R217224 DS    C .           ROUTINE MASK 217  THRU 224
$R225232 DS    C .           ROUTINE MASK 225  THRU 232
$R233240 DS    C .           ROUTINE MASK 233  THRU 240
$R241248 DS    C .           ROUTINE MASK 241  THRU 248
$R249255 DS    C .           ROUTINE MASK 249  THRU 255
$RETMASK DS    C .           RETURN CODE MASK
         DS    C .           SPARE
         DS    CL6           SPARE                               S05331
$MSGIDAC DS    CL2           ACTIVE OLT ID                       S05331
$TABLE   DS    F .           ADDR OF BRANCH TABLE
$PASS    DS    F .           ADDR OF PASSON AREA
$EXT     DS    F .           ADDRESS OF EXTERNAL DATA
         DS    6F .          SCT EXPANSION AREA
*
*
TOTSMGRT DS    A .           SERVICE MANAGER RETURN SAVE
TOTSAVE1 DS    18F .         OLT SUBTASK 1ST SAVE AREA
TOTSAVE2 DS    18F .         OLT SUBTASK 2ND SAVE AREA
TOTSAVE3 DS    18F .         OLT SUBTASK 3RD SAVE AREA
TOTSAVE4 DS    18F .         OLT SUBTASK 4TH SAVE AREA
TOTSAVE5 DS    18F .         OLT SUBTASK 5TH SAVE AREA
TOTSAVE6 DS    18F .         OLT SUBTASK 6TH SAVE AREA         @Y17XAXU
TOTWOSV1 DS    F .           IEDQWO LEV 1 SAVE AREA            @Y17XAXU
TOTWOSV2 DS    F             IEDQWO LEV 2 SAVE AREA            @Y17XAXU
TOTWOSV3 DS    F .           IEDQWO LEV 3 SAVE AREA            @Y17XAXU
TOTWOSV4 DS    F .           IEDQWO LEV 4 SAVE AREA            @Y17XAXU
TOTOLTPT EQU   TOTSAVE5+44
TOTOLTEP EQU   TOTSAVE5+64
TOTSVEND DS    0C .               END OF TOTE SAVE AREAS
*
TOTBKASN DS    H .           MAIN STORAGE BLOCKS ASSIGNED TO THIS OLT
TOTBKRQD DS    H .           MAIN STORAGE BLOCKS REQUIRED BY THIS OLT
*
TOTMMSPC DS    F .           OLT UNUSED MAIN STORAGE SPACE
*                                                              @Y17XAXU
*              SOURCE TERMINAL ENTRY                           @Y17XAXU
*                                                              @Y17XAXU
TOTSRENT DS    0F .          SOURCE TERMINAL ENTRY             @Y17XAXU
TOTSROFF DS    H .                OFFSET TO SOURCE TNT ENTRY   @Y17XAXU
         DS    H .                RESERVED                     @Y17XAXU
TOTSRLCB DS    F .                SOURCE LCB ADDRESS           @Y17XAXU
*
*              CONTROL TERMINAL ENTRY
*
TOTCTENT DS    0F .          CONTROL TERMINAL ENTRY
TOTCTUCB DS    AL2 .              C.T. UCB ADDRESS
TOTCTOFF DS    H .                OFFSET TO C.T. TNT ENTRY     @Y17XAXU
*                                 (DUMMY)                      @Y17XAXU
TOTCROFF DS    H .                OFFSET TO C.T. TNT ENTRY
*                                 (REAL)                       @Y17XAXU
TOTCRSID DS    H .                NETWORK ADDRESS OF C.T.      @Y17XAXU
TOTCTRLN DS    C .                C.T. RELATIVE LINE NUMBER
TOTCTLCB DS    CL3 .              C.T. LCB ADDRESS
TOTCTTNT DS    F .                C.T. TERMINAL NAME TABLE ENTRY
*                                   ADDRESS (DUMMY ENTRY)
TOTCRTNT DS    F .                C.T. TERMINAL NAME TABLE ENTRY
*                                   ADDRESS (REAL ENTRY)
TOTCTTLN DS    H                  LENGTH OF CT TTE AREA
TOTCTFLG DS    C                  CONTROL TERMINAL FLAGS
TOTCTASN EQU   X'80'              DUMMY ENTRY ASSIGNED           S22024
TOTCTORN EQU   X'40'              CONTROL TERMINAL ON 3705       S22024
TOTCTSWD EQU   X'01'              DIAL CONTROL TERMINAL          S22024
TOTCTEND DS    0C .               END OF BASIC C.T. AREA       @Y17XAXU
TOTCTRNL DS    CL8                GROUP NAME FOR CT LINE         S22024
TOTCTNAM DS    CL9                CONTROL TERM NAME IN EBCDIC    S22024
TOTCTDFL DS    C                  CONTROL TERMINAL INITIAL CONDITIONS
TOTCTTRM EQU   X'80'                   TERMINAL DEVICE FLAG
TOTCTLIN EQU   X'40'                   LINE ADDRESS FLAG
TOTCTGP  EQU   X'10'                   GENERAL POLL INITIALLY ACTIVE
*                                        ON TEST LINE
TOTCTLST EQU   X'08'                   CT INITIALLY STOPPED
TOTCTHD  EQU   X'04'                   CT INITIALLY HELD
TOTCTIAC EQU   X'02'                   CT INVITATION LIST ENTRY
*                                        INITIALLY INACTIVE
*
         DS    CL3           RESERVED                          @Y17XAXU
TOTCUTST DS    0F            CONTROL INFO FOR $CUTEST MACRO
TOTCUFLG DS    1C            $CUTEST FLAGS
*
TOTCUDON EQU   X'80'              CUTEST ISSUED
TOTCUCUP EQU   X'40'              CUTEST CLEAN UP REQUIRED
*
TOTCU#AD DS    1C            $CUTEST NUMBER OF CONTIGUOUS ADDRESSES
TOTCUCUU DS    2C            $CUTEST STARTING ADDRESS
*
TOTCUSAV DS    1F            $CUTEST SAVE AREA
*
TOTCURS1 DS    1C            $CUTEST CODE PARAMETER
TOTCURS2 DS    1C            $CUTEST HEX CHANNEL ID
TOTCURS3 DS    1C            $CUTEST RESERVED BYTE 3 CODE PARAMETER
TOTCURS4 DS    1C            $CUTEST RESERVED BYTE 4 CODE PARAMETER
*
TOTWOOPC DS    6F            IEDQWO OPERATOR CONTROL PARM LIST  SA41602
TOTPLIST DS    0F            OPERATOR CONTROL PARAMETER LIST     S22024
TOTOKEY  DS    C                  KEY                            S22024
TOTOQCBA DS    CL3                OP CONTROL QCB ADDRESS         S22024
TOTOPRI  DS    C                  PRIORITY                       S22024
TOTOLINK DS    CL3                LINK FIELD                     S22024
TOTOVBCD DS    C                  VERB CODE                      S22024
TOTOELNG DS    C                  LENGTH OF ELEMENT              S22024
TOTORLN  DS    C                  RELATIVE LINE NUMBER           S22024
TOTORTCD DS    C                  RETURN CODE                    S22024
TOTOFLG  DS    0FL1               FLAG BYTE                    @YM08136
TOTOATC  EQU   X'80'              USE ALTERATE TTCIN           @YM08136
TOTOECBA DS    F                  ECB ADDRESS                    S22024
TOTOLADR DS    CL8                TERMINAL NAME OR LINE ADDRESS  S22024
TOTOALTT DS    H                  ALTERNATE TTCIN
         DS    CL38               UNUSED                       @YM08136
TOTOPCLN DS    A             OP CONTROL ECB ADDRESS FOR CLEANUP  S22024
TOTUSCOR DS    F             CORE CURRENTLY IN USE BY OLT        S22024
*              ALTERNATE PRINTER ENTRY
*
TOTAPENT DS    0F .          ALTERNATE PRINTER ENTRY
TOTAPUCB DS    AL2 .              A.P. UCB ADDRESS
TOTAPOFF DS    H .                OFFSET TO A.P. TNT ENTRY     @Y17XAXU
*                                 (DUMMY ENTRY)                @Y17XAXU
TOTAROFF DS    H .                OFFSET TO A.P. TNT ENTRY
*                                 (REAL ENTRY)                 @Y17XAXU
TOTARSID DS    H .                NETWORK ADDRESS OF A.P.      @Y17XAXU
TOTAPRLN DS    C .                A.P. RELATIVE LINE NUMBER
TOTAPLCB DS    CL3 .              A.P. LCB ADDRESS
TOTAPTNT DS    F .                A.P. TERMINAL NAME TABLE ENTRY
*                                   ADDRESS (DUMMY ENTRY)
TOTARTNT DS    F                  A.P. TERMINAL NAME TABLE ENTRY
*                                   ADDRESS ( REAL ENTRY)
TOTAPTLN DS    H                  LENGTH OF AP TTE AREA
TOTAPFLG DS    C                  ALTERNATE PRINTER FLAGS
TOTAPASN EQU   X'80'              DUMMY ENTRY ASSIGNED           S22024
TOTAPORN EQU   X'40'              AP ON 3705                     S22024
TOTAPSWD EQU   X'01'              DIAL ALTERNATE PRINTER         S22024
TOTAPEND DS    0C .               END OF BASIC AP AREA         @Y17XAXU
TOTAPRNL DS    CL8                GROUP NAME FOR AP LINE         S22024
TOTAPDFL DS    C                  ALTERNATE PRINTER INITIAL CONDITIONS
*
TOTAPTER EQU   X'80'                   TERMINAL DEVICE FLAG
TOTAPLIN EQU   X'40'                   LINE ADDRESS FLAG
TOTAPGP  EQU   X'10'                   GENERAL POLL INITIALLY ACTIVE
*                                        ON TEST LINE
TOTAPLST EQU   X'08'                   A.P. INITIALLY STOPPED
TOTAPHD  EQU   X'04'                   A.P. INITIALLY HELD
TOTAPIAC EQU   X'02'                   A.P. INVITATION LIST ENTRY
*                                        INITIALLY INACTIVE
         DS    F             UNUSED                            @ZM47554
*
TOTAPDCB DS    F             LOCAL PRINTER DCB ADDRESS           S22024
TOTPDECB DS    5F .          LOCAL PRINTER DECB
*
TOTPARML DS    F             ADDRESS OF PARAMETER LIST FOR      SA41612
*                              MACRO SERVICE CALL               SA41612
*
TOTOLTMQ DS    A .           SUBTASK MESSAGE QUEUE
TOTOTECB DS    F .           TOTE SUBTASK ECB
*
TOTRESSV DS    F .           POINTER TO MOTHER TASK SAVE AREA
TOTTCBAD DS    F .           SUBTASK TCB ADDRESS
TOTCMPCD DS    F .           SUBTASK COMPLETION CODE
*
TOTOLTPL DS    3F .          OLT INPUT PARAMETER LIST
TOT#TBLE EQU   TOTOLTPL+8 .  BRANCH TABLE ADDRESS
*
TOTWTORP DS    0F .          WTOR PARM LIST FOR OPERATOR COMMUNICATION
TOTINCNT DS    C .                REPLY BYTE COUNT
TOTINADR DS    3C .               REPLY BUFFER ADDRESS
TOTINECB DS    F .                REPLY ECB ADDRESS
*
TOTWTOPL DS    0F .          WTO & WTOR PL FOR OPERATOR COMMUNICATION
         DS    C .
TOTOTCNT DS    C .                OUT MESSAGE COUNT
         DS    H .
TOTOTBUF DS    CL84          OUTPUT AREA
TOTINBUF DS    CL80          REPLY BUFFER
*
TOTOLTID DS    H .           TOTE OLT IDENTIFICATION
TOTRTCOD DS    C .           SERVICE MODULE RETURN CODE
         DS    C .           UNUSED
*
TOTPLNKQ DS    0F .          PLINK MODULE QUEUE
TOTPLFWD DS    F .                QUEUE FORWARD POINTER
TOTPLBKW DS    F .                QUEUE BACKWARD POINTER
         DS    F .           RESERVED                          @Y17XAX6
TOTWKSPC DS    16D .         TOTE WORK AREA
TOTWKEND DS    0C .               END OF TOTE WORK AREA
TOTWKLNT EQU   TOTWKEND-TOTWKSPC .     LENGTH OF TOTE WORKAREA
         DS    5F .          UNUSED
TOTAVTPT DS    F .           ADDRESS OF AVT
TOTSTAE  DS    F             ADDRESS OF STAE EXIT ROUTINE        S22024
TOTRESPL DS    F .           ADDRESS OF TOTE RESIDENT PARAMETER LIST
TOTFLG01 DS    C .           TOTE 1ST FLAG BYTE  (ABNORMAL)    @G36XRXV
TOTCLNST EQU   X'02'         CLEANUP STARTED                   @YM08158
TOTCLNED EQU   X'01'         CLEANUP ENDED                     @YM08158
*
TOTFINAL EQU   X'80'              FINAL MESSAGE INDICATOR        S05331
TOTCONFG EQU   X'40'              CONFIGURATOR RUN
TOTIPLCU EQU   X'20'              FORCED CLEANUP FROM IPL        S05331
TOTEXIT  EQU   X'10'              IEDQWO CONTROL FLOW FLAG     @Y17XAXU
TOTAPTST EQU   X'08'              AP ON TEST LINE              @Y17XAUU
TOTPRMPT EQU   X'04'              PROMPTER RUN                   S22024
*
TOTFLG02 DS    C .           TOTE 2ND FLAG BYTE
*
TOTTTSPE EQU   X'80' .            TEST SESSION PENDING END     @Y17XAXU
TOTTSST  EQU   X'40' .            CT/AP LINE IN TEST MODE      @Y17XAUU
TOTDEV0X EQU   X'20'              TEST DEVICE ON 270X            S22024
TOTOLTRQ EQU   X'10'              ONLINE TEST REQUEST FLAG       S22024
TOTCHKSZ EQU   X'08'              UPDATE SUBTASK STORAGE         S22024
*                                   ALLOCATION FLAG              S22024
TOTCONMD EQU   X'04'              CALL TOTE CONCENTRATOR MODULE SA41597
*                                   FOR INITIAL STATUS SET UP   SA41597
TOTCONCU EQU   X'02'              CONCENTRATOR CLEAN UP REQUIREDSA41597
TOTDEVRN EQU   X'01'              TEST DEVICE ON 3704/3705       S22024
*
TOTFLG03 DS    C .           TOTE 3RD FLAG BYTE
*
TOTAPOER EQU   X'80' .            ALTERNATE PRINTER OPTION ERROR FLAG
TOTTDFER EQU   X'40' .            TEST DEVICE FIELD ERROR FLAG
TOTTSTER EQU   X'20' .            TEST ID FIELD ERROR FLAG
TOTOPTER EQU   X'10' .            OPTION FIELD ERROR FLAG
TOTIMNCP EQU   X'08' .            TEMPORARY NO CONT PRINT FLAG
TOTTSINC EQU   X'04' .            INCLUSIVE TEST ID ENTRY FLAG
TOTREPEX EQU   X'02'              REPLY EXPECTED FLAG           SA41613
*
TOTFLG04 DS    C .           TOTE 4TH FLAG BYTE
TOTPRCTF EQU   X'08'         COUNTERFEIT PRIMARY TEST DEVICE   @YM08407
TOTSCCTF EQU   X'04'         COUNTERFEIT SECONDARY TEST DEVICE @YM08407
*
TOTNUMDV EQU   X'80' .            NUMERIC TRM ENTRY FLAG
TOTDTCHD EQU   X'40' .            SUBTASK ALREADY DETACHED FLAG
TOTCLOSE EQU   X'20' .            TCAM CLOSEDOWN IN PROGRESS FLAG
TOTTTSWT EQU   X'01' .            TEST TERMINAL LINE SWITCHED FLAG
*
TOTFLG05 DS    C .           TOTE 5TH FLAG BYTE
*
TOTPRINT EQU   X'80' .            ACCESS METHOD PRINT FLAG
TOTCECOM EQU   X'40' .            ACCESS METHOD CECOM FLAG
TOTREPLY EQU   X'20' .            ACCESS METHOD CECOM WITH REPLY FLAG
TOTSRCE  EQU   X'10' .            SEND MSG TO SOURCE TERMINAL  @Y17XAXU
TOTSRCON EQU   X'08' .            TRM ENTERED FROM SYSCON      @Y17XAXU
TOTTMOUT EQU   X'04' .            WAIT TIMEOUT FLAG
TOTEXIOF EQU   X'02' .            ACCESS METHOD EXIO FLAG
TOTNDMSG EQU   X'01' .            SEND CANCEL OR TERMINATE MESSAGE FLAG
*
TOTFLG06 DS    C .           TOTE 6TH FLAG BYTE
*
TOTOTERM EQU   X'80' .            SECTION TERMINATE FLAG
TOTCBOPN EQU   X'40'              CANCEL BEFORE OPEN
TOTWACAN EQU   X'20' .            CANCEL REQUEST PENDING
TOTNCMFG EQU   X'10' .            NON-CONCURRENT MODE FLAG
TOTABEND EQU   X'08' .            OLT HAS ABENDED FLAG
TOTCANCL EQU   X'04' .            CANCEL TESTING FLAG
TOTOTACT EQU   X'02' .            OLT ACTIVE FLAG
TOTNPERR EQU   X'01' .            NO PERMANENT ERROR FLAG
*
TOTFLG07 DS    C .           TOTE 7TH FLAG BYTE
*
TOTPRIEX EQU   X'80' .            PRIMARY DEVICE FOR EXIO/WAITIO FLAG
TOTSECEX EQU   X'40' .            SECONDARY DEV  FOR EXIO/WAITIO FLAG
TOTMSCEC EQU   X'08' .            TOTE MESSAGE SOURCE FLAG - CECOM
TOTMSREP EQU   X'04' .            TOTE MESSAGE SOURCE FLAG - CECOM
TOTMSPRT EQU   X'02' .            TOTE MESSAGE SOURCE FLAG - CECOM
TOTMSSRC EQU   X'01' .            TOTE MESSAGE SOURCE FLAG     @Y17XAXU
*
TOTFLG08 DS    C .           TOTE 8TH FLAG BYTE
*
*                                 BITS 0-3 ARE DPRINT FORMS CNTRL FLAGS
*                                 BITS 4-7 ARE DPRINT LEVEL CNTRL FLAGS
*
*
TOTFLG09 DS    C .           TOTE 9TH FLAG BYTE
*
TOTAPCON EQU   X'80' .            PRINTER = SYSTEM CONSOLE FLAG
TOTAPOUT EQU   X'40' .            PRINTER = SYSTEM PRINTER FLAG
TOTCTCON EQU   X'20' .            CONTROL TERMINAL = SYS CONSOLE FLAG
TOTAPTRM EQU   X'10' .            PRINTER = TERMINAL FLAG
TOTNOBRK EQU   X'08'              NO BREAK OPTION SPECIFIED      S22024
TOTLNCON EQU   X'04'              LINE CONNECTION ALREADY DONE   S22024
TOTPRECT EQU   X'02' .            NO ALTERNATE PRINTER FLAG
*                                   (OR CT = AP)                 S05331
TOTMACFT EQU   X'01'              UNSUPPORTED MACRO FUNCTION FLAG
*
TOTFLG10 DS    C .           TOTE 10TH FLAG BYTE
*
TOTTERMS EQU   X'80' .            TEST DEVICES = TERMINALS FLAG
TOTTNTRQ EQU   X'08' .            DUMMY TNT ENTRY REQUEST FLAG
TOTOLTED EQU   X'04' .            ON-LINE TEST ENDED FLAG
TOTOLTWT EQU   X'02' .            ON-LINE TEST WAITING FLAG
TOTOLTRS EQU   X'01' .            ON-LINE TEST RESTART FLAG
*
TOTTTBEL DS    CL1           TERMINAL NAME TABLE ENTRY
*                              NAME LENGTH
         DS    CL1           UNUSED
         AIF   ('&CONFG' EQ 'YES').CNFBYP
TOTEXT   DS    14F .         EXTERNAL DATA BUFFER
TOTPASS  DS    16F .         PASSON DATA BUFFER
TOTTRMBF DS    0C .          TRM BUFFER FOR TRM ANALYSIS
TOTPRIBK DS    0F .          PRIMARY TEST DEVICE I/O CONTROL BLOCKS
TOTPRECB DS    F .           PRIMARY ECB
*
*              PRIMARY TEST DEVICE ENTRY
*
TOTPRENT DS    0F .          TOTE PRIMARY TEST DEVICE ENTRY
*
TOTPRUCB DS    AL2 .              PRIMARY DEVICE UCB ADDRESS
TOTPCOFF DS    H .                OFFSET TO PRIMARY DEVICE     @Y17XAXU
*                                 (DUMMY ENTRY)                @Y17XAXU
TOTPROFF DS    H .                OFFSET TO PRIMARY TNT ENTRY
*                                 (REAL ENTRY)                 @Y17XAXU
TOTPRSID DS    H .                NETWORK ADDRESS OF PRIMARY   @Y17XAXU
TOTPRRLN DS    C .                PRIMARY DEVICE RELATIVE
*                                   LINE NUMBER
TOTPRLCB DS    AL3 .              ADDRESS OF 3705 LCB          @Y17XAXU
TOTPDTNT DS    F .                PRIMARY TNT ENTRY ADDRESS    @Y17XAXU
*                                 (DUMMY ENTRY)                @Y17XAXU
TOTTNTPR DS    F                  PRIMARY TNT ENTRY ADDRESS    @Y17XAXU
*                                 (REAL ENTRY)                 @Y17XAXU
TOTPRLEN DS    H .                LENGTH OF PRIMARY TTE AREA   @Y17XAXU
TOTPRFLG DS    C .                PRIMARY FLAGS                @Y17XAXU
TOTPRTAS EQU   X'80' .            PRIMARY TNT ENTRY ASSIGNED   @Y17XAXU
TOTPRLU  EQU   X'40' .            LU TERMINAL                  @Y17XAXU
TOTPPRSC EQU   X'20' .            ON=PRIMARY                   @Y17XAX6
*                                 OFF=SECONDARY                @Y17XAX6
TOTPUNRD EQU   X'10' .            ON=UNREAD DATA               @Y17XAX6
*                                 OFF=NO UNREAD DATA           @Y17XAX6
TOTPREX  EQU   X'08' .            EXCEPTION RESPONSE           @Y17XAX6
TOTPRFME EQU   X'04' .            DEFINITE RESPONSE            @Y17XAX6
TOTPEXNM EQU   X'02' .            ON=EXPEDITED                 @Y17XAX6
*                                 OFF=NORMAL                   @Y17XAX6
         DS    C .                RESERVED                     @Y17XAXU
TOTPRQCB DS    F                  PRIMARY QCB ADDRESS            S22024
TOTPRCCW DS    F                  ADDRESS OF READ CCW FOR PRIMARYS22024
TOTPRBUF DS    F                  ADDRESS OF BUFFER CONTAINING   S22024
*                                   READ DATA FOR PRIMARY        S22024
*
*        PRIMARY DEVICE DATA BLOCKING FIELD
*
TOTPDTBF DS    A .           RESPONSE BUFFER ADDRESS
TOTPDTCT DS    H .           RESPONSE BUFFER SIZE
TOTPFLGS DS    BL1 .         FLAGS
         DS    CL1           UNUSED                            @ZM47554
TOTPRSN  DS    0F            PRIMARY SEQ NUMBER FIELD          @ZM47554
         DS    CL2           FLAGS                             @ZM47554
TOTPRSEQ DS    H             SEQUENCE NUMBER (FROM SNA TH)     @ZM47554
*                                                              @ZM47554
TOTPTECB DS    F .           PRIMARY TECB ADDRESS
TOTPRIOB DS    11F           PRIMARY IOB
TOTPRDCB DS    18F .         PRIMARY DCB
TOTPRDEB EQU   TOTPRDCB+44        PRIMARY DEB ADDRESS
*
TOTSCIBK DS    0F .          SECONDARY TEST DEVICE I/O CONTROL BLOCKS
TOTSCECB DS    F .           SECONDARY ECB
*
*              SECONDARY TEST DEVICE ENTRY
*
TOTSCENT DS    0F .          TOTE SECONDARY TEST DEVICE ENTRY
*
TOTSCUCB DS    AL2 .              SECONDARY DEVICE UCB ADDRESS
TOTNCOFF DS    H .                OFFSET TO SECONDARY TNT ENTRY@Y17XAXU
*                                 (DUMMY ENTRY)                @Y17XAXU
TOTSCOFF DS    H .                OFFSET TO SECONDARY TNT ENTRY
*                                 (REAL ENTRY)                 @Y17XAXU
TOTSRSID DS    H .                NETWORK ADDRESS OF SECONDARY @Y17XAXU
TOTSCRLN DS    C .                SECONDARY DEVICE RELATIVE
*                                   LINE NUMBER
TOTSCLCB DS    AL3 .              ADDRESS OF 3705 LCB          @Y17XAXU
TOTSDTNT DS    F .                SECONDARY TNT ENTRY ADDRESS  @Y17XAXU
*                                 (DUMMY ENTRY)                @Y17XAXU
TOTSRTNT DS    F .                SECONDARY TNT ENTRY ADDRESS  @Y17XAXU
*                                 (REAL ENTRY)                 @Y17XAXU
TOTSCLEN DS    H .                LENGTH OF SECONDARY TTE AREA @Y17XAXU
TOTSCFLG DS    C .                SECONDARY FLAGS              @Y17XAXU
TOTSCTAS EQU   X'80' .            SECONDARY TNT ENTRY ASSIGNED @Y17XAXU
TOTSCLU  EQU   X'40' .            LU DEVICE                    @Y17XAXU
TOTSPRSC EQU   X'20' .            ON=PRIMARY                   @Y17XAX6
*                                 OFF=SECONDARY                @Y17XAX6
TOTSUNRD EQU   X'10' .            ON=UNREAD DATA               @Y17XAX6
*                                 OFF=NO UNREAD DATA           @Y17XAX6
TOTSCEX  EQU   X'08' .            EXCEPTION RESPONSE           @Y17XAX6
TOTSCFME EQU   X'04' .            DEFINITE RESPONSE            @Y17XAX6
TOTSEXNM EQU   X'02' .            ON=EXPEDITED                 @Y17XAX6
*                                 OFF=NORMAL                   @Y17XAX6
         DS    C .                RESERVED                     @Y17XAXU
TOTSCQCB DS    F                  SECONDARY QCB ADDRESS          S22024
TOTSCCCW DS    F                  ADDRESS OF READ CCW FOR        S22024
*                                   SECONDARY TEST DEVICE        S22024
TOTSCBUF DS    F                  ADDRESS OF BUFFER CONTAINING   S22024
*                                   READ DATA FOR SECONDARY      S22024
*
*        SECONDARY DEVICE DATA BLOCKING FIELD
*
TOTSDTBF DS    A .           RESPONSE BUFFER ADDRESS
TOTSDTCT DS    H .           RESPONSE BUFFER SIZE
TOTSFLGS DS    BL1 .         FLAGS
         DS    CL1           UNUSED                            @ZM47554
TOTSCSN  DS    0F            SECONDARY SEQ NUMBER FIELD        @ZM47554
         DS    CL2           FLAGS                             @ZM47554
TOTSCSEQ DS    H             SEQUENCE NUMBER (FROM SNA TH)     @ZM47554
*                                                              @ZM47554
TOTSTECB DS    F .           SECONDARY TECB ADDRESS
TOTSCIOB DS    11F           SECONDARY IOB
TOTSCDCB DS    18F .         SECONDARY DCB ADDRESS
TOTSCDEB EQU   TOTSCDCB+44        SECONDARY DEB ADDRESS
*
TOTTRMND DS    0C .          END OF TRM BUFFER
*
TOTCROLT DS    CL8 .         CURRENT OLT I.D.
*  THE FOLLOWING EQUATES ARE USED BY THE 'INCLUSIVE' ROUTINE IN IEDQWE
TOTCRALP EQU   TOTCROLT+5
TOTCRTOO EQU   TOTCROLT+6
TOTONELT EQU   TOTCROLT+7
TOTCRFST EQU   TOTCROLT+8
TOTSECBL EQU   TOTCROLT+9
TOTONECU EQU   TOTCROLT+10
TOTCRSEC EQU   TOTCROLT+11
TOTSECBK EQU   TOTCROLT+12
TOTONEND EQU   TOTCROLT+13
TOTCRFLG EQU   TOTCROLT+15
TOTFTTIM EQU   X'80'              FIRST TIME SWITCH
TOTCLRFG EQU   X'00'              USED TO CLEAR FIRST  TIME SWITCH
TOTSAADR EQU   TOTCROLT+16
TOTOLTTB DS    10CL3 .       OLT I.D. TABLE
TOTOLTTE DS    0C .               END OF TABLE
*
TOTCONTB DS    10CL1         CONCENTRATOR INITIAL STATUS TABLE  SA41597
*                              FOR TEST DEVICES                 SA41597
TOTCONCT DS    CL1           CONCENTRATOR STATUS FOR CONTROL    SA41597
*                              TERMINAL                         SA41597
TOTCONAP DS    CL1           CONCENTRATOR STATUS FOR ALTERNATE  SA41597
*                              PRINTER                          SA41597
TOTCONND DS    0C            END OF TABLE                       SA41597
*                                                               SA41597
*        CONCENTRATOR INITIAL STATUS CONDITIONS                 SA41597
*                                                               SA41597
TOTCSTOP EQU   X'80'              CONCENTRATOR INITIALLY STOPPEDSA41597
TOTCHELD EQU   X'40'              CONCENTRATOR INITIALLY HELD   SA41597
TOTCINAC EQU   X'20'              CONCENTRATOR INITIALLY        SA41597
*                                   INACTIVE                    SA41597
TOTCSTRT EQU   X'E0'              NONE SET IF ORIGINALLY STARTEDSA41597
         DS    CL38          SPARE                              SA41597
TOTTDTBL DS    10F .         TOTE TEST DEVICE TABLE
TOTLETGO EQU   TOTTDTBL+36        LAST ENTRY POINTER
TOTTDEND DS    0F .               END OF TABLE
*
*              TEST DEVICE INITIAL CONDITIONS
*
TOTTDTRM EQU   X'80' .            TERMINAL DEVICE FLAG
TOTTDLIN EQU   X'40' .            LINE ADDRESS FLAG
TOTTDGRB EQU   X'20' .            TEST DEVICE GRABBED FLAG
TOTTDORN EQU   X'10'              TEST DEVICE ON A 3705          S22024
TOTTDLST EQU   X'08' .            TEST DEVICE INITIALLY STOPPED
TOTTDTHD EQU   X'04' .            TEST DEVICE INITIALLY HELD
TOTTDIAC EQU   X'02' .            TEST DEVICE INVITATION LIST
*                                   ENTRY INITIALLY INACTIVE
TOTTSWPM EQU   X'01'              A SWITCH HAS BEEN PERFORMED    Y06330
TOTTNIPL EQU   X'06'              NO IPL REQUIRED FOR 3705       S05331
*
*
*        WAITIO ECB LIST
*
TOTWECBA DS    A .           POINTER TO ECB FOR TEST DEVICE
TOTECBPT DS    A             POINTER TO SUBTASK ECB
*
TOTTLCNT DS    H .           TEST LOOP COUNT
         DS    CL2 .         RESERVED                          @Y17XAX6
         AGO   .EQUATES
.CNFBYP  ANOP
         DS    CL4 .         RESERVED                          @Y17XAX6
CDSWORK  DS    0D            CONFIGURATOR WORK AREA
CDSREC   DS    0CL256 .      CDS RECORD CREATION AREA
CDSUNIT  DS    CL4 .              UNIT ADDRESS
CDSMODEL DS    CL1 .              MODEL
CDSFEAT  DS    CL1 .              FEATURES
CDSCLASS DS    CL1 .              CLASS
CDSTYPE  DS    CL1 .              TYPE DEVICE
CDSBYTES DS    CL1 .              BYTE COUNT
CDSFLAGS DS    CL1 .              FLAGS
*
CDSFPMOD EQU   X'80' .                 FILE PROTECT MODE FLAG
CDSDVSHR EQU   X'40' .                 DEVICE SHARED WITH ANOTHER SYS
CDSFEVOL EQU   X'20' .                 F.E. VOLUME MOUNTED FLAG
CDSEXINT EQU   X'10' .                 EXTERNAL INTERRUPT POSSIBLE FLAG
CDSSYMNM EQU   X'08' .                 SYMBOLIC ADDRESSING FLAG
CDSTWOCH EQU   X'04' .                 TWO CHANNEL SWITCH FLAG
CDSCUSYM EQU   X'02' .                 CUSTOMER ASSIGNED SYMBOLIC NAME
CDSLCNCT EQU   X'01' .                 LINE CONNECTION REQUIRED
*
CDSSIGNL DS    CL2 .              EXTERNAL SIGNAL MASK
CDSNAME  DS    0CL8 .             SYMBOLIC (ALTERNATE MEMBER) NAME
CDSTCU   DS    CL2 .              OR      TCU FEATURES
CDSMISC  DS    CL3 .                      MISC
CDSRMASK DS    CL3 .                      SECTION RUN MASK
CDSFXARA DS    0CL4 .             EXTENDED FIXED AREA
CDSFXLEN DS    CL1 .                   LENGTH
CDSFXFLG DS    CL2 .                   FLAGS
*                                           TWO BYTE SET MODE
CDSSETMD EQU   X'80' .                      AUTOCALL FEATURE
CDSAUTCL EQU   X'40' .                      SWITCHED LINE
CDSMPNT  EQU   X'20' .                      NON-SWITCHED MULTIDROP LINE
CDSMDROP EQU   X'10' .                      BSC WORLD TRADE DATA SET
CDSWTBSC EQU   X'08' .
*
CDSLNCON DS    CL1                     LINE CONNECTION CMD SEQ CODE
CDSVAR   DS    0C    .            CDS VARIABLE FIELD
         ORG   CDSWORK+256
CDSINPUT DS    0CL80         INPUT TO UNIT CONFIGURATOR AREA
CDSTCUTY DS    CL4 .              TCU TYPE (EBCDIC)
CDSSYMBL DS    CL8 .              SYMBOLIC TERMINAL NAME (EBCDIC)
CDSTERM  DS    CL4 .              TERMINAL TYPE (EBCDIC)
CDSADAP  DS    CL1 .              ADAPTER TYPE
*
CDSIBM1  EQU   X'10' .                 IBM I
CDSIBM2  EQU   X'20' .                 IBM II
CDSIBMTY EQU   X'30'                   IBM TTY
CDSTTY1  EQU   X'40' .                 TTY I
CDSTTY2  EQU   X'50' .                 TTY II
CDSWTTY  EQU   X'60' .                 WTC TTY
CDSSDA1  EQU   X'70' .                 SDA I
CDSIBM3  EQU   X'80' .                 IBM III
CDSSDA2  EQU   X'90' .                 SDA II
*
CDSLINE  DS    CL1 .              LINE TYPE
*
CDSPTP   EQU   X'01' .                 LEASED POINT TO POINT
CDSMP    EQU   X'02' .                 LEASED MULTIPOINT
CDSSWTCH EQU   X'03' .                 SWITCHED WITHOUT AUTODIAL
CDSSWAUT EQU   X'04' .                 SWITCHED WITH AUTODIAL
CDSLOCAL EQU   X'05' .                 LOCAL
*
CDSCONN  DS    CL1 .              LINE CONNECTION CODE
*
CDSBYP   EQU   X'00' .                 BYPASS
CDSDISEN EQU   X'01' .                 DISABLE, ENABLE OR DIAL
CDSDSMI  EQU   X'02' .                 DISABLE, SETMODE, ENABLE OR DIAL
* .                                         FOR SDA I
CDSDSMIT EQU   X'03' .                 DISABLE, SETMODE, ENABLE OR DIAL
* .                                         FOR SDA II
CDSDSAD0 EQU   X'04' .                 DISABLE, SADZERO, ENABLE OR DIAL
CDSDSAD1 EQU   X'05' .                 DISABLE, SADONE,  ENABLE OR DIAL
CDSDSAD2 EQU   X'06' .                 DISABLE, SADTWO,  ENABLE OR DIAL
CDSDSAD3 EQU   X'07' .                 DISABLE, SADFOUR, ENABLE OR DIAL
*
CDS#POLL DS    CL1 .              NUMBER OF POLLING CHARACTERS (HEX)
CDSPOLL  DS    CL7 .              POLLING CHARACTERS
CDS#ADDR DS    CL1 .              NUMBER OF ADDRESSING CHARACTERS (HEX)
CDSADDR  DS    CL10 .             ADDRESSING CHARACTERS
         DS    CL1 .              UNUSED
CDS#DIAL DS    CL1 .              NUMBER OF DIAL DIGITS
CDSDIAL  DS    CL20 .             DIAL DIGITS
CDS#ID   DS    C .                CPU ID LENGTH
CDSCPUID DS    15C .              CPU ID
CDSCODE  DS    C .           ADAPTER LINE CODE
CDSCFLGS DS    CL1           RESERVED
CDSFNFLG DS    CL1 .              FUNCTION FLAGS
*
CDSADD   EQU   X'02' .                 ADD
CDSDEL   EQU   X'04' .                 DELETE
CDSCHNG  EQU   X'06' .                 CHANGE
CDSEXIBT EQU   X'08' .                 EXHIBIT
*
CDSRETFL DS    CL1 .              RETURN CODE
*
CDSNRML  EQU   X'00' .                 NORMAL RETURN
CDSINVLD EQU   X'01' .                 INVALID
*
CDSBLDL  DS    0CL40 .       BLDL LIST FOR CONFIG DIRECTORY
CDSMEMBR DS    CL8 .              MEMBER NAME
CDSTTRC  DS    CL3 .              CESD RELATIVE TTR
CDSTTRC4 DS    CL1 .              CESD RELATIVE TTR 4TH BYTE
CDSTTRD  DS    CL3 .              DATA RELATIVE TTR
CDSTTRD4 DS    CL1 .              DATA RELATIVE TTR 4TH BYTE
CDSTTRNS DS    CL4 .              RESERVED
CDSATTRB DS    CL2 .              ATTRIBUTES
CDSMAIN  DS    CL3 .              MAIN STORAGE REQUIREMENTS
CDSBLK1  DS    CL2 .              LENGTH OF FIRST BLOCK
CDSEPADR DS    CL3 .              ENTRY POINT ADDRESS
CDSTXBLK DS    CL3 .              FIRST TEXT BLOCK ORIGIN
CDSSSI   DS    CL7 .              CDS SSI
*
         DS    0D .
CDSCESD  DS    0CL56 .       CESD RECORD FOR CONFIG PDS
CDSCESID DS    CL1 .              CESD IDENTIFICATION
CDSCESPR DS    CL3 .              UNUSED
CDSESD01 DS    CL2 .              ESDID OF FIRST ESD
CDSCESCT DS    CL2 .              COUNT
CDSCESNM DS    CL8 .              MEMBER NAME
CDSCESTY DS    CL1 .              TYPE
CDSCESAD DS    CL3 .              ADDRESS
CDSCESGM DS    CL1 .              SEGMENT
CDSCESLN DS    CL3 .              ID AND LENGTH
CDSESD02 DS    CL16 .             SECOND ESD RECORD
CDSESD03 DS    CL16 .             THIRD ESD RECORD
*
CDSCNTL  DS    0CL20 .       CONTROL RECORD FOR CONFIG PDS
CDSCTLID DS    CL1 .              CNTROL IDENTIFICATION
CDSCTLSP DS    CL3 .              UNUSED
CDSCNT01 DS    CL2 .              # BYTES FOLLOWING CCW
CDSCNT02 DS    CL2 .              COUNT
CDSCCW   DS    CL8 .              CHANNEL CONTROL WORD
CDSCESDI DS    CL2 .              CESD ENTRY
CDSRECLN DS    CL2 .              LENGTH OF TEXT RECORD
CDSTTBLE DS    A .           TERMINAL TABLE ENTRY ADDRESS
CDSTINDX DS    H .           TERMNAME TABLE INDEX
         DS    CL142 .       RESERVED                          @Y17XAX6
.EQUATES ANOP
TOTWAITI DS    D             WAITIO TIME INTERVAL
TOTGRABP DS    F             CURRENT SECONDARY DEVICE POINTER
TOTAPNAM DS    CL8           ALTERNATE PRINTER NAME IN EBCDIC
TOTOLTEN DS    F             ENTRY POINT ADDRESS OF OLT
TOTWAWRK DS    20F .         IEDQWA WORK AREA                  @Y17XAXU
TOTWOWRK DS    35F           IEDQWO WORK SPACE                  SA41602
         DS    CL52          RESERVED FOR MAINTENANCE          @Y17XAXU
TOTSERV  DS    0CL454 .           START OF SERVICE ROUTINES    @Y17XAXU
*                                 WORK AREA                    @Y17XAXU
************************************************************** @Y17XAXU
*                                                            * @Y17XAXU
*        THE LABEL 'TOTSERV' DEFINES THE START OF THE SERVICE* @Y17XAXU
*        ROUTINE WORK AREA. IT'S PURPOSE IS TO PROVIDE       * @Y17XAXU
*        PRE TCAM 10.0 SERVICE ROUTINES A MEANS OF BEING     * @Y17XAXU
*        REENTRANT . MODIFIABLE DATA AREAS ARE MOVED TO THIS * @Y17XAXU
*        WORK SPACE. SERVICE MODULES WHICH USE THIS AREA     * @Y17XAXU
*        SHOULD DEFINE IN A DSECT FASHION (DO NOT INCLUDE A  * @Y17XAXU
*        DSECT STATEMENT) THEIR MODIFIABLE DATA AREAS. THE   * @Y17XAXU
*        MODIFIABLE AREA WILL BECOME A CONTINUATION OF THIS  * @Y17XAXU
*        DSECT (OLTCB) AND SHOULD BE PLACED IMMEDIATELY      * @Y17XAXU
*        BEHIND THE OLTCB MACRO STATEMENT.                   * @Y17XAXU
*                                                            * @Y17XAXU
************************************************************** @Y17XAXU
.MEND    ANOP
TOTOBEND DS    0F .          END OF OLTCB                    @Y17XAX6
         MEND   ,             */
 %OLTCBPLS:   ;
 /*                                                                   */
 /*      ON-LINE TEST CONTROL BLOCK FOR PLS MODULES                   */
 /*                                                                   */
 /*      STATUS = VERSION 10.0                                @Y17XAXU*/
 /*                                                                   */
         DECLARE
           1 TOTOLTCB BASED (OLTCBPTR) BDY(DWORD), /*     @Y17XAX6*/
 %IF PONTER^='YES' %THEN
   %GOTO BYP001;
             2 TOTOBPTR,
               3 TOTELKEY CHAR(1),                /* OLTCB QUEUE      */
                                                  /* ELEMENT KEY      */
               3 TOTELQCB PTR(24),                /* ADDRESS OF OLTCB */
                                                  /* QCB              */
               3 * CHAR(1),                       /* UNUSED           */
               3 TOTELLNK PTR(24),                /* OLTCB QUEUE      */
                                                  /*ELEMENT LINK FIELD*/
 /*                                                                   */
 /*            SECTION CONTROL TABLE MAPPING                          */
 /*                                                                   */
 %BYP001:   ;
             2 $SCTTBLE BDY(WORD),                /* SECTION CONTROL
                                                      TABLE   @Y17XAX6*/
               3 $ERRLPCT FIXED(15) BDY(HWORD),   /* LOOP ON ERROR
                                                      COUNT   @Y17XAX6*/
               3 $TESTOPT CHAR(1),      /* TEST OPTION FIELD @Y17XAX6*/
                 4 * BIT(5),                      /* UNUSED           */
                 4 $NOPRT BIT(1),                 /* X'04'- NO PRINT
                                            OPTION FLAG  @Y17XAX6*/
                 4 $INDEFLP BIT(1),               /* X'02'- INDEFINITE
                                           ERROR LOOP FLAG @Y17XAX6*/
                 4 $FSTCOMM BIT(1),               /* X'01'-FIRST ERROR
                                           COMMUNICATION FLAG @Y17XAX6*/
               3 $ERROPT CHAR(1),                 /* ERROR AND OPTION
                                                      FIELD  @Y17XAX6 */
                 4 $TESTERR BIT(1),      /* X'80'- TEST ERROR @Y17XAX6*/
                 4 $ASTERIK BIT(1),      /* X'40'- PRINT ASTERIK ON
                                          TERMINATE MSG FLAG @Y17XAX6 */
                 4 $CATERR BIT(1),       /* X'20'-CATASTROPHIC ERROR
                                          FLAG @Y17XAX6*/
                 4 $ALTPRNT BIT(1),       /* X'10'- ALTERNATE PRINTER
                                          OPTION FLAG   @Y17XAX6*/
                 4 $NOCNTRL BIT(1),       /* X'08'- NO CONTROL PRINT
                                           OPTION  @Y17XAX6*/
                 4 $NERRPRT BIT(1),       /* X'04'- NO ERROR PRINT
                                           OPTION FLAG @Y17XAX6*/
                 4 $LOOPERR BIT(1),       /* X'02'- LOOP ON ERROR
                                           OPTION FLAG @Y17XAX6*/
                 4 $LOOPTST BIT(1),       /* X'01'- LOOP ON TEST
                                          ENTRY OPTION FLAG @Y17XAX6*/
               3 $RT0108 CHAR(1) BDY(BYTE),       /* ROUTINE MASK 1
                                               THROUGH 8 @Y17XAX6     */
               3 $RT0916 CHAR(1),                 /* ROUTINE MASK 9
                                               THROUGH 16 @Y17XAX6*/
               3 $DRIVER CHAR(1),            /* DRIVER   @Y17XAX6*/
               3 $SPARE1 CHAR(1) BDY(BYTE),       /* UNUSED   @Y17XAX6*/
       3 $TSSSYM CHAR(2) BDY(HWORD),      /* RESERVED FOR TSS @Y17XAX6*/
               3 $PDEVFLG CHAR(1),                /* PRIMARY DEVICE
                                                      FLAGS   @Y17XAX6*/
                 4 $FPMOLD BIT(1),                /* X'80'- FILE
                                           PROTECT FLAG  @Y17XAX6*/
                 4 $EXFILPT BIT(1),               /* X'40'- ADDITIONAL
                                           FILE PROTECT FLAG @Y17XAX6*/
                 4 $TSSSYS1 BIT(1),               /* X'20'- RESERVED
                                                FOR TSS @Y17XAX6*/
                 4 $LASTDEV BIT(1),               /* X'10'- LAST
                                 DEVICE OF SUBSYSTEM FLAG  @Y17XAX6*/
                 4 * BIT(1),                      /* X'08'- SPARE     */
                 4 $TERMNDX BIT(1),               /* X'04'- RESERVED
                                                    FOR TSS  @Y17XAX6*/
                 4 $PATHDEF BIT(1),               /* X'02'- RESERVED
                                                    FOR TSS  @Y17XAX6*/
                 4 $LASTSUB BIT(1),               /* X'01'- LAST
                               DEVICE OF LAST SUBSYSTEM FLAG @Y17XAX6*/
               3 $CDSFLGS CHAR(1),                /* DEVICE FLAGS FROM
                                      CDS FLAG BYTE @Y17XAX6*/
                 4 $FPM BIT(1),                   /* X'80'- FILE
                                      PROTECT FLAG @Y17XAX6*/
                 4 $SHARED BIT(1),                /* X'40'- SHARED
                                      DEVICE FLAG  @Y1XAX6*/
                 4 $CEVOL BIT(1),                 /* X'20'- CE VOLUME
                                                      FLAG  @Y17XAX6  */
                 4 $EXTINTC BIT(1),               /* X'10'- DEV ADDR
                                     ASSOCIATED WITH EXT FLAG @Y17XAX6*/
                 4 $SYMNAME BIT(1),               /* X'08'- SYMBOLIC
                                                 NAME FLAG @Y17XAX6*/
                 4 $TWOCHSW BIT(1),               /* X'04'-TWO CHANNEL
                                              SWITCH FLAG @Y17XAX6*/
                 4 $CUSTSYM BIT(1),               /* X'02'- CUSTOMER
                        ASSIGNED SYMBOLIC NAME FLAG  @Y17XAX5*/
                 4 $COMMCN  BIT(1),               /* X'01'- LINE
                        CONNECTION REQUIRED FLAG @Y17XAX6*/
               3 $PDEVADR PTR(31) BDY(WORD),      /* PRIMARY DEVICE
                                                ADDRESS  @Y17XAX6*/
               3 $PDEVDSC CHAR(4),                /* PRIMARY DEVICE
                                          DESCRIPTORS @Y17XAX6*/
               3 $CDS8T19 CHAR(12) BDY(WORD),     /* PRIMARY DEVICE
                                  CDS BYTE8 8 THROUGH 19 @Y17XAX6*/
               3 $RMSKCNT CHAR(1),                /* ROUTINE MASK
                                       COUNT LENGTH @Y17XAX6*/
               3 $EXECFLG CHAR(1),                /* EXECUTIVE PROGRAM
                                                    FLAGS  @Y17XAX6 */
                 4 $CECCMIN BIT(1),               /* X'80'- REPLY IN
                                 TO OUTSTANDING CECOM FLAG @Y17XAX6*/
                 4 $MULTDEV BIT(1),               /* X'40'- MORE THAN
                                    ONE DEVICE ENTRY FLAG  @Y17XAX6*/
                 4 $RTNSLCT BIT(1),               /* X'20'- OPERATOR
                           MADE ROUTINE SELECTION FLAG  @Y17XAX6*/
                 4 $ERRCNT  BIT(1),               /* X'10'- OPERATOR
                           SPECIFIED ERROR LOOP COUNT  @Y17XAX6*/
                 4 $LSTPDEV BIT(1),               /* X'08'- DON'T
                           ASSIGN MORE PRIMARY DEVICES FLAG  @Y17XAX6*/
                 4 $CLEANUP BIT(1),               /* X'04'- SECTION
                            ENTERED FOR CLEANUP FLAG  @Y17XAX6*/
                 4 $CTRLMOD BIT(1),               /* X'02'- CONTROL
                                 MODE AVAILABLE FLAG  @Y17XAX6 */
                 4 $QSCTMOD BIT(1),               /* X'01'- QUIESCENT
                                MODE AVAILABLE FLAG  @Y17XAX6*/
        3 $OLTSIZE FIXED(15) BDY(HWORD),   /* OLT REGION SIZE @Y17XAX6*/
         3 $OLTFLGS CHAR(1),     /* OLT FUNCTIONAL FLAGS @Y17XAX6*/
                 4 $MANINTV BIT(1),               /* X'80'- MANUAL
                              INTERVENTION ROUTINE FLAG  @Y17XAX6*/
                 4 $CLEANRT BIT(1),               /* X'40'-OLT HAS
                                     CLEANUP ROUTINE FLAG  @Y17XAX6*/
                 4 $RETAIN BIT(1),                /* X'20'- RETAIN
                                           IS ACTIVE FLAG @Y17XAX6*/
                 4 $CONTCB BIT(1),                /* X'10'-CONTINGENT
                              CONNECTION BROKEN FLAG  @Y17XAX6*/
                 4 $RETCODE BIT(1),               /* X'08'   @Y17XAX6 */
                 4 $TRACE  BIT(1),                /* X'04'   @Y17XAX6 */
                 4 $LASTSEC BIT(1),               /* X'02'- LAST
                              SECTION SCHEDULED FLAG  @Y17XAX6*/
                 4 * BIT(1),            /* X'01'- UNUSED          */
               3 * CHAR(1),                       /* UNUSED           */
               3 $TOTFLG1 CHAR(1),      /* TOTE 1ST FLAG BYTE @Y17XAX6*/
                 4 $LINESHR BIT(1),               /* X'80'- LINE CAN
                                          BE SHARED FLAG @Y17XAX6*/
                 4 $TDATBLK BIT(1),               /* X'40'- TOTE
                                       MESSAGE BLOCKING FLAG @Y17XAX6*/
                 4 $TERMSEC BIT(1),          /* X'20'- TRM REQUESTS
                          TEST IN BACKUP MODE @Y17XAX6*/
                 4 $CTEQTT BIT (1),       /* X'10'-CONTROL TERMINAL
                      AND TEST TERMINAL ARE ON SAME LINE  @Y17XAX6*/
                 4 * BIT(4),                      /* UNUSED     S22024*/
               3 $TOTFLG2 CHAR(1) BDY(BYTE),      /* TOTE 2ND FLAG
                                                 BYTE  @Y17XAX6  */
               3 $R017024 CHAR(1),                /* ROUTINE MASK 017
                                                 THRU 024 @Y17XAX6*/
               3 $R025032 CHAR(1),                /* ROUTINE MASK 025
                                                 THRU 032 @Y17XAX6*/
               3 $R033040 CHAR(1),                /* ROUTINE MASK 033
                                                 THRU 040 @Y17XAX6*/
               3 $R041048 CHAR(1),                /* ROUTINE MASK 041
                                                 THRU 048 @Y17XAX6*/
               3 $R049056 CHAR(1),                /* ROUTINE MASK 049
                                                 THRU 056 @Y17XAX6*/
               3 $R057064 CHAR(1),                /* ROUTINE MASK 057
                                                 THRU 064 @Y17XAX6*/
               3 $R065072 CHAR(1),                /* ROUTINE MASK 065
                                                 THRU 072 @Y17XAX6*/
               3 $R073080 CHAR(1),                /* ROUTINE MASK 073
                                                 THRU 080 @Y17XAX6*/
               3 $R081088 CHAR(1),                /* ROUTINE MASK 081
                                                 THRU 088 @Y17XAX6*/
               3 $R089096 CHAR(1),                /* ROUTINE MASK 089
                                                 THRU 096 @Y17XAX6*/
               3 $R097104 CHAR(1),                /* ROUTINE MASK 097
                                                 THRU 104 @Y17XAX6*/
               3 $R105112 CHAR(1),                /* ROUTINE MASK 105
                                                 THRU 112 @Y17XAX6*/
               3 $R113120 CHAR(1),                /* ROUTINE MASK 113
                                                 THRU 120 @Y17XAX6*/
               3 $R121128 CHAR(1),                /* ROUTINE MASK 121
                                                 THRU 128  @Y17XAX6*/
               3 $R129136 CHAR(1),                /* ROUTINE MASK 129
                                                 THRU 136 @Y17XAX6*/
               3 $R137144 CHAR(1),                /* ROUTINE MASK 137
                                                 THRU 144 @Y17XAX6*/
               3 $R145152 CHAR(1),                /* ROUTINE MASK 145
                                                 THRU 152 @Y17XAX6*/
               3 $R153160 CHAR(1),                /* ROUTINE MASK 153
                                                 THRU 160 @Y17XAX6*/
               3 $R161168 CHAR(1),                /* ROUTINE MASK 161
                                                 THRU 168 @Y17XAX6*/
               3 $R169176 CHAR(1),                /* ROUTINE MASK 169
                                                 THRU 176  @Y17XAX6*/
               3 $R177184 CHAR(1),                /* ROUTINE MASK 177
                                                 THRU 184  @Y17XAX6*/
               3 $R185192 CHAR(1),                /* ROUTINE MASK 185
                                                 THRU 192 @Y17XAX6*/
               3 $R193200 CHAR(1),                /* ROUTINE MASK 193
                                                 THRU 200 @Y17XAX6*/
               3 $R201208 CHAR(1),                /* ROUTINE MASK 201
                                                 THRU 208 @Y17XAX6*/
               3 $R209216 CHAR(1),                /* ROUTINE MASK 209
                                                 THRU 216 @Y17XAX6*/
               3 $R217224 CHAR(1),                /* ROUTINE MASK 217
                                                 THRU 224 @Y17XAX6*/
               3 $R225232 CHAR(1),                /* ROUTINE MASK 225
                                                 THRU 232  @Y17XAX6*/
               3 $R233240 CHAR(1),                /* ROUTINE MASK 233
                                                 THRU 240 @Y17XAX6*/
               3 $R241248 CHAR(1),                /* ROUTINE MASK 241
                                                 THRU 248 @Y17XAX6*/
               3 $R249255 CHAR(1),                /* ROUTINE MASK 249
                                                 THRU 255 @Y17XAX6*/
               3 $RETMASK CHAR(1),       /* RETURN CODE MASK @Y17XAX6*/
               3 * CHAR(1),                       /* SPARE            */
               3 * CHAR (6),                   /* SPARE      S05331*/
               3 $MSGIDAC CHAR (2),       /* ACTIVE OLT ID @Y17XAX6*/
               3 $TABLE PTR(31) BDY(WORD),        /* ADDRESS OF BRANCH
                                                      TABLE  @Y17XAX6 */
               3 $PASS PTR(31) BDY(WORD),         /* ADDRESS OF PASSON
                                                      AREA  @Y17XAX6  */
               3 $EXT  PTR(31) BDY(WORD),         /* ADDRESS OF
                                            EXTERNAL DATA @Y17XAX6*/
               3 * CHAR(24) BDY(WORD),            /* SCT EXPANSION
                                                      AREA   @Y17XAX6 */
             2 TOTSMGRT PTR(31),                  /* SERVICE MANAGER  */
                                                  /*  RETURN SAVE     */
             2 TOTSAVE1 CHAR(72) BDY(WORD),       /* OLT SUBTASK 1ST  */
                                                  /*  SAVE AREA       */
             2 TOTSAVE2 CHAR(72) BDY(WORD),       /* OLT SUBTASK 2ND  */
                                                  /*  SAVE AREA       */
             2 TOTSAVE3 CHAR(72) BDY(WORD),       /* OLT SUBTASK 3RD  */
                                                  /*  SAVE AREA       */
             2 TOTSAVE4 CHAR(72) BDY(WORD),       /* OLT SUBTASK 4TH  */
                                                  /*  SAVE AREA       */
             2 TOTSAVE5 BDY(WORD),                /* OLT SUBTASK 5TH  */
               3 * CHAR(44),                      /*  SAVE AREA       */
               3 TOTOLTPT PTR(31),
               3 * CHAR(16),
               3 TOTOLTEP PTR(31),
               3 * CHAR(4),
             2 TOTSAVE6 CHAR(72) BDY(WORD),       /* OLT SUBTASK 6TH  */
                                                  /* SAVE AREA@Y17XAXU*/
             2 TOTWOSV1 PTR(31),                  /* IEDQWO LEV 1     */
                                                  /* SAVE AREA@Y17XAXU*/
             2 TOTWOSV2 PTR(31),                  /* IEDQWO LEV 2     */
                                                  /* SAVE AREA@Y17XAXU*/
             2 TOTWOSV3 PTR(31),                  /* IEDQWO LEV 3     */
                                                  /* SAVE AREA@Y17XAXU*/
             2 TOTWOSV4 PTR(31),                  /* IEDQWO LEV 4     */
                                                  /* SAVE AREA@Y17XAXU*/
  2 TOTSVEND CHAR(0),  /* END OF TOTE SAVE AREAS  @Y17XAX6*/
             2 TOTBKASN FIXED(15) BDY(HWORD),     /* MAIN STORAGE     */
                                                  /*  BLOCKS ASSIGNED */
                                                  /*  TO THIS OLT     */
             2 TOTBKRQD FIXED(15) BDY(HWORD),     /* MAIN STORAGE     */
                                                  /*  BLOCKS REQUIRED */
                                                  /*  BY THIS OLT     */
             2 TOTMMSPC CHAR(4) BDY(WORD),        /* OLT UNUSED MAIN  */
                                                  /*  STORAGE SPACE   */
 /*                                                          @Y17XAXU*/
 /*            SOURCE TERMINAL ENTRY                         @Y17XAXU*/
 /*                                                          @Y17XAXU*/
             2 TOTSRENT BDY(WORD),   /* SRC TERMINAL ENTRY   @Y17XAXU*/
               3 TOTSROFF FIXED(16), /* TTCIN OF SOURCE      @Y17XAXU*/
               3 * CHAR(2),          /* RESERVED             @Y17XAXU*/
               3 TOTSRLCB PTR(31),   /* SOURCE LCB ADDRESS   @Y17XAXU*/
 /*                                                                   */
 /*            CONTROL TERMINAL ENTRY                                 */
 /*                                                                   */
             2 TOTCTENT BDY(WORD),                /* CONTROL TERMINAL */
                                                  /*  ENTRY           */
               3 TOTCTUCB FIXED(16),              /* C.T. UCB ADDRESS */
               3 TOTCTOFF FIXED(16),              /* OFFSET TO C.T.   */
                                                  /*  TNT ENTRY       */
                                                  /* (DUMMY)  @Y17XAXU*/
               3 TOTCROFF FIXED(16),              /* OFFSET TO C.T.   */
                                                  /* TNT ENTRY        */
                                                  /* (REAL)   @Y17XAXU*/
               3 TOTCRSID FIXED(16),              /* C.T. NETWORK    */
                                                  /* ADDRESS @Y17XAXU*/
               3 TOTCTRLN CHAR (1),               /* C.T. RELATIVE    */
                                                  /*  LINE NUMBER     */
               3 TOTCTLCB PTR(24),                /* C.T. LCB ADDRESS */
               3 TOTCTTNT PTR(31),                /* C.T. TERMINAL    */
                                                  /*  NAME TABLE ENTRY*/
                                                  /* ADDRESS (DUMMY)  */
               3 TOTCRTNT PTR(31),                /* CT TNT ADDRESS   */
                                                  /* (REAL ENTRY)     */
               3 TOTCTTLN FIXED(15),              /* LENGTH OF CT TTE */
                                                  /*  AREA            */
               3 TOTCTFLG CHAR(1),                /* CONTROL TERMINAL */
                                                  /* FLAGS            */
                 4 TOTCTASN BIT(1),               /* X'80'-   S22024*/
                                                  /* DUMMY EN-S22024*/
                                                  /* TRY ASGN.S22024*/
                 4 TOTCTORN BIT (1),              /* X'40'- CTS22024*/
                                                  /* ON 3705  S22024*/
                 4 * BIT(5),                     /* RESERVED @Y17XAXU*/
                   4 TOTCTSWD BIT(1),            /* X'01' DIAL S22024*/
        3 TOTCTEND CHAR(0),    /* END OF BASIC C.T. AREA  @Y17XAX6*/
                 3 TOTCTRNL CHAR (8),            /* GROUP NAME S22024*/
                                                 /* OF CT LINE S22024*/
               3 TOTCTNAM CHAR (9),               /* CONTROL TERMINAL */
                                                  /* NAME IN EBCDIC   */
             2 TOTCTDFL CHAR (1),                /* CONTROL TERMINAL  */
                                                 /* INITIAL CONDITIONS*/
               3 TOTCTTRM BIT(1),                /* X'80'-TERMINAL    */
                                                 /* DEVICE FLAG       */
               3 TOTCTLIN BIT (1),               /* X'40'-LINE ADDRESS*/
                                                 /* FLAG              */
               3 * BIT(1),                       /* UNUSED            */
               3 TOTCTGP BIT(1),                 /* X'10'-GENERAL POLL*/
                                                 /* INITIALLY ACTIVE  */
                                                 /* ON TEST LINE      */
               3 TOTCTLST BIT (1),               /* X'08'-CT INITIALLY*/
                                                 /* STOPPED           */
               3 TOTCTHD BIT (1),                /* X'04'-CT INITIALLY*/
                                                 /* HELD              */
               3 TOTCTIAC BIT (1),               /* X'02'-CT INVITA-  */
                                                 /* TION LIST ENTRY   */
                                                 /* INITIALLY INACTIVE*/
               3 * BIT (1),                      /* UNUSED            */
             2 * CHAR(3),                        /* RESERVED  @Y17XAXU*/
             2 TOTCUTST,                         /* CONTROL INFO FOR  */
                                                 /* $CUTEST MACRO     */
               3 TOTCUFLG CHAR(1),               /* $CUTEST FLAGS     */
                 4 TOTCUDON BIT (1),             /* X'80-CUTEST ISSUED*/
                 4 TOTCUCUP BIT (1),             /* X'40'-CUTEST CLEAN*/
                                                 /* UP REQUIRED       */
                 4 * BIT (6),                    /* UNUSED            */
               3 TOTCU#AD CHAR (1),              /* $CUTEST NUMBER OF
                                      CONTIGUOUS ADDRESS @Y16XAX6*/
               3 TOTCUCUU CHAR (2),              /* $CUTEST STARTING  */
                                                 /* ADDRESS           */
               3 TOTCUSAV    CHAR (4),           /* $CUTEST SAVE AREA */
               3 TOTCURS1 CHAR (1),              /* $CUTEST CODE      */
                                                 /* PARAMETER         */
               3 TOTCURS2 CHAR (1),              /* $CUTEST HEX       */
                                                 /* CHANNEL ADDRESS   */
               3 TOTCURS3 CHAR (1),              /* $CUTEST RESERVED  */
                                                 /* BYTE 3 CODE       */
                                                 /* PARAMETER         */
               3 TOTCURS4 CHAR (1),              /* $CUTEST RESERVED  */
                                                 /* BYTE 4 CODE       */
                                                 /* PARAMETER         */
             2 TOTWOOPC CHAR(24),                 /* IEDQWO   SA41602*/
                                                  /* OP CNTRL SA41602*/
                                                  /* PARM LISTSA41602*/
             2 TOTPLIST CHAR (24),               /* OP CONTROL S22024*/
                                                 /* PARM LIST  S22024*/
               3 TOTOKEY CHAR(1),                /* KEY        S22024*/
               3 TOTOQCBA CHAR(3),               /* QCB ADDR   S22024*/
               3 TOTOPRI CHAR(1),                /* PRIORITY   S22024*/
               3 TOTOLINK CHAR(3),               /* LINK FIELD S22024*/
               3 TOTOVBCD CHAR(1),               /* VERB CODE  S22024*/
               3 TOTOELNG CHAR(1),               /* LENGTH     S22024*/
               3 TOTORLN CHAR(1),                /* RELATIVE   S22024*/
                                                 /* LINE NO    S22024*/
               3 TOTORTCD CHAR(1),               /* RETURN CODES22024*/
               3 TOTOECBA CHAR(4),               /* ECB ADDR   S22024*/
                 4 TOTOFLG CHAR(1),              /* FLAG BYTE
                                                             @YM08136*/
                   5 TOTOATTC BIT(1),            /* USE ALTERNATE TTCIN
                                                             @YM08136*/
                   5 *        BIT(7),            /* UNUSED   @YM08136*/
                 4 *       CHAR(3),              /* UNUSED   @YM08136*/
               3 TOTOLADR CHAR(8),               /* TERM NAME  S22024*/
                                                 /* OR LINE    S22024*/
                                                 /* ADDRESS    S22024*/
             2 TOTOALTT FIXED(16),               /* ALTERNATE TTCIN
                                                             @YM08136*/
             2 * CHAR (38),                      /* UNUSED   @YM08136*/
             2 TOTOPCLN PTR(31),                 /* OP CONTROL S22024*/
                                                 /* ECB ADDRESSS22024*/
                                                 /* FOR CLEANUPS22024*/
             2 TOTUSCOR PTR (31),                /* CORE IN USES22024*/
 /*                                                                   */
 /*            ALTERNATE PRINTER ENTRY                                */
 /*                                                                   */
             2 TOTAPENT BDY(WORD),                /* ALTERNATE PRINTER*/
                                                  /*  ENTRY           */
               3 TOTAPUCB FIXED(16),              /* A.P. UCB ADDRESS */
               3 TOTAPOFF FIXED(16),              /* OFFSET TO A.P.   */
                                                  /*  TNT ENTRY       */
                                                  /* (DUMMY)  @Y17XAXU*/
               3 TOTAROFF FIXED(16),              /* OFFSET TO A.P.   */
                                                  /* TNT ENTRY        */
                                                  /* (REAL)   @Y17XAXU*/
               3 TOTARSID FIXED(16),              /* NETWORK ADDRESS  */
                                                  /* OF A.P.  @Y17XAXU*/
               3 TOTAPRLN CHAR(1),                /* A.P. RELATIVE    */
                                                  /*  LINE NUMBER     */
               3 TOTAPLCB PTR(24),                /* A.P. LCB ADDRESS */
               3 TOTAPTNT PTR(31),                /* A.P. TERMINAL    */
                                                  /*  NAME TABLE ENTRY*/
                                                  /* ADDRESS (DUMMY)  */
               3 TOTARTNT PTR(31),                /* AP TNT ADDRESS   */
                                                  /* (REAL ENTRY)     */
               3 TOTAPTLN FIXED(15),              /* LENGTH OF AP TTE */
                                                  /* AREA             */
               3 TOTAPFLG CHAR (1),               /* A.P FLAGS S22024*/
                 4 TOTAPASN BIT(1),               /* X'80'-   S22024*/
                                                  /* DUMMY EN-S22024*/
                                                  /* TRY ASGN.S22024*/
                 4 TOTAPORN BIT (1),              /* X'40'- APS22024*/
                                                  /* ON 3705  S22024*/
                 4 * BIT(5),                     /* RESERVED @Y17XAXU*/
                 4 TOTAPSWD BIT(1),              /* X'01' DIAL S22024*/
       3 TOTAPEND CHAR(0),     /* END OF BASIC A.P. AREA  @Y17XAX6*/
                 3 TOTAPRNL CHAR (8),            /*GROUP NAME S05331*/
                                                 /* OF AP LINE S05331*/
               2 TOTAPDFL CHAR (1),              /* ALTERNATE PRINTER*/
                                                 /* INITIAL CONDITIONS*/
               3 TOTAPTER BIT (1),               /* X'80'-TERMINAL    */
                                                 /* DEVICE FLAG       */
               3 TOTAPLIN BIT (1),               /* X'40'-LINE ADDRESS*/
                                                 /* FLAG              */
               3 * BIT (1),                      /* UNUSED            */
               3 TOTAPGP BIT (1),                /* X'10'-GENERAL POLL*/
                                                 /* INITIALLY ACTIVE  */
                                                 /* ON TEST LINE      */
               3 TOTAPLST BIT (1),               /* X'08'-AP INITIALLY*/
                                                 /* STOPPED           */
               3 TOTAPHD BIT (1),                /* X'04'-AP INITIALLY*/
                                                 /* HELD              */
               3 TOTAPIAC BIT (1),               /* X'02'-AP INVITA-  */
                                                 /* TION LIST ENTRY   */
                                                 /* INITIALLY INACTIVE*/
               3 * BIT (1),                      /* UNUSED            */
             2 * FIXED(31),                      /* UNUSED    @ZM47554*/
             2 TOTAPDCB PTR (31),                 /* LOCAL      S22024*/
                                                  /* PRINTER    S22024*/
                                                  /* DCB ADDRESSS22024*/
             2 TOTPDECB CHAR(20) BDY(WORD),       /* LOCAL PRINTER    */
                                                  /*  DECB            */
             2 TOTPARML PTR (31),                /* ADDR OF   SA41612*/
                                                 /* PARM LIST SA41612*/
                                                 /* FOR MACRO SA41612*/
                                                 /* CALL      SA41612*/
             2 TOTOLTMQ PTR(31),                  /* SUBTASK MESSAGE  */
                                                  /*  QUEVE           */
             2 TOTOTECB CHAR(4) BDY(WORD),        /* TOTE SUBTASK ECB */
             2 TOTRESSV PTR(31),                  /* POINTER TO MOTHER*/
                                                  /*  TASK SAVE AREA  */
             2 TOTTCBAD PTR(31),                  /* SUBTASK TCB ADDR */
             2 TOTCMPCD CHAR(4),                  /* SUBTASK          */
                                                  /*  COMPLETION CODE */
             2 TOTOLTPL BDY(WORD),                /* OLT INPUT        */
                                                  /*  PARAMETER LIST  */
               3 * CHAR (8),                     /* UNUSED            */
               3 TOT#TBLE PTR(31),     /* BRANCH TABLE ADDR  @Y17XAX6*/
             2 TOTWTORP BDY(WORD),                /* WTOR PARAMETER   */
                                                  /*  LIST FOR        */
                                                  /*  OPERATOR        */
                                                  /*  COMMUNICATION   */
               3 TOTINCNT PTR(8),                 /* REPLY BYTE COUNT */
               3 TOTINADR PTR(24),                /* REPLY BUFFER ADDR*/
               3 TOTINECB PTR(31),                /* REPLY ECB ADDRESS*/
             2 TOTWTOPL BDY(WORD),                /* WTO & WTOR PARM  */
                                                  /*  LIST FOR        */
                                                  /*  OPERATOR        */
                                                  /*  COMMUNICATION   */
               3 * CHAR (1),                     /* UNUSED            */
               3 TOTOTCNT PTR(8),                 /* OUT MESSAGE COUNT*/
               3 * CHAR (2),                     /* UNUSED            */
               3 TOTOTBUF CHAR (84),             /* OUTPUT AREA       */
                                                  /*  BUFFER          */
               3 TOTINBUF CHAR(80),               /* REPLY BUFFER     */
             2 TOTOLTID CHAR(2) BDY(HWORD),       /* TOTE OLT         */
                                                  /*  IDENTIFICATION  */
             2 TOTRTCOD CHAR(1),                  /* SERVICE MODULE   */
                                                  /*  RETURN CODE     */
             2 * CHAR(1),                         /* UNUSED           */
             2 TOTPLNKQ BDY(WORD),                /* PLINK MODULE     */
                                                  /*  QUEUE           */
               3 TOTPLFWD PTR(31),                /* QUEUE FORWARD    */
                                                  /*  POINTER         */
               3 TOTPLBKW PTR(31),                /* QUEUE BACKWARD   */
                                                  /*  POINTER         */
      2 * CHAR(4),      /* RESERVED    @Y17XAX6*/
             2 TOTWKSPC CHAR(128) BDY(DWORD),     /* TOTE WORK AREA   */
     2 TOTWKEND CHAR(0),  /* WORK SPACE END  @Y17XAX6*/
             2 * CHAR (20),                       /* UNUSED           */
             2 TOTAVTPT PTR (31),                 /* ADDRESS OF AVT   */
             2 TOTSTAE PTR (31),                  /* ADDRESS OF S22024*/
                                                  /* STAE EXIT  S22024*/
                                                  /* ROUTINE    S22024*/
             2 TOTRESPL PTR(31),                  /* ADDRESS OF TOTE  */
                                                  /*  RESIDENT        */
                                                  /*  PARAMETER LIST  */
             2 TOTFLG01 CHAR(1) ABNL,             /* TOTE 1ST FLAG    */
                                                  /*  BYTE   @G36XRXV */
               3 TOTFINAL BIT (1),               /* FINAL MSG  S05331*/
                                                 /* INDICATOR  S05331*/
               3 TOTCONFG BIT (1),                /* X'40'-CONFIGURA-*/
                                                  /* RUN             */
               3 TOTIPLCU BIT (1),               /* X'20'-FORCES05331*/
                                                 /* CLEANUP    S05331*/
                                                 /* FROM IPL   S05331*/
               3 TOTEXIT BIT(1),                 /*X'10'- IEDQWO     */
                                                 /* CONTROL FLOW      */
                                                 /* FLAG      @Y17XAXU*/
               3 TOTAPTST BIT(1),        /* AP ON TEST LINE   @Y17XAXU*/
               3 TOTPRMPT BIT (1),                /* X'04'-     S22024*/
                                                  /* PROMPTER   S22024*/
                                                  /* RUN        S22024*/
               3 TOTCLNST BIT(1) ABNL, /*CLEANUP STARTED      @G36XRXV*/
               3 TOTCLNED BIT(1),   /* CLEANUP ENDED          @YM08158*/
             2 TOTFLG02 CHAR(1),                  /* TOTE 2ND FLAG    */
                                                  /*  BYTE            */
                 3 TOTTTSPE BIT(1),      /* TEST SESSION      @Y17XAXU*/
                                         /* PEND END          @Y17XAXU*/
                 3 TOTTSST BIT(1),       /* CT/AP IN TEST MODE@Y17XAXU*/
                 3 TOTDEV0X BIT(1),               /* X'20'-TESTS22024*/
                                                  /* DEVICE ON S22024*/
                                                  /* 270X      S22024*/
               3 TOTOLTRQ BIT(1),                 /* X'10'-ON- S22024*/
                                                  /* LINE TEST S22024*/
                                                  /* REQUEST   S22024*/
                                                  /* FLAG      S22024*/
               3 TOTCHKSZ BIT(1),                 /* X'08'- UPDATE    */
                                                  /*  SUBTASK STORAGE */
                                                  /*  ALLOCATION FLAG */
               3 TOTCONMD BIT (1),                /* X'04'-GETSA41597*/
                                                  /* CONC MOD SA41597*/
                                                  /* FOR INIT SA41597*/
                                                  /* STATUS   SA41597*/
                                                  /* SET UP   SA41597*/
               3 TOTCONCU BIT(1),                 /* X'02'CONCSA41597*/
                                                  /* CLEANUP  SA41597*/
                                                  /* REQUIRED SA41597*/
               3 TOTDEVRN BIT(1),                 /* X'01-TEST S22024*/
                                                  /* DEVICE ON S22024*/
                                                  /* 3705      S22024*/
             2 TOTFLG03 CHAR(1),                  /* TOTE 3RD FLAG    */
                                                  /*  BYTE            */
               3 TOTAPOER BIT(1),                 /* X'80'- ALTERNATE */
                                                  /*  PRINTER OPTION  */
                                                  /*  ERROR FLAG      */
               3 TOTTDFER BIT(1),                 /* X'40'- TEST      */
                                                  /*  DEVICE FIELD    */
                                                  /*  ERROR FLAG      */
               3 TOTTSTER BIT(1),                 /* X'20'- TEST ID   */
                                                  /*  FIELD ERROR FLAG*/
               3 TOTOPTER BIT(1),                 /* X'10'- OPTION    */
                                                  /*  FIELD ERROR FLAG*/
               3 TOTIMNCP BIT(1),                 /* X'08'- TEMPORARY */
                                                  /*  NO CONTROL PRINT*/
                                                  /*  FLAG            */
               3 TOTTSINC BIT(1),                 /* X'04'- INCLUSIVE */
                                                  /*  TEST ID ENTRY   */
                                                  /*  FLAG            */
               3 TOTREPEX BIT(1),                /* X'02'-    SA41613*/
                                                 /* REPLY     SA41613*/
                                                 /* EXPECTED  SA41613*/
                                                 /* FLAG      SA41613*/
               3 * BIT (1),                      /* UNUSED     S22024*/
             2 TOTFLG04 CHAR(1),                  /* TOTE 4TH FLAG    */
                                                  /*  BYTE            */
               3 TOTNUMDV BIT(1),                 /* X'80'- NUMERIC   */
                                                  /*  TRM ENTRY FLAG  */
               3 TOTDTCHD BIT(1),                 /* X'40'- SUBTASK   */
                                                  /*  ALREADY DETACHED*/
                                                  /*  FLAG            */
               3 TOTCLOSE BIT(1),                 /* X'20'- TCAM      */
                                                  /*  CLOSEDOWN IN    */
                                                  /*  PROGRESS FLAG   */
               3 TOTPRCTF BIT (1),/*PRIMARY TEST DEVICE COUNTERFEIT
                                                            @YM08407*/
               3 TOTSCCTF BIT (1),/* SECONDARY TEST DEVICE COUNTERFEIT
                                                            @YM08407*/
               3 * BIT (1),                      /* UNUSED     S22024*/
               3 * BIT (1),                      /* UNUSED     S22024*/
               3 TOTTTSWT BIT(1),                 /* X'01'- TEST      */
                                                  /*  TERMINAL LINE   */
                                                  /*  SWITCHED FLAG   */
             2 TOTFLG05 CHAR(1),                  /* TOTE 5TH FLAG    */
                                                  /*  BYTE            */
               3 TOTPRINT BIT(1),                 /* X'80'- ACCESS    */
                                                  /*  METHOD PRINT    */
                                                  /*  FLAG            */
               3 TOTCECOM BIT(1),                 /* X'40'- ACCESS    */
                                                  /*  METHOD CECOM    */
                                                  /*  FLAG            */
               3 TOTREPLY BIT(1),                 /* X'20'- ACCESS    */
                                                  /*  METHOD CECOM    */
                                                  /*  WITH REPLY FLAG */
               3 TOTSRCE BIT(1),     /* SEND MSG TO SOURCE   @Y17XAXU*/
               3 TOTSRCON BIT(1),    /* TRM ENTERED FROM SRC @Y17XAXU*/
               3 TOTTMOUT BIT(1),                 /* X'04'- WAIT      */
                                                  /*  TIMEOUT FLAG    */
               3 TOTEXIOF BIT(1),                 /* X'02'- ACCESS    */
                                                  /*  METHOD EXIO FLAG*/
               3 TOTNDMSG BIT(1),                 /* X'01'- SEND      */
                                                  /*  CANCEL OR       */
                                                  /*  TERMINATE       */
                                                  /*  MESSAGE FLAG    */
             2 TOTFLG06 CHAR(1),                  /* TOTE 6TH FLAG    */
                                                  /*  BYTE            */
               3 TOTOTERM BIT(1),                 /* X'80'-SECTION    */
                                                  /*  TERMINATE FLAG  */
               3 TOTCBOPN BIT(1),                 /* X'40'-CANCEL     */
                                                  /* BEFORE OPEN      */
               3 TOTWACAN BIT(1),                 /* X'20'-CANCEL     */
                                                  /* REQUEST PENDING  */
               3 TOTNCMFG BIT(1),                 /* X'10'-NON-CONCUR-*/
                                                  /*  RENT MODE FLAG  */
               3 TOTABEND BIT(1),                 /* X'08'- OLT HAS   */
                                                  /*  ABENDED FLAG    */
               3 TOTCANCL BIT(1),                 /* X'04'- CANCEL    */
                                                  /*  TESTING FLAG    */
               3 TOTOTACT BIT(1),                 /* X'02'- OLT ACTIVE*/
                                                  /*  FLAG            */
               3 TOTNPERR BIT(1),                 /* X'01'- NO PERMA- */
                                                  /*  NENT ERROR FLAG */
             2 TOTFLG07 CHAR(1),                  /* TOTE 7TH FLAG    */
                                                  /*  BYTE            */
               3 TOTPRIEX BIT(1),                 /* X'80'- PRIMARY   */
                                                  /*  DEVICE FOR      */
                                                  /*  EXIO/WAITIO FLAG*/
               3 TOTSECEX BIT(1),                 /* X'40'- SECONDARY */
                                                  /*  DEVICE FOR      */
                                                  /*  EXIO/WAITIO FLAG*/
               3 * BIT (1),                      /* UNUSED     S22024*/
               3 * BIT (1),                      /* UNUSED            */
               3 TOTMSCEC BIT(1),                 /* X'08'- TOTE      */
                                                  /*  MESSAGE SOURCE  */
                                                  /*  FLAG - CECOM    */
               3 TOTMSREP BIT(1),                 /* X'04'- TOTE      */
                                                  /*  MESSAGE SOURCE  */
                                                  /* 'FLAG - CECOM    */
               3 TOTMSPRT BIT(1),                 /* X'02'- TOTE      */
                                                  /*  MESSAGE SOURCE  */
                                                  /*  FLAG - CECOM    */
               3 TOTMSSRC BIT(1), /* TOTE MESSAGE SOURCE FLAG @Y17XAX6*/
             2 TOTFLG08 CHAR(1),                  /* TOTE 8TH FLAG    */
                                                  /*  BYTE            */
               3 TOTFMCTL BIT(4),                 /* BITS 0-3 ARE     */
                                                  /*  DPRINT FORMS    */
                                                  /*  CONTROL FLAGS   */
               3 * BIT(4),                        /* BITS 4-7 ARE     */
                                                  /*  DPRINT LEVEL    */
                                                  /*  CONTROL FLAGS   */
             2 TOTFLG09 CHAR(1),                  /* TOTE 9TH FLAG    */
                                                  /*  BYTE            */
               3 TOTAPCON BIT(1),                 /* X'80'- PRINTER = */
                                                  /*  SYSTEM CONSOLE  */
                                                  /*  FLAG            */
               3 TOTAPOUT BIT(1),                 /* X'40'- PRINTER = */
                                                  /*  SYSTEM PRINTER  */
                                                  /*  FLAG            */
               3 TOTCTCON BIT(1),                 /* X'20'- CONTROL   */
                                                  /*  TERMINAL = SYS  */
                                                  /*  CONSOLE FLAG    */
               3 TOTAPTRM BIT(1),                 /* X'10'- PRINTER = */
                                                  /*  TERMINAL FLAG   */
               3 TOTNOBRK BIT (1),               /* X'08' - NO S22024*/
                                                 /* BREAK OPT  S22024*/
               3 TOTLNCON BIT (1),               /* X'04'-LINE S22024*/
                                                 /* CONN DONE  S22024*/
               3 TOTPRECT BIT(1),                 /* X'02'- NO        */
                                                  /*  ALTERNATE       */
                                                  /*  PRINTER FLAG    */
               3 TOTMACFT BIT(1),                 /* X'01'-UN- S22024*/
                                                  /* SUPPORTED S22024*/
                                                  /* MACRO     S22024*/
                                                  /* FUNCTION  S22024*/
             2 TOTFLG10 CHAR(1),                  /* TOTE 10TH FLAG   */
                                                  /*  BYTE            */
               3 TOTTERMS BIT(1),                 /* X'80'- TEST      */
                                                  /*  DEVICES=TERMINAL*/
                                                  /*  FLAG            */
               3 * BIT (1),                      /* UNUSED     S22024*/
               3 * BIT (1),                      /* UNUSED     S22024*/
               3 * BIT (1),                      /* UNUSED    S22024*/
               3 TOTTNTRQ BIT(1),                 /* X'08'- DUMMY TNT */
                                                  /*  ENTRY REQUEST   */
                                                  /*  FLAG            */
               3 TOTOLTED BIT(1),                 /* X'04'- ON-LINE   */
                                                  /*  TEST ENDED FLAG */
               3 TOTOLTWT BIT(1),                 /* X'02'- ON-LINE   */
                                                  /*  TEST WAITING    */
                                                  /*  FLAG            */
               3 TOTOLTRS BIT(1),                 /* X'01'- ON-LINE   */
                                                  /*  TEST RESTART    */
                                                  /*  FLAG            */
             2 TOTTTBEL PTR(8),                  /* TERMINAL NAME     */
                                                  /*  TABLE ENTRY NAME*/
                                                  /*  LENGTH          */
             2 * CHAR (1),                       /* RESERVED          */
 %IF CONFG='YES'  %THEN
    %GOTO CNFBYP;
             2 TOTEXT CHAR(56) BDY(WORD),         /* EXTERNAL DATA    */
                                                  /*  BUFFER          */
             2 TOTPASS CHAR(64) BDY (WORD),       /* PASSON DATA      */
                                                  /*  BUFFER          */
             2 TOTPRECB CHAR(4),                  /* PRIMARY ECB      */
               3 TOTPRIBK CHAR(4),                /* PRIMARY TEST     */
                                                  /* DEVICE I/O       */
                                                  /*  CONTROL BLOCKS  */
                 4 TOTTRMBF CHAR(4),              /* TRM BUFFER FOR   */
                                         /*  TRM ANALYSIS  @Y17XAX6*/
 /*                                                                   */
 /*            PRIMARY TEST DEVICE ENTRY                              */
 /*                                                                   */
             2 TOTPRENT BDY(WORD),                /* TOTE PRIMARY TEST*/
                                                  /*  DEVICE ENTRY    */
               3 TOTPRUCB FIXED(16),              /* PRIMARY DEVICE   */
                                                  /*  UCB ADDRESS     */
               3 TOTPCOFF FIXED(16),              /* OFFSET TO SECOND */
                                                  /* TNT ENTRY        */
                                                  /* (DUMMY)  @Y17XAXU*/
               3 TOTPROFF FIXED(16),              /* OFFSET TO PRIMARY*/
                                                  /*  TNT ENTRY       */
                                                  /* (REAL)   @Y17XAXU*/
               3 TOTPRSID FIXED(16),              /* NETWORK ADDRESS  */
                                                  /* OF PRI   @Y17XAXU*/
               3 TOTPRRLN CHAR(1),                /* PRIMARY DEVICE   */
                                                  /*  RELATIVE LINE   */
                                                  /*  NUMBER          */
               3 TOTPRLCB PTR(24),                /* 3705 LCB @Y17XAX6*/
                                                  /* ADDRESS  @Y17XAXU*/
               3 TOTPDTNT PTR(31),                /* PRIMARY TNT      */
                                                  /* ADDRESS          */
                                                  /* (DUMMY)  @Y17XAXU*/
               3 TOTTNTPR PTR(31),                /* PRIMARY TERMINAL */
                                                  /* TNT ADDRESS -REAL*/
               3 TOTPRLEN FIXED(15),              /* PRIMARY TTE AREA */
                                                  /* LENGTH   @Y17XAXU*/
               3 TOTPRFLG CHAR(1),                /* PRIMARY          */
                                                  /* FLAGS    @Y17XAXU*/
                4 TOTPRTAS BIT(1),                /* PRIMARY TNT      */
                                                  /* ASSIGNED @Y17XAXU*/
                4 TOTPRLU BIT(1),                 /* LU TERM  @Y17XAXU*/
       4 TOTPPRSC BIT(1),  /* ON=PRIMARY, OFF=SECONDARY @Y17XAX6*/
    4 TOTPUNRD BIT(1),  /* ON=UNREAD DATA, OFF=NO UNREAD DATA @Y17XAX6*/
   4 TOTPREX BIT(1),  /* EXCEPTION RESPONSE  @Y17XAX6*/
   4 TOTPRFME BIT(1),  /* DEFINITE RESPONSE  @Y17XAX6*/
   4 TOTPEXNM BIT(1), /* ON=EXPEDITED, OFF=NORMAL  @Y17XAX6*/
                4 * BIT(1),                       /* RESERVED @Y17XAX6*/
               3 * CHAR(1),                       /* RESERVED @Y17XAXU*/
               3 TOTPRQCB PTR (31),               /* PRIMARY QCBS22024*/
                                                  /* ADDRESS    S22024*/
               3 TOTPRCCW PTR (31),               /* ADDRESS OF S22024*/
                                                  /* READ CCW   S22024*/
                                                  /* FOR PRIMARYS22024*/
                                                  /* TEST DEVICES22024*/
               3 TOTPRBUF PTR (31),               /* ADDRESS OF S22024*/
                                                  /* BUFFER CON-S22024*/
                                                  /* TAINING    S22024*/
                                                  /* READ DATA  S22024*/
                                                  /* FOR PRIMARYS22024*/
                                                  /* TTE AREA         */
 /*                                                                   */
     /* PRIMARY DEVICE DATA BLOCKING FIELD                            */
 /*                                                                   */
             2 TOTPDTBF POINTER (31),             /* RESPONSE BUFFER  */
                                                  /*  ADDRESS         */
             2 TOTPDTCT FIXED (15),               /* RESPONSE BUFFER  */
                                                  /*  SIZE            */
             2 TOTPFLGS CHAR (1),                 /* FLAGS            */
             2 * CHAR (1),                        /* UNUSED  @ZM47554 */
             2 TOTPRSN CHAR(4) BDY(WORD),         /* PRIMARY SEQ      */
                                                  /* NUMBER FIELD     */
                                                  /*         @ZM47554 */
               3 * CHAR(2),                       /* FLAGS   @ZM47554 */
               3 TOTPRSEQ FIXED(16),              /* SEQUENCE NUMBER  */
                                                  /* (IN SNA TH )     */
                                                  /*         @ZM47554 */
             2 TOTPTECB PTR(31),                  /* PRIMARY TECB ADDR*/
             2 TOTPRIOB CHAR (44),                /* PRIMARY   S22024*/
                                                  /* IOB       S22024*/
             2 TOTPRDCB CHAR (72) BDY(WORD), /* PRIMARY DCB @Y17XAX6*/
               3 * CHAR (44),                     /* UNUSED    S22024*/
               3 TOTPRDEB PTR (31),               /* PRIMARY   S22024*/
                                                  /* DEB ADDR  S22024*/
             2 TOTSCECB CHAR(4),                  /* SECONDARY ECB    */
               3 TOTSCIBK CHAR(4),                /* SECONDARY TEST   */
                                                  /* DEVICE I/O       */
                                                  /*  CONTROL BLOCKS  */
 /*                                                                   */
 /*            SECONDARY TEST DEVICE ENTRY                            */
 /*                                                                   */
             2 TOTSCENT BDY(WORD),                /* TOTE SECONDARY   */
                                                  /*  TEST DEVICE     */
                                                  /*  ENTRY           */
               3 TOTSCUCB FIXED(16),              /* SECONDARY DEVICE */
                                                  /*  UCB ADDRESS     */
               3 TOTNCOFF FIXED(16),              /* OFFSET TO        */
                                                  /* SECONDARY TNT    */
                                                  /* ENTRY            */
                                                  /* (DUMMY)  @Y17XAXU*/
               3 TOTSCOFF FIXED(16),              /* OFFSET TO        */
                                                  /*  SECONDARY TNT   */
                                                  /*  ENTRY           */
                                                  /* (REAL)   @Y17XAXU*/
               3 TOTSRSID FIXED(16),              /* NETWORK ADDRESS  */
                                                  /* OF SEC   @Y17XAXU*/
               3 TOTSCRLN CHAR(1),                /* SECONDARY DEVICE */
                                                  /*  RELATIVE LINE   */
                                                  /*  NUMBER          */
               3 TOTSCLCB PTR(24),                /* 3705 LCB @Y17XAX6*/
                                                  /* ADDRESS  @Y17XAXU*/
               3 TOTSDTNT PTR(31),                /* SECONDARY        */
                                                  /* TNT ENTRY        */
                                                  /* ADDRESS  @Y17XAXU*/
                                                  /* (DUMMY)  @Y17XAXU*/
               3 TOTSRTNT PTR(31),                /* SECONDARY        */
                                                  /* TERMINAL TNT ADDR*/
                                                  /* (REAL ENTRY)     */
               3 TOTSCLEN FIXED(15),              /* SECONDARY TTE    */
                                                  /* AREA LEN @Y17XAXU*/
               3 TOTSCFLG CHAR(1),                /* SECONDARY        */
                                                  /* FLAGS    @Y17XAXU*/
                4 TOTSCTAS BIT(1),                /* SECONDARY TNT    */
                                                  /* ASSIGNED @Y17XAXU*/
                4 TOTSCLU BIT(1),                 /* LU TERM  @Y17XAXU*/
  4 TOTSPRSC BIT(1),  /* ON=PRIMARY, OFF=SECONDARY  @Y17XAX6*/
  4 TOTSUNRD BIT(1),  /* ON=UNREAD DATA, OFF=NO UNREAD DATA @Y17XAX6*/
  4 TOTSCEX BIT(1), /* EXCEPTION RESPONSE @Y17XAX6*/
  4 TOTSCFME BIT(1), /* DEFINITE RESPONSE  @Y17XAX6*/
  4 TOTSEXNM BIT(1), /* ON=EXPEDITED, OFF=NORMAL  @Y17XAX6*/
                4 * BIT(1),                       /* RESERVED @Y17XAX6*/
               3 * CHAR(1),                       /* RESERVED @Y17XAXU*/
               3 TOTSCQCB PTR (31),               /* SECONDARY  S22024*/
                                                  /* QCB ADDRESSS22024*/
               3 TOTSCCCW PTR (31),               /* ADDRESS OF S22024*/
                                                  /* READ CCW   S22024*/
                                                  /* FOR SECON- S22024*/
                                                  /* DARY TEST  S22024*/
                                                  /* DEVICE     S22024*/
               3 TOTSCBUF PTR(31),                /* ADDRESS OF S22024*/
                                                  /* BUFFER CON-S22024*/
                                                  /* TAINING    S22024*/
                                                  /* READ DATA  S22024*/
                                                  /* FOR SECON- S22024*/
                                                  /* DARY TEST  S22024*/
                                                  /* DEVICE     S22024*/
 /*                                                                   */
     /* SECONDARY DEVICE DATA BLOCKING FIELD                          */
 /*                                                                   */
             2 TOTSDTBF POINTER (31),             /* RESPONSE BUFFER  */
                                                  /* ADDRESS          */
             2 TOTSDTCT FIXED (15),               /* RESPONSE BUFFER  */
                                                  /*  SIZE            */
             2 TOTSFLGS CHAR (1),                 /* FLAGS            */
             2 * CHAR (1),                        /* UNUSED  @ZM47554 */
             2 TOTSCSN CHAR(4) BDY(WORD),         /* SECONDARY SEQ    */
                                                  /* NUMBER FIELD     */
                                                  /*         @ZM47554 */
               3 * CHAR(2),                       /* FLAGS   @ZM47554 */
               3 TOTSCSEQ FIXED(16),              /* SEQUENCE NUMBER  */
                                                  /* (IN SNA TH )     */
                                                  /*         @ZM47554 */
             2 TOTSTECB CHAR(4),                  /* SECONDARY TECB   */
                                                  /*  ADDRESS         */
             2 TOTSCIOB CHAR (44),                /* SECONDARY S22024*/
                                                  /* IOB       S22024*/
        2 TOTSCDCB CHAR (72) BDY(WORD), /* SECONDARY DCB   @Y17XAX6*/
                                                  /* DCB       S22024*/
               3 * CHAR (44),                     /* UNUSED    S22024*/
               3 TOTSCDEB PTR (31),               /* SECONDARY S22024*/
                                                  /* DEB ADDR  S22024*/
             2 TOTCROLT CHAR (8),                 /* CURRENT   S22024*/
                                                  /* OLT ID    S22024*/
               3 TOTTRMND CHAR (1),               /* END OF    S22024*/
                                                  /* TRM BUFFERS22024*/
             2 TOTOLTTB (10) CHAR(3),             /* OLT ID    S22024*/
                                                  /* TABLE     S22024*/
             2 TOTOLTTE CHAR (0),        /* END OF TABLE @Y17XAX6*/
           2 TOTCONTB (10) CHAR (1),              /* CONC INITSA41597*/
                                                  /* STAT TBL SA41597*/
           2 TOTCONCT CHAR (1),                   /* CONC STATSA41597*/
                                                  /* FOR CT   SA41597*/
           2 TOTCONAP CHAR (1),                   /* CONC STATSA41597*/
                                                  /* FOR AP   SA41597*/
           2 TOTCONND CHAR (0),        /* END OF TABLE  @Y17XAX6*/
             2 * CHAR (38),                       /* UNUSED   SA41597*/
             2 TOTTDTBL (10) CHAR(4),             /* TOTE TEST DEVICE */
                                                  /*  TABLE           */
               3 * CHAR(1),
                 4 TOTTDTRM BIT(1),               /* X'80'- TERMINAL  */
                                                  /*  DEVICE FLAG     */
                 4 TOTTDLIN BIT(1),               /* X'40' - LINE ADDR*/
                                                  /*  FLAG            */
                 4 TOTTDGRB BIT(1),               /* X'20'-TEST DEVICE*/
                                                  /* GRABBED FLAG     */
                 4 TOTTDORN BIT(1),               /* X'10'-TEST S22024*/
                                                  /* DEVICE ON  S22024*/
                                                  /* A 3705     S22024*/
                 4 TOTTDLST BIT(1),               /* X'08' - TEST     */
                                                  /*  DEVICE INITIALLY*/
                                                  /*  STOPPED         */
                 4 TOTTDTHD BIT(1),               /* X'04' - TEST     */
                                                  /*  DEVICE INITIALLY*/
                                                  /*  HELD            */
                 4 TOTTDIAC BIT(1),               /* X'02' - TEST     */
                                                  /*  DEVICE INVITA-  */
                                                  /*  TION LIST ENTRY */
                                                  /*  INITIALLY       */
                                                  /*  INACTIVE        */
                 4 TOTTSWPM BIT(1),              /*X'01'-SWITCHY06330*/
                                                 /* HAS BEEN   Y06330*/
                                                 /* PERFORMED  Y06330*/
               3 * CHAR (3),                     /* SKIP   @Y17XAX6 */
               2 TOTTDEND CHAR(0),        /* END OF TABLE  @Y17XAX6*/
 /*                                                                   */
     /* WAITIO ECB LIST                                               */
 /*                                                                   */
             2 TOTWECBA POINTER(31),              /* POINTER TO ECB   */
                                                  /* FOR TEST DEVICE  */
             2 TOTECBPT POINTER (31),             /* POINTER TO       */
                                                  /* SUBTASK ECB      */
             2 TOTTLCNT FIXED(15),                /* TEST LOOP COUNT  */
            2 * CHAR(2),  /*RESERVED  @Y17XAX6*/
 %GOTO MEND;
 %CNFBYP:   ;
             2 * CHAR(4),             /* RESERVED   @Y17XAX6*/
             2 CDSREC CHAR(256) BDY(DWORD),       /* CONFIGURATOR WORK*/
                                                  /*  AREA            */
               3 CDSUNIT PTR(31),                 /* UNIT ADDRESS     */
                 4 CDSWORK CHAR (1),
               3 CDSMODEL CHAR(1),                /* MODEL            */
               3 CDSFEAT CHAR(1),                 /* FEATURES         */
               3 CDSCLASS CHAR(1),                /* CLASS            */
               3 CDSTYPE CHAR(1),                 /* TYPE DEVICE      */
               3 CDSBYTES CHAR(1),                /* BYTE COUNT       */
               3 CDSFLAGS CHAR(1),                /* FLAGS            */
                 4 CDSFPMOD BIT(1),               /* X'80'- FILE      */
                                                  /*  PROTECT MODE    */
                                                  /*  FLAG            */
                 4 CDSDVSHR BIT(1),               /* X'40'- DEVICE    */
                                                  /*  SHARED WITH     */
                                                  /*  ANOTHER SYSTEM  */
                 4 CDSFEVOL BIT(1),               /* X'20'- F.E.      */
                                                  /*  VOLUME MOUNTED  */
                                                  /*  FLAG            */
                 4 CDSEXINT BIT(1),               /* X'10'- EXTERNAL  */
                                                  /*  INTERRUPT       */
                                                  /*  POSSIBLE FLAG   */
                 4 CDSSYMNM BIT(1),               /* X'08'- SYMBOLIC  */
                                                  /*  ADDRESSING FLAG */
                 4 CDSTWOCH BIT(1),               /* X'04'- TWO       */
                                                  /*  CHANNEL SWITCH  */
                                                  /*  FLAG            */
                 4 CDSCUSYM BIT(1),               /* X'02'- CUSTOMER  */
                                                  /*  ASSIGNED        */
                                                  /*  SYMBOLIC NAME   */
                 4 CDSLCNCT BIT(1),               /* X'01'- LINE      */
                                                  /*  CONNECTION      */
                                                  /*  REQUIRED        */
               3 CDSSIGNL CHAR(2),                /* EXTERNAL SIGNAL  */
                                                  /*  MASK            */
               3 CDSNAME CHAR(8),                 /* SYMBOLIC         */
                                                  /*  (ALTERNATE      */
                                                  /*  MEMBER) NAME    */
                 4 CDSTCU CHAR(2),                /* OR TCU FEATURES  */
                 4 CDSMISC CHAR(3),               /* MISC             */
                 4 CDSRMASK CHAR(3),              /* SECTION RUN MASK */
               3 CDSFXARA CHAR(4),                /* EXTENDED FIXED   */
                                                  /*  AREA            */
                 4 CDSFXLEN CHAR(1),              /*   LENGTH         */
                 4 CDSFXFLG CHAR(2),              /*   FLAGS          */
                   5 CDSSETMD BIT(1),             /* X'80'- TWO BYTE  */
                                                  /*  SET MODE        */
                   5 CDSAUTCL BIT(1),             /* X'40'- AUTOCALL  */
                                                  /*  FEATURE         */
                   5 CDSMPNT BIT(1),              /* X'20'- SWITCHED  */
                                                  /*  LINE            */
                   5 CDSMDROP BIT(1),             /* X'10'- NON-      */
                                                  /*  SWITCHED MULTI- */
                                                  /*  DROP LINE       */
                   5 CDSWTBSC BIT(1),             /* X'08'- BSC WORLD */
                                                  /*  TRADE DATA SET  */
                   5 * BIT(11),                   /* UNUSED           */
                 4 CDSLNCON CHAR(1),              /* LINE CONNECTION  */
                                                  /*  CMD SEQ CODE    */
             2 CDSINPUT CHAR(80),                 /* INPUT TO UNIT    */
                                                  /*  CONFIGURATOR    */
                                                  /*  AREA            */
               3 CDSTCUTY CHAR(4),                /* TCU TYPE (EBCDIC)*/
                 4 CDSVAR CHAR (1),               /* CDS VARIABLE     */
                                                  /*  FIELD           */
               3 CDSSYMBL CHAR(8),                /* SYMBOLIC TERMINAL*/
                                                  /*  NAME (EBCDIC)   */
               3 CDSTERM CHAR(4),                 /* TERMINAL TYPE    */
                                                  /*  (EBCDIC)        */
               3 CDSADAP CHAR(1),                 /* ADAPTER TYPE     */
                 4 CDSIBM3 BIT(1),                /* X'80'- IBM III   */
                 4 CDSTTY1 BIT(1),                /* X'40'- TTY I     */
                 4 CDSIBM2 BIT(1),                /* X'20'- IBM II    */
                 4 CDSIBM1 BIT(1),                /* X'10'- IBM I     */
                 4 * BIT(4),                      /* UNUSED           */
               3 CDSLINE CHAR(1),                 /* LINE TYPE        */
                 4 * BIT(5),                      /* UNUSED           */
                 4 CDSSWAUT BIT(1),               /* X'04'- SWITCHED  */
                                                  /*  WITH AUTODIAL   */
                 4 CDSMP BIT(1),                  /* X'02'- LEASED    */
                                                  /*  MULTIPOINT      */
                 4 CDSPTP BIT(1),                 /* X'01'- LEASED    */
                                                  /*  POINT TO POINT  */
               3 CDSCONN CHAR(1),                 /* LINE CONNECTION  */
                                                  /*  CODE            */
                 4 * BIT(5),                      /* UNUSED           */
                 4 CDSDSAD0 BIT(1),               /* X'04'- DISABLE,  */
                                                  /*  SADZERO,ENABLE  */
                                                  /*  OR DIAL         */
                 4 CDSDSMI BIT(1),                /* X'02'- DISABLE,  */
                                                  /*  SETMODE,ENABLE  */
                                                  /*  OR DIAL FOR SDAI*/
                 4 CDSDISEN BIT(1),               /* X'01'-DISABLE,   */
                                                  /*  ENABLE OR DIAL  */
               3 CDSNPOLL CHAR(1),                /* NUMBER OF POLLING*/
                                                  /*  CHARACTERS (AEX)*/
               3 CDSPOLL CHAR(7),                 /* POLLING CHARACTER*/
               3 CDSNADDR CHAR(1),                /* NUMBER OF ADDRES-*/
                                                  /*  SING CHARACTERS */
                                                  /*  (HEX)           */
               3 CDSADDR CHAR(10),                /* ADDRESSING       */
                                                  /*  CHARACTERS      */
               3 * CHAR(1),                       /* UNUSED           */
               3 CDSNDIAL CHAR(1),                /* NUMBER OF DIAL   */
                                                  /*  DIGITS          */
               3 CDSDIAL CHAR(20),                /* DIAL DIGITS      */
               3 CDSNID CHAR(1),                  /* CPU ID LENGTH    */
               3 CDSCPUID CHAR(15),               /* CPU ID           */
               3 CDSCODE CHAR (1),                /* ADAPTER LINE CODE*/
               3 CDSCFLGS CHAR (1),              /* RESERVED          */
               3 CDSFNFLG CHAR(1),                /* FUNCTION FLAGS   */
                 4 * BIT(4),                      /* UNUSED           */
                 4 CDSEXIBT BIT(1),               /* X'08'-EXHIBIT    */
                 4 CDSDEL BIT(1),                 /* X'04'-DELETE     */
                 4 CDSADD BIT(1),                 /* X'02'-ADD        */
                 4 * BIT(1),                      /* UNUSED           */
               3 CDSRETFL CHAR (1),               /* RETURN CODE      */
                 4 * BIT(7),                      /* UNUSED           */
                 4 CDSINVLD BIT (1),              /* X'01'- INVALID   */
             2 CDSBLDL CHAR(40),                  /* BLDL LIST FOR    */
                                                  /*  CONFIG DIRECTORY*/
               3 CDSMEMBR CHAR(8),                /*  MEMBER NAME     */
               3 CDSTTRC CHAR(3),                 /* CESD RELATIVE TTR*/
               3 CDSTTRC4 CHAR(1),                /* CESD RELATIVE TTR*/
                                                  /*  4TH BYTE        */
               3 CDSTTRD CHAR(3),                 /* DATA RELATIVE TTR*/
               3 CDSTTRD4 CHAR(1),                /* DATA RELATIVE TTR*/
                                                  /*  4TH BYTE        */
               3 CDSTTRNS CHAR(4),                /* RESERVED         */
               3 CDSATTRB CHAR(2),                /* ATTRIBUTES       */
               3 CDSMAIN CHAR(3),                 /* MAIN STORAGE     */
                                                  /*  REQUIREMENTS    */
               3 CDSBLK1 CHAR(2),                 /* LENGTH OF FIRST  */
                                                  /*  BLOCK           */
               3 CDSEPADR CHAR(3),      /* ENTRY POINT ADDR @Y17XAX6*/
               3 CDSTXBLK CHAR(3),      /* FIRST TEXT BLOCK @Y17XAX6*/
                                                  /*  ORIGIN          */
               3 CDSSSI CHAR(7),                  /* CDS SSI          */
             2 CDSCESD CHAR(56) BDY(DWORD),       /* CESD RECORD FOR  */
                                                  /*  CONFIG PDS      */
               3 CDSCESID CHAR(1),                /* CESD ID          */
               3 CDSCESPR CHAR(3),                /* UNUSED           */
               3 CDSESD01 CHAR(2),                /* ESDID OF FIRST   */
                                                  /*  ESD             */
               3 CDSCESCT FIXED(15),              /* COUNT            */
               3 CDSCESNM CHAR(8),                /* MEMBER NAME      */
               3 CDSCESTY CHAR(1),                /* TYPE             */
               3 CDSCESAD PTR(24),                /* ADDRESS          */
               3 CDSCESGM CHAR(1),                /* SEGMENT          */
               3 CDSCESLN CHAR(3),                /* ID AND LENGTH    */
               3 CDSESD02 CHAR(16),               /* SECOND ESD RECORD*/
               3 CDSESD03 CHAR(16),               /* THIRD ESD RECORD */
             2 CDSCNTL CHAR(20),                  /* CONTROL RECORD   */
                                                  /* FOR CONFIG PDS   */
               3 CDSCTLID CHAR(1),                /* CONTROL ID       */
               3 CDSCTLSP CHAR(3),                /* UNUSED           */
               3 CDSCNT01 CHAR(2),   /* # BYTES FOLLOWING CCW @Y17XAX6*/
               3 CDSCNT02 CHAR(2),              /* COUNT   @Y17XAX6 */
               3 CDSCCW CHAR(8),                  /* CHANNEL CONTROL  */
                                                  /*  WORD            */
               3 CDSCESDI CHAR(2),                /* CESD ENTRY       */
               3 CDSRECLN CHAR (2),               /* LENGTH OF TEXT   */
                                                  /* RECORD           */
             2 CDSTTBLE PTR (31),                 /* TERMINAL TABLE   */
                                                  /* ENTRY ADDRESS    */
             2 CDSTINDX FIXED(15),                /* TERMNAME TABLE   */
                                                  /* INDEX            */
             2 * CHAR (142),               /* RESERVED  @Y17XAX6*/
 %MEND:    ;
           2 TOTWAITI CHAR (8) BDY(DWORD),       /* WAITIO TIME      */
                                                 /* INTERVAL         */
           2 TOTGRABP PTR (31),                  /* CURRENT SECONDARY*/
                                                 /* DEVICE POINTER   */
           2 TOTAPNAM CHAR (8),                  /* ALTERNATE PRINTER*/
                                                 /* NAME IN EBCDIC   */
           2 TOTOLTEN PTR (31),                  /* ENTRY POINT      */
                                                 /* ADDRESS OF OLT   */
           2 TOTWAWRK CHAR(80),      /* IEDQWA WORK AREA     @Y17XAUU*/
           2 TOTWOWRK CHAR (140),                /* IEDQWO    SA41602*/
                                                 /* WORKAREA  SA41602*/
           2 * CHAR (52),                        /* PATCH    @Y17XAXU*/
             2 TOTSERV BDY(DWORD),   /* START OF SERVICE     @Y17XAXU*/
                                     /* ROUTINE WORK AREA    @Y17XAXU*/
             2 TOTOBEND CHAR (0);            /* @Y17XAX6*/
 DCL $TOTE BIT(8) CONSTANT('8A'X);      /* TOTE ID @Y17XAX6 */
 %IF CONFG^='YES' %THEN %GOTO MEND1;
 DCL CDSIBMTY BIT(8) CONSTANT('30'X); /* IBM TTY @Y17XAX6*/
 DCL CDSTTY2 BIT(8) CONSTANT('50'X); /* TTY II  @Y17XAX6*/
 DCL CDSWTTY BIT(8) CONSTANT('60'X); /* WTC TTY  @Y17XAX6*/
 DCL CDSSDA1 BIT(8) CONSTANT('70'X); /* SDA 1 @Y17XAX6*/
 DCL CDSSDA2 BIT(8) CONSTANT('90'X);  /* SDA II @Y17XAX6*/
 DCL CDSSWTCH BIT(8) CONSTANT('03'X);      /* SWITCHED WITHOUT
                                                    AUTODIAL  @Y17XAX6*/
 DCL CDSLOCAL BIT(8) CONSTANT('05'X); /* LOCAL  @Y17XAX6*/
 DCL CDSBYP BIT(8) CONSTANT('00'X);  /* BYPASS  @Y17XAX6*/
 DCL CDSDSMIT BIT(8) CONSTANT('03'X);           /* DISABLE,SETMODE
                             ENABLE OR DIAL FOR SDA II  @Y17XAX6*/
 DCL CDSDSAD1 BIT(8) CONSTANT('05'X);           /* DISABLE, SADONE
                                  ENABLE OR DIAL  @Y17XAX6*/
 DCL CDSDSAD2 BIT(8) CONSTANT('06'X);           /* DISABLE, SADTWO
                                 ENABLE OR DIAL  @Y17XAX6*/
 DCL CDSDSAD3 BIT(8) CONSTANT('07'X);           /* DISABLE, SADFOUR
                                   ENABLE OR DIAL  @Y17XAX6*/
 DCL CDSCHNG BIT(8) CONSTANT('06'X);  /* CHANGE  @Y17XAX6*/
 DCL CDSNRML BIT(8) CONSTANT('00'X);  /* NORMAL RETURN  @Y17XAX6 */
 %MEND1:   ;
./ ADD NAME=OP
         MACRO
&MNEM    OP    &IOP,                    INT OPCODE - OMITTED FOR ASMOPS*
               &INPC=YES,               INITIATE PRIVATE CODE          *
               &INHB=NO,                START,DSECT,CSECT,COM HAVE'YES'*
               &DEF=YES,                STMT MAY AFFECT STOR ASS OR ESD*
               &REF=YES,                OPND MAY CONTAIN SYMBOL REF    *
               &REQOP=NO                OPERAND SCAN REQUIRED
.*
         GBLA  &SHIFT(8)                USED IN FOLDING MNEMONIC
         GBLA  &CHAIN(71)               STATISTICS FOR EACH CHAIN
         GBLC  &SEARCH(71)              CHAINS - FOR DOCUMENTATION ONLY
         GBLC  &TABLE(71)               NAME OF PREVIOUS ENTRY IN CHAIN
         GBLC  &CHARVAL                 VALID CHARACTERS FOR MNEMONICS
.*
         LCLA  &HASHVAL                 HASH VALUE
         LCLA  &COUNT,&INDEX            SCRATCHPADS
         LCLA  &TYP                     TYPE OF OP
         LCLB  &FLAGA(8)                FLAGA
         LCLC  &STRING                  SCRATCHPAD
         LCLC  &COMMENT                 USED FOR GENERATING VAR CMTS
         LCLC  &MI                      MNEMONIC IN INTERNAL CODE
.*
.* CHECK PARAMETERS
.*
         AIF   ('&IOP' EQ '').IOPOK     GO IF IOP OMITTED
         AIF   (T'&IOP EQ 'N' AND '&IOP'(1,1) EQ 'X' AND K'&IOP LT     *
               8 ).IOPOK                GO IF MACHINE OP
         MNOTE '***  ERROR  *** - &IOP'
         MEXIT
.IOPOK   AIF   ('&INPC' EQ 'YES' OR '&INPC' EQ 'NO').INPCOK
         MNOTE '***  ERROR  *** - INPC=&INPC'
         MEXIT
.INPCOK  AIF   ('&INHB' EQ 'YES' OR '&INHB' EQ 'NO').INHBOK
         MNOTE '***  ERROR  *** - INHB=&INHB'
         MEXIT
.INHBOK  AIF   ('&DEF' EQ 'YES' OR '&DEF' EQ 'NO').DEFOK
         MNOTE '***  ERROR  *** - DEF=&DEF'
         MEXIT
.DEFOK   AIF   ('&REF' EQ 'YES' OR '&REF' EQ 'NO').REFOK
         MNOTE '***  ERROR  *** - REF=&REF'
         MEXIT
.REFOK   AIF   ('&REQOP' EQ 'YES' OR '&REQOP' EQ 'NO').REQOPOK
         MNOTE '***  ERROR  *** - REQOP=&REQOP'
         MEXIT
.REQOPOK ANOP
.*********************************************************************.
.*                                                                   *.
.* CALCULATE HASH NUMBER,GENERATE CHAIN POINTER AND UPDATE HASH TABLE*.
.*                                                                   *.
.*********************************************************************.
.*
.*   CALCULATE HASH NUMBER (AND BUILD MNEM IN INT CODE CONCURRENTLY)
.*
.HOUT    ANOP                           OUTER LOOP FOR HASHING
&COUNT   SETA  &COUNT+1                 POINT TO NEXT CHAR IN MNEMONIC
&MI      SETC  '&MI,J'.'&MNEM'(&COUNT,1) APPEND ',J' AND NEXT CHAR
&INDEX   SETA  1                        POINT TO FIRST CHAR IN CHARVAL
.HIN     AIF   ('&MNEM'(&COUNT,1) EQ '&CHARVAL'(&INDEX,1)).HFOUND
&INDEX   SETA  &INDEX+1                 NO MATCH - TRY NEXT CHAR
         AIF   (&INDEX LE K'&CHARVAL).HIN  ... IF THERE IS ONE
&STRING  SETC  '&MNEM'(&COUNT,1)        EXTRACT CHARACTER IN ERROR
         MNOTE '***  ERROR  *** - INVALID CHARACTER &STRING IN &MNEM'
         MEXIT
.HFOUND  ANOP
&HASHVAL SETA  &HASHVAL+(&INDEX+9)*&SHIFT(&COUNT) ADD WEIGHTED VALUE
         AIF   (&COUNT LT K'&MNEM).HOUT GO IF SCAN OF MNEM NOT COMPLETE
&HASHVAL SETA  &HASHVAL-&HASHVAL/71*71+1     HERE IS THE HASH NUMBER
&CHAIN(&HASHVAL) SETA &CHAIN(&HASHVAL)+1 COLLECT STATISTICS
.*
.*   GENERATE CHAIN POINTER
.*
&STRING  SETC  '&TABLE(&HASHVAL)-JOPTABLE'
&COMMENT SETC  (20-K'&STRING)' '.'PTR TO PREV ENTRY IN CHAIN &HASHVAL'
&MNEM    DC    AL2(&STRING)&COMMENT
.*
.*   UPDATE HASH TABLE
.*
&TABLE(&HASHVAL) SETC '&MNEM'           REMEMBER THIS ENTRY
&SEARCH(&HASHVAL) SETC '->&MNEM'.'&SEARCH(&HASHVAL)'   BUILD CHAIN
.*********************************************************************.
.*                                                                   *.
.* FIND TYPE OF OP BY LOOKING AT IOP,WHICH MUST BE SPECIFIED AS      *.
.* X'HH' OR X'HHHH' FOR MACHINE OPS, X'HHM' FOR EXTENDED MNEMONICS,  *.
.* AND OMITTED FOR ASSEMBLER OPS.THE TYPE IS SET TO                  *.
.*       0 - MACHINE OP, 1-BYTE OPCODE                               *.
.*       1 - EXTENDED MNEMONIC                                       *.
.*       2 - MACHINE OP, 2-BYTE OPCODE                               *.
.*       3 - ASSEMBLER OP                                            *.
.*                                                                   *.
.*********************************************************************.
&TYP     SETA  K'&IOP/K'&IOP            0 IF OMITTED,1 IF NOT
&TYP     SETA  &TYP*(K'&IOP-5)+(1-&TYP)*3 SET TYPE AS IN BOX ABOVE
.*********************************************************************.
.*                                                                   *.
.* GENERATE 'FLAGS' BYTE                                             *.
.*                                                                   *.
.*********************************************************************.
&INDEX   SETA  &TYP*(3-&TYP)+1          SHOWS THAT INDEX IS REDUNDANT
&COUNT   SETA  K'&MNEM-1                LENGTH OF MNEM -1
&STRING  SETC  'XL.2''&INDEX'',XL.2''&TYP'',XL.1''0'',XL.3''&COUNT'''
         DC    &STRING                            FLAGS
.*********************************************************************.
.*                                                                   *.
.* GENERATE MNEMONIC IN INTERNAL CODE                                *.
.*                                                                   *.
.*********************************************************************.
&STRING  SETC  '&MI'(2,K'&MI-1)         REMOVE FIRST COMMA
         DC    AL1(&STRING)                       MNEMONIC IN INT CODE
.*********************************************************************.
.*                                                                   *.
.* GENERATE FLAGA                                                    *.
.*                                                                   *.
.*********************************************************************.
&FLAGA(1) SETB (&TYP EQ 3)              1 FOR ASM OPS
&FLAGA(3) SETB ('&INPC' EQ 'YES')       INITIATE PRIVATE CODE
&FLAGA(4) SETB ('&INHB' EQ 'YES')       INHIBIT PRIVATE CODE
&FLAGA(5) SETB ('&DEF' EQ 'YES')        STMT MAY AFFECT STOR ASS OR ESD
&FLAGA(6) SETB ('&REF' EQ 'YES')        OPND MAY CONTAIN SYMBOL REF
         AIF   (NOT &FLAGA(1)).MOP      GO IF NOT ASM OP
&FLAGA(2) SETB ('&MNEM' EQ 'EXTRN' OR '&MNEM' EQ 'WXTRN' OR            *
               '&MNEM' EQ 'ENTRY')
&FLAGA(7) SETB ('&REQOP' EQ 'YES')      OPND SCAN REQUIRED
&FLAGA(8) SETB ('&MNEM' EQ 'DC' OR '&MNEM' EQ 'DS' OR '&MNEM' EQ 'DXD')
         AGO   .FLAGA
.MOP     ANOP
&FLAGA(2) SETB (&TYP NE 0)              1 FOR EXT MNEM OR 2-BYTE OPCODE
.*   CALCULATE INSTRUCTION LENGTH FROM FIRST TWO BITS OF OPCODE
&COUNT   SETA  &IOP/B'1000000'          SHIFT RIGHT 6 BITS
         AIF   (&TYP EQ 0).MOPL         GO IF 1-BYTE OPCODE
&COUNT   SETA  &COUNT/B'10000'          SHIFT ANOTHER 4 BITS
         AIF   (&TYP EQ 1).MOPL         GO IF EXT MNEMONIC
&COUNT   SETA  &COUNT/B'10000'          2-BYTE OPCODE - SHIFT 4 MORE
.MOPL    ANOP
&FLAGA(7) SETB (&COUNT EQ 3)            INSTR LENGTH IS 6 BYTES
&FLAGA(8) SETB (&COUNT EQ 1 OR &COUNT EQ 2)  INSTR LENGTH IS 4 BYTES
.FLAGA   ANOP
&STRING  SETC  '&FLAGA(1)&FLAGA(2)&FLAGA(3)&FLAGA(4)&FLAGA(5)&FLAGA(6)&*
               FLAGA(7)&FLAGA(8)'       SET FLAGA
         DC    B'&STRING'                         FLAGA
.*********************************************************************.
.*                                                                   *.
.* GENERATE INTERNAL OPCODE (INCLUDING MASK FOR EXT MNEMONICS)       *.
.*                                                                   *.
.*********************************************************************.
         AIF   (&TYP NE 3).T012
&STRING  SETC  'AL1(JT&MNEM)'           ASM OP - SET INTERNAL OPCODE
         AGO   .IOP
.T012    ANOP                           MACHINE OP
&COUNT   SETA  4*(&TYP+2)               SET BIT LENGTH
&STRING  SETC  'XL.&COUNT'.'&IOP'(2,K'&IOP-1)
.IOP     ANOP
         DC    &STRING                            INTERNAL OPCODE
         SPACE
         MEND
./ ADD NAME=OUTBUFM
         MACRO
         OUTBUFM
OUTBUF   DSECT
         SPACE
CNTLCHAR DS    CL1
ADDR     DS    CL6
         DS    CL4                                            A/1
FIELD1   DS    CL35
         DS    CL3                                            A/1
FIELD2   DS    CL35
         DS    CL3
ASTR1    DS    CL1
EBCDIC   DS    CL32
ASTR2    DS    CL1
         DS    CL12
AOUTBUF  DSECT                                                 @Z40MI3F
ACTLCHAR DS    CL1                                             @Z40MI3F
AADDR    DS    CL6                                             @Z40MI3F
         DS    CL1                                             @Z40MI3F
AFIELD1  DS    CL33                                            @Z40MI3F
AFIELD2  DS    CL33                                            @Z40MI3F
AFIELD3  DS    CL33                                            @Z40MI3F
AFIELD4  DS    CL33                                            @Z40MI3F
AEBCDIC  DS    CL65                                            @Z40MI3F
         EJECT
         MEND
./ ADD NAME=PARTREL
*%/* START OF PL/X COMMENT ENDING ON %MACRO STATEMENT            @L2A
         MACRO
&LABEL   PARTREL &DSN=,                                                X
               &MF=,                                                   X
               &MODE=,                                                 X
               &UCB=,                                                  X
               &TIOT=,                                                 X
               &ERASE=,                                                X
               &VSAMTYPE=,                                             X
               &VSAMFMT=,                                              X
               &VSAMCLLR=,                                             X
               &VSAMSEC=,                                              X
               &VSAMTRKS=
.**** START OF SPECIFICATIONS ****************************************
.*
.*$MAC(PARTREL):     PARTREL INTERFACE TO PARTIAL RELEASE
.*
.*DESCRIPTIVE-NAME = PARTREL INTERFACE TO PARTIAL RELEASE
.*
.*PROPRIETARY V3 STATEMENT
.*LICENSED MATERIALS - PROPERTY OF IBM
.*"RESTRICTED MATERIALS OF IBM"
.*5695-DF1
.*(C) COPYRIGHT 1985  IBM CORP.
.*END PROPRIETARY V3 STATEMENT
.*
.*STATUS = DFSMS/MVS 1.3.0
.*
.*FUNCTION = THIS MACRO WILL SET UP THE PARTREL PARAMETER LIST TO
.*     ALLOW THE CALLER TO RELEASE UNUSED SPACE FROM A SEQUENTIAL OR
.*     PARTITIONED DATA SET.
.*
.*NOTES = THE PARTREL CALL TO DADSM IS USED TO RELEASE UNUSED SPACE
.*     STARTING WITH THE TRACK FOLLOWING THAT DEFINED IN THE FORMAT 1
.*     DSCB FIELD KNOWN AS DS1LSTAR.  IF THE FORMAT 1 DSCB INDICATES
.*     THAT THE ORIGINAL ALLOCATION WAS IN CYLINDER ALLOCATION, THE
.*     DS1LSTAR VALUE WILL BE INCREMENTED TO THE NEXT CYLINDER
.*     BOUNDARY.
.*
.*     PARTREL WILL SUPPORT BOTH INDEXED AND NON-INDEXED VTOCS.
.*
.*     THE CALLING PROGRAM:
.*       1. MUST BE APF AUTHORIZED.
.*       2. MUST HAVE ALLOCATED THE VOLUME TO THIS TASK AND ENSURE
.*          IT WILL STAY MOUNTED DURING THE PARTREL FUNCTION.
.*       3. MUST ENSURE THAT THE REQUESTED DATA SET IS NOT OPEN.
.*       4. MUST NOT BE HOLDING ANY LOCKS.
.*       5. MUST PROVIDE THE ADDRESS OF AN AVAILABLE STANDARD REGISTER
.*          SAVE AREA IN GENERAL REGISTER 13.
.*       6. MAY BE SET TO ANY STORAGE KEY.
.*       7. MAY BE IN EITHER SUPERVISOR OR PROBLEM PROGRAM STATE.
.*
.*     THE USER MAY INCLUDE THE CVAFTBL MAPPING MACRO (ICVAFPRM) IN
.*     THEIR PROGRAM AND TEST THE CVFDFPFT FIELD.  IF CVFPREL IS ON,
.*     THE PARTREL FUNCTION IS SUPPORTED.
.*
.*     THE PARTIAL RELEASE WILL FAIL IF THE DATA SET NAME CAN NOT BE
.*     ENQUEUED EXCLUSIVELY (TIOT=ENQ) OR IF THE DATA SET NAME IS  @01C
.*     NOT ALREADY ENQEUED EXCLUSIVELY (TIOT=NOENQ).               @01A
.*
.*     IF 'TTR' OF THE DS1LSTAR FIELD IS ZERO AND THE DATA SET IS
.*     SEQUENTIAL, ALL SPACE IS RELEASED.
.*
.*     'ADDR', IN KEYWORD=ADDR  MF=(E,ADDR)
.*             MUST BE SPECIFIED AS A LABEL OF AN AREA.
.*             THIS LABEL MUST REPRESENT A VALID RX-TYPE ADDRESS
.*             WHEN USED IN THE MACRO'S EXECUTE-FORM, AND A VALID
.*             A-TYPE ADDRESS WHEN USED IN THE MACRO'S LIST-FORM.
.*
.*     'REG', IN KEYWORD=(REG)  MF=(E,(REG))
.*             MAY BE SPECIFIED AS ANY REGISTER, 2 - 12.
.*
.*
.*KEYWORDS APPLICABLE TO THE PARTREL MACRO ARE:
.*
.*  MF=        THE 'MF' KEYWORD IS REQUIRED.  IT'S SUB-PARAMETERS WILL
.*             DETERMINE WHETHER THE PARTREL PARAMETER LIST IS EXPANDED
.*             AND/OR EXECUTABLE INSTRUCTIONS ARE GENERATED TO INVOKE
.*             DADSM PARTIAL RELEASE.  THE FOLLOWING SUB-PARAMETERS ARE
.*             VALID FOR THE 'MF' KEYWORD:
.*
.*  MF=D       THE SPECIFICATION OF MF=D WILL RESULT IN THE EXPANSION
.*             OF THE PARAMETER LIST IN DSECT FORMAT WITH LABELS FOR
.*             EACH OF THE FIELDS IN THE PARAMETER LIST.  IN THIS FORM
.*             OF THE MACRO, NO OTHER MACRO PARAMETERS WILL APPLY (IF
.*             THEY ARE SPECIFIED, THEY WILL BE IGNORED AND AN MNOTE
.*             ISSUED).  THIS FORM OF THE MACRO WILL NOT GENERATE THE
.*             LOAD, BRANCH, DELETE SEQUENCE FOR DADSM PARTIAL RELEASE.
.*
.*  MF=(E,ADDR)  MF=(E,(REG))  MF=(E,(1))
.*             THE SPECIFICATION OF ANY OF THE ABOVE FORMATS FOR THE
.*             'MF' KEYWORD WILL RESULT IN THE MODIFICATION OF AN
.*             EXISTING PARAMETER LIST.  THE ADDRESS OF THE PARAMETER
.*             LIST IS PROVIDED VIA THE SECOND SUB-PARAMETER ('ADDR',
.*             'REG', OR '1').  THIS SPECIFICATION WILL ALSO RESULT IN
.*             THE GENERATION OF A LOAD FOR, BRANCH TO, AND DELETE OF
.*             THE DADSM PARTIAL RELEASE ENTRY POINT MODULE. THIS
.*             SPECIFICATION IS CALLED THE EXECUTE-FORM OF THE MACRO.
.*
.*  MF=L       THE SPECIFICATION OF MF=L WILL RESULT IN THE EXPANSION
.*             OF THE PARAMETER LIST AND INITIALIZE IT ACCORDING TO
.*             THE SPECIFIED KEYWORDS.  HOWEVER, IF A REGISTER IS USED
.*             INSTEAD OF AN ADDRESS, THE LIST WILL CONTAIN AN ADCON
.*             SPECIFICATION OF ZERO (AN MNOTE WILL BE ISSUED).  THIS
.*             FORM OF THE MACRO WILL NOT GENERATE THE LOAD, BRANCH,
.*             DELETE SEQUENCE FOR DADSM PARTIAL RELEASE.
.*
.*  DSN=ADDR  DSN=(REG)
.*             THE 'DSN' KEYWORD MAY BE USED TO SPECIFY THE ADDRESS
.*             OF AN AREA WHICH DESCRIBES A DATA SET NAME.
.*             THIS PARAMETER WILL NOT APPLY TO THE DSECT-FORM OF THIS
.*             MACRO.  IF THE LIST-FORM IS REQUESTED, THE 'REG' FORMAT
.*             FOR THIS PARAMETER WILL NOT APPLY.
.*             'ADDR', IN DSN=ADDR, MUST BE SPECIFIED AS THE LABEL
.*                   OF AN AREA WHICH DESCRIBES A DATA SET NAME.
.*             'REG', IN DSN=(REG), MUST REPRESENT ANY REGISTER,
.*                   2 - 12.  THE REGISTER WILL CONTAIN THE ADDRESS
.*                   OF AN AREA WHICH DESCRIBES A DATA SET NAME.
.*
.*  MODE=PGM   THE SPECIFICATION OF MODE=PGM IDENTIFIES THAT THE
.*             PROGRAM ISSUING THE PARTREL MACRO IS IN PROBLEM PROGRAM
.*             STATE.  THE PARTREL MACRO WILL DEFAULT TO MODE=PGM
.*             WHENEVER THE 'MODE' KEYWORD IS NOT CODED AS A PARAMETER.
.*             DADSM PARTIAL RELEASE WILL RETURN IN PROBLEM PROGRAM
.*             STATE WHENEVER MODE=PGM IS SPECIFIED OR DEFAULTED.
.*
.*  MODE=SUP   THE SPECIFICATION OF MODE=SUP IDENTIFIES THAT THE
.*             PROGRAM ISSUING THE PARTREL MACRO IS IN SUPERVISOR
.*             STATE.  IF PARTREL MODE=SUP IS ISSUED FROM A PROGRAM
.*             IN PROBLEM PROGRAM STATE, THE REQUESTING PROGRAM IS
.*             SUBJECT TO ABEND.  OTHERWISE DADSM PARTIAL RELEASE WILL
.*             RETURN IN SUPERVISOR STATE.
.*
.*  UCB=(REG)  THE 'UCB' KEYWORD MAY BE USED TO SPECIFY THE ADDRESS
.*             OF THE UCB WHICH DESCRIBES THE VOLUME UPON WHICH THE
.*             DATA SET IS TO BE ALLOCATED.
.*             THIS PARAMETER WILL ONLY APPLY TO THE EXECUTE-FORM
.*             OF THIS MACRO.
.*             'REG', IN UCB=(REG), MUST REPRESENT ANY REGISTER,
.*                   2 - 12.  THE REGISTER WILL CONTAIN THE ADDRESS
.*                   OF THE UCB.
.*                                                                 @01A
.*  TIOT=      THE 'TIOT' KEYWORD IS AN OPTIONAL PARAMETER.        @01A
.*             IT'S SUB-PARAMETERS DETERMINE IF PARTIAL RELEASE    @01A
.*             SHOULD OBTAIN EXCLUSIVE ENQUES ON SYSZTIOT AND      @01A
.*             SYSDSN.  THE PARTREL MACRO WILL DEFAULT TO THE      @01A
.*             SETTING IN THE LIST FORM OF THE PARAMETER LIST IF   @01A
.*             THE KEYWORD IS OMITTED.                             @01A
.*                                                                 @01A
.*  TIOT=ENQ   THE SPECIFICATION OF TIOT=ENQ IDENTIFIES THAT       @01A
.*             PARTIAL RELEASE WILL OBTAIN EXCLUSIVE ENQUES ON     @01A
.*             SYSZTIOT AND SYSDSN.  IF EITHER OF THESE EXCLUSIVE  @01A
.*             ENQUES CANNOT BE OBTAINED, THE REQUEST IS FAILED.   @01A
.*                                                                 @01A
.*  TIOT=NOENQ THE SPECIFICATION OF TIOT=NOENQ IDENTIFIES THAT     @01A
.*             PARTIAL RELEASE WILL NOT OBTAIN THE SYSZTIOT AND    @01A
.*             SYSDSN ENQUES.  THE CALLER IS REQUIRED TO HOLD AN   @01A
.*             EXCLUSIVE ENQUE ON SYSDSN.  PARTIAL RELEASE WILL    @01A
.*             FAIL THE REQUEST IF THIS ENQUE IS NOT ALREADY HELD. @01A
.*                                                                 @01A
.*  ERASE=     THE 'ERASE' KEYWORD IS AN OPTIONAL PARAMETER.       @02A
.*             SUB-PARAMETERS DETERMINE IF PARTIAL RELEASE         @02A
.*             SHOULD ERASE, NOT ERASE, OR TEST FOR ERASE OF       @02A
.*             RELEASED SPACE.  THE PARTREL MACRO WILL DEFAULT     @02A
.*             TO THE SETTINGS IN THE LIST FORM OF THE PARAMETER   @02A
.*             LIST IF THE KEYWORD IS OMITTED.                     @02A
.*                                                                 @02A
.*  ERASE=YES  THE SPECIFICATION OF ERASE=YES IDENTIFIES THAT      @02A
.*             PARTIAL RELEASE WILL ERASE THE RELEASED SPACE.      @02A
.*                                                                 @02A
.*  ERASE=NO   THE SPECIFICATION OF ERASE=NO IDENTIFIES THAT       @02A
.*             PARTIAL RELEASE WILL NOT ERASE THE RELEASED SPACE.  @02A
.*                                                                 @02A
.*  ERASE=TEST THE SPECIFICATION OF ERASE=TEST IDENTIFIED THAT     @02A
.*             PARTIAL RELEASE WILL ISSUE A RACROUTE TO DETERMINE  @02A
.*             IF RELEASED SPACE SHOULD BE ERASED.                 @02A
.*                                                                 @03A
.*  VSAMTYPE=  THE 'VSAMTYPE' KEYWORD IS AN OPTIONAL PARAMETER     @03A
.*             SUB-PARAMETERS DETERMINES THE TYPE OF VSAM          @03A
.*             DATASET.                                            @03A
.*                                                                 @03A
.*  VSAMTYPE=KSDS  THIS IS THE ONLY TYPE OF VSAM DATASET           @03A
.*                 WHICH PARTIAL RELEASE WILL ATTEMPT TO RELESE    @03A
.*                 ALLOCATED BUT UNUSED SPACE.                     @03A
.*                                                                 @03A
.*  VSAMTYPE=ESDS  RRDS  LDS  VRRDS                             @03A
.*                                                                 @03A
.*                 PARTIAL RELEASE WILL REJECT THESE FORMS         @03A
.*                 OF VSAM DATASETS.                               @03A
.*                                                                 @03A
.*  VSAMFMT=   THE 'VSAMFMT' KEYWORD IS AN OPTIONAL PARAMETER,     @03A
.*             BUT IS REQUIRED WHEN 'VSAMTYPE' IS ALSO SPECIFIED   @03A
.*             SUB-PARAMETERS DETERMINE THE FORMAT OF THE          @03A
.*             REQUESTED VSAM DATASET.                             @03A
.*                                                                 @03A
.*  VSAMFMT=EXTD  THIS INDICATES THAT THE REQUESTED VSAM DATASET   @03A
.*                IS AN EXTENDED FORMAT VSAM DATASET.  PARTIAL     @03A
.*                RELEASE WILL ATTEMPT TO FREE ALLOCATED BUT       @03A
.*                UNUSED SPACE.                                    @03A
.*                                                                 @03A
.*  VSAMFMT=STD   PARTIAL RELEASE WILL REJECT THIS FORMAT          @03A
.*                OF VSAM DATASET.                                 @03A
.*                                                                 @03A
.*  VSAMCLLR=  THE 'VSAMCALLR' KEYWORD IS AN OPTIONAL PARAMETER,   @03A
.*             BUT IS REQUIRED WHEN 'VSAMTYPE' IS ALSO SPECIFIED.  @03A
.*             SUB-PARAMETERS DETERMINE WHO IS THE CALLER OF       @03A
.*             PARTIAL RELEASE.                                    @03A
.*                                                                 @03A
.*  VSAMCLLR=VSAMCLSE                                              @03A
.*                                                                 @03A
.*             IF VSAM CLOSE IS SET AND THE CALLER IS              @03A
.*             AUTHORIZED (KEY < 8) THEN PARTIAL RELEASE WILL      @03A
.*             CALL CATALOG WITH 'VSAMCLSE' BEING SET.             @03A
.*                                                                 @03A
.*             IF VSAM CLOSE IS SET AND THE CALLER IS              @03A
.*             NOT-AUTORIZDED (KEY=8) THEN PARTIAL RELEASE         @03A
.*             WILL TURN OFF THE 'VSAMCLSE' BIT AND TURN ON THE    @03A
.*             NOTVSAM (PRLVCNV) BIT.                              @03A
.*                                                                 @03A
.*  VSAMCLLR=NOTVSAM                                               @03A
.*                                                                 @03A
.*             WHEN PARTIAL RELEASE CALLS CATALOG SERVICES         @03A
.*             PARTIAL RELEASE WILL INDICATE THAT THE CALLER OF    @03A
.*             PARTIAL RELEASE IS NOT VSAM CLOSE.                  @03A
.*                                                                 @03A
.*                                                                 @03A
.*  VSAMSEC=   THE 'VSAMSEC' KEYWORD IS AN OPTIONAL PARAMETER,     @03A
.*             BUT IS REQUIRED WHEN 'VSAMTYPE' IS ALSO SPECIFIED.  @03A
.*             SUB-PARAMETERS DETERMINE WHO IS THE CALLER OF       @03A
.*             PARTIAL RELEASE.                                    @03A
.*                                                                 @03A
.*  VSAMSEC=BYPASS                                                 @03A
.*                                                                 @03A
.*             IF THE CALLER OF PARTIAL RELEASE IS KEY < 8 THEN    @03A
.*             PARTIAL RELEASE WILL PASS TO CATALOG, THE           @03A
.*             BYPASS SECURITY CHECKING BIT INDICATING THAT        @03A
.*             CATALOG CAN BYPASS SECURITY CHECKING.               @03A
.*                                                                 @03A
.*             IF THE CALLER OF PARTIAL RELEASE IS KEY = 8 THEN    @03A
.*             PARTIAL RELEASE WILL TURN OFF THE BYPASS BIT        @03A
.*             BEFORE CALLING CATALOG.  THIS WILL FORCE CATALOG    @03A
.*             TO PERFORM SECURITY CHECKING.                       @03A
.*                                                                 @03A
.*  VSAMSEC=NOBYPASS                                               @03A
.*                                                                 @03A
.*             PARTIAL RELEASE WILL TURN OFF THE BYPASS BIT        @03A
.*             BEFORE CALLING CATALOG.  THIS WILL FORCE CATALOG    @03A
.*             TO PERFORM SECURITY CHECKING.                       @03A
.*                                                                 @03A
.*             THE 'VSAMTRKS' KEYWORD IS AN OPTIONAL PARAMETER,    @03A
.*             BUT IS REQUIRED WHEN 'VSAMTYPE' IS ALSO SPECIFIED.  @03A
.*             SUB-PARAMETERS DETERMINE WHO IS THE CALLER OF       @03A
.*             PARTIAL RELEASE.                                    @03A
.*                                                                 @03A
.*                                                                 @03A
.*                                                                 @03A
.*  VSAMTRKS=ADDR  VSAMTRKS=(REG)                                 @03A
.*                                                                 @03A
.*         THE 'VSAMTRKS' KEYWORD MAY BE USED TO SPECIFY THE       @03A
.*         ADDRESS OF AN AREA WHICH CONTAINS THE NUBER OF TRACKS   @03A
.*         RELEASED BY THE PARTIAL RELEASE FUNCTION.               @03A
.*         THIS PARAMETER WILL NOT APPLY TO THE DSECT-FORM OF THIS @03A
.*         MACRO.  IF THE LIST-FORM IS REQUESTED, THE 'REG' FORMAT @03A
.*         FOR THIS PARAMETER WILL NOT APPLY.                      @03A
.*         'ADDR', IN VSAMTRKS=ADDR, MUST BE SPECIFIED AS THE      @03A
.*         LABEL OF AN AREA WHICH WILL CONTAIN THE NUMBER OF       @03A
.*         TRACKS RELEASED.  THIS IS A 4 BYTE FIELD.               @03A
.*         'REG', IN VSAMTRKS=(REG), MUST REPRESENT ANY REGISTER,  @03A
.*         2 - 12.  THE REGISTER WILL CONTAIN THE ADDRESS          @03A
.*         OF AN AREA WHICH WILL CONTAIN THE NUMBER OF TRACKS      @03A
.*         RELEASED.                                               @03A
.*
.*SUMMARY OF PARAMETERS -- KEYWORD=OPTION COMBINATIONS:
.*
.*        THE 'MF' KEYWORD IS REQUIRED.  THE SPECIFICATION OF KEYWORDS
.*        'DSN' 'MODE' AND/OR 'UCB' IS DEFINED AS A FUNCTION OF 'MF'
.*
.*                MF   DSN    MODE   UCB    TIOT   ERASE           @01C
.*                --   ----   ----   ----   ----   -----           @01C
.*                D    IG     IG     IG     IG     IG              @01C
.*                E    OPT    KWD    REG    OPT    OPT             @01C
.*                L    ADDR   KWD    IG     OPT    OPT             @01C
.*
.*
.*                MF   VSAMTYPE   VSAMFMT   VSAMSEC   VSAMTRKS     @03A
.*                --   --------   -------   -------   --------     @03A
.*                D    IG         IG        IG        IG           @03A
.*                E    OPT        OPT       OPT       OPT          @03A
.*                L    OPT        OPT       OPT       ADDR         @03A
.*
.*        ENTRIES IN THE ABOVE TABLE IDENTIFY RESTRICTIONS ON THE
.*        PARTREL MACRO PARAMETERS AS:
.*
.*        ADDR THE PARAMETER IS OPTIONAL.  IF THE PARAMETER IS
.*             SPECIFIED, IT IS RESTRICTED TO THE KEYWORD=LABEL
.*             FORMAT.  IF THE PARAMETER IS SPECIFIED IN THE
.*             KEYWORD=(REG) FORMAT:
.*                1. THE PARAMETER IS IGNORED, AND
.*                2. ONE 4 LEVEL MNOTE IS ISSUED FOR THE MACRO CALL
.*                   (IF NO MAJOR ERROR IS FOUND).
.*
.*        IG   IF THE PARAMETER IS SPECIFIED:
.*                1. THE PARAMETER IS IGNORED, AND
.*                2. ONE 4 LEVEL MNOTE IS ISSUED FOR THE MACRO CALL
.*                   (IF NO MAJOR ERROR IS FOUND).
.*
.*        KWD  THE PARAMETER IS OPTIONAL.  THE 'MODE' PARAMETER
.*             MAY BE SPECIFIED AS EITHER MODE=PGM OR MODE=SUP.
.*             IF THE 'MODE' PARAMETER IS NOT SPECIFIED, MODE=PGM
.*             WILL BE ASSUMED.
.*
.*        OPT  THE PARAMETER IS OPTIONAL.  IF THE PARAMETER IS
.*             SPECIFIED, EITHER FORMAT:  KEYWORD=LABEL, OR
.*             KEYWORD=(REG) MAY BE USED.
.*
.*        REG  THE PARAMETER IS OPTIONAL.  IF THE PARAMETER IS
.*             SPECIFIED, IT IS RESTRICTED TO THE KEYWORD=(REG)
.*             FORMAT.
.*
.*        ALL REFERENCES TO THE WORD 'OPTIONAL' IS RELATIVE TO
.*        PARAMETER SPECIFICATION ON THE MACRO CALL.  WHEN DADSM
.*        PARTIAL RELEASE IS INVOKED, VALUES FOR BOTH 'DSN' AND 'UCB'
.*        MUST BE DEFINED OR THE PARTIAL RELEASE WILL FAIL.
.*
.*
.*MODULE-TYPE = MACRO
.*
.*PROCESSOR = ASSEMBLER LANGUAGE
.*
.*ATTRIBUTES = EXECUTABLE MACRO
.*
.*ENTRY-POINT = MACRO STATEMENT.
.*
.*INPUT = SEE DESCRIPTION OF KEYWORDS UNDER 'FUNCTION'.
.*
.*OUTPUT = PARTREL PARAMETER LIST WITH THE FLAGS AND THE ADDRESSES
.*         SET DEPENDING UPON THE KEYWORDS SPECIFIED AS DEFINED
.*         UNDER 'KEYWORDS' ABOVE.
.*
.*EXIT-NORMAL = MEND STATEMENT.
.*
.*EXIT-ERROR  = MNOTE AND MEND STATEMENT.  MNOTES WILL BE GENERATED
.*              FOR ANY OF THE FOLLOWING ERRORS ENCOUNTERED:
.*
.*              FOR ALL FORMS OF THE MACRO:
.*                 1. MF IS A REQUIRED KEYWORD.
.*                 2. INVALID OPERAND - KEYWORD=OPERAND.
.*                 3. ONE OR MORE PARAMETERS IGNORED DUE TO
.*                    MF=OPERAND.
.*
.*              FOR THE EXECUTE FORM OF THE MACRO:
.*                 1. MF=(E,ADDR) FORM: SUPPLY PARAMETER LIST ADDRESS.
.*
.*EXTERNAL-REFERENCES = NONE
.*
.*TABLES = NONE
.*
.*MACROS = DELETE, IHBINNRA, LOAD
.*
.*CHANGE-ACTIVITY = NEW MACRO
.*
.*$L0=MVS/XA,HDP2210,,STLAM: INTERFACE MACRO TO PARTIAL RELEASE
.*$01=OZ94340,HDP2210,,STLMC: SUPPORT SYSZTIOT BYPASS FOR HSM      @01A
.*$02=OZ94337,HDP2210,,STLMC: SUPPORT ERASE, NOERASE ON PARTREL    @02A
.*$03=OW03622,HDZ11B0,,SJPLMKD: SUPPORT VSAM PARTIAL RELEASE       @03A
.*
.**** END OF SPECIFICATIONS ******************************************
.*
         LCLB  &DSNA      DSN=ADDR WILL BE USED
         LCLB  &DSNR      DSN=(REG) WILL BE USED
         LCLB  &TRKSA     VSAMTRKS=ADDR WILL BE USED               @03A
         LCLB  &TRKSR     VSAMTRKS=(REG) WILL BE USED              @03A
         LCLB  &ERRORSW   A MAJOR ERROR WAS DETECTED
         LCLC  &L         LOCAL LABEL VARIABLE
         LCLB  &MFD       MF=D WAS SPECIFIED
         LCLB  &MFE       MF=(E,..) WAS SPECIFIED
         LCLB  &MFL       MF=L WAS SPECIFIED
         LCLA  &NO        BRANCH INDEX NUMBER
         LCLA  &NMASK1    USED TO RESET PARTREL FLAGS (BYTE1)      @03C
         LCLA  &OMASK1    USED TO SET PARTREL FLAGS   (BYTE1)      @03C
         LCLA  &NMASK2    USED TO RESET PARTREL FLAGS (BYTE2)      @03C
         LCLA  &OMASK2    USED TO SET PARTREL FLAGS   (BYTE2)      @03C
         LCLB  &UCBR      UCB=(REG) WILL BE USED
         LCLB  &WARNSW    A WARNING ERROR WAS DETECTED
         LCLB  &NB1(8)    BITS TO RESET PARTREL FLAG BYTE  (BYTE1) @03C
         LCLB  &OB1(8)    BITS TO SET PARTREL FLAG BYTE    (BYTE1) @03C
         LCLB  &NB2(8)    BITS TO RESET PARTREL FLAG BYTE  (BYTE2) @03C
         LCLB  &OB2(8)    BITS TO SET PARTREL FLAG BYTE    (BYTE2) @03C
&NO      SETA  &SYSNDX                  SET BRANCH INDEX NUMBER
.*
.* ********************************************************************
.* *  VERIFICATION 1: MF PARAMETER
.* ********************************************************************
.*
.V1      AIF   ('&MF' EQ '').V1ER2      IF NO MF GIVEN, BRANCH, ERROR
         AIF   ('&MF'(1,2) EQ '(E').V1E IF E FORM, BRANCH
         AIF   ('&MF' EQ 'L').V1L       IF L FORM, BRANCH
         AIF   ('&MF' NE 'D').V1ER1     IF NOT D FORM, BRANCH, ERROR
&MFD     SETB  1                        ELSE SET MF=D FOUND
         AGO   .V1X                       AND CONTINUE
.*
.V1L     ANOP
&MFL     SETB  1                        SET MF=L FOUND
         AGO   .V1X                     AND CONTINUE
.*
.V1E     ANOP
&MFE     SETB  1                        SET MF=E FOUND
         AIF   (N'&MF EQ 2).V1X         IF TWO PARMS ON MF, BRANCH
         AIF   (N'&MF EQ 1).V1ER3       IF ONE PARM, BRANCH, ERROR
.V1ER1   ANOP
         SPACE 1
         MNOTE 8,'***  IHB001 INVALID OPERAND - MF=&MF'
         AGO   .V1ERX                   GO SET ERROR FLAG
.*
.V1ER2   ANOP
         SPACE 1
         MNOTE 8,'***  IHB002 MF IS A REQUIRED KEYWORD'
         AGO   .V1ERX                   GO SET ERROR FLAG
.*
.V1ER3   ANOP
         SPACE 1
         MNOTE  8,'***  IHB004 MF=(E,ADDR) FORM: SUPPLY PARAMETER LIST X
               ADDRESS'
.V1ERX   ANOP
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V1X     ANOP
.*
.* ********************************************************************
.* *  V2: DSN= PARAMETER
.* ********************************************************************
.*
.V2      AIF   ('&DSN' EQ '').V2X       IF DSN NOT GIVEN, BRANCH
         AIF   (&MFD).V2NOTE            IF D FORM, BRANCH, WARNING
         AIF   ('&DSN'(1,1) EQ '(').V2R IF DSN=(REG), BRANCH
&DSNA    SETB  1                        ELSE SET DSN=ADDR
         AGO   .V2X                       AND CONTINUE
.*
.V2R     AIF   (&MFL).V2NOTE            IF L FORM, BRANCH, WARNING
         AIF   (N'&DSN NE 1).V2ER1      IF NE ONE PARM, BRANCH, ERROR
&DSNR    SETB  1                        SET DSN=(REG)
         AGO   .V2X                     AND CONTINUE
.*
.V2ER1   ANOP
         SPACE 1
         MNOTE 8,'***  IHB005 INVALID OPERAND - DSN=&DSN'
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V2NOTE  ANOP
&WARNSW  SETB  1                        SET WARNING SWITCH ON
.V2X     ANOP
.*
.* ********************************************************************
.* *  V3: MODE=  PARAMETER
.* ********************************************************************
.*
.V3      AIF   ('&MODE' EQ '').V3X      IF MODE NOT GIVEN, BRANCH
         AIF   (&MFD).V3NOTE            IF D FORM, BRANCH, WARNING
         AIF   ('&MODE' EQ 'PGM').V3X   IF MODE=PGM, BRANCH
         AIF   ('&MODE' NE 'SUP').V3ER1 IF NOT MODE=SUP, BRANCH, ERROR
&OB1(1)  SETB  1                        ELSE SET MODE=UP          @03C
         AGO   .V3X                       AND CONTINUE
.*
.V3ER1   ANOP
         SPACE 1
         MNOTE 8,'***  IHB006 INVALID OPERAND - MODE=&MODE'
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V3NOTE  ANOP
&WARNSW  SETB  1                        SET WARNING SWITCH ON
.V3X     ANOP
.*
.* ********************************************************************
.* *  V4: UCB= PARAMETER
.* ********************************************************************
.*
.V4      AIF   ('&UCB' EQ '').V4X       IF UCB NOT GIVEN, BRANCH
         AIF   (&MFD OR &MFL).V4NOTE    IF D OR L FORM, GO SET WARNING
         AIF   ('&UCB'(1,1) NE '(').V4ER1 IF NOT UCB=(REG), BRANCH, ERR
         AIF   (N'&UCB NE 1).V4ER1      IF NE ONE PARM, BRANCH, ERROR
&UCBR    SETB  1                       ELSE SET UCB=(REG)
         AGO   .V4X                       AND CONTINUE
.*
.V4ER1   ANOP
         SPACE 1
         MNOTE 8,'***  IHB007 INVALID OPERAND - UCB=&UCB'
         SPACE 1
&ERRORSW SETB  1                        SET ERROR SWITCH ON
.V4NOTE  ANOP
&WARNSW  SETB  1                        SET WARNING SWITCH ON
.V4X     ANOP
.*
.* ********************************************************************
.* *  V5: TIOT= PARAMETER                                          @01A
.* ********************************************************************
.*
.V5      ANOP                                                      @01A
&NB1(2)  SETB  ('&TIOT' EQ '')          SET 'AND' BIT              @03C
         AIF   ('&TIOT' EQ '').V5X      IF TIOT NOT GIVEN, BRANCH  @01A
         AIF   (&MFD).V5NOTE            IF D FORM, ISSUE WARNING   @01A
         AIF   ('&TIOT' EQ 'ENQ').V5X   IF TIOT=ENQ, BRANCH        @01A
&OB1(2)  SETB  ('&TIOT' EQ 'NOENQ')     SET 'OR' BIT               @03C
         AIF   ('&TIOT' EQ 'NOENQ').V5X IF TIOT=NOENQ, BRANCH      @01A
.V5ER1   ANOP                                                      @01A
         SPACE 1                                                   @01A
         MNOTE 8,'***  IHB008 INVALID OPERAND - TIOT=&TIOT'        @01A
         SPACE 1                                                   @01A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @01A
.V5NOTE  ANOP                                                      @01A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @01A
.V5X     ANOP                                                      @01A
.*
.* ********************************************************************
.* *  V6: ERASE= PARAMETER                                         @02A
.* ********************************************************************
.*
.V6      ANOP                                                      @02A
&NB1(3)  SETB  ('&ERASE' EQ '')         SET 'AND' BIT              @03C
&NB1(4)  SETB  (&NB1(3))                SET 'AND' BIT              @03C
         AIF   ('&ERASE' EQ '').V6X     IF ERASE NOT GIVEN, BRANCH @02A
         AIF   (&MFD).V6NOTE            IF D FORM, ISSUE WARNING   @02A
         AIF   ('&ERASE' EQ 'TEST').V6X IF ERASE=TEST, BRANCH      @02A
&OB1(3)  SETB  ('&ERASE' EQ 'NO')       SET 'OR' BIT               @03C
&OB1(4)  SETB  ('&ERASE' EQ 'YES')      SET 'OR' BIT               @03C
         AIF   (&OB1(3) OR &OB1(4)).V6X IF YES OR NO SPECIFIED, BR @02A
.V6ER1   ANOP                                                      @02A
         SPACE 1                                                   @02A
         MNOTE 8,'***  IHB009 INVALID OPERAND - ERASE=&ERASE'      @02A
         SPACE 1                                                   @02A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @02A
.V6NOTE  ANOP                                                      @02A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @02A
.V6X     ANOP                                                      @02A
.*                                                                 @03A
.* *************************************************************** @03A
.* *  V7: VSAMTYPE= PARAMETER                                      @03A
.* *************************************************************** @03A
.*                                                                 @03A
.V7      ANOP                                                      @03A
&NB2(1)  SETB  ('&VSAMTYPE' EQ '')    SET TYPE KSDS  = 0           @03A
&NB2(2)  SETB  (&NB2(1))              SET TYPE ESDS  = 0           @03A
&NB2(3)  SETB  (&NB2(1))              SET TYPE RRDS  = 0           @03A
&NB2(4)  SETB  (&NB2(1))              SET TYPE VRRDS = 0           @03A
&NB2(5)  SETB  (&NB2(1))              SET TYPE LDS   = 0           @03A
.*                                                                 @03A
         AIF   ('&VSAMTYPE' EQ '').V7W  VSAM DATASET NOT SPECIFIED @03A
         AIF   ('&VSAMFMT'  EQ '').V7ER1                           @03A
         AIF   ('&VSAMCLLR' EQ '').V7ER2                           @03A
         AIF   ('&VSAMSEC'  EQ '').V7ER3                           @03A
.*       AIF   ('&VSAMTRKS' EQ '').V7ER4                           @03A
         AGO   .V7T                                                @03A
.*                                                                 @03A
.V7W     ANOP                                                      @03A
         AIF   ('&VSAMFMT'  NE '').V7ER6                           @03A
         AIF   ('&VSAMCLLR' NE '').V7ER7                           @03A
         AIF   ('&VSAMSEC'  NE '').V7ER8                           @03A
         AIF   ('&VSAMTRKS' NE '').V7ER9                           @03A
.*                                                                 @03A
.V7T     ANOP                                                      @03A
         AIF   ('&VSAMTYPE' EQ '').V7X                             @03A
         AIF   (&MFD).V7NOTE            IF D FORM, ISSUE WARNING   @03A
.*                                                                 @03A
&OB2(1)  SETB  ('&VSAMTYPE' EQ 'KSDS')                             @03A
&OB2(2)  SETB  ('&VSAMTYPE' EQ 'ESDS')                             @03A
&OB2(3)  SETB  ('&VSAMTYPE' EQ 'RRDS')                             @03A
&OB2(4)  SETB  ('&VSAMTYPE' EQ 'VRRDS')                            @03A
&OB2(5)  SETB  ('&VSAMTYPE' EQ 'LDS')                              @03A
         AIF   (&OB2(1) OR &OB2(2) OR &OB2(3)).V7X                 @03A
         AIF   (&OB2(4) OR &OB2(5)).V7X                            @03A
.*                                                                 @03A
.V7ER5   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'***IHB010 INVALID OPERAND - VSAMTYPE=&VSAMTYPE'  @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER1   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB011 PARAMETER VSAMFMT MUST BE SPECIFIED'  @03A
         MNOTE 8,'***        WHEN PARAMETER VSAMTYPE IS SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER2   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB012 PARAMETER VSAMCLLR MUST BE SPECIFIED' @03A
         MNOTE 8,'***        WHEN PARAMETER VSAMTYPE IS SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER3   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB013 PARAMETER VSAMSEC MUST BE SPECIFIED'  @03A
         MNOTE 8,'***        WHEN PARAMETER VSAMTYPE IS SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER4   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB014 PARAMETER VSAMTRKS MUST BE SPECIFIED' @03A
         MNOTE 8,'***        WHEN PARAMETER VSAMTYPE IS SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER6   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB015 PARAMETER VSAMFMT MUST NOT BE'        @03A
         MNOTE 8,'***    SPECIFIED WHEN VSAMTYPE IS NOT SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER7   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB016 PARAMETER VSAMCLLR MUST NOT BE'       @03A
         MNOTE 8,'       SPECIFIED WHEN VSAMTYPE IS NOT SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER8   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB017 PARAMETER VSAMSEC MUST NOT BE'        @03A
         MNOTE 8,'       SPECIFIED WHEN VSAMTYPE IS NOT SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ER9   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'*** IHB018 PARAMETER VSAMTRKS MUST NOT BE'       @03A
         MNOTE 8,'       SPECIFIED WHEN VSAMTYPE IS NOT SPECIFIED' @03A
         SPACE 1                                                   @03A
         AGO   .V7ERROR                                            @03A
.*                                                                 @03A
.V7ERROR ANOP                                                      @03A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @03A
.V7NOTE  ANOP                                                      @03A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @03A
.V7X     ANOP                                                      @03A
.*                                                                 @03A
.* *************************************************************** @03A
.* *  V8: VSAMTRKS= PARAMETER                                      @03A
.* *************************************************************** @03A
.*                                                                 @03A
.V8      AIF   ('&VSAMTRKS' EQ '').V8X    IF VSAMTRKS NOT GIVEN,BR @03A
         AIF   (&MFD).V8NOTE            IF D FORM, BRANCH, WARNING @03A
         AIF   ('&VSAMTRKS'(1,1) EQ '(').V8R IF DSN=(REG), BRANCH  @03A
&TRKSA   SETB  1                        ELSE SET DSN=ADDR          @03A
         AGO   .V8X                       AND CONTINUE             @03A
.*                                                                 @03A
.V8R     AIF   (&MFL).V8NOTE            IF L FORM, BRANCH, WARNING @03A
         AIF   (N'&VSAMTRKS NE 1).V8ER1 IF NE 1 PARM, BRANCH, ERROR@03A
&TRKSR   SETB  1                        SET DSN=(REG)              @03A
         AGO   .V8X                     AND CONTINUE               @03A
.*                                                                 @03A
.V8ER1   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'***  IHB019 INVALID OPERAND - VSAMTRKS=&VSAMTRKS'@03A
         SPACE 1                                                   @03A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @03A
.V8NOTE  ANOP                                                      @03A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @03A
.V8X     ANOP                                                      @03A
.*                                                                 @03A
.* *************************************************************** @03A
.* *  V9: VSAMFMT= PARAMETER                                       @03A
.* *************************************************************** @03A
.*                                                                 @03A
.V9      ANOP                                                      @03A
&NB2(6)  SETB  ('&VSAMFMT' EQ '')       SET 'AND' BIT              @03A
&NB2(7)  SETB  (&NB2(6))                SET 'AND' BIT              @03A
         AIF   ('&VSAMFMT' EQ '').V9X   IF VSAMFMT NOT GIVEN, BR.  @03A
         AIF   (&MFD).V9NOTE            IF D FORM, ISSUE WARNING   @03A
&OB2(6)  SETB  ('&VSAMFMT' EQ 'EXTD')   SET 'OR' BIT               @03A
&OB2(7)  SETB  ('&VSAMFMT' EQ 'STD')    SET 'OR' BIT               @03A
         AIF   (&OB2(6) OR &OB2(7)).V9X IF YES OR NO SPECIFIED, BR @03A
.V9ER1   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'***IHB020 INVALID OPERAND - VSAMFMT=&VSAMFMT'    @03A
         SPACE 1                                                   @03A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @03A
.V9NOTE  ANOP                                                      @03A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @03A
.V9X     ANOP                                                      @03A
.*                                                                 @03A
.*                                                                 @03A
.* *************************************************************** @03A
.* *  VA: VSAMCLLR= PARAMETER                                      @03A
.* *************************************************************** @03A
.*                                                                 @03A
.VA      ANOP                                                      @03A
&NB1(5)  SETB  ('&VSAMCLLR' EQ '')      SET 'AND' BIT              @03A
&NB1(6)  SETB  (&NB1(5))                SET 'AND' BIT              @03A
         AIF   ('&VSAMCLLR' EQ '').VAX  IF VSAMCLLR NOT GIVEN, BR. @03A
         AIF   (&MFD).VANOTE            IF D FORM, ISSUE WARNING   @03A
&OB1(5)  SETB  ('&VSAMCLLR' EQ 'VSAMCLSE')  SET 'OR' BIT           @03A
&OB1(6)  SETB  ('&VSAMCLLR' EQ 'NOTVSAM')   SET 'OR' BIT           @03A
         AIF   (&OB1(5) OR &OB1(6)).VAX IF YES OR NO SPECIFIED, BR @03A
.VAER1   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'***IHB021 INVALID OPERAND - VSAMCLLR=&VSAMCLLR'  @03A
         SPACE 1                                                   @03A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @03A
.VANOTE  ANOP                                                      @03A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @03A
.VAX     ANOP                                                      @03A
.*                                                                 @03A
.*                                                                 @03A
.* *************************************************************** @03A
.* *  VB: VSAMSEC= PARAMETER                                       @03A
.* *************************************************************** @03A
.*                                                                 @03A
.VB      ANOP                                                      @03A
&NB1(7)  SETB  ('&VSAMSEC' EQ '')       SET 'AND' BIT              @03A
&NB1(8)  SETB  (&NB1(7))                SET 'AND' BIT              @03A
         AIF   ('&VSAMSEC' EQ '').VBX   IF VSAMSEC NOT GIVEN, BR.  @03A
         AIF   (&MFD).VBNOTE            IF D FORM, ISSUE WARNING   @03A
&OB1(7)  SETB  ('&VSAMSEC' EQ 'BYPASS')     SET 'OR' BIT           @03A
&OB1(8)  SETB  ('&VSAMSEC' EQ 'NOBYPASS')   SET 'OR' BIT           @03A
         AIF   (&OB1(7) OR &OB1(8)).VBX IF YES OR NO SPECIFIED, BR @03A
.VBER1   ANOP                                                      @03A
         SPACE 1                                                   @03A
         MNOTE 8,'***IHB022 INVBLID OPERAND - VSAMSEC=&VSAMSEC'    @03A
         SPACE 1                                                   @03A
&ERRORSW SETB  1                        SET ERROR SWITCH ON        @03A
.VBNOTE  ANOP                                                      @03A
&WARNSW  SETB  1                        SET WARNING SWITCH ON      @03A
.VBX     ANOP                                                      @03A
.*                                                                 @03A
.*                                                                 @03A
.* ********************************************************************
.* *  CHECK ERRORS
.* ********************************************************************
.*
         AIF   (&ERRORSW EQ 0).CONT     IF NO MAJOR ERROR, BRANCH
&LABEL   DS    0F  *** INVALID OPERAND(S) FOUND IN MACRO EXPANSION.***
         AGO   .FINISH
.*
.CONT    AIF   (&WARNSW EQ 0).BLD       IF NO WARNING ERROR, BRANCH
         SPACE 1
     MNOTE 4,'***  IHB023 ONE OR MORE PARAMETERS IGNORED DUE TO MF=&MF'
         SPACE 1
.BLD     ANOP                                                      @01A
&NMASK1  SETA  128*&NB1(1)+64*&NB1(2)+32*&NB1(3)+16*&NB1(4)        @03C
&NMASK1  SETA  &NMASK1+8*&NB1(5)+4*&NB1(6)+2*&NB1(7)+1*&NB1(8)     @03A
&OMASK1  SETA  128*&OB1(1)+64*&OB1(2)+32*&OB1(3)+16*&OB1(4)        @03C
&OMASK1  SETA  &OMASK1+8*&OB1(5)+4*&OB1(6)+2*&OB1(7)+1*&OB1(8)     @03A
.*                                                                 @03A
&NMASK2  SETA  128*&NB2(1)+64*&NB2(2)+32*&NB2(3)+16*&NB2(4)        @03A
&NMASK2  SETA  &NMASK2+8*&NB2(5)+4*&NB2(6)+2*&NB2(7)               @03A
&OMASK2  SETA  128*&OB2(1)+64*&OB2(2)+32*&OB2(3)+16*&OB2(4)        @03A
&OMASK2  SETA  &OMASK2+8*&OB2(5)+4*&OB2(6)+2*&OB2(7)               @03A
.*
         AIF   (&MFE).E1                IF E FORM, BRANCH          @01C
&L       SETC  '&LABEL'                 ELSE ASSUME A LABEL WAS GIVEN
         AIF   ('&L' NE '').TSTDL         IF A LABEL WAS GIVEN, BRANCH
&L       SETC  'PRL&NO.S'                 ELSE CONSTRUCT A LABEL
.TSTDL   AIF   (&MFL).L1                    IF L FORM, BRANCH
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR DSECT FORM OF MACRO
.* ********************************************************************
.*
&L       DSECT                          DSECT FOR PARAMETER LIST
PRLPLID  DS    CL4                      EBCDIC 'PREL' FOR PARTREL
PRLNGTH  DS    AL2                      LENGTH OF PARAMETER LIST
PRERRCDE DS    H                        ERROR CODE RETURNED FROM
.*                                        PARTIAL RELEASE
PRLFLAG  DS    XL1                      PARAMETER FLAG BYTE
PRLPGM   EQU   X'00'                    MODE=PGM (PROBLEM PROGRAM)
PRLSUP   EQU   X'80'                    MODE=SUP (SUPERVISOR STATE)
PRLTIOT  EQU   X'40'                    TIOT=NOENQ                 @01A
PRLNERAS EQU   X'20'                    ERASE=NO                   @02A
PRLERASE EQU   X'10'                    ERASE=YES                  @02A
PRLVCLOS EQU   X'08'          VSAMCLLR=VSAMCLSE                    @03A
PRLVCNV  EQU   X'04'          VSAMCLLR=NOTVSAM                     @03A
PRLBYPS  EQU   X'02'          VSAM: BYPASS SECURITY CHECKING       @03A
PRLNBYPS EQU   X'01'          VSAM: SECURITY CHECKING TO BE DONE   @03A
PRLFLAG2 DS    XL1                                                 @03A
PRLVKSDS EQU   X'80'          VSAMTYPE=KSDS                        @03A
PRLVESDS EQU   X'40'          VSAMTYPE=ESDS                        @03A
PRLVRRDS EQU   X'20'          VSAMTYPE=RRDS                        @03A
PRLVVRRD EQU   X'10'          VSAMTYPE=VRRDS                       @03A
PRLVLDS  EQU   X'08'          VSAMTYPE=LDS                         @03A
PRLEXTD  EQU   X'04'          VSAMFMT=Extended format data set     @03A
PRLSTD   EQU   X'02'          VSAMFMT=Standard format data set     @03A
PRLFRES  EQU   X'01'                    RESERVED                   @02C
PRLRSVD  DS    XL2                      RESERVED                   @03C
PRLDSN   DS    A                        DATA SET NAME POINTER
PRLUCB   DS    A                        UCB POINTER
PRLTRKS  DS    A              Ptr to area to contain number of     @03A
.*                                tracks released by partial rel   @03A
.*                             (ONLY VALID FOR VSAM REQUESTS)      @03A
PRLCTGR  DS    F               CATALOG REASON CODE, ONLY VALID     @03A
*                              WHEN REQUEST IS FOR A VSAM DATASET  @03A
*                              (ONLY VALID FOR VSAM REQUESTS)      @03A
PRLEND   EQU   *                        END OF PARAMETER LIST
PRLENGTH EQU   PRLEND-&L                LENGTH OF PARAMETER LIST
         AGO   .FINISH
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR EXECUTE FORM OF MACRO
.* ********************************************************************
.*
.E1      AIF   ('&LABEL' EQ '').E2      IF NO LABEL GIVEN, BRANCH
&LABEL   DS    0H
.E2      AIF   ('&MF(2)' EQ '(1)').E3   IF MF=(E,(1))  BRANCH
         LOAD  EP=IGG020P0              GET ADDR OF IGG020P0 IN REG 0
         IHBINNRA &MF(2)                GET PARM LIST ADDR IN REG 1
         AGO   .E4                      BRANCH AROUND MF=(E,(1)) FORM
.*
.E3      ANOP
         LR    14,1                     SAVE PARM LIST ADDR AROUND LOAD
         LOAD  EP=IGG020P0              GET ADDR OF IGG020P0 IN REG 0
         LR    1,14                     RESTORE PARM LIST ADDR
.*
.E4      ANOP                                                      @01C
         NI    8(1),&NMASK1             RESET FLAG BITS            @01C
         NI    9(1),&NMASK2             RESET FLAG BITS            @01C
.*                                                                 @01D
.E5      ANOP
         AIF   (&OMASK1 EQ 0).E5A       IF NO BITS TO SET, BRANCH  @03C
         OI    8(1),&OMASK1             SET FLAG BITS              @01C
.*                                                                 @03A
.E5A     ANOP                                                      @03A
         AIF   (&OMASK2 EQ 0).E6        IF NO BITS TO SET, BRANCH  @03A
         OI    9(1),&OMASK2             SET FLAG BITS              @03A
.*                                                                 @03A
.E6      AIF   (&DSNR).E7               IF DSN=(REG), BRANCH
         AIF   (&DSNA EQ 0).E6A         IF NOT DSN=ADDR, BRANCH    @03C
         LA    15,&DSN                  GET ADDR OF DATA SET NAME
         ST    15,12(,1)                AND STORE IN PARM LIST
         AGO   .E6A                     BRANCH AROUND DSN=(REG)    @03C
.E7      ANOP
         ST    &DSN(1),12(,1)           STORE ADDR OF DATA SET NAME
.*                                                                 @03A
.E6A     AIF   (&TRKSR).E7A             IF VSAMTRKS=(REG),  BRANCH @03A
         AIF   (&TRKSA EQ 0).E8         IF NOT DSN=ADDR, BRANCH    @03A
         LA    15,&VSAMTRKS              GET ADDR OF DATA SET NAME @03A
         ST    15,20(,1)                AND STORE IN PARM LIST     @03A
         AGO   .E8                      BRANCH AROUND DSN=(REG)    @03A
.E7A     ANOP                                                      @03A
         ST    &VSAMTRKS(1),20(,1)      STORE ADDR OF VSAMTRKS RET @03A
.*                                                                 @03A
.E8      AIF   (&UCBR EQ 0).E9          IF NOT UCB=(REG), BRANCH   @03A
         ST    &UCB(1),16(,1)           STORE UCB PTR IN PARM LIST @03A
.*                                                                 @03A
.E9      ANOP
         LR    15,0                     GET ENTRY ADDRESS TO IGG020P0
         L     14,16                    POINT TO CVT,  TEST FOR MVS/XA
         TM    116(14),X'80'               TM  CVTDCB,CVTMVSE
         BO    PRL&NO.B                 IF XA, BRANCH TO BASSM
         BALR  14,15                    ELSE BALR TO PARTIAL RELEASE
         B     PRL&NO.D                 BRANCH TO DELETE
*
PRL&NO.B DS    0H                       XA IS EXECUTING, USE BASSM
         DC    X'0CEF'                  BASSM 14,15  TO PARTIAL RELEASE
PRL&NO.D DS    0H                       DELETE EP=IGG020P0
         LR    14,15                    SAVE RETURN CODE AROUND DELETE
         DELETE EP=IGG020P0             FINISHED WITH IGG020P0
         LTR   15,14                    RESTORE RETURN CODE
         AGO   .FINISH                  EXECUTE FROM IS DONE
.*
.* ********************************************************************
.* *  BEGIN BUILD FOR LIST FORM OF MACRO
.* ********************************************************************
.*
.L1      ANOP
&L       DS    0F
         DC    CL4'PREL'                EBCDIC 'PREL' FOR PARTREL
         DC    AL2(PRL&NO.E-&L)         LENGTH OF PARAMETER LIST
         DC    H'0'                     ERROR CODE RETURNED FROM
.*                                        PARTIAL RELEASE
.*                                                               3 @01D
.L2      ANOP
         DC    AL1(&OMASK1)             PARAMETER FLAG BYTE1       @03C
         DC    AL1(&OMASK2)             PARAMETER FLAG BYTE2       @03A
.L3      ANOP
         DC    XL2'00'                  RESERVED
.*
         AIF   (&DSNA).L4               IF DSN=ADDR, BRANCH
         DC    A(0)                     ADDRESS OF DATA SET NAME
         AGO   .L5                      BRANCH AROUND DSN=ADDR
.L4      ANOP
         DC    A(&DSN)                  ADDRESS OF DATA SET NAME
.*
.L5      ANOP
         DC    A(0)                     UCB ADDRESS
.*                                                                 @03A
         AIF   (&TRKSA).L6              IF VSAMTRKS=ADDR, BRANCH   @03A
         DC    A(0)                     ADDRESS OF VSAMTRKS        @03A
         AGO   .L7                      BR AROUND VSAMTRKS=ADDR    @03A
.L6      ANOP                                                      @03A
         DC    A(&VSAMTRKS)             ADDRESS OF VSAMTRKS        @03A
.L7      ANOP                                                      @03A
         DC    F'0'                     CATALOG REASON CODE, ONLY  @03A
*                                       VALID WHEN CATALOG FAILED  @03A
*                                       THE PARTREL REQUEST FOR A  @03A
*                                       VSAM DATASET.              @03A
*                                                                  @03A
.*                                                                 @03A
PRL&NO.E EQU   *                        END OF PARTREL PARM LIST
.*
.FINISH  ANOP
         MEND
**/ PARTREL: MACRO KEYS(0:1(DSN_NAME,DSN_ADDR),
*                       MODE,
*                       RETCODE,
*                       RSNCODE,
*                       CATALOG_REASON_CODE,
*                       0:1(UCB_NAME,UCB_ADDR),
*                       TIOT,
*                       ERASE,
*                       VSAM_TYPE,
*                       VSAM_FORMAT,
*                       VSAM_CALLER,
*                       VSAM_SECURITY,
*                       0:1(VSAM_TRACKS_NAME,VSAM_TRACKS_ADDR),
*                       MF);
*  ANS('?'  MACLABEL  ' PARTRELP '  MACKEYS  ';') RESCAN SKIP;
* %END PARTREL;
./ ADD NAME=PCBTRACE
         MACRO
&LABEL   PCBTRACE &PCBPTR=PCBPTR,&ID=
.*
.**********************************************************************
.*                                                                    *
.*01* MACRO-NAME = PCBTRACE                                           *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = PCBTRACE TRACE POINT CODE GENERATOR          *
.*                                                                    *
.*01* COPYRIGHT: 5740-XYN COPYRIGHT IBM CORP. 1981,                   *
.*               LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,          *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1326                                         *
.*                                                                    *
.*01* FUNCTION = GENERATE CODE FOR A PCBTRACE TRACE POINT             *
.*                                                                    *
.*01* MODULE-TYPE = MACRO                                             *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER                                           *
.*                                                                    *
.*02* MACRO SIZE = 21 LOC                                             *
.*                                                                    *
.*01* MACROS = IHBERMAC                                               *
.*                                                                    *
.*01* CHANGE-ACTIVITY =                                               *
.*                                                                    *
.*  $L0=EXTREAL, JBB1326, 800512, PD18:                               *
.*                                                                    *
.*01* MNOTES = IHB001 ID OPERAND REQUIRED, NOT SPECIFIED.             *
.*             IHB002 INVALID ID OPERAND SPECIFIED-&ID                *
.*                                                                    *
.**********************************************************************
         LCLC  &L
         AIF   (T'&ID EQ 'O').NOID
         AIF   (K'&ID NE 2 OR '&ID' EQ '00').BADID
         AIF   ('&ID'(1,1) LT 'A' OR '&ID'(1,1) GT '9').BADID
         AIF   ('&ID'(1,1) GT 'F' AND '&ID'(1,1) LT '0').BADID
         AIF   ('&ID'(2,1) LT 'A' OR '&ID'(2,1) GT '9').BADID
         AIF   ('&ID'(2,1) GT 'F' AND '&ID'(2,1) LT '0').BADID
&L       SETC  'PCBTRC'.'&ID'
         ENTRY &L
&L       DS    0H
&LABEL   MVC   PCBEND-PCB+1(1,&PCBPTR),PCBEND-PCB+2(&PCBPTR)
*                         PUSH DOWN THE TRACE ENTRY STACK CONTENTS
*                         (THE NTH ENTRY BECOMES THE N-1TH ENTRY,
*                         AND THE OLDEST ENTRY POSITION IS DROPPED).
         MVI   PCBEND-PCB+2(&PCBPTR),X'&ID'  SET NEWEST STACK ENTRY
         ORG   &L         WHEN TRACE IS INACTIVE...
         B     *+10       THIS BRANCH INSTRUCTION OVERLAYS THE 'MVC'.
*                         AT NIP TIME, WHEN 'PVTTRXLN' IS NOT EQUAL
*                         ZERO, 'IEAVPCB' ACTIVATES THE TRACE BY OVER-
*                         LAYING THIS BRANCH INSTRUCTION AND THE LAST
*                         BYTE OF THE 'MVI' WITH THEIR PROPER
*                         ACTIVATION VALUES.
         ORG   &L+10      ORG FORWARD TO END OF GENERATED CODE
         MEXIT
.NOID    IHBERMAC 1006,ID
         MEXIT
.BADID   IHBERMAC 1001,ID,&ID
         MEND
./ ADD NAME=PCDATMAC
         MACRO
         PCDATMAC
.*
.**********************************************************************
.*                                                                    *
.*01* MACRO-NAME = PCDATMAC                                           *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = PROGRAM CHECK FLIH DAT OFF / DAT ON MACRO    *
.*                                                                    *
.*01* COPYRIGHT: 5740-XYN COPYRIGHT IBM CORP. 1980,                   *
.*               LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,          *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = GENERATE EQUATES AND TABLES FOR THE PROGRAM FLIH     *
.*               DAT OFF / DAT ON LINKAGES                            *
.*                                                                    *
.*01* MODULE-TYPE = MACRO                                             *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER                                           *
.*                                                                    *
.*02* MACRO SIZE = 100 LOC                                            *
.*                                                                    *
.*01* MACROS = NONE                                                   *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G386PXT - CROSS MEMORY SUPPORT               *
.*                                                                    *
.*01* MNOTES = NONE                                                   *
.*                                                                    *
.*01* MACDATE = 80.029                                                *
.*                                                                    *
.**********************************************************************
.* A-000000-999999                                             @G386PXT
.*
         LCLC  &MLNUM,&MLSTNUM
.*
         TITLE 'PCDATMAC - DAT OFF / DAT ON ENTRY INDICATORS'
***********************************************************************
*                                                                     *
*        MAINLINE ENTRY INDICATORS                                    *
*                                                                     *
***********************************************************************
         SPACE 1
MLSTATID EQU   0                  MLSTATUS ENTRY INDICATOR
PFRSPIID EQU   4                  PFRSPI ENTRY INDICATOR
PFRMCID  EQU   8                  PFRMC ENTRY INDICATOR
PRCK1ID  EQU   12                 PROGCK1 ENTRY INDICATOR
PRCK2ID  EQU   16                 PROGCK2 ENTRY INDICATOR
DATERRID EQU   20                 DATERR ENTRY INDICATOR
REFCVTID EQU   24                 CVT REFRESH ENTRY INDICATOR
.*
&MLNUM   SETC  '7'                NUMBER OF MAINLINE ENTRY POINT
.*                                INDICATORS - THIS MUST BE CHANGED
.*                                IF ADDITIONAL DAT ON ENTRY POINTS
.*                                ARE NEEDED
         SPACE 3
***********************************************************************
*                                                                     *
*        MLSTATUS RETURN INDICATORS                                   *
*                                                                     *
***********************************************************************
         SPACE 1
MCINTR   EQU   0                  MC INTERRUPT MLSTATUS INDICATOR
PERSSR   EQU   4                  PER/SPACE SWITCH MLSTATUS INDICATOR
PERRTMR  EQU   8                  PER/SPACE SWITCH MLTRACE INTICATOR
PGMCKR   EQU   12                 PGM INTERRUPT MLSTATUS INDICATOR
ADREXCPR EQU   16                 ADDR INTERRUPT MLSTATUS INDICATOR
PGFAULTR EQU   20                 PAGE FAULT MLSTATUS
*                                 INDICATOR
TRANSPCR EQU   24                 TRANS SPEC MLSTATUS
*                                 INDICATOR
TRCR0OKR EQU   28                 TRANS SPEC WITH GOOD CR0
*                                 INDICATOR
.*
&MLSTNUM SETC  '8'                NUMBER OF MLSTATUS RETURN
.*                                INDICATORS - THIS MUST BE CHANGED
.*                                IF ADDITIONAL MLSTATUS RETURN POINTS
.*                                ARE NEEDED
.*
         AIF   ('&SYSECT' NE 'IEAVEPC').EXIT  IF THE CSECT IS NOT
.*                                THE DAT ON PORTION OF THE PGM FLIH,
.*                                'IEAVEPC' THEN DO NOT EXPAND THE
.*                                ROUTER TABLES
.*
         TITLE 'PCDATMAC - MAINLINE ENTRY POINT ROUTER TABLE'
***********************************************************************
*                                                                     *
*        MAINLINE ENTRY POINT ROUTER TABLE                            *
*                                                                     *
***********************************************************************
         SPACE 2
MLENTRY  DC    &MLNUM.F'0'        INITIALIZE ENTIRE TABLE WITH ZEROS
         SPACE 1
         ORG   MLENTRY+MLSTATID   ORG TO MLSTATID POSITION
         DC    A(MLSTATUS)        MLSTATUS ENTRY ADDRESS
         SPACE 1
         ORG   MLENTRY+PFRSPIID   ORG TO PFRSPIID POSITION
         DC    A(PFRSPI)          PFRSPI ENTRY ADDRESS
         SPACE 1
         ORG   MLENTRY+PFRMCID    ORG TO PFRMCID POSITION
         DC    A(PFRMC)           PFRMC ENTRY ADDRESS
         SPACE 1
         ORG   MLENTRY+PRCK1ID    ORG TO PRCK1ID POSITION
         DC    A(PROGCK1)         PROGCK1 ENTRY ADDRESS
         SPACE 1
         ORG   MLENTRY+PRCK2ID    ORG TO PRCK2ID POSITION
         DC    A(PROGCK2)         PROCCK2 ENTRY ADDRESS
         SPACE 1
         ORG   MLENTRY+DATERRID   ORG TO DATERRID POSITION
         DC    A(DATERR)          DATERR ENTRY ADDRESS
         SPACE 1
         ORG   MLENTRY+REFCVTID   ORG TO REFCVTID POSITION
         DC    A(REFCVT)          REFCVT ENTRY ADDRESS
         ORG
         TITLE 'PCDATMAC - MLSTATUS RETURN POINT ROUTER TABLE'
***********************************************************************
*                                                                     *
*        MLSTATUS RETURN POINT ROUTER TABLE                           *
*                                                                     *
***********************************************************************
         SPACE 2
MLSTRTR  DC    &MLSTNUM.F'0'      INITIALIZE ENTIRE TABLE WITH ZEROS
         SPACE 1
         ORG   MLSTRTR+MCINTR     ORG TO MCINTR POSITION
         DC    A(MCINT)           MCINT RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+PERSSR     ORG TO PERSSR POSITION
         DC    A(PERSS)           PERSS RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+PERRTMR    ORG TO PERRTMR POSITION
         DC    A(PERRTM)          PERRTM RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+PGMCKR     ORG TO PGMCKR POSITION
         DC    A(PGMCK)           PGMCK RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+ADREXCPR   ORG TO ADREXCPR POSITION
         DC    A(ADREXCP)         ADREXCP RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+PGFAULTR   ORG TO PGFAULTR POSITION
         DC    A(PGFAULT)         PGFAULT RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+TRANSPCR   ORG TO TRANSPCR POSITION
         DC    A(TRANSPC)         TRANSPC RETURN ADDRESS
         SPACE 1
         ORG   MLSTRTR+TRCR0OKR   ORG TO TRCR0OKR POSITION
         DC    A(TRCR0OK)         TRCR0OK RETURN ADDRESS
         ORG
.*
.EXIT    ANOP
         MEXIT
         MEND
./ ADD NAME=PCIPOST
         MACRO
&NAME    PCIPOST &ECB=,&SVAREA=,&RQE=,&CODE=
*
*        THIS MACRO MAY BE USED TO POST FROM PCI APPENDAGES.
*        IF THE I/O REQUEST IS A VIRTUAL REQUEST, THE NORMAL
*        BRANCH INTERFACE TO POST IS EFFECTED. IF THE I/O REQUEST
*        IS NOT A VIRTUAL REQUEST, THE CROSS MEMORY INTERFACE
*        TO POST IS EFFECTED.
*
*         PARAMETERS -
*              &ECB=LABEL OR (REG)  ADDRESS OF ECB
*
*              &SVAREA=LABEL OR (REG) ADDRESS OF 16 WORD SAVE AREA
*
*              &RQE=LABEL OR (REG)  ADDRESS OF RQE
*
*              &CODE=LABEL OR (REG) ADDRESS OF FULLWORD COMPLETION
*                                   CODE OR REGISTER CONTAINING THE
*                                   COMPLETION CODE. THE CODE MUST
*                                   BE LEFT JUSTIFIED WITHIN THE
*                                   WORD OR REGISTER.
*
*         IF &CODE IS OMITTED, THE COMPLETION CODE IN THE IOB
*         IS USED.  ALL OTHER PARAMETERS MUST BE SPECIFIED.
*
*        BASE ADDRESSABILITY OF THE CALLING MODULE IS ASSUMED.
*        REGISTER 9,10,11,12,13, OR 14 MUST NOT BE USED AS THE
*        MODULES BASE REGISTER  ACROSS THIS EXPANSION.
*        REGISTERS 1,9,10,11,12,13 ARE  USED. ALL REGS ARE RESTORED
*
*        MAPPING MACROS REQUIRED -
*              CVT,
*              IHASRB,
*              IHAASVT,
*              IECDRQE,
*              IECDIOSB
*
         AIF   (T'&ECB EQ 'O').NOECB
         AIF   (T'&SVAREA EQ 'O').NOSVARA
         AIF   (T'&RQE EQ 'O').NORQE
         AIF   ('&SVAREA'(1,1) EQ '(').RGST
&NAME    STM   0,15,&SVAREA        SAVE REGISTERS               @YM3186
         LA    9,&SVAREA           SAVE THE SAVE AREA ADDR IN R 9
         AGO   .GEN1
.RGST    ANOP
&NAME    STM   0,15,0&SVAREA       SAVE REGISTERS               @YM3186
         LR    9,&SVAREA(1)        SAVE THE SAVE AREA ADDR IN R 9
.GEN1    LA    14,Z&SYSNDX         POINT TO ZEROS
         AIF   ('&RQE'(1,1) EQ '(').RGRQE
         L     1,&RQE              LOAD POINTER TO RQE
         AGO   .GEN2
.RGRQE   AIF   ('&RQE(1)' EQ '1').GEN2
         L     1,4*&RQE(1).(,9)     LOAD POINTER TO RQE         @YM3186
.GEN2    TM    RQETYPE-RQE(1),X'50' VIRTUAL REQUEST
         BNZ   P&SYSNDX            YES, USE PRESENT MEMORY POST
         LA    14,F&SYSNDX         POINT TO X'80'
         L     13,RQESRB-RQE(1)    LOAD POINTER TO ASSOCIATED SRB
         L     13,SRBPARM-SRB(13)  LOAD POINTER TO IOSB         @YM3186
         LH    13,IOSASID-IOSB(13) LOAD THE ASID FROM THE IOSB  @YM3186
         L     12,CVTPTR           CVT ADDRESS                  @YM3186
         L     12,CVTASVT-CVT(,12) ADRESS SPACE VECTOR TABLE    @YM3186
         SLL   13,2                MULTIPLY ASID BY 4 TO FIND   @YM3186
*                                  * OFFSET IN ASVT FOR THIS ASID
         L     13,ASVTFRST-ASVT(13,12) GET ASCB ADDRESS         @YM3186
         L     12,E&SYSNDX         POINT TO DUMMY ERROR RECOVERY
         IC    0,RQEPRT-RQE(1)     SET REQUESTORS KEY IN 0.    @ZA15372
P&SYSNDX DS    0H
         AIF   ('&ECB'(1,1) EQ '(').RGECB
         L     11,&ECB             LOAD POINTER TO ECB           YM1085
         AGO   .GEN3
.RGECB   AIF   ('&ECB(1)' EQ '11').GEN3                          YM1085
         L     11,4*&ECB(1).(,9)   PLACE POINTER TO ECB IN REG  @YM3186
.GEN3    ICM   11,8,0(14)          SET THE HIGH BYTE             YM1085
         AIF   (T'&CODE EQ 'O').IOBCOD
         AIF   ('&CODE'(1,1) EQ '(').RGCODE
         L     10,&CODE            LOAD THE ECB COMPLETION CODE  YM1085
         AGO   .GEN4
.RGCODE  AIF   ('&CODE(1)' EQ '10').GEN4                         YM1085
         L     10,4*&CODE(1).(,9)  LOAD THE ECB COMPLETION CODE @YM3186
         AGO   .GEN4
.IOBCOD  L     10,RQEIOB-RQE(1)    LOAD IOB ADDRESS              YM1085
         IC    10,4(10)            LOAD THE ECB COMPLETION CODE  YM1085
         SLL   10,24(0)            SHIFT IT TO THE HIGH BYTE    YM2296P
.GEN4    TM    RQETYPE-RQE(1),X'50'  VIRTUAL REQUEST ?         @ZA15372
         BNZ   Q&SYSNDX              YES, BYPASS               @ZA15372
         O     10,F&SYSNDX           NO, SET TO VAL CK ECB     @ZA15372
Q&SYSNDX EQU   *                                               @ZA15372
         L     15,CVTPTR(0,0)      LOAD POINTER TO CVT         @ZA15372
         L     15,CVT0PT01-CVT(,15) LOAD POINTER TO POST ROUTINEYM2296P
         BALR  14,15               POST THE ECB COMPLETE
         LM    0,15,0(9)           RESTORE REGISTERS            @YM3186
         B     S&SYSNDX            SKIP ERROR ROUTINE
         SPACE 2
G&SYSNDX BR    14                  ERROR ROUTINE FOR XMPOST      YM1085
E&SYSNDX DS    0F                  WORD BOUNDARY ALIGNMENT     @ZA29188
         DC    X'80'               RECOVERY IN MASTER MEMORY   @ZA29188
         DC    AL3(G&SYSNDX)       ERROR ROUTINE ADDRESS       @ZA29188
F&SYSNDX DC    X'80000000'         CONSTANT                    @ZA15372
Z&SYSNDX DC    X'00'               ZEROS FOR HIGH BYTE
S&SYSNDX DS    0H                  RETURN TO PCI APPENDAGE      @YM3186
         MEXIT
.NOECB   MNOTE 8,'ECB OPERAND MUST BE SPECIFIED'
         MEXIT
.NOSVARA MNOTE 8,'SVAREA OPERAND MUST BE SPECIFIED'
         MEXIT
.NORQE   MNOTE 8,'RQE OPERAND MUST BE SPECIFIED'
         MEND
./ ADD NAME=PLINK
         MACRO
&NAME    PLINK &LOAD=,&EPLIST=,&CALL=,&SIZE=,                          C
               &DELETE=,&RETURN=,&MF=
.*
.* MACRO NAME: PLINK
.*
.* STATUS:     CHANGE LEVEL 001
.*
.* FUNCTION:   TO PROVIDE THE LINKAGE NECESSARY TO EXECUTE THE PLINK
.*             MODULE. THE MACRO GENERATES A PARAMETER LIST AND/OR
.*             LOADS REGISTER 15 WITH THE ADDRESS OF THE PLINK MODULE
.*             AND REGISTER 1 WITH THE ADDRESS OF A PARAMETER LIST.
.*
.* REGISTER 15 RETURN CODE:    (SET BY LOAD AND DELETE FUNCTIONS ONLY.)
.*
.*             CODE       MEANING
.*
.*              00       THE REQUESTED FUNCTION HAS BEEN ACCOMPLISHED
.*                       SUCCESSFULLY.
.*
.*              04       THE PLINK FACILITY IS NOT AVAILABLE.
.*
.*              08       AN ERROR OTHER THAN THOSE DESCRIBED HAS
.*                       OCCURRED.
.*
.*              0C       LOAD - THE REQUESTED MODULE IS NOT AVAILABLE
.*                       IN THE SYSTEM.
.*                       DELETE - THE SPECIFIED MODULE IS NOT IN CORE.
.*
.*              10       LOAD - THERE IS NOT ENOUGH CORE AVAILABLE.
.*                       DELETE - NEVER RETURNS THIS CODE.
.*
.* PARAMETERS AND/OR KEYWORDS:
.*
.*             LOAD(SUBLIST)-THE ENTRY POINT NAMES OF MODULES TO BE
.*                 LOADED. IF MORE THAN ONE, SEPARATED BY COMMAS AND
.*                 ENCLOSED IN PARENTHESES.
.*
.*             EPLIST-THE ADDRESS OF A LIST WHERE ENTRY POINT ADDRESSES
.*                    OF THE LOADED MODULES WILL BE STORED. MUST
.*                    ACCOMPANY THE LOAD PARAMETER.
.*
.*             SIZE-  INTEGER DEFINING THE TOTAL AMOUNT OF CORE IN 1K
.*
.*                    MULTIPLES REQUIRED TO RUN TEST.
.*             CALL-  MODULE TO TRANSFER CONTROL TO; TWO FORMS ALLOWED,
.*
.*                    1. ADDRESS- LOCATION CONTAINING THE ENTRY POINT.
.*
.*                    2. (15)   - INDICATES REGISTER 15 CONTAINS THE
.*                                ADDRESS. R15 MUST HAVE BEEN LOADED
.*                                PRIOR TO INVOKING PLINK.
.*
.* NOTE:       CALL=(15) CANNOT BE USED WHEN LOADING OR DELETING IN THE
.*             SAME PLINK AS CALL.
.*
.*             DELETE(SUBLIST)-SAME COMMENTS AS APPLY TO LOAD.
.*
.*             RETURN=YES- INDICATES CONTROL IS TO BE RETURNED TO THE
.*                         CALLING MODULE. ITS REGISTERS ARE RESTORED
.*                         AND A BRANCH IS MADE TO THE ADDRESS STORED
.*                         IN REGISTER 14.
.*
.*             MF= E,ADDRESS/(1) INDICATES THE EXECUTE FORM OF THE
.*                 MACRO WITH THE PARAMETER LIST ADDRESS EITHER
.*                 SPECIFIED OR PREVIOUSLY LOADED IN REGISTER 1.
.*
.*
.*             MF= L  INDICATES THE LIST FORM OF THE MACRO WITH NO
.*                    EXECUTABLE CODE GENERATED.
.*
.* RESTRICTIONS: LOAD AND RETURN MAY NOT BE SPECIFIED IN THE SAME
.*               MACRO.
.*               CALL AND RETURN MAY NOT BE SPECIFIED IN THE SAME
.*               MACRO.
.*
.*
.* WARNING:    IF CALL OR RETURN AND LOAD OR DELETE ARE USED IN THE
.*             SAME MACRO AND THE RETURN CODE IS NOT ZERO, A BRANCH
.*             WILL BE MADE AROUND THE RETURN OR CALL INSTRUCTIONS.
.*
.* CONTROL BITS SET BY THIS MACRO:
.*
.*             L&SYSNDX DC B'&L1&C&B&B&D&R&B&S'
.*                                    
.*                               0 0   0 
.*                                       SIZE
.*                                    RETURN
.*                                   DELETE
.*                               CALL
.*                            LOAD
.*
.* GLOBALS SET OR RESET BY THIS MACRO:
.*
.*             &CR AND &MOD(255)
.*
.* GLOBALS EXAMINED BY THIS MACRO: NONE
.*
.* SYMBOLS GENERATED BY THIS MACRO: NONE
.*
.* MNOTES ISSUED BY THIS MACRO:
.*
.*             MNOTE 8,'DELETE AND RETURN INVALID.'
.*
.*             MNOTE 8,'DELETE AND CALL INVALID.'
.*
.*             MNOTE 8,'DELETE AND LOAD INVALID.'
.*
.*             MNOTE 8,'LOAD AND RETURN INVALID.'
.*
.*             MNOTE 8,'CALL AND RETURN INVALID.'
.*
.*             MNOTE 8,'THERE IS NO LIST EXPANSION FOR CALL.'
.*
.*             MNOTE 8,'THERE IS NO LIST EXPANSION FOR RETURN.'
.*
.*             MNOTE 8,'ENTRY POINT LIST ADDRESS MISSING.'
.*
.*             MNOTE 8,'NO MACRO OPERANDS SELECTED.'
.*
.*             MNOTE 8,'REG 15 CANNOT BE USED FOR CALL ADDRESS WHEN
.*                      LOAD OR DELETE ARE SPECIFIED.'
.*
.* REASONS:    ABOVE MNOTES ARE SELF EXPLANATORY.
.*
.* EXAMPLE:
.*
.* *******************************************
.* *  NAME  * OPERATION *       OPERAND      *
.* *******************************************
.* *        *           *                    *
.* * SYMBOL *   PLINK   * LOAD=(SUBLIST),    *
.* *        *           * EPLIST=ADDR,       *
.* *        *           * SIZE=INTEGER,      *
.* *        *           * CALL=ADDR/(15),   *
.* *        *           * DELETE=(SUBLIST),  *
.* *        *           * RETURN=YES,        *
.* *        *           * MF=(E,ADDR/(1))    *
.* *        *           *   =L               *
.* *        *           *                    *
.*
         GBLA  &CR
         GBLC  &MOD(255)
         LCLA  &C1,&C2,&CTR,&N
         LCLB  &L1,&C,&B,&D,&R,&S,&E
         LCLC  &FILEN
&L1      SETB  (T'&LOAD NE 'O')   SET TO 1 IF PARAMETER EXISTS.
&C       SETB  (T'&CALL NE 'O')
&D       SETB  (T'&DELETE NE 'O')
&R       SETB  (T'&RETURN NE 'O')
&S       SETB  (T'&SIZE NE 'O')
&E       SETB  (T'&EPLIST NE 'O')
.*
.* TEST FOR INVALID COMBINATIONS
.*
         AIF   (&L1+&R GT 1).ERR1
         AIF   (&C+&R GT 1).ERR2
         AIF   (&L1+&D GT 1).ERR8
         AIF   (&C+&D GT 1).ERR9
         AIF   (&D+&R GT 1).ERR10
.*
         AIF   (T'&NAME NE 'O').N1
&FILEN   SETC  'A&SYSNDX'
         AGO   .N2
.N1      ANOP
&FILEN   SETC  '&NAME'
.*
.N2      AIF   (&CR NE 0).T2
&CR      SETA  1
.*
.T2      ANOP
&C1      SETA  N'&LOAD            C1=# OF LOAD MODULES
&C2      SETA  N'&DELETE          C2=# OF DELETE MODULES
.*
         AIF   (T'&MF EQ 'O').STD .GO TO STD FORM IF MF OMITTED
         AIF   ('&MF(1)' EQ 'E').EXEC .GOTO EXEC FORM IF MF=E
         AIF   ('&MF(1)' EQ 'L').LISTA .GOTO LIST FORM IF MF=L
.*
.STD     AIF   (&L1 NE 0).LOADA . TEST FOR LOAD PARAM.
         AGO   .DELA .            NO, TRY DELETE
.LOADA   AIF   (&L1+&C GT 1).LOADC . IS IT LOAD&CALL?
.LOADB   ANOP
&FILEN   L     R15,#TABLE         TABLE OF EXECUTIVE ENTRY POINTS
&FILEN   SETC  ' '
         L     R15,28(R15)        ENTRY TO TRANSIENT MANAGER
         LA    R14,R&SYSNDX       RETURN ADDRESS
         CNOP  2,4
         BALR  R1,R15
         AGO   .LISTB             SET UP PARAMETER LIST
.LOADC   AIF   ('&CALL'(1,1) NE '(').LOADB  CHECK FOR REGISTER 15
         AGO   .ERR7
.*
.DELA    ANOP
         AIF   (&D EQ 0).CALLA
         AGO   .LOADB
.CALLA   ANOP
         AIF   (&C NE 1).RETC
.CALLB   AIF   ('&CALL'(1,1) EQ '(').CALLC
&FILEN   L     R15,&CALL
&FILEN   SETC  ' '
         BALR  R14,R15
         MEXIT
.CALLC   ANOP
&FILEN   L     R15,0(R15)
&FILEN         SETC ' '
&FILEN   BALR  R14,R15            BRANCH TO ADDRESS IN R15
         MEXIT
.*
.EXEC    ANOP
         AIF   (N'&MF GE 2).EXECA
         AIF   (&C EQ 1).CALLB
.RETC    ANOP
         AIF   (&R EQ 0).ERR6
&FILEN   L     R13,4(R13)         GET OLD SAVE AREA ADDRESS
&FILEN   SETC  ' '
         LM    R14,R12,12(R13)    RESTORE CALLING PROGRAM'S REGISTERS.
         BR    R14                RETURN
         MEXIT
.EXECA   AIF   ('&MF(2)'(1,1) EQ '(').R1
&FILEN   LA    R1,&MF(2) .        LOAD R1 WITH PARAMETER LIST ADDRESS.
&FILEN   SETC  ' '
.R1      ANOP
&FILEN   L     R15,#TABLE
&FILEN   SETC  ' '
         L     R15,28(R15)
         BALR  R14,R15
         AIF   (&C EQ 0).EXECB
         AIF   ('&CALL'(1,1) EQ '(').ERR7
.CALLD   ANOP
         LTR   R15,R15            TEST RETURN CODE
         BNZ   E&SYSNDX           IF NOT ZERO, BRANCH AROUND CALL
         L     R15,&CALL
         BALR  R14,R15
E&SYSNDX EQU   *
         MEXIT
.EXECB   ANOP
         AIF   (&R EQ 1).RETB
         MEXIT
.RETB    ANOP
         LTR   R15,R15            TEST RETURN CODE
         BNZ   E&SYSNDX
         L     R13,4(R13)         GET CALLING MODULES SAVE AREA
         LM    R14,R12,12(R13)    RESTORE REGISTERS
         BR    R14                RETURN TO CALLING MODULE
E&SYSNDX EQU   *
         MEXIT
.LISTA   ANOP
         AIF   (&C EQ 1).ERR3
         AIF   (&R EQ 1).ERR4
.*
.LISTB   ANOP
&FILEN   DC    A(P&SYSNDX) .      OLTEP PARAMETER LIST ADDRESS
&FILEN   SETC  ' '
         DC    A(L&SYSNDX) .      POINTER TO CONTROL BYTE
         AIF   (&L1 EQ 0).LISTC
         DC    A(L&SYSNDX+4) .    POINTER TO LOAD MODULE LIST
         AIF   (&E EQ 0).ERR5
         DC    A(&EPLIST) .       ENTRY POINT LIST ADDRESS
         AGO   .LISTD
.LISTC   ANOP
         DC    A(0)
         DC    A(0)
.LISTD   ANOP
         AIF   (&D EQ 0).LISTE
         DC    A(D&SYSNDX)        POINTER TO LIST OF DELETED MODULES
         AGO   .DELC
.LISTE   ANOP
         DC    A(0)
.DELC    ANOP
P&SYSNDX DC    B'00000000' .      INDICATORS FOR TRANSIENT MANAGER
         DC    AL1(1) .           MACRO LEVEL
         DC    CL2'28' .          IDENTITY OF MACRO EXPANSION
L&SYSNDX DC    B'&L1&C&B&B&D&R&B&S' .    CONTROL BYTE
         AIF   (T'&SIZE EQ 'O').QA
         DC    AL1(&SIZE)         CORE NEEDED IN 1K MULTIPLES
         AGO   .QB
.QA      ANOP
         DC    AL1(0)             CORE NEEDED IN 1K MULTIPLES
.QB      ANOP
         DC    AL1(&C1)           # OF LOAD MODULES
         DC    AL1(&C2)           # OF DELETED MODULES
         AIF   (&L1 EQ 0).DELB
&CTR     SETA  1
.P2      ANOP
         DC    CL8'&LOAD(&CTR)'
.P3      ANOP
&N       SETA  1
.P4      AIF   ('&LOAD(&CTR)' EQ '&MOD(&N)').EX2
         AIF   (&N EQ &CR).EX3
&N       SETA  &N+1
         AGO   .P4
.EX3     ANOP
         EXTRN &LOAD(&CTR)
&MOD(&CR) SETC '&LOAD(&CTR)'
&CR      SETA  &CR+1
.EX2     ANOP
         AIF   (&CTR EQ &C1).DELB
&CTR     SETA  &CTR+1
         AGO   .P2
.DELB    AIF   (&D EQ 0).DELD
D&SYSNDX EQU   *
&CTR     SETA  1
.PA      ANOP
         DC    CL8'&DELETE(&CTR)'
         AIF   (&CTR EQ &C2).DELD
&CTR     SETA  &CTR+1
         AGO   .PA
.DELD    ANOP
R&SYSNDX DS    0H                 RETURN ON HALFWORD BOUNDARY
.*
         AIF   (&C EQ 0).RETA
         AGO   .CALLD
.RETA    ANOP
         AIF   (&R EQ 1).RETB
         AIF   (&L1+&C+&D+&R EQ 0).ERR6
         MEXIT
.ERR1    MNOTE 8,'LOAD AND RETURN INVALID.'
         MEXIT
.ERR2    MNOTE 8,'CALL AND RETURN INVALID.'
         MEXIT
.ERR3    MNOTE 8,'THERE IS NO LIST EXPANSION FOR CALL.'
         MEXIT
.ERR4    MNOTE 8,'THERE IS NO LIST EXPANSION FOR RETURN.'
         MEXIT
.ERR5    MNOTE 8,'ENTRY POINT LIST ADDRESS MISSING.'
         MEXIT
.ERR6    MNOTE 8,'NO MACRO OPERANDS HAVE BEEN CHOSEN.'
         MEXIT
.ERR7    MNOTE 8,'REG 15 CANNOT BE USED FOR CALL ADDRESS WHEN LOAD OR  C
                DELETE ARE SPECIFIED.'
         MEXIT
.ERR8    MNOTE 8,'DELETE AND LOAD INVALID.'
         MEXIT
.ERR9    MNOTE 8,'DELETE AND CALL INVALID.'
         MEXIT
.ERR10   MNOTE 8,'DELETE AND RETURN INVALID.'
         MEXIT
         MEND
./ ADD NAME=PRPLY
         MACRO
&NAME    PRPLY &SIZE=
&NAME    WRTRP SIZE=&SIZE,DISP=18
         MEND
./ ADD NAME=PSEUDO
         MACRO
&NAME    PSEUDO  &TMP=,                                                X
               &PSEUDO=,                                               X
               &MF=
         GBLA  &$PSEUDO(5)
.*
.*       THIS MACRO SETS UP THE PSEUDO RETRY ROUTINE CONTROL BLOCK USED
.*       BY IKJEHSIR TO SUPPLY THE RETRY ROUTINE WITH ADDRESSABILITY.
.*
.*       &TMP IS THE ADDRESS OF THE WORD CONTAINING REG 1 AS THE TMP
.*             PASSED  TO THE CP.  IF IT IS REG FORM, THE REGISTER
.*             MUST CONTAIN REG 1 AS PASSED BY THE TMP.
.*       &PSEUDO IS THE NAME OF THE PSEUDO MF=L FORM OF PSEUDO
.*
         AIF   ('&MF' EQ 'E').MFE  EXECUTE FORM
.*
.*             LIST FORM
.*
.* CHECK TO SEE IF WE HAVE BEEN THRU ONCE, IF SO NEED A NAME
.*
         AIF   (&$PSEUDO(5) NE 0 AND T'&NAME EQ 'O').SEV0
&$PSEUDO(5) SETA &$PSEUDO(5)+1  SET TIMES THRU SW
         SPACE 1
&NAME  DS  0F   FULLWORD ALIGNMENT
         SPACE 1
         AIF   (T'&NAME NE 'O').HISPS  USE HIS NAME
$PSEUDO   DC    X'980FF008'    LM R0,R15,8(R15) LOAD REGS
         AGO   .DC47
.HISPS   DC    X'980FF008'  LM R0,R15,8(R15) LOAD REGS
.DC47    DC    X'47F0F000'    B  0(R15)  BR TO RETRY
         SPACE 1
.*
.* TO AVOID DUPLICATE NAMES, CHECK 1ST TIME THRU SW
.*
         AIF   (&$PSEUDO(5) GT 1).DSIT   ONLY GEN ONCE
*        THE FOLLOWING 16 DC'S ARE A STORAGE AREA FOR THE
*        RETRY ROUTINE'S REGISTERS.  THE SLOTS FOR R0, R1, R2,
*        AND R15 WILL BE SET UP BY THE STAE EXIT ROUTINE
*        AS FOLLOWS:
*              R0    THE CODE GIVEN TO THE EXIT ROUTINE BY STAE
*              R1    THE ABEND CODE, RIGHT JUSTIFIED
*              R2    THE ENTRY NUMBER IN A CODE LIST
*              R15   THE ADDRESS OF THE RETRY ROUTINE
*
*        IF THE ENTRY IS FOR A 33E ABEND, R13 AND R14 WILL BE
*        SET UP AS FOLLOWS:
*              R13   POINTER TO A SAVE AREA
*              R14   RETURN ADDRESS TO IKJEHSIR
*
         SPACE 1
.*
.* IF THE USER OF THE MACRO USES IT TWICE, THE SECOND TIME
.* IT IS USED, A DS IS GENERATED FOR THE DC'S THAT FOLLOW
.*
$RETRY0  DC    F'0'           STORAGE FOR R0
$RETRY1  DC    F'0'           STORAGE FOR R1
$RETRY2  DC    F'0'                STORAGE FOR R2
$RETRYS  DC    10F'0'              THE REST OF THE REGS
$RETRY13 DC    F'0'               STORAGE FOR R13
$RETRY14 DC    F'0'               STORAGE FOR R14
$RETRY15 DC    F'0'           STORAGE FOR R15
         AGO   .DSIT1 BYPASS
.DSIT    DS    16F STORAGE FOR REGISTERS
         SPACE 1
         AGO   .DSIT3     BYPASS COMMENTS
.DSIT1   ANOP
         SPACE 1
*        THE FOLLOWING WORD IS REQUIRED SO THAT THE PUTLINE
*        ROUTINE CAN BE CALLED BY THE STAE EXIT ROUTINE.
*        IT IS REGISTER 1 AS GIVEN TO THE CP BY THE TMP.
         SPACE 1
$TMPR1   DC    F'0'           REG 1 FROM TMP
         AGO   .DSIT4      BYPASS
.DSIT3   DS    F         STORAGE FOR TMP REG 1
.DSIT4   ANOP
         SPACE 1
         MEXIT
.*
.*             EXECUTE FORM
.*
.*       IF WE HAVE ALREADY GENNED THE TWO DC'S, DONT DO IT AGAIN
.*
.MFE     AIF   (&$PSEUDO(1) EQ 1).NO
.*
.*       NEED A NAME FOR THE BRANCH INSTRUCTION
.*
         AIF   (T'&NAME EQ 'O').NONAM
         SPACE 1
&$PSEUDO(1) SETA 1
         B     &NAME               BR AROUND INSTRUCTIONS
         SPACE 1
$PINSTR  DC    X'980FF008'    LM R0,R15,8(R15)
         DC    X'47F0F000'    B  0(R15)
.NO      SPACE 1
.*
.*       IF HE HAS PASSED ME A NAME FOR THE PSEUDO MF=L, USE IT
.*             IF NOT, WE WILL USE MY GENERATED NAME
.*
         AIF   (T'&PSEUDO EQ 'O').MYNAME
.*
.* CHECK TO SEE IF IN A REGISTER
.*
         AIF   ('&PSEUDO'(1,1) EQ '(').HISREG
&NAME    MVC   &PSEUDO.(8),$PINSTR  MOVE INSTRUCTIONS
         STM   0,15,&PSEUDO+8     STORE REGS
.*             IF NO TMP PARM, GET OUT
         AIF   (T'&TMP EQ 'O').END
         AIF   ('&TMP'(1,1) EQ '(').HISREGN
         L     14,&TMP            GET TMP REG1
         ST    14,&PSEUDO+72      STORE IN LIST
         AGO   .END
.HISREG  ANOP
&NAME    MVC   0(8,&PSEUDO(1)),$PINSTR  MOVE INSTRUCTIONS
         STM   0,15,8(&PSEUDO(1))  STORE REGS
         AIF   (T'&TMP EQ 'O').END
         AIF   ('&TMP'(1,1) EQ '(').HISREGT
         L     14,&TMP            GET TMP REG 1
         ST    14,72(&PSEUDO(1))  STORE IN LIST
         AGO   .END
.HISREGN ST    &TMP(1),&PSEUDO+72  STORE IN LIST
         AGO   .END
.HISREGT ST &TMP(1),72(&PSEUDO(1)) STORE IN LIST
         AGO   .END
.MYNAME  ANOP
&NAME    MVC   $PSEUDO(8),$PINSTR MOVE INSTRUCTIONS
         STM   0,15,$RETRY0    STORE ALL REGS
         AIF   (T'&TMP EQ 'O').END
         AIF   ('&TMP'(1,1) EQ '(').RTMP
         L     14,&TMP        GET TMP REG 1
         ST    14,$TMPR1      STORE IN LIST
.END     SPACE 1
         MEXIT
.RTMP    ST    &TMP(1),$TMPR1 STORE TMP REG 1
         AGO   .END
.NONAM   MNOTE 8,'NAME FIELD OMITTED'
         SPACE 1
         MEXIT
.SEV0    MNOTE *,'PSEUDO MACRO USED MORE THAN ONCE AND NAME OMITTED'
         SPACE 1
         MEXIT
         MEND
./ ADD NAME=PSWGEN
         MACRO
&NAME    PSWGEN &FUNC,&PARM,&REG,&VAR                      PROTOTYPE
         GBLB  &EXECN,&EXECF            MULTIPLE EXPANSION SWITCHES
         LCLC  &HEX,&SUFFIX             CHARACTER VARIABLES
&SUFFIX  SETC  '&SYSNDX'(2,4)           SET 3 CHARACTER SYSNDX VALUE
.*
.*
.*             ALL FUNCTIONS OF THIS MACRO WILL USE CSECT NAME OF THE
.*             INVOKING PROCEDURE FOR FUNCTION NAME...
.*
.*             WHEN MORE THAN ONE CSECT INVOKE THE SAME FUNCTION,
.*             THEY WILL ENTER THE SELECTED CODE VIA 'STACKED' ENTRIES-
.*       SUCH AS -                      .FIRST   ANOP
.*                                      .NEXT    ANOP
.*                                       .LAST   ANOP            ETC.
.*
.***********************
         AIF   ('&FUNC' EQ 'IGG019V5A').LPSW01
         AIF   ('&FUNC' EQ 'IGG019V5B').LPSW02
         AGO   .PSWNG3                  UNSUPPORTED FUNCTION
.LPSW01  ANOP
***********************************************************************
*  THIS FUNCTION OF PSWGEN OWNED AND MAINTAINED BY IBM PERSONNEL,
*  GENERATES CODE FOR LPSW INSTRUCTION FOR 1419 SUPPORT
*        IOSGEN  IGG019V5A,&PARM,&REG
*        &PARM--SYMBOL DEFINING INSTRUCTION ADDRESS TO BE PUT IN PSW
*        &REG--A SUBLIST OF 3 REGISTER NAMES. THE FIRST MUST CONTAIN
*              THE DEB ADDRESS AND THE OTHER TWO MUST BE TWO CONTIGUOUS
*              REGISTERS.
***********************************************************************
         SPACE 1
         MVZ   PSW1+1(1),PTKEY(&REG(1)) PUT USERS PROTECT KEY INTO PSW.
         LA    &REG(2),&PARM            LOAD ADDR
         ST &REG(2),PSW1+4              STORE ADDR IN PSW
         L     &REG(2),PSW2             SAVE FIRST HALF OF RETURN PSW
         LPSW  PSW1                     SET USERS PROTECT KEY-BRANCH
         SPACE 1
         DS    0D
PSW1     DC    X'04'                    AREA
         DC    X'0C'                    FOR
         DC    2X'00'                   BUILDING USERS
         DC    F'0'                     PSW
         SPACE 1
PSW2     DC    X'04'                    FIRST HALF
         DC    X'0C'                    OF RETURN
         DC    2X'00'                   PSW
PTKEY    EQU   24                       DISPLACEMENT TO PROTECT KEY
         MEXIT
.LPSW02  ANOP
*  THIS FUNCTION OF PSWGEN OWNED AND MAINTAINED BY IBM PERSONNEL,
*  GENERATES CODE FOR LPSW INSTRUCTION FOR 1419 SUPPORT
*        IOSGEN  IGG019V5B,&PARM,&REG
*        &PARM--SYMBOL DEFINING INSTRUCTION ADDRESS TO BE PUT IN PSW
*        &REG--A SUBLIST OF 3 REGISTER NAMES. THE FIRST MUST CONTAIN
*              A SAVE AREA ADDRESS (DOUBLE WORD BOUNDARY) AND THE OTHER
*              TWO MUST BE TWO CONTIGUOUS REGISTERS.
         SPACE 1
         LA    &REG(3),&PARM            LOAD ADDR
         STM   &REG(2),&REG(3),0(&REG(1))  PUT PSW IN SAVE AREA
         LPSW  0(&REG(1))               RESTORE KEY 0 AND BRANCH
         MEXIT
.**********************************************************************
.*       ALL MNOTES SHOULD BE PLACED BELOW --
.*
.*                                                                    *
.PSWNG2  MNOTE 8,'*** INSUFFICIENT WORK REGISTERS SPECIFIED.'
         MEXIT
.*                                                                    *
.PSWNG3  MNOTE 8,'*** ERROR IN PARAMETER SET UP, OR ''&FUNC'' NOT A SUP+
               PORTED FUNCTION.'
.*
.PSWGEND MEND
./ ADD NAME=PWRT
         MACRO
&NAME    PWRT  &SIZE=
&NAME    WRTRP SIZE=&SIZE,DISP=12
         MEND
./ ADD NAME=PWTO
         MACRO
&NAME    PWTO  &MT=,&MSG=,&REG=
&NAME    CMWTO MT=&MT,MSG=&MSG,REG=&REG,DISP=6
         MEND
./ ADD NAME=PWTOR
         MACRO
&NAME    PWTOR &MT=,&MSG=,&REG=,&WAIT=YES,&SIZE=
&NAME    CMWTO MT=&MT,MSG=&MSG,REG=&REG,WAIT=&WAIT,DISP=24,SIZE=&SIZE
         MEND
./ ADD NAME=RECORD
         MACRO
&NAME    RECORD &TYPE=,&RCVRY=,&DATAADR=,&PARMADR=,&LENGTH=,           C
               &BUFFER=YES,&POSTING=NO,&HEADER=NO,&JOBNAME=NO,&TIME=NO,C
               &ERRORID=NO                                    @G17EP5W
* MACCOMP-SC1CM
* MACSTAT-@G17EP5W
* MACMEAN-INVOKE RECORDING ROUTINE FOR WTO,SYS1.LOGREC RECORDS OR
*         EMERGENCY REQUESTS
         LCLA  &CTR1,&CTR2,&CTR3                              @G17EP5W
         LCLB  &B(12)
&NAME    DS    0H
&B(1)    SETB  ('&TYPE' EQ 'TERM')         SYSTEM TERMINATION CALL
&B(2)    SETB  ('&TYPE' EQ 'LOGREC')       WRITE TO SYS1.LOGREC
&B(3)    SETB  ('&TYPE' EQ 'WTO')          WRITE TO OPERATOR
&B(4)    SETB  ('&RCVRY' EQ 'ESTAE')       ESTABLISH RECOVERY VIA ESTAE
&B(5)    SETB  ('&RCVRY' EQ 'SETFRR')      ESTABLISH RECVRY VIA SETFRR
&B(6)    SETB  ('&BUFFER' EQ 'YES')        DATA MUST BE BUFFERED
&B(7)    SETB  ('&BUFFER' EQ 'NO')         DATA MUST NOT BE BUFFERED
&B(8)    SETB  ('&HEADER' EQ 'YES')        BUILD AN AR149 HEADER
&B(9)    SETB  ('&JOBNAME' EQ 'YES')       INSERT JOBNAME AFTER HEADER
&B(10)   SETB  ('&TIME' EQ 'YES')          RETURN TIME PLACED IN RECORD
&B(11)   SETB  ('&POSTING' EQ 'YES')       POST CALLER WHEN BUFFER FREE
&B(12)   SETB  ('&ERRORID' EQ 'YES')       INCLUDE ERRORID IN RECORD
&CTR1    SETA  128*&B(1)+64*&B(2)+32*&B(3)+&B(12)              @G17EP5W
&CTR2    SETA  128*&B(4)+64*&B(5)+32*&B(6)+16*&B(7)+8*&B(8)+4*&B(9)+2*&C
               B(10)+&B(11)
&CTR3    SETA  &B(8)+&B(9)+&B(10)+&B(11)+&B(12)                @G17EP5W
         AIF   (&CTR1 LE 1).ERR1                               @G17EP5W
         AIF   ('&HEADER' NE 'YES' AND '&HEADER' NE 'NO').ERR10
         AIF   ('&TIME' NE 'YES' AND '&TIME' NE 'NO').ERR11
         AIF   ('&JOBNAME' NE 'YES' AND '&JOBNAME' NE 'NO').ERR12
         AIF   ('&POSTING' NE 'YES' AND '&POSTING' NE 'NO').ERR13
         AIF   ('&BUFFER' NE 'YES' AND '&BUFFER' NE 'NO' AND '&BUFFER' N
               NE 'OPT').ERR14
         AIF   ('&ERRORID' NE 'YES' AND '&ERRORID' NE 'NO').ERR15
         AIF   ('&TYPE' EQ 'WTO' AND '&HEADER' EQ 'YES').ERR9
         AIF   ('&TYPE' EQ 'TERM').TERM
         AIF   ('&RCVRY' NE 'ESTAE' AND '&RCVRY' NE 'SETFRR').ERR2
         AIF   ('&DATAADR' NE '' AND '&PARMADR' NE '').ERR4
         AIF   ('&DATAADR' EQ '' AND '&PARMADR' EQ '').ERR3
         AIF   (&CTR3 NE 0 AND '&PARMADR' EQ '').ERR5
         AIF   ('&JOBNAME' EQ 'YES' AND '&HEADER' EQ 'NO').ERR6
         AIF   ('&HEADER' EQ 'YES' AND '&BUFFER' NE 'YES').ERR7
         AIF   ('&LENGTH' EQ '' AND ('&TYPE' NE 'WTO' OR '&BUFFER' NE  N
               'NO')).ERR8
         AIF   ('&ERRORID' EQ 'YES' AND '&TYPE' NE 'LOGREC').ERR16
         AIF   ('&LENGTH' EQ '').LNGR0
         AIF   ('&LENGTH' EQ '(0)').LNGR0
         AIF   ('&LENGTH'(1,1) EQ '(').LNGRN
         CNOP  0,4
         B     *+8                        BRANCH AROUND CONSTANTS
         DC    AL1(&CTR1)                 BIT SETTING FOR TYPE
         DC    AL1(&CTR2)                 BIT SETTING FOR OPTIONS
         DC    AL2(&LENGTH)               LENGTH OF DATA SUPPLIED
         L     0,*-4                      REGISTER 0=OPTIONS AND LNGTH
         AGO   .LOADR1
.LNGRN   LR    0,&LENGTH                  LENGTH IN REG0
.LNGR0   CNOP  0,4                        BRANCH AROUND CONSTANTS
         B     *+6                        BRANCH AROUND CONSTANTS
         DC    AL1(&CTR1)                 BIT SETTING FOR TYPE
         DC    AL1(&CTR2)                 BIT SETTING FOR OPTIONS
         ICM   0,12,*-2                    TYPE AND OPTS IN REG0
.LOADR1  AIF   ('&PARMADR' NE '').PARM
         IHBINNRA &DATAADR                LOAD REG1 WITH ADDR OF DATA
         LCR   1,1                        TWO'S COMPLIMENT FOR DATAADR
         AGO   .LNKAGE
.TERM    LA    0,&CTR1.(0,0)              BIT SETTING FOR TYPE=TERM
         SLL   0,24(0)                    IN HIGH ORDER BYTE OF REG0
         AGO   .LNKAGE
.PARM    IHBINNRA &PARMADR                REG1 WITH ADDR OF PARMLIST
.LNKAGE  L     15,FLCCVT-PSA(0,0)         ADDRESS OF CVT
         L     15,CVTRECRQ-CVTMAP(,15)    ADDRESS OF RECORDING FACILITY
         BALR  14,15                      BRANCH TO RECORDING FACILITY
         AGO   .END
.ERR1    MNOTE 12,'TYPE OPERAND REQD - NOT SPECIFIED'
         MEXIT
.ERR2    MNOTE 12,'RCVRY OPERAND REQD - NOT SPECIFIED'
         MEXIT
.ERR3    MNOTE 12,'DATAADR OR PARMADR OPERAND REQD - NOT SPECIFIED'
         MEXIT
.ERR4    MNOTE 12,'DATAADR AND PARMADR OPERANDS BOTH SPECIFIED'
         MEXIT
.ERR5    MNOTE 12,'PARMADR REQD WITH HEADER, JOBNAME, TIME, POSTING, ORC
                ERRORID'
         MEXIT
.ERR6    MNOTE 12,'HEADER=YES REQUIRED IF JOBNAME=YES'
         MEXIT
.ERR7    MNOTE 12,'BUFFER=YES REQUIRED IF HEADER=YES'
         MEXIT
.ERR8    MNOTE 12,'LENGTH OPERAND REQD - NOT SPECIFIED'
         MEXIT
.ERR9    MNOTE  12,'HEADER=YES INVALID WITH TYPE=WTO'
         MEXIT
.ERR10   IHBERMAC  54,,&HEADER
         MEXIT
.ERR11   IHBERMAC 54,,&TIME
         MEXIT
.ERR12   IHBERMAC 54,,&JOBNAME
         MEXIT
.ERR13   IHBERMAC 54,,&POSTING
         MEXIT
.ERR14   IHBERMAC 54,,&BUFFER
         MEXIT
.ERR15   IHBERMAC 54,,&ERRORID
         MEXIT
.ERR16   MNOTE 12,'TYPE=LOGREC REQUIRED IF ERRORID=YES'
         MEXIT
.END     MEND
./ ADD NAME=REGEQU
         MACRO
         REGEQU
***********************************************************************
R0       EQU   0
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
R6       EQU   6
R7       EQU   7
R8       EQU   8
R9       EQU   9
R10      EQU   10
R11      EQU   11
R12      EQU   12
R13      EQU   13
R14      EQU   14
R15      EQU   15
***********************************************************************
         MEND
./ ADD NAME=RESPL
*        %GOTO PLSRESPL;          /*BILINGUAL HEADER
         MACRO
&NAME    RESPL &DSECT=YES,&EQUATES=NO
         LCLC  &A0010,&A0020,&A0030,&A0040,&A0050
         LCLC  &A0060,&A0070,&A0080,&A0090,&A0095,&A0096       @Y17XAUU
         LCLC  &A0097,&A0098,&A0099                            @Y17XAXU
*
*        TOTE RESIDENT CONTROL BLOCK
*
*        STATUS = VERSION 10.0                                 @Y17XAXU
*
         AIF   ('&DSECT' EQ 'NO').BYP010
&A0010   SETC  '0'
&A0020   SETC  '0'
&A0030   SETC  '0'
&A0040   SETC  '0'
&A0050   SETC  '0'
&A0060   SETC  '0'
&A0070   SETC  '0'
&A0080   SETC  '0'
&A0090   SETC  '0'
&A0095   SETC  '0'                                               S22024
&A0096   SETC  '0'                                             @Y17XAUU
&A0097   SETC  '0'                                             @Y17XAXU
&A0098   SETC  '0'                                             @Y17XAUU
&A0099   SETC  '0'                                             @Y17XAUU
         AGO   .BYP020
.BYP010  ANOP
&A0010   SETC  'ERROR'
&A0020   SETC  'SMGR'
&A0030   SETC  'IEDQWA'
&A0040   SETC  'OLTETXR'
&A0050   SETC  'PRFSTXT-PRFSUNIT'
&A0060   SETC  'QREMFRX'
&A0070   SETC  'QREMELX'
&A0080   SETC  'QADDNDX'
&A0090   SETC  'QADDAFX'
&A0095   SETC  'STAERT'                                          S22024
&A0096   SETC  'HIERSCAN'                                      @XM05672
&A0097   SETC  'POSTWAIT'                                      @Y17XAXU
&A0098   SETC  'ALLOCBUF'                                      @Y17XAXU
&A0099   SETC  'FREEBUF'                                       @Y17XAUU
.BYP020  ANOP
         AIF   ('&DSECT' EQ 'NO').BYP030
&NAME    DSECT
         AGO   .BYP040
.BYP030  ANOP
&NAME    DS    0F
.BYP040  ANOP
RESTECBS DC    A(0)               PARAMETER LIST FOR TOTE WAIT
         DC    XL1'80'            SET ECB CODE TO WAITING
         DC    AL3(RESTECB1)      ADDRESS OF USBTASK ECB
RESTECB1 DC    F'0'               SUBTASK REQUEST ECB
*
RESOBQCB DS    0F                 OLTCB QUEUE CONTROL BLOCK
RESOBFWD DC    A(RESOBQCB)        OLTCB QUEUE FORWARD POINTER
RESOBBKW DC    A(RESOBQCB)        OLTCB QUEUE BACKWARD POINTER
*
RESTTLST DC    A(0)               LAST TOTE TNT ENTRY ADDRESS
RESBKTOT DC    H'12'              TOTAL STORAGE BLOCKS FOR TOTE  S22024
RESBKAVL DC    H'8'               CURRENT FREE STORAGE BLOCKS
RESEFQCB DC    A(RESEFQCB)        EXTENDED AREA FREE QUEUE
*                                   CONTROL BLOCK
RESTNTCT DC    X'00'              TOTAL NUMBER OF TNT ENTRIES
RESDMTTE DC    AL3(0)             POINTER TO TOTE EXTENDED AREA
*                                   FOR TTE'S AND QCB'S
RESETXRA DC    A(&A0040)          END OF TASK EXIT ROUTINE ADDRESS
RESSTAEA DC    A(&A0095)          STAE EXIT ROUTINE ADDRESS      S22024
RESSMGRA DC    A(&A0020)          SERVICE MANAGER ENTRY ADDRESS
RES#TBLE EQU   RESSMGRA-28        BRANCH TABLE ADDRESS
RESWBFNC DC    X'00'              IEDQWB FUNCTION REQUEST CODE
*
RESFLAGS DC    XL1'0'             TOTE RESIDENT FLAG BYTE
*
RESINIT  EQU   X'80'                   TOTE INITIALIZED FLAG
RESFIRST EQU   X'40'                   FIRST-TIME INDICATOR
*
         DC    XL2'0000'          UNUSED                       @XM05672
RESTRMQ  DC    A(RESTRMQ)         TOTE TRM QUEUE CONTROL BLOCK
         DS    XL1'0'             UNUSED
RESTNTPT DS    AL3(0)             ADDRESS OF START OF TOTE TNT
*                                   ENTRIES
*
*           BRANCH TABLE FOR QUEUE HANDLERS
*
RESQHBL  DS    0F                 ALIGN ON FULLWORD
RESREMFR DC    A(&A0060)          ADDRESS OF REMOVE ELEMENT FROM
*                                   FRONT HANDLER
RESREMEL DC    A(&A0070)          ADDRESS OF REMOVE SPECIFIED
*                                   ELEMENT HANDLER
RESADDND DC    A(&A0080)          ADDRESS OF ADD ELEMENT TO END
*                                   HANDLER
RESADDAF DC    A(&A0090)          ADDRESS OF ADD ELEMENT AFTER
*                                   ANOTHER SPECIFIED ELEMENT HANDLER
RESPLRVT DC    A(&A0097)          POST/WAIT ROUTINE            @Y17XAXU
RESABUF  DC    A(&A0098)          BUFFER ALLOCATION ROUTINE    @Y17XAXU
RESFBUF  DC    A(&A0099)          BUFFER DEALLOCATION ROUTINE  @Y17XAXU
RESMHSRC DC    H'0' .             TOTE MH TTCIN                @Y17XAXU
RESMHNAT DC    H'0' .             TOTE MH NETWORK ADDRESS      @Y17XAXU
RESTOTMH DC    A(0) .             TOTE MH ADDRESS              @Y17XAXU
RESPLADR DS    0F .               SERVICE ROUTINE ADDRESSES    @Y17XAXU
RESPLWO  DC    A(0) .             I/O ACCESS MANAGER           @Y17XAXU
RESPLAB  DC    A(0) .             DATE ROUTINE                 @Y17XAXU
RESPLAJ  DC    A(0) .             $CUTEST ROUTINE              @Y17XAXU
RESPL35  DC    A(0) .             EXIO ROUTINE                 @Y17XAXU
RESPLAA  DC    A(0) .             TIME ROUTINE                 @Y17XAXU
RESPL39  DC    A(0) .             DPRINT LOAD 1 ROUTINE        @Y17XAXU
RESPLP1  DC    A(0) .             DPRINT LOAD 2 ROUTINE        @Y17XAXU
RESPLP2  DC    A(0) .             DPRINT LOAD 2 ROUTINE        @Y17XAXU
RESPL37  DC    A(0) .             CECOM ROUTINE                @Y17XAXU
RESPL28  DC    A(0) .             PLINK ROUTINE                @Y17XAXU
RESPL36  DC    A(0) .             WAITIO ROUTINE               @Y17XAXU
RESPLAC  DS    0F .               $GRAB ROUTINE                @Y17XAXU
RESPL21  DS    A(0) .             $LETGO ROUTINE               @Y17XAXU
RESPL41  DC    A(0) .             CONVERT ROUTINE              @Y17XAXU
RESPL16  DC    A(0) .             GETCONFIG ROUTINE            @Y17XAXU
RESPL42  DS    0F .               MORECORE ROUTINE             @Y17XAXU
RESPL43  DC    A(0) .             FREECORE ROUTINE             @Y17XAXU
RESPL44  DC    A(0) .             DIO ROUTINE                  @Y17XAXU
RESPL47  DC    A(0) .             ROUTINE ROUTINE              @Y17XAXU
RESPLM2  DC    A(0) .             TRACE/RETURN CODE ROUTINE    @Y17XAXU
RESPL25  DC    A(0) .             SEND ROUTINE                 @Y17XAXU
RESPL33  DC    A(0) .             RECEIVE ROUTINE              @Y17XAXU
RESTLIB  DC    A(&A0096)          ADDR OF HIERARCHY SCAN RTN   @XM05672
RESPLA1  DC    A(0) .             TOTE INPUT PROCESSOR ADDRESS @Y17XAXU
RESAPDCB DCB   DSORG=PS,MACRF=WC,DDNAME=DIAGMSG,BLKSIZE=80      SA21903
RESAPOPN EQU   RESAPDCB+48                                      SA21903
         MEND                                                @Y17XAXU*/
*%PLSRESPL: ;
*DECLARE
*  1 IEDRESPL BDY(WORD) BASED,    /*                         @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      TOTE RESIDENT CONTROL BLOCK                         @Y17XAXU*/
*/*      STATUS = VERSION 10.0 (TCAM,TOTE)                   @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 RESTECBS PTR(31),           /* PARMLIST FOR TOTE WAIT  @Y17XAXU*/
*   2 * CHAR(1),                  /* ECSB CODE               @Y17XAXU*/
*   2 * PTR(24) BDY(BYTE),        /* SUBTASK ECB ADDRESS     @Y17XAXU*/
*   2 RESTECB1 PTR(31),           /* SUBTASK REQUEST ECB     @Y17XAXU*/
*   2 RESOBQCB BDY(WORD),         /* OLTCB QUEUE CONTROL     @Y17XAXU*/
*                                 /* BLOCK                   @Y17XAXU*/
*    3 RESOBFWD PTR(31),          /* OLTCB QUEUE FORWARD     @Y17XAXU*/
*                                 /* POINTER                 @Y17XAXU*/
*    3 RESOBBKW PTR(31),          /* OLTCB QUEUE BACKWARD    @Y17XAXU*/
*                                 /* POINTER                 @Y17XAXU*/
*   2 RESTTLST PTR(31),           /* LAST TOTE TNT ENTRY     @Y17XAXU*/
*                                 /* ADDRESS                 @Y17XAXU*/
*   2 RESBKTOT FIXED(15),         /* TOTAL STORAGE BLOCKS    @Y17XAXU*/
*                                 /* FOR TOTE                @Y17XAXU*/
*   2 RESBKAVL FIXED(15),         /* CURRENT FREE STORAGE    @Y17XAXU*/
*                                 /* BLOCKS                  @Y17XAXU*/
*   2 RESEFQCB PTR(31),           /* EXTENTED AREA FREE      @Y17XAXU*/
*                                 /* QUEUE CONTROL BLOCK     @Y17XAXU*/
*   2 RESTNTCT PTR(8),            /* TOTAL NUMBER OF TNT     @Y17XAXU*/
*                                 /* ENTRIES                 @Y17XAXU*/
*   2 RESDMTTE PTR(24) BDY(BYTE), /* POINTER TO TOTE         @Y17XAXU*/
*                                 /* EXTENTED AREA FOR TTE'S,@Y17XAXU*/
*                                 /* QCB'S AND LGB'S         @Y17XAXU*/
*   2 RESETXRA PTR(31),           /* END OF TASK EXIT ROUTINE@Y17XAXU*/
*                                 /* ADDRESS                 @Y17XAXU*/
*   2 RESSTAEA PTR(31),           /* STAE EXIT ROUTINE       @Y17XAXU*/
*                                 /* ADDRESS                 @Y17XAXU*/
*   2 RESSMGRA PTR(31),           /* SERVICE MANAGER ENTRY   @Y17XAXU*/
*                                 /* ADDRESS                 @Y17XAXU*/
*   2 RESWBFNC CHAR(1),           /* IEDQWB FUNCTION REQUEST @Y17XAXU*/
*                                 /* CODE                    @Y17XAXU*/
*   2 RESFLAGS BIT(8),            /* TOTE RESIDENT FLAGS     @Y17XAXU*/
*    3 RESINIT BIT(1),            /* TOTE INITIALIZED FLAG   @Y17XAXU*/
*    3 RESFIRST BIT(1),           /* FIRST-TIME INDICATOR    @Y17XAXU*/
*    3 * BIT(6),                  /* RESERVED                @Y17XAXU*/
*   2 * CHAR(2),                  /* RESERVED                @Y17XAXU*/
*   2 RESTRMQ PTR(31),            /* TRM QUEUE CONTROL BLOCK @Y17XAXU*/
*   2 * CHAR(1),                  /* RESERVED                @Y17XAXU*/
*   2 RESTNTPT PTR(24) BDY(BYTE), /* ADDRESS OF START OF     @Y17XAXU*/
*                                 /* TOTE TNT ENTRIES        @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      BRANCH TABLE FOR QUEUE HANDLERS                     @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*   2 RESQHBL BDY(WORD),          /*                         @Y17XAXU*/
*    3 RESREMFR PTR(31),          /* ADDRESS OF REMOVE       @Y17XAXU*/
*                                 /* ELEMENT FROM FRONT      @Y17XAXU*/
*                                 /* HANDLER                 @Y17XAXU*/
*    3 RESREMEL PTR(31),          /* ADDRESS OF REMOVE       @Y17XAXU*/
*                                 /* SPECIFIED ELEMENT       @Y17XAXU*/
*                                 /* HANDLER                 @Y17XAXU*/
*    3 RESADDND PTR(31),          /* ADDRESS OF ADD ELEMENT  @Y17XAXU*/
*                                 /* TO END HANDLER          @Y17XAXU*/
*    3 RESADDAF PTR(31),          /* ADD OF ADD ELEMENT AFTER@Y17XAXU*/
*                                 /* ANOTHER SPECIFIED       @Y17XAXU*/
*                                 /* ELEMENT                 @Y17XAXU*/
*   2 RESPLRVT PTR(31),           /* POST/WAIT ROUTINE       @Y17XAUU*/
*   2 RESABUF PTR(31),            /* BUFFER ALLOCATION RTN   @Y17XAXU*/
*   2 RESFBUF PTR(31),            /* BUFFER DEALLOCATION RTN @Y17XAXU*/
*   2 RESMHSRC FIXED(16),         /* TOTE MH TTCIN           @Y17XAXU*/
*   2 RESMHNAT FIXED(16),         /* TOTE MH NETWORK ADDRESS @Y17XAXU*/
*   2 RESTOTMH PTR(31),           /* TOTE MH ADDRESS         @Y17XAXU*/
*   2 RESPLADR BDY(WORD),         /* SERVICE ROUTINE ADDR    @Y17XAXU*/
*    3 RESPLWO PTR(31),           /* I/O ACCESS MANAGER      @Y17XAXU*/
*    3 RESPLAB PTR(31),           /* DATE ROUTINE            @Y17XAXU*/
*    3 RESPLAJ PTR(31),           /* $CUTEST ROUTINE         @Y17XAXU*/
*    3 RESPL35 PTR(31),           /* EXIO ROUTINE            @Y17XAXU*/
*    3 RESPLAA PTR(31),           /* TIME ROUTINE            @Y17XAXU*/
*    3 RESPL39 PTR(31),           /* DPRINT LOAD 1 ROUTINE   @Y17XAXU*/
*    3 RESPLP1 PTR(31),           /* DPRINT LOAD 2 ROUTINE   @Y17XAXU*/
*    3 RESPLP2 PTR(31),           /* DPRINT LOAD 2 ROUTINE   @Y17XAXU*/
*    3 RESPL37 PTR(31),           /* CECOM ROUTINE           @Y17XAXU*/
*    3 RESPL28 PTR(31),           /* PLINK ROUTINE           @Y17XAXU*/
*    3 RESPL36 PTR(31),           /* WAITIO ROUTINE          @Y17XAXU*/
*    3 RESPLAC PTR(31),           /* $GRAB ROUTINE           @Y17XAXU*/
*     4 RESPL21 PTR(31),          /* $LETGO ROUTINE          @Y17XAXU*/
*    3 RESPL41 PTR(31),           /* CONVERT ROUTINE         @Y17XAXU*/
*    3 RESPL16 PTR(31),           /* GETCONFIG ROUTINE       @Y17XAXU*/
*    3 RESPL42 PTR(31),           /* MORECORE ROUTINE        @Y17XAXU*/
*     4 RESPL43 PTR(31),          /* FREECORE ROUTINE        @Y17XAXU*/
*    3 RESPL44 PTR(31),           /* DIO ROUTINE             @Y17XAXU*/
*    3 RESPL47 PTR(31),           /* ROUTINE ROUTINE         @Y17XAXU*/
*    3 RESPLM2 PTR(31),           /* TRACE/RETURN CODE       @Y17XAXU*/
*                                 /* ROUTINE                 @Y17XAXU*/
*    3 RESPL25 PTR(31),           /* SEND ROUTINE            @Y17XAXU*/
*    3 RESPL33 PTR(31),           /* RECEIVE ROUTINE         @Y17XAXU*/
*   2 RESTLIB PTR(31),            /* ADDRESS OF OLTLIB DCB   @Y17XAXU*/
*   2 RESAPDCB BDY(WORD);         /* START OF AP DCB AREA    @Y17XAXU*/
*                                 /*                         @Y17XAXU*/
*%RESPLEND: ;                     /* END OF RESPL            @Y17XAXU*/
./ ADD NAME=RESTORE
         MACRO
&NAME    RESTORE &LIST
         AIF   ('&LIST' EQ '').E1
&NAME    IHBINNRA &LIST                     LOAD REG 1
         SVC   17                                ISSUE SVC FOR RESTORE
         MEXIT
.E1      IHBERMAC 01,150                    LIST ADDR MISSING
         MEND
./ ADD NAME=RPTDSECT
         MACRO
&TAG  RPTDSECT &T=,&TYPE=,&LIST=,&SCAN=,&GEN=,&DS=NO
         GBLC  &IGAHVFC  THE OFFSET IN THE RPT HEADER TO THE ADDRESS OF*
                         THE FIXEDHDR FOR THE INNER VERTEX SPACE CHAIN.
         GBLC  &IGABLST  THE OFFSET INTO THE TREE HEADER FOR THE LIST  *
                         OF RPT ENTRY POINTS.
         GBLC  &IGAGKW   THE OFFSET IN THE IGARPT01 MODULE TO THE      *
                         ROUTINE TO GET A WORK AREA FOR COLLECTING     *
                         KEYS.
         GBLC  &IGABFIN  THE SIZE OF THE RESERVED LIST OF ENTRY POINT  *
                         ADDRESSES IN THE TREE HEADER.
         GBLC  &IGASCH8  THE OFFSET IN THE RPT MODULE FOR THE TYPE 8   *
                         SEARCH ROUTINE.
         GBLC  &IGADEL8  THE OFFSET IN THE IGARPT01 MODULE TO THE TYPE *
                         8 RPT DELETE ROUTINE.
         GBLC  &IGAINS8  THE OFFSET IN THE MODULE IGARPT01 TO THE      *
                         ROUTINE TO INSERT IN A TYPE 8 RPT.
         GBLC  &IGALSCN  THE OFFSET TO THE ROUTINE TO SCAN LEFT IN THE *
                         MODULE IGARPT01.
         GBLC  &IGARSCN  THE OFFSET TO THE ROUTINE TO SCAN RIGHT IN THE*
                         MODULE IGARPT01.
         GBLC  &IGASPV   THE OFFSET TO THE PARTIAL ORDER SEARCH ROUTINE*
                         IN THE MODULE IGARPT01.
         GBLC  &IGAPVG   THE OFFSET TO THE ROUTINE TO GET THE PARTIAL  *
                         ORDER VALUE FOR THE CURRENT SINK IN THE MODULE*
                         IGARPT01.
         GBLC  &IGAPVAJ   THE OFFSET TO THE ROUTINE TO ADJUST THE      *
                         PARTIAL ORDER VALUE FOR THE CURRENT SINK IN   *
                         THE IGARPT01 MODULE.
         GBLC  &IGADSP8  THE OFFSET TO THE ROUTINE TO DISPLAY A TYPE 8 *
                         RPT IN THE MODULE IGARPT01.
         GBLC  &IGASRCH,&IGAINS,&IGADEL,&IGAFTRE
         GBLC  &IGAKEYW  THE INDEX OF THE ADDRESS OF THE ROUTINE TO GET*
                         A WORK AREA FOR COLLECTING KEYS FOR SEARCH.
         GBLC  &IGASCNL,&IGASCNR,&IGAFSP
         GBLC  &IGAFSPS  OFFSET FOR THE BRANCH ENTRY TO THE FSPACE     *
                         PROGRAM WHEN THE SPACE CONTROL ADDRESS IS     *
                         CODED IN THE FSPACE MACRO-INSTRUCTION.
         GBLC  &IGAFSPF  BRANCH ENTRY OFFSET FOR FSPACE WITH A FIXED   *
                         LENGTH ENTRY USING A FIXEDHDR.
         GBLC  &IGAFS8,&IGAFS12,&IGAFS80  THE ENTRY POINTS TO RELEASE  *
               ENTRIES OF THE RESPECTIVE LENGTHS USING THE FIXEDHDR IN *
               A SPACE CONTROL AREA.
         GBLC  &IGASTRE,&IGAGSP
         GBLC  &IGAINS5,&IGADEL5
         GBLC  &IGAEOPV  THE OFFSET TO THE PATH CODE BYTE IN THE TYPE 8*
                         RPT HEADER FOR THE PATH TO THE SINK CURRENTLY *
                         SELECTED BY THE CURSOR.
         GBLC  &IGACNT5  THE OFFSET TO THE USE COUNTER IN THE TYPE 5   *
                         RPT HEADER.
         GBLC  &IGAMSK5  THE OFFSET TO THE TABLE OF MASKS FOR TYPE 5   *
                         RPT.
         GBLC  &IGATOP5  THE OFFSET TO THE RPT SOURCE IN THE TYPE 5 RPT*
                         HEADER.
         GBLC  &IGAMAX   THE OFFSET TO THE WORD CONTAINING THE MAXIMUM *
                         PARTIAL ORDER VALUE.
         GBLC  &IGADJPV    ENTRY OFFSET FOR PARTIAL ORDER ADJUSTMENT.
         GBLC  &IGAPVS     ENTRY POINT FOR PARTIAL ORDER SEARCH.
         GBLC  &IGAGPV     ENTRY OFFSET FOR GETTING PARTIAL ORDER VALUE
         GBLC  &IGAISP   BRANCH ENTRY OFFSET FOR SPACE CONTROL SETUP.
         GBLC  &IGAFRSC  BRANCH ENTRY OFFSET TO THE ROUTINE TO RELEASE *
                         A SPACE CONTROL AREA AND ALL OF ITS RELATED   *
                         SPACE VIA THE FREEMAIN MACRO-INSTRUCTION.
         GBLC  &IGAGSPF  BRANCH ENTRY OFFSET FOR FIXED LENGTH ENTRIES  *
                         USING A FIXEDHDR FROM THE GSPACE MACRO OR FROM*
                         INSIDE THE MODULE IGARPT01.
         GBLC  &IGAGSPS  BRANCH ENTRY OFFSET FOR VARIABLE LENGTH SPACE *
                         ALLOCATION WHEN THE SPACE CONTROL ADDRESS IS  *
                         CODED IN THE GSPACE MACRO-INSTRUCTION.
         GBLC  &IGAGS8,&IGAGS12,&IGAGS80  THE BRANCH ENTRY OFFSETS FOR *
                         THE ROUTINES TO ALLOCATE SPACE FOR THE        *
                         RESPECTIVE FIXED LENGTHS IN A SPACE CONTROL A.
         GBLC  &IGACON   THE OFFSET TO THE CONTANT AREA.
         GBLC  &IGANAME    THE NAME OF THE PROGRAM.
         GBLC  &IGADSP         BRANCH ENTRY FOR DSPRPT.
         GBLC  &IGAISCN  THE INDEX OF THE ADDRESS OF THE ROUTINE TO USE*
                         IN THE MODULE IGARPT01 TO INITIALIZE FOR      *
                         SUBSEQUENT SCANNING OPERATIONS FOR SOME RPT'S.
         GBLC  &IGADDR   THE OFFSET TO THE ADDRESS OF THE MODULE       *
                        IGARPT01 FROM THE BEGINNING OF THE TREE HEADER.
         GBLA  &IGALEFT(256)  GLOBAL INDEXED VARIABLE FOR LEFT EDGES
.*                             IN THE BINARY PARSE TREE.
         GBLA  &IGARGHT(256)   GLOBAL VECTOR FOR RIGHT EDGES.
         GBLB  &IGARL(256)     GLOBAL VECTOR FOR RIGHT/LEFT FLAGS.
         GBLB  &IGAIS(256)     GLOBAL VECTOR FOR INNER/SINK STATUS.
         GBLA  &IGAPATH(16)  PATH VECTOR TO ATOMIC ELEMENT IN PARSE.
         GBLA  &IGALEVL      PATH LENGTH TO ATOM IN PARSE TREE.
         GBLB  &IGAOKAY  GLOBAL FOR INDICATING VALID SYNTAX.
         GBLB  &IGAPGM   FOR USE IN IGARPTXX MODULES ONLY.
         GBLB  &IGALOAD  1 IF PGM IS LOADED VIA LOAD MACRO.
         GBLB  &IGAXTRN  1 IF THE EXTRN HAS BEEN GENERATED.
         GBLB  &IGALONE  ON FOR STAND-ALONE OPERATION OF THE RPTS      *
               COMPONENT FOR UNIT TESTING.
         GBLB  &IGAFTCH  ON TO FAKE OUT THE CVTRPT AND TCBRPT LOADS    *
                         WHEN THE RPTS COMPONENT IS BEING UNIT TESTED.
         GBLC  &IGARPT#  RADIX PARTITION TREE TYPE.
         GBLB  &RPTVNUM(16)    INDEXED GLOBAL LOGICAL VECTOR FOR C
.*                             CONTROLLING THE GENERATION OF DSECTS.
         GBLB  &IGASPDS  THIS BIT IS ON IF THE SPACE CONTROL DSECT HAS *
                         ALREADY BEEN GENERATED.
         GBLC  &IGASA0   OFFSET TO THE FIRST SAVE AREA.
         GBLC  &IGASA1   OFFSET TO THE SECOND SAVE AREA IN THE SPACE   *
                         CONTROL AREA.
         GBLC  &IGAS8    THE OFFSET TO THE 8-BYTE FREE SPACE CHAIN.
         GBLC  &IGAS12   THE OFFSET TO THE 12-BYTE FREE SPACE CHAIN.
         GBLC  &IGAS80   THE OFFSET TO THE 80-BYTE FREE SPACE CHAIN.
         GBLC  &IGASPZ   LENGTH OF THE SPACE CONTROL AREA.
         GBLA  &IGAMINP  THE MINIMUM SIZE NEEDED FOR A TYPE 8 TREE.
         GBLA  &IGAMINS  THE MINIMUM REFILL SIZE NEEDED FOR A TYPE 8.
         GBLA  &IGAX     TRIPLE FOR LEFT LIST SCAN OF THE BINARY PARSE
         GBLA  &IGAY     TREE THAT RESULTS FROM EXECUTING RPTDSECT WITH
         GBLA  &IGAZ     THE LIST PARAMETER CODED.
         LCLA  &N        A LOCAL TEMPORARY INDEX FOR SUBSCRIPTING
.*                       INDEXED VARIABLES.
.*A000000                                                        Y02147
.**********************************************************************
         LCLA  &X        STRING SCANNER.
         LCLA  &Y        LIMIT OF NUMBER OF ELEMENTS.
         LCLC  &CHAR     CURRENT LIST CHARACTER.
         LCLA  &P        PREDECESSOR OF CURRENT VERTEX IN PARSE TREE.
         LCLA  &C        CURRENT VERTEX IN PARESE TREE.
         LCLA  &S        SUCCESSOR OF CURRENT VERTEX IN PARSE TREE.
         LCLA  &NX       INDEX OF NEXT AVAILABLE VERTEX.
&IGAXTRN SETB  (0)   TURN OFF THE EXTRN SYMBOL IN STREE.
         AIF   (K'&GEN NE 0).GEN  GO IF THE GEN PARAMETER IS CODED.
         AIF   (K'&T EQ 0).OLDT  SEE IF THE NEW TYPE IS CODED.
&TAG  RPTDSECT TYPE=&T,LIST=&LIST,SCAN=&SCAN,DS=&DS,GEN=&GEN
         AGO   .FIN
.OLDT    ANOP
         AIF   (K'&TAG EQ 0).NOTAG  SEE IF THERE IS A LABEL ON IT.
&TAG     EQU   *
.NOTAG   ANOP
         AIF   ((K'&SCAN NE 0) OR (K'&TYPE NE 0)).GOOD  CHK 4 AT LEAST
.*                                                   1 OPERAND.
         MNOTE 12,'NO KEYWORDS CODED FOR RPTDSECT; &SCAN CODED.'
         MEXIT
.GOOD    ANOP
&IGARPT# SETC  '&TYPE'   SET THE RPT #.
         AIF   (K'&TYPE NE 0).VERSION  CHECK FOR RPT TYPE.
         AIF   (('&SCAN' EQ 'NEXT')OR('&SCAN' EQ 'ISCAN')).ITSCAN
         AIF   ('&SCAN' EQ 'PARSE').PARSE          CHECK FOR PARSE REQ.
         MNOTE 12,'SCAN PARAMTER INCORRECT IN RPTDSECT; &SCAN CODED.'
         MEXIT
.PARSE   ANOP
.*--------------------------------------------------------------------*
.*       PARSE THE LIST INTO A BINARY PARSE TREE.                     *
.*--------------------------------------------------------------------*
&X       SETA  (1)       SET &X TO THE INDEX OF THE FIRST CHARACTER IN
.*                       THE STRING TO BE PARSED.
&Y       SETA  (1+K'&LIST)     SET &Y TO THE INDEX OF THE FIRST
.*                             CHARACTER POSITION AFTER THE LAST
.*                             CHARACTER IN THE STRING TO BE PARSED.
&P       SETA  1         SET &P TO THE SOURCE OF THE PARSE TREE.
&C       SETA  1         SET &C TO THE SOURCE OF THE PARSE TREE.
&NX      SETA  1         SET &NX TO ONE LESS THAN THE NEXT AVAILABLE
.*                       VERTEX.
&IGARL(&C)     SETB      (0)   SET THE SOURCE TO A LEFT SUCCESSOR.
&IGAIS(&C)     SETB      (1)   SET THE SOURCE AS AN INNER VERTEX.
.**********************************************************************
.*       IS THERE A LEFT EDGE FROM THE CURRENT VERTEX?                *
.**********************************************************************
.ISLEFT  ANOP
         AIF   (&X EQ &Y).LEOS GO IF THE END OF STRING REACHED.
&CHAR    SETC  '&LIST'(&X,1)   EXTRACT THE CURRENT CHARACTER.
&X       SETA  (&X+1)          EKE THE INDEX TO THE NEXT CHARACTER.
         AIF   ('&CHAR' EQ '(').LLPAREN  AGO IF LEFT PAREN FOUND.
         AIF   ('&CHAR' EQ ')').LRPAREN  AGO IF RIGHT PAREN FOUND.
         AIF   ('&CHAR' EQ ',').LCOMMA   AGO IF COMMA FOUND.
.*--------------------------------------------------------------------*
.* THE LEFT EDGE GOES TO AN ATOMIC SYMBOL, COLLECT THE SYMBOL AND PUT *
.* THE LEFT EDGE OF THE CURRENT VERTEX GOING TO IT.                   *
.*--------------------------------------------------------------------*
&NX      SETA  (1+&NX)   ESTABLISH PLACE TO PUT THE DEFINITION OF ATOM.
&IGALEFT(&NX) SETA (&X-1)      INDEX OF FIRST CHARACTER OF ATOM.
.COLLECT ANOP
         AIF   (&X EQ &Y).STORE2       SEE IF EOS AFTER ATOM.
&CHAR    SETC  '&LIST'(&X,1)   PICK OUT THE NEXT CHARACTER.
&X       SETA  (&X+1)    EKE INDEX TO NEXT CHARACTER.
         AIF   ('&CHAR' EQ '(').STORE  AGO IF ATOM ALL COLLECTED.
         AIF   ('&CHAR' EQ ')').STORE  AGO IF ATOM ALL COLLECTED.
         AIF   ('&CHAR' NE ',').COLLECT  AGO IF ATOM NOT YET COLLECTED.
.STORE   ANOP
&IGARGHT(&NX) SETA (&X-(1+&IGALEFT(&NX)))  COMPUTE LENGTH OF ATOM.
&IGALEFT(&C) SETA (&NX-&P)  FILL IN LEFT EDGE TO ATOM.
&IGARL(&NX) SETB (0)     FLAG AS LEFT SUCCESSOR.
&IGAIS(&NX)  SETB (0)    FLAG AS A SINK.
         AGO   .RIGHTIN        INTERROGATE CHARACTER.
.STORE2  ANOP
&IGARGHT(&NX) SETA (&X-(&IGALEFT(&NX)))  COMPUTE LENGTH OF ATOM.
&IGALEFT(&C) SETA (&NX-&P)     FILL IN LEFT EDGE TO ATOM.
&IGARL(&NX) SETB (0)     FLAG ATOMIC VERTEX AS LEFT SUCCESSOR.
&IGAIS(&NX) SETB (0)     FLAG ATOMIC VERTEX AS A SINK.
         AGO   .REOS     GO TO RIGHT EOS SEQUENCE.
.*--------------------------------------------------------------------*
.* THE LEFT EDGE GOES TO AN EMPTY LIST, SINCE THE CURRENT CHARACTER   *
.* IS A COMMA.                                                        *
.*--------------------------------------------------------------------*
.LCOMMA  ANOP
&IGALEFT(&C) SETA (0-&P)  SET THE LEFT EDGE EMPTY.
         AGO   .MAKRGHT        GO ESTABLISH A RIGHT SUCCESSOR.
.*--------------------------------------------------------------------*
.* THERE IS A LIST FOR THE LEFT SUCCESSOR, BECAUSE THE CURRENT        *
.* CHARACTER IS A LEFT PARENTHESIS.                                   *
.*--------------------------------------------------------------------*
.LLPAREN ANOP
&NX      SETA  (&NX+1)   ESTABLISH A LEFT SUCCESSOR INNER VERTEX.
&IGARL(&NX) SETB (0)  MAKE NEW INNER VERTEX A LEFT SUCCESSOR.
&IGAIS(&NX) SETB (1)  MAKE NEW VERTEX AN INNER VERTEX.
&IGALEFT(&C) SETA (&NX-&P)     FILL IN LEFT SUBTRACTION INVERTIBLE EDGE
.*                             TO THE NEW LEFT INNER VERTEX.
&P       SETA  (&C)      TRACE THE EDGE TO THE NEW LEFT INNER VERTEX.
&C       SETA  (&NX)     XX
         AGO   .ISLEFT   GO BACK TO LOOK FOR A LEFT EDGE.
.*--------------------------------------------------------------------*
.* THERE IS NO LEFT EDGE, BECAUSE THE CURRENT CHARACTER IS A RIGHT    *
.* PARENTHESIS. NOW THE BACKPATH MUST BE TRACED TO THE MATCHING LEFT  *
.* PARENTHESIS.                                                       *
.*--------------------------------------------------------------------*
.LRPAREN ANOP
&IGALEFT(&C) SETA (0-&P)  SET LEFT INVERTIBLE SUBTRACTION EDGE EMPTY.
.RRPAREN ANOP
&IGARGHT(&C) SETA (0-&P)  ESTABLISH A NULL RIGHT EDGE TOO.
.*--------------------------------------------------------------------*
.* TRACE THE BACKPATH TO FIND THE FIRST LEFT SUCCESSOR ON THE WAY TO  *
.* THE SOURCE. THAT VERTEX SHOULD BE THE PREDECESSOR OF THE FIRST     *
.* VERTEX IN THE SUBLIST THAT STARTED WITH THE LEFT PARENTHESIS THAT  *
.* MATCHED THE CUURENT RIGHT PARENTHESIS.                             *
.*--------------------------------------------------------------------*
         AIF   (NOT &IGARL(&C)).RPISBAK  GO IF &C IS A LEFT SUCCESSOR.
.RPBACK  ANOP
&S       SETA  (&C)      CYCLE THE THREE VERTICES UP THE BACKPATH.
&C       SETA  (&P)      XX
&P       SETA  (&S-&IGARGHT(&C))  TRACE THE RIGHT EDGE BACKWARD.
         AIF   (&IGARL(&C)).RPBACK     TRACE UNTIL IT FINDS A LEFT SIDE
.*--------------------------------------------------------------------*
.RPISBAK ANOP
         AIF   (&C EQ 1).ERROR  SEE IF THE SOURCE WAS REACHED; I. E.
.*                              NO MATCHING LEFT PARENTHESIS.
&S       SETA  (&C)      TRACE THE EDGE BACK TO THE PREDECESSOR OF
&C       SETA  (&P)      THE FIRST LEFT SUCCESSOR FOUND ON THE
&P       SETA  (&S-&IGALEFT(&C))  BACKPATH.
         AGO   .ISRIGHT
.*--------------------------------------------------------------------*
.* THERE IS NO LEFT OR RIGHT EDGE, BECAUSE THE END OF THE STRING      *
.* HAS BEEN ENCOUNTERED.                                              *
.*--------------------------------------------------------------------*
.LEOS    ANOP
&IGALEFT(&C) SETA (0-&P)  SET LEFT INVERTIBLE EDGE NULL.
.REOS    ANOP
&IGARGHT(&C) SETA (0-&P)  SET RIGHT INVERTIBLE EDGE NULL.
         AIF   (NOT &IGARL(&C)).EOSBAK  CONTINUE UNTIL THE FIRST LEFT.
.EOSBACK ANOP
&S       SETA  (&C)      TRACE THE BACKPATH TO THE FIRST LEFT
&C       SETA  (&P)            SUCCESSOR.
&P       SETA  (&S-&IGARGHT(&C))
         AIF   (&IGARL(&C)).EOSBACK    CHECK FOR A RIGHT SUCCESSOR.
.EOSBAK  ANOP
         AIF   (&C NE 1).ERROR
&IGAOKAY SETB  (1)       INDICATE VALID SYNTAX.
         MEXIT
.**********************************************************************
.* IS THERE A RIGHT EDGE?                                             *
.**********************************************************************
.ISRIGHT ANOP
         AIF   (&X EQ &Y).REOS  GO IF END OF STRING REACHED.
&CHAR    SETC  '&LIST'(&X,1)   GET CURRENT CHARACTER.
&X       SETA  (&X+1)    EKE TO NEXT CHARACTER.
.RIGHTIN ANOP
         AIF   ('&CHAR' EQ ',').MAKRGHT
         AIF   ('&CHAR' EQ ')').RRPAREN
         AGO   .ERROR
.*--------------------------------------------------------------------*
.* THERE IS A RIGHT EDGE, THE CURRENT CHARACTER IS A COMMA.           *
.*--------------------------------------------------------------------*
.MAKRGHT ANOP
&NX      SETA  (&NX+1)   GET A PLACE FOR THE NEW RIGHT SUCCESSOR.
&IGARL(&NX) SETB (1)     INDICATE RIGHT SUCCESSOR.
&IGARGHT(&C) SETA (&NX-&P)  STORE RIGHT INVERTIBLE EDGE.
&IGAIS(&NX) SETB (1)     INDICATE AN INNER VERTEX.
&P       SETA  (&C)      TRACE OVER TO THE NEW RIGHT SUCCESSOR.
&C       SETA  (&NX)     XX
         AGO   .ISLEFT
.*--------------------------------------------------------------------*
.ERROR   ANOP
&IGAOKAY SETB  (0)       INDICATE INVALID SYSNTAX.
         MEXIT
.**********************************************************************
.ITSCAN  AIF   ('&SCAN' NE 'ISCAN').TRYNEXT  GO IF NOT 1ST INITIALIZE.
.* INITIALIZE FOR LEFT LIST SCANNING.                                 *
.*--------------------------------------------------------------------*
&IGAX    SETA  (1)       SET IT TO THE SOURCE.
&IGAY    SETA  (0)       SIGNAL THAT ISCAN HAS BEEN DONE.
&IGAZ    SETA  (0)       DON'T CAUSE ANY CONFUSION.
&IGALEVL SETA  (0)
         MEXIT
.*--------------------------------------------------------------------*
.*  COME HERE FOR THE REAL SCANNING, AFTER THE ISCAN.                 *
.*--------------------------------------------------------------------*
.TRYNEXT AIF   ('&SCAN' EQ 'NEXT').DONEXT
         MNOTE 12,'INVALID SCAN, NEXT OR ISCAN EXPECTED.'
&IGAZ    SETA  0         MAYBE IT WILL WORK ANYWAY.
         MEXIT
.DONEXT  AIF   (&IGAY NE 0).NOT1ST  CHECK FOR FIRST TIME.
.*--------------------------------------------------------------------*
.*  FIRST TIME INTO TREE FOR LEFT LIST SCAN.                          *
.*--------------------------------------------------------------------*
&IGAY    SETA  (1)       SET IT TO THE SOURCE.
         AGO   .CHKLEFT  GO LOOK AT THE LEFT SUBTREE.
.TREF    ANOP
&IGAPATH(&IGALEVL) SETA (&IGAPATH(&IGALEVL)+1)  EKE PATH VECTOR ELEMENT
         AGO   .TEDGF                           ON THE SAME LEVEL.
.TLEF    ANOP
&IGALEVL SETA  (1+&IGALEVL)  MAKE PATH VECTOR LONGER TO ATOM.
&IGAPATH(&IGALEVL) SETA (0)  SET PATH VECTOR ELEMENT TO ZERO.
.TEDGF   ANOP
&IGAX    SETA  (&IGAY)   CYCLE THE THREE DOWN THE PATH.
&IGAY    SETA  (&IGAZ)   XX
.CHKLEFT ANOP
&IGAZ    SETA  (&IGAX+&IGALEFT(&IGAY))  TRACE LEFT EDGE (IF THERE IS 1)
         AIF   (&IGAZ NE 0).TRYLEFT    SEE IF THERE WAS A LEFT EDGE.
         MEXIT
.TRYLEFT AIF   (&IGAIS(&IGAZ)).TLEF    SEE IF THE SINK WAS REACHED.
         AIF   (&IGARGHT(&IGAZ) NE 0).FINZ  SEE IF MT SINK.
&IGAZ    SETA  (0)       PRETEND EMPTY CHARACTER STRINGS AREN'T THERE.
.FINZ    MEXIT
.*--------------------------------------------------------------------*
.*   INSPECT THE RIGHT SUBTREE.                                       *
.*--------------------------------------------------------------------*
.CHKRGHT ANOP
.NOT1ST  ANOP
&IGAZ    SETA  (&IGAX+&IGARGHT(&IGAY))  GET RIGHT SUCCESSOR (IF ANY).
         AIF   (&IGAZ NE 0).TREF       GO IF THERE IS ONE.
.CHKTOP  AIF   (&IGAY EQ 1).SOURCE     SEE IF SOURCE REACHED FROM RIGHT
         AIF   (&IGARL(&IGAY)).TREB  GO IF Y IS RIGHT SUCCESSOR.
&IGAZ    SETA  (&IGAY)   TRACE THE LEFT EDGE BACKWARD.
&IGAY    SETA  (&IGAX)   BACKPATH TRACE.
&IGAX    SETA  (&IGAZ-&IGALEFT(&IGAY))  BACKTRACE LEFT EDGE.
&IGALEVL SETA  (&IGALEVL-1)  GO BACK TO NEXT LOWER LEVEL.
         AGO   .CHKRGHT
.TREB    ANOP
&IGAPATH(&IGALEVL) SETA (&IGAPATH(&IGALEVL)-1)  DECREASE ELEMENT IN PV.
&IGAZ    SETA  (&IGAY)   BACKAPTH TRACE VIA THE RIGHT EDGE.
&IGAY    SETA  (&IGAX)   XX
&IGAX    SETA  (&IGAZ-&IGARGHT(&IGAY))  TRACE LEFT INVERTIBLE EDGE BACK
         AGO   .CHKTOP
.SOURCE  ANOP
&IGAX    SETA  (0)  SET THE EOP TRIPLE ACCORDINGLY.
&IGAY    SETA  (0)  XX
&IGAZ    SETA  (0)       THE WHOLE TREE HAS BEEN PROCESSED.
         MEXIT
.**********************************************************************
.VERSION ANOP
&IGABLST SETC  'X''20'''  SET THE OFFSET INTO THE TREE HEADER FOR THE  *
                         LIST OF ENTRY POINTTS.
         AIF   (K'&GEN NE 0).GEN  SEE IF THE GEN PARAMETER IS CODED.
         AIF   ('&IGARPT#' EQ 'SPACE').SPACNTL  SHOULD THE SPACE CONTROL
                         DSECT BE GENERATED?
&N       SETA  (&IGARPT#)  CONVERT THE TREE TYPE TO A #.
         AIF   (&RPTVNUM(&N)).FIN  IF IT'S ALREADY DONE, SKIP IT.
         AIF   (('&DS' EQ 'NO')OR('&DS' EQ '0')).LETIT  SEE IF THIS IS *
                         NOT REALLY A REQUEST TO GENERATE THE DSECT.
&RPTVNUM(&N) SETB (1)          SET IT ON SO IT DOESN'T DO IT AGAIN.
.LETIT   ANOP
         AIF   (&N EQ 8).RPTV8
         AIF   (&N EQ 5).RPTV5
         MNOTE 12,'INVALID TREE TYPE SPECIFIED.'
         AGO   .FIN
.RPTV5   ANOP
&IGADDR  SETC  'X''00'''  THE OFFSET TO THE ADDRESS OF THE MODULE      *
                         IGARPT01 FROM THE BEGINNING OF THE TREE HEADER.

&IGATOP5 SETC  'X''04'''  THE OFFSET TO THE SOURCE OF THE TYPE 5 RPT IN*
                         THE TYPE 5 TREE HEADER.
&IGACNT5 SETC  'X''0C'''  THE OFFSET TO THE USE COUNTER IN THE TYPE 5  *
                         RPT HEADER.
&IGAMSK5 SETC  'X''80'''  OFFSET TO THE TABLE OF MASKS IN THE TYPE 5   *
                         RPT HEADER.
         AIF   (('&DS'(1,1) EQ 'N')OR('&DS'(1,1) EQ '0')).RPT5END      *
                         SEE IF THE DSECT IS NOT SUPPOSED TO BE        *
                         GENERATED THIS TIME.
IGARPTH5 DSECT 0         DSECT FOR SRCH5, INS5, DEL5.
IGADDR5  DC    F'0'  THE ADDRESS OF IGARPT01.
IGATOP5  DC    F'0'      SOURCE OF BINARY TREE.
IGAHVFC5 DC    F'0'      HEAD OF INNER VERTEX FREE CHAIN.
IGACNT5  DC    F'0'      COUNTER FOR READ-ONLY VALIDATION.
IGAKEYI5 DC    H'0'      INDEX OF KEY IN RECORD.
IGAKEYL5 DC    XL1'00'   THE NUMBER OF BYTES IN THE KEY.
IGASP5   DC    XL1'00'   THE SUBPOOL NUMBER FOR GETMAINS.
IGA5MARK EQU   *  THE BYTE JUST PAST THE LAST THING BEFORE THE B-LIST.
         DC    (&IGAMSK5-(IGA5MARK-IGARPTH5))XL1'00'  LEAVE ROOM.
IGAMASKS DC    128XL1'FF'  THIS IS FILLED IN BY STREE, TYPE=5.
IGAMASKZ EQU   *
         CNOP  0,8       MAKE IT ON A DOUBLE WORD BOUNDARY.
IGAFIN5  EQU   *         FIRST BYTE PAST HEADER.
IGATYP5S EQU   IGAFIN5-IGARPTH5  TREEHDR SIZE FOR TYPE 5 TREE.
&SYSECT CSECT
IGAZERO  EQU   0         JUST A ZERO.
IGABASE5 EQU   1         THE ADDRESS OF THE TREEHDR.
IGAP5    EQU   2         REGISTER CONTAINING ANTEPENULTIMATE VERTEX.
IGAC5    EQU   3         REGISTER CONTAINING THE PENULTIMATE VERTEX.
IGAS5    EQU   15        REGISTER CONTAINING THE SINK ADDRESS.
IGACREG5 EQU   14        REGISTER TO HOLD THE COUNTER DURING THE SEARCH
IGASARG5 EQU   0         REGISTER CONTAINING THE SEARCH ARGUMENT.
.RPT5END ANOP
.RPTV8   ANOP
&IGADDR  SETC  'X''00'''  THE OFFSET TO THE ADDRESS OF THE MODULE      *
                         IGARPT01 FROM THE BEGINNING OF THE TREE HEADER.

&IGAHVFC SETC  'X''14'''  OFFSET TO THE IV FREE SPACE BLOCK ADDRESS.
&IGANAME SETC  'IGARPT01'  THE NAME OF THE MODULE.
&IGASRCH SETC  'X''0'''
&IGAINS  SETC  'X''04'''  SET THE INDEX OF THE ENTRY POINT TO INSERT A *
                         KEY-ADDRESS PAIR IN THE RPT.
&IGADEL  SETC  'X''08'''  SET THE INDEX OF THE DELETE ENTRY POINT.
&IGADSP  SETC  'X''0C'''  SET THE INDEX OF THE ENTRY POINT TO DISPLAY  *
                         THE TREE.
&IGAKEYW SETC  'X''10'''  INDEX OF THE ENTRY POINT WORD FOR OBTAINING  *
                         THE ADDRESS OF THE KEY WORK AREA.
&IGAISCN SETC  'X''14'''  INDEX OF THE ENTRY POINT WORD TO INITIALIZE  *
                         FOR SCANNING.
&IGASCNL SETC  'X''18'''  ENTRY POINT FOR SCANNING LEFT.
&IGASCNR SETC  'X''1C'''  ENTRY POINT FOR SCANNING RIGHT.
&IGAPVS  SETC  'X''20'''  INDEX OF ENTRY POINT FOR PARTIAL ORDER VALUE *
                         SEARCH.
&IGAGPV  SETC  'X''24'''  INDEX OF ENTRY POINT ADDRESS FOR GETTING THE *
                         PARTIAL ORDER VALUE FOR THE CURRENT SINK.
&IGADJPV SETC  'X''28'''  ENTRY POINT ADDRESS FOR ADJUSTING THE PARTIAL*
                         ORDER VALUE FOR THE CURRENT SINK.
&IGABFIN SETC  'X''40'''  THE SIZE OF THE LIST OF ENTRY POINT WORDS IN *
                         THE RPT HEADER.
&IGASCH8 SETC  'X''0'''  THE OFFSET INTO THE IGARPT01 MODULE FOR THE   *
                         TYPE 8 RPT SEARCH ROUTINE.
&IGADEL8 SETC  'X''180'''  THE OFFSET TO THE TYPE 8 RPT DELETE ROUTINE *
                         IN THE IGARPT01 MODULE.
&IGADEL5 SETC  'X''2A0'''
&IGAINS5 SETC  'X''300'''  BRANCH ENTRY OFFSET FOR INSERT INTO A TYPE 5*
                         RPT.
&IGAINS8 SETC  'X''450'''  THE OFFSET TO THE TYPE 8 INSERT ROUTINE IN  *
                         THE IGARPT01 MODULE.
&IGALSCN SETC  'X''4B0'''  THE OFFSET TO THE ROUTINE TO SCAN LEFT IN   *
                         THE IGARPT01 MODULE.
&IGARSCN SETC  'X''4D0'''  THE OFFSET TO THE ROUTINE TO SCAN RIGHT IN  *
                         THE IGARPT01 MODULE.
&IGAISP  SETC  'X''640'''
&IGAFRSC SETC  'X''680'''
&IGAGSPS SETC  'X''780'''  LOCATION OF THE GSPACE ROUTINE FOR VARIABLE *
                         LENGTH AREAS WHEN THE SPCA IS PROVIDED.
&IGAGSP  SETC  'X''790'''
&IGAGS8  SETC  'X''900'''
&IGAGS12 SETC  'X''920'''
&IGAGS80 SETC  'X''940'''
&IGAGSPF SETC  'X''960'''
&IGAFSP  SETC  'X''9E0'''
&IGAFSPS SETC  'X''A40'''  ENTRY LOCATION FOR VARIABLE LENGTH          *
                         FSPACE WITH THE SPCA CODED.
&IGAFS8  SETC  'X''BC0'''  BRANCH ENTRY OFFSET FOR FIXED LENGTH FSPACE *
                         FOR 8 BYTES.
&IGAFS12 SETC  'X''BE0'''  BRANCH ENTRY OFFSET FOR FIXED LENGTH FSPACE *
                         FOR 12 BYTES.
&IGAFS80 SETC  'X''C00'''  ENTRY POINT FOR FSPACE FOR FIXED LENGTH 80  *
                         BYTES.
&IGAFSPF SETC  'X''C20'''  ENTRY POINT FOR FSPACE WITH A FIXEDHDR.
&IGASPV  SETC  'X''C40'''  THE OFFSET TO THE PARTIAL ORDER SEARCH      *
                         ROUTINE IN THE MODULE IGARPT01.
&IGAPVG  SETC  'X''D20'''  THE OFFSET TO THE ROUTINE TO GET THE PARTIAL*
                         ORDER VALUE FOR THE CURRENT SINK.
&IGAPVAJ  SETC 'X''DA0'''  THE OFFSET TO THE ROUTINE TO ADJUST THE     *
                         PARTIAL ORDER VALUE FOR THE CURRENT SINK.
&IGADSP8 SETC  'X''ED8'''  THE OFFSET TO THE ROUTINE TO DISPLAY A TYPE *
                         8 RPT.
&IGASTRE SETC  'X''EE8'''  ENTRY POINT TO SET UP A RADIX PARTITION     *
                         TREE.
&IGACON  SETC  'X''F00'''
&IGAGKW  SETC  'X''F90'''  OFFSET TO ROUTINE TO GET A KEY WORK AREA.
&IGAEOPV SETC  'X''04'''  THE OFFSET TO THE PATH CODE BYTE IN THE TYPE *
                         8 RPT HEADER.
&IGAMAX  SETC  'X''24'''  THE OFFSET TO THE WORD CONTAINING THE MAXIMUM*
                         PARTIAL ORDER VALUE.
         AIF   ('&IGARPT#' NE '8').FIN  SEE IF THIS IS NOT EVEN REALLY *
               A TYPE 8 RADIX PARTITION TREE.
         AIF   ('&DS'(1,1) EQ 'N').FIN  SEE IF THE DSECT SHOULD BE     *
                         GENERATED THIS TIME.
         AIF   ('&DS'(1,1) EQ '0').FIN  SEE IF IT ISN'T THIS TIME.
IGARPTH  DSECT 0  PARAMETER LIST FOR TREE ROUTINES.
IGADDR   DC    XL4'00'  THIS IS THE BASE ADDRESS OF THE PROGRAM.
IGAPT    DC    F'0'  THE ADDRESS OF THE TREE SOURCE DOUBLE WORD.
         ORG   IGAPT
IGAPATH  DC    XL1'00'  THE PATH CODE BYTE.
         DC    AL3(0)  ADDRESS OF THE SOURCE OF THE TREE.
IGANTPEN DC    XL4'00'   ADDRESS OF ANTEPENULTIMATE VERTEX ON PATH.
IGAPENLT DC    F'0'      ADDRESS OF PENULTIMATE VERTEX ON PATH.
IGAFARG  DC    F'0'  THE ADDRESS OF THE KEY OF THE RECORD FOUND BY SRCH
IGAHVFC  DC    F'0'  THE ADDRESS OF THE INNER SPACE FIXEDHDR.
IGAKEYL  DC    H'0'  THE LENGTH OF A KEY IN BYTES.
IGAKEYI  DC    H'0'  THE 0-ORIGIN INDEX OF THE FIRST BYTE OF THE KEY
*                    IN THE RECORD.
IGAMAP   DC    F'0'      THE ADDRESS OF THE SUBROUTINE TO MAP AN       *
                         ASSOCIATED # TO AN ADDRESS OF AN AREA         *
                         CONTAINING THE CORRESPONDING KEY.
IGA9FILL DC    F'0'      THE REFILL SUBPOOL AND LENGTH FOR TYPE 9      *
                         VARIABLE LENGTH SPACE ALLOCATION TREES.
         CNOP  0,4   IGAMAX IS ON A 4-BYTE BOUNDARY.
IGAMAX   DC    F'0'   MAXIMUM VALUE FOR PARTIALLY ORDERED TREES.
IGAVALUE DC    F'0'  THE PARTIAL ORDER VALUE FOR SEMILATTICE CONDITION.
IGAWORK  DC    F'0'  WORK AREA FOR TYPE 9 RPT POV.
IGAPOV   EQU   8  INDEX OF PARTIAL ORDER VALUE IN INNER VERTEX.
         ORG   IGARPTH+&IGABLST  PUT THE LIST OF THE ENTRY POINTS FOR  *
                         THE VARIOUS OPERATIONS IN THE RIGHT PLACE.
IGASRCH  DC    F'0'      THE ADDRESS OF THE SEARCH ROUTINE FOR THIS    *
                         TYPE RPT.
IGAINS   DC    F'0'      THE ADDRESS OF THE INSERT ROUTINE FOR THE RPT.
IGADEL   DC    F'0'      THE ADDRESS OF THE DELETE ROUTINE FOR THE RPT.
IGADSP   DC    F'0'      THE ADDRESS OF THE ROUTINE TO DISPLAY THE RPT.
IGAKEYW  DC    F'0'      EITHER THE ADDRESS OF THE WORK AREA TO COLLECT*
                         KEYS OR THE ADDRESS OF THE ROUTINE TO SET ONE *
                         UP.
IGAISCN  DC    F'0'  THE ADDRESS TO LINK TO TO INITIALIZE FOR SCANNING.
IGASCNL  DC    F'0'      THE ADDRESS OF THE SCAN LEFT ROUTINE.
IGASCNR  DC    F'0'      THE ADDRESS OF THE SCAN RIGHT ROUTINE.
IGAPVS   DC    F'0'      THE ADDRESS OF THE PARTIAL ORDER VALUE SEARCH *
                         ROUTINE.
IGAGPV   DC    F'0'      THE ADDRESS OF THE ROUTINE TO OBTAIN THE      *
                         PARTIAL ORDER VALUE FOR THE CURRENT SINK.
IGADJPV  DC    F'0'      THE ADDRESS OF THE ROUTINE TO ADJUST THE      *
                         PARTIAL ORDER VALUE FOR THE CURRENT SINK.
IGABFIN  EQU   *
         DC    (X'40'+IGABFIN-IGARPTH)XL1'00'  FILL OUT THE REST OF THE*
                         RPT ENTRY POINT AREA.
IGAFIN8  EQU   *  BYTE PAST TREE HEADER FOR TYPE 8 AND 9 RPT.
IGATYP8S EQU   IGAFIN8-IGARPTH  TREE HEADER SIZE FOR TYPE 8 AND 9 RPT.
IGANEBIT EQU   B'00010000'  FLAG BIT TO INDICATE SUBTREE CONTAINS
*                           UNEQUAL KEYS.
IGASTBIT EQU   B'00001000'  SUBTREE OF KNOWN ORDER SELECTION BIT.
IGARLBIT EQU   B'00000100'  RIGHT/LEFT SUCCESSOR FLAG BIT.
IGAT0BIT EQU   B'00000010'  LEFT INNER VERTEX FLAG BIT.
IGAT1BIT EQU   B'00000001'  INNER VERTEX RIGHT EDGE FLAG BIT.
&SYSECT  CSECT
         AIF   (NOT &IGAPGM).NOSHORT  SKIP THE SHORT LABELS IF NOT RPT.
         RASS  (APT,IGAPT,PATH,IGAPATH,FARG,IGAFARG)
         RASS  (HVFC,IGAHVFC,KEYL,IGAKEYL)
         RASS  (OFFSET,IGAKEYI,AP,IGANTPEN,AC,IGAPENLT)
         RASS  (TREEHDR,IGARPTH,KEYWORK,IGAWORK,VALUE,IGAPOV)
         RASS  (TREEFIN,IGAFIN8,TREESZ,IGATYP8S)
         RASS  (NE,IGANEBIT,IGAQBIT,IGASTBIT,Q,IGAQBIT,RL,IGARLBIT)
         RASS  (T0,IGAT0BIT,T1,IGAT1BIT,KEYI,IGAKEYI)
.NOSHORT ANOP
         AGO   .FIN      ALL DONE, NOW EXIT FROM RPTDSECT.
.SPACNTL AIF   (&IGASPDS OR ('&DS'(1,1) EQ 'N')).NOSPDS  SEE IF THE    *
                         DSECT SHOULD BE GENERATED, OR JUST THE GLOBAL *
                         VARIABLE SYMBOLS.
&IGASPDS SETB  (1)     SET THE BIT SO THAT IT ONLY GETS GENERATED ONCE.
IGASPCTL DSECT 0         SPACE CONTROL DSECT FOR THE FSPACE AND GSPACE *
                         MACRO-INSTRUCTIONS.
IGARPT9  DC    12F'0'    THE TREE HEADER FOR THE TYPE 9 SPACE CONTROL  *
                         FITS IN THESE 12 WORDS.
IGASPEDG DC    F'0' THIS IS THE HEAD OF THE DEFINITION WORD CHAIN FOR *
*              SPACE CONTROL AREAS FOR SUBPOOLS OTHER THAN SUBPOOL    *
*              ZERO. THIS IS ONLY THE HEAD OF THE CHAIN FOR THE SPACE *
*              CONTROL AREA FOR SUBPOOL ZERO, HOWEVER; IN THE SPACE   *
*              CONTROL AREA FOR THE OTHER SUBPOOLS IT IS THE ADDRESS  *
*              OF THE SPACE CONTROL AREA FOR SUBPOOL ZERO.            *
IGAROUND DC    XL4'FFFFFFF0'  THIS IS THE MASK TO USE FOR ROUNDING     *
                         REQUEST LENGTHS TO KEEP THE AREA ALLOCATED ON *
                         THE PROPER ADDRESSING BOUNDARY.
IGABLOCK DC    F'0'      THIS IS THE HEAD OF THE BLOCK CHAIN OF BLOCK  *
                         DEFINITION WORDS THAT DEFINE THE SPACE        *
                         OBTAINED IN GSPACE FOR REFILLS.
IGASPLNG DC    XL4'00000000'  THE SUBPOOL NUMBER AND LENGTH OF THE SPACE
                         CONTROL AREA.
IGASA0   DC    18F'0'    THIS IS THE INNER SPACE SAVE AREA.
IGASA1   DC    18F'0'    THIS IS THE OUTER SPACE SAVE AREA.
IGAS8    DC    4F'0'     THE FIXED LENGTH HEADER FOR THE FREE SPACE    *
                         CHAIN OF 8-BYTE ENTRIES.
IGAS12   DC    4F'0'     THE FIXEDHDR FOR THE 12-BYTE ENTRY FREE SPACE *
                         CHAIN.
IGAS80   DC    4F'0'     THE FIXEDHDR FOR THE 80-BYTE FREE SPACE CHAIN.
IGASPC   DSECT 0
IGANXSP  DC    F'0'  THE EDGE TO THE NEXT ONE.
IGASPADR DC    F'0'  THE ADDRESS OF THE SPACE CONTROL AREA. THE SUBPOOL*
                         NUMBER FOR THIS ONE IS IN THE LEFT BYTE OF THE*
                         ADDRESS.
IGASPFIN EQU   B'10000000'  THIS BIT IS ON FOR THE LAST EDGE IN THE    *
                         SPACE CONTROL AREA SUBPOOL CHAIN.
&SYSECT  CSECT
.NOSPDS  ANOP
&IGASA0  SETC  'X''40'''  THE OFFSET TO THE FIRST SAVE AREA IN THE SPACE
                         CONTROL AREA.
&IGASA1  SETC  'X''88'''  THE OFFSET TO THE SECOND SAVE AREA IN THE    *
                         SPACE CONTROL AREA.
&IGAS8   SETC  'X''D0'''  SET THE OFFSET FROM THE BEGINNING OF THE     *
                         SPACE CONTROL AREA TO THE FIXEDHDR FOR 8-BYTE *
                         ENTRIES.
&IGAS12  SETC  'X''E0'''  SET THE OFFSET TO THE FIXEDHDR FOR 12-BYTE   *
                         ENTRIES.
&IGAS80  SETC  'X''F0'''  SET THE OFFSET TO THE FIXEDHDR FOR 80-BYTE   *
                         ENTRIES.
&IGASPZ  SETC  'X''100'''  SET THE LENGTH OF THE SPACE CONTROL AREA.
         AGO   .RPTV8  ALMOST ALL DONE, EXCEPT FOR THE GLOBAL VARIABLES*
               FOR THE TYPE 8 AND 9 RADIX PARTITION TREES.
.**********************************************************************
.* COME HERE TO GENERATE MISCELLANEOUS GENERATA.                      *
.**********************************************************************
.GEN     AIF   ('&GEN(1)' EQ 'CVTRPT').LOADCVT  SEE IF THE SEQUENCE TO *
                         LOAD THE CVTRPT WORD SHOULD BE GENERATED.
         AIF   ('&GEN(1)' EQ 'TCBRPT').LOADTCB  SEE IF THE SEQUENCE TO *
                         LOAD THE TCBRPT WORD SHOULD BE GENERATED.
         AIF   ('&GEN(1)' EQ 'TCBRPTA').TCBADDR  SEE IF THE SEQUENCE TO*
                         GET THE ADDRESS OF THE TCBRPT WORD SHOULD BE  *
                         GENERATED.
         MNOTE 12,'INVALID GEN PARAMETER.'
         AGO   .FIN      FORGET IT, CAN'T DO ANYTHING WITH THIS.
.**********************************************************************
.* GENERATE THE CODE TO LOAD THE ADDRESS OF THE MODULE IGARPT01 FROM  *
.* THE CVTRPT WORD INTO THE REGISTER SPECIFIED BY THE SECOND ELEMENT  *
.* IN THE GEN PARAMTER.                                               *
.**********************************************************************
.LOADCVT ANOP
         AIF   (&IGAPGM).IGACVTL  SEE IF THIS IS THE IGARPT01 MODULE.
         AIF   (NOT(&IGALONE)).NOTLONE  SEE IF THIS IS REALLY IT.
&TAG     L     &GEN(2),=AL4(IGAFETCH)  ADDRESS OF THE FAKE TCBRPT WORD.
         BAL   &GEN(2),(X'10'+X'40'*(&GEN(2)-14))(,&GEN(2))  LINK TO   *
                         REPLACE THIS INSTRUCTION WITH A LOAD OF THE   *
                         ADDRESS OF IGARPT01.
         AGO   .GENFIN   ALL DONE GENERATING IT NOW.
.IGACVTL L     &GEN(2),ADDRESS  LOAD THE ADDRESS OF THE BEGINNING OF   *
                         THE MODULE IGARPT01.
         AGO   .GENFIN   ALL DONE NOW.
.NOTLONE ANOP
&TAG     L     &GEN(2),X'10'  CVT PTR.
         USING CVT,&GEN(2)
         L     &GEN(2),CVTRPT  ADDRESS OF IGARPT01.
         DROP  &GEN(2)
         AGO   .GENFIN
.**********************************************************************
.* GENERATE THE CODE TO LOAD THE TCBRPT WORD INTO THE REGISTER        *
.* SPECIFIED BY THE SECOND ELEMENT IN THE GEN PARAMETER.              *
.**********************************************************************
.LOADTCB ANOP
         AIF   (NOT &IGALONE).LTCBWRD  SEE IF THIS IS UNIT TEST.
         AIF   (&IGAPGM).IGATCBL  SEE IF THIS IS THE PROGRAM IGARPT01.
         MNOTE 12,'CAN''T GET THE TBCRPT STUFF.'
         AGO   .GENFIN   ALL DONE GENERATING IT NOW.
.IGATCBL ANOP
&TAG     BALR  &GEN(2),0
         AGO   .GENFIN
         USING *,&GEN(2)
         L     &GEN(2),=AL4(IGATCB)
         DROP  &GEN(2)
         AIF   ('&GEN(1)' EQ 'TCBRPTA').GENFIN
         L     &GEN(2),0(,&GEN(2))
         AGO   .GENFIN   ALL DONE NOW.
.LTCBWRD ANOP
&TAG     L     &GEN(2),X'10'  ADDRESS OF CVT.
         AGO   .GENFIN
         L     &GEN(2),0(&GEN(2))    ADDRESS OF TCB CHAIN.
         L     &GEN(2),X'04'(,&GEN(2))  CURRENT TCB ADDRESS.
         USING TCB,&GEN(2)
&CHAR    SETC  'A'       PREPARE FOR A LOAD ADDRESS INSTRUCTION.
         AIF   ('&GEN(1)' EQ 'TCBRPTA').NOWLOAD  SEE IF IT IS THE      *
                         ADDRESS OF THE TCBRPT WORD, OR THE ACTUAL     *
                         CONTENTS OF THE TCBRPT WORD.
&CHAR    SETC  ''        IT IS THE ACTUAL CONTENTS OF THE WORD.
.NOWLOAD L&CHAR &GEN(2),TCBRPT  LOAD IGA'S WORD.
         DROP  &GEN(2)
         AGO   .GENFIN   ALL DONE NOW.
.**********************************************************************
.* GENERATE THE ADDRESS OF THE TCBRPT WORD IN THE REGISTER SPECIFIED  *
.* BY THE SECOND ELEMENT OF THE GEN PARAMETER.                        *
.**********************************************************************
.TCBADDR ANOP
         AIF   (NOT &IGALONE).LTCBWRD  SEE IF THIS IS THE REAL THING,  *
                         AND NOT JUST UNIT TEST.
         AIF   (&IGAPGM).IGATCBL  SEE IF THIS IS THE MODULE IGARPT01.
         MNOTE 12,'CAN''T GET THE ADDRESS OF THE TCBRPT WORD.'
         AGO   .GENFIN   ALL DONE GENERATING IT NOW.
.GENFIN  AIF   ((NOT &IGALONE)OR &IGAFTCH).FIN  SEE IF THE IGAFETCH    *
                         CSECT IS NEEDED.
         AIF   (&IGAPGM).FIN  DON'T GENERATE IT IN THE IGARPT01 MODULE.
&IGAFTCH SETB  (1)       DON'T GENERATE IT MORE THAN ONCE.
IGAFETCH CSECT
IGACVT   DC    F'0'      THIS WILL BE THE ADDRESS OF THE MODULE        *
                         IGARPT01 AFTER IT IS LOADED.
&X       SETA  (14)      START BY GENERATING THE CODE FOR REGISTER 14.
.GOAGAIN ANOP
         ORG   IGAFETCH+X'10'+(X'40'*(&X-14))  ORIGIN TO THE CORRECT   *
                         OFFSET FOR THE BRANCH ENTRY.
&Y       SETA  8
.BCTRCTR BCTR  &X,0
&Y       SETA  (&Y-1)
         AIF (&Y GT 0).BCTRCTR GENERATE 8 BCTR INSTRUCTIONS TO BACK UP *
                         THE LINKAGE ADDRESS TO THE LOAD INSTRUCTION.
         ST    2,4(,&X)  SAVE REGISTER 2 ON TOP OF THE BAL INSTRUCTION.
         BALR  2,0       ESTABLISH ADDRESSABILITY.
         USING *,2
         STM   0,1,IGASAVE0  SAVE REGISTERS 0 AND 1.
         BAL   2,IGAGCVT  GO CHECK TO SEE IF THE MODULE IS LOADED.
         DROP  2
         BALR  1,0       GET BACK ADDRESSABILITY.
         USING *,1
         AIF   (&X EQ 14).XIS14  SEE IF &X IS FOURTEEN.
         L     0,IGA15AL1  LOAD THE INSTRUCTION "L 15,0(,15)".
         AGO   .XDONE    SKIP AROUND THE CASE FOR &X = 14.
.XIS14   L     0,IGA14AL1  LOAD THE INSTRUCTION "L 14,0(,14)".
.XDONE   ANOP
         L     2,4(,&X)  RESTORE REGISTER 2.
         ST    0,4(,&X)  OVERLAY THE BAL INSTRUCTION WITH A LOAD OF THE*
                         ADDRESS OF IGARPT01.
         LM    0,1,IGASAVE0  RESTORE REGISTERS ZERO AND ONE.
         BR    &X        RETUTN TO THE LOAD OF THE ADDRESS OF IGAFETCH.
         DROP  1
&X       SETA  (&X+1)    EKE THE REGISTER.
         AIF   (&X EQ 15).GOAGAIN  REPEAT IT FOR REGISTER 15.
         ORG   IGAFETCH+X'40'*2  ORIGIN TO THE RIGHT PLACE FOR THE     *
                         SUBROUTINE TO LOAD THE MODULE.
***********************************************************************
* FETCH THE CONTENTS OF THE CVTRPT WORD, WHICH IS JUST THE ADDRESS OF *
* THE MODULE IGARPT01. DO THIS BY LOOKING TO SEE IF THE MODULE HAS    *
* BEEN LOADED ALREADY, AND IF IT HASN'T THEN LOAD IT FIRST.           *
***********************************************************************
IGAGCVT  SLR   0,0
         BALR  1,0
         USING *,1
IGASL0   SL    1,IGASL0A
         DROP  1
         USING IGAFETCH,1
         CL    0,IGACVT  SEE IF THE MODULE IS ALREADY LOADED.
         BCR   8,2       RETURN IF IT IS ALREADY LOADED.
         LOAD  EP=IGARPT01  LOAD THE MODULE.
         DROP  1
         BALR  1,0
         USING *,1
IGASL1   SL    1,IGASL1A
         DROP  1
         USING IGAFETCH,1
         ST    0,IGACVT  STORE THE ADDRESS OF THE LOADED MODULE.
         DROP  1
         BR    2
         CNOP  0,8
IGASAVE0 DC    XL8'FFFFFFFFFFFFFFFF'
IGASL0A  DC    AL4(IGASL0-IGAFETCH)
IGASL1A  DC    AL4(IGASL1-IGAFETCH)
IGA14AL1 L     14,0(,14)
IGA15AL1 L     15,0(,15)
&SYSECT  CSECT
.FIN     ANOP
         MEND
./ ADD NAME=RSYMRCD
RRCDL    DS    H                        RECORD LENGTH
         SPACE
RFLGA    DSW   RPSOP,                        PSEUDO OP                 ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
               ,                             NOT USED                  ,
                                             NOT USED
         SPACE
RFLGB    DSW   ,,                                                      ,
               ,                             NOT USED                  ,
               ENTRYSW1,                     ENTRY ITEM PENDING        ,
               ESDNRSW1,                                               ,
               CSECTSW1,                                               ,
               DSECTSW1,                                               ,
               DSCOMSW1
         SPACE
RTYPE    DBV   ,                        RECORD TYPE.  (SEE 'JTEXT')
         SPACE
RFLDI    DSW   ESDOFLO,                                                ,
               DEFINED,                      SYMBOL DEFINED, NO ERROR  ,
               PRIORDEF,                     PREVIOUSLY DEFINED SYMBOL ,
               RFIELDN,                      NAME FIELD APPENDED       ,
               RFIELDX,                      FIELD 'A' OR 'B' APPENDED ,
               ,                             LENGTH OF NAME MINUS ONE
         SPACE
RSWTS    DSW   ,DSW1,CSW1,,ESW1,                                OX00106,
               EQUF1                         ERRONEOUS LENGTH  @OY08064
         ORG   RSWTS
RESDI    DS    H                        ESDID ASSOCIATED WITH VALUE
RLCTR    DS    F                        VALUE
RLNGA    DS    0X
RFLDA    EQU   RLNGA+1
RNAME    DS    CL8                      SYMBOL
RLNGQ    DS    H                        SYMBOL LENGTH ATTRIBUTE
RLNGB    DS    0X
RFLDB    EQU   RLNGB+1
         ORG   ,
RLAST    EQU   *
         ORG   RRCDL
RITEM    DS    XL(RLAST-RRCDL)
         ORG   RNAME
RSYMC1   DS    0XL(L'RNAME+L'RLNGQ)     COMMON SEGMENT
         ORG   RESDI
RSYMC2   DS    0XL(L'RESDI+L'RLCTR)     COMMON SEGMENT
RESDC    DS    0XL(L'RESDI+L'RLCTR)     COMMON SEGMENT
./ ADD NAME=RXLFMTS
PPIN     DSECT
PPRLI    DS    CL2                      RECORD LENGTH
PPFLG    DS    CL2                      FLAGS
PPIOC    DS    CL2                      INTERNAL OP CODE
         SPACE
         ORG   PPRLI
RLDIN    EQU   *                        RLD INPUT RECORD FORMAT
RLDLEN   DS    CL2                      RLD RECORD LENGTH
RFLAG    DS    CL2                      FLAG
ROPCDE   DS    CL2                      OPCODE BYTES
POSID    DS    CL2                      POSITION ESD/ID
RELID    DS    CL2                      RELOCATION ESD/ID
RLDVAL   DS    CL3                      RLD SYMBOL ADDRESS
RLDFLG   DS    C                        RLD FLAG
         DS    0F                       FULL-WORD ALIGNMENT
RLDND    EQU   *-RLDIN                  LENGTH OF RECORD
RLDTYPE  EQU   JR                       RLD RECORD I.D.
         SPACE
         ORG   PPRLI
XRFIN    EQU   *                        XREF INPUT RECORD FORMAT
XRECLN   DS    CL2                      XREF RECORD LENGTH
XFLAG    DS    CL2                      FLAG
XOPCDE   DS    CL2                      OP CODE
XRFSYM   DS    CL8                      XREF SYMBOL
XRFFLG   DS    C                        XREF FLAG, BASE, DEF, DUP,UNDEF
XRFSTM   DS    CL2                      XREF STATEMENT NUMBER
XRFLN    EQU   *-XOPCDE                 SORT CONTROL FIELD LENGTH
XRFLEN   DS    CL2                      XREF LENGTH
XRFVAL   DS    CL4                      XREF VALUE
         DS    0F                       FULL-WORD ALIGNMENT
XRFND    EQU   *-XRFIN                  LENGTH OF XREF RECORD
XRFTYPE  EQU   JX                       XREF RECORD I.D.
         ORG   XRFSYM                   .
LITLOCTR DS    CL4                      LITERAL LOCATION COUNTER
LITESDID DS    CL2                      LITERAL ESD ID
LITPOLID DS    C                        LITERAL POOL ID
         ORG   XRFVAL                   LITERAL ORIGIN
LITDTL   DS    C                        LITERAL DATA LENGTH
LITDTA   EQU   *                        LITERAL DATA
LXEND    EQU   *-XRFIN
LITTYPE  EQU   JY                       LITERAL XREF TYPE
BASE     EQU   X'01'                    BASE MASK
REF      EQU   X'02'                    REFERENCE MASK
DUPL     EQU   X'03'                    DUPLICATE MASK
./ ADD NAME=SCANL
         MACRO
&TAG     SCANL &TREE,&MORE=,&DONE=
.*A000000                                                        Y02147
.*A000000                                                        Y02147
.**********************************************************************
LJW&SYSNDX EQU 1
         USING IGARPTH,LJW&SYSNDX
         AIF   (K'&TREE EQ K'&TREE(1)+2).LW1
&TAG     L     1,&TREE
.LW0     L     15,=AL4(IGASCANL)
         BALR  14,15
         AGO   .FIN
.LW1     ANOP
&TAG     LR    1,&TREE
         AGO   .LW0
.FIN     ANOP
         AIF   (K'&MORE NE 0).LW3
         AIF   (K'&DONE EQ 0).END
         LTR   15,15
         BC    8,&DONE
         AGO   .END
.LW3     AIF   (K'&DONE NE 0).LW4
         LTR   15,15
         BC    7,&MORE
         AGO   .END
.LW4     LTR   15,15
         BC    7,&MORE
         BC    8,&DONE
.END     ANOP
         DROP  LJW&SYSNDX
         RPTDSECT
         MEND
./ ADD NAME=SCANR
         MACRO
&TAG     SCANR &TREE,&MORE=,&DONE=
.*A000000                                                        Y02147
.**********************************************************************
LJW&SYSNDX EQU 1
         USING IGARPTH,LJW&SYSNDX
         AIF   (K'&TREE EQ K'&TREE(1)+2).LW1
&TAG     L     1,&TREE
.LW0     L     15,=AL4(IGASCANR)
         BALR  14,15
         AGO   .FIN
.LW1     ANOP
&TAG     LR    1,&TREE
         AGO   .LW0
.FIN     ANOP
         AIF   (K'&MORE NE 0).LW3
         AIF   (K'&DONE EQ 0).END
         LTR   15,15
         BC    8,&DONE
         AGO   .END
.LW3     AIF   (K'&DONE NE 0).LW4
         LTR   15,15
         BC    7,&MORE
         AGO   .END
.LW4     LTR   15,15
         BC    7,&MORE
         BC    8,&DONE
.END     ANOP
         DROP  LJW&SYSNDX
         RPTDSECT
         MEND
./ ADD NAME=SCSW
         MACRO
&L       SCSW  &A,&B,&C
         GBLB  &Z
         LCLA  &X
         LCLC  &Y
         AIF   (&Z).T1
O        EQU   1                   ONES.
M        EQU   4                   MIXED.
Z        EQU   8                   ZEROS.
&Z       SETB  1
.T1      ANOP
&X       SETA  K'&B-1
&Y       SETC  '&B'(1,&X)
         AIF   ('&A' EQ 'C').L1
         AIF   ('&A' EQ 'S').L2
&L       TM    &B,&Y
         BC    &A,&C
         MEXIT
.L1      ANOP
&L       NI    &B,255-&Y
         MEXIT
.L2      ANOP
&L       OI    &B,&Y
         MEND
./ ADD NAME=SETFRRI
         MACRO
&NAME    SETFRRI &OPT,                                                 X
               &CLEAR=,                                                X
               &EUT=,                                                  X
               &FRRAD=,                                                X
               &INLINE=NO,                                             X
               &MODE=,                                                 X
               &PARMAD=,                                               X
               &RELATED=,                                              X
               &WRKREGS=,                                              X
               &OPT2
.* A 000000-999999                                             @G38LP1S
.*
.**********************************************************************
.*                                                                    *
.* MACRO NAME = SETFRRI                                               *
.*                                                                    *
.* DESCRIPTIVE NAME = SET FUNCTIONAL RECOVERY ROUTINE INSTRUCTION     *
.*                                                                    *
.*    COPYRIGHT =                                                     *
.*        5740-XYN COPYRIGHT IBM CORP. 1980                           *
.*        LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,                 *
.*        REFER TO COPYRIGHT INSTRUCTIONS FORM                        *
.*        NUMBER G120-2083.                                           *
.*                                                                    *
.* STATUS = OS/VS2 JBB1226                                            *
.*                                                                    *
.* USAGE =                                                            *
.*                                                                    *
.*        THE SETFRRI MACRO EXPANSION GENERATES A FORM OF THE         *
.*        SETFRR MACRO WHICH WILL UTILIZE THE ADD FRR INSTRUCTION     *
.*                                                                    *
.* CHANGE-ACTIVITY                                                    *
.*        NONE                                                        *
.*                                                                    *
.**********************************************************************
&NAME    SETFRR &OPT,                                                  X
               ASSIST=YES,                                             X
               CLEAR=&CLEAR,                                           X
               EUT=&EUT,                                               X
               FRRAD=&FRRAD,                                           X
               INLINE=&INLINE,                                         X
               MODE=&MODE,                                             X
               PARMAD=&PARMAD,                                         X
               RELATED=&RELATED,                                       X
               WRKREGS=&WRKREGS,                                       X
               &OPT2
         MEND
./ ADD NAME=SETLOCKI
          MACRO
&NAME     SETLOCKI &REQ,&TYPE=,&ADDR=,&RELATED=,&MODE=UNCOND,          X
               &DISABLE,&ERRET=,&SYS=MP,&ASCB=
.**************************************************************@G50EPXS
.*01*  COPYRIGHT =                                             @G50EPXS
.*        5740-XYN COPYRIGHT IBM CORP 1977, 1981,                  @L1C
.*        LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,              @L1C
.*        REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          @G50EPXS
.*        G120-2083.                                           @G50EPXS
.*                                                             @G381PXR
.*01*   STATUS = OS/VS2 JBB1326                                    @L1C
.**************************************************************@G50EPXS
.*    CHANGE LEVEL =                                               @L1A
.*    CMSSMF LOCK SUPPORT                                      @G741PXT
.*    CML LOCK SUPPORT                                         @G381PXR
.*    PERFORMANCE SUPPORT                                      @G387PXR
.*    UPDATE AUTHORIZED CSECT LIST                             @ZMB0506
.* $L1= VIRFETCH, JBB1326, 103180, PD16XA: VIRTUAL FETCH ENHANCEMENT
*     MACDATE = 10/31/80                                           @L1C
          GBLB   &STLKCAL
          LCLA   &INDEX,&MASK,&OF
          LCLA   &BR1,&BR2,&BR3
          LCLA   &M1,&IN,&M2                                   @G381PXR
          LCLB   &DIS,&HI,&AUTH
          LCLA   &R1,&R2,&R3,&R4
          LCLC   &R5,&R
          AIF    ('&MODE' EQ 'UNCOND').MODEOK                  @G741PXT
          AIF    ('&MODE' NE 'COND').MODERR
.MODEOK   ANOP                                                 @G741PXT
.*  CHECK FOR VALID REQUEST
          AIF    ('&REQ' EQ 'OBT').REQVAL
          AIF    ('&REQ' EQ 'OBTAIN').REQVAL
          AIF    ('&REQ' EQ 'REL').REQVAL
          AIF    ('&REQ' EQ 'RELEASE').REQVAL
          MNOTE  8,'*** INVALID REQUEST FUNCTION'
          MEXIT
.REQVAL   ANOP
.*   SET INITIAL VALUES FOR LOCALS
&R1       SETA   11
&R2       SETA   12
&R3       SETA   13
&R4       SETA   14
&INDEX    SETA   12
&MASK     SETA   4096
&M1       SETA   16
&OF       SETA   2
&DIS      SETB   0
&AUTH     SETB   0
&IN       SETA   0
          AIF    ('&DISABLE' EQ '').DISSKP
          AIF    ('&DISABLE' EQ 'DISABLE').SETDIS
          AIF    ('&DISABLE' EQ 'DISABLED').SETDIS
          MNOTE  4,'*** &DISABLE OPERAND INVALID'
          AGO   .DISSKP
.SETDIS   ANOP
&DIS      SETB   1
.DISSKP   ANOP
          AIF    ('&SYSECT' EQ 'IEAVEEXP').SETAU
          AIF    ('&SYSECT' EQ 'IEAVESVC').SETAU
          AIF    ('&SYSECT' EQ 'IECVPST').SETAU                @G38IPXR
          AIF    ('&SYSECT' EQ 'ISGLNQDQ').SETAU               @ZMB0506
          AIF    ('&SYSECT' EQ 'ISGGRP00').SETAU               @G38IPXR
          AIF    ('&SYSECT' EQ 'IEAVLK00').SETAU               @G387PXR
          AIF    ('&SYSECT' EQ 'IEAVLK01').SETAU               @G387PXR
          AIF    ('&SYSECT' EQ 'IEAVEDS0').SETAU               @G387PXR
          AIF    ('&SYSECT' EQ 'CSVVFIND').SETAU                   @L1A
          AIF    ('&SYSECT' EQ 'CSVVFGET').SETAU                   @L1A
          AGO    .NOTAUTH
.SETAU    ANOP
&AUTH     SETB   1        INDICATE USER IS AUTHORIZED
.NOTAUTH  ANOP
          AIF   (&STLKCAL EQ 1).SKPDS0H
&NAME    DS    0H
.SKPDS0H ANOP
&STLKCAL SETB  0
.****************************************************************
.*   DETERMINE LOCK TYPE  AND SET UP CONSTANTS FOR CODE
.*   SET UP MASK VALUE, LITA INDEX, HLHI OFFSET, AND TM MASK
.***************************************************************
          AIF    ('&TYPE' EQ 'DISP').CODE
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   256
&M1       SETA   1
&IN       SETA   16
          AIF    ('&TYPE' EQ 'IOSCAT').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   128
&M1       SETA   128
&IN       SETA   20
&OF       SETA   3
          AIF    ('&TYPE' EQ 'IOSUCB').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   64
&M1       SETA   64
&IN       SETA   24
          AIF    ('&TYPE' EQ 'IOSLCH').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   512
&M1       SETA   2
&IN       SETA   12
&OF       SETA   2
          AIF    ('&TYPE' EQ 'IOSYNCH').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   32
&M1       SETA   32
&IN       SETA   28
&OF       SETA   3
          AIF    ('&TYPE' EQ 'TPNCB').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   16
&M1       SETA   16
&IN       SETA   32
          AIF    ('&TYPE' EQ 'TPDNCB').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   8
&M1       SETA   8
&IN       SETA   36
          AIF    ('&TYPE' EQ 'TPACBDEB').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   2048
&M1       SETA   8
&IN       SETA   4
&OF       SETA   2
          AIF    ('&TYPE' EQ 'ASM').CODEA
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   1024
&M1       SETA   4
&IN       SETA   8
          AIF    ('&TYPE' EQ 'SALLOC').CODE
&INDEX    SETA   (&INDEX+48)
&MASK     SETA   4
&M1       SETA   4
&IN       SETA   40
&OF       SETA   3
          AIF    ('&TYPE' EQ 'SRM').CODE
          AIF    ('&TYPE' EQ 'LOCAL').LOCAL
          AIF    ('&TYPE' EQ 'CMS').CMS
          AIF    ('&TYPE' EQ 'CMSEQDQ').CMS                    @G50EPXS
          AIF    ('&TYPE' EQ 'CMSSMF').CMS                     @G741PXT
          MNOTE  8,'*** INVALID TYPE SPECIFIED FOR SETLOCKI'
          MEXIT
.********************************************************************
.*  GLOBAL SPIN LOCK PATH, SINGLE LOCK AT THIS LEVEL
.********************************************************************
.CODE    AIF   ('&MODE' NE 'UNCOND').NOTSUP  ONLY UNCOND IS SUPPORTED
         AIF    ('&ADDR' EQ '').OK1  INSURE ADDR NOT SPECIFIED
.ADDINV  MNOTE  *,'*** ADDR OPERAND INVALID WITH &TYPE LOCK'
.OK1     AIF    ('&REQ' EQ 'RELEASE').CODEREL
         AIF    ('&REQ' EQ 'REL').CODEREL
         L     &R4,PSALITA-PSA(0,0)      LOCK INTERFACE TABLE ADDR
.UP1     AIF    (&DIS EQ 1).SKP2    SKIP DISABLE IF SPECIFIED
         STNSM PSAMPSW-PSA(0),X'FC'      DISABLE CURRENT PSW
.SKP2    ANOP
         AIF    ('&SYS' EQ 'UP').UP3
         LH    &R2,PSACPULA-PSA(0,0)     LOAD CPU ADDRESS
         L     &R1,&INDEX.(&R4,0)        LOCK ADDRESS
         SLR   &R3,&R3                   CLEAR RET CODE REG
         CS    &R3,&R2,0(&R1)            ATTEMPT LOCK OBTAIN
         BZ    *+12                      EXIT IF SUCCESSFUL
         LM    &R1,&R3,&INDEX.(&R4)      LOCK MANAGER LINKAGE
         BAL   &R4,4(0,&R3)              LINK TO LOCK MANAGER
.UP3     OI    PSAHLHI-PSA+&OF.(0),&M1   SET LOCK HELD BIT
         MEXIT
.*********************************************************************
.*  GLOBAL SPIN CLASS LOCK OBTAIN PATH, MULTIPLE LOCKS AT ONE LEVEL
.*********************************************************************
.CODEA   AIF    ('&MODE' NE 'UNCOND').NOTSUP ONLY UNCOND IS SUPPORTED
&INDEX   SETA   (&INDEX+4)   INCREMENT FOR MULTIPLE LOCKS
         AIF ('&ADDR' NE '').OK2   INSURE LOCK ADDRESS SPECIFIED
         MNOTE 8,'*** ADDR= MUST BE SPECIFIED FOR &TYPE LOCK'
         MEXIT
.BADADD  MNOTE 8,'*** ADDR= MUST SPECIFY REGISTER'
         MEXIT
.OK2     AIF    ('&ADDR'(1,1) NE '(').BADADD ISSUE MNOTE FOR BAD PARM
&R5      SETC   '&ADDR(1)'         SET LOCK REG VALUE
         AIF   ('&REQ' EQ 'RELEASE').CODEARL
         AIF   ('&REQ' EQ 'REL').CODEARL
         AIF   ('&R5' NE '11').RP11
         AGO   .RP11A
.RP11    ANOP
         LR    &R1,&R5                   COPY LOCK ADDRESS
.RP11A   ANOP
         AIF   (&DIS EQ 1).SKP2A   SKIP DISABLE IF REQUESTED
         STNSM PSAMPSW-PSA,X'FC'         DISABLE CURRENT PSW
.SKP2A   LH    &R2,PSACPULA-PSA(0,0)     CURRENT CPU ADDRESS
         L     &R3,PSACLHT-PSA+&IN.(0,0) LOAD LOCK HELD PTR
         LTR   &R3,&R3                   CHECK IF ZERO
         BNZ   *+12                      ERROR IF NOT
         CS    &R3,&R2,0(&R1)            ATTEMPT LOCK OBTAIN
         BZ    *+20                      EXIT IF SUCCESSFUL
         L     &R4,PSALITA-PSA(0,0)      LOCK MGR ENTRY
         LM    &R2,&R3,&INDEX.(&R4)      LINKAGE REGS
         BAL   &R4,4(0,&R3)              LINK TO LOCK MANAGER
         B     *+12                      EXIT
         ST    &R1,PSACLHT-PSA+&IN.(0,0) STORE LOCK ADDRESS IN TABLE
         OI    PSAHLHI-PSA+&OF.(0),&M1   SET LOCK HELD BIT
         MEXIT
.********************************************************************
.*  GLOBAL CLASS LOCK RELEASE PATH, MULTIPLE LOCKS AT ONE LEVEL
.********************************************************************
.SWAPRG  ANOP
         LR    &R2,&R3                   COPY LOCK ADDRESS
&R5      SETC  '12'
         AGO   .SWAPR1
.CODEARL ANOP
&BR1     SETA  16                      DEFAULT BRANCH VALUE
         AIF   ('&DISABLE' NE '').NOADD CONT IF DISABLED SPECIFIED
&BR1     SETA  36                      BRANCH VALUE WITH CHECK
.NOADD   ANOP
         AIF   ('&R5' EQ '13').SWAPRG
         LR    &R3,&R5                   COPY LOCK ADDRESS
.SWAPR1  S     &R3,PSACLHT-PSA+&IN.(0,0) CHECK IF LOCK HELD
         AIF   ('&ERRET' EQ '').RETCODA  BRANCH SPECIFIED?
         BNZ   &ERRET                    BRANCH TO ERROR EXIT
         AGO   .NORETA     SKIP RETURN CODE LOGIC
.RETCODA BZ    *+12                      CONTINUE IF HELD
         LA    &R3,4(0,0)                ERROR RET CODE IF NOT HELD
         B     *+&BR1                    EXIT
.NORETA  ST    &R3,PSACLHT-PSA+&IN.(0,0) CLEAR LOCK HELD TABLE
         ST    &R3,0(&R5,0)              ZERO OUT LOCK WORD
         AGO   .RELCOM     GOTO COMMON RELEASE CODE
.*********************************************************************
.*  GLOBAL LOCK RELEASE PATH, SINGLE LOCK AT THIS LEVEL
.*********************************************************************
.CODEREL ANOP
&BR3     SETA  12   BRANCH OFFSET WITH DISABLED OPTION
         AIF   ('&DISABLE' NE '').NOAD1 SKIP IF DISABLED SPECIFIED
&BR3     SETA  32   BRANCH OFFSET WITHOUT DIS OPT
.NOAD1   ANOP
         L     &R4,PSALITA-PSA(0,0)      LOCK INTERFACE TABLE ADDR
         SLR   &R3,&R3                   CLEAR REG FOR RETCODE
         L     &R1,&INDEX.(&R4,0)        LOAD LOCK ADDRESS
         TM    PSAHLHI-PSA+&OF.(0),&M1   CHECK IF OWNED BY US
         AIF   ('&ERRET' EQ '').RETCOD  SKIP IF BRANCH NOT REQUESTED
         BNO   &ERRET                    BRANCH TO ERROR EXIT
         AGO   .NORET    SKIP ERROR RETURN CODE GENERATION
.RETCOD  BO    *+12                      CONTINUE IF SUCCESSFUL
         LA    &R3,4(0,0)                SET ERROR RETURN CODE
         B     *+&BR3                    EXIT
.NORET   ST    &R3,0(&R1,0)              ZERO LOCK WORD
.********************************************************************
.*  COMMON GLOBAL LOCK RELEASE PATH
.********************************************************************
.RELCOM  ANOP
&M2      SETA  (255-&M1)
         NI    PSAHLHI-PSA+&OF.(0),&M2   RESET LOCK HELD BIT
         AIF   (&DIS EQ 1).SKP5  SKIP ENABLE IF REQUESTED
         L     &R2,PSAHLHI-PSA(0,0)      LOCKS HELD STRING
         SRL   &R2,2                     IGNORE LOCAL AND CMS
         O     &R2,PSASUPER-PSA(0,0)     CHECK SUPER BITS ALSO
         BNZ   *+8                       SKIP ENABLE IF NOT ZERO
         STOSM PSAMPSW-PSA(0),X'03'      ENABLE I/O AND EXT
.SKP5    MEXIT
.*****************************************************************
.*  LOCAL LOCK EXPANSIONS, OBTAIN AND RELEASE
.******************************************************************
.LOCAL   ANOP                         LOCAL LOCK OBTAIN
         AIF   ('&MODE' EQ 'UNCOND').LLUNC CHECK FOR UNCONDITIONAL
         AIF   ('&REQ' EQ 'OBTAIN' OR '&REQ' EQ 'OBT').LL1
         MNOTE 4,'*** CONDITIONAL MODE IGNORED WITH RELEASE'
         AGO   .LLUNC
.******************************************************************
.* LOCAL LOCK CONDITIONAL OBTAIN EXPANSIONS..
.******************************************************************
.LL1     AIF   ('&ADDR' NE '').LLERR1   ADDRESS INVALID FOR LL
.LL1A    AIF   (&DIS NE 1 AND '&MODE' EQ 'COND').LLERR2
&R       SETC   '11'
         AIF    ('&ASCB' NE '').LLASCB  CHECK FOR ASCB ADDRESS
         L     &R1,PSAAOLD-PSA(0,0)      LOAD ASCB ADDRESS
         AGO   .LL2
.LLASCB  ANOP
&R       SETC  '&ASCB(1)'
.LL2     AIF   (&AUTH EQ 1).LL2A
         TM    PSAHLHI-PSA+3(0),1        CHECK IF LOCK IS HELD
         AIF   ('&ERRET' EQ '').LL2B
         BO    &ERRET                    LOCK IS HELD.. EXIT
         AGO   .LL2A
.LL2B    BO    *+18                      SET ERROR RETURN CODE
.LL2A    LH    &R2,PSACPULA-PSA(0,0)     LOAD LOGICAL CPU ADDRESS
         SLR   &R3,&R3                   CLEAR REG FOR SWAP
         CS    &R3,&R2,ASCBLOCK-ASCB(&R) ATTEMPT LOCK OBTAIN
         AIF   ('&ERRET' NE '').LLRET  CHECK IF ERROR EXIT
         BZ    *+12                      CONTINUE IF SUCCESSFUL
         LA    &R3,8(0,0)                ERROR RETURN CODE
         B     *+8                       EXIT
         AGO   .LLEXIT
.LLRET   BNZ   &ERRET                    GO TO ERROR EXIT
.LLEXIT  OI    PSAHLHI-PSA+3(0),1        SET LOCK HELD FLAG
         MEXIT
.*********************************************************************
.*  LOCAL LOCK UNCONDITIONAL OBTAIN AND RELEASE EXPANSION
.*********************************************************************
.LLUNC   ANOP
         AIF   ('&ADDR' NE '').LLERR3    ADDR NOT REQUIRED FOR UNCOND
         AIF   (&AUTH NE 1).LLUNC1       CHECK AUTHORIZED CALL @G38IPXR
         AIF   ('&REQ' EQ 'OBTAIN' OR '&REQ' EQ 'OBT').LLAOP   @G38IPXR
         DC    XL2'E505'                 RELEASE LOCAL LOCK    @G38IPXR
         AGO   .LLAOP1                   GO COMPLETE OP CODE   @G38IPXR
.LLAOP   ANOP                                                  @G38IPXR
         DC    XL2'E504'                 OBTAIN LOCAL LOCK     @G38IPXR
.LLAOP1  ANOP                                                  @G38IPXR
         DC    S(PSAAOLD-PSA(0))         ASCB ADDR OF LOCAL    @G38IPXR
         DC    S(PSAHLHI-PSA(0))         LOCK HELD INDICATOR   @G38IPXR
         MEXIT                                                 @G38IPXR
.LLUNC1  ANOP
         AIF   ('&REQ' EQ 'OBTAIN' OR '&REQ' EQ 'OBT').OBTOP
&INDEX   SETA  596                       OFFSET IN LIT FOR     @G381PXR
.*                                       LOCAL RELEASE         @G381PXR
         AGO   .FIRSTOP                  GO SET OPERANDS
.OBTOP   ANOP
&INDEX   SETA  584                       OFFSET IN LIT FOR     @G381PXR
.*                                       LOCAL UNCOND OBTAIN   @G381PXR
.FIRSTOP ANOP
         L     &R3,PSALITA-PSA(0)        GET LITA ADDRESS      @G381PXR
         L     &R3,&INDEX.(&R3)          GET ENTRY TO SERVICE  @G381PXR
         BALR  &R4,&R3                   BRANCH ENTER ROUTINE  @G381PXR
         MEXIT
.LLERR1  MNOTE  4,'*** ADDR= KEYWORD NOT USED FOR LOCAL LOCK'
         AGO   .LL1A
.LLERR2  MNOTE  8,'*** DISABLED OPTION REQUIRED, NOT SPECIFIED'
         MEXIT
.LLERR3  MNOTE  4,'*** ADDR= KEYWORD NOT USED FOR LOCAL LOCK'
         AGO    .LLUNC1
.NOTSUP  MNOTE  8,'*** &TYPE CONDITIONAL OBTAIN NOT SUPPORTED'
         MEXIT
.MODERR  MNOTE  8,'*** INVALID MODE SPECIFIY COND OR UNCOND'
         MEXIT
.*********************************************************************
.*  CROSS MEMORY SERVICES LOCKS OBTAIN AND RELEASE EXPANSIONS  @ZM45746
.*********************************************************************
.CMS     ANOP
         AIF  ('&MODE' EQ 'COND').NOTSUP CROSS MEMORY SERVICES @ZM45746
.*                                       CONDITIONAL REQUEST   @ZM45746
.*                                       NOT SUPPORTED         @ZM45746
         AIF   ('&ADDR' NE '').LLERR4    ADDR= IS IGNORED
.CMSCONT ANOP
         AIF   ('&TYPE' EQ 'CMSEQDQ').CMSEQDQ ENQ/DEQ LOCK     @G50EPXS
         AIF   ('&TYPE' EQ 'CMSSMF').CMSSMF SMF LOCK           @G741PXT
&INDEX   SETA  540                       OFFSET IN LIT FOR     @G381PXR
.*                                       GEN CMS UNCOND OBTAIN @G381PXR
         AGO   .CMSOBRL                  CHECK OBT OR REL      @G50EPXS
.CMSEQDQ ANOP                                                  @G50EPXS
&INDEX   SETA  624                       OFFSET INTO LIT FOR   @G381PXR
.*                                       CMSEQDQ UNCOND OBTAIN @G381PXR
         AGO   .CMSOBRL                                        @G381PXR
.CMSSMF  ANOP                                                  @G741PXT
&INDEX   SETA  696                       OFFSET INTO LIT FOR   @G381PXR
.*                                       CMSSMF UNCOND OBTAIN  @G381PXR
.CMSOBRL AIF   ('&REQ' EQ 'OBTAIN' OR '&REQ' EQ 'OBT').OBTCMS  @G50EPXS
         L     &R1,PSALITA-PSA(0)        GET LOCK TABLE ADDR   @G387PXR
         L     &R1,&INDEX.(,&R1)         GET LOCKWORD ADDRESS  @G387PXR
         DC    XL2'E507'                 CMS RELEASE OP CODE   @G387PXR
         DC    S(PSAAOLD-PSA(0))         CURRENT ASCB          @G387PXR
         DC    S(PSAHLHI-PSA(0))         LOCK HELD INDICATOR   @G387PXR
         MEXIT                                                 @G387PXR
.OBTCMS  ANOP
         AIF   (&AUTH EQ 1).AUTHCMS      AUTHORIZED OBT CALLER @G387PXR
         L     &R1,PSALITA-PSA(0)        GET LITA ADDRESS      @G381PXR
         LM    &R1,&R3,&INDEX.(&R1)      GET INTERFACE REGS    @G381PXR
         BALR  &R4,&R3                   BRANCH TO SERVICE RTN @G381PXR
         MEXIT
.AUTHCMS ANOP                                                  @G38IPXR
         L     &R1,PSALITA-PSA(0)        GET LOCK TABLE ADDR   @G38IPXR
         L     &R1,&INDEX.(,&R1)         GET LOCKWORD ADDRESS  @G38IPXR
         DC    XL2'E506'                 CMS OBTAIN  OP CODE   @G38IPXR
         DC    S(PSAAOLD-PSA(0))         LOCALLY LOCKED ASCB   @G38IPXR
         DC    S(PSAHLHI-PSA(0))         LOCK HELD INDICATOR   @G38IPXR
         MEXIT                                                 @G38IPXR
.LLERR4  MNOTE 4,'*** ADDR= KEYWORD NOT USED FOR &TYPE LOCK'   @ZM45746
         AGO   .CMSCONT
         MEND
./ ADD NAME=SET
         MACRO
&NAME    SET   &SW,&OP
         GBLA  &INDEX
         GBLC  &DEFNAME(255),&SWNAME(255)
         LCLA  &I,&J,&K,&II
         LCLC  &DEF,&P(8)
.*       SET A SPECIFIED BIT ON OR OFF.
         AIF   (K'&SW EQ 0).ERR1
         AIF   (N'&SW LT 1 OR N'&SW GT 8).ERR1
.LOOP1   ANOP
&I       SETA  &I+1
         AIF   (&I GT &INDEX).DBV1
         AIF   ('&SW(1)' NE '&SWNAME(&I)').LOOP1
         AIF   (K'&OP EQ 0).ERR1
&DEF     SETC  '&DEFNAME(&I)'
&I       SETA  &I-7
&J       SETA  &I+14
         AIF   (&I GE 1).OKI
&I       SETA  1
.OKI     AIF   (&J LE &INDEX).OKJ
&J       SETA  &INDEX
.OKJ     ANOP
&II      SETA  &I
&K       SETA  1
.LOOP2   ANOP
&K       SETA  &K+1
         AIF   (&K GT N'&SW).DONE1
.LOOP3   AIF   ('&SW(&K)' EQ '&SWNAME(&I)').MATCH1
&I       SETA  &I+1
         AIF   (&I LE &J).LOOP3
         AGO   .ERR2
.MATCH1  AIF   ('&DEF' NE '&DEFNAME(&I)').ERR2
&P(&K)   SETC  '+'
&I       SETA  &II
         AGO   .LOOP2
.DONE1   AIF   ('&OP' NE 'ON').TRYOFF
&NAME    OI    &DEF,&SW(1)&P(2)&SW(2)&P(3)&SW(3)&P(4)&SW(4)&P(5)&SW(5)&X
               P(6)&SW(6)&P(7)&SW(7)&P(8)&SW(8)
         AGO   .EXIT
.TRYOFF  AIF   ('&OP' NE 'OFF').TRYFLIP
&NAME    NI    &DEF,BITFF-(&SW(1)&P(2)&SW(2)&P(3)&SW(3)&P(4)&SW(4)&P(5)X
               &SW(5)&P(6)&SW(6)&P(7)&SW(7)&P(8)&SW(8))
         AGO   .EXIT
.TRYFLIP AIF   ('&OP' NE 'FLIP').ERR1
&NAME    XI    &DEF,&SW(1)&P(2)&SW(2)&P(3)&SW(3)&P(4)&SW(4)&P(5)&SW(5)&X
               P(6)&SW(6)&P(7)&SW(7)&P(8)&SW(8)
         AGO   .EXIT
.DBV1    AIF   (N'&SW NE 1).ERR1
         AIF   (K'&SW GT 7).ERR1
         AIF   (K'&OP EQ 0).DVB2
&NAME    MVI   V&SW,&OP
         AGO   .EXIT
.DVB2    ANOP
&NAME    MVI   V&SW,&SW
.EXIT    MEXIT
.ERR1    MNOTE 8,'PARAMETER ERROR.'
         MEXIT
.ERR2    MNOTE 8,'SWITCH NOT PREVIOUSLY DEFINED OR NOT IN SAME BYTE.'
         MEND
./ ADD NAME=SIOTTTR
*        %GOTO SIOTTBSL ; /*
         MACRO
         SIOTTTR
SIOTTTR  DSECT
***********************************************************************
*    THE SIOTTTR TABLE IS BUILT DURING ALLOCATION AT LOGON.  IT CON-
*    TAINS THE DISK ADDRESS OF THE STEP INPUT OUTPUT TABLE (SIOT)
*    ASSOCIATED WITH EACH INDIVIDUAL DD CARD IN THE TIOT.
***********************************************************************
STTRNEXT DS    CL3  TTR OF NEXT PART OF SIOTTTR TABLE OR 0 IF LAST REC
STTRID   DS    CL1    CONTROL BLOCK IDENTIFIER
STTRENT  DS    CL1   NUMBER OF TTRS IN THIS RECORD
STTR     DS    57CL3               ROOM FOR 57 TTRS
**/
         MEND
* %SIOTTBSL:  ;
* DECLARE
*   1  SIOTTTR BASED,
* /* *************************************************************** */
* /* THE SIOTTTR TABLE IS BUILT DURING ALLOCATION AT LOGON.  IT CON- */
* /* TAINS THE DISK ADDRESS OF THE STEP INPUT OUTPUT TABLE (SIOT)    */
* /* ASSOCIATED WITH EACH INDIVIDUAL DD CARD IN THE TIOT.            */
* /* *************************************************************** */
*    2 STTRNEXT CHAR(3),             /* TTR OF NEXT PART OF SIOTTTR
*                                       TABLE OR 0 IF LAST REC       */
*    2 STTRID   CHAR(1),             /* CONTROL BLOCK IDENTIFIER     */
*    2 STTRENT  CHAR(1),             /* NUMBER OF TTRS IN THIS
*                                       RECORD                       */
*    2 STTR (57) CHAR(3);            /* ROOM FOR 57 TTR'S        */
*
./ ADD NAME=SJFFM
         MACRO
&NAME    SJFFM &R,&LV=,&A=
.**********************************************************************
.*                                                                    *
.*  MODULE NAME = IEFSJFFM                                            *
.*                                                                    *
.*  DESCRIPTIVE NAME = SJF FREE LOCAL STORAGE                         *
.*                                                                    *
.*  COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,                    *
.*              LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,           *
.*              REFER TO COPYRIGHT INSTRUCTIONS FORM G120-2083.       *
.*                                                                    *
.*  STATUS = OS/VS2 JBB1328                                           *
.*                                                                    *
.*  FUNCTION = THIS MACRO IS USED IN THE PLACE OF FREEMAIN BY         *
.*             THE SCHEDULER JCL FACILITY (SJF) SERVICE ROUTINES,     *
.*             TO RELEASE THEIR LOCAL STORAGE FROM THE STORAGE        *
.*             AREA GETMAINED BY THE SJF CONTROL MODULE (IEFSJCNL).   *
.*                                                                    *
.*    OPERATION = THIS MACRO GENERATES CODE TO:                       *
.*                                                                    *
.*            1. CALCULATE THE ADDRESS OF THE NEXT AVAILABLE          *
.*               BYTE OF SJF STORAGE (FIELD SJCNNBYT IN THE           *
.*               SJF CONTROL WORKAREA, IEFSJCNW) BY SUBTRACTING       *
.*               THE SIZE OF STORAGE SPECIFIED IN REGISTER 0.         *
.*                                                                    *
.*            2. VALIDATE THAT THE AMOUNT OF STORAGE TO BE FREED  @H1A*
.*               WILL NOT GO BEYOND THE BEGINNING OF STORAGE.     @H1A*
.*               IF IT WILL, ISSUE AN ABEND WITH A CODE OF 054    @H1A*
.*               AND A REASON CODE OF 2 IN REGISTER 15.           @H1A*
.*                                                                @H1A*
.*            3. INCREASE THE AMOUNT OF SJF STORAGE REMAINING,    @H1C*
.*               (FIELD SJCNSIZE IN IEFSJCNW) BY ADDING THE           *
.*               SIZE OF STORAGE SPECIFIED IN REGISTER 0.             *
.*                                                                    *
.*  NOTES =                                                           *
.*                                                                    *
.*    DEPENDENCIES =                                                  *
.*                                                                    *
.*            1. THE SJF CONTROL MODULE (IEFSJCNL) MUST HAVE          *
.*               GETMAINED A STORAGE AREA FOR ALL OF SJF.             *
.*                                                                    *
.*            2. ALL SJF SERVICE ROUTINES MUST USE THE PL/S           *
.*               STACK OPTION IN CONJUNCTION WITH THE SJFGM AND       *
.*               SJFFM MACROS, OS(STACK('SJFGM','SJFFM')).            *
.*               PL/S WILL GENERATE CODE TO INVOKE SJFFM AS           *
.*               FOLLOWS:                                             *
.*                                                                    *
.*                           SJFFM R,LV=(0),A=(1)                     *
.*                                                                    *
.*            3. ON INPUT TO THE SJF SERVICE ROUTINE, REGISTER        *
.*               1 CONTAINS THE ADDRESS OF A 2 WORD PARAMETER         *
.*               LIST. THE FIRST WORD CONTAINS THE ADDRESS OF         *
.*               THE PARAMETER LIST NEEDED FOR THE PARTICULAR         *
.*               SJF SERVICE ROUTINE. THE SECOND WORD CONTAINS        *
.*               THE ADDRESS OF THE SJF CONTROL WORKAREA              *
.*               (IEFSJCNW). NOTE: THIS MACRO USES THE REGISTER 1     *
.*               THAT WAS SAVED IN THE SAVEAREA POINTED               *
.*               TO BY REGISTER 13.  THEREFORE, REGISTER 13           *
.*               MUST POINT TO THE SAVEAREA OF THE CALLER             *
.*               OF THE SJF SERVICE ROUTINE.                          *
.*                                                                    *
.*            4. THE SJF SERVICE ROUTINE WHICH INVOKES THIS MACRO     *
.*               MUST HAVE INCLUDED THE SJF WORKAREA MAPPING          *
.*               MACRO (IEFSJCNW).                                    *
.*                                                                    *
.*   CHARACTER CODE DEPENDENCIES = NONE                               *
.*                                                                    *
.*   RESTRICTIONS = NONE                                              *
.*                                                                    *
.*   REGISTER CONVENTIONS = THIS MACRO USES REGISTERS 0, 1,       @H1C*
.*                          14 AND 15.                            @H1C*
.*                                                                    *
.*   PATCH LABLE = N/A                                                *
.*                                                                    *
.*  MODULE TYPE = MACRO                                               *
.*                                                                    *
.*    PROCESSOR = ASSEM                                               *
.*                                                                    *
.*    MODULE SIZE = N/A                                               *
.*                                                                    *
.*    ATTRIBUTES = EXECUTABLE MACRO                                   *
.*                                                                    *
.*  ENTRY POINT = N/A                                                 *
.*                                                                    *
.*    ENTRY REGISTERS =                                               *
.*      REGISTER 0 = CONTAINS A SUBPOOL NUMBER IN THE HIGH            *
.*                   ORDER BYTE AND THE LENGTH OF STORAGE             *
.*                   TO BE FREED IN THE LOW ORDER 3 BYTES.            *
.*                                                                    *
.*      REGISTER 1 IN SAVEAREA =                                      *
.*                   CONTAINS THE ADDRESS OF A 2 WORD                 *
.*                   PARAMETER LIST. THE FIRST WORD CONTAINS          *
.*                   THE ADDRESS OF THE PARAMETER LIST NEEDED         *
.*                   FOR THE PARTICULAR SJF SERVICE ROUTINE,          *
.*                   AND THE SECOND WORD CONTAINS THE ADDRESS         *
.*                   OF THE SJF CONTROL WORKAREA (IEFSJCNW).          *
.*                                                                    *
.*      REGISTER 1 = ADDRESS OF THE STORAGE TO RELEASE                *
.*                                                                    *
.*      REGISTER 13 = ADDRESS OF A SAVEAREA                           *
.*                                                                    *
.*    INPUT =                                                         *
.*      SJF CONTROL WORKAREA (IEFSJCNW)                               *
.*        SJCNNBYT = ADDRESS OF NEXT AVAILABLE BYTE OF STORAGE        *
.*        SJCNSIZE = SIZE OF SJF STORAGE REMAINING                    *
.*        SJCNLSTO = ADDRESS OF THE BEGINNING OF ALLOCATABLE      @H1A*
.*                   STORAGE FOR SJF MODULES                      @H1A*
.*      ALSO SEE ENTRY REGISTERS                                      *
.*                                                                    *
.*    OUTPUT =                                                        *
.*      SJF CONTROL WORKAREA (IEFSJCNW)                               *
.*        SJCNNBYT = ADDRESS OF NEXT AVAILABLE BYTE OF SJF            *
.*                   STORAGE                                          *
.*        SJCNSIZE = SIZE OF SJF STORAGE REMAINING                    *
.*                                                                    *
.*  EXTERNAL REFERENCES = NONE                                        *
.*                                                                    *
.*    ROUTINES = NONE                                                 *
.*                                                                    *
.*    DATA AREAS = USES THE SJF CONTROL WORK AREA (IEFSJCNW).         *
.*                                                                    *
.*    CONTROL BLOCKS = N/A                                            *
.*                                                                    *
.*  TABLES = NONE                                                     *
.*                                                                    *
.*  MAPPING MACROS = NONE                                             *
.*                                                                    *
.*  MESSAGES = MNOTE 4, SJFFM PARAMETERS NOT VALID                    *
.*                                                                    *
.*  ABEND CODES = ABEND CODE HEX 054 (DEC 084) AND A REASON CODE  @H1A*
.*                OF 2 IN REGISTER 15 OCCURS WHEN AN ATTEMPT      @H1A*
.*                IS MADE TO FREE MORE STORAGE THAN IS AVAILABLE. @H1A*
.*  SERIALIZATION = NONE                                              *
.*                                                                    *
.*  CHANGE ACTIVITY = H0,H1                                       @H1C*
.*                                                                    *
.*  $H0 = EXTJCL JBB1328 810316 PD2N: SUPPORT OF EXTENDED JCL         *
.*  $H1 = EXTJCL JBB1328 811202 PDXX: SUPPORT OF EXTENDED JCL     @H1A*
.**********************************************************************
.* A 000000-999999                                                @H0A*
.* ADDED CODE TO ENSURE THAT THE STORAGE TO FREE IS WITHIN        @H1A*
.*       THE BEGINNING LIMIT OF SJF STORAGE.  IF IT IS NOT,       @H1A*
.*       AN ABEND IS ISSUED WITH A CODE OF 054 AND A REASON       @H1A*
.*       CODE OF 2 IN REGISTER 15.                                @H1A*
         AIF   ('&R' EQ 'R' AND '&LV' EQ'(0)' AND '&A' EQ '(1)').FMOK
         MNOTE 4, 'SJFFM PARAMETERS NOT VALID'
         AGO   .FMEND
.FMOK    SLA   @00,8(0)            SHIFT LEFT TO ELIMINATE SUBPOOL
         SRA   @00,8(0)            RE-POSITION LENGTH
         L     @15,24(@13)         GET CALLERS REG 1 FROM SAVEAREA
         L     @15,4(@15)          GET ADDRESS OF SJF CONTROL WORKAREA
         USING SJCNW,@15           ESTABLISH ADDRESSABILITY
         L     @01,SJCNNBYT        GET ADDRESS OF NEXT AVAILABLE BYTE
         SR    @01,@00             SUBTRACT THE LENGTH OF THIS REQUEST
         L     @14,SJCNLSTO        GET ADDRESS OF BEGINNING OF     @H1A
*                                  STORAGE                         @H1A
         CR    @01,@14             COMPARE ADDRESS OF NEXT BYTE    @H1A
*                                  OF STORAGE TO THE BEGINNING OF  @H1A
*                                  STORAGE                         @H1A
         BL    FM1&SYSNDX          BRANCH IF NEW NEXT BYTE IS NOT  @H1A
*                                  WITHIN THE BEGINNING LIMIT      @H1A
*                                  OF STORAGE                      @H1A
         ST    @01,SJCNNBYT        STORE NEW NEXT BYTE POINTER     @H1C
         L     @01,SJCNSIZE        GET SIZE OF STORAGE REMAINING
         AR    @01,@00             ADD LENGTH OF THIS REQUEST
         ST    @01,SJCNSIZE        STORE SIZE IN WORKAREA
         DROP  @15
         B     FM2&SYSNDX          BRANCH AROUND ABEND             @H1A
FM1&SYSNDX LA  @15,2               LOAD A REASON CODE OF 2         @H1A
*                                  IN REG 15                       @H1A
         ABEND 084,,,SYSTEM        ABEND WITH A CODE OF DEC 084    @H1A
*                                  (HEX 054)                       @H1A
FM2&SYSNDX DS  0F                  END OF SJFFM                    @H1A
.FMEND   MEND
./ ADD NAME=SJFGM
         MACRO
&NAME    SJFGM &R,&LV=
.**********************************************************************
.*                                                                    *
.*  MODULE NAME = IEFSJFGM                                            *
.*                                                                    *
.*  DESCRIPTIVE NAME = SJF GET LOCAL STORAGE                          *
.*                                                                    *
.*  COPYRIGHT = 5740-XYN COPYRIGHT IBM CORP. 1982,                    *
.*              LICENSED MATERIAL-PROGRAM, PROPERTY OF IBM,           *
.*              REFER TO COPYRIGHT INSTRUCTIONS FORM G120-2083.       *
.*                                                                    *
.*  STATUS = OS/VS2 JBB1328                                           *
.*                                                                    *
.*  FUNCTION = THIS MACRO IS USED IN THE PLACE OF GETMAIN BY          *
.*             THE SCHEDULER JCL FACILITY (SJF) SERVICE ROUTINES,     *
.*             TO OBTAIN THEIR LOCAL STORAGE OUT OF THE STORAGE       *
.*             GETMAINED BY THE SJF CONTROL MODULE (IEFSJCNL).        *
.*                                                                    *
.*    OPERATION = THIS MACRO GENERATES CODE TO:                       *
.*                                                                    *
.*            1. CHECK THE AMOUNT OF AVAILABLE STORAGE TO BE      @H1A*
.*               CERTAIN THERE IS ENOUGH STORAGE FOR THIS         @H1A*
.*               REQUEST. IF THERE IS NOT ENOUGH STORAGE ISSUES   @H1A*
.*               AN ABEND WITH A CODE OF 054 AND A REASON CODE    @H1A*
.*               OF 1 IN REGISTER 15.                             @H1A*
.*                                                                @H1A*
.*            2. LOAD THE ADDRESS OF THE NEXT AVAILABLE BYTE      @H1C*
.*               OF SJF STORAGE IN REGISTER 1.                        *
.*                                                                    *
.*            3. UPDATE THE ADDRESS OF THE NEXT AVAILABLE BYTE    @H1C*
.*               OF SJF STORAGE (FIELD SJCNNBYT IN THE SJF CONTROL    *
.*               WORKAREA, IEFSJCNW) BY ADDING THE SIZE OF            *
.*               STORAGE SPECIFIED IN REGISTER 0.                     *
.*                                                                    *
.*            4. DECREASE THE AMOUNT OF SJF STORAGE REMAINING     @H1C*
.*               (FIELD SJCNSIZE IN THE SJF CONTROL WORKAREA,         *
.*               IEFSJCNW), BY SUBTRACTING THE SIZE OF                *
.*               STORAGE SPECIFIED IN REGISTER 0.                     *
.*                                                                    *
.*  NOTES =                                                           *
.*                                                                    *
.*    DEPENDENCIES =                                                  *
.*                                                                    *
.*            1. THE SJF CONTROL MODULE (IEFSJCNL) MUST HAVE          *
.*               GETMAINED A STORAGE AREA FOR ALL OF SJF.             *
.*                                                                    *
.*            2. ALL SJF SERVICE ROUTINES MUST USE THE PL/S           *
.*               STACK OPTION IN CONJUNCTION WITH THE SJFGM AND       *
.*               SJFFM MACROS, OS(STACK('SJFGM','SJFFM')).  PL/S      *
.*               WILL GENERATE CODE TO INVOKE SJFGM AS FOLLOWS:       *
.*                                                                    *
.*                           SJFGM R,LV=(0)                           *
.*                                                                    *
.*               SJFGM WILL BE INVOKED AFTER THE CALLERS              *
.*               REGISTERS HAVE BEEN SAVED.                           *
.*                                                                    *
.*            3. ON INPUT TO THE SJF SERVICE ROUTINE, REGISTER        *
.*               1 CONTAINS THE ADDRESS OF A 2 WORD PARAMETER         *
.*               LIST. THE FIRST WORD CONTAINS THE ADDRESS OF         *
.*               THE PARAMETER LIST NEEDED FOR THE PARTICULAR         *
.*               SJF SERVICE ROUTINE. THE SECOND WORD CONTAINS        *
.*               THE ADDRESS OF THE SJF CONTROL WORKAREA              *
.*               (IEFSJCNW).                                          *
.*                                                                    *
.*            4. THE SJF SERVICE ROUTINE WHICH INVOKES THIS           *
.*               MACRO MUST HAVE INCLUDED THE SJF WORKAREA            *
.*               MAPPING MACRO (IEFSJCNW).                            *
.*                                                                    *
.*   CHARACTER CODE DEPENDENCIES = NONE                               *
.*                                                                    *
.*   RESTRICTIONS = NONE                                              *
.*                                                                    *
.*   REGISTER CONVENTIONS = THIS MACRO USES REGISTERS 14, 15,         *
.*                          0, AND 1.                                 *
.*                                                                    *
.*   PATCH LABEL = N/A                                                *
.*                                                                    *
.*  MODULE TYPE = MACRO                                               *
.*                                                                    *
.*    PROCESSOR = ASSEM                                               *
.*                                                                    *
.*    MODULE SIZE = N/A                                               *
.*                                                                    *
.*    ATTRIBUTES = EXECUTABLE MACRO                                   *
.*                                                                    *
.*  ENTRY POINT = N/A                                                 *
.*                                                                    *
.*    ENTRY REGISTERS =                                               *
.*      REGISTER 0 = CONTAINS A SUBPOOL NUMBER IN THE HIGH            *
.*                   ORDER BYTE AND THE LENGTH OF STORAGE             *
.*                   REQUESTED IN THE LOW ORDER 3 BYTES.              *
.*                                                                    *
.*      REGISTER 1 = (THIS MACRO USES THE REGISTER 1 WHICH IS         *
.*                   IN THE SAVEAREA POINTED TO BY REGISTER 13).      *
.*                   IT CONTAINS THE ADDRESS OF A 2 WORD              *
.*                   PARAMETER LIST. THE FIRST WORD CONTAINS          *
.*                   THE ADDRESS OF THE PARAMETER LIST NEEDED         *
.*                   FOR THE PARTICULAR SJF SERVICE ROUTINE,          *
.*                   AND THE SECOND WORD CONTAINS THE ADDRESS         *
.*                   OF THE SJF CONTROL WORKAREA (IEFSJCNW).          *
.*                                                                    *
.*      REGISTER 13 = ADDRESS OF A SAVEAREA                           *
.*                                                                    *
.*    INPUT =                                                         *
.*      SJF CONTROL WORKAREA (IEFSJCNW)                               *
.*        SJCNNBYT = ADDRESS OF NEXT AVAILABLE BYTE OF STORAGE        *
.*        SJCNSIZE = SIZE OF SJF STORAGE REMAINING                    *
.*      ALSO SEE ENTRY REGISTERS                                      *
.*                                                                    *
.*    OUTPUT =                                                        *
.*      SJF CONTROL WORKAREA (IEFSJCNW)                               *
.*        SJCNNBYT = ADDRESS OF NEXT AVAILABLE BYTE OF SJF STORAGE    *
.*        SJCNSIZE = SIZE OF SJF STORAGE REMAINING                    *
.*      REGISTER 1 CONTAINS THE ADDRESS OF THE STORAGE OBTAINED       *
.*                                                                    *
.*  EXTERNAL REFERENCES = NONE                                        *
.*                                                                    *
.*    ROUTINES = NONE                                                 *
.*                                                                    *
.*    DATA AREAS = USES THE SJF CONTROL WORK AREA (IEFSJCNW).         *
.*                                                                    *
.*    CONTROL BLOCKS = N/A                                            *
.*                                                                    *
.*  TABLES = NONE                                                     *
.*                                                                    *
.*  MAPPING MACROS = NONE                                             *
.*                                                                    *
.*  MESSAGES = MNOTE 4, SJFGM PARAMETERS NOT VALID                    *
.*                                                                    *
.*  ABEND CODES = ABEND CODE OF HEX 054(DEC 084) AND A REASON     @H1A*
.*                CODE OF 1 IN REGISTER 15 OCCURS WHEN THERE IS   @H1A*
.*                NOT ENOUGH STORAGE FOR THIS REQUEST.            @H1A*
.*                                                                    *
.*  SERIALIZATION = NONE                                              *
.*                                                                    *
.*  CHANGE ACTIVITY = H0,H1                                       @H1C*
.*                                                                    *
.*  $H0 = EXTJCL JBB1328 810316 PD2N: SUPPORT OF EXTENDED JCL         *
.*  $H1 = EXTJCL JBB1328 811202 PDXX: SUPPORT OF EXTENDED JCL     @H1A*
.**********************************************************************
.* A 000000-999999                                                @H0A*
.* ADDED CODE TO CHECK IF THERE'S ENOUGH STORAGE FOR THIS         @H1A*
.*       REQUEST.  IF THERE IS NOT THEN AN ABEND IS ISSUED WITH A @H1A*
.*       CODE OF 054 AND A REASON CODE OF 1 IN REGISTER 15.       @H1A*
         AIF   ('&R' EQ 'R' AND '&LV' EQ'(0)').GMOK
         MNOTE 4, 'SJFGM PARAMETERS NOT VALID'
         AGO   .GMEND
.GMOK    SLA   @00,8(0)           SHIFT LEFT TO ELIMINATE SUBPOOL
         SRA   @00,8(0)           RE-POSITION LENGTH
         L     @15,24(@13)        GET CALLERS REG 1 FROM SAVEAREA
         L     @15,4(@15)         GET ADDRESS OF SJF CONTROL WORKAREA
         USING SJCNW,@15          ESTABLISH ADDRESSIBILITY
         L     @14,SJCNSIZE       GET THE SIZE OF AVAILABLE        @H1A
*                                 STORAGE                          @H1A
         CR    @00,@14            COMPARE STORAGE NEEDED TO        @H1A
*                                 AVAILABLE STORAGE                @H1A
         BH    GM1&SYSNDX         BRANCH IF THERE IS NOT ENOUGH    @H1A
*                                 STORAGE                          @H1A
         L     @01,SJCNNBYT       GET ADDRESS OF NEXT AVAILABLE    @H1C
*                                 BYTE                             @H1C
         LR    @14,@01            SAVE IT FOR CALCULATIONS
         AR    @14,@00            ADD LENGTH OF THIS REQUEST
         ST    @14,SJCNNBYT       STORE NEXT AVAILABE BYTE OF STORAGE
         L     @14,SJCNSIZE       GET SIZE OF STORAGE REMAINING
         SR    @14,@00            SUBTRACT LENGTH OF THIS REQUEST
         ST    @14,SJCNSIZE       STORE SIZE REMAINING
         DROP  @15
         B     GM2&SYSNDX         BRANCH AROUND ABEND              @H1A
GM1&SYSNDX LA  @15,1              LOAD A REASON CODE OF 1          @H1A
*                                 INTO REGISTER 15                 @H1A
         ABEND 084,,,SYSTEM       ABEND WITH A CODE OF HEX 054     @H1A
*                                 (DEC 084)                        @H1A
GM2&SYSNDX DS  0F                 END OF SJFGM                     @H1A
.GMEND   MEND
./ ADD NAME=SMFADEXP
 @EJECT;
 /*****START OF SPECIFICATIONS ***************************************/
 /*                                                                  */
 /* MODULE-NAME = SMFADEXP                                   @ZA51560*/
 /*                                                                  */
 /* DESCRIPTIVE-NAME = ADD AN EXCP ENTRY TO TYPE 30 RECORD           */
 /*                                                                  */
 /* FUNCTION = ADD AN EXCP SECTION TO A TYPE 30 SMF RECORD           */
 /*                                                                  */
 /* OPERATION:                                                       */
 /*       THIS MODULE IS CALLED TO ADD AN EXCP ENTRY TO A            */
 /*       TYPE 30 RECORD. IT IS USED AT DYNAMIC ALLOCATION TIME      */
 /*       TO COPY ENTRIES FROM THE TCTTIOT. IT IS USED AT            */
 /*       JOB AND STEP TERMINATION TO COPY ENTRIES FROM THE          */
 /*       TCTIOT AND FROM ONE TYPE 30 RECORD TO ANOTHER.             */
 /*       FOR EXAMPLE, IT MOVES AN ENTRY FROM THE STEP TOTAL         */
 /*       RECORD TO THE JOB TOTAL RECORD                             */
 /*                                                                  */
 /*       THE INPUT RECORD IS SEARCHED TO FIND AN ENTRY              */
 /*       WHICH MATCHES THE INPUT EXCP ENTRY.                        */
 /*       IF THE ENTRY IS FOUND, THE EXCP COUNT IN THE               */
 /*          INPUT IS ADDED TO THE ENTRY IN THE RECORD.              */
 /*       IF THE ENTRY IS NOT FOUND, IT MUST BE ADDED TO             */
 /*          THE RECORD.                                             */
 /*          IF THE RECORD IS ALREADY 32K BYTES LONG,                */
 /*             A NEW RECORD IS OBTAINED AND CHAINED TO              */
 /*             THE OLD RECORD. THE ENTRY WILL BE ADDED TO           */
 /*             THE NEW RECORD.                                      */
 /*          IF THE RECORD IS LESS THAN 32K, A NEW AREA              */
 /*             IS OBTAINED WHICH IS 50% LARGER THAN THE             */
 /*             OLD RECORD UP TO A MAXIMUM OF 32K. THE               */
 /*             OLD RECORD IS COPIED TO THE NEW RECORD AREA,         */
 /*             AND THE OLD RECORD IS FREED.                         */
 /*          IF A RECORD AREA IS AVAILABLE, THE ENTRY IS             */
 /*             INSERTED INTO IT. THE LENGTH OF THE RECORD           */
 /*             AND THE NUMBER OF ENTRIES IS UPDATED.                */
 /*          IF THE RECORD AREA IS NOT AVAILABLE, WHICH WILL         */
 /*             HAPPEN IF NO SPACE IS AVAILABLE, A FLAG IS           */
 /*             SET IN THE TCT WHICH INDICATES THAT THE              */
 /*             EXCP COUNTS MAY BE WRONG.                            */
 /*                                                                  */
 /* NOTES = SEE BELOW                                                */
 /*                                                                  */
 /*   DEPENDENCIES = NONE                                            */
 /*                                                                  */
 /*   RESTRICTIONS = NONE                                            */
 /*                                                                  */
 /*   REGISTER-CONVENTIONS = NONE                                    */
 /*                                                                  */
 /*   PATCH-LABEL = SAME AS MAINLINE                                 */
 /*                                                                  */
 /* MODULE-TYPE = CODE                                               */
 /*                                                                  */
 /*   PROCESSOR = PL/S COMPILER, ASSEMBLER XF                        */
 /*                                                                  */
 /*   MODULE SIZE = SEE ASSEMBLER LISTING                            */
 /*                                                                  */
 /*   ATTRIBUTES = REENTRANT                                         */
 /*                                                                  */
 /* ENTRY-POINT = SMFADEXP                                           */
 /*                                                                  */
 /*   PURPOSE = SEE FUNCTION                                         */
 /*                                                                  */
 /*   LINKAGE = CALL SMFADEXP(PARM1,PARM2)                           */
 /*             PARM1 = EXCP ENTRY                                   */
 /*             PARM2 = ADDRESS OF TYPE 30 RECORD HEADER             */
 /*                                                                  */
 /* INPUT = EXCP ENTRY TO BE ADDED                                   */
 /*         ADDRESS OF RECORD TO ADD IT TO                           */
 /*                                                                  */
 /* OUTPUT = UPDATED RECORD                                          */
 /*          UPDATED RECORD ADDRESS IF NEW AREA WAS OBTAINED         */
 /*                                                                  */
 /* EXIT-NORMAL = RETURN TO CALLER                                   */
 /*               CONDITION: ENTRY ADDED TO RECORD                   */
 /*                                                                  */
 /* EXIT-ERROR = RETURN TO CALLER                                    */
 /*               CONDITION: NO SPACE IN RECORD FOR ENTRY AND        */
 /*                          NO MORE SPACE AVAILABLE. TCTIEX         */
 /*                          FLAG SET.                               */
 /*                                                                  */
 /* EXTERNAL REFERENCES =  SEE BELOW                                 */
 /*                                                                  */
 /*   ROUTINES = NONE                                                */
 /*                                                                  */
 /*   DATA-AREAS = NONE                                              */
 /*                                                                  */
 /*   CONTROL BLOCKS =  TCT                                          */
 /*                     TCB                                          */
 /*                                                                  */
 /*   TABLES = NONE                                                  */
 /*                                                                  */
 /* MACROS = GETMAIN, FREEMAIN                                       */
 /*                                                                  */
 /* CHANGE-ACTIVITY = SEE BELOW                                      */
 /*                                                                  */
 /* A000000  - 999999                                        @G742PJW*/
 /* C CLEAR CORRECT LENGTH OF RECORD                         @ZA40809*/
 /* C GET RECORD STORAGE FROM SP 230 NOT LSQA                @ZA44071*/
 /* C CHECK FOR NON-ZERO BLOCK SIZE BEFORE MOVING SMF30BSZ   @ZA51560*/
 /*                                                                  */
 /*** END OF SPECIFICATIONS*******************************************/
 @EJECT;
 SMFADEXP:PROC(EXCPNTRY,RECADDR);
 /********************************************************************/
 /*                                                                  */
 /*       VARIABLES AND PARAMETERS                                   */
 /*                                                                  */
 /********************************************************************/
 DCL 1 ADEXPSW,                    /* SWITCHES                       */
        2 FOUNDSW BIT(1),          /* EXCP ENTRY FOUND               */
        2 OKSW BIT(1),             /* STORAGE FOUND                  */
     RECADDR PTR(31);              /*                                */
 DCL EXCPNTRY CHAR(*),             /* EXCP ENTRY TO BE ADDED         */
     EXPTR PTR(31),                /* POINTER TO EXCP ENTRY          */
     RPTR  PTR(31),                /* POINTER TO TYPE 30 RECORD      */
     ROLDPTR PTR(31),              /* POINTER TO A PREVIOUS RECORD   */
     RVOLDPTR PTR(31),             /* PTR TO PREVIOUS PREVIOUS RCD   */
     RECPTR  PTR(31),              /* PLACE HOLDER PTR               */
     ADD30PTR PTR(31),             /* PTR TO SMF TYPE 30 RECORD      */
     TPTR    PTR(31),              /* POINTER TO INPUT EXCP ENTRY    */
     IADEXP FIXED(31),             /* LOOP COUNTER                   */
     N1 FIXED(31);                 /* COUNTER                         */
 @EJECT;
 /********************************************************************/
 /*                                                                  */
 /*   DETERMINE IF ENTRY IS ALREADY IN RECORD. IF SO, ADD THE        */
 /*   EXCP COUNTS.                                                   */
 /*                                                                  */
 /********************************************************************/
 RFY T30AREA BASED(RPTR);
 FOUNDSW = '0'B;
 RPTR = RECADDR;                   /* POINT TO HEADER PORTION        */
 ROLDPTR = RPTR;                   /* SAVE POINTER TO RECORD         */
 TPTR = ADDR(EXCPNTRY);            /*                                 */
 RFY SMFRCD30 BASED(ADD30PTR);      /*                      @G743PJW*/
 DO WHILE(RPTR ^= 0 & FOUNDSW = '0'B); /* GO THRU EACH RECORD        */
 ADD30PTR=RPTR + LENGTH(T30LDR); /* POINT TO RECORD PORTION         */
 EXPTR=ADD30PTR+SMF30EOF;          /* POINT TO FIRST EXCP ENTRY      */
 RFY SMF30EXP BASED(EXPTR);        /* POINT TO EXCP ENTRY IN RECORD   */
 N1=SMF30EON;                      /* GET NUMBER OF ENTRIES IN RECORD*/
 DO IADEXP=1 TO N1 WHILE (FOUNDSW='0'B); /* LOOK FOR EQUAL ENTRIES   */
   IF SMF30KEY=TPTR -> SMF30KEY THEN /* IF KEY IN RECORD = INPUT KEY */
     DO;                           /*                                */
       SMF30BLK = SMF30BLK +       /* ADD COUNTS                     */
                TPTR -> SMF30BLK;  /*                                 */
       IF TPTR -> SMF30BSZ ^= 0 THEN /* IF BLOCK SIZE IS NOT @ZA51560*/
         SMF30BSZ = TPTR -> SMF30BSZ;  /* ZERO THEN MOVE IT  @ZA51560*/
       FOUNDSW='1'B;               /* DROP OUT OF LOOP               */
     END;                          /*                                */
   EXPTR=EXPTR+ LENGTH(SMF30EXP);/* MOVE TO NEXT ENTRY               */
  END;                             /*                                */
 RVOLDPTR = ROLDPTR;               /* SAVE PTR TO PREVIOUS RECORD    */
 ROLDPTR = RPTR;                   /* SAVE POINTER TO CURRENT RECORD */
 RPTR = T30NXT;                    /* MOVE TO NEXT RECORD            */
 END;                              /* END OF RECORD LOOP;            */
 RPTR = ROLDPTR;                   /* MOVE BACK TO RECORD TO ADD TO  */
 ADD30PTR = RPTR + LENGTH(T30LDR); /* POINT TO RECORD AREA           */
 /********************************************************************/
 /*                                                                  */
 /*   ADD THE ENTRY TO THE RECORD IF IT WASNT THERE:                 */
 /*   IF THE NEW ENTRY WON'T FIT INTO THE RECORD,                    */
 /*       IF THE RECORD IS ALREADY 32K,                              */
 /*           GET A NEW AREA. CHAIN THE OLD RECORD TO THE NEW        */
 /*       OTHERWISE,                                                 */
 /*          -GET A NEW AREA 50% LARGER THAN THE OLD, UP TO 32K      */
 /*          -COPY THE OLD RECORD INTO THE NEW AREA                  */
 /*          -FREE THE OLD RECORD                                    */
 /*          -UPDATE THE INPUT PARAMETER RECADDR TO REFLECT THE NEW  */
 /*             RECORD ADDRESS. THIS VALUE IS PASSED BACK TO THE     */
 /*             CALLER                                               */
 /*   INSERT THE EXCP ENTRY INTO THE APPROPRIATE RECORD:             */
 /*      -MOVE THE ENTRY INTO THE RECORD AREA                        */
 /*      -UPDATE THE NUMBER OF ENTRIES, THE LENGTH OF THE            */
 /*          EXCP SECTION AND THE LENGTH OF THE RECORD.              */
 /*                                                                  */
 /********************************************************************/
 IF FOUNDSW='0'B THEN              /* IF NOT FOUND, MUST             */
   DO;                             /*  ADD ENTRY TO RECORD           */
     OKSW = '1'B;                  /* INDICATE SPACE AVAILABLE       */
     IF SMF30LEN+LENGTH(SMF30EXP)+LENGTH(T30LDR)  /* IF ADDING ENTRY
      WILL OVERFLOW RECORD                             @VS50066*/
              > T30LNG  THEN
       DO;                         /*                                */
         IF T30LNG+LENGTH(SMF30EXP) >= 32767 THEN /* IF NEW ENTRY
                  WONT FIT IN MAXIMUM SIZE RECORD @ZM50196*/
           DO;                     /*                                */
 /********************************************************************/
 /*                                                                  */
 /*     IF RECORD IS ALREADY AT MAXIMUM SIZE(32K), GET AN            */
 /*     ADDITIONAL RECORD AND CHAIN THE CURRENT RECORD TO NEW ONE    */
 /*     NOTE: SINCE THE STORAGE IS OBTAINED FROM SUBPOOL 230 @ZA44071*/
 /*           FOR THE RCT TCB, IT IS NECESSARY TO BRANCH     @ZA44071*/
 /*           ENTER GETMAIN, USING THE RCT TCB IN REG 4.     @ZA44071*/
 /*           THE LOCAL LOCK MUST BE HELD.                   @ZA44071*/
 /*                                                                  */
 /*                                                                  */
 /********************************************************************/
             SZ = 2048;            /* START WITH 2K RECORD            */
             RFY (R3,R4,R7) RSTD;
             R0 = SZ;
             R3 = SPL;
            R4 = PSAAOLD->ASCBASXB->ASXBFTCB; /* USE RCT TCB @ZA44071*/
             R7 = PSAAOLD;
             GEN REFS(CVTCRMN,CVTPTR,CVTMAP);
               GETMAIN RC,LV=(0),BRANCH=YES,SP=(3)  BRANCH ENTER
             @ENDGEN;
           %ADEXPSK1:;
             RFY (R3,R4,R7);
             IF R15 = 0 THEN        /* IF GETMAIN FOUND STORAGE     */
                DO;
                RFY (R2,R3,R4,R5) RSTD;
                R2 = R1 + LENGTH(T30LDR); /* POINT TO RECORD AREA */
                R3 = SZ-LENGTH(T30LDR);  /* LENGTH TO FILL @ZA40809*/
                R4 = ADD30PTR;           /* OLD RECORD AREA        */
                R5 = SMF30UOF;           /* LENGTH OF SOURCE       */
                MVCL(R2,R4);        /* COPY HEADER,ID, PRODUCT,AND SELF
                                      DEFINING SECTIONS TO NEW RECORD*/
                RFY (R2,R3,R4,R5) UNRSTD;
             T30NXT = R1;          /* POINT RECORD TO NEW ONE        */
             RPTR=T30NXT;      /* STEP TO NEW RECORD             */
             ROLDPTR = RPTR;   /* SAVE POINTER TO RECORD             */
             T30SPSZ = SPSZ;     /* INITIALIZE SUBPOOL AND SIZE     */
             T30NXT=0; /* CLEAR POINTER TO NEXT @VS501XX*/
             ADD30PTR = RPTR + LENGTH(T30LDR); /* POINT TO NEXT RCD*/
             SMF30EOR = 0;          /* INDICATE NO EXCP SECTIONS IN
                                         SUBSEQUENT RECORDS          */
             SMF30LEN=SMF30UOF;   /* SET INITIAL LENGTH              */
             SMF30EOF = SMF30UOF; /* EXCP SECTIONS COME FIRST        */
             SMF30EON = 0;         /* INDICATE NO SECTIONS TO START  */
             SMF30EOR = 0;          /* INDICATE NO EXCP SECTIONS IN
                                         SUBSEQUENT RECORDS          */
            SMF30UON=0; /* SHOW I/O ACTIVITY SECTION MISSING @ZM50196*/
            SMF30TON=0; /* SHOW COMPLETION SECTION MISSING @ZM50196*/
            SMF30CON=0; /* SHOW CPU ACCTG   SECTION MISSING @ZM50196*/
            SMF30AON=0; /* SHOW ACCOUNTING  SECTION MISSING @ZM50196*/
            SMF30RON=0; /* SHOW STORAGE     SECTION MISSING @ZM50196*/
            SMF30PON=0; /* SHOW PERFORMANCE SECTION MISSING @ZM50196*/
            SMF30OON=0; /* SHOW OPERATOR    SECTION MISSING @ZM50196*/
           END;                    /* END OF GETMAIN CHECK           */
            ELSE OKSW = '0'B;      /* INDICATE NO SPACE AVAILABLE    */
           END;                    /* END OF GET CHAIN RECORD        */
         ELSE                      /* GET BIGGER RECORD              */
           DO;                     /*                                */
 /********************************************************************/
 /*                                                                  */
 /*   IF WE NEED A NEW RECORD, BUT HAVENT HIT 32K YET,               */
 /*   GET A NEW RECORD 50%  BIGGER, UP TO 32K. COPY THE OLD RECORD   */
 /*   TO THE NEW AREA, AND FREE THE OLD RECORD.                      */
 /*   NOTE: SINCE THE STORAGE IS OBTAINED FROM SUBPOOL 230   @ZA44071*/
 /*         ATTACHED TO THE RCT TCB, IT IS NECESSARY TO      @ZA44071*/
 /*         BRANCH ENTER GETMAIN AND FREEMAIN, USING THE     @ZA44071*/
 /*         RCT TCB.                                         @ZA44071*/
 /*         THE LOCAL LOCK MUST BE HELD.                     @ZA44071*/
 /*                                                                  */
 /********************************************************************/
             SZ = T30LNG + T30LNG/2; /* NEXT RECORD SIZE- 50% BIGGER  */
             SZ=MIN(32767,SZ);      /* GET EXTRA 50%, UP TO 32K MAX*/
                                   /* GET NEW AREA                   */
              RFY (R3,R4,R7) RSTD; /* SET UP FOR   GETMAIN          */
              R0 = SZ;
              R3 = SPL;
            R4 = PSAAOLD->ASCBASXB->ASXBFTCB; /* USE RCT TCB @ZA44071*/
             R7 = PSAAOLD;
             GEN REFS(CVTCRMN,CVTPTR,CVTMAP);
               GETMAIN RC,LV=(0),BRANCH=YES,SP=(3)  BRANCH ENTER
             @ENDGEN;
              IF R15 = 0 THEN       /* IF GETMAIN FOUND STORAGE      */
                DO;
              RFY (R2,R5)    RSTD;  /* COPY OLD RECORD TO NEW        */
              R2 = R1;              /* DESTINATION ADDRESS           */
              R3 = SZ;              /* LENGTH OF NEW AREA,ZERO REST  */
              R4 = ROLDPTR;         /* SOURCE ADDRESS -OLD RECORD    */
              R5 = T30LNG;          /* LENGTH TO COPY                */
              MVCL(R2,R4);          /* COPY RECORD                   */
              RFY (R2,R3,R4,R5,R7);
             RPTR = R1;            /* ADDRESS NEW RECORD             */
             T30SPSZ=SPSZ;         /* FILL IN HEADER                 */
             T30NXT = 0;
                                   /* FREE OLD RECORD                */
              RFY (R3,R4,R7) RSTD;
              R0 = ROLDPTR->T30LNG;
              R3 = ROLDPTR->T30SP;
              R1 = ROLDPTR;
             R4 = PSAAOLD-> ASCBASXB->ASXBFTCB;
             R7 = PSAAOLD;
             GEN REFS(CVTCRMN,CVTPTR,CVTMAP);
              FREEMAIN RU,LV=(0),BRANCH=YES,SP=(3),A=(1)
             @ENDGEN;
           %ADEXPSK3:;
              RFY (R3,R4,R7) ;
              IF ROLDPTR =RECADDR THEN /* IF WE REPLACED INPUT RCD  */
              RECADDR = RPTR;      /* RETURN NEW RECORD ADDRESS      */
              ELSE                 /* IF WE REPLACED A CHAINED RCD   */
               RVOLDPTR->T30NXT=RPTR;  /* POINT IT TO NEW AREA       */
           END;                    /* END OF GOT BIGGER RECORD       */
          ELSE OKSW = '0'B;        /* INDICATE NO SPACE AVAILABLE    */
         END;                      /* END OF GETMAIN CHECK           */
       END;                        /* END OF OVERFLOW PROCESSING      */
       IF OKSW = '1'B THEN         /* IF AREA AVAILABLE              */
        DO;
         ADD30PTR = RPTR + LENGTH(T30LDR); /*GET ADDRESSABILITY TO   THE
                                     THE RECORD AREA                 */
         EXPTR = ADD30PTR + SMF30EOF +SMF30EON*SMF30ELN;/* POINT TO
                     FIRST      AVAILABLE ENTRY IN RECORD            */
         RFY SMF30EXP BASED(EXPTR);
         SMF30EXP = EXCPNTRY(1:LENGTH(SMF30EXP)); /* MOVE ENTRY INTO
                                      RECORD                          */
         SMF30LEN=SMF30LEN+LENGTH(SMF30EXP); /* INCREMENT RECORD SIZE*/
         SMF30EON=SMF30EON+1;        /* INCREMENT # OF ENTRIES       */
         IF RPTR ^= RECADDR THEN     /* IF WE ARE ADDING TO A CHAINED
                                        RECORD                       */
         DO;                           /*                            */
         RECPTR = RECADDR;             /*START AT HEAD OF CHAIN      */
         DO WHILE (RECPTR ^= RPTR);    /* WALK DOWN CHAIN            */
            (RECPTR + LENGTH(T30LDR))->SMF30EOR=
           (RECPTR + LENGTH(T30LDR))->SMF30EOR +1; /* UPDATE COUNT
                                     IN PREVIOUS RECORDS  @ZM50196*/
            RECPTR = RECPTR-> T30NXT;  /* MOVE TO NEXT RECORD        */
          END;                         /* END OF WALK LOOP           */
         END;                          /* END OF RECORD CHECK        */
        END;                         /* END OF AREA AVAIL CHECK      */
       ELSE                          /* IF NO SPACE AVAILABLE        */
         TCTIEX = '1'B;              /* SET EXCP COUNT WRONG FLAG    */
   END;                            /* END OF ADD ENTRY TO RECORD     */
   RFY SMFRCD30;                    /*                       @G743PJW*/
 END SMFADEXP;
./ ADD NAME=SMFASGN
*/********************************************************************/
*/*                                                                  */
*/*         PL/S VERSION OF THE SMFASGN MACRO                        */
*/*                                                                  */
*/* MACRO NAME = SMFASGN                                             */
*/*                                                                  */
*/* FUNCTION =                                                       */
*/* THE SMFASGN MACRO IS A PL/S II MACRO WHICH CAN BE USED TO SET,   */
*/* INCREASE, OR DECREASE SINGLE WORDS USING THE CS INSTRUCTION.     */
*/* THIS IS USEFUL FOR SETTING FIELDS WHICH ARE SUBJECT TO           */
*/* ASYNCHRONOUS UPDATE IN AN MP ENVIRONMENT.                        */
*/*                                                                  */
*/* THE FORMAT IS THE FOLLOWING:                                     */
*/*            ?SMFASGN  FIELD,SAVE,VALUE,FUNCTION;                  */
*/* WHERE                                                            */
*/*      FIELD = THE FIELD TO BE CHANGED.                            */
*/*                                                                  */
*/*      SAVE  = THE FIELD WHERE THE OLD VALUE IS TO BE SAVED.       */
*/*              IF SAVE=FIELD, NO SAVING IS DONE.                   */
*/*                                                                  */
*/*      VALUE = THE VALUE TO BE ASSIGNED TO 'FIELD', OR THE AMOUNT  */
*/*              'FIELD' IS TO BE INCREASED OR DECREASED.            */
*/*                                                                  */
*/*      FUNCTION = 'SET', 'INC', OR 'DEC', INDICATING WHETHER       */
*/*              'FIELD' IS TO BE SET TO 'VALUE', OR INCREASED OR    */
*/*              DECREASED BY 'VALUE'.  THE DEFAULT IS 'SET'.        */
*/*                                                                  */
*/* FOR EXAMPLE, TO CLEAR THE FIELD TCTFLD, AND SAVE THE OLD VALUE   */
*/* IN SMF30SVF, CODE THE FOLLOWING:                                 */
*/*            ?SMFASGN TCTFLD,SMF30SVF,0,SET;                       */
*/*                                                                  */
*/* TO INCREASE SMCANMFL BY 1, WITHOUT SAVING THE OLD VALUE, CODE    */
*/*            ?SMFASGN SMCANMFL,SMCANMFL,1,INC;                     */
*/*                                                                  */
*/* THE ACTION OF THE MACRO IS TO DO THE ASSIGNMENT UNTIL A NON-ZERO */
*/* RETURN CODE IS RECEIVED FROM THE CS INSTRUCTION.                 */
*/*                                                                  */
*/* NOTES = NONE                                                     */
*/*                                                                  */
*/* DEPENDENCIES = NONE                                              */
*/*                                                                  */
*/* CHANGE ACTIVITY =                                                */
*/*                                                                  */
*/********************************************************************/
 %SMFASGN: MACRO;
  DCL (SRC,SINK,VAL,FCN,IDENT) CHAR;
  SRC=MACLIST(1);
  SINK=MACLIST(2);
  VAL=MACLIST(3);
  FCN=MACLIST(4);
  IDENT=MACLABELMACNAMEMACLIST;
  ANS(COMMENT(IDENT)) SKIP;
  ANS(MACLABEL' DO;') SKIP;
  ANS('RFY (R2,R3) RSTD;') SKIP;
  ANS('R2 = 'SRC';') SKIP;
  ANS('LUP'MACINDEX':') SKIP;
  IF SINK ^= SRC THEN
     ANS(SINK' = R2;') SKIP;
  IF FCN = 'SET' THEN
     ANS('R3 = 'VAL';') SKIP;
     ELSE
     IF FCN = '' THEN
     ANS('R3 = 'VAL';') SKIP;
     ELSE
      IF FCN = 'INC' THEN
         ANS('R3 = R2 + 'VAL';') SKIP;
         ELSE
          IF FCN = 'DEC' THEN
             ANS('R3 = R2 - 'VAL';') SKIP;
             ELSE
              DO;
                IDENT = 'INVALID FUNCTION SPECIFIED: 'FCN ;
                ANS(COMMENT(IDENT)) SKIP;
                ANS('RFY (R2,R3) UNRSTD;');
                ANS ('END;') SKIP;
                RETURN CODE(8);
              END;
  ANS('CS(R2,R3,'SRC');') SKIP;
  ANS('BC(4,LUP'MACINDEX');') SKIP;
  ANS('END;') SKIP;
  ANS('RFY (R2,R3) UNRSTD;') SKIP;
 %END;
./ ADD NAME=SNDSCH
         MACRO
&NAME    SNDSCH  &GEN=MAXI
.*A-000000-999999                                              @X31X8I0
.*
.******************* MICROFICHE FLAGS *********************** SUPT CODE
.*C341000                                                        X02004
.*A573700                                                        Y01948
.*C556000,567423                                                 Y01948
.*D557000,558000,567432,567441                                   Y01948
.*A388000,573000                                                 S99228
.*A186000,217000,462600,488000                                   S22029
.*C001000-002000                                                 S22029
.*A355600,355700                                                 A42390
.*A400000,420000,426000,439000,446000,457000                     S21101
.*A507000,524000,528000,544000,566000                            S21101
.*C128000,442000,447000,458000,534000-537000                     S21101
.*D549000,606000-608000,614000                                   S21101
.*A114000,124000,403000,427050,427560,508400,535000,550000,      S22025
.*A558000,567126,567459                                          S22025
.*C128000,267000-268000,292000-293000,296000,534000,567000       S22025
.*D221000-225000,417000,427055,427085,427100-427300,427400-427700S22025
.*D439060-439240,439360-439840,505000,514000-515000,566180-566900S22025
.*D567000,567639,567657                                          S22025
.*A340450                                                         M2173
.*A220000                                                       SA56891
.*D177000-178000                                                SA56891
.*A565000,565200                                                SA52971
.*C567297-567324                                                SA52971
.*D545000,565400,567225,567477,567630-567648,569000             SA52971
.*A427020-427040,534000-534840                                  SA56606
.*D427420-427480,427560,427580-427800,534000-534500             SA56606
.*A561000                                                       SA60792
.*C567072,573200-573400                                         SA60792
.*C407500,409080,412000,443500,446000-446320                    SA61773
.*A409800,599800                                                SA58984
.*C015100-016000                                                SA58984
.*A461000,447200,524800                                         SA59034
.*C456000                                                       SA59034
.*D524100-524200                                                SA59034
.*C498000                                                       SA62953
.*A357000,357500                                                SA65412
.*A311050-311950                                                 Y05331
.*A427000,427400                                                OX02199
.*C389100,441600                                                SA65379
.*A389800                                                       SA65379
.*C357800-357900                                                SA68703
*A357500                                                       @ZA02054
*A183000                                                       @SA70324
*A248000,279000,573000                                         @SA71683
*A544600                                                       @SA72478
*D547300                                                       @SA72478
*C339200                                                       @YA08088
*A341660                                                       @YA08088
*C455000-461700                                                @ZA03063
.*A561400                                                       SA69635
.*A015000,017000,020000,024000,026000,065000,066000,101000       X03039
.*A146000,147000,189000,358600,362000,388000,392000,403000       X03039
.*A405600,409020,409080,409800,409930,416000,427020,427040,      X03039
.*A427540,428000,428070,434000,435000,437000,439000,442200,      X03039
.*A446500,469000,480000,483000,488500,492000,493000,507500,      X03039
.*A524800,526000,527000,528000,535500,536000,561000,561800,      X03039
.*A566000,567540,575000,599900,602000,605000,610000,613000       X03039
.*C004000,016500,088000,089000,090000,091000,431000,564000       X03039
.*D565000                                                        X03039
.*A427060,427090,427430,427520,                                  X03039
.*A000002                                                      @Z30X8IG
.*C002841,016500                                               @Z30X8IG
.*A080000,098000,101400,358715,474000,476000,599918            @Z30X8IR
.*A427170                                                      @Z30X8IM
.*A-365100,368300,384000                                       @X50X9IH
.*C-368300                                                     @X50X9IH
.*A358630,358680,358835,439095,439200                          @ZA03122
.*A413000                                                      @XA09773
.*A435100,435300                                               @X50X9II
.*D311280-311440,D312000                                       @YA11169
*D419000                                                       @OS76313
*C467000                                                       @OX11964
*C553000-555000                                                @OZ07113
*C553000-555000                                                @OY12395
*C405400                                                       @XA08073
*A156000,157000,160000,162200,C161600                          @OZ09912
*A256000                                                       @OY12421
*C467000,A469000                                               @OY12969
*A465000,C469200,A613000,A409930                               @OX13500
*A453000                                                       @OX12563
*D339400-339600,D353100-353200,A243000,A341400,C354200         @OS77835
*C341000,A610500                                               @OS77835
*C441600                                                       @OY14503
*D469100-469200                                                @OS77867
*C400000                                                       @OY14092
*C439720,439900                                                @OX17153
*A123000,567540                                                @OZ24185
*C567297                                                       @OZ24185
         SPACE 3
*A124000                                                       @OY19438
*A567288,567297                                                @OY19438
* DUMMY APAR                                                   @OZ27328
.**********************************************************************
         AIF   ('&GEN' EQ 'MAXI' OR '&GEN' EQ 'MINI' OR '&GEN' EQ 'NTSO-
               ' OR '&GEN' EQ 'VTAM').OK                         X03039
         MNOTE 12,'XXX IHB     -INVALID OPERAND.'
         MEXIT
.OK      ANOP
         TITLE '&NAME     SEND SCHEDULER'
&NAME    CSECT
.L1      ANOP
*                                                                     *
***********************************************************************
*                                                                     *
*TITLE --  SEND SCHEDULER MODULE                                      *
*                                                                     *
         AIF   ('&GEN' NE 'VTAM').TAG0                           X03039
*  MODULE NAME = IEDIAQ (VTAM)                                   X03039
         AGO   .TAG3                                             X03039
.TAG0    ANOP                                                    X03039
         AIF   ('&GEN' NE 'MINI').TAG1
*  MODULE NAME = IGG019Q6 (MINI)                                      *
         AGO   .TAG3
.TAG1    AIF   ('&GEN' NE 'NTSO').TAG2
*  MODULE NAME = IGG019Q7 (NTSO)                                      *
         AGO   .TAG3
.TAG2    ANOP
*  MODULE NAME = IGG019R4 (MAXI)                                      *
.TAG3    ANOP
*                                                                     *
*  DESCRIPTIVE NAME = SEND SCHEDULER                                  *
*                                                                     *
*  COPYRIGHT = 'NONE'                                                 *
*                                                                     *
*STATUS -- CHANGE LEVEL 8                                      @Z30X8IG
*                                                                     *
         AIF   ('&GEN' EQ 'VTAM').VFUNC                          X03039
*FUNCTION -- TO SCHEDULE A SENDING OPERATION AND TO FIND THE ADDRESS  *
*   OF THE DESTINATION LCB WHEN A MESSAGE IS POSTED TO A DESTINATION  *
*   QUEUE OR WHEN A DIAL QCB COMES OUT OF A TIME DELAY.               *
         AGO   .ENTPNT                                           X03039
.VFUNC   ANOP                                                    X03039
*FUNCTION -- TO SCHEDULE A SENDING OPERATION AND TO REQUEST A    X03039
*   LOGON IF NEEDED TO PERFORM THE SEND OPERATION.               X03039
.ENTPNT  ANOP                                                    X03039
*                                                                     *
*ENTRY POINTS --                                                      *
*   FIRST EXECUTABLE INSTRUCTION                                      *
*                                                                     *
         AIF   ('&GEN' EQ 'VTAM').VENTPT2                        X03039
*   'LCBSCAN'  WHEN CALLED BY DESTINATION ASSIGNMENT OR BY THE SEND   *
*   SCHEDULER (INITIATE MODE AND FOR A DIAL QCB).                     *
         AGO   .INPUT                                            X03039
.VENTPT2 ANOP                                                    X03039
*   'LCBSCAN' WHEN CALLED BY DESTINATION ASSIGNMENT, THE TIME    X03039
*   DELAY SUBTASK, OR THE SEND SCHEDULER ITSELF.                 X03039
.INPUT   ANOP                                                    X03039
*                                                                     *
*INPUT --                                                             *
*   WHEN ACTIVATED BY THE DISPATCHER -                                *
*   R1 POINTS TO BUFFER, LCB OR QCB                                   *
*   R11  DISPATCHER BASE                                              *
*   R13  ADDRESS OF AVTSAVE2                                          *
*   R15  ENTRY POINT ADDRESS                                          *
*   'LCBSCAN' -                                                       *
*   R7  ADDRESS OF QCB                                                *
*   R13  ADDRESS OF AVTSAVE2                                          *
*   R14  RETURN ADDRESS                                               *
*   R15  ADDRESS OF LCBSCAN                                           *
*                                                                     *
*OUTPUT --                                                            *
*   WHEN ACTIVATED BY THE DISPATCHER                                  *
*   R11  ADDRESS OF DISPATCHER                                        *
*   R13  ADDRESS OF AVTSAVE2                                          *
*                                                                     *
*   'LCBSCAN' -                                                       *
*   R13  ADDRESS OF AVTSAVE2                                          *
*   R14  RETURN ADDRESS                                               *
*                                                                     *
*EXITS-NORMAL --                                                      *
*   WHEN CALLED BY DISPATCHER                                         *
*   R13  ADDRESS OF AVTSAVE2                                          *
*   R11  DISPATCHER BASE                                              *
*   RETURN IS MADE ON R11 WITH AN OFFSET TO HAVE THE DISPATCHER       *
*   PERFORM THE DESIRED FUNCTION.                                     *
*                                                                     *
*   'LCBSCAN'                                                         *
*   R11  DISPATCHER BASE                                              *
*   R13  ADDRESS OF AVTSAVE2                                          *
*   R14  RETURN ADDRESS                                               *
*   BR  R14                                                           *
*                                                                     *
*EXTERNAL ROUTINES --                                                 *
*   'IEDQTNT' - TO CONVERT A TWO BYTE TNT OFFSET TO TERMINAL ENTRY    *
*   ADDRESS                                                           *
*                                                                     *
         AIF   ('&GEN' EQ 'VTAM').VEXTRTN                        X03039
*   'IOHALT' MACRO - TO HALT AN ENABLE OR PREPARE COMMAND IN          *
         AGO   .EXITS                                            X03039
.VEXTRTN ANOP                                                    X03039
*   'IEDQHG01' - TO PUT THE QCB ON THE TIME DELAY QUEUE WHEN     X03039
*   MSGLIMIT IS REACHED ON OUTPUT.                               X03039
*                                                                X03039
*   'IEDIAF2' - TO ISSUE A RESET CONDITIONAL.                    X03039
.EXITS   ANOP                                                    X03039
*                                                                     *
*EXITS-ERROR -- NONE                                                  *
*                                                                     *
*TABLES/WORK AREAS --VARIOUS CONTROL BLOCKS EXPANDED BY MACROS        *
*   TAVTD                                                             *
*   TCCWD                                                             *
*   DCBD                                                              *
*   TDEBD                                                             *
*   TLCBD                                                             *
*   TPRFD                                                             *
*   TQCBD                                                             *
*   TSCBD                                                             *
*   TSTCBD                                                            *
*   TTRMD                                                             *
*   TTSID                                                      @Z30X8IR
*                                                                     *
*ATTRIBUTES -- RE-USABLE, REFRESHABLE, ENABLED, PROBLEM PROGRAM MODE  *
*                                                                     *
*NOTES -- THE OPERATION OF THIS MODULE DOES NOT DEPEND UPON A         *
*   PARTICUALR INTERNAL REPRESENTATION OF THE EXTERNAL CHARACTER      *
*   SET.                                                              *
*                                                                     *
*   ROUTINES CALLING THE LCBSCAN ROUTINE EXPECT THE OFFSET TO    X03039
*   LCBSCAN ALWAYS TO BE THE FIRST TWO BYTES OF THE SEND         X03039
*   SCHEDULER.                                                   X03039
*                                                                     *
***********************************************************************
         EJECT
         DC    AL2(LCBSCAN-&NAME) .     USED BY OPEN TO
*                                         SET ADDRESS IN AVT
*                                 REGISTER EQUATES
         SPACE 1
         AIF   ('&GEN' NE 'VTAM').REG0                         @Z30X8IR
RSELECT  EQU   0                  IEDAYG ENTRY PNT INDEX REG   @Z30X8IR
.REG0    ANOP                                                  @Z30X8IR
R0       EQU   0                  FLAG REG
RTEMP    EQU   1                        WORK REGISTER
RWORK    EQU   2                        WORK REGISTER
         AIF   ('&GEN' NE 'VTAM').EQRSTCB                        X03039
RQCBP    EQU   2                        QCB PREFIX REGISTER      X03039
RSCB     EQU   3                        SCB REGISTER FOR LCBSCAN X03039
RRTN     EQU   3                  RETURN REG FOR IEDAYG        @Z30X8IR
.EQRSTCB ANOP                                                    X03039
RSTCB    EQU   3                  STCB BASE
RLCB     EQU   4                  LCB BASE
R5       EQU   5                        WORK REGISTER
R6       EQU   6                                                    TSO
RQCB     EQU   7                  QCB ADDR
RHOLD    EQU   8                  FIRST LCB SCANNED FOR AVAILABLE
RLAST    EQU   9                  COUNT OF LCB'S TO SCAN
RDCB     EQU   10                 DCB BASE
RSUPBASE EQU   11                 DISPATCHER BASE REG
RBASE    EQU   12                 SUBTASK BASE REG
R13      EQU   13                 SAVE AREA ADDR (AVTSAVE2)
R14      EQU   14                 RETURN ADDR REG
R15      EQU   15                 ENTRY BASE REG
CLEAR0F  EQU   X'0F'                                             S22025
         SPACE 1
         SPACE 2
         USING IEDQSTCB,RSTCB
         USING IEDQLCB,RLCB
         USING IEDQQCB,RQCB
         USING IHADCB,RDCB
         USING IEDQDISP,RSUPBASE
         USING AVTSAVE2,R13
         USING *,R15                    TEMPORARY USING          Y05330
         BAL   RBASE,ID                 BYPASS ID / SET BASE     Y05330
TAG      EQU   *                                               @OY19438
         USING *,RBASE                  SET NEW USING            Y05330
         DROP  R15                                               Y05330
         SPACE 1                                                 Y05330
&NAME    IEDHJN
ID       DS    0H                                                Y05330
         LA    RSTCB,IEDQSTCB     ZERO HI-ORDER BYTE
         LA    RQCB,QCBSTVTO-IEDQQCB GET QCB'S STCB OFFSET
         LCR   RQCB,RQCB          SET NEGATIVE
         AR    RQCB,RSTCB         BACK UP TO QCB BASE
         SPACE 2
*** ANALYZE THE PASSED ELEMENT.  IT MIGHT BE:
*        1. BUFFER (+8 IS A 'TIC' COMMAND CODE)
*             IF END OF MESSAGE, SEARCH FOR AN AVAILABLE LINE ON SHICH
*             TO SEND.
*        2. LCB (+8 IS THE RECEIVE SCHEDULER'S STCBVTO)
*             LOOK FOR THE MESSAGE TO SEND, AND TELL DISK ROUTINES TO
*             START READING MESSAGE.
         AIF   ('&GEN' EQ 'MINI').L5
*        3. QCB (+8 IS THE SEND SCHEDULER'S STCBVTO)
*             SEND TIME DELAY HAS JUST EXPIRED.  LOOK FOR AN AVAILABLE
*             LINE ON WHICH TO CONTACT THE DIAL TERMINAL.
         SPACE 1
         AIF   ('&GEN' EQ 'VTAM').VTAMVTO                        X03039
         CLI   PRFTIC-IEDQPRF(RTEMP),DSPSNDSC IS THIS A QCB?        TSO
         AGO   .QCBBR                                            X03039
.VTAMVTO ANOP                                                    X03039
         CLI   PRFTIC-IEDQPRF(RTEMP),DSPVSSCH IS THIS A QCB      X03039
.QCBBR   ANOP                                                    X03039
         BE    QCBTSO                   BRANCH IF IT IS A QCB       TSO
.L5      ANOP
         CLI   LCBPRI-IEDQLCB(RTEMP),PRILNFRE  LCB
         BE    SENDSCH                  YES
         L     RLCB,PRFLCB-1-IEDQPRF(,RTEMP) LCB ADDRESS
         TM    LCBSTAT1,LCBINITN        INITIATE MODE
         BZ    EXIT                     NO
         LA    R15,LCBSCAN              ADDRESSABILITY
         ST    RQCB,AVTDOUBL            SAVE QCB ADDRES
         AIF   ('&GEN' EQ 'VTAM').STCBTSO
         L     R6,QCBSLINK-1                                   @OZ09912
         LR    R5,RTEMP                 SAVE VALUE             @OZ09912
         AGO   .STCB2                                          @OZ09912
.STCBTSO ANOP                                                  @OZ09912
         ST    RTEMP,AVTDOUBL+4         SAVE BUFFER ADDRESS    @AS09778
.STCB2   ANOP                                                  @OZ09912
         BALR  R14,R15                  LINK TO FIND LCB
         L     RQCB,AVTDOUBL            SET  QCB ADDRES
         AIF   ('&GEN' EQ 'VTAM').STCB3                        @OZ09912
         LR    RTEMP,R5                 RESTORE VALUE          @OZ09912
         LR    RSTCB,R6                 RESTORE VALUE          @OZ09912
         AGO   .STCB4                                          @OZ09912
.STCB3   ANOP                                                  @OZ09912
         L     RTEMP,AVTDOUBL+4         RESTORE BUFFER ADDR    @AS09778
         L     RSTCB,QCBSTCHN-1         1ST STCB ON DEST QCB   @AS09778
         CLI   0(RSTCB),DSPMCPL6        IS IT IEDQHM'S STCB    @AS09778
         BNH   FOUNDHM                  BRANCH IF YES          @OZ09912
         L     RSTCB,QCBSLINK-1         NO, GET HM'S STCB      @AS09778
*                                       FROM STCB LINK FIELD   @AS09778
FOUNDHM  EQU   *                                               @AS09778
.STCB4   ANOP                                                  @OZ09912
         B     DSPBYPAS                 DISPATCH NEXT SSTCB
         AIF   ('&GEN' EQ 'MINI').L7
QCBTSO   LA    R15,LCBSCAN              ESTABLISH ADDRESSABILITY    TSO
         LA    R14,DSPDISP              SET EXIT FROM SUBROUTINE
        AIF   ('&GEN' EQ 'NTSO').L6
         TM    QCBFLAG,QCBTSSES         IS THIS FOR TIME SHARING?   TSO
         BZ    SETEXIT                  BRANCH IF NO
         NI    QCBTSOF2,X'FF'-QCBPOSTO  TURN OFF QCB POSTED BIT     TSO
         B     TSO1                                                 TSO
.L6      ANOP
         SPACE 1
*** A QCB QPOST'ED TO ITSELF IS ASSUMED
         SPACE 1
SETEXIT  EQU   *
         EJECT
.L7      ANOP
         USING *,R15
LCBSCAN  EQU   *
         LA    RQCB,0(,RQCB)            LCRER HI ORDER BYTE FOR COM
         TM    QCBDSFLG,QCBHELD         REUS USING QCB ?       @SA70324
         BOR   R14                      YES, EXIT              @SA70324
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'NTSO').L8
         TM    QCBDSFLG,QCBDISK+QCBCORE TIME-SHARING QUEUES?        TSO
         BCR   8,R14                    YES. RETURN TO CPB INIT     TSO
         TM    QCBFLAG,QCBTSSES .      QCB IN TSO SESSION        S22029
         BCR   7,R14 .                 YES RETURN TO CPB INIT    S22029
         SPACE
TSO1     EQU   *                                                    TSO
.L8      ANOP
         AIF   ('&GEN' EQ 'VTAM').VSCAN                          X03039
         L     RDCB,QCBDCBAD-1    GET DCB ADDR
         TM    DCBOFLGS,OPEN      IS DCB OPEN
         BCR   8,R14                    NO EXIT
RETRY    EQU   *
         L     RTEMP,DCBDEBAD     GET DEB ADDR
         USING DEBNMSUB,RTEMP
         TM    DEBOPATB,OUTPUT          OPENED FOR OUTPUT
         BCR   8,R14                    NO, RETURN
         DROP  RTEMP
         SR    RLAST,RLAST        ZERO COUNT REG
         IC    RLAST,X'10'(,RTEMP)      DEB NUMBER OF EXTENTS
         SR    RTEMP,RTEMP        ZERO ODD REG
         IC    RTEMP,QCBRELLN     GET QCB'S STARTING RLN
         LR    RLCB,RTEMP               COPY RLN FOR NEXT TEST
         BCTR  RLCB,R0                  RLN MINUS 1
         SR    RLAST,RLCB               GET COUNT OF LCB'S TO SCAN
         BCR   13,R14                   NO, EXIT
         SR    RWORK,RWORK        ZERO SIZE REG
         IC    RWORK,DCBEIOBX     GET LCB SIZE
         MR    RTEMP-1,RWORK      GET STARTING LCB OFFSET
         AL    RTEMP,DCBIOBAD           POINT TO IOB OF LCB
         SH    RTEMP,LCBSIZE            ADJUST TO START OF LCB
         LR    RLCB,RTEMP               LCB BASE
         AIF   ('&GEN' EQ 'MINI').LNODL
         SR    RHOLD,RHOLD              CLEAR WORK REGISTER
        AIF   ('&GEN' EQ 'NTSO').L9
         TM    QCBDSFLG,QCBDISK+QCBCORE TIME-SHARING QUEUES?        TSO
         BZ    NONDIAL                  YES. TREAT AS IF LEASED     TSO
         TM    QCBFLAG,QCBTSSES .      QCB IN TSO SESSION        S22029
         BO    NONDIAL .               YES TREAT AS LEASED       S22029
.L9      ANOP
         TM    LCBSTAT2,LCBDIAL   ARE THESE DIAL LINES
         BZ    NONDIAL            NO, THIS IS THE LINE
         CLI   QCBSTPRI,CALLOPT         CLOCK OR INTERVAL       SA56891
         BL    DIALLOOP                 BRANCH IF NOT           SA56891
         OI    QCBSTAT,QCBSCHDL         FORCE RECEIVE OPERATION SA56891
*                                         PRIOR TO SENDING      SA56891
DIALLOOP EQU   *
         TM    LCBTSTSW,CONNECT         LCB CONNECTED
         BZ    NOTCONNT                  NOT CONNECTED
         SPACE
         LH    RTEMP,LCBTTCIN           CURRENTLY CONNECTED
         LTR   RTEMP,RTEMP              ORIGIN SPECIFIED
         BZ    TRYNEXT                  NO
         STM   14,15,AVTSAVE3           SAVE REGISTERS
         SPACE
         L     R15,AVTRNMPT             CONVERT ROUTINE
         BALR  R14,R15                  GET TERMINAL CADDRESS
         LM    14,15,AVTSAVE3            SET REGISTERS
         L     RTEMP,TRMDESTQ-1-IEDQTRM(,RTEMP) QCB ADDRESS
         LA    RTEMP,0(,RTEMP)          CLEAR HI ORDER BYTE FOR CR
         CR    RTEMP,RQCB               ARE WE CONNECTED TO THIS
         BNE   TRYNEXT                  NO CONNECTION
         SPACE
         NI    QCBSTAT,AVTEFF-QCBSCHDL  TNT WOURCE SET
         AIF   ('&GEN' EQ 'NTSO').L9A                          @OS77835
         TM    QCBFLAG,QCBNOBRK         CAN TERMINAL BE BROKEN @OS77835
         BO    LEAVE                    NO,EXIT                @OS77835
         TM    LCBTSOB,LCB2741N         2741?                  @OS77835
         BO    NONDIAL                  YES,TREAT AS LEASED    @OS77835
.L9A     ANOP                                                  @OS77835
         B     LEAVE                    EXIT
         SPACE
NOTCONNT EQU   *
         CLI   QCBSTPRI,CALLPRI         CALL=NONE SPECIFIED
         BE    TRYNEXT                  BRANCH YES
         TM    LCBSTCBA+TWO,CLOSEDWN    LINE STOPPED BY        @SA71683
*                                        CLOSEDOWN ?           @SA71683
         BO    TRYNEXT                  BR IF YES              @SA71683
         LTR   RHOLD,RHOLD              PREVIOUS LCB SELECTED
         BNZ   TRYNEXT                  YES,ALREADY HAVE AVAILABEL
         LR    RHOLD,RLCB               SAVE FOUND LCB
TRYNEXT  EQU   *
         AR    RLCB,RWORK               ADDRESS OF NEXT LCB
         BCT   RLAST,DIALLOOP           LOOK AT NEXT LCB
         LTR   RLCB,RHOLD               WAS AVAILABLE LINE FOUND
         BZ    CALLQ                    BRANCH NO
         LA    RTEMP,DSPDISP            GET DISPATCHER EXIT    @OY12421
         CR    RTEMP,R14                WAS THIS A QCB ENTRY   @OY12421
         BE    NOHOLD                   BRANCH-YES DO DIAL UP  @OY12421
         TM    QCBSTAT,QCBTRMHO         IS TERMINAL HELD       @OY12421
         BO    CALLQ                    BRANCH YES             @OY12421
NOHOLD   EQU   *                                               @OY12421
         TS    LCBTSTSW                 LINE STILL AVAILABLE
         BNZ   RETRY                    LOOP AGAIN ON LINE GROUP
         OI    LCBSTAT2,LCBNEGRP        SET NEGATIVE RESPONSE IN
*                                         CASE TERMINAL IS HELD
*                                         IF NOT SET, AN ERRONEOUS
*                                         'CONNECTION' APPEARS TO
*                                         RCV SCHED AND ACTIVATE
         NI    LCBTPCD+11,AVTEFF-DISDLEOT DONT SEND DLE EOTSINCE WE
*                                         ARE NOT DISCONNECTING
*                                         A CALL
         TM    LCBSTAT1,LCBFREEN .      LCB FREE
         BZ    HALTLINE .               BRANCH IF NO TO HIO      S22025
         B     POSTLCB                  GET LCB
         SPACE
CALLQ    EQU   *
         L     RSTCB,DCBIOBAD           1ST IOB
         AR    RSTCB,RWORK              POINT TO 1ST IOB
         SH    RSTCB,DOCQAD             BACK UP TO CALL Q
         B     DSPUNAVR                 USE UNAVAIL AND RETURN
*                                         TO CALLER
         SPACE
NONDIAL  EQU   *
.LNODL   ANOP
         TM    LCBSTCBA+TWO,CLOSEDWN    LINE STOPPED BY        @SA71683
*                                        CLOSEDOWN?            @SA71683
         BOR   R14                      BR IF YES              @SA71683
         CLI   LCBRSPRI,SENDPRI         LINE HAVE SEND PRIORITY
         BH    OBTAIN             NO, GO GET THE LINE
         OI    LCBSTAT2,LCBSNDPR  SET SEND SCHEDULER WANTS LINE
OBTAIN   EQU   *
         AIF   ('&GEN' EQ 'NTSO' OR '&GEN' EQ 'MINI').L10
         TM    QCBFLAG,QCBTSSES         IS THIS TIME SHARING?       TSO
         BZ    TSO2                     BRANCH ON NO                TSO
         L     R6,AVTTSOPT              ADDRESS OF TSINPUT QCB      TSO
         L     R6,TSISCHED-IEDQTSI(,R6) ADDRESS OF TS SCHEDULER     TSO
         BAL   RSTCB,8(,R6)             BRANCH TO ROUTINE           TSO
TSO2     EQU   *                                                    TSO
.L10     ANOP
         TM    LCBSTAT1,LCBFREEN .      IS LINE FREE             S22025
         BZ    TESTPOLL .               NO, GO LOOK FOR NON-REGULS22025
*                                       AR INTERUPTING TERMINALS S22025
*                                      INTERRUPTING TERMINALS
POSTLCB  EQU   *
         XI    LCBSTAT1,LCBSENDN+LCBFREEN . CHANGE LCB STATE TO  S22025
*                                         A MULTIPE POST OF LCB
         MVI   LCBPRI,PRILNFRE          POST PRIORITY
         ST    14,AVTSAVE3+4            SAVE REGISTER
         ST    RQCB,AVTSAVE3            SAVE REGISTER
         ST    RLCB,LCBQCBA-1           LCB IS QCB
         LR    1,RLCB                   PARAMETER FOR POST
         BAL   R14,DSPPOSTR             PUT LCB ON READY Q
         L     RQCB,AVTSAVE3            SET  REGISTER
         L     14,AVTSAVE3+4            SET  REGISTER
         B     LEAVE                    EXIT
         SPACE
TESTPOLL EQU   *
         CLI   LCBCPA+24,POLL           LINE IN AUTOPOLL
         BNE   BASIC                    BRANCH NO
         SPACE
         ST    RLCB,AVTSAVE2            LCB POINTER              Y05331
         L     RWORK,AVTSAVTP           POINTER TO SECONDARY AVT Y05331
         USING IEDNSVTD,RWORK                                    Y05331
         TM    SAVTDIAF,SAVTVIRT        IN VM ENVIRONMENT?       Y05331
         BNO   NOVIRT                   NO, BRANCH               Y05331
         STM   R14,R15,AVTSAVE2+24      SAVE REGISTERS 14 AND 15 Y05331
         LA    R0,LCBCPA+56             TIC ADDRESS              Y05331
         L     R15,SAVTDIAG             VIRTUAL DIAGNOSE ROUTINE Y05331
         DROP  RWORK                                             Y05331
         MVI   LCBCPA+56,CCWNOP         NOP 2ND VIRTUAL TIC      Y05331
         BAL   R14,4(,R15)              NOP CORRESPONDING REAL   Y05331
*                                         TIC                    Y05331
         LM    R14,R15,AVTSAVE2+24      RESTORE REGISTERS 14,15  Y05331
         B     LEAVE                    EXIT                     Y05331
         SPACE
NOVIRT   EQU   *                                                 Y05331
         MVI   LCBCPA+56,CCWNOP         NOP 2ND TIC
         B     LEAVE                    EXIT
         SPACE
BASIC    EQU   *
         TM    LCBSTAT2,LCBSYNC         BSC LINE
         BZ    NOTBSC                   BRANCH NO
         SPACE
         CLI   LCBCPA+16,CCWPREP        RECEIVE STATE
         BNE   LEAVE                    NO
         TS    LCBTSTSW                 LINE FREE
         BNZ   LEAVE                    BRANCH BUSY
         B     HALTLINE                 ISSUE HALT IO
NOTBSC   EQU   *
         CLI   LCBCPA+24,CCWSENSE       SENSE COMMAND
         BE    CHKSENSE                 YES, SEE IF NIO REQUIRED
         CLI   LCBCPA+32,CCWSENSE       START STOP CONTENTION
*                                         MAY BE REQUIRED)
         AIF   ('&GEN' EQ 'MAXI').L11A
         BNE   LEAVE .                  BRANCH IF NOT A BASIC
*
         AGO   .L11B
.L11A    ANOP
         BNE   CKTSO .                  BRANCH IF NOT A BASIC
.L11B    ANOP
CHKSENSE EQU   *
         TM    LCBCSWSV,AVTEFF          SENSE BEEN EXECUTED
         AIF   ('&GEN' NE 'MAXI').L11
         BNO   CKTSO                    BRANCH IF SENSE DONE   @YA08088
         TM    QCBFLAG,QCBTSSES         TSO OPERATION          @YA08088
         BO    HALTLINE                 IF SO, ISSUE HIO       @YA08088
         TM    LCBTSOB,LCB2741N         IS THIS A 2741         @YA08088
         BNO   HALTLINE                 IF NOT,ISSUE HIO       @YA08088
CKTSO    EQU   *
         TM    LCBSTAT1,LCBRECVN .      IS LINE RECEIVING           TSO
         BZ    LEAVE .                  BRANCH IF NO                TSO
         TM    LCBSTAT2,LCBMSGNN .      MSGEN IN PROGRESS           TSO
         BO    LEAVE .                  BRANCH IF YES
         SPACE
         TM    QCBFLAG,QCBNOBRK         CAN TERMINAL BE BROKEN?    2741
         BO    LEAVE                    BRANCH ON NO               2741
         L     RWORK,LCBLSPCI-1         GET ADDRESS OF FIRST BUFFER2741
         LA    RWORK,0(,RWORK) .        TEST ADDRESS ONLY         M2173
         LTR   RWORK,RWORK .            TEST FOR ADDRESS          M2173
         BZ    LEAVE .                  IF NO BFR, CAN NOT BREAK  M2173
         TM    PRFSTAT1-IEDQPRF(RWORK),PRFNHDRN IS IT FIRST BUFFER?2741
         BO    LEAVE                    BRANCH ON NO               2741
         L     RTEMP,PRFIOADR-1-IEDQPRF(,RWORK) GET DATA ADDR  @OS77835
         N     RTEMP,CLRHI              GET OFFSET IN PAGE     @OS77835
         N     RWORK,CLRLOW             GET ADDR OF PAGE       @OS77835
         AR    RWORK,RTEMP              GET DATA ADDRESS       @OS77835
         CLI   1(RWORK),0               HAS USER ENTERED ANY DATA? 2741
         BNE   LEAVE
         TM    QCBFLAG,QCBTSSES         TSO IN CONTROL?        @OS77835
         BO    HALTLINE                 YES,CONTINUE           @OS77835
         TM    LCBTSOB,LCB2741N         2741?                  @OS77835
         BZ    LEAVE                    NO,EXIT                @OS77835
         AGO   .L11C
.L11     ANOP
         BNO   LEAVE
         TM    LCBTSOB,LCB2741N         IS THIS A 2741         @YA08088
         BO    LEAVE                    IF SO, DO NOT HIO      @YA08088
.L11C    ANOP
HALTLINE EQU   *
         SR    RWORK,RWORK              CLEAR FOR INDEXING
         IC    RWORK,LCBUCBX            RLN MINUS 1
         SLL   RWORK,2                   MULTIPLY BY 4 FOR INDEX
         L     RTEMP,DCBDEBAD           DEB ADDRESS
         L     RTEMP,X'20'(RTEMP,RWORK) UCB ADDRESS
         LA    RTEMP,0(,RTEMP)          CLEAR HI ORDER BYTE
*                                         ENSURE POSTIVE POINTER
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'NTSO').L13
         TM    19(RTEMP),AVTEFF-AIBM1   CAN DEVICE BE A 1050 OR 2741TSO
         BNZ   ISSUESVC                 BRANCH ON NO                TSO
         CLI   16(RTEMP),T1050          IS IT A 1050                TSO
         BNE   TEST2741                 NO,BRANCH              @OS77835
         TM    QCBFLAG,QCBTSSES         TSO IN CONTROL?        @OS77835
         BO    SETBRK                   YES,BRANCH             @OS77835
TEST2741 EQU   *                                               @OS77835
         CLI   16(RTEMP),T2741C .       IS IT A 2741 CORRES         TSO
         BE    SETBRK .                 BRANCH IF YES               TSO
         CLI   16(RTEMP),T2741B .       IS IT A 2741 BCD            TSO
         BNE   ISSUESVC .               BRANCH IF NO                TSO
SETBRK   EQU   *                                                    TSO
         TM    QCBFLAG,QCBNOBRK .       CAN WRITE BREAK BE USED  A42390
         BO    ISSUESVC .               BRANCH NO                A42390
         OI    LCBTSOB,LCBWRBRK         SET SWITCH FOR LINE END 2741
.L13     ANOP
ISSUESVC EQU   *                                                   2741
         DROP  R15                                              SA65412
         LR    RSTCB,R15                COPY BASE ADDRESS       SA65412
         USING LCBSCAN,RSTCB                                    SA65412
*                                         PREVENT LOSS OF LINE IF
*                                         ERROR OCCURRED AND LCB IS
*                                         ON WAY TO ERP OR UNDER ERP
*                                         CONTROL
         MVI   LCBECBCC,HIOCC           SET HALT I/O COMPLETION  Y02027
         IOHALT (1)
         LTR   R15,R15                  RETURN CODE ZERO       @ZA02054
         BZ    HIODONE                  BR YES, HIO COMPLETE   @ZA02054
         SR    R15,R15                  CLEAR FOR COMPARE      @ZA02054
         CLM   R15,15,LCBCSW+THREE      CHANNEL PROGRAM STILL  @ZA02054
*                                       OUTSTANDING            @ZA02054
         LR    R15,RSTCB                COPY BASE REGISTER     @ZA02054
         BZ    HALTLINE                 BR YES, REISSUE IOHALT @ZA02054
HIODONE  EQU   *                                               @ZA02054
         LR    R15,RSTCB                BASE REGISTER           SA65412
         DROP  RSTCB                                            SA65412
         USING LCBSCAN,R15                                      SA65412
         USING IEDQSTCB,RSTCB                                   SA65412
         AGO   .NOTVTAM                                          X03039
.VSCAN   ANOP                                                    X03039
         L     RTEMP,AVTSAVTP           SECONDARY AVT ADDRESS    X03039
*                                                                X03039
         USING IEDNSVTD,RTEMP           ADDRESSABILITY FOR SAVT  X03039
         L     RDCB,SAVTACB             ACB ADDRESS              X03039
         DROP  RTEMP                                           @ZA03122
*                                       ACB OPEN                 X03039
         TM    ACBOFLGS-IFGACB(RDCB),ACBOPEN                     X03039
         BNOR  R14                      BR NO                    X03039
*                                                                X03039
         LA    RQCBP,QCBPRFSZ           QCB PREFIX SIZE          X03039
         LNR   RQCBP,RQCBP              MAKE NEGATIVE FOR BACKUP X03039
         AR    RQCBP,RQCB               BACK UP TO QCB PREFIX    X03039
*                                                                X03039
         USING IEDNQCB,RQCBP            ESTABLISH ADDRESSABILITY X03039
         TM    QCBSTAT1,QCBNIDLE        LINE STOPPED             X03039
         BZR   R14                      BR YES                   X03039
*                                                                X03039
         TM    QCBSTAT,QCBTRMHO         TERMINAL HELD            X03039
         BOR   R14                      BR YES                   X03039
*                                                                X03039
         TM    QCBSTAT1,QCBPLCBN        IS DEST LOGGED ON        X03039
         BZ    REQLOGON                 BRANCH NO                X03039
*                                                                X03039
         L     RLCB,QCBPLCBA-1          PLCB ADDRESS             X03039
         LR    RHOLD,R14                SAVE RETURN REGISTER   @ZA03122
         LH    RTEMP,LCBTTCIN           GET TNT OFFSET         @ZA03122
         N     RTEMP,AVTCLRHI           CLEAR HI ORDER BYTES   @ZA03122
         LR    R6,R15                   SAVE BASE REGISTER     @ZA03122
         L     R15,AVTRNMPT             ADDR OF TNT            @ZA03122
         BALR  R14,R15                  GET TERM ENTRY ADDR    @ZA03122
         LR    R14,RHOLD                RESTORE RETURN REGISTER@ZA03122
         LR    R15,R6                   RESTORE BASE REG       @ZA03122
         USING IEDNTRM,RTEMP            TERMINAL DSECT BASE    @ZA03122
         SH    RTEMP,AVTHA4             BACK UP TO TRM PREFIX  @ZA03122
         TM    TRMSTAT1,TRMSESSN        IS TERMINAL IN SESSION @ZA03122
         BZ    TMDELAY                  NO, PUT QCB ON TIME    @ZA03122
*                                         DELAY QUEUE          @ZA03122
         DROP  RTEMP                                           @ZA03122
         L     RTEMP,AVTSAVTP           SECONDARY AVT ADDR     @ZA03122
         USING IEDNSVTD,RTEMP           ADDRESSABILITY         @ZA03122
         EJECT
         TM    QCBFLAG,QCBTSSES         IS TSO IN SESSION      @Z30X8IR
         BZ    INPUT                    BRANCH ON NO           @Z30X8IR
         L     R6,AVTTSOPT              GET TSINPUT QCB ADDR   @Z30X8IR
         L     R6,TSIRNSCH-IEDQTSI(,R6) VTAM TSO SCHED ADDR    @Z30X8IR
         LA    RSELECT,THREE            INDEX TO IEDA1C ENTRY  @Z30X8IR
*                                         PT OF VTAM TSO SCHED @Z30X8IR
         BALR  RRTN,R6                  BRANCH TO VTAM TSO     @Z30X8IR
*                                         SCHED,IEDAYG         @Z30X8IR
INPUT    EQU   *                                               @Z30X8IR
         TM    LCBSTAT1,LCBFREEN        LINE FREE                X03039
         BO    PRIME                    BR YES                   X03039
*                                                                X03039
         L     RSCB,LCBSCBA-1           SCB ADDRESS              X03039
*                                       IN MIDDLE OF MESSAGE     X03039
         TM    SCBQTYPE-IEDQSCB(RSCB),SCBBFMM                    X03039
         BO    LEAVE                    BR YES                   X03039
*                                                                X03039
         TM    LCBSTAT4,LCBINPTP        INPUT PENDING?           X03039
         BO    PRIME                    BR YES                   X03039
*                                                                X03039
         TM    LCBSTAT3,LCBRDOUT        READ OUTSTANDING         X03039
         BZ    LEAVE                    BR NO                    X03039
*                                                                X03039
         TS    LCBTSTSW                 READ BACK INTO TPIO/FDBK X03039
         BNZ   LEAVE                    BR YES                   X03039
*                                                                X03039
         STM   R0,R15,AVTSAVE3          SAVE REGISTERS           X03039
*                                       ADDR LCCW GEN'R STCB VTO X03039
         L     R15,SAVTLCWQ+(QCBSTVTO-IEDQQCB)                   X03039
         L     R15,AVTEZERO(,R15)       RESET ENTRY POINT ADDR   X03039
         LA    R0,LXC                   PASS RESET CONDITIONAL   X03039
         SR    RTEMP,RTEMP              INDICATE NO DATA TO IAF2 X03039
         SR    R5,R5                    INDICATE - USE RESET LCPBX03039
         BALR  R14,R15                  GO ISSUE RESET COND'L    X03039
*                                                                X03039
         LTR   R15,R15                  RESET REQUEST ACCEPTED   X03039
         LM    R0,R15,AVTSAVE3          RESTORE REGISTERS        X03039
         BZ    LEAVE                    BR RESET REQUEST ACCEPTEDX03039
*                                                                X03039
         SPACE 1                                               @ZA03122
TMDELAY  EQU   *                                               @ZA03122
         TM    QCBTSOF1,QCBDELAY        IS QCB ALREADY ON T-D Q@ZA03122
         BOR   R14                      YES-BRANCH             @ZA03122
         MVC   QCBSTCHN,QCBSLINK        REMOVE SS FROM QCB       X03039
         LA    RTEMP,ONESECD            FORCE 1 SECOND DELAY     X03039
         STH   RTEMP,QCBEOLDT           SET DELAY TIME IN QCB    X03039
         MVI   QCBLKRLN,AVTEZERO        SET QCB INDICATOR        X03039
         LA    RTEMP,AVTDELYB           ADDR OF TIME DELAY QCB   X03039
         STCM  RTEMP,AD,QCBELCHN        SET TIME DELAY QCB ADDR  X03039
         MVI   QCBPRI,PRITIME           SET TIME DELAY PRIORITY  X03039
         LR    RTEMP,RQCB               PASS QCB AS ELEMENT      X03039
         B     DSPPOSTR                 POST QCB TO TIME DELAY   X03039
*                                       AND RETURN               X03039
PRIME    EQU   *                                                 X03039
         NI    LCBSTAT4,AVTEFF-LCBINPTP   RESET INPUT PENDING    X03039
*                                       MARK LINE SENDING        X03039
         XI    LCBSTAT1,LCBSENDN+LCBFREEN                        X03039
         ST    RQCB,AVTSAVE3            SAVE QCB REG             X03039
         ST    R14,AVTSAVE3+WORD2       SAVE RETURN REG          X03039
         STCM  RLCB,AD,LCBQCBA          POST LCB TO ITSELF       X03039
         MVI   LCBPRI,PRILNFRE          SET INITIAL POST PRIORITYX03039
         LR    RTEMP,RLCB               SET LCB AS POST ELEMENT  X03039
         BAL   R14,DSPPOSTR             POST LCB                 X03039
*                                                                X03039
         L     RQCB,AVTSAVE3            RESTORE QCB ADDRESS      X03039
         L     R14,AVTSAVE3+WORD2       RESTORE RETURN ADDRESS   X03039
*                                                                X03039
.NOTVTAM ANOP                                                    X03039
LEAVE    EQU   *
         LR    RSTCB,RLCB
         B     DSPUNAVR                 LINK STCB INTO CHAIN
*                                         AND RETURN TO CALLER
         AIF   ('&GEN' NE 'VTAM').EXIT                           X03039
*                                                                X03039
REQLOGON EQU   *                                                 X03039
         OI    QCBSTAT,QCBSEND          INDICATE THAT SEND     @XM10739
*                                       SCHED SHOULD BE PUT IN @XM10739
*                                       CHAIN WHEN PLCB IS     @XM10739
*                                       ASSIGNED               @XM10739
         NI    QCBSTAT,AVTEFF-QCBSCHDL  INIT SCHDL SWITCH      @XM10739
         BAL   R5,GETTERM               GET TERMINAL ENTRY     @XM10739
         TM    TRMSTAT0-IEDNTRM(RTEMP),TRMLUNIT LOGICAL UNIT   @XM10739
         BZ    CKCALL                   NO-BRANCH              @XM10739
         CLI   QCBSTPRI,LUINIT          TCMSESN=LUINIT         @XM10739
         BER   R14                      YES-BRANCH             @XM10739
         B     TSPOSTED                 NO-BRANCH              @XM10739
CKCALL   EQU   *                                               @XM10739
         CLI   QCBSTPRI,NOCALL          CALL=NONE              @XM10739
         BE    SETSCHDL                 YES-BRANCH             @XM10739
         CLI   QCBSTPRI,CALLOPT         CLOCK OR CINTVL        @XM10739
         BL    TSPOSTED                 NO-BRANCH              @XM10739
         OI    QCBSTAT,QCBSCHDL         SCHED RECEIVE FIRST    @XM10739
         B     TSPOSTED                                        @XM10739
SETSCHDL EQU   *                                               @XM10739
         OI    QCBSTAT,QCBSCHDL         SCHED RECEIVE FIRST    @XM10739
         BR    R14                      RETURN                 @XM10739
TSPOSTED EQU   *                                                 X03039
         TS    QCBTSTSW                 QCB POSTED BY LOGON EXIT X03039
         BNZR  R14                      BR YES                   X03039
*                                                                X03039
*   POST QCB TO PLCB RETURN TO GET A PLCB AND REQUEST A LOGON    X03039
*                                                                X03039
         L     RTEMP,AVTSAVTP     SEC'ND AVT ADDR              @XM10729
         LA    RTEMP,SAVTPRTQ           PLCB RETURN QCB ADDRESS  X03039
         STCM  RTEMP,AD,QCBELCHN        POST QCB TO PLCB RETURN  X03039
         MVI   QCBPRI,PRILCBRQ          PLCB REQUEST PRIORITY    X03039
         LR    RTEMP,RQCB               SET QCB AS ELEMENT       X03039
         B     DSPPOSTR                 POST QCB TO PLCB RETURN  X03039
*                                       AND RETURN TO CALLER     X03039
.EXIT    ANOP                                                    X03039
EXIT     EQU   *
         L     RSTCB,QCBSLINK-1         NEXT STCB (DEST SCHED)
         B     DSPBYPAS           GO ACTIVATE DESTINATION SCHEDULER
         AIF   ('&GEN' NE 'VTAM').XGTERM                       @X50X9IH
         SPACE 1                                               @X50X9IH
GETTERM  EQU   *                                               @X50X9IH
         LH    RTEMP,QCBTTCIN     GET TERMNAME TABLE OFFSET    @X50X9IH
         N     RTEMP,AVTCLRHI     CLEAR HALF                   @X50X9IH
         LR    R6,R15             SAVE REG15                   @X50X9IH
         ST    R14,AVTSAVE3       SAVE REG 14                  @XM10729
         L     R15,AVTRNMPT       GET ADDR OF TNT CODE         @X50X9IH
         BALR  R14,R15            LINK TO LOCATE TERM ENTRY    @X50X9IH
         LR    R15,R6             RESTORE REG 15               @X50X9IH
         L     R14,AVTSAVE3       RESTORE REG 14               @XM10729
         SPACE 2                                               @X50X9IH
         SH    RTEMP,AVTHA4  SET BASE TO TERMINAL PREFIX       @X50X9IH
         BR    R5                 RETURN                       @X50X9IH
.XGTERM  ANOP                                                  @X50X9IH
         DROP  15
         EJECT
SENDSCH  EQU   *
         LA    RLCB,AVTEZERO(,RTEMP)    PASSED LCB ADDRESS
         AIF   ('&GEN' EQ 'VTAM').VSNDSCH                        X03039
         SR    RHOLD,RHOLD              CLEAR WORK REGISTER      S99228
         L     RDCB,LCBDCBPT            LOAD DCB ADDRESS         S99228
         IC    RHOLD,DCBEIOBX           INSERT LCB LENGTH        S99228
         SH    RHOLD,AVTHA4             REDUCE LCB LENGTH BY     S99228
         SH    RHOLD,AVTHA4             8 BYTES FOR ADDR LCB EXT S99228
         LA    RHOLD,ZERO(RHOLD,RLCB)   LOAD LCB EXTENSION ADDR  S99228
         USING IEDQLCBX,RHOLD                                    S99228
         TM    LCBXFLAG,LCBGPCTV        GENERAL POLL IN PROGRESS?S99228
         BO    CKDLY1                   BRANCH YES TO RCV SCH   SA65379
         TM    LCBXFLAG,LCBERPND        SOH%R MESSAGE PENDING?   S99228
         DROP  RHOLD                                             S99228
         BZ    NOERP                    NO, SPEC ERP NOT PENDING S99228
CKDLY1   EQU   *                                                SA65379
         TM    LCBINSRC+TWO,DELAY       LCB ON TIME DELAY Q?     S99228
         BZ    NODELAY                  NO, NOT IN POLL DELAY    S99228
         LR    RTEMP,RLCB               LOAD LCB ADDR            S99228
         L     R15,AVTHG02              LOAD ADDR TIME DELAY RTN S99228
         BALR  R14,R15                  BRANCH TO TIME DELAY     S99228
         LA    RQCB,LCBRSKEY            INSERT RCV SCHED IN CHAI S99228
         LR    RTEMP,RQCB               LOAD QCB ADDR            S99228
         BAL   R14,DSPPRIOR             BRANCH TO DISPATCHER     S99228
NODELAY  EQU   *                                                 S99228
         B     RCVSCHED                 BYPASS TO RCV SCHED      S99228
NOERP    EQU   *                                                 S99228
.VSNDSCH ANOP                                                    X03039
         MVC   AVTDOUBL(1),LCBSTAT1     SAE CURRENT STATE
         NI    LCBSTAT1,LCBOCNI+LCBOCWTN SAVE STOP LINE BIT    @OY14092
         OI    LCBSTAT1,LCBSENDN .      SET LCB STATE            S21101
         AIF   ('&GEN' EQ 'VTAM').VSCB                           X03039
FNDSCB   EQU   * .                                               S22025
         TM    LCBSTAT2,LCBDIAL .       IS THIS A DIAL LINE      S22025
         BO    TSTSCB .                 YES-BRANCH               S22025
         SR    R0,R0 .                  CLEAR REG FOR MULTIPLY   S22025
         SR    RTEMP,RTEMP .            CLEAR REG FOR MULTIPLY   S22025
         IC    R0,AVTSCBSZ .            PICK UP SCB SIZE         S22025
         IC    RTEMP,QCBSCBOF .         PICK UP SCB OFFSET       S22025
         MR    R0,R0 .  .               OFFSET X SIZE = PROPER   S22025
*                                       SCB OFFSET IN RTEMP      S22025
         L     R5,LCBSCBDA-1 .          SCB DIRECTORY START ADDR S22025
         LA    R5,0(RTEMP,R5) .         GET SCB FOR THIS QCB     S22025
         STCM  R5,AD,LCBSCBA            SET SCB ADDR IN LCB    @XA08073
TSTSCB   EQU   * .                                               S22025
.VSCB    ANOP                                                    X03039
         USING IEDQSCB,RLAST
         L     RLAST,LCBSCBA-1          GET SCB ADDRESS
         L     RSTCB,STCBLINK-1         NEXT STCB ADDRESS       SA61773
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN EXTENDD LOCK
         BZ    NOLOCK                   NO
         SPACE 2                                                 S22025
         TM    SCBQTYPE,SCBBFMM  .      MIDDLE MSG               S22025
         AIF   ('&GEN' NE 'VTAM').L13A                           X03039
         BO    CHKDLY                   BR YES                   X03039
         AGO   .L13B                                             X03039
.L13A    ANOP                                                    X03039
         BZ    TYPELOCK                 NO-BR                    S22025
         SPACE 2                                                 S22025
         TM    QCBSTAT,QCBSEND          MIDDLE OF SENDING LOCK MSG22025
         BO    NOLOCK                   YES-BR                   S22025
         SPACE 2                                                 S22025
         B     CHKDLY                   BRANCH IF NO            SA61773
.L13B    ANOP                                                    X03039
         SPACE 2                                                 S22025
TYPELOCK EQU   *                                                 S22025
         TM    SCBSTATE,SCBLCK1N+SCBMSGLN EXTENDED LOCK          S22025
         BM    EXTEND                   BRANCH IF EXTENDED LOCK
         SPACE
         MVI   QCBLKRLN,AVTEZERO        CLEAR TO PREVENT POSSIBLE
*                                       DOUBLE POST OF LCB
         AIF   ('&GEN' EQ 'VTAM').L13C                           X03039
         CLI   LCBRSPRI,RECVPRI         RECEIVE PRIORITY        SA58984
         BNE   LOCKTEST                 BR NO, HANDLE NORMALLY  SA58984
         LR    RDCB,RQCB                SAVE QCB ADDRESS        SA58984
         LR    RSTCB,RLCB               QCB TO BE UPDATED       SA58984
         LR    RQCB,RLCB                QCB WITH SEND SCHED STCBSA58984
*                                         AT TOP OF CHAIN       SA58984
         BAL   R14,DSPUNAVR             FOR MESSAGE LOCK AND    SA58984
*                                         RECV PRIORITY, SEND   SA58984
*                                         SCHED IS ON TOP OF    SA58984
*                                         LCB STCB CHAIN OUT OF SA58984
*                                         PRIORITY ORDER. MUST  SA58984
*                                         BE REINSERTED BY PRI  SA58984
         LR    RQCB,RDCB                RESTORE QCB ADDRESS     SA58984
         L     RDCB,LCBDCBPT            RESTORE DCB REG        @OX13500
.L13C    ANOP                                                    X03039
         B     LOCKTEST            USE COMMON CODE
         SPACE
EXTEND   EQU   *
         TM    AVTDOUBL,LCBRECVN        LAST OPERATION A RECEIVE
         BZ    CHKDLY                   BRANCH IF NO            SA61773
LOCKTEST EQU   *
         TM    AVTDOUBL,LCBSENDN        WAS LAST OP A SEND     @XA09773
         BO    SENDEOT                  BRANCH-YES             @XA09773
         NI    SCBBSCFM,AVTEFF-SCBNOEOT ACTIVATE WILL NOT EOT  @XA09773
SENDEOT  EQU   *                                               @XA09773
         OC    QCBLKRRN,QCBLKRRN        IS THERE LOCK MSG
         BZ    NOLOCK                   NO
         SPACE
         AIF   ('&GEN' NE 'VTAM').LOCKMSG                        X03039
         TM    LCBSTAT3,LCBERLCK        ERROR LOCK SET           X03039
         BO    LCBTOIAF                 BR YES                   X03039
*                                                                X03039
.LOCKMSG ANOP                                                    X03039
         MVC   SCBSCHDR,QCBLKRRN        SET HEADER
         B     SENDINIT .               SEND LOCK MESSAGE       SA52971
         SPACE 2                                                 S21101
         SPACE 3                                                 S21101
NOLOCK   EQU   *
         TM    LCBSTAT2,LCBDIAL         IS THIS A DIAL LINE     OX02199
         BO    CKMIDMSG                 YES,SKIP STOPLINE TEST  OX02199
         TM    LCBSTAT1,LCBOCNI         STOPLINE IN PROGRESS    SA56606
         AIF   ('&GEN' EQ 'VTAM').BHELD                          X03039
         BO    NEXTSTCB                 YES-BRANCH              SA56606
         AGO   .MMTEST                                           X03039
.BHELD   ANOP                                                    X03039
         BO    REMOVESS                 BR YES                   X03039
.MMTEST  ANOP                                                    X03039
CKMIDMSG EQU   *                                                OX02199
         TM    SCBQTYPE,SCBBFMM .       MIDDLE OF MSG            S22025
         AIF   ('&GEN' NE 'VTAM').BDELAY                         X03039
         BO    NEXTSTCB                 BR YES                   X03039
         AGO   .TSTLGOF                                          X03039
.BDELAY  ANOP                                                    X03039
         BZ    TSTDELAY .               NO-BRANCH                S22025
         TM    QCBSTAT,QCBSEND .        QCB IN SEND MODE         S22025
         BO    SETSCERB .               YES GO SET ERB AND SCB UPS22025
*                                       FOR RECALL               S22025
         B     NEXTSTCB .               GET NEXT STCB            S22025
         AGO   .TSTDELY                                          X03039
.TSTLGOF ANOP                                                    X03039
         TM    QCBFLAG,QCBTSSES         IN TSO SESSION         @Z30X8IM
         BO    TSTDELAY                 BRANCH YES             @Z30X8IM
         TM    LCBSTAT4,LCBLGOFF        LOGOFF REQUESTED         X03039
         BO    DELAYSND                 BR YES                   X03039
.TSTDELY ANOP                                                    X03039
         SPACE 2
TSTDELAY EQU   * .                                               S22025
         TM    LCBSTAT1,LCBOCNI .       STOPLINE IN PROGRESS    OX02199
         AIF   ('&GEN' NE 'VTAM').BNSTCB                         X03039
         BO    REMOVESS                 BR YES                   X03039
*                                                                X03039
         AGO   .TSTCLOS                                          X03039
.BNSTCB  ANOP                                                    X03039
         BO    NEXTSTCB                 YES,BRANCH              OX02199
         TM    AVTBIT1,AVTDLAYN .       SYSTEM DELAY             S22025
         BO    NEXTSTCB .               BRANCH-YES               S22025
.TSTCLOS ANOP                                                    X03039
         TM    AVTBIT1,AVTCLOSN+AVTQUCKN QUICK CLOSE             S22025
         AIF   ('&GEN' NE 'VTAM').L14                            X03039
         BO    REMOVESS                 BR YES                   X03039
         AGO   .L15                                              X03039
.L14     ANOP                                                    X03039
         BO    NEXTSTCB .               QUICK CLOSE              S22025
         AIF   ('&GEN' EQ 'MINI').L16
         AIF   ('&GEN' NE 'VTAM').TSTSCHD                        X03039
.L15     ANOP                                                    X03039
*                                                                X03039
         L     RTEMP,AVTSAVTP           SECONDARY AVT ADDRESS    X03039
*                                                                X03039
         USING IEDNSVTD,RTEMP           ESTABLISH ADDRESSABILITY X03039
*                                       VTAM QUICK CLOSEDOWN     X03039
         TM    SAVTSTAT,SAVTVCLS+SAVTVQCK                        X03039
         BO    REMOVESS                 BR YES                   X03039
*                                                                X03039
         TM    LCBSTAT3,LCBERLCK        ERROR LOCK SET           X03039
         BO    LCBTOIAF                 BR YES                   X03039
*                                                                X03039
.TSTSCHD ANOP                                                    X03039
         TM    QCBSTAT,QCBSCHDL         HAS SOURCE BEEN SET FOR
*                                         CLOCK OR INTVL
         BZ    NOTDIALQ                 BR NO                    X03039
*                                                                X03039
         AIF   ('&GEN' NE 'VTAM').ACTDIAL                        X03039
         NI    QCBSTAT,AVTEFF-QCBSCHDL  RESET RCV BEFORE SEND    X03039
         B     RCVSCHED                 GO ACTIVATE RCV SCHEDULERX03039
*                                                                X03039
         AGO   .NOTDIAL                                          X03039
.ACTDIAL ANOP                                                    X03039
         LR    RTEMP,RQCB     SET FOR DIAL SCHEDULER
         LA    RSTCB,LCBRSKEY           NEXT STCB
         B     DSPBYPAS                 ACTIVATE DIAL RCV SCHED
.NOTDIAL ANOP                                                    X03039
NOTDIALQ EQU   *
         AIF   ('&GEN' NE 'VTAM').L16                            X03039
         TM    LCBBSMST,LCBRTRRO        RESP OWED TO RTR       @X50X9II
         BO    CKSSOUT                  YES-BRANCH             @X50X9II
         TM    LCBSTAT3,LCBUNSIP        UNSOLICITED INPUT RCV'D  X03039
         BO    RCVSCHED                 BR YES                   X03039
CKSSOUT  EQU   *                                               @X50X9II
         TM    LCBSTAT3,LCBSSOUT        REMOVE SS FOR SPECOUT    X03039
         BZ    GOSEND                   BR NO                    X03039
*                                                                X03039
         AGO   .VNMSGLT                                          X03039
.L16     ANOP
         TM    SCBBSCFM,SCBMLMTN        MESSAGE LIMIT REACHED
         BZ    NOLMT                    NO
         NI    SCBBSCFM,SCBMLMTF        RESET BIT
         AGO   .NEVTAM                                           X03039
.VNMSGLT ANOP                                                    X03039
DELAYSND EQU   *                                                 X03039
         LR    R5,RSTCB                 SAVE NEXT STCB ADDRESS   X03039
         LR    R6,RQCB                  SAVE QCB ADDR            X03039
         LR    RSTCB,RQCB               UNAVAIL PARAMETER        X03039
         LR    RQCB,RLCB                UNAVAIL PARAMETER        X03039
         BAL   R14,DSPUNAVR             PUT SS BACK INTO QCB     X03039
*                                                                X03039
         LR    RSTCB,R5                 RESTORE NEXT STCB ADDR   X03039
         LR    RQCB,R6                  RESTORE QCB ADDR         X03039
         MVC   QCBSTCHN,QCBSLINK        REMOVE SEND SCH FROM QCB X03039
*                                                                X03039
*   PREPARE TO PUT QCB ON THE TIME DELAY QUEUE                   X03039
*                                                                X03039
         TM    LCBSTAT3,LCBSSOUT        REMOVE SS FOR SPECOUT  @ZA03122
         BO    DELAY1                   YES, FORCE 1 SEC DELAY @ZA03122
         LH    R5,QCBINTVL              ASSUME CLOCK OR CINTVL   X03039
         N     R5,AVTCLRHI              CLEAR HI HALF            X03039
         CLI   QCBSTPRI,CLOCK           CLOCK SPECIFIED          X03039
         BNE   INTVL                    BR NO                    X03039
*                                                                X03039
         AR    R5,R5                    DOUBLE VALUE             X03039
         TIME  BIN                      GET TIME OF DAY          X03039
         SRDL  R0,HALF                  SHIFT TO REG1            X03039
         D     R0,HUND                  TIME IN SECONDS          X03039
         CLR   RTEMP,R5                 IS TIME TODAY            X03039
         BL    TODAY                    BR YES                   X03039
*                                                                X03039
         A     R5,TWNTY4HR              ADD 24 HOURS             X03039
TODAY    EQU   *                                                 X03039
         SR    R5,RTEMP                 AMOUNT OF DELAY          X03039
         B     CHKTIME                  CONTINUE CLOCK PROCESSINGX03039
*                                                                X03039
INTVL    EQU   *                                                 X03039
         CLI   QCBSTPRI,CINTVL          CINTVL SPECIFIED         X03039
         BE    CHKTIME                  BR YES                   X03039
*                                                                X03039
DELAY1   EQU   *                                               @ZA03122
         LA    R5,ONESECD               SET DELAY TO 1 SECOND    X03039
CHKTIME  EQU   *                                                 X03039
         C     R5,TWELVHR               MORE THAN 12 HOURS       X03039
         BNH   LESS12                   BR NO                    X03039
*                                                                X03039
         S     R5,TWELVHR               MAKE LESS THAN 12 HOURS  X03039
         OI    QCBSTAT,QCBTIME          INDICATE MORE THAN 12 HRSX03039
LESS12   EQU   *                                                 X03039
         STH   R5,QCBEOLDT              SET DELAY TIME           X03039
         MVI   QCBLKRLN,AVTEZERO        SET QCB INDICATOR        X03039
         LR    RTEMP,RQCB               QCB ADDR FOR TIME DELAY  X03039
         LA    R14,NEXTSTCB             SET RETURN ADDRESS       X03039
         L     R15,AVTHG01              ADDRESS OF TIME DELAY    X03039
         BR    R15                      GO PUT QCB ON TIME DELAY X03039
         AGO   .VSCHL                                            X03039
.NEVTAM  ANOP                                                    X03039
         LR    RSTCB,RLCB .             UNAVAIL PARAMETER        S21101
         LR    RQCB,RLCB .              RESTORE QCB ADDR         S22025
         B     POSTIT .                 POST LCB TO ITSELF       S21101
         SPACE 2                                                 S21101
NOLMT    EQU   *                                                 S21101
         TM    QCBELCHN+2,QCBCNTEN      CONTENTION,RVI,OR OTHER@OX17153
*                                         BUFFER BUSY CONDITION  S21101
         BZ    NOTBUSY .                BRANCH IF NO             S21101
         NI    QCBELCHN+2,AVTEFF-QCBCNTEN RESET CONTENTION BIT @OX17153
         L     RSTCB,QCBSLINK-1         GET NEXT STCB
         CLI   STCBPRI-IEDQSTCB(RSTCB),0   QEVENT NEXT
         BE    CHKDLY                   BRANCH-YES GO RCV      @OY14503
         B     NEXTSTCB                 TRY TO SEND TO NEXTTERM@OY14503
*                                         RECEIVE SCHEDULER      S21101
.VSCHL   ANOP                                                    X03039
         SPACE
CHKDLY   EQU   *                                                SA61773
         TM    LCBINSRC+2,DELAY         IN DELAY Q
         BNZ   NEXTSTCB                 YES DISPATCH
RCVSCHED EQU   *                                                SA61773
         LA    RSTCB,LCBRSKEY           RCV SCHED STCB          SA61773
NEXTSTCB EQU   *                                                SA61773
         AIF   ('&GEN' NE 'VTAM').NORMVSS                        X03039
         NI    LCBSTAT3,AVTEFF-LCBSSOUT RESET REMOVE SS BIT      X03039
.NORMVSS ANOP                                                    X03039
         LR    RTEMP,RLCB               SET ELEMENT REG         SA61773
         LR    RQCB,RLCB                SET QCB REG             SA61773
         B     DSPBYPAS                 BYPASS                  SA61773
         SPACE 3                                                 S21101
         AIF   ('&GEN' NE 'VTAM').NOTBUSY                        X03039
*                                                                X03039
LCBTOIAF EQU   *                                                 X03039
         MVC   LCBSTAT1,AVTDOUBL        RESTORE PREVIOUS STATUS  X03039
         L     RTEMP,AVTSAVTP           SECONDARY AVT ADDRESS    X03039
         LA    RTEMP,SAVTLCWQ           LCCW GEN'R QCB ADDRESS   X03039
         STCM  RTEMP,AD,LCBQCBA         PUT QCB ADDR IN LCB      X03039
         LR    RTEMP,RLCB               SET LCB AS ELEMENT       X03039
         B     DSPPOST                  POST LCB TO LCCW GEN'R   X03039
*                                                                X03039
         AGO   .VSEND                                            X03039
.NOTBUSY ANOP                                                    X03039
NOTBUSY  EQU   *                                                 S21101
         MVC   AVTDOUBL+1(1),SCBBSCFM   SAVE FLAGS              SA59034
         AIF   ('&GEN' EQ 'MINI').L17
         TM    LCBSTAT2,LCBDIAL+LCBSYNC DIAL BSC
         BNO   NOBSD                    BRANCH IF NOT BSC DIAL
         SPACE
         CLI   LCBTSTSW,AVTEFF          WAS THERE HARD ERROR INA
*                                         PREVIOUS SELSECTION
         MVC   LCBSENS0(2),AVTDOUBL                            @OX12563
         BE BSDIAL                      BRANCH IF YES
************************************************************** @ZA03063
*                                                            * @ZA03063
*        SCBNOEOT IS USED TO CONTROL QUEUE FLUSH FOR BSC     * @ZA03063
*        DIAL WITH SEND PRIORITY. SCBNOEOT IS ALSO USED TO   * @ZA03063
*        FORCE A RECEIVE OPERATION AFTER TCAM HAS SENT AN    * @ZA03063
*        EOT. THIS IS REQUIRED FOR ALL BSC DIAL OPERATIONS.  * @ZA03063
*        IT IS SET ON EVERY RECEIVE OPERATION AND RESET ON   * @ZA03063
*        THE FIRST SEND AFTER A RECEIVE. LINE END APPENDAGE  * @ZA03063
*        WILL TURN ON SCBNOEOT AND NOT SEND AN EOT FOR BSC   * @ZA03063
*        DIAL WITH SEND PRIORITY. LINE END APPENDAGE RESETS  * @ZA03063
*        SCBNOEOT WHENEVER IT SENDS AN EOT, FOR EXAMPLE ON A * @ZA03063
*        MSGGEN.                                             * @ZA03063
*                                                            * @ZA03063
************************************************************** @ZA03063
         TM    SCBBSCFM,SCBNOEOT        TCAM SEND AN EOT       @ZA03063
         BZ    GORCV                    BRANCH IF YES          @ZA03063
         NI    SCBBSCFM,AVTEFF-SCBNOEOT INDICATE EOT SENT      @ZA03063
         TM    AVTDOUBL,LCBSENDN        LAST OPERATION A SEND  @ZA03063
         BZ    GOSEND                   BRANCH IF NO           @ZA03063
         OI    SCBBSCFM,SCBNOEOT        INDICATE EOT NOT SENT  @ZA03063
         CLI   LCBRSPRI,SENDPRI         SEND PRIORITY          @ZA03063
         BE    GOSEND                   BRANCH IF YES          @ZA03063
GORCV    EQU   *                                               @ZA03063
         OI    SCBBSCFM,SCBNOEOT        INDICATE EOT NOT SENT  @ZA03063
         NI    LCBSTAT2,AVTEFF-LCBNEGRP FORCE THE ADDITIONAL   @ZA03063
*                                       RECEIVE OPERATION      @ZA03063
*                                       REQUIRED BY BSC DIAL   @ZA03063
*                                       ARCHITECTURE           @ZA03063
         B     RCVSCHED                 GO RECEIVE             @ZA03063
NOBSD    EQU   *
         AIF   ('&GEN' EQ 'NTSO').L17A
         TM    QCBDSFLG,QCBDISK+QCBCORE NON-TSO QUEUES              TSO
         BZ    GOSEND                   BRANCH ON NO                TSO
         TM    QCBFLAG,QCBTSSES         TIME-SHARING SESSION?    S22029
         BO    GOSEND                   YES, START SEND OPRATION S22029
.L17A    ANOP
         CLI   LCBTSTSW,AVTEFF          REQUEST FOR NEW CONNECTION
         BNE   GOSEND                   BRANCH IF NO
BSDIAL   EQU   *
         L     RTEMP,DCBDEBAD           DEB ADDRESS            @OX13500
         USING DEBNMSUB,RTEMP           ADDRESSABILITY         @OX13500
         TM    DEBOPATB,OUTONLY         OUTPUT ONLY DEVICE?    @OX13500
         BO    GOSEND                   YES WE WANT TO SEND    @OX13500
         DROP  RTEMP                                           @OX13500
         CLI   QCBSTPRI,CALLPRI         CALL=NONE
         BE    TRMHELD                  BRANCH IF YES - THIS IS@OY12969
*                                         POSSIBLE IF HARD ERROR ON
*                                         PREVIOUS ATTEMPT TO SEND
.VSEND   ANOP                                                    X03039
GOSEND   EQU   *
         AIF   ('&GEN' EQ 'NTSO').L17
         TM    AVTBIT1,AVTTSON          IS IT TIME SHARING?         TSO
         BZ    TSO3                     BRANCH ON NO                TSO
         L     R6,AVTTSOPT              GET ADDRESS OF TSINPUT QCB  TSO
         AIF   ('&GEN' EQ 'VTAM').VTSO                         @Z30X8IR
         L     R6,TSISCHED-IEDQTSI(R6)  ADDRESS OF TS SCHEDULER     TSO
         BAL   RWORK,12(,R6)            BRANCH TO ROUTINE           TSO
         AGO   .SEND                                           @Z30X8IR
.VTSO    ANOP                                                  @Z30X8IR
         L     R6,TSIRNSCH-IEDQTSI(,R6) VTAM TSO SCHED ADDR    @Z30X8IR
         LA    RSELECT,FOUR             INDEX TO IEDA20 ENTRY  @Z30X8IR
*                                         PT OF VTAM TSO SCHED @Z30X8IR
         BALR  RRTN,R6                  BRANCH TO VTAM TSO     @Z30X8IR
*                                         SCHED,IEDAYG         @Z30X8IR
.SEND    ANOP                                                  @Z30X8IR
         B     TSO4                     PUT SEND SCHED IN QCB       TSO
         B     SENDPREP                 GO TO START SENDING.        TSO
TSO3     EQU   *                                                    TSO
.L17     ANOP
         AIF   ('&GEN' EQ 'VTAM').VHELD                          X03039
         TM    QCBFLAG,QCBTERMQ         QUEUED BY TERMINAL?
         BZ    NOTRMQ                   BRANCH IF NOT
         SPACE 2
.VHELD   ANOP                                                    X03039
         TM    QCBSTAT,QCBTRMHO         HAS TERMINAL BEEN INTERCEPTED
         BO    TRMHELD                  BRANCH IF  TERMINAL WAS HELD
*                                         TO AVOID GETTING MSG OFF QUE
         SPACE 2
NOTRMQ   EQU   *
         AIF   ('&GEN' EQ 'NTSO' OR '&GEN' EQ 'MINI').MIX0010    S22029
         TM    QCBDSFLG,QCBTSQ          TIME-SHARING QUEUEING    S22029
         BO    NOINIT                   YES. SKIP SENDING INIT   S22029
*                                       MODE MSGS.               S22029
.MIX0010 ANOP                                                    S22029
         AIF   ('&GEN' NE 'VTAM').NOSAVE                         X03039
         LR    R5,RSTCB                 SAVE NEXT STCB ADDR      X03039
.NOSAVE  ANOP                                                    X03039
         L     RSTCB,QCBINSRC-1   GET INITIATE SOURCE LCB CHAIN
         N     RSTCB,CLEAR              CLEAR LOW ORDER BYTE
         LA    RQCB,0(,RQCB)            CLEAR HI ORDER BYTE
         CLR   RSTCB,RQCB               INITIATE MODE
         AIF   ('&GEN' EQ 'VTAM').VINIT                          X03039
         BE    NOINIT                   NO
         AGO   .NVINIT                                           X03039
.VINIT   ANOP                                                    X03039
         BE    RSTRSTCB                 BR NO                    X03039
.NVINIT  ANOP                                                    X03039
         MVC   QCBINSRC(3),LCBINSRC-IEDQLCB(RSTCB) REMOVE LCB FROM
*                                      INITIATE CHAIN
         NI    LCBINSRC+2-IEDQLCB(RSTCB),X'FF'-LCBNSRCD TURN OFF
*                                      INITIATE FLAG
         STCM  RLCB,AD,LCBINSRC-IEDQLCB(RSTCB) DEST LCB INTO SRCSA62953
         L     RSTCB,LCBSCBA-1-IEDQLCB(RSTCB) SOURCE SCB
         MVC   SCBSCHDR,SCBDCHDR-IEDQSCB(RSTCB)  LOAD SOURCE SCB
         TM    QCBDSFLG,QCBREUS+QCBNREUS  DISK
         BNZ   MOVER                    YES
         MVC   SCBSCHDR,SCBCCHDR-IEDQSCB(RSTCB)   PARAMETER
MOVER    EQU   *
         MVI   SCBPRI,AVTEZERO          RESET PRIORITY           A
         OI    LCBSTAT1,LCBSENDN+LCBINITN SET LCB STATE
         B     SENDINIT                 SEND MSG
         SPACE 3                                                 S21101
         AIF   ('&GEN' NE 'VTAM').NRESTR                         X03039
RSTRSTCB EQU   *                                                 X03039
         LR    RSTCB,R5                 RESTORE NEXT STCB ADDR   X03039
.NRESTR  ANOP                                                    X03039
NOINIT   EQU   *
         TM    QCBDSFLG,QCBHELD         IS FEFO CHAIN BEING CHANGED
*                                         BY REUS IN DISABED CODE
         BO    TRMHELD                  BRANCH YES, TO REMOVE STCB.
*                                         WILL BE RE-INSERTED LATER
         SPACE
         SR    R0,R0                    CLEAR COUNT REGISTER
         LA    RTEMP,IEDQQCB+QCBMSIZE-QCBPSIZE INITIALIZE SCAN FOR
*                                      LOOP
SCANLOOP EQU   *
         LA    RTEMP,QCBPSIZE(0,RTEMP) BUMP TO NEXT PRIORITY QCB
         MVC   SCBSCHDR-IEDQSCB(3,RLAST),QCBFFEFO-IEDQPQCB(RTEMP)
*                                      NEXT FEFO MESSAGE
         OC    QCBFFEFO-IEDQPQCB(3,RTEMP),QCBFFEFO-IEDQPQCB(RTEMP) IS
*                                      THERE AN UNSENT FEFO MESSAGE
         BNZ   PREPARE            YES, GO PREPARE SCB
         BCTR  R0,R0                    BUMP COUNT
         CLI   QCBPRIPQ-IEDQPQCB(RTEMP),0 LAST PRIORITY QCB
         BNE   SCANLOOP           NO, LOOK AT NEXT ONE
         AIF   ('&GEN' EQ 'MINI').L19
         MVI   QCBPRLVL,AVTEZERO .      RESET HIGHEST PRIORITY LES21101
*                                         MESSAGE INDICATOR FOR DS21101
*                                         LINES.  HM WILL INDICATS21101
*                                         HIGHEST LEVEL IN USE   S21101
.L19     ANOP                                                    S22025
TRMHELD  EQU   * .                                               S22025
         AIF   ('&GEN' EQ 'VTAM').VRMOVSS                        X03039
         MVC   SCBBSCFM,AVTDOUBL+1      RESTORE FLAGS           SA59034
         AIF   ('&GEN' EQ 'MINI').L19A                           S22025
         LA    RSTCB,LCBRSKEY           RCV SCHED STCB
         LR    RTEMP,RQCB               SET ELEMENT FOR DIAL RCV SN
         CLI   QCBSTPRI,CALLOPT         THIS CLOCK OR INTVL
         BNL   DSPBYPAS                 YES TO RESET DELAY
         AGO   .NRMOVSS                                          X03039
.VRMOVSS ANOP                                                    X03039
REMOVESS EQU   *                                                 X03039
         NI    LCBSTAT3,AVTEFF-LCBSSOUT RESET REMOVE SS BIT      X03039
.NRMOVSS ANOP                                                    X03039
         SPACE 3                                                 S21101
.L19A    ANOP                                                    S22025
         AIF   ('&GEN' EQ 'MINI' OR '&GEN' EQ 'NTSO').L18
TSO4     EQU   *                                                    TSO
.L18     ANOP
         LA    RSTCB,LCBSTCBA-(STCBLINK-IEDQSTCB)               SA56606
*                                       SET REG                 SA56606
STCBLP   EQU   *                                                SA56606
         LR    RTEMP,RSTCB              SAVE PREVIOUS STCB      SA56606
         L     RSTCB,STCBLINK-IEDQSTCB-1(RSTCB)                 SA56606
*                                       LOAD NEXT STCB          SA56606
         LA    R0,QCBSTVTO-IEDQQCB      STCB OFFSET             SA56606
         LR    RWORK,RSTCB              SET REG                 SA56606
         LA    RWORK,ZERO(,RWORK)       CLEAR HO BYTE           SA56606
         SR    RWORK,R0                 QCB ADDR                SA56606
         CLR   RWORK,RQCB               CORRECT QCB             SA56606
         BNE   STCBLP                   BRANCH IF NO            SA56606
         SH    RTEMP,AVTHA4             SET REG                 SA56606
         LR    RSTCB,RQCB               UNAVAIL REG             SA56606
         LR    RQCB,RTEMP               UNAVAIL REG             SA56606
POSTIT   EQU   *                                                 S21101
         BAL   R14,DSPUNAVR .           REMOVE STCB              S22025
         AIF   ('&GEN' EQ 'VTAM').VNMGLMT                        X03039
         MVI   SCBSNDCT,AVTEZERO .      RESET SEND LIMIT COUNT   S21101
.VNMGLMT ANOP                                                    X03039
         LR    RTEMP,RLCB               SET LCB TO BE QPOST'ED
         ST    RTEMP,LCBQCBA-1          GO QPOST
         B     DSPPOST            GO QPOST
         SPACE 1
PREPARE  EQU   *
         LPR   R0,R0                    MAK COUNT POSITIVE
         STC   R0,SCBPRI-IEDQSCB(,RLAST)  SET PRIORITY LEVEL INDEX
         AIF   ('&GEN' EQ 'MINI').L21                            S21101
         STC   R0,QCBPRLVL .            SET HIGHEST LEVEL MSG IN S21101
.L21     ANOP                                                    S21101
SENDINIT EQU   *                                               @SA72478
         XC    SCBFEFO,SCBFEFO          CLEAR FOR PRIORITY LEVEL
*                                         MESSAGES
         OI    QCBFLAG,QCBSDFFO         SET AS SENDING A MESG   SA52971
SENDPREP EQU   *
         NI    LCBERBST,AVTEFF-LCBDLNKN . RESET DLINK SWITCH     S22025
         NI    LCBSTAT2,AVTEFF-LCBSNDPR RESET SEND PRIORITY    @OY12395
         STCM  RQCB,AD,SCBDESTQ-IEDQSCB(RLAST) SET QCB ADDRESS   Y01948
         MVC   SCBSCSEG(3),SCBSCHDR .   SET SCB SEG              S22025
         MVI   SCBUNTCT,AVTEZERO .      SET UNIT COUNT TO BUILD  S22025
*                                       FROM BEGINNING OF BUFFER S22025
COMMON1  EQU   *                                                 S22025
         XC    LCBRECAD,LCBRECAD .      CLEAR Q RECORD ADDRESS   S22025
         XC    LCBRECOF,LCBRECOF .      ALSO OFFSETR FOR LINEEND S22025
         AIF   ('&GEN' EQ 'VTAM').VSPOUT                         X03039
         TM    LCBSTAT2,LCBDIAL                                 SA60792
         BO    NORESET                                          SA60792
         NC    LCBTTCIN,LCBTTCIN        CONNECTED TERMINAL ?    SA69635
         BNZ   NORESET                  YES, BR-LEAVE AS IS     SA69635
         MVI   LCBTTCIN+ONE,ONE                                 SA60792
NORESET  EQU   *
.VSPOUT  ANOP                                                    X03039
         AIF   ('&GEN' NE 'VTAM').SETERB                         X03039
         TM    LCBSTAT3,LCBSPOUT        SPECOUT PROCESSING       X03039
         BZ    BUILDERB                 BR NO                    X03039
*                                                                X03039
         OI    LCBSTAT3,LCBNLOUT        REQUEST NULL WRITE       X03039
BUILDERB EQU   *                                                 X03039
.SETERB  ANOP                                                    X03039
         MVI   LCBERBPY,PRIINTRQ        INITIAL REQUEST PRIORITY
         L     RDCB,LCBDCBPT            DCB BASE
         MVC   LCBRBCT1,DCBBUFOU        REQUEST BUFOUT           X03039
         NI    LCBRBCT1,X0F             CLEAR 1ST 4 BITS         X03039
         MVI   LCBRBCT2,AVTEZERO        ZERO DISABLED COUNT      X03039
COMMON   EQU   *                                                 S22025
         LA    RTEMP,AVTDSIOB .         GET DISK I/O QCB ADDRESS S22025
COMMON2  EQU   *                                                 S22025
         ST    RTEMP,LCBERB .           SET TO POST ERB TO IT    S22025
         LA    RTEMP,LCBERB             ADDR OF ERB              S22025
         B     DSPPOST            GO QPOST ERB TO DISK READ ROUTINE
         AIF   ('&GEN' EQ 'VTAM').EQUATES                        X03039
         SPACE 7                                                 S21101
         EJECT                                                   S22025
SETSCERB EQU   * .                                               S22025
         TM    SCBQTYPE,SCBCOREQ .      CORE QUEUEING            S22025
         BO    GOCORE .                 YES-BR                   S22025
         TM    SCBSTAT1,PRFNLSTN  .     EOM BUFFER               S22025
         BO    NOTALL .                 BRANCH IF NO             S22025
         CLC   SCBDEOB+1(3),SCBCRCD .   SENDING LAST SEGMENT     S22025
         BNL   GOCORE                                           SA60792
         NC    SCBXTRA(THREE),SCBXTRA                           SA60792
         BZ    RSET                                             SA60792
         CLC   SCBDEOB+ONE(THREE),SCBXTRA                       SA60792
         BNL   GOCORE                                           SA60792
RSET     EQU   *                                                SA60792
         OI    SCBSTAT1,PRFNLSTN .      FLAG NOT LAST            S22025
NOTALL   EQU   * .                                               S22025
         XC    SCBXTRA(3),SCBXTRA .     CLEAR FOR RECALL         S22025
         XC    SCBNTXT(3),SCBNTXT .     CLEAR FOR RECALL         S22025
GOCORE   EQU   *                                                 S22025
         MVZ   SCBHBFNO,SCBQTYPE        SET QTYPE FLGS FOR FA   SA52971
         MVC   LCBCPA(4),SCBDEOB .      SAVE ACROSS RECALL       S22025
         MVC   LCBCPA+4(3),SCBTRANS .   SAVE SCB TRANS ACROSS RCLS22025
         MVI   LCBERBPY,PRIDKEOB .      RECALL PRIORITY          S22025
         MVI   LCBERBCT,1 .             RECALL BUFFER COUNT      S22025
         MVI   LCBERBCT+1,AVTEZERO .    CLEAR DISABLED COUNT     S22025
         OI    LCBSTAT1,LCBRCLLN .      SET RECALL BIT IN LCB    S22025
         LA    R0,ERBRETRN .            RETURN ADDR FOR ERB      S22025
         ST    R0,LCBRCQCB .            IN LCB                   S22025
         B     COMMON                   GO POST ERB              S22025
         SPACE 3                                                 S22025
         DS    0F .                     WORD BOUNDARY            S22025
ERBRETRN EQU   *-8 .                    QCB                      S22025
         DC    AL1(DSPMCPL4),AL3(*-1) . STCB THAT GETS CONTROL   S22025
*                                       WHEN ERB FOR RECALL IS   S22025
*                                       POSTED BACK TO R4 WHEN   S22025
*                                       READ IS DONE             S22025
         USING *,R15                                           @OY19438
         L     RBASE,BASE               LOAD BASE REGISTER     @OZ24185
         DROP  R15                                             @OY19438
         USING TAG,RBASE                                       @OY19438
         LA    RWORK,LCBERB-IEDQLCB .   ERB OFFSET INTO LCB      S22025
         SR    RTEMP,RWORK .            COMPUTE LCB ADDRESS      S22025
         LR    RLCB,RTEMP .             LCB ADDR                 S22025
         L     RLAST,LCBSCBA-1 .        SCB ADDRESS              S22025
         L     RTEMP,LCBERBCH-1 .       RECALLED BUFFER ADDRESS  S22025
         OI    PRFSTAT1-IEDQPRF(RTEMP),PRFCNCLN . SET CNCL FLG   S22025
         MVC   LCBISZE(1),PRFSCAN+1-IEDQPRF(RTEMP) . SET IDLES CTS22025
         MVC   LCBTTBIN,SCBDCHDR .      SETUP TNTOFFSET          S22025
         LA    RTEMP,AVTINOUT .         INMSG/OUTMSG DELIMITER   S22025
         STCM  RTEMP,AD,SCBMACR         RESET MACRO ADDRESS      Y01948
         MVC   SCBUNTCT(1),SCBDEOB .    SET UNIT COUT            S22025
         MVC   SCBDEOB(4),LCBCPA .      RESTORE DEOB OFTER RECALLS22025
         MVC   SCBTRANS(3),LCBCPA+4 .   RESTORE SCB TRANS        S22025
         NI    SCBHBFNO,CLEAR0F         RESET HBFNO              S22025
         LA    RTEMP,AVTACTIB .         ACTIVATE ROUTINE QCB ADDRS22025
         L     RQCB,SCBDESTQ-1 .        PICK UP QCB ADDR         S22025
         NI    SCBQTYPE,AVTEFF-SCBBFMM .RESET MIDDLE OF MSG BIT  S22025
         NI    QCBSTAT,AVTEFF-QCBSEND .RESET QCB SEND BIT        S22025
         NI    LCBSTAT1,AVTEFF-LCBRCLLN RESET RECALL BIT         S22025
         TM    LCBERBST,LCBEOMSG .      EOM IN RECALLED BUFFER   S22025
         BO    COMMON2                  GO POST ERB              S22025
         B     COMMON1                  GO POST ERB              S22025
BASE     DC    A(TAG)                   BASE ADDRESS CONSTANT  @OZ24185
.EQUATES ANOP                                                    X03039
         EJECT
*                                 OTHER EQUATES
         SPACE 1
AUTOPOLL EQU   X'01'              INVITATION LIST IS CURRENTLY BEING
*                                      AUTOPOLLED
CLOSEDWN EQU   X'01'                    LINE STOPPED BY        @SA71683
*                                        CLOSEDOWN             @SA71683
ZERO     EQU   0                                                 S99228
ONE      EQU   1                        CONSTANT OF ONE         SA60792
THREE    EQU   3                        CONSTANT OF THREE       SA60792
TWO      EQU   2                                                 S99228
AD       EQU   7                        MASK FOR STCM OF ADDRESS Y01948
CALLOPT  EQU   X'70'                    MASK STCB PRI DIAL UP
*                                         CLOCK OR INTVL
XB0      EQU   X'B0'                    MASK FOR 1ST TIME SWITCH X03039
SENDPRI  EQU   X'20'                    MASK FOR SEND PRIORITY
CONNECT  EQU   X'80'                    MASK FOR DIAL CONNECTION
CALLPRI  EQU   X'50'                    PRIORITY OF DIAL SEND WITH
*                                         CALL=NONE
DELAY    EQU   X'02'                    MASK FOR LCB IN DELAY Q
STATUS   EQU   X'03'              OFFSET OF STATUS INFORMATION IN
*                                      INVITATION LIST
*                                      FOR OUTPUT
NOP      EQU   X'03'              NO-OP CHANNEL COMMAND CODE
TIC      EQU   X'08'              TIC CHANNEL COMMAND CODE
OPEN     EQU   X'10'              DCB FLAG INDICATING LINE GROUP OPEN
SENSE    EQU   X'FF'              VALUE SET IN SENSE BYTE OF COMMAND
*                                      FOLLOWING PREPARE ON CONTENTION
*                                      TERMINALS
F0       EQU   X'F0'                    DIAL CONNECTION AND NO DIAL
X0F      EQU   X'0F'                    MASK USED FOR INITIAL BUFF
X12      EQU   X'12'                                               2741
POLL     EQU   X'09'                    POLL COMMAND
LCBNSRCD EQU   X'01'                    FLAG FOR INITIATE MODE
ERPCTL   EQU   X'24'                    BITS IN LCBFLAG1-ERP IS IN
*                                         CONTROL
LINEADD  EQU   4                        OFFSET IN UNCB-LINE ADDRESS
SENSMASK EQU   X'FF'                    VALUE OF SENSE FIELD IN
*                                         LCB BEFORE SENSE
AIBM1    EQU   X'1F'                                                TSO
T1050    EQU   X'51'                                                TSO
T2741B   EQU   X'56' .                                              TSO
T2741C   EQU   X'55' .                                              TSO
RECVPRI  EQU   X'80'                    LCB RECV PRI VALUE      SA58984
         AIF   ('&GEN' NE 'VTAM').NVTAM                          X03039
ONESECD  EQU   1                        ONE SECOND DELAY         X03039
FOUR     EQU   4                        IEDAYG ENTRY PNT INDEX @Z30X8IR
WORD2    EQU   4                        OFF TO 2ND WORD OF SAVE  X03039
HALF     EQU   32                                                X03039
LUINIT   EQU   X'50'                    TCMSESN=LUINIT (FOR LU)@XM10739
NOCALL   EQU   X'50'                    CALL=NONE SS PRIORITY    X03039
CINTVL   EQU   X'70'                    CHECK CINTVL SPECIFIED   X03039
CLOCK    EQU   X'80'                    CHECK CLOCK SPECIFIED    X03039
LXC      EQU   X'1B'                    VTAM LCCW RESET COND'L   X03039
*                                       OP CODE                  X03039
.NVTAM   ANOP                                                    X03039
HIOCC    EQU   X'48'                    IOHALT COMPLETION CODE   Y02027
         SPACE 1
         AIF   ('&GEN' EQ 'MINI').L20
         AIF   ('&GEN' NE 'VTAM').DOCQAD                         X03039
HUND     DC    F'100'                   ONE HUNDRED              X03039
TWELVHR  DC    F'43200'                 NUMBER SECONDS IN 12 HRS X03039
TWNTY4HR DC    F'86400'                 NUMBER SECONDS IN 24 HRS X03039
         AGO   .VCLEAR                                           X03039
.DOCQAD  ANOP                                                    X03039
DOCQAD   DC    AL2(LCBFLAG1-IEDQLCB+12) CONSTANT TO OBTAIN CALL Q
.L20     ANOP
LCBSIZE  DC    AL2(LCBFLAG1-IEDQLCB)    SIZE OF LCB FROM RCB TO IOB
.VCLEAR  ANOP                                                    X03039
CLEAR    DS    0F
         DC    X'00FFFFFC'
         AIF   ('&GEN' EQ 'VTAM').VDSECTS                        X03039
CLRLOW   DS    0F                                              @OS77835
         DC    X'00FFF000'              CLEAR FOR ADDRESS TRANS@OS77835
CLRHI    DC    X'00000FFF'              CLEAR FOR ADDR TRANS   @OS77835
DISDLEOT EQU   X'01'                    FLAG TO WRITE DLE EOT
OUTPUT   EQU   X'01'                    DEB MASK OPEN OUTPUT
OUTONLY  EQU   X'03'                    OUTPUT ONLY DEVICE FLAG@OX13500
         AGO   .DSECTS                                           X03039
.VDSECTS ANOP                                                    X03039
         EJECT
         IFGACB                                                  X03039
         EJECT
         TLGBD                                                   X03039
         EJECT
.DSECTS  ANOP                                                    X03039
         TPRIOR
         TAVTD
         TPRFD
         DCBD  DSORG=TX
         TDISPD
         TLCBD
         TQCBD
         TSCBD
         TSTCBD
         TTRMD
         TTSID                                                      TSO
         TCCWD
         TDEBD
         MEND
./ ADD NAME=SRCH
         MACRO
&TAG     SRCH  &TREE,&A=,&K=,&Y=,&N=,&NULL=,&T=,&REL=,                 X
               &SARG=,&EQUAL=,&UNEQUAL=,&TYPE=,&KEYL=
.*A000000                                                        Y02147
.*  THE MEANINGS OF THE PARAMETERS FOR THE SRCH MACRO-INSTRUCTION ARE *
.*  AS FOLLOWS:                                                       *
.*--------------------------------------------------------------------*
.*  &TREE  IS THE ADDRESS OF THE RADIX PARTITION TREE.                *
.*         IF "TREE" IS CODED, WHERE "TREE" IS A SUITABLE OPERAND FOR *
.*         A LOAD ADDRESS INSTRUCTION, THE THE MAIN STORAGE LOCATION  *
.*         SO SPECIFIED IS PRESUMED TO CONTAIN THE ADDRESS OF THE RPT *
.*         AS RETURNED BY THE STREE MACRO-INSTRUCTION.                *
.*                                                                    *
.*         IF "(GPR)" IS CODED, THEN THE INDICATED REGISTER HAS THE   *
.*         ADDRESS OF THE RPT IN IT.                                  *
.*                                                                    *
.*         THE TREE ADDRESS IS LOADED INTO REGISTER 1 BY THE SRCH     *
.*         MACRO, SO THAT IF "(1)" IS CODED NO LOAD OR LR IS          *
.*         GENERATED.                                                 *
.*                                                                    *
.*         IF THE PARAMETER IS NOT CODED, THE MNOTE "TREE PARAMETER   *
.*         MISSING, ASSUMED IN R1." IS GENERATED WITH SEVERITY O, AND *
.*         THE ADDRESS OF THE RPT IS ASSUMED TO BE IN REGISTER 1.     *
.*--------------------------------------------------------------------*
.*  &T     IS THE TYPE OF THE RPT. SEE THE DESCRIPTION OF THE STREE   *
.*         MACRO INSTRUCTION FOR THE COMPLETE LIST OF OPERATIONS      *
.*         AVAILABLE WITH THE DIFFERENT TYPES OF TREES.               *
.*                                                                    *
.*        THE ONLY ALLOWED WAYS TO CODE THE T-PARAMETER ARE:          *
.*        T=5 FOR TYPE 5 RPT.                                         *
.*        T=8 FOR TYPE 8 RPT.                                         *
.*        IF THE T-PARAMETER IS NOT CODED A DEFAULT OF T=8 IS SUPPLIED*
.*--------------------------------------------------------------------*
.*  &A    SPECIFIES THE ADDRESS OF THE RECORD OR CONTROL BLOCK        *
.*        CONTAINING THE KEY TO BE USED IN THE SEARCH.                *
.*        THE A-PARAMETER, TOGETHER WITH THE K-PARAMETER, DEFINES     *
.*        THE SEARCH KEY.                                             *
.*                                                                    *
.*        IF "A=ADDRESS" IS CODED, WHERE "ADDRESS" IS A MAIN STORAGE  *
.*        LOCATION, THEN THE ADDRESS OF THE FIRST BYTE OF THE RECORD  *
.*        IS FORMED WITH A LOAD ADDRESS INSTRUCTION.                  *
.*                                                                    *
.*        IF "A=(GPR)" IS CODED, THEN THE ADDRESS OF THE FIRST BYTE   *
.*        OF THE RECORD IS IN THE SPECIFIED REGISTER.                 *
.*                                                                    *
.*--------------------------------------------------------------------*
.*  &K     SPECIFIES THE SEARCH KEY, WHEN TAKEN IN COMBINATION WITH   *
.*         THE A-PARAMETER. AT LEAST ONE OF THESE TWO PARAMETERS MUST *
.*         ALWAYS BE CODED, OR THE MNOTE "A OR K MUST BE CODED." IS   *
.*         GENERATED, WITH A SEVERITY CODE OF 12.                     *
.*                                                                    *
.*         THE FOLLOWING COMBINATIONS ARE VALID:                      *
.*         --- --------- ------------ --- ------                      *
.*                                                                    *
.*         "K=(DISPLACEMENT,LENGTH)", WHERE "DISPLACEMENT" IS EITHER  *
.*         A RELOCATABLE EXPRESSION OR A SELF-DEFINING ABSOLUTE       *
.*         DECIMAL NUMBER SPECIFYING EITHER THE ADDRESS OF BYTE ZERO  *
.*         OF THE KEY OR THE DISPLACEMENT FROM THE ADDRESS SPECIFIED  *
.*         BY THE A-PARAMETER TO THE FIRST BYTE OF THE KEY.           *
.*         "LENGTH" IS AN ABSOLUTE EXPRESSION GIVING THE LENGTH OF    *
.*         THE KEY. FOR TYPE 5 RPT, "LENGTH" IS A DECIMAL NUMBER.     *
.*                                                                    *
.*         FOR TYPE 5 RPT, THE KEY LENGTH CANNOT BE GREATER THAN 16.  *
.*         FOR TYPE 8 RPT, THE KEY LENGTH CANNOT BE GREATER THAN 256. *
.*                                                                    *
.*         IF THE A-PARAMETER IS CODED, THE ADDRESS OF THE FIRST      *
.*         BYTE OF THE KEY IS FORMED BY ADDING THE DISPLACEMENT TO THE*
.*         ADDRESS FROM THE A-PARAMETER. THE DISPLACEMENT MUST NOT    *
.*         EXCEED 4095.                                               *
.*                                                                    *
.*         IF THE A-PARAMETER IS CODED AND THE K-PARAMETER IS NOT     *
.*         CODED, THE THE K-PARAMETER IS ASSUMED TO BE THE SAME AS THE*
.*         K-PARAMETER THAT WAS CODED IN THE STREE MACRO WHEN THE RPT *
.*         WAS CREATED.                                               *
.*--------------------------------------------------------------------*
.*  &Y     IS THE ADDRESS TO BRANCH TO IF THE SEARCH KEY IS EQUAL TO  *
.*         THE KEY FOUND BY THE SEARCH.                               *
.*         IF  "Y=(GPR)" IS CODED, THEN THE ADDRESS TO BRANCH TO IF   *
.*         THEY ARE EQUAL IS IN THE SPECIFIED GPR.                    *
.*         IF THE  Y-PARAMETER IS NOT CODED, THEN EXECUTION CONTINUES *
.*         WITH THE NEXT INSTRUCTION AFTER THE SRCH MACRO.            *
.*--------------------------------------------------------------------*
.*  &N     IS THE ADDRESS TO BRANCH TO IF THE SEARCH KEY IS NOT EQUAL *
.*         TO THE KEY FOUND BY THE SEARCH. IT IS CODED THE SAME WAY   *
.*         THE  Y-PARAMETER IS CODED.                                 *
.*         NOTE THAT IF THE RPT HAS NO ENTRIES IN IT THE SEARCH KEY   *
.*         IS CONSIDERED NOT EQUAL.                                   *
.*--------------------------------------------------------------------*
.*  &NULL  IS THE ADDRESS TO BRANCH TO IF THERE ARE NO SINKS IN THE   *
.*         RPT. IT IS CODED IN THE SAME WAY AS THE N AND Y            *
.*         PARAMETERS. IF BOTH THE NULL AND N  PARAMETERS ARE CODED   *
.*         AND THE RPT IS EMPTY A BRANCH TO THE NULL ADDRESS IS TAKEN.*
.*                                                                    *
.*--------------------------------------------------------------------*
.*  &REL   IS A QUALIFIER SPECIFYING THE RELATIONSHIP BETWEEN THE     *
.*         SEARCH KEY AND THE KEY TO BE FOUND.                        *
.*                                                                    *
.*         THE REL PARAMETER IS CODED AS FOLLOWS:                     *
.*                                                                    *
.*             **  **     **               **   **  **                *
.*            **  **       **             **  LT **  **               *
.*           **   **  MAX  **             **  LE **   **              *
.*           **   **       **             **  EQ **   **              *
.*   REL=    **  **   MIN   **       ,,  **   --  **  **              *
.*           **   **  ---  **         ,,  **  GE **   **              *
.*           **   **       **         ,,  **  GT **   **              *
.*            **  **  POV  **        ,,   ** POV **  **               *
.*             **  **     **        ,,     **   **  **                *
.*                                 ,,                                 *
.*                                                                    *
.*         THUS "REL=(MAX,LE)" IMPLIES A SEARCH FOR THE LARGEST KEY   *
.*         THAT IS LESS THAN OR EQUAL TO THE SEARCH KEY.              *
.*                                                                    *
.*         WHEN THE REL PARAMETER IS CODED THE KEY LENGTH MUST BE     *
.*         CODED EXPLICTLY IN THE K PARAMETER.                        *
.*--------------------------------------------------------------------*
.*         WHEN "REL=(MAX/MIN,POV)" IS CODED, A SEARCH IS MADE TO FIND*
.*         THE LARGEST OR SMALLEST PARTIAL ORDER VALUE.               *
.*         WHEN "REL=(POV,GE)" IS CODED A SEARCH TO FIND A PARTIAL    *
.*         ORDER VALUE THAT IS GREATER THAN OR EQUAL TO THE SEARCH    *
.*         KEY, BUT IS THE SMALLEST THAT CAN BE SO DETERMINED         *
.*         EFFICIENTLY (NOT NECESSARILY THE SMALLEST POSSIBLE).       *
.*--------------------------------------------------------------------*
.*         ONLY THE FOLLOWING COMBINATIONS ARE VALID:                 *
.*                                                                    *
.*         REL=(MAX,LT/LE/EQ/POV)                                     *
.*         REL=(MIN,EQ/GE/GT/POV)                                     *
.*         REL=(POV,GE) MEANS FIND MIN POV>=KEY.                      *
.*--------------------------------------------------------------------*
.*         REL=(POV,EQ) MEANS FIND POV FOR THE SINK ADDRESSED BY THE  *
.*         CURRENT SETTING OF THE CURSOR.                             *
.*--------------------------------------------------------------------*
.*  &SARG      THESE ARE ONLY PRESENT FOR COMPATIBILITY WITH EARLIER  *
.*  &EQUAL     VERSIONS, AND SHOULD NOT BE USED.                      *
.*  &UNEQUAL                                                          *
.*  &TYPE                                                             *
.*  &KEYL                                                             *
         GBLC  &IGABLST  THE BEGINNING OF THE LIST OF ENTRY POINTS FOR *
                         THE RPT OPERATIONS.
         GBLC  &IGASRCH
         GBLC  &IGADDR   THE ADDRESS OF THE MODULE IGARPTXX.
         GBLC  &IGARPT#  THE RADIX PARTITION TREE TYPE.
         GBLA  &IGAPATH(16)  PATH VECTOR IN BIG PARSE TREE.
         GBLA  &IGALEVL      PATH LENGTH TO ATOM IN PARSE TREE.
         GBLA  &IGALEFT(256)  LEFT EDGE FIELDS IN PARSE TREE.
         GBLA  &IGARGHT(256)  RIGHT EDGE FIELDS IN PARSE TREE.
         GBLA  &IGAX  EOP TRIPLE FOR THE BINARY PARSE TREE WITH
         GBLA  &IGAY  SUBTRACTION INVERTIBLE EDGES GENERATED BY
         GBLA  &IGAZ  THE MACRO-INSTRUCTION RPTDSECT.
         GBLA  &IGAKEYL  THE LENGTH OF THE SEARCH KEY.
         GBLC  &IGAGPV  BRANCH ENTRY OFFSET TO GET THE PARTIAL ORDER
.*                      VALUE FOR THE CURSOR-SELECTED SINK (TYPE 9 RPT)
         GBLC  &IGAPVS  BRANCH ENTRY OFFSET TO THE ROUTINE IN IGARPT01
.*                      TO SEARCH FOR A PARTIAL ORDER VALUE THAT IS
.*                      GREATER THAN OR EQUAL TO THE SEARCH KEY.
         GBLC  &IGAEOPV  THE OFFSET TO THE PATH CODE BYTE IN THE TYPE 8*
                         RPT HEADER FOR THE PATH TO THE SINK CURRENTLY *
                         SELECTED BY THE CURSOR.
         GBLC  &IGACNT5  THE OFFSET TO THE USE COUNTER IN THE TYPE 5   *
                         RPT HEADER.
         GBLC  &IGAMSK5  THE OFFSET TO THE TABLE OF MASKS FOR TYPE 5   *
                         RPT.
         GBLC  &IGATOP5  THE OFFSET TO THE RPT SOURCE IN THE TYPE 5 RPT*
                         HEADER.
         GBLC  &IGAMAX   THE OFFSET TO THE WORD CONTAINING THE MAXIMUM *
                         PARTIAL ORDER VALUE.
         GBLC  &IGAKEYW  THE OFFSET TO THE WORD CONTAINING THE ADDRESS *
                         OF THE WORK AREA FOR COLLECTING KEYS.
         GBLB  &IGAOKAY  ON IF THE PARSE IN RPTDSECT DID NOT FIND ANY  *
                SYNTAX ERRORS IN THE R PARAMETER LIST.
         LCLA  &I        A LOCAL VARIABLE FOR KEEPING TRACK OF THE     *
                         CURRENT ENTRY BEING SCANNED IN THE R PARAMETER*
                         LIST.
         LCLA  &LNG      THE LENGTH OF THE CURRENT DISPLACEMENT-LENGTH *
                         PAIR.
         LCLC  &X        JUST A LOCAL CHARACTER VECTOR FOR COLLECTING  *
                         OPERANDS.
         LCLB  &FINEQU   ON IF THE EQUATE "FIN&SYSNDX EQU *" MUST BE   *
                         GENERATED AT THE END OF THE MACRO EXECUTION.
         LCLB  &ERROR    THIS BIT IS TURNED ON WHENEVER AN MNOTE OF    *
                         SUFFICIENT SEVERITY IS GENERATED.
         LCLB  &KLMNOTE  ON WHEN THE KEY LENGTH EXCEEDS 256 BYTES.
         LCLA  &DSP      THIS IS USED FOR COLLECTING THE DISPLACEMENT  *
                         AS A NUMBER.
         LCLC  &FIELD    THIS IS USED TO HOLD THE FIELD OF AN (F,L)    *
                         PAIR WHILE GETTING THE L.
         LCLB  &XFER     ON TO GENERATE THE MOVES WHEN IT IS THE RIGHT *
               ITERATION THROUGH THE LOOP.
         LCLA  &KL             KEY LENGTH ARITHMETIC VARIABLE.
         LCLA  &TMPA     A LOCAL ARITHMETIC TEMPORARY.
         LCLB  &WORKEY   ON IF THE KEY IS COLLECTED AT IGAWORK.
         LCLB  &USING    THIS BIT IS TURNED ON WHEN A USING WITH       *
                         REGISTER R1 IS GENERATED.
         LCLB  &FIN      ON IF THE FIN&SYSNDX EQU * IS TO BE GENERATED *
                         AT THE END.
         LCLC  &P,&C,&S,&GOLEFT,&ITSMOP,&ITSEOP,&TREEHDR,&ARG,&EKER
         LCLC  &EKE,&TOOBAD,&FOUR,&O
         LCLC  &R1       GENERAL REGISTER 1.
         LCLC  &TMP      A TEMPORARY LOCAL CHARACTER VECTOR.
         LCLC  &TMP0     A LOCAL TEMPORARY CHARACTER VARIABLE.
         LCLC  &TMP1     A TEMPORARY LOCAL CHARACTER VECTOR.
         AIF   ((K'&SARG EQ 0)AND(K'&EQUAL EQ 0)AND(K'&UNEQUAL EQ 0)AND*
               (K'&KEYL EQ 0)).NEW
         AIF   (K'&KEYL EQ 0).OLDKLZ  SEE IF THE OLD KEY LENGTH IS NOT *
                         GIVEN.
&TAG     SRCH  &TREE,A=&SARG,Y=&EQUAL,N=&UNEQUAL,T=&T,TYPE=&TYPE,K=(0, *
               &KEYL),NULL=&NULL,REL=&REL
         AGO   .END
.OLDKLZ  ANOP
         AIF   (K'&SARG LE 2).OLDONE  SEE IF THE SEARCH ARGUMENT IS NOT*
                         OF THE FORM "D(GPR)".
         AIF   (NOT(('&SARG'(1,1) LE '9')AND('&SARG'(1,1) GE '0'))).OLD*
               ONE       SEE IF IT NOT OF THE FORM "D(GPR)".
.**********************************************************************
.* THE OLD SEARCH ARGUMENT IS SPECIFIED AS "D(GPR)", TRANSLATE THIS   *
.* INTO A GOOD NEW FORMAT VIA THE MACRO RECURSION FACILITY.           *
.**********************************************************************
         AIF   ('&SARG'(K'&SARG,1) NE ')').OLDONE  HOWEVER, FIRST CHECK*
                         IT FOR VALIDITY.
&I       SETA  (1)       LOOK FOR THE LEFT PARENTHESIS.
.OLDLOOP ANOP
&I       SETA  (&I+1)    EKE THE INDEX TO THE NEXT CHARACTER.
         AIF   (&I GT (K'&SARG)).OLDONE  SEE IF THERE ISN'T ANY LEFT   *
                         PARENTHESIS.
         AIF   ('&SARG'(&I,1) NE '(').OLDLOOP  SEE IF IT IS STILL      *
                         GOING.
&TMP0    SETC  '&SARG'(1,&I-1)  PICK UP THE DISPLACEMENT FIELD.
&TMP1    SETC  '&SARG'(&I,K'&SARG-(&I+1))  GET THE GPR WITH ITS        *
                         SURROUNDING PARENTHESES.
&TAG     SRCH  &TREE,A=&TMP1,K=(&TMP0,),Y=&EQUAL,N=&UNEQUAL,T=&T,      *
               TYPE=&TYPE,NULL=&NULL,REL=&REL
         AGO   .END      ALL DONE NOW.
.OLDONE  ANOP
&TAG     SRCH  &TREE,A=&SARG,Y=&EQUAL,N=&UNEQUAL,T=&T,TYPE=&TYPE,      *
               NULL=&NULL,REL=&REL
         AGO   .END      ALL DONE NOW.
.NEW     ANOP
.**********************************************************************
.* CHECK THE TYPE AND T PARAMETERS TO SEE IF A VALID RPT TYPE IS      *
.* SPECIFIED. IF NEITHER IS SPECIFIED, ASSUME IT IS TYPE 8 RPT. THE   *
.* TYPE IS PUT INTO THE GLOBAL VARIABLE &IGARPT# AT THE END OF THE    *
.* TYPE CHECKING SECTION.                                             *
.**********************************************************************
.RPT#    AIF   (K'&T EQ 0).RPT#TMT  SEE IF THE T PARAMETER IS CODED.
         AIF   (K'&TYPE EQ 0).RPT#TCK  USE THE T PARAMETER IF IT IS    *
                         CODED AND THE TYPE PARAMETER IS NOT CODED.
.**********************************************************************
.* BOTH THE T AND TYPE PARAMETERS ARE CODED; SEE IF THEY ARE THE SAME,*
.* AND IF THEY ARE NOT THEN USE T.                                    *
.**********************************************************************
         AIF   ('&T' EQ '&TYPE').RPT#TCK  IF THEY ARE THE SAME THEN USE*
                         T.
         MNOTE 4,'TYPE CONFLICT, ONLY T OR TYPE SHOULD BE CODED.'
.RPT#TCK ANOP
&IGARPT# SETC  '&T'      GET THE RPT TYPE.
         AGO   .RPT#CHK  GO TO CHECK THE VALIDITY OF THE RADIX         *
                         PARTITION TREE TYPE.
.**********************************************************************
.* THE T PARAMETER IS NOT CODED, SEE IF THE TYPE PARAMETER IS CODED.  *
.**********************************************************************
.RPT#TMT AIF   (K'&TYPE EQ 0).RPT#8  IF BOTH ARE LEFT OUT USE TYPE 8   *
                         RPT.
&IGARPT# SETC  '&TYPE'   SET THE TYPE TO THE TYPE THAT IS SPECIFIED BY *
                         THE TYPE PARAMETER.
         AGO   .RPT#CHK  GO CHECK IT FOR VALIDITY.
.RPT#8   ANOP
&IGARPT# SETC  '8'       SET THE RPT TYPE TO 8.
.RPT#CHK AIF   (('&IGARPT#' EQ '8')OR('&IGARPT#' EQ '5')OR('&IGARPT#' E*
               Q '4')).RPT#FIN
         MNOTE 4,'INVALID RPT TYPE, TYPE 8 ASSUMED.'
&IGARPT# SETC  '8'       TAKE THE DEFAULT TYPE 8 RPT.
.RPT#FIN ANOP
      RPTDSECT T=&IGARPT#,DS=0  DON'T GENERATE THE BIG DSECT.
.**********************************************************************
         AIF   (K'&TREE NE 0).CHKGPR  SEE IF THE TREE ADDRESS IS CODED.
         MNOTE 0,'TREE PARAMETER MISSING, ASSUMED IN R1.'
         AGO   .CHKTAG  GO CHECK THE LABEL TO SEE IF EQU * NEEDED.
.CHKGPR  ANOP
         AIF   (K'&TREE EQ K'&TREE(1)+2 AND N'&TREE EQ 1).LW1
&TAG     L     1,&TREE   LOAD ADDRESS OF PARAMETER LIST.
         AGO   .LW2
.LW1     ANOP
         AIF   ('&TREE' NE '(1)').LW1F  SEE IF THE TREE ADDR IS IN GPR1
.CHKTAG  ANOP
         AIF   (K'&TAG EQ 0).LW1B  SINCE THERE IS NO LR, DOES IT HAVE
.*                                 TO GENERATE THE LABEL EQU * ?
&TAG     EQU   *
.LW1B    AGO   .LW2      DONE WITH LABEL AND TREE.
.LW1F    ANOP
&TAG     LR    1,&TREE(1)
.**********************************************************************
.* THE TREE ADDRESS IS NOW IN REGISTER 1.                             *
.**********************************************************************
.LW2     AIF   ((K'&A NE 0)OR(K'&K NE 0)).LW3  MAKE SURE THAT EITHER
.*             THE A OR K PARAMETER IS CODED.
         MNOTE 12,'A OR K MUST BE CODED.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
.LW3     ANOP
&R1      SETC  '1'  REGISTER 1 FOR USING STATEMENT.
.*--------------------------------------------------------------------*
.*  BRANCH OUT TO THE VARIOUS SEARCHES HERE.                          *
         AIF   ('&IGARPT#' EQ '8').SRCH8  SEE IF THIS IS A TYPE 8 RPT.
         AIF   ('&IGARPT#' EQ '5').SRCH5  SEE IF THIS IS A TYPE 5 RPT.
         MNOTE 12,'INVALID RPT TYPE, NO TYPE &IGARPT#.'
         MEXIT
.*--------------------------------------------------------------------*
.* SRCH8, USING THE SUBROUTINE IN IGARPT01.                           *
.*                                                                    *
.*       FOR SRCH8:                                                   *
.* 0. LEFT AND RIGHT INVERTIBLE EDGES, 3 BYTES LONG, EITHER OF THE    *
.*    SUBTRACTION OR EXCLUSIVE-OR TYPE.                               *
.* 1. NO SUCCESSOR PAIRING.                                           *
.* 2. MAXIMUM OF A 256-BYTE KEY IS SUPPORTED.                         *
.* 3. THE FLAG BITS ARE STORED WITH THE PREDECESSOR VERTEX.           *
.* 4. SCANNING FUNCTIONS ARE SUPPORTED WITH INVERTIBLE EDGES.         *
.*--------------------------------------------------------------------*
.SRCH8   ANOP
.**********************************************************************
.* CHECK THE REL PARAMETER TO SEE IF A PARTIAL ORDER VALUE IS         *
.* INVOLVED.                                                          *
.**********************************************************************
         AIF   (K'&REL NE 0).NOTPOV  SEE IF THE REL PARAMETER IS NOT   *
                         CODED.
         AIF   (N'&REL NE 1).TWOREL  SEE IF THERE ARE TWO ELEMENTS IN  *
                         THE REL PARAMETER.
         AIF   ('&REL(1)' EQ 'POV').POVGET  SEE IS THE SEARCH IS JUST  *
                         TO GET THE POV FROM THE CURRENT CURSOR        *
                         SETTING, OR USING THE KEY (IF THERE IS ONE).
         AGO   .NOTPOV   IT IS NOT A PARTIAL ORDER VALUE SEARCH.
.TWOREL  ANOP
         AIF   (('&REL(1)' EQ 'POV')OR('&REL(2)' EQ 'POV')).ITSAPOV    *
                         SEE IF A PARTIAL ORDER VALUE IS INVOLVED.
.NOTPOV  ANOP
.**********************************************************************
.* GENERATE THE ADDRESS OF THE SEARCH ARGUMENT IN REGISTER ZERO FOR   *
.* THE SEARCH SUBROUTINE IN THE MODULE IGARPT01.                      *
.* IF THE K PARAMETER IS NOT CODED JUST GO DIRECTLY TO .CHKA AND USE  *
.* THE ADDRESS SPECIFIED BY THE A PARAMETER.                          *
.* IF THE K PARAMETER IS CODED AND DEFINES A KEY CONSISTING OF MORE   *
.* THAN ONE FIELD, COLLECT IT AT IGAWORK IN THE TREE HEADER. THEN PUT *
.* THE ADDRESS OF IGAWORK IN REGISTER 0 FOR THE SEARCH.               *
.**********************************************************************
         AIF   (K'&K EQ 0).CHKA  SEE IF THERE IS NO SEARCH KEY         *
                         SPECIFIED.
.**********************************************************************
.* THE K PARAMETER HAS BEEN CHECKED AT THIS POINT, AND IS NOT THE     *
.* EMPTY STRING.                                                      *
.**********************************************************************
.LOOPAIR ANOP
&XFER    SETB  (1)       FOR THE SRCH MACRO ALWAYS GENERATE THE MOVES  *
                         ON THE SINGLE PASS THROUGH THIS PART.
&IGAKEYL SETA  0         INITIALIZE THE RECORD LENGTH TO ZERO.
         AIF   (N'&K EQ 2).KHAS2  SEE IF THERE ARE EXACTLY TWO ELEMENTS*
                         IN K ON PARENTHESIS LEVEL ONE.
         AIF   (N'&K NE 1).KMIXED  SEE IF THERE ARE MORE THAN TWO      *
                         ELEMENTS, FOR IF SO THE LIST CONSISTS OF A    *
                         SERIES OF FIELD NAMES OR (D,L) PAIRS.
.**********************************************************************
.* K HAS ONLY ONE ELEMENT ON LEVEL 1. FIND OUT WHICH OF THE FOLLOWING *
.* CASES APPLIES, AND TAKE THE INDICATED ACTION:                      *
.* IN THE FOLLOWING DISCUSSION, )F" MEANS A FIELD NAME, "D" MEANS     *
.* DISPLACEMENT, "L" MEANS LENGTH, AND "X" MEANS ANY STRING. THE D AND*
.* L FIELDS MUST BE SELF-DEFINING TERMS,.                             *
.* IF:   THEN:                                                        *
.* K=F   ENTER THE ROUTINE AT .KMIXED TO PROCESS A LIST OF PAIRS OF   *
.*       F'S AND (D,L) PAIRS, SINCE THIS CASE WILL BE TREATED AS A    *
.*       SINGLE FIELD NAME BY THAT ROUTINE.                           *
.* K=(F) THIS IS AN ERROR, BECAUSE OF THE POSSIBLE FUTURE USE OF THIS *
.*       FORM TO INDICATE THE ADDRESS OF A LIST OF DISPLACEMENT-LENGTH*
.*       PAIRS IN A REGISTER.                                         *
.* K=L   L IS THE LENGTH OF THE RECORD TO BE INSERTED. THE A PARMAETER*
.*       MUST BE CODED FOR THIS TO BE VALID, BECAUSE OTHERWISE THERE  *
.*       IS NO WAY TO FIND OUT WHERE THE RECORD IS THAT IS TO BE      *
.*       INSERTED.                                                    *
.* K=(L) THIS IS AN ERROR, BECAUSE OF THE POSSIBILITY THAT IN THE     *
.*       FUTURE I WILL WANT TO PUT THE ADDRESS OF A LIST OF           *
.*       DISPLACEMENT-LENGTH PAIRS IN A REGISTER.                     *
.* K=((X)) ENTER THE .KMIXED ROUTINE, SINCE IT LOOKS LIKE A LIST OF   *
.*       DISPLACEMENT-LENGTH PAIRS WITH ONLY ONE PAIR.                *
.*       ANYTHING ELSE IS INVALID, AND PRODUCES THE MNOTE 12,'INVALID *
.*       R-PARAMETER.'                                                *
.**********************************************************************
         AIF   ('&K'(1,1) NE '(').KNOTLP  SEE IF THERE ARE NO          *
                         PARENTHESES AROUND THE OPERAND.
         AIF   ('&K'(1,2) EQ '((').KMIXED  SEE IF THIS IS THE CASE     *
                         K=((X)).
         MNOTE 12,'A REGISTER CANNOT BE SPECIFIED FOR THE LIST OF DISPL*
               ACEMENT-LENGTH PAIRS.'
&ERROR   SETB  1         SET THE ERROR FLAG ON.
         AGO   .KFIN     END THIS PART.
.**********************************************************************
.* THIS MUST BE ONE OF THE TWO CASES K=F OR K=L.                      *
.**********************************************************************
.KNOTLP  ANOP
         AIF   (((T'&K(1) NE 'M')AND(T'&K(1) NE 'N')AND(T'&K(1) NE 'O')*
               AND(T'&K(1) NE 'T')AND(T'&K(1) NE 'W')AND(T'&K(1) NE '$'*
               )AND(T'&K(1) NE 'U'))).KMIXED
.* THIS MUST BE THE CASE WHERE "R=L" IS CODED.                        *
         AIF   (T'&K(1) NE 'N').K1NOTN  SEE IF IT IS A SELF-DEFINING   *
                         FIELD.
.**********************************************************************
.* K=L IS CODED, AND L IS A SELF-DEFINING TERM. USE L FOR THE RECORD  *
.* LENGTH, BUT FIRST CHECK TO SEE IF THE A PARAMETER IS CODED. IF THE *
.* A PARAMETER IS NOT CODED IT IS AN ERROR.                           *
.**********************************************************************
&IGAKEYL SETA  (&K(1))   GET THE RECORD LENGTH FROM THE L OF THE K     *
                         PARAMETER.
         AIF   (K'&A EQ 0).K1AMT  SEE IF THE A PARAMETER HAS BEEN LEFT *
                         OUT.
         AIF   (&IGAKEYL GT 256).K1LERR  FOR THE NONCE ONLY TAKE FIELDS*
                         THAT ARE LESS THAN 257 BYTES LONG.
         AIF   (NOT &XFER).KFIN  SEE IF THIS IS THE MVC GENERATION     *
                         LOOP, OR JUST THE VALIDATION AND ADDING UP    *
                         FIELD LENGTHS LOOP.
         AIF   ('&A'(1,1) EQ '(').K1AGPR  SEE IF THE ADDRESS IS IN A   *
                         GPR.
         LA    0,&A      ADDRESS OF SEARCH KEY.
         AGO   .KFIN     ALL DONE NOW.
.K1AGPR  AIF   ('&A' EQ '(0)').KFIN  SEE IF THE SEARCH KEY ADDRESS IS  *
                         ALREADY IN REGISTER 0.
         LR    0,&A(1)   ADDRESS OF SEARCH KEY.
         AGO   .KFIN     GO TO THE END OF THE K PARAMETER PROCESSING.
.**********************************************************************
.* FOLLOWING ARE THE MISCELLANEOUS ERROR MNOTES FROM THE SINGLE       *
.* ELEMENT CASE OF THE K PARAMETER.                                   *
.**********************************************************************
.K2LERR  ANOP
.K1LERR  MNOTE 12,'THE LENGTH OF EACH FIELD DEFINED BY K CANNOT EXCEED *
               256 BYTES.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON SO THE MVC'S DON'T GET  *
                         GENERATED.
         AGO   .KFIN
.K1AMT   MNOTE 12,'THE A PARAMETER MUST BE CODED WITH K AS CODED.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .KFIN
.K1NOTN  MNOTE 12,'THE LENGTH MUST BE A SELF-DEFINING TERM FOR THE K PA*
               RAMETER.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .KFIN
.**********************************************************************
.* THE K PARAMETER HAS EXACTLY TWO ELEMENTS IN IT ON LEVEL 1. SEE IF  *
.* EITHER OF THESE TWO ELEMENTS STARTS WITH A LEFT PARENTHESIS, WHICH *
.* MEANS ONE OF THE CASES K=(X,(X)), K=((X),X), OR K=((X),(X)). IF IT *
.* IS ONE OF THESE CASES ENTER THE MIXED ROUTINE AT .KMIXED.          *
.* IF IT IS NOT ONE OF THOSE THREE CASES, THEN IT MUST BE ONE OF THE  *
.* CASES K=(F,F), K=(F,L), OR K=(D,L). NOTE THAT THE CASE K=(D,L) CAN *
.* BE CODED AS K=(,L).                                                *
.**********************************************************************
.KHAS2   AIF   (K'&K(2) NE 0).K2NOTMT  SEE IF THE SECOND ELEMENT IS THE*
                         EMPTY STRING. THIS IS NO GOOD.
         MNOTE 12,'THE SECOND ELEMENT OF A DISPLACEMENT-LENGTH PAIR MUS*
               T BE CODED.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN      FORGET IT, CAN'T DO ANYTHING WITH AN EMPTY    *
                         STRING FOR THE LENGTH.
.K2DMT   ANOP
&DSP     SETA  (0)       SET THE DISPLACEMENT TO ZERO, SINCE IT IS     *
                         CODED AS THE EMPTY STRING.
         AGO   .K2MERGE  MERGE WITH THE CASE WHERE THE DISPLACEMENT IS *
                         NOT THE EMPTY STRING.
.K2NOTMT AIF   (K'&K(1) EQ 0).K2DMT  SEE IF THE DISPLACEMENT IS THE    *
                         EMPTY STRING.
         AIF   (('&K(1)'(1,1) EQ '(')OR('&K(2)'(1,1) EQ '(')).KMIXED   *
                         LOOK FOR ONE OF THE CASES K=(X,(X)), K=((X),  *
                         X), OR K=((X),(X)).
         AIF   (((T'&K(2) NE 'M')AND(T'&K(2) NE 'N')AND(T'&K(2) NE 'O')*
               AND(T'&K(2) NE 'T')AND(T'&K(2) NE 'W')AND(T'&K(2) NE '$'*
               )AND(T'&K(2) NE 'U'))).KMIXED
.* THE SECOND ELEMENT IS NOT A FIELD NAME, SO IT MUST EITHER BE ONE OF*
.* THE TWO CASES K=(F,L) OR K=(D,L), OR IT IS AN ERROR.               *
&IGAKEYL SETA  0         ALLOW THE CASE WHERE THE LENGTH IS LEFT OUT   *
                         WHEN THERE IS ONLY ONE DISPLACEMENT.
         AIF    (K'&K EQ 0).MERGEK2  SEE IF THE LENGTH IS ELIDED.
         AIF   ((T'&K(1) NE 'M')AND(T'&K(1) NE 'N')AND(T'&K(1) NE 'O')A*
               ND(T'&K(1) NE 'T')AND(T'&K(1) NE 'W')AND(T'&K(1) NE '$')*
               AND(T'&K(1) NE 'U')).K2F1
         AIF   (T'&K(1) EQ 'N').K2D  SEE IF THE DISPLACEMENT IS A SELF-*
               DEFINING TERM.
&I       SETA  (K'&K(1)) THE DISPLACEMENT IS NOT A SELF-DEFINING TERM,
.K2DCHK  AIF   (('&K(1)'(&I,1) LT '0')OR('&K(1)'(&I,1) GT '9')).K2DTYPE
&I       SETA  (&I+1)    SEE IF IT IS A DECIMAL NUMBER ANYWAY.
         AIF   (&I GT 0).K2DCHK  THIS IS NECESSARY BECAUSE OF THE WAY  *
               ASSEMBLER F DOES NOT RECORD THE CORRECT TYPE ATTRIBUTE  *
               OF OPERANDS PASSED IN A SUBLIST VIA MACRO-RECURSION.
         AIF   (K'&K(1) GT 4).K2DERR  SEE IF IT HAS TOO MANY DIGITS.
.K2D     ANOP
&DSP     SETA  (&K(1))   PICK UP THE DISPLACEMENT.
.K2MERGE ANOP
         AIF   (T'&K(2) EQ 'N').K2L  SEE IF IT IS A SELF-DEFINING TERM.
&I       SETA  (K'&K(2))  SET THE INDEX TO IT'S INITIAL VALUE.
         AIF   (K'&K(2) EQ 0).K2LERR SEE IF IT IS THE EMPTY STRING.
.K2LCHK  AIF   (('&K(2)'(&I,1) LT '0')OR('&K(2)'(&I,1) GT '9')).K2LTYPE
&I       SETA  (&I-1)    DECREASE THE INDEX TO THE NEXT CHARACTER.
         AIF   (&I GT 0).K2LCHK  SEE IF THERE ARE MORE TO CHECK.
         AIF   (K'&K(2) GT 4).K2LERR  SEE IF IT HAS TOO MANY DIGITS.
.K2L     ANOP
&IGAKEYL SETA  (&K(2))   GET THE LENGTH AS A NUMBER.
.MERGEK2 ANOP
         AIF   (&IGAKEYL GT 256).K1LERR  SEE IF THE LENGTH IS MORE THAN*
                         256 BYTES.
         AIF   (&DSP GT 4095).K2DERR  SEE IF THE DISPLACEMENT IS       *
                         GREATER THAN 4095.
         AIF   (K'&A EQ 0).K1AMT  SEE IF THE A PARAMETER IS LEFT OUT;  *
                         THAT IS BAD.
         AIF   (NOT &XFER).KFIN  SEE IF THIS IS THE MVC GENERATING LOOP*
                         OR NOT.
.**********************************************************************
.* THERE IS ONLY ONE FIELD SPECIFIED FOR THE KEY; PUT ITS ADDRESS IN  *
.* REGISTER 0 FOR THE SEARCH SUBROUTINE IN IGARPT01.                  *
.**********************************************************************
         AIF   ('&A'(1,1) EQ '(').K2AGPR  SEE IF THE ADDRESS IS IN A   *
                         GPR.
         AIF   (&DSP EQ 0).K2SZDSP  SEE IF THE DISPLACEMENT IS ZERO.
         LA    0,&DSP+&A  ADDRESS OF SEARCH KEY.
         AGO   .KFIN
.K2SZDSP LA    0,&A      ADDRESS OF SEARCH KEY.
         AGO   .KFIN     ALL DONE WITH THE A AND K NOW.
.K2AGPR  AIF   (&DSP EQ 0).K2RZDSP  SEE IF THE DISPLACEMENT IS ZERO.
         LA    0,&DSP&A  ADDRESS OF SEARCH KEY.
         AGO   .KFIN
.K2RZDSP AIF   ('&A' EQ '(0)').KFIN  SEE IF THE ADDRESS IS ALREADY IN  *
                         REGISTER 0.
         LR    0,&A(1)   ADDRESS OF SEARCH KEY.
         AGO   .KFIN     ALL DONE GETTING THE ADDRESS OF THE SEARCH KEY*
                         IN REGISTER 0.
.**********************************************************************
.* IT IS AN (F,L) PAIR, NOW SEE IF THE SECOND ELEMENT IS A VALID L.   *
.**********************************************************************
.K2F1    AIF   (T'&K(2) EQ 'N').K2F  SEE IF IT IS A SELF-DEFINING TERM.
&I       SETA  (K'&K(2))  SET THE INDEX TO IT'S INITIAL VALUE.
.K2FCHK  AIF   (('&K(2)'(&I,1) LT '0')OR('&K(2)'(&I,1) GT '9')).K2LTYPE
&I       SETA  (&I+1)    EKE THE INDEX TO THE NEXT CHARACTER.
         AIF   (&I GT 0).K2FCHK  SEE IF THERE ARE MORE TO CHECK.
         AIF   (K'&K(2) GT 4).K2LERR  SEE IF IT HAS TOO MANY DIGITS.
.K2F     ANOP
&IGAKEYL SETA  (&K(2))   GET THE LENGTH OF THE (F,L) PAIR.
         AIF   (&IGAKEYL GT 256).K1LERR  SEE IF THE LENGTH OF THE FIELD*
                         IS MORE THAN 256.
         AIF   (NOT &XFER).KFIN  SEE IF THIS IS THE MOVE GENERATION    *
                         LOOP.
         AIF   (K'&A EQ 0).AISNT  SEE IF A ISN'T.
         MNOTE 4,'THE A PARAMETER IS REDUNDANT.'
.AISNT   LA    0,&K(1)   ADDRESS OF SEARCH KEY.
         AGO   .KFIN     ALL DONE NOW, GO CHECK FOR THE MOVE GENERATION*
                         ITERATION.
.**********************************************************************
.* THE FOLLOWING ARE THE SUNDRY MNOTES FOR THE TWO ELEMENT CASE FOR   *
.* THE K PARAMETER.                                                   *
.**********************************************************************
.K2DERR  MNOTE 12,'DISPLACEMENT IN K PARAMETER CANNOT EXCEED 4095.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .KFIN
.K2DTYPE MNOTE 12,'THE DISPLACEMENT IN K MUST BE A SELF-DEFINING TERM.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON TO PREVENT THE MVC      *
                         GENERATION.
         AGO   .KFIN
.K2LTYPE MNOTE 12,'THE LENGTH IN K MUST BE A SELF-DEFINING TERM.'
&ERROR   SETB  1         SET THE ERROR FLAG ON.
         AGO   .KFIN
.**********************************************************************
.* THE K PARAMETER CONSISTS OF A LIST OF MIXED PAIRS OF FIELDS AND    *
.* DISPLACEMENT-LENGTH PAIRS. PICK OUT ALL THESE AND CHECK THEM FOR   *
.* VALIDITY, WHILE ADDING UP ALL THE LENGTHS OF THE INDIVIDUAL FIELDS *
.* FOR THE MOVES TO IGAWORK, AND (POSSIBLY) FOR USE IN THE REL        *
.* PARAMETER LATER.                                                   *
.**********************************************************************
.* THIS IS THE SECTION TO PROCESS A MIXED LIST OF FIELD NAMES AND (D  *
.* ,L) PAIRS. PARSE THE OPERAND USING THE PARSE IN THE RPTDSECT       *
.* MACRO-INSTRUCTION, AND CHECK THE VARIABLE &IGAOKAY TO SEE IF THERE *
.* ARE NO SYNTAX ERRORS IN THE K PARAMETER.                           *
.**********************************************************************
.KMIXED  ANOP
      RPTDSECT SCAN=PARSE,LIST=&K  PARSE THE OPERAND.
         AIF   (&IGAOKAY).KMXOK  SEE IF THE PARSE DETECTED BAD SYNTAX.
         MNOTE 12,'INVALID SYNTAX IN THE K PARAMETER.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .KFIN     CAN'T DO ANYTHING WITH THIS.
.**********************************************************************
.* THE SYNTAX APPEARS TO BE OK, NOW START SCANNING OUT THE ATOMS ONE  *
.* AT A TIME, ANALYZING EACH ONE INDIVIDUALLY IN CONTEXT WITH THE ONES*
.* ON EITHER SIDE OF IT.                                              *
.**********************************************************************
.KMXOK RPTDSECT SCAN=ISCAN  INITIALIZE FOR SUBSEQUENT SCANNING OF      *
                         ATOMS.
         L     15,(&IGAKEYW+&IGABLST)(,1)   ADDR OF W.A. TO COLLECT THE
         BALR  14,0      SEARCH KEY OR THE ADDRESS OF A ROUTINE IN THE
         LTR   0,15      MODULE IGARPT01 TO GET AN AREA TO USE FOR
&WORKEY  SETB  (1)       ON TO INDICATE THAT THE KEY HAS BEEN COLLECTED*
                         AT IGAWORK.
         BCR   4,15      COLLECTING THE SEARCH KEY.
.KMXMOR RPTDSECT SCAN=NEXT  GET THE CURSOR POSITIONED AT THE NEXT ATOM.
.KMXCHK  AIF   (&IGAX EQ 0).KFIN  SEE IF THERE ARE ANY MORE TO DO.
         AIF   (&IGALEVL EQ 2).KMXLVL2  SEE IF THIS ATOM IS ON LEVEL 2.
         AIF   (&IGALEVL LE 1).KMXL01  SEE IF THIS ATOM IS ON LEVEL 0  *
                         OR 1.
.**********************************************************************
.* THE CURRENT ATOM HAS TOO MANY LEVELS OF PARENTHESES AROUND IT, GIVE*
.* THE ERROR MESSAGE AND GO LOOK FOR THE NEX THING THAT CHANGES LEVEL *
.* 1 IN THE PATH VECTOR.                                              *
.**********************************************************************
&I       SETA  &IGAPATH(1)+1  SET &I TO THE CURRENT OPERAND NUMBER.
         MNOTE 12,'TOO MANY () LEVELS IN OPERAND &I OF R.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
.**********************************************************************
.* AN ERROR HAS BEEN DETECTED AND FLAGGED IN THE CURRENT OPERAND. SCAN*
.* OVER TO THE NEXT ATOM THAT IS NOT PART OF THE CURRENT ENTRY ON     *
.* LEVEL 1 IN THE PARAMETER.                                          *
.**********************************************************************
.SYNC    ANOP
&I       SETA  &IGAPATH(1)  SET &I TO THE INDEX OF THE OPERAND ON LEVEL*
                         1.
      RPTDSECT SCAN=NEXT  SET THE CURSOR TO THE NEXT ONE.
         AIF   (&IGAX EQ 0).KFIN  SEE IF THERE AREN'T ANY MORE.
         AIF   (&I EQ &IGAPATH(1)).SYNC  SEE IF IT IS STILL ON THE SAME*
                         ONE.
         AGO   .KMXCHK   FINALLY GOT THE NEXT ATOM, NOW GO CHECK IT FOR*
                         VALIDITY.
.**********************************************************************
.* THE CURRENT ATOM IS ON LEVEL 0 OR 1. THEREFORE IT SHOULD BE A VALID*
.* FIELD NAME; SEE IF IT IS.                                          *
.**********************************************************************
.KMXL01  ANOP
.KMX01   ANOP
&I       SETA  (1+&IGAPATH(1))  SET &I TO THE 1-ORIGIN INDEX OF THE    *
                         FIELD NAME ON LEVEL 1.
         AIF   ((T'&K(&I) NE 'M')AND(T'&K(&I) NE 'N')AND(T'&K(&I) NE 'O*
               ')AND(T'&K(&I) NE 'T')AND(T'&K(&I) NE 'W')AND(T'&K(&I) N*
               E '$')AND(T'&K(&I) NE 'U')).KMX01OK
         MNOTE 12,'OPERAND &I OF K DOES NOT HAVE THE PROPER TYPE ATTRIB*
               UTE.'
&ERROR   SETB  (1)       SET THE ERROR FLAG.
         AGO   .SYNC     GO POSITION THE CURSOR TO THE NEXT ONE.
.**********************************************************************
.* THE CURRENT ATOM LOOKS LIKE A VALIID FIELD NAME, GET ITS LENGTH    *
.* ATTRIBUTE AND SEE IF IT ACCEPTABLE.                                *
.**********************************************************************
.KMX01OK ANOP
&LNG     SETA  (L'&K(&I))  CAPTURE IT AS A NUMBER.
         AIF   (&LNG LE 256).KMX0LOK  SEE IF IT EXCEEDS 256.
         MNOTE 12,'THE LENGTH OF FIELD &I OF K EXCEEDS 256 BYTES.'
&ERROR   SETB  (1)       SET TEH ERROR FLAG.
         AGO   .SYNC     GO LOOK AT THE NEXT ONE.
.KMX0LOK ANOP
.**********************************************************************
.* NOW SEE IF THIS IS THE MOVE GENERATION ITERATION.                  *
.**********************************************************************
         AIF   (NOT &XFER).KX0M  GO IF THIS ISN'T THE MOVE GENERATION  *
                         ITERATION.
         MVC   &IGAKEYL.(&LNG,15),&K(&I)         MOVE SUBKEY.
.KX0M    ANOP
&IGAKEYL SETA  (&IGAKEYL+&LNG)  EKE THE CUMMULATIVE RECORD LENGTH.
         AIF   (&IGAKEYL LE 256).KMXMOR  SEE IF THE KEYL LENGTH IS     *
                         STILL LESS THAN 257.
         AIF   (&KLMNOTE).KMXMOR  SEE IF THE MNOTE HAS ALREADY BEEN    *
                         GENERATED.
&KLMNOTE SETB  (1)       SET THE BIT ON SO THE MNOTE ONLY GETS         *
                         GENERATED ONCE.
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         MNOTE 12,'KEY LENGTH EXCEEDS 256 BYTES.'
         AGO   .KMXMOR   GO LOKK FOR THE NEXT ONE.
.**********************************************************************
.* THE CURRENT ATOM IS ON LEVEL 2. IT MUST THEREFORE BE THE FIRST     *
.* ELEMENT IN ONE OF THE CASES (F,L) OR (D,L).                        *
.* FIND OUT WHETHER THE CURRENT ATOM IS AN F OR A D.                  *
.**********************************************************************
.KMXLVL2 ANOP
&X       SETC  '0'       SET THIS FOR THE CASE WHERE THE DISPLACEMENT  *
                         IS AN EMPTY STRING.
         AIF   (&IGAZ EQ 0).KMGDSP  GO IF IT IS AN EMPTY STRING, WHICH *
                         MEANS A DISPLACEMENT OF 0.
.**********************************************************************
.* SEE IF ALL THE CHARACTERS IN THE CURRENT ATOM ARE DIGITS 0 THROUGH *
.* 9, WHICH WOULD MAKE IT A SELF-DEFINING DECIMAL TERM.               *
.**********************************************************************
&I       SETA  0         INITIALIZE THE INDEX OF THE CURRENT CHARACTER *
                         IN THE ATOM.
.KMCONT  AIF   (('&K'(&IGALEFT(&IGAZ)+&I,1) LT '0')OR('&K'(&IGALEFT(&IG*
               AZ)+&I,1) GT '9')).KMNOTD
&I       SETA  (&I+1)    EKE THE INDEX.
         AIF   (&I LT &IGARGHT(&IGAZ)).KMCONT  KEEP GOING UNTIL ALL    *
                         DIGITS HAVE BEEN EXAMINED.
         AIF   (&IGARGHT(&IGAZ) GT 4).KMXBADD  SEE IF THE DISPLACEMENT *
                         HAS TOO MANY BYTES IN IT.
&X       SETC  '&K'(&IGALEFT(&IGAZ),&I)  GET THE DISPLACEMENT AS A     *
                         NUMBER.
.KMGDSP  ANOP
&DSP     SETA  (&X)      GET THE NUMBER NOW.
         AIF   (&DSP GT 4095).KMXDBAD  SEE IF THE DISPLACEMENT IS TOO  *
                         BIG.
.**********************************************************************
.* THE CURRENT ATOM IS A VALID DISPLACEMENT OF A (D,L) PAIR, AND ITS  *
.* ARITHMETIC VALUE IS IN THE APPROPRIATE RANGE OF VALUES FOR A       *
.* DISPLACEMENT. ITS VALUE HAS BEEN CAPTURED IN &DSP. NOW LOOK FOR THE*
.* CORRESPONDING L OF THE PAIR.                                       *
.**********************************************************************
&I       SETA  (&IGAPATH(1))  SAVE THE CURRENT ATOM LEVEL 1 INDEX.
      RPTDSECT SCAN=NEXT  POSITION THE CURSOR TO THE NEXT ATOM.
         AIF   (&IGAX EQ 0).KMXNOLL  SEE IF THERE ISN'T ANY L FOR IT   *
                         BECAUSE THERE AREN'T ANY MORE ATOMS.
         AIF   (&IGAPATH(1) NE &I).KMXNOL  SEE IF THE NEXT ATOM IS PART*
                         OF A DIFFERENT ELEMENT ON LEVEL 1.
         AIF   (&IGALEVL NE 2).KMXPRN  SEE IF THERE ARE TOO MANY LEVELS*
                         OF PARENTHESES.
         AIF   (&IGAZ EQ 0).KMXLBAD  SEE IF THE L ATOM IS THE EMPTY    *
                         STRING.
.**********************************************************************
.* THERE IS A NEXT ATOM IN THE SAME PAIR, NOW CHECK IT TO SEE IF IT IS*
.* A SELF-DEFINING DECIMAL TERM.                                      *
.**********************************************************************
&I       SETA  0  INITIALIZE THE INDEX OF THE CURRENT BYTE IN THE ATOM.
.KMCNT1  AIF   (('&K'(&IGALEFT(&IGAZ)+&I,1) LT '0')OR('&K'(&IGALEFT(&IG*
               AZ)+&I,1) GT '9')).KMXBADL
&I       SETA  (&I+1)    EKE THE INDEX TO THE NEXT BYTE.
         AIF   (&I LT &IGARGHT(&IGAZ)).KMCNT1  KEEP LOOKING UNTIL ALL  *
                         THE BYTES ARE EXAMINED.
         AIF   (&IGARGHT(&IGAZ) GT 4).KMXLERR  SEE IF THE LENGTH IS    *
                         MORE THAN 4 CHARACTERS.
&X       SETC  '&K'(&IGALEFT(&IGAZ),&IGARGHT(&IGAZ))  GET THE LENGTH.
&LNG     SETA  (&X)      TURN IT INTO A NUMBER.
         AIF   (&LNG GT 256).KMXLERR  SEE IF IT IS TOO BIG TO DO WITH  *
                         AN MVC.
.**********************************************************************
.* THE DISPLACEMENT OF THE DISPLACEMENT-LENGTH PAIR IS AT &DSP, AND   *
.* THE LENGTH IS AT &LNG. CHECK THE A PARAMETER TO SEE IF IT IS CODED,*
.* BECAUSE IF IT ISN'T CODED THERE IS NO WAY TO FIND OUT WHERE THE    *
.* RECORD REALLY IS.                                                  *
.**********************************************************************
         AIF   (K'&A EQ 0).KMXAMT  SEE IF IT ISN'T THERE.
.* NOW GENERATE THE MOVE OF THE FIELD IF THIS IS THE MOVE GENERATION  *
.* ITERATION.                                                         *
         AIF   (NOT &XFER).KMOVED  SEE IF IT ISN'T THE MOVE GENERATION *
                         ITERATION.
&X       SETC  ''        SET IT UP FOR THE ADDRESS IN A REGISTER.
         AIF   ('&A'(1,1) EQ '(').KMAGPR  GO IF THE ADDRESS IS IN A    *
                         REGISTER.
&X       SETC  '+'       SET IT UP FOR THE CASE EHERE THE ADDRESS IS   *
                         SUPPLIED IN THE FORM OF A LABEL.
.KMAGPR  MVC   &IGAKEYL.(&LNG,15),&DSP&X&A            MOVE SUBKEY.
.KMOVED  ANOP
&IGAKEYL SETA  (&IGAKEYL+&LNG)  EKE THE CUMMULATIVE RECORD LENGTH.
         AIF   (&IGAKEYL LE 256).STILLOK  SEE IF THE CUMMULATIVE KEY   *
                         LENGTH HAS GONE OVER 256 BYTES.
         AIF   (&KLMNOTE).STILLOK  SEE IF THE MNOTE HAS ALREADY BEEN   *
                         GENERATED.
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
&KLMNOTE SETB  (1)   SET IT ON SO THE MNOTE HAS ALREADY BEEN GENERATED.
         MNOTE 12,'KEY LENGTH IS TOO BIG   256 BYTES IS MAX.'
.STILLOK ANOP
.**********************************************************************
.* NOW SET THE CURSOR TO THE NEXT ATOM, AND SEE IF THE FIRST ELEMENT  *
.* IS PART OF THE SAME ELEMENT ON LEVEL 1 AS THE LAST (D,L) PAIR.     *
.**********************************************************************
&I       SETA  &IGAPATH(1)  PRESERVE THE CURRENT LEVEL 0 INDEX.
      RPTDSECT SCAN=NEXT  POSITION THE CURSOR TO THE NEXT ATOM.
         AIF   (&IGAX EQ 0).KFIN  GO IF THERE ISN'T ANY NEXT ATOM.
         AIF   (&I EQ &IGAPATH(1)).KMXSAME  SEE IF THE LEVEL 1 ELEMENT *
                         IN THE PATH VECTOR DIDN'T CHANGE.
         AGO   .KMXCHK   GO CHECK THE NEXT ATOM, IT ISN'T PART OF THE  *
                         LAST TWO.
.**********************************************************************
.* THE FOLLOWING ARE SUNDRY MNOTES FROM THE PROCESSING OF A LIST OF   *
.* MIXED PAIRS WHERE THE PAIRS ARE OF THE FORM (D,L).                 *
.**********************************************************************
.KMXSAME ANOP
&I       SETA  (&IGAPATH(1)+1)  SET &I TO THE CURRENT OPERAND #.
         MNOTE 12,'TOO MANY ELEMENTS IN SUBLIST OPERAND &I IN R.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC     GO LOOK FOR THE NEXT ONE.
.KMXAMT  ANOP
&I       SETA  (1+&IGAPATH(1))  GET THE CURRENT OPERAND NUMBER.
         MNOTE 12,'THE A PARAMETER MUST BE CODED TO USE A (D,L) PAIR FO*
               R K(&I).'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC     GO LOOK FOR THE NEXT ONE.
.KMXLERR ANOP
&I       SETA  (&IGAPATH(1)+1)  GET THE CURRENT OPERAND NUMBER.
         MNOTE 12,'THE LENGTH OF THE FIELD DEFINED BY K(&I) EXCEEDS 256*
                BYTES.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC     GO LOOK AT THE NEXT ONE.
.KMXBADL ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'THE LENGTH FOR K(&I) MUST BE A SELF-DEFINING DECIMAL*
                NUMBER.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KMXLBAD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'THE LENGTH FOR K(&I) CANNOT BE THE EMPTY STRING.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KMXNOL  ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'LENGTH OF (D,L) PAIR MISSING IN K(&I).'
&ERROR   SETB  (1)
         AGO   .KMXCHK   GO CHECK THE CURRENT ATOM FOR VALIDITY.
.KMXNOLL ANOP
         MNOTE 12,'LENGTH OF LAST (D,L) PAIR IN K IS MISSING.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .KFIN
.KMXPRN  ANOP
&I       SETA  (&IGAPATH(1)+1)
         MNOTE 12,'TOO MANY () LEVELS IN K(&I).'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .SYNC
.KMXBADD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'DISPLACEMENT IN K(&I) EXCEEDS 4 DIGITS.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KMXDBAD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'DISPLACEMENT IN K(&I) EXCEEDS 4095.'
&ERROR   SETB  (1)
         AGO   .SYNC
.**********************************************************************
.* THE CURRENT ATOM IS AN F OF A (F,L) PAIR.                          *
.**********************************************************************
.KMNOTD  AIF   (&IGARGHT(&IGAZ) LE 8).KMXBIGF  SEE IF THE STRING IS    *
                         BIGGER THAN 8 CHARACTERS.
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'FIELD NAME IN K(&I) IS BIGGER THAN 8 CHARACTERS.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KMXBIGF ANOP
&FIELD   SETC  '&K'(&IGALEFT(&IGAZ),&IGARGHT(&IGAZ))  GET THE FIELD    *
                         NAME.
.* NOW TRY TO GET THE L OF THE (F,L) PAIR.                            *
&I       SETA  (&IGAPATH(1))  PRESERVE THE CURRENT LEVEL 1 INDEX.
      RPTDSECT SCAN=NEXT  POSITION THE CURSOR TO THE NEXT ATOM.
         AIF   (&IGAX EQ 0).KFLNOL  SEE IF THERE IS NO LENGTH BECAUSE  *
                         THERE ISN'T ANY NEXT ATOM.
         AIF   (&IGAPATH(1) NE &I).KFNOL  SEE IF THE NEXT ATOM IS NOT  *
                         PART OF THE SAME PAIR.
         AIF   (&IGALEVL NE 2).KFNOLL  SEE IF THE NEXT ATOM HAS TOO    *
                         MANY () LEVELS.
         AIF   (&IGAZ EQ 0).KFLMT  SEE IF THE LENGTH ATOM IS THE EMPTY *
                         STRING.
.**********************************************************************
.* THE CURRENT ATOM IS INDEED THE SECOND ELEMENT OF A (F,X) PAIR. NOW *
.* LET'S SEE IF X IS A VALID L.                                       *
.**********************************************************************
         AIF   (&IGARGHT(&IGAZ) GT 3).KFLLBAD  SEE IF THE LENGTH ATOM  *
                         IS MORE THAN 3 DIGITS.
&I       SETA  0         INITIALIZE THE INDEX OF THE CURRENT BYTE.
.KMXCNT2 AIF   (('&K'(&IGALEFT(&IGAZ)+&I,1) LT '0')OR('&K'(&IGALEFT(&IG*
               AZ)+&I,1) GT '9')).KFLBAD
&I       SETA  (&I+1)    STEP OVER TO THE NEXT DIGIT.
         AIF   (&I LT &IGARGHT(&IGAZ)).KMXCNT2  KEEP GOING UNTIL ALL   *
                         THE DIGITS HAVE BEEN SCANNED.
&X       SETC  '&K'(&IGALEFT(&IGAZ),&IGARGHT(&IGAZ))  EXTRACT THE      *
                         LENGTH.
&LNG     SETA  (&X)      CONVERT IT TO A NUMBER.
         AIF   (&LNG GT 256).KFBADL  SEE IF THE LENGTH EXCEEDS 256     *
                         BYTES.
.**********************************************************************
.* IT LOOKS LIKE A VALID (F,L) PAIR; GENERATE THE MOVE IF THIS IS THE *
.* MOVE GENERATION ITERATION.                                         *
.**********************************************************************
         AIF   (NOT &XFER).KMOVED  GO IF IT IS NOT THE MOVE ITERATION.
         MVC   &IGAKEYL.(&LNG,15),&FIELD         MOVE SUBKEY.
         AGO   .KMOVED   MERGE WITH THE COMMON PATH.
.**********************************************************************
.* THE FOLLOWING ARE SUNDRY MNOTES FOR THE (F,L) CASE IN A MIXED LIST.*
.**********************************************************************
.KFBADL  ANOP
&I       SETA  (&IGAPATH(1)+1)
         MNOTE 12,'LENGTH IN OPERAND &I OF K EXCEEDS 256 BYTES.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KFLBAD  ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'THE LENGTH IN OPERAND K(&I) IS NOT A SELF-DEFINING D*
               ECIMAL NUMBER.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KFLLBAD ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'LENGTH IN OPERAND K(&I) IS MORE THAN 3 DIGITS.'
&ERROR   SETB  (1)
         AGO   .SYNC
.KFLMT   ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'LENGTH IN OPERAND &I OF K CANNOT BE THE EMPTY STRING*
               .'
&ERROR   SETB  (1)
         AGO   .SYNC
.KFNOL   ANOP
         MNOTE 12,'LENGTH OF (F,L) PAIR IN OPERAND &I OF K IS MISSING.'
&ERROR   SETB  (1)
         AGO   .KMXCHK
.KFNOLL  ANOP
&I       SETA  (1+&IGAPATH(1))
         MNOTE 12,'TOO MANY () LEVELS IN K(&I).'
         AGO   .SYNC
.KFLNOL  MNOTE 12,'LENGTH OF LAST (FIELD,LENGTH) PAIR IN K IS MISSING.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON TO PREVENT THE MOVES.
         AGO   .KFIN
.**********************************************************************
.KFIN    ANOP
         AGO   .LINK     GO LINK TO THE SRCH8 SUBROUTINE.
.**********************************************************************
.* THERE IS NO NEED TO COLLECT THE SEARCH KEY AT IGAWORK, BECAUSE THE *
.* THE K PARAMETER IS NOT CODED, AND THERE IS ONLY ONE FIELD.         *
.**********************************************************************
.CHKA    AIF   (K'&A EQ 0).ASARG  SEE IF THE ADDRESS IS OMITTED; IF IT *
                         IS GET IT OUT OF THE SEARCH ARGUMENT.
         AIF   ('&A'(1,1) EQ '(').AGPR  SEE IF THE ADDRESS IS IN A GPR.
         LA    0,&A  ADDRESS OF SEARCH KEY.
         AGO   .CHKAEND  GO TO THE END OF CHECKING THE A PARAMETER.
.AGPR    AIF   ('&A' EQ '(0)').CHKAEND  SEE IF IT IS ALREADY IN R0.
         LR    0,&A(1)   ADDRESS OF SEARCH KEY.
         AGO   .CHKAEND  ALL DONE NOW EXIT FROM CHECKING THE A         *
                         PARAMETER.
.ASARG   ANOP
.CHKAEND ANOP
.**********************************************************************
.* THE ADDRESS OF THE SEARCH KEY IS IN REGISTER 0, NOW LINK TO THE    *
.* SEARCH SUBROUTINE IN IGARPT01 FOR TYPE 8 RADIX PARTITION TREES.    *
.**********************************************************************
.LINK    ANOP
         L     15,(&IGABLST+&IGASRCH)(,1)  ADDRESS OF SEARCH ROUTINE.
         BALR  14,15     LINK TO THE APPROPRIATE SEARCH ROUTINE.
.**********************************************************************
.* CHECK THE REL PARAMETER FOR ANY ADDITIONAL ACTIONS THAT MUST BE DONE
.**********************************************************************
         AIF   (K'&REL EQ 0).FIN0  SEE IF THE REL PARAMETER IS CODED.
         MNOTE 12,'NONCE ERROR, REL NOT YET AVAILABLE.'
         AGO   .FIN0     SKIP THE REST.
.**********************************************************************
.*   CHECK THE REL PARAMETER FOR A PARTIAL ORDER VALUE SEARCH.        *
.**********************************************************************
.ITSAPOV ANOP
         AIF   (('&REL(1)' EQ 'POV')AND('&REL(2)' EQ 'GE')).POVSRCH
         AIF   (('&REL(1)' EQ 'MAX')AND('&REL(2)' EQ 'POV')).MAXPOV
.BADREL  MNOTE 12,'INVALID REL PARAMETER.'
         AGO   .FIN0  GO TO THE END OF THE SRCH MACRO.
.MAXPOV  AIF   (K'&NULL EQ 0).LOADMAX  SEE IF THE NULL IS CODED.
         TM    &IGAEOPV.(1),B'1001'  SEE IF THE TREE IS EMPTY.
         AIF   ('&NULL'(1,1) EQ '(').MXPVGPR
         BC    8,&NULL  BRANCH IF THE TREE IS EMPTY.
         AGO   .LOADMAX
.MXPVGPR BCR   8,&NULL(1)  BRANCH IF THE RPT IS EMPTY.
.LOADMAX L     0,&IGAMAX.(,1)   LOAD THE MAXIMUM PARTIAL ORDER VALUE.
         L     15,(&IGABLST+&IGAPVS)(,1)  ADDRESS OF POV SEARCH.
         BALR  14,15     SET CURSOR TO SINK WITH MAX POV.
         AGO   .FIN0  GO TO THE END OF THE SEARCH.
.**********************************************************************
.* SEARCH FOR A PARTIAL ORDER VALUE THAT IS GREATER THAN OR EQUAL TO  *
.* THE SEARCH ARGUMENT, BUT AS SMALL A VALUE AS CAN EFFICIENTLY BE    *
.* FOUND.                                                             *
.**********************************************************************
.POVSRCH AIF   ((K'&A EQ 0)AND(K'&K NE 0)).PVS01
         AIF   ((K'&A NE 0)AND(K'&K EQ 0)).PVS10
         AIF   ((K'&A EQ 0)AND(K'&K EQ 0)).PVS00
         AIF   ('&A'(1,1) EQ '(').PVS11R
         L     0,&A(1)+&K(1)  LOAD PARTIAL ORDER SEARCH KEY.
.PVS11RR L     15,(&IGABLST+&IGAPVS)(,1)  ADDRESS OF POV SEARCH.
         BALR  14,15     LINK TO POV SEARCH ROUTINE.
.PVSTEST AIF   (K'&NULL EQ 0).PVNNULL  SEE IF THE NULL IS CODED.
&TMP     SETC  ''  SET IT TO THE EMPTY VECTOR.
         AIF   ('&NULL'(1,1) NE '(').PVSNGPR  AGO IF NULL NOT A GPR.
&TMP     SETC  'R'  SET IT TO GENERATE A BCR.
.PVSNGPR TM    &IGAEOPV.(1),B'1001'  SEE IF THE TREE IS EMPTY.
         BC&TMP 8,&NULL(1)  BRANCH IF IT IS EMPTY.
.PVNNULL AIF   ((K'&Y EQ 0)AND(K'&N EQ 0)).FIN0  SEE IF EITHER Y OR N.
         LTR   15,15  TEST THE RETURN CODE.
         AIF   (K'&Y EQ 0).PVNOY  SEE IF THE Y PARAMETER NOT CODED.
&TMP     SETC  ''  SET IT UP TO GENERATE A BC.
         AIF   ('&Y'(1,1) NE '(').PVYBC  GO IF A BC IS GENERATED.
&TMP     SETC  'R'  SET IT UP TO GENERATE A BCR.
.PVYBC   BC&TMP 10,&Y(1)  BRANCH IF THE SEARCH FOUND ONE.
.PVNOY   AIF   (K'&N EQ 0).FIN0  GO IF N IS NOT CODED.
&TMP     SETC  ''
         AIF   ('&N'(1,1) NE '(').PVNBC  GO IF IT'S NOT IN A GPR.
&TMP     SETC  'R'  GET SET TO GENERATE A BCR.
.PVNBC   AIF   (K'&Y NE 0).PVNBCC  GO IF THE LTR IS ALREADY THERE.
         LTR   15,15  TEST THE RETURN CODE.
.PVNBCC  BC&TMP 4,&N(1)  BRANCH IF THERE IS NO QUALIFYING VALUE.
         AGO   .FIN0  THE SRCH MACRO IS FINISHED.
.PVS11R  L     0,&K(1)(,&A(1))  LOAD THE PARTIAL ORDER SEARCH KEY.
         AGO   .PVS11RR  GO DO THE SEARCH.
.PVS00   MNOTE 12,'PARTIAL ORDER SEARCH KEY NOT SPECIFIED.'
         AGO   .FIN0  FORGET, CAN'T DO ANYTHING.
.PVS10   AIF   ('&A' EQ '((0))').PVS11RR SEE IF IT'S ALREADY LOADED.
&TMP     SETC  ''
         AIF   ('&A'(1,1) NE '(').PVS10M
&TMP     SETC  'R'
.PVS10M  L&TMP 0,&A(1)  LOAD THE PARTIAL ORDER SEARCH KEY.
         AGO   .PVS11RR  GO DO THE SEARCH.
.PVS01   ANOP
&TMP     SETC  'R'  PREPARE TO GENEATE A LOAD REGISTER INSTRUCTION.
         AIF   ('&K(1)'(1,1) EQ '(').PVS01R
&TMP     SETC  ''
.PVS01R  L&TMP 0,&K(1)  LOAD THE PARTIAL ORDER SEARCH KEY.
         AGO   .PVS11RR  GO DO THE SEARCH.
.**********************************************************************
.* PARTIAL ORDER VALUE SEARCH. IF A SEARCH KEY IS SPECIFIED SET THE   *
.* CURSOR USING THE SEARCH KEY. IN ORDER FOR THE SEARCH TO BE         *
.* SUCCESSFUL THERE MUST BE AN EXACT MATCH BETWEEN THE SEARCH KEY AND *
.* ONE ALREADY IN THE TREE.                                           *
.**********************************************************************
.POVGET  ANOP
         AIF   ((K'&A EQ 0)AND(K'&K EQ 0)).GETPOV
         SRCH  (1),A=&A,K=&K,T=&IGARPT#  SET THE CURSOR.
.GETPOV  L     15,(&IGABLST+&IGAGPV)(,1)  ADDRESS OF GET POV.
         BALR  14,15     LINK TO GET POV FOR CURRENT SINK.
         AGO   .PVSTEST   GO TEST FOR EXITING BRANCHES, ETC..
.*--------------------------------------------------------------------*
.FIN0    ANOP
         AIF   (NOT(&FIN)).SRCH8ZZ  SEE IF THE FIN&SYSNDX EQU * SHOULD *
                         BE GENERATED.
FIN&SYSNDX EQU *
.SRCH8ZZ ANOP
         AIF   (NOT &USING).FIN  SEE IF A USING FOR R1 HAS BEEN        *
                         GENERATED; IF SO GENERATE THE CORRESPONDING   *
                         DROP.
         AGO   .FIN      SKIP AROUND SRCH5.
.**********************************************************************
.*   R E A D     O N L Y     S E A R C H  ------- S R C H 5.          *
.**********************************************************************
.*       FOR SRCH5:                                                   *
.* 0. ABSOLUTE 3-BYTE EDGE FIELDS WITH SUCCESSOR PAIRING.             *
.* 1. BIT 0 OF EACH WORD IS A ZERO FOR SINK WORDS AND A ONE FOR INNER *
.*    VERTICES.                                                       *
.* 2. BITS 1-7 OF EACH INNER VERTEX ARE THE BIT INDEX, THUS ALLOWING  *
.*    A MAXIMUM KEY OF 16 BYTES.                                      *
.* 3. NO SCAN FUNCTIONS ARE AVAILABLE WITH SRCH5.                     *
.* 4. SRCH5 IS READ-ONLY, IN THE SENSE THAT IT DOES NOT STORE INTO    *
.*    ANY MEMORY LOCATIONS, BUT USES REGISTERS 0, 1, 2, 3, 14, AND 15 *
.*    AS WORKING REGISTERS.                                           *
.*    SRCH5 CHECKS A USE COUNT AFTER TERMINATION TO SEE IF AN INSERT  *
.*    OR DELETE CHANGE THE TREE DURING THE TIME THE SEARCH WAS IN     *
.*    PROGRESS. THIS IS TO ALLOW THE VALIDITY OF SEARCHES PROCEEDING  *
.*    WHILE AN INSERT OR DELETE IS IN PROGRESS IN AN MP SITUATION.    *
.*--------------------------------------------------------------------*
.SRCH5   ANOP
&GOLEFT  SETC  'LOOP'.'&SYSNDX'     GENERATE THE LABELS FOR THE
&ITSMOP  SETC  'MOP'.'&SYSNDX'   READ-ONLY SEARCH LOOP.
&ITSEOP  SETC  'EOP'.'&SYSNDX'   XX
&TOOBAD  SETC  'MORE'.'&SYSNDX'
&O       SETC  '0'   JUST A ZERO DISPLACEMENT.
&EKE     SETC  '4'   DISPLACEMENT TO THE USE COUNTER.
&FOUR    SETC  '4'    A CONSTANT DISPLACEMENT 4.
&ARG     SETC  '0'  REGISTER TO HOLD THE SEARCH ARGUMENT.
&TREEHDR SETC  '1'  USE REGISTER 1 FOR THE TREEHDR ADDRESS.
&P       SETC  '2'   USE REGISTER 2 FOR THE PREDECESSOR.
&C       SETC  '3'   USE REGISTER 3 FOR THE PENULTIMATE VERTEX.
&EKER    SETC  '14'  REGISTER TO HOLD THE COUNTER DURING THE
.*                   READ-ONLY SEARCH.
&S       SETC  '15'     USE REGISTER 15 TO HOLD THE SINK WORD.
&USING   SETB  (1)       SET THE BIT ON TO INDICATE THAT A USING HAS   *
                         BEEN GENERATED FOR R1.
.**********************************************************************
.* THE FOLLOWING TABLE SHOWS THE VARIOUS COMBINATIONS AND             *
.* INTERPRETATIONS OF THE OPERANDS FOR SRCH WITH TYPE 5 TREES:        *
.**********************************************************************
.* A:    A=LABEL OR A=(GPR) MAY BE CODED.                             *
.* K:    K=, K=FIELDNAME, K=(FIELDNAME,LENGTH), OR K=(D,L) MAY BE     *
.*       CODED. IF "K=FIELDNAME" OR "K=(FIELDNAME,LENGTH)" IS CODED,  *
.*       THEN THE A PARAMETER DOES NOT HAVE TO BE CODED. IF A IS ALSO *
.*       CODED AN MNOTE WILL BE GENERATED.                            *
.*       THE MAXIMUM SIZE KEY THAT CAN BE ACCOMODATED FOR TYPE 5 TREES*
.*       IS 16 BYTES. THERE CAN ONLY BE ONE (D,L) PAIR FOR TYPE 5     *
.*       TREES, UNLIKE TYPE 8 TREES, WHERE THERE CAN BE AN ARBITRARY  *
.*       NUMBER.                                                      *
.*--------------------------------------------------------------------*
.* CHECK FOR THE VARIOUS ALLOWABLE COMBINATIONS OF THE KEYL AND SARG. *
.*--------------------------------------------------------------------*
.**********************************************************************
.* THE FOLLOWING ARE THE ONLY WAYS TO CODE THE A AND K PARAMETERS FOR *
.* TYPE 5 RADIX PARTITION TREES:                                      *
.* F MEANS A FIELD NAME WITH A LENGTH ATTRIBUTE.                      *
.* L MEANS A LENGTH, WHICH MUST BE A SELF-DEFINING TERM.              *
.* D MEANS A DISPLACEMENT, WHICH MUST EITHER BE THE EMPTY STRING OR A *
.*   SELF-DEFINING TERM.                                              *
.* GPR IS A GENERAL REGISTER NAME OR NUMBER.                          *
.* X MEANS ANY STRING OF CHARACTERS.                                  *
.*                                                                    *
.* COMBINATION:          MEANING:                                     *
.* ------------          --------                                     *
.* A=F,K=                F IS A LABEL, AND THE LENGTH OF THE KEY IS   *
.*                       THE SAME AS THE LENGTH OF F.                 *
.* A=F,K=L               F IS THE SEARCH KEY, AND L IS THE SEARCH KEY *
.*                       LENGTH (IT MUST BE A SELF-DEFINING TERM).    *
.* A=F,K=(,L)            SAME AS ABOVE.                               *
.* A=F,K=(D,L)           THE SEARCH KEY IS AT DISPLACEMENT D FROM THE *
.*                       BEGINNING OF THE FIELD F, AND IS L BYTES LONG.
.* A=(GPR),K=L           THE ADDRESS OF THE FIRST BYTE OF THE SEARCH  *
.*                       KEY IS IN THE INDICATED REGISTER, AND THE KEY*
.*                       IS L BYTES LONG.                             *
.* A=(GPR),K=(,L)        SAME AS ABOVE.                               *
.* A=(GPR),K=(D,L)       THE ADDRESS OF THE KEY IS FORMED BY ADDING   *
.*                       THE ADDRESS IN THE INDICATED REGISTER TO THE *
.*                       DISPLACEMENT D, AND THE KEY IS L BYTES LONG. *
.* A=,K=F                F IS THE SEARCH KEY, AND ITS LENGTH IS THE   *
.*                       SAME AS THE LENGTH OF F.                     *
.* A=,K=(F,L)            F IS THE SEARCH KEY, AND L IS ITS LENGTH.    *
.**********************************************************************
.*--------------------------------------------------------------------*
.**********************************************************************
.* IN THE FOLLOWING, THE SEARCH IS DONE FOR KEYS WITH 4 BYTES OR LESS.*
.* THE KEY IS PLACED IN REGISTER 0 JUST BEFORE THE MAIN SEARCH LOOP.  *
.* THE KEY IS RIGHT ALIGNED IN REGISTER ZERO, WITH ZEROS FILLED IN ON *
.* THE LEFT.                                                          *
.**********************************************************************
         AIF   (&ERROR).FIN5  SEE IF ANY ERRORS HAVE BEEN DISCOVERED   *
                         PRIOR TO THIS PART.
         AIF   ((K'&A EQ 0)AND(K'&K EQ 0)).FIN5  SEE IF NEITHER A NOR K*
                         IS CODED.
         AIF   (K'&K NE 0).S5KNOTZ  SEE IF K IS CODED.
.**********************************************************************
.* ONLY THE A PARAMETER IS CODED, SO IT MUST BE A FIELD NAME WITH A   *
.* LENGTH ATTRIBUTE IN ORDER TO BE VALID.                             *
.**********************************************************************
         AIF   (K'&A LE 4).NOTPP  SEE IF THE A PARAMETER IS CODED AS   *
                         "A=((GPR))". IF IT IS, THEN THE SEARCH KEY IS *
                         ALREADY LOADED INTO THE INDICATED REGISTER.
         AIF   ('&A'(1,2) NE '((').NOTPP  IF IT IS IN A REGISTER, THEN *
                         IT MUST BE RIGHT ALIGNED, WITH THE LEFT FILL  *
                         BITS BEING ZERO.
         AIF   ('&A' EQ '((0))').SRCH5Z  SEE IF IT IS EVEN ALREADY IN  *
                         REGISTER 0.
         LR    0,&A(1)   SEARCH KEY.
         AGO   .SRCH5Z   GOT THE SEARCH KEY IN REGISTER 0, NOW GO      *
                         GENERATE THE SEARCH.
.NOTPP   ANOP
         AIF   ('&A'(1,1) EQ '(').AGRNOK  SEE IF THE A PARAMETER IS    *
                         INCORRECTLY SPECIFIED IN A REGISTER.
         AIF   ((T'&A EQ 'M')OR(T'&A EQ 'N')OR(T'&A EQ 'O')OR (T'&A EQ *
               'T')OR(T'&A EQ 'W')OR(T'&A EQ '$')OR(T'&A EQ 'U')).ANOTF*
                         SEE IF A IS NOT A FIELD NAME.
&IGAKEYL SETA  (L'&A)    GET THE SEARCH KEY LENGTH.
         AIF   (K'&A GT 8).ATOOBIG SEE IF THE FIELD NAME IS BIGGER     *
                         THAN 8 CHARACTERS.
&FIELD   SETC  '&A'      GET THE FIELD NAME.
.S5LCHK  AIF   (&IGAKEYL GT 4).AFLGT4  SEE IF THE KEY LENGTH IS MORE   *
                         THAN FOUR BYTES.
         AIF   (&IGAKEYL GE 3).AFL34  SEE IF THE KEY LENGTH IS BIGGER  *
                         THAN TWO BYTES.
         AIF   (&IGAKEYL EQ 2).AFL2  SEE IF THE KEY LENGTH IS EXACTLY  *
                         TWO BYTES.
         AIF   (&IGAKEYL NE 1).NULLKEY  SEE IF THE KEY LENGTH IS ZERO.
.AFL1    SLR   0,0       THE SEARCH KEY
         IC    0,&FIELD  IS ONE BYTE LONG.
         AGO   .SRCH5Z   NOW GO GENERATE THE SRCH5 IN LINE.
.AFL2    LH    0,&FIELD  SEARCH KEY IS
         N     0,=XL4'0000FFFF'  TWO BYTES LONG.
         AGO   .SRCH5Z   NOW GO GENERATE THE SEARCH IN LINE.
.AFL3    L     00,&FIELD  3-BYTE SEARCH KEY.
         SRL   0,8  GET IT RIGHT ALIGNED.
         AGO   .SRCH5Z   GO GENERATE THE SEARCH LOOP.
.AFL34   AIF   (&IGAKEYL EQ 3).AFL3  SEE IF THE SEARCH KEY LENGTH IS   *
                         EXACTLY THREE BYTES.
         L     0,&FIELD  4-BYTE SEARCH KEY.
         AGO   .SRCH5Z   GO FINISH UP NOW.
.AFLGT4  AGO   .S5NONCE  CAN'T HAVE TYPE 5 KEYS BIGGER THAN 5 YET.
.**********************************************************************
.* THE K PARAMETER IS CODED, SEE IF THE A PARAMETER IS CODED TOO.     *
.**********************************************************************
.S5KNOTZ ANOP
         AIF   (K'&A NE 0).S5BOTH  SEE IF BOTH THE A AND K PARAMETERS  *
                         ARE CODED.
.**********************************************************************
.* ONLY THE K PARAMETER IS CODED. IT MUST BE ONE OF THE CASES K=F OR  *
.* K=(F,L). ANYTHING ELSE MUST BE WRONG.                              *
.**********************************************************************
         AIF   (N'&K GT 2).LOTSAK  SEE IF THERE ARE TOO MANY OPERANDS.
         AIF   (N'&K EQ 2).S5K2  SEE IF THERE ARE EXACTLY 2.
         AIF   ('&K'(1,1) EQ '(').S5K1P  SEE IF IT LOOKS LIKE A GPR.
         AIF   ((T'&K(1) EQ 'M')OR(T'&K(1) EQ 'N')OR(T'&K(1) EQ 'O')OR(*
               T'&K(1) EQ 'T')OR(T'&K(1) EQ 'W')OR(T'&K(1) EQ '$')OR(T'*
               &K(1) EQ 'U')).KINVF  SEE IF K IS A GOOD FIELD NAME.
         AIF   (K'&K GT 8).KBIGTAG  SEE IF THE FIELD NAME HAS TOO MANY *
                         CHARACTERS IN IT TO BE A VALID NAME.
&FIELD   SETC  '&K'      SET FIELD TO THE FIELD NAME.
         AGO   .S5LCHK   MERGE IN WITH THE OTHER LENGTH CHECK.
.**********************************************************************
.* THE K PARAMETER IS CODED AND THE A PARAMETER IS NOT CODED, AND THE *
.* K PARAMETER HAS EXACTLY TWO ELEMENTS IN IT. SEE IF K IS OF THE FORM*
.* (F,L). IF IT ISN'T IT IS AN ERROR.                                 *
.**********************************************************************
.S5K2    ANOP
         AIF   (T'&K(2) EQ 'N').S5K2N  SEE IF THE LENGTH IS A SELF-    *
                         DEFINING TERM.
&I       SETA  (K'&K(2))  SET THE INDEX TO IT'S INITIAL VALUE.
.K5LCHK  AIF   (('&K(2)'(&I,1) LT '0')OR('&K(2)'(&I,1) GT '9')).S5LERR
&I       SETA  (&I-1)    DECREASE THE INDEX TO THE NEXT CHARACTER.
         AIF   (&I GT 0).K5LCHK  SEE IF THERE ARE MORE TO CHECK.
         AIF   (K'&K(2) GT 4).S5LERR  SEE IF IT HAS TOO MANY DIGITS.
.S5K2N   ANOP
&IGAKEYL SETA  (&K(2))   GET THE LENGTH AS A NUMBER.
         AIF   (K'&K(1) GT 8).KBIGTAG  SEE IF IT HAS TOO MANY          *
                         CHARACTERS IN IT TO BE A VALID NAME.
&FIELD   SETC  '&K(1)'   GET THE FIELD NAME.
         AGO   .S5LCHK   MERGE IN WITH THE OTHER SEQUENCE.
.**********************************************************************
.* BOTH THE A AND K PARAMETERS ARE CODED.                             *
.**********************************************************************
.S5BOTH  ANOP
         AIF   ('&A'(1,1) EQ '(').S5BAISG  SEE IF THE A PARAMETER      *
                         SPECIFIES A GENERAL REGISTER.
         AIF   (N'&K GT 2).LOTSAK  SEE IF THERE ARE TOO MANY.
         AIF   (N'&K EQ 2).S5AK2  SEE IF THERE ARE EXACTLY 2.
         AIF   ('&K'(1,1) EQ '(').S5K1P  SEE IF IT LOOKS LIKE THE      *
                         DISPLACEMENT-LENGTH PAIR IS IN A GPR.
.**********************************************************************
.* THIS MUST BE THE CASE WHERE A=F,K=L.                               *
.**********************************************************************
         AIF   (T'&K EQ 'N').AFKL5OK  SEE IF THE LENGTH IS A           *
                         SELF-DEFINING TERM.
&I       SETA  (1)       SET THE INDEX TO ITS INITIAL VALUE.
.AFKL5CK AIF   (('&K'(&I,1) LE '0')OR('&K'(&I,1) GT '9')).S5LERR       *
                         CHECK THE LENGTH TO SEE IF IT IS REALLY A     *
                         NUMBER.
&I       SETA  (&I+1)    EKE THE INDEX OF THE NEXT CHARACTER TO BE     *
                         INSPECTED.
         AIF   (&I LT K'&K).AFKL5CK  KEEP ON LOOKING UNTIL ALL THE     *
                         CHARACTERS HAVE BEEN INSPECTED.
.AFKL5OK ANOP
&IGAKEYL SETA  (&K)      CAPTURE THE KEY LENGTH AS A NUMBER.
         AIF   (&IGAKEYL EQ 1).AFKL51  SEE IF THE KEY LENGTH IS ONE    *
                         BYTE.
         AIF   (&IGAKEYL EQ 2).AFKL52  SEE IF THE KEY LENGTH IS TWO    *
                         BYTES.
         AIF   (&IGAKEYL EQ 3).AFKL53  SEE IF THE KEY LENGTH IS 3      *
                         BYTES.
         AIF   (&IGAKEYL NE 4).S5NONCE  SEE IF THE KEY LENGTH IS FOUR  *
                         BYTES.
         L     0,&A                     SEARCH ARGUMENT.
         AGO   .SRCH5Z   GO DO THE ACTUAL SEARCH.
.AFKL51  SLR   0,0     KEY LENGTH IS ONE BYTE.
         IC    0,&A                 1-BYTE SEARCH KEY.
         AGO   .SRCH5Z   GO GENERATE THE ACTUAL SEARCH CODE.
.AFKL52  LH    0,&A              HALFWORD SEARCH KEY.
         AGO   .SRCH5Z   GO GENERATE THE SEARCH CODE.
.AFKL53  L     0,&A                  LOAD 3-BYTE SEARCH KEY.
         SRL   0,8       SHIFT IT OVER.
         AGO   .SRCH5Z   GO GENERATE THE REAL SEARCH.
.AFKL54  L     0,&A                   LOAD FULL-WORD SEARCH KEY.
         AGO   .SRCH5Z   GO GENERATE THE REAL SEARCH CODE.
.**********************************************************************
.* THIS MUST BE THE CASE WHERE A=F,K=(D,L).                           *
.**********************************************************************
.S5AK2   AIF   (T'&K(2) EQ 'N').S5K2N1 SEE IF THE LENGTH IS A SELF-    *
               DEFINING TERM.
         AIF   (K'&K(2) EQ 0).S5LERR  SEE IF IT IS THE EMPTY STRING.
&I       SETA  (K'&K(2))  SET THE INDEX TO IT'S INITIAL VALUE.
.K5LCHK1 AIF   (('&K(2)'(&I,1) LT '0')OR('&K(2)'(&I,1) GT '9')).S5LERR
&I       SETA  (&I-1)    DECREASE THE INDEX TO THE NEXT CHARACTER.
         AIF   (&I GT 0).K5LCHK1 SEE IF THERE ARE MORE TO CHECK.
         AIF   (K'&K(2) GT 4).S5LERR  SEE IF IT HAS TOO MANY DIGITS.
.S5K2N1  ANOP
&IGAKEYL SETA  (&K(2))   GET THE KEY LENGTH AS A NUMBER.
&DSP     SETA  0         SET THE DISPLACEMENT TO ITS DEFAULT VALUE.
         AIF   (K'&K(1) EQ 0).S5AK2D  SEE IF THE DISPLACEMENT FIELD IS *
                         ELIDED.
         AIF   ('&K(1)' EQ '0').S5AK2D  SEE IF IT IS ZERO.
         AIF   (T'&K(1) EQ 'N').PICK5D  SEE IF THE DISPLACEMENT IS A   *
                         SELF-DEFINING TERM.
&I       SETA  (K'&K(1))  SET THE INDEX TO IT'S INITIAL VALUE.
.CHECK5D AIF   (('&K(1)'(&I,1) LT '0')OR('&K(1)'(&I,1) GT '9')).S5DERR
&I       SETA  (&I-1)    DECREASE THE INDEX TO THE NEXT CHARACTER.
         AIF   (&I GT 0).CHECK5D  SEE IF IT GOT TO THE END.
         AIF   (K'&K(1) GT 4).S5DLONG  SEE IF IT HAS TOO MANY DIGITS.
.PICK5D  ANOP
&DSP     SETA  (&K(1))   GET THE DISPLACEMENT AS A NUMBER.
.S5AK2D  ANOP
.S5DLCHK ANOP
         AIF   (&IGAKEYL GT 4).S5DL5  SEE IF THE KEY LENGTH IS MORE    *
                         THAN 4 BYTES.
         AIF   (&IGAKEYL EQ 4).S5DL4  SEE IF THE KEY LENGTH IS 4 BYTES.
         AIF   (&IGAKEYL EQ 3).S5DL3  SEE IF THE KEY LENGTH IS 3 BYTES.
         AIF   (&IGAKEYL EQ 2).S5DL2  SEE IF THE KEY LENGTH IS 2 BYTES.
         AIF   (&IGAKEYL NE 1).NULLKEY  SEE IF THE KEY LENGTH IS ZERO.
.S5DL1   SLR   0,0       SEARCH KEY IS
         AIF   (&DSP EQ 0).S5DL1Z  SEE IF THE DISPLACEMENT IS ZERO.
         IC    0,&A                    ONE BYTE LONG.
         AGO   .S5DL1ZZ  SKIP AROUND THE OTHER INSERT CHARACTER        *
                         INSTRUCTION.
.S5DL1Z  IC    0,&DSP+&A        ONE BYTE LONG.
.S5DL1ZZ ANOP
         AGO   .SRCH5Z   GO DO THE IN LINE SEARCH.
.S5DL2   AIF   (&DSP EQ 0).S5DL2Z  SEE IF THE DISPLACEMENT IS ZERO.
         LH    0,&DSP+&A          HALFWORD
         AGO   .S5DL2ZZ  SKIP AROUND THE OTHER LOAD HALFWORD           *
                         INSTRUCTION.
.S5DL2Z  LH    0,&A           HALFWORD
.S5DL2ZZ ANOP
         N     0,=XL4'0000FFFF'  SEARCH KEY.
         AGO   .SRCH5Z   GO WRAP IT UP.
.S5DL3   AIF   (&DSP EQ 0).S5DL3Z  SEE IF THE DISPLACEMENT IS ZERO.
         L     0,&DSP+&A           THREE-BYTE SEARCH KEY.
         AGO   .S5DL3ZZ  SKIP THE OTHER LOAD INSTRUCTION.
.S5DL3Z  L     0,&A                 THREE-BYTE SEARCH KEY.
.S5DL3ZZ ANOP
         SRL   0,8       GET IT RIGHT ALIGNED.
         AGO   .SRCH5Z   GO DO THE IN-LINE SEARCH.
.S5DL4   AIF   (&DSP EQ 0).S5DL4Z  SEE IF THE DISPLACEMENT IS ZERO.
         L     0,&DSP+&A           4-BYTE KEY.
         AGO   .S5DL4ZZ  SKIP THE OTHER LOAD INSTRUCTION.
.S5DL4Z  L     0 &A                  4-BYTE KEY.
.S5DL4ZZ ANOP
         AGO   .SRCH5Z   GO FINISH IT UP.
.S5DL5   AGO   .S5NONCE  THIS IS ONLY FOR THE NONCE.
.**********************************************************************
.* BOTH THE A AND K PARAMETERS ARE CODED, AND A SPECIFIES A GPR.      *
.* THEREFORE IT MUST BE THE CASE WHERE A=(GPR),K=(D,L). NOTE THAT THE *
.* DISPLACEMENT CAN BE THE EMPTY STRING.                              *
.* ALSO THE CASE OF A=(GPR),K=L GOES ALONG WITH THESE.                *
.**********************************************************************
.S5BAISG ANOP
         AIF   (N'&K GT 2).LOTSAK  SEE IF K HAS TOO MANY OPERANDS.
         AIF   (N'&K EQ 2).S5AGK2  SEE IF K HAS EXACTLY 2 OPERANDS.
         AIF   ('&K'(1,1) EQ '(').S5K1P  SEE IF IT LOOKS LIKE A GPR.
         AIF   (T'&K NE 'N').S5LERR  SEE IF IT'S A SELF-DEFINING TERM.
.**********************************************************************
.* IT IS A=(GPR),K=L.                                                 *
.**********************************************************************
&IGAKEYL SETA  (&K)      GET THE KEY LENGTH AS A NUMBER.
&DSP     SETA  0         SET THE DISPLACEMENT TO ITS DEFAULT VALUE.
.S5GLCHK AIF   (&IGAKEYL GT 4).S5GL5  SEE IF THE KEY LENGTH EXCEEDS 4.
         AIF   (&IGAKEYL EQ 4).S5GL4  SEE IF IT IS EXACTLY 4 BYTES.
         AIF   (&IGAKEYL EQ 3).S5GL3  SEE IF IT IS EXACTLY 3 BYTES.
         AIF   (&IGAKEYL EQ 2).S5GL2  SEE IF IT IS EXACTLY 2 BYTES.
         AIF   (&IGAKEYL NE 1).S5LERR  SEE IF IT IS ZERO.
.S5GL1   SLR   0,0       1-BYTE KEY.
         IC    0,&DSP&A
         AGO   .SRCH5Z   GO FINISH UP.
.S5GL2   LH    0,&DSP&A  2-BYTE KEY.
         N     0,=XL4'0000FFFF'
         AGO   .SRCH5Z
.S5GL3   L     0,&DSP&A  3-BYTE KEY.
         SRL   0,8
         AGO   .SRCH5Z
.S5GL4   L     0,&DSP&A  4-BYTE KEY.
         AGO   .SRCH5Z   GO FINISH IT UP.
.S5GL5   AGO   .S5NONCE
.**********************************************************************
.* IT IS A=(GPR),K=(D,L).                                             *
.**********************************************************************
.S5AGK2  ANOP
         AIF   (T'&K(2) NE 'N').S5LERR   SEE IF IT'S NOT SELF-DEFINING.
&DSP     SETA  0         SET D TO THE DEFAULT VALUE.
&IGAKEYL SETA  (&K(2))   GET THE KEY LENGTH AS A NUMBER.
         AIF   (K'&K(1) EQ 0).S5GLCHK  SEE IF THE DISPLACEMENT IS THE  *
                         EMPTY STRING.
         AIF   (T'&K(1) NE 'N').S5DERR   SEE IF IT'S NOT SELF-DEFINING.
&DSP     SETA  (&K(1))   GET THE DISPLACEMENT AS A NUMBER.
         AGO   .S5GLCHK  MERGE WITH THE COMMON PATH.
.SRCH5Z  AIF   (&ERROR).FIN5  DON'T GENERATE THE SEARCH IF ERRORS HAVE *
                         BEEN DETECTED ALREADY.
&TOOBAD  L     &EKER,&IGACNT5.(,&TREEHDR)  LOAD THE USE COUNTER.
         LA    &P,&IGATOP5.(,&TREEHDR)  ADDRESS OF RPT SOURCE.
         LR    &C,&P     XX
         L     &S,&O.(&O,&C)
         CL    &S,&IGAMSK5.(,&TREEHDR)  SEE IF THERE ARE ZERO SINKS.
         BC    7,&GOLEFT+4
         BC    15,&ITSEOP
&GOLEFT L     &S,&O.(&O,&C)   LOAD THE SINK WORD OR THE NEXT INNER
         LTR   &S,&S          VERTEX AND TEST FOR THE END OF THE PATH.
         BC    10,&ITSEOP     BRANCH IF THE SINK WORD WAS LOADED.
&ITSMOP LR    &P,&C           CYCLE THE REGISTERS SO THAT THESE TWO
         LR    &C,&S          ARE ALWAYS CONSECUTIVE VERTICES.
         SRL   &S,24          GET THE BIT INDEX FIELD IN THE LOW ORDER.
         L     &S,(&IGAMSK5-X'80')(&TREEHDR,&S)  LOAD MASK TO TEST BIT.
         NR    &S,&ARG          TEST THE BIT.
         BC    8,&GOLEFT    BRANCH IF IT IS A ZERO TO THE LEFT PATH.
         L     &S,&FOUR.(&O,&C)  ENTER THE RIGHT SUBTREE BY LOADING
         LA    &C,&FOUR.(&O,&C)  THE PAIRED RIGHT SUCCESSOR AND
         LTR   &S,&S   MAKE THE CURRENT VERTEX ADDRESS IT.
         BC    4,&ITSMOP   BRANCH IF THE NEW VERTEX IS AN INNER VERTEX.
&ITSEOP  CL    &EKER,&IGACNT5.(,&TREEHDR)  CHECK THE COUNTER TO SEE IF
         BC    7,&TOOBAD   THE READ-ONLY SEARCH MUST BE DONE AGAIN.
         AGO   .FIN5
.AGRNOK  MNOTE 12,'SEARCH KEY LENGTH CANNOT BE DETERMINED WITH A IN A  *
               GPR AND NO K.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN5     FINISH UP AND GET OUT.
.ANOTF   MNOTE 12,'THE FIELD DEFINED BY A HAS NOT A VALID LENGTH ATTRIB*
               UTE.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN5     GET OUT NOW.
.ATOOBIG MNOTE 12,'FIELD NAME IN A PARAMETER IS TOO MANY CHARACTERS.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN5     EXIT.
.NULLKEY MNOTE 12,'LENGTH OF SEARCH KEY DEFINED IS ZERO.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN5     EXIT AFTER CLEANING UP.
.S5NONCE MNOTE 12,'NONCE ERROR, ONLY KEYS UP TO 4 BYTES ARE SUPPORTED.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN5     FORGET IT FOR THE NONCE.
.LOTSAK  MNOTE 12,'TOO MANY OPERANDS IN THE K PARAMETER LIST.'
&ERROR   SETB  (1)       SET THE ERROR FLAG ON.
         AGO   .FIN5
.S5K1P   MNOTE 12,'THE DISPLACEMENT-LENGTH PAIR MAY NOT BE IN A GPR.'
&ERROR   SETB  (1)
         AGO   .FIN5
.KINVF   MNOTE 12,'FIELD IN K PARAMETER HAS INVALID LENGTH ATTRIBUTE.'
&ERROR   SETB  (1)
         AGO   .FIN5
.KBIGTAG MNOTE 12,'TOO MANY CHARACTERS IN FIELD NAME; ONLY 8 ALLOWED.'
&ERROR   SETB  (1)
         AGO   .FIN5
.S5LERR  MNOTE 12,'LENGTH IS NOT A SELF-DEFINING TERM IN K PARAMETER.'
&ERROR   SETB  (1)
         AGO   .FIN5
.S5DERR  MNOTE 12,'THE DISPLACEMENT IN THE K PARAMETER IS NOT A SELF-DE*
               FINING TERM.'
&ERROR   SETB  (1)
         AGO   .FIN5
.S5DLONG MNOTE 12,'K PARAMETER DISPLACEMENT HAS TOO MANY DIGITS.'
&ERROR   SETB  (1)
.FIN5    ANOP
         AIF   (NOT &USING).FIN  SEE IF THE DROP SHOULD BE GENERATED.
.*--------------------------------------------------------------------*
.*      T H E    E N D    O F    M A C R O    S R C H.                *
.*--------------------------------------------------------------------*
.FIN     ANOP
.END     ANOP
         MEND
./ ADD NAME=STABUILD
         MACRO
&NAME    STABUILD &FLAG=,                                              X
               &LIST=,                                                 X
               &LISTNUM=,                                              X
               &ADDR=,                                                 X
               &CODE=,                                                 X
               &RTN=,                                                  X
               &NUM=,                                                  X
               &TYPE=A,                                                X
               &MF=
         GBLA  &$PSEUDO(5)
         LCLA  &FNUM
         LCLA  &FNUM1,&INCR
         LCLB  &F(8)
.*
.* THIS MACRO BUILDS THE CONTROL BLOCK THAT IKJEHSIR WILL EXAMINE
.* TO DETERMINE WHAT SPECIFIC ABENDS AND/OR WHAT TYPES OF ABENDS
.* A CP WANTS TO HANDLE.
.*
.*  &FLAG IS THE FLAG(S) TO SET IN THE BLOCK, CAN BE ONE OR MORE
.*     OF THE FOLLOWING:
.*        ONE  SAYS ONLY ONE ABEND CODE TO BE HANDLED BY &RTN
.*        MUL  SAYS MULTIPLE ABENDS TO BE HANDLED BY &RTN, ALSO
.*             IMPLIES THAT &LIST EXISTS
.*        ALL  SAYS THAT &RTN WILL HANDLE ALL ABEND CODES NOT
.*             SPECIFICALLY CALLED OUT BY A ONE OR MUL ENTRY
.*        NMSG TELLS IKJEHSIR THAT THE CP WANTS TO PUT OUT ITS
.*             OWN MESSAGE, AND THAT IKJEHSIR SHOULD NOT PUT
.*             OUT THE STANDARD MESSAGE.
.*        USER SAYS THAT THE CODES ARE USER ABENDS
.*        END  THIS SIGNIFIES THE END OF A TYPE OF CODE ENTRY,
.*             EITHER USER OR SYSTEM ABEND CODES
.*  &LIST THIS IS THE ADDRESS OF THE AREA FOR A LIST OF CODES TO
.*        BE STORED IN BY THIS MACRO ON AN MF=E.  THE CODES (FROM
.*        &CODE) WILL BE STORED IN THE ORDER THAT THEY APPEAR IN
.*        THE &CODE=( ) PARAMETER
.*  &LISTNUM  ONLY VALID FOR AN MF=L FORM.  THIS IS THE NUMBER OF
.*        CODES THAT AN MF=E FORM WILL FILL-IN IN AN &LIST
.*  &ADDR  THIS IS THE ADDRESS OF THE MF=L TO BE FILLED IN BY THE
.*        MF=E FORM OF THE MACRO.
.*  &CODE  THIS IS THE CODE OR CODES THAT &RTN WILL HANDLE
.*        CANNOT BE IN A REGISTER.
.*  &RTN  THIS IS THE ADDRESS OF THE ROUTINE THAT WILL HANDLE THE
.*        CODE OR LIST OF CODES GIVEN IN THE &CODE= PARAMETER
.*  &NUM  IS VALID ONLY FOR MF=L.  THIS IS USED BY THE 1ST
.*        STABUILD MF=L TO DETERMINE THE NUMBER OF STABUILDS
.*        THAT WILL BE USED IN THIS ASSEMBLY.  IT SETS UP AN
.*        ADDRESS REFERENCE POINT FOR THE &LIST PARAMETERS OF
.*        OTHER STABUILD MACROS.
.*  &TYPE  TYPE OF MACRO EXPANSION FOR MF=E
.*        A SAYS THAT NEW BLOCK IS BEING BUILT
.*        C SAYS THAT OLD BLOCK IS BEING CHANGED
.*
         AIF   (T'&NUM NE 'O').NUMIT
         AIF   ('&MF' EQ 'L').LISTFRM
.*
.*   EXECUTE FORM OF MACRO
.*
.TRYERS  AIF   ('&TYPE' EQ 'C').TYPEC  CHANGING A BLOCK
         AIF   (T'&FLAG EQ 'O').NOFLAG
         AIF   (T'&ADDR EQ 'O').NOADDR
         AIF   (T'&RTN EQ 'O').NORTN
         AIF   (N'&CODE GE 2 AND T'&LIST EQ 'O').BAD
.LOOP0   ANOP
&FNUM    SETA  0
&FNUM1   SETA  N'&FLAG
.LOOP1   ANOP
&FNUM    SETA  &FNUM+1
         AIF   ('&FLAG(&FNUM)' NE 'ONE').LOOP2
&F(8)    SETB  1
.LOOP2   AIF   ('&FLAG(&FNUM)' NE 'MUL').LOOP3
&F(7)    SETB  1
.LOOP3   AIF   ('&FLAG(&FNUM)' NE 'ALL').LOOP4
&F(6)    SETB  1
.LOOP4   AIF   ('&FLAG(&FNUM)' NE 'USER').LOOP5
&F(5)    SETB  1
.LOOP5   AIF   ('&FLAG(&FNUM)' NE 'NMSG').LOOP6
&F(4)    SETB 1
.LOOP6   ANOP
.LOOP7   ANOP
.LOOP8   AIF   ('&FLAG(&FNUM)' NE 'END').LOOP9
&F(1)    SETB  1
.LOOP9   ANOP
&FNUM1   SETA  &FNUM1-1
         AIF   (&FNUM1 NE 0).LOOP1
         AIF   ('&MF' EQ 'L').MFL001 BYPASS ON MF=L
         AIF   (&F(8)+&F(7)+&F(6) EQ 0).NONE
         AIF   (&F(8)+&F(7)+&F(6) NE 1).EXC
         AIF   ('&TYPE' EQ 'C').MFL001  BYPASS ON TYPE=C
         AIF   (&F(7) EQ 1 AND T'&LIST EQ 'O').BAD2
         AIF   (&F(6) NE 1 AND T'&CODE EQ 'O').NOCODE
.MFL001  SPACE 1
&FNUM SETA &F(1)*128+&F(2)*64+&F(3)*32+&F(4)*16+&F(5)*8+&F(6)*4+&F(7)*2+
               +&F(8)
.*
.*  SEE IF WE HAVE TO GO ON WITH MF=L PROCESSING
.*
         AIF   ('&MF' EQ 'L').MFL
         AIF   ('&TYPE' EQ 'C').TYPEC1  GO ON WITH TYPE=C
         AIF   (N'&CODE GE 2).LISTER
         AIF   ('&ADDR'(1,1) EQ '(').REGAD
&NAME    MVI   &ADDR,&FNUM         STORE FLAG BYTE
         AIF   (T'&CODE EQ 'O').ZERO
         AIF   ('&CODE'(1,1) EQ '(').REG1
         LA    15,X'&CODE'         ABEND CODE
         AGO   .STH15
.ZERO    LA    15,0                CODE OMITTED
.STH15   STH   15,&ADDR+2          STORE IT
         AGO   .REG2
.REG1    STH   &CODE(1),&ADDR+2    STORE ABEND CODE
.REG2    AIF   ('&RTN'(1,1) EQ '(').REG3
         LA    14,&RTN             RETRY ROUTINE ADDRESS
         ST    14,&ADDR+4          STORE IT
         AGO   .END
.REG3    ST    &RTN(1),&ADDR+4     STORE ROUTINE ADDRESS
.END     SPACE 1
         MEXIT
.REGAD   ANOP
&NAME    MVI   0(&ADDR(1)),&FNUM   STORE FLAG BYTE
         AIF   (T'&CODE EQ 'O').ZERO1
         AIF   ('&CODE'(1,1) EQ '(').REGAD1
         LA    15,X'&CODE'         ABEND CODE
         AGO   .STH15A
.ZERO1   LA    15,0                CODE OMITTED
.STH15A  STH   15,2(&ADDR(1))      STORE IT
         AGO   .REGAD2
.REGAD1  STH   &CODE(1),2(&ADDR(1))  STORE ABEND CODE
.REGAD2  AIF   ('&RTN'(1,1) EQ '(').REGAD3
         LA    14,&RTN             RETRY ROUTINE ADDRESS
         ST    14,4(&ADDR(1))      STORE IT
         AGO   .END
.REGAD3  ST    &RTN(1),4(&ADDR(1))  STORE ROUTINE ADDRESS
         AGO   .END
.LISTER  ANOP
         AIF   ('&ADDR'(1,1) EQ '(').LADR
         AIF   ('&LIST'(1,1) EQ '(').LLIST
&NAME    LA    14,&LIST            LIST OF CODES
.ST14A   ST    14,&ADDR            STORE IT
         MVI   &ADDR,&FNUM         STORE FLAG BYTE
         AIF   ('&RTN'(1,1) EQ '(').LRTN
         LA    15,&RTN             RETRY ROUTINE ADDRESS
         ST    15,&ADDR+4          STORE IT
         AGO   .CODES
.LADR    AIF   ('&LIST'(1,1) EQ '(').ALIST
&NAME    LA    14,&LIST            LIST OF CODES
.ST14    ST    14,0(&ADDR(1))      STORE IT
         MVI   0(&ADDR(1)),&FNUM   STORE FLAG BYTE
         AIF   ('&RTN'(1,1) EQ '(').ARTN
         LA    15,&RTN             RETRY ROUTINE ADDRESS
         ST    15,4(&ADDR(1))      STORE IT
         AGO   .CODES
.LRTN    ST    &RTN(1),&ADDR+4     STORE ROUTINE ADDRESS
         AGO   .CODES
.ALIST   ANOP
&NAME    LR    14,&LIST(1)         LIST OF CODES
         AGO   .ST14
.ARTN    ST    &RTN(1),4(&ADDR(1))  STORE ROUTINE ADDRESS
         AGO   .CODES
.LLIST   ANOP
&NAME    LR    14,&LIST(1)         LIST OF CODES
         AGO   .ST14A
.*
.*      LOOP TO SET UP THE CODES
.*
.CODES   SPACE 1
&FNUM    SETA  0        CLEAR COUNTER
&INCR    SETA  0           CLEAR INCREMENT
&FNUM1   SETA  N'&CODE      GET NUMBER OF CODES
.LOOPS   ANOP               ANY LABEL
&FNUM    SETA  &FNUM+1     UP POINTER BY ONE
         LA    15,X'&CODE(&FNUM)'  ABEND CODE
         STH   15,&INCR.(14)    STORE IN LIST
&FNUM1   SETA  &FNUM1-1 BACK UP ONE
         AIF   (&FNUM1 NE 0).LOOPS1
         OI    &INCR.(14),X'80'         END OF LIST
         AGO   .END
.LOOPS1  ANOP
&INCR    SETA  &INCR+2            UP POINTER
         AGO   .LOOPS
.*
.*       THIS IS THE TYPE=C PROCESSING
.*
.TYPEC   AIF   (T'&ADDR EQ 'O').NOADDR NEED AN ADDRESS
         AIF   (N'&CODE GE 2 AND T'&LIST EQ 'O').BAD NEED A LIST
         AIF   (T'&FLAG NE 'O').LOOP0  CHECK FLAG SETTING
.TYPEC1  AIF   ('&ADDR'(1,1) EQ '(').REGTC  ADDR IN REG
         AIF   (N'&CODE GE 2).TYPECL
         AIF   (T'&FLAG NE 'O' AND T'&CODE EQ 'O').TYPECF  FLAG ONLY
         AIF   (T'&CODE NE 'O' AND T'&FLAG EQ 'O').TYPECC CODE ONLY
         AIF   (T'&CODE EQ 'O' AND T'&FLAG EQ 'O').TYPECR  BOTH OMITTED
&NAME    MVI   &ADDR,&FNUM         STORE FLAG BYTE
         LA    15,X'&CODE'         ABEND CODE
         STH   15,&ADDR+2          STORE IT
         AGO   .TYPECR1            CHECK ROUTINE
.TYPECF  ANOP
&NAME    MVI   &ADDR,&FNUM         STORE NEW FLAG
         AGO   .TYPECR1
.TYPECC  ANOP
&NAME    LA    15,X'&CODE'         NEW ABEND CODE
         STH   15,&ADDR+2          STORE IT
         AGO   .TYPECR1
.TYPECR  AIF   (T'&RTN EQ 'O').TYPCLST  SEE IF THER IS A LIST
         AIF   ('&RTN'(1,1) EQ '(').TYPECRR  IN A REG
&NAME    LA    15,&RTN             NEW ROUTINE
         ST    15,&ADDR+4          STORE IT
         AGO   .END
.TYPECRR ANOP
&NAME    ST    &RTN(1),&ADDR+4     STORE NEW ROUTINE
         AGO   .END
.TYPECR1 AIF   (T'&RTN EQ 'O').END
         AIF   ('&RTN'(1,1) EQ '(').TYPECR2
         LA    15,&RTN             NEW ROUTINE
         ST    15,&ADDR+4          STORE IT
         AGO   .END
.TYPECR2 ST    &RTN(1),&ADDR+4     STORE NEW ROUTINE
         AGO   .END
.REGTC   AIF   (N'&CODE GE 2).TYPECLR
         AIF   (T'&FLAG NE 'O' AND T'&CODE EQ 'O').TYPCRF
         AIF   (T'&CODE NE 'O' AND T'&FLAG EQ 'O').TYPCRC
         AIF   (T'&CODE EQ 'O' AND T'&FLAG EQ 'O').TYPCRR
&NAME    MVI   0(&ADDR(1)),&FNUM   STORE FLAG BYTE
         LA    15,X'&CODE'         NEW ABEND CODE
         STH   15,2(&ADDR(1))      STORE IT
         AGO   .TYPCR1
.TYPCRF  ANOP
&NAME    MVI   0(&ADDR(1)),&FNUM   STORE NEW FLAG BYTE
         AGO   .TYPCR1
.TYPCRC  ANOP
&NAME    LA    15,X'&CODE'         NEW ABEND CODE
         STH   15,2(&ADDR(1))      STORE IT
         AGO   .TYPCR1
.TYPCRR  AIF   (T'&RTN EQ 'O').WHY
         AIF   ('&RTN'(1,1) EQ '(').TYPCRRR
&NAME    LA    15,&RTN             NEW ROUTINE
         ST    15,4(&ADDR(1))      STORE IT
         AGO   .END
.TYPCRRR ANOP
&NAME    ST    &RTN(1),4(&ADDR(1)) STORE NEW ROUTINE
         AGO   .END
.TYPCR1  AIF   (T'&RTN EQ 'O').END
         AIF   ('&RTN'(1,1) EQ '(').TYPCRR2
         LA    15,&RTN             NEW ROUTINE
         ST    15,4(&ADDR(1))      STORE IT
         AGO   .END
.TYPCRR2 ST    &RTN(1),4(&ADDR(1)) STORE NEW ROUTINE
         AGO   .END
.TYPECL  AIF   ('&LIST'(1,1) EQ '(').TYPECL1
         AIF   (T'&FLAG EQ 'O').TYPCL2
&NAME    LA    14,&LIST            LIST OF CODES
.TYPCS14 ST    14,&ADDR            STORE IT
         MVI   &ADDR,&FNUM         STORE FLAG BYTE
         AIF   (T'&CODE EQ 'O').END   OUT IF NO CODE
         AGO   .CODES
.TYPECL1 AIF   (T'&FLAG EQ 'O').TYPCL3
&NAME    LR    14,&LIST(1)         LIST OF CODES
         AGO   .TYPCS14
.TYPCL2  ANOP
&NAME    LA    14,&LIST            LIST OF CODES
.TYPCI15 IC    15,&ADDR            SAVE FLAG BYTE
         ST    14,&ADDR            STORE LIST ADDRESS
         STC   15,&ADDR            RESTORE FLAG BYTE
         AIF   (T'&CODE EQ 'O').END  OUT IF NO CODE
         AGO   .CODES
.TYPCL3  ANOP
&NAME    LR    14,&LIST(1)         LIST ADDRESS
         AGO   .TYPCI15
.TYPECLR AIF   ('&LIST'(1,1) EQ '(').TYPRCL
         AIF   (T'&FLAG EQ 'O').TYPRCL1
&NAME    LA    14,&LIST            LIST OF CODES
.TYPRS14 ST    14,0(&ADDR(1))      STORE IT
         MVI   0(&ADDR(1)),&FNUM   STORE FLAG BYTE
         AIF   (T'&CODE EQ 'O').END  OUT IF NO CODE
         AGO   .CODES
.TYPRCL  AIF   (T'&FLAG EQ 'O').TYPRCL3
&NAME    LR    14,&LIST(1)         LIST OF CODES
         AGO   .TYPRS14
.TYPRCL1 ANOP
&NAME    LA    14,&LIST            LIST OF CODES
.TYPRI15 IC    15,0(&ADDR(1))      SAVE FLAG BYTE
         ST    14,0(&ADDR(1))      STORE CODE ADDRESS
         STC   15,0(&ADDR(1))      RESTORE FLAG BYTE
         AIF   (T'&CODE EQ 'O').END  OUT IF NO CODE
         AGO   .CODES
.TYPRCL3 ANOP
&NAME    LR    14,&LIST(1)         ADDRESS OF CODES
         AGO   .TYPRI15
.TYPCLST AIF   (T'&LIST EQ 'O').WHY  NOTHING SPECIFIED
         AGO   .TYPECL             ONWARD
.*
.*          LIST FORM OF MACRO
.*
.* FIRST CHECK TO SEE IF THERE ARE ANY FLAGS
.*
.LISTFRM AIF   (T'&FLAG NE 'O').LOOP0
&FNUM    SETA  0
         AIF   (T'&NAME EQ 'O' AND T'&ADDR EQ 'O').BOTH
         SPACE 1
.MFL     AIF   (T'&LIST EQ 'O' AND N'&CODE GE 2).BAD
         AIF   (T'&LISTNUM NE 'O' AND T'&LIST EQ 'O').NOLIST1
         AIF   (T'&CODE EQ 'O' AND T'&LIST NE 'O' AND T'&LISTNUM EQ 'O')
               ).NOLIST2
         AIF   (T'&NAME EQ 'O' AND T'&ADDR EQ 'O').BOTH
         AIF   (T'&NAME NE 'O').NOADRS  BYPASS
         AIF   (T'&ADDR EQ 'O').NOADRS     IS THERE AN ADDRESS
         AIF   ('&ADDR'(1,1) EQ '(').BADADR     CAN'T DO THAT
.NOADRS  AIF   (T'&LIST EQ 'O').NOLIST     IS THERE A LIST
         AIF   ('&LIST'(1,1) EQ '(').BADLIST     CAN'T DO THAT EITHER
.NOLIST  ANOP
         AIF   (&$PSEUDO(2) EQ 0).FIRST1   FIRST TIME
         ORG   $STAELST+&$PSEUDO(2)*8  ORG AT NEXT SLOT
         AGO   .FIRST2
.FIRST1  ORG   $STAELST          ORG AT FIRST SLOT
.FIRST2  ANOP
&$PSEUDO(2) SETA &$PSEUDO(2)+1
         SPACE 1
.*
.*        THE NAME PARAMETER OVERRIDES THE ADDR PARAMETER
.*
         AIF   (T'&ADDR EQ 'O').NAME
         AIF   (T'&NAME NE 'O').NAME
&ADDR    DS    0F                  NAME THIS SECTION
         AGO   .DCNUM
.NAME    ANOP
&NAME    DS    0F                  NAME THIS SECTION
.DCNUM   DC    AL1(&FNUM)          FLAG BYTE
         AIF   (N'&CODE GE 2).LISTMFL
         AIF   (T'&LIST NE 'O').LISTMFL
         AIF   (T'&CODE EQ 'O').CODE0S
         DC    AL3(X'&CODE')       ABEND CODE
         AGO   .RTN0S
.CODE0S  DC    AL3(0)             ABEND CODE
.RTN0S   AIF   (T'&RTN EQ 'O').RTN1S
         DC    A(&RTN)             RETRY ROUTINE ADDRESS
         AGO  .LSTEND
.RTN1S   DC    A(0)               RETRY ROUTINE ADDRESS
         AGO   .LSTEND
.NUMIT   SPACE 1
         AIF   ('&MF' NE 'L').TRYERS
         AIF   (&$PSEUDO(4) EQ 1).NUMITE
&$PSEUDO(4) SETA 1
$STAELST DS    0F                  NAME THE POINTER ENTRIES
         SPACE 1
         ORG   $STAELST+&NUM*8     ORG TO END OF ENTRIES
         SPACE 1
$STAEEND DS    0F                 NAME THE END OF ENTRIES
.NUMITE  ANOP
         AIF   (T'&FLAG NE 'O' OR T'&LIST NE 'O' OR T'&ADDR NE 'O' OR T'
               '&CODE NE 'O' OR T'&RTN NE 'O' OR T'&LISTNUM NE 'O').LIST
               TFRM
         AGO   .LSTEND
.LISTMFL DC    AL3(&LIST)          ADDRESS OF LIST
         AIF   (T'&RTN EQ 'O').RTN2S
         DC    A(&RTN)             ADDRESS OF RETRY ROUTINE
         AGO   .RTN3S
.RTN2S   DC    A(0)               RETRY ROUTINE ADDRESS
.RTN3S   AIF   (&$PSEUDO(3) NE 0).BYPAS1
         SPACE 1
.MLORG   ORG   $STAEEND            ORG AT BOTTOM OF ENTRIES
         SPACE 1
$STAECOD DS    0F                  NAME LIST OF CODES
         AGO   .BYPAS2
.BYPAS1  SPACE 1
         ORG   $STAECOD+&$PSEUDO(3)*2  ORG AT NEXT SLOT
.BYPAS2  SPACE 1
&LIST    DS    0H                  NAME THIS LIST OF CODES
         AIF   (N'&CODE EQ 0).CODE1S
&FNUM    SETA  0         ZERO THE COUNTER
&FNUM1   SETA  N'&CODE  GET THE NUMBER OF CODES
.LISTLOP ANOP A LABEL
&FNUM    SETA &FNUM+1 UP POINTER BY ONE
         DC    AL2(X'&CODE(&FNUM)')  CODE ENTRY
&$PSEUDO(3) SETA &$PSEUDO(3)+1
&FNUM1   SETA  &FNUM1-1
         AIF   (&FNUM1 NE 0).LISTLOP
.LSTEND  SPACE 1
         ORG
         SPACE 1
         MEXIT
.CODE1S  DC    (&LISTNUM)AL2(0)   SPACE FOR ABEND CODES
&$PSEUDO(3) SETA &$PSEUDO(3)+&LISTNUM
         AGO   .LSTEND
.NONE    MNOTE 8,'NO FLAG PARAMETER CODES'
         SPACE 1
         MEXIT
.EXC     MNOTE 8,'MUTUALLY EXCLUSIVE PARAMETERS IN FLAG CODES'
         SPACE 1
         MEXIT
.NOFLAG  MNOTE 8,'FLAG PARAMETER OMITTED'
         SPACE 1
         MEXIT
.NOCODE  MNOTE 8,'CODE PARAMETER OMITTED'
         SPACE 1
         MEXIT
.NOADDR  MNOTE 8,'ADDR PARAMETER OMITTED'
         SPACE 1
         MEXIT
.NORTN   MNOTE 8,'RTN PARAMETER OMITTED'
         SPACE 1
         MEXIT
.BAD     MNOTE 8,'MORE THAN ONE ABEND CODE AND NO LIST PARAMETER'
         SPACE 1
         MEXIT
.BAD2    MNOTE 8,'FLAG=MUL AND NO LIST PARAMETER'
         SPACE 1
         MEXIT
.NOLIST1 MNOTE 8,'LIST PARAMETER OMITTED WITH LISTNUM PARAMETER'
         SPACE 1
         MEXIT
.NOLIST2 MNOTE 8,'LISTNUM PARAMETER OMITTED WITH LIST PARAMETER AND NO C
               CODE PARAMETER'
         SPACE 1
         MEXIT
.BOTH    MNOTE 8,'BOTH NAME AND ADDR PARAMETERS OMITTED'
         SPACE 1
         MEXIT
.BADADR  MNOTE 8,'CANNOT NAME THE SECTION WITH A REGISTER'
         SPACE 1
         MEXIT
.BADLIST MNOTE 8,'CANNOT NAME THE LIST WITH A REGISTER'
         SPACE 1
         MEXIT
.WHY     MNOTE 8,'NO OPERANDS ON TYPE=C'
         SPACE 1
         MEXIT
         MEND
./ ADD NAME=STAEPARM
         MACRO
&NAME    STAEPARM  &FLAG=,                                             X
               &PSEUDO=,                                               X
               &LIST=,                                                 X
               &ADDR=,                                                 X
               &TYPE=A,                                                X
               &MF=
.*
.*       THIS MACRO BUILDS THE CONTROL BLOCK THAT IS PASSED TO THE
.*       IKJEHSIR EXIT ROUTINE VIA THE PARAM= PARAMETER OF THE STAE
.*       MACRO.
.*
.*       &FLAG  IS THE FLAG TO SET IN THE BLOCK, CAN BE ONE OF TWO
.*             SETTINGS:  CP OR TMP.
.*             IF IT IS CP, THE DEFAULT, IT SAYS THE CP WANTS TO HANDLE
.*             SOME ABENDS.  IF IT IS TMP, IT SAYS THAT THE CP WANTS
.*             THE TMP TO HANDLE ALL ABENDS.
.*       &PSEUDO  THE ADDRESS OF THE PSEUDO RETRY ROUTINE BUILT WITH
.*             THE PSEUDO MACRO.  FOR A FULL EXPLAINATION OF THE
.*             PSEUDO RETRY ROUTINE, SEE THE PSEUDO MACRO.
.*       &LIST  THIS IS THE ADDRESS OF THE RETRY CODE TABLE BUILD
.*             WITH THE STABUILD MACRO. FOR A FULLER EXPLAINATION,
.*             OF THE RETRY CODE TABLE SEE THE STABUILD MACRO.
.*       &ADDR  THIS IS THE ADDRESS OF THE MF=L FORM OF THIS MACRO.
.*             IT IS USED BY THE MF=E MACRO TO FILL IT IN, OR IT IS
.*             USED BY THE MF=L FORM AS A NAME IF NO NAME IS PROVIDED
.*       &TYPE TYPE OF MACRO EXPANSION FOR MF=E
.*             A  SAYS THAT NEW BLOCK BEING BUILD
.*             C  SAYS THAT OLD BLOCK BEING CHANGED
.*
         LCLA  &FNUM
         LCLB  &F(8)
.*
.*       IF NO FLAG IS GIVEN, DEFAULT TO CP
.*
         AIF   (T'&FLAG EQ 'O').SET1
.*
.*       LOOP THRU THE FLAG POSSIBILITIES AND SET SOME BITS
.*
&FNUM    SETA  N'&FLAG   NUMBER OF FLAG SETTINGS
.LOOP1   AIF   ('&FLAG(&FNUM)' NE 'CP').LOOP2
&F(8)    SETB  1
.LOOP2   AIF   ('&FLAG(&FNUM)' NE 'TMP').LOOP3
&F(7)    SETB  1
.LOOP3   ANOP
&FNUM    SETA  &FNUM-1
         AIF   (&FNUM NE 0).LOOP1
         AIF   ('&TYPE' EQ 'C').SETTC      ARE WE CHANGING AN OLD BLOCK
         AIF   (&F(8) EQ 0 AND &F(7) EQ 0).WHOKNOW  BAD FLAG
.SETTC   AIF   (&F(8) EQ 1 AND &F(7) EQ 1).BADFLAG  CANT BE BOTH
&FNUM    SETA  &F(7)*2+&F(8)
         AGO   .SET
.SET1    ANOP
&FNUM    SETA  1        DEFAULT TO CP
.SET     ANOP
.*
.*             IF ITS LIST FORM, GO CHECK ITS REQUIREMENTS
.*
         AIF   ('&MF' EQ 'L').MFL
.*
.*   EXECUTE FORM OF MACRO
.*
         AIF   ('&TYPE' EQ 'C').TYPEC   CHANGING PREVIOUS
         AIF   (T'&PSEUDO EQ 'O').NOPS   NEED PSEUDO PARM
         AIF   (&F(7) EQ 1).ADDR  DONT NEED LIST IF TMP SPECIFIED
         AIF   (T'&LIST EQ 'O').NOLST    NEED A LIST
.ADDR    AIF   (T'&ADDR EQ 'O').NOADDR  NEED AN ADDRESS
         SPACE 1
.*
.*             CHECK FOR SOME THINGS BEING IN REGISTERS
.*
         AIF   ('&ADDR'(1,1) EQ '(').REGAD   ADDRESS IN REG
         AIF   (T'&LIST EQ 'O').NLIST  MAY NOT HAVE A LIST
         AIF   ('&LIST'(1,1) EQ '(').RLIST  LIST IN REG
&NAME    LA    15,&LIST            LIST OF CODES OR POINTERS
         AGO   .NLIST1             BYPASS
.NLIST   ANOP
&NAME    LA    15,0                LIST OMITTED
.NLIST1  ST    15,&ADDR            STORE LIST POINTER
         AGO   .RLIST1
.RLIST   ANOP
&NAME    ST    &LIST(1),&ADDR      LIST OF CODES
.RLIST1  MVI   &ADDR,&FNUM         STORE FLAG
         AIF   ('&PSEUDO'(1,1) EQ '(').RPS   PSEUDO IN REG
         LA    15,&PSEUDO          PSEUDO RETRY ROUTINE
         ST    15,&ADDR+4          STORE PSEUDO POINTER
         AGO   .END
.RPS     ST    &PSEUDO(1),&ADDR+4  STORE PSEUDO RETRY ROUTINE
.END     SPACE 1
         MEXIT
.REGAD   AIF   (T'&LIST EQ 'O').NLIST2  NEED NOT HAVE IT
         AIF   ('&LIST'(1,1) EQ '(').REGAD1   LIST IN A REG
&NAME    LA    15,&LIST            LIST OF CODES OR POINTERS
         AGO   .NLIST3
.NLIST2  ANOP
&NAME    LA    15,0                LIST OMITTED
.NLIST3  ST    15,0(&ADDR(1))      STORE LIST POINTER
         AGO   .REGAD2
.REGAD1  ANOP
&NAME    ST    &LIST(1),0(&ADDR(1))  LIST OF CODES
.REGAD2  MVI   0(&ADDR(1)),&FNUM   STORE FLAG BYTE
         AIF   ('&PSEUDO'(1,1) EQ '(').REGAD3
         LA    15,&PSEUDO          PSEUDO RETRY ROUTINE
         ST    15,4(&ADDR(1))      STORE PSEUDO POINTER
         AGO   .END
.REGAD3  ST    &PSEUDO(1),4(&ADDR(1))  STORE PSEUDO RETRY ROUTINE
         AGO   .END
.*
.*      CHANGING PREVIOUS STAEPARM  TYPE=C
.*
.TYPEC   AIF   (T'&ADDR EQ 'O').NOADDR   NEED AN ADDRESS
         AIF   ('&ADDR'(1,1) EQ '(').REGTC  ADDRESS IN REG
         AIF   (T'&LIST EQ 'O' AND T'&FLAG EQ 'O').PSEUTC  ONLY PSEUDO
         AIF   (T'&LIST NE 'O' AND T'&FLAG NE 'O').BOTHTC   BOTH GIVEN
         AIF   (T'&LIST EQ 'O').FLAGTC   FLAG ONLY
&NAME    IC    15,&ADDR      SAVE FLAG BYTE
         AIF   ('&LIST'(1,1) EQ '(').LSTTCR   LIST IN REG
         LA    14,&LIST    NEW LIST ADDRESS
         ST    14,&ADDR    STORE IT
.LSTTCR1 STC   15,&ADDR   RESTORE FLAG
         AGO   .PSEUTC1    GO ON
.LSTTCR  ST    &LIST(1),&ADDR   STORE NEW LIST ADDRESS
         AGO   .LSTTCR1
.FLAGTC  ANOP
&NAME    MVI   &ADDR,&FNUM   STORE NEW FLAG
         AGO   .PSEUTC1
.BOTHTC  AIF   ('&LIST'(1,1) EQ '(').BOTHTCR  LIST IN REG
&NAME    LA    14,&LIST  NEW LIST ADDRESS
         ST    14,&ADDR  STORE IT
.BOTHTC1 MVI   &ADDR,&FNUM   NEW FLAG BYTE
         AGO   .PSEUTC1
.BOTHTCR ANOP
&NAME    ST    &LIST(1),&ADDR  STORE NEW LIST ADDRESS
         AGO   .BOTHTC1
.PSEUTC  AIF   (T'&PSEUDO EQ 'O').WHY  EVERYTHING MISSING
         AIF   ('&PSEUDO'(1,1) EQ '(').PSEUTCR  PSEUDO IN REG
&NAME    LA    15,&PSEUDO   NEW PSEUDO POINTER
         ST    15,&ADDR+4   STORE IT
         AGO   .END
.PSEUTCR ANOP
&NAME    ST    &PSEUDO(1),&ADDR+4  STORE NEW PSEUDO POINTER
         AGO   .END
.PSEUTC1 AIF   (T'&PSEUDO EQ 'O').END  PSEUDO OMITTED
         AIF   ('&PSEUDO'(1,1) EQ '(').PSEUTC2  PSEUDO IN REG
         LA    15,&PSEUDO  NEW PSEUDO POINTER
         ST    15,&ADDR+4  STORE IT
         AGO   .END
.PSEUTC2 ST    &PSEUDO(1),&ADDR+4  STORE NEW PSEUDO POINTER
         AGO   .END
.REGTC   AIF   (T'&LIST EQ 'O' AND T'&FLAG EQ 'O').PSEURC  ONLY PSEUDO
         AIF   (T'&LIST NE 'O' AND T'&FLAG NE 'O').BOTHRC  BOTH GIVEN
         AIF   (T'&LIST EQ 'O').FLAGRC  FLAG ONLY
&NAME    IC    15,0(&ADDR(1))  SAVE FLAG BYTE
         AIF   ('&LIST'(1,1) EQ '(').LSTRCR  LIST IN REG
         LA    14,&LIST   NEW LIST ADDRESS
         ST    14,0(&ADDR(1))  STORE IT
.LSTRCR1 STC   15,0(&ADDR(1))  RESTORE FLAG
         AGO   .PSEURC1  GO ON
.LSTRCR  ST    &LIST(1),0(&ADDR(1))  STORE NEW LIST ADDRESS
         AGO   .LSTRCR1
.FLAGRC  ANOP
&NAME    MVI   0(&ADDR(1)),&FNUM  STORE NEW FLAG
         AGO   .PSEURC1  ONWARD
.BOTHRC  AIF   ('&LIST'(1,1) EQ '(').BOTHRCR  LIST IN REG
&NAME    LA    14,&LIST   NEW LIST ADDRESS
         ST    14,0(&ADDR(1))  STORE IT
.BOTHRC1 MVI   0(&ADDR(1)),&FNUM  NEW FLAG BYTE
         AGO   .PSEURC1
.BOTHRCR ANOP
&NAME    ST    &LIST(1),0(&ADDR(1)) STORE NEW LIST POINTER
         AGO   .BOTHRC1
.PSEURC  AIF   (T'&PSEUDO EQ 'O').WHY  EVERYTHING MISSING
         AIF   ('&PSEUDO'(1,1) EQ '(').PSEURCR  PSEUDO IN REG
&NAME    LA    15,&PSEUDO  NEW PSEUDO POINTER
         ST    15,4(&ADDR(1))    STORE IT
         AGO   .END
.PSEURCR ANOP
&NAME    ST    &PSEUDO(1),4(&ADDR(1))  STORE NEW PSEUDO POINTER
         AGO   .END
.PSEURC1 AIF   (T'&PSEUDO EQ 'O').END  PSEUDO OMITTED
         AIF   ('&PSEUDO'(1,1) EQ '(').PSEURC2  PSEUDO IN REG
         LA    15,&PSEUDO  NEW PSEUDO POINTER
         ST    15,4(&ADDR(1))  STORE IT
         AGO   .END
.PSEURC2 ST    &PSEUDO(1),4(&ADDR(1))  STORE NEW PSEUDO POINTER
         AGO   .END
.*
.*                            LIST FORM
.*
.*       NEED EITHER A NAME OR AN ADDR FOR MAKING A NAME FOR THIS
.*
.MFL     AIF   (T'&NAME EQ 'O' AND T'&ADDR EQ 'O').BOTH
.*
.*             THE NAME WILL OVER-RIDE THE ADDR PARAMETER
.*
         AIF   (T'&ADDR EQ 'O').NAME
         AIF   (T'&NAME NE 'O').NAME
.*
.*             IF ADDR IS REG-FORM, NO GOOD
.*
         AIF   ('&ADDR'(1,1) EQ '(').BADADR
&ADDR    DS    0F                  FULLWORD ALIGNMENT
         AGO   .DCNUM
.NAME    ANOP
&NAME    DS    0F                  FULLWORD ALIGNMENT
.DCNUM   AIF   (T'&FLAG EQ 'O').DCNUM1     NEED NOT AHVE A FLAG
         DC    AL1(&FNUM)          FLAG BYTE
         AGO   .DCNUM2      BYPASS
.DCNUM1  DC    AL1(0)               FLAG BYTE
.DCNUM2  AIF   (T'&LIST EQ 'O').MFL1
         DC    AL3(&LIST)          POINTER TO CODES
         AGO   .MFL2
.MFL1    DC    AL3(0)              POINTER TO CODES
.MFL2    AIF   (T'&PSEUDO EQ 'O').MFL3
         DC    A(&PSEUDO)          PSEUDO RETRY ROUTINE
         AGO   .END
.MFL3    DC    A(0)                PSEUDO RETRY ROUTINE
         AGO   .END
.NOPS    MNOTE 8,'PSEUDO PARAMETER OMITTED'
         SPACE 1
         MEXIT
.BADFLAG MNOTE  8,'CANT HAVE BOTH FLAG=CP AND TMP'
         SPACE 1
         MEXIT
.NOLST   MNOTE 8,'LIST PARAMETER OMITTED'
         SPACE 1
         MEXIT
.NOADDR  MNOTE 8,'ADDR PARAMETER OMITTED'
         SPACE 1
         MEXIT
.BOTH    MNOTE 8,'BOTH ADDR AND NAME PARAMETERS OMITTED'
         SPACE 1
         MEXIT
.BADADR  MNOTE 8,'CANNOT NAME STAEPARM WITH A REGISTER'
         SPACE 1
         MEXIT
.WHOKNOW MNOTE 8,'UNKNOWN FLAG TYPE &FLAG'
         SPACE 1
         MEXIT
.WHY     MNOTE 8,'NO OPERANDS ON TYPE=C'
         SPACE 1
         MEXIT
         MEND
./ ADD NAME=STAES
         MACRO
         STAES
         SPACE 1
STAEPARM DSECT
         SPACE 1
*        THIS IS A DSECT OF THE PARAMETERS PASSED TO STAE DURING
*        EXECUTION OF THE STAE MACRO.   THESE ARE PASSED IN THE
*        PARAM= PARAMETER OF THE STAE MACRO WHICH IS PASSED AS THE
*        FIRST WORD OF THE STAEWORK MACRO TO IKJEHSIR.
         SPACE 1
TBLADDR  DS    0A             ADDRESS OF RETRY TABLE
         SPACE 1
STAEFLAG DC    X'00'          FLAG BYTE FOR STAE EXIT
         SPACE 1
*        THE MEANING OF THE FLAG BYTE BITS FOLLOWS:
         SPACE 1
STAEUSER EQU   X'01'          USER WILL HANDLE ABENDS
STAETMP  EQU   X'02'          USER WANTS THE TMP TO HANDLE ABENDS
         SPACE 1
*        IF NEITHER OF THE BITS IS SET, STAEUSER IS ASSUMED
         SPACE 1
*        THE FOLLOWING IS THE POINTER TO THE TABLE OF ABENDS.
*        THIS IS DESCRIBED IN PARAM DSECT
         SPACE 1
STAETBL  DC    AL3(0)         POINTER TO TABLE
         SPACE 1
*        THE FOLLOWING IS THE POINTER TO THE PSEUDO RETRY ADDRESS
*        THIS IS DESCRIBED IN THE RETRY DSECT.
         SPACE 1
RETRYER  DC    A(0)           ADDRESS OF LM & SAVEAREA
         EJECT
RETRY    DSECT
         SPACE 1
*        THIS IS A DSECT OF THE RETRY ADDRESS PASSED TO IKJEHSIR
*        DURING THE EXECUTION OF THE STAE MACRO VIA PARAM=.
         SPACE 1
*        THE FIRST TWO DC'S ARE USED TO OBTAIN ADDRESSABILITY FOR THE
*        USER'S RETRY ROUTINE; THIS ELIMINATES THE PROBLEM OF A
*        PROGRAM THE USER CALLED ABENDING.  WHEN THIS HAPPENS, STAE
*        RETURNS THE REGISTERS BELONGING TO THE CALLED PROGRAM TO
*        THE STAE RETRY ROUTINE.
*              NOTE:  DUE TO MEMMAP RESTRICTION, THESE SHOULD BE DC'S
         SPACE 1
RETRIER  DC    X'980FF008'    LM    R0,R15,8(R15)   LOAD ALL REGISTERS
         DC    X'47F0F000'    B     0(R15)    GO TO RETRY ROUTINE
         SPACE 1
*        THE FOLLOWING 16 DC'S ARE A STORAGE AREA FOR THE USER'S
*        REGISTERS.  THE SLOTS FOR R0, R1, R2 & R15 WILL BE SET UP
*        BY THE IKJEHSIR ROUTINE AS FOLLOWS:
*              R0     THE CODE GIVEN TO THE EXIT ROUTINE BY STAE
*              R1     THE ABEND CODE, RIGHT JUSTIFIED
*              R2     THE ENTRY NUMBER IN LIST OF CODES
*              R15    THE ADDRESS OF THE USERS RETRY ROUTINE
         SPACE 1
RETRYR0  DC    F'0'           STORAGE FOR R0
RETRYR1  DC    F'0'           STORAGE FOR R1
RETRYR2  DC    F'0'           STORAGE FOR R2
RETRYRS  DC    10F'0'         THE REST OF THE REGS
RETRYR13 DC    F'0'           STORAGE FOR R13
RETRYR14 DC    F'0'           STORAGE FOR R14
RETRYR15 DC    F'0'           STORAGE FOR R15
         SPACE 1
*        THE FOLLOWING WORD IS REQUIRED SO THAT THE PUTLINE
*        SERVICE ROUTINE CAN BE INVOKED BY THE STAE EXIT
*        ROUTINE.  IT IS REGISTER 1 AS GIVEN TO THE CP BY
*        THE TMP.  IT IS A POINTER TO FOUR ADDRESSES, SEE
*        THE TMPPARM DSECT.
         SPACE 1
TMPREG1  DC    F'0'           REG 1 FROM TMP
         EJECT
PARAM    DSECT
         SPACE 1
*        THIS IS A DSECT OF THE PARAMETER TABLE OF ADDRESSES OF THOSE
*        ROUTINES WHICH WILL HANDLE SPECIFIC ABENDS.  THIS IS BUILD
*        BY THE USER OF THE STAE EXIT ROUTINE AND PASSED TO THE
*        IKJEHSIR ROUTINE THRU THE PARAM= PARAMETER OF THE STAE MACRO.
         SPACE 1
*        EACH ENTRY IN THE TABLE IS OF THE FOLLOWING FORM, AND MUST
*        BE TWO WORDS LONG.  THE TABLE MUST BE FULLWORD ALIGNED.
         SPACE 1
*  *****************************************************************
*  *         *                                                     *
*  *   FLAG  *    ABEND CODE OR ADDRESS OF LIST OF CODES           *
*  *         *                                                     *
*  *****************************************************************
*  *                                                               *
*  *           ADDRESS OF THE ROUTINE TO HANDLE THE CODE(S)        *
*  *                                                               *
*  *****************************************************************
         SPACE 1
PARMADDR DS    0A             ADDRESS OF LIST OF CODES
         SPACE 1
PARMFLAG DC    X'00'          FLAG BYTE
         SPACE 1
*        THE FOLLOWING IS THE MEANING OF THE FLAG BYTE BITS
         SPACE 1
FLAGONE  EQU   X'01'          RETRY FOR ONE CODE ONLY--CODE FOLLOWS
FLAGMUL  EQU   X'02'          RETRY FOR LIST OF CODES--ADDRESS FOLLOWS
FLAGALL  EQU   X'04'          RETRY ALL OTHER CODES--A ZERO FOLLOWS
FLAGUSER EQU   X'08'          RETRY FOR USER ABENDS
FLAGNMSG EQU   X'10'          DO NOT ISSUE MESSAGE
FLAGEND  EQU   X'80'          END OF TABLE
         SPACE 1
*        THE FOLLOWING CAN BE ONE OF THREE THINGS:  THE ACTUAL ABEND
*        CODE, THE ADDRESS OF A LIST OF CODES, OR A ZERO.
         SPACE 1
PARMCODA DC    X'00'          1ST BYTE OF ADDRESS
PARMCODE DC    H'0'           ABEND CODE
         SPACE 1
*        THE FOLLOWING IS ALWAYS REQUIRED.  IT IS THE ADDRESS OF THE
*        ROUTINE WHICH WILL HANDLE ABENDS; IE, THE USER'S RETRY
*        ROUTINE.
         SPACE 1
PARMRTRY DC    A(0)           ADDRESS OF ROUTINE
         SPACE 1
PARMLNTH EQU   *-PARMADDR     LENTH OF EACH ENTRY
         EJECT
PARMLIST DSECT
         SPACE 1
*        THE FOLLOWING IS A DSECT OF THE LIST OF CODES PASSED TO THE
*        IKJEHSIR ROUTINE BY THE USER THRU THE USE OF THE FLAGMUL
*        BIT OF THE PARMFLAG OF THE PARAM DSECT.  EACH ENTRY IS A
*        HALFWORD LONG, AND MAY BE EITHER A USER OR A SYSTEM ABEND
*        CODE.  THE USER ABEND CODES MUST BE FLAGGED BY THE USE
*        OF THE FLAGUSER IN THE PARMFLAG OF THE PARAM DSECT.  IF THE
*        FLAGUSER IS ON, ALL CODES IN THAT LIST MUST BE USER ABEND
*        CODES.
         SPACE 1
CODES    DC    H'0'           AN ABEND CODE
         SPACE 1
*        THE HIGH ORDER BIT OF CODES IS USED TO SIGNIFY THE END OF THE
*        LIST OF CODES.  IF THE BIT IS ON, THAT IS THE END OF THE LIST
         SPACE 1
CODESEND EQU   X'80'          END OF LIST
         SPACE 1
CODELNTH EQU   *-CODES        LENGTH OF EACH CODE
         EJECT
TMPPARM  DSECT
         SPACE 1
*        THIS IS A DSECT OF THE FOUR WORD AREA PASSED TO THE
*        CP BY THE TMP.  THE UPT, PSCB, AND ECT ARE DESCRIBED
*        IN THEIR RESPECTIVE DSECTS (QV).  THE COMMAND BUFFER
*        IS THE COMMAND AS ENTERED BY THE USER AT THE TERMINAL.
         SPACE 1
TMPCMBUF DC    F'0'           POINTER TO COMMAND BUFFER
TMPUPT   DC    F'0'           POINTER TO THE UPT
TMPPSCB  DC    F'0'           POINTER TO PSCB
TMPECT   DC    F'0'           POINTER TO ECT
         EJECT
STAEWORK DSECT
         SPACE 1
*        THIS IS A DSECT OF THE WORK AREA PASSED TO THE IKJEHSIR
*        ROUTINE BY ASIR.  IT IS USED ONLY TO OBTAIN THE PARAMETER
*        ADDRESS PASSED BY THE USER TO THE STAE SVC.
         SPACE 1
STAEEXIT DC    F'0'           EXIT ROUTINE PARAMETER, PARAM=
STAECODE DC    F'0'           ABEND COMPLETION CODE
STAEPSW  DC    D'0'           PSW AT ABEND TIME
STAEPSWP DC    D'0'           LAST P/P PSW
STAEREGS DC    16F'0'         REGS AT TIME OF ABEND
STAEPGM  DC    CL8' '         NAME OF ABENDING PROGRAM
STAEENT  DC    F'0'           ENTRY POINT OF ABENDING PGM
STAEPAD  DC    F'0'           PADDING
         SPACE 1
STAELNTH EQU   *-STAEWORK     LENGTH OF THE WORK AREA
         MEND
./ ADD NAME=STCTLE
         MACRO
&LABEL   STCTLE &START,&END,&ADDRESS
.*
.**********************************************************************
.*                                                                    *
.*01* MACRO-NAME = STCTLE                                             *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = STCTL EXTENDED                               *
.*                                                                    *
.*01* COPYRIGHT =  5740-XYN COPYRIGHT IBM CORP. 1980,                 *
.*               LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,          *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = USED TO EXTRACT COPIES OF CONTROL REGISTERS 1,       *
.*               3, 4, 5, 7, 12, AND 14 FROM THE PSA OR HARDWARE,     *
.*               WHICHEVER IS APPROPRIATE.  THE OTHER CONTROL         *
.*               REGISTERS ARE MAINTAINED IN THE HARDWARE.            *
.*                                                                    *
.*01* MODULE-TYPE = MACRO                                             *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER                                           *
.*                                                                    *
.*02* MODULE SIZE = 140 LOC                                           *
.*                                                                    *
.*02* RESTRICTIONS = CONTROL REGISTER RANGE MUST NOT GO OFF END OF    *
.*                   BASE REGISTER OF &ADDRESS.                       *
.*                                                                    *
.*01* MACROS = IHBERMAC, IHAPSA (NEEDED TO USE MACRO)                 *
.*                                                                    *
.*01* CHANGE-ACTIVITY = @G38FPXY - MICRO CODE/SIMULATION SUPPORT      *
.*                      @ZM50136 - CHANGE MASKS TO HARD CODE INSTEAD  *
.*                                 OF USING EQUATES IN PSA            *
.*                                                                    *
.*01* MNOTES =  IHB002-INVALID OPERAND SPECIFIED                      *
.*              IHB247-INCORRECT NUMBER OF OPERAND VALUES             *
.*                                                                    *
.**********************************************************************
.* A-000000-999999                                             @G38FPXY
.*
*        MACDATE = 80.029
.*
.*       MACRO VARIABLE DECLARES
.*
         LCLA  &I                 INDEX VARIABLE
         LCLC  &C                 BRANCH CONDITION
         LCLB  &SIMTEST           SIMULATION TEST NEEDED FLAG
         LCLA  &OFFSET            MVC OFFSET FROM BEG OF OPER
         LCLA  &WRAPFAC           WRAP-AROUND FACTOR FOR OFFSET
         LCLA  &LENGTH            MVC LENGTH OPERAND
         LCLC  &TO                MVC 'TO' OPERAND
         LCLC  &TOBEG             BEGINNING OF MVC 'TO' OPERAND
         LCLC  &TOEND             END OF MVC 'TO' OPERAND
         LCLC  &POSITN            MACRO OPERAND POSITION
         LCLC  &OPERAND           MACRO OPERAND
         LCLC  &PARM1,&PARM2      IHBERMAC PARAMETERS
         LCLA  &SUBBEG            FIRST CONTROL REGISTER OF SUBRANGE
         LCLA  &SUBEND            LAST CONTROL REGISTER OF SUBRANGE
         LCLA  &TEMPBEG           FIRST CNTL REG OF TEMPORARY RANGE
         LCLA  &TEMPEND           LAST CNTL REG OF TEMPORARY RANGE
         LCLA  &PTI,&PTSIZE       CNTL REG TABLE (PT) INDEX & SIZE
         LCLA  &PTBEG(8)          FIRST CNTL REG OF SIMULATION REGS
         LCLA  &PTEND(8)          LAST CNTL REG OF SIMULATION CNTL REGS
         LCLC  &PTREGC(16)        CNTL REG CHAR REP FOR 0-F (HEX)
.*
.*  THE &PTBEG AND &PTEND ARRAYS CONTAIN RANGES OF SIMULATED
.*  CONTROL REGISTERS, &PTBEG BEING THE FIRST CNTL REG IN THE RANGE
.*  AND &PTEND BEING THE LAST CNTL REG IN THE RANGE. THESE RANGES
.*  MUST BE IN ASCENDING ORDER IN THE ARRAYS FROM ENTRY #1
.*  THRU ENTRY # &PTSIZE; I.E. THE FOLLOWING MUST HOLD:
.*
.*     &PTBEG(I) <= &PTEND(I) < &PTBEG(I+1) <= &PTEND(I+1)
.*             FOR I=1,2,...,&PTSIZE-1
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       INITIALIZE THE SIMULATION CONTOL REGISTER TABLES             *
.*                                                                    *
.**********************************************************************
.*
&PTSIZE  SETA  5                  NUMBER OF TABLE ENTRIES
.*
&PTBEG(1) SETA 1                  INIT ENTRY #1   (CNTL REG 1)
&PTEND(1) SETA 1
&PTBEG(2) SETA 3                  INIT ENTRY #2   (CNTL REGS 3-5)
&PTEND(2) SETA 5
&PTBEG(3) SETA 7                  INIT ENTRY #3   (CNTL REG 7)
&PTEND(3) SETA 7
&PTBEG(4) SETA 12                 INIT ENTRY #4   (CNTL REG 12)
&PTEND(4) SETA 12
&PTBEG(5) SETA 14                 INIT ENTRY #5   (CNTL REG 14)
&PTEND(5) SETA 14
.*
&PTREGC(1)  SETC  '0'             INIT CNTL REGS CHAR REP (IN HEX)
&PTREGC(2)  SETC  '1'
&PTREGC(3)  SETC  '2'
&PTREGC(4)  SETC  '3'
&PTREGC(5)  SETC  '4'
&PTREGC(6)  SETC  '5'
&PTREGC(7)  SETC  '6'
&PTREGC(8)  SETC  '7'
&PTREGC(9)  SETC  '8'
&PTREGC(10) SETC  '9'
&PTREGC(11) SETC  'A'
&PTREGC(12) SETC  'B'
&PTREGC(13) SETC  'C'
&PTREGC(14) SETC  'D'
&PTREGC(15) SETC  'E'
&PTREGC(16) SETC  'F'
.*
.*
.**********************************************************************
.*                                                                    *
.*       CHECK &START AND &END TO BE VALID CONTROL REGISTER NUMBERS   *
.*                                                                    *
.**********************************************************************
.*
.*       REQUIRED NUMBER OF OPERANDS IS 3
.*
         AIF   (N'&SYSLIST NE 3).ERR1
.*
.*       FIRST AND SECOND OPERANDS MUST BE DECIMAL DIGITS
.*
&POSITN  SETC  'FIRST'            SET POSITION DESCRIPTION FOR IHBERMAC
&OPERAND SETC  '&START'           SET OPERAND FIELD FOR IHBERMAC
         AIF   (T'&START NE 'N').ERR2
         AIF   (&START LT 0 OR &START GT 15).ERR2
.*
&POSITN  SETC  'SECOND'           SET POSITION DESCRIPTION FOR IHBERMAC
&OPERAND SETC  '&END'             SET OPERAND FIELD FOR IHBERMAC
         AIF   (T'&END NE 'N').ERR2
         AIF   (&END LT 0 OR &END GT 15).ERR2
.*
.*
.*
.*
.*       MACRO INVOCATION IS VALID.  CODE TO BE GENERATED CONSISTS
.*       OF MOVING LOGICAL REGISTER VALUES FROM PSA TO &ADDRESS OR
.*       FROM HARDWARE CONTROL REGISTERS TO &ADDRESS.
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       TEST TO SEE IF SIMULATION CHECK IS NEEDED                    *
.*                                                                    *
.**********************************************************************
.*
&PTI     SETA  1                  INIT PT INDEX FOR LOOP
.*
.PTLP    ANOP                     BEGINNING OF LOOP
.*
         AIF   (&START LE &END).CONT  CHECK FOR WRAP-AROUND; BR IF NOT
.*
.*
.*       WRAP AROUND PRESENT.  IF SPECIAL CONTROL REGISTER IN RANGE
.*       PTBEG-PTEND FOR THIS TABLE ENTRY IS IN RANGE &START-&END,
.*       THEN BRANCH TO GENERATE SIMULATION TEST.
.*
         AIF   ((&START LE &PTEND(&PTI)) OR                            X
               (&END GE &PTBEG(&PTI))).GEN1   BRANCH IF SPECIAL REG
         AGO   .NEXT              TRY NEXT ENTRY IN TABLES
.*
.CONT    ANOP                     WRAP-AROUND NOT PRESENT
.*
.*
.*       IF SPECIAL CONTROL REGISTER IN RANGE PTBEG-PTEND FOR THIS
.*       TABLE ENTRY IS IN RANGE &START-&END, THEN BRANCH TO
.*       GENERATE SIMULATION TEST.
.*
         AIF   ((&START LE &PTEND(&PTI)) AND                           X
               (&END GE &PTBEG(&PTI))).GEN1   BRANCH IF SPECIAL REG
.*
.*
.NEXT    ANOP                     CHECK FOR END OF PT TABLE
&PTI     SETA  &PTI+1             INCREMENT TABLE INDEX
         AIF   (&PTI LE &PTSIZE).PTLP   LOOP BACK IF MORE ENTRIES
.*
.*
.*
.*       SINCE THERE ARE NO SPECIAL CONTROL REGISTERS IN THE RANGE
.*       &START-&END, GENERATE A STCTL FOR THE CONTROL REGISTERS.
.*
&LABEL   STCTL &START,&END,&ADDRESS          .STORE CONTROL REGISTER(S)
.*
         MEXIT
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       SEPARATE BEGINNING AND ENDING OF &ADDRESS                    *
.*                                                                    *
.*       TWO TYPES OF &ADDRESS OPERANDS ARE EXPECTED -                *
.*             1) &ADDRESS=LABEL BECOMES LABEL(&LENGTH), OR           *
.*             2) &ADDRESS=OFFSET(REG) BECOMES OFFSET(&LENGTH,REG)    *
.*       IN GENERATED MVC INSTRUCTION.                                *
.*                                                                    *
.**********************************************************************
.*
.GEN1    ANOP
.*
&I       SETA  1                  INITIALIZE CHARACTER INDEX
.*
.LOOP    ANOP
         AIF   ('&ADDRESS'(&I,1) EQ '(').TYPE2    &ADDRESS HAS REG ?
         AIF   (&I EQ K'&ADDRESS).TYPE1   &ADDRESS IS SYMBOL ONLY ?
&I       SETA  &I+1               INCREMENT CHARACTER INDEX
         AGO   .LOOP              LOOP BACK
.*
.TYPE1   ANOP
&TOBEG   SETC  '&ADDRESS'        INIT BEGINNING OF ADDRESS
&TOEND   SETC  ')'               INIT END OF ADDRESS
         AGO   .GEN2             BRANCH TO CONTINUE
.*
.TYPE2   ANOP
&TOBEG   SETC  '&ADDRESS'(1,&I-1)  INIT BEGINNING OF ADDRESS
&TOEND   SETC  ','.'&ADDRESS'(&I+1,K'&ADDRESS-&I) SET END OF ADDRESS
.*
.*
.*       NOTE: THE DISPLACEMENT MUST NOT CONTAIN AN EXPRESSION WHICH
.*             CONTAINS A '(', AND THEREFORE, A ')'.  IF SO,
.*             ASSEMBLER ERRORS WILL RESULT ALTHOUGH MACRO MNOTES
.*             WILL NOT BE PRODUCED.
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       START GENERATION OF CODE TO HANDLE SIMULATION OF CNTL REGS   *
.*                                                                    *
.**********************************************************************
.*
.GEN2    ANOP
.*
&LABEL   STCTL &START,&END,&ADDRESS          .STORE CONTROL REGISTER(S)
         TM    PSAXMFB1-PSA(0),X'20'         .HARDWARE FEATURE @ZM50136
         BZ    IHB&SYSNDX                    .BRANCH IF HARDWARE AVAIL
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       INITIALIZE PT LOOP VARIABLES DEPENDING ON WRAP-              *
.*       AROUND PRESENT OR NOT PRESENT                                *
.*                                                                    *
.**********************************************************************
.*
         AIF   (&START LE &END).WRAP1    WRAP-AROUND PRESENT ?
.*
.*
.*       INITIALIZE FOR WRAP-AROUND
.*
&WRAPFAC SETA  0                  WRAP FACTOR FOR NON-WRAP SUBRANGE
&SUBBEG  SETA  &START             SET FIRST CNTL REG IN SUBRANGE
&SUBEND  SETA  15                 SET LAST CNTL REG IN SUBRANGE
&PTI     SETA  1                  INITIALIZE PT TABLE INDEX
         AGO   .PTLOOP            GO PROCESS SUBRANGE
.*
.*
.*       INITIALIZE FOR NO WRAP-AROUND
.*
.WRAP1   ANOP
&WRAPFAC SETA  0                  WRAP FACTOR FOR NON-WRAP SUBRANGE
&SUBBEG  SETA  &START             SET FIRST CNTL REG IN SUBRANGE
&SUBEND  SETA  &END               SET LAST CNTL REG IN SUBRANGE
&PTI     SETA  1                  INITIALIZE PT TABLE INDEX
.*
.*
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       PTLOOP --- PROCESS THE SUBRANGE &SUBBEG-&SUBEND.  GENERATE   *
.*             AN MVC FOR ALL SPECIAL CONTROL REGISTERS IN THE PT     *
.*             TABLE WHICH ARE INCLUDED IN THE SUBRANGE.              *
.*                                                                    *
.**********************************************************************
.*
.*
.PTLOOP  ANOP                      BEGINNING OF PT LOOP
.*
.*
.*             IF SPECIAL CNTL REG IN PT RANGE PTBEG-PTEND FOR THIS
.*             TABLE ENTRY IS NOT IN SUBRANGE SUBBEG-SUBEND, THEN
.*             BRANCH TO TRY THE NEXT TABLE ENTRY.  OTHERWISE,
.*             GENERATE CODE FOR THE PT RANGE GIVEN THE SUBRANGE
.*             (I.E. DO NOT GO OUT OF SUBRANGE WITH PT RANGE
.*             CODE GENERATION).
.*
         AIF   (&SUBBEG GT &PTEND(&PTI)).NEXTPT    IF PT ENTRY NOT
         AIF   (&SUBEND LT &PTBEG(&PTI)).NEXTPT    IN RANGE, SKIP IT
.*
.**********************************************************************
.*       PROCESS THIS CONTROL REGISTER RANGE WHICH IS SIMULATED       *
.**********************************************************************
.*
.*
.*
.*             GET TEMPORARY BEGINNING CONTROL REGISTER
.*
&TEMPBEG SETA  &SUBBEG             ASSUME BEG OF SUBRANGE IS BEG OF
.*                                 TEMPORARY RANGE
         AIF   (&SUBBEG GE &PTBEG(&PTI)).CONTA      IF SO, BRANCH
.*
.*             IF SUBRANGE BEGINNING IS BEFORE PT RANGE BEGINNING,
.*             THEN CORRECT THE TEMPORARY BEGINNING REGISTER.
.*
&TEMPBEG SETA  &PTBEG(&PTI)        RESET TEMPORARY BEG CNTL REG
.*
.*
.*
.*             GET TEMPORARY ENDING CONTROL REGISTER
.*
.CONTA   ANOP                     GET LAST CNTL REG IN TEMPORARY RANGE
&TEMPEND SETA  &SUBEND            ASSUME END OF SUBRANGE IS END OF
.*                                TEMPORARY END
         AIF   (&SUBEND LE &PTEND(&PTI)).CONTB   IF SO, BRANCH
.*
.*             IF SUBRANGE ENDING IS AFTER PT RANGE ENDING,
.*             THEN CORRECT THE TEMPORARY ENDING REGISTER.
.*
&TEMPEND SETA  &PTEND(&PTI)       RESET TEMPORARY END CNTL REG
.*
.*
.*
.*
.**********************************************************************
.*             GENERATE MVC TO MOVE CONTROL REGISTER(S) FROM PSA      *
.**********************************************************************
.*
.*
.CONTB   ANOP                     BUILD MVC FOR THIS RANGE
&OFFSET  SETA  (&TEMPBEG-&START+&WRAPFAC)*4   GET OFFSET FROM ADDRESS
&LENGTH  SETA  (&TEMPEND-&TEMPBEG+1)*4   GET MVC LENGTH FOR CNTL REGS
&TO      SETC  '&TOBEG'.'+'.'&OFFSET'           GET THE 'TO'
&TO      SETC  '&TO'.'('.'&LENGTH'.'&TOEND'     OPERAND FOR MVC
.*
         MVC   &TO,PSAXMCR&PTREGC(&TEMPBEG+1).-PSA(0)
*                                            .MOVE LOGICAL CNTL REG(S)
.*
.NEXTPT  ANOP                     LOOP BACK IF NOT END OF TABLES
.*
&PTI     SETA  &PTI+1             INCREMENT PT INDEX
         AIF   (&PTI LE &PTSIZE).PTLOOP   LOOP IF MORE IN TABLES
.*
.*
.*
.*
.**********************************************************************
.*                                                                    *
.*       PTLOOP TERMINATION --- TERMINATE LOOP DEPENDING UPON WRAP-   *
.*             AROUND PRESENCE.  IF IT IS NOT PRESENT, THEN TERMINATE *
.*             THE MACRO.  IF IT IS PRESENT AND THIS IS THE LOOP'S    *
.*             FIRST TERMINATION, THEN RE-INITIALIZE THE LOOP         *
.*             VARIABLES FOR THE SECOND HALF OF PROCESSING AND        *
.*             PERFORM THE LOOP AGAIN.  IF WRAP-AROUND IS PRESENT AND *
.*             THIS IS THE LOOP'S SECOND TERMINATION, THEN            *
.*             TERMINATE THE MACRO.                                   *
.*                                                                    *
.**********************************************************************
.*
.*
         AIF   (&START LE &END).EXIT    BRANCH IF NO WRAP-AROUND
.*
         AIF   (&WRAPFAC EQ 16).EXIT    BRANCH IF SECOND TERMINATION
.*
.*
.**********************************************************************
.*             RE-INITIALIZE PT LOOP VARIABLES                        *
.**********************************************************************
.*
&WRAPFAC SETA  16                 SET WRAP FACTOR FOR WRAP-AROUND
&SUBBEG  SETA  0                  SET FIRST CNTL REG IN NEW SUBRANGE
&SUBEND  SETA  &END               SET LAST CNTL REG IN NEW SUBRANGE
&PTI     SETA  1                  SET PT TABLE INDEX
         AGO   .PTLOOP            ENTER PT LOOP FOR SECOND TIME
.*
.*
.**********************************************************************
.*                                                                    *
.*       MACRO TERMINATION                                            *
.*                                                                    *
.**********************************************************************
.*
.EXIT    ANOP                     END OF MACRO PROCESSING
.*
IHB&SYSNDX EQU *
         SPACE
*        NOTE: THE CONDITION CODE IS NOW CHANGED
.*
.*
         MEXIT
.*
.*       MACRO INVOCATION ERRORS
.*
.*
.*       INVALID NUMBER OF OPERANDS
.*
.ERR1    ANOP
         IHBERMAC 1012,OPERAND
         MEXIT
.*
.*       INVALID OPERAND (NOT A VALID DECIMAL DIGIT)
.*
.ERR2    ANOP
         IHBERMAC 1001,&POSITN,&OPERAND
         MEND
./ ADD NAME=STREE
         MACRO
&TAG     STREE &TREE,&TSP=,&T=,&TYPE=,&FIX=NO,&K=,&IVS=,&S=,&MAP=,&C=, *
               &TSPACE=,&RSPACE=,&RSP=,&KEYL=,&OFFSET=,&RECL=
.**********************************************************************
.*               ****** SEPTEMBER 27,1973.  *******
.**********************************************************************
.* THE STREE MACRO-INSTRUCTION IS USED TO CREATE A RADIX PARTITION    *
.* TREE FOR SUBSEQUENT USE. THE STREE SUBROUTINE IN THE MODULE        *
.* IGARPT01 OBTAINS SPACE FOR THE RPT, AND STORES THE INFORMATION     *
.* SUPPLIED IN A CONTROL BLOCK FOR THE RPT. THE ADDRESS OF THIS       *
.* CONTROL BLOCK IS RETURNED IN REGISTER 1, AND IS (OPTIONALLY) STORED*
.* IN THE MAIN STORAGE LOCATION SPECIFIED BY THE TREE PARAMETER.      *
.*                                                                    *
.* THE ADDRESS RETURNED BY THE STREE MACRO-INSTRUCTION MUST BE USED   *
.* FOR ALL SUBSEQUENT OPERATIONS WITH IT USING THE OTHER RPT          *
.* MACRO-INSTRUCTIONS, SUCH AS SRCH, DEL, INS, SCANL, SCANR, FTREE,   *
.* ETC. THE ADDRESS CAN BE STORED EITHER IN A MAIN STORAGE LOCATION   *
.* VIA THE TREE PARAMETER, OR MAY BE PUT IN A REGISTER BY CODING      *
.* "(GPR)" FOR THE TREE PARAMETER, WHERE "GPR" IS THE REGISTER NAME OR*
.* NUMBER.                                                            *
.*                                                                    *
.* THE SPACE FOR THE RPT CAN BE OBTAINED VIA THE GSPACE               *
.* MACRO-INSTRUCTION USING A PREVIOUSLY ESTABLISHED SPACE CONTROL     *
.* AREA, OR MAY BE OBTAINED IMPLICITLY VIA THE GSPACE                 *
.* MACRO-INSTRUCTION USING THE APPROPRIATE SPACE CONTROL AREA FROM THE*
.* TCB (SEE THE DESCRIPTION OF THE GSPACE MACRO-INSTRUCTION FOR THE   *
.* USE OF SPACE CONTROL AREAS).                                       *
.*                                                                    *
.* THERE ARE DIFFERENT TYPES OF RADIX PARTITION TREES, WHICH ARE      *
.* DIFFERENTIATED FROM ONE ANOTHER BY CODING THE T PARAMETER ON ALL   *
.* THE MACRO-INSTRUCTIONS THAT DEAL WITH RPTS. THERE ARE LIMITATIONS  *
.* ON THE OPERATIONS THAT MAY BE INVOKED WITH THE DIFFERENT RPT TYPES,*
.* DEPENDING ON THE RPT TYPE.                                         *
.*                                                                    *
.* THE ALLOCATION OF SPACE, AS DESCRIBED ABOVE, APPLIES TO TYPE 8     *
.* RADIX PARTITION TREES. THE GSPACE MACRO-INSTRUCTION IS ALWAYS USED *
.* TO ALLOCATE THE SPACE FOR A TYPE 8 RPT.                            *
.* THE SPACE FOR THE RPT CAN BE OBTAINED EITHER CONDITIONALLY OR      *
.* UNCONDITIONALLY, DEPENDING ON THE C PARAMETER. IF "C=C" IS CODED,  *
.* THEN THE ALLOCATION IS VIA A CONDITIONAL GSPACE OPERATION, WHICH   *
.* HAS A RETURN CODE FOR THE STREE MACRO-INSTRUCTION OF -1 IF THE     *
.* SPACE COULD NOT BE ALLOCATED, OR HAS A RETURN CODE IN REGISTER 15  *
.* WHICH IS THE ADDRESS OF THE RPT'S CONTROL BLOCK (CALLED THE TREE   *
.* HEADER, OR THE ADDRESS OF THE RPT).                                *
.* FOR TYPE 5 RADIX PARTITION TREE, THE SPACE IS ALWAYS OBTAINED VIA  *
.* THE GETMAIN MACRO-INSTRUCTION, AND A CONDITIONAL GETMAIN IS ALWAYS *
.* USED, UNLESS THE C PARAMETER IS CODED "C=U".                       *
.*                                                                    *
.**********************************************************************
.* WITH TYPE 8 RADIX PARTITION TREES, THE FOLLOWING OPERATIONS ARE    *
.* EFFECTIVE:                                                         *
.*                                                                    *
.* SRCH: SEARCH FOR A GIVEN KEY.                                      *
.* INS:  INSERT A NEW KEY-ADDRESS ASSOCIATION PAIR.                   *
.* DEL:  DELETE A KEY-ADDRESS ASSOCIATION PAIR SELECTED BY THE CURRENT*
.*       SETTING OF THE CURSOR (SEE THE DESCRIPTION OF THE CURSOR     *
.*       UNDER THE ISCAN MACRO-INSTRUCTION DESCRIPTION).              *
.* ISCAN:INITIALIZE THE CURSOR FOR SUBSEQUENT SCANNING OPERATIONS.    *
.* SCANL:SCAN LEFT TO THE NEXT KEY IN DESCENDING ORDER.               *
.* SCANR:SCAN RIGHT TO THE NEXT KEY IN ASCENDING ORDER.               *
.* FTREE:RELEASE ALL THE SPACE FOR THE RPT TO THE SYSTEM VIA THE      *
.*       FSPACE MACRO-INSTRUCTION.                                    *
.*                                                                    *
.* THE MAXIMUM KEY LENGTH THAT CAN BE SUPPORTED WITH TYPE 8 RADIX     *
.* PARTITION TREES IS 256 BYTES.                                      *
.**********************************************************************
.*                                                                    *
.* WITH TYPE 5 RADIX PARTITION TREES, THE FOLLOWING OPERATIONS ARE    *
.* VALID:                                                             *
.*                                                                    *
.* SRCH: SEARCH FOR A GIVEN KEY AND SET THE CURSOR TO THE             *
.*       CORRESPONDING KEY-ADDRESS PAIR.                              *
.* INS:  INSERT A NEW KEY-ADDRESS PAIR.                               *
.* DEL:  DELETE A KEY-ADDRESS PAIR BASED ON THE CURRENT SETTING OF THE*
.*       CURSOR.                                                      *
.* FTREE:FREE THE SPACE FOR THE TREE BY RELEASING IT TO THE SYSTEM VIA*
.*       THE FREEMAIN MACRO-INSTRUCTION.                              *
.*       NO OTHER OPERATIONS ARE VALID FOR TYPE 5 TREES.              *
.*                                                                    *
.*       THE MAXIMUM SIZE KEY PERMITTED WITH TYPE 5 TREES IS 16 BYTES.*
.*       THE KEY MUST ALWAYS BE PRESENTED AS A SINGLE FIELD FOR THE   *
.*       SRCH AND INS MACRO-INSTRUCTIONS, UNLIKE TYPE 8 TREES, WHERE  *
.*       THE KEY IS PERMITTED TO BE COMPOSED OF A NUMBER OF SCATTERED *
.*       FIELDS.                                                      *
.*                                                                    *
.* THE MAIN REASON FOR HAVING TYPE 5 RADIX PARTITION TREES IS TO ALLOW*
.* SEARCHES TO PROCEED IN A MULTIPROCESSING SITUATION SIMULTANEOUSLY  *
.* WITH AN INSERT OR DELETE IN PROGRESS. THIS IS ACCOMPLISHED WITHOUT *
.* NEEDING TO LOCK THE RPT HEADER.                                    *
.**********************************************************************
.* THE MEANING AND USE OF THE VARIOUS PARAMETERS FOR THE STREE        *
.* MACRO-INSTRUCTION ARE AS FOLLOWS:                                  *
.*                                                                    *
.* TREE: THIS PARAMETER SPECIFIES WHERE TO PUT THE ADDRESS OF THE     *
.*       RADIX PARTITION TREE AFTER IT HAS BEEN ESTABLISHED. IT MAY   *
.*       SPECIFY EITHER A MAIN STORAGE LOCATION OR A GENERAL REGISTER.*
.*                                                                    *
.* TSP:  THIS PARAMETER SPECIFIES THE SUBPOOL TO BE USED FOR          *
.*       ALLOCATING SPACE FOR THR RPT, BOTH INITIALLY AND LATER WHEN  *
.*       SPACE IS NEEDED FOR INSERTIONS.                              *
.*                                                                    *
.* T:    THIS SPECIFIES THE RPT TYPE. IT MAY BE 5 OR 8. IF IT IS      *
.*       ELIDED, THE RPT TYPE IS 8.                                   *
.*                                                                    *
.* FIX:  THIS PARAMETER SPECIFIES WHETHER A PGFIX OPERATION MUST BE   *
.*       PERFORMED ON THE PAGES CONTAINING THE IGARPT01 MODULE. IF    *
.*       "FIX=YES" IS CODED, THEN THE PGFIX OPERATION IS GENERATED AS *
.*       PART OF THE STREE MACRO EXPANSION.                           *
.*                                                                    *
.* K:    THIS SPECIFIES THE DISPLACEMENT AND LENGTH OF THE KEY, AS A  *
.*       DISPLACEMENT-LENGTH PAIR. IT IS CODED AS "K=(D,L)", WHERE D  *
.*       IS THE DISPLACEMENT FROM THE START OF ANY ADDRESS ASSOCIATED *
.*       WITH A KEY AND THE FIRST BYTE OF THE KEY. THE DISPLACEMENT   *
.*       MAY NOT EXCEED 4095 BYTES.                                   *
.*       L IS THE LENGTH OF THE KEYS, IN BYTES. IF VARIABLE LENGTH    *
.*       KEYS ARE USED, THEY ARE TREATED AS IF THEY ARE ALL THE SAME  *
.*       LENGTH, I. E. L BYTES LONG. AS LONG AS THE SET OF KEYS DO NOT*
.*       CONTAIN TWO BYTE STRINGS SUCH THAT ONE IS A PROPER SUBSTRING *
.*       OF THE OTHER ONE, THIS WILL NOT CAUSE A PROBLEM, SINCE THE   *
.*       COMPARISONS DO NOT EXTEND PAST THE POINT OF INEQUALITY OF ANY*
.*       TWO KEYS.                                                    *
.*                                                                    *
.* S:    THIS SPECIFIES THE ADDRESS OF THE SPACE CONTROL AREA IF A    *
.*       SPACE CONTROL AREA IS EXPLICITLY USED TO ALLOCATE AND RELEASE*
.*       THE STORAGE FOR THE RPT. THE SPACE CONTROL ADDRESS IS THE    *
.*       WORD THAT IS RETURNED FROM THE GSPACE MACRO-INSTRUCTION WHEN *
.*       "GSPACE S,..ETC. " IS CODED. SEE THE DESCRIPTION OF THE      *
.*       GSPACE MACRO-INSTRUCTION FOR A MORE COMPLETE DISCUSSION OF   *
.*       THE USE OF THE SPACE CONTROL WORD.                           *
.*                                                                    *
.* C:    THIS IS USED TO SPECIFY A CONDITIONAL OR UNCONDITIONAL       *
.*       ATTEMPT TO ALLOCATE THE SPACE FOR THE RPT INITIALLY. IF "C=C"*
.*       IS CODED, THE REQUEST IS A CONDITIONAL REQUEST. IF "C=U" IS  *
.*       CODED THE REQUEST IS UNCONDITIONAL. IF THE C PARAMETER IS NOT*
.*       CODED, THE REQUEST IS CONDITIONAL.                           *
.*                                                                    *
.* MAP:  THIS PARAMETER IS USED WHEN THE ADDRESSES ASSOCIATED WITH    *
.*       KEYS IN THE RPT ARE NOT ADDRESSES OF AREAS CONTAINING THE    *
.*       CORRESPONDING KEYS. THIS PARAMETER SPECIFIES THE ADDRESS OF A*
.*       SUBROUTINE TO BE EXECUTED WHEN THE RPT MODULE (IGARPT01) MUST*
.*       ACCESS A KEY USING ONE OF THE ADDRESSES FROM A KEY-ADDRESS   *
.*       PAIR. THE ADDRESS SPECIFIED BY THE MAP PARAMETER IS STORED IN*
.*       THE TREE HEADER, AND WHENEVER THE IGARPT01 MODULE MUST ACCESS*
.*       A KEY FROM ONE OF THE ADDRESSES THE ADDRESS ASSOCIATED WITH  *
.*       THE KEY IS PLACED IN REGISTER 1, AND A LINK IS MADE TO THE   *
.*       SUBROUTINE SPECIFIED BY THE MAP PARAMETER. UPON ENTRY TO THIS*
.*       ROUTINE A REGISTER SAVE AREA IS AVAILABLE USING THE ADDRESS  *
.*       IN REGISTER 13. THE MAPPING SUBROUTINE MAY STORE IT'S        *
.*       REGISTERS IN THE SAVE AREA PROVIDED. THE MAPPING SUBROUTINE  *
.*       MUST RESTORE ALL REGISTERS EXCEPT 0, 14, AND 15 TO THEIR     *
.*       CONTENTS UPON ENTRY.                                         *
.*                                                                    *
.*       THE MAPPING SUBROUTINE MUST COMPUTE THE ADDRESS OF THE       *
.*       CORRESPONDING KEY FROM THE ADDRESS FURNISHED IN REGISTER 1,  *
.*       AND LEAVE IT IN REGISTER 0 UPON RETURN TO THE IGARPT01       *
.*       MODULE. IF THE K PARAMETER HAS BEEN CODED "K=(D,L)" IN THE   *
.*       STREE MACRO-INSTRUCTION, THEN THE ADDRESS LEFT IN REGISTER 0 *
.*       MUST BE EQUAL TO THE ADDRESS OF THE CORRECT KEY MINUS THE    *
.*       DISPLACEMENT D, SINCE THE IGARPT01 MODULE WILL ADD THE       *
.*       DISPLACEMENT D TO THE ADDRESS IN REGISTER 0 TO FORM THE      *
.*       ADDRESS OF THE FIRST BYTE OF THE KEY.                        *
.*                                                                    *
.*       A TYPICAL USE OF THIS FEATURE WOULD BE TO STORE RECORDS ON A *
.*       DISK USING A BDAM ORGANIZATION, WHERE THE ADDRESSES          *
.*       ASSOCIATED WITH THE KEYS ARE THE BDAM BLOCK NUMBERS OF THE   *
.*       CORRESPONDING RECORDS. THEN THE MAPPING SUBROUTINE TAKES THE *
.*       BDAM BLOCK NUMBER IN REGISTER 1, READS THE CORRESPONDIN BDAM *
.*       BLOCK, AND PUTS THE MAIN STORAGE ADDRESS OF THE REOCRD READ  *
.*       IN REGISTER 0 PRIOR TO RETURNING TO THE IGARPT01 MODULE. IN  *
.*       THIS WAY THE ADDRESSES ASSOCIATED WITH THE KEYS IN THE RPT   *
.*       CAN BE COMPLETELY ARBITRARY, TO BE RESOLVED WHEN NEEDED BY   *
.*       THE MAPPING SUBROUTINE.                                      *
.*                                                                    *
.*       THE ADDRESS OF THE MAPPING SUBROUTIE CAN BE IN A REGISTER BY *
.*       CODING "MAP=(GPR)", WHERE "GPR" IS THE NAME OR NUMBER OF THE *
.*       REGISTER CONTAINING THE ADDRESS OF THE MAPPING SUBROUTINE. IF*
.*       "MAP=LABEL" IS CODED, THE ADDRESS OF THE MAPPING SUBROUTINE  *
.*       IS AT THE LOCATION "LABEL". A BRANCH TO THE SPECIFIED LABEL  *
.*       SHOULD RESULT IN EXECUTION OF THE MAPPING SUBROUTINE. THE    *
.*       ADDRESS IS FORMED BY EXECUTINNG A LOAD-ADDRESS INSTRUCTION   *
.*       WITH THE SPECIFIED LABEL.                                    *
.*                                                                    *
.*       IF THE MAP PARAMETER IS NOT CODED THERE IS NO ATTEMPT MADE TO*
.*       EXECUTE A MAPPING SUBROUTINE BY THE IGARPT01 MODULE. IN THIS *
.*       CASE EVERY ADDRESS ASSOCIATED WITH A KEY MUST BE THE MAIN    *
.*       STORAGE ADDRESS OF AN AREA CONTAINING THE KEY.               *
.*                                                                    *
.*       THE PARAMETERS IVS, TYPE, TSPACE, RSPACE, RSP, KEYL, OFFSET, *
.*       AND RECL ARE ONLY PRESENT FOR COMPATIBILITY WITH EARLIER     *
.*       VERSIONS OF THE STREE MACRO-INSTRUCTION, AND SHOULD NOT BE   *
.*       USED, AS THEY ARE NOT SUPPORTED IN ANY CONTEXT OTHER THAN THE*
.*       ONE THEY WERE USED IN ORIGINALLY.                            *
         GBLA  &IGALEFT(256)   LEFT EDGES FOR BINARY TREE PARSE.
         GBLA  &IGARGHT(256)   RIGHT EDGES FOR BINARY TREE PARSE.
         GBLB  &IGARL(256)     LEFT/RIGHT FLAG BITS FOR BINARY PARSE.
         GBLB  &IGAIS(256)     INNER/SINK BIT FLAGS FOR PARSE TREE.
         GBLB  &IGAOKAY        1 IF PARSE DISCOVERED BAD SYNTAX.
         GBLA  &IGAX     TRIPLE FOR SCANNING OPERATION.
         GBLA  &IGAY     XX
         GBLA  &IGAZ     XX
         GBLC  &IGASTRE
         GBLB  &IGALONE  ON TO RUN THE RPT PROGRAMS STANDALONE.
         GBLC  &IGARPT#  THE RADIX PARTITION TREE TYPE.
         GBLB  &IGAPGM  ON IF THIS IS IGARPT01.
         LCLC  &X        LOCAL CHARACTER STRING.
         LCLA  &N        LOCAL VARIABLE.
         LCLA  &I        LOCAL INDEX VARIABLE.
         LCLA  &J        LOCAL VARIABLE.
.*A000000                                                        Y02147
.**********************************************************************
.* CHECK TO SEE IF ANY OF THE OLD PARAMETERS OF THE STREE MACRO ARE   *
.* SPECIFIED, AND IF THEY ARE TRANSLATE THEM TO THE NEW PARAMETERS VIA*
.* THE MACRO RECURSION TECHNIQUE.                                     *
.**********************************************************************
         AIF   ((K'&KEYL EQ 0)AND(K'&OFFSET EQ 0)).NEW  SEE IF THEY ARE*
                         BOTH NOT SPECIFIED.
&TAG     STREE &TREE,TSP=&TSP,T=&T,TYPE=&TYPE,FIX=&FIX,IVS=&IVS,S=&S,  *
               MAP=&MAP,K=(&OFFSET,&KEYL)
         AGO   .FIN      ALL DONE WITH THE MAPPING FROM THE OLD TO THE *
                         NEW FORMATS, NOW EXIT FROM THE STREE MACRO.
.NEW     ANOP
.**********************************************************************
.* CHECK THE TYPE AND T PARAMETERS TO SEE IF A VALID RPT TYPE IS      *
.* SPECIFIED. IF NEITHER IS SPECIFIED, ASSUME IT IS TYPE 8 RPT. THE   *
.* TYPE IS PUT INTO THE GLOBAL VARIABLE &IGARPT# AT THE END OF THE    *
.* TYPE CHECKING SECTION.                                             *
.**********************************************************************
.RPT#    AIF   (K'&T EQ 0).RPT#TMT  SEE IF THE T PARAMETER IS CODED.
         AIF   (K'&TYPE EQ 0).RPT#TCK  USE THE T PARAMETER IF IT IS    *
                         CODED AND THE TYPE PARAMETER IS NOT CODED.
.**********************************************************************
.* BOTH THE T AND TYPE PARAMETERS ARE CODED; SEE IF THEY ARE THE SAME,*
.* AND IF THEY ARE NOT THEN USE T.                                    *
.**********************************************************************
         AIF   ('&T' EQ '&TYPE').RPT#TCK  IF THEY ARE THE SAME THEN USE*
                         T.
         MNOTE 4,'TYPE CONFLICT, ONLY T OR TYPE SHOULD BE CODED.'
.RPT#TCK ANOP
&IGARPT# SETC  '&T'      GET THE RPT TYPE.
         AGO   .RPT#CHK  GO TO CHECK THE VALIDITY OF THE RADIX         *
                         PARTITION TREE TYPE.
.**********************************************************************
.* THE T PARAMETER IS NOT CODED, SEE IF THE TYPE PARAMETER IS CODED.  *
.**********************************************************************
.RPT#TMT AIF   (K'&TYPE EQ 0).RPT#8  IF BOTH ARE LEFT OUT USE TYPE 8   *
                         RPT.
&IGARPT# SETC  '&TYPE'   SET THE TYPE TO THE TYPE THAT IS SPECIFIED BY *
                         THE TYPE PARAMETER.
         AGO   .RPT#CHK  GO CHECK IT FOR VALIDITY.
.RPT#8   ANOP
&IGARPT# SETC  '8'       SET THE RPT TYPE TO 8.
.RPT#CHK AIF   (('&IGARPT#' EQ '8')OR('&IGARPT#' EQ '5')OR('&IGARPT#' E*
               Q '4')).RPT#FIN
         MNOTE 4,'INVALID RPT TYPE, TYPE 8 ASSUMED.'
&IGARPT# SETC  '8'       USE TYPE 8 RPT.
.RPT#FIN ANOP
      RPTDSECT T=&IGARPT#,DS=NO
.**********************************************************************
.* GET THE ADDRESS OF THE MODULE IGARPT01 IN REGISTER 14 FOR THE LINK *
.* TO THE APPROPRIATE ROUTINE TO SET UP THE RPT.                      *
.**********************************************************************
         AIF   (K'&S NE 0).USE@S  SEE IF THE SPACE CONTROL ADDRESS IS  *
                         CODED; BECAUSE IF IT IS THE ADDRESS CAN BE    *
                         LOADED DIRECTLY FROM IT.
         AIF   (&IGALONE).LOAD  IF THIS IS THE STAND-ALONE CASE USE THE*
               LOAD MACRO TO LOAD THE MODULE IGARPT01.
&TAG   RPTDSECT GEN=(CVTRPT,14)  GET THE ADDRESS FROM THE CVT.
         AGO   .LOADED   THE ADDRESS IS IN GPR 14.
.LOAD    LOAD  EP=IGARPT01  LOAD THE MODULE.
         LR    14,0
         AGO   .LOADED   ALL DONE GETTING THE ADDRESS IN R14.
.USE@S   AIF   ('&S'(1,1) EQ '(').USESGPR  SEE IF THE SPACE CONTROL    *
               ADDRESS IS IN A GENERAL PURPOSE REGISTER.
         L     15,&S     LOAD THE ADDRESS OF THE SPACE CONTROL AREA.
         L     14,0(,15) ADDRESS OF IGARPT01.
         AGO   .LOADED   ALL LOADED NOW.
.USESGPR AIF   ('&S' EQ '(15').LOAD14  SEE IF IT IS ALREADY IN R15.
         LR    15,&S(1)  SPACE CONTROL ADDRESS.
.LOAD14  L     14,0(,15)  ADDRESS OF IGARPT01.
.LOADED  ANOP
.**********************************************************************
.* CHECK TO SEE IF A PGFIX OPERATION MUST BE DONE ON THE RPT MODULE.  *
.**********************************************************************
         AIF   (K'&FIX EQ 0).NOFIX  GO AROUND THE PGFIX IF IT IS NOT   *
               CODED IN THE STREE MACRO-INSTRUCTION.
         AIF   (('&FIX'(1,1) NE 'Y')AND('&FIX'(1,1) NE '1')).NOFIX
         STM   14,3,12(13) SAVE REGS.
         LR    2,14
         LA    3,(3*X'C')(13) ECB ADDRESS.
         MVI   0(3),X'00'
         PGFIX R,A=(2),ECB=(3)
         WAIT  ECB=(3)
         LM    14,12,12(13)  RESTORE REGISTERS.
.NOFIX   ANOP
.**********************************************************************
.* NOW PUT THE STREE PARAMETERS IN REGISTERS 0, 1, AND 15, AND LINK TO*
.* THE MODULE IGARPT01 TO SET UP THE RADIX PARTITION TREE OF THE      *
.* INDICATED TYPE.                                                    *
.* THE REGISTER CONTENTS UPON LINKING TO THE MODULE IGARPT01 ARE:     *
.* R0    KEYI, TYPE, AND KEY LENGTH. THE KEY INDEX IS A HALFWORD      *
.*       OFFSET, THE TREE TYPE IS A 7-BIT #, AND THE KEY LENGTH IS A  *
.*       9-BIT #.                                                     *
.* R1    THE ADDRESS OF THE MAPPING SUBROUTINE (IF THERE IS A MAPPING *
.*       SUBROUTINE).                                                 *
.* 14    THE ADDRESS OF THE MODULE IGARPT01.                          *
.* R15   TSP,S - THE TREE SUBPOOL AND THE ADDRESS OF THE SPACE CONTROL*
.*       AREA (IF THERE IS ONE).                                      *
.**********************************************************************
         AIF   (K'&TSP EQ 0).SPZERO  SEE IF THE SUBPOOL IS NOT CODED.
         AIF   ('&TSP' EQ '0').SPZERO  SEE IF SUBPOOL ZERO IS          *
                         EXPLICITLY CODED.
         AIF   (K'&S EQ 0).SELIDED  SEE IF THE SPACE CONTROL ADDRESS IS*
                         NOT CODED.
         AIF   ('&S'(1,1) EQ '(').SINGPR  SEE IF THE SPACE CONTROL     *
                         ADDRESS IS IN A GPR.
         LA    15,0(,15)
.S15AL   AL    15,=AL1(&TSP,0,0,0)  RPT SUBPOOL.
         AGO   .GOT15    GOT REGISTER 15 SET UP NOW.
.SINGPR  LA    15,0(,&S(1))  SPACE CONTROL ADDRESS.
         AGO   .S15AL    NOW GO ADD IN THE SUBPOOL NUMBER.
.SELIDED LA    15,&TSP   RPT SUBPOOL.
         SLL   15,24
         AGO   .GOT15    GOT REGISTER 15 ALL SET UP NOW.
.SPZERO  AIF   (K'&S EQ 0).NOSORSP  SEE IF THERE IS NEITHER A SPACE    *
                         CONTROL ADDRESS NOR A SUBPOOL CODED.
         LA    15,0(,15)
         AGO   .GOT15    ALL DONE SETTING UP REGISTER 15 NOW.
.NOSORSP SLR   15,15     SUBPOOL ZERO.
.GOT15   ANOP
.**********************************************************************
.* NOW PUT THE KEY INDEX, THE RPT TYPE #, AND THE KEY LENGTH IN       *
.* REGISTER 0.                                                        *
.**********************************************************************
         AIF   (K'&K NE 0).KNOTMT  SEE IF THE K PARAMETER IS CODED.
.KMNOTE  MNOTE 12,'"K=(DISPLACEMENT,KEY LENGTH)" MUST BE CODED.'
         AGO   .FIN      CAN'T DO ANY MORE WITH THIS, EXIT.
.KNOTMT  AIF   (N'&K EQ 2).KHAS2  SEE IF THERE ARE EXACTLY 2 OPERANDS  *
                         IN THE K PARAMETER.
         AIF   (N'&K NE 1).KMNOTE  SEE IF THERE IS JUST ONE.
&X       SETC  '&K(1)'(1,1)  GET THE FIRST CHARACTER OF THE FIRST      *
                         ELEMENT IN THE K PARAMETER.
         AIF   ((('&X' EQ '0')OR('&X' EQ '1')OR('&X' EQ '2')OR('&X' EQ *
               '3')OR('&X' EQ '4')OR('&X' EQ '5')OR('&X' EQ '6')OR('&X'*
                EQ '7')OR('&X' EQ '8')OR('&X' EQ '9'))).K1#
         LA    0,&K
         LH    1,*-2     OFFSET TO KEY + BASE REGISTER.
         N     1,=XL4'00000FFF'  ELIMINATE BASE REGISTER.
         SLL   1,7
         LA    0,&IGARPT#.(,1)  RPT TYPE.
&X       SETC  'L'''
         LA    1,&X&K
         SLL   0,16
         ALR   0,1
         AGO   .GETMAP   GO SEE IF THE MAP IS CODED.
.K1#     L     0,=AL4(B'1000000000'*&IGARPT#+&K)  RPT# &KL.
         MNOTE 0,'DISPLACEMENT TO KEY ASSUMED ZERO.'
         AGO   .GETMAP   ALL DONE WITH K NOW.
.KHAS2   ANOP
         AIF   (K'&K(1) EQ 0).KDSP0  CHECK FOR A ZERO DISPLACEMENT.
         AIF   ('&K(1)' EQ '0').KDSP0  SEE IF THE ZERO DISPLACEMENT IS *
                         EXPLICITLY CODED.
         LA    1,&K(1)   DISPLACEMENT TO THE KEY.
         SLL   1,7
         LA    0,&IGARPT#.(,1)  RPT TYPE.
         AGO   .GOTKDSP  ALL FINISHED SETTING UP DISPLACEMENT AND RPT  *
                         TYPE NOW.
.KDSP0   LA    0,&IGARPT#  RPT TYPE.
.GOTKDSP SLL   0,9
         LA    1,&K(2)   KEY LENGTH IN BYTES.
         ALR   0,1
.GETMAP  ANOP
         AIF   (K'&MAP EQ 0).NOMAP  SEE IF THE ADDRESS OF THE MAPPING  *
                         SUBROUTINE IS SPECIFIED.
         AIF   ('&MAP' EQ '0').NOMAP  SEE IF IT IS EXPLICITLY CODED AS *
                         ZERO.
         AIF   ('&MAP'(1,1) EQ '(').MAPGPR  SEE IF THE ADDRESS OF THE  *
                         MAPPING SUBROUTINE IS IN A GENERAL REGISTER.
         L     1,=AL4(&MAP)  ADDRESS OF MAPPING SUBROUTINE.
         AGO   .GOTMAP   ALL FINISHED SETTING UP REGISTER 1 NOW.
.MAPGPR  LR    1,&MAP(1)  ADDRESS OF MAPPING SUBROUTINE.
         AGO   .GOTMAP   ALL DONE WITH R1 NOW.
.NOMAP   SLR   1,1       INDICATE NO MAPPING SUBROUTINE PRESENT.
.GOTMAP  ANOP
.**********************************************************************
.* CHECK THE INNER VERTEX SIZE FOR 8 OR 12 BYTES, AND SET BIT 0 OF    *
.* REGISTER R1 TO 0 IF IT IS 8 BYTES, OR TO 1 IF IT IS 12 BYTES. IF IT*
.* IS NEITHER 8 NOR 12 BYTES GENERATE THE MNOTE.                      *
.**********************************************************************
         AIF   ('&IGARPT#' NE '8').SKIPIVS  SEE IF THIS IS A TYPE 8    *
                         RPT.
         AIF   (K'&IVS EQ 0).IVSIS8  THE DEFAULT INNER VERTEX SIZE IS 8*
                         BYTES.
         AIF   ('&IVS' EQ '8').IVSIS8  SEE IF THE INNER VERTEX SIZE IS *
                         8 BYTES.
         AIF   ('&IVS' EQ '12').IVSIS12  SEE IF THE INNER VERTEX SIZE  *
                         IS 12 BYTES.
         MNOTE 12,'INVALID INNER VERTEX SIZE, CAN ONLY BE 8 OR 12.'
         AGO   .IVSFIN   GO ON AND CHECK OTHER THINGS.
.IVSIS8  LA    1,0(,1)   SET BIT 0 TO 0 FOR IVS=8.
         AGO   .IVSFIN   ALL DONE SETTING UP R1 NOW.
.IVSIS12 O     1,=XL4'80000000'  INDICATE IVS=12.
.IVSFIN  ANOP
.SKIPIVS ANOP
.**********************************************************************
.* LINK TO THE STREE SUBROUTINE IN THE MODULE IGARPT01. IF THE C      *
.* PARAMETER IS CODED "C=Y", "C=1", OR "C=" THEN A BAL IS GENERATED TO*
.* INDICATE CONDITIONAL GSPACE/GETMAIN OPERATIONS. IF "C=N" OR "C=0"  *
.* IS CODED THE REQUEST IS UNCONDITIONAL, AND A BALR IS GENERATED FOR *
.* THE LINK TO THE STREE ROUTINE IN THE MODULE IGARPT01.              *
.**********************************************************************
         AIF   (K'&C EQ 0).LINKC  SEE IF THE C PARAMETER IS NOT CODED.
         AIF   ('&C' EQ 'C').LINKC  SEE IF IT A CONDITIONAL REQUEST.
         AIF   (('&C'(1,1) NE 'Y')AND('&C' NE '1')).LINKU  SEE IF THE  *
                         REQUEST IS UNCONDITIONAL.
.LINKC   BAL   14,&IGASTRE.(,14)  INDICATE CONDITIONAL GSPACE/GETMAIN.
         AGO   .TREE     ALL DONE NOW, EXCEPT FOR THE REGISTER TO      *
                         CONTAIN THE TREE ADDRESS.
.LINKU   LA    14,&IGASTRE.(,14)
         BALR  14,14     INDICATE UNCONDITIONAL GSPACE/GETMAIN.
.TREE    ANOP
         AIF   (K'&TREE EQ 0).STR5R1   GO IF IT'S TO BE LEFT IN R1.
         AIF   ('&TREE'(1,1) NE '(').STR5L   GO IF IT'S NOT A REGISTER.
         AIF   ('&TREE' EQ '(1)').STR5R1  GO IF IT'S ALREADY THERE.
         LR    &TREE(1),1      SAVE THE TREE ADDRESS.
         AGO   .STR5R1         MERGE.
.STR5L   ST    1,&TREE(1)  STORE THE TREE ADDRESS.
.STR5R1  ANOP
         AIF   ('&IGARPT#' NE '5').END  SEE IF THIS IS A TYPE 5 TREE.
      RPTDSECT T=5,DS=YES  GENERATE THE DSECT FOR TYPE 5 TREES.
.END     ANOP
.FIN     ANOP
         MEND
./ ADD NAME=STRING
***********************************************************************
*                                                                     *
* MACRO NAME = STRING                                                 *
*                                                                     *
* DESCRIPTIVE NAME = STRING Macro Instruction for Assembler XF        *
*                                                                     *
* FUNCTION = Provide capabilities similar to PUT EDIT (of PL/I)       *
*            or STRING (of COBOL) to assembler programs.              *
*                                                                     *
* STATUS = R101                                                       *
*                                                                     *
* AUTHOR = Gilbert Saint-Flour <gsf@pobox.com>                        *
*                                                                     *
* ENVIRONMENT = SEE BELOW                                             *
*                                                                     *
*    AMODE  = ANY                                                     *
*    RMODE  = ANY                                                     *
*     SCP   = S/360 OS, OS/VS, MVS/370                                *
* Processor = Assembler XF, Assembler H, High-Level Assembler         *
*     KEY   = ANY                                                     *
*     MODE  = ANY                                                     *
*     APF   = ANY                                                     *
*                                                                     *
* OPERATION = SEE DOCUMENTATION AT THE END OF THIS FILE               *
*                                                                     *
* INVOCATION = SEE DOCUMENTATION AT THE END OF THIS FILE              *
*                                                                     *
* NOTES = SEE DOCUMENTATION AT THE END OF THIS FILE                   *
*                                                                     *
* CHANGE ACTIVITY                                                     *
*                                                                     *
* $101 ASM XF version of STRING R514                                  *
***********************************************************************
         MACRO
&NAME    STRING &INTO=,&PRINT=NOGEN
         GBLA  &$$LIT
         GBLB  &$$FEAT(16)             FEATURES
.*                                       1 LITERALS
.*                                       2 REGISTER (BIN)
.*                                       3 REGISTER (HEX)
.*                                       4 PACKED
.*                                       5 JDATE
.*                                       6 BINARY
.*                                       7 HEX
.*                                       8 NUMERIC
.*                                       9 LEFT JUST (NUMERIC)
.*                                       10 LEADING ZEROES
.*                                       11 TRUNCATE (CHAR STRING)
.*                                       12 %TIME
         GBLC  &MACVERS
         GBLC  &$$LITS(9999)           LITERALS
         LCLA  &I,&J,&L,&N,&FLAG,&LEN2,&BLANKS
         LCLB  &LAST,&BIN,&HEX,&REG,&PACKED,&LEFT,&ZERO,&TRUNC,&NUMERIC
         LCLC  &LABEL,&LQ,&STR,&TO1,&TO2,&P1S,&P2C,&P2L,&P3C,&P3L
         LCLC  &LIT,&ALLFEAT
&MACVERS SETC '101'                    current version
         AIF   ('&PRINT' EQ 'NOGEN').NOGEN
         PUSH  PRINT
         PRINT GEN
.NOGEN   ANOP
         AIF   (T'&INTO EQ 'O' AND N'&SYSLIST EQ 1                     X
               AND '&SYSLIST(1)' EQ 'GENERATE').GENL
&LABEL   SETC  'IHB&SYSNDX'            STEM FOR LOCAL LABELS
&LQ      SETC  'L'''                   LENGTH ATTRIBUTE
&STR     SETC  ' R&MACVERS XF '
&NAME    L     R15,=A(@STR002)&STR     Routine Address
         BALR  R14,R15                 CALL @STRING Routine
         AIF   (N'&SYSLIST EQ 0).ERR1  NO POSITIONAL OPERANDS, ERROR
         AIF   (T'&INTO EQ 'O').ERR2   NO RECEIVING FIELD, ERROR
         AIF   (N'&INTO GT 2).ERR2     INTO=(A,32,BLURB)
         DC    AL2((&LABEL.P-@STRING)/2) OFFSET TO FIELD DESCRIPTORS
@STRING  CSECT                         NON-ADDRESSABLE CONSTANTS
&TO1     SETC  '&INTO(1)'
&TO2     SETC  '&LQ&INTO'
         AIF   (N'&INTO EQ 1).PUNTO8            JUMP IF INTO=XXX
         AIF   ('&INTO(1)'(1,1) NE '(').PUNTO3  JUMP IF INTO=(XXX,44)
&TO1     SETC  '0&INTO(1)'                              INTO=((R3),44)
.PUNTO3  ANOP
&TO2     SETC  '&INTO(2)'                               INTO=(XXX,LL)
         AIF   ('&INTO(2)'(1,1) NE '(').PUNTO8  JUMP IF INTO=(XXX,44)
&TO2     SETC  '0&INTO(2)'                              INTO=(XXX,(R1))
.PUNTO8  ANOP
&LABEL.P DC    S(&TO1,&TO2)
.*--------------------------------------------------------------------*
.*-------      FIELDS       ------------------------------------------*
.*--------------------------------------------------------------------*
&I       SETA  1
.*LOOP
.LOOP1   ANOP
         ACTR  200                            SYSDEBUG/DIAG055
         AIF   (N'&SYSLIST(&I) GT 3).FLD990   TOO MANY SUB-OPERANDS
&LAST    SETB  (&I EQ N'&SYSLIST)                LOOP
         AIF   ('&SYSLIST(&I)'(1,1) EQ '''').LIT00
         AIF   ('&SYSLIST(&I)'(K'&SYSLIST(&I),1) EQ '''').LIT01
.*--------------------------------------------------------------------*
.*       PROCESS FIRST SUBPARAMETER (ADDRESS)                         *
.*--------------------------------------------------------------------*
&P1S     SETC  '&SYSLIST(&I,1)'
&P2L     SETC  '0'                     INPUT LENGTH
&P3L     SETC  '0'                     OUTPUT LENGTH
         AIF   ('&SYSLIST(&I)'(1,1) GE '0').FLD180 SPACES
         AIF   ('&SYSLIST(&I)' EQ '%TIME').FLD190 %TIME
         AIF   ('&SYSLIST(&I,1)'(1,1) NE '(').FLD115 (R2)
         AIF   (T'&SYSLIST(&I,2) EQ 'O').FLD250
&P1S     SETC  '0&SYSLIST(&I,1)'       CHANGE (R1) TO 0(R1)
.FLD115  ANOP
.*
         AIF   (T'&SYSLIST(&I,2) NE 'O').FLD200
.*
.*       EXTRACT RBCDE FROM PRB.RBCDE (HLASM)
.*
&L       SETA  1
.*--LOOP
.FLD131  AIF   ('&P1S'(&L,1) EQ '.').FLD133
&L       SETA  &L+1
         AIF   (&L LT K'&P1S).FLD131
.*--ENDLOOP
&P2L     SETC  '&P1S'                    ABCDEF FROM ABCDEF
         AGO   .FLD134
.FLD133  ANOP
&P2L     SETC  '&P1S'(&L+1,K'&P1S-&L)    RBCDE FROM PRB.RBCDE
.FLD134  ANOP
.*
.*XF     AIF   (NOT D'&P2L).FLD140
&P2C     SETC  T'&P2L
.*MNOTE *,'&P1 &P2C'
         AIF   ('&P2C' EQ 'F' OR '&P2C' EQ 'H' OR '&P2C' EQ 'P').FLD220
         AIF   ('&P2C' EQ 'G').FLD210  FL2
.FLD140  ANOP
.*
.*       EXTRACT PSATOLD FROM PSATOLD-PSA
.*
&L       SETA  1
.*--LOOP
.FLD141  AIF   ('&P2L'(&L,1) EQ '-').FLD143
         AIF   ('&P2L'(&L,1) EQ '+').FLD143
&L       SETA  &L+1
         AIF   (&L LT K'&P2L).FLD141
.*--ENDLOOP
&P2L     SETC  '&LQ&P2L'               L'ABCDEF
         AGO   .FLD300
.FLD143  ANOP
&P2L     SETC  '&LQ'.'&P2L'(1,&L-1)    L'PSATOLD FROM PSATOLD-PSA
         AGO   .FLD300
.*
.FLD180  AIF   ('&SYSLIST(&I)'(K'&SYSLIST(&I),1) NE 'X').FLD800
&P2L     SETC  '&SYSLIST(&I)'(1,K'&SYSLIST(&I)-1) 12
         AIF   (&LAST).FLD186
         DC    X'60',AL1(&P2L)         BLANKS
         AGO   .LIT90
.FLD186  DC    X'E0',AL1(&P2L),0S(0)   BLANKS
         AGO   .LIT90
.*
.FLD190  ANOP                          %TIME
&P1S     SETC  '1(14)'                 %TIME
&$$FEAT(12) SETB 1                     %TIME
         AGO   .FLD800
.*--------------------------------------------------------------------*
.*       PROCESS SECOND SUBPARAMETER (LENGTH/TYPE)                    *
.*--------------------------------------------------------------------*
.FLD200  AIF   (T'&SYSLIST(&I,2) EQ 'O').FLD300 NO LENGTH SPECIFIED
&P2C     SETC  '&SYSLIST(&I,2)'
         AGO   .FLD220
.*T'&P1=G
.FLD210  ANOP
&L       SETA  L'&SYSLIST(&I)          T'&P1 = 'G'
&P2C     SETC  'FL&L'                  T'&P1 = 'G'
.*
.FLD220  ANOP
&P2L     SETC  '0&P2C'                 (R2) LENGTH
         AIF   ('&P2C'(1,1) EQ '(').FLD300
&P2L     SETC  '&P2C'                  3(R2) LENGTH
         AIF   ('&P2C'(K'&P2C,1) EQ ')').FLD300
&P2L     SETC  '0'
&PACKED  SETB  ('&P2C' EQ 'P')
         AIF   (&PACKED).FLD290
&P2L     SETC  '1'
         AIF   ('&P2C' EQ 'FL1').FLD240
&P2L     SETC  '3'
         AIF   ('&P2C' EQ 'FL2' OR '&P2C' EQ 'H').FLD240
&P2L     SETC  '7'
         AIF   ('&P2C' EQ 'FL3').FLD240
&P2L     SETC  '15'
         AIF   ('&P2C' EQ 'F').FLD240
&P2L     SETC  '&P2C'                  IMMEDIATE LENGTH, FIELD
         AGO   .FLD300
.*
.FLD240  ANOP                          BINARY VARIABLE
&BIN     SETB  1
         AGO   .FLD300
.*
.FLD250  ANOP                          REGISTER CONTENT
&REG     SETB  1
         AGO   .FLD300
.*
.FLD290  ANOP                          PACKED
&P2L     SETC  '1'
.*--------------------------------------------------------------------*
.*       PROCESS THIRD SUBPARAMETER (OUTPUT FORMAT)                   *
.*--------------------------------------------------------------------*
.FLD300  AIF   (T'&SYSLIST(&I,3) EQ 'O').FLD800
&HEX     SETB  ('&SYSLIST(&I,3)' EQ 'X') HEXADECIMAL
&TRUNC   SETB  ('&SYSLIST(&I,3)' EQ 'T') TRUNCATE
         AIF   (&HEX OR &TRUNC).FLD800
.*
&P3C     SETC  '&SYSLIST(&I,3)'
&P3L     SETC  '248'
         AIF   ('&P3C' EQ 'YYYY-MM-DD' AND &PACKED).FLD308
&P3L     SETC  '249'
         AIF   ('&P3C' EQ 'YYYYMMDD' AND &PACKED).FLD308
&P3L     SETC  '250'
         AIF   ('&P3C' EQ 'YY/MM/DD' AND &PACKED).FLD308
&P3L     SETC  '251'
         AIF   ('&P3C' EQ 'DD/MM/YY' AND &PACKED).FLD308
&P3L     SETC  '252'
         AIF   ('&P3C' EQ 'MM/DD/YY' AND &PACKED).FLD308
&P3L     SETC  '253'
         AIF   ('&P3C' EQ 'YYMMDD'   AND &PACKED).FLD308
&P3L     SETC  '0'
         AIF   (T'&SYSLIST(&I,2) NE 'N').FLD310
         MNOTE 8,'EDIT PATTERN NOT ALLOWED WITH CHARACTER STRING'
         AGO   .FLD310
.FLD308  ANOP
&$$FEAT(5) SETB 1                      JDATE
         AGO   .FLD800
.*--LOOP
.FLD310  AIF   ('&P3C'(1,1) EQ 'R').FLD318       DEFAULT
         AIF   ('&P3C'(1,1) EQ 'B').FLD318       DEFAULT
         AIF   ('&P3C'(1,1) NE 'L').FLD311
&LEFT    SETB  1
         AGO   .FLD318
.FLD311  AIF   ('&P3C'(1,1) NE 'Z').FLD312
&ZERO    SETB  1
         AGO   .FLD318
.FLD312  AIF   ('&P3C'(1,1) LT '0').FLD993       nn in RnnB is not num
         AIF   ('&P3C'(1,1) GT '9').FLD993       nn in RnnB is not num
&P3L     SETC  '&P3L'.'&P3C'(1,1)
.FLD318  ANOP
.*MNOTE *,'&SYSLIST(&I) P3C=/&P3C/ P3L=/&P3L/'
&P3C     SETC  '&P3C '(2,K'&P3C-1)     STRIP OFF FIRST CHARACTER
         AIF   (K'&P3C GT 0).FLD310
.*--ENDLOOP
         AIF   (&P3L GT 16).FLD993               nn in RnnB is too big
.*--------------------------------------------------------------------*
.FLD800  ANOP
&NUMERIC SETB  (&BIN OR &PACKED OR (&REG AND NOT &HEX))
&TRUNC   SETB  (&TRUNC OR (&LEFT AND NOT &NUMERIC))
&LEFT    SETB  (&LEFT AND &NUMERIC)
         AIF   (NOT &NUMERIC).FLD810
         AIF   (&LEFT OR '&P3L' NE '0').FLD810
&P3L     SETC  '7'                     DEFAULT OUTPUT LENGTH ((R3))
         AIF   (&REG).FLD810
&P3L     SETC  '3'                     DEFAULT OUTPUT LENGTH
         AIF   ('&P2C' EQ 'FL1').FLD810
&P3L     SETC  '5'                     DEFAULT OUTPUT LENGTH
         AIF   ('&P2C' EQ 'H' OR '&P2C' EQ 'FL2').FLD810
&P3L     SETC  '7'                     DEFAULT OUTPUT LENGTH
.FLD810  ANOP
&FLAG    SETA  &HEX*8+&BIN*4+&PACKED*2+&REG*1
&LEN2    SETA  &TRUNC*128+&LEFT*128+&ZERO*64+&P3L
&$$FEAT(2) SETB (&$$FEAT(2) OR (&REG AND NOT &HEX))   REGISTER (BIN)
&$$FEAT(3) SETB (&$$FEAT(3) OR (&REG AND &HEX))       REGISTER (HEX)
&$$FEAT(4) SETB (&$$FEAT(4) OR &PACKED)               PACKED
&$$FEAT(6) SETB (&$$FEAT(6) OR &BIN)                  BINARY
&$$FEAT(7) SETB (&$$FEAT(7) OR (&HEX AND NOT &REG))   HEX
&$$FEAT(8) SETB (&$$FEAT(8) OR &NUMERIC)              BIN,PACKED
&$$FEAT(9) SETB (&$$FEAT(9) OR (&LEFT AND &NUMERIC))
&$$FEAT(10) SETB (&$$FEAT(10) OR &ZERO)
&$$FEAT(11) SETB (&$$FEAT(11) OR &TRUNC)
&BIN     SETB  0                    RESET FLAGS
&HEX     SETB  0                    RESET FLAGS
&REG     SETB  0                    RESET FLAGS
&PACKED  SETB  0                    RESET FLAGS
&LEFT    SETB  0                    RESET FLAGS
&ZERO    SETB  0                    RESET FLAGS
&TRUNC   SETB  0                    RESET FLAGS
         AIF   (&FLAG GE 10).FLD995
         AIF   (&LAST).FLD816
         DC    X'0&FLAG',AL1(&LEN2),SL2(&P1S,&P2L)
         AGO   .LIT99
.FLD816  DC    X'8&FLAG',AL1(&LEN2),SL2(&P1S,&P2L),0S(0)
         AGO   .LIT99
.FLD990  MNOTE 12,'OPERAND &I HAS TOO MANY SUB-OPERANDS'
         AGO   .LIT99
.FLD993  MNOTE 8,'THIRD SUBPARAMETER IS INVALID: ''&SYSLIST(&I,3)'''
         AGO   .LIT99
.FLD995  MNOTE 8,'Invalid Combination of Attributes: &SYSLIST(&I)'
         AGO   .LIT99
.*--------------------------------------------------------------------*
.*------------ LITERALS ----------------------------------------------*
.*--------------------------------------------------------------------*
.LIT00   ANOP
&LIT     SETC  'C&SYSLIST(&I)'
         AGO   .LIT09
.LIT01   ANOP
&LIT     SETC  '&SYSLIST(&I)'
.LIT09   ANOP                              calculate length of literal
&J       SETA  3
&L       SETA  0
         ACTR  K'&LIT+K'&LIT+100
         AIF   ('&LIT'(1,1) EQ 'X').LIT11X
.*LOOP
.LIT11C AIF ('&LIT'(&J,1) NE '''' AND '&LIT'(&J,1) NE '&&'(1,1)).LIT12C
&J       SETA  &J+1
.LIT12C  ANOP
&J       SETA  &J+1
&L       SETA  &L+1
         AIF   (&J LT K'&LIT).LIT11C
.*ENDLOOP
         AGO   .LIT15
.*LOOP
.LIT11X  AIF   ('&LIT'(&J,1) EQ ',').LIT12X
&L       SETA  &L+1
.LIT12X  ANOP
&J       SETA  &J+1
         AIF   (&J LT K'&LIT).LIT11X
.*ENDLOOP
&L       SETA  (&L+1)/2
.LIT15   ANOP                               generate in-line literal
         AIF   (&L GT 5).LIT40
         AIF   (&LAST).LIT16
         DC    X'4&L',&LIT
         AGO   .LIT90
.LIT16   DC    X'C&L',&LIT,0S(0)
         AGO   .LIT90
.LIT40   ANOP                                  check literal table
         AIF   (&$$LIT EQ 0).LIT50
&N       SETA  1
         ACTR  &$$LIT*3+200
.LIT41   AIF   ('&LIT' EQ '&$$LITS(&N)').LIT80       LOOP
&N       SETA  &N+1                                  LOOP
         AIF   (&N LE &$$LIT).LIT41                  LOOP
.LIT50   ANOP
&$$LIT   SETA  &$$LIT+1
&$$LITS(&$$LIT) SETC '&LIT'
&N       SETA  &$$LIT
.LIT80   ANOP                               generate remote literal
&N       SETA  &N+1000
         AIF   (&LAST).LIT86
         DC    X'40',AL1(&L),AL2($LIT&N-*)
         AGO   .LIT90
.LIT86   DC    X'C0',AL1(&L),AL2($LIT&N-*),0S(0)
.LIT90   ANOP
&$$FEAT(1) SETB 1                      LITERAL
.LIT99   ANOP
.*--------------------------------------------------------------------*
&I       SETA  1+&I                              LOOP
         AIF   (&I LE N'&SYSLIST).LOOP1          LOOP
.*ENDLOOP
&SYSECT  CSECT
         AGO   .MEND
.ERR1    MNOTE 12,'AT LEAST ONE INPUT FIELD MUST BE SPECIFIED'
         AGO   .MEND
.ERR2    MNOTE 12,'INVALID OUTPUT AREA SPECIFICATION'
         AGO   .MEND
.**********************************************************************
.*       GENERATE: GENERATE LITERALS AND PROCESSING ROUTINE           *
.**********************************************************************
.GENL    ANOP
&ALLFEAT SETC  '&$$FEAT(1)&$$FEAT(2)&$$FEAT(3)&$$FEAT(4)'
&ALLFEAT SETC  '&ALLFEAT&$$FEAT(5)&$$FEAT(7)&$$FEAT(6)&$$FEAT(8)'
&ALLFEAT SETC  '&ALLFEAT&$$FEAT(9)&$$FEAT(10)&$$FEAT(11)&$$FEAT(12)'
&BLANKS  SETA  2
         MNOTE *,'STRING R&MACVERS - FEATURES GENERATED: &ALLFEAT'
@STRING  CSECT
         AIF   (&$$LIT EQ 0).GENL3
.GENL2   ANOP                                LOOP
&N       SETA  &N+1                          LOOP
&I       SETA  &N+1000                       LOOP
$LIT&I   DC    &$$LITS(&N)
         AIF   (&N LT &$$LIT).GENL2          LOOP
.GENL3   DC    0H'0'
.**********************************************************************
.*                                                                    *
.*       STRING SUB-ROUTINE                                           *
.*                                                                    *
.*             CAUTION: BYTES 49-72 OF THE CALLER'S SAVE AREA         *
.*                      (R7-R12 SLOTS) ARE USED AS WORK SPACE         *
.*                                                                    *
.**********************************************************************
@00      EQU   0                       WORK REGISTER
@01      EQU   1                       WORK REGISTER
@02      EQU   2                       WORK REGISTER
@03      EQU   3                       WORK REGISTER
@04      EQU   4                       WORK REGISTER
@05      EQU   5                       WORK REGISTER
@06      EQU   6                       WORK REGISTER
@13      EQU   13                      CALLER'S SAVE AREA
@14      EQU   14                      WORK REGISTER
@15      EQU   15                      BASE REG
         USING @STR002,@15
         USING @STRSAVE,@13
@STR002  B     @STR011                 BRANCH AROUND EYE-CATCHER
         DC    AL1(@STR003-*),C'@STRING/XF R&MACVERS &ALLFEAT',0H'0'
@STR003  DC    Y(@STR002-@STRING)      Offset to @STRING
@STR011  STM   @14,@06,12(@13)         Save caller's registers
         SLR   @06,@06                 R6=0
         ICM   @06,B'0011',0(@14)      PICK UP PARM-LIST 1/2 OFFSET
         ALR   @06,@06                 PICK UP PARM-LIST OFFSET
         ALR   @06,@15                 R6 NOW POINTS TO PARM LIST
         SH    @06,@STR003             R6 NOW POINTS TO PARM LIST
         USING @STRSCON,@06
         LA    @02,@STRSCON            RESOLVE FIRST SCON (ADDR)
         BAL   @14,@STRS2A             GET ADDRESS IN R2
         LA    @04,0(,@02)             KEEP ADDRESS OF "INTO" FIELD
         L     @14,12(,@13)            RESTORE ADDR OF STRING MACRO
         OI    0(@04),0                GET CLEAN S0C4 IF ADDRESS IS BAD
         LA    @02,@STRFLEN            RESOLVE SECOND S-CON (LEN)
         BAL   @14,@STRS2A             GET LENGTH IN R2
         LR    @05,@02                 KEEP LENGTH OF "INTO" FIELD
         CR    @05,@04                 END ADDRESS?
         BL    @STR282                 NO, JUMP
         SR    @05,@04                 CALCULATE LENGTH
@STR282  ST    @04,8(,@13)             SAVE ADDRESS FOR LATER
.**********************************************************************
.*       MOVE FIELDS TO OUTPUT AREA                                   *
.**********************************************************************
         LA    @06,@STRNEXT            POINT TO 1ST FIELD DESC
         USING @STRPARM,@06
.*LOOP
@STR310  EQU   *
         AIF   (NOT &$$FEAT(1)).FEAT1A
         TM    @STRFLAG,@STRLIT        IS THIS A LITERAL?
         BO    @STR372                 YES, JUMP
.FEAT1A  ANOP
         AIF   (NOT &$$FEAT(2) AND NOT &$$FEAT(3)).FEAT23A
         TM    @STRFLAG,@STRREG        REGISTER?
         BO    @STR323                 YES, JUMP
.FEAT23A ANOP
         AIF   (NOT &$$FEAT(12)).FEAT12A
         CLI   @STRSCON,X'E0'          IS IT %TIME ?
         BE    @STR378                 YES, JUMP
.FEAT12A ANOP
.*
.*       IT'S A FIELD (SCON)
.*
         LA    @02,@STRFLEN            RESOLVE SECOND S-CON (LEN)
         BAL   @14,@STRS2A             GET LENGTH IN R2
         AIF   (&$$FEAT(9)).FEAT9E1    (LEFT JUSTIFICATION, NUMERIC)
         LTR   @03,@02                 KEEP/TEST LENGTH
         BZ    @STR398                 ZERO LENGTH, DO NOT EDIT
         AGO   .FEAT9E2
.FEAT9E1 LTR   @03,@02                 KEEP/TEST LENGTH
         BP    @STR313                 LENGTH POSITIVE, JUMP
         TM    @STRLEN2,@STRLEFT       LEFT JUSTIFICATION?
         BNO   @STR398                 NO, ZERO LENGTH IS NOT OK
@STR313  EQU   *
.FEAT9E2 ANOP
         LA    @02,@STRSCON            RESOLVE FIRST SCON (ADDR)
         BAL   @14,@STRS2A             GET ADDRESS IN R2
         L     @14,12(,@13)            RESTORE ADDR OF STRING MACRO
         CLI   0(@02),0                GET CLEAN S0C4 IF ADDRESS IS BAD
         CR    @03,@02                 END ADDRESS?
         BL    @STR314                 NO, JUMP
         LA    @00,X'0080'             PSA ADDRESS
         CLR   @02,@00                 PSA REFERENCE?
         BL    @STR314                 YES, JUMP
         SR    @03,@02                 CALCULATE LENGTH
@STR314  EQU   *
         AIF   (NOT &$$FEAT(6)).FEAT6A
         TM    @STRFLAG,@STRBIN        BINARY FIELD?
         BO    @STR328                 YES, JUMP
.FEAT6A  ANOP
         AIF   (NOT &$$FEAT(4)).FEAT4A
         TM    @STRFLAG,@STRPACK       PACKED FIELD?
         BO    @STR351                 YES, JUMP
.FEAT4A  ANOP
         AIF   (NOT &$$FEAT(7)).FEAT7A
         TM    @STRFLAG,@STRHEX        EDIT IN HEX?
         BO    @STR376                 YES, JUMP
.FEAT7A  ANOP
.*
.*       TRUNCATE CHARACTER STRING
.*
         AIF   (NOT &$$FEAT(11)).FEAT11A
         CLI   @STRLEN2,@STRLEFT       CHECK JUSTIFICATION, OUTPUT LEN
         BNE   @STR390                 NO STRING TRUNCATION, JUMP
         LA    @01,0(@03,@02)          FIRST BYTE AFTER FIELD
@STR318  BCTR  @01,0                   DOWN 1 BYTE                 LOOP
         CLI   0(@01),C' '             IS IT A SPACE ?             LOOP
         BNE   @STR390                 LAST NON-BLANK BYTE         LOOP
         BCT   @03,@STR318             LOOP UNTIL 1ST NON-BLANK    LOOP
         B     @STR398                 BLANK FIELD, DO NOT EDIT
         AGO   .FEAT11B
.FEAT11A ANOP
         AIF (&$$FEAT(2)+&$$FEAT(3)+&$$FEAT(4)+&$$FEAT(6) EQ 0).FEAT11B
         B     @STR390                 EDIT
.FEAT11B ANOP
.*
.*       REGISTER (R0-R13)
.*
         AIF   (NOT &$$FEAT(2) AND NOT &$$FEAT(3)).FEAT23B
@STR323L LR    @00,*-*                 COPY VALUE FOR EDIT
@STR323  LH    @01,@STRSCON            REG NUMBER IN BITS 28-31
         EX    @01,@STR323L            COPY R7-R13 INTO R0
         CLI   @STRSCON+1,@06+1        IS THIS R7-R13?
         BNL   @STR323T                YES, JUMP
         SLL   @01,2                   R1= 000000BB BASE * 4
         L     @00,20(@01,@13)         PICK UP VALUE FOR R0-R6
@STR323T EQU   *
         AIF   (NOT &$$FEAT(3)).FEAT3R REG,HEX
         AIF   (NOT &$$FEAT(2)).FEAT2H REG,BIN
         TM    @STRFLAG,@STRHEX        EDIT IN HEX?
         BNO   @STR330                 NO, EDIT FWD
.FEAT2H  ANOP
         STCM  @00,B'1111',@STRDWD-1   STORE IT FOR CVD/UNPK
         LA    @03,8                   OUTPUT LENGTH
         B     @STR376X                EDIT IN HEX
.FEAT3R  ANOP
         AIF   (NOT &$$FEAT(6)).FEAT23B
         B     @STR330                 EDIT R0
.FEAT23B ANOP
.*
.*       BINARY VARIABLE: @03 CONTAINS THE ICM MASK (1 3 7 F)
.*
         AIF   (NOT &$$FEAT(6)).FEAT6B
@STR328M ICM   @00,*-*,0(@02)          **EXECUTED INSTRUCTION**
@STR328  SLR   @00,@00
         EX    @03,@STR328M            LOAD THE BINARY VARIABLE
.FEAT6B  ANOP
.*
         AIF   (NOT &$$FEAT(2) AND NOT &$$FEAT(6)).FEAT6C
@STR330  CVD   @00,@STRDWD             CONVERT VALUE TO DECIMAL
         AIF   (NOT &$$FEAT(4)).FEAT6C
         B     @STR361                 EDIT DWD
.FEAT6C  ANOP
.*
.*       PACKED FIELD
.*
         AIF   (NOT &$$FEAT(4)).FEAT4B
@STRZAP  ZAP   @STRDWD,0(*-*,@02)      MOVE TO @STRDWD
@STR351  LA    @03,0(,@02)             FIRST BYTE OF PACKED FIELD
         BALR  @14,0
         TM    0(@03),X'0C'            IS THIS THE SIGN BYTE?
         LA    @03,1(,@03)              (NEXT BYTE)
         BNOR  @14                     NO, LOOP MORE
         SLR   @03,@02                 GET LENGTH OF PACKED FIELD
         BCTR  @03,0
         EX    @03,@STRZAP             EXECUTE ZAP
         AIF   (NOT &$$FEAT(5)).FEAT4B
         CLI   @STRLEN2,248            JULIAN-TO-YYMMDD CONV?
         BNL   @STR375                 YES, JUMP
.FEAT4B  ANOP                          PACKED
.*
.*       EDIT @STRDWD (BIN, REG, PACKED)
.*
         AIF   (NOT &$$FEAT(8)).FEAT8B
@STR361  IC    @00,@STRLEN2            OUTPUT LENGTH
         LA    @03,X'003F'             MASK FOR "AND"
         NR    @03,@00                 OUTPUT LENGTH
         MVC   @STRWK16(16),@STRMASK   EDIT MASK
.*
.*       LEFT-JUSTIFICATION (NUMERIC)
.*
         AIF   (NOT &$$FEAT(9)).FEAT9B
         TM    @STRLEN2,@STRLEFT       LEFT JUSTIFICATION?
         BNO   @STR367                 NO, JUMP
         LA    @01,@STRWK16+15         PREVENT BAD R1
         EDMK  @STRWK16(16),@STRDWD    ZONED DECIMAL
         LA    @02,0(,@01)             FIRST STRING POSITION
         LTR   @03,@03                 CHECK OUTPUT LENGTH
         BNZ   @STR363                 JUMP IF NOT ZERO
.*       L0    (LEFT JUSTIFIED, NO PADDING)
         LA    @03,@STRWK16+16         FIRST POSITION AFTER STRING
         SR    @03,@02                 COMPUTE STRING LENGTH
         B     @STR390                 MOVE FIELD TO OUTPUT LINE
.*       L1-L63 (LEFT JUSTIFIED, PADDING)
@STR363  CR    @03,@05                 COMPARE LENGTH TO REMAINING LEN
         BNH   @STR364                 LARGE ENOUGH, JUMP
         LR    @03,@05                 TOO BIG, TRUNCATE TO REM. LEN.
@STR364  SR    @05,@03                 COMPUTE REMAINING LENGTH
         LR    @00,@04                 POINTER IN OUTPUT LINE
         LR    @01,@03                 LENGTH WITH PADDING
         LA    @03,@STRWK16+16         FIRST POSITION AFTER STRING
         SR    @03,@02                 COMPUTE STRING LENGTH
         B     @STR392                 MOVE FIELD TO OUTPUT LINE
@STR367  EQU   *
.FEAT9B  ANOP
         AIF   (NOT &$$FEAT(10)).FEAT10B
         TM    @STRLEN2,@STRZERO       LEADING ZEROES REQ'D?
         BNO   @STR368                 NO, JUMP
         MVI   @STRWK16,C'0'           YES, CHANGE X'40' TO C'0'
@STR368  EQU   *
.FEAT10B ANOP
         ED    @STRWK16(16),@STRDWD    ZONED DECIMAL
         LA    @02,@STRWK16+16         FIRST POSITION AFTER STRING
         SR    @02,@03                 FIRST STRING POSITION
.FEAT8B  ANOP
.*
.*       LITERAL (@STRSCON IS A 16-BIT OFFSET)
.*       Short Literal (low-order 4 bits of @STRFLAG contains length)
.*       BLANKS  (@STRSCON=ZERO)
.*
         AIF   (NOT &$$FEAT(1)).FEAT1B
         B     @STR390                 MOVE STRING TO OUTPUT LINE
@STR372  LA    @01,7                   mask for NR
         LA    @02,@STRLEN2            1st byte of short literal
         IC    @03,@STRFLAG            pick up flags+length
         NR    @03,@01                 R3 has length of short literal
         BNZ   @STR390                 short literal, go move it
         SLR   @02,@02                 Clear Address Register
         IC    @03,@STRLEN2            GET LITERAL LENGTH
         TM    @STRFLAG,@STRX40        string of spaces?
         BO    @STR390                 yes, go move them
         ICM   @02,B'0011',@STRSCON    LOAD LITERAL OFFSET
         LA    @02,@STRSCON(@02)       CONVERT OFFSET TO FULL ADDRESS
.FEAT1B  ANOP
.*
.*       CONVERT JULIAN DATE TO YYMMDD
.*
         AIF   (NOT &$$FEAT(5)).FEAT5F
         B     @STR390                 MOVE STRING TO OUTPUT LINE
@STR375  LA    @00,248                 MASK FOR 'SLR'
         SLR   @01,@01
         IC    @01,@STRLEN2            248-255
         SLR   @01,@00                 000-007
         LA    @00,12                  L'@STR375W
         MR    @00,@00                 COMPUTE OFFSET
         LA    @01,@STR375W(@01)       ENTRY IN "TR" MASK TABLE
         SLR   @03,@03
         IC    @03,0(,@01)             LENGTH OF DATE (6, 8 OR 10)
         ZAP   @STRDWD,@STRDWD         DATE=0000000?               @JDT
         BNZ   @STR375B                NO, JUMP                    @JDT
@STR375Z LA    @02,@BLANKS             WORK AREA
&BLANKS  SETA  10                      WE NEED AT LEAST 10 BLANKS
         B     @STR390                 MOVE FIELD TO OUTPUT LINE
@STR375W DC    AL1(10,C'-',0,1,2,3,8,4,5,8,6,7) YYYY-MM-DD   248
         DC    AL1(8,C' ',0,1,2,3,4,5,6,7,8,8)  YYYYMMDD//   249
         DC    AL1(8,C'/',2,3,8,4,5,8,6,7,8,8)  YY/MM/DD//   250
         DC    AL1(8,C'/',6,7,8,4,5,8,2,3,8,8)  DD/MM/YY//   251
         DC    AL1(8,C'/',4,5,8,6,7,8,2,3,8,8)  MM/DD/YY//   252
         DC    AL1(6,C' ',2,3,4,5,6,7,8,8,8,8)  YYMMDD       253
.*       DC    AL1(6,C' ',6,7,4,5,2,3,8,8,8,8)  DDMMYY       254
.*       DC    AL1(6,C' ',4,5,6,7,2,3,8,8,8,8)  MMDDYY       255
@STR375T DC    P'59,31,29,31,30,31,30,31,31,30,31,30,31'
         DC    P'999'                  Prevent S0C7 with 90366
@STR375B CLI   @STRDWD+4,X'01'         YEAR 2000 OR ABOVE?
         BH    @STR375C                CC>01, JUMP (MUST BE 19 OR 20)
         MVI   @STRDWD+4,X'20'         CC=01, CHANGE TO CC=20
         BE    @STR375C                CC=01, USE CC=20
         CLI   @STRDWD+4+1,X'50'       YY<50?
         BL    @STR375C                YES, USE CC=20
         MVI   @STRDWD+4,X'19'         NO, FORCE CC=19
@STR375C UNPK  @STRWK16(5),@STRDWD+4(3) CCYY?
         ZAP   @STRDWD+1(2),@STR375T+9(1) INIT MONTH COUNTER
         LA    @02,@STR375T            TABLE OF MONTHS (NUMBER OF DAYS)
         TM    @STRDWD+4+1,X'01'       ODD YEARS
         BO    @STR375N                  AREN'T LEAP YEARS
         TM    @STRDWD+4+1,X'12'       ZEROES IN 1980, ALL ONES IN 1992
         BNM   @STR375L                MIXED IN 1982/1990
.*       IF IT'S NOT A LEAP YEAR AND DDD>59, THEN ADD 1 TO DDD
@STR375N CP    @STRDWD+4+2(2),@STR375T ARE WE PAST FEB 28 (DDD>59) ?
         BNH   @STR375L                NO, JUMP
         AP    @STRDWD+4+2(2),@STR375T+3(1) ADD 1 (FROM 31) TO DDD
.*--LOOP WHILE DDD > 0
@STR375L AP    @STRDWD+1(2),@STR375T+3(1)   ADD 1 (FROM 31) TO MONTH
         LA    @02,2(,@02)             NEXT ENTRY IN "MONTHS" TABLE
         SP    @STRDWD+4+2(2),0(2,@02) SUB DAYS-IN-MONTH FROM DDD
         BP    @STR375L
.*--ENDLOOP
         AP    @STRDWD+4+2(2),0(2,@02) UNDO LAST "SP" INSTRUCTION
         UNPK  @STRWK16+4(2),@STRDWD+1(2) FYFYFYFY,FMCM??
         UNPK  @STRWK16+6(2),@STRDWD+6(2) FYFYFYFY,FMCMFDCD
         MVZ   @STRWK16+1(7),@STRWK16     FYFYFYFY,FMCMFDCD
         MVC   @STRWK16+8(1),1(@01)    SEPARATOR
         LA    @02,@STRWK16+9          WORK AREA
         MVC   0(10,@02),2(@01)        MOVE CORRESPONDING MASK
         TR    0(10,@02),@STRWK16      CONVERT DATE TO THE RIGHT FORMAT
.FEAT5F  ANOP                          JDATE
.*
.*       HEX STRING
.*
         AIF   (NOT &$$FEAT(7)).FEAT7B
         B     @STR390                 MOVE STRING TO OUTPUT LINE
@STR376M MVC   @STRDWD-1(*-*),0(@02)   PREVENT S0C4 IN UNPK
@STR376  LA    @00,8                   MAX LENGTH
         CLR   @03,@00                 CHECK LENGTH
         BNH   @STR376B                JUMP IF LE 8
         LR    @03,@00                 TRUNCATE TO MAXIMUM LENGTH
@STR376B LR    @01,@03                 INPUT LENGTH
         BCTR  @01,0
         EX    @01,@STR376M            MOVE DATA TO SAFE STORAGE
         ALR   @03,@03                 OUTPUT LENGTH
         AGO   .FEAT37B
.FEAT7B  ANOP
         AIF   (NOT &$$FEAT(3)).FEAT37C
         B     @STR390                 MOVE STRING TO OUTPUT LINE
.FEAT37B ANOP
@STR376X LA    @02,@STRWK16            WORK AREA
         UNPK  0(9,@02),@STRDWD-1(5)   EXPAND SOURCE BYTES FOR "TR"
         UNPK  8(9,@02),@STRDWD+3(5)   EXPAND SOURCE BYTES FOR "TR"
         TR    0(16,@02),@STRHEXT-240  =C'0123456789ABCDEF'
.FEAT37C ANOP
.*
.*       %TIME
.*
         AIF   (NOT &$$FEAT(12)).FEAT12B
         B     @STR390                 MOVE STRING TO OUTPUT LINE
@STRTIME DC    X'4021207A20207A20207A20204000'    0X.XX.XX.XX
@STR378  LR    @02,@15                 SAVE BASE REG
         TIME  DEC                     GET HHMMSSHH
         LR    @15,@02                 RESTORE BASE REG
         ST    @00,@STRDWD             STORE HHMMSSHH
         MVC   @STRWK16(13),@STRTIME   MOVE EDIT MASK
         ED    @STRWK16(13),@STRDWD    EDIT HH:MM:SS:HH
         LA    @02,@STRWK16+1          WORK AREA
         LA    @03,12                  HH:MM:SS:HH+ SPACE
.FEAT12B ANOP
.*MOVE
@STR390  CR    @03,@05                 COMPARE LENGTH TO REMAINING LEN
         BNH   @STR391                 LARGE ENOUGH, JUMP
         LR    @03,@05                 TOO BIG, TRUNCATE TO REM. LEN.
@STR391  SR    @05,@03                 COMPUTE REMAINING LENGTH
         LR    @00,@04                 POINTER IN OUTPUT LINE
         LR    @01,@03                 PASS REMAINING LENGTH
         LTR   @02,@02                 BLANKS?
         BNZ   @STR392                 NO, JUMP
         SLR   @03,@03                 YES, ZERO LENGTH
@STR392  ICM   @03,B'1000',@BLANKS     PAD WITH BLANKS
         MVCL  @00,@02                 MOVE FIELD TO OUTPUT LINE
         LR    @04,@00                 NEW POINTER IN OUTPUT LINE
@STR398  TM    @STRFLAG,@STRLAST       TEST LAST-ENTRY INDICATOR
         BO    @STR399                 Done, exit
         AIF   (NOT &$$FEAT(1)).FEAT1C
         TM    @STRFLAG,@STRLIT+@STRX40 literal or spaces?
         BM    @STR398L                Literal, not spaces
         BZ    @STR398X                Neither literal nor spaces
         LA    @06,@STRSCON            2-byte entry for blank spaces
         B     @STR310                 PROCESS NEXT ENTRY
@STR398L LA    @01,7                   mask for NR
         IC    @03,@STRFLAG            pick up flags+length
         NR    @03,@01                 R3 has length of short literal
         BZ    @STR398T                not an in-line literal, jump
         LA    @06,@STRLEN2(@03)       Skip VL parm for in-line literal
         B     @STR310                 PROCESS NEXT ENTRY
@STR398T LA    @06,@STRFLEN            4-byte parm for remote literal
         B     @STR310                 PROCESS NEXT ENTRY
.FEAT1C  ANOP
@STR398X LA    @06,@STRNEXT            BUMP UP TO NEXT ENTRY
         B     @STR310                 PROCESS NEXT ENTRY
.*ENDLOOP
.*
.*       END-OF-LINE PROCESSING - PAD WITH BLANKS
.*
@STR399  SLR   @01,@01                 SET UP R1 FOR PADDING
         ICM   @01,B'1000',@BLANKS     SET UP R1 FOR PADDING
.***     DROP  @06,@13,@15
         LA    @14,2                   INCREMENT
         AL    @14,12(,@13)            RETURN ADDRESS
         LR    @15,@04                 CURRENT POINTER IN OUTPUT FIELD
         SL    @15,8(,@13)             CALCULATE LENGTH USED
         MVCL  @04,@00                 PAD WITH BLANKS
         LM    @00,@06,20(@13)         RESTORE WORK REGISTERS
         STM   @06+1,@13-1,48(@13)     MAKE SAVE AREA LOOK NORMAL
         OI    15(@13),1               SIMULATE "T" OPTION OF RETURN
         BR    @14                     RETURN TO CALLER
.*
         AIF   (NOT (&$$FEAT(3) OR &$$FEAT(7))).FEAT37T
@STRHEXT DC    C'0123456789ABCDEF'     HEX-TO-EBCDIC CONVERSION
.FEAT37T ANOP
         AIF   (NOT &$$FEAT(8)).FEAT8T
@STRMASK DC    X'4020202020202020,2020202020202120'
.FEAT8T  ANOP
.**********************************************************************
.*       Convert S-con to address                                     *
.*             Input: GPR2 points to an S-CON in the remote parm list *
.*             Output: GPR2 contains the address                      *
.**********************************************************************
@STRS2A  SLR   @00,@00
         ICM   @00,B'0011',0(@02)      R0 = 0000BDDD
         SRDL  @00,12                  R0 = 0000000B, R1= DDD.....
         SRL   @01,20                  R1 = 00000DDD (DISPLACEMENT)
         CLI   0(@02),@06*16+15        R7-R13?
         BH    @STRS2A3                YES, JUMP
.*BASE REG IS R0-R6
         LTR   @02,@00                 IS R0 THE BASE REG?
         BNZ   @STRS2A2                NO, JUMP
         LTR   @02,@01                 IS THIS A PSA ADDRESS?
         BNZR  @14                     YES, GOBACK
@STRS2A2 SLL   @02,2                   R2= 000000BB BASE * 4
         L     @02,20(@02,@13)         PICK UP BASE REG VALUE
         LA    @02,0(@02,@01)          ADD BASE REG VALUE TO DISPL
         BR    @14
.*BASE REG IS R7-R13
@STRS2A3 LR    @02,@00                 R2= 0000000B (BASE REG NUMBER)
         EX    @02,@STRS2A4            ADD BASE REG VALUE TO DISPL
         BR    @14
@STRS2A4 LA    @02,0(*-*,@01)          ADD BASE REG VALUE TO DISPL
@BLANKS  DC    CL((((*+&BLANKS+7-@STRING)/8)*8)-(*-@STRING))' '
@STRSIZE EQU   *-@STRING               SIZE OF GENERATED CSECT
         DROP  @06,@13,@15
.**********************************************************************
.*       WORK AREA (CALLER'S SAVE AREA)                               *
.**********************************************************************
@STRSAVE DSECT                         24-BYTE WORK AREA
         DS    A(0,@STRSAVE,@STRSAVE,14,15,0,1,2,3,4,5,6)
@STRWK16 DS    F'7,8,9,10'             WORK AREA
@STRDWD  DS    D'1112'                 WORK AREA
@STRPARM DSECT
@STRFLAG DS    B                   +0  FORMAT, FLAGS
@STRLAST EQU   X'80'                     LAST ENTRY
@STRLIT  EQU   X'40'                     LITERAL, @STRSCON IS AN OFFSET
@STRX40  EQU   X'20'                   String of Spaces
.*             X'0F'                   CONVERSION REQUIRED
.*                                     or length of short literal
@STRHEX  EQU   X'08'                     HEXADECIMAL
@STRBIN  EQU   X'04'                     BINARY
@STRPACK EQU   X'02'                     PACKED
@STRREG  EQU   X'01'                     REGISTER
@STRLEN2 DS    B                   +1  FORMAT, OUTPUT LENGTH
.*                                     or start of short literal
@STRLEFT EQU   X'80'                     LEFT JUSTIFICATION
@STRZERO EQU   X'40'                     LEADING ZEROES
.*             X'3F'                     OUTPUT LENGTH, 0 MEANS TRUNC.
@STRSCON DS    S                   +2  FIELD ADDRESS
@STRFLEN DS    S                   +4  FIELD LENGTH
@STRNEXT EQU   *                   +6
.MEND    AIF   ('&PRINT' EQ 'NOGEN').MEND99
         POP   PRINT
.MEND99  MEND
./ ADD NAME=SYNEPS
         MACRO
         SYNEPS  &MF=E
.*A001200,004100-004400,004600,005600-005900,006100              Y02006
.*A007100-007400,007600,008600-008900,009100,010100-010400       Y02006
.*A010600                                                        Y02006
.***  GLOBAL VARIABLE &BALMOD INDICATES IF BAL MODULE OR PLS MODULE **
         GBLB  &BALMOD                                           Y02006
         AIF   ('&MF' EQ 'L').NOGEND
SYNEPS   DSECT
.NOGEND  ANOP
         USING SYNTAX,R15                                        S21014
SYNTAX   SR    R1,R1               INDICATE STANDARD ERROR MSG ONLY
         B     SYNTAX4             PRINT MSG
         AIF   (&BALMOD).BALSYNA   BRANCH IF BAL MODULE          Y02006
SYNTAXA  L     R1,SYNMSGA(,COMBASE)  LOAD ADDR OF MSG ADDRS      Y02006
         AGO   .LDADDRA                                          Y02006
.BALSYNA ANOP                                                    Y02006
SYNTAXA  L     R1,SYNMSGA          LOAD ADDR OF MSG ADDRS
.LDADDRA ANOP                                                    Y02006
         L     R1,0(R1)            LOAD ADDR OF MSG
         B     SYNTAX4             PRINT MESSAGE
         AIF   (&BALMOD).BALSYNB   BRANCH IF BAL MODULE          Y02006
SYNTAXB  L     R1,SYNMSGA(,COMBASE)  LOAD ADDR OF MSG ADDRS      Y02006
         AGO   .LDADDRB                                          Y02006
.BALSYNB ANOP                                                    Y02006
SYNTAXB  L     R1,SYNMSGA          LOAD ADDR OF MSG ADDRS
.LDADDRB ANOP                                                    Y02006
         L     R1,4(R1)            LOAD ADDR OF MESSAGE
         B     SYNTAX4             PRINT MESSAGE
         AIF   (&BALMOD).BALSYNC   BRANCH IF BAL MODULE          Y02006
SYNTAXC  L     R1,SYNMSGA(,COMBASE)  LOAD ADDR OF MSG ADDRS      Y02006
         AGO   .LDADDRC                                          Y02006
.BALSYNC ANOP                                                    Y02006
SYNTAXC  L     R1,SYNMSGA          LOAD ADDR OF MSG ADDRS
.LDADDRC ANOP                                                    Y02006
         L     R1,8(R1)            LOAD ADDR OF MESSAGE
         B     SYNTAX4             PRINT MESSAGE
         AIF   (&BALMOD).BALSYND   BRANCH IF BAL MODULE          Y02006
SYNTAXD  L     R1,SYNMSGA(,COMBASE)  LOAD ADDR OF MSG ADDRS      Y02006
         AGO   .LDADDRD                                          Y02006
.BALSYND ANOP                                                    Y02006
SYNTAXD  L     R1,SYNMSGA          LOAD ADDR OF MSG ADDRS
.LDADDRD ANOP                                                    Y02006
         L     R1,12(R1)           LOAD ADDR OF MESSAGE
         B     SYNTAX4             PRINT MESSAGE
         AIF   (&BALMOD).BALSYNE   BRANCH IF BAL MODULE          Y02006
SYNTAXE  L     R1,SYNMSGA(,COMBASE)  LOAD ADDR OF MSG ADDRS      Y02006
         AGO   .LDADDRE                                          Y02006
.BALSYNE ANOP                                                    Y02006
SYNTAXE  L     R1,SYNMSGA          LOAD ADDR OF MSG ADDRS
.LDADDRE ANOP                                                    Y02006
         L     R1,16(R1)           LOAD ADDR OF MESSAGE
SYNTAX4  STM   R14,R12,12(R13)     SAVE CALLER'S REGISTERS
         DROP  R15                                               S21014
         SPACE
         MEND
./ ADD NAME=TACSMD
         MACRO
         TACSMD
.*A562000-566000,026000                                          S21101
.*A568000                                                        S22025
.*C562000,566000                                                 S22025
.*           MACRO VERSION DATED 6/24/71                         S21101
.*             MACRO UPDATED 10/20/71                            S22025
*                     TCAM ACCESS METHOD WORKAREA
         SPACE 2
IEDQWRKA DSECT
PWASAVE  DS    0F
GWASAVE  DS    F                        ADDRESS OF USER'S
*                                       REGISTER SAVEAREA
PWAPEWA  DS    F .                      ADDR OF PROCESS ENTRY WORKAREA
GWAPEB   DS    F                        ADDRESS OF PART-EMPTY BFR
PWASTART DS    0F                       ADDRESS OF FIRST BYTE OF
*                                       DATA IN WORKAREA
GWAMOVE  DS    F                        ADDRESS OF NEXT BYTE IN A
*                                       BUFFER TO BE MOVED
PWACKPT  DS    0F
GWACKPT  DS    F                        ADDRESS OF USER'S
*                                       CHECKPOINT ROUTINE
GWAPEWA  DS    F                        ADDRESS OF NEXT EMPTY BYTE
*                                       IN USER'S WORKAREA
PWAECB   DS    0F                       PUT/WRITE ECB
GWAECB   DS    F                        GET/READ ECB
PWAELEM  DS    0F
GWAELEM  DS    5F .                     SPECIAL AQCTL ELEMENT
PWALIST  DS    0F
GWALIST  DS    0F                       AQCTL PARAMETER LIST
MOVEAD   DS    F                        ADDR OF FIELD TO BE MOVED
TARGETAD DS    F                        TARGET OF DATA MOVEMENT
PFLAG    DS    FL1                      END-OF-LIST INDICATOR
LENGTHAD DS    3X                       ADDRESS OF LENGTH OF FIELD
PWASAVA  DS    0F                       PUT/WRITE SAVEAREA
GWASAVA  DS    18F                      READ/CHECK SAVEAREA
PWAFLG   DS    H
IOBPSAVE DS    F                        CONTAINS ADDRESS OF PARTLY
*                                       EMPTY BUFFER UNIT
GWASTAT  DS    0F                       ADDR OF STATUS INDICATORS
PWASTAT  DS    F                        ADDR OF STATUS INDICATORS
PWASOWA  DS    0H                       SIZE OF WORKAREA
GWASOWA  DS    H                        SIZE OF USER'S WORKAREA
PWACTL   DS    X                        WORKAREA CONTENTS
*                                       DESCRIPTOR BYTE
GWARDEL  DS    X                        RECORD DELIMITER
GWABUFL  DS    H                        SIZE OF MCP BUFFER
PWAOPTCD DS    0X
GWAOPTCD DS    X                        GENERAL SWITCHES
PWARECFM DS    0X
GWARECFM DS    X                        GENERAL SWITCHES
GWALRECL DS    H                        SIZE OF LOGICAL WORK UNIT
PWAOFF   DS    H
CTLADDR  DS    F                        ADDR OF WORKAREA CONTROL BYTE
GWASCAN  DS    H                        SIZE OF FIELD TO BE SCANNED
BUFCNT   DS    H                        EMPTY-BUFFER COUNTER
IOBUSZE  DS    H                        COUNT OF DATA IN A LOGICAL
*                                       BUFFER
IOBPSZE  DS    H                        PREFIX SIZE WORKAREA
IOBSRCE  DS    H                        TERMNAME TABLE OFFSET
GWARTVE  DS    2F                       MSG RETRIEVAL WORKAREA
GWAOPT2  DS    X                        OPTIONS FROM TPDATE      S22025
GWADLTE  EQU   X'40'                   DELETE=YES SPECIFIED      S21101
GWADATE  EQU   X'10'                    DTSAREA IS SPEC          S22025
GWADTSA  DS    AL3                      DATE/TIME/SOURCE AREA    S22025
WRKAEND  EQU   *
WRKASIZE EQU   WRKAEND-IEDQWRKA
         MEND
./ ADD NAME=TADWD
 /*                                                                   */
 /*                ... ACTIVATE NCP COMMON AREA ...                   */
 /*                                                                   */
 /*A000000-999999                                             @Y17XAXG*/
    DCL 1 IEDQADW BASED(RDATA),    /*STORAGE AREAS IN OP.CTL. WORK
                                    AREA */
      2 ADWRRTP PTR(31),            /*POINTER TO START OF RRT*/
      2 ADWRVTP PTR(31),            /*RVT POINTER*/
      2 ADWENTP PTR(31),           /*ENTRY POINTER INTO RRT*/
      2 ADWENTRR PTR(31),           /*POINTER INTO RESOURCE ENTRIES IN
                                    RRT*/
      2 ADWRSCP PTR(31),            /*POINTER TO START OF RESOURCE
                                    ENTRIES IN RRT*/
      2 ADWENTRV PTR(31),           /*POINTER INTO RVT ENTRIES*/
      2 ADWLGBP PTR(31),            /*POINTER TO LINE GROUP BLOCK*/
      2 ADWLCBP PTR(31),            /*POINTER TO LINE CONTROL BLOCK*/
      2 ADWDCBP PTR(31),            /*POINTER TO DATA CONTROL BLOCK*/
      2 ADWBYTEP PTR(31),           /*LOCAL POINTER*/
      2 ADWLSTLN PTR(31),           /*LAST LINE'S TTE ADDR.*/
      2 ADWLSTRM PTR(31),           /*LAST TERM.'S TTE ADDR.*/
      2 ADWNCPTE PTR(31),           /*NCP'S TTE ADDR.*/
      2 ADWNATP PTR(31),           /*POINTER TO NAT*/
      2 ADWSATP PTR(31),           /*POINTER TO SAT*/
      2 ADWSTGSZ FIXED(31),         /*STORAGE SIZE FOR RVT*/
      2 ADWENTNM FIXED(31),         /*COUNT OF RRT ENTRIES*/
      2 ADWENTSZ FIXED(31),         /*LENGTH OF RRT ENTRY*/
      2 ADWPSNAN FIXED(31),         /*NUMBER OF PRE-SNA ENTRIES IN
                                    RRT*/
      2 ADWCTR FIXED(31),           /*LOOP COUNTER*/
      2 ADWENTCT FIXED(31),         /*LOOP COUNTER*/
      2 ADWBSCCT FIXED(31),         /* COUNT OF PRE-SNA DEVICES IN
                                    RVT*/
      2 ADWRVTLG FIXED(31),         /*LENGTH OF RVT*/
      2 ADWGETAR CHAR(12) BDY(WORD),/*HOLDS LIST FORM OF GETMAIN*/
      2 ADWFREAR CHAR(12) BDY(WORD),/*HOLDS LIST FORM OF FREEMAIN*/
      2 ADWBLDL CHAR(62) BDY(HWORD),
      3 ADWNTRYN PTR(15),         /*NUMBER OF BLDL ENTRIES*/
      3 ADWNTRYL PTR(15),         /*LENGTH OF ENTRY*/
      3 ADWLNTRY,
      4 ADWLNAME CHAR(8),         /*NAME OF LOAD MODULE*/
      4 ADWDATA CHAR(50),        /*FILLED IN BY BLDL*/
      2 ADWIPLTN CHAR(9),           /*IPL TEXT NAME*/
      2 ADWSRCH BIT(8),             /*PARAMETER FOR SEARCH ROUTINE*/
      2 ADWISUBA FIXED(8),          /*ISOLATE SUBAREA SHIFT CT.*/
      2 ADWPADSZ FIXED(8),          /*CONTENTS OF RRTBUFSZ*/
      2 ADWFLGS1 CHAR(1),         /*FLAG BYTE ONE*/
      3 ADWERRFG BIT(1),          /*ERROR FLAG*/
      3 ADWPSNA BIT(1),           /*PRE SNA SWITCH*/
      3 ADWLOOP BIT(1),           /*LOOP SWITCH*/
      3 ADWSKIP BIT(1),           /*SKIP SWITCH*/
      3 ADWQCBSK BIT(1),          /*SKIP QCB CHECK SWITCH*/
      3 ADWOUTSW BIT(1),          /*SWITCH TO GET OUT OF MODULE*/
      2 ADWFLGS2 BIT(8),          /*FLAG BYTE 2*/
      3 ADWLNDEL BIT(1),          /*INDICATES LINE RVTINDEX IS 0*/
      3 ADWPUDEL BIT(1),          /*INDICATES PU RVTINDEX IS 0*/
      3 ADWCTERM BIT(1),          /*INDICATES PRE-SNA SWITCHED LINE
                                  ENCOUNTERED*/
      3 ADWGPCLS BIT(1),          /*INDICATES PRE-SNA CLUSTER
                                    ENCOUNTERED*/
      2 ADWFLGS3 BIT(8),          /*FLAG BYTE 3*/
      3 ADWMANDL BIT(1);          /* MANUAL DIAL SWITCH*/
    DCL RRTPTR PTR(31) DEFINED(ADWRRTP);
    DCL RVTPTR PTR(31) DEFINED(ADWRVTP);
    DCL ENTRYPTR PTR(31) DEFINED(ADWENTP);
    DCL ENTADDRR PTR(31) DEFINED(ADWENTRR);
    DCL RSCPTR PTR(31) DEFINED(ADWRSCP);
    DCL ENTADDRV PTR(31) DEFINED(ADWENTRV);
    DCL LGBPTR PTR(31) DEFINED(ADWLGBP);
    DCL LCBPTR PTR(31) DEFINED(ADWLCBP);
    DCL DCBPTR PTR(31) DEFINED(ADWDCBP);
    DCL BYTEPTR PTR(31) DEFINED(ADWBYTEP);
    DCL LASTLINE PTR(31) DEFINED(ADWLSTLN);
    DCL LASTTERM PTR(31) DEFINED(ADWLSTRM);
    DCL NCPTTEA PTR(31) DEFINED(ADWNCPTE);
    DCL IEDQNATP PTR(31) DEFINED(ADWNATP);
    DCL IEDQSATP PTR(31) DEFINED(ADWSATP);
    DCL STGSIZE FIXED(31) DEFINED(ADWSTGSZ);
    DCL ENTRYNUM FIXED(31) DEFINED(ADWENTNM);
    DCL ENTRYSIZ FIXED(31) DEFINED(ADWENTSZ);
    DCL PSNANUM FIXED(31) DEFINED(ADWPSNAN);
    DCL CTR FIXED(31) DEFINED(ADWCTR);
    DCL ENTCTR FIXED(31) DEFINED(ADWENTCT);
    DCL BSCTR FIXED(31) DEFINED(ADWBSCCT);
    DCL RVTLGTH FIXED(31) DEFINED(ADWRVTLG);
    DCL GETAREA CHAR(12) BDY(WORD) DEFINED(ADWGETAR);
    DCL FREEAREA CHAR(12) BDY(WORD) DEFINED(ADWFREAR);
    DCL 1 BLDLIST CHAR(62) BDY(HWORD) DEFINED(ADWBLDL),
        2 BLDNTRYN PTR(15),
        2 BLDNTRYL PTR(15),
        2 BLDLNTRY CHAR(58),
        3 BLDLNAME CHAR(8),
        3 BLDLDATA CHAR(50);
    DCL IPLTXTNM CHAR(9) DEFINED(ADWIPLTN);
    DCL SRCH BIT(8) DEFINED(ADWSRCH);
    DCL ISOSUBA FIXED(8) DEFINED(ADWISUBA);
    DCL PADSIZE FIXED(8) DEFINED(ADWPADSZ);
    DCL 1 FLAGS1 CHAR(1) DEFINED(ADWFLGS1),
        2 ERRFLG BIT(1),
        2 PSNASW BIT(1),
        2 LOOPSW BIT(1),
        2 SKIPSW BIT(1),
        2 QCBSKP BIT(1),
        2 OUTSW BIT(1);
    DCL 1 FLAGS2 BIT(8) DEFINED(ADWFLGS2),
        2 LINEDEL BIT(1),
        2 PUDEL BIT(1),
        2 CTERMDEL BIT(1),
        2 GPCLUST BIT(1);
    DCL 1 FLAGS3 BIT(8) DEFINED(ADWFLGS3),
        2 MANDLSW BIT(1);
./ ADD NAME=TAIBD
         MACRO
         TAIBD &EXT=(NETWKCTL,GETREAD,PUTWRITE,POINT,CKREQ,QRESET)
IEDQAIB  DSECT
         SPACE
*        OS/VS2 , TCAM LEVEL 9, 9/22/75                        @Z40X9AG
         SPACE 1                                               @Z40X9AG
.*A605000                                                      @ZA03744
.*D620000                                                      @ZA03744
.*C525000,640000                                               @Z40X9AG
.*A200000                                                      @OZ09941
.*C815000-835000                                               @OZ11191
AIBSTATE DS    X                        STATUS OF BLOCK
AIBFREE  EQU   X'00'                    BLOCK AVAILABLE
AIBBUSY  EQU   X'80'                    BLOCK BUSY
AIBCHAIN DS    AL3                      LINK FIELD OF CHAIN OF
*                                       AIBS
AIBECBA  DS    A                        ADDRESS OF ECB FOR SVC102
AIBPCBAD DS    A                        PCB ADDRESS
AIBWAPTR DS    A                        POINTER TO WORKAREA IN
*                                       AIB
AIBKEY   DS    X                        RCB KEY FIELD
AIBAPKEY EQU   X'18'                    APPL PROG / NETWKCTL FUNC
AIBQCBA  DS    AL3                      QCB ADDRESS OF RCB
AIBPRI   DS    X                        PRIORITY OF RCB
AIBLINK  DS    AL3                      LINK FIELD OF RCB
AIBEXT   DS    0F                       EXTENSION FOR FUNCTION
         LCLA  &IND
&IND     SETA  1
.LOOP1   AIF   (&IND GT 6).NEXT1
         AIF   ('&EXT(&IND)' EQ 'NETWKCTL').NET
&IND     SETA  &IND+1
         AGO   .LOOP1
.NET     ANOP
         SPACE 1
*        OPCTL / NETWORK CONTROL FUNCTION EXTENSION
AIBCOMCD DS    XL1                      COMMAND VERB FIELD
*                     BIT   DEFINITIONS                               *
AIBMCNT  EQU   X'06'                    MCOUNT
AIBTPDAT EQU   X'07'                    TPDATE
AIBQCLS  EQU   X'10'                    MCPCLOSE - QUICK
AIBFCLS  EQU   X'11'                    MCPCLOSE - FLUSH
AIBTCHNG EQU   X'20'                    TCHNG
AIBQCOPY EQU   X'40'                    QCOPY
AIBICHNG EQU   X'49'                    ICHNG
AIBICOPY EQU   X'50'                    ICOPY
AIBTCOPY EQU   X'80'                    TCOPY
AIBMRLSE EQU   X'87'                    MREALEASE
AIBICPYX EQU   X'D0'                    ICOPY EXTENDED         @OZ09941
*                                                                     *
AIBFLAG1 DS    XL1                      FLAG BYTE
*                     BIT   DEFINITIONS                               *
AIBENT01 EQU   X'01'                    3705 SERVICE RTN ENTRY
*                                       CODE FOR TCOPY
AIBENT02 EQU   X'02'                    3705 SERVICE ENTRY
*                                       CODE FOR ICOPY
AIBGETSZ EQU   X'80'                    FLAG = SIZING REQUEST
AIBTNT   EQU   X'40'                    FLAG = LOOK UP TERMINAL
*                                       ENTRY ADDRESS
*                                                                     *
AIBFLAG2 DS    XL1                      FLAG BYTE
*                     BIT   DEFINITIONS                               *
AIBRES04 EQU   X'04'                    3705 SERVICE RTN RESPONSE
*                                       FOR ICOPY
AIBRES08 EQU   X'08'                    3705 SERVICE RTN RESPONSE
*                                       FOR TCOPY
AIBDTS   EQU   X'20'                    BIT ON = DATE TIME REQUEST
AIBDEL   EQU   X'40'                    BIT ON = 'DELETE=YES' SPECIFIED
AIBRECDL EQU   X'80'                    BIT ON = GET RECORD DELIMITER
*                                                                     *
AIBOPRC  DS    XL1                      RETURN CODE FIELD
AIBNAME  DS    0XL8                     TERM OR DD NAME
         DS    F                        FILLER FOR DOUBLY USED AREA
AIBRNTO  DS    AL4                      3705 INTERFACE FIELD
AIBRNFRO DS    AL4                      3705 INTERFACE FIELD
AIBTNDX  DS    H                        TERMINAL INDEX FIELD
         DS    H                        FIELD SET & CHECKED BY 3705
*                                       SERVICE ROUTINE
AIBCOUNT DS    H                        DATA BYTE COUNT
AIBLIMIT DS    H                        QCOPY LIMIT VALUE
AIBRNRET DS    AL4                      RETURN ADD TO CONTINUE PROC
*                                       AFTER CALL TO 3705 SERVICE RTN
AIBQLMNA DS    AL4                      PTR TO USER'S TERM NA AREA FOR
*                                       QCOPY FUNCTION
         DS    F                        RESERVED
AIBXMLST DS    3F                       XMPOST LIST
AIBDATA  DS    0F                       DATA AREA
         SPACE 1
.NEXT1   ANOP
&IND     SETA  1
.LOOP2   AIF   (&IND GT 6).NEXT2
         AIF   ('&EXT(&IND)' EQ 'GETREAD').GR
&IND     SETA  &IND+1
         AGO   .LOOP2
.GR      ANOP
         SPACE 1
*        GET / READ FUNCTION EXTENSION
         SPACE 1
         ORG   AIBEXT                   GETREAD
AIBGPEWA DS    A                        ADDRESS OF PEWA
AIBRECFG DS    X                        DCBRECFM
AIBMACRF DS    X                        DCBMACRF
AIBBUFL  DS    H                        DCBBUFL
AIBBLKSI DS    H                        DCBBLKSI
AIBLRECL DS    H                        DCBLRECL
AIBOPTCG DS    X                        DCBOPTCD
AIBEXLFG DS    X                        CHECKPOINT FLAG
CKPTFLG  EQU   X'0F'                    CHECKPOINT IN EXIT LIST
AIBLNGTH DS    H                        DECLNGTH
AIBDECBG DS    A                        ADDRESS OF DECB
AIBDECS  DS    A                        DECSDECB
WAFULL   EQU   X'40'                    WORKAREA FILLED
AIBCTLG  DS    A                        ADDRESS OF CTL BYTE IN WA
AIBCMPTG DS    0CL16                    POST PARAMETER LIST    @Z40X9AG
AIBSSGF1 DS    XL1                      FLAG BYTE 1            @Z40X9AG
AIBSSGEC EQU   X'2C'                    SCH SRB ENTRY CODE     @Z40X9AG
AIBSSGEA DS    AL3                      ECB ADDRESS            @Z40X9AG
AIBSSGAS DS    A                        ASCB ADDRESS           @Z40X9AG
AIBSSGCC DS    XL1                      COMPLETION CODE        @Z40X9AG
         DS    XL1                      UNUSED                 @Z40X9AG
AIBSSGID DS    H                        ASID                   @Z40X9AG
AIBSSGTC DS    A                        TCB ADDRESS            @Z40X9AG
         ORG   AIBSTATE+72
AIBWAG   DS    0F                       START OF WORKAREA
.NEXT2   ANOP
&IND     SETA  1
.LOOP3   AIF   (&IND GT 6).NEXT3
         AIF   ('&EXT(&IND)' EQ 'PUTWRITE').PW
&IND     SETA  &IND+1
         AGO   .LOOP3
.PW      ANOP
         SPACE 1
*        PUT / WRITE FUNCTION EXTENSION
         SPACE 1
         ORG   AIBEXT                   PUTWRITE
AIBPPEWA DS    A                        ADDRESS OF PEWA
AIBMSTRT DS    H                        START OF MESSAGE
AIBWASZE DS    H                        SIZE OF WORKAREA
         DS    X                        RESERVED               @ZA03744
AIBEXLFP DS    X                        CHECKPOINT INDICATOR
CKPTFLP  EQU   X'0F'                    CHECKPOINT IN EXIT LIST
AIBOPTCP DS    X                        DCBOPTCD
AIBRECFP DS    X                        DCBRECFM
AIBDECBP DS    A                        ADDRESS OF DECB
AIBCMPTP DS    0CL16                    POST PARAMETER LIST    @Z40X9AG
AIBSSPF1 DS    XL1                      FLAG BYTE 1            @Z40X9AG
AIBSSPEC EQU   X'2C'                    SCH SRB ENTRY CODE     @Z40X9AG
AIBSSPEA DS    AL3                      ECB ADDRESS            @Z40X9AG
AIBSSPAS DS    A                        ASCB ADDRESS           @Z40X9AG
AIBSSPCC DS    XL1                      COMPLETION CODE        @Z40X9AG
         DS    XL1                      UNUSED                 @Z40X9AG
AIBSSPID DS    H                        ASID                   @Z40X9AG
AIBSSPTC DS    A                        TCB ADDRESS            @Z40X9AG
         ORG   AIBSTATE+72
AIBWAP   DS    0F                       START OF WORKAREA
.NEXT3   ANOP
&IND     SETA  1
.LOOP4   AIF   (&IND GT 6).NEXT4
         AIF   ('&EXT(&IND)' EQ 'POINT').PT
&IND     SETA  &IND+1
         AGO   .LOOP4
.PT      ANOP
         SPACE 1
*        POINT FUNCTION EXTENSION
         SPACE 1
         ORG   AIBEXT                   POINT
AIBRPEWA DS    A                        ADDRESS OF PEWA
AIBSTANM DS    FL8                      STATION NAME
AIBINOUT DS    X                        INPUT OR OUTPUT
AIBIN    EQU   C'I'                     INPUT SEQUENCE NUMBER
AIBOUT   EQU   C'O'                     OUTPUT SEQUENCE NUMBER
AIBSEQNO DS    H                        SEQUENCE NUMBER
AIBCMPTR DS    3F                       CROSS MEMORY POST LIST
         ORG   AIBSTATE+72
AIBWAR   DS    0F                       START OF WORKAREA
.NEXT4   ANOP
&IND     SETA  1
.LOOP5   AIF   (&IND GT 6).NEXT5
         AIF   ('&EXT(&IND)' EQ 'CKREQ').CK
&IND     SETA  &IND+1
         AGO   .LOOP5
.CK      ANOP
         SPACE 1
*        CHECK REQUEST FUNCTION EXTENSION
         SPACE 1
         ORG   AIBEXT                   CKREQ
*              CHECK REQUEST ELEMENT IN AIB STARTS WITH AIBKEY
AIBCKECB DS    A                        ADDRESS OF ECB - CREECB@OZ11191
AIBOFFS  DS    0H                       TERM ENTRY OFFSET -    @OZ11191
*                                        CREOFFS               @OZ11191
AIBCPEWA DS    A                        ADDRESS OF FIRST PEWA  @OZ11191
*                                        IN CHAIN - CREDEB     @OZ11191
AIBCMPTC DS    3F                       CROSS MEMORY POST LIST
.NEXT5   ANOP
&IND     SETA  1
.LOOP6   AIF   (&IND GT 6).FINIS
         AIF   ('&EXT(&IND)' EQ 'QRESET').QR
&IND     SETA  &IND+1
         AGO   .LOOP6
.QR      ANOP
         SPACE 1
*        QRESET FUNCTION EXTENSION
         SPACE 1
         ORG   AIBEXT                   QRESET
AIBQPEWA DS    A                        ADDRESS OF PEWA
AIBDESTN DS    FL8                      DESTINATION QUEUE NAME
AIBOSEQN DS    H                        OUTPUT SEQUENCE NUMBER
AIBINDEX DS    H                        INDEX TO TERMINAL ENTRY
AIBTTPTR DS    A                        ADDR OF TERM TABLE ENTRY
AIBMAXNO DS    F                        MAXIMUM SEQ NUMBER
AIBMSGNO DS    H                        MESSAGE NUMBER
AIBRETCD DS    H                        RETURN CODE
AIBCMPTQ DS    3F                       CROSS MEMORY POST LIST
         ORG   AIBSTATE+72
AIBWAQR  DS    0F                       START OF WORKAREA
.FINIS   SPACE
         MEND
./ ADD NAME=TASCD
         MACRO
&L       TASCD &A,&B,&C,&D,&E
         LCLA  &X,&Y
&X       SETA  N'&C
&L       DS    0C START OF ENTRY.
         DC    AL1(A&SYSNDX-&L)  LENGTH OF ENTRY.
.L1      ANOP
&Y       SETA  &Y+1
         TASCE &A,&B,&C(&Y),&D(&Y),&E(&Y)
         AIF   (&Y LT &X).L1
A&SYSNDX DS    0C                 END OF ENTRY.
         MEND
./ ADD NAME=TASCE
         MACRO
         TASCE &A,&B,&C,&D,&E
         LCLA  &X
         LCLC  &Y
&X       SETA  K'&E
&Y       SETC  '&X'
A&SYSNDX DS    0C                 START OF POSITIONAL.
         DC    AL1(C&SYSNDX-A&SYSNDX)  LENGTH OF POSITIONSL.
         DC    AL1((C&SYSNDX-B&SYSNDX)*HEX)  CONTROL BYTE.
         DC    AL1(&Y)            MAXIMUM LENGTH.
B&SYSNDX DS    0C                 START OF CONTROL BYTES.
         TAS   &A,&B,&C,&D
C&SYSNDX DS    0C                 END OF POSITIONAL.
         MEND
./ ADD NAME=TASC
         MACRO
         TASC  &A,&B,&C,&D,&E
A&SYSNDX DC    AL1((D&SYSNDX-C&SYSNDX)*HEX+L'B&SYSNDX)  CONTROL & COMP.
B&SYSNDX DC    C'&E'  COMPARE BYTES.
C&SYSNDX DS    0C                 START OF CONTROL BYTES.
         TAS   &A,&B,&C,&D
D&SYSNDX DS    0C                 END OF CONTROL BYTES.
         MEND
./ ADD NAME=TASCT
         MACRO
&L       TASCT &A,&B,&C,&D,&E
         LCLA  &X,&Y
&X       SETA  N'&D
&L       DS    0C                 START OF ENTRY.
         DC    AL1(B&SYSNDX-&L)  LENGTH OF ENTRY.
A&SYSNDX DS    0C                 START OF FIRST POSITONS.
         DC    AL1(B&SYSNDX-A&SYSNDX)  LENGTH OF FIRST POSITION.
.L1      ANOP
&Y       SETA  &Y+1
         TASC  &A,&B,&C,&D(&Y),&E(&Y)
         AIF   (&Y LT &X).L1
B&SYSNDX DS    0C                 END OF ENTRY.
         MEND
./ ADD NAME=TAS
         MACRO
         TAS   &A,&B,&C,&D
         LCLC  &Y
         AIF   ('&B' EQ 'DDWA').L1
         AIF   ('&B' EQ 'JCT').L2
         AIF   ('&B' EQ 'SCT').L3
         AIF   ('&B' EQ 'SIOT').L4
         AIF   ('&B' EQ 'JFCB').L5
         AIF   ('&B' EQ 'JFCX').L6
.*             JFCBE INSERTED.....                             @Z40MPTH
.*             MERGE SU4,10,16 CODE TO REL 037 BASE PTF        @ZA28955
         AIF   ('&B' EQ 'JFCE').L7                             @Z40MPTH
         AIF   ('&B' EQ 'DSN').L8
         AIF   ('&B' EQ 'DICT').L9
         AIF   ('&B' EQ 'IWA').L10
.L1      ANOP
&Y       SETC  'INAM'
         AGO   .LA
.L2      ANOP
&Y       SETC  'INJM'
         AGO   .LA
.L3      ANOP
&Y       SETC  'INSM'
         AGO   .LA
.L4      ANOP
&Y       SETC  'INDM'
         AGO   .LA
.L5      ANOP
&Y       SETC  'INFM'
         AGO   .LA
.L6      ANOP
&Y       SETC  'INEM'
         AGO   .LA
.L7      ANOP
.*             INGM INSERTED FOR JFCBE....                     @Z40MPTH
&Y       SETC  'INGM'                                          @Z40MPTH
         AGO   .LA
.L8      ANOP
&Y       SETC  'INNM'
         AGO   .LA
.L9      ANOP
&Y       SETC  'INTM'
         AGO   .LA
.L10     ANOP
&Y       SETC  'INIM'
.LA      ANOP
         DC    AL1(&A*HEX+&Y) FUNCTION AND TABLE BYTE.
         DC    AL1(&C-&Y&B)     OFF SET IN PROPER TABLE.
         AIF   ('&A' EQ 'MVCN' OR '&A' EQ 'AMVCN').LE
         AIF   ('&A' EQ 'AMVCN1' OR '&A' EQ 'AMVCN2').LE       @ZA20550
         AIF   ('&A' EQ 'CVB1').LB
         AIF   ('&A' EQ 'CVB2').LC
         AIF   ('&A' EQ 'CVB3').LD
         DC    AL1(&D)      BIT PATTERN.
         AGO   .LE
.LB      ANOP
         DC    AL1(&D)      MAXIMUM CONVERSION NUMBER.
         AGO   .LE
.LC      ANOP
         DC    AL2(&D)      MAXIMUM CONVERSION NUMBER.
         AGO   .LE
.LD      ANOP
         DC    AL3(&D)      MAXIMUN CONVERSION NUMBER.
.LE      ANOP
         MEND
./ ADD NAME=TAVTD
*        %GOTO BSLAVT;                                               /*
         MACRO
         TAVTD &C,&SAVT=YES                                      S22024
.*A-000000-999999                                              @X31X8X0
         SPACE
.*       CONVERTED TO BILINGUAL ON 09/26/72                      S22024
.*       UPDATED   6/7/74                                      @Z30X8XE
.*CHANGE ACTIVITY = AS FOLLOWS:                                 SA51078
.*C006800                                                       SA51078
.*A610000,742000-745200                                         SA51078
.*D610000-616000,742000-744000                                  SA51078
.*A913230-913290,913480,939410-939430,939793-939796              X03039
.*C225600-225700,912300-913200,921150-921200,924650-924850,      X03039
.*C939050-939400,939792                                          X03039
.*D913300-913450,939450-939774                                   X03039
.*A208700,225600-225800                                          S22027
.*C232500,366000                                                 S22027
.*C232500                                                        S22026
.*A099000,208200-209600,225500,263000,285000,301000,303000       S22026
.*A341000,357000,695000                                          S22026
.*C178000                                                       SA65392
.*C178000                                                        S21903
.*A000000,912000                                                 S22024
.*C004000,225000,225600,232500-233000,914000                     S22024
.*A913405,939752                                                 Y06328
.*A913410,939754,913450,939774                                   Y05330
.*C006400                                                      @Z30X8XE
.*C913485-913492,939790-939792                                 @X50X9XI
.*A913490,939792                                               @X50X9XI
.*C912998,913080,913494-913500,939210,939560                   @XA09324
.*C939320-939332,939720-939792                                 @XA09324
.*D913493                                                      @XA09324
.*C913080                                                      @XA09795
.*A208600                                                      @ZA07083
.*C920350                                                      @ZA07083
.*C225600-225700,232700,912360-913517,921150-921210,921370     @Y17XANU
.*C939070-969789                                               @Y17XANU
.*A232700,698000,921370,934100                                 @Y17XANU
.*C896040,421207,410200,884100                                 @Y17XAXF
.*D410900,884800,424200,898100                                 @Y17XAXF
.*A082500,084100,530650,530700,530750,530800                   @G36XRXG
.*C133700,589400,590100                                        @OS77945
.*A459800,967800                                               @OY19488
*A171200,649600                                                @OY19124
.*C051800-052500,490700-491400                                 @OY19405
         SPACE
IEDQAVTD DSECT
         AIF   ('&C' EQ '').DSECT
         AIF    ('&C' EQ '2').D2
         AIF    ('&C' EQ '3').D3
         AIF    ('&C' EQ '4').D4
.DSECT   ANOP
AVTSAVE1 DS    18F .                    MESSAGE CONTROL PROG SAVEAREA
.D2      ANOP
AVTSAVE2 DS    18F
.D3      ANOP
AVTSAVE3 DS    18F
.D4      ANOP
AVTSAVE4 DS    18F
AVTSAVEX DS    10F .                    DISABLED SAVEAREA
         ORG   *-8
AVTDLQ   DS    D .                      DLQ=TERMNAME
AVTCSTCS DS    A IEDQSTCS               ADDR OF FIRST ENTRY
*                                         CHARACTERISTICS TABLE
AVTDPARM DS    F .                      DISABLED PARAMETER LIST
*                                         USED WITH DOUBX
AVTDOUBX DS    D .                      DISABLED DOUBLEWORD SCRATCH
AVTDOUBL DS    D .                      ENABLED SCRATCH AREA
AVTCTLCH DS    D .                      OPERATOR CONTROL CHARACTERS
AVTPASWD DS    D .                      PASSWORD
AVTTCB   DS    A .                      ADDRESS OF MESSAGE CONTROL
*                                         PROGRAM'S TCB.
*                                         SET BY OPEN
AVTRACE  DS    A .                      TRACE TABLE ADDRESS
*
*                       DISPATCHER'S READY QUEUES
*
AVTREADY DS    A AVTDELEM  .            ADDRESS OF FIRST OF CHAIN
*                                         OF ELEMENTS IN PRIORITY
*                                         ORDER
AVTBUFTR DS    0A .                     ADD. OF BUFFER TRACE   @OY19405
AVTREADD DS    A .                      DISABLED FIFO READY Q  @OY19405
AVTBUFSW DS    0X .                     BUFFER TRACE OPTION SW @OY19405
AVTFULLT EQU   X'01' .                  TRACE ENTIRE BUFFER    @OY19405
AVTUNCON EQU   X'02' .                  TRACE WITHOUT IO TRACE @OY19405
         DS    1H .                                            @OY19405
AVTBUENT DS    0H .                     NO. ENT. SPEC. ON INTRO@OY19405
         DS    1H .                                            @OY19405
         DS    0A .                     CHECKPOINT WORKAREA    @Y17XAXF
AVTCKFLG DS    XL1 .                    CHECKPOINT ACTIVE FLAGS
*                                                              @Y17XAXF
AVTCKTAC EQU   X'80' .                   TCAM CHECKPOINT IS ACTIVE
*                                                              @Y17XAXF
AVTCKNAC EQU   X'40' .                   CHECKPOINT FOR A 3705 IS ACTIV
*                                                              @Y17XAXF
AVTCKENV EQU   X'20' .                   FORCE ENVIRONMENT CHECKPOINT
*                                                              @Y17XAXF
AVTCKREQ EQU   X'10' .                   THERE IS AN ELEMENT ON THE
*                                          OPERATOR CONTROL CHECKPOINT
*                                          QUEUE THAT WILL REQUEST AN
*                                          ENVIRONMENT CHECKPOINT
*                                                              @Y17XAXF
AVTCKHLT EQU   X'08' .                   A REQUEST TO CKPT A HALT TCAM
*                                          COMMAND HAS BEEN PROCESSED
*                                                              @Y17XAXF
*        EQU   X'04'-X'01' .             RESERVED              @Y17XAXF
AVTCKAVT DS    AL3 .                    ADDRESS OF CHECKPOINT AVT
*                                                              @Y17XAXF
AVTOCGET DS    A .                      OPERATOR CONTROL WORKAREA
AVTEXA2S DS    3H .                     EXECUTED INSTRUCTIONS TO
AVTEXS2A DS    3H .                       SAVE USER'S REGISTERS
AVTPARM  DS    A .                      ADDRESS OF PARAMETERS
*
AVTPKF   DS    0X .                     PROTECTION KEY FROM TCB
*                                         OF MCP
*                        BIT DEFINITIONS
AVTFTCHF EQU   X'08' .                  FETCH PROTECT ACTIVE SWITCH
*
AVTBASE  DS    A IEDQAVT  .             ADDRESS OF AVT
AVTPARM3 DS    A .                      ADDITIONAL OPTIONAL PARM
AVTDISTR DS    A .                      ADDR OF DISPATCHER TRACE
AVTRNMPT DS    A IEDQTNT  .             ADDRESS OF TERMNAME TABLE
AVTRDYA  DS    A IEDQRDYA  .            USER EXIT ADDRESS IN READY
AVTBSCAN DS    A .                      LINE END BSC MSG SCAN
AVTRARTN DS    A AVTDUMBR               ADDR OF RTN TO UPDATE LINE
*                                         TRACE TABLE. IF TRACE,
*                                         OPEN LOADS THIS MODULE
AVTSBTA  DS    A .                      ADDR IEDQSBT ROUTINE   @YM07020
AVTMVBFR DS    A .                      ADDR OF IEDMVBFR ROUTN @Y17XAXF
* AVTMVBFR IS NON-ZERO IF NON-EP MODE  OR                      @Y17XAXF
* IF EP MODE, AND TOTE IS IN THE SYSTEM                        @Y17XAXF
AVTSPLPT DS    A .                      START PARAMETER LIST
*                                         POINTER, SET BY INTRO
AVTCIB   DS    AL1 .                    CIB=INTEGER
AVTNCKPR DS    X .                      CKREQS=INTEGER
AVTNOLBF DS    H .                      LNUNITS=INTEGER
AVTAS    DS    A .                      RELEASE
*
*              ADDRESSES OF TCBS OF ATTACHED TASKS
*
AVTCKTCB DS    A .                      CHECKPOINT
AVTOCTCB DS    A .                      OPERATOR CONTROL
AVTOLTCB DS    A .                      ON LINE TEST
AVTCWTCB DS    A .                      COMMON WRITE FE TASK
*
*                       EVENT CONTROL BLOCKS
*
AVTCWECA DS    A .                      COMMON WRITE FE TASK ECB
AVTCKECA DS    F .                      CHECKPOINT
AVTOLECA DS    F .                      ON LINE TEST
AVTOPECA DS    F .                      OPERATOR CONTROL
AVTECB1  DS    0XL1                                            @G36XRXG
AVTOSECB DS    F .                      EVENT CONTROL BLOCK USED BY
*                                         DISPATCHER TO CAUSE QTAM
*                                         TASK TO BE IN WAIT STATE
AVTCOMP  EQU   X'40'                    ECB POSTED COMPLETE    @G36XRXG
AVTPCBPT DS    A .                      FIRST PROCESS CONTROL BLOCK
AVTOPTPT DS    F .                      ADDRESS OF OPTION TABLE
AVTKA02  DS    A IEDQKA02               I/O GENERATOR IN ACTIVATE
AVTHRESH DS    F                        THRESHHOLD VALUES       SA65392
AVTCRSRF DS    F .                      CROSSRF=INTEGER
AVTCOMPT DS    A .                      ADDR OF COMMUNICATIONS PARM
AVTUI    DS    A IEDQUI                 USER INTERFACE
AVTE8    DS    A .                      SEARCH ROUT APPL. PROG.  S22025
AVTOLTST DS    0X .                     OLTEST=INTEGER
AVTHG02  DS    A IEDQHG02               REMOVE ELE FROM TIME DELAY Q
AVTAL    DS    A IEDQAL                 SCAN AT OFFSET           S22025
AVTGD    DS    A IEDQGD  .              BUFFER ASSOCIATION
AVTA3    DS    A .                      TRANSPARENCY CCW BUILDER (BT)
AVTAX    DS    A IEDQAX                 SCAN BUFFER              S22025
AVTEA    DS    A .                      DISPATCHER
*
AVTDISP  EQU   * .                      THESE SUBTASKS ARE ACTIVAT-
*                                         ED BY THE DISPATCHER.
AVTHA    DS    A .                      RECEIVE SCHEDULER
AVTSCOPT DS    0XL1 .                                            S22026
*                                                                S22026
*                      BIT DEFINITIONS FOR HIGH ORDER BYTE       S22026
AVTAPDMP EQU   X'20'                    APPL DUMP REQUESTED    @ZA07083
AVTCMBUF EQU   X'10' .                  COMMON BUFFER TRANSMISSINS22027
AVTCONC  EQU   X'08' .                  CONCENTRATOR MIXED       S22026
AVTCONCO EQU   X'04' .                  CONCENTRATOR ONLY        S22026
AVTN2741 EQU   X'02' .                  NO 2741 AND NO TSO       S22026
AVTNDIAL EQU   X'01' .                  NO DIAL                  S22026
*                                                                S22026
AVTHD    DS    A .                      SEND SCHEDULER
AVTEW    DS    A .                      GET SCHEDULER
AVTEC    DS    A .                      PUT SCHEDULER
AVTEZ    DS    A .                      GET FIFO
AVTBZ    DS    A .                      LOG SCHEDULER
AVTR1    DS    A .                      DIAL SCHEDULER
AVTHB    DS    A .                      BUFFERED SCHEDULER
AVTE7    DS    A .                      RETRIEVE SCHEDULER
AVTQ1    DS    A .                      LOCAL SCHEDULER          S22024
AVTCSCH  DS    A .                      CONC SEND SCHEDULER      S22026
AVTSEND  DS    V(IEDIAQ) .              3705 RES SEND SCHED    @Y17XAXU
AVTRCV   DS    V(IEDIAM) .              3705 RES RECV SCHED    @Y17XAXU
AVTCMBSS DS    A .                      COMMBUF SEND SCHEDULER   S22027
*
*
*                       SPECIAL ELEMENTS
*
         DS    A .                      RESERVED                 S22024
AVTSAVTF DS    0X                       SAVT FLAGS               X03039
AVTVTMCP EQU   X'80' .                  3705 ENVIRONMENT       @Y17XAXU
AVTONSNA EQU   X'40' .                  ONLY SNA ENVIRONMENT   @Y17XAXU
AVTSNA   EQU   X'20' .                  SNA ENVIRONMENT        @Y17XAXU
AVTSAVTP DS    A .                      SECONDARY AVT POINTER    S22024
AVTPLCBN DS    H .                      NUMBER OF PLCBS          S22024
AVTABEND DS    3H .                     ABEND 045, SUBCODE IN R15
AVTDMECB DS    A .                      DUMMY LINE I/O ECB
AVTA3TL  DS    A .                      IEDQA3,TRANSLATE LIST
AVTTONE  DS    A .                      ADDR OF WORLD TRADE TONE CHARS
AVTNX    DS    A .                      OPERATOR AWARENESS MSG ROUTER
AVTIOT   DS    A IGG019Q0               I/O TRACE TABLE HANDLER
AVTHI    DS    A IEDQHI                 SYSTEM DELAY QCB ADDR
AVTHK    DS    A IEDQHK                 STOPLINE QCB ADDR
AVTCKPEL DS    0CL16 .                  TIME DELAY REMOVAL ELEMENT
*                                       FOR CHECKPOINT         @Y17XAXF
AVTCKRMV DS    0F .                      1ST WORD OF REMOVAL ELEMENT
*                                                              @Y17XAXF
AVTCKRKY DS    XL1 .                      KEY FOR REMOVAL ELEMENT
*                                                              @Y17XAXF
AVTCKRMQ DS    AL3 .                      ADDR OF TIME DELAY QCB
*                                                              @Y17XAXF
AVTCKRPR DS    XL1 .                     PRIORITY              @Y17XAXF
AVTCKRLK DS    AL3 .                     LINK                  @Y17XAXF
         DS    CL8                       LAST 2 WORDS OF ELEMENT
*                                                              @Y17XAXF
AVTCKELE DS    2A .                     TIME DELAY OR REUS POSTS
*                                         ELE TO START CHECKPOINT
AVTSCBSZ DS    X .                      NO. BYTES IN SCB INCLUDING
*                                         SAVEAREA FOR USER'S REGS
AVTCKQAD DS    AL3 AVTCKPTB             CKPT QCB ADDRESS
AVTCKELF DS    X .                      FLAG BITS
*                        BIT DEFINITIONS
AVTNQBCK EQU   X'80'                    NO QBACK SCAN NEEDED   @OS77945
AVTCMCPN EQU   X'40' .                  CHECKPT REQUESTED BY
*                                         MCPCLOSE
*        EQU   X'20' .                  UNUSED
AVTCINCN EQU   X'10' .                  CHECKPT REQUESTED BY
*                                         INCIDENT OVERFLOW
AVTCCLCN EQU   X'08' .                  CLOSEDOWN COMPLETION BIT
AVTCPIPN EQU   X'04' .                  CHECKPT IN PROGRESS
AVTCRTLN EQU   X'02' .                  CHECKPOINT REQUESTED
AVTWARMN EQU   X'01' .                  WARM RESTART
AVTCONTN EQU   X'FF'-AVTWARMN .         CONTINUATION RESTART
*
AVTCPRCD DS    X .                      CPRCDS=INTEGER
AVTCKELV DS    H .                      CPINTVL=TIME INTERVAL
AVTCKTIM DS    H .                      TIME OF DAY OF INTERRUPT
         DS    X .                      INDEX TO QCB ADDRESS
AVTOPERL DS    X .                      OPEN ERROR LOCATOR
AVTOPXCL DS    2X .                     OPEN MODULE ID HAVING ERROR
AVTOPERT DS    X .                      TYPE OF OPEN ERROR
AVTCKBYT DS    X .                      CKPT TIME DELAY STATUS
*                        BIT DEFINITIONS
AVTCKONQ EQU   X'02' .                  BIT ON, ELE ON TIME Q
*
AVTOPETR DS    0X .                     OPEN TRANSLATE BYTE
AVTHG01  DS    A IEDQHG01               TIME DELAY SUBROUTINE
AVTBSX   DS    0X 8                     OFFSET TO BINARY SEARCH ADDR
AVTCKLNK DS    A .                      LINK FIELD ON TIME Q
AVTDELEM DS    A AVTREADY-8             DUMMY LAST ELEMENT
AVTDELAD DS    A AVTDELEM  .            ADDR OF DUMMY LAST ELEMENT
*
AVTCRELE DS    0CL8 .                   OPERATOR CONTROL CKPT REQUEST
*                                        ELEMENT               @Y17XAXF
AVTCCELE DS    0F
AVTCCKEY DS    XL1 .                     OP CONTROL KEY FOR CKPT
*                                                              @Y17XAXF
AVTCCQCB DS    AL3 .                     ADDR OF CKPT QCB      @Y17XAXF
AVTCCPRI DS    XL1 .                     PRIORITY              @Y17XAXF
AVTCCLNK DS    AL3 .                     LINK                  @Y17XAXF
AVTCLRHI DS    2X .                     WHEN USED WITH NEXT HALFWOD
*                                         IS A MASK FOR CLEARING
*                                         LEFT TWO BYTES OF REGISTR
AVTHFF   DS    XL2 FFFF  .              HALF WORD ALL 'F'
AVTABEPL DS    0F .                     ABEND PARMETER LIST    @YM07738
AVTADBUF DS    A .                      BUFFER ADDRESS SET BY
*                                         MH CONTROL
AVT2260L DS    F .                      PT TO 2260 LOCAL APPENDAGE
AVTSYSER DS    X .                      SYSTEM ERROR FLAG BYTE
*                        BIT DEFINITIONS
AVTCMINN EQU   X'80' .                  NO. CORE Q UNITS LESS THAN
*                                         SPECIFIED BY MSMIN=PERCENT
AVTCMINF EQU   X'FF'-AVTCMINN .         NO. CORE Q UNITS MORE THAN
*                                       SPECIFIED BY MSMIN=PERCENT
AVTCMAXN EQU   X'40' .                  NO. CORE Q UNITS MORE THAN
*                                         SPECIFIED BY MSMAX=PERCENT
AVTCMAXF EQU   X'FF'-AVTCMAXN .         NO. CORE Q UNITS LESS THAN
*                                         SPECIFIED BY MSMAX=PERCENT
*
AVTMSGS  DS    AL3 IEDQMSGS             LIST OF OPTIONAL VCONS
*
*                       POINTERS TO QCBS
*
AVTCBQCB DS    A .                      COMMBUF MASTER QCB       S22027
AVTSUPPT DS    A .                      STARTUP MESSAGE
AVTTSOPT DS    A .                      TS INPUT
AVTOCQPT DS    A IEDQEU                 OPEN/CLOSE APPLICATION PROG
*
*                       NON-OPTIONAL QCBS
*
AVTDELYB DS    4A .                     TIME DELAY QCB
AVTREFTM DS    H .                      REFERENCE TIME, CURRENT TIME
*                                         OF DAY + OR - 6 HOURS
AVTINOUT DS    H .                      DUMMY INEND/OUTEND PARM LIST
AVTIMQPS DS    2A .                     SVC 102 PARM, POST TIME QCB
*                                         TO ITSELF AT TIME INTERRUPT
AVTTIMQ  DS    A .                      TIME DELAY QUEUE
AVTBFREB DS    F                        AVAILABLE BUFFER QCB   @OY19124
AVTBFRFG DS    XL1                      BUFFER POOL FLAG       @OY19124
AVTBFRTN EQU   X'80'                    RETURN BUFFERS BOTTOM  @OY19124
AVTSELCH DS    AL3                      BUFFER POOL BOTTOM     @OY19124
         DS    F                                               @OY19124
AVTBFRTB DS    3F .                     BUFFER RETURN
AVTCKPQB DS    0CL12 .                  CKECKPOINT QCB         @Y17XAXF
AVTCKPTB DS    0F .                      QUEUE OF ELEMENTS FOR CKPT
*                                                              @Y17XAXF
AVTCKPVT DS    XL1 .                      VTO FOR ATTACHED TASK
*                                                              @Y17XAXF
AVTCKPCH DS    AL3 .                      CHAIN OF ELEMENTS    @Y17XAXF
AVTCKPEC DS    0F                        EVENT CONTROL BLOCK   @Y17XAXF
AVTCKPCC DS    XL1 .                      COMPLETION CODE BYTE @Y17XAXF
AVTCKPWA EQU   X'80' .                     WAITING FOR COMPLETION OF
*                                          THE EVENT           @Y17XAXF
AVTCKPPO EQU   X'40' .                     EVENT HAS COMPLETED @Y17XAXF
*        EQU   X'20'-X'01' .               RESERVED            @Y17XAXF
         DS    AL3 .                      RESERVED             @Y17XAXF
AVTCKPTS DS    CL1 .                     TEST AND SET FOR CKPT @Y17XAXF
         DS    AL3 .                     STCB ADDRESS          @Y17XAXF
AVTOPCQB DS    0CL12 .                  OPERATOR CONTROL QCB   @Y17XAXF
AVTOPCOB DS    0F .                      QUEUE OF ELEMENTS FOR OPCTL
*                                                              @Y17XAXF
AVTOPCVT DS    XL1 .                      VTO FOR ATTACHED TASK
*                                                              @Y17XAXF
AVTOPCCH DS    AL3 .                      CHAIN OF ELEMENTS    @Y17XAXF
AVTOPCEC DS    0F .                      EVENT CONTROL BLOCK   @Y17XAXF
AVTOPCCC DS    XL1 .                       COMPLETION CODE BYTE
*                                                              @Y17XAXF
AVTOPCWA EQU   X'80' .                     WAITING FOR COMPLETION OF
*                                          THE EVENT           @Y17XAXF
AVTOPCPO EQU   X'40' .                     EVENT HAS COMPLETED @Y17XAXF
         DS    CL3 .                       RESERVED            @Y17XAXF
         DS    A                         STCB ADDRESS          @Y17XAXF
AVTOLTQB DS    0A .                     ON LINE TEST QCB       @Y17XAXF
AVTOLTVT DS    XL1 .                    VTO FOR ATTACHED TASK  @Y17XAXF
AVTOLTCH DS    AL3 .                    CHAIN OF ELEMENTS      @Y17XAXF
AVTOLTEB DS    F .                      QCB                    @Y17XAXF
         DS    A .                      STCB ADDRESS           @Y17XAXF
AVTACTIB DS    3F .                     ACTIVATE
AVTCLOSB DS    3F .                     CLOSEDOWN COMPLETION
AVTCPRMB DS    3F .                     REMOVES ELE FROM TIME DELAY Q
AVTDSIOB DS    3F .                     DISK I/O QCB
AVTCPBCB DS    3F .                     CPB CLEANUP QCB
AVTCOREC DS    A .                      BUFFERS POOL FOR CLOSE
AVTCADDR DS    F .                      CORE QUEUE COUNT
AVTFZERO DS    F .                      FULLWORD OF ZEROES
*
*                       FE COMMON WRITE INTERFACE AREA
*
AVTCAREA DS    A IEDQFE                 PATCH MODULE
AVTCWPM1 DS    F .                      FIRST PARAMETER POINTER
AVTCWEC1 DS    F .                      FIRST ECB
AVTCWFL1 DS    X .                      FIRST FLAG BYTE
*
*                       AVTCWFL1 BIT DEFINITIONS
AVTCOMWN EQU   X'80' .                  COMWRTE=YES
*                                       REMAINING BITS UNDEFINED
*
AVTCWFL2 DS    X .                      ADDITIONAL FLAG BYTES
*
*                       AVTCWFL2 BIT DEFINITIONS
AVTCWACT EQU   X'80' .                  COMMON WRITE IS ACTIVE
*        EQU   X'7C' .                  RESERVED BY COMWRITE
AVTCWRAP EQU   X'02' .                  '0'-WRAPPING OUTPUT ALLOWED
*                                         (REUSE SAME VOLUME)
*                                       '1'-WRAP NOT ALLOWED (INVOKE
*                                         VOL SWITCHING-REQUIRES
*                                         MANUAL INTERVENTION)
AVTCWCLD EQU   X'01' .                  '1'-COMWRITE CLOSEDOWN
*                                         REQUESTED BY USER IN
*                                         PARMLIST OR TCAM CLOSEDOWN.
*                                         SET BY COMWRITE
*
AVTCWTS1 DS    X .                      COMWRITE ECB1 AVAIL    @Y17XAXU
AVTCWTS2 DS    X .                      COMWRITE ECB2 AVAIL    @Y17XAXU
AVTCWPM2 DS    F .                      SECOND PARAMETER POINTER
AVTCWEC2 DS    F .                      SECOND ECB
AVTAFE10 DS    A .                      ENTRY POINT OF IEDQFE10
AVTAFE20 DS    A .                      ENTRY POINT OF IEDQFE20
AVTAFE30 DS    A .                      ENTRY POINT OF IEDQFE30
AVTSUBT  DS    XL1 .                    SUBT OPTIONS FLAG      @Y17XAXU
AVTSUBON EQU   X'80' .                  SUBTASK TRACE ON       @Y17XAXU
AVTSUBPT EQU   X'40' .                  SUBTASK POST TRACE ON  @Y17XAXU
AVTIOTR  DS    XL1 .                    IOTR OPTIONS FLAG      @Y17XAXU
AVTIOTRE EQU   X'80' .                  I/O TRACE ON           @Y17XAXU
AVTIOTRH EQU   X'40' .                  I/O POST TRACE ON      @Y17XAXU
         DS    XL2 .                    RESERVED               @Y17XAXU
AVTDTRAP DS    A .                      SERVICE AID ENTRY ADDR @Y17XAXU
AVTCWINT DS    13F                      SERVICE COMMUNICATION  @Y17XAXU
*                                         AREA                  SA64772
AVTCWTOT DS    F                        TOTE COMMUNICATION AREA SA64772
*
*        GETMAIN EC,MF=L                GETMAIN PARAMETER LIST
AVTGETMN GETMAIN EC,MF=L
AVTHA2   DS    H 2  .                   CONSTANT
AVTHA3   DS    H 3  .                   CONSTANT
AVTHA4   DS    H 4  .                   CONSTANT
AVTHA7   DS    H 7  .                   CONSTANT
AVTHA16  DS    H 16  .                  CONSTANT
AVTKEYLE DS    H .                      KEYLEN ON MSG QUEUES
AVTLNCNT DS    H .                      NUMBER OF LINES OPENED
*                                         SET BY OPEN
*                                         CHECKED BY SYSTEM DELAY
AVTOPCNT DS    H .                      NUMBER OF LINES GRABBED BY
*                                         OPERATOR CONTROL.
*                                         SET BY DELAY SUBTASK
AVTOPCON DS    H .                      TERMNAME TABLE OFFSET TO
*                                         PRIMARY OPERATOR CONTROL
*                                         CONSOLE.  SET BY OPEN
*                                         FROM PRIMARY=TERMNAME IN
*                                         INTRO MACRO
AVTAVFCT DS    H .                      SET BY OPEN TO NUMBER OF
*                                         BUFFERS IN POOL
AVTSMCNT DS    H .                      NUMBER OF LINES SERVICED BY
*                                         STARTUP MESSAGE SUBTASK
AVTINTLV DS    H .                      NUMBER OF SECONDS OF SYSTEM
*                                         DELAY
*                                           SET BY OPERATOR CONTROL
*                                             OR BY INTRO INTVAL=INT
*                                           CHECKED BY DELAY SUBTASK
AVTDLQX  DS    H .                      OFFSET INTO TNT OF DEAD
*                                         LETTER QUEUE
AVTDUMBR DS    H BR 11                  DUMMY LINE TRACE TABLE UPDATE
AVTBIT1  DS    X .                      FLAG BITS
*
*                       BIT1 DEFINITIONS
*
AVTAPLKN EQU   X'80' .                  PREVENT DISK END APPENDAGE
*                                         FROM ADDING A CPB TO DIS-
*                                         ABLED DISK END Q FOR CPB
*                                         CLEANUP (AVTDKAPQ)
AVTAPLKF EQU   X'7F' .                  PERMITS ABOVE ACTION
AVTTSON  EQU   X'40' .                  ENVIRON=TSO (OR MIXED)
AVTAQTAN EQU   X'20' .                  ENVIRON=TCAM (OR MIXED)
AVTDLAYN EQU   X'10' .                  SYSTEM DELAY IS IN EFFECT
*                                         SET BY OPERATOR CONTROL
AVTDLAYF EQU   X'EF' .                  SYSTEM DELAY NOT IN EFFECT
*                                         TURNED OFF BY DELAY SUBT
AVTREADN EQU   X'08' .                  READY MACRO HAS BEEN
*                                         EXECUTED
*                                         SET BY READY MACRO
*                                         CHECKED BY OPEN
AVTCLOSN EQU   X'04' .                  CLOSEDOWN INDICATOR
*                                         '0'-CLOSEDOWN NOT REQUEST
*                                         '1'-CLOSEDOWN REQUESTED
AVTQUCKN EQU   X'02' .                  TYPE OF CLOSEDOWN
*                                         '0'-FLUSH
*                                         '1'-QUICK
AVTDISKN EQU   X'01' .                  DISK=YES
*
AVTBIT2  DS    X .                      FLAG BITS
*
*                       BIT2 DEFINITIONS
*
AVTEXTSC EQU   X'80' .                  EXTENDED RESTART        SA51078
AVTREUSN EQU   X'40' .                  REUS IS RUNNING
*                                         SET BY REUS
*                                         CHECKED BY CPB CLEANUP
AVTREUSF EQU   X'BF' .                    TURNED OFF BY REUS
AVTCOPYN EQU   X'20' .                  COPY WANTS CONTROL
AVTTOPOL EQU   X'10' .                  TOPMSG=YES/NO
*                                         ON,(NO) SUPPRESS TIME
*                                           OUT POLL MSGS
*                                         OFF,(YES) DISPLAY MSGS
AVTSTRTN EQU   X'08' .                  RESTART HAS BEGUN
AVTSTRTF EQU   X'F7' .                  COLDSTART (OR RESTART NOT
*                                        YET BEGUN)
AVTOPEIN EQU   X'04' .                  INITIAL LOAD DONE INDICATOR
*              X'02'                    LINETYP=STSP
*              X'01'                    LINETYP=BISC
*              X'03'                    LINETYP=MINI
*              X'00'                    LINETYP=BOTH
AVTBIT3  DS    X .                      FLAG BITS
*                       AVTBIT3 BIT DEFINITIONS
AVTSTAN  EQU   X'01' .                  S=C OR S=W SPECIFIED
AVTSTACN EQU   X'02' .                  S=C COLDSTART
AVTSTAWN EQU   X'FD' .                  S=W WARMSTART
AVTSTAIN EQU   X'04' .                  S=I INVITAION LISTS
AVTSTAYN EQU   X'08' .                  S=Y NO CONTINUATION
AVTOLTBN EQU   X'10' .                  MAX LOAD OF OLT REACHED
AVTTSAB  EQU   X'20' .                  TSO HAS ABENDED.SET BY TIME
*                                         SHARING ABEND MODULE. RESET
*                                         BY START TIME SHARING. CKED
*                                         BY TSINPUT & TSOUTPUT
AVTRFULN EQU   X'40' .                  REUS DISK ZONE FULL
*                                         SET BY REUS
AVTRFULF EQU   X'BF' .                  REUS DISK READY TO RECEIVE
*                                         TURNED OFF BY REUS
*                                         CHECKED BY REC. SCHEDULER
*                                           AND LINE END APPEN
AVTRECVN EQU   X'80' .                  CORE QUEUE FULL
*                                         SET BY DESTINATION SCHEDULER
AVTRECVF EQU   X'7F' .                    TURNED OFF BY DISK I/O
*                                         CHECKED BY RECEIVE SCHEDULER
*                                           AND LINE END APPENDAGE
*
AVTCKRST DS    X .                      RESTART=INTEGER
AVTDSKCT DS    H .                      NUMBER OF BUFFERS ON CPBS
AVTOPTN  DS    V(IEDOPTN) .             OPTION SEARCH RTN      @Y17XAXU
AVTSTEAL DS    V(IEDQGA02) .            BUFFER STEAL RTN       @Y17XAXU
AVTDDFT  DS    V(IEDQTL) .              DEVICE DEP FLD         @Y17XAXU
*                                       LOOKUP RTN             @Y17XAXU
AVTOPMSK DS    A .                      ADDRESS OF OPERATOR    @Y17XAXU
*                                       CONTROL MASK TABLE     @Y17XAXU
AVTDCTLN DS    H .                      LENGTH OF DCT MASK FLD @Y17XAXU
AVTOPCIN DS    H .                      TTCIN OF PRIMARY       @Y17XAXU
*                                       TERMINAL               @Y17XAXU
*                  END OF BASIC AVT WHEN ENVIRON=TSO
*
AVTHM02  DS    A IEDQHM02               DESTINATION ASSIGNMENT
AVTCMIN  DS    A .                      MSMIN=INTEGER
AVTCMAX  DS    A .                      MSMAX=INTEGER
AVTTOTNC DS    F .                      NUMBER OF RECORDS IN ENTIRE
*                                         DATA SET (MSUNITS=INTEGER)
AVTNCPBQ DS    2A .                     Q OF BUFFERS AND ERBS
*                                         WAITING TO BE PROCESSED
*
*                  END OF CORE QUEUE AVT WHEN DISK=NO
*
AVTFL    DS    A .                      DISK EXCP DRIVER
AVTIA    DS    A .                      REUS
AVTCOPY  DS    A .                      COPY SUBTASK QCB POINTER
AVTDKAPQ DS    2A .                     Q OF CPBS TO BE PROCESSED
*                                         BY CPB CLEANUP (DISABLED)
AVTDKENQ DS    2A .                     SAVE AS ABOVE BUT ENABLED
AVTNOBFQ DS    2A .                     Q OF CPBS WITHOUT BUFFERS.
*                                         USED BY CPB CLEANUP
AVTBIT4  DS    XL1 .                    FLAGBITS                SA51078
*                       AVTBIT4 BIT DEFINITIONS                 SA51078
AVTRUFTN EQU   X'80' .                  REUS ACTIVE AT CHECKPT  SA51078
         DS    AL3 .                    RESERVED                SA51078
         DS    AL4 .                    RESERVED                SA51078
AVTINCPQ DS    2A .                     Q OF CPBS REQUESTING I/O
*                                         TO BE DONE BY EXCP DRIVER
AVTFCPB  DS    A .                      Q OF INACTIVE CPBS, CALLED
*                                         THE CPB FREEPOOL
AVTCPBPT DS    A .                      ADDRESS OF CPB FREEPOOL TO
*                                         BE FREEMAINED BY DISK CLOSE
AVTIOBR  DS    A .                      ADDRESS OF LIST OF IOBS,
*                                         ONE FOR EACH EXTENT OF
*                                         THE REUSABLE DISK QUEUE
AVTIOBN  DS    A .                      SAME AS ABOVE, BUT FOR THE
*                                         NON-REUSABLE DISK QUEUE
AVTLODPT DS    F .                      RADDR WHEN REUS ACTIVATED
*                       REUSABLE DISK DEFINITION
AVTADEBR DS    A .                      ADDRESS OF DEB
AVTNOVOR DS    F .                      NUMBER OF EXTENTS
AVTRCTRR DS    F .                      NUMBER OF RECORDS/TRACK
AVTTRCYR DS    F .                      NUMBER OR TRACKS/CYLINDER
AVTTOTNR DS    F .                      NUMBER OF RECORDS IN ENTIRE
*                                         DATA SET
AVTVOLRR DS    F .                      PRODUCT OF NUMBER OF
*                                         EXTENTS TIMES NUMBER OF
*                                         RECORDS/TRACK
*                       NONREUSABLE DISK DEFINITION
AVTADEBN DS    A .                      ADDRESS OF DEB
AVTNOVON DS    F .                      NUMBER OF EXTENTS
AVTRCTRN DS    F .                      NUMBER OF RECORDS/TRACK
AVTTRCYN DS    F .                      NUMBER OF TRACKS/CYLINDER
AVTTOTNN DS    F .                      NUMBER OF RECORDS IN ENTIRE
*                                         DATA SET
AVTVOLRN DS    F .                      PRODUCT OF NUMBER OF
*                                         EXTENTS TIMES NUMBER OF
*                                         RECORDS/TRACK
AVTHRESN DS    F .                      THE ABSOLUTE RECORD NUMBER
*                                         WHICH IS THE THRESHOLD TO
*                                         CAUSE CLOSEDOWN DUE TO
*                                         THE FILLING OF THE
*                                         NON-REUSABLE DISK QUEUE
AVTNADDR DS    F .                      NON-REUSABLE DISK QUEUE
AVTRADDR DS    F .                      REUSABLE DISK QUEUE
AVTHRESE DS    0F .                     NON-REUSABLE THRESHOLD
*                                         CLOSEDOWN ELEMENT, 3 WORDS
         DS    F .                      ADDR OF OPERATOR CONTROL QCB
         DS    X .                      PRIORITY (VALUE IS PRIOPCTL
*                                         PLUS 4)
         DS    AL3 .                    LINK FIELD
         DS    X .                      X'11' - FLUSH CLOSE REQUESTED
         DS    X .                      X'0C' - LENGTH OF ELEMENT
         DS    X .                      UNUSED - (REL.LINE NO.)
AVTHRESS DS    X .                      COMPLETION CODE, USED AS STATUS
*                                         X'FF' - UNUSED ELEMENT
*                                         X'F0' - ELE HAS BEEN POSTED
*                                         X'00' OR X'04' CLOSED DOWN
AVTCPBNO DS    H .                      CPB=INTEGER
*
*                       TCAM SYSTEM EQUATES
*
AVTCVTPT EQU   240 .                    OFFSET INTO CVT OF ADDRESS
*                                         OF TCX
AVTUMALN EQU   12 .                     LENGTH OF CCW-TIC (UNIT
*                                         MANAGEMENT AREA)
AVTDATLN EQU   6 .                      NO. OF BYTES IN DATA FIELD
*                                         OF MESSAGE Q RECORD
AVTMINKY EQU   36                       MINIMUM KEYLENGTH      @Z30X8XE
AVTMIN05 EQU   44                       MIN KEY FOR 3705 ENVIR @YM06968
AVTHDRSZ EQU   30 .                     SIZE OF HEADER PREFIX
AVTTXTSZ EQU   23 .                     SIZE OF TEXT PREFIX
AVTTSOSZ EQU   9 .                      SIZE OF TSO PREFIX
AVTSVSIZ EQU   72 .                     NO. BYTES IN A SAVEAREA
AVTECD4  EQU   4 .                      RETURN CODE OF 4
AVTECD8  EQU   8 .                      RETURN CODE OF 8
AVTECD12 EQU   12 .                     RETURN CODE OF 12
AVTECD16 EQU   16 .                     RETURN CODE OF 16
AVTECD20 EQU   20 .                     RETURN CODE OF 20
AVTERACE EQU   24 .                     SIZE OF TRACE TABLE ENTRY
AVTE80   EQU   X'80' .                  SIGN BIT MASK
AVTMODBT EQU   X'80' .                  2 TO THE 23RD BIT MASK
AVTEZERO EQU   X'00' .                  EQUATED ZERO
AVTEBLNK EQU   C' ' .                   EQUATED BLANK CHARACTER
AVTEPER  EQU   C'.' .                   EQUATED PERIOD
AVTEFF   EQU   X'FF' .                  ALL ONES
* BIT DEFINITIONS OF THE HIGH ORDER BYTE OF TCAM WORD IN CVT
AVTCVT80 EQU   X'80' .                  TCAM OPEN COMPLETED
AVTCVT40 EQU   X'40' .                  2260 LOCAL SUPPORT
AVTCVT08 EQU   X'08' .                  MCP IS FETCH PROTECTED
*                       OFFSETS FOR MP65 SUPPORT
AVTCVTMP EQU   X'C0' .                  OFFSET INTO CVT OF ADDRESS
*                                         OF MULTIPROCESSOR CVT
AVTMPTRR EQU   X'0C' .                  OFFSET INTO MP CVT OF
*                                         TASK REMOVAL ROUTINE
AVTCPUST EQU   X'2AF' .                 ABSOLUTE LOCATION LOW CORE
*                                         OF CPUSTAT BYTE
         SPACE 2
         AIF   ('&SAVT' NE 'YES').SAVTEND                        S22024
IEDNSVTD DSECT                                                   S22024
SAVTDIAF DS    0XL1 .                   FLAGS                    Y05331
SAVTVIRT EQU   X'80' .                  VM ENVIRONMENT INDICATOR Y05331
SAVTPRMT EQU   X'40' .                 VM PROMPT INDICATOR       Y05331
SAVTRESV EQU   X'3F'  .                 ALL OTHER BITS RESERVED  Y05331
SAVTDIAG DS    A .                      VIRTUAL DIAGNOSE ROUTINE Y05331
SAVTVM   EQU   *                        END OF VM ENVIRON INPUT  X03039
SAVTPOOL DS    A .                      PLCB POOL ADDRESS        X03039
SAVTPLCB DS    A .                      NEXT FREE PLCB           X03039
SAVTPUSE DS    H .                      PLCB IN-USE COUNT      @Y17XAXU
SAVTPH20 DS    H .                      PLCB HI-WATER COUNT    @Y17XAXU
SAVTPREQ DS    V(IEDIAP01) .            ADDRESS OF PLCB        @Y17XAXU
*                                       ALLOCATION RTN         @Y17XAXU
SAVTPRTQ DS    A .                      ANCHOR FOR PLCB        @Y17XAXU
*                                       REQUEST WAIT CHAIN     @Y17XAXU
SAVTPWT  DS    H .                      PLCB WAIT COUNT        @Y17XAXU
SAVTWH20 DS    H .                      PLCB HI-WATER WAIT CT  @Y17XAXU
         DS    V(IEDIAP7S) .            ADDRESS OF STCB FOR    @Y17XAXU
*                                       PLCB DEALLOCATION      @Y17XAXU
SAVTPRTN DS    V(IEDIAP07) .            BRANCH ENTRY ADDRESS   @Y17XAXU
*                                       OF PLCB DEALLOCATION   @Y17XAXU
*                                       RTN                    @Y17XAXU
SAVTSIB  DS    A .                      NEXT FREE SIB ADDRESS  @Y17XAXU
SAVTSUSE DS    H .                      SIB IN-USE COUNT       @Y17XAXU
SAVTFAIL DS    H .                      COUNT OF SIB REQUESTS  @Y17XAXU
*                                       THAT FAILED            @Y17XAXU
SAVTSREQ DS    V(IEDIAP02) .            ADDRESS OF SIB ALLOCA- @Y17XAXU
*                                       TION RTN               @Y17XAXU
SAVTSRTN DS    V(IEDIAP08) .            ADDRESS OF SIB DEALLO- @Y17XAXU
*                                       CATION RTN             @Y17XAXU
SAVTFLDH DS    A .                      3705 FIRST LEVEL DATA  @Y17XAXU
*                                       HANDLER                @Y17XAXU
SAVTCNIR DS    V(IEDNKA) .              CONTROL NIR GENR QCB   @Y17XAXU
*                                       ADDRESS                @Y17XAXU
SAVTDNIR DS    V(IEDNGD) .              DATA NIR GENR QCB ADDR @Y17XAXU
SAVTRNTA DS    A .                      3705 TRACE RTN ADDRESS @Y17XAXU
SAVTPIUT DS    A .                      ADDRESS OF PIU TRACE   @Y17XAXU
*                                       TABLE                  @Y17XAXU
SAVTCLUP DS    A .                      3705 CLEANUP RTN       @Y17XAXU
*                                       ADDRESS                @Y17XAXU
SAVTNAT  DS    A .                      NAT ADDRESS            @Y17XAXU
SAVTSAT  DS    A .                      SAT ADDRESS            @Y17XAXU
         DS    F .                      RESERVED               @Y17XAXF
SAVTLUSQ DS    0F .                     LUS QCB                @Y17XAXU
SAVTLUSB DS    A .                      BUFFER WAIT CHAIN      @Y17XAXU
SAVTLUSP DS    A .                      PLCB WAIT CHAIN        @Y17XAXU
         DS    V(IEDLUS) .              STCB POINTER           @Y17XAXU
SAVTLUSR DS    A .                      OP-SERV-REQ CHAIN      @Y17XAXU
SAVTSLCB DS    A .                      SSCP LCB               @Y17XAXU
SAVTSCPQ DS    A .                      SSCP OUTBOUND QCB      @Y17XAXU
SAVTSSSR DS    A .                      SERIALIZER CHAIN       @Y17XAXU
         DS    V(IEDSCPSS) .            STCB POINTER           @Y17XAXU
SAVTXFMO DS    V(IEDXFMO) .             OUTBOUND XFORMER QCB   @YM03681
*                                       ADDRESS                @YM03681
         DS    2F .                     RESERVED               @YM03681
SAVTXFMI DS    V(IEDXFMI) .             INBOUND XFORMER        @YM03681
*                                       ENTRY ADDRESS          @YM03681
         DS    2F .                     RESERVED               @YM03681
SAVTIPCQ DS    V(IEDPCIN) .             PC INBOUND QCB ADDRESS @YM03681
         DS    3F .                     RESERVED               @Y17XAXF
SAVTMVBF DS    V(IEDMVBFR) .            MOVE BFR DATA RTN      @Y17XAXU
SAVTXTRQ DS    V(IEDXTREQ) .            CROSS TASK REQ HDLR    @Y17XAXU
SAVTSCLU DS    V(IEDSCLU) .             SC ENTRY ADDR          @Y17XAXU
SAVTSSRQ DS    V(IEDSCPRQ) .            SSCP REQ HDLR ADDR     @Y17XAXU
SAVTSSRP DS    V(IEDSCPRP) .            SSCP RESP HDLR ADDR    @Y17XAXU
SAVTCSCI DS    V(IEDCSCIN) .            FID1 COM SC INBOUND    @Y17XAXU
SAVTSAI  DS    V(IEDSAI) .              FID0 SA INBOUND        @Y17XAXU
SAVTSAC  DS    V(IEDSAC) .              COMMAND PROCESSOR      @Y17XAXU
SAVTSARI DS    V(IEDSARI) .             COMMAND PROCESSOR      @Y17XAXU
SAVTSAO  DS    V(IEDSAO) .              COMMAND ID PROC        @Y17XAXU
SAVTDFCO DS    V(IEDDFOUT) .            DFC OUTBOUNT           @Y17XAXU
SAVTRQIN DS    V(IEDRQIN) .             INBOUND REQ PROCESSOR  @Y17XAXU
SAVTQRS  DS    V(IEDQRS) .              RESPONSE GENERATOR     @Y17XAXU
*                                       ADDRESS                @Y17XAXU
SAVTSSMH DS    A . IEDSCPMH             SSCP MH ENTRY ADDRESS  @Y17XAXU
SAVTMHTB DS    A . IEDMHTB              MH TABLE ADDRESS       @Y17XAXU
SAVTNATL DS    H .                      INDEX OF LAST NAT ENTR @Y17XAXU
SAVTNADL DS    H .                      CONSTANT TO CALCULATE NAT
*                                       ENTRY FROM MH INDEX    @Y17XAXU
SAVTSPLN DS    A .                      3705 STOPLINE RTN      @Y17XAXU
*                                       ADDRESS                @Y17XAXU
SAVTMAND DS    A .                      ADDRESS OF MANUAL DIAL @Y17XAXU
*                                       RTN                    @Y17XAXU
SAVTRQCH DS    A .                      APPL REQUEST QUEUE     @Y17XAXU
SAVTRQTG DS    H .                      APPL REQUEST TAG       @Y17XAXU
SAVTTCPU DS    0H .                     TCAM PU TTCIN          @Y17XAXU
SAVTSCPT DS    H .                      SSCP TTCIN             @Y17XAXU
SAVTBSM  DS    A .                      BSM ADDRESS            @Y17XAXU
SAVTSIBC DS    H .                      SIB COUNT              @Y17XAXU
SAVTSUBA DS    XL1 .                    MAX SUBAREA VALUE      @Y17XAXU
SAVTSUBV DS    XL1 .                    HOST SUBAREA VALUE     @Y17XAXU
SAVTNAX  DS    V(IEDIAP03) .            NETWORK ADDR TO TTCIN  @Y17XAXU
*                                       CONVERSION RTN ADDR    @Y17XAXU
SAVTTNTX DS    V(IEDIAP04) .            TTCIN TO NETWORK ADDR  @Y17XAXU
*                                       CONVERSION RTN ADDR    @Y17XAXU
SAVTRNMP DS    V(IEDIAP05) .            INDEX TO TTE/MH ENTRY  @Y17XAXU
*                                       CONVERSION RTN ADDR    @Y17XAXU
SAVTLCBS DS    V(IEDIAP06) .            SA LCB FETCH ROUTINE   @Y17XAXU
SAVTSH20 DS    H .                      SIB POOL UTIL. HI-WATER
*                                       COUNT                  @Y17XAXU
SAVTNAT1 DS    H .                      TNTINDEX OF FIRST      @Y17XAXU
*                                       NAT ENTRY              @Y17XAXU
SAVTMHDX DS    H .                      TTCIN OF FIRST MH      @Y17XAXU
*                                       ENTRY                  @Y17XAXU
SAVTZELM DS    0H .                     NETWORK ADDRESS        @Y17XAXU
*                                       SUBAREA MASK           @Y17XAXU
SAVTSUBM DS    XL1 .                    SUBAREA MASK           @Y17XAXU
         DS    XL1 .                    BYTE OF ZERO           @Y17XAXU
SAVTSUBL DS    XL1 ..                   SUBAREA VALUE  LENGTH  @Y17XAXU
         DS    XL1 ..                   RESERVED               @YM02919
SAVTPLSZ DS    H .                      PLCB,SAT,SIB,RVT, AND  @YM02919
*                                       NAT POOL SIZE          @YM02919
SAVTDVAS DS    V(IEDDVAS) .             DEV ASSOC. ROUTINE     @Y17XAXU
SAVTNID  DS    A . IEDNID               BSC ID VER ROUTINE     @Y17XAXU
SAVTRDRV DS    0F .                     A/D REDRIVE ELEMENT    @YM03697
SAVTRDKY DS    XL1 .                    KEY FIELD              @YM03697
SAVTRDQB DS    AL3 . AVTOPCOB           QCB ADDRESS FIELD      @YM03697
SAVTRDPY DS    XL1 .                    PRIORITY FIELD         @YM03697
         DS    XL7 .                    RESERVED               @YM03697
SAVTRDFG DS    XL1 .                    FLAG FIELD             @YM03697
         DS    CL3                      RESERVED               @Y17XAXF
SAVTCKQB DS    0CL12                    3705 CHECKPOINT QCB    @Y17XAXF
SAVTCKTB DS    0F                        QUEUE OF ELEMENTS FOR CKPT
*                                                              @Y17XAXF
SAVTCKVT DS    XL1 .                      VTO FOR ATTACHED TASK
*                                                              @Y17XAXF
SAVTCKCH DS    AL3 .                      CHAIN OF ELEMENTS    @Y17XAXF
SAVTCKEC DS    0F .                      EVENT CONTROL BLOCK   @Y17XAXF
SAVTCKCC DS    XL1 .                      COMPLETION CODE BYTE @Y17XAXF
SAVTCKWA EQU   X'80' .                     WAITING FOR COMPLETION OF
*                                          THE EVENT           @Y17XAXF
SAVTCKPO EQU   X'40' .                     EVENT HAS COMPLETED @Y17XAXF
*        EQU   X'20'-X'01' .               RESERVED            @Y17XAXF
         DS    AL3 .                      RESERVED             @Y17XAXF
         DS    A                         STCB ADDRESS          @Y17XAXF
SAVTBITN DS    A IEDBITN                 BIND IMAGE TABLE ADDR @Y17XAXF
SAVTLLCB DS    A                        POINTER TO LAST PLCB   @OY19488
SAVTVMSZ EQU   SAVTVM-IEDNSVTD          LENGTH OF VM ONLY      @Y17XAXU
SAVTSIZE EQU   *-IEDNSVTD               SAVT LENGTH            @Y17XAXU
         SPACE 2                                                 S22024
.SAVTEND ANOP                                                    S22024
         MEND  , */
*%BSLAVT  :  ;
*DECLARE
*  1 IEDQAVTD BDY(DWORD) BASED(IEDQAPTR),
*%IF C='2' %THEN
*   %GOTO D2;
*%IF C='3' %THEN
*   %GOTO D3;
*%IF C='4' %THEN
*   %GOTO D4;
*   2 AVTSAVE1    (18) PTR(31),          /* MESSAGE CNTRL PROG SAVE  */
*%D2     :  ;
*   2 AVTSAVE2    (18) PTR(31),
*%D3     :  ;
*   2 AVTSAVE3    (18) PTR(31),
*%D4     :  ;
*   2 AVTSAVE4    (18) PTR(31),
*   2 AVTSAVEX    CHAR(40),              /* DISABLED SAVEAREA        */
*    3 *           CHAR(32),
*    3 AVTDLQ      CHAR(8),              /* DEAD LETTER QUEUE        */
*   2 AVTCSTCS    PTR(31),               /* IEDQSTCS ADDR OF FIRST
*                                           ENTRY  CHARACTERISTICS
*                                           TABLE                    */
*   2 AVTDPARM    FIXED(31),             /* DISABLED PARAMETER LIST
*                                           USED WITH DOUBX          */
*   2 AVTDOUBX    CHAR(8) BDY(DWORD),    /* DISABLED DOUBLEWORD
*                                           SCRATCH                  */
*   2 AVTDOUBL    CHAR(8) BDY(DWORD),    /* ENABLED SCRATCH AREA     */
*   2 AVTCTLCH    CHAR(8) BDY(DWORD),    /* OPERATOR CONTRL CHARS    */
*   2 AVTPASWD    CHAR(8) BDY(DWORD),    /* PASSWORD                 */
*   2 AVTTCB      PTR(31),               /* ADDRESS OF MESSAGE
*                                           CONTROL  PROGRAM'S TCB.
*                                           SET BY OPEN              */
*   2 AVTRACE     PTR(31),               /* TRACE TABLE ADDRESS      */
*
*/* DISPATCHER'S READY QUEUES                                        */
*
*   2 AVTREADY    PTR(31),               /* AVTDELEM - ADDRESS OF
*                                           FIRST OF CHAIN  OF
*                                           ELEMENTS IN PRIORITY
*                                           ORDER                    */
*   2 AVTREADD    PTR(31),              /* DISABLED FIFO READY QUEUE
*                                                            @OY19405*/
*     3 AVTBUFTR  PTR(31),              /* ADD. OF BUFFER TRACE TABLE
*                                                            @OY19405*/
*   2 AVTBUFSW    BIT(8),               /* NO. ENT. ON INTRO @OY19405*/
*     3 *         BIT(6),               /* NOT USED          @OY19405*/
*     3 AVTUNCON  BIT(1),               /* TRACE WITHOUT I/O @OY19405*/
*     3 AVTFULLT  BIT(1),               /* TRACE ENTIRE BUFFE@OY19405*/
*   2 *           CHAR(1),              /* NOT USED          @OY19405*/
*   2 AVTBUENT    CHAR(2),              /* NO. ENT. ON INTRO @OY19405*/
*   2 *           PTR(31),               /* CHECKPOINT WORKAREA -
*                                           GETMAIN                  */
*    3 AVTCKFLG    BIT(8),               /* CKECKPOINT ACTIVE FLAGS
*                                                            @Y17XAXF*/
*     4 AVTCKTAC    BIT(1),              /*  TCAM CHECKPOINT IS ACTIVE
*                                                            @Y17XAXF*/
*     4 AVTCKNAC    BIT(1),              /*  CKECKPOINT FOR A  3705
*                                            IS ACTIVE       @Y17XAXF*/
*     4 AVTCKENV    BIT(1),              /*  FORCE ENVIRONMENT CHKPT
*                                                            @Y17XAXF*/
*     4 AVTCKREQ    BIT(1),              /*  THERE IS AN ELEMENT ON THE
*                                            OPERATOR CONTROL CHPT QUE
*                                            THAT WILL REQUEST AN ENVIR
*                                            CHECKPOINT      @Y17XAXF*/
*     4 AVTCKHLT    BIT(1),              /*  A REQUEST TO CKPT A HALT
*                                            TCAM COMMAND HAS BEEN
*                                            PROCESSED       @Y17XAXF*/
*     4 *           BIT(3),              /*  RESERVED        @Y17XAXF*/
*    3 AVTCKAVT    PTR(24),              /* ADDRESS OF CHECKPOINT AVT
*                                                            @Y17XAXF*/
*   2 AVTOCGET    PTR(31),               /* OPERATOR CONTROL
*                                           WORKAREA                 */
*   2 AVTEXA2S    CHAR(6),               /* EXECUTED INSTRUCTIONS TO */
*   2 AVTEXS2A    CHAR(6),               /* SAVE USER'S REGISTERS    */
*   2 AVTPARM     PTR(31),               /* ADDRESS OF PARAMETERS    */
*   2 AVTBASE     PTR(31),               /* IEDQAVT - ADDRESS OF AVT */
*    3 AVTPKF      CHAR(1),              /* PROTECTION KEY FROM TCB
*                                           OF MCP                   */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 AVTFTCHF BIT(1),                 /* FETCH PROTECT ACTIVE
*                                           SWITCH                   */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*     4 *        BIT(1),                 /* RESERVED                 */
*   2 AVTPARM3    PTR(31),               /* ADDITIONAL OPTIONAL PARM */
*   2 AVTDISTR    PTR(31),               /* ADDR OF DISPATCHER TRACE */
*   2 AVTRNMPT    PTR(31),               /* IEDQTNT - ADDRESS OF
*                                           TERMNAME TABLE           */
*   2 AVTRDYA     PTR(31),               /* IEDQRDYA - USER EXIT
*                                           ADDRESS IN READY         */
*   2 AVTBSCAN    PTR(31),               /* LINE END BSC MSG SCAN    */
*   2 AVTRARTN    PTR(31),               /* AVTDUMBR ADDR OF RTN TO
*                                           UPDATE LINE TRACE TABLE.
*                                           IF TRACE, OPEN LOADS THIS
*                                           MODULE                   */
*   2 AVTSBTA     PTR(31),              /* @ IEDQSBT ROUTINE @YM07020*/
*     /* AVTMVBFR IS NON-ZERO IF NON-EP MODE  OR
*        IF EP MODE, AND TOTE IS IN SYSTEM                   @Y17XAXF*/
*   2 AVTMVBFR    PTR(31),               /* @ IEDMVBFR ROUTN @Y17XAXF*/
*   2 AVTSPLPT    PTR(31),               /* START PARAMETER LIST
*                                           POINTER, SET BY INTRO    */
*   2 AVTCIB      PTR(8),                /* CIB=INTEGER              */
*   2 AVTNCKPR    PTR(8),                /* CKREQS=INTEGER           */
*   2 AVTNOLBF    FIXED(15),             /* LNUNITS=INTEGER          */
*   2 AVTAS       PTR(31),               /* RELEASE                  */
*
*/* ADDRESSES OF TCBS OF ATTACHED TASKS                              */
*
*   2 AVTCKTCB    PTR(31),               /* CHECKPOINT               */
*   2 AVTOCTCB    PTR(31),               /* OPERATOR CONTROL         */
*   2 AVTOLTCB    PTR(31),               /* ON LINE TEST             */
*   2 AVTCWTCB    PTR(31),               /* COMMON WRITE FE TASK     */
*
*/* EVENT CONTROL BLOCKS                                             */
*
*   2 AVTCWECA    FIXED(31),             /* COMMON WRITE FE TASK ECB */
*   2 AVTCKECA    FIXED(31),             /* CHECKPOINT               */
*   2 AVTOLECA    FIXED(31),             /* ON LINE TEST             */
*   2 AVTOPECA    FIXED(31),             /* OPERATOR CONTROL         */
*   2 AVTOSECB    FIXED(31),             /* EVENT CONTROL BLOCK
*                                           USED BY  DISPATCHER TO
*                                           CAUSE TCAM TASK TO BE
*                                           IN WAIT STATE            */
*     3 AVTECB1 BIT(8),                  /*                  @G36XRXG*/
*       4 * BIT(1),                      /*                  @G36XRXG*/
*       4 AVTCOMP BIT(1),                /* ECB POSTED COMPL @G36XRXG*/
*       4 * BIT(6),                      /*                  @G36XRXG*/
*   2 AVTPCBPT    PTR(31),               /* FIRST PROCESS CONTROL
*                                           BLOCK                    */
*   2 AVTOPTPT    PTR(31),               /* ADDRESS OF OPTION TABLE  */
*   2 AVTKA02     PTR(31),               /* IEDQKA02 I/O GENERATOR
*                                           IN ACTIVATE              */
*   2 *           FIXED(31),             /* RESERVED           S21903*/
*   2 AVTCRSRF    FIXED(31),             /* CROSSRF=INTEGER          */
*   2 AVTCOMPT    PTR(31),               /* ADDR OF COMMUNICATIONS
*                                           PARM                     */
*   2 AVTUI       PTR(31),               /* IEDQUI USER INTERFACE    */
*   2 AVTE8       PTR(31),               /* SEARCH RTN APP PRG S22025*/
*   2 AVTHG02     PTR(31),               /* IEDQHG02 REMOVE ELE FROM
*                                           TIME DELAY Q             */
*    3 AVTOLTST    PTR(8),               /* OLTEST=INTEGER           */
*   2 AVTAL       PTR(31),               /* IEDQAL ADDRESS
*                                           COMPUTATION        S22025*/
*   2 AVTGD       PTR(31),               /* IEDQGD - BUFFER
*                                           ASSOCIATION              */
*   2 AVTA3       PTR(31),               /* TRANSPARENCY CCW BUILDER */
*   2 AVTAX       PTR(31),               /* IEDQAX - SCAN      S22025*/
*   2 AVTEA       PTR(31),               /* DISPATCHER               */
*   2 AVTDISP     PTR(31),
*
*/* SUBTASKS ACTIVATED BY THE DISPATCHER                             */
*
*    3 AVTHA       PTR(31),              /* RECEIVE SCHEDULER        */
*   2 AVTHD       PTR(31),               /* SEND SCHEDULER           */
*    3 AVTSCOPT    CHAR(1),              /*                    S22026*/
*     4 *           BIT(2),              /* RESERVED         @ZA07083*/
*     4 AVTAPDMP    BIT(1),              /* APPL DUMP REQUEST
*                                                            @ZA07083*/
*     4 AVTCMBUF    BIT(1),              /* COMMON BUFFER
*                                           TRANSMISSION       S22027*/
*     4 AVTCONC     BIT(1),              /* CONCENTRATOR MIXED S22026*/
*     4 AVTCONCO    BIT(1),              /* CONCENTRATOR ONLY  S22026*/
*     4 AVTN2741    BIT(1),              /* NO 2741 & NO TSO   S22026*/
*     4 AVTNDIAL    BIT(1),              /* NO DIAL            S22026*/
*   2 AVTEW       PTR(31),               /* GET SCHEDULER            */
*   2 AVTEC       PTR(31),               /* PUT SCHEDULER            */
*   2 AVTEZ       PTR(31),               /* GET FIFO                 */
*   2 AVTBZ       PTR(31),               /* LOG SCHEDULER            */
*   2 AVTR1       PTR(31),               /* DIAL SCHEDULER           */
*   2 AVTHB       PTR(31),               /* BUFFERED SCHEDULER       */
*   2 AVTE7       PTR(31),               /* RETRIEVE SCHEDULER       */
*   2 AVTQ1       PTR(31),               /* LOCAL SCHEDULER          */
*   2 AVTCSCH     PTR(31),               /* CONC SEND SCHED    S22026*/
*   2 AVTSEND     PTR(31),               /* 3705 RESOURCE
*                                           SEND SCHEDULER   @Y17XAXU*/
*   2 AVTRCV      PTR(31),               /* 3705 RESOURCE
*                                           RECV SCHEDULER   @Y17XAXU*/
*   2 AVTCMBSS    PTR(31),               /* COMMBUF SCHEDULER  S22027*/
*   2 *           PTR(31),               /* RESERVED           S22024*/
*   2 AVTSAVTP    PTR(31),               /* SECONDARY AVT ADDR S22024*/
*    3 AVTSAVTF    BIT(8),              /* SAVT FLAGS          X03039*/
*     4 AVTVTMCP BIT(1),                  /* 3705 ENVIR      @Y17XAXU*/
*     4 AVTONSNA BIT(1),                  /* ONLY SNA ENVIR  @Y17XAXU*/
*     4 AVTSNA   BIT(1),                  /* SNA ENVIR       @Y17XAXU*/
*     4 *          BIT(5),              /* RESERVED          @Y17XAXU*/
*    3 *           CHAR(3),             /* FILLER              X03039*/
*   2 AVTPLCBN    FIXED(15),             /* NUMBER OF PLCB'S   S22024*/
*   2 AVTABEND    CHAR(6),               /* ABEND 045, SUBCODE R15   */
*   2 AVTDMECB    FIXED(31),             /* DUMMY LINE I/O ECB       */
*   2 AVTA3TL     PTR(31),               /* IEDQA3 - TRANSLATE LIST  */
*   2 AVTTONE     PTR(31),               /* ADDRESS OF WORLD TRADE
*                                           TONE CHARS               */
*   2 AVTNX       PTR(31),               /* OPERATOR AWARENESS MESSAGE
*                                           ROUTER                   */
*   2 AVTIOT      PTR(31),               /* IGG019Q0 - I/O TRACE
*                                           TABLE HANDLER            */
*   2 AVTHI       PTR(31),               /* IEDQHI - SYSTEM DELAY QCB
*                                           ADDR                     */
*   2 AVTHK       PTR(31),               /* IEDQHK STOPLINE QCB ADDR */
*   2 AVTCKPEL    CHAR(16) BDY(WORD),   /* TIME DELQY REMOVAL ELEMENT
*                                          FOR CHECKPOINT    @Y17XAXF*/
*    3 AVTCKRMV   PTR(31),              /*  1ST WORD OF REMOVAL ELEMENT
*                                                            @Y17XAXF*/
*     4 AVTCKRKY  BIT(8),               /*   KEY FOR REMOVAL ELEMENT
*                                            TO CHECKPOINT   @Y17XAXF*/
*     4 AVTCKRMQ  PTR(24),              /*   ADDR OF TIME DELAY QCB
*                                                            @Y17XAXF*/
*    3 AVTCKRPR   BIT(8),               /*  PRIORITY         @Y17XAXF*/
*    3 AVTCKRLK   PTR(24),              /*  LINK             @Y17XAXF*/
*    3 *          CHAR(8),              /*  LAST 2 WORDS OF ELEMENT
*                                                            @Y17XAXF*/
*   2 AVTCKELE    PTR(31),               /* TIME DELAY OR REUS
*                                           POSTS ELEMENT TO START
*                                           CHECKPOINT               */
*   2 *           PTR(31),
*   2 AVTSCBSZ    PTR(8),                /* SCB SIZE INCLUDING
*                                           SAVEAREA FOR USER'S REGS */
*   2 AVTCKQAD    PTR(24),               /* AVTCKPTB CKPT QCB ADDR   */
*   2 AVTCKELF    CHAR(1),               /* FLAG BITS                */
*    3 AVTNQBCK BIT(1),                  /* NO QBACK SCAN NEEDED
*                                                            @OS77945*/
*    3 AVTCMCPN BIT(1),                  /* CHECKPOINT REQUESTED BY
*                                           MCPCLOSE                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 AVTCINCN BIT(1),                  /* CHECKPOINT REQUESTED BY
*                                           INCIDENT OVERFLOW        */
*    3 AVTCCLCN BIT(1),                  /* CLOSEDOWN COMPLETION BIT */
*    3 AVTCPIPN BIT(1),                  /* CHECKPOINT IN PROGRESS   */
*    3 AVTCRTLN BIT(1),                  /* CHECKPOINT REQUESTED     */
*    3 AVTWARMN BIT(1),                  /* WARM RESTART             */
*   2 AVTCPRCD    PTR(8),                /* CPRCDS=INTEGER           */
*   2 AVTCKELV    FIXED(15),             /* CPINTVL=TIME INTERVAL    */
*   2 AVTCKTIM    FIXED(15),             /* TIME OF DAY OF INTERRUPT */
*   2 *           PTR(8),                /* INDEX TO QCB ADDRESS     */
*   2 AVTOPERL    CHAR(1),               /* OPEN ERROR LOCATOR       */
*   2 AVTOPXCL    CHAR(2),               /* OPEN ERROR MODULE ID     */
*   2 AVTOPERT    PTR(8),                /* TYPE OF OPEN ERROR       */
*   2 AVTCKBYT    CHAR(1),               /* CKPT TIME DELAY STATUS   */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 AVTCKONQ BIT(1),                  /* ELEMENT ON TIME QUEUE    */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 AVTHG01     PTR(31),               /* IEDQHG01 - TIME DELAY
*                                           SUBROUTINE               */
*    3 AVTOPETR    CHAR(1),              /* OPEN TRANSLATE BYTE      */
*   2 AVTCKLNK    PTR(31),               /* LINK FIELD ON TIME QUEUE */
*    3 AVTBSX      PTR(8),               /* BINARY SEARCH ADDR INDEX */
*   2 AVTDELEM    PTR(31),               /* AVTREADY-8 DUMMY LAST
*                                           ELEMENT                  */
*   2 AVTDELAD    PTR(31),               /* AVTDELEM - ADDR OF DUMMY
*                                           LAST ELEMENT             */
*   2 AVTCRELE    CHAR(8) BDY(WORD),    /* OPERATOR CONTROL CKPT
*                                          REQUEST ELEMENT   @Y17XAXF*/
*    3 AVTCCELE   PTR(31),
*     4 AVTCCKEY  BIT(8),               /*  OP CONTROL KEY FOR CKPT
*                                                            @Y17XAXF*/
*     4 AVTCCQCB  PTR(24),              /*  ADDR OF CKPT QCB @Y17XAXF*/
*    3 AVTCCPRI   BIT(8),               /*  PRIORITY         @Y17XAXF*/
*    3 AVTCCLNK   PTR(24),              /*  LINK             @Y17XAXF*/
*   2 AVTCLRHI    FIXED(31),            /* MASK FOR CLEARING   X03039*/
*                                       /* TWO HIGH ORDER BYTESX03039*/
*                                       /* OF A REGISTER       X03039*/
*    3 *          CHAR(2),              /* FILLER              X03039*/
*    3 AVTHFF     CHAR(2),              /* HALF WORD OF 'FFFF' X03039*/
*   2 AVTADBUF    PTR(31),               /* BUFFER ADDRESS SET BY
*                                           MH CONTROL               */
*     3 AVTABEPL  FIXED(31),             /* ABEND PARM LIST  @YM07738*/
*   2 AVT2260L    PTR(31),               /* 2260 LOCAL APPENDAGE     */
*   2 AVTSYSER    CHAR(1),               /* SYSTEM ERROR FLAG BYTE   */
*    3 AVTCMINN BIT(1),                  /* NUMBER CORE QUEUE UNITS
*                                           LESS THAN SPECIFIED BY
*                                           MSMIN=PERCENT            */
*    3 AVTCMAXN BIT(1),                  /* NUMBER CORE QUEUE UNITS
*                                           MORE THAN SPECIFIED BY
*                                           MSMAX=PERCENT            */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 AVTMSGS     PTR(24)  BDY(BYTE),    /* IEDQMSGS  LIST OF
*                                           OPTIONAL VCONS           */
*
*/* POINTERS TO QCBS                                                 */
*
*   2 AVTCBQCB    PTR(31),               /* COMMBUF MASTER QCB S22027*/
*   2 AVTSUPPT    PTR(31),               /* STARTUP MESSAGE          */
*   2 AVTTSOPT    PTR(31),               /* TIME SHARING INPUT       */
*   2 AVTOCQPT    PTR(31),               /* IEDQEU - OPEN/CLOSE
*                                           APPLICATION PROGRAM      */
*
*/* NON-OPTIONAL QCBS                                                */
*
*   2 AVTDELYB    PTR(31),               /* TIME DELAY QCB           */
*   2 *           CHAR(12),
*   2 AVTREFTM    FIXED(15),             /* REFERENCE TIME - CURRENT
*                                           TIME OF DAY PLUS OR
*                                           MINUS SIX HOURS          */
*   2 AVTINOUT    FIXED(15),             /* DUMMY INEND/OUTEND
*                                           PARAMETER LIST           */
*   2 AVTIMQPS    PTR(31),               /* PARM FOR SVC 102 - POST
*                                           TIME QCB TO ITSELF AT
*                                           TIMER INTERRUPT          */
*   2 *           PTR(31),
*   2 AVTTIMQ     PTR(31),               /* TIME DELAY QUEUE         */
*   2 AVTBFREB    PTR(31),               /* AVAILABLE BUFFER QUEUE   */
*   2 AVTBFRFG    BIT(8),               /* BUFFER POOL FLAG  @OY19124*/
*     3 AVTBFRTN  BIT(1),               /* RETURN BOTTOM     @OY19124*/
*   2 AVTSELCH    PTR(24),              /* BUFFER POOL BOTTOM@OY19124*/
*   2 *           CHAR(4),                                 /*@OY19124*/
*   2 AVTBFRTB    PTR(31),               /* BUFFER RETURN QUEUE      */
*   2 *           CHAR(8),
*   2 AVTCKPQB    CHAR(12) BDY(WORD),    /* CKECKPOINT QCB   @Y17XAXF*/
*    3 AVTCKPTB   PTR(31),               /* QUEUE OF ELEMENTS FOR CKPT
*                                                            @Y17XAXF*/
*     4 AVTCKPVT  BIT(8),                /* VTO FOR ATTACHED TASK
*                                                            @Y17XAXF*/
*     4 AVTCKPCH  PTR(24),              /* CHAIN OF ELEMENTS
*                                                            @Y17XAXF*/
*    3 AVTCKPEC   PTR(31),              /* EVENT CONTROL BLOCK
*                                                            @Y17XAXF*/
*     4 AVTCKPCC  BIT(8),                /* COMPLETION CODE BYTE
*                                                            @Y17XAXF*/
*      5 AVTCKPWA BIT(1),               /* WAITING FOR COMPLETION OF
*                                          THE EVENT         @Y17XAXF*/
*      5 AVTCKPPO BIT(1),               /* EVENT HAS COMPLETED
*                                                            @Y17XAXF*/
*      5 *        BIT(6),               /* RESERVED          @Y17XAXF*/
*     4 *         CHAR(3),              /* RESERVED          @Y17XAXF*/
*    3 AVTCKPTS   CHAR(1),              /* TEST AND SET FOR CKPT
*                                                            @Y17XAXF*/
*    3 *          PTR(24),              /* STCB ADDRESS      @Y17XAXF*/
*   2 AVTOPCQB    CHAR(12) BDY(WORD),   /* OPERATOR CONTROL QCB
*                                                            @Y17XAXF*/
*    3 AVTOPCOB   PTR(31),              /*  QUEUE OF ELEMENTS FOR OPCTL
*                                                            @Y17XAXF*/
*     4 AVTOPCVT  BIT(8),               /*   VTO FOR ATTACHED TASK
*                                                            @Y17XAXF*/
*     4 AVTOPCCH  PTR(24),              /*   CHAIN OF ELEMENTS
*                                                            @Y17XAXF*/
*    3 AVTOPCEC   PTR(31),              /*  EVENT CONTROL BLOCK
*                                                            @Y17XAXF*/
*     4 AVTOPCCC  BIT(8),               /*   COMPLETION CODE BYTE
*                                                            @Y17XAXF*/
*      5 AVTOPCWA BIT(1),               /*    WAITING FOR COMPLETION OF
*                                              THE EVENT     @Y17XAXF*/
*      5 AVTOPCPO BIT(1),               /*    EVENT HAS COMPLETED
*                                                            @Y17XAXF*/
*      5 *        BIT(6),               /*    RESERVED       @Y17XAXF*/
*     4 *         PTR(24),              /*   RESERVED        @Y17XAXF*/
*    3 *          PTR(31),              /* STCB ADDRESS      @Y17XAXF*/
*   2 AVTOLTQB    PTR(31),               /* ON LINE TEST QUEUE       */
*    3 AVTOLTVT   FIXED(8),              /* VTO FOR ATTACHED TASK
*                                                            @Y17XAXF*/
*    3 AVTOLTCH   PTR(24),               /*CHAIN OF ELEMENTS @Y17XAXF*/
*   2 AVTOLTEB    FIXED(31),             /* QCB              @Y17XAXF*/
*   2 *           PTR(31),               /* STCB ADDRESS     @Y17XAXF*/
*   2 AVTACTIB    PTR(31),               /* ACTIVATE QUEUE           */
*   2 *           CHAR(8),
*   2 AVTCLOSB    PTR(31),               /* CLOSEDOWN COMPLETION Q   */
*   2 *           CHAR(8),
*   2 AVTCPRMB    PTR(31),               /* REMOVES ELEMENT FROM TIME
*                                           DELAY                    */
*   2 *           CHAR(8),
*   2 AVTDSIOB    PTR(31),               /* DISK I/O QUEUE           */
*   2 *           CHAR(8),
*   2 AVTCPBCB    PTR(31),               /* CPB CLEANUP QUEUE        */
*   2 *           CHAR(8),
*   2 AVTCOREC    PTR(31),               /* BUFFER POOL FOR CLOSE    */
*   2 AVTCADDR    FIXED(31),             /* CORE QUEUE COUNT         */
*   2 AVTFZERO    FIXED(31),             /* FULLWORD OF ZEROES       */
*
*/* FE COMMON WRITE INTERFACE AREA                                   */
*
*   2 AVTCAREA    PTR(31),               /* IEDQFE PATCH MODULE      */
*   2 AVTCWPM1    PTR(31),               /* FIRST PARAMETER POINTER  */
*   2 AVTCWEC1    FIXED(31),             /* FIRST ECB                */
*   2 AVTCWFL1    CHAR(1),               /* FIRST FLAG BYTE          */
*
*/* AVTCWFL1 BIT DEFINITIONS                                         */
*
*    3 AVTCOMWN BIT(1),                  /* COMWRTE=YES              */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 AVTCWFL2    CHAR(1),               /* ADDITIONAL FLAG BYTES    */
*
*/* AVTCWFL2 BIT DEFINITIONS                                         */
*
*    3 AVTCWACT BIT(1),                  /* COMMON WRITE IS ACTIVE   */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 AVTCWRAP BIT(1),                  /* '0' - WRAPPING OUTPUT
*                                           ALLOWED (REUSE SAME
*                                           VOLUME)
*                                           '1' - WRAP NOT ALLOWED
*                                           '1'
*                                           (INVOKE VOLUME SWITCH)   */
*    3 AVTCWCLD BIT(1),                  /* COMWRITE CLOSEDOWN OR
*                                           TCAM CLOSEDOWN           */
*   2 AVTCWTS1    CHAR(1),              /* COMWRTE ECB1 AVAIL
*                                                            @Y17XAXU*/
*   2 AVTCWTS2    CHAR(1),              /* COMWRTE ECB2 AVAIL
*                                                            @Y17XAXU*/
*   2 AVTCWPM2    PTR(31),               /* SECOND PARAMETER POINTER */
*   2 AVTCWEC2    FIXED(31),             /* SECOND ECB               */
*   2 AVTAFE10    PTR(31),               /* IEDQFE10 ENTRY POINT     */
*   2 AVTAFE20    PTR(31),               /* IEDQFE20 ENTRY POINT     */
*   2 AVTAFE30    PTR(31),               /* IEDQFE30  ENTRY POINT    */
*   2 AVTSUBT     CHAR(1),              /* SUBT OPTIONS FLAG @Y17XAXU*/
*    3 AVTSUBON   BIT(1),               /* SUBTASK TRACE ON  @Y17XAXU*/
*    3 AVTSUBPT   BIT(1),               /* SUBTASK POST TR ON
*                                                            @Y17XAXU*/
*    3 *          BIT(6),               /* UNUSED            @Y17XAXU*/
*   2 AVTIOTR     CHAR(1),              /* IOTR OPTIONS FLAG @Y17XAXU*/
*    3 AVTIOTRE   BIT(1),               /* I/O TRACE ON      @Y17XAXU*/
*    3 AVTIOTRH   BIT(1),               /* I/O POST TRACE ON @Y17XAXU*/
*    3 *          BIT(6),               /* UNUSED            @Y17XAXU*/
*   2 *           CHAR(2),              /* RESERVED          @Y17XAXU*/
*   2 AVTDTRAP    PTR(31),              /* SERVICE AID ENTRY @Y17XAXU*/
*   2 AVTCWINT    CHAR(52),              /* SERVICE COMMUNI- @Y17XAXU*/
*                                        /* CATION AREA       SA64772*/
*   2 AVTCWTOT    CHAR(4),               /* TOTE COMMUNICA-   SA64772*/
*                                        /* TION AREA         SA64772*/
*
*/* GETMAIN PARAMETER LIST - GETMAIN EC,MF=L                         */
*
*   2 AVTGETMN    PTR(31),
*   2 AVTGETMD    PTR(31),
*   2 *           CHAR(1),
*   2 AVTGETMS    PTR(8),
*   2 AVTHA2      FIXED(15),             /* 2 - CONSTANT             */
*   2 AVTHA3      FIXED(15),             /* 3 - CONSTANT             */
*   2 AVTHA4      FIXED(15),             /* 4 - CONSTANT             */
*   2 AVTHA7      FIXED(15),             /* 7 - CONSTANT             */
*   2 AVTHA16     FIXED(15),             /* 16 - CONSTANT            */
*   2 AVTKEYLE    FIXED(15),             /* KEYLEN ON MSG QUEUES     */
*   2 AVTLNCNT    FIXED(15),             /* NUMBER OF LINES OPENED   */
*   2 AVTOPCNT    FIXED(15),             /* NUMBER OF LINES IN USE
*                                           BY OPERATOR CONTROL      */
*   2 AVTOPCON    FIXED(15),             /* TERMNAME TABLE OFFSET TO
*                                           PRIMARY OPERATOR CONTROL
*                                           CONSOLE                  */
*   2 AVTAVFCT    FIXED(15),             /* NUMBER OF BUFFERS IN POOL*/
*   2 AVTSMCNT    FIXED(15),             /* NUMBER OF LINES SERVICED
*                                           BY STARTUP MESSAGE SUBTSK*/
*   2 AVTINTLV    FIXED(15),             /* NUMBER OF SECONDS OF
*                                           SYSTEM DELAY             */
*   2 AVTDLQX     FIXED(15),             /* TERMNAME TABLE OFFSET OF
*                                           DEAD LETTER QUEUE        */
*   2 AVTDUMBR    FIXED(15),             /* BR 11 - DUMMY LINE TRACE
*                                           TABLE UPDATE             */
*   2 AVTBIT1     CHAR(1),               /* FLAG BITS                */
*
*/* AVTBIT1 BIT DEFINITIONS                                          */
*
*    3 AVTAPLKN BIT(1),                  /* PREVENT DISK END
*                                           APPENDAGE FROM ADDING CPB
*                                           TO DISABLED DISK END
*                                           QUEUE FOR CPB CLEANUP    */
*    3 AVTTSON  BIT(1),                  /* ENVIRON=TSO (OR MIXED)   */
*    3 AVTAQTAN BIT(1),                  /* ENVIRON=TCAM (OR MIXED)  */
*    3 AVTDLAYN BIT(1),                  /* SYSTEM DELAY IN EFFECT   */
*    3 AVTREADN BIT(1),                  /* READY MACRO EXECUTED     */
*    3 AVTCLOSN BIT(1),                  /* CLOSEDOWN REQUESTED      */
*    3 AVTQUCKN BIT(1),                  /* CLOSEDOWN TYPE
*                                           '0' - FLUSH
*                                           '1' - QUICK              */
*    3 AVTDISKN BIT(1),                  /* DISK=YES                 */
*   2 AVTBIT2     CHAR(1),               /* FLAG BITS                */
*
*/* AVTBIT2 BIT DEFINITIONS                                          */
*
*    3 AVTEXTSC BIT(1),                  /* EXTENDED RESTART  SA51078*/
*    3 AVTREUSN BIT(1),                  /* REUSABILITY IS RUNNING   */
*    3 AVTCOPYN BIT(1),                  /* COPY REQUESTS CONTROL    */
*    3 AVTTOPOL BIT(1),                  /* TOPMSG=NO                */
*    3 AVTSTRTN BIT(1),                  /* RESTART HAS BEGUN        */
*    3 AVTOPEIN BIT(1),                  /* INITIAL LOAD DONE
*                                           INDICATOR                */
*/* X'02' - LINETYP=STSP                                             */
*/* X'01' - LINETYP=BISC                                             */
*/* X'03' - LINETYP=MINI                                             */
*/* X'00' - LINETYP=BOTH                                             */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 AVTBIT3     CHAR(1),               /* FLAG BITS                */
*
*/* AVTBIT3 BIT DEFINITIONS                                          */
*
*    3 AVTRECVN BIT(1),                  /* CORE QUEUE FULL          */
*    3 AVTRFULN BIT(1),                  /* REUS DISK ZONE FULL      */
*    3 AVTTSAB  BIT(1),                  /* TSO HAS ABENDED          */
*    3 AVTOLTBN BIT(1),                  /* MAX LOAD OF OLT REACHED  */
*    3 AVTSTAYN BIT(1),                  /* S=Y - NO CONTINUATION    */
*    3 AVTSTAIN BIT(1),                  /* S=I - INVITATION LISTS   */
*    3 AVTSTACN BIT(1),                  /* S=C - COLDSTART          */
*    3 AVTSTAN  BIT(1),                  /* S=C OR S=W SPECIFIED     */
*   2 AVTCKRST    PTR(8),                /* RESTART=INTEGER          */
*   2 AVTDSKCT    FIXED(15),             /* NUMBER OF BUFFERS ON CPBS*/
*   2 AVTOPTN PTR(31),                  /* OPTION SEARCH RTN @Y17XAXU*/
*   2 AVTSTEAL    PTR(31),              /* BUFFER STEAL RTN  @Y17XAXU*/
*   2 AVTDDFT     PTR(31),              /* DEVICE DEPENDENT  @Y17XAXU*/
*                                       /* FLD LOOKUP RTN    @Y17XAXU*/
*   2 AVTOPMSK    PTR(31),              /* ADDR OF OPERATOR CONTROL
*                                          MASK TABLE        @Y17XAXU*/
*   2 AVTDCTLN    FIXED(15),            /* LENGTH OF DCT MASK FIELD IN
*                                          BYTES             @Y17XAXU*/
*   2 AVTOPCIN    FIXED(16),            /* TTCIN OF PRIMARY  @Y17XAXU*/
*                                       /* TERMINAL          @Y17XAXU*/
*/* END OF BASIC AVT WHEN ENVIRON=TSO                                */
*
*   2 AVTHM02     PTR(31),               /* IEDQHM02 - DESTINATION
*                                           ASSIGNMENT               */
*   2 AVTCMIN     PTR(31),               /* MSMIN=INTEGER            */
*   2 AVTCMAX     PTR(31),               /* MSMAX=INTEGER            */
*   2 AVTTOTNC    FIXED(31),             /* NUMBER OF RECORDS IN
*                                           ENTIRE  DATA SET
*                                           (MSUNITS=INTEGER)        */
*   2 AVTNCPBQ    PTR(31),               /* QUEUE OF BUFFERS AND
*                                           ERBS WAITING TO BE
*                                           PROCESSED                */
*   2 *           PTR(31),
*
*/* END OF CORE QUEUE AVT WHEN DISK=NO                               */
*
*   2 AVTFL       PTR(31),               /* DISK EXCP DRIVER         */
*   2 AVTIA       PTR(31),               /* REUSABILITY              */
*   2 AVTCOPY     PTR(31),               /* COPY SUBTASK QCB POINTER */
*   2 AVTDKAPQ    PTR(31),               /* QUEUE OF CPBS TO BE
*                                           PROCESSED BY CPB
*                                           CLEANUP (DISABLED)       */
*   2 *           PTR(31),
*   2 AVTDKENQ    PTR(31),               /* SAME AS ABOVE EXCEPT
*                                           ENABLED                  */
*   2 *           PTR(31),
*   2 AVTNOBFQ    PTR(31),               /* QUEUE OF CPBS WITHOUT
*                                           BUFFERS - USED BY CPB
*                                           CLEANUP                  */
*   2 *           PTR(31),
*   2 AVTBIT4     CHAR(1),               /* FLAG BITS         SA51078*/
*
*/* AVTBIT4 BIT DEFINITIONS                                   SA51078*/
*
*    3 AVTRUFTN    BIT(1),               /* REUS ACTIVE AT CHECKPT
*                                                             SA51078*/
*    3 *           BIT(1),               /* RESERVED                 */
*    3 *           BIT(1),               /* RESERVED                 */
*    3 *           BIT(1),               /* RESERVED                 */
*    3 *           BIT(1),               /* RESERVED                 */
*    3 *           BIT(1),               /* RESERVED                 */
*    3 *           BIT(1),               /* RESERVED                 */
*    3 *           BIT(1),               /* RESERVED                 */
*
*   2 *           PTR(24),               /* RESERVED          SA51078*/
*   2 *           PTR(31),
*   2 AVTINCPQ    PTR(31),               /* QUEUE OF CPBS REQUESTING
*                                           I/O BY EXCP DRIVER       */
*   2 *           PTR(31),
*   2 AVTFCPB     PTR(31),               /* QUEUE OF INACTIVE CPBS -
*                                           CPB FREEPOOL             */
*   2 AVTCPBPT    PTR(31),               /* ADDRESS OF CPB FREEPOOL
*                                           TO BE FREEMAINED BY
*                                           DISK CLOSE               */
*   2 AVTIOBR     PTR(31),               /* ADDRESS OF LIST OF IOBS -
*                                           ONE FOR EACH EXTENT OF THE
*                                           REUSABLE DISK QUEUE      */
*   2 AVTIOBN     PTR(31),               /* SAME AS ABOVE EXCEPT FOR
*                                           NON-REUSABLE DISK QUEUE  */
*   2 AVTLODPT    FIXED(31),             /* RADDR WHEN REUS ACTIVATED*/
*
*/* REUSABLE DISK DEFINITION                                         */
*
*   2 AVTADEBR    PTR(31),               /* ADDRESS OF DEB           */
*   2 AVTNOVOR    FIXED(31),             /* NUMBER OF EXTENTS        */
*   2 AVTRCTRR    FIXED(31),             /* NUMBER OF RECORDS/TRACK  */
*   2 AVTTRCYR    FIXED(31),             /* NUMBER OF TRACKS/CYLINDER*/
*   2 AVTTOTNR    FIXED(31),             /* NUMBER OF RECORDS IN
*                                           ENTIRE DATA SET          */
*   2 AVTVOLRR    FIXED(31),             /* PRODUCT OF NUMBER OF
*                                           EXTENTS AND NUMBER OF
*                                           RECORDS/TRACK            */
*
*/* NON-REUSABLE DISK DEFINITION                                     */
*
*   2 AVTADEBN    PTR(31),               /* ADDRESS OF DEB           */
*   2 AVTNOVON    FIXED(31),             /* NUMBER OF EXTENTS        */
*   2 AVTRCTRN    FIXED(31),             /* NUMBER OF RECORDS/TRACK  */
*   2 AVTTRCYN    FIXED(31),             /* NUMBER OF TRACKS/CYLINDER*/
*   2 AVTTOTNN    FIXED(31),             /* NUMBER OF RECORDS IN
*                                           ENTIRE DATA SET          */
*   2 AVTVOLRN    FIXED(31),             /* PRODUCT OF NUMBER OF
*                                           EXTENTS AND NUMBER OF
*                                           RECORDS/TRACK            */
*   2 AVTHRESN    FIXED(31),             /* ABSOLUTE RECORD NUMBER
*                                           WHICH IS THE THRESHOLD
*                                           THAT CAUSES CLOSEDOWN
*                                           DUE TO FILLING OF THE
*                                           NON-REUSABLE DISK QUEUE  */
*   2 AVTNADDR    FIXED(31),             /* NON-REUSABLE DISK QUEUE  */
*   2 AVTRADDR    FIXED(31),             /* REUSABLE DISK QUEUE      */
*   2 *           PTR(31),               /* ADDR OF OP CONTROL QCB   */
*    3 AVTHRESE    PTR(31),              /* NON-REUSABLE THRESHOLD
*                                           CLOSEDOWN ELEMENT -
*                                           THREE WORDS              */
*   2 *           PTR(8),                /* PRIORITY (PRIOPCTL + 4)  */
*   2 *           PTR(24)  BDY(BYTE),    /* LINK FIELD               */
*   2 *           CHAR(1),               /* X'11' - FLUSH CLOSE
*                                           REQUESTED                */
*   2 *           PTR(8),                /* X'0C' - LENGTH OF ELEMENT*/
*   2 *           CHAR(1),               /* UNUSED - REL LINE NO     */
*   2 AVTHRESS    CHAR(1),               /* COMPLETION CODE - STATUS
*                                           X'FF' - UNUSED ELEMENT
*                                           X'F0' - ELEMENT POSTED
*                                           X'00' OR X'04' - CLOSED  */
*   2 AVTCPBNO    FIXED(15);             /* CPB=INTEGER              */
*/*                                                          @Y17XAXF*/
*/*      ABEND PARAMETER LIST                                @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*DCL AVTHDRSZ BIT(8) CONSTANT('1E'X);   /* HDR PREFIX SIZE   @Y17XAXU*/
*DCL AVTTXTSZ BIT(8) CONSTANT('17'X);   /* TXT PREFIX SIZE   @Y17XAXU*/
*DCL AVTCVTPT BIT(8) CONSTANT('F0'X);   /* OFFSET INTO CVT OF ADDRESS
*                                          OF TCX            @Y17XAXU*/
*DCL AVTUMALN BIT(8) CONSTANT('0C'X);   /* LENGTH OF CCW-TIC (UNIT
*                                          MANAGEMENT AREA   @Y17XAXU*/
*DCL AVTDATLN BIT(8) CONSTANT('06'X);   /* NO. OF BYTES IN DATA FIELD
*                                          OF MESSAGE Q RECD @Y17XAXU*/
*DCL AVTMINKY BIT(8) CONSTANT('24'X);   /* MINIMUM KEY LEN   @Y17XAXU*/
*DCL AVTMIN05 BIT(8) CONSTANT('2C'X);   /* MIN KEYLENGTH FOR
*                                          3705 ENVIRONMENT  @YM06968*/
*DCL AVTSVSIZ BIT(8) CONSTANT('48'X);   /* SAVE AREA SIZE    @Y17XAXU*/
*DCL AVTECD4 BIT(8) CONSTANT('04'X);    /* RETURN CODE OF 4  @Y17XAXU*/
*DCL AVTECD8 BIT(8) CONSTANT('08'X);    /* RETURN CODE OF 8  @Y17XAXU*/
*DCL AVTECD12 BIT(8) CONSTANT('0C'X);   /* RETURN CODE OF 12 @Y17XAXU*/
*DCL AVTECD16 BIT(8) CONSTANT('10'X);   /* RETURN CODE OF 16 @Y17XAXU*/
*DCL AVTECD20 BIT(8) CONSTANT('14'X);   /* RETURN CODE OF 20 @Y17XAXU*/
*DCL AVTE80 BIT(8) CONSTANT('80'X);     /* SIGN BIT MASK     @Y17XAXU*/
*DCL AVTMODBT BIT(8) CONSTANT('80'X);   /* 2ND-23RD BIT MASK @Y17XAXU*/
*DCL AVTEZERO BIT(8) CONSTANT('00'X);   /* EQUATED ZERO      @Y17XAXU*/
*DCL AVTEBLNK BIT(8) CONSTANT('40'X);   /* BLANK CHAR        @Y17XAXU*/
*DCL AVTEPER BIT(8) CONSTANT('4B'X);    /* PERIOD            @Y17XAXU*/
*DCL AVTEFF BIT(8) CONSTANT('FF'X);     /* ALL ONES MASK     @Y17XAXU*/
*DCL AVTCVTMP BIT(8) CONSTANT('C0'X);   /* OFFSET INTO CVT OF ADDRESS
*                                          OF MULTIPROC CVT  @Y17XAXU*/
*DCL AVTMPTRR BIT(8) CONSTANT('0C'X);   /* OFFSET INTO MP CVT OF
*                                          TASK REMOVAL RTN  @Y17XAXU*/
*
*%IF SAVT= 'NO' %THEN
*   %GOTO SAVTEND;
*DECLARE
*  1 IEDNSVTD BASED(AVTSAVTP) ,
*   2 SAVTDIAG    PTR(31),               /* VIRT. DIAGNOSE RTN Y05331*/
*    3 SAVTDIAF    CHAR(1),              /* FLAG BYTE          Y05331*/
*     4 SAVTVIRT    BIT(1),             /*VIRTUAL ENVIRONMENT  X03039*/
*     4 SAVTPRMT BIT(1),               /* PROMPTING REQUESTED  X03039*/
*   2 SAVTPOOL PTR(31),                 /*PLCB POOL ADDR       X03039*/
*   2 SAVTPLCB PTR(31),                 /*NEXT FREE PLCB       X03039*/
*   2 SAVTPUSE FIXED(15),               /* PLCB IN-USE CT    @Y17XAXU*/
*   2 SAVTPH20 FIXED(15),               /* PLCB HI WATER CT  @Y17XAXU*/
*   2 SAVTPREQ PTR(31),                 /* ADDRESS OF PLCB   @Y17XAXU*/
*                                       /* ALLOCATION RTN    @Y17XAXU*/
*   2 SAVTPRTQ PTR(31),                 /* ANCHOR FOR PLCB   @Y17XAXU*/
*                                       /* REQ WAIT CHAIN    @Y17XAXU*/
*   2 SAVTPWT FIXED(15),                /* PLCB WAIT COUNT   @Y17XAXU*/
*   2 SAVTWH20 FIXED(15),               /* PLCB HI-WATER     @Y17XAXU*/
*                                       /* WAIT COUNT        @Y17XAXU*/
*   2 * PTR(31),                        /* ADDRESS OF STCB   @Y17XAXU*/
*                                       /* FOR PLCB DEALLOC  @Y17XAXU*/
*   2 SAVTPRTN PTR(31),                 /* PLCB DEALLOCATION @Y17XAXU*/
*                                       /* RTN ADDRESS       @Y17XAXU*/
*   2 SAVTSIB  PTR(31),                 /* ADDR OF NXT FREE  @Y17XAXU*/
*                                       /* SIB               @Y17XAXU*/
*   2 SAVTSUSE FIXED(15),               /* SIB IN-USE CT     @Y17XAXU*/
*   2 SAVTFAIL FIXED(15),               /* COUNT OF SIB REQ  @Y17XAXU*/
*                                       /* THAT FAILED       @Y17XAXU*/
*   2 SAVTSREQ PTR(31),                 /* ADDR OF SIB       @Y17XAXU*/
*                                       /* ALLOCATION RTN    @Y17XAXU*/
*   2 SAVTSRTN PTR(31),                 /* ADDRESS OF SIB    @Y17XAXU*/
*                                       /* DEALLOCATION RTN  @Y17XAXU*/
*   2 SAVTFLDH PTR(31),                 /* 3705 FIRST LEVEL  @Y17XAXU*/
*                                       /* DATA HANDLER      @Y17XAXU*/
*   2 SAVTCNIR PTR(31),                 /* CONTROL NIR GENR  @Y17XAXU*/
*                                       /* QCB ADDRESS       @Y17XAXU*/
*   2 SAVTDNIR PTR(31),                 /* DATA NIR GENR QCB @Y17XAXU*/
*                                       /* ADDRESS           @Y17XAXU*/
*   2 SAVTRNTA PTR(31),                 /* 3705 TRACE RTN    @Y17XAXU*/
*                                       /* ADDRESS           @Y17XAXU*/
*   2 SAVTPIUT PTR(31),                 /* ADDR OF PIU TRACE @Y17XAXU*/
*                                       /* TABLE             @Y17XAXU*/
*   2 SAVTCLUP PTR(31),                 /* 3705 CLEANUP RTN  @Y17XAXU*/
*                                       /* ADDRESS           @Y17XAXU*/
*   2 SAVTNAT  PTR(31),                 /* NAT ADDRESS       @Y17XAXU*/
*   2 SAVTSAT  PTR(31),                 /* SAT ADDRESS       @Y17XAXU*/
*   2 *        PTR(31),                 /* RESERVED          @Y17XAXF*/
*   2 SAVTLUSQ CHAR(12) BDY(WORD),      /* LUS QCB           @Y17XAXU*/
*    3 SAVTLUSB PTR(31),                /* BUFFER WAIT CHAIN @Y17XAXU*/
*    3 SAVTLUSP PTR(31),                /* PLCB WAIT CHAIN   @Y17XAXU*/
*    3 * PTR(31),                       /* STCB POINTER      @Y17XAXU*/
*   2 SAVTLUSR PTR(31),                 /* OP-SERV-REQ CHAIN @Y17XAXU*/
*   2 SAVTSLCB PTR(31),                 /* SSCP LCB          @Y17XAXU*/
*   2 SAVTSCPQ PTR(31),                 /* SSCP OUTBND QCB   @Y17XAXU*/
*   2 SAVTSSSR PTR(31),                 /* SERIALIZER CHAIN  @Y17XAXU*/
*   2 * PTR(31),                        /* STCB POINTER      @Y17XAXU*/
*   2 SAVTXFMO PTR(31),                 /* OUTBND XFORM QCB  @YM03681*/
*                                       /* ADDRESS           @YM03681*/
*   2 * (2) PTR(31),                    /* RESERVED          @YM03681*/
*   2 SAVTXFMI PTR(31),                 /* INBND XFORM       @YM03681*/
*                                       /* ENTRY ADDRESS     @YM03681*/
*   2 * (2) PTR(31),                    /* RESERVED          @YM03681*/
*   2 SAVTIPCQ PTR(31),                 /* PC INBOUND QCB    @Y17XAXU*/
*                                       /* ADDRESS           @YM03681*/
*   2 * (3) PTR(31),                    /* RESERVED          @Y17XAXF*/
*   2 SAVTMVBF PTR(31),                 /* MOVE BFR DATA RTN @Y17XAXU*/
*   2 SAVTXTRQ PTR(31),                 /* CROSS TASK REQ HD @Y17XAXU*/
*   2 SAVTSCLU PTR(31),                 /* SC ENTRY ADDRESS  @Y17XAXU*/
*   2 SAVTSSRQ PTR(31),                 /* SSCP REQ HDLR ADR @Y17XAXU*/
*   2 SAVTSSRP PTR(31),                 /* SSCP RES HDLR ADR @Y17XAXU*/
*   2 SAVTCSCI PTR(31),                 /* FID1 COM SC INBND @Y17XAXU*/
*   2 SAVTSAI PTR(31),                  /* FID0 SA INBOUND   @Y17XAXU*/
*   2 SAVTSAC PTR(31),                  /* COMMAND PROCESSOR @Y17XAXU*/
*   2 SAVTSARI PTR(31),                 /* COMMAND PROCESSOR @Y17XAXU*/
*   2 SAVTSAO PTR(31),                  /* COMMAND ID PROC   @Y17XAXU*/
*   2 SAVTDFCO PTR(31),                 /* DFC OUTBOUND      @Y17XAXU*/
*   2 SAVTRQIN PTR(31),                 /* INBOUND REQ PROC  @Y17XAXU*/
*   2 SAVTQRS PTR(31),                  /* RESPONSE GENERATOR
*                                          ADDRESS           @Y17XAXU*/
*   2 SAVTSSMH PTR(31),                 /* SSCP MH ENTRY ADR @Y17XAXU*/
*   2 SAVTMHTB PTR(31),                 /* MH TABLE ADDRESS  @Y17XAXU*/
*   2 SAVTNATL FIXED(15),               /* INDEX OF LAST NAT
*                                          ENTRY             @Y17XAXU*/
*   2 SAVTNADL FIXED(15),               /* CONSTANT TO CALCULATE
*                                          NAT ENTRY FROM MH
*                                          INDEX             @Y17XAXU*/
*   2 SAVTSPLN PTR(31),                 /* 3705 STOPLINE RTN @Y17XAXU*/
*                                       /* ADDRESS           @Y17XAXU*/
*   2 SAVTMAND PTR(31),                 /* ADDRESS OF MANUAL @Y17XAXU*/
*                                       /* DIAL RTN          @Y17XAXU*/
*   2 SAVTRQCH PTR(31),                 /* APPL REQUEST      @Y17XAXU*/
*                                       /* QUEUE             @Y17XAXU*/
*   2 SAVTRQTG FIXED(16),               /* APPL REQUEST TAG  @Y17XAXU*/
*   2 SAVTTCPU  FIXED(16),              /* TCAM PU TTCIN     @Y17XAXU*/
*    3 SAVTSCPT FIXED(16),              /* SSCP TTCIN        @Y17XAXU*/
*   2 SAVTBSM  PTR(31),                 /* BSM ADDRESS       @Y17XAXU*/
*   2 SAVTSIBC FIXED(15),               /* SIB COUNT         @Y17XAXU*/
*   2 SAVTSUBA PTR(8),                  /* MAX SUBAREA VALUE @Y17XAXU*/
*   2 SAVTSUBV PTR(8),                  /* HOST SUBAREA VAL  @Y17XAXU*/
*   2 SAVTNAX PTR(31),                  /* NETWORK ADDR TO TTCIN     */
*                                       /* CONVERSION RTN    @Y17XAXU*/
*   2 SAVTTNTX PTR(31),                 /* TTCIN TO NETWORK ADDR     */
*                                       /* CONVERSION RTN    @Y17XAXU*/
*   2 SAVTRNMP PTR(31),                 /* INDEX TO TTE/MH E @Y17XAXU*/
*                                       /* CONVERSION RTN    @Y17XAXU*/
*   2 SAVTLCBS PTR(31),                 /* SA LCB FETCH RTN  @Y17XAXU*/
*   2 SAVTSH20 FIXED(15),               /* SIB POOL UTIL. HI-WATER
*                                          COUNT             @Y17XAXU*/
*   2 SAVTNAT1 FIXED(15),               /* TNT INDEX OF      @Y17XAX7*/
*                                       /* FIRST NAT ENTRY   @Y17XAXU*/
*   2 SAVTMHDX CHAR(2),                 /* TTCIN OF FIRST MH @Y17XAXU*/
*                                       /* ENTRY             @Y17XAXU*/
*   2 SAVTZELM FIXED(16),               /* NETWORK ADDRESS   @Y17XAXU*/
*                                       /* SUBAREA MASK      @Y17XAXU*/
*    3 SAVTSUBM FIXED(8),               /* SUBAREA MASK      @Y17XAXU*/
*    3 * FIXED(8),                      /* BYTE OF  ZEROS    @Y17XAXU*/
*   2 SAVTSUBL PTR(8),                  /* SUBAREA VALUE LEN @Y17XAXU*/
*   2 * CHAR(1),                        /* RESERVED          @YM02919*/
*   2 SAVTPLSZ FIXED(15),               /* PLCB,SAT,SIB,RVT, AND NAT
*                                          POOL SIZE         @YM02919*/
*   2 SAVTDVAS PTR(31),                 /* DEV ASSOC ROUTINE @Y17XAXU*/
*   2 SAVTNID PTR(31),                  /* BSC ID VER ROUTINE
*                                                            @Y17XAXU*/
*   2 SAVTRDRV CHAR(13) BDY(WORD),      /* REDRIVE ELEMENT   @YM03697*/
*    3 SAVTRDKY CHAR(1),                /* KEY FIELD         @YM03697*/
*    3 SAVTRDQB PTR(24),                /* QCB ADDRESS       @YM03697*/
*    3 SAVTRDPY CHAR(1),                /* PRIORITY FIELD    @YM03697*/
*    3 * CHAR(7),                       /* RESERVED          @YM03697*/
*    3 SAVTRDFG CHAR(1),                /* FLAG FIELD        @YM03697*/
*   2 *        CHAR(3),                 /* RESERVED          @Y17XAXF*/
*   2 SAVTCKQB CHAR(12) BDY(WORD),      /* 3705 CHECKPOINT QCB
*                                                            @Y17XAXF*/
*    3 SAVTCKTB PTR(31),                /*  QUEUE OF ELEMENTS FOR CKPT
*                                                            @Y17XAXF*/
*     4 SAVTCKVT BIT(8),                /*   VTO FOR ATTACHED TASK
*                                                            @Y17XAXF*/
*     4 SAVTCKCH PTR(24),               /*   CHAIN OF ELEMENTS
*                                                            @Y17XAXF*/
*    3 SAVTCKEC PTR(31),                /*  EVENT CONTROL BLOCK
*                                                            @Y17XAXF*/
*     4 SAVTCKCC BIT(8),                /*   COMPLETION CODE BYTE
*                                                            @Y17XAXF*/
*      5 SAVTCKWA BIT(1),               /*    WAITING FOR COMPLETION
*                                             OF THE EVENT   @Y17XAXF*/
*      5 SAVTCKPO BIT(1),               /*    EVENT HAS COMPLETED
*                                                            @Y17XAXF*/
*      5 *        BIT(6),               /*    RESERVED       @Y17XAXF*/
*     4 *        PTR(24),               /*   RESERVED        @Y17XAXF*/
*    3 *        PTR(31),                /*  STCB ADDRESS     @Y17XAXF*/
*  2 SAVTBITN PTR(31),           /* BIND IMAGE TABLE ADDRESS @OY19488*/
*  2 SAVTLLCB PTR(31);           /* POINTER TO LAST PLCB     @OY19488*/
* %SAVTSIZE='LENGTH(IEDNSVTD)';         /* SAVT SIZE         @Y17XAXU*/
./ ADD NAME=TBDUD
*        %GOTO BDUPLS;                  /* BILINGUAL HEADER
         MACRO
         TBDUD
.*A000000-999999                                               @Y17XAXF
IEDBDU   DSECT
*
*        DSECT FOR BASIC DEVICE UNIT
*
BDUCMND  DS    XL1 .               COMMAND CODE
BDUMODIF DS    XL1 .               MODIFIER BYTE
BDUFNFLG DS    XL1 .               FUNCTION FLAGS
BDUSTHDR EQU   X'80' .                  START OF HEADER
BDUHEADR EQU   X'40' .                  HEADER PREFIX
BDULEADG EQU   X'20' .                  LEADING GRAPHICS
BDUFRSTB EQU   X'10' .                  FIRST BLOCK
BDUTPTX  EQU   X'08' .                  TRANSPARENT TEXT
BDUPOSAK EQU   X'04' .                  POSITIVE ACKNOWLEDGEMENT
BDUNEGAK EQU   X'02' .                  NEGATIVE ACKNOWLEDGEMENT
BDUALTAK EQU   X'01' .                  ALTERNATE ACKNOWLEDGEMENT
BDUBDUFG DS    XL1 .               BDU FLAGS
BDUXERLK EQU   X'80'               /* RESET ERROR LOCK */
BDURSP   DS    0XL2  .           SYSTEM AND ERROR RESP         @YM08042
BDUSYRSP DS    XL1 .               SYSTEM RESPONSE
BDUERROR EQU   X'80' .                  ERROR INDICATOR
*BDUPHASE      BITS 1-2                 PHASE INDICATOR
*BDURESP       BITS 3-7                 STATUS INFORMATION
BDUEXRSP DS    XL1 .               EXTENDED RESPONSE
*BDUXINIT      BITS 0-2                 INITIAL STATUS
*BDUXFINL      BITS 3-6                 FINAL STATUS
BDUXGRPH EQU   X'01' .                  LEADING GRAPHICS
BDUEND   EQU   *                        END OF THE BDU HEADER
BDUTEXT  EQU   *                        BDU TEXT FIELD
BDUMBHSC EQU   X'80' .                  CHANGE BH SET ASSOCATION
BDUMBHSA EQU   X'40' .                  ACTIVATE BH SET ASSOCATION
BDUMBHSD EQU   X'20' .                  DEACTIVATE BH SET ASSOCATION
BDULEN   EQU   *-IEDBDU .          BDU LENGTH
         MEND
*                                                                    */
*%BDUPLS:;
*DECLARE
*  1 IEDBDU  BASED BDY(BYTE),
*/*                                                                  */
*/*      DSECT FOR BASIC DEVICE UNIT                                 */
*/*                                                                  */
*    2 BDUCMND  CHAR(1),                /* COMMAND CODE              */
*    2 BDUMODIF CHAR(1),                /* MODIFIER BYTE             */
*    2 BDUFNFLG BIT(8),                 /* FUNCTION FLAGS            */
*      3 BDUSTHDR BIT(1),               /*   START OF HEADER         */
*      3 BDUHEADR BIT(1),               /*   HEADER PREFIX           */
*      3 BDULEADG BIT(1),               /*   LEADING GRAPHICS        */
*      3 BDUFRSTB BIT(1),               /*   FIRST BLOCK             */
*      3 BDUTPTX  BIT(1),               /*   TRANSPARENT TEXT        */
*      3 BDUPOSAK BIT(1),               /*   POSITIVE ACKNOWLEDGEMENT*/
*      3 BDUNEGAK BIT(1),               /*   NEGATIVE ACKNOWLEDGEMENT*/
*      3 BDUALTAK BIT(1),               /*   ALTERNATE ACKNOWLEDGEMNT*/
*    2 BDUBDUFG BIT(8),                 /* BDU FLAGS                 */
*      3 BDUXERLK BIT(1),               /* RESET ERROR LOCK */
*    2 BDURSP BIT(16),                  /* SYS & ERROR RESP  @YMO8042*/
*      3 BDUSYRSP BIT(8),               /* SYSTEM RESPONSE   @YM08042*/
*        4 BDUERROR BIT(1),             /*   ERROR INDICATOR @YM08042*/
*        4 BDUPHASE BIT(2),             /*   PHASE INDICATOR @YM08042*/
*        4 BDURESP  BIT(5),             /*   STATUS INFO     @YM08042*/
*      3 BDUEXRSP CHAR(1),              /* EXTENDED RESPONSE @YM08042*/
*        4 BDUXINIT BIT(3),             /*   INITIAL STATUS  @YM08042*/
*        4 BDUXFINL BIT(4),             /*   FINAL STATUS    @YM08042*/
*        4 BDUXGRPH BIT(1),             /*   LEAD GRAPHICS   @YM08042*/
*    2 BDUEND CHAR(0);                  /* END OF THE BDU HEADER     */
* DCL BDUTEXT CHAR(*) DEF(BDUEND);      /* BDU TEXT FIELD            */
*/* BDUTEXT VALUES                                                   */
* DCL BDUMBHSC BIT(8) CONSTANT('80'X);  /* CHANGE BH SET ASSOCIATION */
* DCL BDUMBHSA BIT(8) CONSTANT('40'X);  /* ACTIVATE BH SET
*                                          ASSOCATION                */
* DCL BDUMBHSD BIT(8) CONSTANT('20'X);  /* DEACTIVATE BH SET
*                                          ASSOCATION                */
* %BDULEN='LENGTH(IEDBDU)';             /* BDU LENGTH                */
./ ADD NAME=TBINDD
*        %GOTO BINDPLS;                 /* BILINGUAL HEADER
         MACRO
         TBINDD
.*A000000-999999                                               @Y17XAXF
IEDBIN   DSECT
*
*        DSECT FOR ENTRY WITHIN BIND IMAGE TABLE
*
BINNAME  DS    CL8 .               NAME OF ENTRY
BINLEN   DS    XL2 .               LENGTH OF BIND IMAGE
BINIMAGE EQU   * .                 START OF BIND IMAGE
BINBLEN  EQU   *-IEDBIN            LENGTH OF ENTRY WITHOUT BIND IMAGE
         MEND  */
*%BINDPLS:;
*DECLARE
*  1 IEDBIN   BASED(RBIN),
*/*                                                                  */
*/*      DSECT FOR ENTRY WITHIN BIND IMAGE TABLE                     */
*/*                                                                  */
*    2 BINNAME  CHAR(8),                /* NAME OF ENTRY             */
*    2 BINLEN   FIXED(16),              /* LENGTH OF BIND IMAGE      */
*    2 BINIMAGE CHAR(0);                /* START OF BIND IMAGE       */
* %BINBLEN='LENGTH(IEDBIN)';            /* LENGTH OF BIND ENTRY WITHOUT
*                                          BIND IMAGE                */
*/*                                                          @YM07701*/
*DECLARE                                                   /*@YM07701*/
*  1 BINBUD   BASED,                                       /*@YM07701*/
*/*                                                          @YM07701*/
*/*      DSECT FOR BIND IMAGE USER DATA                      @YM07701*/
*/*                                                          @YM07701*/
*    2 BINUDATL FIXED(8),               /* USER DATA LENGTH  @YM07701*/
*    2 BINUDAT  CHAR(0);                /* USER DATA         @YM07701*/
*/*                                                          @YM07701*/
*DECLARE                                                   /*@YM07701*/
*  1 BINBLD   BASED,                                       /*@YM07701*/
*/*                                                          @YM07701*/
*/*      DSECT FOR MH LOGON PREFIX DATA                      @YM07701*/
*/*                                                          @YM07701*/
*    2 BINLDATL FIXED(8),               /* LOGON PREFIX LEN  @YM07701*/
*    2 BINLDAT  CHAR(0);                /* LOGON DATA        @YM07701*/
./ ADD NAME=TBLGEN
         MACRO
         TBLGEN &OPTBL,&SQVAL,&TNAME,&TID,&LENG,&BREG
         GBLA  &LN,&ENDC,&NDX
         GBLC  &TNM,&REP,&REPA,&BLK
.*       GENERATES TABLES IN X1A. ONE WITH OFFSET AND ONE WITH
.*       VALUES AT THE CORRESPONDING OFFSETS.  SEE MODULE X1A.
&TNM     SETC  '&TNAME'                 NAME TO BE GEN'ED FOR TABLE
&LN      SETA  K'&TNAME
         AIF   (&LN LE 8).TGBGN
         MNOTE '&TNM EXCEEDS 8 CHARACTERS - IT HAS K'&TNAME CHARACTERS'
         MEXIT
.TGBGN   ANOP
&LN      SETA  &LENG                    LENGTH ATTR FOR EACH TBL ENTRY
&TNM     EQU   *
&BLK     SETC  '  '
&NDX     SETA  0
&ENDC    SETA  N'&OPTBL
         AIF   ('&TID' EQ 'SEQT').SEQTBL
.* THE DEFAULT ID IS OP CODE TABLE ID
.OCTBL   ANOP
&NDX     SETA  &NDX+1
&REP     SETC  '&SYSLIST(1,&NDX)'
         AIF   (&NDX GE &ENDC).OUT1
         ORG   &TNM.+JT&REP.*&LN
         DC    AL&LN.(&REP.-&BREG.)
         AGO   .OCTBL
.* STATEMENT SEQUENCING TABLE
.SEQTBL  ANOP
&NDX     SETA  &NDX+1
&REP     SETC  '&SYSLIST(1,&NDX)'
&REPA    SETC  '&SYSLIST(2,&NDX)'
         AIF   (&NDX GE &ENDC).OUT2
         ORG   &TNM.+JT&REP.*&LN
         DC    AL&LN.(&REPA.)
         AGO   .SEQTBL
.OUT1    ANOP
         DC    AL&LN.(&REP.-&BREG.)
         AGO   .EXIT
.OUT2    ANOP
DMMY     EQU   *
         DC    AL&LN.(&REPA.)
.EXIT    ANOP
         DS    0H
         MEND
./ ADD NAME=TBNDD
*        %GOTO BNDPLS;                  /* BILINGUAL HEADER
         MACRO
         TBNDD
.*A000000-999999                                               @Y17XAXF
IEDBNDD  DSECT
*
*        BIND IMAGE DSECT
*
BNDRUCDE DS    XL1 .               ALWAYS X'31'
BNDFORMT DS    XL1 .               FORMAT/TYPE
BNDFMPRF DS    XL1 .               FM PROFILE
BNDTSPRF DS    XL1 .               TS PROFILE
BNDPRIM  DS    XL1 .               PRIMARY LU PROTOCOLS FOR FM DATA
BNDPCHN  EQU   X'80' .                  CHAINING USE
BNDPRQM  EQU   X'40' .                  REQUEST MODE SELECTION
BNDPDEF  EQU   X'20' .                  DEFINITE RESPONSE
BNDPEXC  EQU   X'10' .                  EXCEPTION RESPONSE
*        EQU   X'08' .                  RESERVED
*        EQU   X'04' .                  RESERVED
BNDPCMP  EQU   X'02' .                  COMPRESSION INDICATOR
BNDPEBI  EQU   X'01' .                  EB INDICATOR
BNDSECD  DS    XL1 .               SECONDARY LU PROTOCOLS FOR FM DATA
BNDSCHN  EQU   X'80' .                  CHAINING USE
BNDSRQM  EQU   X'40' .                  REQUEST MODE SELECTION
BNDSDEF  EQU   X'20' .                  DEFINITE RESPONSE
BNDSEXC  EQU   X'10' .                  EXCEPTION RESPONSE
*        EQU   X'08' .                  RESERVED
*        EQU   X'04' .                  RESERVED
BNDSCMP  EQU   X'02' .                  COMPRESSION INDICATOR
BNDSEBI  EQU   X'01' .                  EB INDICATOR
BNDCOMMI DS    XL1 .               COMMON LU PROTOCOLS (1ST BYTE)
*        EQU   X'80' .                  RESERVED
BNDFMUSE EQU   X'40' .                  FM HEADER USAGE
BNDBRACK EQU   X'20' .                  BRACKETS
BNDBTERM EQU   X'10' .                  BRACKET TERMINATION RULES
BNDALT   EQU   X'08' .                  ALTERNATE CODE
*        EQU   X'04' .                  RESERVED
*        EQU   X'02' .                  RESERVED
*        EQU   X'01' .                  RESERVED
BNDCOMM2 DS    XL1 .               COMMON LU PROTOCOLS (2ND BYTE)
*BNDFMODE BITS 0-1 .                    FM TRANSACTION MODE
BNDHDX   EQU   X'40' .                       HDX CONTENTION
BNDHDXFF EQU   X'80' .                       HDX FLIP-FLOP
BNDMSLVE EQU   X'C0' .                       MASTER SLAVE
BNDRECOV EQU   X'20' .                  RECOVERY RESPONSIBILITY
BNDSPKR  EQU   X'10' .                  BCKTS FIRSTSPKR
*        EQU   X'08' .                  RESERVED
*        EQU   X'04' .                  RESERVED
*        EQU   X'02' .                  RESERVED
BNDCRES  EQU   X'01' .                  CONTENTION RESOLUTION
BNDSSPC  DS    XL1 .               SEC SEND PACING COUNT
BNDSRPC  DS    XL1 .               SEC RECEIVE PACING COUNT
BNDSMSRU DS    XL1 .               SLU MAX SEND RU SIZE
BNDNMAX  EQU   X'80' .                  NO MAX SPECIFIED
*        EQU   X'40'-X'01' .            RESERVED
BNDPMSRU DS    XL1 .               PLU MAX SEND RU SIZE
BNDNMAXP EQU   X'80' .                  NO MAX SPECIFIED
*        EQU   X'40'-X'01' .            RESERVED
BNDPSPC  DS    XL1 .               PRI SEND PACING COUNT
         DS    XL1 .               RESERVED
BNDLUPFL DS    XL1 .               LU PROFILE
BNDPSF   EQU   X'80' .                  PRESENTATION SERVICES FORMAT
*BNDLUTYP EQU  X'40'-X'01' .            LU TYPE
BNDLU0   EQU   X'00'                     LU TYPE 0
BNDLU1   EQU   X'01'                     LU TYPE 1
BNDLU2   EQU   X'02'                     LU TYPE 2
BNDPSCH  DS    0CL10 .             PRESENTATION SERVICE CHARACTERISTICS
         DS    CL9 .                    RESERVED
BNDSCSZE DS    CL1 .                    SCREEN SIZE
         DS    CL1 .               RESERVED                    @YM07298
BND12X40 EQU   X'01' .                   12 X 40 SIZE
BND24X80 EQU   X'02' .                   24 X 80 SIZE
BNDCRYP  DS    XL1 .               ALWAYS X'00'
BNDPLUNL DS    XL1 .               LENGTH OF LU NAME (ALWAYS X'08')
BNDPLUN  DS    CL8 .               PRIMARY LU NAME
BNDUDFL  DS    XL1 .               USER DATA FIELD LENGTH
BNDUSD   EQU   * .                 USER DATA FIELD
BNDBLEN  EQU   *-IEDBNDD .         LENGTH OF BIND IMAGE WITHOUT USER
*                                       DATA
         MEND
*        */
*%BNDPLS:;
*DECLARE
*  1 IEDBNDD  BASED(RBND),
*/*                                                                  */
*/*      BIND IMAGE DSECT                                            */
*/*                                                                  */
*    2 BNDRUCDE BIT(8),                 /* ALWAYS X'31'              */
*    2 BNDFORMT BIT(8),                 /* FORMAT/TYPE               */
*    2 BNDFMPRF FIXED(8),               /* FM PROFILE                */
*    2 BNDTSPRF FIXED(8),               /* TS PROFILE                */
*    2 BNDPRIM  BIT(8),                 /* PRIMARY LU PROTOCOLS      */
*      3 BNDPCHN BIT(1),                /*   CHAINING USE            */
*      3 BNDPRQM BIT(1),                /*   REQUEST MODE SELECTION  */
*      3 BNDPDEF BIT(1),                /*   DEFINITE RESPONSE       */
*      3 BNDPEXC BIT(1),                /*   EXCEPTION RESPONSE      */
*      3 *       BIT(1),                /*   RESERVED                */
*      3 *       BIT(1),                /*   RESERVED                */
*      3 BNDPCMP BIT(1),                /*   COMPRESSION INDICATOR   */
*      3 BNDPEBI BIT(1),                /*   EB INDICATOR            */
*    2 BNDSECD  BIT(8),                 /* SECONDARY LU PROTOCOLS    */
*      3 BNDSCHN BIT(1),                /*   CHAINING USE            */
*      3 BNDSRQM BIT(1),                /*   REQUEST MODE SELECTION  */
*      3 BNDSDEF BIT(1),                /*   EXCEPTION RESPONSE      */
*      3 BNDSEXC BIT(1),                /*   DEFINITE RESPONSE       */
*      3 *       BIT(1),                /*   RESERVED                */
*      3 *       BIT(1),                /*   RESERVED                */
*      3 BNDSCMP BIT(1),                /*   COMPRESSION INDICATOR   */
*      3 BNDSEBI BIT(1),                /*   EB INDICATOR            */
*    2 BNDCOMM1 BIT(8),                 /* COMMON LU PROTOCOLS BYTE 1*/
*      3 *       BIT(1),                /*   RESERVED                */
*      3 BNDFMUSE BIT(1),               /*   FM HEADER USAGE         */
*      3 BNDBRACK BIT(1),               /*   BRACKETS                */
*      3 BNDBTERM BIT(1),               /*   BRACKET TERMINATION RULE*/
*      3 BNDALT   BIT(1),               /*   ALTERNATE CODE          */
*      3 *        BIT(1),               /*   RESERVED                */
*      3 *        BIT(1),               /*   RESERVED                */
*      3 *        BIT(1),               /*   RESERVED                */
*    2 BNDCOMM2 BIT(8),                 /* COMMON LU PROTOCOLS BYTE 2*/
*      3 BNDFMODE BIT(2),               /*   FM TRANSACTION MODE     */
*      3 BNDRECOV BIT(1),               /*   RECOVERY RESPONSIBILITY */
*      3 BNDSPKR  BIT(1),               /*   BCKTS FIRST SPKR        */
*      3 *        BIT(1),               /*   RESERVED                */
*      3 *        BIT(1),               /*   RESERVED                */
*      3 *        BIT(1),               /*   RESERVED                */
*      3 BNDCRES  BIT(1),               /*   CONTENTION RESOLUTION   */
*    2 BNDSSPC  FIXED(8),               /* SEC SEND PACING COUNT     */
*    2 BNDSRPC  FIXED(8),               /* SEC RECEIVE PACING COUNT  */
*    2 BNDSMSRU FIXED(8),               /* SLU MAX SEND RU SIZE      */
*     3 BNDNMAX  BIT(1),                /*  NO MAX SPECIFIED         */
*     3 *        BIT(7),                /*  RESERVED                 */
*    2 BNDPMSRU FIXED(8),               /* PLU MAX SEND RU SIZE      */
*     3 BNDNMAXP BIT(1),                /*  NO MAX SPECIFIED         */
*     3 *        BIT(7),                /*  RESERVED                 */
*    2 BNDPSPC  FIXED(8),               /* PRI SEND PACING COUNT     */
*    2 *        CHAR(1),                /* RESERVED                  */
*    2 BNDLUPFL FIXED(8),               /* LU PROFILE                */
*     3 BNDPSF   BIT(1),                /*  PRESENTATION SERVICE FORMAT
*                                                                    */
*     3 BNDLUTYP BIT(7),                /* LU TYPE                   */
*    2 BNDPSCH  CHAR(10),               /* PRESERNTATION SERVICE
*                                          CHARACTERISTICS           */
*     3 *        CHAR(9),               /*  RESERVED                 */
*     3 BNDSCSZE CHAR(1),               /*  SCREEN SIZE              */
*    2 *        CHAR(1),                /* RESERVED          @YM07298*/
*    2 BNDCRYP  FIXED(8),               /* ALWAYS X'00'              */
*    2 BNDPLUNL FIXED(8),               /* LENGTH OF PRIMARY LU NAME
*                                          (ALWAYS X'08')            */
*    2 BNDPLUN  CHAR(8),                /* PRIMARY LU NAME           */
*    2 BNDUDFL  FIXED(8),               /* USER DATA FIELD LENGTH    */
*    2 BNDUSD   CHAR(0);                /* USER DATA FIELD           */
* %BNDLEN='LENGTH(IEDBNDD)';            /* LENGTH OF BIND ENTRY      */
* %BNDBLEN='LENGTH(IEDBNDD)';           /* LEN OF BIND ENTRY @YM07701*/
*/*BNDSCSZE VLAUES                                                   */
* DCL BND12X40 BIT(8) CONSTANT('01'X);  /* 12 X 40 SIZE              */
* DCL BND24X80 BIT(8) CONSTANT('02'X);  /* 24 X 80 SIZE              */
*/*BNDFMODE VLAUES                                                   */
* DCL BNDHDX   BIT(2) CONSTANT('01'B);  /* HDX CONTENTION            */
* DCL BNDHDXFF BIT(2) CONSTANT('10'B);  /* HDX FLIP-FLOP             */
* DCL BNDMSLVE BIT(2) CONSTANT('11'B);  /* MASTER SLAVE              */
*/*BNDLUTYP VALUES                                                   */
* DCL BNDLU0   BIT(7) CONSTANT('0000000'B);  /* LU TYPE 0            */
* DCL BNDLU1   BIT(7) CONSTANT('0000001'B);  /* LU TYPE 1            */
* DCL BNDLU2   BIT(7) CONSTANT('0000010'B);  /* LU TYPE 2            */
./ ADD NAME=TCAVTD
*        %GOTO PLSTCAVT;                /*
         MACRO
         TCAVTD &DSECT=YES
.*A000000-999999                                               @Y17XAXF
.*C000005-000067 (RESEQUENCE MODULE TO INSERT FIX)             @OZ31115
         AIF   ('&DSECT' EQ 'NO').NODSECT
IEDQCKAD DSECT
         AGO   .GENFLD
.NODSECT ANOP
IEDQCKAD DS    0D
.GENFLD  ANOP
*
*        CHECKPOINT/RESTART ADDRESS VECTOR TABLE
*
CAVTTCWA DS    A                        ADDRESS OF TCAM CHECKPOINT
*                                       WORKAREA
CAVTNWA  DS    A                        WORKAREA FOR 3705
*                                       CHECKPOINT/RESTART
CAVTWTG  DS    XL1                      WHERE TO GO AFTER A 3705
*                                       CHECKPOINT I/O
CAVTFLGS DS    XL1                      CHECKPOINT/RESTART FLAGS
CAVTRSV1 DS    XL2                      RESERVED
CAVTWL1  DS    0CL16                    WAIT LIST WITH TCAM WITH OR
*                                       WITHOUT 3705 CHECKPOINT
CAVTTQE  DS    A                        ECB FOR TCAM CKPT QUEUE
CAVTEOL1 DS    XL1                      END OF LIST - TCAM CKPT ONLY
CAVTTIOE DS    AL3                      ECB FOR TCAM CKPT I/O
CAVTWL2  DS    0CL8                     WAIT LIST WITH ONLY 3705 CKPT
CAVTEOL2 DS    XL1                      END OF LIST - NO 3705 CKPT I/O
*                                       STARTED
CAVTNQE  DS    AL3                      ECB FOR 3705 CKPT QUEUE
CAVTEOL3 DS    XL1                      END OF LIST - 3705 CKPT I/O
*                                       STARTED
CAVTNIOE DS    AL3                      ECB FOR 3705 CKPT I/O
CAVTCRIO DS    A .                      ADDRESS OF 3705 CHECKPOINT/
*                                        RESTART I/O ROUTINE
CAVTCKTR DS    XL2                      TCAM CKPT TRACE OFFSET @OZ31115
CAVTNTR  DS    XL2                      3705 CKPT TRACE OFFSET @OZ31115
CAVTSIZE EQU   *-IEDQCKAD               SIZE OF CHECKPOINT AVT
         MEND  */
*%PLSTCAVT : ;
* DECLARE
* 1 IEDQCKAD BDY(DWORD) BASED(RCAVT),
*/*                                                                  */
*/*      CHECKPOINT/RESTART ADDRESS VECTOR TABLE                     */
*/*                                                                  */
*  2 CAVTTCWA PTR(31),                  /* ADDRESS OF TCAM CHECKPOINT
*                                          WORKAREA                  */
*  2 CAVTNWA  PTR(31),                  /* WORKAREA FOR 3705
*                                          CHECKPOINT/RESTART        */
*  2 CAVTWTG  BIT(8),                   /* WHERE TO GO AFTER A 3705
*                                          CHECKPOINT I/O            */
*  2 CAVTFLGS BIT(8),                   /* CHECKPOINT/RESTART FLAGS  */
*  2 *        CHAR(2),                  /* RESERVED                  */
*  2 CAVTWL1,                           /* WAIT LIST WITH TCAM WITH OR
*                                          WITHOUT 3705 CHECKPOINT   */
*   3 CAVTTQE  PTR(31),                 /* ECB FOR TCAM CKPT QUEUE   */
*   3 CAVTEOL1 BIT(8),                  /* EOL - TCAM CKPT ONLY      */
*   3 CAVTTIOE PTR(24),                 /* ECB FOR TCAM CKPT I/O     */
*   3 CAVTWL2,                          /* WAIT LIST WITH ONLY
*                                          3705 CHPT                 */
*    4 CAVTEOL2 BIT(8),                 /* EOL - NO 3705 CKPT I/O
*                                          STARTED                   */
*    4 CAVTNQE  PTR(24),                /* ECB FOR 3705 CKPT QUEUE   */
*    4 CAVTEOL3 BIT(8),                 /* END OF LIST - 3705 CKPT I/O
*                                          STARTED                   */
*    4 CAVTNIOE PTR(24),                /* ECB FOR 3705 CKPT I/O     */
*  2 CAVTCRIO PTR(31);                  /* ADDRESS OF 3705 CHECKPOINT
*                                          /RESTART I/O ROUTINE      */
*  2 CAVTCKTR FIXED(16);                /* OFFSET TO TCAM CHECKPOINT
*                                          TRACE TABLE       @OZ31115*/
*  2 CAVTNTR FIXED(16);                 /* OFFSET TO 3705 CHECKPOINT
*                                          TRACE TABLE       @OZ31115*/
*%CAVTSIZE='LENGTH(IEDQCKAD)';          /* SIZE OF CHECKPOINT AVT    */
./ ADD NAME=TCCWD
*        %GOTO CCWPLS;                  /* BILINGUAL HEADER
         MACRO
         TCCWD
.*A000000-999999                                               @X02X5X0
.*A060000,360000                                                 S99228
.*C070000                                                        X02004
.*A377000,565000-570000                                          X02004
.*A377000,660000                                               @Y17XAXF
.*C070000                                                      @Y17XAXF
IEDQCCW  DSECT
*                                                              @Y17XAXF
*        CCW DSECT, TCAM 10, 03-04-76                          @Y17XAXF
*                                                              @Y17XAXF
CCW      EQU   IEDQCCW
CCWOPCDE DS    XL1 .                    COMMAND CODE
*        C O M M A N D   C O D E S
CCWPOLL  EQU   X'09' .                  POLL (AUTOPOLL)
CCWSENSE EQU   X'04' .                  SENSE
CCWIPL   EQU   X'05' .                  IPL A 3705             @Y17XAXF
CCWPREP  EQU   X'06' .                  PREPARE
CCWINHIB EQU   X'0A' .                  READ INHIBIT
CCWTIC   EQU   X'08' .                  TIC
CCWWRITE EQU   X'01' .                  WRITE
CCWREAD  EQU   X'02' .                  READ
CCWDIAL  EQU   X'29' .                  DIAL
CCWDISAB EQU   X'2F' .                  DISABLE
CCWENAB  EQU   X'27' .                  ENABLE
CCWBREAK EQU   X'0D' .                  BREAK
CCWNOP   EQU   X'03' .                 NO -OP COMMAND
CCWSEL   EQU   X'0B'                    3270 SELECT              S99228
CCWRDM   EQU   X'06'                    3270 READ MODIFIED       S99228
CCWEAU   EQU   X'0F'                    3270 EAU COMMAND         S99228
CCWREAL  EQU   X'80'                    REAL TIC INDICATOR FLAG  X02004
CCWBRK   EQU   X'09' .                  3705 WRITE BREAK       @Y17XAXF
CCWWS0   EQU   X'31' .                  WRITE START ZERO       @Y17XAXF
CCWWS1   EQU   X'51' .                  WRITE START ONE        @Y17XAXF
CCWRS0   EQU   X'32' .                  READ START ZERO        @Y17XAXF
CCWRS1   EQU   X'52' .                  READ START ONE         @Y17XAXF
CCWTICR  EQU   X'88' .                  DATA ADDR & TIC ADDR INITIAL
*                                                              @Y17XAXF
CCWRRS   EQU   X'93' .                  RESTART RESET          @Y17XAXF
*
CCWADDR  DS    AL3 .                    DATA ADDRESS
*
CCWFLAGS DS    XL1 .                    CCW FLAGS
*        C C W   F L A G S
CCWCD    EQU   X'80' .                  CHAIN DATA
CCWCC    EQU   X'40' .                  COMMAND CHAIN
CCWSLI   EQU   X'20' .                  SUPPRESS INCORRECT LENGTH
CCWSKIP  EQU   X'10' .                  SKIP
CCWPCI   EQU   X'08' .                  PCI
CCWIDA   EQU   X'04'                    INDIRECT ADDRESS LIST    X02004
*                                       IS PRESENT               X02004
*
         DS    XL1 .                    UNUSED BYTE OF CCW
*
CCWCOUNT DS    XL2 .                    BYTE COUNT  (DATA TRANSFER)
CCWLEN   EQU   *-IEDQCCW                CCW LENGTH             @Y17XAXF
         MEND
*        */
*%CCWPLS:;                          /*                       @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      CCW STRUCTURE, TCAM 10, 03-04-76                    @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*DECLARE                            /*                       @Y17XAXF*/
*  1 IEDQCCW BASED,                 /* CCW                   @Y17XAXF*/
*    2 CCW      CHAR(8),            /* CCW                   @Y17XAXF*/
*      3 CCWOPCDE BIT(8),           /* COMMAND CODE          @Y17XAXF*/
*      3 CCWADDR  PTR(24) BDY(BYTE), /* DATA ADDRESS         @Y17XAXF*/
*      3 CCWFLAGS BIT(8),           /* CCW FLAGS             @Y17XAXF*/
*        4 CCWCD   BIT(1),          /* CHAIN DATA            @Y17XAXF*/
*        4 CCWCC   BIT(1),          /* COMMAND CHAIN         @Y17XAXF*/
*        4 CCWSLI  BIT(1),          /* SUPPRESS INCORRECT    @Y17XAXF*/
*                                   /* LENGTH                @Y17XAXF*/
*        4 CCWSKIP BIT(1),          /* SKIP                  @Y17XAXF*/
*        4 CCWPCI  BIT(1),          /* PCI                   @Y17XAXF*/
*        4 CCWIDA  BIT(1),          /* INDIRECT ADDRESS LIST @Y17XAXF*/
*                                   /* IS PRESENT            @Y17XAXF*/
*        4 *       BIT(2),          /* RESERVED              @Y17XAXF*/
*      3 CCWRSV   BIT(8),           /* UNUSED                @Y17XAXF*/
*      3 CCWCOUNT FIXED(15) BDY(BYTE); /* BYTE COUNT         @Y17XAXF*/
*%CCWLEN='LENGTH(IEDQCCW)';         /* LENGTH OF CCW         @Y17XAXF*/
*/*      CCWOPCDE COMMAND CODES                              @Y17XAXF*/
* DCL CCWPOLL  BIT(8) CONSTANT('09'X);/* POLL (AUTOPOLL)     @Y17XAXF*/
* DCL CCWSENSE BIT(8) CONSTANT('04'X);/* SENSE               @Y17XAXF*/
* DCL CCWIPL   BIT(8) CONSTANT('05'X);/* IPL A 3705          @Y17XAXF*/
* DCL CCWPREP  BIT(8) CONSTANT('06'X);/* PREPARE             @Y17XAXF*/
* DCL CCWINHIB BIT(8) CONSTANT('0A'X);/* READ INHIBIT        @Y17XAXF*/
* DCL CCWTIC   BIT(8) CONSTANT('08'X);/* TIC                 @Y17XAXF*/
* DCL CCWWRITE BIT(8) CONSTANT('01'X);/* WRITE               @Y17XAXF*/
* DCL CCWREAD  BIT(8) CONSTANT('02'X);/* READ                @Y17XAXF*/
* DCL CCWDIAL  BIT(8) CONSTANT('29'X);/* DIAL                @Y17XAXF*/
* DCL CCWDISAB BIT(8) CONSTANT('2F'X);/* DISABLE             @Y17XAXF*/
* DCL CCWENAB  BIT(8) CONSTANT('27'X);/* ENABLE              @Y17XAXF*/
* DCL CCWBREAK BIT(8) CONSTANT('0D'X);/* BREAK               @Y17XAXF*/
* DCL CCWNOP   BIT(8) CONSTANT('03'X);/* NO-OP COMMAND       @Y17XAXF*/
* DCL CCWSEL   BIT(8) CONSTANT('0B'X);/* 3270 SELECT         @Y17XAXF*/
* DCL CCWRDM   BIT(8) CONSTANT('06'X);/* 3270 READ MODIFIED  @Y17XAXF*/
* DCL CCWEAU   BIT(8) CONSTANT('0F'X);/* 3270 EAU COMMAND    @Y17XAXF*/
* DCL CCWREAL  BIT(8) CONSTANT('80'X);/* REAL TIC INDICATOR  @Y17XAXF*/
*                                     /* FLAG                @Y17XAXF*/
* DCL CCWBRK   BIT(8) CONSTANT('09'X);/* 3705 WRITE BREAK    @Y17XAXF*/
* DCL CCWWS0   BIT(8) CONSTANT('31'X);/* WRITE START ZERO    @Y17XAXF*/
* DCL CCWWS1   BIT(8) CONSTANT('51'X);/* WRITE START ONE     @Y17XAXF*/
* DCL CCWRS0   BIT(8) CONSTANT('32'X);/* READ START ZERO     @Y17XAXF*/
* DCL CCWRS1   BIT(8) CONSTANT('52'X);/* READ START ONE      @Y17XAXF*/
* DCL CCWTICR  BIT(8) CONSTANT('88'X);/* DATA ADDR & TIC ADDR INITIAL
*                                                            @Y17XAXF*/
* DCL CCWRRS   BIT(8) CONSTANT('93'X);/* RESTART RESET       @Y17XAXF*/
./ ADD NAME=TCD0D
*        %GOTO CD0PLS;            /* BILINGUAL HEADER
         MACRO
         TCD0D
.*A000000-999999                                               @Y17XAXF
*
*        FID0 COMMAND CODES
*
         SPACE
CD0READ  EQU   X'01' .             READ COMMANDS
*
*        READ MODIFIERS
*
CD0R     EQU   X'00' .                  READ NORMAL
CD0RB    EQU   X'01' .                  READ BLOCK
CD0RM    EQU   X'02' .                  READ MESSAGE
CD0RT    EQU   X'03' .                  READ TRANSMISSION
CD0RD    EQU   X'04' .                  READ TRANSMISSION DISCONNECT
CD0RI    EQU   X'05'                    READ WITH INVITE
         SPACE
CD0WRT   EQU   X'02' .             WRITE COMMAND
*
*        WRITE MODIFIERS
*
CD02     EQU   X'00' .                  WRITE NORMAL
CD0WM    EQU   X'01' .                  WRITE WITH EOM
CD0WT    EQU   X'02' .                  WRITE WITH EOT
CD0WD    EQU   X'03' .                  WRITE WITH DISCONNECT
CD0WR    EQU   X'06' .                  WRITE WITH READ
CD0WI    EQU   X'07' .                  WRITE WITH INVITE
CD0WC    EQU   X'08'                    WRITE WITH CONTACT
CD0WCM   EQU   X'09' .                  WRITE WITH CONTACT(EXT)
CD0WCT   EQU   X'0A' .                  WRITE WITH CONTACT(EOT)
CD0WCD   EQU   X'0B' .                  WRITE WITH CONTACT AND DISCONN
CD0WCR   EQU   X'0E' .                  WRITE WITH CONTACT AND READ
         SPACE
CD0TEST  EQU   X'03' .             TEST COMMAND
*
*        TEST MODIFIERS
*
CD0T     EQU   X'00' .                  TEST DEVICE NORMAL
CD0TC    EQU   X'01' .                  TEST DEVICE WITH CONTACT
CD0TD    EQU   X'02' .                  TEST DEVICE WITH DISCONNECT
CD0TCD   EQU   X'03' .                  TEST DEV WITH CDNTACT & DISCONN
CD0TI    EQU   X'04' .                  TEST LINE NORMAL
CD0TIC   EQU   X'05' .                  TEST LINE WITH CONTACT
CD0TID   EQU   X'06' .                  TEST LINE WITH DISCONNECT
CD0TICD  EQU   X'07' .                  TEST LINE WITH CONTACT & DISCON
         SPACE
CD0REST  EQU   X'04' .             RESTART COMMAND
*
*        RESTART MODIFIERS
*
CD0RLINE EQU   X'00' .                  LINE
CD0RDEV  EQU   X'01' .                  DEVICE
CD0RLSES EQU   X'02' .                  REP SESSION INIT INFO FOR LINE
CD0RDSES EQU   X'04' .                  REP SESSION INIT INFO FOR DEV
         SPACE
CD0INV   EQU   X'05' .             INVITE COMMAND
*
*        INVITE MODIFIERS
*
CD0I     EQU   X'00' .                  INVITE NORMAL
CD0IB    EQU   X'01' .                  INVITE BLOCK
CD0IM    EQU   X'02' .                  INVITE MESSAGE
CD0IT    EQU   X'03' .                  INVITE TRANSMISSION
CD0ID    EQU   X'04' .                  INVITE TRANSMISSION WITH DISCON
CD0IA    EQU   X'05' .                  INVITE WITH AUTO RESTART
CD0IP    EQU   X'06' .                  INVITE PERPETUAL
         SPACE
CD0CONT  EQU   X'06' .             CONTACT COMMAND
*
*        CONTACT MODIFIERS
*
CD0C     EQU   X'00' .                  CONTACT NORMAL
CD0CRSID EQU   X'01' .                  CONTACT/RETURN RSID
         SPACE
CD0DISC  EQU   X'07' .             DISCONNECT COMMAND
*
*        DISCONNECT MODIFIERS
*
CD0D     EQU   X'00' .                  DISCONNECT NORMAL
CD0DI    EQU   X'01' .                  DISCONNECT WITH INVITE
CD0DE    EQU   X'02' .                  DISCONNECT WITH END-OF-CALL
CD0DEI   EQU   X'03' .                  DISCONNECT WITH EOC AND INVITE
         SPACE
CD0CTRL  EQU   X'08' .             CONTROL COMMAND
*
*        CONTROL MODIFIERS
*
CD0CDISL EQU   X'01' .                  DISPLAY LINE STATUS
CD0CRSII EQU   X'02' .                  REP SESS INIT INFO FOR A LINE
CD0CAI   EQU   X'03' .                  ACTIVATES INVITES
CD0CDI   EQU   X'04' .                  DEACTIVATES INVITES
CD0CCSII EQU   X'05' .                  COPY SESS INIT INFO
CD0CDDS  EQU   X'06' .                  DISPLAY DEVICE STATUS
CD0CRDS  EQU   X'07' .                  REQ DEV STATISTICS
CD0CDS   EQU   X'08' .                  DISPLAY STORAGE
CD0CSTD  EQU   X'09' .                  SET TIME AND DATE
CD0CSCMS EQU   X'0A' .                  SET CHANNEL MODE SECONDARY
CD0CDLNA EQU   X'0B' .                  DISPLAY LINE'S NETWORK ADDR
CD0CALT  EQU   X'0C' .                  ACTIVATE LINE TRACE
CD0CTLT  EQU   X'0D' .                  TERMINATE LINE TRACE
CD0CCMS  EQU   X'12' .                  CHANGE MODEM SPEED
CD0CSCMP EQU   X'15' .                  SET CHANNEL MODE PRIMARY
CD0CCDM  EQU   X'18' .                  COPY DESTINATION MODE
CD0CPD   EQU   X'1C' .                  PHYSICAL DISCONNECT
CD0CCDSI EQU   X'21' .                  COPY DEV SESSION INFO
CD0CRDSI EQU   X'22' .                  REP DEV SESSION INFO
CD0CREL  EQU   X'41' .                  RESET ERROR LOCK
CD0CRDQ  EQU   X'42' .                  RESET DEVICE QUEUES
CD0CRCMR EQU   X'43' .                  REQ CONTROLMODE RESET
CD0CRI   EQU   X'44' .                  RESET IMMEDIATE
CD0CROTT EQU   X'48' .                  RESET ONLINE TERMINAL TEST
CD0CSTB  EQU   X'4A' .                  SWITCH TO BACKUP
CD0CSBTP EQU   X'4C' .                  SWITCH FROM BACKUP TO PRIMARY
CD0CRINV EQU   X'4D' .                  RESET INVITE
CD0CRC   EQU   X'50' .                  RESET CONDITIONAL
CD0CREOC EQU   X'60' .                  RESET AT ENDOF COMMAND
CD0UNSIP EQU   X'77' .                  UNSOLICITED RESPONSE
CD0CSEP  EQU   X'82' .                  SWITCH TO EP MODE
CD0CSNCP EQU   X'83' .                  SWITCH TO NCP MODE
CD0CCLSP EQU   X'84' .                  CHGE LINE SERVICE-SEEKING PAUSE
CD0CCLNR EQU   X'85' .                  CHGE LINE NEG POLL RSP LIMIT
CD0CCSL  EQU   X'86' .                  CHGE SESSION LIMIT
CD0CCDTL EQU   X'8C' .                  CHGE DEV TRANSMISSION LIMIT
CD0CMBHS EQU   X'8D' .                  MODIFY BLK HANDLER SET ASSOC
CD0CAL   EQU   X'98' .                  ACTIVATE LINE
CD0CD0   EQU   X'99' .                  DEACTIVATE ORDERLY
CD0CSDM  EQU   X'9A' .                  SET DESTINATION MODE
CD0CDLH  EQU   X'C2' .                  DEACTIVATE LINE HALT
         MEND
*        */
*%CD0PLS:;
*/*                                                                  */
*/*      FID0 COMMAND CODES                                          */
*/*                                                                  */
*
*DCL CD0READ  BIT(8) CONSTANT('01'X); /* READ COMMAND                */
*/*                                                                  */
*/*      READ MODIFIERS                                              */
*/*                                                                  */
*DCL CD0R      BIT(8) CONSTANT('00'X); /*  READ NORMAL               */
*DCL CD0RB     BIT(8) CONSTANT('01'X); /*  READ BLOCK                */
*DCL CD0RM     BIT(8) CONSTANT('02'X); /*  READ MESSAGE              */
*DCL CD0RT     BIT(8) CONSTANT('03'X); /*  READ TRANSMISSION         */
*DCL CD0RD     BIT(8) CONSTANT('04'X); /*  READ TRANSMISSION DISCON  */
*DCL CD0RI     BIT(8) CONSTANT('05'X); /*  READ WITH INVITE          */
*
*DCL CD0WRT    BIT(8) CONSTANT('02'X); /* WRITE COMMAND              */
*/*                                                                  */
*/*      WRITE MODIFIERS                                             */
*/*                                                                  */
*DCL CD0W      BIT(8) CONSTANT('00'X); /*  WRITE NORMAL              */
*DCL CD0WM     BIT(8) CONSTANT('01'X); /*  WRITE WITH EOM            */
*DCL CD0WT     BIT(8) CONSTANT('02'X); /*  WRITE WITH EOT            */
*DCL CD0WD     BIT(8) CONSTANT('03'X); /*  WRITE WITH DISCONNECT     */
*DCL CD0WR     BIT(8) CONSTANT('06'X); /*  WRITE WITH READ           */
*DCL CD0WI     BIT(8) CONSTANT('07'X); /*  WRITE WITH INVITE         */
*DCL CD0WC     BIT(8) CONSTANT('08'X); /*  WRITE WITH CONTACT        */
*DCL CD0WCM    BIT(8) CONSTANT('09'X); /*  WRITE WITH CONTACT(EXT)   */
*DCL CD0WCT    BIT(8) CONSTANT('0A'X); /*  WRITE WITH CONTACT(EOT)   */
*DCL CD0WCD    BIT(8) CONSTANT('0B'X); /* WRITE WITH CONTACT & DISCON*/
*DCL CD0WCR    BIT(8) CONSTANT('0E'X); /*  WRITE WITH CONTACT & READ */
*
*DCL CD0TEST  BIT(8) CONSTANT('03'X); /* TEST COMMAND                */
*/*                                                                  */
*/*      TEST MODIFIERS                                              */
*/*                                                                  */
*DCL CD0T     BIT(8) CONSTANT('00'X); /*  TEST DEVICE NORMAL         */
*DCL CD0TC    BIT(8) CONSTANT('01'X); /*  TEST DEVICE WITH CONTACT   */
*DCL CD0TD    BIT(8) CONSTANT('02'X); /*  TEST DEVICE WITH DISCONN   */
*DCL CD0TCD   BIT(8) CONSTANT('03'X); /*  TEST DEV WITH CONTACT & DIS*/
*DCL CD0TI    BIT(8) CONSTANT('04'X); /*  TEST LINE NORMAL           */
*DCL CD0TIC   BIT(8) CONSTANT('05'X); /*  TEST LINE WITH CONTACT     */
*DCL CD0TID   BIT(8) CONSTANT('06'X); /*  TEST LINE WITH DISCONNECT  */
*DCL CD0TICD  BIT(8) CONSTANT('07'X); /*  TEST LINE WITH CONT & DISC */
*
*/*                                                                  */
*/*      RESTART MODIFIERS                                           */
*/*                                                                  */
*DCL CD0RLINE BIT(8) CONSTANT('00'X); /*  LINE                       */
*DCL CD0RDEV  BIT(8) CONSTANT('01'X); /*  DEVICE                     */
*DCL CD0RLSES BIT(8) CONSTANT('02'X); /*  REP SESS INIT INFO FOR LINE*/
*DCL CD0RDSES BIT(8) CONSTANT('04'X); /*  REP SESS INIT INFO FOR DEV */
*
*DCL CD0INV   BIT(8) CONSTANT('05'X); /* INVITE COMMAND              */
*/*                                                                  */
*/*      INVITE MODIFIERS                                            */
*/*                                                                  */
*DCL CD0I     BIT(8) CONSTANT('00'X); /*  INVITE NCORMAL             */
*DCL CD0IB    BIT(8) CONSTANT('01'X); /*  INVITE BLOCK               */
*DCL CD0IM    BIT(8) CONSTANT('02'X); /*  INVITE MESSAGE             */
*DCL CD0IT    BIT(8) CONSTANT('03'X); /*  INVITE TRANSMISSION        */
*DCL CD0ID    BIT(8) CONSTANT('04'X); /*  INVITE TRANS WITH DISC     */
*DCL CD0IA    BIT(8) CONSTANT('05'X); /*  INVITE WITH AUTO RESTART   */
*DCL CD0IP    BIT(8) CONSTANT('06'X); /*  INVITE PERPETUAL           */
*
*DCL CD0CONT  BIT(8) CONSTANT('06'X); /* CONTACT COMMAND             */
*/*                                                                  */
*/*      CONTACT MODIFIERS                                           */
*/*                                                                  */
*DCL CD0C     BIT(8) CONSTANT('00'X); /* CONTACT NORMAL              */
*DCL CD0CRSID BIT(8) CONSTANT('01'X); /* CONTACT/RETURN RSID         */
*
*DCL CD0DISC  BIT(8) CONSTANT('07'X); /* DISCONNECT COMMAND          */
*/*                                                                  */
*/*      DISCONNECT MODIFIERS                                        */
*/*                                                                  */
*DCL CD0D     BIT(8) CONSTANT('00'X); /*  DISCONNECT NORMAL          */
*DCL CD0DI    BIT(8) CONSTANT('01'X); /*  DISCONNECT WITH INVITE     */
*DCL CD0DE    BIT(8) CONSTANT('02'X); /*  DISCONNECT WITH END-OF-CALL*/
*DCL CD0DEI   BIT(8) CONSTANT('03'X); /*  DISCONNECT WITH EOC AND INV*/
*
*DCL CD0CTRL  BIT(8) CONSTANT('08'X); /* CONTROL COMMAND             */
*/*                                                                  */
*/*      CONTROL MODIFIERS                                           */
*/*                                                                  */
*DCL CD0CDISL BIT(8) CONSTANT('01'X); /*  DISPLAY LINE STATUS        */
*DCL CD0CRSII BIT(8) CONSTANT('02'X); /*  REP SESS INIT INFO FOR LINE*/
*DCL CD0CA8   BIT(8) CONSTANT('03'X); /*  ACTIVATES INVITES          */
*DCL CD0CDI   BIT(8) CONSTANT('04'X); /*  DEACTIVATES INVITES        */
*DCL CD0CCSII BIT(8) CONSTANT('05'X); /*  COPY SESS INIT INFO        */
*DCL CD0CDDS  BIT(8) CONSTANT('06'X); /*  DISPLAY DEVICE STATUS      */
*DCL CD0CRDS  BIT(8) CONSTANT('07'X); /*  REQ DEVICE STATISTICS      */
*DCL CD0CDS   BIT(8) CONSTANT('08'X); /*  DISPLAY STORAGE            */
*DCL CD0CSTD  BIT(8) CONSTANT('09'X); /*  SET TIME AND DATE          */
*DCL CD0CSCMS BIT(8) CONSTANT('0A'X); /*  SET CHANNEL MODE SECONDARY */
*DCL CD0CDLNA BIT(8) CONSTANT('0B'X); /*  DISPLAY LINE'S NETWORK ADDR*/
*DCL CD0CALT  BIT(8) CONSTANT('0C'X); /*  ACTIVATE LINE TRACE        */
*DCL CD0CTLT  BIT(8) CONSTANT('0D'X); /*  TERMINATE LINE TRACE       */
*DCL CD0CCMS  BIT(8) CONSTANT('12'X); /*  CHANGE MODEM SPEED         */
*DCL CD0CSCMP BIT(8) CONSTANT('15'X); /*  SET CHANNEL MODE PRIMARY   */
*DCL CD0CCDM  BIT(8) CONSTANT('18'X); /*  COPY DESTINATION MODE      */
*DCL CD0CPD   BIT(8) CONSTANT('1C'X); /*  PHYSICAL DISCONNECT        */
*DCL CD0CCDSI BIT(8) CONSTANT('21'X); /*  COPY DEV SESSION INFO      */
*DCL CD0CRDSI BIT(8) CONSTANT('22'X); /*  REP DEV SESSION INFO       */
*DCL CD0CREL  BIT(8) CONSTANT('41'X); /*  RESET ERROR LOCK           */
*DCL CD0CRD1  BIT(8) CONSTANT('42'X); /*  RESET DEVICE QUEUES        */
*DCL CD0CRCMR BIT(8) CONSTANT('43'X); /*  REQ CONTROL MODE RESET     */
*DCL CD0CRI   BIT(8) CONSTANT('44'X); /*  RESET IMMEDIATE            */
*DCL CD0CROTT BIT(8) CONSTANT('48'X); /*  RESET ONLINE TERMINAL TEST */
*DCL CD0CSTB  BIT(8) CONSTANT('4A'X); /*  SWITCH TO BACKUP           */
*DCL CD0CSBTP BIT(8) CONSTANT('4C'X); /*  SWITCH FROM BACKUP TO PRIM */
*DCL CD0CRINV BIT(8) CONSTANT('4D'X); /*  RESET INVITE               */
*DCL CD0CRC   BIT(8) CONSTANT('50'X); /*  RESET CONDITIONAL          */
*DCL CD0CREOC BIT(8) CONSTANT('60'X); /*  RESET AT END OF COMMAND    */
*DCL CD0UNSIP BIT(8) CONSTANT('77'X); /*  UNSOLICITED RESPONSE       */
*DCL CD0CSEP  BIT(8) CONSTANT('82'X); /*  SWITCH TO EP MODE          */
*DCL CD0CSNCP BIT(8) CONSTANT('83'X); /*  SWITCH TO NCP MODE         */
*DCL CD0CCLSP BIT(8) CONSTANT('84'X); /*  CHGE LINE SERV-SEEKING PAUS*/
*DCL CD0CCLNR BIT(8) CONSTANT('85'X); /*  CHGE LINE NEG POLL RSP LIM */
*DCL CD0CCSL  BIT(8) CONSTANT('86'X); /*  CHGE SESSION LIMIT         */
*DCL CD0CCDTL BIT(8) CONSTANT('8C'X); /*  CHGE DEV TRANSMISSION LIMIT*/
*DCL CD0CMBHS BIT(8) CONSTANT('8D'X); /*  MOD BLK HANDLER SET ASSOC  */
*DCL CD0CAL   BIT(8) CONSTANT('98'X); /*  ACTIVATE LINE              */
*DCL CD0CD0   BIT(8) CONSTANT('99'X); /*  DEACTIVATE ORDERLY         */
*DCL CD0CSDM  BIT(8) CONSTANT('9A'X); /*  SET DESTINATION MODE       */
*DCL CD0CDLH  BIT(8) CONSTANT('C2'X); /*  DEACTIVATE LINE HALT       */
./ ADD NAME=TCD1D
*        %GOTO CD1PLS;                /* BILINGUAL HEADER
         MACRO
         TCD1D
.*A000000-999999                                               @Y17XAXF
*
*        DATA FLOW CONTROL COMMANDS
*
CD1LSTAT EQU   X'04' .             LUSTAT
CD1RTR   EQU   X'05' .             READY TO RECEIVE
CD1QEC   EQU   X'80' .             QUIESCE AT END OF CHAIN
CD1QC    EQU   X'81' .             QUIESCE COMPLETE
CD1REL1  EQU   X'82' .             RELEASE QUIESCE
CD1CANCL EQU   X'83' .             CANCEL
CD1CHASE EQU   X'84' .             CHASE
CD1SHUTD EQU   X'C0' .             SHUTDOWN
CD1SHUTC EQU   X'C1' .             SHUTDOWN COMPLETE
CD1RSHUT EQU   X'C2' .             REQUEST SHUTDOWN
CD1BID   EQU   X'C8' .             BID
CD1SIG   EQU   X'C9' .             SIGNAL
         SPACE 2
*
*        SESSION CONTROL COMMANDS
*
CD1ACTLU EQU   X'0D' .             ACTIVATE LU
CD1DATLU EQU   X'0E' .             DEACTIVATE LU
CD1ACTPU EQU   X'11' .             ACTIVATE PU
CD1DATPU EQU   X'12' .             DEACTIVATE PU
CD1BIND  EQU   X'31' .             BIND
CD1UBIND EQU   X'32' .             UNBIND
CD1SDT   EQU   X'A0' .             START DATA TRAFFIC
CD1CLEAR EQU   X'A1' .             CLEAR
CD1STSN  EQU   X'A2' .             SET AND TEST SEQ NUMBERS
CD1RQR   EQU   X'A3' .             REQUEST RECOVERY
         SPACE 2
*
*        NETWORK CONTROL COMMANDS
*
CD1PREPS EQU   X'02' .             PREPARE SWITCH
CD1SWCOM EQU   X'03' .             SWITCH COMPLETE
CD1ANS   EQU   X'06' .             AUTO NETWORK SHUTDOWN
CD1ANSC  EQU   X'07' .             ANS COMPLETE
CD1INITC EQU   X'50' .             INIT COMPLETE
CD1SWNCP EQU   X'51' .               SWITCH TO NCP
CD1SWEP  EQU   X'52' .               SWITCH TO EP
         EJECT
*
*
*        NETWORK SERVICES FID1 COMMANDS
*
*
CD1NETS  EQU   X'01' .             NETWORK SERVICES IND
         SPACE
*
*        CONFIGURATION SERVICES FID1 COMMANDS
*
CD1CONFS EQU   X'02' .             CONFIGURATION SERV IND
         SPACE
CD1CONT  EQU   X'01' .               CONTACT
CD1DCONT EQU   X'02' .               DISCONTACT
CD1IPLI  EQU   X'03' .               IPL INITIAL
CD1IPLT  EQU   X'04' .               IPL TEXT
CD1IPLF  EQU   X'05' .               IPL FINAL
CD1DMPI  EQU   X'06' .               DUMP INITIAL
CD1DMPT  EQU   X'07' .               DUMP TEXT
CD1DMPF  EQU   X'08' .               DUMP FINAL
CD1RPO   EQU   X'09' .               REMOTE POWER OFF
CD1ACTLK EQU   X'0A' .               ACTIVATE LINK
CD1DACLK EQU   X'0B' .               DEACTIVATE LINK
CD1CESLW EQU   X'0C' .               CONTROL ENTER SLOWDOWN
CD1CXSLW EQU   X'0D' .               CONTROL EXIT SLOWDOWN
CD1CONNO EQU   X'0E' .               CONNECT OUT
CD1ABC   EQU   X'0F' .               ABANDON CONNECTION
CD1SETTD EQU   X'01' .               SET TIME AND DATE
CD1SETV  EQU   X'11' .               SET CONTROL VECTOR
CD1SENV  EQU   X'12' .               SENSE CONTROL VECTOR
CD1ESLOW EQU   X'14' .               ENTERING SLOWDOWN
CD1EXSLW EQU   X'15' .               EXITING SLOWDOWN
CD1ACI   EQU   X'16' .               ACTIVATE CONNECT IN
CD1DCI   EQU   X'17' .               DEACTIVATE CONNECT IN
CD1ACO   EQU   X'18' .               ABANDON CONNECT OUT
CD1ANA   EQU   X'19' .               ASSIGN NETWORK ADDR
CD1FNA   EQU   X'1A' .               FREE NETWORK ADDR
CD1REQD  EQU   X'1B' .               REQUEST DISCONTACT
CD1CONCT EQU   X'80' .               CONTACTED
CD1INOP  EQU   X'81' .               INOPERATIVE
CD1REQC  EQU   X'84' .               REQUEST CONTACT
         SPACE
*
*        MAINTENANCE SERVICES FID1 COMMANDS
*
CD1MAINT EQU   X'03' .             MAINTENANCE SERV IND
         SPACE
CD1EX    EQU   X'01' .               EXECUTE TEST
CD1ACTTR EQU   X'02' .               ACTIVATE TRACE
CD1DACTR EQU   X'03' .               DEACTIVATE TRACE
CD1RTP   EQU   X'80' .               REQUEST TEST PROCEDURE
CD1RMS   EQU   X'81' .               RECORD MAINTENANCE STATS  @YM07259
CD1RTTD  EQU   X'82' .               RECORD TEST DATA
CD1RTRD  EQU   X'83' .               RECORD TRACE DATA
         SPACE
*
*        MEASUREMENT SERVICES FID1 COMMANDS
*
CD1MEAS  EQU   X'04' .             MEASUREMENT SERVICES IND
         SPACE
CD1STM   EQU   X'01' .               START MEASUREMENT
CD1SPM   EQU   X'02' .               STOP MEASUREMENT
CD1RMD   EQU   X'80' .               RECORD MEASUREMENT DATA
         SPACE
*
*        SESSION SERVICES FID1 COMMANDS
*
CD1SESS  EQU   X'06' .             SESSION SERVICES IND
         SPACE
CD1CINIT EQU   X'01' .               CONTROL INITIATE
CD1CTERM EQU   X'02' .               CONTROL TERMINATE
CD1NSPRO EQU   X'04' .               NS PROC ERROR
CD1INITS EQU   X'81' .               INITIATE SELF
CD1INITO EQU   X'80' .               INITIATE OTHER
CD1TERMO EQU   X'82' .               TERMINATE OTHER
CD1TERMS EQU   X'83' .               TERMINATE SELF
CD1BINDF EQU   X'85' .               BIND FAILURE
CD1SESST EQU   X'86' .               SESSION STARTED
CD1UBNDF EQU   X'87' .               UNBIND FAILURE
CD1SESEN EQU   X'88' .               SESSION ENDED
         SPACE
*
*        NCP ONLY COMMAND CATEGORY
*
CD1PRE   EQU   X'00' .               3705 ONLY INDICATOR
         SPACE
CD1CGTRL EQU   X'01' .               CHANGE DEVICE TRANS LIMIT
CD1CGNPL EQU   X'02' .               CHANGE NEGATIVE POLL LIMIT
CD1CGSSL EQU   X'03' .               CHANGE SESSION LIMIT
CD1CGSSP EQU   X'04' .               CHANGE SERVICE SEEKING PAUSE
         MEND
*        */
*%CD1PLS:;
*/*                                                                  */
*/*      DATA FLOW CONTROL COMMANDS                                  */
*/*                                                                  */
* DCL CD1LSTAT BIT(8) CONSTANT('04'X);  /* LUSTAT                    */
* DCL CD1RTR   BIT(8) CONSTANT('05'X);  /* READY TO RECEIVE          */
* DCL CD1QEC   BIT(8) CONSTANT('80'X);  /* QUIESCE AT END OF CHAIN   */
* DCL CD1QC    BIT(8) CONSTANT('81'X);  /* QUIESCE COMPLETE          */
* DCL CD1RELQ  BIT(8) CONSTANT('82'X);  /* RELEASE QUIESCE           */
* DCL CD1CANCL BIT(8) CONSTANT('83'X);  /* CANCEL                    */
* DCL CD1CHASE BIT(8) CONSTANT('84'X);  /* CHASE                     */
* DCL CD1SHUTD BIT(8) CONSTANT('C0'X);  /* SHUTDOWN                  */
* DCL CD1SHUTC BIT(8) CONSTANT('C1'X);  /* SHUTDOWN COMPLETE         */
* DCL CD1RSHUT BIT(8) CONSTANT('C2'X);  /* REQUEST SHUTDOWN          */
* DCL CD1BID   BIT(8) CONSTANT('C8'X);  /* BID                       */
* DCL CD1SIG   BIT(8) CONSTANT('C9'X);  /* SIGNAL                    */
         @SPACE;
*/*                                                                  */
*/*      SESSION CONTROL COMMANDS                                    */
*/*                                                                  */
* DCL CD1ACTLU BIT(8) CONSTANT('0D'X);  /* ACTIVATE LU               */
* DCL CD1DATLU BIT(8) CONSTANT('0E'X);  /* DEACTIVATE LU             */
* DCL CD1ACTPU BIT(8) CONSTANT('11'X);  /* ACTIVATE PU               */
* DCL CD1DATPU BIT(8) CONSTANT('12'X);  /* DEACTIVATE PU             */
* DCL CD1BIND  BIT(8) CONSTANT('31'X);  /* BIND                      */
* DCL CD1UBIND BIT(8) CONSTANT('32'X);  /* UNBIND                    */
* DCL CD1SDT   BIT(8) CONSTANT('A0'X);  /* START DATA TRAFFIC        */
* DCL CD1CLEAR BIT(8) CONSTANT('A1'X);  /* CLEAR                     */
* DCL CD1STSN  BIT(8) CONSTANT('A2'X);  /* SET AND TEST SEQ NUMBERS  */
* DCL CD1RQR   BIT(8) CONSTANT('A3'X);  /* REQUEST RECEIVED          */
         @SPACE;
*/*                                                                  */
*/*      NETWORK CONTROL COMMANDS                                    */
*/*                                                                  */
* DCL CD1PREPS BIT(8) CONSTANT('02'X);  /* PREPARE SWITCH            */
* DCL CD1SWCOM BIT(8) CONSTANT('03'X);  /* SWITCH COMPLETE           */
* DCL CD1ANS   BIT(8) CONSTANT('06'X);  /* AUTO NETWORK SHUTDOWN     */
* DCL CD1ANSC  BIT(8) CONSTANT('07'X);  /* ANS COMPLETE              */
* DCL CD1INITC BIT(8) CONSTANT('50'X);  /* INIT COMPLETE             */
* DCL CD1SWNCP BIT(8) CONSTANT('51'X);  /*   SWITCH TO NCP           */
* DCL CD1SWEP  BIT(8) CONSTANT('52'X);  /*   SWITCH TO EP            */
*/*                                                                  */
*/*                                                                  */
*/*      NETWORK SERVICES FID1 COMMANDS                              */
*/*                                                                  */
*/*                                                                  */
* DCL CD1NETS  BIT(8) CONSTANT('01'X);  /* NETWORK SERV IND          */
         @SPACE;
*/*                                                                  */
*/*      CONFIGURATION SERVICES FID1 COMMANDS                        */
*/*                                                                  */
* DCL CD1CONFS BIT(8) CONSTANT('02'X);  /* CONFIGURATION SERV IND    */
         @SPACE;
* DCL CD1CONT  BIT(8) CONSTANT('01'X);  /*   CONTACT                 */
* DCL CD1DCONT BIT(8) CONSTANT('02'X);  /*   DISCONTACT              */
* DCL CD1IPLI  BIT(8) CONSTANT('03'X);  /*   IPL INITIAL             */
* DCL CD1IPLT  BIT(8) CONSTANT('04'X);  /*   IPL TEXT                */
* DCL CD1IPLF  BIT(8) CONSTANT('05'X);  /*   IPL FINAL               */
* DCL CD1DMPI  BIT(8) CONSTANT('06'X);  /*   DUMP INITIAL            */
* DCL CD1DMPT  BIT(8) CONSTANT('07'X);  /*   DUMP TEXT               */
* DCL CD1DMPF  BIT(8) CONSTANT('08'X);  /*   DUMP FINAL              */
* DCL CD1RPO   BIT(8) CONSTANT('09'X);  /*   REMOTE POWER OFF        */
* DCL CD1ACTLK BIT(8) CONSTANT('0A'X);  /*   ACTIVATE LINK           */
* DCL CD1DACLK BIT(8) CONSTANT('0B'X);  /*   DEACTIVATE LINK         */
* DCL CD1CESLW BIT(8) CONSTANT('0C'X);  /*   CONTROL ENTER SLOWDOWN  */
* DCL CD1CXSLW BIT(8) CONSTANT('0D'X);  /*   CONTROL EXIT SLOWDOWN   */
* DCL CD1CONNO BIT(8) CONSTANT('0E'X);  /*   CONNECT OUT             */
* DCL CD1ABC   BIT(8) CONSTANT('0F'X);  /*   ABANDON CONNECTION      */
* DCL CD1SETTD BIT(8) CONSTANT('01'X);  /*   SET TIME AND DATE       */
* DCL CD1SETV  BIT(8) CONSTANT('11'X);  /*   SET CONTROL VECTOR      */
* DCL CD1SENV  BIT(8) CONSTANT('12'X);  /*   SENSE CONTROL VECTOR    */
* DCL CD1ESLOW BIT(8) CONSTANT('14'X);  /*   ENTERING SLOWDOWN       */
* DCL CD1EXSLW BIT(8) CONSTANT('15'X);  /*   EXITING SLOWDOWN        */
* DCL CD1ACI   BIT(8) CONSTANT('16'X);  /*   ACTIVATE CONNECT IN     */
* DCL CD1DCI   BIT(8) CONSTANT('17'X);  /*   DEACTIVATE CONNECT IN   */
* DCL CD1ACO   BIT(8) CONSTANT('18'X);  /*   ABANDON CONNECT OUT     */
* DCL CD1ANA   BIT(8) CONSTANT('19'X);  /*   ASSIGN NETWORK ADDR     */
* DCL CD1FNA   BIT(8) CONSTANT('1A'X);  /*   FREE NETWORK ADDR       */
* DCL CD1REQD  BIT(8) CONSTANT('1B'X);  /*   REQUEST DISCONTACT      */
* DCL CD1CONCT BIT(8) CONSTANT('80'X);  /*   CONTACTED               */
* DCL CD1INOP  BIT(8) CONSTANT('81'X);  /*   INOPERATIVE             */
* DCL CD1REQC  BIT(8) CONSTANT('84'X);  /*   REQUEST CONTACT         */
         @SPACE;
*/*                                                                  */
*/*      MAINTENANCE SERVICES FID1 COMMANDS                          */
*/*                                                                  */
* DCL CD1MAINT BIT(8) CONSTANT('03'X);  /* MAINTENANCE SERV IND      */
         @SPACE;
* DCL CD1EX    BIT(8) CONSTANT('01'X);  /*   EXECUTE TEST            */
* DCL CD1ACTTR BIT(8) CONSTANT('02'X);  /*   ACTIVATE TRACE          */
* DCL CD1DACTR BIT(8) CONSTANT('03'X);  /*   DEACTIVATE TRACE        */
* DCL CD1RTP   BIT(8) CONSTANT('80'X);  /*   REQUEST TEST PROCEDURE  */
* DCL CD1RMS   BIT(8) CONSTANT('81'X);  /*   RECORD MAINT STATISTICS */
* DCL CD1RTTD  BIT(8) CONSTANT('82'X);  /*   RECORD TEST DATA        */
* DCL CD1RTRD  BIT(8) CONSTANT('83'X);  /*   RECORD TRACE DATA       */
         @SPACE;
*/*                                                                  */
*/*      MEASUREMENT SERVICES FID1 COMMANDS                          */
*/*                                                                  */
* DCL CD1MEAS  BIT(8) CONSTANT('04'X);  /*   MEASUREMENT SERV IND    */
         @SPACE;
* DCL CD1STM   BIT(8) CONSTANT('01'X);  /*   START MEASUREMENT       */
* DCL CD1STP   BIT(8) CONSTANT('02'X);  /*   STOP MEASUREMENT        */
* DCL CD1RMD   BIT(8) CONSTANT('80'X);  /*   RECORD MEASUREMENT DATA */
         @SPACE;
*/*                                                                  */
*/*      SESSION SERVICES FID1 COMMANDS                              */
*/*                                                                  */
* DCL CD1SESS  BIT(8) CONSTANT('06'X);  /* SESSION SERV IND          */
         @SPACE;
* DCL CD1CINIT BIT(8) CONSTANT('01'X);  /*   CONTROL INITIATE        */
* DCL CD1CTERM BIT(8) CONSTANT('02'X);  /*   CONTROL TERMINATE       */
* DCL CD1NSPRO BIT(8) CONSTANT('04'X);  /*   NS PROC ERROR           */
* DCL CD1INITS BIT(8) CONSTANT('81'X);  /*   INITIATE SELF           */
* DCL CD1INITO BIT(8) CONSTANT('80'X);  /*   INITIATE OTHER          */
* DCL CD1TERMO BIT(8) CONSTANT('82'X);  /*   TERMINATE OTHER         */
* DCL CD1TERMS BIT(8) CONSTANT('83'X);  /*   TERMINATE SELF          */
* DCL CD1BINDF BIT(8) CONSTANT('85'X);  /*   BIND FAILURE            */
* DCL CD1SESST BIT(8) CONSTANT('86'X);  /*   SESSION STARTED         */
* DCL CD1UBNDF BIT(8) CONSTANT('87'X);  /*   UNBIND FAILURE          */
* DCL CD1SESEN BIT(8) CONSTANT('88'X);  /*   SESSION ENDED           */
         @SPACE;
*/*                                                                  */
*/*      3705 ONLY COMMAND CATEGORY                                  */
*/*                                                                  */
* DCL CD1PRE   BIT(8) CONSTANT('00'X);  /* 3705 ONLY INDICATOR       */
         @SPACE;
* DCL CD1CGTRL BIT(8) CONSTANT('01'X);  /*   CHANGE DEVICE TRANS LIM */
* DCL CD1CGNPL BIT(8) CONSTANT('02'X);  /*   CHANGE NEG POLL LIMIT   */
* DCL CD1CGSSL BIT(8) CONSTANT('03'X);  /*   CHANGE SESSION LIMIT    */
* DCL CD1CGSSP BIT(8) CONSTANT('04'X);  /*   CHANGE SERV SEEKING PAU */
*/*                                                                  */
*/*      3 BYTE NETWORK SERVICE COMMANDS                             */
*/*                                                                  */
* DCL CD1XSCV  BIT(24) CONSTANT('010211'X); /* SET CONTROL VECTOR    */
* DCL CD1XALK  BIT(24) CONSTANT('01020A'X); /* ACTIVATE LINK         */
* DCL CD1XDLK  BIT(24) CONSTANT('01020B'X); /* DEACTIVATE LINK       */
* DCL CD1XCON  BIT(24) CONSTANT('010201'X); /* CONTACT               */
* DCL CD1XCTD  BIT(24) CONSTANT('010280'X); /* CONTACTED             */
* DCL CD1XDSC  BIT(24) CONSTANT('010202'X); /* DISCONTACT            */
* DCL CD1XINP  BIT(24) CONSTANT('010281'X); /* INOPERATIVE           */
* DCL CD1XENS  BIT(24) CONSTANT('010214'X); /* ENTERING SLOWDOWN     */
*                                           /*               @YM07042*/
* DCL CD1XEXS  BIT(24) CONSTANT('010215'X); /* EXITING SLOWDOWN      */
* DCL CD1XRDC  BIT(24) CONSTANT('01021B'X); /* REQUEST DISCONTACT    */
* DCL CD1XINS  BIT(24) CONSTANT('010681'X); /* INIT SELF             */
* DCL CD1XTMS  BIT(24) CONSTANT('010683'X); /* TERMINATE SELF        */
* DCL CD1XSND  BIT(24) CONSTANT('010688'X); /* SESSION ENDED         */
* DCL CD1XCIN  BIT(24) CONSTANT('010601'X); /* CINIT                 */
* DCL CD1XCTM  BIT(24) CONSTANT('010602'X); /* CTERM                 */
* DCL CD1XNSP  BIT(24) CONSTANT('010604'X); /* NS PROC ERROR         */
* DCL CD1XBFL  BIT(24) CONSTANT('010685'X); /* BIND FAILURE          */
* DCL CD1XSST  BIT(24) CONSTANT('010686'X); /* SESSION STARTED       */
* DCL CD1XEXT  BIT(24) CONSTANT('010301'X); /* EXECUTE TEST          */
* DCL CD1XATR  BIT(24) CONSTANT('010302'X); /* ACTIVATE TRACE        */
* DCL CD1XRSR  BIT(24) CONSTANT('010334'X); /* DPLY STOR REQ@ZM47883*/
* DCL CD1XMNT  BIT(24) CONSTANT('010381'X); /* REC MAINT STATISTICS  */
* DCL CD1XTST  BIT(24) CONSTANT('010382'X); /* RECORD TEST DATA      */
* DCL CD1XTRC  BIT(24) CONSTANT('010383'X); /* RECORD TRACE DATA     */
* DCL CD1XDTL  BIT(24) CONSTANT('010001'X); /* CHGE DEV TRANS LIMIT  */
* DCL CD1XNPL  BIT(24) CONSTANT('010002'X); /* CHGE NEG POLL LIMIT   */
* DCL CD1XSNL  BIT(24) CONSTANT('010003'X); /* CHGE SESSION LIMIT    */
* DCL CD1XSSP  BIT(24) CONSTANT('010004'X); /* CHGE SERV SEEKNG PAUSE*/
./ ADD NAME=TCKPD
*        %GOTO PLSCKP;                  /*
         MACRO
         TCKPD &MERLIN
.* CHANGE ACTIVITY = AS FOLLOWS:
.*C008000                                                       SA51078
.*A303000,305000,637000                                         SA51078
.*C498000-516000,598000                                          S99240
.*A595000                                                        S99240
.*A463000                                                       SA67099
.*A451000                                                      @OX16402
.*C472000                                                      @OX16402
         SPACE
*        UPDATED  10/4/72                                       SA51078
         SPACE
*THIS IS A DSECT OF THE CHECKPOINT WORK AREA POINTED TO BY AVTCKGET
*THIS IS USED ONLY BY CHECKPOINT ROUTINES.
*THE LENGTH IS VARIABLE AND DEPENDS ON THE INTRO OPERANDS CKREQS
*AND CPRCDS.  THE SPACE IS OBTAINED BY IGG01941 VIA GETMAIN.
         SPACE
IEDQCKPD DSECT
CKPSAVE1 DS    18F .                    SAVE AREA FOR LOAD MODULE
         SPACE 3
CKPIOB   EQU   * .                      IOB FOR CKPT DISK I/O
CKPIOFL1 DS    C .
CKPIOFL2 DS    C .
CKPIOSN0 DS    C .
CKPIOSN1 DS    C .
CKPIOECB DS    0A .                     ADDRESS OF ECB         @Y17XAXF
CKPIOECC DS    XL1 .                    COMPLETION CODE FOR I/O
*                                                              @Y17XAXF
CKPIOCOM EQU   X'7F' .                  COMPLETED SUCCESSFULLY @Y17XAXF
         DS    AL3 .                    RESERVED               @Y17XAXF
CKPIOFL3 DS    C .                      I/O ERROR FLAGS
CKPIOCSW DS    CL7 .                    CSW
CKPIOSIO DS    C .                      START I/O CONDITION CODES
CKPIOCPA DS    AL3 .                    CHANNEL PROGRAM ADDRESS
         DS    C
CKPIODCB DS    AL3 .                    DCB ADDRESS
         DS    C .                      REPOSITION MODIFIER
CKPIORST DS    AL3 .                    RESTART ADDR
CKPIOBCI DS    H .                      BLOCK CNT INCREMENT
CKPIORC  DS    H .                      ERROR COUNT
CKPIOM   DS    C .                      SEEK ADDRESS
CKPIOBB  DS    CL2
CKPIOCC  DS    CL2
CKPIOHH  DS    CL2
CKPIOR   DS    C
         SPACE
CKPECB   DS    F .                      ECB POSTED BY IOS
CKPEXCP  DS    F .                      CURRENT RECORD BEING WRITTN
CKPCNVRT EQU   * .                      USED FOR CVD INSTRUCTION
CKPECBL  EQU   * .                      ECB LIST FOR WAIT
CKPEPLOC DS    D .                      EPLOC FOR LOAD MACRO
CKPIOQF  DS    F .                      DISK I/O QUEUE-FIRST RECORD
CKPIOQL  DS    F .                      I/O QUEUE-LAST RECORD
         SPACE 3
CKPNDRB  EQU   X'80' .                  INDICATES NO DISK RECORD       X
                                        BUILT FOR NEXT REQUEST ELEM
CKPLREB  DS    F .                      ADDRESS OF LAST REQUEST        X
                                        ELEMENT FOR WHICH RECORD       X
                                        WAS BUILT
         SPACE 3
CKPLDRB  DS    F .                      ADDRESS OF LAST DISK RECORD    X
                                        BUILT
         SPACE 3
*THIS AREA US USED BY CKECKPOINT SUBTASK FOR 3705 CHECKPOINT
         SPACE
         ORG   CKPEXCP
         DS    CL7 .                    RESERVED               @Y17XAXF
CKPENCDE DS    XL1 .                    ENTRY CODE             @Y17XAXF
CKPIOERR EQU   40 .                     3705 ECECKPOINT IO ERROR
*                                                              @Y17XAXF
CKPGETFL EQU   4 .                      GETMAIN FOR 3705 RESOURCE
*                                        RECORD FAILED         @Y17XAXF
CKPEODAT EQU   8 .                      END OF 3705 CHECKPOINT DATA SET
*                                        REACHED               @Y17XAXF
CKPNTTE  DS    A .                      ADDRESS OF TERMINAL ENTRY
*                                        PREFIX FOR THE 3705   @Y17XAXF
CKPNDEVF DS    F .                      ADDRESS OF DEVICE DEPENDENT
*                                        FIELDS FOR THE 3705   @Y17XAXF
CKPNSELT DS    0F .                     SELECTOR FIELDS        @Y17XAXF
CKPSLVAL DS    0CL3 .                   CURRENT SELECT VALUES USED IN
*                                        SELECT VALUE SHIFT    @Y17XAXF
CKPCUSEL DS    AL1 .                    CURRENT SELECT VALUE   @Y17XAXF
CKPSLNEW DS    CL3 .                    NEW SELECT VALUES TO BE SHIFTED
*                                                              @Y17XAXF
CKPNTRK  DS    H .                      ALTERNATE RECORD INDICATOR
*                                                              @Y17XAXF
CKPNRSID DS    H .                      RESOURCE TO BE CHECKPOINTED OR
*                                        RESTARTED             @Y17XAXF
CKPNOTFY EQU   X'0A' .                  SELECT VALUE FOR REQUEST FOR
*                                        NOTIFICATION          @Y17XAXF
         ORG
         SPACE
*THIS AREA IS USED ONLY AT CHECKPOINT OPEN TIME
         SPACE
         ORG   CKPEXCP
         SPACE
*COUNT FIELD FOR WRITE COUNT,KEY AND DATA
         SPACE 3
CKPCYLNO DS    XL2 .                    CYLINDER NUMBER
CKPHEDNO DS    XL2 .                    HEAD NUMBER
CKPRCDNO DS    X .                      RECORD NUMBER
CKPKEYLN DS    X .                      KEY LENGTH
CKPDATLN DS    XL2 .                    DATA LENGTH
CKPCTTRC DS    F .                      CURRENT ENTRY IN CKREQ-TTR     X
                                        TABLE (USED AT RESTART)
CKPDATIM DS    2F .                     DATE,TIME OF TOTAL CKPT        X
                                        USED TO COMPARE                X
                                        WITH INCIDENT CKPT'S
CKPIPERE DS    H .                      NUMBER OF INCIDENTS OR         X
                                        CKREQ IN ONE ENVIRONMENT       X
                                        RECORD SEGMENT
CKPCTTRA DS    F .                      ADDRESS OF TTR OF THE          X
                                        ENVIRONMENT RECORD BEING       X
                                        USED FOR RESTART
         ORG
         SPACE 3
CKPSECTR DS    0X .                     SECTOR ID FOR SET SECTOR CMD415
CKPCTTRB DS    F .                      BEGINNING OF CKREQ TTR TBL
CKPCPARM DS    2F .                     PARAMETERS FOR CONVERT RTN     X
                                        ADDRESS OF DEB AND ADDRESS     X
                                        FOR CONVERSION RESULT
         AIF   ('&MERLIN' NE '3330').SKP1                          0419
CKPPARM2 DS    F .                      PARAMETER FOR SECTOR CNVRT 0415X
                                        ROUTINE (UCB TYPE AND ADDR)0415
.SKP1    ANOP                                                      0419
CKPCRLEN DS    X .                      LENGTH OF CONTROL RECORD
CKPSWCH1 DS    X .                      SWITCH FOR COMPARING           X
                                        QCB TO SEE IF IT HAS BEEN      X
                                        CHECKPOINTED
CKPSET1  EQU   X'1' .                   USED TO INVERTQCB SWITCH
CKPSWCH2 DS    X .                      SWITCH FOR COMPARING WITH      X
                                        INVITATION LIST TO SEE IF      X
                                        IT HAS BEEN CHECKPOINTED
CKPSET2  EQU   X'04' .                  USED TO INVERT INVLIST SW
CKPERRCT DS    X .                      COUNT OF ERRORS ENCOUNTERD 1109X
                                        IGG01943,ENVIRONMENT RCDS  1109
         SPACE 3
*CHANNEL PROGRAM USED FOR CHECKPOINT DATA SET
         SPACE
         DS    0D .
CKPCCWS  EQU   * .                      CHANNEL PROGRAM
CKPSEEKC DS    D .                      SEEK CYLINDER
         AIF   ('&MERLIN' NE '3330').SKP2                          0419
CKPSETSC DS    D .                      SET SECTOR OR NO-OP        0415
.SKP2    ANOP                                                      0419
CKPSCHID DS    D .                      SEARCH ID
CKPTIC   DS    D .                      TIC
CKPRW    DS    0D .                     READ/WRITE             @Y17XAXF
CKPRWCMD DS    XL1 .                    COMMAND CODE           @Y17XAXF
CKPRWADD DS    AL3 .                    DATA ADDRESS           @Y17XAXF
CKPRWFLG DS    XL1 .                    FLAGS                  @Y17XAXF
         DS    XL1 .                    RESERVED               @Y17XAXF
CKPWRBC  DS    H .                      BYTE COUNT             @Y17XAXF
CKPCCWND EQU   * .                      END OF CHANNEL PROGRAM     0415
CKPREAD  EQU   6 .                      READ DATA CCW
CKPWRITE EQU   5 .                      WRITE DATA CCW
CKPWCKD  EQU   29 .                     WRITE COUNT KEY AND DATA
CKPSET   EQU   35 .                     SET SECTOR CCW             0415
CKPNOOP  EQU   3 .                      NO-OP CCW-USED FOR NON-    0415X
                                        MERLIN SUPPORT
         SPACE
         ORG   CKPTIC+5 .               THIS PART OF TIC COMMAND IS    X
                                        NOT USED BY OS
CKPTTRLT DS    XL3 .                    TTR OF LAST TOTAL SEG WRITN
         ORG
         SPACE 3
*GETMAIN PARAMETER LIST
         SPACE
         DS    0F
CKPGETML DS    XL10 .                   GETMAIN LIST
CKPWKALN DS    H .                      LENGTH OF CKPT WORK AREA
         SPACE 3
*MESSAGE BUFFER USED FOR WTO
         SPACE
         DS    0F
CKPMSG   EQU   *
CKPMSGLN DS    XL2 .                    LENGTH OF MSG BUFFER
         DS    XL2
CKPMSGTX DS    XL37 .                   TEXT OF MESSAGE
CKPMSGTP DS    XL20 .                   TYPE OF CHECKPOINT RECORD
CKPMSGGL DS    XL4 .                    GETMAIN LENGTH WHICH COULD     X
                                        NOT BE SATISFIED
CKPMSGL  EQU   *-CKPMSG
         ORG   CKPMSGTP+6
CKPMSGPN DS    XL8
         ORG
         SPACE 3
*THE MESSAGE BUFFER IS SOMETIMES USED FOR TEMPORARY STORAGE
         SPACE
         ORG   CKPMSGTX
CKPSAVE2 DS    15F
CKPTRMAD DS    F .                      ADDRESS OF TERM ENTRY-USED     *
                                        TO GET IT ON WORD BOUNDARY
         ORG   CKPMSGTP
CKPRCDSR DS    H .                      NO. RECDS(SEGMENTS)REQUIRED    X
                                        FOR ONE ENV. CHECKPOINT
CKPTRKLN DS    H .                      LENGTH OF DATA ON A TRACK  0415X
                                        PRECEDING THE CURRENT RECRD0415
CKPTRKSA DS    H .                      NO.AVAILABLE TRACKS (IN        X
                                        DATA SET)
         ORG
         SPACE 3
*CHECKPOINT CONTROL RECORD -WRITTEN EVERY TIME AN ENVIRONMENT
*RECORD IS WRITTEN
         SPACE
         DS    0F
CKPCNTLR EQU   * .                      BEGINNING OF CONTROL RCD
         SPACE 3
CKPFLAGS DS    X .                      CONTROL RECORD FLAGS
CKPNORML EQU   X'80' .                  INDICATES NORMAL CLOSEDOWN
CKPOPNEN EQU   X'40' .                  OPEN-ENVIRONMENT FLAG
CKPFSCN1 EQU   X'40' .                  FIFO SCAN 1 IN PROGRESS SA51078
CKPOPNIN EQU   X'20' .                  OPEN-INCIDENT FLAG
CKPFSCN2 EQU   X'20' .                  FIFO SCAN 2 IN PROGRESS SA51078
CKPOPNCR EQU   X'10' .                  OPEN CKREQ FLAG
CKPERR   EQU   X'08' .                  INDICATES NO ENVIORNMENT   0818X
                                        RECORDS ARE AVAIBLE-DISK ER0818
CKPSTAIN EQU   X'04' .                  VALUE OF STARTUP PARAMETER     X
                                        USED AT RESTART TO DETERMIN    X
                                        IF INV LISTS WERE CKPT
CKPOPTFN EQU   X'02' .                  OPTION FIELDS PRESENT FOR      X
                                        AT LEAST ONE SYNC PROCESS      X
                                        ENTRY
CKPOPCRD EQU   X'01' .                  INDICATES INCIDENT RECORDS 0803X
                                        PRESENT FOR OPERATOR CONTROL
CKPTTRCT DS    XL1 .                    INDEX FOR CURRENT ENV CKPT
CKPINCNT DS    X .                      TOTAL NUMBER OF INCIDENT       X
                                        RECORDS IN DATA SET
CKPINCNO DS    X .                      NO. OF INCIDENT RECORDS        X
                                        AVAILABLE FOR USE
CKPCRRNO DS    XL1 .                    NO. OF CKREQ RECORDS           X
                                        ON 1ST TRACK CONTAINING        *
                                        CKREQ RECORDS
CKPTTRCR DS    XL3 .                    TTR OF 1ST CKREQ RECORD
CKPINRNO DS    XL1 .                    NO. OF INCIDENT RECORDS        X
                                        RECORD ON 1ST TRACK            *
                                        CONTAINING INCIDENT RECORDS
CKPTTRIN DS    XL3 .                    TTR OF 1ST INCIDENT RECORD
CKPBPERR DS    H .                      BYTES PER ENVIRONMENT          X
                                        RECORD SEGMENT
CKPCKRQS DS    X .                      VALUE OF CKREQS FOR LAST       X
                                        STARTUP-USED AT RESTART        X
                                        INSTEAD OF VALUE IN AVT
CKPCPRCD DS    X .                      VALUE OF CPRCDS AT LAST        X
                                        STARTUP-USED AT RESTART        X
                                        INSTEAD OF VALUE IN AVT
         DS    0F .
CKPIPERT DS    X .                      NO. OF INCIDENT RCDS PER TR
CKPPRQNO EQU   * .                      MAXIMUM NUMBER OF PRIORITY     X
                                        LEVEL QUEUES USED BY A SYNC    X
                                        PROCESS ENTRY-USED BY 1942
CKPCPERT DS    X .                      NUMBER OF CKREQ RECORDS PER    X
                                        TRACK-DETERMINED BY 1942       X
                                        AFTER USING CKPPRQNO
CKPCKRLN DS    H .                      LENGTH OF CKREQ RECORD-        X
                                        DEPENDS ON OPTION FIELDS       X
                                        AND PRIORITY LEVEL QUEUES.
CKPRPERT DS    X .                      NO. OF ENVIRONMENT RECORD      X
                                        SEGMENTS PER TRACK
CKPTTRLI DS    XL3 .                    TTR OF LAST INCIDENT WRITTN
CKPINCLN DS    H .                      LENGTH OF INCIDENT RECORD
         AIF   ('&MERLIN' NE '3330').SKP3                          0419
CKPSECLT DS    H .                      DATA ON TRACK PRECEDING    0415X
                                        CURRENT ENV SEGMENT        0415
CKPSECLI DS    H .                      DATA ON TRACK PRECEDING    0415X
                                        CURRENT INCIDENT RECORD    0415
CKPSECCR DS    H .                      DATA ON TRACK PRECEDING    0415X
                                        1ST CKREQ RECORD
CKPSECIN DS    H .                      DATA ON TRACK PRECEDING    0415X
                                        1ST INCIDENT RECORD        0415
.SKP3    ANOP                                                      0419
CKPTTRT1 EQU   * .                      3 BYTE TTR FOR 1ST ENV         X
                                        ALL OTHER TTRS FOLLOW THIS
CKPSECT1 EQU   CKPTTRT1+3 .             DATA ON TRACK PRECEDING    0415X
                                        1ST SEG OF ENV RECORD      0415
         AIF   ('&MERLIN' NE '3330').SKP4                          0419
CKPTTRLN EQU   5 .                      LENGTH OF ENTRY FOR ENV RCD0415
         AGO   .TTRLN                                              0419
.SKP4    ANOP                                                      0419
CKPTTRLN EQU   3 .                      LENGTH OF ENTRY FOR ENV RCD0419
.TTRLN   ANOP                                                      0419
CKPCREND EQU   * .                      END OF CONTROL RECORD
         SPACE 3
*MAPPING FOR THE CONTROL RECORD FOR A 3705 CKECKPOINT DATA SET @Y17XAXF
         SPACE
         ORG   CKPCNTLR
         DS    H .                      RESERVED               @Y17XAXF
CKPTRSTA DS    XL1 .                    STATUS FLAGS           @Y17XAXF
CKPSWTCH DS    XL1 .                    SWITCHES               @Y17XAXF
CKPIPLTX DS    CL8 .                    IPL TEXT NAME          @Y17XAXF
CKPBLKSZ DS    H .                      BLOCK SIZE             @Y17XAXF
         DS    H .                      RESERVED               @Y17XAXF
CKPTRKCN DS    H .                      TRACK CONSTANT USED FOR
*                                        ALTERNATE TRACK ASSIGNMENT
*                                                              @Y17XAXF
         DS    H .                      RESERVED               @Y17XAXF
CKPBLKPT DS    AL1 .                    BLOCKS PER TRACK       @Y17XAXF
         DS    XL1 .                    RESERVED               @Y17XAXF
CKPDATTM DS    0CL8 .                   DATE AND TIME          @Y17XAXF
CKPDATE  DS    CL4 .                     DATE                  @Y17XAXF
CKPTIME  DS    CL4 .                     TIME                  @Y17XAXF
CKPBCKUP DS    CL8 .                    BACKUP NAME            @Y17XAXF
         ORG
         SPACE 3
*THE FOLLOWING EQUATE MAY BE VARIED IN ORDER TO CHANGE THE SIZE OF
*AN ENVIRONMENT RECORD SEGMENT. THE ONLY MODULE WHICH MUST BE
*REASSEMBLED IS IGG01949.
         SPACE
CKPENVL  EQU   300 .                    LENGTH OF ENVIRONMENT RCD      X
                                        SEGMENT
         SPACE 3
*EQUATED CONSTANTS USED BY THE CHECKPOINT MODULES
         SPACE
CKPPOST  EQU   X'40' .                  ECB POSTED
CKP101   EQU   256 .                    CONSTANT USED TO BUMP TRACK
CKP100   EQU   100
CKPCKRNO EQU   3 .                      NO. EXTRA CKREQ RCDS-DSK ERR
CKPCMDCH EQU   X'42' .                  INDICATE COMMAND CHAINING
CKPRETNL EQU   4 .                      RETURN OFFSET TO CHECKPOINT
*                                        EXECUTOR FOR NO ADDITIONAL
*                                        LOAD REQUESTS         @Y17XAXF
CKPCKREQ EQU   48 .                     OFFSET FOR CKREQ ROUTINE
CKPENV   EQU   56 .                     OFFSET FOR ENV ROUTINE
CKPIOQM  EQU   64 .                     OFFSET FOR I/O QUEUE MANAGR
CKPDIOR  EQU   72 .                     OFFSET FOR DISK I/O ROUTINE
CKPNOTIF EQU   80 .                     OFFSET FOR NOTIF RTN
CKPNOCOR EQU   88 .                     OFFSET FOR NO AVAIL CORE
CKPNOINC EQU   96 .                     OFFSET FOR INCIDENT OVERFLO
CKPCNCP  EQU   104 .                    OFFSET FOR 3705 CHECKPOINT
*                                         ROUTINE              @Y17XAXF
CKPRNCP  EQU   112 .                    OFFSET FOR 3705 RESTART ROUTINE
*                                                              @Y17XAXF
CKPCNCPW EQU   120 .                    OFFSET FOR 3705 CHECKPOINT
*                                        WRITE ROUTINE         @Y17XAXF
CKPOPLTL EQU   10 .                     LENGTH OF OPT LENGTH ENTRY
CKP1BYTE EQU   8 .                      USED TO SHIFT 1 BYTE       0415
CKP2BYTE EQU   16 .                     USED TO SHIFT 2 BYTES      0415
CKP3BYTE EQU   24 .                     USED TO SHIFT 3 BYTES      0415
CKPCVTPT EQU   16 .                     ADDRESS OF CVT POINTER     0415
CKPCNTTR EQU   28 .                     DISPLACEMENT OF TTR CONVERT0415X
                                        ROUTINE ADDR IN CVT        0415
CKPCNSEC EQU   232 .                    DISPLACEMENT OF SECTOR     0415X
                                        ROUTINE ADDR IN CVT        0415
CKPDELMT EQU   C'*' .                   DELIMITER PLACED IN ENV RCD0422X
                                        BETWEEN DATA FOR EACH TERM 0422
CKPQDELM EQU   X'6C'                    DELIMITER FOR QCB ON
*                                        ENVIRONMENT RECORD    @OX16402
CKPDELLN EQU   1 .                      LENGTH OF DELIMITER FIELD  0422
CKPLTRLN EQU   1 .                      LENGTH OF LCBTRACE FLD @Y17XAXF
         SPACE 3
*LENGTHS OF CHECKPOINTED FIELDS
         SPACE
CKPSEQCT EQU   6 .                      LENGTH OF SEQ NUMBERS AND      *
                                        COUNT OF MSGS ON QUEUE
CKPSEQLN EQU   4 .                      LENGTH OF SEQUENCE NO.FIELD
CKPSENSE EQU   1                        LENGTH OF SENSE FIELD   SA67099
CKPMCTLN EQU   2 .                      LENGTH OF COUNT FIELD
CKPTRMLN EQU   1 .                      LENGTH OF TRM STATUS FIELD
CKPQCBLN EQU   21 .                     LENGTH OF PRIORITY LEVEL       X
                                        QCB DISK POINTERS
CKPMQBLN EQU   6                        LENGTH OF MASTER QCB
*                                        FIELDS PLUS DELIMITER @OX16402
CKPQBKLN EQU   3 .                      LENGTH OF QBACK POINTER
CKPLCBLN EQU   2 .                      LENGTH OF LCB STAT INFO    0918
CKPDCBLN EQU   1 .                      LENGTH OF DCB FIELDS       0731
CKPEND   EQU   * .                      END OF CKP WORK AREA
CKPLNGTH EQU   CKPEND-IEDQCKPD .        LNGTH OF FIXED PORTION OF      *
                                        CKPT WORK AREA
         SPACE 3
*THE OPERATOR CONTROL INCIDENT CHECKPOINT RECORD CONTAINS THE DATA 0629
*DEFINED IN OPERATOR CONTROL DSECT-OPCCKELE.   THE FOLLOWING DATA IS
*INCLUDED IN THE 32 BYTES .
         SPACE
CKPOCODE EQU   0 .                      COMMAND OPERATION TYPE
CKPOCSWC EQU   1 .                      OPERATION SUB-TYPE
CKPOCFLG EQU   2                        FLAG BYTE
         SPACE 1
CKPOCREL EQU   3 .                      RELATIVE LINE NUMBER
CKPALL   EQU   X'00' .                  INDICATES 'ALL' - NO RLN
         SPACE 1
CKPOCLNO EQU   10                       HEX LINE NUMBER
CKPOCNAM EQU   20 .                     DDNAME FOR START/STOP CMD
CKPOCLST EQU   28                       ILIST ADDRESS
         SPACE 3
*FORMAT OF CKREQ-TTR TABLE    IT IS LOCATED AT THE END OF THE WORK
*AREA.  THE NUMBER OF ENTRIES DEPENDS ON THE VALUE OF CKREQS ON
*INTRO; A CONSTANT VALUE IS ADDED TO IT FOR DISK ERRORS.
         SPACE
         AIF   ('&MERLIN' NE '3330').SKP5                          0419
CKPCTTRL EQU   8 .                      LNGTH CKREQ TTR TABLE ENTRY0415
         AGO   .CTTRL                                              0419
.SKP5    ANOP                                                      0419
CKPCTTRL EQU   6 .                      LNGTH CKREQ TTR TABLE ENTRY0419
.CTTRL   ANOP                                                      0419
CKPCTFLG EQU   0 .                      OFFSET TO FLAG IN CKREQ-TTR
CKPCTACT EQU   X'80' .                  ENTRY IS ACTIVE
CKPCTDER EQU   X'40' .                  ENTRY HAS DISK ERROR
CKPCTTTR EQU   1 .                      OFFSET TO TTR IN CKREQ-TTR
CKPCTOFF EQU   4 .                      OFFSET TO TERM OFFSET
CKPCTSEC EQU   6 .                      DATA ON TRACK PRECEDING    0415X
                                        THIS CKREQ RECORD          0415
         EJECT
*DSECT FOR INCIDENT OR ENVIRONMENT CHECKPOINT DISK RECORD
         SPACE
IEDQCDRD DSECT
CDRDATE  DS    F .                      DATE OF CHECKPOINT
CDRTIME  DS    F .                      TIME WHEN RECORD WRITTEN
CDRKEY   DS    XL1 .                    KEY FIELD
CDRLCB   EQU   0 .                      KEY FOR LCB
CDRCHNGT EQU   4 .                      KEY FOR CHNGT
CDROPC   EQU   16 .                     KEY FOR OPERATOR CONTROL
CDRCKREQ EQU   24 .                     KEY FOR CKREQ
CDRTOTAL EQU   28 .                     KEY FOR TOTAL
CDRTOTLC EQU   32 .                     KEY FOR TOTAL-CONTINUED
CDRTTRLI DS    XL3                      TTR OF LAST INCIDENT,AT    0922X
                                        TIME OF THIS ENV CKPT
CDRDATA  EQU   * .                      BEGINNING OF DATA IN SEG
CDRTINFO EQU   CDRDATA-IEDQCDRD .       LENGTH OF TOTAL INFO-NON-      X
                                        DATA
         SPACE 3
*FORMAT OF INCIDENT RECORDS
         SPACE
         ORG   CDRTTRLI                                            0922
CDRSTAT  DS    XL1 .                    TERMINAL STATUS
CDROFFS  DS    H .                      OFFSET TO TERMNAME TABLE
CDRSEQIN DS    H .                      INPUT SEQUENCE NUMBER      1007
CDRSEQOU DS    H .                      OUTPUT SEQUENCE NUMBER     1007
         SPACE 3
CDROPTN  EQU   * .                      BEGINNING OF OPTIONS
         ORG   CDRDATA
CDROPCB  DS    F .                      BEGINNING OF OP CONTROL BLK
CDROPCBL EQU   36 .                     LENGTH OF OPERATOR CONTROL     X
                                        BLOCK
         SPACE 3
*CKREQ RECORD
         SPACE
         ORG   IEDQCDRD
CDRCKFLG DS    X .                      FLAG BITS
CDRCKRNC EQU   X'80' .                  CKREQ IS NOT COMPLETED
         DS    XL3 .                    USED FOR LINK -I/O QUEUE
CDRCKIN  DS    H .                      INPUT SEQUENCE NUMBER
CDRCKOUT DS    H .                      OUTPUT SEQUENCE NUMBER
*CDRKEY  EQU   *                        RECORD KEY
         DS    X .
         DS    X .                      USED ONLY FOR ALIGNMENT
CDRCKOFF DS    H .                      TERM OFFSET
CDRCKMSG DS    XL2 .                    QCB MSG COUNT
CDRCKQBC DS    XL3 .                    QBACK POINTER
CDRCKQCB DS    XL21 .                   QCB DISK POINTERS (THIS        X
                                        FIELD IS REPEATED FOR EACH     X
                                        PRIORITY LEVEL QCB)
CDRCKPQB DS    XL3 .                    PRILEVEL QBACK PTR      SA51078
CDRCKOPT EQU   * .                      OPTION FIELD
         EJECT
*DSECT FOR CHECKPOINT REQUEST ELEMENT(INCIDENT OR CKREQ).  THE
*ENVIRONMENT CHECKPOINT REQUEST ELEMENT IS DEFINED IN THE AVT.
         SPACE
IEDQCRED DSECT
CREKEY   DS    X .
CRELCB   EQU   X'00' .                  KEY FOR LCB FROM CHECKPT
CRECHNGT EQU   X'10' .                  KEY FOR TCHNG FROM APP PROG
CREREMVE EQU   X'20' .                  KEY FOR TIME DELAY QUEUE       X
                                        REMOVAL ELEMENT
CREOPC   EQU   X'40' .                  KEY FOR OPERATOR CONTRO
CRECKREQ EQU   X'60' .                  KEY FOR CKREQ FROM APP PROG
CRETOTAL EQU   X'70' .                  KEY FOR TOTAL-ALL SOURCES
CREINCOF EQU   X'80' .                  KEY FLAG-INCIDENT OVERFLOW
CRECNCP  EQU   X'D0' .                  KEY FOR 3705 CHECKPOINT
*                                                              @Y17XAXF
CRERNCP  EQU   X'E0' .                  KEY FOR 3705 RESTART   @Y17XAXF
CREQCBAD DS    XL3 .
CREPRI   DS    0XL1                     PRIORITY OF REQUEST ELEMENT
*                                        LINK OF REQUEST ELEMENT
*                                                              @Y17XAXF
CRELINK  DS    F .
CREECB   DS    F .                      ADDR OF ECB
CREDEB   EQU   * .                      DEB CHAIN FOR CKREQ
CREOFFS  DS    H .                      OFFSET OF TERMNAME ENTRY
         SPACE 3                                               @Y17XAXF
CKPAVT   DSECT                      CHECKPOINT AVT DSECT       @Y17XASA
CKPOPCON DS    CL2                  PRIMARY OP/CTL TERMINAL    @Y17XASA
CKPOPCIN DS    CL2                  PRIMARY OP/CTL TTCIN       @Y17XASA
CKPINTLV DS    CL2                  SYSTEM DELAY INTERVAL      @Y17XASA
CKPBIT1  DS    CL1                  AVTBIT1                    @Y17XASA
CKPBIT2  DS    CL1                  AVTBIT2                    @Y17XASA
CKPNADDR DS    CL4                  NON REUSE DISK NEXT ADDR   @Y17XASA
CKPRADDR DS    CL4                  REUSE DISK NEXT ADDR       @Y17XASA
CKPLODPT DS    CL4                  REUSE LOAD POINT FIELD     @Y17XASA
CKPSUBT  DS    CL1                  AVTSUBT SUBT= OPTION FIELD @Y17XASA
CKPIOTR  DS    CL1                  AVTIOTR IOTR= OPTION FIELD @Y17XASA
CKPAVTLN EQU   *-CKPAVT             LENGTH OF CKP AVT DSECT    @Y17XASA
         SPACE 3                                               @Y17XAXF
CKPNRES  DSECT                          FIELDS FOR NCP RESOURCE
*                                                              @Y17XACL
CKPSUBST DS    H                        SUBSTRUCT              @Y17XACL
CKPCOHRT DS    H                        COHORT                 @Y17XACL
CKPNFLG  DS    XL1                      FLAGS                  @Y17XACL
CKPREMB  EQU   X'80'                    REMEMBER               @Y17XACL
CKPRSACT EQU   X'40'                    RESOURCE ACTIVE        @Y17XACL
CKPEPMOD EQU   X'20'                    EP MODE                @Y17XACL
CKPLULOG EQU   X'10'                    ALLOW LOGON INDICATOR  @Y17XAXF
*        EQU   X'08'-X'01'              RESERVED               @Y17XACL
CKPTYPE  DS    XL1                      RESOURCE TYPE          @Y17XACL
CKPNRSZ  EQU   *-CKPNRES                LENGTH OF FIELDS CKPT'ED
*                                         FOR A 3705 RESOURCE  @Y17XACL
         MEND  */
*%PLSCKP : ;                            /*                   @Y17XAXF*/
*DCL 1 IEDQCKPD BDY(DWORD) BASED(RCKPT),
*      2 CKPSAVE1(18) PTR(31),          /*SAVE AREA FOR LOAD
*                                         MODULE             @Y17XACL*/
*      2 CKPIOB,                        /*IOB FOR CKPT DISK I/O
*                                                            @Y17XACL*/
*        3 CKPIOFL1 CHAR(1),            /*FLAG BYTE 1        @Y17XACL*/
*        3 CKPIOFL2 CHAR(1),            /*FLAG BYTE 2        @Y17XACL*/
*        3 CKPIOSN0 CHAR(1),            /*FIRST SENSE BYTE   @Y17XACL*/
*        3 CKPIOSN1 CHAR(1),            /*SECOND SENSE BYTE  @Y17XACL*/
*        3 CKPIOECB PTR(31),            /*ADDRESS OF ECB     @Y17XACL*/
*         4 CKPIOECC BIT(8),            /*COMPLETION CODE FOR I/O
*                                                            @Y17XAXF*/
*         4 *        PTR(24),           /*RESERVED           @Y17XAXF*/
*        3 CKPIOFL3 CHAR(1),            /*I/O ERROR FLAGS    @Y17XACL*/
*        3 CKPIOCSW CHAR(7),            /*CSW                @Y17XACL*/
*        3 CKPIOSIO CHAR(1),            /*START I/O CONDITION
*                                         CODES              @Y17XACL*/
*        3 CKPIOCPA PTR(24),            /*CHANNEL PROGRAM ADDRESS
*                                                            @Y17XACL*/
*        3 *        CHAR(1),            /*UNUSED             @Y17XACL*/
*        3 CKPIODCB PTR(24),            /*DCB ADDRESS        @Y17XACL*/
*        3 *        CHAR(1),            /*REPOSITION MODIFIER
*                                                            @Y17XACL*/
*        3 CKPIORST PTR(24),            /*RESTART ADDRESS    @Y17XACL*/
*        3 CKPIOBCI FIXED(15),          /*BLOCK CNT INCREMENT
*                                                            @Y17XACL*/
*        3 CKPIORC  FIXED(15),          /*ERROR COUNT        @Y17XACL*/
*        3 CKPIOSK  CHAR(8),            /*SEEK ADDRESS       @Y17XACL*/
*          4 CKPIOM   CHAR(1),          /*DEB EXTENT         @Y17XACL*/
*          4 CKPIOBB  CHAR(2),          /*BIN NUMBER         @Y17XACL*/
*          4 CKPIOCC  CHAR(2),          /*CYLINDER NUMBER    @Y17XACL*/
*          4 CKPIOHH  CHAR(2),          /*TRACK NUMBER       @Y17XACL*/
*          4 CKPIOR   CHAR(1),          /*RECORD NUMBER      @Y17XACL*/
*      2 CKPECB   PTR(31),              /*ECB POSTED BY IOS  @Y17XACL*/
*      2 CKPEXCP  PTR(31),              /*CURRENT RECORD BEING
*                                         WRITTEN            @Y17XACL*/
*      2 CKPECBL  CHAR(8),              /*ECB LIST FOR WAIT  @Y17XACL*/
*        3 CKPCNVRT CHAR(8),            /*USED FOR CVD CONVERSION
*                                                            @Y17XACL*/
*          4 CKPEPLOC CHAR(8),          /*EPLOC FOR LOAD MACRO
*                                                            @Y17XACL*/
*      2 CKPIOQF  PTR(31),              /*DISK I/O QUEUE - FIRST
*                                         RECORD             @Y17XACL*/
*      2 CKPIOQL  PTR(31),              /*DISK I/O QUEUE - LAST
*                                         RECORD             @Y17XACL*/
*        3 * BIT(8),                    /*STATUS BYTE        @Y17XACL*/
*          4 CKPNDRB  BIT(1),           /*INDICATES NO DISK RECORD
*                                         BUILT FOR NEXT REQUEST
*                                         ELEMENT            @Y17XACL*/
*      2 CKPLREB  PTR(31),              /*ADDR OF LAST REQUEST ELEMENT
*                                         FOR WHICH RECORD WAS
*                                         BUILT              @Y17XACL*/
*      2 CKPLDRB  PTR(31),              /*ADDR OF LAST DISK RECORD
*                                                            @Y17XACL*/
*      2 CKPCTTRB PTR(31),              /*BEGINNING OF CKREQ TTR
*                                         TABLE              @Y17XACL*/
*        3 CKPSECTR BIT(8),             /*SECTOR ID FOR SET SECTOR
*                                         COMMAND            @Y17XACL*/
*      2 CKPCPARM CHAR(8),              /*PARAMETERS FOR CONVERT
*                                         ROUTINE ADDRESS OF DEB AND
*                                         ADDRESS FOR CONVERSION
*                                         RESULT             @Y17XACL*/
*      2 CKPPARM2 PTR(31),              /*PARAMETER FOR SECTOR
*                                         CONVERSION ROUTINE (UCB TYPE
*                                         AND ADDRESS)       @Y17XACL*/
*      2 CKPCRLEN CHAR(1),              /*LENGTH OF CONTROL RECORD
*                                                            @Y17XACL*/
*      2 CKPSWCH1 CHAR(1),              /*SWITCH FOR COMPARING QCB TO
*                                         SEE IF IT HAS BEEN
*                                         CHECKPOINTED       @Y17XACL*/
*      2 CKPSWCH2 CHAR(1),              /*SWITCH FOR COMPARING WITH
*                                         INVITATION LIST TO SEE IF IT
*                                         HAS BEEN CHECKPOINTED
*                                                            @Y17XACL*/
*      2 CKPERRCT CHAR(1),              /*COUNT OF ERRORS ENCOUNTERED
*                                                            @Y17XACL*/
*      2 *        FIXED(31),            /*UNUSED             @Y17XACL*/
*      2 CKPCCWS,                       /*CHANNEL PROGRAM    @Y17XACL*/
*        3 CKPSEEKC CHAR(8),            /*SEEK CYLINDER      @Y17XACL*/
*        3 CKPSETSC CHAR(8),            /*SET SECTOR OR NOOP @Y17XACL*/
*        3 CKPSCHID CHAR(8),            /*SEARCH ID          @Y17XACL*/
*        3 CKPTIC   CHAR(8),            /*TIC                @Y17XACL*/
*        3 CKPRW,                       /*READ/WRITE         @Y17XACL*/
*         4 CKPRWCMD BIT(8),            /*COMMAND CODE       @Y17XAXF*/
*         4 CKPRWADD PTR(24),           /*DATA ADDRESS       @Y17XAXF*/
*         4 CKPRWFLG BIT(8),            /*FLAGS              @Y17XAXF*/
*         4 *        BIT(8),            /*RESERVED           @Y17XAXF*/
*         4 CKPRWBC  FIXED(15),         /*BYTE COUNT         @Y17XAXF*/
*      2 * BDY(WORD),                   /*GETMAIN PARAMETER
*                                         LIST               @Y17XACL*/
*        3 CKPGETML CHAR(10),           /*GETMAIN LIST       @Y17XACL*/
*        3 CKPWKALN FIXED(15),          /*LENGTH OF CKPT WORK AREA
*                                                            @Y17XACL*/
*      2 CKPMSG BDY(WORD),              /*MESSAGE BUFFER USED FOR WTO
*                                                            @Y17XACL*/
*        3 CKPMSGLN FIXED(15),          /*LENGTH OF MSG BUFFER
*                                                            @Y17XACL*/
*        3 *        FIXED(15),          /*                   @Y17XACL*/
*        3 CKPMSGTX CHAR(37),           /*TEXT OF MESSAGE    @Y17XACL*/
*        3 CKPMSGTP CHAR(20),           /*TYPE OF CKPT RECORD
*                                                            @Y17XACL*/
*        3 CKPMSGGL CHAR(4),            /*GETMAIN LENGTH WHICH COULD
*                                         NOT BE SATISFIED   @Y17XACL*/
*        3 *        CHAR(3),            /*UNUSED             @Y17XACL*/
*      2 CKPCNTLR BDY(WORD),            /*CHECKPOINT CONTROL RECORD -
*                                         WRITTEN EVERY TIME AN
*                                         ENVIRONMENT RECORD IS
*                                         WRITTEN            @Y17XACL*/
*        3 CKPFLAGS BIT(8),             /*CONTROL RECORD FLAGS
*                                                            @Y17XACL*/
*          4 CKPNORML BIT(1),           /*NORMAL CLOSEDOWN   @Y17XACL*/
*          4 CKPFSCN1 BIT(1),           /*FIFO SCAN 1 IN PROGRESS
*                                                            @Y17XACL*/
*          4 CKPFSCN2 BIT(1),           /*FIFO SCAN 2 IN PROGRESS
*                                                            @Y17XACL*/
*          4 *        BIT(1),           /*                   @Y17XACL*/
*          4 CKPERR   BIT(1),           /*INDICATES NO ENVIRONMENT
*                                         RECORDS ARE AVAILABLE
*                                                            @Y17XACL*/
*          4 CKPSTAIN BIT(1),           /*VALUE OF STARTUP PARAMETER
*                                         USED AT RESTART TO DETERMINE
*                                         IF INVITATION LISTS WERE
*                                         CHECKPOINTED       @Y17XACL*/
*          4 CKPOPTFN BIT(1),           /*OPTION FIELDS PRESENT FOR AT
*                                         LEAST ONE SYNC PROCESS ENTRY
*                                                            @Y17XACL*/
*          4 CKPOPCRD BIT(1),           /*INDICATES INCIDENT RECORDS
*                                         PRESENT FOR OPCTL  @Y17XACL*/
*        3 CKPTTRCT  CHAR(1),           /*INDEX FOR CURRENT ENVIRONMENT
*                                         CHECKPOINT         @Y17XACL*/
*        3 CKPINCNT  CHAR(1),           /*TOTAL NUMBER OF INCIDENT
*                                         RECORDS IN DATA    @Y17XACL*/
*        3 CKPINCNO  CHAR(1),           /*NUMBER OF INCIDENT RECORDS
*                                         AVAILABLE FOR USE  @Y17XACL*/
*        3 CKPCRRNO  CHAR(1),           /*NUMBER OF CKREQ RECORDS ON
*                                         FIRST TRACK CONTAINING CKREQ
*                                         RECORDS            @Y17XACL*/
*        3 CKPTTRCR  CHAR(3),           /*TTR OF FIRST CKREQ RECORD
*                                                            @Y17XACL*/
*        3 CKPINRNO  CHAR(1),           /*NUMBER OF INCIDENT RECORDS ON
*                                         FIRST TRACK CONTAINING
*                                         INCIDENT RECORDS   @Y17XACL*/
*        3 CKPTTRIN  CHAR(3),           /*TTR OF FIRST INCIDENT RECORD
*                                                            @Y17XACL*/
*        3 CKPBPERR  FIXED(15),         /*BYTES PER ENVIRONMENT RECORD
*                                         SEGMENT            @Y17XACL*/
*        3 CKPCKRQS  CHAR(1),           /*VALUE OF CKREQ FOR LAST
*                                         STARTUP - USED AT RESTART
*                                         INSTEAD OF VALUE IN AVT
*                                                            @Y17XACL*/
*        3 CKPCPRCD  CHAR(1),           /*VALUE OF CPRCDS AT LAST
*                                         STARTUP - USED AT RESTART
*                                         INSTEAD OF VALUE IN AVT
*                                                            @Y17XACL*/
*        3 CKPIPERT  CHAR(1),           /*NUMBER OF INCIDENT RECORDS
*                                         PER TRACK          @Y17XACL*/
*        3 CKPPRQNO  CHAR(1),           /*MAXIMUM NUMBER OF PRIORITY
*                                         LEVEL QUEUES USED BY A
*                                         SYNC PROCESS ENTRY - USED
*                                         BY IGG01942        @Y17XACL*/
*          4 CKPCPERT CHAR(1),          /*NUMBER OF CKREQ RECORDS PER
*                                         TRACK - DETERMINED BY
*                                         IGG01942           @Y17XACL*/
*        3 CKPCKRLN  FIXED(15),         /*LENGTH OF CKREQ RECORD -
*                                         DEPENDS ON OPTION FIELDS AND
*                                         PRIORITY LEVEL QUEUES
*                                                            @Y17XACL*/
*        3 CKPRPERT  CHAR(1),           /*NUMBER OF ENVIRONMENT RECORD
*                                         SEGMENTS PER TRACK @Y17XACL*/
*        3 CKPTTRLI  CHAR(3),           /*TTR OF LAST INCIDENT WRITTEN
*                                                            @Y17XACL*/
*        3 CKPINCLN  FIXED(15),         /*LENGTH OF INCIDENT RECORD
*                                                            @Y17XACL*/
*        3 CKPSECLT  FIXED(15),         /*DATA ON TRACK PRECEDING
*                                         CURRENT ENV SEGMENT
*                                                            @Y17XACL*/
*        3 CKPSECLI  FIXED(15),         /*DATA ON TRACK PRECEDING
*                                         CURRENT INCIDENT RECORDS
*                                                            @Y17XACL*/
*        3 CKPSECCR  FIXED(15),         /*DATA ON TRACK PRECEDING 1ST
*                                         CKREQ RECORD       @Y17XACL*/
*        3 CKPSECIN  FIXED(15),         /*DATA ON TRACK PRECEDING 1ST
*                                         INCIDENT RECORD    @Y17XACL*/
*        3 CKPTTRT1  CHAR(3),           /*TTR FOR FIRST ENVIRONMENT
*                                                            @Y17XACL*/
*        3 CKPSECT1  CHAR(2);           /*DATA ON TRACK PRECEEDING 1ST
*                                         SEG OF ENV RECORD  @Y17XACL*/
*DCL 1 CKPINIT DEFINED(CKPEXCP),        /*OPEN WORK AREA     @Y17XACL*/
*      2 CKPCYLNO CHAR(2),              /*CYLINDER NUMBER    @Y17XACL*/
*      2 CKPHEDNO CHAR(2),              /*HEAD NUMBER        @Y17XACL*/
*      2 CKPRCDNO CHAR(1),              /*RECORD NUMBER      @Y17XACL*/
*      2 CKPKEYLN CHAR(1),              /*KEY LENGTH         @Y17XACL*/
*      2 CKPDATLN CHAR(2),              /*DATA LENGTH        @Y17XACL*/
*      2 CKPCTTRC PTR(31),              /*CURRENT ENTRY IN CKREQ - TTR
*                                         TABLE (USED AT RESTART)
*                                                            @Y17XACL*/
*      2 CKPDATIM CHAR(8),              /*DATE, TIME, AND TOTAL CKPT
*                                         USED TO COMPARE WITH INCIDENT
*                                         CKPT'S             @Y17XACL*/
*      2 CKPIPERE FIXED(15),            /*NUMBER OF INCIDENTS OR CKREQ
*                                         IN ONE ENVIRONMENT RECORD
*                                         SEGMENT            @Y17XACL*/
*      2 *        FIXED(15),            /*                   @Y17XACL*/
*      2 CKPCTTRA PTR(31);              /*ADDRESS OF TTR OF THE
*                                         ENVIRONMENT RECORD BEING USED
*                                         FOR RESTART        @Y17XACL*/
*DCL CKPTTRLT PTR(24) DEFINED(CKPTIC) POS(6);/*OVERLAY UNUSED PORTION
*                                              OF TIC WITH TTR OF LAST
*                                              TOTAL SEGMENT WRITTEN
*                                                            @Y17XACL*/
*DCL CKPMSGPN CHAR(8) DEFINED(CKPMSGTP) POS(7);/*            @Y17XACL*/
*DCL 1 CKPTWA DEFINED(CKPMSGTX),        /*OVERLAY MESSAGE BUFFER WITH
*                                         WORK AREA          @Y17XACL*/
*      2 CKPSAVE2(15) PTR(31),          /*SAVE AREA          @Y17XACL*/
*      2 CKPTRMAD     PTR(31);          /*ADDRESS OF TRM ENTRY
*                                                            @Y17XACL*/
*DCL 1 CKPNCNTL DEF(CKPCNTLR),          /*MAPPING FOR THE CONTROL
*                                         RECORD FOR A 3705 CHECKPOINT
*                                         DATA SET           @Y17XAXF*/
*     2 *        FIXED(15),             /*RESERVED           @Y17XAXF*/
*     2 CKPTRSTA BIT(8),                /*STATUS FLAGS       @Y17XAXF*/
*     2 CKPSWTCH BIT(8),                /*SWITCHES           @Y17XAXF*/
*     2 CKPIPLTX CHAR(8),               /*IPL TEXT NAME      @Y17XAXF*/
*     2 CKPBLKSZ FIXED(15),             /*BLOCK SIZE         @Y17XAXF*/
*     2 *        FIXED(15),             /*RESERVED           @Y17XAXF*/
*      2 CKPTRKCN FIXED(15),            /*TRACK CONSTANT USED FOR
*                                         ALTERNATE TRACK ASSIGNMENT
*                                                            @Y17XAXF*/
*      2 *        FIXED(15),            /*RESERVED           @Y17XAXF*/
*      2 CKPBLKPT FIXED(8),             /*BLOCKS PER TRACK   @Y17XAXF*/
*      2 *        FIXED(8),             /*RESERVED           @Y17XAXF*/
*      2 CKPDATTM CHAR(8),              /*DATE AND TIME      @Y17XAXF*/
*       3 CKPDATE  CHAR(4),             /*DATE               @Y17XAXF*/
*       3 CKPTIME  CHAR(4),             /*TIME               @Y17XAXF*/
*      2 CKPBCKUP CHAR(8);              /*BACKUP NAME        @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*DCL 1 CKPNFLDS DEF(CKPEXCP),           /*DATA AREAS USED BY CHECKPOINT
*                                         SUBTASK FOR 3705 CKECKPOINT
*                                                            @Y17XAXF*/
*      2 *        CHAR(7),              /*RESERVED           @Y17XAXF*/
*      2 CKPENCDE FIXED(8),             /*ENTRY CODE         @Y17XAXF*/
*      2 CKPNTTE  PTR(31),              /*ADDRESS OF TERMINAL ENTRY
*                                         ENTRY PREFIX FOR THE 3705
*                                                            @Y17XAXF*/
*      2 CKPNDEVF PTR(31),              /*ADDRESS OF DEVICE DEPENDENT
*                                         FIELDS FOR THE 3705
*                                                            @Y17XAXF*/
*      2 CKPNSELT BIT(32),              /*SELECTOR FIELDS    @Y17XAXF*/
*       3 CKPCUSEL FIXED(8),            /*CURRENT SELECT VALUE
*                                                            @Y17XAXF*/
*       3 CKPSLNEW CHAR(3),             /*NEW SELECT VALUES TO BE
*                                         SHIFTED            @Y17XAXF*/
*      2 CKPNTRK FIXED(15),             /*ALTERNATE RECORD INDICATOR
*                                                            @Y17XAXF*/
*      2 CKPNRSID FIXED(15);            /*RESOURCE TO BE CHECKPOINTED
*                                         OR RESTARTED       @Y17XAXF*/
*        @SPACE (2);
* DCL CKPSLVAL CHAR(3) DEF(CKPNSELT);   /*CURRENT SELECT VALUES USED IN
*                                         SELECT VALUE SHIFT @Y17XAXF*/
* DCL CKPNOTFY BIT(8) CONSTANT('0A'X);  /*SELECT VALUE FOR REQUEST FOR
*                                         NOTIFICATION       @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*/*CKPENCDE VALUES                                           @Y17XAXF*/
* DCL CKPIOERR FIXED(8) CONSTANT(40);   /*3705 CHECKPOINT I/O ERROR
*                                                            @Y17XAXF*/
* DCL CKPGETFL FIXED(8) CONSTANT(4);    /*GETMAIN FOR 3705 RESOURCE
*                                         RECORD FAILED      @Y17XAXF*/
* DCL CKPEODAT FIXED(8) CONSTANT(8);    /*END OF 3705 CHECKPOINT DATA
*                                         SET REACHED        @Y17XAXF*/
*DCL 1 CKPOVER DEFINED(CKPMSGTP) POS(2),/*                   @Y17XACL*/
*      2 CKPRCDSR FIXED(15),            /*NUMBER RECORDS(SEGMENTS)
*                                         REQUIRED FOR ONE ENV CKPT.
*                                                            @Y17XACL*/
*      2 CKPTRKLN FIXED(15),            /*LENGTH OF DATA ON A TRACK
*                                         PRECEDING THE CURRENT
*                                         RECORD             @Y17XACL*/
*      2 CKPTRKSA FIXED(15);            /*NUMBER AVAILABLE TRACKS IN
*                                         DATA SET           @Y17XACL*/
*DCL 1 CKPOPNFL BIT(8) DEF(CKPFLAGS),   /*CONTROL RECORD FLAGS USED AT
*                                         OPEN TIME          @Y17XACL*/
*      2 *        BIT(1),               /*                   @Y17XACL*/
*      2 CKPOPNEN BIT(1),               /*OPEN-ENV FLAG      @Y17XACL*/
*      2 CKPOPNIN BIT(1),               /*OPEN-INCIDENT FLAG @Y17XACL*/
*      2 CKPOPNCR BIT(1),               /*OPEN-CKREQ FLAG    @Y17XACL*/
*      2 *        BIT(4);               /*                   @Y17XACL*/
*DCL 1 IEDQCDRD BASED(RCKPT),           /*OVERLAY FOR INCIDENT OR
*                                         ENVIRONMENT CKPT. DISK
*                                         RECORD             @Y17XACL*/
*      2 CDRDATE  PTR(31),              /*DATE OF CKPT       @Y17XACL*/
*      2 CDRTIME  PTR(31),              /*TIME WHEN RECORD WRITTEN
*                                                            @Y17XACL*/
*      2 CDRKEY   BIT(8),               /*KEY FIELD          @Y17XACL*/
*      2 CDRTTRLI PTR(24),              /*TTR OF LAST INCIDENT AT TIME
*                                         OF THIS ENV CKPT   @Y17XACL*/
*      2 CDRDATA  CHAR(*);              /*BEGINNING OF DATA IN
*                                         THE SEGMENT        @Y17XACL*/
*DCL 1 CDRINCFM DEFINED(CDRTTRLI) BDY(BYTE),/*FORMAT FOR INCIDENT
*                                         RECORDS            @Y17XACL*/
*      2 CDRSTAT  CHAR(1),              /*TERMINAL STATUS    @Y17XACL*/
*      2 CDROFFS  FIXED(15),            /*OFFSET TO TERMINAL NAME TABLE
*                                                            @Y17XACL*/
*      2 CDRSEQIN FIXED(15),            /*INPUT SEQ NUMBER   @Y17XACL*/
*      2 CDRSEQOU FIXED(15),            /*OUTPUT SEQ NUMBER  @Y17XACL*/
*      2 CDROPTN  CHAR(*);              /*BEGINNING OF OPTIONS
*                                                            @Y17XACL*/
*DCL CDROPCB PTR(31) DEF(CDRDATA);      /*BEGINNING OF OPCTL BLOCK
*                                                            @Y17XACL*/
*DCL 1 CDRCREQR DEFINED(IEDQCDRD),      /*CKREQ RECORD       @Y17XACL*/
*      2 CDRCKFLG BIT(8),               /*FLAG BITS          @Y17XACL*/
*        3 CDRCKRNC BIT(1),             /*CKREQ IS NOT COMPLETED
*                                                            @Y17XACL*/
*      2 *        PTR(24),              /*USED FOR LINK - I/O QUEUE
*                                                            @Y17XACL*/
*      2 CDRCKIN  FIXED(15),            /*INPUT SEQ NUMBER   @Y17XACL*/
*      2 CDRCKOUT FIXED(15),            /*OUTPUT SEQ NUMBER  @Y17XACL*/
*      2 *        CHAR(1),              /*RECORD KEY         @Y17XACL*/
*      2 *        CHAR(1),              /*                   @Y17XACL*/
*      2 CDRCKOFF FIXED(15),            /*TERM OFFSET        @Y17XACL*/
*      2 CDRCKMSG FIXED(15),            /*QCB MSG COUNT      @Y17XACL*/
*      2 CDRCKQBC PTR(24) BDY(WORD,3),  /*QBACK POINTER      @Y17XACL*/
*      2 CDRCKQCB CHAR(21),             /*QCB DISK POINTERS (THIS FIELD
*                                         IS REPEATED FOR EACH PRIORITY
*                                         LEVEL QCB)         @Y17XACL*/
*      2 CDRCKPQB PTR(24) BDY(WORD,3),  /*PRILEVEL QBACK PTR @Y17XACL*/
*      2 CDRCKOPT CHAR(*);              /*OPTION FIELD       @Y17XACL*/
*DCL 1 IEDQCRED BASED(RCKPT),           /*MAP FOR CKPT REQUEST ELEMENT
*                                         (INCIDENT OR CKREQ)
*                                                            @Y17XACL*/
*      2 CREKEY   CHAR(1),              /*REQUEST KEY        @Y17XACL*/
*      2 CREQCBAD PTR(24),              /*QCB ADDRESS        @Y17XACL*/
*      2 CRELINK  PTR(31),              /*                   @Y17XACL*/
*        3 CREPRI   BIT(8),             /* PRIORITY OF REQUEST ELEMENT
*                                          LINK OF REQUEST ELEMENT
*                                                            @Y17XAXF*/
*        3 *        PTR(24),            /* RESERVED          @Y17XAXF*/
*      2 CREECB   PTR(31),              /*ADDR OF ECB        @Y17XACL*/
*      2 CREOFFS  FIXED(15),            /*OFFSET OF TERMNAME ENTRY
*                                                            @Y17XACL*/
*        3 CREDEB CHAR(*);              /*DEB CHAIN FOR CKREQ
*                                                            @Y17XACL*/
*DCL 1 CKPREQTB BASED(RCKPT),           /*CKREQ-TTR TABLE ENTRY
*                                                            @Y17XACL*/
*      2 CKPCTFLG BIT(8),               /*FLAG BYTE          @Y17XACL*/
*        3 CKPCTACT BIT(1),             /*ENTRY IS ACTIVE    @Y17XACL*/
*        3 CKPCTDER BIT(1),             /*ENTRY HAS DISK ERR @Y17XACL*/
*      2 CKPCTTTR PTR(24),              /*TTR                @Y17XACL*/
*      2 CKPCTOFF FIXED(15),            /*TERM OFFSET        @Y17XACL*/
*      2 CKPCTSEC FIXED(15);            /*DATA ON TRACK PRECEDING
*                                         THIS CKREQ RECORD  @Y17XACL*/
*DCL 1 CKPNRES BASED(RCKPT),            /*FIELDS FOR NCP RESOURCE
*                                                            @Y17XACL*/
*       2 CKPSUBST FIXED(15),           /*SUBSTRUCT          @Y17XACL*/
*       2 CKPCOHRT FIXED(15),           /*COHORT             @Y17XACL*/
*       2 CKPNFLG  BIT(8),              /*FLAGS              @Y17XACL*/
*        3 CKPREMB  BIT(1),             /*REMEMBER           @Y17XACL*/
*        3 CKPRSACT BIT(1),             /*RESOURCE ACTIVE    @Y17XACL*/
*        3 CKPEPMOD BIT(1),             /*EP MODE            @Y17XACL*/
*        3 CKPLULOG BIT(1),             /*ALLOW LOGON IND    @Y17XAXF*/
*        3 *        BIT(4),             /*RESERVED           @Y17XACL*/
*       2 CKPTYPE  BIT(8);              /*RESOURCE TYPE      @Y17XACL*/
*%CKPNRSZ='LENGTH(CKPNRES)';            /*LENGTH OF FIELDS CKPT'ED
*                                         FOR A 3705 RESOURCE
*                                                            @Y17XACL*/
* DECLARE                               /*                   @Y17XAXF*/
* 1 CKPAVT   BASED(RCKPT),              /*CHECKPOINT AVT DSECT
*                                                            @Y17XASA*/
*  2 CKPOPCON CHAR(2),                  /*PRIMARY OP/CTL TERMINAL
*                                                            @Y17XASA*/
*  2 CKPOPCIN CHAR(2),                  /* PRIMARY OP/CTL TTCIN
*                                                            @Y17XASA*/
*  2 CKPINTLV CHAR(2),                  /* SYSTEM DELAY INTERVAL
*                                                            @Y17XASA*/
*  2 CKPBIT1  BIT(8),                   /* AVTBIT1           @Y17XASA*/
*  2 CKPBIT2  BIT(8),                   /* AVTBIT2           @Y17XASA*/
*  2 CKPNADDR CHAR(4),                  /* NON REUSE DISK NEXT ADDR
*                                                            @Y17XASA*/
*  2 CKPRADDR CHAR(4),                  /* REUSE DISK NEXT ADDR
*                                                            @Y17XASA*/
*  2 CKPLODPT CHAR(4),                  /* REUSE LOAD POINT FIELD
*                                                            @Y17XASA*/
*  2 CKPSUBT  CHAR(1),                  /* AVTSUBT SUBT= OPTION FIELD
*                                                            @Y17XASA*/
*  2 CKPIOTR  CHAR(1);                  /* AVTIOTR IOTR= OPTION FIELD
*                                                            @Y17XASA*/
*%CKPAVTLN='LENGTH(CKPAVT)';            /* LENGTH OF CKP AVT DSECT
*                                                            @Y17XASA*/
*@EJECT;
*   /*CONSTANTS                                              @Y17XACL*/
*DCL CKPIOCOM BIT(8) CONSTANT('7F'X);   /*I/O COMPELTED SUCCESSFULLY
*                                         (USED WITH CKPIOECC)
*                                                            @Y17XAXF*/
*DCL CKPSET1  BIT(8) CONSTANT('01'X);   /*USED TO INVERT QCB SWITCH AT
*                                         CKPSWCH1           @Y17XACL*/
*DCL CKPSET2  BIT(8) CONSTANT('04'X);   /*USED TO INVERT INVITATION
*                                         LIST SWITCH AT CKPSWCH2
*                                                            @Y17XACL*/
*DCL CKPREAD  BIT(8) CONSTANT('06'X);   /*READ DATA CMD      @Y17XACL*/
*DCL CKPWRITE BIT(8) CONSTANT('05'X);   /*WRITE DATA CMD     @Y17XACL*/
*DCL CKPWCKD  BIT(8) CONSTANT('1D'X);   /*WRITE COUNT, KEY, AND DATA
*                                                            @Y17XACL*/
*DCL CKPSET   BIT(8) CONSTANT('23'X);   /*SET SECTOR         @Y17XACL*/
*DCL CKPNOOP  BIT(8) CONSTANT('03'X);   /*NOOP               @Y17XACL*/
*DCL CKPMSGL  FIXED(8) CONSTANT(65);    /*MSG LENGTH         @Y17XACL*/
*DCL CKPENVL  FIXED(15) CONSTANT(300);  /*LENGTH OF ENVIRONMENT RECORD
*                                         SEGMENT            @Y17XACL*/
*DCL CKP101   FIXED(15) CONSTANT(256);  /*USED TO BUMP TRACK @Y17XACL*/
*DCL CKPCKRNO FIXED(8) CONSTANT(3);     /*NUMBER OF EXTRA CKREQ RECORDS
*                                                            @Y17XACL*/
*DCL CKPCMDCH BIT(8)   CONSTANT('42'X); /*COMMAND CHAINING   @Y17XACL*/
*DCL CKPRETNL FIXED(8) CONSTANT(4);     /*RETURN OFFSET TO CHECKPOINT
*                                         EXECUTOR FOR NO ADDITIONAL
*                                         LOAD REQUESTS      @Y17XAXF*/
*DCL CKPCKREQ FIXED(8) CONSTANT(48);    /*OFFSET FOR CKREQ   @Y17XACL*/
*DCL CKPENV   FIXED(8) CONSTANT(56);    /*OFFSET FOR ENV     @Y17XACL*/
*DCL CKPIOQM  FIXED(8) CONSTANT(64);    /*OFFSET FOR I/O QUEUE MANAGER
*                                                            @Y17XACL*/
*DCL CKPDIOR  FIXED(8) CONSTANT(72);    /*OFFSET FOR DISK I/O ROUTINE
*                                                            @Y17XACL*/
*DCL CKPNOTIF FIXED(8) CONSTANT(80);    /*OFFSET FOR NOTIFICATION
*                                         ROUTINE            @Y17XACL*/
*DCL CKPNOCOR FIXED(8) CONSTANT(88);    /*OFFSET FOR NO AVAILABLE CORE
*                                         ROUTINE            @Y17XACL*/
*DCL CKPNOINC FIXED(8) CONSTANT(96);    /*OFFSET FOR INCIDENT OVERFLOW
*                                         ROUTINE            @Y17XACL*/
*DCL CKPCNCP  FIXED(8) CONSTANT(104);   /*OFFSET FOR 3705 CHECKPOINT
*                                          ROUTINE           @Y17XAXF*/
*DCL CKPRNCP  FIXED(8) CONSTANT(112);   /*OFFSET FOR 3705 RESTART
*                                         ROUTINE            @Y17XAXF*/
*DCL CKPCNCPW FIXED(8) CONSTANT(120);   /*OFFSET FOR 3705 CHECKPOINT
*                                         WRITE ROUTINE      @Y17XAXF*/
*DCL CKPOPLTL FIXED(8) CONSTANT(10);    /*LENGTH OF OPT LENGTH ENTRY
*                                                            @Y17XACL*/
*DCL CKP1BYTE FIXED(8) CONSTANT(8);     /*USED TO SHIFT 1 BYTE
*                                                            @Y17XACL*/
*DCL CKP2BYTE FIXED(8) CONSTANT(16);    /*USED TO SHIFT 2 BYTES
*                                                            @Y17XACL*/
*DCL CKPCVTPT FIXED(8) CONSTANT(16);    /*ADDRESS OF CVT POINTER
*                                                            @Y17XACL*/
*DCL CKPCNTTR FIXED(8) CONSTANT(28);    /*DISPLACEMENT OF TTR CONVERT
*                                         ROUTINE IN CVT     @Y17XACL*/
*DCL CKPCNSEC FIXED(8) CONSTANT(232);   /*DISPLACEMENT OF SECTOR
*                                         ROUTINE ADDR IN CVT
*                                                            @Y17XACL*/
*DCL CKPDELMT CHAR(1)  CONSTANT('*');   /*DELIMITER PLACED IN ENV RCD
*                                                            @Y17XACL*/
*DCL CKPQDELM FIXED(8) CONSTANT(108);   /*DELIMETER FOR QCB ON
*                                         ENVIRONMENT FIELD  @OX16402*/
*DCL CKPLTRLN FIXED(8) CONSTANT(1);     /*LENGTH OF LCBTRACE FIELD
*                                                            @Y17XAXF*/
*DCL CKPDELLN FIXED(8) CONSTANT(1);     /*LENGTH OF DELIMITER FIELD
*                                                            @Y17XACL*/
*DCL CKPSEQLN FIXED(8) CONSTANT(4);     /*LENGTH OF SEQUENCE NUMBER
*                                         FIELD              @Y17XACL*/
*DCL CKPSENSE FIXED(8) CONSTANT(1);     /*LENGTH OF SENSE FIELD
*                                                            @Y17XACL*/
*DCL CKPMCTLN FIXED(8) CONSTANT(2);     /*LENGTH OF COUNT FIELD
*                                                            @Y17XACL*/
*DCL CKPTRMLN FIXED(8) CONSTANT(1);     /*LENGTH OF TRM STATUS FIELD
*                                                            @Y17XACL*/
*DCL CKPQCBLN FIXED(8) CONSTANT(21);    /*LENGTH OF PRIORITY LEVEL QCB
*                                         DISK POINTERS      @Y17XACL*/
*DCL CKPMQBLN FIXED(8) CONSTANT(6);     /*LENGTH OF MASTER QCB FIELDS
*                                         PLUS DELIMETER     @OX16402*/
*DCL CKPQBKLN FIXED(8) CONSTANT(3);     /*LENGTH OF QBACK POINTER
*                                                            @Y17XACL*/
*DCL CKPLCBLN FIXED(8) CONSTANT(2);     /*LENGTH OF LCB STAT INFO
*                                                            @Y17XACL*/
*DCL CKPDCBLN FIXED(8) CONSTANT(1);     /*LENGTH OF DCB FIELDS
*                                                            @Y17XACL*/
*DCL CKPOCODE FIXED(8) CONSTANT(0);     /*COMMAND OPERATION TYPE
*                                                            @Y17XACL*/
*DCL CKPOCSWC FIXED(8) CONSTANT(1);     /*OPERATION SUB-TYPE @Y17XACL*/
*DCL CKPOCFLG FIXED(8) CONSTANT(2);     /*FLAG BYTE          @Y17XACL*/
*DCL CKPOCREL FIXED(8) CONSTANT(3);     /*RELATIVE LINE NUMBER
*                                                            @Y17XACL*/
*DCL CKPOCLNO FIXED(8) CONSTANT(10);    /* HEX LINE NUMBER   @Y17XACL*/
*DCL CKPOCNAM FIXED(8) CONSTANT(20);    /*DDNAME FOR START/STOP
*                                         COMMAND            @Y17XACL*/
*DCL CKPOCLST FIXED(8) CONSTANT(28);    /*ILIST ADDRESS      @Y17XACL*/
*DCL CDROPC   FIXED(8) CONSTANT(16);    /*KEY FOR OPCTL      @Y17XACL*/
*DCL CDRCKREQ FIXED(8) CONSTANT(24);    /*KEY FOR CKREQ      @Y17XACL*/
*DCL CDRTOTAL FIXED(8) CONSTANT(28);    /*KEY FOR TOTAL      @Y17XACL*/
*DCL CDRTOTLC FIXED(8) CONSTANT(32);    /*KEY FOR TOTAL - CONTINUED
*                                                            @Y17XACL*/
*   /*KEYS USED WITH CREKEY                                  @Y17XACL*/
*DCL CRELCB   BIT(8) CONSTANT('00'X);   /*KEY FOR LCB FOR CHECKPOINT
*                                                            @Y17XACL*/
*DCL CRECHNGT BIT(8) CONSTANT('10'X);   /*KEY FOR TCHNG FROM ALLP
*                                                            @Y17XACL*/
*DCL CREREMVE BIT(8) CONSTANT('20'X);   /*KEY FOR TIME DELAY QUEUE
*                                         REMOVAL ELEMENT    @Y17XACL*/
*DCL CREOPC   BIT(8) CONSTANT('40'X);   /*KEY FOR OPERATOR CONTROL
*                                                            @Y17XACL*/
*DCL CRECKREQ BIT(8) CONSTANT('60'X);   /*KEY FOR CKREQ FROM APPL
*                                         PROGRAM            @Y17XACL*/
*DCL CREINCOF BIT(8) CONSTANT('80'X);   /*KEY FLAG - INCIDENT
*                                         OVERFLOW           @Y17XACL*/
*DCL CRECNCP  BIT(8) CONSTANT('D0'X);   /*KEY FOR 3705 CHECKPOINT
*                                                            @Y17XAXF*/
*DCL CRERNCP  BIT(8) CONSTANT('E0'X);   /*KEY FOR 3705 RESTART
*                                                            @Y17XAXF*/
./ ADD NAME=TCMD0D
*        %GOTO CMD0PLS;            /* BILINGUAL HEADER
         MACRO
         TCMD0D
.*A000000-999999                                               @Y17XAXF
*
*        FID0 COMMAND CODES
*
         SPACE
CD0READ  EQU   X'01' .             READ COMMANDS
*
*        READ MODIFIERS
*
CD0R     EQU   X'00' .                  READ NORMAL
CD0RB    EQU   X'01' .                  READ BLOCK
CD0RM    EQU   X'02' .                  READ MESSAGE
CD0RT    EQU   X'03' .                  READ TRANSMISSION
CD0RD    EQU   X'04' .                  READ TRANSMISSION DISCONNECT
CD0RI    EQU   X'05'                    READ WITH INVITE
         SPACE
CD0WRT   EQU   X'02' .             WRITE COMMAND
*
*        WRITE MODIFIERS
*
CD02     EQU   X'00' .                  WRITE NORMAL
CD0WM    EQU   X'01' .                  WRITE WITH EOM
CD0WT    EQU   X'02' .                  WRITE WITH EOT
CD0WD    EQU   X'03' .                  WRITE WITH DISCONNECT
CD0WR    EQU   X'06' .                  WRITE WITH READ
CD0WI    EQU   X'07' .                  WRITE WITH INVITE
CD0WC    EQU   X'08'                    WRITE WITH CONTACT
CD0WCM   EQU   X'09' .                  WRITE WITH CONTACT(EXT)
CD0WCT   EQU   X'0A' .                  WRITE WITH CONTACT(EOT)
CD0WCD   EQU   X'0B' .                  WRITE WITH CONTACT AND DISCONN
CD0WCR   EQU   X'0E' .                  WRITE WITH CONTACT AND READ
         SPACE
CD0TEST  EQU   X'03' .             TEST COMMAND
*
*        TEST MODIFIERS
*
CD0T     EQU   X'00' .                  TEST DEVICE NORMAL
CD0TC    EQU   X'01' .                  TEST DEVICE WITH CONTACT
CD0TD    EQU   X'02' .                  TEST DEVICE WITH DISCONNECT
CD0TCD   EQU   X'03' .                  TEST DEV WITH CDNTACT & DISCONN
CD0TI    EQU   X'04' .                  TEST LINE NORMAL
CD0TIC   EQU   X'05' .                  TEST LINE WITH CONTACT
CD0TID   EQU   X'06' .                  TEST LINE WITH DISCONNECT
CD0TICD  EQU   X'07' .                  TEST LINE WITH CONTACT & DISCON
         SPACE
CD0REST  EQU   X'04' .             RESTART COMMAND
*
*        RESTART MODIFIERS
*
CD0RLINE EQU   X'00' .                  LINE
CD0RDEV  EQU   X'01' .                  DEVICE
CD0RLSES EQU   X'02' .                  REP SESSION INIT INFO FOR LINE
CD0RDSES EQU   X'04' .                  REP SESSION INIT INFO FOR DEV
         SPACE
CD0INV   EQU   X'05' .             INVITE COMMAND
*
*        INVITE MODIFIERS
*
CD0I     EQU   X'00' .                  INVITE NORMAL
CD0IB    EQU   X'01' .                  INVITE BLOCK
CD0IM    EQU   X'02' .                  INVITE MESSAGE
CD0IT    EQU   X'03' .                  INVITE TRANSMISSION
CD0ID    EQU   X'04' .                  INVITE TRANSMISSION WITH DISCON
CD0IA    EQU   X'05' .                  INVITE WITH AUTO RESTART
CD0IP    EQU   X'06' .                  INVITE PERPETUAL
         SPACE
CD0CONT  EQU   X'06' .             CONTACT COMMAND
*
*        NO CONTACT MODIFIERS
*
         SPACE
CD0DISC  EQU   X'07' .             DISCONNECT COMMAND
*
*        DISCONNECT MODIFIERS
*
CD0D     EQU   X'00' .                  DISCONNECT NORMAL
CD0DI    EQU   X'01' .                  DISCONNECT WITH INVITE
CD0DE    EQU   X'02' .                  DISCONNECT WITH END-OF-CALL
CD0DEI   EQU   X'03' .                  DISCONNECT WITH EOC AND INVITE
         SPACE
CD0CTRL  EQU   X'08' .             CONTROL COMMAND
*
*        CONTROL MODIFIERS
*
CD0CDISL EQU   X'01' .                  DISPLAY LINE STATUS
CD0CRSII EQU   X'02' .                  REP SESS INIT INFO FOR A LINE
CD0CAI   EQU   X'03' .                  ACTIVATES INVITES
CD0CDI   EQU   X'04' .                  DEACTIVATES INVITES
CD0CCSII EQU   X'05' .                  COPY SESS INIT INFO
CD0CDDS  EQU   X'06' .                  DISPLAY DEVICE STATUS
CD0CRDS  EQU   X'07' .                  REQ DEV STATISTICS
CD0CDS   EQU   X'08' .                  DISPLAY STORAGE
CD0CSTD  EQU   X'09' .                  SET TIME AND DATE
CD0CSCMS EQU   X'0A' .                  SET CHANNEL MODE SECONDARY
CD0CDLNA EQU   X'0B' .                  DISPLAY LINE'S NETWORK ADDR
CD0CALT  EQU   X'0C' .                  ACTIVATE LINE TRACE
CD0CTLT  EQU   X'0D' .                  TERMINATE LINE TRACE
CD0CCMS  EQU   X'12' .                  CHANGE MODEM SPEED
CD0CSCMP EQU   X'15' .                  SET CHANNEL MODE PRIMARY
CD0CCDM  EQU   X'18' .                  COPY DESTINATION MODE
CD0CPD   EQU   X'1C' .                  PHYSICAL DISCONNECT
CD0CCDSI EQU   X'21' .                  COPY DEV SESSION INFO
CD0CRDSI EQU   X'22' .                  REP DEV SESSION INFO
CD0CREL  EQU   X'41' .                  RESET ERROR LOCK
CD0CRDQ  EQU   X'42' .                  RESET DEVICE QUEUES
CD0CRCMR EQU   X'43' .                  REQ CONTROLMODE RESET
CD0CRI   EQU   X'44' .                  RESET IMMEDIATE
CD0CROTT EQU   X'48' .                  RESET ONLINE TERMINAL TEST
CD0CSTB  EQU   X'4A' .                  SWITCH TO BACKUP
CD0CSBTP EQU   X'4C' .                  SWITCH FROM BACKUP TO PRIMARY
CD0CRINV EQU   X'4D' .                  RESET INVITE
CD0CRC   EQU   X'50' .                  RESET CONDITIONAL
CD0CREOC EQU   X'60' .                  RESET AT ENDOF COMMAND
CD0CSEP  EQU   X'82' .                  SWITCH TO EP MODE
CD0CSNCP EQU   X'83' .                  SWITCH TO NCP MODE
CD0CCLSP EQU   X'84' .                  CHGE LINE SERVICE-SEEKING PAUSE
CD0CCLNR EQU   X'85' .                  CHGE LINE NEG POLL RSP LIMIT
CD0CCSL  EQU   X'86' .                  CHGE SESSION LIMIT
CD0CCDTL EQU   X'8C' .                  CHGE DEV TRANSMISSION LIMIT
CD0CMBHS EQU   X'8D' .                  MODIFY BLK HANDLER SET ASSOC
CD0CAL   EQU   X'98' .                  ACTIVATE LINE
CD0CD0   EQU   X'99' .                  DEACTIVATE ORDERLY
CD0CSDM  EQU   X'9A' .                  SET DESTINATION MODE
CD0CDLH  EQU   X'C2' .                  DEACTIVATE LINE HALT
         MEND
*        */
*%CMD0PLS:;
*/*                                                                  */
*/*      FID0 COMMAND CODES                                          */
*/*                                                                  */
*
*DCL CD0READ  BIT(8) CONSTANT('01'X); /* READ COMMAND                */
*/*                                                                  */
*/*      READ MODIFIERS                                              */
*/*                                                                  */
*DCL CD0R      BIT(8) CONSTANT('00'X); /*  READ NORMAL               */
*DCL CD0RB     BIT(8) CONSTANT('01'X); /*  READ BLOCK                */
*DCL CD0RM     BIT(8) CONSTANT('02'X); /*  READ MESSAGE              */
*DCL CD0RT     BIT(8) CONSTANT('03'X); /*  READ TRANSMISSION         */
*DCL CD0RD     BIT(8) CONSTANT('04'X); /*  READ TRANSMISSION DISCON  */
*DCL CD0RI     BIT(8) CONSTANT('05'X); /*  READ WITH INVITE          */
*
*DCL CD0WRT    BIT(8) CONSTANT('02'X); /* WRITE COMMAND              */
*/*                                                                  */
*/*      WRITE MODIFIERS                                             */
*/*                                                                  */
*DCL CD0W      BIT(8) CONSTANT('00'X); /*  WRITE NORMAL              */
*DCL CD0WM     BIT(8) CONSTANT('01'X); /*  WRITE WITH EOM            */
*DCL CD0WT     BIT(8) CONSTANT('02'X); /*  WRITE WITH EOT            */
*DCL CD0WD     BIT(8) CONSTANT('03'X); /*  WRITE WITH DISCONNECT     */
*DCL CD0WR     BIT(8) CONSTANT('06'X); /*  WRITE WITH READ           */
*DCL CD0WI     BIT(8) CONSTANT('07'X); /*  WRITE WITH INVITE         */
*DCL CD0WC     BIT(8) CONSTANT('08'X); /*  WRITE WITH CONTACT        */
*DCL CD0WCM    BIT(8) CONSTANT('09'X); /*  WRITE WITH CONTACT(EXT)   */
*DCL CD0WCT    BIT(8) CONSTANT('0A'X); /*  WRITE WITH CONTACT(EOT)   */
*DCL CD0WCD    BIT(8) CONSTANT('0B'X); /* WRITE WITH CONTACT & DISCON*/
*DCL CD0WCR    BIT(8) CONSTANT('0E'X); /*  WRITE WITH CONTACT & READ */
*
*DCL CD0TEST  BIT(8) CONSTANT('03'X); /* TEST COMMAND                */
*/*                                                                  */
*/*      TEST MODIFIERS                                              */
*/*                                                                  */
*DCL CD0T     BIT(8) CONSTANT('00'X); /*  TEST DEVICE NORMAL         */
*DCL CD0TC    BIT(8) CONSTANT('01'X); /*  TEST DEVICE WITH CONTACT   */
*DCL CD0TD    BIT(8) CONSTANT('02'X); /*  TEST DEVICE WITH DISCONN   */
*DCL CD0TCD   BIT(8) CONSTANT('03'X); /*  TEST DEV WITH CONTACT & DIS*/
*DCL CD0TI    BIT(8) CONSTANT('04'X); /*  TEST LINE NORMAL           */
*DCL CD0TIC   BIT(8) CONSTANT('05'X); /*  TEST LINE WITH CONTACT     */
*DCL CD0TID   BIT(8) CONSTANT('06'X); /*  TEST LINE WITH DISCONNECT  */
*DCL CD0TICD  BIT(8) CONSTANT('07'X); /*  TEST LINE WITH CONT & DISC */
*
*/*                                                                  */
*/*      RESTART MODIFIERS                                           */
*/*                                                                  */
*DCL CD0RLINE BIT(8) CONSTANT('00'X); /*  LINE                       */
*DCL CD0RDEV  BIT(8) CONSTANT('01'X); /*  DEVICE                     */
*DCL CD0RLSES BIT(8) CONSTANT('02'X); /*  REP SESS INIT INFO FOR LINE*/
*DCL CD0RDSES BIT(8) CONSTANT('04'X); /*  REP SESS INIT INFO FOR DEV */
*
*DCL CD0INV   BIT(8) CONSTANT('05'X); /* INVITE COMMAND              */
*/*                                                                  */
*/*      INVITE MODIFIERS                                            */
*/*                                                                  */
*DCL CD0I     BIT(8) CONSTANT('00'X); /*  INVITE NCORMAL             */
*DCL CD0IB    BIT(8) CONSTANT('01'X); /*  INVITE BLOCK               */
*DCL CD08M    BIT(8) CONSTANT('02'X); /*  INVITE MESSAGE             */
*DCL CD0IT    BIT(8) CONSTANT('03'X); /*  INVITE TRANSMISSION        */
*DCL CD08D    BIT(8) CONSTANT('04'X); /*  INVITE TRANS WITH DISC     */
*DCL CD08A    BIT(8) CONSTANT('05'X); /*  INVITE WITH AUTO RESTART   */
*DCL CD0IP    BIT(8) CONSTANT('06'X); /*  INVITE PERPETUAL           */
*
*DCL CD0CONT  BIT(8) CONSTANT('06'X); /* CONTACT COMMAND             */
*/*                                                                  */
*/*      NO CONTACT MODIFIERS                                        */
*/*                                                                  */
*
*DCL CD0DISC  BIT(8) CONSTANT('07'X); /* DISCONNECT COMMAND          */
*/*                                                                  */
*/*      DISCONNECT MODIFIERS                                        */
*/*                                                                  */
*DCL CD0D     BIT(8) CONSTANT('00'X); /*  DISCONNECT NORMAL          */
*DCL CD0DI    BIT(8) CONSTANT('01'X); /* DISCONNECT WITH INVITE      */
*DCL CD0DE    BIT(8) CONSTANT('02'X); /*  DISCONNECT WITH END-OF-CALL*/
*DCL CD0DEI   BIT(8) CONSTANT('03'X); /*  DISCONNECT WITH EOC AND INV*/
*
*DCL CD0CTRL  BIT(8) CONSTANT('08'X); /* CONTROL COMMAND             */
*/*                                                                  */
*/*      CONTROL MODIFIERS                                           */
*/*                                                                  */
*DCL CD0CDISL BIT(8) CONSTANT('01'X); /*  DISPLAY LINE STATUS        */
*DCL CD0CRSII BIT(8) CONSTANT('02'X); /*  REP SESS INIT INFO FOR LINE*/
*DCL CD0CA8   BIT(8) CONSTANT('03'X); /*  ACTIVATES INVITES          */
*DCL CD0CDI   BIT(8) CONSTANT('04'X); /*  DEACTIVATES INVITES        */
*DCL CD0CCSII BIT(8) CONSTANT('05'X); /*  COPY SESS INIT INFO        */
*DCL CD0CDDS  BIT(8) CONSTANT('06'X); /*  DISPLAY DEVICE STATUS      */
*DCL CD0CRDS  BIT(8) CONSTANT('07'X); /*  REQ DEVICE STATISTICS      */
*DCL CD0CDS   BIT(8) CONSTANT('08'X); /*  DISPLAY STORAGE            */
*DCL CD0CSTD  BIT(8) CONSTANT('09'X); /*  SET TIME AND DATE          */
*DCL CD0CSCMS BIT(8) CONSTANT('0A'X); /*  SET CHANNEL MODE SECONDARY */
*DCL CD0CDLNA BIT(8) CONSTANT('0B'X); /*  DISPLAY LINE'S NETWORK ADDR*/
*DCL CD0CALT  BIT(8) CONSTANT('0C'X); /*  ACTIVATE LINE TRACE        */
*DCL CD0CTLT  BIT(8) CONSTANT('0D'X); /*  TERMINATE LINE TRACE       */
*DCL CD0CCMS  BIT(8) CONSTANT('12'X); /*  CHANGE MODEM SPEED         */
*DCL CD0CSCMP BIT(8) CONSTANT('15'X); /*  SET CHANNEL MODE PRIMARY   */
*DCL CD0CCDM  BIT(8) CONSTANT('18'X); /*  COPY DESTINATION MODE      */
*DCL CD0CPD   BIT(8) CONSTANT('1C'X); /*  PHYSICAL DISCONNECT        */
*DCL CD0CCDSI BIT(8) CONSTANT('21'X); /*  COPY DEV SESSION INFO      */
*DCL CD0CRDSI BIT(8) CONSTANT('22'X); /*  REP DEV SESSION INFO       */
*DCL CD0CREL  BIT(8) CONSTANT('41'X); /*  RESET ERROR LOCK           */
*DCL CD0CRD1  BIT(8) CONSTANT('42'X); /*  RESET DEVICE QUEUES        */
*DCL CD0CRCMR BIT(8) CONSTANT('43'X); /*  REQ CONTROL MODE RESET     */
*DCL CD0CRI   BIT(8) CONSTANT('44'X); /*  RESET IMMEDIATE            */
*DCL CD0CROTT BIT(8) CONSTANT('48'X); /*  RESET ONLINE TERMINAL TEST */
*DCL CD0CSTB  BIT(8) CONSTANT('4A'X); /*  SWITCH TO BACKUP           */
*DCL CD0CSBTP BIT(8) CONSTANT('4C'X); /*  SWITCH FROM BACKUP TO PRIM */
*DCL CD0CRINV BIT(8) CONSTANT('4D'X); /*  RESET INVITE               */
*DCL CD0CRC   BIT(8) CONSTANT('50'X); /*  RESET CONDITIONAL          */
*DCL CD0CREOC BIT(8) CONSTANT('60'X); /*  RESET AT END OF COMMAND    */
*DCL CD0CSEP  BIT(8) CONSTANT('82'X); /*  SWITCH TO EP MODE          */
*DCL CD0CSNCP BIT(8) CONSTANT('83'X); /*  SWITCH TO NCP MODE         */
*DCL CD0CCLSP BIT(8) CONSTANT('84'X); /*  CHGE LINE SERV-SEEKING PAUS*/
*DCL CD0CCLNR BIT(8) CONSTANT('85'X); /*  CHGE LINE NEG POLL RSP LIM */
*DCL CD0CCSL  BIT(8) CONSTANT('86'X); /*  CHGE SESSION LIMIT         */
*DCL CD0CCDTL BIT(8) CONSTANT('8C'X); /*  CHGE DEV TRANSMISSION LIMIT*/
*DCL CD0CMBHS BIT(8) CONSTANT('8D'X); /*  MOD BLK HANDLER SET ASSOC  */
*DCL CD0CAL   BIT(8) CONSTANT('98'X); /*  ACTIVATE LINE              */
*DCL CD0CD0   BIT(8) CONSTANT('99'X); /*  DEACTIVATE ORDERLY         */
*DCL CD0CSDM  BIT(8) CONSTANT('9A'X); /*  SET DESTINATION MODE       */
*DCL CD0CDLH  BIT(8) CONSTANT('C2'X); /*  DEACTIVATE LINE HALT       */
./ ADD NAME=TCMD1D
*        %GOTO CMD1PLS;                /* BILINGUAL HEADER
         MACRO
         TCMD1D
.*A000000-999999                                               @Y17XAXF
*
*        DFC FID1 COMMANDS
*
CD1PREPS EQU   X'02' .             PREPARE SWITCH
CD1SWCOM EQU   X'03' .             SWITCH COMPLETE
CD1LSTAT EQU   X'04' .             LUSTAT
CD1RTR   EQU   X'05' .             READY TO RECEIVE
CD1ANS   EQU   X'06' .             AUTO NETWORK SHUTDOWN
CD1ANSC  EQU   X'07' .             ANS COMPLETE
CD1ACTLU EQU   X'0D' .             ACTIVATE LU
CD1DATLU EQU   X'0E' .             DEACTIVATE LU
CD1ACTPU EQU   X'11' .             ACTIVATE PU
CD1DATPU EQU   X'12' .             DEACTIVATE PU
CD1BIND  EQU   X'31' .             BIND
CD1UBIND EQU   X'32' .             UNBIND
CD1INITC EQU   X'50' .             INIT COMPLETE
CD1QEC   EQU   X'80' .             QUIESCE AT END OF CHAIN
CD1QC    EQU   X'81' .             QUIESCE COMPLETE
CD1REL1  EQU   X'82' .             RELEASE QUIESCE
CD1CANCL EQU   X'83' .             CANCEL
CD1CHASE EQU   X'84' .             CHASE
CD1SDT   EQU   X'A0' .             START DATA TRAFFIC
CD1CLEAR EQU   X'A1' .             CLEAR
CD1STSN  EQU   X'A2' .             SET AND TEST SEQ NUMBERS
CD1RQR   EQU   X'A3' .             REQUEST RECEIVED
CD1SHUTD EQU   X'C0' .             SHUTDOWN
CD1SHUTC EQU   X'C1' .             SHUTDOWN COMPLETE
CD1RSHUT EQU   X'C2' .             REQUEST SHUTDOWN
CD1BID   EQU   X'C8' .             BID
CD1SIG   EQU   X'C9' .             SIGNAL
         EJECT
*
*
*        NETWORK SERVICES FID1 COMMANDS
*
*
CD1NETS  EQU   X'01' .             NETWORK SERVICES IND
         SPACE
*
*        CONFIGURATION SERVICES FID1 COMMANDS
*
CD1CONFS EQU   X'02' .             CONFIGURATION SERV IND
         SPACE
CD1CONT  EQU   X'01' .               CONTACT
CD1DCONT EQU   X'02' .               DISCONTACT
CD1IPLI  EQU   X'03' .               IPL INITIAL
CD1IPLT  EQU   X'04' .               IPL TEXT
CD1IPLF  EQU   X'05' .               IPL FINAL
CD1DMPI  EQU   X'06' .               DUMP INITIAL
CD1DMPT  EQU   X'07' .               DUMP TEXT
CD1DMPF  EQU   X'08' .               DUMP FINAL
CD1RPO   EQU   X'09' .               REMOTE POWER OFF
CD1ACTLK EQU   X'0A' .               ACTIVATE LINK
CD1DATLK EQU   X'0B' .               DEACTIVATE LINK
CD1CESLW EQU   X'0C' .               CONTROL ENTER SLOWDOWN
CD1CXSLW EQU   X'0D' .               CONTROL EXIT SLOWDOWN
CD1CONNO EQU   X'0E' .               CONNECT OUT
CD1ABC   EQU   X'0F' .               ABANDON CONNECTION
CD1SETV  EQU   X'11' .               SET CONTROL VECTOR
CD1SENV  EQU   X'12' .               SENSE CONTROL VECTOR
CD1ESLOW EQU   X'14' .               ENTERING SLOWDOWN
CD1EXSLW EQU   X'15' .               EXITING SLOWDOWN
CD1ACI   EQU   X'16' .               ACTIVATE CONNECT IN
CD1DCI   EQU   X'17' .               DEACTIVATE CONNECT IN
CD1ACO   EQU   X'18' .               ABANDON CONNECT OUT
CD1ANA   EQU   X'19' .               ASSIGN NETWORK ADDR
CD1FNA   EQU   X'1A' .               FREE NETWORK ADDR
CD1REQD  EQU   X'1B' .               REQUEST DISCONTACT
CD1CONCT EQU   X'80' .               CONTACTED
CD1INOP  EQU   X'81' .               INOPERATIVE
CD1REQC  EQU   X'84' .               REQUEST CONTACT
         SPACE
*
*        MAINTENANCE SERVICES FID1 COMMANDS
*
CD1MAINT EQU   X'03' .             MAINTENANCE SERV IND
         SPACE
CD1EX    EQU   X'01' .               EXECUTE TEST
CD1ACTTR EQU   X'02' .               ACTIVATE TRACE
CD1DACTR EQU   X'03' .               DEACTIVATE TRACE
CD1RTP   EQU   X'08' .               REQUEST TEST PROCEDURE
CD1RMS   EQU   C'81' .               RECORD MAINTENANCE STATISTICS
CD1RTTD  EQU   X'82' .               RECORD TEST DATA
CD1RTRD  EQU   X'83' .               RECORD TRACE DATA
         SPACE
*
*        MEASUREMENT SERVICES FID1 COMMANDS
*
CD1MEAS  EQU   X'04' .             MEASUREMENT SERVICES IND
         SPACE
CD1STM   EQU   X'01' .               START MEASUREMENT
CD1SPM   EQU   X'02' .               STOP MEASUREMENT
CD1RMD   EQU   X'80' .               RECORD MEASUREMENT DATA
         SPACE
*
*        SESSION SERVICES FID1 COMMANDS
*
CD1SESS  EQU   X'06' .             SESSION SERVICES IND
         SPACE
CD1CINIT EQU   X'01' .               CONTROL INITIATE
CD1CTERM EQU   X'02' .               CONTROL TERMINATE
CD1NSPRO EQU   X'04' .               NS PROC ERROR
CD1INITS EQU   X'81' .               INITIATE SELF
CD1INITO EQU   X'81' .               INITIATE OTHER
CD1TERMO EQU   X'82' .               TERMINATE OTHER
CD1TERMS EQU   X'83' .               TERMINATE SELF
CD1BINDF EQU   X'85' .               BIND FAILURE
CD1SESST EQU   X'86' .               SESSION STARTED
CD1UBNDF EQU   X'87' .               UNBIND FAILURE
CD1SESEN EQU   X'88' .               SESSION ENDED
         MEND
*        */
*%CMD1PLS:;
*/*                                                                  */
*/*      DFC FID1 COMMANDS                                           */
*/*                                                                  */
* DCL CD1PREPS BIT(8) CONSTANT('02'X);  /* PREPARE SWITCH            */
* DCL CD1SWCOM BIT(8) CONSTANT('03'X);  /* SWITCH COMPLETE           */
* DCL CD1LSTAT BIT(8) CONSTANT('04'X);  /* LUSTAT                    */
* DCL CD1RTR   BIT(8) CONSTANT('05'X);  /* READY TO RECEIVE          */
* DCL CD1ANS   BIT(8) CONSTANT('06'X);  /* AUTO NETWORK SHUTDOWN     */
* DCL CD1ANSC  BIT(8) CONSTANT('07'X);  /*  ANS COMPLETE             */
* DCL CD1ACTLU BIT(8) CONSTANT('0D'X);  /* ACTIVATE LU               */
* DCL CD1DATLU BIT(8) CONSTANT('0E'X);  /* DEACTIVATE LU             */
* DCL CD1ACTPU BIT(8) CONSTANT('11'X);  /* ACTIVATE PU               */
* DCL CD1DATPU BIT(8) CONSTANT('12'X);  /* DEACTIVATE PU             */
* DCL CD1BIND  BIT(8) CONSTANT('31'X);  /* BIND                      */
* DCL CD1UBIND BIT(8) CONSTANT('32'X);  /* UNBIND                    */
* DCL CD1INITC BIT(8) CONSTANT('50'X);  /* INIT COMPLETE             */
* DCL CD1QEC   BIT(8) CONSTANT('80'X);  /* QUIESCE AT END OF CHAIN   */
* DCL CD1QC    BIT(8) CONSTANT('81'X);  /* QUIESCE COMPLETE          */
* DCL CD1RELQ  BIT(8) CONSTANT('82'X);  /* RELEASE QUIESCE           */
* DCL CD1CANCL BIT(8) CONSTANT('83'X);  /* CANCEL                    */
* DCL CD1CHASE BIT(8) CONSTANT('84'X);  /* CHASE                     */
* DCL CD1SDT   BIT(8) CONSTANT('A0'X);  /* START DATA TRAFFIC        */
* DCL CD1CLEAR BIT(8) CONSTANT('A1'X);  /* CLEAR                     */
* DCL CD1STSN  BIT(8) CONSTANT('A2'X);  /* SET AND TEST SEQ NUMBERS  */
* DCL CD1RQR   BIT(8) CONSTANT('A3'X);  /* REQUEST RECEIVED          */
* DCL CD1SHUTD BIT(8) CONSTANT('C0'X);  /* SHUTDOWN                  */
* DCL CD1SHUTC BIT(8) CONSTANT('C1'X);  /* SHUTDOWN COMPLETE         */
* DCL CD1RSHUT BIT(8) CONSTANT('C2'X);  /* REQUEST SHUTDOWN          */
* DCL CD1BID  BIT(8) CONSTANT('C8'X);   /* BID                       */
* DCL CD1SIG   BIT(8) CONSTANT('C9'X);  /* SIGNAL                    */
         @EJECT;
*/*                                                                  */
*/*                                                                  */
*/*      NETWORK SERVICES FID1 COMMANDS                              */
*/*                                                                  */
*/*                                                                  */
* DCL CD1NETS  BIT(8) CONSTANT('01'X);  /* NETWORK SERV IND          */
         @SPACE;
*/*                                                                  */
*/*      CONFIGURATION SERVICES FID1 COMMANDS                        */
*/*                                                                  */
* DCL CD1CONFS BIT(8) CONSTANT('02'X);  /* CONFIGURATION SERV IND    */
         @SPACE;
* DCL CD1CONT  BIT(8) CONSTANT('01'X);  /*   CONTACT                 */
* DCL CD1DCONT BIT(8) CONSTANT('02'X);  /*   DISCONTACT              */
* DCL CD1IPLI  BIT(8) CONSTANT('03'X);  /*   IPL INITIAL             */
* DCL CD1IPLT  BIT(8) CONSTANT('04'X);  /*   IPL TEXT                */
* DCL CD1IPLF  BIT(8) CONSTANT('05'X);  /*   IPL FINAL               */
* DCL CD1DMPI  BIT(8) CONSTANT('06'X);  /*   DUMP INITIAL            */
* DCL CD1DMPT  BIT(8) CONSTANT('07'X);  /*   DUMP TEXT               */
* DCL CD1DMPF  BIT(8) CONSTANT('08'X);  /*   DUMP FINAL              */
* DCL CD1RPO   BIT(8) CONSTANT('09'X);  /*   REMOTE POWER OFF        */
* DCL CD1ACTLK BIT(8) CONSTANT('0A'X);  /*   ACTIVATE LINK           */
* DCL CD1DACLK BIT(8) CONSTANT('0B'X);  /*   DEACTIVATE LINK         */
* DCL CD1CESLW BIT(8) CONSTANT('0C'X);  /*   CONTROL ENTER SLOWDOWN  */
* DCL CD1CXSLW BIT(8) CONSTANT('0D'X);  /*   CONTROL EXIT SLOWDOWN   */
* DCL CD1CONNO BIT(8) CONSTANT('0E'X);  /*   CONNECT OUT             */
* DCL CD1ABC   BIT(8) CONSTANT('0F'X);  /*   ABANDON CONNECTION      */
* DCL CD1SETV  BIT(8) CONSTANT('11'X);  /*   SET CONTROL VECTOR      */
* DCL CD1SENV  BIT(8) CONSTANT('12'X);  /*   SENSE CONTROL VECTOR    */
* DCL CD1ESLOW BIT(8) CONSTANT('14'X);  /*   ENTERING SLOWDOWN       */
* DCL CD1EXSLW BIT(8) CONSTANT('15'X);  /*   EXITING SLOWDOWN        */
* DCL CD1ACI   BIT(8) CONSTANT('16'X);  /*   ACTIVATE CONNECT IN     */
* DCL CD1DCI   BIT(8) CONSTANT('17'X);  /*   DEACTIVATE CONNECT IN   */
* DCL CD1ACO   BIT(8) CONSTANT('18'X);  /*   ABANDON CONNECT OUT     */
* DCL CD1ANA   BIT(8) CONSTANT('19'X);  /*   ASSIGN NETWORK ADDR     */
* DCL CD1FNA   BIT(8) CONSTANT('1A'X);  /*   FREE NETWORK ADDR       */
* DCL CD1REQD  BIT(8) CONSTANT('1B'X);  /*   REQUEST DISCONTACT      */
* DCL CD1CONCT BIT(8) CONSTANT('80'X);  /*   CONTACTED               */
* DCL CD1INOP  BIT(8) CONSTANT('81'X);  /*   INOPERATIVE             */
* DCL CD1REQC  BIT(8) CONSTANT('84'X);  /*   REQUEST CONTACT         */
         @SPACE;
*/*                                                                  */
*/*      MAINTENANCE SERVICES FID1 COMMANDS                          */
*/*                                                                  */
* DCL CD1MAINT BIT(8) CONSTANT('03'X);  /* MAINTENANCE SERV IND      */
         @SPACE;
* DCL CD1EX    BIT(8) CONSTANT('01'X);  /*   EXECUTE TEST            */
* DCL CD1ACTTR BIT(8) CONSTANT('02'X);  /*   ACTIVATE TRACE          */
* DCL CD1DACTR BIT(8) CONSTANT('03'X);  /*   DEACTIVATE TRACE        */
* DCL CD1RTP   BIT(8) CONSTANT('80'X);  /*   REQUEST TEST PROCEDURE  */
* DCL CD1RMS   BIT(8) CONSTANT('81'X);  /*   RECORD MAINT STATISTICS */
* DCL CD1RTTD  BIT(8) CONSTANT('82'X);  /*   RECORD TEST DATA        */
* DCL CD1RTRD  BIT(8) CONSTANT('83'X);  /*   RECORD TRACE DATA       */
         @SPACE;
*/*                                                                  */
*/*      MEASUREMENT SERVICES FID1 COMMANDS                          */
*/*                                                                  */
* DCL CD1MEAS  BIT(8) CONSTANT('04'X);  /*   MEASUREMENT SERV IND    */
         @SPACE;
* DCL CD1STM   BIT(8) CONSTANT('01'X);  /*   START MEASUREMENT       */
* DCL CD1STP   BIT(8) CONSTANT('02'X);  /*   STOP MEASUREMENT        */
* DCL CD1RMD   BIT(8) CONSTANT('80'X);  /*   RECORD MEASUREMENT DATA */
         @SPACE;
*/*                                                                  */
*/*      SESSION SERVICES FID1 COMMANDS                              */
* DCL CD1SESS  BIT(8) CONSTANT('06'X);  /* SESSION SERV IND          */
         @SPACE;
* DCL CD1CINIT BIT(8) CONSTANT('01'X);  /*   CONTROL INITIATE        */
* DCL CD1CTERM BIT(8) CONSTANT('02'X);  /*   CONTROL TERMINATE       */
* DCL CD1NSPRO BIT(8) CONSTANT('04'X);  /*   NS PROC ERROR           */
* DCL CD1INITS BIT(8) CONSTANT('81'X);  /*   INITIATE SELF           */
* DCL CD1INITO BIT(8) CONSTANT('81'X);  /*   INITIATE OTHER          */
* DCL CD1TERMO BIT(8) CONSTANT('82'X);  /*   TERMINATE OTHER         */
* DCL CD1TERMS BIT(8) CONSTANT('83'X);  /*   TERMINATE SELF          */
* DCL CD1BINDF BIT(8) CONSTANT('85'X);  /*   BIND FAILURE            */
* DCL CD1SESST BIT(8) CONSTANT('86'X);  /*   SESSION STARTED         */
* DCL CD1UBNDF BIT(8) CONSTANT('87'X);  /*   UNBIND FAILURE          */
* DCL CD1SESEN BIT(8) CONSTANT('88'X);  /*   SESSION ENDED           */
./ ADD NAME=TCNRD
*        %GOTO PLSCNR;                  /* BILINGUAL HEADER
         MACRO
         TCNRD
.*A000000,999999                                               @Y17XAXF
*
*        ASSEMBLER VERSION NOT SUPPORTED
*
         MEND  */
*%PLSCNR:;
*/*                                                                  */
*/*      3705 CHECKPOINT RESOURCE RECORD                             */
*/*                                                                  */
*DCL 1 IEDQCNRD BASED(RCKPREC),         /*3705 CHECKPOINT RESOURCE
*                                         RECORD                     */
*      2 CNRTNTOF FIXED(15),            /*TNT OFFSET OF THE RESOURCE */
*      2 CNRDATTM CHAR(8),              /*DATE AND TIME OF CKPT      */
*        3 CNRDATE CHAR(4),             /*DATE OF CKPT               */
*        3 CNRTIME CHAR(4),             /*TIME OF CKPT               */
*      2 CNRCNTL  BIT(16),              /*CONTROL FLAGS              */
*        3 CNRFBHS BIT(1),              /*ACT/DEACT BHSET ISSUED     */
*                                       /*                   @YM07411*/
*        3 CNRFBHSC BIT(1),             /*CHANGE BHSET ISSUED        */
*                                       /*                   @YM07411*/
*        3 CNRFSSP BIT(1),              /*SERVICE SEEKING PAUSE
*                                         ISSUED                     */
*        3 CNRFNPL BIT(1),              /*NEGATIVE POLL LIMIT ISSUED */
*        3 CNRFCSL BIT(1),              /*CHANGE SESSION LIMIT ISSUED*/
*        3 CNRFCTL BIT(1),              /*CHANGE TRANSMISSION LIMIT
*                                         ISSUED                     */
*        3 CNRFMSS BIT(1),              /*MODEM SPEED SELECT ISSUED  */
*        3 CNRFRDR BIT(1),              /*REPLACE DEVICE RECORD
*                                         ISSUED                     */
*        3 *       BIT(8),              /*RESERVED                   */
*      2 CNRBHSET CHAR(2),              /*BHSET DATA                 */
*        3 CNRBHFUN CHAR(1),            /*BHSET FUNCTION             */
*          4 CNRBHFN0 BIT(1),           /*FLAG FOR FUNCTION TYPE
*                                         0-ACT/DACT,1-CHANGE        */
*          4 *        BIT(7),           /*RESERVED                   */
*        3 CNRBHPOS CHAR(1),            /*BHSET POSITION             */
*      2 CNRSSPAU CHAR(1),              /*SERVICE SEEKING PAUSE DATA */
*      2 CNRNEGPL CHAR(1),              /*NEGATIVE POLL LIMIT DATA   */
*      2 CNRCSLIM CHAR(1),              /*CHANGE SESSION LIMIT DATA  */
*      2 CNRCTLIM CHAR(1),              /*CHANGE TRANSMISSION LIMIT
*                                         DATA                       */
*      2 CNRMSSEL CHAR(1),              /*MODEM SPEED SELECT DATA    */
*      2 CNRDEVRC CHAR(*);              /*DEVICE RECORD              */
./ ADD NAME=TCOMD
*        %GOTO COMPLS;                  /* BILINGUAL HEADER
         MACRO
         TCOMD
.*A000000,999999                                               @Y17XAXF
IEDCOM   DSECT
*
*        DSECT FOR COMMON IPL/DMP WKAREA (IGCMH10D,MI,MP,MD,ME,MF,MG)
*
COMKEY   DS    XL1 .                    KEY FIELD
COMQCB   DS    AL3 .                    QCB ADDRESS
COMPRI   DS    XL1 .                    PRIORITY FIELD
COMLINK  DS    AL3 .                    LINK FIELD
COMOPCE  DS    A .                      OPCE POINTER
COMFLAGS DS    XL1 .                    FLAG FIELD
COMDLCN4 EQU   X'02' .                   DLC RETURN TO N4
COMDLCMP EQU   X'12' .                   DLC RETURN TO MP
COMDLCMF EQU   X'14' .                   DLC RETURN TO MF
         DS    AL3 .                    RESERVED
COMTTRZ  DS    A .                      TTR SAVE AREA          @YM04692
         MEND
*        */
*%COMPLS:;
*DECLARE
*  1 IEDCOM BASED BDY(WORD),
*/*                                                                  */
*/*      DSECT FOR COMMON IPL/DMP WKAREA (IGCMH10D,MI,MP,MD,ME,MF,MG)*/
*/*                                                                  */
*   2 COMKEY   PTR(8),                  /* KEY FIELD                 */
*   2 COMQCB   PTR(24),                 /* QCB ADDRESS               */
*   2 COMPRI   PTR(8),                  /* PRIORITY FIELD            */
*   2 COMLINK  PTR(24),                 /* LINK FIELD                */
*   2 COMOPCE  PTR(31),                 /* OPCE POINTER              */
*   2 COMFLAGS BIT(8),                  /* FLAG FIELD                */
*   2 *        PTR(24),                 /* RESERVED                  */
*   2 COMTTRZ  PTR(31),                 /* TTR SAVE AREA     @YM04692*/
./ ADD NAME=TCOMDMPD
*        %GOTO COMDPLS;                 /* BILINGUAL HEADER
         MACRO
         TCOMDMPD
.*A000000.999999                                               @Y17XAXF
*
*        COMMON DUMP WORKAREA (IGCMP10D)
*
COMINBF1 DS    512C .                   INPUT BUFFER1
COMINBF2 DS    512C .                   INPUT BUFFER2
         DS    F .                      RESERVED
COMNEXT  DS    A .                      NEXT DATA TO XFER
COMNEXT1 DS    A .                      INITIAL AREA
COMDECB  DS    20C .                    DECB FOR WRITES
COMLEN   EQU   *-IEDCOM .               COMMON WKAREA LENGTH
         MEND
*        */
*%COMDPLS:;
*/*                                                                  */
*/*      COMMON DUMP WKAREA (IGCMP10D)                               */
*/*                                                                  */
*   2 COMINBF1 CHAR(512),               /* INPUT BUFFER1             */
*   2 COMINBF2 CHAR(512),               /* INPUT BUFFER2             */
*   2 *        PTR(31),                 /* RESERVED                  */
*   2 COMNEXT  PTR(31),                 /* NEXT DATA TO XFER         */
*   2 COMNEXT1 PTR(31),                 /* INITIAL AREA              */
*   2 COMDECB  CHAR(20);                /* DECB FOR WRITES           */
*%COMLEN='LENGTH(IEDCOM)';              /* COMMON WKAREA LENGTH      */
*/* COMFLAGS VALUES                                                  */
*DCL COMDLCN4 BIT(8) CONSTANT('02'X);   /* DLC RETURN TO N4          */
*DCL COMDLCMP BIT(8) CONSTANT('12'X);   /* DLC RETURN TO MP          */
*DCL COMDLCMF BIT(8) CONSTANT('14'X);   /* DLC RETURN TO MF          */
./ ADD NAME=TCOMIPLD
*        %GOTO COMIPLS;                 /* BILINGUAL HEADER
         MACRO
         TCOMIPLD
.*A000000,999999
*
*        COMMON IPL WORKAREA (IGCMD10D,MF,ME,MG)
*
COMCCWS  DS    3D .                     CHANNEL COMMAND WORDS
COMCCW1  EQU   COMCCWS .                 1ST CCW
COM1CNT  EQU   COMCCW1+6                 1ST CCW COUNT
COMCCW2  EQU   COMCCWS+8 .               2ND CCW
         DS    F .                      RESERVED
COMINBF1 DS    512C .                   INPUT BUFFER1
COMINBF2 DS    512C .                   INPUT BUFFER2
COMLEN   EQU   *-IEDCOM .               COMMON WKAREA LENGTH
         MEND
*        */
*%COMIPLS:;
*/*                                                                  */
*/*      COMMON IPL WORKAREA (IGCMD10D,MF,ME,MG)                     */
*/*                                                                  */
*   2 COMCCWS  CHAR(24),                /* CHANNEL COMMAND WORDS     */
*    3 COMCCW1  CHAR(8),                /*  1ST CCW                  */
*     4 *        CHAR(6),               /*   RESERVED                */
*     4 COM1CNT  CHAR(1),               /*   1ST CCW COUNT           */
*     4 *        CHAR(1),               /*   RESERVED                */
*    3 COMCCW2  CHAR(8),                /*  2ND CCW                  */
*    3 *        CHAR(8),                /*  RESERVED                 */
*   2 *        CHAR(4),                 /* RESERVED                  */
*   2 COMINBF1 CHAR(512),               /* INPUT BUFFER1             */
*   2 COMINBF2 CHAR(512);               /* INPUT BUFFER2             */
*%COMLEN='LENGTH(IEDCOM)';              /* COMMON WKAREA LENGTH      */
*/* COMFLAGS VALUES                                                  */
*DCL COMDLCN4 BIT(8) CONSTANT('02'X);   /* DLC RETURN TO N4          */
*DCL COMDLCMP BIT(8) CONSTANT('12'X);   /* DLC RETURN TO MP          */
*DCL COMDLCMF BIT(8) CONSTANT('14'X);   /* DLC RETURN TO MF          */
./ ADD NAME=TCOMTAB
*        %GOTO MTABLBL  ; /*
         MACRO
         TCOMTAB
TCOMTAB  DSECT
         SPACE 1
***********************************************************************
*                                                                     *
*        THIS MACRO MAPS THE TEST COMMAND PROCESSOR COMMUNICATION     *
*        TABLE (TCOMTAB) USED BY ALL SUBCOMMAND PROCESSORS AND        *
*        SERVICE ROUTINES WHICH MAKE UP THE TSO/TEST COMMAND.         *
*                                                                     *
* STATUS -- VERSION NO. 01 - OS/VS2 RELEASE NO. 01                    *
*                                                                     *
* CHANGE LEVEL -- 04 - DATE 04/25/72                                  *
*                                                                     *
***********************************************************************
         SPACE 1
ECBPP    DS    A -            PP DISPATCHABILITY ECB.
         SPACE 1
ECBLIST  EQU   * -            BEGINNING OF ECBLIST FOR WAIT.
ECBTST   DS    A -            PTR TO TEST DISPATCHABILITY ECB.
ECBTERM  DS    A -            PTR TO PP TERMINATION ECB.
ECBTMPS  DS    A -            PTR TO STAI ECB.
ECBTMPA  DS    A -            PTR TO ATTENTION ECB.
         SPACE 1
ECBLOG   DS    A -            PTR TO STOP/MODIFY ECB.
         SPACE 1
TSTTCB   DS    0A -           PTR TO THE TEST TCB.
TSTTCBR  DS    X -            RESERVED.
TSTTCBP  DS    AL3 -          PTR TO THE TEST TCB.
         SPACE 1
PPTCB    DS    0A -           PTR TO THE PROBLEM PROGRAM TCB.
PPTCBR   DS    X -            RESERVED.
PPTCBP   DS    AL3 -          PTR TO THE PROBLEM PROGRAM TCB.
         DS    D -            *** RESERVED SPACE ***
         SPACE 1
OUTBUF   DS    A -            PTR TO GENERAL OUTPUT BUFFER.
OUTBUFRL EQU   256 -          LENGTH OF OUTPUT BUFFER.
BLDLAREA DS    0A -           ADDRESS OF BLDL ENTRY USED BY
*                             IKJEGINT AND IKJEGLDR.
CONAREA  DS    A -            PTR TO OUTPUT AREA USED BY CONVERT RTN.
CONAREAL EQU   72 -           LENGTH OF CONVERT WORK AREA.
WORKAREA DS    A -            PTR TO GENERAL WORK AREA.
REGSAVEL EQU   72*6 -         LENGTH OF 6 REGISTER SAVE AREAS.
REGSAVE1 DS    A -            PTR TO SAVE AREA FOR MAINLINE.
REGSAVE2 DS    A -            PTR TO SAVE AREA FOR COMMANDS.
REGSAVE3 DS    A -            PTR TO SAVE AREA FOR VALIDITY CHECKERS.
REGSAVE4 DS    A -            PTR TO SAVE AREA FOR IKJEGCVT.
REGSAVE5 DS    A -            PTR TO SAVE AREA FOR IKJEGIO.
REGSAVE6 DS    A -            PTR TO SAVE AREA FOR IKJEGSRH.
         DS    A -            *** RESERVED SPACE ***
         SPACE 1
TPLPTR   DS    A -            PTR TO TPL
TMPLL    DS    H -            LINE LENGTH
TSTMTASK DS    X -            BREAKPOINT SYNCHRONIZATION BYTE.
TSTESTRC DS    X -            ESATE ERROR RETURN CODE
TSTWHR   DS    A -            PTR TO COMMAND LIB DCB.
         SPACE 1
PARMLIST DS    0F -           PARM LIST FOR CALLING SERVICE ROUTINES
TSTUPT   DS    A -            PTR TO UPT
TSTECT   DS    A -            PTR TO ECT
TSTCPECB DS    A -            PTR TO CP ECB
         SPACE 1
TSTANSPL DS    A -            ANSWER PLACE FOR PARSE SERVICE ROUTINE.
         SPACE 1
ABENTAB  DS    A -            PTR TO ABEND VECTOR TABLE(RESIDENT).
ABENTAB1 DS    A -            PTR TO ABEND VECTOR TABLE(TRANSIENT).
TSTRETRY DS    0A -           ENTRY POINT OF TRANSIENT RETRY ROUTINE.
TSTRTYCD DS    X -            SUBCOMMAND ID.
TSTRTYPT DS    AL3 -          PTR TO A STAE RETRY ROUTINE WITHIN ANY
*                             TEST MODULE THAT HAS ISSUED A STAE
         SPACE 1
INBUF    DS    A -            PTR TO BUFFER CONTAINING SUBCMD
TSTIODSN DS    A -            HEAD OF DSNAME CHAIN FOR IKJEGIO 'PRINT'.
TSTIO    DS    A -            ENTRY POINT OF GET ROUTINE IKJEGIO.
         DS    A -            RESERVED
         DS    A -            RESERVED
TSTCONVT DS    A -            ENTRY POINT OF IKJEGCVT.
TSTADDR  DS    A -            ENTRY POINT OF ADDRESS BUILD SUBROUTINE.
TSTSTAE  DS    A -            ENTRY POINT OF STAE EXIT RTN. (IKJEGSTA).
         SPACE 2
TSTFLGS1 DS    X -            TEST FLAGS, BYTE 1.
         SPACE 1
PCHLSTVL EQU   B'10000000' -  PATCH LIST SWITCH.
S9GINTSW EQU   B'01000000' -  INTERNAL SW FOR SVC97          @ZA05687
TSTPRINT EQU   B'00100000' -  PRINT SWITCH.
TSTFIRST EQU   B'00010000' -  FIRST TIME SWITCH.
RANGESW  EQU   B'00001000' -  INDICATES PDE IS FOR ADDRESS RANGE.
TSTBUILD EQU   B'00000100' -  'AT' SWITCH FOR DEFER CHECK.
ENDSW    EQU   B'00000010' -  INDICATES 'END' TO MAINLINE.
RUNSW    EQU   B'00000001' -  INDICATES 'RUN' TO MAINLINE.
         SPACE 2
TSTFLGS2 DS    X -            TEST FLAGS, BYTE 2.
         SPACE 1
TSTLDF   EQU   B'10000000' -  IKJEGLDF TASK-SWITCH INDICATOR.
TSTXCTL  EQU   B'01000000' -  STAE XCTL INDICATOR.
TOFFDEF  EQU   B'00100000' -  NO ACTIVE BREAKPOINTS.
TTESTTCB EQU   B'00010000' -  RUNNING UNDER TEST TASK.
TADDROUT EQU   B'00001000' -  LOAD MODULE FOUND UNDER TCB.
TWHRLOAD EQU   B'00000100' -  VALID LOAD MODULE CHECK.
TSTQUAL  EQU   B'00000010' -  QUALIFICATION IS IN PROCESS
TMYIOMSG EQU   B'00000001' -  IKJEGIO MESSAGE SWITCH.
         SPACE 2
TSTFLGS3 DS    X -            TEST FLAGS, BYTE 3.
         SPACE 1
TSTGOSW  EQU   B'10000000' -  SPECIAL BREAKPOINT TYPE SWITCH.
TSTSTAI  EQU   B'01000000' -  PROBLEM PROGRAM ABEND INDICATOR.
SYMMESG  EQU   B'00100000' -  SYM 'NO DIAGNOSTIC' SWITCH.
TCSECTCK EQU   B'00010000' -  CSECT ONLY DEFER QUEUE CLEAR.
TDUPNAME EQU   B'00001000' -  DEFER QUEUE DUPLICATE NAME BIT.
TSTLINK  EQU   B'00000100' -  SUB-CMD 'LINK FAILED' INDICATOR.
TSTHELP  EQU   B'00000010' -  INDICATES THAT 'HELP' IS ATTACHED.
NOPARMS  EQU   B'00000001' -  INDICATES NO PARAMETERS WITH COMMAND.
         SPACE 2
TSTFLGS4 DS    X              TEST FLAGS, BYTE 4.
         SPACE 1
TSTA     EQU   B'10000000' -  TEST'S INPUT IS NOT FROM A STACK.
TSTB     EQU   B'01000000' -  A STACKED TERMINAL ELEM. IS PRESENT.
TSTFLUSH EQU   B'00100000' -  FORCE TCLEARQ AND POSSIBLE STACK FLUSH.
TSTRERTN EQU   B'00010000' -  A RETRY IS IN PROCESS
TSTESTAE EQU   B'00001000' -  ESTAE IS INVOKING I/O FOR MESSAGE
TSTSVCAB EQU   B'00000100' -  SVC ABEND IS IN PROCESS
TSTPERC  EQU   B'00000010' -  THIS RETRY ROUTINE WAS PERCOLLATED TO
TSTVALCK EQU   B'00000001' -  INDICATES PARSE VALIDITY CHECK IN PROCESS
         SPACE 2
BREAKTAB DS    A -            PTR TO FIRST BREAK ELEMENT.
DEFERTAB DS    A -            PTR TO DEFER'ED CMD LIST
PPLOAD   DS    A -            PTR TO CURRENT BASE FOR RELATIVES.
PPTEMP   DS    A -            TEMPORARY BASE FOR RELATIVES.
SUBCHAIN DS    A -            PTR TO BREAKPOINT SUBCOMMAND CHAIN.
         SPACE 1
TSTGO    DS    0X -           RESUME ADDRESS AFTER BREAKPOINT.
TSTGOPSW DS    F -            SECOND WORD OF RBOPSW FIELD.
TSTGOWCF DS    X -            WAIT COUNT FROM RBWCF FIELD.
TSTRSVD2 DS    X -            RESERVED BYTE.
TSTSVC   DS    H -            AN SVC 97 INSTRUCTION (0A61).
PPRB     DS    A -            CURRENT PROBLEM PROGRAM RB ADDRESS.
         SPACE 1
TSTIODCB DS    A -            PTR TO OPEN PRINT DCB.
CALLPARM DS    A -            HEAD OF CHAIN FOR PARMS BUILT BY 'CALL'.
         DS    A -            *** RESERVED SPACE ***
INTSTDDN DS    0CL8           DDNAME FOR DATA SET SPECIFIED ON THE TEST
*                             COMMAND - USED BY IKJEGINT AND IKJEGLDR.
TSTCURLD DS    CL8 -          CURRENTLY QUALIFIED LOAD NAME.
TERMDD   DS    0CL8 -         DDNAME FOR TERMINAL USED BY OS LOADER.
TSTCURCT DS    CL8 -          CURRENTLY QUALIFIED CSECT NAME.
TSTSYMBA DS    A -            CURRENTLY QUALIFIED SYMBOLIC ADDR BASE.
TSTTRN   DS    A -            HEAD OF SAVE INFORMATION CHAIN
SICHAIN  DS    A -            HEAD OF SYMBOL INFORMATION CHAIN
TSTSYMWK DS    A -            PTR TO SYMBOL PROCESSING WORK AREA.
SYMTABLE DS    A -            PTR TO IN-CORE SYMBOL TABLE.
         SPACE 1
PPEXIT   DS    0A -           BREAKPOINT & EXIT SVC'S FOR PP TERM.
PPEXIT1  DS    H -            AN SVC 97 INSTRUCTION (0A61).
PPEXIT2  DS    H -            AN SVC 3 INSTRUCTION (0A03).
TSTDCB   DS    A -            HEAD OF OVLY DCB CHAIN.
OPCODTAB DS    A -            PTR TO TABLE OF VALID OPERATION CODES.
TSTOPCD2 DS    F -            PTR TO TABLE FOR TWO BYTE S/370
*                             OPERATION CODES.
         DS    A -            RESERVED
         DS    A -            RESERVED
TSTHTCB  DS    A -            POINTER TO THE HELP TCB
TSTAQUAL DS    0X -           AUTOMATIC QUALIFICATION CONTROL
TSTAQLDM DS    CL8 -          EBCDIC LOAD MODULE NAME.
TSTAQEP  DS    A -            ENTRY POINT OF LOAD MODULE.
TSTRSTRT DS    A -            RESTART ADDRESS FOR STAE PROCESSING
TSTSRHRT DS    A -            ADDRESS OF RESIDENT ADDRESS VALIDITY
*                             CHECK ROUTINE.
         SPACE 1
TSTSTAX  DS    5F -           STAX PARAMETER LIST.
TSTDSECB DS    F -            TEST DISPATCHABILITY ECB.
TSTMNLWK DS    10F -          WORK AREA FOR EXCULSIVE USE OF MNL
TSTSTAEL DS    4F -           STAE PARAMETER LIST FOR MNL ONLY.
TSTOIPRM DS    0CL84          IO PARAMETER BLOCK
TSTIOPRM DS    CL84           IO PARAMETER BLOCK USE BY SIO
TSTSVCM1 DS    F              SVC FIRST LEVEL MESSAGE NO.
TSTSVCM2 DS    F              SVC SECOND LEVEL MESSAGE NO.
TSTSVCNQ DS    CL6'ECBTST'    CHARACTER CONSTANT FOR SVC ENQUE
R11SAVE  DS    F              SAVE AREA FOR R11 FOR SVC97    @ZA00889
ABNDTCB  DS    F              ABENDING TCB ADDR FOR SVC97 DQ @ZA07137
         DS    8D             *** RESERVED SPACE ***
TCOMLEN  EQU   ((*-TCOMTAB+7)/8)*8 - TCOMTAB LENGTH.
**/
         MEND
* %MTABLBL :  ;
* DECLARE
*   1 TCOMTAB BASED,
* /* *************************************************************** */
* /* *                                                             * */
* /* *   THIS MACRO MAPS THE TEST COMMAND PROCESSOR COMMUNICATION  * */
* /* *   TABLE (TCOMTAB) USED BY ALL SUBCOMMAND PROCESSORS AND     * */
* /* *   SERVICE ROUTINES WHICH MAKE UP THE TSO/TEST COMMAND.      * */
* /* *                                                             * */
* /* * STATUS -- VERSION NO. 01 - OS/VS2 RELEASE NO. 01            * */
* /* *                                                             * */
* /* * CHANGE LEVEL -- 04 - DATE 04/25/72                          * */
* /* *                                                             * */
* /* *************************************************************** */
*     2 ECBLIST     BDY(WORD), /* BEGINNING OF ECBLIST FOR WAIT.     */
*       3 ECBPP     PTR(31),   /* PP DISPATCHABILITY ECB.            */
*       3 ECBTST    PTR(31),   /* PTR TO TEST DISPATCHABILITY ECB.   */
*       3 ECBTERM   PTR(31),   /* PTR TO PP TERMINATION ECB.         */
*       3 ECBTMPS   PTR(31),   /* PTR TO STAE ECB.                   */
*       3 ECBTMPA   PTR(31),   /* PTR TO ATTENTION ECB.              */
*     2 ECBLOG      PTR(31),   /* PTR TO STOP/MODIFY ECB.            */
*     2 TSTTCB      PTR(31),   /* PTR TO THE TEST TCB.               */
*       3 TSTTCBR   FIXED(8),  /* RESERVED.                          */
*       3 TSTTCBP   PTR(24),   /* PTR TO THE TEST TCB.               */
*     2 PPTCB       PTR(31),   /* PTR TO THE PROBLEM PROGRAM TCB.    */
*       3 PPTCBR    FIXED(8),  /* RESERVED.                          */
*       3 PPTCBP    PTR(24),   /* PTR TO THE PROBLEM PROGRAM TCB.    */
*     2 *           CHAR(8),   /* *** RESERVED SPACE ***             */
*     2 OUTBUF      PTR(31),   /* PTR TO GENERAL OUTPUT BUFFER.      */
*     2 BLDLAREA    PTR(31),   /* ADDRESS OF BLDL ENTRY USED BY
*                                 IKJEGINT AND IKJEGLDR.             */
*       3 CONAREA   PTR(31),   /* PTR TO OUTPUT AREA USED BY
*                                 CONVERT RTN.                       */
*     2 WORKAREA    PTR(31),   /* PTR TO GENERAL WORK AREA.          */
*     2 REGSAVE1    PTR(31),   /* PTR TO SAVE AREA FOR MAINLINE.     */
*     2 REGSAVE2    PTR(31),   /* PTR TO SAVE AREA FOR COMMANDS.     */
*     2 REGSAVE3    PTR(31),   /* PTR TO SAVE AREA FOR VALIDITY
*                                 CHECKERS.                          */
*     2 REGSAVE4    PTR(31),   /* PTR TO SAVE AREA FOR IKJEGCVT.     */
*     2 REGSAVE5    PTR(31),   /* PTR TO SAVE AREA FOR IKJEGIO.      */
*     2 REGSAVE6    PTR(31),   /* PTR TO SAVE AREA FOR IKJEGSRH.     */
*     2 *           PTR(31),   /* *** RESERVED SPACE ***             */
*     2 TPLPTR      PTR(31),   /* PTR TO TPL                         */
*     2 TMPLL       FIXED(15), /* LINE LENGTH                        */
*     2 TSTMTASK    FIXED(8),  /* BREAKPOINT SYNCHRONIZATION BYTE.   */
*     2 TSTESTRC    FIXED(8),  /* ESTAE ERROR RETURN CODE            */
*     2 TSTWHR      PTR(31),   /* PTR TO COMMAND LIB DCB.            */
*     2 PARMLIST    CHAR(16),  /* PARM LIST FOR CALLING SERVICE
*                                 ROUTINES.                          */
*       3 TSTUPT    PTR(31),   /* PTR TO UPT.                        */
*       3 TSTECT    PTR(31),   /* PTR TO ECT.                        */
*       3 TSTCPECB  PTR(31),   /* PTR TO CP ECB.                     */
*       3 TSTANSPL  PTR(31),   /* ANSWER PLACE FOR PARSE SERVICE
*                                 ROUTINE.                           */
*     2 ABENTAB     PTR(31),   /* PTR TO ABEND VECTOR TABLE(RESIDENT)*/
*     2 ABENTAB1    PTR(31),   /* PTR TO ABEND VECTOR TABLE
*                                 (TRANSIENT).                       */
*     2 TSTRETRY    PTR(31),   /* ENTRY POINT OF TRANSIENT RETRY RTN.*/
*       3 TSTRTYCD  FIXED(8),  /* SUBCOMMAND ID.                     */
*       3 TSTRTYPT  PTR(24),   /* PTR TO A STAE RETRY ROUTINE WITHIN
*                                 ANY TEST MODULE THAT HAS ISSUED
*                                 A STAE.                            */
*     2 INBUF       PTR(31),   /* PTR TO BUFFER CONTAINING SUBCMD.   */
*     2 TSTIODSN    PTR(31),   /* HEAD OF DSNAME CHAIN FOR IKJEGIO
*                                 'PRINT'.                           */
*     2 TSTIO       PTR(31),   /* ENTRY POINT OF GET ROUTINE IKJEGIO.*/
*     2 *           PTR(31),   /* RESERVED                           */
*     2 *           PTR(31),   /* RESERVED                           */
*     2 TSTCONVT    PTR(31),   /* ENTRY POINT OF IKJEGCVT.           */
*     2 TSTADDR     PTR(31),   /* ENTRY POINT OF ADDRESS BUILD
*                                 SUBROUTINE.                        */
*     2 TSTSTAE     PTR(31),   /* ENTRY POINT OF STAE EXIT RTN
*                                 (IKJEGSTA).                        */
*     2 TSTFLGS1    BIT(8),    /* TEST FLAGS, BYTE 1.                */
*       3 PCHLSTVL  BIT(1),    /* PATCH LIST SWITCH.                 */
*       3 TSTPRINT  BIT(1),    /* PRINT SWITCH.                      */
*       3 TSTFIRST  BIT(1),    /* FIRST TIME SWITCH.                 */
*       3 RANGESW   BIT(1),    /* INDICATES PDE IS FOR ADDRESS RANGE.*/
*       3 TSTBUILD  BIT(1),    /* 'AT' SWITCH FOR DEFER CHECK.       */
*       3 ENDSW     BIT(1),    /* INDICATES 'END' TO MAINLINE.       */
*       3 RUNSW     BIT(1),    /* INDICATES 'RUN' TO MAINLINE.       */
*       3 *         BIT(1),    /* RESERVED BIT.                      */
*     2 TSTFLGS2    BIT(8),    /* TEST FLAGS, BYTE 2.                */
*       3 TSTLDF    BIT(1),    /* IKJEGLDF TASK-SWITCH INDICATOR.    */
*       3 TSTXCTL   BIT(1),    /* STAE XCTL INDICATOR.               */
*       3 TOFFDEF   BIT(1),    /* NO ACTIVE BREAKPOINTS.             */
*       3 TTESTTCB  BIT(1),    /* RUNNING UNDER TEST TASK.           */
*       3 TADDROUT  BIT(1),    /* LOAD MODULE FOUND UNDER TCB.       */
*       3 TWHRLOAD  BIT(1),    /* VALID LOAD MODULE CHECK.           */
*       3 TSTQUAL   BIT(1),    /* QUALIFICATION IS IN PROCESS        */
*       3 TMYIOMSG  BIT(1),    /* IKJEGIO MESSAGE SWITCH.            */
*     2 TSTFLGS3    BIT(8),    /* TEST FLAGS, BYTE 3.                */
*       3 TSTGOSW   BIT(1),    /* SPECIAL BREAKPOINT TYPE SWITCH.    */
*       3 TSTSTAI   BIT(1),    /* PROBLEM PROGRAM ABEND INDICATOR.   */
*       3 SYMMESG   BIT(1),    /* SYM 'NO DIAGNOSTIC' SWITCH.        */
*       3 TCSECTCK  BIT(1),    /* CSECT ONLY DEFER QUEUE CLEAR.      */
*       3 TDUPNAME  BIT(1),    /* DEFER QUEUE DUPLICATE NAME BIT.    */
*       3 TSTLINK   BIT(1),    /* SUB-CMD 'LINK FAILED' INDICATOR.   */
*       3 TSTHELP   BIT(1),    /* INDICATES THAT 'HELP' IS ATTACHED  */
*       3 NOPARMS   BIT(1),    /* INDICATES NO PARAMETERS WITH CMD.  */
*     2 TSTFLGS4    BIT(8),    /* TEST FLAGS, BYTE 4.                */
*       3 TSTA      BIT(1),    /* TEST'S INPUT IS NOT FROM A STACK.  */
*       3 TSTB      BIT(1),    /* A STACKED TERMINAL ELEM. IS PRESENT*/
*       3 TSTFLUSH  BIT(1),    /* FORCE TCLEARQ AND POSSIBLE STACK
*                                 FLUSH.                             */
*       3 TSTRERTN  BIT(1),    /* A RETRY IS IN PROCESS.             */
*       3 TSTESTAE  BIT(1),    /* ESTAE IS INVOKING I/O FOR MESSAGE. */
*       3 TSTSVCAB  BIT(1),    /* SVC ABEND IS IN PROCESS            */
*       3 TSTPERC   BIT(1),    /* THIS RETRY ROUTINE WAS PERCOLLATED */
*       3 TSTVALCK  BIT(1),    /* INDICATES PARSE VALIDITY CHECK IN
*                                 PROCESS.                           */
*     2 BREAKTAB    PTR(31),   /* PTR TO FIRST BREAK ELEMENT.        */
*     2 DEFERTAB    PTR(31),   /* PTR TO DEFERRED CMD LIST.          */
*     2 PPLOAD      PTR(31),   /* PTR TO CURRENT BASE FOR RELATIVES. */
*     2 PPTEMP      PTR(31),   /* TEMPORARY BASE FOR RELATIVES.      */
*     2 SUBCHAIN    PTR(31),   /* PTR TO BREAKPOINT SUBCOMMAND CHAIN.*/
*     2 TSTGO       FIXED(32), /* RESUME ADDRESS AFTER BREAKPOINT.   */
*       3 TSTGOPSW  FIXED(32), /* SECOND WORD OF RBOPSW FIELD.       */
*     2 TSTGOWCF    FIXED(8),  /* WAIT COUNT FROM RBWCF FIELD.       */
*     2 TSTRSVD2    FIXED(8),  /* RESERVED BYTE.                     */
*     2 TSTSVC      FIXED(15), /* AN SVC 97 INSTRUCTION (0A61).      */
*     2 PPRB        PTR(31),   /* CURRENT PROBLEM PROGRAM RB ADDRESS.*/
*     2 TSTIODCB    PTR(31),   /* PTR TO OPEN PRINT DCB.             */
*     2 CALLPARM    PTR(31),   /* HEAD OF CHAIN FOR PARMS BUILT BY
*                                 'CALL'.                            */
*     2 *           PTR(31),   /* *** RESERVED SPACE ***             */
*     2 INTSTDDN    CHAR(8),   /* DDNAME FOR DATA SET SPECIFIED ON
*                                 THE TEST COMMAND - USED BY IKJEGINT
*                                 AND IKJEGLDR.                      */
*       3 TSTCURLD  CHAR(8),   /* CURRENTLY QUALIFIED LOAD NAME.     */
*     2 TERMDD      CHAR(8),   /* DDNAME FOR TERMINAL USED BY
*                                 OS LOADER.                         */
*       3 TSTCURCT  CHAR(8),   /* CURRENTLY QUALIFIED CSECT NAME.    */
*     2 TSTSYMBA    PTR(31),   /* CURRENTLY QUALIFIED SYMBOLIC
*                                 ADDR BASE.                         */
*     2 TSTTRN      PTR(31),   /* HEAD OF SAVE INFORMATION CHAIN.    */
*     2 SICHAIN     PTR(31),   /* HEAD OF SYMBOL INFORMATION CHAIN.  */
*     2 TSTSYMWK    PTR(31),   /* PTR TO SYMBOL PROCESSING WORK AREA.*/
*     2 SYMTABLE    PTR(31),   /* PTR TO IN-CORE SYMBOL TABLE.       */
*     2 PPEXIT      FIXED(32), /* BREAKPOINT & EXIT SVC'S FOR PP TERM*/
*       3 PPEXIT1   FIXED(15), /* AN SVC 97 INSTRUCTION (0A61).      */
*       3 PPEXIT2   FIXED(15), /* AN SVC 3 INSTRUCTION (0A03).       */
*     2 TSTDCB      PTR(31),   /* HEAD OF OVLY DCB CHAIN.            */
*     2 OPCODTAB    PTR(31),   /* PTR TO TABLE OF VALID OPERATION
*                                 CODES.                             */
*     2 TSTOPCD2    PTR(31),   /* PTR TO TABLE FOR TWO BYTE S/370
*                                 OPERATION CODES.                   */
*     2 *           PTR(31),   /* RESERVED                           */
*     2 *           PTR(31),   /* RESERVED                           */
*     2 TSTHTCB     PTR(31),   /* POINTER TO THE HELP TCB.           */
*     2 TSTAQUAL    CHAR(8),   /* AUTOMATIC QUALIFICATION CONTROL.   */
*       3 TSTAQLDM  CHAR(8),   /* EBCDIC LOAD MODULE NAME.           */
*     2 TSTAQEP     PTR(31),   /* ENTRY POINT OF LOAD MODULE.        */
*     2 TSTRSTRT    PTR(31),   /* RESTART ADDRESS FOR STAE PROCESSING*/
*     2 TSTSRHRT    PTR(31),   /* ADDRESS OF RESIDENT ADDRESS
*                                 VALIDITY CHECK ROUTINE.            */
*     2 TSTSTAX     CHAR(20),  /* STAX PARAMETER LIST                */
*     2 TSTDSECB    FIXED(31), /* TEST DISPATCHABILITY ECB.          */
*     2 TSTMNLWK    CHAR(40),  /* WORK AREA FOR EXCLUSIVE USE OF MNL */
*     2 TSTSTAEL    CHAR(16),  /* STAE PARAMETER LIST FOR MNL ONLY.  */
*     2 TSTOIPRM    CHAR(84),  /* IO PARAMETER BLOCK                 */
*       3 TSTIOPRM  CHAR(84),  /* IO PARAMETER BLOCK USE BY SIO      */
*     2 TSTSVCM1    CHAR(4),   /* SVC FIRST LEVEL MESSAGE NO.        */
*     2 TSTSVCM2    CHAR(4),   /* SVC SECOND LEVEL MESSAGE NO.       */
*     2 *           CHAR(72);  /* *** RESERVED SPACE ***             */
* DCL OUTBUFRL FIXED(31)       /* LENGTH OF                          */
*              CONSTANT(256);  /* OUTPUT BUFFER.                     */
* DCL CONAREAL FIXED(31)       /* LENGTH OF                          */
*              CONSTANT(72);   /* CONVERT WORK AREA                  */
* DCL REGSAVEL FIXED(31)       /* LENGTH OF                          */
*              CONSTANT(432);  /* 6 REGISTER SAVE AREAS.             */
* DCL TSTSVCNQ CHAR(6)         /* CHARACTER CONSTANT                 */
*        CONSTANT('ECBTST');   /* FOR SVC ENQUE.                     */
* DCL TCOMLEN FIXED(31)        /* TCOMTAB                            */
*        CONSTANT(800);        /* LENGTH                             */
./ ADD NAME=TCONV
         MACRO
&NAME  TCONV   &MF=,&TYPE=EH,&FROM=,&TO=,&COUNT=,&MAP=NO,&LSTNAME=,    X
               &RET=
.*
         GBLB  &EXECUTV,&E536454
         GBLB  &RCC .        SET TO 1 IF INTLZE WILL SUPPORT RCC
         LCLA  &FLAG,&ERROR,&KOUNT
         LCLB  &RCC1
         LCLC  &F,&SIZE,&CHAR,&Z
.*
         AIF   ('&MAP' EQ 'YES').MAP1
         AIF   (T'&MF EQ 'O').STD
         AIF   ('&MF' EQ 'L' OR '&MF' EQ 'S').STD
         AIF   ('&MF'(1,3) NE '(E,').MFERROR
&CHAR    SETC  '&NAME'
         AIF   ('&MF'(4,3) EQ '(1)').RG1
         AIF   ('&MF'(4,1) EQ '(').RG2
&CHAR    LA    R1,&MF(2) .         ADDRESS OF PARAMETER LIST
&CHAR    SETC  ' '
         AGO   .RG1
.RG2     ANOP
&KOUNT   SETA  K'&MF(2)-2
&F       SETC  '&MF(2)'(2,&KOUNT)
         AIF   ('&F'(1,1) EQ 'R').C724
&CHAR    LR    R1,R&F .            ADDRESS OF PARAMETER LIST
&CHAR    SETC  ' '
         AGO   .RG1
.C724    ANOP
&CHAR    LR    R1,&F .             ADDRESS OF PARAMETER LIST
&CHAR    SETC  ' '
.RG1     ANOP
.RCC2    ANOP
         AIF   ('&RCC' EQ '0').RCCA
         AIF   (T'&RET EQ 'O').RCCD
         AIF   ('&RET'(1,1) EQ '#').RCCB
         AIF   ('&RET'(1,1) EQ '(').RCCC
         MVC   $RETMASK,&RET .     SET RETURN CODE MASK
         AGO   .RCCD
.RCCE    ANOP
         MVI   $RETMASK,#ALL-#RC0 . SET RETURN CODE MASK
         AGO   .RCCD
.RCCB    ANOP
         MVI   $RETMASK,#ALL-&RET . SET RETURN CODE MASK
         AGO   .RCCD
.RCCC    ANOP
         MVI   $RETMASK,#ALL-&RET(1) . SET RETURN CODE MASK
         AGO   .RCCD
.RCCA    ANOP
         AIF   (T'&RET EQ 'O').RCCD
         MNOTE 5,'RETURN CODE NOT SUPPORTED BY -INTLZE-'
.RCCD    ANOP
         AIF   (&RCC1).RCC3
&CHAR    BAL   R14,#EXIT .         BRANCH TO LINKAGE SUBROUTINE
         MEXIT
.MFERROR MNOTE 8,'MF VALUE (&MF) INCORRECT, NO STATEMENTS GENERATED.'
         MEXIT
.STD     ANOP
         AIF   (T'&FROM NE 'O').TEST3
&ERROR   SETA  1
         MNOTE 8,'FROM ADDRESS MISSING.'
.TEST3   AIF   (T'&TO NE 'O').TEST4
&ERROR   SETA  1
         MNOTE 8,'TO ADDRESS MISSING.'
.TEST4   AIF   (T'&COUNT NE 'O').BEGIN
&ERROR   SETA  1
         MNOTE 8,'COUNT MISSING.'
.BEGIN   ANOP
         AIF   (&ERROR EQ 1).EXIT
         AIF   ('&TYPE' NE 'HE').CNVRT2
&FLAG    SETA  X'8000'
.CNVRT2  ANOP
         AIF   ('&MF' EQ 'L').LIST
&NAME    LA    R14,&FROM(1) . GET ADDR OF DATA
         AIF   (N'&FROM EQ 1).CNVRT4
.TEST5   AIF   (&FROM(2) GE 2 OR &FROM(2) LE 14).CNVRT3
&ERROR   SETA  1
         MNOTE 8,'INVALID REG SPEC FOR FROM.'
.CNVRT3  ANOP
         AIF   (&ERROR EQ 1).EXIT
         AR    R14,&FROM(2) . INCREMENT ADDRESS
.CNVRT4  ANOP
         ST    R14,QWIE&SYSNDX . PLACE ADDR IN PARAMETER LIST
         LA    R14,&TO . GET OUTPUT DATA ADDR
         ST    R14,QWIU&SYSNDX . OUTPUT DATA STORE
         LA    R14,R&SYSNDX .     RETURN ADDRESS
&RCC1    SETB  1
         AGO   .RCC2
.RCC3    ANOP
         CNOP  0,4
         BAL   R1,#EXIT .          BRANCH TO LINKAGE SUBROUTINE
&CHAR    SETC  '&LSTNAME'
         AGO   .STD1
.LIST    ANOP
&CHAR    SETC  '&NAME'
         CNOP  0,4
.STD1    ANOP
         AIF   (&EXECUTV).OLTSEP
&CHAR    DC    B'00000000' .       CONTROL PROGRAM FLAGS
         AGO   .OLTSEP1
.OLTSEP  ANOP
&CHAR    DC    B'00000001' .       CONTROL PROGRAM FLAGS
.OLTSEP1 ANOP
         DC    AL1(2) .            MACRO LEVEL
         DC    CL2'41' .           MACRO ID
QWIE&SYSNDX  DC  XL4'00000000' . ADDRESS OF DATA
QWIU&SYSNDX  DC  XL4'00000000' .  OUTPUT DATA
C&SYSNDX DC    AL2(&COUNT+&FLAG) . COUNT AND TYPE INFORMATION
**                                BIT 0 SET TO 1 INDICATES 'HE' TYPE.
         AIF   ('&MF' EQ 'L').EXIT
R&SYSNDX DS    0H .               RETURN ON HALFWORD BOUNDARY
         MEXIT
.MAP1    ANOP
CONVMAP  DSECT
&Z       SETC  '$'
         AIF   (&E536454).ZIPPER
           DC  XL1'0' .            CONTROL PROGRAM FLAGS
           DC  XL1'0' .            MACRO LEVEL
           DC  XL2'0' .            MACRO ID
         AGO   .ZIPPED
.ZIPPER  ANOP
&Z.CNVTRMG DC  XL1'0' .            CONTROL PROGRAM FLAGS
&Z.CNVLEVL DC  XL1'0' .            MACRO LEVEL
&Z.CNVIDNT DC  XL2'0' .            MACRO ID
.ZIPPED  ANOP
&Z.CNVFROM DC  A(0) .              FROM ADDRESS
&Z.CNVTO   DC  A(0) .              TO   ADDRESS
&Z.CNVCT   DC  XL2'0' .            TYPE & COUNT
.EXIT    MEND
./ ADD NAME=TCPBD
         MACRO
         TCPBD &MERLIN
.*A430000                                                        S21101
         SPACE
IEDQCPB  DSECT
*                       SEEK HEAD CCW
CPBHEADF DS    0F .
CPBSEEK  DS    C .                      SEEK HEAD OP CODE
CPBHEAD  DS    AL3 .                    PTR TO HEAD ID
CPBSEKFL DS    C .                      SEEK CCW FLAG, CMD CHAINING
         DS    C .                      IGNORED
CPBSEKCT DS    H .                      SEEK COUNT OF 6
CPBSEK6  EQU   6 .                      BYTE COUNT SEEK CCW
*        AIF   ('&MERLIN' NE '3330').SKP                       @Y17XAXF
*                       SET SECTOR CCW
CPBSETAF DS    0F .
CPBSET   DS    X .                      SET SECTOR OP CODE
CPBSETA  DS    AL3 .                    PTR TO SECTOR ID BYTE
CPBSETFL DS    X .                      SET SECTOR CHAIN BIT FLAG
         DS    X .                      IGNORED
CPBSETCT DS    H .                      SET SECTOR COUNT OF 1
CPBSET1  EQU   1 .                      BYTE COUNT SET SECTOR CCW
*SKP     ANOP                                                  @Y17XAXF
*                        SEARCH ID EQ CCW
CPBSRECF DS    0F .
CPBSRCH  DS    C .                      SEARCH ID EQ OP CODE
CPBSREC  DS    AL3 .                    PTR TO RECORD ID
CPBSRHFL DS    C .                      SEARCH CCW FLAG
         DS    C .                      IGNORED
CPBSRHCT DS    H .                      SEARCH COUNT OF 5
CPBSRH5  EQU   5 .                      BYTE COUNT SEARCH CCW
*                        TIC TO SEARCH CCW
CPBTICSF DS    0F .
CPBTIC1  DS    C .                      TIC OP CODE
CPBTICS  DS    AL3 .                    ADDR OF SEARCH CCW
CPBUNUSD DS    0F .                     UNUSED IF NO SET SECTOR CCW
CPBSECTR DS    X .                      SECTOR ID
CPBUNUSA DS    AL3 .                    UNUSED
*                        RD/WR CCW
CPBAREAF DS    0F .
CPBRDWR  DS    C .                      RD/WR OP CODE
CPBAREA  DS    AL3 .                    ADDRESS OF I/O AREA
CPBRWFL  DS    C .                      RD/WR FLAG
         DS    C .                      IGNORED
CPBCOUNT DS    H .                      NUMBER OF BYTES
*                        SECOND RD/WR CCW
CPBXREAF DS    0F .
CPBXDWR  DS    C .                      RD/WR OP CODE
CPBXREA  DS    AL3 .                    ADDRESS OF I/O AREA
CPBXWFL  DS    C .                      RD/WR FLAG
         DS    C .                      IGNORED
CPBXOUNT DS    H .                      NUMBER OF BYTES
*                        TIC TO NEXT CPB
CPBNEXTF DS    0F .
CPBTIC2  DS    C .                      TIC OP CODE
CPBNEXT  DS    AL3 .                    PTR TO NEXT CPB
CPBFLAG  DS    0C .                     FLAG BYTE
*                       CPBFLAG BIT DEFINITIONS
CPBREUSN EQU   X'80' .                  SPECIAL CPB BELONGS TO REUS
CPBCOPYN EQU   X'40' .                  SPECIAL CPB BELONGS TO COPY
CPBRDSKN EQU   X'20' .                  REUSABLE DISK B'XX10XXXX'
CPBNDSKN EQU   X'10' .                  NON-REUS DISK B'XX01XXXX'
*
* LOW ORDER 4 BITS OF CPBFLAG ARE USED AS AN INDEX INTO A BRANCH
* TABLE TO INDICATE THE PROGRESS OF THE MESSAGE BEING MOVED.  THESE
* BITS ARE REFERENCED ONLY BY IGG019RP, REUS/COPY.
*
*              X'00' .                  'CANCELLED HEADER' MOVE
*                                         ASSIGNED NEXT HEADER
*                                         TO CURRENT ZONE
CPBADKD1 EQU   X'01' .                  'READ BAD K+D 1' FIRST FEFO
*                                         MSG WAS TOO OLD
CPBRDGD  EQU   X'02' .                  'READ GOOD DATA' FOLLOW FEFO
*                                         CHAIN THRU RECENT MSGS
CPBADKD2 EQU   X'03' .                  'READ BAD K+D 2' NON-FIRST
*                                         FEFO MSG WAS TOO OLD
CPBWRDAT EQU   X'04' .                  'WRITE DATA' WIPE OUT FEFO
*                                         POINTER THAT USED TO
*                                         POINT TO A BAD MSG WITH
*                                         CONTENTS OF DATA FIELD OF
*                                         BAD MSG SO IT SKIPS BAD
*                                         MSG BUT POINTS TO NEXT ONE
CPBWRHED EQU   X'05' .                  'WRITE HEADER' FIRST RECORD
*                                         OF OLD MSG GOES TO
*                                         ALTERNATE DESTINATION
CPBRDXTR EQU   X'06' .                  'READ XTRA' GET NON-FIRST
*                                         UNITS OF ANY BUFFER
CPBWRXTR EQU   X'07' .                  'WRITE XTRA' PUT NON-FIRST
*                                         UNIT OF ANY BUFFER TO
*                                         ALTERNATE DESTINATION
CPBRDNXT EQU   X'08' .                  'READ NEXT' GET FIRST UNIT
*                                         OF ANY NON-FIRST BUFFER
CPBSERVC EQU   X'09' .                  'WRITE SERVICED' MARK
*                                         ORIGINAL OLD COPY AS
*                                         SERVICED (NOT SENT, BUT
*                                         QUEUED FOR ALTERNATE
*                                         DESTINATION)
CPBUFEFO EQU   X'0A' .                  'UPDATE FEFO' ADD NEW MSG
*                                         ONTO FEFO CHAIN OF MSG
*                                         THAT WAS LAST ON FEFO
*                                         CHAIN OF ALTERNATE
*                                         DESTINATION
CPBWRHOL EQU   X'0B' .                  'WRITE HOLD DATA' IN MOVING
*                                         HELD Q TO FRONT OF FEFO Q
*                                         CHAIN FIRST FEFO MSG ONTO
*                                         FEFO Q OF LAST HELD MSG
CPBRDHOL EQU   X'0C' .                  'READ HOLD DATA' IN MOVING
*                                         HELD Q TO FRONT OF FEFO Q
*                                         AND SINCE FIRST FEFO MSG
*                                         IS BEING SERVICED, READ
*                                         ITS FEFO POINTER TO FIND
*                                       SECOND FEFO MSG SO IT CAN
*                                         BE LINKED ONTO THE LAST
*                                         HELD MSG
CPBADDR  DS    F .                      ABSOLUTE RECORD NO.
*                                                                S21101
CPBQTYPE EQU   X'03'                    LOW ORDER 2 BITS OF      S21101
*                                       CPBFLAG INDICATE QUEUE   S21101
*                                       TYPE -                   S21101
*                                         CORE           B'00'   S21101
*                                         NON-REUS DISK  B'01'   S21101
*                                         RESERVED       B'10'   S21101
*                                         REUSABLE DISK  B'11'   S21101
*                                                                S21101
CPBABSAD DS    D .                      MBBCCHHR
CPBLCB   DS    0A .                     DESTINATION LCB ADDRESS
*                                         (REUS/COPY ONLY)
CPBINWKA DS    X .                      COUNT OF DATA IN WORKAREA
CPBTOUNT DS    X .                      COUNT OF DATA TO BE MOVED
*                                         INTO UNIT
CPBWKACT DS    X .                      WHERE IN WORKAREA TO START
CPBNUMB  DS    X .                      SEQUENTIAL NO. OF THIS CPB
CPBWORK  DS    0A .                     ADDRESS OF UNIT USED AS
*                                         WORKAREA (REUS/COPY ONLY)
CPBAERBF DS    0A .                     ADDRESS OF ERB
CPBUNTCT DS    X .                      COUNT OF DATA ALREADY IN UNIT
CPBAERB  DS    AL3 .
CPBSIZE  EQU   * .
*                        CCW BIT DEFINITIONS
CPBCDC   EQU   X'80' .                  DATA CHAINING
CPBCCC   EQU   X'40' .                  COMMAND CHAINING
CPBSLIC  EQU   X'20' .                  SUPPRESS INCORRECT LENGTH
CPBSKIPC EQU   X'10' .                  SKIP DATA
CPBTICC  EQU   X'08' .                  TIC COMMAND
CPBSEEKC EQU   X'1B' .                  SEEK HEAD COMMAND
CPBSETC  EQU   X'23' .                  SET SECTOR COMMAND
CPBRDKC  EQU   X'0E' .                  READ KEY AND DATA COMMAND
CPBWRKC  EQU   X'0D' .                  WRITE KEY AND DATA COMMAND
CPBRDC   EQU   X'06' .                  READ DATA COMMAND
CPBWRC   EQU   X'05' .                  WRITE DATA COMMAND
CPBSRCHC EQU   X'31' .                  SEARCH ID EQ OP
CPBNOPC  EQU   X'03' .                  NO OP
CPBWRITB EQU   X'01' .                  WRITE DATA OR K+D BIT
CPBKEYB  EQU   X'08' .                  KEY BIT
         SPACE 2
         MEND
./ ADD NAME=TCURD
*        %GOTO PLSCUR;                  /* BINLINGUAL HEADER
         MACRO
         TCURD
*
*        ASSEMBLER VERSION NOT SUPPORTED
*
         MEND  */
*%PLSCUR:;
*/*                                                                  */
*/*      CLEANUP REQUEST ELEMENT                                     */
*/*                                                                  */
 DCL 1 IEDCUREQ BDY(WORD) BASED(RCUR),
     2 CURKEY CHAR(1),             /*KEY FIELD                       */
     2 CURQCB PTR(24),             /*QCB ADDRESS                     */
     2 CURPRI CHAR(1),             /*PRIORITY FIELD                  */
     2 CURELEM PTR(24),            /*PIU ADDRESS SAVE FIELD          */
     2 CURLINK PTR(31),            /*LINK FIELD                      */
     2 CURTOTIN PTR(15),           /*TOTE TTCIN FIELD                */
       3 CURFLG1 CHAR(1),          /*FLAG FIELD                      */
       3 CURSWCH CHAR(1),          /*SWITCH FIELD                    */
     2 CURFLG2 CHAR(1),            /*FLAG FIELD                      */
       3 CURF0FIN BIT(1),          /*FINIS SEARCH FID0 RESPONSE CHAIN*/
       3 CURF1SEQ BIT(1),          /*FINIS SEARCH FID1 SEQUENCED
                                     RESPONSE CHAIN                  */
       3 CURF1ID BIT(1),           /*FINIS SEARCH FID1 ID RESPONSE CH*/
       3 CURENDCH BIT(1),          /*END OF CHAIN INDICATOR          */
       3 * BIT(2),                 /*UNUSED                          */
       3 CURATTCH BIT(1),          /*PIU ATTACHED INDICATOR          */
       3 CURTERM BIT(1),           /*FORCD TERMINATE CLEANUP @YM08991*/
     2 CURFLG3 CHAR(1),            /*FLAG FIELD                      */
       3 CUREPOST BIT(1),          /*CU REPOST REQUEST               */
       3 CURTOTEP BIT(1),          /*TOTE POST REQUEST               */
       3 CURFIRST BIT(1),          /*FIRST TIME SWITCH               */
       3 CURNCURE BIT(1),          /*REPOST REQUEST TO IEDNCU @YM07310*/
       3 CURDIAL  BIT(1),          /*RVT SCAN FOR DIAL DONE   @YM08536*/
       3 * BIT(3),                 /*UNUSED                          */
     2 CURPIUCT FIXED(15),         /*PIUS POSTED COUNTER             */
     2 CURFAILT FIXED(15),         /*FAILING RESOURCE TTCIN          */
     2 CURTTCIN FIXED(15),         /*TTCIN OF RESOURCE TO CLEAN
                                     UP                              */
     2 CURNXTRC FIXED(15),         /*NEXT HIGHER RESOURCE TTCIN      */
     2 CURNEWBF PTR(31),           /*NEW BUFFER WAIT CHAIN           */
     2 CURTOTBF PTR(31),           /*TOTE POST QUEUE                 */
     2 CURPIUPC PTR(31),           /*PIUS FOR PATH  CONTROL          */
     2 CUROPCE PTR(31),            /*POINTER TO DEACT OPCE           */
     2 CURTRM PTR(31);             /*TRM ADDRESS OF EFFECTED RESOURCE*/
*/*                                                                  */
*/*     CURSWCH VALUES                                               */
*/*                                                                  */
 DCL CURFDACT BIT(8) CONSTANT('37'X); /*FORCE DEACTIVATE REQUEST     */
 DCL CURCINOP BIT(8) CONSTANT('38'X); /*CLEANUP REQUEST FOR CHAN INOP*/
 DCL CURCUREQ BIT(8) CONSTANT('39'X); /*CLEANUP REQUEST              */
*/*                                                                  */
*/*       CURFLG1 VALUES                                             */
*/*                                                                  */
 DCL CURC0 BIT(8) CONSTANT('0D'X);/*USED WITH PRILOFLG - TO REDRIVE
                                    IGCC110D                         */
 DCL CURFG BIT(8) CONSTANT('0E'X);/*USED WITH PRILOFLG - TO RETURN
                                    CLEANUP REQUEST ELEMENT TO
                                    IGCFG10D FROM IEDNCU             */
./ ADD NAME=TDATAD
         MACRO
         TDATAD
         SPACE
IEDQDATA DSECT
.* CHANGE ACTIVITY = AS FOLLOWS:
.*A306000-312000                                                SA50192
.*C100000                                                       SA50192
*              UPDATED   11/02/72                               SA50192
         SPACE
DATFLAGS DS    X .                      FLAG BYTE
*                       BIT DEFINITIONS
DATNPRFX EQU   X'80' .                  '1'-NO PREFIX IN RECORD
*                                       '0'-HAS PREFIX IN RECORD
DATSENT  EQU   X'40' .                  '1'-MSG HAS BEEN SERVICED
*                                       '0'-NOT SERVICED
DATCNCLD EQU   X'20' .                  '1'-MSG IS CANCELED
*                                       '0'-MSG IS NOT CANCELED
DATLOSTN EQU   X'10' .                  '1'-MSG LOST FROM CORE QUEUE
DATIFEFO EQU   X'08' .                  INIT FEFO MSG ON PQCB   SA50192
DATINITL EQU   X'01' .                  INITIATE MSG LOST       SA50192
*                      REMAINING BITS UNDEFINED
*
DATFEFO  DS    AL3 .                    FEFO POINTER TO MEXT MSG TO
*                                         BE COMPLETELY RECEIVED
*                                         FOR THIS DESTINATION
DATCOUNT DS    0C .                     FOR TEXT RECORDS ONLY, THE
*                                         NUMBER OF BYTES OF
*                                         SIGNIFICANT TEXT IN
*                                         THIS RECORD KEY FIELD, OR
*                                         ZERO IF NOT LAST TEXT REC
DATSEQOT DS    H .                      FOR HEADER RECORDS ONLY,
*                                         THE SEQUENCE OUT NUMBER
DATSCAN  DS    H .                      SAVES SCAN POINTER
*                                         (NUMBER OF IDLES REMAINING)
*                                         WHILE BUILDING A BUFFER
*                                         FROM THIS UNIT
*                                       NOT USED IN CORE OR DISK
*                                         MESSAGE QUEUE DATA SETS
         SPACE 2
         MEND
./ ADD NAME=TDCTD
*        %GOTO DCTPLS;                  /* BILINGUAL HEADER
         MACRO
         TDCTD
.*A000000-999999                                               @Y17XAXF
IEDDCT   DSECT
*
*        DSECT FOR A DEVICE CHARACTERISTIC TABLE ENTRY (DCT)
*
DCTBYTE0 DS    CL1 .               RESERVED
         SPACE
DCTBYTE1 DS    CL1 .               BYTE 1
DCTINHIB EQU   X'80' .  (CINHIBIT)   TERMINAL CAN USE READ INHIBIT CCW
DCTBREAK EQU   X'40' .  (CBREAK  )   TERMINAL HAS REVERSE BREAK FEATURE
DCTATTEN EQU   X'20' .  (CATTEN  )   TERMINAL HAS THE ATTENTION FEATURE
DCT5041  EQU   X'10' .  (C5041)  )   2741 & 1050 INTERRUPT FEATURE
DCT2741  EQU   X'08' .  (C2741   )   2741 ON THIS LINE
DCT3270  EQU   X'04' .  (C3270   )   3270 DEVICE
DCTSADEV EQU   X'02' .  (CSADEV  )   STAND ALONE DEVICE
DCTUMASK EQU   X'01' .  (CUMASK  )   CONTROL UNIT(2848 OR 3270)
         SPACE
DCTBYTE2 DS    CL1 .               BYTE 2
DCTBISYN EQU   X'80' .  (CBISYNC )   BSC STATION
DCTBRDST EQU   X'40' .  (CBRDCST )   TERMINAL IS FOR BROADCAST DATA
DCTTWX   EQU   X'20' .  (CTWX    )   TWX 3335 TERMINAL
DCTSTCTL EQU   X'10' .  (CSTNCTL )   TERMINAL HAS STATION CTL FEATURE
DCTXMIT  EQU   X'08' .  (CXMITCTL)   TERMINAL HAS TRANSMIT CTL FEATURE
DCTCONT  EQU   X'04' .  (CCONTENT)   CONTENTION DEVICE
DCTLOCAL EQU   X'02' .  (CLOCAL  )   LOCAL DEVICE
DCTAUDIO EQU   X'01' .  (CAUDIO  )   AUDIO DEVICE
         SPACE
DCTBYTE3 DS    CL1 .               BYTE 3
DCT1050  EQU   X'80' .               1050
DCTWTTA  EQU   X'40' .  (CWTTA   )   WORLD TRADE TELEGRAPH
DCTENCTL EQU   X'20' .  (CENDCTL )   TERMINAL HAS END-TO-END CTLS(2780)
DCTCHECK EQU   X'10' .  (CCHECK  )   TERMINAL HAS THE CHECKING FEATURE
DCTBUFF  EQU   X'08' .               BUFFER DELAY (2740 MOD2)
DCTCONTN EQU   X'04' .  (CCONTIN )   TERMINAL SUPPORTS CONTINUE OPER
DCTNOIDL EQU   X'02' .  (CNOIDLES)   TERMINAL HAS NO IDLES DEFINED
DCT2760  EQU   X'01' .  (C2760   )   2760
         SPACE
DCTBYTE4 DS    CL1 .               BYTE 4
*        DCTFMPRF  BITS 0-3          FM PROFILE NUMBER
*        DCTTSPRF  BITS 4-7          TS PROFILE NUMBER
         SPACE
DCTBYTE5 DS    CL1 .               BYTE 5
DCTSCS   EQU   X'80' .               USS=SCS FOR LUNT
DCTL3270 EQU   X'40' .               USS=3270 FOR LUNT
*        EQU   X'20'-X'01'           RESERVED
DCTLEN   EQU   *-IEDDCT .               LEN OF DCT ENTRY
         MEND
*                                                                    */
*%DCTPLS:;
*DECLARE
*  1 IEDDCT  BASED BDY(BYTE),
*/*                                                                  */
*/*      DSECT FOR A DEVICE CHARACTERISTICS TABLE ENTRY (DCT)        */
*/*                                                                  */
*    2 DCTBYTE0 CHAR(1),                /* RESERVED                  */
*    2 DCTBYTE1 CHAR(1),                /* BYTE1                     */
*      3 DCTINHIB BIT(1),  /*CINHIBIT*/ /*   TERM CAN USE RD INHT CCW*/
*      3 DCTBREAK BIT(1),  /*CBREAK  */ /*   TERM HAS REVERSE BRK FEA*/
*      3 DCTATTEN BIT(1),  /*CATTEN  */ /*   TERM HAS ATTENTION FEAT */
*      3 DCT5041  BIT(1),  /*C5041   */ /*   2741 & 1050 INTERR FEAT */
*      3 DCT2741  BIT(1),  /*C2741   */ /*   2741 ON THIS LINE       */
*      3 DCT3270  BIT(1),  /*C3270   */ /*   3270 DEVICE             */
*      3 DCTSADEV BIT(1),  /*CSADEV  */ /*   STAND ALONE DEVICE      */
*      3 DCTUMASK BIT(1),  /*CUMASK  */ /*   CONTROL UNIT(2848/3270) */
*    2 DCTBYTE2 CHAR(1),                /* BYTE2                     */
*      3 DCTBISYN BIT(1),  /*CBISYNC */ /*   BSC STATION             */
*      3 DCTBRDST BIT(1),  /*CBRDCST */ /*   TERM IS FOR BRDCAST DATA*/
*      3 DCTTWX   BIT(1),  /*CTWX    */ /*   TWX 3335 TERMINAL       */
*      3 DCTSTCTL BIT(1),  /*CSTNCTL */ /*   TERM HAS STATION CTL FEA*/
*      3 DCTXMIT  BIT(1),  /*CXMITCTL*/ /*   TERM HAS XMIT CTL FEAT  */
*      3 DCTCONT  BIT(1),  /*CCONTENT*/ /*   CONTENTION DEVICE       */
*      3 DCTLOCAL BIT(1),  /*CLOCAL  */ /*   LOCAL DEVICE            */
*      3 DCTAUDIO BIT(1),  /*CAUDIO  */ /*   AUDIO DEVICE            */
*    2 DCTBYTE3 CHAR(1),                /* BYTE3                     */
*      3 DCT1050  BIT(1),               /*   1050                    */
*      3 DCTWTTA  BIT(1),  /*CWTTA   */ /*   WORLD TRADE TELEGRAPH   */
*      3 DCTENCTL BIT(1),  /*CENDCTL */ /*   TERM HAS END-TO-END CTLS*/
*      3 DCTCHECK BIT(1),  /*CCHECK  */ /*   TERM HAS CHECKING FEAT  */
*      3 DCTBUFF  BIT(1),               /*   BUFFER DELAY (2740 MOD2)*/
*      3 DCTCONTN BIT(1),  /*CCONTIN */ /*   TERM SUPPORTS CONT OPER */
*      3 DCTNOIDL BIT(1),  /*CNOIDLES*/ /*   TERM HAS NO IDLES DEF   */
*      3 DCT2760  BIT(1),  /*C2760   */ /*   2760                    */
*    2 DCTBYTE4 CHAR(1),                /* BYTE4                     */
*      3 DCTFMPRF BIT(4),               /*   FM PROFILE NUMBER       */
*      3 DCTTSPRF BIT(4),               /*   TS PROFILE NUMBER       */
*    2 DCTBYTE5 CHAR(1),                /* BYTE5                     */
*      3 DCTSCS   BIT(1),               /*   USS=SCS FOR LUNT        */
*      3 DCTL3270 BIT(1),               /*   USS=3270 FOR LUNT       */
*      3 *        BIT(6);               /*   RESERVED                */
* %DCTLEN='LENGTH(IEDDCT)';             /* DCT LENGTH                */
./ ADD NAME=TDEBAPD
         MACRO
         TDEBAPD
IEDQDEB  DSECT                          DATA EXTENT BLOCK FOR
*                                       TCAM APPLICATION PROGRAMS
*
*
*
*                                                                     *
*                                                                     *
DEBTAMID DS    FL1                      TAM DEB IDENTIFIER
DEBTCBAD DS    3X                       ADDRESS OF TCB FOR THIS DEB
         DS    FL1                      RESERVED
DEBDEBAD  DS    3X                       ADDRESS OF NEXT DEB
*                                       IN SAME TASK
         DS    FL1                      RESERVED
DEBPCBAD DS    3X                       ADDRESS OF PROCESS CONTROL
*                                       BLOCK FOR THIS TASK
         DS    4X                       RESERVED
DEBTAMPP DS    X                        POST-PENDING FLAG BYTE
DEBPEBAD DS    AL3                      ADDRESS OF PROCESS       Y02027
*                                       EXTENSION BLOCK          Y02027
         DS    FL1                      RESERVED
DEBPEWA  DS    AL3                      ADDRESS OF THE PROCESS   Y02027
*                                       ENTRY WORKAREA           Y02027
         DS    FL1                      RESERVED
DEBDCBAD DS    3X                       ADDRESS OF THIS DEB'S DCB
         DS    FL1                      RESERVED
DEBLCMWA DS    3X                       ADDRESS OF LOCATE MODE
*                                       WORKAREA
DEBTAMOS DS    H                        TERMNAME TABLE OFFSET OF
*                                       CORRESPONDING PROCESS ENTRY
DEBSOWA  DS    H                        SIZE OF LOCATE MODE
*                                       WORKAREA
DEBEND   EQU   *
DEBSIZE  EQU   DEBEND-IEDQDEB
         MEND
./ ADD NAME=TDEBD
*        %GOTO BSLDEB;                                               /*
         MACRO
         TDEBD
         SPACE
.*A000000-999999                                               @Y17XAXF
IEDQDEB  DSECT
DEBAPVT  DS    0CL20 .                  APPENDAGE VECTOR TABLE   S22024
DEBEOEA  DS    CL4 .                    ADDRESS OF END-OF-EXTENT
*                                         APPENDAGE
DEBSIOA  DS    CL4 .                    ADDRESS OF STARTI/O
*                                         APPENDAGE
DEBPCIA  DS    CL4 .                    ADDRESS OF PCI APPENDAGE
DEBCEA   DS    CL4 .                    ADDRESS OF CHANNEL END
*                                         APPENDAGE
DEBXCEA  DS    CL4 .                    ADDRESS OF ABNORMAL END
*                                         APPENDAGE
DEBWKARA DS    CL1 .                    I/O SUPPORT WORK AREA
DEBDSCBA DS    CL7 .                    ADDRESS OF DSCB
DEBDCBMK DS    CL4 .                    DCB MODIFICATION MASK
DEBLNGTH DS    CL4 .                    LENGTH OF THE DEB IN
*                                         DOUBLE WORDS
DEBNMSUB DS    0C .                     NUMBER OF OPEN SUBROUTINES
DEBTCBAD DS    A .                      ADDRESS OF THE TCB
DEBAMLNG DS    0C .                     LENGTH ACCESS METHOD SECTION
DEBDEBAD DS    A .                      ADDRESS OF NEXT DEB
DEBOFLGS DS    0C .                     DATA SET FLAGS
DEBIRBAD DS    A .                      ADDRESS OF THE IRB
DEBOPATB DS    0C .                     TYPE OF I/O
DEBSYSPG DS    A .                      ADDRESS OF FIRST IOB IN SYSTEM
*                                         PURGE CHAIN
DEBNMEXT DS    0C .                     NUMBER OF EXTENTS
DEBUSRPG DS    A .                      ADDRESS OF FIRST IOB IN THE
*                                         USER PURGE CHAIN
DEBPRIOR DS    0C .                     ZERO
DEBECBAD DS    A .                      ADDRESS OF PARAMETER LIST TO
*                                         FIND PURGE ECB
DEBPROTG DS    0C .                     PROTECTION KEY DEB ID
DEBDCBAD DS    A .                      ADDRESS OF DCB
DEBEXSCL DS    0C .                     EXTENT SCALE
DEBAPPAD DS    A .                      ADDRESS OF I/O APPENDAGE VECTOR
*                                         TABLE
DEBDVMOD DS    0C .                     DEVICE MODIFIER
DEBUCBAD DS    A .                      ADDRESS OF UCB
DEBSUBR  DS    CL24 .                   SUBROUTINE NAMES         S22024
         SPACE 2
         MEND  , */
*%BSLDEB  :  ;
*DECLARE
*  1 IEDQDEB BASED(IEDQDPTR) BDY(DWORD), /* DATA EXTENT CB   @YM08020*/
*   2 DEBPRF      CHAR(36) BDY(DWORD),   /* DEB PREFIX               */
*    3 DEBAPVT     CHAR(20) BDY(WORD),   /* APPENDAGE VECTOR TABLE   */
*     4 DEBEOEA     PTR(31),             /* ADDRESS OF END-OF-EXTENT
*                                           APPENDAGE                */
*     4 DEBSIOA     PTR(31),             /* ADDRESS OF START I/O
*                                           APPENDAGE                */
*     4 DEBPCIA     PTR(31),             /* ADDRESS OF PCI APPENDAGE */
*     4 DEBCEA      PTR(31),             /* ADDRESS OF CHANNEL END
*                                           APPENDAGE                */
*     4 DEBXCEA     PTR(31),             /* ADDRESS OF ABNORMAL END
*                                           APPENDAGE                */
*    3 DEBWKARA    CHAR(1),              /* I/O SUPPORT WORK AREA    */
*    3 DEBDSCBA    CHAR(7),              /* ADDRESS OF DSCB          */
*    3 DEBDCBMK    CHAR(4),              /* DCB MODIFICATION MASK    */
*    3 DEBLNGTH    FIXED(8),             /* DEB LEN IN DWORD @YM08020*/
*    3 *           CHAR(3),              /* RESERVED                 */
*   2 DEBNMSUB    FIXED(8),              /* OPEN SUBROUT CNT @YM08020*/
*   2 DEBTCBAD    PTR(24),               /* ADDRESS OF THE TCB       */
*   2 DEBAMLNG    FIXED(8),              /* LEN A. M. SECT'  @YM08020*/
*   2 DEBDEBAD    PTR(24),               /* ADDRESS OF NEXT DEB      */
*   2 DEBOFLGS    CHAR(1),               /* DATA SET FLAGS           */
*   2 DEBIRBAD    PTR(24),               /* ADDRESS OF THE IRB       */
*   2 DEBOPATB    CHAR(1),               /* TYPE OF I/O              */
*   2 DEBSYSPG    PTR(24),               /* ADDRESS OF FIRST IOB IN
*                                           SYSTEM PURGE CHAIN       */
*   2 DEBNMEXT    FIXED(8),              /* NO. OF EXTENTS   @YM08020*/
*   2 DEBUSRPG    PTR(24),               /* ADDRESS OF FIRST IOB IN
*                                           THE USER PURGE CHAIN     */
*   2 DEBPRIOR    CHAR(1),               /* ZERO                     */
*   2 DEBECBAD    PTR(24),               /* ADDRESS OF PARAMETER LIST
*                                           TO FIND PURGE ECB        */
*   2 DEBPROTG    CHAR(1),               /* PROTECTION KEY DEB ID    */
*   2 DEBDCBAD    PTR(24),               /* ADDRESS OF DCB           */
*   2 DEBEXSCL    CHAR(1),               /* EXTENT SCALE             */
*   2 DEBAPPAD    PTR(24),               /* ADDRESS OF I/O APPENDAGE
*                                           VECTOR TABLE             */
*   2 DEBUCBS     CHAR(28);              /* FILLER FOR 3705 DEB      */
*DECLARE
*  1 DEBUCB(*) DEF(DEBUCBS),             /* UCB ADDRESSES            */
*   2 DEBDVMOD    CHAR(1),               /* DEVICE MODIFIER          */
*   2 DEBUCBAD    PTR(24);               /* ADDRESS OF UCB           */
*DECLARE
*    DEBSUBR(*)   CHAR(2) BASED(ADDR(DEBUCBS)+(LENGTH(DEBDVMOD)
*                              +LENGTH(DEBUCBAD))*DEBNMEXT);
*                                        /* SUBROUTINE NAMES         */
./ ADD NAME=TDISPD
*%GO TO BSLDISP;                        /*                     X03039*/
*/*                                                            X03039
         MACRO
         TDISPD &CSECT=NO                                      @Y17XAXA
.*A-000000-999999                                              @X31X8X0
.*CONVERTED TO BILINGUAL ON 5-23-73                              X03039
.*A000001,014000,938000                                          X03039
.*A937600                                                        S22027
.*A937300                                                        S22026
.*C028000,042000,049000,056000                                 @Y17XAXF
.*C091000,182000,280000,378000,462000                          @Y17XAXF
.*C497000,504000,553000,651000,749000,833000                   @Y17XAXF
.*C938900,939800,940100,940400                                 @Y17XAXF
.*C941900,942500,946100,946700                                 @Y17XAXF
.*C950600,951200,955400,956000,882000-937600,979400-991100     @Y17XAXF
.*C959600,960200,963800,964400,964700                          @Y17XAXF
.*C968300,968900,969200,969500,969800                          @Y17XAXF
.*C972800,973400,973700,977000,977600,977900                   @Y17XAXF
.*D483000,960500                                               @Y17XAXF
.*A854000,977900                                               @Y17XAXF
.*A040000,042000,044000,046000,068000,090000,094000,096000     @Y17XAXA
.*A118000,122000,128000,150000,158000,174000,194000,200000     @Y17XAXA
.*A232000,234000,256000,258000,280000,327000,594000            @Y17XAXA
         AIF   ('&CSECT' EQ 'NO').DSECT                        @Y17XAXA
         AIF   ('&CSECT' EQ 'YES').SAVEC                       @Y17XAXA
         MNOTE 12,'IHB300 CSECT OPTION INVALID '               @Y17XAXA
         AGO   .EXIT                                           @Y17XAXA
.DSECT   ANOP                                                  @Y17XAXA
IEDQDISP DSECT
DSPSAVE  DS    F                                               @Y17XAXF
         AGO   .SAVEE                                          @Y17XAXA
.SAVEC   ANOP                                                  @Y17XAXA
         USING IGG019RO,RENTRY                                 @Y17XAXA
DSPSAVE  B     SAVE                                            @Y17XAXA
         DROP  RENTRY                                          @Y17XAXA
         USING IGG019RO,RBASE                                  @Y17XAXA
.SAVEE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE IS THE FIRST ENTRY ROUTINE THAT GETS     @Y17XAXA
*             CONTROL INITIALLY .                              @Y17XAXA
         SPACE 1                                               @Y17XAXA
         AIF      ('&CSECT' EQ 'YES').DISPC                    @Y17XAXA
DSPDISP  DS    F                                               @Y17XAXA
         AGO   .DISPE                                          @Y17XAXA
.DISPC   ANOP                                                  @Y17XAXA
DSPDISP  B     DISPATCH                                        @Y17XAXA
.DISPE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE DISPATCHES TCAM SUBTASKS.IF NO TCAM      @Y17XAXF
*            SUBTASKS ARE READY TO RUN,IT WILL PLACE THE TCAM  @Y17XAXF
*            CONTROL PROGRAM INTO A SYSTEM WAIT.               @Y17XAXF
         SPACE 1
*         ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING      @Y17XAXA
*             INITIALIZED:                                     @Y17XAXA
*
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').LISTC                       @Y17XAXA
DSPLIST  DS    F                                               @Y17XAXA
         AGO   .LISTE                                          @Y17XAXA
.LISTC   ANOP                                                  @Y17XAXA
DSPLIST  B     LIST                                            @Y17XAXA
.LISTE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL TPOST ALL ITEMS IN A LIST.THE LAST  @Y17XAXA
*             ENTRY MUST HAVE ITS HI-ORDER BIT TURNED ON.      @Y17XAXA
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING       @Y17XAXA
*             REGISTERS INITIALIZED:                           @Y17XAXA
*
*         1       CONTAINS ADDRESS OF FIRST ENTRY IN A LIST OF
*                          ITEMS TO BE PLACED ON READY QUEUE BY
*                          PRIORITY
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
*        14       EXIT ADDRESS FROM SUBTASK                    @Y17XAXA
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').CHAINC                      @Y17XAXA
DSPCHAIN DS    F                                               @Y17XAXA
         AGO   .CHAINE                                         @Y17XAXA
.CHAINC  ANOP                                                  @Y17XAXA
DSPCHAIN B     CHAIN                                           @Y17XAXA
.CHAINE  ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL TPOST ALL ITEMS IN A PASSED CHAIN   @Y17XAXA
*             OF ITEMS                                         @Y17XAXA
         SPACE 1
*        THE LAST ITEM IN THE CHAIN MUST HAVE A LINK FIELD
*        CONTAINING X'000000'.
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING       @Y17XAXA
*             REGISTERS INITIALIZED:                           @Y17XAXA
*
*         1       CONTAINS ADDRESS OF FIRST ITEM IN A CHAIN OF
*                          ITEMS TO BE PLACED ON READY QUEUE BY
*                          PRIORITY
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
*        14       EXIT ADDRESS FROM SUBTASK                    @Y17XAXA
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').WAITC                       @Y17XAXA
DSPWAIT  DS    F                                               @Y17XAXA
         AGO   .WAITE                                          @Y17XAXA
.WAITC   ANOP                                                  @Y17XAXA
DSPWAIT  B     QWAIT                                           @Y17XAXA
.WAITE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL OBTAIN AN ELEMENT,IF AVAILABLE,FROM @Y17XAXA
*             A QCB AND PASS IT BACK TO THE SUBTASK.IF NOT     @Y17XAXA
*             AVAILABLE IT WILL QUEUE THE STCB TO WAIT FOR AN  @Y17XAXA
*             ELEMENT                                          @Y17XAXA
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING       @Y17XAXA
*             REGISTERS INITIALIZED:                           @Y17XAXA
*
*         3       CONTAINS ADDRESS OF QCB FROM WHICH ELEMENT IS
*                          DESIRED
*         7       CONTAINS ADDRESS OF QCB NOW CONTAINING THIS STCB
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').BYPASC                      @Y17XAXA
DSPBYPAS DS    F                                               @Y17XAXA
         AGO   .BYPASE                                         @Y17XAXA
.BYPASC  ANOP                                                  @Y17XAXA
DSPBYPAS B     BYPASS                                          @Y17XAXA
.BYPASE  ANOP                                                  @Y17XAXA
*        ENTRY AT THIS POINT WILL ACTIVATE THE STCB POINTED    @Y17XAXA
*             TO BY RSTCB IMMEDIATELY.                         @Y17XAXA
         SPACE 1
*        ENTRY HERE SHOULD HAVE THE FOLLOWING REGISTERS        @Y17XAXA
*             INITILIZED                                       @Y17XAXA
*
*         1       CONTAINS ADDRESS OF ELEMENT TO BE PASSED TO SUBTASK
*         3       CONTAINS ADDRESS OF STCB TO BE ACTIVATED
*         7       CONTAINS ADDRESS OF QCB CONTAINING STCB
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').POSTC                       @Y17XAXA
DSPPOST  DS    F                                               @Y17XAXA
DSPPOSTR DS    F                                               @Y17XAXA
         AGO   .POSTE                                          @Y17XAXA
.POSTC   ANOP                                                  @Y17XAXA
DSPPOST  B     POST                                            @Y17XAXA
DSPPOSTR B     POSTR                                           @Y17XAXA
.POSTE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL TPOST AN ELEMENT (PLACE IT ON READY @Y17XAXF
*             QUEUE BY PRIORITY).                              @Y17XAXF
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING
*             REGISTERS INITIALIZED:
*
*         1       CONTAINS ADDRESS OF ITEM TO BE PLACED ON READY
*                          QUEUE BY PRIORITY
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
*        14       EXIT ADDRESS FROM SUBTASK                    @Y17XAXA
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').TSTQC                       @Y17XAXA
DSPTSTQ  DS    F                                               @Y17XAXA
DSPTSTQR DS    F                                               @Y17XAXA
DSPUNAV  DS    F                                               @Y17XAXA
DSPUNAVR DS    F                                               @Y17XAXA
         AGO   .TSTQE                                          @Y17XAXA
.TSTQC   ANOP                                                  @Y17XAXA
DSPTSTQ  B     TESTQ                                           @Y17XAXA
DSPTSTQR B     TESTQR                                          @Y17XAXA
DSPUNAV  LA    RETURN,DISPATCH                                 @Y17XAXA
DSPUNAVR B     UNAVAILR                                        @Y17XAXA
.TSTQE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL MOVE AN STCB FROM ONE QCB TO ANOTHER@Y17XAXA
*             IF IT IS NOT ALREADY THERE.                      @Y17XAXA
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING       @Y17XAXA
*             REGISTERS INITIALIZED:                           @Y17XAXA
*
*         3       CONTAINS ADDRESS OF QCB FROM WHICH ELEMENT IS
*                          DESIRED
*         7       CONTAINS ADDRESS OF QCB NOW CONTAINING THE STCB
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').PRIOC                       @Y17XAXA
DSPPRIO  DS    F                                               @Y17XAXA
DSPPRIOR DS    F                                               @Y17XAXA
         AGO   .PRIOE                                          @Y17XAXA
.PRIOC   ANOP                                                  @Y17XAXA
DSPPRIO  LA    RETURN,DISPATCH                                 @Y17XAXA
DSPPRIOR B     PRIORITR                                        @Y17XAXA
.PRIOE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL INSERT AN ELEMENT INTO A CHAIN BY   @Y17XAXA
*             PRIORITY                                         @Y17XAXA
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING       @Y17XAXA
*             REGISTERS INITIALIZED:                           @Y17XAXA
*
*         1       CONTAINS ADDRESS OF ITEM TO BE PLACED IN CHAIN
*         7       CONTAINS ADDRESS OF CHAIN TO RECEIVE ITEM
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').LIFOC                       @Y17XAXA
DSPLIFO  DS    F                                               @Y17XAXA
DSPLIFOR DS    F                                               @Y17XAXA
         AGO   .LIFOE                                          @Y17XAXA
.LIFOC   ANOP                                                  @Y17XAXA
DSPLIFO  LA    RETURN,DISPATCH                                 @Y17XAXA
DSPLIFOR B     LIFOR                                           @Y17XAXA
.LIFOE   ANOP                                                  @Y17XAXA
*        THIS ROUTINE WILL INSERT AN ELEMENT AT THE TOP OF A   @Y17XAXA
*             CHAIN                                            @Y17XAXA
         SPACE 1
*        ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING       @Y17XAXA
*             REGISTERS INITIALIZED:                           @Y17XAXA
*
*         1       CONTAINS ADDRESS OF ITEM TO BE PLACED IN CHAIN
*         7       CONTAINS ADDRESS OF CHAIN TO RECEIVE ITEM
*        11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER      @Y17XAXF
*        13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2
         SPACE 1
         AIF   ('&CSECT' EQ 'YES').TRACEC                      @Y17XAXA
DSPTRACE DS    F                                               @Y17XAXA
         AGO   .TRACEE                                         @Y17XAXA
.TRACEC  ANOP                                                  @Y17XAXA
DSPTRACE DC    A(TRCQCB)                                       @Y17XAXA
.TRACEE    ANOP                                                @Y17XAXA
*        ADDRESS OF TRACE QCB/STCB TO WHICH OPERATOR CONTROL   @Y17XAXA
*             TPOSTS A BUFFER TO ACTIVATE /DEACTIVATE          @Y17XAXA
*             SUBTASK TRACE (S) .                              @Y17XAXA
         EJECT                                                 @Y17XAXA
*        STCBVTO VALUES                                        @Y17XAXA
         SPACE 2                                               @Y17XAXA
DSPCWAIT EQU   0                        ISSUE SYSTEM WAIT      @Y17XAXF
DSPCPOST EQU   2                        SYS POST ATTACHED TASK @Y17XAXF
DSPMCPL2 EQU   4                        ACTIVATE 2-BYTE STCB   @Y17XAXF
DSPMCPL4 EQU   6                        ACTIVATE 4-BYTE STCB   @Y17XAXF
DSPMCPL6 EQU   8                        ACTIVATE 6-BYTE STCB   @Y17XAXF
DSPMCPL8 EQU   10                       ACTIVATE 8-BYTE STCB   @Y17XAXF
DSPRCVSC EQU   12                       RECEIVE       SCHEDULER@Y17XAXF
DSPSNDSC EQU   14                       SEND          SCHEDULER@Y17XAXF
DSPGETSC EQU   16                       GET           SCHEDULER@Y17XAXF
DSPPUTSC EQU   18                       PUT           SCHEDULER@Y17XAXF
DSPGFFSC EQU   20                       GET FIFO      SCHEDULER@Y17XAXF
DSPLOGSC EQU   22                       LOG           SCHEDULER@Y17XAXF
DSPDIASC EQU   24                       DIAL          SCHEDULER@Y17XAXF
DSPBUFSC EQU   26                       BUFFERED TERM SCHEDULER@Y17XAXF
DSPRETSC EQU   28                       RETRIEVE      SCHEDULER@Y17XAXF
DSPLOCSC EQU   30                       LOCAL RECEIVE SCHEDULER@Y17XAXF
DSPCSCH  EQU   32 .                     CONCENTRATOR  SCHEDULER@Y17XAXF
DSPSEND  EQU   34 .                     3705 RES SEND SCHEDULER@Y17XAXF
DSPRCV   EQU   36 .                     3705 RES RECV SCHEDULER@Y17XAXF
DSPCBSCH EQU   38 .                     COMBUF        SCHEDULER@Y17XAXF
.EXIT    MEND                                                  @Y17XAXA
*                                                              X03039*/
*%BSLDISP: ;                            /*                     X03039*/
*  DCL   IEDQDISP  CHAR(68) BDY(HWORD) BASED(RDISP);       /*@Y17XAXF*/
*
*
*/*  THIS ROUTINE DISPATCHES TCAM SUBTASKS.  IF NO TCAM      @Y17XAXF*/
*/*      SUBTASKS ARE READY TO RUN, IT WILL PLACE THE TCAM   @Y17XAXF*/
*/*      MESSAGE CONTROL PROGRAM INTO A SYSTEM WAIT.         @Y17XAXF*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*     DCL DSPDISP  ENTRY BASED(ADDR(IEDQDISP)) POS(5)     /* @Y17XAXF*/
*         VALRG(*) OPTIONS(EXIT,NOSEQFLOW);               /* @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL TPOST ALL ITEMS IN A LIST.THE LAST ENTRYX03039*/
*/*      MUST HAVE ITS HI-ORDER BIT TURNED ON.                 X03039*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       1       CONTAINS ADDRESS OF FIRST ENTRY IN A LIST OF X03039*/
*/*                        ITEMS TO BE PLACED ON READY QUEUE BYX03039*/
*/*                        PRIORITY                            X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*/*      14       EXIT ADDRESS FROM SUBTASK                  @Y17XAXA*/
*   DCL DSPLIST  ENTRY BASED(ADDR(IEDQDISP)) POS(9)      /*  @Y17XAXF*/
*       VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /*  @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL TPOST ALL ITEMS IN A PASSED CHAIN.      X03039*/
*/*      THE LAST ITEM IN THE CHAIN MUST HAVE A LINK FIELD     X03039*/
*/*      CONTAINING X'000000'.                                 X03039*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       1       CONTAINS ADDRESS OF FIRST ITEM IN A CHAIN OF X03039*/
*/*                        ITEMS TO BE PLACED ON READY QUEUE BYX03039*/
*/*                        PRIORITY                            X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*/*      14       EXIT ADDRESS FROM SUBTASK                  @Y17XAXA*/
*   DCL DSPCHAIN ENTRY BASED(ADDR(IEDQDISP)) POS(13)      /* @Y17XAXF*/
*       VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                 /* @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL OBTAIN AN ELEMENT, IF AVAILABLE, FROM A X03039*/
*/*      QCB AND PASS IT BACK TO THE SUBTASK.  IF NOT AVAILABLEX03039*/
*/*      IT WILL QUEUE THE STCB TO WAIT FOR AN ELEMENT.        X03039*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       3       CONTAINS ADDRESS OF QCB FROM WHICH ELEMENT ISX03039*/
*/*                        DESIRED                             X03039*/
*/*       7       CONTAINS ADDRESS OF QCB NOW CONTAINING THIS  X03039*/
*/*                        STCB.                               X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*   DCL DSPWAIT  ENTRY BASED(ADDR(IEDQDISP)) POS(17)      /* @Y17XAXF*/
*       VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                 /* @Y17XAXF*/
*
*
*/*  ENTRY AT THIS POINT WILL ACTIVATE THE STCB POINTED TO BY  X03039*/
*/*      RSTCB IMMEDIATELY.                                    X03039*/
*
*/*  ENTRY HERE SHOULD HAVE THE FOLLOWING REGISTERS INITIALIZED:     */
*                                       /*                     X03039*/
*/*       1       CONTAINS ADDRESS OF ELEMENT TO BE PASSED TO SUBTASK*/
*/*                                                            X03039*/
*/*       3       CONTAINS ADDRESS OF STCB TO BE ACTIVATED     X03039*/
*/*       7       CONTAINS ADDRESS OF QCB CONTAINING STCB      X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*   DCL DSPBYPAS ENTRY BASED(ADDR(IEDQDISP)) POS(21)      /* @Y17XAXF*/
*       VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                 /* @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL TPOST AN ELEMENT(PLACE ON READY QUEUE)  X03039*/
*/*      BY PRIORITY).                                         X03039*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       1       CONTAINS ADDRESS OF ITEM TO BE PLACED ON RDY X03039*/
*/*                        QUEUE BY PRIORITY                   X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*/*      14       EXIT ADDRESS FROM SUBTASK                  @Y17XAXA*/
*   DCL DSPPOST  ENTRY BASED(ADDR(IEDQDISP)) POS(25)      /* @Y17XAXF*/
*       VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                 /* @Y17XAXF*/
*   DCL DSPPOSTR ENTRY BASED(ADDR(IEDQDISP)) POS(29)      /* @Y17XAXF*/
*       VALRG(*);                                         /* @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL MOVE AN STCB FROM ONE QCB TO ANOTHER IF IT    */
*/*      IS NOT ALREADY THERE.                                 X03039*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       3       CONTAINS ADDRESS OF QCB FROM WHICH ELEMENT ISX03039*/
*/*                        DESIRED                             X03039*/
*/*       7       CONTAINS ADDR OF QCB NOW CONTAINING THE STCB X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*    DCL DSPTSTQ  ENTRY BASED(ADDR(IEDQDISP)) POS(33)     /* @Y17XAXF*/
*        VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /* @Y17XAXF*/
*    DCL DSPTSTQR ENTRY BASED(ADDR(IEDQDISP)) POS(37)     /* @Y17XAXF*/
*        VALRG(*);                                        /* @Y17XAXF*/
*    DCL DSPUNAV  ENTRY BASED(ADDR(IEDQDISP)) POS(41)     /* @Y17XAXF*/
*        VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /* @Y17XAXF*/
*    DCL DSPUNAVR ENTRY BASED(ADDR(IEDQDISP)) POS(45)     /* @Y17XAXF*/
*        VALRG(*);                                        /* @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL INSERT AN ELEMENT INTO A CHAIN BY PRIORITY    */
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       1       CONTAINS ADDR OF ITEM TO BE PLACED IN CHAIN  X03039*/
*/*       7       CONTAINS ADDRESS OF CHAIN TO RECEIVE ITEM    X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*    DCL DSPPRIO  ENTRY BASED(ADDR(IEDQDISP)) POS(49)     /* @Y17XAXF*/
*        VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /* @Y17XAXF*/
*    DCL DSPPRIOR ENTRY BASED(ADDR(IEDQDISP)) POS(53)     /* @Y17XAXF*/
*        VALRG(*);                                        /* @Y17XAXF*/
*
*
*/*  THIS ROUTINE WILL INSERT AN ELEMENT AT THE TOP OF A CHAIN X03039*/
*
*/*  ENTRY TO THIS ROUTINE SHOULD HAVE THE FOLLOWING REGISTERS X03039*/
*/*      INITIALIZED:                                          X03039*/
*/*                                                            X03039*/
*/*       1       CONTAINS ADDRESS OF ITEM TO BE PLACED IN CHAIN     */
*/*                                                            X03039*/
*/*       7       CONTAINS ADDRESS OF CHAIN TO RECEIVE ITEM    X03039*/
*/*      11       CONTAINS ADDRESS ASSIGNED TO DISPATCHER    @Y17XAXF*/
*/*      13       CONTAINS ADDRESS ASSIGNED TO AVTSAVE2        X03039*/
*    DCL DSPLIFO  ENTRY BASED(ADDR(IEDQDISP)) POS(57)     /* @Y17XAXF*/
*        VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /* @Y17XAXF*/
*    DCL DSPLIFOR ENTRY BASED(ADDR(IEDQDISP)) POS(61)     /* @Y17XAXF*/
*        VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /* @Y17XAXF*/
*    DCL DSPTRACE ENTRY BASED(ADDR(IEDQDISP)) POS(65)     /* @Y17XAXA*/
*        VALRG(*) OPTIONS(EXIT,NOSEQFLOW);                /* @Y17XAXA*/
*
*
*/*  STCBVTO VALUES                                            X03039*/
*
*DCL DSPCWAIT BIT(8) CONSTANT('00'X);   /* ISSUE SYSTEM WAIT @Y17XAXF*/
*DCL DSPCPOST BIT(8) CONSTANT('02'X);   /* SYSTEM POST ATTACHED TASK */
*                                       /*                   @Y17XAXF*/
*DCL DSPMCPL2 BIT(8) CONSTANT('04'X);   /* ACTIVATE 2-BYTE STCB      */
*                                       /*                   @Y17XAXF*/
*DCL DSPMCPL4 BIT(8) CONSTANT('06'X);   /* ACTIVATE 4-BYTE STCB      */
*                                       /*                   @Y17XAXF*/
*DCL DSPMCPL6 BIT(8) CONSTANT('08'X);   /* ACTIVATE 6-BYTE STCB      */
*                                       /*                   @Y17XAXF*/
*DCL DSPMCPL8 BIT(8) CONSTANT('0A'X);   /* ACTIVATE 8-BYTE STCB      */
*                                       /*                   @Y17XAXF*/
*DCL DSPRCVSC BIT(8) CONSTANT('0C'X);   /* RECEIVE     SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPSNDSC BIT(8) CONSTANT('0E'X);   /* SEND        SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPGETSC BIT(8) CONSTANT('10'X);   /* GET         SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPPUTSC BIT(8) CONSTANT('12'X);   /* PUT         SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPGFFSC BIT(8) CONSTANT('14'X);   /* GET FIFO    SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPLOGSC BIT(8) CONSTANT('16'X);   /* LOG         SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPDIASC BIT(8) CONSTANT('18'X);   /* DIAL        SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPBUFSC BIT(8) CONSTANT('1A'X);   /* BUFF'D TERM SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPRETSC BIT(8) CONSTANT('1C'X);   /* RETRIEVE    SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPLOCSC BIT(8) CONSTANT('1E'X);   /* LOCAL REC   SCHEDULER     */
*                                       /*                   @Y17XAXF*/
*DCL DSPCSCH  BIT(8) CONSTANT('20'X);   /* CONCENTRATOR SCHEDULER    */
*                                       /*                   @Y17XAXF*/
*DCL DSPSEND  BIT(8) CONSTANT('22'X);   /* 3705 RES SEND SCHEDULER   */
*                                       /*                   @Y17XAXF*/
*DCL DSPRCV   BIT(8) CONSTANT('24'X);   /* 3705 RES RECV SCHEDULER   */
*                                       /*                   @Y17XAXF*/
*DCL DSPCBSCH BIT(8) CONSTANT('26'X);   /* COMBUF      SCHEDULER     */
*                                       /*                   @Y17XAXF*/
./ ADD NAME=TDRQD
         MACRO
         TDRQD
* TDRQD MACRO UPDATED 7/2/71
IEDQDRQ  DSECT
*
*              THIS IS A DSECT OF THE CONCENTRATOR DATA READY QUEUE.
*
DRQFLAG1 DS    XL1 .                    DRQ FLAG BYTE
*                                       BITS 0,1,2 & 3 MUST BE 0
*                        BIT DEFINITIONS
DRQDRQQ  EQU   X'04' .                  FLAG INDICATING A DRQ
DRQFQCB  EQU   X'02' .                  FLAG INDICATING A QCB
DRQHELD  EQU   X'01' .                  STOP SENDING - REUSE
*
DRQELCHN DS    AL3 .                    ELEMENT CHAIN
DRQPRI   DS    CL1 .                    PRIORITY
DRQLINK  DS    AL3 .                    DRQ LINK FIELD
DRQSTVTO DS    XL1 .                    INDEX TO ENTRY IN SUBTASK
*                                       VECTOR TABLE
*                        BIT DEFINITIONS
DRQCSVTO EQU   X'20' .                  DRQ VTO
*
DRQSTCHN DS    AL3 .                    STCB CHAIN
DRQSTPRI DS    CL1 .                    PRIORITY OF THE STCB
DRQSLINK DS    AL3 .                    POINTER TO NEXT STCB IN CHAIN
DRQBUFCT DS    FL1 .                    TOTAL BUFFER COUNT
DRQERBCT DS    FL1 .                    ERB BUFFER COUNT
DRQTDO   DS    XL1 .                    TIME DELAY QUEUE OFFSET
DRQSTAT  DS    XL1 .                    STATUS OF THIS QCB
*                        BIT DEFINITIONS
DRQEOM   EQU   X'80' .                  END OF MSG SENT
DRQTRMHO EQU   X'40' .                  TERMINAL WAS HELD
DRQBUFRD EQU   X'20' .                  BUFFERED TERMINAL
DRQSEND  EQU   X'10' .                  SENDING TO BUFFERED TERM
DRQRECEV EQU   X'08' .                  RECEIVING FROM BUFFERED TERM
DRQSCHDL EQU   X'04' .                  PUT IN DELAY Q WHEN INACTIVE
DRQCLOCK EQU   X'02' .                  ON=CLOCK, OFF=INTERVAL
DRQTIME  EQU   X'01' .                  DELAY GREATER THEN 12 HOURS
*
DRQSCBOF DS    FL1 .                    X'00' - OFFSET TO PROPER SCB
DRQCURQ  DS    AL3 .                    POINTER TO CURRENT QCB
DRQFLAG3 DS    XL1 .                    DRQ FLAG BYTE
*                        BIT DEFINITIONS
DRQFSPCI EQU   X'80' .                  FIRST PCI FOR CONC MSG
DRQERBAV EQU   X'40' .                  INDICATES ENABLED CODE
*                                       REQUESTED ERB
*
DRQRESV  DS    XL1 .                    RESERVED
DRQCTBCT DS    FL1 .                    CTB COUNT
DRQCTBMX DS    FL1 .                    MAX CTBS PER CONC MSG
DRQPRLVL DS    XL1 .                    HIGHEST PRIORITY LEVEL MSG
DRQPRVLK DS    0AL3 .                   POINTER TO THE LINK FIELD
DRQTDLNK DS    AL3 .                    LINK FIELD FOR TIME DELAY Q
DRQRELLN DS    FL1 .                    RELATIVE LINE NO
DRQDCBAD DS    AL3 .                    DCB ADDRESS
DRQFLAG2 DS    XL1 .                    DRQ STATUS BITS
*                        BIT DEFINITIONS
DRQTSSES EQU   X'80' .                  TSO SESSION IN PROGRESS
DRQRSRV  EQU   X'10' .                  REUSE SERVICED BIT
DRQTERMQ EQU   X'08' .                  QUEUING BY TERMINAL
DRQSDFFO EQU   X'04' .                  CURRENTLY SENDING FEFO MSG
DRQPROC  EQU   X'02' .                  THIS QCB FOR A PROCESS ENTRY
DRQCKPT  EQU   X'01' .                  FLAG FOR CHECKPOINT
*
DRQQBACK DS    AL3 .                    QBACK CHAIN POINTER
*
*         *******************************************************
*     0   *   FLAG1   **                 ELCHN                  *
*         *******************************************************
*     4   *   PRI     **                 LINK                   *
*         *******************************************************
*     8   *   STVTO   **                 STCHN                  *
*         *******************************************************
*    12   *   STPRI   **                 SLINK                  *
*         *******************************************************
*    16   *   BUFCT   **   ERBCT    **   TD/      **   STAT     *
*         *******************************************************
*    20   *   SCBOF   **                 CURQ                   *
*         *******************************************************
*    24   *   FLAG3   **   RESV     **   CTBCT    **   CTBMX    *
*         *******************************************************
*    28   *   PRLVL   **                 TDLNK/PRVLK            *
*         *******************************************************
*    32   *   RELLN   **                 DCBAD                  *
*         *******************************************************
*    36   *   FLAG2   **                 QBACK                  *
*         *******************************************************
         MEND
./ ADD NAME=TDSID
*        %GOTO PLSDSI;                  /*
         MACRO
         TDSID
.*A000000-999999                                               @Y17XAFF
*        NO ASSEMBLE VERSION OF THIS DSECT
         MEND  */
*%PLSDSI:;
*/*                                                                  */
*/*      COPY/REPLACE DEVICE SESSION INFORMATION                     */
*/*                                                                  */
* DECLARE
* 1 IEDDSI1 BASED(RDSI1),               /*FIRST FIELD GROUP          */
*  2 DSITOTNM FIXED(8),                 /* TOTAL NUM OF BYTES IN REC */
*  2 DSINETAD FIXED(16) BDY(BYTE),      /* NET ADDR OF DEVICE        */
*  2 DSIPOLL,                           /* POLLING CHARS FIELD       */
*   3 DSIPOLNM FIXED(8),                /*  NUMBER OF POLLING CHARS  */
*   3 DSIPOLCH CHAR(0);                 /*  POLLING CHARACTERS       */
*
*
* DECLARE
* 1 IEDDSI2 BASED(RDSI2),               /*SECOND FIELD GROUP         */
*  2 DSIADRNM FIXED(8),                 /* NUMBER OF ADDRESSING CHAR */
*  2 DSIADDR  CHAR(0);                  /* ADDRESSING CHARACTERS     */
*
*
* DECLARE
* 1 IEDDSI3 BASED(RDSI3),               /*THIRD FIELD GROUP          */
*  2 DSINPTID BIT(8),                   /* INPUT IDENTIFIER          */
*  2 DSISEQNO FIXED(16) BDY(BYTE),      /* BTU SEQ NUM FOR CURRENT
*                                          INVITE                    */
*  2 DSIMODID FIXED(8);                 /* BTU MODIFIER              */
*
*
* DECLARE
* 1 IEDDSI4 BASED(RDSI4),               /*FOURTH FIELD GROUP         */
*  2 DSIDIAL,                           /* DIAL DIGITS FIELD         */
*   3 DSIDLCNT FIXED(8),                /*  COUNT OF DIAL DATA       */
*   3 DSIDLMAX FIXED(8),                /*  MAX NUM OF DIAL DIGITS   */
*   3 DSISLACT FIXED(8),                /*  ACTUAL NUM OF DIAL DIGITS
*                                                                    */
*   3 DSIDLDIG CHAR(0);                 /*  DIAL DIGITS              */
./ ADD NAME=TDVCIDTD
*        %GOTO DVCIDPLS ;                                            /*
         MACRO
         TDVCIDTD
* TDVCIDTD MACRO UPDATED 7/2/71
.* TDVCIDTD MACRO CONVERTED TO BILINGUAL ON 11/01/72
IEDQDVCT DSECT
*              THIS IS A DSECT OF THE CONCENTRATOR DEVICE ID CHAR.
*              TABLE.
*
DVCNO    DS    0FL1 .                   NO OF ENTRIES IN TABLE
DVCIDLTH DS    XL1 .                    LENGTH OF DEV ID CHARS
DVCRSV   DS    0XL1 .                   RESERVED
DVCCHAR  DS    XL1 .                    ID CHARS - 1 BYTE OR
*                                       LARGER
DVCENLTH DS    FL1 .                    ENTRY LENGTH
DVCSTAT  DS    XL1 .                    STATUS
*                        BIT DEFINITIONS
DVCSORTD EQU   X'40' .                  TABLE SORTED
*
DVCECW   EQU   * .                      END OF CONTROL WORD
DVCEND   EQU   X'FE' .                  END OF TABLE
*
*         CONCENTRATOR
*         *******************************************************
*     0   *   NO      **   RSV      **   ENLTH    **   STAT     *
*         *******************************************************
*     4   *   01      **    FF      **       TNT OFFSET         *
*         *******************************************************
*
*         FOLLOWING THE CONCENTRATOR ENTRY CONTIGUOUSLY IN CORE
*         ARE DVCID ENTRIES FOR EACH TERMINAL ATTACHED TO THE
*         CONCENTRATOR, IN ONE OF THE FOLLOWING FORMATS:
*
*         DVCID=NONE
*         *******************************************************
*         *   01      **    FF      **       TNT OFFSET         *
*         *******************************************************
*
*         DVCID=CHAR
*         *******************************************************
*         *  LENGTH   **  ID CHARS  **       TNT OFFSET         *
*         *******************************************************
*            1 BYTE      VAR LENGTH            2 BYTES
*
         MEND   ,  */
*%DVCIDPLS : ;
*/* TDVCIDTD MACRO UPDATED 11/01/72                                  */
*/*                                                                  */
*/*  THIS IS A DSECT OF THE CONCENTRATOR DEVICE ID TABLE             */
*DECLARE
*  1 IEDQDVCT  BASED(IEDQDPTR) BDY(WORD),
*   2 DVCIDLTH   PTR(8),                /* LENGTH OF DEVIC ID CHARS  */
*     3 DVCNO    PTR(8),                /* NO OF ENTRIES IN TABLE    */
*   2 DVCCHAR    (*) CHAR(1),           /* ID CHARS - 1 BYTE MINIMUM */
*     3 DVCRSV   CHAR(1),               /* RESERVED                  */
*   2 DVCENLTH   PTR(8),                /* ENTRY LENGTH              */
*   2 DVCSTAT    BIT(8),                /* STATUS                    */
*     3 *        BIT(1),                /* RESERVED                  */
*     3 DVCSORTD BIT(1);                /* TABLE SORTED              */
*DECLARE  DVCECW (*) CHAR(1) BASED      /* END OF CONTROL WORD       */
*                (ADDR(IEDQDVCT) + LENGTH(IEDQDVCT));      /*@Y17XAXF*/
*%DCL DVCEND CHAR ;
*%DVCEND = '''FE''X' ;
*/*                                                                  */
*/*       CONCENTRATOR                                               */
*/*       *******************************************************    */
*/*   0   *   NO      **   RSV      **   ENLTH    **   STAT     *    */
*/*       *******************************************************    */
*/*   4   *  X'01'    **   X'FF'    **       TNT OFFSET         *    */
*/*       *******************************************************    */
*/*                                                                  */
*/*       FOLLOWING THE CONCENTRATOR ENTRY CONTIGUOUSLY IN CORE      */
*/*       ARE DVCID ENTRIES FOR EACH TERMINAL ATTACHED TO THE        */
*/*       CONCENTRATOR, IN ONE OF THE FOLLOWING FORMATS:             */
*/*                                                                  */
*/*       DVCID=NONE                                                 */
*/*       *******************************************************    */
*/*       *  X'01'    **   X'FF'    **       TNT OFFSET         *    */
*/*       *******************************************************    */
*/*                                                                  */
*/*       DVCID=CHAR                                                 */
*/*       *******************************************************    */
*/*       *  LENGTH   **  ID CHARS  **       TNT OFFSET         *    */
*/*       *******************************************************    */
*/*          1 BYTE      VAR LENGTH            2 BYTES               */
*/*                                                                  */
./ ADD NAME=TESTMODE
         MACRO
&LABEL   TESTMODE &FUNC,              SAVE/RESTORE FUNCTION INDICATOR  X
               &PROT,                 PSA PROTECTED/UNPROTECTED AREA   X
               &PSW=,                 PSW OF S BIT TO SAVE/RESTORE     X
               &DAT=ON,               DEFAULT DAT IS ENABLED           X
               &WORKREG=,             WORKREG                          X
               &ASCB=                 REG FOR RETURN OF ASCB
.*
.**********************************************************************
.*                                                                    *
.*01* MACRO-NAME = TESTMODE                                           *
.*                                                                    *
.*01* DESCRIPTIVE-NAME = TEST CROSS MEMORY MODE                       *
.*                                                                    *
.*01* COPYRIGHT: 5740-XYN COPYRIGHT IBM CORP. 1980,                   *
.*               LICENSED MATERIAL PROGRAM, PROPERTY OF IBM,          *
.*               REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER          *
.*               G120-2083.                                           *
.*                                                                    *
.*01* STATUS = OS/VS2 JBB1226                                         *
.*                                                                    *
.*01* FUNCTION = SAVE S BIT IN OLD PSW AND SET TO PRIMARY MODE,       *
.*               RESTORE S BIT AND MODE FROM OLD PSW, OR              *
.*               RETURN ASCB ADDRESS OF EXECUTION MODE                *
.*                                                                    *
.*01* MODULE-TYPE = MACRO                                             *
.*                                                                    *
.*02* PROCESSOR = ASSEMBLER                                           *
.*                                                                    *
.*01* MACROS = IHBERMAC                                               *
.*                                                                    *
.*01* CHANGE-ACTIVITY = NONE                                          *
.*                                                                    *
.*01* MNOTES =                                                        *
.*                                                                    *
.*       IHB001 SAVE/RESTORE/ASCB OPERAND REQUIRED, NOT SPECIFIED     *
.*       IHB002 INVALID XXX OPERAND SPECIFIED - UNAUTHORIZED CSECT    *
.*       IHB002 INVALID ASCB OPERAND SPECIFIED - XXX                  *
.*       IHB002 INVALID WORKREG OPERAND SPECIFIED - XXX               *
.*       IHB002 INVALID PSW OPERAND SPECIFIED - XXX                   *
.*       IHB002 INVALID DAT OPERAND SPECIFIED - XXX                   *
.*       IHB027 EXCESSIVE POSITIONAL PARAMETERS SPECIFIED             *
.*       IHB246 SAVE/RESTORE OPERAND SPECIFIED WITHOUT PROTECT/UNPROT *
.*              OPERAND                                               *
.*       IHB246 SAVE/RESTORE OPERAND SPECIFIED WITHOUT PSW OPERAND    *
.*       IHB246 PROTECT/ASCB OPERAND SPECIFIED WITHOUT WORKREG OPERAND*
.*       IHB280 PSW INVALID WITH ASCB                                 *
.*                                                                    *
.**********************************************************************
.* A-000000-999999                                             @G381PXU
.*
*        MACDATE = 80.029              .TESTMODE
.*
         LCLC  &AS                     LOCAL VARIABLE FOR ASCB REG
         LCLC  &IN                     LOCAL VARIABLE FOR SYSINDX
         LCLC  &PWB                    LOCAL VARIABLE PSA BASE WORKREG
         LCLC  &PZB                    LOCAL VARIABLE PSA BASE R0
         LCLC  &WR                     LOCAL VARIABLE FOR WORKREG
         LCLC  &UC                     LOCAL VARIABLE FOR MESSAGE CHARS
.*
&IN      SETC  '&SYSNDX'               SYSNDX FOR LABEL GENERATION
.*
&PWB     SETC  ''                      DEFAULT BASE TO NONE
&PZB     SETC  ''                      DEFAULT BASE TO NONE
.*
         AIF   (T'&LABEL EQ 'O').NOLAB IF NO LABEL, SKIP GENERATION
&LABEL   DC    0H'0'                   .BRANCH LABEL
.*
.NOLAB   ANOP
         AIF   (T'&ASCB NE 'O').ASCB   BRANCH IF ASCB SPECIFIED
.*
         AIF   ('&SYSECT' EQ 'IEAVEDS0').AUTH AUTHORIZED CSECT DISPATCH
         AIF   ('&SYSECT' EQ 'IEAVEEXT').AUTH AUTHORIZED CSECT EXT FLIH
         AIF   ('&SYSECT' EQ 'IEAVEIO').AUTH  AUTHORIZED CSECT IO FLIH
         AIF   ('&SYSECT' EQ 'IEAVELK').AUTH  AUTHORIZED CSECT LOCK MGR
         AIF   ('&SYSECT' EQ 'IEAVEPC').AUTH  AUTHORIZED CSECT PC FLIH
         AIF   ('&SYSECT' EQ 'IEAVEPCO').AUTH AUTHORIZED CSECT PC FLIH
         AIF   ('&SYSECT' EQ 'IEAVERES').AUTH AUTHORIZED CSECT RES FLIH
         AIF   ('&SYSECT' EQ 'IEAVESRT').AUTH AUTHORIZED CSECT STOP/
.*                                            RESET
         AIF   ('&SYSECT' EQ 'IEAVESVC').AUTH AUTHORIZED CSECT SVC FLIH
         AIF   ('&SYSECT' EQ 'IEAVTRT1').AUTH AUTHORIZED CSECT RTM
         AIF   ('&SYSECT' EQ 'IEAVTRTS').AUTH AUTHORIZED CSECT RTM
         AIF   ('&SYSECT' EQ 'IGFPEXIT').AUTH AUTHORIZED CSECT MCH
         AIF   ('&SYSECT' EQ 'IGFPMCIH').AUTH AUTHORIZED CSECT MCH
         AGO   .MNNAUTH
.*
.AUTH    ANOP
         AIF   (N'&SYSLIST EQ 0).MNNSRA IF NO POSITIONAL PARAMETERS
.*                                     ARE SPECIFIED, MNOTE AND EXIT
.*
         AIF   (N'&SYSLIST GT 2).MNEPP IF MORE THAN 2 POSITIONAL PARMS
.*                                     ARE SPECIFIED, MNOTE AND EXIT
.*
         AIF   ('&FUNC' NE 'SAVE' AND '&FUNC' NE 'RESTORE').MNNSRA
.*                                     POSITIONAL PARAMETER NOT -SAVE-
.*                                     OR -RESTORE-, MNOTE AND EXIT
.*
.**********************************************************************
.*                                                                    *
.*       SAVE OR RESTORE SPECIFIED                                    *
.*                                                                    *
.**********************************************************************
.*
         AIF   ('&PROT' NE 'PROTECT' AND '&PROT' NE 'UNPROT').MNNPU
.*                                     POSITIONAL PARM NOT -PROTECT-
.*                                     OR -UNPROT-, MNOTE AND EXIT
.*
         AIF   (T'&PSW EQ 'O').MNNPSW  IF PSW NOT SPECIFIED
.*                                     GO ISSUE MNOTE AND EXIT
.*
         AIF   ('&PSW'(1,1) EQ '(').MNINPW IF PSW REGISTER SPECIFIED
.*                                     GO ISSUE MNOTE AND EXIT
.*
         AIF   ('&DAT' NE 'ON' AND '&DAT' NE 'OFF').MNINDT
.*                                     INVALID DAT PARAMETER
.*                                     GO ISSUE MNOTE AND EXIT
.*
         AIF   ('&PROT' EQ 'UNPROT').NOWRKR NO WORK REG REQUIRED
.*                                     WITH UNPROT
.*
&PZB     SETC  '-PSA(0)'               USE PSA BASE R0 FOR TEST
.*
         AIF   ('&DAT' EQ 'OFF').NOWRKR NO WORK REG REQUIRED
.*                                     WITH DAT OFF
.*
         AIF   (T'&WORKREG EQ 'O').MNNWKR IF WORKREG NOT SPECIFIED
.*                                     GO ISSUE MNOTE AND EXIT
.*
         AIF   ('&WORKREG'(1,1) NE '(').MNINWR IF WORKREG NOT SPECIFIED
.*                                     AS REG, GO ISSUE MNOTE AND EXIT
.*
         AIF   (N'&WORKREG NE 1).MNINWR IF WORKREG SPECIFIED AS LIST,
.*                                     GO ISSUE MNOTE AND EXIT
.*
&WR      SETC  '&WORKREG(1)'           WORKREG FOR CODE GENERATION
.*
&PWB     SETC  '-PSA(&WR)'             USE PSA BASE WORKREG (HIGH
.*                                     VIRTUAL ADDRESS) FOR STORE
.*
.NOWRKR  ANOP
*
*        PROGRAM NOTE - THE CONDITION CODE WILL BE CHANGED
*
         AIF   ('&FUNC' NE 'SAVE').RESTO BRANCH IF RESTORE
.*
.**********************************************************************
.*                                                                    *
.*       SAVE OPTION SPECIFIED                                        *
.*                                                                    *
.**********************************************************************
.*
.*       NO SIMULATION CHECK NECESSARY FOR SAVE OPTION.
.*       S BIT ON IN PSAMODEW IMPLIES SIMULATION.
.*
         TM    PSAXMFLG-PSA(0),X'80'   .CHECK S BIT
         BNO   IHA&IN.A                .BRANCH IF S BIT OFF
.*
         AIF   ('&PROT' NE 'PROTECT').SNOP BRANCH IF AREA NOT PROTECTED
         AIF   ('&DAT' NE 'OFF').SPDAT BRANCH IF DAT IS ON
.*                                     PROTECTED AREA, DAT OFF
&PWB     SETC  '-PSA(0)'               USE PSA BASE R0 FOR STORE
*        PROTPSA DISABLE               .DISABLE PSA PROTECT
         PROTPSA DISABLE               .DISABLE PSA PROTECT
         AGO   .SNOP
.SPDAT   ANOP                          PROTECTED AREA, DAT ON
         LA    &WR,X'FFF'              .PSW IN PROTECTED PSA,
         SLL   &WR,12                  .FORM HIGH VIRTUAL ADDRESS
.SNOP    ANOP
         OI    2+&PSW&PWB,X'80'        .SAVE S BIT IN OLD PSW
         MVI   PSAXMFLG-PSA(0),X'00'   .CHANGE TO PRIMARY MODE
         LCTL  1,1,PSAXMCR1-PSA(0)     .SET UP PRIMARY MODE STD
.*
         AIF   ('&PROT' NE 'PROTECT' OR '&DAT' NE 'OFF').SPEXIT
*        PROTPSA ENABLE                .ENABLE PSA PROTECT
         PROTPSA ENABLE                .ENABLE PSA PROTECT
*
*        PROGRAM NOTE - PSA PROTECTION IS NOW ENABLED.
*
.SPEXIT  ANOP
IHA&IN.A DC    0H'0'                   .BRANCH LABEL
*                                      .TESTMODE END
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*       RESTORE OPTION SPECIFIED                                     *
.*                                                                    *
.**********************************************************************
.RESTO   ANOP                          CODE FOR RESTORE
         TM    PSAXMFB1-PSA(0),X'20'   .CHECK FOR SIMULATION
         BNO   IHA&IN.A                .BRANCH IF NOT PRESENT
         TM    2+&PSW&PZB,X'80'        .CHECK S BIT
         BNO   IHA&IN.A                .BRANCH IF S BIT OFF
.*
         AIF   ('&PROT' NE 'PROTECT').RNOP CODE FOR PROTECT OPTION
         AIF   ('&DAT' NE 'OFF').RPDAT BRANCH IF DAT IS ON
.*                                     PROTECTED AREA, DAT OFF
&PWB     SETC  '-PSA(0)'               USE PSA BASE R0 FOR STORE
*        PROTPSA DISABLE               .DISABLE PSA PROTECT
         PROTPSA DISABLE               .DISABLE PSA PROTECT
         AGO   .RNOP
.RPDAT   ANOP                          PROTECTED AREA, DAT ON
         LA    &WR,X'FFF'              .PSW IN PROTECTED PSA,
         SLL   &WR,12                  .FORM HIGH VIRTUAL ADDRESS
.RNOP    ANOP
         NI    2+&PSW&PWB,X'7F'        .TURN S BIT OFF IN OLD PSW
         MVI   PSAXMFLG-PSA(0),X'80'   .RESTORE SECONDARY MODE
         LCTL  1,1,PSAXMCR7-PSA(0)     .SET UP SECONDARY MODE STD
.*
         AIF   ('&PROT' NE 'PROTECT' OR '&DAT' NE 'OFF').RPEXIT
*        PROTPSA ENABLE                .ENABLE PSA PROTECT
         PROTPSA ENABLE                .ENABLE PSA PROTECT
*
*        PROGRAM NOTE - PSA PROTECTION IS NOW ENABLED.
*
.RPEXIT  ANOP
IHA&IN.A DC    0H'0'                   .BRANCH LABEL
*                                      .TESTMODE END
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*       ASCB OPTION SPECIFIED                                        *
.*                                                                    *
.**********************************************************************
.*
.ASCB    ANOP                          CHECK FOR ASCB OPTION
         AIF   (N'&SYSLIST NE 0).MNEPP IF ANY POSITIONAL PARMS WITH
.*                                     ASCB, GO MNOTE AND EXIT
.*
         AIF   (T'&PSW NE 'O').MNIPSW  IF PSW SPECIFIED WITH ASCB,
.*                                     GO MNOTE AND EXIT
.*
         AIF   ('&ASCB'(1,1) NE '(').MNINAS IF ASCB NOT SPECIFIED AS
.*                                     REG, GO ISSUE MNOTE AND EXIT
.*
         AIF   (N'&ASCB NE 1).MNINAS   IF ASCB SPECIFIED AS LIST,
.*                                     GO ISSUE MNOTE AND EXIT
.*
&AS      SETC  '&ASCB(1)'              A.S. REG FOR CODE GENERATION
.*
         AIF   (T'&WORKREG EQ 'O').MNNWKR IF WORKREG NOT SPECIFIED
.*                                     WITH ASCB, GO MNOTE AND EXIT
.*
         AIF   ('&WORKREG'(1,1) NE '(').MNINWR IF WORKREG NOT SPECIFIED
.*                                     AS REG, GO ISSUE MNOTE AND EXIT
.*
         AIF   (N'&WORKREG NE 1).MNINWR IF WORKREG SPECIFIED AS LIST,
.*                                     GO ISSUE MNOTE AND EXIT
.*
&WR      SETC  '&WORKREG(1)'           WORKREG FOR CODE GENERATION
*
*        PROGRAM NOTE - THE CONDITION CODE WILL BE CHANGED
*
.*
.*       CHECK FOR DISABLED, PERFORMACE PATH REQUEST
.*
         AIF   ('&SYSECT' EQ 'IEAVGM00').AUTHP AUTHORIZED CSECT GETMAIN
         AIF   ('&SYSECT' EQ 'IEAVGM01').AUTHP AUTHORIZED CSECT GETMAIN
         AIF   ('&SYSECT' EQ 'IEAVCSEG').AUTHP AUTHORIZED CSECT RSM
         AIF   ('&SYSECT' EQ 'IEAVPREF').AUTHP AUTHORIZED CSECT RSM
         AIF   ('&SYSECT' EQ 'IEAVSQA').AUTHP  AUTHORIZED CSECT RSM
         AIF   ('&SYSECT' EQ 'ILRJTERM').AUTHP AUTHORIZED CSECT ASM
         AGO   .AUTHNP                 GENERATE NON PERFORMANCE OR
.*                                     ENABLED PATH
.AUTHP   ANOP
         TM    PSAXMFB1-PSA(0),X'20'   .CHECK FOR SIMULATION
         BNO   IHA&IN.M                .BRANCH IF NOT PRESENT
         TM    PSAXMFLG-PSA(0),X'80'   .CHECK FOR SECONDARY MODE
         BO    IHA&IN.A                .BRANCH TO ESAR IF S BIT ON
         LH    &AS,PSAXMPAS-PSA(0)     .GET PASID
         B     IHA&IN.Z                .BRANCH TO GET ASCB ADDRESS
IHA&IN.A DC    0H'0'                   .BRANCH LABEL
         LH    &AS,PSAXMSAS-PSA(0)     .GET SASID
         B     IHA&IN.Z                .BRANCH TO GET ASCB ADDRESS
IHA&IN.M DC    0H'0'                   .BRANCH LABEL
.AUTHNP  ANOP
*        IAC   ASCBREG                 .GET S BIT
         IAC   &AS                     .GET S BIT
         BC    B'1011',IHA&IN.N        .BRANCH TO EPAR IF S BIT OFF
*        ESAR  ASCBREG                 .GET SASID
         ESAR  &AS                     .GET SASID
         B     IHA&IN.Z                .BRANCH TO GET ASCB ADDRESS
IHA&IN.N DC    0H'0'                   .BRANCH LABEL
*        EPAR  ASCBREG                 .GET PASID
         EPAR  &AS                     .GET PASID
IHA&IN.Z DC    0H'0'                   .BRANCH LABEL
         L     &WR,X'10'               .GET CVT ADDR
         L     &WR,CVTASVT-CVT(&WR)    .GET ASVT ADDR
         SLL   &AS,2                   .SHIFT ASID FOR ASVT INDX
         L     &AS,ASVTENTY-ASVT-4(&AS,&WR) RETURN ASCB ADDRESS
*                                      .TESTMODE END
         MEXIT
.*
.**********************************************************************
.*                                                                    *
.*      MACRO INVOCATION ERRORS                                       *
.*                                                                    *
.**********************************************************************
.*
.MNNSRA  ANOP
.*       IHB001 SAVE/RESTORE/ASCB OPERAND REQUIRED, NOT SPECIFIED
         IHBERMAC 1006,SAVE/RESTORE/ASCB
         MEXIT
.*
.MNNAUTH ANOP
&UC      SETC  'UNAUTHORIZED CSECT'
         AIF   (T'&ASCB NE 'O').MNNAUT1 BRANCH IF ASCB SPECIFIED
.*
.*       IHB002 INVALID XXX OPERAND SPECIFIED - UNAUTHORIZED CSECT
         IHBERMAC 1001,&FUNC,&UC
         MEXIT
.MNNAUT1 ANOP
         IHBERMAC 1001,ASCB,&UC
         MEXIT
.*
.MNINDT  ANOP
.*       IHB002 INVALID DAT OPERAND SPECIFIED - XXX
         IHBERMAC 1001,DAT,&DAT
         MEXIT
.*
.MNINAS  ANOP
.*       IHB002 INVALID ASCB OPERAND SPECIFIED - XXX
         IHBERMAC 1001,ASCB,&ASCB
         MEXIT
.*
.MNINWR  ANOP
.*       IHB002 INVALID WORKREG OPERAND SPECIFIED - XXX
         IHBERMAC 1001,WORKREG,&WORKREG
         MEXIT
.*
.MNINPW  ANOP
.*       IHB002 INVALID PSW OPERAND SPECIFIED - XXX
         IHBERMAC 1001,PSW,&PSW
         MEXIT
.*
.MNEPP   ANOP
.*       IHB027 EXCESSIVE POSITIONAL PARAMETERS SPECIFIED
         IHBERMAC 238
         MEXIT
.*
.MNNPU   ANOP
.*       IHB246 SAVE/RESTORE OPERAND SPECIFIED WITHOUT PROTECT/UNPROT
.*       OPERAND
         IHBERMAC 1010,SAVE/RESTORE,PROTECT/UNPROT
         MEXIT
.*
.MNNPSW  ANOP
.*       IHB246 SAVE/RESTORE OPERAND SPECIFIED WITHOUT PSW OPERAND
         IHBERMAC 1010,SAVE/RESTORE,PSW
         MEXIT
.*
.MNNWKR  ANOP
.*       IHB246 PROTECT/ASCB OPERAND SPECIFIED WITHOUT WORKREG OPERAND
         IHBERMAC 1010,PROTECT/ASCB,WORKREG
         MEXIT
.*
.MNIPSW  ANOP
.*       IHB280 PSW INVALID WITH ASCB
         IHBERMAC 1020,PSW,ASCB
         MEXIT
.*
         MEND
./ ADD NAME=TEXTD
*        %GOTO EXTPLS;            /* BILINGUAL HEADER
         MACRO
         TEXTD
.*A000000-999999                                               @Y17XAXF
*
*        FID0 NORMAL EXTEND RESPONSES
*
EXT00    EQU   X'00' .                  CONTROL MODE
EXT20    EQU   X'20' .                  TEXT MODE
EXT40    EQU   X'40' .                  TRANSPARENT TEXT MODE
EXT60    EQU   X'60' .                  HEADING MODE
EXT80    EQU   X'80' .                  SPECIAL
EXTE0    EQU   X'E0' .                  HARDWARE/USER ERROR
         SPACE
*
*    FINAL STATUS WHEN INITIAL STATUS = CONTROL,TEXT,TRANSPARENT
*                                     TEXT, OR HEADING
*
EXTX00   EQU   X'00' .                  TIME OUT
EXTX04   EQU   X'04' .                  CUTOFF
EXTX06   EQU   X'06' .                  REPLY TO TRANSMITTED DATA
*                                         WAS AN EOT
EXTX08   EQU   X'08' .                  AN EOT WAS RECEIVED ON A BLK
*                                         THAT WAS IN ERROR
EXTX0A   EQU   X'0A' .                  END OF DLE CONTROL
EXTX0C   EQU   X'0C' .                  WRONG ACK
EXTX0E   EQU   X'0E' .                  FOR  SS, NAK RETURNED IN
*                                         RSP TO A SELECTION,
*                                         POLL OR WRITE
*                                       FOR BSC, AND EOT RETURNED
*                                         IN RESPONSE TO A SLECTION
*                                         POLL, OR WRITE
EXTX10   EQU   X'10' .                  RECEIVED SUB-BLOCK
EXTX12   EQU   X'12' .                  END OF TEXT
EXTX14   EQU   X'14' .                  END OF BLOCK
EXTX16   EQU   X'16' .                  DATA OR LEADIN GRAPHICS
*                                         RECEIVED WITH AN ENQ
EXTX18   EQU   X'18' .                  EOT RECEIVED WITH NO ERRORS
EXTX1A   EQU   X'1A' .                  REVERSE INTERRUPT
EXTX1C   EQU   X'1C' .                  POSITIVE ACK RETURNED
*                                         AND NO ERRORS INDICATED
*                                         ON A WRITE OPERATION
EXTX1E   EQU   X'1E' .                  WACK RECEIVED
         EJECT
*
*        FINAL STATUS WHEN INITIAL STATUS - SPECIAL
*
EXTS00   EQU   X'00' .                  TIME-OUT WITH NOTHING REC
EXTS02   EQU   X'02' .                  COMMAND REJECT
EXTS04   EQU   X'04' .                  LEVEL 2 AND LEVEL 3
*                                         BUFFER POOLS DEPLETED
EXTS06   EQU   X'06' .                  SELECTED
EXTS08   EQU   X'08' .                  RECEIVED DISCONNECT SIGNAL
*                                         ON START-STOP OR DLE/EOT
EXTS0A   EQU   X'0A' .                  DATA WAS RECEIVED WHEN
*                                         IT WAS NOT EXPECTED
EXTS0C   EQU   X'0C' .                  A RESET OCCURRED
EXTS0E   EQU   X'0E' .                  THE DEVICE HAS BEEN POLLED
EXTS10   EQU   X'10' .                  TRANSMITTED SUB-BLOCK
EXTS12   EQU   X'12' .                  AN EOT WAS SENT AFTER A
*                                         SPECIFIED NUMBER OF WACKS
*                                         WERE RECEIVED IN RSP TO
*                                         TO A REQ OR OPER
EXTS14   EQU   X'14' .                  RECEIVED BREAK IN TEXT
EXTS16   EQU   X'16' .                  POLLING STOP
EXTS18   EQU   X'18' .                  EOT TRANSMITTED
EXTS1A   EQU   X'1A' .                  RECEIVED A BREAK SIGNAL
*                                         WHILE TRANSMITTING
EXTS1C   EQU   X'1C' .                  DISCONNECTED
EXTS1E   EQU   X'1E' .                  CONNECTED
         SPACE
*
*        FINAL STATUS WHEN INITIAL STATUS = HARDWARE/USER ERROR
*
EXTH00   EQU   X'00' .                  USER ERROR
EXTH04   EQU   X'04' .                  LEVEL 1 COMM SCANNER CHECK
EXTH08   EQU   X'08' .                  COMM LINE ADAPTER CHECK
EXTH0A   EQU   X'0A' .                  COMM SCANNER ADAPTER
*                                         FEEDBACK CHECK
EXTH0C   EQU   X'0C' .                  NOT USED
EXTH10   EQU   X'10' .                  MODEM ERROR
EXTH12   EQU   X'12' .                  MODEM TRANSMIT CLOCK OR
*                                         CLEAR-TO-SEND ERROR
EXTH14   EQU   X'14' .                  DSR-ON CHECK
EXTH18   EQU   X'18' .                  DSR-OFF CHECK
EXTH1C   EQU   X'1C' .                  ACU CHECK
EXTE1E   EQU   X'1E' .                  PROGRAM FAILURE
         SPACE
*
*    CONDITIONAL EXTENDED RESPONSES
*
EXTC82   EQU   X'82' .                  CHANGE-SPEED COMMAND INVALID
EXTC83   EQU   X'83' .                  SPECIFIED LINE IS UNAVAILABLE
EXTC84   EQU   X'84' .                  ERROR LOCK
EXTCE0   EQU   X'E0' .                  SWITCH-LINE-MODE COMMAND
*                                         WAS RECEIVED BUT LINE
*                                         NOT GENERATED AS MODE-
*                                         SWITCHABLE
EXTCE1   EQU   X'E1' .                  SWITCH-LINE-MODE COMMAND
*                                         WAS RECEIVED BUT A
*                                         COMMAND IS ALREADY
*                                         EXECUTING ON THE LINE
*                                         OR LINE TRACE IS ACTIVE
         MEND
*        */
*%EXTPLS:;
*/*                                                                  */
*/*      FID0 NORMAL EXTEND RESPONSES                                */
*/*                                                                  */
*DCL EXT00    BIT(3) CONSTANT('000'B);  /*CONTROL MODE               */
*DCL EXT20    BIT(3) CONSTANT('001'B);  /*TEXT MODE                  */
*DCL EXT40    BIT(3) CONSTANT('010'B);  /*TRANSPARENT TEXT MODE      */
*DCL EXT60    BIT(3) CONSTANT('011'B);  /*HEADING MODE               */
*DCL EXT80    BIT(3) CONSTANT('100'B);  /*SPECIAL                    */
*DCL EXTE0    BIT(3) CONSTANT('111'B);  /*HARDWARE/USER ERROR        */
         @SPACE;
*/*                                                                  */
*/*  FINAL STATUS WHEN INITIAL STATUS = CONTROL,TEXT,TRANSPARENT     */
*/*                                     TEXT, OR HEADING             */
*/*                                                                  */
*DCL EXTX00   BIT(4) CONSTANT('0000'B); /*TIME OUT                   */
*DCL EXTX04   BIT(4) CONSTANT('0010'B); /*CUTOFF                     */
*DCL EXTX06   BIT(4) CONSTANT('0011'B); /*REPLY TO TRANSMITTED DATA  */
*/*                                       WAS AN EOT                 */
*DCL EXTX08   BIT(4) CONSTANT('0100'B); /*AN EOT WAS RECEIVED ON A   */
*/*                                       BLOCK THAT WAS IN ERROR    */
*DCL EXTX0A   BIT(4) CONSTANT('0101'B); /*END OF DLE CONTROL         */
*DCL EXTX0C   BIT(4) CONSTANT('0110'B); /*WRONG ACK                  */
*DCL EXTX0E   BIT(4) CONSTANT('0111'B); /*FOR S/S, NAK RETURNED IN   */
*/*                                       RSP TO A SELECTION,        */
*/*                                       POLL OR WRITE              */
*/*                                     FOR BSC, AND EOT RETURNED    */
*/*                                       IN RESPONSE TO A SLECTION  */
*/*                                       POLL, OR WRITE             */
*DCL EXTX10   BIT(4) CONSTANT('1000'B); /* RECEIVED SUB-BLOCK        */
*DCL EXTX12   BIT(4) CONSTANT('1001'B); /*END OF TEXT                */
*DCL EXTX14   BIT(4) CONSTANT('1010'B); /*END OF BLOCK               */
*DCL EXTX16   BIT(4) CONSTANT('1011'B); /*DATA OR LEADIN GRAPHICS    */
*/*                                       RECEIVED WITH AN ENQ       */
*DCL EXTX18   BIT(4) CONSTANT('1100'B); /*EOT RECEIVED WITH NO ERROR */
*DCL EXTX1A   BIT(4) CONSTANT('1101'B); /*REVERSE INTERRUPT          */
*DCL EXTX1C   BIT(4) CONSTANT('1110'B); /*POSITIVE ACK RETURNED      */
*/*                                       AND NO ERRORS INDICATED    */
*/*                                       ON A WRITE OPERATION       */
*DCL EXTX1E   BIT(4) CONSTANT('1111'B); /*WACK RECEIVED              */
         @EJECT;
*/*                                                                  */
*/*      FINAL STATUS WHEN INITIAL STATUS - SPECIAL                  */
*/*                                                                  */
*DCL EXTS00   BIT(4) CONSTANT('0000'B); /*TIME-OUT WITH NOTHING REC  */
*DCL EXTS02   BIT(4) CONSTANT('0001'B); /*COMMAND REJECT             */
*DCL EXTS04   BIT(4) CONSTANT('0010'B); /*LEVEL 2 AND LEVEL 3        */
*/*                                       BUFFER POOLS DEPLETED      */
*DCL EXTS06   BIT(4) CONSTANT('0011'B); /*SELECTED                   */
*DCL EXTS08   BIT(4) CONSTANT('0100'B); /*RECEIVED DISCONNECT SIGNAL */
*/*                                       ON START-STOP OR DLE/EOT   */
*DCL EXTS0A   BIT(4) CONSTANT('0101'B); /*DATA WAS RECEIVED WHEN     */
*/*                                       IT WAS NOT EXPECTED        */
*DCL EXTS0C   BIT(4) CONSTANT('0110'B); /*A RESET OCCURRED           */
*DCL EXTS0E   BIT(4) CONSTANT('0111'B); /*THE DEVICE HAS BEEN POLLED */
*DCL EXTS10   BIT(4) CONSTANT('1000'B); /*TRANSMITTED SUB-BLOCK      */
*DCL EXTS12   BIT(4) CONSTANT('1001'B); /*AN EOT WAS SENT AFTER A    */
*/*                                       SPECIFIED NUMBER OF WACKS  */
*/*                                       WERE RECEIVED IN RSP TO    */
*/*                                       TO A REQ OR OPER           */
*DCL EXTS14   BIT(4) CONSTANT('1010'B); /*RECEIVED BREAK IN TEXT     */
*DCL EXTS16   BIT(4) CONSTANT('1011'B); /*POLLING STOP               */
*DCL EXTS18   BIT(4) CONSTANT('1100'B); /*EOT TRANSMITTED            */
*DCL EXTS1A   BIT(4) CONSTANT('1101'B); /*RECEIVED A BREAK SIGNAL    */
*/*                                       WHILE TRANSMITTING         */
*DCL EXTS1C   BIT(4) CONSTANT('1110'B); /*DISCONNECTED               */
*DCL EXTS1E   BIT(4) CONSTANT('1111'B); /*CONNECTED                  */
         @SPACE;
*/*                                                                  */
*/*      FINAL STATUS WHEN INITIAL STATUS = HARDWARE/USER ERROR      */
*/*                                                                  */
*DCL EXTH00   BIT(4) CONSTANT('0000'B); /*USER ERROR                 */
*DCL EXTH04   BIT(4) CONSTANT('0010'B); /*LEVEL 1 COMM SCANNER CHECK */
*DCL EXTH08   BIT(4) CONSTANT('0100'B); /*COMM LINE ADAPTER CHECK    */
*DCL EXTH0A   BIT(4) CONSTANT('0101'B); /*COMM SCANNER ADAPTER       */
*/*                                       FEEDBACK CHECK             */
*DCL EXTH0C   BIT(4) CONSTANT('0110'B); /*NOT USED                   */
*DCL EXTH10   BIT(4) CONSTANT('1000'B); /*MODEM ERROR                */
*DCL EXTH12   BIT(4) CONSTANT('1001'B); /*MODEM TRANSMIT CLOCK OR    */
*/*                                       CLEAR-TO-SEND ERROR        */
*DCL EXTH14   BIT(4) CONSTANT('1010'B); /*DSR-ON CHECK               */
*DCL EXTH18   BIT(4) CONSTANT('1100'B); /*DSR-OFF CHECK              */
*DCL EXTH1C   BIT(4) CONSTANT('1110'B); /*ACU CHECK                  */
*DCL EXTE1E   BIT(4) CONSTANT('1111'B); /*PROGRAM FAILURE            */
         @SPACE;
*/*                                                                  */
*/*  CONDITIONAL EXTENDED RESPONSES                                  */
*/*                                                                  */
*DCL EXTC82   BIT(8) CONSTANT('82'X);   /*CHANGE-SPEED COMMAND INVAL */
*DCL EXTC83   BIT(8) CONSTANT('83'X);   /*SPECIFIED LINE IS UNAVAIL  */
*DCL EXTC84   BIT(8) CONSTANT('84'X);   /*ERROR LOCK                 */
*DCL EXTCE0   BIT(8) CONSTANT('E0'X);   /*SWITCH-LINE-MODE COMMAND   */
*/*                                       WAS RECEIVED BUT LINE      */
*/*                                       NOT GENERATED AS MODE-     */
*/*                                       SWITCHABLE                 */
*DCL EXTCE1   BIT(8) CONSTANT('E1'X);   /*SWITCH-LINE-MODE COMMAND   */
*/*                                       WAS RECEIVED BUT A         */
*/*                                       COMMAND IS ALREADY         */
*/*                                       EXECUTING ON THE LINE      */
*/*                                       OR LINE TRACE IS ACTIVE    */
./ ADD NAME=TGMAIND
*        %GOTO PLSGMAIN;                /* BILINGUAL HEADER
         MACRO
         TGMAIND
         SPACE
.*CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
         SPACE
IEDGMAIN DSECT
*
*        TSO WORK AREA
*
GMTSBUFR DS    A .                      TSO BFR OR MSGGEN ADDR
GMTCBUFR DS    A .                      TCAM SCB ADDR
GMMOVED  DS    H .                      DATA MOVED
GMLINE   DS    H .                      LINE SIZE REMAINING
GMBLNTH  DS    H .                      TSO BFR DATA SIZE
GMMSGLEN DS    H .                      MESSAGE SIZE
GMWBUFSZ DS    H .                      TCAM BUFFER SIZE
GMSECENT DS    X .                      SPECIAL ENTRY
GMSTFD   EQU   X'F0' .                    STARTFIELD INSERT
GMRDAT   EQU   X'F1' .                    READ ATTRIBUTE INSERT
GMSBA    EQU   X'F2' .                    SBA INSERT
GMCUR1   EQU   X'F3' .                    FIRST CURSOR INSERT
GMCUR2   EQU   X'F4' .                    SECOND CURSOR INSERT
GMINC    EQU   X'F5' .                    INC INSERT
GMETX    EQU   X'F6' .                    ETX INSERT
GMEOT    EQU   X'F7' .                    EOT INSERT
GMETXEOT EQU   X'F8' .                    ETX/EOT INSERT
GMBYP    EQU   X'F9' .                    BYPASS CHAR INSERT
GMREST   EQU   X'FA' .                    RESTORE CHAR INSERT
GMCARCT  DS    X .                      QCB CARRIAGE COUNT
GMLINESV DS    H .                      FROM TSB OR DEFAULT LINE SIZE
GMLINENM EQU   GMLINESV .               DISPLAY NUMBER OF LINES
GMLNSIZE EQU   GMLINESV+1 .             DISPLAY LINE SIZE
GMSWT1   DS    X .                      SWITCH 1
GMCUR2FL EQU   X'80' .                    SECOND CURSOR FLAG
GMCUR1FL EQU   X'40' .                    FIRST CURSOR FLAG
GMRDATFL EQU   X'20' .                    READ ATTRIBUTE FLAG
GMSFATFL EQU   X'10' .                    START FIELD FLAG
GMBYPFL  EQU   X'08' .                    BYPASS FLAG
GMCRNLFL EQU   X'04' .                    CARRIAGE RETURN/NEW LINE FLAG
GMSBAFL  EQU   X'02' .                    SET BFR ADDRESS FLAG
GMWRATFL EQU   X'01' .                    WRITE ATTRIBUTE FLAG
GMSWT2   DS    X .                      SWITCH 2
GMRTCD4  EQU   X'04' .                    CALCSIZE RC 4
GMRTCD8  EQU   X'08' .                    CALCSIZE RC 8
GMRTCD12 EQU   X'0C' .                    CALCSIZE RC 12
GMRTCD16 EQU   X'10' .                    CALCSIZE RC 16
GMRTCD40 EQU   X'28' .                    CALCSIZE RC 40
GMRTCD44 EQU   X'2C' .                    CALCSIZE RC 44
GMWFLG1  DS    X .                      TSO FLAG 1
GMTSOMSG EQU   X'80' .                    TSO ENTRY
GMASISCL EQU   X'60' .                    ASIS SCREEN CONTROL
GMCNTRLM EQU   X'40' .                    CONTROL MODE
GMTSASIS EQU   X'20' .                    TSO TPUT ASIS
GM1MSGEN EQU   X'10' .                    FIRST MSGGEN PASS SWITCH
GMFMTFL  EQU   X'08' .                    SCREEN FORMAT INFO IN BFR
GMNOLEFT EQU   X'06' .                    NO LEFT JUSTIFICATION REQUEST
GMLEFT   EQU   X'05' .                    LEFT JUSTIFICATION REQUEST
GMWFLG2  DS    X .                      TSO FLAG 2
GMSAVX1  DS    H .                      SCREEN CURSOR ADDRESS
GMFLAG1  DS    X .                      FLAG BYTE 1
GMTRAILR EQU   X'80' .                    TRAILER BUFFER FLAG
GMPARTMV EQU   X'40' .                    PARTIAL MOVE FLAG
GMRESTSW EQU   X'20' .                    RESTORE CHAR FLAG
GMRECALC EQU   X'10' .                    BYPASS CODE AND RESET
GMINCSW  EQU   X'04' .                    INSERT CURSOR FLAG
GMEOTSW  EQU   X'02' .                    EOT FLAG
GMETXSW  EQU   X'01' .                    ETX FLAG
GMFLAG2  DS    X .                      FLAG BYTE 2
GMX3705  EQU   X'80' .                    TERMINAL ON A 3705
GMX1050  EQU   X'40' .                    DEVICE IS A 1050
GMPROMPT EQU   X'20' .                    PROMPT STRING FLAG
GMNLCRFL EQU   X'10' .                    NL/CR COUNT FLAG
GMNWLNCT EQU   X'08' .                    LINE COUNT FLAG
GMCRRDAT EQU   X'04' .                    READ ATTRIB LINE POS. FLAG
GMHDRFG  EQU   X'02' .                    FIRST BASIC UNIT FLAG
GMNOMVCT EQU   X'01' .                    NO MOVE COUNT FLAG
GMSAVX2  DS    H .                      FIRST/LAST CHARACTER
GMTOR    DS    F .                      DATA COUNT
GMFROMR  DS    F .                      DATA COUNT MOVED
GMTSCURR DS    A .                      CURRENT TSO BUFFER
GMMSGNLN DS    H .                      LENGTH OF MSGGEN DATA
GMSBAFLG EQU   X'EF' .                    SBA FLAG
GMCUR1FG EQU   X'EE' .                    CURSOR ONE FLAG
GMCUR2FG EQU   X'ED' .                    CURSOR TWO FLAG
GMSTFDFG EQU   X'EC' .                    START FIELD FLAG
GMWRATFG EQU   X'EB' .                    WRITE ATTRIBUTE FLAG
GMDEND   DS    D .                      DOUBLE SAVE
GMAINLEN EQU   *-IEDGMAIN               GMAIN LENGTH
*
         MEND
*        */
*%PLSGMAIN : ;
*DECLARE
*  1 IEDGMAIN BDY(WORD) BASED(IEDGMPTR),
*/*                                                                  */
*/*      TSO WORK AREA                                               */
*/*                                                                  */
*   2 GMTSBUFR PTR(31),                 /* TSO BFR OR MSGGEN ADDR    */
*   2 GMTCBUFR PTR(31),                 /* TCAM SCB ADDR             */
*   2 GMMOVED FIXED(15),                /* DATA MOVED                */
*   2 GMLINE FIXED(15),                 /* LINE SIZE REMAINING       */
*   2 GMBLNTH FIXED(15),                /* TSO BFR DATA SIZE         */
*   2 GMMSGLEN FIXED(15),               /* MESSAGE SIZE              */
*   2 GMWBUFSZ FIXED(15),               /* TCAM BFR SIZE             */
*   2 GMSECENT CHAR(1),                 /* SPECIAL ENTRY             */
*   2 GMCARCT CHAR(1),                  /* QCB CARRIAGE COUNT        */
*   2 GMLINESV FIXED(15),               /* FROM TSB OR DEFAULT
*                                          LINE SIZE                 */
*    3 GMLINENM CHAR(1),                /* DISPLAY NUMBER OF LINES   */
*    3 GMLNSIZE CHAR(1),                /* DISPLAY LINE SIZE         */
*   2 GMSWT1 CHAR(1),                   /* SWITCH 1                  */
*    3 GMCUR2FL BIT(1),                   /* SECOND CURSOR FLAG      */
*    3 GMCUR1FL BIT(1),                   /* FIRST CURSOR FLAG       */
*    3 GMRDATFL BIT(1),                   /* READ ATTRIBUTE FLAG     */
*    3 GMSFATFL BIT (1),                  /* START FIELD FLAG        */
*    3 GMBYPFL BIT (1),                   /* BYPASS FLAG             */
*    3 GMCRNLFL BIT (1),                  /* CARRIAGE RETURN/NEW
*                                            LINE FLAG               */
*    3 GMSBAFL BIT(1),                    /* SET BFR ADDRESS FLAG    */
*    3 GMWRATFL BIT (1),                  /* WRITE ATTRIBUTE FLAG    */
*   2 GMSWT2 CHAR(1),                   /* SWITCH 2                  */
*   2 GMWFLG1 CHAR(1),                  /* TSO FLAG 1                */
*   2 GMWFLG2 CHAR(1),                  /* TSO FLAG 2                */
*   2 GMSAVX1 FIXED(15),                /* SCREEN CURSOR ADDRESS     */
*   2 GMFLAG1 CHAR(1),                  /* FLAG BYTE 1               */
*    3 GMTRAILR BIT(1),                   /* TRAILER BUFFER FLAG     */
*    3 GMPARTMV BIT(1),                   /* PARTIAL MOVE FLAG       */
*    3 GMRESTSW BIT(1),                   /* RESTORE CHAR FLAG       */
*    3 GMRECALC BIT (1),                  /* BYPASS CODE AND RESET   */
*    3 *        BIT(1),                   /* UNUSED                  */
*    3 GMINCSW  BIT(1),                   /* INSERT CURSOR FLAG      */
*    3 GMEOTSW  BIT(1),                   /* EOT FLAG                */
*    3 GMETXSW  BIT(1),                   /* ETX FLAG                */
*   2 GMFLAG2 CHAR(1),                  /* FLAG BYTE 2               */
*    3 GMX3705 BIT(1),                    /* TERMINAL ON A 3705      */
*    3 GMX1050 BIT(1),                    /* DEVICE IS A 1050        */
*    3 GMPROMPT BIT (1),                  /* PROMPT STRING FLAG      */
*    3 GMNLCRFL BIT(1),                   /* NL/CR COUNT FLAG        */
*    3 GMNWLNCT BIT(1),                   /* LINE COUNT FLAG         */
*    3 GMCRRDAT BIT(1),                   /* READ ATTRIBUTE LINE
*                                            POSITION FLAG           */
*
*    3 GMHDRFG BIT(1),                    /* FIRST BASIC UNIT FLAG   */
*    3 GMNOMYCT BIT(1),                   /* NO MOVE COUNT FLAG      */
*   2 GMSAVX2 CHAR(2),                  /* FIRST/LAST CHARACTER      */
*   2 GMTOR PTR(31),                    /* DATA COUNT                */
*   2 GMFROMR PTR(31),                  /* DATA COUNT MOVED          */
*   2 GMTSCURR PTR(31),                 /* CURRENT TSO BUFFER        */
*   2 GMMSGNLN FIXED(15),               /* LENGTH OF MSGGEN DATA     */
*   2 GMDEND CHAR(8);                   /* DOUBLE SAVE               */
*
* %GMAINLEN='LENGTH(IEDGMAIN)';         /* GMAIN LENGTH              */
*/*                                                                  */
*/*      GMAIN CONSTANTS                                             */
*/*                                                                  */
*DCL GMSTFD BIT(8) CONSTANT('F0'X);       /* STARTFIELD INSERT       */
*DCL GMRDAT BIT(8) CONSTANT('F1'X);       /* READ ATTRIB INSERT      */
*DCL GMSBA BIT(8) CONSTANT('F2'X);        /* SBA INSERT              */
*DCL GMCUR1 BIT(8) CONSTANT('F3'X);       /* FIRST CURSOR INSERT     */
*DCL GMCUR2 BIT(8) CONSTANT('F4'X);       /* SECOND CURSOR INSERT    */
*DCL GMINC BIT(8) CONSTANT('F5'X);        /* INC INSERT              */
*DCL GMETX BIT(8) CONSTANT('F6'X);      /* ETX INSERT                */
*DCL GMEOT BIT(8) CONSTANT('F7'X);        /* EOT INSERT              */
*DCL GMETXEOT BIT(8) CONSTANT('F8'X);     /* ETX/EOT INSERT          */
*DCL GMBYP BIT(8) CONSTANT ('F9'X);       /* BYPASS CHAR INSERT      */
*DCL GMREST BIT(8) CONSTANT('FA'X);       /* RESTORE CHAR INSERT     */
*
*DCL GMRTCD4 BIT(8) CONSTANT('04'X);      /* CALCSIZE RC 4           */
*DCL GMRTCD8 BIT(8) CONSTANT('08'X);      /* CALCSIZE RC 8           */
*DCL GMRTCD12 BIT(8) CONSTANT('0C'X);     /* CALCSIZE RC 12          */
*DCL GMRTCD16 BIT(8) CONSTANT('10'X);     /* CALCSIZE RC 16          */
*DCL GMRTCD40 BIT(8) CONSTANT('28'X);     /* CALCSIZE RC 40          */
*DCL GMRTCD44 BIT(8) CONSTANT('2C'X);     /* CALCSIZE RC 44          */
*
*DCL GMTSOMGS BIT(8) CONSTANT('80'X);     /* TSO ENTRY               */
*DCL GMASISCL BIT(8) CONSTANT('60'X);     /* ASIS SCREEN CONTROL     */
*DCL GMCNTRLM BIT(8) CONSTANT('40'X);     /* CONTROL MODE            */
*DCL GMTSASIS BIT(8) CONSTANT('20'X);     /* TSO TPUT ASIS           */
*DCL GM1MSGEN BIT(8) CONSTANT('10'X);     /* FIRST MSGGEN PASS SW    */
*DCL GMFMTFL BIT(8) CONSTANT('08'X);      /* SCREEN FORMAT INFO
*                                            IN BUFFER               */
*DCL GMNOLEFT BIT(8) CONSTANT('06'X);     /* NO LEFT JUSTIF. REQ     */
*DCL GMLEFT BIT(8) CONSTANT('05'X);       /* LEFT JUSTIF. REQ        */
*
*DCL GMSBAFLG BIT(8) CONSTANT('EF'X);     /* SBA FLAG                */
*DCL GMCUR1FG BIT(8) CONSTANT('EE'X);     /* CURSOR ONE FLAG         */
*DCL GMCUR2FG BIT(8) CONSTANT('ED'X);     /* CURSOR TWO FLAG         */
*DCL GMSTFDFG BIT(8) CONSTANT('ED'X);     /* START FIELD FLAG        */
*DCL GMWRATFG BIT(8) CONSTANT('EB'X);     /* WRITE ATTRIBUTE FIELD   */
*
./ ADD NAME=THEDD
*        %GOTO PLSHED;                  /* BILINGUAL HEADER
         MACRO
         THEDD
IEDHED   DSECT                          TABLE CONTROL AREA
HEDTRCAD DS    A .                      ADDR OF TABLE-BUILD RTN
HEDSIZE  DS    F .                      OVER-ALL TABLE SIZE
HEDRLN   DS    C .                      RELATIVE LINE NUMBER
HEDFSTHF DS    AL3 .                    ADDR OF 1ST HALF OF TABLE
HEDSWCHS DS    XL1 .                    SWITCHES
HEDTBL1  EQU   X'80' .                  TABLE-IN-USE FLAG
*                                          1 - 1ST HALF-TABLE
*                                          0 - 2ND HALF-TABLE
HEDFULL1 EQU   X'40' .                  1ST HALF-TABLE-FULL FLAG
HEDFULL2 EQU   X'20' .                  2ND HALF-TABLE-FULL FLAG
HEDECBAV EQU   X'10' .                  ECB-AVAILABLE FLAG
*        EQU   X'08'-X'01' .            RESERVED
HEDSECHF DS    AL3 .                    ADDR OF 2ND HALF OF TABLE
HEDTBPOS DS    F .                      CURRENT TABLE POSITION
HEDSEQCT DS    H .                      SEQUENCE COUNTER
HEDREMLN DS    H .                      REMAINING TABLE LENGTH
HEDHLFSZ DS    H .                      TOTAL SIZE OF HALF-TABLE
HEDDATLN DS    H .                      DATA LENGTH PER HALF-TABLE
HEDLIST  DS    0CL16                    COMWRITE PARAMETER LIST
HEDAREA  DS    A .                      DATA ADDRESS
HEDTS    DS    C .                      TEST & SET SWITCHES
HEDFLAG  DS    CL1 .                    FLAG BYTE
*        EQU   X'80' .                   RESERVED
HEDCWOK  EQU   X'40' .                   COMWRITE COMPLETION FLAG
*        EQU   X'20'-X'01' .             RESERVED
HEDLNTH  DS    H .                      LENGTH OF DATA
HEDCT    DS    F .                      RECORD COUNT
HEDID    DS    CL4 .                    ID FOR LINE TRACE      @YM07377
         DS    CL4 .                    RESERVED
         MEND  */
*%PLSHED:;
*/*                                                                  */
*/*      TRACE TABLE HEADER DSECT                                    */
*/*                                                                  */
*DCL 1 IEDHED      BASED(RHEADER),      /* TABLE CONTROL AREA        */
*      2 HEDTRCAD  PTR(31),             /* ADDR OF TABLE-BUILD RTN   */
*      2 HEDSIZE   FIXED(31),           /* OVER-ALL TABLE SIZE       */
*      2 HEDRLN    CHAR(1),             /* RELATIVE LINE NUMBER      */
*      2 HEDFSTHF  PTR(24),             /* ADDR OF 1ST HALF OF TABLE */
*      2 HEDSWCHS  BIT(8),              /* SWITCHES                  */
*        3 HEDTBL1  BIT(1),             /* TABLE-IN-USE FLAG
*                                          1 - 1ST HALF-TABLE
*                                          0 - 2ND HALF-TABLE        */
*        3 HEDFULL1 BIT(1),             /* 1ST HALF-TABLE-FULL FLAG  */
*        3 HEDFULL2 BIT(1),             /* 2ND HALF-TABLE-FULL FLAG  */
*        3 HEDECBAV BIT(1),             /* ECB-AVAILABLE FLAG        */
*        3 *        BIT(4),             /* FIRST-TIME SWITCH         */
*      2 HEDSECHF  PTR(24),             /* ADDR OF 2ND HALF OF TABLE */
*      2 HEDTBPOS  FIXED(31),           /* CURRENT TABLE POSITION    */
*      2 HEDSEQCT  FIXED(15),           /* SEQUENCE COUNTER          */
*      2 HEDREMLN  FIXED(15),           /* REMAINING TABLE LENGTH    */
*      2 HEDHLFSZ  FIXED(15),           /* TOTAL SIZE OF HALF-TABLE  */
*      2 HEDDATLN  FIXED(15),           /* DATA LENGTH PER HALF-TABLE*/
*      2 HEDLIST,                       /* COMWRITE PARAMETER LIST   */
*        3 HEDAREA PTR(31),             /* DATA ADDRESS              */
*        3 HEDTS   CHAR(1),             /* TEST & SET SWITCHES       */
*        3 HEDFLAG CHAR(1),             /* FLAG BYTE                 */
*          4 *      BIT(1),
*          4 HEDCWOK  BIT(1),           /* COMWRITE COMPLETION FLAG  */
*          4 *      BIT(6),
*        3 HEDLNTH FIXED(15),           /* LENGTH OF DATA            */
*        3 HEDCT   FIXED(31),           /* RECORD COUNT              */
*        3 HEDID   CHAR(4),             /* ID FOR LINE TRACE         */
*      2 *         CHAR(4);
./ ADD NAME=TIDD
*        %GOTO PLSID;                   /* BILINGUAL HEADER
         MACRO
         TIDD
*
.*A000000-999999                                               @Y17XAXF
*        BALR VERSION NOT SUPPORTED
*
         MEND  */
*%PLSID:;
* DCL IDCHCKPT CHAR(2) CONSTANT('06');  /* CHECKPOINT                */
* DCL IDMSGOOD CHAR(2) CONSTANT('M3');  /* GOOD MESSAGE MODULE       */
* DCL IDMSGCHN CHAR(2) CONSTANT('09');  /* MESSAGE MODULE CHAIN      */
* DCL IDBHSTLS CHAR(2) CONSTANT('MS');  /* BHSET, TRANLMT, SESSION   */
* DCL IDRUHAND CHAR(2) CONSTANT('02');  /* REQUEST-RESPONSE UNIT
*                                          HANDLER                   */
./ ADD NAME=TINVLD
*        %GOTO PLSINVL;                 /*
         MACRO
         TINVLD
.*A00000000-99999999                                           @Y17XAXF
IEDINVL  DSECT
*
*        INVITATION LIST DSECT
*
INVCTL   DS    0CL4 .                   CONTROL WORD
INVTOTNT DS    XL1 .                     TOTAL ENTRIES IN LIST
INVACTNT DS    XL1 .                     TOTAL ACTIVE ENTRIES
INVENTLG DS    XL1 .                     ENTRY LENGTH
INVSTATS DS    XL1 .                     STATUS
INVEOT   EQU   X'80' .                    EOT SPECIFIED
INVOFSRT EQU   X'40' .                    OFFSETS SORTED
INVCONT  EQU   X'20' .                    CONTENTION
*        EQU   X'10'-X'08'                RESERVED
INVCRR   EQU   X'04' .                    CHECKPOINT RESTART
*        EQU   X'02' .                    RESERVED
INVAUTPL EQU   X'01' .                    AUTOPOLL IN EFFECT
INVCPUID DS    0A .                     IF SEQUENCE ADDRESS
INVBFRTM DS    0CL4 .                    BUFFERED TERM FIELD
INVACTCT DS    XL1 .                      NO. ACTIVE TERM
INVUCBST DS    XL1 .                      UCB STATUS
         DS    XL1 .                      RESERVED
INVTRMCT DS    XL1 .                      NO TERMS ON THIS LINE
INVENTRY EQU   *                        BEGIN INVITATION LIST
*                                        ENTRIES
INVENDL  EQU   X'FE' .                  END OF ACTIVE LIST INDICATOR
         MEND  */
*%PLSINVL: ;
*/*                                                                  */
*/*      INVITATION LIST DSECT                                       */
*/*                                                                  */
* DECLARE
* 1 IEDINVL  BASED(RINVL),
*  2 INVCTL   CHAR(4),                  /* CONTROL WORD              */
*   3 INVTOTNT FIXED(8),                /*  TOTAL ENTRIES IN LIST    */
*   3 INVACTNT FIXED(8),                /*  TOTAL ACTIVE ENTRIES     */
*   3 INVENTLG FIXED(8),                /*  ENTRY LENGTH             */
*   3 INVSTATS FIXED(8),                /*  STATUS                   */
*    4 INVEOT   BIT(1),                 /*   EOT SPECIFIED           */
*    4 INVOFSRT BIT(1),                 /*   OFFSETS SORTED          */
*    4 INVCONT  BIT(1),                 /*   CONTENTION              */
*    4 *        BIT(2),                 /*   RESERVED                */
*    4 INVCRR   BIT(1),                 /*   CHECKPOINT RESTART      */
*    4 *        BIT(1),                 /*   RESERVED                */
*    4 INVAUTPL BIT(1),                 /*   AUTOPOLL IN EFFECT      */
*  2 INVCPUID PTR(31),                  /* IF SEQUENCE ADDRESS       */
*   3 INVBFRTM CHAR(4),                 /*  BUFFERED TERM FIELD      */
*    4 INVACTCT FIXED(8),               /*   NO. ACTIVE TERM         */
*    4 INVUCBST BIT(8),                 /*   UCB STATUS              */
*    4 *        BIT(8),                 /*   RESERVED                */
*    4 INVTRMCT FIXED(8),               /*   NO TERMS ON THIS LINE   */
*  2 INVENTRY CHAR(*);                  /* BEGIN INVITATION LIST
*                                          ENTRIES                   */
* DCL INVENDL  BIT(8) CONSTANT('FE'X);  /* END OF ACTIVE LIST INDICATOR
*                                                                    */
./ ADD NAME=TIOBD
         MACRO
         TIOBD
         SPACE
IEDQIOB  DSECT
IOBFLAG1 DS    C
IOBFLAG2 DS    C
IOBSENS0 DS    C
IOBSENS1 DS    C
IOBECBCC DS    C .                      COMPLETION CODE
IOBECBPT DS    AL3 .                    ADDR OF ECB
IOBFLAG3 DS    C .                      I/O ERROR FLAGS
IOBCSW   DS    CL7 .                    CSW
IOBSIOCC DS    C .                      SIO CONDITION CODES
IOBSTART DS    AL3 .                    ADDR OF CHANNEL PROGRAM
         DS    C .                      RESERVED
IOBDCBPT DS    AL3 .                    ADDR OF DCB
         DS    C .                      OP CODE
IOBRESTR DS    AL3 .                    RESTART ADDR OF IOS
IOBINCAM DS    H .                      BLOCK COUNT
IOBERRCT DS    H .                      NO. OF ERROR RETRIES
IOBSEEK  DS    CL8 .                    MBBCCHHR
*
*                       END OF IOB
*
IOBXECB  DS    F .                      ECB
IOBBUSYN EQU   X'40' .                  BUSY BIT OF AN ECB
IOBXCC   DS    H .                      CURRENT ARM POSITION - CYL
IOBXRETQ DS    AL3 .                    ADDR OF Q OF CPB READY FOR
*                                         DISK END APPENDAGE FOR RETRY
         ORG   *-1 .                    LOW BIT OF PREVIOUS ADDR REDEF
IOBXLOCK DS    0X .                     FLAG BIT - LOCKED DOOR
IOBXLOCN EQU   X'01' .                  FORBIDS DISK END APPENDAGE
*                                         TO RETRY
IOBXLOCF EQU   X'FF'-IOBXLOCN .         UNLOCKED, RETRY PERMITTED
IOBXNEWQ DS    A .                      ADDR OF Q OF CPBS BEING BUILT
IOBEND   EQU   *
         SPACE 2
         MEND
./ ADD NAME=TIOSBED
         MACRO
         TIOSBED
.*A-000000-999999                                              @OZ26164
         SPACE
*        MAPPING FOR THE EXTENSION FOR AN IOSB USED FOR A MESSAGE
*        QUEUES DISK DATA SET
         SPACE
.*       UPDATED   09/10/77
.*CHANGE ACTIVITY = AS FOLLOWS:
.*
         SPACE
IOSBE    DSECT
IOSBEENT DS    XL1                      ENTRY FLAG
IOSBESIO EQU   X'28'                    ENTRY FOR START I/O
IOSBEIOS DS    AL3                      ADDRESS OF IOSB
IOSBEFLG DS    XL1                      FLAG BYTE
IOSBEEOL EQU   X'80'                    END OF PARM LIST
IOSBERDY EQU   X'40'                    IOSBE READY FOR
*                                       NEW I/O OPERATION
IOSBEBUS EQU   X'FF'-IOSBERDY           IOSBE BUSY - CANNOT
*                                       ACCEPT NEW I/O
IOSBECPR EQU   X'20'                    CCW'S ARE REAL
IOSBECPV EQU   X'FF'-IOSBECPR           CCW'S ARE VIRTUAL
IOSBENRQ EQU   X'10'                    QUEUE TYPE
*                                         1 = NON-REUS QUEUES
*                                         0 = REUS QUEUES
IOSBECPB DS    AL3                      ADDRESS OF CPB
IOSBEXCC DS    H                        ARM POSITION
IOSBERET DS    XL3                      RETRY QUEUE
IOSBENEW DS    AL3                      NEW QUEUE OF CPB'S
IOSBELCK DS    XL1                      TEST AND SET BYTE USED TO
*                                       SYNCHRONIZE RETRIES
         DS    XL7                      RESERVED
IOSBELEN EQU   *-IOSBE                  LENGTH OF IOSBE
         MEND
./ ADD NAME=TIOTEXT
*        %GOTO TIOTXBSL ; /*
         MACRO
         TIOTEXT
TIOTEXT  DSECT
***********************************************************************
*    THE TIOT EXTENSION TABLE (TIOTEXT) IS CONSTRUCTED DURING
*    ALLOCATION AT LOGON.  IT CONTAINS INFO WHICH IS USED IN
*    DYNAMIC ALLOCATION ROUTINES
***********************************************************************
         DS    0F
TEXTTTR  DS    CL3      TTR OF TIOT EXT. TABLE
TEXTID   DS    CL1       CONTROL BLOCK IDENTIFIER
         DS    F        RESERVED
TEXTSNO  DS    CL1       NUMBER OF RECORDS IN SIOTTR TABLE
TEXTSTTR DS    5CL3     TTR'S OF SIOTTTR TABLE RECORDS
         DS    CL1      RESERVED
TEXTLS   DS    CL3      TTR OF LAST MSG CLASS SYSOUT SIOT
         DS    CL1      RESERVED
TEXTLCTP DS    CL3      LINKAGE CONTROL TBL ADDR
         DS    CL1      RESERVED
TEXTENQ  DS    CL3      TTR OF DATA SET ENQUEUE TBL (DSENQ)
TEXTMCLS DS    CL1       MSG CLASS FOR THE JOB FROM THE JCT
TEXTMLEV DS    CL1      MESSAGE LEVEL FOR THE FOB FROM THE JCT
         DS    H        RESERVED
         DS    CL1      RESERVED
TEXTJCT  DS    CL3      TTR OF JCT
         DS    CL1      RESERVED
TEXTSCT  DS    CL3      TTR OF THE STEP SCT
         DS    CL128    NOT USED
**/
         MEND
* %TIOTXBSL:  ;
* DECLARE
*   1  TIOTEXT BASED,
* /* *************************************************************** */
* /* THE TIOT EXTENSION TABLE (TIOTEXT) IS CONSTRUCTED DURING        */
* /* ALLOCATION AT LOGON.  IT CONTAINS INFO WHICH IS USED IN         */
* /* DYNAMIC ALLOCATION ROUTINES                                     */
* /* *************************************************************** */
*
*    2 TEXTTTR  CHAR(3)  BDY(WORD),
*                                    /* TTR OF TIOT EXT. TABLE       */
*    2 TEXTID   CHAR(1),             /* CONTROL BLOCK IDENTIFIER     */
*    2 *        FIXED(31),
*    2 TEXTSNO  CHAR(1),             /* NUMBER OF RECORDS IN SIOTTR
*                                       TABLE                        */
*    2 TEXTSTTR (5) CHAR(3),         /* TTRS OF SIOTTTR TBL RCDS */
*    2 * CHAR(1),                    /* RESERVED                 */
*    2 TEXTLS   CHAR(3),             /* TTR OF LAST MSG CLASS SYSOUT
*                                       SIOT                         */
*    2 *        CHAR(1),             /* RESERVED                     */
*    2 TEXTLCTP CHAR(3),             /* LINKAGE CONTROL TBL ADDR     */
*    2 *        CHAR(1),             /* RESERVED                     */
*    2 TEXTENQ  CHAR(3),             /* TTR OF DATA SET ENQUEUE TBL
*                                       (DSENQ)                      */
*    2 TEXTMCLS CHAR(1),             /* MSG CLASS FOR THE JOB FROM
*                                       THE JCT                      */
*    2 TEXTMLEV CHAR(1),             /* MESSAGE LEVEL FOR THE FOB
*                                       FROM THE JCT                 */
*    2 *        FIXED(15),
*    2 * CHAR(1),                    /* RESERVED                 */
*    2 TEXTJCT CHAR(3),              /* TTR OF JCT               */
*    2 * CHAR(1),                    /* RESERVED                 */
*    2 TEXTSCT CHAR(3),              /* TTR OF THE STEP SCT      */
*    2 * CHAR(128);                  /* NOT USED                 */
*
./ ADD NAME=TLCBD
*        %GOTO BSLLCB;                                               /*
         MACRO
         TLCBD
.*A000000-999999                                               @X20X5X0
.*D062000,122000,266000,338000,384000,386000,422000,434000     @Y17XAXF
.*D562600-564400,                                              @Y17XAXF
.*D914900,930800,931000,935600,935800,940000,941600,           @Y17XAXF
.*D954400-955200,935100                                        @Y17XAXF
.*D300000,560000-564000,600000                                   S22026
.*A120000,182000,241000-243000,450000,542000,5561000             S22026
.*A562000-565000,                                                S22026
.*A243200-243800,                                                S99238
.*A241000,243000,                                               SA58994
.*A184000,216000,252000,224000,922200,929800,950400,           @Y17XAXF
.*C548000,578000-579000,918800-919000,922000,923800-926800,    @Y17XAXF
.*C956600-957400,938400-93856,304000,344000,352000,356000,     @Y17XAXF
.*C430000,933200,936400-936800,941200,                         @Y17XAXF
.*A060000,216000,228000,570000,579200,914800,923600,956000,    @Y17XAXF
.*C576000,922320-923400,927200-929600,957600,957800,           @Y17XAXF
.*C956200-956600,372000,426000,937600,940400-940600,330000,    @Y17XAXF
.*A958900,584000                                               @Y17XAXF
.*A056000,509400                                               @OY14092
.*C200700,201600,509400,621000,621900                          @OY14092
.*A603000,C188100                                              @OY18040
.*A357350,357400,357450,357500,821750,821800,821850,821900     @G36XRXG
.*C358200,822600                                               @G36XRXG
.*A127400,550400                                               @G36XRXG
.*C550800,551700,552600,553500,554400,555300                   @G36XRXG
.*C556200,557100,558000,558900,559800,560700                   @G36XRXG
.*C366300                                                      @G36XRXG
.*A366400-366600,732400,372700                                 @G36XRXG
*A246600,681300                                                @OY20488
.*C772200                                                      @OY20411
IEDQLCB  DSECT
         SPACE
.*       CONVERTED TO BILINGUAL ON 07/18/72                      S22024
*        UPDATED 01/05/73                                        S22024
         SPACE
LCBRCB   DS    0D .                     RESOURCE CONTROL BLOCK
LCBKEY   DS    XL1 .                    ELEMENT KEY OF BUFFER
LCBQCBA  DS    AL3 .                    QCB ADDRESS
LCBPRI   DS    XL1 .                    PRIORITY OF BUFFER
LCBLINK  DS    AL3 .                    LINK FIELD OF BUFFER
LCBRSKEY DS    XL1 .                    RECEIVE SCHEDULER KEY
LCBSTCBA DS    AL3 .                    ADDRESS OF FIRST STCB WHEN
*                                       LCB IS A QCB.
LCBRSPRI DS    XL1 .                    RECEIVE SCHEDULER PRIORITY
LCBRSLNK DS    AL3 .                    ADDR NEXT ITEM IN CHAIN
LCBEOLTD DS    XL2 .                    END OF LIST TIME DELAY
LCBTDL   DS    XL1 .                    TIME DELAY QUEUE OFFSET TO
*                                       QCB ADDRESS. FOR LCB = X'14'
LCBTSOB  DS    XL1 .                    TSO STATUS BITS             TSO
*                        BIT DEFINITIONS                            TSO
LCBWRBRK EQU   X'80' .                  WRITE BREAK IN PROGRESS@Y17XAXF
LCBTSBUF EQU   X'40' .                  BUFFER HAS TS PREFIX        TSO
LCBSATRD EQU   X'20' .                  SIMULATED ATTN READ REQUEST TSO
LCBSOPL  EQU   X'10' .                  START OF POLLING LIST       TSO
LCBPREP  EQU   X'08' .                  PREPARE ON LINE        @Y17XAXF
LCBCIRCD EQU   X'04' .                  CIRCLE D SENT TO 2741       TSO
LCBINHBN EQU   X'02' .                  USE INHIBITS FOR THIS TERM  TSO
LCB2741N EQU   X'01' .                  2741 ON THIS LINE           TSO
*
LCBCHAIN DS    XL1 .                    DISPOSITION STATUS BITS
*                        BIT DEFINITIONS
*
LCBSCRNN EQU   X'80' .                  SCREEN CHANGE REQUESTED
LCBINVRQ EQU   X'80'                    INITIAL INVITE REQUEST   S22024
LCBSCRNF EQU   X'7F' .                  NO SCREEN CHANGE REQUESTED
LCBEXCP  EQU   X'40' .                  DELAY EXCP TILL ASSOCIATION
LCBERMSG EQU   X'20' .                  ERP MESSAGE WAITING
LCBNORTY EQU   X'10' .                  TEXT RETRY NOT POSSIBLE
LCBUREQN EQU   X'08' .                  UNIT REQUEST IN PROGRESS
LCBUREQF EQU   X'FF'-LCBUREQN .         UNIT REQUEST NOT IN PROGRESS
LCBBFRSZ EQU   X'04' .                  QUEUE MANAGEMENT FLAG
LCBTETEN EQU   X'02' .                  USER REQUESTED TETE A TETE
LCBCTLMD EQU   LCBTETEN .               LINE IN CONTROL MODE   @OY14092
LCBTETEF EQU   X'FD' .                  TETE A TETE NOT REQUESTED
LCBABRTN EQU   X'01' .                  ABORT SEQUENCE MUST BE SENT
LCBABRTF EQU   X'FE' .                  ABORT SEQUENCE NOT REQUIRED
*
LCBINSRC DS    0AL3 .                   IN-SOURCE CHAIN        @Y17XAXF
         DS    XL2 .                                           @Y17XAXF
LCBLKMDE DS    XL1 .                    LOCKMODE INDICATORS    @Y17XAXF
LCBBDFLG EQU   X'80' .                   IEDQBD HAS NOT FINISHED INMSG
*                                         PROCESSING           @Y17XAXF
LCBHMFLG EQU   X'40' .                   MSG HAS NOT BEEN PUT ON QUE
*                                         WAITING FOR LINE TO BECOME
*                                         READY TO START A SEND
*                                         OPERATION            @Y17XAXF
LCBLOCKR EQU   X'20' .                   LOCK RESPONSE FROM A PUT
*                                                              @Y17XAXF
LCBLOCKI EQU   X'10' .                   LOCK INQUIRY          @Y17XAXF
*        EQU   X'08'-'X01'               RESERVED              @Y17XAXF
LCBSTAT4 DS    0XL1 .                   FOURTH STATUS BYTE     @Y17XAXF
LCBDMPRQ EQU   X'80' .                    3705 NEEDS DUMPING   @Y17XAXF
LCBDACRQ EQU   X'40' .                    3705 NEEDS DEACT'ING @Y17XAXF
LCBIPLRQ EQU   X'20' .                    3705 NEEDS IPLING    @Y17XAXF
LCBACTRQ EQU   X'10' .                    3705 NEEDS ACTIVATING@Y17XAXF
*        EQU   X'08'                    RESERVED               @YM08120
* LCBPHASE     BITS 5&6                 PIU PHASE INFO         @Y17XAXF
LCBREAL  EQU   X'04' .                  CCW'S IN 3705 LCB HAVE @YM04622
*                                       BEEN TRANSLATED
LCBCPGMH EQU   X'01' .                  MH CHAIN PURGE         @Y17XAXF
LCBNTXT  DS    XL1 .                    PRFNTXT SAVE
LCBSCBDA DS    AL3 .                    ADDR SCB DIRECTORY
LCBLNENT EQU   LCBSCBDA+1 .             TNT OFFSET TO LINE ENTRY
LCBISZE  DS    XL1 .                    COUNT OF IDLES RESERVED
LCBMHA   DS    0AL3 .                   MH QCB ADDR FOR NCP    @YM06085
*                                         RESOURCES            @YM06085
LCBFSBFR DS    AL3 .                    FIRST BFR ASSIGNED TO  @Y17XAXF
*                                         LCB                  @Y17XAXF
LCBFLAG1 DS    XL1 .                    IOS FLAGS 1
*        EQU   X'80'-X'40'                RESERVED             @Y17XAXF
LCBERPIN EQU   X'20' .                    ERP IN CONTROL       @Y17XAXF
*        EQU   X'10'-X'08'                RESERVED             @Y17XAXF
LCBEXCPN EQU   X'04' .                    IOB EXCEPTION FLAG   @Y17XAXF
LCBUNREL EQU   X'02' .                  UNRELATED REQUEST FLAG @Y17XAXG
*        EQU   X'01'                      RESERVED             @Y17XAXF
LCBPLCB  EQU   X'00'                      PLCB INDICATOR       @Y17XAXF
LCBPRFSZ EQU   LCBFLAG1-IEDQLCB .       LCB PREFIX SIZE        @Y17XAXF
*                                                              @Y17XAXF
*        SNA RESPONSE INFO                                     @Y17XAXF
*                                                              @Y17XAXF
LCBRSPIN DS    0CL19 .                  SNA RESPONSE INFO      @Y17XAXF
         DS    XL1 .                    RESERVED               @YM06118
LCBSNS0  DS    XL1 .                    SAME BYTE AS LCBSENS0- @YM06118
*                                         MUST BE 0 FOR SNA    @YM06118
LCBRHSV  DS    XL3 .                    RESPONSE RH            @YM07705
LCBLUSNS DS    0CL4 .                   RESPONSE SENSE         @Y17XAXF
LCBSMAJ  DS    XL1 .                    MAJOR SENSE BYTE       @Y17XAXG
LCBSMIN  DS    XL1 .                    MINOR SENSE BYTE       @Y17XAXG
LCBUSER  DS    XL2 .                    USER SENSE BYTES       @Y17XAXG
LCBSCPRS DS    0XL3 .                   SSCP RESPONSE BYTES    @Y17XAXF
LCBDFCMD DS    XL1 .                    DFC COMMAND RSP BYTE   @Y17XAXF
         DS    XL1 .                    RESERVED               @Y17XAXF
LCBCSWU1 DS    XL1 .                    SAME BYTE AS LCBCSWUS  @Y17XAXF
*        EQU   X'80'-X'02' .            RESERVED               @Y17XAXF
LCBUSUE1 EQU   X'01' .                  SAME BIT AS LCBUSUE-   @Y17XAXF
*                                       INDICATES END OF       @Y17XAXF
*                                       MESSAGE SENT OR RCV'D  @Y17XAXF
         DS    XL3 .                    RESERVED               @Y17XAXF
LCBRSPFG DS    XL1 .                    FLAG BYTE USED IN RESPONSE
*                                        GENERATION            @Y17XAXF
LCBEXPI  EQU   X'80'                    RESPONSE IS EXPEDITED  @Y17XAXG
LCBRSRH  EQU   X'40' .                  EXCEPTION RESP GEN'D   @YM07705
*        EQU   X'20-01'                 RESERVED               @YM07705
LCBPAKCH DS    AL3 .                    BACK BUFFER CHAIN      @Y17XAXF
         ORG   LCBRSPIN
*                                                              @Y17XAXF
*        IOB SENSE INFORMATION                                 @Y17XAXF
*                                                              @Y17XAXF
LCBIOBSN DS    0CL19                    IOB SENSE              @Y17XAXF
LCBFLAG2 DS    XL1 .                    IOS FLAGS 2
LCBSNS   DS    0XL2 .                     SENSE BYTES          @G36XRXG
LCBSENS0 DS    XL1 .                    SENSE BYTE 0
LCBCMDRJ EQU   X'80' .                    COMMAND REJECT       @Y17XAXF
LCBINTRQ EQU   X'40' .                    INTERVENTION REQUIRED@Y17XAXF
LCBBUSCK EQU   X'20' .                    BUSOUT CHECK         @Y17XAXF
LCBEQUCK EQU   X'10' .                    EQUIPMENT CHECK      @Y17XAXF
LCBDATCK EQU   X'08' .                    DATA CHECK           @Y17XAXF
LCBOVRUN EQU   X'04' .                    OVERRUN              @Y17XAXF
LCBLOSDT EQU   X'02' .                    LOST DATA            @Y17XAXF
LCBNOTIN EQU   X'02' .                    NOT INITIALIZED      @Y17XAXF
LCBTMOUT EQU   X'01' .                    TIME-OUT EXCEEDED    @Y17XAXF
LCBABORT EQU   X'01' .                    ABORT                @Y17XAXF
LCBSENS1 DS    XL1 .                    SENSE BYTE 1
LCBECBCC DS    XL1 .                    COMPLETION CODE
LCBECB41 EQU   X'41' .                   PERMANENT ERROR       @Y17XAXF
LCBECB48 EQU   X'48' .                   I/O ENDED W/ HALT I/O @Y17XAXF
LCBECB7F EQU   X'7F' .                   NORMAL COMPLETION     @Y17XAXF
LCBECBPT DS    AL3 .                    ADDR OF ECB
LCBFLAG3 DS    XL1 .                    IOS FLAGS 3
*                        BIT DEFINITIONS                         S22026
LCBOBR   EQU   X'01'                    OBR RECORDING FLAG      SA58994
*
*
LCBOBRRD EQU   X'02' .                  TPER RECORD PROCESSING   S22026
*                                                                S22026
LCBIOMSG EQU   X'04'                    I/O MESSAGE FLAG        SA58994
*
*
LCBSOHC  EQU   X'08' .                  SOH % C FLAG BIT         S99238
LCBSOHR  EQU   X'20' .                  SOH % R FLAG BIT         S99228
*                                       IF R & C FLAG BITS OFF   S99238
*                                       SOH % E MSG IS ASSUMED   S99238
LCBRLAD  EQU   X'10'                    INDICATES REAL ADDRESSES IN
*                                       LCB CHANNEL PROGRAM AREA X01004
LCBCSW   DS    0XL7 .                   LAST CSW               @Y17XAXF
LCBCSWCA DS    AL3 .                     CCW ADDR              @Y17XAXF
LCBCSWST DS    0XL2 .                    STATUS                @Y17XAXF
LCBCSWUS DS    XL1 .                      UNIT STATUS          @Y17XAXF
LCBUSAT  EQU   X'80' .                     ATTENTION           @Y17XAXF
LCBUSSM  EQU   X'40' .                     STATUS MODIFIER     @Y17XAXF
LCBUSCUE EQU   X'20' .                     CONTROL UNIT END    @Y17XAXF
LCBUSBSY EQU   X'10' .                     BUSY                @Y17XAXF
LCBUSCE  EQU   X'08' .                     CHANNEL END         @Y17XAXF
LCBUSDE  EQU   X'04' .                     DEVICE END          @Y17XAXF
LCBUSUC  EQU   X'02' .                     UNIT CHECK          @Y17XAXF
LCBUSUE  EQU   X'01' .                     UNIT EXCEPTION      @Y17XAXF
LCBCSWCS DS    XL1 .                      CHANNEL STATUS       @Y17XAXF
LCBCSPCI EQU   X'80' .                     PROGRAM CONTROL INT @Y17XAXF
LCBCSIL  EQU   X'40' .                     INCORRECT LENGTH    @Y17XAXF
LCBCSPGC EQU   X'20' .                     PROGRAM CHECK       @Y17XAXF
LCBCSPTC EQU   X'10' .                     PROTECTION CHECK    @Y17XAXF
LCBCSCDC EQU   X'08' .                     CHANNEL DATA CHECK  @Y17XAXF
LCBCSCCC EQU   X'04' .                     CHANNEL CONTROL CHK @Y17XAXF
LCBCSICC EQU   X'02'                       INTERFACE CTL CHK   @Y17XAXF
LCBCSCHC EQU   X'01' .                     CHAINING CHECK      @Y17XAXF
LCBCSWRC DS    XL2 .                     RESIDUAL COUNT        @Y17XAXF
LCBSIOCC DS    XL1 .                    SIO CONDITION CODE
*        EQU   X'80'-X'40' .             RESERVED              @Y17XAXF
LCBSIOC1 EQU   X'20' .                   CONDITION CODE.....   @Y17XAXF
LCBSIOC2 EQU   X'10' .                   .....SETTING FOR 3705 @Y17XAXF
LCBAP1OL EQU   X'08' .              ALTERNATE PATH 1 OFFLINE   @Y17XAXG
LCBAP2OL EQU   X'04' .              ALTERNATE PATH 2 OFFLINE   @Y17XAXG
LCBAP3OL EQU   X'02' .              ALTERNATE PATH 3 OFFLINE   @Y17XAXG
LCBAP4OL EQU   X'01' .              ALTERNATE PATH 4 OFFLINE   @Y17XAXG
LCBSTART DS    AL3 .                    ADDR OF CHANNEL PROGRAM
LCBPCILK DS    0AL4 .                   PCI LOCK FOR MP SYSTEM @Y17XAXF
LCBDCBPT DS    A .                      ADDRESS OF DCB
LCBRESTR DS    0A .                     ERROR MESSAGE DATA
LCBRCQCB DS    0A .                     QCB TO POST RECALL BUFF@OY18040
LCBCMDSV DS    CL1 .                    COMMAND CODE SAVE      @OY18040
         DS    AL3 .                                           @OY18040
LCBTHSQ  DS    0H .                     TH SEQ NUMBER          @YM06118
LCBINCAM DS    H .                      ERP RETRY COUNTS       @Y17XAXF
LCBGETMN EQU   X'80' .                  GETMAINED STORAGE AREA
*                                        EXIST IS 904I/904H    @Y17XAXF
LCBTTBIN DS    0H .                     TERM TO BE CONNECTED INDEX
LCBERRCT DS    H .                      IOS ERROR COUNTERS
LCBUCBX  DS    XL1 .                    UCB INDEX
LCBRCBFR DS    0AL3 .                   POINTER TO RECALLED BUFFER
LCBRDBFR DS    0AL3 .                   START OF READ CHAN PROG  S22024
LCBLSPCI DS    AL3 .                    ADDR OF LAST SRVCD PCI
LCBRECOF DS    H .                      OFFSET INTO CURRENT BLOCK
LCBSTATE DS    0H .                     STATUS BITS
LCBSTAT1 DS    XL1 .                    FIRST STATUS BYTE      @Y17XAXF
*                        BIT DEFINITIONS
LCBRCLLN EQU   X'80' .                  RECALL BEING PERFORMED
LCBRCLLF EQU   X'FF'-LCBRCLLN .         NO RECALL
LCBOCWTN EQU   X'40' .                  NON-IMMEDIATE OPERATOR @OY14092
*                                       COMMAND WAITING        @OY14092
LCBOCNI  EQU   X'20' .                  NON-IMEDIATE OPERATOR CONTROL
*                                       OPERATION IN PROGRESS  @Y17XAXF
LCBINITN EQU   X'10' .                  RECEIVING INITIATE MODE MSG
LCBINITF EQU   X'FF'-LCBINITN .         NO INITIATE MODE
LCBCONT  EQU   X'08' .                  CONTINUE OR RESET OPERATION
LCBFREEN EQU   X'04' .                  LINE FREE              @Y17XAXF
LCBFREEF EQU   X'FF'-LCBFREEN .         LINE NOT FREE
LCBRECVN EQU   X'02' .                  LINE IS RECEIVING      @Y17XAXF
LCBSENDN EQU   X'01' .                  ON = LINE SENDING      @Y17XAXF
*                                       BOTH SEND AND RECEIVE BITS
*                                       OFF INDICATE LINE IS STOPPED
*
LCBSTAT2 DS    XL1 .                    SECOND STATUS BYTE     @Y17XAXF
*                        BIT DEFINITIONS
LCBTRACE EQU   X'80' .                  I/O TRACE ACTIVE FOR THIS LINE
LCBTRCOF EQU   X'FF'-LCBTRACE .         TRACE NOT ACTIVE
LCBMSGNN EQU   X'40' .                  MSGEN/STARTUP MESSAGE
LCBMSGNF EQU   X'FF'-LCBMSGNN .         NOT MSGEN/STARTUP MESSAGE
LCBBEOTN EQU   X'20' .                  EOT FROM BFRED TERM -NO EOM
LCBCONNN EQU   X'20' .                  ERROR ON DIAL CONTACT  @YM08436
LCBBEOTF EQU   X'DF' .                  REGULAR EOM IF EOT
LCBSNDPR EQU   X'10' .                  SEND PRIORITY SWITCH SET BY
*                                       SEND SCHEDULER
LCBNEGRP EQU   X'08' .                  NEGATIVE RESPONSE TO POLLING
*                                       RECEIVED
LCBSYNC  EQU   X'04' .                  LINE IS BISYNC
LCBATTN  EQU   X'04' .                  3705 ATTENTION RECEIVED@Y17XAXF
LCBDIAL  EQU   X'02' .                  DIAL LCB
LCBBFRAV EQU   X'02' .                  3705 BUFFER AVAILABLE  @Y17XAXF
LCBRESP  EQU   X'01' .                  A RESPONSE IS OWED     @Y17XAXF
*
LCBTSTSW DS    XL1 .                    TEST-AND-SET SWITCH
*                        BIT DEFINITIONS
LCBCONCT EQU   X'80' .                  CONNECTION ESTABLISHED
*
LCBRECAD DS    AL3 .                    ADDRESS CURRENT MSG BLOCK
LCBERB   DS    0A .                     ERB
LCBERBKY DS    XL1 .                    ELEMENT REQUEST BLOCK KEY
LCBERBQB DS    AL3 .                    ERB QCB
LCBERBPY DS    XL1 .                    ERB PRIORITY
LCBERBLK DS    AL3 .                    ADDR NEXT ITEM IN CHAIN
LCBERBST DS    XL1 .                    STATUS OF ERB
*                                       THE X'08' BIT MUST NEVER BE ON
*                                       IN THE STATUS BYTE. IT MUST
*                                       REMAIN THE 9TH BYTE OF YHE ERB
*                        BIT DEFINITIONS
LCBINQ   EQU   X'10' .                  ERB IS WAITING-BFRS FROM HM
LCBEOMSG EQU   X'40' .                  END OF MESSAGE READ FROM DISK
LCBRDERR EQU   X'20' .                  LOGICAL READ ERROR
LCBRDERF EQU   X'FF'-LCBRDERR .         NO READ ERROR
LCBMSG   EQU   X'80' .                  END OF INITIATE MODE TO HM
LCBLOGDV EQU   X'08'                    LOGGING REQUESTED      @OY20488
LCBERROR EQU   X'04' .                  ERROR ON SEND SIDE
LCBPRCPG EQU   X'02' .                  AFTER INITIAL REQUEST IS
*                                       SATISFIED, ERB WILL BE POSTED
*                                       TO QCB INDICATED IN LCBRCQCB
LCBCOMPL EQU   X'02' .                  DISK REQUEST IS COMPLETE
LCBDLNKN EQU   X'01' .                  DELINK SWITCH ON-ERB NOT POSTED
*                                       IF ON THE ERB CAN BE POSTED
LCBDLNKF EQU   X'FE' .                  ERB POSTED
*                                       PCI CAN NOT POST ERB
*
LCBERBCH DS    AL3 .                    ADDR CHAIN ASSIGNED BFRS
LCBERBCT DS    0H .                     COUNT FIELDS           @Y17XAXF
LCBRBCT1 DS    CL1 .                      ENABLED COUNT FIELDS @Y17XAXF
LCBRBCT2 DS    CL1 .                      DISABLED COUNT FIELDS@Y17XAXF
LCBDCNT  EQU   X'80' .                       DISABLED CNT INUSE@Y17XAXF
*                                            RESERVED          @Y17XAXF
LCBTTCIN DS    H .                      TERM CURR CONNECTED INDEX
LCBMSGFM DS    XL1 .                    BITS TO CONTROL BSC LINE
*                        BIT DEFINITIONS
LCBNAK   EQU   X'80' .                  REQUEST TO SEND NAK RESPONSE
LCBACKI  EQU   X'40' .                  ACK COUNTER - SEND/RECEIVE
*   FOLLOWING TWO BITS  INDICATE WHETHER A SCAN OF LINE CONTROL
*   HAS BEEN ACCOMPLISHED AND TYPE OF LINE CONTROL RECEIVED.
LCBVSTRT EQU   X'20' .                  VALID START SEQUENCE
LCBRSTRT EQU   X'10' .                  ERROR START SEQUENCE
LCBTTD   EQU   X'08' .                  TTD RECEIVED
LCBENQ   EQU   X'04' .                  ENQ RECEIVED
LCBEOT   EQU   X'02' .                  EOT FIRST CHARACTER
LCBOLT   EQU   X'01' .                  TOTE REQUEST
*
LCBSCBA  DS    AL3 .                    ADDRESS OF CURRENT SCB
LCBOBRCH DS    0A .                     3705 OBR/SDR/MDR CHAIN @Y17XAXF
LCBERMSK DS    XL1 .                    ERROR RECORDING MACK   @Y17XAXF
LCBBFRW  DS    0AL3 .                   ADDR OF BSC STATUS     @Y17XAXF
*                                        PENDING BUFFER        @Y17XAXF
LCBINVPT DS    0AL3 .                   ADDR CURR ENTRY IN INV LIST
LCBNXCMD DS    CL3 .                    SNA COMMAND TYPE       @Y17XAXF
*                                                              @Y17XAXF
*        3705 CORE QUEUE INFO                                  @Y17XAXF
*                                                              @Y17XAXF
LCBCOREQ DS    0CL12 .                  3705 OUTPUT CORE QUEUE @Y17XAXF
LCBCQELE DS    AL4 .                     ELEMENT CHAIN         @Y17XAXF
LCBCQLNK DS    AL4 .                     LINK                  @Y17XAXF
LCBWRSCH DS    AL4 .                     ADDR OF WRITE SCHD'S  @Y17XAXF
*                                         STCB                 @Y17XAXF
         ORG   LCBCOREQ                                        @Y17XAXF
*                                                              @Y17XAXF
*        PLCB STATUS INFO                                      @Y17XAXF
*                                                              @Y17XAXF
LCBTPCD  DS    0CL12 .                  TP OP CODES              S22024
LCBSTAT5 DS    CL1 .                    FIFTH STATUS BYTE      @Y17XAXF
LCBPERM  EQU   X'80' .                    PLCB PERMANENTLY     @Y17XAXF
*                                          ASSIGNED            @Y17XAXF
LCBLUNIT EQU   X'40' .                    SNA LOGICAL UNIT     @Y17XAXF
LCBLUS   EQU   X'20' .                    RETURN PLCB TO LUS   @Y17XAXF
*        EQU   X'10'-X'01' .              RESERVED             @Y17XAXF
LCBBFRSV DS    AL3                      PTR TO SAVED BUF CHAIN @Y17XAXF
LCBSTAT6 DS    XL1 .                    SNA STATUS             @Y17XAXF
*LCBCHN  EQU   X'80'-X'10'                CHAINING STATE       @Y17XAXF
*        THE FOLLOWING VALUES ARE VALID WHEN LCBRECVN=1 OR LCBSENDN=1
LCBBETC  EQU   X'00' .                     BETWEEN CHAIN STATE(WAITING
*                                           FOR NO RESPONSE)   @Y17XAXF
LCBINC   EQU   X'10' .                     IN CHAIN STATE      @Y17XAXF
LCBPURG  EQU   X'20' .                     PURGING CHAIN STATE @Y17XAXF
LCBWMG   EQU   X'30' .                     BETWEEN CHAIN-WAITING FOR
*                                           MSGGEN RSP STATE   @Y17XAXF
*        THE FOLLOWING VALUES ARE VALID ONLY WHEN LCBRECVN=1   @Y17XAXF
LCBWERAS EQU   X'70' .                    BETWEEN CHAIN STATE-WAITING
*                                          FOR SCREEN ERASURE RESPONSE
*                                          (TSO STATE ONLY)    @Y17XAXF
LCBWSMI  EQU   X'80' .                    BETWEEN CHAIN STATE-WAITING
*                                          START MI RESPONSE
*                                          (TSO STATE ONLY)    @Y17XAXF
*
*        THE FOLLOWING VALUES ARE VALID ONLY WHEN LCBSENDN=1
LCBWFMD  EQU   X'40' .                     BETWEEN CHAIN-WAITING FOR FM
*                                           DATA RSP STATE     @Y17XAXF
LCBWCAN  EQU   X'50' .                     BETWEEN CHAIN-WAITING FOR FM
*                                           CANCEL RSP STATE   @Y17XAXF
LCBWBID  EQU   X'60' .                     BETWEEN CHAIN-WAITING FOR FM
*                                           BID RSP STATE      @Y17XAXF
*
LCBHDRPD EQU   X'08' .                    ON-HDR HAS BEEN POSTED TO MH
*                                         OFF-HDR HAS NOT BEEN POSTED
*                                          TO MH               @Y17XAXF
LCBRTRRO EQU   X'04' .                    RESPONSE OWED TO RTR @Y17XAXF
LCBMHBID EQU   X'02' .                    BID COMMAND TO BE BUILT
*                                                              @Y17XAXF
LCBINPAK EQU   X'01' .                    ON-IN PACK STATE
*                                         OFF-BETWEEN PACK STATE
*                                                              @Y17XAXF
LCBWAITC DS    AL3 .                    PIU WAIT CHAIN         @Y17XAXF
LCBBFSNS DS    0CL4 .                   BIND-FAILED SENSE DATA @Y17XAXF
LCBRSPSV DS    AL4 .                    PTR TO SAVED RSP BUFFER@Y17XAXF
*                                                              @Y17XAXF
*        RH CANCEL INFO                                        @Y17XAXF
*                                                              @Y17XAXF
LCBCANCL DS    0CL8 .                   CANCEL INFO            @Y17XAXF
LCBCANFG DS    XL1 .                    CANCEL RH FLAGS        @Y17XAXF
LCBCANXT EQU   X'80' .                   CANCEL MUST BE        @Y17XAXF
*                                         RESPONDED TO         @Y17XAXF
LCBCANEB EQU   X'40' .                   CANCEL RH END BKT     @Y17XAXF
*        EQU   X'20' .                   RESERVED              @Y17XAXF
LCBCANCD EQU   X'10' .                   CANCEL RH CHGE DIRECT @Y17XAXF
*        EQU   X'08'-X'01' .             RESERVED              @Y17XAXF
LCBCANTH DS    XL2 .                    CANCEL TH SEQ          @Y17XAXF
         DS    XL2 .                    RESERVED               @Y17XAXF
*
*    ================================================================
*        IGG019RP USES LCB+X'73' TO LCB+ X'97' AS WORK AREA
*    ================================================================
*
         ORG   LCBCANCL                                        @Y17XAXF
*                                                              @Y17XAXF
*        SAVE AREA FOR SENSE                                   @Y17XAXF
*                                                              @Y17XAXF
LCBSAVSN DS    0CL8 .                   SAVE SENSE             @Y17XAXF
LCBSNSV  DS    XL1 .                    SAVE AREA FOR SENSE BYTE
LCBCSWSV DS    XL7 .                    SAVE AREA FOR CSW
*                                                              @YM08142
*        IEDQNX INTERFACE AREA (3705 LCB ONLY)                 @YM08142
*                                                              @YM08142
LCBQNX   DS    0CL24                    IEDQNX INTERFACE AREA  @YM08142
LCBQNXMN DS    XL1                      MESSAGE NUMBER FOR QNX @YM08142
LCBNX064 EQU   X'80'                    WRITE MSG IED064I      @YM08142
LCBNX142 EQU   X'40'                    WRITE MSG IED142I      @YM08142
LCBNX162 EQU   X'20'                    WRITE MSG IED162I      @YM08142
LCBNX509 EQU   X'10'                    WRITE MSG IED509I      @YM08142
*        EQU   X'08'-X'01'              RESERVED               @YM08142
LCBSTSAV DS    AL3                      SAVE AREA FOR LCBSTART @Y17XAXF
*                                        DURING RETRY          @Y17XAXF
         DS    XL1                      RESERVED               @ZM46833
LCBIOSBS DS    AL3                      SAVE AREA FOR IOSB     @ZM46833
         DS    2F                       RESERVED               @ZM46833
LCBDSTEA DS    A                        DEVICE STATISTIC TAB   @Y17XAXF
*                                        ENTRY ADDRESS         @Y17XAXF
LCBUASZE DS    XL1                      UNIT NAME ADDRESS SIZ  @Y17XAXF
LCBUNADD DS    AL3                      UNIT NAME ADDRESS      @Y17XAXF
*                                                              @Y17XAXF
*        ERP COMMAND AREA                                      @Y17XAXF
*                                                              @Y17XAXF
         ORG   LCBQNX                                          @Y17XAXF
LCBERCCW DS    3D                       3 ERP COMMANDS         @G36XRXG
         ORG    LCBERCCW+8                                     @G36XRXG
LCBATL05 DS    CL8                      3705 ATTEN ELEMENT     @G36XRXG
         DS    CL8                                             @G36XRXG
LCBSTICS EQU   LCBERCCW+21 .            CHRACTERISTCIS WORK AREA
LCBCPA   DS    0D .                     CHANNEL PROGRAM AREA
LCBCCW1  EQU   IEDQLCB+144              *                      @Y17XAXF
LCBCCW2  EQU   IEDQLCB+152              *                      @Y17XAXF
LCBCCW3  EQU   IEDQLCB+160              *  C C W               @Y17XAXF
LCBCCW4  EQU   IEDQLCB+168              *                      @Y17XAXF
LCBCCW5  EQU   IEDQLCB+176              *    B U I L D         @Y17XAXF
LCBATTEL EQU   LCBCCW5                  *                      @G36XRXG
         ORG   LCBCCW5                                         @ZM46675
LCBQEBPL DS    0CL8                     PARM LIST FOR QEB      @ZM46675
LCBSIO   DS    C                        FUNCTION CODE FOR QEB  @ZM46675
LCBIOSB  DS    AL3                      IOSB PTR               @ZM46675
LCBCP    DS    A                        PTR TO CHAN PRM START  @ZM46675
LCBCCW6  EQU   IEDQLCB+184              *                      @Y17XAXF
LCBCCW7  EQU   IEDQLCB+192              *    A R E A           @Y17XAXF
LCBCCW8  EQU   IEDQLCB+200              *                      @Y17XAXF
LCBCCW9  EQU   IEDQLCB+208              *                      @Y17XAXF
LCBCCW10 EQU   IEDQLCB+216              *                      @Y17XAXF
LCBERBFS EQU   LCBERBKY-IEDQLCB .       OFFSET INTO LCB OF ERB
LCBPLCBL EQU   LCBCPA-IEDQLCB+48        LENGTH OF PLCB         @YM08062
*                                                              @YM08062
*        FOR PLCB'S ONLY THE FOLLOWING FIELDS EXIST            @YM08062
*                                                              @YM08062
         ORG   LCBCPA+40                                       @YM08062
         DS    XL1                                             @YM08062
LCBNCPPT DS    AL3                      NCP TTE ADDRESS        @YM08062
*                                                                S99228
*                                                                S99228
*        DSECT FOR LCB EXTENSION AT TOP OF CHANNEL PROGRAM AREA  S99228
*                                                                S99228
IEDQLCBX DSECT                          LCB EXTENSION            S99228
LCBXCON  DS    0D                       START OF CONTROL FIELDS  S99228
LCBXFLAG DS    XL1                      DEV DEP FLAGS            S99228
LCBGPCTV EQU   X'08'                    ETX RECD GENERAL POLL    S99228
LCBGPSTP EQU   X'FF'-X'08'              GENERAL POLL RESET       S99228
LCBSRCPF EQU   X'04'                    SOURCE DETERM PERFORMED  S99228
LCBSRSTP EQU   X'FF'-X'04'              SOURCE DETERM RESET      S99228
LCBERPND EQU   X'02'                    SOH%R MESSAGE PENDING    S99228
LCBERSTP EQU   X'FF'-X'02'              ERP POLL RESET           S99228
LCBXDCT  DS    XL3                      DCT STORAGE AREA         S99228
LCBDCT1  EQU   LCBXDCT                  DCT BYTE 1               S99228
LCBDCT2  EQU   LCBXDCT+1                DCT BYTE 2               S99228
LCBDCT3  EQU   LCBXDCT+2                DCT BYTE 3               S99228
LCBXRADR DS    F                        ERP POLL CHARS ADDRESS   S99228
LCBPCIRC EQU   LCBXRADR                 3270 LOCAL PCI RETRY CNTRS99228
LCBERADR EQU   LCBXRADR+1               POLL CHARS ADDR FIELD    S99228
IEDQLCB  DSECT                                                   S99228
*
*
*         *******************************************************
*     0   *   KEY    **                    QCBA                 *
*         *******************************************************
*     4   *   PRI    **                    LINK                 *
*         *******************************************************
*     8   *   RSKEY  **                        STCBA            *
*         *******************************************************
*    12   *   RSPRI  **                        RSLNK            *
*         *******************************************************
*    16   *         EOLDT          **    TDL     **    TSOB     *
*         *******************************************************
*    20   *   CHAIN  **                        INSRC            *
*         *******************************************************
*    24   *   NTXT   **                     SCBDA               *
*         *******************************************************
*    28   *   ISZE   **                  FSBFR/LSBFR            *
*         *******************************************************
*    32   *   FLAG1  **   FLAG2    **   SENS0    **   SENS1     *
*         *******************************************************
*    36   *   ECBCC  **                        ECBPT            *
*         *******************************************************
*    40   *   FLAG3  **                         CSW             *
*         *******************************************************
*    44   *                       CSW                           *
*         *******************************************************
*    48   *   SIOCC  **                        START            *
*         *******************************************************
*    52   *                      DCBPT                          *
*         *******************************************************
*    56   *                   RCQCB/RESTR                       *
*         *******************************************************
*    60   *        INCAM           **       ERRCT/TTBIN         *
*         *******************************************************
*    64   *   UCBX   **                    RCBFR/LSPCI          *
*         *******************************************************
*    68   *         RECOF          **          STATE            *
*         *******************************************************
*    72   *   TSTSW  **                 RECAD                   *
*         *******************************************************
*    76   *   ERBKY  **                 ERBQB                   *
*         *******************************************************
*    80   *   ERBPY  **                 ERBLK                   *
*         *******************************************************
*    84   *   ERBIN  **                 ERBCH                   *
*         *******************************************************
*    88   *        ERBCT           **          TTCIN            *
*         *******************************************************
*    92   *  MSGFM   **                        SCBA             *
*         *******************************************************
*    96   *   ERMSK  **                        INVPT            *
*         *******************************************************
*   100   *                      TPCD                           *
*         *******************************************************
*   104   *                      TPCD                           *
*         *******************************************************
*   108   *                      TPCD                           *
*         *******************************************************
*   112   *   SNSV   **                        CSWSV            *
*         *******************************************************
*   116   *                      CSWSV                          *
*         *******************************************************
*   120   *                      ERCCW                          *
*         *******************************************************
*   124   *                                                     *
*         *******************************************************
*   128   *                                                     *
*         *******************************************************
*   132   *                                                     *
*         *******************************************************
*   136   *                                                     *
*         *******************************************************
*   140   *                                                     *
*         *******************************************************
*
         MEND  , */
*%BSLLCB  :  ;
*DECLARE
*  1 IEDQLCB  BDY(DWORD) BASED(IEDQLPTR),
*
*   2 LCBRCB      CHAR(8) BDY(DWORD),    /* RESOURCE CONTROL BLOCK   */
*    3 LCBKEY      CHAR(1),              /* ELEMENT KEY OF BUFFER    */
*    3 LCBQCBA     PTR(24),              /* QCB ADDRESS      @Y17XAXF*/
*    3 LCBPRI      CHAR(1),              /* PRIORITY OF BUFFER       */
*    3 LCBLINK     PTR(24),              /* LINK FIELD OF BUFFER     */
*                                        /*                  @Y17XAXF*/
*   2 LCBRSKEY    CHAR(1),               /* RECEIVE SCHEDULER KEY    */
*   2 LCBSTCBA    PTR(24),               /* ADDRESS OF FIRST STCB
*                                          WHEN LCB IS A QCB @Y17XAXF*/
*   2 LCBRSPRI    CHAR(1),               /* RECEIVE SCHED PRIORITY   */
*   2 LCBRSLNK    PTR(24),               /* ADDR NEXT ITEM IN CHAIN  */
*                                        /*                  @Y17XAXF*/
*   2 LCBEOLTD    FIXED(15),             /* END OF LIST TIME DELAY   */
*   2 LCBTDL      PTR(8),                /* TIME DELAY OFFSET TO QCB
*                                           ADDRESS FOR LCB = X'14'  */
*   2 LCBTSOB     CHAR(1),               /* TSO STATUS BITS       TSO*/
*
*/*      BIT DEFINITIONS                                          TSO*/
*
*    3 LCBWRBRK BIT(1),                  /* WRITE BRK INPRG  @Y17XAXF*/
*    3 LCBTSBUF BIT(1),                  /* BUFFER HAS TS PREFIX  TSO*/
*    3 LCBSATRD BIT(1),                  /* SIMULATED ATTN READ
*                                           REQUEST               TSO*/
*    3 LCBSOPL  BIT(1),                  /* START OF POLLING LIST TSO*/
*    3 LCBPREP  BIT(1),                  /* PREPARE ON LINE  @Y17XAXF*/
*    3 LCBCIRCD BIT(1),                  /* CIRCLE D SENT TO 2741 TSO*/
*    3 LCBINHBN BIT(1),                  /* USE INHIBITS FOR THIS
*                                           TERM                  TSO*/
*    3 LCB2741N BIT(1),                  /* 2741 ON THIS LINE     TSO*/
*
*   2 LCBCHAIN    CHAR(1),              /* DISP STATUS BITS  @Y17XAXF*/
*
*/*      BIT DEFINITIONS                                             */
*
*     4 LCBSCRNN BIT(1),                 /* SCREEN CHANGE REQUESTED  */
*       5 LCBINVRQ BIT(1),              /* INITIAL INVITE REQ  S22024*/
*     4 LCBEXCP  BIT(1),                 /* DELAY EXCP UNTIL
*                                           ASSOCIATION              */
*     4 LCBERMSG BIT(1),                 /* ERP MESSAGE WAITING      */
*     4 LCBNORTY BIT(1),                 /* TEXT RETRY NOT POSSIBLE  */
*     4 LCBUREQN BIT(1),                 /* UNIT REQUEST IN PROGRESS */
*     4 LCBBFRSZ BIT(1),                 /* QUEUE MANAGEMENT FLAG    */
*     4 LCBTETEN BIT(1),             /* TETE A TETE REQSTD   @OY14092*/
*      5 LCBCTLMD BIT(1),            /* LINE IN CONTROL MODE @OY14092*/
*     4 LCBABRTN BIT(1),                 /* ABORT SEQUENCE MUST BE
*                                           SENT                     */
*   2 LCBINSRC    PTR(24),              /* IN SOURCE CHAIN   @Y17XAXF*/
*    3 *          CHAR(2),                                /* @Y17XAXF*/
*    3 LCBLKMDE   BIT(8),               /* LOCKMODE INDICATORS
*                                                            @Y17XAXF*/
*     4 LCBBDFLG    BIT(1),             /*  IEDQBD HAS NOT FINISHED IN-
*                                            MESSAGE PROCESSING
*                                                            @Y17XAXF*/
*     4 LCBHMFLG    BIT(1),             /*  MSG HAS NOT BEEN PUT ON QUE
*                                            WAITING FOR LINE TO BECOME
*                                            READY TO START A SEND
*                                            OPERATION       @Y17XAXF*/
*     4 LCBLOCKR    BIT(1),             /*  LOCK RESPONSE FROM A PUT
*                                                            @Y17XAXF*/
*     4 LCBLOCKI    BIT(1),             /*  LOCK INQUIRY     @Y17XAXF*/
*     4 *           BIT(4),             /*  RESERVED         @Y17XAXF*/
*   2 LCBNTXT     CHAR(1),               /* PRFNTXT SAVE             */
*    3 LCBSTAT4    CHAR(1),             /* 4TH STATUS BYTE   @Y17XAXF*/
*     4 LCBDMPRQ    BIT(1),             /*  3705 NEEDS DMP'G @Y17XAXF*/
*     4 LCBDACRQ    BIT(1),             /*  3705 NEEDS DAC'G @Y17XAXF*/
*     4 LCBIPLRQ    BIT(1),             /*  3705 NEEDS IPL'G @Y17XAXF*/
*     4 LCBACTRQ    BIT(1),             /*  3705 NEEDS ACT'G @Y17XAXF*/
*     4    *        BIT(1),             /*  RESERVED         @YM08120*/
*     4 LCBPHASE    BIT(2),             /*  PIU PHASE INFO   @Y17XAXF*/
*      5 LCBREAL    BIT(1),             /* CCW'S IN 3705 LCB @YM04622*/
*                                       /* HAVE BEEN TRANSLATED      */
*     4 LCBCPGMH    BIT(1),             /*  MH CHAIN PURGE   @Y17XAXF*/
*   2 LCBSCBDA    PTR(24),              /* ADDR SCB DIRECTRY @Y17XAXF*/
*    3 *           CHAR(1),
*    3 LCBLNENT    FIXED(16),            /* TNT OFFSET TO LINE ENTRY */
*                                        /*                  @Y17XAXF*/
*   2 LCBISZE     PTR(8),                /* COUNT OF IDLES RESERVED  */
*   2 LCBMHA      PTR(24),              /* MH QCB ADDR FOR NCP
*                                            RESOURCES       @YM06085*/
*    3 LCBFSBFR    PTR(24),             /* FIRST BUF ASSGNED @YM06085*/
*   2 LCBFLAG1    CHAR(1),               /* IOS FLAGS 1              */
*    3 *           BIT(2),              /*  RESERVED         @Y17XAXF*/
*    3 LCBERPIN    BIT(1),              /*  ERP IN CTL       @Y17XAXF*/
*    3 *           BIT(2),              /*  RESERVED         @Y17XAXF*/
*    3 LCBEXCPN    BIT(1),              /*  IOB EXCEP FLG    @Y17XAXF*/
*    3 LCBUNREL    BIT(1),              /* UNRELATED REQUEST @Y17XAFG*/
*    3 *           BIT(1),              /*  RESERVED         @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      IOB SENSE INFO                                      @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*   2 LCBIOBSN CHAR(19) BDY(DWORD,2),   /* IOB SENSE         @Y17XAXF*/
*    3 LCBFLAG2    CHAR(1),             /* IDS FLAGS 2       @Y17XAXF*/
*    3 LCBSNS   BIT(16),                /* SENSE BYTES       @G36XRXG*/
*      4 LCBSENS0    CHAR(1),           /* SENSE BYTE 0      @G36XRXG*/
*        5 LCBCMDRJ   BIT(1),           /*  COMMAND REJECT   @G36XRXG*/
*        5 LCBINTRQ   BIT(1),           /*  INTERVENTION REQ @G36XRXG*/
*        5 LCBBUSCK   BIT(1),           /*  BUSOUT CHECK     @G36XRXG*/
*        5 LCBEQUCK   BIT(1),           /*  EQUIPMENT CHECK  @G36XRXG*/
*        5 LCBDATCK   BIT(1),           /*  DATA CHECK       @G36XRXG*/
*        5 LCBOVRUN   BIT(1),           /*  OVERRUN          @G36XRXG*/
*        5 LCBLOSDT   BIT(1),           /*  LOST DATA        @G36XRXG*/
*         6 LCBNOTIN   BIT(1),          /*  NOT INITIALIZED  @G36XRXG*/
*        5 LCBTMOUT   BIT(1),           /*  TME-OUT EXCEEDED @G36XRXG*/
*         6 LCBABORT   BIT(1),          /*  ABORT            @G36XRXG*/
*      4 LCBSENS1    CHAR(1),           /* SENSE BYTE 1      @G36XRXG*/
*    3 LCBECBCC    CHAR(1),             /* COMPLETION CODE   @Y17XAXF*/
*     3 LCBECBPT  PTR(24),              /* ADDR OF ECB       @Y17XAXF*/
*     3 LCBFLAG3  CHAR(1),              /* IDS FLAGS 3       @Y17XAXF*/
*      4 *         BIT(2),              /*  RESERVED         @Y17XAXF*/
*      4 LCBSOHR   BIT(1),              /*  SOH% R FLAG BIT  @Y17XAXF*/
*      4 LCBRLAD   BIT(1),              /*  REAL ADDR IN CPA @Y17XAXF*/
*      4 LCBSOHC   BIT(1),              /*  SOH% C FLAG BIT  @Y17XAXF*/
*      4 LCBIOMSG  BIT(1),              /*  I/O MESS FLAG    @Y17XAXF*/
*      4 LCBOBRRD  BIT(1),              /*  TPER REC PROC    @Y17XAXF*/
*      4 LCBOBR    BIT(1),              /*  OBR REC FLAG     @Y17XAXF*/
*     3 LCBCSW    CHAR(7) BDY(DWORD,2), /* LAST CSW          @Y17XAXF*/
*      4 LCBCSWCA  PTR(24),             /*  CCW ADDR         @Y17XAXF*/
*      4 LCBCSWST  BIT(16),             /*  STATUS           @Y17XAXF*/
*       5 LCBCSWUS  BIT(8),             /*   UNIT STATUS     @Y17XAXF*/
*        6 LCBUSAT  BIT(1),             /*    ATTENTION      @Y17XAXF*/
*        6 LCBUSSM  BIT(1),             /*    STATUS MODF    @Y17XAXF*/
*        6 LCBUSCUE BIT(1),             /*    CTL UNIT END   @Y17XAXF*/
*        6 LCBUSBSY BIT(1),             /*    BUSY           @Y17XAXF*/
*        6 LCBUSCE  BIT(1),             /*    CHANNEL END    @Y17XAXF*/
*        6 LCBUSDE  BIT(1),             /*    DEVICE END     @Y17XAXF*/
*        6 LCBUSUC  BIT(1),             /*    UNIT CHECK     @Y17XAXF*/
*        6 LCBUSUE  BIT(1),             /*    UNIT EXCEPTION @Y17XAXF*/
*       5 LCBCSWCS  BIT(8),             /*   CHANNEL STATUS  @Y17XAXF*/
*        6 LCBCSPCI BIT(1),             /*    PRG CTL INT    @Y17XAXF*/
*        6 LCBCSIL  BIT(1),             /*    INCORRECT LEN  @Y17XAXF*/
*        6 LCBCSPGC BIT(1),             /*    PRG CHECK      @Y17XAXF*/
*        6 LCBCSPTC BIT(1),             /*    PROTECTION CHK @Y17XAXF*/
*        6 LCBCSCDC BIT(1),             /*    CHNL DATA CHK  @Y17XAXF*/
*        6 LCBCSCCC BIT(1),             /*    CHNL CTL CHK   @Y17XAXF*/
*        6 LCBCSICC BIT(1),             /*    INTERFACE CTL  @Y17XAXF*/
*        6 LCBCSCHC BIT(1),             /*    CHAINING CHECK @Y17XAXF*/
*      4 LCBCSWRC  FIXED(16),           /*  RESIDUAL COUNT   @Y17XAXF*/
*     3 LCBSIOCC  BIT(8),               /* SIO CONDITION CDE @Y17XAXF*/
*      4 *        BIT(2),               /*  RESERVED         @Y17XAXF*/
*      4 LCBSIOC1 BIT(1),               /*  CONDITION CODE.. @Y17XAXF*/
*      4 LCBSIOC2 BIT(1),               /*  SETTING FOR 3705 @Y17XAXF*/
*      4 LCBAP1OL BIT(1),        /* ALTERNATE PATH 1 OFFLINE @Y17XAXG*/
*      4 LCBAP2OL BIT(1),        /* ALTERNATE PATH 2 OFFLINE @Y17XAXG*/
*      4 LCBAP3OL BIT(1),        /* ALTERNATE PATH 3 OFFLINE @Y17XAXG*/
*      4 LCBAP4OL BIT(1),        /* ALTERNATE PATH 4 OFFLINE @Y17XAXG*/
*     3 LCBSTART  PTR(24),              /* ADDR OF CHNL PRGM @Y17XAXF*/
*   2 LCBDCBPT    PTR(31),               /* ADDRESS OF DCB   @Y17XAXF*/
*    3 LCBPCILK PTR(31),                /* PCI LOCK FOR MP   @Y17XAXF*/
*                                       /*  SYSTEM           @Y17XAXF*/
*   2 LCBRCQCB    PTR(31),               /* QCB TO POST RECALLED
*                                           BUFFER TO        @Y17XAXF*/
*    3 LCBRESTR    PTR(31),              /* ERROR MESSAGE DATA       */
*     4 LCBCMDSV CHAR(1),               /* COMMAND CODE SAVE @OY18040*/
*     4 * CHAR(3),                      /*                   @OY18040*/
*                                        /*                  @Y17XAXF*/
*   2 LCBTHSQ     FIXED(16),             /* TH SEQ NUMBER    @YM06118*/
*    3 LCBINCAM    FIXED(15),            /* ERP RETRY COUNTS @YM06118*/
*     4 LCBGETMN    BIT(1),              /* GETMAINED STORAGE AREA
*                                            EXIST IN 904I/904H
*                                                            @YM06118*/
*     4 *            BIT(15),            /* RESERVED         @Y17XAXF*/
*   2 LCBERRCT    FIXED(15),             /* IOS ERROR COUNTERS       */
*    3 LCBTTBIN    FIXED(15),            /* TERM TO BE CONNECTED
*                                           INDEX                    */
*   2 LCBUCBX     PTR(8),                /* UCB INDEX                */
*   2 LCBLSPCI    PTR(24),               /* ADDR OF LAST SVRCD PCI   */
*                                        /*                  @Y17XAXF*/
*    3 LCBRCBFR    PTR(24),              /* POINTER TO RECALLED BUFFR*/
*                                        /*                  @Y17XAXF*/
*     4 LCBRDBFR    PTR(24),             /* START OF READ CHANNEL
*                                           PROGRAM          @Y17XAXF*/
*   2 LCBRECOF    FIXED(15),             /* OFFSET INTO CURRENT BLOCK*/
*   2 LCBSTATE    CHAR(2),               /* STATUS BITS              */
*    3 LCBSTAT1    CHAR(1),              /* 1ST STATUS BYTE  @Y17XAXF*/
*
*/*      BIT DEFINITIONS                                             */
*
*     4 LCBRCLLN BIT(1),                 /* RECALL BEING PERFORMED   */
*     4 LCBOCWTN BIT(1),                 /* NON-IMMEDIATE OPERATOR
*                                           COMMAND WAITING  @OY14092*/
*     4 LCBOCNI  BIT(1),                 /* NON-IMMEDIATE OPERATOR
*                                           CONTROL OPERATION IN
*                                           PROGRESS                 */
*     4 LCBINITN BIT(1),                 /* RECEIVING INITIATE
*                                           MODE MSG                 */
*     4 LCBCONT  BIT(1),                 /* CONTINUE OR RESET
*                                           OPERATION                */
*     4 LCBFREEN BIT(1),                 /* LINE FREE        @Y17XAXF*/
*     4 LCBRECVN BIT(1),                 /* LINE IS RECEIV'G @Y17XAXF*/
*     4 LCBSENDN BIT(1),                 /* LINE IS SENDING  @Y17XAXF*/
*                                        /* BOTH SEND AND RECEIVE BITS
*                                           OFF INDICATE LINE STOPPED*/
*
*    3 LCBSTAT2    BIT(8),              /* SECOND STAT BYTE  @Y17XAXF*/
*
*/*      BIT DEFINITIONS                                             */
*
*     4 LCBTRACE BIT(1),                /* I/O TRACE ACTIVE  @Y17XAXF*/
*     4 LCBMSGNN BIT(1),                 /* MSGGEN/STARTUP MESSAGE   */
*     4 LCBBEOTN BIT(1),                 /* EOT FROM BFRED TERM -
*                                           NO EOM                   */
*      5 LCBCONNN BIT(1),                /* ERROR ON DAIL CONTACT
*                                                            @YM08436*/
*     4 LCBSNDPR BIT(1),                 /* SEND PRIORITY SWITCH SET
*                                           SEND SCHEDULER           */
*     4 LCBNEGRP BIT(1),                 /* NEQATIVE RESPONSE TO
*                                           POLLING RECEIVED         */
*     4 LCBSYNC  BIT(1),                 /* LINE IS BISYNC           */
*      5 LCBATTN  BIT(1),               /* 3705 ATTEN RECEIV @Y17XAXF*/
*     4 LCBDIAL  BIT(1),                 /* DIAL LCB                 */
*      5 LCBBFRAV BIT(1),                /* 3705 BUFFER AVAILABLE
*                                                            @Y17XAXF*/
*     4 LCBRESP  BIT(1),                 /* A RESPONSE IS OWED       */
*                                        /*                  @Y17XAXF*/
*
*   2 LCBTSTSW    CHAR(1),               /* TEST-AND-SET SWITCH      */
*
*/*      BIT DEFINITIONS                                             */
*
*    3 LCBCONCT BIT(1),                  /* CONNECTION ESTABLISHED   */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*   2 LCBRECAD    PTR(24),               /* ADDRESS CURRENT MSG BLOCK*/
*                                        /*                  @Y17XAXF*/
*   2 LCBERB      PTR(31),               /* ERB              @Y17XAXF*/
*    3 LCBERBKY    CHAR(1),              /* ELEMENT REQUEST BLOCK KEY*/
*    3 LCBERBQB    PTR(24),              /* ERB QCB          @Y17XAXF*/
*   2 LCBERBPY    CHAR(1),               /* ERB PRIORITY             */
*   2 LCBERBLK    PTR(24),               /* ADDR NEXT ITEM IN CHAIN  */
*                                        /*                  @Y17XAXF*/
*   2 LCBERBST    CHAR(1),               /* STATUS OF ERB            */
*                                           /* X'08' BIT MUST NEVER BE
*                                           ON IN THE STATUS BYTE.
*                                           IT MUST REMAIN THE 9TH BYTE
*                                           OF THE ERB               */
*
*/*      BIT DEFINITIONS                                             */
*
*    3 LCBMSG   BIT(1),                  /* END OF INIT MODE TO HM   */
*    3 LCBEOMSG BIT(1),                  /* END OF MSG READ FROM DISK*/
*    3 LCBRDERR BIT(1),                  /* LOGICAL READ ERROR       */
*    3 LCBINQ   BIT(1),                  /* ERB IS WAITING FOR BFRS  */
*   3  LCBLOGDV BIT(1),                 /* LOGGING REQUESTED @OY20488*/
*    3 LCBERROR BIT(1),                  /* ERROR ON SEND SIDE       */
*    3 LCBPRCPG BIT(1),                  /* AFTER INITIAL REQUEST IS
*                                           SATISFIED, ERB WILL BE
*                                           POSTED TO QCB INDICATED IN
*                                           LCBRCQCB                 */
*    3 LCBDLNKN BIT(1),                  /* DELINK SWITCH            */
*                                        /* ON - ERB NOT POSTED &
*                                           ERB CAN BE POSTED        */
*     4 LCBCOMPL BIT(1),                 /* DISK REQUEST IS COMPLETE
*                                       PCI CAN NOT POST ERB         */
*   2 LCBERBCH    PTR(24),               /* ADDR CHAIN ASSIGNED BFRS */
*                                        /*                  @Y17XAXF*/
*   2 LCBERBCT    FIXED(15),             /* COUNT FIELDS             */
*    3 LCBRBCT1    CHAR(1),             /*  ENABLED CNT FLDS @Y17XAXF*/
*    3 LCBRBCT2    CHAR(1),             /*  DISABLED CNT FLD @Y17XAXF*/
*      4 LCBDCNT    BIT(1),             /*   DISABLE CNT USE @Y17XAXF*/
*      4 *          BIT(7),             /*   RESERVED        @Y17XAXF*/
*   2 LCBTTCIN    FIXED(16),             /* TERM CURR CONNECTED INDEX*/
*                                        /*                  @Y17XAXF*/
*   2 LCBMSGFM    CHAR(1),               /* BITS TO CONTROL BSC LINE */
*
*/*      BIT DEFINITIONS                                             */
*
*    3 LCBNAK   BIT(1),                  /* REQUEST TO SEND NAK RESP */
*    3 LCBACKI  BIT(1),                  /* ACK COUNTER -SEND/RECEIVE*/
*                                        /* FOLLOWING TWO BITS INDICATE
*                                           WHETHER A SCAN OF LINE
*                                           CONTROL HAS BEEN
*                                           ACCOMPLISHED AND TYPE OF
*                                           LINE CONTROL RECEIVED.   */
*    3 LCBVSTRT BIT(1),                  /* VALID START SEQUENCE     */
*    3 LCBRSTRT BIT(1),                  /* ERROR START SEQUENCE     */
*    3 LCBTTD   BIT(1),                  /* TTD RECEIVED             */
*    3 LCBENQ   BIT(1),                  /* ENQ RECEIVED             */
*    3 LCBEOT   BIT(1),                  /* EOT FIRST CHARACTER      */
*    3 LCBOLT   BIT(1),                  /* TOTE REQUEST             */
*   2 LCBSCBA     PTR(24),               /* ADDRESS OF CURRENT SCB   */
*                                        /*                  @Y17XAXF*/
*   2 LCBOBRCH    PTR(31),               /* 3705 OBR CHAIN   @Y17XAFF*/
*    3 LCBERMSK   CHAR(1),               /* ERROR RECORDING MASK     */
*    3 LCBINVPT PTR(24),                 /* ADDR CURRENT ENTRY IN
*                                           INVITATION LIST  @Y17XAXF*/
*      4 LCBBFRW  PTR(24),              /* ADDR OF BSC STAT  @Y17XAXF*/
*                                       /*  PENDING BUFFER   @Y17XAXF*/
*       5 LCBNXCMD CHAR(3),             /*  SNA COMMAND TYPE @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      PLCB STATUS INFO                                    @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*   2 LCBTPCD    CHAR(12) BDY(DWORD,5), /* TP OP CODES       @Y17XAXF*/
*     4 LCBSTAT5   CHAR(1),             /*  5TH STATUS BYTE  @Y17XAXF*/
*       5 LCBPERM   BIT(1),             /*   PLCB PERMANENTY @Y17XAXF*/
*                                       /*    ASSIGNED       @Y17XAXF*/
*       5 LCBLUNIT  BIT(1),             /*   SNA LOG UNIT    @Y17XAXF*/
*       5 LCBLUS    BIT(1),             /*   RETURN PLCB TO LUS
*                                                            @Y17XAXF*/
*       5 *         BIT(5),             /*   RESERVED        @Y17XAXF*/
*     4 LCBBFRSV   PTR(24),             /*  PTR TO SAVED BUF @Y17XAXF*/
*                                       /*   CHAIN           @Y17XAXF*/
*     4 LCBSTAT6   BIT(8),              /*  SNA STATUS       @Y17XAXF*/
*       5 LCBCHN    BIT(4),             /*   CHAINING STATE
*                                                            @Y17XAXF*/
*       5 LCBHDRPD  BIT(1),             /*   ON-HDR HAS BEEN POSTED TO
*                                               MH
*                                           OFF-HDR HAS NOT BEEN POSTED
*                                               TO MH        @Y17XAXF*/
*       5 LCBRTRRO  BIT(1),             /*   RESPONSE OWED TO RTR
*                                                            @Y17XAXF*/
*       5 LCBMHBID  BIT(1),             /*   BID COMMAND TO BE BUILT
*                                                            @Y17XAXF*/
*       5 LCBINPAK  BIT(1),             /*   ON-IN PACK STATE
*                                            OFF-BETWEEN PACK STATE
*                                                            @Y17XAXF*/
*     4 LCBWAITC   PTR(24),             /*  PIU WAIT CHAIN   @Y17XAXF*/
*     4 LCBRSPSV   PTR(31),             /*  PTR TO SAVED RSP @Y17XAXF*/
*                                       /*   BUFFER          @Y17XAXF*/
*      5 LCBBFSNS CHAR(4),              /* BIND-FAILED SENSE DATA
*                                                            @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      SAVE AREA FOR SENSE                                 @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*   2 LCBSAVSN CHAR(8),                 /* SAVE SENSE        @Y17XAXF*/
*     3 LCBSNSV  CHAR(1),               /*  SAVEAREA FOR SEN @Y17XAXF*/
*     3 LCBCSWSV CHAR(7),               /*  SAVEAREA FOR CSW @Y17XAXF*/
*   2 LCBERCCW    CHAR(24) BDY(DWORD),   /* 3 ERP COMMANDS           */
*    3 *           CHAR(8),              /*                  @G36XRXG*/
*    3 LCBATL05 CHAR(8),                 /* 3705 ATTN ELEMENT@G36XRXG*/
*    3 *           CHAR(8),              /*                  @G36XRXG*/
*   2 LCBCPA    CHAR(80),                /*CHANNEL PRG AREA  @Y17XAXF*/
*    3 LCBCCW1     CHAR(8),              /*                  @Y17XAXF*/
*    3 LCBCCW2     CHAR(8),              /* C C W            @Y17XAXF*/
*    3 LCBCCW3     CHAR(8),              /*                  @Y17XAXF*/
*    3 LCBCCW4     CHAR(8),              /* B U I L D        @Y17XAXF*/
*    3 LCBCCW5     CHAR(8),              /*                  @Y17XAXF*/
*      4 LCBATTEL   CHAR(8),             /* LOCAL ATTN ELEM  @G36XRXG*/
*        5 LCBQEBPL  CHAR(8),            /* QEB PARM LIST    @ZM46675*/
*          6 LCBSIO  CHAR(1),            /* QEB FUNC CODE    @ZM46675*/
*          6 LCBIOSB PTR(24),            /* IOSB PTR         @ZM46675*/
*          6 LCBCP   PTR(31),            /* CHAN PGM START   @ZM46675*/
*    3 LCBCCW6     CHAR(8),              /* A R E A          @Y17XAXF*/
*    3 LCBCCW7     CHAR(8),              /*                  @Y17XAXF*/
*    3 LCBCCW8     CHAR(8),              /*                  @Y17XAXF*/
*    3 LCBCCW9     CHAR(8),              /*                  @Y17XAXF*/
*    3 LCBCCW10    CHAR(8);              /*                  @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      SNA RESPONSE INFO                                   @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DECLARE                               /*                   @Y17XAXF*/
*   1 LCBRSPIN CHAR(19) DEFINED(LCBIOBSN), /*SNA RSP INFO    @Y17XAXF*/
*     2 LCBDSCRJ BIT (1),             /* DISCONNECT OUTSTNDG @OY20411*/
*     2 * BIT (7),                    /* RESERVED            @OY20411*/
*     2 LCBSNS0  BIT(8),                /* SAME BYTE AS LCBSENS0 -
*                                          MUST BE 0 FOR SNA @YM06118*/
*     2 LCBRHSV  CHAR(3),               /* RESPONSE RH       @Y17XAXF*/
*     2 LCBLUSNS CHAR(4),               /* RESPONSE SENSE    @Y17XAXF*/
*        3 LCBSMAJ BIT(8),              /* MAJOR SENSE BYTE  @Y17XAXG*/
*        3 LCBSMIN BIT(8),              /* MINOR SENSE BYTE  @Y17XAXG*/
*        3 LCBUSER BIT(16),             /* USER SENSE BYTES  @Y17XAXG*/
*     2 LCBSCPRS CHAR(3),               /* SSCP RESPONSE BYTES
*                                                            @Y17XAXF*/
*      3 LCBDFCMD CHAR(1),              /* DFC CMD RSP BYTE  @Y17XAXF*/
*      3 *        BIT(8),               /* RESERVED          @Y17XAXF*/
*      3 LCBCSWU1 BIT(8),               /* SAME BYTE AS LCBCSWUS
*                                                            @Y17XAXF*/
*       4 *        BIT(7),              /* RESERVED          @Y17XAXF*/
*       4 LCBUSUE1 BIT(1),              /* SAME BIT AS LCBUSUE
*                                           INDICATES END OF MSG
*                                           SENT OR RCV'D    @Y17XAXF*/
*     2 *        CHAR(3),               /* RESERVED          @Y17XAXF*/
*     2 LCBRSPFG CHAR(1),               /* FLAG BYTE USED IN @Y17XAXG*/
*                                       /* RESP GENERATION   @Y17XAXG*/
*        3 LCBEXPI BIT(1),              /* RESP EXPEDITED    @Y17XAXG*/
*        3 LCBRSRH BIT(1),              /*EXCEP'N RESP GEN'D @YM07705*/
*        3 *       BIT(6),              /* RESERVED          @YM07705*/
*     2 LCBPAKCH PTR(24);               /* PACK BUFFER CHAIN @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      3705 CORE QUEUE INFO                                @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DECLARE                               /*                   @Y17XAXF*/
*   1 LCBCOREQ CHAR(12) DEFINED(LCBTPCD), /* 3705 CORE QUEUE @Y17XAXF*/
*     2 LCBCQELE PTR(31),               /* ELEMENT CHAIN     @Y17XAXF*/
*     2 LCBCQLNK PTR(31),               /* LINK              @Y17XAXF*/
*     2 LCBWRSCH PTR(31);               /* ADDR OF WRT SCHD  @Y17XAXF*/
*                                       /*   STCB            @Y17XAXF*/
*/*                                                          @YM08062*/
*/*  THE FOLLOWING FIELDS EXIST FOR PLCB'S ONLY              @YM08062*/
*/*                                                          @YM08062*/
*DECLARE
*  1 *    CHAR(8) DEF(LCBCPA) POS(41),  /*                   @YM08062*/
*    2 * FIXED(8),                      /*                   @YM08062*/
*    2 LCBNCPPT PTR (24),               /* NCP TTE ADDRESS   @YM08062*/
*    2 *       CHAR(4);                 /* RESERVED          @YM08062*/
*/*  ================================================================*/
*/*      IGG019RP USES LCB+X'73' TO LCB+ X'97' AS WORK AREA          */
*/*  ================================================================*/
*/*                                                          @YM08142*/
*/*   IEDQNX INTERFACE AREA (3705 LCB ONLY)                  @YM08142*/
*/*                                                          @YM08142*/
* DECLARE                               /*                   @YM08142*/
*   1 LCBQNX    CHAR(24) DEFINED(LCBERCCW), /*               @YM08142*/
*     2 LCBQNXMN FIXED(8),              /* MESSAGE NUMBER    @YM08142*/
*       3 LCBNX064 BIT(1),              /* FLAG TO WRITE MESSAGE
*                                          IED064I           @YM08142*/
*       3 LCBNX142 BIT(1),              /* FLAG TO WRITE MESSAGE
*                                          IED142I           @YM08142*/
*       3 LCBNX162 BIT(1),              /* FLAG TO WRITE MESSAGE
*                                          IED162I           @YM08142*/
*       3 LCBNX509 BIT(1),              /* FLAG TO WRITE MESSAGE
*                                          IED509I           @YM08142*/
*       3 *        BIT(4),              /* RESERVED          @YM08142*/
*     2 LCBSTSAV PTR(24),               /* SAVE AREA FOR LCBSTART
*                                           DURING RETRY     @Y17XAXF*/
*     2 *        CHAR(1),               /* RESERVED          @ZM46833*/
*     2 LCBIOSBS PTR(24),               /* SAVE IOSB PTR     @ZM46833*/
*     2 *        CHAR(8),               /* RESERVED          @ZM46833*/
*     2 LCBDSTEA PTR(31),               /* DEV STATISTICS TAB ENTRY
*                                           ADDRESS          @Y17XAXF*/
*     2 LCBUASZE FIXED(8),              /* UNIT NAME ADDRESS SIZE
*                                                            @Y17XAXF*/
*     2 LCBUNADD PTR(24);               /* UNIT NAME ADDRESS @Y17XAXF*/
*                                                         /* @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      RH CANCEL INFO                                      @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DECLARE                               /*                   @Y17XAXF*/
*   1 LCBCANCL  CHAR(5) DEFINED(LCBSAVSN), /* CANCEL INFO    @YM08062*/
*     2 LCBCANFG BIT(8),                /* CANCEL RH FLAG    @Y17XAXF*/
*       3 LCBCANXT BIT(1),              /*  CANCEL MUST BE RESPONDED
*                                            TO              @Y17XAXF*/
*       3 LCBCANEB BIT(1),              /*  CAN END BKT      @Y17XAXF*/
*       3 *        BIT(1),              /*  RESERVED         @Y17XAXF*/
*       3 LCBCANCD BIT(1),              /*  CAN CHGE DIR     @Y17XAXF*/
*       3 *        BIT(4),              /*  RESERVED         @Y17XAXF*/
*     2 LCBCANTH CHAR(2),               /* CAN TH SEQ        @Y17XAXF*/
*     2 *        CHAR(2);               /* RESERVED          @YM08062*/
*/*                                                          @Y17XAXF*/
*/*      USED WITH LCBFLAG1                                  @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL LCBPLCB BIT(8) CONSTANT('00'X);   /* PLCB INDICATOR    @Y17XAXF*/
*
*/*                                                          @Y17XAXF*/
*/*      VALUES USED WITH LCBCHN                             @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DECLARE                                                 /* @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      THE FOLLOWING VALUES ARE VALID ONLY WHEN LCBRECVN=1 @Y17XAXF*/
*/*            OR LCBSENDN=1                                 @Y17XAXF*/
* LCBBETC   BIT(4) CONSTANT('0000'B),   /* BETWEEN CHAIN STATE WAITING
*                                          FOR NO RESPONSE   @Y17XAXF*/
* LCBINC    BIT(4) CONSTANT('0001'B),   /* IN CHAIN STATE
*                                                            @Y17XAXF*/
* LCBPURG   BIT(4) CONSTANT('0010'B),   /* PURGING CHAIN STATE
*                                                            @Y71XAXF*/
* LCBWMG    BIT(4) CONSTANT('0011'B),    /* BETWEEN CHAIN-WAITING FOR
*                                          MSGGEN RSP STATE  @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      THE FOLLOWING VALUES ARE VALID ONLY WHEN LCBRECVN=1 @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* LCBWERAS  BIT(4) CONSTANT('0111'B),   /* BETWEEN CHAIN STATE-WAITING
*                                          FOR SCREEN ERASURE RESPONSE
*                                          (TSO STATE ONLY)  @Y17XAXF*/
* LCBWSMI   BIT(4) CONSTANT('1000'B),    /* BETWEEN CHAIN STATE-
*                                          WAITING START MI RESPONSE
*                                          (TSO STATE ONLY)  @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      THE FOLLOWING VALUES ARE VALID ONLY WHEN LCBSENDN=1 @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* LCBWFMD   BIT(4) CONSTANT('0100'B),   /* BETWEEN CHAIN STATE WAITING
*                                          FM DATA RSP STATE
*                                                            @Y17XAXF*/
* LCBWCAN   BIT(4) CONSTANT('0101'B),   /* BETWEEN CHAIN STATE WAITING
*                                          FOR CANCEL RSP STATE
*                                                            @Y17XAXF*/
* LCBWBID   BIT(4) CONSTANT('0110'B);   /* BETWEEN CHAIN STATE WAITING
*                                          FOR BID RSP STATE
*                                                            @Y17XAXF*/
*
*/*                                                          @Y17XAXF*/
*/*      VALUES FOR LCBECBCC                                 @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DECLARE                               /*                   @Y17XAXF*/
*    LCBECB41 BIT(8) CONSTANT('41'X),   /* PERMANENT ERR     @Y17XAXF*/
*    LCBECB48 BIT(8) CONSTANT('48'X),   /* I/O END W/ HALT   @Y17XAXF*/
*    LCBECB7F BIT(8) CONSTANT('7F'X);   /* NORMAL COMPLETION @Y17XAXF*/
*
*        DCL   LCBXPTR REG(5) PTR(24);
*DECLARE
*  1 IEDQLCBX  BDY(DWORD) BASED(LCBXPTR), /* LCB EXTENSION     S99228*/
*   2 LCBXCON  BDY(DWORD),              /* START OF CNTRL FLDS S99228*/
*    3 LCBXFLAG CHAR(1),                /* DEV DEP FLAGS       S99228*/
*/*      BIT DEFINITIONS                                       S99228*/
*     4 *       BIT(1),                 /* RESERVED            S99228*/
*     4 *       BIT(1),                 /* RESERVED            S99228*/
*     4 *       BIT(1),                 /* RESERVED            S99228*/
*     4 *       BIT(1),                 /* RESERVED            S99228*/
*     4 LCBGPCTV  BIT(1),               /* ETX RECD GEN POLL   S99228*/
*     4 LCBSRCPF   BIT(1),              /* SOURCE DETERM PERFORMED
*                                                              S99228*/
*     4 LCBERPND  BIT(1),               /* SOH % R MSG PENDING S99228*/
*     4 *       BIT(1),                 /* RESERVED            S99228*/
*    3 LCBXDCT CHAR(3),                 /* DCT STORAGE AREA    S99228*/
*     4 LCBDCT1 CHAR(1),                /* DCT BYTE 1          S99228*/
*     4 LCBDCT2 CHAR(1),                /* DCT BYTE 2          S99228*/
*     4 LCBDCT3 CHAR(1),                /* DCT BYTE 3          S99228*/
*    3 LCBXRADR PTR(31),                /* ERP POLL CHAR ADD @Y17XAXF*/
*     4 LCBPCIRC PTR(8),                /* 3270 LOCAL PCI RETRY
*                                       CNTR                   S99228*/
*     4 LCBERADR PTR(24);               /* POLL CHARS ADDR FLD S99228*/
*
*
*%LCBPLCBL='LENGTH(IEDQLCB)             /* LENGTH OF PLCB    @YM08062*/
*          -LENGTH(LCBCPA)+48';
*DCL LCBPRFSZ BIT(8) CONSTANT('20'X);   /* LCB PREFIX SIZE   @Y17XAXF*/
*DCL LCBERBFS BIT(8) CONSTANT('4C'X);   /* OFFSET INTO LCB OR ERB
*                                                            @Y17XAXF*/
*/*                                                                  */
*/*       *******************************************************    */
*/*   0   *   KEY    **                    QCBA                 *    */
*/*       *******************************************************    */
*/*   4   *   PRI    **                    LINK                 *    */
*/*       *******************************************************    */
*/*   8   *   RSKEY  **                        STCBA            *    */
*/*       *******************************************************    */
*/*  12   *   RSPRI  **                        RSLNK            *    */
*/*       *******************************************************    */
*/*  16   *         EOLDT          **    TDL     **    TSOB     *    */
*/*       *******************************************************    */
*/*  20   *   CHAIN  **                        INSRC            *    */
*/*       *******************************************************    */
*/*  24   *   NTXT   **                     SCBDA               *    */
*/*       *******************************************************    */
*/*  28   *   ISZE   **                  FSBFR/LSBFR            *    */
*/*       *******************************************************    */
*/*  32   *   FLAG1  **   FLAG2    **   SENS0    **   SENS1     *    */
*/*       *******************************************************    */
*/*  36   *   ECBCC  **                        ECBPT            *    */
*/*       *******************************************************    */
*/*  40   *   FLAG3  **                         CSW             *    */
*/*       *******************************************************    */
*/*  44   *                       CSW                           *    */
*/*       *******************************************************    */
*/*  48   *   SIOCC  **                        START            *    */
*/*       *******************************************************    */
*/*  52   *                      DCBPT                          *    */
*/*       *******************************************************    */
*/*  56   *                   RCQCB/RESTR                       *    */
*/*       *******************************************************    */
*/*  60   *        INCAM           **       ERRCT/TTBIN         *    */
*/*       *******************************************************    */
*/*  64   *   UCBX   **                    RCBFR/LSPCI          *    */
*/*       *******************************************************    */
*/*  68   *         RECOF          **          STATE            *    */
*/*       *******************************************************    */
*/*  72   *   TSTSW  **                 RECAD                   *    */
*/*       *******************************************************    */
*/*  76   *   ERBKY  **                 ERBQB                   *    */
*/*       *******************************************************    */
*/*  80   *   ERBPY  **                 ERBLK                   *    */
*/*       *******************************************************    */
*/*  84   *   ERBIN  **                 ERBCH                   *    */
*/*       *******************************************************    */
*/*  88   *        ERBCT           **          TTCIN            *    */
*/*       *******************************************************    */
*/*  92   *  MSGFM   **                        SCBA             *    */
*/*       *******************************************************    */
*/*  96   *   ERMSK  **                        INVPT            *    */
*/*       *******************************************************    */
*/* 100   *                      TPCD                           *    */
*/*       *******************************************************    */
*/* 104   *                      TPCD                           *    */
*/*       *******************************************************    */
*/* 108   *                      TPCD                           *    */
*/*       *******************************************************    */
*/* 112   *   SNSV   **                        CSWSV            *    */
*/*       *******************************************************    */
*/* 116   *                      CSWSV                          *    */
*/*       *******************************************************    */
*/* 120   *                      ERCCW                          *    */
*/*       *******************************************************    */
*/* 124   *                                                     *    */
*/*       *******************************************************    */
*/* 128   *                                                     *    */
*/*       *******************************************************    */
*/* 132   *                                                     *    */
*/*       *******************************************************    */
*/* 136   *                                                     *    */
*/*       *******************************************************    */
*/* 140   *                                                     *    */
*/*       *******************************************************    */
*/*                                                                  */
./ ADD NAME=TLGBD
*        %GOTO BSLLGB;                                     /*
         MACRO
         TLGBD
.*A-000000-999999                                              @X31X8X0
.*A120000,200000,860000                                        @Y17XAXF
.*C050000-080000,210000-230000,440000,490000-520000            @Y17XAXF
.*C560000,670000,680000-700000,830000,370000                   @Y17XAXF
IEDNLGB  DSECT
         ORG   *+17
LGBTYPE  DS    XL1'00' .                LGB INDICATOR          @Y17XAXF
LGBGRP   EQU   X'00' .                    GROUP INDICATOR      @Y17XAXF
LGBSUBST DS    CL2 .                    TNT OFFSET TO 1ST LINE @Y17XAXF
*                                         WITHIN THIS GROUP    @Y17XAXF
LGBBUFOU DS    FL1 .                    NUMBER OF BUFFERS ASSIGNED
*                                       INITIALLY FOR SENDING
*                                       OPERATIONS FOR EACH LINE
*                                       IN THE LINE GROUP
LGBPREF  EQU   X'10'                    CORRESPONDING TRMPREF BIT
*                                        (SET BY GROUP MACRO)  @Y17XAXF
LGBMHA   DS    AL3 .                    ADDRESS OF THE MESSAGE
*                                       HANDLER FOR THIS LINE GROUP
         DS    FL1                      RESERVED                 X03039
LGBPCI   DS    XL1                      PCI OPTIONS              X03039
LGBPCIAO EQU   X'10'                    PCI=(,A) ADD ON OUTPUT   X03039
LGBPCINO EQU   X'04'                    PCI=(,N) NONE ON OUTPUT  X03039
LGBDSORG DS    XL2 .                    DATASET ORGANIZATION CODE=LG
LGBBUFMA DS    FL1 .                    MAXIMUM NUMBER OF BUFFERS
*                                       TO BE USED FOR DATA TRANSFER
*                                       FOR EACH TERMINAL ASSOCIATED
*                                       WITH THIS LINE
LGBBYTE  DS    CL1 .                    FLAG BYTE              @Y17XAXF
LGBPACK  EQU   X'80' .                  PACK=YES SPECIFIED     @Y17XAXF
*        EQU   X'40'-X'01' .               RESERVED            @Y17XAXF
LGBOPACE DS    XL1 .                    OPACING VALUE          @Y17XAXF
         DS    CL1 .                    RESERVED               @Y17XAXF
         DS    XL1 .                    RESERVED
*                                       SWITCHED LINE GROUP
LGBTRANS DS    AL3 .                    ADDRESS OF THE TRANSLATION
*                                       TABLE
         ORG   IEDNLGB+40
LGBNAME  DS    CL8 .                    NAME OF LINE GROUP
LGBOFLGS DS    XL1 .                    OPEN FLAGS
LGBOPEN  EQU   X'10'                    CORRESPONDING DCB OPEN FLAG
*                                       (SET BY GROUP MACRO)   @Y17XAXF
LGBSCTAD DS    AL3 .                    SPECIAL CHARACTERS TABLE
LGBILCT  DS    XL1 .                    NO. OF INVITATION LISTS
         ORG   IEDNLGB+54
LGBBUFSI DS    AL2 .                    BUFFER SIZE USED FOR SENDING
*                                       TO A TERMINAL IN THIS
*                                       LINE GROUP
LGBRESER DS    0A .                     RESERVED IDLE COUNTS   @Y17XAXF
LGBRESV1 DS    AL1 .                     HDR IDLES             @Y17XAXF
LGBRESV2 DS    AL1 .                     TEXT IDLES            @Y17XAXF
LGBRESV3 DS    AL1 .                     RESERVED              @Y17XAXF
LGBRESV4 DS    AL1 .                     RESERVED              @Y17XAXF
LGBIVLST DS    A .                      ADDRESS OF INVITAION LIST
*                                       WHEN ID VERIFICATION IS
*                                       PERFORMED BY TCAM
LGBPRFSZ EQU   LGBBUFOU-IEDNLGB .       PREFIX SIZE            @Y17XAXF
         MEND  ,     */
*%BSLLGB:  ;
*DECLARE
* 1 IEDNLGB BASED(IEDNLPTR) BDY(WORD),                     /*@Y17XAXF*/
*/*                                                                  */
*/*    THIS IS A DSECT OF THE LINE GROUP BLOCK. THERE IS AN LGB FOR  */
*/*    EACH LINE GROUP IN THE TCAM-3705 SYSTEM                       */
*/*                                                                  */
*  2 *        CHAR(17),                 /* RESERVED          @Y17XAXF*/
*  2 LGBTYPE  CHAR(1),                  /* GROUP TYPE IND    @Y17XAXF*/
*  2 LGBSUBST FIXED(15),                /* TNT OFFSET TO 1ST @Y17XAXF*/
*                                       /*   LINE WITHIN THIS@Y17XAXF*/
*                                       /*   GROUP                   */
*  2 LGBBUFOU PTR(8),                   /* NUMBER OF BUFFERS ASSG-
*                                          NED INITIALLY FOR SENDING
*                                          OPERATIONS FOR EACH LINE IN
*                                          THE LINE GROUP
*                                                            @Y17XAXF*/
*    3 *        BIT(3),                 /* RESERVED          @Y17XAXF*/
*    3 LGBPREF  BIT(1),                 /* CORRESPONDING TRMPREF BIT
*                                          (GET BY GROUP MACRO)
*                                                            @Y17XAXF*/
*    3 *        BIT(4),                 /* BUFOUT
*                                                            @Y17XAXF*/
*  2 LGBMHA PTR(24) BDY(BYTE),          /* ADDRESS OF THE MESSAGE
*                                          HANDLER FOR THIS LINE
*                                          GROUP                     */
*  2 * PTR(8),                          /* RESERVED            X03039*/
*  2 LGBPCI CHAR(1),                    /* PCI OPTIONS         X03039*/
*    3 *        BIT(1),                 /* RESERVED            X03039*/
*    3 *        BIT(1),                 /* RESERVED            X03039*/
*    3 *        BIT(1),                 /* RESERVED            X03039*/
*    3 LGBPCIAO BIT(1),                 /* PCI=(,A) A ON OUTPUTX03039*/
*    3 *        BIT(1),                 /* RESERVED            X03039*/
*    3 LGBPCINO BIT(1),                 /* PCI=(,N) N ON OUTPUTX03039*/
*    3 *        BIT(1),                 /* RESERVED            X03039*/
*    3 *        BIT(1),                 /* RESERVED            X03039*/
*  2 LGBDSORG BIT(16),                  /* DATASET ORGANIZATION
*                                          CODE=LG                   */
*  2 LGBBUFMA PTR(8),                   /* MAXIMUM NUMBER OF BUFFERS
*                                          TO BE USED FOR DATA TRANS-
*                                          FER FOR EACH TERMINAL
*                                          ASSOCIATED WITH THIS LINE
*                                          GROUP             @Y17XAXF*/
*  2 LGBBYTE  CHAR(1),                  /* FLAG BYTE         @Y17XAXF*/
*     3 LGBPACK  BIT(1),                /*  PACK=YES SPEC    @Y17XAXF*/
*    3 *        BIT(7),                 /*  RESERVED         @Y17XAXF*/
*  2 LGBOPACE FIXED(8),                 /* OPACING VALUE     @Y17XAXF*/
*  2 *        CHAR(1),                  /* RESERVED          @Y17XAXF*/
*  2 *       CHAR(1),                   /* RESERVED                  */
*  2 LGBTRANS PTR(24) BDY(BYTE),        /* ADDRESS OF THE TRANSLATION
*                                          TABLE                     */
*  2 *        CHAR(4),                  /* RESERVED                  */
*  2 LGBNAME  CHAR(8),                  /* NAME OF LINE GROUP        */
*  2 LGBOFLGS BIT(8),                   /* OPEN FLAGS                */
*   3 *        BIT(3),                  /* RESERVED          @Y17XAXF*/
*   3 LGBOPEN  BIT(1),                  /* CORRESPONDING DCB OPEN FLAG
*                                          (SET BY GROUP MACRO)
*                                                            @Y17XAXF*/
*   3 *        BIT(4),                  /* RESERVED          @Y17XAXF*/
*  2 LGBSCTAD PTR(24),                  /* SPECIAL CHARACTERS TABLE  */
*  2 LGBILCT PTR(8),                    /* NO. OF INVITATION LISTS   */
*  2 *       CHAR(1),                   /* RESERVED                  */
*  2 LGBBUFSI FIXED(15) BDY(BYTE),      /* BUFFER SIZE USED FOR SEND-
*                                          ING TO A TERMINAL IN THIS
*                                          LINE GROUP                */
*  2 LGBRESER FIXED(32),                /* RESERVE IDLES CNT @Y17XAXF*/
*   3 LGBRESV1 FIXED(8),                /*  HDR IDLES        @Y17XAXF*/
*   3 LGBRESV2 FIXED(8),                /*  TEXT IDLES       @Y17XAXF*/
*   3 LGBRESV3 FIXED(8),                /*  RESERVED         @Y17XAXF*/
*   3 LGBRESV4 FIXED(8),                /*  RESERVED         @Y17XAXF*/
*  2 LGBIVLST PTR(31);                  /* ADDRESS OF INVITATION LIST
*                                          WHEN TERMINAL ID VERIFICA-
*                                          TION IS PERFORMED BY TCAM */
*/*                                                          @Y17XAXF*/
*/*  VALUES FOR LGBTYPE                                      @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*  DCL  LGBGRP  BIT(8)   CONSTANT('00'X);  /* GROUP IND      @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      PREFIX SIZE                                         @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*  DCL LGBPRFSZ BIT(8)   CONSTANT('14'X); /* PREFIX SIZE     @Y17XAXF*/
./ ADD NAME=TMHTABD
*        %GOTO PLSMHTAB;                /* BILINGUAL HEADER
         MACRO
         TMHTABD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
         SPACE
IEDMHTD DSECT
*
*        DSECT FOR MH TABLE
*
MHTABEND DS    0XL1 .                   FLAG FIELD
MHFLGE   EQU   X'FF'                    END OF TABLE INDICATOR
MHNAME   DS    CL8 .                    MH NAME
MHENTRY  DS    A .                      MH ENTRY ADDRESS
MHTABLEN EQU   *-IEDMHTD .              LENGTH OF MH TABLE ENTRY
         SPACE 2
         MEND                           */
*%PLSMHTAB : ;
*DECLARE
*  1 IEDMHTD BDY(WORD) BASED(IEDQMHTP),
*/*                                                                  */
*/*      DSECT FOR MH TABLE                                          */
*/*                                                                  */
*   2 MHNAME CHAR(8),                   /* MH NAME                   */
*    3 MHTABEND CHAR(1),                /* FLAG FIELD                */
*   2 MHENTRY PTR(31);                  /* MH ENTRY ADDRESS          */
* %MHTABLEN='LENGTH(IEDMHTD)';          /* LEN OF MH TABLE ENTRY     */
*DCL MHFLGE BIT(8) CONSTANT('FF'X);     /* END OF TABLE INDICATOR    */
*
*%MHEND: ;                              /* END OF MH TABLE           */
*
./ ADD NAME=TMODD
*        %GOTO PLSMODD;                 /*
         MACRO
         TMODD
.*A000000-999999                                               @Y17XAXF
IEDQMOD  DSECT
*
*        MODE DEVICE DEPENDENT FIELDS
*
MODLNG   DS    XL1                      LENGTH OF MODE BYTE FIELDS
*                                        IN THE TTE DEVICE DEPENDENT
*                                        FIELDS
MODCUR   DS    0XL2                     CURRENT MODE IN NCP
MODCUR1  DS    XL1                      CURRENT MODE BYTE 1
*        EQU   X'80'                     RESERVED
MODCWERP EQU   X'40'                     OVERRIDE WRITE TEXT MODE ERPS
MODCRLGW EQU   X'20'                     REJECT LEADING GRAPHICS ON
*                                         WRITE OPERATIONS
MODCEIBD EQU   X'10'                     EIB DELETION(NON-TRANS-
*                                         PARENT ONLY)
*        EQU   X'08'                     RESERVED
MODCITFL EQU   X'04'                     INHIBIT TIME FILL/INHIBIT
*                                         WACK LINES
MODCEMLC EQU   X'02'                     EMBEDDED LINE CONTROL(NON-
*                                         TRANSPARENT) INTERMEDIATE
*                                         CONTROL CHAR INSERTION
MODCCTXT EQU   X'01'                     CRITICAL TEXT
MODCUR2  DS    XL1                      CURRENT MODE 2ND BYTE
*        EQU   X'80'                     RESERVED
MODCRERP EQU   X'40'                     OVERRIDE READ TEXT MODE ERPS
MODCRLGR EQU   X'20'                     REJECT LEADING GRAPHICS
*                                         ON READ OPERATIONS
MODCEIBJ EQU   X'10'                     EIB INSERTION
MODCINTO EQU   X'10'                     INHIBIT TEXT TIME OUTS
MODCSUBB EQU   X'08'                     SUB-BLOCKING(INPUT)
MODCINTE EQU   X'04'                     INTERRUPT ENABLED
MODCMNTR EQU   X'02'                     ACTIVATE MONITOR TASK
MODCMNTP EQU   X'01'                     0-AUTOMATICALLY DEACTIVATE
*                                          MONITOR
*                                        1-PERPETUAL MONITOR
MODNEW   DS    0XL2                     NEW MODE IN NCP
MODNEW1  DS    XL1                      NEW MODE BYTE 1
*        EQU   X'80'                     RESERVED
MODNWERP EQU   X'40'                     OVERRIDE WRITE TEXT MODE ERPS
MODNRLGW EQU   X'20'                     REJECT LEADING GRAPHICS ON
*                                         WRITE OPERATIONS
MODNEIBD EQU   X'10'                     EIB DELETION(NON-TRANS-
*                                         PARENT ONLY)
*        EQU   X'08'                     RESERVED
MODNITFL EQU   X'04'                     INHIBIT TIME FILL/INHIBIT
*                                         WACK LINES
MODNEMLC EQU   X'02'                     EMBEDDED LINE CONTROL(NON-
*                                         TRANSPARENT) INTERMEDIATE
*                                         CONTROL CHAR INSERTION
MODNCTXT EQU   X'01'                     CRITICAL TEXT
MODNEW2  DS    XL1                      NEW MODE 2ND BYTE
*        EQU   X'80'                     RESERVED
MODNRERP EQU   X'40'                     OVERRIDE READ TEXT MODE ERPS
MODNRLGR EQU   X'20'                     REJECT LEADING GRAPHICS
*                                         ON READ OPERATIONS
MODNEIBJ EQU   X'10'                     EIB INSERTION
MODNINTO EQU   X'10'                     INHIBIT TEXT TIME OUTS
MODNSUBB EQU   X'08'                     SUB-BLOCKING(INPUT)
MODNINTE EQU   X'04'                     INTERRUPT ENABLED
MODNMNTR EQU   X'02'                     ACTIVATE MONITOR TASK
MODNMNTP EQU   X'01'                     0-AUTOMATICALLY DEACTIVATE
*                                          MONITOR
*                                        1-PERPETUAL MONITOR
         MEND  */
*%PLSMODD : ;
*DCL 1 IEDQMOD  BASED(RMOD),
*/*                                                                  */
*/*      MODE DEVICE DEPENDENT FIELDS                                */
*/*                                                                  */
*      2 MODLNG   FIXED(8),             /* LENGTH OF MODE BYTE FIELDS
*                                        IN THE TTE DEVICE DEPENDENT
*                                        FIELDS                      */
*      2 MODCUR   CHAR(2),              /* CURRENT MODE IN NCP       */
*        3 MODCUR1  BIT(8),             /* CURRENT MODE BYTE 1       */
*          4 *        BIT(1),           /*  RESERVED                 */
*          4 MODCWERP BIT(1),           /*  OVERIDE WRT TXT MODE ERPS*/
*          4 MODCRLGW BIT(1),           /*  REJECT LEADING GRAPHICS ON
*                                           WRITE OPERATIONS         */
*          4 MODCEIBD BIT(1),           /*  EIB DELETION(NON-TRANS-
*                                           PARENT ONLY)             */
*          4 *        BIT(1),           /*  RESERVED                 */
*          4 MODCITFL BIT(1),           /*  INHIBIT TIME FILL/INHIBIT
*                                           WACK LINES               */
*          4 MODCEMLC BIT(1),           /*  EMBEDDED LINE CONTROL(NON-
*                                           TRANSPARENT) INTERMEDIATE
*                                           CONTROL CHAR INSERTION   */
*          4 MODCCTXT BIT(1),           /*  CRITICAL TEXT            */
*        3 MODCUR2  BIT(8),             /* CURRENT MODE 2ND BYTE     */
*          4 *        BIT(1),           /*  RESERVED                 */
*          4 MODCRERP BIT(1),           /*  OVERIDE READ TXT MDE ERPS*/
*          4 MODCRLGR BIT(1),           /*  REJECT LEADING GRAPHICS
*                                           ON READ OPERATIONS       */
*          4 MODCEIBJ BIT(1),           /*  EIB INSERTION            */
*            5 MODCINTO BIT(1),         /*   INHIBIT TEXT TIME OUTS  */
*          4 MODCSUBB BIT(1),           /*  SUB-BLOCKING(INPUT)      */
*          4 MODCINTE BIT(1),           /*  INTERRUPT ENABLED        */
*          4 MODCMNTR BIT(1),           /*  ACTIVATE MONITOR TASK    */
*          4 MODCMNTP BIT(1),           /*  0-AUTOMATICALLY DEACTIVATE
*                                             MONITOR
*                                           1-PERPETUAL MONITOR      */
*      2 MODNEW   CHAR(2),              /* NEW MODE IN NCP           */
*        3 MODNEW1  BIT(8),             /* NEW MODE BYTE 1           */
*          4 *        BIT(1),           /*  RESERVED                 */
*          4 MODNWERP BIT(1),           /*  OVERIDE WRT TXT MODE ERPS*/
*          4 MODNRLGW BIT(1),           /*  REJECT LEADING GRAPHICS ON
*                                           WRITE OPERATIONS         */
*          4 MODNEIBD BIT(1),           /*  EIB DELETION(NON-TRANS-
*                                           PARENT ONLY)             */
*          4 *        BIT(1),           /*  RESERVED                 */
*          4 MODNITFL BIT(1),           /*  INHIBIT TIME FILL/INHIBIT
*                                           WACK LINES               */
*          4 MODNEMLC BIT(1),           /*  EMBEDDED LINE CONTROL(NON-
*                                           TRANSPARENT) INTERMEDIATE
*                                           CONTROL CHAR INSERTION   */
*          4 MODNCTXT BIT(1),           /*  CRITICAL TEXT            */
*        3 MODNEW2  BIT(8),             /* NEW MODE 2ND BYTE         */
*          4 *        BIT(1),           /*  RESERVED                 */
*          4 MODNRERP BIT(1),           /*  OVERIDE READ TXT MDE ERPS*/
*          4 MODNRLGR BIT(1),           /*  REJECT LEADING GRAPHICS
*                                           ON READ OPERATIONS       */
*          4 MODNEIBJ BIT(1),           /*  EIB INSERTION            */
*            5 MODNINTO BIT(1),         /*   INHIBIT TEXT TIME OUTS  */
*          4 MODNSUBB BIT(1),           /*  SUB-BLOCKING(INPUT)      */
*          4 MODNINTE BIT(1),           /*  INTERRUPT ENABLED        */
*          4 MODNMNTR BIT(1),           /*  ACTIVATE MONITOR TASK    */
*          4 MODNMNTP BIT(1);           /*  0-AUTOMATICALLY DEACTIVATE
*                                             MONITOR
*                                           1-PERPETUAL MONITOR      */
./ ADD NAME=TMSGD
*        %GOTO PLSMSG;                  /*
         MACRO
         TMSGD
*
*        BAL VERSION OF THIS DSECT NOT SUPPORTED
*
         MEND  */
*%PLSMSG:;
*/*                                                                  */
*/*      CONSTANTS FOR MESSAGE NUMBERS                               */
*/*                                                                  */
* DCL MSGSTANF FIXED(15) CONSTANT(16);  /* STATION NOT FOUND         */
* DCL MSGLNNOP FIXED(15) CONSTANT(17);  /* LINE NOT OPEN             */
* DCL MSGINVOP FIXED(15) CONSTANT(18);  /* INVALID OPERAND           */
* DCL MSGINCUR FIXED(15) CONSTANT(173); /* INVALID CONTROL UNIT OR
*                                          RESOURCE                  */
* DCL MSGSESLM FIXED(15) CONSTANT(192); /* SESSION LIMIT MODIFIED    */
* DCL MSGBHSAM FIXED(15) CONSTANT(193); /* BLOCK HANDLER SET
*                                          ASSOCIATION MODIFIED      */
* DCL MSGCCCFC FIXED(15) CONSTANT(199); /* COMMUNICATIONS CONTROLLER
*                                          COMMAND FAILED TO COMPLETE
*                                                                    */
* DCL MSGCINCC FIXED(15) CONSTANT(201); /* COMMAND INVALID FOR
*                                          COMMUNICATIONS CONTROLLER */
* DCL MSGTRALM FIXED(15) CONSTANT(208); /* TRANSMISSION LIMIT MODIFIED
*                                                                    */
./ ADD NAME=TMSKD
*        %GOTO PLSMSK;                  /* BILINGUAL HEADER
         MACRO
         TMSKD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A-000000-999999                                              @Y17XANU
IEDMSK   DSECT
*
*        OPERATOR CONTROL TCHNG MASK DSECT
*
MSKNUM   DS    H .                 NUMBER OF MASKS
MSKMASK  DS    0XL2 .              PROTECTION MASK
MSK1     DS    XL1 .                    MASK BYTE 1
MSKBYTE1 EQU   X'FF' .                   USED TO CHECK IF BYTES 4-7
*                                        OF TTE ARE PROTECTED
MSKCNT   EQU   X'80' .                   CHECK TO ALLOW TLIST COUNT
*                                        MODIFICATION
MSKLIST  EQU   X'40' .                   CHECK TO ALLOW TLIST ENTRIES
*                                        MODIFICATION
*        EQU   X'20'-X'01' .             RESERVED
MSK2     DS    XL1 .                    MASK BYTE 2
MSKBYTE2 EQU   X'F0' .                   USED TO CHECK IF BYTES 8-F
*                                        OF TTE ARE PROTECTED
*        EQU   X'80'-X'10' .             RESERVED
MSKOPT   EQU   X'08' .                   USED TO CHECK IF OPTION
*                                        FIELDS ARE PROTECTED
*                                        (MSKBYTE2)
MSKDVDP  EQU   X'04' .                   USED TO CHECK IF DEVICE
*                                        DEPENDENT FIELDS ARE PROTECTED
*        EQU   X'02'-X'01' .             RESERVED
*
*        THIS DSECT CONSISTS OF 9 MASKS, REPRESENTING 9 TTE TYPES,
*        IN THE FOLLOWING ORDER:
*
*              1 - 270X TERMINAL (DIAL, NON DIAL, LOG)
*              2 - 3705 BSC/SS TERMINAL
*              3 - PU
*              4 - LU
*              5 - SSCP
*              6 - NCP
*              7 - 3705 LINE
*              8 - LIST
*              9 - TPROCESS
*
MSKLEN   EQU   *-MSKMASK .              LENGTH OF MASK ENTRY
         MEND
*        */
*%PLSMSK: ;
*DECLARE 1 IEDMSK BDY(WORD) BASED(IEDMSKP),
*/*                                                                  */
*/*      OPERATOR CONTROL TCHNG MASK DSECT                           */
*/*                                                                  */
*   2 MSKNUM FIXED(15),                 /* NUMBER OF MASKS           */
*   2 MSKMASK CHAR(2),                  /* PROTECTION MASK           */
*    3 MSK1 CHAR(1),                    /* MASK BYTE 1               */
*     4 MSKCNT BIT(1),                   /* CHECK TO ALLOW TLIST COUNT
*                                           MODIFICATION             */
*     4 MSKLIST BIT(1),                  /* CHECK TO ALLOW TLIST
*                                           ENTRIES MODIFICATION     */
*     4 *       BIT(6),                  /* RESERVED                 */
*    3 MSK2 CHAR(1),                    /* MASK BYTE 2               */
*     4 *       BIT(4),                  /* RESERVED                 */
*     4 MSKOPT  BIT(1),                  /* USED TO CHECK IF OPTION
*                                           FIELDS ARE PROTECTED
*                                           (MSKBYTE2)               */
*     4 MSKDVDP BIT(1),                  /* USED TO CHECK IF DEVICE
*                                           DEPENDENT FIELDS ARE
*                                           PROTECTED                */
*     4 *       BIT(2);                  /* RESERVED                 */
*
* %MSKLEN='LENGTH(MSKMASK)';            /* LENGTH OF MASK ENTRY      */
*
*/*                                                                  */
*/*      CONSTANTS (MSK1)                                            */
*/*                                                                  */
*DCL MSKBYTE1 BIT(8) CONSTANT('FF'X);   /* USED TO CHECK IF BYTES 4-7
*                                          OF TTE ARE PROTECTED      */
*/*                                                                  */
*/*      CONSTANTS (MSK2)                                            */
*/*                                                                  */
*DCL MSKBYTE2 BIT(8) CONSTANT('F0'X);   /* USED TO CHECK IF BYTES 8-F
*                                          OF TTE ARE PROTECTED      */
*/*      THIS DSECT CONSISTS OF 9 MASKS, REPRESENTING 9 TTE TYPES,   */
*/*      IN THE FOLLOWING ORDER:                                     */
*/*                                                                  */
*/*            1 - 270X TERMINAL (DIAL, NON DIAL, LOG)               */
*/*            2 - 3705 BSC/SS TERMINAL                              */
*/*            3 - PU                                                */
*/*            4 - LU                                                */
*/*            5 - SSCP                                              */
*/*            6 - NCP                                               */
*/*            7 - 3705 LINE                                         */
*/*            8 - LIST                                              */
*/*            9 - TPROCESS                                          */
*/*                                                                  */
./ ADD NAME=TNATD
*        %GOTO PLSNAT;                  /* BILINGUAL HEADER
         MACRO
         TNATD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A-000000-999999                                              @Y17XAXU
         SPACE
IEDNATD  DSECT
*
*        DSECT FOR NETWORK ADDRESS TABLE (NAT)
*
NATODAF  DS    AL2 .                    NETWORK ADDRESS ENTRY
NATLEN   EQU   *-IEDNATD .              LENGTH OF NAT ENTRY
         SPACE 2
         MEND                           */
*%PLSNAT : ;
*DECLARE
*  1 IEDNATD BDY(WORD) BASED(IEDQNATP),
*/*                                                                  */
*/*      DSECT FOR NETWORK ADDRESS TABLE                             */
*/*                                                                  */
*   2 NATODAF BIT(16);                  /* NETWORK ADDRESS ENTRY     */
* %NATLEN='LENGTH(IEDNATD)';            /* LENGTH OF NAT ENTRY       */
*
*%NATEND: ;
*
./ ADD NAME=TNCPID
*        %GOTO NCPPLS;             /* BILINGUAL HEADER
         MACRO
         TNCPID
.*A000000-999999                                               @Y17XAXF
IEDNCP   DSECT
*
*        DSECT FOR NCP DEVICE DEPENDENT INFORMATION
*
NCPLEN   DS    CL1 .               LEN OF DEVICE DEPENDENT INFO
NCPFLAG1 DS    CL1 .               FLAGS
NCPIAUTO EQU   X'80' .                  IPLAUTO=YES SPECIFIED
NCPDAUTO EQU   X'40' .                  DMPAUTO=YES SPECIFIED
NCPBGUP  EQU   X'20' .                  BRINGUP=YES SPECIFIED
NCPREST  EQU   X'10' .                  DO A RESTART
NCPIPLD  EQU   X'08' .                  IPL FOR 3705 HAS BEEN EXECUTED
NCPBKUP  EQU   X'04' .                  BACKUP=YES SPECIFIED
NCPTRACE EQU   X'02' .                  3705 LINE TRACE ACTIVE
*        EQU   X'01' .                  RESERVED
NCPBKUPN DS    CL8 .               BACKUP NAME
NCPTXID  DS    CL8 .               IPL TEXT NAME
NCPDPDCB DS    AL4 .               ADDRESS OF DUMP DCB
NCPCKPT  DS    AL4 .               ADDRESS OF CHECK POINT DCB
NCPLTRAC DS    AL4 .               3705 LINE TRACE TABLE ADDR
NCPILEN  EQU   *-IEDNCP            LEN OF NCP INFO
         MEND
*                                                                    */
*%NCPPLS:;
*DECLARE
*  1 IEDNCP BASED BDY(BYTE),
*/*                                                                  */
*/*      DSECT FOR NCP DEVICE DEPENDENT INFORMATION                  */
*/*                                                                  */
*    2 NCPLEN   CHAR(1),                /* LEN OF DEV DEPENDENT INFO */
*    2 NCPFLAG1 CHAR(1),                /* FLAGS                     */
*      3 NCPIAUTO BIT(1),               /*   IPLAUTO=YES SPECIFIED   */
*      3 NCPDAUTO BIT(1),               /*   DMPAUTO=YES SPECIFIED   */
*      3 NCPBGUP  BIT(1),               /*   BRINGUP=YES SPECIFIED   */
*      3 NCPREST  BIT(1),               /*   DO A RESTART            */
*      3 NCPIPLD  BIT(1),               /*   IPL FOR 3705 EXECUTED   */
*      3 NCPBKUP  BIT(1),               /*   BACKUP=YES SPECIFIED    */
*      3 NCPTRACE BIT(1),               /*   3705 LINE TRACE ACTIVE  */
*      3 *        BIT(1),               /*   RESERVED                */
*    2 NCPBKUPN CHAR(8),                /* BACKUP NAME               */
*    2 NCPTXID  CHAR(8),                /* IPL TEXT NAME             */
*    2 NCPDPDCB PTR(32) BDY(BYTE),      /* ADDRESS OF DUMP DCB       */
*    2 NCPCKPT  PTR(32) BDY(BYTE),      /* ADDRESS OF CKPT DCB       */
*    2 NCPLTRAC PTR(32) BDY(BYTE);      /* 3705 LINE TRACE TABLE ADDR*/
* %NCPILEN='LENGTH(IEDNCP)';            /* LEN OF NCP INFO           */
./ ADD NAME=TNRAD
*        %GOTO PLSNRA;                  /* BILINGUAL HEADER
         MACRO
         TNRAD
.*A000000-999999                                               @Y17XAXF
*
*        ASSEMBER VERSION OF DSECT NOT SUPPORTED
*
         MEND  */
*%PLSNRA:;
*/*                                                                  */
*/*      NEW DSECT FOR 3705 RESTART GETMAIN AREA                     */
*/*                                                                  */
* DECLARE
* 1 IEDNRA BASED(RNRA),
*  2 NRACURR  PTR(31),                  /*RESTART GETMAIN AREA       */
*  2 NRASIZE  FIXED(32),                /*GETMAIN AREA SIZE          */
*  2 NRAR1PTR PTR(31),                  /*READ1 AREA PTR             */
*  2 NRAR2PTR PTR(31),                  /*READ2 AREA PTR             */
*  2 NRAREAD  CHAR(*);                  /*READ AREA                  */
./ ADD NAME=TNSLD
*        %GOTO PLSNSL;                  /* BILINGUAL HEADER
         MACRO
         TNSLD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A-000000-999999                                              @Y17XAXF
.*A274500,588000                                               @OY20296
         SPACE
IEDNNSLD DSECT
NSLSAVE1 DS    F                        USED TO SAVE POINTER DURING
*                                        POST TO REQUEST BUFFERS
NSLSAVE2 DS    F                        USED TO SAVE POINTERS DURING
*                                        POST TO REQUEST BUFFERS
         SPACE
IEDNSLD  EQU   *
*
*        DSECT FOR START/STOP LINE ELEMENT
*
*        IEDNSL USES THESE FIELDS INTERNALLY
NSLOPRE  DS    CL8 .                    OP CONTROL REQ ELEMENT
NSLPLCB  DS    XL1 .                    PLCB RETURN TO OPCTL
NSLPLCBR EQU   X'80' .                   PLCB TO RETURN
*        EQU   X'40'-X'01' .             RESERVED
NSLSAVE  DS    AL3 .                    SAVE POINTER NEEDED ACROSS POST
NSLGPCUS DS    XL1 .                    SWITCH TO DETERMINE WHERE TO
*                                        BEGIN WHEN BUFFER RETURN
NSLNGPST EQU   X'80' .                  TRYING TO STOP A TERMINAL
*                                        FOR STOPTERM REQUEST
NSLGPTSP EQU   X'40' .                  TRYING TO STOP GP TERM
NSLNGPSL EQU   X'20' .                  TRYING TO STOP TERMINAL FOR
*                                        STOPLINE REQUEST
NSLSDIAL EQU   X'10' .                  REDIRVE FOR DIAL WHEN
*                                        REQUESTING A BUFFER DURING
*                                        STOPLINE
NSLDRDRV EQU   X'08' .                  TO RECOGNIZE WHEN TO STOP THE
*                                        LOGICAL TERM FOR CALLOUT DIAL
*        EQU   X'04'-X'01' .            RESERVED
NSLCTTRM DS    AL3 .                    CURRENT TRM
NSLTTCIN DS    H .                      CURRENT TNT INDEX
*        NSLPRIBK AND NSLFLGBK PART OF INTERFACE TO IEDNSL
NSLPRIBK DS    XL1 .                    PRIORITY FIELD
NSLFLGBK DS    XL1 .                    FLAG
NSLERB   DS    0CL14 .                  BUFFER REQUEST ERB
NSLERBIN EQU   NSLERB-IEDNSLD .         ERB INDEX
*        ERB MUST BE X'14' FROM QCB SO THAT IEDQGA CAN POST BUFFER
NSLERQCB DS    A .                      BUFFER REQUEST ERB QCB
NSLERBPR DS    XL1 .                    ERB PRIORITY
NSLELINK DS    AL3 .                    LINK
NSLESTAT DS    XL1 .                    ERB STATUS
*        EQU   X'80'-X'04' .             RESERVED
NSLMPPI  EQU   X'02' .                   TO HAVE THE ERB POSTED BACK TO
*                                         IEDNSL
*        EQU   X'01' .                   RESERVED
NSLBUFFR DS    AL3 .                    BUFFER ADDRESS
NSLUNCNT DS    H .                      UNIT COUNT
*        INTERFACE TO IEDNSL
         DS    XL1 .                    RESERVED
NSLREQTY DS    XL1 .                    REQUEST TYPE
NSLSTRTL EQU   X'01' .                    START LINE
NSLSTOPL EQU   X'02' .                    STOP LINE
NSLSTRTR EQU   X'03' .                    START TERMINAL
NSLSTPTR EQU   X'04' .                    STOP TERMINAL
NSLSTRGP EQU   X'05' .                    START GENERAL POLL
NSLSTPGP EQU   X'06' .                    STOP GENERAL POLL
NSLSTRLU EQU   X'07' .                    START LU
NSLSTMSG EQU   X'08' .                    MIDDLE OF MSG
NSLSTPLI EQU   X'09' .                    STOPLINE,I
NSLCLOSN EQU   X'0B' .                    FLUSH CLOSEDOWN
NSLSTPGB EQU   X'0D'                       STOP GENERAL POLL,B @OY20296
NSLOPCEP DS    0F .                     ADDRESS OF OPCE ASSOCIATED WITH
*                                         A GENERAL POLL REQUEST
NSLGRPNM DS    CL8 .                    GROUP NAME
NSLTTEPT DS    A .                      TTE ADDRESS
*
NSLLEN   EQU   *-IEDNSLD .              NSL LENGTH
NSLNLEN  EQU   IEDNSLD-IEDNNSLD         PREFIX LENGTH
         MEND
*        */
*%PLSNSL : ;
*DECLARE
*  1 IEDNNSLD BDY(WORD) BASED,          /* NEG PREFIX                */
*   2 NSLSAVE1 PTR(31),                 /* USED TO SAVE POINTER DURING
*                                          POST TO REQUEST BUFFER
*                                                                    */
*   2 NSLSAVE2 PTR(31);                 /* USED TO SAVE POINTER DURING
*                                          POST TO REQUEST BUFFERS
*                                                                    */
*
*DECLARE
*  1 IEDNSLD BDY(WORD) BASED (IEDNSLP),
*/*                                                                  */
*/*      DSECT FOR START/STOPLINE ELEMENT                            */
*/*                                                                  */
*/*  IEDNSL USES THESE FIELD INTERNALLY                              */
*   2 NSLOPRE CHAR(8),                  /* OP CONTROL REQ ELEMENT    */
*   2 NSLPLCB  BIT(8),                  /* PLCB RETURN TO OPCTL      */
*    3 NSLPLCBR BIT(1),                 /*  PLCB TO RETURN           */
*    3 *        BIT(7),                 /*  RESERVED                 */
*   2 NSLSAVE  PTR(24),                 /* SAVE POINTER NEEDED ACROSS
*                                          POST                      */
*   2 NSLGPCUS BIT(8),                  /* SWITCH TO DETERMIN WHERE  */
*                                       /*  TO BEGIN WHEN BUFFER RTN */
*     3 NSLNGPST BIT(1),                /* TRYING TO STOP TERMINAL   */
*                                       /*  FOR STOPTERM REQUEST     */
*     3 NSLGPTSP BIT(1),                /* TRYIN TO STOP GP TERM     */
*     3 NSLNGPSL BIT(1),                /* TRYING TO STOP TERMINAL   */
*                                       /*  FOR STOPLINE REQUEST     */
*     3 NSLSDIAL BIT(1),                /* REDIRVE FOR DIAL WHEN
*                                          REQUESTING A BUFFER DURING
*                                          STOP LINE                 */
*     3 NSLDRDRV BIT(1),                /* TO RECOGNIZE WHEN TO STOP
*                                          THE LOGICAL TERM FOR CALLOUT
*                                          DIAL                      */
*     3 *        BIT(3),                /* RESERVED                  */
*   2 NSLCTTRM PTR(24),                 /* CURRENT TRM               */
*   2 NSLTTCIN FIXED(16),               /* CURRENT TTCIN             */
*/*    NSLPRIBK, NSLFLGBK ARE PART OF INTERFACE TO IEDNSL            */
*   2 NSLPRIBK BIT(8),                  /* PRIORITY                  */
*   2 NSLFLGBK BIT(8),                  /* FLAG                      */
*/*    ERB MUST BE X'14' FROM QCB SO THAT IEDQGA CAN POST BUFFER     */
*   2 NSLERB CHAR(14) BDY(WORD),        /* BUFFER REQ ERB            */
*    3 NSLERQCB PTR(31),                /* BUFFER REQ ERB QCB        */
*    3 NSLERBPR BIT(8),                 /* ERB PRIORITY              */
*    3 NSLELINK PTR(24),                /* LINK                      */
*    3 NSLESTAT BIT(8),                 /* ERB STATUS                */
*     4 *        BIT(6),                /*  RESERVED                 */
*     4 NSLMPPI  BIT(1),                /*  TO HAVE THE ERB POSTED   */
*                                       /*   BACK TO IEDNSL          */
*     4 *        BIT(1),                /*  RESERVED                 */
*    3 NSLBUFFR PTR(24),                /* BUFFER ADDRESS            */
*    3 NSLUNCNT FIXED(16),              /* UNIT COUNT                */
*/*    INTERFACE TO IEDNSL                                           */
*   2 *        BIT(8),                  /* RESERVED                  */
*   2 NSLREQTY BIT(8),                  /* REQUEST TYPE              */
*   2 NSLGRPNM CHAR(8) BDY(WORD),       /* GROUP NAME                */
*    3 NSLOPCEP PTR(31),                /* ADDR OF OPCE ASSOCIATED   */
*                                       /*  WITH THIS GENERAL POLL   */
*                                       /*  REQUEST                  */
*    3 *        CHAR(4),                /* RESERVED                  */
*   2 NSLTTEPT PTR(32);                 /* GROUP NAME                */
*
* %NSLLEN='LENGTH(IEDNSLD)';            /* NSL LENGTH                */
* %NSLERBIN='ADDR(NSLERB)-ADDR(IEDNSLD)';/* ERB INDEX                */
* %NSLNLEN='LENGTH(IEDNNSLD)';          /* PREFIX LENGTH             */
*/*                                                                  */
*/* .    NSLREQTY  EQUEST CONSTANTS                                  */
*/*                                                                  */
*DCL NSLSTRTL BIT(8) CONSTANT('01'X);   /* START LINE                */
*DCL NSLSTOPL BIT(8) CONSTANT('02'X);   /* STOP LINE                 */
*DCL NSLSTRTR BIT(8) CONSTANT('03'X);   /* START TERMINAL            */
*DCL NSLSTPTR BIT(8) CONSTANT('04'X);   /* STOP TERMINAL             */
*DCL NSLSTRGP BIT(8) CONSTANT('05'X);   /* START GENERAL POLL        */
*DCL NSLSTPGP BIT(8) CONSTANT('06'X);   /* STOP GENERAL POLL         */
*DCL NSLSTRLU BIT(8) CONSTANT('07'X);   /* START LU                  */
*DCL NSLSTMSG BIT(8) CONSTANT('08'X);   /* MIDDLE OF MSG             */
*DCL NSLSTPLI BIT(8) CONSTANT('09'X);   /* STOPLINE,I                */
*DCL NSLCLOSN BIT(8) CONSTANT('0B'X);   /* FLUSH CLOSEDOWN           */
*DCL NSLSTPGB BIT(8) CONSTANT('0D'X); /* STOP GENERAL POLL,B @OY20296*/
*
./ ADD NAME=TOCTRD
*        %GOTO PLSOCTR;                 /* BILINGUAL HEADER
         MACRO
         TOCTRD
.*A000000-999999                                               @Y17XAXF
IEDOCTR  DSECT
*
*        IPL/DUMP TRAILOR TO OPCE
*
OCTROPCE DS    A .                      OPCE POINTER
OCTRDCB  DS    A .                      DCB POINTER
OCTRLCB  DS    A .                      LCB POINTER
         DS    XL1 .                    RESERVED
OCTRSW   DS    XL1 .                    SWITCHING FLAGS
OCTROUT  EQU   X'80' .                   LOOP CONTROL
OCTRNOS  EQU   X'40' .                   NO SENSE REQUIRED
OCTRBLST EQU   X'20' .                   IPL NO SENSE
OCTRFA   EQU   X'10'                     EXIT TO ACTIVATE REQD @YM05689
OCTRINMF EQU   X'08' .                   FROM MF
*        EQU   X'04'-X'01' .             RESERVED
OCTRRTE  DS    XL1                      ROUTE FLAG
OCTRFC   EQU   X'80' .                   EXIT TO IGCFC10D
OCTRMD   EQU   X'40' .                   EXIT TO IGCMD10D
OCTRMP   EQU   X'20' .                   EXIT TO IGCMP10D
OCTRC0   EQU   X'10' .                   EXIT TO IGCC010D
OCTR09   EQU   X'08' .                   EXIT TO IGC0910D
OCTR07   EQU   X'04' .                   EXIT TO IGC0710D
OCTR00   EQU   X'02'                     EXIT TO IGC0010D
OCTR06   EQU   X'01' .                   EXIT TO IGC0610D
OCTRRTN  DS    XL1 .                    RETURN FLAG
OCTRIP   EQU   X'80' .                   IN PROGRESS
OCTRCH   EQU   X'40' .                   CHAINED OR ATTACHED
*        EQU   X'20'-X'10' .             RESERVED
OCTRERO  EQU   X'08' .                   DUMP ERROR
OCTRERI  EQU   X'04' .                   IPL ERROR
*        EQU   X'02'-X'01' .             RESERVED
OCTRTTE  DS    A .                      TTE POINTER
OCTRDVD  DS    A .                      DEV DEPENDENT FLD PTR
OCTRUCB  DS    A .                      UCB POINTER
OCTRADR  DS    A .                      I/O RETURN ADDR
OCTRSAVE DS    A .                      RETURN ADDRESS FIELD
OCTRLEN  EQU   *-IEDOCTR .              LEN OF TRAILER
         MEND
         */
*%PLSOCTR:;
* DECLARE
*  1 IEDOCTR BASED,
*/*                                                                  */
*/*      IPL/DUMP TRAILER TO OPCE                                    */
*/*                                                                  */
*    2 OCTROPCE PTR(31),                /* OPCE POINTER              */
*    2 OCTRDCB  PTR(31),                /* DCB POINTER               */
*    2 OCTRLCB  PTR(31),                /* LCB POINTER               */
*    2 *        PTR(8),                 /* RESERVED                  */
*    2 OCTRSW   BIT(8),                 /* SWITCHING FLAGS           */
*      3 OCTROUT  BIT(1),               /*  LOOP CONTROL             */
*      3 OCTRNOS  BIT(1),               /*  NO SENSE REQUIRED        */
*      3 OCTRBLST BIT(1),               /*  IPL NO SENSE             */
*      3 OCTRFA   BIT(1),     /* EXIT TO ACTIVATE REQD       @YM05689*/
*      3 OCTRINMF BIT(1),               /*  FROM MF                  */
*      3 *        BIT(3),               /*  RESERVED                 */
*    2 OCTRRTE  PTR(8),                 /* ROUTE FLAG                */
*      3 OCTRFC   BIT(1),               /*  EXIT TO IGCFC10D         */
*      3 OCTRMD   BIT(1),               /*  EXIT TO IGCMD10D         */
*      3 OCTRMP   BIT(1),               /*  EXIT TO IGCMP10D         */
*      3 OCTRC0   BIT(1),               /*  EXIT TO IGCC010D         */
*      3 OCTR09   BIT(1),               /*  EXIT TO IGC0910D         */
*      3 OCTR07   BIT(1),               /*  EXIT TO IGC0710D         */
*      3 OCTR00   BIT(1),               /*  EXIT TO IGC0010D         */
*      3 OCTR06   BIT(1),               /*  EXIT TO IGC0610D         */
*    2 OCTRRTN  BIT(8),                 /* RETURN FLAG               */
*      3 OCTRIP   BIT(1),               /*  IN PROGRESS              */
*      3 OCTRCH   BIT(1),               /*  CHAINED OR ATTAHCED      */
*      3 *        BIT(2),               /*  RESERVED                 */
*      3 OCTRERD  BIT(1),               /*  DUMP ERROR               */
*      3 OCTRERI  BIT(1),               /*  IPL ERROR                */
*      3 *        BIT(2),               /*  RESERVED                 */
*    2 OCTRTTE  PTR(31),                /* TTE POINTER               */
*    2 OCTRDVD  PTR(31),                /* DEV DEPENDENT FLD PTR     */
*    2 OCTRUCB  PTR(31),                /* UCB POINTER               */
*    2 OCTRADR  PTR(31),                /* I/O RETURN ADDR           */
*    2 OCTRSAVE PTR(31);                /* RETURN ADDRESS            */
*%OCTRLENL='LENGTH(IEDOCTR)';           /* LEN OF TRAILER            */
./ ADD NAME=TOPCAVTD
*        %GOTO PLSOPAVT;                             /*
         MACRO
         TOPCAVTD
.*A-000000-999999                                              @X31X8X0
.*C070000,160000,738000,766000                                   X03039
.*D768000                                                        X03039
.*C070000,738000                                               @Z30X8XE
.*A665000                                                      @XA09783
.*A170000,360000,410000,826000,838000                          @Y17XAXU
.*C027001,200000,360000,400000-405000,780000,826000,838000     @Y17XAXU
.*C930000                                                      @Y17XAXU
.*D962000                                                      @Y17XAXU
         SPACE
IEDQOPCD DSECT
         SPACE
*              OPERATOR CONTROL ADDRESS VECTOR TABLE
*              VERSION DATE  JUNE  7, 1974                     @Z30X8XE
         SPACE
OPCDOUBL DS    D .                 WORK SPACE FOR TRANSIENTS
         SPACE
OPCAVTPT DS    A .                 ADDRESS OT TCAM AVT
OPCCOPCE DS    A .                 ADDRESS OF CURRENT ELEMENT (OPCE)
OPCDCBLK DS    A .                 ADDRESS OF DCB, RLN, ADDRESS LOOK-UP
OPCOPTLK DS    A .                 ADDRESS OF OPTION FIELD LOOK-UP CODE
OPCTOFLK DS    A .                 ADDRESS TO GET TNT OFFSET,TERM ENTRY
OPCIPLAD DS    A .                      ADDRESS OF IPL DCB     @Y17XAXU
         DS    A .                 UNUSED                        X03039
OPCLCB   DS    A .                 ADDRESS OF LCB SET UP ROUTINE
OPCPGCK  DS    A .                  IN-PROG CHECK AND SET RTN  @Y17XAXU
OPCTNTEA DS    A .                  FIND TNT ROUTINE           @Y17XAXU
OPCPSTWT DS    A .                 TPOST-TWAIT RTN             @Y17XAXU
*                                  A(POSTWAIT)                 @Y17XAXU
         SPACE
OPCTRMWA DS    F .                 WORKAREA FOR TERM ENTRY ADDRESS
OPCSAVE  DS    18F .               OP CTL SAVE AREA            @Y17XAXU
         SPACE
*   DO NOT INSERT CARDS OR MOVE CARDS BETWEEN THESE COMMENTS          *
OPCQCBAD DS    A .                 ADDRESS OF OPC QCB
OPCRSAVE DS    2F .                BASE AND RETURN SAVEAREA (IGC0010D)
OPCWORK  DS    A .                 ADDRESS OF RESIDENT WORKAREA
OPCWRKSZ DS    H .                 SIZE OF RESIDENT WORKAREA
OPCFLAG1 DS    X .                 FLAG BYTE FOR TRANSIENT USE
OPCFLAG2 DS    X .                 FLAG BYTE FOR TRANSIENT USE
OPCBFERB DS    4F .                BUFFER REQUEST ERB
*   DO NOT INSERT CARDS OR MOVE CARDS BETWEEN THESE COMMENTS          *
         SPACE
OPCCKERB DS    4F .                CHECKPOINT REQUEST ERB
OPCAQCTL DS    0F .                SVC 102 PARAMETER LIST      @Y17XAXF
OPCAQWD1 DS    0F .                 LIST WORD 1                @Y17XAXF
OPCAQREQ DS    CL1 .                 SVC REQUEST CODE          @Y17XAXF
OPCAQFST DS    AL3 .                 FIRST ADDR OR INDEX       @Y17XAXF
OPCAQWD2 DS    0F .                 LIST WORD 2                @Y17XAXF
OPCAQRQ2 DS    CL1 .                 ACTION CODE               @Y17XAXF
OPCAQSEC DS    AL3 .                 SECOND ADDR OR INDEX      @Y17XAXF
OPCAQWD3 DS    0F .                 LIST WORD 3                @Y17XAXF
OPCAQRQ3 DS    CL1 .                 ACTION CODE               @Y17XAXF
OPCAQLST DS    AL3 .                 LAST ADDR OR INDEX        @Y17XAXF
OPCWAIT  DS    3F .                OP CONTROL INPUT WAIT LIST
OPCXCTL  DS    2A .                LIST FORM OF XCTL, USED BY TRANSIENT
OPCLDNME DS    0CL8 .               XCTL MODULE NAME           @Y17XAXU
         DS    CL3'IGC' .           MODULE NAME PREFIX         @Y17XAXU
OPCMODID DS    CL2 .                MODULE ID                  @Y17XAXU
         DS    CL3'10D' .           MODULE NAME SUFFIX         @Y17XAXU
         SPACE
OPCWAITC DS    F .                 QCW FOR CHECKPOINT WAIT QUEUE
OPCWAITL DS    F .                 QCW FOR LCB WAIT LIST
OPCWAITN DS    F .                  FID0 RESP WAIT CHAIN       @Y17XAXU
OPCWAITO DS    F .                      OUTPUT QUEUE QCW       @Y17XAXU
OPCWAITP DS    A .                 SSCP OPCE Q FOR ACTPU'S     @Y17XAXU
OPCWAITR DS    F .                 QCW FOR RESOURCE WAIT QUEUE
OPCWAITA DS    F .                  QCW FOR ACT/DEACT WAIT CHN @Y17XAXU
OPCCKPTF DS    F .                  FIRST OPCE FOR CHECKPT     @Y17XAXU
OPCCKPTL DS    F .                  LAST OPCE FOR CHECKPT      @Y17XAXU
OPCHORT  DS    F .                  CONHORT SEARCH ROUTINE     @Y17XAXU
OPCHORTG DS    F .                  COHORTG SEARCH ROUTINE     @Y17XAXU
OPCSCNC  DS    F .                  FID1 EXPEDITE FLOW OR
*                                   TS PROFILE 1 WAIT CHAIN    @Y17XAXU
OPCFMDFC DS    F .                  ALL OTHER FID1'S
*                                   WAIT CHAIN                 @Y17XAXU
         SPACE
OPCNEXT  DS    A .                 ADDRESS OF ELEMENT NOW CURRENT
OPCGETBF DS    A .                 ADDRESS OF BUFFER REQUEST ROUTINE
OPCFREBF DS    A .                 ADDRESS OF BUFFER UNIT FREE ROUTINE
         SPACE
OPCBFREQ DS    H .                 NO. OF UNITS NEEDED BY WAIT LIST
OPCHA8   DS    H .                 HALF WORD SET TO EIGHT
OPCCLNTS DS    X .                 T&S SWITCH FOR QUEUE SEARCH @YM07310
OPCIPLCT DS    X .                 COUNT OF 3705'S BEING IPLED @YM08447
OPCAVBUF DS    H .                 NO. OF UNITS IN OPC FREE POOL
         SPACE
OPCBFIRS DS    F .                 ADDRESS OF FIRST UNIT IN FREE POOL
OPCBFEND DS    F .                 CURRENT UNIT END (IGC0110D)
         SPACE
OPCSPEC  DS    X .                 FLAGS SET ONLY BY IEDQCA
         SPACE
*   BIT DEFINITIONS FOR OPCSPEC FIELD                                 *
OPCALTD  EQU   X'80' .                  ALTERNATE DESTINATION SPECIFIED
OPCPART  EQU   X'40' .                  PARTIAL UNIT REQUEST
OPCRSTRT EQU   X'20' .                  RESTART IN PROGRESS
OPCFRMCA EQU   X'10' .                  INITIAL ENTRY (TO 00)    S22024
*                                       FROM IEDQCA              S22024
         SPACE
OPCOQSW  DS    X .                 SWITCH, INDICATES OUTPUT BUSY (FF)
OPCHNEND DS    2H .                EXECUTED TEST FOR END OF BUFFER UNIT
OPCSTCBS DS    X .                 SWITCH TO INDICATE STCB BUSY (FF)
OPCEND   DS    X .                 TEST BYTE FOR END OF BUFFER
OPCCKCIB DS    A                        ADDR OF CMD CHECK RTN  @YA04391
OPPOLSTP DS    A  .                     ADDRESS OF POLLSTOP    @XA09783
OPCRQCNT DS    H .                 FID1 SC/NC COUNTER/SEQ      @Y17XAXU
OPCADGOT DS    H .                 NO OF BUFF UNITS A/D USING  @Y17XAXF
OPCWRKSP DS    7F .                INTERNAL SAVE AREA          @Y17XAXF
OPCBUFWT DS    A .                 ANCHOR FOR REDRIVE OPCE'S   @Y17XAXF
*                                   WAITING ON BUFFER UNITS    @Y17XAXF
OPCDECR  DS    A .                 ADDR OF ADGOT DECREMENT RTN @Y17XAXF
*                                   A(DECRCT)                  @Y17XAXF
OPCAPXTL DS    A (OPCXCTL2)        ADDR TO XCTL LIST FOR APPL  @Y17XAXF
*                                   PROGRAM USAGE              @Y17XAXF
OPCTOTCK DS    A .                 @ TOTE HIERARCHY SCAN RTN   @Y17XAXF
OPCWAITV DS    A .                 VARY WAIT CHAIN FOR 3705
*                                  RESOURCES                   @Y17XAXF
*
OPCPWCOB DS    0CL12 .             OPERATOR CONTROL QCB        @YM08403
OPCPWQCB DS    0F .                                            @YM08403
OPCPWVTO DS    XL1 .               VTO                         @YM08403
OPCPWCHN DS    AL3 .               CHAIN OF ELEMENTS           @YM08403
OPCPWECB DS    0F .                ECB                         @YM08403
OPCPWCCC DS    XL1 .               COMPLETION CODE             @YM08403
         DS    AL3 .               UNUSED                      @YM08403
         DS    XL1 .               UNUSED                      @YM08486
         DS    AL3 .               NEXT STCB                   @YM08486
OPCSCOFF EQU   X'04' .              ENTRY OFFSET IN OPCDCBLK   @Y17XAXU
         DS    140F .                   RESIDENT WORKAREA      @Y17XAXF
         DS    XL8 .                    XCTL FIELD             @Y17XAXF
         DS    XL152 .                  LCB FIELD              @Y17XAXF
         DS    XL84 .                   SCB FIELD              @Y17XAXF
OPCDSRWT DS    F .                 DISPLAY STORE QUEUE         @ZM47883
OPCBOTTM EQU   *                        END OF MAPPING         @Y17XAXU
OPCLEN   EQU   OPCBOTTM-IEDQOPCD .      SIZE OF MAPPING        @Y17XAXU
         SPACE 2
         MEND ,                                           */
*%PLSOPAVT:;
*/*                                                          @Y17XAXF*/
*/*  COMMANDS ENTERED FROM CONSOLE OR TERMINAL               @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*DCL OCVARY BIT(8) CONSTANT('28'X);     /*VARY COMMAND       @Y17XAXF*/
*DCL OCHALT BIT(8) CONSTANT('3C'X);     /*HALT COMMAND       @Y17XAXF*/
*DCL OCMODIFY BIT(8) CONSTANT('44'X);   /*MODIFY COMMAND     @Y17XAXF*/
*DCL OCDSPLAY BIT(8) CONSTANT('68'X);   /*DISPLAY COMMAND    @Y17XAXF*/
*DCL OCHOLD BIT(8) CONSTANT('6C'X);     /*HOLD COMMAND       @Y17XAXF*/
*DCL OCRLEASE BIT(8) CONSTANT('70'X);   /*RELEASE COMMAND    @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*  TOTE OR MPP COMMANDS                                    @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*DCL OCCLOSEQ BIT(8) CONSTANT('10'X);   /* CLOSEDOWN - QUICK @Y17XAXF*/
*DCL OCCLOSEF BIT(8) CONSTANT('11'X);   /* CLOSEDOWN - FLUSH @Y17XAXF*/
*DCL OCSTARTL BIT(8) CONSTANT('40'X);   /* START LINE CMD    @Y17XAXF*/
*DCL OCSTOPL BIT(8) CONSTANT('41'X);    /* STOP LINE COMMAND @Y17XAXF*/
*DCL OCSTARTB BIT(8) CONSTANT('45'X);   /* START TERM (BOTH) @Y17XAXF*/
*DCL OCSTARTT BIT(8) CONSTANT('46'X);   /* TOTE START TERM   @Y17XAXF*/
*DCL OCSTOPB BIT(8) CONSTANT('47'X);    /* STOP TERM (BOTH)  @Y17XAXF*/
*DCL OCDEACT BIT(8) CONSTANT('48'X);    /* TOTE DEACTIVATE   @Y17XAXF*/
*DCL OCICHNG BIT(8) CONSTANT('49'X);    /* ICHNG COMMAND     @Y17XAXF*/
*DCL OCTCHNG BIT(8) CONSTANT('56'X);    /* TCHNG COMMAND     @Y17XAXF*/
*DCL OCMRLSE BIT(8) CONSTANT('87'X);    /* MRELEASE COMMAND  @Y17XAXF*/
*DCL OCHOLDT BIT(8) CONSTANT('88'X);    /* TOTE HOLD COMMAND @Y17XAXF*/
*DECLARE
*  1 IEDQOPCD BDY(DWORD) BASED(ROPCAVT),
*
*/*            OPERATOR CONTROL ADDRESS VECTOR TABLE                 */
*/*            VERSION DATE  JUNE  7, 1974                    Y30X8XE*/
*
*   2 OPCDOUBL    CHAR(8),               /* . WORK SPACE FOR
*                                           TRANSIENTS               */
*
*   2 OPCAVTPT    PTR(31),               /* . ADDRESS OT TCAM AVT    */
*   2 OPCCOPCE    PTR(31),               /* . ADDRESS OF CURRENT
*                                           ELEMENT (OPCE)           */
*   2 OPCDCBLK    PTR(31),               /* . ADDRESS OF DCB, RLN,
*                                           ADDRESS LOOK-UP          */
*   2 OPCOPTLK    PTR(31),               /* . ADDRESS OF OPTION
*                                           FIELD LOOK-UP CODE       */
*   2 OPCTOFLK    PTR(31),               /* . ADDRESS TO GET TNT
*                                           OFFSET,TERM ENTRY        */
*   2 OPCIPLAD    PTR(31),              /* ADDR OF IPL DCB   @Y17XAXU*/
*   2 *           PTR(31),               /* . UNUSED           X03039*/
*   2 OPCLCB      PTR(31),               /* . ADDRESS OF LCB SET UP
*                                           ROUTINE                  */
*   2 OPCPGCK     PTR(31),           /* . IN-PROG CHECK AND
*                                       SET ROUTINE          @Y17XAXU*/
*   2 OPCTNTEA    PTR(31),           /* . FIND TNT RTN       @Y17XAXU*/
*   2 OPCPSTWT    PTR(31),           /* TPOST-TWAIT RTN
*                                       ROUTINE              @Y17XAXF*/
*   2 OPCTRMWA    PTR(31),               /* . WORKAREA FOR TERM
*                                           ENTRY ADDRESS            */
*   2 OPCSAVE (18) FIXED(31),        /* OP CTL SAVE AREA     @Y17XAXU*/
*
*/* DO NOT INSERT CARDS OR MOVE CARDS BETWEEN THESE COMMENTS         */
*   2 OPCQCBAD    PTR(31),               /* . ADDRESS OF OPC QCB     */
*   2 OPCRSAVE (2) PTR(31),              /* . BASE AND RETURN
*                                           SAVEAREA (IGC0010D)      */
*   2 OPCWORK     PTR(31),               /* . ADDRESS OF RESIDENT
*                                           WORKAREA                 */
*   2 OPCWRKSZ    FIXED(15),             /* . SIZE OF RESIDENT
*                                           WORKAREA                 */
*   2 OPCFLAG1    CHAR(1),               /* . FLAG BYTE FOR
*                                           TRANSIENT USE            */
*   2 OPCFLAG2    CHAR(1),               /* . FLAG BYTE FOR
*                                           TRANSIENT USE            */
*   2 OPCBFERB (4) FIXED(31),            /* . BUFFER REQUEST ERB    */
*/* DO NOT INSERT CARDS OR MOVE CARDS BETWEEN THESE COMMENTS        */
*
*   2 OPCCKERB (4) FIXED(31),            /* . CHECKPOINT REQUEST ERB */
*   2 OPCAQCTL (3) FIXED(31),     /* SVC 102 PARAMETER LIST  @Y17XAXF*/
*   2 OPCWAIT  (3) FIXED(31),            /* . OP CONTROL INPUT WAIT
*                                           LIST                     */
*   2 OPCXCTL  (2) PTR(31),              /* . LIST FORM OF XCTL,
*                                           USED BY TRANSIENT        */
*   2 OPCLDNME    CHAR(8),           /* . XCTL MOD NAME      @Y17XAXU*/
*    3 *          CHAR(3),           /* . MODULE NAME
*                                       PREFIX               @Y17XAXU*/
*    3 OPCMODID   CHAR(2),           /* . MODULE ID          @Y17XAXU*/
*    3 *          CHAR(3),           /* . MODULE NAME
*                                       SUFFIX               @Y17XAXU*/
*
*   2 OPCWAITC    PTR(31),               /* . QCW FOR CHECKPOINT
*                                           WAIT QUEUE               */
*   2 OPCWAITL    PTR(31),               /* . QCW FOR LCB WAIT LIST  */
*   2 OPCWAITN    PTR(31),           /* . FID0 RESPONSE
*                                       WAIT CHAIN           @Y17XAXU*/
*   2 OPCWAITO    PTR(31),               /* . OUTPUT QUEUE QCW       */
*   2 OPCWAITP    PTR(31),           /* SSCP OPCE Q FOR
*                                       ACTPU'S              @Y17XAXU*/
*   2 OPCWAITR    PTR(31),               /* . QCW FOR RESOURCE WAIT
*                                           QUEUE                    */
*   2 OPCWAITA   PTR(31),            /* . QCW FOR ACT/DEACT
*                                       WAIT CHAIN           @Y17XAXU*/
*   2 OPCCKPTF   PTR(31),            /* . FIRST OPCE FOR
*                                       CHECKPOINT           @Y17XAXU*/
*   2 OPCCKPTL   PTR(31),            /* . LAST OPCE FOR
*                                       CHECKPOINT           @Y17XAXU*/
*   2 OPCHORT    PTR(31),            /* . COHORT SEARCH
*                                       ROUTINE              @Y17XAXU*/
*   2 OPCHORTG   PTR(31),            /* . COHORTG SEARCH
*                                       ROUTINE              @Y17XAXU*/
*   2 OPCSCNC    PTR(31),            /* . FID1 EXPEDITE FLOW
*                                         OR TS PROFILE 1
*                                         WAIT CHAIN         @Y17XAXU*/
*   2 OPCFMDFC   PTR(31),            /* . ALL OTHER FID1'S
                                          WAIT CHAIN         @Y17XAXU*/
*
*   2 OPCNEXT     PTR(31),               /* . ADDRESS OF ELEMENT NOW
*                                           CURRENT                  */
*   2 OPCGETBF    PTR(31),               /* . ADDRESS OF BUFFER
*                                           REQUEST ROUTINE          */
*   2 OPCFREBF    PTR(31),               /* . ADDRESS OF BUFFER UNIT
*                                           FREE ROUTINE             */
*
*   2 OPCBFREQ    FIXED(15),             /* . NO. OF UNITS NEEDED BY
*                                           WAIT LIST                */
*   2 OPCHA8      FIXED(15),             /* . HALF WORD SET TO EIGHT */
*   2 OPCCLNTS    BIT(8),                /* TEST-&-SET SWITCH FOR    */
*                                        /* QUEUE SEARCH     @YM07310*/
*   2 OPCIPLCT    FIXED(8),              /* COUNT OF 3705'S BEING IPLED
*                                                            @YM08447*/
*   2 OPCAVBUF    FIXED(15),             /* . NO. OF UNITS IN OPC
*                                           FREE POOL                */
*
*   2 OPCBFIRS    PTR(31),               /* . ADDRESS OF FIRST UNIT
*                                           IN FREE POOL             */
*   2 OPCBFEND    PTR(31),               /* . CURRENT UNIT END
*                                           (IGC0110D)               */
*
*   2 OPCSPEC     CHAR(1),               /* . FLAGS SET ONLY BY
*                                           IEDQCA                   */
*
*/* BIT DEFINITIONS FOR OPCSPEC FIELD                                */
*    3 OPCALTD  BIT(1),                  /* . ALTERNATE DESTINATION
*                                           SPECIFIED                */
*    3 OPCPART  BIT(1),                  /* . PARTIAL UNIT REQUEST   */
*    3 OPCRSTRT BIT(1),                  /* . RESTART IN PROGRESS    */
*    3 OPCFRMCA  BIT(1),                 /* INITIAL ENTRY (TO 00)
*                                         FROM IEDQCA          S22024*/
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*    3 *        BIT(1),                  /* RESERVED                 */
*
*   2 OPCOQSW     CHAR(1),               /* . SWITCH, INDICATES
*                                           OUTPUT BUSY (FF)         */
*   2 OPCHNEND (2) FIXED(15),            /* . EXECUTED TEST FOR END
*                                           OF BUFFER UNIT           */
*   2 OPCSTCBS    CHAR(1),               /* . SWITCH TO INDICATE
*                                           STCB BUSY (FF)           */
*   2 OPCEND    CHAR(1),         /* TEST BYTE FOR END OF     @Y17XAXU
*                                           BUFFER                   */
*   2 OPCCKCIB  PTR(31),                  /*ADDR OF CMD REMOV@YA04391*/
*   2 OPPOLSTP   PTR(31),            /* . ADDR OF POLSTOP
*                                                            @YA04391*/
*   2 OPCRQCNT   FIXED(15),             /* FID1 SC/NC CTR/SEQ
*                                       NUMBER               @Y17XAXU*/
*   2 OPCADGOT   FIXED(16),             /* NO OF BUFF UNITS  @Y17XAXF*/
*                                       /*  A/D USING        @Y17XAXF*/
*   2 OPCWRKSP(7) PTR(31),              /* INTERNAL SAV AREA @Y17XAXF*/
*   2 OPCBUFWT    PTR(31),              /* ANCHOR FOR REDRIVE OPCE'S */
*                                       /*  WAITING ON BUFFER UNITS  */
*                                       /*                   @Y17XAXF*/
*   2 OPCDECR     PTR(31),              /* ADDR OF ADGOT DECREMENT   */
*                                       /*  ROUTINE          @Y17XAXF*/
*   2 OPCAPXTL    PTR(31),              /* ADDR TO XCTL LIST FOR     */
*                                       /*  APPL PGM USAGE   @Y17XAXF*/
*   2 OPCTOTCK    PTR(31),              /* ADDR OF TOTE HIERARCHY    */
*                                       /* SCAN ROUTINE      @Y17XAXF*/
*   2 OPCWAITV    PTR(31),              /* VARY WAIT CHAIN FOR
*                                          3705 RESOURCES    @Y17XAXF*/
*   2 OPCPWCOB BDY(WORD),               /* OPERATOR CNTL QCB @YM08403*/
*    3 OPCPWQCB,                        /*                   @YM08403*/
*     4 OPCPWVTO CHAR(1),               /* VTO               @YM08403*/
*     4 OPCPWCHN PTR(24),               /* CHAIN OF ELEMENTS @YM08403*/
*    3 OPCPWECB,                        /* ECB               @YM08403*/
*     4 OPCPWCCC CHAR(1),               /* COMPLETION CODE   @YM08403*/
*     4    *     PTR(24),               /* UNUSED            @YM08403*/
*    3   *      CHAR(1),                /* UNUSED            @YM08486*/
*    3   *      PTR(24),                /* NEXT STCB         @YM08486*/
*   2 *           CHAR(560),            /* RESIDENT WORKAREA @Y17XAXF*/
*   2 *           CHAR(8),              /* XCTL FIELD        @Y17XAXF*/
*   2 *           CHAR(152),            /* LCB FIELD         @Y17XAXF*/
*   2 *           CHAR(84),             /* SCB FIELD         @Y17XAXF*/
*   2 OPCDSRWT FIXED(31),               /* DSPLY STORE QUEUE @ZM47883*/
*   2 OPCBOTTM   CHAR(0);               /* END OF MAPPING    @Y17XAXU*/
* %OPCLEN='LENGTH(IEDQOPCD)';           /* SIZE OF MAPPING   @Y17XAXU*/
*/*      CONSTANTS                                                   */
*
*DCL OPCSCOFF BIT(8) CONSTANT('04'X); /* ENTRY OFFSET IN
*                                        OPCDCBLK ROUTINE    @Y17XAXU*/
* DECLARE
*    1 OPCAQWD  DEF(OPCAQCTL),
*     2 OPCAQWD1 FIXED(31),        /* LIST WORD 1            @Y17XAXF*/
*      3 OPCAQREQ CHAR(1),         /*  SVC REQUEST CODE      @Y17XAXF*/
*      3 OPCAQFST PTR(24),         /*  FIRST ADDR OR INDEX   @Y17XAXF*/
*     2 OPCAQWD2 FIXED(31),        /* LIST WORD 2            @Y17XAXF*/
*      3 OPCAQRQ2 CHAR(1),         /*  ACTION CODE           @Y17XAXF*/
*      3 OPCAQSEC PTR(24),         /*  SECOND ADDR OR INDEX  @Y17XAXF*/
*     2 OPCAQWD3 FIXED(31),        /* LIST WORD 3            @Y17XAXF*/
*      3 OPCAQRQ3 CHAR(1),         /*  ACTION CODE           @Y17XAXF*/
*      3 OPCAQLST PTR(24);         /*  LAST ADDR OR INDEX    @Y17XAXF*/
./ ADD NAME=TOPCD
         MACRO
         TOPCD
IEDQOPC  DSECT
.*             VERSION DATED JULY 24, 1970
OPCINPUT DS    A .                      ADDRESS OF INPUT DATA
OPCAVTAD DS    A .                      ADDRESS OF TCAM AVT
OPCDOUBL DS    D .                      DOUBLEWORD WORK AREA
OPCWORK  DS    A .                      FULLWORD WORK AREA
OPCEPS   DS    8X .                     EPLOC FOR C1
         DS     3X
OPCCOUNT DS    FL1 .                    COUNT OR RETURN CODE     STCAM4
OPCSAVE1 DS    18F .                    IEDQCA SAVE AREA
OPCSAVE2 DS    0FL10 .                  PARTIAL SAVE - WORK AREA STCAM4
         DS    8F .                                              STCAM4
OPCDATA  DS    F .                                               STCAM4
         DS    F .                                               STCAM4
OPCPPL   DS    8X .                     POST PARAMETER LIST - AQCTL
OPCSCAN  DS    A .                      ADDR OF IEDQCA02 - SCAN
OPCERMSG DS    49C .                    CANCEL COMMAND MESSAGE
OPCBITSW DS    X .                      OP CTL BIT SWITCHES
OPCCONSN EQU   X'80' .                  SOURCE IS CONSOLE
OPCMPPN  EQU   X'40' .                  SOURCE IS APPLICATION PROG
OPCMCPN  EQU   X'20' .                  SOURCE IS MSG CONTROL
OPCPROCN EQU   X'10' .                  PROCESS BIT
OPCFRSTN EQU   X'08' .                  FIRST-TIME BIT
OPCLCLN  EQU   X'04' .                  LOCAL WAIT BIT
OPCQUCKN EQU   X'02' .                  ON - CLOSEDOWN IS QUICK
OPCTEMPN EQU   X'01' .                  WORK BIT
OPCPROCF EQU   X'EF' .                                           STCAM4
OPCFRSTF EQU   X'F7' .                                           STCAM4
OPCCLCLF EQU   X'FB' .                                           STCAM4
OPCFLSHF EQU   X'FD' .                  OFF-FLUSH CLOSEDOWN      STCAM4
OPCTEMPF EQU   X'FE' .                                           STCAM4
         DS    X .                      ONE-BYTE WORK AREA - IEDQCA
OPCCKBIT DS    X .                      CHECKPOINT/RESTART BITS
OPCRSTN  EQU   X'80' .                  RESTART IN PROGRESS
OPCCKPTN EQU   X'40' .                  CHECKPOINT TO BE DONE
OPCINVN  EQU   X'20' .                  CHECKPOINT FOR INVLISTS
OPCRSTF  EQU   X'7F' .                                           STCAM4
OPCCKPTF EQU   X'BF' .                                           STCAM4
OPCINVF  EQU   X'DF' .                                           STCAM4
OPCCKELE DS    0CL32 .                  COMMON INPUT AREA        STCAM4
OPCED    DS    CL1 .                                             STCAM4
OPCIND   DS    FL1 .                                             STCAM4
OPCBIT1  DS    XL1 .                                             STCAM4
OPCBIT2  DS    XL1 .                                             STCAM4
OPCLEN   DS    FL1 .                                             STCAM4
OPCRLN   DS    CL3 .                                             STCAM4
OPCTNME  DS    CL8 .                                             STCAM4
OPCVBCD1 DS    CL1 .                                             STCAM4
OPCVBCD2 DS    CL1 .                                             STCAM4
OPCFLG   DS    XL1 .                                             STCAM4
OPCINFO  DS    XL1 .                                             STCAM4
OPCSNSE  DS    XL2 .                                             STCAM4
OPCOTHR  DS    CL2 .                                             STCAM4
OPCOPFLD DS    CL8 .                                             STCAM4
OPCMISC  DS    0X .                     MISCELLANEOUS DATA - IEDQCA
*
*              OPERATOR CONTROL EQUATES
*
OPCFOXES EQU   X'FF' .                                           STCAM4
OPCOSMOD EQU   X'44' .                  OS VERB CODE FOR MODIFY  STCAM4
OPCFIXT  EQU   X'2A' .                  1ST ENTRY OFFSET IN TNT  STCAM4
OPCTXTLN EQU   X'20' .                  LENGTH OF CIB            STCAM4
OPCREG1  EQU   X'18' .                  OFFSET TO REG1 IN S.A.   STCAM4
OPCFLUSH EQU   X'11' .                  FLUSH HALT CODE          STCAM4
OPCQUICK EQU   X'10' .                  QUICK HALT CODE          STCAM4
OPCTEN   EQU   X'0A' .                                           STCAM4
OPCNINE  EQU   X'09' .                                           STCAM4
OPCEIGHT EQU   X'08' .                  DOUBLE-WORD OFFSET       STCAM4
OPCSEVEN EQU   X'07' .                                           STCAM4
OPCSIX   EQU   X'06' .                                           STCAM4
OPCFIVE  EQU   X'05' .                                           STCAM4
OPCFOUR  EQU   X'04' .                  FULLWORD OFFSET          STCAM4
OPCTHREE EQU   X'03' .                                           STCAM4
OPCTWO   EQU   X'02' .                  HALFWORD OFFSET          STCAM4
OPCONE   EQU   X'01' .                  BYTE OFFSET, INITIAL CT. STCAM4
OPCZERO  EQU   X'00' .                                           STCAM4
         MEND
./ ADD NAME=TOPCED
*        %GOTO PLSOPCE;                             /*
         MACRO
         TOPCED
.*A-000000-999999                                              @X31X8X0
.*C063000,919800,970800                                        @Z30X8XE
.*C108000,144000,513000,765000,810000,828000,909000,938000     @Y17XAXU
.*C953000,959000,966000,997200                                 @Y17XAXU
.*A108000,144000,513000,765000,810000,828000,909000,938000     @Y17XAXU
.*A953000,959000,966000,997200                                 @Y17XAXU
.*A959200,953700,836000,999140,855000,607800,997800,966000     @Y17XAXF
.*A909000                                                      @Y17XAXF
.*D953100-953500,766000-768000                                 @Y17XAXF
.*C774000,828000-829000,973000-980000                          @Y17XAXF
.*A608375,997842                                               @OY19405
IEDOPC   DSECT                                                 @Y17XAXF
IEDQOPCN EQU   *                        OPCE NEG PREFIX        @Y17XAXF
OCLDNME  DS    0CL8 .                   LOAD MODULE MISMATCH   @Y17XAXF
*                                        NAME                  @Y17XAXF
OCLINTTE DS    0F .                     LINE TTE ADDR (M6-MB)  @Y17XAXF
OCRESPCT DS    CL2 .                    OUTSTANTDING RSP CNT   @Y17XAXF
OCREQFLG DS    X .                      OP SERV REQ FLAG       @Y17XAXF
OCFLUSHZ EQU   X'80' .                   Z,TP,FLUSH REQUEST FOR DEACT
*                                         NCP                  @Y17XAXF
*        EQU   X'40'-X'20' .             RESERVED              @Y17XAXF
OCADNCP  EQU   X'10' .                   NCP ACT/DEACT COMMAND @Y17XAXF
OCPARTAL EQU   X'08' .                   PARTIAL ACT FLAG      @Y17XAXF
OCDCARD  EQU   X'04' .                   DISCARD FLAG          @Y17XAXF
OCFORCE  EQU   X'02' .                   FORCE FLAG            @Y17XAXF
OCIDLE   EQU   X'01' .                   IDLE FLAG             @Y17XAXF
OCPREFLG DS    X .                      GENERAL FLAG BYTE      @Y17XAXF
OCBFREQ  EQU   X'80'                     CLEAUP BUFF REQUESTED @Y17XAXF
OCRSPSNT EQU   X'40'                     CLEANUP RESPONSE SENT @Y17XAXF
OCREPOST EQU   X'20'                     CLEANUP REPOST REQ    @Y17XAXF
OCTOTEP  EQU   X'10'                     TOTE POST REQUEST     @Y17XAXF
*        EQU   X'08'-X'01'               RESERVED              @Y17XAXF
         DS    F .                      RESERVED               @Y17XAXF
OCPREFSZ EQU   *-IEDQOPCN               PREFIX SIZE            @Y17XAXF
         SPACE
IEDQOPCE EQU   *                                               @Y17XAXF
         SPACE
*              OPERATOR CONTROL ELEMENT
*              VERSION DATE  JUNE  7, 1974                     @Z30X8XE
         SPACE
OCLINK   DS    F .                 LINK TO NEXT OPCE ON WAIT QUEUE
         SPACE
OCELEM   DS    0F .                LINK TO ATTACHED UNITS      @Y17XAXU
         SPACE
OCELMPRI DS    XL1 .               ELEMENT PRIORITY            @Y17XAXU
OCELMPTR DS    AL3 .               PTR TO ATTACHED ELEMENT     @Y17XAXU
         SPACE
OCRUDEST DS    0F .                OPCE WAITING FOR A RESP     @Y17XAXU
OCUNIT   DS    0F .                LINK TO ATTACHED UNITS      @Y17XAXF
OCSCAN   DS    0X .                     BYTE USED BY OPCSCAN   @0Y12425
OCDDADDR EQU   X'A0' .                  VALUE INDICATES TO DCB LOOK
*                                       UP THAT REG 11 POINTS TO
*                                       EITHER A DDNAME OR CHANNEL ADDR
*              INPUT TO OPCSCAN RTN FROM SCAN MODS             @OY12425
OCADDR   EQU   X'80' .                  ADDR ONLY              @OY12425
OCDDNRLN EQU   X'40' .                  DDN,RLN ONLY           @OY12425
OCDDNAME EQU   X'20' .                  DDNAME ONLY            @OY12425
OCALLRLN EQU   X'10' .                  RLN CAN BE ALL         @OY12425
*              OPSCAN OUTPUT AFFECTS THESE BITS                @OY12425
OCNONAME EQU   X'08' .                  NAME NOT FOUND         @OY12425
OCNOTUCB EQU   X'04' .                  NOT A UCB ADDR         @OY12425
OCCKPKEY DS    XL1 .               OPERATOR CONTROL CKECKPOINT KEY
*                                                              @Y17XAXF
*OCCKPTYP      X'80'-X'20' .            TYPE OF CKPT REQUEST   @Y17XAXF
OCCKPINC EQU   X'80' .                   REQUEST INCIDENT CKPT @Y17XAXF
OCCKPNOP EQU   X'40' .                   REQUEST 3705 CKPT     @Y17XAXF
OCCKPRST EQU   X'20' .                   REQUEST 3705 RESTART RECORDS
*                                                              @Y17XAXF
OCCKPENV EQU   X'10' .                   ENVIRONMENT CKPT IS TO BE
*                                         FORCED               @Y17XAXF
*        EQU   X'08'-X'01'               RESERVED              @Y17XAXF
         DS    AL3 .               RESERVED                    @Y17XAXF
         SPACE
OCOPTCDE DS    0X .                COMMAND OPERATION CODE      @Y17XAXU
OCPRIFLG DS    XL1 .               PRIORITY FLAG FIELD         @Y17XAXU
         SPACE
*   COMMANDS ENTERED FROM CONSOLE OR TERMINAL                         *
OCVARY   EQU   X'28' .                  VARY COMMAND
OCHALT   EQU   X'3C' .                  HALT COMMAND
OCMODIFY EQU   X'44' .                  MODIFY COMMAND
OCDSPLAY EQU   X'68' .                  DISPLAY COMMAND
OCHOLD   EQU   X'6C' .                  HOLD COMMAND
OCRLEASE EQU   X'70' .                  RELEASE COMMAND
         SPACE
*   TOTE OR MPP COMMANDS                                              *
OCCLOSEQ EQU   X'10' .                  CLOSEDOWN - QUICK
OCCLOSEF EQU   X'11' .                  CLOSEDOWN - FLUSH
OCSTARTL EQU   X'40' .                  START LINE COMMAND
OCSTOPL  EQU   X'41' .                  STOP LINE COMMAND
OCSTARTB EQU   X'45' .                  START TERMINAL (BOTH)
OCSTARTT EQU   X'46' .                  TOTE START TERMINAL COMMAND
OCSTOPB  EQU   X'47' .                  STOP TERMINAL (BOTH)
OCDEACT  EQU   X'48'                    TOTE DEACTIVATE
OCICHNG  EQU   X'49' .                  ICHNG COMMAND
OCTCHNG  EQU   X'56' .                  TCHNG COMMAND
OCMRLSE  EQU   X'87' .                  MRELEASE COMMAND
OCHOLDT  EQU   X'88'                    TOTE HOLD COMMAND
         SPACE
OCSWITCH DS    X .                 OPERATION SUB-TYPE
OCQUCKN  EQU   X'80' .                  REQUEST FOR QUICK CLOSEDOWN
*                                                              @Y17XAXF
*        EQU   X'40'-X'01'              RESERVED               @Y17XAXF
         SPACE
*   OPERATOR CONTROL EQUATES FOR OCSWITCH                             *
OCX01    EQU   X'01' .                  HEX 01
OCX02    EQU   X'02' .                  HEX 02
OCX03    EQU   X'03' .                  HEX 03
OCBKUP   EQU   X'03' .             MODIFY 3705 AS AVAILABLE FOR BACKUP
*                                                              @Y17XAXF
OCX04    EQU   X'04' .                  HEX 04
OCX05    EQU   X'05' .                  HEX 05
OCOFFTPE EQU   X'05' .             VARY OFFTP E COMMAND        @Y17XAXF
OCX06    EQU   X'06' .                  HEX 06
OCOFFTPB EQU   X'06' .             VARY OFFTP B COMMAND        @Y17XAXF
OCX07    EQU   X'07' .                  HEX 07
OCCHNLD  EQU   X'07' .             MODIFY CHANGE LOAD          @Y17XAXF
OCX08    EQU   X'08' .                  HEX 08
OCX09    EQU   X'09' .                  HEX 09
OCX0A    EQU   X'0A' .                  HEX 0A
OCDMPC   EQU   X'0A' .             DUMP COMMAND TO MH          @Y17XAXU
OCONTPE  EQU   X'0A' .             VARY ONTP E COMMAND         @Y17XAXF
OCX0B    EQU   X'0B' .                  HEX 0B
OCONTPB  EQU   X'0B' .             VARY ONTP B COMMAND         @Y17XAXF
OCX0C    EQU   X'0C' .                  HEX 0C
OCX0D    EQU   X'0D' .                  HEX 0D
OCX0E    EQU   X'0E' .                  HEX 0E
OCX0F    EQU   X'0F' .                  HEX 0F
OCACTLU  EQU   X'10' .             ACTLU REQUEST               @Y17XAXU
OCX10    EQU   X'10' .                  HEX 10                 @Y17XAXU
OCX11    EQU   X'11' .                  HEX 11
OCIPLC   EQU   X'11' .             IPL COMMAND TO MH           @Y17XAXU
OCSTPLNC EQU   X'11' .             STOPLINE, C REQUEST         @Y17XAXF
OCSTPLNI EQU   X'12' .             STOPLINE, I REQUEST         @Y17XAXF
OCX12    EQU   X'12' .                  HEX 12
OCX13    EQU   X'13' .                  HEX 13
OCX14    EQU   X'14' .                  HEX 14
OCX15    EQU   X'15' .                  HEX 15
OCX16    EQU   X'16' .                  HEX 16
OCSWBACK EQU   X'16' .             MODIFY 3705 BACKUP NCP      @Y17XAXF
OCX17    EQU   X'17' .                  HEX 17
OCX18    EQU   X'18' .                  HEX 18
OCX19    EQU   X'19' .                  HEX 19
OCX1A    EQU   X'1A' .                  HEX 1A
OCBHSET  EQU   X'1D' .             MODIFY BHSET                @Y17XAXF
OCSESSNL EQU   X'1E' .             CHANGE SESSION LIMIT        @Y17XAXF
OCTRANL  EQU   X'1F' .             CHANGE TRANSMISSION LIMIT   @Y17XAXF
OCDACTLU EQU   X'20' .             DACTLU REQUEST              @Y17XAXU
OCMIDMSG EQU   X'20' .             REMOVE FROM MIDDLE MESSAGE CONDITION
*                                                              @Y17XAXF
OCSWDEVB EQU   X'20' .             SWITCH DEVICE BACK-UP       @Y17XAXU
OCSWDEVP EQU   X'21' .             SWITCH DEVICE PRIMARY       @Y17XAXU
OCTOFA   EQU   X'22' .             REDRIVE INCIDENT RECORD     @Y17XAXU
OCACTVTE EQU   X'22' .             ACTIVATE                    @Y17XAXU
OCTOFC   EQU   X'23' .             REQUEST DEACT               @Y17XAXU
OCDEACTE EQU   X'23' .             DEACTIVATE                  @Y17XAXU
OCSWAP   EQU   X'24' .             SWAP DEVICE ID              @Y17XAXU
OCCHANGE EQU   X'25' .             CHANGE DIAL MODE            @Y17XAXU
OCOFTPEM EQU   X'25' .             VARY OFFTP EM COMMAND       @Y17XAXF
OCSSELCT EQU   X'26' .             SELECT MODEM SPEED          @Y17XAXU
OCOFTPBM EQU   X'26' .             VARY OFFTP BM COMMAND       @Y17XAXF
OCSWLNME EQU   X'27' .             SWITCH LINE MODE TO EP      @Y17XAXU
OCSWLNMN EQU   X'28' .             SWITCH LINE MODE TO NCP     @Y17XAXU
OCPARO   EQU   X'29' .             COMMAND PARSED IN LCB       @Y17XAXU
OCIOTR   EQU   X'2A' .             START/STOP TRACEING OF      @Y17XAXU
*                                   LINES IN ERROR             @Y17XAXU
OCLCBIN  EQU   X'30' .             LCB INPUT TO MH             @Y17XAXU
OCACTPU  EQU   X'30' .             ACTPU (NON-NCP) REQUEST     @Y17XAXU
OCFRCDAC EQU   X'37' .             FORCE DECACT REQUEST        @Y17XAXU
OCCRINOP EQU   X'38' .             CLEANUP REQUEST FOR INOP    @Y17XAXU
OCCUREQ  EQU   X'39' .             CLEANUP REQUEST             @Y17XAXU
OCDACTPU EQU   X'40' .             DACTPU (NON-NCP) REQUEST    @Y17XAXU
OCACTLK  EQU   X'50' .             ACTLINK REQUEST             @Y17XAXU
OCDACTLK EQU   X'60' .             DACTLINK REQUEST            @Y17XAXU
OCACTNCP EQU   X'70' .             ACTPU(NCP) REQUEST          @Y17XAXU
OCCHGSL  EQU   X'80' .             CHANGE SESSION LIMIT REQ    @Y17XAXU
OCSCANON EQU   X'80' .             SCAN HAS BEEN DONE          @Y17XAXF
OCCHGNP  EQU   X'90' .             CHANGE NEGATIVE POLL LIMIT  @Y17XAXU
OCCHGSSP EQU   X'A0' .             CHANGE SERVICE SEEK PAUSE   @Y17XAXU
OCCHGTL  EQU   X'B0' .             CHANGE XMISSION LIMIT REQ   @Y17XAXU
OCSWEP   EQU   X'C0' .             SWITCH TO EP MODE REQUEST   @Y17XAXU
OCSWNCP  EQU   X'D0' .             SWITCH TO NCP MODE REQUEST  @Y17XAXU
OCVARON  EQU   X'D1' .             INTERNAL VARY ON REQUEST    @Y17XAXF
OCVAROFF EQU   X'D2' .             INTERNAL VARY OFF REQUEST   @Y17XAXF
OCSETTD  EQU   X'E0' .             SET TIME/DATE REQUEST       @Y17XAXU
OCOPYDSM EQU   X'E1' .             COPY DEST. MODE             @Y17XAXF
OCRPLDSM EQU   X'E2' .             REPLACE DEST MODE           @Y17XAXF
OCOPYDSI EQU   X'E3' .             COPY DEV SESS INFO          @Y17XAXF
OCRPLDSI EQU   X'E4' .             REPLACE DEV SESS INFO       @Y17XAXF
OCSUBT   EQU   X'E5' .             START OR STOP SUBTASK TRACE @Y17XAXF
OCSESTRM EQU   X'E6' .             SESS TERM REQ TO/FRM LUS    @Y17XAXF
OCBUF    EQU   X'E7' .                  CHANGE BUFFTR OPTION   @OY19405
OCDISCON EQU   X'F0' .             DISCONTACT REQUEST          @Y17XAXU
OCRSTART EQU   X'F1' .             RESTART RECORD REQUEST      @Y17XAXU
OCSND1   EQU   X'F2' .             RESTART COMMAND             @Y17XAXU
OCSND2   EQU   X'F3' .             RESTART COMMAND             @Y17XAXU
OCSND3   EQU   X'F4' .             RESTART COMMAND             @Y17XAXU
OCSND4   EQU   X'F5' .             RESTART COMMAND             @Y17XAXU
OCSND5   EQU   X'F6' .             RESTART COMMAND             @Y17XAXU
OCSND6   EQU   X'F7' .             RESTART COMMAND             @Y17XAXU
OCSND7   EQU   X'F8' .             RESTART COMMAND             @Y17XAXU
OCSND8   EQU   X'F9' .             RESTART COMMAND             @Y17XAXU
OCFOXES  EQU   X'FF' .                  ALL ONES
         SPACE
OCFLAG   DS    X .                 SPECIAL CONDITIONS INDICATOR
         SPACE
*   BIT DEFINITIONS FOR OCFLAG FIELD                                  *
OCCONSOL EQU   X'80' .                  INDICATE CONSOLE INPUT
OCTOTE   EQU   X'40' .                  TOTE INPUT
OCMPP    EQU   X'20' .                  APPLICATION PROG INPUT
OCLINE   EQU   X'10' .                  INPUT CONTAINED LINE NUMBER
OCOUTPUT EQU   X'08' .                  MULTIPLE BLOCK OUTPUT
OCSSCP   EQU   X'04' .                  SSCP INPUT             @Y17XAXF
OCATTACH EQU   X'02' .                  ELEMENT ATTACHED FOR RESOURCES
OCRESP   EQU   X'01' .                  THIS ELEMENT IS ASSOC    S22024
*                                       WITH A RESPONSE BTU      S22024
         SPACE
OCRLN    DS    X .                 RELATIVE LINE NUMBER OF DCB
         SPACE
OCCIB    DS    0A .                ADDRESS OF INPUT CIB
OCCONID  DS    0X .                CONSOLE IDENTIFICATION BYTE
OCDEST   DS    0H .                DESTINATION OFFSET IN TNT   @Y17XAXU
OCREQVAL DS    XL1 .               OP SERVICES REQUEST VALUES  @Y17XAXU
         DS    XL3 .               FILLER FOR BOUNDARY (NOT AVAILABLE)
*                                                              @Y17XAXF
         SPACE
OCTRMTBL DS    H .                 OFFSET IN TNT TO TERMINAL NAME
OCTIOT   DS    0H .                OFFSET IN TIOT TO DDNAME
OCLINENO DS    0H .                HEX LINE NUMBER             @Y17XAXU
OCWTGB   DS    H .                 WTG BACKUP FIELD            @Y17XAXU
         SPACE
OCTRUNIT DS    0A .                IPL/DUMP TRAILER UNIT       @Y17XAXU
OCRSID   DS    0H .                RESOURCE ID                 @Y17XAXF
OCALSTAT DS    XL1 .               ALL OPTION STATUS FLAG      @Y17XAXF
OCRENTRD EQU   X'80' .            SECOND ENTRY TO VI FOR       @Y17XAXU
*                                 START LINE                   @Y17XAXU
OCDACTIP EQU   X'40' .              DEACT-IN-PROG             @OY19465
OCSEQIND EQU   X'20' .              OFF - SEQ NO. NOT SET
*                                   ON  - SEQ NO. SET          @Y17XAXU
OCREDRVE EQU   X'10' .              REDRIVE ELEMENT FLAG       @Y17XAXF
OCACTREQ EQU   X'08' .              ACT/DEACT REQUEST          @Y17XAXU
OCALLFLG EQU   X'04' .              ALL OPTIONS IN EFFECT      @Y17XAXU
OCALL    EQU   X'03' .              ALL STARTED/STOPPED        @Y17XAXU
OCSOME   EQU   X'02' .              SOME STARTED/STOPPED       @Y17XAXU
OCNONE   EQU   X'01' .              NONE STARTED/STOPPED       @Y17XAXU
OCUNSET  EQU   X'00' .              STATUS IS UNSET            @Y17XAXU
         DS    XL1 .               RESERVED                    @Y17XAXF
OCSEQ    DS    H .                      BTU ID TAG SEQ NUMBER    S22024
         SPACE
OCRESNUM DS    0H .                RESOURCE RECORD             @Y17XAXF
OCPARM   DS    H .                 BRANCH PARAMETER FOR WTG MODULE
OCRCGNEG EQU   2                   GOOD RETURN CODE WITH SENSE @Y17XAXF
*                                    DATA                      @Y17XAXF
OCRCGPOS EQU   1                   GOOD RETURN CODE WITH NO    @Y17XAXF
*                                    SENSE DATA                @Y17XAXF
OCRCBNEG EQU   -1                  BAD RETURN CODE WITH SENSE  @Y17XAXF
*                                    DATA                      @Y17XAXF
OCRCBSIB EQU   -2                  BAD RETURN CODE FROM UNSUC- @Y17XAXF
*                                    CESSFUL SIB REQUEST       @Y17XAXF
OCRCBPOS EQU   -3                  BAD RETURN CODE WITH NO     @Y17XAXF
*                                    SENSE DATA                @Y17XAXF
OCRCBMOD EQU   -4                  BAD RETURN CODE FROM        @Y17XAXF
*                                    INEQUALITY OF LOAD MODULE @Y17XAXF
*                                    NAMES                     @Y17XAXF
OCWTG    DS    CL2 .                    NEXT LOAD TO GET CONTROL S22024
         SPACE
OCBACKUP DS    0CL8 .                   NAME OF BACKUP DCB       S22024
*                                       DDNAME OR EBCDIC UCB ADDRESS
OCBUFNED DS    H .                      NUM BUF UNITS NEEDED   @Y17XAXF
OCBUFGOT DS    H .                      NUM BUF UNITS OWNED    @Y17XAXF
OCNCP    DS    H .                      SAVED TNT OF LOCAL NCP @Y17XAXF
OCDVRDCT DS    H .                      DEVICE RECORD COUNT    @Y17XAXF
         SPACE
OCMODNME DS    0CL8 .                   LOAD MODULE NAME       @Y17XAXU
OCIPLWA  DS    0A .                     IPL WORKAREA PTR       @Y17XAXF
OCWTGSAV DS    CL2 .               SAVE WTG FIELD              @Y17XAXU
OCPUADR  DS    CL2 .               SAVED PU ADDRESS            @Y17XAXU
OCPTRSAV DS    F .                      SAVED OPCE POINTER     @Y17XAXU
         SPACE 3                                               @Y17XAXF
*                                                              @Y17XAXF
*        CHECKPOINT SPECIAL DATA TO BE SAVED                   @Y17XAXF
*                                                              @Y17XAXF
OCCKDATA DS    0CL8                     CHECK POINT DATA       @Y17XAXF
OCRSTGTM DS    0F .                     ADDR OF RESTART GETMAINED AREA
*                                                              @Y17XAXF
OCCKDAT1 DS    CL1                      BYTE 1 OF CHKPT DATA   @Y17XAXF
OCCKDAT2 DS    CL1                      BYTE 2 OF CKPT DATA    @Y17XAXF
         DS    CL2                      RESERVED               @Y17XAXF
OCCKPTWA DS    A                        ADDRESS OF 3705 CHECKPOINT
*                                        WORKAREA              @Y17XAXF
         MEND ,                                    */
*%PLSOPCE:;
*        DCL  1 IEDQOPCE BDY(WORD) BASED(ROPCE), /*OPERATOR CONTROL
*                                                   ELEMENT DSECT   */
*              2 OCLINK       PTR(31),  /*LINK TO THE NEXT OPCE ON
*                                          WAIT QUEUE        @YM07340*/
*              2 OCELEM       PTR(31),  /*LINK TO ATTACHED
*                                         OPCE'S             @Y17XAXU*/
*               3 OCELMPRI    CHAR(1),  /*ELEMENT PRIORITY   @Y17XAXU*/
*               3 OCELMPTR    PTR(24),  /*POINTER TO ATTACHED
*                                         UNIT               @Y17XAXU*/
*              2 OCUNIT       PTR(31),  /*LINK TO ATTACHED UNITS    */
*               3 OCRUDEST    PTR(31),   /* OPCE WAITING FOR
*                                           A RESPONSE       @Y17XAXU*/
*                4 OCCKPKEY    BIT(8),  /*OPERATOR CONTROL CHECKPOINT
*                                         KEY                @Y17XAXF*/
*                 5 OCSCAN     BIT(8),   /* INPUT TO OPCSCAN @OY12425*/
*                  6 OCADDR   BIT(1),    /* ADDR ONLY        @OY12425*/
*                  6 OCDDNRLN BIT(1),    /* DDN,RLN ONLY     @OY12425*/
*                  6 OCDDNAME BIT(1),    /* DDNAME ONLY      @OY12425*/
*                  6 OCALLRLN BIT(1),    /* RLN CAN BE ALL   @OY12425*/
*                  6 OCNONAME BIT(1),    /* NAME NOT FOUND   @OY12425*/
*                  6 OCNOTUCB BIT(1),    /* NOT A UCB ADDR   @OY12425*/
*                  6 *        BIT(2),    /* RESERVED         @OY12425*/
*                4 *           PTR(24), /*RESERVED           @Y17XAXF*/
*              2 OCOPTCDE     CHAR(1),  /* COMMAND OP CODE   @Y17XAXU*/
*               3 OCPRIFLG    CHAR(1),  /* PRIORITY FLAG FLD @Y17XAXU*/
*              2 OCSWITCH     CHAR(1),  /*OPERATION SUBTYPE FIELD   */
*               3 OCQUCKN      BIT(1),  /*REQUEST FOR QUICK CLOSEDOWN
*                                                            @Y17XAXF*/
*               3 *            BIT(7),  /*RESERVED           @Y17XAXF*/
*              2 OCFLAG       BIT(8),   /*SPECIAL CONDITIONS IND    */
*               3 OCCONSOL     BIT(1),  /*CONSOLE INPUT             */
*               3 OCTOTE       BIT(1),  /*TOTE INPUT                */
*               3 OCMPP        BIT(1),  /*APPLICATION PROGRAM INPUT */
*               3 OCLINE       BIT(1),  /*INPUT HAS LINE NUMBER     */
*               3 OCOUTPUT     BIT(1),  /*MULTIPLE BLOCK INPUT      */
*               3 OCSSCP       BIT(1),  /*SSCP INPUT         @Y17XAXF*/
*               3 OCATTACH     BIT(1),  /*ELEMENT ATTACHED          */
*               3 OCRESP       BIT(1),  /* THIS ELEMENT IS ASSOC.
*                                       WITH A RESPONSE BTU    S22024*/
*              2 OCRLN        PTR(8),   /*RELATIVE LINE NUMBER      */
*              2   *   PTR(31),                            /*@YM08001*/
*                       /* BYTES 2-4 ALSO OVERLAYED BY OCCIB @YM08001*/
*               3 OCDEST      FIXED(16), /*DESTINATION OFFSET IN TNT*/
*                4 OCCONID    CHAR(1),  /*CONSOLE ID         @Y17XAXU*/
*                4 OCREQVAL   CHAR(1),  /* OPERATOR SERVICES
*                                          REQUEST VALUES    @Y17XAXU*/
*               3 *           CHAR(2),   /* RESERVED         @Y17XAXF*/
*              2 OCTRMTBL     FIXED(16), /*OFFSET IN TNT TO TERMINAL
*                                            ENTRY                  */
*              2 OCLINENO     FIXED(16), /*HEX LINE NUMBER          */
*               3 OCTIOT       FIXED(16), /*OFFSET IN TIOT TO DDNAME*/
*                4 OCWTGB     CHAR(2),  /* WTG BACKUP FIELD  @Y17XAXU*/
*              2 OCTRUNIT PTR(31),      /* IPL/DUMP TRAILER
*                                           UNIT             @Y17XAXU*/
*               3 OCRSID      CHAR(2),  /* RESOURCE ID       @Y17XAXU*/
*                4 OCALSTAT   CHAR(1),  /* ALL OPTION STATUS @Y17XAXU*/
*                 5 OCRENTRD  BIT(1),    /* SECOND ENTRY TO VI
*                                           FOR START LINE   @Y17XAXU*/
*                 5 OCDACTIP  BIT(1),    /* DEACT-IN-PROG    @OY19465*/
*                  5 OCSEQIND BIT(1),    /* OFF - SEQ NO. NOT SET
*                                           ON - SEQ NO. SET @Y17XAXU*/
*                 5 OCREDRVE  BIT(1),   /* REDRIVE ELEMENT   @Y17XAXF*/
*                                       /*  FLAG             @Y17XAXF*/
*                 5 OCACTREQ  BIT(1),    /* ACT/DEACT REQ    @Y17XAXU*/
*                 5 OCALLFLG  BIT(1),    /* ALL OPTIONS IN
*                                           EFFECT           @Y17XAXU*/
*                 5 OCSOME    BIT(1),    /* SOME STARTED/
*                                           STOPPED          @Y17XAXU*/
*                 5 OCNONE    BIT(1),    /* NONE STARTED/
*                                           STOPPED          @Y17XAXU*/
*                4 *          CHAR(1),  /* RESERVED          @Y17XAXF*/
*              3 OCSEQ        CHAR(2),  /* BTU ID TAG SEQ NO @Y17XAXU*/
*              2 OCPARM       FIXED(15), /*BRANCH PARAMETER FOR
*                                           WTG MODULE              */
*               3 OCRESNUM     FIXED(16), /*RESOURCE RECORD  @Y17XAXF*/
*              2 OCWTG        CHAR(2),  /*NEXT LOAD TO RECEIVE
*                                          CONTROL AFTER WAIT       */
*              2 OCBACKUP CHAR(8) BDY(WORD), /*NAME OF BACKUP DDNAME
*                                          EBCDIC UCB ADDRESS        */
*               3 OCBUFNED    FIXED(16), /* NUM BUFFER UNITS NEEDED
*                                                            @Y17XAXF*/
*               3 OCBUFGOT    FIXED(16), /* NUM BUFFER UNITS OWNED
*                                                            @Y17XAXF*/
*               3 OCNCP       FIXED(16), /* SAVED TNT OF     @Y17XAXF*/
*                                        /*  LOCAL NCP       @Y17XAXF*/
*               3 OCDVRDCT    FIXED(15), /* DEVICE RECORD COUNT
*                                                            @Y17XAXF*/
*              2 OCMODNME CHAR(8) BDY(WORD), /* LOAD MOD NME @Y17XAXU*/
*               3 OCIPLWA  PTR(31),   /* IPL WORKAREA PTR    @Y17XAXF*/
*                4 OCWTGSAV    CHAR(2), /* SAVED WTG FIELD   @Y17XAXF*/
*                4 OCPUADR     CHAR(2), /* SAVED PU ADDRESS  @Y17XAXF*/
*               3 OCPTRSAV  PTR(31),    /* SAVED OPCE PTR    @Y17XAXU*/
*/*                                                          @Y17XAXF*/
*/*      CHECKPOINT SPECIAL DATA TO BE SAVED                 @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*   2 OCCKDATA CHAR(8) BDY(WORD),       /* CHECKPOINT DATA   @Y17XAXF*/
*    3 OCRSTGTM PTR(31),                /* ADDR OF RESTART GETMAINED
*                                          AREA              @Y17XAXF*/
*     4 OCCKDAT1 CHAR(1),               /* BYTE 1 OF CHKPT DATA
*                                                            @Y17XAXF*/
*     4 OCCKDAT2 CHAR(1),               /* BYTE 2 OF CKPT DATA
*                                                            @Y17XAXF*/
*     4 *        CHAR(2),               /* RESERVED          @Y17XAXF*/
*    3 OCCKPTWA PTR(31);                /* ADDR OF 3705 CHECKPOINT
*                                          WORKAREA                  */
*                                                         /* @Y17XAXF*/
* DCL OCCIB PTR(24) DEF(OCREQVAL);      /* ADDRESS OF INPUT CIB
*                                                            @YM08001*/
* DECLARE
* 1 OCCKPKY1 BIT(8) DEFINED(OCCKPKEY),                    /* @Y17XAXF*/
*  2 OCCKPTYP BIT(3),                   /* TYPE OF CKPT REQUEST
*                                                            @Y17XAXF*/
*   3 OCCKPINC BIT(1),                  /* REQUEST INCIDENT CKPT
*                                                            @Y17XAXF*/
*   3 OCCKPNCP BIT(1),                  /* REQUEST 3705 CKPT @Y17XAXF*/
*   3 OCCKPRST BIT(1),                  /* REQUEST 3705 RESTART RECORDS
*                                                            @Y17XAXF*/
*  2 OCCKPENV BIT(1),                   /* ENVIRONMENT CKPT IS TO BE
*                                          FORCED            @Y17XAXF*/
*  2 *        BIT(4);                   /* RESERVED          @Y17XAXF*/
*
*/*                                                          @Y17XAXF*/
*DCL 1 OCICACTN DEF(OCMODNME),          /*ICHNG ACTION WORD  @Y17XAXF*/
*     2 OCICDADR PTR(31),               /*WORKAREA ADDRESS   @Y17XAXF*/
*      3 OCICTYPE FIXED(8),             /*ICHNG MOVE TYPE    @Y17XAXF*/
*      3 OCICATST PTR(15) BDY(WORD,2),  /*TEST FIELD TO DETERMINE
*                             PRESENCE OF WORKAREA ADDRESS   @Y17XAXF*/
*      3 OCICSW BIT(8),                 /*ACT/DEACT SWITCHES @Y17XAXF*/
*       4 * BIT(7),                     /*RESERVED           @Y17XAXF*/
*       4 OCICINAC BIT(1);              /*DEACTIVATE REQUEST @Y17XAXF*/
*@SPACE (1);                                               /*@Y17XAXF*/
*DCL OCICSID FIXED(8) CONSTANT(0);/*ICHNG FOR SWITCH ID VERIFICATION
*                                                            @Y17XAXF*/
*DCL OCICLES FIXED(8) CONSTANT(1);/*ICHNG FOR LEASED OR SWITCHED LINE
*                                   WITH NO ID VERIFICATION  @Y17XAXF*/
*DCL OCICMUL FIXED(8) CONSTANT(2);/*ICHNG FOR MULTIPT LINE   @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      DSECT FOR NEG PREFIX                                @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 IEDQOPCN BASED(ADDR(IEDQOPCE)-LENGTH(IEDQOPCN)),     /* @Y17XAXF*/
*   2 OCLDNME  CHAR(8) BDY(WORD),     /* LOAD MODULE         @Y17XAXF*/
*                                     /*  MISMATCH NAME      @Y17XAXF*/
*    3 OCLINTTE PTR(31),              /* LINE TTE ADDR       @Y17XAXF*/
*                                     /*  (M6-MB)            @Y17XAXF*/
*      4 OCRESPCT  FIXED(16),         /* OUTSTAND RSP COUNT  @Y17XAXF*/
*      4 OCREQFLG BIT(8),             /* OP SERV REQUEST FLG @Y17XAXF*/
*        5 OCFLUSHZ BIT(1),           /* Z,TP,FLUSH REQUEST FOR DEACT
*                                         NCP                @Y17XAXF*/
*        5 *        BIT(1),           /* RESERVED            @Y17XAXF*/
*        5 *        BIT(1),           /* RESERVED            @Y17XAXF*/
*        5 OCADNCP  BIT(1),           /* NCP ACT/DEACT CMND  @Y17XAXF*/
*        5 OCPARTAL BIT(1),           /* PARTIAL ACT FLAG    @Y17XAXF*/
*        5 OCDCARD  BIT(1),           /* DISCARD FLAG        @Y17XAXF*/
*        5 OCFORCE  BIT(1),           /* FORCE FLAG          @Y17XAXF*/
*        5 OCIDLE   BIT(1),           /* IDLE FLAG           @Y17XAXF*/
*      4 OCPREFLG BIT(8),             /* GENERAL FLAG BYTE   @Y17XAXF*/
*       5 OCBFREQ  BIT(1),            /* CLEANUP BUFF REQ    @Y17XAXF*/
*       5 OCRSPSNT BIT(1),            /* CLEANUP RESP SENT   @Y17XAXF*/
*       5 OCREPOST BIT(1),            /* CLEANUP REPOST REQ  @Y17XAXF*/
*       5 OCTOTEP  BIT(1),            /* TOTE POST REQUEST   @Y17XAXF*/
*       5 *        BIT(4),            /* RESERVED            @Y17XAXF*/
*    3 *        PTR(31);              /* RESERVED            @Y17XAXF*/
*%OCPREFSZ='LENGTH(IEDQOPCN)';        /* LENGTH OF NEG PREF  @Y17XAXF*/
*                                                         /* @Y17XAXF*/
*/*                                                          @Y17XAXU*/
*/*      OCSWITCH CONSTANTS                                  @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*DCL OCBKUP   BIT(8) CONSTANT('03'X); /* MODIFY 3705 AS AVAILABLE FOR
*                                        BACKUP              @Y17XAXF*/
*DCL OCOFFTPE BIT(8) CONSTANT('05'X); /* VARY OFFTP E COMMAND
*                                                            @Y17XAXF*/
*DCL OCOFFTPB BIT(8) CONSTANT('06'X); /* VARY OFFTP B COMMAND
*                                                            @Y17XAXF*/
*DCL OCCHNLD  BIT(8) CONSTANT('07'X); /* MODIFY CHANGE LOAD  @Y17XAXF*/
*DCL OCDMPC BIT(8) CONSTANT('0A'X);   /* DUMP COMMAND TO MH  @Y17XAXU*/
*DCL OCONTPE BIT(8) CONSTANT('0A'X);  /* VARY ONTP E COMMAND @Y17XAXF*/
*DCL OCONTPB BIT(8) CONSTANT('0B'X);  /* VARY ONTP B COMMAND @Y17XAXF*/
*DCL OCACTLU BIT(8) CONSTANT('10'X);  /* ACTLU REQUEST       @Y17XAXU*/
*DCL OCIPLC BIT(8) CONSTANT('11'X);   /* IPL COMMAND TO MH   @Y17XAXU*/
*DCL OCSTPLNC BIT(8) CONSTANT('11'X); /* STOPLINE,C REQUEST  @Y17XAXF*/
*DCL OCSTPLNI BIT(8) CONSTANT('12'X); /* STOPLINE,I REQUEST  @Y17XAXF*/
*DCL OCSWBACK BIT(8) CONSTANT('16'X); /* MODFY 3705 BKUP NCP @Y17XAXF*/
*DCL OCBHSET  BIT(8) CONSTANT('1D'X); /* MODIFY BHSET        @Y17XAXF*/
*DCL OCSESSNL BIT(8) CONSTANT('1E'X); /* CHANGE SESSION LIM  @Y17XAXF*/
*DCL OCTRANL  BIT(8) CONSTANT('1F'X); /* CHANGE TRANS LIMIT  @Y17XAXF*/
*DCL OCDACTLU BIT(8) CONSTANT('20'X); /* DACTLU REQUEST      @Y17XAXU*/
*DCL OCMIDMSG BIT(8) CONSTANT('20'X); /* REMOVE FROM MIDDLE MESSAGE
*                                        CONDITION           @Y17XAXF*/
*DCL OCSWDEVB BIT(8) CONSTANT('20'X); /* SWITCH DEV BACK-UP  @Y17XAXF*/
*DCL OCSWDEVP BIT(8) CONSTANT('21'X); /* SWITCH DEV PRIMARY  @Y17XAXF*/
*DCL OCTOFA BIT(8) CONSTANT('22'X);   /* REDRIVE INC RECORD  @Y17XAXU*/
*DCL OCACTVTE BIT(8) CONSTANT('22'X); /* ACTIVATE            @Y17XAXF*/
*DCL OCDEACTE BIT(8) CONSTANT('23'X); /* DEACTIVATE          @Y17XAXF*/
*DCL OCTOFC BIT(8) CONSTANT('23'X);   /* REQUEST DEACT       @Y17XAXU*/
*DCL OCSWAP   BIT(8) CONSTANT('24'X); /* SWAP DEVICE ID      @Y17XAXF*/
*DCL OCCHANGE BIT(8) CONSTANT('25'X); /* CHANGE DIAL MODE    @Y17XAXF*/
*DCL OCOFTPEM BIT(8) CONSTANT('25'X); /* VARY OFFTP EM COMMAND
*                                                            @Y17XAXF*/
*DCL OCSSELCT BIT(8) CONSTANT('26'X); /* SELECT MODEM SPEED  @Y17XAXF*/
*DCL OCOFTPBM BIT(8) CONSTANT('26'X); /* VARY OFFTP BM COMMAND
*                                                            @Y17XAXF*/
*DCL OCSWLNME BIT(8) CONSTANT('27'X); /* SWIT LINE MOD TO EP @Y17XAXF*/
*DCL OCSWLNMN BIT(8) CONSTANT('28'X); /* SWIT LNE MOD TO NCP @Y17XAXF*/
*DCL OCPARO BIT(8) CONSTANT('29'X);   /* CMND PARSED IN LCB  @Y17XAXU*/
*DCL OCIOTR BIT(8) CONSTANT('2A'X);   /* START/STOP TRACEING @Y17XAXU*/
*                                     /*  OF LINES IN ERROR  @Y17XAXU*/
*DCL OCLCBIN BIT(8) CONSTANT('30'X);  /* LCB INPUT TO MH     @Y17XAXU*/
*DCL OCACTPU BIT(8) CONSTANT('30'X);  /* ACTPU (NON-NCP) REQ @Y17XAXU*/
*DCL OCFRCDAC BIT(8) CONSTANT('37'X); /* FORCE DEACT REQUEST @Y17XAXU*/
*DCL OCCRINOP BIT(8) CONSTANT('38'X); /* CLENUP REQ FOR INOP @Y17XAXU*/
*DCL OCCUREQ  BIT(8) CONSTANT('39'X); /* CLEANUP REQUEST     @Y17XAXU*/
*DCL OCDACTPU BIT(8) CONSTANT('40'X); /* DACTPU(NON-NCP) REQ @Y17XAXU*/
*DCL OCACTLK BIT(8) CONSTANT('50'X);  /* ACTLINK REQUEST     @Y17XAXU*/
*DCL OCDACTLK BIT(8) CONSTANT('60'X); /* DACTLINK REQUEST    @Y17XAXU*/
*DCL OCACTNCP BIT(8) CONSTANT('70'X); /* ACTPU(NCP) REQUEST  @Y17XAXU*/
*DCL OCCHGSL BIT(8) CONSTANT('80'X);  /* CHNG SESS LIMIT REQ @Y17XAXU*/
*DCL OCSCANON BIT(8) CONSTANT('80'X); /* SCAN HAS BEEN DONE  @Y17XAXF*/
*DCL OCCHGNP BIT(8) CONSTANT('90'X);  /* CHNG NEG POLL LIMIT @Y17XAXU*/
*DCL OCCHGSSP BIT(8) CONSTANT('A0'X); /* CHNG SERV SEEK PAUS @Y17XAXU*/
*DCL OCCHGTL BIT(8) CONSTANT('B0'X);  /* CHNG XMISS LIM REQ  @Y17XAXU*/
*DCL OCSWEP BIT(8) CONSTANT('C0'X);   /* SW TO EP MODE REQ   @Y17XAXU*/
*DCL OCSWNCP BIT(8) CONSTANT('D0'X);  /* SW TO NCP MODE REQ  @Y17XAXU*/
*DCL OCVARON BIT(8) CONSTANT('D1'X);  /* INTER VARY ON REQ   @Y17XAXF*/
*DCL OCVAROFF BIT(8) CONSTANT('D2'X); /* INTER VARY OFF REQ  @Y17XAXF*/
*DCL OCSETTD BIT(8) CONSTANT('E0'X);  /* SET TIME/DATE REQ   @Y17XAXU*/
*DCL OCOPYDSM BIT(8) CONSTANT('E1'X); /* COPY DEST. MODE     @Y17XAXF*/
*DCL OCRPLDSM BIT(8) CONSTANT('E2'X); /* REPLACE DEST MODE   @Y17XAXF*/
*DCL OCOPYDSI BIT(8) CONSTANT('E3'X); /* COPY DEV SESS INFO  @Y17XAXF*/
*DCL OCRPLDSI BIT(8) CONSTANT('E4'X); /* REPL DEV SESS INFO  @Y17XAXF*/
*DCL OCSUBT   BIT(8) CONSTANT('E5'X); /* START OR STOP       @Y17XAXF*/
*                                     /*  SUBTASK TRACE      @Y17XAXF*/
*DCL OCSESTRM BIT(8) CONSTANT('E6'X); /* SESS TERM REQ TO/FROM LUS   */
*                                     /*                     @Y17XAXF*/
*DCL OCBUF BIT(8) CONSTANT('E7'X);     /* CHANGE BUFFTR OPT. @OY19405*/
*DCL OCDISCON BIT(8) CONSTANT('F0'X); /* DISCONNECT REQUEST  @Y17XAXU*/
*DCL OCRSTART BIT(8) CONSTANT('F1'X); /* RSTART RECORD REQ   @Y17XAXU*/
*DCL OCSND1 BIT(8) CONSTANT('F2'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND2 BIT(8) CONSTANT('F3'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND3 BIT(8) CONSTANT('F4'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND4 BIT(8) CONSTANT('F5'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND5 BIT(8) CONSTANT('F6'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND6 BIT(8) CONSTANT('F7'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND7 BIT(8) CONSTANT('F8'X);   /* RESTART COMMAND     @Y17XAXU*/
*DCL OCSND8 BIT(8) CONSTANT('F9'X);   /* RESTART COMMAND     @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*/*      OCALSTAT CONSTANTS                                  @Y17XAXU*/
*/*                                                          @Y17XAXU*/
*DECLARE OCALL BIT(8) CONSTANT('03'X);  /* ALL STRT/STOPPED  @Y17XAXU*/
*DECLARE OCUNSET BIT(8) CONSTANT('00'X); /* STATUS IS UNSET  @Y17XAXU*/
*/*                                                                  */
*/*      CONSTANTS FOR OCSCAN                                        */
*/*                                                                  */
*DCL OCDDADDR BIT(8) CONSTANT('A0'X);   /* VALUE TO INDICATE TO DCB
*                                         LOOK UP THAT REG 11 POINTS
*                                         TO EITHER A DDNAME OR CHANNEL
*                                         ADDRESS                    */
*/*                                                          @Y17XAXF*/
*/*      OCPARM RETURN CODE CONSTANTS                        @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*DCL OCRCGNEG FIXED(15) CONSTANT(2);    /* GOOD RETURN CODE  @Y17XAXF*/
*                                       /*  WITH SENSE DATA  @Y17XAXF*/
*DCL OCRCGPOS FIXED(15) CONSTANT(1);    /* GOOD RETURN CODE  @Y17XAXF*/
*                                       /*  WITH NO SENSE    @Y17XAXF*/
*                                       /*  DATA             @Y17XAXF*/
*DCL OCRCBNEG FIXED(15) CONSTANT(-1);   /* BAD RETURN CODE   @Y17XAXF*/
*                                       /*  WITH SENSE DATA  @Y17XAXF*/
*DCL OCRCBSIB FIXED(15) CONSTANT(-2);   /* BAD RETURN CODE   @Y17XAXF*/
*                                       /*  FROM UNSUCCESS-  @Y17XAXF*/
*                                       /*  FUL SIB REQUEST  @Y17XAXF*/
*DCL OCRCBPOS FIXED(15) CONSTANT(-3);   /* BAD RETURN CODE   @Y17XAXF*/
*                                       /*  WITH NO SENSE    @Y17XAXF*/
*                                       /*  DATA             @Y17XAXF*/
*DCL OCRCBMOD FIXED(15) CONSTANT(-4);   /* BAD RETURN CODE   @Y17XAXF*/
*                                       /*  FROM INEQUALITY  @Y17XAXF*/
*                                       /*  OF LOAD MODULE   @Y17XAXF*/
*                                       /*  NAMES            @Y17XAXF*/
./ ADD NAME=TOPCTL
         MACRO
         TOPCTL
         SVC   104 .                    TCAM OPERATOR CONTROL ROUTINE
         MEND
./ ADD NAME=TOPRED
*        %GOTO OPREPLS;                 /* BILINGUAL HEADER
         MACRO
         TOPRED
         SPACE
.*CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
.*A341200,703000                                               @Y17XAXF
.*C720000                                                      @Y17XAXF
         SPACE
IEDOPRED DSECT
*
*        OPERATOR CONTROL REQUEST ELEMENT
*
OPREKEY  DS    X .                      KEY FIELD
OPREQCB  DS    AL3 .                    QCB ADDRESS
OPREPRI  DS    X .                      PRIORITY FIELD
*
*        REFER TO TPRIOR DSECT FOR PRIORITY EQUATES
*
OPRELINK DS    AL3 .                    LINK FIELD
OPRETIC  DS    0A .                     LINK TO NEXT UNIT
OPRESAVE DS    A .                      IPL/DUMP OPCE SAVE AREA
OPREFLG1 DS    X .                      FLAG FIELD
OPRA0    EQU   X'01' .                  USED WITH PRIHIFLG -
*                                       OP SERVICES TO SSCP
*                                       USED WITH PRILOFLG-A/D REDRIVE
*                                                              @Y17XAXF
OPRSENSE EQU   X'02' .                  NSED WITH PRIHIFLG DLC @Y17XAXF
*                                       TO IPL                 @Y17XAXF
OPRFG    EQU   X'03' .                  USED WITH PRIMEDFG -
*                                       LUS TO A/D
OPRVI    EQU   X'04' .                  USED WITH PRIMEDFG -
*                                       NSL TO VI WITH A
*                                       REQUEST BUFFER
OPRVE    EQU   X'05' .                  USED WITH PRIMEDFG -
*                                       NSL TO VE WITH A
*                                       REQUEST BUFFER
OPRVA    EQU   X'06' .                  USED WITH PRIMEDFG -
*                                       NSL TO VA WITH A
*                                       REQUEST BUFFER
OPRVF    EQU   X'07' .                  USED WITH PRIMEDFG -
*                                       NSL TO VF WITH A
*                                       REQUEST BUFFER
OPR02    EQU   X'08' .                  USED WITH PRIMEDFG -
*                                       A/D TO 02
OPRFC    EQU   X'09' .                  TO FC WITH OPCE TO
*                                       REQUEST DEACT OF A
*                                       3705
OPRFK    EQU   X'0A' .                  REDRIVE ELEMENT ROUTING TO FK
*
OPRVAVF  EQU   X'0B' .                  USED BY V9 TO INTERFACE WITH AN
*                                        OPCE TO VA OR VF
OPRC0    EQU   X'0D' .                  USED WITH PRILOFLG -
*                                        TO REDRIVE IGCC010D
OPRVI2   EQU   X'10' .                  USED WITH PRIMEDFG -
*                                       A/D TO VI WITH AN OPCE
OPRV8    EQU   X'11' .                  USED WITH PRIMEDFG -
*                                       A/D TO V8 WITH AN OPCE
OPRMP    EQU   X'12' .                  OPRE FROM DLC TO MP FOR
*                                       I/O COMPLETE
OPRDRTN  EQU   X'13' .                  USED TO RETURN OPCE
*                                       TO ACTIVATE
OPRETOMF EQU   X'14' .                  DLC ROUTE BACK TO MF AFTER I/O
OPRPRMRP EQU   X'15' .                  NSL RETURNS TO VA AFTER PRIMING
OPRTOTCL EQU   X'16' .                  FLAG FIELD VALUE FOR TOTE
*                                       CLEANUP RESP HANDLER   @Y17XAXF
OPREFLG2 DS    X .                      FLAG FIELD
OPREFLG3 DS    X .                      FLAG FIELD
*        EQU   X'80'-X'04'               RESERVED
OPREATCH EQU   X'02' .                   ATTACHED FLAG
*        EQU   X'01'                     RESERVED
OPRELEN  EQU   *-IEDOPRED .             OPRE LENGTH
         MEND
*        */
*%OPREPLS : ;
*DECLARE
*  1 IEDOPRED BDY(WORD) BASED,
*/*                                                                  */
*/*      OPERATOR CONTROL REQUEST ELEMENT                            */
*/*                                                                  */
*   2 OPREKEY CHAR(1),                  /* KEY FIELD                 */
*   2 OPREQCB PTR(24),                  /* QCB ADDRESS               */
*   2 OPREPRI CHAR(1),                  /* PRIORITY FIELD            */
*/*                                                                  */
*/*      REFER TO TPRIOR DSECT FOR PRIORITY EQUATES                  */
*/*                                                                  */
*   2 OPRELINK PTR(24),                 /* LINK FIELD                */
*   2 OPRESAVE PTR(31),                 /* IPL DUMP OPCE SAVE AREA   */
*    3 OPRETIC  PTR(31),                /*  LINK TO NEXT UNIT        */
*   2 OPREFLG1 CHAR(1),                 /* FLAG FIELD                */
*   2 OPREFLG2 CHAR(1),                 /* FLAG FIELD                */
*   2 OPREFLG3 CHAR(1),                 /* FLAG FIELD                */
*    3 *        BIT(6),                 /*  RESERVED                 */
*    3 OPREATCH BIT(1),                 /*  ATTACHED FLAG            */
*    3 *        BIT(1);                 /*  RESERVED                 */
* %OPRELEN='LENGTH(IEDOPRED)';          /* OPRE LENGTH               */
*/*                                                                  */
*/*      CONSTANTS FOR OPREFLG1                                      */
*/*                                                                  */
*DCL OPRA0   BIT(8) CONSTANT('01'X);    /* USED WITH PRIHIFLG -
*                                          OP SERVICES TO SSCP
*                                          USED WITH PRILOFLG-A/D
*                                           REDRIVE          @Y17XAXF*/
*DCL OPRSENSE BIT(8) CONSTANT('02'X);   /* USED WITH         @Y17XAXF*/
*                                       /* PRIHIFLG DLC TO   @Y17XAXF*/
*                                       /* IPL               @Y17XAXF*/
*DCL OPRFG   BIT(8) CONSTANT('03'X);    /* USED WITH PRIMEDFG -
*                                          LUS TO A/D                */
*DCL OPRVI   BIT(8) CONSTANT('04'X);    /* USED WITH PRIMEDFG -
*                                          NSL TO VI WITH A
*                                          REQUEST BUFFER            */
*DCL OPRVE   BIT(8) CONSTANT('05'X);    /* USED WITH PRIMEDFG -
*                                          NSL TO VE WITH A
*                                          REQUEST BUFFER            */
*DCL OPRVA   BIT(8) CONSTANT('06'X);    /* USED WITH PRIMEDFG -
*                                          NSL TO VA WITH A
*                                          REQUEST BUFFER            */
*DCL OPRVF   BIT(8) CONSTANT('07'X);    /* USED WITH PRIMEDFG -
*                                          NSL TO VF WITH A
*                                          REQUEST BUFFER            */
*DCL OPR02   BIT(8) CONSTANT('08'X);    /* USED WITH PRIMEDFG -
*                                          A/D TO 02                 */
*DCL OPRFC   BIT(8) CONSTANT('09'X);    /* TO FC WITH OPCE TO
*                                          REQUEST DEACT OF A
*                                          3705                      */
*DCL OPRFK   BIT(8) CONSTANT('0A'X);    /* REDRIVE ELEMENT ROUTING TO
*                                          FK                        */
*DCL OPRVAVF BIT(8) CONSTANT('0B'X);    /* USED BY V9 TO INTERFACE WITH
*                                          AN OPCE TO VA OR VF       */
*DCL OPRC0   BIT(8) CONSTANT('0D'X);    /* USED WITH PRILOFLG -
*                                          TO REDRIVE IGCC010D
*                                                            @Y17XAXF*/
*DCL OPRVI2  BIT(8) CONSTANT('10'X);    /* USED WITH PRIMEDFG -
*                                          A/D TO VI WITH AN OPCE    */
*DCL OPRV8   BIT(8) CONSTANT('11'X);    /* USED WITH PRIMEDFG -
*                                          A/D TO V8 WITH AN OPCE    */
*DCL OPRMP   BIT(8) CONSTANT('12'X);    /* OPRE FROM DLC TO MP FOR
*                                          I/O COMPLETE              */
*DCL OPRDRTN BIT(8) CONSTANT('13'X);    /* USED TO RETURN OPCE
*                                          TO ACTIVATE               */
*DCL OPRETOMF BIT(8) CONSTANT('14'X);   /* DLC ROUTE BACK TO MF AFTER
*                                          I/O                       */
*DCL OPRPRMRP BIT(8) CONSTANT('15'X);   /* NSL RETURNS TO VA AFTER
*                                          PRIMING                   */
*DCL OPRTOTCL BIT(8) CONSTANT('16'X);/*FLAG FIELD VALUE FOR TOTE     */
*                                    /*CLEANUP RESP HANDLER  @Y17XAXF*/
./ ADD NAME=TPCBD
         MACRO
         TPCBD
.*A-000000-999999                                              @X31X8X0
.* CHANGE ACTIVITY AS FOLLOWS:
.*************************** MICROFICHE FLAGS *************** SUPT CODE
.*C040070                                                        X03039
.*D340001,345001-345003                                          X03039
.*C160000                                                        S22025
.*A027000,345000                                                 A50196
.*C440000                                                       SA59162
.*             11/15/72   MODIFICATION DATE                     SA59162
.*A340001,345001-345003                                         SA56920
.*C040070                                                      @Z30X8XE
.*A446000                                                      @XA11307
.**********************************************************************
IEDQPCB  DSECT .                        PROCESS CONTROL BLOCK
*                                                                     *
*  DSECT NAME = TPCBD                                                 *
*                                                                     *
*  DESCRIPTIVE NAME = PROCESS CONTROL BLOCK DSECT                     *
*                                                                     *
*  COPYRIGHT = 'NONE'                                                 *
*                                                                     *
*  STATUS: CHANGE LEVEL 8                                      @Z30X8XE
*                                                                     *
         DS    0F
         DS    12X                      RESERVED                 Y02027
PCBJOBNA DS    FL8                      JOB NAME IN TIOT OF A.P. Y02027
PCBBUFIN DS    0BL1 .                   INITIAL BUFFER REQUEST
*                                       FOR PUT OR WRITE
PCBBUFO  DS    BL1 .                    MAXIMUM NUMBER OF FULL
*                                       BUFFERS ON READ-AHEAD QCB
PCBMH    DS    AL3 .                    ADDR OF MESSAGE HANDLER
PCBUCNT  DS    X .                      USE COUNT
PCBLINK  DS    AL3 .                    LINK FIELD
PCBBUFMX DS    X .                      READ-AHEAD BUFFER LIMIT
PCBDTRTN DS    AL3                      ADDRESS OF DATE/TIME RTN S22025
PCBLCBAD DS    A .                      ADDR OF LINE CONTROL BLOCK
PCBASID  DS    H                        ADDRESS SPACE IDENTIFIER Y02027
PCBCKPT  DS    H .                      CHECKPOINT OFFSET
PCBPEBAD DS    A                        ADDRESS OF THE PROCESS   Y02027
*                                       EXTENSION BLK FOR RELATEDY02027
*                                       APPLICATION PROGRAM
PCBOFLG  DS    X .                      FLAG BYTE
*                  BIT DEFINITIONS
PCBRORIN EQU   X'80' .                  APPL PROG ROLLOUTABLE
PCBRORIF EQU   X'7F' .                  APPL PROG NON-ROLLOUTABLE
PCBTSON  EQU   X'40' .                  APPL PROG IS TSO
PCBTSOF  EQU   X'BF' .                  APPL PROG IS NOT TSO
PCBCKPTN EQU   X'20' .                  ENVIRONMENT CHECKPOINT
*                                       HAS BEEN TAKEN IN MCP
PCBCKPTF EQU   X'DF' .                  ENVIRONMENT CHECKPOINT
*                                       HAS NOT BEEN TAKEN IN MCP
PCBRETVN EQU   X'10' .                  SUBSEQUENT RETRIEVAL
PCBRETVF EQU   X'FF'-X'10' .            NOT SUBSEQUENT RETRIEVAL
PCBPIPN  EQU   X'02' .                  PUT IN PROGRESS          A50196
         DS    XL3
         DS    BL1
         DS    AL3
         DS    AL1
PCBUNTCT DS    AL1 .                    UNIT COUNT
PCBBFSZE DS    XL2 .                    BUFFER SIZE
PCBRSERH DS    AL1 .                    HEADER BUFFER RESERVE
PCBRSERT DS    AL1 .                    TEXT BUFFER RESERVE
PCBORC   DS    X .                      OPEN RETURN CODE
PCBOFLG1 DS    X .                      FLAG BYTE               SA59162
PCBSFLAG EQU   X'80' .                  OMIT MSG SERVICING      SA59162
PCBABEND EQU   X'40' .                  ALLP PROG ABENDING      SA59162
PCBDELAY DS    H                        TCAM TIME DELAY        @XA11307
*                                        IN SECONDS            @XA11307
PCBPACE  DS    H                        MAX CNT BETWEEN DELAYS @XA11307
PCBCNT   DS    H                        COUNT SINCE LAST DELAY @XA11307
         DS    H                        RESERVED FOR ALIGNMENT @XA11307
PCBEND   EQU   *
PCBSIZE  EQU   PCBEND-IEDQPCB
         MEND
./ ADD NAME=TPEBD
         MACRO
         TPEBD
IEDQPEB  DSECT                          PROCESS EXTENSION BLOCK
*
PEBLINK  DS    A                        LINK FIELD OF NEXT PEB
*                                       IN CHAIN
PEBRCB   DS    2F                       RCB FOR TERMINATOR
PEBASID  DS    F                        ASID OF APP. PGM. TASK
PEBFLG   DS    0X                       A.P. ABEND; NO CMPOST
PEBASCB  DS    A                        ADDRESS OF ASCB FOR THIS
*                                       APPLICATION PROGRAM
PEBTCB   DS    A                        ADDRESS OF TCB FOR THIS
*                                       APPLICATION PROGRAM
PEBPCB   DS    A                        ADDRESS OF ASSOCIATED PCB
PEBPEWA  DS    F                        PEWA ADDR IF A.P. TERMINATING
PEBFLAG  DS    X                        PEB FLAG
PEBTERM  EQU   X'80'                    A.P. IS TERMINATING
PEBCLOSE EQU   X'10'                    APPL PROG HAS POSTED
*                                       ELEMENT TO IEDQEU
PEBSPARE DS    3X                       UNUSED
PEBECBA  DS    4X                       ECB ADDR FOR A.P. CLOSE
PEBEND   DS    0X                       SIZE OF
PEBSIZE  EQU   PEBEND-IEDQPEB           PEB
         MEND
./ ADD NAME=TPECBD
         MACRO
         TPECBD
*C150000                                                       @OZ07830
*A570000                                                       @OZ18744
IEDQPECB DSECT                          PROCESS ECB
*
PECBECB  DS    F                        ELEMENT CONTROL BLOCK  @OZ07830
*                                       USED BY SVC 102 FOR A.P.
PECBPARM DS    F                        PARAMETER LIST FOR SVC
*                                       102
PECBSAVE DS    A                        ADDRESS OF USER'S SAVE
*                                       AREA ON GET,PUT,OR POINT
PECBPUTF DS    FL1                      PUT FLAG
FIRSTPUT EQU   X'01'                    FIRST TIME PUT/LOCATE
PECBRET  DS    AL3                      ADDRESS OF USER'S
*                                       RETURN ON CHECK
PECBERR  DS    0F                       ERROR CODE
PECBSTAT DS    20X                      STATUS FOR SYNAD
         ORG   PECBSTAT
PECBSA   DS    18F                      SAVE AREA FOR A.P. CK/PT
PECBFLAG EQU   PECBSTAT+4               FLAG FOR CHECKPOINT AND
*                                       MESSAGE STATUS
PECBSAVA EQU   PECBSTAT+4               SAVE AREA FOR EXITS
PECBOPTC DS    FL1                      X'40' DELETE=YES TPDATE@OZ18744
PECBDTSA DS    AL3                      USER DTSA - TPDATE     @OZ18744
PECBEND  DS    0X                       END OF BLOCK
PECBSIZE EQU   PECBEND-IEDQPECB         SIZE OF PECB
         MEND
./ ADD NAME=TPEWAD
         MACRO
         TPEWAD
.*                 7/1/73  MODIFICATION DATE                    SA63961
.*A180000                                                       SA63961
*A400000                                                         S22027
*C400000                                                         S22027
*C614000                                                       @ZA01132
*C633000                                                       @OZ07798
*A635600                                                       @OZ27843
*A607000                                                       @OY20522
IEDQPEWA DSECT                          PROCESS ENTRY WORKAREA
PEWARES  DS    2F                       RESERVED FOR LCB         Y02027
PEWAISZE DS    F                        COUNT OF IDLES           Y02027
PEWARTVE DS    2F                       RETRIEVE SAVEAREA        Y02027
MRM      EQU   X'40'                    FIRST MULTI RETRIEVE     Y02027
MULTSEQ  EQU   X'80'                    MULTI RETRIEVE IND.      Y02027
PEWALINK DS    A                        ADDRESS OF NEXT PEWA IN  Y02027
*                                       CHAIN                    Y02027
PEWAECBA DS    F                        ADDR OF APPL PROG ECB
PEWASOWA DS    H                        WORKAREA DATA LENGTH
PEWAFLG  DS    X                        GENERAL FLAG BYTE
ERBBUSY  EQU   X'80'                    ERB IN USE               Y02027
ERBFREE  EQU   X'7F'                    ERB AVAILABLE            Y02027
CFLG     EQU   X'40'                    CLOSEDOWN IN PROGRESS    Y02027
POSTAP   EQU   X'20'                    POST A.P. ECB            Y02027
POSTOFFF EQU   X'DF'                    MASK FOR NO POST         Y02027
RAFLG    EQU   X'08'                    READ AHEAD OK            Y02027
FIRSTR   EQU   X'04'                    FIRST FOR RETRIEVE       Y02027
MHOK     EQU   X'02'                    MAY BE POSTED TO MH      Y02027
PBUF     EQU   X'01'                    PARTIAL BUFFER (PUT)     Y02027
RFLG     EQU   X'01'                    RETRIEVE INITIATED       Y02027
PEWASTOP EQU   X'10' .                  DISABLED ENTRY CODE     SA63961
PEWABFCT DS    X                        BUFFER LIMIT             Y02027
PEUNCT   DS    0FL1                     UNITS PER BUFFER
PEPCBAD  DS    F                        ADDR OF PROCESS CNTL BLK
PERCQCB  DS    F                        ADDRESS OF THE QCB
*                                       ASSOCIATED WITH THE ERB
*                                       BELOW
PEWARESA DS    F                        RESERVED FOR LCB         Y02027
PEWALCBA DS    F
PEWARESB DS    F                        RESERVED FOR LCB         Y02027
PEWACBUF DS    F                        CURRENT BUFFER UNIT      Y02027
PEERB    DS    6F                       ELEMENT REQUEST BLOCK    Y02027
PEWAELEM DS    4F                       SPECIAL ELEMENT
PERAQCB  DS    F                        READ-AHEAD QCB           Y02027
PEWAQCBL DS    F                        LINK FIELD OF RAQCB      Y02027
PEWAQCBS DS    F                        STCB FIELD OF RAQCB      Y02027
EOMSAVE  DS    0F                       ADDR OF LAST EOM
PEWATIC  DS    F .                      CURRENT UNIT ADDRESS
PEWADEB  DS    F .                      DATA EXTENT BLOCK ADDRESS
PEWAPROC DS    F                        ADDRESS OF PROCESS ENTRY
PEWAPEBF DS    A                        ADDRESS OF PARTIALLY     Y02027
*                                       EMPTY BUFFER             Y02027
PEWAMOVE DS    A                        FOR GET, ADDRESS OF NEXT Y02027
*                                       BYTE TO BE MOVED IN BUFR Y02027
*                                       FOR PUT, ADDRESS OF FIRSTY02027
*                                       BYTE IN AIB WORKAREA     Y02027
PEWANEB  DS    A                        FOR GET, ADDRESS OF NEXT Y02027
*                                       EMPTY BYTE IN WORKAREA   Y02027
*                                       FOR PUT, ADDRESS OF NEXT Y02027
*                                       BYTE OF DATA TO BE MOVED Y02027
PEWAPEUN DS    A                        FOR GET, ADDRESS OF      Y02027
*                                       PARTIALLY EMPTY UNIT     Y02027
*                                       FOR PUT, SIZE OF DATA    Y02027
*                                       REMAINING IN WORKAREA    Y02027
PEWAOPT2 DS    FL1                      DATE AND TIME SWITCH     Y02027
DELETE   EQU   X'40'                    DELETE=YES SPECIFIED     Y02027
PEWADATE EQU   X'20'                    TPROCESS-  DATE=YES    @OY20522
DATE     EQU   X'10'                    DTSAREA IS SPECIFIED     Y02027
OVERFLOW EQU   X'04'                    OVERFLOW FOR CLOSE       Y02027
PEWAOUT  EQU   X'02'                    PEWA FOR OUTPUT DCB      Y02027
PEWAIN   EQU   X'01'                    PEWA FOR INPUT DCB       Y02027
PEWADTSA DS    AL3                      ADDRESS OF D/T INSERTION Y02027
PEWACTL  DS    X                        WORKAREA CONTENTS        Y02027
*                                       DESCRIPTOR BYTE          Y02027
NEWINIT  EQU   X'F0'                    INITIAL SEGMENT          Y02027
HDRFLG   EQU   X'F1'                    HEADER SEGMENT           Y02027
EOMFLAG  EQU   X'F2'                    LAST SEGMENT             Y02027
MESSAGE  EQU   X'F3'                    ENTIRE MESSAGE           Y02027
ISEGFLAG EQU   X'40'                    INTERMEDIATE SEGMENT     Y02027
EOR      EQU   X'F4'                    END OF RECORD          @ZA01132
PEWARDEL DS    X                        END OF RECORD            Y02027
PEWAOPTC DS    X                        FOR GET                  Y02027
TNMEFLG  EQU   X'80'                    DCBOPTCD=W               Y02027
MSGFLG   EQU   X'40'                    DCBOPTCD=U               Y02027
CTLBYTE  EQU   X'20'                    DCBOPTCD=C               Y02027
EODADFLG EQU   X'10'                    EODAD EXIT FLAG          Y02027
RECDEL   EQU   X'08'                    FIRST TIME RECDEL FLAG   Y02027
RTVFLG   EQU   X'04'                    RETRIEVE MODE SWITCH     Y02027
PARTBUF  EQU   X'02'                    PARTIALLY EMPTY BUFFER   Y02027
SYNADFLG EQU   X'01'                    EXIT TO SYNAD IF SPEC'D  Y02027
PEWAFLG1 DS    X                        CONTENTS OF DCBFLG1      Y02027
PEWAGSW  DS    2X                       GENERAL SWITCHES         Y02027
*        BYTE ONE                                                Y02027
UNDFLG   EQU   X'C0'                    UNDEFINED FORMAT         Y02027
FIXFLG   EQU   X'80'                    FIXED FORMAT             Y02027
VARFLG   EQU   X'40'                    VARIABLE FORMAT          Y02027
BLKFLG   EQU   X'10'                    BLOCKED RECORD           Y02027
RETRIEVE EQU   X'04'                    RETRIEVE OK              Y02027
INCWA    EQU   X'01'                    INCOMPLETE WORKAREA      Y02027
*        BYTE TWO                                                Y02027
EOM      EQU   X'80'                    EOM LAST TIME            Y02027
NEEDHDRN EQU   X'20'                    HEADER NEEDED            Y02027
RESETACT EQU   X'02'                    QRESET ACTIVE            Y02027
ARESET   EQU   X'01'                    QRESET IS ALLOWED        Y02027
PEWAPETO DS    H                        PROCESS ENTRY TERM NAME  Y02027
*                                       OFFSET                   Y02027
PEWAOFF  DS    H                        TERMNAME OFFSET TO MSG   Y02027
*                                       DESTINATION              Y02027
PEWASCAN DS    H                        SIZE OF FIELD SCANNED    Y02027
PEWALREC DS    H                        SIZE OF LOGICAL WORK UNITY02027
PEWAUSZE DS    H                        COUNT OF DATA IN BUFFER  Y02027
*                                       UNIT                     Y02027
PEWAPSZE DS    H                        COUNT OF DATA IN LOGICAL Y02027
*                                       BUFFER                   Y02027
PEWASRCE DS    H                        TERMNAME OFFSET OF SOURCEY02027
PEWAWA   DS    A                        ADDRESS OF WORKAREA IN   Y02027
*                                       AIB                      Y02027
PEWASAVE DS    9F                       SAVE AREA              @OZ07798
PEWARCB  DS    F                        RCB ADDRESS            @OZ07798
PEWAQCB  DS    F                        DUMMY QCB FOR APPL PROG@OZ27843
PEWAQLNK DS    F                         TO INDENTIFY PEWA IN  @OZ27843
PEWASTCB DS    F                         DISP TRACE ENTRY      @OZ27843
PEWASCB  DS    0X                       SCB - SIZE VARIABLE      Y02027
PEWATRT  DS    0X                       TRT OF INPUT DCB         Y02027
*                                       256 BYTES AFTER SCB      Y02027
PEWAEND  DS    0X                        WORKAREA
PEWASIZE EQU   PEWAEND-IEDQPEWA         SIZE OF PROCESS ENTRY
         MEND
./ ADD NAME=TPF1D
*        %GOTO PF1PLS;                  /* BILINGUAL HEADER
         MACRO
         TPF1D
.*A000000-999999                                               @Y17XAXF
IEDPF1   DSECT
*
*        DSECT FOR BUFFER PREFIX
*
PF1RH    DS    CL3 .                    RH
PF1FLAGS DS    CL1 .                    FLAG BYTE
PF1FIDI  EQU   X'80' .                   FID INDICATOR
PF1EXPI  EQU   X'40' .                   EXPIDITED/NORMAL INDICATOR
*PF1FORM       BITS 2&3                  DESCRIBES 2ND WORD OF PREFIX
PF1PTRI  EQU   X'20' .                    PF1SEQP IS PRESENT
PF1IDI   EQU   X'10' .                    PF1SEQID ONLY IS PRESENT
PF1SEQRI EQU   X'30'                      PF1SEQID AND PF1RULEN PRESENT
*        EQU   X'08'-X'01' .             RESERVED
PF1WORD2 DS    0AL4 .                   2ND WORD FORMATED AS INDICATED
*                                        IN PF1FORM
PF1SEQP  DS    0AL4 .                   PTR TO AN AREA INTO WHICH THE
*                                        ASSIGNED SEQ# WILL BE
*                                        STORED(FID1 ONLY)
PF1SEQID DS    CL2 .                    FOR FID1 - SEQ# OR ID
*                                           FID0 - IND
PF1RULEN DS    CL2 .                    FOR FID1 ONLY - CONTAINS LENGTH
*                                        OF RU(DATA) ON 0 LENGTH ERROR
*                                        BUFFERS
PF1LEN   EQU   *-IEDPF1 .               LENGTH OF THIS PREFIX
         MEND
*        */
*%PF1PLS:;
*DECLARE
*  1 IEDPF1 BASED BDY(WORD),
*/*                                                                  */
*/*      DSECT FOR BUFFER PREFIX                                     */
*/*                                                                  */
*    2 PF1RH    CHAR(3),                /* RH                        */
*    2 PF1FLAGS CHAR(1),                /* FLAG BYTE                 */
*      3 PF1FIDI BIT(1),                /*  FID INDICATOR            */
*      3 PF1EXPI BIT(1),                /*  EXPEDITED/NORMAL IND     */
*      3 PF1FORM BIT(2),                /*  DESCRIBES 2ND WORD OF PF1*/
*      3 *       BIT(4),                /*  RESERVED                 */
*    2 PF1WORD2 PTR(32),                /* 2ND WORD FORMATED AS      */
*                                       /*  INDICATED IN PF1FORM     */
*      4 PF1SEQP  PTR(32),              /* PTR TO AN AREA INTO WHICH */
*                                       /*  THE ASSIGNED SEQ# WILL BE*/
*                                       /*  STORED(FID1 ONLY)        */
*        5 PF1SEQID BIT(16),            /* FOR FID1 - SEQ# OR ID     */
*                                       /*     FID0 - IND            */
*        5 PF1RULEN BIT(16);            /* FOR FID1 ONLY - CONTAINS  */
*                                       /*  LEN OF RU(DATA) ON 0     */
*                                       /*  LENGTH ERROR BUFFERS     */
* %PF1LEN='LENGTH(IEDPF1)';             /* LENGTH OF THIS PREFIX     */
*/* PF1FORM VALUES                                                   */
* DCL PF1IDI   BIT(2) CONSTANT('01'B);  /* PF1SEQP IS PRESENT        */
* DCL PF1PTRI  BIT(2) CONSTANT('10'B);  /* PF1SEQID ONLY IS PRESENT  */
* DCL PF1SEQRI BIT(2) CONSTANT('11'B);  /* PF1SEQID & PF1RULEN ARE   */
./ ADD NAME=TPIU0D
*        %GOTO PIU0PLS;                /* BILINGUAL HEADER
         MACRO
         TPIU0D
.*A000000-999999                                               @Y17XAXF
IEDPIU0  DSECT
*
*        FORMAT OF FIDO PIU
*
PIU0TH   DS    CL10 .                   TH AREA
PIU0RH   DS    CL3 .                    RH AREA
PIU0PAD  DS    CL1 .                    FID0 PAD BYTE
PIU0PAD0 EQU   X'00' .                   PAD CONSTANT
PIU0RU   EQU   * .                      START OF RU DATA
PIU0LEN  EQU   *-IEDPIU0                LEN OF PIU
         MEND
*        */
*%PIU0PLS:;
*DECLARE
*  1 IEDPIU0 BASED BDY(BYTE),
*/*                                                                  */
*/*      FORMAT OF FID0 PIU                                          */
*/*                                                                  */
*   2 PIU0TH   CHAR(10),                /* TH AREA                   */
*   2 PIU0RH   CHAR(3),                 /* RH AREA                   */
*   2 PIU0PAD  CHAR(1),                 /* FID0 PAD BYTE             */
*   2 PIU0RU   CHAR(0);                 /* START OF RU AREA          */
*%PIU0LEN='LENGTH(IEDPIU0)';            /* LENGTH OF PIU             */
* DCL PIU0PAD0 BIT(8) CONSTANT('00'X);  /* FID0 PAD CONSTANT         */
./ ADD NAME=TPIUD
*        %GOTO PIUPLS;                 /* BILINGUAL HEADER
         MACRO
         TPIUD
.*A000000-999999                                               @Y17XAXF
IEDPIU   DSECT
*
*        FORMAT OF FID1 PIU
*
PIUTH    DS    CL10 .                   TH AREA
PIURH    DS    CL3 .                    RH AREA
PIURU    EQU   * .                      START OF RU DATA
PIULEN   EQU   *-IEDPIU .               LENGTH OF PIU
         MEND
*        */
*%PIUPLS:;
*DECLARE
*  1 IEDPIU BASED BDY(BYTE),
*/*                                                                  */
*/*      FORMAT OF FID1 PIU                                          */
*/*                                                                  */
*   2 PIUTH  CHAR(10),                  /* TH AREA                   */
*   2 PIURH  CHAR(3),                   /* RH AREA                   */
*   2 PIURU  CHAR(0);                   /* START OF RU DATA          */
*%PIULEN='LENGTH(IEDPIU)';              /* LENGTH OF PIU             */
./ ADD NAME=TPLBMD
*        %GOTO PLSPLBM;                 /*
         MACRO
         TPLBMD
.*A000000-999999                                               @Y17XAXF
*
*        PARAMETER LIST FOR BRACKET MANAGEMENT INTERFACE
*
IEDPLBM  DSECT
PLBMFLG1 DS    XL1                      FLAG BYTE
PLBMSNDI EQU   X'80'                     ON-SENDING(OUTBOUND FLOW)
*                                        OFF-RECEIVING(INBOUND FLOW)
*PLBMSTAT EQU  X'40'-X'20'               SPECIAL STATUS INDICATOR
PLBMERR  EQU   X'60' .                    AN ERROR HAS BEEN DETECTED ON
*                                          THIS REQUEST
PLBMPURG EQU   X'20' .                    THIS REQUEST WAS RECEIVED
*                                          (INBOUND) WHIL PURGING CHAIN
*                                          STATE
PLBMNORM EQU   X'00' .                    NOT ANY OF ABOVE CONDITIONS
*        EQU   X'10'-X'01'               RESERVED
         DS    XL1                      RESERVED
PLBMSNC  DS    CL2                      1ST 2 BYTES OF SNA SENSE DATA
*                                       (ONLY PRESENT WHEN TRHSDI=ON)
*                                         THIS FIELD IS ALSO USED TO
*                                         PASS SENSE ON ERRORS DETECTED
*                                         BY BRACKET MANAGER
PLBMRH   DS    CL3                      RH
PLBMCMD  DS    CL1                      COMMAND CODE BYTE(0 FOR FMD)
PLBMSIB  DS    A                        POINTER TO SIB
PLBMLCB  DS    A                        POINTER TO LCB
         MEND  */
*%PLSPLBM : ;
*/*                                                                  */
*/*      PARAMETER LIST FOR BRACKET MANAGEMENT INTERFACE             */
*/*                                                                  */
* DECLARE
* 1 IEDPLBM  BASED(PLBMPTR),
*   2 PLBMFLG1 CHAR(1),                 /* FLAG BYTE                 */
*     3 PLBMSNDI BIT(1),                /* ON-SENDING(OUTBOUND FLOW)
*                                       OFF-RECEIVING(INBOUND FLOW)  */
*     3 PLBMSTAT BIT(2),                /* SPECIAL STATUS INDICATOR  */
*     3 *        BIT(5),                /* RESERVED                  */
*   2 *        CHAR(1),                 /* RESERVED                  */
*   2 PLBMSNC  CHAR(2),                 /* 1ST 2 BYTES OF SNA SENSE
*                                       DATA (ONLY PRESENT WHEN TRHSDI
*                                       =ON)                         */
*                                       /*THIS FIELD IS ALSO USED TO
*                                         PASS SENSE ON ERRORS DETECTED
*                                         BY BRACKET MANAGER         */
*   2 PLBMRH   CHAR(3),                 /* RH                        */
*   2 PLBMCMD  CHAR(1),                 /* CMD CODE BYTE(0 FOR FMD)  */
*   2 PLBMSIB  PTR(31),                 /* POINTER TO SIB            */
*   2 PLBMLCB  PTR(31);                 /* POINTER TO LCB            */
*/*PLBMSTAT VALUES                                                   */
* DCL PLBMERR  BIT(2) CONSTANT('11'B);  /*AN ERROR HAS BEEN DETECTED
*                                         ON THIS REQUEST            */
* DCL PLBMPURG BIT(2) CONSTANT('01'B);  /*THIS REQUEST WAS RECEIVED
*                                         (INBOUND) WHILE IN PURGING
*                                         CHAIN STATE                */
* DCL PLBMNORM BIT(2) CONSTANT('00'B);  /*NOT ANY OF ABOVE CONDITIONS*/
./ ADD NAME=TPLMVD
*        %GOTO PLSPLMV;
         MACRO
         TPLMVD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A-000000-999999                                              @Y17XANU
IEDPLMV  DSECT
*
*        DSECT FOR DATA MOVE PARAMETER LIST
*
PLMVTU   DS    A .                      TARGET UNIT ADDRESS
PLMVTD   DS    A .                      TARGET DATA ADDRESS
PLMVSU   DS    A .                      SOURCE UNIT ADDRESS
PLMVSD   DS    A .                      SOURCE DATA ADDRESS
PLMVLNTH DS    H .                      LENGTH OF DATA TO BE MOVED
PLMVFLG1 DS    XL1 .                    FLAG BYTE 1            @Y17XAXF
PLMVUNCF EQU   X'80' .                    UNCHAIN FLAG         @Y17XAXF
PLMVSCTG EQU   X'40' .                    SOURCE = CONTIGUOUS AREA
PLMVTCTG EQU   X'20' .                    TARGET = CONTIQUOUS AREA
*        EQU   X'10'-X'01'                RESERVED             @Y17XAXF
PLMVFLG2 DS    XL1 .                    FLAG BYTE 2            @Y17XAXF
PLMVUNCA DS    A .                      ADDR OF UNUSED TARGET UNIT
*                                         UNCHNED BY IEDMVBFR  @Y17XAXF
PLMVLEN  EQU   *-IEDPLMV .              LENGTH OF P-LIST
         MEND
*        */
*%PLSPLMV: ;
*DECLARE 1 IEDPLMV BDY(WORD) BASED(IEDPLMVP),
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*   2 PLMVTU   PTR(31),                 /* TARGET UNIT ADDRESS       */
*   2 PLMVTD   PTR(31),                 /* TARGET DATA ADDRESS       */
*   2 PLMVSU   PTR(31),                 /* SOURCE UNIT ADDRESS       */
*   2 PLMVSD   PTR(31),                 /* SOURCE DATA ADDRESS       */
*   2 PLMVLNTH FIXED(16),               /* LENGTH OF DATA TO BE MOVED*/
*   2 PLMVFLG1 BIT(8),                  /* FLAG BYTE 1       @Y17XAXF*/
*     3 PLMVUNCF BIT(1),                /*  UNCHAIN FLAG     @Y17XAFX*/
*     3 PLMVSCTG BIT(1),                /*  SOURCE = CONTIGUOUS AREA */
*     3 PLMVTCTG BIT(1),                /*  TARGET = CONTIGUOUS AREA */
*     3 *        BIT(5),                /*  RESERVED         @Y17XAFX*/
*   2 PLMVFLG2 BIT(8),                  /* FLAG BYTE 2       @Y17XAXF*/
*   2 PLMVUNCA PTR(31);                 /* ADDRESS OF UNUSED TARGET  */
*                                       /*  UNT UNCHNED BY IEDMVBFR  */
*                                       /*                   @Y17XAXF*/
*
* %PLMVLEN='LENGTH(IEDPLMV)';           /* LENGTH OF P-LIST          */
./ ADD NAME=TPLRQD
*        %GOTO PLSPLRQ;                 /* BILINGUAL HEADER
         MACRO
         TPLRQD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A-000000-999999                                              @Y17XAXU
IEDPLRQ  DSECT
*
*        DSECT FOR REQUEST PARAMETER LIST
*
PLRQBFR  DS    A .                      BUFFER ADDRESS
PLRQOAF  DS    H .                      ORIGIN TNT OFFSET
PLRQDAF  DS    H .                      DESTINATION TNT OFFSET
PLRQLNTH DS    XL1 .                    LENGTH OF COMMAND CODE
PLRQCMD  DS    0CL3 .                   COMMAND CODE
PLRQCMD1 DS    CL1 .                    COMMAND CODE - BYTE 1
PLRQCMD2 DS    CL1 .                    COMMAND CODE - BYTE 2
PLRQCMD3 DS    CL1 .                    COMMAND CODE - BYTE 3
PLRQLEN  EQU   *-IEDPLRQ .              LENGTH OF P-LIST
         MEND
*        */
*%PLSPLRQ: ;
*DECLARE 1 IEDPLRQ BDY(WORD) BASED(IEDPLRQP),
*/*                                                                  */
*/*      DSECT FOR REQUEST PARAMETER LIST                            */
*/*                                                                  */
*   2 PLRQBFR    PTR(31),               /* BUFFER ADDRESS            */
*   2 PLRQOAF    FIXED(15),             /* ORIGIN TNT OFFSET         */
*   2 PLRQDAF    FIXED(15),             /* DESTINATON TNT OFFSET     */
*   2 PLRQLNTH   FIXED(8),              /* LENGTH OF COMMAND CODE    */
*   2 PLRQCMD    CHAR(3),               /* COMMAND CODE              */
*    3 PLRQCMD1  CHAR(1),               /* COMMAND CODE - BYTE 1     */
*    3 PLRQCMD2  CHAR(1),               /* COMMAND CODE - BYTE 2     */
*    3 PLRQCMD3  CHAR(1);               /* COMMAND CODE - BYTE 3     */
*
* %PLRQLEN='LENGTH(IEDPLRQ)';           /* LENGTH OF PLIST           */
./ ADD NAME=TPRFD
*        %GOTO BSLPRF;                                               /*
         MACRO
         TPRFD
.*A-000000-999999                                              @X31X8X0
.* CHANGE ACTIVITY = AS FOLLOWS:
.*C144000                                                       SA51078
.*A055000,061000,144600-146400                                  SA51078
.*C066000                                                       SA51783
.*A067000-068000                                                SA51783
.*C01000,093000                                                  S22029
.*D126000-129000                                                 S22029
.*A009000,051000                                                 S21101
.*D249000-948000                                                 S21101
.*A006200,132000                                                 S22025
.*C010000                                                        S22025
.*A000000,054000,249000                                          S22024
.*C246000                                                        S22024
.*A053700,115000,361000,751000-752000                            X03039
.*C010000,274000,358000,414000,493000                            X03039
.*D055001                                                        X03039
.*C010000,274000                                               @Z30X8XE
.*A055000,171000,729000,638000                                 @Y17XAXF
.*C138000,473000-477000                                        @Y17XAXF
IEDQPRF  DSECT
*        UPDATED  6/7/74                                       @Z30X8XE
.*       CONVERT TO A BILINGUAL DSECT 07/17/72                   S22024
         SPACE
         SPACE
PRFRCB   DS    0D .                     RESOURCE CONTROL BLOCK
PRFOPCDE DS    0XL1 .                   CCW OPERATION CODE
PRFKEY   DS    XL1 .                    ELEMENT KEY OF BUFFER
PRFIOADR DS    0AL3 .                   NEXT DATA BYTE(ADDRESS) TO BE
*                                       TRANSFERED(READ)
PRFQCBA  DS    XL3 .                    QCB ADDRESS
PRFFLAGS DS    0XL1 .                   CCW FLAGS
PRFPRI   DS    XL1 .                    PRIORITY OF BUFFER
PRFLINK  DS    0XL3 .                   LINK FIELD OF BUFFER
         DS    XL1 .                    UNUSED WHEN CCW
PRFCOUNT DS    H .                      CCW (READ/WRITE) COUNT
PRFTIC   DS    0A .                     TIC CCW & LINK TO NEXT UNIT
*                                                              @Y17XAXF
PRFTICC  DS    XL1 .                    TIC CCW                @Y17XAXF
PRFEOMSG EQU   X'80' .                  TEMPORARY END OF MESSAGE S21101
*                                                                S21101
PRFBFMM  EQU   X'40' .                  HEADER CONVERTED TO TEXT S21101
*                                                                S21101
PRFTICON EQU   X'08' .                  TIC COMMAND CODE         X03039
PRFTI0   DS    AL3 .                    TIC ADDRESS            @Y17XAXF
PRFSUNIT DS    0XL1 .                   START OF LOGICAL UNIT
PRFPLQCB DS    0XL1 .                   PRIORITY INDEX          SA51078
PRFPIUO  DS    0XL1 .                   OFFSET TO PIU          @Y17XAXF
PRFNBUNT DS    XL1 .                    NO. UNITS IN THIS BUFFER
PRFLCB   DS    AL3 .                    POINTER TO LCB
PRFSVFFO DS    0XL3 .                   FEFO PTR TO MARK SVCD   SA51078
PRFSRCE  DS    H .                      SRCE INDEX TO TERMNAME TBL
PRFSIZE  DS    0H .                     SIZE OF DATA IN THIS BFRSA51783
         DS    XL1 .                    LAST BYTE OF SVFFO      SA51783
PRFSVFLG DS    XL1 .                    SAVED DATA FLAGS        SA51783
PRFSTAT1 DS    XL1 .                    STATUS BYTE
*                        BIT DEFINITIONS
PRFCNCLN EQU   X'80' .                  CANCEL MESSAGE EXECUTED
PRFCNCLF EQU   X'FF'-PRFCNCLN .         MESSAGE NOT CANCELLED
PRFERMGN EQU   X'40' .                  ERROR MESSAGE IN THIS BFR
PRFERMGF EQU   X'BF' .                  NOT ERROR MESSAGE BUFFER
PRFITCPN EQU   X'20' .                  MESSAGE BEING HELD
PRFITCPF EQU   X'DF' .                  MESSAGE NOT BEING HELD
PRFTSMSG EQU   X'10' .                  THIS IS A TSO MESSAGE    S22029
PRFDUPLN EQU   X'08' .                  DUPLICATE HEADER BUFFER
PRFDUPLF EQU   X'F7' .                  ORIGINAL BUFFER
PRFEOFN  EQU   X'04' .                  SETEOF WAS EXECUTED
PRFEOFF  EQU   X'FB' .                  SETEOF NOT EXECUTED
PRFLOCK  EQU   PRFEOFN  .               LOCK EXECUTED THIS MESSAGE
PRFNLSTN EQU   X'02' .                  NOT LAST BUFFER
PRFNLSTF EQU   X'FD' .                  LAST BUFFER
PRFESCAP EQU   X'FC' .                  OP CONTROL ESCAPE BUFFER X03039
PRFNHDRN EQU   X'01' .                  NOT HEADER BUFFER
PRFNHDRF EQU   X'FE' .                  HEADER BUFFER
*
PRFXTRA  DS    0AL3 .                   POINTER TO ADDL RCDS - CURR
         ORG   PRFXTRA+1                SET DISP TO EOB          S22025
PRFEOB   DS    0H                       EOB OFFSET SAVE AREA     S22025
         ORG   PRFXTRA                                           S22025
PRFCORE  DS    AL3 .                    POINTER TO CURR RCD - COREQ
PRFSCAN  DS    0H                       SCAN POINTER           @Y17XAXF
         DS    CL1 .                     RESERVED              @Y17XAXF
PRFISIZE DS    CL1 .                     NUMBER OF RESERVES    @Y17XAXF
PRFNTXT  DS    0AL3 .                   POINTER TO NEXT TEXT SEG
PRFEOBOF DS    0XL1 .                   OFFSET INTO RECORD      SA51078
PRFSVPRI DS    0XL1 .                   PQCB INDEX TO MARK SVCD SA51078
PRFTQBCK DS    0XL3 .                   BACK-CHAIN TEXT SEGS    SA51078
         DS    XL1 .                                            SA51078
PRFSVSEQ DS    XL2 .                    SEQ NO FOR MARK SVCD    SA51078
PRFCRCD  DS    AL3 .                    POINTER TO CURRENT SEGMENT
PRFNHDR  DS    0AL3 .                   POINTER TO NEXT HDR SEG
PRFCHDR  DS    AL3 .                    POINTER TO HDR OF CURR MSG
PRFSTXT  DS    0XL1 .                    START OF TEXT LABEL
*
PRFHQBCK DS    AL3 .                    BACK CHAIN - HDR SEGMENTS
PRFISEQ  DS    H .                      INPUT SEQUENCE NUMBER
PRFDEST  DS    H .                      DEST INDEX TO TERMNAME TBL
PRFSHDR  DS    0XL1 .                   START OF HEADER LABEL
         SPACE 3                                               @Y17XAXF
IEDPF1   DSECT                                                 @Y17XAXF
*                                                              @Y17XAXF
*        DSECT FOR BUFFER PREFIX                               @Y17XAXF
*                                                              @Y17XAXF
PRF1RH   DS    CL3 .                    RH                     @Y17XAXF
PRF1FLG1 DS    XL1 .                    FLAG BYTE              @Y17XAXF
PRF1FIDI EQU   X'80' .                   FID1 INDICATOR        @Y17XAXF
PRFIEXPI EQU   X'40' .                   EXPIDITED/NORMAL IND  @Y17XAXF
*PRF1FORM      BITS 2&3                  DESC 2ND WORD OF PREF @Y17XAXF
PRF1PTRI EQU   X'10' .                    PRF1SEQP IS PRESENT  @Y17XAXF
PRF1IDI  EQU   X'20' .                    PRF1SQID ONLY IS     @Y17XAXF
*                                          PRESENT             @Y17XAXF
PRF1SQLI EQU   X'30'                      PRF1SQID AND         @Y17XAXF
*                                          PRF1RULN PRESENT    @Y17XAXF
PRF1USS  EQU   X'08' .                    CONV FROM USS TO FSS @Y17XAXF
PRF1LOGD EQU   X'04' .                    BUFFER CONTAINS LOGON DATA
*                                                              @Y17XAXF
*        EQU   X'02'-X'01' .              RESERVED             @Y17XAXF
PRF1WD2  DS    0A .                     2ND WORD FORMAT AS IND @Y17XAXF
*                                        IN PRFFORM            @Y17XAXF
PRF1SEQP DS    0A .                     PTR TO AN AREA INTO    @Y17XAXF
*                                        WHICH ASSIGNED NUMBER @Y17XAXF
*                                        WILL BE STORED(FID1)  @Y17XAXF
PRF1SQID DS    0H .                     FOR FID1 - SEQ         @Y17XAXF
*                                           FID0 - IND         @Y17XAXF
PRF1TAG1 DS    XL1 .                     FIRST TAG BYTE        @Y17XAXF
* USE TTHTAGS VALUES FOR PRF1TAGS                              @Y17XAXF
*PRF1TAGS      BITS 0-3 .                 TAG ROUTING AND TYPE @Y17XAXF
*              BITS 4-7 .                 RESERVED ..          @Y17XAXF
* USE TTHTAG2 TP OP CODE VALUES FOR PRF1TAG2                   @Y17XAXF
PRF1TAG2 DS    XL1 .                     SECOND TAG  BYTE      @Y17XAXF
*                                        (WHEN USED AS A TP OP @Y17XAXF
*                                         CODE, PRF1TAG1 MUST  @Y17XAXF
*                                         BE 0)                @Y17XAXF
PRF1RULN DS    H .                      FOR FID1 ONLY - LENGTH @Y17XAXF
*                                        OF RU(DATA) ON 0 LEN  @Y17XAXF
*                                        ERROR BUFFERS         @Y17XAXF
PRF1LEN  EQU   *-IEDPF1 .               LENGTH OF BUFFER PREF  @Y17XAXF
         SPACE 2                                               @Y17XAXF
IEDPF2   DSECT                          PIU PREFIX             @Y17XAXF
*                                                              @Y17XAXF
*        DSECT FOR PIU PREFIX                                  @Y17XAXF
*                                                              @Y17XAXF
PRF2FLG2 DS    XL1 .                    FLAG BYTE              @Y17XAXF
PRF2TNTI EQU   X'80' .                   TNT OFFSETS EXIST     @Y17XAXF
*                                           IN PIU             @Y17XAXF
PRF2FORM EQU   X'40' .                   2ND WORD IN PREFIX    @Y17XAXF
*                                           CONTAINS A POINTER @Y17XAXF
*                                           TO A SEQ NO AREA   @Y17XAXF
PRF2SMI  EQU   X'20' .                   START MI INDICATOR(TSO ONLY)
*                                                              @Y17XAXF
PRF2TERM EQU   X'10' .                   FORCED TERMINATE IN   @YM08991
*                                         PROGRESS             @YM08991
*        EQU   X'08'-X'01' .             RESERVED              @YM08991
         DS    CL3 .                    RESERVED               @Y17XAXF
PRF2WD2  DS    0A                       2ND WORD(FORMAT DEFINED@Y17XAXF
*                                        BY PRF2FORM FIELD     @Y17XAXF
PRF2SEQP DS    A .                      PTR TO SEQ NO AREA     @Y17XAXF
PRF2LEN  EQU   *-IEDPF2 .               LEN OF PIU PREFIX      @Y17XAXF
         SPACE 2                                               @Y17XAXF
*       *************************************************************
*   0   *     KEY      *                    QCBA                    *
*       *************************************************************
*   4   *     PRI      *                    LINK                    *
*       *************************************************************
*   8   *                            TIC                            *
*       *************************************************************
*  12   *  NBUNT/BTUA  *                     LCB                    *
*       *************************************************************
*  16   *            SRCE             *            SIZE             *
*       *************************************************************
*  20   *    STAT1     *                XTRA/CORE                   *
*       *************************************************************
*  24   *            SCAN             *         NTXT/TQBCK          *
*       *************************************************************
*  28   *  NTXT/TQBCK  *                   CRCD                     *
*       *************************************************************
*  32   *                NHDR/CHDR                   *  STXT/HQBCK  *
*       *************************************************************
*  36   *         STXT/HQBCK          *            ISEQ             *
*       *************************************************************
*  40   *            DEST             *
*       *******************************
*
         MEND  , */
*%BSLPRF  :  ;
*DECLARE
*  1 IEDQPRF  BDY(DWORD) BASED(IEDQPPTR),
*/*      UPDATED  6/7/74                                      Y30X8XE*/
*   2 PRFRCB      CHAR(8) BDY(DWORD),   /* RESOURCE CONTROL BLOCK    */
*    3 PRFKEY       CHAR(1),            /* ELEMENT KEY OF BUFFER     */
*     4 PRFOPCDE    CHAR(1),            /* CCW OPERATION CODE        */
*    3 PRFQCBA     PTR(24)  BDY(BYTE),  /* QCB ADDRESS               */
*     4 PRFIOADR    PTR(24)  BDY(BYTE), /* NEXT DATA BYTE(ADDRESS)
*                                       TO BE TRANSFERRED(READ)      */
*    3 PRFPRI      CHAR(1),             /* PRIORITY OF BUFFER        */
*     4 PRFFLAGS    CHAR(1),            /* CCW FLAGS                 */
*    3 PRFLINK     PTR(24)  BDY(BYTE),  /* LINK FIELD OF BUFFER      */
*     4 *           CHAR(1),            /* UNUSED WHEN CCW           */
*     4 PRFCOUNT    FIXED(15) BDY(BYTE), /* CCW (READ/WRITE) COUNT   */
*   2 PRFTIC      CHAR(4),              /* TIC CCW AND NEXT UNIT ADDR
*                                                              X03039*/
*    3 PRFTICC     CHAR(1),             /* TIC CCW           @Y17XAXF*/
*     4 PRFEOMSG BIT(1),                /* TEMPORARY END OF
*                                       MESSAGE                S21101*/
*     4 PRFBFMM  BIT(1),                /* HEADER CONVERTED TO
*                                       TEXT                   S21101*/
*     4 *        BIT(1),                /* RESERVED                  */
*     4 *        BIT(1),                /* RESERVED                  */
*     4 PRFTICON BIT(1),                /* TIC COMMAND CODE    X03039*/
*     4 *        BIT(1),                /* RESERVED                  */
*     4 *        BIT(1),                /* RESERVED                  */
*     4 *        BIT(1),                /* RESERVED                  */
*    3 PRFTI0      PTR(24),             /* TIC ADDRESS               */
*   2 PRFNBUNT    PTR(8),               /* NUMBER OF UNITS IN THIS
*                                       BUFFER                       */
*    3 PRFSUNIT    CHAR(1),             /* START OF LOGICAL UNIT     */
*     4 PRFPLQCB    PTR(8),             /* PRIORITY INDEX     SA51078*/
*      5 PRFPIUO     PTR(8),            /* OFFSET TO PIU     @Y17XAXF*/
*   2 PRFLCB      PTR(24)  BDY(BYTE),   /* POINTER TO LCB            */
*   2 *           CHAR(4),              /* START OF SRCE AND SIZE    */
*    3 PRFSVFFO    PTR(24) BDY(BYTE),   /* FEFO PTR TO MARK SVCD
*                                                             SA51078*/
*                                       /* SRCE INDEX TO TERMNAME TBL*/
*     4 PRFSRCE     FIXED(15) BDY(HWORD),
*                                       /* SIZE OF DATA IN THIS BFR  */
*     4 PRFSIZE     FIXED(15) BDY(HWORD),
*    3 PRFSVFLG    PTR(8),              /* SAVED DATA FLAGS   SA51783*/
*   2 PRFSTAT1    CHAR(1),              /* STATUS BYTE               */
*    3 PRFCNCLN BIT(1),                 /* CANCEL MESSAGE EXECUTED   */
*    3 PRFERMGN BIT(1),                 /* ERROR MESSAGE IN THIS BFR */
*    3 PRFITCPN BIT(1),                 /* MESSAGE BEING HELD        */
*    3 PRFTSMSG BIT(1),                 /* THIS IS A TSO MSG   S05331*/
*    3 PRFDUPLN BIT(1),                 /* DUPLICATE HEADER BUFFER   */
*    3 PRFEOFN  BIT(1),                 /* SETEOF WAS EXECUTED       */
*     4 PRFLOCK  BIT(1),                /* MESSAGE EXECUTED BY LOCK  */
*    3 PRFNLSTN BIT(1),                 /* NOT LAST BUFFER           */
*    3 PRFNHDRN BIT(1),                 /* NOT HEADER BUFFER         */
*   2 PRFCORE     PTR(24)  BDY(BYTE),   /* POINTER TO CURRENT RCD -
*                                       COREQ                        */
*    3 PRFXTRA     PTR(24)  BDY(BYTE),  /* POINTER TO ADDL RCDS -
*                                       CURR                         */
*     4 PRFSTSO     CHAR(1),            /* START OF TIME SHARING
*                                       DATA                      TSO*/
*     4 PRFEOB CHAR(2),                 /* EOB OFFSET SAVE AREA
*                                                              S22025*/
*   2 PRFSCAN     FIXED(15),            /* SCAN POINTER              */
*    3 *           CHAR(1),             /*  RESERVED         @Y17XAXF*/
*    3 PRFISIZE    CHAR(1),             /*  NUMBER OF RESERVE@Y17XAXF*/
*   2 PRFTQBCK    PTR(24)  BDY(BYTE),   /* BACK CHAIN - TEXT
*                                       SEGMENTS                     */
*    3 PRFNTXT     PTR(24)  BDY(BYTE),  /* POINTER TO NEXT TEXT SEG  */
*     4 PRFEOBOF    PTR(8),             /* OFFSET INTO RECORD SA51078*/
*      5 PRFSVPRI    PTR(8),            /* PQCB INDEX TO MARK SVCD
*                                                             SA51078*/
*     4 PRFSVSEQ    CHAR(2),            /* SEQ NO FOR MARK SVCD
*                                                             SA51078*/
*   2 PRFCRCD     PTR(24)  BDY(BYTE),   /* POINTER TO CURRENT
*                                       SEGMENT                      */
*   2 PRFCHDR     PTR(24)  BDY(BYTE),   /* POINTER TO HDR OF CURR
*                                       MSG                          */
*    3 PRFNHDR     PTR(24)  BDY(BYTE),  /* POINTER TO NEXT HDR SEG   */
*   2 PRFHQBCK    PTR(24)  BDY(BYTE),   /* BACK CHAIN - HDR SEGMENTS */
*    3 PRFSTXT     CHAR(1),             /* START OF TEXT LABEL       */
*   2 PRFISEQ     FIXED(15),            /* INPUT SEQUENCE NUMBER     */
*   2 PRFDEST     FIXED(15);            /* DEST INDEX TO TERMNAME
*                                       TABLE                        */
*DECLARE                                /*                   @Y17XAXF*/
*  1 IEDPF1 BASED(ADDR(IEDQPRF)-LENGTH(IEDPF1)),          /* @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      DSECT FOR BUFFER PREFIX                             @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*    2 PRF1RH   CHAR(3),                /* RH                @Y17XAXF*/
*    2 PRF1FLG1 BIT(8),                 /* FLAG BYTE         @Y17XAXF*/
*      3 PRF1FIDI BIT(1),               /*  FID1 INDICATOR   @Y17XAXF*/
*      3 PRF1EXPI BIT(1),               /*  EXPED/NORMAL IND @Y17XAXF*/
*      3 PRF1FORM BIT(2),               /*  DESC 2ND WORD    @Y17XAXF*/
*      3 PRF1USS  BIT(1),               /*  CONV FROM USS    @Y17XAXF*/
*                                       /*  TO FSS           @Y17XAXF*/
*      3 PRF1LOGD BIT(1),               /*  BUFFER CONTAINS LOGON  DATA
*                                                            @Y17XAXF*/
*      3 *        BIT(2),               /*  RESERVED         @Y17XAXF*/
*    2 PRF1WD2  PTR(31),                /* 2ND WORD FORM'T A @Y17XAXF*/
*                                       /*  IND IN PRFFORM   @Y17XAXF*/
*      4 PRF1SEQP PTR(31),              /* POINTER TO AREA   @Y17XAXF*/
*                                       /*  INTO WHICH THE   @Y17XAXF*/
*                                       /*  ASSIGNED NUMBER  @Y17XAXF*/
*                                       /*  IS STORED(FID1)  @Y17XAXF*/
*        5 PRF1SQID FIXED(16),          /* FOR FID1 - SEQ    @Y17XAXF*/
*                                       /*     FID0 - IND    @Y17XAXF*/
*          6 PRF1TAG1 BIT(8),           /*  FIRST TAG BYTE   @Y17XAXF*/
*/*          CAN USE TTHTAGS VALUES FOR PRF1TAGS             @Y17XAXF*/
*            7 PRF1TAGS BIT(4),         /*   TAG ROUT + TYPE @Y17XAXF*/
*            7 *        BIT(4),         /*   RESERVED.       @Y17XAXF*/
*/*        TTHTAG2 TP OP CODE VALUES TO BE USED FOR PRF1TAG2 @Y17XAXF*/
*          6 PRF1TAG2 BIT(8),           /*  SECOND TAG BYTE
*                                           (WHEN USED AS A TP OP
*                                           PRF1TAG1 MUST BE 0
*                                                            @Y17XAXF*/
*        5 PRF1RULN FIXED(16);          /* FOR FID1 ONLY     @Y17XAXF*/
*                                       /*  LEN OF RUDATA ON @Y17XAXF*/
*                                       /*  0 LEN ERROR BUFS @Y17XAXF*/
* %PRF1LEN='LENGTH(IEDPF1)';            /* LEN OF BUFFER PRF @Y17XAXF*/
*/* PRF1FORM VALUES                                          @Y17XAXF*/
* DCL PRF1PTRI BIT(2) CONSTANT('01'B);  /* PRF1SEQP IS PRES  @YM07397*/
* DCL PRF1IDI  BIT(2) CONSTANT('10'B);  /* PRF1SQID IS PRES  @Y17XAXF*/
* DCL PRF1SQLI BIT(2) CONSTANT('11'B);  /* PRF1SQID,PRF1RULN @Y17XAXF*/
*                                       /*  ARE PRESENT      @Y17XAXF*/
* DECLARE                               /*                   @Y17XAXF*/
*   1 IEDPF2   BASED(ADDR(IEDQPRF)-LENGTH(IEDPF2)),       /* @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      DSECT FOR PIU BUFFER                                @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*     2  PRF2FLG2  BIT(8),              /* FLAGS             @Y17XAXF*/
*        3 PRF2TNTI  BIT(1),            /*  TTCIN OFFSETS    @Y17XAXF*/
*                                       /*   EXIST IN PIU    @Y17XAXF*/
*        3 PRF2FORM  BIT(1),            /*  2ND WORD IN THIS @Y17XAXF*/
*                                       /*   PREFIX CONTAINS @Y17XAXF*/
*                                       /*   A PTR TO A SEQ  @Y17XAXF*/
*                                       /*   NUMBER AREA     @Y17XAXF*/
*        3 PRF2SMI   BIT(1),            /*  START MI INDICATOR(TSO ONLY
*                                                            @Y17XAXF*/
*        3 PRF2TERM  BIT(1),            /*  FORCED TERMINATE @YM08991*/
*                                       /*   IN PROGRESS     @YM08991*/
*        3 *         BIT(4),            /*  RESERVED         @YM08991*/
*     2  *         CHAR(3),             /* RESERVED          @Y17XAXF*/
*     2  PRF2WD2   PTR(31),             /* 2ND WORK-FORMAT   @Y17XAXF*/
*                                       /*  DEFINED BY       @Y17XAXF*/
*                                       /*  PRF2FORM FIELD   @Y17XAXF*/
*       3 PRF2SEQP   PTR(31);           /* PTR TO SEQUENCE   @Y17XAXF*/
*                                       /*  NUMBER AREA      @Y17XAXF*/
* %PRF2LEN='LENGTH(IEDPF2)';            /* LEN OF PIU PREFIX @Y17XAXF*/
*DECLARE PRFSHDR CHAR(1) DEF(IEDQPRF)
*  POS(LENGTH(IEDQPRF)+1);                                /* @Y17XAXF*/
*                                       /* START OF HEADER LABEL     */
*/*                                                          @Y17XAXF*/
*/*      PREFIX CONSTANTS                                    @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*DECLARE PRFINTIC BIT(32) CONSTANT('08000002'X);          /* @Y17XAXF*/
*                                       /* INVALID TIC ADDR  @Y17XAXF*/
*DECLARE PRFESCAP BIT(8) CONSTANT('FC'X);  /* OPERATOR CONTROL ESCAPE
*                                       BUFFER (IN PRFSTAT1)   X03039*/
*/*                                                                  */
*/*                                                                  */
*/*     ************************************************************ */
*/*  0  *     KEY      *                    QCBA                   * */
*/*     ************************************************************ */
*/*  4  *     PRI      *                    LINK                   * */
*/*     ************************************************************ */
*/*  8  *                            TIC                           * */
*/*     ************************************************************ */
*/* 12  *  NBUNT/BTUA  *                     LCB                   * */
*/*     ************************************************************ */
*/* 16  *            SRCE             *            SIZE            * */
*/*     ************************************************************ */
*/* 20  *    STAT1     *                XTRA/CORE                  * */
*/*     ************************************************************ */
*/* 24  *            SCAN             *         NTXT/TQBCK         * */
*/*     ************************************************************ */
*/* 28  *  NTXT/TQBCK  *                   CRCD                    * */
*/*     ************************************************************ */
*/* 32  *                NHDR/CHDR                   *  STXT/HQBCK * */
*/*     ************************************************************ */
*/* 36  *         STXT/HQBCK          *            ISEQ            * */
*/*     ************************************************************ */
*/* 40  *            DEST             *                              */
*/*     *******************************                              */
*/*                                                                  */
./ ADD NAME=TPRIOR
*        %GOTO PLSPRI;     /*
         MACRO
         TPRIOR
.*A000000-999999                                               @X31X8X0
.* C281000,286000,290000,294000,309000,686000,693000,699000,   @Y17XAXF
.* C704000,723000                                              @Y17XAXF
.* D094000,282000-284000,287000-288000,291000-292000,295000-   @Y17XAXF
.* D296000,310000,454000,687000-690000,694000-696000,700000-   @Y17XAXF
.* D701000,705000-707000,724000-725000                         @Y17XAXF
         SPACE
.*A825000-826000                                                 S22025
.*A696500-699000                                                 S22026
.*C884700                                                        S22026
.*C412000                                                       SA50190
.*C020000,892600                                               @Z30X8XE
.*C864000,982300-982600                                        @OS76497
*
*        TPRIOR DSECT UPDATED  6/7/74                          @Z30X8XE
.* TPRIOR DSECT CONVERTED TO BILINGUAL BY LEVEL 5 - 9/18/72      S22024
.*A887040-887160,990200-995200                                   Y05330
.*C601600-603000                                             @OX21052
*
*                       ERB
*
PRIINTRQ EQU   X'E4' .                  TO REQUEST FULL BUFFERS
*                                         FROM DISK I/O
*                                       TO REQUEST EMPTY BUFFERS
*                                         FROM BUFFER REQUEST QCB
*                                       USED BY SEND SCHEDULER
*                                       USED BY RECEIVE SCHEDULER
*                                       USED BY GET SCHEDULER
*                                       USED BY PUT SCHEDULER
*
PRIFSPCI EQU   X'E8' .                  TO REQUEST EMPTY BUFFERS
*                                         FROM BUFFER REQUEST QCB
*                                       TO REQUEST FULL BUFFERS
*                                         FROM DISK I/O
*                                       USED BY PCI APPENDAGE
*                                         (FIRST TIME)
*
PRITOTCL EQU   X'E8' .                  POST OF CLEANUP ELEM TO TOTE TO
*                                       INITIATE TEST CLEANUP  @Y17XAXF
*
PRISBPCI EQU   X'E0' .                  SAME AS ABOVE, EXCEPT ALL
*                                         BUT FIRST TIME
*
PRIDSKRQ EQU   X'EC' .                  TO REQUEST AN EMPTY UNIT BY
*                                         CHAINING THE ERB ON THE
*                                         BUFFER RETURN QCB
*                                       USED BY CPB CLEANUP
*
PRISBT   EQU   X'EC' .                  PRIORITY FOR ELEMENT POSTED
*                                       TO IEDQSBT             @YM07020
PRIACTIV EQU   X'E4' .                  IN POSTING ERB TO ACTIVATE
*                                         QCB TO REQUEST BUILDING
*                                         OF AN INITIAL CONTACT PGM
*                                         AND EXCP FOR LINE
*                                       USED BY CPB CLEANUP
*                                       USED BY BUFFER REQUEST
*                                       USED BY BUFFER RETURN
*
PRIDKEOB EQU   X'E0' .                  TO ENABLE EOB TO RECALL
*                                       TO POST TO EOBCHECK AFTER
*                                         EOB ERROR
*                                       USED BY CPB CLEANUP
*                                       USED BY CPB INITIALIZATION
*                                       MUST BE LOWER PRIORITY THAN
*                                         PRIMHBFR
*
PRIRECAL EQU   X'E0' .                  TO REQUEST FROM DISK I/O A
*                                         COPY OF HEADER
*                                       USED BY ALL ROUTINES
*                                         REQUESTING RECALLED
*                                         HEADERS
*
PRIRCQCB EQU   X'E0' .                  TO RETURN THE ERB TO ANY
*                                         ROUTINE SPECIFIED IN
*                                         LCBRCQCB
*                                       USED BY MH TO RETURN TO
*                                         BUFFER DISPOSITION
*                                       USED BY CPB CLEANUP AFTER
*                                         RECALL
*
PRIAPERB EQU   X'D0' .                  TO REQUEST FULL BUFFERS
*                                         USED BY APPLICATION PROG
*
*                       BUFFER
*
PRIEDISP EQU   X'E0' .                  TO POST ERB TO ITSELF ON SEND
*                                         OPERATIONS WHEN AN ERROR
*                                         OCCURS BEFORE EOM
*                                       USED BY DISPOSITION
*                                         MUST BE LOWER THAN PRIMHBFR
*
PRIMHBFR EQU   X'E4' .                  TO HAVE A BUFFER PROCESSED
*                                         BY MH
*                                       USED BY PCI APPENDAGE
*                                       USED BY CPB CLEANUP
*                                       USED BY LINE END APPENDAGE
*                                         AFTER POSITIVE RESPONSE
*                                         TO ADDRESSING
*
PRIERBFR EQU   X'E3'                    TO HAVE AN ERROR BUFFER  X03039
*                                         PROCESSED BY MH        X03039
*                                                                X03039
PRIUREQ  EQU   X'E8' .                  TO REQUEST AN EMPTY
*                                         UNIT FOR INSERT
*                                         FUNCTION IN MH
*                                       USED BY UNIT REQUEST
*                                       MUST BE HIGHER THAN PRIMHBFR
*
PRIAPBFR EQU   X'DC' .                  TO POST A BUFFER TO AN
*                                         APPLICATION PROGRAM
*                                       USED BY MBH
*
PRILNEND EQU   X'E4' .                  TO HAVE DISPOSITION FINISH
*                                         PROCESSING MACROS AND
*                                         CLEANUP THE LINE
*                                       USED BY LINE END APPENDAGE
*                                         (SEND-LAST BUFFER ONLY)
*
PRIRCBFR EQU   X'E0' .                  TO RETURN A DUPLICATE HEADER
*                                         TO A SPECIFIED ROUTINE
*                                       USED BY CPB CLEANUP
*                                       USED BY DESTINATION SCHEDULER
*
PRIBFRTB EQU   X'E0' .                  TO RETURN A BUFFER OR UNIT
*                                                               SA50190
*                                         TO AVAILABLE BUFFER POOL
*                                       USED BY PCI APPENDAGE
*                                       USED BY CPB CLEANUP
*                                       USED BY CPB INITIALIZATION
*                                       USED BY DESTINATION SCHEDULER
*                                       USED BY MH
*
PRIDSKBF EQU   X'EC' .                  TO GIVE A UNIT TO CPB CLEANUP
*                                       USED BY BUFFER RETURN
*
PRICOPY  EQU   X'E0' .                  TO HAVE A MESSAGE COPIED TO
*                                         A DIFFERENT DATA SET
*                                       USED BY DESTINATION SCHEDULER
*
PRIDESTQ EQU   X'E4' .                  TO PUT A BUFFER ON A MESSAGE
*                                         QUEUE
*                                       USED BY MH
*                                       USED BY DESTINATION SCHEDULER
*
PRIDKWRT EQU   X'E4' .                  TO HAVE A FULL BUFFER WRITTEN
*                                         ON DISK
*                                       USED BY DESTINATION SCHEDULER
*
PRIDKSRV EQU   X'EC' .                  TO HAVE A MESSAGE FLAGGED
*                                         SERVICED
*                                       USED BY BUFFER CLEANUP
*
PRIDKCNC EQU   X'E0' .                  TO HAVE A MESSAGE CANCELED
*                                         IN THE MESSAGE QUEUE
*                                       USED BY CANCEL MESSAGE
*
PRIDKINT EQU   X'E0' .                  TO HAVE A MESSAGE INTERCEPTED
*                                       USED BY INTERCEPT
*
PRICKPLN EQU   X'EC' .                  TO POST THE LCB TO CHECKPOINT
*                                         REQUESTING A CHECKPOINT
*                                       USED BY BUFFER DISPOSITION
*
PRIMULTR EQU   X'E0' .                  TO POST THE LCB TO THE
*                                         MULTIPLE ROUTE ROUTINE
*                                         TO CONTINUE
*                                       USED BY BUFFER DISPOSITION
*                                       USED BY TLIST SUBTASK
*
PRIOPCTL EQU   X'DC' .                  TO POST AN OPERATOR CONTROL
*                                         BUFFER
*                                       USED BY MH
*                                       USED TO POST FROM OPCTL@Y17XAXF
*                                        TO NSL                @Y17XAXF
*
PRIDSPLB EQU   X'DF' .                  TO POST LAST BUFFER OF
*                                         MESSAGE TO DISPOSITION
*                                       USED BY MH
*                                       USED BY OPNDST/CLSDST    X03039
*                                       MUST BE LOWER THAN ANY PCI
*                                         POST OF AN ERB
*
PRIONLT  EQU   X'DC' .                  TO REQUEST ON LINE TEST
*                                       USED BY MH
*
PRIPIUCP  EQU  X'00' .                  PACKED RU TO IEDPMD USED FOR
*                                       IDENTIFICATION PURPOSES ONLY -
*                                       WILL NEVER BE POSTED
*                                                              @Y17XAXF
PRILUSR   EQU  X'DA' .                  DEACTIVATE TO LUS TO TERMINATE
*                                       A SESSION              @Y17XAXF
PRIAIPL   EQU  X'DE' .                  TO INDICATE TO IPL/DUMP@Y17XAXF
*                                       THAT AN LCB HAS BEEN   @Y17XAXF
*                                       POSTED TO REQUEST IPL  @Y17XAXF
*                                       AND OR ACTIVATE        @Y17XAXF
*                                                              @Y17XAXF
PRIFIDIN EQU  X'E4' .                   FID POST PRIORITY FROM @Y17XAXF
*                                       PATH CONTROL INBOUND   @Y17XAXF
*                                                              @Y17XAXF
PRISCPIN EQU  PRIFIDIN+1 .              SSCP INPUT-MUST BE     @Y17XAXF
*                                       HIGHER THAN FID POST   @Y17XAXF
*                                       PRIORITY               @Y17XAXF
*                                                              @Y17XAXF
PRIFLDH  EQU  PRIMHBFR                  BTU PRIORITY TO FLDH   @Y17XAXF
*                                       QCB                    @Y17XAXF
*                                                              @Y17XAXF
PRICHKPT EQU   X'EC' .                  PRIORITY USED BY       @Y17XAXF
*                                         CHECKPOINT TO POST   @Y17XAXF
*                                         AVTCCELE             @Y17XAXF
*                                                              @Y17XAXF
PRIHIFLG EQU   X'E9' .                  HIGHEST PRIORITY THAT  @Y17XAXF
*                                         HAS ASSOCIATED FLAG  @Y17XAXF
*                                         BYTE                 @Y17XAXF
*                                                              @Y17XAXF
PRIPLCB  EQU   X'E8' .                  PLCB/LC/ POST TO VE,   @Y17XAXF
*                                         Z1,V1                @Y17XAXF
*                                                              @Y17XAXF
PRIFRCDC EQU   X'C4' .                  FORCE DEACTIVATE REQUEST OPCE
*                                        IN 3705 CLEANUP       @Y17XAXF
*                                                              @Y17XAXF
PRISSBUF EQU   X'E2' .                  PRIORITY THAT BUFFERS  @PI03742
*                                         TPOSTED TO SSCP      @Y17XAXF
*                                                              @Y17XAXF
PRISIBRQ EQU   X'E5' .                  GET AND FREE SIB       @Y17XAXF
*                                         REQUEST ELEMENTS     @Y17XAXF
*                                                              @Y17XAXF
PRISSPIU EQU   X'E5' .                  PRIORITY THAT PIU'S    @Y17XAXF
*                                         ARE TPOSTED TO SSCP  @Y17XAXF
*                                                              @Y17XAXF
PRIMH01  EQU   X'E4' .                  PRIORITY POST FROM MH  @Y17XAXF
*                                         TO 01                @Y17XAXF
*                                                              @Y17XAXF
PRILNSCL EQU   PRIDESTQ-1 .             USED BY IEDUNBND TO POST PLCB
*                                       TO IEDSCLU TO CONTINUE CLEAR
*                                       UNBIND PROCESSING      @Y17XAXF
*
PRIRESPB EQU   X'EA'                    RESPONSE BUFFER TO 02  @OX21052
*                                                              @OX21052
PRIOLD1  EQU   X'E0' .                  OLD PRIORITY POST TO VA@Y17XAXF
*                                                              @Y17XAXF
PRIMEDFG EQU   X'DF' .                  MEDIUM PRIOITY THAT    @Y17XAXF
*                                         ASSOCIATED FLAG BYTE @Y17XAXF
*                                                              @Y17XAXF
PRITOTE0 EQU   X'DC' .                  OLD PRIOITY POST FROM  @Y17XAXF
*                                         TOTE TO 00           @Y17XAXF
*                                                              @Y17XAXF
PRIPCOUT EQU   X'E4' .                  TO POST TO PATH CONTROL@Y17XAXF
*                                         OUTBOUND             @Y17XAXF
*                                                              @Y17XAXF
PRIASYNC EQU   X'E6' .                  TO POST AN ASYNCHROUS  @Y17XAXF
*                                         REQUEST BUFFER TO    @Y17XAXF
*                                         IEDNKA               @Y17XAXF
*                                       PRE-SNA - FOR RESET    @Y17XAXF
*                                         ERROR LOCK           @Y17XAXF
*                                       SNA - FOR NEGATIVE     @Y17XAXF
*                                         RESPONSE TO RTR      @Y17XAXF
*                                                              @Y17XAXF
PRIOUTQ  EQU   X'E0' .                  TO TPOST PIUS TO THE   @Y17XAXF
*                                         3705 OUTPUT CORE     @Y17XAXF
*                                         QUEUE                @Y17XAXF
*                                                              @Y17XAXF
PRIOUTBD EQU   X'E4' .                  NORMAL POST TO         @Y17XAXF
*                                         OUTBOUND PROCESSING  @Y17XAXF
*                                                              @Y17XAXF
PRILUSQB EQU   X'E2' .                  TPOST A QCB TO LUS TO  @Y17XAXF
*                                         REQUEST AN LU-LU     @Y17XAXF
*                                         SESSION              @Y17XAXF
*                                                              @Y17XAXF
PRILOFLG EQU   X'D0' .                  PRIORITY POST OF A/D   @Y17XAXF
*                                         REDRIVE ELEMENT      @Y17XAXF
*                                                              @Y17XAXF
PRIPRIME EQU   X'DD' .                  POST TO NSL FOR        @Y17XAXF
*                                         PRIMING              @Y17XAXF
*                                                              @Y17XAXF
PRICULCB EQU   X'C0'                    CLEANUP SYN AND ROUTING .
*                                                              @Y17XAXF
PRICUREQ EQU   X'C4'                    CLEANUP REQUEST        @Y17XAXF
*                                         ELEMENT              @Y17XAXF
*                                                              @Y17XAXF
PRILAEND EQU   X'E4' .                  TO START ERROR PROCESSING
*                                       USED BY LINE END APPENDAGE
*
PRIMHUNT EQU   X'E8' .                  TO POST A UNIT TO MH
*                                       USED BY IEDQBW
*                                       MUST BE GREATER THAN PRIMHBFR
*
PRIRELSE EQU   X'E0' .                  TO RELEASE SUBTASK FROM
*                                         TIME DELAY OR OP. CONTROL
*                                       USED BY HOLD
*                                       USED BY OPERATOR CONTROL
*
PRIFEFO  EQU   X'EE' .                  TO UPDATE DISK FEFO POINTER
*                                       CHECKED BY IEDQFA
*                                       SET BY IGG019RP, REUS/COPY
*
*
*                       OTHER
*
PRIRLCB  EQU   X'EB' .                  USED BY IEDQBD TO        S22026
*                                         RETURN LCB             S22026
*                                                                S22026
PRILCB   EQU   X'E7' .                  TO POST LCB FOR CLEANUP  S22026
*                                         USED BY LINEEND        S22026
*                                                                S22026
PRICPBCL EQU   X'E8' .                  TO POST CPB CLEANUP COMPLETE
*                                       USED BY DISK END APPENDAGE
*
PRICKPT  EQU   X'EC' .                  TO REQUEST COMPLETE CHECKPOINT
*                                       USED BY REUS
*                                       USED BY MCPCLOSE
*                                       USED BY TIME DELAY
*
PRILNFRE EQU   X'E0' .                  TO FREE A LINE
*                                       USED BY DISPOSITION
*                                       USED BY SEND SCHEDULER
*                                       USED BY PUT SCHEDULER(UNLOCK)
*                                       MUST GET TO DESTINATION
*                                         SCHEDULER BEFORE LINE
*                                         IS FREE
*
PRILCBRQ EQU   PRIINTRQ                 UNUSED                 @Y17XAXF
*                                                                X03039
PRIOPDST EQU   PRILCBRQ                 UNUSED                 @Y17XAXF
*                                                                X03039
PRIOPCMP EQU   X'E5'                    UNUSED                 @Y17XAXF
*
PRICLDST EQU   PRILCBRQ                 UNUSED                 @Y17XAXF
*                                                                X03039
PRIRESUM EQU   X'E5'                    TO POST RESPONSE BUFFER@Y17XAXF
*                                         FROM DEBLOCK BACK TO @Y17XAXF
*                                         NIR GENERATOR MODULES@Y17XAXF
*                                         TO REQUEST RESUMPTION@Y17XAXF
*                                         OF AN OPERATION BEGUN@Y17XAXF
*                                         BY NIR GENERATOR     @Y17XAXF
*                                         MODULES
*                                                                X03039
PRISTOPD EQU   X'E8' .                  USED TO RETURN AN        X03039
*                                       ELEMENT TO NSL           X03039
*
PRIATTNH EQU   X'E6' .                  UNUSED                 @Y17XAXF
*
PRICLSDN EQU   X'10' .                  TO REQUEST CLOSEDOWN
*                                       USED BY -----
*                                       MUST BE LOWEST PRIORITY
*
PRIAPCKP EQU   X'EC' .                  TO REQUEST INCIDENT CHECKPOINT
*                                       USED BY APPLICATION PROGRAM
*
PRIOPCKP EQU   X'EC' .                  TO REQUEST INCIDENT CHECKPOINT
*                                       USED BY OPERATOR CONTROL
*
PRILNCL  EQU   X'EC' .                  TO CLEAN UP BUFFERS AND TO
*                                         FREE LINE
*                                       USED BY LINE END
*                                       TO POST LINE TO DISPOSITION
*                                       USED BY IN END
*                                       USED BY OUT END
*
PRILCBAT EQU   X'E9' .                  TO POST LCB TO STOPLINE  S22025
*                                       SUBTASK USED BY LINE END S22025
*
PRILOGLB EQU   X'E0' .                  TO POST THE LOG LCB TO ITSELF
*                                       USED BY LOG SCHEDULER
*
PRISSOLT EQU   X'DC' .                  POSTED TO OPERATOR CONTROL
*                                       TO REQUEST START LINE/STOPLINE
*                                       USED BY ON LINE TEST
*
PRITRACE EQU   X'F0' .                  DSPTRACE PRIORITY IGCM610D
*                                        POSTS UNIT TO ALTER IGG019RO
*                                        TO START OR STOP TRACE(S)
*                                        AFTER MODIFY TCAM, SUBT=
*                                        COMAND                @Y17XAXF
*
PRITIME  EQU   X'F0' .                  TO RETURN ELE FROM TIME Q
*                                       USED BY TIME DELAY
*
PRIREUSX EQU   X'EE' .                  TO ACTIVATE REUSABILITY@OS76497
*                                       ASSEM IN PLACE BY IGG019RP
*
PRIATTN  EQU   X'DC' .                  POST ATTENTION ELEMENT
*                                         USED BY ATTENTION HANDLER
*
PRIATN05 EQU PRIATTN+1                  3705 ATTENTION ELEMENT PRIORITY
*                                                              @YM08074
*
PRISYSDL EQU   X'DC' .                  TO INITIATE SYSTEM DELAY
*                                         USED BY OPERATOR CONTROL
*                                         CHECKED BY SYS DELAY
*
PRISYSDT EQU   X'D8' .                  POST SYSTEM DELAY QCB TO TIME
*                                         DELAY
*                                         USED BY SYSTEM DELAY
*
PRILCBDL EQU   X'20' .                  TO INDICATE AN LCB ON
*                                         SYSTEM DELAY QUEUE
*                                         SET BY SYSTEM DELAY, IEDQHI
*                                         CHECKED BY CHECKPOINT
*
PRIPOSTS EQU   X'FE'                    POST TO  SYNC QUEUE    @Y17XAXA
*
PRIPOSTA EQU   X'FF'                    POST TO ASYNC QUEUE    @Y17XAXA
         SPACE 2
         MEND  ,  */
*  %PLSPRI:  ;
*/*      TPRIOR DSECT UPDATED  6/7/74                         Y30X8XE*/
*/*                                                                  */
*/*                          ERB                                     */
*DCL PRIINTRQ BIT(8) CONSTANT('E4'X);   /* TO REQUEST FULL BUFFERS   */
*                                       /* FROM DISK I/O             */
*                                       /* TO REQUEST EMPTY BUFFERS  */
*                                       /* FROM BUFFER REQUEST QCB   */
*                                       /* USED BY SEND SCHEDULER    */
*                                       /* USED BY RECEIVE SCHEDULER */
*                                       /* USED BY GET SCHEDULER     */
*                                       /* USED BY PUT SCHEDULER     */
*/*                                                                  */
*DCL PRIFSPCI BIT(8) CONSTANT('E8'X);   /* TO REQUEST EMPTY BUFFERS  */
*                                       /* FROM BUFFER REQUEST QCB   */
*                                       /* TO REQUEST FULL BUFFERS   */
*                                       /* FROM DISK I/O             */
*                                       /* USED BY PCI APPENDAGE     */
*                                       /* FOR FIRST REQUEST         */
*/*                                                                  */
*DCL PRITOTCL BIT(8) CONSTANT('E8'X);   /* POST OF CLEANUP ELEM TO   */
*                                       /* TOTE (TEST C-UP) @Y17XAXF */
*/*                                                                  */
*DCL PRISBPCI BIT(8) CONSTANT('E0'X);   /* SAME AS ABOVE EXCEPT ALL  */
*                                       /* BUT FIRST TIME            */
*/*                                                                  */
*DCL PRIDSKRQ BIT(8) CONSTANT('EC'X);   /* TO REQUEST AN EMPTY UNIT  */
*                                       /* BY CHAINING THE ERB ON THE*/
*                                       /* BUFFER RETURN QCB         */
*                                       /* USED BY CPB CLEANUP       */
*/*                                                                  */
*DCL PRISBT   BIT(8) CONSTANT('EC'X);   /* PRIORITY FOR ELEMENT POST */
*                                       /* TO IEDQSBT        @YM07020*/
*/*                                                                  */
*DCL PRIACTIV BIT(8) CONSTANT('E4'X);   /* IN POSTING ERB TO ACTIVATE*/
*                                       /* QCB TO REQUEST BUILDING   */
*                                       /* OF AN INITIAL CONTACT PGM */
*                                       /* AND EXCP FOR LINE         */
*                                       /* USED BY CPB CLEANUP       */
*                                       /* USED BY BUFFER REQUEST    */
*                                       /* USED BY BUFFER RETURN     */
*/*                                                                  */
*DCL PRIDKEOB BIT(8) CONSTANT('E0'X);   /* TO ENABLE EOB TO RECALL   */
*                                       /* TO POST TO EOB CHECK AFTER*/
*                                       /* EOB ERROR                 */
*                                       /* USED BY CPB CLEANUP       */
*                                       /* USED BY CPB INITIALIZATION*/
*                                       /* MUST BE LOWER PRIORITY    */
*                                       /* THAN PRIMHBFR             */
*/*                                                                  */
*DCL PRIRECAL BIT(8) CONSTANT('E0'X);   /* TO REQUEST FROM DISK I/O  */
*                                       /* A COPY OF HEADER USED BY  */
*                                       /* ALL ROUTINES REQUESTING   */
*                                       /* RECALLED HEADERS          */
*/*                                                                  */
*DCL PRIRCQCB BIT(8) CONSTANT('E0'X);   /* TO RETURN THE ERB TO ANY  */
*                                       /* ROUTINE SPECIFIED IN      */
*                                       /* LCBRCQCB                  */
*                                       /* USED BY MH TO RETURN TO   */
*                                       /* BUFFER DISPOSITION        */
*                                       /* USED BY CPB CLEANUP AFTER */
*                                       /* RECALL                    */
*/*                                                                  */
*DCL PRIAPERB BIT(8) CONSTANT('D0'X);   /* TO REQUEST FULL BUFFERS   */
*                                       /* USED BY APPLICATION PROG  */
*/*                                                                  */
*/*                          BUFFER                                  */
*DCL PRIEDISP BIT(8) CONSTANT('E0'X);   /* TO POST ERB TO ITSELF ON  */
*                                       /* SEND OPERATIONS WHEN AN   */
*                                       /* ERROR OCCURS BEFORE EOM   */
*                                       /* USED BY DISPOSITION       */
*                                       /* MUST BE LOWER THAN        */
*                                       /* PRIMHBFR                  */
*/*                                                                  */
*DCL PRIMHBFR BIT(8) CONSTANT('E4'X);   /* TO HAVE A BUFFER PROCESSED*/
*                                       /* BY MH                     */
*                                       /* USED BY PCI APPENDAGE     */
*                                       /* USED BY CPB CLEANUP       */
*                                       /* USED BY LINE END APPENDAGE*/
*                                       /* AFTER POSITIVE RESPONSE TO*/
*                                       /* ADDRESSING                */
*                                       /* USED BY DEBLOCK AFTER     */
*                                       /* DATA RECEIVED             */
*/*                                                                  */
*DCL PRIERBFR BIT(8) CONSTANT('E3'X);   /* TO HAVE AN ERROR BFRX03039*/
*                                       /* PROCESSED BY MH     X03039*/
*/*                                                            X03039*/
*DCL PRIUREQ BIT(8) CONSTANT('E8'X);    /* TO REQUEST AN EMPTY UNIT  */
*                                       /* FOR INSERT FUNCTION IN MH */
*                                       /* USED BY UNIT REQUEST      */
*                                       /* MUST BE HIGHER THAN       */
*                                       /* PRIMHBFR                  */
*/*                                                                  */
*DCL PRIAPBFR BIT(8) CONSTANT('DC'X);   /* TO POST A BUFFER TO AN    */
*                                       /* APPLICATION PROGRAM       */
*                                       /* USED BY MBH               */
*/*                                                                  */
*DCL PRILNEND BIT(8) CONSTANT('E4'X);   /* TO HAVE DISPOSITION       */
*                                       /* FINISH PROCESSING MACROS  */
*                                       /* AND CLEANUP THE LINE      */
*                                       /* USED BY LINE END          */
*                                       /* APPENDAGE                 */
*                                       /* LAST BUFFER ONLY          */
*/*                                                                  */
*DCL PRIRCBFR BIT(8) CONSTANT('E0'X);   /* TO RETURN DUPLICATE       */
*                                       /* HEADER TO A SPECIFIED     */
*                                       /* ROUTINE                   */
*                                       /* USED BY CPB CLEANUP       */
*                                       /* USED BY DESTINATION       */
*                                       /* SCHEDULER                 */
*/*                                                                  */
*DCL PRIBFRTB BIT(8) CONSTANT('E0'X);   /* TO RETURN A BUFFER OR A   */
*                                       /* UNIT TO BUFFER POOL       */
*                                       /* USED BY PCI APPENDAGE     */
*                                       /* USED BY CPB CLEANUP       */
*                                       /* USED BY CPB INITIALIZATION*/
*                                       /* USED BY DESTINATION SCH   */
*                                       /* USED BY MH                */
*/*                                                                  */
*DCL PRIDSKBF BIT(8) CONSTANT('EC'X);   /* TO GIVE A UNIT TO CPB     */
*                                       /* CLEANUP                   */
*                                       /* USED BY BUFFER RETURN     */
*/*                                                                  */
*DCL PRICOPY BIT(8) CONSTANT('E0'X);    /* TO HAVE A MESSAGE COPIED  */
*                                       /* TO A DIFFERENT DATA SET   */
*                                       /* USED BY DESTINATION SCH   */
*DCL PRIDESTQ BIT(8) CONSTANT('E4'X);   /* TO PUT A BUFFER ON A      */
*                                       /* MESSAGE QUEUE             */
*                                       /* USED BY MH                */
*                                       /* USED BY DESTINATION SCHED */
*/*                                                                  */
*DCL PRIDKWRT BIT(8) CONSTANT('E4'X);   /* TO HAVE A FULL BUFFER     */
*                                       /* WRITTEN ON DISK           */
*                                       /* USED BY DESTINATION SCH   */
*/*                                                                  */
*DCL PRIDKSRV BIT(8) CONSTANT('EC'X);   /* TO HAVE A MESSAGE FLAGGED */
*                                       /* SERVICED                  */
*                                       /* USED BY BUFFER CLEANUP    */
*/*                                                                  */
*DCL PRIDKCNC BIT(8) CONSTANT('E0'X);   /* TO HAVE A MESSAGE CANCELED*/
*                                       /* IN THE MESSAGE QUEUE      */
*                                       /* USED BY CANCEL MESSAGE    */
*/*                                                                  */
*DCL PRIDKINT BIT(8) CONSTANT('E0'X);   /* TO HAVE A MESSAGE INTER-  */
*                                       /* CEPTED-USED BY INTERCEPT  */
*/*                                                                  */
*DCL PRICKPLN BIT(8) CONSTANT('EC'X);   /* TO POST THE LCB TO        */
*                                       /* CHECKPOINT REQUESTING A   */
*                                       /* CHECKPOINT                */
*                                       /* USED BY BUFFER DISPOSITION*/
*/*                                                                  */
*DCL PRIMULTR BIT(8) CONSTANT('E0'X);   /* TO POST THE LCB TO THE    */
*                                       /* MULTIPLE ROUTE ROUTINE    */
*                                       /* TO CONTINUE               */
*                                       /* USED BY BUFFER DISPOSITION*/
*                                       /* USED BY TLIST SUBTASK     */
*/*                                                                  */
*DCL PRIOPCTL BIT(8) CONSTANT('DC'X);   /* TO POST AN OPERATOR       */
*                                       /* CONTROL BUFFER            */
*                                       /* USED BY MH                */
*                                       /* USED TO POST FROM @Y17XAXF*/
*                                       /*  OPCTL TO NSL     @Y17XAXF*/
*/*                                                                  */
*DCL PRIDSPLB BIT(8) CONSTANT('DF'X);   /* TO POST LAST BUFFER OF    */
*                                       /* MESSAGE TO DISPOSITION    */
*                                       /* USED BY MH                */
*                                       /* USED BY OPN/CLSDST  X03039*/
*                                       /* MUST BE LOWER THAN ANY PCI*/
*                                       /* POST OF AN ERB            */
*/*                                                                  */
*DCL PRIPIUCP BIT(8) CONSTANT('00'X);   /* PACKED RU TO IEDPMD USED FOR
*                                          IDENT PUTPOSES ONLY - WILL
*                                          NEVER BE POSTED   @Y17XAXF*/
*DCL PRILUSR BIT(8) CONSTANT('DA'X);    /* DEACTIVATE TO LUS REQUEST
*                                          FOR TERMINATION OF SESSION
*                                                            @Y17XAXF*/
*DCL PRIONLT BIT(8) CONSTANT('DC'X);    /* TO REQUEST ON LINE TEST   */
*                                       /* USED BY MH                */
*/*                                                                  */
* DCL PRIAIPL  BIT(8) CONSTANT('DE'X);  /* TO INDICAT TO IPL @Y17XAXF*/
*                                       /* /DUMP THAT AN LCB @Y17XAXF*/
*                                       /* HAS BEEN POSTED TO@Y17XAXF*/
*                                       /* REQUEST IPL AND/OR@Y17XAXF*/
*                                       /* ACTIVATE          @Y17XAXF*/
*
* DCL PRIFIDIN BIT(8) CONSTANT('E4'X);  /* FID POST PRIORITY @Y17XAXF*/
*                                       /* FROM PATH CONTROL @Y17XAXF*/
*                                       /* INBOUND           @Y17XAXF*/
*
* DCL PRISCPIN BIT(8) CONSTANT('E5'X);  /* SSCP INPUT-MUST BE@Y17XAXF*/
*                                       /* HIGHER THAN FID   @Y17XAXF*/
*                                       /* POST PRIORITY     @Y17XAXF*/
*
* DCL PRIFLDH  BIT(8) CONSTANT('E4'X);  /* BTU PRIORITY TO   @Y17XAXF*/
*                                       /* FLDH QCB          @Y17XAXF*/
*
* DCL PRICHKPT BIT(8) CONSTANT('EC'X);  /* PRIORITY USED BY  @Y17XAXF*/
*                                       /*  CKECKPOINT TO    @Y17XAXF*/
*                                       /*  POST AVTCCELE    @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIHIFLG BIT(8) CONSTANT('E9'X);  /* HIGHEST PRIORITY  @Y17XAXF*/
*                                       /*  THAT HAS         @Y17XAXF*/
*                                       /*  ASSOCIATED FLAG  @Y17XAXF*/
*                                       /*  BYTE             @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIPLCB  BIT(8) CONSTANT('E8'X);  /* PLCB/LCB POST TO  @Y17XAXF*/
*                                       /*  VE,Z1,V1         @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIFRCDC BIT(8) CONSTANT('C4'X);  /* FORCE DEACTIVATE REQUEST
*                                           OPCE IN 3705 CLEANUP
*                                                            @Y17XAXF*/
* DCL PRISSBUF BIT(8) CONSTANT('E2'X);  /* PRIORITY THAT     @PI03742*/
*                                       /*  BUFFERS ARE      @Y17XAXF*/
*                                       /*  TPOSTED TO SSCP  @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRISIBRQ BIT(8) CONSTANT('E5'X);  /* GET AND FREE SIB  @Y17XAXF*/
*                                       /*  REQUEST ELEMENTS @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRISSPIU BIT(8) CONSTANT('E5'X);  /* PRIORITY THAT     @Y17XAXF*/
*                                       /*  PIU'S ARE TPOSTED@Y17XAXF*/
*                                       /*  TO SSCP          @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIMH01  BIT(8) CONSTANT('E4'X);  /* PRIORITY POST FROM@Y17XAXF*/
*                                       /*  MH TO 01         @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRILNSCL BIT(8) CONSTANT('E3'X);  /* USED BY IEDUNBND TO POST
*                                          PLCB TO IEDSCLU TO CONTINUE
*                                          CLEAR UNBIND PROCESSING -
*                                          MUST BE LOWER THAN PRIDESTQ
*                                                            @Y17XAXF*/
*
* DCL PRIRESPB BIT(8) CONSTANT('EA'X);  /* RESPONSE BUFFER   @OX21052*/
*                                       /*  TO 02            @OX21052*/
*                                       /*                   @OX21052*/
* DCL PRIOLD1  BIT(8) CONSTANT('E0'X);  /* OLD PRIORITY POST @Y17XAXF*/
*                                       /*  TO VA            @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIMEDFG BIT(8) CONSTANT('DF'X);  /* MEDIUM PRIORITY   @Y17XAXF*/
*                                       /*  THAT HAS         @Y17XAXF*/
*                                       /*  ASSOCIATED FLAG  @Y17XAXF*/
*                                       /*  BYTE             @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRITOTE0 BIT(8) CONSTANT('DC'X);  /* OLD PRIORITY POST @Y17XAXF*/
*                                       /*  FROM TOTE TO 00  @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIPCOUT BIT(8) CONSTANT('E4'X);  /* POST TO PATH CTL  @Y17XAXF*/
*                                       /*  OUTBOUND         @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIASYNC BIT(8) CONSTANT('E6'X);  /* TO POST AN ASYNCH @Y17XAXF*/
*                                       /*  REQUEST BUFFER   @Y17XAXF*/
*                                       /*  TO IEDNKA        @Y17XAXF*/
*                                       /* PRE-SNA - FOR     @Y17XAXF*/
*                                       /*  RESET ERROR LOCK @Y17XAXF*/
*                                       /* SNA - FOR NEGATVE @Y17XAXF*/
*                                       /*  RESPONSE TO RTR  @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIOUTQ  BIT(8) CONSTANT('E0'X);  /* TO TPOST PIUS TO  @Y17XAXF*/
*                                       /*  THE 3705 OUTPUT  @Y17XAXF*/
*                                       /*  QUEUE            @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRIOUTBD BIT(8) CONSTANT('E4'X);  /* NORMAL POST TO    @Y17XAXF*/
*                                       /*  OUTBOUND PRO-    @Y17XAXF*/
*                                       /*  CESSING          @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
* DCL PRILUSQB BIT(8) CONSTANT('E2'X);  /* TPOST A QCB TO    @Y17XAXF*/
*                                       /*  LUS TO REQUEST   @Y17XAXF*/
*                                       /*  AN LU-LU SESSION @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*DCL PRILOFLG BIT(8) CONSTANT('D0'X);   /* PRIORITY POST OF  @Y17XAXF*/
*                                       /*  A/D REDRIVE      @Y17XAXF*/
*                                       /*  ELEMENT          @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*DCL PRICULCB BIT(8) CONSTANT('C0'X);   /* CLEANUP SYNC AND ROUTING
*                                                            @Y17XAXF*/
*DCL PRICUREQ BIT(8) CONSTANT('C4'X);   /* CLEANUP REQUEST   @Y17XAXF*/
*                                       /*  ELEMENT          @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*DCL PRIPRIME BIT(8) CONSTANT('DD'X);   /* POST TO NSL FOR   @Y17XAXF*/
*                                       /*  PRIMING          @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*DCL PRILAEND BIT(8) CONSTANT('E4'X);   /* TO START ERROR PROCESSING */
*                                       /* USED BY LINE END APPENDAGE*/
*/*                                                                  */
*DCL PRIMHUNT BIT(8) CONSTANT('E8'X);   /* TO POST A UNIT TO MH      */
*                                       /* USED BY IEDQBW            */
*                                       /* MUST BE GREATER THAN      */
*                                       /* PRIMHBFR                  */
*/*                                                                  */
*DCL PRIRELSE BIT(8) CONSTANT('E0'X);   /* TO RELEASE SUBTASK FROM   */
*                                       /* TIME DELAY OR OP. CONTROL */
*                                       /* USED BY HOLD              */
*                                       /* USED BY OPERATOR CONTROL  */
*/*                                                                  */
*DCL PRIFEFO BIT(8) CONSTANT('EE'X);    /* TO UPDATE DISK FEFO       */
*                                       /* POINTER                   */
*                                       /* CHECKED BY IEDQFA         */
*                                       /* SET BY IGG019RP,REUS/COPY */
*/*                                                                  */
*/*                                                                  */
*/*                      OTHER                                       */
*/*                                                                  */
*DCL PRIRLCB BIT(8) CONSTANT('EB'X);    /* USED BY IEDQBD TO   S22026*/
*                                       /* RETURN LCB          S22026*/
*/*                                                                  */
*DCL PRILCB BIT(8) CONSTANT('E7'X);     /* TO POST LCB FOR CLEANUP   */
*                                       /* USED BY LINEEND     S22026*/
*/*                                                                  */
*DCL PRICPBCL BIT(8) CONSTANT('E8'X);   /* TO POST CPB CLEANUP       */
*                                       /* COMPLETE                  */
*                                       /* USED BY DISK END APPENAGE */
*/*                                                                  */
*DCL PRICKPT BIT(8) CONSTANT('EC'X);    /* TO REQUEST COMPLETE       */
*                                       /* CHECKPOINT                */
*                                       /* USED BY REUS              */
*                                       /* USED BY MCPCLOSE          */
*                                       /* USED BY TIME DELAY        */
*/*                                                                  */
*DCL PRILNFRE BIT(8) CONSTANT('E0'X);   /* TO FREE A LINE            */
*                                       /* USED BY DISPOSITION       */
*                                       /* USED BY SEND SCHEDULER    */
*                                       /* USED BY PUT SCHEDULER     */
*                                       /*         (UNLOCK)          */
*                                       /* MUST GET TO DESTINATION   */
*                                       /* SCHEDULER BEFORE LINE     */
*                                       /* IS FREE                   */
*/*                                                                  */
*DCL PRILCBRQ BIT(8) CONSTANT('E4'X);   /* UNUSED            @Y17XAXF*/
*/*                                                            X03039*/
*DCL PRIOPDST BIT(8) CONSTANT('E4'X);   /* UNUSED            @Y17XAXF*/
*/*                                                            X03039*/
*DCL PRIOPCMP BIT(8) CONSTANT('E5'X);   /* UNUSED            @Y17XAXF*/
*                                       /*                     X03039*/
*DCL PRICLDST BIT(8) CONSTANT('E4'X);   /* UNUSED            @Y17XAXF*/
*/*                                                            X03039*/
*DCL PRIRESUM BIT(8) CONSTANT('E5'X);   /* TO POST RESPONSE  @Y17XAXF*/
*                                       /*  FROM DEBLOCK     @Y17XAXF*/
*                                       /*  BACK TO NIR GEN  @Y17XAXF*/
*                                       /*  MODULES TO REQ   @Y17XAXF*/
*                                       /*  RESUMPTION OF AN @Y17XAXF*/
*                                       /*  OPERATION BEGUN  @Y17XAXF*/
*                                       /*  BY NIR GENERATOR @Y17XAXF*/
*                                       /*  MODULES          @Y17XAXF*/
*/*                                                            X03039*/
*DCL PRISTOPD BIT(8) CONSTANT('E8'X);   /* USED TO RETURN AN   X03039*/
*                                       /* ELEMENT TO NSL      X03039*/
*/*                                                            X03039*/
*DCL PRIATTNH BIT(8) CONSTANT('E6'X);   /* UNUSED            @Y17XAXF*/
*/*                                                            X03039*/
*DCL PRICLSDN BIT(8) CONSTANT('10'X);   /* TO REQUEST CLOSEDOWN      */
*                                       /* USED BY -----             */
*                                       /* MUST BE LOWEST PRIORITY   */
*/*                                                                  */
*DCL PRIAPCKP BIT(8) CONSTANT('EC'X);   /* TO REQUEST INCIDENT       */
*                                       /* CHECKPOINT                */
*                                       /* USED BY APPLICATION       */
*                                       /* PROGRAM                   */
*/*                                                                  */
*DCL PRIOPCKP BIT(8) CONSTANT('EC'X);   /* TO REQUEST INCIDENT       */
*                                       /* CHECKPOINT                */
*                                       /* USED BY OPERATOR CONTROL  */
*/*                                                                  */
*DCL PRILNCL BIT(8) CONSTANT('EC'X);    /* TO CLEAN UP BUFFERS AND TO*/
*                                       /* FREE LINE                 */
*                                       /* USED BY LINE END TO POST  */
*                                       /* LINE TO DISPOSITION       */
*                                       /* USED BY IN END            */
*                                       /* USED BY OUT END           */
*/*                                                                  */
*DCL PRILCBAT BIT(8) CONSTANT('E9'X);   /* TO POST LCB TO STOPLINE   */
*                                       /* USED BY LINENED     S22025*/
*/*                                                                  */
*DCL PRILOGLB BIT(8) CONSTANT('E0'X);   /* TO POST THE LOG LCB TO    */
*                                       /* ITSELF                    */
*                                       /* USED BY LOG SCHEDULER     */
*/*                                                                  */
*DCL PRISSOLT BIT(8) CONSTANT('DC'X);   /* POSTED TO OPERATOR CONTROL*/
*                                       /* TO REQUEST START LINE /   */
*                                       /* STOPLINE                  */
*                                       /* USED BY ON LINE TEST      */
*/*                                                                  */
*DCL PRITRACE BIT(8) CONSTANT('F0'X);   /* DSPTRACE PRIORITY IGCM610D
*                                           POSTS UNIT TO ALTER
*                                           IGG019RO TO START OR STOP
*                                           TRACE(S) AFTER MODIFY
*                                           TCAM, SUBT= COMMAND
*                                                            @Y17XAXF*/
*DCL PRITIME BIT(8) CONSTANT('F0'X);    /* TO RETURN ELE FROM TIME Q */
*                                       /* USED BY TIME DELAY        */
*/*                                                                  */
*DCL PRIREUSX BIT(8) CONSTANT('EE'X);   /* TO ACTIVATE REUS  @OS76497*/
*                                       /* ASSEM IN PLACE BY IGG019RP*/
*/*                                                                  */
*DCL PRIATTN BIT(8) CONSTANT('DC'X);    /* POST ATTENTION ELEMENT    */
*                                       /* USED BY ATTENTION HANDLER */
*/*                                                                  */
*DCL PRIATN05 BIT(8) CONSTANT('DD'X);   /* 3705 ATTENTION ELEMENT
*                                          PRIORITY          @YM08074*/
*/*                                                                  */
*DCL PRISYSDL BIT(8) CONSTANT('DC'X);   /* TO INITIATE SYSTEM DELAY  */
*                                       /* USED BY OPERATOR CONTROL  */
*                                       /* CHECKED BY SYS DELAY      */
*/*                                                                  */
*DCL PRISYSDT BIT(8) CONSTANT('D8'X);   /* POST SYSTEM DELAY QCB     */
*                                       /* TO TIME DELAY             */
*                                       /* USED BY SYSTEM DELAY      */
*/*                                                                  */
*DCL PRILCBDL BIT(8) CONSTANT('20'X);   /* TO INDICATE AN LCB ON     */
*                                       /* SYSTEM DELAY QUEUE        */
*                                       /* SET BY SYSTEM DELAY,IEDQHI*/
*                                       /* CHECKED BY CHECKPOINT     */
*/*                                                                  */
*DCL PRIPOSTS BIT(8) CONSTANT('FE'X);   /* POST  SYNC QUEUE          */
*/*                                                                  */
*DCL PRIPOSTA BIT(8) CONSTANT('FF'X);   /* POST ASYNC QUEUE          */
*/*                                                                  */
./ ADD NAME=TPROCD
*        %GOTO PROCPLS;                 /* BILINGUAL HEADER
         MACRO
         TPROCD
.*A000000-999999                                            @Y17XAXF
IEDPROC  DSECT
*
*        DSECT FOR TPROCESS DEVICE DEPENDENT INFO
*
PROLEN   DS    CL1 .               LEN OF TPROCESS DEV DEPENDENT INFO
PROFLAG  DS    CL1 .               TPROCESS FLAGS
PROSECQ  EQU   X'80' .                  QUEUE IS SECURE
PROLU    EQU   X'40' .                  LU=YES ON INPUT TPROCESS ENTRY
PRODATE  EQU   X'20' .                  DATE=YES SPECIFIED ON TPROCESS
*                                        MACRO
*        EQU   X'10'-X'01' .            RESERVED
PROILEN  EQU   *-IEDPROC .         LENGTH OF TPROCESS DEV DEP FIELD
         MEND
*        */
*%PROCPLS:;
*DECLARE
*  1 IEDPROC  BASED BDY(BYTE),
*/*                                                                  */
*/*      DSECT FOR TPROCESS DEVICE DEPENDENT INFO                    */
*/*                                                                  */
*    2 PROLEN   CHAR(1),                /* LEN OF TPROCESS DEV DEP   */
*    2 PROFLAG  CHAR(1),                /* TPROCESS DEV DEP          */
*      3 PROSECQ BIT(1),                /*   QUEUE IS SECURE         */
*      3 PROLU   BIT(1),                /*   LU=YES ON INPUT TPROCESS*/
*      3 PRODATE BIT(1),                /*   DATE=YES ON TPROCESS MACRO
*                                                                    */
*      3 *       BIT(5);                /*   RESERVED                */
* %PROILEN='LENGTH(IEDPROC)';           /*LENGTH OF TPROCESS INFO    */
./ ADD NAME=TPRUD
*        %GOTO PRUPLS;                  /* BILINGUAL HEADER
         MACRO
         TPRUD
         SPACE
.*CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
.*A560000,966000,560000,408000,576000                          @Y17XAXF
         SPACE
IEDPRUND DSECT
*
*        PACKED RU DSECT
*
PRURHTH  DS    0XL4 .                   TH AND RH FIELDS
PRURH    DS    0XL3 .                   RH FIELD
PRURHFG0 DS    XL1 .                    RH FLAG 0
PRURHTYP EQU   X'80' .                    ON-RSP, OFF-REQ
* PRURUCAT     2 BITS                    RU CATEGORY
PRURHFMD EQU   X'00' .                    FM DATA
PRURHNC  EQU   X'20' .                    NETWORK CONTROL
PRURHDFC EQU   X'40' .                    DATA FLOW CONTROL
PRURHSC  EQU   X'60' .                    SESSION CONTROL
*        EQU   X'10' .                   RESERVED
PRURHFI  EQU   X'08' .                   FORMAT INDICATOR
PRURHSDI EQU   X'04' .                   SENSE DATA INCLUDED
PRURHBC  EQU   X'02' .                   BEGIN CHAIN
PRURHEC  EQU   X'01' .                   END CHAIN
PRURHFG1 DS    XL1 .                    RH FLAG 1
PRURHDR1 EQU   X'80' .                   DEFINITE RESPONSE
*        EQU   X'40' .                   RESERVED
PRURHDR2 EQU   X'20' .                   DEFINITE RESPONSE 2
PRURHER  EQU   X'10' .                   EXCEPTION RESPONSE
*        EQU   X'08' .                   RESERVED
*        EQU   X'04' .                   RESERVED
*        EQU   X'02' .                   RESERVED
PRURHPI  EQU   X'01' .                   PACING INDICATOR
PRURHFG2 DS    XL1 .                    RH FLAG 2
PRURHBB  EQU   X'80' .                   BEGIN BRACKET
PRURHEB  EQU   X'40' .                   END BRACKET
PRURHCDI EQU   X'20' .                   CHANGE DIRECTION INDICATOR
*        EQU   X'10' .                   RESERVED
PRURHCSI EQU   X'08' .                   CODE SELECTION INDICATOR
*        EQU   X'04' .                   RESERVED
*        EQU   X'02' .                   RESERVED
*        EQU   X'01' .                   RESERVED
PRUTH    DS    0XL1 .                   TH FIELDS
PRUFIDN  DS    XL1 .                    FID LEVEL INDICATOR
*        PRUTHTYE  4 BITS
PRUTHFD0 EQU   X'00' .                   FID 0
PRUTHFD1 EQU   X'10' .                   FID 1
PRUTHFD2 EQU   X'20' .                   FID 2
PRUTHFD3 EQU   X'30' .                   FID 3
PRUTHBIU EQU   X'08' .                   BEGIN SEGMENT
PRUTHEIU EQU   X'04' .                   END SEGMENT
PRUTHUSS EQU   X'02' .                   CONV FROM USS TO FSS  @Y17XAXF
PRUTHEFI EQU   X'01' .                   EXPEDITED FLOW INDICATOR
         DS    F .                      RESERVED
PRUNLEN  EQU   *-IEDPRUND               TPRUD NEG PREFIX LENGTH@Y17XAXF
IEDPRUQD EQU   *                        END OF NEGATIVE PREFIX
PRUTTCIN DS    H .                      DESTINATION TTCIN
PRUDATCT DS    H .                      DATA COUNT
         DS    A .                      RESERVED
PRUTIC   DS    0A .                     TIC COMMAND CODE/ADDR
         DS    XL1 .                    TIC CODE
PRUNUNIT DS    AL3 .                    NEXT UNIT ADDRESS
PRUDATA  EQU   *                        START OF DATA
PRUQLEN  EQU   *-IEDPRUQD .             TPRUD BASIC LENGTH     @Y17XAXF
PRULEN   EQU   *-IEDPRUND .             LENGTH OF TPRUD
         MEND
*        */
*%PRUPLS : ;
*DECLARE
*  1 IEDPRUQD BDY(WORD) BASED(IEDPRUQP),
*/*                                                                  */
*/*      PACKED RU DSECT                                             */
*/*                                                                  */
*   2 PRUTTCIN FIXED(16),               /* DESTINATION TTCIN         */
*   2 PRUDATCT FIXED(15),               /* DATA COUNT                */
*   2 *        PTR(31),                 /* RESERVED                  */
*   2 PRUTIC  BIT(32) BDY(WORD),        /* TIC COMMAND CODE/ADDR     */
*                                                          /*@Y17XAXF*/
*    3 *       CHAR(1),                 /* TIC CODE                  */
*    3 PRUNUNIT PTR(24),                /* NEXT UNIT ADDRESS         */
*   2 PRUDATA CHAR(*);                  /* START OF DATA             */
* %PRULEN='LENGTH(IEDPRUQD+8)';         /* LENGTH OF TPRUD           */
* %PRUNLEN='LENGTH(IEDPRUND)';          /* NEG PREFIX LEN    @Y17XAXF*/
* %PRUQLEN='LENGTH(IEDPRUQD)';          /* BASIC PRU LEN     @Y17XAXF*/
*/*                                                                  */
*/*      NEGATIVE PREFIX                                             */
*/*                                                                  */
*DECLARE
*  1 IEDPRUND BDY(WORD) BASED(ADDR(IEDPRUQD)-LENGTH(IEDPRUND)),
*   2 PRURHTH  CHAR(4),                 /* TH AND RH FIELDS          */
*     3 PRURH    CHAR(3),               /* RH FIELD                  */
*       4 PRURHFG0 CHAR(1),             /* RH FLAG 0                 */
*         5 PRURHTYP BIT(1),              /* ON-RSP, OFF-REQ         */
*         5 PRURUCAT BIT(2),              /* RU CATEGORY             */
*         5 *        BIT(1),              /* RESERVED                */
*         5 PRURHFI  BIT(1),              /* FORMAT INDICATOR        */
*         5 PRURHSDI BIT(1),              /* SENSE DATA INDICAT      */
*         5 PRURHBC  BIT(1),              /* BEGIN CHAIN             */
*         5 PRURHEC  BIT(1),              /* END CHAIN               */
*       4 PRURHFG1 CHAR(1),             /* RH FLAG 1                 */
*         5 PRURHDR1 BIT(1),              /* DEFINITE RESPONSE 1     */
*         5 *        BIT(1),              /* RESERVED                */
*         5 PRURHDR2 BIT(1),              /* DEFINITE RESPONSE 2     */
*         5 PRURHER  BIT(1),              /* EXCEPTION RESPONSE      */
*         5 *        BIT(3),              /* RESERVED                */
*         5 PRURHPI  BIT(1),              /* PACING INDICATOR        */
*       4 PRURHFG2 CHAR(1),             /* RH FLAG 2                 */
*         5 PRURHBB  BIT(1),              /* BEGIN BRACKET           */
*         5 PRURHEB  BIT(1),              /* END BRACKET             */
*         5 PRURHCDI BIT(1),              /* CHANGE DIRECTION INDIC  */
*         5 *        BIT(1),              /* RESERVED                */
*         5 PRURHCSI BIT(1),              /* CODE SELECTION INDIC    */
*         5 *        BIT(3),              /* RESERVED                */
*     3 PRUTH   CHAR(1),                /* TH FIELDS                 */
*       4 PRUFIDN CHAR(1),              /* FID LEVEL INDICATOR       */
*         5 PRUTHTYE BIT(4),              /* FORMAT TYPE             */
*         5 PRUTHBIU BIT(1),              /* BEGIN SEGMENT           */
*         5 PRUTHEIU BIT(1),              /* END SEGMENT             */
*         5 PRUTHUSS BIT(1),              /* CONV FROM USS TO FSS    */
*         5 PRUTHEFI BIT(1),              /* EXPEDITED FLOW INDIC    */
*   2 * PTR(31);                        /* RESERVED                  */
*
*/*                                                                  */
*/*      FORMAT TYPE (PRUTHTYE)                                      */
*/*                                                                  */
* DCL PRUTHFD0  BIT(4) CONSTANT('0000'B); /* FID 0 INDICATOR         */
* DCL PRUTHFD1  BIT(4) CONSTANT('0001'B); /* FID 1 INDICATOR         */
* DCL PRUTHFD2  BIT(4) CONSTANT('0010'B); /* FID 2 INDICATOR         */
* DCL PRUTHFD3  BIT(4) CONSTANT('0011'B); /* FID 3 INDICATOR         */
*
*/*                                                                  */
*/*      RU CATEGORY (PRURUCAT)                                      */
*/*                                                                  */
* DCL PRURHFMD BIT(2) CONSTANT('00'B);  /* FM DATA                   */
* DCL PRURHNC  BIT(2) CONSTANT('01'B);  /* NETWORK CONTROL           */
* DCL PRURHDFC BIT(2) CONSTANT('10'B);  /* DATA FLOW CONTROL         */
* DCL PRURHSC  BIT(2) CONSTANT('11'B);  /* SESSION CONTROL           */
*/*                                                          @Y17XAXF*/
*/*      INVALID TIC POINTER CONSTANT                        @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL PRUINTIC BIT(32) CONSTANT('08000002'X); /* LAST PACKED @Y17XAXF*/
*                                             /*  RU IN CHN  @Y17XAXF*/
./ ADD NAME=TQCBD
*        %GOTO BSLQCB;                                               /*
         MACRO
         TQCBD
.*A-000000-999999                                              @X31X8X0
.*       UPDATED   6/7/74                                      @Z30X8XE
.*       CONVERTED TO A BILINGUAL DSECT 07/19/72                 S22024
.* CHANGE ACTIVITY = AS FOLLOWS:
.*D015000,825000                                                SA51078
.*C820000,905000                                                SA51078
.*A024500                                                       SA51078
.*A087000,125000                                                 S22029
.*C015000                                                        S22029
.*D230000                                                        S22025
.*C015000                                                        S22025
.*A020000,6950000
.*D110000-125000                                                 S22026
.*A087000,110000-125000,337000,382000-384000,497000              S22026
.*A000000,055000,445000,936000                                   S22024
.*C935000,020000                                                 S22024
.*D265000-270000                                                 S22024
.*A230000                                                        Y06327
.*C946800                                                        Y06327
.*C015000                                                      @Z30X8XE
.*C960000,965800                                               @XA11316
.*A145000,941800                                               @OX17153
.*A024350,1900000,944400,960000                                @Y17XAXF
.*D024550                                                      @Y17XAXF
.*C024600-024846,024900-024930,979200-981800                   @Y17XAXF
.*A175000
.*A305000,949800                                               @OY20733
*                                                                S22024
*                                                                S22024
IEDNQCB  DSECT                                                   S22024
QCBCHAIN DS    AL4 .                    ADDR TO CHAIN OF QCB'  @Y17XAXF
*                                         WAITING FOR PLCB     @Y17XAXF
*                                         ALLOCATION           @Y17XAXF
QCBSTAT1 DS    XL1 .                    FLAG BYTE                S22024
QCBPLCBN EQU   X'80' .                  ON - FIELD CONTAINS PLCB ADDR
*                                       OFF - CONTAINS TTCIN     S22024
QCBWAITC EQU   X'40' .                  FIELD CONTAINS WAIT    @Y17XAXF
*                                         CHAIN ADDR           @Y17XAXF
QCBSNDRQ EQU   X'20' .                  A PLCB HAS BEEN REQ    @Y17XAXF
*                                         HAVING THE SEND &    @Y17XAXF
*                                         RECV STCB'S IN ITS   @Y17XAXF
*                                         STCB CHAIN           @Y17XAXF
QCBRCVRQ EQU   X'10' .                  A PLCB HAS BEEN REQ    @Y17XAXF
*                                         HAVING THE RECV STCB @Y17XAXF
*                                         IN ITS STCB CHAIN    @Y17XAXF
QCBESIG  EQU   X'08' .                  ESIG IS NEEDED         @Y17XAXF
QCBNDXRQ EQU   X'04' .                  INDEXED PLCB REQUEST   @Y17XAXF
QCBFLUSH EQU   X'02' .                  QUEUE FLUSH IN PROGRESS
*                                                              @Y17XAXF
*        EQU   X'01' .                  RESERVED               @Y17XAXF
*                                                              @Y17XAXF
*        QCBSTAT1 MUST ALWAYS PRECEDE QCBPLCBA                 @Y17XAXF
*                                                              @Y17XAXF
QCBPLCBA DS    0AL3 .                   ADDR OF PLCB             S22024
         DS    XL1 .                                           @Y17XAXF
QCBTTCIN DS    H .                      TNT INDEX                S22024
*
*
*        THIS IS A DSECT OF THE MASTER QCB FOLLOWED BY THE PRIORITY
*        QCB. THERE IS A MASTER QCB FOR EVERY MESSAGE QUEUE. THERE
*        IS A PRIORITY QCB FOR EACH PRIORITY LEVEL APPLICABLE FOR
*        THIS DESTINATION QUEUE.
         SPACE
IEDQQCB  EQU   *                                                 S22024
QCBDSFLG DS    XL1 .                    FLAGS INDICATING A QCB FOR
*                                         DISPATCHER AND WHICH DATA
*                                         SET(S) THE MESSAGES FOR
*                                         THIS DEST. ARE QUEUED ON
*                        BIT DEFINITIONS
QCBHELD  EQU   X'01' .                  STOP SENDING
QCBFQCB  EQU   X'02' .                  FLAG INDICATING A QCB
QCBDRQQ  EQU   X'04' .                  FLAG INDIC A DRQ         S22026
QCBALTMH EQU   X'08'  .                 MSGS GO TO ALTERNATE MH  S22029
QCBREUS  EQU   X'10' .                  FLAG FOR REUSEABLE DISK Q.
QCBNREUS EQU   X'20' .                  FLAG FOR NONREUS. DISK Q.
QCBDISK  EQU   X'30' .                  DISK QUEUES USED
QCBCORE  EQU   X'40' .                  FLAG FOR MS QUEUES.
*              X'50'                    INDICATES CORE Q'S WITH
*                                       BACKUP ON REUSABLE DISK
*              X'60'                    INDICATES CORE Q'S WITH
*                                       BACKUP ON NONREUS DISK
QCBTSQ   EQU   X'80'  .                 TIME-SHARING QUEUES      S22029
*
QCBELCHN DS    AL3 .                    ELEMENT CHAIN
*              CONTAINS THE QCB ADDRESS TO BE POSTED TO WHEN THIS
*              QCB IS REMOVED FROM THE TIME DELAY QUEUE.
*                        BIT DEFINITIONS
QCBCNTEN EQU   X'01' .                  WACK TO ADDRESSING     @OX17153
QCBPRI   DS    XL1 .                    PRIORITY
QCBLINK  DS    AL3 .                    POINTER TO NEXT STCB IN CHAIN
QCBSTVTO DS    AL1 .                    INDEX TO THE ENTRY IN THE
*                                         SUBTASK VECTOR TABLE
QCBSTCHN DS    AL3 .                    STCB CHAIN
QCBSTPRI DS    XL1 .                    PRIORITY OF THE STCB
QCBCALLN EQU   X'50' .                  DIALNO=NONE CALL IN    @Y17XAXF
*                                        ONLY                  @Y17XAXF
QCBCNTVL EQU   X'70' .                  CINTVL INDICATOR       @Y17XAXF
QCBCLK   EQU   X'80' .                  CLOCK INDICATOR        @Y17XAXF
QCBSLINK DS    AL3 .                    POINTER TO NEXT STCB IN CHAIN
QCBEOLDT DS    0XL2 .                   INTERRUPT TIME         @Y17XAXF
         DS    XL1 .                    RESERVED
QCBBYTE1 DS    XL1 .                    QCB FLAGS
QCBRITRM EQU   X'80' .                    REC IN TRANSIT MODE
*        EQU   X'40'-X'01' .              RESERVED             @Y17XAXF
QCBRETCT DS    0XL1 .                   TSO RETRY COUNTERS          TSO
* QCBLOGCT     BITS 0-1                 TSO RETRY COUNTER      @Y17XAXF
QCBLOG2  EQU   X'80' .                    RETRY COUNTER 2      @Y17XAXF
QCBLOG1  EQU   X'40' .                    RETRY COUNTER 1      @Y17XAXF
QCBNL    EQU   X'30' .                  TSO NEW LINE REQ       @Y17XAXF
QCBCR    EQU   X'20' .                  TSO CARRIAGE RETURN REQ@Y17XAXF
QCBLF    EQU   X'10' .                  TSO LINE FEED REQ      @Y17XAXF
QCBEND   EQU   X'08' .                  EDIT SPEC OUTPUT REQ   @Y17XAXF
QCBIEND  EQU   X'04' .                  EDIT SPEC OUTPUT REQ OR@Y17XAXF
*                                         OR 3270 FORMAT       @Y17XAXF
*QCBHUCT EQU   X'02'-X'01'              TSO HANGUP COUNTS      @Y17XAXF
QCBHUCT1 EQU   X'01' .                   *                     @Y17XAXF
QCBHUCT2 EQU   X'F2' .                   *                     @Y17XAXF
QCBHUCT3 EQU   X'03' .                   *                     @Y17XAXF
QCBLKRLN DS    XL1 .                    LOCK RELATIVE LINE NO.
*              OFFSET TO QCB FOR TIME DELAY - FOR QCB = X'00'
QCBSTAT  DS    XL1 .                    STATUS OF THIS QCB
*                        BIT DEFINITIONS
QCBEOM   EQU   X'80' .                  END OF MESSAGE SENT
QCBTRMHO EQU   X'40' .                  TERMINAL WAS HELD
QCBBUFRD EQU   X'20' .                  BUFFERED TERMINAL
QCBSEND  EQU   X'10' .                  SENDING TO BUFFERED TERMINAL
QCBSMODE EQU   X'08'                    SET MODE REQ FOR TSO TRM Y06327
QCBSCHDL EQU   X'04' .                  PUT IN DELAY Q WHEN INACTIVE
QCBCLOCK EQU   X'02' .                  ON = CLOCK, OFF = INTVL
QCBTIME  EQU   X'01' .                  DELAY GREATER THAN 12 HOURS
*
QCBSCBOF DS    XL1 .                    OFFSET TO THE PROPER SCB
*                                         FOR THIS TRANSMISSION.
QCBINSRC DS    0AL3 .                   CHAIN OF SOURCE LCB'S
*                                         CURRENTLY SENDING INITIATE
*                                         MODE MSGS TO THIS DEST. Q.
QCBSATCT DS    XL1 .                    SIM ATTN OUTPUT LINE COUNT  TSO
QCBTSOF2 DS    XL1 .                    SECOND TSO FLAG BYTE        TSO
*                        BIT DEFINITIONS                            TSO
QCBINHBN EQU   X'80' .                  USE INHIBITS WITH THIS TERM TSO
QCBMTP   EQU   X'80'                    MID TPUT FOR 3270      @OY20733
QCBBUFQ  EQU   X'40' .                  TCAM BUFFER BEING HELD      TSO
QCBPOSTO EQU   X'20' .                  QCB POSTED TO ITSELF        TSO
QCBDSSMI EQU   X'10' .                  START MI CHARACTER SENT     TSO
QCBSIMRD EQU   X'08' .                  SIMATTN READ EXECUTING      TSO
QCBSATCH EQU   X'04' .                  SIMULATED ATTN BY CHARACTER TSO
QCBSATTI EQU   X'02' .                  SIMULATED ATTN BY TIME      TSO
QCBSATLC EQU   X'01' .                  SIMULATED ATTN BY LINE      TSO
*
QCBTSOF1 DS    XL1 .                    FIRST TSO FLAG BYTE         TSO
*                        BIT DEFINITIONS                            TSO
QCBWRBRK EQU   X'80' .                  ISSUE A WRITE BREAK         TSO
QCBTGET  EQU   X'40' .                  TGET REQUEST                TSO
QCBTPUT  EQU   X'20' .                  TPUT REQUEST                TSO
QCBNOBUF EQU   X'10' .                  INSUFFICIENT BUFFERS        TSO
QCBSATRD EQU   X'08' .                  SIMULATED ATTN READ REQUEST TSO
QCBPARTO EQU   X'04' .                  PARTIAL OUTPUT LINE         TSO
QCBDELAY EQU   X'02' .                  QCB IN DELAY QUEUE
QCBDISC  EQU   X'01' .                  USER TO BE LOGGED OFF       TSO
*
QCBEXTO  DS    0H .                     OFFSET TO EXT            S22026
QCBINTVL DS    XL2 .                    INTERVAL FOR POLL DELAY
QCBMSGCT DS    H .                      COUNT OF MESSAGES IN THIS
*                                         QUEUE
QCBPREN  DS    0A .                     ADDRESS OF TERMINAL TABLE
*                                       ENTRY IF QCB FOR A PROCESS
*                                       ENTRY
QCBPRLVL DS    XL1 .                    HIGHEST PRIORITY LEVEL MESSAGE
QCBLKRRN DS    0XL3 .                   LOCK RELATIVE RECORD NUM.
*              LINK FIELD FOR QCB WHEN ON THE TIME DELAY QUEUE
QCBCARCT DS    XL1 .                    CARRIAGE POSITION COUNT     TSO
QCBTJID  DS    H .                      TSO JOB IDENTIFICATION      TSO
QCBRELLN DS    XL1 .                    RELATIVE LINE NO. FOR THE
*                                         LINE THIS QCB REPRESENTS
QCBLGBAD DS    0AL3 .                   ADDRESS OF LGB           S22024
QCBDCBAD DS    AL3 .                    ADDRESS OF DCB
QCBFLAG  DS    XL1 .                    QCB STATUS BITS
*                        BIT DEFINITIONS
QCBTSSES EQU   X'80' .                  TSO SESSION IN PROGRESS     TSO
QCBNOBRK EQU   X'40' .                  NO REVERSE BREAK FEATURE    TSO
QCBREAD  EQU   X'20' .                  READ HAS PRIORITY           TSO
QCBRSRV  EQU   X'10' .                  REUSE SERVICED BIT
QCBTERMQ EQU   X'08' .                  QUEUING BY TERMINAL
QCBSDFFO EQU   X'04' .                  CURRENTLY SENDING FEFO MSG
QCBPROC  EQU   X'02' .                  THIS QCB FOR A PROCESS ENTRY
QCBCKPT  EQU   X'01' .                  FLAG FOR CHECKPOINT
*
QCBQBACK DS    AL3 .                    QBACK MESSAGE CHAIN
         SPACE 2
*     DEC                                 HEX
*        *********************************
*      0 * DSFLG *         ELCHN         *
*        *********************************
*      4 * PRI   *         LINK          *  4
*        *********************************
*      8 *  VTO  *         STCHN         *  8
*        *********************************           **************
*     12 * STPRI *         SLINK         *  C        *            *
*        *********************************           * MASTER QCB *
*     16 *    EOLDT      * LKRLN * STAT  * 10        *
*        *********************************           **************
*     20 * SCBOF *         INSRC         * 14
*        *********************************
*     24 *    INTVL      *     MSGCT     * 18
*        *********************************
*     28 * PRILVL*     PREN/LKRRN        * 1C
*        *********************************
*     32 * RELLN *      DCBAD/LGBAD      * 20                    S22024
*        *********************************
*     36 * FLAG  *         QBACK         * 24
*        *********************************
         SPACE
*
QCBMEND  EQU   * .
QCBMSIZE EQU   QCBMEND-IEDQQCB .        SIZE OF MASTER QCB
QCBPRFSZ EQU   IEDQQCB-IEDNQCB          SIZE OF 3705 PREFIX      Y06327
*
         SPACE 2
*
*        THIS IS THE DSECT OF A PRIORITY QCB.  THERE IS A PRIORITY
*        QCB FOR EACH PRIORITY LEVEL APPLICABLE FOR THIS DEST. Q
*
IEDQPQCB EQU   * .                 START OF PRI LEVEL QCB
QCBDNHDR DS    XL3 .                    DISK RECORE NUMBER TO PUT
*                                         THE NEXT HDR RECEIVED
QCBFHDLZ DS    0XL3 .                   DISK RECORD             SA52971
QCBDATFL DS    X .                     DATFLAGS FIELD OF LAST    S21101
*                                      MSG REMOVED FROM FEFO Q   S21101
QCBPFEFO DS    0XL3 .                   IF TERM OF QUEUE HELD,  SA52971
*                                         PREVIOUS TO FIRST     SA52971
*                                         HELD MESSAGE          SA52971
*                                       IF TERM NOT HELD,       SA52971
*                                         PREVIOUS TO LAST      SA52971
         DS    XL2                        MESSAGE SERVICED      SA52971
QCBFHDTZ DS    0XL3 .                   DISK RECORD             SA52971
         DS    XL1 .                    PFEFO CONTINUED         SA52971
QCBDATSQ DS    XL2 .                    SEQUENC NUMBER OF LAST   S21101
*                                       MSG REMOVED FROM FEFO Q  S21101
QCBINTFF DS    XL3 .                    DISK REC.NO. OF THE FIRST
*                                         INTERCEPTED MSG. - FEFO
*                                         ORDER
QCBINTLF DS    0XL3 .                   LAST INTERCEPTED MSG    SA52971
QCBPREVF DS    XL3 .                    PREVIOUS TO LAST FFEFO  SA52971
QCBFFEFO DS    XL3 .                    DISK REC. NO. OF THE FIRST
*                                         (FEFO) MSG. TO BE RECVD.
*                                         CORE RECORD NO. IF THIS
*                                         IS A CORE ONLY QUEUE.
QCBLFEFO DS    XL3 .                    DISK RECORD NO. OF THE
*                                         LAST FEFO MSG. RECEIVED.
*                                         CORE REC. NO. IF THIS IS
*                                         A CORE ONLY QUEUE.
QCBCFHDR DS    XL3 .                    CORE REC. NO. OF THE FIRST
*                                         HEADER APPEARING IN THIS
*                                         QUEUE.
QCBPRIPQ DS    XL1 .                    THE PRIORITY OF THIS PRITY
*                                         LEVEL QCB.  THIS WILL BE
*                                         X'00' IF THIS IS THE
*                                         LOWEST PRTY LEVEL.
QCBPQBCK DS    XL3 .                    PQCB BACK CHAIN         SA51078
         SPACE 2
*     DEC                                 HEX
*        *********************************
*      0 *         DNHDR         * DATFL *  0                   SA52971
*        *********************************
*      4 *         PFEFO         * DATSQ *  4                   SA52971
*        *********************************         ****************
*      8 *(DATSQ)*         INTFF         *  8      *            SA52971
*        *********************************         * PRIORITY QCB *
*     12 *         PREVF         * FFEFO *  C      *            SA52971
*        *********************************         ****************
*     16 *    (FFEFO)    *     LFEFO     * 10
*        *********************************
*     20 *(LFEFO)*         CFHDR         * 14
*        *********************************
*     24 * PRIPQ *         PQBCK         * 18                   SA51078
*        *********************************
*
QCBPEND  EQU   *
QCBPSIZE EQU   QCBPEND-IEDQPQCB
QCBLDCB  EQU   IEDQQCB+X'78'            LOGTYPE DCB ADDR       @XM05707
*
         MEND  , */
*%BSLQCB  :  ;
*DECLARE
*  1 IEDQQCB BASED(IEDQQPTR) BDY(WORD), /* START OF THE MASTER QCB
*                                                              S22024*/
*/*                                                                  */
*/*                                                                  */
*/*      THIS IS A DSECT OF THE MASTER QCB FOLLOWED BY THE PRIORITY  */
*/*      QCB. THERE IS A MASTER QCB FOR EVERY MESSAGE QUEUE. THERE   */
*/*      IS A PRIORITY QCB FOR EACH PRIORITY LEVEL APPLICABLE FOR    */
*/*      THIS DESTINATION QUEUE.                                     */
*
*   2 QCBDSFLG    CHAR(1),              /* FLAGS INDICATING A QCB FOR
*                                       THE DISPATCHER AND WHICH DATA
*                                       SET(S) THE MESSAGES FOR THIS
*                                       DEST. ARE QUEUED ON          */
*    3 QCBTSQ   BIT(1),                 /* TIME-SHARING QUEUES S22029*/
*    3 QCBCORE  BIT(1),                 /* FLAG FOR MS QUEUES        */
*    3 QCBDISK  BIT(2),                 /* DISK QUEUES USED          */
*     4 QCBNREUS BIT(1),                /* NON-REUSABLE DISK QUEUE   */
*     4 QCBREUS  BIT(1),                /* REUSABLE DISK QUEUE       */
*    3 QCBALTMH BIT(1),                 /* MSGS GO TO ALTER MH S22029*/
*    3 QCBDRQQ  BIT(1),                 /* FLAG INDIC A DRQ    S22026*/
*    3 QCBFQCB  BIT(1),                 /* INDICATES A QCB           */
*    3 QCBHELD  BIT(1),                 /* STOP SENDING
*                                       X'60' INDICATES CORE Q'S WITH
*                                       BACK UP ON NONR. DSK
*                                       X'50' INDICATES CORE Q'S WITH
*                                       BACKUP ON REUS. DISK         */
*/*                                                                  */
*   2 QCBELCHN    PTR(24)  BDY(BYTE),   /* ELEMENT CHAIN
*                                       CONTAINS THE QCB ADDRESS
*                                       TO BE POSTED TO WHEN THIS
*                                       QCB IS REMOVED FROM THE
*                                       TIME DELAY QUEUE             */
*    3 *        CHAR(2),               /*                    @OX17153*/
*    3 *        BIT(7),                /*                    @OX17153*/
*    3 QCBCNTEN BIT(1),                 /* WACK TO ADDRESSING@OX17153*/
*   2 QCBPRI      CHAR(1),              /* PRIORITY                  */
*   2 QCBLINK     PTR(24)  BDY(BYTE),   /* POINTER TO NEXT STCB IN
*                                       CHAIN                        */
*   2 QCBSTVTO    PTR(8),               /* INDEX TO THE ENTRY IN THE
*                                       SUBTASK VECTOR TABLE         */
*   2 QCBSTCHN    PTR(24)  BDY(BYTE),   /* STCB CHAIN                */
*   2 QCBSTPRI    CHAR(1),              /* PRIORITY OF THE STCB      */
*   2 QCBSLINK    PTR(24)  BDY(BYTE),   /* POINTER TO THE NEXT STCB
*                                       IN CHAIN                     */
*   2 QCBEOLDT   FIXED(16) BDY(BYTE),   /* INTERRUPT TIME    @VS44899*/
*    3 *         CHAR(1),               /* RESERVED          @Y17XAXF*/
*    3 QCBBYTE1  CHAR(1),               /* QCB FLAGS         @Y17XAXF*/
*     4 QCBRITRM  BIT(1),               /*  REC IN TRANS     @Y17XAXF*/
*                                       /*   MODE            @Y17XAXF*/
*     4 *         BIT(7),               /*  RESERVED         @Y17XAXF*/
*   2 QCBLKRLN   CHAR(1),               /*LOCK RELATIVE LINE NUMBER  */
*    3 QCBRETCT  CHAR(1),               /* TSO RETRY COUNTERS    TSO */
*     4 QCBLOGCT BIT(2),                /* TSO RETRY COUNTER @Y17XAXF*/
*     4 QCBNL    BIT(2),                /* TSO NLINE REQUEST @Y17XAXF*/
*     4 QCBEND   BIT(1),                /* EDT SPEC OUTPUT   @Y17XAXF*/
*                                       /*  REQUIRED         @Y17XAXF*/
*     4 QCBIEND  BIT(1),                /* EDT SPEC OUTPUT   @Y17XAXF*/
*                                       /*  REQ OR 3270      @Y17XAXF*/
*                                       /*  FORMAT           @Y17XAXF*/
*     4 QCBHUCT  BIT(2),                /* TSO HANGUP COUNTS @Y17XAXF*/
*   2 QCBSTAT     CHAR(1),              /* STATUS OF THE QCB         */
*    3 QCBEOM   BIT(1),                 /* END OF MESSAGE SENT       */
*    3 QCBTRMHO BIT(1),                 /* TERMINAL WAS HELD         */
*    3 QCBBUFRD BIT(1),                 /* BUFFERED TERMINAL         */
*    3 QCBSEND  BIT(1),                 /* SENDING TO BUFFER
*                                       TERMINAL                     */
*    3 QCBSMODE BIT(1),                 /* TSO SET MODE REQ    Y06327*/
*    3 QCBSCHDL BIT(1),                 /* PUT IN DELAY Q WHEN
*                                       INACTIVE                     */
*    3 QCBCLOCK BIT(1),                 /* ON = CLOCK, OFF = INTVL   */
*    3 QCBTIME  BIT(1),                 /* DELAY GREATER THAN 12
*                                       HOURS                        */
*   2 QCBSCBOF    PTR(8),               /* OFFSET TO THE PROPER SCB
*                                       FOR THIS TRANSMISSION.       */
*   2 QCBINSRC    PTR(24)  BDY(BYTE),   /* CHAIN OF SOURCE LCB'S
*                                       CURRENTLY SENDING INITIATE
*                                       MODE MSGS TO THIS DEST. Q.   */
*    3 *          PTR(24)  BDY(BYTE),
*     4 QCBSATCT    PTR(8),             /* SIM ATTN OUTPUT LINE CNT  */
*     4 QCBTSOF2    CHAR(1),            /* SECOND TSO FLAG BYTE   TSO*/
*      5 QCBINHBN BIT(1),               /* USE INHIBITS WITH THIS
*                                       TERM                      TSO*/
*        6 QCBMTP BIT(1),               /* 3270 MID TPUT     @OY20733*/
*      5 QCBBUFQ  BIT(1),               /* TCAM BUFFER BEING HELD TSO*/
*      5 QCBPOSTO BIT(1),               /* QCB POSTED TO ITSELF   TSO*/
*      5 QCBDSSMI BIT(1),               /* START MI CHARACTER SENT
*                                                                 TSO*/
*      5 QCBSIMRD BIT(1),               /* SIMATTN READ EXECUTING TSO*/
*      5 QCBSATCH BIT(1),               /* SIMULATED ATTN BY
*                                       CHARACTER                 TSO*/
*      5 QCBSATTI BIT(1),               /* SIMULATED ATTN BY TIME TSO*/
*      5 QCBSATLC BIT(1),               /* SIMULATED ATTN BY LINE TSO*/
*     4 QCBTSOF1    CHAR(1),            /* FIRST TSO FLAG BYTE    TSO*/
*      5 QCBWRBRK BIT(1),               /* ISSUE A WRITE BREAK    TSO*/
*      5 QCBTGET  BIT(1),               /* TGET REQUEST           TSO*/
*      5 QCBTPUT  BIT(1),               /* TPUT REQUEST           TSO*/
*      5 QCBNOBUF BIT(1),               /* INSUFFICIENT BUFFERS   TSO*/
*      5 QCBSATRD BIT(1),               /* SIMULATED ATTENTION READ
*                                       REQUEST                   TSO*/
*      5 QCBPARTO BIT(1),               /* PARTIAL OUTPUT LINE    TSO*/
*      5 QCBDELAY BIT(1),               /* QCB IN DELAY QUEUE        */
*      5 QCBDISC  BIT(1),               /* USER TO BE LOGGED OFF  TSO*/
*   2 QCBINTVL    FIXED(16),            /* INTERVAL FOR POLL DELAY
*                                                            @VS44899*/
*    3 QCBEXTO FIXED(16) ,              /* OFFSET TO EXT     @VS44899*/
*   2 QCBMSGCT    FIXED(15),            /* COUNT OF MESSAGES IN
*                                       THIS QUEUE                   */
*   2 QCBPREN     PTR(31),              /* ADDRESS OF TERMINAL TABLE
*                                       ENTRY IF QCB FOR A PROCESS
*                                       ENTRY                        */
*    3 QCBPRLVL    CHAR(1),             /* HIGHEST MESSAGE PRIORITY  */
*    3 QCBLKRRN    CHAR(3),             /* LOCK RELATIVE RECORD NO.
*                                       LINK FIELD FOR QCB WHEN ON THE
*                                       TIME DELAY QUEUE             */
*     4 QCBCARCT    CHAR(1),            /* CARRIAGE POSITION COUNT   */
*     4 QCBTJID     FIXED(15) BDY(BYTE), /* TSO JOB IDENTIFICATION
*                                                                 TSO*/
*   2 QCBRELLN    CHAR(1),              /* RELATIVE LINE NUMBER
*                                       FOR LINE THIS QCB REPRESENTS */
*   2 QCBDCBAD    PTR(24)  BDY(BYTE),   /* ADDRESS OF DCB            */
*    3 QCBLGBAD    PTR(24) BDY(BYTE),   /* ADDRESS OF LGB      S22024*/
*   2 QCBFLAG     CHAR(1),              /* QCB STATUS BITS           */
*    3 QCBTSSES BIT(1),                 /* TSO SESSION IN PROGRESS
*                                                                 TSO*/
*    3 QCBNOBRK BIT(1),                 /* NO REVERSE BREAK FEATURE
*                                                                 TSO*/
*    3 QCBREAD  BIT(1),                 /* READ HAS PRIORITY      TSO*/
*    3 QCBRSRV  BIT(1),                 /* REUSE SERVICED BIT        */
*    3 QCBTERMQ BIT(1),                 /* QUEUING BY TERMINAL       */
*    3 QCBSDFFO BIT(1),                 /* CURRENTLY SENDING FEFO
*                                       MSG                          */
*    3 QCBPROC  BIT(1),                 /* THIS QCB FOR A PROCESS
*                                       ENTRY                        */
*    3 QCBCKPT  BIT(1),                 /* FLAG FOR CHECKPOINT       */
*   2 QCBQBACK    PTR(24)  BDY(BYTE);   /* QBACK MSG CHAIN   @XA11316*/
*/* QCBHUCT  VALUES                                          @Y17XAXF*/
* DCL QCBHUCT1 BIT(2) CONSTANT('01'B);
* DCL QCBHUCT2 BIT(8) CONSTANT('F2'X);
* DCL QCBHUCT3 BIT(2) CONSTANT('11'B);
*/* QCBLOGCT VALUES                                          @Y17XAXF*/
* DCL QCBLOG2  BIT(2) CONSTANT('10'B);  /*   RETRY COUNTER 2 @Y17XAXF*/
* DCL QCBLOG1  BIT(2) CONSTANT('01'B);  /*   RETRY COUNTER 1 @Y17XAXF*/
*/* QCBNL    VALUES                                          @Y17XAXF*/
* DCL QCBCR    BIT(2) CONSTANT('10'B);  /*   CARRIAGE RET    @Y17XAXF*/
*                                       /*   REQUIRED        @Y17XAXF*/
* DCL QCBLF    BIT(2) CONSTANT('01'B);  /*   LINE FEED REQ   @Y17XAXF*/
*/* QCBSTPRI VALUES                                          @Y17XAXF*/
* DCL QCBCALLN BIT(8) CONSTANT('50'X);  /* DIALNO=NONE CALL IN ONLY  */
*                                       /*                   @Y17XAXF*/
* DCL QCBCNTVL BIT(8) CONSTANT('70'X);  /* CINTVL IND        @Y17XAXF*/
* DCL QCBCLK   BIT(8) CONSTANT('80'X);  /* CLOCK IND         @Y17XAXF*/
*/*                                                                  */
*/*                                                                  */
*/*   DEC                                 HEX                        */
*/*      *********************************                           */
*/*    0 * DSFLG *         ELCHN         *                           */
*/*      *********************************                           */
*/*    4 * PRI   *         LINK          *  4                        */
*/*      *********************************                           */
*/*    8 *  VTO  *         STCHN         *  8                        */
*/*      *********************************           **************  */
*/*   12 * STPRI *         SLINK         *  C        *            *  */
*/*      *********************************           * MASTER QCB *  */
*/*   16 *    EOLDT      * LKRLN * STAT  * 10        *               */
*/*      *********************************           **************  */
*/*   20 * SCBOF *         INSRC         * 14                        */
*/*      *********************************                           */
*/*   24 *    INTVL      *     MSGCT     * 18                        */
*/*      *********************************                           */
*/*   28 * PRILVL*     PREN/LKRRN        * 1C                        */
*/*      *********************************                           */
*/*   32 * RELLN *         DCBAD         * 20                        */
*/*      *********************************                           */
*/*   36 * FLAG  *         QBACK         * 24                        */
*/*      *********************************                           */
*/*                                                                  */
*/*      THIS IS THE DSECT OF A PRIORITY QCB.  THERE IS A PRIORITY   */
*/*      QCB FOR EACH PRIORITY LEVEL APPLICABLE FOR THIS DEST. Q     */
*/*                                                                  */
*    DECLARE 1 IEDQPQCB    CHAR(28) BASED(IEDQQPTR+LENGTH(IEDQQCB)),
*                                       /* START OF PRTY QCB @YM06080*/
*    3 QCBDNHDR    CHAR(3),             /* DISK RECORE NUMBER TO PUT
*                                       THE NEXT HDR RECEIVED        */
*    3 QCBFHDLZ    CHAR(3),             /* DISK REC. NO OF THE FIRST
*                                       HEADER ON THIS QUEUE         */
*     4 QCBDATFL CHAR(1),               /* DATFLAGS FIELD OF LAST MSG
*                                       REMOVED FROM FEFO Q    S21101*/
*     4 QCBPFEFO CHAR(3),               /* IF TERM OF QUEUE HELD,
*                                       PREVIOUS TO FIRST HELD
*                                       MESSAGE               SA52971*/
*      5 *       CHAR(2),               /* IF TERM NOT HELD,PREVIOUS
*                                       LAST MESSAGE SERVICED SA52971*/
*    3 QCBFHDTZ    CHAR(3),             /* LAST ZONE USED.
*                                       DISK REC. NO. OF THE FIRST
*                                       HEADER PLACED IN THE CURRENT
*                                       ZONE                         */
*     4 *        CHAR(1),               /* PFEFO CONTINUED    SA52971*/
*     4 QCBDATSQ CHAR(2),               /* SEQ NUMBER OF LAST MSG
*                                       REMOVED FROM FEFO Q    S21101*/
*    3 QCBINTFF    CHAR(3),             /* DISK REC. NO. OF THE
*                                       FIRST INTERCEPTED MSG. -
*                                       FEFO ORDER                   */
*    3 QCBINTLF    CHAR(3),             /* DISK REC. NO. OF THE LAST
*                                       INTERCEPTED MSG. - FEFO      */
*     4 QCBPREVF  CHAR(3),              /* PREVIOUS TO LAST
*                                       FFEFO                 SA52971*/
*    3 QCBFFEFO    CHAR(3),             /* DISK REC. NO. OF THE
*                                       FIRST (FEFO) MSG. TO BE
*                                       RECVD.
*                                       CORE RECORD NO. IF THIS IS
*                                       A CORE ONLY QUEUE            */
*    3 QCBLFEFO    CHAR(3),             /* DISK RECORD NO. OF THE
*                                       LAST FEFO MSG. RECEIVED
*                                       CORE REC. NO. IF THIS IS A
*                                       CORE ONLY QUEUE.             */
*    3 QCBCFHDR    CHAR(3),             /* CORE REC. NO. OF THE
*                                       FIRST HEADER APPEARING IN
*                                       THIS QUEUE.                  */
*    3 QCBPRIPQ    CHAR(1),             /*PRIORITY OF THE PRIORITY
*                                       LEVEL QCB. THIS WILL BE
*                                       X'00' IF THIS IS THE LOWEST
*                                       PRTY LEVEL                   */
*    3 QCBPQBCK    PTR(24)  BDY(BYTE);  /* PQCB BACK CHAIN    SA51078*/
*/*                                                                  */
*/*                                                                  */
*/*   DEC                                 HEX                        */
*/*      *********************************                           */
*/*    0 *         DNHDR         * DATFL *  0                 SA52971*/
*/*      *********************************                           */
*/*    4 *    (PFEFO)    *     DATSQ     *  4                 SA52971*/
*/*      *********************************         ****************  */
*/*    8 *(DATSQ)*         INTFF         *  8      *          SA52971*/
*/*      *********************************         * PRIORITY QCB *  */
*/*   12 *         PREVF         * FFEFO *  C      *          SA52971*/
*/*      *********************************         ****************  */
*/*   16 *    (FFEFO)    *     LFEFO     * 10                        */
*/*      *********************************                           */
*/*   20 *(LFEFO)*         CFHDR         * 14                        */
*/*      *********************************                           */
*/*   24 * PRIPQ *         PQBCK         * 18                 SA51078*/
*/*      *********************************                           */
*/*                                                                  */
*/*                                                                  */
*/*                                                                  */
*DECLARE
*  1 IEDNQCB BASED(ADDR(IEDQQCB)-LENGTH(IEDNQCB)),        /* @Y17XAXF*/
*   2 QCBCHAIN PTR(31),                 /* ADDR TO CHAIN OF  @Y17XAXF*/
*                                       /*   QCB'S WAITING   @Y17XAXF*/
*                                       /*   FOR PLCB        @Y17XAXF*/
*                                       /*   ALLOCATION      @Y17XAXF*/
*   2 QCBSTAT1 CHAR(1),                 /* FLAG BYTE         @Y17XAXF*/
*    3 QCBPLCBN BIT(1),                 /*   FIELD HAS PLCB  @Y17XAXF*/
*                                       /*     ADDR          @Y17XAXF*/
*    3 QCBWAITC BIT(1),                 /*   FIELD HAS WAIT  @Y17XAXF*/
*                                       /*     CHAIN ADDR    @Y17XAXF*/
*    3 QCBSNDRQ BIT(1),                 /*   A PLCB HAS BEEN @Y17XAXF*/
*                                       /*     REQ HAVING    @Y17XAXF*/
*                                       /*     SEND & RECV   @Y17XAXF*/
*                                       /*     STCB'S IN ITS @Y17XAXF*/
*                                       /*     STCB CHAIN    @Y17XAXF*/
*    3 QCBRCVRQ BIT(1),                 /*   A PLCB HAS BEEN @Y17XAXF*/
*                                       /*     REQ HAVING    @Y17XAXF*/
*                                       /*     RECV STCB IN  @Y17XAXF*/
*                                       /*     ITS STCB CHN  @Y17XAXF*/
*    3 QCBESIG  BIT(1),                 /*   ESIG IS NEEDED  @Y17XAXF*/
*    3 QCBNDXRQ BIT(1),                 /*   INDEXED PLCB REQUEST
*                                                            @Y17XAXF*/
*    3 QCBFLUSH BIT(1),                 /*   QUEUE FLUSH IN PROGRESS
*                                                            @Y17XAXF*/
*    3 *        BIT(1),                 /*   RESERVED        @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      QCBSTAT1 MUST ALWAYS PRECEDE QCBPLCBA               @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*   2 QCBPLCBA PTR(24) BDY(BYTE),       /* ADDR OF PLCB      @Y17XAXF*/
*    3 *        CHAR(1),                /*                   @Y17XAXF*/
*    3 QCBTTCIN FIXED(15) BDY(BYTE);    /*   TNT INDEX       @Y17XAXF*/
*/*                                                                  */
*  DECLARE
*    QCBLDCB BASED(ADDR(IEDQQCB)+120);  /*LOGTYPE DCB ADDR   @XM05707*/
./ ADD NAME=TQCBED
*        %GOTO QCBEPLS ;                                             /*
         MACRO
         TQCBED
.*       CONVERTED TO BILINGUAL ON 11/01/72                      S22024
*        UPDATED 01/05/73                                        S22024
.* CHANGE ACTIVITY = AS FOLLOWS:
.*A345000                                                       SA52971
.*C460000,480000                                                SA52971
.*C709000-718000,763000                                        @Y17XAXF
.*A240000                                                      @Y17XAXF
IEDQQCBE DSECT
*
*              THIS IS A DSECT OF THE QCB EXTENSION.
*
QCBEFLG  DS    XL1 .                    FLAG BYTE
*                        BIT DEFINITIONS
QCBESTAT EQU   X'80' .                  STATUS SPEC ON QCNTRL
QCBECNT  EQU   X'40' .                  INTEGER SPECIFIED
QCBEOPL  EQU   X'20' .                  PRIORITY LEVEL Q DEFN
QCBEHELD EQU   X'10' .                  TEMPORARY HOLD
QCBESRVC EQU   X'08' .                  INDICATES QCB SERVICED
QCBEOMSG EQU   X'04' .                  INDICATES OUTMSG PENDING
QCBEDATA EQU   X'02' .                  INDICATES DATA IN MSG
QCBEPEND EQU   X'01' .                  QACTION OPERATION PENDING
*
QCBEHDR  DS    0XL3 .                   SCBSCHDR SAVED
QCBECONC DS    AL3 .                    ADDRESS OF CONC TERM ENTRY
QCBEOSEQ DS    0XL2 .                   SCBOSEQ SAVED
QCBEDAMT DS    H .                      AMOUNT OF DATA TO TAKE FROM Q
QCBETCIN DS    H .                      TTCIN OF LAST MSG FROM Q
QCBELGTH DS    XL1 .                    LENGTH OF ENTRY
QCBENPLV DS    FL1 .                    NUMBER OF PRTY LEVELS
QCBESAVE DS    0CL5 .                   SAVE AREA              @Y17XAXF
QCBEPRI  DS    0XL1 .                   SCBPRI SAVED
QCBEMACR DS    0XL3 .                   SCBMACR SAVED
         DS    XL1 .
QCBEFEFO DS    0XL3 .                   SCBFEFO SAVED
         DS    XL2 .
QCBEEOB  DS    0XL2 .                   SCBEOB SAVED
         DS    XL1 .
QCBEQTYP DS    XL1 .                    SCBQTYPE SAVED
*                        BIT DEFINITIONS
QCBEMM   EQU   X'01' .                  MIDDLE OF MSG
QCBELCB  DS    0AL3 .                   QACTION LCB ADDRESS     SA52971
QCBEDEOB DS    XL4 .                    SCBDEOB SAVED
QCBELRS  DS    XL1 .                    LENGTH OF CTB CHARS - MAX=8
QCBERS   DS    XL1 .                    START OF CTB CHARS
*
*         *******************************************************
*     0   *   FLG     **              CONC/HDR                  *
*         *******************************************************
*     4   *       DAMT/OSEQ         **           TCIN           *
*         *******************************************************
*     8   *   LGTH    **   NPLV     **  MACR/PRI  **  MACR/FEFO *
*         *******************************************************
*    12   * MACR/FEFO **   EOB/FEFO **  EOB/QTYPE **  LCB/DEOB  *
*         *******************************************************
*    16   *  LCB/DEOB **   LCB/DEOB **    DEOB    **     LRS    *
*         *******************************************************
*    20   *     RS    *
*         *************
         MEND   , */
*%QCBEPLS : ;
*/*      UPDATED 01/05/73                                      S22024*/
*DECLARE
* 1  IEDQQCBE BASED(IEDQEPTR) BDY(WORD),
*   2 QCBEFLG    BIT(8),                /* FLAG BYTE                 */
*     3 QCBESTAT BIT(1),                /* STATUS SPEC ON QCNTRL     */
*     3 QCBECNT  BIT(1),                /* INTEGER SPECIFIED         */
*     3 QCBEOPL  BIT(1),                /* PRIORITY LEVEL Q. DEFN    */
*     3 QCBEHELD BIT(1),                /* TEMPORARY HOLD            */
*     3 QCBESRVC BIT(1),                /* INDICATES QCB SERVICED    */
*     3 QCBEOMSG BIT(1),                /* INDICATES OUTMSG PENDING  */
*     3 QCBEDATA BIT(1),                /* INDICATES DATA IN MSG     */
*     3 QCBEPEND BIT(1),                /* QACTION OPERATION PENDING */
*   2 QCBECONC   PTR(24),               /* ADDR OF CONC TRM ENTRY    */
*     3 QCBEHDR  CHAR(3),               /* SCBSCHDR SAVED            */
*   2 QCBEDAMT   FIXED(15),             /* AMT OF DATA TO TAKE FROM Q*/
*     3 QCBEOSEQ CHAR(2),               /* SCBOSEQ SAVED             */
*   2 QCBETCIN   FIXED(15),             /* TTCIN OF LAST MSG FROM Q  */
*   2 QCBELGTH   PTR(8),                /* LENGTH OF ENTRY           */
*   2 QCBENPLV   PTR(8),                /* NUMBER OF PRIORITY LVLS   */
*   2 QCBESAVE   CHAR(5) BDY(BYTE),     /* SAVE AREA         @Y17XAXF*/
*     3 QCBEMACR   CHAR(3),             /* SCBMACR SAVED     @Y17XAXF*/
*     3 QCBEEOB    FIXED(15) BDY(BYTE), /* SCBEOB SAVED      @Y17XAXF*/
*   2 QCBEDEOB   CHAR(4),               /* SCBDEOB SAVED             */
*     3 QCBELCB  PTR(24) BDY(BYTE),     /* QACTION LCB ADDR   SA52971*/
*   2 QCBELRS    PTR(8),                /* LEN OF CTB CHARS - MAX=8  */
*   2 QCBERS     (*) CHAR(1);           /* START OF CTB CHARS        */
*DECLARE
* 1  *           BASED(ADDR(QCBESAVE)) BDY(BYTE),          /*@Y17XAXF*/
*   2 QCBEPRI    PTR(8),                /* SCBPRI SAVED              */
*   2 QCBEFEFO   CHAR(3),               /* SCBFEFO SAVED             */
*   2 QCBEQTYP   CHAR(1),               /* SCBQTYPE SAVED            */
*     3 *        BIT(7),
*     3 QCBEMM   BIT(1);                /* MIDDLE OF MSG             */
*/*                                                                  */
*/*       ********************************************************   */
*/*   0   *   FLG     **              CONC/HDR                       */
*/*       ********************************************************   */
*/*   4   *       DAMT/OSEQ         **            TCIN           *   */
*/*       ********************************************************   */
*/*   8   *   LGTH    **   NPLV     **  MACR/PRI   **  MACR/FEFO *   */
*/*       ********************************************************   */
*/*  12   * MACR/FEFO **   EOB/FEFO **  EOB/QTYPE  **  LCB/DEOB  *   */
*/*       ********************************************************   */
*/*  16   *  LCB/DEOB **   LCB/DEOB **     DEOB    **     LRS    *   */
*/*      *********************************************************   */
*/*  20  *      RS   *                                               */
*/*      *************                                               */
*/*                                                                  */
./ ADD NAME=TRAS
         MACRO
&N       TRAS  &TYPE,&ASCB=,&ASID=,&WORK=
.* TRAS SET ESTABLISHES ADDRESSABILITY TO THE MEMORY INDICATED
.*    BY THE ASID OR ASCB SPECIFIED.
.* TRAS RESET RE ESTABLISHES ADDRESSABILITY TO THE MEMORY INDICATED
.*    BY THE ASCB POINTER IN PSAAOLD, IE THE ORIGINAL MEMORY
.*
.* TYPE = SET OR RESET.
.* ASCB = REGISTER CONTAINING ASCB PTR FOR SET. OMIT FOR RESET.
.* ASID = REGISTER CONTAINING ASID NUMBER FOR SET. OMIT FOR RESET.
.* WORK = SINGLE WORK REG FOR RESET.
.*        LIST OF TWO WORK REGS FOR SET AND ASID
.*        OMIT FOR SET AND ASCB.
.*
         AIF   ('&SYSECT' NE 'IECIOSCN').ER6   CHECK FOR AUTHORIZATION
         AIF   ('&TYPE' EQ 'RESET').RESET   RESET REQUEST
         AIF   ('&TYPE' NE 'SET').ER2  TYPE NOT SET OR RESET
         AIF   ('&ASCB' EQ '' AND '&ASID' EQ '').ER3 NEITHER ASCB
.*                                     NOR ASID WAS GIVEN
         AIF   ('&ASCB' NE '' AND '&ASID' NE '').ER4  BOTH GIVEN
         AIF   ('&ASCB' EQ '').ASID    TRANSFER IF ASID WAS GIVEN
         USING ASCB,&ASCB
&N       LCTL  1,1,ASCBSTOR            LOAD STOR FOR NEW MEMORY
         MEXIT
.ASID    AIF   (N'&WORK LT 2).ER1
&N       L     &WORK(1),16             -> CVT
         USING CVTMAP,&WORK(1)
         L     &WORK(1),CVTASVT        -> ASVT
         USING ASVT,&WORK(1)
         LR    &WORK(2),&ASID          ASID NUMBER
         SLA   &WORK(2),2              TIMES 4 IS OFFSET IN ASVT
         L     &WORK(1),ASVTENTY-4(&WORK(2))  -> ASCB
         USING ASCB,&WORK(1)
         LCTL  1,1,ASCBSTOR            LOAD STOR FOR NEW MEMORY
         DROP  &WORK(1)
         MEXIT
.RESET   AIF   (N'&WORK LT 1).ER1      NEED ONE WORK REG
         AIF   ('&ASCB' NE '' OR '&ASID' NE '').ER5 NEITHER MAY BE
.*                                     SPECIFIED FOR THE RESET OPTION
         USING PSA,0
&N       L     &WORK(1),PSAAOLD        -> ASCB IN CONTROL BEFORE SET
         USING ASCB,&WORK(1)
         LCTL  1,1,ASCBSTOR            RESTORE STOR TO ORIGINAL MEMORY
         DROP  &WORK(1)
         MEXIT
.ER1     MNOTE 8,'INSUFFICIENT WORK REGISTERS'
         MEXIT
.ER2     MNOTE 8,'TYPE NOT SET OR RESET'
         MEXIT
.ER3     MNOTE 8,'TYPE=SET && NEITHER ASCB NOR ASID GIVEN'
         MEXIT
.ER4     MNOTE 8,'BOTH ASCB && ASID GIVEN'
         MEXIT
.ER5     MNOTE 8,'TYPE=RESET && ASID OR ASCB GIVEN'
         MEXIT
.ER6     MNOTE 8,'NOT AUTHORIZED TO USE THIS MACRO'
         MEXIT
         MEND
./ ADD NAME=TRAT
         MACRO
&L       TRAT  &A,&B,&C,&D
         LCLA  &X
         LCLC  &Y
&X       SETA  K'&A-1
&Y       SETC  '&A'(1,&X)
*
*              ********************************************************
*              *
*              *        BRANCH TABLE ENTRY FOR KEY WORD.
*              *
*              ********************************************************
*
&L       DC    AL1(&A)            MAXIMUM NUMBER OF PARAMETERS.
         DC    AL1(&B)            LOCATION SUBLISTS ARE PERMITTED.
         DC    Y(&C-IEFVDA-2)     OFF SET TO CODE FOR THIS KEY.
         DC    Y(&D-IEFVDA-2)     OFF SET TO PD TABLE FOR THIS KEY.
         MEND
./ ADD NAME=TRDYD
*        %GOTO PLSRDY;                  /*
         MACRO
         TRDYD
.*A000000-999999                                               @Y17XAXF
*
*        FORMAT OF READY MACRO GENERATION
*
IEDRDY   DSECT
RDYGMMA  DS    A                        GOOD MORNING MESSAGE
*                                        ROUTINE ADDRESS
RDYRSMA  DS    A                        RESTART MESSAGE
*                                        ROUTINE ADDRESS
RDYPURGA DS    A                        PURGE EXIT ROUTINE
*                                        ADDRESS
RDYPRIA  DS    A                        PRIORITY EXIT ROUTINE
*                                        ADDRESS
RDYFLAGS DS    XL1                      FLAG BYTE
RDYOPEND EQU   X'80'                     OPENCHK=OPEN SPECIFIED
RDYOPENI EQU   X'40'                     OPENCHK=IDLE SPECIFIED
*        EQU   X'20'-X'01'               RESERVED
         DS    XL3                      RESERVED
         MEND  */
*%PLSRDY : ;
*/*                                                                  */
*/*      FORMAT OF READY MACRO GENERATION                            */
*/*                                                                  */
* DECLARE
* 1 IEDRDY BASED(AVTRDYA),
*  2 RDYGMMA  PTR(31),                  /* GOOD MORNING MESSAGE
*                                          ROUTINE ADDRESS           */
*  2 RDYRSMA  PTR(31),                  /* RESTART MESSAGE
*                                          ROUTINE ADDRESS           */
*  2 RDYPURGA PTR(31),                  /* PURGE EXIT ROUTINE
*                                          ADDRESS                   */
*  2 RDYPRIA  PTR(31),                  /* PIORITY EXIT ROUTINE
*                                          ADDRESS                   */
*  2 RDYFLAGS BIT(8),                   /* FLAG BYTE                 */
*   3 RDYOPEND BIT(1),                  /*  OPENCHK=OPEN SPECIFIED   */
*   3 RDYOPENI BIT(1),                  /*  OPENCHK=IDLE SPECIFIED   */
*   3 *        BIT(6),                  /*  RESERVED                 */
*  2 *       CHAR(3);                   /* RESERVED                 */
./ ADD NAME=TRECBD
*        %GOTO PLSRECB;                 /* BILINGUAL HEADER
         MACRO
         TRECBD
IEDQRECB DSECT .                        RESOURCE ELEMENT CNTRL BLOCK
*
*                                                 DISPLACEMENT
*
RECBKEY  DS    FL1 .                    KEY FIELD      0
RECBQCBA DS    3X .                     QCB ADDRESS   +1
RECBPRI  DS    FL1 .                    PRIORITY      +4
RECBLINK DS    3X .                     LINK FIELD    +5
         MEND  */
*%PLSRECB:;
* DECLARE
*  1 IEDQRECB BASED BDY(WORD),          /*RESOURCE ELEMENT CNTRL BLK */
*/*                                                                  */
*/*                                               DISPLACEMENT       */
*/*                                                                  */
*    2 RECBKEY  PTR(8),                 /* KEY FIELD      0          */
*    2 RECBQCBA PTR(24),                /* QCB ADDRESS   +1          */
*    2 RECBPRI  PTR(8),                 /* PRIORITY      +4          */
*    2 RECBLINK PTR(24);                /* LINK FIELD    +5          */
./ ADD NAME=TREQD
*        %GOTO PLSREQ;                  /* BILINGUAL HEADER
         MACRO
         TREQD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A-000000999999                                               @Y17XAXU
.*A440000,770000,870000                                        @Y17XAXF
         SPACE
IEDREQD  DSECT
*
*        GENERAL REQUEST ELEMENT
*
REQTYPE DS     XL1 .                    REQUEST TYPE
REQLTRM  EQU   X'01' .                    TERMINATE SESSION REQUEST
*                                         (TO LUS FROM OP SERVICES
*                                         OR TOTE)
REQLSHTD EQU   X'02' .                    SEND SHUTDOWN & TERMINATE
*                                         SESSION (TO LUS FROM OP
*                                         SERVICES)
REQSGET EQU    X'03' .                    GET SIB REQUEST
REQSFREE EQU   X'04' .                    FREE SIB REQUEST
REQQCBA  DS    AL3 .                    QCB ADDRESS
REQPRI   DS    XL1 .                    PRIORITY
REQLINK  DS    XL3 .                    LINK ADDRESS
REQRPRI  DS    XL1 .                    PRIOITY FOR RETURN TPOST
REQRQCBA DS    AL3 .                    QCB ADDRESS FOR  RETURN TPOST
REQROUTE DS    0XL2 .                   ROUTING FOR RETURN TPOST
REQFLAG  DS    XL1 .                    FLAG BYTE
REQSWTCH DS    XL1 .                    SWITCH BYTE
REQRCDS  DS    0XL2 .                   RETURN CODES
REQRCD1  DS    XL1 .                    RETURN CODE 1
REQRCD2  DS    XL1 .                    RETURN CODE 2
REQDATA  DS    0CL1 .                   DATA - FORMAT DEPENDENT
* DATA DEFINITION FOR LUS REQUESTS (REQLTRM & REQLSHTD)
REQLDATA EQU   REQDATA .
REQLTNT  EQU   REQDATA .                TNT OFFSET FOR LU
* DATA DEFINITION FOR SIB REQUESTS (REQSGET & REQSFREE)
REQSDATA EQU   REQDATA .
REQSTTE  EQU   REQDATA .                ADDRESS OF TTE FOR RESOURCE
*                                       WHOSE SIB CHAIN WILL BE CHANGED
REQSTNT  EQU   REQDATA+4 .              TNT OFFSET OR MH INDEX USED
*                                       IN SIB TO IDENTIFY WHO THE
*                                       RESOURCE IS IN SESSION WITH
*                                       (TCAM,AN MH, SSCP, ETC., ETC.)
*                                       ON REQUEST TYPE
REQLLEN  EQU   22 .                     LEN OF INTERTASK REQ   @Y17XAXF
*                                        ELEMENT FOR LUS REQ   @Y17XAXF
REQSLEN  EQU   26 .                     LEN OF INTERTASK REQ   @Y17XAXF
*                                        ELEMENT FOR SIB REQ   @Y17XAXF
REQTOTCL EQU   X'FE' .                  RQST FOR TOTE CLEANUP  @Y17XAXF
REQLEN   EQU   *-IEDREQD .              REQ LENGTH
         MEND
*        */
*%PLSREQ : ;
*DCL 1 IEDREQD  BASED,              /* GENERAL REQUEST ELEMENT       */
*      2 REQTYPE  CHAR(1),          /* REQUEST TYPE                  */
*      2 REQQCBA  PTR(24),          /* QCB ADDRESS                   */
*      2 REQPRI   CHAR(1),          /* PRIORITY                      */
*      2 REQLINK  PTR(24),          /* LINK ADDRESS                  */
*      2 REQRPRI  CHAR(1),          /* PRIORITY FOR RETURN TPOST     */
*      2 REQRQCBA PTR(24),          /* QCB ADDR FOR RETURN TPOST     */
*      2 REQROUTE CHAR(2),          /* ROUTINE FOR RETURN TPOST      */
*        3 REQFLAG  CHAR(1),        /* FLAG BYTE                     */
*        3 REQSWTCH CHAR(1),        /* SWITCH BYTE                   */
*      2 REQRCDS  CHAR(2),          /* RETURN CODES                  */
*        3 REQRCD1  CHAR(1),        /* RETURN CODE 1                 */
*        3 REQRCD2  CHAR(1),        /* RETURN CODE 2                 */
*      2 REQDATA  CHAR(*);          /* DATA (FORMAT DEPENDENT ON
*                                      REQUEST TYPE)                 */
* %REQLEN='LENGTH(IEDREQD';         /* REQ LENGTH                    */
*/* REQUEST-TYPE DEFINITIONS (VALUES FOR REQTYPE FIELD)              */
*DCL REQLTRM BIT(8) CONSTANT('01'X); /* TERMINATE-SESSION REQUEST
*                                      (TO LUS FROM OP  ERVICES OR
*                                      TOTE)                         */
*DCL REQLSHTD BIT(8) CONSTANT('02'X); /* SEND SHUTDOWN & TERMINATE
*                                      SESSION (TO LUS FROM OP
*                                      SERVICES)                     */
*DCL REQSGET  BIT(8) CONSTANT('03'X); /* GET SIB REQUEST (FROM SSCP) */
*DCL REQSFREE BIT(8) CONSTANT('04'X); /* FREE SIB REQST  (FROM SSCP) */
*/*                                                                  */
*/* DATA DEFINITION FOR LUS REQUESTS (REQLTRM & REQLSHTD)            */
*DCL 1 REQLDATA  DEF(REQDATA),
*      2 REQLTNT  CHAR(2);          /* TNT OFFSET FOR LU             */
*DCL REQLLEN  FIXED(8) CONSTANT(22);/* LEN OF INTERTASK REQ  @Y17XAXF*/
*                                   /* ELEMENT FOR LUS REQ   @Y17XAXF*/
*/*                                                                  */
*/* DATA DEFINITION FORSIB REQUESTS (REQSGET & REQSFREE)             */
*DCL 1 REQSDATA  DEF(REQDATA),
*      2 REQSTTE  PTR(31),          /* ADDRESS OF TERMINAL TABLE ENTRY
*                                      FOR RESOURCE WHOSE SIB CHAIN
*                                      WILL BE CHANGED               */
*      2 REQSTNT  CHAR(2);          /* TNT OFFSET OR MH INDEX USED
*                                      IN SIB TO IDENTIFY WHO THE
*                                      RESOURCE IS IN SESSION WITH
*                                      (TCAM, AN MH, THE SSCP, ETC)  */
*DCL REQSLEN  FIXED(8) CONSTANT(26);/* LEN OF INTERTASK REQ  @Y17XAXF*/
*                                   /* ELEMENT FOR SIB REQ   @Y17XAXF*/
*DCL REQTOTCL BIT(8) CONSTANT('FE'X);/* RQST FOR TOTE CLEANUP @Y17XAXF*/
./ ADD NAME=TRHD
*        %GOTO RHPLS;              /* BILINGUAL HEADER
         MACRO
         TRHD
.*A000000-999999                             @Y17XAXF
IEDRH    DSECT
.RH002   ANOP
*
*        DSECT FOR SNA RH
*
TRHBYTE0 DS    CL1 .               BYTE 0 OF RH
TRHTYPE  EQU   X'80' .                  ON-RSP, OFF-REQ
* TRHRUCAT     2 BITS                   RU CATEGORY
TRHFMD   EQU   X'00' .                       FM DATA
TRHNC    EQU   X'20' .                       NETWORK CONTROL
TRHDFC   EQU   X'40' .                       DATA FLOW CONTROL
TRHSC    EQU   X'60' .                       SESSION CONTROL
*        EQU   X'10' .                  RESERVED
TRHFI    EQU   X'08' .                  FORMAT INDICATOR
TRHSDI   EQU   X'04' .                  SENSE DATA INCLUDED
TRHBC    EQU   X'02' .                  BEGIN CHAIN
TRHEC    EQU   X'01' .                  END CHAIN
TRHBYTE1 DS    CL1 .               BYTE 1 OF RH
TRHDR1   EQU   X'80' .                  DEFINITE RESPONSE 1
*        EQU   X'40' .                  RESERVED
TRHDR2   EQU   X'20' .                  DEFINITE RESPONSE 2
TRHER    EQU   X'10' .                  EXCEPTION RESPONSE
*        EQU   X'08' .                  RESERVED
*        EQU   X'04' .                  RESERVED
*        EQU   X'02' .                  RESERVED
TRHPI    EQU   X'01' .                  PACING INDICATOR
TRHBYTE2 DS    CL1 .               BYTE 2 OF RH
TRHBB    EQU   X'80' .                  BEGIN BRACKET
TRHEB    EQU   X'40' .                  END BRACKET
TRHCDI   EQU   X'20' .                  CHANGE DIRECTION INDICATOR
*        EQU   X'10' .                  RESERVED
TRHCSI   EQU   X'08' .                  CODE SELECTION INDICATOR
*        EQU   X'04' .                  RESERVED
*        EQU   X'02' .                  RESERVED
*        EQU   X'01' .                  RESERVED
TRH1LEN  EQU   *-IEDRH .           LENGTH OF FID1 RH
         MEND
*        */
*%RHPLS:;
*DECLARE
*  1 IEDRH  BASED BDY(BYTE),
*/*                                                                  */
*/*      DSECT FOR SNA RH                                            */
*/*                                                                  */
*      2 TRHBYTE0 CHAR(1),              /* BYTE 0 OF RH              */
*        3 TRHTYPE  BIT(1),             /*   ON-RSP, OFF-REQ         */
*        3 TRHRUCAT BIT(2),             /*   RU CATEGORY             */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 TRHFI    BIT(1),             /*   FORMAT INDICATOR        */
*        3 TRHSDI   BIT(1),             /*   SENSE DATA INCLUDED     */
*        3 TRHBC    BIT(1),             /*   BEGIN CHAIN             */
*        3 TRHEC    BIT(1),             /*   END CHAIN               */
*      2 TRHBYTE1 CHAR(1),              /*  BYTE 1 OF RH             */
*        3 TRHDR1   BIT(1),             /*   DEFINITE RESPONSE 1     */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 TRHDR2   BIT(1),             /*   DEFINITE RESPONSE 2     */
*        3 TRHER    BIT(1),             /*   EXCEPTION RESPONSE      */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 TRHPI    BIT(1),             /*   PACING INDICATOR        */
*      2 TRHBYTE2 CHAR(1),              /* BYTE 2 OF RH              */
*        3 TRHBB    BIT(1),             /*   BEGIN BRACKET           */
*        3 TRHEB    BIT(1),             /*   END BRACKET             */
*        3 TRHCDI   BIT(1),             /*   CHANGE DIRECTION IND    */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 TRHCSI   BIT(1),             /*   CODE SELECTION IND      */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 *        BIT(1),             /*   RESERVED                */
*        3 *        BIT(1);             /*   RESERVED                */
* %TRH1LEN='LENGTH(IEDRH)';             /* LEN OF FID1 RH            */
*/* TRHRUCAT VALUES                                                  */
* DCL TRHFMD  BIT(2) CONSTANT('00'B);   /*   FM DATA                 */
* DCL TRHNC   BIT(2) CONSTANT('01'B);   /*   NETWORK CONTROL         */
* DCL TRHDFC  BIT(2) CONSTANT('10'B);   /*   DATA FLOW CONTROL       */
* DCL TRHSC   BIT(2) CONSTANT('11'B);   /*   SESSION CONTROL         */
*/* RH CONSTANTS                                                     */
* DCL TRHFID0  BIT(24) CONSTANT('0B8000'X);
./ ADD NAME=TRQED
*        %GOTO PLSRQE;                  /* BILINGUAL HEADER
         MACRO
         TRQED
.*A000000,999999                                               @Y17XAXF
*
*        ASSEMBLER VERSION NOT SUPPORTED
*
         MEND  */
*%PLSRQE:;
*/*                                                                  */
*/*      RQE PREFIX DSECT                                            */
*/*                                                                  */
* DECLARE
* 1 IEDRQE BASED(RRQE),
*  2 RQELNK   PTR(16),                  /* ADDR OF NEXT RQE          */
*  2 RQEUCB   PTR(16),                  /* ADDRESS OF UCB            */
*  2 RQETCB   FIXED(8),                 /* TASK ID                   */
*  2 RQEIOB   PTR(24),                  /* ADDRESS OF IOB            */
*  2 RQEPR    FIXED(8),                 /* PRIORITY                  */
*  2 RQEDEB   PTR(24),                  /* ADDRESS OF DEB            */
*  2 RQEKEY   FIXED(8),                 /* REQUESTER'S PROTECTION KEY*/
*  2 RQETCBAD PTR(24),                  /* ADDRESS OF TCB            */
*  2 RQEHDR   PTR(31);                  /* CCW TRANSLATION FLAGS AND
*                                          HEADER ADDRESS            */
./ ADD NAME=TRRTD
*        %GOTO BSLRRT;                                               /*
         MACRO
         TRRTD
         SPACE
*        VERSION DATED 08/31/72
.*C150000-160000,200000,250000,300000,340000-350000,420000     @Y17XAXF
.*C580000,670000,760000,840000,770000                          @Y17XAXF
.*A420000,810000,840000                                        @Y17XAXF
         SPACE
IEDNRRTD DSECT
RRTHDRLN DS    H .                      LENGTH OF HEADER DATA
RRTKEYLN DS    H .                      HOST UNIT SIZE
RRTUNITN DS    XL1 .                    NUMBER OF UNITS IN HOST BUFFER
RRTUNITR DS    XL1 .                    NUMBER OF 3705 UNITS INITIALLY
*                                        ALLOCATED FOR DATA TRANSFER
*                                        FROM THE HOST
RRTKEYLR DS    XL1 .                    3705 UNIT SIZE
RRTBUFPD DS    XL1 .                    BUFFER PAD SIZE        @Y17XAXF
RRTXTPD  DS    XL1 .                    ALWAYS EQUAL TO ZERO   @Y17XAXF
RRTNODEL DS    XL1 .                    SYSTEM NODE LENGTH
         SPACE 3
IEDNRTRM DSECT                          START OF 1ST RRT ENTRY @Y17XAXF
*  NOTE - TO DETERMINE ACTUAL BEGINNING POINT, ADD RRTHDRLN TO ADDRESS
*         OF RESOURCE RESOLUTION TABLE
RRTERMNM DS    CL8 .                    NAME OF RESOURCE
RRTRSID  DS    AL2 .                    RESOURCE ID
RRTRMTP1 DS    XL1 .                    TYPE OF RESOURCE-BYTE 1@Y17XAXF
         SPACE
RRTLINE  EQU   X'80'                    RESOURCE IS A LINE
RRTDEVCE EQU   X'40'                    RESOURCE IS A CLUSTER, TERMINAL
*                                        OR COMPONENT
RRTPU    EQU   X'20'                    ON-PU TYPE 1 OR 2      @Y17XAXF
*                                       OFF-PU TYPE 4          @Y17XAXF
RRTINPUT EQU   X'10'                    DEVICE IS CAPABLE OF INPUT
RRTOUTPT EQU   X'08'                    DEVICE IS CAPABLE OF OUTPUT
*                                        OR IS LU              @Y17XAXF
RRTSWTCH EQU   X'04'                    SWITCHED               @Y17XAXF
RRTAUTOC EQU   X'02'                    3705 CAN CALL THE DEVICE
RRTDVTYD EQU   X'01'                    DEVICE TYPE DEPENDENT -
*                                        2980 WITH ALTERNATE ADDRESSING
* SECOND TERMINAL TYPE BIT ASSIGNMENTS
RRTRMTP2 DS    XL1 .                    TYPE OF RESOURCE-BYTE2 @Y17XAXF
RRTCLSTR EQU   X'80'                    DEVICE IS A CLUSTER
RRTCTERM EQU   X'40'                    LOGICAL CONNECTION DEVICE
RRTSNA   EQU   X'20' .                  SNA RESOURCE           @Y17XAXF
RRTGPTRM EQU   X'08' .                  DEVICE ON GP CLUSTER   @Y17XAXF
*  BITS 3,5-7 RESERVED
         MEND  , */
*%BSLRRT:    ;
*DECLARE
*  1 IEDNRRT  BDY(WORD) BASED(IEDNRPTR), /*RESOURCE RESOLUTION TABLE */
*   2 RRTHDRLN    FIXED(15),            /* LENGTH OF HEADER DATA     */
*   2 RRTKEYLN    FIXED(15),            /* HOST UNIT SIZE            */
*   2 RRTUNITN    PTR(8),               /* NUMBER OF UNITS IN HOST
*                                          BUFFER                    */
*   2 RRTUNITR    PTR(8),               /* NUMBER OF 3705 UNITS
*                                          INITIALLY ALLOCATED FOR
*                                          DATA TRANSFER FROM THE
*                                          HOST                      */
*   2 RRTKEYLR    PTR(8),               /* 3705 UNIT SIZE            */
*   2 RRTBUFPD    PTR(8),               /* BUFFER PAD SIZE           */
*   2 RRTXTPD     PTR(8),               /* ALWAYS = 0        @Y17XAXF*/
*   2 RRTNODEL    PTR(8);               /* SYSTEM NODE LENGTH        */
*
*DECLARE
*  1 IEDNRTRM BDY(BYTE) BASED(IEDNRPTR + LENGTH(IEDNRRT)),
*   2 RRTERMNM    CHAR(8),              /* NAME OF RESOURCE          */
*   2 RRTRSID     PTR(16),              /* RESOURCE ID               */
*   2 RRTRMTP1    BIT(8),               /* TYPE OF RESOURCE-BYTE1    */
*                                       /*                   @Y17XAXF*/
*
*    3 RRTLINE     BIT(1),              /* RESOURCE IS A LINE        */
*    3 RRTDEVCE    BIT(1),              /* RESOURCE IS A CLUSTER,
*                                          TERMINAL, OR COMPONENT    */
*    3 RRTPU       BIT(1),              /* ON-PU TYPE 1 OR 2
*                                          OFF-PU TYPE 4     @Y17XAXF*/
*    3 RRTINPUT    BIT(1),              /* DEVICE IS CAPABLE OF INPUT*/
*    3 RRTOUTPT    BIT(1),              /* DEVICE IS CAPABLE OF
*                                          OUTPUT, OR IS LU  @Y17XAXF*/
*    3 RRTSWTCH    BIT(1),              /* SWITCHED          @Y17XAXF*/
*    3 RRTAUTOC    BIT(1),              /* 3705 CAN CALL THE DEVICE  */
*    3 RRTDVTYD    BIT(1),              /* DEVICE TYPE DEPENDENT-
*                                          2980 WITH ALTERNATE
*                                          ADDRESSING                */
*   2 RRTRMTP2  BIT(8),                 /* TYPE OF RESOURCE-BYTE2    */
*                                       /*                   @Y17XAXF*/
*    3 RRTCLSTR    BIT(1),              /* DEVICE IS A CLUSTER       */
*    3 RRTCTERM    BIT(1),              /* LOGICAL CONNECTION DEVICE */
*    3 RRTSNA      BIT(1),              /* SNA RESOURCE      @Y17XAXF*/
*    3 *           BIT(1),              /* RESERVED          @Y17XAXF*/
*    3 RRTGPTRM    BIT(1),              /* DEVICE ON GP CLUS @Y17XAXF*/
*    3 *           BIT(3);              /* RESERVED          @Y17XAXF*/
./ ADD NAME=TRSPD
*        %GOTO RSPPLS;            /* BILINGUAL HEADER
         MACRO
         TRSPD
.*A000000-999999                                               @Y17XAXF
*
*        FID0 PHASE 0 ERROR RESPONSES
*
RSP0E01  EQU   X'01' .                  INVALID RESOURCE ID
RSP0E02  EQU   X'02' .                  INVALID COMMAND
RSP0E03  EQU   X'03' .                  INVALID MODIFIER
RSP0E04  EQU   X'04' .                  RESET OR DEACTIVATE IN PROGRESS
RSP0E05  EQU   X'05' .                  DEVICE INACTIVE
RSP0E06  EQU   X'06' .                  LINE INACTIVE
RSP0E07  EQU   X'07' .                  COMMAND NOT VALID FOR RESOURCE
RSP0E08  EQU   X'08' .                  COMMAND SYNTAX ERROR
RSP0E09  EQU   X'09' .                  COMMAND REJECTED
RSP0E0A  EQU   X'0A' .                  INVALID CONTROL DATA LENGTH
RSP0E0B  EQU   X'0B' .                  RESET NOT PERFORMED
RSP0E0C  EQU   X'0C' .                  DATA NOT RESIDENT IN STORAGE
RSP0E0D  EQU   X'0D' .                  DATA SET QUEUE LIMIT REACHED
RSP0E0E  EQU   X'0E' .                  LINE AND DEVICE INCOMPATIBILTY
*                                         ON SWITCHED CALL-OUT
RSP0E0F  EQU   X'0F' .                  INVALID TEXT LENGTH
RSP0E11  EQU   X'11' .                  INVALID CONTROL DATA
RSP0E12  EQU   X'12' .                  INCOMPLETE BTU
RSP0E13  EQU   X'13' .                  DEACTIVATE LINE ORDERLY OR
*                                         DEACTIVATE DEVICE COMMAND
*                                         REJECTED BECAUSE OF ERROR
*                                         ON ONE OR MORE OF THE
*                                         DEVICES
RSP0E14  EQU   X'14' .                  DATA IN USE
RSP0E15  EQU   X'15' .                  INVALID CONTROL COMMAND
*                                         MODIFIER OR CONTROL COMMAND
*                                         NOT VALID FOR RESOURCE
RSP0E16  EQU   X'16' .                  OLTT COMMAND REJECTED,
*                                         QUEUE NO EMPTY
RSP0E17  EQU   X'17' .                  OLT ACTIVE. NON-OLT COMMAND
*                                         REJECTED
RSP0E18  EQU   X'18' .                  MULTIPLE DIAL REQUESTS
RSP0E19  EQU   X'19' .                  MODE INCONSISTENCY
RSP0E1A  EQU   X'1A' .                  BUFFERS REQUIRED TO COMPLETE
*                                         THE OPERATION ARE NOT
*                                         AVAILABLE, SYSTEM IN
*                                         SLOWDOWN MODE
RSP0E1B  EQU   X'1B' .                  COMMAND REJECT,SYSTEM IN
*                                         AUTO NETWORK SHUTDOWN
RSP0E1C  EQU   X'1C' .                  COMMAND REJECTED, ERROR
*                                         LOCK SET
RSP0E1D  EQU   X'1D' .                  COMMAND REJECTED, SECONDARY
*                                         CHANNEL ADAPTER NOT
*                                         OPERATIVE
RSP0E1E  EQU   X'1E' .                  COMMAND REJECTED, LINE
*                                         DEACTIVATED OR COMMAND
*                                         RESET
         EJECT
*
*        FID0 PHASE 0 UNSOLICITED RESPONSES
*
RSPUNS00 EQU   X'00' .                  INVALID BIT CONFIGURATION
RSPUNS01 EQU   X'01' .                  ATTENTION TIME-OUT OR
*                                         UNRECOVERABLE ERROR ON
*                                         CURRENT PRIMARY CHANNEL
*                                         ADAPTER
RSPUNS03 EQU   X'03' .                  DEVICE ASSOCATION COMPLETED
RSPUNS04 EQU   X'04' .                  MTA DEVICE IDENTIFIED
RSPUNS05 EQU   X'05' .                  CHANNEL ADAPTER SET TO
*                                         PRIMARY MODE
RSPUNS06 EQU   X'06' .                  CHANNEL ADAPTER SET TO
*                                         SECONDARY MODE
RSPUNS07 EQU   X'07' .                  ENTERING SYSTEM SLOWDOWN
RSPUNS08 EQU   X'08' .                  LEAVING SYSTEM SLOWDOWN
RSPUNS09 EQU   X'09' .                  INITIALIZATION COMPLETE
RSPUNS0A EQU   X'0A' .                  MDR RECORDS ACCOMPANY THE BTU
RSPUNS1B EQU   X'1B' .                  AUTO NETWORK SHUTDOWN INITIATED
*                                         VIA CHANNEL TIME-OUT OR
*                                         CHANNEL ADAPTER FAILURE
RSPUNS1C EQU   X'1C' .                  AUTO NETWORK SHUTDOWN INITIATED
*                                         VIA PANEL
RSPUNS1D EQU   X'1D' .                  NETWORK SHUT DOWN VIA AUTO
*                                         NETWORK SHUTDOWN
RSPUNS1E EQU   X'1E' .                  SERVICEABILITY AID-HOST LOGGING
         SPACE
*
*        RESPONSE ERROR INDICATOR
*
RSPERR   EQU   X'80' .                  ERROR RESPONSE IND
         SPACE
*
*        PHASE VALUES
*
RSP00    EQU   X'00' .                  PHASE 0 IND
RSP20    EQU   X'20'                    PHASE 1 IND
RSP40    EQU   X'40'                    PHASE 2 IND
RSP60    EQU   X'60'                    PHASE 3 IND
         SPACE
*
*        PHASE 1,2, AND 3 ERROR RESPONSES
*
RSPE00   EQU   X'00' .                  DATA CHECK
RSPE01   EQU   X'01' .                  POSSIBLE INTERVENTION REQUIED
RSPE02   EQU   X'02' .                  INTERVENTION REQUIRED
RSPE03   EQU   X'03' .                  NEGATIVE POLL LIMIT REACHED
RSPE04   EQU   X'04' .                  YIELDED TO CONTENTION
RSPE05   EQU   X'05' .                  DEVICE ERROR-BSC STATUS PENDING
RSPE06   EQU   X'06' .                  BSC ID ERROR
RSPE07   EQU   X'07' .                  LINE TRACE TERMINATED DUE TO
*                                         ERROR
RSPE08   EQU   X'08' .                  OLTT COMMAND OR RESET OLTT
*                                         CONTROL COMMAND PORCESSING
*                                         TERMINATED
RSPE09   EQU   X'09' .                  SESSION NOT STARTED DUE TO
*                                         HARDWARE ERROR
RSPE0A   EQU   X'0A' .                  BSC ERROR STATUS MESSAGE
RSPE0B   EQU   X'0B' .                  GENERAL POLL OPERATION
*                                         ABORTED DUE TO ERROR
RSPE0C   EQU   X'0C' .                  FANOUT BACKUP LIMIT EXCEEDED
RSPE13   EQU   X'13' .                  BREAK RECEIVED ON THIS BLOCK
RSPE18   EQU   X'18' .                  CONTACT REJECTED-SESSION
*                                         STARTED
RSPE19   EQU   X'19' .                  DIAL DATA INCONSISTENCY
RSPE1A   EQU   X'1A' .                  BUFFERS REQUIRED TO COMPLETE
*                                         OPERATION ARE NOT
*                                         AVAILABLE
RSPE1E   EQU   X'1E' .                  COMMAND REJECTED, LINE
*                                         DEACTIVATED OR COMMAND
*                                         RESET
         SPACE
*
*        PHASE 1,2, AND 3 NORMAL RESPONSES
*
RSPN00   EQU   X'00' .                  COMMAND EXECUTED OK THIS
*                                         FAR
RSPN01   EQU   X'01' .                  LEADING GRAPHICS RECEIVED
RSPN02   EQU   X'02' .                  ONE OF THE FOLLOWING COMMANDS
*                                         EXECUTED OK THIS FAR:
*                                           READ OR INVITE
*                                           WRITE(IN CONV MODE)
*                                           WR OR WCR COMMANDS IN
*                                             READ PHASE
RSPN03   EQU   X'03' .                  NEGATIVE POLL LIMIT
*                                         REACHED-QUEUE OPTION
RSPN04   EQU   X'04' .                  OLTT REQUEST MESSAGE
RSPN05   EQU   X'05' .                  BSC STATUS MESSAGE
RSPN06   EQU   X'06' .                  NEGATIVE POLL LIMIT REACHED-
*                                         NOWAIT OPTION
*
*        RESPONSE CODES (USED WITH BDUSYRSP)
*
RSPSTPND EQU   X'A5' .                  BSC STAT PENDING
RSPERLCK EQU   X'9C' .                  ERROR LOCK SET
RSPERRST EQU   X'EA' .                  ERROR BSC STATUS
RSPNRMST EQU   X'65' .                  NORMAL BSC STATUS
RSPCRSOT EQU   X'9E' .                  CMD RESET
RSPQNEGR EQU   X'03' .                  Q-NEG POLL LIMIT REACHED
*                                                              @YM04625
RSPATTN  EQU   X'B3' .                  ATTENTION
RSPHNGUP EQU   X'AC' .                  HANGUP
RSPSYNER EQU   X'88' .                  COMMAND SYNTAX ERROR
RSPMTA0  EQU   X'04' .                  MTA PHASE 0
RSPRJCTD EQU   X'B8' .                  CONTACT REJECTED-SESSION START
RSPCNTN  EQU   X'A4' .                  YIELDED TO CONTENTION
RSPINACT EQU   X'86' .                  LINE INACTIVE
         MEND
*        */
*%RSPPLS:;
*/*                                                                  */
*/*      FID0 PHASE 0 ERROR RESPONSES                                */
*/*                                                                  */
*DCL RSP0E01 BIT(5) CONSTANT('00001'B); /* INVALID RESOURCE ID       */
*DCL RSP0E02 BIT(5) CONSTANT('00010'B); /* INVALID COMMAND           */
*DCL RSP0E03 BIT(5) CONSTANT('00011'B); /* INVALID MODIFIER          */
*DCL RSP0E04 BIT(5) CONSTANT('00101'B); /* RESET OR DEACTIVATE IN PRG*/
*DCL RSP0E05 BIT(5) CONSTANT('00101'B); /* DEVICE INACTIVE           */
*DCL RSP0E06 BIT(5) CONSTANT('00110'B); /* LINE INACTIVE             */
*DCL RSP0E07 BIT(5) CONSTANT('00111'B); /* COMMAND NOT VALID         */
*DCL RSP0E08 BIT(5) CONSTANT('01000'B); /* COMMAND SYNTAX ERR        */
*DCL RSP0E09 BIT(5) CONSTANT('01001'B); /* COMMAND REJECTED          */
*DCL RSP0E0A BIT(5) CONSTANT('01010'B); /* INVALID CONTROL DATA      */
*DCL RSP0E0B BIT(5) CONSTANT('01011'B); /* RESET NOT PERFORMED       */
*DCL RSP0E0C BIT(5) CONSTANT('01100'B); /* DATA NOT RESIDENT IN      */
*/*                                         STORAGE                  */
*DCL RSP0E0D BIT(5) CONSTANT('01101'B); /* DATA SET QUEUE LIMIT REACH*/
*DCL RSP0E0E BIT(5) CONSTANT('01110'B); /* LINE AND DEVICE INCOMPAT  */
*/*                                          ON SWITCHED CALL-OUT    */
*DCL RSP0E0F BIT(5) CONSTANT('01111'B); /* INVALID TEXT LENGTH       */
*DCL RSP0E11 BIT(5) CONSTANT('10001'B); /* INVALID CONTROL DATA      */
*DCL RSP0E12 BIT(5) CONSTANT('10010'B); /* INCOMPLETE BTU            */
*DCL RSP0E13 BIT(5) CONSTANT('10011'B); /* DEACTIVATE LINE ORDERLY OR*/
*/*                                          DEACTIVATE DEVICE CMD   */
*/*                                          REJECTED BECAUSE OF ERR */
*/*                                          ON ONE OR MORE OF THE   */
*/*                                          DEVICES                 */
*DCL RSP0E14 BIT(5) CONSTANT('10100'B); /* DATA IN USE               */
*DCL RSP0E15 BIT(5) CONSTANT('10101'B); /* INVALID CONTROL COMMAND   */
*/*                                          MODIFIER OR CONTROL CMD */
*/*                                          NOT VALID FOR RESOURCE  */
*DCL RSP0E16 BIT(5) CONSTANT('10110'B); /* OLTT COMMAND REJECTED     */
*/*                                          QUEUE NO EMPTY          */
*DCL RSP0E17 BIT(5) CONSTANT('10111'B); /* OLT ACTIVE. NON-OLT       */
*/*                                          REJECTED                */
*DCL RSP0E18 BIT(5) CONSTANT('11000'B); /* MULTIPLE DIAL REQUESTS    */
*DCL RSP0E19 BIT(5) CONSTANT('11001'B); /* MODE INCONSISTENCY        */
*DCL RSP0E1A BIT(5) CONSTANT('11010'B); /* BUFFERS REQUIRED TO       */
*/*                                          THE OPERATION ARE NOT   */
*/*                                          AVAILABLE, SYSTEM IN    */
*/*                                          SLOWDOWN MODE           */
*DCL RSP0E1B BIT(5) CONSTANT('11011'B); /* COMMAND REJECT,SYSTEM IN  */
*/*                                          AUTO NETWORK SHUTDOWN   */
*DCL RSP0E1C BIT(5) CONSTANT('11100'B); /* COMMAND REJECTED,         */
*/*                                          LOCK SET                */
*DCL RSP0E1D BIT(5) CONSTANT('11101'B); /* COMMAND REJECTED,SECONDARY*/
*/*                                          CHANNEL ADAPTER NOT     */
*/*                                          OPERATIVE               */
*DCL RSP0E1E BIT(5) CONSTANT('11110'B); /* COMMAND REJECTED, LINE    */
*/*                                          DEACTIVATED OR COMMAND  */
*/*                                          RESET                   */
         @EJECT;
*/*                                                                  */
*/*      FID0 PHASE 0 UNSOLICITED RESPONSES                          */
*/*                                                                  */
*DCL RSPUNS00 BIT(5) CONSTANT('00000'B); /* INVALID BIT CONFIGURATION*/
*DCL RSPUNS01 BIT(5) CONSTANT('00001'B); /* ATTENTION TIME-OUT OR    */
*/*                                          UNRECOVERABLE ERROR ON  */
*/*                                          CURRENT PRIMARY CHANNEL */
*/*                                          ADAPTER                 */
*DCL RSPUNS03 BIT(5) CONSTANT('00011'B); /* DEVICE ASSOCATION COMPL  */
*DCL RSPUNS04 BIT(5) CONSTANT('00100'B); /* MTA DEVICE IDENTIFIED    */
*DCL RSPUNS05 BIT(5) CONSTANT('00101'B); /* CHANNEL ADAPTER SET TO   */
*/*                                          PRIMARY MODE            */
*DCL RSPUNS06 BIT(5) CONSTANT('00110'B); /* CHANNEL ADAPTER SET TO   */
*/*                                          SECONDARY MODE          */
*DCL RSPUNS07 BIT(5) CONSTANT('00111'B); /* ENTERING SYSTEM SLOWDOW  */
*DCL RSPUNS08 BIT(5) CONSTANT('01000'B); /* LEAVING SYSTEM SLOWDOWN  */
*DCL RSPUNS09 BIT(5) CONSTANT('01001'B); /* INITIALIZATION COMPLETE  */
*DCL RSPUNS0A BIT(5) CONSTANT('01010'B); /* MDR RECORDS ACCOMPANY    */
*/*                                          THE BTU                 */
*DCL RSPUNS1B BIT(5) CONSTANT('11011'B); /* AUTO NETWORK SHUTDOWN    */
*/*                                          INIT VIA CHL TME-OUT OR */
*/*                                          CHANNEL ADAPTER FAILURE */
*DCL RSPUNS1C BIT(5) CONSTANT('11100'B); /* AUTO NETWORK SHUTDOWN    */
*/*                                          INIT VIA PANEL          */
*DCL RSPUNS1D BIT(5) CONSTANT('11101'B); /* NETWORK SHUT DOWN VIA    */
*/*                                          AUTO NETWORK SHUTDOWN   */
*DCL RSPUNS1E BIT(5) CONSTANT('11110'B); /* SERVICEABILITY AID-HOST  */
*/*                                          LOGGING                 */
         @SPACE;
*/*                                                                  */
*/*      ERROR RESPONSE INDICATOR                                    */
*/*                                                                  */
*DCL RSPERR   BIT(1) CONSTANT('1'B);    /* ERROR RESPONSE IND        */
         @SPACE;
*/*                                                                  */
*/*      PHASE VALUES                                                */
*/*                                                                  */
*DCL RSP00    BIT(2) CONSTANT('00'B);    /* PHASE 0 IND              */
*DCL RSP20    BIT(2) CONSTANT('01'B);    /* PHASE 1 IND              */
*DCL RSP40    BIT(2) CONSTANT('10'B);    /* PHASE 2 IND              */
*DCL RSP60    BIT(2) CONSTANT('11'B);    /* PHASE 3 IND              */
         @SPACE;
*/*                                                                  */
*/*      PHASE 1,2, AND 3 ERROR RESPONSES                            */
*/*                                                                  */
*DCL RSPE00   BIT(5) CONSTANT('00000'B); /* DATA CHECK               */
*DCL RSPE01   BIT(5) CONSTANT('00001'B); /* POSSIBLE INTERVENTION REQ*/
*DCL RSPE02   BIT(5) CONSTANT('00010'B); /* INTERVENTION REQUIRED    */
*DCL RSPE03   BIT(5) CONSTANT('00011'B); /* NEGATIVE POLL LIM REACHED*/
*DCL RSPE04   BIT(5) CONSTANT('00101'B); /* YIELDED TO CONTENTION    */
*DCL RSPE05   BIT(5) CONSTANT('00101'B); /* DEVICE ERROR-BSC STATUS  */
*DCL RSPE06   BIT(5) CONSTANT('00110'B); /* BSC ID ERROR             */
*DCL RSPE07   BIT(5) CONSTANT('00111'B); /* LINE TRACE TERMINATED D  */
*/*                                          ERROR                   */
*DCL RSPE08   BIT(5) CONSTANT('01000'B); /* OLTT CMD OR RESET OLTT   */
*/*                                          CONTROL CMD PROCESSING  */
*/*                                          TERMINATED              */
*DCL RSPE09   BIT(5) CONSTANT('01001'B); /* SESSION NOT STARTED DUE  */
*/*                                          HARDWARE ERROR          */
*DCL RSPE0A   BIT(5) CONSTANT('01010'B); /* BSC ERROR STATUS MESSAGE */
*DCL RSPE0B   BIT(5) CONSTANT('01011'B); /* GENERAL POLL OPERATION   */
*/*                                          ABORTED DUE TO ERROR    */
*DCL RSPE0C   BIT(5) CONSTANT('01100'B); /* FANOUT BACKUP LIMIT EXC  */
*DCL RSPE13   BIT(5) CONSTANT('10011'B); /* BREAK RECEIVED ON THIS   */
*DCL RSPE18   BIT(5) CONSTANT('11000'B); /* CONTACT REJECTED-SESSION */
*/*                                          STARTED                 */
*DCL RSPE19   BIT(5) CONSTANT('11001'B); /* DIAL DATA INCONSISTENCY  */
*DCL RSPE1A   BIT(5) CONSTANT('11010'B); /* BUFFERS REQUIRED TO CMPLT*/
*/*                                          OPERATION ARE NOT       */
*/*                                          AVAILABLE               */
*DCL RSPE1E   BIT(5) CONSTANT('11110'B); /* COMMAND REJECTED, LINE   */
*/*                                          DEACTIVATED OR COMMAND  */
*/*                                          RESET                   */
         @SPACE;
*/*                                                                  */
*/*      PHASE 1,2, AND 3 NORMAL RESPONSES                           */
*/*                                                                  */
*DCL RSPN00   BIT(5) CONSTANT('00000'B); /* COMMAND EXECUTED OK THIS */
*/*                                          FAR                     */
*DCL RSPN01   BIT(5) CONSTANT('00001'B); /* LEADING GRAPHICS RECEIVED*/
*DCL RSPN02   BIT(5) CONSTANT('00010'B); /* ONE OF THE FOLLOWING CMD */
*/*                                          EXECUTED OK THIS FAR:   */
*/*                                           READ OR INVITE         */
*/*                                           WRITE(IN CONV MODE)    */
*/*                                           WR OR WCR COMMANDS IN  */
*/*                                            READ PHASE            */
*DCL RSPN03   BIT(5) CONSTANT('00101'B); /* NEGATIVE POLL LIMIT      */
*/*                                          REACHED-QUEUE OPTION    */
*DCL RSPN04   BIT(5) CONSTANT('00100'B); /* OLTT REQUEST MESSAGE     */
*DCL RSPN05   BIT(5) CONSTANT('00101'B); /* BSC STATUS MESSAGE       */
*DCL RSPN06   BIT(5) CONSTANT('00110'B); /* NEGATIVE POLL LIMIT REA  */
*/*                                          NOWAIT OPTION           */
         @SPACE;
*/*                                                                  */
*/*      RESPONSE CODE (USED WITH BDUSYRSP)                          */
*/*                                                                  */
* DCL RSPSTPND BIT(8) CONSTANT('A5'X);  /* BSC STAT PENDING          */
* DCL RSPERLCK BIT(8) CONSTANT('9C'X);  /* ERROR LOCK SET            */
* DCL RSPERRST BIT(8) CONSTANT('EA'X);  /* ERROR BSC STATUS          */
* DCL RSPNRMST BIT(8) CONSTANT('65'X);  /* NORMAL BSC STATUS         */
* DCL RSPCRSET BIT(8) CONSTANT('9E'X);  /* CMD RESET                 */
* DCL RSPQNEGR BIT(8) CONSTANT('03'X);  /* Q-NEG POLL LIMIT REACHED
*                                                            @YM04625*/
* DCL RSPATTN  BIT(8) CONSTANT('B3'X);  /* ATTENTION                 */
* DCL RSPHNGUP BIT(8) CONSTANT('AC'X);  /* HANGUP                    */
* DCL RSPSYNER BIT(8) CONSTANT('88'X);  /* COMMAND SYNTAX ERROR      */
* DCL RSPMTA0  BIT(8) CONSTANT('04'X);  /* MTA PHASE 0               */
* DCL RSPRJCTD BIT(8) CONSTANT('B8'X);  /* CONTACT REJECTED-SESSION  */
*                                       /*  STARTED                  */
* DCL RSPCNTN  BIT(8) CONSTANT('A4'X);  /* YIEDLED TO CONTENTION     */
* DCL RSPINACT BIT(8) CONSTANT('86'X);  /* LINE INACTIVE             */
./ ADD NAME=TRSTD
*     %GOTO PLSRST;                     /* BILINGUAL HEADER
         MACRO
         TRSTD
.*A000000-999999                                               @Y17XAXF
         MEND
*        */
*%PLSRST:;
*/*                                                                  */
*/*      RESOURCE SEGMENT TABLE (POST NCP5)                          */
*/*                                                                  */
* DECLARE
*   1 RSTSEG   BASED BDY(BYTE),         /* SEGMENT HDR FORMAT        */
*    2 RSTTYPE  CHAR(1),                /* SEGMENT TYPE              */
*    2 RSTSEGHL CHAR(1),                /* SEGMENT HDR SIZE          */
*    2 RSTNOENT CHAR(2),                /* NO OF ENTRIES IN SEQMENT  */
*    2 RSTSEGSZ CHAR(4),                /* SEGMENT SIZE              */
*    2 RSTENTSZ CHAR(2),                /* ENTRY SIZE                */
*    2 RSTHUNQE CHAR(4),                /* HDR UNIQUE FLD (VAR LEN)  */
*     3 RSTPSNAN CHAR(2),               /*  NO OF PRE-SNA ENTRIES    */
*     3 RSTOTENT CHAR(2);               /*  TOTAL NO. OF ENTRIES     */
* DECLARE
*   1 RSTHDR   BASED BDY(BYTE),         /* HEADER SEG ENTRY FORMAT   */
*    2 RSTSEGTY CHAR(1),                /* SEGMENT TYPE              */
*    2 RSTSGOFF CHAR(4),                /* OFFSET TO SEGMENT         */
*    2 RSTNULL  CHAR(1);                /* HWORD ALIGNMENT PAD       */
* DECLARE
*   1 RSTSYSEN BASED BDY(BYTE),         /* SYSTEM SEG ENTRY FORMAT   */
*    2 RSTRELSE CHAR(2),                /* RELEASE LEVEL             */
*    2 RSTMODLV CHAR(2),                /* MODIFICATION LEVEL        */
*    2 RSTGENTP CHAR(2),                /* TYPE OF GEN               */
*    2 RSTNCPSA CHAR(2),                /* NCP SUBAREA               */
*    2 RSTSALTH CHAR(2),                /* SUBAREA ID LENGTH         */
*    2 RSTNBFSZ CHAR(2);                /* NCP BUFFER SIZE           */
* DECLARE
*   1 RSTHOST  BASED BDY(BYTE),         /* HOST SEG ENTRY FORMAT     */
*    2 RSTHSTSA CHAR(2),                /* HOST NODE SUBAREA         */
*    2 RSTKEYLN CHAR(2),                /* HOST UNIT SIZE            */
*    2 RSTUNITN CHAR(2),                /* NO OF UNITS IN HOST BUFFER*/
*    2 RSTBUFPD CHAR(2);                /* BUFFER PADSIZE            */
*/*                                                                  */
*/*      VALUES FOR RSTTYPE                                          */
*/*                                                                  */
* DCL RSTHDSEG BIT(8) CONSTANT('80'X);  /* HEADER SEGMENT            */
* DCL RSTSYSEG BIT(8) CONSTANT('01'X);  /* SYSTEM SEGMENT            */
* DCL RSTHSTSG BIT(8) CONSTANT('02'X);  /* HOST SEGMENT              */
* DCL RSTPATHS BIT(8) CONSTANT('03'X);  /* PATH SEGMENT              */
* DCL RSTRSORC BIT(8) CONSTANT('04'X);  /* RESOURCE SEGMENT          */
* DCL RSTEND   BIT(8) CONSTANT('FF'X);  /* END OF RST SEGMENT        */
./ ADD NAME=TRVTD
*        %GOTO PLSRVT;                  /* BILINGUAL HEADER
         MACRO
         TRVTD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
         SPACE
IEDRVTD  DSECT
*
*        DSECT FOR RESOURCE VECTOR TABLE (RVT)
*
RVTNUM   DS    H .                      NO. OF RVT ENTRIES     @Y17XAXU
RVTINDEX DS    AL2 .                    TNT/MH INDEX
RVTLEN   EQU   *-RVTINDEX .             LENGTH OF RVT ENTRY
         SPACE 2
         MEND                           */
*%PLSRVT : ;
*DECLARE
*  1 IEDRVTD BDY(WORD) BASED(IEDQRVTP),
*/*                                                                  */
*/*      DSECT FOR RESOURCE VECTOR TABLE (RVT)                       */
*/*                                                                  */
*    2 RVTNUM   FIXED(15),              /* NO. OF RVT ENTRIE @Y17XAXU*/
*   2 RVTINDEX FIXED(15);               /* TNT/MH INDEX              */
* %RVTLEN='LENGTH(RVTINDEX)';           /* LENGTH OF RVT ENTRY       */
*
*%RVTEND: ;
*
./ ADD NAME=TSATD
*        %GOTO PLSSAT;                  /* BILINGUAL HEADER
         MACRO
         TSATD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
         SPACE
IEDSATD  DSECT
*
*        DSECT FOR SUBAREA TABLE (SAT)
*
SATRNLCB DS    A .                      IMMEDIATE 3705 LCB
SATRNRVT DS    A .                      ADDRESS OF 3705 RVT
SATLEN   EQU   *-IEDSATD                LENGTH OF SAT ENTRY
         SPACE 2
         MEND                           */
*%PLSSAT : ;
*DECLARE
*  1 IEDSATD BDY(WORD) BASED(IEDQSATP),
*/*                                                                  */
*/*      DSECT FOR SUBAREA TABLE (SAT)                               */
*/*                                                                  */
*   2 SATRNLCB PTR(31),                 /* IMMEDIATE 3705 LCB        */
*   2 SATRNRVT PTR(31);                 /* 3705 RVT ADDRESS          */
* %SATLEN='LENGTH(IEDSATD)';            /* LENGTH OF SAT ENTRY       */
*
*%SATEND: ;
*
./ ADD NAME=TSBTD
*        %GOTO PLSSBT;                  /* BILINGUAL HEADER
         MACRO
         TSBTD
IEDQSBTD DSECT
.* A000000-999999                                              @YM07020
SBTFLAGS DS    X                        FUNCTION FLAGS
SBTECBN  EQU   X'80'                    REQUEST ECB POST WHEN COMPLETE
SBTBFRTN EQU   X'40'                    RETURN BFR CONTAINING PARM
*                                        LIST TO BFR RETURN WHEN
*                                        COMPLETE
SBTOI    EQU   X'20'                    PERFORM OR FUNCTION
SBTNI    EQU   X'10'                    PERFORM AND FUNCTION
*              X'08'-X'01'              RESERVED
SBTQCBA  DS    AL3                      QCB ADDRESS
SBTPRI   DS    X                        PRIORITY
SBTLINK  DS    AL3                      LINK FIELD
         DS    A                        BUFFER TIC FIELD
SBTDATA  DS    X                        BIT CONFIGURATION FOR OR/AND
*                                        FUNCTION
SBTADDR  DS    AL3                      ADDRESS OF BYTE FOR OR/AND
*                                        FUNCTION
SBTECB   DS    A                        OPTIONAL ECB FOR POST
         MEND  ,   */
*%PLSSBT:  ;
*DECLARE                                /* IEDQSBT PARAMETER LIST    */
*  1 IEDQSBTD  BASED(IEDQSBTR),         /* PARM LIST                 */
*   2 SBTFLAGS     BIT(8),              /* FUNCTION FLAGS            */
*    3 SBTECBN      BIT(1),             /* REQUEST ECB POST WHEN
*                                          COMPLETE                  */
*    3 SBTBFRTN     BIT(1),             /* RETURN BFR CONTAINING PARM
*                                          LIST TO BFR RETURN WHEN
*                                          COMPLETE                  */
*    3 SBTOI        BIT(1),             /* PERFORM OR FUNCTION       */
*    3 SBTNI        BIT(1),             /* PERFORM AND FUNCTION      */
*    3 *            BIT(4),             /* RESERVED                  */
*
*   2 SBTQCBA      PTR(24),             /* QCB ADDRESS               */
*
*   2 SBTPRI       CHAR(1),             /* PRIORITY                  */
*   2 SBTLINK      PTR(24),             /* LINK FIELD                */
*
*   2 *            PTR(31),             /* BUFFER TIC FIELD          */
*
*   2 SBTDATA      BIT(8),              /* BIT CONFIGURATION FOR
*                                          OR/AND FUNCTION           */
*   2 SBTADDR      PTR(24),             /* ADDRESS OF BYTE FOR
*                                          OR/AND FUNCTION           */
*   2 SBTECB       PTR(31);             /* OPTIONAL ECB FOR POST     */
*
*
./ ADD NAME=TSCBD
*        %GOTO BSLSCB;                                               /*
         MACRO
         TSCBD
.*A 000000-999999                                              @X02X5X0
.*A384000                                                       SA53606
.*A452000                                                        S21101
.*C012000                                                        S21101
.*D460000                                                        S21101
.*A140000                                                        A42363
.*D168000                                                        S22026
.*C028000,108000,112000                                          S22026
.*A078000,110000,114000,130000,143500,158000,287000,434000       S22026
.*A442000,450000,474000,498000,524800-527200                     S22026
.*A552400-555600                                                 S22026
.*A056000                                                        A44887
.*C616000,864100                                                SA67142
.*A204000,825100                                               @OY13632
.*A160000,865000                                                 X03039
.*A624000,865000                                               @Y17XAXF
.*       UPDATED 11/5/74                                       @X02X5XE
.*       BILINGUAL CONVERSION OF THE SCB DSECT WAS DONE FOR      S22024
IEDQSCB  DSECT
         SPACE
SCBSTATE DS    XL1 .                    STATUS BITS
*                        BIT DEFINITIONS
SCBTRANP EQU   X'80' .                  MESSAGE IN TRANSPARENT MODE
SCBMGFMN EQU   X'40' .                  MSGFORM REQUESTED
SCBMGFMF EQU   X'BF' .                  MSGFORM NOT REQUESTED
SCBSEQIN EQU   X'40' .                  SEQUENCE IN HAS BEEN EXECUTED
*                                       CURRENT MESSAGE
SCBLCK1N EQU   X'20' .                  FIRST LOCK BIT
SCBLCK1F EQU   X'DF' .                  MSG NOT BEING RCVD IN LOCK
SCBERSDS EQU   X'10' .                  SCREEN ERASURE REQUESTED A44887
SCBMSGLN EQU   X'08' .                  MESSAGE LOCK
SCBMSGLF EQU   X'F7' .                  EXTENDED LOCK
SCBCKPT  EQU   X'04' .                  CHECKPOINT REQUESTED
SCBPRER  EQU   X'02' .                  PREVIOUS EOB/ETB ERROR
SCBCODE  EQU   X'01' .                  TRANSLATION REQUESTED
*
SCBDESTQ DS    AL3 .                    POINTER TO DESTINATION QCB
SCBSNDCT DS    0XL1 .                   MSGLIMIT ON THE SEND SIDE
SCBRCVCT DS    XL1 .                    MSGLIMIT ON THE RECEIVE SIDE
SCBMACR  DS    0AL3 .                   FIRST/NEXT IN/OUTMSG MACRO TO
*                                       BE EXECUTED
SCBMBHEN DS    AL3 .                    ADDR MULT BFR HDR ENTRY
SCBPRI   DS    XL1 .                    PRIORITY INDEX TO QCB
SCBBKFCT DS    0XL3 .                   CNT OF MSG LNTH FOR BRK  S22026
         DS    XL1 .                                             S22026
SCBEOBSZ DS    0H .                     SIZE OF LOGICAL BLOCKS   S22026
SCBCTBSZ DS    H .                      SIZE OF CTB              S22026
SCBSALEV DS    0XL1 .                   SIMULATED ATTN LEVEL REQ    TSO
SCBQTYPE DS    XL1 .
*                                       THIS MESSAGE HAS BEEN
*                                       QUEUED ON
*                        BIT DEFINITIONS
SCBNREUS EQU   X'10' .                  NON-REUSEABLE DISK QUEUES
SCBREUS  EQU   X'20' .                  REUSEABLE DISK QUEUES
SCBCOREQ EQU   X'40' .                  CORE QUEUES
SCBNORCL EQU   X'80' .                  A RECALL FROM BD HAS     A42363
*                                       FAILED TO GET A BUFFER   A42363
*                                       BECAUSE THE MESSAGE HAD  A42363
*                                       ALREADY BEEN REMOVED FROMA42363
*                                       THE CORE QUEUE           A42363
SCBCONC  EQU   X'08' .                  CONC SCB                 S22026
SCBNOFF  EQU   X'04' .                  REUS HAS UPDATED SCBFEFO
SCBBBFTM EQU   X'02' .                  BUFFERRED TERMINAL SCB
SCBBFMM  EQU   X'01' .                  BUFFERRED TERMINAL IN MIDDLE
*                                       OF MESSAGE
*
SCBMRFPL DS    AL3 .                    ADDR OF FORWARD PARAMETER LIST
SCBRNNME DS    0CL8 .                   NAME OF THE NCP          X03039
SCBERRST DS    0F .                     ERROR WORD BITS
SCBERR1  DS    XL1 .                    FIRST BYTE
*                        BIT DEFINITIONS
SCBHDRRN EQU   X'80' .                  INCOMPLETE HEADER
SCBHDRRF EQU   X'7F' .                  NOT INCOMPLETE HEADER
SCBNOLOG EQU   SCBHDRRN .               INVALID LOGON MESSAGE       TSO
SCBORIGN EQU   X'40' .                  INVALID ORIGIN ON
SCBORIGF EQU   X'BF' .                  ORIGIN IS VALID
SCBHANG  EQU   SCBORIGN .               LOGON REQUESTS HANGUP MSG   TSO
SCBNOTRM EQU   X'20' .                  NOT A TSO TERMINAL          TSO
SCBRVITX EQU   X'20'                    RVI TO TEXT RECEIVED   @OY13632
SCBSEQHN EQU   X'10' .                  SEQUENCE HIGH ON
SCBSEQHF EQU   X'EF' .                  SEQUENCE NOT HIGH
SCBNOTSO EQU   SCBSEQHN .               TSO NOT IN SYSTEM           TSO
SCBSEQLN EQU   X'08' .                  SEQUENCE LOW ON
SCBSEQLF EQU   X'F7' .                  SEQUENCE NOT LOW
SCBNOVAC EQU   SCBSEQLN .               TOO MANY TSO USERS          TSO
SCBNOBFN EQU   X'02' .                  INSUFFICIENT BUFFERS
SCBCUTFN EQU   X'01' .                  CUTOFF ERROR
SCBCUTFF EQU   X'FE' .                  NO CUTOFF ERROR
SCBRVISL EQU   SCBCUTFN .               RVI TO SEL BUFRD TERM
*
SCBERR2  DS    XL1 .                    SECOND BYTE
*                        BIT DEFINITIONS
SCBCRMIN EQU   X'80' .                  CORE MINIMUM PASSED
SCBCRMAX EQU   X'40' .                  CORE MAXIMUM PASSED
SCBCODER EQU   X'20' .                  ERROR IN DYNAMIC TRANSLATE TSO
SCBALN   EQU   X'10' .                  AUTOMATIC LINE NUMBERING    TSO
SCBOLTR  EQU   X'08' .                  TOTE NOT IN SYSTEM
SCBABRTN EQU   X'04' .                  ABORT - BSC TERMINAL
SCBRRJN  EQU   X'04' .                  REQUEST REJECT - SNA     X03039
SCBFRWDN EQU   X'02' .                  'FORWARD' ERROR
SCBSOHE  EQU   X'01' .                  SOH % E,C,R MESSAGE      S99238
*
SCBERR3  DS    XL1 .                    THIRD BYTE
*                        BIT DEFINITIONS
SCBLOSTN EQU   X'80' .                  MESSAGE LOST (OVERLAID)
SCBLOSTF EQU   X'7F' .                  MESSAGE PROCESSED
SCBXPI   EQU   SCBLOSTN .               ATTENTION - SEND !I         TSO
SCBTMIDN EQU   X'40' .                  ID FROM TERMINAL INVALID
SCBTMIDF EQU   X'BF' .                  TERMINAL IDENT OK
SCBXPD   EQU   SCBTMIDN .               ATTENTION - SEND !D         TSO
SCBTMINN EQU   X'20' .                  TERMINAL INOPERATIVE
SCBTMINF EQU   X'DF' .                  TERMINAL FUNCTIONAL
SCBSATTN EQU   X'10' .                  SIMULATED ATTENTION REC'VED TSO
SCBUSERN EQU   X'08' .                  USER ERROR ON
SCBUSERF EQU   X'F7' .                  NO USER ERROR
SCBFORMN EQU   X'04' .                  FORMAT ERROR-BSC MESSAGE
SCBFIERN EQU   X'04' .                  FUNCTION INTRP ERR - SNA X03039
SCBATTN  EQU   X'02' .                  HARDWARE ATTENTION          TSO
SCBTHRSN EQU   X'02' .                  THRESH REACHED ON CORE Q S22025
SCBXCEPN EQU   X'01' .                  UNIT EXCEPTION
SCBXCEPF EQU   X'FE' .                  NO UNIT EXCEPTION
SCBPERRN EQU   X'01' .                  PATH ERROR - SNA         X03039
*
SCBERR4  DS    XL1 .                    FOURTH BYTE
*                        BIT DEFINITIONS
SCBSLCTN EQU   X'80' .                  ERROR DURING SELECTION
SCBSLCTF EQU   X'7F' .                  NO SELECTION ERROR
SCBTXTTN EQU   X'40' .                  ERROR DURING TEXT TRANSFER
SCBTXTTF EQU   X'BF' .                  NO TEXT TRANSFER ERROR
SCBAPERR EQU   X'40' .                  SET BY IGG02046 IF      SA53606
*                                       PARTIAL MESSAGE IS SENT SA53606
*                                       TO MH BY ABENDING       SA53606
*                                       APPLICATION PROGRAM     SA53606
SCBCONNN EQU   X'20' .                  ERROR IN CONNECT/DISCONNECT
SCBCONNF EQU   X'DF' .                  NO CONNECT/DISCONNECT ERROR
SCBTRMLN EQU   X'10' .                  TERMINAL ERROR
SCBTRMLF EQU   X'EF' .                  NOT TERMINAL ERROR
SCBCTLUN EQU   X'04' .                  ERROR IN CONTROL UNIT
SCBCTLUF EQU   X'FB' .                  NO CONTROL UNIT ERROR
SCBCPMEN EQU   X'04' .                  CPM ERROR - SNA          X03039
SCBCHANN EQU   X'02' .                  ERROR IN CHANNEL
SCBCHANF EQU   X'FD' .                  NO CHANNEL ERROR
SCBSTERN EQU   X'02' .                  STATE ERROR - SNA        X03039
SCBUNDFN EQU   X'01' .                  UNDEFINED ERROR
SCBUNDFF EQU   X'FE' .                  NO UNDEFINED ERROR
*
SCBMRFSD DS    H .                      MULT RT FIRST SECNDRY DEST
SCBEOBAC DS    0H .                     ACCUM COUNT BETWEEN BLOCKS
SCBCTBAC DS    0H .                     COUNT OF DATA INSERTED   S22026
SCBDLPTR DS    0H .                     DISTRUBUTION LIST PTR    S22025
SCBCRLEN DS    XL1 .                    LENGTH OF CHAR STRING    S22025
SCBENDCR DS    XL1 .                    ITB CHAR SPECIFIED       S22025
SCBBSCFM DS    XL1 .                    MSGFORM DYNAMIC BLK CHANGES
*                        BIT DEFINITIONS
SCBTRNSP EQU   X'80' .                  RECEIVEING TRANSPARENT
SCBNONTR EQU   X'40' .                  RECEIVEING NON-TRANSPARENT
SCBRCVTX EQU   X'20' .                  ETX RECEVIED FROM BSC
SCBCNTEN EQU   X'10' .                  FOR SCHEDULER TO DETERMINS21101
*                                         NEXT OPERATION         S21101
SCBDATEN EQU   X'08' .                  AUTO DATE/TIME EXECUTED  S22065
*                                       INPUT ONLY               S99238
SCBNPDTR EQU   X'08' .                  NO PADDING TRANSPARENT   S99238
*                                       OUTPUT ONLY              S99238
SCBNOEOT EQU   X'02' .                  BSC DIAL NO EOT BEFORE READ
SCBMLMTN EQU   X'01' .                  MSGLIMIT HAS BEEN EXCEEDED
SCBMLMTF EQU   X'FE' .                  MSGLIMIT NOT EXCEEDED
*
SCBMBSSA DS    XL7 .                    MULT BFR SCAN SAVE AREA
SCBCPBNO DS    XL1 .                    NUMBER OF NEXT SEQUENTIAL CPB
*                                       TO BE READ FROM DISK
SCBDCHDR DS    AL3 .                    DISK ADDR CURRENT HEADER
SCBDESTL DS    XL1 .                    LENGTH OF DESTINATION NAMES
SCBCCHDR DS    AL3 .                    CORE ADDR CURRENT HEADER
SCBCTBSV DS    0XL1 .                   CTBFORM PARMS SAVED      S22026
SCBBCTR  DS    0XL1 .                   COUNTER OF BLKS REQ      S22025
SCBITBSZ DS    XL1 .                    SIZE OF LOGICAL SUBBLOCKS
SCBSCSEG DS    0AL3 .                   CURRENT SEGMENT BEING READ
SCBDNSEG DS    AL3 .                    DISK ADDR NEXT SEGMENT
*                                       FROM DISK TO SEND
SCBHBFNO DS    XL1 .                    NUMBER OF BUFFERS IN MULTI HDR
SCBSCHDR DS    0AL3 .                   CURRENT HEADER BEING SENT
SCBCLSEG DS    AL3 .                    CORE ADDR LAST MSG SEGMENT
SCBCTBFL DS    0XL1 .                   CONC FLAG BYTE           S22026
*                        BIT DEFINITIONS                         S22026
SCBCTBND EQU   X'80' .                  CTB END REACHED .        S22026
*                                                                S22026
SCBBLKCT DS    0XL1 .                   NO. OF BLKS REQUESTED    S22025
SCBITBAC DS    XL1 .                    ACCUM COUNT BETWEEN ITBS
SCBFEFO  DS    0AL3 .                   SAVED FEFO POINTER
SCBDCSEG DS    AL3 .                    DISK ADDR CURRENT SEGMENT
SCBDEOB  DS    F .                      DISK INFO ON LAST EOB
SCBSRCE  DS    H .                      MSG BFR SOURCE SAVED
SCBSIZE  DS    H .                      MSG BFR SIZE SAVED
SCBSTAT1 DS    XL1 .                    STATUS BYTE
*                        BIT DEFINITIONS                         S22026
SCBCBGN  EQU   X'80' .                  CONC MSG BEGIN           S22026
SCBCEND  EQU   X'40' .                  CONC MSG END             S22026
SCBNIDLE EQU   X'20' .                  INDICATES THAT BUFFERS   S22026
*                                       ARE NOT TO BE HOOKED IN  S22026
*                                       IDLES LOOP YET           S22026
SCBNOPST EQU   X'10' .                  INDICATES THAT BUFFERS   S22026
*                                       SHOULD NOT BE POSTED     S22026
*                                                                S22026
SCBXTRA  DS    0AL3 .                   ADDR ADDL RCDS SAVED
SCBCORE  DS    AL3 .                    ADDR RCD IN CORE Q SAVED
SCBOSEQ  DS    0H .                     SEQUENCE OUT NUMBER
SCBSCAN  DS    H .                      SCAN POINTER
SCBTQBCK DS    0XL3 .                   TEXT SEGMENT CHAIN SAVED
SCBNTXT  DS    AL3 .                    ADDR NEXT TEST SEG SAVED
SCBCRCD  DS    AL3 .                    ADDR CURR SEGMENT SAVED
SCBNHDR  DS    0AL3 .                   ADDR NEXT HDR SEG SAVED
SCBCHDR  DS    AL3 .                    ADDR CURR HDR SEG SAVED
SCBNXCPB DS    0AL1 .                   NEXT CPB NUMBER FROM DISK
*                                       IF ZERO - NO MULTIPLE ROUTING
SCBCCSEG DS    AL3 .                    CORE ADDR CURRENT SEGMENT
SCBEOB   DS    H .                      POINTER TO FIRST EOB SAVED
SCBUNTCT DS    AL1 .                    COUNT IN DISK RECORD OF FIRST
*                                       BYTE OF DATA
SCBTRANS DS    AL3 .                    ADDR OF CODE MACRO      SA67142
*                                       PARAMETER LIST          SA67142
SCBRGSAV DS    0F .                     SAVE AREA FOR USER MH REGISTERS
*                                       IF SPECIFIED ON INTRO
SCBSCBL  EQU   *-IEDQSCB                LENGTH OF SCB          @Y17XAXF
*
*       *************************************************************
*   0   *     STATE    *                   DESTQ                    *
*       *************************************************************
*   4   *  SNDCT/RCVCT *                 MACR/MBHEN                 *
*       *************************************************************
*   8   *     PRI      *                   BKFCT                    *
*       *************************************************************
*  12   *     QTYPE    *                   MRFPL                    *
*       *************************************************************
*  16   *                           ERRST                           *
*       *************************************************************
*  20   *            MRFSD            *            DLPTR            *
*       *************************************************************
*  24   *     BSCFM    *                   MBSSA                    *
*       *************************************************************
*  28   *                           MBSSA                           *
*       *************************************************************
*  32   *     CPBNO    *                   DCHDR                    *
*       *************************************************************
*  36   *     DESTL    *                   CCHDR                    *
*       *************************************************************
*  40   *     ITBSZ    *                 SCSEG/DNSEG                *
*       *************************************************************
*  44   *     HBFNO    *                 SCHDR/CLSEG                *
*       *************************************************************
*  48   *     ITBAC    *                 FEFO/DCSEG                 *
*       *************************************************************
*  52   *                          DEOB                             *
*       *************************************************************
*  56   *            SRCE             *            SIZE             *
*       *************************************************************
*  60   *     STAT1    *                 XTRA/CORE                  *
*       *************************************************************
*  64   *         OSEQ/SCAN           *          NTXT/TQBCK         *
*       *************************************************************
*  68   *  NTXT/TQBCK  *                   CRCD                     *
*       *************************************************************
*  72   *                NHDR/CHDR                   *     CCSEG    *
*       *************************************************************
*  76   *            CCSEG            *             EOB             *
*       *************************************************************
*  80   *     UNTCT    *                   TRANS                    *
*       *************************************************************
*
         MEND  , */
*%BSLSCB  :  ;
*DECLARE
*  1 IEDQSCB  BASED(IEDQSPTR),
*   2 SCBSTATE    CHAR(1),               /* STATUS BITS              */
*    3 SCBTRANP    BIT(1),               /* MESSAGE IN TRANSPARENT
*                                           MODE                     */
*    3 SCBSEQIN    BIT(1),               /* SEQUENCE IN HAS BEEN
*                                           EXECUTED CURRENT MESSAGE */
*     4 SCBMGFMN    BIT(1),              /* MSGFORM REQUESTED        */
*    3 SCBLCK1N    BIT(1),               /* FIRST LOCK BIT           */
*    3 SCBERSDS    BIT(1),               /* SCREEN ERASURE REQ A44887*/
*    3 SCBMSGLN    BIT(1),               /* MESSAGE LOCK             */
*    3 SCBCKPT     BIT(1),               /* CHECKPOINT REQUESTED     */
*    3 SCBPRER     BIT(1),               /* PREVIOUS EOB/ETB ERROR   */
*    3 SCBCODE     BIT(1),               /* TRANSLATION REQUESTED    */
*   2 SCBDESTQ    PTR(24)  BDY(BYTE),    /* POINTER TO DEST QCB      */
*   2 SCBRCVCT    CHAR(1),               /* RECEIVE MSGLIMIT         */
*    3 SCBSNDCT    CHAR(1),              /* SEND MSGLIMIT            */
*   2 SCBMBHEN    PTR(24)  BDY(BYTE),    /* ADDR MULT BFR HDR ENTRY  */
*    3 SCBMACR     PTR(24)  BDY(BYTE),   /* FIRST/NEXT IN/OUTMSG
*                                           MACRO TO BE EXECUTED     */
*   2 SCBPRI      PTR(8),                /* PRIORITY INDEX TO QCB
*                                                              S22024*/
*   2 SCBBKFCT    PTR(24)  BDY(BYTE),    /* MSG LENGTH COUNT FOR
*                                           BREAK              S22026*/
*    3 *           PTR(8),               /*                    S22026*/
*    3 SCBEOBSZ    FIXED(15) BDY(BYTE),  /* SIZE OF LOGICAL BLOCKS
*                                                              S22026*/
*     4 SCBCTBSZ    FIXED(15) BDY(BYTE), /* SIZE OF CTB        S22026*/
*   2 SCBSALEV    CHAR(1),               /* SIMULATED ATTN LEVEL REQ
*                                           TSO                      */
*    3 SCBQTYPE    CHAR(1),              /* THIS MESSAGE HAS BEEN
*                                           QUEUED ON                */
*     4 SCBNORCL    BIT(1),              /* A RECALL FROM BD HAS FAILED
*                                           TO GET A BUFFER BECAUSE THE
*                                           MESSAGE HAD ALREADY BEEN
*                                           REMOVED FROM THE CORE
*                                           QUEUE              A42363*/
*     4 SCBCOREQ    BIT(1),              /* CORE QUEUES              */
*     4 SCBREUS     BIT(1),              /* REUSEABLE DISK QUEUES    */
*     4 SCBNREUS    BIT(1),              /* NON-REUSEABLE DISK QUEUES*/
*     4 SCBCONC     BIT(1),              /* CONC SCB           S22026*/
*     4 SCBNOFF     BIT(1),              /* REUS HAS UPDATED SCBFEFO */
*     4 SCBBBFTM    BIT(1),              /* BUFFERRED TERMINAL SCB   */
*     4 SCBBFMM     BIT(1),              /* BUFFERRED TERMINAL IN
*                                           MIDDLE OF MESSAGE        */
*   2 SCBMRFPL    PTR(24)  BDY(BYTE),    /* ADDR OF FORWARD
*                                           PARAMETER LIST           */
*   2 SCBERRST    FIXED(31),             /* ERROR WORD BITS          */
*    3 SCBERR1     CHAR(1),              /* FIRST BYTE BIT
*                                           DEFINITIONS              */
*     4 SCBHDRRN    BIT(1),              /* INCOMPLETE HEADER        */
*      5 SCBNOLOG    BIT(1),             /* INVALID LOGON MSG  TSO   */
*     4 SCBORIGN    BIT(1),              /* INVALID ORIGIN ON        */
*      5 SCBHANG     BIT(1),             /* LOGON REQUEST HANGUP MSG
*                                                              TSO   */
*     4 SCBNOTRM    BIT(1),              /* NOT A TSO TERMINAL  TSO  */
*      5 SCBRVITX    BIT(1),            /*RVI TO TEXT REC    @OY13632*/
*     4 SCBSEQHN    BIT(1),              /* SEQUENCE HIGH ON         */
*      5 SCBNOTSO    BIT(1),             /* TSO NOT IN SYSTEM  TSO   */
*     4 SCBSEQLN    BIT(1),              /* SEQUENCE LOW ON          */
*      5 SCBNOVAC    BIT(1),             /* TOO MANY TSO USERS TSO   */
*     4 *           BIT(1),              /* RESERVED                 */
*     4 SCBNOBFN    BIT(1),              /* INSUFFICIENT BUFFERS     */
*     4 SCBCUTFN    BIT(1),              /* CUTOFF ERROR             */
*      5 SCBRVISL    BIT(1),             /* RVI TO SEL BUFRD TERM    */
*    3 SCBERR2     CHAR(1),              /* SECOND BYTE BIT
*                                           DEFINITIONS              */
*     4 SCBCRMIN    BIT(1),              /* CORE MINIMUM PASSED      */
*     4 SCBCRMAX    BIT(1),              /* CORE MAXIMUM PASSED      */
*     4 SCBCODER    BIT(1),              /* ERROR IN DYNAMIC
*                                           TRANSLATE          TSO   */
*     4 SCBALN      BIT(1),              /* AUTOMATIC LINE
*                                           NUMBERING          TSO   */
*     4 SCBOLTR     BIT(1),              /* TOTE NOT IN SYSTEM       */
*     4 SCBABRTN    BIT(1),              /* ABORT - BSC TERMINAL     */
*      5 SCBRRJN     BIT(1),             /* REQUEST REJECT -
*                                           SNA                X03039*/
*     4 SCBFRWDN    BIT(1),              /* 'FORWARD' ERROR          */
*     4 SCBSOHE BIT(1),                 /* SOH % E,C,R, MSG    S99238*/
*    3 SCBERR3     CHAR(1),              /* THIRD BYTE BIT
*                                           DEFINITIONS              */
*     4 SCBLOSTN    BIT(1),              /* MESSAGE LOST (OVERLAID)  */
*      5 SCBXPI      BIT(1),             /* ATTENTION - SEND I TSO   */
*     4 SCBTMIDN    BIT(1),              /* ID FROM TERMINAL INVALID */
*      5 SCBXPD      BIT(1),             /* ATTENTION - SEND D TSO   */
*     4 SCBTMINN    BIT(1),              /* TERMINAL INOPERATIVE     */
*     4 SCBSATTN    BIT(1),              /* SIMULATED ATTENTION
*                                           RECEIVED           TSO   */
*     4 SCBUSERN    BIT(1),              /* USER ERROR ON            */
*     4 SCBFORMN    BIT(1),              /* FORMAT ERROR - BSC MSG   */
*      5 SCBFIERN    BIT(1),             /* FUNCTION INTERPRETER
*                                           ERROR - SNA        X03039*/
*     4 SCBATTN     BIT(1),              /* HARDWARE ATTENTION TSO   */
*      5 SCBTHRSN    BIT(1),             /* CORE Q THRESH REACHED
*                                                              S22025*/
*     4 SCBXCEPN    BIT(1),              /* UNIT EXCEPTION           */
*      5 SCBPERRN    BIT(1),             /* PATH ERROR - SNA   X03039*/
*    3 SCBERR4     CHAR(1),              /* FOURTH BYTE BIT
*                                           DEFINITIONS              */
*     4 SCBSLCTN    BIT(1),              /* ERROR DURING SELECTION   */
*     4 SCBTXTTN    BIT(1),              /* ERROR DURING TEXT
*                                           TRANSFER                 */
*      5 SCBAPERR  BIT(1),              /* SET BY IGG02046 IF
*                                       PARTIAL MSG IS SENT TO MH
*                                       BY ABENDING APPLICATION
*                                       PROGRAM               SA53610*/
*     4 SCBCONNN    BIT(1),              /* ERROR IN CONNECT OR
*                                           DISCONNECT               */
*     4 SCBTRMLN    BIT(1),              /* TERMINAL ERROR           */
*     4 *           BIT(1),              /* RESERVED                 */
*     4 SCBCTLUN    BIT(1),              /* ERROR IN CONTROL UNIT    */
*      5 SCBCPMEN    BIT(1),             /* CPM ERROR - SNA    X03039*/
*     4 SCBCHANN    BIT(1),              /* ERROR IN CHANNEL         */
*      5 SCBSTERN    BIT(1),             /* STATE ERROR - SNA  X03039*/
*     4 SCBUNDFN    BIT(1),              /* UNDEFINED ERROR          */
*   2 SCBMRFSD    FIXED(15),             /* MULT RT FIRST SECNDRY
*                                           DESTINATION              */
*   2 SCBDLPTR    FIXED(15),             /* DISTR LIST PTR     S22025*/
*    3 SCBEOBAC    FIXED(15),            /* ACCUMULATED COUNT
*                                           BETWEEN BLOCKS           */
*     4 SCBCTBAC  FIXED(15),             /* COUNT OF DATA INSERTED
*                                                              S22026*/
*      5 SCBCRLEN    CHAR(1),            /* LENGTH OF CHAR STRING
*                                                              S22025*/
*      5 SCBENDCR    CHAR(1),            /* ITB CHAR SPECIFIED S22025*/
*   2 SCBBSCFM    CHAR(1),               /* MSGFORM DYNAMIC BLK CHGS */
*    3 SCBTRNSP    BIT(1),               /* RECEIVING TRANSPARENT    */
*    3 SCBNONTR    BIT(1),               /* RECEIVING NON-TRANSPARENT*/
*    3 SCBRCVTX    BIT(1),               /* ETX RECEIVED FROM BSC    */
*    3 SCBCNTEN    BIT(1),               /* FOR SCHEDULER TO
*                                           DETERMINE NEXT
*                                           OPERATION          S21101*/
*    3 SCBDATEN    BIT(1),               /* AUTO DATE/TIME EXECUTED
*                                                              S22025*/
*                                       /* INPUT ONLY          S99238*/
*     4 SCBNPDTR    BIT(1),             /* NO PADDING TRANSPARENT
*                                       OUTPUT ONLY            S99238*/
*    3 *           BIT(1),               /* RESERVED                 */
*    3 SCBNOEOT    BIT(1),               /* BSC DIAL NO EOT BEFORE
*                                           READ                     */
*    3 SCBMLMTN    BIT(1),               /* MSGLIMIT EXCEEDED        */
*   2 SCBMBSSA    CHAR(7),               /* MULT BFR SCAN SAVE AREA  */
*   2 SCBCPBNO    PTR(8),                /* NEXT SEQUENTIAL CPB NO. TO
*                                           BE READ FROM DISK        */
*   2 SCBDCHDR    PTR(24)  BDY(BYTE),    /* DISK ADDR CURRENT HDR    */
*   2 SCBDESTL    PTR(8),                /* DEST NAME LENGTH         */
*   2 SCBCCHDR    PTR(24)  BDY(BYTE),    /* CORE ADDR CURRENT HDR    */
*   2 SCBITBSZ    PTR(8),                /* LOGICAL SUBBLOCK SIZE    */
*    3 SCBCTBSV    CHAR(1),              /* CTBFORM PARMS SAVED
*                                                              S22026*/
*     4 SCBBCTR     CHAR(1),             /* COUNTER OF BLOCKS REQ
*                                                              S22025*/
*   2 SCBDNSEG    PTR(24)  BDY(BYTE),    /* DISK ADDR NEXT SEGMENT
*                                           FROM DISK TO SEND        */
*    3 SCBSCSEG    PTR(24)  BDY(BYTE),   /* CURRENT SEGMENT GEING
*                                           READ                     */
*   2 SCBHBFNO    CHAR(1),               /* MULTI-HDR BUFFER COUNT   */
*   2 SCBCLSEG    PTR(24)  BDY(BYTE),    /* CORE ADDR LAST MSG SEG   */
*    3 SCBSCHDR    PTR(24)  BDY(BYTE),   /* CURRENT HEADER BEING SENT*/
*   2 SCBITBAC    PTR(8),                /* ACCUM COUNT BETWEEN ITBS */
*    3 SCBCTBFL    CHAR(1),              /* CONC FLAG BYTE     S22026*/
*     4 SCBBLKCT    CHAR(1),             /* NO. OF BLKS REQUESTED
*                                                              S22025*/
*      5 SCBCTBND    BIT(1),             /* CTB END REACHED    S22026*/
*   2 SCBDCSEG    PTR(24)  BDY(BYTE),    /* DISK ADDR CURRENT SEGMENT*/
*    3 SCBFEFO     PTR(24)  BDY(BYTE),   /* SAVED FEFO POINTER       */
*   2 SCBDEOB     FIXED(31),             /* DISK INFO ON LAST EOB    */
*   2 SCBSRCE     FIXED(15),             /* MSG BFR SOURCE SAVED     */
*   2 SCBSIZE     FIXED(15),             /* MSG BFR SIZE SAVED       */
*   2 SCBSTAT1    CHAR(1),               /* STATUS BYTE              */
*    3 SCBCBGN     BIT(1),               /* CONC MSG BEGIN     S22026*/
*    3 SCBCEND     BIT(1),               /* CONC MSG END       S22026*/
*    3 SCBNIDLE    BIT(1),               /* BFRS NOT TO BE HOOKED INTO
*                                           IDLES LOOP YET     S22026*/
*    3 SCBNOPST    BIT(1),               /* BFRS SHOULD NOT BE POSTED
*                                                              S22026*/
*   2 SCBCORE     PTR(24)  BDY(BYTE),    /* ADDR RCD IN CORE Q SAVED */
*    3 SCBXTRA     PTR(24)  BDY(BYTE),   /* ADDR ADDL RCDS SAVED     */
*   2 SCBSCAN     FIXED(15),             /* SCAN POINTER             */
*    3 SCBOSEQ     FIXED(15),            /* SEQUENCE OUT NUMBER      */
*   2 SCBNTXT     PTR(24)  BDY(BYTE),    /* ADDR NEXT TEST SEG SAVED */
*    3 SCBTQBCK    CHAR(3),              /* TEXT SEG SHAIN SAVED     */
*   2 SCBCRCD     PTR(24)  BDY(BYTE),    /* ADDR CURR SEG SAVED      */
*   2 SCBCHDR     PTR(24)  BDY(BYTE),    /* ADDR CURR HDR SEG SAVED  */
*    3 SCBNHDR     PTR(24)  BDY(BYTE),   /* ADDR NEXT HDR SEG SAVED  */
*   2 SCBCCSEG    PTR(24)  BDY(BYTE),    /* CORE ADDR CURRENT SEGMENT*/
*    3 SCBNXCPB    PTR(8),               /* NEXT CPB NUMBER FROM
*                                           DISK.  IF ZERO - NO
*                                           MULTIPLE ROUTING         */
*   2 SCBEOB      FIXED(15),             /* POINTER TO FIRST EOB
*                                           SAVED                    */
*   2 SCBUNTCT    PTR(8),                /* OFFSET INTO DISK RECORD OF
*                                           NEXT BYTE TO MOVE  S22024*/
*   2 SCBTRANS    PTR(24)  BDY(BYTE),    /* ADDR OF CODE MACRO
*                                           PARAMETER LIST    SA67142*/
*   2 SCBEND      CHAR(0);               /* END OF BASE SCB  @YM07716*/
* DCL SCBRGSAV  CHAR(*) DEF(SCBEND);     /* SAVE AREA FOR USER MH
*                                           REGISTERS IF SPECIFIED
*                                           ON INTRO         @YM07716*/
*%SCBSCBL='LENGTH(IEDQSCB)';            /* LENGTH OF SCB     @Y17XAXF*/
*
*
*/*     ************************************************************ */
*/* 0   *     STATE    *                   DESTQ                     */
*/*     ************************************************************ */
*/* 4   *  SNDCT/RCVCT *                 MACR/MBHEN                  */
*/*     ************************************************************ */
*/* 8   *     PRI      *                   BKFCT                     */
*/*     ************************************************************ */
*/* 2   *     QTYPE    *                   MRFPL                     */
*/*     ************************************************************ */
*/* 6   *                           ERRST                            */
*/*     ************************************************************ */
*/* 0   *            MRFSD            *            DLPTR             */
*/*     ************************************************************ */
*/* 4   *     BSCFM    *                   MBSSA                     */
*/*     ************************************************************ */
*/* 8   *                           MBSSA                            */
*/*     ************************************************************ */
*/* 2   *     CPBNO    *                   DCHDR                     */
*/*     ************************************************************ */
*/* 6   *     DESTL    *                   CCHDR                     */
*/*     ************************************************************ */
*/* 0   *     ITBSZ    *                 SCSEG/DNSEG                 */
*/*     ************************************************************ */
*/* 4   *     HBFNO    *                 SCHDR/CLSEG                 */
*/*     ************************************************************ */
*/* 8   *     ITBAC    *                 FEFO/DCSEG                  */
*/*     ************************************************************ */
*/* 2   *                          DEOB                              */
*/*     ************************************************************ */
*/* 6   *            SRCE             *            SIZE              */
*/*     ************************************************************ */
*/* 0   *     STAT1    *                 XTRA/CORE                   */
*/*     ************************************************************ */
*/* 4   *         OSEQ/SCAN           *          NTXT/TQBCK          */
*/*     ************************************************************ */
*/* 8   *  NTXT/TQBCK  *                   CRCD                      */
*/*     ************************************************************ */
*/* 2   *                NHDR/CHDR                   *     CCSEG     */
*/*     ************************************************************ */
*/* 6   *            CCSEG            *             EOB              */
*/*     ************************************************************ */
*/* 0   *     UNTCT    *                   TRANS                     */
*/*     ************************************************************ */
*/*                                                                  */
./ ADD NAME=TSIBD
*        %GOTO PLSSIB;                  /* BILINGUAL HEADER
         MACRO
         TSIBD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAXU
.*A110000,340000                                               @Y17XAXF
.*D130000,360000                                               @Y17XAXF
         SPACE
IEDSIBD DSECT
*
*        DSECT FOR SESSION INFORMATION BLOCK (SIB)
*
SIBRUSEQ DS    A .                      RU SEGMENT CHAIN       @Y17XAXF
SIBCHAIN DS    A .                      NEXT SIB ADDRESS
SIBINDEX DS    H .                      TNT/MH INDEX
SIBSESSN DS    XL1 .                    SESSION INFO FLAG
SIBLGOFF EQU   X'80' .                    LOGOFF REQUESTED
SIBSHUTC EQU   X'40' .                    SHUTDOWN COMPLETE
*                                         RECEIVED
SIBINBIU EQU   X'20' .                    ON - IN BIU STATE
*                                         OFF-BETWEEN BIU STATE
*SIBSSTAT      X'10'-X'04'                SESSION STATE
SIBSRSET EQU   X'0C' .                    RESET
SIBSAPND EQU   X'04' .                    ACTIVE PENDING
SIBSRPND EQU   X'08' .                    RESET PENDING
SIBSACTV EQU   X'1C' .                    ACTIVE
SIBSFINL EQU   X'10' .                    FINAL
SIBSINIT EQU   X'00' .                    INITIAL
*SIBDSTAT      X'02'-X'01'                DATA TRAFFIC STATE
SIBDRSET EQU   X'00' .                    RESET
SIBDAPND EQU   X'01' .                    ACTIVE PENDING
SIBDRPND EQU   X'02' .                    RESET PENDING
SIBDACTV EQU   X'03' .                    ACTIVE
SIBPACIN DS    XL1 .                    PACING COUNT
SIBSEQN  DS    0F .                     SEQUENCE NUMBERS
SIBSEQI  DS    H .                      INBOUND SEQ NUMBER
SIBSEQO  DS    H .                      OUTBOUND SEQ NUMBER
SIBSTAT1 DS    XL1 .                    SNA STATE FLAG (TCAM)
SIBRQSHT EQU   X'80' .                   SHUTDOWN REQUEST ENQUEUED
SIBRQEND EQU   X'40' .                   END-SESSION REQUEST ENQUEUED
SIBFTERM EQU   X'20' .                   FORCED TERMINATE IN   @YM08991
*                                        PROGRESS              @YM08991
SIBRTRP  EQU   X'10' .                   RTR PENDING STATE
*SIBBSTAT      X'08'-X'01' .             BRACKET STATES
SIBBETB  EQU   X'00' .                    BETWEEN BRACKET STATE(BETB)
SIBPINB  EQU   X'01' .           PENDING IN BRACKETS(PEND.INQ) @YM06886
SIBINB   EQU   X'02' .           IN BRACKET STATE(INC)         @YM06886
SIBPBB   EQU   X'03' .           PENDING BEGIN BRACKETS        @YM06886
*                                          (PEND.BB)
SIBRSPR  EQU   X'04' .           PENDING BETWEEN BRACKETS      @YM06886
*                                          WAITING FOR RESPONSE TO BE
*                                          SENT(PEND.BETB.PSR.R)
SIBECR   EQU   X'05' .           PENDING BETWEEN BRACKETS      @YM06886
*                                          WAITING TO RECEIVE END CHAIN
*                                          (PEND.BETB.EC.R)
SIBPURGR EQU   X'06' .           PENDING BETWEEN BRACKETS      @YM06886
*                                          IN PURGING CHAIN STATE AND
*                                          WAITING TO RECEIVE END
*                                          CHAIN(PEND.BETB.PURGE.R)
SIBRSPS  EQU   X'07' .           PENDING BETWEEN BRACKETS      @YM06886
*                                          WAITING TO RECEIVE RESPONSE
*                                          (PEND.BETB.RSP.S)
SIBECS   EQU   X'08' .           PENDING BETWEEN BRACKETS      @YM06886
*                                          WAITING FOR END CHAIN TO
*                                          BE SENT(PEND.BETB.EC.S)
SIBSTAT2 DS    XL1 .                    SNA STATE FLAG (OP CONTROL)
SIBUSS   EQU   X'80' .                    ORIGINAL BUFFER WAS UNFORMAT
SIBTERM  EQU   X'40' .                    TERM IN PROGRESS
SIBRDSCN EQU   X'20' .                    REQUEST DISCONTACT (NORMAL)
*                                         IN PROGRESS
SIBDACLU EQU   X'10' .                    DACTLU PENDING
*        EQU   X'08'-X'01'                RESERVED
SIBTSPRO DS    XL1 .                    TS PROFILE
SIBFMPRO DS    XL1 .                    FM PROFILE
SIBBIND  DS    0XL3 .                   BIND PARAMETERS
SIBBIND1 DS    XL1 .                     BYTE ONE
SIBPCHN  EQU   X'80' .                    PLU CHAINING USE
SIBPRQM  EQU   X'40' .                    PLU REQUEST MODE
SIBPDEF  EQU   X'20' .                    PLU DEFINITE RESPONSE
SIBPEXC  EQU   X'10' .                    PLU EXCEPTION RESPONSE
SIBPCMP  EQU   X'08' .                    PLU COMPRESSION
SIBPEBI  EQU   X'04' .                    PLU EB INDICATOR
SIBSCHNG EQU   X'02' .                    SLU CHAINING USE
SIBSRQM  EQU   X'01' .                    SLU REQUEST MODE
SIBBIND2 DS    XL1 .                     BYTE TWO
SIBSDEF  EQU   X'80' .                    SLU DEFINITE RESPONSE
SIBSEXC  EQU   X'40' .                    SLU EXCEPTION RESPONSE
SIBSCMP  EQU   X'20' .                    SLU COMPRESSION
SIBSEBI  EQU   X'10' .                    SLU EB INDICATOR
SIBFMUSE EQU   X'08' .                    FM HEADER USAGE
SIBBRACK EQU   X'04' .                    BRACKETS
SIBBTERM EQU   X'02' .                    BRACKET TERMINATION
SIBALT   EQU   X'01' .                    ALTERNATE CODE
SIBBIND3 DS    XL1 .                     BYTE THREE
*SIBFMODE EQU  X'80'-X'40'                FM TRANSACTION MODE
SIBHDXFF EQU   X'80' .                     HALF DUPLEX FLIP-FLOP
SIBHDXCN EQU   X'40' .                     HALF DUPLEX CONTENTION
SIBRECV  EQU   X'20' .                    RECOVERY RESPONSIBILITY
SIBSPKR  EQU   X'10' .                    BRACKETS 1ST SPEAKER
SIBCRES  EQU   X'08' .                    CONTENTION RESOLUTION
*        EQU   X'04'-X'01' .              RESERVED
SIBSTAT0 DS    XL1 .                    SNA STATE FLAG(TCAM)
SIBCD    EQU   X'80'                      TERMINAL HAS CD STATE
*SIBLUTYP      X'40'-X'01'                LU TYPE
SIBLU0   EQU   X'00' .                     LU TYPE 0
SIBLU1   EQU   X'01' .                     LU TYPE 1
SIBLU2   EQU   X'02' .                     LU TYPE 2
SIBLEN   EQU   *-IEDSIBD .              LENGTH OF SIB
         SPACE 2
         MEND                           */
*%PLSSIB : ;
*DECLARE
*  1 IEDSIBD BDY(WORD) BASED,
*/*                                                                  */
*/*      DSECT FOR SESSION INFORMATION BLOCK (SIB)                   */
*/*                                                                  */
*   2 SIBRUSEG PTR(31),                 /* RU SEGMENT CHAIN  @Y17XAXF*/
*   2 SIBCHAIN PTR(31),                 /* NEXT SIB ADDRESS          */
*   2 SIBINDEX FIXED(16),               /* TNT/MH INDEX              */
*   2 SIBSESSN CHAR(1),                 /* SESSION INFO FLAG         */
*    3 SIBLGOFF BIT(1),                   /* LOGOFF REQUESTED        */
*    3 SIBSHUTC BIT(1),                   /* SHUTDOWN COMPLETE
*                                            RECEIVED                */
*    3 SIBINBIU BIT(1),                   /* ON -IN BIU STATE        */
*                                         /* OFF-BETWEEN BIU STATE   */
*    3 SIBSSTAT BIT(3),                   /* SESSION STATE           */
*    3 SIBDSTAT BIT(2),                   /* DATA TRAFFIC STATE      */
*   2 SIBPACIN BIT (8),                 /* PACING COUNT              */
*    3 SIBMCNT BIT(4),                  /* M COUNT                   */
*    3 SIBNCNT BIT(4),                  /* N COUNT                   */
*   2 SIBSEQN FIXED(32),                /* SEQUENCE NUMBER           */
*    3 SIBSEQI FIXED(16),               /* INBOUND SEQ NUMBER        */
*    3 SIBSEQO FIXED(16),               /* OUTBOUND SEQ NUMBER       */
*   2 SIBSTAT1 BIT(8),                  /* SNA STATE FLAG (TCAM)     */
*    3 SIBRQSHT BIT(1),                   /* SHUTDOWN REQUEST ENQUEUED
*                                                                    */
*    3 SIBRQEND BIT(1),                   /* END-SESSION REQUEST
*                                                                    */
*    3 SIBFTERM BIT(1),                   /* FORCD TERMINATE @YM08991*/
*                                         /* IN PROGRESS     @YM08991*/
*    3 SIBRTRP  BIT(1),                   /* RTR PENDING STATE       */
*    3 SIBBSTAT BIT(4),                   /* BRACKET STATES          */
*   2 SIBSTAT2 BIT(8),                  /* SNA STATE FLAG (OP CTL)   */
*    3 SIBUSS   BIT(1),                   /* ORIGINAL BUFFER WAS
*                                            UNFORMATTED             */
*    3 SIBTERM  BIT(1),                   /* TERM IN PROGRESS        */
*    3 SIBRDSCN BIT(1),                   /* REQUEST DISCONTACT (NORM)
*                                            IN PROGRESS             */
*    3 SIBDACLU BIT(1),                   /* DEACTLU PENDING         */
*    3 *        BIT(4),                   /* RESERVED                */
*   2 SIBTSPRO FIXED(8),                /* TS PROFILE                */
*   2 SIBFMPRO FIXED(8),                /* FM PROFILE                */
*   2 SIBBIND CHAR(3),                  /* BIND PARAMETERS           */
*    3 SIBBIND1 CHAR(1),                /*  BYTE 1                   */
*     4 SIBPCHN  BIT(1),                /*   PLU CHAINING USE        */
*     4 SIBPRQM  BIT(1),                /*   PLU REQUEST MODE        */
*     4 SIBPDEF  BIT(1),                /*   PLU DEFINITE RESPONSE   */
*     4 SIBPEXC  BIT(1),                /*   PLU EXCEPTION RESPONSE  */
*     4 SIBPCMP  BIT(1),                /*   PLU COMPRESSION         */
*     4 SIBPEBI  BIT(1),                /*   PLU EB INDICATOR        */
*     4 SIBSCHNG BIT(1),                /*   SLU CHAINING USE        */
*     4 SIBSRQM  BIT(1),                /*   SLU REQUEST MODE        */
*    3 SIBBIND2 CHAR(1),                /*  BYTE 2                   */
*     4 SIBSDEF  BIT(1),                /*   SLU DEFINITE RESPONSE   */
*     4 SIBSEXC  BIT(1),                /*   SLU EXCEPTION RESPONSE  */
*     4 SIBSCMP  BIT(1),                /*   SLU COMPRESSION         */
*     4 SIBSEBI  BIT(1),                /*   SLU EB INDICATOR        */
*     4 SIBFMUSE BIT(1),                /*   FM HEADER USAGE         */
*     4 SIBBRACK BIT(1),                /*   BRACKETS                */
*     4 SIBBTERM BIT(1),                /*   BRACKET TERMINATION     */
*     4 SIBALT   BIT(1),                /*   ALTERNATE CODE          */
*    3 SIBBIND3 CHAR(1),                /*  BYTE 3                   */
*     4 SIBFMODE BIT(2),                /*   FM TRANSACTION MODE     */
*     4 SIBRECOV BIT(1),                /*   RECOVERY RESPONSIBILITY */
*     4 SIBSPKR  BIT(1),                /*   BRACKETS 1ST SPEAKER    */
*     4 SIBCRES  BIT(1),                /*   CONTENTION RESOLUTION   */
*     4 *        BIT(3),                /*   RESERVED                */
*   2 SIBSTAT0 BIT(8),                  /* SNA STATE FLAG (TCAM)     */
*    3 SIBCD    BIT(1),                 /*  TERMINAL HAS CD STATE    */
*    3 SIBLUTYP BIT(7);                 /*  LU TYPE                  */
* %SIBLEN='LENGTH(IEDSIBD)';            /* LENGTH OF SIB             */
*
*/*      SIBLUTYP VALUES                                             */
* DCL SIBLU0   BIT(7) CONSTANT('0000000'B); /* LU TYPE 0             */
* DCL SIBLU1   BIT(7) CONSTANT('0000001'B); /* LU TYPE 1             */
* DCL SIBLU2   BIT(7) CONSTANT('0000010'B); /* LU TYPE 2             */
*/*      SIBFMODE VALUES                                             */
* DCL SIBHDXFF BIT(2) CONSTANT('10'B); /* HALF DUPLEX FLIP-FLOP      */
* DCL SIBHDXCN BIT(2) CONSTANT('01'B); /* HALF DUPLEX CONTENTION     */
*/*      SIBSSTAT FLAGS                                              */
* DCL SIBSINIT BIT(3) CONSTANT('000'B); /* INITIAL                   */
* DCL SIBSAPND BIT(3) CONSTANT('001'B); /* ACTIVE PENDING            */
* DCL SIBSRPND BIT(3) CONSTANT('010'B); /* RESET PENDING             */
* DCL SIBSRSET BIT(3) CONSTANT('011'B); /* RESET                     */
* DCL SIBSFINL BIT(3) CONSTANT('100'B); /* FINAL                     */
* DCL SIBSACTV BIT(3) CONSTANT('111'B); /* ACTIVE                    */
*/*      SIBBSTAT VALUES                                             */
* DCL SIBBETB  BIT(4) CONSTANT('0000'B); /* BETWEEN BRACKET STATE
*                                          (BETB)                    */
* DCL SIBPINB  BIT(4) CONSTANT('0001'B); /* PENDING IN BRACKETS
*                                          (PEND.IND)                */
* DCL SIBPBB   BIT(4) CONSTANT('0011'B); /* PENDING BEGIN BRACKETS
*                                          (PEND.BB)                 */
* DCL SIBRSPR  BIT(4) CONSTANT('0100'B); /* PENDING BETWEEN BRACKETS
*                                           WAITING FOR RESPONSE TO BE
*                                           SENT (PEND.BETB.RSP.R)   */
* DCL SIBECR   BIT(4) CONSTANT('0101'B); /* PENDING BETWEEN BRACKETS
*                                           WAITING TO RECEIVE END
*                                           CHAIN(PEND.BETB.EC.R)    */
* DCL SIBPURGR BIT(4) CONSTANT('0110'B); /* PENDING BETWEEN BRACKETS
*                                           IN PURGING CHAIN STATE AND
*                                           WAITING TO RECEIVE END
*                                           CHAIN(PEND.BETB.PURGE.R) */
* DCL SIBRSPS  BIT(4) CONSTANT('0111'B); /* PENDING BETWEEN BRACKETS
*                                           WAITING TO RECEIVE RESPONSE
*                                           (PEND.BETB.RSP.S)        */
* DCL SIBECS   BIT(4) CONSTANT('1000'B); /* PENDING BETWEEN BRACKETS
*                                           WAITING FOR END CHAIN TO
*                                           BE SENT(PEND.BETB.EC.S)  */
* DCL SIBINB   BIT(4) CONSTANT('0010'B); /* IN BRACKET STATE(INC)    */
*/*      SIBDSTAT FLAGS                                              */
* DCL SIBDRSET BIT(2) CONSTANT('00'B);  /* RESET                     */
* DCL SIBDAPND BIT(2) CONSTANT('01'B);  /* ACTIVE PENDING            */
* DCL SIBDRPND BIT(2) CONSTANT('10'B);  /* RESET PENDING             */
* DCL SIBDACTV BIT(2) CONSTANT('11'B);  /* ACTIVE                    */
*
*%SIBEND: ;                             /* END OF SIB                */
*
./ ADD NAME=TSNSD
*        %GOTO PLSSNS;                                               /*
         MACRO
         TSNSD
.*A000000-999999                                               @Y17XAXG
IEDSNSD  DSECT
*               SENSE BYTE DSECT
SNSSYSTM DS    0XL2                     SYSTEM SENSE BYTES
SNSMAJ   DS    XL1                      MAJOR SENSE BYTE
SNSPATH  EQU   X'80'                    PATH ERROR
SNSRHUSE EQU   X'40'                    RH USAGE ERROR
SNSSTERR EQU   X'20'                    STATE ERROR
SNSRQERR EQU   X'10'                    REQUEST ERROR
SNSRQREJ EQU   X'08'                    REQUEST REJECT
SNSMIN   DS    XL1                      MINOR SENSE BYTE
*    REQUEST FOR PATH ERROR BYTES
SNSLNKF  EQU   X'02'                    DATA LINK FAILURE
SNSLUINP EQU   X'03'                    LU INOPERATIVE         @YM08991
SNSLOSCT EQU   X'0D'                    LOST CONTACT
*    REQUEST ERROR MINOR SENSE BYTES
SNSRUDAT EQU   X'01'                    RU DATA ERROR
SNSRULEN EQU   X'02'                    RU LENGTH ERROR
SNSNFUNC EQU   X'03'                    FUNCTION NOT SUPPORTED
SNSNCAT  EQU   X'07'                    CATEGORY NOT SUPPORTED
SNSINVHD EQU   X'08'                    INVALID FM HEADER
*    REQUEST REJECT MINOR SENSE BYTES
SNSRNAV  EQU   X'01'                    RESOURCE NOT AVAILABLE
SNSIVREQ EQU   X'02'                    INTERVENTION REQUIRED
SNSMPSWD EQU   X'03'                    MISSING PASSWORD
SNSSLIM  EQU   X'05'                    SESSION LIMIT EXCEEDED
SNSMODIN EQU   X'09'                    MODE INCONSISTENCY
SNSBRACE EQU   X'0B'                    BRACKET RACE ERROR
SNSPRCNS EQU   X'0C'                    PROCEDURE NOT SUPPORTED
SNSCNCL  EQU   X'11'                    CANCEL KEY HIT
SNSNRSCE EQU   X'12'                    INSUFFICIENT RESOURCE
SNSNACT  EQU   X'16'                    FUNCION INATIVE
SNSNRTR  EQU   X'19'                    RTR NOT REQUIRED
SNSSRFER EQU   X'1E'                    SESSION REFERENCE ERROR
SNSUNCTL EQU   X'23'                    UNKNOWN CONTROL VECTOR
SNSINTRQ EQU   X'80'                    INTERVENTION REQUIRED
SNSRCXMT EQU   X'1B'                    RECEIVER IN TRANSMIT MODE
SNSNGRB  EQU   X'13'                    NEGATIVE RESP TO BID
SNSRTRY  EQU   X'27'                    RETRY REQUESTED
SNSACTV  EQU   X'15'                    FUNCTION ALREADY ACTIVE
SNSUSER  DS    0XL2                     USER SENSE BYTES
SNSUSR1  DS    XL1                      FIRST USER BYTE
SNSUSR2  DS    XL1                      SECOND USER BYTE
         MEND                                                        */
*%PLSSNS : ;
*DECLARE 1 IEDSNSD BASED(SNSPTR),       /* SENSE BYTE STRUCTURE      */
*          2 SNSSYSTM  CHAR(2),        /* SYSTEM SENSE BYTES        */
*            3 SNSMAJ  BIT(8),          /* MAJOR SENSE BYTE          */
*            3 SNSMIN  BIT(8),          /* MINOR SENSE BYTE          */
*          2 SNSUSER   CHAR(2),        /* USER SENSE BYTES          */
*            3 SNSUSR1 BIT(8),          /* FIRST USER BYTE           */
*            3 SNSUSR2 BIT(8);          /* SECOND USER BYTE          */
*/*                                                                  */
*/*            REQUEST FOR PATH ERROR BYTES                          */
*/*                                                                  */
*DCL SNSLNKF  BIT(8) CONSTANT('02'X);   /* DATA LINK FAILURE         */
*DCL SNSLUINP BIT(8) CONSTANT('03'X);   /* LU INOPERATIVE    @YM08991*/
*DCL SNSLOSCT BIT(8) CONSTANT('0D'X);   /* LOST CONTACT              */
*/*                                                                  */
*/*            CONSTANTS TO BE USED WITH MAJOR SENSE                 */
*/*                                                                  */
*DCL SNSPATH BIT(8) CONSTANT('80'X);    /* PATH ERROR               */
*DCL SNSRHUSE BIT(8) CONSTANT('40'X);   /* RH USAGE ERROR            */
*DCL SNSSTERR BIT(8) CONSTANT('20'X);   /* STATE ERROR               */
*DCL SNSRQERR BIT(8) CONSTANT('10'X);   /* REQUEST ERROR             */
*DCL SNSRQREJ BIT(8) CONSTANT('08'X);   /* REQUEST REJECT            */
*/*                                                                  */
*/*            CONSTANTS TO BE USED WITH MINOR SENSE                 */
*/*                                                                  */
*/*                                                                  */
*/*  REQUEST ERROR MINOR SENSE BYTES                                 */
*/*                                                                  */
*DCL SNSRUDAT BIT(8) CONSTANT('01'X);   /* RU DATA ERROR             */
*DCL SNSRULEN BIT(8) CONSTANT('02'X);   /* RU LENGTH ERROR           */
*DCL SNSNFUNC BIT(8) CONSTANT('03'X);   /* FUNCTION NOT SUPPORTED    */
*DCL SNSNCAT  BIT(8) CONSTANT('07'X);   /* CATEGORY NOT SUPPORTED    */
*DCL SNSINVHD BIT(8) CONSTANT('08'X);   /* INVALID FM HEADER         */
*/*                                                                  */
*/*  REQUEST REJECT MINOR SENSE BYTES                                */
*/*                                                                  */
*DCL SNSRNAV  BIT(8) CONSTANT('01'X);   /* RESOURCE NOT AVAILABLE    */
*DCL SNSIVREQ BIT(8) CONSTANT('02'X);   /* INTERVENTION REQUIRED     */
*DCL SNSMPSWD BIT(8) CONSTANT('03'X);   /* MISSING PASSWORD          */
*DCL SNSSLIM  BIT(8) CONSTANT('05'X);   /* SESSION LIMIT EXCEEDED    */
*DCL SNSMODIN BIT(8) CONSTANT('09'X);   /* MODE INCONSISTENCY        */
*DCL SNSBRACE BIT(8) CONSTANT('0B'X);   /* BRACKET RACE ERROR        */
*DCL SNSPRCNS BIT(8) CONSTANT('0C'X);   /* PROCEDURE NOT SUPPORTED   */
*DCL SNSCNCL  BIT(8) CONSTANT('11'X);   /* CANCEL KEY HIT            */
*DCL SNSNRSCE BIT(8) CONSTANT('12'X);   /* INSUFFICIENT RESOURCE     */
*DCL SNSNACT  BIT(8) CONSTANT('16'X);   /* FUNCTION INACTIVE         */
*DCL SNSNRTR  BIT(8) CONSTANT('19'X);   /* RTR NOT REQUIRED          */
*DCL SNSSRFER BIT(8) CONSTANT('1E'X);   /* SESSION REFERENCE ERROR   */
*DCL SNSUNCTL BIT(8) CONSTANT('23'X);   /* UNKNOWN CONTROL VECTOR    */
*DCL SNSINTRQ BIT(8) CONSTANT('80'X);   /* INTERVENTION REQUIRED     */
*DCL SNSRCXMT BIT(8) CONSTANT('1B'X);   /* RECEIVER IN TRANSMIT MODE */
*DCL SNSNGRB  BIT(8) CONSTANT('13'X);   /* NEGATIVE RESP TO BID      */
*DCL SNSRTRY  BIT(8) CONSTANT('27'X);   /* RETRY REQUESTED           */
*DCL SNSACTV  BIT(8) CONSTANT('15'X);   /* FUNCTION ALREADY ACTIVE   */
*/*                                                                  */
./ ADD NAME=TSOECDD
*        %GOTO PLSTSOEC;       /*
         MACRO
         TSOECDD
*   ENTRY FROM SEND SCHEDULER OR DESTINATION SCHEDULER ON QCB POST
TSOA01   EQU   1
*   ENTRY FROM SEND SCHEDULER ON PLCB POST
TSOA02   EQU   2
*   ENTRY FROM RECEIVE SCHEDULER ON PLCB POST
TSOA03   EQU   3
         MEND  */
*%PLSTSOEC : ;
*/*  ENTRY FROM SEND SCHEDULER OR DESTINATION SCHEDULER ON QCB POST  */
* DCL TSOA01   FIXED(8) CONSTANT(1);
*/*  ENTRY FROM SEND SCHEDULER ON PLCB POST                          */
* DCL TSOA02   FIXED(8) CONSTANT(2);
*/*  ENTRY FROM RECEIVE SCHEDULER ON PLCB POST                       */
* DCL TSOA03   FIXED(8) CONSTANT(3);
./ ADD NAME=TSORT
         MACRO
&TAG     TSORT &TREE,&OFFSET=0,&KEYL=256
.*A000000                                                        Y02147
.**********************************************************************
      RPTDSECT
LJW&SYSNDX EQU 1
         USING IGARPTH,LJW&SYSNDX  BASE REGISTER FOR DSECT.
         AIF   (K'&TREE EQ K'&TREE(1)+2).LW0
&TAG     L     1,&TREE
         AGO   .LW1
.LW0     ANOP
&TAG     LR    1,&TREE(1)
.LW1     ANOP
         AIF   (K'&OFFSET EQ K'&OFFSET(1)+2).LW2
         LA    0,&OFFSET       OFFSET TO KEY IN RECORD.
         STH   0,OFFSET
         AGO   .LW3
.LW2     ANOP
         STH   &OFFSET(1),OFFSET
.LW3     ANOP
         AIF   ('&KEYL'(1,1) EQ '(').LW4
         LA    0,&KEYL
         STH   0,KEYL
         AGO   .LW5
.LW4     STH   &KEYL(1),KEYL
.LW5     ANOP
         DROP  LJW&SYSNDX
         ISCAN (1)
SCAN&SYSNDX SCANL (1)
         LTR   15,15
         BC    8,END&SYSNDX
DEL&SYSNDX DEL (1),FREE=NO
         O     15,=XL4'80000000'
        FSPACE (1),A=(15)
         SCANL (1)
         LTR   15,15
         BC    7,DEL&SYSNDX
GSP&SYSNDX GSPACE (1)
         LTR   15,15
         BC    10,FIN&SYSNDX
LWR&SYSNDX EQU 1
         USING IGARPTH,LWR&SYSNDX
         AH    15,OFFSET
         DROP  LWR&SYSNDX
         SRCH  (1),SARG=(15)
         INS   (1),MOVE=NO
         BC    15,GSP&SYSNDX
FIN&SYSNDX EQU *
        FSPACE (1),A=(15)
END&SYSNDX EQU *
         MEND
./ ADD NAME=TSTCBD
*        %GOTO PLSSTCB; /*                                       X03039
         MACRO
         TSTCBD
.*A-000000-999999                                              @X31X8X0
.*D400000,640000                                                 S22027
.*A610000-660000                                                 S22027
.*C880000                                                        X03039
.*A890000-970000                                                 X03039
IEDQSTCB DSECT .                  SUBTASK CONTROL BLOCK
         SPACE 2
         SPACE 1
STCBVTO  DS    XL1 .         ACTIVATION KEY          + 0
STCBINDX DS    XL1 .         INDEX TO COMMON BUFFER DATA AREA    S22027
STCBTCIN DS    H .           TTCIN OF DESTINATION TERMINAL       S22027
STCBPRI  DS    XL1 .         PRIORITY                + 4
STCBLINK DS    XL3 .         LINK FIELD              + 5
         MEND , */                                               X03039
*%PLSSTCB: ;                            /* STCB DSECT          X03039*/
*DECLARE                                /*                     X03039*/
*  1 IEDQSTCB BDY(WORD) BASED,          /*                     X03039*/
*   2 STCBVTO  CHAR(1),                 /* ACTIVATION KEY      X03039*/
*   2 STCBINDX CHAR(1),                 /* INDEX TO COMMON     X03039*/
*                                       /* BUFFER DATA AREA    X03039*/
*   2 STCBTCIN FIXED(15),               /* TTCIN OF DEST TRM   X03039*/
*   2 STCBPRI  CHAR(1),                 /* PRIORITY            X03039*/
*   2 STCBLINK PTR(24);                 /* LINK FIELD          X03039*/
./ ADD NAME=TSTCWORK
         MACRO
         TSTCWORK
         SPACE 1
***********************************************************************
*                                                                     *
*        THIS MACRO MAPS THE TEST COMMAND WORK AREA.                  *
*                                                                     *
* STATUS -- VERSION NO. 01 - OS/VS2 RELEASE NO. 02                    *
*                                                                     *
* CHANGE LEVEL -- 01 - DATE 11/09/72                                  *
*                                                                     *
***********************************************************************
         SPACE 1
TSTCWORK DSECT
CWORKCVT DS    XL80 -         FOR EXCLUSIVE USE OF IKJEGCVT.
CWORKCMD DS    XL240 -        FOR USE OF TEST SUBCOMMANDS.
CWORKIO  DS    XL48 -         FOR EXCLUSIVE USE OF IKJEGIO.
CWORKATN DS    XL128 -        FOR EXCLUSIVE USE OF IKJEGATN.
CWORKSTA DS    XL48 -         FOR EXCLUSIVE USE OF IKJEGSTA.
CWORKSYM DS    XL32 -         FOR EXCLUSIVE USE OF IKJEGSYM.
CWORKSRH DS    XL32 -         FOR EXCLUSIVE USE OF IKJEGSRH.
CWORKLDF EQU   CWORKIO-64 -   FOR IKJEGLDF(ONLY IKJEGAT MAY NOT USE).
CWORKLEN EQU   *-TSTCWORK -   LENGTH OF DSECT.
         MEND
./ ADD NAME=TSTMHD
*        %GOTO STMHPLS;                 /* BILINGUAL HEADER
         MACRO
         TSTMHD &DSECT=YES
.*A000000-999999                                               @Y17XAXF
         AIF   ('&DSECT' EQ 'YES').STMH001   IS DSECT STATEMENT REQ?
IEDSTMH  DS    0F
         AGO   .STMH002
.STMH001 ANOP
IEDSTMH  DSECT
         DS    0F
.STMH002 ANOP
*
*        DSECT FOR STARTMH GENERATION
*
STMHALT  DS    AL4 .               ALTERNATE MH ADDR
STMHFLG2 DS    XL1 .               MH FLAGS
STMHLCIN EQU   X'80' .                  LINE CONTROL IN
STMHCONT EQU   X'40' .                  CONT= SPECIFIED
STMHSTC  EQU   X'20' .                  CONT= OR STOP= SPECIFIED OPTION
STMHCONV EQU   X'10' .                  CONV= SPECIFIED
STMHCOP  EQU   X'08' .                  CONV= SPECIFIED OPTION FIELD
STMHLOG  EQU   X'04' .                  LOGICAL= SPECIFIED
STMHLOP  EQU   X'02' .                  LOGICAL= SPECIFIED 2ND OPTION
STMHTSFG EQU   X'01' .                  TSO FLAG
STMHTSO  DS    AL3 .               TSO REENTRY ADDR
STMHLENG DS    AL1 .               PARAMETER LIST LENGTH
STMHSTCB DS    AL3 .               STCB ADDRESS
STMHAEIX DS    XL1 .               OFFSET TO LOCOPT IF REQ
STMHLMDO EQU   X'02' .              LMD SPECIFIED IN OPTION
STMHLMD  EQU   X'01' .              LMD SPECIFIED
STMHROUT DS    AL3 .               ADDRESS OF STARTMH STCB
STMHLOPO DS    AL1 .               POINTER TO LOGICAL= OPTION
STMHLMOP DS    0AL1 .              OPTION FIELD INDEX
STMHCOPO DS    AL1 .               POINTER TO CONV= OPTION
STMHOPT  EQU   * .                 START OF OPTION POINTERS
STMHLEN  EQU   *-IEDSTMH .         LENGTH OF DSECT
         MEND
*                                                                    */
*%STMHPLS:;
*        %IF STMHLEN^=''                /* IS DCL STATEMENT REQUIRED */
*          %THEN %GOTO STMHPLS1;
*DECLARE
*  1 IEDSTMH  BASED BDY(WORD),
*        %GOTO STMHPLS2;
*%STMHPLS1:;
*    2 IEDSTMH  CHAR(9) BDY(WORD),
*%STMHPLS2:;
*/*                                                                  */
*/*      DSECT FOR STARTMH GENERATION                                */
*/*                                                                  */
*      3 STMHALT  PTR(31),              /* ALTENTAE MH ADDR          */
*      3 STMHFLG2 CHAR(1),              /* MH FLAGS                  */
*        4 STMHLCIN BIT(1),             /*   LINE CONTROL IN         */
*        4 STMHCONT BIT(1),             /*   CONT= SPECIFIED         */
*        4 STMHSTC  BIT(1),             /*   CONT= OR STOP= SPEC OPT */
*        4 STMHCONV BIT(1),             /*   CONV= SPECIFIED         */
*        4 STMHCOP  BIT(1),             /*   CONV= SPECIFIED OPT FLD */
*        4 STMHLOG  BIT(1),             /*   LOGICAL= SPECIFIED      */
*        4 STMHLOP  BIT(1),             /*   LOGICAL= SPEC 2ND OPTION*/
*        4 STMHTSFG BIT(1),             /*   TSO FLAG                */
*      3 STMHTSO PTR(24),               /* TSO REENTRY ADDR          */
*      3 STMHLENG CHAR(1),              /* PARAMETER LIST LENGTH     */
*      3 STMHSTCB PTR(24),              /* STCB ADDRESS              */
*      3 STMHAEIX BIT(8),               /* OFFSET TO LOCOPT IF REQ   */
*        4 *        BIT(6),             /*  RESERVED                 */
*        4 STMHLMDO BIT(1),             /*  LMD SPEC IF OPTION       */
*        4 STMHLMD  BIT(1),             /*  LMD SPECIFIED            */
*      3 STMHROUT PTR(24),              /* ADDR OF STARTMH STCB      */
*      3 STMHLOPO PTR(8),               /* PTR TO LOGICAL OPTION     */
*      3 STMHLMOP PTR(8),               /* OPTION FIELD INDEX        */
*        4 STMHCOPO PTR(8),             /*  PTR TO CONV= OPT         */
*      3 STMHOPT CHAR(0);               /* START OF OPTION FLD PTRS  */
* %STMHLEN='LENGTH(IEDSTMH)';           /* LEN OF DSECT              */
./ ADD NAME=TSTMHND
*        %GOTO STMHNPLS;                /* BILINGUAL HEADER
         MACRO
         TSTMHND
.*A000000-999999                                               @Y17XAXF
IEDNSTMH DSECT
         DS    0F
*
*        DSECT FOR PREFIX OF STARTMH GENERATION
*
STMHUNBR DS    A .                 VCON FOR IEDUNBND
STMHUBXT DS    A .                 ADDR OF USERS UNBIND EXIT
STMHFLG0 DS    XL1 .               MH FLAGS
STMHDFCP EQU   X'80' .                  PARTIAL DFC RESPONSE SUPPORT
STMHDFC  EQU   X'40' .                  FULL DFC RESPONSE SUPPORT
STMHUNBD EQU   X'20'                    UNBIND EXIT OPERAND SPECIFIED
*        EQU   X'10' THRU X'01' .       RESERVED
STMHBEXT DS    XL3 .               BIND EXIT ADDR
STMHNLEN EQU   *-IEDNSTMH .        LEN OF MH PREFIX
         MEND
*        */
*%STMHNPLS:;
*        %IF STMH9999^=','              /* DECIDE IF CONCATENATION   */
*            %THEN %STMH9999=';';       /*   IS REQUESTED            */
*DECLARE
*  1 IEDNSTMH BASED BDY(WORD),
*/*                                                                  */
*/*      DSECT FOR PREFIX OF STARTMH GENERATION                      */
*/*                                                                  */
*    2 STMHUNBR PTR(31),                /* VCON TO IEDUNBND          */
*    2 STMHUBXT PTR(31),                /* ADDR OF USERS UNBIND EXIT */
*    2 STMHFLG0 CHAR(1),                /* MH FLAGS                  */
*      3 STMHDFCP BIT(1),               /*   PARTIAL DFC RESPONSE SUP*/
*      3 STMHDFC  BIT(1),               /*   FULL DFC RESPONSE SUP   */
*      3 STMHUNBD BIT(1),               /*   UNBIND EXIT OPERAND
*                                             SPECIFIED              */
*      3 *        BIT(5),               /*   RESERVED                */
*
*    2 STMHBEXT PTR(24) STMH9999        /* BIND EXIT ADDR            */
* %STMHNLEN='LENGTH(IEDNSTMH)';         /* LENGTH OF MH PREFIX       */
./ ADD NAME=TTCBD
         MACRO
         TTCBD
         SPACE
IEDQTCB  DSECT
TCBRBP   DS    F .                      ADDRESS OF THE RB
TCBPIE   DS    F .                      ADDRESS OF PROGRAM INTERRUPT
*                                         ELEMENT
TCBDEB   DS    F .                      ADDRESS OF THE DEB QUEUE
TCBTIO   DS    F .                      ADDRESS OF TASK I/O TABLE
TCBCMP   DS    F .                      TASK COMPLETION CODE
TCBFLTRN DS    0FL1
*
*                       BIT DEFINITIONS
*
TCBTCPP  EQU   X'08' .                  TCAM POST-PENDING BIT(RORI)
*
TCBTRN   DS    F .                      TESTRAN FIELD
TCBNROC  DS    CL1 .                    JOB STEP TCB
TCBMSS   DS    AL3 .                    ADDRESS OF DATA BLOCK
TCBPKF   DS    CL1 .                    STORAGE PROTECTION KEY
TCBFLGS  DS    CL5 .                    FLAG BYTES
*
*                       BIT DEFINITIONS (5TH BYTE)
*
TCBPNDSP EQU   X'01' .                  PRIMARY NON-DISPATCHABLE BIT
TCBLMP   DS    CL1 .                    LIMIT PRIORITY
TCBDSP   DS    CL1 .                    DISPATCHING PRIORITY
TCBLLS   DS    F .                      ADDRESS OF THE LOAD LIST
*                                         ELEMENT
TCBJLB   DS    F .                      ADDRESS OF JOBLIB DCB
TCBJPQ   DS    A .                      ADDRESS OF CDE
TCBGRS   DS    16F .                    GENERAL REGS SAVEAREA
TCBQEL   DS    X .                      MVT - ENQUEUE COUNT
TCBFSA   DS    AL3 .                    ADDR OF 1ST PROG SAVEAREA
TCBTCB   DS    A .                      ADDR OF NEXT LOWER PRIORITY TCB
TCBTME   DS    A .                      ADDR OF TIMER ELEMENT
TCBJSTCB DS    A .                      MVT-ADDR OF 1ST TCB FOR TOP STP
TCBNTC   DS    A .                      MVT-PREVIOUS TCB ON SUBTASK Q
TCBOTC   DS    A .                      MVT-ORIGINATING TCB ADDR
TCBLTC   DS    A .                      MVT-LAST TCB ON SUBTASK Q
TCBIQE   DS    A .                      MVT-IQE ADDRESS
TCBECB   DS    A .                      MVT-ECB ADDR
         DS    A .                      RESERVED
TCBPQE   DS    A .                      MVT-REGION DUMMY PQE-8
TCBAQE   DS    A .                      MVT-ALLOCATED Q ELEMENT ADDR
TCBNSTAE DS    A .                      STAE FLAGS ADDR
TCBTCT   DS    A .                      TIMING CONTROL TABLE ADDR
TCBUSER  DS    A .                      USER FIELD
TCBDAR   DS    X .                      DAR FLAGS
TCBNDSP  DS    3X .                     SECONDARY NON-DISPATCHABLE BITS
*
TCBNDSP1 EQU   TCBNDSP .                  FIRST BYTE NON-DISPATCH BITS
TCBTPSP  EQU   X'04' .                      TCAM NON-DISPATCHABLE
TCBNDSP2 EQU   TCBNDSP+1 .                2ND BYTE - RESERVED
TCBNDSP3 EQU   TCBNDSP+2 .                3RD BYTE - RESERVED
         MEND
./ ADD NAME=TTCDSD
*        %GOTO PLSTCDS;           /* BILINGUAL HEADER
         MACRO
         TTCDSD
         SPACE
.* CHANGE ACTIVITY AS FOLLOWS:
.*A000000-999999                                               @Y17XAX0
         SPACE
IEDTCDSD DSECT
*
*        3705 RESOURCE CDS MAP
*
TCDSUCB  DS    CL4 .              CHANNEL ADDRESS
TCDSFLG1 DS    XL1 .              TERMINAL FLAGS
TCDSFEAT DS    XL1 .              FEATURE FLAG
TCDSASCI EQU   X'80' .            ASCII CODE
TCDSCLS  DS    XL1 .              CLASS
TCDSCL37 EQU   X'44' .            3705 RESOURCE CLASS
TCDSTYP  DS    XL1 .              TYPE
TCDSTY37 EQU   X'20' .            3705 RESOURCE TYPE
TCDSCNT  DS    XL1 .              CDS BYTE COUNT
TCDSSNA  EQU   X'18' .            CDS BYTE COUNT FOR LU
TCDSLINK EQU   X'24' .            CDS BYTE COUNT FOR LINK
TCDSFLG2 DS    XL1 .              FLAGS
TCDSSEC  EQU   X'0A'              SECURITY FLAGS
         DS    XL2 .              RESERVED
TCDSNAM  DS    CL8 .              3705 RESOURCE SYMBOLIC NAME
         DS    0XL4 .             RESERVED
*        END OF 3767/3770 CDS MAP
*        LINE CDS MAPPING CONTINUES BELOW
TCDSFXAR DS    XL1 .              OLTT CONTROL PROGRAM FIXED AREA LEN
TCDSFXLN EQU   X'10' .            LENGTH
TCDSFLG3 DS    XL1 .              RESERVED
TCDSFLG4 DS    XL1 .              RESERVED
         DS    XL1 .              RESERVED
TCDSDAF  DS    XL2 .              NETWORK ADDRESS
         DS    XL2 .              RESERVED
TCDSDEVT DS    XL1 .              DEVICE TYPE
TCDSDVT  EQU   X'E0' .            LINE TYPE
TCDSLNC  DS    XL1 .              LINE CONTROL
TCDSLNCD DS    XL1 .              LINE CODE
         DS    XL5 .              RESERVED
         SPACE 2
         MEND                     */
*%PLSTCDS : ;
*DECLARE
*  1 IEDTCDSD BDY(BYTE) BASED,
*/*                                                                  */
*/*      3705 RESOURCE CDS MAP                                       */
*/*                                                                  */
*   3 TCDSUCB CHAR(4),            /* CHANNEL ADDRESS                 */
*   3 TCDSFLG1 CHAR(1),           /* TERMINAL FLAGS                  */
*   3 TCDSFEAT CHAR(1),           /* FEATURE FLAG                    */
*   3 TCDSCLS CHAR(1),            /* CLASS                           */
*   3 TCDSTYP CHAR(1),            /* TYPE                            */
*   3 TCDSCNT CHAR(1),            /* CDS BYTE COUNT                  */
*   3 TCDSFLG2 CHAR(1),           /* FLAGS                           */
*   3 * CHAR(2),                  /* RESERVED                        */
*   3 TCDSNAM CHAR(8),            /* 3705 RESOURCE SYMBOLIC NAME     */
*   3 * CHAR(4),                  /* RESERVED                        */
*/*      END OF 3767/3770 CDS MAP                                    */
*/*      LINE CDS MAPPING CONTINUES BELOW                            */
*    4 TCDSFXAR CHAR(1),          /* OLTT CONTROL PROGRAM FIXED AREA
*                                    LENGTH                          */
*    4 TCDSFLG3 CHAR(1),          /* RESERVED                        */
*    4 TCDSFLG4 CHAR(1),          /* RESERVED                        */
*    4 * CHAR(1),                 /* RESERVED                        */
*   3 TCDSDAF CHAR(2),            /* NETWORK ADDRESS                 */
*   3 * CHAR(2),                  /* RESERVED                        */
*   3 TCDSDEVT CHAR(1),           /* DEVICE TYPE                     */
*   3 TCDSLNC CHAR(1),            /* LINE CODE                       */
*   3 TCDSLNCD CHAR(1),           /* LINE CODE                       */
*   3 * CHAR(5);                  /* RESERVED                        */
*DECLARE TCDSASCI BIT(8) CONSTANT('80'X); /*ASCII CODE               */
*DECLARE TCDSCL37 BIT(8) CONSTANT('44'X); /* 3705 RESOURCE CLASS     */
*DECLARE TCDSTY37 BIT(8) CONSTANT('20'X); /* 3705 RESOURCE TYPE      */
*DECLARE TCDSLINK BIT(8) CONSTANT('24'); /* LINK CDS BYTE COUNT      */
*DECLARE TCDSSNA BIT(8) CONSTANT('18'X); /* LU CDS BYTE COUNT        */
*DECLARE TCDSSEC BIT(8) CONSTANT('0A'X); /* SECURITY FLAGS           */
*DECLARE TCDSFXLN BIT(8) CONSTANT('10'X); /* FIXED AREA LENGTH       */
*DECLARE TCDSDVT BIT(8) CONSTANT('E0'X); /* LINE TYPE                */
*%TCDSEND: ;
./ ADD NAME=TTCXD
*
*        %GOTO TCXL1; /*
         MACRO
         TTCXD
IEDQTCX  DSECT
         SPACE 1 */
*%TCXL1  : ;
*
*/********************************************************************/
*/*                                                                  */
*/*            TCAM'S COMMUNICATION VECTOR TABLE EXTENSION           */
*/*                                                                  */
*/* OS/VS2 , TCAM LEVEL 9, 9/22/75                           @Z40X9NG*/
*/*                                                                  */
*/* METHOD OF ACCESS                                                 */
*/*      BAL - USING ON TCX GIVES ADDRESSABILITY FOR ALL SYMBOLS.    */
*/*                                                                  */
*/*      PL/S - DCL TCXPTR PTR                                       */
*/*                                                                  */
*/*C040000,152000,340000,470000                              @ZA00227*/
*/*C568000,768000,902400                                     @ZA00227*/
*/*A154000,264200-264800,470200-471800                       @ZA00227*/
*/*A570000,701200-701800,902500-903000                       @ZA00227*/
*/*C255000,462000,687000,890000                              @ZA02601*/
*/*A472000,903200                                            @Z40X9NG*/
*/*C040000,265000,471800,702000,903000                       @Z40X9NG*/
*/*A151500,567500                                            @ZA07083*/
*/*C240000,265800,703600,903500                              @G36XRXG*/
*/*A903650,903700,475400,475600,703650-703700,265850-265870  @G36XRXG*/
*/*A903710,903720,475700,475800,265880,265890                @G36XRXG*/
*/* ******************************************************************/
*%GOTO TCXL2; /*
         SPACE 1
TCXAVT   DS    A                        ADDRESS OF TCAM'S AVT
TCXATTLN DS    0X                       LENGTH OF ATTENTION HANDLER
TCXATTEN DS    A                        ADDRESS OF TCAM'S ATTENTION RTN
TCXTCB   DS    A                        ADDRESS OF TCAM'S TCB
TCXDISP  DS    A                        ADDRESS OF TCAM'S DISPATCHER
TCXPASWD DS    CL8' '                   CONTAINS THE PASSWORD IF
*                                       SPECIFIED ON INTRO (INITIALIZED
*                                       BY LINE GROUP OPEN).
TCXREADY DS    A                        ASYNCHRONOUS READY QUEUE
TCXASCB  DS    A                        ADDRESS OF TCAM'S ADDRESS SPACE
*                                       CONTROL BLOCK
TCXASID  DS    AL2                      TCAM'S ADDRESS SPACE ID
TCXFLAG1 DS AL1                         FIRST FLAG BYTE
*                  TCXFLAG1 BIT DEFINITIONS
TCXAUTH  EQU   X'80'                    APPL PGMS REQUIRE AUTHORIZATION
TCXMCPCD EQU   X'40'                    TCAM MCP IS TERMINATING
TCXRTM   EQU   X'20'                    TCAM'S RTM HAS BEEN CALLED
TCXAPPL  EQU   X'10'                    TCAM'S RTM IS WAITING FOR
*                                       APPLICATION PROGRAMS TO
*                                       TERMINATE
TCXAPDMP EQU   X'04'                    APPL DUMP REQUESTED    @ZA07083
TCXCC3TS DS    AL1                      TEST AND SET LOCK FOR  @ZA00227
*                                       CONDITION CODE 3       @ZA00227
TCXRPT   DS    A                        ADDRESS OF TIOC REFERENCE
*                                       POINTER TABLE
TCXTSI   DS    A                        ADDRESS OF TSINPUT QCB
TCXGETQ  DS    A                        ADDRESS OF QCB FOR GET/READ MCP
*                                       ROUTINE
TCXPUTQ  DS    A                        ADDRESS OF QCB FOR PUT/WRITE
*                                       MCP ROUTINE
TCXPNTQ  DS    A                        ADDRESS OF QCB FOR POINT MCP
*                                       ROUTINE
TCXOCQ   DS    A                        ADDRESS OF QCB FOR OPEN/CLOSE
*                                       MCP ROUTINE
TCXQRQ   DS    A                        ADDRESS OF QCB FOR QRESET
*                                       MCP ROUTINE.
TCXPEWAC DS    A                        ADDRESS OF FIRST PEWA IN CHAIN
TCXPEBC  DS    A                        ADDRESS OF FIRST PEB IN CHAIN
TCXAIBC  DS    A                        ADDRESS OF FIRST AIB IN CHAIN
TCXSZAIB DS    AL2                      SIZE OF AIB
TCXNCKPR DS    AL1                      NUMBER OF A.P. QUEUES FOR CKREQ
TCXCKPM  DS    AL1                      CHECK POINT IN MCP
TCXTOTE  DS    0XL1                     NUMBER OF TOTE ENTRIES - SET
*                                       BY IGG01932
TCXBUFA  DS    A                        ADDRESS OF FIXED CORE FOR
*                                       TRACE,BUFFERS, AND CPBS.
         DS    A                        LNGTH OF FIXED CORE FOR@G36XRXG
*                                       TRACE, BUFFERS, AND CPBS.
TCXAVAIL DS    A                        ADDRESS OF CORE AVAILABLE FOR
*                                       LCB(S)/SCB(S).
TCXCOMPT DS    A                        ADDRESS OF CSCB FOR MCP
TCXBIT1  DS    X                        AVTBIT1
TCXSCBSZ DS    X                        STATION CONTROL BLOCK  @ZA02601
*                                       SIZE FOR RTM           @ZA02601
TCXBITS  DS    2X                       RESERVED               @ZA02601
TCXPLCB  DS    A                        ADDRESS OF TABLE OF 3705 PLCB
*                                       ADDRESSES
TCXDSAVE DS    2A                       ADDRESS OF DISABLED SAVE AREA
*                                       USED BY THE PCI APPENDAGE
TCXSATTN DS    A                        SAVE AREA FOR ATTENTION TABLE
*                                       ROUTINE ADDRESS MODIFIED BY
*                                       TCAM OPEN
TCXERPSV DS    3F                       ERP REGISTER SAVE AREA @ZA00227
TCXERPPM DS    F                        PARM AREA FOR IECVIOPM @ZA00227
TCXESAVE DS    18F                      SAVE AREA FOR LINKAGE  @ZA00227
*                                       TO IECVIOPM FROM ERP   @ZA00227
TCXSIOSB DS    A                        CHAIN OF SRB/IOSB'S    @Z40X9NG
*                                       FOR DISK QUEUES        @Z40X9NG
TCXSRBS  DS    A                        POINTER TO FIRST BLOCK @Z40X9NG
*                                       OF SRB'S FOR POST      @Z40X9NG
TCXABEPL DS    F                        ABEND PARM LIST        @G36XRXG
TCXACTE8 DS    0AL1                     ACTION CODE FOR IEDQE8 @G36XRXG
TCXQE8   DS    A                        KEY 0 CODE ADDRESS FOR @G36XRXG
*                                       IEDQE8                 @G36XRXG
TCXNCPIO DS    A                        PTR TO CHAIN OF ALL    @G36XRXG
*                                       3705 SRB/IOSB PAIRS    @G36XRXG
TCXEND   EQU   *                        END OF TCX
TCXSIZE  EQU   TCXEND-IEDQTCX           SIZE OF TCX
*
***********************************************************************
*   0  *                               TCXAVT                         *
***********************************************************************
*   4  *                               TCXATTEN                       *
***********************************************************************
*   8  *                               TCXTCB                         *
***********************************************************************
*  12  *                               TCXDISP                        *
***********************************************************************
*  16  *                               TCXPASWD                       *
*      *                                                              *
***********************************************************************
*  24  *                               TCXREADY                       *
***********************************************************************
*  28  *                               TCXASCB                        *
***********************************************************************
*  32  *   TCXASID                     *   TCXFLAG1    *   TCXCC3TS   *
***********************************************************************
*  36  *                               TCXRPT                         *
***********************************************************************
*  40  *                               TCXTSI                         *
***********************************************************************
*  44  *                               TCXGETQ                        *
***********************************************************************
*  48  *                               TCXPUTQ                        *
***********************************************************************
*  52  *                               TCXPNTQ                        *
***********************************************************************
*  56  *                               TCXOCQ                         *
***********************************************************************
*  60  *                               TCXQRQ                         *
***********************************************************************
*  64  *                               TCXPEWAC                       *
***********************************************************************
*  68  *                               TCXPEBC                        *
***********************************************************************
*  72  *                               TCXAIBC                        *
***********************************************************************
*  76  *   TCXSZAIB                    *   TCXNCKPR    *   TCXKPM     *
***********************************************************************
*  80  *                               TCXBUFA                        *
***********************************************************************
*  84  *                               TCXBUFL                        *
***********************************************************************
*  88  *                               TCXAVAIL                       *
***********************************************************************
*  92  *                               TCXCOMPT                       *
***********************************************************************
*  96  *   TCXBIT1   *   TCXSCBSZ  *   RESERVED                @ZA02601
***********************************************************************
* 100  *                               TCXPLCB                        *
***********************************************************************
* 104  *                               TCXDSAVE                       *
*      *                                                              *
***********************************************************************
* 112  *                               TCXSATTN                       *
***********************************************************************
* 116  *                               TCXERPSV                       *
*      *                                                              *
***********************************************************************
* 128  *                               TCXERPPM                       *
***********************************************************************
* 132  *                               TCXESAVE                       *
*      *                                                              *
*      *                                                              *
***********************************************************************
* 204  *                               TCXSIOSB                       *
***********************************************************************
* 208  *                               TCXSRBS                        *
***********************************************************************
* 212  *                               TCXABEPL                       *
***********************************************************************
* 216  *                               TCXQE8                         *
***********************************************************************
* 220  *                               TCXCNPIO                       *
***********************************************************************
         MEND
*
* */
*%TCXL2  : ;
*
*        DCL 1  IEDQTCXD BASED(TCXPTR) BDY(DWORD),
*             2 TCXAVT   FIXED(31),    /* ADDRESS OF TCAM'S AVT      */
*             2 TCXATTEN FIXED(31),    /* ADDRESS OF TCAM'S ATTENTION*/
*                                      /* ROUTINE                    */
*              3 TCXATTLN PTR(8),      /* LENGTH OF ATTN HANDLER     */
*             2 TCXTCB   FIXED(31),    /* ADDDRESS OF TCAM'S TCB     */
*             2 TCXDISP  FIXED(31),    /* ADDRESS OF TCAM'S          */
*                                      /* DISPATCHER                 */
*             2 TCXPASWD CHAR(8),      /* CONTAINS THE PASSWORD IF   */
*                                      /* SPECIFIED ON INTRO         */
*                                      /* (INITIALIZED BY LINE GROUP */
*                                      /* OPEN).                     */
*             2 TCXREADY FIXED(31),    /* ASYNCHRONOUS READY QUEUE   */
*             2 TCXASCB  FIXED(31),    /* ADDRESS OF TCAM'S ADDRESS  */
*                                      /* SPACE CONTROL BLOCK        */
*             2 TCXASID  FIXED(15),    /* TCAM'S ADDRESS SPACE ID    */
*             2 TCXFLAG1 PTR(8),       /* FIRST FLAG BYTE            */
*              3 TCXAUTH BIT(1),       /* APPLICATION PROGRAMS       */
*                                      /* REQUIRE AUTHORIZATION      */
*              3 TCXMCPCD BIT(1),      /* TCAM MCP IS TERMINATING    */
*              3 TCXRTM  BIT(1),       /* TCAM'S RTM HAS BEEN CALLED */
*              3 TCXAPPL BIT(1),       /* TCAM'S RTM IS WAITING      */
*                                      /* FOR APPLICATION PROGRAMS   */
*                                      /* TO TERMINATE               */
*              3 TCXAPDMP BIT(1),      /* APPL DUMP REQUESTED@ZA07083*/
*             2 TCXCC3TS PTR(8),       /* TEST AND SET LOCK FOR
*                                         CONDITION CODE 3   @ZA00227*/
*             2 TCXRPT   FIXED(31),    /* ADDRESS OF TIOC REFERENCE  */
*                                      /* POINTER TABLE              */
*             2 TCXTSI   FIXED(31),    /* ADDRESS OF TSINPUT QCB     */
*             2 TCXGETQ  FIXED(31),    /* ADDRESS OF QCB FOR GET/READ*/
*                                      /* MCP ROUTINE                */
*             2 TCXPUTQ  FIXED(31),    /* ADDRESS OF QCB FOR PUT/    */
*                                      /* WRITE MCP ROUTINE          */
*             2 TCXPNTQ  FIXED(31),    /* ADDRESS OF QCB FOR POINT   */
*                                      /* MCP ROUTINE                */
*             2 TCXOCQ   FIXED(31),    /* ADDRESS OF QCB FOR OPEN/   */
*                                      /* CLOSE MCP ROUTINE          */
*             2 TCXQRQ   FIXED(31),     /* ADDRESS OF QCB FOR QRESET */
*                                       /* MCP ROUTINE               */
*             2 TCXPEWAC FIXED(31),    /* ADDRESS OF FIRST PEWA IN   */
*                                      /* CHAIN                      */
*             2 TCXPEBC  FIXED(31),    /* ADDRESS OF FIRST PEB IN    */
*                                      /* CHAIN                      */
*             2 TCXAIBC  FIXED(31),    /* ADDRESS OF FIRST AIB IN    */
*                                      /* CHAIN                      */
*             2 TCXSZAIB FIXED(15),    /* SIZE OF AIB                */
*             2 TCXNCKPR PTR(8),       /* NUMBER OF A.P. QUEUES FOR  */
*                                      /* CHECK REQUESTS             */
*             2 TCXCKPM  PTR(8),       /* CHECK POINT IN MCP         */
*             2 TCXBUFA  FIXED(31),    /* ADDRESS OF FIXED CORE FOR  */
*                                      /* TRACE, BUFFERS, CPBS.      */
*              3 TCXTOTE  PTR(8),      /* NUMBER OF TOTE ENTRIES -   */
*                                      /* SET BY IGG01932            */
*             2 TCXBUFL  FIXED(31),    /* LENGTH OF FIXED CORE FOR   */
*                                      /* TRACE, BUFFERS, CPBS.      */
*             2 TCXAVAIL FIXED(31),    /* ADDRESS OF CORE AVAILABLE  */
*                                      /* FOR LCB(S)/SCB(S).         */
*             2 TCXCOMPT FIXED(31),    /* ADDRESS OF CSCB FOR MCP    */
*             2 TCXBIT1  PTR(8),       /* AVTBIT1                    */
*              2 TCXSCBSZ PTR(8),       /* SCB SIZE          @ZA02601*/
*              2 TCXBITS  PTR(16),      /* RESERVED          @ZA02601*/
*             2 TCXPLCB  FIXED(31),    /* ADDRESS OF TABLE OF 3705   */
*                                      /* PLCB ADDRESSES             */
*             2 TCXDSAVE,              /* ADDRESS OF DISABLED SAVE   */
*              3 * FIXED(31),          /*  AREA USED BY THE PCI      */
*              3 * FIXED(31),          /*  APPENDAGE                 */
*             2 TCXSATTN FIXED(31),    /* SAVE AREA FOR ATTENTION    */
*                                      /* TABLE ROUTINE ADDRESS      */
*                                      /* MODIFIED BY TCAM OPEM      */
*             2 TCXERPSV (3) FIXED(31), /* ERP SAVE AREA     @ZA00227*/
*             2 TCXERPPM FIXED(31),     /* IECVIOPM PARM AREA@ZA00227*/
*             2 TCXESAVE (18) FIXED(31), /* SAVE AREA FOR LINKAGE
*                                       TO IECVIOPM FROM ERP @ZA00227*/
*             2 TCXSIOSB PTR(31),      /* CHAIN OF SRB/IOSB'S  FOR
*                                         DISK QUEUES        @Z40X9NG*/
*             2 TCXSRBS PTR(31),       /* POINTER TO FIRST BLOCK OF
*                                         SRB'S FOR POST     @Z40X9NG*/
*             2 TCXABEPL FIXED(31),    /* ABEND PARM LIST    @G36XRXG*/
*             2 TCXQE8  PTR(31),       /* KEY 0 CODE ADDRESS FOR
*                                         IEDQE8             @G36XRXG*/
*               3 TCXACTE8 PTR(8),     /* ACTION CODE FOR IEDQE8
*                                                            @G36XRXG*/
*             2 TCXNCPIO PTR(31),      /* PTR TO CHAIN OF ALL 3705
*                                         SRB/IOSB PAIRS     @G36XRXG*/
* /*******************************************************************/
* /*  0 *                              TCXAVT                        */
* /*******************************************************************/
* /*  4 *                              TCXATTEN                      */
* /*******************************************************************/
* /*  8 *                              TCXTCB                        */
* /*******************************************************************/
* /* 12 *                              TCXDISP                       */
* /*******************************************************************/
* /* 16 *                              TCXPASWD                      */
* /*    *                                                            */
* /*******************************************************************/
* /* 24 *                              TCXREADY                      */
* /*******************************************************************/
* /* 28 *                              TCXASCB                       */
* /*******************************************************************/
* /* 32 *  TCXASID                     *   TCXFLAG1    *   TCXCC3TS  */
* /*******************************************************************/
* /* 36 *                              TCXRPT                        */
* /*******************************************************************/
* /* 40 *                              TCXTSI                        */
* /*******************************************************************/
* /* 44 *                              TCXGETQ                       */
* /*******************************************************************/
* /* 48 *                              TCXPUTQ                       */
* /*******************************************************************/
* /* 52 *                              TCXPNTQ                       */
* /*******************************************************************/
* /* 56 *                              TCXOCQ                        */
* /*******************************************************************/
* /* 60 *                              TCXQRQ                        */
* /*******************************************************************/
* /* 64 *                              TCXPEWAC                      */
* /*******************************************************************/
* /* 68 *                              TCXPEBC                       */
* /*******************************************************************/
* /* 72 *                              TCXAIBC                       */
* /*******************************************************************/
* /* 76 *  TCXSZAIB                    *   TCXNCKPR    *   TCXKPM    */
* /*******************************************************************/
* /* 80 *                              TCXBUFA                       */
* /*******************************************************************/
* /* 84 *                              TCXBUFL                       */
* /*******************************************************************/
* /* 88 *                              TCXAVAIL                      */
* /*******************************************************************/
* /* 92 *                              TCXCOMPT                      */
* /*******************************************************************/
* /* 96 *  TCXBIT1     *  TCXSCBSZ     *  RESERVED           @ZA02601*/
* /*******************************************************************/
* /*100 *                              TCXPLCB                       */
* /*******************************************************************/
* /*104 *                              TCXDSAVE                      */
* /*    *                                                            */
* /*******************************************************************/
* /*112 *                              TCXSATTN                      */
* /*******************************************************************/
* /*116 *                              TCXERPSV                      */
* /*******************************************************************/
* /*128 *                              TCXERPPM                      */
* /*******************************************************************/
* /*132 *                              TCXESAVE                      */
* /*******************************************************************/
* /*204 *                              TCXSIOSB                      */
* /*******************************************************************/
* /*208 *                              TCXSRBS                       */
* /*******************************************************************/
* /*212 *                              TCXABEPL                      */
* /*******************************************************************/
* /*216 *                              TCXQE8                        */
* /*******************************************************************/
* /*220 *                              TCXNCPIO                      */
* /*******************************************************************/
*             2 TCXEND CHAR(0);        /* END OF TCX                 */
./ ADD NAME=TTECB
         MACRO
         TTECB
         SPACE
*
*        TEST EVENT CONTROL BLOCK
*
TTECB    DSECT
TECBFDCT DS    XL1           NUMBER OF EVENT FIELDS
TECBFDLN DS    XL1           LENGTH OF EVENT FIELDS
TECBSNLN DS    H             LENGTH OF SENSE FIELD
TECBFLGS DS    BL1           FLAGS
TECBSNCT DS    XL1           NUMBER OF SENSE FIELDS
TECBSNOC DS    XL1           NUMBER OF SENSES OCCURRED
TECBEVOC DS    XL1           NUMBER OF EVENTS OCCURRED
TECBFD01 DS    F             1ST EVENT FIELD
         MEND
./ ADD NAME=TTHD
*        %GOTO THPLS;                   /* BILINGUAL HEADER
         MACRO
         TTHD
.*A000000-999999                                               @Y17XAXF
IEDTH    DSECT
*
*        DSECT FOR SNA TH
*
TTHBYTE0 DS    XL1 .               BYTE 0 OF TH
* TTHFTYPE     4 BITS                   FORMAT TYPE
TTHFID0  EQU   X'00' .                       FID0 1ST FOUR
TTHFID1  EQU   X'10' .                       FID1   BITS INDICATE
TTHBBIU  EQU   X'08' .                  BEGIN SEGMENT
TTHEBIU  EQU   X'04' .                  END SEGMENT
*        EQU   X'02' .                  RESERVED
TTHEFI   EQU   X'01' .                  EXPEDITED FLOW INDICATOR
TTHBYTE1 DS    CL1 .               RESERVED
TTHDAF   DS    AL2 .               DESTINATION ADDR FIELD
TTHOAF   DS    AL2 .               ORIGIN ADDRESS FIELD
TTHSNF   DS    0AL2 .              SEQUENCE NUMBER
TTHTAG   DS    0AL2 .              TAG INFORMATION
TTHTAG1  DS    XL1 .                    FIRST TAG BYTE
*TTHTAGS       BITS 0-3                   TAG ROUTING AND TYPE
* THE FOLLOWING VALUES CAN BE USED FOR PRF1TAGS
TTHOPCTL EQU   X'10' .                     OPER CONTROL
*              BITS 4-7 .                 RESERVED
TTHTAG2  DS    XL1 .                    SECOND TAG BYTE
* TP OP CODE VALUES USED FOR TTHTAG2 OR PRF1TAG2
TTHNULWR EQU   X'01' .                    NULL WRITE TRANS, ISSUED
*                                          BY DEBLOCK
TTHRESET EQU   X'02' .                    RESET ISSUED BY DEBLOCK
TTHLSTWR EQU   X'03' .                    LAST WRITE BDU OF A MESS
*                                          -ISSUED BY OUTPUT DATA
*                                          NIR GENERATOR
TTHABORT EQU   X'04' .                    STOP=YES DISCONNECT OR NULL
*                                          WRITE TRANS. ABORT ISSUED
*                                          BY CONTROL NIR GENERATOR
TTHWRSMI EQU   X'05' .                    WRITE SMI ISSUED BY TSO
*                                          SCHEDULER AND TSO MSGGEN
TTHDCF   DS    AL2 .               DATA COUNT FILED
*                                       (DOES NOT INCLUDE TH)
TTH0BYT0 EQU   X'0C' .             USED FOR FID0 TH INITIALIZATION
TTH0BYT1 EQU   X'00' .             USED FOR FID0 TH INITIALIZATION
*TTHTAG0       X'0000' .           USED WITH TTHTAG
TTHLEN   EQU   *-IEDTH .           LENGTH OF TH
         MEND
*        */
*%THPLS:;
*DECLARE
*  1 IEDTH  BASED BDY (BYTE),
*/*                                                                  */
*/*      DSECT FOR SNA TH                                            */
*/*                                                                  */
*    2 TTHBYTE0 BIT(8),                 /* BYTE0 OF TH               */
*      3 TTHFTYPE BIT(4),               /*   FORMAT TYPE             */
*      3 TTHBBIU  BIT(1),               /*   BEGIN SEGMENT           */
*      3 TTHEBIU  BIT(1),               /*   END SEGMENT             */
*      3 *        BIT(1),               /*   RESERVED                */
*      3 TTHEFI   BIT(1),               /*   EXPEDITED FLOW INDICATOR*/
*    2 TTHBYTE1 CHAR(1),                /* RESERVED                  */
*    2 TTHDAF   BIT(16),                /* DESTINATION ADDR FIELD    */
*    2 TTHOAF   BIT(16),                /* ORIGIN ADDRESS FIELD      */
*    2 TTHSNF   FIXED(16) BDY(BYTE),    /* SEQUENCE NUMBER           */
*      3 TTHTAG FIXED(16) BDY(BYTE),    /* TAG INFORMATION           */
*        4 TTHTAG1  BIT(8),             /*  FIRST TAG BYTE           */
*          5 TTHTAGS  BIT(4),           /*   TAG ROUTING AND TYPE    */
*          5 *        BIT(4),           /*   RESERVED                */
*        4 TTHTAG2  BIT(8),             /* SECOND TAG BYTE           */
*    2 TTHDCF   FIXED(16) BDY(BYTE);    /* DATA COUNT FIELD          */
*                                       /*    (DOES NOT INCLUDE TH)  */
* %TTHLEN='LENGTH(IEDTH)';              /* LENGTH OF TH              */
*/* TTHFTYPE VALUES                                                  */
* DCL TTHFID0  BIT(4) CONSTANT('0000'B);  /* FID0 INDICATOR          */
* DCL TTHFID1  BIT(4) CONSTANT('0001'B);  /* FID1 INDICATOR          */
*/* TTHTAGS OR PRF1TAGS VALUES                                       */
* DCL TTHOPCTL BIT(4) CONSTANT('0001'B);  /* OPER CONTROL            */
*/* TP OP CODE VALUES USED FOR TTHTAG2 OR PRF1TAG2                   */
* DCL TTHNULWR BIT(8) CONSTANT('01'X);    /* NULL WRITE TRANS.       */
*                                         /* ISSUED BY DEBLOCK       */
* DCL TTHRESET BIT(8) CONSTANT('02'X);    /* RESET ISSUED BY DEBLOCK */
* DCL TTHLSTWR BIT(8) CONSTANT('03'X);    /* LAST WRITE BDU OF A MES */
*                                         /* ISSUED BY OUTPUT DATA   */
*                                         /* NIR GENERATOR           */
* DCL TTHABORT BIT(8) CONSTANT('04'X);    /* STOP=YES DISCONNECT OR  */
*                                         /* NULL WRITE TRANS. ABORT */
*                                         /* ISSUED BY CONTROL NIR   */
*                                         /* GENERATOR               */
* DCL TTHWRSMI BIT(8) CONSTANT('05'X);    /* WRITE SMI ISSUED BY TSO */
*                                         /* SCHEDULR AND TSO MSGGEN */
*/* TH CONSTANTS                                                     */
* DCL TTH0BYT0 BIT(8) CONSTANT('0C'X);   /* USED FOR FID0 TH INITIAL */
* DCL TTH0BYT1 BIT(8) CONSTANT('00'X);   /* USED FOR FID0 TH INITIAL */
* DCL TTHTAG0  BIT(16) CONSTANT('0000'X); /* USED WITH TTHTAG        */
./ ADD NAME=TTNTD
*        %GOTO BSLTNT;                  /* BILINGUAL HEADER
         MACRO
         TTNTD
IEDQTNTD DSECT
.*       UPDATED TO BILINGUAL DSECT 09/16/72                     S22024
TNTCODE  DS    XL38 .                   TERMNAME TABLE CODE
TNTSRCHX DS    H .                      SEARCH EXTENT FACTOR
TNTENLEN DS    XL1 .                    LENGTH OF COMPARAND FIELD
TNTMIDEN DS    AL3 .                    ADDRESS OF MIDDLE ENTRY
TNTLEN   DS    H .                      TOTAL NUMBER OF ENTRIES
TNTDCODE DS    XL36 .                   DISABLED TERMNAME CODE
TNTFIRST EQU   *                        START OF FIRST ENTRY
TNTOFF   EQU   TNTFIRST-TNTCODE .       OFFSET TO FIRST ENTRY
IEDTNTA  DSECT                                                 @Y17XAXF
TNTTRMAD DS    AL3 .                    ADDR OF TTE            @Y17XAXF
*     HEX                                    DEC
*        *********************************
*      0 *             CODE              *    0
*        *                               *
*      *****                           *****
*
*      *****                           *****
*        *                               *
*        *               *****************
*     24 *               *   SRCHX       * 36
*        *********************************
*     28 * ENLEN *         MIDEN         * 40
*        *********************************
*     2C *    LEN        *     DCODE     * 44
*        *********************************
*     30 *                               * 48
*        *                               *
*      *****                           *****
*
*      *****                           *****
*     52 *               *   FIRST       * 80
*        *****************               *
*
         MEND  , */
*%BSLTNT:   ;
*DECLARE                                /* TERMINAL NAME TABLE       */
*  1 IEDQTNTD  BASED(IEDQNPTR),
*
*   2 IEDQTCDE     CHAR(38),            /* TERMNAME TABLE CODE       */
*
*   2 TNTSRCHX     FIXED(16),           /* SEARCH EXT FACTOR @Y17XAXF*/
*   2 TNTENLEN     FIXED(8),            /* LENGTH OF COMPARAND FIELD
*                                          IN AN ENTRY       @Y17XAXF*/
*   2 TNTMIDEN     PTR(24),             /* ADDRESS OF MIDDLE ENTRY   */
*   2 TNTLEN       FIXED(16),           /* TOTAL NO. ENTRIES @Y17XAXF*/
*
*   2 IEDQTDCE     CHAR(36);            /* DISABLED TERMNAME CODE    */
*DECLARE
*  TNTFIRST (*)    CHAR(1)  BASED(ADDR(IEDQTNTD) + LENGTH(IEDQTNTD));
*
*DECLARE TNTCODE  LABEL  BASED(ADDR(IEDQTCDE)); /* TERMNAME TABLE
*                                          CODE                      */
*DECLARE TNTDCODE LABEL  BASED(ADDR(IEDQTDCE)); /* DISABLED TERMNAME
*                                          CODE                      */
*DECLARE                                                   /*@Y17XAXF*/
*   1 IEDTNTA BASED BDY(BYTE),                             /*@Y17XAXF*/
*    2 TNTTRMAD   PTR(24) BDY(BYTE);    /* ADDR OF TTE       @Y17XAXF*/
*
*%DECLARE TNTOFF CHAR;                  /* OFFSET TO FIRST ENTRY     */
*%TNTOFF='LENGTH(IEDQTNTD)';            /* EQUALS LENGTH OF STRUCTURE*/
*
*/*      HEX                                               DEC       */
*/*           ********************************************           */
*/*       0   *                  CODE                    *   0       */
*/*         *****                                      *****         */
*/*                                                                  */
*/*         *****                                      *****         */
*/*           *                                          *           */
*/*                                ***********************           */
*/*      24   *                    *         SRCHX       *  36       */
*/*           ********************************************           */
*/*      28   *  ENLEN   *           MIDEN               *  40       */
*/*           ********************************************           */
*/*      2C   *       LEN          *         DCODE       *  44       */
*/*           ********************************************           */
*/*      30   *                                          *  48       */
*/*           *                                          *           */
*/*           *                                          *           */
*/*         *****                                      *****         */
*/*                                                                  */
*/*         *****                                      *****         */
*/*      52   *                    *         FIRST       *  80       */
*/*           **********************                     *           */
*/*                                                                  */
*/*                                                                  */
./ ADD NAME=TTPD
         MACRO
         TTPD
.*
.********   CHANGE ACTIVITY   **********
.*A660000                                                      @OY14057
*
TPWREOT  EQU   X'01' .                  EOT FOR SELECTION
*
TPOPEN   EQU   X'02' .                  OPEN TP OP CODE
*
TPWRPOLL EQU   X'03' .                  WRITE POLLING CHARCTERS
*
TPRDRESP EQU   X'04' .                  READ RESPONSE TO POLLING
*
TPWRPAD  EQU   X'05' .                  WRITE PADS
*
TPENABLE EQU   X'06' .                  ENABLE ON DIAL LINE
*
TPWRAD   EQU   X'07' .                  WRITE ADDRESSING SEQUENCE
*
TPRDRSPD EQU   X'08' .                  READ RESPONSE TO ADDRESSING
*
TPWREOA  EQU   X'09' .                  WRITE EOA SEQUENCE
*
TPRDRPEB EQU   X'0A' .                  READ RESPONSE TO EOB-NONBSC
*
TPWRCPU  EQU   X'0B' .                  WRITE CPU ID
*
TPRDENQ  EQU   X'0C' .                  READ ENQ
*
TPWRENQ  EQU   X'0D' .                  WRITE ENQ
*
TPRSPENQ EQU   X'0E' .                  READ RESPONSE TO ENQ
*
TPWRDLET EQU   X'0F' .                  WRITE DLE EOT
*
TPRDID   EQU   X'10' .                  READ ID
*
TPNULL   EQU   X'11' .                  NON READ WRITE CCW'S FOR
*                                         WHICH NO INTERRUPTED IS
*                                         ANTICIPATED
*
TPBREAK  EQU   X'12' .                 BREAK TP-CD
*
TPENQAD  EQU   X'13' .                  ENQ AFTER SELECTION RESPONSE
*
TPRDLC   EQU   X'14' .                  READ LCOUT
*
TPWRACK  EQU   X'15' .                  WRITE RESPONSE PRIOR TO TEXT
*
TPWRAKNK EQU   X'16' .                  WRITE RESPNSE
*
TPWRTONE EQU   X'17' .                  WRITE TONE WTTA BSC
*                                                                     *
TPRDIDNQ EQU   X'18' .                  BSC READ ID ENQ
*
TPRDIDAK EQU   X'1A' .                 BSC READ ID ACK
*
TPRESET  EQU   X'1C' .                  ABORT FOR SEND/RECEIVE
*
TPTWXID  EQU   X'1E' .                  READ TWX ID
*
TPBUFEOT EQU   X'20' .                  BUFF. TERM RESET AFTER BLK
*
TPCLOSE  EQU   X'22' .                  CLOSE SDR RECORDING
*
TPRSPAD  EQU   X'24' .                  RESET AFTER SLECTION
*
TPEAU    EQU   X'26'                    WRITE ERASE ALL        @OY14057
*                                         UNPROTECTED          @OY14057
*                                                              @OY14057
TPRSPMG  EQU   X'28'                    RD RESP MSGEN 2260R    @OY14057
*                                                              @OY14057
TPRS3270 EQU   X'2A'                    RESET AFTER 3270       @OY14057
*                                         POLLING ERROR        @OY14057
TPRDSKIP EQU   X'51' .                  READ SKIP LOOP
*
TPWRIDLE EQU   X'53' .                  WRITE IDLES LLOP
*
TPDLESTX EQU   X'57' .                  WRITE DLE STX
*
TPDLEETX EQU   X'59' .                  WRITE DLE ETB (ETX)
*
TPENQRSP EQU   X'5B' .                  ENQ IN RESPONSE TO TEXT
*
TPTEXT   EQU   X'FF' .                  TEXT CCW
         MEND
./ ADD NAME=TTRMD
*        %GOTO BSLTRM;                                               /*
         MACRO
         TTRMD
.* A000000-999999                                              @Y17XAXF
*A152000,154000
.******************* MICROFICHE FLAGS *********************** SUPT CODE
.*    THE FOLLOWING MICROFICHE FLAGS HAVE BEEN INCORPORATED IN @Y17XAXF
.*                                                               S22026
.*                                                              SA53610
.*                                                              SA67105
.*                                                              OY00539
.*                                                               X03039
.*                                                             @Z30X8XE
.*                                                             @X50X9XH
IEDTRM   DSECT                                                 @Y17XAXF
         DS    CL2                      NOT CREATED,DO NOT REF @Y17XAXF
IEDNTRM  EQU   *                        START OF NEG PREFIX    @Y17XAXF
TRMBYTE4 DS    0XL1 .                   STATUS BYTE            @Y17XAXF
         SPACE 2                                               @Y17XAXF
TRMPRE1  DS    0XL1 .                   STATUS BYTE (PRE-SNA)  @YM08120
TRMCONT  EQU   X'80' .                    CONTACT INIT SESS    @Y17XAXF
TRMSESSN EQU   X'40' .                    TERMINAL IN SESS     @Y17XAXF
TRMOCNI  EQU   X'20' .                    STOP LINE IN PROG    @Y17XAXF
TRMSPACT EQU   X'10' .                    TERM'S LINE ACTIVE   @Y17XAXF
TRMQNPL  EQU   X'08'                      Q'D NEG POLL LIM REC @Y17XAXF
TRMERLCK EQU   X'04' .                    TERM IN ERROR LCK    @Y17XAXF
TRMSPOUT EQU   X'02' .                    SPEC PROC REQ        @Y17XAXF
TRMLYNCH EQU   X'01' .                    DISCONNECT REC'VD    @Y17XAXF
         SPACE 1                                               @YM08120
TRMNCP1  DS    XL1 .                    STATUS BYTE NCP        @YM08120
TRMINOP  EQU   X'80' .                  CHAN INOP RECEIVED     @YM08120
*        EQU   X'40'-X'01'              RESERVED               @YM08120
         SPACE 3                                               @Y17XAXF
TRMBYTE3 DS    0XL1 .                   STATUS BYTE            @Y17XAXF
         SPACE 2                                               @Y17XAXF
TRMPRE   DS    0XL1 .                   STATUS BYTE (PRE-SNA)  @Y17XAXF
TRMSTPND EQU   X'80' .                    STATUS PENDING FLAG  @Y17XAXF
TRMCMODE EQU   X'40' .                    CHGE OF MODE REQUEST @Y17XAXF
TRMSTMM  EQU   X'20' .                    STOP MID MESS IN PRG @Y17XAXF
TRMASNXI EQU   X'10' .                    RESET IMMED INPRG    @Y17XAXF
TRMWROUT EQU   X'08' .                    WRITE OUTSTANDING    @Y17XAXF
TRMNLOUT EQU   X'04' .                    NULL WRT OR CONTACT  @Y17XAXF
*                                          OUTSTANDING         @Y17XAXF
TRMRDOUT EQU   X'02' .                    READ OUTSTANDING     @Y17XAXF
TRMINOUT EQU   X'01' .                    INVITE OUTSTANDING   @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMNCP   DS    0XL1 .            (ABNL) STATUS BYTE (NCP ONLY) @Y17XAXF
TRMIPLDM EQU   X'80' .           (ABNL)   IPL/DUMP IN PROGRESS @Y17XAXF
TRMNCPCL EQU   X'40' .                    NCP CLOSE DOWN IN-PRG@Y17XAXF
TRMSYGEN EQU   X'20' .                    SYSGEN NCP ACTIVE STATE
*                                                              @Y17XAXF
TRMSLOWN EQU   X'10' .                    3705 SLOWDOWN INPRG  @Y17XAXF
TRMQUCKN EQU   X'08'                      NCP QUICK CLOSEDWN   @Y17XAXF
* TRMNCONT     BITS 5-7                   NCP CONTACT STATES   @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMPU    DS    0XL1 .                   STATUS BYTE (PUNT ONLY)@Y17XAXF
*        EQU   X'80'-X'08' .              RESERVED             @Y17XAXF
* TRMPCONT     BITS 5-7                   PU  CONTACT STATES   @Y17XAXF
TRMCRSET EQU   X'00' .   TRMNCONT          RESET               @Y17XAXF
TRMCCSNT EQU   X'01' .        VALUES       CONTACT SENT        @Y17XAXF
TRMCAPND EQU   X'02' .        ALSO         ACTIVE PENDING      @Y17XAXF
TRMCRPND EQU   X'03' .                     RESET PENDING       @Y17XAXF
TRMCACTV EQU   X'04' .                     ACTIVE              @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMLU    DS    0XL1 .            (ABNL) STATUS BYTE (LUNT ONLY)@PI06917
TRMAUTO  EQU   X'80' .                    AUTO BIND TO TCAM    @Y17XAXF
TRMLUIT  EQU   X'40' .                    LU INITIATES SESSION @Y17XAXF
TRMLUTM  EQU   X'20' .                    LU TERMINATES SESSION@Y17XAXF
TRMTDIFF EQU   X'10' .                    TOTE TERM IND        @Y17XAXF
TRMSESRQ EQU   X'08' .                    LU-LU SESS REQ FROM  @Y17XAXF
*                                          IEDLUS              @Y17XAXF
TRMLUREQ EQU   X'04' .                    SESS INITIATED BY LU @Y17XAXF
TRMINERR EQU   X'02' .                    INITIATION ERROR PROCESSING
*                                           IN PROGRESS        @PI06917
TRMLULOG EQU   X'01'                      CAPABLE OF LOGON TO TCAM
*                                                              @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMLINK  DS    XL1 .                    STATUS BYTE (LINE ONLY)@Y17XAXF
TRMEPMOD EQU   X'80' .                    LINE IN EP MODE      @Y17XAXF
TRMLINT  EQU   X'40' .                    3705 LINE TRACE ACT  @Y17XAXF
*TRMLSTAT      BITS 2+3                   LINK STATUS          @Y17XAXF
TRMLRSET EQU   X'00' .                     RESET               @Y17XAXF
TRMLAPND EQU   X'10' .                     ACTIVE PENDING      @Y17XAXF
TRMLRPND EQU   X'20' .                     RESET PENDING       @Y17XAXF
TRMLACTV EQU   X'30' .                     ACTIVE              @Y17XAXF
*        EQU   X'08'-X'01' .               RESERVED            @Y17XAXF
         SPACE 3                                               @Y17XAXF
TRMBYTE2 DS    XL1 .             (ABNL) STATUS BYTE            @Y17XAXF
TRMRSACT EQU   X'80' .                    RESOURCE ACTIVE      @Y17XAXF
*                                            SNA - SSCP SESS   @Y17XAXF
*                                                  EXISTS      @Y17XAXF
*                                            PRE SNA - VARY    @Y17XAXF
*                                                  ONTP CMD    @Y17XAXF
TRMREMB  EQU   X'40' .           (ABNL)   ACTIVATE REMEMBER BIT@Y17XAXF
TRMINPG  EQU   X'20' .                    ACT/DEACT IN PROGRESS@Y17XAXF
*                                            FOR SSCP SESSION  @Y17XAXF
TRMCLOSN EQU   X'20' .                   CLOSEDOWN IN PROGRESS @YM06966
TRMANDL  EQU   X'10' .                    MANUAL DIAL IN PROCES@Y17XAXF
TRMGPACT EQU   X'08' .                    GENERAL POLL IS ACTVE@Y17XAXF
TRMPREP  EQU   X'04' .                    LINE BEING MONITORED @Y17XAXG
TRMNOSND EQU   X'02' .                    DO NOT CONTINUE SEND @Y17XAXF
*                                          OPERATION           @Y17XAXF
TRMWRBRK EQU   X'01' .                    WRITE BREAK IN       @Y17XAXG
*                                          PROGRESS            @Y17XAXG
         SPACE 1                                               @Y17XAXF
TRMBYTE1 DS    XL1 .                    STATUS BYTE            @Y17XAXF
TRMSCPRQ EQU   X'80' .                    SSCP REQ OUTSTANDING @Y17XAXF
TRMWTNEG EQU   X'80' .                    (PRE-SNA) WAITING    @Y17XAXF
*                                           FOR RSP TO NEG POLL@Y17XAXF
TRMINPTP EQU   X'40' .                    INPUT PENDING        @Y17XAXF
TRMAUTOC EQU   X'20' .                    CALL OUT FROM 3705   @Y17XAXF
TRMSWBCK EQU   X'10' .                    TERM ON BKUP CONN    @Y17XAXF
TRMTRACE EQU   X'08' .                    PIU TRACE ACTIVE     @Y17XAXF
TRMTSATN EQU   X'04' .                    INTERACTIVE ATTN CTL @Y17XAXF
TRMCKPRN EQU   X'02' .                    CKPT REC IND FOR 3705@Y17XAXF
*                                            RESOURCE          @Y17XAXF
TRMSTOTE EQU   X'01' .                    TOTE CONTROLS RESOURC@Y17XAXF
TRMCOHRT DS    H .                      TTCIN TO NEXT ENTRY OF @Y17XAXF
*                                         SAME TYPE            @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMBYTE0 DS    XL1 .                    STATUS BYTE            @Y17XAXF
TRMUDEF  EQU   X'80' .                    INVALID TSO MTA TERM @Y17XAXF
TRMINPUT EQU   X'40' .                    CAPABLE OF INPUT     @Y17XAXF
TRMOUTPT EQU   X'20' .                    CAPABLE OF OUTPUT    @Y17XAXF
*        EQU   X'10' .                    RESERVED             @Y17XAXF
TRMDIAL  EQU   X'08' .                    DIAL TERMINAL        @Y17XAXF
TRMGP    EQU   X'04' .                    GENERAL POLL RESOURCE@Y17XAXF
TRMSNA   EQU   X'02' .                    SNA RESOURCE         @Y17XAXF
TRMBUFRD EQU   X'01' .                    BUFFER RESOURCE      @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMSIBPT DS    0AL3 .                   ANCHOR FOR SIB CHAIN   @Y17XAXF
TRMGPCNT DS    CL1 .                    CNT OF OUTSTANDING     @Y17XAXF
*                                            GP OUTPUT OPER    @Y17XAXF
TRMCOHTG DS    H .                      TTCIN TO NEXT LINE     @Y17XAXF
*                                            WITHIN A GROUP    @Y17XAXF
TRMRLMCT DS    XL1 .                    RECEIVE MESS LIMIT CNT @Y17XAXF
TRMTYPE  DS    CL1 .                    RESOURCE TYPE          @Y17XAXF
*                                                              @Y17XAXF
*        GUIDE LINES FOR ASSIGNING TYPE VALUES                 @Y17XAXF
*         X'01' - X'0F'  NCP RANGE                             @Y17XAXF
*         X'10' - X'1F'  PUNT RANGE                            @Y17XAXF
*         X'20' - X'2F'  LINE RANGE                            @Y17XAXF
*         X'30' - X'3F'  LUNT RANGE                            @Y17XAXF
*         X'40' - X'4F'  PRE-SNA RANGE                         @Y17XAXF
*         X'50' - X'EF'  NEW TYPES                             @Y17XAXF
*         X'F0' - X'FF'  HOST ELEMENT RANGE                    @Y17XAXF
*                                                              @Y17XAXF
TRMGRP   EQU   X'00' .                    GROUP INDICATOR      @Y17XAXF
TRMLNCP  EQU   X'0F' .                    LOCAL NCP INDICATOR  @Y17XAXF
TRMPULO  EQU   X'10'                    LOW END OF PUNT RANGE
         SPACE 1                                               @Y17XAXF
TRMPUNT  EQU   X'18' .                    PUNT INDICATOR       @Y17XAXF
TRMPUHI  EQU   X'1F'                    HIGH END OF PUNT RANGE
         SPACE 1                                               @Y17XAXF
TRMNSDLC EQU   X'20' .                    BSC/SS LINE IND      @Y17XAXF
TRMSDLC  EQU   X'21' .                    SDLC LINE IND        @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMLUNT  EQU   X'30' .                    LUNT INDICATOR       @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMCLUST EQU   X'40' .                    PRE-SNA CLUSTER      @Y17XAXF
TRMCTERM EQU   X'48' .                    CTERM INDICATOR      @Y17XAXF
TRMPSNA  EQU   X'4F' .                    PRE-SNA TERM IND     @Y17XAXF
*                                                              @Y17XAXF
*              X'50'-X'EF'                RESERVED             @Y17XAXF
*                                                              @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMSSCP  EQU   X'FF' .                    SSCP INDICATOR       @Y17XAXF
         SPACE 1                                               @Y17XAXF
TRMSUBST DS    H .                      TTCIN TO FIRST ELEMENT @Y17XAXF
*                                         OF NEXT HIERARCHY    @Y17XAXF
*                                         LEVEL                @Y17XAXF
IEDQTRM  EQU   *                                                 S22024
         SPACE
TRMSTATE DS    XL1 .                    STATUS BYTE
*                        BIT DEFINITIONS
*                                       TYPE OF ENTRY - BITS 0-2
*                                         SINGLE     000
*                                         PROCESS    001
*                                         LIST (C D) 010
*                                         LOGTYPE    011        SA53610
*                                         LINE ENTRY 100
TRMPROC  EQU   X'20'                    PROCESS ENTRY           SA53610
TRMLIST  EQU   X'40'                    LIST ENTRY              SA53610
TRMLOG   EQU   X'60'                    LOGTYPE ENTRY           SA53610
TRMLINE  EQU   X'80'                    LINE ENTRY              SA53610
TRMPREF  EQU   X'10' .                  TTE PREFIX EXISTS      @Y17XAXF
*                                        AND NON-270X RES      @Y17XAXF
TRMSNGLE EQU   X'E0' .                  MASK TO TEST FOR TPROC @Y17XAXF
*                                       LIST, LOG OR LINE.     @Y17XAXF
TRMACPTN EQU   X'08' .                  PROCESS ENTRY STATUS
TRMACPTF EQU   X'FF'-X'08' .            PROCESS ENTRY STATUS
TRMHELDN EQU   X'04' .                  TERMINAL IN HOLD MODE
TRMHELDF EQU   X'FF'-X'04' .            TERMINAL NOT INTERCEPTED
TRMOPTFN EQU   X'02' .                  OPTION FIELDS USED
TRMOPTFF EQU   X'FF'-X'02' .            NO OPTION FIELDS USED
TRMSCNYN EQU   X'01' .                  SECONDARY OPERATOR CTL TERM
TRMSCNYF EQU   X'FF'-X'01' .            NOT OPERATOR CONTROL TERM
*
TRMDESTQ DS    AL3 .                    ADDR OF DESTINATION QCB
TLISTCNT DS    0H .                     COUNT OF ENTRIES IN A TLIST
TRMUTERM DS    0H .                     CTERM TNT INDEX (LINE ONLY)
*                                                              @Y17XAXF
TRMINSEQ DS    H .                      INPUT SEQUENCE NUMBER
TLISTEN  DS    0H .                     FIRST ENTRY IN A TLIST
TRMDSORG DS    0XL1 .                   LGB IDENTIFIER         @Y17XAXF
TRMLGB   EQU   X'80' .                  INDICATES BLOCK IS AN    S22024
*                                       LGB RATHER THAN A        S22024
*                                       TERMINAL ENTRY           S22024
TRMOUTSQ DS    H .                      OUTPUT SEQUENCE NUMBER
TRMPRILK DS    0H .                     TTCIN OF LINE BEFORE BACKUP
*                                        OCCURRED (LINE ONLY)  @Y17XAXF
TRMALTD  DS    H .                      ALTERNATE DEST OFFSET    X03039
TRMDEVFL DS    H .                      DEVICE DEPENDENT FIELD FLAGS.
*                        BIT DEFINITIONS
TRMBUFS  EQU   X'80' .               0    BUF SIZE SPECIFIED   @Y17XAXF
TRMDDIG  EQU   X'40' .               1    DIAL DIGITS PRESENT  @Y17XAXF
TRMADDC  EQU   X'20' .               2    ADDRESSING CHAR PRE  @Y17XAXF
TRMBLKS  EQU   X'10' .               3    BLK SPECIFIED        @Y17XAXF
TRMSBLK  EQU   X'08' .               4    SUBBLK SPECIFIED     @Y17XAXF
TRMTBLK  EQU   X'04' .               5    TRANSPARENT BLK LENG @Y17XAXF
TRMBFDY  EQU   X'02' .               6    BFDELAY SPECIFIED    @Y17XAXF
TRMTSOB  EQU   X'01' .               7    TIME SHARING FIELD   @Y17XAXF
TRMCONC  EQU   X'80' .               8    CONC OR TERMINAL       S22026
*                                         ATTACHED TO A CONC     S22026
TRMLMD   EQU   X'40' .               9    LMD=YES                S22026
*        EQU   X'20' .              10    RETRY                @Y17XAXF
TRMRNTRM EQU   X'10' .              11    3705 MODE            @Y17XAXF
TRMNCPI  EQU   X'08' .              12    3705 DEV DEP INFO    @Y17XAXF
TRMTPIN  EQU   X'04' .              13    TPROCESS INFO        @Y17XAXF
*        EQU   X'02'-X'01' .     14&15    RESERVED             @Y17XAXF
TRMSTAT  DS    0F .                     ERROR STATISTICS
TRMSIO   DS    H .                      NUMBER OF START I/OS   @Y17XAXF
TRMTEMPR DS    XL1 .                    NUMBER OF TEMPORARY ERRORS
TRMSENSE DS    XL1 .                    INTENSIVE MODE RECORDING
*                                       INDICATOR
TRMCHCIN DS    XL1 .                    DEVICE CHARACTERISTIC TABLE
*                                       INDEX
TRMOPNO  DS    XL1 .                    NUMBER OF OPTION ENTRIES
TRMOPTBL DS    H .                      OFFSET TO OPTION TABLE
TRMOPT   DS    0XL1 .                   START OF OPTION OFFSETS
*
*         ***************************************************
*     0   *   STATE   *                 DESTQ               *
*         ***************************************************
*     4   *   INSEQ/TLISTCNT       *     OUTSEQ/TLISTEN     *
*         ***************************************************
*     8   *         ALTD           *           DEVFL        *
*         ***************************************************
*    12   *                       STAT                      *
*         ***************************************************
*    16   *   CCHIN   *    OPNO    *           OPTBL        *
*         ***************************************************
*    20   *   OPT     *
*         *************
*
TRMPRFSZ EQU   IEDQTRM-IEDNTRM                                   S22024
         MEND  , */
*%BSLTRM  :  ;
*%IF NEGADDR='NO'                       /* IF NEW TTRMD IS   @Y17XAXF*/
*   %THEN %GOTO BSLTRM1;                /*  NEEDED, BRANCH   @Y17XAXF*/
*DECLARE
*  1 IEDQTRM  BASED(IEDQTPTR) BDY(WORD),                  /* @Y17XAXF*/
*
*/*      UPDATED 01/16/73                                      S22024*/
*
*   2 TRMSTATE    BIT(8),               /* STATUS BYTE
*                            BIT DEFINITIONS
*                           TYPE OF ENTRY - BITS 0-2
*                                SINGLE     000
*                                PROCESS    001
*                                LIST (C D) 010
*                                LOGTYPE    011               SA53610
*                                LINE ENTRY 100                      */
*    3 TRMLINE BIT(1),                  /* LINE ENTRY         SA53610*/
*    3 TRMLOG BIT(2),                   /* LOGTYPE ENTRY      SA53610*/
*     4 TRMLIST BIT(1),                 /* LIST ENTRY         SA53610*/
*     4 TRMPROC BIT(1),                 /* PROCESS ENTRY      SA53610*/
*    3 TRMPREF  BIT(1),                 /* TTE PREFIX EXISTS @Y17XAXF*/
*                                       /*  AND NON-270X RES @Y17XAXF*/
*    3 TRMACPTN BIT(1),                 /* PROCESS ENTRY STATUS      */
*    3 TRMHELDN BIT(1),                 /* TERMINAL IN HOLD MODE     */
*    3 TRMOPTFN BIT(1),                 /* OPTION FIELDS USED        */
*    3 TRMSCNYN BIT(1),                 /* SECONDARY OPERATOR CTL
*                                       TERM                         */
*/*                                                                  */
*   2 TRMDESTQ    PTR(24),              /* ADDR OF DEST QCB  @Y17XAXF*/
*   2 TRMINSEQ    FIXED(16),            /* INPUT SEQUENCE NUMBER     */
*    3 TLISTCNT    FIXED(16),           /* COUNT OF ENTRIES IN A
*                                       TLIST                        */
*     4 TRMUTERM    FIXED(16),          /* CTERM TNT INDEX (LINE ONLY)
*                                                            @Y17XAXF*/
*   2 TRMOUTSQ    FIXED(16),            /* OUTPUT SEQUENCE NUMBER    */
*    3 TLISTEN     FIXED(16),           /* FIRST ENTRY IN A TLIST    */
*      5 TRMDSORG    CHAR(1),           /* LGB IDENTIFIER    @Y17XAXF*/
*       6 TRMLGB   BIT(1),              /* INDICATES BLOCK IS AN LGB
*                                       RATHER THAN A TERMINAL
*                                       ENTRY                  S22024*/
*   2 TRMALTD     FIXED(16),            /* ALTERNATE DESTINATION
*                                       OFFSET                       */
*    3 TRMPRILK   FIXED(16),            /* TTCIN OF LINE BEFORE BACKUP
*                                          OCCURED (LINE ONLY)
*                                                            @Y17XAXF*/
*   2 TRMDEVFL    BIT(16)  BDY(HWORD),  /* DEVICE DEPENDENT FLAGS
*                                           INDICATES WHICH FIELDS
*                                           ARE PRESENT      @Y17XAXF*/
*    3 TRMBUFS  BIT(1),                 /* BUFSIZE SPEC      @Y17XAXF*/
*    3 TRMDDIG  BIT(1),                 /* DIAL DIGITS PRE   @Y17XAXF*/
*    3 TRMADDC  BIT(1),                 /* ADDR CHAR PRESENT @Y17XAXF*/
*    3 TRMBLKS  BIT(1),                 /* BLK SPECIFIED     @Y17XAXF*/
*    3 TRMSBLK  BIT(1),                 /* SUBBLK SPECIFIED  @Y17XAXF*/
*    3 TRMTBLK  BIT(1),                 /* TRANSPARNT BLKLEN @Y17XAXF*/
*    3 TRMBFDY  BIT(1),                 /* BFDELAY SPEC      @Y17XAXF*/
*    3 TRMTSOB  BIT(1),                 /* TSO FIELD         @Y17XAXF*/
*    3 TRMCONC  BIT(1),                 /* CONCENTRATOR TERM   S22026*/
*    3 TRMLMD   BIT(1),                 /* LMD SPECIFIED       S22026*/
*    3 *        BIT(1),                 /* RETRY SPECIFIED     S22025*/
*    3 TRMRNTRM BIT(1),                 /* 3705 MODE         @Y17XAXF*/
*    3 TRMNCPI  BIT(1),                 /* 3705 DEV DEP INFO @Y17XAXF*/
*    3 TRMTPIN  BIT(1),                 /* TPROCESS INFO     @Y17XAXF*/
*    3 *        BIT(2),                 /* RESERVED          @Y17XAXF*/
*   2 TRMSTAT     FIXED(31),            /* ERROR STATISTICS          */
*     4 TRMSIO      FIXED(15),          /* NUMBER OF START I/OS      */
*     4 TRMTEMPR    PTR(8),             /* TEMPORARY ERROR COUNT     */
*     4 TRMSENSE    CHAR(1),            /* INTENSIVE MODE RECORDING
*                                       INDICATOR                    */
*   2 TRMCHCIN    FIXED(8),             /* DEVICE CHARACTERISTIC
*                                       INDEX                        */
*   2 TRMOPNO     PTR(8),               /* NUMBER OF OPTION ENTRIES  */
*   2 TRMOPTBL    FIXED(16);            /* OFFSET TO OPTION TABLE    */
*DECLARE   TRMOPT  (*) CHAR(1) DEF(IEDQTRM)               /* @Y17XAXF*/
*  POS(LENGTH(IEDQTRM)+1);
*                                       /* START OF OPTION OFFSETS   */
*
*
*/*       ***************************************************        */
*/*   0   *   STATE   *                 DESTQ               *        */
*/*       ***************************************************        */
*/*   4   *   INSEQ/TLISTCNT       *     OUTSEQ/TLISTEN     *        */
*/*       ***************************************************        */
*/*   8   *         ALTD           *           DEVFL        *        */
*/*       ***************************************************        */
*/*  12   *                       STAT                      *        */
*/*       ***************************************************        */
*/*  16   *   CCHIN   *    OPNO    *           OPTBL        *        */
*/*       ***************************************************        */
*/*  20   *   OPT     *                                              */
*/*       *************                                              */
*DECLARE
*  1 IEDNTRM BASED(ADDR(IEDQTRM)-LENGTH(IEDNTRM)) BDY(HWORD),
*                                                         /* @Y17XAXF*/
*   2 TRMBYTE4 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*   2 TRMBYTE3 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*   2 TRMBYTE2 BIT(8) ABNL,             /* STATUS BYTE       @Y17XAXF*/
*     3 TRMRSACT BIT(1),                /*  RESOURCE ACTIVE  @Y17XAXF*/
*                                       /*    SNA -SSCP SESS @Y17XAXF*/
*                                       /*          EXISTS   @Y17XAXF*/
*                                       /*    PRE SNA - VARY @Y17XAXF*/
*                                       /*          ONTP CMD @Y17XAXF*/
*     3 TRMREMB  BIT(1) ABNL,           /*  ACTIV REM'BR BIT @Y17XAXF*/
*     3 TRMINPG  BIT(1),                /*  ACT/DEACT INPRG  @Y17XAXF*/
*                                       /*    FOR SSCP SESS  @Y17XAXF*/
*       4 TRMCLOSN BIT(1),         /* CLOSEDOWN IN PROGRESS  @YM06966*/
*     3 TRMANDL  BIT(1),                /*  MANUAL DIAL INPG @Y17XAXF*/
*     3 TRMGPACT BIT(1),                /*  WRITE OUTSTAND'G @Y17XAXF*/
*     3 TRMPREP  BIT(1),                /*  LINE BEING       @Y17XAXG*/
*                                       /*  MONITORED        @Y17XAXG*/
*     3 TRMNOSND BIT(1),                /*  DO NOT CONTINUE  @Y17XAXF*/
*                                       /*   SEND OPERATION  @Y17XAXF*/
*     3 TRMWRBRK BIT(1),                /*  WRITE BREAK IN   @Y17XAXG*/
*                                       /*  PROGRESS         @Y17XAXG*/
*   2 TRMBYTE1 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*     3 TRMSCPRQ BIT(1),                /*  SSCP REQ OUTST'G @Y17XAXF*/
*       4 TRMWTNEG BIT(1),              /*  (PRE-SNA)WAITING @Y17XAXF*/
*                                       /*    FOR RSP TO NEG @Y17XAXF*/
*                                       /*    POLL           @Y17XAXF*/
*     3 TRMINPTP BIT(1),                /*  INPUT PEND'G     @Y17XAXF*/
*     3 TRMAUTOC BIT(1),                /*  CALLOUT FRM 3705 @Y17XAXF*/
*     3 TRMSWBCK BIT(1),                /*  TERM ON BKUP     @Y17XAXF*/
*                                       /*   CONNECTION      @Y17XAXF*/
*     3 TRMTRACE BIT(1),                /*  PIU TRACE ACTIVE @Y17XAXF*/
*     3 TRMTSATN BIT(1),                /*  INTERACT ATTENT  @Y17XAXF*/
*                                       /*   CONTROL         @Y17XAXF*/
*     3 TRMCKPRN BIT(1),                /*  CHKPT REC IND    @Y17XAXF*/
*                                       /*   FOR 3705 RES    @Y17XAXF*/
*     3 TRMSTOTE BIT(1),                /*  TOTE CTRLS RES   @Y17XAXF*/
*   2 TRMCOHRT FIXED(16),               /* TTCIN TO NEXT ENT @Y17XAXF*/
*                                       /*  OF SAVE TYPE     @Y17XAXF*/
*   2 TRMBYTE0 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*     3 TRMUDEF  BIT(1),                /*  INV TSO MTA TRM  @Y17XAXF*/
*     3 TRMINPUT BIT(1),                /*  CAPABLE OF INPUT @Y17XAXF*/
*     3 TRMOUTPT BIT(1),                /*  CAPABLE OF OUTPT @Y17XAXF*/
*     3 *        BIT(1),                /*  RESERVED         @Y17XAXF*/
*     3 TRMDIAL  BIT(1),                /*  DIAL TERMINAL    @Y17XAXF*/
*     3 TRMGP    BIT(1),                /*  GEN POLL RES     @Y17XAXF*/
*     3 TRMSNA   BIT(1),                /*  SNA RESOURCE     @Y17XAXF*/
*     3 TRMBUFRD BIT(1),                /*  BUFFERED RES     @Y17XAXF*/
*   2 TRMSIBPT PTR(24),                 /* SIB CHAIN PTR     @Y17XAXF*/
*     3 TRMGPCNT CHAR(1),               /* CNT OF OUTSTAND'G @Y17XAXF*/
*                                       /*   GP OUTPUT OPER  @Y17XAXF*/
*     3 TRMCOHTG FIXED(16),             /* TTCIN TO NXT LINE @Y17XAXF*/
*                                       /*   WITHIN A GRP    @Y17XAXF*/
*   2 TRMRLMCT PTR(8),                  /* REC MES LIMIT CNT @Y17XAXF*/
*   2 TRMTYPE  CHAR(1),                 /* RESOURCE TYPE     @Y17XAXF*/
*   2 TRMSUBST FIXED(16);               /* TTCIN TO 1ST ELEMENT OF
*                                            NEXT HIERARCHY LEVEL
*                                                            @Y17XAXF*/
*%GOTO BSLTRM2;                         /*                   @Y17XAXF*/
*
*%BSLTRM1 : ;                           /*                   @Y17XAXF*/
*DECLARE                                                  /* @Y17XAXF*/
* 1 IEDTRM BASED(RTRM) BDY(HWORD),                        /* @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      FORMAT OF TTE PREFIX                                @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*  2 IEDNTRM CHAR(14) BDY(HWORD),       /* TTE PREFIX        @Y17XAXF*/
*   3 TRMBYTE4 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*   3 TRMBYTE3 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*   3 TRMBYTE2 BIT(8) ABNL,             /* STATUS BYTE       @Y17XAXF*/
*     4 TRMRSACT BIT(1),                /*  RESOURCE ACTIVE  @Y17XAXF*/
*                                       /*    SNA -SSCP SESS @Y17XAXF*/
*                                       /*          EXISTS   @Y17XAXF*/
*                                       /*    PRE SNA - VARY @Y17XAXF*/
*                                       /*          ONTP CMD @Y17XAXF*/
*     4 TRMREMB  BIT(1) ABNL,           /*  ACTIV REM'BR BIT @Y17XAXF*/
*     4 TRMINPG  BIT(1),                /*  ACT/DEACT INPRG  @Y17XAXF*/
*                                       /*    FOR SSCP SESS  @Y17XAXF*/
*       5 TRMCLOSN BIT(1),         /* CLOSEDOWN IN PROGRESS  @YM06966*/
*     4 TRMANDL  BIT(1),                /*  MANUAL DIAL INPG @Y17XAXF*/
*     4 TRMGPACT BIT(1),                /*  WRITE OUTSTAND'G @Y17XAXF*/
*     4 TRMPREP  BIT(1),                /*  LINE BEING       @Y17XAXG*/
*                                       /*  MONITORED        @Y17XAXG*/
*     4 TRMNOSND BIT(1),                /*  DO NOT CONTINUE  @Y17XAXF*/
*                                       /*   SEND OPERATION  @Y17XAXF*/
*     4 TRMWRBRK BIT(1),                /*  WRITE BREAK IN   @Y17XAXG*/
*                                       /*  PROGRESS         @Y17XAXG*/
*   3 TRMBYTE1 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*     4 TRMSCPRQ BIT(1),                /*  SSCP REQ OUTST'G @Y17XAXF*/
*       5 TRMWTNEG BIT(1),              /*  (PRE-SNA)WAITING @Y17XAXF*/
*                                       /*    FOR RSP TO NEG @Y17XAXF*/
*                                       /*    POLL           @Y17XAXF*/
*     4 TRMINPTP BIT(1),                /*  INPUT PEND'G     @Y17XAXF*/
*     4 TRMAUTOC BIT(1),                /*  CALLOUT FRM 3705 @Y17XAXF*/
*     4 TRMSWBCK BIT(1),                /*  TERM ON BKUP     @Y17XAXF*/
*                                       /*   CONNECTION      @Y17XAXF*/
*     4 TRMTRACE BIT(1),                /*  PIU TRACE ACTIVE @Y17XAXF*/
*     4 TRMTSATN BIT(1),                /*  INTERACT ATTENT  @Y17XAXF*/
*                                       /*   CONTROL         @Y17XAXF*/
*     4 TRMCKPRN BIT(1),                /*  CHKPT REC IND    @Y17XAXF*/
*                                       /*   FOR 3705 RES    @Y17XAXF*/
*     4 TRMSTOTE BIT(1),                /*  TOTE CTRLS RES   @Y17XAXF*/
*   3 TRMCOHRT FIXED(16),               /* TTCIN TO NEXT ENT @Y17XAXF*/
*                                       /*  OF SAVE TYPE     @Y17XAXF*/
*   3 TRMBYTE0 BIT(8),                  /* STATUS BYTE       @Y17XAXF*/
*     4 TRMUDEF  BIT(1),                /*  INV TSO MTA TRM  @Y17XAXF*/
*     4 TRMINPUT BIT(1),                /*  CAPABLE OF INPUT @Y17XAXF*/
*     4 TRMOUTPT BIT(1),                /*  CAPABLE OF OUTPT @Y17XAXF*/
*     4 *        BIT(1),                /*  RESERVED         @Y17XAXF*/
*     4 TRMDIAL  BIT(1),                /*  DIAL TERMINAL    @Y17XAXF*/
*     4 TRMGP    BIT(1),                /*  GEN POLL RES     @Y17XAXF*/
*     4 TRMSNA   BIT(1),                /*  SNA RESOURCE     @Y17XAXF*/
*     4 TRMBUFRD BIT(1),                /*  BUFFERED RES     @Y17XAXF*/
*   3 TRMSIBPT PTR(24),                 /* SIB CHAIN PTR     @Y17XAXF*/
*     4 TRMGPCNT CHAR(1),               /* CNT OF OUTSTAND'G @Y17XAXF*/
*                                       /*   GP OUTPUT OPER  @Y17XAXF*/
*     4 TRMCOHTG FIXED(16),             /* TTCIN TO NXT LINE @Y17XAXF*/
*                                       /*   WITHIN A GRP    @Y17XAXF*/
*   3 TRMRLMCT PTR(8),                  /* REC MES LIMIT CNT @Y17XAXF*/
*   3 TRMTYPE  CHAR(1),                 /* RESOURCE TYPE     @Y17XAXF*/
*   3 TRMSUBST FIXED(16),               /* TTCIN TO 1ST ELEMENT OF
*                                            NEXT HIERARCHY LEVEL
*                                                            @Y17XAXF*/
*  2 IEDQTRM  CHAR(20) BDY(WORD),       /* BEGINNING OF TTE  @Y17XAXF*/
*   3 TRMSTATE    BIT(8),               /* STATUS BYTE
*                            BIT DEFINITIONS
*                           TYPE OF ENTRY - BITS 0-3
*                                SINGLE     000
*                                PROCESS    001
*                                LIST (C D) 010
*                                LOGTYPE    011               SA53610
*                                LINE ENTRY 100                      */
*    4 TRMLINE BIT(1),                  /* LINE ENTRY         SA53610*/
*    4 TRMLOG BIT(2),                   /* LOGTYPE ENTRY      SA53610*/
*     5 TRMLIST BIT(1),                 /* LIST ENTRY         SA53610*/
*     5 TRMPROC BIT(1),                 /* PROCESS ENTRY      SA53610*/
*    4 TRMPREF  BIT(1),                 /* TTE PREFIX EXISTS @Y17XAXF*/
*                                       /*  AND NON-270X RES @Y17XAXF*/
*    4 TRMACPTN BIT(1),                 /* PROCESS ENTRY STATUS      */
*    4 TRMHELDN BIT(1),                 /* TERMINAL IN HOLD MODE     */
*    4 TRMOPTFN BIT(1),                 /* OPTION FIELDS USED        */
*    4 TRMSCNYN BIT(1),                 /* SECONDARY OPERATOR CTL
*                                       TERM                         */
*/*                                                                  */
*   3 TRMDESTQ    PTR(24),              /* ADDR OF DEST QCB  @Y17XAXF*/
*   3 TRMINSEQ    FIXED(16),            /* INPUT SEQUENCE NUMBER     */
*    4 TLISTCNT    FIXED(16),           /* COUNT OF ENTRIES IN A
*                                       TLIST                        */
*     5 TRMUTERM    FIXED(16),          /* CTERM TNT INDEX (LINE ONLY)
*                                                            @Y17XAXF*/
*   3 TRMOUTSQ    FIXED(16),            /* OUTPUT SEQUENCE NUMBER    */
*    4 TLISTEN     FIXED(16),           /* FIRST ENTRY IN A TLIST    */
*      5 TRMDSORG    CHAR(1),           /* LGB IDENTIFIER    @Y17XAXF*/
*       6 TRMLGB   BIT(1),              /* INDICATES BLOCK IS AN LGB
*                                       RATHER THAN A TERMINAL
*                                       ENTRY                  S22024*/
*   3 TRMALTD     FIXED(16),            /* ALTERNATE DESTINATION
*                                       OFFSET                       */
*    4 TRMPRILK   FIXED(16),            /* TTCIN OF LINE BEFORE BACKUP
*                                          OCCURRED (LINE ONLY)
*                                                            @Y17XAXF*/
*   3 TRMDEVFL    BIT(16)  BDY(HWORD),  /* DEVICE DEPENDENT FLAGS
*                                           INDICATES WHICH FIELDS
*                                           ARE PRESENT      @Y17XAXF*/
*    4 TRMBUFS  BIT(1),                 /* BUFSIZE SPEC      @Y17XAXF*/
*    4 TRMDDIG  BIT(1),                 /* DIAL DIGITS PRE   @Y17XAXF*/
*    4 TRMADDC  BIT(1),                 /* ADDR CHAR PRESENT @Y17XAXF*/
*    4 TRMBLKS  BIT(1),                 /* BLK SPECIFIED     @Y17XAXF*/
*    4 TRMSBLK  BIT(1),                 /* SUBBLK SPECIFIED  @Y17XAXF*/
*    4 TRMTBLK  BIT(1),                 /* TRANSPARNT BLKLEN @Y17XAXF*/
*    4 TRMBFDY  BIT(1),                 /* BFDELAY SPEC      @Y17XAXF*/
*    4 TRMTSOB  BIT(1),                 /* TSO FIELD         @Y17XAXF*/
*    4 TRMCONC  BIT(1),                 /* CONCENTRATOR TERM   S22026*/
*    4 TRMLMD   BIT(1),                 /* LMD SPECIFIED       S22026*/
*    4 *        BIT(1),                 /* RETRY SPECIFIED     S22025*/
*    4 TRMRNTRM BIT(1),                 /* 3705 MODE         @Y17XAXF*/
*    4 TRMNCPI  BIT(1),                 /* 3705 DEV DEP INFO @Y17XAXF*/
*    4 TRMTPIN  BIT(1),                 /* TPROCESS INFO     @Y17XAXF*/
*    4 *        BIT(2),                 /* RESERVED          @Y17XAXF*/
*   3 TRMSTAT     FIXED(31),            /* ERROR STATISTICS          */
*     4 TRMSIO      FIXED(15),          /* NUMBER OF START I/OS      */
*     4 TRMTEMPR    PTR(8),             /* TEMPORARY ERROR COUNT     */
*     4 TRMSENSE    CHAR(1),            /* INTENSIVE MODE RECORDING
*                                       INDICATOR                    */
*   3 TRMCHCIN    FIXED(8),             /* DEVICE CHARACTERISTIC
*                                       INDEX                        */
*   3 TRMOPNO     PTR(8),               /* NUMBER OF OPTION ENTRIES  */
*   3 TRMOPTBL    FIXED(16),            /* OFFSET TO OPTION TABLE    */
*  2 TRMOPT  (*) CHAR(1);               /* OPTION INFO       @Y17XAXF*/
*                                       /*                   @Y17XAXF*/
*%BSLTRM2 : ;                           /*                   @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      VALUES FOR TRMTYPE                                  @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*            GUIDE LINES FOR ASSIGNING TYPE VALUES         @Y17XAXF*/
*/*             X'01' - X'0F'  NCP RANGE                     @Y17XAXF*/
*/*             X'10' - X'1F'  PUNT RANGE                    @Y17XAXF*/
*/*             X'20' - X'2F'  LINE RANGE                    @Y17XAXF*/
*/*             X'30' - X'3F'  LUNT RANGE                    @Y17XAXF*/
*/*             X'40' - X'4F'  PRE-SNA RANGE                 @Y17XAXF*/
*/*             X'50' - X'EF'  NEW TYPES                     @Y17XAXF*/
*/*             X'F0' - X'FF'  HOST ELEMENT RANGE            @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL                                      /*                @Y17XAXF*/
*       TRMGRP   BIT(8)  CONSTANT('00'X),  /*  GROUP IND     @Y17XAXF*/
*       TRMLNCP  BIT(8)  CONSTANT('0F'X);  /*  NCP INDICATOR @Y17XAXF*/
* DCL                                      /*                @Y17XAXF*/
*       TRMPUNT  BIT(8)  CONSTANT('18'X);  /*  PUNT IND      @Y17XAXF*/
* DCL                                      /*                @Y17XAXF*/
*       TRMNSDLC BIT(8)  CONSTANT('20'X),  /*  BSC/SS LINE   @Y17XAXF*/
*       TRMSDLC  BIT(8)  CONSTANT('21'X);  /*  SDLC LINE     @Y17XAXF*/
* DCL                                      /*                @Y17XAXF*/
*       TRMLUNT  BIT(8)  CONSTANT('30'X);  /*  LUNT IND      @Y17XAXF*/
* DCL                                      /*                @Y17XAXF*/
*       TRMCLUST BIT(8)  CONSTANT('40'X),  /*  PRE-SNA CLUST @Y17XAXF*/
*       TRMCTERM BIT(8)  CONSTANT('48'X),  /*  CTERM IND     @Y17XAXF*/
*       TRMPSNA  BIT(8)  CONSTANT('4F'X);  /*  PRE-SNA IND   @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      X'50'- X'EF'    RESERVED                            @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL                                      /*                @Y17XAXF*/
*       TRMSSCP  BIT(8)  CONSTANT('FF'X);  /*  SSCP IND      @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      VALUES FOR TRMSTATE                                 @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL                                                     /* @Y17XAXF*/
*        TRMSNGLE BIT(8) CONSTANT('E0'X);    /* MASK TO TEST @Y17XAXF*/
*                                            /* FOR TPROC,   @Y17XAXF*/
*                                            /* LOG, LIST OR @Y17XAXF*/
*                                            /* LINE.        @Y17XAXG*/
*/*                                                          @Y17XAXF*/
*/*      CONTACT STATE VALUES (USED WITH TRMPCONT AND        @Y17XAXF*/
*/*                                      TRMNCONT)           @Y17XAXF*/
* DCL                                   /*                   @Y17XAXF*/
*      TRMCRSET  BIT(3)  CONSTANT('000'B),  /* RESET         @Y17XAXF*/
*      TRMCCSNT  BIT(3)  CONSTANT('001'B),  /* CONTACT SENT  @Y17XAXF*/
*      TRMCAPND  BIT(3)  CONSTANT('010'B),  /* ACTIVE PEND'G @Y17XAXF*/
*      TRMCRPND  BIT(3)  CONSTANT('011'B),  /* RESET PENDING @Y17XAXF*/
*      TRMCACTV  BIT(3)  CONSTANT('100'B);  /* ACTIVE        @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      LINK STATES(USED WITH TRMLSTAT)                     @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL                                                     /* @Y17XAXF*/
*        TRMLRSET BIT(2)  CONSTANT('00'B), /* RESET          @Y17XAXF*/
*        TRMLAPND BIT(2)  CONSTANT('01'B), /* ACTIVE PENDING @Y17XAXF*/
*        TRMLRPND BIT(2)  CONSTANT('10'B), /* RESET PENDING  @Y17XAXF*/
*        TRMLACTV BIT(2)  CONSTANT('11'B); /* ACTIVE         @Y17XAXF*/
*/*                                                          @Y17XAXF*/
*/*      DEVICE DEPENDENT FIELD MASKS                        @Y17XAXF*/
*/*                                                          @Y17XAXF*/
* DCL                                                     /* @Y17XAXF*/
*        TRMTPINM BIT(16) CONSTANT('0004'X),/* TPROCESS INFO MASK
*                                                            @Y17XAXF*/
*        TRMNCPIM BIT(16) CONSTANT('0008'X),/* NCP INFO MASK @Y17XAXF*/
*        TRMRNTMK BIT(16) CONSTANT('0010'X),/* 3705 MODE FLD @Y17XAXF*/
*        TRMDDIGA BIT(16) CONSTANT('4000'X);/* DIAL DIGITS FIELD
*                                                            @Y17XAXF*/
*                                                         /* @Y17XAXG*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 TRMPRE1  BIT(8) DEFINED(TRMBYTE4), /* PRE-SNA STAT BYTE @Y17XAXF*/
*    2 TRMCONT  BIT(1),                 /*  CONTACT INIT SES @Y17XAXF*/
*    2 TRMSESSN BIT(1),                 /*  TERM IN SESSION  @Y17XAXF*/
*    2 TRMOCNI  BIT(1),                 /*  STOP LINE INPRG  @Y17XAXF*/
*    2 TRMSPACT BIT(1),                 /*  TERM'S LINE ACTV @Y17XAXF*/
*    2 TRMQNPL  BIT(1),                 /*  Q'D NEG POLL LIM @Y17XAXF*/
*                                       /*   RECEIVED        @Y17XAXF*/
*    2 TRMERLCK BIT(1),                 /*  TERM IN ERR LOCK @Y17XAXF*/
*    2 TRMSPOUT BIT(1),                 /*  SPEC PROC REQ    @Y17XAXF*/
*    2 TRMLYNCH BIT(1);                 /*  DISCONN REC'VD   @Y17XAXF*/
*DECLARE                                /*                   @YM08120*/
* 1 TRMNCP1 BIT(8) DEF(TRMBYTE4),       /* STATUS BYTE       @YM08120*/
*  2 TRMINOP BIT(1),                    /* INOP FOR NCP      @YM08120*/
*  2    *    BIT(7);                    /* RESERVED          @YM08120*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 TRMPRE  BIT(8) DEFINED(TRMBYTE3),  /* PRE-SNA STAT BYTE @Y17XAXF*/
*    2 TRMSTPND BIT(1),                 /*  STAT PEND'G FLAG @Y17XAXF*/
*    2 TRMCMODE BIT(1),                 /*  CHG MODE REQUEST @Y17XAXF*/
*    2 TRMSTMM  BIT(1),                 /*  STOP MIDMES INPG @Y17XAXF*/
*    2 TRMASNXI BIT(1),                 /*  RESET IMMED INPG @Y17XAXF*/
*    2 TRMWROUT BIT(1),                 /*  WRITE OUTSTAND'G @Y17XAXF*/
*    2 TRMNLOUT BIT(1),                 /*  NULL WRITE OR    @Y17XAXF*/
*                                       /*   CONTACT OUTST'G @Y17XAXF*/
*    2 TRMRDOUT BIT(1),                 /*  READ OUTSTAND'G  @Y17XAXF*/
*    2 TRMINOUT BIT(1);                 /*  INVITE OUTST'G   @Y17XAXF*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 TRMNCP BIT(8) DEF(TRMBYTE3) ABNL,  /* NCP STATUS BYTE   @Y17XAXF*/
*    2 TRMIPLDM BIT(1) ABNL,            /*  IPL/DMP INPROG   @Y17XAXF*/
*    2 TRMNCPCL BIT(1),                 /*  CLOSEDOWN INPRG  @Y17XAXF*/
*    2 TRMSYGEN BIT(1),                 /*  SYSGEN NCP ACTIVE STATE
*                                                            @Y17XAXF*/
*    2 TRMSLOWN BIT(1),                 /*  3705 SLOWDWN     @Y17XAXF*/
*                                       /*   IN PROGRESS     @Y17XAXF*/
*    2 TRMQUCKN BIT(1),                 /*  NCP QUICK        @Y17XAXF*/
*                                       /*   CLOSEDOWN       @Y17XAXF*/
*    2 TRMNCONT BIT(3);                 /*  NCP CONTACT      @Y17XAXF*/
*                                       /*   STATE           @Y17XAXF*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 TRMPU  BIT(8) DEFINED(TRMBYTE3),   /* PU STATUS BYTE    @Y17XAXF*/
*    2 *        BIT(5),                 /*  RESERVED         @Y17XAXF*/
*    2 TRMPCONT BIT(3);                 /*  PU CONTACT       @Y17XAXF*/
*                                       /*   STATES          @Y17XAXF*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 TRMLU BIT(8) DEFINED(TRMBYTE3) ABNL,/*LUNT STATUS BYTE  @PI06917*/
*    2 TRMAUTO  BIT(1),                 /*  AUTO BIND TO     @Y17XAXF*/
*                                       /*   TCAM            @Y17XAXF*/
*    2 TRMLUIT  BIT(1),                 /*  LU INITIATES     @Y17XAXF*/
*                                       /*   SESSION         @Y17XAXF*/
*    2 TRMLUTM  BIT(1),                 /*  LU TERMINATES    @Y17XAXF*/
*                                       /*   SESSION         @Y17XAXF*/
*    2 TRMTDIFF BIT(1),                 /*  TOTE TERM IND    @Y17XAXF*/
*    2 TRMSESRQ BIT(1),                 /*  LU-LU SESS REQ   @Y17XAXF*/
*                                       /*   FROM IEDLUS     @Y17XAXF*/
*    2 TRMLUREQ BIT(1),                 /*  SESS INITIATED   @Y17XAXF*/
*                                       /*   BY LU           @Y17XAXF*/
*    2 TRMINERR BIT(1),                 /*  INITIATION ERROR PROCESSING
*                                           IN PROGRESS      @PI06917*/
*    2 TRMLULOG BIT(1);                 /*  CAPABLE OF LOGON TO TCAM
*                                                            @Y17XAXF*/
* DECLARE                                                 /* @Y17XAXF*/
*  1 TRMLINK BIT(8) DEFINED(TRMBYTE3),  /* LINE STATUS BYTE  @Y17XAXF*/
*    2 TRMEPMOD BIT(1),                 /*  LINE IN EP MODE  @Y17XAXF*/
*    2 TRMLINT  BIT(1),                 /*  3705 TRACE ACTVE @Y17XAXF*/
*    2 TRMLSTAT BIT(2),                 /*  LINK STATUS      @Y17XAXF*/
*    2 *        BIT(4);                 /*  RESERVED         @Y17XAXF*/
*%TRMPRFSZ='LENGTH(IEDNTRM)';           /* MACRO VAR PRF LEN @Y17XAXF*/
*/*                                                                  */
./ ADD NAME=TTSWD
*        %GOTO PLSTSW;                  /* BILINGUAL HEADER
         MACRO
         TTSWD
.*A000000-999999                                               @Y17XAXF
IEDQTSW  DSECT
*
*        TSO WORK AREA
*
TSWTSBFR DS    A .                      TSO BFR OR MSGGEN ADDR
TSWTCBFR DS    A .                      TCAM BFR OR SCB MSGGEN ADDR
TSWMOVED DS    H .                      NUMBER BYTES DATA MOVED
TSWLINE  DS    H .                      NUMBER BYTES REMAINING ON LINE
TSWTSBSZ DS    H .                      TSO BFR DATA SIZE
TSWMSGSZ DS    H .                      MESSAGE SIZE
TSWTCBSZ DS    H .                      TCAM BFR SIZE
TSWFCD   DS    X .                      3270 FUNCTION CODES
TSWSTFD  EQU   X'F0' .                   START FIELD INSERT
TSWRDAT  EQU   X'F1' .                   READ ATTRIBUTE INSERT
TSWSBA   EQU   X'F2' .                   SBA INSERT
TSWCUR1  EQU   X'F3' .                   FIRST CURSOR INSERT
TSWCUR2  EQU   X'F4' .                   SECOND CURSOR INSERT
TSWINC   EQU   X'F5' .                   INC ORDER INSERT
TSWETX   EQU   X'F6' .                   ETX INSERT
TSWEOT   EQU   X'F7' .                   EOT INSERT
TSWETXOT EQU   X'F8' .                   ETX/EOT INSERT
TSWBYP   EQU   X'F9' .                   BYPASS CHAR INSERT
TSWRES   EQU   X'FA' .                   RESTORE CHAR INSERT
TSWCARCT DS    X .                      CARRIAGE POSITION
TSWTSLNS DS    0H .                     TSB OR DEFAULT LINE SIZE
TSWLNN   DS    X .                      NUMBER OF LINES FOR DISPLAYS
TSWLNSZ  DS    X .                      LINE SIZE FOR DISPLAYS
TSWSWT1  DS    X .                      SWITCH 1
TSWC2F   EQU   X'80' .                   SECOND CURSOR FLAG
TSWC1F   EQU   X'40' .                   FIRST CURSOR FLAG
TSWRDAF  EQU   X'20' .                   READ ATTRIBUTE FLAG
TSWSFF   EQU   X'10' .                   START FIELD FLAG
TSWBYPF  EQU   X'08' .                   BYPASS CHAR FLAG
TSWCRNLF EQU   X'04' .                   CARRIAGE RETURN/NEW LINE FLAG
TSWSBAF  EQU   X'02' .                   SET BUFFER ADDRESS FLAG
TSWWRAF  EQU   X'01' .                   WRITE ATTRIBUTE FLAG
TSWSWT2  DS    X .                      SWITCH 2
TSWRC4   EQU   4 .                       CALCSIZE RC 4
TSWRC8   EQU   8 .                       CALCSIZE RC 8
TSWRC12  EQU   12 .                      CALCSIZE RC 12
TSWRC16  EQU   16 .                      CALCSIZE RC 16
TSWRC40  EQU   40 .                      CALCSIZE RC 40
TSWRC44  EQU   44 .                      CALCSIZE RC 44
TSWFLG1  DS    X .                      TSO FUNCTION FLAGS 1
TSWTSMSG EQU   X'80' .                   TSO MESSAGE
TSWSASIS EQU   X'60' .                   ASIS SCREEN CONTROL
TSWCTL   EQU   X'40' .                   CONTROL MODE EDIT
TSWASIS  EQU   X'20' .                   ASIS EDIT
TSWMSGN1 EQU   X'10' .                   FIRST MSGGEN SWITCH
TSWFMTI  EQU   X'08' .                   SCREEN FORMAT IN BFR
TSWNLEFT EQU   X'06' .                   NO LEFT JUSTIFICATION REQ
TSWLEFT  EQU   X'05' .                   LEFT JUSTIFICATION REQ
TSWFLG2  DS    X .                      TSO FUNCTION FLAGS 2
*        EQU   X'80'-'02'                RESERVED              @YM06885
TSWNROOM EQU   X'01' .                   NO ROOM IN TCAM BFR   @YM06885
*                                          FOR EDIT            @YM06885
TSWCURSV DS    H .                      SCREEN CURSOR ADDRESS
TSWEFLG1 DS    X .                      EDIT FLAGS 1
TSWTRLR  EQU   X'80' .                   TRAILER BUFFER FLAG
TSWPRTMV EQU   X'40' .                   PARTIAL MOVE FLAG
TSWRESF  EQU   X'20' .                   RESTORE CHAR FLAG
TSWRECAL EQU   X'10' .                   BYPASS CODE AND RESET
TSWSYN   EQU   X'08' .                   SYN CHARS INSERTED    @YM06885
TSWINCF  EQU   X'04' .                   INSERT CURSOR FLAG
TSWEOTF  EQU   X'02' .                   EOT FLAG
TSWETXF  EQU   X'01' .                   ETX FLAG
TSWEFLG2 DS    X .                      EDIT FLAG 2
TSW3705  EQU   X'80' .                   TERMINAL ON 3705
TSW1050  EQU   X'40' .                   TERMINAL IS 1050
TSWPRMPT EQU   X'20' .                   PROMPT STRING FLAG
TSWNLCRF EQU   X'10' .                   NL/CR COUNT FLAG
TSWLNCT  EQU   X'08' .                   LINE COUNT FLAG
TSWRDAP  EQU   X'04' .                   READ ATTRIBUTE LINE POS. FLAG
TSWHDRF  EQU   X'02' .                   FIRST BASIC UNIT FLAG
TSWNMVCT EQU   X'01' .                   NO MOVE COUNT FLAG
TSWFIRST DS    X .                      FIRST CHARACTER
TSWLAST  DS    X .                      LAST CHARACTER
TSWTOCT  DS    F .                      TO DATA COUNT
TSWFRCT  DS    F .                      FROM DATA COUNT
TSWTSCUR DS    F .                      CURRENT TSO BUFFER
TSWMSGNL DS    H .                      LENGTH OF MSGGEN DATA
TSWSBAI  EQU   X'EF' .                   SBA ALREADY INCLUDED
TSWCUR1I EQU   X'EE' .                   CUR1 ALREADY INCLUDED
TSWCUR2I EQU   X'ED' .                   CUR2 ALREADY INCLUDED
TSWSFI   EQU   X'EC' .                   START FIELD ALREADY INCLUDED
TSWWRAI  EQU   X'EB' .                   WRITE ATTRIBUTE INCLUDED
TSWDSAV  DS    D .                      DOUBLE WORD SAVE
TSWDCT   DS    CL6 .                    DCT ENTRY
TSWLEN   EQU   *-IEDQTSW .              TSO WORKAREA LENGTH
         MEND  */
*%PLSTSW:;
* DECLARE
*  1 IEDQTSW  BASED(RTSW),
*/*                                                                  */
*/*      TSO WORK AREA                                               */
*/*                                                                  */
*   2 TSWTSBFR PTR(31),                 /* TSO BFR OR MSGGEN ADDR    */
*   2 TSWTCBFR PTR(31),                 /* TCAM BFR OR SCB MSGGEN ADDR
*                                                                    */
*   2 TSWMOVED FIXED(16),               /* NUMBER BYTES DATA MOVED   */
*   2 TSWLINE  FIXED(16),               /* NUMBER BYTES REMAINING ON
*                                          LINE                      */
*   2 TSWTSBSZ FIXED(16),               /* TSO BFR DATA SIZE         */
*   2 TSWMSGSZ FIXED(16),               /* MESSAGE SIZE              */
*   2 TSWTCBSZ FIXED(16),               /* TCAM BFR SIZE             */
*   2 TSWFCD   BIT(8),                  /* 3270 FUNCTION CODES       */
*   2 TSWCARCT FIXED(8),                /* CARRIAGE POSITION         */
*   2 TSWTSLNS FIXED(16),               /* TSB OR DEFAULT LINE SIZE  */
*    3 TSWLNN   FIXED(8),               /* NUM OF LINES FOR DISPLAYS */
*    3 TSWLNSZ  FIXED(8),               /* LINE SIZE FOR DISPLAYS    */
*   2 TSWSWT1  BIT(8),                  /* SWITCH 1                  */
*    3 TSWC2F   BIT(1),                 /* SECOND CURSOR FLAG        */
*    3 TSWC1F   BIT(1),                 /* FIRST CURSOR FLAG         */
*    3 TSWRDAF  BIT(1),                 /* READ ATTRIBUTE FLAG       */
*    3 TSWSFF   BIT(1),                 /* START FIELD FLAG          */
*    3 TSWBYPF  BIT(1),                 /* BYPASS CHAR FLAG          */
*    3 TSWCRNLF BIT(1),                 /* CARR RETURN/NEW LINE FLAG */
*    3 TSWSBAF  BIT(1),                 /* SET BUFFER ADDRESS FLAG   */
*    3 TSWWRAF  BIT(1),                 /* WRITE ATTRIBUTE FLAG      */
*   2 TSWSWT2  BIT(8),                  /* SWITCH 2                  */
*   2 TSWFLG1  BIT(8),           /* TSO FUNCTION FLAGS 1      @YM06885*/
*    3 TSWTSMSG  BIT(1),         /* TSO MESSAGE               @YM06885*/
*    3 TSWSCCTL  BIT(2),         /* SCREEN CONTROL            @YM06885*/
*     4 TSWCTL   BIT(1),         /* CONTROL MODE EDIT         @YM06885*/
*     4 TSWASIS BIT(1),          /* ASIS EDIT                 @YM06885*/
*    3 TSWMSGN1  BIT(1),         /* FIRST MSGGEN SWITCH       @YM06885*/
*    3 TSWFMTI   BIT(1),         /* SCREEN FORMAT IN BFR      @YM06885*/
*    3 TSWJUSTI  BIT(3),         /* JUSTIFICATION FLAGS       @YM06885*/
*   2 TSWFLG2  BIT(8),           /* TSO FUNCTION FLAGS 2      @YM06885*/
*    3 *         BIT(7),         /* RESERVED                  @YM06885*/
*    3 TSWNROOM  BIT(1),         /* NO ROOM IN TCAM BFR       @YM06885*/
*                                /*   FOR EDIT                @YM06885*/
*   2 TSWCURSV FIXED(16),               /* SCREEN CURSOR ADDRESS     */
*   2 TSWEFLG1 BIT(8),                  /* EDIT FLAGS 1              */
*    3 TSWTRLR  BIT(1),                 /* TRAILER BUFFER FLAG       */
*    3 TSWPRTMV BIT(1),                 /* PARTIAL MOVE FLAG         */
*    3 TSWRESF  BIT(1),                 /* RESTORE CHAR FLAG         */
*    3 TSWRECAL BIT(1),                 /* BYPASS CODE AND RESET     */
*    3 TSWSYN   BIT(1),                 /* SYN CHARS INSERTED @YM06885*/
*    3 TSWINCF  BIT(1),                 /* INSERT CURSOR FLAG        */
*    3 TSWEOTF  BIT(1),                 /* EOT FLAG                  */
*    3 TSWETXF  BIT(1),                 /* ETX FLAG                  */
*   2 TSWEFLG2 BIT(8),                  /* EDIT FLAG 2               */
*    3 TSW3705  BIT(1),                 /* TERMINAL ON 3705          */
*    3 TSW1050  BIT(1),                 /* TERMINAL IS 1050          */
*    3 TSWPRMPT BIT(1),                 /* PROMPT STRING FLAG        */
*    3 TSWNLCRF BIT(1),                 /* NL/CR COUNT FLAG          */
*    3 TSWLNCT  BIT(1),                 /* LINE COUNT FLAG           */
*    3 TSWRDAP  BIT(1),                 /* READ ATTRIBUTE LINE POS.
*                                          FLAG                      */
*    3 TSWHDRF  BIT(1),                 /* FIRST BASIC UNIT FLAG     */
*    3 TSWNMVCT BIT(1),                 /* NO MOVE COUNT FLAG        */
*   2 TSWFIRST CHAR(1),                 /* FIRST CHARACTER           */
*   2 TSWLAST  CHAR(1),                 /* LAST CHARACTER            */
*   2 TSWTOCT  FIXED(31),               /* TO DATA COUNT             */
*   2 TSWFRCT  FIXED(31),               /* FROM DATA COUNT           */
*   2 TSWTSCUR FIXED(31),               /* CURRENT TSO BUFFER        */
*   2 TSWMSGNL FIXED(16),               /* LENGTH OF MSGGEN DATA     */
*   2 TSWDSAV  CHAR(8),                 /* DOUBLE WORD SAVE          */
*   2 TSWDCT   CHAR(6);                 /* DCT ENTRY                 */
*%TSWLEN='LENGTH(IEDQTSW)';             /* TSO WORKAREA LENGTH       */
*
*/*                                                                  */
*/*      TSWFCD VALUES                                               */
*/*                                                                  */
* DCL TSWSTFD  BIT(8) CONSTANT('F0'X);  /* START FIELD INSERT        */
* DCL TSWRDAT  BIT(8) CONSTANT('F1'X);  /* READ ATTRIBUTE INSERT     */
* DCL TSWSBA   BIT(8) CONSTANT('F2'X);  /* SBA INSERT                */
* DCL TSWCUR1  BIT(8) CONSTANT('F3'X);  /* FIRST CURSOR INSERT       */
* DCL TSWCUR2  BIT(8) CONSTANT('F4'X);  /* SECOND CURSOR INSERT      */
* DCL TSWINC   BIT(8) CONSTANT('F5'X);  /* INC ORDER INSERT          */
* DCL TSWETX   BIT(8) CONSTANT('F6'X);  /* ETX INSERT                */
* DCL TSWEOT   BIT(8) CONSTANT('F7'X);  /* EOT INSERT                */
* DCL TSWETXOT BIT(8) CONSTANT('F8'X);  /* ETX/EOT INSERT            */
* DCL TSWBYP   BIT(8) CONSTANT('F9'X);  /* BYPASS CHAR INSERT        */
* DCL TSWRES   BIT(8) CONSTANT('FA'X);  /* RESTORE CHAR INSERT       */
*/*                                                                  */
*/*      TSWSWT2 VALUES                                              */
*/*                                                                  */
* DCL TSWRC4   FIXED(8) CONSTANT(4);    /* CALCSIZE RC 4             */
* DCL TSWRC8   FIXED(8) CONSTANT(8);    /* CALCSIZE RC 8             */
* DCL TSWRC12  FIXED(8) CONSTANT(12);   /* CALCSIZE RC 12            */
* DCL TSWRC16  FIXED(8) CONSTANT(16);   /* CALCSIZE RC 16            */
* DCL TSWRC40  FIXED(8) CONSTANT(40);   /* CALCSIZE RC 40            */
* DCL TSWRC44  FIXED(8) CONSTANT(44);   /* CALCSIZE RC 44            */
*/*                                                                  */
*/*     TSWSCCTL VALUES                                       @YMO6885*/
*/*                                                                  */
* DCL TSWSASIS BIT(2) CONSTANT('11'B);  /* ASIS SCREEN CNTRL  @YM06885*/
*/*                                                                  */
*/*     TSWJUSTI VALUES                                       @YM06885*/
*/*                                                                  */
* DCL TSWNLEFT BIT(3) CONSTANT('110'B); /*NO LEFT JUSTIFY RQD @YM06885*/
* DCL TSWLEFT  BIT(3) CONSTANT('101'B); /* LEFT JUSTIFY REQD  @YM06885*/
*/*                                                                  */
*/*      TSWMSGNL VALUES                                             */
*/*                                                                  */
* DCL TSWSBAI  BIT(8) CONSTANT('EF'X);  /* SBA ALREADY INCLUDED      */
* DCL TSWCUR1I BIT(8) CONSTANT('EE'X);  /* CUR1 ALREADY INCLUDED     */
* DCL TSWCUR2I BIT(8) CONSTANT('ED'X);  /* CUR2 ALREADY INCLUDED     */
* DCL TSWSFI   BIT(8) CONSTANT('EC'X);  /* START FIELD  INCLUDED     */
* DCL TSWWRAI  BIT(8) CONSTANT('EB'X);  /* WRITE ATTRIBUTE INCLUDED  */
./ ADD NAME=TTTCD
*   %GOTO PLSTTTCD;               /* BILINGUAL HEADER
         MACRO
         TTTCD
.*A000000-999999                                               @Y17XAXV
.*C160000,630000-640000                                        @G36XRXV
*                                 ... TOTE/TCAM CONTROL BLOCKS ...
IEDTTCD  DSECT
TTCSTOFF EQU   LCBRCQCB-IEDQLCB         OFFSET INTO LCB OF LCBRCQCB
         ORG   IEDTTCD+L'LCBRCQCB
*
TTCSVCPL DS    0F                       SVC 102 PARM LIST
TTCSVCW1 DS    0A                       WORD 1
TTCPCODE DS    CL1                      POST CODE
TTCFIRST DS    AL3                      ADDR OF FIRST ELEMENT
TTCSVCW2 DS    0A                       WORD 2
TTCLAST  DS    AL4                      ADDR OF LAST ELEMENT
TTCCHAIN EQU   X'B4'                    CHAIN AQCTL POST       @G36XRXV
*
         ORG   IEDTTCD+LCBSTAT1-LCBRCQCB DISPLACEMENT TO NEXT LCB FLDS
         ORG   IEDTTCD+LCBSCBA-LCBRCQCB+L'LCBSCBA LOCATION PAST LCB
*                                       FIELDS
*
TTCQCB   DS    0F                       QCB
TTCQBFLG DS    CL1                      QCB FLAG FIELD - X'02 INDICATES
*                                        ECB POST TO DISPATCHER
TTCQBELC DS    AL3                      QCB ELEMENT CHAIN POINTER
TTCQBECB DS    1F                       QCB ECB
TTCQSTCB DS    1F                       QCB STCB CHAIN
*
TTCSCB   DS    0F                       SCB START
         MEND                     */
*%PLSTTTCD:;
*/*                                                                  */
*/*                                 ... TOTE/TCAM CONTROL BLOCKS ... */
*/*                                                                  */
*   DCL
*     1 IEDTTCD BASED (IEDTTCP),
*       2 * CHAR(*);                /* LENGTH OF LCBRCQCB FIELD      */
*   DCL
*     1 IEDTTCPL BASED(ADDR(IEDTTCD)+LENGTH(LCBRCQCB)),
*       2 TTCSVCPL BDY(WORD),       /* SVC 102 PARM LIST             */
*         3 TTCSVCW1,               /* WORD 1                        */
*           4 TTCPCODE CHAR(1),     /* POST CODE                     */
*           4 TTCFIRST PTR(24),     /* ADDR OF FIRST ELEMENT         */
*         3 TTCSVCW2 PTR(31),       /* WORD 2                        */
*           4 TTCLAST PTR(31),      /* ADDR OF LAST ELEMENT          */
*       2 * CHAR(*);                /* DISPLACEMENT OF NEXT LCB
*                                   FIELDS                           */
*   DCL
*     1 IEDTTCFD BASED(ADDR(IEDTTCD)+(ADDR(LCBSTAT1)-ADDR(LCBRCQCB))),
*                                   /* START OF LCB FIELDS USED      */
*       2 * CHAR(*);
*   DCL
*     1 IEDTTCQB BASED(ADDR(IEDTTCD)+(ADDR(LCBSCBA)-ADDR(LCBRCQCB))+
*                      LENGTH(LCBSCBA)), /*LOCATION PAST LCB FIELDS  */
*       2 TTCQCB BDY(WORD),         /* QCB                           */
*         3 TTCQBFLG CHAR(1),       /* QCB FLAG FIELD - X'02'
*                                   INDICATES ECB POST TO DISPATCHER */
*         3 TTCQBELC PTR(24),       /* QCB ELEMENT CHAIN POINTER     */
*         3 TTCQBECB BIT(32),       /* QCB ECB                       */
*         3 TTCQSTCB PTR(31),       /* QCB STCB POINTER              */
*       2 TTCSCB CHAR(0) BDY(WORD); /* SCB START                     */
*   DCL
*     TTCCHAIN BIT(8) CONSTANT('B4'X);/* POST CODE FOR CHAIN SVC 102
*                                   POST @G36XRXV                    */
./ ADD NAME=TXALKD
*        %GOTO PLSXALK;                                              /*
         MACRO
         TXALKD
.*A000000-999999                                               @Y17XAXG
*                       ... ACTIVATE LINK ...
IEDXALKD DSECT
XALKCMD  DS    0XL5                     ACTIVATE LINK COMMAND
XALKCODE DS    0XL3                     COMMAND CODE
XALKNETS DS    XL1                      NETWORK SERVICES
XALKCONF DS    XL1                      CONFIGURATION SERVICES
XALKREQ  DS    XL1                      ACTIVATE LINK REQUEST
XALKADDR DS    XL2                      NETWORK ADDRESS OF LINK
         MEND                                                        */
*%PLSXALK : ;
*DECLARE
*  1 IEDXALKD BASED(XALKPTR),
*    2 XALKCMD CHAR(5),                  /* ACTIVATE LINK COMMAND    */
*     3 XALKCODE CHAR(3),                /* COMMAND CODE             */
*      4 XALKNETS BIT(8),                /* NETWORK SERVICES         */
*      4 XALKCONF BIT(8),                /* CONFIGURATION SERVICES   */
*      4 XALKREQ BIT(8),                 /* ACTIVATE LINK REQUEST    */
*     3 XALKADDR BIT(16);                /* NETWORK ADDRESS OF LINK  */
*/*                                                                  */
./ ADD NAME=TXALUD
*        %GOTO PLSXALU;                                              /*
         MACRO
         TXALUD
.*A000000-999999                                               @Y17XAXG
*                       ... ACTIVATE LU ...
IEDXALUD DSECT
XALUCMD  DS    0XL3                     ACTLU COMMAND
XALUCODE DS    XL1                      COMMAND
XALUTYPE DS    XL1                      TYPE ACTIVATION
XALUPROF DS    XL1                      FM AND TS PROFILES
         MEND                                                        */
*%PLSXALU : ;
*DECLARE
*  1 IEDXALUD BASED(XALUPTR),
*    2 XALUCMD,                          /* ACTLU COMMAND            */
*     3 XALUCODE CHAR(1),                /* COMMAND CODE             */
*     3 XALUTYPE CHAR(1),                /* TYPE ACTIVATION          */
*     3 XALUPROF CHAR(1),                /* FM AND TS PROFILES       */
*      4 XALUFM BIT(4),                  /* FM PROFILE               */
*      4 XALUTS BIT(4);                  /* TS PROFILE               */
*/*                                                                  */
./ ADD NAME=TXAPUD
*        %GOTO PLSXAPU;                                      /*
         MACRO
         TXAPUD
.*A000000-999999                                               @Y17XAXG
*                   ACTPU COMMAND DSECT
IEDXAPUD DSECT
XAPUCMD  DS    0XL9                     ACTPU COMMAND
XAPUCODE DS    XL1                      COMMAND CODE
XAPUTYPE DS    XL1                      TYPE ACTIVATION
XAPUPROF DS    XL1                      FM AND TS PROFILES
XAPUSSCP DS    0XL6                     SSCP ID
         DS    XL1                      LAST FOUR BITS ARE PU TYPE
XAPUBID  DS    XL5                      BINARY ID
         MEND                                                        */
*%PLSXAPU : ;
*DECLARE
*  1 IEDXAPUD BASED(XAPUPTR),
*   2 XAPUCMD CHAR(9),                   /* ACTPU COMMAND            */
*    3 XAPUCODE CHAR(1),                 /* COMMAND CODE             */
*    3 XAPUTYPE CHAR(1),                 /* TYPE ACTIVATION          */
*    3 XAPUPROF CHAR(1),                 /* FM AND TS PROFILES       */
*     4 XAPUFM BIT(4),                   /* FM PROFILE               */
*     4 XAPUTS BIT(4),                   /* TS PROFILE               */
*    3 XAPUSSCP BIT(48),                 /* SSCP ID                  */
*     4 *        BIT(4),                 /* RESERVED                 */
*     4 XAPUPTYP BIT(4),                 /* PU TYPE CONTAINING SSCP  */
*     4 XAPUBID  BIT(40);                /* BINARY ID                */
*/*                                                                  */
./ ADD NAME=TXBFLD
*        %GOTO PLSBFLD;                 /*
         MACRO
         TXBFLD
*        NO ASSEMBLER VERSION FOR THIS DSECT
         MEND  */
*%PLSBFLD:;
*/*                                                                  */
*/*      BIND FAILURE REQUEST DSECT                                  */
*/*                                                                  */
*DCL 1 IEDXBFLD BASED(XBFLPTR),          /* BIND FAILED              */
*     2 XBFLCMD ,
*      3 XBFLCODE CHAR(3),               /* COMMAND CODE             */
*        4 XBFLNETS CHAR(1),             /* NETWORK SERVICES         */
*        4 XBFLSESS CHAR(1),             /* SESSION SERVICES         */
*        4 XBFLREQ CHAR(1),              /* BIND FAILED REQUEST      */
*      3 XBFLSNS CHAR(4),                /* SENSE                    */
*      3 XBFLRSN CHAR(1),                /* REASON                   */
*      3 XBFLKEY CHAR(1),                /* KEY                      */
*      3 XBFLPNA CHAR(2),                /* PRIMARY LU ID            */
*      3 XBFLSNA CHAR(2);                /* SECONDARY LU ID          */
./ ADD NAME=TXCIND
*        %GOTO PLSXCIN;                 /*
         MACRO
         TXCIND
.*A000000-999999                                               @Y17XAXF
*
*        CINIT COMMAND DSECT
*
IEDXCIND DSECT
XCINFIXD EQU   *                         FIXED LENGTH DATA
XCINCODE DS    0CL3                      COMMAND CODE
XCINNETS DS    CL1                       NETWORK SERVICES
XCINSESS DS    CL1                       SESSION SERVICES
XCINREQ  DS    CL1                       CINIT REQUEST
XCINFMT  DS    CL1                       FORMAT
XCINORG  DS    CL1                       INITIATE ORIGIN
XCINADDR DS    CL1                       NETWORK ADDRESS OF SLU
XCINBLEN DS    CL2                       LENGTH OF BIND IMAGE
XCINVAR  EQU   *                         VARIABLE LENGTH DATA
XCINBIMG EQU   *                         BIND IMAGE
XCINNTNM EQU   *                         SECONDARY LU NAME FIELD
XCINNTYP DS    CL1                       RESOURCE TYPE
XCINNLEN DS    XL1                       LENGTH OF NAME
XCINNAME EQU   *                         SLU NAME
XCINRQID EQU   *                         REQUESTOR ID FIELD
XCINRLEN DS    XL1                       LENGTH OF ID
XCINRID  EQU   *                         REQUESTOR ID
XCINPWRD EQU   *                         PASSWORD FIELD
XCINPLEN DS    XL1                       LENGTH OF PASSWORD
XCINPSWD EQU   *                         PASSWORD
XCINUFLD EQU   *                         USER FIELD
XCINULEN DS    XL1                       LENGTH OF USER DATA
XCINUSFD EQU   *                         USER DATA
         MEND  */
*%PLSXCIN:;
*/*                                                                  */
*/*      CINIT COMMAND DSECT                                         */
*/*                                                                  */
*DCL 1 IEDXCIND BASED(XCINPTR),
*     2 XCINFIXD,                        /* FIXED LENGTH DATA        */
*      3 XCINCODE CHAR(3),               /* COMMAND CODE             */
*       4 XCINNETS CHAR(1),              /* NETWORK SERVICES         */
*       4 XCINSESS CHAR(1),              /* SESSION SERVICES         */
*       4 XCINREQ  CHAR(1),              /* CINIT REQUEST            */
*      3 XCINFMT CHAR(1),                /* FORMAT                   */
*      3 XCINORG CHAR(1),                /* INITIATE ORIGIN          */
*      3 XCINADDR CHAR(2),               /* NETWORK ADDRESS OF SLU   */
*      3 XCINBLEN CHAR(2),               /* LENGTH OF BIND IMAGE     */
*     2 XCINVAR,                         /* VARIABLE LENGTH DATA     */
*      3 XCINBIMG CHAR(0),               /* BIND IMAGE               */
*      3 XCINNTNM,                       /* SECONDARY LU NAME FIELD  */
*       4 XCINNTYP CHAR(1),              /* RESOURCE TYPE            */
*       4 XCINNLEN FIXED(8),             /* LENGTH OF NAME           */
*       4 XCINNAME CHAR(0),              /* SLU NAME                 */
*      3 XCINRQID,                       /* REQUESTOR ID FIELD       */
*       4 XCINRLEN FIXED(8),             /* LENGTH OF ID             */
*       4 XCINRID CHAR(0),               /* REQUESTOR ID             */
*      3 XCINPWRD,                       /* PASSWORD FIELD           */
*       4 XCINPLEN FIXED(8),             /* LENGTH OF PASSWORD       */
*       4 XCINPSWD CHAR(0),              /* PASSWORD                 */
*      3 XCINUFLD,                       /* USER FIELD               */
*       4 XCINULEN FIXED(8),             /* LENGTH OF USER DATA      */
*       4 XCINUSFD CHAR(0);              /* USER DATA                */
./ ADD NAME=TXCOND
*        %GOTO PLSXCON;                                              /*
         MACRO
         TXCOND
.*A000000-999999                                               @Y17XAXG
*                       ... CONTACT ...
IEDXCOND DSECT
XCONCMD  DS    0XL5                     CONTACT COMMAND
XCONCODE DS    0XL3                     COMMAND CODE
XCONNETS DS    XL1                      NETWORK SERVICES
XCONCONF DS    XL1                      CONFIGURATION SERVICES
XCONREQ  DS    XL1                      CONTACT REQUEST
XCONADDR DS    XL2                      NETWORK ADDRESS OF PU
         MEND                                                        */
*%PLSXCON : ;
*DECLARE
*  1 IEDXCOND BASED(XCONPTR),
*    2 XCONCMD CHAR(5),                  /* CONTACT COMMAND          */
*     3 XCONCODE CHAR(3),                /* COMMAND CODE             */
*      4 XCONNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XCONCONF CHAR(1),               /* CONFIGURATION SERVICES   */
*      4 XCONREQ CHAR(1),                /* CONTACT REQUEST          */
*     3 XCONADDR CHAR(2);                /* NETWORK ADDRESS OF PU    */
*/*                                                                  */
./ ADD NAME=TXCTDD
*        %GOTO PLSXCTD;                                              /*
         MACRO
         TXCTDD
.*A000000-999999                                               @Y17XAXG
*                       ... CONTACTED ...
IEDXCTDD DSECT
XCTDCMD  DS    0XL6                     CONTACTED COMMAND
XCTDCODE DS    0XL3                     COMMAND CODE
XCTDNETS DS    XL1                      NETWORK SERVICES
XCTDCONF DS    XL1                      CONFIGURATION SERVICES
XCTDREQ  DS    XL1                      ACTIVATE LINK REQUEST
XCTDADDR DS    XL2                      NETWORK ADDRESS OF PU
XCTDSTAT DS    XL1                      STATUS
         MEND                                                        */
*%PLSXCTD : ;
*DECLARE
*  1 IEDXCTDD BASED(XCTDPTR),
*    2 XCTDCMD CHAR(6),                  /* CONTACTED COMMAND        */
      3 XCTDCODE CHAR(3),                /* COMMAND CODE             */
       4 XCTDNETS CHAR(1),               /* NETWORK SERVICES         */
       4 XCTDCONF CHAR(1),               /* CONFIGURATION SERVICES   */
       4 XCTDREQ CHAR(1),                /* ACTIVATE LINK REQUEST    */
      3 XCTDADDR CHAR(2),                /* NETWORK ADDRESS OF PU    */
      3 XCTDSTAT FIXED(8);               /* STATUS                   */
*/*                                                                  */
./ ADD NAME=TXCTMD
*        %GOTO PLSCTM;                  /*
         MACRO
         TXCTMD
*        ASSEMLBER VERION OF THIS DSECT NOT SUPPORTED
         MEND  */
*%PLSCTM:;
*/*                                                                  */
*/*      CTERM FORMAT                                                */
*/*                                                                  */
* DECLARE
* 1 IEDXCTMD BASED(XCTMPTR),            /* CTERM COMMAND             */
*  2 XCTMCMD,
*   3 XCTMCODE CHAR(3),                 /* COMMAND CODE              */
*    4 XCTMNETS CHAR(1),                /*  NETWORK SERVICES         */
*    4 XCTMSESS CHAR(1),                /*  SESSION SERVICES         */
*    4 XCTMREQ  CHAR(1),                /*  CTERM REQ                */
*   3 XCTMFMT  CHAR(1),                 /* FORMAT                    */
*   3 XCTMTYPE CHAR(1),                 /* TYPE                      */
*    4 XCTMTERM BIT(4),                 /* TYPE OF TERMINATE @YM08991*/
*    4 *        BIT(4),                 /* UNUSED            @YM08991*/
*   3 XCTMSNA  CHAR(2),                 /* SECONDARY LU ADDR         */
*   3 XCTMRSN  CHAR(1),                 /* REASON                    */
*   3 XCTMRQID,                         /* REQUESTOR ID              */
*    4 XCTMRLEN FIXED(8),               /*  LEN OF REQUESTOR ID DATA */
*    4 XCTMRID  CHAR(0),                /*  REQUESTOR ID DATA        */
*   3 XCTMPWRD,                         /* PASSWORD                  */
*    4 XCTMPLEN FIXED(8),               /*  LEN OF PASSWORD DATA     */
*    4 XCTMPSWD CHAR(0);                /*  PASSWORD DATA            */
* DCL XCTMTRMF BIT(4) CONSTANT('0010'B);/* FORCED TERMINATE  @YM08991*/
* DCL XCTMTRMO BIT(4) CONSTANT('0001'B);/* ORDERLY TERMINATE @YM08991*/
./ ADD NAME=TXDLKD
*        %GOTO PLSXDLK;                                              /*
         MACRO
         TXDLKD
.*A000000-999999                                               @Y17XAXG
*                       ... DEACTIVATE LINK ...
IEDXDLKD DSECT
XDLKCMD  DS    0XL5                     DEACTIVATE LINK COMMAND
XDLKCODE DS    0XL3                     COMMAND CODE
XDLKNETS DS    XL1                      NETWORK SERVICES
XDLKCONF DS    XL1                      CONFIGURATION SERVICES
XDLKREQ  DS    XL1                      DEACTIVATE LINK REQUEST
XDLKADDR DS    XL2                      NETWORK ADDRESS OF LINK
         MEND                                                        */
*%PLSXDLK : ;
*DECLARE
*  1 IEDXDLKD BASED(XDLKPTR),
*    2 XDLKCMD CHAR(5),                  /* DEACTIVATE LINK COMMAND  */
*     3 XDLKCODE CHAR(3),                /* COMMAND CODE             */
*      4 XDLKNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XDLKCONF CHAR(1),               /* CONFIGURATION SERVICES   */
*      4 XDLKREQ CHAR(1),                /* DEACTIVATE LINK REQUEST  */
*     3 XDLKADDR CHAR(2);                /* NETWORK ADDRESS OF LINK  */
*/*                                                                  */
./ ADD NAME=TXDPUD
*        %GOTO PLSXDPU;                                              /*
         MACRO
         TXDPUD
.*A000000-999999                                               @Y17XAXG
*               ... DEACTIVATE PU ...
IEDXDPUD DSECT
XDPUCMD  DS    0XL2                     DACTPU COMMAND
XDPUCODE DS    XL1                      COMMAND CODE
XDPUTYPE DS    XL1                      TYPE DEACTIVATION
         MEND                                                        */
*%PLSXDPU : ;
*DECLARE
*  1 IEDXDPUD  BASED(XDPUPTR),
*    2 XDPUCMD CHAR(2),                  /* DACTPU COMMAND           */
*     3 XDPUCODE BIT(8),                 /* COMMAND CODE             */
*     3 XDPUTYPE BIT(8);                 /* TYPE DEACTIVATION        */
*/*                                                                  */
./ ADD NAME=TXDSCD
*        %GOTO PLSXDSC;                                              /*
         MACRO
         TXDSCD
.*A000000-999999                                               @Y17XAXG
*                       ... DISCONTACT ...
IEDXDSCD DSECT
XDSCCMD  DS    0XL5                     DISCONTACT COMMAND
XDSCCODE DS    0XL3                     COMMAND CODE
XDSCNETS DS    XL1                      NETWORK SERVICES
XDSCCONF DS    XL1                      CONFIGURATION SERVICES
XDSCREQ  DS    XL1                      DISCONTACT REQUEST
XDSCADDR DS    XL2                      NETWORK ADDRESS OF PU
         MEND                                                        */
*%PLSXDSC : ;
*DECLARE
*  1 IEDXDSCD BASED(XDSCPTR),
*    2 XDSCCMD CHAR(5),                  /* DISCONTACT COMMAND       */
*     3 XDSCCODE CHAR(3),                /* COMMAND CODE             */
*      4 XDSCNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XDSCCONF CHAR(1),               /* CONFIGURATION SERVICES   */
*      4 XDSCREQ CHAR(1),                /* DISCONTACT REQUEST       */
*     3 XDSCADDR CHAR(2);                /* NETWORK ADDRESS OF PU    */
*/*                                                                  */
./ ADD NAME=TXEXTD
*   %GOTO PLSXEXT;                /* BILINGUAL HEADER
         MACRO
         TXEXTD
.*A000000-999999                                               @Y17XAXV
*                      ... EXECUTE TEST ...
IEDXEXTD DSECT
XEXTCODE DS    0XL3                     COMMAND CODE (FID1)
XEXTNETS DS    XL1                      NETWORK SERVICES
XEXTMAIN DS    XL1                      MAINTENANCE SERVICES
XEXTREQ  DS    XL1                      EXECUTE TEST  REQUEST
XEXTADDR DS    XL2                      NETWORK ADDRESS
XEXTPBDU DS    0XL4                     PARTIAL BASIC DATA UNIT
XEXTCMD0 DS    XL1                      FID0 COMMAND
XEXTMODF DS    XL1                      MODIFIER
XEXTSYSR DS    XL1                      SYSTEM RESPONSE
XEXTEXTR DS    XL1                      EXTENDED RESPONSE
XEXTEND  EQU   *                        END OF EXECUTE TEST COMMAND
XEXTTEXT EQU   *                        INTERPRETIVE COMMANDS TEXT
         MEND           */
*%PLSXEXT:;
*/*                                                                  */
*/*                          ... EXECUTE TEST ...                    */
*/*                                                                  */
*   DCL
*     1 IEDXEXTD BASED(IEDXEXTP),
*       2 XEXTCODE CHAR(3),       /*COMMAND CODE (FID1)*/
*         3 XEXTNETS CHAR(1),     /*NETWORK SERVICES*/
*         3 XEXTMAIN CHAR(1),     /*MAINTENANCE SERVICES*/
*         3 XEXTREQ  CHAR(1),     /*EXECUTE TEST REQUEST*/
*       2 XEXTADDR BIT(16),       /*NETWORK ADDRESS*/
*       2 XEXTPBDU CHAR(4),       /*PARTIAL BASIC DATA UNIT*/
*         3 XEXTCMD0 CHAR(1),     /*FID0 COMMAND*/
*         3 XEXTMODF CHAR(1),     /*MODIFIER*/
*         3 XEXTSYSR CHAR(1),     /*SYSTEM RESPONSE*/
*         3 XEXTEXTR CHAR(1),     /*EXTENDED RESPONSE*/
*       2 XEXTEND CHAR(0);        /*END OF EXECUTE TEST COMMAND*/
*   DCL
*     XEXTTEXT CHAR(*) DEF(XEXTEND);/*INTERPRETIVE COMMANDS TEXT*/
./ ADD NAME=TXNPLD
*        %GOTO PLSXNPL;                                              /*
         MACRO
         TXNPLD
.*A000000-999999                                               @Y17XAXG
*              ... CHANGE NEGATIVE POLL LIMIT ...
IEDXNPLD DSECT
XNPLCMD  DS    0XL6                     CHANGE NEGATIVE POLL LIMIT
XNPLCODE DS    0XL3                     COMMAND CODE
XNPLNETS DS    XL1                      NETWORK SERVICES
XNPLPRE  DS    XL1                      PRE SNA CODE
XNPLREQ  DS    XL1                      NEG POLL LIM REQUEST
XNPLADDR DS    XL2                      NETWORK ADDRESS OF PU
XNPLVAL  DS    XL1                      NEW VALUE FOR NEG POLL LIMIT
         MEND                                                        */
*%PLSXNPL : ;
*DECLARE
*  1 IEDXNPLD BASED(XNPLPTR),
*    2 XNPLCMD,                          /* CHANGE NEGATIVE POLL
*                                           LIMIT COMMAND            */
*     3 XNPLCODE CHAR(3),                /* COMMAND CODE             */
*      4 XNPLNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XNPLPRE  CHAR(1),               /* PRE SNA CODE             */
*      4 XNPLREQ CHAR(1),                /* NEG POLL LIM REQUEST     */
*     3  XNPLADDR CHAR(2),               /* NETWORK ADDRESS OF PU    */
*     3  XNPLVAL  CHAR(1);               /* NEW VAL FOR NEG POLL LIM */
*/*                                                                  */
./ ADD NAME=TXNSPD
*        %GOTO PLSXNSP;                 /*
         MACRO
         TXNSPD
*        NO ASSEMBLE VERSION FOR THIS DSECT
         MEND  */
*%PLSXNSP:;
*%IF COMPRE='YES'
*   %THEN %GOTO PLSXNSP1;
*/*                                                                  */
*/*      N. S. PROC ERROR DSECT                                      */
*/*                                                                  */
*DCL 1 IEDXNSPD BASED(XNSPPTR),          /* N. S. PROC ERROR         */
*     2 XNSPCMD,
*       3 XNSPCODE CHAR(3),              /* COMMAND CODE             */
*         4 XNSPNETS CHAR(1),            /* NETWORK SERVICES         */
*         4 XNSPSESS CHAR(1),            /* SESSION SERVICES         */
*         4 XNSPREQ  CHAR(1),            /* N.S. PROC REQUEST        */
*       3 XNSPRSN  CHAR(1),              /* REASON                   */
*       3 XNSPPLUN CHAR(10),             /* PRIMARY LU NAME FIELD    */
*          4 XNSPPTYP CHAR(1),           /* TYPE                     */
*          4 XNSPPLEN FIXED(8),          /* LENGTH OF NAME           */
*          4 XNSPPNME CHAR(8),           /* PRIMARY LU NAME          */
*       3 XNSPSLUN CHAR(10),             /* SECONDARY LU NAME FIELD  */
*          4 XNSPSTYP CHAR(1),           /* TYPE                     */
*          4 XNSPSLEN FIXED(8),          /* LENGTH                   */
*          4 XNSPSNME CHAR(8);           /* SECONDARY LU NAME        */
*%GOTO PLSXNSP2;
*%PLSXNSP1:;
*/*                                                                  */
*/*      N. S. PROC ERROR DSECT (COMPREHENSIVE VERSION)              */
*/*                                                                  */
*DCL 1 IEDXNSPD BASED(XNSPPTR),          /* N. S. PROC ERROR         */
*     2 XNSPCMD,
*       3 XNSPCODE CHAR(3),              /* COMMAND CODE             */
*         4 XNSPNETS CHAR(1),            /* NETWORK SERVICES         */
*         4 XNSPSESS CHAR(1),            /* SESSION SERVICES         */
*         4 XNSPREQ  CHAR(1),            /* N.S. PROC REQUEST        */
*       3 XNSPRSN  FIXED(8),             /* REASON                   */
*       3 XNSPPLUN,                      /* PRIMARY LU NAME FIELD    */
*          4 XNSPPTYP CHAR(1),           /* TYPE                     */
*       3 XNSPSLUN,                      /* SECONDARY LU NAME FIELD  */
*          4 XNSPSTYP CHAR(1),           /* TYPE                     */
*       3 XNSPSENS CHAR(4),              /* SENSE                    */
*       3 XNSPSKEY CHAR(1),              /* SESSION KEY              */
*       3 XNSPSNME CHAR(0);              /* SESSION KEY CONTENT      */
* DCL XNSPCVT BIT(8) CONSTANT('21'X);    /* REASON CODE FOR CONVERT
*                                           ERROR                    */
* DCL XNSPLEN FIXED(16) CONSTANT(11);    /* LENGTH OF COMPREHENSIVE
*                                           FORMAT                   */
*%PLSXNSP2:;
./ ADD NAME=TXRTDD
*   %GOTO PLSXRTD;                /* BILINGUAL HEADER
         MACRO
         TXRTDD
.*A000000-999999                                               @Y17XAXV
*                      ... RECORD TEST DATA ...
IEDXRTDD DSECT
XRTDCODE DS    0XL3                     COMMAND CODE (FID1)
XRTDNETS DS    XL1                      NETWORK SERVICES
XRTDMAIN DS    XL1                      MAINTENANCE SERVICES
XRTDREQ  DS    XL1                      RECORD TEST DATA REQUEST
XRTDADDR DS    XL2                      NETWORK ADDRESS
XRTDPBDU DS    0XL4                     PARTIAL BASIC DATA UNIT
XRTDCMD0 DS    XL1                      FID0 COMMAND
XRTDMODF DS    XL1                      MODIFIER
XRTDSYSR DS    XL1                      SYSTEM RESPONSE
XRTDEXTR DS    XL1                      EXTENDED RESPONSE
XRTDEND  EQU   *                        END OF RECORD TEST DATA COMMAND
XRTDTEXT EQU   *                        INTERPRETIVE COMMANDS TEXT
         MEND           */
*%PLSXRTD:;
*/*                                                                  */
*/*                          ... RECORD TEST DATA ...                */
*/*                                                                  */
*   DCL
*     1 IEDXRTDD BASED(IEDXRTDP),
*       2 XRTDCODE CHAR(3),       /*COMMAND CODE (FID1)*/
*         3 XRTDNETS CHAR(1),     /*NETWORK SERVICES*/
*         3 XRTDMAIN CHAR(1),     /*MAINTENANCE SERVICES*/
*         3 XRTDREQ  CHAR(1),     /*RECORD TEST DATA REQUEST*/
*       2 XRTDADDR BIT(16),       /*NETWORK ADDRESS*/
*       2 XRTDPBDU CHAR(4),       /*PARTIAL BASIC DATA UNIT*/
*         3 XRTDCMD0 CHAR(1),     /*FID0 COMMAND*/
*         3 XRTDMODF CHAR(1),     /*MODIFIER*/
*         3 XRTDSYSR CHAR(1),     /*SYSTEM RESPONSE*/
*         3 XRTDEXTR CHAR(1),     /*EXTENDED RESPONSE*/
*       2 XRTDEND CHAR(0);        /*END OF RECORD TEST DATA COMMAND*/
*   DCL
*     XRTDTEXT CHAR(*) DEF(XRTDEND);/*INTERPRETIVE COMMANDS TEXT*/
./ ADD NAME=TXSCVD
*        %GOTO PLSXSCV;                                              /*
         MACRO
         TXSCVD
.*A000000-999999                                               @Y17XAXG
*                    ... SET CONTROL VECTOR...
IEDXSCVD DSECT
XSCVCMD  DS    0XL6                     SET CONTROL VECTOR CMD
XSCVCODE DS    0XL3                     COMMAND CODE
XSCVNETS DS    XL1                      NETWORK SERVICES
XSCVCONF DS    XL1                      CONFIGURATION SERVICES
XSCVREQ  DS    XL1                      SET CONTROL VECTOR REQ
XSCVADDR DS    XL2                      NETWORK ADDRESS OF LINK
XSCVKEY  DS    XL1                      CONTROL VECTOR KEY
XSCVDATA EQU   *                        CONTROL VECTOR DATA
         MEND                                                        */
*%PLSXSCV : ;
*DECLARE
*  1 IEDXSCVD BASED(XSCVPTR),
*    2 XSCVCMD  CHAR(6),                 /* SET CONTROL VECTOR CMD   */
*     3 XSCVCODE CHAR(3),                /* COMMAND CODE             */
*      4 XSCVNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XSCVCONF CHAR(1),               /* CONFIGURATION SERVICES   */
*      4 XSCVREQ CHAR(1),                /* SET CONTROL VECTOR REQ   */
*     3 XSCVADDR CHAR(2),                /* NETWORK ADDRESS OF LINK  */
*     3 XSCVKEY  CHAR(1),                /* CONTROL VECTOR KEY       */
*    2 XSCVDATA CHAR(*);                 /* CONTROL VECTOR DATA      */
*/*                                                                  */
*DCL 1 XSCVTMDT DEF(XSCVDATA),           /* DATA FOR SET TIME & DATE */
*     2 XSCVMON CHAR(2),                 /* MONTH                    */
*     2 XSCVDLM1 CHAR(1),                /* DELIMITER                */
*     2 XSCVCDAY CHAR(2),                /* CALENDAR DATE            */
*     2 XSCVDLM2 CHAR(1),                /* DELIMITER                */
*     2 XSCVYEAR CHAR(2),                /* YEAR                     */
*     2 XSCVDLM3 CHAR(1),                /* DELIMITER                */
*     2 XSCVJDAY CHAR(3),                /* JULIAN DATE              */
*     2 XSCVHOUR CHAR(2),                /* HOUR                     */
*     2 XSCVDLM4 CHAR(1),                /* DELIMITER                */
*     2 XSCVMIN CHAR(2),                 /* MINUTES                  */
*     2 XSCVDLM5 CHAR(1),                /* DELIMITER                */
*     2 XSCVSEC CHAR(2);                 /* SECONDS                  */
*/*                                                                  */
*DCL XSCVTDLN FIXED(8) CONSTANT(26);     /* LENGTH FOR SET TIME AND
*                                           DATE SET CONTROL VECTOR  */
*/*                                                                  */
./ ADD NAME=TXSEPD
*        %GOTO PLSXSEP;                                              /*
         MACRO
         TXSEPD
.*A000000-999999                                               @Y17XAXG
*                       ... SWITCH TO EP ...
IEDXSEP  DSECT
XSEPCMD  DS    0XL3                     SWITCH TO EP COMMAND
XSEPCODE DS    XL1                      COMMAND CODE
XSEPADDR DS    XL2                      NETWORK ADDRESS OF LINE
         MEND  */
*%PLSXSEP : ;
*DECLARE
*  1 IEDXSEPD BASED(XSEPPTR),
*    2 XSEPCMD,                          /* SWITCH TO EP COMMAND     */
*     3 XSEPCODE CHAR(1),                /* COMMAND CODE             */
*     3 XSEPADDR CHAR(2);                /* NETWORK ADDRESS OF LINE  */
*/*                                                                  */
./ ADD NAME=TXSNDD
*        %GOTO PLSXSND;                 /*
         MACRO
         TXSNDD
*        NO ASSEMBLER VERSION FOR THE DSECT
         MEND  */
*%PLSXSND:;
*/*                                                                  */
*/*      SESSION ENDED REQUEST DSECT                                 */
*/*                                                                  */
*DCL 1 IEDXSNDD BASED(XSNDPTR),          /* SESSION ENDED            */
*      2 XSNDCMD,
*       3 XSNDCODE CHAR(3),              /* COMMAND CODE             */
*         4 XSNDNETS CHAR(1),            /* NETWORK SERVICES         */
*         4 XSNDSESS CHAR(1),            /* SESSION SERVICES         */
*         4 XSNDREQ  CHAR(1),            /* SESSION ENDED REQUEST    */
*       3 XSNDKEY  CHAR(1),              /* KEY                      */
*       3 XSNDPNA  CHAR(2),              /* PRIMARY LU ID            */
*       3 XSNDSNA  CHAR(2);              /* SECONDARY LU ID          */
./ ADD NAME=TXSNLD
*        %GOTO PLSXSNL;                                              /*
         MACRO
         TXSNLD
.*A000000-999999                                               @Y17XAXG
*              ... CHANGE SESSION LIMIT ...
IEDXSNLD DSECT
XSNLCMD  DS    0XL6                     CHANGE SESSION LIMIT
XSNLCODE DS    0XL3                     COMMAND CODE
XSNLNETS DS    XL1                      NETWORK SERVICES
XSNLPRE  DS    XL1                      RE SNA CODE
XSNLREQ  DS    XL1                      SESSION LIMIT REQUEST
XSNLADDR DS    XL2                      NETWORK ADDRESS
XSNLVAL  DS    XL1                      NEW VALUE FOR SESSION LIMIT
         MEND                                                        */
*%PLSXSNL : ;
*DECLARE
*  1 IEDXSNLD BASED(XSNLPTR),
*    2 XSNLCMD,                          /* CHANGE SESSION LIMIT
*                                           COMMAND                  */
*     3 XSNLCODE CHAR(3),                /* COMMAND CODE             */
*      4 XSNLNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XSNLPRE  CHAR(1),               /* PRE SNA CODE             */
*      4 XSNLREQ CHAR(1),                /* SESSION LIMIT REQUEST    */
*     3  XSNLADDR CHAR(2),               /* NETWORK ADDRESS          */
*     3  XSNLVAL  CHAR(1);               /* NEW VAL FOR SESSION LIMIT*/
*/*                                                                  */
./ ADD NAME=TXSNPD
*        %GOTO PLSXSNP;                                              /*
         MACRO
         TXSNPD
.*A000000-999999                                               @Y17XAXG
*                       ... SWITCH TO NCP ...
IEDXSNPD DSECT
XSNPCMD  DS    0XL3                     SWITCH TO NCP COMMAND
XSNPCODE DS    XL1                      COMMAND CODE
XSNPADDR DS    XL2                      NETWORK ADDRESS OF LINE
         MEND                                                        */
*%PLSXSNP : ;
*DECLARE
*  1 IEDXSNPD BASED(XSNPPTR),
*    2 XSNPCMD,                          /* SWITCH TO NCP COMMAND    */
*     3 XSNPCODE CHAR(1),                /* COMMAND CODE             */
*     3 XSNPADDR CHAR(2);                /* NETWORK ADDRESS OF LINE  */
*/*                                                                  */
./ ADD NAME=TXSSPD
*        %GOTO PLSXSSP;                                              /*
         MACRO
         TXSSPD
.*A000000-999999                                               @Y17XAXG
*              ... CHANGE SERVICE SEEKING PAUSE ...
IEDXSSPD DSECT
XSSPCMD  DS    0XL5                     CHANGE SERVICE SEEKING PAUSE
*                                       COMMAND
XSSPCODE DS    0XL3                     COMMAND
XSSPNETS DS    XL1                      NETWORK SERVICES
XSSPPRE  DS    XL1                      PRE SNA CODE
XSSPREQ  DS    XL1                      SERV SEEK PAUSE REQUEST
XSSPADDR DS    XL2                      NETWORK ADDRESS OF PU
XSSPVAL  DS    XL1                      VEW VALUE FOR SERV SEEK PAUSE
         MEND                                                        */
*%PLSXSSP : ;
*DECLARE
*  1 IEDXSSPD BASED(XSSPPTR),
*    2 XSSPCMD,                          /* CHANGE SERVICE SEEKING
*                                           PAUSE COMMAND            */
*     3 XSSPCODE CHAR(3),                /* COMMAND CODE             */
*      4 XSSPNETS CHAR(1),               /* NETWORK SERVICES         */
*      4 XSSPPRE  CHAR(1),               /* PRE SNA CODE             */
*      4 XSSPREQ CHAR(1),                /* SERV SEEK PAUSE REQUEST  */
*     3 XSSPADDR CHAR(2),                /* NETWORK ADDRESS OF PU    */
*     3 XSSPVAL  CHAR(1);                /* NEW VAL FOR SERV SEEK PAU*/
*/*                                                                  */
./ ADD NAME=TXSSTD
*        %GOTO PLSXSST;                 /*
         MACRO
         TXSSTD
*        NO ASSEMBLER VERSION FOR THE DSECT
         MEND  */
*%PLSXSST:;
*/*                                                                  */
*/*      SESSION STARTED REQUEST DSECT                               */
*/*                                                                  */
*DCL 1 IEDXSSTD BASED(XSSTPTR),          /* SESSION STARTED          */
*      2 XSSTCMD,
*       3 XSSTCODE CHAR(3),              /* COMMAND CODE             */
*         4 XSSTNETS CHAR(1),            /* NETWORK SERVICES         */
*         4 XSSTSESS CHAR(1),            /* SESSION SERVICES         */
*         4 XSSTREQ  CHAR(1),            /* SESSION STARTED REQUEST  */
*       3 XSSTKEY  CHAR(1),              /* KEY                      */
*       3 XSSTPNA  CHAR(2),              /* PRIMARY LU ID            */
*       3 XSSTSNA  CHAR(2);              /* SECONDARY LU ID          */
./ ADD NAME=TXUNBD
*        %GOTO PLSXUNB;                                              /*
         MACRO
         TXUNBD
.*A000000-999999                                               @Y17XAXG
*                       ... UNBIND ...
IEDXUNBD DSECT
XUNBCMD  DS    0XL2                     UNBIND COMMAND
XUNBCODE DS    XL1                      COMMAND CODE
XBNDTYPE DS    XL1                      TYPE ACTIVATION
         MEND                                                        */
*%PLSXUNB : ;
*DECLARE
*  1 IEDXUNBD BASED(XUNBPTR),
*    2 XUNBCMD CHAR(2),                  /* UNBIND COMMAND           */
*     3 XUNBCODE CHAR(1),                /* COMMAND CODE             */
*     3 XBNDTYPE CHAR(1);                /* TYPE ACTIVATION          */
*/*                                                                  */
./ ADD NAME=VCLOSE
 % VCLOSE: MACRO;
         ANS('DO;');
    IF MACLIST = '' THEN GO TO ERROR;
    IF MACLIST(1) = '' THEN GO TO ERROR;
    IF MACLIST(1,1) = '' THEN GO TO ERROR;
         ANS('RFY GPR01P RSTD;') COL(MACCOL);
    IF MACLIST(1) = MACLIST(1,1) THEN
      ANS('GPR01P = ADDR('MACLIST(1)');') COL(MACCOL);
    ELSE
      IF MACLIST(1,1) = '1' THEN;
      ELSE
        ANS('GPR01P = 'MACLIST(1,1)';') COL(MACCOL);
      ANS('CALL 'MACNAME';') COL(MACCOL);
         ANS(COMMENT('ENTER CLOSE ROUTINE'))COL(41);
      ANS('RFY GPR01P UNRSTD;') COL(MACCOL);
         ANS('END;') COL(MACCOL);
    RETURN;
  ERROR:
         ANS('END;') COL(MACCOL);
    ANS  MSG('INVALID PARAMETER PASSED FOR 'MACNAME);
             RETURN CODE(12);
   % END;
./ ADD NAME=VJOURN
 %  VJOURN: MACRO;
         ANS('DO;');
    IF MACLIST = '' THEN GO TO ERROR;
    IF MACLIST(1) = '' THEN GO TO ERROR;
    IF MACLIST(1,1) = '' THEN GO TO ERROR;
         ANS('RFY GPR01P RSTD;') COL(MACCOL);
    IF MACLIST(1) = MACLIST(1,1) THEN
      ANS('GPR01P = ADDR('MACLIST(1)');') COL(MACCOL);
    ELSE
      IF MACLIST(1,1) = '1' THEN;
      ELSE
        ANS('GPR01P = 'MACLIST(1,1)';') COL(MACCOL);
      ANS('CALL 'MACNAME';') COL(MACCOL);
         ANS(COMMENT('ENTER JOURNAL ROUTINE'))COL(41);
      ANS('RFY GPR01P UNRSTD;') COL(MACCOL);
         ANS('END;') COL(MACCOL);
    RETURN;
  ERROR:
         ANS('END;') COL(MACCOL);
    ANS  MSG('INVALID PARAMETER PASSED FOR 'MACNAME);
             RETURN CODE(12);
   % END;
./ ADD NAME=VMSGGEN
         MACRO
&NAME    VMSGGEN &SYS=,&TBLNO=,&COMPID=,&MCSDFLT=,&RTGDFLT=,&DSCDFLT=, X
               &MLWDFLT=
         GBLC    &VSYS,&VCID
         GBLA    &VTBL,&VMCS,&VRTG,&VDSC,&VMLW,&MMCNT1,&MMCNT2,&MMCNT3
&VCID    SETC    'IST'
&MMCNT1  SETA    0
&MMCNT3  SETA    0
&VTBL    SETA    11
&VMCS    SETA    0
&VRTG    SETA    8
&VDSC    SETA    5
&VMLW    SETA    0
.VMCKSYS ANOP
         AIF     ('&SYS' EQ '').VMTERM     IS THERE A SYS PARMETER
         AIF     ('&SYS' EQ 'EDOS').VMEDOS
         AIF     ('&SYS' EQ 'VS1').VMVS1
         AIF     ('&SYS' EQ 'VS2').VMVS2
.VMTERM  ANOP
         MNOTE 8,'SYS=(&SYS) NOT VALID PARMETER ABORT PROCESSING'
&VSYS    SETC    'ABORT'
         AGO     .VMEND
.VMEDOS  ANOP
&VSYS    SETC    'E'
         AGO     .VMCKTBL
.VMVS1   ANOP
&VSYS    SETC    'A'
         AGO     .VMCKTBL
.VMVS2   ANOP
&VSYS    SETC    'M'
         AGO     .VMCKTBL
.VMCKTBL ANOP
         AIF     ('&TBLNO' EQ '').VMCKCID   IS THERE A TABLE PARMETER
&VTBL    SETA    &TBLNO+1
.VMCKCID ANOP
&MMCNT2  SETA  &VTBL
         AIF     ('&COMPID' EQ '').VMCKMCS   IS THERE A  COMPONENT ID
&VCID    SETC    '&COMPID'
.VMCKMCS ANOP
         AIF     ('&MCSDFLT' EQ '').VMCKRTG   IS THERE A MCS PARMETER
&VMCS    SETA    &MCSDFLT
.VMCKRTG ANOP
         AIF     ('&RTGDFLT' EQ '').VMCKDSC   IS THERE A RTG PARMETER
&VRTG    SETA    &RTGDFLT
.VMCKDSC ANOP
         AIF     ('&DSCDFLT' EQ '').VMCKMLW   IS THERE A DSC PARMETER
&VDSC    SETA    &DSCDFLT
.VMCKMLW ANOP
         AIF     ('&MLWDFLT' EQ '').VMEND   IS THERE A MLW PARMETER
&VMLW    SETA    &MLWDFLT
.VMEND   ANOP
         MEND
./ ADD NAME=VMSGSKL
          MACRO
&MSGNM VMSGSKL &SRCHID,&TEXT1,&VAR1,&TEXT2,&VAR2,&TEXT3,&VAR3,&TEXT4,  *
               &VAR4,&TEXT5,&VAR5,&TEXT6,&VAR6,&SYSTYP=,&MCSFLG=,      *
               &RTGCD=,&DSCCD=,&MLWCD=,&LAST=
         GBLC    &VSYS,&VCID
         GBLA    &VTBL,&VMCS,&VRTG,&VDSC,&VMLW,&MMCNT1,&MMCNT2
         LCLC    &MMSYS,&MMSGID,&CPID,&TERM
         LCLA    &MMMCS,&MMRTG,&MMDSC,&MMMLW,&MMFLG1
         LCLA    &MMCOUNT
&MMMCS   SETA    &VMCS
&MMRTG   SETA    &VRTG
&MMDSC   SETA    &VDSC
&MMMLW   SETA    &VMLW
         AIF     ('&LAST' NE 'END').SKTERM
&TERM    SETC    '&LAST'
.SKTERM  ANOP
         AIF     ('&VSYS' EQ 'ABORT').MMEND
         AIF     ('&SYSTYP' NE '').MMCKSYS
&MMSYS   SETC    '&VSYS'
         AGO     .MMCKKSS
.MMCKSYS ANOP
&MMSYS   SETC    '&SYSTYP'
.MMCKKSS ANOP
         AIF     ('&MMSYS' EQ '&VSYS').MMSYSOK
         AIF     ('&MMSYS' EQ 'C').MMSYSOK
     AIF ('&MMSYS' EQ 'E' OR '&MMSYS' EQ 'A' OR '&MMSYS' EQ 'M').MMEND
         AIF ('&MMSYS' EQ 'F').VSSYS
         MNOTE 0,'SYSTYP=(&SYSTYP) IS INVALID MACRO CALL IGNORED'
         AGO     .MMEND
.VSSYS   AIF   ('&VSYS' EQ 'E').MMEND
.MMSYSOK ANOP
         AIF     ('&VSYS' NE 'E').MMSYSNE
&MMMCS   SETA    0
&MMRTG   SETA    0
&MMDSC   SETA    0
&MMMLW   SETA    0
         AIF     ('&SRCHID'(1,1) NE '0').MMCONV0
&MMSGID  SETC    'A'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV0 ANOP
         AIF     ('&SRCHID'(1,1) NE '1').MMCONV1
&MMSGID  SETC    'B'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV1 ANOP
         AIF     ('&SRCHID'(1,1) NE '2').MMCONV2
&MMSGID  SETC    'C'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV2 ANOP
         AIF     ('&SRCHID'(1,1) NE '3').MMCONV3
&MMSGID  SETC    'D'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV3 ANOP
         AIF     ('&SRCHID'(1,1) NE '4').MMCONV4
&MMSGID  SETC    'E'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV4 ANOP
         AIF     ('&SRCHID'(1,1) NE '5').MMCONV5
&MMSGID  SETC    'F'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV5 ANOP
         AIF     ('&SRCHID'(1,1) NE '6').MMCONV6
&MMSGID  SETC    'G'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV6 ANOP
         AIF     ('&SRCHID'(1,1) NE '7').MMCONV7
&MMSGID  SETC    'H'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV7 ANOP
         AIF     ('&SRCHID'(1,1) NE '8').MMCONV8
&MMSGID  SETC    'I'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV8 ANOP
         AIF     ('&SRCHID'(1,1) NE '9').MMCONV9
&MMSGID  SETC    'J'.'&SRCHID'(2,3)
         AGO     .MMSYSN1
.MMCONV9 ANOP
         MNOTE   0,'THE FIRST CHAR OF SRCHID IS NON NUMERIC'
.MMSYSN1 ANOP
&CPID  SETC    '5'
         AGO     .MMSTART
.MMSYSNE ANOP
&MMSGID  SETC    '&SRCHID'(1,4)
&CPID  SETC    '&VCID'
.MMCKMCS ANOP
         AIF     ('&MCSFLG' EQ '').MMCKRTG
&MMMCS   SETA    &MCSFLG
.MMCKRTG ANOP
         AIF     ('&RTGCD' EQ '').MMCKDSC
&MMRTG   SETA    &RTGCD
.MMCKDSC ANOP
         AIF     ('&DSCCD' EQ '').MMCKMLW
&MMDSC   SETA    &DSCCD
.MMCKMLW ANOP
         AIF     ('&MLWCD' EQ '').MMSTART
&MMMLW   SETA    &MLWCD
.MMSTART ANOP
         AIF     ('&MMCNT1' EQ '1').MMBUILD
ISTCFCMM CSECT
         DC      A(MSG998I)
         DC      A(MSG999I)
&MMCNT1  SETA    1
         AGO    .MMSKPX
.MMBUILD ANOP
         AIF     ('&MMCNT2' NE '&VTBL').MMBLDA
ISTCFCMM CSECT
.MMSKPX  ANOP
         DC      CL4'&SRCHID'
         DC      A(MSG&SRCHID)
&MMCNT2  SETA    1
.MMBLDA  ANOP
         CSECT
MSG&SRCHID DC    CL4'&SRCHID'
&MMCNT2  SETA    &MMCNT2+1
&MMFLG1  SETA    0
         AIF     ('&TERM' EQ 'END').MBLDA
         AIF     ('&MMCNT2' NE '&VTBL').MMBLDB
.MBLDA   ANOP
&MMFLG1  SETA     &MMFLG1+128
.MMBLDB  ANOP
         AIF     ('&SRCHID'(4,1) NE 'A').MMBLDC
&MMFLG1  SETA    &MMFLG1+2
.MMBLDC ANOP
    AIF  ('&VAR1' NE '' OR '&VAR2' NE '' OR '&VAR3' NE '').MMBLDD
    AIF  ('&VAR4' EQ '' AND '&VAR5' EQ '' AND '&VAR6' EQ '').MBLDE
.MMBLDD  ANOP
&MMFLG1   SETA     &MMFLG1+1
.MBLDE   ANOP
         DC      AL1(&MMFLG1)
         DC      AL1(EL&SRCHID)
         DC      AL2(ML&SRCHID)
         DC      AL2(&MMMCS)
         AIF     ('&CPID' EQ '5').MMBLDF
         DC      CL3'&CPID'
         DC      CL4'&SRCHID'
         DC      CL1' '
         AGO     .MMBLDG
.MMBLDF  ANOP
         DC      CL1'&CPID'
         DC      CL4'&MMSGID'
         DC      CL1' '
.MMBLDG  ANOP
&MMCOUNT SETA    K'&TEXT1
         AIF     ('&MMCOUNT' EQ '0').SKTXT1
         DC      CL1' '
         DC      C&TEXT1
.SKTXT1  ANOP
         AIF     ('&VAR1' EQ '').SKVAR1
         DC     CL1' '
         DC      &VAR1.C'#'
.SKVAR1  ANOP
&MMCOUNT SETA    K'&TEXT2
         AIF     ('&MMCOUNT' EQ '0').SKTXT2
         DC      CL1' '
         DC      C&TEXT2
.SKTXT2  ANOP
         AIF     ('&VAR2' EQ '').SKVAR2
         DC      CL1' '
         DC      &VAR2.C'#'
.SKVAR2  ANOP
&MMCOUNT SETA    K'&TEXT3
         AIF     ('&MMCOUNT' EQ '0').SKTXT3
         DC      CL1' '
         DC      C&TEXT3
.SKTXT3  ANOP
         AIF     ('&VAR3' EQ '').SKVAR3
         DC      CL1' '
         DC      &VAR3.C'#'
.SKVAR3  ANOP
&MMCOUNT SETA    K'&TEXT4
         AIF     ('&MMCOUNT' EQ '0').SKTXT4
         DC      CL1' '
         DC      C&TEXT4
.SKTXT4  ANOP
         AIF     ('&VAR4' EQ '').SKVAR4
         DC      CL1' '
         DC      &VAR4.C'#'
.SKVAR4  ANOP
&MMCOUNT SETA    K'&TEXT5
         AIF     ('&MMCOUNT' EQ '0').SKTXT5
         DC      CL1' '
         DC      C&TEXT5
.SKTXT5  ANOP
         AIF     ('&VAR5' EQ '').SKVAR5
         DC      CL1' '
         DC      &VAR5.C'#'
.SKVAR5  ANOP
&MMCOUNT SETA    K'&TEXT6
         AIF     ('&MMCOUNT' EQ '0').SKTXT6
         DC      CL1' '
         DC      C&TEXT6
.SKTXT6  ANOP
         AIF     ('&VAR6' EQ '').SKVAR6
         DC      CL1' '
         DC      &VAR6.C'#'
.SKVAR6  ANOP
ML&SRCHID  EQU   *-MSG&SRCHID-6
         AIF   ('&VSYS' EQ 'E').MMEQU
         DC      AL2(&MMRTG)
         DC      AL2(&MMDSC)
         DC      AL2(&MMMLW)
.MMEQU   ANOP
EL&SRCHID  EQU   *-MSG&SRCHID
.MMEND   ANOP
         MEND
./ ADD NAME=VOLSTAT
         MACRO
&NAME    VOLSTAT &DCB,&TFLAG
         LCLA  &CTR
         LCLC  &FLAG,&REG
         AIF   ('&TFLAG' EQ 'E' OR '&TFLAG' EQ 'C').GO
         IHBERMAC 180,TFLAG,C
&FLAG    SETC  'C'
         AGO   .CHECK
.GO      ANOP
&FLAG    SETC  '&TFLAG'
.CHECK   AIF   ('&DCB'(1,2) EQ '()' OR '&DCB' EQ '').ERR
&CTR     SETA  1
         AIF   ('&DCB'(1,1) EQ '(').PAREN
         LA    0,&DCB SET DCB PARAMETER.
         AGO   .TEST
.PAREN   AIF   ('&DCB'(&CTR+2,1) EQ ',').ERR
         AIF   ('&DCB'(&CTR+2,1) EQ ')').LOAD
&CTR     SETA  &CTR+1
         AGO   .PAREN
.LOAD    ANOP
&REG     SETC  '&DCB'(2,&CTR)
         LR    0,&REG SET DCB PARAMETER.
.TEST    ANOP
         AIF   ('&FLAG' EQ 'E').EOV
         SR    1,1 SET CLOSE FLAG.
         AGO   .SVC
.EOV     ANOP
         LA    1,99(0,0) SET EOV FLAG.                         @YM02296
.SVC     ANOP
         SVC   91 ISSUE VOLUME STATISTICS SVC.
         MEXIT
.ERR     IHBERMAC 190
         MEND
./ ADD NAME=VOPEN
 % VOPEN: MACRO;
         ANS('DO;');
    IF MACLIST = '' THEN GO TO ERROR;
    IF MACLIST(1) = '' THEN GO TO ERROR;
    IF MACLIST(1,1) = '' THEN GO TO ERROR;
         ANS('RFY GPR01P RSTD;') COL(MACCOL);
    IF MACLIST(1) = MACLIST(1,1) THEN
      ANS('GPR01P = ADDR('MACLIST(1)');') COL(MACCOL);
    ELSE
      IF MACLIST(1,1) = '1' THEN;
      ELSE
        ANS('GPR01P = 'MACLIST(1,1)';') COL(MACCOL);
      ANS('CALL 'MACNAME';') COL(MACCOL);
         ANS(COMMENT('ENTER OPEN ROUTINE'))COL(41);
      ANS('RFY GPR01P UNRSTD;') COL(MACCOL);
         ANS('END;') COL(MACCOL);
    RETURN;
  ERROR:
         ANS('END;') COL(MACCOL);
    ANS  MSG('INVALID PARAMETER PASSED FOR 'MACNAME);
             RETURN CODE(12);
   % END;
./ ADD NAME=VREADWR
 % VREADWR: MACRO;
         ANS('DO;');
    IF MACLIST = '' THEN GO TO ERROR;
    IF MACLIST(1) = '' THEN GO TO ERROR;
    IF MACLIST(1,1) = '' THEN GO TO ERROR;
         ANS('RFY GPR01P RSTD;') COL(MACCOL);
    IF MACLIST(1) = MACLIST(1,1) THEN
      ANS('GPR01P = ADDR('MACLIST(1)');') COL(MACCOL);
    ELSE
      IF MACLIST(1,1) = '1' THEN;
      ELSE
        ANS('GPR01P = 'MACLIST(1,1)';') COL(MACCOL);
      ANS('CALL 'MACNAME';') COL(MACCOL);
         ANS(COMMENT('ENTER VREAD/VWRITE ROUTINE'))COL(41);
      ANS('RFY GPR01P UNRSTD;') COL(MACCOL);
         ANS('END;') COL(MACCOL);
    RETURN;
  ERROR:
         ANS('END;') COL(MACCOL);
    ANS  MSG('INVALID PARAMETER PASSED FOR 'MACNAME);
             RETURN CODE(12);
   % END;
./ ADD NAME=VSCRATCH
         MACRO
&NAME    VSCRATCH  &DSPCT=
         AIF       ('&DSPCT' EQ '').ERROR1
         AIF       ('&DSPCT' NE '&DSPCT(1)').REG
         LA        1,&DSPCT            LOAD DSPCT HDR ADDR IN REG 1
         AGO       .CONTD
.REG     AIF       ('&DSPCT(1)' EQ '1').CONTD
         LR        1,&DSPCT(1)         LOAD DSPCT HDR ADDR IN REG 1
.CONTD   L         15,16               LOAD CVT ADDR IN REG 15
         L         15,CVTPVBP-CVTTCBP(,15)  LOAD VBP MOD ADDR IN R15
         L         15,16(,15)          LOAD IDAVBPS1 MOD ADDR IN R15
         BALR      14,15               BRANCH & LINK TO IDAVBPS1
         MEXIT
.ERROR1  MNOTE     12,'OPERAND MISSING'
         MEND
./ ADD NAME=WICLOSE
         MACRO
&NAME    WICLOSE &VDSCB=
&NAME    DS    0H                       *
         AIF   ('&VDSCB' NE '&VDSCB(1)').REG1
         AIF   ('&VDSCB' NE '').OK1
         MNOTE 12,'NO VDSCB SUPPLIED'
         MEXIT
.OK1     ANOP
         LA    1,&VDSCB                 VDSCB POINTER
         AGO   .COM1
.REG1    ANOP
         AIF   ('&VDSCB(1)' EQ '1').COM1
         LR    1,&VDSCB(1)              VDSCB POINTER
.COM1    ANOP
         L     15,X'10'                 CVT ADDRESSABILITY
         L     15,CVTPWI-CVTTCBP(,15)   WI BASE MODULE
         BAL   14,4(,15)                GO TO WI CLOSE ROUTINE
         MEND
./ ADD NAME=WIEXCP
         MACRO
&NAME    WIEXCP
&NAME    L     15,X'10'                 CVT ADDRESSABILITY
         L     15,CVTPWI-CVTTCBP(,15)   WI BASE MODULE
         BALR  14,15                    GO TO WIEXCP ROUTINE
         MEND
./ ADD NAME=WIJOURN
         MACRO
&NAME    WIJOURN &TCB=,&CALLER=
&NAME    DS    0H                       *
         AIF   ('&CALLER' NE 'CKPT').NOTCKPT
         SR    0,0                      CHECKPOINT ID
         AGO   .COM0
.NOTCKPT ANOP
         AIF   ('&CALLER' NE 'TASKCLOSE').ERROR1
         LA    0,4                      TASK CLOSE ID
         AGO   .COM0
.ERROR1  ANOP
         MNOTE 12,'CALLER NOT VALID, ''CKPT'' OR ''TASKCLOSE'' ONLY'
         MEXIT
.COM0    ANOP
         AIF   ('&TCB' NE '&TCB(1)').REG1
         AIF   ('&TCB' NE '').OK1
         MNOTE 12,'NO TCB SUPPLIED'
         MEXIT
.OK1     ANOP
         LA    1,&TCB                 TCB POINTER
         AGO   .COM1
.REG1    ANOP
         AIF   ('&TCB(1)' EQ '1').COM1
         LR    1,&TCB(1)                TCB POINTER
.COM1    ANOP
         L     15,X'10'                 CVT ADDRESSABILITY
         L     15,CVTPWI-CVTTCBP(,15)   WI BASE MODULE
         BAL   14,8(,15)                GO TO WI CLOSE ROUTINE
         MEND
./ ADD NAME=WINDOW
         MACRO
&NAME    WINDOW &PARM
         LCLC  &TEMP
         LCLC  &TEMP2
&TEMP    SETC  'IHB1&SYSNDX'           GENERATE UNIQUE LABEL
&TEMP2   SETC  'IHB2&SYSNDX'           GENERATE UNIQUE LABEL
         AIF   ('&PARM' EQ '').ERROR   CHECK IF OPERAND SPECIFIED
         AIF   ('&PARM'(1,1) EQ '(').RXFORM1 CHECK IF RX FORM
         STCTL 0,0,&PARM               SAVE THE CURRENT C.R. 0 VALUE
         AGO   .COMMON                 PERFORM COMMON WINDOW OPERATION
.RXFORM1 ANOP                          RX FORM SPECIFIED
         STCTL 0,0,0&PARM              SAVE THE CURRENT C.R. 0 VALUE
.COMMON  ANOP                          COMMON WINDOW CODE
         STCTL 0,0,PSACR0              STORE C.R. 0 IN WORK AREA
         NC    PSACR0(4),&TEMP         CLEAR ALL EXTERNAL INTERRUPTS
         OC    PSACR0(4),&TEMP2        SET MFA AND EMS BITS
         LCTL  0,0,PSACR0              LOAD C.R. 0
         STOSM PSACR0,X'01'            ENABLE FOR EMS/MFA INTERRUPTS
         STNSM PSACR0,X'FE'            DISABLE FOR EMS/MFA INTERRUPTS
         STCTL 0,0,PSACR0              STORE CR0 IN WORK AREA
         AIF   ('&PARM'(1,1) EQ '(').RXFORM2 CHECK IF RX FORM
         OC    &PARM.(1),PSACR0        INSURE TIMER BIT STAYS SAME
         LCTL  0,0,&PARM               RELOAD ORIGINAL C.R. 0
         AGO   .END                    EXIT
.ERROR   ANOP                          NO C.R. 0 SAVE AREA WAS SPEC
         MNOTE 8,'NO C.R. 0 SAVE AREA ADDRESS WAS SPECIFIED'
         AGO   .END2                   EXIT
.RXFORM2 ANOP                          RX FORM SPECIFIED
         OC    0(1,&PARM(1).),PSACR0   INSURE TIMER BIT STAYS SAME
         LCTL  0,0,0&PARM              RELOAD ORIGINAL C.R. 0
.END     ANOP                          FINISHED
         B     *+12                    BRANCH AROUND CONSTANTS
&TEMP    DC    X'FFFFC31F'             DISABLE C.R. 0 MASK
&TEMP2   DC    X'0000C000'             ENABLE EMS/MFA MASK
.END2    ANOP
         MEND
./ ADD NAME=WORKAREA
         MACRO
         WORKAREA &LIST=,&AUX=
***************                                                @YL026UD
*                                                              @YL026UD
*      OS CATALOG WORKAREA FOR OS CVOL SUPPORT                 @YL026UD
*        (VS2 RELEASE 2)                                       @YL026UD
*                                                              @YL026UD
*      REFERENCED BY MODULES:                                  @YL026UD
*        IGG0CLCC, IGG0CLCD, IGG0CLCE, IGG0CLCF
*                                                              @YL026UD
*      EXTENDED MVS CVOL SUPPORT                               @Z40CSRC
*        VS2 RELEASE 037 CHANGES
*                                                              @OZ06685
*A280200,C363700                                               @OZ12193
*C436500                                                       @OZ15077
*                                                              @OZ19636
*A274100                                                       @OZ32593
*                                                              @YL026UD
*            VS2 RELEASE 030 CHANGES
*A280200,C363700                                               @OZ12193
*C436500                                                       @OZ15077
*
***************                                                @YL026UD
         AIF   ('&LIST' EQ 'NO').OFF
         PRINT ON
         AGO   .GEN
.OFF     ANOP
         PRINT OFF
.GEN     ANOP
WORKAREA DSECT
BLDLIST  DS    F                       BEGINNING OF BLDL PARM LIST
SAVETTR3 EQU   BLDLIST                 TEMPORARY TTR SAVE
NAMTTR0  DS    0XL12                   CURRENT LEVEL NAME, TTR, TYPE
NAMTTR   DS    0XL11                   CURRENT LEVEL NAME, TYPE
NAME     DS    0CL8                    CURRENT LEVEL NAME
         DS    CL1                     CHAR 'G' FOR GDG NAME
GENNO    DS    CL4                     GENERATION NUMBER
         DS    CL3                     VERSION NUMBER
ALIASNAM EQU   NAME                    ALIAS NAME
TTR0     DS    0XL4                    TTR & TYPE
TTR      DS    XL3                     TTR TO NEXT LEVEL OR DSCB TTR
TYPE     DS    XL1                     TYPE OF CATALOG ENTRY
TRUE     DS    0XL8                    TRUE NAME FOR ALIAS ENTRY
VOLCNT   DS    0XL2                    VOLUME COUNT FOR DSPE ENTRY
DATA     DS    XL62                    DATA (USUALLY VOL INFORMATION)
         DS    2F                      FILLER
*
         ORG   TYPE                    DATA RETURNED FROM BLDL
         DS    XL2                     ZERO
TYPEB    DS    XL1                     TYPE OF CAT ENTRY
TRUEB    DS    0XL8                    TRUE NAME LOCATED
VOLCNTB  DS    0XL2                    VOLUME COUNT LOCATED
DATAB    DS    XL62                    DATA LOCATED
*
         ORG   VOLCNT                  SCRATCH PARM LIST         Y01965
DSNAME   DS    CL44                    FULL DSN FOR SCRATCH
SCRPARM  DS    3F                      SCRATCH PARAMETERS
SCRVOLS  DS    F                       VOLUMES FOR SCRATCH
*
         ORG   DATA+16                 NAME TABLE AREA           Y01965
NAMTABLE EQU   *                       EACH LEVEL OF NAME HAS AN ENTRY
*                                      COMPOSED OF DISP. FROM BEGINNING
*                                      AND LENGTH OF LEVEL MINUS 1
         DS    XL1'00'                 DISPLACEMENT FOR FIRST LEVEL
NAMLEN1  DS    XL1                     LENGTH OF NAME MINUS 1 FOR
*                                      FIRST LEVEL
NAMDISP2 DS    XL1                     DISPLACEMENT FOR SECOND LEVEL
NAMLEN2  DS    XL1                     LEN-1 SECOND LEVEL
         DS    XL40                    REMAINING LEVEL NAME ENTRIES
NAMDELIM DS    XL1                     LAST DELIM IN NAME-- ' ' OR '('
*
         ORG
ERRCODE  DS    0XL2                    ERROR CODES
ERRCATSV DS    XL1                     NON-LOCATE ERROR CODE
ERRLOCSV DS    XL1                     LOCATE ERROR CODE
ERFLAG12 DS    0XL2                    FLAG1 AND FLAG2 FOR ENVIR REC
FLAG1    DS    XL1                     SEE BELOW
RECATF   EQU   X'01'                   INDIC RECAT
LOCATEF  EQU   X'02'                   INDIC LOCATE
UCATDXF  EQU   X'04'                   INDIC UCATDX
UCATDXFC EQU   X'FF'-UCATDXF           TURN UCATDX OFF TO UNCAT ONLY
CATBXF   EQU   X'08'                   INDIC CATBX
CATBXFC  EQU   X'FF'-CATBXF            TURN CATBX OFF TO CAT ONLY
FREEDCB  EQU   X'10'                   INDIC SVC 28 FREED DCB
ERRFULL  EQU   X'20'                   CATLG FULL DURING CATBX OR BLDX
READICEF EQU   X'40'                   INDIC ICE MUST BE READ
RTNBLK   EQU   X'80'                   INDIC NEED TO RETURN BLK
FLAG2    DS    XL1                     SEE BELOW
ETYPERR  EQU   X'80'                   INVALID ETYPE FIELD
ESTAEFL  EQU   X'40'                   ESTAE FAILURE FLAG       ZA03161
RPSDEV   EQU   X'20'                   INDIC CATALOG IS ON RPS DEVICE
ALIASSW  EQU   X'10'                   INDIC ALIAS ENTRY FOUND @YL026UD
ALIASBLT EQU   X'01'                   INDIC ALIAS ENTRY IS BUILT
GDGSW    EQU   X'02'                   INDIC GIPE IS FOUND
CVOLF    EQU   X'04'                   INDIC LAST ENTRY FOUND IS CVPE
SEQERR   EQU   X'08'                   INDIC SEQERR USED IN     ZA02665
*                                      IGG0CLC6                 ZA02665
CVOLFC   EQU   X'FF'-CVOLF             TURN OFF CVOL FLAG
         DS    0F                      ALIGN ON WORD BOUNDARY
SAVEAREA DS    XL28                    REGISTER SAVE AREA
*
         ORG   SAVEAREA                LENGTH DEFN               Y01965
SVAREA4  DS    XL16                    4 WORD SAVE AREA
*
         ORG   SAVEAREA                LENGTH DEFN               Y01965
SVAREA5  DS    XL20                    5 WORD SAVE AREA
SVAREA2X DS    XL8                     2 WORD SAVE AREA (AT END)
*
         ORG   SAVEAREA                LENGTH DEFN               Y01965
SVAREA6  DS    XL24                    6 WORD SAVE AREA
TEMPBUFF EQU   SVAREA6                 INPUT BUFFER FOR ICE AND VICE
*
         ORG   TEMPBUFF                CONTROL ENTRY SAVE AREA   Y01965
LSTBLK   DS    XL3                     '.LSTBLK' FIELD OF ICE OR VICE
         DS    XL1                     TYPE FIELD
FSTBLK   DS    XL3                     FST BLK OF LO LEV OR VOL INDEX
*
         ORG   SAVEAREA                LENGTH DEFN               Y01965
SVAREA7  DS    XL28                    7 WORD SAVE AREA
NEXTCNT  DS    0XL8                    COUNT FIELD OF NEXT FREE BLK
NXTCCHHR DS    XL5                     CCHHR OF NEXT FREE BLK
         DS    XL3                     KEY AND DATA LENGTH
NEXTKEY  EQU   NEXTCNT                 KEY FIELD FOLLOWING BLK JUST RD
***************************************
         DS    0F                      ALIGN ON A FULL WORD
ICE      DS    0XL18                   PERTINENT INDEX CONTROL ENTRY
INAME    DS    0XL8                    NAME FIELD
ICEPERT  DS    0XL8                    PERTINENT PORTION OF ICE
ILSTBLK  DS    XL3                     LAST BLOCK IN THIS INDEX
ITYPE    DC    XL1'03'                 TYPE FIELD
IFSTBLK  DS    XL3                     TTR OF THIS BLOCK
ILIASCNT DS    XL1                     ALIAS COUNT
         DS    0XL2                    ZERO
***************************************
VICE     DS    0XL22                   VOLUME INDEX CONTROL ENTRY
VNAME    DS    0XL8                    NAME FIELD
VICEPERT DS    0XL12                   PERTINENT PORTION OF VICE
VLSTBLK  DS    XL3                     TTR OF LAST BLOCK IN VOL INDEX
VTYPE    DC    XL1'05'                 TYPE FIELD
VCLSTBLK DS    0XL3                    LAST BLOCK IN CATALOG DATA SET
         DS    XL2                     TT OF LAST BLK
VHIREC   DS    XL1                     NUMBER OF RECORDS ON A TRACK
ZERO     DC    XL1'00'                 CONSTANT
VSAVE    DS    0XL3                    SAVED PORTION OF VICE
VFHOLE   DS    XL3                     FIRST KEY = ZERO IN CATALOG
         DC    XL1'00'                 ZERO
         DS    0XL2                    ZERO
***************************************
UCATNAM  EQU   VNAME                   LEVEL NAME TO BE REMOVED(UCATDX)
*
         ORG   ICE                     SCRATCH FOR REL GDG PROC  Y01965
RELNUMBR DS    D                       EBCDIC OF REL GDG NUMBER
PKDNUMBR DS    D                       PACKED EQUIVALENT OF 'RELNUMBR'
*
         ORG
FLAG3    DS    XL1                     SERVICES PERFORMED BY IGG0CLC5
WRBLK    EQU   X'01'                   INDIC BLOCK TO BE WRITTEN
FRVCB    EQU   X'02'                   INDIC VCB CHAIN TO BE FREED
BLVCB    EQU   X'04'                   INDIC VCB CHAIN TO BE BUILT
WRLST    EQU   X'08'                   INDIC LAST BLK OF GDG TO BE WRIT
EMPTY    EQU   X'10'                   INDIC GDG TO BE EMPTIED
NEEDBLK  EQU   X'20'                   INDIC NEED TO READ BLK FOR UPDAT
FRBLK    EQU   X'40'                   INDIC BLOCK TO BE FREED
GDS      EQU   X'80'                   INDIC GXXXXV00 IS 'NAME' FORMAT
FLAG4    DS    XL1                     FLOW CONTROL IN IGG0CLC6
CONTIGL  EQU   X'01'                   INDIC FREE BLK FOLLOWS LINKTTR
WROTE    EQU   X'02'                   TURNED ON AT FIRST WRITE
ERRORTTR EQU   X'04'                   SEQ ERROR HOLD FLAG     @OZ12193
GDGPLUS  EQU   X'08'                   GDG REATIVE # IS PLUS   @OZ32593
CONTIGW  EQU   X'10'                   INDIC FREE BLK FOLLOWS WRITETTR
UPDATED  EQU   X'40'                   INDIC UPDATE IS COMPLETE
UPDATING EQU   X'80'                   INDIC UPDATE IN PROCESS
CONTIGLC EQU   X'FF'-CONTIGL           TURN OFF CONTIGL
CONTIGWC EQU   X'FF'-CONTIGW           TURN OFF CONTIGW
CONTIGC  EQU   X'FF'-CONTIGL-CONTIGW   TURN OFF CONTIGW AND CONTIGL
COMPLETE EQU   UPDATING+UPDATED        USED IN AN XI INSTRUCTION
*                                           TO TURN UPDATING OFF AND
*                                           UPDATED ON
STOP     EQU   UPDATED+WROTE           USED AS A MASK. WHEN RESULT IS
*                                           MIXED, OK TO STOP UPDATE.
*                                           (UPDATED IS ON & WROTE IS
*                                           OFF)
NAMLEN   DS    H                       (LENGTH-1) OF FULL NAME
         DS    0F                      ALIGN ON WORD BDY
NAMDELMP DS    F                       LAST DELIM IN NAME
NAMLSTP  DS    F                       LAST DISPL OF NAME IN TABLE
         DS    XL1                     *RESERVED*
FLAG5    DS    XL1                     FLAG BYTE               @Z40CSRC
*                                      FLOW CONTROL IN IGG0CLC7
FST      EQU   X'01'                   INDIC '.FSTBLK' NEEDS UPDATE
LST      EQU   X'02'                   INDIC '.LSTBLK' NEEDS UPDATE
VFH      EQU   X'04'                   INDIC 'VFHOLE' NEEDS UPDATE
LIN      EQU   X'08'                   INDIC LOW LEVEL IS INVOLVED
*                                      FLAG BITS FOLLOW        @Z40CSRC
OCWRACAT EQU   X'10'                   CAT IS RAC-INDICATED    @Z40CSRC
MODMAP1  DS    XL1                     MODULE MAP BYTE
MODCLC1  EQU   X'80'                   INDICATE ENTRY TO IGG0CLC1
MODCLC2  EQU   X'40'                   INDICATE ENTRY TO IGG0CLC2
MODCLC3  EQU   X'20'                   INDICATE ENTRY TO IGG0CLC3
MODCLC4  EQU   X'10'                   INDICATE ENTRY TO IGG0CLC4
MODCLC5  EQU   X'08'                   INDICATE ENTRY TO IGG0CLC5
MODCLC6  EQU   X'04'                   INDICATE ENTRY TO IGG0CLC6
MODCLC7  EQU   X'02'                   INDICATE ENTRY TO IGG0CLC7
         DS    0F                      ALIGN ON WORD BOUNDARY
BLDLPARM DS    0XL12                   INPUT PARAMETERS TO IECPBLDL
EPBLDL   DS    F                       ENTRY POINT TO IECPBLDL
BLDLISTP DS    F                       POINTS TO BLDL PARM LIST
DELTTR3  EQU   BLDLISTP                FIRST DELETEABLE VCB      Y01113
EXCLUDE  EQU   DELTTR3                 BLOCK LEFT OUT OF CHAIN   Y01113
PTRS     DS    0XL12                   DCBADDR, DEBADDR, AND FOUNDENT
DCBADDR  DS    F                       DCB ADDRESS
RPSAVEP  EQU   DCBADDR                 RPS WORKAREA POINTER
DEBADDR  DS    F                       DEB ADDRESS
FOUNDENT DS    F                       POINTS TO FOUND ENTRY IN BLOCK
CONVERTS DS    0XL8                    CONVERT ENRTY POINTS
EPTORLTV DS    F                       ENTRY POINT TO IECPRLTV
EPTOABSL DS    F                       ENTRY POINT TO IECPCNVT
SVRBEXTP DS    F                       PTR TO SVRB EXTENTED SAVE AREA
ADDING   DS    F                       PTR SAVE WHILE MOVING NEW ENTRY
UCATICE  EQU   ADDING                  TTR OF ICE OF BLOCK TO BE UPDTD
*                                      FOR UCATDX FCN, C2, C3
         DS    0D                      ALIGN ON DOUBLE WORD
SVBALREG DS    F                       BRANCH & LINK REG SAVE  @YL026UD
         DS    3F                      RESERVED                @YL026UD
         DS    0F                      ALIGN ON WORD BOUNDARY
LNKENTRY DS    0XL12                   LINK ENTRY
HIBIN    DC    XL8'FFFFFFFFFFFFFFFF'   HIGH BINARY NUMBER
MASKFF   EQU   HIBIN                   USED TO COMPLEMENT GDG NO.
ERTTRS   DS    0XL24                   FOR ENVIRONMENT RECORD    Y01113
TTRS     DS    0XL8                    TTRS FOR ZEROING          Y01113
LINKTTR  DS    F                       LINK TTR
WRITETTR DS    F                       TTR TO WRITE BLK
VCBTTR   EQU   LINKTTR                 VCB TTR
ICETTR   DS    F                       TTR TO CURRENT ICE
DELTTR1  DS    F                       TTR OF BLK TO DELETE
SAVETTR  EQU   DELTTR1                 TEMPORARY SAVE FOR A TTR
READTTR  DS    F                       TTR OF BLK TO READ
CWAP     DS    F                       PTR TO CATLG CONTROLLER WAY01113
NAMLF    DS    H                       NUMBER OF LEVELS IN NAME FOUND
NAMLG    DS    H                       NUMBER OF LEVELS IN NAME GIVEN
DEVOL    DS    0XL13                   SEE BELOW
DEVTYPE  DS    XL4                     DEVICE TYPE FOR CURRENT SYSCTLG
THETA    DS    XL1                     RPS THETA VALUE
INDEXLEN DS    XL1                     LENGTH OF ALL LEVELS GIVEN
*                                      EXCEPT LAST. USED FOR SCRATCH
ERRSV2H  DS    XL1                     TEMP STORAGE FOR SVC 28 ERROR
VOLSN    DS    CL6                     VOL SER OF CURRENT SYSCTLG
         ORG   WORKAREA                RETURNED DATA AREA        Y01965
RETDATA  DS    0XL256                  AREA FOR RETURNED DATA
         DS    XL242                   VOLUME LIST
         DC    XL10'00'                ALWAYS ZERO FOR VCB
RETDSCBT DS    0XL4                    TTR OF THE DATA SET'S DSCB
RETVCBLK DS    XL3                     VCB LINK TTR
         DS    XL1                     ZERO
RETDVTYP EQU   RETDSCBT                DEVICE TYPE OF THE CVOL
         DS    XL3                     FILLER
RETCVOL  DS    CL6                     VOLUME SERIAL OF THE CVOL
         ORG
*
***********************************************************************
VICESAVE DS    XL3                       VICE SAVEAREA
BALREGS  DS    F                         SAVE ONE BALREG
***********************************************************************
*
BLDLAREA DS    0D                      BLDL WORKAREA           @YL026UD
*
SVAREA2H DS    12F                     SAVEAREA FOR IGC0002H   @YL026UD
*
ESTAEPRM DS    0F                      ESTAE PARAMETER LIST    @YL026UD
ESTAER5  DS    F                       ESTAE REG  5 (SVRB)     @YL026UD
ESTAER6  DS    F                       ESTAE REG  6 (CATLG WKA)@YL026UD
ESTAER13 DS    F                       ESTAE REG 13 (BLDL WKA) @YL026UD
ESTAEFLG DS    F                       ESTAE SUCCESS/FAIL FLAG @YL026UD
*
ESTAESVA DS    0F                      ESTAE INFORMATION AREA  @YL026UD
SVOPNWAP DS    F                       OPEN WORKAREA ADDRESS   @YL026UD
SVRPSWAP DS    F                       RPS  WORKAREA ADDRESS   @YL026UD
SVVCBLK4 DS    F                       VCB BLOCK ADDRESS (CLC4)@YL026UD
SVVCBLK5 DS    F                       VCB BLOCK ADDRESS (CLC5)@YL026UD
SVFMTWAP DS    F                       FORMAT WORKAREA ADDRESS @YL026UD
SVEXTWAP DS    F                       EXTEND WORKAREA ADDRESS @YL026UD
ESTAELST DS    4F                      ESTAE RECORD PARM LIST  @YL026UD
*
BLDLSTRT DS    50D                     BLDL WORKAREA           @YL026UD
BLDLEND  EQU   *
*
*
         ORG   BLDLSTRT                BLDL WORKAREA           @YL026UD
BLDLBUFF DS    XL256                   BLDL BUFFER
BLDLCNT  DS    XL5                     CCHHR OF BLK READ BY BLDL
         DS    XL3                     KEY AND DATA LEN OF BLK
BLDLCCWS DS    6D                      BLDL CCWS
BLDLECB  DS    F                       BLDL ECB
BLDLIOB  DS    8F                      BLDL IOB
BLDLMBB  DS    XL3                     IOB MBB
BLDLCHR  DS    XL5                     IOB CCHHR
BLDLCONS DS    5F                      BLDL CONSTANTS
BASESAVE DS    1F                      BASE OF CATALOG WA
*
         ORG   BLDLCCWS                DSNAME SAVEAREA           Y01965
RESALIAS DS    CL44                    SAVE AREA FOR GIVEN ALIAS NAME
*
         ORG   BLDLSTRT                CATALOG WORKAREA        @YL026UD
INPUT    DS    0XL256                  INPUT BUFFER
TRTABLE  EQU   INPUT                   TRT TABLE
INDATA   DS    0XL256                  DESCRIBES INPUT DATA BLK
INBYTSU  DS    XL2                     INPUT, BYTES USED FIELD
INENTRY  DS    XL254                   INPUT, ENTRY DATA
CHPROG   DS    0D                      CHANNEL PROG--ALIGN ON DBLE WD
CCWFRST5 DS    0XL40                   FIRST 5 CCWS
SIDE1    DS    1D                      SEARCH ID EQUAL CCW
TIC1     DS    1D                      TIC TO ABOVE CCW (SIDE1)
ERCCWL   DS    0CL16                   ER CCWS RELOCATION
OPTNCCW  DS    1D                      OPTION CCW
RC       DS    1D                      READ COUNT CCW
RCOP     EQU   X'92'                   READ COUNT OP CODE
SKE      DS    1D                      SEARCH KEY EQUAL CCW
CCWSEC2  DS    0XL16                   LAST TWO CCWS
TIC2     DS    1D                      TIC TO RC CCW
NOP      DS    1D                      NOP CCW
ECB      DS    F                       ECB (BUILT BY BLDL)
IOB      DS    0XL40                   IOB (SEE BELOW)
         DS    F                       FIRST WORD OF IOB
IOBECB   DS    F                       ECB CODE AND ADDRESS
         DS    2F                      CSW
IOBCHPR  DS    F                       POINTER TO CHANNEL PROG.
IOBDCB   DS    F                       POINTER TO DCB
         DS    2F                      SYSTEM USE
IOBSKADD DS    2F                      SEEK ADDRESS (MBBCCHHR)
CCWLST3  DS    0XL24                   PART OF CCW POOL
RKD      DS    XL8                     READ KEY AND DATA CCW
RKDOP    EQU   X'0E'                   READ KEY AND DATA OP CODE
RD       DS    XL8                     READ DATA CCW
RDOP     EQU   X'06'                   READ DATA OP CODE
WKD      DS    XL8                     WRITE KEY AND DATA CCW
WKDOP    EQU   X'0D'                   WRITE KEY AND DATA OP CODE
WDOP     EQU   X'05'                   WRITE DATA OP CODE
OUTPUT   DS    0XL264                  OUTPUT BUFFER
OUTKEY   DS    XL8                     KEY FIELD OF BUFFER
OUTDATA  DS    0XL256                  DATA FIELD OF BUFFER
OUTBYTSU DS    XL2                     OUTPUT, BYTES USED FIELD
OUTENTRY DS    XL254                   OUTPUT, ENTRY DATA
OUTLKLMT EQU   OUTENTRY+242            LAST POSSIBLE LOCATION FOR ENTRY
*
         ORG   OUTENTRY                FLD DEFN OF 'ICE'         Y01965
OUTICE   DS    0CL18                   ***ICE***
         DS    CL8                     ICE NAME
OUTILBLK DS    CL3                     LAST BLK IN THIS INDEX
OUTICECD DC    XL1'03'                 TYPE FIELD
OUTILL   DS    CL3                     TTR OF THIS BLOCK
         DC    XL3'00'                 ZERO
         ORG
SAVEKEY  DS    CL8                     FOR SEQ CHK IN CLC6      ZA06685
CONWORK  DS    CL8                     8 BYTE WORK AREA        @OZ12193
*
*
WORKEND  EQU   *                       END LABEL
*
         EJECT
         AIF   ('&AUX' EQ 'NO').END
         DS    0D                      ALIGN ON DOUBLE WORD
RPSD     DSECT
RPSCCW   DS    0XL16                   RPS CCWS
RPSSS    DS    1D                      SET SECTOR CCW
RPSTIC   DS    1D                      TICS TO NORMAL CHANNEL PROGRAM
RPSINPUT DS    0XL16                   INPUT PARAMETERS
RPSCNVT  DS    1F                      SECTOR VALUE CONVERT ROUTINE
*                                           ADDR
RPSDDKR  DS    1F                      DD=BLOCKSIZE=256, K=KEY LENGTH=
*                                           8, R=RECORD NUMBER
RPSR1    DS    1F                      ADDRESS OF THIS DSECT SINCE IT
*                                           IS BASED ON R1
RPSPTR   DS    1F                      DEVTYP CODE & PTR TO SECTOR VAL
RPSAVE   DS    10F                     REGISTER SAVE AREA
*
*
RPSEND   EQU   *                       RPS END LABEL
*
         EJECT
CAMLSTD  DSECT
         DS    0F
CAMOPTN1 DS    XL1                     FIRST OPTION BYTE
CAMCVOL  EQU   X'80'                   CVOL IS SPECIFIED
*  RESERVED    X'40'
CAMCAT   EQU   X'20'                   CAT OR CATBX
CAMRECAT EQU   X'10'                   RECAT
CAMUNCAT EQU   X'08'                   UNCAT OR UCATDX
*  RESERVED    X'04'
CAMBLOCK EQU   X'02'                   LOCATE BLOCK BY TTR
*RESERVED      X'01'
*
CAMOPTN2 DS    XL1                     SECOND OPTION BYTE
CAMNOALC EQU   X'80'                   DON'T ALLOCATE CVOL
CAMBLDX  EQU   X'40'                   BLDX OR CATBX
CAMBLDG  EQU   X'20'                   BLDG
CAMBLDA  EQU   X'10'                   BLDA - BUILD ALIAS
CAMLNKX  EQU   X'08'                   LNKX - CONNECT CVOL
CAMDLTX  EQU   X'04'                   DLTX OR UCATDX
CAMDSCBT EQU   X'02'                   DSCB TTR SPECIFIED
CAMDLTA  EQU   X'01'                   DLTA - DELETE ALIAS
*
CAMOPTN3 DS    XL1                     THIRD OPTION BYTE
CAMDRPX  EQU   X'80'                   DISCONNECT CVOLS
CAMDELET EQU   X'40'                   SCRATCH GDG DATA SETS
*  RESERVED    X'20'
CAMTIOT  EQU   X'10'                   SYSZTIOT ALREADY ENQUED @OZ19636
CAMEMPTY EQU   X'08'                   EMPTY FULL GDG
CAMSLOCB EQU   X'04'                   SUPERLOCATE WITH BASE SUPPLIED
CAMSLOC  EQU   X'02'                   SUPERLOCATE
CAMAM0   EQU   X'01'                   'CAMXXXXX' DEFNS DO NOT   Y01113
*                                      APPLY, THIS IS A VSAM CPL Y01113
CAMGEN   DS    XL1                     MAXIMUM SIZE FOR THE GDG.
CAMPTR1  DS    F
CAMCVOLP DS    F                       CVOL VOLUME SERIAL ADDRESS
CAMPTR3  DS    F
CAMDSCBP DS    F                       DSCBTTR ADDRESS
         EJECT
SVRBEXTD DSECT
         DS    0F
SVRBEXT  DS    0CL48                   SVRB EXTENTED SAVE AREA
ENQPARM  DS    0CL16                   ENQ PARAMETER LIST
ENQEND   DS    CL1                     LAST PARAMETER LIST INDICATOR
ENQRLEN  DS    CL1                     RNAME LENGTH
*
ENQFLAGS DS    CL1                     INPUT FLAGS TO ENQ/DEQ
SHARE    EQU   X'80'                   INDICATES SHARE REQUEST
SMCSTEP  EQU   X'10'                   STEP MUST COMPLETE
SMCSTEPC EQU   X'FF'-SMCSTEP           TURN OFF SMC FLAG         Y01965
*
*      'BITONE' & 'BITFOUR' PERTAIN TO THE SCOPE OF REQUEST    @YL026UD
*      (STEP, SYSTEM, SYSTEMS, OR RESERVE)
*
BITONE   EQU   X'40'                                           @YL026UD
BITFOUR  EQU   X'08'                                           @YL026UD
RESERVE  EQU   BITFOUR                 RESERVE THE DEVICE      @YL026UD
SYSTEM   EQU   BITONE                  ACROSS THE SYSTEM       @YL026UD
SYSTEMS  EQU   BITONE+BITFOUR          ACROSS ALL SYSTEMS      @YL026UD
HAVE     EQU   X'01'                   HAVE
EXCL     EQU   X'FF'-SHARE             EXCLUSIVE REQUEST
ENQRC    DS    CL1                     RETURN CODE FROM ENQ/DEQ
*
*     POINTERS TO QNAME, RNAME, AND UCB ADDRESS
*
ENQPTRS  DS    3F
ENQNAME  DS    XL8                     QNAME
ENQRNAME DS    0XL12                   RNAME
ENQRNAM8 DS    XL8                     FIRST EIGHT CHARS OF RNAME
UCBADDR  DS    XL4                     UCB ADDRESS OF CATALOG VOLUME
HILVLNAM DS    CL8                     HIGH LEVEL NAME OF THE DATA SET
CVOLCTR  DS    XL1                     NO. OF CVOLS FOUND
         EJECT
ENTRY    DSECT
EINDEX   DS    0CL12                   BASIS OF ALL ENTRIES
*
ENAME    DS    0CL8                    ENTRY NAME
         DS    CL1
EGENNO   DS    CL4                     GENERATION NUMBER
         DS    CL3
ETTRTYPE DS    0XL4                    TTR & TYPE FIELDS
ETTR     DS    XL3                     TTR
ETYPE    DS    XL1                     COUNT OF HALFWORDS FOLLOWING
* ALLOWABLE ETYPE FIELD ENTRIES
EIPE     EQU   X'00'                   IPE
EVCBPE   EQU   X'01'
EGIPE    EQU   X'02'
EICE     EQU   X'03'
EALIAS   EQU   X'04'
OLDCVOL  EQU   X'03'
NCVOL    EQU   X'05'
DSPE7    EQU   X'07'
DSPED    EQU   X'0D'
DSPE13   EQU   X'13'
DSPE19   EQU   X'19'
DSPE1F   EQU   X'1F'
EXTENSN  EQU   *
*
*
         ORG   ETTR                    ***DSPE***
EDSCBTTR DS    XL3                     TTR OF DSCB OF DATA SET
         DS    XL1                     COUNT OF HALFWORDS FOLLOWING
EVOLIST  DS    0XL62                   VOLUME LIST
EVOLCNT  DS    XL2                     COUNT OF DATA SET'S VOLUMES
EDATA    DS    5XL12                   LIST OF DATA SET'S VOLUMES
*
*
         ORG   EXTENSN                 ***VCBPE***
*
*
         ORG   EXTENSN                 ***CVPE***
EDEVTYP  DS    XL4                     DEVICE TYPE OF THE CVOL
EVOLID   DS    CL6                     VOLUME SERIAL NUMBER OF THE CVOL
*
*
         ORG   EXTENSN                 ***OLD CVPE***
EVOLIDO  DS    CL6                     VOLUME SERIAL NUMBER OF THE CVOL
*
*
         ORG   EXTENSN                 ***AE***
ETRUEN   DS    CL8                     TRUE HIGH LEVEL NAME
*
*
         ORG   EXTENSN                 ***GIPE***
EGIPEF   DS    0XL4                    GIPE FIELD
EGFLAGS  DS    XL1                     OPTION FLAGS FOR GROUP
EGDELETE EQU   X'02'                   INDIC DELETE OPTION
EGEMPTY  EQU   X'01'                   INDIC EMPTY OPTION
EGMAXSIZ DS    XL1                     SPECIFIED MAXIMUM SIZE OF GROUP
EGCURSIZ DS    XL2                     CURRENT SIZE OF GROUP
         EJECT
DCBAREA  DSECT
         DS    6F
AREA     DS    0F
NMBYTES  DS    1F                      SP NO. & LENGTH OF AREA
         DS    1F                      CCHH OF SYSCTLG DSCB
CATWAP   DS    1F                      PTR TO 'WORKAREA' FOR 'OPENEXT'
BLDLAP   DS    1F                      PTR TO 'BLDLAREA' FOR 'OPENEXT'
         DS    1F                      DEB & 'OPENEXT' WORKAREA
         DS    81D                     DEB & 'OPENEXT' WORKAREA OZ15077
AREAEND  EQU   *
         EJECT
VCBD     DSECT
         DS    0F
VCBLOCK  DS    0XL256                  VOLUME CONTROL BLOCK
VCBVOLCT DS    H                       VOLUME COUNT
VCBVOLS  DS    XL240                   VOLUME LIST
         DC    XL10'00'
VCBLNK   DS    XL3                     VCB LINK TTR
         DC    XL1'00'
VCBBAL   DS    F                       SAVE AREA FOR A LINKAGE REG
*
.END     ANOP
         PRINT ON
         MEND
./ ADD NAME=WRTRP
         MACRO
&NAME    WRTRP &SIZE=,&DISP=
         AIF   (T'&SIZE NE 'O').A1
         MNOTE 8,'SIZE NOT STATED'
         MEXIT
.A1      ANOP
         AIF   ('&SIZE'(1,1) EQ '(').A2
&NAME    LA    R1,&SIZE .                  LENGTH OF MESSAGE
         AGO   .A3
.A2      ANOP
         AIF   ('&SIZE'(1,3) EQ '(1)').A4
&NAME    LR    R1,&SIZE .                  LENGTH OF MESSAGE
         AGO   .A3
.A4      ANOP
&NAME    L     R15,PARPRADR .           ENTRY TO PARALLEL PRINT
         AGO   .A5
.A3      ANOP
         L     R15,PARPRADR .           ENTRY TO PARALLEL PRINT
.A5      ANOP
         LA    R15,&DISP.(R15) .            ENTRY POINT IN DPRINT
         BALR  R14,R15 .                LINK TO MODULE
         MEND
./ ADD NAME=X390DATA
         MACRO
         X390DATA &PRINT=NOGEN,&JID=NO,&OPT=NO,&ESD=NO,&SOURCE=NO,     X
               &SRCERR=NO,&DCDS=NO,&MACH=NO,&SYM=NO,&XREF=NO,          X
               &USING=NO,&RLD=NO,&MXREF=NO,&STATS=NO,&MXREFX=NO,       X
               &OUTPUT=NO,&USER=NO,&AID=NO,&COMPUNIT=NO,&DCDSX=NO,     X
               &RXREF=NO
.*                           APPEND AFTER ASMADATA TO MAP TACHYON
.*                           SYSADATA FILES
.*                           NEW 2008-10-08        G. POSTPISCHIL
.*
.*    N.B.: Not all record types have been verified, and not all are
.*    complete. Those with offsets should be usable.
.*
         PUSH  PRINT                    Push the PRINT status
         PRINT &PRINT                   and set it
ASMADATA DSECT
         ORG   ADATA_ORG
.*
         AIF ('&JID' EQ 'NO').OPT
         AIF ('&JID' EQ 'YES').JID
         MNOTE 4,'Invalid JID parameter. ''YES'' assumed'
.JID     ANOP
TDATA_RECJID        EQU   X'0000'  - Job Identification
TXJID_DATE            DS    CL8  10 Date ASMADATA record written
TXJID_TIME            DS    CL4  18 Time the ASMADATA record written
TXJID_PROD_NUMBER     DS    CL8  1C Product number
TXJID_PROD_VERSION    DS    CL8  24 Version Number of the product
                      DS    FL2  2C ?
TXJID_PTF             DS    CL8  2E PTF level number of the product
TXJID_SYSTEM_ID       DS    CL24 26 System Identification
TXJID_JOBNAME         DS    CL8  4E Jobname producing ASMADATA file
TXJID_STEPNAME        DS    CL8  56 MVS stepname
TXJID_PROCSTEP        DS    CL8  5E MVS procedure stepname
TXJID_NUM_INPUT_FILES DS    FL4  66 The number of input files
* The following fields are repeated - for the count contained above
                      DS    FL4  6A ?
                      DS    FL4  6E ?
TXJID_INP_FILENUM     DS    FL4  72 The Input file number
TXJID_INP_FILE_OFF    DS    FL4  76 The Input file number
TXJID_INP_FILE_LEN    DS    FL4  7A The length of the input file
TXJID_INP_MEM_LEN     DS    FL4  7E The length of the member name
TXJID_INP_VOL_LEN     DS    FL4  82 The length of the serial ?
                      DS    FL4  86 ?
                      DS    FL4  8A ?
TXJID_INPUT_FILENAME  DS    0CL256  Input file for the assembly
TXJID_INPUT_VOLNAME   DS    0CL256  Input volume name
TXJID_INPUT_MEMNAME   DS    0CL256  Input member name
TXJID_EQU_LEN         EQU   TXJID_INP_FILE_LEN-ASMADATA
*
.OPT     ANOP
         AIF ('&OPT' EQ 'NO').ESD
         AIF ('&OPT' EQ 'YES').OPT1
         MNOTE 4,'Invalid OPT parameter. ''YES'' assumed'
.OPT1    ANOP
*
         ORG   ADATA_ORG
TDATA_RECOPT        EQU   X'0010'  - Options
TXOPT_BYTE1        DS  XL1      10   Option byte 1
*                             (see values below)
TXOPT_ALIGN        EQU   X'80'       Align option set
TXOPT_ASA          EQU   X'40'       ASA option set
TXOPT_BATCH        EQU   X'20'       Batch option set
TXOPT_COMPAT       EQU   X'10'       Compat set
TXOPT_COMPATC      EQU   X'08'       Compat(CASE) set
TXOPT_COMPATS      EQU   X'04'       Compat(SYSLST) set
TXOPT_DBCS         EQU   X'02'       DBCS set
TXOPT_DECK         EQU   X'01'       DECK set
*
TXOPT_BYTE2        DS  XL1      11   Option byte 2
*                             (see values below)
TXOPT_DXREF        EQU   X'80'       Dxref option set
TXOPT_ESD          EQU   X'40'       ESD option set
TXOPT_FOLD         EQU   X'20'       FOLD option set
TXOPT_LIBMAC       EQU   X'10'       LIBMAC option set
TXOPT_LIST         EQU   X'08'       LIST option set
TXOPT_ADATA        EQU   X'04'       ADATA option set
TXOPT_MXREF        EQU   X'02'       MXREF option set
TXOPT_OBJECT       EQU   X'01'       OBJECT option set
*
TXOPT_BYTE3        DS  XL1      12   Option byte 3
*                             (see values below)
TXOPT_PCONT        EQU   X'80'       Pcontrol option set
TXOPT_PCONTON      EQU   X'40'       Pcontrol(on) option set
TXOPT_PCONTDATA    EQU   X'20'       Pcontrol(data) option set
TXOPT_PCONTGEN     EQU   X'10'       Pcontrol(gen) option set
TXOPT_PCONTUH      EQU   X'08'       Pcontrol(uhead) option set
TXOPT_PCONTMS      EQU   X'04'       Pcontrol(msource) option set
TXOPT_PCONTMC      EQU   X'02'       Pcontrol(mcall) option set
TXOPT_COMPATM      EQU   X'01'       COMPAT(MACROCASE)
*
TXOPT_BYTE4        DS  XL1      13   Option byte 4
*                             (see values below)
TXOPT_RENT         EQU   X'80'       RENT option set
TXOPT_RLD          EQU   X'40'       RLD option set
TXOPT_TERM         EQU   X'20'       TERM option set
TXOPT_TEST         EQU   X'10'       TEST option set
TXOPT_XREF         EQU   X'08'       XREF option set
TXOPT_XREFF        EQU   X'04'       XREF(FULL) option set
TXOPT_SUBLIB       EQU   X'02'       SUBLIB(DF) option set
TXOPT_XREFS        EQU   X'01'       XREF(SHORT) option set
*
TXOPT_BYTE5        DS  XL1      14   Option byte 5
*                             (see values below)
TXOPT_EXIT         EQU   X'80'       EXIT option set
TXOPT_INEXIT       EQU   X'40'       INEXIT option set
TXOPT_LIBEXIT      EQU   X'20'       LIBEXIT option set
TXOPT_OBJEXIT      EQU   X'10'       OBJEXIT option set
TXOPT_PRTEXIT      EQU   X'08'       PRTEXIT option set
TXOPT_ADEXIT       EQU   X'04'       ADEXIT option set
TXOPT_TRMEXIT      EQU   X'02'       TRMEXIT option set
*
TXOPT_BYTE6        DS  XL1      15   Option byte 6
*                             (see values below)
TXOPT_USINGW       EQU   X'80'       USING(WARN) option set
TXOPT_USINGL       EQU   X'40'       USING(LIMIT) option set
TXOPT_USINGM       EQU   X'20'       USING(MAP) option set
TXOPT_FLAG_ALIGN   EQU   X'10'       FLAG(ALIGN) option set
TXOPT_FLAG_CONT    EQU   X'08'       FLAG(CONT) option set
TXOPT_FLAG_RECORD  EQU   X'04'       FLAG(RECORD) option set
TXOPT_XOBJECT      EQU   X'02'       XOBJECT option set
TXOPT_XOBJECT_ADAT EQU   X'01'       XOBJECT(ADATA) option set
*
TXOPT_BYTE7        DS  XL1      16   Option byte 7
*                             (see values below)
TXOPT_PESTOP       EQU   X'80'       PESTOP option set
TXOPT_RA2          EQU   X'40'       RA2 option set
TXOPT_FLAG_SUBSTR  EQU   X'20'       FLAG(SUBSTR) Option Set
TXOPT_TRANSLATE    EQU   X'10'       TRANSLATE option set
TXOPT_LIST_121     EQU   X'04'       LIST(121) option set
TXOPT_LIST_133     EQU   X'08'       LIST(133) option set
TXOPT_LIST_MAX     EQU   X'0C'       LIST(MAX) option set
TXOPT_MXREF_FULL   EQU   X'01'       MXREF(FULL) option set
TXOPT_MXREF_SOURCE EQU   X'02'       MXREF(SOURCE) option set
TXOPT_MXREF_XREF   EQU   X'03'       MXREF(XREF) option set
*
TXOPT_BYTE8        DS  XL1      17   Option byte 8
*                             (see values below)
TXOPT_PROFILE      EQU   X'80'       PROFILE option set
TXOPT_PCONT_OFF    EQU   X'40'       PCONTROL(OFF) option set
TXOPT_PCONT_NODATA EQU   X'20'       PCONTROL(NOADATA) option set
TXOPT_PCONT_NOGEN  EQU   X'10'       PCONTROL(NOGEN) option set
TXOPT_PCONT_NOUH   EQU   X'08'       PCONTROL(NOUHEAD) option set
TXOPT_PCONT_NOMS   EQU   X'04'       PCONTROL(NOMSOURCE) option set
TXOPT_PCONT_NOMC   EQU   X'02'       PCONTROL(NOMCALL) option set
TXOPT_XREF_UNREFS  EQU   X'01'       XREF(UNREFS) option set
*
TXWARN_VALUE       DS  FL1      18   Value from USING(WARN(n))
TXOPT_FLAG_VALUE   DS  FL1      19   Value from FLAG(n)
*
TXOPT_BYTE9        DS  XL1      1A   Option byte 9                 @l1a
*                             (see values below)
TXOPT_RXREF        EQU   X'80'       RXREF option set              @l1a
TXOPT_FLAG_IMPLEN  EQU   X'40'       FLAG(IMPLEN) option set       @l1a
TXOPT_FLAG_PAGE0   EQU   X'20'       FLAG(PAGE0) option set        @l1a
TXOPT_INFO         EQU   X'10'       INFO option set               @l1a
TXOPT_COMPATL      EQU   X'08'       COMPAT(LITTYPE) option set    @l1a
TXOPT_FLAG_PUSH    EQU   X'04'       FLAG(PUSH) option set     @PQ22004
*                  EQU   X'02'       Unused                        @l1a
*                  EQU   X'01'       Unused                        @l1a
*
                   DS  CL1      1B   Reserved                      @l1c
TXOPT_TRANS_SUFFIX DS  CL2      1C   Value from TRANSLATE(xx)
TXOPT_PROFMEM      DS  CL8      1E   Value from PROFILE(member)
TXLIMIT_VALUE      DS  HL2      26   Value from USING(LIMIT(nnnn))
                   DS  HL2      28   ?
                   DS  HL2      2A   ?
TXOPT_LAN          DS  CL3      2C   Language option in effect
TXOPT_LINCOUNT     DS  HL2      2F   Linecount option
TXOPT_OPTTAB       DS  CL3      31   OPT table specified
                   DS  CL8      34   ?
                   DS  FL4      3C   ?
                   DS  CL2      40   ?
                   DS  FL3      42   ?
TXINEXIT_PROG_LEN  DS  FL4    ? 45   Length of Inexit program name
TXLIBEXIT_PROG_LEN DS  FL4    ? 49   Length of Libexit program name
TXOBJEXIT_PROG_LEN DS  FL4    ? 4D   Length of Objexit program name
TXPRTEXIT_PROG_LEN DS  FL4    ? 51   Length of Prtexit program name
TXADEXIT_PROG_LEN  DS  FL4    ? 55   Length of Adexit program name
TXTRMEXIT_PROG_LEN DS  FL4    ? 59   Length of Trmexit program nam
TXINEXIT_STR_LEN   DS  FL4    ? 5D   Length of string supplied to exit
TXLIBEXIT_STR_LEN  DS  FL4    ? 61   Length of string supplied to exit
TXOPT_PARM_OFF     DS  FL4      65   offset-4 to PARM
TXOPT_PARM_LEN     DS  FL4      69   PARM Length
TXOPT_SYSPARM_OFF  DS  FL4      6D   offset-4 to SYSPARM
TXOPT_SYSPARM_LEN  DS  FL4      71   SYSPARM length
TXOBJEXIT_STR_LEN  DS  FL4    ? 75   Length of string supplied to exit
TXPRTEXIT_STR_LEN  DS  FL4    ? 79   Length of string supplied to exit
TXADEXIT_STR_LEN   DS  FL4    ? 7D   Length of string supplied to exit
TXTRMEXIT_STR_LEN  DS  FL4    ? 81   Length of string supplied to exit
                   DS  20FL4  ? 85   ?
TXINEXIT_PROG      DS  0CL8     D5   Inexit program name
TXLIBEXIT_PROG     DS  0CL8          Library exit program name
TXOBJEXIT_PROG     DS  0CL8          Object exit program name
TXPRTEXIT_PROG     DS  0CL8          Print exit program name
TXADEXIT_PROG      DS  0CL8          ADATA exit program name
TXTRMEXIT_PROG     DS  0CL8          TERM exit program name
TXINEXIT_STR       DS  0CL64         Field containing string
TXLIBEXIT_STR      DS  0CL64         Field containing string
TXOBJEXIT_STR      DS  0CL64         Field containing string
TXPRTEXIT_STR      DS  0CL64         Field containing string
TXADEXIT_STR       DS  0CL64         Field containing string
TXTRMEXIT_STR      DS  0CL64         Field containing string
TXOPT_SYSPARM      DS  0CL255        Field containing SYSPARM string
TXOPT_PARMS        DS  0CL255        Field containing PARM string
TXOPT_EQU_LEN      EQU TXINEXIT_PROG-ASMADATA  Length of part of record
TXOPT_EQU_LEN_1    EQU TXOPT_SYSPARM-TXOBJEXIT_STR_LEN
*
.*
.ESD     ANOP
         AIF ('&ESD' EQ 'NO').SOURCE
         AIF ('&ESD' EQ 'YES').ESD1
         MNOTE 4,'Invalid ESD parameter. ''YES'' assumed'
.ESD1    ANOP
*
         ORG   ADATA_ORG
TDATA_RECESD        EQU   X'0020'  - External Symbol Dictionary
TXESD_TYPE        DS  XL1    10     The section type of the ESD record
TXESD_FLAGS       DS  XL1    11     The ESD flag byte
                  DS  HL2    12     Reserved
TXESD_ESDID       DS  FL4    14     The ESDID
                  DS  AL4    18     Reserved
TXESD_ADDR        DS  AL4    1C     The section address
                  DS  AL4    20     Reserved
TXESD_LEN         DS  FL4    24     The length of the section
TXESD_LDID        DS  FL4    28     The ESDID of the CSECT in which the
*                                   entry point was defined
                  DS  CL8    2C     Reserved
                  DS  HL4    34     Reserved
                  DS  HL2    38     Reserved
TXESD_NAME_LEN    DS  HL2    3A     The section name length
                  DS  HL2    3C     Reserved
TXESD_ALIAS_LEN   DS  HL2    3E     The ALIAS name length
                  DS  AL4    40     Reserved
TXESD_NAME        DS  0CL63  44     The section name
TXESD_ALIAS       DS  0CL63         The Alias name
TXESD_EQU_LEN     EQU *-ASMADATA    The length of the ESD record
*
.*
.SOURCE  ANOP
         AIF ('&SOURCE' EQ 'NO').SRCERR
         AIF ('&SOURCE' EQ 'YES').SOURCE1
         MNOTE 4,'Invalid SOURCE Parameter. ''YES'' assumed'
.SOURCE1 ANOP
         ORG   ADATA_ORG
TDATA_RECSOURCE     EQU   X'0030'  - Source
TXSRC_ESDID       DS  FL4    10     The ESD ID for the source record
TXSRC_STMT        DS  FL4    14     The statement number
TXSRC_INPUT_REC   DS  FL4    18     Input source record number
TXSRC_PARENT_REC  DS  FL4    1C     Input source parent record numb
TXSRC_INPUT_NUM   DS  HL4    20     Input relative file number
TXSRC_PARENT_NUM  DS  HL4    24     Parent relative file number
TXSRC_LOCTR       DS  FL4    28     Source record location counter
TXSRC_REC_ORIGIN  DS  XL1    2C     Where the source line comes from
TXSRC_REC_PINP    EQU X'01'         Source line from Primary Input
TXSRC_REC_MACGEN  EQU X'02'         Source line from Macro generation
TXSRC_REC_MAC     EQU X'03'         Source line from macro / copy code
*                 EQU X'04'         Reserved                      1@L1D
TXSRC_REC_AINSERT EQU X'05'         Source line from AINSERT buffr @L1A
TXSRC_PARENT_ORIGIN DS XL1   2D     Where the parent line comes from   x
                                    (Values as above)
TXSRC_PRINT_GEN   EQU *,X'80'        Print Gen                     @l1a
TXSRC_PRINT_DATA  EQU *,X'40'        Print Data                    @l1a
TXSRC_PRINT_ON    EQU *,X'20'        Print On                      @l1a
TXSRC_PRINT_NOMSOURCE EQU *,X'10'    Print Nomsource (0=Print Msource)
TXSRC_PRINT_UHEAD EQU *,X'08'        Print Uhead                   @l1a
TXSRC_PRINT_MCALL EQU *,X'04'        Print Mcall                   @l1a
TXSRC_PRINT_FLAGS DS  XL1    2E     Current print status flags     @l1a
                  DS  XL2    2F     Reserved                       @l1c
TXSRC_REC_TYPE    DS  XL1    31     Source record type
TXSRC_REC_COMM    EQU X'01'         Comment
TXSRC_REC_MACH    EQU X'02'         Machine instruction
TXSRC_REC_ASM     EQU X'03'         Assembler instruction
TXSRC_REC_MACR    EQU X'04'         Macro instruction
TXSRC_REC_MACD    EQU X'05'         Macro definition
TXSRC_ASM_OPCODE  DS  XL1    32     The assembler opcode
TXSRC_FLAGS       DS  XL1    33     Flag bytes for address fields
TXSRC_FLAGA1      EQU X'80'         Address 1 present
TXSRC_FLAGA2      EQU X'40'         Address 2 present
                  DS  FL4    34     Reserved
TXSRC_ADDRESS1    DS  FL4    38     Address 1 field from assembly
                  DS  FL4    3C     Reserved
TXSRC_ADDRESS2    DS  FL4    40     Address 2 field from assembly
TXSRC_NAME_OFFSET DS  FL4    44     Offset of name entry in statement
*                                   field
TXSRC_NAME_LEN    DS  FL4    48     Where the source line comes from
TXSRC_OP_ENTRY    DS  FL4    4C     Offset of operation
TXSRC_OP_LEN      DS  FL4    50     Length of operation
TXSRC_OPND_ENTRY  DS  FL4    54     Offset of operand entry
TXSRC_OPND_LEN    DS  FL4    58     Length of operand entry
TXSRC_REM_ENTRY   DS  FL4    5C     Offset of remarks entry
TXSRC_REM_LEN     DS  FL4    60     Length of Remarks entry
TXSRC_CONT_ENTRY  DS  FL4    64     Offset of Continuation indicator
                  DS  FL4    68     Reserved
                  DS  FL4    6C  ?  Reserved
TXSRC_COPY_LEN    DS  FL4    70     Length of macro/copy member name
                  DS  FL4    74     Reserved
TXSRC_PARENT_LEN  DS  FL4    78     Length of parent macro/copy mem
                  DS  FL4    7C     Reserved
TXSRC_REC_LEN     DS  FL4    80     Length of source record
                  DS  CL8    84     Reserved
TXSRC_COPY_NAME   DS  0CL256 8C     The macro/copy name
TXSRC_PARENT_NAME DS  0CL256        The parent macro/copy name
TXSRC_RECORD      DS  0CL80         The actual source record
TXSRC_EQU_LEN     EQU *-ASMADATA    Length of the rec - macro and srce
*
.*
.SRCERR  ANOP
         AIF ('&SRCERR' EQ 'NO').DCDS
         AIF ('&SRCERR' EQ 'YES').SRCERR1
         MNOTE 4,'Invalid SRCERR Parameter. ''YES'' assumed'
.SRCERR1 ANOP
*
         ORG   ADATA_ORG
TDATA_RECSRCERR     EQU   X'0032'  - Source Error
TXSRCERR_NUM      DS  FL4    10     Statement number in error
TXSRCERR_ID       DS  CL16   14     Error message identifier
TXSRCERR_SEV      DS  HL2    24     Error severity
                  DS  FL4    26     ?
TXSRCERR_MSG_LEN  DS  FL4    2A     The error message length
                  DS  FL2    2E     ?
TXSRCERR_MSG_OFF  DS  FL4    30     offset-4 to text
                  DS  FL2    34     ?
TXSRCERR_MSG      DS  0CL80  36     The error message (variable length)
TXSRCERR_EQU_LEN  EQU TXSRCERR_MSG-ASMADATA    length of error record
.*
.DCDS    ANOP
         AIF ('&DCDS' EQ 'NO').DCDSX
         AIF ('&DCDS' EQ 'YES').DCDS1
         MNOTE 4,'Invalid DCDS Parameter. ''YES'' assumed'
.DCDS1   ANOP
         ORG   ADATA_ORG
TDATA_RECDCDS       EQU   X'0034'  - DC/DS
TXDCDS_ESDID      DS  FL4    10     ESDID for the source record
TXDCDS_TYPE_FLAG  DS  XL1    14     Type flag
TXDCDS_TYPE_DC    EQU X'80'         Flag for DC
TXDCDS_TYPE_CXD   EQU X'40'         Flag for DXD within DC
TXDCDS_TYPE_CCW   EQU X'20'         Flag for CCW
TXDCDS_TEXT_REC   EQU X'10'         X'0035' Text record exists
                  DS  CL5    15     Reserved
TXDCDS_STMT       DS  FL4    1A     Statement Number of source
TXDCDS_NUMOPS     DS  FL4    1E     Number of operands
                  DS  FL4    22     ?
.*  repeat from here for next operand
TXDCDS_VALUE_OFF  DS  FL4    26     Offset to value
TXDCDS_LOC_CTR    DS  FL4    2A     Location counter
TXDCDS_DUP        DS  FL4    2E     The duplication factor
TXDCDS_BIT_OFFSET DS  XL1    32     Offset within byte for B constant
TXDCDS_TYP_ATTR   DS  XL1    33     The type attribute
TXDCDS_TYPE_EXT   DS  CL1    34     Type extension
                  DS  XL8    35     Reserved
TXDCDS_NUM_NOM    DS  FL4    3D     Number of nominal values
                  DS  FL4    41     ?
                  DS  FL4    45     ?
                  DS  FL4    49     ?
TXDCDS_BYTE_LEN   DS  FL4    4D     Number of bytes in the value
TXDCDS_BIT_LEN    DS  XL1    51     Number of Bits if B type constant
TXDCDS_VALUE      DS  0X     52     The nominal value
TXDCDS_EQU_LEN    EQU *-ASMADATA    Length of record
.*
.*
.DCDSX   ANOP
         AIF ('&DCDSX' EQ 'NO').MACH
         AIF ('&DCDSX' EQ 'YES').DCDSX1
         MNOTE 4,'Invalid DCDSX Parameter. ''YES'' assumed'
.DCDSX1  ANOP
         ORG   ADATA_ORG
TDATA_RECDCDSX      EQU   X'0035'  - DC/DS Extension
TXDCDSX_ESDID     DS  FL4           ESDID for the source record
TXDCDSX_LOCTR     DS  FL4           Location Count for instruction
TXDCDSX_STMT      DS  FL4           Statement Number of source
                  DS  FL8           Reserved
TXDCDSX_BYTE_LEN  DS  HL2           No of bytes of object text
TXDCDSX_VALUE     DS  0X            Object text
TXDCDSX_EQU_LEN   EQU *-ASMADATA    Length of record
.*
.MACH    ANOP
         AIF ('&MACH' EQ 'NO').SYM
         AIF ('&MACH' EQ 'YES').MACH1
         MNOTE 4,'Invalid MACH Parameter. ''YES'' assumed'
.MACH1   ANOP
         ORG   ADATA_ORG
TDATA_RECMACH       EQU   X'0036'  - Machine Instruction
TXMACH_ESDID      DS  FL4    10     ESDID for the source record
TXMACH_STMT       DS  FL4    14     Statement number
                  DS  CL8    18     Reserved
                  DS  AL4    20     Reserved
TXMACH_LOCTR      DS  FL4    28     Location counter for the inst.
                  DS  FL2    2C     Reserved
TXMACH_INST_LEN   DS  HL2    2E     Length of the machine instructions
TXMACH_INST_VAL   DS  0X     30     The actual machine instruction
TXMACH_EQU_LEN    EQU *-ASMADATA    The length of the record
.*
.SYM     ANOP
         AIF ('&SYM' EQ 'NO').XREF
         AIF ('&SYM' EQ 'YES').SYM1
         MNOTE 4,'Invalid SYM Parameter. ''YES'' assumed'
.SYM1    ANOP
         ORG   ADATA_ORG
TDATA_RECSYM        EQU   X'0042'  - Symbol
TXSYM_ESDID       DS  FL4    10     ESDID
TXSYM_STMT        DS  FL4    14     Statement number
TXSYM_LOCTR       DS  FL4    18     Location counter
TXSYM_TYPE        DS  XL1    1C     Symbol section typr
TXSYM_DUP         DS  FL4    1D     Duplication factor
TXSYM_ATTR        DS  XL1    21     Symbol attribyte type
                  DS  XL1    22     ? attribute again
                  DS  XL7    23
TXSYM_BYTE_LEN    DS  FL4    2A     Length in bytes
TXSYM_INT         DS  HL2    2E     Number of positions occupied by
*                                   integer portion of fixed-point
TXSYM_SCALE       DS  HL2    30     Number of positions occupied by
*                                   fractional portion of fixed-point
TXSYM_RELOC_FLAG  DS  XL1    32     Relocatable flag
TXSYM_RELOC       EQU X'80'         Operand points to a relocatable
*                                   expression
TXSYM_COMPLEX     EQU X'C0'         Operand points to a complex    @P1A
*                                   relocatable symbol             @P1A
                  DS  XL7    33     Reserved
                  DS  FL4    3A     ?
TXSYM_NAME_LEN    DS  FL4    3E     Length of the symbol name
TXSYM_NAME        DS  0CL63  42     The symbol name (variable name)
TXSYM_EQU_LEN     EQU *-ASMADATA    Length of the record
*
.*
.XREF    ANOP
         AIF ('&XREF' EQ 'NO').RXREF
         AIF ('&XREF' EQ 'YES').XREF1
         MNOTE 4,'Invalid XREF Parameter. ''YES'' assumed'
.XREF1   ANOP
         ORG   ADATA_ORG
TDATA_RECXREF       EQU   X'0044'  - Symbol & Literal Cross-Referen
TXXREF_ESD_ID      DS  FL4   10      ESD
TXXREF_REL_TYPE    DS  CL1   14      Relocatability type
                   DS  XL7   15      Reserved
TXXREF_STMT        DS  FL4   1C      Statement number sym / lit is on
TXXREF_SYM_LEN     DS  FL4   20      Length of the symbol / literal
TXXREF_NUMREF      DS  FL4   24      Number of references
                   DS  FL4   28      ?
                   DS  FL4   2C      ?
TXXREF_SYM_NAME    DS  0CL63 30      Symbol / literal name (variable)
TXXREF_REF_FLAG    DS  XL1           Reference flag for the reference
TXXREF_STAT_NO     DS  FL4           Statment number that the symbol /
*                                    literal is referenced on
TXXREF_EQU_LEN     EQU *-ASMADATA    Length of the record
*
.*
.RXREF   ANOP                                                      @l1a
         AIF ('&RXREF' EQ 'NO').USING                              @l1a
         AIF ('&RXREF' EQ 'YES').RXREF1                            @l1a
         MNOTE 4,'Invalid RXREF Parameter. ''YES'' assumed'        @l1a
.RXREF1   ANOP                                                     @l1a
         ORG   ADATA_ORG                                           @l1a
TDATA_RECRXREF     EQU   X'0045'  -  Register Cross-Reference
TXRXREF_REG_NO     DS  XL1   10      Register Number
TXRXREF_REG_TYPE   DS  CL1   11      Register Type - G - general
                   DS  XL2   12      Reserved
TXRXREF_TOT_NUMREF DS  FL4   14      Total number of references
TXRXREF_NUMREF     DS  FL4   18      Number of references in this
*                                     record
TXRXREF_OFFSET     DS  FL4   1C      ?
TXRXREF_STAT_NO    DS  FL4   20+     Statement number containing reg
TXRXREF_REF_FLAG   DS  CL1   24+     Reference flag
*                             (see values below)
*                                    ' ' No branch or modification
*                                    'M' Modified
*                                    'B' Branched to
*                                    'U' USING statement
*                                    'D' DROP statement
*                                    'N' Index register reference
TXRXREF_EQU_LEN    EQU *-ASMADATA    Length of the record
*
.*
.USING   ANOP
         AIF ('&USING' EQ 'NO').RLD
         AIF ('&USING' EQ 'YES').USING1
         MNOTE 4,'Invalid USING Parameter. ''YES'' assumed'
.USING1  ANOP
         ORG   ADATA_ORG
TDATA_RECUSING      EQU   X'0080'  - USING Map
TXUSING_RECTYPE    DS  XL1   10      ie. Using, push, pop, drop.
TXUSING_FLAG       DS  XL1   11      Using type
TXUSING_LOCID      DS  XL2   12      USING location ID
                   DS  XL2   14      ?
TXUSING_STMT       DS  FL4   16      The statement number of the using
TXUSING_LOCTR      DS  FL4   1A      The location count of the using
TXUSING_VALUE      DS  FL4   1E      The type value
TXUSING_LAST_STMT  DS  FL4   22      The last statement for the using
TXUSING_ID         DS  FL4   26      ESDID
TXUSING_REG        DS  XL1   2A      The register used in the using
TXUSING_DISP       DS  XL2   2B      The max displacement for the using
                   DS  XL1   2D      Reserved
TXUSING_RANGE      DS  FL4   2E      The range value
                   DS  XL2   32      Reserved
                   DS  FL4   34      ?
TXUSING_LABEL_LEN  DS  FL4   38      Length of LABEL and using
*                                    text field
TXUSING_LABEL      DS  0CL63 3C      The text for the label and text
*                                    from the source record
TXUSING_EQU_LEN    EQU *-ASMADATA    Length of the record
.*
.RLD     ANOP
         AIF ('&RLD' EQ 'NO').MXREF
         AIF ('&RLD' EQ 'YES').RLD1
         MNOTE 4,'Invalid RLD Parameter. ''YES'' assumed'
.RLD1    ANOP
         ORG   ADATA_ORG
TDATA_RECRLD        EQU   X'0040'  - Relocation Dictionary
TXRLD_POSID        DS  FL4   10      ESDID number
TXRLD_RELID        DS  FL4   14      ESDID number
                   DS  FL4   18      Reserved
TXRLD_ADDRESS      DS  FL4   1C      Address of ADCON field
TXRLD_FLAGS        DS  XL1   20      Flags for the type of RLD
TXRLD_EQU_LEN      EQU *-ASMADATA    Length of the RLD record
.*
.MXREF   ANOP
         AIF ('&MXREF' EQ 'NO').MXREFX
         AIF ('&MXREF' EQ 'YES').MXREF1
         MNOTE 4,'Invalid MXREF Parameter. ''YES'' assumed'
.MXREF1  ANOP
         ORG   ADATA_ORG
TDATA_RECMXREF      EQU   X'0060'  - Library Record
TXMXREF_CONCAT     DS  FL4   10      The dataset concat number
                   DS  FL4   14      ?
TXMXREF_DAT_LEN    DS  FL4   18      The length of the dataset name
                   DS  FL4   1C      ?
TXMXREF_VOL_LEN    DS  FL4   20      The length of the volume name
                   DS  FL4   24      ?
TXMXREF_DD_LEN     DS  FL4   28      The length of the ddname
TXMXREF_NUM        DS  FL4   2C      The number of macros / copy code
                   DS  FL4     30    Reserved
TXMXREF_DATASET    DS  0CL256  34    Dataset name where the macro /
*                                    copy code was retrieved from
TXMXREF_VOL        DS  0CL256        Volume name where dataset resides
TXMXREF_DDNAME     DS  0CL256        DDNAME where dataset resides
                   DS  FL4           ?
                   DS  FL4           ? offset to length ?
TXMXREF_MAC_LEN    DS  FL4           The length of the macro name
TXMXREF_MAC_NAME   DS  0CL256        The macro / copy code name
TXMXREF_EQU_LEN    EQU *-ASMADATA    Length of the record
.*
.MXREFX  ANOP
         AIF ('&MXREFX' EQ 'NO').USER
         AIF ('&MXREFX' EQ 'YES').MXREFX1
         MNOTE 4,'Invalid MXREFX Parameter. ''YES'' assumed'
.MXREFX1  ANOP
         ORG   ADATA_ORG
TDATA_RECMXREFX     EQU   X'0062'  - Macro & Copy Code Cross Refere
TXMXRFX_CNUM       DS  FL4   10      Library Concatenation Number
TXMXRFX_DEFN       DS  FL4   14      Stmnt Number; 0=LIB; -1=Undef
TXMXRFX_CTYPE      DS  CL1   18      Concatenation Type
TXMXRFX_CTYPE_L    EQU C'L'          Library
TXMXRFX_CTYPE_P    EQU C'P'          Primary Input
TXMXRFX_DEFN_FLAG  DS  CL1   19      Definition Flag
TXMXRFX_DEFN_IMBED EQU C'X'          Macro imbedded due to LIBMAC
                   DS  FL4   1A      ?
                   DS  FL4   1E      ?
TXMXRFX_NAME_OFF   DS  FL4   22      offset-4 to name
TXMXRFX_NAME_LEN   DS  FL4   26      Length of name
TXMXRFX_MAC_OFF    DS  FL4   2A      offset-4 to macro name
TXMXRFX_MAC_LEN    DS  FL4   2E      Length of macro name
TXMXRFX_REF_NUM    DS  FL4   32      Number of references ?
TXMXRFX_NUM_REF    DS  FL4   36      Number of references ?
TXMXRFX_STMT_OFF   DS  FL4   3A      offset-4 to first ref stmt #
TXMXRFX_MAC_NAME   DS  CL64          The macro / copy code name
TXMXRFX_CALLED_BY  DS  CL64          The name of the macro CALL
TXMXRFX_NUMREF     DS  FL4           Statement reference
TXMXRFX_TYPREF     DS  XL1           Reserved
TXMXRFX_EQU_LEN    EQU *-ASMADATA    Length of the record
TXMXRFX_REF_LEN    EQU *-ADMXRFX_REF_STMT Len of ref statement
.*
.USER    ANOP
         AIF ('&USER' EQ 'NO').OUTPUT
         AIF ('&USER' EQ 'YES').USER1
         MNOTE 4,'Invalid USER Parameter. ''YES'' assumed'
.USER1   ANOP
         ORG   ADATA_ORG
TDATA_RECUSER       EQU   X'0070'  - User Data
TXUSER_FIELD1      DS  XL4           User Specified Binary Data
TXUSER_FIELD2      DS  XL4           User Specified Binary Data
TXUSER_FIELD3      DS  XL4           User Specified Binary Data
TXUSER_FIELD4      DS  XL4           User Specified Binary Data
TXUSER_DATA_LEN    DS  HL2           Length of ADUSER_DATA
TXUSER_DATA        DS  0C            User Specified Binary Data
TXUSER_EQU_LEN     EQU *-ASMADATA    Length of the record
.*
.OUTPUT  ANOP
         AIF ('&OUTPUT' EQ 'NO').AID
         AIF ('&OUTPUT' EQ 'YES').OUTPUT1
         MNOTE 4,'Invalid OUTPUT Parameter. ''YES'' assumed'
.OUTPUT1 ANOP
         ORG   ADATA_ORG
.* DEL   MNOTE 8,'OUTPUT Parameter Not Supported'
TDATA_RECOUTPUT     EQU   X'000A'  - Output File Information
TXOUT_NUM_OBJECT   DS  FL4      10   number of object files written
TXOUT_OFF_OBJECT   DS  FL4      14   offset-4 to output entry
TXOUT_NUM_PUNCH    DS  FL4      18   number of punch files
TXOUT_OFF_PUNCH    DS  FL4      1C   offset-4 to punch entry
TXOUT_NUM_PRINT    DS  FL4      20   number of print entries
TXOUT_OFF_PRINT    DS  FL4      24   offset-4 to print entry
TXOUT_NUM_TERM     DS  FL4      28   number of term entries
TXOUT_OFF_TERM     DS  FL4      2C   offset-4 to term entry
TXOUT_NUM_ADATA    DS  FL4      30   number of adata entries
TXOUT_OFF_ADATA    DS  FL4      34   offset-4 to adata entry
.*
                   DS  FL4      38   ?
TXOUT_NUM_OBJECT   DS  FL4      3C   Number of object files written
                   DS  FL4      40   ?
TXOUT_OBJ_NAMELEN  DS  FL4      44   Length of output file name
TXOUT_OBJ_FILENUM  DS  FL4      48   Assigned sequence number
TXOUT_OBJ_VOLLEN   DS  FL4      4C   Length of output volser name
TXOUT_OBJ_MEMLEN   DS  FL4      50   Length of output member name
                   DS  FL4      54   ?
TXOUT_OBJ_FILENAME DS  0CL256   58   Output file name
TXOUT_OBJ_VOLNAME  DS  0CL256        Output volume serial number
TXOUT_OBJ_MEMNAME  DS  0CL256        Output member name
.*
                   DS  FL4           ?
TXOUT_NUM_PUNCH    DS  FL4           Number of punch files written
                   DS  FL4           ?
TXOUT_PUN_NAMELEN  DS  FL4           Length of output file name
TXOUT_PUN_FILENUM  DS  FL4           Assigned sequence number
TXOUT_PUN_VOLLEN   DS  FL4           Length of output volser name
TXOUT_PUN_MEMLEN   DS  FL4           Length of output member name
                   DS  FL4           ?
TXOUT_PUN_FILENAME DS  0CL256        Output file name
TXOUT_PUN_VOLNAME  DS  0CL256        Output volume serial number
TXOUT_PUN_MEMNAME  DS  0CL256        Output member name
.*
                   DS  FL4           ?
TXOUT_NUM_PRINT    DS  FL4           Number of print files written
                   DS  FL4           ?
TXOUT_PRT_NAMELEN  DS  FL4           Length of output file name
TXOUT_PRT_FILENUM  DS  FL4           Assigned sequence number
TXOUT_PRT_VOLLEN   DS  FL4           Length of output volser name
TXOUT_PRT_MEMLEN   DS  FL4           Length of output member name
                   DS  FL4           ?
TXOUT_PRT_FILENAME DS  0CL256        Output file name
TXOUT_PRT_VOLNAME  DS  0CL256        Output volume serial number
TXOUT_PRT_MEMNAME  DS  0CL256        Output member name
.*
                   DS  FL4           ?
TXOUT_NUM_TERM     DS  FL4           Number of term files written
                   DS  FL4           ?
TXOUT_TRM_NAMELEN  DS  FL4           Length of output file name
TXOUT_TRM_FILENUM  DS  FL4           Assigned sequence number
TXOUT_TRM_VOLLEN   DS  FL4           Length of output volser name
TXOUT_TRM_MEMLEN   DS  FL4           Length of output member name
                   DS  FL4           ?
TXOUT_TRM_FILENAME DS  0CL256        Output file name
TXOUT_TRM_VOLNAME  DS  0CL256        Output volume serial number
TXOUT_TRM_MEMNAME  DS  0CL256        Output member name
.*
                   DS  FL4           ?
TXOUT_NUM_ADATA    DS  FL4           Number of adata files written
                   DS  FL4           ?
TXOUT_ADT_NAMELEN  DS  FL4           Length of output file name
TXOUT_ADT_FILENUM  DS  FL4           Assigned sequence number
TXOUT_ADT_VOLLEN   DS  FL4           Length of output volser name
TXOUT_ADT_MEMLEN   DS  FL4           Length of output member name
                   DS  FL4           ?
TXOUT_ADT_FILENAME DS  0CL256        Output file name
TXOUT_ADT_VOLNAME  DS  0CL256        Output volume serial number
TXOUT_ADT_MEMNAME  DS  0CL256        Output member name
TXOUT_EQU_LEN      EQU *-ASMADATA    Length of the record
.*
.AID     ANOP
         AIF ('&AID' EQ 'NO').COMPUNIT
         AIF ('&AID' EQ 'YES').AID1
         MNOTE 4,'Invalid AID Parameter. ''YES'' assumed'
.AID1 ANOP
         ORG   ADATA_ORG
TDATA_RECAID        EQU   X'0001'  - ADATA Identification
TXAID_TIME         DS  XL8      10   Universal Time bit 63 = 1ms
TXAID_CCSID        DS  XL2      18   Coded Character Set ID
TXAID_EQU_LEN      EQU *-ASMADATA    Length of the record
.*
.COMPUNIT ANOP
         AIF ('&COMPUNIT' EQ 'NO').STATS
         AIF ('&COMPUNIT' EQ 'YES').COMPUNIT1
         MNOTE 4,'Invalid COMPUNIT Parameter. ''YES'' assumed'
.COMPUNIT1 ANOP
         ORG   ADATA_ORG
TDATA_RECCOMPUNIT   EQU   X'0002'  - Compilation Unit Start/End
TXCOMP_IND         DS  XL2      10   START/END Indicator
TXCOMP_IND_START   EQU X'0000'       START of Compilation Unit
TXCOMP_IND_END     EQU X'0001'       END of Compilation Unit
                   DS  FL2      12   ?
TXCOMP_RCOUNT      DS  FL4      14   Record Count for END record
TXCOMP_EQU_LEN     EQU *-ASMADATA    Length of the record
.*
.STATS   ANOP
         AIF ('&STATS' EQ 'NO').ENDIT
         AIF ('&STATS' EQ 'YES').STATS1
         MNOTE 4,'Invalid STATS Parameter. ''YES'' assumed'
.STATS1  ANOP
         ORG   ADATA_ORG
TDATA_RECSTATS      EQU   X'0090'  - Assembly Statistics
TXSTATS_BUFFP        DS  FL4         Size in KB of buffer pool
TXSTATS_REQ_INSTOR   DS  FL4         Size in KB to be incore assembly
TXSTATS_P_INPUT      DS  FL4    18   Number of primary input records
TXSTATS_LIB_INPUT    DS  FL4    1C   Number of library records read
TXSTATS_WORK_FILE    DS  FL4         Number of work file reads
TXSTATS_P_PRINT      DS  FL4    30   Number of print records written
TXSTATS_P_PUNCH      DS  FL4         Number of punch records written
TXSTATS_WRK_WRITE    DS  FL4         Number of work file writes
TXSTATS_ADATA        DS  FL4         Number of adata ile writes
TXSTATS_ADATA_CALLS  DS  FL4         Number of adata exit calls
TXSTATS_ADATA_ADDED  DS  FL4         Number adata exit recs added
TXSTATS_ADATA_DELETE DS  FL4         Number adata exit recs deleted
TXSTATS_ADATA_DIAG   DS  FL4         Number adata exit diagnostics
TXSTATS_LIB_CALLS    DS  FL4         Number of library exit calls
TXSTATS_LIB_ADDED    DS  FL4         Number library exit recs added
TXSTATS_LIB_DELETE   DS  FL4         Number library exit recs delet
TXSTATS_LIB_DIAG     DS  FL4         Number library exit diagnostic
TXSTATS_LIST_CALLS   DS  FL4         Number of listing exit calls
TXSTATS_LIST_ADDED   DS  FL4         Number listing exit recs added
TXSTATS_LIST_DELETE  DS  FL4         Number listing exit recs delet
TXSTATS_LIST_DIAG    DS  FL4         Number listing exit diagnostic
TXSTATS_OBJ_CALLS    DS  FL4         Number of object exit calls
TXSTATS_OBJ_ADDED    DS  FL4         Number object exit recs added
TXSTATS_OBJ_DELETE   DS  FL4         Number object exit recs delete
TXSTATS_OBJ_DIAG     DS  FL4         Number object exit diagnostics
TXSTATS_INPUT_CALLS  DS  FL4         Number of input exit calls
TXSTATS_INPUT_ADDED  DS  FL4         Number input exit recs added
TXSTATS_INPUT_DELETE DS  FL4         Number input exit recs deleted
TXSTATS_INPUT_DIAG   DS  FL4         Number input exit diagnostics
TXSTATS_PUNCH_CALLS  DS  FL4         Number of punch exit calls
TXSTATS_PUNCH_ADDED  DS  FL4         Number punch exit recs added
TXSTATS_PUNCH_DELETE DS  FL4         Number punch exit recs deleted
TXSTATS_PUNCH_DIAG   DS  FL4         Number punch exit diagnostics
TXSTATS_TERM_CALLS   DS  FL4         Number of term exit calls
TXSTATS_TERM_ADDED   DS  FL4         Number term exit recs added
TXSTATS_TERM_DELETE  DS  FL4         Number term exit recs deleted
TXSTATS_TERM_DIAG    DS  FL4         Number term exit diagnostics
TXSTATS_START_TIME   DS  FL4    A4   Local time assembly commenced
TXSTATS_STOP_TIME    DS  FL4    A8   Local time assembly completed
TXSTATS_PROC_TIME    DS  FL4         Processor seconds used
                     DS  XL8         Reserved                      @L1A
TXSTATS_XFUNC_NUM    DS  FL4         Number of ext. func. loaded   @L1A
TXSTATS_FIXED_LEN  EQU *-ASMADATA    Length of the fixed part      @L1A
TXSTATS_XFUNC_VAR    EQU *           Symbol for USING              @L1A
                     DS  XL4         Reserved                      @L1A
TXSTATS_XFUNC_SETAF  DS  FL4         Number of SETAF calls         @L1A
TXSTATS_XFUNC_SETCF  DS  FL4         Number of SETCF calls         @L1A
TXSTATS_XFUNC_MSG    DS  FL4         Number of messages issued     @L1A
TXSTATS_XFUNC_MSEV   DS  HL2         Highest messages severity     @L1A
TXSTATS_XFUNC_NLEN   DS  HL2         Len of following name field   @L1A
TXSTATS_XFUNC_NAME   DS  0C          Name of the external function @L1A
TXSTATS_EQU_LEN    EQU *-ASMADATA    Length of the stats record
*
.ENDIT   ANOP
         POP   PRINT                   Restore PRINT status
         MEND
./ ADD NAME=X5COM
* /* START OF SPECIFICATIONS ****
*02* PROCESSOR = ASSEMBLER
**** END OF SPECIFICATIONS ***/
*
* ASSEMBLY PHASE COMMON AREA AS OF 05/11/69
*
         SPACE
*C311800                                                       @AZ07356
*A311900                                                       @AZ07356
X5COM    DSECT
         SPACE
* THE FOLLOWING FIELDS MUST BE INITIALIZED
         SPACE
ELCTR    DS    3F                       CURRENT LOCATION COUNTER
TXTPTR   DS    F                        TEXT POINTER
STMTN    DS    F                        STATEMENT NUMBER-LIKEWISE
LNCNT    DS    F                        LINE COUNT-INIT TO 1
         SPACE
LEFTHF   DS    0CL21              LEFT HALF INPUT TO PRINT ROUTINE
LOCATN   DS    F                        LOCATION OF ENTRY
DCDATA   DS    CL8                      FIELD FOR DC INPUT DATA
         ORG   DCDATA                   ORG BACK FOR MACHINE OP
LHOPCD   DS    H                        OPCODE FOR MACHINE INSTRUCTION
         ORG   LHOPCD+1                 ORG BACK FOR IMMEDIATE BYTE
LHIMD    DS    X
BASDS1   DS    H                        BASE-DISPLACEMENT 1
BASDS2   DS    H                        BASE-DISPLACEMENT 2
         ORG
ADDRS1   DS    F                        ADDRESS OF FIRST OPERAND
ADDRS2   DS    F                        ADDRESS OF SECOND OPERAND
LHFLGS   DSW   ENTDC,                   ENTRY IS A DC                  X
               ENTALN,                  ENTRY IS ALIGNMENT             X
               LHLNG,                   LENGTH OF OUTPUT DATA          X
               EOUBIT                   EQU ORG OR USING BIT
DNTPLH   EQU   BIT4+BIT5+BIT6+BIT7      DON'T PRINT LEFT HALF
LHEND    EQU   *                        END OF LEFT HALF
CRDCNT   DS    H                        BYTE COUNT IN TEXT (TXT) CARD
         SPACE
SYMDEF   DS    F                        POINTER TO DEFINITION DATA
SYMXRF   DS    F                        COUNT OF SYMBOLS XREF-ED THIS  *
                                         STATEMENT              OX02675
SYMCNT   DS    C                        COUNT OF SYMBOLS THIS STATEMENT
AOPF     DSW   USSRT,                   USING SORT FLAG                X
               OPNPRS,                  OPERAND PRESENT FLAG           X
               DCCOMP,                  DC COMPLETE SWITCH             X
               DCSTRT,                  OUTPUT OF DC ALREADY STARTED   X
               DCMOP,                   DC FINAL MOP-UP SWITCH         X
               DCSWH,                   DC SWITCH                      X
               NAMPRS                   NAME PRESENT SWITCH
DCEVSW   DSW   DSSW,                    INDICATOR FOR STATEMENT A DS   X
               DXDSW,                   INDICATOR FOR STATEMENT A DXD  X
               DLOCTREF,                SWITCH FOR L'*                 X
               NOTEWL,                  INDICATE A NOTE BAY BE NECESS. X
               NOTEHS,                  INDICATE A POINT WILL BE NEC.  X
               LITRSW,                  LITERAL PRESENT SWITCH         X
               XRFNO,                   TURN OFF XREF                  X
               DUPEVAL                  DUPLICATE EVAL OF DATA CONST
X5SW1    DSW   WRPFLG,                  WRAP OF LOCATION COUNTER FLAG  X
               LTDECV,                  LITERAL IN MACHINE OP          X
               COLOVLP,                 COLUMN PTR OVERLAPPED          X
               ERRBIT,                  ERROR LOGGING BIT              X
               TWASLC,                  TITLE WAS LAST ENTRY           X
               PERR,                    ERRORS DETECTED IN LAST STMT   X
               TPTEXT,                  TITLE PUNCH OPERAND VALIDITY   X
               PRPP                     FORCE PRINT OF POP OR PUSH
USPHL    DS    H                        USING PUSH-DOWN LEVEL
SWITCHES DS    0F
PRINTSW  DSW   PSTMT,                   PRINT STATEMENT                X
               PGEN,                    SWITCH TO PRINT GENERATED TEXT X
               PDATA                    SWITCH TO PRINT DC DATA
CARDP    DSW   CDPTR1                   CARD POINTER FLAG
FLDSW    DSW   PNAME,                   NAME FIELD IN STMT             X
               POPER,                   OPCODE FIELD IN STMT           X
               POPND,                   OPERAND FIELD IN STMT          X
               PCOMM                    COMMENTS FIELD IN STMT
X5VSW    DSW   VLIT,                    LITERAL IN EXPR - SET BY X5V   X
               ZAPIT                    SET TO INDICATE ZERO LEFTHF
X5MSW    DSW   E2PR,                    EXPRESSIO 2 PRESENT            *
               E3PR,                    EXPRESSION 3 PRESENT           *
               E1ERR,                   EXPR1 COMPLEXLY RELOCATABLE    *
               E2ERR,                   EXPR 2 SIMPLY OR COMPL REL     *
               E3ERR,                   EXPR 3 SIMPLY OR COMPL REL     *
               TOOMANY,                 TOO MANY OPERANDS *            *
               LEAVE,                   LEAVE X5M (SYNTAX ERROR)       *
               ABSUS                    A USING WITH ABS VALUE EXISTS
X5ASW    DSW   MNOPRT,                  MNOTE NOT TO BE PRINTED        X
               REPCARD,                 PRINT ONLY REPRO CARD EXPECTED X
               INVCNOP,                 ERROR IN CNOP OPERAND          X
               SPACECC,                 TO CONTROL SPACE ON TOP OF PAGE*
               TERR,                    ERROR TO TERM REST OF STMT REQ *
               NOOP,                    NO OPERAND ON DC STMT          *
               EQUOPR                   MORE THAN 1OPER IN EQU @AZ07356
FLDEND   EQU   *                        END OF FIELD TO BE INITIALIZED
*                                       TO ZERO
LISTSW   DS    C                        TO ISOLATE THE JLIST SWITCH
EESDI    DS    H                   CURRENT ESDID
JTITLE   DS    CL100                    TITLE
         EJECT
* THE FOLLOWING FIELDS NEED NOT BE INITIALIZED
DWORD1   DS    D
DWORD2   DS    D
FNTEND   DS    F                        END OF FAR INSTRUCTION ENTRY
OPNADR   DS    F                        OPERAND POINTER
STRADR   DS    F                         STRING GROUP POINTER
PRNSAVE  DS    F                        LINK REGISTER SAVE WORD
FLDSAVE  DS    F                        LINK REGISTER SAVE WORD
X5LSAV   DS    3F                       LOG ERROR REGISTER SAVE
         SPACE
MWORK    EQU   *
EXP2     DS    0F                      EXPRESSION 2 VALUE
         DS    3X                       SPACE
I        DS    X                        INDEX OR LENGTH FIELD
EXP3     DS    0F                      EXPRESSION 3 VALUE
         DS    3X                       SPACE
BASEX    DS    X                        BASE REGISTER
DISPL    DS    H                        DISPLACEMENT FIELD
LQ1      DS    H                        LENGTH ATTRIBUTE OF EXPR1
MWEND    EQU   *
MWLEN    EQU   MWEND-MWORK              LENGTH OF X5M WORK AREA
         SPACE
         CNOP  2,4                      ALIGN IN MIDDLE OF WORD
USINGT   DS    68H                      CURRENT USING TABLE
         DS    (4*68)H                  SPACE FOR PUSHED TABLES
PRPU     DS    5H                       PRINT PUSHDOWN AREA
HWD      DS    H                        SCRATCH HALFWORD
JBGNCL   DS    H                       BEGIN COLUMN (FROM ICTL)
JCNTCL   DS    H                        CONYINUE COLUMN(ICTL)
JENDCL   DS    H                        END COL-1(ALSO ICTL)
CDSTMT   DS    H                        CARD-WITHIN-STATEMENT COUNTER
SALOC    DS    H                        S PART ALLOC(HALFWORD NUMBER)
LHWORK   DS    0CL43                    WORK AREA TO UNPACK LEFT HALF
ULOCO    DS    CL8                      LOCATION
UOPCOD   DS    CL4                      OPCODE + SECOND BYTE
UBASD1   DS    CL4                      BASE-DISPLACEMENT 1
UBASD2   DS    CL4                      BASE-DISPLACEMENT 2
UGARB    DS    CL4                      GARBAGE
UADR1    DS    CL8                      ADDRESS 1
UADR2    DS    CL8                      ADDRESS 2
         DS    CL3
PRNSV1   DS    F                        PRINT BUFFER SAVE AREA
CRDLAC   DS    H                        BYTE COUNT IN LAST CARD
COLSAV   DS    H                        COLUMN PTR SAVE AREA
CRDPTR   DS    F                        POINTER TO TEXT (TXT) CARD
CRDVAL   DS    F                        VALUE OF TEXT (TXT) CARD
LOCLEN   DS    F                        ENTRY LENGTH FOR LOCATION UPDAT
NOTEVAL  DS    CL8                      NOTE POINT SAVE
LITRLC   DS    F                        LITERAL LOCATION COUNTER
LITPID   DS    H                        LITERAL POOL ID
LITRSD   DS    H                        LITERAL ESD
WORKAREA DS    8F                       DEC CONVERT I/O AREA
BITLSW   EQU   WORKAREA                 BIT-LENGTH FLAG
EBYTE    EQU   WORKAREA+1               DEC CONVERT ERROR FLAG-BYTE
TYPE     EQU   WORKAREA+3               CONSTANT-TYPE BUCKET CODE
LMOD     EQU   WORKAREA+4               LENGTH-MODIFIER
SMOD     EQU   WORKAREA+8               SCALE-MODIFIER
EMOD     EQU   WORKAREA+12              EXPONENT-MODIFIER
DECKON   EQU   WORKAREA+16              16 BYTE CONVERTED CONSTANT
PRNTSV   DS    3F                       REGISTER SAVE FOR PRINT
PREGSV   DS    2F                       PRINT SAVE AREA
DUPF     DS    F                        DUP-FACTOR STORAGE
BITMOD   DS    F                        CONSTANT LENGTH IN BITS
STRTLC   DS    F                        BIT LC SAVE
KLENGTH  DS    F                        CONSTANT SCAN-LENGTH IN BITS
OUTSTART DS    F                        CONVERTED OUTPUT ADDRESS
FULLWD   DS    F                        SAVE WORD
KONSTRT  DS    F                        CONSTANT FIELD START
KCOUNT   DS    H                        CONSTANT COUNT
LMODSW   DS    C                        EXPLICIT-LENGTH FLAG
SKLOG    DS    C                        ERROR-LOG BYPASS FLAG
ZDUPSW   DS    C                        ZERO DUP-FACTOR FLAG
SIGNSW   DS    C                        MINUS-SIGN FLAG
MTSW     DS    C                        EMPTY DS FLAG
CLEAR2   EQU   *                        LITTLE CLEAR
TEMPLC   DS    F                        TEMPORARY LOCATION-COUNTER
BITLC    DS    F                        LOCATION-COUNTER IN BITS
XREFYES  DS    F                        $XREF SAVE
OPNDCT   DS    H                        OPERAND COUNT
OBITS    DS    H                        CURRENT OUTPUT-BIT COUNT
DCPRSW   DS    C                        PRINTSW SAVE
DUMSW    DS    C                        DS OR DXD FLAG
FSTPSW   DS    C                        FIRST-TIME PRINT FLAG
TUBEOP   DS    C                        INTERLUDE BAD OPERAND NUMBER
CLEAR1   EQU   *                        BIG CLEAR
* WORK AREA STORAGE LAY-OUT FOR EVAL
*
         EVALWORK
         DS    64C                      ADDITIONAL WORK AREA DC EVAL
LCTRSAV  DS    4F                       SAVE AREA
LHSAVE   DS    CL21                     LEFT HALF SAVE AREA
ENDSTMNO DS    F                        STATEMENT NO. OF END STATEMENT
X5ATEMP  DS    CL256                    TEMP TITLE AND PUNCH BLD AREA
*                                       ALSO ERR LOG AREA IN X5D
X5ALIT   DS    CL300                    LITERAL RECORD BUILD AREA
DCLNG    DS    F                        ACCUM OBJECT LENGTH OF BAD DC
MODNOTV  DS    CL8                      TERM-NOTE VAL TO MODEL STMT
MODSTMT  DS    H                        STMTN FOR MODEL STMT
MODEL    DS    CL600                    MODEL STATEMENT SAVE AREA
*                                       USED TO CHECK IF IT IS TOO LONG
X5COMEND EQU   *                        END OF PHASE COMMON
X5COMLEN EQU   (X5COMEND-X5COM-1)/8+1   COMMON LENGTH IN DOUBLE WORDS
LSTOUT   EQU   0                        INDEX FOR LISTING
CAROUT   EQU   4                        INDEX FOR CARRIAGE CONTROL
PUNOUT   EQU   8                        INDEX FOR PUNCH STATEMENT
RPOOUT   EQU   12                       INDEX FOR REPRO STATEMENT
DC0OUT   EQU   16                       INDEX FOR DC STATEMENT
ERROUT   EQU   20                       INDEX FOR LISTING *** ERROR***
CMNOUT   EQU   24                       INDEX FOR LISTING COMMENTS
CLMPTR   EQU   BIT0                     COLUMN POINTER FLAG
DTAPTR   EQU   BIT1                     ERROR POINTER IS TO DATA
HIREG    EQU   15                       HIGEST REGISTER POSSIBLE
* CONDITION CODE SETTINGS FOR X5V
ABSX     EQU   8                   EXPR IS ABSOLUTE
CMPX     EQU   4                   EXPR IS COMPL REL,OR NON-SYNTACTIC  *
                                   ERROR(S) DETECTED IN EXPR
RELX     EQU   2                   EXPR IS SIMPLY RELOCATABLE
ERRX     EQU   1                   FATAL ERROR - EXPR EVAL ABANDONED
         SPACE
         EJECT
* THIS DSECT DESCRIBES THE FORMAT OF AN ENTRY IN THE USING
* TABLE (USINGT).THE ENTRIES IN THE TABLE ARE SORTED IN DESCENDING
* SEQUENCE ON THEIR CONTENTS.
         SPACE
UDSECT   DSECT ,                        USING TABLE ENTRY DSECT
         CNOP  2,4                      ALIGN IN MIDDLE OF WORD
UESD     DS    H                        ESDID FOR USING VALUE
UVAL     DS    F                        VALUE SPECIFIED IN USING STMT
UREG     DS    H                        REGISTER
USNXT    EQU   *                        NEXT ENTRY
USSL     EQU   L'UESD+L'UVAL+L'UREG     TOTAL LENGTH OF USING ENTRY
./ ADD NAME=X5ERRL
         MACRO
&NAME    X5ERRL &A,&B,&C
.*       MACRO GENERATES A CALL TO THE PHASE 5 ERROR LOGGING
.*       ROUTINE X51 WITH THE ERROR NUMBER AS A PARAMETER
&NAME    JCALL LOGERR
         DC    AL1(SEV&A,ERR&A,&B,0)        (SEVERITY,ERROR NO.,FLAG,0)
         AIF   ('&C' EQ '').A100
         B     &C                       RECOVER OR ABORT RECORD
.A100    ANOP
         MEND
./ ADD NAME=XDCDS
         MACRO
&ID      XDCDS &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1
         GBLC  &COMPNM                  COMPONENT NAME
         LCLC  &NM                      MODULE NAME
         JHEAD 'SYMBOL RESOLUTION PHASE DC/DS EVALUATION',             ,
               PHASEID=&ID,                                            ,
               LEVEL=&LEVEL
&NM      SETC  '&COMPNM&ID'
*TITLE-  ASSEMBLER SYMBOL RESOLUTION PHASE DC/DS EVALUATION ROUTINE   *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        EVALUATE OPERANDS OF ASSEMBLER OPERATION STATEMENTS DC, DS,  *
*   AND DXD, AND LITERALS IN MACHINE OPERATION STATEMENTS AND THE     *
*   LITERAL POOL.  WHEN EVALUATING A DC, DS, OR DXD STATEMENT, THE    *
*   LOCATION COUNTER IS INCREMENTED AND ALIGNED AS NECESSARY.  WHEN   *
*   EVALUATING A LITERAL IN THE MACHINE OPERATION STATEMENT, THE      *
*   OBJECT LENGTH IS RETURNED.  WHEN SCANNING A LITERAL IN THE        *
*   LITERAL POOL, A SYMBOL REFERENCE RECORD IS GENERATED FOR EACH     *
*   SYMBOL APPEARING IN THE LITERAL.                                  *
         AIF   ('&TESTRAN' NE 'YES').TEST16
*        PUNCH 'SYM' ITEMS.                                           *
.TEST16  ANOP
*                                                                     *
*ENTRY POINT-                                                         *
         ENTRY &NM.01                                                 *
*                                                                     *
*INPUT-                                                               *
*        REGISTER R5 IS THE POINTER TO THE FIRST CHARACTER TO BE      *
*   EVALUATED.                                                        *
*                                                                     *
*OUTPUT-                                                              *
*        REGISTER R14 IS THE POINTER TO THE CHARACTER WHICH LOGICALLY *
*   TERMINATED THE EVALUATION.                                        *
*        REGISTER R15 CONTAINS THE OBJECT LENGTH OF THE LITERAL IN    *
*   THE MACHINE OPERATION STATEMENT.                                  *
*        SYMBOL REFERENCE RECORDS ON 'JOUTFILE'.                      *
         AIF   ('&TESTRAN' NE 'YES').TEST17
*        'SYM' ITEMS ON THE PUNCH FILES.                              *
.TEST17  ANOP
*                                                                     *
*EXTERNAL ROUTINES-                                                   *
*        QCON-     ROUTINE IN X4E TO PROCESS SYMBOLS ENCOUNTERED IN   *
*                  Q-TYPE ADDRESS CONSTANTS.                          *
*        VCON-     ROUTINE IN X4E TO PROCESS SYMBOLS ENCOUNTERED IN   *
*                  V-TYPE ADDRESS CONSTANTS.                          *
*        EVAL-     ROUTINE IN X4V TO EVALUATE EXPRESSIONS.            *
*        REFER-    ROUTINE IN X4E TO OUTPUT SYMBOL REFERENCE RECORDS  *
*                  FOR LITERALS IN THE LITERAL POOL.                  *
*        ENTER-    ROUTINE IN X4S TO ENTER THE NAME OF A DC OR DS     *
*                  STATEMENT IN THE SYMBOL TABLE.                     *
*                                                                     *
*EXITS, NORMAL-                                                       *
*        RETURN TO THE CALLING ROUTINE.                               *
*                                                                     *
*EXITS, ERROR-                                                        *
*        RETURN TO THE CALLING ROUTINE.                               *
*                                                                     *
*TABLES/WORK AREAS-                                                   *
*        DCDSWORK- AN AREA DEFINED IN DSECT 'ICOMMON' AND USED AS     *
*                  WORK STORAGE EXCLUSIVELY BY THIS ROUTINE.          *
*                                                                     *
*ATTRIBUTES-                                                          *
*        REFRESHABLE.                                                 *
*                                                                     *
*NOTES-                                                               *
*                                                                     *
         EJECT
         COPY  JCOMMON
         EJECT
         COPY  JTEXT
         EJECT
         COPY  ICOMMON
         EJECT
JTEXT    DSECT ,
         ORG   JTEXT                    OVERLAY
         COPY  RSYMRCD
         EJECT
* VS1 RELEASE 3.1 CHANGES
*A060500,060600                                                 OX04107
*A445500,445600                                                 OX04090
*A058500,058600                                                 OX05810
*D060500,060600                                                 OX05810
*A058100,058200                                                 OY06131
*D445500-445600                                                @OX07274
&NM.00   CSECT
         JMODID
&NM.01   CONTENTS
         USING &NM.01,R8
         EJECT
DCSCAN   BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   BASE REGISTER
         ST    R15,LEVELPTR             STACK LEVEL POINTER
         XC    DCDSWORK,DCDSWORK        INITIALIZATION
         SET   SDZDUPF,OFF              CLEAR ZERO DUPF SW
         LA    R2,D1                    BUMPER
         STH   R2,LATTRSAV              LENGTH ATTRIBUTE
         MVC   DCDSMODE,TYPECALL        ESD INHIBIT FLAG
         TM    TYPECALL,LTCALL          TEST FOR LITERAL        OY06131
         BO    NEWOPRN                  BR OVER OPERAND TST     OY06131
         TM    RFLDI,RFIELDX            ANY OPERAND             OX05810
         BZ    DCABORT                  INVALID - NOOPERAND     OX05810
NEWOPRN  SET   (NOESDS,LMOD,BMOD,SMOD),OFF   INITIAL SETTING
         ST    R2,DUPFAC                DEFAULT DUPLICATION FACTOR
         CLI   CHAR1,J9                 TEST FOR DUPLICATION FACTOR
         BH    DUPF                     NOT DECIMAL SELF-DEFINING
         BAL   R3,EXPR                  EVALUATE VALUE
         BAL   R3,SETUP                 GO SET UP DUPLICATION FACTOR
         LTR   R11,R11                       CHECK FOR SELFDEF ZERO
         BNZ   TYPE                          IF NOT BRANCH
         SET   SDZDUPF,ON                    IND DUPF SELF DEF ZERO
         B     TYPE                     READY TO ANALYZE TYPE
DUPF     CLI   CHAR1,JLPARN             SEE IF EXPRESSION
         BNE   TYPE                     OMITTED FIELD
         ST    R5,ADUPFAC               SAVE ADDRESS OF EXPRESSION
         BAL   R3,EXPR1                 EVALUATE EXPRESSION
TYPE     CLI   CHAR1,JZ                 TEST FOR VALID TYPE
         BH    DCABORT                  INVALID TYPE
         TRT   CHAR1,DCTABLE            EXAMINE CLOSELY
         BZ    DCABORT                  ILLEGAL TYPE
         LA    R2,DCTYPES(R2)           POINT TO SWITCH CODE
         MVC   DCSWORK,D0(R2)           MOVE SWITCH CODE TO WORK AREA
         AIF   ('&TESTRAN' NE 'YES').TEST07
         MVC   DATATYPE,CHAR1           SAVE TYPE
.TEST07  LA    R2,D1                    INCREMENT
         AR    R5,R2                    ADVANCE COLUMN POINTER
         CLI   CHAR1,JL                 SEE IF LENGTH MODIFIER
         BNE   NOLN                     NO LENGTH MODIFIER
         SET   DXDALIGN,OFF             SET DXD ALIGNMENT FACTOR
         SET   LMOD,ON                  INDICATE LENGTH MODIFIED
         AR    R5,R2                    BUMP COLUMN POINTER
         CLI   CHAR1,JPERIOD            SEE IF BIT LENGTH
         BNE   LNGM                     NO BIT LENGTH MODIFIER
         SET   BMOD,ON                  INDICATE BIT LENGTH MODIFIER
         AR    R5,R2                    BUMP COLUMN POINTER
         GOIF  BITLN,OFF=DCABORT        BIT LENGTH NOT ALLOWED
         L     R15,ELCTR                GET CURRENT LOCATION COUNTER
         B     LNGM1                    PUSH
LNGM     GOIF  LTCALL,ON=LNGM3          SEE IF LITERAL
         BAL   R1,ADDBIT                ADD RESIDUAL BITS
         ST    R15,ELCTR                UPDATE LOCATION COUNTER
LNGM1    BAL   R3,NOLN2                 GO MAKE SYMBOL TABLE ENTRY
LNGM3    CLI   CHAR1,J9                 SEE IF DECIMAL SELF DEFINING
         BH    LNGM4                    SKIP IF NOT
         BAL   R3,EXPR                  EVALUATE
         B     LNGM5                    CONTINUE
LNGM4    CLI   CHAR1,JLPARN             MUST BEGIN WITH THIS
         BNE   DCABORT                  INTOLERABLE
         BAL   R3,EXPR1                 EVALUATE
LNGM5    BNE   DCABORT                  MUST BE ABSOLUTE
         GOIF  BMOD,ON=LNGM6            SKIP IF BIT LENGTH
         SLA   R11,D3                   CONVERT TO BITS
         BO    DCABORT                  TOO MANY BITS
LNGM6    CL    R11,=FS3'65535'          TEST FOR ABSOLUTE MAXIMUM
         BH    DCABORT                  TOO LONG
         CLI   SCADDR,XBCON-SCAD        SEE IF B-, C-, OR X-TYPE
         BNE   LNGM7                    SKIP IF NOT
         GOIF  DSCALL,ON=LNGM8          SKIP IF MAXIMUM LENGTH ALLOWED
LNGM7    CH    R11,MAXLN                TEST FOR MAXIMUM ALLOWED
         BH    DCABORT                  TOO LONG
LNGM8    LR    R14,R2                   CLEAR
         IC    R14,MINLN                GET MINIMUM LENGTH
         CR    R11,R14                  SEE IF ENOUGH
         BL    DCABORT                  NOPE
         BAL   R9,AGAIN1                SET UP LENGTH ATTRIBUTE
         SPACE
EMOD     CLI   CHAR1,JS                 SEE IF SCALE MODIFIER
         BAL   R3,MODS                  SCAN EXPRESSION
         AIF   ('&TESTRAN' NE 'YES').TEST14
         BNE   EMOD1                    NO VALID SCALE MODIFIER
         LTR   R11,R11                  SEE IF SCALE ACTUALLY MODIFIED
         BZ    EMOD1                    NOPE
         SET   SCALING,ON               INDICATE SCAL MODIFIER
         STH   R11,SCALE                SCALE MODIFIER
.TEST14  ANOP
EMOD1    CLI   CHAR1,JE                 SEE IF EXPONENT MODIFIER
         BAL   R3,MODS                  EVALUATE EXPRESSION
         CLC   CHAR1,LFDEL              SEE IF CONSTANTS SUBFIELD
         BNE   NOCON                    IS OMITTED
         AR    R5,R2                    BUMP COLUMN POINTER
         AIF   ('&TESTRAN' NE 'YES').TEST13
         ST    R5,XPARM                 SAVE COLUMN POINTER
.TEST13  SR    R4,R4                    CLEAR REGISTER
         LR    R15,R4                   CLEAR
         IC    R15,SCADDR               GET ADDRESS OF SCAN ROUTINE
         B     SCAD(R15)                GO SCAN CONSTANTS
         SPACE
DMOD     C     R2,ADSYM                 SEE IF WE HAVE EVERYTHING
         BL    EMOD                     NO, JUST A LITTLE BIT LONGER
         BAL   R9,AGAIN2                EVALUATE THE DUPLICATION FACTOR
         B     EMOD                     GO ON
         SPACE
NOLN     LR    R11,R2                   CLEAR REGISTER
         IC    R11,DCALIGN              GET IMPLIED ALIGNMENT
         LR    R10,R11                  SAVE
         GOIF  TYPEL,OFF=NOLN1          SKIP IF NOT TYPE L
         AR    R11,R11                  LENGTH OF TYPE L
NOLN1    STH   R11,LATTR                LENGTH ATTRIBUTE
         SLL   R11,D3                   MULTIPLY BY EIGHT
         ST    R11,CONLNG               LENGTH OF ONE CONSTANT IN BITS
         LA    R3,DMOD                  EXIT TIME ROUTINE ADDRESS
         GOIF  LTCALL,ON=(R3)           SKIP IF LITERAL
         BAL   R1,ADDBIT                ROUND FOR BIT
         GOIF  SDZDUPF,ON=NOLN15        ALWAYS ALIGN IF DUPF SELF DEF 0
         GOIF  JALGN,OFF=NOLNX          DONT ALIGN IF OPTION IS OFF
NOLN15   LCR   R1,R10                   GET ALIDNMENT MASK
         BCTR  R10,0                    ROUND
         AIF   ('&TESTRAN' NE 'YES').TEST15
         LR    R0,R15                   SAVE
.TEST15  AR    R15,R10                  ADD CURRENT LOCATION COUNTER
         NR    R15,R1                   ROUND
         AIF   ('&TESTRAN' NE 'YES').TEST02
         TM    ETYPE,ETYPEXD            SEE IF DXD
         BO    NOLNX                    DXD, NO TESTRAN OUTPUT
         STM   R9,R1,TERMS              SAVE REGISTERS
         SR    R15,R0                   SEE IF BYTES SKIPPED
         BE    NOLNY                    NO BYTES SKIPPED
         SET   TSPACE                   ITEM TYPE
         MVC   ADDRESS,ELCTR+D1         ADDRESS OF BYTES SKIPPED
         STC   R15,NAME                 NUMBER OF BYTES SKIPPED
         LA    R10,D5                   LENGTH OF OUTPUT ITEM
         GOTO  SYMPUNCH                 GO TO OUTPUT ROUTINE
NOLNY    LM    R9,R1,TERMS              RESTORE REGISTERS
.TEST02  ANOP
NOLNX    ST    R15,ELCTR                NEW ADDRESS
         GOIF  DXDALIGN,OFF=NOLN2       SEE IF DXD ALIGNMENT SET
         SET   DXDALIGN,OFF             INDICATE SET
         ST    R10,EHILC                SET DXD ALIGNMENT
         AIF   ('&TESTRAN' NE 'YES').TEST04
NOLN2    SET   TDATA                    ORGANIZATION
         MVC   ADDRESS,ELCTR+D1         ADDRESS
         GOIF  DEFNAME,OFF=(R3)         RETURN IF NO NAME
         MVC   NAME,RNAME               NAME
         TR    NAME,JTRTABLE            TRANSLATE NAME
         IC    R1,RFLDI                 LENGTH OF SYMBOL
         N     R1,=F'7'                 LENGTH OF SYMBOL
         LA    R1,BIT0(,R1)             ORGANIZATION
         STC   R1,ORGBYTE               ORGANIZATION
         AGO   .TEST05
.TEST04  ANOP
NOLN2    GOIF  DEFNAME,OFF=(R3)         RETURN IF NO NAME
.TEST05  ANOP
         SET   DEFNAME,OFF              INDICATE NO SYMBOL TABLE ENTRY
         ST    R15,RLCTR                VALUE
         MVC   RLNGQ,LATTR              LENGTH ATTRIBUTE
         LR    R10,R4                   PARAMETER
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         BNE   NOLN4                    ALREADY IN SYMBOL TABLE
         GOIF  LMOD,ON=NOLN3            SKIP IF LENGTH MODIFIER PRESENT
         CLI   SCADDR,XBCON-SCAD        SKIP B-, C-, P-, X-, AND Z-TYPE
         BHR   R3                       BRANCH IF HIGH
NOLN3    ST    R14,ADSYM                SAVE SYMBOL TABLE ENTRY ADDRESS
         SET   LNGDEF,ON                INDICATE LENGTH NOT DEFINED
         BR    R3                       RETURN
NOLN4    SET   PRIORDEF,ON              INDICATE PREVIOUSLY DEFINED
         BR    R3                       RETURN
         SPACE
NOCON    GOIF  DSCALL,OFF=DCABORT       CONSTANT SUBFIELD IS REQUIRED
         L     R4,CONLNG                INFERS ONE CONSTANT
         STH   R2,CONCT                 ONE CONSTANT ASSUMED
         LR    R11,R2                   ONE
         BAL   R9,AGAIN3                CATCHUP
         SPACE
ENDOPRN  CLI   CHAR1,JBLANK             SEE IF VALID DELIMITER
         BE    ENDOPRN1                 SKIP IF YES
         CLI   CHAR1,JCOMMA             SEE IF VALID DELIMITER
         BNE   DCABORT                  OH, OH
ENDOPRN1 LR    R15,R4                   LENGTH OF CONSTANT OR CONSTANTS
         L     R1,DUPFAC                DUPLICATION FACTOR
         MR    R14,R1                   TIMES LENGTH OF CONSTANT
         LTR   R14,R14                  TEST FOR OVERFLOW
         BNZ   DCABORT                  OVERFLOWED
         CL    R15,=FS3'16777215'       SEE IF TOO LONG
         BH    DCABORT                  TOO LONG
         AH    R15,BITADD               ADD RESIDUAL BITS
         D     R14,=F'8'                GET LENGTH IN BYTES
         GOIF  LTCALL,OFF=ENDOPRN2      SEE IF LITERAL
ENDOPRN9 LTR   R14,R14                  RESIDUAL
         LR    R14,R5                   RETURN COLUMN POINTER
         BE    EXIT                     FINIS IF NONE
         AR    R15,R2                   ANY OVER COUNTS AS ONE
         B     EXIT                     FINIS
ENDOPRN2 DS    0H                       PIVOT
         AIF   ('&TESTRAN' NE 'YES').TEST00
         TM    ETYPE,ETYPEXD            SEE IF DXD
         BO    TESTRAN                  SKIP IF SO
ENDOPRN8 STM   R9,R1,TERMS              SAVE REGISTERS
         CLI   DCALIGN,D1               SEE IF B, C, P, X, OR Z-TYPE
         BH    ENDOPRN3                 BRANCH IF NOT
         GOIF  LMOD,OFF=ENDOPRN5        SKIP IF EXPLICIT LENGTH
ENDOPRN3 MH    R1,CONCT                 TIMES NUMBER OF CONSTANTS
         L     R0,CONLNG                GET LENGTH
         AH    R0,BITADD                PLUS ANY RESIDUAL
         LR    R4,R0                    FAKE IT
ENDOPRN5 LR    R0,R4                    GET IT
         SR    R0,R2                    MINUS ONE
         SRL   R0,D3                    OVER EIGHT
         STM   R0,R1,LENGTH             LENGTH AND MULTIPLICITY
         CR    R1,R2                    SEE IF ONE
         BE    ENDOPRN4                 SKIP IF YES
         SET   MULTIPLE,ON              TURN MULTIPLE ON
ENDOPRN4 LA    R10,NAME                 OUTPUT POINTER
         LA    R11,NAME-D6              REFERENCE
         GOIF  LABEL,ON=TESTRAN1        SKIP IF NO NAME
         IC    R10,ORGBYTE              GET NAME LENGTH
         N     R10,=F'7'                ISOLATE LENGTH CODE
         LA    R10,NAME+D1(R10)         POINT PAST NAME
TESTRAN1 TR    DATATYPE,DATABLE         TRANSLATE DATA TYPE
         MVC   D0(D1,R10),DATATYPE      MOVE DATA TYPE
         MVC   D1(D1,R10),LENGTH+D3     LENGTH
         CLI   SCADDR,XBCON-SCAD        SEE IF X-, B-, OR C-TYPE
         BNE   TESTRAN2                 SKIP IF NOT
         MVC   D1(D2,R10),LENGTH+D2     LENGTH
         AR    R10,R2                   BUMP POINTER
TESTRAN2 GOIF  MULTIPLE,OFF=TESTRAN3    SEE IF MULTIPLICITY PRESENT
         MVC   D2(D3,R10),MULTIP+D1     MULTIPLICITY
         LA    R10,D3(,R10)             BUMP POINTER
TESTRAN3 GOIF  SCALING,OFF=TESTRAN4     SEE IF SCALED
         MVC   D2(D2,R10),SCALE         SCALE
         LA    R10,D2(,R10)             BUMP POINTER
TESTRAN4 SR    R10,R11                  GET LENGTH OF OUTPUT ITEM
         GOTO  SYMPUNCH                 GO TO OUTPUT ROUTINE
         LA    R9,TESTRAN7              ADDRESS OF NEXT ROUTINE
         GOIF  CLUSTER,OFF=(R9)         SEE IF SUB-CLUSTER
         BALR  R14,R7                   PUSH DOWN ONE LEVEL
         TS    SCADDR                   TOUGH SKIDDING
         L     R5,XPARM                 PICK UP COLUMN POINTER
         MVC   NAME(D1),DATATYPE        DATA TYPE
TESTRAN5 MVI   ORGBYTE,TDATA+CLUSTER    ORGANIZATION
         BAL   R3,PZCON                 SCAN SUB-CLUSTER
         LR    R3,R11                   LENGTH
         BCTR  R11,D0                   MINUS ONE
         STC   R11,NAME+D1              LENGTH
         LA    R10,D6                   LENGTH OF TESTRAN ITEM
         LCR   R0,R0                    SEE IF SCALE
         BNP   TESTRAN6                 NO
         LA    R10,D8                   LENGTH OF ITEM WITH SCALE
         STH   R0,NAME+D2               SCALE MODIFIER
         SET   SCALING,ON               INDICATE SCALE
TESTRAN6 GOTO  SYMPUNCH                 OUTPUT TESTRAN ITEM
         CLI   CHAR1,JQUOTE             SEE IF ALL DONE
         BE    EXIT                     FINIS
         AR    R5,R2                    BUMP COLUMN POINTER
         AL    R3,ORGBYTE               NEXT ADDRESS
         ST    R3,ORGBYTE               NEXT ADDRESS
         B     TESTRAN5                 GO AGAIN
TESTRAN7 LM    R9,R1,TERMS              RESTORE REGISTERS
.TEST00  ANOP
TESTRAN  STH   R14,BITADD               RESIDUAL TO NEXT BYTE
         LH    R0,OPCNT                 GET COUNT OF OPERANDS
         LTR   R0,R0                    SEE IF FIRST OPERAND
         BNE   ENDOPRN7                 NOPE
         MVC   LATTRSAV,LATTR           LENGTH ATTRIBUTE
ENDOPRN7 AR    R0,R2                    COUNT OPERANDS
         STH   R0,OPCNT                 AND SAVE
         AL    R15,ELCTR                UPDATE LOCATION COUNTER
         ST    R15,ELCTR                SAVE
         CLI   CHAR1,JBLANK             SEE IF END
         BNE   ENDOPRN6                 SKIP IF NOT
         BAL   R1,ADDBIT1               TACK ON ANY RESIDUAL
         ST    R15,ELCTR                SAVE
         B     EXIT                     FINIS
ENDOPRN6 AR    R5,R2                    BUMP COLUMN POINTER
         XC    DCWORK,DCWORK            REINITIALIZE WORK AREA
         B     NEWOPRN                  FULL SPEED AHEAD
         SPACE
AGAIN    SLL   R11,D3                   MULTIPLY BY EIGHT
AGAIN1   ST    R11,CONLNG               LENGTH OF ONE CONSTANT
         LA    R11,D7(,R11)             ROUND
         SRL   R11,D3                   LENGTH ATTRIBUTE IN BYTES
         CH    R2,LATTR                 SEE IF LENGTH ATTRIBUTE SET
         BNHR  R9                       RETURN IF ALREADY SET
         STH   R11,LATTR                SET LENGTH ATTRIBUTE
AGAIN3   L     R14,ADSYM                POINTS TO SYMBOL TABLE ENTRY
         LTR   R14,R14                  SEE IF LENGTH ATTRIBUTE DEFINED
         BZ    AGAIN2                   NO
         STH   R11,SLNGQ                LENGTH ATTRIBUTE
         SET   LNGDEF,OFF               LENGTH ATTRIBUTE DEFINED
         SR    R14,R14                  ZERO REGISTER
         ST    R14,ADSYM                INDICATE COMPLETE
AGAIN2   BALR  R14,R7                   PUSH DOWN A LEVEL
         L     R5,ADUPFAC               GET ADDRESS OF EXPRESSION
         LTR   R5,R5                    SEE IF AVAILABLE
         BZ    EXIT                     NONE
         LR    R4,R11                   SAVE
         SET   SUBLIST,ON               EVALUATE WHAT'S INSIDE PARENS
         BAL   R3,EXPR3                 EVALUATE EXPRESSION
         BAL   R3,SETUP                 APPRAISE VALUE
         LR    R11,R4                   RESTORE
         B     EXIT                     RETURN
         SPACE
EXPR     MVI   SELFDEFN,D0              SELF DEFINING TERM
EXPR1    SET   SUBLIST,ON               INDICATE MODE OF SCAN
EXPR2    SET   DCOP,ON                  INDICATE IN DC
EXPR3    GOTO  EVAL                     GO EVALUATE
         BO    DCABORT                  SYNTACTIC ERRORS
         LR    R5,R14                   UPDATE COLUMN POINTER
         BR    R3                       RETURN
         SPACE
SETUP    BNE   DCABORT                  INVALID DUPLICATION FACTOR
         ST    R11,DUPFAC               MODIFY DUPLICATION FACTOR
         LTR   R11,R11                  TEST CHARACTERISTIC
         BCR   D2,R3                    RETURN IF POSITIVE
         BM    DCABORT                  INTOLERABLE
         SET   NOESDS,ON                INDICATE NO ESD
         BR    R3                       RETURN
         SPACE
ADDBIT   L     R15,ELCTR                GET CURRENT LOCATION COUNTER
ADDBIT1  CLI   BITADD+D1,D0             SEE IF RESIDUAL LEFT OVER
         BCR   D8,R1                    LEAVE IF NONE
         AR    R15,R2                   BUMP BY ONE
         MVI   BITADD+D1,D0             ZERO COUNT
         BR    R1                       RETURN
         SPACE
MODS     BCR   D7,R3                    RETURN IF OMITTED
         GOIF  ESMOD,OFF=DCABORT        ERROR IF NOT ALLOWED
         AR    R5,R2                    BUMP COLUMN POINTER
         CLI   CHAR1,JMINUS             SEE IF MINUS SIGN
         BE    MODS1                    BYPASS
         CLI   CHAR1,JPLUS              SEE IF PLUS SIGN
         BNE   MODS2                    SKIP IF NOT
MODS1    AR    R5,R2                    BUMP COLUMN POINTER
MODS2    CLI   CHAR1,J9                 SEE IF SELF-DEFINING VALUE
         BNH   EXPR                     EVALUATE
         CLI   CHAR1,JLPARN             SEE IF LEFT PARENTHESIS
         BE    EXPR1                    EVALUATE
         B     DCABORT                  ERROR
         SPACE
DCABORT  SR    R15,R15                  INDICATE ERROR
         MVC   JCLVLPTR,LEVELPTR        RESTORE STACK LEVEL POINTER
         BZ    EXIT                     RETURN
         EJECT
PZEND    LCR   R11,R11                  SEE IF NULL CONSTANT
         BNP   DCABORT                  ERROR IF NULL CONSTANT
         GOIF  TYPEZ,ON=PZEND1          SKIP IF ZONED TYPE
         LA    R11,D2(,R11)             COMPUTE LENGTH FOR PACKED TYPE
         SRL   R11,D1                   COMPUTE LENGTH FOR PACKED TYPE
PZEND1   CH    R11,=H'16'               CHECK LENGTH OF CONSTANT
         BH    DCABORT                  ERROR IF MORE THAN 16 BYTES
         AIF   ('&TESTRAN' NE 'YES').TEST09
         CLI   SCADDR,PZCON-SCAD        SEE IF CLUSTER SCAN
         BNER  R3                       SUB CLUSTER
         GOIF  SMOD,ON=PZEND2           SEE IF SCALE SET
         SET   SMOD,ON                  INDICATE SCALE SET
         LCR   R0,R0                    TEST FOR SCALE
         BNP   PZEND2                   NO SCALE
         STH   R0,SCALE                 SAVE SCALE
         SET   SCALING,ON               SCALE INDICATOR IN ORG BYTE
.TEST09  ANOP
PZEND2   BAL   R3,SCANDEL               END OF ONE CONSTANT
         AIF   ('&TESTRAN' NE 'YES').TEST08
         GOIF  LMOD,ON=PZCON            SEE IF EXPLICIT LENGTH
         SET   (MULTIPLE,CLUSTER),ON    INDICATE CLUSTER ITEM
         SET   SCALING,OFF              DEFER SCALE
.TEST08  ANOP
PZCON    MVI   PERIOD,D0                ALLOW ONE PERIOD
         AIF   ('&TESTRAN' NE 'YES').TEST10
         SR    R1,R1                    ZERO
         LR    R0,R2                    ONE
.TEST10  LR    R11,R2                   INITIALIZE DIGIT COUNT
         CLI   CHAR1,JMINUS             CHECK FOR OPTIONAL MINUS SIGN
         BE    PZCON1                   STEP PAST IF PRESENT
         CLI   CHAR1,JPLUS              CHECK FOR OPTIONAL PLUS SIGN
         BNE   PZCON2                   SKIP IF NOT PRESENT
PZCON1   AR    R5,R2                    ADVANCE COLUMN POINTER
PZCON2   SR    R11,R2                   KEEP COUNT OF DIGITS
         AIF   ('&TESTRAN' NE 'YES').TEST11
         SR    R0,R1                    COUNT SCALE
.TEST11  CLI   CHAR1,J9                 SEE IF VALID DECIMAL DIGIT
         BNH   PZCON1                   LOOP IF YES
         CLI   CHAR1,JPERIOD            CHECK FOR DECIMAL POINT
         BNE   PZEND                    END-OF-CONSTANT ENCOUNTERED
         AR    R11,R2                   PERIODS DO NOT COUNT
         TS    PERIOD                   SEE IF PERIOD ALLOWED
         AIF   ('&TESTRAN' NE 'YES').TEST12
         LR    R1,R2                    BUMPER
.TEST12  BZ    PZCON1                   ALLOW
         B     DCABORT                  MORE THAN ONE SPELLS ERROR
         SPACE
XBEND    SRA   R11,D3                   GET COUNT IN BYTES
         LCR   R11,R11                  GET ABSOLUTE COUNT
         BNP   DCABORT                  NULL CONSTANT
         BAL   R3,SCANDEL               TEST FOR END-OF-OPERAND
XBCON    L     R3,OPNEND                POINT TO END OF OPERAND
         SR    R11,R11                  INITIALIZE ACCUMULATOR
XBCON1   CLC   CHAR1,HILIMIT            TEST FOR VALID DIGIT
         BH    XBEND                    MAY BE END OF CONSTANT
         CLI   CHAR1,JQUOTE             SEE IF A QUOTE
         BNE   TSTAM                    SKIP IF NOT
         CLI   CHAR2,JQUOTE             SEE IF PAIRED QUOTES
         BNE   XBEND                    END-OF-CONSTANT ENCOUNTERED
         B     TSTAM1                   PAIRED QUOTES
         SPACE
ADEND    BAL   R3,SCANDEL1              TEST FOR END-OF-OPERAND
ADCON    MVC   SUBFIELD,DCSWTCH         SUBFIELD ALLOWED/DISALLOWED
ADCON1   BAL   R3,EXPR2                 SCAN EXPRESSION
         CLI   CHAR1,JLPARN             SUBFIELD ENCOUNTERED
         BNE   ADEND                    SKIP IF NO SUBFIELD
         TS    SUBFIELD                 SUBFIELD ALLOWED HERE
         BZ    EXPR1                    SCAN EXPRESSION
         B     DCABORT                  ERROR IF SUBFIELD NOT ALLOWED
         EJECT
QQEND    GOIF  (NOESD,NOESDS),ANY=QQEND1     SKIP IF ESD NOT OPTIONED
         GOTO  QCON                     GO CREATE ESD ENTRY
QQEND1   BAL   R3,SCANDEL1              END OF CONSTANT PROCESSING
QQCON    BAL   R3,SYMSCAN               SCAN SYMBOL
         B     QQEND                    LOOP
         SPACE
VVEND    GOIF  (NOESD,NOESDS),ANY=VVEND1     SKIP IF NO ESD
         GOTO  VCON                     GO MAKE ESD ENTRY
VVEND1   BAL   R3,SCANDEL1              END OF CONSTANT PROCESSING
VVCON    BAL   R3,SYMSCAN               SCAN FOR SYMBOL
         LH    R14,SYMCOUNT             COUNT OF SYMBOLS
         BCTR  R14,R0                   MINUS ONE
         SRDL  R14,D3                   GET BYTE
         SRL   R15,D29                  AND BIT
         LA    R1,BIT0                  GET BIT MASK
         SRL   R1,D0(R15)               SET UP BIT MASK
         LA    R15,VEETABLE(R14)        POINT TO ARRAY
         EX    R1,VVCON1                INDICATE V-CON
         B     VVEND                    SKIP
VVCON1   OI    D0(R15),D0               EXECUTED INSTRUCTION
         SPACE
FDEND    BAL   R3,SCANDEL1              TEST FOR END-OF-OPERAND
FDCON    STH   R2,PERIOD                ALLOW PERIOD AND EXPONENT
FDCON1   LR    R11,R2                   INITIALIZE DIGIT COUNT
         CLI   CHAR1,JMINUS             SEE IF MINUS SIGN
         BE    FDCON2                   BUMP COLUMN POINTER IF YES
         CLI   CHAR1,JPLUS              SEE IF PLUS SIGN
         BNE   FDCON3                   SKIP IF NOT
FDCON2   AR    R5,R2                    ADVANCE COLUMN POINTER
FDCON3   SR    R11,R2                   COUNT DECIMAL DIGITS
         CLI   CHAR1,JA                 SEE IF DECIMAL DIGIT
         BL    FDCON2                   LOOP FOR DECIMAL DIGITS
         CLI   CHAR1,JPERIOD            SEE IF PERIOD
         BNE   FDCON4                   SKIP IF NOT
         AR    R11,R2                   RESET COUNT
         TS    PERIOD                   PERIOD ALLOWED
         BZ    FDCON2                   GO IF PERIOD ALLOWED
         B     DCABORT                  ERROR IF PERIOD NOT ALLOWED
FDCON4   LTR   R11,R11                  SEE IF ANY VALID DECIMAL DIGITS
         BNM   DCABORT                  ERROR IF NO DIGITS
         CLI   CHAR1,JE                 SEE IF EXPONENT SPECIFIED
         BNE   FDEND                    SKIP IF NO EXPONENT SPECIFIED
         AR    R5,R2                    POINT PAST DELIMITER
         TS    PERIOD                   INDICATE PERIOD NOT ALLOWED
         TS    EXPONENT                 SEE IF EXPONENT ALLOWED
         BZ    FDCON1                   SCAN EXPONENT FIELD
         B     DCABORT                  ERROR IF MORE THAN ONE EXPONENT
         SPACE
TSTAM    CLI   CHAR1,JAMPER             SEE IF AN AMPERSAND
         BNE   TSTAM2                   SKIP IF NOT
         CLI   CHAR2,JAMPER             SEE IF PAIRED AMPERSANDS
         BNE   DCABORT                  ERROR IF AMPERSANDS NOT PAIRED
TSTAM1   AR    R5,R2                    ADVANCE COLUMN POINTER
TSTAM2   SH    R11,BITINCR              COUNT BITS IN ACCUMULATOR
         BXLE  R5,R2,XBCON1             REPEAT PROCEDURE
         B     DCABORT                  SYNTAX ERROR IF NO DELIMITER
         SPACE
SCANDEL  GOIF  LMOD,ON=SCANDEL1         SKIP IF EXPLICIT LENGTH
         TM    DCALIGN,BIT7             SEE IF B-, C-, P-, X-, Z-TYPE
         BZ    SCANDEL0                 SKIP IF NOT
         XI    DCALIGN,BIT7             ALLOW ONCE ONLY
         MVI   LATTR+D1,D0              ALLOW
SCANDEL0 BAL   R9,AGAIN                 SET LENGTH ATTRIBUTE
SCANDEL1 AL    R4,CONLNG                ACCUMULATE LENGTH OF CONSTANT
         LR    R14,R5                   SAVE COLUMN POINTER
         AR    R5,R2                    ADVANCE COLUMN POINTER
         AIF   ('&TESTRAN' NE 'YES').TEST06
         LH    R0,CONCT                 COUNT NUMBER OF CONSTANTS
         AR    R0,R2                    COUNT
         STH   R0,CONCT                 SAVE
.TEST06  ANOP
         CLC   CHAR1-CHAR1(,R14),RTDEL  SEE IF VALID DELIMITER
         BE    ENDOPRN                  END-OF-OPERAND ENCOUNTERED
         CLI   CHAR1-CHAR1(R14),JCOMMA  CHECK FOR MULTIPLE CONSTANTS
         BCR   D8,R3                    REPEAT FOR MULTIPLE CONSTANTS
         B     DCABORT                  INVALID DELIMITER
         SPACE
SYMSCAN  CLI   CHAR1,JAT                SEE IF VALID CHARACTER
         BH    DCABORT                  INVALID CHARACTER
         CLI   CHAR1,JA                 SEE IF VALID CHARACTER
         BL    DCABORT                  INVALID CHARACTER
         LR    R14,R5                   SAVE SYMBOL POINTER
SYMSCAN1 AR    R5,R2                    LOOK AT NEXT CHARACTER
         CLI   CHAR1,JEQUAL             SEE IF DELIMITER
         BL    SYMSCAN1                 LOOP FOR DELIMITER
         CLI   CHAR1,JRPARN             TEST FOR VALID DELIMITER
         BE    SYMSCAN2                 VALID DELIMITER
         CLI   CHAR1,JCOMMA             TEST FOR ALTERNATE DELIMITER
         BNE   DCABORT                  INVALID DELIMITER
SYMSCAN2 LR    R15,R5                   SAVE POINTER
         SR    R15,R14                  GET LENGTH OF SYMBOL
         CH    R15,=H'8'                SEE IF NOT TOO LONG
         BH    DCABORT                  SYMBOL TOO LONG
         SR    R15,R2                   GET MACHINE LENGTH
         MVC   XNAME,=8AL1(JBLANK)      PAD WITH BLANKS
         EX    R15,MOVENAME             ISOLATE NAME
         LH    R14,SYMCOUNT             GET SYMBOL COUNT
         AR    R14,R2                   INCREMENT BY ONE
         STH   R14,SYMCOUNT             PASS
         GOIF  LTORGSCN,OFF=(R3)        RETURN IF THROUGH
         GOIF  MODE2,ON=(R3)            CHECK MODE
         CLI   SCADDR,VVCON-SCAD        SEE IF V-TYPE ADDRESS CONSTANT
         BNE   SYMSCAN3                 NEAH
         OI    XNAME,BIT0               PERMUTE NAME TO INTERNAL FORM
SYMSCAN3 GOTO  REFER                    PUT OUT RECORD
         BR    R3                       RETURN
         SPACE
MOVENAME MVC   XNAME(0),CHAR1-CHAR1(R14)     EXECUTED INSTRUCTION
         SPACE
DCTYPES  EQU   *-1                      SWITCH CODE FOR DATA TYPES    X
ACON     DC    AL1(B'10000000',JLPARN,JRPARN,ADCON-SCAD,4,1),HL2'32'  X
BCON     DC    AL1(B'10000000',JQUOTE,JQUOTE,XBCON-SCAD,1,1),HL2'2048,1'
               ',AL1(J1)                                              X
CCON     DC    AL1(B'10000000',JQUOTE,JQUOTE,XBCON-SCAD,1,1),HL2'2048,8'
               ',AL1(X'FF')                                           X
DCON     DC    AL1(B'11000000',JQUOTE,JQUOTE,FDCON-SCAD,8,1),HL2'64'  X
ECON     DC    AL1(B'11000000',JQUOTE,JQUOTE,FDCON-SCAD,4,1),HL2'64'  X
HCON     DC    AL1(B'11000000',JQUOTE,JQUOTE,FDCON-SCAD,2,1),HL2'64'  X
LCON     DC    AL1(B'11100000',JQUOTE,JQUOTE,FDCON-SCAD,8,1),HL2'128' X
PCON     DC    AL1(B'10000000',JQUOTE,JQUOTE,PZCON-SCAD,1,1),HL2'128' X
QCON     DC    AL1(B'00000000',JLPARN,JRPARN,QQCON-SCAD,4,8),HL2'32'  X
SCON     DC    AL1(B'00000000',JLPARN,JRPARN,ADCON-SCAD,2,16),HL2'16' X
VCON     DC    AL1(B'00010000',JLPARN,JRPARN,VVCON-SCAD,4,24),HL2'32' X
XCON     DC    AL1(B'10000000',JQUOTE,JQUOTE,XBCON-SCAD,1,1),HL2'2048,4'
               ',AL1(JF)                                              X
YCON     DC    AL1(B'10000000',JLPARN,JRPARN,ADCON-SCAD,2,1),HL2'16'  X
ZCON     DC    AL1(B'10001000',JQUOTE,JQUOTE,PZCON-SCAD,1,1),HL2'128' X
         SPACE
DCTABLE  EQU   *                        DATA TYPE TABLE
         DC    10YL1(ILLEGAL-DCTYPES)   0-9 INVALID DC/DS TYPES
         DC    YL1(ACON-DCTYPES)        A-TYPE ADDRESS
         DC    YL1(BCON-DCTYPES)        BINARY
         DC    YL1(CCON-DCTYPES)        CHARACTER
         DC    YL1(DCON-DCTYPES)        DOUBLE PRECISION FLOATING POINT
         DC    YL1(ECON-DCTYPES)        SINGLE PRECISION FLOATING POINT
         DC    YL1(FCON-DCTYPES)        FULLWORD FIXED POINT
         DC    YL1(GCON-DCTYPES)        G-ILLEGAL DC/DS TYPE
         DC    YL1(HCON-DCTYPES)        HALFWORD FIXED POINT
         DC    YL1(ICON-DCTYPES)        I-ILLEGAL DC/DS TYPE
         DC    YL1(JCON-DCTYPES)        J-ILLEGAL DC/DS TYPE
         DC    YL1(KCON-DCTYPES)        K-ILLEGAL DC/DS TYPE
         DC    YL1(LCON-DCTYPES)        EXTRA LONG PRECISION FLT POINT
         DC    YL1(MCON-DCTYPES)        M-ILLEGAL DC/DS TYPE
         DC    YL1(NCON-DCTYPES)        N-ILLEGAL DC/DS TYPE
         DC    YL1(OCON-DCTYPES)        O-ILLEGAL DC/DS TYPE
         DC    YL1(PCON-DCTYPES)        PACKED DECIMAL
         DC    YL1(QCON-DCTYPES)        Q-TYPE ADDRESS
         DC    YL1(RCON-DCTYPES)        R-ILLEGAL DC/DS TYPE
         DC    YL1(SCON-DCTYPES)        S-TYPE ADDRESS
         DC    YL1(TCON-DCTYPES)        T-ILLEGAL DC/DS TYPE
         DC    YL1(UCON-DCTYPES)        U-ILLEGAL DC/DS TYPE
         DC    YL1(VCON-DCTYPES)        V-TYPE ADDRESS
         DC    YL1(WCON-DCTYPES)        W-INVALID DC/DS TYPE
         DC    YL1(XCON-DCTYPES)        HEXADECIMAL
         DC    YL1(YCON-DCTYPES)        Y-TYPE ADDRESS
         DC    YL1(ZCON-DCTYPES)        ZONED DECIMAL
         SPACE
SCAD     EQU   PZCON                    PIVOT
FCON     EQU   ECON                     SAME AS E-TYPE
ILLEGAL  EQU   DCTYPES                  ILLEGAL DC/DS TYPE
GCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
ICON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
JCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
KCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
MCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
NCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
OCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
RCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
TCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
UCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
WCON     EQU   ILLEGAL                  ILLEGAL DC/DS TYPE
         SPACE
XDSCAN   BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R6,R10                   FAKE CURRENT CONTROL SECTION
         MVC   RESDI(D6),EESDI          PASS ESDID
         MVI   TYPECALL,DSCALL+DXDALIGN+NOESD     PARAMETERS
         BALR  R9,R12                   SCAN OPERAND
         B     EXIT                     RETURN
         AIF   ('&TESTRAN' NE 'YES').MEND
         SPACE
SYMPUNCH BALR  R14,R7                   SAVE REGISTERS
         LR    R8,R12                   SET UP BASE REGISTER
         LR    R2,R10                   LENGTH PARAMETER
         LA    R3,ORGBYTE               LOAD ADDRESS OF ORGBYTE INTO R3
         LM    R10,R12,SYMCARD          GET ADDRESS OF CARD BUFFER
         LTR   R12,R12                  SEE IF ROOM LEFT ON CARD
         BZ    GETCARD                  NO MORE ROOM
         CR    R12,R2                   SEE IF ENOUGH ROOM
         BNL   SYMOVE                   ENOUGH, MOVE IT
         SR    R2,R12                   DO WHAT WE CAN
         BCTR  R12,D0                   MOVE LENGTH
         EX    R12,SYMOVA               MOVE IT IN
         LA    R3,D1(R3,R12)            POINT TO THE STUFF NOT MOVED
         MVI   D11(R11),D2*D28          LENGTH OF TESTRAN DATA
GETCARD  JPUNCH  SEQ=YES                GET A BUFFER
         MVC   D0(D4,R11),=AL1(X'02',JS,JY,JM)    'SYM' CARD IDENTIFIER
         TR    D1(71,R11),JTRTABLE      TRANSLATE TO EXTERNAL FORMAT
         MVI   D10(R11),D0              INITIALIZE DATA LENGTH
         LA    R12,D28*D2               LENGTH OF TESTRAN DATA ALLOWED
         LR    R10,R11                  ADDRESS OF FIRST BYTE OF DATA
SYMOVE   SR    R12,R2                   USING UP THIS MUCH
         BCTR  R2,D0                    MACHINE LENGTH
         EX    R2,SYMOVA                MOVE IT
         LA    R10,D1(R10,R2)           POINT TO NEXT AVAILABLE COLUMN
         STM   R10,R12,SYMCARD          SAVE THE GARBAGE
         SLR   R10,R11                  GET DATA LENGTH
         STC   R10,D11(,R11)            INDICATE DATA LENGTH ON CARD
         B     EXIT                     BUG OUT
SYMOVA   MVC   D16(D0,R10),D0(R3)       EXECUTED INSTRUCTION
         SPACE
DATABLE  EQU   *-D10                    TESTRAN DATA TYPE TABLE
         DC    AL1(DTYPEA)              A-TYPE
         DC    AL1(DTYPEB)              B-TYPE
         DC    AL1(DTYPEC)              C-TYPE
         DC    AL1(DTYPED)              D-TYPE
         DC    AL1(DTYPEE)              E-TYPE
         DC    AL1(DTYPEF)              F-TYPE
         DC    AL1(0)                   INVALID
         DC    AL1(DTYPEH)              H-TYPE
         DC    AL3(0)                   INVALID
         DC    AL1(DTYPEL)              L-TYPE
         DC    AL3(0)                   INVALID
         DC    AL1(DTYPEP)              P-TYPE
         DC    AL1(DTYPEQ)              Q-TYPE
         DC    AL1(0)                   INVALID
         DC    AL1(DTYPES)              S-TYPE
         DC    AL2(0)                   INVALID
         DC    AL1(DTYPEV)              V-TYPE
         DC    AL1(0)                   INVALID
         DC    AL1(DTYPEX)              X-TYPE
         DC    AL1(DTYPEY)              Y-TYPE
         DC    AL1(DTYPEZ)              Z-TYPE
.MEND    MEND
./ ADD NAME=XDICT
         MACRO
&ID      XDICT &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1
         GBLC  &COMPNM                  COMPONENT NAME
         LCLC  &NM                      MODULE NAME
         JHEAD 'EXTERNAL SYMBOL DICTIONARY SUBROUTINES',               ,
               PHASEID=&ID,LEVEL=&LEVEL
&NM      SETC  '&COMPNM&ID'
*                                                                     *
*TITLE-  EXTERNAL SYMBOL DICTIONARY ROUTINES                          *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        BUILD AND MAINTAIN THE EXTERNAL SYMBOL DICTIONARY            *
*        PRINT AND PUNCH THE EXTERNAL SYMBOL DICTIONARY               *
*        BUILD THE EXTERNAL SYMBOL DICTIONARY ADJUSTMENT TABLE        *
*                                                                     *
*ENTRY POINT-                                                         *
         ENTRY &NM.01
*                                                                     *
*INPUT-                                                               *
*        REGISTERS-                                                   *
*             R4-       REGISTER CONTAINING THE ADDRESS OF THE        *
*                       RECORD BEING PROCESSED                        *
*             R5-       REGISTER CONTAINING THE ADDRESS OF THE        *
*                       OPERAND BEING PROCESSED                       *
*             R6-       REGISTER CONTAINING THE ADDRESS OF THE        *
*                       CURRENT CONTROL SECTION ESD ENTRY             *
*                                                                     *
*OUTPUT-                                                              *
*        REGISTERS-                                                   *
*             R10       REGISTER CONTAINING THE ADDRESS OF THE        *
*                       NEW CURRENT CONTROL SECTION ESD ENTRY, IF     *
*                       CHANGED                                       *
*                                                                     *
*EXITS, NORMAL-                                                       *
*        EXITS TO THE CALLING ROUTINE                                 *
*                                                                     *
*EXITS, ERROR-                                                        *
*        EXITS TO THE CALLING ROUTINE                                 *
*                                                                     *
*TABLES/WORK AREAS-                                                   *
*        ESDBLK1-  A BLOCK IN STORAGE TO CONTAIN A MAXMI              *
*        ESDBLK1-  A BLOCK OF STORAGE TO CONTAIN A MAXIMUM OF 16 ESD  *
*                  ENTRIES, ALSO SERVES AS AN INPUT/OUTPUT BUFFER     *
*                  FOR THE OVERFLOW FILE (FILE2) WHEN NECESSARY       *
*        ESDBLK2-  SAME FUNCTION AS ESDBLK1 ABOVE                     *
*        NOTELIST- A LIST OF NOTE PARAMETERS OF OVERFLOWED ESD BLOCKS *
*                  WHEN NOT IN CORE                                   *
*                                                                     *
*ATTRIBUTES-                                                          *
*        REFRESHABLE                                                  *
*                                                                     *
*NOTES                                                                *
*                                                                     *
         EJECT
         COPY  JCOMMON
         EJECT
         COPY  JTEXT
         EJECT
         COPY  ICOMMON
         EJECT
JTEXT    DSECT ,
         ORG   JTEXT
         COPY  RSYMRCD
         EJECT
&NM.00   CSECT
* VS1 REL 2.6 CHANGES
*C221000                                                        OX00106
*A246500,430500,481500                                          OX00106
*C430500,481500                                                @OY08064
         JMODID
&NM.01   CONTENTS
         USING &NM.01,R8                BASE REGISTER
         EJECT
*TITLE-  BLDESD                                                       *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        BUILD OR RESUME AN ESD ENTRY                                 *
*                                                                     *
*INPUT-  R4 CONTAINS A POINTER TO THE RECORD BEING PROCESSED          *
*        R10 CONTAINS A POINTER TO A PARAMETER LIST                   *
*                                                                     *
*OUTPUT- R10 CONTAINS A POINTER TO THE ESD ENTRY                      *
*                                                                     *
         SPACE
BLDESD   BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         LA    R2,D1                    INCREMENT IN
         LR    R3,R2                    TWO REGISTER
         LR    R5,R10                   SAVE POINTER
         AH    R2,D0(,R5)               ESDID
         AH    R3,HIESDNR               ESD NUMBER
         STH   R2,XESDI                 ESDID
         STH   R3,XLNGQ                 ESD NUMBER
         MVC   XFLGB,XPARM              FLAGS
         SR    R0,R0                    ZERO
         ST    R0,XLCTR                 INITIAL VALUE
         OC    XESDI(D1),XPARM+D3       FLAG FOR DSECT OR COM
BLDESD1  MVC   XTYPE,XPARM+D1           TYPE
         MVC   XNAME,=8AL1(JBLANK)      PAD
         MVC   XNAME(D1),XTYPE          NAME
         GOIF  RFIELDN,OFF=BLDESD2      SKIP IF NO NAME
         MVC   RLNGQ,=H'1'              LENGTH ATTRIBUTE
         GOIF  PRIORDEF,ON=BLDESD2      SKIP IF PREVIOUSLY DEFINED
         MVC   XNAME,RNAME              GET NAME
         MVC   XTYPE,XPARM+D2           TYPE
BLDESD2  LA    R10,XWORK                PASS RECORD POINTER
         GOTO  ENTER                    TRY TO ENTER IN SYMBOL TABLE
         BNE   BLDESD5                  ALREADY IN SYMBOL TABLE
         STH   R2,D0(,R5)               SAVE ESDID
         STH   R3,HIESDNR               SAVE ESD NUMBER
         TM    XESDI,CSW2+DSW2          COM OR DSECT
         BNE   BLDESD4                  SKIP IF SO
         NC    FSTCSECT,FSTCSECT        SEE IF FIRST CSECT
         BNE   BLDESD3                  SKIP IF NOT
         STH   R3,FSTCSECT              FIRST CSECT ESD NUMBER
BLDESD3  CLI   XTYPE,ETYPEPC            PRIVATE CODE
         BNE   BLDESD4                  SKIP IF NOT
         STH   R2,JESDID                ESDID OF PRIVATE CODE
BLDESD4  LR    R10,R3                   ESD NUMBER
         GOTO  GETESD                   GET ESD ENTRY
         LM    R2,R3,XTYPE              TYPE, ESDID, ADDRESS
         SR    R4,R4                    INITIALIZE
         LM    R5,R6,XNAME              NAME
         STM   R2,R6,ETYPE-ETYPE(R10)   CREATE ESD ENTRY
         B     EXIT                     EXIT
BLDESD5  CLC   SFLGS,XFLGB              SEE IF SAME TYPE SECTION
         BE    BLDESD6                  RESUME SECTION IF SAME
         NI    XPARM,BITFF-(XDUMMY)     DISCOUNT EXTERNAL DUMMYS
         CLC   SFLGS,XPARM              GIVE IT ANOTHER CHANCE
         BE    BLDESD6                  LET THIS ONE GO
         SET   PRIORDEF,ON              INDICATE PREVIOUSLY DEFINED
         B     BLDESD1                  IGNORE NAME
BLDESD6  LH    R10,SLNGQ                ESD ASCENDSION NUMBER
         GOTO  GETESD                   RESUME ESD ENTRY
         SET   DEFINED,ON               INDICATE RESUMED SECTION
         B     EXIT                     EXIT
         EJECT
*TITLE-  GETESD                                                       *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        GET AN ESD ENTRY                                             *
*                                                                     *
*INPUT-  R10 CONTAINS THE ESD NUMBER                                  *
*                                                                     *
*OUTPUT- R10 CONTAINS A POINTER TO THE ENTRY                          *
*                                                                     *
         SPACE
GETESD   BALR  R14,R7                   SAVE REGISTER IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         LR    R2,R10                   INTO WORK REGISTER
         LA    R10,D16*D25              MAXIMUM ESD ENTRIES
         CR    R10,R2                   SEE IF EXCEEDED
         BNL   GETESD0                  NOPE
         BAL   R9,GETESD                RECURSIVE CALL
         SET   JESDOFLO,ON              INDICATE ESD OVERFLOW
         MVI   D0(R10),D3               OVERFLOW ENTRY
         XC    D1(D19,R10),D1(R10)      INITIALIZE
         B     EXIT                     RETURN
GETESD0  BCTR  R2,D0                    ESD NUMBER
         SRDL  R2,D4                    BLOCK NUMBER
         LR    R4,R2                    NOTE/POINT ADDRESS FOR BLOCK
         MH    R4,=H'9'                 X
         LA    R4,NOTELIST(R4)          X
         SRL   R3,D28                   DISPLACEMENT
         MH    R3,=H'20'                DISPLACEMENT
         TM    D8(R4),BIT7              SEE IF THIS A NEW BLOCK
         BO    GETESD4                  NO
         TM    FILELAST+D8,BIT7         SEE IF FLIE POSITIONED TO WRITE
         BZ    GETESD1                  YES
         JPOINT  FILE=FILE2,ADDR=FILELAST,NEXT=WRITE   POSITION FILE
GETESD1  LA    R5,ESDBLK2               POINT TO SECOND BLOCK
         CR    R5,R6                    SEE IF BLOCK CURRENTLY IN USE
         BH    GETESD2                  NO
         LA    R5,ESDBLK1               POINT TO FIRST BLOCK
GETESD2  JWRITE  FILE=FILE2,PARM=(R5)   WRITE DESIGNATED BLOCK
         MVI   FILELAST+D8,D0           INDICATE FILE POSITIONED TO END
         JCHECK  FILE=FILE2             CHECK WRITE OPERATION
         JNOTE   FILE=FILE2             NOTE ADDRESS OF BLOCK ON FILE
         LH    R1,D6(,R5)               BLOCK NUMBER OF BLOCK WRITTEN
         MH    R1,=H'9'                 NOTE/POINT ADDRESS FOR BLOCK
         LA    R1,NOTELIST(R1)          X
         MVI   D8(R1),BIT6              INDICATE BLOCK ON FILE
         MVC   D0(D8,R1),JNOTEVAL       SAVE BLOCK NOTE/POINT ADDRESS
         MVC   FILELAST(D8),JNOTEVAL    NOTE/POINT ADDRESS OF FILE END
         TM    D8(R4),BIT6              SEE IF BLOCK ON FILE
         BZ    GETESD3                  NOPE
         JPOINT  FILE=FILE2,ADDR=(R4),NEXT=READ   POINT TO BLOCK
         JREAD   FILE=FILE2,PARM=(R5)   BRING IN BLOCK
         MVI   FILELAST+D8,BIT7         INDICATE FILE NOT POSITIONED
         JCHECK  FILE=FILE2             CHECK READ OPERATION
GETESD3  ST    R5,JFWORD1               ADDRESS OF BLOCK
         MVI   D8(R4),BIT7              INDICATE BLOCK IS IN CORE
         MVC   D0(D4,R4),JFWORD1        SAVE ADDRESS OF BLOCK IN CORE
GETESD4  MVC   JFWORD1,D0(R4)           ADDRESS TO FULLWORD BOUNDARY
         L     R5,JFWORD1               ADDRESS OF BLOCK IN CORE
         STH   R2,D6(,R5)               BLOCK NUMBER
         LA    R10,D8(R3,R5)            POINT TO ENTRY REQUESTED
         B     EXIT                     RETURN
         EJECT
*TITLE-  MAKESD                                                       *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        CREATE THE ESD ADJUSTMENT TABLE                              *
*        ESD FINISHING AND OUTPUT                                     *
*                                                                     *
*INPUT-  THE EXTERNAL SYMBOL DICTIONARY (ESD).                        *
*                                                                     *
*OUTPUT- THE ESD ADJUSTMENT TABLE.                                    *
*        THE EXTERNAL SYMBOL DICTIONARY ON THE SYSTEM OUTPUT FILES.   *
*                                                                     *
         SPACE
ENTRY    BALR  R14,R7                  SAVE REGISTERS IN STACK
         LR    R8,R12                  SET UP BASE REGISTER
         LR    R10,R4                  PASS RECORD POINTER
         MVI   RFLGB,ESDNRSW+ENTRYSW    SET FLAGS
         GOTO  FIND                     LOOKUP IN SYMBOL TABLE
         BZ    ENTRY2                   ERROR
         GOIF  (MODE1,MODE2),ANY=EXIT   SUSPEND ACTION IF NOT MODE IA
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         LH    R10,HIESDNR              GET HIGHEST ESD NUMBER
         LA    R10,D1(,R10)             GET NEXT ESD NUMBER
         STH   R10,HIESDNR              SAVE
         STH   R10,SLNGQ                ESD ASCENDSION NUMBER
         GOTO  GETESD                   FIND ROOM IN ESD
         MVI   ETYPE-EITEM(R10),ETYPELX PRIME ESD ENTRY
ENTRY1   MVI   RTYPE,JTSYMBL            CHECK BACK IN PASS 2
         B     EXIT                     FINIS
ENTRY2   GOIF  (ESDNRSW,XENTRY,CSECTSW,DSECTSW),ALL=ENTRY1,MIX=ENTRY3
         GOIF  (CSW,DSW,ESW),ANY=ENTRY3 INVALID                 OX00106
         SR    R0,R0                    SEE IF
         CH    R0,SESDI                 ABSOLUTE
         BZ    ENTRY3                   BAD
         SET   XENTRY,ON                INDICATE VALID ENTRY
         OI    RFLGB,XENTRY             INDICATE VALID ENTRY
         MVC   RESDI(D6),SESDI          ESDID AND ADDRESS
         LH    R10,HIESDNR              GET HIGHERS ESD NUMBER
         LA    R10,D1(,R10)             GET NEXT ESD NUMBER
         STH   R10,HIESDNR              SAVE
         GOTO  GETESD                   GET ESD ENTRY
         MVI   ETYPE-EITEM(R10),ETYPELD ESD ENTRY TYPE
         MVC   EESDI-EITEM(D6,R10),RESDI     ESDID AND VALUE
         MVC   ENAME-EITEM(D8,R10),RNAME     NAME
         MVI   RTYPE,JTADJII            ADJUST VALUE IN IIA
         B     EXIT                     FINIS
ENTRY3   MVI   RTYPE,JTPASS             INVALID ENTRY
         B     EXIT                     FINIS
EXTRN    BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         LA    R2,D1                    INCREMENT
         LR    R3,R2                    IN TWO REGISTERS
         STH   R2,RLNGQ                 LENGTH ATTRIBUTE OF SYMBOL
         AH    R2,HICESDID              NEXT ESDID
         AH    R3,HIESDNR               NEXT ESD NUMBER
EXTRN1   STH   R2,RESDI                 ESDID
         SET   ESW1,ON                  SET EXTRN/EQU FLAG      OX00106
EXTRN2   XI    RNAME,BIT0               UNIQUE NAME
         LR    R10,R4                   PASS RECORD POINTER
         GOTO  ENTER                    ENTER INTO SYMBOL TABLE
         BNE   EXTRN5                   ALREADY IN SYMBOL TABLE
         TM    RNAME,BIT0               SEE IF FIRST TIME AROUND
         BNE   EXTRN2                   ENTER SECOND TIME IF FIRST
         CH    R3,HIESDNR               SEE IF NEW ENTRY
         BNH   EXTRN3                   SKIP IF NOT NEW
         STH   R2,HICESDID              SAVE NEW ESDID
         STH   R3,HIESDNR               SAVE NEW0ESD NUMBER
EXTRN3   LR    R10,R3                   PASS ESD NUMBER
         GOTO  GETESD                   GET ESD ENTRY
         MVC   ETYPE-EITEM(D8,R10),RTYPE
         MVC   ENAME-EITEM(D8,R10),RNAME
EXTRN4   MVI   RTYPE,JTPASS             NO PROCESS RECORD IN PASS 2
         B     EXIT
EXTRN5   LH    R2,SESDI                 GET ESDID OF PREVIOUS ENTRY
         LH    R3,SLNGQ                 GET ESD ASCENDSION NUMBER
         TM    RNAME,BIT0               SEE IF FIRST TIME AROUND
         BNE   EXTRN1                   GO AGAIN IF FIRST
         SET   PRIORDEF,ON              INDICATE PREVIOUSLY DEFINED
         B     EXTRN4                   EXIT
VCON     BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         LR    R3,R2                    IN TWO REGISTERS
         AH    R2,HICESDID              GET NEXT ESDID
         AH    R3,HIESDNR               GET NEXT ESD NUMBER
         STH   R2,XESDI                 ESDID
         STH   R3,XLNGQ                 ESD NUMBER
         MVI   XTYPE,ETYPEER            TYPE
         MVI   XFLGB,ESDNRSW            FLAGS
         OI    XNAME,BIT0               EXTERNAL NAME
         SR    R0,R0                    ZERO
         STH   R0,XLCTR                 VALUE
         LA    R10,XWORK                POINTER TO ENTRY
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         BNZ   EXIT                     ALREADY IN SYMBOL TABLE
         STH   R2,HICESDID              SAVE ESDID
         STH   R3,HIESDNR               SAVE ESD NUMBER
         XI    XNAME,BIT0               RESET
         LR    R10,R3                   GET ESD NUMBER
         GOTO  GETESD                   GET ESD ENTRY
         MVC   ETYPE-EITEM(D8,R10),XTYPE     TYPE, FLAGS, ESDID, VALUE
         MVC   ENAME-EITEM(D8,R10),XNAME     NAME
         B     EXIT                     RETURN
QCON     BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         LA    R10,XWORK                PASS POINTER TO WORK AREA
         GOTO  FIND                     LOOKUP IN SYMBOL TABLE
         BNE   EXIT                     NOT IN SYMBOL TABLE
         GOIF  (ESDNRSW,DSECTSW,DSCOMSW,XDUMMY),NOTALL=EXIT VALID NAME
         SET   XDUMMY,OFF               ONE TIME ONLY PER DSECT NAME
         LR    R10,R2                   INCREMENT IN TWO REGISTERS
         AH    R2,HICESDID              NEXT ESDID
         STH   R2,HICESDID              SAVE ESDID
         LH    R3,SLNGQ                 ESD ASCENDSION NUMBER
         AH    R10,HIESDNR              NEXT ESD NUMBER
         STH   R10,HIESDNR              SAVE ESD NUMBER
         GOTO  GETESD                   GET ESD ENTRY
         MVC   ENAME-EITEM(D8,R10),XNAME     NAME
         STH   R2,EESDI-EITEM(,R10)     ESDID
         OI    ESWTS-EITEM(R10),QDSW2   INDICATE XD ENTRY
         STH   R3,EHILC-EITEM(,R10)     ESD ASCENDSION NUMBER
         MVI   ETYPE-EITEM(R10),ETYPEDX TYPE
         B     EXIT                     EXIT
SUMESD   BALR  R14,R7                   PUSH DOWN ONE MORE LEVEL
SUMGET   LR    R10,R4                   PASS
         BAL   R2,GOTESD                GET ESD ITEM
         SR    R2,R2                    ZERO FUNCTION BYTE REGISTER
         TRT   ETYPE,SUMTBL             GET ROUTINE ADDRESS
         B     SUMGET(R2)               GO TO ROUTINE
SUMCST   LM    R14,R15,ELCTR            GET CURRENT AND HIGH ADDRESS
         CR    R14,R15                  SEE IF CURRENT IS ALSO HIGH
         BNH   SUMCST1                  SKIP IF NOT
         LR    R15,R14                  SAVE HIGH
SUMCST1  SR    R14,R14                  ASSUME NO OFFSET
         GOIF  (CSW2,DSW2),ANY=SUMCST3  NO OFFSET FOR DSECTS OR COMS
         L     R14,STARTLOC             GET START ADDRESS
         NR    R14,R5                   ROUND TO SECTION ALIGNMENT
         LA    R0,D7                    INCREMENT
         AR    R0,R14                   COMPUTE NEXT START ADDRESS
         AR    R0,R15                   COMPUTE NEXT START ADDRESS
         ST    R0,STARTLOC              SAVE
         LTR   R14,R14                  SEE IF ADJUSTMENT REQUIRED
         BZ    SUMCST3                  NOPE
         ST    R14,D4(,R4)              ADJUSTMENT FACTOR
         MVC   D0(D2,R4),EESDI          ARGUMENT ESDID
SUMCST2  MVC   D2(D2,R4),EESDI          TARGET ESDID
         SR    R4,R5                    POINT TO NEXT ADJUSTMENT ENTRY
SUMCST3  STM   R14,R15,ELCTR            ADDRESS AND LENGTH
         B     SUMGET                   CONTINUE WITH NEXT ENTRY
SUMDXD   LM    R15,R0,ELCTR             GET LENGTH AND ALIGNMENT FACTOR
         LR    R14,R0                   REORDER
         B     SUMCST3                  SKIP
SUMDSD   MVI   ETYPE,ETYPEXD            CHANGE TYPE
         LH    R10,EHILC                GET ESD ASCENDSION NUMBER
         GOTO  GETESD                   GET ESD ENTRY
         LA    R14,D7                   ALIGNMENT FACTOR
         L     R15,EHILC-EITEM(,R10)    LENGTH
         XC    D4(D4,R4),D4(R4)
         MVC   D0(D2,R4),EESDI-EITEM(R10)
         B     SUMCST2
GOTESD   LA    R3,D1(,R3)               GET NEXT ESD NUMBER
         CH    R3,HIESDNR               SEE IF ALL THROUGH
         BH    EXIT                     FINIS
         LR    R10,R3                   PASS ESD NUMBER
         GOTO  GETESD                   GET ESD ENTRY
         LR    R6,R10                   RETURN POINTER
         BR    R2                       RETURN
MAKESD   BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         L     R4,LATEND                ESD ADJUSTMENT TABLE POINTER
         LH    R5,=H'-8'                INCREMENT
         MVI   CARDADDR+D3,48           FLUSH CARD PUNCH BUFFER
         SR    R3,R3                    ESD NUMBER INITIALIZED
         BAL   R9,SUMESD                SUM CONTROL SECTIONS
         S     R10,LATEND               LENGTH OF ESD ADJUSTMENT TABLE
         LR    R11,R5                   INCREMENT
         STM   R10,R11,ADJINDEX         SAVE FOR PASS TWO
MAKGET   BAL   R2,GOTESD                GET NEXT SEQUENTIAL ESD ENTRY
         SR    R2,R2                    ZERO FUNCTION BYTE REGISTER
         LR    R10,R2                   CLEAR REGISTER
         TRT   ETYPE,MAKTBL             GET ROUTINE ADDRESS
         B     MAKGET(R2)               GO TO ROUTINE
MAKCST   SET   (QDSW2,DSW2,CSW2),OFF    RESET XD DSECT OR COM BITS
         CLI   ENAME,J9                 SEE IF NAMED
         BH    PRTESD                   SKIP IF NAMED
MAKPVT   MVI   ENAME,JBLANK             FAKE THE BLANK
         B     PRTESD                   PRINT ESD ITEM
MAKTRY   LM    R14,R1,ADJINDEX          ESD ADJUSTMENT INDEX
         LH    R10,EESDI                GET ESDID
MAKTRY1  BXLE  R14,R15,PRTESD           SEE IF ADJUSTMENT REQUIRED
         CH    R10,D0(R1,R14)           SEE IF THIS IS THE ENTRY
         BNE   MAKTRY1                  NO, KEEP LOOKING
         L     R10,D4(R1,R14)           GET ADJUSTMENT FACTOR
         A     R10,ELCTR                ADD OFFSET
MAKEXT   ST    R10,ELCTR                SAVE
         EJECT
*TITLE-  PRTESD                                                       *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        PRINT AN ITEM IN THE EXTERNAL SYMBOL DICTIONARY              *
*                                                                     *
*INPUT-  REGISTER R10 IS A POINTER TO AN ESD ENTRY                    *
*                                                                     *
*OUTPUT- THE EXTERNAL SYMBOL DICTIONARY                               *
*                                                                     *
         SPACE
PRTESD   EQU   *
         GOIF  (JESD,JLIST),NOTALL=PCHESD    SKIP IF NOT OPTIONED
         LH    R5,LINECNT               GET LINE COUNT
         GOIF  (R5),POS=PRTESD2         SKIP IF NOT END OF PAGE
         JPRINT                         GET PRINT BUFFER
         SET   EJECT                    CARRIAGE CONTROL FOR TITLE LINE
         MVC   DECKID,JDECKID           DECK IDENTIFIER
         MVC   TITLE,ZTITLE             SET TITLE
         MVC   PAGE,ZPAGEZ              SET PAGE NUMBER DESIGNATOR
         LH    R14,JPAGENO              GET OLD PAGE NUMBER
         LA    R14,1(,R14)              INCREMENT BY 1
         STH   R14,JPAGENO              SAVE PAGE NUMBER
         CVD   R14,JDWORD               CONVERT PAGE NUMBER TO DECIMAL
         UNPK  PAGENO,JDWORD+6(2)       UNPACK TO EBCDIC CODE
         NC    PAGENO,DIGMASK           CONVERT TO INTERNAL CHARACTERS
         GOIF  PAGENO,J0,NOTEQ=PRTESD1  SKIP IF NOT A LEADING ZERO
         MVI   PAGENO,JBLANK            FORCE TO A BLANK
         GOIF  PAGENO+1,J0,NOTEQ=PRTESD1     SKIP IF NOT A LEADING ZERO
         MVI   PAGENO+1,JBLANK          FORCE TO A BLANK
PRTESD1  JPRINT                         GET PRINT BUFFER
         MVC   HEADING,ZHEADING         SET SUBTITLE
         MVC   LVTMDT,JLVTMDT           SET ASSEMBLER LEVEL, TIME, DATE
         LH    R5,JLNCT                 GET MAXIMUM LINE COUNT
PRTESD2  JPRINT                         GET PRINT BUFFER
         SET   SPACE1                   CARRIAGE CONTROL FOR LINE
         CH    R5,JLNCT                 COMPARE TO MAXIMUM LINE COUNT
         BL    PRTESD3                  SKIP IF NOT REACHED
         SET   SPACE2                   CARRIAGE CONTROL FOR FIRST LINE
PRTESD3  BCTR  R5,0                     DECREMENT LINE COUNT
         STH   R5,LINECNT               SAVE LINE COUNT
         MVC   ZSYMBOL,ENAME            SET NAME
         TRT   ETYPE,ZTYPESZ            TRANSLATE FIRST CHARACTER
         STC   R2,ZTYPE                 TO OUTPUT ITEM
         TRT   ETYPE,ZTYPESZ+D7         TRANSLATE SECOND CHARACTER
         STC   R2,ZTYPE+D1              TO OUTPUT ITEM
         UNPK  ZID(L'ZID+1),EESDI(L'EESDI+1) UNPACK WITH ROOM TO SPARE
         NC    ZID,DIGMASK              CONVERT TO INTERNAL CHARACTERS
         MVI   ZID+L'ZID,JBLANK         REPAIR DAMAGE
         NI    ZID+1,BITFF-ESW-EQUF                            @OY08064
         GOIF  ETYPEER,EQUAL=PCHESD     FINIS FOR EXTERNAL REFERENCE
         GOIF  ETYPEWX,EQUAL=PCHESD     FINIS FOR EXTERNAL REFERENCE
         UNPK  ZADDR(L'ZADDR+1),ELCTR(L'ELCTR+1)  UNPACK WITH EXCESS
         NC    ZADDR,DIGMASK            CONVERT TO INTERNAL CHARACTERS
         MVI   ZADDR+L'ZADDR,JBLANK     REPAIR DAMAGE
         GOIF  ETYPELD,NOTEQ=PRTESD4    SKIP IF NOT LD TYPE
         MVC   ZLDID,ZID                PUT IN PROPER PERSPECTIVE
         MVC   ZID,ZID-1                REPAIR
         B     PCHESD                   FINISHED IF LD TYPE
PRTESD4  UNPK  ZLENGTH(L'ZLENGTH+1),EHILC(L'EHILC+1)   UNPACK
         NC    ZLENGTH,DIGMASK          CONVERT TO INTERNAL CHARACTERS
         MVI   ZLENGTH+L'ZLENGTH,JBLANK REPAIR
         EJECT
*TITLE-  PCHESD                                                       *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        PUNCH ONE ITEM IN THE EXTERNAL SYMBOL DICTIONARY.            *
*                                                                     *
*INPUT-  REGISTER R6 IS A POINTER TO ONE ITEM IN THE EXTERNAL SYMBOL  *
*   DICTIONARY.                                                       *
*                                                                     *
*OUTPUT- THE EXTERNAL SYMBOL DICTIONARY ON THE PUNCH AND LINK FILES.  *
*                                                                     *
         SPACE
PCHESD   GOIF  (JDECK,JLINK),NONE=MAKGET     RETURN IF NOT OPTIONED
         LM    R10,R11,CARDADDR         GET ADDRESS OF CARD
         CLI   CARDADDR+D3,48           SEE IF ANOTHER CARD NEEDED
         BL    PCHESD1                  NOT NECESSARILY
         JPUNCH  SEQ=YES                GET ANOTHER CARD BUFFER
         SET   JENDCHK,ON               PUNCH END CARD WHEN TIME COMES
         MVC   CARDID,ZESDZ             CARD IDENTIFIER
         TR    CARDID+D1(71),JTRTABLE   TRANSLATE TO EXTERNAL CODE
         MVI   DATALN,D0                HIGH ORDER BYTE OF FIELD ZEROED
         SR    R10,R10                  NEW CARD BUFFER INDICATION
PCHESD1  LA    R10,NEXTITEM             POINT TO NEXT ENTRY SPACE
         STM   R10,R11,CARDADDR         SAVE ADDRESS OF CARD
         STC   R10,DATALN+1             LENGTH OF DATA
         ALR   R10,R11                  POINTER TO ESD DATA ITEM IN R3
         MVC   ZZSYMBOL,ENAME           SET NAME
         TR    ZZSYMBOL,JTRTABLE        CONVERT TO EXTERNAL CHARACTERS
         MVC   ZZTYPE,ETYPE             SET TYPE
         MVC   ZZADDR,ELCTR+L'ELCTR-L'ZZADDR SET ADDRESS
         GOIF  ETYPEXD,NOTEQ=PCHESD3    SKIP IF NOT XD TYPE
         MVC   ZZADDR(L'ZZADDR+L'ZZALGN),ELCTR    SET ALIGNMENT FACTOR
PCHESD3  GOIF  ETYPELD,NOTEQ=PCHESD4    SKIP IF NOT LD TYPE
         MVC   ZZLENGTH+L'ZZLENGTH-L'EESDI(L'EESDI),EESDI   LDID
         MVI   ZZLENGTH,X'00'           PAD WITH LEADING ZEROS
         B     MAKGET                   FINIS
PCHESD4  TM    FIRSTID,X'F0'            SEE IF ESDID SET
         BZ    PCHESD5                  SKIP IF ALREADY SET
         MVC   FIRSTID,EESDI            SET ESDID OF FIRST NON LD ITEM
         NI    FIRSTID,BITFF-BIT4-EQUF                         @OY08064
PCHESD5  GOIF  ETYPEER,EQUAL=MAKGET     FINIS FOR EXTERNAL REFERENCE
         GOIF  ETYPEWX,EQUAL=MAKGET     FINIS FOR EXTERNAL REFERENCE
         MVC   ZZLENGTH,EHILC+L'EHILC-L'ZZLENGTH  SET LENGTH
         B     MAKGET                   FINIS
         EJECT
REFER    BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         MVC   XWORK(D12),=AL1(0,24,JPSOP,0,JTSYMBL,0,0,0,0,0,0,0)
         LA    R10,XWORK                SYMBOL POINTER
         GOTO  FIND                     LOOK UP IN SYMBOL TABLE
         BZ    REFER2                   FIND IN SYMBOL TABLE
REFER1   GOIF  MODE2,ON=EXIT            DUMPING LITERALS ON OVERFLOW
         B     REFER4                   UNDEFINED AS YET
REFER2   GOIF  ENTRYSW,ON=REFER1        NOT A DEFINED SYMBOL
         MVC   XTYPE(D2),=AL1(JTADJII,DEFINED+PRIORDEF)
         GOIF  MODE2,OFF=REFER3         SKIP IF NOT OVERFLOW
         MVI   XTYPE,JTSYMII            REHASH IN PASS TWO
REFER3   MVC   XFLGB,SFLGS              SYMBOL FLAGS
         MVC   XESDI(D6),SESDI          ESDID AND VALUE
         LH    R15,SLNGQ                LENGTH ATTRIBUTE
         GOIF  ESDNRSW,OFF=REFER5       EXTERNAL SYMBOL
REFER4   LA    R15,D1                   LENGTH ATTRIBUTE
REFER5   STH   R15,XLNGQ                SET LENGTH ATTRIBUTE
         LR    R11,R10
         LH    R10,JOUTFILE             OUTPUT FILE ADDRESS
         JPUTM FILE=(R10),ADDR=(R11)
         B     EXIT                     FINIS
         EJECT
*                        CONSTANTS                                    *
         SPACE
OIINST   OI    D0(R15),D0               EXECUTED INSTRUCTION
DIGMASK  JGENIN  'FFFFFF'               DIGIT MASK
ZTYPESZ  JGENIN  'SLEXPCXDDRWCMDXXXX'   TYPES
SUMTBL   DC    AL1(SUMCST-SUMGET)       00 - (SD) CONTROL SECTION
         DC    AL1(SUMGET-SUMGET)       01 - (LD) LABEL DEFINITION
         DC    AL1(SUMGET-SUMGET)       02 - (ER) EXTERNAL REFERENCE
         DC    AL1(SUMGET-SUMGET)       03        OVERFLOW ENTRY
         DC    AL1(SUMCST-SUMGET)       04 - (PC) PRIVATE CODE
         DC    AL1(SUMCST-SUMGET)       05 - (CM) COMMON
         DC    AL1(SUMDXD-SUMGET)       06 - (XD) EXTERNAL DUMMY
         DC    AL1(SUMDSD-SUMGET)       07 -      EXTERNAL DUMMY
         DC    AL1(SUMCST-SUMGET)       08 -      DUMMY CONTROL SECTION
         DC    AL1(SUMGET-SUMGET)       09        UNDEFINED ENTRY
         DC    AL1(SUMGET-SUMGET)       0A - (WX) EXTERNAL REFERENCE
MAKTBL   DC    AL1(PRTESD-MAKGET)       00 - (SD) CONTROL SECTION
         DC    AL1(MAKTRY-MAKGET)       01 - (LD) LABEL DIFINITION
         DC    AL1(MAKEXT-MAKGET)       02 - (ER) EXTERNAL REFERENCE
         DC    AL1(MAKGET-MAKGET)       03        OVERFLOW ENTRY
         DC    AL1(MAKPVT-MAKGET)       04 - (PC) PRIVATE CODE
         DC    AL1(MAKCST-MAKGET)       05 - (CM) COMMON
         DC    AL1(MAKCST-MAKGET)       06 - (XD) EXTERNAL DUMMY
         DC    AL1(MAKGET-MAKGET)       07 -      NOT USED
         DC    AL1(MAKGET-MAKGET)       08 -      DSECT
         DC    AL1(MAKGET-MAKGET)       09 -      UNDEFINED ENTRY
         DC    AL1(MAKEXT-MAKGET)       0A - (WX) EXTERNAL REFERENCE
ZESDZ    DC    B'00000010'              12-9-2 CARD IDENTIFIER
         JGENIN  'ESD'                  ESD CARD IDENTIFIER
ZPAGEZ   JGENIN  'PAGE'                 PAGE NUMBER DESIGNATOR
ZTITLE   JGENIN  'EXTERNAL SYMBOL DICTIONARY'     ESD TITLE
ZHEADING DC    YL1(SPACE3)              CARRIAGE CONTROL CHARACTER
         JGENIN  'SYMBOL   TYPE  ID   ADDR  LENGTH LDID'    SUBTITLE
         EJECT
DSECT10  DSECT  ,
         ORG   DSECT10
         SPACE
ZZSYMBOL DS    C'XXXXXXXX'              NAME, BLANK FOR PC OR BLANK CM
ZZTYPE   DS    C'X'                     TYPE
ZZADDR   DS    C'XXX'                   ADDRESS
ZZALGN   DS    C'X'                     ALIGNMENT FACTOR FOR SC TYPE
ZZLENGTH DS    C'XXX'                   LENGTH
NEXTITEM EQU   *                        NEXT ITEM FOLLOWS IMMEDIATELY
         SPACE
         SPACE
DSECT11  DSECT ,
         ORG   DSECT11
         SPACE
CARD     DS    0CL72
CARDID   DS    C' ESD'                  CARD IDENTIFIER
         DS    C'      '                BLANK
DATALN   DS    H                        NUMBER OF BYTES OF ESD DATA
         DS    C'  '                    BLANK
FIRSTID  DS    H                        ESDID OF FIRST NON LD TYPE ITEM
DATAITEM DS    CL16
         SPACE
         SPACE
         ORG   DSECT11
         SPACE
LINE     DS    0CL121
CTLCHAR  DBV   EJECT(0),SPACE1(1),SPACE2(2),SPACE3(3)  CARRIAGE CONTROL
DECKID   DS    CL8                      DECK IDENTIFIER
         ORG   LINE+48
TITLE    DS    C'EXTERNAL SYMBOL DICTIONARY' ESD TITLE
         ORG   LINE+112
PAGE     DS    C'PAGE'                  PAGE NUMBER DESIGNATOR
         ORG   LINE+118
PAGENO   DS    C'000'                   PAGE NUMBER
         ORG   LINE
HEADING  DS    C'3SYMBOL   TYPE  ID   ADDR  LENGTH LDID'
         ORG   LINE+L'LINE-L'JLVTMDT
LVTMDT   DS    CL(L'JLVTMDT)            ASSEMBLER LEVEL, TIME, DATE
         ORG   LINE+1
ZSYMBOL  DS    C'XXXXXXXX'              NAME, BLANK FOR PC OR BLANK CM
         DS    C'  '                    SPACES
ZTYPE    DS    C'XX'                    ESD ITEM TYPE
         DS    C'  '                    SPACES
ZID      DS    C'XXXX'                  ESD IDENTIFIER, IF NON LD TYPE
         DS    C' '                     SPACE
ZADDR    DS    C'XXXXXX'                ADDRESS, IF TYPE SD, PC, LD
         DS    C' '                     SPACE
ZLENGTH  DS    C'XXXXXX'                LENGTH, IF TYPE SD, PC, CM, SC
         DS    C' '                     SPACE
ZLDID    DS    C'XXXX'                  ESD IDENTIFIER OF SD ENTRY
         MEND
./ ADD NAME=XEVAL
         MACRO
&ID      XEVAL &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1,&LOGERR=NO
         GBLC  &COMPNM
         LCLC  &NM
         JHEAD 'EXPRESSION EVALUATION SUBROUTINE',                     ,
               PHASEID=&ID,                                            ,
               LEVEL=&LEVEL
&NM      SETC  '&COMPNM&ID'
*TITLE-  ASSEMBLER EXPRESSION EVALUATION SUBROUTINE                   *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        EVALUATE EXPRESSIONS                                         *
*        CONVERT SELF-DEFINING TERMS                                  *
*        DETECT ERRORS IN EXPRESSIONS                                 *
*             SYNTACTIC ERRORS-                                       *
*                  ILLEGAL CHARACTER IN EXPRESSION                    *
*                  ILLEGAL COMBINATION OF OPERATORS                   *
*                  MORE THAN TWENTY TERMS IN EXPRESSION               *
*                  MORE THAN SIX LEVELS OF PARENTHESES IN EXPRESSION  *
*                  PREMATURE END OF EXPRESSION                        *
*             NON-SYNTACTIC ERRORS-                                   *
*                  SELF-DEFINING TERM TOO LARGE                       *
*                  SELF-DEFINING TERM CONTAINS TOO MANY CHARACTERS    *
*                  RELOCATABLE TERM IN A MULTIPLY OR DIVIDE OPERATION *
*                  ARITHMETIC OVERFLOW ON AN INTERMEDIATE VALUE       *
*                  UNDEFINED SYMBOL IN EXPRESSION                     *
*                  INVALID SYMBOL                                     *
*                                                                     *
*ENTRY POINT-                                                         *
         ENTRY &NM.01                                                 *
*                                                                     *
*INPUT-                                                               *
*        REGISTERS-                                                   *
*             R5-       REGISTER CONTAINING THE ADDRESS OF THE FIRST  *
*                       CHARACTER OF THE EXPRESSION TO BE EVALUATED   *
*        PARAMETERS-                                                  *
*             SELFDEFN- A BYTE IN STORAGE, WHEN SET TO ZERO, CAUSES   *
*                       ONE DECIMAL SELF-DEFINING TERM TO BE          *
*                       CONVERTED ONLY                                *
*             ELCTR-    A FULLWORD IN STORAGE CONTAINING THE VALUE OF *
*                       THE CURRENT LOCATION COUNTER                  *
*             EESDI-    A HALFWORD IN STORAGE CONTAINING THE CURRENT  *
*                       ESDID                                         *
*             CLCLNG-   A HALFWORD IN STORAGE CONTAINING THE LENGTH   *
*                       ATTRIBUTE OF THE CURRENT LOCATION COUNTER     *
*             SUBLIST-  A BIT IN STORAGE, WHEN SET TO ONE, INDICATES  *
*                       THAT THE LOGICAL END OF THE EXPRESSION IS     *
*                       WHEN THE PARENTHESES LEVEL GOES FROM ONE TO   *
*                       ZERO                                          *
*                                                                     *
*OUTPUT-                                                              *
*        CONDITION CODE SETTING-                                      *
*             0-        VALUE OF THE EXPRESSION IS ABSOLUTE           *
*             1-        IF 'EVALSW1' IS 0, VALUE OF THE EXPRESSION IS *
*                       COMPLEXLY RELOCATABLE.  IF 'EVALSW1' IS NOT   *
*                       0, ONE OR MORE NON-SYNTACTIC ERROR WAS        *
*                       ENCOUNTERED IN THE EVALUATION.                *
*             2-        VALUE OF THE EXPRESSION IS SIMPLY RELOCATABLE *
*             3-        A SYNTATIC ERROR WAS ENCOUNTERED              *
*        REGISTERS-                                                   *
*             R10-      REGISTER CONTAINING THE ESDID OF THE          *
*                       EXPRESSION, IF THE VALUE OF THE EXPRESSION IS *
*                       ABSOLUTE OR SIMPLY RELOCATABLE.  THE ESDID IN *
*                       COMPLEMENT FORM, IF THE VALUE OF THE          *
*                       EXPRESSION IS COMPLEXLY RELOCATABLE WITH ONLY *
*                       ONE RELOCATION FACTOR.                        *
*             R11-      REGISTER CONTAINING THE VALUE OF THE          *
*                       EXPRESSION                                    *
*             R14-      REGISTER CONTAINING THE ADDRESS OF THE FIRST  *
*                       CHARACTER FOLLOWING THE CHARACTER WHICH       *
*                       LOGICALLY TERMINATED THE EXPRESSION           *
*        PARAMETERS-                                                  *
*             IMPLNG-   A HALFWORD IN STORAGE CONTAINING THE LENGTH   *
*                       ATTRIBUTE OF THE EXPRESSION                   *
*             LOCCTREF- A BIT IN STORAGE, WHEN SET TO ONE, INDICATES  *
*                       THAT AT LEAST ONE LOCATION COUNTER REFERENCE  *
*                       HAD BEEN MADE                                 *
*             RELOCTR-  A BYTE IN  STORAGE CONTAINING THE NUMBER OF   *
*                       ESDID(S) ASSOOCIATED WITH THE VALUE OF THE    *
*                       EXPRESSION                                    *
*             RLIST-    A LIST OF HALFWORDS IN STORAGE CONTAINING     *
*                       THE ESDID(S) ASSOCIATED WITH THE VALUE OF THE *
*                       EXPRESSION, THE ESDID IS STORED IN COMPLEMENT *
*                       FORM IF THE RELOCATION FACTOR IS APPLIED      *
*                       NEGATIVLY.                                    *
*                                                                     *
*EXITS, NORMAL-                                                       *
*        EXITS TO THE CALLER.                                         *
*                                                                     *
*EXITS, ERROR-                                                        *
*        EXITS TO THE CALLER.                                         *
*                                                                     *
*TABLES/WORK AREAS-                                                   *
*        EVALWORK-                                                    *
*        OPRNS-    UP TO 20 ENTRIES OF ONE BYTE EACH, AN ENTRY IS     *
*                  MADE FOR EACH OPERATOR ENCOUNTERED.                *
*        RLIST-    UP TO 20 ENTRIES OF ONE HALFWORD EACH, AN ENTRY IS *
*                  MADE FOR THE ESDID OF EACH TERM ENCOUNTERED.       *
*        TERMS-    UP TO 15 ENTRIES OF TWO FULLWORDS EACH, AN ENTRY   *
*                  IS MADE FOR EACH TERM ENCOUNTERED.                 *
*                                                                     *
*ATTRIBUTES-                                                          *
*        REFRESHABLE.                                                 *
*                                                                     *
*NOTES-                                                               *
*                                                                     *
         EJECT
         COPY  JCOMMON
         AIF   ('&ID' NE 'X4V').NOTX4V
         EJECT
         COPY  ICOMMON
         EJECT
&NM.00   CSECT
* VS1 REL 2.6 CHANGES
*A585500-585900                                                 OX00106
* VS1 RELEASE 3.1 CHANGES
*C643000,645000                                                 OX02675
         JMODID
         USING &NM.01,R8                BASE REGISTER
&NM.01   BALR  R14,R7                   SAVE REGISTERS
         LR    R8,R12                   BASE REGISTER
         AGO   .X4V
.NOTX4V  EJECT
         COPY  X5COM
         EJECT
DSECT10  DSECT
         COPY  RSYMRCD
         EJECT
         COPY  BMDSECTS                 GET POST PROCESSOR RECORD DSECT
         EJECT
         COPY  JERMSGCD                 DEFINE ERROR CODES AND SEVERITY
         EJECT
* VS1 RELEASE 3.1 CHANGES
*C625000,631000                                                 OX02953
*C648000                                                       @OY08064
*A648100-648200                                                @OY08064
*A589100,589200                                                @VM05316
&NM.00   CSECT
         JMODID
&NM.01   JSAVE
EVAL     EQU   &NM.01                   LABEL
         USING DSECT2,R2
         USING DSECT3,R3
         USING JTEXT,R4
         USING DSECT5,R5
         USING X5COM,R7
         USING DSECT10,R11              DEFINITION FILE USING
         USING DSECT14,R14
         LR    R5,R10                   INPUT COLUMN POINTER
.X4V     XC    EVALWORK,EVALWORK        INITIALIZE WORK AREA
         LM    R2,R4,EVALREGS           INITIAL SETTING OF REGISTERS
         SPACE
*                        SCAN EXPRESSION                              *
         SPACE
SCAN     ST    R5,ERRPTR                SAVE FOR ERROR DIAGNOSTICS
         AIF   ('&ID' EQ 'X5V').X5V1
         CLI   CHAR1,JBLANK             SEE IF A BLANK
         BH    SYNTAXER                 ILLEGAL CHARACTER IN EXPRESSION
         CLI   CHAR1,JEQUAL             SEE IF AN EQUAL SIGN
         BE    SYNTAXER                 ILLEGAL CHARACTER IN EXPRESSION
         AGO   .X4V1
.X5V1    CLI   CHAR1,JBLANK             SEE IF A BLANK
         BH    SYNERR1                  ILLEGAL CHARACTER IN EXPRESSION
         CLI   CHAR1,JEQUAL             SEE IF AN EQUAL SIGN
         BE    SYNERR1                  ILLEGAL CHARACTER IN EXPRESSION
.X4V1    ANOP
         BL    ALPHANUM                 TERM
         SPACE
*                        GO TO SPECIAL CHARACTER HANDLING             *
         SPACE
         SR    R14,R14                  ZERO REGISTER FOR INDEX
         IC    R14,CHAR1                GET NEXT CHARACTER
         STC   R14,NEWOP                ENTER IN OPERATOR STACK
         IC    R14,GOTOTBL-JLPARN(R14)  INDEXED ADDRESS FETCH
         GOIF  STATUS1,ELSE=GOTO(R14)   GO TO ROUTINE, PASS STATUS
         EJECT
*                        (1)  PLUS OR MINUS SIGN                      *
         SPACE
GOTO     BH    BINARYOP           2/3 - BINARY OPERATOR
         SPACE
*                        (2)  UNARY OPERATOR                          *
         SPACE
         AIF   ('&ID' EQ 'X5V').X5V2
         GOIF  LNGQUOTE,ON=SYNTAXER     ILLEGAL L'ATTRIBUTE REFERENCE
         AGO   .X4V2
.X5V2    GOIF  LNGQUOTE,ON=SYNERR2      ILLEGAL L'ATTRIBUTE REFERENCE
.X4V2    ANOP
         GOIF  ADD1,EQUAL=CALC3   '+' - UNARY PLUS, IGNORE
         SET   UNY1               '-' - SET UNARY MINUS CODE
         GOIF  UNY0,EQUAL=CALC5,ELSE=CALC2   CHECK PREVIOUS OPERATOR
         SPACE
*                        (3)  SLASH                                   *
         SPACE
         AIF   ('&ID' EQ 'X5V').X5V3
SLASH    BNH   SYNTAXER           0/1 - TWO CONSECUTIVE OPERATORS
         AGO   .X4V3
.X5V3    ANOP
SLASH    BNH   SYNERR3            0/1 - TWO CONSECUTIVE OPERATORS
.X4V3    ANOP
         SPACE
*                        (4)  BINARY OPERATOR                         *
         SPACE
BINARYOP SET   STATUS1              1 - PLUS OR MINUS SIGN
         B     CALC1                    GO CALCULATE
         SPACE
*                        (5)  ASTERISK                                *
         SPACE
ASTERISK BH    BINARYOP             2 - MULTIPLICATION SIGN
         SPACE
*                        (6)  LOCATION COUNTER REFERENCE              *
         SPACE
         SET   LOCTREF,ON               LOCATION COUNTER REFERENCED
         LA    R5,CHAR2                 ADVANCE COLUMN POINTER
         GOIF  LNGQUOTE,ON=LOCCTR1      SEE IF LENGTH ATTRIBUTE
         SPACE
*                        (7)  LOCATION COUNTER                        *
         SPACE
         SET   DLOCTREF,ON              LOCATION COUNTER REFERENCED
         LH    R15,CLCLNG               LENGTH ATTRIBUTE
         AIF   ('&ID' NE 'X4V').X5V41
         LH    R0,EESDI                 CURRENT ESDID
         L     R1,ELCTR                 CURRENT LOCATION COUNTER
         B     CLEANUP1                 GO TO CLEANUP
         AGO   .X4X5V
.X5V41   GOIF  LITRSW,ON=SKIPLITR       BRANCH AROUND IF NOT PROC. LITR
         LH    R0,EESDI                 GET CURRENT ESDID
         L     R1,ELCTR                 GET CURRENT LOCATION CTR
         B     CLEANUP1                 GO TO CLEANUP
SKIPLITR EQU   *                        BRANCH LABEL
         LH    R0,LITRSD                GET LITR ESDID
         L     R1,LITRLC                GET LITR LOCATION CTR
         B     CLEANUP1                 GO TO CLEANUP
.X4X5V   ANOP
         SPACE
*                        (8)  L - QUOTE ASTERISK                      *
         SPACE
LOCCTR1  LH    R1,CLCLNG                GET CURRENT LOCATION LENGTH
         B     ABSOLUTE                 CLEANUP
         SPACE
*                        (9)  LEFT PARENTHESIS                        *
         SPACE
LFPAREN  BH    BLANK1             2/3 - MAY BE END OF EXPRESSION
         AIF   ('&ID' EQ 'X5V').X5V4
         GOIF  MAXPARN,NOTLOW=SYNTAXER  TOO MMNY LEVELS OF PARENS
         AGO   .X4V4
.X5V4    GOIF  MAXPARN,NOTLOW=SYNERR4   TOO MANY LEVELS OF PARENS
.X4V4    ANOP
         LH    R14,PARENCNT             GET PARENTHESES COUNT
         LA    R14,D1(,R14)             BUMP IT BY ONE
         STH   R14,PARENCNT             AND SAVE
         B     CALC2                    EXIT
         SPACE
*                        (10) RIGHT PARENTHESIS                       *
         SPACE
         AIF   ('&ID' EQ 'X5V').X5V5
RTPAREN  BNH   SYNTAXER           0/1 - INVALID SYNTAX
         AGO   .X4V5
.X5V5    ANOP
RTPAREN  BNH   SYNERR6            0/1 - INVALID SYNTAX
.X4V5    ANOP
         GOIF  NOPAREN,EQUAL=BLANK2,ELSE=CALC     MAY BE END OF OPERAND
         SPACE
*                        (11) BLANK OR COMMA                          *
         SPACE
         AIF   ('&ID' EQ 'X5V').X5V6
BLANK    BNH   SYNTAXER           0/1 - PREMATURE END OF EXPRESSION
BLANK1   GOIF  NOPAREN,HIGH=SYNTAXER    UNBALENCED PARENTHESES
         AGO   .X4V6
.X5V6    ANOP
BLANK    BNH   SYNERR6                  PREMATURE END OF EXPRESSION
BLANK1   GOIF  NOPAREN,HIGH=SYNERR6     OR UNBALANCED PARENTHESIS
.X4V6    ANOP
BLANK2   SET   ENDOFEXP,ON              SET END-OF-EXPRESSION INDICATOR
         EJECT
*                        ARITHMETIC CALCULATION                       *
         SPACE
CALC     SET   DEL1                     FORCE COMPUTATION
CALC1    CL    R4,AOPTR                 READY TO GO TO WORK
         BH    CALC6                    YEAH
         GOIF  ENDOFEXP,ON=FINIS1       LEAVE IF FINISHED
CALC2    LA    R4,NEWOP                 BUMP OPERATOR STACK POINTER
CALC3    LA    R5,CHAR2                 POINT TO NEXT CHARACTER
         B     SCAN                     LOOK FOR NEXT TERM OR OPERATOR
CALC4    GOIF  DEL0,HIGH=WORK           GO TO WORK
         LH    R14,PARENCNT             GET PARENTHESES LEVEL
         BCT   R14,CALC41               SEE IF WITHOUT
         GOIF  SUBLIST,ON=FINIS         PROCESSING MODIFIER EXPRESSIONS
CALC41   STH   R14,PARENCNT             SAVE PARENTHESES LEVEL COUNTER
CALC5    BCTR  R4,0                     POP OPERATOR STACK
         B     CALC3                    GO SCAN SOME MORE
CALC6    CLC   NEWOP,OLDOP              DO WE HAVE TO GO
         BNH   CALC4                    MAYBE NOT
         SPACE
*                        REDUCE HIERARCHY TO THREE LEVELS             *
         SPACE
         GOIF  SUB1,NOTEQ=CALC7   '-' - SUBTRACTION
         GOIF  ADD0,EQUAL=WORK    '+' - ADDITION
CALC7    GOIF  DIV1,NOTEQ=CALC2   '/' - DIVISION
         GOIF  MUL0,NOTEQ=CALC2   '*' - MULTIPLICATION
         SPACE
*                        PERFORM ARITHMETIC OPERATION ON LAST 2 TERMS *
         SPACE
WORK     LA    R14,TERM2+L'TERM2-TERM1CNT    GET LENGTH OF TWO TERMS
         SR    R2,R14                   POINT TO FIRST OF TWO TERMS
         L     R1,TERM2                 GET THE SECOND TERM
         LR    R11,R3                   SAVE POINTER
         LR    R10,R3                   SAVE POINTER
         SH    R3,TERM2CNT+2            POINT TO BEGINNING FOR RLIST2
         LR    R15,R3                   SAVE POINTER
         GOIF  UNY0,EQUAL=UNARY         UNARY
         LR    R0,R3                    SAVE
         SH    R3,TERM1CNT+2            POINT TO BEGINNING OF RLIST1
         SR    R11,R3                   GET LENGTH OF ENTIRE LIST
         STH   R11,TERM1CNT+2           FOR NEW LENGTH
         GOIF  SUB0,HIGH=MULTDIV,EQUAL=SUBTRACT   +,- VS *,/
         SPACE
*                        ADJUST RELOCATION INFORMATION                *
         SPACE
RELOC    LH    R11,ESDID                GET NEXT ESDID FROM RLIST
         GOIF  (R11),ZERO=RELOC4        SKIP TEST IF ZERO
         AH    R11,ESDID-ESDID(,R15)    SEE IF MATCH FOUND
         BZ    RELOC2                   THIS PAIR CANCELS
RELOC1   LA    R15,NEXTESD-ESDID(,R15)  POINT TO NEXT ESDID IN RLIST2
         GOIF  (R15),(R10),NOTEQ=RELOC,ELSE=RELOC3     END OF LIST
RELOC2   STH   R11,ESDID                INDICATE CANCELLED
         STH   R11,ESDID-ESDID(,R15)    INDICATE CANCELLED
         IC    R15,RELOCTR              GET COUNT OF RELOCATABLE TERMS
         BCTR  R15,0                    DECREMENT COUNT BY 2
         BCTR  R15,0                    X
         STC   R15,RELOCTR              SAVE
RELOC3   LR    R15,R0                   POINT TO BEGINNING OF RLIST2
RELOC4   LA    R3,NEXTESD               POINT TO NEXT ESDID IN RLIST1
         GOIF  (R3),(R0),NOTEQ=RELOC    END OF LIST
         SPACE
*                        ADDITION                                     *
         SPACE
         A     R1,TERM1                 ADD THE TWO TERMS
         BNO   STORE                    GO IF NO OVERFLOW
OVERFLOW SET   OVERFLO,ON               SET OVERFLOW BIT
         AIF   ('&ID' NE 'X5V').X4VO
         X5ERRL 235,CLMPTR              ARITHMETIC OVERFLOW
.X4VO    ANOP
STORE    ST    R1,TERM1                 STORE RESULT
         LA    R2,TERM2CNT              POINT TO NEXT TERM ENTRY SPACE
         LR    R3,R10                   POINT TO NEXT RLIST ENTRY SPACE
         MVC   OLDOP,NEWOP              REDUCE STACK
         BCTR  R4,0                     DECREMENT OPERATOR STACK
         B     CALC1                    ALL DONE FOR NOW
         SPACE
*                        MULTIPLICATION OR DIVISION                   *
         SPACE
MULTDIV  BCTR  R11,0                    GET MACHINE LENGTH
         EX    R11,ABSCHECK             ABSCHECK NC    ESDID(0),ESDID
         BZ    MULTDIV1                 NO RELOCATABLE TERMS
         SET   RELOCER,ON               RELOCATABLE TERM IN OPERATION
         AIF   ('&ID' NE 'X5V').X4VR
         X5ERRL 217,CLMPTR              RELOCATION ERROR
.X4VR    ANOP
MULTDIV1 GOIF  (R1),ZERO=STORE          RESULT IS ZERO IF TERM2 IS ZERO
         L     R14,TERM1                GET FIRST TERM
         SRDA  R14,32                   PROPAGATE SIGN
         GOIF  MUL0,EQUAL=MULTIPLY      MULTIPLICATION OR DIVISION
         SPACE
*                        DIVISION                                     *
         SPACE
         DR    R14,R1                   DIVISION
         LR    R1,R15                   PASS RESULT
         B     STORE                    STORE RESULT
         SPACE
*                        MULTIPLICATION                               *
         SPACE
MULTIPLY MR    R14,R1                   PERFORM MULTIPLICATION
         LTR   R1,R15                   TEST AND PASS RESULT
         BNL   SIGNCHK                  SKIP COMPLEMENT IF POSITIVE
         LCR   R14,R14                  COMPLEMENT
         BCTR  R14,0                    MAKE ZERO
SIGNCHK  GOIF  (R14),ZERO=STORE,NOTZERO=OVERFLOW  TEST FOR OVERFLOW
         EJECT
*                        SUBTRACTION                                  *
         SPACE
UNARY    LA    R2,TERM2CNT              GOT NOTHING TO DO WITH TERM 1
SUBTRACT LCR   R1,R1                    COMPLEMENT TERM2
         BO    OVERFLOW                 CHECK FOR OVERFLOW
LESS     LH    R11,ESDID-ESDID(,R15)    GET NEXT ESDID FROM RLIST2
         LCR   R11,R11                  COMPLEMENT IT
         STH   R11,ESDID-ESDID(,R15)    AND PUT IT BACK
         LA    R15,NEXTESD-ESDID(,R15)  CONTINUE WITH REST OF RLIST2
         GOIF  (R15),(R10),LOW=LESS     NOT DONE YET
         LR    R15,R0                   RESTORE TO BEGINNING OF RLIST2
         GOIF  UNY0,NOTEQ=RELOC,ELSE=STORE   ALL DONE IF UNARY
         SPACE
*                        CHECK FOR SELF DEFINING VALUES               *
         SPACE
ALPHANUM GOIF  STATUS1,HIGH=BLANK1      MAY BE END OF EXPRESSION
         CLI   CHAR1,JA                 SEE IF CHARACTER 'A'
         BL    DECIMAL            0-9 - DECIMAL SELF DEFINING VALUE
         LR    R14,R5                   SAVE COLUMN POINTER
         CLI   CHAR2,JQUOTE             IS NEXT CHARACTER A '
         BNE   SYM                      MAYBE WE'VE HIT UPON A SYMBOL
         AIF   ('&ID' EQ 'X5V').X5V7
         GOIF  LNGQUOTE,ON=SYNTAXER     L' FOLLOWED BY ANYTHING IS BAD
         AGO   .X4V7
.X5V7    GOIF  LNGQUOTE,ON=SYNERR2      INVALID LENGTH ATTR REFERENCE
.X4V7    ANOP
         LA    R5,CHAR3                 ADVANCE COLUMN POINTER
         GOIF  BQUOTE,EQUAL=BINARY      PROCESS IF BINARY TYPE
         GOIF  CQUOTE,EQUAL=CHARACTR    PROCESS IF CHARACTER TYPE
         GOIF  XQUOTE,EQUAL=HEXADEC     PROCESS IF HEXADECIMAL TYPE
         AIF   ('&ID' EQ 'X5V').X5V8
         GOIF  LQUOTE,NOTEQ=SYNTAXER    ILLEGAL CHARACTER IN EXPRESSION
         AGO   .X4V8
.X5V8    GOIF  LQUOTE,NOTEQ=SYNERR1     ILLEGAL CHARACTER IN EXPRESSION
.X4V8    ANOP
         SET   LNGQUOTE,ON              INDICATE ATTRIBUTE REFERENCE
         B     SCAN                     LOOK FOR SYMBOL
         EJECT
*                        DECIMAL SELF-DEFINING VALUE                  *
         SPACE
DECOFLO  SET   SDVSIZE,ON               SELF DEFINING VALUE TOO LARGE
         AIF   ('&ID' EQ 'X5V').X5V9
DECIMAL  GOIF  LNGQUOTE,ON=SYNTAXER     DECIMAL AFTER L' ISN'T KOSHER
         AGO   .X4V9
.X5V9    ANOP
         X5ERRL 235,CLMPTR              OVERFLOW ERROR
DECIMAL  GOIF  LNGQUOTE,ON=SYNERR2      INVALID LENGTH ATTR REFERENCE
.X4V9    ANOP
         SR    R1,R1                    SR    R1,R1
         LR    R0,R1                    ZERO DIGIT VALUE
         LR    R10,R1                   ZERO DIGIT COUNT
         LA    R15,MAXDEC               GET MAXIMUM DIGIT COUNT
DECIMAL1 CLI   CHAR1,J9                 SEE IF CHARACTER '9'
         BH    DIGITCHK                 NOT NUMERIC
         LA    R10,D1(,R10)             COUNT DIGIT
         LR    R14,R1                   SAVE CURRENT TOTAL
         SLA   R1,3                     MULTIPLY BY EIGHT
         BO    DECOFLO                  OVERFLOW ONE FULLWORD
         IC    R0,CHAR1                 GET DIGIT
         AR    R14,R14                  DOUBLE
         AR    R14,R0                   PLUS NEXT DIGIT
         AR    R1,R14                   GRAND TOTAL
         BO    DECOFLO                  SELF DEFINING VALUE TOO LARGE
         LA    R5,CHAR2                 POINT TO NEXT DIGIT
         B     DECIMAL1                 GO SOME MORE
         SPACE
*                        BINARY SELF-DEFINING VALUE                   *
         SPACE
BINARY   LA    R14,SHIFTB               GET BINARY SHIFT VALUE
         GOTO  SDVEVAL                  GO EVALUATE SELF DEFINING TERM
         LA    R15,MAXBIT               GET MAXIMUM NUMBER OF BITS
         B     DELIMCHK                 PERFORM VALIDITY TESTS
         SPACE
*                        CHARACTER SELF-DEFINING VALUE                *
         SPACE
CHARACTR LA    R14,SHIFTC               GET CHARACTER SHIFT VALUE
         GOTO  SDVEVAL                  GO EVALUATE SELF DEFINING TERM
         LA    R15,MAXCHAR              GET MAXIMUM NUMBER OF CHARACTER
         ST    R1,JFWORD1               PUT VALUE IN STORAGE
         TR    JFWORD1,JTRTABLE         TRANSLATE TO EBCDIC
         L     R1,JFWORD1               PASS RESULT IN REGISTER
         B     DELIMCHK                 PERFORM VALIDITY TESTS
         SPACE
*                        HEXADECIMAL SELF-DEFINING VALUE              *
         SPACE
HEXADEC  LA    R14,SHIFTH               GET HEXADECIMAL SHIFT VALUE
         GOTO  SDVEVAL                  GO EVALUATE SELF DEFINING TERM
         LA    R15,MAXHEX               GET MAXIMUM NUMBER OF HEX DIGIT
         EJECT
*                        VALIDITY TESTS                               *
         SPACE
         AIF   ('&ID' EQ 'X5V').X5V10
DELIMCHK CLI   CHAR1,JQUOTE             SEE IF CHARACTER '''
         BNE   SYNTAXER                 INVALID DELIMITER
         AGO   .X4V10
.X5V10   ANOP
DELIMCHK CLI   CHAR1,JQUOTE             SEE IF CHARACTER '''
         BNE   SYNERR8                  INVALID DELIMITER
.X4V10   ANOP
         LA    R5,CHAR2                 ADVANCE COLUMN POINTER
         GOIF  (R10),ZERO=EMPTYSDV      NULL BETWEEN QUOTES
DIGITCHK GOIF  (R10),(R15),NOTHIGH=ABSOLUTE  CHECK FOR MAXIMUM DIGITS
EMPTYSDV SET   SDVSIZE,ON               ERROR
         AIF   ('&ID' NE 'X5V').X4V16
         X5ERRL 169,CLMPTR              INVALID SELF-DEFINING TERM
.X4V16   ANOP
ABSOLUTE SR    R0,R0                    ESDID
         SET   LNGQUOTE,OFF             NOT APPLICABLE FROM NOW ON
         SPACE
*                        CLEANUP                                      *
         SPACE
CLEANUP  LA    R15,D1                   LENGTH ATTRIBUTE OF TERM
CLEANUP1 CL    R3,EVALREGS              SEE IF MAXIMUM TERMS
         AIF   ('&ID' EQ 'X5V').X5V11
         BNL   SYNTAXER                 OF 20 EXCEEDED
         AGO   .X4V11
.X5V11   BNL   SYNERR9                  TOO MANY TERMS
.X4V11   ANOP
         STH   R0,ESDID                 SAVE ESDID
         ST    R1,TERM1                 VALUE TO TERM1
         MVI   TERM1CNT+D3,L'RLIST      COUNT IS LENGTH OF ONE ENTRY
         LA    R2,TERM2CNT              ADVANCE POINTER TO NEXT ENTRY
         LA    R3,NEXTESD               ADVANCE POINTER TO NEXT ENTRY
         SET   STATUS2              2 - TERM
         GOIF  (R0),ZERO=CLEANUP2       SEE IF ABSOLUTE TERM
         IC    R14,RELOCTR              GET COUNT OF RELOCATABLE TERMS
         LA    R14,1(,R14)              BUMP THE COUNT BY 1
         STC   R14,RELOCTR              SAVE THE COUNT
CLEANUP2 TS    FIRST                    SEE IF THIS IS THE FIRST TERM
         BNZ   SCAN                     GO ON IF NOT
         STH   R15,IMPLNG               LENGTH ATTRIBUTE OF EXPRESSION
         TS    SELFDEFN                 SDV EXPECTED
         BNZ   SCAN                     NOT PARTICULAR, GO ON
         B     FINIS1                   YES, MY JOB IS DONE
         EJECT
*                        SELF-DEFINING VALUE EVALUATION               *
         SPACE
SDVEVAL  STC   R14,SHIFTN               SAVE SHIFT VALUE
         IC    R11,SDVLIMIT-D1(R14)     GET VALID HIGH LIMIT
         SR    R15,R15                  ZERO REGISTERS
         LR    R10,R15                  ZERO DIGIT COUNTER
         LR    R1,R15                   ZERO ACCUMULATOR
         GOIF  SHIFTC,NOTEQ=SDVEVAL1    SHIFT
         L     R1,BCDZEROS              GET EXTERNAL ZEROS
SDVEVAL1 EX    R11,CHAR1CLI             CLI   CHAR1,0
         BHR   R9                       EXIT ON HIGH
         IC    R15,CHAR1                GET NEXT CHARACTER
         GOIF  SHIFTC,NOTEQ=SDVEVAL4    CHARACTER SELF DEFINING TERM
         CLI   CHAR1,JQUOTE             SEE IF CHARACTER '''
         BNE   SDVEVAL2                 NO, SEE IF CHARACTER '&'
         CLI   CHAR2,JQUOTE             SEE IF CHARACTER ''''
         BE    SDVEVAL3                 YES, TREAT AS ONE
         BR    R9                       OR ELSE IT COULD BE END OF TERM
SDVEVAL2 CLI   CHAR1,JAMPER             SEE IF CHARACTER '&'
         BNE   SDVEVAL4                 NO, JUST ANY OTHER CHARACTER
         AIF   ('&ID' EQ 'X5V').X5V12
         CLI   CHAR2,JAMPER             SEE IF CHARACTER '&&'
         BNE   SYNTAXER                 NO, ILLEGAL USE OF AMPERSAND
         AGO   .X4V12
.X5V12   CLI   CHAR2,JAMPER             SEE IF CHARACTER '&&'
         BNE   SYNERR10                 NO, ILLEGAL USE OF AMPERSAND
.X4V12   ANOP
SDVEVAL3 LA    R5,CHAR2                 ADVANCE COLUMN POINTER
SDVEVAL4 SLL   R1,D0(R14)               SHIFT BY SPECIFIED VALUE
         ALR   R1,R15                   ADD TO ACCUMULATOR
         LA    R10,D1(,R10)             KEEP COUNT OF DIGITS
         LA    R5,CHAR2                 POINT TO NEXT CHARACTER
         B     SDVEVAL1                 LOOP
         SPACE
*                        SYNTAX ERROR IN EXPRESSION                   *
         SPACE
SYNTAXER SET   FATALER,ON               SYNTAX ERRORS ARE FATAL
         EJECT
*                        SET RETURN CONDITION CODE                    *
         SPACE
FINIS    LA    R5,CHAR2                 POINT PAST CHARACTER
FINIS1   L     R11,TERMS+TERM1-TERM1CNT PASS RESULT IN PARAMETER REG
         SET   (SUBLIST,DCOP),OFF       RESET
         TS    SELFDEFN                 RESET
         SR    R10,R10                  ABSOLUTE TERM IF EVALUATION ERR
         GOIF  FATALER,ON=FINIS3    3 - SYNTAX ERROR
         TM    EVALSW1,BITFF            ANY ERROR IN EXPRESSION
         BM    FINIS3               1 - ERROR IN EXPRESSION
         GOIF  NORELOC,EQUAL=FINIS3 0 - ABSOLUTE EXPRESSION
         TM    RELOCTR,BITFF-1          MORE THAN ONE RELOCATABLE TERM
         BM    FINIS3                   NO, COMPLEXLY RELOCATABLE
         LA    R3,RLIST-L'RLIST         START AT HEAD OF LIST
FINIS2   LA    R3,NEXTESD               POINT TO NEXT ITEM
         LH    R10,ESDID                PICK IT UP
         GOIF  (R10),ZERO=FINIS2    0 - NOT RELOCATABLE TERM
         SPACE
*NOTES-  WHEN THE ONE AND ONLY RELOCATABLE TERM IS FOUND, WHETHER IT  *
*   IS SIMPLY OR COMPLEXLY RELOCATABLE, IT WILL FALL THROUGH THIS     *
*   POINT AND RETURN TO THE CALLER WITH THE PROPER CONDITION CODE     *
*   SETTING.                                                          *
         SPACE
FINIS3   LR    R14,R5                   RETURN COLUMN POINTER
         B     EXIT                     EXIT
         EJECT
*                        SPECIAL CHARACTER GO TO TABLE                *
         SPACE
GOTOTBL  EQU   *                        ORIGIN OF GO-TO TABLE
         DC    YL1(LFPAREN-GOTO)              ( - LEFT PARENTHESIS
         DC    YL1(PLUS-GOTO)                 + - PLUS SIGN
         DC    YL1(MINUS-GOTO)                - - MINUS SIGN
         DC    YL1(ASTERISK-GOTO)             * - ASTERISK
         DC    YL1(SLASH-GOTO)                / - SLASH
         DC    YL1(RTPAREN-GOTO)              ) - RIGHT PARENTHESIS
         DC    YL1(COMMA-GOTO)                , - COMMA
         DC    YL1(BLANK-GOTO)                  - BLANK
         SPACE
PLUS     EQU   GOTO                     X
MINUS    EQU   GOTO                     X
COMMA    EQU   BLANK                    X
         SPACE
*                        CONSTANTS                                    *
         SPACE
         LTORG
BCDZEROS DC    C'0000'                  PAD
ABSCHECK NC    ESDID(0),ESDID           EXECUTED INSTRUCTION
CHAR1CLI CLI   CHAR1,D0                 EXECUTED INSTRUCTION
SDVLIMIT DC    X'0100000F000000FF'      LIMITS OF VALID CHARACTERS FOR-
*                /     /       /............ CHARACTER
*               /     /..................... HEXADECIMAL
*              /............................ BINARY
         EJECT
*                        LOOKUP SYMBOL                                *
         SPACE
DEFNERR  SET   NOTDEFN,ON               UNDEFINED SYMBOL
         SR    R1,R1                    DEFAULT VALUE TO ZERO
         B     ABSOLUTE                 GO ON
SYM      LA    R5,CHAR2                 POINT TO NEXT CHARACTER
         CLI   CHAR1,JEQUAL             SEE IF ALPHAMERIC
         BL    SYM                      LOOK FOR DELIMITER
         LR    R15,R5                   GET ADDRESS OF DELIMITER
         SR    R15,R14                  MINUS FIRST CHARACTER ADDRESS
         BCTR  R15,D0                   YIELD LENGTH OF SYMBOL
         CH    R15,=H'7'                SYMBOL TOO LONG
         AIF   ('&ID' NE 'X4V').NOTX4V1
         BH    SYNTAXER                 SYMBOL LENGTH GREATER THAN 8
         MVC   XNAME,=8AL1(JBLANK)      PAD
         EX    R15,NAMEMOVE             PASS SYMBOL
         GOIF  DCOP,OFF=SYM0            SKIP IF NOT DC
         LH    R14,SYMCOUNT             GET SYMBOL COUNT
         LA    R14,D1(,R14)             INCREMENT IT BY 1
         STH   R14,SYMCOUNT             SAVE
         GOIF  LTORGSCN,OFF=SYM0        SKIP IF NOT PROCESSING LTORG
         GOTO  REFER                    GO GENERATE A REFERENCE RECORD
SYM0     LA    R10,XWORK                ADDRESS OF SYMBOL
         GOTO  FIND                     LOOKUP IN SYMBOL TABLE
         BNZ   SYM2                     NOT FOUND
         GOIF  ESW,OFF=SYM05            CHECK EXTRN/EQU FLAG    OX00106
         LA    R10,XWORK                MAKE SURE R10 POINTS OK OX00106
         OI    XESDI-XWORK(R10),ESW     TRANSFER EXTRN/EQU FLAG OX00106
SYM05    EQU   *                                                OX00106
         GOIF  ENTRYSW,ON=DEFNERR       NOT DEFINED
         LA    R1,D1                    LENGTH ATTRIBUTE
         GOIF  ESDNRSW,ON=SYM1          FOR EXTERNAL SYMBOLS
         LH    R1,SLNGQ                 LENGTH ATTRIBUTE FOR OTHERS
         SLL   R1,16                    MAY BE A 16 BIT        @VM05316
         SRL   R1,16                    POSITIVE NUMBER        @VM05316
SYM1     GOIF  LNGQUOTE,ON=SYM4         LENGTH ATTRIBUTE REFERENCE
         LR    R15,R1                   PASS LENGTH ATTRIBUTE
         LH    R0,SESDI                 ESDID
         L     R1,SLCTR                 VALUE
         B     CLEANUP1                 CLEANUP
SYM4     GOIF  LNGDEF,OFF=ABSOLUTE      ILLEGAL LENGTH ATTRIBUTE
SYM2     GOIF  LTORGSCN,ON=DEFNERR      UNDEFINED
         GOIF  IOFLO,OFF=DEFNERR        UNDEFINED
         GOIF  INOTE,OFF=SYM5           SEE IF REWIND NECESSARY
         LH    R10,JINFILE              INPUT FILE ADDRESS
         JPOINT  FILE=(R10),ADDR=INOTEVAL,NEXT=GET     REPOSITION FILE
SYM5     LH    R10,JINFILE              GET INPUT FILE ADDRESS
         JGETL FILE=(R10)               READ NEXT RECORD
         GOIF  INOTE,ON=SYM6            SEE IF ALREADY NOTED
         SET   INOTE,ON                 INDICATE FILE NOTED
         ST    R11,INOTEVAL             SAVE RECORD POINTER
         LH    R10,JINFILE              GET INPUT FILE ADDRESS
         JNOTE FILE=(R10)               NOTE FILE POSITION
         L     R11,INOTEVAL             GET RECORD POINTER
         MVC   INOTEVAL,JNOTEVAL        SAVE NOTED ADDRESS
SYM6     CLC   XNAME,XNAME-XWORK(R11)   SEE IF CORRESPONDING RECORD
         BNE   SYM5                     IF NOT, TRY AGAIN
SYM3     TM    XFLDI-XWORK(R11),DEFINED
DEFINED  EQU   BIT1
         BZ    DEFNERR                  UNDEFINED
         GOIF  LTCALL,OFF=SYM7          SEE IF PROCESSING LITERAL
         LR    R10,R11                  PASS TO ENTER
         ST    R10,JFWORD1              SAVE
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         L    R11,JFWORD1               RESTORE POINTER
SYM7     LH    R1,XLNGQ-XWORK(,R11)     LENGTH
         GOIF  LNGQUOTE,ON=ABSOLUTE     THAT'S ALL WE'RE INTERESTED IN
         LR    R15,R1                   LENGTH ATTRIBUTE
         LH    R0,XESDI-XWORK(,R11)     ESDID
         L     R1,XLCTR-XWORK(,R11)     VALUE
         B     CLEANUP1                 FINIS
NAMEMOVE MVC   XNAME(0),CHAR1-CHAR1(R14)     EXECUTED INSTRUCTION
         MEXIT
.NOTX4V1 BH    SYNERR1                  SYMBOL LENGTH > 8
         GOIF  (JXREF,JLIST),NOTALL=SYM01  CHECK IF CROSS-REFERENCE
         GOIF  XRFNO,OFF=SYM01          IS XREF TO BE MADE
         LH    R10,JOUTFILE             GET OUTPUT FILE NUMBER
         JPUTL FILE=(R10),BUFREQ=XRFND  GET BUFFER
         LR    R6,R11                   SAVE BUFFER POINTER
SYM01    EQU   *                        BRANCH LABEL
         LH    R10,JINFILE              GET FILE NUMBER
         JGETL FILE=(R10)               GET FROM FILE
         GOIF  NOTEWL,OFF=SYM02         SHOULD WE NOTE SYMBOL LOCATION
         ST    R11,JFWORD1              SAVE SYMBOL FILE PTR    OX02953
         SET   NOTEHS,ON                YES, FIRST SET POINT INDICATOR
         SET   NOTEWL,OFF               SET NOTE SWITCH OFF
         LH    R10,JINFILE              POINT INPUT FILE
         JNOTE FILE=(R10)               NOTE SYMBOL LOCATION FOR RESCAN
         MVC   NOTEVAL,JNOTEVAL         SAVE NOTE VALUE
         L     R11,JFWORD1              RESTORE SYMBOL FILE PTR OX02953
SYM02    EQU   *                        BRANCH LABEL
         USING XRFIN,R6                 CREATE
         GOIF  XRFNO,OFF=SYM03          XREF NECESSARY
         GOIF  (JXREF,JLIST),NOTALL=SYM03 !OTH OPTIONS MUST BE ON
         SET   JXREFCHK,ON              THEY ARE SET XREF SWITCH ON
         MVC   XRECLN(D6),=AL2(XRFND,0,XRFTYPE*256) CROSS REFERENCE
         MVC   XRFSYM,RNAME               RECORD
         MVI   XRFFLG,REF                   NAME, TYPE
         MVC   XRFSTM,STMTN+D2                AND STATEMENT NUMBER
SYM03    EQU   *                        BRANCH LABEL
         L     R6,SYMXRF                GET NUMBER  THUS FAR    OX02675
         LA    R6,D1(,R6)               ADD 1
         ST    R6,SYMXRF                SAVE NEW CNT THIS CARD  OX02675
         GOIF  (PRIORDEF,DEFINED),ALL=SYM1,NONE=SYMR1  IS IT DEFINED
         GOIF  PRDEFREQ,ON=SYMR2        PRIOR DEFINITION REQUIRED
SYM1     EQU   *                                               @OY08064
         GOIF  EQUF1,ON=SYNERR2         LENGTH ATTR ERROR      @OY08064
         XC    JFWORD1,JFWORD1          ALIGN LENGTH ATTR      @OY08064
         MVC   JFWORD1+D2(D2),RLNGQ     A FULLWORD AREA
         L     R1,JFWORD1               GET LENGTH ATTRIBUTE
         GOIF  LNGQUOTE,ON=ABSOLUTE     LENGTH ATTRIBUTE REFERENCE
         LR    R15,R1                   LENGTH ATTRIBUTE OF SYMBOL
         LH    R0,RESDI                 ESDID OF SYMBOL
         L     R1,RLCTR                 VALUE OF SYMBOL
         B     CLEANUP1                 GO BACK
SYNERR1  X5ERRL 236,CLMPTR,SYNTAXER     ILLEGAL CHARACTER
SYNERR2  X5ERRL 120,CLMPTR,SYNTAXER     INVALID LENGTH ATTR REFERENCE
SYNERR3  X5ERRL 170,CLMPTR,SYNTAXER     CONSECUTIVE OPERATOR
SYNERR4  X5ERRL 233,CLMPTR,SYNTAXER     TOO MANY LEVELS OF PARENS
SYNERR6  X5ERRL 234,CLMPTR,SYNTAXER     PREMATURE END OF EXPRESSION
SYNERR8  X5ERRL 240,0,SYNTAXER          MISSING QUOTE
SYNERR9  X5ERRL 168,0,SYNTAXER          TOO MANY TERMS
SYNERR10 X5ERRL 238,CLMPTR,SYNTAXER     ILLEGAL USE OF &
SYNERR11 X5ERRL 187,CLMPTR,SYNTAXER     SYMBOL LENGTH > 8
SYMR1    ST    R11,ERRPTR
         X5ERRL 188,DTAPTR,DEFNERR      UNDEFINED SYMBOL
         JEXTRN (X5L01=LOGERR)          DEFINE EXTERNAL SYMBOL
SYMR2    ST    R11,ERRPTR
         X5ERRL 231,DTAPTR,DEFNERR      SYMBOL NOT PREVIOUSLY DEFINED
EXIT     JRETURN
         MEND
./ ADD NAME=XFOUR
         MACRO
&ID      XFOUR &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1
         GBLC  &COMPNM                  COMPONENT NAME
         LCLC  &NM                      MODULE NAME
         JHEAD 'SYMBOL RESOLUTION PHASE MAIN LINE CONTROL',            ,
               PHASEID=&ID,                                            ,
               LEVEL=&LEVEL
&NM      SETC  '&COMPNM'.'&ID'
*TITLE-  ASSEMBLER SYMBOL RESOLUTION PHASE                            *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        RESOLVE SYMBOLS FOR THE ASSEMBLY PHASE                       *
*        GENERATE THE EXTERNAL SYMBOL DICTIONARY (ESD)                *
*        PUNCH RECORDS GENERATED BY 'PUNCH' AND 'REPRO' STATEMENTS    *
*   BEFORE THE ESD                                                    *
         AIF   ('&TESTRAN' NE 'YES').PCH
*        PUNCH TESTRAN RECORDS                                        *
.PCH     ANOP
*                                                                     *
*ENTRY POINT-                                                         *
         ENTRY &NM.01                                                 *
*                                                                     *
*INPUT-                                                               *
*        A FILE CREATED BY THE MACRO GENERATOR PHASE CONSISTING OF    *
*   THE FOLLOWING TYPES OF RECORDS-                                   *
*        (1)  RECORDS GENERATED BY 'PUNCH' AND 'REPRO' STATEMENTS     *
*             BEFORE THE ESD                                          *
*        (2)  SYMBOL DEFINITIONS                                      *
*        (3)  SYMBOL REFERENCES                                       *
*        (4)  LITERALS                                                *
*        (5)  ASSEMBLER OPERATIONS AFFECTING THE ESD OR STORAGE       *
*             ASSIGNMENT (START, CSECT, DSECT, COM, DXD, ENTRY,       *
*             EXTRN, WXTRN, EQU, ORG, LTORG, CNOP, DC, DS, END)       *
*                                                                     *
*OUTPUT-                                                              *
*        'PUNCH' AND 'REPRO'  RECORDS ON THE PUNCH FILES              *
*        THE ESD ON THE PRINT AND PUNCH FILES                         *
*        THE SYMBOL FILE TO THE ASSEMBLY PHASE                        *
         AIF   ('&TESTRAN' NE 'YES').PCH2
*        TESTRAN RECORDS TO THE PUNCH FILES                           *
.PCH2    ANOP
*                                                                     *
*EXTERNAL ROUTINES-                                                   *
         AIF   ('&TESTRAN' NE 'YES').EXTRN
         EXTRN &COMPNM.X4N01,&COMPNM.X4E01,&COMPNM.X4S01,&COMPNM.X4V01
         AGO   .EXTRN1
.EXTRN   EXTRN &COMPNM.X4D01,&COMPNM.X4E01,&COMPNM.X4S01,&COMPNM.X4V01
.EXTRN1  ANOP
*             BLDESD-    BUILD CONTROL SECTION ENTRY IN ESD           *
*             DCSCAN-    EVALUATE DC/DS OPERANDS AND LITERALS         *
*             XDSCAN-    EVALUATE DXD OPERANDS                        *
*             ENTRY-     PROCESS ENTRY POINT SYMBOL                   *
*             EVAL-      EVALUATE EXPRESSION                          *
*             EXTRN-     PROCESS EXTERNAL REFERENCE SYMBOL            *
*             FIND-      FIND AN ENTRY IN THE SYMBOL TABLE            *
*             GETESD-    GET AN ESD ENTRY                             *
*             MAKESD-    OUTPUT THE ESD                               *
*             SUBSET-    SUBSET THE SYMBOL TABLE                      *
*                                                                     *
*        ROUTINES IN THE CONTROLLER TO PERFORM INPUT/OUTPUT AND OTHER *
*   SYSTEM DEPENDENT FUNCTIONS-                                       *
*             JCHECK-    WAIT FOR COMPLETION OF A JREAD OR JWRITE     *
*             JFRECORE-  RELEASE MAIN STORAGE ALLOCATED BY JGETCORE   *
*             JGETCORE-  ALLOCATE MAIN STORAGE FOR WORK AREA          *
*             JGETL-     READ LOGICAL RECORD (LOCATE MODE)            *
*             JNOTE-     PROVIDE RECORD POSITION                      *
*             JPOINT-    POSITION TO A RECORD                         *
*             JPUTL-     WRITE LOGICAL RECORD (LOCATE MODE)           *
*             JPUTM-     WRITE LOGICAL RECORD (MOVE MODE)             *
*             JREAD-     READ PHYSICAL RECORD                         *
*             JWRITE-    WRITE PHYSICAL RECORD                        *
*                                                                     *
*EXITS, NORMAL-                                                       *
*        EXITS TO THE CONTROLLER                                      *
*                                                                     *
*EXITS, ERROR-                                                        *
*        NONE                                                         *
*                                                                     *
*TABLES/WORK AREAS-                                                   *
*        WORK AREA ALLOCATED BY JGETCORE ROUTINE IN THE CONTROLLER    *
*                                                                     *
*ATTRIBUTES-                                                          *
*        REFRESHABLE                                                  *
*                                                                     *
*NOTES-                                                               *
*                                                                     *
         EJECT
         COPY  JCOMMON
         EJECT
         COPY  JTEXT
         EJECT
         COPY  ICOMMON
         EJECT
JTEXT    DSECT ,
         ORG   JTEXT                    OVERLAY
         COPY  RSYMRCD
         EJECT
* VS1 RELEASE 3.1 CHANGES
*A413300-413520                                                 OX00873
*C413600                                                        OX00873
*D257600                                                        OX04097
*C258400                                                        OX04097
*A478100-478400                                                 OY02611
*D479200                                                        OY02611
*A494700-495920                                                 OY02611
*A487700-487900,602100-602300                                  @OX07274
*C488000,602400                                                @OX07274
*C487900,586400,602100                                         @OX10361
*A586900-587100                                                @OX10361
*A338100-338320                                                @OY08064
*C337600                                                       @OY08064
*C341600                                                       @PI01040
*A342100-342200                                                @PI01040
*A257300                                                       @OY09620
*C255400,260000                                                @OY09620
*D478100-478200,495700-495920                                  @OX09723
*C478400,495200,608800                                         @OX09723
*A554900,558100,494900-495160,495700,608500-608700             @OX09723
*A309300-309800                                                @OY10603
*C256800                                                       @OZ07355
*C496000                                                       @AX14216
*C495120                                                       @AZ16488
*A448100,448200                                                @AZ18392
&NM.00   CSECT
         JMODID
         USING &NM.01,R12
&NM.01   DS    0H                       PHASE ENTRY
I        LA    R14,IIII                 DEFINE ENTRY
II       JSAVE BASE=NO                  PUSH REGISTERS
         BR    R14                      PROCEED
III      JRETURN                        PHASE EXIT
         AIF   ('&TESTRAN' NE 'YES').X4DA
         DC    A(&COMPNM.X4N01,&COMPNM.X4E01,&COMPNM.X4S01,&COMPNM.X4V0X
               1)                       EXTERNAL ROUTINE BASE
         AGO   .X4NA
.X4DA    DC    A(&COMPNM.X4D01,&COMPNM.X4E01,&COMPNM.X4S01,&COMPNM.X4V0X
               1)                       EXTERNAL ROUTINE BASE
.X4NA    ANOP
IIII     LR    R8,R12                   BASE REGISTER
         DROP  R12
         USING &NM.01,R8
         SPACE
*                        INITIALIZATION                               *
         SPACE
         LH    R11,=Y(MAXDBL)
         JGETCORE  MINDBL=MINDBL,MAXDBL=(R11)  GET STORAGE
         LR    R7,R10                   INITIALIZE COMMON AREA BASE
         XC    D0*256(256,R7),D0*256(R7)
         XC    D1*256(256,R7),D1*256(R7)
         XC    D2*256(256,R7),D2*256(R7)
         XC    D3*256(256,R7),D3*256(R7)
         XC    D4*256(256,R7),D4*256(R7)
         XC    D5*256(256,R7),D5*256(R7)
         XC    D6*256(256,R7),D6*256(R7)
         XC    D7*256(256,R7),D7*256(R7)
         MVC   SAVE(IIII-II),II         INITIALIZE COMMON
*
*        INITIALIZE WORK AREA FOR SYMBOL TABLE ROUTINES
*
         AR    R11,R10                  POINT TO END OF COMMON
         LR    R14,R11                  FIRST SYMBOL TABLE ENTRY
         LR    R15,R11                  X
         LH    R0,=H'-20'               INCREMENT
         LA    R1,ENDOFCOM+D20*D2       LAST SYMBOL TABLE ENTRY
         STM   R14,R1,SYMDIMEN          X
*
*        INITIALIZE WORK AREA FOR LITERAL PROCESSING
*
         LA    R10,ENDOFCOM             END-OF-COMMON
         LA    R11,ENDOFCOM+D20         FIRST LITERAL ENTRY
         STM   R10,R11,LATADD           ADDRESS OF ADJUSTMENT TABLE
*
*        INITIALIZE WORK AREA FOR ESD PROCESSING
*
         L     R15,=Y(D20*D16+D4,0)     BLOCK LENGTH
         LA    R14,ESDBLK1+D4           GET ADDRESS OF FIRST BLOCK
         STM   R14,R15,ESDBLK1          PUT IN PARAMETER FOR READ/WRITE
         LA    R14,ESDBLK2+D4           GET ADDRESS OF SECOND BLOCK
         STM   R14,R15,ESDBLK2          PUT IN PARAMETER FOR READ/WRITE
         MVI   HIDESDID,DSW             ORGIN OF DSECT ESDID
*
*        INITIALIZE WORK AREA FOR EXPRESSION EVALUATION ROUTINE
*
         LA    R14,TERMS                START OF TERMS STACK
         LA    R15,RLIST                START OF RELOCATABILITY STACK
         LA    R0,OPRNS-D1              START OF OPERATOR STACK
         STM   R14,R0,ATPTR             X
         TS    SELFDEFN                 ASSUMED INITIAL SETTING
         MVI   CLCLNG+D1,D1             LENGTH ATTRIBUTE OF ASTERISK
         SPACE
         LA    R14,ESDBLK1              ADDRESS OF ONE BLOCK
         LA    R15,ESDBLK2              ADDRESS OF OTHER BLOCK
         STM   R14,R15,JFWORD1          STORE BOTH
         MVC   NOTELIST(D8),JFWORD1     INITIALIZE FIRST ESD BLOCK
         MVC   NOTELIST+D9(D8),JFWORD2  INITIALIZE OTHER ESD BLOCK
         MVI   NOTELIST+L'JNOTEVAL,X'01'     X
         MVI   NOTELIST+L'JNOTEVAL*2+1,X'01' X
         LA    R6,ESDBLK1+D8            DUMMY POINTER
         SPACE
*TITLE-  GETNEXT                                                      *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        THIS ROUTINE IS THE MAIN LINE CONTROL AND DRIVER FOR THE     *
*   SYMBOL RESOLUTION PHASE.  THIS ROUTINE GETS THE NEXT LOGICAL      *
*   RECORD FROM THE CURRENT INPUT FILE AND PASSES CONTROL TO ONE OF   *
*   THE FUNCTIONAL ROUTINES FOR PROCESSING.  THE FUNCTIONAL ROUTINE   *
*   SELECTED IS DEPENDENT UPON THE RECORD TYPE AND THE CURRENT MODE.  *
*   IF IN PASS ONE ASSIGNMENT MODE, THIS ROUTINE ALSO ADJUSTS THE     *
*   CURRENT LOCATION COUNTER AND SETS UP THE OPERAND COLUMN POINTER.  *
*                                                                     *
*INPUT-  NONE                                                         *
*                                                                     *
*OUTPUT- REGISTER R3 CONTAINS THE CURRENT LOCATION COUNTER VALUE.     *
*        REGISTER R4 IS A POINTER TO THE INPUT RECORD.                *
*        REGISTER R5 IS A POINTER TO THE OPERAND FILED.               *
*                                                                     *
         SPACE
GETNEXT  LH    R10,JINFILE              GET ADDRESS OF INPUT FILE
         JGETL FILE=(R10)               GET NEXT RECORD
         LR    R4,R11                   RECORD POINTER
         SR    R1,R1                    CLEAR REGISTER
         IC    R1,JTIOP1                GET RECORD TYPE
         AR    R1,R1                    GET INDEX
         LH    R2,MODE                  GET MODE
         L     R2,RADIX(R2)             GET RADIX
         SH    R2,D0(R1,R2)             GET ROUTINE VECTOR
         GOIF  (MODE1,MODE2)            SEE IF PASS 1 ASSIGNMENT MODE
         BNER  R2                       GO TO RESPECTIVE ROUTINES IF NO
* DO NOT MOVE INPUT RECORD IF SYMBOL OVERFLOW HAS NOT OCCURED
         GOIF IOFLO,OFF=DONTMOVE
* DO NOT MOVE REFERENCE RECORD
         GOIF JTIOP,JTSYMBL,EQ=DONTMOVE
         LH    R1,JTRLI                 RECORD LENGTH
         LA    R3,INPUTBUF              BUFFER ADDRESS
         CH    R1,ADMAXMVC              EXECUTE MOVE IF
         BNH   MOVEX                    LESS THAN MAX MOVE LENGTH
         SH    R1,ADMAXMVC              SUBTRACT MOVED BYTES
         MVC   D0(MAXMVC,R3),D0(R4)     MOVE MAX LENGTH
         LA    R4,MAXMVC(,R4)           BUMP FROM ADDRESS
         LA    R3,MAXMVC(,R3)           BUMP TO ADDRESS
MOVEX    BCTR  R1,R0                    MINUS ONE FOR EXECUTE
         EX    R1,MVCIM                 EXECUTE MOVE INSTRUCTION
         LA    R4,INPUTBUF              POINT TO LOGICAL RECORD
DONTMOVE GOIF  RFIELDX,OFF=LOCTR1       SKIP IF NO OPERAND
         LA    R5,RLNGA                 POINT TO OPERAND
         GOIF  RFIELDN,OFF=LOCTR        SKIP IF NO NAME
         LA    R5,RLNGB                 POINT TO OPERAND
LOCTR    SR    R1,R1                    CLEAR REGISTER
         IC    R1,CHAR1                 GET OPERAND LENGTH
         LA    R5,CHAR2(R1)             POINT TO END-OF-OPERAND
         ST    R5,OPNEND                NOTE IT
         SR    R5,R1                    POINT TO BEGINNING-OF-OPERAND
LOCTR1   GOIF  JDEF,OFF=(R2)            SKIP UPDATE LOCATION COUNTER
         SET   JDEF,OFF                 RESET INDICATOR
         L     R3,ELCTR                 GET CURRENT LOCATION COUNTER
         NC    RLCTR,RLCTR              SEE IF BYTES SKIPPED
         BZ    LOCTR2                   NO, PROCEED
         BAL   R9,ALIGN1                ALIGN TO HALFWORD BOUNDARY
         DC    H'-2,1'                  ALIGNMENT PARAMETERS
         AL    R3,RLCTR                 ADD NUMBER OF BYTES SKIPPED
         ST    R3,ELCTR                 UPDATE CURRENT LOCATION COUNTER
LOCTR2   MVC   RESDI(D6),EESDI          PASS CURRENT LOCATION COUNTER
         BR    R2                       GO TO RESPECTIVE ROUTINE
         SPACE
MAXMVC   EQU   256                      MAX MOVE LENGTH
ADMAXMVC DC    H'256'                   MAX MOVE LENGTH
MVCIM    MVC   D0(*-*,R3),D0(R4)        MOVE LOGICAL RECORD
         SPACE
INPC     LA    R10,HICESDID             GET PARAMETER
         MVC   XPARM,CSTPARM            PASS PARAMETERS
         GOTO  BLDESD                   BUILD ESD ENTRY
         LR    R6,R10                   MAKE CONTROL SECTION CURRENT
         AIF   ('&TESTRAN' NE 'YES').INPC
         BAL   R9,ESDPUNCH              OUTPUT TESTRAN ITEM
.INPC    B     EPILOGUE                 FINIS
         SPACE
SEARCH   GOIF  (RFIELDN,PRIORDEF),NOTMIX=TRANSFER
         LR    R10,R4                   PASS RECORD POINTER
         GOTO  FIND                     LOOKUP IN SYMBOL TABLE
         BNE   TRANSFER                 NOT FOUND
         GOIF  ESDNRSW,ON=TRANSFER      DEFER FLAGGING
         SET   PRIORDEF,ON              INDICATE PREVIOUSLY DEFINED
         B     TRANSFER                 OUTPUT RECORD
         SPACE
EOFIIS   SET   MODE1,OFF                INDICATE END OF SUBSTITUTION
         SET   IOFLO,ON                 INDICATE TABLE OVERFLOWED
         GOIF  STBLOFLO                 SEE IF SUBSETTED
         GOTO  SUBSET                   SUBSET
         L     R0,SYMDIMEN+D4           GET ADDRESS
         SH    R0,=H'1024'              MARGIN
         C     R0,LATEND                SEE IF OVERLAPPING LITERAL POOL
         BNL   GETNEXT                  ENOUGH ROOM
         MVI   JPRTONLY,JPRONLY         SET FLUSH CONDITION
         SET   (MODE1,MODE2),ON         SET EXIT CONDITION
         B     BUGOUT                   JUST LIKE IT SAYS
         SPACE
REHASH   GOIF  STBLOFLO                 SEE IF SUBSETTED
         GOTO  SUBSET                   SUBSET
         LR    R10,R4                   POINTER
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         B     GETNEXT                  FINIS
         SPACE
START    SR    R0,R0                    ZERO
         CH    R0,FSTCSECT              SEE IF FIRST CSECT
         BNE   CSECT                    ILLEGAL START IF NOT FIRST
         GOIF  RFIELDX,OFF=START1       NO OPERAND
         CLC   CHAR1(D2),=AL1(JCOMMA,JBLANK) LOOK FOR NULL OPERAND
         BE    START1                   A CLEAN START, VRRRRRRRROM
         GOTO  EVAL                     EVALUATE OPERAND
         BNZ   CSECT                    ERROR
         GOIF  LOCTREF,ON=CSECT         LOCATION COUNTER REFERENCE
         LA    R11,D7(,R11)             ROUND TO DOUBLE WORD BOUNDARY
         ST    R11,STARTLOC             SAVE
START1   OI    RFLGB,BIT0               INDICATE VALID START CARD
         SPACE
CSECT    L     R11,CSTPARM              GET PARAMETER
CSECT1   LA    R10,HICESDID             X
CSECT2   ST    R11,XPARM                PASS
         GOTO  BLDESD                   GO MAKE ESD ENTRY
         LR    R6,R10
         MVC   RESDI(L'RESDI+L'RLCTR),EESDI
         BAL   R9,WRITE2                WRITE CROSS-REFERENCE RECORD
         AIF   ('&TESTRAN' NE 'YES').CSECT
         BAL   R9,ESDPUNCH              OUTPUT TESTRAN ITEM
.CSECT   B     EPILOGUE                 FINIS
         SPACE
DSECT    L     R11,DSTPARM              GET PARAMETER
         LA    R10,HIDESDID
         B     CSECT2
         SPACE
COM      L     R11,COMPARM              GET PARAMETER
         B     CSECT1                   COMMON ROUTINE
         SPACE
REPRO    JPUNCH  SEQ=NO                 GET PUNCH BUFFER
         SR    R15,R15                  CLEAR REGISTER
         IC    R15,RESDI                GET OPERAND LENGTH
         LTR   R15,R15                  SEE IF LENGTH OF OPERAND ZERO
         BE    GETNEXT                  FINIS IF SO
         LR    R14,R15                  CLEAR REGISTER
         IC    R14,RFLDI                GET OUTPUT COLUMN POINTER
         BCTR  R14,0                    DECREMENT BY ONE
         BCTR  R15,0                    DECREMENT BY ONE
         AR    R11,R14                  POINT TO OUTPUT COLUMN
         EX    R15,REPRO1               MOVE IN OPERAND
         B     GETNEXT                  FINIS
REPRO1   MVC   D0(D0,R11),RESDI+D1      EXECUTED INSTRUCTION
         SPACE
PUNCH    LA    R2,D1                    INCREMENT
         SR    R3,R3                    ZERO REGISTER
         IC    R3,RESDI                 OPERAND LENGTH
         CLI   RESDI,D3                 CHECK IF NULLSTRING
         BL    GETNEXT                  ERROR IF SO
         AR    R3,R4                    POINT TO END OF OPERAND
         BCTR  R3,D0                    MINUS ONE
         LR    R5,R4                    POINT TO BEGINNING OF OPERAND
         CLI   D7(R5),JQUOTE            MUST BEGIN WITH A QUOTE
         BNE   GETNEXT                  ERROR IF NOT
PUNCH1   BXH   R5,R2,GETNEXT            POINT TO NEXT CHARACTER
PUNCH2   CLI   D7(R5),JQUOTE            SEE IF CHARACTER A QUOTE
         BNE   PUNCH6                   NOT A QUOTE
         BXLE  R5,R2,PUNCH4             A QUOTE, SEE IF PAIRED QUOTES
PUNCH3   JPUNCH  SEQ=NO                 DEL BY A TRAIL QUOTE
         LA    R4,D3(,R4)               GET OPERAND LENGTH
         SR    R5,R4                    GET LENGTH OF OPERAND
         BM    GETNEXT                  NULL QUOTES
         LA    R1,D9*D9-D2              79
         CR    R1,R5                    SEE IF MORE THAN 80 CHARACTERS
         BNL   PONCHO                   LESS THAN 80
         LR    R5,R1                    OPERNAD TOO LONG
PONCHO   EX    R5,PUNCH8                MOVE IN PUNCH OPERAND
         B     GETNEXT                  FINIS
PUNCH4   CLI   D7(R5),JQUOTE            SEE IF PAIRED QUOTES
         BNE   GETNEXT                   NOT PAIRED ', FINIS   @OZ07355
PUNCH5   BCTR  R3,D0                    OP IS 1 LESS           @OY09620
         LR    R1,R3                    POINT TO 2:ND OF PAIR   OX04097
         SR    R1,R5                    GET LENGTH OF OPERAND REMAINDER
         BM    GETNEXT                  NO ENDING QUOTE        @OY09620
         EX    R1,PUNCH9                MAKE PAIR TO APPEAR AS ONE
         B     PUNCH2                   LOOP
PUNCH6   CLI   D7(R5),JAMPER            SEE I& AN AMPERSAND
         BNE   PUNCH1                   JUST AN ORDINARY CHARACTER
         BXH   R5,R2,GETNEXT            POINT TO NEXT CHARACTER
         CLI   D7(R5),JAMPER            SEE IF PAINER AMPERSANDS
         BE    PUNCH5                   IT HAD BETTER BE
         B     GETNEXT                  OR OTHERWISE IT IS IN ERROR
PUNCH8   MVC   D0(D0,R11),D5(R4)        MOVE OPERAND ONTO CARD
PUNCH9   MVC   D7(D0,R5),D8(R5)         OVERLAP THE REDUNDANT ONE
         SPACE
DC       MVI   TYPECALL,DCCALL+DEFNAME  PARAMETER
         GOIF  (DSW2,CSW2),NONE=DC1     ESD SUPPRESSION
         OI    TYPECALL,NOESD           SUPPRESS ESD PROCESSING
DC1      GOIF  (RFIELDN,PRIORDEF),MIX=DC2    NAME PREVIOUSLY DEFINED
         SET   DEFNAME,OFF              NO NAME DEFINITION
DC2      GOTO  DCSCAN
         LH    R0,LATTRSAV
         GOIF  RFIELDN,OFF=DC3          SKIP IF NO NAME
         STH   R0,RLNGQ                 PASS
DC3      MVC   RFLGA,OPCNT+D1           NUMBER OF GOOD OPERANDS
B52      BAL   R9,WRITE2                WRITE RECORD
         B     EPILOGUE                 FINIS
         SPACE
DS       MVI   TYPECALL,DSCALL+DEFNAME+NOESD PARAMETER
         B     DC1                      VINTAGE
         SPACE
ENTRY    GOTO  ENTRY                    GO TO ROUTINE
         B     TRANSFER                 WRITE ON OUTPUT FILE
         SPACE
EXTRN    MVI   RTYPE,ETYPEER            TYPE
EXTRN1   MVI   RFLGB,ESDNRSW            SWITCH
         GOTO  EXTRN                    GO TO ROUTINE
         B     TRANSFER                 WRITE ON OUTPUT FILE
         SPACE
WXTRN    MVI   RTYPE,ETYPEWX            TYPE
         B     EXTRN1                   TREAT AS EXTRN
         SPACE
DXD      GOIF  RFIELDN,OFF=GETNEXT      LIKELY
         MVI   RFLGA,D0
         LR    R10,R4
         GOTO  FIND
         BNZ   DXD1
         GOIF  ENTRYSW,ON=DXD1
         SET   PRIORDEF,ON
DXD1     LA    R0,D1
         STH   R0,RLNGQ
         SR    R0,R0
         ST    R0,RLCTR
         GOIF  PRIORDEF,ON=B52
         GOIF  RFIELDX,OFF=B52
         MVC   XPARM,DXDPARM            PASS PARAMETERS
         LA    R10,HICESDID             PASS ESDID
         GOTO  BLDESD                   MAKE ESD ENTRY
         GOTO  XDSCAN                   SCAN OPERAND
         B     DC3                      BON VOYAGE
         SPACE
EQU      LA    R3,WRITE                 EXIT TIME ADDRESS
         XC    REFCOUNT,REFCOUNT        RESET COUNT            @OY10603
         XC    SYMCOUNT,SYMCOUNT        RESET COUNT            @OY10603
         XC    RESDI(D6),RESDI
         GOIF  RFIELDN,OFF=(R3)
         MVC   RLNGQ,=H'1'              LENGTH ATTRIBUTE OF *
         BAL   R2,EQU1                  EVALUATE EXPRESSION(S)
         GOIF  PRIORDEF,ON=(R3)         EXIT IF PREVIOUSLY DEFINED
         LR    R10,R4                   PASS POINTER
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         BER   R3                       OK
         SET   PRIORDEF,ON              INDICATE PREVIOUSLY DEFINED
         BR    R3                       GO ANYWAY
EQU1     GOIF  RFIELDX,OFF=(R2)         NO OPERAND, DEFAULT TO *
         CLI   CHAR1,JCOMMA             FIRST OPERAND PRESENT
         BE    EQU4                     YEAH
         GOTO  EVAL                     EVALUATE FIRST OPERAND
         BOR   R2                       SYNTACTIC ERROR
         BALR  R1,D0                    SAVE CONDITION CODE
         CLI   D0(R14),JBLANK           SEE IF VALID END OF OPERAND
         BE    EQU2                     YEAH
         CLI   D0(R14),JCOMMA           THIS IS OK ALSO
         BNER  R2                       OTHERWISE, A NO-NO
EQU2     LR    R5,R14                   COLUMN POINTER
         SPM   R1                       SET CONDITION CODE
         BL    EQU3                     BADDIE
         AIF   ('&TESTRAN' NE 'YES').EQUX
         BZ    EQUABS                   BRANCH IF ABSOLUTE OPND
         LA    R3,XREF3                 EXIT IF SIMPLY RELOCATABLE
EQUABS   STH   R10,RESDI                ESDID
         AGO   .EQUY
.EQUX    STH   R10,RESDI                ESDID
.EQUY    ST    R11,RLCTR                VALUE
EQU3     MVC   RLNGQ,IMPLNG             LENGTH ATTRIBUTE
         MVC   RFLGB,EVALSW1            TATTLE TALE
         CLI   CHAR1,JBLANK             END OF EVALUATION
         BER   R2                       YUP
EQU4     LA    R5,CHAR2                 POINT TO NEXT CHARACTER
         CLI   CHAR1,JCOMMA             NULL OPERAND
         BER   R2                       YES
         GOTO  EVAL                     EVALUATE SECOND OPERAND
         BE    EQU6                     OK                     @OY08064
         GOIF  NOTDEFN,OFF=(R2)         ERROR - UNDEF SYMB ?   @OY08064
         SET   EQUF1,ON                 MARK IT IN RECORD      @OY08064
         BR    R2                       AND RETURN             @OY08064
EQU6     EQU   *                                               @OY08064
         CLI   D0(R14),JBLANK           SEE IF PROPERLY DELIMITED
         BE    EQU5                     YES
         CLI   D0(R14),JCOMMA           THIS IS OK ALSO
         BNER  R2                       THIS ISN'T
EQU5     EQU   *                                               @OY01040
         SET   EQUF1,ON                 MARK IN CASE OF ERROR  @PI01040
         CL    R11,=F'65535'            SEE IF WITHIN ALLOWANCE@PI01040
         BHR   R2                       NOPE
         SET   EQUF1,OFF                ALL RIGHT              @PI01040
         STH   R11,RLNGQ                LANGTH ATTRIBUTE OVERRIDDEN
         BR    R2                       RETURN
         SPACE
CNOP     BAL   R9,ALIGN                 ALIGN TO HALFWORD BOUNDARY
         DC    H'-2,1'                  ALIGNMENT PARAMETERS
         ST    R3,RLCTR                 UPDATE CURRENT LOCATION COUNTER
         BAL   R9,XREF                  CROSS REFERENCE NAME FIELD
         AIF   ('&TESTRAN' NE 'YES').CNOPY
         BAL   R9,MISPUNCH              OUTPUT TESTRAN ITEM
.CNOPY   GOIF  RFIELDX,OFF=EPILOGUE     NO OPERAND, NO GOOD
         GOTO  EVAL                     EVALUATE FIRST OPERAND
         BNE   EPILOGUE                 MUST BE ABSOLUTE
         CLI   D0(R14),JCOMMA           SEE IF THERE'S A SECOND OPERAND
         BNE   EPILOGUE                 TUBE IT IF NONE
         LR    R2,R11                   SAVE VALUE OF FIRST OPERAND
         N     R11,=F'1'                SEE IF FIRST OPERAND IS ODD
         BNZ   EPILOGUE                 THAT'S ODD, TOO BAD
         LA    R5,D1(,R14)              POINT TO SECOND OF TWO OPERANDS
         GOTO  EVAL                     EVALUATE SECOND OPERAND
         BNE   EPILOGUE                 INVALID UNLESS IT'S ABSOLUTE
         CLI   D0(R14),JBLANK           LOOK FOR VALID DELIMITER
         BNE   EPILOGUE                 MUST BE A BLANK
         LCR   R10,R11                  ALIGNMENT MASK
         CL    R10,=F'-4'               FULLWORD
         BE    CNOP1                    SKIP IF SO
         CL    R10,=F'-8,4'             DOUBLEWORD
         BNE   EPILOGUE                 8
CNOP1    CLR   R2,R11                   FIRST OPERAND MUST BE SMALLER
         BNL   EPILOGUE                 OF THE TWO TO BE VALID
         NR    R3,R10                   TO SPECIFIED BOUNDARY
         AR    R3,R2                    ADD VALUE OF FIRST OPERAND
         C     R3,ELCTR                 THE RESULT SHOULD BE GREATER
         BNL   CNOP2                    THAN THE ORIGINAL VALUE
         AR    R3,R11                   OTHERWISE ADD ON SECOND OPERAND
CNOP2    ST    R3,ELCTR                 THIS IS THE NEW LOCATION
         B     EPILOGUE                 FINIS
         SPACE
ORG      BAL   R9,XREF                  CROSS REFERENCE NAME FIELD
         AIF   ('&TESTRAN' NE 'YES').ORGY
         BAL   R9,MISPUNCH              OUTPUT TESTRAN ITEM
.ORGY    LH    R10,JOUTFILE             OUTPUT FILE ADDRESS
         LA    R11,D12                  LENGTH OF RECORD
         JPUTL FILE=(R10),BUFREQ=(R11)  GET OUTPUT BUFFER
         GOIF  RFIELDX                  SEE IF THERE'S AN OPERAND
         LR    R4,R11                   RECORD POINTER
         MVC   JTRLI(D6),LOCRCD         ADJUSTMENT RECORD
         MVC   RESDI(D6),EESDI          CURRENT ESDID AND VALUE
         BZ    ORG1                     GO TO ORG BLANK
         CLI   CHAR1,JCOMMA             SEE IF NULL OPERAND
         BE    ORG1                     X
         GOTO  EVAL                     EVALUATE OPERAND
         BNH   EPILOGUE                 NOT SIMPLY RELOCATABLE
         CLI   D0(R14),JBLANK           CHECK FOR PROPER DELIMITER
         BNE   EPILOGUE                 BAD DELIMITER
         CH    R10,EESDI                SEE IF IN THIS CONTROL SECTION
         BNE   EPILOGUE                 OUT OF CONTROL, SECTIONWISE
         LTR   R11,R11                  SEE IF NEGATIVE
         BM    EPILOGUE                 NEGATIVE, OUT OF CONTROL
         CL    R3,EHILC                 SEE IF NECESSARY TO SAVE VALUE
         BNH   ORG2                     NOPE
         ST    R3,EHILC                 SAVE CURRENT LOCATION COUNTER
         B     ORG2                     CONTINUE
ORG1     L     R11,EHILC                GET SAVED HIGHEST ADDRESS
         CLR   R3,R11                   SEE IF HIGHER THAN CURRENT
         BNL   ORG3                     INEFFECTIVE
ORG2     ST    R11,ELCTR                MODIFY ADDRESS TO NEW VALUE
         ST    R11,RLCTR                PASS IN RECORD
ORG3     MVI   RFLGB,GOODORG            INDICATE ERROR FREE ORG
GOODORG  EQU   BIT0                     X
         B     EPILOGUE                 FINIS
         SPACE
SYMBL    LH    R14,REFCOUNT             GET COUNT
         CH    R14,SYMCOUNT             COMPARE TO TOTAL
         BNL   SYMBOL                   SKIP IF NOT APPLICABLE
         LA    R15,D1(,R14)             BUMP COUNT
         STH   R15,REFCOUNT             UPDATE COUNT
         SRDL  R14,D3                   FIRST SUBSCRIPT IN R14
         SRL   R15,D29                  SECOND SUBSCRIPT IN R15
         LA    R1,BIT0                  INITIAL MASK
         SRL   R1,D0(R15)               ADDRESS BIT
         LA    R15,VEETABLE(R14)        ADDRESS BYTE
         EX    R1,TMINST                SEE IF V-CON SYMBOL
         BZ    SYMBOL                   SKIP IF NOT
         OI    RNAME,BIT0               FUDGE
         SPACE
SYMBOL   LR    R10,R4                   PARAMETER
         GOTO  FIND                     LOOKUP IN SYMBOL TABLE
         BNE   TRANSFER                 NO FURTHER
         CLI   JSW0033,MODE2            MODE 1S                 OX00873
         BNE   SYMBOL05                 NO,BRANCH               OX00873
         TM    RNAME,BIT0               TEST IF VCON BIT ON     OX00873
         BO    TRANSFER                 YES                     OX00873
SYMBOL05 GOIF  ENTRYSW,ON=TRANSFER      UNDEFINED ENTRY SYMBOL  OX00873
         SET   DEFINED,ON               INDICATE DEFINED
         MVC   RFLGB,SFLGS              PASS FLAGS
         MVC   RESDI(L'RESDI+L'RLCTR),SESDI  PASS ESDID AND VALUE
         LA    R15,1                    PASS LENGTH ATTRIBUTE
         GOIF  ESDNRSW,ON=SYMBOL1       SEE IF EXTERNAL NAME
         LH    R15,SLNGQ                GET LENGTH ATTRIBUTE
SYMBOL1  STH   R15,RLNGQ                PASS LENGTH ATTRIBUTE
         GOIF  MODE1,OFF=SYMBOL2
         GOIF  MODE2,ON=ADJUST,ELSE=SYMBOL3
SYMBOL2  SET   PRIORDEF,ON
         NI    RNAME,BITFF-BIT0
SYMBOL3  MVI   JTIOP1,JTADJII
         B     TRANSFER                 OUTPUT RECORD
         SPACE
CXD      BAL   R9,ALIGN1                ALIGN TO FULLWORD BOUNDARY
         DC    H'-4,3'                  ALIGNMENT PARAMETERS
         LA    R1,D4                    LENGTH ATTRIBUTE
         AIF   ('&TESTRAN' NE 'YES').CXD
         ST    R3,RLCTR                 VALUE OF SYMBOL
         BAL   R9,XREF1                 CROSS-REFERENCE NAME, IF ANY
         SET   TDATA                    INDICATE TESTRAN ITEM TYPE
         BAL   R9,ANYPUNCH              OUTPUT TESTRAN ITEM
         LA    R10,D2                   LENGTH
         MVC   ORGBYTE(D2),=AL1(DTYPEA,D3)   DATA TYPE AND LENGTH
         BAL   R9,SYMPUNCH              OUTPUT TESTRAN ITEM
         B     EPILOGUE                 FINIS
         AGO   .CXD1
.CXD     B     MACHOP1                  SKIP
.CXD1    SPACE
CCW      BAL   R9,ALIGN                 ALIGN TO DOUBLEWORD BOUNDARY
         DC    H'-8,7'                  ALIGNMENT PARAMETERS
         LA    R1,D8                    LENGTH ATTRIBUTE
         AIF   ('&TESTRAN' NE 'YES').CCW
         ST    R3,RLCTR                 VALUE OF SYMBOL
         BAL   R9,XREF1                 CROSS-REFERENCE NAME, IF ANY
         SET   TCCW                     INDICATE TESTRAN ITEM TYPE
         BAL   R9,ANYPUNCH              OUTPUT TESTRAN ITEM
         B     EPILOGUE                 FINIS
         AGO   .CCW1
.CCW     B     MACHOP1                  SKIP
.CCW1    SPACE
MACHOP   BAL   R9,ALIGN                 ALIGN TO HALFWORD BOUNDARY
         DC    H'-2,1'                  ALIGNMENT PARAMETERS
         XC    REFCOUNT,REFCOUNT        ZERO REFCOUNT          @AZ18392
         XC    SYMCOUNT,SYMCOUNT        ZERO SYMCOUNT          @AZ18392
         GOIF  RFIELDN,OFF=MACHOP1      TEST IF NAME IS PRESENT
         LH    R1,RLNGQ                 LENGTH ATTRIBUTE
MACHOP1  ST    R3,RLCTR                 LOCATION COUNTER VALUE
         BAL   R9,XREF1                 CROSS-REFERENCE NAME, IF ANY
         AIF   ('&TESTRAN' NE 'YES').MACHOP
         SET   TMOP
         BAL   R9,MOPPUNCH              OUTPUT TESTRAN ITEM
.MACHOP  B     EPILOGUE                 FINIS
         SPACE
LITERAL  MVI   TYPECALL,LTCALL+NOESD    PASS PARAMETERS
         GOTO  DCSCAN                   DETERMINE LITERAL OBJECT LENGTH
         SR    R3,R3                    DISPLACEMENT
         LTR   R2,R15                   LENGTH OF LITERAL
         BZ    LITRPUT                  BAD IF ZERO OBJECT LENGTH
         N     R2,=F'7'                 GET MODULO SUM
         IC    R2,INDEX(R2)             USE IT TO GET INDEX VALUE
         SR    R14,R5                   FIND LITERAL SOURCE LENGTH
         BCTR  R5,0                     POINT TO LENGTH INDICATOR
         STC   R14,CHAR1                MODIFY LITERAL SOURCE LENGTH
         CH    R14,JLITLNG              SEE IF LONGER
         BNH   LITERAL4                 NOPE
         STH   R14,JLITLNG              SAVE LONGER LENGTH
LITERAL4 SR    R0,R0                    ZERO R2
         GOIF  DLOCTREF,OFF=LITERAL1    SKIP IF SO
         LA    R0,D6                    LOCATION COUNTER REFERENCED
LITERAL1 LA    R3,LATA8-D4(R2)          POINT TO RESPECTIVE CHAIN
LITERAL2 LR    R1,R3                    TUCK ON CHAIN
         L     R3,D0(,R1)               LOOK AT THE NEXT ENTRY
         LTR   R3,R3                    SEE IF AT THE END OF THE ROPE
         BZ    LITERAL3                 GO PUT IN ENTRY IF SO
         LTR   R0,R0                    IF LOCATION COUNTER REFERENCED
         BNZ   LITERAL2                 DON'T LOOK AT IT
         EX    R14,LITCLC               LOOK AT THIS LITERAL ENTRY
         BNE   LITERAL2                 SKIP IF NOT THE SAME
         L     R3,D4(,R3)               GET DISPLACEMENT OF THE ENTRY
         SLL   R14,D16                  LENGTH
         OR    R2,R14                   LENGTH
         B     LITRPUT                  PUT OUT THIS RECORD
LITERAL3 LM    R11,R12,LATADD           GET LITERAL POOL ADDR  @OX09723
         LA    R9,41(R12,R14)           ESTIMATE LENGTH OF ENTRY
         CL    R9,SYMDIMEN+4            SEE IF ENOUGH ROOM
         BH    LITRFULL                 NOT ENOUGH
         XC    D0(D4,R12),D0(R12)       ZERO CHAIN POINTER
         ST    R12,D0(,R1)              CHAIN POINTER
         L     R3,D0(R2,R11)            OBJECT LENGTH OF THIS CHAIN
         AR    R15,R3                   ADD ON LENGTH OF THIS LITERAL
         ST    R3,D4(,R12)              PUT ONE INTO THE LITERAL POOL
         ST    R15,D0(R2,R11)           THE OTHER IN ADJUSTMENT TABLE
         MVC   D10(D6,R12),EESDI        SAVE LOCATION COUNTER
         TM    XPARM,XDUMMY             TEST IF IN DSECT       @OX07274
         BZ    LITERAL5                 NO, CSECT              @OX07274
         OI    D8(R12),INDSECT          RESIDES IN DSECT       @OX10361
LITERAL5 STH   R0,D8(,R12)              INDICATE LOC COUNTER   @OX07274
         AR    R12,R0                   BUMP PAST LOCATION COUNTER
         EX    R14,LITMVC               MOVE IN LITERAL SOURCE
         AR    R12,R14                  POINT PAST LITERAL SOURCE
         SLL   R14,D16                  MOVE TO HIGH ORDER BYTE
         OR    R2,R14                   INSERT IN OUTPUT RECORD
         MVI   D11(R12),JBLANK          INSERT A BLANK
         LA    R12,D15(,R12)            ROUND TO FULLWORD BOUNDARY
         N     R12,=F'-4'               ROUND TO FULLWORD BOUNDARY
         LR    R11,R12                  SAVE CHAINPTR          @OX09723
         L     R10,LATEND               LOAD OLD PTR           @OX09723
         SR    R11,R10                  SEE IF RECORD          @OX09723
         C     R11,=F'41'               LONG ENOUGH            @OZ16488
         BNL   LITERAL6                 IF NOT LEAVE           @OX09723
         LA    R12,D4(R12)              MARGINE FOR SYMBOL TBL @OX09723
LITERAL6 ST    R12,LATADD+D4            SAVE ADDRESS OF NEXT   @OX09723,
                                        POOL ENTRY             @OX09723
         LA    R12,41(,R12)             LEAVE MARGINE          @AX14216
         ST    R12,SYMDIMEN+D12         LIMIT FOR SYMBOL TABLE
LITRPUT  LH    R10,JOUTFILE             GET OUTPUT FILE ADDRESS
         JPUTL FILE=(R10),BUFREQ=12     GET OUTPUT BUFFER
         STM   R2,R3,D4(R11)            PASS INDEX AND DISPLACEMENT
         MVC   D0(D5,R11),LITRCD        RECORD HEADER
         LH    R0,LATTR                 LENGTH ATTRIBUTE
         BCTR  R0,D0                    MINUS ONE
         STC   R0,D2(,R11)              TO RECORD
         MVC   D3(D1,R11),SYMCOUNT+D1   SYMBOL COUNT
         AIF   ('&DIAG' EQ 'NO').DUMP00
.DUMP00  B     EPILOGUE                 CLEANUP
LITRFULL SET   STBLOFLO,ON              INDICATE SYMBOL TABLE FULL
         BAL   R9,EPILOG                CLEANUP
         LH    R10,JOUTFILE             OUTPUT FILE ADDRESS
         LR    R11,R4                   OUTPUT RECORD POINTER
         JPUTM FILE=(R10),ADDR=(R11)    WRITE RECORD
         B     GETNEXT                  GET NEXT
         SPACE
ENDING   NC    LATA8(D16),LATA8         LITERAL POOL EMPTY
         BZ    LTORG2                   X
         LH    R10,FSTCSECT             ASCENDSION NUMBER
         LTR   R10,R10                  SEE IF ONE
         BZ    ENDING0                  CAN'T DO MUCH FOR THIS GUY
         SPACE
*NOTE-   THE FIRST CONTROL SECTION, IF ANY, IS RESUMED AT ITS HIGHEST *
*   ADDRESS WHEN END OF FILE IS DETECTED IN PASS 1 ASSIGNMENT MODE    *
*   AND THE LITERAL POOL IS NOT EMPTY.                                *
         GOTO  GETESD                   RESUMPTION
         LR    R6,R10                   RESUME SECTION
         AIF   ('&TESTRAN' NE 'YES').ENDING2
         BAL   R9,ESDPUNCH              OUTPUT TESTRAN ITEM
.ENDING2 ANOP
ENDING0  LH    R10,JOUTFILE             GET OUTPUT FILE ADDRESS
         JPUTM FILE=(R10),ADDR=LOCRCD   RESUMPTION RECORD
         LM    R2,R3,ELCTR              CURRENT AND HIGHEST SAVED
         CLR   R2,R3                    SEE WHICH IS GREATER
         BNH   GRRRRRRR                 R3 IS
         LR    R3,R2                    YOU'RE THE GREATEST
GRRRRRRR ST    R3,ELCTR                 SAVE
         MVC   D6(D6,R11),EESDI         PASS LOCATION COUNTER TO LINO
         SPACE
LTORG    BAL   R9,ALIGN1                ALIGN TO DOUBLEWORD BOUNDARY
         DC    H'-8,7'                  ALIGNMENT PARAMETERS
         GOIF  JTEOFII,EQUAL=LTORG2     SKIP IF FORCED LTORG
         ST    R3,RLCTR                 ADDRESS
         BAL   R9,XREF                  RECORD
         AIF   ('&TESTRAN' NE 'YES').LTORG
         BAL   R9,MISPUNCH              OUTPUT TESTRAN ITEM
.LTORG   ANOP
LTORG2   SR    R2,R2                    CLEAR REGISTER
         NC    LATA8(D16),LATA8         SEE IF CLEAN POOL
         BE    ENDING1                  SKIP IF NOT DIRTY POOL
         L     R10,LATADD               GET POINTER TO LITERAL TABLE
         LH    R14,EESDI                GET ESDID
         LR    R15,R3                   GET LOCATION COUNTER VALUE
         LM    R0,R3,D4(R10)            GET LITERAL TABLE
         AR    R0,R15                   ADDRESS OF 4-CHAIN
         AR    R1,R0                    ADDRESS OF 2-CHAIN
         AR    R2,R1                    ADDRESS OF 1-CHAIN
         AR    R3,R2                    ADDRESS OF END-OF-LITERAL-POOL
         AIF   ('&DIAG' EQ 'NO').DUMP02
.DUMP02  STM   R14,R2,D0(10)            LITERAL ADJUSTMENT TABLE
         ST    R3,ELCTR                 SAVE LOCATION COUNTER
LCSAVE   MVC   LOCTRSAV,EESDI           SAVE LOCATION COUNTER AND ESDID
         SET   LITEND,ON                TO INFORM LTDUMP       @OX09723
         LM    R2,R3,=F'-8,4'           INDEX
LTORG3   L     R5,LATA2(R2)             PASS ONE END OF A CHAIN
         BAL   R9,LTDUMP                DUMP OUT CHAIN
         BXLE  R2,R3,LTORG3             ONE CHAIN AT A TIME
         SET   LITEND,OFF                                      @OX09723
LCRESTOR MVC   EESDI(D6),LOCTRSAV       RESTORE ESDID AND VALUE
         L     R10,LATADD               RECLAIM ADDRESS
         LA    R2,D20                   LENGTH OF ONE LITERAL TABLE
         AR    R10,R2                   POINT TO NEXT TABLE
         LA    R11,D20(,R10)            POINT TO FRESH LITERAL POOL
         STM   R10,R11,LATADD           HERE WE GO AGAIN
         XC    LATA8(D16),LATA8         CLEAN OUT LITERAL POOL
         XC    D0(D20,R10),D0(R10)      CLEAR LITERAL TABLE
ENDING1  LH    R10,JOUTFILE             GET OUTPUT FILE ADDRESS
         LA    R11,D8                   RECORD LENGTH
         JPUTL FILE=(R10),BUFREQ=(R11)  GET BUFFER
         MVC   D0(D6,R11),EOFRCD        RECORD HEADER
         MVI   D4(R11),JTLTEND          RECORD TYPE
         STH   R2,D6(,R11)              PASS INCREMENT TO PASS II
         GOIF  JTEOFII,NOTEQ=EPILOGUE   SKIP IF NOT FORCED LTORG
         L     R14,LATADD               POINT TO THE END OF TABLES
         LA    R2,ENDOFCOM              POINT TO THE BEGINNING
         SR    R14,R2                   GET THE LENGTH
         LA    R3,LATA8                 POINT TO NEW ADDRESS OF TABLE
         LA    R4,LATA8(R14)            THE END OF NEW TABLE
         STM   R3,R4,LATADD             BEGINNING OF BOTH TABLES
         BNP   ENDOFILE                 DON'T MOVE IF NO LITERALS
ENDING2  BCTR  R14,0                    GET MOVE LENGTH
         EX    R14,LITMVC2              MOVE LITERAL ADJUSTMENT TABLE
         SRDL  R14,D8                   EXECUTED AMOUNT TO REGISTER 15
         SRL   R15,D24                  AMOUNT MOVED
         LA    R3,D1(R3,R15)            POINT TO NEXT SEGMENT
         LA    R2,D1(R2,R15)            POINT TO NEXT SEGMENT
         SLA   R14,D8                   AMOUNT REMAINING NOT MOVED
         BZ    ENDOFILE                 GO IF TASK COMPLETED
         B     ENDING2                  REPEAT IF NOT
         SPACE
LTDUMP   BALR  R14,R7                   SAVE REGISTERS
LTDUMP1  LTR   R4,R5                    SEE IF AT END-OF-CHAIN
         BZ    EXIT                     FINIS IF SO
         SR    R3,R3                    BUMP PAST LOC CNTR     @OX10361
         IC    R3,D9(,R4)               COMPUTE LENGTH TO-     @OX10361
         AR    R5,R3                    LITERAL TEXT IN REC    @OX10361
INDSECT  EQU   BIT0                     LIT DEF IN DSECT       @OX10361
         SR    R3,R3                    ZERO REGISTER
         GOIF  MODE2,ON=LTDUMP2         SKIP IF CHAINING MODE
         SR    R2,R2                    CLEAR REGISTER
         IC    R2,D10(,R5)              GET LITERAL SOURCE LENGTH
         LA    R2,D1(,R2)               LENGTH
         LA    R3,D13(,R2)              LENGTH
         LH    R10,JOUTFILE             GET OUTPUT FILE ADDRESS
         JPUTL FILE=(R10),BUFREQ=(R3)   GET OUTPUT BUFFER
         STH   R3,D0(,R11)              RECORD LENGTH
         MVC   D2(D6,R11),LOCRCD+D2     RECORD HEADER
         EX    R2,LITMVC1               MOVE IN LITERAL SOURCE
         LR    R3,R11                   SAVE POINTER
         MVI   TYPECALL,LTCALL+LTORGSCN PASS PARAMETERS
         CR    R4,R5                    SEE IF LOCATION COUNTER
         BE    LTDUMP3                  NO
         MVC   D6(D6,R11),D10(R4)       PASS LOCATION COUNTER
         B     LTDUMP3                  SKIP
LTDUMP2  MVI   TYPECALL,LTCALL+LTORGSCN+NOESD     PASS PARAMETERS
LTDUMP3  MVC   EESDI(D6),D10(R4)        LOCATION COUNTER
         TM    D8(R4),INDSECT           TEST IF REF IN DSECT   @OX10361
         BZ    LTDUMP4                  NO                     @OX07274
         MVI   TYPECALL,LTCALL+LTORGSCN+NOESD PASS PARAM       @OX07274
LTDUMP4  LA    R5,D11(,R5)              TEXT POINTER           @OX07274
         AIF   ('&DIAG' EQ 'NO').DUMP04
.DUMP04  GOTO  DCSCAN                   SCAN LITERAL SOURCE ONCE MORE
         MVI   TYPECALL,D0              CLEAR PARAMETER
         SR    R0,R0                    ZERO ZERO
         STH   R0,SYMCOUNT              RESET SYMBOL COUNT
         GOIF  (STBLOFLO,LITEND),NOTALL=LTDUMP5 USE LIT POOL   @OX09723
         LA    R5,D20(R4)               ADD 20 FOR X4S         @OX09723
         ST    R5,SYMDIMEN+D4           NEW POINTER            @OX09723
LTDUMP5  L     R5,D0(,R4)               GET CHAIN POINTER
         LTR   R3,R3                    SEE IF LENGTH ATTRIBUTE DEFINED
         BE    LTDUMP1                  SKIP IF NOT NEEDED
         IC    R0,LATTR+D1              GET LENGTH ATTRIBUTE
         BCTR  R0,D0                    MINUS ONE
         STC   R0,D2(,R3)               TO OUTPUT RECORD
         B     LTDUMP1                  TAKE IT FROM THE TOP
         SPACE
LTORGII  L     R14,LATADD               ADJUSTMENT TABLE ADDRESS
         AH    R14,RESDI                INCREMENT
         ST    R14,LATADD               UPDATE
         B     TRANSFER                 FINIS
         SPACE
LITRII   LH    R10,RESDI                ADJUSTMENT INDEX
         LTR   R10,R10                  SEE IF VALID DEFINITION
         BZ    TRANSFER                 BAD LITERAL
         L     R14,LATADD               LITERAL ADJUSTMENT TABLE
         L     R11,D0(R10,R14)          ADJUSTMENT FACTOR, POOL ADDRESS
         A     R11,RLCTR                LITERAL'S DISPLACEMENT IN CHAIN
         ST    R11,RLCTR                ADJUSTED LITERAL ADDRESS
         LH    R10,D2(,R14)             ESDID OF LITERAL POOL
         STH   R10,RESDI                ADJUSTED LITERAL ESDID
         AIF   ('&DIAG' EQ 'NO').DUMP06
.DUMP06  SPACE
ADJUST   LH    R10,RESDI                ESDID
         L     R11,RLCTR                OFFSET
         LM    R14,R1,ADJINDEX          ADJUSTMENT PARAMETERS
ADJUST2  BXLE  R14,R15,TRANSFER         STEP INDEX
         CH    R10,D0(R1,R14)           SEE IF ADJUSTMENT ENTRY
         BNE   ADJUST2                  GO AGAIN IF NOT
         LH    R10,D2(R1,R14)           GET ADJUSTED ESDID
         STH   R10,RESDI                PASS IN RECORD
         A     R11,D4(R1,R14)           ADD ADJUSTMENT FACTOR
         ST    R11,RLCTR                PASS IN RECORD
         SPACE
TRANSFER LH    R10,JOUTFILE             ADDRESS OF OUTPUT FILE
         LR    R11,R4                   OUTPUT RECORD ADDRESS
         JPUTM FILE=(R10),ADDR=(R11)    OUTPUT RECORD
         B     EPILOGUE                 CHECK SYMBOL TABLE OVERFLOW
         SPACE
ALIGN1   TM    JPARM2,JALGN             TEST ALIGN OPTION
         BZ    D4(,R9)                  RETURN TO MAINLINE IF OFF
ALIGN    LH    R0,D0(,R9)               GET ALIGN MASK
         AH    R3,D2(,R9)               EXCESS FOR ALIGNMENT
         NR    R3,R0                    ROUND TO SPECIFIC BOUNDARY
         AIF   ('&TESTRAN' NE 'YES').ALIGN
         LR    R0,R3                    GET NEW LOCATION COUNTER
         S     R0,ELCTR                 GET NUMBER OF BYTES SKIPPED
         MVC   ADDRESS,ELCTR+D1         ADDRESS
         ST    R3,ELCTR                 UPDATE CURRENT LOCATION COUNTER
         LA    R9,D4(,R9)               PASS RETURN ADDRESS
         BER   R9                       NO BYTES SKIPPED
         SET   TSPACE                   ORGINIZATION BYTE
         STC   R0,NAME                  LENGTH, NUMBER OF BYTES SKIPPED
         LA    R10,D5                   LENGTH OF SPACE RECORD
         B     SYMPUNCH                 PUT OUTPUT ONTO 'SYM' CARD
         AGO   .ALIGN1
.ALIGN   ST    R3,ELCTR                 UPDATE CURRENT LOCATION COUNTER
         B     D4(,R9)                  RETURN TO MAINLINE
.ALIGN1  SPACE
XREF     LA    R1,D1                    ASSUME LENGTH ATTRIBUTE IS ONE
XREF1    GOIF  RFIELDN,OFF=(R9)         BUG OUT IF NOT NAMED
         STH   R1,RLNGQ                 PASS LENGTH ATTRIBUTE
         BALR  R14,R7                   PUSH REGISTERS
         GOIF  PRIORDEF,ON=WRITE3       CHECK IF PREVIOUSLY DEFINED
         LR    R10,R4                   PASS RECORD POINTER
         GOTO  ENTER                    ENTER IN SYMBOL TABLE
         BE    WRITE3                   ENTERED SUCCESSFULLY
         SET   PRIORDEF,ON              INDICATE SYMBOL ALREADY DEFINED
         B     WRITE3                   SNEAK IN THE BACK DOOR
         AIF   ('&TESTRAN' NE 'YES').WRITE
XREF3    BAL   R9,MISPUNCH              OUTPUT TESTRAN ITEM
.WRITE   SPACE
WRITE    LA    R9,EPILOGUE              DEFINE EXIT
WRITE1   GOIF  RFIELDN,OFF=(R9)         GIVE UP IF NOT NAMED
WRITE2   BALR  R14,R7                   PUSH REGISTERS
WRITE3   LA    R2,D24                   CROSS-REFERENCE RECORD LENGTH
         GOIF  RFIELDN,ON=RECL22        TEST IF NAME IS PRESENT
         LA    R2,D12                   RECORD LENGTH WITHOUT NAME
RECL22   LH    R10,JOUTFILE
         LR    R11,R2
         JPUTL FILE=(R10),BUFREQ=(R11)
         SH    R2,=AL2(D3)              GET MOVE LENGTH
         EX    R2,MOVEREC               MOVE RECORD TO OUTPUT FILE
         STH   R2,D0(,R11)
         MVI   JTIOP1-JTRLI(R11),JTADJII
         B     EXIT                     RETURN
MOVEREC  MVC   D2(,R11),D2(R4)          MOVE RECORD TO OUTPUT FILE
         SPACE
EPILOGUE BAL   R9,EPILOG                CLEANUP ROUTINE
         B     GETNEXT                  CONTINUE
EPILOG   BALR  R14,R7                   SAVE REGISTERS
         GOIF  STBLOFLO,OFF=GET         IS SYMBOL TABLE FULL
         GOIF  MODE1,ON=GET
         GOIF  MODE2,ON=GET             CHECK IF 1S MODE
         SET   MODE2,ON                 CHANGE MODE
         LM    R2,R3,=F'-8,4'           LOAD UP WITH INDEX
         EX    R0,LCSAVE                SAVE LOCATION COUNTER
EPILOOP  L     R5,LATA2(R2)             GET ONE END OF CHAIN
         BAL   R9,LTDUMP                DUMP OUT THE SYMBOLS
         BXLE  R2,R3,EPILOOP            DO IT TO ALL FOUR CHAINS
         EX    R0,LCRESTOR              RESTORE LOCATION COUNTER
         LH    R10,JOUTFILE             GET OUTPUT FILE ADDRESS
         JPUTM FILE=(R10),ADDR=EOFRCD   PUT OUT AN END-OF-FILE RECORD
GET      GOIF  INOTE,OFF=EXIT
         SET   INOTE,OFF                RESET CONDITION
         LH    R10,JINFILE              GET INPUT FILE ADDRESS
         JPOINT  FILE=(R10),ADDR=INOTEVAL,NEXT=GET
         B     EXIT                     FINIS
         SPACE
MAKESD   GOTO  MAKESD                   GO TO MAKE ESD
         B     GETNEXT
         SPACE
ENDOFILE LH    R10,JOUTFILE             GET OUTPUT FILE ADDRESS
         LA    R11,EOFRCD               POINT TO END-OF-FILE
         JPUTM FILE=(R10),ADDR=(R11)    WRITE ONE LAST RECORD
BUGOUT   LH    R10,JOUTFILE             GET FILE ADDRESS
         JPOINT  FILE=(R10),NEXT=START  POINT TO BEGINNING OF FILE
         LH    R10,JINFILE              GET ADDRESS OF CURRENT INPUT
         MVC   JINFILE,JOUTFILE         OLD OUTPUT FILE BECOMES INPUT
         STH   R10,JOUTFILE             OLD INPUT FILE BECOMES OUTPUT
         JPOINT  FILE=(R10),NEXT=START  POINT TO BEGINNING OF OUTPUT
         AIF   ('&DIAG' EQ 'NO').DUMP08
.DUMP08  SET   (MODE1,MODE2),FLIP       CHANGY, CHANGY
         GOIF  (MODE1,MODE2),MIX=GETNEXT,ALL=MAKESD
         LR    R10,R7                   POINT TO COMMON
         JFRECORE  ADDR=(R10)           FREE IT UP
         B     III                      PHASE EXIT
         AIF   ('&TESTRAN' EQ 'NO').TEST80
         EJECT
*TITLE-  ESDPUNCH                                                     *
*                                                                     *
*FUNCTION/OPERATION-                                                  *
*        FORMAT TESTRAN ITEMS FOR ROUTINE 'SYMPUNCH'.                 *
*                                                                     *
*INPUT-  REGISTER R6 POINTS TO AN ESD CONTROL SECTION ENTRY.          *
*                                                                     *
*OUTPUT- TESTRAN ITEMS IN STORAGE FOR ROUTINE 'SYMPUNCH'.             *
*                                                                     *
         SPACE
MISPUNCH SET   TMIS                     ORGANIZATION BYTE
MOPPUNCH GOIF  (RFIELDN,PRIORDEF)       TEST
         BNMR  R9                       RETURN
ANYPUNCH LA    R10,D4                   LENGTH OF ITEM ASSUMED
         MVC   ADDRESS,RLCTR+D1         ADDRESS
         GOIF  RFIELDN,OFF=SYMPUNCH     FINISHED IF NO NAME
         MVC   NAME,RNAME               MOVE NAME
         IC    R10,RFLDI                GET NAME LENGTH BITS
         N     R10,=F'7'                KEEP LENGTH BITS ONLY
         LA    R10,D5(,R10)             LENGTH OF ITEM CONFIRMED
         B     STORELNG                 CONTINUE
ESDPUNCH CLC   XSSAV,EESDI              SEE IF ACTUAL
         BER   R9                       YEAH
         MVC   XSSAV,EESDI              SAVE
         LA    R10,D4                   LENGTH
         MVC   ORGBYTE,ETYPE            ORGINIZATION BYTE
         TR    ORGBYTE,=AL1(TCSECT,0,0,0,TCSECT,TCOM,0,0,TDSECT)
         XC    ADDRESS,ADDRESS          ADDRESS
         CLI   ENAME,JA                 SEE IF NAMED
         BL    SYMPUNCH                 NAMELESS
         MVC   NAME,ENAME               MOVE IN NAME
         LA    R10,EITEM+D13            POINT TO LAST CHARACTER
LOOPLOOP BCTR  R10,0                    LOOK AT NEXT CHARACTER
         CLI   ENAME-EITEM-D5(R10),JBLANK    SEE IF PADDED
         BE    LOOPLOOP                 LOOP ON FALSIES
         SR    R10,R6                   FIND THE LENGTH OF THE NAME
STORELNG LA    R1,BIT4-D5(,R10)         RIG MASK
         EX    R1,SOKITUMI              INDICATE NAME PRESENT
         TR    NAME,JTRTABLE            TRANSLATE NAME
         SPACE
SYMPUNCH STM   R9,R1,TERMS              SAVE REGISTERS
         GOTO  SYMPUNCH                 GO TO OUTPUT ROUTINE
         LM    R9,R1,TERMS              RESTORE REGOSTERS
         BR    R9                       RETURN
         SPACE
SOKITUMI XI    ORGBYTE,D0               EXECUTED INSTRUCTION
.TEST80  SPACE
         DS    0F
CSTPARM  DC    AL1(ESDNRSW+CSECTSW+DSECTSW+XENTRY,ETYPEPC,ETYPESD,0)
DSTPARM  DC    AL1(ESDNRSW+DSCOMSW+DSECTSW+XDUMMY,ETYPEDS,ETYPEDS,CSW)
COMPARM  DC    AL1(ESDNRSW+DSCOMSW+CSECTSW,ETYPECM,ETYPECM,CSW)
DXDPARM  DC    AL1(ESDNRSW+DSCOMSW+DSECTSW,ETYPEXD,ETYPEXD,DSW)
EOFRCD   DC    H'8',AL1(JPSOP,0,JTEOFII,0)   END-OF-FILE RECORD
LOCRCD   DC    HL2'12',AL1(JPSOP,0,JTADJII,0),HL2'0'   LITERAL DC
LITRCD   DC    HL2'12',AL1(JPSOP,0,JTLITII,0)     LITERAL RECORD HEADER
INDEX    DC    AL1(4,16,12,16,8,16,12,16)    LITERAL HASH INDEX
TMINST   TM    D0(R15),D0               EXECUTED INSTRUCTION
LITCLC   CLC   D10(D0,R3),CHAR1         EXECUTED INSTRUCTION
LITMVC   MVC   D10(D0,R12),CHAR1        EXECUTED INSTRUCTION
LITMVC1  MVC   D12(D0,R11),D10(R5)      EXECUTED INSTRUCTION
LITMVC2  MVC   D0(D0,R3),D0(R2)         EXECUTED INSTRUCTION
         SPACE
RADIX    DC    A(IA,IS,IIS,IIA)         MODES
IA       EQU   *-2*JTPREP               PASS 1 ASSIGNMENT MODE
         ORG   IA+2*JTPREP              TABLE INDEX
         DC    Y(IA-REPRO)              ROUTINE VECTOR
         ORG   IA+2*JTPPCH              TABLE INDEX
         DC    Y(IA-PUNCH)              ROUTINE VECTOR
         ORG   IA+2*JTINPC              TABLE INDEX
         DC    Y(IA-INPC)               ROUTINE VECTOR
         ORG   IA+2*JTPMOP              TABLE INDEX
         DC    Y(IA-MACHOP)             ROUTINE VECTOR
         ORG   IA+2*JTEND               TABLE INDEX
         DC    Y(IA-GETNEXT)            ROUTINE VECTOR
         ORG   IA+2*JTDXD               TABLE INDEX
         DC    Y(IA-DXD)                ROUTINE VECTOR
         ORG   IA+2*JTEQU               TABLE INDEX
         DC    Y(IA-EQU)                ROUTINE VECTOR
         ORG   IA+2*JTORG               TABLE INDEX
         DC    Y(IA-ORG)                ROUTINE VECTOR
         ORG   IA+2*JTCNOP              TABLE INDEX
         DC    Y(IA-CNOP)               ROUTINE VECTOR
         ORG   IA+2*JTCCW               TABLE INDEX
         DC    Y(IA-CCW)                ROUTINE VECTOR
         ORG   IA+2*JTDC                TABLE INDEX
         DC    Y(IA-DC)                 ROUTINE VECTOR
         ORG   IA+2*JTDS                TABLE INDEX
         DC    Y(IA-DS)                 ROUTINE VECTOR
         ORG   IA+2*JTSTART             TABLE INDEX
         DC    Y(IA-START)              ROUTINE VECTOR
         ORG   IA+2*JTCSECT             TABLE INDEX
         DC    Y(IA-CSECT)              ROUTINE VECTOR
         ORG   IA+2*JTDSECT             TABLE INDEX
         DC    Y(IA-DSECT)              ROUTINE VECTOR
         ORG   IA+2*JTCOM               TABLE INDEX
         DC    Y(IA-COM)                ROUTINE VECTOR
         ORG   IA+2*JTENTRY             TABLE INDEX
         DC    Y(IA-ENTRY)              ROUTINE VECTOR
         ORG   IA+2*JTEXTRN             TABLE INDEX
         DC    Y(IA-EXTRN)              ROUTINE VECTOR
         ORG   IA+2*JTWXTRN             TABLE INDEX
         DC    Y(IA-WXTRN)              ROUTINE VECTOR
         ORG   IA+2*JTCXD               TABLE INDEX
         DC    Y(IA-CXD)                ROUTINE VECTOR
         ORG   IA+2*JTLTORG             TABLE INDEX
         DC    Y(IA-LTORG)              ROUTINE VECTOR
         ORG   IA+2*JTLITR              TABLE INDEX
         DC    Y(IA-LITERAL)            ROUTINE VECTOR
         ORG   IA+2*JTSYMBL             TABLE INDEX
         DC    Y(IA-SYMBL)              ROUTINE VECTOR
         ORG   IA+2*JTEOFII             TABLE INDEX
         DC    Y(IA-ENDING)             ROUTINE VECTOR
         ORG   IA+2*JTADJII             TABLE INDEX
         DC    Y(IA-TRANSFER)           ROUTINE VECTOR
         ORG   IA+2*JTPASS              TABLE INDEX
         DC    Y(IA-TRANSFER)           ROUTINE VECTOR
         ORG   ,                        END-OF-TABLE
IS       EQU   *-2*JTPMOP               PASS 1 SUBSTITUTION MODE
         ORG   IS+2*JTPMOP              TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTEND               TABLE INDEX
         DC    Y(IS-TRANSFER)           ROUTINE VECTOR
         ORG   IS+2*JTDXD               TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTEQU               TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTORG               TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTCNOP              TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTCCW               TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTDC                TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTDS                TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTSTART             TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTCSECT             TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTDSECT             TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTCOM               TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTENTRY             TABLE INDEX
         DC    Y(IS-ENTRY)              ROUTINE VECTOR
         ORG   IS+2*JTEXTRN             TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTWXTRN             TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTCXD               TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTLTORG             TABLE INDEX
         DC    Y(IS-SEARCH)             ROUTINE VECTOR
         ORG   IS+2*JTLITR              TABLE INDEX
         DC    Y(IS-TRANSFER)           ROUTINE VECTOR
         ORG   IS+2*JTSYMBL             TABLE INDEX
         DC    Y(IS-SYMBL)              ROUTINE VECTOR
         ORG   IS+2*JTEOFII             TABLE INDEX
         DC    Y(IS-ENDOFILE)           ROUTINE VECTOR
         ORG   IS+2*JTADJII             TABLE INDEX
         DC    Y(IS-TRANSFER)           ROUTINE VECTOR
         ORG   IS+2*JTPASS              TABLE INDEX
         DC    Y(IS-TRANSFER)           ROUTINE VECTOR
         ORG   ,                        END-OF-TABLE
IIS      EQU   *-2*JTSYMBL              PASS 2 SUBSTITUTION MODE
         ORG   IIS+2*JTSYMBL            TABLE INDEX
         DC    Y(IIS-SYMBOL)            ROUTINE VECTOR
         ORG   IIS+2*JTEOFII            TABLE INDEX
         DC    Y(IIS-EOFIIS)            ROUTINE VECTOR
         ORG   IIS+2*JTLITII            TABLE INDEX
         DC    Y(IIS-TRANSFER)          ROUTINE VECTOR
         ORG   IIS+2*JTLTEND            TABLE INDEX
         DC    Y(IIS-TRANSFER)          ROUTINE VECTOR
         ORG   IIS+2*JTADJII            TABLE INDEX
         DC    Y(IIS-TRANSFER)          ROUTINE VECTOR
         ORG   IIS+2*JTPASS             TABLE INDEX
         DC    Y(IIS-TRANSFER)          ROUTINE VECTOR
         ORG   IIS+2*JTSYMII            TABLE INDEX
         DC    Y(IIS-REHASH)            ROUTINE VECTOR
         ORG   ,                        END-OF-TABLE
IIA      EQU   *-2*JTSYMBL              PASS 2 ADJUSTMENT MODE
         ORG   IIA+2*JTSYMBL            TABLE INDEX
         DC    Y(IIA-SYMBOL)            ROUTINE VECTOR
         ORG   IIA+2*JTEOFII            TABLE INDEX
         DC    Y(IIA-BUGOUT)            ROUTINE VECTOR
         ORG   IIA+2*JTLITII            TABLE INDEX
         DC    Y(IIA-LITRII)            ROUTINE VECTOR
         ORG   IIA+2*JTLTEND            TABLE INDEX
         DC    Y(IIA-LTORGII)           ROUTINE VECTOR
         ORG   IIA+2*JTADJII            TABLE INDEX
         DC    Y(IIA-ADJUST)            ROUTINE VECTOR
         ORG   IIA+2*JTPASS             TABLE INDEX
         DC    Y(IIA-TRANSFER)          ROUTINE VECTOR
         ORG   ,                        END-OF-TABLE
         SPACE
         MEND
./ ADD NAME=XSTBL
         MACRO
&ID      XSTBL &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1
         GBLC  &COMPNM                  COMPONENT NAME
         LCLC  &NM                      MODULE NAME
         JHEAD 'SYMBOL TABLE SUBROUTINES',                             ,
               PHASEID=&ID,LEVEL=&LEVEL
&NM      SETC  '&COMPNM&ID'
*TITLE-  SYMBOL TABLE ROUTINES                                        *
*                                                                     *
*FUNCTION/OPERATIONS-                                                 *
*        THESE ROUTINES MAINTAIN THE SYMBOL TABLE IN THE ASSEMBLER    *
*   SYMBOL RESOLUTION PHASE.  THE FORMAT OF THE SYMBOL TABLE AND      *
*   SYMBOL TABLE ENTRIES ARE DESCRIBED IN THE PROLOGUE OF THIS        *
*   ASSEMBLY.  THE 'STBLOFLO' BIT OF 'SWTCH1' IS SET TO '1' WHEN NO   *
*   MORE SPACE IS AVAILABLE FOR NEW ENTRIES.   ENTRIES TO THE SYMBOL  *
*   TABLE ARE HANDELED BY ROUTINE 'ENTER'.  ROUTINE 'FIND' LOOKS UP   *
*   AN EXISTING ENTRY IN THE SYMBOL TABLE.  ROUTINE 'SUBSET' IS       *
*   CALLED AT THE END OF SUBSTITUTION MODE TO SUBSET THE SYMBOL       *
*   TABLE.                                                            *
*                                                                     *
*ENTRY POINT-                                                         *
         ENTRY &NM.01                                                 *
*                                                                     *
*INPUT-                                                               *
*        REGISTERS-      R10 IS AN ADDRESS OF THE ARGUEMENT RECORD.   *
*                                                                     *
*OUTPUT-                                                              *
*        REGISTERS-      R14 IS THE POINTER TO THE SYMBOL TABLE ENTRY.*
*                                                                     *
*        PARAMETERS-                                                  *
*             STBLOFLO-  A SWITCH IN STORAGE, WHEN SET TO ONE,        *
*                        INDICATES THAT THE SYMBOL TABLE IS FULL      *
*                                                                     *
*EXTERNAL ROUTINES-                                                   *
*        NONE                                                         *
*                                                                     *
*EXITS, NORMAL-                                                       *
*        RETURN TO THE CALLER                                         *
*                                                                     *
*EXITS, ERROR-                                                        *
*        RETURN TO THE CALLER                                         *
*                                                                     *
*TABLES/WORK AREAS-                                                   *
*        HASHTBL-  CONTAINS THE ADDRESS OF A HASH TABLE OF CONTIGUOUS *
*   FULLWORDS INITIALIZED TO ZEROS.                                   *
*        SYMDIMEN- 4 CONTIGUOUS FULLWORDS CONTAINING THE ADDRESS OF   *
*   THE LATEST ENTRY, THE LENGTH OF AN ENTRY IN COMPLEMENT FORM, AND  *
*   THE ADDRESS AVAILABLE FOR THE LAST ENTRY, RESPECTIVELY.           *
*                                                                     *
*ATTRIBUTES-                                                          *
*        REFRESHABLE                                                  *
*                                                                     *
*NOTES-                                                               *
*                                                                     *
         EJECT
         COPY  JCOMMON
         EJECT
         COPY  ICOMMON
         EJECT
&NM.00   CSECT
* VS1 REL 2.6 CHANGES
*C644000                                                        OX00106
         JMODID
&NM.01   CONTENTS
         USING &NM.01,R8                BASE REGISTER
         EJECT
ENTER    BALR  R14,R7                   SAVE REGISTERS IN STACK
         LR    R8,R12                   SET UP BASE REGISTER
         MVC   XFLGA(D20),XFLGA-XWORK(R10)   SAVE PARAMETERS
         BALR  R9,R12                   LOOKUP IN SYMBOL TABLE
         BE    ENTER9                   ALREADY IN SYMBOL TABLE
         LM    R2,R5,SYMDIMEN           GET SYMBOL TABLE POINTERS
         BXH   R3,R4,ENTER1             POINT TO NEXT AVAILABLE SPACE
         SET   STBLOFLO,ON              SYMBOL TABLE FULL SIGN
ENTER1   TM    XFLGB,ESDNRSW            SEE IF ESD ITEM
         BZ    ENTER5                   NO, JUST A COMMON ENTRY
         LR    R5,R3                    COMPARAND REGISTER
         BXLE  R2,R4,ENTER5             SPACE ABOVE THE CROWD
         STM   R2,R3,SYMDIMEN           SAVE NEW POINTERS
         MVC   D0(D20,R3),D0(R2)        ROLL OUT
         CR    R14,R2                   SEE IF SAME ONE AS LAST
         BNE   ENTER2                   NOPE
         LR    R11,R2                   PASS POINTER
         B     ENTER4                   SKIP
ENTER2   CR    R11,R2                   SEE IF THIS ONE POINTS TO IT
         BE    ENTER3                   IT SURE DOES
         LR    R3,R11                   PASS POINTER
ENTER3   LR    R4,R14                   SAVE THIS POINTER
         LR    R10,R2                   AND THIS
         AH    R10,=H'-8'               FAKE THIS ONE
         BALR  R9,R12                   LOOKUP THIS ONE IN SYMBOL TABLE
         ST    R4,D0(,R2)               CHAIN POINTER
         MVC   D1(D3,R3),SYMDIMEN+D1    CHAIN THEM TOGETHER THE NEW WAY
ENTER4   MVC   D1(D3,R11),SYMDIMEN+D5   CONNECT THIS TO THE CHAIN
         LR    R14,R2                   MAKE NEW ALSO CURRENT
         B     ENTER6                   SKIP
ENTER5   STM   R2,R3,SYMDIMEN           SAVE NEW POINTERS
         MVC   D1(D3,R11),SYMDIMEN+D5   CHAIN POINTER
         ST    R14,D0(,R3)              CHAIN POINTER
         LR    R14,R3                   CURRENT ENTRY POINTER
ENTER6   SR    R10,R10                  DEFINE EXIT
ENTER7   MVC   SNAME(D10),XNAME         NAME AND LENGTH ATTRIBUTE
ENTER8   MVC   SESDI(D6),XESDI          ESDID AND VALUE
         MVC   SFLGS,XFLGB              FLAGS
         LTR   R10,R10                  SEE IF ALL DONE
         BZ    EXIT                     FINIS
         TM    XFLGB,ESDNRSW            SEE IF VALID ENTRY
         BO    ENTRY88                  NOT VALID ENTRY
         TM    XESDI,CSW+DSW+ESW        SEE IF INVALID ENTRY    OX00106
         BNZ   ENTRY88                  NO GOOD ENTRY
         LH    R0,XESDI                 SEE IF ABSOLUTE
         LTR   R0,R0                    SEE IF ABSOLUTE
         BE    EXIT                     ILLEGAL ENTRY IF ABSOLUTE
         SET   XENTRY,ON                INDICATE VALID ENTRY
         LR    R5,R14                   SAVE POINTER
         GOTO  GETESD                   GET ESD ENTRY
         MVI   ETYPE-EITEM(R10),ETYPELD      NEW TYPE
         MVC   EESDI-EITEM(D6,R10),XESDI     ESDID AND VALUE
         MVC   ENAME-EITEM(D8,R10),XNAME     NAME
         LR    R14,R5                   RESTORE POINTER
ENTRY88  SR    R10,R10                  SET CONDITION CODE
         B     EXIT                     AND RETURN
ENTER9   GOIF  ENTRYSW,ON=ENTER10       SEE IF ENTRY ITEM
         TM    *,BIT0                   INDICATE PREVIOUSLY DEFINED
         B     EXIT                     RETURN
ENTER10  LH    R10,SLNGQ                GET ESD ASCENDSION NUMBER
         B     ENTER7                   SET LENGTH ATTRIBUTE
         SPACE
         DROP  R8                       CHANGE BASE
         USING &NM.01,R12               BASE REGISTER
FIND     LM    R14,R15,XNAME-XWORK(R10) GET NAME
         MR    R14,R14                  HASH
         XR    R14,R15                  FOLD
         SRL   R14,D3                   X
         N     R14,=F'252,-4'           MASK
         LA    R14,HASHTBL(R14)         POINT TO BEGINNING OF CHAIN
FIND2    LR    R11,R14                  CLIMB
         L     R14,SCHPT-SCHPT(,R11)    FIND NEXT ENTRY
         LA    R14,SCHPT                ZERO FLAG BYTE
         LTR   R14,R14                  SEE IF END-OF-CHAIN
         BZ    FIND3                    END-OF-CHAIN, NOT FOUND
         CLC   SNAME,XNAME-XWORK(R10)   SEE IF FOUND
         BL    FIND2                    ENTRY NOT REACHED
         BCR   D8,R9                    RETURN FOUND
FIND3    TM    *,BIT0                   SET NOT FOUND CONDITION
         BCR   D1,R9                    RETURN NOT FOUND
         SPACE
SUBSET   BZR   R9                       EXIT IF SUBSETTED THIS ROUND
         SET   STBLOFLO,OFF             INDICATE SUBSETTED
         L     R0,SYMDIMEN              GET
         LM    R10,R11,=F'252,-4'       HASH TABLE INDEX
SUBSET1  LA    R15,HASHTBL(R10)         PASS ONE END OF THE CHAIN
         BAL   R1,SUBSET3               SUBSET ONE CHAIN AT A TIME
         BXH   R10,R11,SUBSET1          JUGGLE INDEX
         ST    R0,SYMDIMEN+D4           NEWLY RECLAIMED AREA POINTER
         BR    R9                       RETURN
SUBSET2  MVC   D1(D3,R15),D1(R14)       YOU'RE A LOSER
SUBSET3  L     R14,D0(,R15)             GET NEXT ENTRY POINTER
         LA    R14,D0(,R14)             ISOLATE ADDRESS PORTION
         LTR   R14,R14                  SEE IF AT END-OF-CHAIN
         BCR   D8,R1                    RETURN IF AT END
         CR    R14,R0                   IS THIS WORTHY
         BL    SUBSET2                  BAD, ON THE WRONG SIDE OF TRACK
         LR    R15,R14                  TUCK ON THE CHAIN
         B     SUBSET3                  CLIMB
         MEND
./ ADD NAME=YREGS
         MACRO
         YREGS
         GBLA  &REGS
&REGS    SETA  1
         SPACE 1
R0       EQU   0
R1       EQU   1
R2       EQU   2
R3       EQU   3
R4       EQU   4
R5       EQU   5
R6       EQU   6
R7       EQU   7
R8       EQU   8
R9       EQU   9
R10      EQU   10
R11      EQU   11
R12      EQU   12
R13      EQU   13
R14      EQU   14
R15      EQU   15
         SPACE 1
         MEND
@@
//*
